From c758005037ec2e1cbb96cb37c98302cf6360042d Mon Sep 17 00:00:00 2001 From: mankala sharathchandra <152910893+sharath4444@users.noreply.github.com> Date: Sat, 15 Jun 2024 10:48:39 +0530 Subject: [PATCH 1/4] salary_predict --- .../ml-app-predict_salary-main/README.md | 3 + .../SalaryPrediction.ipynb | 1393 +++++++++++++++++ .../ml-app-predict_salary-main/app.py | 11 + .../explore_page.py | 91 ++ .../predict_page.py | 59 + 5 files changed, 1557 insertions(+) create mode 100644 ml-app-predict_salary-main/ml-app-predict_salary-main/README.md create mode 100644 ml-app-predict_salary-main/ml-app-predict_salary-main/SalaryPrediction.ipynb create mode 100644 ml-app-predict_salary-main/ml-app-predict_salary-main/app.py create mode 100644 ml-app-predict_salary-main/ml-app-predict_salary-main/explore_page.py create mode 100644 ml-app-predict_salary-main/ml-app-predict_salary-main/predict_page.py diff --git a/ml-app-predict_salary-main/ml-app-predict_salary-main/README.md b/ml-app-predict_salary-main/ml-app-predict_salary-main/README.md new file mode 100644 index 000000000..c6c7ee272 --- /dev/null +++ b/ml-app-predict_salary-main/ml-app-predict_salary-main/README.md @@ -0,0 +1,3 @@ +# Build A Salary Prediction Web App With Streamlit + +Build a Machine Learning web application from scratch in Python with Streamlit. We use real world data to build a machine learning model. In the first part of the video you learn how we analyze the data and build our model, and in the second part we build the web app using streamlit. diff --git a/ml-app-predict_salary-main/ml-app-predict_salary-main/SalaryPrediction.ipynb b/ml-app-predict_salary-main/ml-app-predict_salary-main/SalaryPrediction.ipynb new file mode 100644 index 000000000..6f766b73b --- /dev/null +++ b/ml-app-predict_salary-main/ml-app-predict_salary-main/SalaryPrediction.ipynb @@ -0,0 +1,1393 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 55, + "id": "8b11fd46", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "\n", + "df = pd.read_csv(\"survey_results_public.csv\")" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "id": "0a94c801", + "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", + "
RespondentMainBranchHobbyistAgeAge1stCodeCompFreqCompTotalConvertedCompCountryCurrencyDesc...SurveyEaseSurveyLengthTransUndergradMajorWebframeDesireNextYearWebframeWorkedWithWelcomeChangeWorkWeekHrsYearsCodeYearsCodePro
01I am a developer by professionYesNaN13MonthlyNaNNaNGermanyEuropean Euro...Neither easy nor difficultAppropriate in lengthNoComputer science, computer engineering, or sof...ASP.NET CoreASP.NET;ASP.NET CoreJust as welcome now as I felt last year50.03627
12I am a developer by professionNoNaN19NaNNaNNaNUnited KingdomPound sterling...NaNNaNNaNComputer science, computer engineering, or sof...NaNNaNSomewhat more welcome now than last yearNaN74
23I code primarily as a hobbyYesNaN15NaNNaNNaNRussian FederationNaN...Neither easy nor difficultAppropriate in lengthNaNNaNNaNNaNSomewhat more welcome now than last yearNaN4NaN
34I am a developer by professionYes25.018NaNNaNNaNAlbaniaAlbanian lek...NaNNaNNoComputer science, computer engineering, or sof...NaNNaNSomewhat less welcome now than last year40.074
45I used to be a developer by profession, but no...Yes31.016NaNNaNNaNUnited StatesNaN...EasyToo shortNoComputer science, computer engineering, or sof...Django;Ruby on RailsRuby on RailsJust as welcome now as I felt last yearNaN158
\n", + "

5 rows × 61 columns

