From 49fa31ac63d793f6b16096b45baeed7199745090 Mon Sep 17 00:00:00 2001 From: liaozhaorun Date: Sat, 15 Feb 2025 23:33:34 +0800 Subject: [PATCH] 2.15 --- code/data/daily_data.py | 1 + code/data/is_st.ipynb | 60 +- code/data/update/update_daily_basic.ipynb | 343 +++--- code/data/update/update_daily_data.ipynb | 1170 ++++++++++----------- code/data/update/update_money_flow.ipynb | 119 +-- code/data/update/update_stk_limit.ipynb | 171 +-- code/train/V1.1.ipynb | 562 +++++----- code/train/V1.2.ipynb | 821 ++++++++------- code/train/V1.ipynb | 473 +++++---- code/train/predictions.csv | 486 --------- code/train/predictions.tsv | 265 ----- code/train/utils/utils.py | 87 ++ code/utils/utils.py | 50 - 13 files changed, 2028 insertions(+), 2580 deletions(-) delete mode 100644 code/train/predictions.csv delete mode 100644 code/train/predictions.tsv create mode 100644 code/train/utils/utils.py delete mode 100644 code/utils/utils.py diff --git a/code/data/daily_data.py b/code/data/daily_data.py index 7e86156..9545597 100644 --- a/code/data/daily_data.py +++ b/code/data/daily_data.py @@ -8,3 +8,4 @@ import time # 读取本地保存的股票列表 CSV 文件(假设文件名为 stocks_data.csv) df = ts.pro_bar(ts_code='000001.SZ', adj='hfq', start_date='20180101') print(df) + diff --git a/code/data/is_st.ipynb b/code/data/is_st.ipynb index efc8c8e..96064a7 100644 --- a/code/data/is_st.ipynb +++ b/code/data/is_st.ipynb @@ -73,13 +73,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "is st...\n", - " ts_code trade_date is_st\n", - "0 688283.SH 20250207 False\n", - "1 002635.SZ 20250207 False\n", - "2 002463.SZ 20250207 False\n", - "3 603959.SH 20250207 False\n", - "4 688361.SH 20250207 False\n" + "is st...\n" ] } ], @@ -100,11 +94,8 @@ " for i in range(len(df)):\n", " sds = df.iloc[i, 2]\n", " eds = df.iloc[i, 3]\n", - " # sd = datetime.strptime(sds, '%Y%m%d')\n", - " if eds == None:\n", - " ed = datetime.now()\n", - " # else:\n", - " # ed = datetime.strptime(eds, '%Y%m%d')\n", + " if eds is None or eds is pd.NaT:\n", + " eds = datetime.now()\n", " if (target_date - sds).days >= 0 and (target_date - eds).days <= 0:\n", " return True\n", " return False\n", @@ -116,11 +107,54 @@ " lambda row: is_st(name_change_dict, row['ts_code'], row['trade_date']), axis=1\n", ")\n", "\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "c74bc633-fc73-48c2-bb44-0a798d2cf070", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Empty DataFrame\n", + "Columns: [ts_code, trade_date, close, turnover_rate, turnover_rate_f, volume_ratio, pe, pe_ttm, pb, ps, ps_ttm, dv_ratio, dv_ttm, total_share, float_share, free_share, total_mv, circ_mv, is_st]\n", + "Index: []\n" + ] + } + ], + "source": [ + "print(daily_basic[(daily_basic['is_st'] != True) & (daily_basic['is_st'] != False)])" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "0464ce15-320c-40d4-b499-2e18bac5910f", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " ts_code trade_date is_st\n", + "0 002512.SZ 20250211 False\n", + "1 600966.SH 20250211 False\n", + "2 600358.SH 20250211 True\n", + "3 002893.SZ 20250211 False\n", + "4 300648.SZ 20250211 False\n" + ] + } + ], + "source": [ "# 保存结果到新的 HDF5 文件\n", "daily_basic.to_hdf('../../data/daily_basic.h5', key='daily_basic', mode='w', format='table')\n", "\n", "# 输出部分结果\n", - "print(daily_basic[['ts_code', 'trade_date', 'is_st']].head())\n" + "print(daily_basic[['ts_code', 'trade_date', 'is_st']].head())" ] }, { diff --git a/code/data/update/update_daily_basic.ipynb b/code/data/update/update_daily_basic.ipynb index 8250c56..7931fe5 100644 --- a/code/data/update/update_daily_basic.ipynb +++ b/code/data/update/update_daily_basic.ipynb @@ -2,6 +2,7 @@ "cells": [ { "cell_type": "code", + "execution_count": 1, "id": "18d1d622-b083-4cc4-a6f8-7c1ed2d0edd2", "metadata": { "ExecuteTime": { @@ -9,22 +10,24 @@ "start_time": "2025-02-11T15:43:53.837662Z" } }, + "outputs": [], "source": [ "import tushare as ts\n", "ts.set_token('3a0741c702ee7e5e5f2bf1f0846bafaafe4e320833240b2a7e4a685f')\n", "pro = ts.pro_api()" - ], - "outputs": [], - "execution_count": 1 + ] }, { + "cell_type": "code", + "execution_count": 2, + "id": "14671a7f72de2564", "metadata": { "ExecuteTime": { "end_time": "2025-02-11T15:53:08.235573Z", "start_time": "2025-02-11T15:53:07.753701Z" } }, - "cell_type": "code", + "outputs": [], "source": [ "from datetime import datetime\n", "import pandas as pd\n", @@ -56,19 +59,38 @@ " st_data = group[(group['change_reason'] == 'ST') | (group['change_reason'] == '*ST')]\n", " if not st_data.empty:\n", " name_change_dict[ts_code] = st_data" - ], - "id": "14671a7f72de2564", - "outputs": [], - "execution_count": 31 + ] }, { + "cell_type": "code", + "execution_count": 3, + "id": "e7f8cce2f80e2f20", "metadata": { "ExecuteTime": { "end_time": "2025-02-11T15:53:19.812860Z", "start_time": "2025-02-11T15:53:09.614377Z" } }, - "cell_type": "code", + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Index: 8291970 entries, 0 to 8291969\n", + "Data columns (total 2 columns):\n", + " # Column Dtype \n", + "--- ------ ----- \n", + " 0 ts_code object\n", + " 1 trade_date object\n", + "dtypes: object(2)\n", + "memory usage: 189.8+ MB\n", + "None\n", + "20250211\n", + "20250212\n" + ] + } + ], "source": [ "import time\n", "from concurrent.futures import ThreadPoolExecutor, as_completed\n", @@ -87,40 +109,34 @@ "trade_dates = trade_cal[trade_cal['cal_date'] > max_date]['cal_date'].tolist()\n", "start_date = min(trade_dates)\n", "print(start_date)" - ], - "id": "e7f8cce2f80e2f20", + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "553cfb36-f560-4cc4-b2bc-68323ccc5072", + "metadata": { + "ExecuteTime": { + "end_time": "2025-02-11T15:53:24.100612Z", + "start_time": "2025-02-11T15:53:22.361257Z" + }, + "scrolled": true + }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "\n", - "Index: 8295494 entries, 0 to 8295493\n", - "Data columns (total 2 columns):\n", - " # Column Dtype \n", - "--- ------ ----- \n", - " 0 ts_code object\n", - " 1 trade_date object\n", - "dtypes: object(2)\n", - "memory usage: 189.9+ MB\n", - "None\n", - "20250210\n", - "20250211\n" + "任务 20250220 完成\n", + "任务 20250219 完成\n", + "任务 20250217 完成\n", + "任务 20250218 完成\n", + "任务 20250214 完成\n", + "任务 20250213 完成\n", + "任务 20250212 完成\n" ] } ], - "execution_count": 32 - }, - { - "cell_type": "code", - "id": "553cfb36-f560-4cc4-b2bc-68323ccc5072", - "metadata": { - "scrolled": true, - "ExecuteTime": { - "end_time": "2025-02-11T15:53:24.100612Z", - "start_time": "2025-02-11T15:53:22.361257Z" - } - }, "source": [ "\n", "\n", @@ -170,189 +186,169 @@ " # 重置批次起始时间\n", " batch_start_time = time.time()\n", "\n" - ], - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "任务 20250220 完成\n", - "任务 20250219 完成\n", - "任务 20250218 完成\n", - "任务 20250217 完成\n", - "任务 20250214 完成\n", - "任务 20250213 完成\n", - "任务 20250212 完成\n", - "任务 20250211 完成\n" - ] - } - ], - "execution_count": 33 + ] }, { + "cell_type": "code", + "execution_count": 5, + "id": "919023c693d7a47a", "metadata": { "ExecuteTime": { "end_time": "2025-02-11T15:53:25.913933Z", "start_time": "2025-02-11T15:53:25.902629Z" } }, - "cell_type": "code", - "source": [ - "all_daily_data_df = pd.concat(all_daily_data, ignore_index=True)\n", - "print(all_daily_data_df)" - ], - "id": "919023c693d7a47a", "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " ts_code trade_date close turnover_rate turnover_rate_f \\\n", - "0 002512.SZ 20250211 5.03 5.9759 7.8713 \n", - "1 600966.SH 20250211 4.83 0.6904 1.3494 \n", - "2 600358.SH 20250211 3.68 8.5826 11.3780 \n", - "3 002893.SZ 20250211 9.73 1.9217 2.6415 \n", - "4 300648.SZ 20250211 22.90 1.7775 2.3188 \n", + "0 601162.SH 20250212 4.77 7.3760 9.7054 \n", + "1 603216.SH 20250212 11.42 8.8711 8.8711 \n", + "2 872808.BJ 20250212 74.36 4.1219 15.3296 \n", + "3 601881.SH 20250212 14.43 0.5617 1.9533 \n", + "4 002837.SZ 20250212 42.25 3.8199 5.7136 \n", "... ... ... ... ... ... \n", - "5380 300886.SZ 20250211 21.80 8.9341 13.4176 \n", - "5381 600050.SH 20250211 5.48 2.3899 5.6722 \n", - "5382 300149.SZ 20250211 6.73 3.5271 5.3077 \n", - "5383 002197.SZ 20250211 4.42 4.0058 4.6595 \n", - "5384 688270.SH 20250211 37.34 2.9212 2.9212 \n", + "5380 603931.SH 20250212 23.83 1.4692 4.6843 \n", + "5381 688567.SH 20250212 12.35 1.3091 2.1970 \n", + "5382 688530.SH 20250212 19.30 6.6093 6.6093 \n", + "5383 301363.SZ 20250212 31.99 2.1990 2.1990 \n", + "5384 833533.BJ 20250212 46.02 27.7269 27.7597 \n", "\n", " volume_ratio pe pe_ttm pb ps ps_ttm dv_ratio \\\n", - "0 0.87 NaN NaN 12.8888 2.9340 3.0625 0.0000 \n", - "1 1.16 35.5101 15.2315 0.9534 0.3454 0.3402 0.5633 \n", - "2 1.38 NaN NaN 15.2661 3.4220 4.2041 0.0000 \n", - "3 0.85 48.9883 41.5405 2.2074 2.3641 2.3637 0.8222 \n", - "4 0.69 NaN NaN 4.1442 3.7325 3.3186 0.0000 \n", + "0 2.00 134.5633 NaN 1.7935 12.0634 19.0461 0.0000 \n", + "1 2.09 26.5657 27.5224 1.4454 1.9304 1.9996 2.6270 \n", + "2 1.20 142.3485 196.0315 22.9124 22.8711 25.8281 NaN \n", + "3 0.84 20.0264 15.5707 1.4245 4.6898 4.4609 2.1067 \n", + "4 0.65 91.3544 64.5935 11.2259 8.9056 7.2600 0.3621 \n", "... ... ... ... ... ... ... ... \n", - "5380 3.00 NaN 111.0678 2.9043 6.0326 4.9204 0.0000 \n", - "5381 1.15 21.3231 19.5079 1.0668 0.4677 0.4574 2.6625 \n", - "5382 1.34 NaN NaN 2.5009 2.9440 3.3158 0.0000 \n", - "5383 1.41 NaN NaN 1.1195 2.0851 2.5837 0.0000 \n", - "5384 0.75 110.2738 170.0477 3.7594 28.4642 27.3030 NaN \n", + "5380 1.16 27.1631 29.0662 3.0982 6.8392 6.9124 1.1120 \n", + "5381 1.01 NaN NaN 1.4955 0.9183 1.0469 NaN \n", + "5382 0.99 62.5995 198.4906 3.6879 6.4857 7.9319 NaN \n", + "5383 0.98 41.5226 47.9900 3.8396 9.7258 8.9664 0.4982 \n", + "5384 0.84 52.3997 62.1858 13.3582 6.6261 5.9638 NaN \n", "\n", - " dv_ttm total_share float_share free_share total_mv \\\n", - "0 NaN 1.147095e+05 1.048455e+05 7.959795e+04 5.769885e+05 \n", - "1 0.5633 1.336844e+05 1.336844e+05 6.839785e+04 6.456958e+05 \n", - "2 NaN 5.049367e+04 5.049367e+04 3.808829e+04 1.858167e+05 \n", - "3 0.8222 2.636400e+04 2.027786e+04 1.475173e+04 2.565217e+05 \n", - "4 NaN 1.477839e+04 1.061894e+04 8.140048e+03 3.384251e+05 \n", - "... ... ... ... ... ... \n", - "5380 NaN 7.455500e+03 4.346405e+03 2.894040e+03 1.625299e+05 \n", - "5381 2.6625 3.180058e+06 3.128014e+06 1.317969e+06 1.742672e+07 \n", - "5382 NaN 4.979640e+04 4.970844e+04 3.303210e+04 3.351298e+05 \n", - "5383 NaN 6.143629e+04 5.340007e+04 4.590857e+04 2.715484e+05 \n", - "5384 NaN 2.140516e+04 1.442317e+04 1.442317e+04 7.992687e+05 \n", + " dv_ttm total_share float_share free_share total_mv \\\n", + "0 NaN 8.665757e+05 866575.7464 658594.7570 4.133566e+06 \n", + "1 2.6270 2.226900e+04 5669.0000 5669.0000 2.543120e+05 \n", + "2 NaN 2.000000e+04 19461.9464 5233.0650 1.487200e+06 \n", + "3 2.1067 1.093440e+06 724341.7623 208280.6759 1.577834e+07 \n", + "4 0.3621 7.438227e+04 64662.2002 43230.4691 3.142651e+06 \n", + "... ... ... ... ... ... \n", + "5380 1.1120 1.995584e+04 19955.8380 6258.8392 4.755476e+05 \n", + "5381 NaN 1.222104e+05 122210.3885 72818.9706 1.509298e+06 \n", + "5382 NaN 1.600448e+04 3200.8966 3200.8966 3.088865e+05 \n", + "5383 0.4982 4.066600e+04 11215.9100 11215.9100 1.300905e+06 \n", + "5384 NaN 1.005826e+04 3796.0235 3791.5280 4.628809e+05 \n", "\n", " circ_mv is_st \n", - "0 5.273728e+05 False \n", - "1 6.456958e+05 False \n", - "2 1.858167e+05 True \n", - "3 1.973036e+05 False \n", - "4 2.431738e+05 False \n", + "0 4.133566e+06 False \n", + "1 6.473998e+04 False \n", + "2 1.447190e+06 False \n", + "3 1.045225e+07 False \n", + "4 2.731978e+06 False \n", "... ... ... \n", - "5380 9.475163e+04 False \n", - "5381 1.714152e+07 False \n", - "5382 3.345378e+05 False \n", - "5383 2.360283e+05 True \n", - "5384 5.385612e+05 False \n", + "5380 4.755476e+05 False \n", + "5381 1.509298e+06 False \n", + "5382 6.177730e+04 False \n", + "5383 3.587970e+05 False \n", + "5384 1.746930e+05 False \n", "\n", "[5385 rows x 19 columns]\n" ] } ], - "execution_count": 34 + "source": [ + "all_daily_data_df = pd.concat(all_daily_data, ignore_index=True)\n", + "print(all_daily_data_df)" + ] }, { + "cell_type": "code", + "execution_count": 6, + "id": "28cb78d032671b20", "metadata": { "ExecuteTime": { "end_time": "2025-02-11T15:53:42.062142Z", "start_time": "2025-02-11T15:53:42.044324Z" } }, - "cell_type": "code", - "source": "print(all_daily_data_df[all_daily_data_df['is_st']])", - "id": "28cb78d032671b20", "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " ts_code trade_date close turnover_rate turnover_rate_f \\\n", - "2 600358.SH 20250211 3.68 8.5826 11.3780 \n", - "20 000889.SZ 20250211 2.48 2.0846 2.8167 \n", - "50 603879.SH 20250211 3.58 1.7126 2.7285 \n", - "62 002024.SZ 20250211 1.99 0.2997 0.8575 \n", - "65 600078.SH 20250211 5.77 1.0536 1.8102 \n", + "10 002366.SZ 20250212 5.10 3.8029 4.1742 \n", + "48 002124.SZ 20250212 2.80 1.8388 1.9195 \n", + "57 000504.SZ 20250212 9.32 0.9666 1.5370 \n", + "63 603007.SH 20250212 10.03 2.0477 2.7581 \n", + "91 300201.SZ 20250212 5.33 2.3317 3.1604 \n", "... ... ... ... ... ... \n", - "5327 688309.SH 20250211 13.80 0.5594 1.0928 \n", - "5328 002800.SZ 20250211 10.57 2.0449 3.9025 \n", - "5342 300368.SZ 20250211 4.50 1.5755 2.2505 \n", - "5375 600515.SH 20250211 3.64 0.4111 0.6804 \n", - "5383 002197.SZ 20250211 4.42 4.0058 4.6595 \n", + "5303 002316.SZ 20250212 3.52 3.1023 3.3580 \n", + "5335 600568.SH 20250212 1.30 0.3996 0.6514 \n", + "5364 002168.SZ 20250212 2.48 0.8869 1.0824 \n", + "5367 300600.SZ 20250212 7.19 0.7517 1.4024 \n", + "5369 000972.SZ 20250212 3.38 4.6979 7.2993 \n", "\n", - " volume_ratio pe pe_ttm pb ps ps_ttm dv_ratio \\\n", - "2 1.38 NaN NaN 15.2661 3.4220 4.2041 0.0000 \n", - "20 1.08 NaN NaN 20.6126 1.6250 1.6047 0.0000 \n", - "50 1.08 NaN NaN 3.4116 3.8093 3.5391 0.0000 \n", - "62 1.01 NaN NaN 1.5246 0.2944 0.3546 0.0000 \n", - "65 0.97 NaN NaN 2.1866 1.2329 1.2311 0.5373 \n", - "... ... ... ... ... ... ... ... \n", - "5327 0.73 60.8452 186.0174 1.5353 6.7361 13.4432 NaN \n", - "5328 0.72 NaN NaN 3.0468 1.6938 1.3629 0.0000 \n", - "5342 0.99 NaN NaN 7.1301 6.7544 11.8519 0.0000 \n", - "5375 0.91 43.6494 110.6536 1.7765 6.1506 7.8214 0.0000 \n", - "5383 1.41 NaN NaN 1.1195 2.0851 2.5837 0.0000 \n", + " volume_ratio pe pe_ttm pb ps ps_ttm dv_ratio \\\n", + "10 0.92 52.0324 56.8856 2.2889 14.2486 11.9214 0.0000 \n", + "48 0.97 NaN 260.7218 1.7484 0.6080 0.6154 0.0000 \n", + "57 0.83 NaN NaN 12.3702 22.4855 24.7156 0.0000 \n", + "63 0.86 NaN NaN 24.6750 55.2244 76.4853 0.0000 \n", + "91 0.75 26.1255 26.1088 4.2311 3.9774 4.2028 0.6431 \n", + "... ... ... ... ... ... ... ... \n", + "5303 0.95 NaN NaN 19.4146 2.2930 2.3153 0.0000 \n", + "5335 0.76 NaN NaN 1.1378 4.0571 4.0379 0.0000 \n", + "5364 0.88 1024.9794 NaN NaN 7.6515 7.4299 0.0000 \n", + "5367 1.18 NaN NaN 2.2914 10.7845 8.9952 0.0000 \n", + "5369 0.77 24.0853 120.2360 16.2931 4.5277 4.9137 0.0000 \n", "\n", - " dv_ttm total_share float_share free_share total_mv \\\n", - "2 NaN 5.049367e+04 50493.6660 38088.2934 1.858167e+05 \n", - "20 NaN 9.362911e+04 86984.9676 64375.7658 2.322002e+05 \n", - "50 NaN 3.593444e+04 35934.4440 22555.6496 1.286453e+05 \n", - "62 NaN 9.264768e+05 919834.5068 321453.1001 1.843689e+06 \n", - "65 0.5373 6.625729e+04 66257.2861 38563.8247 3.823045e+05 \n", - "... ... ... ... ... ... \n", - "5327 NaN 8.001073e+03 8001.0733 4095.6641 1.104148e+05 \n", - "5328 NaN 1.522531e+04 14165.4100 7422.5200 1.609315e+05 \n", - "5342 NaN 5.289435e+04 52894.3475 37030.2475 2.380246e+05 \n", - "5375 NaN 1.142531e+06 917601.2508 554411.0843 4.158813e+06 \n", - "5383 NaN 6.143629e+04 53400.0687 45908.5733 2.715484e+05 \n", + " dv_ttm total_share float_share free_share total_mv \\\n", + "10 NaN 208093.7640 125646.4390 114472.2056 1.061278e+06 \n", + "48 NaN 222193.3832 197428.3498 189130.4452 6.221415e+05 \n", + "57 NaN 33002.3098 31066.8701 19536.7046 3.075815e+05 \n", + "63 NaN 87689.6101 49983.0778 37108.5778 8.795268e+05 \n", + "91 0.6431 100904.3607 100450.7422 74110.3317 5.378202e+05 \n", + "... ... ... ... ... ... \n", + "5303 NaN 39312.0000 31500.7500 29101.6694 1.383782e+05 \n", + "5335 NaN 199286.9681 166906.7279 102374.4773 2.590731e+05 \n", + "5364 NaN 78416.3368 78416.3368 64258.0991 1.944725e+05 \n", + "5367 NaN 29423.4480 24616.3436 13195.4382 2.115546e+05 \n", + "5369 NaN 77128.3579 77128.3579 49641.0760 2.606938e+05 \n", "\n", - " circ_mv is_st \n", - "2 1.858167e+05 True \n", - "20 2.157227e+05 True \n", - "50 1.286453e+05 True \n", - "62 1.830471e+06 True \n", - "65 3.823045e+05 True \n", - "... ... ... \n", - "5327 1.104148e+05 True \n", - "5328 1.497284e+05 True \n", - "5342 2.380246e+05 True \n", - "5375 3.340069e+06 True \n", - "5383 2.360283e+05 True \n", + " circ_mv is_st \n", + "10 640796.8389 True \n", + "48 552799.3794 True \n", + "57 289543.2293 True \n", + "63 501330.2703 True \n", + "91 535402.4559 True \n", + "... ... ... \n", + "5303 110882.6400 True \n", + "5335 216978.7463 True \n", + "5364 194472.5153 True \n", + "5367 176991.5105 True \n", + "5369 260693.8497 True \n", "\n", "[318 rows x 19 columns]\n" ] } ], - "execution_count": 37 + "source": [ + "print(all_daily_data_df[all_daily_data_df['is_st']])" + ] }, { + "cell_type": "code", + "execution_count": 7, + "id": "692b58674b7462c9", "metadata": { "ExecuteTime": { "end_time": "2025-02-11T15:53:33.693894Z", "start_time": "2025-02-11T15:53:33.609884Z" } }, - "cell_type": "code", - "source": [ - "# 将数据保存为 HDF5 文件(table 格式)\n", - "all_daily_data_df.to_hdf(h5_filename, key='daily_basic', mode='a', format='table', append=True, data_columns=True)\n", - "\n", - "print(\"所有每日基础数据获取并保存完毕!\")\n" - ], - "id": "692b58674b7462c9", "outputs": [ { "name": "stdout", @@ -362,29 +358,30 @@ ] } ], - "execution_count": 36 + "source": [ + "# 将数据保存为 HDF5 文件(table 格式)\n", + "all_daily_data_df.to_hdf(h5_filename, key='daily_basic', mode='a', format='table', append=True, data_columns=True)\n", + "\n", + "print(\"所有每日基础数据获取并保存完毕!\")\n" + ] }, { + "cell_type": "code", + "execution_count": 8, + "id": "d7a773fc20293477", "metadata": { "ExecuteTime": { "end_time": "2025-02-11T15:54:27.868021Z", "start_time": "2025-02-11T15:54:18.853803Z" } }, - "cell_type": "code", - "source": [ - "with pd.HDFStore(h5_filename, mode='r') as store:\n", - " df = store[key][['ts_code', 'trade_date', 'is_st']]\n", - " print(df.info())" - ], - "id": "d7a773fc20293477", "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", - "Index: 8300879 entries, 0 to 5384\n", + "Index: 8297355 entries, 0 to 5384\n", "Data columns (total 3 columns):\n", " # Column Dtype \n", "--- ------ ----- \n", @@ -392,12 +389,16 @@ " 1 trade_date object\n", " 2 is_st bool \n", "dtypes: bool(1), object(2)\n", - "memory usage: 197.9+ MB\n", + "memory usage: 197.8+ MB\n", "None\n" ] } ], - "execution_count": 39 + "source": [ + "with pd.HDFStore(h5_filename, mode='r') as store:\n", + " df = store[key][['ts_code', 'trade_date', 'is_st']]\n", + " print(df.info())" + ] } ], "metadata": { diff --git a/code/data/update/update_daily_data.ipynb b/code/data/update/update_daily_data.ipynb index 0a90101..3842626 100644 --- a/code/data/update/update_daily_data.ipynb +++ b/code/data/update/update_daily_data.ipynb @@ -2,6 +2,7 @@ "cells": [ { "cell_type": "code", + "execution_count": 1, "id": "f294ba92-512a-48e6-bbaa-e19401c691ba", "metadata": { "ExecuteTime": { @@ -9,6 +10,7 @@ "start_time": "2025-02-11T15:36:57.077187Z" } }, + "outputs": [], "source": [ "import tushare as ts\n", "import pandas as pd\n", @@ -16,35 +18,18 @@ "\n", "ts.set_token('3a0741c702ee7e5e5f2bf1f0846bafaafe4e320833240b2a7e4a685f')\n", "pro = ts.pro_api()" - ], - "outputs": [], - "execution_count": 2 + ] }, { + "cell_type": "code", + "execution_count": 2, + "id": "d31855fab4f8b1bc", "metadata": { "ExecuteTime": { "end_time": "2025-02-11T15:59:48.844910Z", "start_time": "2025-02-11T15:59:40.161163Z" } }, - "cell_type": "code", - "source": [ - "h5_filename = '../../../data/daily_data.h5'\n", - "key = '/daily_data'\n", - "max_date = None\n", - "with pd.HDFStore(h5_filename, mode='r') as store:\n", - " df = store[key][['ts_code', 'trade_date']]\n", - " print(df.info())\n", - " max_date = df['trade_date'].max()\n", - "\n", - "print(max_date)\n", - "trade_cal = pro.trade_cal(exchange='', start_date='20170101', end_date='20250220')\n", - "trade_cal = trade_cal[trade_cal['is_open'] == 1] # 只保留交易日\n", - "trade_dates = trade_cal[trade_cal['cal_date'] > max_date]['cal_date'].tolist()\n", - "start_date = min(trade_dates)\n", - "print(start_date)" - ], - "id": "d31855fab4f8b1bc", "outputs": [ { "name": "stdout", @@ -65,72 +50,43 @@ ] } ], - "execution_count": 7 + "source": [ + "h5_filename = '../../../data/daily_data.h5'\n", + "key = '/daily_data'\n", + "max_date = None\n", + "with pd.HDFStore(h5_filename, mode='r') as store:\n", + " df = store[key][['ts_code', 'trade_date']]\n", + " print(df.info())\n", + " max_date = df['trade_date'].max()\n", + "\n", + "print(max_date)\n", + "trade_cal = pro.trade_cal(exchange='', start_date='20170101', end_date='20250220')\n", + "trade_cal = trade_cal[trade_cal['is_open'] == 1] # 只保留交易日\n", + "trade_dates = trade_cal[trade_cal['cal_date'] > max_date]['cal_date'].tolist()\n", + "start_date = min(trade_dates)\n", + "print(start_date)" + ] }, { + "cell_type": "code", + "execution_count": 3, + "id": "f403cc963e1d39b", "metadata": { "ExecuteTime": { "end_time": "2025-02-11T15:56:25.103931Z", "start_time": "2025-02-11T15:37:54.637983Z" - } + }, + "scrolled": true }, - "cell_type": "code", - "source": [ - "from concurrent.futures import ThreadPoolExecutor, as_completed\n", - "\n", - "# 读取本地保存的股票列表 CSV 文件(假设文件名为 stocks_data.csv)\n", - "stocks_df = pd.read_csv('../../../stocks_list.csv', encoding='utf-8-sig')\n", - "\n", - "# 用于存放所有股票的日线数据(每次获取的 DataFrame)\n", - "daily_data_list = []\n", - "\n", - "# API 调用计数和时间控制变量\n", - "api_call_count = 0\n", - "batch_start_time = time.time()\n", - "\n", - "\n", - "def get_data(ts_code):\n", - " daily_data = ts.pro_bar(ts_code=ts_code, adj='hfq', start_date=start_date)\n", - " # 如果返回数据不为空,则添加一列标识股票代码\n", - " if daily_data is not None and not daily_data.empty:\n", - " return daily_data\n", - "\n", - "\n", - "# 循环遍历每个股票代码并获取数据\n", - "with ThreadPoolExecutor(max_workers=2) as executor:\n", - " future_to_date = {executor.submit(get_data, row['ts_code']): row['ts_code'] for idx, row in stocks_df.iterrows()}\n", - "\n", - " for future in as_completed(future_to_date):\n", - " ts_code = future_to_date[future]\n", - " try:\n", - " result = future.result()\n", - " daily_data_list.append(result)\n", - " print(f\"任务 {ts_code} 完成\")\n", - " except Exception as e:\n", - " print(f\"获取 {ts_code} 数据时出错: {e}\")\n", - " # 计数一次 API 调用\n", - " api_call_count += 1\n", - "\n", - " # 每调用300次,检查时间是否少于1分钟,如果少于则等待剩余时间\n", - " if api_call_count % 300 == 0:\n", - " elapsed = time.time() - batch_start_time\n", - " if elapsed < 60:\n", - " sleep_time = 60 - elapsed\n", - " print(f\"已调用300次API,等待 {sleep_time:.2f} 秒以满足速率限制...\")\n", - " time.sleep(sleep_time)\n", - " # 重置批次起始时间\n", - " batch_start_time = time.time()\n" - ], - "id": "f403cc963e1d39b", "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "任务 000001.SZ 完成\n", "任务 000002.SZ 完成\n", - "任务 000004.SZ 完成\n", + "任务 000001.SZ 完成\n", "任务 000006.SZ 完成\n", + "任务 000004.SZ 完成\n", "任务 000007.SZ 完成\n", "任务 000008.SZ 完成\n", "任务 000009.SZ 完成\n", @@ -205,8 +161,8 @@ "任务 000411.SZ 完成\n", "任务 000415.SZ 完成\n", "任务 000417.SZ 完成\n", - "任务 000419.SZ 完成\n", "任务 000420.SZ 完成\n", + "任务 000419.SZ 完成\n", "任务 000421.SZ 完成\n", "任务 000422.SZ 完成\n", "任务 000423.SZ 完成\n", @@ -220,8 +176,8 @@ "任务 000501.SZ 完成\n", "任务 000503.SZ 完成\n", "任务 000504.SZ 完成\n", - "任务 000506.SZ 完成\n", "任务 000505.SZ 完成\n", + "任务 000506.SZ 完成\n", "任务 000507.SZ 完成\n", "任务 000509.SZ 完成\n", "任务 000510.SZ 完成\n", @@ -229,28 +185,28 @@ "任务 000514.SZ 完成\n", "任务 000516.SZ 完成\n", "任务 000517.SZ 完成\n", - "任务 000518.SZ 完成\n", "任务 000519.SZ 完成\n", + "任务 000518.SZ 完成\n", + "任务 000521.SZ 完成\n", "任务 000520.SZ 完成\n", "任务 000523.SZ 完成\n", - "任务 000521.SZ 完成\n", - "任务 000525.SZ 完成\n", "任务 000524.SZ 完成\n", + "任务 000525.SZ 完成\n", "任务 000526.SZ 完成\n", - "任务 000528.SZ 完成\n", - "任务 000530.SZ 完成\n", "任务 000529.SZ 完成\n", + "任务 000528.SZ 完成\n", "任务 000531.SZ 完成\n", + "任务 000530.SZ 完成\n", "任务 000532.SZ 完成\n", "任务 000533.SZ 完成\n", - "任务 000534.SZ 完成\n", "任务 000536.SZ 完成\n", - "任务 000537.SZ 完成\n", + "任务 000534.SZ 完成\n", "任务 000538.SZ 完成\n", - "任务 000539.SZ 完成\n", + "任务 000537.SZ 完成\n", "任务 000541.SZ 完成\n", - "任务 000543.SZ 完成\n", + "任务 000539.SZ 完成\n", "任务 000544.SZ 完成\n", + "任务 000543.SZ 完成\n", "任务 000545.SZ 完成\n", "任务 000546.SZ 完成\n", "任务 000547.SZ 完成\n", @@ -281,22 +237,22 @@ "任务 000582.SZ 完成\n", "任务 000584.SZ 完成\n", "任务 000586.SZ 完成\n", - "任务 000589.SZ 完成\n", "任务 000590.SZ 完成\n", - "任务 000591.SZ 完成\n", + "任务 000589.SZ 完成\n", "任务 000592.SZ 完成\n", - "任务 000593.SZ 完成\n", + "任务 000591.SZ 完成\n", "任务 000595.SZ 完成\n", - "任务 000596.SZ 完成\n", + "任务 000593.SZ 完成\n", "任务 000597.SZ 完成\n", - "任务 000598.SZ 完成\n", + "任务 000596.SZ 完成\n", "任务 000599.SZ 完成\n", - "任务 000600.SZ 完成\n", + "任务 000598.SZ 完成\n", "任务 000601.SZ 完成\n", + "任务 000600.SZ 完成\n", "任务 000603.SZ 完成\n", "任务 000605.SZ 完成\n", - "任务 000607.SZ 完成\n", "任务 000608.SZ 完成\n", + "任务 000607.SZ 完成\n", "任务 000609.SZ 完成\n", "任务 000610.SZ 完成\n", "任务 000612.SZ 完成\n", @@ -305,12 +261,12 @@ "任务 000619.SZ 完成\n", "任务 000620.SZ 完成\n", "任务 000622.SZ 完成\n", - "任务 000623.SZ 完成\n", "任务 000625.SZ 完成\n", + "任务 000623.SZ 完成\n", "任务 000626.SZ 完成\n", "任务 000627.SZ 完成\n", - "任务 000628.SZ 完成\n", "任务 000629.SZ 完成\n", + "任务 000628.SZ 完成\n", "任务 000630.SZ 完成\n", "任务 000631.SZ 完成\n", "任务 000632.SZ 完成\n", @@ -339,18 +295,18 @@ "任务 000678.SZ 完成\n", "任务 000679.SZ 完成\n", "任务 000680.SZ 完成\n", - "任务 000681.SZ 完成\n", "任务 000682.SZ 完成\n", + "任务 000681.SZ 完成\n", "任务 000683.SZ 完成\n", "任务 000685.SZ 完成\n", "任务 000686.SZ 完成\n", "任务 000688.SZ 完成\n", "任务 000690.SZ 完成\n", "任务 000691.SZ 完成\n", - "任务 000692.SZ 完成\n", "任务 000695.SZ 完成\n", - "任务 000698.SZ 完成\n", + "任务 000692.SZ 完成\n", "任务 000697.SZ 完成\n", + "任务 000698.SZ 完成\n", "任务 000700.SZ 完成\n", "任务 000701.SZ 完成\n", "任务 000702.SZ 完成\n", @@ -361,10 +317,10 @@ "任务 000709.SZ 完成\n", "任务 000710.SZ 完成\n", "任务 000711.SZ 完成\n", - "任务 000713.SZ 完成\n", "任务 000712.SZ 完成\n", - "任务 000716.SZ 完成\n", + "任务 000713.SZ 完成\n", "任务 000715.SZ 完成\n", + "任务 000716.SZ 完成\n", "任务 000717.SZ 完成\n", "任务 000718.SZ 完成\n", "任务 000719.SZ 完成\n", @@ -379,16 +335,16 @@ "任务 000729.SZ 完成\n", "任务 000731.SZ 完成\n", "任务 000733.SZ 完成\n", - "任务 000735.SZ 完成\n", "任务 000736.SZ 完成\n", + "任务 000735.SZ 完成\n", "任务 000737.SZ 完成\n", "任务 000738.SZ 完成\n", - "任务 000750.SZ 完成\n", "任务 000739.SZ 完成\n", + "任务 000750.SZ 完成\n", "任务 000751.SZ 完成\n", "任务 000752.SZ 完成\n", - "任务 000755.SZ 完成\n", "任务 000753.SZ 完成\n", + "任务 000755.SZ 完成\n", "任务 000756.SZ 完成\n", "任务 000757.SZ 完成\n", "任务 000758.SZ 完成\n", @@ -407,6 +363,7 @@ "任务 000785.SZ 完成\n", "任务 000786.SZ 完成\n", "任务 000788.SZ 完成\n", + "任务 000789.SZ 完成\n", "任务 000790.SZ 完成\n", "任务 000791.SZ 完成\n", "任务 000792.SZ 完成\n", @@ -419,9 +376,7 @@ "任务 000800.SZ 完成\n", "任务 000801.SZ 完成\n", "任务 000802.SZ 完成\n", - "\"None of [Index(['trade_date', 'adj_factor'], dtype='object')] are in the [columns]\"\n", "任务 000803.SZ 完成\n", - "任务 000789.SZ 完成\n", "任务 000807.SZ 完成\n", "任务 000809.SZ 完成\n", "任务 000810.SZ 完成\n", @@ -466,8 +421,8 @@ "任务 000881.SZ 完成\n", "任务 000882.SZ 完成\n", "任务 000883.SZ 完成\n", - "任务 000885.SZ 完成\n", "任务 000886.SZ 完成\n", + "任务 000885.SZ 完成\n", "任务 000887.SZ 完成\n", "任务 000888.SZ 完成\n", "任务 000889.SZ 完成\n", @@ -531,16 +486,16 @@ "任务 000970.SZ 完成\n", "任务 000972.SZ 完成\n", "任务 000973.SZ 完成\n", - "任务 000975.SZ 完成\n", "任务 000977.SZ 完成\n", + "任务 000975.SZ 完成\n", "任务 000978.SZ 完成\n", "任务 000980.SZ 完成\n", "任务 000981.SZ 完成\n", "任务 000983.SZ 完成\n", "任务 000985.SZ 完成\n", "任务 000987.SZ 完成\n", - "任务 000988.SZ 完成\n", "任务 000989.SZ 完成\n", + "任务 000988.SZ 完成\n", "任务 000990.SZ 完成\n", "任务 000993.SZ 完成\n", "任务 000995.SZ 完成\n", @@ -552,10 +507,10 @@ "任务 001203.SZ 完成\n", "任务 001205.SZ 完成\n", "任务 001206.SZ 完成\n", - "任务 001208.SZ 完成\n", "任务 001207.SZ 完成\n", - "任务 001210.SZ 完成\n", + "任务 001208.SZ 完成\n", "任务 001209.SZ 完成\n", + "任务 001210.SZ 完成\n", "任务 001211.SZ 完成\n", "任务 001212.SZ 完成\n", "任务 001213.SZ 完成\n", @@ -588,16 +543,16 @@ "任务 001269.SZ 完成\n", "任务 001270.SZ 完成\n", "任务 001277.SZ 完成\n", - "任务 001278.SZ 完成\n", "任务 001279.SZ 完成\n", + "任务 001278.SZ 完成\n", "任务 001282.SZ 完成\n", "任务 001283.SZ 完成\n", - "任务 001287.SZ 完成\n", "任务 001286.SZ 完成\n", - "任务 001288.SZ 完成\n", + "任务 001287.SZ 完成\n", "任务 001289.SZ 完成\n", - "任务 001296.SZ 完成\n", + "任务 001288.SZ 完成\n", "任务 001298.SZ 完成\n", + "任务 001296.SZ 完成\n", "任务 001299.SZ 完成\n", "任务 001300.SZ 完成\n", "任务 001301.SZ 完成\n", @@ -616,8 +571,8 @@ "任务 001324.SZ 完成\n", "任务 001326.SZ 完成\n", "任务 001328.SZ 完成\n", - "任务 001331.SZ 完成\n", "任务 001330.SZ 完成\n", + "任务 001331.SZ 完成\n", "任务 001332.SZ 完成\n", "任务 001333.SZ 完成\n", "任务 001336.SZ 完成\n", @@ -628,10 +583,10 @@ "任务 001358.SZ 完成\n", "任务 001359.SZ 完成\n", "任务 001360.SZ 完成\n", - "任务 001367.SZ 完成\n", "任务 001366.SZ 完成\n", - "任务 001373.SZ 完成\n", + "任务 001367.SZ 完成\n", "任务 001368.SZ 完成\n", + "任务 001373.SZ 完成\n", "任务 001376.SZ 完成\n", "任务 001378.SZ 完成\n", "任务 001379.SZ 完成\n", @@ -662,10 +617,10 @@ "任务 002016.SZ 完成\n", "任务 002017.SZ 完成\n", "任务 002019.SZ 完成\n", - "任务 002021.SZ 完成\n", "任务 002020.SZ 完成\n", - "任务 002023.SZ 完成\n", + "任务 002021.SZ 完成\n", "任务 002022.SZ 完成\n", + "任务 002023.SZ 完成\n", "任务 002024.SZ 完成\n", "任务 002025.SZ 完成\n", "任务 002026.SZ 完成\n", @@ -691,12 +646,12 @@ "任务 002046.SZ 完成\n", "任务 002047.SZ 完成\n", "任务 002048.SZ 完成\n", - "任务 002050.SZ 完成\n", "任务 002049.SZ 完成\n", - "任务 002052.SZ 完成\n", + "任务 002050.SZ 完成\n", "任务 002051.SZ 完成\n", - "任务 002054.SZ 完成\n", + "任务 002052.SZ 完成\n", "任务 002053.SZ 完成\n", + "任务 002054.SZ 完成\n", "任务 002055.SZ 完成\n", "任务 002056.SZ 完成\n", "任务 002057.SZ 完成\n", @@ -745,8 +700,8 @@ "任务 002104.SZ 完成\n", "任务 002105.SZ 完成\n", "任务 002106.SZ 完成\n", - "任务 002108.SZ 完成\n", "任务 002107.SZ 完成\n", + "任务 002108.SZ 完成\n", "任务 002109.SZ 完成\n", "任务 002110.SZ 完成\n", "任务 002111.SZ 完成\n", @@ -761,16 +716,16 @@ "任务 002122.SZ 完成\n", "任务 002123.SZ 完成\n", "任务 002124.SZ 完成\n", - "任务 002126.SZ 完成\n", "任务 002125.SZ 完成\n", + "任务 002126.SZ 完成\n", "任务 002127.SZ 完成\n", "任务 002128.SZ 完成\n", "任务 002129.SZ 完成\n", "任务 002130.SZ 完成\n", - "任务 002132.SZ 完成\n", "任务 002131.SZ 完成\n", - "任务 002134.SZ 完成\n", + "任务 002132.SZ 完成\n", "任务 002133.SZ 完成\n", + "任务 002134.SZ 完成\n", "任务 002135.SZ 完成\n", "任务 002136.SZ 完成\n", "任务 002137.SZ 完成\n", @@ -787,8 +742,8 @@ "任务 002150.SZ 完成\n", "任务 002151.SZ 完成\n", "任务 002152.SZ 完成\n", - "任务 002154.SZ 完成\n", "任务 002153.SZ 完成\n", + "任务 002154.SZ 完成\n", "任务 002155.SZ 完成\n", "任务 002156.SZ 完成\n", "任务 002157.SZ 完成\n", @@ -809,12 +764,12 @@ "任务 002172.SZ 完成\n", "任务 002173.SZ 完成\n", "任务 002174.SZ 完成\n", - "任务 002176.SZ 完成\n", "任务 002175.SZ 完成\n", + "任务 002176.SZ 完成\n", "任务 002177.SZ 完成\n", "任务 002178.SZ 完成\n", - "任务 002180.SZ 完成\n", "任务 002179.SZ 完成\n", + "任务 002180.SZ 完成\n", "任务 002181.SZ 完成\n", "任务 002182.SZ 完成\n", "任务 002183.SZ 完成\n", @@ -823,12 +778,12 @@ "任务 002186.SZ 完成\n", "任务 002187.SZ 完成\n", "任务 002188.SZ 完成\n", - "任务 002190.SZ 完成\n", "任务 002189.SZ 完成\n", - "任务 002192.SZ 完成\n", + "任务 002190.SZ 完成\n", "任务 002191.SZ 完成\n", - "任务 002194.SZ 完成\n", + "任务 002192.SZ 完成\n", "任务 002193.SZ 完成\n", + "任务 002194.SZ 完成\n", "任务 002195.SZ 完成\n", "任务 002196.SZ 完成\n", "任务 002197.SZ 完成\n", @@ -871,36 +826,36 @@ "任务 002235.SZ 完成\n", "任务 002236.SZ 完成\n", "任务 002237.SZ 完成\n", - "任务 002238.SZ 完成\n", "任务 002239.SZ 完成\n", - "任务 002240.SZ 完成\n", + "任务 002238.SZ 完成\n", "任务 002241.SZ 完成\n", - "任务 002243.SZ 完成\n", + "任务 002240.SZ 完成\n", "任务 002242.SZ 完成\n", + "任务 002243.SZ 完成\n", "任务 002244.SZ 完成\n", "任务 002245.SZ 完成\n", - "任务 002246.SZ 完成\n", "任务 002247.SZ 完成\n", + "任务 002246.SZ 完成\n", "任务 002248.SZ 完成\n", "任务 002249.SZ 完成\n", - "任务 002250.SZ 完成\n", "任务 002251.SZ 完成\n", "任务 002252.SZ 完成\n", + "任务 002250.SZ 完成\n", "任务 002253.SZ 完成\n", "任务 002254.SZ 完成\n", "任务 002255.SZ 完成\n", - "任务 002256.SZ 完成\n", "任务 002258.SZ 完成\n", + "任务 002256.SZ 完成\n", "任务 002259.SZ 完成\n", "任务 002261.SZ 完成\n", - "任务 002262.SZ 完成\n", "任务 002263.SZ 完成\n", - "任务 002264.SZ 完成\n", + "任务 002262.SZ 完成\n", "任务 002265.SZ 完成\n", - "任务 002267.SZ 完成\n", + "任务 002264.SZ 完成\n", "任务 002266.SZ 完成\n", - "任务 002269.SZ 完成\n", + "任务 002267.SZ 完成\n", "任务 002268.SZ 完成\n", + "任务 002269.SZ 完成\n", "任务 002270.SZ 完成\n", "任务 002271.SZ 完成\n", "任务 002272.SZ 完成\n", @@ -913,8 +868,8 @@ "任务 002279.SZ 完成\n", "任务 002281.SZ 完成\n", "任务 002282.SZ 完成\n", - "任务 002283.SZ 完成\n", "任务 002284.SZ 完成\n", + "任务 002283.SZ 完成\n", "任务 002285.SZ 完成\n", "任务 002286.SZ 完成\n", "任务 002287.SZ 完成\n", @@ -1001,10 +956,10 @@ "任务 002373.SZ 完成\n", "任务 002374.SZ 完成\n", "任务 002375.SZ 完成\n", - "任务 002376.SZ 完成\n", "任务 002377.SZ 完成\n", - "任务 002378.SZ 完成\n", + "任务 002376.SZ 完成\n", "任务 002379.SZ 完成\n", + "任务 002378.SZ 完成\n", "任务 002380.SZ 完成\n", "任务 002381.SZ 完成\n", "任务 002382.SZ 完成\n", @@ -1017,8 +972,8 @@ "任务 002389.SZ 完成\n", "任务 002390.SZ 完成\n", "任务 002391.SZ 完成\n", - "任务 002392.SZ 完成\n", "任务 002393.SZ 完成\n", + "任务 002392.SZ 完成\n", "任务 002394.SZ 完成\n", "任务 002395.SZ 完成\n", "任务 002396.SZ 完成\n", @@ -1034,8 +989,8 @@ "任务 002406.SZ 完成\n", "任务 002407.SZ 完成\n", "任务 002408.SZ 完成\n", - "任务 002410.SZ 完成\n", "任务 002409.SZ 完成\n", + "任务 002410.SZ 完成\n", "任务 002412.SZ 完成\n", "任务 002413.SZ 完成\n", "任务 002414.SZ 完成\n", @@ -1053,14 +1008,14 @@ "任务 002427.SZ 完成\n", "任务 002428.SZ 完成\n", "任务 002429.SZ 完成\n", - "任务 002430.SZ 完成\n", "任务 002431.SZ 完成\n", + "任务 002430.SZ 完成\n", "任务 002432.SZ 完成\n", "任务 002434.SZ 完成\n", - "任务 002436.SZ 完成\n", "任务 002437.SZ 完成\n", - "任务 002438.SZ 完成\n", + "任务 002436.SZ 完成\n", "任务 002439.SZ 完成\n", + "任务 002438.SZ 完成\n", "任务 002440.SZ 完成\n", "任务 002441.SZ 完成\n", "任务 002442.SZ 完成\n", @@ -1083,14 +1038,14 @@ "任务 002461.SZ 完成\n", "任务 002462.SZ 完成\n", "任务 002463.SZ 完成\n", - "任务 002465.SZ 完成\n", "任务 002466.SZ 完成\n", + "任务 002465.SZ 完成\n", "任务 002467.SZ 完成\n", "任务 002468.SZ 完成\n", "任务 002469.SZ 完成\n", "任务 002470.SZ 完成\n", - "任务 002471.SZ 完成\n", "任务 002472.SZ 完成\n", + "任务 002471.SZ 完成\n", "任务 002474.SZ 完成\n", "任务 002475.SZ 完成\n", "任务 002476.SZ 完成\n", @@ -1180,18 +1135,18 @@ "任务 002568.SZ 完成\n", "任务 002569.SZ 完成\n", "任务 002570.SZ 完成\n", - "任务 002572.SZ 完成\n", "任务 002571.SZ 完成\n", - "任务 002574.SZ 完成\n", + "任务 002572.SZ 完成\n", "任务 002573.SZ 完成\n", + "任务 002574.SZ 完成\n", "任务 002575.SZ 完成\n", "任务 002576.SZ 完成\n", "任务 002577.SZ 完成\n", "任务 002578.SZ 完成\n", - "任务 002580.SZ 完成\n", "任务 002579.SZ 完成\n", - "任务 002582.SZ 完成\n", + "任务 002580.SZ 完成\n", "任务 002581.SZ 完成\n", + "任务 002582.SZ 完成\n", "任务 002583.SZ 完成\n", "任务 002584.SZ 完成\n", "任务 002585.SZ 完成\n", @@ -1305,6 +1260,7 @@ "任务 002702.SZ 完成\n", "任务 002703.SZ 完成\n", "任务 002705.SZ 完成\n", + "任务 002706.SZ 完成\n", "任务 002707.SZ 完成\n", "任务 002708.SZ 完成\n", "任务 002709.SZ 完成\n", @@ -1318,9 +1274,7 @@ "任务 002719.SZ 完成\n", "任务 002721.SZ 完成\n", "任务 002722.SZ 完成\n", - "\"None of ['trade_date'] are in the columns\"\n", "任务 002723.SZ 完成\n", - "任务 002706.SZ 完成\n", "任务 002724.SZ 完成\n", "任务 002725.SZ 完成\n", "任务 002726.SZ 完成\n", @@ -1357,8 +1311,8 @@ "任务 002761.SZ 完成\n", "任务 002762.SZ 完成\n", "任务 002763.SZ 完成\n", - "任务 002765.SZ 完成\n", "任务 002766.SZ 完成\n", + "任务 002765.SZ 完成\n", "任务 002767.SZ 完成\n", "任务 002768.SZ 完成\n", "任务 002769.SZ 完成\n", @@ -1376,9 +1330,9 @@ "任务 002785.SZ 完成\n", "任务 002786.SZ 完成\n", "任务 002787.SZ 完成\n", - "任务 002788.SZ 完成\n", "任务 002789.SZ 完成\n", "任务 002790.SZ 完成\n", + "任务 002788.SZ 完成\n", "任务 002791.SZ 完成\n", "任务 002792.SZ 完成\n", "任务 002793.SZ 完成\n", @@ -1442,16 +1396,16 @@ "任务 002857.SZ 完成\n", "任务 002858.SZ 完成\n", "任务 002859.SZ 完成\n", - "任务 002861.SZ 完成\n", "任务 002860.SZ 完成\n", - "任务 002863.SZ 完成\n", + "任务 002861.SZ 完成\n", "任务 002862.SZ 完成\n", - "任务 002865.SZ 完成\n", + "任务 002863.SZ 完成\n", "任务 002864.SZ 完成\n", - "任务 002867.SZ 完成\n", + "任务 002865.SZ 完成\n", "任务 002866.SZ 完成\n", - "任务 002869.SZ 完成\n", + "任务 002867.SZ 完成\n", "任务 002868.SZ 完成\n", + "任务 002869.SZ 完成\n", "任务 002870.SZ 完成\n", "任务 002871.SZ 完成\n", "任务 002872.SZ 完成\n", @@ -1460,20 +1414,20 @@ "任务 002876.SZ 完成\n", "任务 002877.SZ 完成\n", "任务 002878.SZ 完成\n", - "任务 002880.SZ 完成\n", "任务 002879.SZ 完成\n", + "任务 002880.SZ 完成\n", "任务 002881.SZ 完成\n", "任务 002882.SZ 完成\n", "任务 002883.SZ 完成\n", "任务 002884.SZ 完成\n", "任务 002885.SZ 完成\n", "任务 002886.SZ 完成\n", - "任务 002888.SZ 完成\n", "任务 002887.SZ 完成\n", + "任务 002888.SZ 完成\n", "任务 002889.SZ 完成\n", "任务 002890.SZ 完成\n", - "任务 002892.SZ 完成\n", "任务 002891.SZ 完成\n", + "任务 002892.SZ 完成\n", "任务 002893.SZ 完成\n", "任务 002895.SZ 完成\n", "任务 002896.SZ 完成\n", @@ -1486,8 +1440,8 @@ "任务 002903.SZ 完成\n", "任务 002905.SZ 完成\n", "任务 002906.SZ 完成\n", - "任务 002907.SZ 完成\n", "任务 002908.SZ 完成\n", + "任务 002907.SZ 完成\n", "任务 002909.SZ 完成\n", "任务 002910.SZ 完成\n", "任务 002911.SZ 完成\n", @@ -1502,8 +1456,8 @@ "任务 002921.SZ 完成\n", "任务 002922.SZ 完成\n", "任务 002923.SZ 完成\n", - "任务 002926.SZ 完成\n", "任务 002925.SZ 完成\n", + "任务 002926.SZ 完成\n", "任务 002927.SZ 完成\n", "任务 002928.SZ 完成\n", "任务 002929.SZ 完成\n", @@ -1538,30 +1492,30 @@ "任务 002961.SZ 完成\n", "任务 002962.SZ 完成\n", "任务 002963.SZ 完成\n", - "任务 002965.SZ 完成\n", "任务 002966.SZ 完成\n", - "任务 002967.SZ 完成\n", + "任务 002965.SZ 完成\n", "任务 002968.SZ 完成\n", - "任务 002969.SZ 完成\n", + "任务 002967.SZ 完成\n", "任务 002970.SZ 完成\n", + "任务 002969.SZ 完成\n", "任务 002971.SZ 完成\n", "任务 002972.SZ 完成\n", - "任务 002973.SZ 完成\n", "任务 002975.SZ 完成\n", + "任务 002973.SZ 完成\n", "任务 002976.SZ 完成\n", "任务 002977.SZ 完成\n", - "任务 002978.SZ 完成\n", "任务 002979.SZ 完成\n", + "任务 002978.SZ 完成\n", "任务 002980.SZ 完成\n", "任务 002981.SZ 完成\n", "任务 002982.SZ 完成\n", "任务 002983.SZ 完成\n", - "任务 002984.SZ 完成\n", "任务 002985.SZ 完成\n", + "任务 002984.SZ 完成\n", "任务 002986.SZ 完成\n", "任务 002987.SZ 完成\n", - "任务 002988.SZ 完成\n", "任务 002989.SZ 完成\n", + "任务 002988.SZ 完成\n", "任务 002990.SZ 完成\n", "任务 002991.SZ 完成\n", "任务 002992.SZ 完成\n", @@ -1604,10 +1558,10 @@ "任务 003032.SZ 完成\n", "任务 003033.SZ 完成\n", "任务 003035.SZ 完成\n", - "任务 003036.SZ 完成\n", "任务 003037.SZ 完成\n", - "任务 003038.SZ 完成\n", + "任务 003036.SZ 完成\n", "任务 003039.SZ 完成\n", + "任务 003038.SZ 完成\n", "任务 003040.SZ 完成\n", "任务 003041.SZ 完成\n", "任务 003042.SZ 完成\n", @@ -1630,38 +1584,38 @@ "任务 300015.SZ 完成\n", "任务 300016.SZ 完成\n", "任务 300017.SZ 完成\n", - "任务 300018.SZ 完成\n", "任务 300019.SZ 完成\n", + "任务 300018.SZ 完成\n", "任务 300020.SZ 完成\n", "任务 300021.SZ 完成\n", "任务 300022.SZ 完成\n", "任务 300024.SZ 完成\n", - "任务 300025.SZ 完成\n", "任务 300026.SZ 完成\n", + "任务 300025.SZ 完成\n", "任务 300027.SZ 完成\n", "任务 300029.SZ 完成\n", - "任务 300030.SZ 完成\n", "任务 300031.SZ 完成\n", - "任务 300032.SZ 完成\n", + "任务 300030.SZ 完成\n", "任务 300033.SZ 完成\n", + "任务 300032.SZ 完成\n", "任务 300034.SZ 完成\n", "任务 300035.SZ 完成\n", "任务 300036.SZ 完成\n", "任务 300037.SZ 完成\n", - "任务 300039.SZ 完成\n", "任务 300040.SZ 完成\n", - "任务 300041.SZ 完成\n", + "任务 300039.SZ 完成\n", "任务 300042.SZ 完成\n", + "任务 300041.SZ 完成\n", "任务 300043.SZ 完成\n", "任务 300044.SZ 完成\n", "任务 300045.SZ 完成\n", "任务 300046.SZ 完成\n", "任务 300047.SZ 完成\n", "任务 300048.SZ 完成\n", - "任务 300049.SZ 完成\n", "任务 300050.SZ 完成\n", - "任务 300052.SZ 完成\n", + "任务 300049.SZ 完成\n", "任务 300051.SZ 完成\n", + "任务 300052.SZ 完成\n", "任务 300053.SZ 完成\n", "任务 300054.SZ 完成\n", "任务 300055.SZ 完成\n", @@ -1670,34 +1624,34 @@ "任务 300058.SZ 完成\n", "任务 300059.SZ 完成\n", "任务 300061.SZ 完成\n", - "任务 300062.SZ 完成\n", "任务 300063.SZ 完成\n", - "任务 300065.SZ 完成\n", + "任务 300062.SZ 完成\n", "任务 300066.SZ 完成\n", + "任务 300065.SZ 完成\n", "任务 300068.SZ 完成\n", "任务 300067.SZ 完成\n", "任务 300070.SZ 完成\n", "任务 300069.SZ 完成\n", "任务 300071.SZ 完成\n", "任务 300072.SZ 完成\n", - "任务 300074.SZ 完成\n", "任务 300073.SZ 完成\n", - "任务 300075.SZ 完成\n", + "任务 300074.SZ 完成\n", "任务 300076.SZ 完成\n", - "任务 300078.SZ 完成\n", + "任务 300075.SZ 完成\n", "任务 300077.SZ 完成\n", - "任务 300080.SZ 完成\n", + "任务 300078.SZ 完成\n", "任务 300079.SZ 完成\n", - "任务 300082.SZ 完成\n", + "任务 300080.SZ 完成\n", "任务 300081.SZ 完成\n", - "任务 300084.SZ 完成\n", + "任务 300082.SZ 完成\n", "任务 300083.SZ 完成\n", - "任务 300086.SZ 完成\n", + "任务 300084.SZ 完成\n", "任务 300085.SZ 完成\n", + "任务 300086.SZ 完成\n", "任务 300087.SZ 完成\n", "任务 300088.SZ 完成\n", - "任务 300092.SZ 完成\n", "任务 300091.SZ 完成\n", + "任务 300092.SZ 完成\n", "任务 300093.SZ 完成\n", "任务 300094.SZ 完成\n", "任务 300095.SZ 完成\n", @@ -1716,23 +1670,23 @@ "任务 300109.SZ 完成\n", "任务 300110.SZ 完成\n", "任务 300111.SZ 完成\n", - "任务 300113.SZ 完成\n", "任务 300112.SZ 完成\n", - "任务 300115.SZ 完成\n", + "任务 300113.SZ 完成\n", "任务 300114.SZ 完成\n", + "任务 300115.SZ 完成\n", "任务 300117.SZ 完成\n", "任务 300118.SZ 完成\n", "任务 300119.SZ 完成\n", "任务 300120.SZ 完成\n", - "任务 300122.SZ 完成\n", "任务 300121.SZ 完成\n", + "任务 300122.SZ 完成\n", "任务 300123.SZ 完成\n", "任务 300124.SZ 完成\n", "任务 300125.SZ 完成\n", "任务 300126.SZ 完成\n", "任务 300127.SZ 完成\n", - "任务 300128.SZ 完成\n", "任务 300129.SZ 完成\n", + "任务 300128.SZ 完成\n", "任务 300130.SZ 完成\n", "任务 300131.SZ 完成\n", "任务 300132.SZ 完成\n", @@ -1741,14 +1695,14 @@ "任务 300135.SZ 完成\n", "任务 300136.SZ 完成\n", "任务 300137.SZ 完成\n", - "任务 300138.SZ 完成\n", "任务 300139.SZ 完成\n", + "任务 300138.SZ 完成\n", "任务 300140.SZ 完成\n", - "任务 300142.SZ 完成\n", "任务 300141.SZ 完成\n", + "任务 300142.SZ 完成\n", "任务 300143.SZ 完成\n", - "任务 300144.SZ 完成\n", "任务 300145.SZ 完成\n", + "任务 300144.SZ 完成\n", "任务 300146.SZ 完成\n", "任务 300147.SZ 完成\n", "任务 300148.SZ 完成\n", @@ -1756,32 +1710,32 @@ "任务 300150.SZ 完成\n", "任务 300151.SZ 完成\n", "任务 300152.SZ 完成\n", - "任务 300154.SZ 完成\n", "任务 300153.SZ 完成\n", + "任务 300154.SZ 完成\n", "任务 300155.SZ 完成\n", "任务 300157.SZ 完成\n", "任务 300158.SZ 完成\n", "任务 300159.SZ 完成\n", - "任务 300161.SZ 完成\n", "任务 300160.SZ 完成\n", + "任务 300161.SZ 完成\n", "任务 300162.SZ 完成\n", "任务 300163.SZ 完成\n", "任务 300164.SZ 完成\n", "任务 300165.SZ 完成\n", "任务 300166.SZ 完成\n", "任务 300167.SZ 完成\n", - "任务 300169.SZ 完成\n", "任务 300168.SZ 完成\n", - "任务 300171.SZ 完成\n", + "任务 300169.SZ 完成\n", "任务 300170.SZ 完成\n", - "任务 300173.SZ 完成\n", + "任务 300171.SZ 完成\n", "任务 300172.SZ 完成\n", - "任务 300175.SZ 完成\n", + "任务 300173.SZ 完成\n", "任务 300174.SZ 完成\n", - "任务 300177.SZ 完成\n", + "任务 300175.SZ 完成\n", "任务 300176.SZ 完成\n", - "任务 300180.SZ 完成\n", + "任务 300177.SZ 完成\n", "任务 300179.SZ 完成\n", + "任务 300180.SZ 完成\n", "任务 300181.SZ 完成\n", "任务 300182.SZ 完成\n", "任务 300183.SZ 完成\n", @@ -1794,8 +1748,8 @@ "任务 300191.SZ 完成\n", "任务 300192.SZ 完成\n", "任务 300193.SZ 完成\n", - "任务 300195.SZ 完成\n", "任务 300194.SZ 完成\n", + "任务 300195.SZ 完成\n", "任务 300196.SZ 完成\n", "任务 300197.SZ 完成\n", "任务 300198.SZ 完成\n", @@ -1804,31 +1758,31 @@ "任务 300201.SZ 完成\n", "任务 300203.SZ 完成\n", "任务 300204.SZ 完成\n", - "任务 300206.SZ 完成\n", "任务 300205.SZ 完成\n", + "任务 300206.SZ 完成\n", "任务 300207.SZ 完成\n", "任务 300208.SZ 完成\n", "任务 300209.SZ 完成\n", - "任务 300210.SZ 完成\n", "任务 300211.SZ 完成\n", + "任务 300210.SZ 完成\n", "任务 300212.SZ 完成\n", "任务 300213.SZ 完成\n", "任务 300214.SZ 完成\n", "任务 300215.SZ 完成\n", "任务 300217.SZ 完成\n", "任务 300218.SZ 完成\n", - "任务 300219.SZ 完成\n", "任务 300220.SZ 完成\n", - "任务 300221.SZ 完成\n", - "任务 300223.SZ 完成\n", + "任务 300219.SZ 完成\n", "任务 300222.SZ 完成\n", + "任务 300221.SZ 完成\n", "任务 300224.SZ 完成\n", - "任务 300225.SZ 完成\n", + "任务 300223.SZ 完成\n", "任务 300226.SZ 完成\n", + "任务 300225.SZ 完成\n", "任务 300227.SZ 完成\n", "任务 300228.SZ 完成\n", - "任务 300229.SZ 完成\n", "任务 300230.SZ 完成\n", + "任务 300229.SZ 完成\n", "任务 300231.SZ 完成\n", "任务 300232.SZ 完成\n", "任务 300233.SZ 完成\n", @@ -1846,30 +1800,30 @@ "任务 300245.SZ 完成\n", "任务 300246.SZ 完成\n", "任务 300247.SZ 完成\n", - "任务 300248.SZ 完成\n", "任务 300249.SZ 完成\n", "任务 300250.SZ 完成\n", + "任务 300248.SZ 完成\n", "任务 300251.SZ 完成\n", "任务 300252.SZ 完成\n", "任务 300253.SZ 完成\n", "任务 300254.SZ 完成\n", "任务 300255.SZ 完成\n", - "任务 300257.SZ 完成\n", "任务 300256.SZ 完成\n", - "任务 300259.SZ 完成\n", + "任务 300257.SZ 完成\n", "任务 300258.SZ 完成\n", + "任务 300259.SZ 完成\n", "任务 300260.SZ 完成\n", "任务 300261.SZ 完成\n", "任务 300263.SZ 完成\n", "任务 300264.SZ 完成\n", "任务 300265.SZ 完成\n", "任务 300266.SZ 完成\n", - "任务 300268.SZ 完成\n", "任务 300267.SZ 完成\n", + "任务 300268.SZ 完成\n", "任务 300269.SZ 完成\n", "任务 300270.SZ 完成\n", - "任务 300272.SZ 完成\n", "任务 300271.SZ 完成\n", + "任务 300272.SZ 完成\n", "任务 300274.SZ 完成\n", "任务 300275.SZ 完成\n", "任务 300276.SZ 完成\n", @@ -1882,36 +1836,36 @@ "任务 300284.SZ 完成\n", "任务 300285.SZ 完成\n", "任务 300286.SZ 完成\n", - "任务 300288.SZ 完成\n", "任务 300287.SZ 完成\n", + "任务 300288.SZ 完成\n", "任务 300289.SZ 完成\n", "任务 300290.SZ 完成\n", "任务 300291.SZ 完成\n", "任务 300292.SZ 完成\n", "任务 300293.SZ 完成\n", "任务 300294.SZ 完成\n", - "任务 300296.SZ 完成\n", "任务 300295.SZ 完成\n", - "任务 300299.SZ 完成\n", + "任务 300296.SZ 完成\n", "任务 300298.SZ 完成\n", - "任务 300301.SZ 完成\n", + "任务 300299.SZ 完成\n", "任务 300300.SZ 完成\n", + "任务 300301.SZ 完成\n", "任务 300302.SZ 完成\n", - "任务 300303.SZ 完成\n", "任务 300304.SZ 完成\n", + "任务 300303.SZ 完成\n", "任务 300305.SZ 完成\n", "任务 300306.SZ 完成\n", - "任务 300307.SZ 完成\n", "任务 300308.SZ 完成\n", - "任务 300310.SZ 完成\n", + "任务 300307.SZ 完成\n", "任务 300311.SZ 完成\n", - "任务 300313.SZ 完成\n", + "任务 300310.SZ 完成\n", "任务 300314.SZ 完成\n", - "任务 300315.SZ 完成\n", + "任务 300313.SZ 完成\n", "任务 300316.SZ 完成\n", - "任务 300317.SZ 完成\n", + "任务 300315.SZ 完成\n", "任务 300318.SZ 完成\n", "任务 300319.SZ 完成\n", + "任务 300317.SZ 完成\n", "任务 300320.SZ 完成\n", "任务 300321.SZ 完成\n", "任务 300322.SZ 完成\n", @@ -1944,12 +1898,12 @@ "任务 300352.SZ 完成\n", "任务 300353.SZ 完成\n", "任务 300354.SZ 完成\n", - "任务 300357.SZ 完成\n", "任务 300355.SZ 完成\n", + "任务 300357.SZ 完成\n", "任务 300358.SZ 完成\n", "任务 300359.SZ 完成\n", - "任务 300363.SZ 完成\n", "任务 300360.SZ 完成\n", + "任务 300363.SZ 完成\n", "任务 300364.SZ 完成\n", "任务 300365.SZ 完成\n", "任务 300366.SZ 完成\n", @@ -1966,14 +1920,14 @@ "任务 300379.SZ 完成\n", "任务 300380.SZ 完成\n", "任务 300381.SZ 完成\n", - "任务 300382.SZ 完成\n", "任务 300383.SZ 完成\n", - "任务 300384.SZ 完成\n", + "任务 300382.SZ 完成\n", "任务 300385.SZ 完成\n", + "任务 300384.SZ 完成\n", "任务 300386.SZ 完成\n", "任务 300387.SZ 完成\n", - "任务 300388.SZ 完成\n", "任务 300389.SZ 完成\n", + "任务 300388.SZ 完成\n", "任务 300390.SZ 完成\n", "任务 300391.SZ 完成\n", "任务 300393.SZ 完成\n", @@ -1994,43 +1948,43 @@ "任务 300408.SZ 完成\n", "任务 300409.SZ 完成\n", "任务 300410.SZ 完成\n", - "任务 300411.SZ 完成\n", "任务 300412.SZ 完成\n", + "任务 300411.SZ 完成\n", "任务 300413.SZ 完成\n", "任务 300414.SZ 完成\n", "任务 300415.SZ 完成\n", "任务 300416.SZ 完成\n", "任务 300417.SZ 完成\n", "任务 300418.SZ 完成\n", - "任务 300419.SZ 完成\n", "任务 300420.SZ 完成\n", - "任务 300421.SZ 完成\n", + "任务 300419.SZ 完成\n", "任务 300422.SZ 完成\n", - "任务 300423.SZ 完成\n", + "任务 300421.SZ 完成\n", "任务 300424.SZ 完成\n", + "任务 300423.SZ 完成\n", "任务 300425.SZ 完成\n", "任务 300426.SZ 完成\n", "任务 300427.SZ 完成\n", "任务 300428.SZ 完成\n", - "任务 300429.SZ 完成\n", "任务 300430.SZ 完成\n", + "任务 300429.SZ 完成\n", "任务 300432.SZ 完成\n", "任务 300433.SZ 完成\n", - "任务 300434.SZ 完成\n", "任务 300435.SZ 完成\n", + "任务 300434.SZ 完成\n", "任务 300436.SZ 完成\n", - "任务 300438.SZ 完成\n", "任务 300437.SZ 完成\n", "任务 300439.SZ 完成\n", + "任务 300438.SZ 完成\n", "任务 300440.SZ 完成\n", - "任务 300442.SZ 完成\n", "任务 300441.SZ 完成\n", - "任务 300444.SZ 完成\n", + "任务 300442.SZ 完成\n", "任务 300443.SZ 完成\n", - "任务 300446.SZ 完成\n", + "任务 300444.SZ 完成\n", "任务 300445.SZ 完成\n", - "任务 300448.SZ 完成\n", + "任务 300446.SZ 完成\n", "任务 300447.SZ 完成\n", + "任务 300448.SZ 完成\n", "任务 300449.SZ 完成\n", "任务 300450.SZ 完成\n", "任务 300451.SZ 完成\n", @@ -2041,8 +1995,8 @@ "任务 300456.SZ 完成\n", "任务 300457.SZ 完成\n", "任务 300458.SZ 完成\n", - "任务 300460.SZ 完成\n", "任务 300459.SZ 完成\n", + "任务 300460.SZ 完成\n", "任务 300461.SZ 完成\n", "任务 300462.SZ 完成\n", "任务 300463.SZ 完成\n", @@ -2082,21 +2036,20 @@ "任务 300498.SZ 完成\n", "任务 300499.SZ 完成\n", "任务 300500.SZ 完成\n", + "任务 300501.SZ 完成\n", "任务 300502.SZ 完成\n", - "任务 300503.SZ 完成\n", "任务 300504.SZ 完成\n", + "任务 300503.SZ 完成\n", "任务 300505.SZ 完成\n", "任务 300506.SZ 完成\n", "任务 300507.SZ 完成\n", "任务 300508.SZ 完成\n", - "任务 300509.SZ 完成\n", "任务 300510.SZ 完成\n", + "任务 300509.SZ 完成\n", "任务 300511.SZ 完成\n", "任务 300512.SZ 完成\n", "任务 300513.SZ 完成\n", - "\"None of ['trade_date'] are in the columns\"\n", "任务 300514.SZ 完成\n", - "任务 300501.SZ 完成\n", "任务 300515.SZ 完成\n", "任务 300516.SZ 完成\n", "任务 300517.SZ 完成\n", @@ -2127,22 +2080,22 @@ "任务 300545.SZ 完成\n", "任务 300546.SZ 完成\n", "任务 300547.SZ 完成\n", - "任务 300548.SZ 完成\n", "任务 300549.SZ 完成\n", - "任务 300550.SZ 完成\n", + "任务 300548.SZ 完成\n", "任务 300551.SZ 完成\n", - "任务 300552.SZ 完成\n", + "任务 300550.SZ 完成\n", "任务 300553.SZ 完成\n", + "任务 300552.SZ 完成\n", "任务 300554.SZ 完成\n", - "任务 300556.SZ 完成\n", "任务 300555.SZ 完成\n", + "任务 300556.SZ 完成\n", "任务 300557.SZ 完成\n", "任务 300558.SZ 完成\n", "任务 300559.SZ 完成\n", "任务 300560.SZ 完成\n", "任务 300561.SZ 完成\n", - "任务 300562.SZ 完成\n", "任务 300563.SZ 完成\n", + "任务 300562.SZ 完成\n", "任务 300564.SZ 完成\n", "任务 300565.SZ 完成\n", "任务 300566.SZ 完成\n", @@ -2156,8 +2109,8 @@ "任务 300575.SZ 完成\n", "任务 300576.SZ 完成\n", "任务 300577.SZ 完成\n", - "任务 300578.SZ 完成\n", "任务 300579.SZ 完成\n", + "任务 300578.SZ 完成\n", "任务 300580.SZ 完成\n", "任务 300581.SZ 完成\n", "任务 300582.SZ 完成\n", @@ -2180,19 +2133,19 @@ "任务 300599.SZ 完成\n", "任务 300600.SZ 完成\n", "任务 300601.SZ 完成\n", - "任务 300602.SZ 完成\n", "任务 300603.SZ 完成\n", + "任务 300602.SZ 完成\n", "任务 300604.SZ 完成\n", - "任务 300605.SZ 完成\n", "任务 300606.SZ 完成\n", + "任务 300605.SZ 完成\n", "任务 300607.SZ 完成\n", "任务 300608.SZ 完成\n", "任务 300609.SZ 完成\n", "任务 300610.SZ 完成\n", "任务 300611.SZ 完成\n", "任务 300612.SZ 完成\n", - "任务 300613.SZ 完成\n", "任务 300614.SZ 完成\n", + "任务 300613.SZ 完成\n", "任务 300615.SZ 完成\n", "任务 300616.SZ 完成\n", "任务 300618.SZ 完成\n", @@ -2203,16 +2156,16 @@ "任务 300622.SZ 完成\n", "任务 300623.SZ 完成\n", "任务 300624.SZ 完成\n", - "任务 300625.SZ 完成\n", "任务 300626.SZ 完成\n", + "任务 300625.SZ 完成\n", "任务 300627.SZ 完成\n", "任务 300628.SZ 完成\n", "任务 300629.SZ 完成\n", "任务 300630.SZ 完成\n", "任务 300631.SZ 完成\n", "任务 300632.SZ 完成\n", - "任务 300633.SZ 完成\n", "任务 300634.SZ 完成\n", + "任务 300633.SZ 完成\n", "任务 300635.SZ 完成\n", "任务 300636.SZ 完成\n", "任务 300637.SZ 完成\n", @@ -2278,20 +2231,20 @@ "任务 300698.SZ 完成\n", "任务 300699.SZ 完成\n", "任务 300700.SZ 完成\n", - "任务 300701.SZ 完成\n", "任务 300702.SZ 完成\n", - "任务 300703.SZ 完成\n", + "任务 300701.SZ 完成\n", "任务 300705.SZ 完成\n", - "任务 300706.SZ 完成\n", + "任务 300703.SZ 完成\n", "任务 300707.SZ 完成\n", - "任务 300708.SZ 完成\n", + "任务 300706.SZ 完成\n", "任务 300709.SZ 完成\n", - "任务 300710.SZ 完成\n", + "任务 300708.SZ 完成\n", "任务 300711.SZ 完成\n", + "任务 300710.SZ 完成\n", "任务 300712.SZ 完成\n", "任务 300713.SZ 完成\n", - "任务 300715.SZ 完成\n", "任务 300716.SZ 完成\n", + "任务 300715.SZ 完成\n", "任务 300717.SZ 完成\n", "任务 300718.SZ 完成\n", "任务 300719.SZ 完成\n", @@ -2317,10 +2270,10 @@ "任务 300741.SZ 完成\n", "任务 300743.SZ 完成\n", "任务 300745.SZ 完成\n", - "任务 300746.SZ 完成\n", "任务 300747.SZ 完成\n", - "任务 300748.SZ 完成\n", + "任务 300746.SZ 完成\n", "任务 300749.SZ 完成\n", + "任务 300748.SZ 完成\n", "任务 300750.SZ 完成\n", "任务 300751.SZ 完成\n", "任务 300752.SZ 完成\n", @@ -2343,8 +2296,8 @@ "任务 300771.SZ 完成\n", "任务 300772.SZ 完成\n", "任务 300773.SZ 完成\n", - "任务 300774.SZ 完成\n", "任务 300775.SZ 完成\n", + "任务 300774.SZ 完成\n", "任务 300776.SZ 完成\n", "任务 300777.SZ 完成\n", "任务 300778.SZ 完成\n", @@ -2372,17 +2325,17 @@ "任务 300802.SZ 完成\n", "任务 300803.SZ 完成\n", "任务 300804.SZ 完成\n", - "任务 300805.SZ 完成\n", "任务 300806.SZ 完成\n", - "任务 300807.SZ 完成\n", + "任务 300805.SZ 完成\n", "任务 300808.SZ 完成\n", + "任务 300807.SZ 完成\n", "任务 300809.SZ 完成\n", "任务 300810.SZ 完成\n", "任务 300811.SZ 完成\n", "任务 300812.SZ 完成\n", "任务 300813.SZ 完成\n", - "任务 300814.SZ 完成\n", "任务 300815.SZ 完成\n", + "任务 300814.SZ 完成\n", "任务 300816.SZ 完成\n", "任务 300817.SZ 完成\n", "任务 300818.SZ 完成\n", @@ -2471,46 +2424,46 @@ "任务 300902.SZ 完成\n", "任务 300903.SZ 完成\n", "任务 300904.SZ 完成\n", - "任务 300905.SZ 完成\n", "任务 300906.SZ 完成\n", - "任务 300907.SZ 完成\n", + "任务 300905.SZ 完成\n", "任务 300908.SZ 完成\n", - "任务 300909.SZ 完成\n", - "任务 300911.SZ 完成\n", + "任务 300907.SZ 完成\n", "任务 300910.SZ 完成\n", + "任务 300909.SZ 完成\n", "任务 300912.SZ 完成\n", - "任务 300913.SZ 完成\n", + "任务 300911.SZ 完成\n", "任务 300915.SZ 完成\n", + "任务 300913.SZ 完成\n", "任务 300916.SZ 完成\n", "任务 300917.SZ 完成\n", - "任务 300918.SZ 完成\n", "任务 300919.SZ 完成\n", + "任务 300918.SZ 完成\n", "任务 300920.SZ 完成\n", "任务 300921.SZ 完成\n", - "任务 300922.SZ 完成\n", "任务 300923.SZ 完成\n", + "任务 300922.SZ 完成\n", "任务 300925.SZ 完成\n", "任务 300926.SZ 完成\n", "任务 300927.SZ 完成\n", "任务 300928.SZ 完成\n", "任务 300929.SZ 完成\n", "任务 300930.SZ 完成\n", - "任务 300931.SZ 完成\n", "任务 300932.SZ 完成\n", + "任务 300931.SZ 完成\n", "任务 300933.SZ 完成\n", "任务 300935.SZ 完成\n", - "任务 300936.SZ 完成\n", "任务 300937.SZ 完成\n", + "任务 300936.SZ 完成\n", "任务 300938.SZ 完成\n", "任务 300939.SZ 完成\n", "任务 300940.SZ 完成\n", "任务 300941.SZ 完成\n", "任务 300942.SZ 完成\n", "任务 300943.SZ 完成\n", - "任务 300945.SZ 完成\n", "任务 300946.SZ 完成\n", - "任务 300947.SZ 完成\n", + "任务 300945.SZ 完成\n", "任务 300948.SZ 完成\n", + "任务 300947.SZ 完成\n", "任务 300949.SZ 完成\n", "任务 300950.SZ 完成\n", "任务 300951.SZ 完成\n", @@ -2532,48 +2485,48 @@ "任务 300968.SZ 完成\n", "任务 300969.SZ 完成\n", "任务 300970.SZ 完成\n", - "任务 300971.SZ 完成\n", "任务 300972.SZ 完成\n", - "任务 300973.SZ 完成\n", + "任务 300971.SZ 完成\n", "任务 300975.SZ 完成\n", + "任务 300973.SZ 完成\n", "任务 300976.SZ 完成\n", "任务 300977.SZ 完成\n", - "任务 300978.SZ 完成\n", "任务 300979.SZ 完成\n", + "任务 300978.SZ 完成\n", "任务 300980.SZ 完成\n", "任务 300981.SZ 完成\n", "任务 300982.SZ 完成\n", "任务 300983.SZ 完成\n", - "任务 300984.SZ 完成\n", "任务 300985.SZ 完成\n", - "任务 300986.SZ 完成\n", + "任务 300984.SZ 完成\n", "任务 300987.SZ 完成\n", - "任务 300989.SZ 完成\n", + "任务 300986.SZ 完成\n", "任务 300988.SZ 完成\n", - "任务 300990.SZ 完成\n", + "任务 300989.SZ 完成\n", "任务 300991.SZ 完成\n", - "任务 300992.SZ 完成\n", + "任务 300990.SZ 完成\n", "任务 300993.SZ 完成\n", + "任务 300992.SZ 完成\n", "任务 300994.SZ 完成\n", "任务 300995.SZ 完成\n", - "任务 300997.SZ 完成\n", "任务 300996.SZ 完成\n", + "任务 300997.SZ 完成\n", "任务 300998.SZ 完成\n", "任务 300999.SZ 完成\n", - "任务 301001.SZ 完成\n", "任务 301000.SZ 完成\n", - "任务 301002.SZ 完成\n", + "任务 301001.SZ 完成\n", "任务 301003.SZ 完成\n", + "任务 301002.SZ 完成\n", "任务 301004.SZ 完成\n", "任务 301005.SZ 完成\n", - "任务 301006.SZ 完成\n", "任务 301007.SZ 完成\n", - "任务 301008.SZ 完成\n", + "任务 301006.SZ 完成\n", "任务 301009.SZ 完成\n", - "任务 301011.SZ 完成\n", + "任务 301008.SZ 完成\n", "任务 301010.SZ 完成\n", - "任务 301013.SZ 完成\n", + "任务 301011.SZ 完成\n", "任务 301012.SZ 完成\n", + "任务 301013.SZ 完成\n", "任务 301015.SZ 完成\n", "任务 301016.SZ 完成\n", "任务 301017.SZ 完成\n", @@ -2586,32 +2539,32 @@ "任务 301024.SZ 完成\n", "任务 301025.SZ 完成\n", "任务 301026.SZ 完成\n", - "任务 301027.SZ 完成\n", "任务 301028.SZ 完成\n", + "任务 301027.SZ 完成\n", "任务 301029.SZ 完成\n", "任务 301030.SZ 完成\n", "任务 301031.SZ 完成\n", "任务 301032.SZ 完成\n", "任务 301033.SZ 完成\n", "任务 301035.SZ 完成\n", - "任务 301036.SZ 完成\n", "任务 301037.SZ 完成\n", - "任务 301038.SZ 完成\n", + "任务 301036.SZ 完成\n", "任务 301039.SZ 完成\n", + "任务 301038.SZ 完成\n", "任务 301040.SZ 完成\n", "任务 301041.SZ 完成\n", "任务 301042.SZ 完成\n", "任务 301043.SZ 完成\n", - "任务 301045.SZ 完成\n", "任务 301046.SZ 完成\n", - "任务 301047.SZ 完成\n", + "任务 301045.SZ 完成\n", "任务 301048.SZ 完成\n", - "任务 301049.SZ 完成\n", + "任务 301047.SZ 完成\n", "任务 301050.SZ 完成\n", - "任务 301051.SZ 完成\n", + "任务 301049.SZ 完成\n", "任务 301052.SZ 完成\n", - "任务 301053.SZ 完成\n", + "任务 301051.SZ 完成\n", "任务 301055.SZ 完成\n", + "任务 301053.SZ 完成\n", "任务 301056.SZ 完成\n", "任务 301057.SZ 完成\n", "任务 301058.SZ 完成\n", @@ -2624,24 +2577,24 @@ "任务 301066.SZ 完成\n", "任务 301067.SZ 完成\n", "任务 301068.SZ 完成\n", - "任务 301069.SZ 完成\n", "任务 301070.SZ 完成\n", + "任务 301069.SZ 完成\n", "任务 301071.SZ 完成\n", "任务 301072.SZ 完成\n", - "任务 301073.SZ 完成\n", "任务 301075.SZ 完成\n", + "任务 301073.SZ 完成\n", "任务 301076.SZ 完成\n", "任务 301077.SZ 完成\n", - "任务 301078.SZ 完成\n", "任务 301079.SZ 完成\n", + "任务 301078.SZ 完成\n", "任务 301080.SZ 完成\n", "任务 301081.SZ 完成\n", - "任务 301082.SZ 完成\n", "任务 301083.SZ 完成\n", - "任务 301085.SZ 完成\n", + "任务 301082.SZ 完成\n", "任务 301086.SZ 完成\n", - "任务 301087.SZ 完成\n", + "任务 301085.SZ 完成\n", "任务 301088.SZ 完成\n", + "任务 301087.SZ 完成\n", "任务 301089.SZ 完成\n", "任务 301090.SZ 完成\n", "任务 301091.SZ 完成\n", @@ -2652,24 +2605,24 @@ "任务 301097.SZ 完成\n", "任务 301098.SZ 完成\n", "任务 301099.SZ 完成\n", - "任务 301100.SZ 完成\n", "任务 301101.SZ 完成\n", + "任务 301100.SZ 完成\n", "任务 301102.SZ 完成\n", "任务 301103.SZ 完成\n", "任务 301105.SZ 完成\n", "任务 301106.SZ 完成\n", "任务 301107.SZ 完成\n", "任务 301108.SZ 完成\n", - "任务 301109.SZ 完成\n", "任务 301110.SZ 完成\n", + "任务 301109.SZ 完成\n", "任务 301111.SZ 完成\n", "任务 301112.SZ 完成\n", "任务 301113.SZ 完成\n", "任务 301115.SZ 完成\n", "任务 301116.SZ 完成\n", "任务 301117.SZ 完成\n", - "任务 301119.SZ 完成\n", "任务 301118.SZ 完成\n", + "任务 301119.SZ 完成\n", "任务 301120.SZ 完成\n", "任务 301121.SZ 完成\n", "任务 301122.SZ 完成\n", @@ -2680,8 +2633,8 @@ "任务 301128.SZ 完成\n", "任务 301129.SZ 完成\n", "任务 301130.SZ 完成\n", - "任务 301132.SZ 完成\n", "任务 301131.SZ 完成\n", + "任务 301132.SZ 完成\n", "任务 301133.SZ 完成\n", "任务 301135.SZ 完成\n", "任务 301136.SZ 完成\n", @@ -2690,20 +2643,20 @@ "任务 301139.SZ 完成\n", "任务 301141.SZ 完成\n", "任务 301148.SZ 完成\n", - "任务 301150.SZ 完成\n", "任务 301149.SZ 完成\n", + "任务 301150.SZ 完成\n", "任务 301151.SZ 完成\n", "任务 301152.SZ 完成\n", - "任务 301155.SZ 完成\n", "任务 301153.SZ 完成\n", - "任务 301157.SZ 完成\n", + "任务 301155.SZ 完成\n", "任务 301156.SZ 完成\n", + "任务 301157.SZ 完成\n", "任务 301158.SZ 完成\n", "任务 301159.SZ 完成\n", "任务 301160.SZ 完成\n", "任务 301161.SZ 完成\n", - "任务 301163.SZ 完成\n", "任务 301162.SZ 完成\n", + "任务 301163.SZ 完成\n", "任务 301165.SZ 完成\n", "任务 301166.SZ 完成\n", "任务 301167.SZ 完成\n", @@ -2720,8 +2673,8 @@ "任务 301180.SZ 完成\n", "任务 301181.SZ 完成\n", "任务 301182.SZ 完成\n", - "任务 301185.SZ 完成\n", "任务 301183.SZ 完成\n", + "任务 301185.SZ 完成\n", "任务 301186.SZ 完成\n", "任务 301187.SZ 完成\n", "任务 301188.SZ 完成\n", @@ -2794,12 +2747,12 @@ "任务 301272.SZ 完成\n", "任务 301273.SZ 完成\n", "任务 301276.SZ 完成\n", - "任务 301277.SZ 完成\n", "任务 301278.SZ 完成\n", - "任务 301279.SZ 完成\n", + "任务 301277.SZ 完成\n", "任务 301280.SZ 完成\n", - "任务 301281.SZ 完成\n", + "任务 301279.SZ 完成\n", "任务 301282.SZ 完成\n", + "任务 301281.SZ 完成\n", "任务 301283.SZ 完成\n", "任务 301285.SZ 完成\n", "任务 301286.SZ 完成\n", @@ -2814,6 +2767,7 @@ "任务 301296.SZ 完成\n", "任务 301297.SZ 完成\n", "任务 301298.SZ 完成\n", + "任务 301299.SZ 完成\n", "任务 301300.SZ 完成\n", "任务 301301.SZ 完成\n", "任务 301302.SZ 完成\n", @@ -2826,9 +2780,7 @@ "任务 301310.SZ 完成\n", "任务 301311.SZ 完成\n", "任务 301312.SZ 完成\n", - "\"None of ['trade_date'] are in the columns\"\n", "任务 301313.SZ 完成\n", - "任务 301299.SZ 完成\n", "任务 301314.SZ 完成\n", "任务 301315.SZ 完成\n", "任务 301316.SZ 完成\n", @@ -2913,19 +2865,19 @@ "任务 301469.SZ 完成\n", "任务 301486.SZ 完成\n", "任务 301487.SZ 完成\n", + "任务 301489.SZ 完成\n", "任务 301488.SZ 完成\n", "任务 301498.SZ 完成\n", - "任务 301489.SZ 完成\n", "任务 301499.SZ 完成\n", "任务 301500.SZ 完成\n", "任务 301502.SZ 完成\n", "任务 301503.SZ 完成\n", "任务 301505.SZ 完成\n", "任务 301507.SZ 完成\n", - "任务 301509.SZ 完成\n", "任务 301508.SZ 完成\n", - "任务 301511.SZ 完成\n", + "任务 301509.SZ 完成\n", "任务 301510.SZ 完成\n", + "任务 301511.SZ 完成\n", "任务 301512.SZ 完成\n", "任务 301515.SZ 完成\n", "任务 301516.SZ 完成\n", @@ -2941,8 +2893,8 @@ "任务 301533.SZ 完成\n", "任务 301536.SZ 完成\n", "任务 301538.SZ 完成\n", - "任务 301539.SZ 完成\n", "任务 301548.SZ 完成\n", + "任务 301539.SZ 完成\n", "任务 301550.SZ 完成\n", "任务 301551.SZ 完成\n", "任务 301552.SZ 完成\n", @@ -3030,15 +2982,15 @@ "任务 600035.SH 完成\n", "任务 600036.SH 完成\n", "任务 600037.SH 完成\n", - "任务 600039.SH 完成\n", "任务 600038.SH 完成\n", - "任务 600050.SH 完成\n", + "任务 600039.SH 完成\n", "任务 600048.SH 完成\n", + "任务 600050.SH 完成\n", "任务 600051.SH 完成\n", - "任务 600052.SH 完成\n", "任务 600053.SH 完成\n", - "任务 600054.SH 完成\n", + "任务 600052.SH 完成\n", "任务 600055.SH 完成\n", + "任务 600054.SH 完成\n", "任务 600056.SH 完成\n", "任务 600057.SH 完成\n", "任务 600058.SH 完成\n", @@ -3049,10 +3001,10 @@ "任务 600063.SH 完成\n", "任务 600064.SH 完成\n", "任务 600066.SH 完成\n", - "任务 600067.SH 完成\n", "任务 600070.SH 完成\n", - "任务 600071.SH 完成\n", + "任务 600067.SH 完成\n", "任务 600072.SH 完成\n", + "任务 600071.SH 完成\n", "任务 600073.SH 完成\n", "任务 600075.SH 完成\n", "任务 600076.SH 完成\n", @@ -3077,16 +3029,16 @@ "任务 600103.SH 完成\n", "任务 600104.SH 完成\n", "任务 600105.SH 完成\n", - "任务 600106.SH 完成\n", "任务 600107.SH 完成\n", + "任务 600106.SH 完成\n", "任务 600108.SH 完成\n", "任务 600109.SH 完成\n", "任务 600110.SH 完成\n", "任务 600111.SH 完成\n", - "任务 600113.SH 完成\n", "任务 600114.SH 完成\n", - "任务 600115.SH 完成\n", + "任务 600113.SH 完成\n", "任务 600116.SH 完成\n", + "任务 600115.SH 完成\n", "任务 600117.SH 完成\n", "任务 600118.SH 完成\n", "任务 600119.SH 完成\n", @@ -3138,24 +3090,24 @@ "任务 600179.SH 完成\n", "任务 600180.SH 完成\n", "任务 600182.SH 完成\n", - "任务 600183.SH 完成\n", "任务 600184.SH 完成\n", + "任务 600183.SH 完成\n", "任务 600185.SH 完成\n", "任务 600186.SH 完成\n", "任务 600187.SH 完成\n", "任务 600188.SH 完成\n", - "任务 600189.SH 完成\n", "任务 600190.SH 完成\n", - "任务 600191.SH 完成\n", + "任务 600189.SH 完成\n", "任务 600192.SH 完成\n", - "任务 600193.SH 完成\n", + "任务 600191.SH 完成\n", "任务 600195.SH 完成\n", + "任务 600193.SH 完成\n", "任务 600196.SH 完成\n", "任务 600197.SH 完成\n", "任务 600198.SH 完成\n", "任务 600199.SH 完成\n", - "任务 600200.SH 完成\n", "任务 600201.SH 完成\n", + "任务 600200.SH 完成\n", "任务 600202.SH 完成\n", "任务 600203.SH 完成\n", "任务 600206.SH 完成\n", @@ -3177,26 +3129,26 @@ "任务 600227.SH 完成\n", "任务 600228.SH 完成\n", "任务 600229.SH 完成\n", - "任务 600231.SH 完成\n", "任务 600230.SH 完成\n", "任务 600232.SH 完成\n", + "任务 600231.SH 完成\n", "任务 600233.SH 完成\n", "任务 600234.SH 完成\n", - "任务 600235.SH 完成\n", "任务 600236.SH 完成\n", + "任务 600235.SH 完成\n", "任务 600237.SH 完成\n", "任务 600238.SH 完成\n", - "任务 600239.SH 完成\n", "任务 600241.SH 完成\n", + "任务 600239.SH 完成\n", "任务 600243.SH 完成\n", "任务 600246.SH 完成\n", "任务 600248.SH 完成\n", "任务 600249.SH 完成\n", "任务 600250.SH 完成\n", - "任务 600252.SH 完成\n", "任务 600251.SH 完成\n", - "任务 600256.SH 完成\n", + "任务 600252.SH 完成\n", "任务 600255.SH 完成\n", + "任务 600256.SH 完成\n", "任务 600257.SH 完成\n", "任务 600258.SH 完成\n", "任务 600259.SH 完成\n", @@ -3213,8 +3165,8 @@ "任务 600276.SH 完成\n", "任务 600278.SH 完成\n", "任务 600279.SH 完成\n", - "任务 600281.SH 完成\n", "任务 600280.SH 完成\n", + "任务 600281.SH 完成\n", "任务 600282.SH 完成\n", "任务 600283.SH 完成\n", "任务 600284.SH 完成\n", @@ -3226,10 +3178,10 @@ "任务 600293.SH 完成\n", "任务 600295.SH 完成\n", "任务 600298.SH 完成\n", - "任务 600299.SH 完成\n", "任务 600300.SH 完成\n", - "任务 600301.SH 完成\n", + "任务 600299.SH 完成\n", "任务 600302.SH 完成\n", + "任务 600301.SH 完成\n", "任务 600303.SH 完成\n", "任务 600305.SH 完成\n", "任务 600307.SH 完成\n", @@ -3268,28 +3220,28 @@ "任务 600351.SH 完成\n", "任务 600352.SH 完成\n", "任务 600353.SH 完成\n", - "任务 600354.SH 完成\n", "任务 600355.SH 完成\n", - "任务 600356.SH 完成\n", + "任务 600354.SH 完成\n", "任务 600358.SH 完成\n", + "任务 600356.SH 完成\n", "任务 600359.SH 完成\n", "任务 600360.SH 完成\n", "任务 600361.SH 完成\n", "任务 600362.SH 完成\n", - "任务 600363.SH 完成\n", "任务 600365.SH 完成\n", - "任务 600366.SH 完成\n", + "任务 600363.SH 完成\n", "任务 600367.SH 完成\n", + "任务 600366.SH 完成\n", "任务 600368.SH 完成\n", "任务 600369.SH 完成\n", "任务 600370.SH 完成\n", "任务 600371.SH 完成\n", - "任务 600372.SH 完成\n", "任务 600373.SH 完成\n", + "任务 600372.SH 完成\n", "任务 600375.SH 完成\n", "任务 600376.SH 完成\n", - "任务 600377.SH 完成\n", "任务 600378.SH 完成\n", + "任务 600377.SH 完成\n", "任务 600379.SH 完成\n", "任务 600380.SH 完成\n", "任务 600381.SH 完成\n", @@ -3305,10 +3257,10 @@ "任务 600395.SH 完成\n", "任务 600396.SH 完成\n", "任务 600397.SH 完成\n", - "任务 600399.SH 完成\n", "任务 600398.SH 完成\n", - "任务 600403.SH 完成\n", + "任务 600399.SH 完成\n", "任务 600400.SH 完成\n", + "任务 600403.SH 完成\n", "任务 600405.SH 完成\n", "任务 600406.SH 完成\n", "任务 600408.SH 完成\n", @@ -3345,8 +3297,8 @@ "任务 600462.SH 完成\n", "任务 600463.SH 完成\n", "任务 600467.SH 完成\n", - "任务 600469.SH 完成\n", "任务 600468.SH 完成\n", + "任务 600469.SH 完成\n", "任务 600470.SH 完成\n", "任务 600475.SH 完成\n", "任务 600476.SH 完成\n", @@ -3373,8 +3325,8 @@ "任务 600501.SH 完成\n", "任务 600502.SH 完成\n", "任务 600503.SH 完成\n", - "任务 600505.SH 完成\n", "任务 600506.SH 完成\n", + "任务 600505.SH 完成\n", "任务 600507.SH 完成\n", "任务 600508.SH 完成\n", "任务 600509.SH 完成\n", @@ -3409,7 +3361,6 @@ "任务 600545.SH 完成\n", "任务 600546.SH 完成\n", "任务 600547.SH 完成\n", - "任务 600548.SH 完成\n", "任务 600549.SH 完成\n", "任务 600550.SH 完成\n", "任务 600551.SH 完成\n", @@ -3466,35 +3417,36 @@ "任务 600610.SH 完成\n", "任务 600611.SH 完成\n", "任务 600612.SH 完成\n", + "任务 600548.SH 完成\n", "任务 600613.SH 完成\n", "任务 600615.SH 完成\n", "任务 600616.SH 完成\n", - "任务 600617.SH 完成\n", "任务 600618.SH 完成\n", - "任务 600619.SH 完成\n", + "任务 600617.SH 完成\n", "任务 600620.SH 完成\n", - "任务 600621.SH 完成\n", + "任务 600619.SH 完成\n", "任务 600622.SH 完成\n", - "任务 600624.SH 完成\n", + "任务 600621.SH 完成\n", "任务 600623.SH 完成\n", + "任务 600624.SH 完成\n", "任务 600626.SH 完成\n", "任务 600628.SH 完成\n", - "任务 600630.SH 完成\n", "任务 600629.SH 完成\n", - "任务 600635.SH 完成\n", + "任务 600630.SH 完成\n", "任务 600633.SH 完成\n", - "任务 600636.SH 完成\n", + "任务 600635.SH 完成\n", "任务 600637.SH 完成\n", - "任务 600639.SH 完成\n", + "任务 600636.SH 完成\n", "任务 600638.SH 完成\n", + "任务 600639.SH 完成\n", "任务 600640.SH 完成\n", "任务 600641.SH 完成\n", "任务 600642.SH 完成\n", "任务 600643.SH 完成\n", "任务 600644.SH 完成\n", "任务 600645.SH 完成\n", - "任务 600649.SH 完成\n", "任务 600648.SH 完成\n", + "任务 600649.SH 完成\n", "任务 600650.SH 完成\n", "任务 600651.SH 完成\n", "任务 600653.SH 完成\n", @@ -3544,14 +3496,14 @@ "任务 600708.SH 完成\n", "任务 600710.SH 完成\n", "任务 600711.SH 完成\n", - "任务 600712.SH 完成\n", "任务 600713.SH 完成\n", + "任务 600712.SH 完成\n", "任务 600714.SH 完成\n", "任务 600715.SH 完成\n", "任务 600716.SH 完成\n", "任务 600717.SH 完成\n", - "任务 600718.SH 完成\n", "任务 600719.SH 完成\n", + "任务 600718.SH 完成\n", "任务 600720.SH 完成\n", "任务 600721.SH 完成\n", "任务 600722.SH 完成\n", @@ -3572,8 +3524,8 @@ "任务 600738.SH 完成\n", "任务 600739.SH 完成\n", "任务 600740.SH 完成\n", - "任务 600741.SH 完成\n", "任务 600742.SH 完成\n", + "任务 600741.SH 完成\n", "任务 600743.SH 完成\n", "任务 600744.SH 完成\n", "任务 600745.SH 完成\n", @@ -3611,6 +3563,7 @@ "任务 600784.SH 完成\n", "任务 600785.SH 完成\n", "任务 600787.SH 完成\n", + "任务 600789.SH 完成\n", "任务 600790.SH 完成\n", "任务 600791.SH 完成\n", "任务 600792.SH 完成\n", @@ -3624,9 +3577,7 @@ "任务 600801.SH 完成\n", "任务 600802.SH 完成\n", "任务 600803.SH 完成\n", - "\"None of [Index(['trade_date', 'adj_factor'], dtype='object')] are in the [columns]\"\n", "任务 600804.SH 完成\n", - "任务 600789.SH 完成\n", "任务 600805.SH 完成\n", "任务 600807.SH 完成\n", "任务 600808.SH 完成\n", @@ -3646,8 +3597,8 @@ "任务 600824.SH 完成\n", "任务 600825.SH 完成\n", "任务 600826.SH 完成\n", - "任务 600827.SH 完成\n", "任务 600828.SH 完成\n", + "任务 600827.SH 完成\n", "任务 600829.SH 完成\n", "任务 600830.SH 完成\n", "任务 600831.SH 完成\n", @@ -3672,18 +3623,18 @@ "任务 600857.SH 完成\n", "任务 600858.SH 完成\n", "任务 600859.SH 完成\n", - "任务 600860.SH 完成\n", "任务 600861.SH 完成\n", + "任务 600860.SH 完成\n", "任务 600862.SH 完成\n", "任务 600863.SH 完成\n", - "任务 600864.SH 完成\n", "任务 600865.SH 完成\n", + "任务 600864.SH 完成\n", "任务 600866.SH 完成\n", "任务 600867.SH 完成\n", - "任务 600868.SH 完成\n", "任务 600869.SH 完成\n", - "任务 600871.SH 完成\n", + "任务 600868.SH 完成\n", "任务 600872.SH 完成\n", + "任务 600871.SH 完成\n", "任务 600873.SH 完成\n", "任务 600874.SH 完成\n", "任务 600875.SH 完成\n", @@ -3738,18 +3689,18 @@ "任务 600963.SH 完成\n", "任务 600965.SH 完成\n", "任务 600966.SH 完成\n", - "任务 600967.SH 完成\n", "任务 600968.SH 完成\n", + "任务 600967.SH 完成\n", "任务 600969.SH 完成\n", "任务 600970.SH 完成\n", "任务 600971.SH 完成\n", "任务 600973.SH 完成\n", - "任务 600975.SH 完成\n", "任务 600976.SH 完成\n", + "任务 600975.SH 完成\n", "任务 600977.SH 完成\n", "任务 600979.SH 完成\n", - "任务 600980.SH 完成\n", "任务 600981.SH 完成\n", + "任务 600980.SH 完成\n", "任务 600982.SH 完成\n", "任务 600983.SH 完成\n", "任务 600984.SH 完成\n", @@ -3880,12 +3831,12 @@ "任务 601515.SH 完成\n", "任务 601518.SH 完成\n", "任务 601519.SH 完成\n", - "任务 601555.SH 完成\n", "任务 601528.SH 完成\n", - "任务 601567.SH 完成\n", + "任务 601555.SH 完成\n", "任务 601566.SH 完成\n", - "任务 601577.SH 完成\n", + "任务 601567.SH 完成\n", "任务 601568.SH 完成\n", + "任务 601577.SH 完成\n", "任务 601579.SH 完成\n", "任务 601588.SH 完成\n", "任务 601595.SH 完成\n", @@ -3988,8 +3939,8 @@ "任务 601992.SH 完成\n", "任务 601995.SH 完成\n", "任务 601996.SH 完成\n", - "任务 601997.SH 完成\n", "任务 601998.SH 完成\n", + "任务 601997.SH 完成\n", "任务 601999.SH 完成\n", "任务 603000.SH 完成\n", "任务 603001.SH 完成\n", @@ -4033,12 +3984,12 @@ "任务 603042.SH 完成\n", "任务 603043.SH 完成\n", "任务 603045.SH 完成\n", - "任务 603050.SH 完成\n", "任务 603048.SH 完成\n", + "任务 603050.SH 完成\n", "任务 603051.SH 完成\n", "任务 603052.SH 完成\n", - "任务 603055.SH 完成\n", "任务 603053.SH 完成\n", + "任务 603055.SH 完成\n", "任务 603056.SH 完成\n", "任务 603057.SH 完成\n", "任务 603058.SH 完成\n", @@ -4099,14 +4050,14 @@ "任务 603121.SH 完成\n", "任务 603122.SH 完成\n", "任务 603123.SH 完成\n", + "任务 603125.SH 完成\n", "任务 603126.SH 完成\n", "任务 603127.SH 完成\n", "任务 603128.SH 完成\n", - "任务 603125.SH 完成\n", - "任务 603130.SH 完成\n", "任务 603129.SH 完成\n", - "任务 603132.SH 完成\n", + "任务 603130.SH 完成\n", "任务 603131.SH 完成\n", + "任务 603132.SH 完成\n", "任务 603135.SH 完成\n", "任务 603136.SH 完成\n", "任务 603137.SH 完成\n", @@ -4126,28 +4077,28 @@ "任务 603165.SH 完成\n", "任务 603166.SH 完成\n", "任务 603167.SH 完成\n", - "任务 603168.SH 完成\n", "任务 603169.SH 完成\n", - "任务 603170.SH 完成\n", + "任务 603168.SH 完成\n", "任务 603171.SH 完成\n", + "任务 603170.SH 完成\n", "任务 603172.SH 完成\n", "任务 603173.SH 完成\n", - "任务 603176.SH 完成\n", "任务 603177.SH 完成\n", - "任务 603178.SH 完成\n", + "任务 603176.SH 完成\n", "任务 603179.SH 完成\n", - "任务 603180.SH 完成\n", + "任务 603178.SH 完成\n", "任务 603181.SH 完成\n", - "任务 603182.SH 完成\n", + "任务 603180.SH 完成\n", "任务 603183.SH 完成\n", + "任务 603182.SH 完成\n", "任务 603185.SH 完成\n", "任务 603186.SH 完成\n", "任务 603187.SH 完成\n", "任务 603188.SH 完成\n", "任务 603189.SH 完成\n", "任务 603190.SH 完成\n", - "任务 603191.SH 完成\n", "任务 603192.SH 完成\n", + "任务 603191.SH 完成\n", "任务 603193.SH 完成\n", "任务 603194.SH 完成\n", "任务 603195.SH 完成\n", @@ -4187,8 +4138,8 @@ "任务 603233.SH 完成\n", "任务 603235.SH 完成\n", "任务 603236.SH 完成\n", - "任务 603238.SH 完成\n", "任务 603237.SH 完成\n", + "任务 603238.SH 完成\n", "任务 603239.SH 完成\n", "任务 603255.SH 完成\n", "任务 603256.SH 完成\n", @@ -4205,8 +4156,8 @@ "任务 603273.SH 完成\n", "任务 603275.SH 完成\n", "任务 603276.SH 完成\n", - "任务 603278.SH 完成\n", "任务 603277.SH 完成\n", + "任务 603278.SH 完成\n", "任务 603279.SH 完成\n", "任务 603280.SH 完成\n", "任务 603281.SH 完成\n", @@ -4231,18 +4182,18 @@ "任务 603308.SH 完成\n", "任务 603309.SH 完成\n", "任务 603310.SH 完成\n", - "任务 603312.SH 完成\n", "任务 603311.SH 完成\n", + "任务 603312.SH 完成\n", "任务 603313.SH 完成\n", "任务 603315.SH 完成\n", "任务 603316.SH 完成\n", "任务 603317.SH 完成\n", - "任务 603319.SH 完成\n", "任务 603318.SH 完成\n", + "任务 603319.SH 完成\n", "任务 603320.SH 完成\n", "任务 603321.SH 完成\n", - "任务 603323.SH 完成\n", "任务 603322.SH 完成\n", + "任务 603323.SH 完成\n", "任务 603324.SH 完成\n", "任务 603325.SH 完成\n", "任务 603326.SH 完成\n", @@ -4251,12 +4202,12 @@ "任务 603329.SH 完成\n", "任务 603330.SH 完成\n", "任务 603331.SH 完成\n", - "任务 603333.SH 完成\n", "任务 603332.SH 完成\n", + "任务 603333.SH 完成\n", "任务 603335.SH 完成\n", "任务 603336.SH 完成\n", - "任务 603338.SH 完成\n", "任务 603337.SH 完成\n", + "任务 603338.SH 完成\n", "任务 603339.SH 完成\n", "任务 603341.SH 完成\n", "任务 603344.SH 完成\n", @@ -4277,8 +4228,8 @@ "任务 603367.SH 完成\n", "任务 603368.SH 完成\n", "任务 603369.SH 完成\n", - "任务 603375.SH 完成\n", "任务 603373.SH 完成\n", + "任务 603375.SH 完成\n", "任务 603377.SH 完成\n", "任务 603378.SH 完成\n", "任务 603379.SH 完成\n", @@ -4289,8 +4240,8 @@ "任务 603386.SH 完成\n", "任务 603387.SH 完成\n", "任务 603388.SH 完成\n", - "任务 603390.SH 完成\n", "任务 603389.SH 完成\n", + "任务 603390.SH 完成\n", "任务 603391.SH 完成\n", "任务 603392.SH 完成\n", "任务 603393.SH 完成\n", @@ -4303,26 +4254,26 @@ "任务 603421.SH 完成\n", "任务 603429.SH 完成\n", "任务 603439.SH 完成\n", - "任务 603456.SH 完成\n", "任务 603444.SH 完成\n", + "任务 603456.SH 完成\n", "任务 603458.SH 完成\n", "任务 603466.SH 完成\n", "任务 603477.SH 完成\n", "任务 603486.SH 完成\n", - "任务 603489.SH 完成\n", "任务 603488.SH 完成\n", + "任务 603489.SH 完成\n", "任务 603496.SH 完成\n", "任务 603499.SH 完成\n", "任务 603500.SH 完成\n", "任务 603501.SH 完成\n", - "任务 603506.SH 完成\n", "任务 603505.SH 完成\n", + "任务 603506.SH 完成\n", "任务 603507.SH 完成\n", "任务 603508.SH 完成\n", "任务 603511.SH 完成\n", "任务 603515.SH 完成\n", - "任务 603517.SH 完成\n", "任务 603516.SH 完成\n", + "任务 603517.SH 完成\n", "任务 603518.SH 完成\n", "任务 603519.SH 完成\n", "任务 603520.SH 完成\n", @@ -4367,6 +4318,7 @@ "任务 603607.SH 完成\n", "任务 603608.SH 完成\n", "任务 603609.SH 完成\n", + "任务 603610.SH 完成\n", "任务 603611.SH 完成\n", "任务 603612.SH 完成\n", "任务 603613.SH 完成\n", @@ -4379,29 +4331,27 @@ "任务 603628.SH 完成\n", "任务 603629.SH 完成\n", "任务 603630.SH 完成\n", - "\"None of ['trade_date'] are in the columns\"\n", "任务 603633.SH 完成\n", - "任务 603610.SH 完成\n", "任务 603636.SH 完成\n", "任务 603637.SH 完成\n", "任务 603638.SH 完成\n", - "任务 603648.SH 完成\n", "任务 603639.SH 完成\n", - "任务 603655.SH 完成\n", + "任务 603648.SH 完成\n", "任务 603650.SH 完成\n", - "任务 603657.SH 完成\n", + "任务 603655.SH 完成\n", "任务 603656.SH 完成\n", + "任务 603657.SH 完成\n", "任务 603658.SH 完成\n", - "任务 603659.SH 完成\n", "任务 603660.SH 完成\n", + "任务 603659.SH 完成\n", "任务 603661.SH 完成\n", - "任务 603663.SH 完成\n", "任务 603662.SH 完成\n", + "任务 603663.SH 完成\n", "任务 603665.SH 完成\n", "任务 603666.SH 完成\n", "任务 603667.SH 完成\n", - "任务 603668.SH 完成\n", "任务 603669.SH 完成\n", + "任务 603668.SH 完成\n", "任务 603676.SH 完成\n", "任务 603677.SH 完成\n", "任务 603678.SH 完成\n", @@ -4412,10 +4362,10 @@ "任务 603683.SH 完成\n", "任务 603685.SH 完成\n", "任务 603686.SH 完成\n", - "任务 603687.SH 完成\n", "任务 603688.SH 完成\n", - "任务 603689.SH 完成\n", + "任务 603687.SH 完成\n", "任务 603690.SH 完成\n", + "任务 603689.SH 完成\n", "任务 603693.SH 完成\n", "任务 603696.SH 完成\n", "任务 603697.SH 完成\n", @@ -4423,35 +4373,35 @@ "任务 603699.SH 完成\n", "任务 603700.SH 完成\n", "任务 603701.SH 完成\n", - "任务 603706.SH 完成\n", "任务 603703.SH 完成\n", "任务 603707.SH 完成\n", - "任务 603708.SH 完成\n", + "任务 603706.SH 完成\n", "任务 603709.SH 完成\n", + "任务 603708.SH 完成\n", "任务 603711.SH 完成\n", - "任务 603713.SH 完成\n", "任务 603712.SH 完成\n", + "任务 603713.SH 完成\n", "任务 603716.SH 完成\n", - "任务 603717.SH 完成\n", "任务 603718.SH 完成\n", + "任务 603717.SH 完成\n", "任务 603719.SH 完成\n", - "任务 603722.SH 完成\n", "任务 603721.SH 完成\n", - "任务 603726.SH 完成\n", + "任务 603722.SH 完成\n", "任务 603725.SH 完成\n", "任务 603727.SH 完成\n", - "任务 603728.SH 完成\n", + "任务 603726.SH 完成\n", "任务 603729.SH 完成\n", + "任务 603728.SH 完成\n", "任务 603730.SH 完成\n", "任务 603733.SH 完成\n", - "任务 603737.SH 完成\n", "任务 603738.SH 完成\n", + "任务 603737.SH 完成\n", "任务 603739.SH 完成\n", "任务 603755.SH 完成\n", "任务 603757.SH 完成\n", "任务 603758.SH 完成\n", - "任务 603759.SH 完成\n", "任务 603766.SH 完成\n", + "任务 603759.SH 完成\n", "任务 603767.SH 完成\n", "任务 603768.SH 完成\n", "任务 603773.SH 完成\n", @@ -4460,16 +4410,16 @@ "任务 603778.SH 完成\n", "任务 603779.SH 完成\n", "任务 603786.SH 完成\n", - "任务 603787.SH 完成\n", "任务 603788.SH 完成\n", - "任务 603789.SH 完成\n", + "任务 603787.SH 完成\n", "任务 603790.SH 完成\n", + "任务 603789.SH 完成\n", "任务 603797.SH 完成\n", "任务 603798.SH 完成\n", "任务 603799.SH 完成\n", "任务 603800.SH 完成\n", - "任务 603801.SH 完成\n", "任务 603803.SH 完成\n", + "任务 603801.SH 完成\n", "任务 603806.SH 完成\n", "任务 603808.SH 完成\n", "任务 603809.SH 完成\n", @@ -4509,10 +4459,10 @@ "任务 603877.SH 完成\n", "任务 603878.SH 完成\n", "任务 603879.SH 完成\n", - "任务 603881.SH 完成\n", "任务 603880.SH 完成\n", - "任务 603883.SH 完成\n", + "任务 603881.SH 完成\n", "任务 603882.SH 完成\n", + "任务 603883.SH 完成\n", "任务 603885.SH 完成\n", "任务 603886.SH 完成\n", "任务 603887.SH 完成\n", @@ -4605,8 +4555,8 @@ "任务 605068.SH 完成\n", "任务 605069.SH 完成\n", "任务 605077.SH 完成\n", - "任务 605081.SH 完成\n", "任务 605080.SH 完成\n", + "任务 605081.SH 完成\n", "任务 605086.SH 完成\n", "任务 605088.SH 完成\n", "任务 605089.SH 完成\n", @@ -4631,8 +4581,8 @@ "任务 605162.SH 完成\n", "任务 605166.SH 完成\n", "任务 605167.SH 完成\n", - "任务 605169.SH 完成\n", "任务 605168.SH 完成\n", + "任务 605169.SH 完成\n", "任务 605177.SH 完成\n", "任务 605178.SH 完成\n", "任务 605179.SH 完成\n", @@ -4653,8 +4603,8 @@ "任务 605259.SH 完成\n", "任务 605266.SH 完成\n", "任务 605268.SH 完成\n", - "任务 605286.SH 完成\n", "任务 605277.SH 完成\n", + "任务 605286.SH 完成\n", "任务 605287.SH 完成\n", "任务 605288.SH 完成\n", "任务 605289.SH 完成\n", @@ -4772,12 +4722,12 @@ "任务 688084.SH 完成\n", "任务 688085.SH 完成\n", "任务 688087.SH 完成\n", - "任务 688089.SH 完成\n", "任务 688088.SH 完成\n", + "任务 688089.SH 完成\n", "任务 688090.SH 完成\n", "任务 688091.SH 完成\n", - "任务 688093.SH 完成\n", "任务 688092.SH 完成\n", + "任务 688093.SH 完成\n", "任务 688095.SH 完成\n", "任务 688096.SH 完成\n", "任务 688097.SH 完成\n", @@ -4812,35 +4762,35 @@ "任务 688128.SH 完成\n", "任务 688129.SH 完成\n", "任务 688130.SH 完成\n", - "任务 688132.SH 完成\n", "任务 688131.SH 完成\n", - "任务 688135.SH 完成\n", + "任务 688132.SH 完成\n", "任务 688133.SH 完成\n", "任务 688136.SH 完成\n", + "任务 688135.SH 完成\n", "任务 688137.SH 完成\n", - "任务 688139.SH 完成\n", "任务 688138.SH 完成\n", + "任务 688139.SH 完成\n", "任务 688141.SH 完成\n", - "任务 688143.SH 完成\n", "任务 688146.SH 完成\n", + "任务 688143.SH 完成\n", "任务 688147.SH 完成\n", "任务 688148.SH 完成\n", "任务 688150.SH 完成\n", - "任务 688152.SH 完成\n", "任务 688151.SH 完成\n", - "任务 688155.SH 完成\n", + "任务 688152.SH 完成\n", "任务 688153.SH 完成\n", - "任务 688157.SH 完成\n", + "任务 688155.SH 完成\n", "任务 688156.SH 完成\n", - "任务 688159.SH 完成\n", + "任务 688157.SH 完成\n", "任务 688158.SH 完成\n", + "任务 688159.SH 完成\n", "任务 688160.SH 完成\n", "任务 688161.SH 完成\n", "任务 688162.SH 完成\n", "任务 688163.SH 完成\n", "任务 688165.SH 完成\n", - "任务 688166.SH 完成\n", "任务 688167.SH 完成\n", + "任务 688166.SH 完成\n", "任务 688168.SH 完成\n", "任务 688169.SH 完成\n", "任务 688170.SH 完成\n", @@ -4857,10 +4807,10 @@ "任务 688182.SH 完成\n", "任务 688183.SH 完成\n", "任务 688184.SH 完成\n", - "任务 688185.SH 完成\n", - "任务 688187.SH 完成\n", "任务 688186.SH 完成\n", + "任务 688185.SH 完成\n", "任务 688188.SH 完成\n", + "任务 688187.SH 完成\n", "任务 688189.SH 完成\n", "任务 688190.SH 完成\n", "任务 688191.SH 完成\n", @@ -4913,16 +4863,16 @@ "任务 688247.SH 完成\n", "任务 688248.SH 完成\n", "任务 688249.SH 完成\n", - "任务 688251.SH 完成\n", "任务 688252.SH 完成\n", - "任务 688253.SH 完成\n", + "任务 688251.SH 完成\n", "任务 688255.SH 完成\n", - "任务 688256.SH 完成\n", + "任务 688253.SH 完成\n", "任务 688257.SH 完成\n", - "任务 688258.SH 完成\n", + "任务 688256.SH 完成\n", "任务 688259.SH 完成\n", - "任务 688260.SH 完成\n", + "任务 688258.SH 完成\n", "任务 688261.SH 完成\n", + "任务 688260.SH 完成\n", "任务 688262.SH 完成\n", "任务 688265.SH 完成\n", "任务 688266.SH 完成\n", @@ -5026,8 +4976,8 @@ "任务 688377.SH 完成\n", "任务 688378.SH 完成\n", "任务 688379.SH 完成\n", - "任务 688381.SH 完成\n", "任务 688380.SH 完成\n", + "任务 688381.SH 完成\n", "任务 688382.SH 完成\n", "任务 688383.SH 完成\n", "任务 688385.SH 完成\n", @@ -5058,16 +5008,16 @@ "任务 688426.SH 完成\n", "任务 688428.SH 完成\n", "任务 688429.SH 完成\n", - "任务 688433.SH 完成\n", "任务 688432.SH 完成\n", - "任务 688439.SH 完成\n", "任务 688435.SH 完成\n", - "任务 688448.SH 完成\n", + "任务 688433.SH 完成\n", "任务 688443.SH 完成\n", + "任务 688439.SH 完成\n", "任务 688449.SH 完成\n", + "任务 688448.SH 完成\n", "任务 688450.SH 完成\n", - "任务 688456.SH 完成\n", "任务 688455.SH 完成\n", + "任务 688456.SH 完成\n", "任务 688458.SH 完成\n", "任务 688459.SH 完成\n", "任务 688466.SH 完成\n", @@ -5089,12 +5039,12 @@ "任务 688500.SH 完成\n", "任务 688501.SH 完成\n", "任务 688502.SH 完成\n", - "任务 688503.SH 完成\n", "任务 688505.SH 完成\n", + "任务 688503.SH 完成\n", "任务 688506.SH 完成\n", "任务 688507.SH 完成\n", - "任务 688508.SH 完成\n", "任务 688509.SH 完成\n", + "任务 688508.SH 完成\n", "任务 688510.SH 完成\n", "任务 688511.SH 完成\n", "任务 688512.SH 完成\n", @@ -5127,27 +5077,27 @@ "任务 688551.SH 完成\n", "任务 688552.SH 完成\n", "任务 688553.SH 完成\n", - "任务 688556.SH 完成\n", "任务 688557.SH 完成\n", + "任务 688556.SH 完成\n", "任务 688558.SH 完成\n", "任务 688559.SH 完成\n", - "任务 688560.SH 完成\n", "任务 688561.SH 完成\n", + "任务 688560.SH 完成\n", "任务 688562.SH 完成\n", "任务 688563.SH 完成\n", - "任务 688565.SH 完成\n", "任务 688566.SH 完成\n", - "任务 688567.SH 完成\n", + "任务 688565.SH 完成\n", "任务 688568.SH 完成\n", - "任务 688569.SH 完成\n", + "任务 688567.SH 完成\n", "任务 688570.SH 完成\n", - "任务 688571.SH 完成\n", + "任务 688569.SH 完成\n", "任务 688573.SH 完成\n", + "任务 688571.SH 完成\n", "任务 688575.SH 完成\n", - "任务 688577.SH 完成\n", "任务 688576.SH 完成\n", - "任务 688579.SH 完成\n", + "任务 688577.SH 完成\n", "任务 688578.SH 完成\n", + "任务 688579.SH 完成\n", "任务 688580.SH 完成\n", "任务 688581.SH 完成\n", "任务 688582.SH 完成\n", @@ -5155,10 +5105,11 @@ "任务 688584.SH 完成\n", "任务 688585.SH 完成\n", "任务 688586.SH 完成\n", - "任务 688588.SH 完成\n", "任务 688589.SH 完成\n", + "任务 688588.SH 完成\n", "任务 688590.SH 完成\n", "任务 688591.SH 完成\n", + "任务 688593.SH 完成\n", "任务 688592.SH 完成\n", "任务 688595.SH 完成\n", "任务 688596.SH 完成\n", @@ -5168,20 +5119,18 @@ "任务 688600.SH 完成\n", "任务 688601.SH 完成\n", "任务 688602.SH 完成\n", - "任务 688603.SH 完成\n", "任务 688605.SH 完成\n", + "任务 688603.SH 完成\n", "任务 688606.SH 完成\n", "任务 688607.SH 完成\n", - "任务 688608.SH 完成\n", - "\"None of ['trade_date'] are in the columns\"\n", "任务 688609.SH 完成\n", - "任务 688593.SH 完成\n", + "任务 688608.SH 完成\n", "任务 688610.SH 完成\n", "任务 688611.SH 完成\n", - "任务 688613.SH 完成\n", "任务 688612.SH 完成\n", - "任务 688616.SH 完成\n", + "任务 688613.SH 完成\n", "任务 688615.SH 完成\n", + "任务 688616.SH 完成\n", "任务 688617.SH 完成\n", "任务 688618.SH 完成\n", "任务 688619.SH 完成\n", @@ -5221,10 +5170,10 @@ "任务 688670.SH 完成\n", "任务 688671.SH 完成\n", "任务 688676.SH 完成\n", - "任务 688677.SH 完成\n", "任务 688678.SH 完成\n", - "任务 688679.SH 完成\n", + "任务 688677.SH 完成\n", "任务 688680.SH 完成\n", + "任务 688679.SH 完成\n", "任务 688681.SH 完成\n", "任务 688682.SH 完成\n", "任务 688683.SH 完成\n", @@ -5256,10 +5205,10 @@ "任务 688720.SH 完成\n", "任务 688721.SH 完成\n", "任务 688722.SH 完成\n", - "任务 688728.SH 完成\n", "任务 688726.SH 完成\n", - "任务 688737.SH 完成\n", + "任务 688728.SH 完成\n", "任务 688733.SH 完成\n", + "任务 688737.SH 完成\n", "任务 688739.SH 完成\n", "任务 688750.SH 完成\n", "任务 688758.SH 完成\n", @@ -5268,18 +5217,18 @@ "任务 688768.SH 完成\n", "任务 688772.SH 完成\n", "任务 688776.SH 完成\n", - "任务 688778.SH 完成\n", "任务 688777.SH 完成\n", + "任务 688778.SH 完成\n", "任务 688779.SH 完成\n", "任务 688786.SH 完成\n", - "任务 688788.SH 完成\n", "任务 688787.SH 完成\n", - "任务 688793.SH 完成\n", + "任务 688788.SH 完成\n", "任务 688789.SH 完成\n", + "任务 688793.SH 完成\n", "任务 688798.SH 完成\n", "任务 688799.SH 完成\n", - "任务 688819.SH 完成\n", "任务 688800.SH 完成\n", + "任务 688819.SH 完成\n", "任务 688981.SH 完成\n", "任务 830779.BJ 完成\n", "任务 830799.BJ 完成\n", @@ -5296,19 +5245,19 @@ "任务 831087.BJ 完成\n", "任务 831152.BJ 完成\n", "任务 831167.BJ 完成\n", - "任务 831195.BJ 完成\n", "任务 831175.BJ 完成\n", + "任务 831195.BJ 完成\n", "任务 831278.BJ 完成\n", "任务 831304.BJ 完成\n", "任务 831305.BJ 完成\n", - "任务 831370.BJ 完成\n", - "任务 831445.BJ 完成\n", "任务 831396.BJ 完成\n", + "任务 831370.BJ 完成\n", "任务 831526.BJ 完成\n", + "任务 831445.BJ 完成\n", "任务 831627.BJ 完成\n", "任务 831641.BJ 完成\n", - "任务 831689.BJ 完成\n", "任务 831726.BJ 完成\n", + "任务 831689.BJ 完成\n", "任务 831768.BJ 完成\n", "任务 831832.BJ 完成\n", "任务 831834.BJ 完成\n", @@ -5317,31 +5266,30 @@ "任务 831906.BJ 完成\n", "任务 831961.BJ 完成\n", "任务 832000.BJ 完成\n", - "任务 832023.BJ 完成\n", "任务 832089.BJ 完成\n", + "任务 832023.BJ 完成\n", "任务 832110.BJ 完成\n", "任务 832145.BJ 完成\n", "任务 832149.BJ 完成\n", "任务 832171.BJ 完成\n", "任务 832175.BJ 完成\n", "任务 832225.BJ 完成\n", - "任务 832278.BJ 完成\n", "任务 832419.BJ 完成\n", - "任务 832469.BJ 完成\n", + "任务 832278.BJ 完成\n", "任务 832471.BJ 完成\n", - "任务 832491.BJ 完成\n", + "任务 832469.BJ 完成\n", "任务 832522.BJ 完成\n", - "任务 832566.BJ 完成\n", + "任务 832491.BJ 完成\n", "任务 832651.BJ 完成\n", + "任务 832566.BJ 完成\n", "任务 832662.BJ 完成\n", "任务 832735.BJ 完成\n", - "任务 832786.BJ 完成\n", "任务 832802.BJ 完成\n", + "任务 832786.BJ 完成\n", "任务 832876.BJ 完成\n", "任务 832885.BJ 完成\n", "任务 832978.BJ 完成\n", "任务 832982.BJ 完成\n", - "任务 833030.BJ 完成\n", "任务 833075.BJ 完成\n", "任务 833171.BJ 完成\n", "任务 833230.BJ 完成\n", @@ -5395,11 +5343,12 @@ "任务 835857.BJ 完成\n", "任务 835892.BJ 完成\n", "任务 835985.BJ 完成\n", + "任务 833030.BJ 完成\n", "任务 836077.BJ 完成\n", "任务 836149.BJ 完成\n", "任务 836208.BJ 完成\n", - "任务 836239.BJ 完成\n", "任务 836221.BJ 完成\n", + "任务 836239.BJ 完成\n", "任务 836247.BJ 完成\n", "任务 836260.BJ 完成\n", "任务 836263.BJ 完成\n", @@ -5408,28 +5357,28 @@ "任务 836414.BJ 完成\n", "任务 836419.BJ 完成\n", "任务 836422.BJ 完成\n", - "任务 836504.BJ 完成\n", "任务 836433.BJ 完成\n", - "任务 836675.BJ 完成\n", + "任务 836504.BJ 完成\n", "任务 836547.BJ 完成\n", + "任务 836675.BJ 完成\n", "任务 836699.BJ 完成\n", "任务 836717.BJ 完成\n", - "任务 836807.BJ 完成\n", "任务 836720.BJ 完成\n", - "任务 836871.BJ 完成\n", + "任务 836807.BJ 完成\n", "任务 836826.BJ 完成\n", + "任务 836871.BJ 完成\n", "任务 836892.BJ 完成\n", "任务 836942.BJ 完成\n", "任务 836957.BJ 完成\n", "任务 836961.BJ 完成\n", "任务 837006.BJ 完成\n", "任务 837023.BJ 完成\n", - "任务 837092.BJ 完成\n", "任务 837046.BJ 完成\n", - "任务 837212.BJ 完成\n", + "任务 837092.BJ 完成\n", "任务 837174.BJ 完成\n", - "任务 837344.BJ 完成\n", + "任务 837212.BJ 完成\n", "任务 837242.BJ 完成\n", + "任务 837344.BJ 完成\n", "任务 837403.BJ 完成\n", "任务 837592.BJ 完成\n", "任务 837663.BJ 完成\n", @@ -5455,19 +5404,19 @@ "任务 839680.BJ 完成\n", "任务 839719.BJ 完成\n", "任务 839725.BJ 完成\n", - "任务 839729.BJ 完成\n", "任务 839790.BJ 完成\n", - "任务 839792.BJ 完成\n", + "任务 839729.BJ 完成\n", "任务 839946.BJ 完成\n", + "任务 839792.BJ 完成\n", "任务 870199.BJ 完成\n", - "任务 870299.BJ 完成\n", "任务 870204.BJ 完成\n", - "任务 870436.BJ 完成\n", + "任务 870299.BJ 完成\n", "任务 870357.BJ 完成\n", + "任务 870436.BJ 完成\n", "任务 870508.BJ 完成\n", "任务 870656.BJ 完成\n", - "任务 870866.BJ 完成\n", "任务 870726.BJ 完成\n", + "任务 870866.BJ 完成\n", "任务 870976.BJ 完成\n", "任务 871245.BJ 完成\n", "任务 871263.BJ 完成\n", @@ -5476,8 +5425,8 @@ "任务 871553.BJ 完成\n", "任务 871634.BJ 完成\n", "任务 871642.BJ 完成\n", - "任务 871753.BJ 完成\n", "任务 871694.BJ 完成\n", + "任务 871753.BJ 完成\n", "任务 871857.BJ 完成\n", "任务 871970.BJ 完成\n", "任务 871981.BJ 完成\n", @@ -5568,12 +5517,12 @@ "任务 000588.SZ 完成\n", "任务 000594.SZ 完成\n", "任务 000602.SZ 完成\n", - "任务 000606.SZ 完成\n", "任务 000611.SZ 完成\n", + "任务 000606.SZ 完成\n", "任务 000613.SZ 完成\n", "任务 000616.SZ 完成\n", - "任务 000618.SZ 完成\n", "任务 000621.SZ 完成\n", + "任务 000618.SZ 完成\n", "任务 000653.SZ 完成\n", "任务 000658.SZ 完成\n", "任务 000660.SZ 完成\n", @@ -5595,8 +5544,8 @@ "任务 000765.SZ 完成\n", "任务 000769.SZ 完成\n", "任务 000780.SZ 完成\n", - "任务 000787.SZ 完成\n", "任务 000805.SZ 完成\n", + "任务 000787.SZ 完成\n", "任务 000806.SZ 完成\n", "任务 000817.SZ 完成\n", "任务 000827.SZ 完成\n", @@ -5648,8 +5597,8 @@ "任务 002503.SZ 完成\n", "任务 002504.SZ 完成\n", "任务 002505.SZ 完成\n", - "任务 002604.SZ 完成\n", "任务 002509.SZ 完成\n", + "任务 002604.SZ 完成\n", "任务 002610.SZ 完成\n", "任务 002618.SZ 完成\n", "任务 002619.SZ 完成\n", @@ -5658,16 +5607,16 @@ "任务 002680.SZ 完成\n", "任务 002684.SZ 完成\n", "任务 002699.SZ 完成\n", - "任务 002740.SZ 完成\n", "任务 002711.SZ 完成\n", + "任务 002740.SZ 完成\n", "任务 002751.SZ 完成\n", "任务 002770.SZ 完成\n", "任务 002776.SZ 完成\n", "任务 002781.SZ 完成\n", - "任务 300028.SZ 完成\n", "任务 300023.SZ 完成\n", - "任务 300064.SZ 完成\n", + "任务 300028.SZ 完成\n", "任务 300038.SZ 完成\n", + "任务 300064.SZ 完成\n", "任务 300089.SZ 完成\n", "任务 300090.SZ 完成\n", "任务 300104.SZ 完成\n", @@ -5692,26 +5641,26 @@ "任务 300372.SZ 完成\n", "任务 300392.SZ 完成\n", "任务 300431.SZ 完成\n", - "任务 300526.SZ 完成\n", "任务 300495.SZ 完成\n", + "任务 300526.SZ 完成\n", "任务 300742.SZ 完成\n", "任务 300799.SZ 完成\n", "任务 600001.SH 完成\n", "任务 600002.SH 完成\n", - "任务 600005.SH 完成\n", "任务 600003.SH 完成\n", - "任务 600068.SH 完成\n", + "任务 600005.SH 完成\n", "任务 600065.SH 完成\n", + "任务 600068.SH 完成\n", "任务 600069.SH 完成\n", "任务 600074.SH 完成\n", - "任务 600086.SH 完成\n", "任务 600077.SH 完成\n", - "任务 600090.SH 完成\n", + "任务 600086.SH 完成\n", "任务 600087.SH 完成\n", - "任务 600092.SH 完成\n", + "任务 600090.SH 完成\n", "任务 600091.SH 完成\n", - "任务 600102.SH 完成\n", + "任务 600092.SH 完成\n", "任务 600093.SH 完成\n", + "任务 600102.SH 完成\n", "任务 600112.SH 完成\n", "任务 600122.SH 完成\n", "任务 600139.SH 完成\n", @@ -5739,8 +5688,8 @@ "任务 600297.SH 完成\n", "任务 600306.SH 完成\n", "任务 600311.SH 完成\n", - "任务 600317.SH 完成\n", "任务 600321.SH 完成\n", + "任务 600317.SH 完成\n", "任务 600357.SH 完成\n", "任务 600385.SH 完成\n", "任务 600393.SH 完成\n", @@ -5751,21 +5700,21 @@ "任务 600485.SH 完成\n", "任务 600532.SH 完成\n", "任务 600553.SH 完成\n", - "任务 600555.SH 完成\n", "任务 600565.SH 完成\n", - "任务 600591.SH 完成\n", + "任务 600555.SH 完成\n", "任务 600607.SH 完成\n", + "任务 600591.SH 完成\n", "任务 600614.SH 完成\n", "任务 600625.SH 完成\n", "任务 600627.SH 完成\n", - "任务 600632.SH 完成\n", "任务 600631.SH 完成\n", + "任务 600632.SH 完成\n", "任务 600634.SH 完成\n", "任务 600646.SH 完成\n", - "任务 600652.SH 完成\n", "任务 600647.SH 完成\n", - "任务 600659.SH 完成\n", + "任务 600652.SH 完成\n", "任务 600656.SH 完成\n", + "任务 600659.SH 完成\n", "任务 600669.SH 完成\n", "任务 600670.SH 完成\n", "任务 600672.SH 完成\n", @@ -5773,8 +5722,8 @@ "任务 600680.SH 完成\n", "任务 600687.SH 完成\n", "任务 600695.SH 完成\n", - "任务 600700.SH 完成\n", "任务 600701.SH 完成\n", + "任务 600700.SH 完成\n", "任务 600709.SH 完成\n", "任务 600723.SH 完成\n", "任务 600747.SH 完成\n", @@ -5792,24 +5741,24 @@ "任务 600823.SH 完成\n", "任务 600832.SH 完成\n", "任务 600836.SH 完成\n", - "任务 600842.SH 完成\n", "任务 600840.SH 完成\n", + "任务 600842.SH 完成\n", "任务 600852.SH 完成\n", "任务 600856.SH 完成\n", "任务 600870.SH 完成\n", "任务 600878.SH 完成\n", "任务 600890.SH 完成\n", - "任务 600891.SH 完成\n", "任务 600896.SH 完成\n", + "任务 600891.SH 完成\n", "任务 600899.SH 完成\n", "任务 600978.SH 完成\n", - "任务 600991.SH 完成\n", "任务 601258.SH 完成\n", + "任务 600991.SH 完成\n", "任务 601268.SH 完成\n", - "任务 601558.SH 完成\n", "任务 601299.SH 完成\n", - "任务 603157.SH 完成\n", + "任务 601558.SH 完成\n", "任务 603133.SH 完成\n", + "任务 603157.SH 完成\n", "任务 603555.SH 完成\n", "任务 603603.SH 完成\n", "任务 603996.SH 完成\n", @@ -5817,82 +5766,118 @@ "任务 688555.SH 完成\n", "任务 832317.BJ 完成\n", "任务 833874.BJ 完成\n", - "任务 833994.BJ 完成\n", - "任务 T00018.SH 完成\n" + "任务 T00018.SH 完成\n", + "任务 833994.BJ 完成\n" ] } ], - "execution_count": 4 + "source": [ + "from concurrent.futures import ThreadPoolExecutor, as_completed\n", + "\n", + "# 读取本地保存的股票列表 CSV 文件(假设文件名为 stocks_data.csv)\n", + "stocks_df = pd.read_csv('../../../stocks_list.csv', encoding='utf-8-sig')\n", + "\n", + "# 用于存放所有股票的日线数据(每次获取的 DataFrame)\n", + "daily_data_list = []\n", + "\n", + "# API 调用计数和时间控制变量\n", + "api_call_count = 0\n", + "batch_start_time = time.time()\n", + "\n", + "\n", + "def get_data(ts_code):\n", + " daily_data = ts.pro_bar(ts_code=ts_code, adj='hfq', start_date=start_date)\n", + " # 如果返回数据不为空,则添加一列标识股票代码\n", + " if daily_data is not None and not daily_data.empty:\n", + " return daily_data\n", + "\n", + "\n", + "# 循环遍历每个股票代码并获取数据\n", + "with ThreadPoolExecutor(max_workers=2) as executor:\n", + " future_to_date = {executor.submit(get_data, row['ts_code']): row['ts_code'] for idx, row in stocks_df.iterrows()}\n", + "\n", + " for future in as_completed(future_to_date):\n", + " ts_code = future_to_date[future]\n", + " try:\n", + " result = future.result()\n", + " daily_data_list.append(result)\n", + " print(f\"任务 {ts_code} 完成\")\n", + " except Exception as e:\n", + " print(f\"获取 {ts_code} 数据时出错: {e}\")\n", + " # 计数一次 API 调用\n", + " api_call_count += 1\n", + "\n", + " # 每调用300次,检查时间是否少于1分钟,如果少于则等待剩余时间\n", + " if api_call_count % 300 == 0:\n", + " elapsed = time.time() - batch_start_time\n", + " if elapsed < 60:\n", + " sleep_time = 60 - elapsed\n", + " print(f\"已调用300次API,等待 {sleep_time:.2f} 秒以满足速率限制...\")\n", + " time.sleep(sleep_time)\n", + " # 重置批次起始时间\n", + " batch_start_time = time.time()\n" + ] }, { + "cell_type": "code", + "execution_count": 4, + "id": "35d605a189a83c1f", "metadata": { "ExecuteTime": { "end_time": "2025-02-11T15:59:16.323785Z", "start_time": "2025-02-11T15:59:16.059480Z" } }, - "cell_type": "code", - "source": [ - "all_daily_data = pd.concat(daily_data_list, ignore_index=True)\n", - "print(all_daily_data)" - ], - "id": "35d605a189a83c1f", "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " ts_code trade_date open high low close pre_close \\\n", - "0 000001.SZ 20250211 1456.74 1465.68 1452.91 1459.29 1460.57 \n", - "1 000002.SZ 20250211 1355.51 1370.05 1311.90 1315.54 1348.24 \n", - "2 000004.SZ 20250211 57.91 59.29 55.55 55.68 56.77 \n", - "3 000006.SZ 20250211 289.31 292.09 278.97 279.77 289.31 \n", - "4 000007.SZ 20250211 57.16 57.16 55.42 55.75 57.24 \n", + "0 000002.SZ 20250212 1317.35 1446.36 1295.55 1446.36 1315.54 \n", + "1 000001.SZ 20250212 1458.02 1460.57 1449.07 1459.29 1459.29 \n", + "2 000006.SZ 20250212 280.56 286.13 274.60 286.13 279.77 \n", + "3 000004.SZ 20250212 55.55 57.63 54.66 56.90 55.68 \n", + "4 000007.SZ 20250212 55.75 56.00 54.59 55.67 55.75 \n", "... ... ... ... ... ... ... ... \n", - "5380 920111.BJ 20250211 26.44 28.00 25.89 26.55 26.37 \n", - "5381 920116.BJ 20250211 60.00 66.30 60.00 61.28 64.19 \n", - "5382 920118.BJ 20250211 26.03 27.20 25.83 26.78 25.98 \n", - "5383 920128.BJ 20250211 29.60 30.98 29.14 29.99 29.46 \n", - "5384 689009.SH 20250211 50.67 51.21 50.11 50.61 50.65 \n", + "5380 920111.BJ 20250212 26.91 28.31 26.58 27.68 26.55 \n", + "5381 920116.BJ 20250212 60.50 64.80 59.52 61.88 61.28 \n", + "5382 920118.BJ 20250212 26.55 26.90 26.00 26.51 26.78 \n", + "5383 920128.BJ 20250212 30.05 30.92 29.38 30.65 29.99 \n", + "5384 689009.SH 20250212 50.60 52.02 50.06 51.72 50.61 \n", "\n", " change pct_chg vol amount \n", - "0 -1.28 -0.09 844520.03 963865.615 \n", - "1 -32.70 -2.43 1736090.54 1268761.110 \n", - "2 -1.09 -1.92 270321.95 379106.750 \n", - "3 -9.54 -3.30 303697.31 215991.561 \n", - "4 -1.49 -2.60 66523.00 44914.830 \n", + "0 130.82 9.94 3797389.87 2862874.540 \n", + "1 0.00 0.00 988806.83 1125323.633 \n", + "2 6.36 2.27 343298.87 243148.620 \n", + "3 1.22 2.19 183709.53 256068.396 \n", + "4 -0.08 -0.14 57191.80 38186.853 \n", "... ... ... ... ... \n", - "5380 0.18 0.68 57726.70 156356.271 \n", - "5381 -2.91 -4.53 87220.97 542163.986 \n", - "5382 0.80 3.08 9586.75 25529.527 \n", - "5383 0.53 1.80 24948.49 75607.545 \n", - "5384 -0.04 -0.08 72159.65 362553.983 \n", + "5380 1.13 4.26 64642.66 178828.371 \n", + "5381 0.60 0.98 58150.24 360649.436 \n", + "5382 -0.27 -1.01 6872.99 18152.248 \n", + "5383 0.66 2.20 19876.68 60158.760 \n", + "5384 1.11 2.19 88778.51 452364.628 \n", "\n", "[5385 rows x 11 columns]\n" ] } ], - "execution_count": 5 + "source": [ + "all_daily_data = pd.concat(daily_data_list, ignore_index=True)\n", + "print(all_daily_data)" + ] }, { + "cell_type": "code", + "execution_count": 5, + "id": "446aeba1a846b34", "metadata": { "ExecuteTime": { "end_time": "2025-02-11T15:59:27.088445Z", "start_time": "2025-02-11T15:59:27.059335Z" } }, - "cell_type": "code", - "source": [ - "\n", - "# 合并所有获取到的日线数据\n", - "if daily_data_list:\n", - " # 使用 HDF5 格式保存到本地文件(文件名:daily_data.h5,key设为 'daily_data')\n", - " all_daily_data.to_hdf(h5_filename, key='daily_data', mode='a', append=True, data_columns=True, format='table')\n", - " print(\"所有日线数据已保存到 daily_data.h5\")\n", - "else:\n", - " print(\"未获取到任何日线数据。\")" - ], - "id": "446aeba1a846b34", "outputs": [ { "name": "stdout", @@ -5902,7 +5887,16 @@ ] } ], - "execution_count": 6 + "source": [ + "\n", + "# 合并所有获取到的日线数据\n", + "if daily_data_list:\n", + " # 使用 HDF5 格式保存到本地文件(文件名:daily_data.h5,key设为 'daily_data')\n", + " all_daily_data.to_hdf(h5_filename, key='daily_data', mode='a', append=True, data_columns=True, format='table')\n", + " print(\"所有日线数据已保存到 daily_data.h5\")\n", + "else:\n", + " print(\"未获取到任何日线数据。\")" + ] } ], "metadata": { diff --git a/code/data/update/update_money_flow.ipynb b/code/data/update/update_money_flow.ipynb index 0a72e33..c7f63a3 100644 --- a/code/data/update/update_money_flow.ipynb +++ b/code/data/update/update_money_flow.ipynb @@ -2,6 +2,7 @@ "cells": [ { "cell_type": "code", + "execution_count": 1, "id": "b94bb1f2-5332-485e-ae1b-eea01f938106", "metadata": { "ExecuteTime": { @@ -9,43 +10,24 @@ "start_time": "2025-02-11T15:21:54.050569Z" } }, + "outputs": [], "source": [ "import tushare as ts\n", "\n", "ts.set_token('3a0741c702ee7e5e5f2bf1f0846bafaafe4e320833240b2a7e4a685f')\n", "pro = ts.pro_api()" - ], - "outputs": [], - "execution_count": 1 + ] }, { + "cell_type": "code", + "execution_count": 2, + "id": "742c29d453b9bb38", "metadata": { "ExecuteTime": { "end_time": "2025-02-11T15:22:32.726905Z", "start_time": "2025-02-11T15:22:25.018135Z" } }, - "cell_type": "code", - "source": [ - "import pandas as pd\n", - "import time\n", - "\n", - "h5_filename = '../../../data/money_flow.h5'\n", - "key = '/money_flow'\n", - "max_date = None\n", - "with pd.HDFStore(h5_filename, mode='r') as store:\n", - " df = store[key][['ts_code', 'trade_date']]\n", - " print(df.info())\n", - " max_date = df['trade_date'].max()\n", - "\n", - "print(max_date)\n", - "trade_cal = pro.trade_cal(exchange='', start_date='20170101', end_date='20250220')\n", - "trade_cal = trade_cal[trade_cal['is_open'] == 1] # 只保留交易日\n", - "trade_dates = trade_cal[trade_cal['cal_date'] > max_date]['cal_date'].tolist()\n", - "start_date = min(trade_dates)\n", - "print(f'start_date: {start_date}')" - ], - "id": "742c29d453b9bb38", "outputs": [ { "name": "stdout", @@ -66,18 +48,52 @@ ] } ], - "execution_count": 6 + "source": [ + "import pandas as pd\n", + "import time\n", + "\n", + "h5_filename = '../../../data/money_flow.h5'\n", + "key = '/money_flow'\n", + "max_date = None\n", + "with pd.HDFStore(h5_filename, mode='r') as store:\n", + " df = store[key][['ts_code', 'trade_date']]\n", + " print(df.info())\n", + " max_date = df['trade_date'].max()\n", + "\n", + "print(max_date)\n", + "trade_cal = pro.trade_cal(exchange='', start_date='20170101', end_date='20250220')\n", + "trade_cal = trade_cal[trade_cal['is_open'] == 1] # 只保留交易日\n", + "trade_dates = trade_cal[trade_cal['cal_date'] > max_date]['cal_date'].tolist()\n", + "start_date = min(trade_dates)\n", + "print(f'start_date: {start_date}')" + ] }, { "cell_type": "code", + "execution_count": 3, "id": "679ce40e-8d62-4887-970c-e1d8cbdeee6b", "metadata": { - "scrolled": true, "ExecuteTime": { "end_time": "2025-02-11T15:22:14.513527Z", "start_time": "2025-02-11T15:22:12.973331Z" - } + }, + "scrolled": true }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "任务 20250220 完成\n", + "任务 20250219 完成\n", + "任务 20250217 完成\n", + "任务 20250218 完成\n", + "任务 20250213 完成\n", + "任务 20250214 完成\n", + "任务 20250212 完成\n" + ] + } + ], "source": [ "from concurrent.futures import ThreadPoolExecutor, as_completed\n", "\n", @@ -107,40 +123,26 @@ " except Exception as e:\n", " print(f\"获取 {trade_date} 数据时出错: {e}\")\n", "\n" - ], - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "任务 20250219 完成\n", - "任务 20250220 完成\n", - "任务 20250218 完成\n", - "任务 20250217 完成\n", - "任务 20250214 完成\n", - "任务 20250213 完成\n", - "任务 20250212 完成\n", - "任务 20250211 完成\n" - ] - } - ], - "execution_count": 3 + ] }, { + "cell_type": "code", + "execution_count": 4, + "id": "9af80516849d4e80", "metadata": { "ExecuteTime": { "end_time": "2025-02-11T15:22:16.656650Z", "start_time": "2025-02-11T15:22:16.639271Z" } }, - "cell_type": "code", - "source": "all_daily_data_df = pd.concat(all_daily_data, ignore_index=True)\n", - "id": "9af80516849d4e80", "outputs": [], - "execution_count": 4 + "source": [ + "all_daily_data_df = pd.concat(all_daily_data, ignore_index=True)\n" + ] }, { "cell_type": "code", + "execution_count": 5, "id": "a2b05187-437f-4053-bc43-bd80d4cf8b0e", "metadata": { "ExecuteTime": { @@ -148,15 +150,6 @@ "start_time": "2025-02-11T15:22:19.145561Z" } }, - "source": [ - "\n", - "# 将所有数据合并为一个 DataFrame\n", - "\n", - "# 将数据保存为 HDF5 文件(table 格式)\n", - "all_daily_data_df.to_hdf(h5_filename, key='money_flow', mode='a', format='table', append=True, data_columns=True)\n", - "\n", - "print(\"所有每日基础数据获取并保存完毕!\")" - ], "outputs": [ { "name": "stdout", @@ -166,7 +159,15 @@ ] } ], - "execution_count": 5 + "source": [ + "\n", + "# 将所有数据合并为一个 DataFrame\n", + "\n", + "# 将数据保存为 HDF5 文件(table 格式)\n", + "all_daily_data_df.to_hdf(h5_filename, key='money_flow', mode='a', format='table', append=True, data_columns=True)\n", + "\n", + "print(\"所有每日基础数据获取并保存完毕!\")" + ] } ], "metadata": { diff --git a/code/data/update/update_stk_limit.ipynb b/code/data/update/update_stk_limit.ipynb index f21b6f1..edd3a90 100644 --- a/code/data/update/update_stk_limit.ipynb +++ b/code/data/update/update_stk_limit.ipynb @@ -2,6 +2,7 @@ "cells": [ { "cell_type": "code", + "execution_count": 1, "id": "500802dc-7a20-48b7-a470-a4bae3ec534b", "metadata": { "ExecuteTime": { @@ -9,17 +10,17 @@ "start_time": "2025-02-11T15:18:36.020822Z" } }, + "outputs": [], "source": [ "import tushare as ts\n", "\n", "ts.set_token('3a0741c702ee7e5e5f2bf1f0846bafaafe4e320833240b2a7e4a685f')\n", "pro = ts.pro_api()" - ], - "outputs": [], - "execution_count": 1 + ] }, { "cell_type": "code", + "execution_count": 2, "id": "5a84bc9da6d54868", "metadata": { "ExecuteTime": { @@ -27,26 +28,6 @@ "start_time": "2025-02-11T15:20:00.110127Z" } }, - "source": [ - "import pandas as pd\n", - "import time\n", - "\n", - "h5_filename = '../../../data/stk_limit.h5'\n", - "key = '/stk_limit'\n", - "max_date = None\n", - "with pd.HDFStore(h5_filename, mode='r') as store:\n", - " df = store[key][['ts_code', 'trade_date']]\n", - " print(df.sort_values(by='trade_date', ascending=True).tail())\n", - " print(df.info())\n", - " max_date = df['trade_date'].max()\n", - "\n", - "print(max_date)\n", - "trade_cal = pro.trade_cal(exchange='', start_date='20170101', end_date='20250220')\n", - "trade_cal = trade_cal[trade_cal['is_open'] == 1] # 只保留交易日\n", - "trade_dates = trade_cal[trade_cal['cal_date'] > max_date]['cal_date'].tolist()\n", - "start_date = min(trade_dates)\n", - "print(start_date)" - ], "outputs": [ { "name": "stdout", @@ -73,18 +54,53 @@ ] } ], - "execution_count": 5 + "source": [ + "import pandas as pd\n", + "import time\n", + "\n", + "h5_filename = '../../../data/stk_limit.h5'\n", + "key = '/stk_limit'\n", + "max_date = None\n", + "with pd.HDFStore(h5_filename, mode='r') as store:\n", + " df = store[key][['ts_code', 'trade_date']]\n", + " print(df.sort_values(by='trade_date', ascending=True).tail())\n", + " print(df.info())\n", + " max_date = df['trade_date'].max()\n", + "\n", + "print(max_date)\n", + "trade_cal = pro.trade_cal(exchange='', start_date='20170101', end_date='20250220')\n", + "trade_cal = trade_cal[trade_cal['is_open'] == 1] # 只保留交易日\n", + "trade_dates = trade_cal[trade_cal['cal_date'] > max_date]['cal_date'].tolist()\n", + "start_date = min(trade_dates)\n", + "print(start_date)" + ] }, { "cell_type": "code", + "execution_count": 3, "id": "bb3191de-27a2-4c89-a3b5-32a0d7b9496f", "metadata": { - "scrolled": true, "ExecuteTime": { "end_time": "2025-02-11T15:21:27.831699Z", "start_time": "2025-02-11T15:21:26.665039Z" - } + }, + "scrolled": true }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "任务 20250219 完成\n", + "任务 20250220 完成\n", + "任务 20250217 完成\n", + "任务 20250218 完成\n", + "任务 20250214 完成\n", + "任务 20250213 完成\n", + "任务 20250212 完成\n" + ] + } + ], "source": [ "from concurrent.futures import ThreadPoolExecutor, as_completed\n", "\n", @@ -115,64 +131,62 @@ " except Exception as e:\n", " print(f\"获取 {trade_date} 数据时出错: {e}\")\n", "\n" - ], - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "任务 20250220 完成\n", - "任务 20250219 完成\n", - "任务 20250217 完成\n", - "任务 20250218 完成\n", - "任务 20250214 完成\n", - "任务 20250213 完成\n", - "任务 20250212 完成\n" - ] - } - ], - "execution_count": 10 + ] }, { + "cell_type": "code", + "execution_count": 4, + "id": "96a81aa5890ea3c3", "metadata": { "ExecuteTime": { "end_time": "2025-02-11T15:21:29.294283Z", "start_time": "2025-02-11T15:21:29.247112Z" } }, - "cell_type": "code", - "source": [ - "print(all_daily_data)\n", - "# 将所有数据合并为一个 DataFrame\n", - "all_daily_data_df = pd.concat(all_daily_data, ignore_index=True)" - ], - "id": "96a81aa5890ea3c3", "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "[]\n" - ] - }, - { - "ename": "ValueError", - "evalue": "No objects to concatenate", - "output_type": "error", - "traceback": [ - "\u001B[1;31m---------------------------------------------------------------------------\u001B[0m", - "\u001B[1;31mValueError\u001B[0m Traceback (most recent call last)", - "Cell \u001B[1;32mIn[11], line 3\u001B[0m\n\u001B[0;32m 1\u001B[0m \u001B[38;5;28mprint\u001B[39m(all_daily_data)\n\u001B[0;32m 2\u001B[0m \u001B[38;5;66;03m# 将所有数据合并为一个 DataFrame\u001B[39;00m\n\u001B[1;32m----> 3\u001B[0m all_daily_data_df \u001B[38;5;241m=\u001B[39m \u001B[43mpd\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mconcat\u001B[49m\u001B[43m(\u001B[49m\u001B[43mall_daily_data\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mignore_index\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[38;5;28;43;01mTrue\u001B[39;49;00m\u001B[43m)\u001B[49m\n", - "File \u001B[1;32mE:\\Python\\anaconda\\envs\\try_trader\\lib\\site-packages\\pandas\\core\\reshape\\concat.py:372\u001B[0m, in \u001B[0;36mconcat\u001B[1;34m(objs, axis, join, ignore_index, keys, levels, names, verify_integrity, sort, copy)\u001B[0m\n\u001B[0;32m 369\u001B[0m \u001B[38;5;28;01melif\u001B[39;00m copy \u001B[38;5;129;01mand\u001B[39;00m using_copy_on_write():\n\u001B[0;32m 370\u001B[0m copy \u001B[38;5;241m=\u001B[39m \u001B[38;5;28;01mFalse\u001B[39;00m\n\u001B[1;32m--> 372\u001B[0m op \u001B[38;5;241m=\u001B[39m \u001B[43m_Concatenator\u001B[49m\u001B[43m(\u001B[49m\n\u001B[0;32m 373\u001B[0m \u001B[43m \u001B[49m\u001B[43mobjs\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 374\u001B[0m \u001B[43m \u001B[49m\u001B[43maxis\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43maxis\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 375\u001B[0m \u001B[43m \u001B[49m\u001B[43mignore_index\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mignore_index\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 376\u001B[0m \u001B[43m \u001B[49m\u001B[43mjoin\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mjoin\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 377\u001B[0m \u001B[43m \u001B[49m\u001B[43mkeys\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mkeys\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 378\u001B[0m \u001B[43m \u001B[49m\u001B[43mlevels\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mlevels\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 379\u001B[0m \u001B[43m \u001B[49m\u001B[43mnames\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mnames\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 380\u001B[0m \u001B[43m \u001B[49m\u001B[43mverify_integrity\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mverify_integrity\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 381\u001B[0m \u001B[43m \u001B[49m\u001B[43mcopy\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mcopy\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 382\u001B[0m \u001B[43m \u001B[49m\u001B[43msort\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43msort\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 383\u001B[0m \u001B[43m\u001B[49m\u001B[43m)\u001B[49m\n\u001B[0;32m 385\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m op\u001B[38;5;241m.\u001B[39mget_result()\n", - "File \u001B[1;32mE:\\Python\\anaconda\\envs\\try_trader\\lib\\site-packages\\pandas\\core\\reshape\\concat.py:429\u001B[0m, in \u001B[0;36m_Concatenator.__init__\u001B[1;34m(self, objs, axis, join, keys, levels, names, ignore_index, verify_integrity, copy, sort)\u001B[0m\n\u001B[0;32m 426\u001B[0m objs \u001B[38;5;241m=\u001B[39m \u001B[38;5;28mlist\u001B[39m(objs)\n\u001B[0;32m 428\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m \u001B[38;5;28mlen\u001B[39m(objs) \u001B[38;5;241m==\u001B[39m \u001B[38;5;241m0\u001B[39m:\n\u001B[1;32m--> 429\u001B[0m \u001B[38;5;28;01mraise\u001B[39;00m \u001B[38;5;167;01mValueError\u001B[39;00m(\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mNo objects to concatenate\u001B[39m\u001B[38;5;124m\"\u001B[39m)\n\u001B[0;32m 431\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m keys \u001B[38;5;129;01mis\u001B[39;00m \u001B[38;5;28;01mNone\u001B[39;00m:\n\u001B[0;32m 432\u001B[0m objs \u001B[38;5;241m=\u001B[39m \u001B[38;5;28mlist\u001B[39m(com\u001B[38;5;241m.\u001B[39mnot_none(\u001B[38;5;241m*\u001B[39mobjs))\n", - "\u001B[1;31mValueError\u001B[0m: No objects to concatenate" + "[ trade_date ts_code up_limit down_limit\n", + "0 20250213 000001.SZ 12.56 10.28\n", + "1 20250213 000002.SZ 8.76 7.16\n", + "2 20250213 000004.SZ 15.40 12.60\n", + "3 20250213 000006.SZ 7.92 6.48\n", + "4 20250213 000007.SZ 7.39 6.05\n", + "... ... ... ... ...\n", + "7014 20250213 920108.BJ 27.22 14.66\n", + "7015 20250213 920111.BJ 35.98 19.38\n", + "7016 20250213 920116.BJ 80.44 43.32\n", + "7017 20250213 920118.BJ 34.46 18.56\n", + "7018 20250213 920128.BJ 39.84 21.46\n", + "\n", + "[7019 rows x 4 columns], trade_date ts_code up_limit down_limit\n", + "0 20250212 000001.SZ 12.56 10.28\n", + "1 20250212 000002.SZ 7.96 6.52\n", + "2 20250212 000004.SZ 15.07 12.33\n", + "3 20250212 000006.SZ 7.74 6.34\n", + "4 20250212 000007.SZ 7.40 6.06\n", + "... ... ... ... ...\n", + "7014 20250212 920108.BJ 27.41 14.77\n", + "7015 20250212 920111.BJ 34.51 18.59\n", + "7016 20250212 920116.BJ 79.66 42.90\n", + "7017 20250212 920118.BJ 34.81 18.75\n", + "7018 20250212 920128.BJ 38.98 21.00\n", + "\n", + "[7019 rows x 4 columns]]\n" ] } ], - "execution_count": 11 + "source": [ + "print(all_daily_data)\n", + "# 将所有数据合并为一个 DataFrame\n", + "all_daily_data_df = pd.concat(all_daily_data, ignore_index=True)" + ] }, { "cell_type": "code", + "execution_count": 5, "id": "ad9733a1-2f42-43ee-a98c-0bf699304c21", "metadata": { "ExecuteTime": { @@ -180,6 +194,15 @@ "start_time": "2025-02-11T15:20:37.375220Z" } }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "所有每日基础数据获取并保存完毕!\n" + ] + } + ], "source": [ "\n", "\n", @@ -187,23 +210,7 @@ "all_daily_data_df.to_hdf(h5_filename, key='stk_limit', mode='a', format='table', append=True, data_columns=True)\n", "\n", "print(\"所有每日基础数据获取并保存完毕!\")" - ], - "outputs": [ - { - "ename": "ValueError", - "evalue": "All objects passed were None", - "output_type": "error", - "traceback": [ - "\u001B[1;31m---------------------------------------------------------------------------\u001B[0m", - "\u001B[1;31mValueError\u001B[0m Traceback (most recent call last)", - "Cell \u001B[1;32mIn[7], line 2\u001B[0m\n\u001B[0;32m 1\u001B[0m \u001B[38;5;66;03m# 将所有数据合并为一个 DataFrame\u001B[39;00m\n\u001B[1;32m----> 2\u001B[0m all_daily_data_df \u001B[38;5;241m=\u001B[39m \u001B[43mpd\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mconcat\u001B[49m\u001B[43m(\u001B[49m\u001B[43mall_daily_data\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mignore_index\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[38;5;28;43;01mTrue\u001B[39;49;00m\u001B[43m)\u001B[49m\n\u001B[0;32m 4\u001B[0m \u001B[38;5;66;03m# 将数据保存为 HDF5 文件(table 格式)\u001B[39;00m\n\u001B[0;32m 5\u001B[0m all_daily_data_df\u001B[38;5;241m.\u001B[39mto_hdf(h5_filename, key\u001B[38;5;241m=\u001B[39m\u001B[38;5;124m'\u001B[39m\u001B[38;5;124mstk_limit\u001B[39m\u001B[38;5;124m'\u001B[39m, mode\u001B[38;5;241m=\u001B[39m\u001B[38;5;124m'\u001B[39m\u001B[38;5;124ma\u001B[39m\u001B[38;5;124m'\u001B[39m, \u001B[38;5;28mformat\u001B[39m\u001B[38;5;241m=\u001B[39m\u001B[38;5;124m'\u001B[39m\u001B[38;5;124mtable\u001B[39m\u001B[38;5;124m'\u001B[39m, append\u001B[38;5;241m=\u001B[39m\u001B[38;5;28;01mTrue\u001B[39;00m, data_columns\u001B[38;5;241m=\u001B[39m\u001B[38;5;28;01mTrue\u001B[39;00m)\n", - "File \u001B[1;32mE:\\Python\\anaconda\\envs\\try_trader\\lib\\site-packages\\pandas\\core\\reshape\\concat.py:372\u001B[0m, in \u001B[0;36mconcat\u001B[1;34m(objs, axis, join, ignore_index, keys, levels, names, verify_integrity, sort, copy)\u001B[0m\n\u001B[0;32m 369\u001B[0m \u001B[38;5;28;01melif\u001B[39;00m copy \u001B[38;5;129;01mand\u001B[39;00m using_copy_on_write():\n\u001B[0;32m 370\u001B[0m copy \u001B[38;5;241m=\u001B[39m \u001B[38;5;28;01mFalse\u001B[39;00m\n\u001B[1;32m--> 372\u001B[0m op \u001B[38;5;241m=\u001B[39m \u001B[43m_Concatenator\u001B[49m\u001B[43m(\u001B[49m\n\u001B[0;32m 373\u001B[0m \u001B[43m \u001B[49m\u001B[43mobjs\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 374\u001B[0m \u001B[43m \u001B[49m\u001B[43maxis\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43maxis\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 375\u001B[0m \u001B[43m \u001B[49m\u001B[43mignore_index\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mignore_index\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 376\u001B[0m \u001B[43m \u001B[49m\u001B[43mjoin\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mjoin\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 377\u001B[0m \u001B[43m \u001B[49m\u001B[43mkeys\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mkeys\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 378\u001B[0m \u001B[43m \u001B[49m\u001B[43mlevels\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mlevels\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 379\u001B[0m \u001B[43m \u001B[49m\u001B[43mnames\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mnames\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 380\u001B[0m \u001B[43m \u001B[49m\u001B[43mverify_integrity\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mverify_integrity\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 381\u001B[0m \u001B[43m \u001B[49m\u001B[43mcopy\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mcopy\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 382\u001B[0m \u001B[43m \u001B[49m\u001B[43msort\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43msort\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 383\u001B[0m \u001B[43m\u001B[49m\u001B[43m)\u001B[49m\n\u001B[0;32m 385\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m op\u001B[38;5;241m.\u001B[39mget_result()\n", - "File \u001B[1;32mE:\\Python\\anaconda\\envs\\try_trader\\lib\\site-packages\\pandas\\core\\reshape\\concat.py:452\u001B[0m, in \u001B[0;36m_Concatenator.__init__\u001B[1;34m(self, objs, axis, join, keys, levels, names, ignore_index, verify_integrity, copy, sort)\u001B[0m\n\u001B[0;32m 449\u001B[0m keys \u001B[38;5;241m=\u001B[39m Index(clean_keys, name\u001B[38;5;241m=\u001B[39mname, dtype\u001B[38;5;241m=\u001B[39m\u001B[38;5;28mgetattr\u001B[39m(keys, \u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mdtype\u001B[39m\u001B[38;5;124m\"\u001B[39m, \u001B[38;5;28;01mNone\u001B[39;00m))\n\u001B[0;32m 451\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m \u001B[38;5;28mlen\u001B[39m(objs) \u001B[38;5;241m==\u001B[39m \u001B[38;5;241m0\u001B[39m:\n\u001B[1;32m--> 452\u001B[0m \u001B[38;5;28;01mraise\u001B[39;00m \u001B[38;5;167;01mValueError\u001B[39;00m(\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mAll objects passed were None\u001B[39m\u001B[38;5;124m\"\u001B[39m)\n\u001B[0;32m 454\u001B[0m \u001B[38;5;66;03m# figure out what our result ndim is going to be\u001B[39;00m\n\u001B[0;32m 455\u001B[0m ndims \u001B[38;5;241m=\u001B[39m \u001B[38;5;28mset\u001B[39m()\n", - "\u001B[1;31mValueError\u001B[0m: All objects passed were None" - ] - } - ], - "execution_count": 7 + ] }, { "cell_type": "code", diff --git a/code/train/V1.1.ipynb b/code/train/V1.1.ipynb index 1dbf13f..c50be1f 100644 --- a/code/train/V1.1.ipynb +++ b/code/train/V1.1.ipynb @@ -2,18 +2,16 @@ "cells": [ { "cell_type": "code", - "execution_count": 1, "id": "79a7758178bafdd3", "metadata": { - "ExecuteTime": { - "end_time": "2025-02-09T15:47:01.758712Z", - "start_time": "2025-02-09T15:47:01.615180Z" - }, "jupyter": { "source_hidden": true + }, + "ExecuteTime": { + "end_time": "2025-02-11T16:44:40.335452Z", + "start_time": "2025-02-11T16:44:39.871705Z" } }, - "outputs": [], "source": [ "%load_ext autoreload\n", "%autoreload 2\n", @@ -64,30 +62,19 @@ "\n", " return merged_df\n", "\n" - ] + ], + "outputs": [], + "execution_count": 1 }, { "cell_type": "code", - "execution_count": 2, "id": "a79cafb06a7e0e43", "metadata": { "ExecuteTime": { - "end_time": "2025-02-09T15:47:44.572473Z", - "start_time": "2025-02-09T15:47:01.772245Z" + "end_time": "2025-02-11T16:45:23.542844Z", + "start_time": "2025-02-11T16:44:40.341453Z" } }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "daily data\n", - "daily basic\n", - "stk limit\n", - "money flow\n" - ] - } - ], "source": [ "print('daily data')\n", "df = read_and_merge_h5_data('../../data/daily_data.h5', key='daily_data',\n", @@ -108,40 +95,51 @@ " columns=['ts_code', 'trade_date', 'buy_sm_vol', 'sell_sm_vol', 'buy_lg_vol', 'sell_lg_vol',\n", " 'buy_elg_vol', 'sell_elg_vol', 'net_mf_vol'],\n", " df=df)" - ] + ], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "daily data\n", + "daily basic\n", + "stk limit\n", + "money flow\n" + ] + } + ], + "execution_count": 2 }, { "cell_type": "code", - "execution_count": 3, "id": "c4e9e1d31da6dba6", "metadata": { - "ExecuteTime": { - "end_time": "2025-02-09T15:47:44.700071Z", - "start_time": "2025-02-09T15:47:44.603849Z" - }, "jupyter": { "source_hidden": true + }, + "ExecuteTime": { + "end_time": "2025-02-11T16:45:23.963120Z", + "start_time": "2025-02-11T16:45:23.605890Z" } }, - "outputs": [], "source": [ "origin_columns = df.columns.tolist()" - ] + ], + "outputs": [], + "execution_count": 3 }, { "cell_type": "code", - "execution_count": 4, "id": "a735bc02ceb4d872", "metadata": { - "ExecuteTime": { - "end_time": "2025-02-09T15:47:44.856898Z", - "start_time": "2025-02-09T15:47:44.752186Z" - }, "jupyter": { "source_hidden": true + }, + "ExecuteTime": { + "end_time": "2025-02-11T16:45:24.539606Z", + "start_time": "2025-02-11T16:45:24.462439Z" } }, - "outputs": [], "source": [ "import numpy as np\n", "import talib\n", @@ -328,26 +326,36 @@ " df['future_af35'] = grouped['act_factor3'].transform(lambda x: x.shift(-5))\n", "\n", " return df\n" - ] + ], + "outputs": [], + "execution_count": 4 }, { "cell_type": "code", - "execution_count": 5, "id": "53f86ddc0677a6d7", "metadata": { + "scrolled": true, "ExecuteTime": { - "end_time": "2025-02-09T15:49:48.641755Z", - "start_time": "2025-02-09T15:47:44.862968Z" - }, - "scrolled": true + "end_time": "2025-02-11T16:47:14.618805Z", + "start_time": "2025-02-11T16:45:24.573259Z" + } }, + "source": [ + "df = get_technical_factor(df)\n", + "df = get_act_factor(df)\n", + "df = get_money_flow_factor(df)\n", + "df = get_future_data(df)\n", + "# df = df.drop(columns=origin_columns)\n", + "\n", + "print(df.info())" + ], "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", - "Index: 8369694 entries, 1964 to 8129890\n", + "Index: 8375079 entries, 1964 to 8375077\n", "Data columns (total 87 columns):\n", " # Column Dtype \n", "--- ------ ----- \n", @@ -444,133 +452,21 @@ ] } ], - "source": [ - "df = get_technical_factor(df)\n", - "df = get_act_factor(df)\n", - "df = get_money_flow_factor(df)\n", - "df = get_future_data(df)\n", - "# df = df.drop(columns=origin_columns)\n", - "\n", - "print(df.info())" - ] + "execution_count": 5 }, { "cell_type": "code", - "execution_count": 6, "id": "dbe2fd8021b9417f", "metadata": { - "ExecuteTime": { - "end_time": "2025-02-09T15:50:31.240188Z", - "start_time": "2025-02-09T15:49:48.842399Z" - }, "jupyter": { "source_hidden": true }, - "scrolled": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "RangeIndex: 1312816 entries, 0 to 1312815\n", - "Data columns (total 87 columns):\n", - " # Column Non-Null Count Dtype \n", - "--- ------ -------------- ----- \n", - " 0 ts_code 1312816 non-null object \n", - " 1 trade_date 1312816 non-null datetime64[ns]\n", - " 2 open 1312816 non-null float64 \n", - " 3 close 1312816 non-null float64 \n", - " 4 high 1312816 non-null float64 \n", - " 5 low 1312816 non-null float64 \n", - " 6 vol 1312816 non-null float64 \n", - " 7 turnover_rate 1312816 non-null float64 \n", - " 8 pe_ttm 1124776 non-null float64 \n", - " 9 circ_mv 1312816 non-null float64 \n", - " 10 volume_ratio 1312655 non-null float64 \n", - " 11 is_st 1312816 non-null object \n", - " 12 up_limit 1312488 non-null float64 \n", - " 13 down_limit 1312488 non-null float64 \n", - " 14 buy_sm_vol 1312268 non-null float64 \n", - " 15 sell_sm_vol 1312268 non-null float64 \n", - " 16 buy_lg_vol 1312268 non-null float64 \n", - " 17 sell_lg_vol 1312268 non-null float64 \n", - " 18 buy_elg_vol 1312268 non-null float64 \n", - " 19 sell_elg_vol 1312268 non-null float64 \n", - " 20 net_mf_vol 1312268 non-null float64 \n", - " 21 up 1312816 non-null float64 \n", - " 22 down 1312816 non-null float64 \n", - " 23 atr_14 1298995 non-null float64 \n", - " 24 atr_6 1306828 non-null float64 \n", - " 25 obv 1312816 non-null float64 \n", - " 26 maobv_6 1307823 non-null float64 \n", - " 27 obv-maobv_6 1307823 non-null float64 \n", - " 28 rsi_3 1309818 non-null float64 \n", - " 29 rsi_6 1306828 non-null float64 \n", - " 30 rsi_9 1303864 non-null float64 \n", - " 31 return_10 1302880 non-null float64 \n", - " 32 return_20 1293356 non-null float64 \n", - " 33 avg_close_5 1308820 non-null float64 \n", - " 34 std_return_5 1308425 non-null float64 \n", - " 35 std_return_15 1298600 non-null float64 \n", - " 36 std_return_25 1287756 non-null float64 \n", - " 37 std_return_90 1220157 non-null float64 \n", - " 38 std_return_90_2 1209808 non-null float64 \n", - " 39 std_return_5 / std_return_90 1220157 non-null float64 \n", - " 40 std_return_5 / std_return_25 1287756 non-null float64 \n", - " 41 std_return_90 - std_return_90_2 1209808 non-null float64 \n", - " 42 ema_5 1308820 non-null float64 \n", - " 43 ema_13 1300928 non-null float64 \n", - " 44 ema_20 1294280 non-null float64 \n", - " 45 ema_60 1252148 non-null float64 \n", - " 46 act_factor1 1307823 non-null float64 \n", - " 47 act_factor2 1299958 non-null float64 \n", - " 48 act_factor3 1293356 non-null float64 \n", - " 49 act_factor4 1251052 non-null float64 \n", - " 50 act_factor5 1251052 non-null float64 \n", - " 51 act_factor6 1299958 non-null float64 \n", - " 52 rank_act_factor1 1307823 non-null float64 \n", - " 53 rank_act_factor2 1299958 non-null float64 \n", - " 54 rank_act_factor3 1293356 non-null float64 \n", - " 55 active_buy_volume_large 1312260 non-null float64 \n", - " 56 active_buy_volume_big 1312240 non-null float64 \n", - " 57 active_buy_volume_small 1312268 non-null float64 \n", - " 58 buy_lg_vol_minus_sell_lg_vol 1312260 non-null float64 \n", - " 59 buy_elg_vol_minus_sell_elg_vol 1312245 non-null float64 \n", - " 60 future_return1 1312421 non-null float64 \n", - " 61 future_return2 1311991 non-null float64 \n", - " 62 future_return3 1311991 non-null float64 \n", - " 63 future_return4 1311991 non-null float64 \n", - " 64 future_return5 1310501 non-null float64 \n", - " 65 future_return6 1307894 non-null float64 \n", - " 66 future_return7 1301736 non-null float64 \n", - " 67 future_close1 1312421 non-null float64 \n", - " 68 future_close2 1311991 non-null float64 \n", - " 69 future_close3 1311562 non-null float64 \n", - " 70 future_close4 1311085 non-null float64 \n", - " 71 future_close5 1310501 non-null float64 \n", - " 72 future_af11 1308425 non-null float64 \n", - " 73 future_af12 1308993 non-null float64 \n", - " 74 future_af13 1309562 non-null float64 \n", - " 75 future_af14 1310083 non-null float64 \n", - " 76 future_af15 1310501 non-null float64 \n", - " 77 future_af21 1300533 non-null float64 \n", - " 78 future_af22 1301077 non-null float64 \n", - " 79 future_af23 1301626 non-null float64 \n", - " 80 future_af24 1302133 non-null float64 \n", - " 81 future_af25 1302535 non-null float64 \n", - " 82 future_af31 1293885 non-null float64 \n", - " 83 future_af32 1294388 non-null float64 \n", - " 84 future_af33 1294896 non-null float64 \n", - " 85 future_af34 1295360 non-null float64 \n", - " 86 future_af35 1295722 non-null float64 \n", - "dtypes: datetime64[ns](1), float64(84), object(2)\n", - "memory usage: 871.4+ MB\n", - "None\n" - ] + "scrolled": true, + "ExecuteTime": { + "end_time": "2025-02-11T16:48:20.074570Z", + "start_time": "2025-02-11T16:47:14.683689Z" } - ], + }, "source": [ "def filter_data(df):\n", " df = df.groupby('trade_date').apply(lambda x: x.nlargest(1000, 'act_factor3'))\n", @@ -585,32 +481,121 @@ "\n", "df = filter_data(df)\n", "print(df.info())" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "5f3d9aece75318cd", - "metadata": { - "ExecuteTime": { - "end_time": "2025-02-09T15:50:31.869896Z", - "start_time": "2025-02-09T15:50:31.350003Z" - } - }, + ], "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "['up', 'down', 'atr_14', 'atr_6', 'obv', 'maobv_6', 'obv-maobv_6', 'rsi_3', 'rsi_6', 'rsi_9', 'return_10', 'return_20', 'avg_close_5', 'std_return_5', 'std_return_15', 'std_return_25', 'std_return_90', 'std_return_90_2', 'std_return_5 / std_return_90', 'std_return_5 / std_return_25', 'std_return_90 - std_return_90_2', 'ema_5', 'ema_13', 'ema_20', 'ema_60', 'act_factor1', 'act_factor2', 'act_factor3', 'act_factor4', 'act_factor5', 'act_factor6', 'rank_act_factor1', 'rank_act_factor2', 'rank_act_factor3', 'active_buy_volume_large', 'active_buy_volume_big', 'active_buy_volume_small', 'buy_lg_vol_minus_sell_lg_vol', 'buy_elg_vol_minus_sell_elg_vol']\n", - "最小日期: 2017-01-03\n", - "最大日期: 2023-12-29\n", - "152435\n", - "最小日期: 2024-01-02\n", - "最大日期: 2025-02-10\n" + "\n", + "RangeIndex: 1275521 entries, 0 to 1275520\n", + "Data columns (total 87 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 ts_code 1275521 non-null object \n", + " 1 trade_date 1275521 non-null datetime64[ns]\n", + " 2 open 1275521 non-null float64 \n", + " 3 close 1275521 non-null float64 \n", + " 4 high 1275521 non-null float64 \n", + " 5 low 1275521 non-null float64 \n", + " 6 vol 1275521 non-null float64 \n", + " 7 turnover_rate 1275521 non-null float64 \n", + " 8 pe_ttm 1108329 non-null float64 \n", + " 9 circ_mv 1275521 non-null float64 \n", + " 10 volume_ratio 1275360 non-null float64 \n", + " 11 is_st 1275521 non-null object \n", + " 12 up_limit 1275193 non-null float64 \n", + " 13 down_limit 1275193 non-null float64 \n", + " 14 buy_sm_vol 1274976 non-null float64 \n", + " 15 sell_sm_vol 1274976 non-null float64 \n", + " 16 buy_lg_vol 1274976 non-null float64 \n", + " 17 sell_lg_vol 1274976 non-null float64 \n", + " 18 buy_elg_vol 1274976 non-null float64 \n", + " 19 sell_elg_vol 1274976 non-null float64 \n", + " 20 net_mf_vol 1274976 non-null float64 \n", + " 21 up 1275521 non-null float64 \n", + " 22 down 1275521 non-null float64 \n", + " 23 atr_14 1261700 non-null float64 \n", + " 24 atr_6 1269533 non-null float64 \n", + " 25 obv 1275521 non-null float64 \n", + " 26 maobv_6 1270528 non-null float64 \n", + " 27 obv-maobv_6 1270528 non-null float64 \n", + " 28 rsi_3 1272523 non-null float64 \n", + " 29 rsi_6 1269533 non-null float64 \n", + " 30 rsi_9 1266569 non-null float64 \n", + " 31 return_10 1265585 non-null float64 \n", + " 32 return_20 1256061 non-null float64 \n", + " 33 avg_close_5 1271525 non-null float64 \n", + " 34 std_return_5 1271155 non-null float64 \n", + " 35 std_return_15 1261330 non-null float64 \n", + " 36 std_return_25 1250488 non-null float64 \n", + " 37 std_return_90 1182896 non-null float64 \n", + " 38 std_return_90_2 1172558 non-null float64 \n", + " 39 std_return_5 / std_return_90 1182896 non-null float64 \n", + " 40 std_return_5 / std_return_25 1250488 non-null float64 \n", + " 41 std_return_90 - std_return_90_2 1172558 non-null float64 \n", + " 42 ema_5 1271525 non-null float64 \n", + " 43 ema_13 1263633 non-null float64 \n", + " 44 ema_20 1256985 non-null float64 \n", + " 45 ema_60 1214858 non-null float64 \n", + " 46 act_factor1 1270528 non-null float64 \n", + " 47 act_factor2 1262663 non-null float64 \n", + " 48 act_factor3 1256061 non-null float64 \n", + " 49 act_factor4 1213762 non-null float64 \n", + " 50 act_factor5 1213762 non-null float64 \n", + " 51 act_factor6 1262663 non-null float64 \n", + " 52 rank_act_factor1 1270528 non-null float64 \n", + " 53 rank_act_factor2 1262663 non-null float64 \n", + " 54 rank_act_factor3 1256061 non-null float64 \n", + " 55 active_buy_volume_large 1274968 non-null float64 \n", + " 56 active_buy_volume_big 1274948 non-null float64 \n", + " 57 active_buy_volume_small 1274976 non-null float64 \n", + " 58 buy_lg_vol_minus_sell_lg_vol 1274968 non-null float64 \n", + " 59 buy_elg_vol_minus_sell_elg_vol 1274953 non-null float64 \n", + " 60 future_return1 1275151 non-null float64 \n", + " 61 future_return2 1274804 non-null float64 \n", + " 62 future_return3 1274804 non-null float64 \n", + " 63 future_return4 1274804 non-null float64 \n", + " 64 future_return5 1273605 non-null float64 \n", + " 65 future_return6 1271215 non-null float64 \n", + " 66 future_return7 1265850 non-null float64 \n", + " 67 future_close1 1275151 non-null float64 \n", + " 68 future_close2 1274804 non-null float64 \n", + " 69 future_close3 1274411 non-null float64 \n", + " 70 future_close4 1274026 non-null float64 \n", + " 71 future_close5 1273605 non-null float64 \n", + " 72 future_af11 1271155 non-null float64 \n", + " 73 future_af12 1271806 non-null float64 \n", + " 74 future_af13 1272411 non-null float64 \n", + " 75 future_af14 1273024 non-null float64 \n", + " 76 future_af15 1273605 non-null float64 \n", + " 77 future_af21 1263263 non-null float64 \n", + " 78 future_af22 1263890 non-null float64 \n", + " 79 future_af23 1264475 non-null float64 \n", + " 80 future_af24 1265074 non-null float64 \n", + " 81 future_af25 1265639 non-null float64 \n", + " 82 future_af31 1256615 non-null float64 \n", + " 83 future_af32 1257201 non-null float64 \n", + " 84 future_af33 1257745 non-null float64 \n", + " 85 future_af34 1258301 non-null float64 \n", + " 86 future_af35 1258826 non-null float64 \n", + "dtypes: datetime64[ns](1), float64(84), object(2)\n", + "memory usage: 846.6+ MB\n", + "None\n" ] } ], + "execution_count": 6 + }, + { + "cell_type": "code", + "id": "5f3d9aece75318cd", + "metadata": { + "ExecuteTime": { + "end_time": "2025-02-11T16:48:20.605749Z", + "start_time": "2025-02-11T16:48:20.177294Z" + } + }, "source": [ "def remove_outliers_iqr(series, lower_quantile=0.05, upper_quantile=0.95, threshold=1.5):\n", " Q1 = series.quantile(lower_quantile)\n", @@ -649,50 +634,32 @@ "print(len(test_data))\n", "print(f\"最小日期: {test_data['trade_date'].min().strftime('%Y-%m-%d')}\")\n", "print(f\"最大日期: {test_data['trade_date'].max().strftime('%Y-%m-%d')}\")" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "f4f16d63ad18d1bc", - "metadata": { - "ExecuteTime": { - "end_time": "2025-02-09T15:50:34.382521Z", - "start_time": "2025-02-09T15:50:31.885550Z" - } - }, + ], "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "C:\\Users\\liaozhaorun\\AppData\\Local\\Temp\\ipykernel_113788\\2866503568.py:16: SettingWithCopyWarning: \n", - "A value is trying to be set on a copy of a slice from a DataFrame.\n", - "Try using .loc[row_indexer,col_indexer] = value instead\n", - "\n", - "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " train_data['label'] = get_label(train_data)\n", - "C:\\Users\\liaozhaorun\\AppData\\Local\\Temp\\ipykernel_113788\\2866503568.py:17: SettingWithCopyWarning: \n", - "A value is trying to be set on a copy of a slice from a DataFrame.\n", - "Try using .loc[row_indexer,col_indexer] = value instead\n", - "\n", - "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " test_data['label'] = get_label(test_data)\n" - ] - }, { "name": "stdout", "output_type": "stream", "text": [ - "913920\n", - "最小日期: 2017-06-05\n", + "['up', 'down', 'atr_14', 'atr_6', 'obv', 'maobv_6', 'obv-maobv_6', 'rsi_3', 'rsi_6', 'rsi_9', 'return_10', 'return_20', 'avg_close_5', 'std_return_5', 'std_return_15', 'std_return_25', 'std_return_90', 'std_return_90_2', 'std_return_5 / std_return_90', 'std_return_5 / std_return_25', 'std_return_90 - std_return_90_2', 'ema_5', 'ema_13', 'ema_20', 'ema_60', 'act_factor1', 'act_factor2', 'act_factor3', 'act_factor4', 'act_factor5', 'act_factor6', 'rank_act_factor1', 'rank_act_factor2', 'rank_act_factor3', 'active_buy_volume_large', 'active_buy_volume_big', 'active_buy_volume_small', 'buy_lg_vol_minus_sell_lg_vol', 'buy_elg_vol_minus_sell_elg_vol']\n", + "最小日期: 2017-01-03\n", "最大日期: 2023-12-29\n", - "152435\n", + "138753\n", "最小日期: 2024-01-02\n", - "最大日期: 2025-02-10\n" + "最大日期: 2025-02-11\n" ] } ], + "execution_count": 7 + }, + { + "cell_type": "code", + "id": "f4f16d63ad18d1bc", + "metadata": { + "ExecuteTime": { + "end_time": "2025-02-11T16:48:22.847190Z", + "start_time": "2025-02-11T16:48:20.619639Z" + } + }, "source": [ "def get_qcuts(series, quantiles):\n", " q = pd.qcut(series, q=quantiles, labels=False, duplicates='drop')\n", @@ -730,22 +697,53 @@ "print(len(test_data))\n", "print(f\"最小日期: {test_data['trade_date'].min().strftime('%Y-%m-%d')}\")\n", "print(f\"最大日期: {test_data['trade_date'].max().strftime('%Y-%m-%d')}\")\n" - ] + ], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "C:\\Users\\liaozhaorun\\AppData\\Local\\Temp\\ipykernel_5800\\2658667834.py:16: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " train_data['label'] = get_label(train_data)\n", + "C:\\Users\\liaozhaorun\\AppData\\Local\\Temp\\ipykernel_5800\\2658667834.py:17: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " test_data['label'] = get_label(test_data)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "902614\n", + "最小日期: 2017-06-05\n", + "最大日期: 2023-12-29\n", + "138753\n", + "最小日期: 2024-01-02\n", + "最大日期: 2025-02-11\n" + ] + } + ], + "execution_count": 8 }, { "cell_type": "code", - "execution_count": 9, "id": "8f134d435f71e9e2", "metadata": { - "ExecuteTime": { - "end_time": "2025-02-09T15:50:34.548390Z", - "start_time": "2025-02-09T15:50:34.434660Z" - }, "jupyter": { "source_hidden": true + }, + "ExecuteTime": { + "end_time": "2025-02-11T16:48:24.323978Z", + "start_time": "2025-02-11T16:48:22.880681Z" } }, - "outputs": [], "source": [ "import lightgbm as lgb\n", "import numpy as np\n", @@ -933,19 +931,19 @@ " eval_set=(X_val, y_val))\n", "\n", " return model" - ] + ], + "outputs": [], + "execution_count": 9 }, { "cell_type": "code", - "execution_count": 10, "id": "4a4542e1ed6afe7d", "metadata": { "ExecuteTime": { - "end_time": "2025-02-09T15:50:34.626736Z", - "start_time": "2025-02-09T15:50:34.548390Z" + "end_time": "2025-02-11T16:48:24.622644Z", + "start_time": "2025-02-11T16:48:24.550645Z" } }, - "outputs": [], "source": [ "light_params = {\n", " 'objective': 'regression',\n", @@ -964,30 +962,19 @@ " 'lambda_l2': 65,\n", " 'verbosity': -1\n", "}" - ] + ], + "outputs": [], + "execution_count": 10 }, { "cell_type": "code", - "execution_count": null, "id": "beeb098799ecfa6a", "metadata": { "ExecuteTime": { - "end_time": "2025-02-09T15:52:13.316938Z", - "start_time": "2025-02-09T15:50:34.658007Z" + "end_time": "2025-02-11T16:50:03.925800Z", + "start_time": "2025-02-11T16:48:24.655023Z" } }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "train data size: 913920\n", - "未发现缓存模型,开始训练新模型。\n", - "Training until validation scores don't improve for 50 rounds\n", - "[500]\ttrain's l2: 0.309564\tvalid's l2: 0.257146\n" - ] - } - ], "source": [ "print('train data size: ', len(train_data))\n", "\n", @@ -999,46 +986,111 @@ " ], evals,\n", " num_boost_round=1000, use_optuna=False,\n", " print_feature_importance=True)" - ] + ], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "train data size: 902614\n", + "未发现缓存模型,开始训练新模型。\n", + "Training until validation scores don't improve for 50 rounds\n", + "[500]\ttrain's l2: 0.309611\tvalid's l2: 0.256064\n", + "[1000]\ttrain's l2: 0.29282\tvalid's l2: 0.253211\n", + "Did not meet early stopping. Best iteration is:\n", + "[975]\ttrain's l2: 0.293549\tvalid's l2: 0.25321\n", + "Evaluated only: l2\n" + ] + }, + { + "data": { + "text/plain": [ + "
" + ], + "image/png": "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fTteffXVhvgKDYZBioiIiGp0xx13ICQkBGfPnsXkyZMd5atXr0ZwcDAGDBiAcePGYfTo0ejdu7fbx/Xz88OXX36JU6dOoVevXnjhhRfwyiuvNMRXaDC8tEdEREQ1UigUuHbNdUxXXFwcdu3a5VT21FNPOa1XvtRXeVxU//79XR4HcyuNnWKPFBEREZGHGKSIiIiIPMQgRUREROQhBikiIiIiDzFIERERNZJbaRC1t/K235BBqgbFxjKpq0BERE2ASqUCABgMBolrcuuzz5quUCgkromI0x/U4OilPMS0jJC6GkREdItTKBQICgpCVlYWAECn00Emk0lcq1uP1WrFjRs3oNPpoFR6R4Txjlp4qRKTReoqEBFRExEZGQkAjjBFnpHL5YiJifGaIMogVYMSM4MUERHVD5lMhqioKISHh8NsNktdnVuWWq2GXO49I5MYpGpQbGSQIiKi+qVQKLxmfA/dPO+JdF7IwEt7REREVAMGqRoYeGmPiIiIasAgVYMSE6c/ICIiouoxSNWAY6SIiIioJgxSNeBde0RERFQTBqkacLA5ERER1YRBqgYMUkRERFQTBqkaGDjYnIiIiGrAIFUD9kgRERFRTRikasBn7REREVFNGKRqUGy2Sl0FIiIi8mIMUjUwl1lhtjBMERERUdUYpGph4KScREREVA0GqVoU8849IiIiqgaDVC04BQIRERFVR/IgtX79esTHx0Or1SIxMRH79+93a78ffvgBSqUSPXv2dCrftGkTZDKZy1JaWupR/Yp4aY+IiIiqIWmQ2rx5M+bNm4cXXngBqampGDRoEO68806kp6fXuF9BQQEefvhhDB8+vMrPAwICkJGR4bRotVqP6mgwskeKiIiIqiZpkFq1ahUee+wxzJw5E507d8aaNWsQHR2NDRs21Ljfk08+icmTJyMpKanKz2UyGSIjI50WTxUxSBEREVE1JAtSJpMJx44dw6hRo5zKR40ahYMHD1a73zvvvIPz58/jpZdeqnaboqIixMbGonXr1hg7dixSU1M9rieDFBEREVVHKdWJs7OzYbFYEBER4VQeERGBzMzMKvc5d+4cFixYgP3790OprLrqnTp1wqZNm9CtWzfo9Xq89tprGDhwII4fP4727dtXuY/RaITRaHSs6/V6x/v8YiPMZnNdvx7VE/tvzzbwDmwP78G28B5sC+8hRRtIFqTs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" + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "
" + ], + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAU4AAAJ8CAYAAACRCUhSAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOy9WXMk93UlfrL2fV+wA93oDQ30QjZFiosoa6UkT9hhz8s8zSeYeZkPMq8TEzEPM+Gw/bfkUFi2JYdkS7JISSR7IZu9EOgFO6pQ+5ZZlZVVufwf4HuZVSgAhaXRQKNOBKK70UBlVlbm/d3fveeeIxiGYWCAAQYYYIC+YXnZJzDAAAMMcNowCJwDDDDAAPvEIHAOMMAAA+wTg8A5wAADDLBPDALnAAMMMMA+MQicAwwwwAD7xCBwDjDAAAPsE4PAOcAAAwywTwwC5wADDDDAPmF72ScwwKsHwzAgyzLq9TparRZ0XUf3gJrFYoHNZoPH44HX64XFYoEgCC/pjAcYYH8QBiOXAxwlFEVBNpuFy+WC3W6Hx+OBpmkQBAEulwuKogBAR0AVRRF+vx+hUGgQPAc4FRhknAMcGQzDQC6XQzweh8vlwv3791EoFGAYBmKxGC5evIhPPvkEPp8P9XodgiDgW9/6FkKhEFZXVxEMBgeBc4BTgUHGOUBf0DQNKysrkGUZ09PTcLlc0DQN7XYbrVYLiqIgl8vh7//+7/GXf/mXGB4e5qxTEATYbDZYLBZomgZVVaFpGgzDgKqqEEURXq8X4XB4EDgHOBUYBM5XDFRf1DRt379rtVrhdrshCALXJHVdh6qqaDabWF1dhaIoiEajsNlssFqtsNvtcDqdcDgcsFqtaLfbcLvdkGUZtVoNsiyj3W53nA/VN10uF3w+H/x+/6DGOcCpwiBwvmIwDANLS0uIRCL7/t1sNot4PI5WqwVVVWEYBiwWC+x2OxwOBzRNg91uh9/vhyAI2wIdBe1qtYp2u80BkrJN+nld1znzVFUVFosFPp8PgUAAFsuA6DHAycegxvkKgrbH5XIZfr8f2WwWPp8PiqLAarVClmWcO3cOpVIJuq4jk8kgFovBYrFAVVW43W7YbLZtgfHu3buwWCy4ceMGrFYrf1/XdXz55ZdIJpNwOp2IRCIQRRGKoqBWq8Hr9aLdbkMQBIyOjmJhYQE+nw+SJCEUCmF4eBi1Wg0bGxsYHx8fZJ4DnHgMAucris3NTWSzWYyNjaFUKiGdTvMW+vz585AkCcFgENlsFna7Hbquw2KxwGq1QtO0nlv92dlZCIKAdruNdrvN39c0DRsbG/B6vfD7/bDb7dA0DalUCqqqwm63o9FoIBAIoNVqodFoQNM02Gw2RKNRWCwWOJ1OVKtVGIYxCJwDnHgMtuqvCGibfO/ePQSDQVy8eBHAVlDrVT/sFaAymQympqb2HbjMt1C1WoUoihAEgbf4drudz8EwDG4KtdttKIoCTdPgdDoRjUZhtVoHgXOAE49BxnmKQA0aXddx4cIFCIKARqOBRqPBvMhyuYwLFy5AkqR9v34wGDzQeZkDXTAYRDAY5FpnoVCAoihQVRW6rkMQBFitVjgcDng8HgQCgUFzaIBTh0HGeUpAGeXq6iqazSbC4TATzD0eDxwOB//sywpAhmGgWq2iVqvB4XDA5XLB5XLxOdlsW+s00Zjoq9lswm63I5FIDJpDA5wKDALnCQR9JKqqckbZbrdhs9ngdrvh9Xpht9sBHF+QNAyDaUVOp3NbgKMJoFKphMnJSciyjE8++QStVgtjY2NYX1/HzZs3IYoi1tbWIAgCZFnGm2++iXg8jmq1ClVVEYvFjuX9DDDAYTAInIdAu93G5uZmR4f5KKDrOrLZLAzD4IzSbrdjdHR0z0BpGAay2SxUVd13UBUEAcPDwx2/R7eHpmn48ssvUalUcPnyZTgcDrTbbSazt9tt/PVf/zW++93v4ty5c/D5fExpcrlc0HUdTqcTuq5DlmXoug4AcLlcaDQakCQJQ0NDcDqd+7xaAwxw/BgEzkOgXq+j0WggEolwVxrY3njRNI2DKzVHem1JaXbbarXy3+l3s9kshoeHsbq6Co/Hg6GhoZ4NHwBYW1vD2NjYtuPTedG/qXFEf66trSEcDjO/kqZ7AHBjx+l0wm63w263M0eTGjqqqsJms0FRFIiiiGazya/RS+SDOKI+nw9er7cnN3SAAU4iBs2hQ0LXdfzqV79CpVLB17/+dSwtLSGbzUIQBHg8HrzzzjtYW1vDzMwMyuUy/vCHPyCRSMDv9yOVSqFarcLn82FkZAQWiwXz8/P4/ve/j3v37nEds1wu4/z589jc3EQmk4Hf798WiABAlmX88z//M775zW+i0WhgeXkZly9fxvz8PCwWCxPPQ6EQrl69irt37yIQCKBUKiGRSCAcDqPdbsPpdMLr9XJQpMbN559/DgC4ceNGRzOHzsVms0FVVUiSBEVRYBgGk98BdPy8YRg8lVSv13lqaYABTgMGGechQBknAO4au1wuHlG0Wq2w2WxMSCfuI2WTTqcTsixDEAToug6Px8OZGNU0PR4PVFVFsVhEMpnctXmiaRoKhQJarRbC4TArEdF0DgU2v9/P22sKqE6nE9lsFqFQiIMafVGgE0URFosFHo+Hg6AgCLBYLPi3f/s3XL58GSMjIxyANU2DLMtwuVxotVoQBAHJZBIbGxtwuVxoNpsIhUJwuVyoVCrQNG1bqWCAAU4iBhnnISAIAk/GEM2GgqMgCNu2zObfo0BKnWbz7xIoAANbVCRz9tYLNpsNIyMjWFpa4t+j1wbA8m69qEqqqgIAotHojoGre401Z47f+MY30Gq1EAwG4fV6sbm5iaWlJbTbbUxMTKDVasHpdDKlijQ4Y7EYHA4HIpEINjY2BgT4Y0CvXOlVv+ZH/Z4HGechQJ1mM3RdR61WQyqVwh//+Ef81//6X4+k4UF0nn6aQ5qmcfNlP6DJoYPeUJqmoVgsotlswuFwsPiHeVadgi1lvIqioNlsQhAExGIxOJ3OV/4hPk7Qwka7I2rYmR97WvSpRHPaPwMasKjX62g2mzu+Z3qmiKmyn3t/EDiPABRAK5UKms0m/H4/C1ac5hvwIKDbiQjw1CSim9dMgPd6vQgGg/D5fGfyWr1oGIaBcrkMSZLg9XrhcDg6xFqsVisPJ5CWgKIoaLVaGB4eZsrbaQIxUqhs5nQ6YbPZOsS0qfFJcog2mw2NRgM2m61vLvEgcO4TjUYD5XIZNpsN8XgcsiyjXC5DEASEw2GWZTuLMAwDjUYDpVKJb1KXywWr1dqxmuu6ztlmq9VCu92G1+tFJBI5s9fuqGEYBlqtFtLpNKamplCv1/HHP/4RiqLgwoULzGb49NNPEQgE0Gw2cfXqVUxMTKBer6NeryOZTL7st7EnKLvUdR12ux2SJKHZbCIej6NUKuHevXuQZZm5xZcuXcLi4iJzoxOJBK5evQqbzYZsNgu/3w+v17vncQeBc5+o1WpYW1vjD8fj8SAUCvW1jX7V0W63kU6nMTY2hlarhS+++AKqqiIUCqFer2NqagqNRgPpdJppV9euXYPX60WxWITFYjmQHN5ZAmWRhUIB0WiUrxdlja1Wixejf/qnf0IsFsNbb70Fv9/PJRP602KxsIQgUdKazSZkWcbQ0FDHNNpJBJUh5ufnUSqVcPHiRXzxxRfY2NjAD3/4Q/h8PmaFkJAN/dlut6HrOmw2G1qtFkRRBAAMDQ0NMs6jBK3gpVIJ7XYbwWBwR13KVxGapqFcLkPTNEQiEdjt9g5yfLvdxhdffIHFxUV88MEH8Pl8KBaL0DSNyfDUzScVJL/fD5/PB1mWUSwWeSE6DTiMYPRhjmmxWJDJZFCv1+FyuXiHQ6LStB232+1MLdM0DZIkMU3MXPMz82ndbjf8fn8Ha+KwoPrqYeB2u5mHTDsV2q2QkhftbhqNBg+NSJKERqPBQjLEECEmiM1mg9PphMfjgc/nY/ZLPxgEzl1AN1e9XkelUoHNZkM4HD6RxXM616P4OGkxMCvBt9ttzM/Po1qtYmpqiutGAPihLRaLcLlciEQikCSJp5e6i+6UKdBrezweBIPBU6WMdBjB6IOiWq3CZrPxVtLn8zEro9d1o0alJEkcJM3cXHofxKel4OJwOBAKhY7kPm80Gsjn8wgEAgf6faqVE3OFHAfIlsVqtTKDhHQR6vU6arUa0/Do58zvmbb4FHhtNhuCwWDfi8YgcPYAdX0rlQoajQY3MU7yg20YBpaXl4+kg1+r1RCPx3mkkh46q9XKBXeyygC2E9tppaftkJkLag7KZgsN2kqe1OvbDcMwsLGxgXq9Dk3TWOVpeXkZIyMjfP8kEgnkcrmO5sTIyAgymQwymQyuXbuGxcVFhMNheDweVKtVOJ1O+P1+PHnyBMPDw6zMTw91sVjE4uIiXn/99Z4BqVKpoFwus4+Tz+fD+vo6Bw4SVpmYmICiKJAkCa1WCw6HAyMjIzAMA8ViEV6vF6FQ6FDXicZpS6USWq0WxsfHUSqVUK1WOTseHx/H8+fPMTQ0BEVRIMsyJEmCxWLB2NgY6vU6otHojse4c+cO2u02QqEQEokEl8+y2SyAreAbCAQgSRIv0mtra3A6nRBFESMjIwgEAqhUKtB1HUNDQ3u+rwGP0wTDMNBsNlEul6HrOkKh0K68xuNG9xrXfV4kDKxpGm9Z7HY7Wq0WrFYrRFGEz+dj4jsR0MvlMo9e2mw2yLLMD685mH322WewWCy4du0aLBZLhy9RrVaD1Wpl1Xmn08mq8zabjaeIPB4P1zMVReERzlwuB7vdjng8fmKudzdo8oqCPrDFr81msxgaGkKz2cT6+jpEUcTQ0BCy2SwsFgueP3/O2bvf74fD4cDm5iaq1Sry+Tzy+TxWV1dx/fp15PN5hEIhnumnAEJb8maziVgshlgsxv/uRrlcxsrKCq5cuQKXywWLxYJ6vQ5ZlhEOh3nggcpP1WoVVquVt6sA4HQ6mdvbC7vdi/R/lPmRG0G73YbD4UC9Xocoilxu8Hq9aDab0HWdRW2azSba7TbGxsY40O+Eubk51Ot13L59Gz6fjz2xWq0WyuUyZ5ztdpvfc71e53/TjsnlcqFWq/V1L5z6jFOWZRQKhSORI6P6ZTgc7lkYJ7rCXg92q9Xih+YgGB4e7vm7sizjyZMn0DQN165dg81mg67rUBQFz58/h9vtRq1Ww7Nnz7C5uYl33nkHAJBOpzE7O4v5+XkoigKHw4Fms4np6WmMjY3hs88+g9VqhSRJiMViGB4ehs/n6/m+aLtkhqZp+Lu/+zu88847eP311+F2u7G+vo6nT59CURScP3+eg/XU1BR+97vfIRQKYXNzE2NjY3jrrbeg6zrW1tYwOTl5YqXlRFHEo0ePoCgKE/fHx8cBgHmz5tl/sy6AGebvmXUDzAG5FyqVCteFd4O5vEKZnllUujuzJ/8naixRgN/NrllVVTx58gSiKLIzAP0+dbkfPXqEfD6P73znO5wx7nU9ukGCMHupZpkX8VKpBFmWmZtK79l8bak8QeesaRo8Hg8ikcjZaA4RFcjn80HX9Q4xDfMWkkQ4aLwRAGdN5puD/s9c36OfSafTGB4extraGiKRSM/6FtVEZVlGJBLZ9hq9ft4spJFOp/kmoxoM3Yjk4WOxWDp4oqqq4ve//z1u3LiBmZmZjhoOAA6UtPLScen9mr9nsVj27f1jJrXncjlWRHK5XCwEQq9FI5703ogA3263EYlEuJZ1WBSLRfZu3wsOhwPJZLLjszJbH1OXmsSiFUXBp59+iu9+97u7lkZ0XUez2USz2eTf7f68qQbndDrZ62k3RCKRPX/GDLofM5kMcxfNwitUg7bZbB1bZ/P93x1Y6XrIsgyHwwG3283lm+4gpWkaSqUSgK2FV5blbc0auhZmji+9piAICAaD+ypBmXsT1WoV9Xqdj0nvmd6vz+frqG2emeZQuVxGq9XCJ598Al3Xce3aNaysrCCfz/OFuXbtGkRRxPj4ONbW1vDgwQNcunQJsixjc3MTsizD7/fjypUrWF1dhSiKePfdd3H79m243W7OxGKxGDweD1ZWVhCPx3vWf2iV/ZM/+RN8+eWXsFqtGBkZwbNnz3jbHAgEkEgkkEgkcPv2bYRCIayvr7PlhZn/SMV8qq9ubGzA4/EgHo8D6Azw8/Pzu25p+oXdbsfc3NyBAhgtUo1Gg7dj5k4ugA4FeOLN7aej2Q9SqRQSiQR3Y2mBaLVaHWR7QRDw/Plznq83q9R3d6kNw8D8/DzC4TDGxsZ6qlPRsaiuSV1b+gwpoJAxnpmITapU0Wj0SDvbxWKRBw7MgYoWCEomLBYLVldXEQgE+FrQuXZfC6vVioWFBTidTpw7d65nlkbHqlQqEEWxY4EAwDsmKuXouo5Wq8WqWoqiwOVysZFgP6D6bKPR4GM5HA7+fTqm2faaOvX74RK/EoETANdIKNtRFIXHIYnOQHU1881jtVpRr9f5wTCvPFSTIbm0SqWC0dHRXc+HVjiPxwNFUZgWYhgGm5jRGCJt5YgSoqoqqtUqBxFz9ktfy8vLCIVCGBkZ4aAKAPl8Hqqq7nl+/aCX9xDZcmiaxqpNZtA1NVO26EExd3LNXVwKGAAQCoXg8/mOLFik02k0Gg0sLi5iYmIC6XQa165dgyRJyGazyGazaDabmJubY3pZt41xN8iULhAIIBwOb/t/VVXx4x//GO+99x5u3LgBt9uNpaUlpNNpSJKEsbExNBoNBINBjI2N4de//jWGhoZQr9dx5coVDA8PH2nJgnYdlUoFkiRhaWkJPp8PhmFgYmICS0tLqNfrsNlsSKVSmJ2d5UzP7BO102unUik4nU6ut3bjs88+Q7Vaxfvvv4/x8XGoqoqPP/4Y7XYb0WgUzWYTTqcTFy5cwPPnz3lEMhgM4vr163A4HCgWi7BarT2vN52Hmd1BjclEIoFyuYwHDx5AlmVMTU1hbW0NX/va17C0tARFUdBoNCDLMr773e/C7XZjc3OTtRb2wqkPnJVKBZVKZU9JMppqcbvdB74hJUnC+fPn93y46/U6stlsXx9AN2q1Gs6fP8+ZEsGsz9n9JUkSfv7zn+Ptt9+G3+9HPp9HqVTCzMwMLBYLNjc3MT4+jtXVVS6S06TT6OgoHj58yF3zQCAAh8Ox7UbVdR3Pnj1Do9HAlStXtl3v9fV1FAoFnD9/HqOjo5ydEe+zVCphenoa9Xod+XwehrGlDjU9PQ273Y58Pg+Xy3XoLi4hnU7D7/d3ZBNUn5UkielUDocD5XL5SBYcwzBQqVRgt9tRrVbh9/thtVq51EINGUHYkhwURZG5lm63G4qiMOVop1q6YRgoFApsrRwOh/k+oYzVPJH1q1/9Ck6nEx988AEsFgtkWeZGCN0H1Eix2WyoVqtHci0AMH+TOug+n493RJREeDwePj4pjVHyIkkS6vU6hoeHdyTjq6qKhw8folKp4Nq1a3j69CmWl5fxve99j5tOhmHA6/Wi1WrB4/FwmYEaQ263G6IoQpZljI6O9iVMfuoDJ00B7IXV1VX8+Mc/xv/4H//jwIrtRJ/pR2ij1Wod6Bj0cO8n86KPcH19HTabDcViEaIociagaRq8Xi9EUeSARSs7NZSArWvpdrvRbDa3zezSwiMIQs+x0lwuB0mS4PP5WKwjlUpxdkFNN1mWeSQzGAwiFAqh3W4jn8/zUMFhYRgG/vjHP8Lr9SKRSOz58+12G5OTk4c+LoGyacp+qNZs3jnQeZq3w0TLoozP/HP0p6qqWFtbQ6lUgt/v79Bm7VVeILEL2ir3oofRjsdisaDRaGB6evpIMn96DoitQgR8Kod0a7qa678UaCmImndhZhI80ZeoLloqleDxeBCNRplmRdfYHOrouHTN9kv8P/WBcy8YxtaERz6fRyQSOdLt4EkCEbLNfLfuela/73t9fZ11Oc31rYcPH8LpdOLWrVs9Oa0UCMrlMmRZBoCOZoF5Vt2sMm+3249ksIAe0GKxiF/84hf40Y9+1Bcnj4LGUWFtbQ0Oh2Pbe9mJz9r9c+VyGcPDwxyAqZFCuwLSeCUSeLdQNIEWO8qm6L12f3bmRg3RkgKBwKF5y7vtvLoD5U7XAgBzTUkMht47LTDmBQDYKhfVajXONuneMz8H5nq0xWKB0+nk3daZqHHuBgqahUKh7xT8tILe627cu35htVp59JFWeKpHmldwi8XC2Y3D4YAoipxdUr2KlJHMHU3K3MkJk0bk9tPVNL9vw9gSWaYtIY2EAi9HZ3JjYwORSIT5qj6fD41Gg3myXq8XqqqiUChgfHwc2WwWVqsVlUoFHo8HhmHA5/N1DBqYA/vGxgaWlpZw8+bNngR4YnWoqsoBoVKp8E6DmA3hcJi3yET7SSaT0HUdlUqFE42DgjJuu93ONcXx8XHOBGmLbl5UiT/abDZRrVah6zqGh4ehKAo3RLtx9+5dGIaB4eFhuFwuGIaBUCgESZLgcDggSRKrIpF0HpHjSfTb6XTyNerHMPCVJcDTalsqlV75oAmA62ZHDeoG0zgb0GngRkG1Uqng//7f/4u33noLV69e5QDWnQ04HA6uL9E2TlEU3nqGQqGemVP3ezWMTik/n8+H0dHRFypP1+s8uv+fmpT5fB737t3jjJc85okrGI/H0Wg04PP5sLi4yNcnEAggGAxyXZQyRTOcTicuX76MVquFQqGw7f/X1tawsLCAd955hznBq6urqNfrPBFG3M5KpYJMJgOr1YpYLMZsDpox3ylw7nUtKIOVZRkLCwt4/PgxvF4v/uRP/gT37t1DNBpFKBTC4uIi3G436vU6M02IlE80qGAwuCu1bHx8HI1GA7/4xS/w7rvvYmZmBg6HA8vLyygUCrwVVxQF0WgUqqri2bNn8Pl8cLlcGBsb4wUqm832FThfyYzTHDRHRkZe+aB5EmAYWyOI8XgcTqcTq6ur3Eyanp5mTuPVq1fxq1/9CvF4HM+ePcP58+fxzW9+E4ZhYHV1tWc3Wdd1PH36FJVKBZcuXYLVauVJpVAodGxSfrIs4+nTp9B1HbOzs0yfoUaMoij4m7/5G7z99tt47733mGMLoIN7af6e2eSPQApTBy0f0CNN4imCIHTMd3eXJihA0YROq9WC2+1GNBrd8RxarRYWFhaYmUDZI33duXMH6XQaf/7nf86BiBZLavQQa6X73Gl7TSDFpp0yTvN7brfbKBQKTAXbKWuncpG5Xmqz2RCLxfrSIX3lAicRX6lTelKnUF5FKIqCbDbLW3CzjBltU202G9rtNnd0KaA2Go2eGSfVoVKpFCRJgtvtRigU6ikU3W63kcvlDhxEDcNANBrl7nc3CZ7I25SB9+I2klkdZYpm3VHKIs01TqpX0gNO3z8K7yWq91ImTFxRs0NAd+nErNpvDlTdJPhms4lSqcTDGJIkMXOAOuZU7z7sM6jrOiKRyLYdlcViQTKZ3LHWLkkS0wN71Ypp204UpP3sVl6pwDkImi8X9HBSPctsD9wN89QM1TipMQGA54kbjQbza/1+/66MA1Kb34vStFOjTJIkZDKZDg8pCmoUGNPpNM9D71RSIBK2LMssYmLOeig4Ep2M6sc0lkrjnIcNnBTY+qXFmRs1i4uL8Pv9u5LgM5kM7HY7kskk1tbWDhXs+2lednfF0+k0RkdHkcvl0G63WUuzUCgwj5imsYgN092gNF97h8OBWCzW12TWKxM4DcPgFYasdgc4XqytrcHv9+947c0PZi+kUikOnDRZRAH14cOHkGUZN2/e5E6q+SuXy0EURUQiEdy/fx/NZhM3b97E8vIycrkcB5Cvf/3r+OKLLzA1NQVJklAsFrG5uQmLxYKvfe1rbDjXC5qm4csvv+R5/l7//y//8i+4efMmLl26BL/fj9XVVWQyGTQaDUxNTSGXy/Hv//73v+8gwNP0UiqVOhICfKlUgqqqePDgAdxuN4LBIFKpFARha648FAphbGwMfr8fd+/exfDwMEqlEiKRCBwOB/NQd8L8/DzsdjseP36MW7duQVVVbG5uIpFI4OLFi/jwww8xMTGBYDCIlZUVJt3TgurxePDmm2/i6dOneP78Ob773e/i888/h9PpxMzMDJaXlyEIAmZnZ5FOp1EoFBCPx7lWTI4LRM9aWVnB+++/jwsXLsDlcuHx48eo1+usBavrOteQ79+/j1AoBE3TMDMzw7qwhUIBExMTe17bVyJwDoLmyQCNg5KLpcfjYVUc0ulUVRXZbBaXLl3C8+fPYbPZOEskvh6N4AFf1byooWTuvtOXxWLBwsICarUa3n77baY6AVsBmGp3lEFarVb4/X5+TRoH9Xg8HFAOAsMwsL6+Dr/fD1VVEYlEoGka6vU6b2NJ6YiUpKjTGwwGWeS53W5jZGRkRwK8KIpM5qbtq7lh12q18Pnnn0OWZbz++usQRRFOp5ObcXRNqNxAgZSumdfrZUrUXtB1nSXrIpEIRFFkPrAkSSiXy5iamuKtMhnzAeBsnMo11PlOp9M4d+4cNwEpw6VygPEf04Fk70FTfplMhq9tKBRCo9HYJkxDk2ykgEY7GWpwdpcodsKpD5yDoHlysLGxAQBYWlri1ZxGMF0uF3w+H2eklP1YLBaIoohkMgm3241kMsn8wZ0y050CCk0lHZRC02w2eV55v+jmJbbbbVSrVeYSds+q0+/Qdt0wtkZyA4EAB0Pz4mBeSJaWlrC5uYloNMpdYpo5p8UhnU5DEARunnWfJ/3dfJ3N17Vare6LCL+8vHxkAi17gehKNMU2Pz8PQRBw5coVlkus1Wo8hELNsF61cypFEG2rXy7xqQyc5lMWRRGiKO4oxTbA0YAecgAdxGjK2G7fvg2Hw8FjnjQd0j3vDmDHzymbzWJiYuLALAiiNh3mlqas8CDHXllZ2bEjS1qe3c0hc92zGzRWSdfe3IGnLrnZfhnAtutNlhlmm4/uz8VMyicxENIN7TcQkuj1cYD0X6nBWKvVYLfbEQqFsLy8jMuXL0MQBBbTNjfDzLVUahJRnX0/bqunksdZKBSwuLgIYIvDNQiaLx6apuHhw4eoVquYm5uD1WplkrXFYkG5XMaNGzcgy/KBs45gMHioz1EQhA6+6VFjL+6i1WpFMpnkOXXzlIokSZxtk6VIpVLhbTNlnLQlJdoQBTLzqO/6+joePnyI1157jRs/5iyStt2SJEHTNPj9frjdbrjdbtapbLfbXPczKxLRTHcmk0EikdhTA4JA535c6H7fpKa0sLAAVVUxOzsLp9PJY75UkiBqVq1WY6YAlQtSqRSCweCONW4zTmXGSRa9iqJgampqEDRfAMw3ZLPZZDVvm80Gt9sNr9fLlCPCyx5lbbVa3Ag6CHRdRzQa3TFYNJtNLC0twTAMXLlypYOIv7y8DJvNBkmScPfuXVy7dg2bm5sdNKbr168jkUigWq0iHA7j448/5skV8s4ZHx/H4uIiEokELl26BFVVtwUkquHutK1cWlrCo0eP8L3vfQ8XLlwAAPz+979nAjzxR8fHx5HP57k5FolEMDMzA7vdzvPt/dQ5Twoo6x8fH4fVasX9+/dRKBRgtVp5qMDv9yMajeLOnTvw+XyoVCqYnp7G3NwcVFVFKpXC1NTUnsc6dYHTMAzUajVWTXnZD+vLAildv4iPzzAMlEol1Ot1Vo8ZHx+Hy+XatfZII3YH/Uzo4e1F8+meae4FoiORYtBOP0dlhO5jyLLMsm9mIy/6orqa1Wrleh6R3H/zm9/g1q1buHbtGm+pzdtyAjVBiNdqzkrNf+q6jmKxyOOA+wFtS81jqEQGp8zVvCU1czuJbG6xWJBIJPYlmvyyQXzVfD7fQQMzk/7Nnxl9kVqSruuIx+N97VpOVeA0DAPVahWNRuNMB03gKw/zftR/DgJzjbJQKCCRSLDsV/eWmm4hmtHeK+PbKahls1nOFsy3pa7r+PLLL1EsFnHt2jUEg8FtdKRUKoVarYaRkRE8ePAAoiji1q1bWF1dRS6X40z5a1/7Gu7evYtz584xQZxU969fv45arcYq62YRaXpPRLkyeyPRuabTaQ5a5nMnwn+vmX2zolF3fU1VVYyPjx84eNF5mbNeIuGbQedCgwskvdjv82UYW3J6x2mVTOh1v1HdnbJmWZa5fEHXngj/Xq+XVZj2YxZ4agInBU1ZljE0NHSmgybw1ZRMJpNBLpfD9evXkc1meWvidDoxNzeHpaUlXL16Fc1mE5999hmcTicbiYmiyI6ADocDjx49wje+8Q08f/6c3RUtFguGh4dhs9mwtLQEq9WK6enpbYHzo48+wtjYGMbGxvD48WNEo1G4XC7k83nIsgyv18tz25ubm5ibm8ODBw+YjhSJRBAIBHrKqQFb5RnywTZnDpRJPH/+HKIo4rXXXmObBKKhUEZBEz+CIPD8M221aSY6m81yfdLcxKFs8NmzZ0gkEjzKaw6sFouFRazpoQXQYSlBjTXq6hLzgJoYRNvqdhDdDdQ8Oo5HuVeHWtd1rK6uIplMvvDjm1EsFhGLxThrJEUnWZaZbkSLUve1756EslqtiEQifH/shVMROGlFazabZzpokt+NYWw5RlJQIhoNPYTE26NZY6fTCUVRUKlUOmw4RFHkoBCPxyHLMoLBIGq1GsLhMHcu3W43PB7PjmKyhrElWuzxeJBMJnnskm6tWq3GNy9ZGTidTlSrVQiCwNtrcuakSR2zJN3z58/RarVw+fLlnk0IMx2pe1KmmypkDoZmkFiI2SvK/PvmzngvQWld1/HP//zPSCQSeP/999mQjpgfsViMid9UZ4tGo6jVahgbG8Po6CgajQaTsPu9z0VRRC6X67uRcxg0m02cO3eO1fCJ2F8qldBoNLC2toaLFy+iVquxAInL5cLFixdx//59eL1efO1rX4Msy/j8889hs9kwMjLCAwxutxuBQAAul4sX8mKxiKGhISwuLkLXdaY+zc3NwWKxIJVK8Yw9ib0MDQ3x+SiKglAoxALR6+vrUFUVoijC5XJ1CH4nEolXY6tOQVNRlJ5zqScRR3FJe9XgFEXB/Pw8Njc3YbPZMDExgaGhoW2jaP2eR3dmt9O1JYWpvWpta2trTOno9Zp7HSefz2N0dJRnxM2anSS2TBYXFFTNmZx5KyyKIku5AdhRNJcI6TTOafan2S/oNYvFIivfi6KIQqHAMm60TY5EIlhfXwewFVhoXFAURdRqtX2Z5VGHmOq00WiUt+dE+CdbXuLXEtmbFlXimrrdblQqFbTbbSSTSVQqFQBbZQOv14t0Os014GKxiGq1io8++gh/+Zd/Ca/Xy4wC2hpXq1XWF7BYLGi1WmybQcpFlF1Thk4z6LQjojIC+QORVB2JPtNnRg06j8eDRCIBw9gSnmm324jFYpBlGYlEArVajZOGWCyGQCAARVGQy+V2VZs340QHTsMw2IzttARNYEsNnQrs+0Wr1WIFdRKHMDsk0nYwm83ixo0bO14T0sQk/l6vj5l4hERO34lOIghCXwLQNKd+UNBY5E4Ed6BTBNkcXFVVxSeffIJSqYTvf//7iEQinC3X63UOnKFQiMsZzWaTHzR6wPs169oNhrGlzlWtVqGqKosPmz2i6L3QIkEBnlwXdxtbLRaLzPGkHUKj0cDHH38MwzBw6dIlpFIpntn2er14++230Wg0kEwmsb6+jkePHuH8+fOsyF8oFBAIBDAxMQGLxYJ8Po9bt25hY2ODS2QTExM8pgls1XRpmIFGSekcey38ZiI/0Gk0uNMC2+u16B6grv/a2hoA4MKFC7BYLB22yDRj333tzYpQNNVFte1TvVU/qUFzLy4fsFXDi0QiHOwcDgdv56ghQJ1XCmpmYdd8Ps91R7PAhK7ruHPnDkKhEC5fvrztuEQIJk8fKnjTzUAKRFTjoRE8QRC43jc0NHRqZfja7TY2NjYwMjICh8OBx48fI5PJQBAEXLhwAaVSiWeow+EwNE3D1atX+e8bGxuYnJw8knut0Whgc3OTlYIouJstcalsQp+RYWyNElKtsLtBRhn12toayuUygsEgnjx5AkmS8KMf/QihUIh5mbTdpCyYgoiZ6E7fM4+4ktAIKVp13wsLCwsc2J89e4ZAIIDp6WkoisILsbkMQsfTNI0Fk80Omt2gujQJXPdazFVV5djg9XrZr2psbAzFYhFjY2OsJ0pNMTqmuTFHx6FSVL/1TeAlBE7qgO51WNpOmK0gNE1DLBbra6ROkiTOLPYLQRAwOjra8yJWKhUsLS2xEAHw1fiWpmk8/hWPx/Gb3/yGx+JSqRTXocLhMK5evQqbzYZMJoNqtYp0Og2r1Yo/+ZM/Qb1e31HRplwus+VsN/7whz9AVVV85zvfwfDwMERRxCeffIJms4mLFy/yn4uLi+x1nUgkcPnyZVitVr4Be6mKnxa0Wi1uarndbuaadk87mZWJSAiCqChHEThp++zz+XhIgLq51Oiy2WxMhm+327BarVhdXeXtdPeDTkGW/k1urtQ43e1eJ3k88yQN7WDMsnJ7lSqsViuGhob4+nVn/WZPo3a7jX/4h3/ABx980CHdRoRzigH0b/o86P+IxbHTYm7ehVBp4q/+6q8wNzeHa9euMW2MEhY6f5vNxg1ESjZotxSNRk+my6VhbAkhULoPgFc2M4eNVkcKSrRqksjqkydPMDo62pOOQzqAZi9pc8rfvQWgbRLdSOvr60gkEpwpmBsCtIrZbDbevtLNZ7FYcPv2bcRiMbz++uu8bdA0DW63m98H0SKcTid0Xe+g35gpP/uFOeOkh5ayVVq56bqaaSnk6SIIAtfaTjPo/VHjrDvTo8+Manxut7svgzzza+xE1yEuIdFgHj9+zEZ2gUAA77//Pp48eQKHw4GxsTH2JqemBD285sYYHYv+nk6nsbKygtdeew3BYHBbs8scvIrFIkusmbv7ZqaA2R6FdiF+v59f+yDXH/jKTlkQBExMTEBVVXz00UeQZRkjIyMAtoQ+xsbGsLKygmq1CsMwkEwmWbCa7L/70Q8wDINVmCwWCz7//HO2L6G6LNlr3L59m2ubV65cwfj4OJ/viSTAU8G2XC5jdXUVMzMzePToEX+IhmEgFothZmYGm5ubKJfLSKfTsNvtuHXrFmRZhtPpRCaTQSwW65l5/fa3v4XT6cQ3vvEN3Llzh0nEqVSK6S+xWAxTU1Pwer344x//yMF2bm4O4XCY6x1mygkFuGKxyPwvYHuThexbDxKA2u02hoeHD2QtTMc389hoLHKnGicRhb1eb4dPz0GzLnP3er84zHEPei77OaYoinj8+DEA4ObNm5xV0RdlYZTl/+mf/im7dhI9qtlsdjhQUiZMhPl0Oo1kMskBrfuLsmXz7LU5uQC2ao8ffvgh/tN/+k9sv/zFF18w3YncLkdGRlAqlVAul3lxv3jxIux2Ow9X9KMUtBsMw0A2m+XmEi3k5gyS/k4LnCAI7BKq6zqGhob64rIaxtZoKzldmv3hzWUKEtOm54KyW2qs9bOjfWmBMxgMct2BMkyqq9DqT1sZMq63WCxQFGXP1UcURebT0RaIlLvphqUPkOovANhne2NjAz6fb1uGQp1bKqwTWdu8DSS/GTrefqEoChKJRE+b3F6Umu7/301ooh+0Wi2W9NrPsQlra2sHCoCyLLOffDf6PXY3SqUSqtXqjteD7BWIX9rdgDIHRfIrb7fbvNhQV5+oVpQh0gQOCf2a65Nmkrh5+02Lsvl8DgJzBpnL5eD3++Hz+Vjs1+PxQFVVuN1uNpGrVqsAwPbMiqKgWCxy1nlYULCnhZy64+YFneqjJBxNY70HscqmrJ+OZ1bfJ5h3HJQ4EJ3rRDaHDGNLFqsX54zEDnaiAxAfKxwO73mccrnMrnX7BT3E5nOmrbq5nkP/NstT/exnP8P09DS+853v8ENHdS5zh5WK8PS7pHRONaZeN6wsy3j06BE0TcPrr7/ecZ2oGF4ulzEyMsJdfVoogK9UvCVJgqqqCIVCTMuQZZm7y+Pj49uOraoqHj9+jFqthtdee23bqkyrPanv0zHpdSngUKebMnKizDSbTZ6j7gZNDpVKJVy/fr0vvcx6vQ5JkuD1epmOYw5+1DyjRdyc7ZgnesxfhmFgcXERwWCwJ5/Y/CjJsoxKpcL1TXNgNS+y5q66xWJha96jKJfous4cUioJmeu9ZjI43cvAFmGfmpNHsQMwjC2OLRmw0bUwd7DpPOg5ISbHfq8F3YdUYzY338yvY2Zn0DkFAoG+pfFeSuA0byvM+MlPfoKZmRnMzc3t+Pv9ej3TB3EQ0MOz35UO2NIxrFarsNls+M1vfoNwOIx4PI50Oo1cLgeXy4VwOIyZmRnYbDZks1lUq1WkUimEw2G8+eabEEWx51adHnyaDDKfn6Io+Lu/+zt873vfg9vtxmeffYYrV65AFEXk83mUSiUEg0FcunSJX2tychJ37tzh10kmkwgGgz23KnTz0yrdiyLyt3/7t/j617+OeDyOR48eYXZ2FsvLy5AkCU6nE/V6HWNjY5iZmcGdO3dgtVoxMjICVVXZimKnjJOO3S/P8l/+5V8Qi8Vw/fp1/PSnP8W3v/1teDweFumYmJhAIBBAsVhkcrR5IqkbtDNZWlpil0oAHb+j6zp+97vfcbknGo1y8BRFEX6/n++tSCSCJ0+ewOv1ol6vIxKJIJlMolarQZIkjI2N9X2f94tusj69r+7GU7+gALfTM0nZX7FYZN8gEmExC8YkEgk8efIEPp8PoigiFApheHiYx6t3atT2Ot7m5iYHfnLvpGsvyzLrna6ursJqtUKSJCSTSSQSCR4b7SfjPzF0JMMw8OjRI0xNTfXcpp4mEB2J5LuotkQ3EmU3JPZgDhaiKCKTySAYDHaYeNF28+7duwiFQrh06dI27htJY42OjvJ2hVZbelBIEdvlcnEWSLBYLHjy5AmPPpqPbbVa8eDBAwjClpVBd4Cj46fTaQwPD3Mzj+glZs4elWbooaWiPHVcze6EFCSLxSJ3vvcqgdC5lMtluN1ubigC6AgOqqqiVCrt+KCYa8bdf/b6u6ZpWFhYQCAQYPvbbDaL9fV1aJqG4eFhLiElEgk8evSIa47nz5+H0+mELMvI5XJ906Ky2Sx7pR8XFEXB8PAwW1O8/vrrTLsyZ6+apuEf//EfMTo6im984xsIBAJYWVlhtguJMI+MjODRo0csQnL+/Hm4XK6+pqg0TcPq6iqazSampqawvLyM4eFhhMNhZo+QQLTD4UA0GoWiKHj69Cnf++Pj44jFYpypmhvXO+HEBE566PtdaU8yiKB8kPehaRoSiQRbHZjtZzVNQ6lUgtfr5YYXBTY6Vjqd7si0zXW6bnoLZXDdNcCRkRHustLWluhhdPOZj21+aLPZLCtv0yyweaIH+IoSQltgyuaos6koCtfBqKmyuroKi8WCa9euAQAH9t2uca1WQ7FY3DHQGobBxmtHCcPYmnaje8Dc0aYFw7yIkhMm1Vyj0eiuWZwZm5ubLDpMnylN1hD3l4zI6FpSlkjbWnM5i0oSzWaTSyyUWdJMN3Eoze+tVyPVat2ycfb5fJAkidW2iPZk3j6byxYkRkJz+93lG7oGxJxYWVlhvYOf/vSnePfdd7n/YGYSmK+9uY6tKAp0Xefnqp9F6MQEzkajwXqBpx1HcUl3qp9RCYKCmrnwLQgCPvvsMwwPD/Po4k4iB2YKCjXQdhM5MN+sZstbCsiCIGB+fh4OhwOXL1/mbNbcOOm+aen3BWFroqe7vmR+z3SuzWYTn376KTY2NvDBBx+8cNkzw9gipfejQrW5ublNBZ04hv2oI3W/F1pMzIHfMAysra1hc3OTeaebm5u4f/8+IpEI3n33XfziF7+A0+nEG2+8gYWFBXi9XtRqNV7UPB4PvvGNbyCdTuPBgwd4//33sbS0hHw+jw8++ADPnj1DsVjEt771LZTLZTx69AixWAyFQgFDQ0OYnp5GNBplE7irV6/uGGxarRazWeg9mRdjM5+0+1rQghoMBnnk0uyNRPeXWQmfdjMk5Eyjt+R5ZD4WGQJSA63fMiBwggIniTP0ohcNsDvMAebp06eoVqt47bXX0Gq1sLKywgKutVoN586dQ7lcZutdm83G9dZMJoNoNLqvz8B87PX1daytreGNN96AIAh4/vw5NyVUVcX58+e55tputwEAV65cYRUlj8fTVxdX13Vks1kuh+i6zg8mBSXgKwoQPdTUqDFTUwjUrKPSAT3QVIceGxuDoihIpVLQdR3nzp3jgEbZ48bGBsbGxqCq6rYgSFxK8zUzT5PR96lhKAgCcrkcs0nMAiOVSgWGYeBnP/sZbt26hW9961swDIMbgjabjWvaLpeLPd7pnARB6KBCtVot2O12VCoV7rZT09LMr6brR58fZbZmPrNZLapYLPLWNxqNchOGPkNzsKXJOfP1JPpWOp3mMWTaztP7oIYdAExNTUFVVeTzeZ5vp14B/Q59xrSQ0aJGCQDt9vbCiVAppa3BUW+ZzgrMxP5z584hk8l0dBQNw0AoFGJRBLObYyQS6XBA3G95wXzssbExzihpG95qtdjdEgDf/CT8QPSYXuLCO4G2XPl8nscnSfWGOLaxWAxjY2MIBAIIhUK4c+cOlpeX8fbbb2NtbQ2ZTAaKosDv9+Ptt9/Gxx9/jFAohLm5OaRSKS530BQPAFaYstlsbIYGbAXFH//4x/jGN76BSqWCjz/+GDdv3kShUGA6XblcxmuvvdZhwfvpp5/yFpvEMSYmJvD48WPYbDa8/fbbTH0yS9eRC+V/+2//jWlPva4dCXQAX+1Uuj14zGUbqlNKkrTr9W+325icnOxYOMxcU1oQyKc+kUjgH//xH1Gv1/HWW2/h+fPnyGazALZm89955x384he/wK1bt5jOl8/n0Wq18P3vfx+apkGWZV4AukHC5j/96U/xve99D3Nzc7DZbLh//z538hOJBJcp4vE4Pv30Ux61vXbtGuLxOGvcnkgCfC9omobNzc2+u2cD7Aza1pLIAW1/dtIjpAfJ4XAgHA4fioJCr1sqlbhhQQG0u0xgFumw2WwIh8P7GnfMZDLw+/38GrqucyOIzsNM6KcMh+p9giAwQ4Gk3ij7ot+haa9CocClD+L4mhd5w9gaeazVakgmk1AUhTM9c9ZLtCu3283vn4IVcZiBr/id1I02Z1iCIKBcLiOfz+PixYvsfW7O9Ihe5nK5uDNtGAbfB+baYjcNiM6l2x2zF/b6rCgLrtfrXGMlLimVm+g9uVwu/nzMOwTiYO+VVFGgJmpf99gwbc3pejYaDa6j2mw2yLKMarXKC+1eOBGBk4iqpK4ywOFh7mDvVF+jLGM/orn7Of6LPHY2mz3wkMF+YBgGZ4hUXxwaGsLo6GiH4o4gCHu6XJqnf4Cvto07Ud8ajca2koD5dXrZe1B29jd/8zf4wQ9+gCtXrsDj8bDkGvmp06AFBYxmswlgS2HIbrejUCiwrsJhIMsyUqnUNoti8/ug60cLhvlatFotBIPBvi2baSEgGxfzuK051FHApgWNShT91jlPRODMZrNcjxlggH5AD99xHIcyIMqYzEwHOgd66C0WC1ZXV3Hp0iU0m000m03Ods0ZIT3I5m0z0Wbcbjc/vPvlE9M5m61VXC4XFhYWIMsyB0JBEBCJRFCv11EoFGCxWBCNRnnck9gIhy2f0XsURZEHL6irT4sG0LmwUG3V4/FscwXo53iKoqBWq7EASvfiZE4q6O9Op5ObUKcicFJRfXR09NSLSwxw9mBu9FAn9yc/+QnefvttVqSiLSuVIgzDQCQSwcbGBteXaVKHanKH9dQiqlOpVOLM3MzJNW/VaWdAX4Ig8CDEYXch5vIG1WapoUdBNBaLoV6vs8UJaWM2m01UKhUkk8m+kirDMFjgJhQKMcmebFOazSYCgQCPoFosW9q24XAYXq+X6Xb97HxfenOIuoqD2uYApxF031Lt0Ol04s///M/h9/vh8XhQLpexsrICTdMwOjrKW2W3243V1VX2TI/H4+wDTrKLh3kmiGNJNCrKls01YToGTaL5/f4O5aTd0J1v7USfKxQKPDFGpQ7yDSP+pM/nQz6fR6VSgcWypf5OtXHi9O4UOGnQgdTdq9UqxsbG4HK5sLq6yirzlMm7XC5IkoTl5WV4PB7UajVYrVbEYjFuOPZ1fV92ximKItrtdt81jAEGOOnQNA3FYpGVkGg6qJuEbe50N5tNKIoCi8WCWCx2ZHPiLwqqqmJpaQn1eh1XrlyBxWLpKGFQcP7444/hdDrx+uuvc4A2qxZRkDY3qYivSzS6UCjUMzDTdNrz588hSRLi8Tj+9m//Fu+88w4uXLjAAh69pPQoIyc+tKIosNvtO+oldOOlB85MJnMg7+gBBjjJoMdKURRUq1XW5ySBEXOm5/P5mJrVT7bXz7EzmcyhBzEMw+CtbXd9t9lssniyz+djXidNlJkHHsy8WgpS3dNk3dNs1O3uhXa7jWw2y4MJZhI8ZfS6rkOSJFSrVdTr9Q4CvPnae73eDpHlU0GAJ9L0foypBhjgNEDTNOYiEnfWLKRhri1StgmAid6HeR40TUMqlWKxYMqwiPhPIO6sObh1Z2RLS0sIhUIdUz0UGDc2NuBwONilstt+whwUe52D+T2au+vmP7vP0fzvbDaL8fFxbGxswDAMjI2NQdM09lpyOBxwu9183c2B0Zzd0iQT1TdPfMZJmoEjIyODwDnAKwPK+Hw+H3w+Hx4+fMiZWiwWw+TkJP7whz8gEomwDODFixc54B3W90jTNKTTaTx9+hROpxOiKKJSqeC1117jLXI4HEYmk2EierVa5YmofD6PYDCIRCKBRqOxIyXp2bNncLvdWFhYQDKZxMjICJ4+fQq/34833ngDH330EZxOJ2ZnZ7G6ugpFUeDz+ZBOp9kXaW5ujq2Cr1y5AlmWkc/n8fWvfx0bGxtIpVL4xje+gbt378Jut2N4eBhPnjxhY7ZIJIKlpSXIsoynT5/i3XffxaVLl+B0OvH48WNmNpDUInXqP//8c1aAn5mZYefNfD6PiYmJPa/xSw2c9GEdlis2wADHAdp2C4LAnvXdfNlWq4X19XX827/9G/70T/8Uo6OjqNfrHZ1tv9/PQhlE/rdYLGzLu1tHncj25AFvFtw2DAO1Wg1ra2sIBAJMqNd1nccPFUWB2+1mJaparQaXywVRFNnAjahAwNZUzl5z+jSjHw6H+dyi0SgkSUIqlcKFCxcAgO2a6ctut7O1DV0fi8XCo6ukkBQMBpmZQItNOBzmpAv4KgmjbD0UCvF1FwSBs0gyMCwWizAMgwNpq9XaV1f9pQVOWpWj0WhfPsYDDLATXgSnsxfvr1ar4enTp1BVFefOnePxQsMwOia0VFVFo9FAPB5HtVrlaaRe20Xz73cL6fY6B8MwsLy8jEwmg0gkgnA43DGyWq1W8fjxY8zNze0omLMTGbwbNJvejz4lKcwfxn1gP6Ax7cnJyW3f7+Zxdjtv0s+Z75tTw+Mc1DcHOCrU63Vsbm7uOSLYLyj7Ic1S86QPzY6bOZHAVzW5tbW1nk0GM9m9W2m+F39ZFEUMDQ11jKaaydzm7nQvgji5RbbbbYiiiGaz2SErZw7I9EUUJq/XywHc4XD0NZ1FI5THCVqozNhpcsjs0WRemGhyyOPxwOfz9d0gemk8zuNcnQZ4tUHq4pRd0Mw6kZ8FYcuGgfiAhmGgUCjwjL6maWznYbPZEIlEIIoigsFgx1x3u93Gxx9/jJGREd5+mrfqtVoNhrFlNqhpGgtJk6iKIAhs/UznR9YqxGGk4Op0OnmW2syvBICNjQ08f/4c169f5y21Of+hemq9XufOuMvlgsvlYg0BXdfh9/vZVYACayAQQLvdRj6fRyKR6Hukla77y4RhGKz8RcLFoVCIVcDoWpMSFC0sTqcThrFlW37iZ9UrlQpPKAwwwGFAvjq/+c1v4Pf7MTU1hY8//hiJRILnzN966y08ffqUlfMfP36MSqUCv9+PXC7HijjULCC7BTOIN2ieUSeoqoof//jHeOeddxAIBPD8+XMsLy/j+vXrGBoawsLCAmZmZrC2toZarQa32w1RFDExMYGLFy/i/v37rK05NDSEycnJbSLRBOoI77StXFtbw7179/DBBx9wgP/DH/6Aer2ORCLBE05zc3MolUpIp9M8Xnn58mXYbDZIkgRJkjA8PHxEn9KLgWFsOVRSUFxbW8P4+DhsNhsePHiAfD7PAwbBYJAXpXv37rHLwtzcHAuvpFKpk6uOZBgGz9EOss4B9oKu61heXoYoipienmbzu3a7jUePHiGXy+HrX/86wuFwB40F+Kp+R9kfgD2zKFmW+1LkMYO2u6lUips7Zg1NGq2k7bAZ3dNzgiCwBclBREzoXCRJQqVSgd1uZ0uSXt5KZruLZrPJI4qJROKFC0UfFBS2VFXFwsICyuUyxsfH8f/9f/8f3njjDVy9ehVut5vfs1m8gz4b4pK2Wi00Go196XG+tMA5qG+eXtCW6KBmePsBCT5sbm6i3W5zAZ+aMeVyGYZhbFNQN0+GkHSemUtI3L5u6xFgK5DEYrG+/LW7QapN5hqiWWm/u8ZJ59BtQqfrOsbHxw+t30BZMolsEAnfrIZOo6Jer5dHRY9iDJpm5Y+C0O/3+2GxWJhAT4R26phTkGw0GgiFQkyAJwV4sw7pqVWAVxQF5XL5UP7RA7w8GMaWf/txfH4kxksPMtGAdpqNVhQFpVIJqqpu8zynLMts9UwBzWKxdEzvHAYUrMhgjvyRKPMhGpNZXIMI8KFQ6EjENWjhKBaLXF7oFvmga2E+D2rwkMf6Yc6DAlc/NcPdIMsyNjc32euKmnO0qJTLZQBb144W9UajwSrw5kkm846EPn9qpO3Hc+il5OFUIB/g9MJms2FlZQXr6+u4cuUKisUi8vk8CwrPzMwgl8vhwoUL0DQNd+7cgcViwblz55BKpVAul3miZnJyEp988gneeOMN7h5nMhk4nU4WxlhbW0Or1cLVq1d7bh+JJjQ+Po6RkREYhoH5+Xlomga/389NkfPnz2NlZQUWiwWSJCEcDmNqagqGYSCXy8EwjANlmmaQMDfVB+k8wuEwuzZSuYoyvgsXLsDhcPA1PGztn8wPk8kknE4nHj16xHxOq9WKXC6Hq1ev8nZeVVW43W5MT0+z9QYR9g97Hk+fPkUmk4HFYsHbb7+N+fl5lrXLZDIAtrJTr9eLoaEhNBoNlMtlrgWT66Xdbmeh4kajwcegAYNarYbZ2Vm26nj27BkqlQoT7yVJwsjICNxuN+bn59lO5vz580gkEhBFEel0ui+Xy2MPnFTMHWSbpx9+vx9jY2PcoSVTMJfLxV7hoihC13Ukk0kIwpbCejKZZPV2Wt1v3rwJt9vN+pXBYBBOp5O3Tzdv3tz1XCKRSIcFMvHyVFVFMBiEoiisREQyZm63mzNY6irvlm1QDVAQhI7MtJsEf+/ePVQqFUSjUbhcLj4Pv98Pl8sFj8cDwzC4JhsIBOB0Opl2tFtdk/iL1ByiepyZ50mWuV988QW+/e1vw263IxQKodVqccJCMm/UySfSuN1u5+xzN+8pOo5hGB0dfzPntVqtwmazIRAIsAo8LZh+v587/lT/Nb8fu92OaDTK9C9iGPTC1772NbRaLTx58oRFmt1uN4LBIOr1Onw+H1wuF3fMDcNAMpkEALZxoVpnvzXdY9+qv0o2wGcVhrFlkEXZiJkbR9Mh3Vmb+cHqtc3e6V6grV53h7v79wmaprHMGNW/upsD9NCTXYRhGCzpZm7cdBOmJUnCo0ePoGkaZmZmOvzDga94nqurq4jFYggEAmg0GnweZkUg4KvtItU+7Xb7NsGb7nMAgKWlJWxsbCCZTCKRSGxzOrVarcjn85BlGRcvXmTrDPO16NbjpGtB5xEKhXbVwFRVFY8fP0atVsPMzAwEQeioIz5+/BilUgnvvPNOx2Sg+bPuJuHvBNot9OM0Sp9TrVZj361uDVLztafPjwYQ+i2THHvgJFUVivgDnD7QrqHbv71Wq+FXv/oVYrEYvve97x3Z8bxe765ZWKPRQDqd7gg41AgyBzdzc4iCXC/9Scq2SG3H7ElPqjpUO+smwZMJnDkwUb1xJwuR7okiYKtWS2UKs1QbBTo6B6fTyT2D3aZeep0DnQf5FfU6j27UajUEAgG+HtStJzK+eYHSdR31eh3A1oJGFjkUoHuBFhmXywWv18sLGY1K9gNqyJGXO6kxmTVIzcMMXq8XPp+vI3PeC8ceOMnLZFDjPF0wT5iY7Q5odbdYLGx/sp/u5FGANF1pBpucPSkLAgCHw8HGcLqu8zieOSsxZ4/FYpF1MSmgqKqKTz/9FMlkkvmRZrRaLRQKBcTjcQ5ApMlJFslExKYsCgAT8el8KQDTNtYcoImqtLy8jGvXrjEflBpQdB3ovXU3gRwOBzeviBpFSuwURClLpkEC0toUBAHFYhHj4+MAgDt37sDtdmN2dnbHkU26lqqqskKU2+3m90nTSUSJIqUiGl7QdR1DQ0N9B01d17G5ucnnT9eergUNFtDWnLbn1ExKJpN9NYeONXCaeW4v2mRrgKOFpml4+vQpyuUyLl68yNsyn8+HQCDwUlX8iQD/y1/+En6/HxcuXMAnn3yCRCKBXC6HUCiE999/H/Pz85iZmYGqqnjw4AF37D0eD6LRKLLZLFRVxbe//W0Ui8WeBPhqtcpTON3/93d/93e4ceMGhoaGcO/ePXi9XuTzeZw7dw5vvfUWHjx4gKtXr6JUKmF+fp4neSig2Ww2rK2t4caNG4hGoztO4iiKAlmWEQgE8NFHH8EwDHz729/Gv//7v8PhcODKlStYXl5GNpuFzWaD3+/Hm2++iVarhaGhITx58gQPHjzAzZs3USwWkclkUK1WEQqFcP36daRSKdTrdbz33nuYn59Hq9VCKpXCrVu3OrzKq9Uqjyv2wt27d1Eul/H973+f/eY//PBDKIqCZDKJZrOJdruNK1euIJVKoVarQVVVxGIxzM7OMt0MwI5C57qusz0J1dabzSbi8ThKpRLu3bsHWZYxMzODQqGAK1eu4Pnz50xRSiQS3HDMZrNcq98Lxxo4B/XN0wkSTsjlclBVlYV392Oi9SLPTZIk3l5TAKftMmVR9G/6MmfQAHi7SnYO5Ae/H1DGSY0qcxZHXjrEI6T/M1sD07Uk3mo/dtk0i05cTMqkPB7PNq9zcyblcDjQbDY7hEnoutGugTJGytLJT54yzr1Ar0mUKCq5UHkC+GpenK4fXZ9Wq8X+7kNDQz0TLcqqHzx4gHK5jCtXruCzzz5DJpPBD3/4Q+Zm0o6Cri018YgjrCgKJEk6eRknnag5yg9wskE3JWVzdrsdwWCww4HxuKDrOkqlElus0HZTURQ8ePAAi4uLuHXr1q5d4P2g3W4jGo0eiBKUzWY7tuGHOYdz5871da1FUUQ+nz+WKTxN0/atF0p12XK5jHK53OEO2g0qtfj9/m2iwhRHaLbePFBAfkLNZpMFlWlslFgI3TVOmqg6sTVOSZLw7NkzlMtlvPnmm4fmyQ3wYkAZWL1eZ8EKv9/PROiXkV3SQ7ewsIBisYiRkRFuAhGNxWazvZBm40He71E/Tv2cw8uQmzjItUmn01yvJdC5d7MHcrkckskkTwlRJkoNMbNvETEoqHxCiz1l8+YGHMHMaDixXXUquKfT6YEN8AsGBZr9gjqztBUPBAL7WoEPcw5mAzMArCzUaDT4obHZbPB6vXC73fzgvewywQD9gT7XTCYDq9WKSqWCUCiEarWK4eFhzM/PA9iaVqpWq4hEImg0GohEIh3d+p1w//59VlsbGRlBMBhEMBhEKpWCxWKBKIqIRCKo1Wrw+/0IBAJYXFyEw+Fg9kIoFOoQkt4Lx0KAp67Wy8pazhIqlQorWe8HkiSxJFovcQtzPXCvz9EwDCwtLfW1dW42m/D7/ex7Tas/yamRovfgvjlZMC+O3Y1BMxmfxhp/97vfwe/3Y2Jigr3j7XY76vU6Mw3MTAAipgNfiZDshKtXr6LRaODevXuIx+Ocieq6jmKxyB160jQgapcgCOyiSVv3ZrPZ1/s/tuYQcbgOO8I1wO4oFotwOBzc4AgGg8wFpC2LuVlA/2cYBtxuNxRF2fEzun37NgRBYKvXXmi326jX66jX64jFYuwtQ8cXRZH9xok+VK1WEY/HuSkBDLLJkw5FUfDw4UPU63XcuHGDGzrdostE/F9eXobb7WbJN3PzrBfMUn/9wBysS6VSx6w6NcDM9yzxe833v9fr5SC6F44tcGazWeb5DfDiQH7eH374IdxuNyYmJpBKpZDL5djKlWbCRVFELpdjm4H33nsP9Xp9x6YIqf7sls3m83n89re/xQ9/+EPkcjnkcjm8++67KJVKiMViWF1dhdfrha7rWFpawltvvQWbzYZoNNoh+zXA4aGqKtbX1/ctDUeLaCwW4yzQbA1MwZE4qjQsQF/EN221Wkin03x8WZYhSVJfn6/D4UAgEACwFeQikQj/u5/zJ81RsmXuZQ9sVkeicdwT1RwyBjJyx4ZiscjbHJoUIdVz83gdUWNoFSZSdL1e39Grph/Qg5bJZDA8PMz0GPK6NpPTDcOAKIooFAr8/2apNSJ/W61WLC8vo9Vq4cKFCwMN1z5BdetEItGRkXVvq4kgT5+JYRh48uQJqxpRkDErDVksFiwsLMDhcOD8+fPbsjQS41AUBeFwmO89+vy77YDpXMx/p38TI6fXfamqKpaXlyHLMs6fPw+r1YpCocAUJLIAoXIC0Z/o2aCsk/i0tPPZC8dS49xLPGGAo4PT6eQbxwyyXd3N+vQoHEdpNdd1Hel0es+f1zSNFWuAzrpYs9lkUnS9XmdOII35dY870sMmy/KBzt1cKjgKGP8hyNFvo4xKF3u9piiKPPpozsLMwVEURZTLZdjtdvzyl7+EqqqYmZnB/fv3uUTj9/sRj8cRiUQwPz/PgW1kZKTjPDRNgyzL264rCbqkUqlt53nv3j2Uy2V885vfxP379zE/Pw+3240/+7M/w0cffQSfz4fh4WEsLCzAbrej0WggFothenoaoiiiVCrx8a5fv45ardaz/khDCaIo4mc/+xl+9KMf4caNG7Barbh//z4T6P1+Pyvu+/1+3Llzhx0zR0dHcePGjZOnAE8jcfslFA9wNDAMA7/97W/RbrfxwQcfvOzT2TfoFjVb8NJoHjUNKCs1DAPj4+P7prwpigK73b5rtk0Bnagve+2eNE3D8vJyX4sRlUjICpdA2ZlZpT2dTkMURQQCAfj9fuYnmpt3GxsbePbsGb71rW8hFApBEATIsrxtnpyyTRoKoIyQqF8HBQVaw9iy4CXKEImIUDOQdhS0uJiHAei8gK0gTQpb3aBrRPoJ9XqdG470Huk9k4gxcTvp/dIgAX0Ge+FYAmcmk9mm+jLA8cEwDKytrWF0dPTEWiEcFHT7qqqK58+fo1Kp4PLly2xCRt7c9ACSnzjN2RObIJlMQlXVXe0yRFFkLcndGmTAVuBIpVKsqE4ZVa1Wg9PpRDqdRjKZRDabhSAIiMfjqFQqLDlHW2jzw05f9J6JmtXd1absu91u4+nTp/s2UaMR0G7r3b1AtVACia8c1sSN1J9oBt9iscDj8cDr9cLpdOLBgwew2Wy4du0aM3h6qd2bQ515qutEulxS7Wzgnf7yIIoij5+9aqCb3G63Y2ZmBtVqFYqi4O7duwiFQggGg1hZWYHb7Uaj0UA0GkU0GoWu66hWq+z02Gq1OCPbCbqu4+LFi7BYLKz6sxMqlQru37+Pt956C4VCAblcDtevX0ej0YAsy1hbW+OMjEYeSUfUrNBuDpr090wmg7W1Ndy8eXPP7Mg8W94vqA6+189QkKTgnc/nmWZEOAoWDemGEjRNQ6VSgcvlQrlc5sUuk8ng448/xptvvskantTM7EWZoqkjWmSJWN8PXnjGSVajZGA1wPGCGnOjo6OvZODsRrVaRbvdRiAQ4Kyre9HuVnkCvjJoO6pxYHowNzY2MDw8zOdit9u3HRvY2orabDbeqpsfbLPpG23ZzR7t3XP3giBgeXkZT548wQ9+8ANWwHe73SxSYp6ZpwBEmV00GkWj0diVCN5qtfDw4UPIsow33niDFZBGRkZ4kIJeh7bkFJQEYcuuuV6vo1wu83uu1+u8SIRCIaytrcHhcCAej6NQKADYSgJisRja7TbPzJt3Hb/+9a8xNjaGCxcuoFarweFwQBRF9iMKBoPweDzIZrMAtuJTOByG2+3mmnA/zdEXnnE2Go0j8XEZ4GBoNBpwuVxnpjlHmWWpVNrX79VqNQDg0buDTk0RKFt0u919nYthbKmhm7mN+13ozDlQOBzGxYsXoes6Pv30U9hsNoyPj+PJkye8nfV6vYhGo2yrC4DlAUm9fadzMAwDIyMjLENHdsx+v5+VoUqlEkqlEgqFAm+v5+bmuN64sLCAdDqNy5cvI5/Po1aroVQqIRAI4PLly6hUKlyyWFxchN/vRyaTgSAIHU0xul42mw0zMzPsVFkoFFAoFFhNPplMwmq1QhRFLC4u8iTa2NgYe7BTgN4LLzTjNIwt75hoNDrYqr8EGP8h45dMJgcUnj3QPaev6zo8Hk9HEO1+VE56MqAoCgqFAmfRtB3thrkJQ/9eXFxkH3IAPFljpiR98skn8Pv9uHHjBgRBYFk2GsDo3rbT9+g6UnbZarW2KW3RwARNAJnPzzAMLC8v48KFCxAEgXnI1HwuFAq80yBK226z6s1mk8uJ3cIiO+GFB84Bf/Plodlsspvo4Pr3j15B1Ov1wuVy4d69exgeHsb09PSJv6aapvGWdL/weDzsz0OvZXaFJC9yms6x2WxMITMHKjNvlDQIzIrsZj6n2aqY6Ga90G63uakWjUbZgvjy5ctwOp1cgqjX66hWq5AkCYqidNgD03F8Ph9v3/cz2vtCAydZpA4e3OOHYRgdlqoDHAwUREnpvl6vIxwOIxwOH3o7f9phpomZxxfNHki///3v4fF4mIXgcDiYr9rLppioZjTp4/P52NSu+9iqqmJtbY3N+ADg97//PSRJwne+8x04HA7m/BLxnVgJxAAgeToy9aNyyV54oYGzXC5zzWSA4wWtyv2I4Q7QH6hhU6/X2b3T6/UiEAgcu13ISQeFlXw+j1KpxPXWO3fusGUzBdyLFy9ifX2dGQc+nw/Xrl2D0+lEPp/n+mOvY6RSKaysrMDpdOK1116DKIqQJAmjo6OoVCqYn59njQxN03Dp0iU8f/6cp+SCwSCuXbsGm82Gzc1NhMPhvsRpXljgNAyDuWqvGnfwpMP4Dz1D4hAOcPToFUR9Pt824vVZh6ZpSKVSLBZMykgul4uJ7j6fjwMZAAQCAVZOImPHncYgydYjFovB5/PxgADZS5PbJdm7OBwOyLLMk2h+vx92u513FP1ynV9o4BzUN18ONE1DOp0eWJS8YFDwpD9JVEKSJDx9+hQ//OEPjzRp6DerNZ/XYWG2tjgoaIEhixPz7LgZ5vO2Wq3wer3w+/27ktLpd0jchvygaAtOwXknHicdixa9ft/rC0sFB6T3lwPDMFAul3nMboAXi+Xl5Y6sntwmyZ/nqNTAZFnG0NAQTxYRej3oNOp5WCdZ6ooPDQ1t+z8KPNRQ2e1eEwSBRWdoe27urpt/jqZ5nE5nh4fUbq9ttVqZeynLMn7729/i2bNn+M//+T8D2N7NNx+ru8bab4PohWWcpVIJdrt9m1PgAC8WRLoeZPovHmQ+GA6H0Wg04PP5WBCDGh8+n49noEmQwvgP7UdqhJBOqtVqZfm9drvNE0pkn0tTQMvLy0ilUpicnNxmnEZ+4oqisBYrkbypceN0OtFsNnlGnIKHzWZjIQ1FUeD3+3lGvBvtdpsJ8Ldu3dpxgahUKqzCHgwGWZmLjmMYBnfGiZpEQtbVahVOp7NDcnA3UNIgiiLXUF0uFxv10XtyOp2oVqv8PqlZRQrxveqp3XghGadhGHtOHgzwYkAf/iBoHh8+//xzbGxs4MaNG9jY2EC5XEalUkEwGMTrr7/OAhetVgsffvghXC4XxsbGkMlkkM/nAWyNFb722mv47LPP8Nprr0GSJGiahlKpxDSbbDbL89pUhtnc3Ow4l0wmg48++gg/+tGPsLi4iMePH0MQBHzwwQd4+PAhHA4Hpqam8PjxY1ZeDwQCiMfj8Hq9WFtbYwGVW7duoVqt9lR30nUdwWCQFYZ6QVVV/PjHP8Z7772H119/HU6nE19++SWy2SwsFgsuXboEl8sFWZZx7949hEIhyLKMSCTCnvFra2u76gd0w1ynfPjwIQqFAmw2G8vFybIMr9eLzz//HH6/H4uLi3jjjTdw5coVuN1upNPpvgLnC8k4BzbALwdUVx4bGzszk0IvE3Sfj46OsoQcUV/osVIUhSd1DMPgccd2u806qfRa9D2qvdFnKAgCZ2TBYBCbm5tYWVnB3NzcNsYK0XRyuRxvsUkvgmbKqRbYDTI3M7/O06dPEY1GWSOVFNWtVivu3bsHt9uNq1ev9rzfiMpFfFLasrtcLs6wKT7QzxHXk2qUsVisb2dVw9hyPs3n8yzm4nK5+H13E+CJm9psNlnCLh6P90XfeyGBk3QUBzbAxwtRFKEoSt9bmwEOB8MwsLGxcSzHojl3QRA6BIJdLldHQKOgvb6+3hEoiLxutrYgcjp5nZtfg94fGfd1k981TUO5XIbT6UQwGNymAN8rkKqqilqthlqtxspFZgI82fX6/X5+zYPcxxSEqVNOpn/dCvBURw0EAuz5/lIJ8IVCAW63+9DF6QH6Bz3Ew8PDA/rXKw5zJmcOZmbv8JWVFRQKBbz11lucSVLTyjx+SE0eIq+TaRqJJO/WzQZ2J78LgoAHDx7A5XLhypUr3Gwyn0d3xklKRdR9D4VCrOLeD6i8QXVmWgxo0TFPMZmvn6Zp8Hg8iEQife3WjvwJoy3LYZXEB9gfms3mnjaqA7waMHeEyR6CYNbqXFhYYIvdR48edWz9FUXBpUuXUCwWUS6XuaQwMzMDl8uFUqmEYrG4oyycWYiEsrfuczBv0+PxOCwWC9dcaYa82WxiamoKqVQKzWaTm2FXr16FzWZDLpeDrus7+g11532pVAqRSASxWAzPnj3rmPaSJIm9ix4/fgyPxwNFUXD+/HnEYjGIosg0vr3wQgJnL9msAV4cDGPL2S8ejw+26Gcc9PlHo1FMTEywsr3f7+euMmWJZvI5jTa63W7Owg66YzSry4+OjgL4qntNxyOpO6q1Uq2Wsj4KqqTSvhM0TcOTJ08gSRKuXr2K9fV1aJrGc+iSJPE0EDlYWq1WxGIxWCwWJJNJRCIRrnX2u1s78q16o9E4tOHXAPuDoigoFosDzdMBOkBizfV6nZMZ2pWYt+pmWw5Sfw+FQuxpf1CYBUIqlUqHcLO5OUQ8SvN5GIYBp9OJcDjMYh9mhSra0suyjGw2y/XYX//613jnnXcQCoWgquq290yvYW4OUSmDap0vhceZz+fh9XoHo37HBJLuo0bBAAN0o1vhiFSCgE5VIqo5HtXiq+s6lpeXOwZhzLVM83lQ15sCarfIdCAQ4GAHoENFidSYzMegsUqSjKNjUXOIMk+n0wmXy8XqV/2+/yPdqlN9cz+8qwEOB7oJBwpIA+wEs9DvcTYOKWtMJBKsBSoIAtrtNtfi7XY7qtUqHA4H07WazSbTpqjbbrfbWRu1Gw8ePAAAXLhwgbv91CVPJpM8ZEBW2VarFbIsc1PLZrOhXq8jn8+zsPNeONKruJ+RpQEOD6ptRiKRwTUf4ETBvJH98MMPsba2hq9//etYWVlBLpeDJEkIBAJ477338NlnnyEcDiMWiyEej+Px48fQNA2Li4sIh8N49913IYrijj5PDocD9Xod//N//k/86Ec/ws2bN2GxWPD555+jWCyybmehUMDU1BT8fj8+/fRThMNhVKtVXL9+HRMTE9A0DRsbG30FziPdqtOo1yDjPB6Q8sxgvHKA40a73UYqlYKqqpiYmIDdbmdaU7vdRjqdxocffohvfvObOHfuHE8TEpmdxDeoaUSCHLRzMm/VK5UKfD7frqUoKgFQvd/tdrMYsrm+Sdt0Op6ZdE+xq5+m2JEGzmw2i2AwOKi1HQNoLpemSQYYgGAYBmq12pGoI9H0jbkp02630Wg0sLy8jHa7zdxhqlHStpsk5LprnETC71XjtNvt22wuWq0WJiYm+hINovMkahOZ8Jltgs22wC6Xiznn+2mGHdlWncadBrW24wGpkvfDORvgbEFVVZRKpUPv/Gi7HAqFOEOkgEMz706nk4V8uoMOcblVVeWuOgmfdDeBzE0jmihyOBwIh8P7VllrtVqoVqssGEK10e6uOh2rXq9DVVXu4B9rc0jTtAH5+hhBXumDLfrJh5kQTl8AOiTTjvJzNAwDDoeDJe8ajQYajQbOnTsHTdPgdrshSRJKpRKazSYCgQAqlQqPHzqdToiiiJGRESbY99Kz/Pzzz+Hz+TA7O9uTt72xsYFWq4VAIIBEIoFQKITl5WX2r9c0jc+rUqmwt73H48H4+Dg0TUMul0MkEumbU6ooCnK5HBKJBNrtNjKZDFqtFiKRCNrtNuLxOLLZLGuE+nw+jI2NQVVVbG5uYmhoqK/k78gCpyzLfQ/jD3AwqKrKBfJKpTIQUTnBIIYJ6QcQj9LcPDWLDdtsNlZJP4oGq2EYnOUpigKXy8XZlcVi4ZHERCLBiuuyLEOWZRb1oK0rZYPd+NrXvsbvo5eCEr0eWYtYLBauQ0YiEbhcLgSDQeZzktSdWUWfXC53AgmtSJKEc+fOsTLV0NAQd+Ypg202m9B1nS2Nibtps9l4C99veePIapzEJRxs1V8cZFnGwsICRFHEhQsXBoT3Ewpd17G5uQmbzQafz8fjsGatSUEQIEkScwwDgQA0TYMoin1nPb1As9qiKG7T0dzvVJ+maajVaocqB5EyU7lcZstfohf12qpTc4koSzTN1J3tknqTLMvY2NhgeTyiJr3xxhu83afjdW/VzfP5NpuNx1OPjQBPaiyD7u6LBWUo6XR6IObxEtBLsbzXz1QqFRQKBUxPT6PdbuOPf/wjms0mbz/j8TgURcHi4iJcLhcCgQAuX74Mh8OBSqUCXdd3rE8a/+EnVa1WEY1GeVxQlmU0Gg0Ui0X80z/9E/7Lf/kvhxYRNwwDHo/nUMMshrFlqNYtTKKqKk8IAV8puVNzicj4qqpieHgY7Xab3S9pXJQEQ4gEby4VUgNLkqQd1ZEcDgc8Hg98Ph+8Xu++XEv7Dpy1Wg2qqvb8P03TUCwWe8rI2Wy2gbDuEWLglf7yIMsyFhcXYRgGZmZmuENMs93Uuf3Xf/1XxGIx3Lx5E06nE263uyMYUJZFDQqzJqTD4WBBjG5QprS2tsaUGzIbc7vdcLvdsNvtHWWBlw1zUkWBiyx6zfVd0guloEiBNp1Os6UwSeiZzfAMw8D8/DwMw8ClS5egqiry+TwHYJ/Px8ckdSaLxcLXnT43+uxI8Hgv9B04l5aWdtXXNF8IM3K5HM6dO3ciPsTTDsMYeKUTzaXVah3rcYk+Q+6IHo+Ht52kQ0kTKI1GgwMfzVNTpmTWwaQgSv7fZOEAgCXVFEVhjiE1YCkYu1yuPQNk92w3BYjukUt6H+Yt7VGAAme1WsXnn3+O2dlZViGSJAnBYBCzs7Oo1+uYnJzE3bt3YbVaUa1W4Xa7MTc3xwpMOyGfz6Ner+Ojjz7CD37wA1y/fh1WqxX3799nSlQikeAxy3A4zAR4Xddx7do1hMNhqKqKVCqFqampPd9X34FzbW2NfY5jsRjW19fh9XpZjsput2NsbAxffvklotEoMpkM23oOmhhHg1arhXw+j5GRkTN7PQ3DwOrqak8DsReJjY0NjI6Oolwuw+PxIBgMbqu7AcD6+vqRqFStrq7C6/VygHQ6nRw8Go0GRFFkFaFu0Lm0220Ui0Wu4fUihJtpQJQ5G4bBYsJHIfJB14QCN8ULagaZRyE1TeOM0Gq1siD6XowdXdfRaDS4Tmx2rCQ/Jerk22w2Hrmk60rXNBgM9sWL3leRjAil5KFSrVbhcrnQaDQQiUSYSqBpGqLR6MDl8ggxGK/8ChaLBfPz88jlcohGozh37hw+/fRTjI6Owu/3I5VKYWhoCBsbG1AUhU27rl+/jtXVVSwuLuIb3/gGHj9+DKfTienpaaRSKei6jsuXLyOXy6FQKCAUCkGSJN4GVyoVfPHFF0gmk5iYmOg4J03T8O///u+4cOECVFVFNptFNpvFuXPnEI/HsbS0hOHhYVbyoU5vJBLB5OQkHj58iHg8zp7g0WiUt930zBEymQw2NjYwMzPTk6aTzWbx/PlzXL16FePj43A4HPjiiy+g6zpbewBAIpGAKIool8ss5HvhwgXY7XaUSiUUCoUdVc52qvdSRq0oCkqlEv76r/8a77333p4NqZ12EMT93Ov3LRYLAoEAizBLksSZvlngozvbp4Dq8XgwOjrad+NsX1t1uojdM+nmAm838vn8YKt+BCCe2VnP3mnr53Q6USwWmb5SKBRQq9UwPT3NlJtarca/Q1JpzWYTjUYDwWAQjUYDqVQKMzMzLKlGTpW0rW42mwgGgyyVuNO113UdT548gdfrRSQSQaVSYcM2p9OJVqvFnEriUsqyzI0JSZKYEkQjiOFw+EDc6Fqthnw+D5/Ph1AoBL/fj0wmg3a7DY/HA0EQuLxAZHFgSxMzEAig1WqhWCzC6/XuaFzWarXw+PFjNJtNXL9+HcBWJkzulVROIHrTQUFxpt97nurARMUi+lG3LQZl2hTLaBfRb5mi78ApiuKOzaFarcYTAd0gSsZZftgPC8MwUCwWO6Y0zioMw8Dy8nJfToT082YTsoOiVCphenp6z/t4ZWXlSJqhpVIJ586dO9RQia7rqNVqkCSJA0i3ZQWwXW6OfIS6qTnmeqkkSazO7vP5to0tHtfzTrQkALzt39zcRDgcZsoXNZw0TcPQ0BAqlQpv6S0WC8bHx5kyRaT/vdD33bTbA0tqzQO7jBcDEkgYiKdsYWRkBO12e8+f03Ud/+f//B+8++67mJ2dPfQx+8Hw8PCRNK6Gh4cP7aJgsVgQCoUQCAS2iVqYm0NEy6HMjAKrWTiDDOJoEfJ4PJiamuJy3G7eRObj7RdUn9zp9TVNw8OHD1GpVHD16lU8fvwYExMTrP6+tLQERVFw/fp11vMknqsgCBgeHuamGDGH+gmcR8LjpNR+4KP+YlAul7nLOkB/0DQN6XQauq6zz/ZZBQWKfpgYlUoFyWSSJ24sFgu7QZq7+LQlBrDr9tYwDCwtLR3YhkMURUxOTgJABzmeMmTihTocDlgsFty+fRtf//rXmYFAjbVes+pEJaOJolAo1Pfu+EjuJpvN1kEuHeDoYBgGRFEciHn0Cdq6pdNpxGIxrumdZVDDhJ5PVVXh8/kgiiK7SRLH0Wq1Qtd1BIPBbYIX5tFLwzDw8ccfw+/37zirrqoqisUiLBYL/H4/yuUy+5w3Gg0movt8PjaGKxQKsFqtUBQFwNb2O5PJMN2LuJlm6w3K8B0OR8dzIssyDyMoisJ1a8piyYqYppOA/jUDjiRwkmfIAEcPSZIGD3+foG5uNpvF8PBw30o3ZwHlchkrKytwOByIRCJQFAUejwfPnz+Hx+NBOp3G6Ogo3G43FEXhwLUbqOlbKBR6/r8sy/j5z3+O999/H/V6HfPz87hw4QKq1SoqlQqKxSKCwSCmpqaYjvTs2TMIgoB6vY6RkZEOSpSu6xwAiZNpsVhw9+5d2Gw2XL58mSlH1Gxzu91s0kZfZnUkRVFQrVZRKBQQCAT6pmAd2cgl8dwG7pZHB7quIyMjA+WpPUAye1TgP8tbcwI92qVSiVWOWq0WB5BeykxHKYxNx19bW+NMkGwsaHoIAJcEiCJE22lBELC5ucmTVFSj7P6TGBEPHz5EKpXCBx98gJGREZTLZTx69AjNZhNDQ0OoVquYmZnB+vo62u02arUaFEXBd77zHTgcDm4q9TNiemQZJ23XB4Hz6EAjeINrujuM/xB1lmUZY2Njg+uFr0oWv/zlL9FsNvHmm29CFMU9f+8oFxwKgE6nE5lM5sCvQ9NMe2F4eJjLNJVKBW63G1evXoWu68wvd7vduHTpEhqNBgBwqaJSqUBV1b6550emjlQoFA4tCDDAVyBxhGQy2VeX76zCMAzk83kIgoBYLHamt+b0KNfrdVQqFf4+ZVFn4doQyV0URUiSxALM5uy6Wx+VKJM+n6/vRffIlhci0w4C59GAtlSDLefOIPk2j8eDUCh0ZgKDGRQISGW90WjA6/UimUzuS+3nVQFdD6p/mrVCzdeOrou59rmfa3VkT6Xdbu9rKzDA3hiMV+4N2pKROvhZuk6rq6s8RRYKhVCpVJizedazbrovSC6ORi1pRt7n83GDSZZltNtt+P1+NBoNlEoljI6O9tVPONLAudNk0QD7A3HUzqoC0m4gYVwSkdmPwdarAr/fz8T0VquF4eHhbSOFZwXko65pGiKRCOr1Oux2O6LRKCqVCu7du4dms4nXX3+dLTXW19chSRIH1GQyiVgshs3NTTSbzeN1uaQO8FmfpT4sqGbn9XoPTBp+1UBbckVR4Pf7IcsyMw3Owr1Gtbh6vY5qtcrDEGelbtkL5o7848ePUalUMDU1hbt376JUKuGDDz7o0PAkapp5IooU55vNJgfMfnd5g8B5wjDwSt8OXdexvr6OXC6HUCiE6enpM9E5p4yoUqnwg2326DlpIGm2Fw1VVSGKIjweD2uJko+6rutMd6KFpl6v87ioWQHe6XTC5/MhGAzyInSsBHgCFWMHnMODgWwXzkqjo1+Qes3ExAQSicQrfW0ou5QkCdVqFRaLBeFw+Eg0Pl80arUaPB7PC5WTpOvTbrcxPj4OYIun2m63We29WCyy1idNB5lHLoGvhE1IHapUKsHtdiMSiRxvjZO4nCRAOsD+QdsxuiEG2Mo2M5kMXC7XqWp8HGQj12q1OLv0+/2Hrl0exWZyNxk96mmYt8Htdhu3b9+G1WrF5OQkNjc3mVNJNsFEHVtZWcHS0hKuXLmCarXKaksejwdXrlzBF198AYfDgdnZWTx+/Jh54jMzM2g2mygWiwCAJ0+eQFEUZDIZ3Lx5ExMTE4jH41hYWICqqiwjSBJ3fr8fDx8+ZCH2S5cuIRqNQpIkpNPpvp6/I9uqA19NKJx16bODgmT+SRLrrIM6pOFw+NRJE25sbOxrDJmYFHa7HTMzM7smH71oNb2QTqcP3LBttVqYmJjoyB7Nx1UUBffv30e9XsfNmzfx5Zdfwm6348qVK8hms7wdtlqt3IgRBAHRaJS31+Sl7nK5eBKoVqvB5XJ1ZK52u50tS0hjdG1trcMFoNVqYWVlhTmroVAIpVKJbUxoG+/1emG325HNZgEAXq8X0WiUm0wAtrmD9sKRBk5JkqAoykD+7AAggd5+6RCvMmgrtrm5iUQiwXa6pwn0WdLWstVqwel0smoPyZeR5zrNT9dqNeZg7oRUKoWVlRXMzc31tHmg4+VyOYyMjLC4hd1u3+Y11Gw2WWiZxD6oVEDn2EtBHdja7pIg8vz8PDweD8bGxnYd2NhPuNlNcUkUxZ7eQLRrI4k44kKbrYgBbBvXtNvtCAQCfTfcjjRwtlotlEqlY/eDeRVAUv+naTv6IkBWEeStdFpJ3Ovr65BlGffv38eVK1ewtrbGwhONRgMjIyOYnZ3F7du3MTs7iy+//BI+nw+Tk5N7WkWQI2YgEOi5yOq6jr/+67/Gu+++i2QyiU8//RQXL15kGlepVEIwGGSbjKGhIfYjL5fLcDgceOutt6BpGrtoUvCh0oEgCLh9+zY8Hg/m5uZgsVi4Q70T8vk8W2HsBcMwdt0yOxwOOJ3OnoGY9GtJkZ5k6MyBn0RC6HXI36nfBtGRBk5N07C5uYnR0dFTebO/LBAj4ax7pRuGgVqthlqtduqFTdbX15FMJjv8wyn4UNZJtg2U1QmCgHw+j2Qyeej3rigKvxZxPslRkxTRyZLXZrPBMAxu7pKfGJ2bWVSDvijrI3k2s48PfVGWZ7FY2EOeFJWsVitn4TQlp+s6fy+fz/dVa9Q0DfPz86hWq7hy5Qrsdjuq1SoPRXg8HhYRIRFmp9PJthr0WbRaLdTrdUQikb5KjS+kqz7A/tBsNvmhOqugbmi73X4lVLYEQUAmk4EgCNjY2ICqqn3ZziqKciTWEyQ6TOewXyiKgvHx8R2HMLrzLcrmqORAQYm+yOlyaWkJS0tLmJycRLvdZmX9Bw8esKjw7OwsU9D2OncK9DabDf/rf/0v/Omf/ilu3LgBi8WC+/fvs75nLBaDoigIBAIIhUK4c+cOwuEwbDYbrl27Br/fj1AohI2Njb4C55FmnAN5uf3DMAyk02nE4/Ez6wqq6zpyuRzsdvsrM2ZKj1WtVsM///M/46233sL09HTfv3+Usm6HwVGeRyaT4WBFyl8AOOM1y8nNz8+zeZrdbofT6WQR5G7BDrJRoSya/LmI/G5mJlAGTPVNYItEX6/X0Wq1WPx6z+tylIETAAeBgaJPfzjrXulkcREMBo/E5OwkgCZTstks7HY7161fhfd2GBQKBUiS1FdSZbFYMDo6yhYXzWaTfdmJK2632+FyufDo0SM4nU7cuHGDd22KoqBer6Ner3Od07wbNv8+zbU7HI6+P6MjD5xkS0pS9APsDMMwkM1mEQwGz9z1MltcxONxLsyfdlCdtlKpnFpGwIvCfkNNr+tGr0H1UEVRIMsyd8f/6Z/+Ce+88w4SiQTXlckSpNtziOrPVPP1+/0IBALH3xwC0OHRPMDuOKte6Yax5Veey+VeGYsLMwWIJlAG5arjA4Wxe/fuYXh4GENDQ9jY2IAgCBBFEcFgkO1C/H4/FhcX4XQ6USqVMD4+jpGREVQqFSiK0pej6ZG3cB0OByRJOuqXfeVAquWvEtmd6CZ7vR9qBIXDYSYiA1tZxPj4+KEDDmWzsiyj2WxyNkIPF22bqcPq8XgOHLwpeykWi2i1Wiw8/ap8pqcFlEkODQ3xsISu66hUKrDb7WyPTFxayjjdbneHbUe/eeSRZ5ztdptrdgPsDF3XsbGx8UqJeWxsbHRweLtvRLqZSWiWKDjUGSWTtW52gWEYWFlZgaIomJ6e7lk/p46uqqrIZrM8LWLW6iTPcJLtI3vYVquFdruNeDy+69a616NSrVZRrVYRiURO3XTTqwgKlvV6HcDW1BE5ZJq36tQcIrthACz40c/CfeSBU9d1pFKpM7f93A9IzIPkwU4DdF1ncrPT6ewIbuaAJcsyPv30U5w/fx66rrP/i9/vx9TUFDweD8rlMmZmZvDpp59yRzUUCmFoaGhHf5lsNgtN0zA0NNTz/1utFn7yk5/gm9/8Jl5//XXY7XY8fPgQxWKRvWbsdjtmZ2fx61//GkNDQ2g0GpidnUUsFoOmadjY2MDk5OSO960kSZifn4cgCLhw4QJqtRqPAA625ScHtAuQJAmiKKLRaKDVam1TR3I4HPB6vfD7/fB6vftSgT/ywEmjg69SJrVfVKtV1Gq1Xd9/qVTquU3XdZ2bCocBdav7+Qx0XedaYzfo9lBVFV988QUqlQrm5uaYSE2r9t/8zd/gzTffxLvvvssZnCAIbKkiCAILwLhcro7RPzpOpVLZMTDuBcMwmLRNNS2zkyJNIDkcDlb+pmyk2WyiWq1ybXKna6YoCorFIkRRRCQS4TrmWb3PTyJ0XUc+n+cZeKIwAegYNiCrYbJBptHTflWoXkjgTKVSPbdcZwWbm5sd8lQ7dQdp22D+tyiKO2aiuq5jaWkJHo8Hw8PDu24pafw1kUjw9+hcaGtMxywWi7ydoUBIdUEzhcMwDL4RaeKEtkAUVA5Du2k0GofW2qRtmCiK3G2lczIHafqyWq1wu90sPdZ97uYZctKADIfDg4B5QkCfD32WNLocj8dRKpXw+eefo9Fo4MqVKyiVSrh48SIWFxdZvDgej2Nubg42mw2ZTAaBQOB4FeDNyGQyiEQiZ5bQvbm5CUEQ8OGHHyIcDrNcf7FYhMfjQTQaxblz52CxWJDP51Gr1Zi0Ozc3B1VV4fP5tr2urut4/vw5AoHArnoAS0tLePLkCb797W8jlUpBFEW8/vrrqFQq0HUdsizDarViaWkJTqcTs7OzMAwDfr+fAyhNMpmDA63OO9lVmBswB8VRByTzwmQ+N3Nw7hUsSSxCFEVomoZAIMA800HAPDnQNA0LCwsolUq4fPkyHj16hNXVVfzgBz9gfU7aaZDQiaZpaLVaMAyDd06iKEJV1b4TvhcSOEulEhwOR8+H/yxgc3MTgUAAjUaDszaXy8VKOLqucze32Wx2NE3ooTwMnater0OSJAiCALfbDVmWWSWbZoF1XUej0YDdbufV1263d4ggkLIMceE+++wzOBwO3Lp1q2Om3pw5FwoFfk/7gWEYRzpxViqVWIpsLzgcDsTjcZ4gqdfrMAyDqSuDLvnBQHXxowgxNEJK4sPNZpNLQu12G06nE263G6IosvanJEkd5HezyAfd40SC9/v9+/KveiGBUxRFtNttRCKRo37pU4HNzU0WFOgG1VJ2+oBIbDUQCBzqHFqtFlZXV/uau5UkCWNjYx1zyeZZY9q6E6XDfBOarVU/+eQTnD9/HnNzc/w6dB3ohtV1vUPTgP4kQYpe18wwDORyOdRqNYyOju46Eke3MxHrKXsgMQdN0/hn6TNYWFhAMBiE3W6H1+uFx+M5sfYUpwn1eh35fP7Q+rzNZhOVSoXVoJxOJ3/ZbDbuilMtU5Zl1Go1rq13qzrRvWsWLnE4HAgGg30PLLyQwKkoCiqVSl+CoK8izOrYZsiyjP/9v/83/vt//++7bgeOIsOhTnc/Hy9xGvdzTPMWmKY4vvjiC/j9frhcLiwsLODChQtYWlribiZRfmZnZ/Hs2TO4XC48ePAAExMTmJyc5Bu817Gy2Sx0XUcsFtu1BGQYBv7hH/4BV69excTEBBYXFzE5OQlRFDE5OYk7d+7wg7y+vo7z589jeHh4G390p7o0Ke2c9cDafV/1uhaSJKFer0PTNNTrdei6jqmpKRZzod0QLZ4WiwU+n485uKToFA6Hd9T5NQwDt2/fhqZpiMfjCIVCcDgcLGRssVh4Ll5VVc4uNzc3YbfbUS6XkUwmEQwG2WaZ+gK74YUETk3TkMlkMDo6etQvfarRaDTw+PFj3Lp165Wlr6yvryMUCjF1icRkiYRMogtmqS+n04larYZYLHZoWT0i11Pm3m63oSgKXC4XH5f4o1SGWF9fRzAY7CiXUHCkmWbKmv/whz9gcnISV65cAbCzCEa1WuWa8H4gCMKRabLWarVd9TH3QjQa3XGBb7VaePr0KZrNJrMszMTyxcVF5PN5XLhwAdlsFk+fPoXH48Ebb7yBL7/8EtFoFB6PBxsbG3C73WxvMT4+DkmSUKvV4HA44HK5EAgEUK/XdyxfUd3+d7/7HW7duoXp6Wm43W48f/6cVfVDoRBCoRBEUYTf78eTJ0/gcrmQyWR4kSVv9WO3ziCQStKAy9mJUqkEm8126G34Scbq6uqeGbOiKNsEFSRJwrlz545MjzSVSgHAngsUMRCmpqY6siizQriZaUBNBQAdtTJzQ211dRVOpxMTExP7vv+z2SxGR0d3vA5Eu1IUBV6vt2cfgc6PpNwO8gwWi0VuFtLAAP1JzZVyucwMEJoFp8Umk8mgXq9jcnKyo2TXbrf5vfUqZ5mvLUGWZbRaLcTj8R3Pl35P0zQUi0UoisKqStTwNG/V6fOleXeqk8ZiseM1axtgdxjGlir1q66OPzY2tqcma7lchqZpiMVi/D1zPfIoMDw83FHP3A0UXM0PKwWAXmUBc4ClWhkFlmaziQcPHuDy5cuoVCpYWlpCMplEoVBgpR9d1+H3+3HhwgVW9imXy/B6vRgdHUWxWNz1WmxsbLDTQq9tpa7r+N3vfseiwV9++SV/Ltlslq2Gx8fHoaoq4vE4nj17BovFwi6ro6OjKBQK8Hq9vChQ1k5BkmqDvZS9YrEYe57TInZQ6LqOq1ev7vozdHybzYZEIsEEeLIH7kWAp8myQCAAn8/3cgnwhHQ6jUQicaYVzc0YTFR9BcMwkMlk4PP5XrkxRXqcaAtaLBbh9XrRaDR4NppsLzweD0RRZEVyeqCDweCuzw012Hb7/4WFBXg8HiSTSRSLRVZyt1gsvA22Wq0IBAJwuVw8sNFqteDz+Xj7SzQeM+ODMrfFxUV4vV5MTEx0BFQ6t2w2C8MwMDU11fOczd/rpo2Zf3Zzc3NHRwBN07C2tgZFUbhOns/nOahTo8+ccQqCwAsdkeDb7TasVmvfkpgvLHDmcjn4/f4zJ5e2ExqNBur1+q7bjbMEmtVPJpM7qoyfZqysrLBEWa/tZzeo8UQmZEeRcKyurnIm1escdjsvmuLqnmCj3zHbaHQrvlPQ/fnPf4633noLNpsNn332GW7cuIF8Pg9BELieeOPGDUSjUdTrdVgsFnz55ZfcPSezvnPnzsHhcPRcLGist1qt4sGDB/jud7+LmZkZHrmlbDMej0PTNEQiETidTty9exfBYBDtdhuzs7OIRCLsyTQ5ObnntX1hgZM6VK9yPW8/GCwk29Fut5FOpzE2NvbKTZkpioJWq9X3z1NTq9lscpf3sMMA+z0HMwRhy6/noE1Mc52VOM1+vx+1Wo2bcDabDW63m5t39P1GowG3280jumRiuFPtnBgkFHNUVUUoFIKiKDw5Rs6iZDtcqVSgaRo8Hg+8Xi9Tntxud18uvS8scJLLnLmOdVZB8/tjY2OvbDf9IDCMLUfLcrl8ZhXwzaBtqiiKqNVqsFqtCIfDp1YM2TAMLC0t9TXCuBuKxSICgQBv4UkOkMZ/Hz58CIvFgtnZWWZOEKOAxosJ5h0AnaPFYuGx236pgC+sAEn0kwG+Il+fxpv/RYImmxRFQaFQOPPWyFR/CwaDCAQCaLVaqFQq7KpAW1iqz+20fT1JmJycPLSBYzQa5dIFlTQURYEkSWi1WvB6vVzbfPz4Ma5fv97xvHWzJbrvsW4tg37wwgInpcbmovJZRaPR6Nvo/qyB6CyZTAaSJL1yzaKDQhAEOJ1OtoCQJAmbm5uwWq2o1+vIZDK4cePGiS6FEVf2qF+TpoaAzqYSUaRWV1cxMzMDXdfhdrshSRKXAqg8UCwWAYAbdna7HdlsFh6Pp6+JxxcWOLtT4rMKuukHJYudIQgCkskkNjY24HA4Xslm0UFBmRCJjFD31+FwMLf0LO9mzJ1+p9OJr33taxgZGYHdbsfy8jLy+TxsNhui0ShEUUQ4HEY4HOYpt2azibfffpsdMUmgaM/jvqgaJ8nLjYyMnPjtxIsE1TfPsj5pv3iVm0VHCbN6E2mQhkKhM7+roawzn88D2BIGcTqdHWZtBGIB0LafhGn6tel+YYET2OJfRaPRMysvB2x1Nsvl8itPfD8KULOoVCphdHT0TAeBfkE1v2q1ClmW4fF4eJLnrF4/mgyq1+uo1Wqo1+vcYafSITWYqHZMDIKXToAHtrphLpfr0F210wzS2TyrEnv7hfEfSvCqqp75ZtF+sFMWSnJsZ+U6UmmMrGnMI5dEzqfAStkmjdFGIpG+s/YXOtZDtglnNXBSBnVafIVOAuiBz2azLMhwVh76w4BqoX6/nxWGcrkcfvazn+HSpUt4++239/16R+11T5M6/YBsTfaCpmlYXl6GLMs4f/48q/+PjIxAFEU8e/YMzWYTIyMjUFUVo6OjWF1dhaqqaDQaiEQimJ6eBrC1QyZq0l54oYHTbrej0Wi8yEOcaPQaHxtgbwiCgEQigY2NjY4O6gD9QRC2vHVUVcUPfvADXsD3EwSr1SqGh4d3DCJEOqfRxn5eu1AoAMCeI42GYSCfz3cIr1CWSOpLRMlqtVqs3n7//n18+OGH+Iu/+AsEg0E4nU4MDQ3x7kWWZdhsNoyMjECSJESjUTbaI/m7flkAL3Srftbl5er1Ok89DLB/qKrK8/2DZtH+QVM7mUwGbrebZ9J1XYfdbkc4HEa5XEYsFkM2m2Wqk9frhdvtZlX1Xmi321hYWIAsy7hx48aui5thGFhdXQUAJJNJ1Ot1OJ1ONJtNRCIRbGxssIhIuVxGMBhErVZDMBjsmJMn9SVSoTIrUtEWnIJfpVKBLMsA0PEzBHMABgC3272v2vALzThJQeWscjklSTqUBcZZB4kubG5udiy+Z/FeOihKpRKWlpYwNDQERVHQaDRYeCQajSISiaDRaKBcLvO44/DwMNrtNiRJ2nGIxTAMXtDMbpE74dGjR4jFYnC73SyA4vF42CCwVCqxShQJkgDoCJK9gqUgCLh//z4A4Nq1a3A6nTAMA06nk2XjZFnmGXoCBWEqCVAtuF+80IzzLOtyDmhIRwNqFi0sLMDv9+Py5ct9qdcMAKytrSGRSPD8tlm5CADPcfeS1SNlo2AwyARx889QJkjf20vABNgycTRrfJqbVt3iI5lMhqXwzLqoZk1QSsqq1SosFgv++Mc/4sKFCzh//jy8Xi8EQYDX64WiKLDZbEyApxIi0ZHIwK1eryMcDvdl9fFCM076UPZTO3hVQMTkAQ4HahYlEgmWQhugPwQCAVQqlQP9rs1mQzAYZJtpyjwdDgdv4+/cuQOfz4fr16/vGjjp/wKBAMvX7YVgMNihwL8TKPM1DAOxWAz5fJ5N/z7//HO2rE4kEuxiKQgCbt++jVAohGKxiJmZGVy+fBnBYBAbGxt9Bc4XmnECW6pApPl3lkA37KCjfjQgPdN4PH7m7qWTAMowaevbbDYhiiJsNht8Ph/XUClBehm7LCo1FItFnkCjxZaybcpyaeoK2KrXNhoN9sTqp6v+wgNnuVxmwdSzAsMwWMh5sK08OgyaRScLFEwVReFgSltwaiyREyUArrH2g8PYi1OAJ6tnshI2OwLQlt3tdrOzab/sAOAYrDMcDgd3t84SzmJ54kXDarUikUhws2hQO365oNqm2+3mLI1oQ5SZ1mo1qKqKX/ziF7h06RJee+21vp4LUoTaC0S1UlUVXq8XFosFiqKgVCpBVVXYbDaEQiHY7XbONs0EeBKPpg5/v8HzhWecrVYLxWIRw8PDL/IwJwrNZhPVavXM2iO/SFAzgFS9B8Hz5MMwDORyOdRqNfh8PhSLRUSjUVSrVYyMjODLL7+Ex+NhMedz585BVdW+bHp1Xcfz5885kw2FQgiHw0gmk1AUBZubm1AUBT6fD61WC+Pj48hkMlBVFaIowuFw4PLlywC2mldDQ0N98YZfODPbZrOxSdJZAcmjDXD0IL1KXddRq9XO1H11WkHqVzTRpGkaarUaczl9Ph/HiHA4DLfbjWazyXqbu33GgiDgwoULuHnzJlwuV0en32wHHYvFuOlDVsY+nw+jo6MHKqe98IzzrNFyiIJFnb0BXgzMzSKn03km7q3TjnQ6zdQmEhTeyQojnU4jHo+zOAcAltMj1SPa8i8vL7MpXK+tOs2qE7mdiPI0eaSqKux2+7626sdShCNW/1m4uXe7IQY4OlgsFgwPDyOVSu3qQz7AyQGR7fvxQRodHeVdG+V2FOgUReExS2CrHurxeNBoNFCr1ZBIJNgArl6vo1wu97QHJmqV3+/fd3PohWecwNbwfCQSYT+PVzmoiKKIVqvVl+HTAIeDYRhoNpsoFApncsjirKM7oMqyjP/3//4frl27huvXr8Nut8Pr9XYkbaSSRFt4amSRRfCJoSMBWyn6/fv3cfnyZZw/f/6VvsEzmQzC4fBAmOKYQM0iRVGQSCRe6XtrgN1hGAZWVlYwMTHBBPhSqcQK+rIsY3JyEi6Xiwnwq6urmJ2dxc2bN6FpGjY2NjA1NbXnsY4lcNKNHY1GX2ltwLNWzz0poK6ty+ViL/MBzh4Mw0CtVkO1WoXP52MKknnUlGbUaesuCAJ0XYeiKKjX6wiFQn1xzo+lMOR0OqEoyitPWqa51wGOF2R5kEql2DZ2gJMJ4lCa582Br7rgtJWm7+0HZm+mer2ORqPBW3CSpKOfMx/P6XTC6/UiHA6fHAI8sFVXOAtWwSTJNch4jh+DZtHJBdWiK5UK2u02e6NTl5uyPgqmZKcdCAQO5HoqyzIrO1ksFng8no5j0cQTHUtRlA5/9X5wLHwZq9XKSiavKsi2wOPxvOxTObOw2Ww8WfQq32unDaVSCZVKhek+LpcLjUaDA2ooFEK5XGZSOk2IEYG938/SMAxks1nU63VEo1HY7Xa4XC6WlZNlGRaLBX6/n6eFiHMdDodRq9WQy+X6OtZgWT4i0Cr2qpcjTjqozpnL5QbNoheI7mDWfZ3p/xuNBh49eoRr167B4XBAFEXk83lYrVaoqgqHwwFFUZDP5+F2u2GxWDA+Pg6bzQav14t6vb7reWiahlQqBUVRMD4+jkqlwvbAtVoNxWKROZrhcBiyLMMwDGxubrImKNVDfT4fyuVyX+//WJpDAJBKpTA0NPTKBpZGowFJkvoaExvgxYKaRU6nE8FgcBA8XwBarRYeP34MWZZx7do1bri0Wi2uKQJb9Lzbt2/jO9/5DgzDgN1u36ZaBIC3zkQNarVasNvtiMVi2/oGFLJ0XUez2eSRy3g8jp/85Cd45513cO7cOa5fms3a6PepNEDHU1UVLpcL0Wi0rxh1bIEzm80iFAq9sjSdXC4Hn8832KqfENAEF6mOnzXouo6NjY0DT68ZhgGfz4dQKMQ2E+12m4MjkdBtNhv8fj8HKPOUDrDFsUyn07BarexTRIHR3Byizje9BpHRdV1nkQ5SmqfATCR28qUiQWISLRZFEbVajZtEZgI8TRR5vV6upe6H8XNsW3VyvHwVAydJaw28hU4OBEHoaBadNZ9xarAMDQ1B1/UOZSCCIAgcTLr7ELqu4+nTp5AkqSPQkNyb1WrFysoKnE4nRkZGdhydbLVa8Hg8iEQifE7d5wGgQxHerC7fbDaRSqUQjUbhcrk4iJqPt7q6CkEQWDE+lUoBAG/RY7FYh9WGIAisJt9qtdBsNlGr1WCxWBCPx/ty1zy2wEkrxqsI4oOdpQfzNMBms/H27c/+7M9eCZtq8zaTFNK7Qd1iAPjd736HdDqNt99+GysrK8hkMixw8f777+Pu3bsYGhqC1+vFs2fPmBly+fLlDv4jNVfMEpGFQmFXnYBHjx4hk8ngO9/5Dn7xi19AkiS8+eabWFpaQjabZWuL9957D3fu3MH09DTq9ToKhQKKxSKCwSDm5uYAoEMCrhv5fB6NRgM//elP8e1vfxszMzOw2+344osvuLs+Pj6OUqmESCSCYDDIBPhCoYDZ2VlMT0+j1Wphc3MTk5OTe34Ox7ZVJwn+oaGh4zjcsaJWq0HTNITD4Zd9KmceiqKgUCh0eON8/PHHmJ6e3lXmj5R5jqLU0mq1kM/nD7SQ0ha52+TP/Jiura1hY2MDw8PDbAlh9uNZXl7Gp59+ir/4i79AOBzm8UKHw8H6lVTzEwQBPp+PkxqqNXo8HpTL5UM9r5IkodFo8Nadzs/tdvOWnc7BbrfD4/Gg2WzyFt0wDDgcDtbK3A2apqFSqUAQBLRaLYRCIT6e+XMgahLNupOYcbvdRrVa5ex4Lxxb4NR1Hel0+pUToKUOXSwW6yvFH+DFolqtQlVVtpbdCyTKoigKms0m4vH4jj/bbrdRKBRgGAaGhoZ61g8Nw4AkSVAUhc/BzB/sNjszb1spaGUyGUSjUbZ3MBuT0TbT4XDAbrez66PZ/ZFEeldWVg4sb6hpGux2O8bGxvr+HaqFmiHLMtLp9IGzfUVR4Pf7twWznbJtwzA4M5VlucPZcidYrVYW+7DZbCdHHQkAryKvImjlGuBkwDAMfPTRR7BarUgmk1haWoLdbker1UIgEEAikYDH40GhUEClUoGu67h06RLq9XqHvUI3ms0mMplMB5m6Gw8fPkS1WsU777yDf/3Xf4WiKLh58yZWV1eRy+W4IXH9+nVks1n4fD4sLi4yI+Py5cuQZRmtVgsOh4MtdM3H3Nzc5BnrXuOB5lreQZOUvX6PgjwAPrd8Po92u90xfEAZ9EFBGpulUqnjNVutFiYnJ7edh/ln9no/5gVrv/njsWWcr6pOpaIoh97SDHB0qFarHUK5tIUlS1rqvtJ8MnVh3W43arUaksnkjt3VfqQRS6US6vU6AoEAv74gCDx2TNtTr9cLr9eLZrPJDRq73Y5AIIClpSVEIhHOMulPMzdSlmUEg8EO216qSeZyOTx79gy3bt2C3++HLMsIhULs+UPb9HA4jFwux8G5Xq+j1Wrx6KIoijve161WCw8fPoQsy3jjjTdQr9chyzLi8Tg7Wfp8PsiyDEVR2L+cju10OtFoNCCKIgKBAFRVRaPR4FnyQCCAbDYLu92OUCiEarXK7z0UCkGSJIyOjkLTNDx8+BClUgnnzp1DMBhEu91GMBiELMu81ScLH5/PB5fLxeIfuq4jEAiwDXW/W/VjzTitVis0TXulAqckSa9E0+FVgSAIqNVqXKu0Wq3M5KAgQxmKubRCLoelUonvUbNoLgXb+fl5hMPhHUtOQ0NDkCQJ+Xx+233hcrk65uip0ULPg67rKBaL8Pv9PfnAvXIcCqj0RaUH+vOLL75AqVTC1atXkU6nUalUUK1W4ff78dZbb+H58+eYnJxkZaBGowGfz4fLly+zX3kv6LqOeDwOq9WKarWKX/7ylxgaGsLrr7+OTz75BF6vF9FoFMViEYVCgRcL4nz6/X7Mz88jlUphZmYG2WwWtVoNpVIJgUAAMzMzKJVKMAwDk5OTePbsGQKBAFKpFC5evAhBEJDL5WAYBiKRCFwuF37+85/jW9/6FjeHVldXkc/nubteKpUwNjYGj8eDx48fszsnTTTZ7XZkMpmTVeMEwDfTq8J1NAwDqVQKw8PDryyx/7SB9BUPAlLTMb9Os9lk7qCmadjc3EQikcDw8HCHz7s5iB7mHCjzPOysfbvdRi6X44xRUZQOoV7a7tL3qEtP/6dpGp4+fYpQKMR0JCKv2+12WK1W3LlzB16vF3NzcxAEAdlsFsFgkK0pqCFFMHf7iQJls9k4IzUH6Varxdmp+dzod9PpNMbHxwFsJS8A4PV6oaoq8vk8dF3nhYrO1/z6xExot9toNptoNpv7oiMda+CkdLu7Y3haQZyxgYjuqw+zaC41kmgrTtmp0+lEqVSC3+/f1iTZD+gBPsw9RfcmvYaZeK6qakdzymq18laa6EWGYcDv93ODiziP9KWqKmq1GosFE92Qtsc7NW7Mkzo7qSPReeyU7VIHPB6Pw26349mzZ/B4PJibm+OFR9d1SJKEarXakwBPO5GDEuCPNXCSasluncvTBKrrDIjvZxNmsni73Uaj0cDf//3f4+LFi3j77bf5IdytMdELmUwG4+PjO3btzXXUUCi062uXy2VIkgSr1QqXy9Vz/JAyLwqsFosF0Wh0V46m+RjdU0U02WMYBm7fvg2fz4fZ2VkA4KBILAC6PlRmMJ+HYRgIBALbNFbN150CMX391V/9Fd577z0euaSM0/ye6XfNVhwnduQS2LrAuVwOIyMjx3XIFwramgz0HwcAvnqgU6kUbDYb7t+/j0gkAp/Px6o9Xq8XyWQSTqcTa2truHHjBu7fvw+73Y5Go4FoNIpIJMIe4b2QTqc54+q1aBuGgV//+teYnp7G9PQ0IpEI1tfXUS6XIYoiIpEIZFnG7Ows7t69i1AohFKphGQyiYsXL/KY5Pj4+IFLUOZrQSRzqrkahgGXy8Vb8KmpKayvr6PZbKJer8PtdmN2dhZ2u53FP/rZpRqGgadPn2JkZAQ+nw8LCwu8oEWjUUiShEAggEgkggcPHsDn8yGTyeDixYu4ePEi+xNRCWA3HKs6EjWH+ulOnnTQmOWrOEI6wMFgvqedTidnPQAwNTXFs90WiwV2ux1XrlwBAJw/f57dGZ1OJ2vX2u32bbU/ABgfH0csFkMgENixFnrjxg3uLDebTQQCAei6zuR66l6fO3cO7XYboVAIsViMt7iHdWqg3x0aGoKmabxoxONxtNtt+P1+/tPpdCKRSHBQp7FK6sjvp7QXDAbRaDTgcDjYHI7YB8FgkIU/iMoUjUYRCATQarUgSVLfz/OxZpzGK2AtYa51UfZ8Wt/LAC8Ga2trLJF2EOTzeSQSiQ4CvLkWWSgUsLm5iddee4236r1k3aimWKlUoChKT5V12qrTl8Vigc/nQyAQODKbG13XUavVIEkSz82bJ5foPKhhQ3VPt9uNUCi0L50BmoyqVqtot9vc2DKPj9I50bF0XYfD4eDdYz/HOtbACYBHxU5rF7pcLuPp06dQFAXXrl0bjFkOsA1U5zsoLBZLxwNMjyjVIs21ROpSUzAivirNaJsZLN2WFcZ/qJ73CmSapsHpdO7I4+yHYG7+2Xa7DUmSIMtyh8MkvY7ZzoLqoD6fb9c6607H0nUdjUaDeam0+JgbYt3WGR6Ph90bTmTgPO0ukM1mE6qqIpvNYmJiYjAxNMBLhblRQs2OlZUV3Lt3D9/85jcxNDQEWZbZJrfVanEGRywAClTUJNF1HU6nE5IkYXh4uOdxVVVlUZBr1671fJ5p7pymfnw+HzRNg8vlgqIosNls0DQNXq+Xs2tSa/d4PDxBNTw83NdzZhhbjqe1Wg0+nw+GYcDr9UKWZVZUIgaEKIrQNI2HI2hUtl+ztmMPnPRBHWYM62XjVSg5DPDqguhDuVwODx48QC6Xw5tvvonl5WXk83lukrz//vt4/vw5z90vLi5ykLl16xYqlUrPrj2wlZE2m02m9fR6Dm7fvo16vY5vfetbGBsbg6qq+OijjyDLMkZGRlCv16GqKubm5rC+vo5KpQLDMHj01GazsSL7TqR06jWoqgq32421tTVuat2/f5/J98PDw2g0GvB4PIhGo6yOVKvVcO3aNYyPj0NVVaRSqZNjD2yGJElotVp9sfNPKprNJqrV6q5qOwMM8DLRbreRz+eRTCah6zpkWYbb7e7QjGg2m0wNMs+Y05Z2YWEBkUikQ4uTqD2CIODRo0dwu92Ynp7uWc+l2mypVEKj0YDb7WYCPb2GeWts5nbSeCj5D+3EC9U0DfPz8yiXy5icnMSPf/xjvPbaa5idneWpL7MWJ/1J2SZRqZrNJtrtNuLxeF/C18ceOBVFQaVSOdVBp1AowO12D0YtBzix0DQNq6urB55Aom1uJBLpSX7XdR3lchlut5tLb8QCILV3Xdd56MUwtozZGo0GWq3Wtvl7Cp7UAHO5XPB4PByQiaBO01xmIj+5UzqdTtRqNSQSCe7km+uqZoUp2rK73W74fD4m8Z9IAjwAHls7rfJyr6pYyQCvFo7qsd5LVai7YUVZ471791Aul/Hd73730A3UZrOJbDbLAZq+aFEgcWO/3891ThrDpGBubn5RUKdskxp5fr+f2QR74dhdLi0Wy6mWlyPxhNMY9Ac4O3iR96d5Ioo4qebuPfEjqbO/vr7Ows6vv/46FhcXYRgGK7AD4KZRJBJBu92GLMusljQ6OgqPx8PHoC024fPPP+fm0oULF5BIJDA6Oorl5WUet4xEIqjX6wgGg/B4PHj27BnPtp87d47VsSip2wsvxR74NAcdc61ogAEG2A5BEODxeJi/abVa0W634XQ6USwWmdROmR512Yn7SrJzpAzfi4dpxq1bt6AoCh4+fNjhWeRyuSCKItxuN5ceKCulrX8wGOSaJiVFfb3H496qA1sjY4lE4tAKMC8Dp51ONcAAxwVJklAul7kzb+ZR0r/72RY3m03utu8FCta0fSdVp51m1SlTFQSBt+onSgG+46BdXbzTArMU1wADDLA7yMtnN6Wofsp2Nput70YsZZGBQACNRgO1Wg3lcrmjIWUm2lMDzOPx7GsX+VIiF1kFnza/69MY7AcY4GXBarUe+2SdYRhoNBooFApcF43H41BVlRWZFEXhaSbqvhcKBcTj8b61gl9a4KzX6y/j0IdCvV6Hz+cb1DcHGOCEgAjwAFiUOZ/P83DKRx99hGaziXA4DIvFgitXruBXv/oVhoaGUKlUMDw8jJs3b0LTNKRSqb6sgYGXVOMkt8CdxrlOIkh1OplMDrLOAQY4IVBVFQ8ePEC5XMbVq1dRq9Xw05/+FH/+53+O4eFhVoGiGidlnCQAQiIftVoNkUgEfr+/r+O+lMB5GpXTdV3HxsbGYMxygAEOCBIp7gckQkygxhIp2ZvV7EmEmLryjUYD8XicCfBkiGeup1IQdTqd8Pv9rH/a77P90uhILyFeHwqKovQtOTXAAANsRz6f71B+3wmGYWBzcxPDw8M8JUQqUGY1I5KcI38natparVbkcjmoqsomcTt5Dqmqikqlwor6/TaJXtqe02KxnCpBY0mSTrUwyQADvGxQN7tWq8Hv9/N45MrKCjweDwzDQLlcxtjYGOtBkLxcr2BLAfOzzz6Dpmnw+/2IxWJwuVyIxWLI5/OwWq0QRRF+vx+iKCIUCsHtdvM4KgmO+P1+thnpZxz8pWWcNpuNJZ1OOmjONhqNvuxTGWCAE4HuOfNeQsrA1kRQq9XCxx9/DK/Xi0Qigc3NTc4WRVGEIAhIp9MAtsjwoVAIlUqFudI0zrkTLl++jHq9jo8//ph9g8iKpFQqsYp+tVrlXWOlUoHL5eJpIqIkVSqVvt7/S6lxAkCxWITL5ToVQhmqqiKTyZza+foBBjhqtFotPHz4ELIs4/r167xlNouAAODGzMLCAkKhEM6fPw+73c7b6F6GdoZhIJPJ9CXvZv4d4Ctv+mazydv63WbVzedMHusnzqzNDFEUoarqqVBQr9Vq0DTtVJzrAANomoaNjY1Di9DQmGIoFNqmkNRqtVCv19ke2Ol0svTc/8/eez43smDX4Qc5NHIiCKYhOTm+/PTSJu3KK61Uq2CVXeWyy/7sP8B/hcsfXf5il6psrWVL8kpraVUbfvKml9+bNzlzGBGIDHRudPfvA3XvNDkMICcQBHGqWDPDIYEG0H37hnPPcW7pOLeEWq0WqtXqpuDqzFppAk42Frlc7kC6EJQNS5KEdrsNSZJYs5O2lUhHlDyYqLc50MMhAJxKDzroAxiV6SMcFZimCZ/Px7YX5PMDbFY22prlObMx+t79+/c5e/P7/QgGg4hGo/B4PHj06BF8Ph/Gx8d3VFFyqrL7fD7uQdLuuW3b8Hq9TyktGYaB1dVVhEIhpNPpvm8Ctm2jXq+zYVs0GuVr1+Vywe/3MwWJnkuSJDQaDUQiESSTycEeDlG6fhQGRIZhjCwyRjhSME0Tv/nNb/DgwQOYpok/+IM/wPXr19Hr9XDmzBlcv36dxTcEQcD09DQCgQAePXoEv98PURRx8uTJTSLDvV6Pkx3btlGtVhEMBlmUeCuuXr2KTqeD999/H5OTkzBNEx9++CF0XUc2mwWwEcxmZ2exsLAASZJgGAYymQwrwNfrdbTb7R2rPQrOlEmKogjTNDE1NYVms4kvv/wSiqLg7NmzqNVqOHnyJB4/fsx+6rlcDqdPn4bH40GpVIKiKH1tDx1aqU66loPO5dQ0DY1G40iR9Uc4vqBVwlqthkgkwht61N/z+/3QNA0ej4d7ebZtw+fzsTqQ02WyWq0e+NwnTcxOp8Nlsa7r/Hy9Xo9Fi0mF3bZtVh8TRZF9j3YaIpumiXv37qHZbOLcuXO4f/8+lpaW8K1vfQuCIPCOOjFi6GahKAoAcJDsdruQZRkTExOD3eM8KoGzXq9zyj/CCIcNIoHT7rXP5+PyW9d1PHr0CF9++SVeeeWVZ7anoUDajz7lXsesKAq63S4kSdqkwg5gU4uAXksoFNpETHe2GIhIT1/kkxQMBnlHPZvNsh7obiGObiakAj/wPU5640zTHNgVRvrAdzKsGmGEw0C5XMba2hrS6TTi8Thv4/h8PsTjcS6Nnweeh8sB6XPSvIAcN7ezB3a73SymQy0D2hIi33efz8cZbCqV4sfweDwYGxuDrus80KXXsFsPttfrQVVV9lQa6B4n8KTPOciBs1/NwBFGeBGgc5DMy8ieempqCqFQCKFQCJlMZuBdCShQUhJiWRZisRgURYHf74eqqlyqR6NRrKysQNd1BAIBBINBtrTYji/68ccfw7IsnDhxAoFAAL1eD4lEgi2QRVGEz+dj22HKTJ2JUTAY5J5tP4PgQw+cuq5v2kkdJCiKMlqzHGHf6HQ63EM7KILBIJuMAeA1w3g8zj24fs5LXdfRaDT2dQ77fL49p8u9Xg9LS0uQZRmnT5/eNK02TZPXGenPL7/8EtVqFd/+9rfxy1/+EpFIBJcuXUK1WkU2m8Xa2ho6nQ5EUcTrr7/OlCanJ9BOmJ6ehiiK+Ju/+Rt8/etfx5kzZ+D3+7GwsIBqtcqZuNvtRiQSQTgcxo0bNxCNRiGKIk6dOsX8zUql0lfgPLQeJ7Ah06YoCjKZzGEdwq6oVCqIxWJHTjd0hMPF8vIystnstuRugrNE3XoJ0u+Hw2EeijgfQ5IkdLvdPZ0IiDtJ64j9PDcAlEolTE9PcyB0BkAKirquo9lswu12czZIXzR48nq9/KckSWxHnEgkWBQ8EAjANM1NAxlN0yBJUl+K71tfE9kiW5bF2So5b25HgKcynQZm2Wy2LwbNoWacfr8fnU7nMA9hR1B5NKjZ8AiDC7fbjVarhWvXriGXy8Hv96NSqXB/L5/PIxgMYn19HWfPnsX169fh9XrRarWQz+eRTCZhGAbbP2xFuVzG6uoqzp07t+vm3Y0bN6DrOq5cuYJf/epXHBiCwSDu3r2Lt956C6VSCaZpwrZtLC8v49SpU3C73VhdXWVBDgp+fr+fg6JzSk8BbrcMNRAIQNM0LC8vY319nUWEtxLgaeCVz+f3RVWkn/P7/SgUCrAsC7Iss+Olpmn8fLTy7STA77fdcagZp2VZKBaLA7nK2Ov1UKlUUCgUBu7YRhhsrK6uIhKJoFarsce4x+OBKIrweDw8LPH5fDwAIc/weDwOURT3RfreCcViEYqiYHx8HPV6HYZhwO/3IxAIwLIsNkxTFIWPy+fzodlssqnZVp8gCi4ulwuPHz+GIAiYmprigEpB1Vlm+3w+bhfQ9JuCMT2WkwBPwyA6xn59gICNhKfb7aLVasHtdiMYDCIQCHAmTBN6IsCT+hK5bvYrVH6oGaeTMzZooOxgFDRH2C9M08T6+joEQdjU5tmJ0kYcQ+IUGoaBcDj8zIHz5MmTaLVa6Ha7TDjfCvId3/o9Z8LgzK0okFqWhXQ6zT1NKn01TePvLS4u4rPPPsPv/u7vYnZ2FrZt48svv2SuJpXqs7OzWF5ehizLkGUZ4XAYly5dgt/vR7VaBQDE4/Ftj39r3ifLMkRRxOTkJNrtNm8+FQoFtFotnDp1CsvLyzAMgxXPLl68CK/Xi1KpBK/X21dr7tDH2YMoL0e0iZ1OthFG2ArnfnSv18Of//mf41/+y3+54wW/G55nlRONRvfNWikUCpv+7TwW+ns/JPF8Po8333wTa2tr6Ha7nJ32ej22DwY2AvXExAQT5uPxOHw+H/dFY7HYjs9h2zYePXqEVquFs2fPYnl5mTP+YDCIiYkJmKaJbDbLbYqpqSlIkoR8Po94PM492P1QIw+1VAc2GtGZTGagVhpt28bKyspI7X2ETdjpUlEUBe12m9cXncOS437+0A2FJuakiuQs6+nnaPBEu/VOFoFzkEVlNpHfm80mXC4XBEHg9sGJEycgyzK3SXYSMiaSPz1Xv5/ZoWecPp9v4HbBNU1DIBA49if9CJuhqioePHgA27Zx8uRJHjoEg0GkUik2CxvhCaiHmUgkeEADgHuYlHWSyDF9ERfTMAxWN6Lfcbvd3KtNJBLIZrMcFCcnJ2FZFis3kZKT87kA8I2NBmD7zcoPPXCSVXC/tpwvA6IoHgmd0BFeHqivF4/Hoes6ut0u4vE4sy5GAXNnODPFbDbLikimacLv90NRFLhcLhiGAcuyEAwG8fjxYxSLRR4mRaNRFiTequr0xRdfwLIsnDlzhodD9POxWAy6rsPj8fBNLhQKQRRFznJJVH1tbQ3xeLyv9spABM5BoiTRNsFIe3MEurA6nQ4kSYLH40Emk2ERiqMSLMnFsZ+uHAWWvaDrOpaXl9Hr9VicGHhSmlPZTZPyX/ziF0gmk8hms1hYWMDU1BTq9TrOnj2La9euwTAMBINBfjx6b2kyvxM1CwBisRhEUcR//s//Gd/97ndx6dIleDweXLt2DbVaDV6vF5lMhjPMeDyOL774ArFYDKVSCa+++irm5+cRjUY5eO6FQ+9xEu3nWYUEnhdM00SxWBx48ZERXgwosxRFkS/WWCzGNJWjeE5omoZSqbSn6AdpZ05NTfH3nNtATiK8pmlYW1uDZVkYGxvjTJC+nGW3x+PB0tISfD4f5ubm4PV6eTecepDOYyAe6fT0dN+vkT43TdNQq9U4Uw0EAryF5BQVcQZ26pXSEKkf7vahB85BU0mivtVIuPj4wDkR73Q6LENGgr2DcF4SKJsDnvQFdwNtxoiiiGazCU3TcPLkSayvryOTyWBtbY0fN5lMolqt8j45kdK32wbyeDxotVrw+XxIpVLbTt63ol6v8yaTkwBPrBqPx8P0qEAgcGB2ASkoSZIESZIgyzKLhDify+/3IxwO8xpmvwIfwACU6oMGURRHZfoQoF6vQ5Kkvi4EWZYRCoXYTGwnYd5+sL6+3rd3+G6wLAtTU1ObJsGU4ywtLTHrY3JyctuVSJoYP3z4EFevXsWf/MmfoNVqweVyodPpoNfrbRpuZbNZ6Lq+qYdIWRxlnERqp5+5c+cOotHoU1kd/b9zat1oNFiXglSInDclJymdrDXI1I1aI/3AtjeMFRuNBivhp9NpDvhOsj3ZgXQ6HciyjFQq1fdQ+NAzTgBYW1tDPp/vixv2IjGiIQ0P1tbWkMvleHPHsiwWsXXKl5Hy9/T09J6fea/Xw82bN5FKpZ46RyhzWltb40zJaVjmJI7Tv+lnSF6R4HK5sLKywgNTCkBOpSQyIKMA5FyNdG7vUPlar9eRTqf5GLZ6AgEbwbrZbGJ6evqpfqgziG4V83BSe+jLtm08fvwYn376Kf7gD/4A09PT8Hq9uH//PgdWmp5PTU3xDYeUjM6cOcP+6LFYbMflga3HqaoqarUa8vk8FEVBsViEpmlIpVKQZRmTk5O8ZkoB86233oLH40G5XEYul+urVB+IjJOmWocdOAdZ4m6E/cHlcmFxcRGPHj3CzMwMut0uTpw4gZs3b6LT6SASibCcGAAuWXeDZVksyLv1503TxF/8xV/gnXfeQafTwdLSEh4/foyLFy9iYmICt2/fxsmTJ7G4uMhqP2QhceHCBXz88ccYHx9n8vb8/Dz36ZzBENgQn1lZWcHZs2d3Fdim/qHL5YKu61hcXNxUHjvfK9K5JGO2rS0Kp/BwvxgfH8ebb76JcrnM02taLSX1pWQyyaW5qqqIRCLIZDLMtqGMdSeYpomHDx9CkiScPXsW9Xod5XIZ2WwWHo+HX69T8T4YDKLb7SIWiyGZTHL82ddu/CBknM1mE16v99BV1knt5SDbHiMMForFIqLRKA8yaD8a2LjYXC4XB81KpfLMwr80WOl2u0in06wvSQGPDMkoKBF/2e/3c8bpdrv5/xuNBpeNTg6ibdu8VkgBxrmHTY+xuLiIEydOQFEUtsjdSvmjSTipHVGpT/SgsbGxZ04k6DW3Wi1+XOpjUnCm10jlM9GS/H4/EonEpvKZwhX1SWVZRrFYhGmaiMfjuHXrFvx+Py5dusQVBWXn25Xq1Gv1+/1IpVJ99zkHInDSatVhDmRs20axWHwuJ8sIh4/Hjx/j8ePHm6gyO6HX62FmZua5PO/y8vJzqZxkWcbc3NxTE2fn353lv7Nk7nQ6+Oijj3DhwgWcPXsWAPCrX/0KiqIgnU4zp3Fubo4zNLfbjUQigfPnz/O6Y7fbfa5eW9VqFd1ud5NUHd0QnIR0CqpEZidjNRJxpnYHuW5up9yuqirvvtPvbR0OUUZP/e39LL0MROAksVWyMz0MWJaF1dXVUX/ziIN6gPfu3cNnn32Gf/2v//WegcxJVXlWbN1QOSioND7oVBkAy7dFo9FN03EA/HfSxbQsiw3bRFGELMsYGxt7rrKKRImiY6BhEQVD6pn6/X48evSIWQ1OatF2GeHt27cBAPPz8+j1eqjX69ziiEQivJlI2TwpzlOmTRmopmnIZDKD7XLpxCDIy1Hvaj/iqSMMDqgkJDWdbDb7TNPxYQC9J6IoctZFGdfW0pf4k2Rctp9Jdj/HQXQoURTx8OFDzM7OQpZlTE9P49q1a1xCi6KIubk5+P3+vuTknHvwP/vZz/B7v/d7uHLlCtxuN65evYpGowHbtjE2NgZJknDq1Cn0ej188sknzJ65cuUKYrEYTNPE6uoqTpw4sedrGojAOQjT7Gq1CkEQBmr1c4S9QaVqvV6HpmnIZrMjnYEdsLXUJ+ymVL8TDMPgoc/ExAT3cCmLoy9SWf/rv/5rnD9/Hh988AHcbjf3Xul5aQ2T/lxbW9tExO/ntdFzNptNCILAvc2t6vQA+Ni8Xi/vtsuyjHQ6zTJ/u2FgAufq6iomJiYOxRjtsJ9/hIPBsiy02210Oh2k0+mRfuoWkDDGQUHWvMDmffNerwdZlvHgwQNomobJyUkevFCPkspq2i+3LAvlchmNRqOvHrDX68Xp06f3fczU91UUhWcnRH4nmpRTbZ76pOFweF+rtAMxBaFmLU0WXzaI8jC66AYT293bRVFEo9FALBbri4N5HFEulxGNRg/03jSbTciyzHxXJ62HguPc3BwCgcCmG9ZOz0WBtd/ha6vV6us4Lctid8xgMAi32w1Zlpnk73a7uVfqvAlQG4NYBEQR67fiHIjACRyuvJwkSQiHw6OLb0Bh2zYePHiAdruNmZkZVg6fnJwcaV7uAhIJX11dZbvcdruNXq+HQCCATCbD9rilUgkej4cFfsllMxqNQhCEp3idtm3jww8/RCQSweXLl/f8DO7fv8/+RI1GA8lkki1C1tbWNgmCZDIZXoHdC6Zp4tatW6jVaojH45iZmUE4HEY2m0WlUgGw4ToqCAJUVUUymUQwGMTy8jJbCRcKBfh8PlbL72dIPTCB87Dk5egDGu2mDy5cLhf742iahvHx8WM/+NkLlKVLksR+P9QDbDQaCIVCvGZIVB8qccPhMOtZAuA+5Va8+uqrcLlce66Y2raNxcVF5PN5CIKARqMBwzBYed3tdrNCPK1qyrLMu/C73Rxt28bc3BwKhQI++eQTZLNZXrGkfif1Oum1uVwuSJLEwtOBQAAejwehUAjtdruv93cgepzAxlRbFMWXblcxCIOpEbbHaPDzNJxT8O2m41R6/uhHP0KhUMBbb73FBPut2z/0ve3K7Hq9jlQq9VyssenYSqUS62RubcttzWaXlpaQSqU2iRdvpSU5N6kAIJfLwbZtNBoNNqCjn6UhEQ2iqFdLNxPTNBEOh5FMJvvrwT7zu/KcQKX6y4au6wOlPj/CBizLQqvVgiiKSKVSm3zKjzvW1tawurqKQqGATCYDWZZZXZ2CxeXLlzE2NsY+PvsFOXA+T4RCIZRKpaeGNcATpXjiWSYSCbbsBTbbZXQ6nU0BdXV1la0vaJGG+Ki0j76TOhJZnWzXjtgNA5NxHpa8XKPRgM/nO/R1zxE24OT8xWIxxOPxYx8wKUPSdX2Tx47X6+VpMJWbwGCp0du2zb1DmrZTFktDIo/Hw4sDuq4zOZ1WZUmEeOvjAk8CKq24/tf/+l/x+uuv4+LFixwYnfJ7TnERZ8ZJ7AOqavbCQAXOl10yk5rN+Pj4oQuMHHeQHFitVmMPn6M6+JEkCYqiHPj33W43QqEQBwOScqOg49y73+39IbWjg1zitIa4E0zTZKk4mpRv5YmqqopKpQKPx8Pulh999BEMw0AymYSiKNA0DVeuXMHy8jLTh+LxOC5fvgy/3496vQ6Px9OX1CMpMk1NTcHr9eLatWvodrswDAOTk5OQZRnj4+NwuVz47LPPWNDk4sWLSKVSMAwDpVKpr/XbgQqcLzuIWZaFtbW1gRFRPo4g0dlqtQq3241MJnPkBz/Ly8sc+A/6+4lEgrNJyszoPVEUBbIsIxaL7dhmove1XC4jk8ns6/lN00Sr1cLk5ORTmpxO1fSlpSUOSjTBd4aTer2Ojz/+GN/+9rdZGk5RFNi2jUAgAMuy4PV6EQgEWLADAA9wRFGEJEkYHx/vq23g7G/GYjE+ZmoDkGe6bW/4EpmmiVAoxL5HpJrVT5AemMAJbPDOkslkX6ny84AsyyP/9OeM/ZxOpmmiXq+zvNqzDn6e16m80zHQQMG27W0dLSlwFItF+P1+3L59G+l0GoFAANVqFbIsIxwOI5fLwefzoVqt4tSpU7hz5w5PgcmmgyyGt0OxWMTS0hIuXry4Y4upWq1iYWEBFy5cQLvdhqIomJiYYBES2ppJJBJIpVKo1+tYXV2FKIo4f/78Jt+trSrw9KUoCquoO8nl24GGv5qmbRpsOYdb9EUKSqTMvtNj0s9tHSzRmqmiKPx5OR976/NTQN2P4v/ADIeADUqSYRgvLXCSJt8Izw/kQ9PPyUe+14IgYHV1FbOzs9tWG1sD4m6Pvbi4eGB1K1IM2nohEiRJwt27d2FZFs6dOwcAm1TXDcPAD37wA7z99tu4ePEiB03btpHNZtFut+Hz+aCqKnw+H/L5PPvc0HMGg0Gm6uwUOKenp/f04yFnSAoO5PZIGaxt22x7Qcdz+vRp6Lq+KTMEsGmI41RkunnzJoLBIAfYvTI12iTa+jjA9qImhmHsSg/qdruYnJyEz+djcj4dL30uAHYMhs5s2qm61A8GKuMURXGTyOmLBPVUqcwY4flgZWUFhUKBLwhq8JMyDZGvaSuFrFtJYGWnE/fmzZtQVRVXrlzZtjwlVaRqtYpCoQBN03jLpdfrbcouyP5ZURTejPH7/SiXyzy42G7qC2CTF/dWDx7iI7bbbcTj8QOfV7VaDbOzs898Xuq6jrW1NTZp2y0jdIIm0qRR6gwwzpK91+uh2WziF7/4Bd59913k83m0Wi3E43HmR9N7E4/HsbKygkAgwP3O9fV19Ho9VmcnhksgEIBpmlhfX8fMzAxEUUQikeB+LfFQqZWxuLiIer2OQqGARCIBy7KQSCQgiiL8fj9EUeRzkDadiMJE8SYQCKDVavFiwF4YqMC5vLyMX/7yl/hX/+pfvfDASe6aBzWEGmF7rKysoNvt4saNG7hw4QIWFhaYTE3WBefPn8cnn3yCfD6PSqWCQCCAU6dObZp+bgVtkew0sJAkCX/5l3+J733ve9B1Hbdv38brr7+OcrmMSqWCTqeDeDyO119/Hd1uF9PT0/jkk0/Y3zsej2Nubg6ZTGYT6XqrCno/UFX1mXyH3G43u2o+C6iXd5BLPBAI9CUp52xPFItFVqZfX19Hu91mdsT58+dRq9Vg2zYuXboEURTx+eefM3Oi0WiwlW8kEsGpU6dw9+5dXLp0CYqiIB6PY3V1lR07x8bGMD8/z4MzRVHw//1//x/ef/99nDlzhlsl5HhJ/MxCoQBFUXDjxg1EIhEEg0H+eU3TUKlUBnM4RH2t7aAoCp/wOyEYDPZVXnc6HaiquuP/y7IM0zR37BGR4OsI+8PKygrGxsZYrYayPBJ6ILVvZ1nm8XhQqVR2zTj7ARl8jY+P8w6z3+/nTJe2XCggbO2xVSoV5PP5fbkdjvBEy7ZQKAB4wo12voe6rm9SUKIBEWX2zirC+T1N09hGeGsGTmuWxGCgKXmtVoNpmggEAggEAnwOOH+fynPihmqaxv7r/fC6X3qPU9d1GIbBxlHONzcWiyGXy21q4G6lOND0tdvtstz9dj2pVqvF/K/tShQKmFufAwDTLJ7H1sRxg9vtRrlc3vQ9RVGgKMquvt5kovYsAYskwkql0q4/1+l0tv2+LMtYX1/naS+p5tAgiMrEQCDwXDLCYQHdHKn83Ql0MyXVJqf/EQ2g/H4/B7udWhWGYfDnNDU1hUePHiEcDuPy5cuwbZtvnKIoot1uQ5KkTaR7GnRR2R6Px5FOp/dFf3vpGaeiKGi1WlheXkar1cLly5dRKpU2mcifPXsWy8vLGBsbw4MHD9gs/syZM3yBlctlCIKAmZmZTS/WNE38v//3/zA/P4+JiQncunUL6XQawWAQ1WoVqqoiHA6zC97Y2BgeP34Ml2vDwhQA87pGgXP/2O50+sEPfoCTJ0/izTff3PP3B2GqDjzxI6feG7BxU3jw4AFOnDjB5dwoeO4N0zRRq9XYnTMUCrE9BgUr6p0SmZ1635QB7sRgoIyR2iN/9md/hvfee2+T2d3W5wI2Z5zElfX7/UyH2wuHEjjb7Tba7TZ0XYcgCFxWUS+MLDrJVJ4koxKJBKrVKmel28G2bdy7dw+CICCTyaBcLjNnDNjINvx+P7xeL5LJJEKhEFqtFmx7wwQrGAwiEokgHo+PAudzgK7rKJVKLHZ7FEEXKW3uEM3F4/FwVkpUquMSSKnkBnafWvd6PaYZCoKAO3fuMCk9FovB6/VidnYWv/rVr3hF9PTp08hkMnzubE2OdjumBw8eYGJiAuFwGLdu3YIkSej1ekin02i320ilUkilUvjqq68Qj8dx//59vPLKKzh37hwURUGtVtuTsQAcQuBUVZWN5oGnJ300wduJltLtdvtq3i4tLTEdY7tSfbfnabVaGB8ff65+K8cRNDSgjH+YQIFDVVXegCFnRiJVk3FaP7Asq+91v71AJPDnEcQty0I+n+ebHoULXddx7do1SJKEV199lT196Ism7z/5yU8QiUTw/vvvM/WJBmehUAimaSIWi6HZbHLWR5PxVqsF0zSRz+f7Dpzr6+uwbRuJRIKrBSffk8SLm80mswTi8Ti8Xi9arRa8Xm9fvO6XHjgty2L+3nagzHMnmTfqgeyFftSvd9pTd7lcCIfDI5rSM4LaMv2e+EcZzoCiKAqWlpbw4x//GN///vdx6tSpp8536rUR5UmSJHi93j2tqW17w2OHKE/On6fnWFlZwfj4+LYDFXpe+nmnWhDwZGBGg7x6vQ7TNDkw0vFSmUzXI1G0nFQtopvRkKfdbkPTNGZPODNVOgYirPt8Pl4G2M+5Q6ueJAQCPCHwb5eg0esOBAKIxWJ9L2EMFB0JeLmOl5Zl8X78KEg+XxBPtlAoHNkS/VngLFMrlQqq1SreeustFItFJBIJfPzxx5icnOQ+25kzZ6AoSl9+N5VKhTd7nIHTNE386Ec/wpUrV5DP5/HLX/4S58+fh2EYEEWR7SvOnz+P2dlZrK2tYXp6Gg8ePMDCwgJcLhf8fj9Onz6NR48eIRKJ4Pz58/B4PIhGo5v8ewDg+vXrCIVCOHny5K7XjyRJKJVKXHVQtu4MXNsF016vh0gksiuv0rnm6exfklMnqdc7Obn0szQk8vl8EASBrUKOZOA0TRPlchkTExMv5fk6nQ7bgg57VvQyQXf8dDp9bN9X0zRRKpWY8E/cSBIFJitcWres1Wrc1jgIJYpaI6ZpIpfLodVqIRaLsewcsNGPFASBVy4pu9R1HX6/n7/vzMhUVeU5gXODqNlssismBRznn263G8ViEe12G+fOnWOrXtIHpZ8lqpjH44FhGDAMA5ZlsQr9bs6zvV4PN2/eRKvVwpkzZxAMBiFJEqLRKCzLQjgchqIovAhBwynaVafvuVwudLvdp7L4nTBwqYCzfHkZF1w0GkWn0+GyY4RnB6nyjMShwfvcNGh0to9cLhcHClmWkUwmebOJtGlJBIMEfN1uNxqNBqrVKqanp59yTJidncXS0hIURUEwGGT+pDPrJ+ELGu7Q8zjbB3R8siyjUCjw8TvzLHKhdO6COzeM6PFIFOTnP/854vE4xsfHcevWLQ5ymUwGc3NzkGUZpVIJlUoFXq8X7777LhRF2bXlZts2C3f82Z/9Gb773e/i0qVL8Hg8+Oqrr1Cr1eDxeBCLxeDxeHDixAlIkoRPP/0UiUQCPp8PFy9ehCAIiEQiWFtb6ytwDlzGSSXey7zoaFXvMH3dhwXEdaQ1u+P8flIfkALRXnByF+myJFqU062RZOtmZmZYUR3AphJ3O6uLg4DK92f5HJ1TdMuyeAlh62OaprlpCKXrOhYWFnjnn76cknq2bTMBPhAIQNd1VKtV5uFS/9XZ56Qsl/qpmqZBlmUe0PUzyBzIwPmyBY2JWE8KKSMcHL1eD8VicZRtvgA4RTdoCKVpGnObPR4Pbt68ySK+zwv92knsBGLSkGAxLcHQsAnApn4jbfrQznk4HGaBY7p5AE9U6u/evYtQKIRLly5xm4AUkrrdLmet2ynAh8NhNqTbj5zhwAVOYENhJ5/Pv9SVR9M0sbq6OhoUPQNobZFOxBFeDqhM1jQNH374Ie+G73cavXXqTEshqVTqqZYADWB6vR7i8fiuqla2baPdbqPb7fJ2EPV2nVN80zQ3eQCFQiGkUqmnHpteb6/XY/K7ruvo9Xr4y7/8S7zzzjss3uP3+/f0HDIMg1W6EolEX9f/QAbOcrmMVCr1UnuORPOgddBRtrR/6LqO9fX1UcvjkLGysgKfz4fPP/8cJ0+e3OQ9XiqVMD8/j/HxcVSrVYyNjaHT6aBWq6FarSIYDGJ6ehqPHz9GIBDAiRMnuI/ohGEYWFhYgGEYOH369LbXqmma+PDDDzE/P49CoYB4PI6FhQXOBiORCLxeL6anp/Hpp58ySX18fBzT09Ps0Nlv9WLbNm7cuIHx8XGk02k8evSIWxuRSIRdPROJBG7fvg1BELC8vIwzZ85gfn4enU4HkiT1NZgeuOEQABZleJmBkzQLV1dXedI2Qv+gdsfIVG0w4HK5MD4+DkEQIIoil6n5fB7hcBiyLMPv90NVVbbUJVfJcDiMU6dOMXmf5POcoI0f2vneDm63G6lUircALcuCIAjodDpskEYZ4NjYGABgfHycd817vd6+qz/aOafnokl5MBiEIAhsO0IK/ZOTk0gmk/t+voHMOFutFtxu96GIDKuqytp+owDQP2RZRqfTwdjY2Oh9O2QsLi4ikUjs+jn0y1ohJTNKJKgP6fP5cO3aNSSTSVy4cIEDzk4i0CS4QQIqu+2q02CLVp/pMfvNOrvdLjqdDj8XfW1XqtMXTd77JdwPZOAkQePd1HReFGhti+gJI+yN4052HzTsReHZL2h1GQAHN1I5ciqt02ojiQfrug7btp+qHJ0Ba+twiILcVuGeRCKxrcL81vBFgZHaAaIoQlXVp47T6dMeiUT2PRwayLPc6/WycdPLhsvlQiaTYa/m0aBod1BvmHypRzh8hEKhFyZQQ4HN+fjOaT8NXFZXV7G8vIxvfvObSCaTvC1ERHriktLvU8AjGUjn+qXL5dpk5eGEaZq4f/8+i4NEIhHeVw+FQswIoOEZEeNpuk+Bm9w4x8bGju5wiFwPSRj1ZYOmgKZpPqX3OcJmjNZWR9gOtH9fq9Vw//593Lx5E4Ig4Pvf/z5+8YtfIJFIIJ/P4/bt2wgEApAkCblcDpOTk9B1HeVyGd1uF5Zl4e2334YkSdu27mx7w7fd5XLh008/RSwWw9e//nXkcjk0m018/vnnUBQFs7Oz8Pv9mJqawu3bt1nhqlAo4OTJkyym3S8jZCADp2VZKBaL7HlyGKDyc3x8fDQo2gG2baNer8Pn8/W1bTHC8QKVybFYjLNHMmN0uVxQVRXBYHCT2Dhlm06fdsMwWL9iu1YQleC0xrm+vg6Xy8XlN7UAnP1UahO43W5omoZutwuXy4V8Pn90M87DIMFvB1VV0Wg02MR+hM0Ykd1H2A2KomBtbe2ZpfJovz0QCPDgiKb5gUAAN27cgN/vx5UrV7hdRMImkiRxL9a5wUWmezRtJ2rUkSbAH8ba5U7HMSJ0bw96b2Kx2FPk6BFGAJ6vIj+w2eaGeqmkh0o903/4h3/A+++/j3g8DtM0nxo40WPQAImGRl6vdxNFai8M5HAIwI5eQS8TNCgqFosIhUKjHp4Dzu2OEUbYDi/i2qXHJEoUJTQUDC9evIhwOIyxsTGUy2W43W60222EQiHelw+Hw1haWmIeayqVQiaTQavVgiiKfUlaDmTgJLqAU3T1sEBahK1W66X4vR8FENl9NwuTEUZ4maDzcGpqColEAh6Ph1ttNKMgCpKmaeh0OggEAmg2mwiFQlz696vYP5ClOrBBD0gkEs/FSuBZMeIpbi67ZFmGKIqjwDnCwME0TTSbTciyzEIeu+2qk9kbbRolk8mjOxwCNjYWqHE7CFAUBc1m89gOinq9Hu7evYtut4tEIoFTp04d25vICIMPkpuj8psGRMQVpQwzGo0ikUhsK3O3Gwb2zCfF5kEBvbEkEHucHA2BjTJnYmIC3W6XS5sRRhg0ENF9fX2dN4PS6TRs22ZqEu3NkxpTs9lk1fx+K9yBDpwkUDoIcLlcyGazePToEYrFIubm5vpy2xwWuN1uxONxdDqdkXrUCAMDp/o8ldiVSgUTExNwu934zW9+A13XEQwGEYvFMDs7i5/+9KcYHx9HsVhEoVDA22+/jV6vh1Kp1Jc1MDDApbqmaWi1WqyaMgggdXPDMJDNZo9V1mXbNmq1GrsBjjDCIMA0Tdy7dw+NRgNnz56FKIr4m7/5G3z3u9/FxMQEq0JRtun3+9nEja5ft9uNVqvFZXs/GNjA2ev1+M4xSDiugyLDMFAulw99KWGEowsSCOkHpMJE2Kp+r2kaW4Crqsq+Ti6XC81mEzMzMxBFkVcrnW6YwBMbZNq7j8ViR1/kA3hi2jZoIG5ntVo9Fn7hwJNsc+QEOsKzoFKpAEBfCUe328XExAQrvFNfkgJqIBBgszUiv1MGmUql0Ol0oCgKr286Ze+cQZhEnklWjn5mLwxs4HQy/AftYg2FQmi1WlBV9VgQwImu0Y+J1Qgj7ASXy4VQKARVVSEIAiRJQjweZzO6Xq8HRVEwNjaGSqXCraFwOAyfz7ctTajX6+GTTz6By+XC9PQ0WwonEgkkEglIksSbQbqus+K9aZpQVRWWZWFsbAyKomBlZQUTExN9BfaBDZzAi9k8eB6gQVGpVDr0tdAXDco2R5zNEQ4KEvcwTRPVahWrq6vIZDK8HRgIBFAul+FyubCyssKBzuv1svXFbpidnWV1pFAohMuXLyMajaLb7eLBgwfQNI37n4lEAuvr6+h2u9A0DY1GA7lcDrFYDJIksZ3yXhjYHicArK6uYnx8fCCHMMfFBlcURciyPLLEGKFvOM3jaJf8L/7iL3Dy5El8+9vfhs/n2zSc2Urts20bxWJx36wVCmXtdhudTof7l2QMtx0Bno6RTOdisdjRVYAnlEolZDKZgZV1Iy3KycnJgQzuzwoahE1MTAzl6xvh4NB1HYuLizAMA/Pz8wA2lkSoH+lyuRAIBBAKhRAMBmGaJjRNgyiKfQUmv9+PTCZz4ONzEuApu3QKI5My0kEJ8AMdONfX1xGNRge6jyhJErrd7tB57ZBArG3box39EQA8ySRJsm1paQmGYWBsbIxV54PBICc6h3HOkAh5p9OBx+PhjNPj8cDj8WzKOA3D2OTVnkgkNtmE7IaB7nEO2vbQdgiHw2i1WtA0baiGJ5ZlodvtjuhHRxi2bUMUxQOxU4LBIPx+PwzDgKIoUBSFqUQ+nw+hUAgXL17cM0hS5tcvDWkr3G73rgZqVPV1Oh3Mzs4yPWlychLtdhv379+HqqoYHx9Hs9nEmTNnOOCTbTC9jlKpBK/X25dM4kAHTp/PN/CB0+VyIZfLDRXHkZTd+xU8GGEwYRgGarXatiZnu8GyLNy9exepVIrXFpPJJHw+3yZNS1mWYZrmnglDuVw+sPEieb07nTCdZm+GYaDdbsO2bXz11Vf49a9/jT/8wz+EIAgIBAKYnJxEr9dDOp1GLpdDKBRijqfL5UI8HofH40Gn09mXLfhAl+qKokAURWSz2cM+lF3htJDot7k8yBiR3YcDNDXWdR2yLCOTyWB9fR0ejwemaXJQTCQSqNVq6HQ6SCaT7AG029aebdv46KOPEIlEcOnSpW3PE8MwcO/ePaRSKcTjcaytrSGXy8EwDLRaLViWhUAggHw+j263i0wmg6WlJV63JhoScTe3OmE6LTFoQk89zE6nA0mSWJqSBkPO47csi1c1BUHga/fIl+oej2fgM05gI+tMpVJYWVlBJBI50oMU0tocTdGHA7Zto1wuw+v1otPpoNlswuv1Mi/X7XZDkiSIogiPx4NwOLxJAGM3vP766wCwYxmuaRqKxSKi0SgURWE5QrIvbjabCIfDsG0b0WiUeZW6rsMwDASDwad82J1Bk3zZv/rqK3g8Hpw7d24TIZ6WaJybQxRY6cvp7b4fzvhAZ5ymaaJUKh2qadt+QB4nR5nzeNzl84YJmqahVCohlUpxsOyn9WJZFprNJqampp7p+Sm0LC4ucvZqWdZTWd123yNUKhXe0HOW6KZpwjRNWJYFWZbhcrnwk5/8BKdOncK5c+cQi8VgGAbC4TBkWYbX62V7YL/fzxmvpmkQBAFutxudTgexWKyvffWBzji3pt+DDkEQ0Gq1oOv6QAgw7xdEdj8uq6TDDCpFP/vsMzx69Aj/7t/9u331qw/ak3SCsrhkMrkniX0nxGKxPalCFKBzuRwqlQpzv69du4ZarQaPx4NcLodgMAhRFBGJRPDFF18gHo+j0Whgfn4e586dgyAIWFtb6ytwDnTGOSimbfuBruuoVCpHsj/Y7XahKMqoTD+ioCSj2+0yATwSicDv98Pv9w/9Z2rbNlRVRa1Wg9vtRigUQiAQ4NLeeeOgEp74pbTX3q8m50BnnAD23Xs4bFDDvdvt9s0JGwRYloVGo3EkA/5xwtY8h64PGrioqopIJIJCofDUQGTYQbvwNEmXZRnNZpNXKUlijnqbgUCArYHHxsaY59kPBjpwUoN3gJPip+ByuZBOp7GysgJBEI7EoIjI7rFYbEQ/OgJYXl5GuVzGxMQEEokEWq0WXC4Xksnksa8WiDfaaDRg2zZ8Ph9yuRxnnXSjIVoTGbeJoohUKtX3BtFAB04ATJ04CgGI4Ha7kUqlUK/Xj8SJbFkWRFE8Ui2R44xIJIJMJsM2Lvl8fl/Z0jBha1JFQTOfz0OSJDx+/BiapiGTyUCWZZw4cQJra2swTRPtdhumaeLNN9+Ex+NBqVTiXuheGPjASdtDfr//sA9lX4hEImi32zAMY6CPnQZCqVTqWF54RwWUSTWbTdi2jbGxMQiCcOw/M9u2sbi4iHa7jdOnT2N9fR3FYhGpVAp+v5+n67FYjPud6XQa3W4XgiDANE243W4YhrHJfmMvDPRwCABarRbcbveRtGvQNA3VahUTExMDe4Lruo719fWBPsbjCpqMt9ttiKLIZHXa4BkkvOww0uv1oOs6FEVBtVple9/79+/D6/Xi/Pnz0HWdvdSdYsbAk+EQCSTTdlS/KvADHzjJ2jOdTh/2oewbRCYPhUK77tseFki+K51OD9We/VEHSbI1m030ej3EYjEeNA7aOUSg8vdlwDAMNBoNuFwunD17lmXjnO8N7aJLkgRN0zhA0nCIAmowGEQ4HEYkEhkO6wyC1+s9MAfssEE2GzQoGrSTXlVVuN3uI8k5HTY4qUTtdht+v5/LzUE7b7aDZVmYmJjgktfv928KVB6Ph6XdIpEIgI3gRhtCNLBxMgFkWUYwGIRhGAiFQlAUBW63G71eDxMTE6hWqxAEAV999RUA4OzZs/D5fKhUKjxhTyaTbAlMFCUngZ4m7evr63C73RgbG+urXB/4jLPX62F9fR2FQuGwD+VAoIuBGtSDchHYto3V1VXk8/mB1Ts96rBtG6VSqa+fJbpMKpVidsOzniumabKy+n5g2zYEQdiVCG6aJlZXVyHLMmZmZlCv16FpGn7961/jxIkTcLvdKJVKqNfriMVimJ6ehtfrxcOHD/H9738fHo8Hf//3fw9VVfHmm2/i4cOHqFQqsCwLkUgEH3zwAX7yk5/g7bffhqIomJqawocffgi3241qtYrTp09jbGwM4XAYnU4HbrebFeC/8Y1vIJfLodFo4IsvvoCiKLh8+TJUVUUul8OjR494/bNSqeBf/It/AUEQUKlUEI1GIQjCnu/RwAdOy7JQLBaPzNrldqAgNTY2NjD9qU6nM3DBfNhgmiaKxSLGx8f5e5SBOf8ENpYP3G53X1sr7XYb9Xod4+PjO2rV2rYNXddRr9eRy+Weev7tjodgWRZv4DgzM+eXruuoVqswTRM//vGP8Y1vfAPvvPMO/5/L5YLf70ev14PL5YKu67xvrmkaAPANmzyIbNtmbYper8frks69dOexr6+vb4oLlFWur69z8KffDQQCbPZGWpyU5ZI9x1BlnEdxe2g7iKKIv/3bv8Wf/umfHnqGRxqGU1NTI97mCwQFTsq83n77bZRKJQiCgOvXr2Nubg737t2Dz+fDG2+8AVmW+8p26vU6KpUK5ubmduxNLy0t4f79+/jGN76BpaUlqKqKU6dO4fbt21zuCoKAZDKJQqGAhYUFrK6uQtd1vPbaazAMA+l0mgOPU1iDglitVmNtzmazyTvnO4GGOf2A7H53Q6/Xw4kTJ556TgrApB1B1hjOHiwpLgWDQQiCAEEQ9tXjPBKBc3V19UhttNBQyCkga1kWfv7zn+O9997bVSg1EAjsWz9xO1iWhfX19W3/T5ZlHjoQstnskeLKHgWQSE0oFIIsyxwMqLdHVDuSV7Nt+7mxR0RRRKfT4R6p2+1mUQz6nCkgAk+yNVrPXFhYQCKR4D4l8MQbiGTa7t+/j2g0irm5uaeCKv0cwbIslMtlpgTthUajgdnZ2b5eq6ZprAtK1KJmswlN0zZN1el1Oz2Hhnaqbts21tbWeIXsKID6P/l8ft+/Wy6XdzSp0nWdNyJyudyOgY7KNJKH2wuNRgPxeLwv5esR+ke328XVq1dx+vTpPS9GRVG4v/m8oOs6lpeXEY1G9/V7FFRIHWlrGU8lrnPf26lWRF808AKAH/7whzh16hRef/11tNttxONxdDod5PN53L9/n4en7XabrVp20wN1Hs/9+/chiiJCoRD7B+VyOfR6PVSrVei6jlgsxo4GtVqNy/N6vY633noLwIZo8vj4eF+864GfqjvvlkclcAIbd/N79+6h2Wxifn4e9+/fZ31Rv9+PaDSKmZkZPH78GLquw7IsnD9/nnlp20HTNDx+/JhPxp3u3CsrK3j8+DHeeOMN3Lx5E5Ik4dy5c+h2u3wjymQyfFKdP3/+yGTzgw4KFp1OBx9//DG63S7efPPNPd9f4mc+T/h8PkxNTR2IY+k8t5zHTjfrfrJG5/P+m3/zb9DpdCDLMlqtFqutS5IEl8vFa6OqqiKTyUAURWYX7FUJzczMwOPx4ObNm2i1WigUCmwt3G63oes691ApqIuiyP1XMm8jlfl+MPAZJ7ChyRePx48M15BKNPqgPB4PU3/oJAgEAnziUGmTz+extLS0aZhwENDwIJFIwOVyQRRF3pxQVRWSJHHjncy1YrHYQJviDTros242m5BlGdFo9LlNx4cFxWKR+ZK7aXACGzf/VCrFbAOXywWfz4dAIIBAILApoK6srAAAt/Now8qyLPh8Pvj9flaQ32rWRqLJtCbd7676kQic9XodgUCA+V+DDsuysLCwsGOvkrKS7TLodruNubm5Zz4GTdOwurra15S21WohnU4PtT/8iwINIhqNBjRNQzKZHMhlh0GALMucYe4FWpcEnlwvTh90CqhutxsrKysIh8M4efIk94u9Xi9kWUa73WZ1pK32wKSOFIvFEA6H97VgcCQCZ6fTgWVZfQWBQQDpAu6U9quqClEUt/WNpg/0eRyDoih9lWmWZfHJNcqUdoau63zh0w50vV6HZVlIpVIIhUKj9+wlggKqYRgcUH/xi1+g2Wzin/2zf8aWxZRtAuBsl/qzRMonj6N0Oj08Gacsy2w2NQywLAtra2sDxRTYKoLr8XiQSCRGwcABURTx4MEDaJrGQ4SjtN1zHNBut5no3mw28eWXX0JRFJw8eRJLS0t4++238ejRI6iqim63i3K5jD/5kz9BNBpFuVxGLBYbDgI88GSafJAp9SCCKFYTExMDOfCiqTz5xQuCgHg8jgcPHgAATp8+feyoSzTwabVaCAaD7OMzCpiDhV6vh2KxyPxMmu4Hg0H0ej0EAgFWfQc2Plev14tutwtd11EoFPo6twd+qg480eQcFrhcLgQCAWiaNpADGTq+XC4H27YhiiLK5TIUReFS5iip8h8UlIW3Wi2IoghBEDA5OTlqYwwwvF4vpqamoCgKB0OiSTlzRGLr0FZRP95Gm57nRb2A5wmy+Rymi1UQBEiSNJCBk0DNclLnyeVyaLVaWF1dRTgcRiKRGEoBXeIpNptNKIqCeDzObZVhe63DBpqYq6rKa5XOibrz5yig6roOVVXh9/v7vikeicAJvHy9vxeNYDDIorRH4WKk3eNsNgvbtiFJEgtIxONx7gsdhdeyE2jQ0Gg0YBgGksnkaJf/iMEwDJRKJSQSCSQSCSiKgl6vxxY8qVQKnU4HpmmyrXChUICqqlhdXUWhUOiLT3tkAuewnbyURR81UNYVjUYRiUTQ6/XQarXQaDQQCoUQj8e3FWQYZBALotFoAMC++HwjHC5M00SlUoGu6xgfH2cJymg0im63izt37kBVVczOzsLtdvMQqNvtAgAKhQKvmYqiCMMw+gqcR2I4BGwIpZK3yrDgqBH7dwKdQqIo4vr16/jpT3+Kf//v//2+aVVEbn4W0Cpdv+j1eiiXy/B6vZicnByxCI4IqP+saRru3bsHURRRKBTw2WefQZZlfOtb32IRDxI6dt7MyayNyvRer4dEItG3M+2RCZylUgnpdHqg/Xv2i263C8MwkEqlDvtQngtEUUS1WuWMdD83OSqdaD/aCSqhaSq62+O22210u92+lyWod24YBjweT1+7/SP0DxIJJrm4gyCfz/Mk3El+d24TUYB0LpZIksS2IyQEYlkW3G4386UjkQjrNOynh31kSnXaPR0mhEIhdDqdI9Pn7AeRSAT1eh31eh2zs7NotVpot9u8Yjo2Nob19XUkEgme1Nu2jUKhwHYHW2HbNh48eIB2u40zZ87sKISxsrICTdMwNTW1aUeZhG6JeiIIAvx+P+9Ni6KIEydO7Pnatk5lR+gPqqpiYmJik8rSVlBAo5+hNtbq6ipWV1e5GiEpPOfNc21tDbIsI5/Pw7ZtlMtlmKYJn8+HaDSKRCKxKeN0uVzo9XqccXa7XTSbTXi9XmQymeHqcZIE1zBh2GhWwMYJX6/XWbmf5M1oLz4YDCIUCkEURc4eKFPo9XpQVXXbx52YmMD09DQA7PgzJFoyPj6OhYUFxONx1sQk6wVS3iFuMNkpeL1e1Go1AE/k1kh4l3q2vV4P165dQzabxfT09J7akwc5X10u13Pvrzp5i3uBrFT2en7LsliecLvqgqbboigCAB4+fIgbN27g9OnTkGWZb5rRaBRnz55Fs9nE7OwsvvzyS3i9XoiiiEQigampKXg8Hu5Db/fZr62tQVEU/PCHP8QHH3yAM2fOwO/348aNG5BlmW+mmqYx9eiLL75APB5nkZt8Pg9VVVEqlfg82w1HplQftrKWMEwtCFEU0e12eTXWNM2nLiinypXz4jRNE61W65mU/omkrmkaotHoJpGVvaCqKgdWykboyymV1mq1IAgCIpEIB1jnl9vtZoWrg+yst1otnDhxYkf1IXpN9N7289rq9Tp7sPfz/PPz80+pwlNPkZ6beouqquLkyZOcBND7BGxI5f31X/81vvvd72Jubo6DKLBxc5IkibM7QRDg8/nYV0hVVZaeI0Hl3UAScnQTTiQSfGMmziapwnu9XrRaLZimyUZtuq6j2WwiEAj0taF4ZAInEVqdNgDDgHa7zR/0UQeJXewVLNbX15lwTKCTup91t91AIrYH8dnZekxb/59AwYMGDNR/pYDyP/7H/8DXvvY1vPbaayyNRgFX0zTel85ms2g2m/B4PKjX63C73RAEAalUatdAsbq6ynYye3lxlctltkghu1zTNBGLxVAulyFJErLZLMrlMt9s6DPYyp0mAWPKwC3L4ok0BfHtBIwXFhYO/Ll2u13Mz8/3JWMHPHEIpRso9Ty39i+dNwLK8mOxWN/rs0eqVB+2shYAwuEwqtXqUCgTeb3evm5syWQSa2trewaIg8Dn872Qm+tWTcrdRKT/w3/4DyiVSqhUKrh37x5OnDiBarWKTqeDSCSCTqfDNJhKpYJAIIB6vY5sNgvTNFkrYCeEQiGcOXMGwIYAzm64efMml99ra2vweDys2kWZcbfbRbfb5WUMXdc5OFIW7VR4pwD52WefIRaL4dKlS5uOl94rClqWZfXdKtgK0szcCc7gR1/UCyVyO6kibQW5b/r9foTD4X1pDhyZjJM0Lo+yadt2GBZPpf2AlJsajQYmJiaG8nUvLy9jbGyMBxGUrTmx3VCwXC6zEO/zgG3baDQa8Hg8CIfDnHzsxLMtFovc43MK/241a3Manjm/gCdcX03T8NOf/hTvvfceTp48CVEUOaOnQErHRX5LNMjTNA0+nw+apu1q62KaJm7evIlOp4OTJ08ikUig0WhwIHQq1gNAPB5n5TJVVeH1ehEKhSBJEhRFwcTExPDsqgPgHsUwTaAJNPg6bBO3lwWXa8PzWhAE1Ov1vqW8jhKi0SgT6vuFZVmo1Wrwer2brEye5b1xuVwQBAGNRqMvo7SttJz9VARbe6K6ruN3fud3YNs2Hj58iFu3buH06dNotVpoNpuo1+uIx+OYn5/n3uKtW7c46GazWaTTaZRKpV0zfKIU/eIXv0AwGMR7772HdDqNVquFq1evQlEUvPbaaxBFET6fD48fP+Z+a6FQYBWwcrnMjpt74chknMOcmVGf63n6zRwFEHWEvKyH7XM9CCjgdDodKIrCgr5URm8d2gz6e0bXLVWKmqbxUI1eB7UGqD/qFJFZXFxkJ81gMLjJ7I1+jm4IlM3SMIx+hwjw9DvAE1+lXq8HWZY5YKZSqeEiwA+6FNuzQNM0NBqNZ7bMOIqwLIuN7YaBWfA84Rx0kAhFPB5Hs9nEysoKzp07N/A3W9u2USwWD7xebFkWxsfHWayYhIcBsLLR3bt3EQqFcPny5U2BV5ZldDodJsDT71Fv00mAp42xoetxAhv9l1wu99z6P4OCYc6m+4Gu6yiXyyzZNsLToCDabrfR6XTgcrkwPj7+XMr5owYKWc6VSdoM+vTTT2GaJt555x0AGxYclKXu5DlElKX9qPgfqQhEXLFhC5zAcL+2veDz+ZBKpVCpVJDP549VEOgXRJkhnVRVVdHpdFCv15lK0w9xfRhAr9Hn88Hn83FP0rZtZiiQ4Mfy8jLr3kqShLNnz6JYLKLX60EURYiiiN/6rd9CMBhEqVRCNpvti+96pK5SGqI8D0+eQQINS2iT4riBBhiKoqDVarE75whPg94X6t8B4PdN13UEg0HE4/FjaedBEoeKokDXdd5j93g8yOVyrHyUSCTQ7Xbh9/shCAI8Hg80TeO1z76e6yiV6u12G8AGpWDYoKoq2u02xsbGDvtQDg22bTO/c6RStD/QZawoCtrtNgzD4FVSoubsB8/rvX9e4aXf46HV3WazCVVVWQhku1LduRkWCoV4p33oSnWv17vjnvJRh9/vh67rQ0m36hfUt6Mh4HFsWxwUdM6Ew2GEQiGeNv/4xz+Goih49913+wqehmFgdnZ2z5/bGhB3O2eXlpYOvOigaRpmZ2d3pSNtPQ6v14tEIgFRFNmSmAIkXV9E7g8Gg4hEIuz3PnTqSMBwCn0QaKLX7271sMLj8WBsbIyXHY7rTeRZQOdSOBzGH//xH6PRaLC6EGVkgUCA98JpwyYUCqFerwPYO1M0TROPHj2CJEm4cOHCtkGZqFVut5tV1ikDJEI6BTpJkhAOh/mYiLYkiuImcv12z7GwsMA79pFIBOvr69z+SiQScLvdMAwDLpeL99Kd9hput5sFXvL5fF/l+pEq1UlxZ6/93KOKWq3GxPDjDBLrIJvXUfB8NtTrdTSbTTx48IAdS1OpFB4/foxisch77IlEAslkEsFgcM+bt2VZkCQJHo9nx7aKLMv43//7f+N73/se3G43rl69iosXL6LVaqFSqXA/+/z58zBNE5OTk/jiiy/gdrshSRKCwSDOnTu354prt9uF1+vFRx99hFAohG9+85vI5XJoNBr44osvIMsyXn31VbRaLczNzeHOnTus7KQoCn77t38boVAIlUqFOcV74UgFTsuyWNxgGDGsQiYHAQnghkKhvlW5R9ge9Xqd1dBpzZAI507uom3bWFxc5FIfeCKxR2IeJLXncrlw584dBINBnDhxYsfPxzAMXiN1rjk6s04a5DjFOEj9aW1tDcFgEOFwmDVdtz6XYRgAnmTa6+vrsG0b4XCY+5s+n4935ynrpnVSwzAgiiJrLfSTcR6pUp1K2WHtAwYCAdRqtaF9ffuBy+VCNpvdJGI7wsHg8/l4lXMveL1eTExM8L9N02S+oyRJMAwDpmmyPqbH40Gr1eLA6uwTUllOJHhgs5o/7bwDT5SXnIMcAKz3SbJvFPBInCMYDOKrr76C3+/H66+/Do/Hg/HxcaYb0ZDIMIxNsYNuCKFQCJFIhG15hpIAT9tDw9r7GubtqIPCMAwUi8VN4gvD+Nm/SBzkEt9LkQh4srboJJJTYKPgdP/+faTTaYyNjT015SYFJnpMp0wfSdYlk8lN1Cp6btM0oes6NE1jJ0vbtvF3f/d3vKtu2zY8Hs9TwdipK0pB3O12sw320E3VKRUf1oyMJLGIsDvCRgaUzWbxj//4j0gkErhy5cpoNXOfeN7XilMAhFYXCRTYKBBWKhVUKhXMzs4imUzi8ePHUBSFS+5Go4FTp04xD1VRFITDYUxNTcE0TayvryOVSj1lP03C0eFwGMlkkgdIb7zxBlKpFPL5PNbW1tDr9dButxEKhdDtdjE2NoZwOIzHjx8jGAyi1+thamoKwWAQrVYL5XK5r9XnIxU4gScbNsOakQmCAEmSRoHzn0DT0cuXL8OyrGOjIHVU4SzT3W43Lly4gFKpxBlfr9eDpmlIp9MwTXOTeAmV/k4rjn5ttOl5x8fHEYvFOD7Q4MjlciGRSCAWizHtzzAMRCIRBINBpif1qxt6pEp1YHv18GEC6Y4Oq07lQWHbNkqlEmKx2EhJ6QiBKEnNZhO6rvOghspnZwnutOyl8jmZTO5rGcKyLDSbTUiSxD1Tpz0wPZezzUC6ooIgMH1pLxy5wNloNOD3+/u2fz1qGPU5d4ZlWVhZWUGhUBhlnkcMW3uTtLXjFD92TvC3ysDt97mILtXpdCBJEnM3ncMhWrl03oyHcjgEbFgFmKbJ8v/DiEqlgng8PrRZ9bNgpKQ0wm6wLIvdTslRlW6yVI7TNJ8GWuTYGQqFkMlkhm84BGBffYijCrISGAXOp+Hz+ZBMJkdKSiMAeEJvAsAbSC6XC5OTk2g0Gvj0008hyzJmZmagqirOnTuHO3fusDZEvV7HH/7hH2JqagrlcpktPPbCkcs4yQ87n88f9qG8MPR6PVQqFRQKhVFg2Aa2bTMvcaSkdLzR6/Vw48YNNJtNXLhwAXfv3sXCwgJ+93d/F4IgMMne7/fzMIoGVMCTFoEoijAMA+Pj48PlOUSgqfow4zi8xmeBy+VCJpPhrZJgMDgKngOMZ3G5JOvhrT1S8kzXdR3RaBSZTAZutxtTU1M4deoUYrHYJuV36m8SaOpP0nM0cB5KkQ/gCT1hWLmcwJONC8MwRpzFHeByuZirN1JSGmzIsoxarbZvDQbidUYiEZ580/CIbC+ctuFerxeZTAaWZaHdbjPtiIKvM17QuiUFdXrcndw/t+JInm1HrLtwIFCfcxQ4d8ZISelowLZtRKNRDlJOZSYA7PtOdsDdbhe9Xg+ZTAaKokAQhE10IufjGoaBzz//nM+FQCAAXdeRSqUQj8chiiJ6vR68Xi9EUcTExATa7TavjHa7XZw5cwaGYWB1dbVvxsaRDJzARm/DubI1bAiHw6hWq4jH46OAsANo0yoajaJarSKbzY7eqwEDVYeGYeCLL75AMplEPB7H48ePEQqFIMsyMpkM0uk0fD4fWq0WS7wlk0mYpglZlnd9jvn5eQDA559/Dr/fjwsXLiASiUAURSwsLEDTNJw6dQqyLMMwDDQaDXS7XZ6ou91u9nTv16b7yA2HAODOnTtYXFzExYsXMTU1ddiH80Jw3A3c9gPbtlGpVBAOh0dKSi8JRCAHwOuTThM1TdOgqio+/fRTLC0t4Y/+6I94f3y7FhStTDoTIVVVIcty364I9PzdbhetVgsej2eTpfBOZm2qqsKyLCQSCUQikeGyB3aiWCwiFoshHA4PbcZJmzLZbHZE9u4DZDNM5doILw60DXTt2jW0221cvHgRLpdrUx8yEAggGAxyQOx0Ovu+Vm3bRjwe33dv1Gkj0mq10O12eUhEsxFSf49Go5vsgfvFkQyc1WoVgiCwNeqwotVqsQHVCHuDlJQmJyePtYo+gaTbDgIaUBLI15ym2aRgRMLbTq3MnQIQrVT2A9oi2gu0qkm/A4CDJcnGBQIBzjZpQu/MODVNg2EYiMVifbfGjmSP0+fzDa2FhhPhcBj1en0UOPsETVVJOPe4l+xra2sHtgxut9sccABwFikIAlKpFAt20P/18xyVSoUz0r0gy/KO3kfOXK/X6+H69etot9s4ceIETNNEJBLB1NQUms0mbty4AVVVMT8/j2aziTNnzuDhw4cwDAOdTgcA8P7778Pv96NUKsHv9/eVkB3JwOn1eqHr+mEfxgsHUZKGmXr1PEE+O6qqotFoIJVKHev3jTQmm80ml6aKonDwEgSB7StarRbcbjdarRaXrz6fb9ueH2lZ/vrXv0YkEsErr7yy5/tcKpV4Uk49TkmSkEwmUa/XmTbU6XSYflSr1TbRhpxcTLombNtGLBZDOp3GwsICOp0Orly5glarhVAohPPnz8OyLAiCgHw+j0AggNOnT0OW5U3ZcavVQq/X65vFcmQD516TtmEBkeFHPMX+4HK5kEqlUCwWIcsywuHwsQ6eq6uruHbtGq8c0tQ6Go2iUCggmUzC5XLh4cOHsG2btWDn5+ehKMquxPVTp07B7XazwdtOsG0bP/nJTzA3Nwdd17G8vIx8Ps/9T5/Ph8XFRTSbTfh8PszNzUHTNKYu0b65c8DjhKIocLlcmJmZ4efrdrtoNBowTRMulwu6rm/6PXpues2CIGBqamo4fdUJhmGgWq0OrWmbE41GAz6fD9Fo9LAP5UjBNM198fKOCnaz5aX/0zQNv/rVr5BIJDgbJDdHZ++XnB+dXj+Eer2OWCz2XHRh6bjK5TISiQR8Ph9LzAHYNlgtLS0hl8ux7NtWe1/qgfp8Pty6dQvBYBCXLl2CYRjMgaY1yq1bQ873jraHotHovm6yRzKN8Xg8fYmbDgPC4TDa7fYocO4THo8H+XyeyfHDxL5YWlri15XP56EoChRF4U0Z6jlms1msr68f6DkoE3wecHq+1+v1voIT2VhsPSb602mzce7cORiGgZWVFfz3//7f8b3vfQ+zs7MQBGHTIMi2bSSTSaiqyrqf1MKQZRn1en2TRcuur+koZpzD7j3khGVZWFtbOxav9XmDSrYHDx7g0qVLR3YLy7mnraoqKpUKO0MKgsDyaU5vHuD4eTPZto12uw1N05DL5dBqtfDFF19AURS89tprqNfrmJycxOLiIkRRZLuO73znO4jFYiiVSn3Tn45kxgkcj7VL4InPEjn7jbA7tm6a2LaNjz76CH6/HydOnNj1d0Oh0HPtJdu2DVmW+66OnLxk0zTZiIwI2pQdFQqFfe1VHxcQda9er2NlZQWBQABvvvkm2xqTDOGVK1dgmiabtSmKgna7vS+K45HNONfW1lAoFIaqBNsJtVqN+XIj7I52u41ut7vpvdpuK2UrNE2Dx+NBNpvd8Wd6vR4PIvqx7zBNE4uLi0ilUnsetyiKME2T/cZp62UrD3GEvUGfNwVEURShqirbGhMBntZ1STR8PwrwRzLjpKYu7ZkOOwRBeCoYjLAzBEGALMvQdZ3dDYn47PF4EA6H4ff7oSgKms0mNE1DoVCAqqqQJGnHxxVFEXfv3oXb7caVK1d2rQBkWcbi4iIymQxUVYUoihgfH0er1UIwGMTi4iImJyc50E9MTMDn8yGTyexpg7xVHm2EJ7BtG5IkodlsAgACgQByuRzbEROFyelvRH3XZDLZ94DoSAZO4HjRdAKBAGq12ojP2Sd6vR5u377Nu8erq6vMYUylUkgmk/B6vWi1WlyueTwe3ozZCW63G+fOnYPb7eZp707odrtYXl5mtfp6vY5wOMx+O6IoQtd1hMNhFItFWJaFbrfL2SbZ3zq/KOssl8tYWlrCuXPnIAjCU1SbFw0SV9mPgdpB9Dht20YgENj1BmWaJpaXl6GqKmZmZmCaJtrtNgqFArrdLh4/fgxVVZFOpyGKIubn57G6uoper4dGowHLsvDuu+/C5/OhVCrB7Xb3xSQ4kqU6sEGXCAaDxyILGxm49Q8aDsRiMc4stt5ct6P0KIoCwzCQy+Wey3HQNHdlZYU5iyRvRs/pRKfTYRNC6r/R1JhWJ4kErigKZFnGp59+irm5OVy6dOml9r/b7Tamp6e5d0v91p0giuKB9Th9Ph+3T4h473x/dF3HysoKv0+/+tWv8Ed/9EcsjlOpVNDr9ZBIJGAYBpLJJERRZLk5y7Jw4sQJJtxT/3gvHNnASZp6iUTisA/lpWB9fR3RaHTkt74HDMPgMm0vWJaFUqkEQRAQj8efu0Gebduo1+t9D4eSyeSeFCAnJYc8csbGxrjcjMVikCSJt3OI09hoNHD27Fl4PB6Uy2V0u10UCgUoioJut8tiv4lEAvfv30ehUIBhGLxMQBl6PB7nrSPy7nn99dd3fN9qtRokSeI+r67r3CZxtiRIwUjTNLTbbSiKgvHxcZTLZV45drvdbLjmzMo9Hg9TFOlG2Wq1uHpwZuwEUneitdFQKIREIvGU4PFOOLJ1rtfrhaIoh30YLw2CIECSpFHg3AM+n29fWWMul0O73Uan00E4HD7wbvd2IIuP5wk6NpfLhUKhgFKphFarhRs3biCVSsHr9aLb7aJWq7H6z8TEBNbW1jA2NsaEcZrUr6+vo9VqQRRFhMNhpu1QIPJ4PFhbW4Pb7UatVsPMzAxSqRQkScLMzAw8Hg9UVd2xxXH//n20Wi28/fbbrMeZSCTw+PFj5k9mMhlkMhn4/X5Uq1UAGxl4IpFgJsHWYElB1OVy4caNGwCA8+fP840nFovB7XYzx3UrgZ4CMG0mRSKRvoMmcIQzTk3T0Gw2h9q0zQnTNFEqlTAxMTHqcz5nUFndaDSgqioymcyR8TEqFou8jeMU3SBQie/1eje5QdIaopP7SXJxfr8fvV7vqY0i+rNcLj9larbbIIum2olEgjO9fvU4O50OUqkUZ4fUtqDXZds2ms0mPB4PDMPA1atX8fWvfx3hcBjBYJAVm9xuN3Rd5z146rvSwoAoirBtG+Pj4321w45sxnncDM3cbjdf4HQyH4UL+yiAVvgymQx6vR6LS5AW6iC/z9FolOUHXxR0XecNJMrQTNPEp59+CkEQcOnSpR2f3+VyIRgMcha8H1Arbqcqi3K+qakp5sz6/X4IgoCxsTE0m018+OGHUBQFZ86cwdLSEt544w08fvwYsiwzBe2dd97B+Pg4KpUKW3XshSObcdJGzbAqwG+HYrGIGzduYGJiAhcuXBjoC/oogzKvarXKUnX7KeOGEU5BDCLlt9tt+Hw+FgIOBoN7UqleNCzLQqVSgWmaEAQBfr+fy3vgSQLizFo1TYMkSfB6vcjlcn1lnEc2cB5Ha4lut4tOp8O8tOPyug8LRKKu1WoIh8OIxWJ49OgREokEb6EcZ1AFpOs6Z3BU4pMCvCiKzBQ4CNxu977tUCgwSpIEURR5j5+OgUp3v9/P/U1BEPZ1czyypTpw/Mi/oVAInU5nFDRfEkjfc2pqCt1uF2trazAM47lO3o8yqMURCoUQCoW4dKYsrtFo4H/9r/+F9957D+fOnTvQc9BNaye+NvFfLctCNBqFx+OBrutoNBrMzyUmwHaeQ4Zh8BQ/lUr13Zo5shknsKE1uLVJPcw4jln2IMGyLJ5Ap1KpvtYujzMotKysrCAYDGJ5eZlZBs1mkwnu+XwelUoFk5OTWFhYgM/nQ7fbBQCMj48jFovteI1bloU7d+5AlmUEAgGmlY2NjXFvVtd1xONx6LqObDaLarXKGammabhw4QLcbjcqlQqLHe+FI51xOikTxwHkA6Pr+siQ7BDgdrvZ3rZer6PZbCKbzT5XCtMwwel8KUkSU4OodG40GhAEgbNFTdPgcrm4/xgOh3lxYDecPn0abrcbd+/eZWcIGp52Oh0YhoFIJLJJl1OSJBZSAbBvLYAjnXFWq1VEIpFjxW3sdDowTRPJZPKwD+VYgy5o4h1mMpmBn8AfBmzbxuLiInNrnawQwnbfI6yurvLapdfrhd/vRzAY5KEPsKFP6nK5WHdVVVU0m032SKef3WlX3TAMeL1epFKpvm+CRzpwkpfKcRL5JfX78fHx0UU6AKBJc61WY5GOkZLRE5Am6m57/bvB7XbzdiD5tdMXDXvW19cRCoUwPT0N0zTZcVOSJHS7XR5cbVVHIuoSqb/v53M70oGz2+2i1+sdq+xr1OccTBCPsF6vQxAE9vIZfUYvDhS6KKCqqopf/vKXWF9fx+/93u8xRYq2iWhbiGhIqqpyQFcUBYFAANlsdvgzTkVRIIrirhqKwwbbtlEqlZicPcJgwbZtdDoddo8kKs0ogD5pb5CPea/X4+BHE3qfz8cZI31/P+h0OlAUBblcDo1GA1evXoUsyzhz5gyazSbm5+dZMSkUCkHTNLzyyisQBAHlchmxWGy4CfAAWNFkfHz8sA/lpYI2RUZ+64MJIos3m0386Ec/wltvvYUzZ87s+XsvqsQn+k0/eBFbabTOKssy74eTayU9F/UddV3nwOr3+5HJZPYlHWmaJorFIgucOM3daLhK3FPSaLUsi9WS+mXpHOmputvtPlZrlwQyvYrFYqNMZgBBwSCZTGJ+fh6iKKJcLu/6O6qqIpfL7dmv383lcie0Wi20Wq2+5NIURcH8/PyeP6frOh4/fgxd13H69Oltd89JfarX6yGVSmFqagoPHjxAs9lkSpff70c+n8fHH3+MbDaLVquFiYkJtjNeW1vD9PR03+e5x+PB5OQki0eTMRv1NymQbs1wE4nEvtgRRz5wOt+M4wKfz3fgZvsILw+2bWN2dhbpdBq6riMYDEJVVfh8PvY2J4WvZDLJvbe9UCwW2axwL4tsCh6knETlMrmnkuCGLMsQBAGGYUCWZQ58Th1Q+h6Rx4lrWSqVOHvbeh3+6Ec/wttvv80k+Xg8DlEUeWMnHo/D5drwRLcsCzMzM8jlcuwdtV+hcspcZVmGqqqbxJCd2a3ztdHOus/n6zvrP9Kl+nEdlNi2jWKxiLGxsWOhgH9UQWXj4uIiyuUy3nvvPZZ7+/zzzzE2NoZ2u41wOIwrV66g3W4jEons+bgUUEiHcjf85Cc/QTwex5UrV/Do0SOEQiGWdnv06BHW1tZYET+dTvMwhf507np7PJ5NiknlcpnL6e3cNZ2hRZZltNtt9nf3+Xz8eMBmkeJerwePx4NoNLpnj5iWEkzTRCKR4BlAKpWCy+Xim0MgEIBhGMhkMkzpk2UZoVAI2WyWKUyFQqGv2cGRD5zHVRm90WjA5/MdKyrWUQNJAY6Pj3NmEwqFNinBA0+k1wBwBva8YFkWms0m9/w0TYPb7eaA67xuXC4XlpaWkM1mn5Jxc2pZ0q73wsICYrEYZmZmuGfpzOzotS0tLW16vSQt58ywqXSmxyBomobZ2VnOaJ2PQb3KO3fuoNvtIpFI4Msvv8Q3v/lNzMzMQJIk3LlzB5qmYWJignuYJOTscrkwPj6OsbExDrjpdHq4rTMIJNB63DIvVVXRarWOjR7pUQRZZ/RzU9d1HbZts+vi89xGIuuKfjfsJicnn3puZ5hwqgs5A+zWIKsoCv7mb/4Gv/M7v4OLFy9CURTONmkbiP7d7XYRiUQgyzKT2N1uNzqdDmemW4M3fZ/KbF3X0Wq1kM1m0e12WWyE1OW37qo7aUy2bSOZTPa9RnvkA2e5XEYymTx2K4jHtU0xzLBtm+XadF2HIAiIxWJHTtSFQgoZp3W7XbRaLXz11Ve4cOECWq0W1tfX0Ww2kUgkcO7cOdi2jUKhgKtXr8LtdnM74sqVK0gkEptU4AkUBFdXVwGAK096fkVR0Gq10O12WbnJSYAnhXySxaPH7AdHPnCSekq/RvLDAvufvOWPk8jJcQENPCVJQqfT4Uw0EonA7XZzdkc+QYMMusFPTEww6Zx6plSmkymbsw1AAW5tbY1V6ndqGSwtLbGpW6VSwezsLBRFgc/nQygU4veJ7DacK5eqqvLaZSwW67tVcuTrW6clwHECKWurqnosnD6PEygoULC0LAudTgfFYhEejweiKKJSqeDKlSuIxWKHfbh9YW1t7UC/Z5omcrkc3yC2tgwsy0I6nWbdgOXlZeTzeUxNTaHZbOLmzZtQVZUHQCdPnsTS0hIMw0Cn00Gz2cTv//7vIxQKoVQqcS94Lxz5jFMURWiahnQ6fdiH8tJBDoXPy9J2hMGGbdswDAOtVguKojC9x+kbNGh4XuGl39dnGAaKxSJisRgCgQBrdZIKUygUYuFlYKPHGovF2DJ4YmKir3nJkQ+c1BMaGxs77EN56SD7kO2a+SMMN2j4QhSfSCTCupXH/VygTSDaBgI2u4NuDXkejweRSIRbIf1gKEr147g9BGzmyx33i+W4gdTpSXnduZ0Ui8UQiUSO9Y781tfuVKffyjmlXul+3qsjHziJpnAc4exzHrfh2AgboAs/FoshGo3CNE10Oh2srq7C4/GgXq/jwoULAz9EOiho4GTbNoLBIA9NKYMkP3UaLiWTSYiiyHvxuq4jFotBURQ0Gg0UCoW+SvUjHzhdLtemSdtxQzgchizLo8A5AtNsUqkUkskk7t+/j7/927+FaZr7ngH0ej1MTk7uuN++tdwtl8svfUhrWRbGx8dx69YttNttFAoFPHr0CK+88gpSqRRarRauXr0KVVVx7tw5rK+v4/z581hcXGQTt3w+j8nJSYTDYQ6kx6LHSTyu49rno+2UiYmJY/n6R9gZKysrKBQKnFjQrjrwJFOlQGGaJvf/er0eRFFENBrdcYtG13U8ePAAmqbhzJkzaDQaTDmyLGvb5zIMA5ZlMeeaSOi04mhZ1qYeo6Zp8Pl8ME2T9RkoUXK5XFhcXGRGid/v53bFyZMnoaoqO23Srvp2BHjDMKAoCjRNQyQSYR3VvTAUGSe9GccxcBxXoZMR+sODBw/wySef4OTJk7w73263EYvFcPLkSbhcLhQKBVy/fh3ARuaYSqXw2muvYW1tbcfFEvLrsW0b/+k//Sd8/etfh67r+M1vfoOZmRl4PB4Ui0U0m01ey7RtGw8fPsQf//Efw+Px4O///u+hKAreeustPHz4EJVKBQAQiUTw3nvv4e///u/x7rvvQpZlzMzM4Ne//jU8Hg8qlQrOnz+PmZkZTExMoNlsAgBOnDiBubk5vh5oeFapVFglybZt3jZyEuCJmXJsCPDAhlrMcRb2rVQqiMfjI9vaETZhZWUF2WwWhmFA13X2Eqd9dcMweB3RNE3O9lwuF0RRRDAY5CHTTiDl+0ajwc6Suq7D5XIhEAjw3+m56HmBJ3vymqZBEAQmpdPjhkKhTWuadGyUPa+srCCRSOD27dvw+/2Ym5tjm992u83HQEIlTgI8KTxpmsbrrqlUCuFw+HisXAIbniOxWOzYBo7jzGUdYWesrKwA2L+KOrDhAhkMBrm89fv9bEVBPcC1tTV4vV6MjY3x2uPLrHoURcHExAQH3NXVVXz88cf47d/+bczMzKDb7eLBgwdQVRWZTAatVgvnzp3D2toaer0eZFlGKpVi/dFSqYRMJnM8RD6ADaUgv9/flyTXMKLX66FSqaBQKIzK9REYVLIeFHQukQqRoihc8rpcLiwsLCCdTuPMmTOHNrXfqsSk6zrK5TKb5tVqNfR6PcTjcf5TkiRIkgRgQweVBqy1Wg0TExPDLytH6HQ6sCyL3fCOG0aCHyO8TFCpq2kaD1Z6vR63AtbW1nDmzJmXZtu9la9pmiaazSZUVQWATVqiBKe0HQCEQiEkEom+FwiO/HAI2HhjaIXqOIJKKV3Xj51K1AgvHyTp5hTXWVlZ4Wn8tWvXYBjGC/cC03Udc3Nzm0jtdGwkgKyqKhRFeUoghAZE1IKIRCL72roamsBJTeXjCio3RoFzhMPC5OQkNE3D5OQkAoEA+/xQkCI7XqoMyR+d9sgNw9hk4NbpdBCJRPhnJEmCy+VCr9dDMBjkMvz27dvodrs4c+YMYrEYqtUqy8YRvYiCazAYhGEYm7REfT4fGo0G80L7WbscilLdNE2Uy2VMTEwc9qEcGgzDQLVaxfj4+KhcH+GlY2VlBZqmMR2JrDVqtRpisRimpqYQCATw6NEj/P7v/z7cbjf+4R/+AZqm4fXXX8ejR4+wvr6OXq+HSCSCr33ta/j5z3+ON954A4qiYHJyEh9//DHcbjeKxSJOnjyJqakpBINBSJIEj8eDjz76COFwGN/4xjfYHviLL76ALMu4cOECGo0Gzpw5g/v37zMTIBAI4Otf//rxsgcmHHcSPDDqc45wuFhZWWGLEKIg+f3+TZqbZI1B/M9AIMDizYIgcO+UhjyCILCgMVGJnCV5qVTC5OQkdF0HAC6119fXYZomwuEwW3oQId9pWEc+R7quQ5Ik+P1+5HK549PjBJ6ffNVRBa3bOTcxRhjhZYEI7wdFp9N56nvtdnvbnzUMA/V6nXf0b926hWAwiMuXL8PlciGfz8M0TUiSxBJ8VJ47j5e0NyORCAqFwr6EPkYZ5xCh1WrB5XIhHo8f9qGMcMzwssMI9URVVeXeqWVZ+OEPf4gPPvgA2WwWwMb8g7LOnVYuiV4VjUYRi8WODwEe2CDj5vP5oVWB6Qe6rqNeryOfzx/rG8gIxw8Uxq5evYrx8XHkcjksLS0B2FgQIQWkWCyGWCyG+/fvs7LYzMwMkskk2u02VFXd06seAIbGU9ftdh9bXU4CCSGMMMJxAyUKuVwOoVCIW1eSJMHn87HjJfVS/X4/3G43stnsgfjfQ5NxVqtVRCKRl0a6HUTYto1isXgs7ZJHGAHYKOHb7Tb71Pt8vm1LdbI3NgyDkw0q1fuhIw3N1TXicm7cdUkYIRqNHvbhjDDCS4fb7UYikUA4HIYkSRBFEZ1Oh4dDRIAnL/ZQKARBEBCJRNhpsx8MVeAclamAIAhoNpujwDnCsQNJydVqNVZEyuVyTMI3TZOpSRRIdV2HZVmo1+swDAPZbLavqnWoAqeiKId9GIcOWr0c6XOOcBxAZTeJJ1cqFUxPT8PtduPq1atoNBpwuVzIZrPwer2Ix+Pwer349NNPWSX+0qVLmJqagmmaWF1dxYkTJ/Z83qEKnMd9OEQgH6bjzDAY4XjAsizcu3cPjUYDp06dws9//nOcPHkSly9fxqlTpzYR553rnN/5zndY2BjYUFiTJAmpVKqv5x2awDmaqm+A9nEVRTm2MnsjPA0KEKQI5BS8oI2e/To97gWnkdqz6kzwyQAAgqZJREFUgrRBe70e77iTKlMoFML8/Dx8Ph/efPNNzM3NAQBkWYamaczxpC0mCp70umna3q9tBjBkgXNkIbEBQRDQ7XZHgXOEp6bMziAJPCl1aQXR7/cjkUggEAg883WkqioqlQpisdgzPQ5ZYMRiMXi9Xvj9fgSDQf63pmkAgEAggFQqBVmWeSDkdrsRDoefUj5yvm5aAXW73X2zcoYmcAKjtUtCIBBArVYb3USOOWijLhaLIZPJoNFowLZtGIbBnuxra2twu93QdR3ZbBbhcBi1Wg3xePy5DBjD4TBM04SiKBBFESdPnkSn02FL606nA5/Px4GL+JWSJEHXdaiqilwuh2Qy+VQZTYHvs88+Q6/XQzqdRiqVgt/vRzqdRr1eh8/nQ7fbRSAQgCzLSCQSiEQiT71uGqqKosj+Q7thaALncTdtc8KpiH3c34thA2VKwBPtya3/D2xkmgsLC6jVary7vby8DFVV2SpCkiQUi0XW1SRKTigUgqZpuwbOrUnK1vPMuc64srKCu3fvwu/3QxAE3L59G7FYDOl0Go8fP0YgEICqqhwc3W43Wq0WC3zkcjlIkrQjN/nMmTOQZRm//vWv8dprr+HEiRPw+XzodDqo1Wrw+XyIxWIs7rHT645EImz8theGhgAPbJi25XK5EfkbGwsBgiCM/NaHDLZtY2FhAaurq5iamsL4+DgbpDm5im63G1988QUmJiaQz+dh2zZb5dImDT0e0XJo51sQBKRSqV1vurqu49atW1AUBZcuXYLH49l0HNeuXcPCwgL+8A//kDM4ynZJhIb+vrWEpuMnyLKMXq+HTCaz6/sCbGSh9XqdrYX9fv8ms7atu+q6rnOvNBgMIp1O9zVUHarAWalUuD9z3CFJEhRF2fVkG+HFoFarQVGUZ8r2JyYmOKiRSyUFJVojpMBgWRZarRaCweCOKuZkdUFBwpm1khAGGbHtdtyGYXBG2u124fV6EY1G2U2SghQFJ2cGR6IcdAw0oCK43e5NPUy/38+BLplM9m3GSMFXkiTu7+q6zlN0es2BQACRSATxeJzdLY+VOhKhXq8jGAz2JUQ67DBNE6VSCRMTE6Ny/SVjdXUV+XwewMZF7PF4NgUIUiQnQjZNeymQrKyscK+PghoFJZ/Ph3a7jVqthsnJSYRCIbRaLbjdbkQiEX7M7Z7PmclRcNnu2CioElPFef6srKxgcnISHo8Hi4uLCAQCO55j9LidTgftdpuDFQ1gKEgTfY60PMkQjnqx6XS673PYtm2mFlEAJlti27a5n0o3JMqyDcNANBpFIpE4XnqcwGjt0okRy+BwUSwW8eGHH2J8fBzhcBhra2tot9uIRqOYmJhANBrF8vIyXn/9dXz88cfw+Xzo9Xq4ePEi9y7pM6Rsk9But9FsNuHz+fDll1/CNE28//77+NnPfgaXy4Xz589jcXER1WoVgUAA0WgUFy9eZOWfhYUF3LhxAxcuXECn00GpVOI13YsXL+LRo0dQFAXvv/8+FhcX0W63USqVcOrUKSSTSVSrVQAb7aBgMLhjpvbVV1+h3W7j3XffZYL5xx9/zPYZmqbBsiycOnUKxWIRkiRBVVXEYjFcvnwZfr8ftVoNrVYLyWRy2/eZgjOd56IowjAMTE1Nodls4tq1a1AUhZXTZmdnce/ePWiaBlmWkUwmcenSJfh8PpRKJQQCgb7aW0OVcdIbP/IX30ClUkE8Hj+2fvOHhdXVVaRSKYiiyNmk3++Hqqqc0VFpTB46LpcLhmEglUqhVCphbGysL7GJdrsNWZYRiUQ2cTRDodCm8pSyLpokUxZKfkCKonD2S2UraV7SY0UikX1Z1HS7Xf4zGAwiGo1ClmVYlsXq77QCaZomGy4KggCPxwNRFNHtdpHP53dsv5mmifv376PZbOLcuXN48OABlpaW8M1vfhPhcJiN2sLhMGfvZOAGAJFIBG63G91uF5IkoVAo9DUjGarAqWkaWq0WxsbGDvtQBgKiKELTtNGN5CVjeXkZXq8Xuq6zvcN+BpaiKGJ+fr6vwAlsBM9Go/FSbpCyLGNubm5fpbNhGJBlmc9HAE9ZYVBPlG40Pp9vk/iGs4Ii7iX1S6nnGwqFsL6+DkEQkMvlIIpiXxUoTdQFQej7PR+qUt3j8Yy2hxwIBoNot9ujcv0lY2JiAu12G0tLS7h58yZeeeWVfQXObDa7r88rFou9NPbEfs8jVVVRLBYhCMIm7x+nvxCwEUhpwk7PYRgGyuUybwdRZu7z+bbd9nG73cjn8zAMA91ud9Om0G4gVsFubYetGKrASc3sUaDYwOhG8vKwdRASCoXw5ptv4rd+67de+LlIwWQQYds2cygNw0AymYSiKFAUBT6fDx6PB7FYDJVKBdFolIdCsizDtm3E43HeId+JMfDxxx/DNE3Mzc3B7/fDMAzE43HehFJVle2Jo9EoQqEQi39YloVgMAifz4dKpYJwONzXvvpQBU6iLoywAXIa1HV9RNF6QaDsiQJmJBLBxMTEc9/7Psro9Xq4evUqdF3HqVOnUC6X0Wg0oCgKwuEw3nzzTaysrMC2bTSbTbRaLZ7CX7p0ie1/d8Lk5CREUcRf/dVf4Rvf+AbOnTsHn8+HpaUlVKtV+Hw+ZDIZpNNppnbdunULkUgEsixjbGyMf6dcLvcVOIeqxzkybXsanU4HpmnuOJUcoX+QajgAprW0Wi10u13EYjHE4/F9cQGHFRRSisUiisUipqenkclkmCHgvInT9/x+P/97K/ld07Q9+cj0nLquo1ar8YCMCP/EUiAQHcxp+EZWGnQsu2HoMs7R2uVmhEIhVKvVvvlpI+wMWZZx69Yt2LaNubk5aJqGeDyOqampvocKwwLDMLCysoJer4eZmRm4XC6eVpMe7NraGpflpVLpQM9jWVZfw006twOBAAqFAizLgiiKaDabHHydbTwi2guCgFgsxquex04diUB9veN2Iu+EEbf1+YAMvqanp6HrOkKhEHK53LG6GTml6URRRKPRgK7rTK0KBoOIx+O88TM1NQVg/wOlZ0Gv1+OVS6/Xi0gkgkQi8dTgiVYuaSrfbreP78olAKyvryMWi424iw4Ui0VkMpm+SpARNoPoLxQkkskkBEE4EgFzK3F+PyD/KtLUVBSFCeterxfBYJBL4d3aE5ZlQVGUZ5o9hEKhHYOZZVkoFovodruYmppCvV5n+4u7d+/yoCkajcI0TeRyOQQCAVy/fh2RSASapuH06dNIp9OQJAnNZpMD/m4YuoxzlGE9DSICjwJn/6ApcL1eh2maSKVSbDt7VFAqlRCJRA50zPV6HS6XC+FwmHe6neWsbdssErzbeaWqKqrV6oE1Oan/mEqluC9JRH8S6SAJxf/yX/4LTp8+jbfeegsej4e1OROJBPx+P1cNgUAAMzMzsG2bKU26rkMUxb6HqEOXcY6GIU9D13XU63Xk8/kjdeEfBmhYUa/XYds2UqkU8/uOGlZWVhCJRFAqlXhwRdeH3+9HKpWCoihIJBIol8u8rRMIBBCLxeD3+3cU9rVtG7/5zW8QiURw+fLlbVtjtVoN3W4X6XQa3W4Xuq6jUCjwQI128GkNNJfL8a46bV2Nj4+zPihtOZEYs9fr5X/T9lMoFIKqqixkTP1MojI51ZEoEBNtKRaL9X1zHLqM0+fz8XbCCBvw+XwjB9A9YNs2VFVlfl86neZe3SDBSRyn7Zut/2/bNmq1GnRd5110ouGoqop6vQ5BENBqtTYppgMbQx9avZRleVce8OXLl+FyuXhVcitWV1exvr6OeDzOx0DBm1YcSYSj0+kglUqh0+lAkiR0u10OlhTAtwZLev3Xr1+H2+3G2bNn4Xa7EQwGYVkWiyHT2qVTu2GrdUY4HN5Xe2/oMk7KFsbHxw/7UAYGtm2jWCxibGxspFW6BWQp22g04PF4kE6n9+Wv/bJh2zYeP36MlZWVHfU4TdPED3/4Q7z++ut48803eT+elIgI9D16rc7XXK/XkUwm+7aS2OlYKSinUilWJXKeg1u/t5URI8syFEVBPB5Hr9fjMp2+bNuGKIpwu934x3/8R5w7dw6zs7OIRCJcihPZnraDAoEAbxZRtklyfYlEoq+2wtAFTtM09yVEcFzQbDZZO/G4gCa/OzEsKGjG43GkUqk9tSj7haZpXPruF7Zt8yTYKTJMX6RgTnQapw4m8RXpcbrdLlRVPdBrsG0b2Wz2mZ1Se70earXagd9X27aRSCR2zAad4ater6NareLUqVPweDz46quvUKvV4Ha7kU6n0Wq1MD4+jkQigU8//RSJRALr6+u4cOECzpw5g16vh7W1tb7sgYcucI5I8NtD0zQ0m03WiTwOqNVqCAaDvMdNpZpzV7rRaGB8fLyvc6XX6+HevXtIJBIoFAo7alCScG4ikdhk0+zMpuj5neIVwMaU+P79+5t6erSbTeLFdCMYnd+bQTdCssug7JJKe+dOu9Ogjsp5wzB4Ir8XhrJuG7J7wXOB3++HJEl8sQ4r6LMnz5put4tf/OIXeOutt+Dz+fDw4UOUy2UoioJvfetbXO71A1I03+3nP//8c0iShG984xv4v//3/0LXdbz66qt4/PgxKpUKq/688cYbvBv98OFDlmB7++23EY/HUSgUniJk099JDYmGfZIkHfTtOhDcbveBFyoMw+B+6k4gI7n9glgAU1NT0HUdsiyj0WhAluVNtiLU36TeqSAI+27RjDLOIcR2H6lt2/iP//E/4t/+23+76/ras7xnz+NU2sn2YXFxEZIk4cSJE4hEIptW5qi/R/0v27bx85//HKlUCl/72tewuLjIquXOjDMUCqHdbj9XGcJut8vUL+fUljQtSQvT7/czj5DeN/L7WV5e5lJ960DD5XKh2WxifX0djUYDk5OTOHv27EvtXddqNYyPjzM/MxaL9VXSkzo7vR/bwTRNdLtdTE5O9nUslmVxvzIajcLj8UDTNDQaDfR6PW5pUKZOU3UnnanX68Hn87FDZj/XwNAFTgBYW1tjxefjBvufrBe2A9E6dlLSsW0b09PTBw6eJCF2kIvYtm2Ew2EO6nRiU2BcXV1lAjqRrkmYlmgtWw25yO51J56haZrweDzPfZAoiiLW19cPlDVZlgWXy4VCoQBg881oK43m1q1b8Hq9mJiYwL179xCPxyEIAmq1GiRJQjgcZlre4uIiPvjgA/h8Ply/fh2SJOH06dOoVCpsoxsIBHDy5El88sknOH36NAAgk8ng7t278Hq9WF9fR6FQ4E2chw8fQtd1XLx4sS/+4507dwCAFd8zmQzcbjdWV1chyzKCwSAmJiYgyzKy2Wxf75dpmrh37x4LgaRSKaRSKeTzeaiqitXVVWiahlgshk6ng5MnT2J9fR2maXJL5bXXXoNt2yiXy7uKJjsxlKU6rV0ex8BJmJqaYj1CIilT+Ud3Yurx0DZIpVLZ8fEsy8LKygqffFuDAmV/8XicJ6AUsLauwJK7IamTU0b18OFDHmY4/XYCgQBnVf3291wuF5LJ5J4T0hdxjgiC0Nf2yU5wHtPWUt35Pr7xxhu8Ax6JRDjbikaj3JKRJAnZbBaTk5PodDpMwYlEInxTSSaTEEWRDc7m5uYAgPt/xAH1er1covv9fh7C9Esad/Z6l5eX2bY3Go1yee71etFut/lxA4HAps99K8gqxO124/79+5ueg37P6/UiHA4zhSkcDqPb7SIUCvGNlq6VfjGUGWetVmPP5OMGyjgbjQYePXqEixcv4tatW0w96fV6yOfzuHDhAu7cuQOPx4P79+9jbGwM8/PzOxKAqb/ndru3Lc0+++wzNJtNfPe738WHH34IVVXx5ptv4uHDh6hUKjwt/vrXv45yuYxIJILbt29zH/KDDz5ALBbjTOu4tln2i2KxyHqSdCk737utGavz/50tAPo3fW/r/zlRLpeRTqdx9epVJBIJvPrqq32rQtXrdRYm3nqswMZNtt1uI5vNsiunYRiwbXtTMKWA6nK5sLi4yLvxZA3SaDSYk+rz+Zj/6XweKtVpISCZTB7vUp1c/w665nWUQYEzm80ylcW5PUGZOJV9VFa7XC5Uq9UDu2LSPrNtb/h303OHw2EWVAA2TthIJAJd13nSSdkBPf8I/YNMx14mKKg6bX5p4OJsndCwxbIsXkxpt9u8xro19FBGTfSwrRtbTv936mvbts1tkampKbTbbeTzefYwIh+y7YZDZLcRDochCMK+Fh6GMnBS76IfQdJhAxGk99pLpx6Y80TRNG1ffjJbIcsyZ0D9wrl65/P5RosLRxAUQrbzgC+VSvi7v/s7/Omf/ilndIIgcPuGLDNoSEa/T+T5VCq1476983lpiv5nf/ZnuHLlCi5evMheQk7LZMpSKdOkPyn7zGQyx8/lkkC7qrlc7rAP5aWDPs69PtZWq8W8NSeeRYjXyUfsF7TpZZom0un0U8F8hKMN0zSZ1eD3+3Ht2jXU63UYhoFcLgePx4OTJ0/iJz/5CcbGxiDLMs6fP4/x8XHYto2lpSWcOHGir3PCtm0sLi5ienoabrcbV69eZfpYLpdDvV7H3NwcgsEgPv74YySTSdi2jStXriAej8M0Tayurh5PAjywMXyoVqvcLxvhaVCJEwgEuPl/mMdC0m2apiGRSCAajY4C6JBAkiTUajVEIpFNzAenRTD1Mun/FUVBt9tFNBrtmzNq208sTMgcjrJaak8RGZ7aDMQwkSSJvY362a4bysBJGn0H7dcdF9j2hkr3oEimUd+11WpBkiREo9Ftg/phH+cI+wNVIp1Oh7PN7QZV9G+v14tYLIZ0Or1v7yZ6LupvUoCkXixhK2uDhsn9VlxDSUeigcMIu8PlcmF8fByrq6soFAqH7pRITftUKoVkMolOp4PV1VWEw2Gsr6/DMAycP3/+0I9zhP2BghEJCjsFPbb+HH2/31Yb9UVJrIMETcjCgwSZiYrklJWj3qamaayq1C89bSgDJzBau+wXRAAvlUqYnJwciHVMutASiQTi8ThEUWTuJ0mqjbLOowe6MXY6HUSjUR7+lMtlyLKMQCDAymaUNe4Fy7Jw7949dLtdJBIJLuszmQyCwSBarRYURUEwGIQkSawSTxtKHo8HJ06cQK/X4wTi2Jm1EYjWMLrA+oPP50M6nUapVNpRvOKw4HK5EI1GcfnyZSiKgmq1CrfbjVQqxRtEI7x8OAeB25W3WyftH330EcLhMLLZLMrlMuLxOBRF4Y0kYmIYhgGPx4Nut4tGo7FJ1GQnTExMwOPx4OrVq+h0OjwAIpaHruuYm5tjeiJxh10uF/L5PG+dEV2vHwxljxPYIAbncrmR/mSfoBVF0zSRyWQGNiDZ9hOFdsuyBqY/e9yg6zpu3rwJWZZx+fJleDyeTdJ31E+kTaW7d+8ikUhgbm6Ot8ac/cutpP3FxUUkk0kuw4l3SYpHTkGOcrkM27Y3iZ40m00eQO21q66qKm+a9cvqGNrAWalUEI/HR6Zt+4Bt26hUKgiFQojFYgMdjEaT+A20Wi10Op2X2mJRVRVerxeyLLPakzNAbSd9Z9sbHvTVanVTcHVmrTT99vv9iMfjm8RXaP3TuU1EAXVxcRHhcBhnz56Fruu8ckoiys4hkW3b/DzkpRSLxRAOh/c1iBrawFmv1/mNGaF/WJaFtbU17hENeiCiRj/5Zzsn8YN+7M8DpVKJRZgpKGydWFOAcu5x08/Sv50/T+R0CkyUPVLrq1KpIJvNYnFxEX6/n33Vt4Iet91uo9Pp8KKDc0ccAB/7VrUrTdMQCoV4ur7dY1NAJVO3//bf/hveeOMNnD9/Hn6/f9OOOgVnGiDRtJ2CscvlQjab7avHObSBs91us3r0CPsDEYEHYdLeL5yUl06ng2aziUKhgHQ6vevvvYgAe5BFACe2K1+dj03DslAohFarBV3X8eGHHyKfzyMSiWB1dRWNRgORSAT5fB6xWAw3btzA97//fQQCAfzsZz9Dt9vFW2+9xVoClmVBEAS8//77+OlPf4orV64AAAqFAj799FN4PB6srKzg3LlzmJiYYFWjYDCIsbGxbY/1iy++gCzLePfddzE5OQnTNPHhhx9C13Vks1nOBC9fvozV1VVIkgTDMJDJZHDmzBl4vV7U63V4PJ6+zBdpa25ychI+nw/Xrl1Du92GZVnIZrMsVxcIBPD5558jmUzi9u3bePPNN3Hp0iXedJqZmdn7MxrWwCnLMmRZ3lV7coSdoWkaKpXKwEza9wPbtvHRRx+hUqngypUru8rK0YXf7+M6sVPAXVtbe0oRaj9QVRVzc3ObskcKxqZpYmFhAaVSCSsrKzh9+jQuXbrE5S9pBZBhoWmaCAQCrHruVAKi4EtZG91EyCmSHot20W17w1630Wggk8nsOT8QRRHAhvMsVX+0TkmiJNS7NE2Tn5N61qIoQhRFjI+P95UF2v+k90l2KFSN0OfkbAVIksTvRyAQQK/XQ7vdRiQS6StID23gPI5WEc8TJDHW6XT6tpYYNJB1BgUOGgYQATsYDKLdbve9Hy+KIu7evQuXy4VXXnllW84fqY6THiQRramnR8MS2pMWBAGyLMPtdvPmDE2ZKVhSiUxbMBR4SIMzkUhseywUSA8KKnG3QpIkzM7O9j14tW2bN4EocO50XBS8qXcqCMK+bkDU++50OlBVdU+Ff6JIhUIh5pgeWwI8gH1RC0Z4Gi6XC4Ig8AQ7nU4f2eD5d3/3d3j33XcRCASwuLiIWq0GTdPwta99jUUe+gEptHs8HhSLxafeD8uy8Od//ud4++23YRgGfvOb37Aw9Pr6OqrVKqLRKMbHx5HNZtFsNnH69Gl8+eWXnBGOjY0hmUxyZkRrg0473NXVVdy6dQtvvPEG71hvhWmaePz48YHN+Ui5frtsPJfLcaAH0FewcQ6CAGw7iHFm16QTS/8+yPYQPd5OQx/nz209vr0wtBknDTmOs4XG8wBN2sPhMPc7j8LQCNgImqFQiEtSAJuyJBKgmJ6efi6cUCqlSUkcwCarDGeJDGz4QJHMn7OvubKywspeFMDoT8uy2CbE+Vqcv18qlXDz5k1885vfRCKRQLfbRSqVQq/X40k4yS6SD1I4HIYoitA0DR6PB/F4nCXatoOu67h+/TpUVcUbb7yxLXul3W4DeKLEJQgCiyfTZN7tdrOFr2EYkGUZtm2zHmen0+lbld22n/jJJxIJKIqCQCAAURS5fUEycrVajbeOYrEYfD4fWq0WD6P2wtBmnKO1y+cDl8uFXC6HtbU1PH78GIIg7FimDhp8Ph/W19d5W2UrLMtCOBxGu92GpmkIBAKIxWIcBPYbSGnP2uv1olgsHvi4aVDTT4nqPMcpe4rFYmzt+/nnn6Ner/MAptlsot1uIxqN4t1338X9+/cxMzODZrOJ5eVlzsAvXrwIRVF2PAbLspgnTQO5rbh69SoLWqdSKViWhbt370JRFBQKBWiaBq/Xi5mZGT42IqUHAgGEQiEO9jsFTtM0UavV0Ov1kM1m0el0WIlpYWEB1WoVXq8XqVQKkiQhk8kgGo3ixo0biEajCAQCyOVyCAaD7ILQT+Ac2ozTtkembc8TtJI2MTHx3PzHXzT2e2qTHOFOQdT5eLu9/udxST3r+2sYBtbX15HP52HbNlRV5UqBjk/TNN7vdtoYAxuf9/3793mFkVoH9OXxePDJJ59AEARcvnx52wBLz9PtdtFqteD1elm93UlI34mUTq2RVCq1Y1mv6zru3LmDdruNyclJ/M//+T/x1ltv4ezZswgEAqyOv92uOtGRVFXlTDubzfbFJBnawAkAq6urGB8fPxLZ0VHAUZ609wtnUKEBg9/v53Lu2rVryGQyO3IXBwWkEPYs2qqRSISn007jPJrgd7tdeL1ehEIhJr+TpYXTWYAeby8CPGXsdNNy9ldN02S+JZHZAXBApyGg03VAFEW0221IksSZNPVLiQAvCAJisRgikciIAE8olUrIZDJHhos46CAOYbfbPbKT9v3Ctm0OojQxn5iYQDabPTYk+52wdR/dqfxOQYr0L2/evIlUKrWjlfHWMLSwsIBEIrFtgKShGb336+vrAIBsNgvLsrjPSUGdArkzMDqzWzrmQCCATCbTV6I11IGzWq0iEokcyKZ1hO1BXDnbto/spP2goD35TqcDRVHYpZF4h8fpvdgLzs0ewzDwxRdfwOfzIZvN8nJFvV7H/Pw87ty5w/5XxWIR58+fh2maSCaTuzpc0vMsLCxAURQsLi7irbfewtzcHEKhEG7fvg1N07inSlJ1gUAAV69eRSwWQ7Vaxblz53DixAnIsox6vY7p6ek9X99QB85mswmv13tgSsYI28O2bXaq3MkPZtixXRAlm9vdNn+OM0qlEnw+HxRFYftiQRAgSRKrwRMNbn19fV/+U4ZhoFgssvJ7MplEt9tlAQ9a6wyHw/D7/ajVakyOj0ajCAaDaDab8Hg8femADnXg7Ha76PV6fW0CjLA/WJaF1dVVnkgeNzh5gkRroXK+3W5DFEW8/fbbz70XfJDMdr8roC8qey4Wi7wQ4Hzv6DnpT9u20e122d99PyCyfafTYSqYkwNLIGoXcWCpj90v1W5o6UjABmdPVdXDPoyhhNvtRqFQwNraGk/ajxMMw8DS0tJTbSDaCiqVSlhdXX2u70uv10M0GkUqleLsrJ+LvN1uo9ls9tXrJ6fTveDcaAL2ZhlYlsXCwsRj3RosKYh6PB7EYjH0er1NHNd+QCujLpcL3W4XmqZBVdWnCO4UUL1eL4LBIFOTRsMhbJzctVptZDn7AqGqKtbX14d60r4dVFVlUzCizZDSDg0uAoEAGo0Gl/BkYUtUHFr9dLvdCAQCkCSJOZxElie6jMvlQjAYhKIoEEURxWIRU1NTe/bjyISMaDkUGHw+H8u0kVlaOBxGvV7vy6uL9DhVVcVrr722bdVBa7sA+H0AgFAoxM9L0/t2u83vCe2xdzodCIKAZDLZd0AzTRPFYpEHSXRO0l56OBxmSTpFUfh4RFFEr9frm4Uz1IGT7vyTk5OHfShDC5q0i6LIQrLHAaqqol6v4/PPP4ckSXjllVd4nVOWZUQiEXzta1/DJ598gpMnT2J+fh6Li4u4fv06Tp8+DVEUUavVUK/XEY/HMTs7C8uysL6+zspE7XYb1WoVxWIRiUQC77zzDmq1GpeePp9vz4z2Jz/5CeLxOF555RU8evSIPcNPnDiBUCiEx48fw+VyYXFxEb/927+NUqnEZPDdPkvSu/R4PDuWt4Zh4Ac/+AG+9a1v4bXXXoPf78fNmzdRqVTgcrmQTqfh8/kwMzODX/ziF0ilUky+j8fjsCwLy8vLu9oDU2luGAYikQgkSYKiKMjlcmi1Wvj8889ZNKXb7WJ+fh4rKyusxORyufDOO+8gEAigXC4jFotBEIQ9P/+hDpwjEvzLgW3bqNfrcLlc25KVhxGUcWYyGSaYU9lOZSet+JHWo23bCAQCTLZ29vp0XeeAqGkaqxI5sx9N0yCKIkzTxMrKCs6ePct2EDvBNE20Wi3WpqTn3trzo7L/4cOHiEQivOLpVBSiLwqq165dQzAYxJkzZ3YkwBPRnDa4wuEwcz1J65P+pOek1UtN05BKpSAIwo675qZp4u7du2g2mzhx4gQ+/fRT1Ot1fPe734UgCHwToGN2EuBJaIUqgUAgwDSzvTD0gXNlZQVTU1PH4mI+TNi2jVKphGg0eiwm7YZhYGVl5aX2dol7SC6OuVyOp8S0zeMMDgC411etVlk+jgKUkwxOIsNut3tT+b8T+d00TdTrdQSDQaTT6U0K8BTsnecADdAoiyblpq0EeI/Hg0QiwY/pfC3UClFVdZM4i9vtRigUQjAYZD6mz+djdS9ZlrclwPv9fgiCgGg0yiuuox7nP2FlZYWFV0d4sTjuk/aXga38yK0BjXqmpmnis88+w3vvvccBgwLbVm4krR7SYwQCAVaV361EBnYmvwNgeTjaKOp2uzAMA8FgkFsGW2GaJut90pYQPZ5zZZMyX2DDPgQAEokEbyhJkrTp+Z0EeGcmTMcOgDel+okVQz8KJQuAUeB88Tjuk/aXAQpktJHjvEE5KT6KoiASiUBVVUxPT6NSqaDT6aDb7bJH0MTEBItdNJtNJBIJnDx5EqqqYm1tjSXxdjsOKoOd7AJncHfunv/yl7+E2+3GBx98gOvXr7MYx/LyMjRNQywWQyaTQa1WY5FpstpwHgfdMAjXr1+HYRhQFAWnT59GPp/HxMQEHj9+zO0NUkuKxWKIRqO4f/8+gsEgVFXFiRMnkEql0Ol0UCqVMDExsefnMPRnNulyji7ilwOv14uxsTE+AUc3rJcHJ71HEAS8/fbbTMUh5XYih8uyDMuyuJ+ZTCZRKBQAYJNq+rMcBwV3Irf/6Z/+KRqNBg9to9EoEokEwuEwotEo0uk0866z2Wzfz/fqq69C0zTcvn2br3fKsNvtNgtZU0vD/icRazpXE4kE9zxHpfo/oVarIRwO71gajPD8QQRmSZKO1aR9UOC8pGVZRqvV4uRha9lKAYPKVsuyEAqFkEqlnnKqfNZjATZoSb1eb8dJvGmakCTpqayv32MgGlO3291kzbFTqU6vm/RJ+3VKHfrA2Wq14HK5EI/HD/tQjhVo0u52u/fFwzvqIOvaZwUNPA7yvvV6PSwtLT1FeKcg4fQ9dxLBnba+ANj/Z7sVxK1hY6fj1DQNq6urfCy9Xo+9iHZCKBRi/c1er4d0Or3j9bvdcdBAS5IkXrukmwINh4jOFQqFeHV4P2T7oa9fidw7wssF8fRu3LiB27dv47333jsWwZNK0Gd9rY1GA7Ozs0+RsSmbb7fbiMfjT9GRKJsKh8PI5XKbaFEAeNBCGShNtklkg7iNtLXTbDa3Xdckaw5ZlnH27NltzdSI7hOPxxGPx6HrOvdk6fGBjZsELQZQFkzqRiQnt1N+Z9s2FhcX0W63MT8/j3A4jGq1CtM0EQqFWCiEgmk4HGZWgXP4VC6X4fV62RZkLxyLwEnbCyO8WBiGgWq1uiloeL1ePHr0CHNzc3sGE9JG7AeiKKLT6byUYBwKhVjijErARCLxVHZGnESXy8U767FYDMlkEs1mE8FgEPV6nYc2dEGPjY1xhkiKXjSwIXM25+CnXC7zRhCd2/T/RLL/zne+g1/+8pe4ffs2DMPAP//n/xxffvklAODMmTP48ssv4fP5eOtpdnYWgUAADx8+hNvtxvLyMt59913mSm5Fr9eDoijwer0ol8vbBpvr169jaWkJf/AHf4B//Md/hKIobElcLpe5x/qd73wHv/rVr3Dx4kWmK1GL7a233kK32+Utn60g3U2fz4f/83/+D7xeL7797W8jn8+j0Wjgww8/hKIoOHv2LFwuFwqFAm7fvg1FUaDrOnK5HM6fP49UKoVKpQJFUUYEeABMvqXG9wgvDqIoQpblPb3snTvO9G/LslCv17fd8rIsC5VKBaqqIp/PIxgM8pbHi9ZaJe+qfD4PURSxuLgIAJidnQWw2RPoBz/4Ad5++20UCgWsrKxgbW0Nc3NzSCaTKBaLmJ6exvr6OkRRRCQSYV3T8fFxLC4uMucyGo0il8shFosxt9K5l66qKlRV3fT66f8VReHVzVQqxWudvV6Pe33kxUPBzklh8ng8HITdbjcWFhaQy+U2kd/p9x48eIBAILAjT5om3bquIxqNsgWwIAh8TMDGNUpUKXL6dGbGtVqNj2G7IS89DlkyV6tVVl4ioj8R+YlsT26bXq8Xuq6j2+0CAPL5fF8Z59AHTlLC7mf/doRngyiKkCQJt27d4jXElZUVVKtVNgS7ePEi1tbWkEql8ODBA3Q6HRiGgYsXLwLAtn4vtHqnaRomJyfx4YcfYnJyEmfPnsWXX36JcDjMk3zaH0+lUtzsj8fjuHPnDpaXl3HlyhWsr69jfX2dZcYuX76Mjz76CMlkEufOnUOpVIKu62g0Gpibm0Ov1+M+H13kFNDoy+Xa8AFvNpsYGxvjc436ajTtpf6aE1tvJMAG/zgUCnG2SRe+1+vlNczXXnuNrS2AJ33GXq+Hx48fP0VVooEIBXv6HVIs2moHTBl0Mpl8ivzucrlQLpcRjUbZI2g78ruqqlhdXeWeJWWw1Gfd2mul10i/T7xPv9+/ifTu5HR+9dVX8Hq9eP311/n5dV3nG7lTcZ5ArzkQCCAcDiMSiWza5d8LQx84R9tDLw+iKLIIBfXQPB4Pb3uQe6IgCLz9QXd9Mk3bzo52K1ZWVgBsKH7TqidpLoqiyJ8zldNerxftdhumaTIdxbIsdLtdvnAokyKdTWAjcGSzWRSLRfbu+c1vfoOZmRku/YDNgxHS56Tfp+zQqYruVDZyXsCkVg5sXNiZTIYf1xlwiGhOj0n0IQo65M1OIsuiKHLwpeDm3DAyTZMfm2g8iUSCg93W62Yv8jvdKLxeLxYXF5FMJpFKpaAoyqb/cwZqCqIUmIkylEgkNgU0ev+c/FCiVrndbvzsZz/Db/3Wb3Frhd7frSuX9Bj02r1eL+Lx+CY91d1wLALnaF/95UCSJKyvr7MKznaZ1HbfA8D9w/n5+b7k0kqlEgDsWao7V/r2e0zAxgXdbDaRy+X4YqULb2sApNLW5/OhUCgwfzIcDnM2RdkpKQHRAIWGFDRF7vcCdr5GJ63o008/RaPRwLe//W1EIhGsrq5yGU5BI5/Pc2mv6zofNzEiBEHYs+2y07FQELx69Srq9To++OADhEIhrK6u8k2Ohrb5fJ4rD1mWEQqFUCgUWN0sk8nsSSek1/Xhhx9ifHycSf8AoCgK4vE4er0eT+yXl5cRCATQbDaRz+eRyWTQarVgWdaOlshODP1wyHmXGQXOF4tQKMSZ2X5BGdHa2hoTuCORCGdgzpLX5XIhm81yZviikUwmnwrQztfoFI1IpVJYW1vD+fPnEQ6HsbCwgLt370KSJMzMzHBgO3v2LH72s58hn89DkiScO3cO4+Pj3JbYjxnc1i2eYDCIb3zjG1zuezweVg1KJpMcsOlGQMrngiDw6wwEAgeiVW0lv7/66qsol8ss8UYuorRSGQgEeHLebrfhcrmQSCT4c/b5fNzD7Od5p6eneV2UXpuz8qEbF6kjUQlP1CTygt/z+YY94wQ2lKf7tf0c4XBBpaMsy6yRGAwG8fDhQ9i2jTfffHNb6ssgodvtotlsIhaLwePxbCqB6QIPBoN88ZJ2JAUPosU8K/HcMAzU63XWuHTuqjsfe6txmW3b3Bt+1mSD6FBEfKf+sLNl4DwOZ+lP/Ov9iMbQrruiKLy1tBsBnp7LNE2Ew2Ekk8mRHieB+j0j4YmjBSq/VFVFq9Vib/BIJLJvNZuXCbowaThBGRNVP862gTOTJiXy/Qwpms0mut3unj9PykLOvigdE/U+nQpJe72+foWrdV1HsVjkNgEdx3ZDKup9UnAlTmc6nUYkEunr/aDjs+0NEWWyB6ZWCFWeFFRJ2INaI6PhkAONRgN+v39fb/4Igwe68Gh6T1PxSCSyKQsdtGDq5GA6J7tbJ+wHOe5SqYR0Or1J25KeyznZJ4I7gahHW38WAA9VtrIBaABTqVSQTCaxuroKwzBw8uRJHiRtfd2yLEOWZaRSqR2Pjz5XykCdPWQiqTsHZU4QEV9RFMzNzbGKPelrkuc7vc9er5ffD2d2q2kaszFGw6F/QqfTgWVZ+250jzC4oCCkKArLld26dQuzs7OYn58/8OPupXzeL5zZ1H5A2dBOx2DbNg90BEFAu92GYRj48MMPkclkOKA1m01EIhHk83mEQiFcv34df/Inf4JAIICf//znaDabeOedd/Do0SNUKhXYtg1BEPDuu+/ixz/+MV599VVYloXp6Wl8/PHH8Hg8WFxcxNzcHE6fPs0DJJfLhVwut215e/36dZTLZXznO9/Bl19+yQZ29JzEtXz//ffx2WefYX5+HpIkoVqtMoXta1/7Grc9tgNxfG3bxv379+H3+/HBBx9gbGwMzWYTN27cgKIoyOfzsCwLp06dwr1791i8uFar4Xvf+x4ikQhKpRKzPvb8nI5D4KS73k53rRGONugUvnr1KlqtFs6dO3egx9E0DfF4fEdXVKfh115tAtoE2m8QFkURc3NzT20lOWlDKysrqNfruHXrFk6fPo3XXnsNqqpyKUoq8wB49ZAyRlqnpP8LBoM8nCGuKP2+/U+76pSBUsYpSRIymQxKpRK8Xu+OQi503dHNgHqpoVCIn5PKY5/PB0EQoCgKZ7uqqjJNLZfL7XhTo89EFEW43W40m00IgoBQKMTqUFSKEx+UKGPUnqDtpImJiVGPk0Bk5n5oBiMcXXS7XR5uGIaBRCIBVVV5NZDcE9fX15meQquDZGZmGMaOgVMURdy6dQsul2sT2XorqFQsFArsy6OqKl+0VFbH43F0u1243W62t6AdbWfJSiU9TaqBjcC9srKCYDAIQRD6utidAdh52dNj76evGovFsLi4iEQigfn5eVagJ9BjKYqCtbW1TXQiqhacNyInpct5HPR5BoNBDvik3h4MBhEIBHDt2jV4PB5cunSJj0GSJIiiCF3XOfN3vmYnjczn87Gh3qjH6QAt8fcjUDrC0UW324Usy/jss8+g6zrOnDmDYrHIU9ZwOIz333+fM7VWq8X/d/LkSeRyOd6G2Q400KCLbTtYloW/+qu/wuuvv458Po+bN2/i1KlTKJfLaLVaXF5PT09jdnYWKysrCAQCLN47Pz/PWZCT++n8s1gsYnFxEa+++ipisdimAQuwOUBQK4OoW85tJ/pZCmLUgwyFQojFYv9/e1/aHMd5XX1m3/fBYBnsIEGQIEFqsaSK/TqxbNmuOLGt5E/kdyVVTlKO47jKTsW2JEeyZEuiKHEBKW7Ygdn36emZnp7ufj/Q9+qZwQwwIMCIBPpUoSgBg+lnGt2373PvueccqmF7mPK70+lEoVDg7E+SJBYRGbQOeg+iR4nNMvpcIvmdttwWyxMX0M8//xzXrl2Dy+VCq9VimtugTJWyaLfbzSOsZo3zLzBJ8GcDFCDIQqHdbnc1Leh71EiimwoAj0wWi0WMjo52zXL3Tq30mxgSjwEAu7u7rI9AwaI3ENHWWXy/VCqFeDzOW2txFr73v8XjieuSJAm///3v8dZbbyEWiyEQCLCgb7PZ5PceGRnhyRua6kkkEtB1HZVKBdFo9MjdbPpcFNz+9Kc/MRGf1uFwOLgUQOsgahaJloyNjaHdbqNarfJI52HHVVUVv/3tbzE5OYkLFy5AkiS27PB4PJBlmTNLIsfTzsTlcqFSqbCH0mE49QR4whl4Ppx5kMr5ICWdw6BpGlvMlstl7jxTd9ZqteL69euYmJgY2ICi4OVyuXi66Sggvuewyvm91zWVKd5++220220WJN7c3IQsyxgZGeEtL3WgM5kMbDYb4vE43G43U4cajcaRAmcv+d3lcuGv//qvkc/nEYvFoOs61tbWuIyhKAoCgQBUVeWM3GKx8IPL4/FwPfKgwEnHdTgcuHLlCsbHx+F0OrGxsYFCoQC73c7WGTSx9fDhQ/j9fp5ScrlcsNlsyGazQwVOM+M0YaIPxDFGmrWn7IzGKGl8jzLJ5+naou47db6pHjiIeE6jn7T9dbvdiMfjx7Y+MQyDxU+IqyraAw8i4tN8v9/vH1oImx4aVPZwuVxcu+4nYCKOu5Jt8rCDMmcicAJgabBhiugmTAwCbS/FYEpdZzIWIz8bQqFQOHR8cXR09MSuTcMwuo5JYiNEgO9VJSIhDKfTyQ6S9D7xePzAbO8oa2q322xr0Ww2u+qitAYaAgiFQgPtNYY5lsgBFa2BRX0BUr0n9aWjEODPzFad6BBm4DRxHBC1RvSxomBKmVKhUOAJmf/93//Fa6+91pciRTkLBblhO+PFYhGNRgOhUGgfN5nek7bDTwMKLhTg+gVOVVWRy+WgaRrGx8f7ZmniWkqlEtOB4vE4j0CK3kdESqcRTU3TEAwGjzz6SQHQ4/F0uW+eJM5MxknK2s/qRJowIYK2jevr67BYLFAUBYVCAVevXsXq6iorKS0sLGB2dha6rg+d2ZHu6MjIyL56XKvVwu9+9zu89tprcDgcuH//Pi5duoRyuYxsNgtFUeD3+3Hp0iWsra2h0+lgeXkZVquVRZZJ4erChQtQVbUvy0BVVWxtbUHTNMzPz/cNnKurq5BlGSsrK8xo+eyzz9DpdJgOpigKFhcXkU6n0Ww2OUt87bXX2AbD5XI9d8MrZyZwUo1lWGsGEyZOAobxRA/W6XRifX0dy8vLaLVasFgs7K6oaRrq9TpTkIjKI4phiGg2m+wR3tup1zSNJeSi0Sjrk9KWXJIk3pZ6vV5WCAoGg0yaFyk8jUaD1YZ6652H3VPFYpHHKYPBIHw+HzfdRGJ9IBBg/3MArNuqKApL+j1vCc+ZCZxEho1Go1/3UkycIRiGgfX19QMf2LVaDZOTk3A6nUOJAxcKBWQyGbz00kt9FeAPOibV+UQMqu3JsgwATD6nmXVax507dxCJRHDlypWuAN77XiQaTQLXvcr54rqIcmW1WuH1ellh6nlqvAFnKHC2Wi3UarW+VqcmTDwr0Ja9n+EZwWKxwOVyHTifDmCfMAVli5QhUrPD6XSyCIrP52NlfpGgLh5LbJo4nU74fD6eoiE+qxgmhgnulDHTTD2p81MzTWzWiGsSFfGJOP+8BU3gDAVOoimMj49/3UsxYeLEIBLgRX3JmzdvYnV1FT/96U8RDod5e0zjpwB4u0yUnE6nA5/Ph3a7jUajcaQtcj/ye7vdxnvvvQdZlvHWW2+xYRvNwlPW6Xa72ReIZu79fj+azSZardbA5tPXiTMTOMm0rZ+LogkTpw2dTge7u7uYnp4GAHz44YdoNBoYGRlhFgCNgqbTaVitVkSjUVy8eBEOhwONRoNdOJ8WJNRRKpUwMTGBTqeDDz/8ELIsY3JykoPr0tIStre3Ua1Woes6RkdHceHCBdhsNu7GP28ltjMTOE0SvImzBMMwUKvVUK1WmZ9JxHNxwgf4agaf+KmyLMNqtbIi0XHXUSqV0Gg0mC8p2vyK8+okukK802azCYfDgUQicWwi/knjTAVO0+3SxFkC3dokhCHa5VKNkQRLSGWJ6oonqa4vEtIlSeJaJ5Hxga+EQWgdfr+ffYqex/v1zBDgqfgsiiGYMHHa0el0UCqV2HdoZGSka9yRapJEPCe60EnS9gzDQLVaZWoUuWeKPkDiCGS73UaxWITH40E0Gn0uh1aer/z3GYN0EE2YOAswDAN7e3uIRCKIx+PI5/PY3t5mvVBVVXHnzh1sbW1hfX0dbrcbyWSSA+hJIZfLAQCSySTXPNfW1rC1tYVcLge73Y6bN28ilUoxKX9qagoejwd7e3vPpUDPmQucB9FCTJh43kH0Jpr17v0ZddebzSY++OAD3Lt3j8c5SfCCZsCJJO/1ejE1NYVIJMJCG4dleTRiSkLDvWsg6lQul8O7776Ler0OXdfh8/nYvTIej7Od9OjoKOx2O8bHx9kmmQjyzyPOTI0TeDLJQDUUEyaeNZ7m1jqojETvt7Ozg93dXSQSCcRiMabyiAR1h8OBzc1NjI2Nwe12s6QauVn2bpFVVeVJpkgkcqAaOgl23Lp1C/V6HSsrKyzXRs0dEtGgsdOVlRXIssymcaJlL4CudZDsHTlQHqR/etB5IiEWOj/9RD5ImIWETUwF+D4gs/lQKPQ1r8TEWYCu69jY2BiKg6iqKsbGxlg4pJcPKQYlmmt3OBysZiQGIbr5O50ONjc3OShQFkhBll5rt9s5mAFg36LR0dGBZHcKdG63e1+3nI6vKAr29vb2fX6qqfbaA9M6+vm+RyKRvvPqZMOs6zr8fj9sNhvK5TIkSYLD4ehyuSQFfZpQEj9Tu91GIBDomsQ6CGemOQQ8cTBstVpf9zJMnBFQACKHRavVyttgVVVht9uhKArsdjuazSZSqRTcbndXt5u8dQKBAAeUTCaDra0tXLp0qa/QsBgY/H4/ixfTXHyvERythzJWh8OBBw8e8BZfnOQR9Tw///xzeDweLC0t7Qs2FPTD4TCCwSCvyeVycdAVxy0p+xUzUNEkrl6vw+v1dlkH02vu3bsHSZI4g5yfn8fU1BTK5TJu3bqFVquFRCKBSqWCa9euYX19HYqioFKpoFgs4sc//jFGR0eRTqfhcrm6/JEG4UxlnHSyRkdHv+6lmDjFoCBRr9dRr9exsbGBbDaL119/Hfl8HtFoFLdv30YsFsP9+/fhdrvxzW9+k60dDst4ms0mZFlGOBweWIt89OgRVldX8ZOf/AR37tyBruu4ePEivvjiCw7ggUAAiUQCkUgEDx48gMfjwc7ODt544w2oqnrozqxUKrHRWS+uX7+OcrmMN998E48fP8bq6ip8Ph9+8pOf4P3330c4HMbY2Bju3bsHl8vF5Pzz58+jVquhVCrBZrOhUCjg2rVr6HQ6nA1ScBX9iux2O7a2tlhkOhAIwO12c3nA7/dz4KYaMb2Xx+NBo9FAo9HAxMTEUNzVMxU4O50OcrncU+sUmjjbkGUZ29vbsFqtWFhY4Gyo3/x4oVDA73//e/zkJz/B3Nwcb09ppNHhcHTNaTcaDVgslhOjAZFyfb1eZ9dO0tbsFdfQNA12u531ai0Wy7HvE7GBFQwGucaoqirP5bdaLeZqivVHyjwpG1YUhb2Y+pUEdnZ2YBgGc7RJdV6SJK6XHgSHwwG/3w+fzzd0M+pMbdVpq2JyOU8vNE1jVZ+jwDAMeL3ermyDAhsFvVqtxj7du7u7XDejLaLX6+WtbDwex+zsLLa2tvD48eNDj99ut1kFnjrPx4HdbucAoqpqV6e7t7ZI23Gyl9B1naXnnhak9JTP5/d5QNXr9b7/PQik30kmbxQQKcDu7u6yaHG1WsXU1FQXuZ4+p5gjipxuYggQ28B0ueyBOT10+lGtVlGv14/MnCAB3WAwOLBLTb7rHo+H33/QdbS5uYlgMHjk66xUKmFmZmbgdpHmvzudDo9SDgK9tlKpcMdc9N+h4EEUJMrOfD4fQqHQsYnnJx1aehWd6F96sGUyGfzqV7/C3/3d32FiYoK97JvNJmeu4XCYTf3o9wOBAHRdR7VahdfrHWou/kxlnMDzZahl4tnA5/Oh0Wig3W7D6/WiXq9zN5VsLxwOB1qtForFIlqtFpLJJCRJ4g6x1+vdt21TVRWffvopJicnce7cub7H1nUdX375JQKBAGKxGEqlEtxuN0qlEnw+H1qtFmw2G5rNJmZnZ3mqJ5vNIpFIwOl0QpblA4PW5uYmMpkMpqamWFm9F/fv30c0GmWrilqtBlVVUa1W4ff7YbVaEY/Hsba2Bq/Xy0FjZmYGkiRhd3cXU1NTx+JRPst7TaQo0fZ9fn4e//AP/4CJiQmmYxUKBTgcDsTjcQQCAZTLZbhcLqyurvJYZyQS4ffIZDJm4OyFOXb5YkLMLvptpejnuVwOtVoNoVAIX375JcLhMBRFwe7uLtxuN1qtFiKRCCKRCOx2O6rVKs9wj4+PswgGbd364fXXXweAgewMTdOwvb2NhYUFFItFrK2tYXJyEuVyGdvb2/D7/ajValhYWECj0UA2m2U1okKhwN1fsqvtd51GIhFWZe+3DhK0sdlsSCaTcDgcrJZEdUxq/pCnutVqRSwWg9Vqhcvlei6ndYbB+Pg4TyqNjY1hZmamr8vlt7/9baZakbeS1WodWg3qTG3VgSd+LfF4/LnT9zMxGIZh4PHjx8jn81haWmK/bdG1EQBu3rwJXdfxxhtvcJNlWIM+Ep04rtA13U7b29v8XkQIH+ZhnUql4PP5mLIDoKuOSlnR+vo6vvGNb/Q1MhNvaSpdUGZGDwexI00BhM6nw+FALBaDw+E40QSDzOyGAXEwnwZUz63X66jVapBlGYqidPU36Hz6fD4Eg0HOwk0C/ADkcjkEg0G43e6veymnFlRLHuYi1DQNiUSCOXr0PbqRqVstyzLzCSmA9PPk6XQ6KJfLPHZI9UBd1/epjZMdrcfjgd1uZ0vakwA1ko4KyvzEZgY1deicUIATm1OiTxHVRzVNQyqV4lHjXiI98UWp9il6xHu9XsTj8YHrpOBE53LYh4K4voNQLpcxNzd36Os0TWNhkmg0CovFgmKxyPxYsmqmhwCtU/Rwp5q22+1GLBYb6kF7prbqwJNu4zAUBRNPD+p2TkxM8M1F3yPiNz39m80m0uk03G43Z46iYVkgEIDD4cDu7i5nhIOsaEX5MqvVimAwyJQaMchQZ1mcGlEUpYsSc1wEg8FjU4tE3UyaNSfO5CDl90ajgU6ng0ePHuH27dt4++23kUwmu4Iw1XvFvwuRyem4hULhwO16u93GnTt30Gw28corr3Q1qcS10b87OzvQNA3hcBj5fB6RSASSJCEej6PZbLInmCRJGBsbYx7soPcjaJqGR48eoVQqoVar4dq1a5ienkYikcD9+/dZ0CQSicAwDHg8HgQCAdy5cwc+n49dNsfHx9FoNJBKpTA1NXX43+asZZz1eh2dToe5bSZOFpSJ7O3tYWtrC/l8Ht/61reQTqfh8Xhw8+ZNLC8v48GDB6jX6/jOd76DSqVyaBe3UChA13XE4/G+DYt2u42f//zn+Ju/+Rtcu3YNTqcTd+7cQblcRrvdxtzcHJrNJhYWFvC73/0OY2NjyGaz8Pv9ePPNN9kdcmZm5lTUv4lHKUkS7t69y0rrX3zxBbMDqIE1OTmJx48fo1QqIZVK4Zvf/CaA/qPJlLVpmoZWq8Vb3t558t5M9J133kEymcT8/Dzy+TxPIRFRfW1tjcsGk5OTKBaL3NzqzRbFtQBfzc4/fvwY4+Pj3PApl8ssykwPZmoMZrNZAE8aibFYjHcqJOB8GM5c4KSLaWRk5OteygsFujgBsEgEfR8AbyNTqRR+//vf43vf+x7LiIlWtAA406Hs3zCMY+sH6LqOWq0Gi8WCer3OtT9an8fjgaZp3LVWVZXteDudDqrVKus/nobACYDl4YhwrigKczYB8OQMzb87nU50Oh04HA48fvwY0Wi0SxiEvqhpdfv2bXi9Xpw7d+7A7jv9DdLpNPx+PxwOR9foZ78a7c7ODuLxeJdABwVpKtdQQCWe7Pz8PKxWK2RZZhYBlWRozXRNUJAmTqvT6UQwGBzaHO7MBc52u41SqYSxsbGveykvFDqdDmdwy8vLsNvtfFED4Pqj1Wrl8bVhuJSKoiAejx95W0t10EE/q9frkGW5q8EiZihUFqCROyoJ9AMJTwwDkQ95HFDAOk4QV1UVm5ubXbPX1HQSyxIkfiGeHwCYmJjgWiDVWMUaaaVSgdvtRjAY5NIKqR7R7kEsfVQqFeTzeVag79XGpXU4HA6EQiEkEol9Yh9UViFzOV3Xkclk4Ha7MTU1hWw2i9nZWaiqypS0XldNCqDiHL7X6+XBAzNw9oGmachkMgP5by86DMPgOtdRYbPZWDSCKDmtVoubNDQuR4o4YjOhl5xcrVaH1j4NhUJH9rZJp9OchRwGsf5Jax32BqGa6fT0NNcBKYvp9/tbW1s8gXIcVKtVzM/P7ytfUE0T+CrQHLT2druNSqWCZrPJPFbR05yyTQosdrsdwWAQgUBgqCxSVJAXAyu933/913/hpZdewszMDGeLHo+Hj9Wb9dI1RyOjbrd7YHmmt3nWaDTwL//yL3j99ddx4cIFGIbB3FmapKKslRSViHWh6zoajQaLkhyGMxc4ieN2Wk3bDMPAxsbGgR3RQdje3kY4HOYGAl3o1JmUJAkADhWiIDm1YcohkiTB6/X2lQwTP1MqlUKlUsHs7CxcLhfy+Tz8fj9KpRLsdjuT3hVFYY1Fi8XChPZKpYJarYZ4PI5WqwVJkrjpEovFsL29DZ/Px00LevhEIhHIsozx8XFIkoTV1VVYrVa88sorXUGL1qhpGkZGRtj0jHx8arUaXC4XJElie1xq0kSjUVZCb7fbCIVCaDQaiMfjfQPj+vo6dnd3MTs7yy6WvUilUvB6vWi1WohGo2i329B1Hc1mk22BR0ZGWBGo0WjAbrcjkUigWq1CURQkk8mnvkfE7Xmr1eJ5/T/96U9QVRWRSIQzzunpaaRSKUiSBEVREAqFsLKywhM+FstwLpeGYWBzcxNTU1Ow2Wy4efMmCoUCk/11Xcf4+DgsFgs+/fRThEIhpNNpvPLKK1hYWECn08He3h5mZ2cPPdaZDJyneeySPp/X60WxWEQkEsHe3h78fj/frESMTqfTvBWjuuWgpzsAfPHFF7DZbLh8+fLA10iShEePHvHFW6/XMTU1hWq1CofDgfv37zP5u91uY2JiApIkwe/3d2WGvV+FQgHAk271r371KywtLWFlZQWff/45QqEQPB4ParUaisUiHA4HfD4fzp07B7fbDa/Xi9XVVZRKJZw/fx65XA71eh3lchmBQADLy8vI5XJwOp0YGRlBuVxGtVplQrSqqohGo13q6L2ZrqZp+PWvf43Lly8jFothc3MTOzs7WFxcRCwWw9bWFubn55HJZHgktFarYWZmBhMTE3j06BGsVivq9Tpee+21LhJ8L4g10EvqFq+B//7v/8aFCxdw+fJlhEIh7O3tYXNzE51OB3NzcyiXy1hcXMTt27eZ9G+323Ht2jWexae/4XFAttx2ux2BQACKogB4UicXH9CapvFMOz30qNwyPj7OmqIHgVgahUKB5fiojk0ZNv0rOnuqqsp175GRkaH4o2cycJ7WjFPsaCuKgnw+j7GxMeRyOSiKwhlIPB5HLBZDNpuFz+dDNBpFtVpFp9M5sDkibnUHoVar4csvv8TCwgIURUGpVML8/DxnF/V6HdFoFOFwGNlsFm63G9lsFsFgkDNcakLQVo7UelRV5RnkarXKo3LiNpNANwWtmR4YpEwkfgbxe6ImJPDkxt/e3sbU1BQMw8Cf//xnTExMYHFxse/s9M7ODmc14jqok91ve92PIL+xscGcR5H87nQ6kUqlsL6+jpdeeqlvpi7SdorFIprNZpfSeW+jhIIHKabruo5YLDZ0o+QwULmjXq9DUZS+/E/xIUlkfb/ff6AS/UHHI+4v1ULFUg2wn8tL3XaTAH8A9vb2MDY29ly65x0ETdO4diiSpNvtNprNJsrlMn72s5/he9/7Hq5cucK/028ioh9fMZvNYm5u7lg3C12gW1tbSCQSfGOK3EERJEDr9/sH1sksFgt2dnYAABcuXODxSaKa9Fsv1cjoxqH3Ar7qJlNjQKzVDvo8FPgkSeJsRiSdU7dZpMAYhtFF5KdmBkFshlCnWAza5MfTK1tHdhAUCOn3e+0oCDRFU61WOdMXFeDJhygQCPAQwLNKKsRwMyiY0X8/q+OKx3tanLnAaRgG3n33XVy8ePGFahAZxhOlm0ePHqHVavFMLT2dqVlD5lmDOs4HgRoDx71oT6o5JGZOB3V3ab3vvvsuvvGNb/BnoPosZZtiltU7nUSWuP1GGPutaZClhKIo+M///E/86Ec/YtV2j8fTFdTo/cXGCo18UrnkIFm3QeR3MTh/+eWXSKfT+M53vgOr1coZJ5UZBmWc9B6kEvS8mqV93TgTgZN8SeijfvDBB1hYWOgKnHRhnQQoA3waWCwWpvEoioJms8lZk3gDUMOGfuesQgxk9+7dg91ux4ULF6CqKm7evMkB0W63o1arYWlpCY8fP4bFYmFBkMuXL8NmsyGXy8Hr9T71xA8FoTt37mB6ehqRSARbW1soFAqo1+sYGxtDpVJBOBzGzMwMPvjgAyQSCdTrdb4eVVXF3t4eZmZmnjpoGYaBWq2GjY0NLC8vw2az4caNG+xVRJnt2NgY8vk8CoUC17mvXLkCr9eLSqXCGqEnBZE/KdYYge7JLjGwP684E4FTkiSUSiW+IfptGYedjaUnM/H/+v1xjzKT24t6vQ5JkhAMBruoP1RWeJ4vpq8b1BUNBALcHNM0jRtjNI9OPFOLxYJwOMxd5UqlgrGxsQM1LodBpVKBJEmIRCLodDpMfRF5gj6fD/l8ng3PyJq3UqlA07SuOunTgJoyLpcLwWAQpVKJ57Gp5hcOh6FpGmq1GgzDQDAYhNfr5bJPJBLpa4txFFCgJEoU8BUvVmxuER2JeLAU5CORyImLjZwEzkzglGUZjUYDXq8XLpcLOzs7PBtLhf9hnq6VSgUPHz6E2+3GlStX9v1B79+/D5fLhenpaWxsbMDlciEcDnPty+VycdHbZrPxjC5x1sLhMBOAn7eL5XkHZTT1ep3pRER07teIoJuVNDqDweCRFHIOWgcpxhN/UuROihNNtAbDMI48vSIer5dMTt+nKRrifvaWLej49GWxWODxeAaWT8T1i5M5g7r7qqqy7YXL5cL29jbXVakZNTs7i2q1yt1tSZJw+fJlWCwW5PN5xGKx587S+8yIfGiahtu3byORSGB6epqfuvTUoxrRYXC5XFhZWYHFYtlXRzQMA5lMBrFYjAm5ogoLUVyq1SpmZmbgdru5rkTeK2InuDcz7n3GmYG1G3Q+iNpEFJPeriq9jup9Ho/nyLJih4E64VTDFBtDvUR8Wgc1eo4KomENypQpUInbZNE6Q2xSAU92VUT/6kWr1cL8/Dza7TZu3rwJWZbx0ksv8Ril+P6ZTAbvvPMOfvSjHzHdjRSraD7c6XTyukj+joIw1YWHrZX/X+LMZJz1ep236v1ujlwuNxTx9SCIpF+/38/TCr3HpJu431O6VquhUqmwAjl1TInT9/HHHyMWi+HSpUtm4OwDOn+hUIibHI1Gg4OK3+9HoVBgKwWr1coK6Cc1qy5JEorFIm9zXS4XT6+0221WfSoWi/zQJvWjWq3GfNJh10HiFMSwCIVC3LgS57TJLI6CFJWT6DyQGAbZSkSjUdRqNdhsNsiyjGAwiJ2dHZ4u0zSNmQWUyYpfJATi8Xi4VCCOZvaOeYpJBmWzkUjkqShJzxpnInCS8kk/ELcsmUyemMMglQWeFuFwmEnJouxZu93mG4tKDlTsFxtFFJir1WpfGsagY55UB5WaE8NmCtS8GQTiUjYaDczMzPC2TWw20I5CURS88cYbcDgcuHv3LjKZDCwWC0ZHR9Fut7G4uIj3338f0WgUnU4Hy8vLXF88TB1pmIzfMAysra1hYmICHo8HGxsbWF9fR7vdZquMWCyGZDKJDz74ANFoFIZh4PLlywgGg/xZBzWH+q2BykB//OMf4XQ6MTc3h729PeTzeQBPHhavvfYaOp0O4vE4Hj58iPv372N5eRnFYhHFYhGlUgnhcBhLS0tMW3r55ZextbWFdruNVCqFhYUFjI6OMgf6k08+gdfrxZUrV4Yaz2y1WlzDJxaB2Bwiepjf70cgEOCSxfMWNIEzEjgPgmEY7PsyOjr6XP6RRFCwoCczcRVFEnilUkGhUMDU1NRQY4/lchnxePxAVgGZWem6zqIOB712c3NzKHku8vkJhUJcqxO3fET7IT3OWCzGUyTiNtNms2F1dRXJZJJpNx6Pp0vxXJzPpmMQUVpVVT4Hg66BVqvF8mdLS0sAsI+SJMsy/vmf/xk//vGPMTY2xs293m6xxWLhNdA6yE43Go0OdLo0DAPZbBapVAoTExOcpYZCIfYOV1WVBZlFuhE9VImd0Wq1OPOjMKAoCm+RSTuVSkYWiwUPHz7kjJO8nOic0Tmmv0mr1cLu7i7m5ubYOI1m1YGvhFdoVlycVdd1ncdnR0ZGnjta1JkPnMCTi4u6fmNjY8/dH2kYiLSc3d1drK+v49y5c1xrjUajfEOl02kEAgFkMhn4fD4eBjhI/VzTNDx48ACyLOPSpUtdijsi6vU6vvzyS8zPz/PY3NTUFBPHKaBKkoRKpYLFxUWUSiX4/X6+iSj7oNofUYkMw+D5bZo3HwTSoxykAE83NynAHzTSR6+lko/FYuHmXj8SPG1JNU3D3t4eB2Zag1i7FjMtylLF7SvwFd+TAnSxWOQRyRs3bsDtdmNlZeVAEr8o3NxrD9wrHXfQ9W+xWPryn8VmGz0MisUibty4gWvXru2bVY/H4zxmubS0hJ2dnWPPqv9fwgycfwF1Y2u1GiYmJl7I4ClCURQUCgVUq1X2mnY4HBywSCCD1GAMw+DgNQi944j9IEkSHj58iOnpaaiqinK5zBJ+dHwqMZBKVblc3tc1pQyHMphHjx5B0zQsLy9jY2MDHo8H09PTz9w7Std17OzsYGJiggO41+s9VOiEAsnOzs5QbI1arQYAcLvdXQEO+Kq5Q/XuTqfDxnP9OI90S3c6HZRKJdYooAAvzm5TsKOhAmqQhkKhQz/jYaCHBM2q+/3+Lk1XesAQRYoYCJSREhtm2Fn1/0uYgVMAdWKLxSKSyeQLN5IpQlGULqvTg4JesVgE8NXWibZTIskeeFK7BXBosZ626lQmOOjYkiTB4/EgHA73HccTqTKUyXz00UeIRCJYWFjA6uoqAoEAIpEIstksB7ZIJIJwOAyfzwe/34+HDx8ik8ng4sWLyOVybA3h8Xhw6dIlfP755wiHwzh//jxSqRQ6nQ5kWUYymUSz2UQ8Hken08Fnn32G8fFxzMzMHHj+K5UK7t69i+XlZZ6tJ/XzeDyOzc1NRKNRFAoFVmfPZDIIhUJ9myci0uk0dnZ2sLy83Jemk8lksLe3h/n5eSSTSbbDNQyDA2+73cb58+dRKpVQqVTQ6XTg8XiwsLAAu93OjaunUdnqhWEcbVadSgk+n++5bAwBZuDcBxptzOVy7M/8IoIU0Yf984qK6TSxRNtcm80Gl8uFe/fuwev14qWXXjqQukPNoX7cwn6vPaw51Pt64MlcvdPpRDab7dKYpK20xWJh4y273c51bK/Xy7XTWq3GQryiaZkkSbzVDoVCKJVKR56gkSSJnS6tVitqtRqi0SjP2dOMvqqqMAyD6TnHJZwDQKlUQqlUQigU4nppKpVin3maQotGo6wSb7FYEAqFEA6HoaoqisXioXJ/T4N+D0cA+7Lm5zFYijADZx8QrSOTyWB8fPy5nFz4v4BYNyV9ScoYiP9I9cGTOj/Dvk8qleLtK62193f7daAH0cMGHZcEMg7LMPtB0zRsbm4iFosdehxJklhk46RADT2qBVNNtjeTpUye6rAOhwPhcPiZin286DAD5wBQ5zqVSmF0dJR9W846xPoZKRSRSMY777yDV155hQPFUUCGav3KI/0C4GEe3dlsFq1Wa6hatcViweTk5MCfk4jKUQYQqCGTzWZ5imnQrUZNqkQicWJSbrQGXdchyzJkWUaz2dxnWyE2h0QLiZN8GJ5GmIHzEFDwPIyqcpZBN+ja2ho6nQ7bFgDgUVKSt6NpESJ9U8e7Wq0ikUgMDJwPHjxAuVzGpUuXDs3K2u02CoUCk8ipCUJbYxo/NIwncnG5XO7AwEloNBp48OABLBYLVlZW+q6VaGHkrun1elnzkY5LjQ6xIWO1WlnMZXx8/Kl0DkQQzY68n2isVFVVph85nc6u+XBSZ2o2m+h0OhgdHX3umjLPC8zAOQQ0TUMqlUI4HGYOG/D812G+Duzs7KBer2N1dRWXLl3C+vo6ZFmG3W5Hs9lEMpnE8vIyHj16xPzM+fl59j8f1JCrVCp88x/ms/Pv//7vuHr1KmZmZvDw4UPMzs4il8theXkZ169fR6PRYOk54j+Gw+FD/57EtRS9mXpx9+5dbG1t4Qc/+AFmZ2ehKAo+/PBDnsnOZrNYXFyEoih4/PgxDzOsrKzA4/GwoPRxmzJ0bmdnZ2EYBj744AM0m02mpdntdszMzLAlMFGmvvvd7yIcDvOMO8kXmuiGGTiHhK7rSKfTsNvtWF9fx9TU1FBZylkD0W9EF0riZFLWKU6L0OVHEz7UUSayNP3u2toaFEXB4uLiodkYZZxUMmg2m1xq6SWg2+12PHz4EKFQiLu9vYrrRKDXNA137txBNBod6PVDFCKiAfn9/i4+qjiLTZQjm83GIsmHZZxE7ykUChgdHcXo6CiXlUQy/hdffIF79+7h7bff5uab6NZJnFk6X8QxJdMyM+M8GGbgPALooiWvnOPKj51G7O3tQdO0I2fj7XabGzCiMC81LPL5PCwWC0/LiEEV2N/4yWazaDabvBXtreuJjRLyYALQNwiJCvLZbBbRaBQjIyNdtCH6XZrmAp4E0UajwRNB/W41WguNGlKgslqtXVmtSIJPp9NoNptM3ieCvhjs6SHlcDjQbDZ5Hf2seelc0PuZNc7DYQbOI8IwDL6J4/G4eXH14LiX06AxQ+Ar1XXRrpiCNIl2PH78GK+88gpkWea6Jn2J2o/0XpQhBgIBpiUd9JkGKb9rmoZf/vKXePXVV1kS7Tig6S6R20gsAsqYfT7fgWLWZLUiyzKP4/bqYFKWSXVOEu4wu+oHwwycTwHDMFgkN5FImBfX1wgxqJbLZbz33nv4q7/6K4yPjyOdTgN4Mgbqcrng8/kQj8exurqKYDDI3MpkMolqtYpms4mJiYkj/z0puOXzeaYVkXh2NBpFLBZDPp9n8WLy+qZMdXJyEmtra4hEIkin0zybTZoAvetJpVLY3NzElStX+vI+K5UKstksIpEIa1lubW1xc8zlcqFWq2FqagrNZpN1Qy0WC+bn55kA/yx4nKcFZ0aP8yRB5OpKpYJ0Ov3CzrefBlBQsdvtGBkZwf/7f/+PJfl0XecJGLfbzQ0QwzDQaDTgdrs5SDmdzgNn3w9bAykwUa0ylUqx/TI5jk5MTKDZbKJYLMLn86Fer2N8fJyzY7JJJmfSQepS8Xicm0f9NGQlSUIul+MpJOqUU3OIGA1Ulmg0Guwv7/F4ODslFoCJ/TAzzmPgtM23nwbouo5yuczBoHc+G9hfx6Rxw2g0euwx262tra4SjrjV7mcDPAi5XO6pfc0HzaqTE2a/rfqzmFU/zTAD5zFB2UupVHrh59tPEw5TBLLb7V0ivPT946Jerx9IzB8WNBJ53DXReaAHPGXdooAI8Uz9fj9bd9DPTgr0sJJlmUd5xZFL4CulKKJoPW2Dio41SB0L2E/893g8zHoYBmbgPAGI8+3JZPLY5GUTxwMFCxLMHWSdIQaMo9w0h4GaMk8Lr9c7UOJPFMMQqU39XqdpGnK5HBuf9XJgSfCjN+NUFAXhcPjEMs52u41sNgur1cq1ZlFWjzzrxXUoisL6q8MKfdB9SAr/DoeDj0XnibJtkfRPU3C6rmNkZORAeUWCGThPCOZ8+/MBwzCQy+WgqiorPNGEksvlgtVq3bctbbVasFgsJ1arpuzuaebOyRVT5Aj33qI7OzvY2dnB5OQkJiYmugzf6F/S6VxeXobf78f6+jq2trbQbDYxPj6Oer2OV199FR9++CEikQgkScLi4iKSySQMw8D29vZTlwpEGIbB3F6n04nbt29zY5X4pUtLS3j33XcxNjYGWZZx+fJlxGIxVsOfnZ09UFCGPrPNZsPm5iav++bNm+z8EAgEUK1WMT09jVAohOvXr3NGf+XKFfh8PnZJHcZCxwycJwjDeOLql06nzfn2rwFUNqlWq5iYmEA+n8etW7cgyzKuXr2KcDiMQqHAEzsejwdXr16Fx+NBoVBgK93jol6vo9lsYmtrC7qu88RQpVLhuffZ2Vn+/2w2yx5AJD1HMnu921mLxcIq7aJjpaimbrVacffuXYyNjcFutyMQCLApmvEXaTld13n0lUYtXS5Xl6ngQY4IJH7S6XS6bFeI2kQPpkwmg1/84hf4x3/8R0xMTOzLeGnNZKVBW3WS4nO73YjFYgPXQQLbpVIJi4uL+O1vf4uFhQVcunSpqwQjKtNTs0zTNC7V0KRUMBgciklgBs5nAHpyjYyMmPPtJwBd15HNZqEoCkZHR3krJXoy0RbzZz/7Ga5evcpZBAUU4iTSzoD4ilT/o6GGgzIs6kAbhtElwwd8tTXe2NhApVLBzMwM0uk0dF2H3+/n3yW7iqmpKQ4QkiTxBFEsFkMul8PIyAjXYXv5l5lMBru7u1haWjpQho62rpIkodFo8CRXPx1MABw8yV+9t+QkUr+azSY7ApA/EjXBRMdOVVXRarUQCoVYmJi69Qetw+PxIBAIsPoVKdOL9hq0nVcUhcWx19bWsLS0BIvFwoMHNLzQr8ZJpQKv13skp1MzcD4j0Hx7JBIZ6B9zWmEYBj/RD4PFYmGPoN73AMA3yqNHj1Cr1TA2NgaXy8Vbs343qc/ng6qqLJwrNkLE96dA4ff7u+pa1CgQ10EMisePH6PT6WB2dpaJ7/RetFVst9tYWFjgrTrVI3s/30Gk9dHR0a4aHNUidV1Hq9XiYEQjoWKQpfFWqi32ZtH9goi4Fl3X0Ww2MTo6ysMGoqUwBRsAXbVTeg/6t9FoIJvNDpzrP2wdBEVRUKvVEAgEmClBgZKU5AHwmhRFQbVa5VIMBUg6hnht0WeiB8awu0QzcD5D0Hw7dSvPSvDUdR3r6+tD+cTIsgyv1wuv18tZo5glUHAEntwYgUCg77RMvV5HpVLpq4h+FFBQoixRDIyiPxAFrN6AQTU3chgV5dz6dXYtFguPO1KWRzqn/SD+vjhOKgbYTqeDhw8f4vbt23j77bcRCoXQbDbZBpm26rR2l8vFKvCdTgcjIyPY2dlBPB7fN68vZogffvgh/H4/rl69uq82XCqVIMsyN95Iz3V6epq9hRwOB9rtdlfAJBUpkiykgCbL8kDhk08++QSapmFiYoJ3GeFwmMsf9XodHo+Hlbn8fj8ymQysViv7cfn9fpTLZTgcjqEMDs327zOE1WrFxMQE7t69i4cPH+Ltt99+YYOnWG87TP2durgUNChzsVqtyOfz8Hq9kGWZL/CdnR3OnigD7BXbvXnzJlqtFl555ZV9qvyZTAaNRgOjo6NoNBqsPn/+/Hlks1l0Oh34fD5IksSfgWp/NP8tSRJ0XcfY2BharRYHMZHz2Ol08Oc//xkTExM4d+4cgP1ZLG2Hqd7q8XgQCoVYWg/4SlZOrAWSq6Oqqgc2lcTjUY2zH8bHx/HGG2+gXC7j448/hs1mw/T0NO7fv8+ukj6fD7FYDH6/H9vb27Db7ajX6/u82Okz9YK2xJVKZd/P7ty5g1qthpdffhk7Ozu4d+8efD4fHA4Hbty4gXg8jlAohPX1dXg8HjQaDYyMjPC1Ui6XUSgU4PP5cOXKFdTr9YGNu4WFBciyjPfeew9vvPEGFhcX4XK5sLGxgXw+D4fDgUgkwkZwuq7j8ePH8Pl82Nvbw8rKCuLxONfAh4GZcT5DtFotpNNpqKqKO3fu4OWXXx5IVdI0DdPT08fu6hqGgb29vaeaGTcMA1NTU323lbqusybm5cuXOTMgG1/672w2i9/97nf4+7//e6iqilKphKmpKQ6mpFMpSRLC4TCSySQajcahlhG9VCIRX375JSRJwpUrV5DL5fD48WN4PB6srKzg0aNHiEaj8Hg8SKfT8Hg8kGUZ0WiUbSJarRZrcyYSCRQKha7trbhdVxSFA0u/c3z37l1sbGzghz/8IcvKffTRR1yfLRaL7EP0+PFjzjavXr3KGeFJyMoBT7asxWKRMyiqBfai1xOKRFWOo/5FDw5ZlhGJRPj77XabG1WqqvZVX+pdD+0CDsoERdJ/oVDg93a73VzCEDNbsYnVarV4XfF4fCg6oRk4nyHq9TpUVUU4HO6aGqFARNJmAFgm7KA/WqvVwvr6OnRdx4ULF/ZlXpRN7e7uYmpqqutiEv2x6cIkPyHqqu7u7iIajXb5fdNWlWqNImlclEuj/6f6ZqVSYXdLanwMOkckKvG0oPpjq9XqCnh0XFr/MNQaqs0+beCi85XP56HrOgt1kGSeYRj8b6vV4s6uYRjMOyU623GhaRoymQwAcEPlMAV4t9sNq9UKn8937Dl1VVWZv0nroTUQb7N3HVQKofol8OTvG4lEBlpS94L+3pIkoVqtotFodH1uqkcTpzQUCnU1EoeBGTifIer1OkqlEtbW1qDrOqLRKKLRKHK5HDY2NrCwsICHDx9idHSUbSMOurnb7TZKpRJ3X3uz00ajgV/+8pf44Q9/CJvNhvX1dVy6dAl3794F8NUFNTIygosXL+LDDz9EOBzGo0ePMDMzg9nZWYTDYb5oe1WFHj58CIvFgoWFhQPXqes6bt26NVTW2+l0sLS0dGwaEGW3dOHT5Ahtf/v5qtNNKk6NUMd8GBL0QaCMSpIklrcj9HbjaVbe7/efKAuDZvWbzSYcDgc8Hs8+GpOoFCXK39Hc+klMLkmShHK5zI0d4tb22hT3ql9pmga/349IJDI0Ab7T6SCfzzNrghqPoqoUAN4piXV1qm+aGefXDMqCXC4XK4d7PB6+OEU6RLFYHGgdMSzEp2wsFusaNaTskMR7ezNPh8PB9rR0EVOwoUuELn6a6aYnt/hF7pGdTgeTk5P7AgRlt2KH2GKxHJjd6LqOra0tNBoNzM7O9u3S0nFUVUUulwOArikVUUSYMmnKwiiwjoyMPDPurXib9Ss7DHtMKhdQYBgkNExizl6vF6FQCJubm8hms5AkCbOzs6hWq7h48SL+9Kc/IRqNolwuY3JyEufPn4eu67xrOS4BvtVqscCJruu4fv06NE3jJh+VfnZ2drgm7vf7ceXKFTidThQKBTidzoHXR2/42t7eZg71nTt3+OE5MjKCarWKqakpuFwu3LhxA6FQCO12G5cuXUIsFuO1DhKpFmEGzmeIRqOBTCYzMHuh2iAp98zPz5/IpMbGxsZTiSw3m00sLCzsa3iI6OdzLn7l83n84Q9/wHe/+10u8F+9ehX5fB6jo6O4e/cupqenUSgUMDY2hkgkglKpNJCyQmvIZDLQdR3xeLzvZ2u32/jFL36Bb3/727h69SqcTidWV1dRrVahKAqTqM+fP4933nkH4+PjqNVqOH/+PKampqBpGnZ3dzEzM3OiGd/29vZQf1NSXB+0HRUfQGtra9jd3UUymcTY2FhXrZlKBZ999hkKhQLeeustxONx7vBrmoZIJMJ+SETZstvt3JSic5ZMJg8knjcaDQBgTyOR5kP1w48//hi5XA7f//73eXpH0zS43W4uV/l8PrTbbX4/IuzTMIPI3e13jh89eoRyuYylpSV89NFH/ACgsoBIn/L5fDAMA5VKBZqmMX+z3W6jXC7D5XINVaYxA+czBG2NB0HXdaRSKVaiOUqN5aBj9vLjhgVtZY6zBvrM6XQaPp+Pt4l+v581KIksTTfu7u4uZyD9LCuAJ66VqqpifHy8byAiVSS73Y5Go8F1ZZHjR3xPIrw7nU6+aSuVClwu14FTKkeFpmlIp9OYmJjgOif9S6ZpdH1QHY5G/8SGG2X+9Lehumgvd1MsN4g2JaQ1KvJNe+vtFHDtdjsT4EWaFV2bdF21Wi3cunULkiRhaWmJM/leEnwul4Pf72dWQ6fT6SKf96o0iTQ0r9fL4tLi35yk+hRFQavVQq1W493cZ599hldffRVOpxOKonSxQHoTArHX4Ha7EQwGhxYWMQPn1wxd1zkrHbaW87yDHC8PyiIJrVaLKTFUcxItK+jC3tnZgdVqxdLSEtfqes8VlUA6nQ6PPZJCfC8HkW4a0uoURYPFgN271mKxuG+uvXcbTuOIW1tbCIVC2N3dRS6Xw6uvvsrum++++y4uX76Mzc1N5kJms1mEw2F+cJDiu0gPslgs2Nvbw/r6Oq5du9ZFsgeAYrGIRqPRt7lEa+vXlBGDWC8qlQpisdg+EjwFHOpc93JaZVlGKpXal0VTYO9Xd+63DroeiNvaS4IXzw0AngYjt87ekhMdT6x1U+bZS4MbBDNwPgegLiwAtrR9kUE3xrCX1iBlInF7Slu/3kkWi8WCBw8eQFEULC0t9SXAi4ESwL5AKoKyvmg02hVo6Gbc2NiAYRiYmZnhn9P7izdjrVbD7du38corr2B8fJybHV6vtyuY09goddl9Pl/XMfsJeIiBhD6H1WrFe++9h5GREXzrW99Cs9nkANxut2G32yHLMmf/5FlEo6Bi3Z0oUpIkwel0olqtsseSmHl+9NFH8Pl8fQnwsiyj0Wjwg4ky6Egk0jWXTtcJ/S0cDgefEyLAu91u1Ot1JBKJfccxDAPXr19n3i6NWoZCIVa7Jz3SdrvNvk40oKDrOo9z0nSSOav+AsEwnnhxt1otU1F+SFDASqfTKJfLLGpBUypTU1OQJIkDh6qqXZkJ+YqT7a+u6wiHw0in0zzpZbFYujrAmqbxzSx2hQm9We3a2ho8Hk9XIBRfS+/RbreRSCQO5bOKn733PGQyGW5GvvPOO5iamkIgEMDq6irbeSSTSVy9ehX379/H+fPnIcsy7ty5A7/fD4fDgVKpxKT9arUKu92Oubm5vk0zKr30y25v376NVCqFN998E5ubm1hdXYXf78f3v/99/PnPf0YsFkMsFsPDhw/hdrvRaDSQSCT4IVMoFJDJZHDx4kWcO3cOu7u7A5kXiqKg0Wjgf/7nf/C9730PV65cgd1ux507d5gAH4vFOLN0uVz44osv4Ha7kU6ncfXqVSwtLUFVVaRSKVMd6UUD8RFJ3ccURR4etVoNtVoNa2truHv3Lnw+H958801cv34dsVgMkUiEifF0kyYSCaiqyttbt9uNCxcuMGlbVNQhxsBHH32E6elpnpoZNIOuqirXFonV0LulFDNLwzC6BDaedtdBNUUx0PVuUVutFj80xGtMfL1Yj93b20MymTzSw1zXdRYtJgI8MQKouacoSpf4Cr2GapyEVqvFk0WDQL/XbreRz+dZKISodb11TjrvnU4HiqJwDZiYFYfBDJzPGYy/EMiJwnGSArunGbVabd+4oqIoTNfpN6Ui3qR0GzSbTUiShEgkwkwBMVsUbX4pe6T/t1qt+M1vfoPz589jcXGRt6UWiwWNRoPFSUjdfXt7m6lqPp8PkUgE1WoVqqo+lWkcnYdyuXyiOxbD6D9RdhgURUE6nebd1NOAOuyRSGRori+VimRZhiRJPBsvlgVsNhuLWBN/dtj6JmAGzucS9OTMZDIYGxszPa6HgKIoyOVyxw4YNKgwrFhI75a5XC6jVqshFoshEAhgZ2cHm5ub6HQ6SCaTPLM/MzOD69evs+LPhQsX4PV6oaoq9vb2WKrtNKBer6PRaBxZ2Jk656OjowNfo2kaCyPHYjGukRaLRZbwE72WRNaBqDTv8Xj6DpUMghk4n1NQQySdTiMej5u6ni8Q6GYWb9x+CkPitIzIOSRVotPy96ZBkL29Pei6jkgkgkwmw06aHo8HkUgEbrcb1WoVmUwG7XYbKysrqNVqXbPuvSDBDkVRMDU1hS+++AKXLl3C9PQ0vF4v7t69y8MeTqcTc3Nz+PTTTxGNRlGpVBCPx7G4uAhJklCr1ZBMJof6TKY60nMKi+WJ3FgymeRmRW/j4LTcWKcNNpuN63GU1VADQ+RkUv3U4XCwOtRxebT/V+jlyPbWU+nnDx8+RLlcxoULF2AYBgKBAHRdZxqToijcmCLdBlJI6hUxHsS8uHz5Mk+lTU9Pw+PxcP3U7/fzMWiUkjQUgsEg/H4/z9AfxSvMzDhfAJACut1ux+bmJiKRyL4JHxMmBuFphyEOer92u42bN2+iXq9jZWWFmQG9JPhUKoVOp4OxsTEEg8F946a9jSsRiqKgUqlwcBPFSCiLt1qtePDgASwWC86dO8f16lqthnq9zqR+kQtLW3WiSFksFk5MzBrnKQNxPSuVCiYnJ82tu4mhUa1WUSwWh1JcUlUVc3NzALotlnuHEuiLDPGIsN9P2JnYIs1mkyekBk3UUXD0eDzw+Xzw+XxdavyUwRMXVNM0nvpKJBJotVrweDzwer0ssNIr9ELZPvFV6VhHMVg0A+cLBOMvM7bNZtPkepoYGsVikSdtqHZO3XyaGycLZdIspQAj+s9TcKSR2S+++AJerxcXLlwYGHAURWF9T7LYoDFXCohEtqfXA08CqCRJCAaD7O/UC5HCRHXijz/+GJubm/jRj37EwVC8T1wuFwdRCr4kug1g6PvKDJwvGAzjiUxXpVIxuZ4mBoJua7IUId8m0p+MRqNwOBx4+PAhrFYrtra2kEgkeDczTPCQJIm96ftBVVX87Gc/w3e/+128+uqrcDgcuHXrFvL5PFOcqtUqLl++jHfeeQfxeBzr6+uIxWL427/9WxiGga2trQPtgXtRq9VY9LhUKuHGjRuQZRmLi4tIpVJYWVnB5uYmm8aNjo7i4sWLsNlsyGazCAQCQzEqzMD5AsLkep5dGIaBYrHITpikfDRozv+DDz6Ay+XCD37wA7jdbm6CiJYgIg81nU4fS/m9F7SdzufzPHElaoICYN97ajYRKV2WZYTD4SPVHkn7wTAM3ubTbDvVXul80cguOYHabDaMjo6aGedpBm1PTA/35xNUWzsqrFZrV6AQu9TkT0RWySQKTI0YkbNI1CfilpKn0DC4fPnyiV9LNItPFsGKonSJhlBZwOl0suAG1fGPuhYKjI1Gg8sRg0Q+KGM+isAHYAbOFx6dTgepVAqxWOxYo3omThbEfjjq3yObzbISkaivSbQlamCQLccwu41iscgk78NQKBQwPz9/6HvSZA4Arl0OApWXSFiDPouoQiWOQJI5nN/vRygUOpFafr8wd5x7xQycpwCk+xgIBM6UDfHzjJ2dHfh8PmQyGQSDQVQqFVboIY7u5OQkcrkcb6ElSWJOYz+pNsLu7i7Lyh02hri2tsZq/NVqlTPUQCDA5nrAE+m48fFxGIaBeDx+6DXUbrdx7949KIqCa9eu9Z3v1jQNd+7cQTKZRCAQQCQSQSqVgqZpaDabiEajUBSFnWDD4TAkScL4+DgikQhqtRoLkzztNS02kMTsVsxkn+a9TQL8KYDNZkMymUQmk0Gn00E0GjWD5zMAZUQU+HqFcYEnNb0HDx5wDbFWq8HlcqHdbrPPeL1eRzweZ48f4hGSrYmYwREpXMTY2BiTuKkuOAhke0w1UDK0a7fbvEVtNBqcucqyjGw2u6+L3ns9ibxJqlH2O180nRMOh/l96vU6P0TEzy3LMq+JttEHCYEPgmE8cdiUJKlLLo+CJW3bqcbpcDgQCASOtGMzM85TBMMwUCgUoOs6EomEGTxPELTdXF1dha7rWFlZYY4j0Vvode+//z4uXryIixcv8veA4TIbsuU9yhTLYSgWi9B1HV6v99C1kGI9NZnEz0bcR/r69NNPEQqF8NJLLx1YiyQVevJGp6Dc26ASOaOapsHj8bC/1SDous61ZJfLxa4KXq+XG0JUH1ZVFYlEguuetVqNHVapHppMJodiqpiB85SBuJ6yLGN8fPzMcj0LhQIL6R4Ew3jip07bVPpevy411d5oKy1afPTebGtra6jX60d+eOm6jqtXrx5aMyQc9v7EwMhkMl1EcBGkFuR0OhEMBvmhe1CDirJXMaj2cj4pYySbYBIupvfotSmm2icFVdJH7RUWFj+/qqq4ffs2KpUKpqen8fjxY6ysrCCZTKJSqeDzzz9Hs9nEyy+/zI2nBw8ecDaq6zq++c1vsjYnWQUfBjNwnkKYXE8glUphZGSER/BoO0hbNwoKNpsNjx49QjgcZhK46JkjBgFN03D79m3EYrGBpm6U4aRSKRaMEI9PxybbDtouUnOkWCxidHR0YMZpGAb29vaQz+cxNjaG8fHxgWswDINrmC6XC16vlzVGaStMn5lscmluOxQKDVUv733YiIpDZNZWq9Xw4x//GLFYbJ9dhqjFSRCnk3K5HEKhEDfKxA65GNjJ3G17e5tFiWkevte/CsA+p1NS3x+2zGUGzlMKon+kUim4XK5jFdi/boiF/YPEHujfXC6HRqMBTdPw+PFjzM7OQpIkzMzM4JNPPoHb7Ybdbsfu7i6uXbsGTdMQDocPpaMQRzAQCAxUau90Ovi3f/s3fPvb38bY2Bhu376Nc+fOYWdnB61WC1arFa1WC6Ojo1heXsb6+jqsVitWV1cxMzODubm5ri1sP5TLZXQ6Hfh8voGumD//+c9x9epVvP766/D5fFhfX8f29jZkWcbS0hKq1SouXbqEP/zhD4jH47h58yampqbw/e9/H8ATm92TsAcm90pFUfDpp5/C7XZjYmICX375JZxOJ3tOjY+Pw+fzIZfL4d69e3A4HPjrv/5rtFotJBKJri5877mpVqsAwBNGFFibzSaq1SrrcdJDgh4aLpeLG6pHpT6ZgfOUodPpQJIkvgBSqRR+8Ytf4J/+6Z8OnVUm0vAwM82D0Gw20W63j/x7FotlINFZ13XcvXsXhUIBly9fRiAQ4Iyml7ZjGAZ+/etfY3l5Gd/4xjc4gxKVxikLJQX0YrF4oqRvmtah2WnKOMmJknzsLRYLOp0Of8/lciGTyXTVAcWMl84N2S7TlM+gNdjtdhQKBe7U0/mhzNfr9fJIJGXAANgy46Tq5OQqSttxktuj7bhoS0Kg125vbyMYDO5z+hSV+e/evQun04nFxUUmzRP1iUZNxaArinyQh5XFYkE0Gh1aA8IMnKcM/Th7tB087IKgInsikdj3M13XuUMrSnT1YnNzE+Fw+Mg3XKFQYBtdCog0dUL0lV6Ct+gC2ZuJ7u7uotlsDlXjtFqtWFhYONJ6D8P29naXsZmoIi9O6oiWGsATk7PZ2Vn2QhKbJfR3JHuVc+fOIRgMdm1Dezv91GEmcY3eNdA6RNGLQCBwJMGLw9BoNHgG/ihQVRV+v5+no8TPJfI+6SudTuP999/HD37wA95lrK+vQ1EUhMNhNJtNXLhwAdvb28xDDYfDmJ+fB/CkMTYyMjJwhFSEGThPGci+dm9vj/l75XIZkiR1KcFQVkjZEQDMzc1BURREo9F976tpGr788ks0Gg1cuXJl3xZR13Xcvn0bkUgEyWQSxWIRfr8fuVwOPp+PnQYtFguSySRyuRx0XUetVmNvGLIzoAYByYFZrVasra2h3W7j/PnzB2bEdDnv7u52jfUd9HpZlvnmOQh0swKDnTnF81WtVrlk0BskxZufXC89Hg/C4XDfoNWvltg7XgmAGyxWqxV7e3s4d+4cGo0GWq0W/7z3ISMGdZvNxqWIkwqcYqnlqBhUmhl0HHJOILfYbDbL7prAEysO4odSlunz+dBsNlEoFDA+Pr7PYqUfTB7nKYSqqiiXy3A6nchms2i1WqhUKqyCvbCwAKfTiVqt1mUd4HA4WPygF4Zh4Pz583wh976GKCd+vx+VSgWpVAoTExOQZRmFQgE+n49N0igDojHRZrPJyj0k+iseFwCbaaXT6S5Onrh1o38//fRTJBIJDhper5e5k1tbWwDAPELKjocZj5RlGQ8ePAAArKys9A3KlUoFiqLAMAwEg0GMjIygWCxyeUBVVe4Sl8tlzgKJAZHJZBCPx/c9mESyNm3fqfsr5j7Uta7Vavjoo48AAOfOneNGFJ0PoqyR7xFtnxOJBGq1GnZ3dzE5OXkiwZO23c8adG4mJibYMZZGKmlnQUwLn8/HPNNKpQK32z00FQkwM85Th2KxyPUrsY5HoO/129qRcMj4+DgHUnrNYQ0auoy2t7d58kT0D+99be/v53K5Lv7ioMtSnDkWPc1F7/Fbt27B5/Ox5w95yUSjUWxsbLC0Wb1ex9TUFHduaes/aHsvZmWDXrO2toZMJoNr165henoauq7jxo0baLVamJyc5EmYdruNra0tOJ1OhMNhbgoVCgXY7fYD7SKGAXF6bTYbIpEI9vb2sLW1hU6nwxa8CwsLuH37Nux2OyYmJnjdnU4He3t7J9Ic+jpB1wZt5Xv1OGlH8zTz8GbgPGVot9uo1WpP/ftut5vrPzQlQ1v8W7duwW634+WXXx5Y45QkibeFR4HVan2q2e5B2NvbQzQaZQoSBYDem8QwnkiXxePxLsJ3L6+Qtm+ffPIJkskkzp07d2B3v9lsctnE7XZzg6J3qy5O9HQ6Hfj9/hM7D7quo1QqQZblLu6pGCyoUSIKBFssFsTjcVM45gCYgdPEQNDNTRJf9XodwJPg6vV692WlzxPEOtZhcLlcXXVduiVEsrZI+hZFKsTOtxgUS6US8yKp/CB2/8XOMFlBUEA7ycEFyrpIZEOSJK6LAl8R1z0eD4sGnyajuGcFM3CaGBp0qaiqimaz2TVr7XK5sLe3h2QyOXCbfRAoyznphgQRu4nD10twd7lcR25AAPunaEQmwH/8x3/gW9/6Fl577bUuXiFRYeh7RHwXSeDZbBZjY2MHEuDz+Tzq9ToikUjfRp7YSCoUCmi1WnA6nfygoy460YHEjJPoSbFYzLRnOQBm4DRxLFCAkmUZv/71rzE5OYlXX321a6rjoC0tIZfLIZlM9g0Y5JPdbrcRi8UG0kXEbXKpVIJhGH0nR6juRYHCMAyEw2EWlzjOuTCMJ/qX1WoVVqsV9+7dw+zsLNLpNJcw2u024vE4Ll68iM3NTVZidzgcWFlZ4ex1ELLZLCRJQjQa7VsLJS7rxYsXceXKFYRCIWxubiKVSkGWZSQSCXQ6HSwvL+Ojjz5CNBpFqVSCx+PBG2+8AcMwsLOz88LXOJ8lzMBp4sRgGAZ2d3d5KmdkZAR7e3twOp085+3xeDA/P4/bt2/D7/ejXC7DYrFgfn6eJ3p6oes61tfX0Ww2MTc3B7/f3/f4jx49Qr1ex/nz5zE5OcndYRqnGxkZYf1SCnJLS0ss/xYOh4eaUx4GOzs7LB5B1rXElSSfG+rsExlc0zSUSiXuBPcjvwPgskkkEhlInclkMvB4PJBlmWumNFvu9XqhqioCgQBP9VAmSt7mqqpiYmLCzDgHwKQjmTgxiDcZ6T6Gw2GoqopQKMSEY1VVuXMfiUR4G+vxeAZmOMvLy4fexKOjo/x+iqLA5XLx9jSRSMDj8XRRkILBIHNaO53OiWZXmqah0WgAQBezgRpu4nSVODFDVro0R12r1bgjTNvrUqmEXC6HlZUVPs9A9/mfmpriTLparaLZbHJZgCZlSIiYzhdxWoPBoCmKfQjMjNPEiWJzc5PFIQZt0/shk8kgFAohEAhwAH2aG5e6xOVymSeHRCI90K02rmkaXC4XIpHIiU7L0HsfFbTe3s4//TsM+Z22+tVqFYlEArIso9FodNV5RdCxrFYrXC4XgsGg2VE/BGbgNHGioNnfo4KEF2RZZr1EInl7PB5sb29DURScO3du6Fl6kfIjjhr2BtMXPUD0YwFUKhX867/+K9566y0eJ3U4HGg2m3yuA4EAyuUyrFYrfz8UCqFWq8EwDIyNjb3w5+ZZwQycJp470CVJyjrNZhPpdBp2ux1zc3Pw+XxPnZGeFRh/UYnyeDwIBALY3NzksdVkMolms4nLly/j448/5nLF4uIixsbGYBjGiakjnVaYgdPEc49+gZQyUq/Xu88szAyoT6BpGnK5HDqdDusBEP9UJMBTRk40s3a7jUgkcmyWwWmGGThNvHAQA6ksy5BlGZqmMbVnbm7uyARywzAQCoWGUsY5ynsWCoWheK2GYSAajR5L0m/Q+9KMOomOEDEf6CbAkzalWd88HGZX3cQLB7qpaeKGRDNIeZ065sOCusq1Wu3AwNnpdLj+F4lEDgzOYsAiY7VBryOpOFmWEQqFDl0rPSy8Xm9f+pQYqCuVCnv90HSQWNulZhoNCuRyOdjtdsTj8RNtlp02mBmniVOFarWKTqeD9fV16LqOeDzO3FJSTSfB2lKphFKpBFVVcfHiRTQajX3+NiKazSZ2dnZgs9kOzWqr1Spu3LiBl156CYqioFQqYWlpCaVSCcFgEHfv3sXMzAx2d3fhcrmwsLCAVqs1kKMqIp1Oo1qtYmRkBLFYbN/PDcPABx98gLm5OUxPTyMajWJvbw/lchn1eh2jo6NoNptYXFzE9evXEYlEUCqVkEgkcP78eaiqinQ6bdY4D4CZcZo4laDaJwDEYjG4XC6oqgqv18tZpcfjwfj4OHRdh8vlQqlUQqfTGWiLS6R0Esw4DMQAIPV5RVE4E56cnITb7ebgZLFYUKlUWLWcjtPrlUO/Ozo6OpD3ahgGFhYWEIlEWDaQVPO9Xi8ikQjrbc7OzvLPE4kEW06cBrbBs4SZcZo4VahWq6jVakeeAKJ59kAgsM8WlywvrFYrbt26henpaSwsLBwqR6ZpGjY2NvrOk/ei0WjA7/fD6/Xum38Xye9OpxOFQoEl4CgQDxprVRQFlUoF7Xa7r5QabdVF3qnf70coFDqzDqnDwAycJk4VSBLvaeDxeLpGPgepJJGlB3FCSceTutaKosDj8TAliFTgewcC6P1JIWlkZGTfxM5h5HfSPO2VwKNJKJfLhUajAVmWOfvsteWlz0CiJ36/32wQHQIzcJow8RQQVZJ6Pdh/85vfwO/341vf+hZTepxOJ2d2FBzFyR+bzQZZltFutzE+Pn4kkj+wP7jfuHED9+/fx09/+lNuOHk8Hh75NAyDVfc7nQ7rgZIavKIoGB0dhcvlejYn8AWHGThNmDhB0PY4l8thamoKiqLgww8/RKvVwvz8PGw2G+LxOCqVCtbW1tgc7dKlS3A6ndzcisfjx1qHqqrY29vDzMwMDMPAH//4R8iyzF48FosF09PTyOfzSKVSUFUVkiThO9/5DqLRKGRZRq1W6+vbbsIMnCZMnDgMw0CxWESz2YTX6+UtPDWB6EusK7bbbXYRPUiP8yhrIJM+Ir+LcnWGYfAxaOtO+qVUWhgbGztxXulpgRk4TZh4BhB1SmVZZlk98XajGiK5e5Kn/UmKOVOXnCaCqLbZbx0kZ+f1ek0O5yEwA6cJEyZMHBEm38CECRMmjggzcJowYcLEEWEGThMmTJg4IszAacKECRNHhBk4TZgwYeKIMAOnCRMmTBwRZuA0YcKEiSPCDJwmTJgwcUSYgdOECRMmjoj/D9MYAAO2zt62AAAAAElFTkSuQmCC" + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "
" + ], + "image/png": "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" + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "execution_count": 11 }, { "cell_type": "code", - "execution_count": null, "id": "5bb96ca8492e74d", "metadata": { "ExecuteTime": { - "end_time": "2025-02-09T15:52:16.272002Z", - "start_time": "2025-02-09T15:52:13.379954Z" + "end_time": "2025-02-11T16:50:05.435066Z", + "start_time": "2025-02-11T16:50:03.988772Z" } }, - "outputs": [], "source": [ "test_data['score'] = light_model.predict(test_data[feature_columns])\n", "predictions = test_data.loc[test_data.groupby('trade_date')['score'].idxmax()]" - ] + ], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "C:\\Users\\liaozhaorun\\AppData\\Local\\Temp\\ipykernel_5800\\1422049760.py:1: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " test_data['score'] = light_model.predict(test_data[feature_columns])\n" + ] + } + ], + "execution_count": 12 }, { "cell_type": "code", - "execution_count": null, "id": "5d1522a7538db91b", "metadata": { "ExecuteTime": { - "end_time": "2025-02-09T15:52:16.381786Z", - "start_time": "2025-02-09T15:52:16.272002Z" + "end_time": "2025-02-11T16:50:05.530654Z", + "start_time": "2025-02-11T16:50:05.439067Z" } }, - "outputs": [], "source": [ "predictions[['trade_date', 'score', 'ts_code']].to_csv('predictions.tsv', index=False)" - ] + ], + "outputs": [], + "execution_count": 13 }, { "cell_type": "code", - "execution_count": null, "id": "b427ce41-9739-4e9e-bea8-5f2551fec5d7", - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2025-02-11T16:50:05.576808Z", + "start_time": "2025-02-11T16:50:05.563061Z" + } + }, + "source": [], "outputs": [], - "source": [] + "execution_count": null } ], "metadata": { diff --git a/code/train/V1.2.ipynb b/code/train/V1.2.ipynb index 1dbf13f..cd10a33 100644 --- a/code/train/V1.2.ipynb +++ b/code/train/V1.2.ipynb @@ -2,24 +2,22 @@ "cells": [ { "cell_type": "code", - "execution_count": 1, "id": "79a7758178bafdd3", "metadata": { - "ExecuteTime": { - "end_time": "2025-02-09T15:47:01.758712Z", - "start_time": "2025-02-09T15:47:01.615180Z" - }, "jupyter": { "source_hidden": true + }, + "ExecuteTime": { + "end_time": "2025-02-14T17:33:40.203900Z", + "start_time": "2025-02-14T17:33:40.121936Z" } }, - "outputs": [], "source": [ "%load_ext autoreload\n", "%autoreload 2\n", "\n", "import pandas as pd\n", - "def read_and_merge_h5_data(h5_filename, key, columns, df=None):\n", + "def read_and_merge_h5_data(h5_filename, key, columns, df=None, join='left'):\n", " \"\"\"\n", " 读取 HDF5 文件中的数据,根据指定的 columns 筛选数据,\n", " 如果传入 df 参数,则将其与读取的数据根据 ts_code 和 trade_date 合并。\n", @@ -57,25 +55,56 @@ " data['trade_date'] = pd.to_datetime(data['trade_date'], format='%Y%m%d')\n", "\n", " # 根据 ts_code 和 trade_date 合并\n", - " merged_df = pd.merge(df, data, on=['ts_code', 'trade_date'], how='left')\n", + " merged_df = pd.merge(df, data, on=['ts_code', 'trade_date'], how=join)\n", " else:\n", " # 如果 df 为空,则直接返回读取的数据\n", " merged_df = data\n", "\n", " return merged_df\n", "\n" - ] + ], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The autoreload extension is already loaded. To reload it, use:\n", + " %reload_ext autoreload\n" + ] + } + ], + "execution_count": 32 }, { "cell_type": "code", - "execution_count": 2, "id": "a79cafb06a7e0e43", "metadata": { "ExecuteTime": { - "end_time": "2025-02-09T15:47:44.572473Z", - "start_time": "2025-02-09T15:47:01.772245Z" + "end_time": "2025-02-14T17:34:23.845554Z", + "start_time": "2025-02-14T17:33:40.211865Z" } }, + "source": [ + "print('daily data')\n", + "df = read_and_merge_h5_data('../../data/daily_data.h5', key='daily_data',\n", + " columns=['ts_code', 'trade_date', 'open', 'close', 'high', 'low', 'vol'],\n", + " df=None)\n", + "\n", + "print('daily basic')\n", + "df = read_and_merge_h5_data('../../data/daily_basic.h5', key='daily_basic',\n", + " columns=['ts_code', 'trade_date', 'turnover_rate', 'pe_ttm', 'circ_mv', 'volume_ratio',\n", + " 'is_st'], df=df, join='inner')\n", + "\n", + "print('stk limit')\n", + "df = read_and_merge_h5_data('../../data/stk_limit.h5', key='stk_limit',\n", + " columns=['ts_code', 'trade_date', 'pre_close', 'up_limit', 'down_limit'],\n", + " df=df)\n", + "print('money flow')\n", + "df = read_and_merge_h5_data('../../data/money_flow.h5', key='money_flow',\n", + " columns=['ts_code', 'trade_date', 'buy_sm_vol', 'sell_sm_vol', 'buy_lg_vol', 'sell_lg_vol',\n", + " 'buy_elg_vol', 'sell_elg_vol', 'net_mf_vol'],\n", + " df=df)" + ], "outputs": [ { "name": "stdout", @@ -88,60 +117,36 @@ ] } ], - "source": [ - "print('daily data')\n", - "df = read_and_merge_h5_data('../../data/daily_data.h5', key='daily_data',\n", - " columns=['ts_code', 'trade_date', 'open', 'close', 'high', 'low', 'vol'],\n", - " df=None)\n", - "\n", - "print('daily basic')\n", - "df = read_and_merge_h5_data('../../data/daily_basic.h5', key='daily_basic',\n", - " columns=['ts_code', 'trade_date', 'turnover_rate', 'pe_ttm', 'circ_mv', 'volume_ratio',\n", - " 'is_st'], df=df)\n", - "\n", - "print('stk limit')\n", - "df = read_and_merge_h5_data('../../data/stk_limit.h5', key='stk_limit',\n", - " columns=['ts_code', 'trade_date', 'pre_close', 'up_limit', 'down_limit'],\n", - " df=df)\n", - "print('money flow')\n", - "df = read_and_merge_h5_data('../../data/money_flow.h5', key='money_flow',\n", - " columns=['ts_code', 'trade_date', 'buy_sm_vol', 'sell_sm_vol', 'buy_lg_vol', 'sell_lg_vol',\n", - " 'buy_elg_vol', 'sell_elg_vol', 'net_mf_vol'],\n", - " df=df)" - ] + "execution_count": 33 }, { "cell_type": "code", - "execution_count": 3, "id": "c4e9e1d31da6dba6", "metadata": { "ExecuteTime": { - "end_time": "2025-02-09T15:47:44.700071Z", - "start_time": "2025-02-09T15:47:44.603849Z" - }, - "jupyter": { - "source_hidden": true + "end_time": "2025-02-14T17:34:23.956070Z", + "start_time": "2025-02-14T17:34:23.878555Z" } }, - "outputs": [], "source": [ - "origin_columns = df.columns.tolist()" - ] + "origin_columns = df.columns.tolist()\n", + "origin_columns = [col for col in origin_columns if col not in ['turnover_rate', 'pe_ttm', 'volume_ratio']]" + ], + "outputs": [], + "execution_count": 34 }, { "cell_type": "code", - "execution_count": 4, "id": "a735bc02ceb4d872", "metadata": { - "ExecuteTime": { - "end_time": "2025-02-09T15:47:44.856898Z", - "start_time": "2025-02-09T15:47:44.752186Z" - }, "jupyter": { "source_hidden": true + }, + "ExecuteTime": { + "end_time": "2025-02-14T17:34:24.082032Z", + "start_time": "2025-02-14T17:34:23.990152Z" } }, - "outputs": [], "source": [ "import numpy as np\n", "import talib\n", @@ -191,11 +196,11 @@ " df['avg_close_5'] = grouped['close'].apply(lambda x: x.rolling(window=5).mean() / x)\n", "\n", " # 计算标准差指标\n", - " df['std_return_5'] = grouped['close'].apply(lambda x: x.pct_change().shift(-1).rolling(window=5).std())\n", - " df['std_return_15'] = grouped['close'].apply(lambda x: x.pct_change().shift(-1).rolling(window=15).std())\n", - " df['std_return_25'] = grouped['close'].apply(lambda x: x.pct_change().shift(-1).rolling(window=25).std())\n", - " df['std_return_90'] = grouped['close'].apply(lambda x: x.pct_change().shift(-1).rolling(window=90).std())\n", - " df['std_return_90_2'] = grouped['close'].apply(lambda x: x.shift(10).pct_change().shift(-1).rolling(window=90).std())\n", + " df['std_return_5'] = grouped['close'].apply(lambda x: x.pct_change().rolling(window=5).std())\n", + " df['std_return_15'] = grouped['close'].apply(lambda x: x.pct_change().rolling(window=15).std())\n", + " df['std_return_25'] = grouped['close'].apply(lambda x: x.pct_change().rolling(window=25).std())\n", + " df['std_return_90'] = grouped['close'].apply(lambda x: x.pct_change().rolling(window=90).std())\n", + " df['std_return_90_2'] = grouped['close'].apply(lambda x: x.shift(10).pct_change().rolling(window=90).std())\n", "\n", " # 计算比值指标\n", " df['std_return_5 / std_return_90'] = df['std_return_5'] / df['std_return_90']\n", @@ -260,6 +265,7 @@ " df['buy_lg_vol_minus_sell_lg_vol'] = (df['buy_lg_vol'] - df['sell_lg_vol']) / df['net_mf_vol']\n", " df['buy_elg_vol_minus_sell_elg_vol'] = (df['buy_elg_vol'] - df['sell_elg_vol']) / df['net_mf_vol']\n", "\n", + " df['log(circ_mv)'] = np.log(df['circ_mv'])\n", " return df\n", "\n", "\n", @@ -268,23 +274,19 @@ " grouped = df.groupby('ts_code')\n", "\n", " # alpha_022: 当前 close 与 5 日前 close 差值\n", - " df['alpha_022'] = grouped['close'].apply(lambda x: x - x.shift(5))\n", + " df['alpha_022'] = grouped['close'].transform(lambda x: x - x.shift(5))\n", "\n", " # alpha_003: (close - open) / (high - low)\n", " df['alpha_003'] = np.where(df['high'] != df['low'],\n", " (df['close'] - df['open']) / (df['high'] - df['low']),\n", " 0)\n", "\n", - " # alpha_007: 计算过去5日内 close 与 vol 的相关性,再按 trade_date 横截面排名\n", - " df['alpha_007'] = grouped.apply(\n", - " lambda x: pd.Series(x['close'].rolling(5).corr(x['vol']), index=x.index)\n", - " ).reset_index(level=0, drop=True)\n", + " # alpha_007: 计算过去5日 close 与 vol 的相关性,并按 trade_date 排名\n", + " df['alpha_007'] = grouped.apply(lambda x: x['close'].rolling(5).corr(x['vol'])).reset_index(level=0, drop=True)\n", " df['alpha_007'] = df.groupby('trade_date', group_keys=False)['alpha_007'].rank(ascending=True, pct=True)\n", "\n", - " # alpha_013: 计算过去5日 close 之和 - 20日 close 之和,再按 trade_date 横截面排名\n", - " df['alpha_013'] = grouped.apply(\n", - " lambda x: pd.Series(x['close'].rolling(5).sum() - x['close'].rolling(20).sum(), index=x.index)\n", - " ).reset_index(level=0, drop=True)\n", + " # alpha_013: 计算过去5日 close 之和 - 20日 close 之和,并按 trade_date 排名\n", + " df['alpha_013'] = grouped['close'].transform(lambda x: x.rolling(5).sum() - x.rolling(20).sum())\n", " df['alpha_013'] = df.groupby('trade_date', group_keys=False)['alpha_013'].rank(ascending=True, pct=True)\n", "\n", " return df\n", @@ -328,27 +330,38 @@ " df['future_af35'] = grouped['act_factor3'].transform(lambda x: x.shift(-5))\n", "\n", " return df\n" - ] + ], + "outputs": [], + "execution_count": 35 }, { "cell_type": "code", - "execution_count": 5, "id": "53f86ddc0677a6d7", "metadata": { + "scrolled": true, "ExecuteTime": { - "end_time": "2025-02-09T15:49:48.641755Z", - "start_time": "2025-02-09T15:47:44.862968Z" - }, - "scrolled": true + "end_time": "2025-02-14T17:36:10.108321Z", + "start_time": "2025-02-14T17:34:24.118116Z" + } }, + "source": [ + "df = get_technical_factor(df)\n", + "df = get_act_factor(df)\n", + "df = get_money_flow_factor(df)\n", + "df = get_alpha_factor(df)\n", + "# df = get_future_data(df)\n", + "# df = df.drop(columns=origin_columns)\n", + "\n", + "print(df.info())" + ], "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", - "Index: 8369694 entries, 1964 to 8129890\n", - "Data columns (total 87 columns):\n", + "Index: 8296325 entries, 1962 to 8296323\n", + "Data columns (total 65 columns):\n", " # Column Dtype \n", "--- ------ ----- \n", " 0 ts_code object \n", @@ -362,7 +375,7 @@ " 8 pe_ttm float64 \n", " 9 circ_mv float64 \n", " 10 volume_ratio float64 \n", - " 11 is_st object \n", + " 11 is_st bool \n", " 12 up_limit float64 \n", " 13 down_limit float64 \n", " 14 buy_sm_vol float64 \n", @@ -411,170 +424,36 @@ " 57 active_buy_volume_small float64 \n", " 58 buy_lg_vol_minus_sell_lg_vol float64 \n", " 59 buy_elg_vol_minus_sell_elg_vol float64 \n", - " 60 future_return1 float64 \n", - " 61 future_return2 float64 \n", - " 62 future_return3 float64 \n", - " 63 future_return4 float64 \n", - " 64 future_return5 float64 \n", - " 65 future_return6 float64 \n", - " 66 future_return7 float64 \n", - " 67 future_close1 float64 \n", - " 68 future_close2 float64 \n", - " 69 future_close3 float64 \n", - " 70 future_close4 float64 \n", - " 71 future_close5 float64 \n", - " 72 future_af11 float64 \n", - " 73 future_af12 float64 \n", - " 74 future_af13 float64 \n", - " 75 future_af14 float64 \n", - " 76 future_af15 float64 \n", - " 77 future_af21 float64 \n", - " 78 future_af22 float64 \n", - " 79 future_af23 float64 \n", - " 80 future_af24 float64 \n", - " 81 future_af25 float64 \n", - " 82 future_af31 float64 \n", - " 83 future_af32 float64 \n", - " 84 future_af33 float64 \n", - " 85 future_af34 float64 \n", - " 86 future_af35 float64 \n", - "dtypes: datetime64[ns](1), float64(84), object(2)\n", - "memory usage: 5.5+ GB\n", + " 60 log(circ_mv) float64 \n", + " 61 alpha_022 float64 \n", + " 62 alpha_003 float64 \n", + " 63 alpha_007 float64 \n", + " 64 alpha_013 float64 \n", + "dtypes: bool(1), datetime64[ns](1), float64(62), object(1)\n", + "memory usage: 4.0+ GB\n", "None\n" ] } ], - "source": [ - "df = get_technical_factor(df)\n", - "df = get_act_factor(df)\n", - "df = get_money_flow_factor(df)\n", - "df = get_future_data(df)\n", - "# df = df.drop(columns=origin_columns)\n", - "\n", - "print(df.info())" - ] + "execution_count": 36 }, { "cell_type": "code", - "execution_count": 6, "id": "dbe2fd8021b9417f", "metadata": { - "ExecuteTime": { - "end_time": "2025-02-09T15:50:31.240188Z", - "start_time": "2025-02-09T15:49:48.842399Z" - }, "jupyter": { "source_hidden": true }, - "scrolled": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "RangeIndex: 1312816 entries, 0 to 1312815\n", - "Data columns (total 87 columns):\n", - " # Column Non-Null Count Dtype \n", - "--- ------ -------------- ----- \n", - " 0 ts_code 1312816 non-null object \n", - " 1 trade_date 1312816 non-null datetime64[ns]\n", - " 2 open 1312816 non-null float64 \n", - " 3 close 1312816 non-null float64 \n", - " 4 high 1312816 non-null float64 \n", - " 5 low 1312816 non-null float64 \n", - " 6 vol 1312816 non-null float64 \n", - " 7 turnover_rate 1312816 non-null float64 \n", - " 8 pe_ttm 1124776 non-null float64 \n", - " 9 circ_mv 1312816 non-null float64 \n", - " 10 volume_ratio 1312655 non-null float64 \n", - " 11 is_st 1312816 non-null object \n", - " 12 up_limit 1312488 non-null float64 \n", - " 13 down_limit 1312488 non-null float64 \n", - " 14 buy_sm_vol 1312268 non-null float64 \n", - " 15 sell_sm_vol 1312268 non-null float64 \n", - " 16 buy_lg_vol 1312268 non-null float64 \n", - " 17 sell_lg_vol 1312268 non-null float64 \n", - " 18 buy_elg_vol 1312268 non-null float64 \n", - " 19 sell_elg_vol 1312268 non-null float64 \n", - " 20 net_mf_vol 1312268 non-null float64 \n", - " 21 up 1312816 non-null float64 \n", - " 22 down 1312816 non-null float64 \n", - " 23 atr_14 1298995 non-null float64 \n", - " 24 atr_6 1306828 non-null float64 \n", - " 25 obv 1312816 non-null float64 \n", - " 26 maobv_6 1307823 non-null float64 \n", - " 27 obv-maobv_6 1307823 non-null float64 \n", - " 28 rsi_3 1309818 non-null float64 \n", - " 29 rsi_6 1306828 non-null float64 \n", - " 30 rsi_9 1303864 non-null float64 \n", - " 31 return_10 1302880 non-null float64 \n", - " 32 return_20 1293356 non-null float64 \n", - " 33 avg_close_5 1308820 non-null float64 \n", - " 34 std_return_5 1308425 non-null float64 \n", - " 35 std_return_15 1298600 non-null float64 \n", - " 36 std_return_25 1287756 non-null float64 \n", - " 37 std_return_90 1220157 non-null float64 \n", - " 38 std_return_90_2 1209808 non-null float64 \n", - " 39 std_return_5 / std_return_90 1220157 non-null float64 \n", - " 40 std_return_5 / std_return_25 1287756 non-null float64 \n", - " 41 std_return_90 - std_return_90_2 1209808 non-null float64 \n", - " 42 ema_5 1308820 non-null float64 \n", - " 43 ema_13 1300928 non-null float64 \n", - " 44 ema_20 1294280 non-null float64 \n", - " 45 ema_60 1252148 non-null float64 \n", - " 46 act_factor1 1307823 non-null float64 \n", - " 47 act_factor2 1299958 non-null float64 \n", - " 48 act_factor3 1293356 non-null float64 \n", - " 49 act_factor4 1251052 non-null float64 \n", - " 50 act_factor5 1251052 non-null float64 \n", - " 51 act_factor6 1299958 non-null float64 \n", - " 52 rank_act_factor1 1307823 non-null float64 \n", - " 53 rank_act_factor2 1299958 non-null float64 \n", - " 54 rank_act_factor3 1293356 non-null float64 \n", - " 55 active_buy_volume_large 1312260 non-null float64 \n", - " 56 active_buy_volume_big 1312240 non-null float64 \n", - " 57 active_buy_volume_small 1312268 non-null float64 \n", - " 58 buy_lg_vol_minus_sell_lg_vol 1312260 non-null float64 \n", - " 59 buy_elg_vol_minus_sell_elg_vol 1312245 non-null float64 \n", - " 60 future_return1 1312421 non-null float64 \n", - " 61 future_return2 1311991 non-null float64 \n", - " 62 future_return3 1311991 non-null float64 \n", - " 63 future_return4 1311991 non-null float64 \n", - " 64 future_return5 1310501 non-null float64 \n", - " 65 future_return6 1307894 non-null float64 \n", - " 66 future_return7 1301736 non-null float64 \n", - " 67 future_close1 1312421 non-null float64 \n", - " 68 future_close2 1311991 non-null float64 \n", - " 69 future_close3 1311562 non-null float64 \n", - " 70 future_close4 1311085 non-null float64 \n", - " 71 future_close5 1310501 non-null float64 \n", - " 72 future_af11 1308425 non-null float64 \n", - " 73 future_af12 1308993 non-null float64 \n", - " 74 future_af13 1309562 non-null float64 \n", - " 75 future_af14 1310083 non-null float64 \n", - " 76 future_af15 1310501 non-null float64 \n", - " 77 future_af21 1300533 non-null float64 \n", - " 78 future_af22 1301077 non-null float64 \n", - " 79 future_af23 1301626 non-null float64 \n", - " 80 future_af24 1302133 non-null float64 \n", - " 81 future_af25 1302535 non-null float64 \n", - " 82 future_af31 1293885 non-null float64 \n", - " 83 future_af32 1294388 non-null float64 \n", - " 84 future_af33 1294896 non-null float64 \n", - " 85 future_af34 1295360 non-null float64 \n", - " 86 future_af35 1295722 non-null float64 \n", - "dtypes: datetime64[ns](1), float64(84), object(2)\n", - "memory usage: 871.4+ MB\n", - "None\n" - ] + "scrolled": true, + "ExecuteTime": { + "end_time": "2025-02-14T17:36:52.088380Z", + "start_time": "2025-02-14T17:36:10.512236Z" } - ], + }, "source": [ "def filter_data(df):\n", - " df = df.groupby('trade_date').apply(lambda x: x.nlargest(1000, 'act_factor3'))\n", - " df = df[df['is_st'] == False]\n", + " # df = df.groupby('trade_date').apply(lambda x: x.nlargest(1000, 'act_factor1'))\n", + " df = df[~df['is_st']]\n", " df = df[~df['ts_code'].str.endswith('BJ')]\n", " df = df[~df['ts_code'].str.startswith('30')]\n", " df = df[~df['ts_code'].str.startswith('68')]\n", @@ -585,50 +464,107 @@ "\n", "df = filter_data(df)\n", "print(df.info())" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "5f3d9aece75318cd", - "metadata": { - "ExecuteTime": { - "end_time": "2025-02-09T15:50:31.869896Z", - "start_time": "2025-02-09T15:50:31.350003Z" - } - }, + ], "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "['up', 'down', 'atr_14', 'atr_6', 'obv', 'maobv_6', 'obv-maobv_6', 'rsi_3', 'rsi_6', 'rsi_9', 'return_10', 'return_20', 'avg_close_5', 'std_return_5', 'std_return_15', 'std_return_25', 'std_return_90', 'std_return_90_2', 'std_return_5 / std_return_90', 'std_return_5 / std_return_25', 'std_return_90 - std_return_90_2', 'ema_5', 'ema_13', 'ema_20', 'ema_60', 'act_factor1', 'act_factor2', 'act_factor3', 'act_factor4', 'act_factor5', 'act_factor6', 'rank_act_factor1', 'rank_act_factor2', 'rank_act_factor3', 'active_buy_volume_large', 'active_buy_volume_big', 'active_buy_volume_small', 'buy_lg_vol_minus_sell_lg_vol', 'buy_elg_vol_minus_sell_elg_vol']\n", - "最小日期: 2017-01-03\n", - "最大日期: 2023-12-29\n", - "152435\n", - "最小日期: 2024-01-02\n", - "最大日期: 2025-02-10\n" + "\n", + "RangeIndex: 5453316 entries, 0 to 5453315\n", + "Data columns (total 65 columns):\n", + " # Column Dtype \n", + "--- ------ ----- \n", + " 0 ts_code object \n", + " 1 trade_date datetime64[ns]\n", + " 2 open float64 \n", + " 3 close float64 \n", + " 4 high float64 \n", + " 5 low float64 \n", + " 6 vol float64 \n", + " 7 turnover_rate float64 \n", + " 8 pe_ttm float64 \n", + " 9 circ_mv float64 \n", + " 10 volume_ratio float64 \n", + " 11 is_st bool \n", + " 12 up_limit float64 \n", + " 13 down_limit float64 \n", + " 14 buy_sm_vol float64 \n", + " 15 sell_sm_vol float64 \n", + " 16 buy_lg_vol float64 \n", + " 17 sell_lg_vol float64 \n", + " 18 buy_elg_vol float64 \n", + " 19 sell_elg_vol float64 \n", + " 20 net_mf_vol float64 \n", + " 21 up float64 \n", + " 22 down float64 \n", + " 23 atr_14 float64 \n", + " 24 atr_6 float64 \n", + " 25 obv float64 \n", + " 26 maobv_6 float64 \n", + " 27 obv-maobv_6 float64 \n", + " 28 rsi_3 float64 \n", + " 29 rsi_6 float64 \n", + " 30 rsi_9 float64 \n", + " 31 return_10 float64 \n", + " 32 return_20 float64 \n", + " 33 avg_close_5 float64 \n", + " 34 std_return_5 float64 \n", + " 35 std_return_15 float64 \n", + " 36 std_return_25 float64 \n", + " 37 std_return_90 float64 \n", + " 38 std_return_90_2 float64 \n", + " 39 std_return_5 / std_return_90 float64 \n", + " 40 std_return_5 / std_return_25 float64 \n", + " 41 std_return_90 - std_return_90_2 float64 \n", + " 42 ema_5 float64 \n", + " 43 ema_13 float64 \n", + " 44 ema_20 float64 \n", + " 45 ema_60 float64 \n", + " 46 act_factor1 float64 \n", + " 47 act_factor2 float64 \n", + " 48 act_factor3 float64 \n", + " 49 act_factor4 float64 \n", + " 50 act_factor5 float64 \n", + " 51 act_factor6 float64 \n", + " 52 rank_act_factor1 float64 \n", + " 53 rank_act_factor2 float64 \n", + " 54 rank_act_factor3 float64 \n", + " 55 active_buy_volume_large float64 \n", + " 56 active_buy_volume_big float64 \n", + " 57 active_buy_volume_small float64 \n", + " 58 buy_lg_vol_minus_sell_lg_vol float64 \n", + " 59 buy_elg_vol_minus_sell_elg_vol float64 \n", + " 60 log(circ_mv) float64 \n", + " 61 alpha_022 float64 \n", + " 62 alpha_003 float64 \n", + " 63 alpha_007 float64 \n", + " 64 alpha_013 float64 \n", + "dtypes: bool(1), datetime64[ns](1), float64(62), object(1)\n", + "memory usage: 2.6+ GB\n", + "None\n" ] } ], + "execution_count": 37 + }, + { + "cell_type": "code", + "id": "5f3d9aece75318cd", + "metadata": { + "ExecuteTime": { + "end_time": "2025-02-14T17:37:16.249760Z", + "start_time": "2025-02-14T17:36:52.387540Z" + } + }, "source": [ - "def remove_outliers_iqr(series, lower_quantile=0.05, upper_quantile=0.95, threshold=1.5):\n", - " Q1 = series.quantile(lower_quantile)\n", - " Q3 = series.quantile(upper_quantile)\n", - " IQR = Q3 - Q1\n", - " lower_bound = Q1 - threshold * IQR\n", - " upper_bound = Q3 + threshold * IQR\n", - " # 过滤掉低于下边界或高于上边界的极值\n", - " return (series >= lower_bound) & (series <= upper_bound)\n", + "train_data = df[df['trade_date'] <= '2023-01-01']\n", + "test_data = df[df['trade_date'] >= '2023-01-01']\n", "\n", + "train_data = train_data.groupby('trade_date', group_keys=False).apply(lambda x: x.nlargest(1000, 'return_20'))\n", + "test_data = test_data.groupby('trade_date', group_keys=False).apply(lambda x: x.nlargest(1000, 'return_20'))\n", "\n", - "def neutralize_labels(labels, features, feature_columns, z_threshold=3, method='regression'):\n", - " labels_no_outliers = remove_outliers_iqr(labels)\n", - " return labels_no_outliers\n", - "\n", - "\n", - "train_data = df[df['trade_date'] <= '2024-01-01']\n", - "test_data = df[df['trade_date'] >= '2024-01-01']\n", + "train_data = get_future_data(train_data)\n", "\n", "feature_columns = [col for col in df.columns if col not in ['trade_date',\n", " 'ts_code',\n", @@ -643,56 +579,39 @@ "# label_index = neutralize_labels(test_data[column], test_data, feature_columns, z_threshold=3, method='regression')\n", "# test_data = test_data[label_index]\n", "\n", + "df = df[['ts_code', 'trade_date', 'open', 'close']]\n", "print(feature_columns)\n", "print(f\"最小日期: {train_data['trade_date'].min().strftime('%Y-%m-%d')}\")\n", "print(f\"最大日期: {train_data['trade_date'].max().strftime('%Y-%m-%d')}\")\n", "print(len(test_data))\n", "print(f\"最小日期: {test_data['trade_date'].min().strftime('%Y-%m-%d')}\")\n", "print(f\"最大日期: {test_data['trade_date'].max().strftime('%Y-%m-%d')}\")" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "f4f16d63ad18d1bc", - "metadata": { - "ExecuteTime": { - "end_time": "2025-02-09T15:50:34.382521Z", - "start_time": "2025-02-09T15:50:31.885550Z" - } - }, + ], "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "C:\\Users\\liaozhaorun\\AppData\\Local\\Temp\\ipykernel_113788\\2866503568.py:16: SettingWithCopyWarning: \n", - "A value is trying to be set on a copy of a slice from a DataFrame.\n", - "Try using .loc[row_indexer,col_indexer] = value instead\n", - "\n", - "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " train_data['label'] = get_label(train_data)\n", - "C:\\Users\\liaozhaorun\\AppData\\Local\\Temp\\ipykernel_113788\\2866503568.py:17: SettingWithCopyWarning: \n", - "A value is trying to be set on a copy of a slice from a DataFrame.\n", - "Try using .loc[row_indexer,col_indexer] = value instead\n", - "\n", - "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " test_data['label'] = get_label(test_data)\n" - ] - }, { "name": "stdout", "output_type": "stream", "text": [ - "913920\n", - "最小日期: 2017-06-05\n", - "最大日期: 2023-12-29\n", - "152435\n", - "最小日期: 2024-01-02\n", - "最大日期: 2025-02-10\n" + "['turnover_rate', 'pe_ttm', 'volume_ratio', 'up', 'down', 'atr_14', 'atr_6', 'obv', 'maobv_6', 'obv-maobv_6', 'rsi_3', 'rsi_6', 'rsi_9', 'return_10', 'return_20', 'avg_close_5', 'std_return_5', 'std_return_15', 'std_return_25', 'std_return_90', 'std_return_90_2', 'std_return_5 / std_return_90', 'std_return_5 / std_return_25', 'std_return_90 - std_return_90_2', 'ema_5', 'ema_13', 'ema_20', 'ema_60', 'act_factor1', 'act_factor2', 'act_factor3', 'act_factor4', 'act_factor5', 'act_factor6', 'rank_act_factor1', 'rank_act_factor2', 'rank_act_factor3', 'active_buy_volume_large', 'active_buy_volume_big', 'active_buy_volume_small', 'buy_lg_vol_minus_sell_lg_vol', 'buy_elg_vol_minus_sell_elg_vol', 'log(circ_mv)', 'alpha_022', 'alpha_003', 'alpha_007', 'alpha_013']\n", + "最小日期: 2017-01-03\n", + "最大日期: 2022-12-30\n", + "507000\n", + "最小日期: 2023-01-03\n", + "最大日期: 2025-02-12\n" ] } ], + "execution_count": 38 + }, + { + "cell_type": "code", + "id": "f4f16d63ad18d1bc", + "metadata": { + "ExecuteTime": { + "end_time": "2025-02-14T19:01:09.964760Z", + "start_time": "2025-02-14T19:01:05.892897Z" + } + }, "source": [ "def get_qcuts(series, quantiles):\n", " q = pd.qcut(series, q=quantiles, labels=False, duplicates='drop')\n", @@ -702,27 +621,52 @@ "window = 5\n", "quantiles = 20\n", "\n", + "def calculate_risk_adjusted_target(df, days=5):\n", + " df = df.sort_values(by=['ts_code', 'trade_date'])\n", + "\n", + " df['future_close'] = df.groupby('ts_code')['close'].shift(-days)\n", + " df['past_close'] = df.groupby('ts_code')['close'].shift(days)\n", + " df['future_return'] = (df['future_close'] - df['past_close']) / df['past_close']\n", + "\n", + " df['future_volatility'] = df.groupby('ts_code')['future_return'].rolling(days, min_periods=1).std().reset_index(level=0, drop=True)\n", + "\n", + " df['sharpe_ratio'] = df['future_return'] / df['future_volatility']\n", + " df['sharpe_ratio'].replace([np.inf, -np.inf], np.nan, inplace=True)\n", + "\n", + " return df['sharpe_ratio']\n", + "\n", + "\n", "\n", "def get_label(df):\n", - " labels = df['future_af11'] - df['act_factor1']\n", - " # labels = df['future_close3']\n", + " # labels = df['future_af13'] - df['act_factor1']\n", + " # labels = df['future_close5']\n", + " # labels = df['future_af11']\n", + " # labels = df['ema_5'].shift(-1) - df['close']\n", + " # labels = df['future_af15']\n", + " df['label'] = calculate_risk_adjusted_target(df, days=5)\n", + " lower_percentile = df['label'].quantile(0.01) # 1%分位数\n", + " upper_percentile = df['label'].quantile(0.99) # 99%分位数\n", + " labels = df['label'].clip(lower=lower_percentile, upper=upper_percentile)\n", + " # labels = calculate_risk_adjusted_return(df, days=3, history_days=3, method='ratio')\n", " return labels\n", "\n", - "# train_data = get_future_data(train_data)\n", - "train_data['label'] = get_label(train_data)\n", - "test_data['label'] = get_label(test_data)\n", + "train_data, test_data = train_data.replace([np.inf, -np.inf], np.nan), test_data.replace([np.inf, -np.inf], np.nan)\n", + "# train_data = train_data.dropna(subset=feature_columns)\n", + "train_data = train_data.dropna(subset=feature_columns)\n", "\n", - "train_data = train_data.dropna(subset=['label'])\n", + "train_data['label'] = get_label(train_data)\n", + "# test_data['label'] = get_label(test_data)\n", + "\n", + "# train_data = train_data.dropna(subset=['label'])\n", "# test_data = test_data.dropna(subset=['label'])\n", - "train_data = train_data.replace([np.inf, -np.inf], np.nan).dropna()\n", + "# train_data = train_data.replace([np.inf, -np.inf], np.nan).dropna()\n", "# test_data = test_data.replace([np.inf, -np.inf], np.nan).dropna()\n", "\n", - "# train_data, test_data = train_data.replace([np.inf, -np.inf], np.nan), test_data.replace([np.inf, -np.inf], np.nan)\n", - "# train_data = train_data.dropna(subset=['label'])\n", - "# train_data = train_data.dropna(subset=feature_columns)\n", - "# # test_data = test_data.dropna(subset=feature_columns)\n", + "train_data = train_data.dropna(subset=['label'])\n", "train_data = train_data.reset_index(drop=True)\n", - "# test_data = test_data.reset_index(drop=True)\n", + "\n", + "test_data = test_data.dropna(subset=feature_columns)\n", + "test_data = test_data.reset_index(drop=True)\n", "\n", "print(len(train_data))\n", "print(f\"最小日期: {train_data['trade_date'].min().strftime('%Y-%m-%d')}\")\n", @@ -730,22 +674,35 @@ "print(len(test_data))\n", "print(f\"最小日期: {test_data['trade_date'].min().strftime('%Y-%m-%d')}\")\n", "print(f\"最大日期: {test_data['trade_date'].max().strftime('%Y-%m-%d')}\")\n" - ] + ], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1067937\n", + "最小日期: 2017-06-20\n", + "最大日期: 2022-11-29\n", + "403686\n", + "最小日期: 2023-01-03\n", + "最大日期: 2025-02-12\n" + ] + } + ], + "execution_count": 92 }, { "cell_type": "code", - "execution_count": 9, "id": "8f134d435f71e9e2", "metadata": { - "ExecuteTime": { - "end_time": "2025-02-09T15:50:34.548390Z", - "start_time": "2025-02-09T15:50:34.434660Z" - }, "jupyter": { "source_hidden": true + }, + "ExecuteTime": { + "end_time": "2025-02-14T19:01:10.101871Z", + "start_time": "2025-02-14T19:01:10.011761Z" } }, - "outputs": [], "source": [ "import lightgbm as lgb\n", "import numpy as np\n", @@ -819,24 +776,7 @@ "def train_light_model(df, params, feature_columns, callbacks, evals,\n", " print_feature_importance=True, num_boost_round=100,\n", " use_optuna=False):\n", - " cache_file = 'light_model.pkl'\n", - " cache_key = generate_key(params, feature_columns, num_boost_round)\n", "\n", - " # 检查缓存文件是否存在\n", - " if os.path.exists(cache_file):\n", - " try:\n", - " with open(cache_file, 'rb') as f:\n", - " cache_data = pickle.load(f)\n", - " if cache_data.get('key') == cache_key:\n", - " print(\"加载缓存模型...\")\n", - " return cache_data.get('model')\n", - " else:\n", - " print(\"缓存模型的参数与当前参数不匹配,重新训练模型。\")\n", - " except Exception as e:\n", - " print(f\"加载缓存失败: {e},重新训练模型。\")\n", - " else:\n", - " print(\"未发现缓存模型,开始训练新模型。\")\n", - " # 确保数据按照 date 和 label 排序\n", " df_sorted = df.sort_values(by=['trade_date', 'label'], ascending=[True, False]) # 按日期升序、标签降序排序\n", " df_sorted = df_sorted.sort_values(by='trade_date')\n", " unique_dates = df_sorted['trade_date'].unique()\n", @@ -875,7 +815,7 @@ " # 打印特征重要性(如果需要)\n", " if print_feature_importance:\n", " lgb.plot_metric(evals)\n", - " lgb.plot_tree(model, figsize=(20, 8))\n", + " # lgb.plot_tree(model, figsize=(20, 8))\n", " lgb.plot_importance(model, importance_type='split', max_num_features=20)\n", " plt.show()\n", " # with open(cache_file, 'wb') as f:\n", @@ -890,7 +830,7 @@ "import pandas as pd\n", "\n", "\n", - "def train_catboost(df, num_boost_round, params=None):\n", + "def train_catboost(df, feature_columns, params=None):\n", " \"\"\"\n", " 训练 CatBoost 排序模型\n", " - df: 包含因子、date、instrument 和 label 的 DataFrame\n", @@ -901,25 +841,18 @@ "\n", " 返回训练好的模型\n", " \"\"\"\n", - " df_sorted = df.sort_values(by=['date', 'label'], ascending=[True, False])\n", + " df_sorted = df.sort_values(by=['trade_date', 'label'], ascending=[True, False])\n", "\n", - " # 提取特征和标签\n", - " feature_columns = [col for col in df.columns if col not in ['date',\n", - " 'instrument',\n", - " 'label']]\n", - " feature_columns = [col for col in feature_columns if 'future' not in col]\n", - " feature_columns = [col for col in feature_columns if 'score' not in col]\n", - "\n", - " df_sorted = df_sorted.sort_values(by='date')\n", - " unique_dates = df_sorted['date'].unique()\n", + " df_sorted = df_sorted.sort_values(by='trade_date')\n", + " unique_dates = df_sorted['trade_date'].unique()\n", " val_date_count = int(len(unique_dates) * 0.1)\n", " val_dates = unique_dates[-val_date_count:]\n", - " val_indices = df_sorted[df_sorted['date'].isin(val_dates)].index\n", - " train_indices = df_sorted[~df_sorted['date'].isin(val_dates)].index\n", + " val_indices = df_sorted[df_sorted['trade_date'].isin(val_dates)].index\n", + " train_indices = df_sorted[~df_sorted['trade_date'].isin(val_dates)].index\n", "\n", " # 获取训练集和验证集的样本\n", - " train_df = df_sorted.iloc[train_indices].sort_values(by=['date', 'label'], ascending=[True, False])\n", - " val_df = df_sorted.iloc[val_indices].sort_values(by=['date', 'label'], ascending=[True, False])\n", + " train_df = df_sorted.iloc[train_indices].sort_values(by=['trade_date', 'label'], ascending=[True, False])\n", + " val_df = df_sorted.iloc[val_indices].sort_values(by=['trade_date', 'label'], ascending=[True, False])\n", "\n", " X_train = train_df[feature_columns]\n", " y_train = train_df['label']\n", @@ -927,67 +860,71 @@ " X_val = val_df[feature_columns]\n", " y_val = val_df['label']\n", "\n", - " model = CatBoostRegressor(**params, iterations=num_boost_round)\n", + " model = CatBoostRegressor(**params)\n", " model.fit(X_train,\n", " y_train,\n", " eval_set=(X_val, y_val))\n", "\n", " return model" - ] + ], + "outputs": [], + "execution_count": 93 }, { "cell_type": "code", - "execution_count": 10, "id": "4a4542e1ed6afe7d", "metadata": { "ExecuteTime": { - "end_time": "2025-02-09T15:50:34.626736Z", - "start_time": "2025-02-09T15:50:34.548390Z" + "end_time": "2025-02-14T19:02:42.420508Z", + "start_time": "2025-02-14T19:02:42.341401Z" } }, - "outputs": [], "source": [ + "def max_drawdown_loss(y_true, y_pred):\n", + " # y_true和y_pred表示资产的实际和预测回报序列\n", + " cumulative_return = np.cumsum(y_pred) # 计算累积回报\n", + " peak = np.maximum.accumulate(cumulative_return)\n", + " drawdown = (cumulative_return - peak) / peak # 计算回撤\n", + " max_drawdown = np.min(drawdown) # 最大回撤\n", + "\n", + " loss = -max_drawdown # 最大回撤越大,损失越小,取负数使得回撤最小化\n", + " return loss, np.zeros_like(loss) # 返回损失和零梯度\n", + "\n", + "\n", + "\n", "light_params = {\n", - " 'objective': 'regression',\n", - " 'metric': 'l2',\n", + " # 'objective': 'regression',\n", + " # 'metric': 'l2',\n", + " 'objective': 'quantile', # 分位回归\n", + " 'metric': 'quantile', # 使用 quantile 作为评估指标\n", + " 'alpha': 0.75, # 90% 分位数\n", " 'learning_rate': 0.05,\n", " 'is_unbalance': True,\n", - " 'num_leaves': 2048,\n", - " 'min_data_in_leaf': 16,\n", - " 'max_depth': 10,\n", + " 'num_leaves': 64,\n", + " 'min_data_in_leaf': 128,\n", + " 'max_depth': 6,\n", " 'max_bin': 1024,\n", - " 'nthread': 2,\n", " 'feature_fraction': 0.7,\n", " 'bagging_fraction': 0.7,\n", " 'bagging_freq': 5,\n", - " 'lambda_l1': 80,\n", - " 'lambda_l2': 65,\n", + " 'lambda_l1': 1,\n", + " 'lambda_l2': 1,\n", + " # 'boosting_type': 'dart',\n", " 'verbosity': -1\n", "}" - ] + ], + "outputs": [], + "execution_count": 96 }, { "cell_type": "code", - "execution_count": null, "id": "beeb098799ecfa6a", "metadata": { "ExecuteTime": { - "end_time": "2025-02-09T15:52:13.316938Z", - "start_time": "2025-02-09T15:50:34.658007Z" + "end_time": "2025-02-14T19:05:21.315576Z", + "start_time": "2025-02-14T19:02:42.469389Z" } }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "train data size: 913920\n", - "未发现缓存模型,开始训练新模型。\n", - "Training until validation scores don't improve for 50 rounds\n", - "[500]\ttrain's l2: 0.309564\tvalid's l2: 0.257146\n" - ] - } - ], "source": [ "print('train data size: ', len(train_data))\n", "\n", @@ -997,48 +934,150 @@ " lgb.callback.record_evaluation(evals),\n", " lgb.early_stopping(50, first_metric_only=True)\n", " ], evals,\n", - " num_boost_round=1000, use_optuna=False,\n", + " num_boost_round=10000, use_optuna=False,\n", " print_feature_importance=True)" - ] + ], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "train data size: 1067937\n", + "Training until validation scores don't improve for 50 rounds\n", + "[500]\ttrain's quantile: 0.766393\tvalid's quantile: 0.783404\n", + "[1000]\ttrain's quantile: 0.749886\tvalid's quantile: 0.775331\n", + "[1500]\ttrain's quantile: 0.739319\tvalid's quantile: 0.771256\n", + "[2000]\ttrain's quantile: 0.731186\tvalid's quantile: 0.768522\n", + "[2500]\ttrain's quantile: 0.724016\tvalid's quantile: 0.766611\n", + "[3000]\ttrain's quantile: 0.717949\tvalid's quantile: 0.765331\n", + "[3500]\ttrain's quantile: 0.712718\tvalid's quantile: 0.76426\n", + "[4000]\ttrain's quantile: 0.708171\tvalid's quantile: 0.763329\n", + "[4500]\ttrain's quantile: 0.703619\tvalid's quantile: 0.762479\n", + "[5000]\ttrain's quantile: 0.699455\tvalid's quantile: 0.761843\n", + "[5500]\ttrain's quantile: 0.695762\tvalid's quantile: 0.761218\n", + "[6000]\ttrain's quantile: 0.692351\tvalid's quantile: 0.760606\n", + "[6500]\ttrain's quantile: 0.689176\tvalid's quantile: 0.760173\n", + "[7000]\ttrain's quantile: 0.686318\tvalid's quantile: 0.759704\n", + "Early stopping, best iteration is:\n", + "[7090]\ttrain's quantile: 0.685745\tvalid's quantile: 0.759607\n", + "Evaluated only: quantile\n" + ] + }, + { + "data": { + "text/plain": [ + "
" + ], + "image/png": "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tUwul9dq2+ZQFyJ7Y0AiauamT5+ON954A59++inefffdKtv5+PjA29sbv//+u831dbktQG3uq+Pr6wvAOFG3rry9vZGWlma13NYyhUJhNTkYMAY+Hx8fq+X1vSdQVby9vXHkyBGr5bb6Wh+2+rtr1y6kpqZiz549plEjAMjNzW2Q72wIjV0XInvjKTaiZq5169Z46aWXMHbsWDz++ONVthszZgyysrKg1+vRp08fq1enTp1MbWs7klCdjh07mk7/2Qow1Rk2bBjOnDmDkydPmi3/5ptvrNqGhobi77//Nlt24cIFnD9/vu6drochQ4YgPz8fv/32m9nyjRs31mp7uVwOAHWqd0Voqti2wmeffVbrfTS2260LUXPHESSiO8CSJUtqbPOPf/wDGzZswOjRozF37lz069cPUqkU169fx+7duzFu3DiMHz8eABAREYGNGzdi06ZNaNu2LRQKBSIiIurcr08++QRjx47FgAED8Pzzz6NNmzZISUnB9u3bsWHDhiq3mzdvHtauXYv7778fixYtgp+fHzZs2IBz585ZtZ06dSoee+wxzJkzBw8//DCuXr2K999/3zSC1dgef/xxLF++HI899hgWLVqE9u3b47fffsP27dsBAGJx9f+fGR4eDgD4/PPP4ebmBoVCgbCwMJunwCpER0fD09MTs2fPxptvvgmpVIoNGzZYBUp7ut26EDV3/A0maiEkEgl++ukn/Oc//8GWLVswfvx4PPjgg1iyZIlVAFq4cCGGDBmCJ598Ev369av1peOWRo4cib179yIgIADPPfcc7rvvPrz99ts1zkPx9/dHfHw8unbtin/961947LHHoFAo8PHHH1u1nTx5Mt5//31s374dY8aMwerVq7F69Wp07NixXn2uKxcXF+zatQtDhw7Fyy+/jIcffhgpKSlYtWoVAMDDw6Pa7cPCwhATE4OTJ09i6NCh6Nu3L37++edqt/H29savv/4KpVKJxx57DE888QRcXV2xadOmhjqs23a7dSFq7kSCIAj27gQR0Z3mvffew2uvvYaUlJR6TVRvqVgXail4io2IqAYVI1udO3eGTqfDrl27sHLlSjz22GMOHQJYF2rJGJCIiGqgVCqxfPlyJCcnQ6vVok2bNvj3v/+N1157zd5dsyvWhVoynmIjIiIissBJ2kREREQWGJCIiIiILDAgEREREVngJG0b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ycnBsmXLcPr0aXz99demfc6dOxeDBw/G0qVLMW7cOPz444/YuXMn9u/fX+f+iQUGJCIiIkdk14A0adIkZGVl4e2334ZarUZ4eDi2bduGkJAQAIBarTa7J5Jer8eHH36I8+fPQyqVYtiwYThw4ABCQ0NNbaKjo7Fx40a89tpreP3119GuXTts2rQJ/fv3r3P/eB8kIiIix2T3Sdpz5szBnDlzbK6LjY01+9ylSxecOHGixn1OmDABEyZMuO2+iXmKjYiIyCHZ/VEjzZmYI0hEREQOiQGpGmLeSZuIiMghMSBVgyNIREREjokBqRqcg0REROSYGJCqIeEpNiIiIofEgFQN3iiSiIjIMTEgVYMjSERERI6JAakavIqNiIjIMTEgVYMBiYiIyDExIFVDwjlIREREDokBqRpiCPbuAhEREdkBA1I1pBxBIiIickgMSDUxcB4SERGRo2FAqonAUSQiIiJHw4BUE0OZvXtARERETYwBqQYCAxIREZHDYUCqgUHPgERERORoGJBqoC/jHCQiIiJHw4BUA32Zzt5dICIioibGgFQDA+cgERERORwGpBrwFBsREZHjYUCqgUHPU2xERESOhgGpBnpexUZERORwGJBqwMv8iYiIHA8DUg04SZuIiMjxMCDVwMBJ2kRERA6HAakGnKRNRETkeBiQasA5SERERI6HAakGBj1PsRERETkaBqQaCPpSe3eBiIiImhgDUg0MZQxIREREjoYBqQYCJ2kTERE5HAakGghlWnt3gYiIiJoYA1IN9GUcQSIiInI0DEg1EDgHiYiIyOEwINWAk7SJiIgcDwNSDThJm4iIyPHYPSCtWrUKYWFhUCgU6N27N/bt21dt+w0bNqB79+5QKpUICAjAjBkzkJWVZVofGxsLkUhk9SopKalX/wycpE1ERORw7BqQNm3ahHnz5uHVV1/FiRMnMGjQIIwaNQopKSk22+/fvx/Tpk3DzJkzcebMGXz33Xc4evQoZs2aZdbO3d0darXa7KVQKOrVR44gEREROR67BqRly5Zh5syZmDVrFrp06YKYmBgEBwdj9erVNtsfOnQIoaGheO655xAWFoa77roLTz31FP766y+zdiKRCP7+/mav+hJ4FRsREZHDsVtAKi0txbFjxzBixAiz5SNGjMCBAwdsbhMdHY3r169j27ZtEAQB6enp+P7773H//febtSso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" + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "
" + ], + "image/png": "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" + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "execution_count": 97 + }, + { + "cell_type": "code", + "id": "63235069-dc59-48fb-961a-e80373e41a61", + "metadata": { + "ExecuteTime": { + "end_time": "2025-02-14T19:05:21.442954Z", + "start_time": "2025-02-14T19:05:21.364837Z" + } + }, + "source": [ + "print('train data size: ', len(train_data))\n", + "\n", + "catboost_params = {\n", + " 'loss_function': 'MAE', # 90% 分位回归\n", + " 'iterations': 5000, # 训练轮数\n", + " 'learning_rate': 0.05, # 学习率,较低以防止过拟合\n", + " 'depth': 16, # 树的深度,防止过拟合\n", + " 'l2_leaf_reg': 10.0, # L2 正则化,提高泛化能力\n", + " 'bagging_temperature': 1, # 降低过拟合\n", + " # 'subsample': 0.8, # 每轮随机 80% 的样本,减少过拟合\n", + " 'colsample_bylevel': 0.8, # 每层 80% 特征子集,防止过拟合\n", + " 'random_seed': 42, # 固定随机种子,保证可复现\n", + " 'verbose': 500, # 每 100 轮打印一次信息\n", + " 'early_stopping_rounds': 100, # 早停,防止过拟合\n", + " # 'task_type': 'GPU'\n", + "}\n", + "\n", + "# catboost_model = train_catboost(train_data, feature_columns, catboost_params)" + ], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "train data size: 1067937\n" + ] + } + ], + "execution_count": 98 }, { "cell_type": "code", - "execution_count": null, "id": "5bb96ca8492e74d", "metadata": { "ExecuteTime": { - "end_time": "2025-02-09T15:52:16.272002Z", - "start_time": "2025-02-09T15:52:13.379954Z" + "end_time": "2025-02-14T19:05:44.296879Z", + "start_time": "2025-02-14T19:05:21.450842Z" } }, - "outputs": [], "source": [ - "test_data['score'] = light_model.predict(test_data[feature_columns])\n", - "predictions = test_data.loc[test_data.groupby('trade_date')['score'].idxmax()]" - ] + "score_df = test_data\n", + "score_df['score'] = light_model.predict(score_df[feature_columns])\n", + "# train_data['score'] = catboost_model.predict(train_data[feature_columns])\n", + "predictions_test = score_df.loc[score_df.groupby('trade_date')['score'].idxmax()]\n", + "predictions_test = predictions_test[predictions_test['score'] > 0]\n", + "predictions_test[['trade_date', 'score', 'ts_code']].to_csv('predictions_test.tsv', index=False)" + ], + "outputs": [], + "execution_count": 99 }, { - "cell_type": "code", - "execution_count": null, - "id": "5d1522a7538db91b", "metadata": { "ExecuteTime": { - "end_time": "2025-02-09T15:52:16.381786Z", - "start_time": "2025-02-09T15:52:16.272002Z" + "end_time": "2025-02-14T19:06:45.153554Z", + "start_time": "2025-02-14T19:05:44.329062Z" } }, - "outputs": [], + "cell_type": "code", "source": [ - "predictions[['trade_date', 'score', 'ts_code']].to_csv('predictions.tsv', index=False)" - ] + "score_df = train_data\n", + "score_df['score'] = light_model.predict(score_df[feature_columns])\n", + "# train_data['score'] = catboost_model.predict(train_data[feature_columns])\n", + "predictions_test = score_df.loc[score_df.groupby('trade_date')['score'].idxmax()]\n", + "predictions_test = predictions_test[predictions_test['score'] > 0]\n", + "predictions_test[['trade_date', 'score', 'ts_code']].to_csv('predictions_train.tsv', index=False)" + ], + "id": "7359f89064a124d2", + "outputs": [], + "execution_count": 100 }, { "cell_type": "code", - "execution_count": null, "id": "b427ce41-9739-4e9e-bea8-5f2551fec5d7", - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2025-02-14T19:06:45.232334Z", + "start_time": "2025-02-14T19:06:45.218159Z" + } + }, + "source": [], "outputs": [], - "source": [] + "execution_count": null } ], "metadata": { diff --git a/code/train/V1.ipynb b/code/train/V1.ipynb index e0d0446..06b8da6 100644 --- a/code/train/V1.ipynb +++ b/code/train/V1.ipynb @@ -3,8 +3,8 @@ { "metadata": { "ExecuteTime": { - "end_time": "2025-02-09T14:52:54.170824Z", - "start_time": "2025-02-09T14:52:53.544850Z" + "end_time": "2025-02-11T16:39:38.576665Z", + "start_time": "2025-02-11T16:39:38.019824Z" } }, "cell_type": "code", @@ -12,28 +12,38 @@ "%load_ext autoreload\n", "%autoreload 2\n", "\n", - "from utils.utils import read_and_merge_h5_data" + "from utils.utils import read_and_merge_h5_data\n" ], "id": "79a7758178bafdd3", - "outputs": [], - "execution_count": 1 + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The autoreload extension is already loaded. To reload it, use:\n", + " %reload_ext autoreload\n" + ] + } + ], + "execution_count": 8 }, { "metadata": { "ExecuteTime": { - "end_time": "2025-02-09T14:53:36.873700Z", - "start_time": "2025-02-09T14:52:54.170824Z" + "end_time": "2025-02-11T16:40:45.842510Z", + "start_time": "2025-02-11T16:39:54.757326Z" } }, "cell_type": "code", "source": [ + "\n", "print('daily data')\n", "df = read_and_merge_h5_data('../../data/daily_data.h5', key='daily_data',\n", " columns=['ts_code', 'trade_date', 'open', 'close', 'high', 'low', 'vol'],\n", " df=None)\n", "\n", "print('daily basic')\n", - "df = read_and_merge_h5_data('../../data/daily_basic.h5', key='daily_basic_with_st',\n", + "df = read_and_merge_h5_data('../../data/daily_basic.h5', key='daily_basic',\n", " columns=['ts_code', 'trade_date', 'turnover_rate', 'pe_ttm', 'circ_mv', 'volume_ratio',\n", " 'is_st'], df=df)\n", "\n", @@ -60,26 +70,26 @@ ] } ], - "execution_count": 2 + "execution_count": 10 }, { "metadata": { "ExecuteTime": { - "end_time": "2025-02-09T14:53:37.426404Z", - "start_time": "2025-02-09T14:53:36.955552Z" + "end_time": "2025-02-11T16:40:45.905077Z", + "start_time": "2025-02-11T16:40:45.848510Z" } }, "cell_type": "code", "source": "origin_columns = df.columns.tolist()", "id": "c4e9e1d31da6dba6", "outputs": [], - "execution_count": 3 + "execution_count": 11 }, { "metadata": { "ExecuteTime": { - "end_time": "2025-02-09T14:53:38.164112Z", - "start_time": "2025-02-09T14:53:38.070007Z" + "end_time": "2025-02-11T16:40:46.016229Z", + "start_time": "2025-02-11T16:40:45.938587Z" } }, "cell_type": "code", @@ -221,13 +231,13 @@ ], "id": "a735bc02ceb4d872", "outputs": [], - "execution_count": 4 + "execution_count": 12 }, { "metadata": { "ExecuteTime": { - "end_time": "2025-02-09T14:53:49.153376Z", - "start_time": "2025-02-09T14:53:38.164112Z" + "end_time": "2025-02-11T16:40:56.805530Z", + "start_time": "2025-02-11T16:40:46.048312Z" } }, "cell_type": "code", @@ -247,8 +257,8 @@ "output_type": "stream", "text": [ "\n", - "RangeIndex: 8364308 entries, 0 to 8364307\n", - "Data columns (total 83 columns):\n", + "RangeIndex: 8375079 entries, 0 to 8375078\n", + "Data columns (total 87 columns):\n", " # Column Dtype \n", "--- ------ ----- \n", " 0 ts_code object \n", @@ -258,103 +268,106 @@ " 4 high float64 \n", " 5 low float64 \n", " 6 vol float64 \n", - " 7 is_st object \n", - " 8 up_limit float64 \n", - " 9 down_limit float64 \n", - " 10 buy_sm_vol float64 \n", - " 11 sell_sm_vol float64 \n", - " 12 buy_lg_vol float64 \n", - " 13 sell_lg_vol float64 \n", - " 14 buy_elg_vol float64 \n", - " 15 sell_elg_vol float64 \n", - " 16 net_mf_vol float64 \n", - " 17 up float64 \n", - " 18 down float64 \n", - " 19 atr_14 float64 \n", - " 20 atr_6 float64 \n", - " 21 obv float64 \n", - " 22 maobv_6 float64 \n", - " 23 obv-maobv_6 float64 \n", - " 24 rsi_3 float64 \n", - " 25 rsi_6 float64 \n", - " 26 rsi_9 float64 \n", - " 27 return_10 float64 \n", - " 28 return_20 float64 \n", - " 29 avg_close_5 float64 \n", - " 30 std_return_5 float64 \n", - " 31 std_return_15 float64 \n", - " 32 std_return_25 float64 \n", - " 33 std_return_90 float64 \n", - " 34 std_return_90_2 float64 \n", - " 35 std_return_5 / std_return_90 float64 \n", - " 36 std_return_5 / std_return_25 float64 \n", - " 37 std_return_90 - std_return_90_2 float64 \n", - " 38 ema_5 float64 \n", - " 39 ema_13 float64 \n", - " 40 ema_20 float64 \n", - " 41 ema_60 float64 \n", - " 42 act_factor1 float64 \n", - " 43 act_factor2 float64 \n", - " 44 act_factor3 float64 \n", - " 45 act_factor4 float64 \n", - " 46 act_factor5 float64 \n", - " 47 act_factor6 float64 \n", - " 48 rank_act_factor1 float64 \n", - " 49 rank_act_factor2 float64 \n", - " 50 rank_act_factor3 float64 \n", - " 51 active_buy_volume_large float64 \n", - " 52 active_buy_volume_big float64 \n", - " 53 active_buy_volume_small float64 \n", - " 54 buy_lg_vol - sell_lg_vol float64 \n", - " 55 buy_elg_vol - sell_elg_vol float64 \n", - " 56 future_return1 float64 \n", - " 57 future_return2 float64 \n", - " 58 future_return3 float64 \n", - " 59 future_return4 float64 \n", - " 60 future_return5 float64 \n", - " 61 future_return6 float64 \n", - " 62 future_return7 float64 \n", - " 63 future_close1 float64 \n", - " 64 future_close2 float64 \n", - " 65 future_close3 float64 \n", - " 66 future_close4 float64 \n", - " 67 future_close5 float64 \n", - " 68 future_af11 float64 \n", - " 69 future_af12 float64 \n", - " 70 future_af13 float64 \n", - " 71 future_af14 float64 \n", - " 72 future_af15 float64 \n", - " 73 future_af21 float64 \n", - " 74 future_af22 float64 \n", - " 75 future_af23 float64 \n", - " 76 future_af24 float64 \n", - " 77 future_af25 float64 \n", - " 78 future_af31 float64 \n", - " 79 future_af32 float64 \n", - " 80 future_af33 float64 \n", - " 81 future_af34 float64 \n", - " 82 future_af35 float64 \n", - "dtypes: datetime64[ns](1), float64(80), object(2)\n", - "memory usage: 5.2+ GB\n", + " 7 turnover_rate float64 \n", + " 8 pe_ttm float64 \n", + " 9 circ_mv float64 \n", + " 10 volume_ratio float64 \n", + " 11 is_st object \n", + " 12 up_limit float64 \n", + " 13 down_limit float64 \n", + " 14 buy_sm_vol float64 \n", + " 15 sell_sm_vol float64 \n", + " 16 buy_lg_vol float64 \n", + " 17 sell_lg_vol float64 \n", + " 18 buy_elg_vol float64 \n", + " 19 sell_elg_vol float64 \n", + " 20 net_mf_vol float64 \n", + " 21 up float64 \n", + " 22 down float64 \n", + " 23 atr_14 float64 \n", + " 24 atr_6 float64 \n", + " 25 obv float64 \n", + " 26 maobv_6 float64 \n", + " 27 obv-maobv_6 float64 \n", + " 28 rsi_3 float64 \n", + " 29 rsi_6 float64 \n", + " 30 rsi_9 float64 \n", + " 31 return_10 float64 \n", + " 32 return_20 float64 \n", + " 33 avg_close_5 float64 \n", + " 34 std_return_5 float64 \n", + " 35 std_return_15 float64 \n", + " 36 std_return_25 float64 \n", + " 37 std_return_90 float64 \n", + " 38 std_return_90_2 float64 \n", + " 39 std_return_5 / std_return_90 float64 \n", + " 40 std_return_5 / std_return_25 float64 \n", + " 41 std_return_90 - std_return_90_2 float64 \n", + " 42 ema_5 float64 \n", + " 43 ema_13 float64 \n", + " 44 ema_20 float64 \n", + " 45 ema_60 float64 \n", + " 46 act_factor1 float64 \n", + " 47 act_factor2 float64 \n", + " 48 act_factor3 float64 \n", + " 49 act_factor4 float64 \n", + " 50 act_factor5 float64 \n", + " 51 act_factor6 float64 \n", + " 52 rank_act_factor1 float64 \n", + " 53 rank_act_factor2 float64 \n", + " 54 rank_act_factor3 float64 \n", + " 55 active_buy_volume_large float64 \n", + " 56 active_buy_volume_big float64 \n", + " 57 active_buy_volume_small float64 \n", + " 58 buy_lg_vol - sell_lg_vol float64 \n", + " 59 buy_elg_vol - sell_elg_vol float64 \n", + " 60 future_return1 float64 \n", + " 61 future_return2 float64 \n", + " 62 future_return3 float64 \n", + " 63 future_return4 float64 \n", + " 64 future_return5 float64 \n", + " 65 future_return6 float64 \n", + " 66 future_return7 float64 \n", + " 67 future_close1 float64 \n", + " 68 future_close2 float64 \n", + " 69 future_close3 float64 \n", + " 70 future_close4 float64 \n", + " 71 future_close5 float64 \n", + " 72 future_af11 float64 \n", + " 73 future_af12 float64 \n", + " 74 future_af13 float64 \n", + " 75 future_af14 float64 \n", + " 76 future_af15 float64 \n", + " 77 future_af21 float64 \n", + " 78 future_af22 float64 \n", + " 79 future_af23 float64 \n", + " 80 future_af24 float64 \n", + " 81 future_af25 float64 \n", + " 82 future_af31 float64 \n", + " 83 future_af32 float64 \n", + " 84 future_af33 float64 \n", + " 85 future_af34 float64 \n", + " 86 future_af35 float64 \n", + "dtypes: datetime64[ns](1), float64(84), object(2)\n", + "memory usage: 5.4+ GB\n", "None\n" ] } ], - "execution_count": 5 + "execution_count": 13 }, { "metadata": { "ExecuteTime": { - "end_time": "2025-02-09T14:55:28.712343Z", - "start_time": "2025-02-09T14:53:49.279168Z" + "end_time": "2025-02-11T16:42:03.707721Z", + "start_time": "2025-02-11T16:40:56.889317Z" } }, "cell_type": "code", "source": [ "def filter_data(df):\n", " df = df.groupby('trade_date').apply(lambda x: x.nlargest(1000, 'act_factor3'))\n", - " df = df[df['is_st'] == False]\n", - " df = df[df['is_st'] == False]\n", + " df = df[~df['is_st']]\n", " df = df[~df['ts_code'].str.startswith('30')]\n", " df = df[~df['ts_code'].str.startswith('68')]\n", " df = df[~df['ts_code'].str.startswith('8')]\n", @@ -372,106 +385,110 @@ "output_type": "stream", "text": [ "\n", - "RangeIndex: 1136157 entries, 0 to 1136156\n", - "Data columns (total 83 columns):\n", + "RangeIndex: 1101560 entries, 0 to 1101559\n", + "Data columns (total 87 columns):\n", " # Column Non-Null Count Dtype \n", "--- ------ -------------- ----- \n", - " 0 ts_code 1136157 non-null object \n", - " 1 trade_date 1136157 non-null datetime64[ns]\n", - " 2 open 1136157 non-null float64 \n", - " 3 close 1136157 non-null float64 \n", - " 4 high 1136157 non-null float64 \n", - " 5 low 1136157 non-null float64 \n", - " 6 vol 1136157 non-null float64 \n", - " 7 is_st 1136157 non-null object \n", - " 8 up_limit 1135878 non-null float64 \n", - " 9 down_limit 1135878 non-null float64 \n", - " 10 buy_sm_vol 1135663 non-null float64 \n", - " 11 sell_sm_vol 1135663 non-null float64 \n", - " 12 buy_lg_vol 1135663 non-null float64 \n", - " 13 sell_lg_vol 1135663 non-null float64 \n", - " 14 buy_elg_vol 1135663 non-null float64 \n", - " 15 sell_elg_vol 1135663 non-null float64 \n", - " 16 net_mf_vol 1135663 non-null float64 \n", - " 17 up 1136157 non-null float64 \n", - " 18 down 1136157 non-null float64 \n", - " 19 atr_14 1136157 non-null float64 \n", - " 20 atr_6 1136157 non-null float64 \n", - " 21 obv 1136157 non-null float64 \n", - " 22 maobv_6 1136157 non-null float64 \n", - " 23 obv-maobv_6 1136157 non-null float64 \n", - " 24 rsi_3 1136157 non-null float64 \n", - " 25 rsi_6 1136157 non-null float64 \n", - " 26 rsi_9 1136157 non-null float64 \n", - " 27 return_10 1136157 non-null float64 \n", - " 28 return_20 1136157 non-null float64 \n", - " 29 avg_close_5 1136157 non-null float64 \n", - " 30 std_return_5 1136157 non-null float64 \n", - " 31 std_return_15 1136157 non-null float64 \n", - " 32 std_return_25 1136157 non-null float64 \n", - " 33 std_return_90 1136131 non-null float64 \n", - " 34 std_return_90_2 1136129 non-null float64 \n", - " 35 std_return_5 / std_return_90 1136131 non-null float64 \n", - " 36 std_return_5 / std_return_25 1136157 non-null float64 \n", - " 37 std_return_90 - std_return_90_2 1136129 non-null float64 \n", - " 38 ema_5 1136157 non-null float64 \n", - " 39 ema_13 1136157 non-null float64 \n", - " 40 ema_20 1136157 non-null float64 \n", - " 41 ema_60 1136153 non-null float64 \n", - " 42 act_factor1 1136157 non-null float64 \n", - " 43 act_factor2 1136157 non-null float64 \n", - " 44 act_factor3 1136157 non-null float64 \n", - " 45 act_factor4 1136152 non-null float64 \n", - " 46 act_factor5 1136152 non-null float64 \n", - " 47 act_factor6 1136157 non-null float64 \n", - " 48 rank_act_factor1 1136157 non-null float64 \n", - " 49 rank_act_factor2 1136157 non-null float64 \n", - " 50 rank_act_factor3 1136157 non-null float64 \n", - " 51 active_buy_volume_large 1135659 non-null float64 \n", - " 52 active_buy_volume_big 1135636 non-null float64 \n", - " 53 active_buy_volume_small 1135663 non-null float64 \n", - " 54 buy_lg_vol - sell_lg_vol 1135660 non-null float64 \n", - " 55 buy_elg_vol - sell_elg_vol 1135640 non-null float64 \n", - " 56 future_return1 1136157 non-null float64 \n", - " 57 future_return2 1136157 non-null float64 \n", - " 58 future_return3 1136157 non-null float64 \n", - " 59 future_return4 1136157 non-null float64 \n", - " 60 future_return5 1136157 non-null float64 \n", - " 61 future_return6 1136157 non-null float64 \n", - " 62 future_return7 1136157 non-null float64 \n", - " 63 future_close1 1136157 non-null float64 \n", - " 64 future_close2 1136157 non-null float64 \n", - " 65 future_close3 1136157 non-null float64 \n", - " 66 future_close4 1136157 non-null float64 \n", - " 67 future_close5 1136157 non-null float64 \n", - " 68 future_af11 1136157 non-null float64 \n", - " 69 future_af12 1136157 non-null float64 \n", - " 70 future_af13 1136157 non-null float64 \n", - " 71 future_af14 1136157 non-null float64 \n", - " 72 future_af15 1136157 non-null float64 \n", - " 73 future_af21 1136157 non-null float64 \n", - " 74 future_af22 1136157 non-null float64 \n", - " 75 future_af23 1136157 non-null float64 \n", - " 76 future_af24 1136157 non-null float64 \n", - " 77 future_af25 1136157 non-null float64 \n", - " 78 future_af31 1136157 non-null float64 \n", - " 79 future_af32 1136157 non-null float64 \n", - " 80 future_af33 1136157 non-null float64 \n", - " 81 future_af34 1136157 non-null float64 \n", - " 82 future_af35 1136157 non-null float64 \n", - "dtypes: datetime64[ns](1), float64(80), object(2)\n", - "memory usage: 719.5+ MB\n", + " 0 ts_code 1101560 non-null object \n", + " 1 trade_date 1101560 non-null datetime64[ns]\n", + " 2 open 1101560 non-null float64 \n", + " 3 close 1101560 non-null float64 \n", + " 4 high 1101560 non-null float64 \n", + " 5 low 1101560 non-null float64 \n", + " 6 vol 1101560 non-null float64 \n", + " 7 turnover_rate 1101560 non-null float64 \n", + " 8 pe_ttm 932908 non-null float64 \n", + " 9 circ_mv 1101560 non-null float64 \n", + " 10 volume_ratio 1101096 non-null float64 \n", + " 11 is_st 1101560 non-null object \n", + " 12 up_limit 1101282 non-null float64 \n", + " 13 down_limit 1101282 non-null float64 \n", + " 14 buy_sm_vol 1101069 non-null float64 \n", + " 15 sell_sm_vol 1101069 non-null float64 \n", + " 16 buy_lg_vol 1101069 non-null float64 \n", + " 17 sell_lg_vol 1101069 non-null float64 \n", + " 18 buy_elg_vol 1101069 non-null float64 \n", + " 19 sell_elg_vol 1101069 non-null float64 \n", + " 20 net_mf_vol 1101069 non-null float64 \n", + " 21 up 1101560 non-null float64 \n", + " 22 down 1101560 non-null float64 \n", + " 23 atr_14 1100687 non-null float64 \n", + " 24 atr_6 1100687 non-null float64 \n", + " 25 obv 1101560 non-null float64 \n", + " 26 maobv_6 1101560 non-null float64 \n", + " 27 obv-maobv_6 1101560 non-null float64 \n", + " 28 rsi_3 1100687 non-null float64 \n", + " 29 rsi_6 1100687 non-null float64 \n", + " 30 rsi_9 1100687 non-null float64 \n", + " 31 return_10 1101560 non-null float64 \n", + " 32 return_20 1101560 non-null float64 \n", + " 33 avg_close_5 1101560 non-null float64 \n", + " 34 std_return_5 1101560 non-null float64 \n", + " 35 std_return_15 1101560 non-null float64 \n", + " 36 std_return_25 1101559 non-null float64 \n", + " 37 std_return_90 1101533 non-null float64 \n", + " 38 std_return_90_2 1101531 non-null float64 \n", + " 39 std_return_5 / std_return_90 1101533 non-null float64 \n", + " 40 std_return_5 / std_return_25 1101559 non-null float64 \n", + " 41 std_return_90 - std_return_90_2 1101531 non-null float64 \n", + " 42 ema_5 1100687 non-null float64 \n", + " 43 ema_13 1100687 non-null float64 \n", + " 44 ema_20 1100687 non-null float64 \n", + " 45 ema_60 1100682 non-null float64 \n", + " 46 act_factor1 1100687 non-null float64 \n", + " 47 act_factor2 1100687 non-null float64 \n", + " 48 act_factor3 1100687 non-null float64 \n", + " 49 act_factor4 1100682 non-null float64 \n", + " 50 act_factor5 1100682 non-null float64 \n", + " 51 act_factor6 1100687 non-null float64 \n", + " 52 rank_act_factor1 1100687 non-null float64 \n", + " 53 rank_act_factor2 1100687 non-null float64 \n", + " 54 rank_act_factor3 1100687 non-null float64 \n", + " 55 active_buy_volume_large 1101065 non-null float64 \n", + " 56 active_buy_volume_big 1101042 non-null float64 \n", + " 57 active_buy_volume_small 1101069 non-null float64 \n", + " 58 buy_lg_vol - sell_lg_vol 1101066 non-null float64 \n", + " 59 buy_elg_vol - sell_elg_vol 1101046 non-null float64 \n", + " 60 future_return1 1101560 non-null float64 \n", + " 61 future_return2 1101560 non-null float64 \n", + " 62 future_return3 1101560 non-null float64 \n", + " 63 future_return4 1101560 non-null float64 \n", + " 64 future_return5 1101560 non-null float64 \n", + " 65 future_return6 1101560 non-null float64 \n", + " 66 future_return7 1101560 non-null float64 \n", + " 67 future_close1 1101560 non-null float64 \n", + " 68 future_close2 1101560 non-null float64 \n", + " 69 future_close3 1101560 non-null float64 \n", + " 70 future_close4 1101560 non-null float64 \n", + " 71 future_close5 1101560 non-null float64 \n", + " 72 future_af11 1100687 non-null float64 \n", + " 73 future_af12 1100687 non-null float64 \n", + " 74 future_af13 1100687 non-null float64 \n", + " 75 future_af14 1100687 non-null float64 \n", + " 76 future_af15 1100687 non-null float64 \n", + " 77 future_af21 1100687 non-null float64 \n", + " 78 future_af22 1100687 non-null float64 \n", + " 79 future_af23 1100687 non-null float64 \n", + " 80 future_af24 1100687 non-null float64 \n", + " 81 future_af25 1100687 non-null float64 \n", + " 82 future_af31 1100687 non-null float64 \n", + " 83 future_af32 1100687 non-null float64 \n", + " 84 future_af33 1100687 non-null float64 \n", + " 85 future_af34 1100687 non-null float64 \n", + " 86 future_af35 1100687 non-null float64 \n", + "dtypes: datetime64[ns](1), float64(84), object(2)\n", + "memory usage: 731.2+ MB\n", "None\n" ] } ], - "execution_count": 6 + "execution_count": 14 }, { "metadata": { "ExecuteTime": { - "end_time": "2025-02-09T15:00:45.828404Z", - "start_time": "2025-02-09T15:00:45.294830Z" + "end_time": "2025-02-11T16:42:04.317134Z", + "start_time": "2025-02-11T16:42:03.969288Z" } }, "cell_type": "code", @@ -516,17 +533,18 @@ "name": "stdout", "output_type": "stream", "text": [ - "['up', 'down', 'atr_14', 'atr_6', 'obv', 'maobv_6', 'obv-maobv_6', 'rsi_3', 'rsi_6', 'rsi_9', 'return_10', 'return_20', 'avg_close_5', 'std_return_5', 'std_return_15', 'std_return_25', 'std_return_90', 'std_return_90_2', 'std_return_5 / std_return_90', 'std_return_5 / std_return_25', 'std_return_90 - std_return_90_2', 'ema_5', 'ema_13', 'ema_20', 'ema_60', 'act_factor1', 'act_factor2', 'act_factor3', 'act_factor4', 'act_factor5', 'act_factor6', 'rank_act_factor1', 'rank_act_factor2', 'rank_act_factor3', 'active_buy_volume_large', 'active_buy_volume_big', 'active_buy_volume_small', 'buy_lg_vol - sell_lg_vol', 'buy_elg_vol - sell_elg_vol']\n" + "860933\n", + "240627\n" ] } ], - "execution_count": 19 + "execution_count": 15 }, { "metadata": { "ExecuteTime": { - "end_time": "2025-02-09T14:56:05.319915Z", - "start_time": "2025-02-09T14:56:03.355725Z" + "end_time": "2025-02-11T16:42:06.417436Z", + "start_time": "2025-02-11T16:42:04.322121Z" } }, "cell_type": "code", @@ -558,26 +576,40 @@ ], "id": "f4f16d63ad18d1bc", "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "C:\\Users\\liaozhaorun\\AppData\\Local\\Temp\\ipykernel_88940\\2181928612.py:16: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " train_data['label'], test_data['label'] = get_label(train_data), get_label(test_data)\n", + "C:\\Users\\liaozhaorun\\AppData\\Local\\Temp\\ipykernel_88940\\2181928612.py:16: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " train_data['label'], test_data['label'] = get_label(train_data), get_label(test_data)\n" + ] + }, { "name": "stdout", "output_type": "stream", "text": [ - "875004\n", - "最小日期: 2017-01-03\n", - "最大日期: 2022-12-30\n", - "260581\n", - "最小日期: 2023-01-03\n", - "最大日期: 2025-01-27\n" + "747134\n", + "184095\n" ] } ], - "execution_count": 13 + "execution_count": 16 }, { "metadata": { "ExecuteTime": { - "end_time": "2025-02-09T14:56:05.480695Z", - "start_time": "2025-02-09T14:56:05.367238Z" + "end_time": "2025-02-11T16:42:08.032246Z", + "start_time": "2025-02-11T16:42:06.481439Z" } }, "cell_type": "code", @@ -771,13 +803,13 @@ ], "id": "8f134d435f71e9e2", "outputs": [], - "execution_count": 14 + "execution_count": 17 }, { "metadata": { "ExecuteTime": { - "end_time": "2025-02-09T14:56:05.576927Z", - "start_time": "2025-02-09T14:56:05.480695Z" + "end_time": "2025-02-11T16:42:08.126033Z", + "start_time": "2025-02-11T16:42:08.047878Z" } }, "cell_type": "code", @@ -802,13 +834,13 @@ ], "id": "4a4542e1ed6afe7d", "outputs": [], - "execution_count": 15 + "execution_count": 18 }, { "metadata": { "ExecuteTime": { - "end_time": "2025-02-09T14:57:25.341222Z", - "start_time": "2025-02-09T14:56:05.640256Z" + "end_time": "2025-02-11T16:43:30.267422Z", + "start_time": "2025-02-11T16:42:08.363141Z" } }, "cell_type": "code", @@ -831,22 +863,23 @@ "name": "stdout", "output_type": "stream", "text": [ - "train data size: 875004\n", + "train data size: 747134\n", "未发现缓存模型,开始训练新模型。\n", "Training until validation scores don't improve for 50 rounds\n", + "[500]\ttrain's l2: 0.415226\tvalid's l2: 0.57674\n", "Early stopping, best iteration is:\n", - "[378]\ttrain's l2: 0.435049\tvalid's l2: 0.589178\n", + "[477]\ttrain's l2: 0.417575\tvalid's l2: 0.576627\n", "Evaluated only: l2\n" ] } ], - "execution_count": 16 + "execution_count": 19 }, { "metadata": { "ExecuteTime": { - "end_time": "2025-02-09T14:57:27.394697Z", - "start_time": "2025-02-09T14:57:25.373274Z" + "end_time": "2025-02-11T16:43:32.102494Z", + "start_time": "2025-02-11T16:43:30.315429Z" } }, "cell_type": "code", @@ -856,20 +889,20 @@ ], "id": "5bb96ca8492e74d", "outputs": [], - "execution_count": 17 + "execution_count": 20 }, { "metadata": { "ExecuteTime": { - "end_time": "2025-02-09T14:57:27.489570Z", - "start_time": "2025-02-09T14:57:27.397368Z" + "end_time": "2025-02-11T16:43:32.197091Z", + "start_time": "2025-02-11T16:43:32.107477Z" } }, "cell_type": "code", "source": "predictions[['trade_date', 'score', 'ts_code']].to_csv('predictions.csv', index=False)", "id": "5d1522a7538db91b", "outputs": [], - "execution_count": 18 + "execution_count": 21 } ], "metadata": { diff --git a/code/train/predictions.csv b/code/train/predictions.csv deleted file mode 100644 index 8feca37..0000000 --- a/code/train/predictions.csv +++ /dev/null @@ -1,486 +0,0 @@ -trade_date,score,ts_code -2023-01-03,0.6847274162535452,600965.SH -2023-01-04,0.7414192412896188,000615.SZ -2023-01-05,0.5542654290126795,000430.SZ -2023-01-06,0.6959513776962396,002640.SZ -2023-01-09,0.7412055912703203,600785.SH -2023-01-10,0.6855907318251123,002762.SZ -2023-01-11,0.7292345443148791,002719.SZ -2023-01-12,0.7309633018913224,600996.SH -2023-01-13,0.8190324397886146,002279.SZ -2023-01-16,0.784606092607123,000850.SZ -2023-01-17,0.7241262895910806,002441.SZ -2023-01-18,0.7040191348893544,002467.SZ -2023-01-19,1.4428906481799044,002195.SZ -2023-01-20,0.8043769403690574,000561.SZ -2023-01-30,0.8713260866140435,000913.SZ -2023-01-31,0.7091214216170246,002560.SZ -2023-02-01,0.8674507984004312,002576.SZ -2023-02-02,0.8435316672358789,002576.SZ -2023-02-03,0.3637794960484866,603698.SH -2023-02-06,0.8498784343039595,002401.SZ -2023-02-07,0.5210597972482388,002767.SZ -2023-02-08,0.9567872514253289,002368.SZ -2023-02-09,0.5267235816880836,002155.SZ -2023-02-10,0.8402723790587989,002348.SZ -2023-02-13,0.4846072502710197,002348.SZ -2023-02-14,0.7626025684565886,002877.SZ -2023-02-15,0.697045569808066,600225.SH -2023-02-16,0.8282986278708487,002748.SZ -2023-02-17,1.8315250204409614,601020.SH -2023-02-20,0.9746443150927466,003021.SZ -2023-02-21,1.33028636760986,002339.SZ -2023-02-22,0.7778102046341324,002167.SZ -2023-02-23,1.1313865958453686,600100.SH -2023-02-24,0.5636940136703907,000716.SZ -2023-02-27,1.1864163478203489,600557.SH -2023-02-28,1.0001756905854564,603129.SH -2023-03-01,0.859829916936714,603025.SH -2023-03-02,0.7059826582301507,603186.SH -2023-03-03,0.6713484518505006,002942.SZ -2023-03-06,0.7514650334919161,002362.SZ -2023-03-07,0.9199279895136431,002350.SZ -2023-03-08,0.7172896853160168,601872.SH -2023-03-09,1.2558830649002728,002808.SZ -2023-03-10,1.2172505980712502,003020.SZ -2023-03-13,0.5215320654292881,600363.SH -2023-03-14,1.0463998807907229,601872.SH -2023-03-15,0.583641209552904,603966.SH -2023-03-16,0.9789347178467226,603803.SH -2023-03-17,0.6572400306835567,600780.SH -2023-03-20,0.9514948440683256,601003.SH -2023-03-21,0.842214622933076,002439.SZ -2023-03-22,1.1462525936633026,601698.SH -2023-03-23,0.48812639918095935,601199.SH -2023-03-24,0.4727906220196696,601698.SH -2023-03-27,0.7956407883949915,000810.SZ -2023-03-28,0.9780023176799034,601698.SH -2023-03-29,0.7581739222176508,002558.SZ -2023-03-30,1.2088597249444364,002425.SZ -2023-03-31,1.0383208709472522,000938.SZ -2023-04-03,0.7742369597473725,001872.SZ -2023-04-04,0.8024470755073208,002858.SZ -2023-04-06,0.7607284837753079,002261.SZ -2023-04-07,0.9927088245634893,002261.SZ -2023-04-10,0.8693657271995023,603019.SH -2023-04-11,1.3756495540495381,600228.SH -2023-04-12,0.6041603413288005,002222.SZ -2023-04-13,0.7744980911161148,002777.SZ -2023-04-14,0.8672190988257731,600633.SH -2023-04-17,1.4449313652608706,603083.SH -2023-04-18,0.6773096694945689,002517.SZ -2023-04-19,2.078581022345213,002908.SZ -2023-04-20,0.9806780152085147,600203.SH -2023-04-21,0.8344159521107176,000686.SZ -2023-04-24,1.210049105329498,600749.SH -2023-04-25,1.4048193576090038,603699.SH -2023-04-26,1.4845584717530398,600750.SH -2023-04-27,1.7290167418990006,002351.SZ -2023-04-28,0.6169128309035838,002343.SZ -2023-05-04,0.406077908055111,603019.SH -2023-05-05,0.9080152593104391,603258.SH -2023-05-08,0.796876165601434,603083.SH -2023-05-09,0.9700970682165659,002291.SZ -2023-05-10,1.3258832446428042,002291.SZ -2023-05-11,0.8900850443360986,600750.SH -2023-05-12,1.0650432251092237,601318.SH -2023-05-15,0.6787099027648815,002760.SZ -2023-05-16,0.722076527194143,603357.SH -2023-05-17,1.053645140729648,603357.SH -2023-05-18,0.6034913204660662,601518.SH -2023-05-19,0.5868824391890941,000600.SZ -2023-05-22,0.7653788907870708,002315.SZ -2023-05-23,0.8498831870683509,003021.SZ -2023-05-24,0.8222394685174235,600337.SH -2023-05-25,0.9415393784400905,600587.SH -2023-05-26,0.520220425480583,000600.SZ -2023-05-29,0.6595697603731597,002334.SZ -2023-05-30,0.606477318736669,603790.SH -2023-05-31,0.694237121673502,603662.SH -2023-06-01,0.5921959927449983,603196.SH -2023-06-02,0.6895081721399422,603019.SH -2023-06-05,0.5566382152721012,001309.SZ -2023-06-06,1.892873809852157,002587.SZ -2023-06-07,0.7678242983656595,605011.SH -2023-06-08,1.0539866095101476,000938.SZ -2023-06-09,0.8147649527362582,002292.SZ -2023-06-12,0.7188933998461803,002173.SZ -2023-06-13,0.681977313547429,603097.SH -2023-06-14,0.8733642333159071,002865.SZ -2023-06-15,0.8968643954524321,603108.SH -2023-06-16,0.7840028396319321,002897.SZ -2023-06-19,0.8775653925608153,603319.SH -2023-06-20,1.0844187891842454,002902.SZ -2023-06-21,1.2927896026027148,603629.SH -2023-06-26,1.2292848291237288,002261.SZ -2023-06-27,1.3781866321602365,000938.SZ -2023-06-28,0.8540277846763247,601138.SH -2023-06-29,0.8523211757782663,603779.SH -2023-06-30,1.1754329601349267,601127.SH -2023-07-03,1.2249906293712542,603015.SH -2023-07-04,1.1084820336750372,000936.SZ -2023-07-05,1.2710980206868936,000936.SZ -2023-07-06,0.747949676257483,603728.SH -2023-07-07,0.9061602512086774,002835.SZ -2023-07-10,0.9551342600022579,002126.SZ -2023-07-11,0.966971776030953,603767.SH -2023-07-12,0.9443518376543841,601886.SH -2023-07-13,0.6769606633633086,603085.SH -2023-07-14,0.918333951173531,002036.SZ -2023-07-17,0.6569232106980998,603045.SH -2023-07-18,0.7121594789903711,002409.SZ -2023-07-19,0.7294037039105077,002548.SZ -2023-07-20,0.7381883846308512,002703.SZ -2023-07-21,0.7652204062690017,002997.SZ -2023-07-24,0.9003480376547147,000550.SZ -2023-07-25,0.6357345607310146,605020.SH -2023-07-26,0.5810885924302148,605020.SH -2023-07-27,0.8761890730266239,002316.SZ -2023-07-28,0.9028509127260252,000716.SZ -2023-07-31,0.4708956316796065,601777.SH -2023-08-01,0.5561891737811866,600763.SH -2023-08-02,0.8760196470112966,002719.SZ -2023-08-03,0.7648464404493108,002400.SZ -2023-08-04,0.7791782042380738,601799.SH -2023-08-07,0.8061135186567487,000797.SZ -2023-08-08,1.1666879365515435,600322.SH -2023-08-09,1.4355955291322207,000006.SZ -2023-08-10,1.2886157376213954,000656.SZ -2023-08-11,1.3479230675318692,002941.SZ -2023-08-14,1.0490220109983646,601377.SH -2023-08-15,1.0632174359473308,600376.SH -2023-08-16,1.050421116938835,002126.SZ -2023-08-17,0.6717173215978612,000948.SZ -2023-08-18,0.9668301556287141,002907.SZ -2023-08-21,1.1746853792925736,003005.SZ -2023-08-22,0.9584954141170795,600838.SH -2023-08-23,1.2457408517312187,001234.SZ -2023-08-24,1.0823923917882998,002999.SZ -2023-08-25,0.9378153059525566,603918.SH -2023-08-28,1.2421433405918902,603767.SH -2023-08-29,0.616127073238452,002696.SZ -2023-08-30,0.9031479500764501,000010.SZ -2023-08-31,0.8845829289455852,000010.SZ -2023-09-01,0.6016754849643945,600272.SH -2023-09-04,0.7558571185023197,600272.SH -2023-09-05,0.4028980705656072,000678.SZ -2023-09-06,0.659374499556469,603080.SH -2023-09-07,0.6245495405404559,000609.SZ -2023-09-08,0.6710722697700532,603919.SH -2023-09-11,0.6278048802992457,600546.SH -2023-09-12,0.8256329238016435,600546.SH -2023-09-13,0.9974851537103986,601127.SH -2023-09-14,1.2529240943908486,603005.SH -2023-09-15,0.6551278623697204,603306.SH -2023-09-18,0.62491397271537,000851.SZ -2023-09-19,0.9590430560641906,600293.SH -2023-09-20,0.9192992329949209,600895.SH -2023-09-21,1.303323539412371,603667.SH -2023-09-22,0.6392556165728372,002406.SZ -2023-09-25,0.550363061204975,603933.SH -2023-09-26,0.8885810012289143,000766.SZ -2023-09-27,1.3119504188158804,605588.SH -2023-09-28,0.6383963467007131,002885.SZ -2023-10-09,0.5559833174181884,603277.SH -2023-10-10,0.6746335129218759,002855.SZ -2023-10-11,0.48076279797688554,001319.SZ -2023-10-12,0.4648032423789084,002953.SZ -2023-10-13,0.7973569102606312,605588.SH -2023-10-16,0.6753500013003589,603929.SH -2023-10-17,0.939032197442827,002786.SZ -2023-10-18,1.3316765134484991,603005.SH -2023-10-19,1.5107094655109568,002728.SZ -2023-10-20,1.8033472200834302,603890.SH -2023-10-23,2.0156758075487904,000526.SZ -2023-10-24,1.733095955568728,600186.SH -2023-10-25,1.0763644734039597,002456.SZ -2023-10-26,0.6254989123134431,600155.SH -2023-10-27,0.9189894086467906,000712.SZ -2023-10-30,0.82608918468284,600839.SH -2023-10-31,0.7212314254570089,001319.SZ -2023-11-01,0.7217175319235539,002657.SZ -2023-11-02,0.7778599932153227,002456.SZ -2023-11-03,1.3422820103526423,603985.SH -2023-11-06,0.5239681122691597,600595.SH -2023-11-07,0.5067988914432168,000520.SZ -2023-11-08,0.8068628626883659,603009.SH -2023-11-09,0.795444145270753,601127.SH -2023-11-10,0.7853290033363176,600630.SH -2023-11-13,0.6675304106579922,601595.SH -2023-11-14,0.2361369659661822,000828.SZ -2023-11-15,1.3945937102768664,603598.SH -2023-11-16,0.9576360953800751,000628.SZ -2023-11-17,0.6890730621251102,603108.SH -2023-11-20,0.7909511281469108,000628.SZ -2023-11-21,0.8142228770378246,000925.SZ -2023-11-22,0.797507102177366,000550.SZ -2023-11-23,0.7063630358338048,000676.SZ -2023-11-24,1.036008941153352,002181.SZ -2023-11-27,1.0291531391754778,000503.SZ -2023-11-28,0.9076486100273481,600775.SH -2023-11-29,0.7882491062137358,000669.SZ -2023-11-30,1.0967518981113826,000669.SZ -2023-12-01,0.7311870736612255,000625.SZ -2023-12-04,1.0691371238894785,603286.SH -2023-12-05,1.3131270390024472,605188.SH -2023-12-06,0.7752257820655966,000628.SZ -2023-12-07,0.8197027217611897,600107.SH -2023-12-08,1.3967047074635028,603488.SH -2023-12-11,0.687045285463665,002277.SZ -2023-12-12,0.665884682887716,600593.SH -2023-12-13,0.654047737248992,600476.SH -2023-12-14,1.0532572750390772,603106.SH -2023-12-15,1.0658083351666034,603358.SH -2023-12-18,0.962400311858336,000766.SZ -2023-12-19,0.7287547482546808,603103.SH -2023-12-20,1.2148728495986132,002647.SZ -2023-12-21,0.7541763251442525,002858.SZ -2023-12-22,0.8726322448001688,600178.SH -2023-12-25,0.8241484608574933,605011.SH -2023-12-26,0.9109440061301425,603992.SH -2023-12-27,0.8418823218408088,002660.SZ -2023-12-28,0.6918104133614209,002238.SZ -2023-12-29,0.587505902687491,002495.SZ -2024-01-02,0.9211111544777676,002587.SZ -2024-01-03,0.7226235020970133,000691.SZ -2024-01-04,0.9569550769001772,002962.SZ -2024-01-05,1.1926365483735857,605117.SH -2024-01-08,1.2688927804343633,603032.SH -2024-01-09,0.658120719671456,002862.SZ -2024-01-10,1.0753659753822198,000698.SZ -2024-01-11,0.8894494773121738,603097.SH -2024-01-12,0.9087175987157813,600593.SH -2024-01-15,0.5892323752732013,603212.SH -2024-01-16,0.7839193778147607,000698.SZ -2024-01-17,1.0625258983405035,603172.SH -2024-01-18,1.2631347573071583,002033.SZ -2024-01-19,1.178331671274573,603579.SH -2024-01-22,1.6352965224693876,605268.SH -2024-01-23,1.4266068895392103,605117.SH -2024-01-24,0.8002314972730927,600138.SH -2024-01-25,0.6269522471780932,603099.SH -2024-01-26,1.1309900405971738,605111.SH -2024-01-29,1.125066361142788,002253.SZ -2024-01-30,1.351423375727843,003007.SZ -2024-01-31,1.5739771441257069,601138.SH -2024-02-01,1.499054147286471,002033.SZ -2024-02-02,1.5167645269468597,601038.SH -2024-02-05,1.903436398968963,000998.SZ -2024-02-06,0.8212170920332696,600705.SH -2024-02-07,0.8351364611756162,603199.SH -2024-02-08,0.6822013314565247,601998.SH -2024-02-19,0.5444839345994206,000999.SZ -2024-02-20,0.5734873097155654,603369.SH -2024-02-21,0.43260992475178217,600023.SH -2024-02-22,0.4837658423417254,000526.SZ -2024-02-23,0.25932845682914313,000157.SZ -2024-02-26,0.37391625217883473,000983.SZ -2024-02-27,0.06249364085384111,002039.SZ -2024-02-28,1.038623993098607,000680.SZ -2024-02-29,0.11792404338777529,603871.SH -2024-03-01,0.30810066963043975,603605.SH -2024-03-04,0.17622933681947947,600375.SH -2024-03-05,1.0199617166369774,002009.SZ -2024-03-06,0.7025950679251926,002209.SZ -2024-03-07,0.8130361341508562,002317.SZ -2024-03-08,0.6714948117029352,603960.SH -2024-03-11,0.7527103580484402,603960.SH -2024-03-12,0.773794092704635,603960.SH -2024-03-13,0.6395980350337678,603499.SH -2024-03-14,0.6983134888804106,603660.SH -2024-03-15,0.990357376475744,601138.SH -2024-03-18,0.4182273803259301,002075.SZ -2024-03-19,0.8116021296004745,603050.SH -2024-03-20,0.6916582321872963,605580.SH -2024-03-21,0.7126108686308776,002698.SZ -2024-03-22,0.795964501966808,603190.SH -2024-03-25,1.0652068531193497,603286.SH -2024-03-26,1.2060727717193194,002331.SZ -2024-03-27,1.8308956146424886,001696.SZ -2024-03-28,1.5762953683649072,002645.SZ -2024-03-29,0.8133804882766478,002055.SZ -2024-04-01,0.6881987381521469,002735.SZ -2024-04-02,0.9728619403924941,002085.SZ -2024-04-03,0.9735850429701983,002625.SZ -2024-04-08,0.9464502611855133,002805.SZ -2024-04-09,1.10422053943107,002085.SZ -2024-04-10,0.699553803327553,603822.SH -2024-04-11,1.2813227488155954,002544.SZ -2024-04-12,0.9677010248477915,605198.SH -2024-04-15,1.2722648770139777,002290.SZ -2024-04-16,2.1135975645782725,002521.SZ -2024-04-17,1.0448007042761251,000737.SZ -2024-04-18,1.3682438721410928,603619.SH -2024-04-19,0.6510347025537216,000933.SZ -2024-04-22,1.1007294592332375,600529.SH -2024-04-23,1.0096847778899667,002078.SZ -2024-04-24,0.5132039397179469,000949.SZ -2024-04-25,1.7289140437217827,600066.SH -2024-04-26,1.048178737250126,603556.SH -2024-04-29,0.28151131629200876,000949.SZ -2024-04-30,0.5902959535550075,605098.SH -2024-05-06,0.8659440618533316,001696.SZ -2024-05-07,0.4125483888931327,002225.SZ -2024-05-08,0.49991019731911135,002597.SZ -2024-05-09,0.8523675809088074,002590.SZ -2024-05-10,0.6072304373378594,001696.SZ -2024-05-13,0.9449133844307348,600326.SH -2024-05-14,0.756524501371889,002025.SZ -2024-05-15,0.7974348512463216,600682.SH -2024-05-16,0.9752446361705888,600644.SH -2024-05-17,1.1846986232709233,000702.SZ -2024-05-20,0.7167728676668204,002851.SZ -2024-05-21,1.071890852713521,603683.SH -2024-05-22,0.7124540930368298,600463.SH -2024-05-23,1.5016154741945653,002225.SZ -2024-05-24,1.2198831133459211,002968.SZ -2024-05-27,0.9536299254414154,000656.SZ -2024-05-28,0.8425457543469408,002761.SZ -2024-05-29,0.652762060180136,600979.SH -2024-05-30,0.9000889953940735,002455.SZ -2024-05-31,0.9330771253458983,601825.SH -2024-06-03,1.2914669574335471,001267.SZ -2024-06-04,0.829699499403838,600530.SH -2024-06-05,1.0758350766018299,002922.SZ -2024-06-06,0.8595311066455215,603360.SH -2024-06-07,1.0888503051113,002889.SZ -2024-06-11,1.0628038633716435,002475.SZ -2024-06-12,1.1159013979424315,603009.SH -2024-06-13,1.1812561799680747,600996.SH -2024-06-14,0.8256170648299659,600039.SH -2024-06-17,0.8645410455127762,000528.SZ -2024-06-18,0.6063406599939511,600996.SH -2024-06-19,0.7166446473651414,600192.SH -2024-06-20,0.932110291603618,605598.SH -2024-06-21,0.9558209107020993,603936.SH -2024-06-24,1.119014534304907,600992.SH -2024-06-25,1.3527294398026957,600584.SH -2024-06-26,0.7188166389093542,000504.SZ -2024-06-27,1.9515093336713365,002452.SZ -2024-06-28,0.8843544096493936,600889.SH -2024-07-01,0.6545882280229176,003004.SZ -2024-07-02,0.6762487770835988,600584.SH -2024-07-03,0.9128444390874889,601179.SH -2024-07-04,1.1423863246899275,603225.SH -2024-07-05,0.9324658736527716,603936.SH -2024-07-08,1.780537827812583,603328.SH -2024-07-09,0.7579237257512456,000679.SZ -2024-07-10,0.6704021737995826,605117.SH -2024-07-11,0.6117132499929072,000622.SZ -2024-07-12,1.0566477568456074,002452.SZ -2024-07-15,0.6602660923500289,605081.SH -2024-07-16,0.5502090318853736,002420.SZ -2024-07-17,0.6837622842594867,002355.SZ -2024-07-18,0.8242173773899442,002384.SZ -2024-07-19,0.9979238076969816,002384.SZ -2024-07-22,0.4982073979858695,000421.SZ -2024-07-23,1.1543952284060066,002428.SZ -2024-07-24,1.2334918071766405,605111.SH -2024-07-25,0.8987252044027945,002496.SZ -2024-07-26,0.8562640506752258,600171.SH -2024-07-29,0.5774106541432314,002750.SZ -2024-07-30,0.5406184547635255,600563.SH -2024-07-31,0.5575394015591096,002700.SZ -2024-08-01,0.3836358457058139,600099.SH -2024-08-02,0.670543769867587,605081.SH -2024-08-05,1.2561423052432321,605117.SH -2024-08-06,0.9373802633817199,000584.SZ -2024-08-07,0.8074459777954732,603032.SH -2024-08-08,0.8017404350976902,600611.SH -2024-08-09,0.9444750578832374,000659.SZ -2024-08-12,0.8308531709022774,000880.SZ -2024-08-13,0.6345130236563948,600266.SH -2024-08-14,0.7618996741024034,000159.SZ -2024-08-15,0.7957196976564392,000880.SZ -2024-08-16,0.8007104277247147,603050.SH -2024-08-19,0.8488617680848443,603444.SH -2024-08-20,1.049247341754445,002488.SZ -2024-08-21,1.2543709456137933,002488.SZ -2024-08-22,1.0702026523317902,002208.SZ -2024-08-23,1.0790725273037058,002369.SZ -2024-08-26,0.8933596937509765,000532.SZ -2024-08-27,0.9555026539273229,605318.SH -2024-08-28,0.8517730333686951,002547.SZ -2024-08-29,0.8787028549560587,003001.SZ -2024-08-30,0.5949301031458588,601898.SH -2024-09-02,1.0927036539101782,603826.SH -2024-09-03,0.5011518255679451,000810.SZ -2024-09-04,0.913670019713004,001298.SZ -2024-09-05,0.5722903163709645,600375.SH -2024-09-06,1.054280211341685,002622.SZ -2024-09-09,1.1145869455283224,600375.SH -2024-09-10,0.6071645644461853,600804.SH -2024-09-11,0.8120257237744295,002808.SZ -2024-09-12,0.7226510652354332,600148.SH -2024-09-13,1.4358476935516946,603615.SH -2024-09-18,0.8351081061832145,002946.SZ -2024-09-19,0.605865384829211,600898.SH -2024-09-20,0.9533885243905273,603398.SH -2024-09-23,1.046054385469168,601162.SH -2024-09-24,0.3758184358111333,603559.SH -2024-09-25,0.8156363720747627,600756.SH -2024-09-26,0.5051488053045387,600550.SH -2024-09-27,0.16901120016969293,002016.SZ -2024-09-30,0.03361915273177237,603106.SH -2024-10-08,0.02829952163781644,603106.SH -2024-10-09,0.15132702693149014,601336.SH -2024-10-10,0.5264407322666304,000402.SZ -2024-10-11,1.0343311919140215,600657.SH -2024-10-14,0.47180187869811324,603383.SH -2024-10-15,0.8703255693900985,603106.SH -2024-10-16,0.8602575981884926,002987.SZ -2024-10-17,0.8415090474760394,000567.SZ -2024-10-18,0.15292428350076237,002542.SZ -2024-10-21,0.4922089945140812,002457.SZ -2024-10-22,0.4176771447393169,002423.SZ -2024-10-23,0.8519606263347589,000158.SZ -2024-10-24,0.5430046541942165,000935.SZ -2024-10-25,0.18041199007445233,603016.SH -2024-10-28,0.5571845419116188,000503.SZ -2024-10-29,0.4049481417593221,002851.SZ -2024-10-30,0.7134818524722009,600463.SH -2024-10-31,0.5829203522209173,603117.SH -2024-11-01,1.2246655429458404,002851.SZ -2024-11-04,0.8176452500049061,600843.SH -2024-11-05,0.896531400955133,002514.SZ -2024-11-06,0.8080466337179094,600292.SH -2024-11-07,0.8536978345761432,600481.SH -2024-11-08,0.735404763610977,002047.SZ -2024-11-11,0.7749352489908305,002428.SZ -2024-11-12,0.8967548353595826,002428.SZ -2024-11-13,1.0199850479686239,603859.SH -2024-11-14,0.9361081815051415,603559.SH -2024-11-15,1.5997213068383358,002086.SZ -2024-11-18,1.5789594007558525,002709.SZ -2024-11-19,1.5249787983366927,603825.SH -2024-11-20,0.736292965730012,002808.SZ -2024-11-21,0.7544341372210354,603859.SH -2024-11-22,1.2744170240551567,600593.SH -2024-11-25,0.8324187454861728,600787.SH -2024-11-26,1.0752006153991913,600736.SH -2024-11-27,0.6500606694243171,002245.SZ -2024-11-28,0.8456761058883665,000833.SZ -2024-11-29,0.8489157795122361,002354.SZ -2024-12-02,0.6832024025795977,002611.SZ -2024-12-03,0.8939114413301544,603366.SH -2024-12-04,1.0277665925094743,002822.SZ -2024-12-05,0.9103466279163851,002175.SZ -2024-12-06,0.7686238693084577,002467.SZ -2024-12-09,1.0846053237578963,601933.SH -2024-12-10,1.0700371757624498,600193.SH -2024-12-11,0.7673727634361369,002520.SZ -2024-12-12,0.8497906144901559,002362.SZ -2024-12-13,1.254346634364545,603429.SH -2024-12-16,1.0386293779387827,000727.SZ -2024-12-17,1.2458109349303497,600157.SH -2024-12-18,1.3409657396440136,003002.SZ -2024-12-19,1.1408332938187322,600593.SH -2024-12-20,0.8248161307709121,002512.SZ -2024-12-23,1.1576027817247634,002336.SZ -2024-12-24,0.8652560164174093,603610.SH -2024-12-25,0.8928903216570524,002045.SZ -2024-12-26,0.7436802683703838,603214.SH -2024-12-27,0.8278524197563604,002945.SZ -2024-12-30,0.6846259683364331,600223.SH -2024-12-31,1.0514482797503029,001309.SZ -2025-01-02,1.4104671874229635,603668.SH diff --git a/code/train/predictions.tsv b/code/train/predictions.tsv deleted file mode 100644 index 6c0d8c5..0000000 --- a/code/train/predictions.tsv +++ /dev/null @@ -1,265 +0,0 @@ -trade_date,score,ts_code -2024-01-02,0.8906433047229376,002587.SZ -2024-01-03,0.800255773815545,000691.SZ -2024-01-04,0.918203870395468,002962.SZ -2024-01-05,1.1734063865615825,605117.SH -2024-01-08,1.2784720379037475,600761.SH -2024-01-09,0.5936470874291284,002862.SZ -2024-01-10,0.9080905815108482,000698.SZ -2024-01-11,0.827458720223193,603097.SH -2024-01-12,0.994883205877543,600593.SH -2024-01-15,0.6804254263110727,603212.SH -2024-01-16,0.7194593431343859,000698.SZ -2024-01-17,1.0860069907228742,603172.SH -2024-01-18,1.3749235527137786,603828.SH -2024-01-19,1.2391308950507334,603579.SH -2024-01-22,1.7603168299560354,605268.SH -2024-01-23,1.5656552549163458,605117.SH -2024-01-24,0.7379915949457881,600138.SH -2024-01-25,0.7346719736914655,603099.SH -2024-01-26,1.0310897640701377,605111.SH -2024-01-29,1.1768938262108766,603398.SH -2024-01-30,1.235487562255028,003007.SZ -2024-01-31,1.5371910050217372,601138.SH -2024-02-01,1.3629464247750829,600551.SH -2024-02-02,1.52270944692793,601038.SH -2024-02-05,1.847344110860692,000550.SZ -2024-02-06,0.8127749986671006,600705.SH -2024-02-07,0.7565034143929377,603199.SH -2024-02-08,0.7247153170440155,600188.SH -2024-02-19,0.41560847492124364,002032.SZ -2024-02-20,0.5419618315007714,603369.SH -2024-02-21,0.44193316268825533,600023.SH -2024-02-22,0.45382033625301066,000526.SZ -2024-02-23,0.25689917770287357,000157.SZ -2024-02-26,0.4253231714991775,000983.SZ -2024-02-27,0.03172161439110529,605151.SH -2024-02-28,1.074800376390378,000680.SZ -2024-02-29,0.11241663388214615,002467.SZ -2024-03-01,0.317478967758629,603605.SH -2024-03-04,0.17878811429242739,600860.SH -2024-03-05,1.0151694508153393,002009.SZ -2024-03-06,0.8229010452846762,002209.SZ -2024-03-07,0.8017175629386889,600584.SH -2024-03-08,0.6810433978551881,603960.SH -2024-03-11,0.9532104338812376,603960.SH -2024-03-12,0.7055297835013503,603960.SH -2024-03-13,0.5920124881579221,603499.SH -2024-03-14,0.661232064922907,603660.SH -2024-03-15,0.8778620305552904,601138.SH -2024-03-18,0.42042942845890563,002075.SZ -2024-03-19,0.7527868193603998,603050.SH -2024-03-20,0.5531908723666995,605580.SH -2024-03-21,0.7900117288163369,002698.SZ -2024-03-22,0.8285381778407641,603190.SH -2024-03-25,1.0749381159867608,603286.SH -2024-03-26,1.2654734266422276,002331.SZ -2024-03-27,1.8684480159293833,001696.SZ -2024-03-28,1.6075301389782366,002645.SZ -2024-03-29,0.8465441903404123,002055.SZ -2024-04-01,0.7568317810951942,002735.SZ -2024-04-02,1.0341346018053856,002085.SZ -2024-04-03,1.0122022102013215,002130.SZ -2024-04-08,0.8881305473937254,002805.SZ -2024-04-09,1.0559556356983075,002085.SZ -2024-04-10,0.6554344664442165,603822.SH -2024-04-11,1.2760784980841757,002544.SZ -2024-04-12,1.0181838249663664,605198.SH -2024-04-15,1.221720496054648,002290.SZ -2024-04-16,2.0663546208214703,002521.SZ -2024-04-17,1.1065962300439527,000737.SZ -2024-04-18,1.34853784445544,603619.SH -2024-04-19,0.6639505828915956,000933.SZ -2024-04-22,1.1652613644520093,600529.SH -2024-04-23,1.0507483721309534,002078.SZ -2024-04-24,0.7225763953314781,000949.SZ -2024-04-25,1.9430192587586146,600066.SH -2024-04-26,1.0817360300030114,603556.SH -2024-04-29,0.21577435079395113,600480.SH -2024-04-30,0.5290265764148879,605098.SH -2024-05-06,0.7885258258967485,001696.SZ -2024-05-07,0.415812996822765,002225.SZ -2024-05-08,0.5596574674012184,603232.SH -2024-05-09,0.8548632655231382,002590.SZ -2024-05-10,0.5787850519196119,001696.SZ -2024-05-13,0.9751906596140552,000952.SZ -2024-05-14,0.7644462578838344,600645.SH -2024-05-15,0.8589488842170756,600682.SH -2024-05-16,1.049953727857974,600644.SH -2024-05-17,1.1220964730505885,000702.SZ -2024-05-20,0.8027292772970297,002851.SZ -2024-05-21,1.1153910838352858,603683.SH -2024-05-22,0.6413250933571519,002922.SZ -2024-05-23,1.570388967019694,002225.SZ -2024-05-24,1.2444795042063028,002968.SZ -2024-05-27,0.9627736773164858,600675.SH -2024-05-28,0.9448048863120843,002761.SZ -2024-05-29,0.6810520099963742,600979.SH -2024-05-30,0.842272857355848,600530.SH -2024-05-31,1.0001129400930693,600101.SH -2024-06-03,1.3637566909343166,001267.SZ -2024-06-04,0.9588694721783405,600530.SH -2024-06-05,1.0953534292665954,002922.SZ -2024-06-06,0.8110235687535462,603360.SH -2024-06-07,1.2134023901747366,002889.SZ -2024-06-11,1.0772961141495465,002655.SZ -2024-06-12,1.1183914831029496,603009.SH -2024-06-13,1.0362186103086477,600996.SH -2024-06-14,0.7480333968482387,600039.SH -2024-06-17,1.0007287301926653,000528.SZ -2024-06-18,0.5381156056733658,600996.SH -2024-06-19,0.7036814608094294,600830.SH -2024-06-20,0.8499910179916197,605598.SH -2024-06-21,1.2150720829980681,603936.SH -2024-06-24,1.0311244474924908,600992.SH -2024-06-25,1.2484419002632245,600584.SH -2024-06-26,0.7320854040096385,000819.SZ -2024-06-27,1.9029808384109885,002452.SZ -2024-06-28,0.8803270724492669,600889.SH -2024-07-01,0.6059109111833119,000622.SZ -2024-07-02,0.656778781716391,600584.SH -2024-07-03,0.8605418473204086,601179.SH -2024-07-04,1.073683249192727,603225.SH -2024-07-05,0.8800051248743536,603936.SH -2024-07-08,1.8061114289786495,603328.SH -2024-07-09,0.5826571385994789,000679.SZ -2024-07-10,0.8413277231762297,605117.SH -2024-07-11,0.6665748975268276,000622.SZ -2024-07-12,1.0278922272860618,002452.SZ -2024-07-15,0.6403011305936952,605081.SH -2024-07-16,0.592445020815451,002420.SZ -2024-07-17,0.5442518053370551,002355.SZ -2024-07-18,0.8022024783282671,002384.SZ -2024-07-19,0.9433013682690108,002384.SZ -2024-07-22,0.6240394772580439,000421.SZ -2024-07-23,1.237721650844904,002428.SZ -2024-07-24,1.186379759584258,605111.SH -2024-07-25,0.8926351872925693,002496.SZ -2024-07-26,0.8499067690354271,600171.SH -2024-07-29,0.7013969819645556,002750.SZ -2024-07-30,0.615258963090716,600563.SH -2024-07-31,0.5799237504937365,002700.SZ -2024-08-01,0.5070284832062075,600834.SH -2024-08-02,0.6485822834772664,600604.SH -2024-08-05,1.3222325162798954,605117.SH -2024-08-06,0.9935887583155018,000584.SZ -2024-08-07,0.7440148514526516,603032.SH -2024-08-08,0.8934326068252262,600611.SH -2024-08-09,0.9907610203863012,000659.SZ -2024-08-12,0.7143811940598249,000880.SZ -2024-08-13,0.5948683342786406,600266.SH -2024-08-14,0.7780755309120447,000159.SZ -2024-08-15,0.8738359592762805,000880.SZ -2024-08-16,0.7460601727356423,603050.SH -2024-08-19,0.8904872743308099,603444.SH -2024-08-20,1.077089845741329,002488.SZ -2024-08-21,1.330096420372438,002488.SZ -2024-08-22,1.04117609681098,002208.SZ -2024-08-23,1.2634267858516914,002369.SZ -2024-08-26,0.8745811905917017,000532.SZ -2024-08-27,0.836754154047108,002760.SZ -2024-08-28,0.7231326607988842,002547.SZ -2024-08-29,0.8735120215139563,003001.SZ -2024-08-30,0.6615140980616735,601898.SH -2024-09-02,1.093224090711538,603826.SH -2024-09-03,0.41407989346203866,002309.SZ -2024-09-04,0.7919233491318468,001298.SZ -2024-09-05,0.6449753890047838,000908.SZ -2024-09-06,1.17109797325565,002622.SZ -2024-09-09,1.2278175192855338,000999.SZ -2024-09-10,0.7463596223821397,600804.SH -2024-09-11,0.7470176349514708,002808.SZ -2024-09-12,0.7243651180373872,603559.SH -2024-09-13,1.474732794777432,603615.SH -2024-09-18,0.883126816576788,000659.SZ -2024-09-19,0.640225572474989,600898.SH -2024-09-20,1.051164703847969,603398.SH -2024-09-23,0.9312327237656652,601162.SH -2024-09-24,0.47774549082415085,603559.SH -2024-09-25,0.9563618822865794,600756.SH -2024-09-26,0.5275946326737218,002686.SZ -2024-09-27,0.18984202360702415,002016.SZ -2024-09-30,0.035786009050673036,603106.SH -2024-10-08,0.032889649456072596,603106.SH -2024-10-09,0.12465071252054723,601336.SH -2024-10-10,0.6969210259884471,000402.SZ -2024-10-11,1.0531806211526256,600099.SH -2024-10-14,0.46171010596010975,601162.SH -2024-10-15,1.050584350922452,000402.SZ -2024-10-16,0.9133292498947153,002987.SZ -2024-10-17,0.7700882254413255,000567.SZ -2024-10-18,0.1201641254984537,600895.SH -2024-10-21,0.6976186419462845,002457.SZ -2024-10-22,0.29432613116032685,002423.SZ -2024-10-23,0.7806425787966057,000158.SZ -2024-10-24,0.6036172569478745,002199.SZ -2024-10-25,0.12282827583399647,603016.SH -2024-10-28,0.5245178749249334,000503.SZ -2024-10-29,0.5076972792469883,002851.SZ -2024-10-30,0.7895092176015108,600463.SH -2024-10-31,0.6192784720087864,603117.SH -2024-11-01,1.204091078793982,002134.SZ -2024-11-04,0.8093625376363384,002570.SZ -2024-11-05,0.8638488115176264,600172.SH -2024-11-06,0.8186577511607894,600292.SH -2024-11-07,0.8635644200307799,600481.SH -2024-11-08,0.747868586080844,002047.SZ -2024-11-11,0.8396084711761063,002428.SZ -2024-11-12,0.7919805059954543,603859.SH -2024-11-13,0.9060991217118458,603859.SH -2024-11-14,0.9421847563274262,600966.SH -2024-11-15,1.5178035825387006,002086.SZ -2024-11-18,1.5376931721833804,600212.SH -2024-11-19,1.4060097628439219,603825.SH -2024-11-20,0.8890834002457785,002808.SZ -2024-11-21,0.8855345297456824,603859.SH -2024-11-22,1.119413451276471,600593.SH -2024-11-25,0.7785122491322624,600787.SH -2024-11-26,1.0000210964516405,600736.SH -2024-11-27,0.8847088850937169,002245.SZ -2024-11-28,0.8621169938483969,601360.SH -2024-11-29,0.7042168573520408,002354.SZ -2024-12-02,0.6426744321671465,002611.SZ -2024-12-03,0.9021248369663103,603366.SH -2024-12-04,0.9942733603597254,002822.SZ -2024-12-05,0.8594169937974554,002175.SZ -2024-12-06,0.6985253068214117,603366.SH -2024-12-09,0.9476416369172441,601933.SH -2024-12-10,1.053999067291189,600193.SH -2024-12-11,0.6996323878339654,002193.SZ -2024-12-12,0.9535599508119768,002362.SZ -2024-12-13,1.3279717542253164,603429.SH -2024-12-16,1.0260681164941636,000727.SZ -2024-12-17,1.3063049942413876,600157.SH -2024-12-18,1.3121814535335503,002878.SZ -2024-12-19,1.219098477203033,600593.SH -2024-12-20,0.8480675770196239,002512.SZ -2024-12-23,1.1806404660060321,600724.SH -2024-12-24,0.8537658533885591,603610.SH -2024-12-25,0.8752079792242901,002965.SZ -2024-12-26,0.720498836899636,603214.SH -2024-12-27,0.8552518755027023,002945.SZ -2024-12-30,0.7853260336927593,600223.SH -2024-12-31,1.0774196590782728,600183.SH -2025-01-02,1.345874429894366,603225.SH -2025-01-03,1.4595000226870254,603379.SH -2025-01-06,1.8567194520891437,002130.SZ -2025-01-07,1.327995034218316,002881.SZ -2025-01-08,0.7854520495476546,600126.SH -2025-01-09,0.8656051617404842,000756.SZ -2025-01-10,1.1141535494224937,605016.SH -2025-01-13,2.0375745364278695,605080.SH -2025-01-14,0.6228152667370752,603269.SH -2025-01-15,0.7099046974063614,600673.SH -2025-01-16,0.7230959774435842,600381.SH -2025-01-17,0.8735560458074921,603007.SH -2025-01-20,0.6265446536616674,002164.SZ -2025-01-21,1.4687297319348953,000534.SZ -2025-01-22,0.7347201431708319,000408.SZ -2025-01-23,0.7698608009850573,603121.SH -2025-01-24,0.6733337270251429,603360.SH -2025-01-27,1.3722279750234074,002484.SZ -2025-02-05,1.0995625926629562,603667.SH -2025-02-06,0.9540560778289151,603308.SH -2025-02-07,0.8152925075270021,000856.SZ -2025-02-10,0.4527649047879118,603166.SH diff --git a/code/train/utils/utils.py b/code/train/utils/utils.py new file mode 100644 index 0000000..f84e850 --- /dev/null +++ b/code/train/utils/utils.py @@ -0,0 +1,87 @@ +import numpy as np +import pandas as pd + +def read_and_merge_h5_data(h5_filename, key, columns, df=None): + """ + 读取 HDF5 文件中的数据,根据指定的 columns 筛选数据, + 如果传入 df 参数,则将其与读取的数据根据 ts_code 和 trade_date 合并。 + + 参数: + - h5_filename: HDF5 文件名 + - key: 数据存储在 HDF5 文件中的 key + - columns: 要读取的列名列表 + - df: 需要合并的 DataFrame(如果为空,则不进行合并) + + 返回: + - 合并后的 DataFrame + """ + # 处理 _ 开头的列名 + processed_columns = [] + for col in columns: + if col.startswith('_'): + processed_columns.append(col[1:]) # 去掉下划线 + else: + processed_columns.append(col) + + # 从 HDF5 文件读取数据,选择需要的列 + data = pd.read_hdf(h5_filename, key=key, columns=processed_columns) + + # 修改列名,如果列名以前有 _,加上 _ + for col in data.columns: + if col not in columns: # 只有不在 columns 中的列才需要加下划线 + new_col = f'_{col}' + data.rename(columns={col: new_col}, inplace=True) + + # 如果传入的 df 不为空,则进行合并 + if df is not None and not df.empty: + # 确保两个 DataFrame 都有 ts_code 和 trade_date 列 + df['trade_date'] = pd.to_datetime(df['trade_date'], format='%Y%m%d') + data['trade_date'] = pd.to_datetime(data['trade_date'], format='%Y%m%d') + + # 根据 ts_code 和 trade_date 合并 + merged_df = pd.merge(df, data, on=['ts_code', 'trade_date'], how='left') + else: + # 如果 df 为空,则直接返回读取的数据 + merged_df = data + + return merged_df + + +def calculate_risk_adjusted_return(df, days=1, method='ratio', lambda_=0.5, eps=1e-8): + """ + 计算单只股票的风险调整收益。 + + 参数: + - df: DataFrame,包含 'ts_code' 和 'close' 列,按日期排序(假设 'trade_date' 已排序)。 + - days: 预测未来多少天的收益,默认1天。 + - method: 'ratio'(收益/波动率) 或 'difference'(收益 - λ * 波动率)。 + - lambda_: 风险惩罚系数,仅当 method='difference' 时有效。 + - eps: 防止除零的小常数。 + + 返回: + - df:添加 'risk_adj_return' 列的 DataFrame,表示风险调整后的收益。 + """ + # 确保数据按 ts_code 和 trade_date 排序 + df = df.sort_values(by=['ts_code', 'trade_date']) + + # 计算未来的对数收益率 + df['future_return'] = np.log(df.groupby('ts_code')['close'].shift(-days) / df['close']) + + # 计算历史收益(对数收益率) + df['historical_return'] = np.log(df.groupby('ts_code')['close'].shift(1) / df['close']) + + # 计算波动率(历史收益的标准差) + df['volatility'] = df.groupby('ts_code')['historical_return'].rolling(window=days).std().reset_index(level=0, + drop=True) + + # 根据选择的 method 计算风险调整收益 + if method == 'ratio': + # 收益/波动率(防止除零) + df['risk_adj_return'] = df['future_return'] / (df['volatility'] + eps) + elif method == 'difference': + # 收益 - λ * 波动率 + df['risk_adj_return'] = df['future_return'] - lambda_ * df['volatility'] + else: + raise ValueError("Invalid method. Use 'ratio' or 'difference'.") + + return df \ No newline at end of file diff --git a/code/utils/utils.py b/code/utils/utils.py deleted file mode 100644 index 4ca32e4..0000000 --- a/code/utils/utils.py +++ /dev/null @@ -1,50 +0,0 @@ -import pandas as pd - - -import pandas as pd - -def read_and_merge_h5_data(h5_filename, key, columns, df=None): - """ - 读取 HDF5 文件中的数据,根据指定的 columns 筛选数据, - 如果传入 df 参数,则将其与读取的数据根据 ts_code 和 trade_date 合并。 - - 参数: - - h5_filename: HDF5 文件名 - - key: 数据存储在 HDF5 文件中的 key - - columns: 要读取的列名列表 - - df: 需要合并的 DataFrame(如果为空,则不进行合并) - - 返回: - - 合并后的 DataFrame - """ - # 处理 _ 开头的列名 - processed_columns = [] - for col in columns: - if col.startswith('_'): - processed_columns.append(col[1:]) # 去掉下划线 - else: - processed_columns.append(col) - - # 从 HDF5 文件读取数据,选择需要的列 - data = pd.read_hdf(h5_filename, key=key, columns=processed_columns) - - # 修改列名,如果列名以前有 _,加上 _ - for col in data.columns: - if col not in columns: # 只有不在 columns 中的列才需要加下划线 - new_col = f'_{col}' - data.rename(columns={col: new_col}, inplace=True) - - # 如果传入的 df 不为空,则进行合并 - if df is not None and not df.empty: - # 确保两个 DataFrame 都有 ts_code 和 trade_date 列 - df['trade_date'] = pd.to_datetime(df['trade_date'], format='%Y%m%d') - data['trade_date'] = pd.to_datetime(data['trade_date'], format='%Y%m%d') - - # 根据 ts_code 和 trade_date 合并 - merged_df = pd.merge(df, data, on=['ts_code', 'trade_date'], how='left') - else: - # 如果 df 为空,则直接返回读取的数据 - merged_df = data - - return merged_df -