\n", + "
" + ], + "text/plain": [ + " Respondent MainBranch Hobbyist \\\n", + "0 1 I am a developer by profession Yes \n", + "1 2 I am a developer by profession No \n", + "2 3 I code primarily as a hobby Yes \n", + "3 4 I am a developer by profession Yes \n", + "4 5 I used to be a developer by profession, but no... Yes \n", + "\n", + " Age Age1stCode CompFreq CompTotal ConvertedComp Country \\\n", + "0 NaN 13 Monthly NaN NaN Germany \n", + "1 NaN 19 NaN NaN NaN United Kingdom \n", + "2 NaN 15 NaN NaN NaN Russian Federation \n", + "3 25.0 18 NaN NaN NaN Albania \n", + "4 31.0 16 NaN NaN NaN United States \n", + "\n", + " CurrencyDesc ... SurveyEase SurveyLength \\\n", + "0 European Euro ... Neither easy nor difficult Appropriate in length \n", + "1 Pound sterling ... NaN NaN \n", + "2 NaN ... Neither easy nor difficult Appropriate in length \n", + "3 Albanian lek ... NaN NaN \n", + "4 NaN ... Easy Too short \n", + "\n", + " Trans UndergradMajor \\\n", + "0 No Computer science, computer engineering, or sof... \n", + "1 NaN Computer science, computer engineering, or sof... \n", + "2 NaN NaN \n", + "3 No Computer science, computer engineering, or sof... \n", + "4 No Computer science, computer engineering, or sof... \n", + "\n", + " WebframeDesireNextYear WebframeWorkedWith \\\n", + "0 ASP.NET Core ASP.NET;ASP.NET Core \n", + "1 NaN NaN \n", + "2 NaN NaN \n", + "3 NaN NaN \n", + "4 Django;Ruby on Rails Ruby on Rails \n", + "\n", + " WelcomeChange WorkWeekHrs YearsCode YearsCodePro \n", + "0 Just as welcome now as I felt last year 50.0 36 27 \n", + "1 Somewhat more welcome now than last year NaN 7 4 \n", + "2 Somewhat more welcome now than last year NaN 4 NaN \n", + "3 Somewhat less welcome now than last year 40.0 7 4 \n", + "4 Just as welcome now as I felt last year NaN 15 8 \n", + "\n", + "[5 rows x 61 columns]" + ] + }, + "execution_count": 56, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "id": "2e754e05", + "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", + "
CountryEdLevelYearsCodeProEmploymentSalary
0GermanyMaster’s degree (M.A., M.S., M.Eng., MBA, etc.)27Independent contractor, freelancer, or self-em...NaN
1United KingdomBachelor’s degree (B.A., B.S., B.Eng., etc.)4Employed full-timeNaN
2Russian FederationNaNNaNNaNNaN
3AlbaniaMaster’s degree (M.A., M.S., M.Eng., MBA, etc.)4NaNNaN
4United StatesBachelor’s degree (B.A., B.S., B.Eng., etc.)8Employed full-timeNaN
\n", + "
" + ], + "text/plain": [ + " Country EdLevel \\\n", + "0 Germany Master’s degree (M.A., M.S., M.Eng., MBA, etc.) \n", + "1 United Kingdom Bachelor’s degree (B.A., B.S., B.Eng., etc.) \n", + "2 Russian Federation NaN \n", + "3 Albania Master’s degree (M.A., M.S., M.Eng., MBA, etc.) \n", + "4 United States Bachelor’s degree (B.A., B.S., B.Eng., etc.) \n", + "\n", + " YearsCodePro Employment Salary \n", + "0 27 Independent contractor, freelancer, or self-em... NaN \n", + "1 4 Employed full-time NaN \n", + "2 NaN NaN NaN \n", + "3 4 NaN NaN \n", + "4 8 Employed full-time NaN " + ] + }, + "execution_count": 57, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df = df[[\"Country\", \"EdLevel\", \"YearsCodePro\", \"Employment\", \"ConvertedComp\"]]\n", + "df = df.rename({\"ConvertedComp\": \"Salary\"}, axis=1)\n", + "df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "id": "c7653efa", + "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", + "
CountryEdLevelYearsCodeProEmploymentSalary
7United StatesBachelor’s degree (B.A., B.S., B.Eng., etc.)13Employed full-time116000.0
9United KingdomMaster’s degree (M.A., M.S., M.Eng., MBA, etc.)4Employed full-time32315.0
10United KingdomBachelor’s degree (B.A., B.S., B.Eng., etc.)2Employed full-time40070.0
11SpainSome college/university study without earning ...7Employed full-time14268.0
12NetherlandsSecondary school (e.g. American high school, G...20Employed full-time38916.0
\n", + "
" + ], + "text/plain": [ + " Country EdLevel \\\n", + "7 United States Bachelor’s degree (B.A., B.S., B.Eng., etc.) \n", + "9 United Kingdom Master’s degree (M.A., M.S., M.Eng., MBA, etc.) \n", + "10 United Kingdom Bachelor’s degree (B.A., B.S., B.Eng., etc.) \n", + "11 Spain Some college/university study without earning ... \n", + "12 Netherlands Secondary school (e.g. American high school, G... \n", + "\n", + " YearsCodePro Employment Salary \n", + "7 13 Employed full-time 116000.0 \n", + "9 4 Employed full-time 32315.0 \n", + "10 2 Employed full-time 40070.0 \n", + "11 7 Employed full-time 14268.0 \n", + "12 20 Employed full-time 38916.0 " + ] + }, + "execution_count": 58, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df = df[df[\"Salary\"].notnull()]\n", + "df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "id": "1c0a8af1", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Int64Index: 34756 entries, 7 to 64154\n", + "Data columns (total 5 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 Country 34756 non-null object \n", + " 1 EdLevel 34188 non-null object \n", + " 2 YearsCodePro 34621 non-null object \n", + " 3 Employment 34717 non-null object \n", + " 4 Salary 34756 non-null float64\n", + "dtypes: float64(1), object(4)\n", + "memory usage: 1.6+ MB\n" + ] + } + ], + "source": [ + "df.info()" + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "id": "c1c2b6f7", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Country 0\n", + "EdLevel 0\n", + "YearsCodePro 0\n", + "Employment 0\n", + "Salary 0\n", + "dtype: int64" + ] + }, + "execution_count": 60, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df = df.dropna()\n", + "df.isnull().sum()" + ] + }, + { + "cell_type": "code", + "execution_count": 61, + "id": "b876948a", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Int64Index: 30019 entries, 7 to 64154\n", + "Data columns (total 4 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 Country 30019 non-null object \n", + " 1 EdLevel 30019 non-null object \n", + " 2 YearsCodePro 30019 non-null object \n", + " 3 Salary 30019 non-null float64\n", + "dtypes: float64(1), object(3)\n", + "memory usage: 1.1+ MB\n" + ] + } + ], + "source": [ + "df = df[df[\"Employment\"] == \"Employed full-time\"]\n", + "df = df.drop(\"Employment\", axis=1)\n", + "df.info()" + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "id": "c551ab05", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "United States 7569\n", + "India 2425\n", + "United Kingdom 2287\n", + "Germany 1903\n", + "Canada 1178\n", + " ... \n", + "San Marino 1\n", + "Saint Vincent and the Grenadines 1\n", + "Namibia 1\n", + "Benin 1\n", + "Monaco 1\n", + "Name: Country, Length: 154, dtype: int64" + ] + }, + "execution_count": 62, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df['Country'].value_counts()" + ] + }, + { + "cell_type": "code", + "execution_count": 63, + "id": "cb8e3d2e", + "metadata": {}, + "outputs": [], + "source": [ + "def shorten_categories(categories, cutoff):\n", + " categorical_map = {}\n", + " for i in range(len(categories)):\n", + " if categories.values[i] >= cutoff:\n", + " categorical_map[categories.index[i]] = categories.index[i]\n", + " else:\n", + " categorical_map[categories.index[i]] = 'Other'\n", + " return categorical_map" + ] + }, + { + "cell_type": "code", + "execution_count": 64, + "id": "cc09a5fe", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Other 8549\n", + "United States 7569\n", + "India 2425\n", + "United Kingdom 2287\n", + "Germany 1903\n", + "Canada 1178\n", + "Brazil 991\n", + "France 972\n", + "Spain 670\n", + "Australia 659\n", + "Netherlands 654\n", + "Poland 566\n", + "Italy 560\n", + "Russian Federation 522\n", + "Sweden 514\n", + "Name: Country, dtype: int64" + ] + }, + "execution_count": 64, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "country_map = shorten_categories(df.Country.value_counts(), 400)\n", + "df['Country'] = df['Country'].map(country_map)\n", + "df.Country.value_counts()" + ] + }, + { + "cell_type": "code", + "execution_count": 65, + "id": "03a7116f", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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LLu8RxRL3L+JqL899thjKCgoQHZ2NgoKCvDYY49Ztm4W7ETnqYyMDLz55psRy958801kZGTYlIio/3D/JqL+tmXLFuzYsQPbtm3Djh07sGXLFsvWzT7sROepwsJC5Obmhvr4BgIB5ObmsssADQjcv4moP02dOhUbN27EkCFDQndora+vx9SpUy1ZPwt2ovNUcOBdQUEBamtrkZGRgaKiIg7IowGB+zcR9af77rsPN998M+rr6wEA9fX1cLvduO+++yxZP7vEEJ3HfD5fxOU9FjM0kHD/JqL+smLFCowePRpVVVWorKxEVVUVRo8ejRUrVliyfhbsRERERERR1NXV4ec//3nEzFM///nPUVdXZ8n6WbATEREREfUiEAhE3IwtEAhYtm4W7EREREREUaSkpODhhx/GkSNHAABHjhzBww8/jJSUFEvWz0GnRERERES9UFUcOHAAAELPVmELOxERERFRFEePHj2n5f2NLexERERERL1wu92orKxEW1sb3G43Zs+ejba2NkvWzRZ2IiIiIqJeJCUlRX0dS2xhJyIiIiLqRX19PbKzs9HS0oL4+HjLWtcBtrATEREREUXlcrnQ3t4esay9vR0ulzWlNAt2IiIiIqIoxo4dCwBoaWmJeA4ujzUW7ERENCD5/f6Im5z4/X67IxGRoYJ3NA22qAefrbrTKfuwExHRgOP3+1FYWIiysrLQjA65ubkAAJ/PZ3M6IjJRQkICxo4di71792L8+PH49NNP0dzcbMm62cJOREQDTlFREcrKyuD1ehEXFwev14uysjIUFRXZHY2IDNXW1oaCggJs3rwZBQUFlg46ZQs7ERENOLW1tairq0NWVhZqa2uRkZGBlStXora21u5oRGSo+Ph43H333aHXiYmJlhXtLNiJiGjAGTt2LFasWIHy8vJQl5iFCxdaNkCMiAaexsZGpKen41/+5V/wf/7P/8GePXssWzcLdiIiGpBEJOprIqJztWfPHtx8882Wr7dPBbuIuFXVuo46REREX8Cnn36KZ555BgUFBaEuMatWrcKtt95qdzQiMtiIESNw7Nix0LNV+jrodLeIPCoiU2KahoiIqB9kZGQgLS0NO3bswLZt27Bjxw6kpaUhIyPD7mhEZKikpCQcP34cAHD8+HEkJSVZtu6+FuxfAfA+gJ+JyG9FZJmIDI1hLiIios+tsLAQubm5CAQC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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = plt.subplots(1,1, figsize=(12, 7))\n", + "df.boxplot('Salary', 'Country', ax=ax)\n", + "plt.suptitle('Salary (US$) v Country')\n", + "plt.title('')\n", + "plt.ylabel('Salary')\n", + "plt.xticks(rotation=90)\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 66, + "id": "29b6b862", + "metadata": {}, + "outputs": [], + "source": [ + "df = df[df[\"Salary\"] <= 250000]\n", + "df = df[df[\"Salary\"] >= 10000]\n", + "df = df[df['Country'] != 'Other']" + ] + }, + { + "cell_type": "code", + "execution_count": 67, + "id": "ca55b532", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = plt.subplots(1,1, figsize=(12, 7))\n", + "df.boxplot('Salary', 'Country', ax=ax)\n", + "plt.suptitle('Salary (US$) v Country')\n", + "plt.title('')\n", + "plt.ylabel('Salary')\n", + "plt.xticks(rotation=90)\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 68, + "id": "82cf4507", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array(['13', '4', '2', '7', '20', '1', '3', '10', '12', '29', '6', '28',\n", + " '8', '23', '15', '25', '9', '11', 'Less than 1 year', '5', '21',\n", + " '16', '18', '14', '32', '19', '22', '38', '30', '26', '27', '17',\n", + " '24', '34', '35', '33', '36', '40', '39', 'More than 50 years',\n", + " '31', '37', '41', '45', '42', '44', '43', '50', '49'], dtype=object)" + ] + }, + "execution_count": 68, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df[\"YearsCodePro\"].unique()" + ] + }, + { + "cell_type": "code", + "execution_count": 69, + "id": "4f035a52", + "metadata": {}, + "outputs": [], + "source": [ + "def clean_experience(x):\n", + " if x == 'More than 50 years':\n", + " return 50\n", + " if x == 'Less than 1 year':\n", + " return 0.5\n", + " return float(x)\n", + "\n", + "df['YearsCodePro'] = df['YearsCodePro'].apply(clean_experience)" + ] + }, + { + "cell_type": "code", + "execution_count": 70, + "id": "c40b1ed5", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array(['Bachelor’s degree (B.A., B.S., B.Eng., etc.)',\n", + " 'Master’s degree (M.A., M.S., M.Eng., MBA, etc.)',\n", + " 'Some college/university study without earning a degree',\n", + " 'Secondary school (e.g. American high school, German Realschule or Gymnasium, etc.)',\n", + " 'Associate degree (A.A., A.S., etc.)',\n", + " 'Professional degree (JD, MD, etc.)',\n", + " 'Other doctoral degree (Ph.D., Ed.D., etc.)',\n", + " 'I never completed any formal education',\n", + " 'Primary/elementary school'], dtype=object)" + ] + }, + "execution_count": 70, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df[\"EdLevel\"].unique()" + ] + }, + { + "cell_type": "code", + "execution_count": 71, + "id": "a24a1436", + "metadata": {}, + "outputs": [], + "source": [ + "def clean_education(x):\n", + " if 'Bachelor’s degree' in x:\n", + " return 'Bachelor’s degree'\n", + " if 'Master’s degree' in x:\n", + " return 'Master’s degree'\n", + " if 'Professional degree' in x or 'Other doctoral' in x:\n", + " return 'Post grad'\n", + " return 'Less than a Bachelors'\n", + "\n", + "df['EdLevel'] = df['EdLevel'].apply(clean_education)" + ] + }, + { + "cell_type": "code", + "execution_count": 72, + "id": "9ce8792f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array(['Bachelor’s degree', 'Master’s degree', 'Less than a Bachelors',\n", + " 'Post grad'], dtype=object)" + ] + }, + "execution_count": 72, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df[\"EdLevel\"].unique()" + ] + }, + { + "cell_type": "code", + "execution_count": 73, + "id": "896e4b84", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([0, 2, 1, 3])" + ] + }, + "execution_count": 73, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from sklearn.preprocessing import LabelEncoder\n", + "le_education = LabelEncoder()\n", + "df['EdLevel'] = le_education.fit_transform(df['EdLevel'])\n", + "df[\"EdLevel\"].unique()\n", + "#le.classes_" + ] + }, + { + "cell_type": "code", + "execution_count": 74, + "id": "3ee6c3b5", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([13, 12, 10, 7, 4, 2, 6, 1, 3, 5, 11, 8, 0, 9])" + ] + }, + "execution_count": 74, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "le_country = LabelEncoder()\n", + "df['Country'] = le_country.fit_transform(df['Country'])\n", + "df[\"Country\"].unique()" + ] + }, + { + "cell_type": "code", + "execution_count": 75, + "id": "69a25de0", + "metadata": {}, + "outputs": [], + "source": [ + "X = df.drop(\"Salary\", axis=1)\n", + "y = df[\"Salary\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "id": "8e1e3581", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "LinearRegression()" + ] + }, + "execution_count": 39, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from sklearn.linear_model import LinearRegression\n", + "linear_reg = LinearRegression()\n", + "linear_reg.fit(X, y.values)" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "id": "b8e531e2", + "metadata": {}, + "outputs": [], + "source": [ + "y_pred = linear_reg.predict(X)" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "id": "5eb0fd40", + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.metrics import mean_squared_error, mean_absolute_error\n", + "import numpy as np\n", + "error = np.sqrt(mean_squared_error(y, y_pred))" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "id": "8de6b173", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "39274.75368318509" + ] + }, + "execution_count": 42, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "error" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "id": "2e633868", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "DecisionTreeRegressor(random_state=0)" + ] + }, + "execution_count": 43, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from sklearn.tree import DecisionTreeRegressor\n", + "dec_tree_reg = DecisionTreeRegressor(random_state=0)\n", + "dec_tree_reg.fit(X, y.values)" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "id": "9953f8bc", + "metadata": {}, + "outputs": [], + "source": [ + "y_pred = dec_tree_reg.predict(X)" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "id": "806839af", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "$29,414.94\n" + ] + } + ], + "source": [ + "error = np.sqrt(mean_squared_error(y, y_pred))\n", + "print(\"${:,.02f}\".format(error))" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "id": "62d12912", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "RandomForestRegressor(random_state=0)" + ] + }, + "execution_count": 46, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from sklearn.ensemble import RandomForestRegressor\n", + "random_forest_reg = RandomForestRegressor(random_state=0)\n", + "random_forest_reg.fit(X, y.values)" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "id": "9a58e86e", + "metadata": {}, + "outputs": [], + "source": [ + "y_pred = random_forest_reg.predict(X)" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "id": "b9c9f8a4", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "$29,487.31\n" + ] + } + ], + "source": [ + "error = np.sqrt(mean_squared_error(y, y_pred))\n", + "print(\"${:,.02f}\".format(error))" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "id": "36db7870", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "GridSearchCV(estimator=DecisionTreeRegressor(random_state=0),\n", + " param_grid={'max_depth': [None, 2, 4, 6, 8, 10, 12]},\n", + " scoring='neg_mean_squared_error')" + ] + }, + "execution_count": 49, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from sklearn.model_selection import GridSearchCV\n", + "\n", + "max_depth = [None, 2,4,6,8,10,12]\n", + "parameters = {\"max_depth\": max_depth}\n", + "\n", + "regressor = DecisionTreeRegressor(random_state=0)\n", + "gs = GridSearchCV(regressor, parameters, scoring='neg_mean_squared_error')\n", + "gs.fit(X, y.values)" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "id": "11fddae1", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "$30,428.51\n" + ] + } + ], + "source": [ + "regressor = gs.best_estimator_\n", + "\n", + "regressor.fit(X, y.values)\n", + "y_pred = regressor.predict(X)\n", + "error = np.sqrt(mean_squared_error(y, y_pred))\n", + "print(\"${:,.02f}\".format(error))" + ] + }, + { + "cell_type": "code", + "execution_count": 76, + "id": "d1c7b5ac", + "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", + "
CountryEdLevelYearsCodePro
713013.0
91224.0
101202.0
111017.0
127120.0
............
6411313115.0
641161306.0
641221314.0
6412713312.0
641291324.0
\n", + "

18491 rows × 3 columns

\n", + "
" + ], + "text/plain": [ + " Country EdLevel YearsCodePro\n", + "7 13 0 13.0\n", + "9 12 2 4.0\n", + "10 12 0 2.0\n", + "11 10 1 7.0\n", + "12 7 1 20.0\n", + "... ... ... ...\n", + "64113 13 1 15.0\n", + "64116 13 0 6.0\n", + "64122 13 1 4.0\n", + "64127 13 3 12.0\n", + "64129 13 2 4.0\n", + "\n", + "[18491 rows x 3 columns]" + ] + }, + "execution_count": 76, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "X" + ] + }, + { + "cell_type": "code", + "execution_count": 77, + "id": "c947101a", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([['United States', 'Master’s degree', '15']], dtype='= cutoff: + categorical_map[categories.index[i]] = categories.index[i] + else: + categorical_map[categories.index[i]] = 'Other' + return categorical_map + + +def clean_experience(x): + if x == 'More than 50 years': + return 50 + if x == 'Less than 1 year': + return 0.5 + return float(x) + + +def clean_education(x): + if 'Bachelor’s degree' in x: + return 'Bachelor’s degree' + if 'Master’s degree' in x: + return 'Master’s degree' + if 'Professional degree' in x or 'Other doctoral' in x: + return 'Post grad' + return 'Less than a Bachelors' + + +@st.cache +def load_data(): + df = pd.read_csv("survey_results_public.csv") + df = df[["Country", "EdLevel", "YearsCodePro", "Employment", "ConvertedComp"]] + df = df[df["ConvertedComp"].notnull()] + df = df.dropna() + df = df[df["Employment"] == "Employed full-time"] + df = df.drop("Employment", axis=1) + + country_map = shorten_categories(df.Country.value_counts(), 400) + df["Country"] = df["Country"].map(country_map) + df = df[df["ConvertedComp"] <= 250000] + df = df[df["ConvertedComp"] >= 10000] + df = df[df["Country"] != "Other"] + + df["YearsCodePro"] = df["YearsCodePro"].apply(clean_experience) + df["EdLevel"] = df["EdLevel"].apply(clean_education) + df = df.rename({"ConvertedComp": "Salary"}, axis=1) + return df + +df = load_data() + +def show_explore_page(): + st.title("Explore Software Engineer Salaries") + + st.write( + """ + ### Stack Overflow Developer Survey 2020 + """ + ) + + data = df["Country"].value_counts() + + fig1, ax1 = plt.subplots() + ax1.pie(data, labels=data.index, autopct="%1.1f%%", shadow=True, startangle=90) + ax1.axis("equal") # Equal aspect ratio ensures that pie is drawn as a circle. + + st.write("""#### Number of Data from different countries""") + + st.pyplot(fig1) + + st.write( + """ + #### Mean Salary Based On Country + """ + ) + + data = df.groupby(["Country"])["Salary"].mean().sort_values(ascending=True) + st.bar_chart(data) + + st.write( + """ + #### Mean Salary Based On Experience + """ + ) + + data = df.groupby(["YearsCodePro"])["Salary"].mean().sort_values(ascending=True) + st.line_chart(data) + diff --git a/ml-app-predict_salary-main/ml-app-predict_salary-main/predict_page.py b/ml-app-predict_salary-main/ml-app-predict_salary-main/predict_page.py new file mode 100644 index 000000000..a4014a6c9 --- /dev/null +++ b/ml-app-predict_salary-main/ml-app-predict_salary-main/predict_page.py @@ -0,0 +1,59 @@ +import streamlit as st +import pickle +import numpy as np + + +def load_model(): + with open('saved_steps.pkl', 'rb') as file: + data = pickle.load(file) + return data + +data = load_model() + +regressor = data["model"] +le_country = data["le_country"] +le_education = data["le_education"] + +def show_predict_page(): + st.title("Software Developer Salary Prediction") + + st.write("""### We need some information to predict the salary""") + + countries = ( + "United States", + "India", + "United Kingdom", + "Germany", + "Canada", + "Brazil", + "France", + "Spain", + "Australia", + "Netherlands", + "Poland", + "Italy", + "Russian Federation", + "Sweden", + ) + + education = ( + "Less than a Bachelors", + "Bachelor’s degree", + "Master’s degree", + "Post grad", + ) + + country = st.selectbox("Country", countries) + education = st.selectbox("Education Level", education) + + expericence = st.slider("Years of Experience", 0, 50, 3) + + ok = st.button("Calculate Salary") + if ok: + X = np.array([[country, education, expericence ]]) + X[:, 0] = le_country.transform(X[:,0]) + X[:, 1] = le_education.transform(X[:,1]) + X = X.astype(float) + + salary = regressor.predict(X) + st.subheader(f"The estimated salary is ${salary[0]:.2f}") From 92f29a72e799b55d664c3c48b56a7687deea66a3 Mon Sep 17 00:00:00 2001 From: mankala sharathchandra <152910893+sharath4444@users.noreply.github.com> Date: Fri, 18 Oct 2024 23:19:48 +0530 Subject: [PATCH 2/4] Create ... --- online-payment-fraud-detection/... | 1 + 1 file changed, 1 insertion(+) create mode 100644 online-payment-fraud-detection/... diff --git a/online-payment-fraud-detection/... b/online-payment-fraud-detection/... new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/online-payment-fraud-detection/... @@ -0,0 +1 @@ + From 425e72ce3c214abecd6525bd751c1b318136755f Mon Sep 17 00:00:00 2001 From: mankala sharathchandra <152910893+sharath4444@users.noreply.github.com> Date: Fri, 18 Oct 2024 23:21:58 +0530 Subject: [PATCH 3/4] Add files via upload --- online-payment-fraud-detection/app.py | 45 + online-payment-fraud-detection/demo.png.png | Bin 0 -> 57134 bytes .../fraud_detection_model.pkl | Bin 0 -> 243158 bytes online-payment-fraud-detection/hello.ipynb | 1467 +++++++++++++++++ online-payment-fraud-detection/hello.py | 84 + 5 files changed, 1596 insertions(+) create mode 100644 online-payment-fraud-detection/app.py create mode 100644 online-payment-fraud-detection/demo.png.png create mode 100644 online-payment-fraud-detection/fraud_detection_model.pkl create mode 100644 online-payment-fraud-detection/hello.ipynb create mode 100644 online-payment-fraud-detection/hello.py diff --git a/online-payment-fraud-detection/app.py b/online-payment-fraud-detection/app.py new file mode 100644 index 000000000..c6b13e4ef --- /dev/null +++ b/online-payment-fraud-detection/app.py @@ -0,0 +1,45 @@ +import streamlit as st +import numpy as np +import pickle + +# Load the trained model +with open("fraud_detection_model.pkl", "rb") as file: + model = pickle.load(file) + +# Streamlit app title and description +st.title("Online Payment Fraud Detection System") +st.markdown(""" +This application predicts whether an online payment transaction is fraudulent based on transaction details. +Enter the transaction information below and click **Predict** to check for fraud. +""") + +# Input section for transaction details +st.subheader("Enter Transaction Details") +transaction_type = st.selectbox("Transaction Type", ["CASH_OUT", "PAYMENT", "CASH_IN", "TRANSFER", "DEBIT"], help="Select the type of transaction.") +amount = st.number_input("Transaction Amount", min_value=0.0, format="%.2f", help="Enter the transaction amount.") +oldbalanceOrg = st.number_input("Original Balance (Before Transaction)", min_value=0.0, format="%.2f", help="Enter the account balance before the transaction.") +newbalanceOrig = st.number_input("New Balance (After Transaction)", min_value=0.0, format="%.2f", help="Enter the account balance after the transaction.") + +# Map transaction types to numeric values +transaction_map = {"CASH_OUT": 1, "PAYMENT": 2, "CASH_IN": 3, "TRANSFER": 4, "DEBIT": 5} +transaction_type_num = transaction_map[transaction_type] + +# Predict fraud when button is clicked +if st.button("Predict"): + # Prepare the input features for prediction + input_features = np.array([[transaction_type_num, amount, oldbalanceOrg, newbalanceOrig]]) + + # Perform prediction + prediction = model.predict(input_features) + + # Display the result + if prediction[0] == "Fraud": + st.error("⚠️ This transaction is predicted as **Fraudulent**!") + else: + st.success("✅ This transaction is predicted as **Not Fraudulent**.") + +# Footer +st.markdown(""" +--- +**Note:** This prediction is based on the trained model and may not be 100% accurate. Use this information as a guide, not a decision-making tool. +""") diff --git a/online-payment-fraud-detection/demo.png.png b/online-payment-fraud-detection/demo.png.png new file mode 100644 index 0000000000000000000000000000000000000000..aeade65c716b6994ac890bba765a922afaddff2f GIT binary patch literal 57134 zcmdSBcT|(x*DlK5Znp)It%z(uU@OuE1Ox8-^URf3 zrp9_)rv*-PaBy%vxPQ-_gX0*Q{gOEOJNujI9cTpm?Uw*^y}KM0giFipi{C(ZjP7u7 zRK;^1JUY(4KIM1cE`WpMZ1dskmsa0mR}PMe<_GugScW*SFir&u1wUKcXWlSy*z{=m^gazY>x-n|kuWQ|+h6i~41@{#c4m*k3Y0E{v5MAjbmix*Y0boPVZm*7dC2 z)=mhx$rW=s`5XU_sc*)&^s?OSsu%88FNBglV1Nt*bb+khhg!%;#Rq(L;_Fhcp1)cNyYVyy(_h4<{Sa-Gmbz4m`>O=Lvofcxl82M zox}0Tnrko(+u#HCa{8+AJaWjBhqKaQ?|fZR8Z;SA+PI9|0KYIX0Kc27qHggsDGqR} zNDmj$lbZH(%Vc6uRYikGIA{;9v{AF31(n9RG_E$f)GP9Z9*5cvrI~Vaa9ljM6GajU zH-s}eL07y-X$NKUOG;{lIjADFW3!o67P(gdCA{bmV!g+N@7WN(4bpQXBe%dW>{U~@ zTVHn^^yaMSM34;tR(VSGDPCU4mC3hPA^YS>%3cvhW^%E!f#9=?7o2tk-<9Ryu)Vh= zDeawEs%2lYp$J+EazCc}K(DK+WWTDsKUE{*+fhM;oFTeS}JnY9H$hO zj$E(-_AcTCn<{F3jOd+krPtZ?um~4W%eQ;MnP){b3WFy|WofC;`f8oJS)-iv&hnl8 zyHA$!f&&A;ay-@fM$6frScDgegp>CEhFN6x?$m0P@nuSxM3F)}udRLG$e2ewq@zU# ze($3Dw$uS*MGh<{5B7m2;XSFK3z~>*)&@VM$)|gyVQZ4>pAoz0Ta3ni+ol;Q%fB@+ zHuwIhq%eU@vp4~rdzeWoZ~It4sew=~^2%qJj zH)%DeE?O+GziX48~#K5y87jvv=7RJor`E4FU-D8o`mwvDlpy0Yo>- zW~EP?8)@zS^Pu80ZwzU#9gQ^B+rGJ&f_CKA{8{-L6mGDsYDvCl6xH4#S3K1DbKWb# zYC9Owl};jfFGz7(2nKJMmTV8Eh}S)6mmkT6jM~V+vvM=%)+~+emgle!y%;tVRnCHI zCj%H?+!M1)E%xe_w$UkLcqjz9n`#v101Dhl3Akp>KVemEobH|!8^M)EBW=P9`L;DS zxAG%@5|v1EhW!0&d&@)A4~iMj@of#xMaGm$C(NUX+LpUarc((L}nAn7r! zvzu8AQoS$4_8Arvkxl*~){XgIy4xYYl#Q>}X-oJe*Frvmfue7_`lWPVQg%ZW(3e?z zO_3oUS2~SB)Xg@0Z!m8Cg>~nK7}Q?A5LZOo#CChkhM*=wr$ZTQc;vv`5OE4bm`kji zG1btkSHaPoA~r`GwY|O+YW0T{88ewW5o^F8iYxd>GS$@6VQYmGjs#%{kqD6d8)Kop z5x~+~q+==Wl}X{QH6?W|0@&@7S+?8&RL1Xh)5}Df3gX^9RT6tJird1I1>uj5Z`!4y zgDtcq$+u}h&9d%@ zowrJEcJ#NAdoe{;D~5ytn<|G%mI*6AS=zl(9p$tL-VdHlTSNF&K!ZAc7ZQ5l___lM_>m*JPq1v+2{cH9JiP8h*+)fxeZ?Fqv{a(wy>=H zBH`U~=0VhCw~$BdsyX9l*<{a7d^gIl=OG@3_-nVhh&@g)%x&-)YjP2MpBsi4OwDTX zJ)VPH3Xt!l>5MN8y$2pV&w|aUVTp5{it1;{QAJu6dbk44KrP8%=?gfnI6)4lb{sr~_x ztcB{Cwj$bb&=|4CMq*KNw8bWSNFtlQdg&Q4rH)_{9#AWQn2Z8ff8HUY8>5e$S8yq5 znXy}dul=>hm8ImeroCw>GVde8}J2zOax6C)#C0?ChJGjpp0ucOH#3(gi)r&j7 z-u)gOd3oEdcz5-c|L)ggO7V@x^2}!BS4nu8H+%g0ANE`yy_Q;V=67x~i`jfl$kpmV zpS37Y&N%hP7cIQMp-Ou$5@`YmVJ^P|^OS|LR(-c@J@oE+hT8MI%wY zu#>;Z;K2-l^8GaE@$am4k!2)KYnH!zYFmp{i9xhg7K$&7?;q6C0^e&saY}We(*qi< zW(`OClFD|UNgya_`_vrS)14w`arAPiP{wlT*w0D)-nWV&r+D>QjDF@#xaZB;KDAIgq!4Ta@TVqtlTHBoq=ug@Ut5abS_CqzekAYS(%kQ0<$#Dc6YeNY($s-5^0QDn zEtzE~Z@4YpB$FO>I531RjFmTbzqFMTYb?kO<_zd&KzWhN9Q z4a84=l56#>Yy_nZ-UCkfB1cq@1~~hlK_x}`W@hcJPEuqXGC{_z`_Q?VZZc9E|FXNU zrsej0AuMzc*e#>%F9BfM~eYKdGu-lXlq`gc62(T zFQmwMAHc%mXk^Qquh6TB&z07AS^N>K&2IAdcO=BHGH?LEgyYGLwZWZ%st!G3E`OC_Ap1(CwK7`xMz|msfDauv1@7h@N$2bo~ zF&XKtgSV>vHd;l7vRSTV0mwd))dK+VZ>;_3to{iZ3IObdMO@yR%uU@%UwgpVbb#kU za#TAL4;mlYy$h4c01LG!4$;Hd$kZ>d4p)eIvbIL+&u+T8<0n0~@VbMR%Ez<Y};F?l|NOZ%Ph+7wGjua5|#=W$;jn4I5`Y9 zuK~if?IdBk)709CQns2n&-RI6Dj4hl17sn@myu}DZ%_O3vpE)R!xKa!EZY~ z2mT4qBPZK>HJe0-@nf#+`1Mjhyg?R0R!?%~0DPw+6`e*4F zDI%27ujkI)PmI`)Laz9WpTRpYs1x=#IoFRoNVHCCpk<-l`bpcZX0h&hr}_|?K-moU!Hm--h><2^8P|yQ zm8^)DPUknGa9H0NWz_&lCK(jCX2hk1k_^=aW>7d;-klU(0cjdjB(h))z^a9j4d8|Q zteNlc0KeLLr7v>tY`#`f^K|~MA(Bn3BDRSD%JxMftmO~HcgY`RT)b-9cUFmSCihP; zXvw(TZq0-8NOgz?)a#7qWq4G35$)}Mr7#|pCBChC7no`MQEe6@5x6E4z~{OV-H7hu zucek{FfXn0+73_Rk53^jp!W?p$5D%@Gxz=%c<|&_*q(sXIu`x(BK>Fy zgguEU#!|{y$&q_+Sn4}J3+l5?8rA57e+rz9W8F8=Ja{k;X#F`5Y>;_e){SogL2cJh zL#l6yKQJ)Yzp31c0B!YgXZ4G6hdb^7_IM*0qkz6Q$fVMyav!Duj`FChpZ;ZYvLa;~6qo099G%fxTI^0r0x!tn&kt%Jcx=-8~?2K2A!Sz<T%nzn&^y-a3g#(XQZ!F9(Yfa9Zc7mokS0f_ECv^W}BzqU5}QBJOS3#>k1*Ykbuz3 zb7;v0^j|>u9el)WymSNwNb6W*#%3{4`#$YqK}Hg)-K>px*qW;Rl3+YCeO>>r&9l>s zw0d8hGFB>(;y`c2?@C~m_@^FQ9V`uPJ)b-LxwBqnO$y?>tt^GBMcXM+Yl1Z~4nw_xc zu%R7IqGRX0_#8iM7-X2`Ntx_0=atyI*P}Dp*?UpFvj+uqr2LDfX5wMkmEMm67lx7Z z6W(Ab%f2krHR_%X<8$D*`A*e?FnDRQ_~dc&(0e$e8wRh&j5Gm=rxzyoa#v;BQ)-pU zJ^K`uvDFCUK?Gr`OK~&h_w+8&i2$${@d0Q6b3@y1wLX8dG?ZooW6z1iTNRL;J5Sv0 z-Xi;FQ4AbGrE?orRe7xk3l)lD9U1MyHacTDLUn7D;e&<8BKLll2efXP-w&8Qz=!B& z*FQ6oK-zBjkMGZ~EhkTsRy(h!L33~IHYDo{MXJr&%SG6;ru%KqJ$^h?d^5k*u@N+a z%|V*fpORB6tleT()vt}V6PPfWbD0s@k3>EK6C0Sm?$$ zx*z&68&A#(K(>dV+GQ42r^MmkFCiaR?-ptDWVq7pah7^f?TcJ@_+d-0dTeIyOTd4c zz&!2O?p-!ibKdBDTy9>-c=pMBFaRNvWDvhxAabBTkJ6M;3o(^vKBQCNS|~7<1`np( z+_GS>CxvRh%7FP+4Ria$&zq=ggrzXRa0IkF*7*xwkTbwn_7iyb$erIiig=B7CzF5V zbZ|?gR|G&jCj23Rx)41$0w}_@_mz(xRXcZz5#w|jxDJLF;OQIjTg+>%OTOxPK=@)K zjOwlmzzVyE=g70Nk>vXx3B+}FsI-oP&G^FM+SyW&F@_0!v&is-YNM4FDj;t?QYchn z>sf~_Lh{V^TMg0sN!a}4yKBF^5z5F4H^$=(KO06)y@83>w3YE*z%vRKX_V@ouy$n2 zEPkjqo0-oft3nB#pKc+Br{0qEX*0h1MR>if)7rKh%_fwQ9+y%^36t)C&$iZO7Cxsl zlM%CLPCcw@Wai=g#gNbjf^M|>$`JKNlF`BFPm(XQZS}$Kdk`>Vy|rK-w!jLp7X+zo zr4F^?cN$?{x^}A_S4t9QZZhw!jW~Y7`*?n@YuA-}RBa$w$MixxZd^O^Dr{1f{91yX=4sdGZrwjRp zZZ%#kMPU44zCZ4uyp;~Bmj(=gta6;@p71ag#vJ6^O1%WCp3#X|Ey<1^IMXT}&=sUv z1FrvYA{{!1z^e0;DBitF^m$~Kb=9V!%bp4Io(UraW-Kf?`5Hz>ct%~{@%9{x0%kjW&1;gz8!88A0Dt%L-K3XTP~;)@GKp`__EBp z$7jdPrk!imRvk8ROW~|*$d6Uo2^a#z9kp?s#Yi8uVx&(y6oKFe5thW6 zYI|t+A1Kj#aMSw%?56=R-I?-u8TI$bw?^w=$~QGoVb#_t#?&MZ(cQUJGH?w(HwauF z3M;4GomgLjQ{J5gZgR>wiF={5nA?1yE$=a8nxcjKm)qb(O2A})0QabfGu)H1HMP+5 z*Q|}+cV`A&LY`cN4+qovpghBo*BNhM>lSQC3aT$$2>&}rbZ;8p3jnBMrPjP3tHO-{ ztSWQ_kA0zn+l^TUR{VZvh`U1Q5Z_j9zZY0`+472T}e@151xcMJ+9_PUT;q?{74&qusZlp`oy zf0yNRZ4L_!?Lcq#D^0AAkCzM)G;-(y@FSnTdY76g2{UKSgMj@QJD}6dP}>yW*G~nF zTL;LzfXi zjyK?+ZLh1bc@-08u_}B+mHu_%t*7#=g}8IUMmIiNta6XIEXX?0)C>#$pd@-P4NVnc z8n0o0=3@{}TCJEOg9$dhQNNET@2Q31jQd(z5iX%LAnl-nADwL0L5mVOFr7@H+FoPM z1_1DC*~1@-5IrDRN!CO&^(ruWl|kOwT0r7TPH6t&VI&){KF&=^UBnkn;%It|4Gj}7 zmlQnM!mY|FHThuu(Ov&uIn8}69KBj10fH-A)v<@_Cl;#4c6=;u^XJ=$Ok`$=ayOcJ z#G~9k=L3#hIW-$eQywg7YAZ1?AXuzJLiKT-sz&fKw6RglW@NXktgKzdK?kD7*4B;K zYg$6S7_cp;9t_6|blXUVNX;f)@ciEQw!_(=dGe7{_a@JfQs}Y(!Z9rnf^<%`*5zq6 zcl=|5;&>3zRVoJ#@(Sjw32Asr- z%WDfFqznWfCn_Htn(FBLFY3Sd;7|7T|0!C)zpVbRS2V1@>AX=odpHzz$Dx5iB}n9? zu!*s;xw~$I=IZf(+O0dD`d8T2l0sr8qUZDHr%J(hA3x63_W|Z19M=3IK8vv_X?83o z>&|-C3I;p>6HI!4$Xr!cERlKGNp`DNC6+~m|e`a+}emXG}viQu8Z3)M;Qg;t?sg?COo;43VSa$t{ zD6JS=1HyEgn?-{@jaTN}Yg`?F6#S=K%ENtm!2a6y?huZiToKknOzet}p`4`*awi0` zKn5R|I~^`WlhG_Rr#*exNm}1;Vf@;5Rfg#XBfBqJ$LhynW9~fOLEdSXCWF_4!X|ci z>ms+h0jTV}uFlSPlWVnMcZ~J*2UwI5q@=W0ZrT%eU`H+d;o}{>Qc`qNPs1y)(9`tv znKA^u26~4)DCDO_0h?KkcnZ-!Sr(N#+_Rs$Xlp+J&yz;`U-zU?R!RRkgYtaE|XvSOTCwRi_xYJ zD-9sBSh7`inshs~u-wr~i06c7whc77b2_TJR;eBt8K#l*dwK?Bc;2i~^h8&EEjR@8 z{PY`i=H`59hMn9+6jF&;pJHUP8eF5t#rs7uI|9EAebTOBd!+mM-0JVBdX$yJRa#Pl zIz}ywrO?oLCMQFlHQiyKgtufcj?s&&+U&f%GN)9=zFFi1HQ|jGNuyR_9@*{cqVt>I zB~=tZVfvAtJNr;_yvb1eS4%EyAtGgM$kt57<6h=G-+*Pr-L)0u(8C%N+#9Mo?aK-E z!E=Uozd%2(^=r&CHs+DUcEb|t?xRdfpcc1n2c90iJ$P193w2*d>UpWwPt3NJ3HAGg z?uav%c?Z#uhpJHr+!^QHw<6svU(fMDV}fHY^Jmx0Apf2FkP z(`0&ak2)h|OhkG$d^7u^rai<8T1y*Oo;qhg34acaL5Fp#(XP&e-6B6kmrdfMU5>Fm z$`5VW@3Kh}?(cZwQDhoL+|uS=?Q0d;OVNaQxm#FRtUO`8oMd{YKsy`U1>GHdX0Xhl z?rih^zRU(V_!Tj6t__rVcblZQ^(`;hv%fvujjz0KJUCGjfwJe)B&cJ8WS-8Gvrb?< zv>#Ndc%vcP+L)%5OKqHpLO`9o4lc>N6+%^yv#`u1T)}%wplmD(AA()s~g+ zWf)&WD?OdO28kroPX&hi?X769MJ&nMyx1{JFn)RUAmqDiMNb3oLe7+{tdoVeP*|0< z8(~5!0h{^yPe}DP9%6*^PflLKnT!?iLL>t7gJ9Qu!2G>^nM8j<1jJ`77eXmF1&-&I zVY|XRtR?Yf_C`5^OBBo5hq$D9W1+Q&fpHkk$C*VVzHPAaU>2-EHQU@RoyYEkSKypB zUd48?(rx~{+aj-5GXc?FB4;&ULpfYNr(jA(uVbgcVShh%aj9|HSNZ<^yQjCep~wm# zA2rXr9eC%9BB+S$)cYreTx-f0KL>5hK^-0zgkOtF<1IR2{ujoWMN^?<-7sF&?AFGz*i zU+~!1O4`;p@{}-20FZ|DUvh>)?)<$5HQ}))LQvU$u-RsLk6_=jrN4brdE+`ceXm8X zx9{N2pkZ_br4Rx!4Zf4*e>cqCxXaYvL)?TwtloO+r7ljSH1>Ro6N_rk4mw++-*w4S zuRGl7`k^1y@kcV>!27d;Cu=p{&{q<&EyKezHeWS5nT`2J4NE$05YwyfI7tFZRe>Xj zp&elxw}9>@{lP1C~YtmTrM*L!jUPV6kr+e{E~eO}7O zVSqSb^D$!ly~%>sV4V!=)o;M+%-!E)E(dX`wQ6MF;flYRXLHSdPe=ka*&d)2JPDss*F_VZ+i-{bZHuHBHxx_q7Hx}u!wrt$0z zXAQOEWv5&ZwF>H`Sb{+sL7il3uI@|wB>s({4}bs#-Go0^?X(!*32X~FD&#i>vc7%0 zH#n&3;o-3@{TaTq+)CSZ;dbcg^56$6P*R{>Dr4LFB5N_EUt|KI?w&O2p1yN2>XnhX z&-z&iUiMRTp-Q98Mv0tBOmcHND3m)M=897ffPf5zWU1DshC|<6 zMu*H?OHUK?OBe1I(bY!>8l`R2l4Ts=G4}SI(?&I_#t*ua(=_G+f1Y6*Hzh7p9}&yg zT#9L>W-C!6sYcXDT0CJO@C)?sQ9mBGNh!86zXz2{3|ofO=%KBj*%%u}`4*cM6wt_L zaW)dyizl?&k`;S1ZinjEINGf+Y3=drENXaUr23GafI`yhfOR&`6m3- zy4@o?2zfau4jT6}9g}4{Ql~p1^&EmbU)R8vA5S`t(D!Y&qkF{ ziqN*nCT^r~fpa^gI67K)(4pDT-3}FZZY(Z?*sif@<2&nf_ebvE(m<$W0eo~v@UtR+rCU}`}gQU7{*!pw6V#bUI^3i z`xPkc8+PzH@LpR&9An{}N60@<9eW1~mgCJ#$zLKU(JN~lL5Obf@BL^W7u*3l((QP> zlDN)Z{VB30+)>XY1C?CnaayuS(!}l+@m%ZG4%LZ#7m4K{?ZZ&)wNKyX_c#JuQD+1Kf2 z;t9Fsn?h=ZD8AP<%s4Uqw|)x_D-7{#{U3-HFqTJZyEJ)#ztMa&ctUG1)$(3b_33~M zgMs#XS~W>k9W~ZiGf(>u3ArinsD~J_jv0RHRFH(JGMZLeQDJfC4zp&_rE9asVQnn` z<;xOzig*umyH+0T>Uxh`%P*T)QQx)qP4kMJeZ~`C&bOX{*US~FhHUq|VJgC$_uuyx zTFe`yOeD67y0fl*#EyL*i3j1j-5Wl*@!7X7kCTeRwo+;Rqn*JSk#=j#&Jn~;RZZFS zS)DURR)RC6xEt1X%c0>_HmBYW<-_y_aP%)BqIrC*NT= zhEkr64h{Lnr!RVs3%hFnJIbilWdE0gqx;Gc!sod4=BP!EpVtmkM%dntI?2u=WB>iH z3%suLc+%q322gkB{)HkbpT;`M%&JI#`QxM=OG-tYBs@ky=MaAzdBjTToK6+J5k+3z zWvAY-v&{G&xyf5(dqnEmvfji)gX^Gf#XHy)-WAFNBcXAKMgjQ6~C#av-i*7Yq{89w;7=xZBu{oI+{%)L9$p6a&#Y96??vd{U} zF5AG2xcGi(1N0k8g!PUNixC6n_Jywp_;hR4-lv4P3zsQuhCJ_2RvOwnnsWvD;u1Gq zR3~#!p`T6so~ae2OT*?A@f389uJsWUJ(HuWzNk~-jfR=+{h8UrC45-7QsLrQAGHzbRMlY*}NKK8O$`<-3nvM4Lq{{yYowdKl|H?%_&qUG%4V`!h=f*$I0s?Rt$grD$dgNtqH%5V9n-qnB1wFzNhvA4T&gM z^l8p31H)q#W{U|A@~90xA!a4t1+6l8#@uVp`&%y&_Jw;1Rymh9)Hi^pd&|~R!Pp>( zLxEwo=hsUmDZBUP%g1w0sLU6$4(=qPqkF?cd@ zXSZ*Qu$K+)yu9SAsSg&EP=?Dft#cn5Iw@Z_72NWxtkEu~q@D5lC8%2fufLbX=%a%@ znYkHT_X-v-=*RL6Xl*+GDT2MR^!xZ{fsUL)0cHEeT6gHP^X?;{uhoOn+fJ4cqdeV= z&_nmXh{WL{l~sY2G1@2MJ-od;_gr6}syV@Z36t#U)$r-rvpb6k-&<#Mf($bu24u}Mh^Ki-~2 zIk;l+F$>J_rkXB}!SfG&xbl8}Vd3!e-tqCg=9oB-@bIxL6~iBz;Y-CZ7>w$P@-{cm z)x`Z7dTSug!}T-${rgWp<$Ir!0A#DXk1*z4u7*keo5}_}uGz0w$MTzg_+$cV^pLn< z$3fX+0+~gLzLQa2iP>d!uEk9~i`SkM90(}xJTfm|2)m#vCDuyEPp&@VXIt@kCU|GN z@nc4YYkY7}(CB624Fi>F;=n`@6grxn>egBPCbdu@1j_<6Bv~#R$&>k$XDl)CNL){m7n+cu2kp+K3AYwdS>APL|Zv(@;VmETjet^^Y_$cphz8oKbFIq9GNQYObCB z7q{|qICZ6)aF#ngE<5*vi}M03Gj-F!(|JUR!tS4)T?MJ?9`9sQS;;6d)HtN_PHggv z>8JLBVBVKe^hYHWB7^?_gb8}_F8YK z50|yHH^UZhm$ZY!5RyY>82aTBNduItz06>tOgEqR-GOhQ9Ma*gM zwWYyJn0R~V?!NDyFW6en@AV&&yCcbU@-P@ ziqCm;wLlwWL2x{9&3%o)Q`rC%kmU0(`Q_5e}@okn7{6l$$hy5F?K8Z%zR+>^^F645A zHD$g*EUu%sG`Hs6qU+&G^jV0#4U}LG!(MhCy7CchdMb0*=m9F;4I zch8+W;xaitLk-=PM!Jj~dAyA3e{)>-zkFEnXKyxEu`7g{6vxKCDl9zm5y#Gdz=>N< zlI0N~@^MoX%n1@+ulmj5@E$+WghBRQf;Lh13A--2dF6fn?uXxV_-M)GrIs&X?CnKo za=-Hj$L36%#m2>UM8zDQ8Q`eBV4)5E6>>NHtx~I#Bfl3HYbhm~;SyA-tmgq6zA}46 z3DexNPAX$BrDuN;Z}ln9;qr$Rb16;}&lH-ppvPvX zimBhgB%4~pU;yU9o&sTo(lv?1R6NoV2TAtpr5*Z%&+#t;q=AnYB31*k`}&$3!*H*n z5D;pR#q83OM_5+xK=>UzgW5q}ra~dH2!p$jWa*uZKG)+re%TE%R}wR_iX}nTUkaV< zGp7wh2K`X_+%;ZpXJwkA4=%gbE!P;=xO+9X+!`+qAF)B(_+~F#eDW*PLWRC6YW%W# zNVk)Y==DcIY*VIm|HJgUm>rv!5gB$9W4)Tr`rr*_Cj*>HUEI43cDyv`H}p~$bijW( zav3&`-D^2+UjjtXBJ8oD&;82;2XB!(x256n4Gh9fwh2$|QjK%Y^v~V=)1$Sul}4iY zjyzLQQfl^z4qq95z}Nz@x|p5UJJO(U*+lbIGQck5$&SNe-h{qhp?3n`N~qr-=8S?Uf(OBb@olJ+iZ| z+bKbYM@xz=Q?bb3#3WjzrCmYKjpj>t97bR6ILw>nR0nX8w^}8Y2aA?cPw*FI_`#9ga)lT!}{@|;T5hY-6fuCcWPOWvW01h@B%5Lf+C>Bo6Ih%aZ zfeM$6N)~>7!PX%1aK?%AivvAsg_6MP4>NZ$fSz)t#Zg|jiq^SP>0rwOEnt#)hWmoW zkj7V>+#HawjMitRyIus?ScYA zLW7Hdeb4XT4CgY)Wc&S*5hKANib*!TiLv4hfnZ4*>gdNhIeq35>hbMuguZ9b^#=O; zi-bmNNtj#S1WS~)5xe&#|AhfKsJRo%O z;OP|v*9m)L@FY%Oc|d3|UC-ghrS$xiEPtWUwK@T9@PpQdKr&Soy%rvC6(^G@6naN* zB3yf)a+eTZXRz2lI-t5>INGUPY6<%Be2{0puQ*_T+jhv)vR7)IjF24Eh@oUIA{k_= zhlO7DVZIK>!?T6URiTjh<@uX67R7hL^qdpH%d_#}omp|OUz>Y*z1Cb6Nu}rd5)~+E zkQ7M$tD?II>VcH9?0Ct3ZIXx6gRF3(lq)jgp2;m(vI?TpCg_Xwc!bTXKJ~J}p4oC2 z@KDsW-V5{Tma<#&;s$D%5T}2%}kP09MMl^19P}y;Wpz zR)Yw(x|4L8=sma{TS6}Ou-y4}-ukCZKW^g*f)t9xBwmmnnrLxp&;U3qq{`IzM0sjw zmKT6uBV6Q(rJe8Wr~cRul73v%Mq*)<_u8GDbN98LBwN>H_Pi%8SJffh?imEzcR*?| z^-tbl5U9Hm&^HUXuJXWyj@WOI8&23f^1Kr!G74gL%*EoMNH;M1j*S@VhT#rnB=mbH-e;K zo7xS&C@B<;R1b+7@V^5IDy2!`=Tu~kFuJJn4RoC6%%PUf@kc3JEN1eDLrhG)z263T zPZrkI-HeTmU4G7p3B)vg&61O}UAU%vxz5MW!Dkw4n(my-)dBjJl(N)T*z&Abp;1N2 z?D>XC*{P5I$+Bh#bNmugvZMABYr$U1vvVj#(BNKL$)XbIqp@K*&)s9c#L`bF`^@xD z6GNuL?H_5*xctzi-*rt zl&y|iRyN#jyS#WQ)#=k{gi~pwAFnFhy<)?nNabSchg?Uljy2li(?jP>-rJLB8ih?n zOs-xdqf8>r*VmsABvvn;*SvK_h1|C&*7`d%=b(5Z+^yDmGR!ftOLG$^?2-2DoY6hS zY^Uai%MEwd>_t=8}ei({cA<}MHHAO}IRtiEeAXyu1k@;rqg?_ z*oI2eJL@0pAA?&Ql@CdEjtY(csgU7BznyK@S`Nm1k%_oSx}8o|N7c}`4?K;Wkq^8- z_`eDE*oQo86EN(rH`m*i=Hv-azmFCjj9pVzWS10pXa?f%CFM#KS&vaUFp=qRs;XU^r_C1 zuRD7_+?9E&f_8MNG#qT_+7pnI8GPlwn1P^}xjDtR%soaB0?08IeO8|?Dl6}#w8B$hC0gyg?~K7b!ff`9 zN?W|bAk&tnWg?gDAwRr(A{RG@OyY~D2u9ZTx!%7+Qg?jK-S^F~%)W2_^6-b_*S^GM zoKNzk3S^gNxI|$6biwlR9_(O>M(PVebxrf zNCX5Fil?xNooKruh*5m(QFi3$uPy>YZ!8U0lotZ~QR}v!+e827LWI-2;=Bhc%+vW( z0OzVatW?7L(8-cvv+-+7KYCrZcNvXAUX;xAB5Wh^dUsEncqQ4QT#COpU7ehP}2Tm(0*X*p+b)@=>{KMpr{jILv82GOgpQoW} zix=3r63Z9bZ)sCn#9MRzd!+J4>6hBW1R>S69B9}(u797ab|N2|_n*-R{uO$41h7f; zP4>}9HhJgQl!iXiaBNQhCg9@d|!ejqLuC@=)5&z)lFZoe?Qb$k6Ui+gm zWT7FwOdA0Y>=bBGW*@^ltmShokK6Il;S@>m%bTgF?_;Dxn8d?X4vP0zlKS;N!EtD=CEqfe}r~YF)i*G{~?lNd)LsuZ4;zxU`#Cydp zah3G3>?Wx1PfujuvW1n`s)&tY-+2VdGm3E&7Eg{L)fIl-v{9MOiM`1n0j0P9Hb3d92u&?OX=x!eBh;aqQ1|2Sed0g&S<+0 zPMx@AiJVgwM5|~TH#_mFn<3et z(r6KtT#uQq2$S7EY=?KTV@JgLQs$J^#F52Irm=-h$G>@}JI_1suT)x^P z-BU)kfC|Wya;e~CX(b7ZJ#g)E+`%2IWMvP!|P)P_QlVtnRMHUoAj!n0^ zG+EkjC3O1cn=a`wDAMhSg7AB@?olk%|MEc^uC9bbBb})-$fa8>36Pk(mxp$>%Nd}( zx2I>?J(5!;^_IHNd)PV8d^;nms8g>ab$XztI3nvC|7ycf^&xx2Q8yT(G7uMM56E>{ z)O_|n%ZE$KX1R@UM$c8hnpZH4t;D;V#56hrgHgQs{U6n56-M(dEn+82Cm!C<(y603 zcW52f;s_KH%6!D7`o`1$(j{2fenx$Dt2V&F@Roqrv2FMhAzl)z1q_>a1BXzBgtSKU znXe8!1%*}k6r7(Zl?Ax4!BgbhIHPNqCj5=5e&*%qxif6F2>rMU;5ykK)wqgYIb;St z(}Etdaw?=2eXi~^Lgp|{0y(lTA zWv@`Rt}i?MNhm$wLY-+&v@@vc$4QWD^yfOInUewa#r67>T;8{tz4b5tFYC~=S&hvC zJ{Q?pMt-)nt3jZOmGz$Pi#+U_N4~qwOIm1?SNJhSJP{*AR*bSDYP%mGx!-Fk(Ggwi z*mV9wxd0KAJX=cVpi5=J>S&_tNXI`%u|0+dp(~XUg(j_{l4& z@#i1Sj&gFM2K-*u7T_g9%wXSu^!&V}OnzR;=cN=~ZD%~sYJ<(cd@59NKqYGe89b>~ zzR6Y|)*YsM0mTH8g*vRk;X&tM9jqoZRpFHSX(2(vaugCp_?!asA}j@hbA22VHE4vf2?1&Z!w9?X+;wl$O>_*} z>~xe9y6`BCAHHD`Khpdd?0-r6kO;&t!{`f3Q6Yt&E7eO0#arQJy5cf7@;=&y7h%fV zEgd~9Ywtb+K}+H?s6F@IID_j)YbmRv=7kdU%49*y*%B9Zvq|uT^i`drV!urxQVO48 z-$j`L+`e-?J>fO2>V&mN^>@FU6oF~E!^g#;YJ14XE}We>gFcco#YwxmI(jnx_VkP| zrxAJL91b1duYL1(;puv_IEJK!{^h^gz2KxOIW~WI_tfu~2MDvTwU21lsc7~pQouZ# zsQ(+k0m2r6SC^k33OF27yzGl}=gcq2yBsaqLx)TD;5i*#`?e#JbxPl-)4Sp{y0`bg ztG^EQ3aEPW%g4ESyu3P<|19$gc3rM2wNI@6zR^9{(sEDD;;?3p+Ux&(?S%I5HmsR> zJf6%voI+F9Zi;DbUOsc}7+m4!lbFMzew+20+3eptxj9=gD50@!p5ykra2#W$`D~ZXg|?2c>9klL~Pn4@z2qN(dvqNZH9GUbKn_2GiJ>6>ouyA}J#I#vCFoCS>yh7ks@ zt=@$Q#f8)vplPxKeE)1C{r-=)Rmb*m5sc7z%~w(FCWiZTo9QJ z58;27)K71A&{IxnFb{2;jwr*WLBA^Z1?v0S=y|z4VsF-=Ifj2g)-Lr-eV!V)E-m)$ zyX2Lxc9Mq4qsf#rgJm^axkQUZ zY-3t~+3KOgWkvCG_~6sg@Q9BM_a2%l zDAye3Icp-KxK z1VRtk0O=yVHwh#Vdgw)^Nv{dLOG^ky?{IhUJ7>2%?5)e8ve@3pu))}A1;MDpOUbT^g};P@||P#jdL5xzU!1KSGIW3YmFp*!MI#f z68*?z)7SjGO;RAYK3q0M(p&Z+$6@rRxV*B;UjyUwJM%&lS}!os8kw`9K~ly)N>m-+ zhsP@5*QSty3Z;%F>4ILGem_Im$42x0ZsliWfN3yYINX|A5I)MYO&iU%mkIq38QrT~D#sQ5(%+5}-8oG^Qvxk6J{#f{szmd}x z%S+S+?hXzfB)Qu7rKqotXK(8bG?2G`v0$$+HOQ%nf{vBkpwGrx$eIc6akd!ewtbB?KYT-U1Uv`p*`H%Wi0n|NfZq~$R*{O zU@Yv58b85N2Q%WVCFE-TfL)JHjvx2*;(J_fp$=x>1!=!+%Zbe?`+%_E*73ISo4lQu zIaVr2w|39;hF|fE7{WSOE4rYqeJ*b#4!R1viF2(-$}dXbu)5DP`#+n(OHyI06Tubj z&#(uWc^Z)4tCu&a)uZVp@5fvUKphV$t@YwLm1a)#(j$gKd zqR?*8>e*yH9ZlNUnQ$+RrY5*`EHCoomo{57VKWC?Eto^t6e2cM_;qrIoZAk-Lv26WfUv2_A0M)r6eDzWzqZsM;}sl zDn-lh8UJcBEo!&UrJ+f8H^lK^adVP^;xM`AZ=7HU8g{Fsy%KGR?n=RmX|xb>2V36L(DJG+1mnD0nO=N{^`#`KotF@g&X=L z20eFd4;pfSAtcIFEK(vj_Dyftc3bAFaLwD}lJbAhX*XsFZ#it|_LBx{M$@Zy?8~D+ z?C8SUK=*NF^)bR)X}zL{c)?qQs5R3XW!SH`%9km>-pU=S*O?r!=D7WEv2gJ74@*YB zUHcTPt68$1651YhztlqR4Md^%-3_|xFJO89Ci))$?M6S-V)oEKL|#d`%(+ulft(pX z^xAZdJ1Uk7X3p)6tWeMr{mE$-3SI7GvYprz5AHNVWJ_>Zt%??q0D-uJLKuKc(L+E`$S!Ye%xJA^IG!RR!hYIyR!dx{L2njNhw-JB8YJ zaDd<(!=S&G(+p}J!eCC0NR0`tu% ztDXgbI52~{S^eUHT4Rpwji7~rE8JBP_o6hSC&sgkAoM_OiGw6E0b;y(qi|_afA%ss zvzJqx#L17=mF3*rN7;Y^Xzqln;dtQjnc%sze7s3K!_BqnpyBGD)C2s@4_Wk1nFovX zIG4^q!Loo>carusAw)n#1h|V#LWJVs zMPvDC%kPmk%daIW9&iursKmqjo7vm-Gc&_>tqwQdAaVKvIL_;-%35(T_)t3KSX`a( zPA;Es6cad35c;;j(l}C&{bVo8%cs=~#r{M6TOw+-o>z;JCJehDc<_?3FKIg{1y8VS zNOH65V@KyAxNec5(xH|O-IukO>JKZdCN@~G<>gD?S}TxWk0i(jmwp8L+IyJ9mFF8| zuGC7|4_9f4V6u^9Yz3+pVO;IX38*a|W7@a098TI0e5%SyFBo52a!q@AmB2!OTx1ZY z{i^BAApwUumc$nDDkXG5Q=bH$A%kjo-nD!_g9d4p6@vmSrGl0q0d2qq(zaNlcI&31}o^Wl!mZ^ZH##mVFDx0BmOT9zm5*pI9YnwzjR zOhaR_boC)?~@S4pz2-}<~sy(?5J36T>6Dp*4I91MST!mem zhNV?1aEvN1y(Dbuj$`>Uvqe$!Lg2CS%H|V8#(amqGC!fYxoAFY-Zz;sAz+?wGPAwC zJtp}cnDqq{^-zSd8#iy}6c_W>P$T}yUorFneELIc&?7s}s&S*r4AJFV-v7|}2glRT z8YN#GIPQoJxbUJIHBh!u(XsZhXS;{eHevTHbY|%Q!DS$cAd{J))v47>E(}fZ4jTuL zepVR7wYGXOahHY~e~G*_d%MzDbETXMpyX_YwY#qvU> zLEG}mrM@~SKun(FOO=1zIvV)6o1q+-zt9f$_^msRZmu4>@wBGFHll(fC?y^(Ip}O{ zZ+Qhrr0uoX!WvRzJR|aX33Oe!P!G2n+qGLb6bpC zht`)|{|a@khorf&rH6407ERuXmR!6&I|oUYHcy_-*LU17U>umz^NBemYqi_`HJr{J z&5TJZT*2bKBl1eB9v&%|u&$~66U@n(-Cqj}a?#FQ+h{P`bpAWLdACOI9PTc`54HkY zvFYFh32^A@sz{I{ms70-&+c`yd~R(OU?@QuF3!K zQ$ff1C6}_U>1LTjol4A=N$km-1!!ZH0W@4Jzw0kVsFPnfE-!4D%H7+hT;fmjdAe)Q z)i;`*fl(X!8kd!=aKXk6dA`ub7$!Ihtk9EeR4fOnNMv5AD0EK@HOdw_nKt1VMykMe zG!9lmXHw^NyuMlTW^s~DRU5{wbdWLdrCeTcZWGbvUl1+)Q>U(ngX%vsycA`gXnm9$ zLfY5lAI|?fIuzjTc&VVe>ziw--9x8!_KG^yR=}$1bgixPr4C>*1;i}^0s`JKZ4HN8 zb6!Wqfv9u4&S1BYP z>ae=lY^UMLmoJM7U5vQ+J~20mVyuw<6)Eq`#MZKsk2>I3mG@mKxNH2OqYI!besSQ@ ze8p6WDds;4oYQp7(v_eodSICMNttE;&;ud4s%Fu$~vO9JCsh5eMuxq{HT@*9Q+H{W-Z)Ssgaz5J6oLes|? z`I(v)7v05QfGr1kv%c?kQmCRxd2H_hd7J~_!)~#GCqg1*Zi2Y+xA&3qy4h$2C8b3S zfrGULTmgV7<&M!lraVrCJXY3%m&n*S&ORqSgt7povH+EEVF;o?^L>nh*@m{Yp;QaJqO7(%IwYGOv$)|qp=-l+(GKy52$SNhf1?Y>EP4T!CWDLVb zii^_@Xf%r*A6Lp-rJJ|8aBB7qL)c_*Y69~XX^4M=f5-A-!L7O?yfpP0vUu=Nph3j5 z?H#%L=%9tBnQ;bd|K|4XIQ&Ow_cx>97d1An+{5$e9?}jQ4V4O)d=~?|nw4b2umxl_ z45aL4)FkP@inoE~SHP*f}t^r$^KP{@kBjVmj%1Dl}3FjFkh+N%CUK$jeKRj@) z->M9c)3ea^HDWgGRPXCoWC5RN%X|DnO(_TZvym?*fseaT%TY5i_UD&JmJ1;&VISTc zF$0PL`|!`nJ&jz~WLP--^gbWth2wt}2f2uP*X!NCst}ztU&{c^Rf6D;+OLTe=0=Or zux=wa0IQW-3pgiJIVGq9U!PLJX12kacsv@2?h)zSP94=-o3Y}^mx1Cmm*rA;4|5q+ zTdKF&Zz19&IXo0+#?x*J_8TGY2P!Mt<?pB%(XP~>bu~g6DGWt9 zD5TZC0(!PTNsOi5Ol zIcQr47m3#qX9UnNnMoxpU#cM%Ui!A%xemrBJLZm3&qQ|x<*c^|sQRg|C2uXK_T=lV z3S##z9bw&o^p+i6@2f7{*dg!5&p6}JE82|%7XP;fgrFH0dIR<6yWv`GQqkG zx3{i=!tr_YYKrW&=w{3PFfXT=5nW#0dC)LI5nC#szBPLZ7OTgeFN3ml!PZuCOmQ`Rpp z(DFrkqCR>mmp+@%wxBoKe6w0L?(OiJF$}T(Ljqb@YmAqg@+a-IQ6;~k{G-7)P}>kb z=Lr0afzjXGQ4&OVRO6F>?~bB{<;Gl~w=3vNz{#SaTUKIswXBy#*uk(QQuUje;@rR) z&UqwVt%SjjcPc%*v4m$rgIs_9W~(7I_7Z2b<9{JvdcI24dwo_0LUcx+D^ewb&-{z- z+mTl;+!Pd&C@3y|({k~=H*v0WuILxA6n2A#4zXlq`!TpAXM*UPx*hB1YLI0%N6$?8 z#O16|!cv-=Ux4-J8w}LhAOF}5(ANn7yS%)A!s|^u$+>Z{*TsFo5h1VP6@tDVNAvTLM3vv5I z^a@z1w7MeB%3pc?f1G*o+b89E=98Ka6JQ#e!JUV&KW}HBK(pz*?l!ONpu11d0>O~- zUB`35a^OrY264puWsPKw>u_$cI*tO^z z1fMfRa*b0^TRRjk^d=SE$Se#9a=4-#vtjILn>WhPyGFS=*5dj z@iLX1z)f_$IpQ;>u%(0#7F}jUIj)y}2{#Sgt~dJN7v6ysx1ZQWtPQ`8<16JOtlQ3) ztKtbuQPEi#TOjny^^dE_DDDb_bRA3%PQa*4W^9OC%TgJ>G2}47xc?r=ROvMz+!0;NlNkfaG|t;V2UJD0p#I$Y)(C*7)Z=~c%GUUWs-OOcM~ICCD}yDT~~);G1r`X&6F zhNHHRt^VCsDoXy4>qEYx3owDpLD~POGMi4 zojOW)rJ~~Ox?CpuUWMsOex5TUL`XHaJMehzL)_Kn4i-(l{g5#VEbfeQw3!QrZ zfIMF|$B%Zh$c%cN-uK$-yW%=^U`L)RnNio8xbju_ZtZ+atK#Qm8FMT0LJhoV($bGl z^aD=6A6JA;L9=NlPf#QA(u%A+1qNF<90w>S(4ZG`>wUpNVLCS7NC?BpSzrB01-C#U z{xt^XANcvCO}t=`L4#~)UwcA#E*0^K*iL+W1o^4{He|4m__7XlgnO@2*jDN(^0aq|uSw`&IVeG$QrenZZs+)^?%dCJTL{y6w;YX_a^woj1>f7q-a1c4)Tt*rf zYY4}2=oNFx0uaQ?wNsayn{9;sqXT)Toxj+VbT^hq_boEz98I0W1q*w`NaG$<$^7@JkMIUkk4l*Hj z%_)@wK){2FG_sV40*jJ~5|;Gt*lVPFq|t;Ay_KPy7P)##s0;>1Z3T_I=(sG-oGgS> z9RGzZGkS8*Q)Lf)3&(v?B^x_+TPq8KQxbQ4bF8`Hg4PS-Y7)qxYW(FG-_8 z_x1md@~W3ySRIYIY9rw(g`Ut}A`3<2EQBgou;R+Ksx+SQjn8}8mhEl}Z?||0Qg*n3qWL%O^Cu+jJlmn=eaS0qv}|$4WjoCbE=KIqDw>@aY?x zSQW;BpaY}L@;huG8ULiU-j-SuDYp-$$uu@outI}lx#ol6iySM9=JqqIW<_!jBa$^? zYfUVnih6L-)zS3YOWtRmHd+Ill9~&F!qWDtchdWcgUV~v`uc*C^Cm^c=gBz6!xPWh zaoyyfB4XhHo|?K2E(nb2WAb6C(+(A2mmLqDOXxDp5Mq~CQ~S$`!|<0ChvnsfgedDM%%7NBbglvvh4Fw3krnf*1&4&W z!HJ)p6HaQgV$G{kYm$kpSAck!YXUv{?;m#JkAKR*d~;5*D#8{JJ8_;aRm!%u2ud(H zEu3|+4wp8`P}a_NHdb96x)bf_453GVR^}G3zYYt#EWq@~@Bs1jZ~P&t34(Xv5UwqDv)Lj5xU_wu*i;B(y~PZE3G?8QJ~Wh|Y>KkwT}zNkr;;%c3~y{i)4IL+yA za(Tw(aB^sUfr|eX`OxN$^J<)D00XRH{KcXF2j8c%RuZi7S zQG7f-nA%E1LwzgGZ#}1aZIa-YE(lHGLfO+ZFqFpeZ+1c~>4?hFe7vmMX&Yd5Hy20l z&G|Cg-cnV6Rj+QAJksJ+8s6ZdDeY;CZd&ZDIbYq=fU2X(3Jzi%>g`SU0^2}$6cgI% zTVtv?^@G&9-@PIRWTcQny_Mhbw>B$s5i%?-9Cfoo>CjLZ`pWiXu?;3X+uGjY^S$K# z@<|d#t~l&egO+WqC5NC94zLrwXJi9MR`o7UWF6dxXpUgv+WZ2Vd70IEhR5PIE(43cBZnpkO*s6|aM}cNk_?R_fLa?%F{r(C6gA1#OciZSY7fn47j*d-U3~tlfgM9HAV&=>2+pSL zb{DzEDP0+W z_2U#NI$(nMxHmi^0*@Y=>i_lYBOgEi3jL^At1>P}^3ZVy5}=38H@j3Z!wO6+ zs+ybI3wbmwo}idt96~dy6<<)q;xvhoP10B(OROE!OHCgZ2+ha@0>Cni2QT6Zc!sJL zo`Qzu)g_xRtcxm z)niF9pOZ3{Q8+G`Jrb{XNz{ydor$0AAu7N@Wl?Zqle+9GMi?Wc-*3Ejf_rK70L z#{(EcQt_?*aBJLnAVwPoei4q%J7hoU=bdtc$LWQT9Z3jeK|2jeU z*vfj+f8$FT)@i6qQGKt}Ewr-XOsxwsWu&n~!;81W! z($0VMnMKY6kpYbZFvFl>JYws|0}JkLM20nzvo)|9Gb+x{dFAKPYe+x`a};cqKp@Vs z{sO|@H17D7F~IitpSriA$?4S~`8QLti4GcVHGAeN3ih+RgTg&77<9(`IJvrBwhIMi*=@g??}&9#Nr z^Z4Y5@<*H9hbRl}+^>_TW?tq>)v(tWxh%9lwqwQ9hBMHY_1d|0vui5ithO3AL_l=( z>c$GOpLwjk#U+lAv$UYOS3hD~Zd{34ZdT9yEG0S`r z@_{hLMHPhgvT|OieE#;PD<(n%NELf&@o%QGwBb`j7I}QW_R`d|FK&jnx-sIEc6}uH zJz-*)o&K(og45kR#ou9ec?PWAW@8s?%7i>5Wh@bUa}l_8Mm)M5)bmbI9}P1@f)wo! zo32w^s7VxPiKZO3{x*{NV)+bXM7-BV{-@3{`0>CE=A7taBl7MeQQ}lbjF|ZOA5B~} zQMr^m%>5%9q~6u(CJCj3AAaK}AX|rv&#;+cW6%RBWnVh~y`B~W zO&|@1A#`bxsImefD4CMaC`LPnrbvKZh(Wjx= z=kPC&hCtG`y!uoAB+xxbZTYDMADxB{v>BE^Uyo`|`%-3S z>)9}cz=THiv?psV+QL&AQmZw~<8>DwbP4Y04-G%x{5CC^`Y7b-2|W!YAm2(BVh8c< zcFTWiV0H5G&l~o~;rZ)`tOART2+?w}ycKEshYxZrMs^8h@b<{!ox7o%-+73uH!Xjo zrP{SYSV-E@m)W_wWR-D3a6M@1CGS4VXtF`}oLd*3?Bp&qPbRytE`RFS!Ny~|krsbg zM}0MlKYGnpO+QDDP2A@6kv@V=`%zo4j#Jf9Lw%_&X!u%}Q?oo13fUT}BOW0601=JBc?P@O%Z zmYatk|2MIGl|qAH<5sP*dR>qPBH)iSDUNj3pZHZ3n0(stO6V&{2DQ3I44P9t%n+t- zoI^iXLKv#~Vli)BiO_&)KVHd=82r4&(Qqen#1lJNGdN;@LGkHLW$@eVyUKWGFR3&y z^T2X@*TjkL`@PQKe*&)^D1o>)$5Y8ZcsE0^GPdaMfZlY8*PuFoZfCNqzjnbv{{YQM zZ|=1?6~(y99kXhZx4v3+r{&7zKdlevRF>8Q%WX8;NDZ|hZM@51w0#_ud~GOpi;27Onr%Ms=2SuF?ejBsGrlye225+V!! zEf^4&{BOa4hNIyAd^4=z*yAy0>YIUJ1suD5J?aIdyF!`Lo^6?3wRH47<3{JVt!bOo zJbS!Nl%I9W^T*0PgTV#d+u&CfE_PLX11mCxolh%3sLV|kT`Hblcr5OXc1*tZLa2Ln zcb7FcSTi5(B6gpyAbQIOfzo0uCF$_sXgU-aw)5ZH4`F{EN~1j{FfA}vKB5#6XSH9A zpttoNHpr(TiUSh*EZvQCTokX_{SB|yf4+$m{wkovGnqlCxXfx>sMHE(9Ldu(`1Iw6 z-Y&lytqrapv$Y~-Q9uYqWMvz&zZ`1HI?*vPSB1%|X9|Opfg5s%>bcbNnb)DccrougTw5qsx70D+v^~{ygbeM&f?~u*4v;oBn6|E)=QTjHIDop|DSn3 zLKSITp}EynGW&Gh7yBZCfIBNq!;#Bq8guq7wHCe0ErKh|1G(a4d4<`s*;hISV=A6; zDBcMV6^s}}mbQB8j@GhgujGbTC@L!R>m6F8=AhliNBHSh0`%LVOHFnhT|BIg{#aIF zd?RH}DxQq2d}(|?Xwq)r?=UsN%Ra<2Ms?8+hNG90ZzIdial{o0yA8~-RJEtw}m)QjU%HdAW*i;VTCbsnd1*qgh~lT$!^eyN`4jI~OX= ztNAmOq7L?%$0AeYwW4C}ASTafakDSg%XZ(|y`-NsBnHnjM3u++uI@&J8)nJiy~c?I z2WOs=xLe*ig`!%^qK?6la6|Zlmb6y(K@qPU9{bbKb93Ru*HHI!nNtSQfg?Nt$gPJZ zr+}bmAcc8&E`y$)Udxf3Kf$64Bn#aC>)UCZKy-{yKDKmwgU2xYUD>D6j$HHX=M{)* z3*7`6U{Z*<8qxDeRoT2$S@+e?!35G2as7OoVTg$$Z0Vba~&qC`k*d696U)1pH;UhL{ zUGj%2OYtJ%n~cGnmC_Xthmaf&I0IAJE3PM+38U9Z%fz^3>zmBUF=^_{K`z*0Kwmk? zXK$GF1y`U8WILjh_QSUYkR`&_&ZCx$-i`aT&6hjw-FqgopAc*XLNvCv6PzCv5_D$! zE!verv_5G0?st41G=};YmheNf@ zs3N;3RF-N(CKP$3SfQ@NrG;!bgRS~0Jop=go+$O}gV2Q!0N6d`V%9nsz0D$Hd=hUd zzUw*MA>4{w+OZp;8Tg`CL2d7k&Q(rf7f0}0PN6Th>sAuCRa zVx}IQmXtoZ*$N%3zsauIcSBWKEw$u2>VCLftYfWQt8(;68b)RwSDwG8(9==XEl!gS zGA-BeH4-$u3ig|#K*^=a!*|y6R4W!g9Qm7CEkL8HB|(VEL3F8s3$e|Q;ko;5^%4?Z zZiK-=*&qE#+wsZwOmzeNkvFJ#F}C^tHIhwIEG#iQ&ygpaL}Bm9wD=@5KgoOt4#(aD zmTeZ#*Ri-R=VQQS0pd>BBH*wr7`x%9gsrj>&rdGBz1yb4SDt;*+ z79oOO7@FnVO@~d~=l1g(?J!I}_E00n(EH%FfBK76>-DIkC92^t^MT+RwtO?xDkFICbg7cEUkZd7f1{5gV!u z|KF{imWz(q$X&0pjf~k2N%v40^S|TL5%E0YT)r3xsp;>_YSnZrm%4cI+ir~Vqt(El|bD5uze zPCb{800feL65yO7rc zy^;fJ*j+PCHDyHCwB%ZjGWf@#hqjcqYlv4|rSI(ORdBZKL(2=#?T?02*j94Q6eOkk7q7!1QBaAtKrFKVc5fU#g7*csoM!yV3P`6kxXZIrrO+-rO;z~%m z7{VG2ho-)`X=_RjU_yi7{Cgo3Z!?_>h4_Xss9@%ZlT z)|jQ2%_3REi++>T5tX4GN!9&>?CooaIn%2G20@)RgR*zU{6zjRjr|;xdV^R%qwx2Q z)zAu27mJ89ipe*~dIsb0pW(QZXCpMnEZjbW+)P1I ze6m>=eqcKEmnh$3lVeF8gz#DfFwFt}1qvrI=ltb|tm`Jb|2KlhNdKg@MSy-3p%IU7 zu`p+o21a`1hMu}yN+@-s@DhhfX5+KtDIz2^lKwlNBYj znH|x+TUuJJ`J&s+>RzEN+vX0T`mj72@x?)kpx>%lXi>d6L*9Okwa*DFc;UT`7*z2g z&YR}(Kpz|XxKE(aLPFdrvCv;p4}S{;)&fTFaHNlRg=A&X@axx=?i+0S2u)Q#gI_I; zvB}DxzqhD=CMcj4ArdL}zlhW=;5ET95^Ku8NTgCFeiJF9Ga_|YX8pP@@n9z|q7s8q z&HPJ@-Pzd+h)#4M`j%1YcL-f&3W%+HX!Zq!j}A z7&*AHuw~*f?wo@bD={%nw!jW=OB!l&W|J3A8{5<)ZZWb7I_cxJy*0Gw@il>1v(8mg zo#~2-^=+-*8!+00J)O>M0rs@HoBnlA#uju(hxsw_TOOZ04TSjk)FaiXg3B-1yJ|*1 zG^)WJ{O)kR8hH4f-Ln5d5b@tSnE!W!;lF%_-@9YQ0Fk4Zp`pT=nO8tYPRD$pw}#B~ z=Z`=j`Sta6d0@vCAiZdlI6FJXsa!ygX6-CTqsPv3v9OGs&{0#{UlH!?HfZnb<2|H2 zS62ty=~-Ff{7!7b-pF*sWRz!TYrTIj-QL!wZJODW5W*q&_;D^4E41%(6tBg4yiB_$)kBbQCM9nH*24Lg+145~%L#H`}K5|VF*v%Szrg&QcH$#TA$&LUN9 zQ!@mW!mpNH>xj-_)6pR2UjS^U5)ku%pAXR8=;<|LCVpRC|12Sd_q9^)Z+m`#lu-@18ti`>_yQ&F^c%?<06ZI0i>w@tNPM6Zuw> zbtG7KBwqzewg!gwFLrS$Sz*|-4S`HDIFYKNRIJhgaqf8chB1`RlqhO6l^23Yy3vmwOg+`Dwl>OL(Dq!?wbCay-dlhR>|Iwm3Ce-G3UP5L$7U09(?xD4o=mx2A#jD_wlJpmNGF`$Pa=#T~JH0VH(U1A6Q$Z`-5E(vcJA%*I-REs+7PHw~4j%QY6}V4|rH>Yi*;jf8x)t=q z(NipKOAm;8k-A1N699{o;3wp)y=Yn86T`;E$$@%O$lE`&q{VSei6`cEPLdF>SgG(jP9>VxNAPZV6Ym@vl4^Lxo;9Ziu z{HIm&%zl7PC;Eo%_H~Y@B-O49FSCziM7Mf(w9afj@3gAD7g^^8m~||Q6wJJ<*tb~< z`(e9|eYkf)^W_Au=k7f2u?Z2SX{#STZ4==A5zCR=dfJscY*QdOTA_;yVwEje-%X|f zqsE`LYP4p#1Wl-3Rriy|p!eQo-YQkqd?D!La!p7=x+cdX+V-33q;Jb*wJ6{=+rjzE z{&OAu{VQ)qs~@JmPSI5cql-Gak2!5K2OJ~&7?J@mpN z9X3JwR|58r%?63EJpzJ5s5mXp_^h#inp^i=ap(Gc-U|%Wu(UQ2BJX2a&L^0gxWEKa zR(+ZU&zbLtAMQ!-#+G%~q+LCxueIhGKI=Yq?*SWQBo&gobN4-M_9bxG4o&CMh+NcG zWh6@WWw$R=TbaIf;P^ObqKA;jdkL&Cm&PuuV*=NfP0VgJ+Ylgx>IavR5#U2>wW&|& zdOzI>=)*0eA9?Rh=U`YF8;wSP-^(o*=$V*Ye#hZzx0W;v+@ltdEXf z)$J#uPdFTLDH5W5bySM?9Jb~?T{Yr zrJb>%CmP(ZY^+*Y`?Ebsgq#Z`&xeM!X)blwbo#LFQUe*YBf@{)VjQT1W*2xdQ|QE= zDbWmAY-|?IvRmVUl$vzB`CbptDy>^h^Z)_`6RE z%9BDNWVZIN4-OA278%}w-&O+tnjK42o_;l@e&x?Jl-(K|t4&Tp!S?W>eo&AEgu5X6 zOuwR(Zuk#<8<6bNH!zS_UhY;?F&Q0geh5)i6j;+s39O0+2-w1i-T+(lzIEbljkEk7 zlj7f5wB-Q(ps+GCn-fq-4ZM1^AYQgWc@7?D_MH>>{Ws0s+rPy+Z>s(`g8cuUm-PFj z|H2ddmo>0wu@I{QeE0T``}g*mh!yZ$rEg{?YrwEB8+UiYve7DWOhG|TbrwfFZOJ<$ zboU!(2Ah)MX7ZGt$&K~w5MeE!+UWQt#mbPw)W5|c)x;AwO1M_V@ehee%x5D&I(IDz|YyaLN!YcSJ6c7Oj9 zF8TgO{`c~|7x)E~flbSz2Va6ZC6D@-7_48|{KDK5U{T^$c~UQ*YLc2OXZcB9-ul61 z`m6g_w%;iV*B!$o_)CjwR=#ukMPr5rTH9AwR=Ob)ewGqz2|b~bt^x&=fGxipq1oAcYMH)JU!;;HtIK`uF6zs zn61riT`YV`?cCCA(>ICK_q?Zn&3gyHQl{}7kg>Pb>v(?j>nyTe-atz{~6 zm8uQ6X|v~0xp9$tt~8hQAQCOXuV3jFOP4)V!s|=+1<(e(n)x0v65y&@p`_Ht(^vj; zvHAX{t$ja@^STEW>9t^|&#nAGQ3^n0Hre;tzGfQ_E=qn($Lb;^9KR%no77Q?Kg$m@ zZg{c0dR=o3z-LOh_~X!$cT&;E`re+XJ@q%Le<(E=F+m8-~G7HWv^NB&@aLRjha@Vwzf>vIi4Yi z$x2Ct+vp0EXZEBUcT|nuY^kJdf=I?+SaTaKlVxknaWQVmu^8>Jl^N0QLres(q2mOr zue>^t#Li~>Kl|0oYRJtL(b=kyDWT~1B}r%=*T1)YNEe8$59PXoBYCJ3i0{jA=cybK z8!sG~gv*L(l+gIw%1ncec1>O`I-H`!@87$ZnMeM9w9%2>k2K=wT{J3ZJ?%99CqjFA z%D;U}*4kZs+*kk5Y34{r&) z!4Q=$-cZ7xB=oaFP1%m-8NoOvhqCLCg4u7If2VGQL82lgcfDHw&7pRXyKh$Q)QyLy zG=UY@-)10+f2|>v%F^ro#NVA#`LB9w6kFR7&?Y@FhvvTOO zrfYs5JU5y({D-4!N&StZr!&7%3zPrx;k2oB#vYVvb||abj@b=vF+2UXPz?tBro>65DRY) z{!biNK6Jl-VV3)uvNbX-(f@m`U3APx*WJ~C@{NnW8jnQ>6~xpAe2NyJDBNcQyMsH7 zf$kj^-rqLYbN&RiTaL&uo6d-;Zv29Or;LoOX0piSM%O7sOMkIH8CI1zd@mJRzm z2QWou_+`irR)vpeky%tt%~^Y}Su#^49=x*$Vqk_H(NS2?u+J0VnpYsuE$q#{Qi*udGgxmy+cbX!_E z*w;_)(z2KcCugJtAyVI&Dm){!;Q~_?8-L@g=2g)r;B3Qs!<`jnE_Q25GTk z#85aqq&++(FU|}STU%bsIC>CZmb-i2POq5qmQ|!NI05S*EZ~-N^VLL_i_=Rne9e+{ zXpKTbt~zdC-Q04eQO0w-)v;M8qKZJfu8ixK@phg!tby2^x-dPWN%8K= zKF#&>tNYTt*Wg2Ww5PJYZ?Vo_Z$uTQrSB(GSagdl?I-!ia{~88hH&(~n=vf81^ESa z8GSs5MXMumYQF}~k)`a?OF<%@6)G^#Wl@IQ!S)uE3%hEA-mSt&(ubbzSJJKG^xJpi zm?wim={B8ur{CAVGMky$^h%y8y?wQ(KIr|gcWax)f28o!rl?q&jfH0asHl=fAuBHh z3O9r`S?8%va-F-sAQn;Ia7YnIZQS^xc~ntKPy4p^L*J{rt;Wxn-sy&V99bqS?lbJ9 z^jkiqEALEx14T%Fh3(z?@X<5ifKD~?fbTPZe$S8OQ{2VK`nX8r(W|?PH2aSidwxBM z3Q%GoMIYHl;2o;fj%eNnmUPed)h$@P{k&k4wEgJ{1FdX*(Dh5EOYesMyzcw38&b=O z#f#tW=l-T`kpCRI?yzFScg2zGls4s}j1v{(rQNmXCr3Rbw+q$^3fmzHs#+T94Via5 z`S|#{(}x~J_FOZao??CyU&0i~6=y9CKmDrT_tL|fgZtn|trykqgb~-qk>>-)GA0Q3 zBA4W^yV_z6WDo~Nk~Ot&OUI(?E!lI!`?8m`d5%d^q%9I^KOQ=Ad@KJU@}sD>FDiLW zFtQ~YW_37y<3nf2JC(&cUExha_0WSMJ;`si$->Uh!Ka-42lN3Hwt;JL$K?A9wpM;) za)>BKhuwah6^|=6oIJkc;49C23`lbM*|eD&ccI?YQ>9qr+2mc-SHD_&PpP&!iufsb z;=@wB%jj#foE?QB)=IjS*-xTsa{UwqILc^;MQB`oH36#RXc^<(YfpENn6h{o8O z;7}1XYFYDu!FRh|)839;gPZKV2l`F{l8l*& zH!2b>^#?7ae(p~%iPky!4Qfwf^XDFSe0(nQDqoUddJ_Jw_MUxs>7x;j)GLxr}ymdEcbnn?2YzEti|`nHi+E&93vsM5TZsdzCJ`{wE<*wW(z!A_6;*DQ`PTU?$@!ZEOq zoxql@^4wDUeo~L^5r2>bPULhlP;I}M_5hJ`UDyu@nwG@tR4Vx}WjKpBIj`M3zYv<; zlkRx2vAf6J^G}sRFQpC+J<5fUTB|_*yizqQm!MZ8IMmYZT?x1(&*pc^y5|P2&STDY zhfUW`+8j-ib+5Si28Ih|I@uE@9Aox3WR8QBo3`XKedc}co%6FU&ZQg`+g6J+E8D9r z4`=>3U0n0W;40~LYf^38m&55|8$JIk84*X$sC*s?us*lEp^s9u!il;aKcybFowB~i z3_Q*+pQ42ylG@wBF1&sTsdFhI=!w4VeObR4mZdDW4pW4d(Fd6n;mkBx(IH`~ab5Jj7AiTuqj*p1b3iD`)mq9*Bc>CQSaqpL0 zDKP>4)?VB7Do1`Ki}>+^A*mO_>j`|(K5Fl5Lipb)Rm+yTKanLvFL#zNe@L3w)_9Q2Di&DKsLn$S)A%z$Tn_hSY0O+Vq;UWDDl3#Tbi z&}7|((~n7>a*+5qSx-2s9bH2#`G@WkI7`oN(=7WJ1%_; z;Mpx$+yr6OxNN=WXT$0z8)gr$Z*!(q9j)GcR%(%u-WBFF@OlK9>NQmMf7pA=pt!nj z-!};aB4`M%!3hMXaSN6ZG`PFdcq5Gk2`(YHG}gF7<4$mQYuvSQ*Grz~-L>mh-CO5Y z-Kz89)c)FYt<`JVnq!XNf6P&RNqDl=9ER544cOz@4e?Pr+A7zz)ErovJCA%trphn= zxXOZ9c8hN$geYjMURt~PNh{Q9=u~%i2)B2WoCO1x3gzFkG4efXmp0mIr&{;)dAnjrA&Ey|ENY((LF7%PE~aPKltGyiVQl& zFC`Ug!BGm^2#x*_n-d=C`LVPXK>ca4)g|(_`@K4nSOOpi=DAy z`u^drCEd`jy)`na{hnGlOcmWh3YAc1!s&Bq;9&>;%CQoFy}iB6?l_R1o&&XUYW?ur zfs7}Pt%RI{*9G-c%12sVv!S3MyvsINuF0<{&Ruk~gMi$|p@|T@`DN4;i)}Sa@#|iS z!-2$lvt^RKpHij~K3XddMP$OyZL^=uX6?17+^vTKv9Mgae&A5fl3f!>At=p0M;+NQ z_kxn+9BIQ$(UR=(H}&;2Ox zp3&|7!xpDUj`|Hy!a1(r)31MfW1$GnD(zC~i4h zmfR3r=^VEiQqUy@wUBj?mPd~g z;EX-!+~^=I0zO&WCM)SV7y*i{*914oqOU{oCCt8ONhdtnH%+Q%%%v&~-74!Fex={n z>Ham=_$X|A;I7kL^5mY?0%8d}{Aoq&DY0VAi#0O~MWE(AW^afSyYrrm$G7G~;Gt9b zKsA<)`mP!8#<$*w>@kfG-0Rca*0T)4RNf!~>5??xpzM>RN!=qmtDHsKi=#i$Y+g zU_yskIMkDdvdgros8zC+=qogLEe6|_c^+|(WTM~Ioaoi*Q)yi z-_xee9r?jRc|wAB!;w}}$l83N746PmbJsO3<2J7@(EA2VTz7b?O@iukr1))JBV*jO zeC3s@rwD!Y-7lsX;ADvSQ)inammRf~$IDV@7JCXxO3G<5&Bck)MC=Nj~`H615QcM;nwHI@zt5z=vA+V2Xo&KZV&&7cy*okK3Dn ztKhtAru=xzB>iv>z-!jMbQD$}#mLT&Qxr}dN`H}JWclS%tyx5S#CJt zW9~N+D{1&Ud2!e<`n{3uTRS16RQkQAQx`(7B^IL6hNXLpUoXNJabA%t(tM2T`XIKR zt=*Ma;n@?E=;y(2pG4z%UJ?Z?&9AI}>k%|Cv(fX#6O%EMmcr;sJcgax@(2YlIE^|K zCDE2@c#@UMYesy;oO>Hy+U*(H&yIW17+yo$wPMS-D8Aa!+cQw%=nrkczoDn=kRTia z>(=32oad%?4n@bc1X|}n67i)09zpHWFR?+}@`^{l_M%EZ$=5N1c^BVccK(^HcEOu2 z#JNFJmOoadYw=mfCD&h=)5?g0m(qJ&er*(DeqShL@700yWJy)oOv@=~RmeDbk)}z3 z*;m}>*$~7rcdnwzhElVrKgz$mj}ldirFEy_KL3WtPWzMcV6+>Xo0%vr)dQ>j(F_gD zOT<1qMBGmG7*w4pR%hr$uZ!u8n-*tvI7?%@``%ACz}mQXBkYyL>Z6xmD%)3rgTlep zq7py0J3^KeR~DjRDsri!tD%|)GrD=Y!R~0ks^rNtqMswdx;%BCA#?}wqcgLc3^Lw2 zdq1?cxd2aoKFrl=bbIv=wgOx>FH~F90uKD#GaY5qaeOl{2^7l3oeny|bj=k?dq?nb z3{SctDRWmdk2Lx?VL6X2YHY0FM$)9CN9zNuc@MrjFHXrY>%c$P!>i}m?0SF7z~_W# zNvG_R=5&iBJFL!VH)OZT^$#n$*`NCM9)QZLnG?Tf#+`Qf)qy&ICVKsag@QpD=aDE;0OiPMDHXf@v#ffs!7q>Y=*{ zBzZH3E~$s^m>dT5htKdBiax4bp?@N}i;Bj;)8;eHXxZ zaCqL5ljm6|Y7^VL(3Z3*>>YF%O?n)IVi!0sx$_P+2-?9kkFd5E9()Ala`{ORO+;V@%4 z=tQ~FTUaI<)T%ZiTh~~%(^sG3&kbJi@`MiOfCU6zHVZl2Dh7m{@9@N&6G}53mN54f z>wJqv|7*^(wXnU0pE4F!y!7iVDD^>#g1@~LV!R=|?%cw{oyUDV*J~Ngfsam-AAu#@ zM?>yzU?lepd?_fkJ57r!w=#1P(_+&!ZVp$vRoM6tjR1_T$6^#2;DR{cz7r2ipTUr1 z_n{VBu43wk8zBEo!_q*f<*_H_2!f(netNjHhr`F=ixWqwOOxf4m^@!-*}*6;&-)vc zRa!URcs-1S7U&|#Cg4UPT2%@(l5!caH%Za=TY_w|rbI5jM$$zHkb~e-@w_&KDk7wY z>p5xBFZ$|Uo(yYms`e{Q$;voBF|envI~`~zQ?Tx&Bs~41fkvb=5FTpE>iYIbFFyZN zdV*pvJ?_b73Cina%d3LY_`y#%T3>IVVkHmhAfrQw`8VV8Xjt=To*t9gA0}E%`iXGj zozCRHC}Py4D}4&%zW_x^2JXwM>8Zp2P>NBNpZ_a1@&6fO{QtPHXbNYd+5#&0;i(2s zbxt4yuK%DRaXz+xdg!SnzVqMieDbT{{nw=q8vj+{ z9+UsM@ZV1PpXT{r42mgR8Q+V$kei#mb~wj>=EtDdtUUxqByipUSXnd8Jq1Ww?m$&C_p zLB89vk;n#gepnOD5|`BPEAX?sXAW;V7YZLN$9@$$Xu-qc#O{?C!mwsWvC-e3W)!Qn zNo9TKVQteFaMAz%3N=h*EFNwZzbp=E_WdZF#B$;+RH5Zaxo1zaSN+Fi*HmeDO_Vwq zbf)K~;O@DBTk?MA^%v2Mi=>pTU0_S^kV?AUp`x+{OTG!0lR_~FIaNPM+K`ge@;U+?M&KL9->)gjbBpuHrl1G*} z82hB#N*w*L8f*loOs)TnMR8jm*1qco{kpyCvVfRbw#an#kq(l(rryvJGcYQZ@7>1D z1-Z#D`a^iDBD0M)CKS~z*??w4)UJ$<{B4f!7Z*MVHF&%Sn@5*?L?Q3+pq@H};)zCmb~~-C?qNRa7&=XORi`YQpL?hS8+5H@Js-IKjgWHqZJUe z$3LQQTVG%3V zGLs%CLYF%c0VD8Tnf^j1;Q~RcB-5QxKt+q0L{^61#RS)+5^7zfZHy|x#0|xIxtE9= z(L2Dl)en_G7?!XbCkjJ*bl?ZOlXu2s)jTK1CPaU_q?RYccl(Fq2NiX-&|lX(5xJ{& zQH;nFzaYg5z6zJ>v}yG{rf1&(J&XEQ_H?MEw2MpN%DkdU!WfRjwn8iNfVRdD>B0;# z)Toc+ja}e`kcxvSoMo0V0ebou9Pyj!Ju5T6$7h-;UfA>I`ry3$5+1HRrFN|i*$770 zAEGpQrL>W4`MyMPe3Lv)&0SKt+vQ8F`#7r_1Gxs^H0mL{Y302oJZ8f}$&$W5F=I1) z$y_E(ww)~TQ3W-s+4}Wwc5w!Te4A6YOx1aGrGtD`(}8@E{AippkUl;sXX372YRqa% zZ^Cyh=~`+zSR;RCyfp}G1Ga{5(6HelO&ThpKEitLPKjWdP7=L?$&}uuE z3BL`7QCglb4CwN0)Z1$NGHik{LnT(@43%eNv?f4q5V@aA6< zOKST|J@QX@CPsM8494^p*zTJa_{hQLPMNi zy8LQ!LJZ{Cl)+~{pB56F`9OoHQZh8rpk$$pGIXp~-0%?MRDQUDgLM!r@chTYk&8hz zxTy7cYc=W8#s}E^kMc;g-=2=)!~w{tq17qj@`F?YPJ=E)*?Ow!X7S8@4Iy&enOk*+ zF$v>f>bI};{Pj=7Y~aYAPQXa&Q!g$VL?{Dj%6Tbs!({NG+jPmwrG4=FBC!+f%N4q5kGZ6YqQ*QjWsX2hRTH!hFz(!Q-T%d)Ar8 z@A6sp#nFi(KlM!5y_(w88$V5|MoIZU2@xU&-#=D!+X=$U_tnE*Y5AYs=Z-#9FCNto z{*YGGSpCywu!&bp87i&dlvle62do7fZh!`Vr8}ZVy%)kziVJ>&plycQ+Mc~f=YC4| zk}3;(RfK6m#jNGQ?2W{pe42Sy;6WWCC$d@hkkF`4mU%122`9X=iU3In(u`Xtl1l;f z>(ws>7e1F!Fg&;I^iS{RK3s;7YHoE#q(y{AL|BU$^wRH=`K#e|Qf*?p>|^)8)r~P* zU>#No0SN}}<3_n&P$32Q2N+f8k#A^{KxY#CgC&!$L&;5<-t~KZcy{&0qnl~(?PDY` zO!R2Nc;AvdD8b*gk-g%r^I)*}ybTcLEjv)6ySQe4bA#H`o$9kGjsErB*VC)I+hJN(D>^H_k??|KT+*-fz#xP<;E#{W9J8-6| zTRN^G)jeocM7_uN2__D|5)&uE6Tf~&sh?OupF3n{#&`k?{CKQ1SP?!`^<|=*E4KFW zr>jX_w5QMDw~nsb#bj}(w%oU!Ta_CudRQ2x92!By#Nke%2F2MHhIH>^eaDzZGcjoN zcLqcVP9*qpvod=O@4s<~&vxUcch|a6qGt+pxuu(beN#<3ZHhGksKP=O=%PQjY`a>d z*JL`;{|S2FQL3(9H$!UQG{X1AqKYeb-PPf#GDUgOO*`F-sc~2XRQC^F70ezQO8Z&9 z5GrvShE3`Kq;)sWmAk9!-DA$yofp2sNGJ>_AZmCAiYa!xrPw6?*l#oH==z@55S2{n zFuWBFQol@lTw|tJrMoCRBNme*J#{V^SWUUJV{Q#V`;*YSLf{ZcT;R;o7Bq4_6W~RF zLlsBU*RW+@F6a)`ja4N#O{(pz^8lermnK>5 zDflrIW0l~}ZWsYa4qu7jXGQMhIVw)V2X8glDPFJrn0YMv<}*E^f9AA05cz;mdizS}Gh1ToTTgiN~)?*SNnsWYg6ia1!?cyQe}9}W0uH>^BL zE_3ttGulg6733jBV&KjFCdgdoaWXbhGhBK+VCNy{;qp59T{CN<^ps$(0Qvo*!8w9u zQBn7@<&bpzIVhyp$uxH-8+E->Wc=)W11=uD6L{_@)9kQ_s>=c7hssu7J?xOHT8=C0 zwQ%buKEdy_L^+)a+K0yBn4^Tdh(|6@FVSRYk3x(3ipJxdnzw^EdoKFHDNB@ts+F9A zM=2H?qM?Tkt}~V2nfbwmJ28M>4o-ho&sp+x1_sbA zGI)5xtNinz-j25T5$C`+bt}fHgRB@m;F6i@1BSy}GJz+*3o4 zlnVxY`E>bp3NPiEIDz~*vcHF{xti$X)3oQvcE1Z-%`MX0o4AWku&^P@ zU1ZX1;+8MI*wT?^!Z_gmtCOJ3U z3zVypcy~71-&bL|=d%bJ+r*jU?|1%iU#T*-Swy`9zfDVguqmr_&|&G5$4#{cIKo@ zVZG&7SwE%wdfF`cdmHyT%ul5C7qDuJsj2d2FA36%lg?nEpML35Zb=%)JwNKXlw0ZR zTjq?fAcX>0BzMh+Q4FU3FEWpJvOqB8Vzl<5kkJal9r6ww0mfKa@EOZ`Z`?~_S%SGpwNeT}^eqgp^g5R`Hf9B@d*s^NVtntH@Cv^uC%~X_ zx@>Dl3Y$3%2Rk=7Nzpn74-W@bJP5#@eB9{}Zh{jV&x}lEd}}tU@WE4~CD56;DAY4j zzhBR%Hm0du(Yl<9M0TZK0?f!fu-?tjSqi$JlTtsFipMGi)}z&mPV~OJcDIa68!sml zyj`?}3`0;>Mk$V6`rF`E0RF`wGC&QCbKU_JC8X*)XF@xN65S!S>H2E^gvn2WXo8*i zCtKSTHy!KQWoLVj*l3OA0cW=LU|O-3_X}*HsUJpG4o7u}9r6|m0j9Z1joig6F+D}8 zA=OD6!LBR_+VZK@qufPrw1<}{^rRZlEjJ;+*ZSb0=6nP zOf`F2-Bheh=!83FDzpbK7x=(A^;_6G@buSY%#3j?w^ES1{b7;IE9eZZfU$n32y@Jw}ie>N;9X4T|w9DS(Cy zA)u)?vgc57uMG+xu3}j}gU(p$1%CT>$sD-L=4S!(@m3(DvQg zk~r&IUk50$JK8}RNqLcrQ0YS({WS%#dkn{*=nzXVo2mL2S zPeqvc8`KAjF!N})FG~hm7lV`DAktz$-p>qjTB(;oe|p63+}&86InxU-;%3XKGGBbd zyntc24u*@Emr<#^A!ql=rN6K^0c)6OH{2+cwsC1berd=cWVW&WHS?v%gyg1t@xzM) zOxZuaKcusU3D6&NH%2O;;SIDhy9XHuc@Z<4@!Rj=$lp|Q*9A~WuIMGMgR|gLeAS_H zUqRz=&~1hKdd zaz{X~;gxKAha5dKNz(3V+bb)BCRU%WO(W7IZT!LR=i*xHz;pboQM~ z+L4=L(Zlm>nIOx`mMf$h!5I%Zcv>Hb$7&+!6XR(4h5_dp%@<2+5e*%WnJJavRT<9- zt!~H%Z&fBo4aB*UJd=anX+7Vr&0ey1gIXlBrGi#qD&NdkWFI5+nbaznY0p~u9m#uV z%s=-omN-sNxxK9WTijgJ8@5}GE-x)}VKj5i#&!zL@zy0NQ@m+yE<}syA6w6&aIoR~EjM3ofJuC|_C-P)*75Vq?AcE%y{(p6EhH>JD!suU?Z={o0C9}wv#qvZjp-P|RQyL_6q3XHYF?;{9ZLNUZ7Ke9(opEg(mfrlOXBJR00 zDUx@_jhcB`Po&+tBwAp_pP`6J3Mjq%ILx23-wn*)7Wm{8;r;&^2l%c^WZM0j9 zEm26h!tHVvK@OS_PAE|azB6F8e0X(f7i61h8cnn{L;oUtP~ zl56hHts&v=5q6VlB({;ZJ-cgTM+wQt+ojo5qpv)I5J7forj|-nM}MQ=s*-_`uO%SWzX+7dbw-& z&XO@;Ro#MZq?{YfAl4odMHKCuneJ*Wn-qYxq&1q|Jc)rAAvYedy%Yr%V5mL4c3bPqHmpn`64zhUu zoM0^M=aHM+{oZ$$(VPI}XA+M+Hp|SD5wUUHb~@hSP@Xc0yPc)(8;tBN@l;FsW6$RT%>x_n&QkE!i%_!gCib z>OQ~z7;?$%avO4=q<*M9hmnCTT;-a+XH056P8=C_NOwW*M$dHjqG5exO$hETyDoE` z%#~eCd|7ypa@YnZoG~@OJ+Fref98Y7!DjHcHviC{j(XG>HJ#4>Zm~^P@Yy!A^nQ~U znj3kJC6Uds@29Iey`8vI{C4x+k_f!hZi)m-Y{TD&n&+lwYt*>EhSG^DsI75+EEV5FdF3^zkLXb|_%o7J&iti-_pEFiOac~!`|IGyYG!0cj-H+8Na@*sq5%G!bIBP3 zVE)sQ0N0v!*J=|3Qr8_P*Lmll%9F=jVr ziGQ~oCKX8Tp*j=6p^uI|+pdSh8bfpGck3*i=?Q1%Waa8UcAL(UmvHtDv%)?MN)uhQ z@530Mt(AW`h*#{`h-124f0kpu2*L%Z2A??BJMIQZK}`*Mf;k0(F6GPyt?=4b73c~8mVK*RW1 zNi-^%=f`IOC+`Ph=Loa!gAo#4lmfiARxH zb_02JuVvQeye3^<&P10Atv{D?!@GKl0~&UL`{4Uw{(*LSDaSZ^l+3gAAne(7b(DfX zDEV1U%N}|FKEl5Ly6&O&SD)X`@BV?h3}N7Fg%2t1p!NIFJG(#04t&+NIR)Uy6su-^ zX==)+$``2LDJ5=izXQmk;)jF0=IhWY)0E2gg6a=dnh$qolG3CcT3~4oB4(X^%2nPD znd;ZU6<43RM~BXKX4TH_qC)pccbioo{Ec!Js@Kwow)dCPKjPa*hW&V?3N34DhDLb$ z9jBy;&MpmVL(h%+LdxAX&}6ioumroc&Kl0n_ReyKF)nQ!w%wisw#aZjX%tgq2kq>> z%RkuHv#wPZ{DoGs>{FpGo|V5G5kty5@_3f_7!n0jhqlVYi==cTV^#<040Abcs& zJzW0Jl95zfgA&&p*!Zs`Pb?M4je*Sm8>Z?;vBVLoZI+-5l}Kb8z2uOIFnK!>8<`EA zaBgafF?nQsx|3hbfIJ39?q$cT{U+z*H1h z!Ke5VeBxKo?HK`V>T!M|gKv?odl`#%(||=m-_-UjA>1$FB;lf7hJ=P z?6M2aA&^sZ8reu$xz79**wN*6#DVX$Q$RyErD@9ZJyXG8(Pqq$yLbF0S<=X#g77V- zO)IRJ;+jYCCB9K&(Vwz739+NM1?k`hN?GwSHer(qzh0!YQ{DZef4pFY7Nnh=xA=0t zC|Ni)wEiv4w@w%II17S+Zc}TC={)g{i93px=ZjIn>Ozx9X-rc#JT%QLcDwxaxQUwM zb++GUlj28T&UFOnmc&2ieJQ$PQ_v{I>gVJRM*Xb&DlmRKMh^R$eLG|H3;eLmlxIqi zAXIJeb5AyU0wp|*sYNt%VPM{%<0Up4FEu|j^HX&^YX4owiQlF^%mI->brL{qc#odB z#w`t0YCFYjyFI@=?n8nz4N7eB)u9fk!rk1j#SWxz-QSJ7%=@aTHvbSdKdqz&@l(yU z%nbE_-*G;7tZ@=uuMij4T9lZ~zsZ9|ggSFk%T$JPjuH+!*iq~3C*w(6v~Rt(OeQ*0 zKvu1W_@94Wspnq-1%p{#UK&af{?Zv2+SH!|!piwHb@gU{6Dgv`5=*MAs=EpMquDIV z6&;+oR2O5W{&dMD`bC&M728dlyWF}EUFK0Y6QSt^q?+@xm_m~YRwfTV$qK&{)JL4h z6v2_m1SN;sck`HM1jG*T2jy8D|0H(nzjkN=!*XIqSIpRL z=C<=-mp(Z2i@z>eOl@;DDVaCT(a+pZLzXatZRwQ>Fy}oWo#U;C$KgeCQs~T0W4zG` z`s2Q}^4M{y>8NeybZ+a^fE~#UCV%^Rq0B6QDv}V_r_L%O@1D8*J}=*a?-mp;n`Y2T z&`9Ym<=%!oszwyhx?K#2Kj88$@#-{j_<7?}odm^zXFttz;@@*rv*cceB|TPiU?=q3 z@H-uHM4eT%R6*t97x&AX?o#5y0((&u@e?@CoF;{{a$nSM07l7l)S+G@iHnG{FUbok zwWc}8ARXiqmXTZfVm0KBrG07wq6YAXb>(iP>c^G)Hv^~XE zR>RwjS5Y3wRqM5RIAtGbbKXGorG0~5>y(|Os%CRpyqPo0bZ%w9g?Da(jiEoWlWVw(-x>TmIqKsi@RA2;L$*R8;{Z6!IHC*R!H*li)>cS z9i%u{uE-1uZ`K9ZV1u`!_h>d9YvtgVJd=`VHjz&IYQ)yi!4dA!Cepmpp@b!zeXmHF z+*c2v-13Y=SXQpy*1)BPoh9)Ovd)uXy&-*eXwCVJ)G0l?Z)8$OQ1sJ|KF)-t(vuvM zXhWN9l{~mDzb?7V^$M4)?I}`gnrWKA>u*GKvA-fOBUJY-dFWYkJKKW;CKoj&Wku^h zQpXepp8{OFe{LI6EOEEKA~O4{UG@2IF)D^I?Z1+>|9xUf zE!aPjDalwxcUg3H)!;kB03Ah14YOejmY{3Vry5TDA(+rL?P5`4Gr2>{^2nz;Dwq$c zdrrlA2_1(c7c5yA50gHBtkY7=m$gvs^7|4T)*7RNx*{{9U1uWnr)#)-69?{J2!B#I z@$I#oq+h^=a^XJT#^cGKo-ID%ie||Ii(Xnc7|wX%aUvV)uT$(>en)ZPp|PU8y!9@E zyo>I-b0*rIfUfE*I>&$Ojm&-xmT2>{uFk~2q-QeI_$z+Z`SkZi1tn<=&4y?j`TN9@ z9nSON$sr7kZxphdnk`);{xt9d47N@bw=-ld6P_cP1q}zWM;>#Tk8k%?`C0C3upu#C zs#=x)mEiVFvgI|+!wHrbd(r=DUJ6IbPhKEqC%cyqP+ZK6l(Gj1M>OjU5$XSkVE*2* zT`*Gb3;&j@Sj$Gp(JlYu@dql~Us;G6Ui!)Ji{{zj7g+-#BI!$hN3RopFqB(7sWZ+) zRHROR5%D7#h_)|t=p&~FY5NWwI-!XcF=3^J7HO!?Tm`|qiO%`z`cfoT&nc~INWWg2 zXfEvZRldsd%5MVT>@}MWddS4=oDzozmlG?vs=5zPJxNS}*w^p*GM#lWxK{_Ff5&mY z56S&2G;ujGMuv&a4@4Wf^9eyVo-X{zN0n?8a{XumwZZFbs*8hncsH6 zE*cjg-_heE>(d1Bpa#Pxz#HUzNXNvXiY8j6$e?C;J(r^eMu?>xFS&SuL|w89>Ck77 zED1=}jf~*A*o0Aky~!=_q=mI!`o>Bfbf%FLPafI)bk2&{S;Iq0g^hh}(&XdyFQtqj z%3U{U*@q6w^Is75JiZW}%)4CwUIFf{HAS8Ff$-Z6uF9yO;mKX!Cg){q&xujMCl$of zkF2ZrS!qZ@dH|{9=^SmR*x;^2x4+$x*IAjFenCGbL3c50A~gy!=E0-uq@r#8q0?`= zJj>My7x+^r&=ERx7Q*4jYNYrgj^$PNucuX8W9w>DP^BSWUwqrcT1+@BI9N?+{PYT? zL$C>Jj`U^3STKorc#==7q;TVP8?ChtVT2EUWaf4)e6WTMF?ry*M?vRP!GP{E0bAa{HI4S!Jb%d|%$j~lkL1#ANA)Fzc5!{BZ6=g8yJ zG64&+KeobQS7l$QdELiJX+G8UXk!JBzV6%>asc3UM|_TKr?kx+S1?ZOdJdNHggGQfZe5jqZ5t?rku zjp@q_&&9`8QtYe5EqwGOly4LS}E@hhUtVy_xR|{ zJlm_%0Z71yfYM)N9OU_R8bL(KVZR$B8njr^k)lF7@&P6aH1LJI*9i?sM`YZ@w!vWT zIy0KFHOeDPF$?vW)c?ednZNrj9UGhbro-=M^x1$409zJy+)&5?yKPB+yeDx5BgB8 z5uYT~56HI5kxBU|oP75;0wmLPx*&j@*yiF#!z7n8%319=Dvw&&yVIl92%Bvm=uE6F zheu_z)hT>Fi0ofh^|R&*wx`t(3!4g4S#5GZ6k+Md2~YL3!~AHMo>%8(xu9A1n{^gyY;}sFoWwf1@?Q-e;%mRDJ!14+04%fYTNvYFpfbyJF`>TvIEW~2-j@tNr) z);rY*-ZE@9{3T9ZY#?7Q-WLYCoZs2-4u@)br@@@+z1m{d(81j~CibHqHm4BOVVj;}LcAq(O8b%dkZ%g9r>vdm7NBT&x_72#p{$w%RdWmr3{ir+4oxpNkQhtBl!>BJ%&;o z$K1f#kZiW;A4qN#8~UBN-f&n?v90N^9f&MQpj#rMrbTkQyD4RKhY?Sl!~#wXQqEvy zK(VirbPdPwt&y=Znw^r$sGG~-Fc}lrkos$o3}!!t3Q4{%4)I^=;hnMGkL)ci6}Nfl zo+0A@;=VNS>@c74S3JZ&LF&hTXOt_G$Rcw0aiZY=8-m~;J1uXaxZ6ZeAZ&OpL06!t zqWU9CEn0E?@FcD}!s(y1CmLHm_~2`XiRRX&>m~aq!F}V%04M}mvWUC|`eBj9`$PEO zVJ+rA3ud#RA6tZFV`vD4Nb{Rb7RvPs09qGzme3viT=E8QeqJc`74s@1zO)U5+XQLA zUcBu>ZS9Boq^U1vm!_iZErBA#wCUaj)3RGWoX*Sun zG#&u>ac0pW*Y(EYle3lt!~|~&LmMyykc0HWVi*@G<2e=)8^%T)0$3~4^2wRAkI?%) zCM(Wn?Zz9_(6SGxvkkz5diSp$Q?!^(9)2T88ebmsQaP@D`SdWRjQQPwWx$7!MxxW0 z$X8hsi&oLrb(jSHfr>r@vM;AjwF_FS!+Aw6?a&Z~vQ{+Gn88jf%*iXWPY{r+0NzWd8l=m6N!Tx5UQO(Xsc3Q%&AVoTj2HZ3M_6RyjgI`DgW7PA-G-!au640a_i9jkk=6&WFD7MNl~44QCP9) zj_IpMMq|E;7#hKqD-W0wzjR0jdygjG{^`5MkibLpk_N7As%vnH<>g4Wnu+(}bi{(j zoJ$p=>Qw{aYN?Lbz7a*fLy~M|Y0Ft#pto`5w8RTYk!?St59JJLrL+_!14rOnRBU%V zIf-A)JJ!v_v5dKt5XG7yveS<@3<;rmo3MoG$t-E_aSr=-lElek_Oysc26 zW-Qic8W!6{eaVV;xOGLeBlkQgg4F-XvwE~&@dBjrk8AbI+JP1}88@D8IM3Y7Z}0^= z*5ekXyVOt3Eo0Ki(AEJGR5R+i>gm*1o?WZ4y_smMOBP4DNhz67;1q}oJpXAdEjm;% zbHI2`QD{vjku&FxS$Ptrd?|aSH&C)wmQIvXyQ`A zmwuV$v!^WTWcXQYoARI2>>3-a-yQJ&4q-SseGWZduNWt2c;bas8kSD`f!iCegBmwD zIwHx#MVr}6C5={pLn)661o>wsPnk`&^N-W?ct}w8Vh-BW8!hpChq5QLj)Uv8MnRS@ z7I8OB3E^k2z!=dt$`oARvxaSvUr2Pf*eJ|gIfy1NCQzR)A3(nZEBDjddA#}fSoy;C zr{(Dc7KoM|yFVAa9Nn2|6I^jh$h4VugCQ-EX*nDheAZEna|&v!c6EbPYj@MJc{V*4 zLtU_}^5TNK>TgdxCA$O=8njQ|@R%E;0bG&;T#W8^NpI$ij7c8Ih+nP233n@eY4s1{ zn1i(A@={l@{hz@Ij@>!;Pu%}{ao%>m=c}eV zEZ$qqeEp5&*3Cw_C2{-J+8>|Nzh=EZV2c`4@VEAaw~HKr+eE@HMC=n??-$z?%YP*C zIaBw8qjQ$^YT)D^>)9w9ajn@CC_*Lba8lm zZ{@twOqZPzmu8E#Rz^DQ{cNu0`)rdz$ENaUe)~-`vlQk>aW4O~o7M8JS?y2+*1aNGV(l^(!?reteItz&L>;u+^Z4F~0-f*smwPJn`(;PsK%H2d>^$18s~oT@6grJGL6`&`uBC_FU}B z&$|~_?alPKn|olfV{=sI@}C-))cqY+xy!_Hra5?rOHR+54KCj9R4m&j7y9$$3?pq` z)x5oiNAd-#q_hHdSo2r=0r#-v$t1O(p5K@`ca_%ahxc6XO`ZAT)#FpSlR-_gS>nyN z+G19@y`0`&_^RpKt-H+M@4P&i{jg)5$u?h5Ob8*)Qhfy5MN8%ZtFXPvTtEIFsb6;b U#h%T9pyO{nUHx3vIVCg!00(+R;{X5v literal 0 HcmV?d00001 diff --git a/online-payment-fraud-detection/fraud_detection_model.pkl b/online-payment-fraud-detection/fraud_detection_model.pkl new file mode 100644 index 0000000000000000000000000000000000000000..b089c6111e30d88be4a772338fae62ba544a6a8d GIT binary patch literal 243158 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 HT\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
steptypeamountnameOrigoldbalanceOrgnewbalanceOrignameDestoldbalanceDestnewbalanceDestisFraudisFlaggedFraud
01PAYMENT9839.64C1231006815170136.0160296.36M19797871550.00.000
11PAYMENT1864.28C166654429521249.019384.72M20442822250.00.000
21TRANSFER181.00C1305486145181.00.00C5532640650.00.010
31CASH_OUT181.00C840083671181.00.00C3899701021182.00.010
41PAYMENT11668.14C204853772041554.029885.86M12307017030.00.000
\n", + "" + ], + "text/plain": [ + " step type amount nameOrig oldbalanceOrg newbalanceOrig \\\n", + "0 1 PAYMENT 9839.64 C1231006815 170136.0 160296.36 \n", + "1 1 PAYMENT 1864.28 C1666544295 21249.0 19384.72 \n", + "2 1 TRANSFER 181.00 C1305486145 181.0 0.00 \n", + "3 1 CASH_OUT 181.00 C840083671 181.0 0.00 \n", + "4 1 PAYMENT 11668.14 C2048537720 41554.0 29885.86 \n", + "\n", + " nameDest oldbalanceDest newbalanceDest isFraud isFlaggedFraud \n", + "0 M1979787155 0.0 0.0 0 0 \n", + "1 M2044282225 0.0 0.0 0 0 \n", + "2 C553264065 0.0 0.0 1 0 \n", + "3 C38997010 21182.0 0.0 1 0 \n", + "4 M1230701703 0.0 0.0 0 0 " + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#%%\n", + "\n", + "import pandas as pd\n", + "import numpy as np\n", + "data = pd.read_csv(\"onlinefraud.csv\")\n", + "data.head()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e09f1bfb-d882-4fa9-a2d4-7bafb79a1f66", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "step 0\n", + "type 0\n", + "amount 0\n", + "nameOrig 0\n", + "oldbalanceOrg 0\n", + "newbalanceOrig 0\n", + "nameDest 0\n", + "oldbalanceDest 0\n", + "newbalanceDest 0\n", + "isFraud 0\n", + "isFlaggedFraud 0\n", + "dtype: int64" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# %%\n", + "\n", + "data.isnull().sum()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "18a97419-8866-4c6c-9bea-c0fed660b76e", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "type\n", + "CASH_OUT 2237500\n", + "PAYMENT 2151495\n", + "CASH_IN 1399284\n", + "TRANSFER 532909\n", + "DEBIT 41432\n", + "Name: count, dtype: int64" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# %%\n", + "\n", + "# Exploring transaction type\n", + "data.type.value_counts()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a87881f2-11b7-46af-931d-909a3a6d19a1", + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.plotly.v1+json": { + "config": { + "plotlyServerURL": "https://plot.ly" + }, + "data": [ + { + "domain": { + "x": [ + 0, + 1 + ], + "y": [ + 0, + 1 + ] + }, + "hole": 0.5, + "hovertemplate": "label=%{label}
value=%{value}", + "labels": [ + "CASH_OUT", + "PAYMENT", + "CASH_IN", + "TRANSFER", + "DEBIT" + ], + "legendgroup": "", + "name": "", + "showlegend": true, + "type": "pie", + "values": [ + 2237500, + 2151495, + 1399284, + 532909, + 41432 + ] + } + ], + "layout": { + "legend": { + "tracegroupgap": 0 + }, + "template": { + "data": { + "bar": [ + { + "error_x": { + "color": "#2a3f5f" + }, + "error_y": { + "color": "#2a3f5f" + }, + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "bar" + } + ], + "barpolar": [ + { + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "carpet": [ + { + "aaxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "baxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "type": "carpet" + } + ], + "choropleth": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "choropleth" + } + ], + "contour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "contour" + } + ], + "contourcarpet": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "contourcarpet" + } + ], + "heatmap": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmap" + } + ], + "heatmapgl": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmapgl" + } + ], + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } + ], + "histogram2d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2d" + } + ], + "histogram2dcontour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2dcontour" + } + ], + "mesh3d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "mesh3d" + } + ], + "parcoords": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "parcoords" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ], + "scatter": [ + { + "fillpattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + }, + "type": "scatter" + } + ], + "scatter3d": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatter3d" + } + ], + "scattercarpet": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattercarpet" + } + ], + "scattergeo": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergeo" + } + ], + "scattergl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergl" + } + ], + "scattermapbox": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermapbox" + } + ], + "scatterpolar": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolar" + } + ], + "scatterpolargl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolargl" + } + ], + "scatterternary": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterternary" + } + ], + "surface": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "surface" + } + ], + "table": [ + { + "cells": { + "fill": { + "color": "#EBF0F8" + }, + "line": { + "color": "white" + } + }, + "header": { + "fill": { + "color": "#C8D4E3" + }, + "line": { + "color": "white" + } + }, + "type": "table" + } + ] + }, + "layout": { + "annotationdefaults": { + "arrowcolor": "#2a3f5f", + "arrowhead": 0, + "arrowwidth": 1 + }, + "autotypenumbers": "strict", + "coloraxis": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "colorscale": { + "diverging": [ + [ + 0, + "#8e0152" + ], + [ + 0.1, + "#c51b7d" + ], + [ + 0.2, + "#de77ae" + ], + [ + 0.3, + "#f1b6da" + ], + [ + 0.4, + "#fde0ef" + ], + [ + 0.5, + "#f7f7f7" + ], + [ + 0.6, + "#e6f5d0" + ], + [ + 0.7, + "#b8e186" + ], + [ + 0.8, + "#7fbc41" + ], + [ + 0.9, + "#4d9221" + ], + [ + 1, + "#276419" + ] + ], + "sequential": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ] + }, + "colorway": [ + "#636efa", + "#EF553B", + "#00cc96", + "#ab63fa", + "#FFA15A", + "#19d3f3", + "#FF6692", + "#B6E880", + "#FF97FF", + "#FECB52" + ], + "font": { + "color": "#2a3f5f" + }, + "geo": { + "bgcolor": "white", + "lakecolor": "white", + "landcolor": "#E5ECF6", + "showlakes": true, + "showland": true, + "subunitcolor": "white" + }, + "hoverlabel": { + "align": "left" + }, + "hovermode": "closest", + "mapbox": { + "style": "light" + }, + "paper_bgcolor": "white", + "plot_bgcolor": "#E5ECF6", + "polar": { + "angularaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "radialaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "scene": { + "xaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "yaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "zaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + } + }, + "shapedefaults": { + "line": { + "color": "#2a3f5f" + } + }, + "ternary": { + "aaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "baxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "caxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "title": { + "x": 0.05 + }, + "xaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + }, + "yaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + } + } + }, + "title": { + "text": "Distribution of Transaction Type" + } + } + } + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# %%\n", + "\n", + "type = data[\"type\"].value_counts()\n", + "transactions = type.index\n", + "quantity = type.values\n", + "\n", + "import plotly.express as px\n", + "figure = px.pie(data, \n", + " values=quantity, \n", + " names=transactions,hole = 0.5, \n", + " title=\"Distribution of Transaction Type\")\n", + "figure.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2a2f8c81-f73a-449f-ae0a-ee60adf436a9", + "metadata": {}, + "outputs": [ + { + "ename": "ValueError", + "evalue": "could not convert string to float: 'PAYMENT'", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)", + "File \u001b[1;32mc:\\Users\\91929\\Downloads\\online_payment_fraud_detection\\hello.py:2\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[39m# %%\u001b[39;00m\n\u001b[1;32m----> 2\u001b[0m correlation \u001b[39m=\u001b[39m data\u001b[39m.\u001b[39;49mcorr()\n\u001b[0;32m 3\u001b[0m \u001b[39mprint\u001b[39m(correlation[\u001b[39m\"\u001b[39m\u001b[39misFraud\u001b[39m\u001b[39m\"\u001b[39m]\u001b[39m.\u001b[39msort_values(ascending\u001b[39m=\u001b[39m\u001b[39mFalse\u001b[39;00m))\n", + "File \u001b[1;32mc:\\Users\\91929\\AppData\\Local\\Programs\\Python\\Python312\\Lib\\site-packages\\pandas\\core\\frame.py:11049\u001b[0m, in \u001b[0;36mDataFrame.corr\u001b[1;34m(self, method, min_periods, numeric_only)\u001b[0m\n\u001b[0;32m 11047\u001b[0m cols \u001b[39m=\u001b[39m data\u001b[39m.\u001b[39mcolumns\n\u001b[0;32m 11048\u001b[0m idx \u001b[39m=\u001b[39m cols\u001b[39m.\u001b[39mcopy()\n\u001b[1;32m> 11049\u001b[0m mat \u001b[39m=\u001b[39m data\u001b[39m.\u001b[39;49mto_numpy(dtype\u001b[39m=\u001b[39;49m\u001b[39mfloat\u001b[39;49m, na_value\u001b[39m=\u001b[39;49mnp\u001b[39m.\u001b[39;49mnan, copy\u001b[39m=\u001b[39;49m\u001b[39mFalse\u001b[39;49;00m)\n\u001b[0;32m 11051\u001b[0m \u001b[39mif\u001b[39;00m method \u001b[39m==\u001b[39m \u001b[39m\"\u001b[39m\u001b[39mpearson\u001b[39m\u001b[39m\"\u001b[39m:\n\u001b[0;32m 11052\u001b[0m correl \u001b[39m=\u001b[39m libalgos\u001b[39m.\u001b[39mnancorr(mat, minp\u001b[39m=\u001b[39mmin_periods)\n", + "File \u001b[1;32mc:\\Users\\91929\\AppData\\Local\\Programs\\Python\\Python312\\Lib\\site-packages\\pandas\\core\\frame.py:1993\u001b[0m, in \u001b[0;36mDataFrame.to_numpy\u001b[1;34m(self, dtype, copy, na_value)\u001b[0m\n\u001b[0;32m 1991\u001b[0m \u001b[39mif\u001b[39;00m dtype \u001b[39mis\u001b[39;00m \u001b[39mnot\u001b[39;00m \u001b[39mNone\u001b[39;00m:\n\u001b[0;32m 1992\u001b[0m dtype \u001b[39m=\u001b[39m np\u001b[39m.\u001b[39mdtype(dtype)\n\u001b[1;32m-> 1993\u001b[0m result \u001b[39m=\u001b[39m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49m_mgr\u001b[39m.\u001b[39;49mas_array(dtype\u001b[39m=\u001b[39;49mdtype, copy\u001b[39m=\u001b[39;49mcopy, na_value\u001b[39m=\u001b[39;49mna_value)\n\u001b[0;32m 1994\u001b[0m \u001b[39mif\u001b[39;00m result\u001b[39m.\u001b[39mdtype \u001b[39mis\u001b[39;00m \u001b[39mnot\u001b[39;00m dtype:\n\u001b[0;32m 1995\u001b[0m result \u001b[39m=\u001b[39m np\u001b[39m.\u001b[39masarray(result, dtype\u001b[39m=\u001b[39mdtype)\n", + "File \u001b[1;32mc:\\Users\\91929\\AppData\\Local\\Programs\\Python\\Python312\\Lib\\site-packages\\pandas\\core\\internals\\managers.py:1694\u001b[0m, in \u001b[0;36mBlockManager.as_array\u001b[1;34m(self, dtype, copy, na_value)\u001b[0m\n\u001b[0;32m 1692\u001b[0m arr\u001b[39m.\u001b[39mflags\u001b[39m.\u001b[39mwriteable \u001b[39m=\u001b[39m \u001b[39mFalse\u001b[39;00m\n\u001b[0;32m 1693\u001b[0m \u001b[39melse\u001b[39;00m:\n\u001b[1;32m-> 1694\u001b[0m arr \u001b[39m=\u001b[39m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49m_interleave(dtype\u001b[39m=\u001b[39;49mdtype, na_value\u001b[39m=\u001b[39;49mna_value)\n\u001b[0;32m 1695\u001b[0m \u001b[39m# The underlying data was copied within _interleave, so no need\u001b[39;00m\n\u001b[0;32m 1696\u001b[0m \u001b[39m# to further copy if copy=True or setting na_value\u001b[39;00m\n\u001b[0;32m 1698\u001b[0m \u001b[39mif\u001b[39;00m na_value \u001b[39mis\u001b[39;00m lib\u001b[39m.\u001b[39mno_default:\n", + "File \u001b[1;32mc:\\Users\\91929\\AppData\\Local\\Programs\\Python\\Python312\\Lib\\site-packages\\pandas\\core\\internals\\managers.py:1753\u001b[0m, in \u001b[0;36mBlockManager._interleave\u001b[1;34m(self, dtype, na_value)\u001b[0m\n\u001b[0;32m 1751\u001b[0m \u001b[39melse\u001b[39;00m:\n\u001b[0;32m 1752\u001b[0m arr \u001b[39m=\u001b[39m blk\u001b[39m.\u001b[39mget_values(dtype)\n\u001b[1;32m-> 1753\u001b[0m result[rl\u001b[39m.\u001b[39;49mindexer] \u001b[39m=\u001b[39m arr\n\u001b[0;32m 1754\u001b[0m itemmask[rl\u001b[39m.\u001b[39mindexer] \u001b[39m=\u001b[39m \u001b[39m1\u001b[39m\n\u001b[0;32m 1756\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39mnot\u001b[39;00m itemmask\u001b[39m.\u001b[39mall():\n", + "\u001b[1;31mValueError\u001b[0m: could not convert string to float: 'PAYMENT'" + ] + } + ], + "source": [ + "# %%\n", + "\n", + "correlation = data.corr()\n", + "print(correlation[\"isFraud\"].sort_values(ascending=False))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "07637929-1d1c-422b-bc9f-057b3092fbdb", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "step int64\n", + "type object\n", + "amount float64\n", + "nameOrig object\n", + "oldbalanceOrg float64\n", + "newbalanceOrig float64\n", + "nameDest object\n", + "oldbalanceDest float64\n", + "newbalanceDest float64\n", + "isFraud int64\n", + "isFlaggedFraud int64\n", + "dtype: object\n" + ] + } + ], + "source": [ + "# %%\n", + "\n", + "print(data.dtypes)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "20fe83f7-62cf-4f03-b7e8-3309cf056b57", + "metadata": {}, + "outputs": [], + "source": [ + "# %%\n", + "\n", + "data_numeric = data.select_dtypes(include=[float, int])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "91e9dae5-9e8c-4c43-8e4c-321eb1da4082", + "metadata": {}, + "outputs": [], + "source": [ + "# %%\n", + "\n", + "data_numeric = data_numeric.dropna() # Drop rows with missing values\n", + "# or\n", + "data_numeric = data_numeric.fillna(0) # Replace missing values with 0 or another value" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6f6e22ec-1441-41d4-b87b-881dbac3b0db", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "isFraud 1.000000\n", + "amount 0.076688\n", + "isFlaggedFraud 0.044109\n", + "step 0.031578\n", + "oldbalanceOrg 0.010154\n", + "newbalanceDest 0.000535\n", + "oldbalanceDest -0.005885\n", + "newbalanceOrig -0.008148\n", + "Name: isFraud, dtype: float64\n" + ] + } + ], + "source": [ + "# %%\n", + "\n", + "correlation = data_numeric.corr()\n", + "print(correlation[\"isFraud\"].sort_values(ascending=False))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "327e419e-5c5b-434a-9526-ba6e9b8ca910", + "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", + "
steptypeamountnameOrigoldbalanceOrgnewbalanceOrignameDestoldbalanceDestnewbalanceDestisFraudisFlaggedFraud
0129839.64C1231006815170136.0160296.36M19797871550.00.0No Fraud0
1121864.28C166654429521249.019384.72M20442822250.00.0No Fraud0
214181.00C1305486145181.00.00C5532640650.00.0Fraud0
311181.00C840083671181.00.00C3899701021182.00.0Fraud0
41211668.14C204853772041554.029885.86M12307017030.00.0No Fraud0
\n", + "
" + ], + "text/plain": [ + " step type amount nameOrig oldbalanceOrg newbalanceOrig \\\n", + "0 1 2 9839.64 C1231006815 170136.0 160296.36 \n", + "1 1 2 1864.28 C1666544295 21249.0 19384.72 \n", + "2 1 4 181.00 C1305486145 181.0 0.00 \n", + "3 1 1 181.00 C840083671 181.0 0.00 \n", + "4 1 2 11668.14 C2048537720 41554.0 29885.86 \n", + "\n", + " nameDest oldbalanceDest newbalanceDest isFraud isFlaggedFraud \n", + "0 M1979787155 0.0 0.0 No Fraud 0 \n", + "1 M2044282225 0.0 0.0 No Fraud 0 \n", + "2 C553264065 0.0 0.0 Fraud 0 \n", + "3 C38997010 21182.0 0.0 Fraud 0 \n", + "4 M1230701703 0.0 0.0 No Fraud 0 " + ] + }, + "execution_count": 33, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# %%\n", + "\n", + "data[\"type\"] = data[\"type\"].map({\"CASH_OUT\": 1, \"PAYMENT\": 2, \n", + " \"CASH_IN\": 3, \"TRANSFER\": 4,\n", + " \"DEBIT\": 5})\n", + "data[\"isFraud\"] = data[\"isFraud\"].map({0: \"No Fraud\", 1: \"Fraud\"})\n", + "data.head()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "905a0b7f-3f12-4260-b4fd-fae6a0ea9a83", + "metadata": {}, + "outputs": [], + "source": [ + "# %%\n", + "\n", + "from sklearn.model_selection import train_test_split\n", + "x = np.array(data[[\"type\", \"amount\", \"oldbalanceOrg\", \"newbalanceOrig\"]])\n", + "y = np.array(data[[\"isFraud\"]])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b2d0461c-13fb-4904-aa9f-dbed0d38f0c6", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.9996982375185065" + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# %%\n", + "\n", + "# training a machine learning model\n", + "from sklearn.tree import DecisionTreeClassifier\n", + "xtrain, xtest, ytrain, ytest = train_test_split(x, y, test_size=0.20, random_state=42)\n", + "model = DecisionTreeClassifier()\n", + "model.fit(xtrain, ytrain)\n", + "model.score(xtest, ytest)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "fad573f5-eb07-45b6-a4c1-a721bb747c15", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['Fraud']\n" + ] + } + ], + "source": [ + "# %%\n", + "\n", + "# prediction\n", + "#features = [type, amount, oldbalanceOrg, newbalanceOrig]\n", + "features = np.array([[4, 9000.60, 9000.60, 0.0]])\n", + "print(model.predict(features))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6f6b3090-b656-4afc-b114-3bf1d63eac0d", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['No Fraud']\n" + ] + } + ], + "source": [ + "# %%\n", + "\n", + "features = np.array([[4, 9000.60, 9000.60, 50000.0]])\n", + "print(model.predict(features))" + ] + } + ], + "metadata": { + "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 + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/online-payment-fraud-detection/hello.py b/online-payment-fraud-detection/hello.py new file mode 100644 index 000000000..46fe61575 --- /dev/null +++ b/online-payment-fraud-detection/hello.py @@ -0,0 +1,84 @@ +#%% +import pandas as pd +import numpy as np +data = pd.read_csv("onlinefraud.csv") +data.head() +# %% +data.isnull().sum() +# %% +# Exploring transaction type +data.type.value_counts() +# %% +type = data["type"].value_counts() +transactions = type.index +quantity = type.values + +import plotly.express as px +figure = px.pie(data, + values=quantity, + names=transactions,hole = 0.5, + title="Distribution of Transaction Type") +figure.show() +# %% +# %% +print(data.dtypes) + +# %% +data_numeric = data.select_dtypes(include=[float, int]) + +# %% +data_numeric = data_numeric.dropna() # Drop rows with missing values +# or +data_numeric = data_numeric.fillna(0) # Replace missing values with 0 or another value + +# %% +correlation = data_numeric.corr() +print(correlation["isFraud"].sort_values(ascending=False)) + +# %% +data["type"] = data["type"].map({"CASH_OUT": 1, "PAYMENT": 2, + "CASH_IN": 3, "TRANSFER": 4, + "DEBIT": 5}) +data["isFraud"] = data["isFraud"].map({0: "No Fraud", 1: "Fraud"}) +data.head() +# %% +from sklearn.model_selection import train_test_split +x = np.array(data[["type", "amount", "oldbalanceOrg", "newbalanceOrig"]]) +y = np.array(data[["isFraud"]]) +# %% +# training a machine learning model +from sklearn.tree import DecisionTreeClassifier +xtrain, xtest, ytrain, ytest = train_test_split(x, y, test_size=0.20, random_state=42) +model = DecisionTreeClassifier() +model.fit(xtrain, ytrain) +model.score(xtest, ytest) +# %% +# prediction +#features = [type, amount, oldbalanceOrg, newbalanceOrig] +features = np.array([[4, 9000.60, 9000.60, 0.0]]) +print(model.predict(features)) +# %% +features = np.array([[4, 9000.60, 9000.60, 50000.0]]) +print(model.predict(features)) + + +# %% +# After training your model +from sklearn.tree import DecisionTreeClassifier +from sklearn.model_selection import train_test_split +import numpy as np + +# Your existing model training code +xtrain, xtest, ytrain, ytest = train_test_split(x, y, test_size=0.20, random_state=42) +model = DecisionTreeClassifier() +model.fit(xtrain, ytrain) + +# Save the trained model using pickle +import pickle + +with open("fraud_detection_model.pkl", "wb") as file: + pickle.dump(model, file) + +print("Model saved as fraud_detection_model.pkl") + +# %% From ab8d477b42409322f27fe12a6965278a30775e94 Mon Sep 17 00:00:00 2001 From: mankala sharathchandra <152910893+sharath4444@users.noreply.github.com> Date: Fri, 18 Oct 2024 23:23:24 +0530 Subject: [PATCH 4/4] Create README.md --- online-payment-fraud-detection/README.md | 92 ++++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 online-payment-fraud-detection/README.md diff --git a/online-payment-fraud-detection/README.md b/online-payment-fraud-detection/README.md new file mode 100644 index 000000000..a52739931 --- /dev/null +++ b/online-payment-fraud-detection/README.md @@ -0,0 +1,92 @@ +# Online Payment Fraud Detection System + +This project is an online payment fraud detection system built using Python, a machine learning model (Decision Tree Classifier), and a user-friendly interface using Streamlit. The system predicts whether a transaction is fraudulent or not based on transaction details such as the type of transaction, amount, and balances. + +## Project Overview + +The main goal of this project is to detect potentially fraudulent transactions in real-time. The system allows users to input transaction details, and based on the trained model, it predicts whether the transaction is likely fraudulent or not. + +### Features +- **Transaction Type Selection**: Choose the type of transaction (e.g., CASH_OUT, PAYMENT, etc.). +- **Input Fields**: Enter the amount, the original balance before the transaction, and the new balance after the transaction. +- **Prediction**: The system predicts whether a transaction is fraudulent or not using a pre-trained Decision Tree Classifier. +- **User-Friendly Interface**: Built using Streamlit for easy interaction. + +## Dataset + +The dataset used to train the fraud detection model is `onlinefraud.csv`. The dataset contains multiple features such as transaction type, amount, old balance, new balance, etc., which are used to train the machine learning model. + +## Installation + +To run this project locally, follow these steps: + +### Prerequisites +- Python 3.x +- pip (Python package installer) + +### Clone the Repository + +```bash +git clone https://github.com/sharath4444/online-payment-fraud-detection.git +cd online-payment-fraud-detection +``` + +### Install the Required Packages + +```bash +pip install -r requirements.txt +``` + +### Run the Application + +```bash +streamlit run app.py +``` + +## File Structure + +``` +online-payment-fraud-detection/ +│ +├── app.py # Streamlit app for fraud detection +├── fraud_detection_model.pkl # Pre-trained machine learning model (Decision Tree Classifier) +├── onlinefraud.csv # Dataset used for training the model +├── requirements.txt # Python dependencies +├── README.md # Project documentation +└── demo.gif # Demo of the app (optional) +``` + +## How to Use the Application + +1. Run the app using the command: `streamlit run app.py` +2. Enter the transaction details: + - Select the transaction type (CASH_OUT, PAYMENT, etc.). + - Enter the transaction amount. + - Input the original balance before the transaction and the new balance after. +3. Click the "Predict" button to get the result: + - **Fraud** or **No Fraud** based on the model's prediction. + +## Model Training + +The machine learning model used is a **Decision Tree Classifier**. It was trained on the dataset provided, using features such as: +- Transaction type +- Transaction amount +- Old balance before the transaction +- New balance after the transaction + +The trained model is saved as `fraud_detection_model.pkl` and loaded in the Streamlit app for real-time predictions. + +## Contributing + +Feel free to contribute to this project by submitting issues or pull requests. Any contributions that improve this project are highly appreciated! + +--- + +### Author + +Developed by [sharath](https://github.com/sharath4444). + +## Demo + +![Demo GIF](demo.gif) +![demo png](https://github.com/user-attachments/assets/4d298c01-f978-484c-a427-6a61191d9761)