{"cells":[{"metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true},"cell_type":"code","source":"import numpy as np # linear algebra\nimport pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\n\n# Input data files are available in the \"../input/\" directory.\n# For example, running this (by clicking run or pressing Shift+Enter) will list the files in the input directory\nfrom tqdm import tqdm\n\nimport torch\nfrom torch.utils.data import Dataset, DataLoader\nimport torch.nn as nn\nimport torch.nn.functional as F\nimport torch.optim as optim\n\nimport matplotlib.pyplot as plt\n\nfrom fastai.basic_data import *\nfrom fastai.basic_train import Learner\nfrom fastai.train import fit_one_cycle\n\nimport os\nprint(os.listdir(\"../input\"))\n\n# Any results you write to the current directory are saved as output.","execution_count":1,"outputs":[{"output_type":"stream","text":"['test', 'train.csv', 'sample_submission.csv']\n","name":"stdout"}]},{"metadata":{"_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","trusted":true},"cell_type":"code","source":"%%time\ndf = pd.read_csv('../input/train.csv', dtype={'acoustic_data': np.int16, 'time_to_failure': np.float32})","execution_count":2,"outputs":[{"output_type":"stream","text":"CPU times: user 2min 24s, sys: 9.66 s, total: 2min 34s\nWall time: 2min 34s\n","name":"stdout"}]},{"metadata":{"trusted":true},"cell_type":"code","source":"print(df.shape)\ndf.head()","execution_count":3,"outputs":[{"output_type":"stream","text":"(629145480, 2)\n","name":"stdout"},{"output_type":"execute_result","execution_count":3,"data":{"text/plain":"   acoustic_data  time_to_failure\n0             12           1.4691\n1              6           1.4691\n2              8           1.4691\n3              5           1.4691\n4              8           1.4691","text/html":"<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>acoustic_data</th>\n      <th>time_to_failure</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>12</td>\n      <td>1.4691</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>6</td>\n      <td>1.4691</td>\n    </tr>\n    <tr>\n      <th>2</th>\n      <td>8</td>\n      <td>1.4691</td>\n    </tr>\n    <tr>\n      <th>3</th>\n      <td>5</td>\n      <td>1.4691</td>\n    </tr>\n    <tr>\n      <th>4</th>\n      <td>8</td>\n      <td>1.4691</td>\n    </tr>\n  </tbody>\n</table>\n</div>"},"metadata":{}}]},{"metadata":{},"cell_type":"markdown","source":"### Modeling - Recurrent Neural Network "},{"metadata":{"trusted":true},"cell_type":"code","source":"class RnnBasedLAN(nn.Module):\n    def __init__(self, D_in, H, layers=3, dropout=0.2, bidirectional=False):\n        super(RnnBasedLAN, self).__init__()\n        self.rnn = torch.nn.LSTM(\n            D_in,\n            H,\n            num_layers=layers,\n            batch_first=True,\n            dropout=dropout,\n        )\n        self.norm = nn.LayerNorm(H)\n        self.conv = nn.Conv2d(H, 1, 1)\n        \n    def forward(self, x):\n        \"\"\"x.shape = (batch_size, seq_len, features)\"\"\"\n        x, (h_n, c_n) = self.rnn(x)\n        x = self.norm(x)\n        x = x.transpose(1,2)\n        return self.conv(x[:,:,:,None]).squeeze()\n    \ndef test_rnn():\n    x = torch.rand(32,150,12)\n    mdl = RnnBasedLAN(12,16)\n    print(mdl(x).shape)\ntest_rnn()","execution_count":4,"outputs":[{"output_type":"stream","text":"torch.Size([32, 150])\n","name":"stdout"}]},{"metadata":{},"cell_type":"markdown","source":"### Feature Extraction"},{"metadata":{"trusted":true},"cell_type":"code","source":"def extract_features(z):\n    array = [z.mean(axis=1), z.min(axis=1), z.max(axis=1), z.std(axis=1), z.sum(axis=1), [len(z[i,np.abs(z[i,:]) > 500]) for i in range(z.shape[0])], \n             z.max(axis=1) - np.abs(z.min(axis=1)), np.quantile(z, 0.05,axis=1), ]\n    return np.c_[array].T.astype(np.float32)\n\nextract_features(np.random.rand(150,100))\n\n# For a given ending position \"last_index\", we split the last 150'000 values \n# of \"x\" into 150 pieces of length 1000 each. So n_steps * step_length should equal 150'000.\n# From each piece, a set features are extracted. This results in a feature matrix \n# of dimension (150 time steps x features).  \ndef create_X(x, last_index=None, n_steps=150, step_length=1000):\n    if last_index == None:\n        last_index=len(x)\n       \n    assert (last_index - (n_steps * step_length)) >= 0\n\n    # Reshaping and approximate standardization with mean 5 and std 3.\n    temp = (x[(last_index - n_steps * step_length):last_index].reshape(n_steps, -1) - 5 ) / 3\n    # Extracts features of sequences of full length 1000, of the last 100 values and finally also of the last 10 observations. \n    return np.c_[extract_features(temp),\n                 extract_features(temp[:, -step_length // 10:]),\n                 extract_features(temp[:, -step_length // 100:])].astype(np.float32)\n\n# Query \"create_X\" to figure out the number of features\nn_features = create_X(df.values, n_steps=10).shape[1]\nprint(\"This RNN model is based on %i features\"% n_features)","execution_count":16,"outputs":[{"output_type":"stream","text":"This RNN model is based on 24 features\n","name":"stdout"}]},{"metadata":{"trusted":true},"cell_type":"code","source":"class LANL_Dataset(Dataset):\n    def __init__(\n        self,\n        df,\n        seq_len=150,\n        rand=False\n    ):\n        self.x =  df.loc[:,'acoustic_data'].values\n        self.y = df.loc[:,'time_to_failure'].values\n        self.seq_len = seq_len\n        self.rand = rand\n        \n    def __len__(self):\n        return int(self.x.shape[0]/1000/self.seq_len)-1\n        \n\n    def __getitem__(self, idx):\n        idx +=1\n        idx *= 150*1000\n        if self.rand:\n            idx += int(np.random.randn()*999)\n        sample = {\n            \"x\": create_X(self.x, last_index=idx, n_steps=self.seq_len, step_length=1000),\n            \"y\": self.y[np.arange(idx - self.seq_len*1000,idx,1000)],\n        }\n        \n\n        return sample['x'],sample['y'].astype(np.float32)\n    \nds = LANL_Dataset(df)\nfor i in tqdm(range(len(ds))):\n    dct = [o.shape for o in ds[i]]\nprint(dct)","execution_count":6,"outputs":[{"output_type":"stream","text":"100%|██████████| 4193/4193 [00:30<00:00, 137.98it/s]","name":"stderr"},{"output_type":"stream","text":"[(150, 24), (150,)]\n","name":"stdout"},{"output_type":"stream","text":"\n","name":"stderr"}]},{"metadata":{"trusted":true},"cell_type":"code","source":"idx = 150*1000*64\nprint(idx- 150*1000,idx)\nnp.arange(idx - 150*1000,idx,1000).shape","execution_count":7,"outputs":[{"output_type":"stream","text":"9450000 9600000\n","name":"stdout"},{"output_type":"execute_result","execution_count":7,"data":{"text/plain":"(150,)"},"metadata":{}}]},{"metadata":{"trusted":true},"cell_type":"code","source":"def plot_sample(sample):    \n    plt.plot(sample[0])\n    print(sample[1])\n    plt.show()\nplot_sample(ds[0])\nsecond_earthquake = 50085877\nvalid_ds = LANL_Dataset(df.iloc[second_earthquake-150*1000*295:second_earthquake,:])\nresult = []\nfor i in range(len(valid_ds)):\n    result.append(valid_ds[i][1][-1])\nprint(result[0])\nplt.figure()\nplt.plot(result)","execution_count":8,"outputs":[{"output_type":"stream","text":"[1.4691   1.469099 1.469098 1.469097 ... 1.431897 1.431896 1.430799 1.430798]\n","name":"stdout"},{"output_type":"display_data","data":{"text/plain":"<Figure size 432x288 with 1 Axes>","image/png":"iVBORw0KGgoAAAANSUhEUgAAAYIAAAD8CAYAAAB6paOMAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzsnXd8HOWd/9/PlO3q1Vax3I3BNmAbYwglpvdwBFIIl07CLyG9kHaX5HIX7pIj4RICR3KBJJQQSEJP6GCae8W9yVbvWm3fKc/vj9ldFUu2JBtMrHm/XnpJmp2dmd2dfT7Ptz5CSomLi4uLy8RFOdYX4OLi4uJybHGFwMXFxWWC4wqBi4uLywTHFQIXFxeXCY4rBC4uLi4THFcIXFxcXCY4rhC4uLi4THBcIXBxcXGZ4LhC4OLi4jLB0Y70AEKIGuD3QAUggbullLcLIYqBh4A6oB64TkrZI4QQwO3ApUAc+JiUct2hzlFaWirr6uqO9FJdXFxcJhRr167tlFKWHW6/IxYCwAS+KqVcJ4TIA9YKIZ4DPga8IKW8VQhxC3AL8E3gEmBm5mcJcGfm94jU1dWxZs2ao3CpLi4uLhMHIcT+0ex3xK4hKWVLdkYvpYwA24Aq4Crgd5ndfge8L/P3VcDvpcMKoFAIMelIr8PFxcXFZXwc1RiBEKIOOAVYCVRIKVsyD7XiuI7AEYmGAU9rzGxzcXFxcTkGHDUhEEKEgD8DX5JS9g18TDotTsfU5lQIcaMQYo0QYk1HR8fRukwXFxcXlyEcFSEQQug4InC/lPIvmc1tWZdP5nd7ZnsTUDPg6dWZbYOQUt4tpVwkpVxUVnbYWIeLi4uLyzg5YiHIZAH9H7BNSnnbgIceBz6a+fujwGMDtv+zcDgdCA9wIbm4uLi4vMMcjayhM4EbgM1CiA2Zbd8GbgX+JIT4JLAfuC7z2NM4qaO7cdJHP34UrsHFxcXFZZwcsRBIKV8DxAgPnzfM/hL43JGe18XFxcXl6OBWFru4vEuIhVPs3eAmRri887hC4OLyLmHra838/X83Y1v2sb4UlwmGKwQuLu8SzLSFlGAaYxMCKSUHtnZh22PK0HZxyeEKgYvLuwTLcAZyMz02IehujvHE/2zkwFtdb8dluUwAXCFwcXmXYJmOAJhpa0zPSyVMAKK9qaN+TS4TA1cIXFzeJeSEYIyuISuzfzKaPurX5DIxcIXAxeVdQlYArHEKQTxiHPVrcpkYuELg4vIuwc5YBMYYXUNZAUlGXIvAZXy4QuDi8i4h6xqyxhgstgxHOBJR1yJwGR+uELi4vEvojxGMzyJIuBaByzhxhcDF5V2CZY4vfTQrIAk3RuAyTlwhcHF5l3DEFkHUQLpFZS7jwBUCF5d3Cf11BOPLGpK2zNUUuLiMBVcIXFzeJWQH9PEKAbhxApfx4QqBy4QinTBZ+cRerHdhY7dxu4bMgULgxglcxo4rBC4Tiv1buljzVD2te8LH+lIO4qhYBG51scs4cIXAZUKRijs+9Eh38hhfycHksobGESxWFGdtKNcicBkPrhC4TCiSMWegjHS9G4Vg/L2GgoVewI0RuIwPVwhcJhSpjBD0vZuFYIwtJizDxuNX8QY01yJwGReuELhMKHKuoTEKgZSSVx7YQcvu3rfjspC2xLYc19BYW0yYho2qKfhCuhsjcBkXR7x4vYvLPxL9rqHEmJ5nmTZvLW9C8yhMmlF41K9rYBbTmF1DpoWqKwQ0j2sRuIwL1yJwmVBkLYJod2pMSztmM3nifW/PjHtg5s94XEOanrEI3BiByzhwhcBlQpG1CGxbEg+PfkWvXM//t0sIzH5RGqtFYBo2qq7iz/e4HUhdxsWEFYKmHT3E3KX9JhypuEmoyMmwGUvAOLtGQCz8dgnBQItg7FlDqqbgD+kk3X5DLuNgwgrBU7/axMYXG471Zbi8w6RiBqU1ecDYAsb9FsHbM3k4EteQmXEN+fM8Tr+huEnr3vCY6xFcJi4TQgiklLzxl910NUUBsC0bI2WRPkSDrlTcIJ10G3gdT5hpC9OwKa0JAWMLGGdn6amYOeqlJJ1MoNHtm7UIPH5tXHUEqkfBn6cDsOLxvfz5v9aye037mI7jMnGZEEKQjBmsf/YA+zZ2AGCknJnSob5wT9+5mZf+sP0duT6Xd4ZsoDhY4MWf7xmTRTBwdh0fZUD22d9u4alfbR7Vvlkh8Pq1Mc/kLdNG0xyLAGDL8iYAYmOIgbhMbCaGEGQCaOmk8wXLCcEIJrhl2bTuCxPuGFuKocu7m2yg2BfUyS/xjSlGMHDSEB9lnKCzIcqBLV207+877L7ZYLEnoI05RuAEixUCGSEor8tH1RWSMdeidRkdE0IIspkUWQE4nEXQ0xLDNqVbnHOckbUIvEGNvBLf2CyCAZOG0c60s8kIG184fCwqaxH4AhqWYY864CuldFxDukLx5CDnfHg2l39+Pr6gnhM+F5fDcVSEQAjxWyFEuxDirQHbioUQzwkhdmV+F2W2CyHE/wghdgshNgkhTj0a13AoshaBMUqLoOOAE0tIusU5xxU5iyDgWASRnuSoB9yBs/TRpJCmkyZGysLj19i9pp1oz6FFJxt38PidGs+BraUPhZ2xJDRdQQjBSWdX4Q95HCFwU0ldRsnRsgjuBS4esu0W4AUp5Uzghcz/AJcAMzM/NwJ3HqVrGJHsAJAN/mYFYSQTvKMh4jxu2DnRcPnHJxV37gNvQCOvxI9tylHXBViDXEOHtwiy1sApF9QipWTVk/sOmQ2UixEEHCEYbZuJrGCo2uCvsi+k5V6vi8vhOCpCIKVcDnQP2XwV8LvM378D3jdg+++lwwqgUAgx6Whcx0gkR3INjfBl6zwQyf3tVmoeP2R95r6gTl6xDxh9LUE2gKsoYlTikRWCSdMLOOHMyWx7vYV7v/U6m19uHHb/fiHQB53vcGQFStOHCIFrEbiMgbczRlAhpWzJ/N0KVGT+rgIGOk0bM9sGIYS4UQixRgixpqOj44guZMQYwTAzNGlLOhqjuYHC9bMeP6RiBkIR6D41V1Q22qLC7KQhVOIbUQhivanc/ZItPAsWejn3+tm87yunECzwsmGEeMFQi2C0AeOsYKhDhMDrxghcxsA7EiyWUkpgTOWOUsq7pZSLpJSLysrKjuj8yUzQdzTB4t72OGbKomZuMeAu9HE8kYqb+IIaQohc//5RC0HmXskv8Y1YXfzUrzax/I87Bx03UOBBCEHVrCImzygcsXYlO7PPCcGYLQJ10HZfUCcVM3G+ei4uh+btFIK2rMsn8ztb3dIE1AzYrzqz7W2jP300EyM4hEWQjQ/UZoXAzRw6bkjGjZzrxRvQUHXlsEHcLGbaQtEcARmpujjSnaQzc//EelN4fCoeX3+DX09AIx0ffnDOpo/mXEOjtggyMYJhXEO2LXPxMBeXQ/F2CsHjwEczf38UeGzA9n/OZA+dDoQHuJDeFrImcr9F4AjCcF+2zgNRFE0weZbTati1CI4fUjEjN+POWgVjsQg0XSVY4CHelz5oMJe2JBUzCHcksCybWDiVszqyeP0ati2Hve8GFpTB6NtMWCMKgXMc1z3kMhqOVvrog8CbwGwhRKMQ4pPArcAFQohdwPmZ/wGeBvYCu4FfA//vaFzDoUgMSR/NFpZZ5sH52h0NEUqrQviCOooq3IDbcUQyZuIL6rn/Q4VeohkhSCdNnr5zE30jtJ2w0haaRyGQ78U2Za4mIUs6aSIl2JYk0pkk1psiUDBYCLKpocO5h3ItJnKuoVG2psi6hoZmDWVepysELqPhqCxMI6X80AgPnTfMvhL43NE472jJDua25RTfDEwJNQ0b3dvvX+1piVEztxghxLtmxaeupigF5f6D/MAuYyMVNyiaFMj9Hyz00rYvDEDb3j72bexkxqJy8kv8Bz0329gtkO9U78bD6UGiMnDA7WmNEetNM3nm4AVsstZIKm4eZC3kYgT+MQaLzZFdQ4A7kXEZFcd9ZbFt2aTiJt6MqWykrCFCMODvtEUsnKagzBkI/KFjv+JTOmHyp/9YzfY3W4/pdRwPpOImvkD/4O24hhw3T297HGBEn7pp2GgelUCBIwSxIXGCZLR/lt/dEsu4hjyD9skO8qkRLAJFE2geNXO+I3QNhTJC4NYSuIyC414Isrnj2VletuIzy8CZVzanPL80IwR5ei7j6FgR70tjW9KtZxgl8b409Zs7D9puZ9ozZ2fl4LiGLNMmFTP7hWCEAkIzfbBFMJCBFkHrnjC2JcfsGtI0Bc2j5M43GkaqI8gGnQcKlIvLSBz/QpAxjfNLnLqAgyyCAUG5vkyTuZwQhPRjvuJTdoAZa4/6icq2N5p56o5NRLoHZwOlc32GBlsEANHeFOF257MfWQicdYGDmcF9JCEIFnpp2uUscB8aGizOuoYSB99TlilRdSU3oI+21XUua+igGIEbLHYZPce/EGS+CHkDhSA5vEUQ7hwsBL6Q55j7WPsznsbWkXKikk44n+3+t7oGbR/YeTTLwFqC3jbHIkgfxjWk+5yfoWsZZO+TSdMLcvfX0DhAziKID28RqJqScw0Zo84acvbLPi+Loip4/JorBC6j4vgXgmhWCAa7hrIzr0EWQWcC3avmFvjw5+mk4ibWKBcXeTvItcdwLYJRkfWtDxWCXOfRAa6hrA8/0p3MuQVHsggsw8o1diuryaOtfnBr6WTMAAEVU/Nz27LxhCz9FsEwQmDYKJqCogqEGIdFoB/8VfYFNVKuELiMguNeCLJZP/mlA11DJv6Mr3dgml5fR4L8Uj9CCMBxDcGxzbzIuYbc5nejImvhNW7vHjSYZoOmgyyCAi8IaNndm0sjNkZYlc5M27lZd8XUfDobo4OPn6lRKJ4cHHz8AWi6iqKJYWMEdsYiEEKgetTRWwTm8Omj2dfqWgQuo+G4F4KDXENJJ0aQHeQHWgThzmROMMBxDcGxLSpLuBbBmMhaBGbapjnjq4d+MR9oEaiZVb2advQ4G8QhYgSZ9FFwhMC2JB2N/c0JkzEDX1CnqNIRAn+efpDfHpzMoaE1COCkgaqaMwHRPcrou49mxEjJPHcgwzWe27O+/aD4iYvLcS8EiaiB5lHwZwb1bLA4ZxFkvnBSSvo6E+SX9eeQ91sExy5jx7UIxoaZtskv9aHqyiD3ULaCeKjfPlTozfUOKiwPHEII+t2JFXWO+6dtX797KBl1hCBU6EXzqgedJ4s3oI/oGsoKh6orY0ofVTMuq4PONcQikLbkmV9v4Y2/7B7VsV0mDse9EKSiBr6Qju5zzPpUwsRM27n1XbNfuHhfGsuwKSjtFwJfJlZwJJlD0Z4Uq57cN+7mX6khnVNdDo2ZtvEFdapmFbF/S78QRIfp/QP9wuDxa+SX+EYOFqdt1IxrKFTkI1jgGSwEMec+E4qgvDaPoorAsMfx+NQR00ezQqDp6pjSR4emjmbxhfRB1kc6aSJtyb6NnSM2v3OZmBz3QpCIGfhDnkygDxKZFsL9riHnC5ddn3iwRXDkrqE969pZ/eS+cZvj/a4hN2toNFiGk+ZZc0IRvW3xXMvoWG+KYJHvoP2zQlBY7kf3qcMKbnY5yGyOP0DF1IJBAeOsawjgks/O49yPzBn2+ryB4V1DlilzA7rmUUbdYsIcICBD8WXOZWeSHbLntQybvRuOrLW7y/HFcS8EyYxFIIRA92k5N0DOIsgMsH2Z1NFBFkFIB3FkHUizhWDmONM/XdfQ2DDSNrpHpbDcmZFnewdFe1KEhlT6ArltBeUBdK86bLB4uKKtiqn59HUkcj74gX2MfEH9IMsji8evj2gRKIMsgrG5hoYjW12cFYD0gNe2Y6Vbqe7Sz3EvBIlo/0xN96q5ZQazKaJZ11BfRwJEf1AZnNWofIEjW+kpKwTjde3k6gjcYPGoyFoE2c8xu0B9rPfgbqAw1CLQhv2czJwQ9Ofq5+IE9X1Yho2ZsgZlJI2E168OGyOwB7qGPMroew2lD+EaGtJ4LisIk2YU0Lijh4Zt3bz2yC4as8FylwnLcS8EWYsAHP9sLOMq8Pg0FE3kZl59nUlCRd5h1n7Vj8g1dCRZP1LKnAi5FsHoMDJpngOFwLZs4uEUoUO5hioyFsFwQpAZlAe6hsqm5CEEtO0LDyhWO3wPR09AzxWURXtStOxxmt5Zpo2qi8x51NwEZWh33KE4zzuMEGTX48gI0LxzqkHC47dvYOPzDax7Zv9hr9vl+Oa4FgLLskknzFw8YKBFoPtUdI86KEYw0C2UJZDvYc/6du795musfHzvmK/hSCwCI2VhWxLNq2IaB7fMHom2+j66mqJjPt/xQLZdtMen4Qvq9HUlifcZSHlwxhDApBmFzDu3mtoTS/D41FyH2oFkJwsDZ94en0bRpCDtByI5IfCOyiLQMA0by7BZ/dQ+nv7VJue6jYHBYgXLsNm1po3ffuO1Q9471oBspoPOlRWCjPBkLZHyujyWXDmVpVdPZ9ZpFZneSG4MaiJzXAtBasBi5eAM/tmBX/eqTppe5kse7Unm1ikeyHuum8niS+vQfRq717Yf9PjhyFoT45nR56qiM9c1Wqvixd9v47HbNxzz9hjHgmwrCHDcfJHORC51dGjvHwDdo3L2B2fhC+q5duRDB97+6t3BbRzKa/No3x/Jvc9Zy/NQeAZ0IO1pjZGMGZiGNSjoq3kUjLTFphcbSUaNQxaFmYeKEQyxCHLV1X6dRZdO5dSLpjBlXglGyqKrKXbYa3c5fjmuhcAb1PjQvyxhxsJyAHRvv+mue9WMCW4jpSQRNXIB5IGU1eRx2hXTqJ5dNK6B9UgsglwxXLF31MeQtiTcniDRl+bVh3eO+Zz/6Az0meeX+ujrShLtdeIEI+X2Z8neH+khAWMz189n8NelbEoeib40Xc2O9TWqGEGgvwNpb6bRXSJiOE3nBgSL4+E0rXszbqNDZBA5lsTw61T4QsO7hjz+/v0nTXfWTGje3YvLxOW4FgJVVSieHMwN8AMXoNG9KpruBOXMtGOqH2pG5+RkG6N2z4DzJc3mpY9LCIZYBKPJJIn2prBMm4JyPztXtlG/6eCWzMcrti2dds45i8BPpDtJtGf4YrKhjGQRWLkYwRCLYIoTMG7Y2g2MUggyFkGkJ5lLZU5E0tgDZvaqR8G2+u+zQ6WSWubIwWKPT3VW2Ys550klTDSviqL2759X7CNU7KVld/iw1+5y/HJcC8FQPD51wN+aYxGkrVx66CGFIKgj5fANw0ZiYNrpeIQgG2gOZV1Do0hBzbbSfs+1MymsCLD+uQNjPu8/KkPTPPNLfFiGTceBCIomcrGikcgWHY7kGho64JZUhxACGnc6s+lRuYYyFkHH/v72FPG+NLbdbxHoGcHJCtOhLIJDuYb6V9nLWARxMydEA5k8o5CWPb3jLnp0+cdnQgmB7hvsGtIzhTtDYwnDMdTMHg0Ds43GkzXU7xoavUWQbaVdPClI5fSC3IIrE4FcUHdAjACgZU+YYIEXoRzchmEgnqxFkBwqBMO7hnSPSvHkIGbKSVnVPYdfSjQ7ELfv7y9Gy1os2V5D2YF91pLKQecfjkPVEcDgVfbSicEL82SZNKOQeDhNX6fbg2iiMqGEIK04N7otLFRNQdUHWwSHmjGOZzHwgauKjcUiaNrZg2XZudbG2SDnaI4R7kigKIJQkZeCUj/xcPodqUFo2tkzJrfZ20Fu5p4ZsLNC0NeRGDZQPJQRLYL0wXUEWcpq84DRuYWgP1jcXt9vEWSrzrMWwaRpBdScUJSLbR3OIhjJNQSDV9lLJcxhC90mTS8AnC6sLhOTCSUEHaZTTZlWkuwL78tZBKPJ+hjPYuADhWC0WUN9XQkevW09W19tJhl1WhtnB4/RCEFfR4K8Eh+KqlBQ7s9tGw8N27p54PsrDtsArbMxyqO3radhe/e4znO06LcIsq6h/nTgYNEohCAbLE4NCRZnjjvczDsbJxitEGRn5JFup25F0xWiPYOFoGp2EVd+8ZT+hewPFyw+hBAMcg2NYBEUTwriDWi54LTLxGNCCUFjsgEAU03z0I6HUD1KxiJwvijZ3kLD4QuNfem/7HED+Z5RWwRZN1X95q5c/5r+dWydY2x+uXHEOoFwR4KCTL+k7O/wOIWgZXcvPa3xwxbUZS2qY9muGw6euQ9cZOhwgeLs/jCcayiTcjyM6ydnEYQOX0yWPUe2UWhBuR9/vodod8Y1NGRAz/6fXXNgOCzDHnYtgiz+AavspeJmblIxEKEIAgXeCZlu7OIwoYRgf2IfAF6fzmO7HwNNYqQzFoHoD+QNR3ZtgrG6hhRVECz0jloIjMxstGlnD9Hu1EH57bZls/yhnWx9rfmg50opBwlBdsnN8QpBtmHb0IHxoGs+gsyoo8lAi+CVhlf44Zs/JFDsfKZH4hrKumZUz8Ffl9LqEEIRo7YIhBC5wbigPIA/z3OQRZClfxW94YXAtmwnyHwYiyC7yl4qMXywOHuu0Ta6czn+mDBCkLJS1Cf20K3YhEL5RI0o+2J7sNKW04YioKMcIpjo8akoihhTS+pExMDO01htp3K56VJKultGLt7JZgZZhk3rvjD+kJ4Lfpppm2TMBDl8a+xUzCSdMJHFKcKpML6gjjegjds1lG3Qd7gYQ3bgHJp/PxqiKRPzKFW1Zgey57v/xhde+gIP73yYnlJHMEdjEWQ71B4cI7AwhcHdW+5ib+/g6nLNozLvnCqmzi8d9XVm3TOFZQECefqAYPHYLALLlIP2G46Bq+ylE+aIk52ROp6mrBRJ0w0iv9NYmerzd4oJIwTburYRtS3uzUvxnG2zdNJS1nauxsi6hvINoumR2zIIIfAGx7YYeCKSZrPH4uFomF1x58vUsK2bB3+wMrdY+lAGDUKSgyyCrPk+MP6QJdyRoNvfzDc7PsM3l38TcNxD2UyisZJtx9Ee6eD+bfdjy+FvzGzHzsNZDgddb9xg2U9f5ifP7BjX9Q3FTFvsLd7Az/b8J4srFiMQNIS2A876xN3JQ8cwhBCZDqSDX0c8neCZE37DXZvu4jebf3PQ8876wCxmnz5pxONKKbHs/mP2WwSOayhbM/BM7+Nc+MiF9KWdjKJsFtFIA8JwXVGHkq2hiXansC2J6U0O+zmqmoI1TCzoO699hy+9/KURj+/y9vDsb7fw/O+2vmPnmzBCsKF9A73paiwBq5MJPjP3eyi6QNrQGmnlNzX/wpl/PJPrnriOF/a/MOwxfEE9t1DMSHQ1RVn9lLMQTTxi0Kg4+29IOUKQ9QfHhxnIod81VFIVcjYETV5segFDT2ZEa2R//K7mvTw59y5iVpSVrSuJpqPkl/mPyDUkkfxk179z66pbWd++ftj90qnxuYb+65nttEdSbGw8OtkqpmGzt3gTJZ5S7rzgTuYUz2G3sgUhYGXsdZb9aRkb2jcAYNkWj2xaRcpMDTqG7tMGBYttaXNH7Mc05O+gJq+GFS0rRsy3b+iO0xUdfDwpJTe/eDML71vIRY9cxM/X/jznniko9+cGaonk8Y4/0xJr4d637gXgod1/BKC9b/i1A3KtLw4RI0hozrF72+PY2Hx+1y+5+e8/Oug1ZKvsh7K5YzPr2tYNEjKXt59we4Lu5neu7cfEEYKODaRTcymwBJoQfO/l2/HW2Kz1prg9sYbujnO4qPKzJMwE3339u/QkB7fmXdu2lqainSNaBJF0hA3tG9ixsoVVT+yjpzVOMppmj+lYGRutBJYtc4uojzRoZl1D004tYWXNE3wr8Wm+8vJX2D75TcyBFsEwayT8tP5HmEqaby36FqZt8vDOhzFDCaKZDpxZbNs+7Bdb2pLmviR/L97Dur41ALzZ/Obwrz3q3LDtvSNXMb/R/AbhVH9WyoaGXh5YdQCPqrCn4+jc8Gbaoj2vnnnF89EVnSWTlrArvY3Lvn4iv6//Pyxp8e8r/h3Ltrjpr3/gaw90cMavv8Qv1v8i5/4Y2oF0c8dmtsuNLG29nE/N+xQdiQ529x681KNlSz7wv2/y2fvWDtr+6O5HeaXxFS6cciGFvkLu23Yfwm+DcKy1QEYIWvP20pxqpNxfzn3b7uNA3wH+b6tjfaxoXDns6zUMg/bgfpQRQlttfUne//Ba1nhNwh0J9vt6CDdfzt9WlvHnnX8ZtG+2yn4gCTNBc6yZhJlgf2T4DqV72iP89umdbHj+AFtfPzhu9Y9EVzTFyzvG3k/s7SCVMIiH37klco9rIehNRLnkrj9wywu38eaBbcTiZfyL8hc+5dlCfWIFT+yu5EW/TU98JkbP6ax7ay7/fc5txM04d2+6O3ecTR2buPHZG3mk4E7isYP9pdF0lA888g0+cP+v+MumJwGof6uT9kiKhOlB8e8njuD2N57MDeAjuVGyFkF77S7WVz/PgryF5HvyCfvb+91YQDJiDJrVdcQ72GPuYEn3xVx7wrX4VB8/W/szHmz+HbYtiXSnSBoWvYkUVzx6BafdfxoNESeL6rn9z3Hb2tswrH6Re6u+hz+E4rxlV5Hf+yHml87PCYGUko0Nvbm/l9e/BsBr9W/wvxv/F9M2B11bW6yNzzz3GR7Y9oDzuSR7+cjvHyfgNfj02XV0RFKEE0eesdKV6KbP18W80nkALJm0BNM2eTH+dG7w3t6znW+88m2eW5/JAus4l7s3/oZblt+CLe2DXEO/WP8LAEp7ajix+ERgeEFcta+b5nCS1fU9rNrXnXvdP1n9ExZVLOLWs2/ls/M/S8pK0V3cSMnkEJqu4s93fPjby1eipaaz1PdvpE2DW169hZ50D7Zqsb+ngc0dmwedL27E+c7aW/jL/Nt4sPveYd+Pxzc0kzJt1nhNutpjbPA595adrOVfn3uMR3Y+wurW1STNZCZYPPiePNDXX5W+vWv7sOf44v+t4YfLd3HPYzt46b7t2CPUkiTSFk9sbMYa8njaSvO3fX8jbhz7wsdb/7adj92zmrea3vk02gNdcbpj/QN/OmGRjBm09LUO+l6+XYwu5+1tQAhxMXA7oAK/kVLeerTPsaWtkb2JV9nx+kkEAmdyo/ok1+gP0yZ07mz4KdIoJK/8MeaYYMTns6F9Kk3t+Vw69VIe3P4gFYEK4mac+7fdjxCCuIiyx94OnEE4FaY11kpAD/DZv/6GrdsuAqmz2ttMuPIOLwvmAAAgAElEQVRlEsu72IcXUDm95hlW7PwEd76+moRop5CpuVnnU3uf4pfrf8kH53yQj5zwEYyUhVAEf21+mHJ/BXdc/nM+9uzHCIe7MhaBc7PYtiQV718V680WZ3Caqy3gN5t/Q9JKois6Eb+zbu+OfV3c8upu2qM9yOpOFC3NDU/fwLLaZTy882EA9vTu4bZzb2Nrc5QP3/s6SS2O7muipXU+Z82p4O9tt/ONpx5i+TaT1s5CLjg5zbkL4jT0dNGm11HuqeaXG37EC/tWs3XD+zmtroRbLpnDjugq5/jhPaSsFJ9+6rtEI5fgrXicFW1rgdO5e81jnDOjlsWVi4ddiD1LykqxoX0DzdFmKgIVnFF1BgC726P8ce9OpA4LyhYAcGr5qcj4bP7jz2Aa3wJhUzz9Hp7c0EUoXcz1IsCDYjO2sHmh4QX+e81/M8N3Xu6z2dmzk1Wtq/BYPnxGHg/ueJC6/DrebHmTG+bewDce2cTp00q4ZmE1D63dg6qaaKrNL17cwR8+uZRbV92KYRv84IwfoAiFWcWzEAgSM5u5/srLAceHn1aS7CrcRrrhq9y3t4fzTvtnVnX+FmF7+fXMBzmhdwG3rb2NX573S4J6kGg6yief/STbOncSaj+Xv8iHWbxnPieWnsiG9g1cOOVCQp4Qv3lzEygmUfw8Ud/MXgJo+euxonOJt53P91//EUKxWFazjGmxq7AGeLVMy2ZPT39gfHv3di6ddikbOzbSEmvh4rqL2dcZ461wHFXCSwUWVV0K6YQ5bAbVH1cf4AdPbKU1nOTTZ08DnAnUl176EitaVjK/+HS+ufBHzJ9cjhCCpnAnn/jDyyyd5ePL55xFgbfgkN/1hJlgeeNyABZWLKTUP/rgPUAkafDkphYAfvXybn51/cKD9rFsyYaGHhZOKQacSVBfug9b2qiKSr4nP7evYRtsaN/Am81v4lW95OtlrDywh9VNu/AHOyhSp3PBjFP5+Pxr2d+V5NL/eYWCgMKzXzwfn26RThiA4F9e+1d6zC4eufKRMb2esSKORX8RIYQK7AQuABqB1cCHpJTDRkcWLVok16xZM+bzbGk4wGV3bGRS8XNM7a3i+qqX+NdZNxOwIxx4KY8za5YzybcXy/QS93bxcv01qEIytWYl1eVdYMfY3tdEl6Hji52FFVpOddt7KJgj2dS1ESNRjuw6D0+6lM+XP0+pqvALsZ/OYDNTd99Im67SHq/h8mWvsGNzJQ3d01lm1TMlPB99aTftNbt5fNezFKoV9BhhphfOYE7jGSQ6krx8ws/wxs/GFBEMtQGvSFO9/yuk1TT+vkKKLYW6C9tR8012tDays28rkUiI2o4zCE96ibkFcWLet5ifvpB9WxexXAli2hqWBD1vK56q+5F9p2PaFid7luC3gqxMv0ZQmUlX+wxQI8ysfJJao5gVPUtI2wV4pv0bvqarsON19GgC1Qghg/UosWkUEiFBAVcsNHly/xqivSeiILDMPKqrXieS/wQBpZK81PnsbbUxowv45IK/EA56eeSNy8gP7SQd2EZ5Xj5zK2o40JpP2lDJD6YIxzTiKVD1BMnQ4yTsXhQtBgjOmnQexd4q/vrSTGJJDd/k+5mVv5CTKqsp8lTwq+d7ULUwxaF6OnpOoqZsNTW+MNObL6TXU4Y/3sAzs36KNzmPcPtZzDWgysind+lm2uIdtKbWUZScwpQDN7Cy/BmqKjrptnZyWugmnl1VhaZaXH56D4+/GaK4/EW8apympvczq7adXc06Pt3Ddaf7SHk38/z+50jKXkJaPlfXfZryPJUdzdvZuH03uxJzsSIn4vH0YVpeAvmruLB2PdJfTPOeMjbGyhD5rdQVVpOwu+hUXiLYdjOt3VUUla3BLH0ELB+i80KKyvYzJXA6y9dP5ZSq5expWUjECiCFYNaM25jdNZUneq4GJQ4IfIUrqG07h4hQ8c5ewdzKYl5dX0vSTBKofAjh60BVfEwPnUJ94jVMO87SqnNYs3kObW1TqK18kobWyymxVHzl3ei+NEVlO4im09SVCWoKi/n767Np6gwghE1wyt1MKagiZRm09Caw2q8jmXbEY9n8NCUFMV7f0kxzt2OBefLXU1O9Bzy9TPLOpsIzl6DHR1HAhyG6aE5s5ZU99US752CbIaRZgMeToKCoCWGHiPWWI20feZ40ef4k06dFqcjPI08rR1o+Wvo62dkgeasxSHlRM20dc/j4MkFpQQxD9tCVsGiLRFm9I0RPVx0lVS9RPmk7nck2kla/h2Bh+RLeO/ky1jbt5fUDbxG3+lCEIBWeT6BvOlPppFTpZR0z6bEK0NQo06pW09J+GgnZh2XmUVlkoxf/mZPW34jh76DzlP+gNjCLn1/5l0NOkEZCCLFWSrnosPsdIyFYCnxfSnlR5v9vAUgpfzzc/uMVgn2bXuSuB25hSdBkpkcQ8YTwkMIwbe4IptkSsCjvlhRGJYYm6CiGy6JezsKPUJ1MHRWDiEiz1ZZICQuBQltiC0GfInjDlsQUyRkEyBMqjUqcTmmy0NIxYwpP5Ru8XGAQsqCuSxD0QbkumWkoTEkoaIpFWtr0KAp9toaqWwhVEjZU4pZCSEKlR1ImFYQUqLaNiUVKSBA2nYpKs6nQJ8BKSxKKpC9PktAlcQU0W1CUFJgC2jwmui04s8/DVKmwTzeI2ZJyVDyWwm6vRZNq44vYiIRFzADNgu48ECGVD6BRi8p9qsHupEmJX+XjhkqhVJCoWEJiKgqvY/CUSGELED5Bla1ygiVYaCuUWgqbTMnjnhTtQdA0hdPDKpfHvQQ8JpptYkjJirRK2rIp9kh8AZs+VPpsQdIAXUrq/JJqS5BvSTrSCisNmz5pUxrQOMEj6RbQlhT0KpIOv8WWgKRLh7qkwqmWh/NSfjQEIOlJJ3jdY7HNZzLbUDnf1qgwbHTDwhCSDbagFehVoNoLC9FoTgmeC5nYwCRDsM5r4u2ySOmC8qDGvIRGJyZ+E2baOpVI4v40KQU8QsOPQtC2wYSYqbJWl7ymJPFFJME8jVM1lVYEcSRn2R6mmkkkAktVERJiUvIqsN1vMSWlcqowqZcq+zSJ3xaEkKwI2Oz12UxLK3yyxctreWkawxk3Q1ChDIUiUxBUFCq8koRqU4+gW4KakAgdyqVGBZJ8zSYhYJ8UGMBUYRONq+y2DAxLUqQJQqpKxAeaVDgrrTBZVRHYpLBZbsM+zaTGUpiX1JjsNZFI1kiVbT4b07LwRyQlXo3TNIX6tGBryIlZFPZJ/LokEABVgkDikxA0bDxCIoVAKmADXWmdDsBvC+bpkrQiWWNJmpG0BCVeKVgS11ggBBqSHtVmhy5Zh43ZY1PaJ0kXq5wtdMoV8KJSJEwsS7IClUaPzaKkwnzSWApENQWPVJGoaLZz//aqgh5VYbIlUG2BIiUCMBTYk9Ro89j0+mz6pCSmOO9LsNPG1gXlAY3FKZWpiiClw3ZN0u3J4/uffnnM4x+8+4Xg/cDFUspPZf6/AVgipfz8gH1uBG4EqK2tXbh//9iX03v0D79k9r/fQTgA3bN1ps2zKI6Z/Kw8wL7eNJ96Faoa+wNkaQ1ePVHwyskK3eUKqik5ZYvNlBZJIA3+FASTEqEIOougxwv5cYh74e+LFUK64MKXLE7cL9k4U2HnbIVVFZKz2xTOed2kutl5r8MBSHjAUqAgDqEkWAKSHucnpYEiQbMh5oVwUNBVJsgrVVHabep2WARSzvVG/BAOQkkEKjLJN31+COdB2iMwFcCSFMagLAyGBpvqBFEfLNwtCSZhbyV0FAqqOiWTu0EfIY68ZYqgu0Zh9maL8rBznTtqBJpH4FUEWrlCpFiS2mSxcE//fZXUoTcIDaWC3jJBVaPN3AaIB+C10xQenyOYm1I4qxNSLTYljRZTWgcHsOJeUGzwGc4Xvq3Ied35cSiOONuzn2FbobMtODiBB0OHhnLB+inQuUDhq6koTyfyKH7dYnK3pDAKrcWwt1KQZ0BJFAp6JXkDkq668mDTdIE3BXMPSBQJvQGoCIPX6H//0zqU9vW//rQGwaTz/jeUOp9pXkLiMZ17IT8O1V3952krhHXTBbsnCyZ3SWb1CJIeiGoQjEnyo5LiCBTEwFIhrTrntBTwpSGQcu4hBWgvgNZCwYxmSd4wJQFpFZpKnXuwJOocU5HO+1xfAb0hQWFMEkiCxwTddO4R3zCua1OBznznXumpzKyvELE5daekthNsAX0B536I+Zz3pDjqvH5w7qkttYLGMoj5BafstpnT6DzWE8y8PsN5r3XLOV7M6xwr5gN/GkrDYGpQXw6qDdNanX0NFSJB6A5CzCuQwnk8mJRU9jrvWZbuUOZ+DUFlj6S0z3l+Snd+0ARxHWIe6C4E/ILKVsmUJolughTQXCYwK1W0tETvlRiZug8hJUI659ZsqOlw3leAiA8ayiDpcT7vpA6RAp1bfr3x4Dd7FPzDC8FAxmsRNO6r57c/vIOa9pdYvDdGfZWX1eefx/b03/negzZxX4D66krCfi8CQUU4Qk1TM17TorHMSyhhURg16fL7SHl82Lqg3aegyxRV4SSetCTsy6M4HsNrGSQ9At0QrJ1czSmtDXjNAYOh18uuKVNoVUowUgYFdOAXffT4/HR58iiwTEqMJClDwzQ1AsIkTxgohoFIGtT19KJbzhdtQ20hjcEyPKZFcdKgOhHF9Oi0FZWgoOGPpJBJC8Ww0LEIKWkMj0pf0Is3bVLZ0YZuWDRWFpPwhyjp6SKYSBEN5BEJ+ukOavSESkmqKrai4rcV0j0m5+xfRWnUYkd5iPqy2WipBDO69+KVaTyGTXGmDCPmEayaeiJ+LYbXUvAaJn1pD9V9zVSHYzTn+2msqKWup5Pyzq5Bn5mpwI6KPHaVTKFIj9JOMbphMikZIc82SHt8hIUXLRajIN1HOKDQG/Dg9eWhWxZWXCUQj5L0B/B4VTShodrgS8bwpdOIiGRKbzMtxfDSkhLe92IXltBoLa/EVjz0pRSm9zVgeix6Q5KGUBGd3hqmmyls4UHp6ebklgYiHg9dpWWg2ERSAVI+L6oviYpCQSICWPTklWOpEs3owrYt2rQSMFRm9LYTSqXo9XtQNIuQYYLQaC2roTsYxBNOU9jbxcmtjc5rEtCTJ5zBz4S+gE6bP0jKm4/Po9GNl5gwyE9LqswkEd3HXr2QCjtCoRXHl07hSfbQW5BHx+SpiLhJMBohGchDSBstkUCJpB2L0+PF4xFE/F586T7KeiIohkmrP0RU91OMCarKAd1PVPdRa4cxNA3dstFsi0DaRo8nqOzsIGhkgtPAtrJJpErykSKGaRmIpCSYNjDVACFVEPX5iXt92MkU1R0tTIrE8Fg2fXkhDlSWs1cvxxePIZAkNR1TEyR18NgGeek0ISNFMJ1CVQWKR6GLAGV9nUghqC+YQq3sRTdNdNMCM4ltmpgoWEIjqhbS6StBL0mT9HoojkYIRbop7YsQSBg05Qdpy/NTmFIoSafpViQhwvjT4E0JSmJJVBsiPpVNk4uJaEE8FszsaaamO42hQnuhQp8eQLM9BIVESAWBAJz3urkoH91MU9GXwJOKYVkWumHjTQta8su57uUn4W10DR2rYHETUDPg/+rMtqNKwKvjU9r4wUnf49rJd/GJV+vZvelvfGm7oCVYyoqZk9k9+wS6J8/g7NRGZlR7WLEnwVurfFzd8BqxgMJ/L7gcWaHwx6nP0DHnu/zb2rto7boEyyjAQmFp+cPsalnE9VtXckKiif+Y82EKKvz8vA/mdO1lsdVAkR3j6ZO6aJ0U4D37LyS/o5R5Ne2cu2gvva/fS6MsJ1+L8MJJS/ll75uc334NP7tkHqgeqH+d76xX+VrPqVwi/kardjIr7akUBjdzc/FJLDk1zC37fkfKTnHxm59nWdljlPI0B0rOoaFwKQkjTCq6EhkqIFw0m5f21uAPdSGULlbpD3Gh4WdP/ueIyADndT/Eg8HtfLPsTE5Y9166OmxsmcZfLth/YREfXXsJc5Rn2WpfwXu8G1D9Gj8NfwKf1s4U75+owEdZm87zvksomPNb8CbpsZMUqn7uKLySq96ciSflwa+nuHLaXv6krGT6bh++1qlEDS+1k9uIlJ/E/Z2L8Nf8H0sKo2wym5hBkAdljMvyzuPDqpeZSor/7ZjPU93FLJsa4UXj9zSk9wDwkb3f4brLVQqqZ0NeFXRs52+P/oR/nfJl1GQMM6owZeU+vrf219zwdBfteR6+vfSLnDHn7zwT2Eay4yLSXTdSVfEcVqqc1t4FLCuIUyA7+bj3N6xf+EOue0by3imCX1xexQXLP8/J/kJe7dvJKdESLk8VYJXolJXP44qiE2lU89hq+VCAq9QYLzT4+OZagWWrfO49Eb6+ZCkP/qKV7jaDT381gBY/wP76NXy3aSHb3tpBaU8fv666Bk9RE18q2cBWazqPNCxgeqiNG3orySuTXHVdGX9pyufSyTHyI3vAX0S6/g1u2/EQt+XrzEktJdB5CtV7/0pxpBdbKLxx/jnc1fMTdGnSVDmHi81q5nSfwn9ecCJFvjSmYnDhhh/zHb2WUw0/X2QHtoRPBk/ixtIFXNj0Z/qsJHXha/GKShYXhHnYeJQabzUfqvsY/7Mqxd59JjfM6OKBtmqqyhTOrHuau/r28DBVfNSK4Yu+hw9rHXSUnsiCxqdYUFPBTwu8/HxbCd9QI3g7DIIhg/LpJ3NKcRWP7iumvDCPzoL13NfwJ+6f8xXipkpDIsXathbWqVMJxsNovX/F0gw2t3ydtBRML3wWr3cW3f6/8k8FNXyk6GwS3gIOpArZ0yP4dfezRPT9lAXifKD2Oh5teYqWVDe/m/t1NFGIty/Bzn0WpZN6eTlssG6nn4Z4MWk0JALVtpgrD7BZqWNqMfzgHD8v7N3ITzbN4Qb/kygFOs/1LqQ1UcQNDQ8g/Ravzt9LrV9jnTfOjGANP5n7OT6y7lucWb6E05un8kB3lA7/U1wZvZivXnPeuERgLBwrIVgNzBRCTMURgA8CHz7aJykoDNI5rRbF1njMdxXn1jzMReuaSasKt5zzUcqnRpnTp7NwQwk3XlGE75Jvc46UXPo/r/Fz5RIWFSVY/1aKZ5fuQL/kCXwdBnNfmElX3S+ZFv0RibTC7vLt5LOQ32mXcU3eZg70TeL2xAN4lp7PvZ3nMWlBN083x4i0PEZ+egu1LZ8CBJ0lFfyysJXZl36Rk3a+wt+qZvHbxueZljyRc31XwUmnOC/ihCv4/NIE99/6HKt8i+hJVaD467GrHmJK4FKqTp1Cw66f8sFpH8bzGnjO/zpV2glUvfwfLO16BJAw6xK45jYsNYD5hZc5tXg9p/vu4YqZJ5CsnMyju38J3Xv4wklnE0gEuOr8n/Dclp0U1AqMZBpfvp/rls3gznUvs52rULwd/HhxBzWnfJRHVmzga+sK2JH4NK2FrzErr5qU12bR9EVMLZzG3ZvuZnH1e5h3zncoaLye3vrr+cDcEB9o+xaPloZInVxKY1uSZPP7ePoqja+s9BMMtFJdEefWSx7mykevZJsZ5Ydn/pCrZ16d+2y/mPkB+LT5fn614Ves2bSFaqWOssWn998EoTO5yn8Li9vu4O/Tb+aC7p9xVtlNPH79TcxZ83cerT6bCk+Y/yr1c8nin7B3g83/dCVparsIgBl5qzi7YR613kZKPvtjzp99MctPSVIS8qCrCmfVLuOxPY8B8LHzPsdZk8+A/Mm509dmfrJcuxhiM/7E6paNfO3CH4IQ+Auj0NaDOvU0FO10ps6/lnv/cA2fOPsiHiiYT/6G1+gLz+WHkRkAqMGd/PxTl/HqD5soOmEKnqnT+ODU7BkWA+CZcQG3tG1mf3QTW7R1nBKfzt9Ob2VB/QUkqqbw69j/4v/QfTDpZKbkVXDCH6+jW1lO5awvk1/iZ0XLCgCmvvdfmDVpCVP+egX1ffV88JLbCIYm8ZGNBbza+CrvWX0mJ59dyYKLZrDhzn3smLySy5dcxkWn6tz4hzX8OJNK+5kz5rG87wXqqGPO1U/wT6v+kz/u+CPXek+keOu/wezL6Lzk33j6r5dx7WlX8s9Lvgt7X4ay2VBQDcDXznVe4a6eWdzT8BDbCgNcN/s6lgDvj7bD8p9wl76PO9Q2/JofRXkQvxR8+6xrKfZW8GB7lEcaX+HGc7/AZF8h0wFP0+vEn9/IzSf/P+7beh937ruHYl8xaWnxVkjlg3MuA2Dhe51zfxB4fWc7N9yzmg8srOLLF87hjpd287s3NT50Wi3fv3IujdF6Htn+VYL+7/GW/0LOm+ylpU1y0RyNrlPPo8N4HEXxcO9VT/Ji5wamFkxlWuE05jXOpyHVymdO+Da/WXkTUvExN3g16rQFYxj1xscxqSOQUprA54FngG3An6SUW472eepjUR477WLOLOoinariqbnFHJg8iQfnLaMxr5gPnzSXio45aLaO9/yvA06bgQ8urmFzUx+/32py7eIpTL/ia6B58AV1ZnUswqulOfO0FXzhyihJK8Z5J51Mr8xjjz0PRcKiD3ydS97/cR767Blcv/Ry/vvUi6nuqaXRa7Ol4nX2Fm/g59p3uOete7hly91cbuzgjvonOLXiVC7t+Dhe72B9nlToJ69gNy3JGpLSg7f870jVZGv8LV5ueBlTmpxRdDYAnqAHTv8s3LweTr8JzvkmfPB+8IZQNYX8Uj+9VdfBzWs4a9olvN6+nrXv+xmrPnQPL0V286l5nyLPk0csnCJQ6EX3ezBSJnUlAaqL/NhSoAUauLe0HKoXoc4rJDjtdvLUbsLd57FazsYObmd28Ryum3UdQT3IuTXnIoRgdrXF4lNf5UtXn82tJyyl2F/Cf577UxSPUzn7jTUBtrdG0Eqf4syqM6gMVnLrWbfyn2f95yARGIpP8/GVRV/hQ7Ev4BlucZgTrmBy20t8YqZOTeer1AYMuicv5fqHnmBPwQJmnngq4v33sGzqxZxesoDP9BZy67Ve8mse4kvnV2JKHa18Gsy+GIDKAh96ZrnHc2rOAUBXdBZOv3SQCIzEx+Zfxx0X/VsuCySQ6ZCqqJlZnxDoF/2IP+y4hf9+bgWXJLrwlD3L+xZ7WDqvmeK6P1FpVSJtSWFFYPiTKAr8091cEaihx5Nia8UbmBp8uvgNftV7O3kfuAdmXQR5FQC8p/BcuoJN1PfWA7Av7DRonFrgKMyy2mWcX3s+k0JOK42bFtzEHy68D2kKPKEgHp/GtO6TMWSa5U3L8XltfvyByVy7sJqQV+P0GSFWta7inGrn/bp29rVYtsV90xfDR/4M197Dg7sexrANPjr3o6CoMOO8nAgMZEbhDGrzannxwIv9G0PlbFh0PXfFdnPZtMt46uqnuHL+FG48YwnnnXwNp5zwHj49/0YSZoKHdjyUe9pjux+jwFvAJ0/6JHdfcDc3zr+RJ65+grr8Op4/8Pywb+2Zs8rZ8oOL+fH7T6Y838cPrjqJzd+/kB//0zy8msrWrq0IYWPmP8v6bg8/XSe5csFkfnb9+dx+7Sdo0no4vXYZIljCeVPOY1qhk047r3Qeu3p2sa5nNc0Fu1mUWEbiHSoqO2YFZVLKp6WUs6SU06WU//52nGN6WTWvLprBzZddBiisnVTEW2UBVlROA2+KS1KvIBD4ghpC7899ft/JVXg1BU0RfPH8mbntvqCG1wqw0HMGf9v3NH/d8yeqQ9VcNuckAJbH8qi0FEpmnTjoOnSvyqyORVRrU3h12sM8O/se8q1inrr6Ke679D5uOe0WHn/f49x1/l344qFBaytnmVHmeM68/j0sLi1HlRrbjA08v/95KoOVTPPMAuhfeCRYAhf/GN77bedLlaGoIkBvZxoKqrlpwU1U51XztTe+y4+33sPk4GRumHuD0x4jnCZQ4EH3qphpGyEEZ80sA2BxXTGP7n6UtW1reb7hJfItlWuMHnxV9zO5JIFWsI5ZRbOoCFbw0nUvccW0KwCoy68jrKyjPraFDZ2buWnBTZxSfgoFISdK91ZTH+ef5McOruOMyU59wLLaZVw67dKD3o9sp9Vtb7Swd70jJGbaGr4B2wnO+XnscyAUTqwtZ0tzmK5oiu64wcwpNc7ASX8r6otrzmDtZ/+Py5fchKnmo8089+DjAmdMPgNd0Tml/BQC+giD8mEIFHrRvOrg9MCKubDwYwStOPPNc5het5Nmz69Ri15hbuks+tqdqG9R5SHOGSzlvdc/jV8J0Jq/l0K7lDPmnEXxNXdCzWmDdn1PsfP6XmhyBr/6cD0BLUCZ3/nMv7zwy/zsvT8b9Jzssq0ev4bmUZgUnU6+KOR3b/2Oqx+7mmueeB9fvbSCtd87nz3RtRi2kRPOaQXTuLDuQh7Y8SC91YsIW0ke2vEQy2qXUVdQd8j3SwjBebXnsbJ1JZG0s8BP2krznde+Q2Wwku8s+Q5lgTL+6+z/4ssLv5x73syimZxVdRYPbH+AlJWiL93HCwde4NKpl+JRPZxYeiI3n3Iz+Z58LphyAWta19CbHL79iX/IhCPP1z9+bO/ejlf1Mun/t/fmcXJc9aHv93RV7z37vmk0kka7JVmWZWPZxtjGlm2wSBwWwwsEQsx9JgSSXHIxkEvyEsJ9j3yAm5uE2I/Lu0C4LAmbIYRg4xW8gy1vki3JkiWNds2+9FLd5/1Rdaqre7p7ZjRL98yc7+czn5muqu46U111fue3tx6hru4En3nrBr70zm2EAwb7+/czlBhy728vmxo3YUmLL5/9AqFUjOsiN7sVgOebJZ1ZDNBc18rFK+rwiQwDRjX377qFEzVBYmELc+9XAQhVhXLeUxPxc9dN6/nLWzfRVpNtbuIzfATCJpdzHSOpEfae3cueNXvY0F6N3xBkJHSlfZOaf/gDBlXJev4Lf8vv7P04bzp0O+8/80lWVK9ga9NW3rPhPe7KK5VIuw1SvKyqCRNu/xZmx3e4pPZSVmbW8rLxGx478dVUw+4AACAASURBVBjXr7jezYb1hwqsiD3UtkQYPD1BJiOpClTxpWu+xFhqjIODB/njS/6YkBkiGU9jpTJEq+0JSiVY3XJRG0HTx59e+RaaIk28/2fv51cnfkVP/0Wsqt6Bv/oFIivuxgieYV39OgDCZtid4FbWrOTk2Em+8sJXqAnWcOuaW/EJH5e2X4Q/MMyqpigb1r6EIQx2tu0s+j8A/Ppnr/PPf/44D3x9H/d99SWklFipTOF2kU3roX41DB6FVdewubuZI+fH+c1R+yFf21KV/a48PQn8hh+ZkaQtiVFAOANE/VH+4oq/4CMXf6TkeEux7boubrpj8+Qdu/8bxpqrkEYtd267k339+9h7di8bGzYycMoOsymqETiEzTBX1tmTbwvtcPP/A2tvmHRca7SF1uEeHjrzC6yMxXNnn2NlzcqSsetJRxAEw7YQC4X9bBWX8eL5F8nIDFbG4pHjjxA0DR469hDVgWoubr7Yff+HtnyI8dQ4X977ZT50n/33H2z5gymvF9gLBCtj8fDxhwH41v5vcXTkKJ++/NNUBaqKvu/9m99Pf7yfe56/hy888wWSmSR71uyZdNz13deTlmkePPZgyXEcGDgwqW7T/v799Nb28rFL78Rq/Ts6Og661/GxE48BcHnb5ZM+a3ODfQ/0Z85x8YnraGqqtet9LUBAz5IXBAB+w0d91CKTbGDvhrVYMkSjPI/hqOKFOpP93q4e3rVzxaTtoahJ53gv3dXdANy6+laCpsH6VjurcHUwOOnhUZPz2GCCxvFOtiffCPHC7hkrkcEfnPy1tAXbMWv24vMPs63pYjaYW+j3nyaZSXJ99/XuZF2oFaGX2pYIaSvDqNMecU3dGr54zRf54EUf5MaVtl1cVR1VGoGqLnplbyMv/MWNbO9cyfdv/T7vXPdOfMJH77kd1NfUUzvRzOn4KaoCVbRFJ1fjVMLu0b5Hua33NsKmLWQvbb0Uf+dX+Mvb6rjv2L9xUeNFOVmahRg4NUa4OsDWa7vsvtPjFulUEY1ACNhgZ/Jy0TvY2G5/9g+fs7Ws3paYe2h+TwJVWrtUhc9bV9/KtuZtJcdbilhdiBWbGibvMIOYtU2kUxlu7rnZvX6bGjcxeGqcWF1wyu8bYHenbeduMTqKHmP4faw+fzGvjR3iTx76E14+/zLvWPuOkp+rro2qphoImdxg/Q6fu+pz/PhtP6Yj1sGjxx8lnUnzyPFHuKrzKkxPYaTeul5bK9j/v3ml/xW+eM0X2dSwqeC58tnStIWOWAeff/rzPHr8Ue7eezdXdlzJlR1XlnzfjpYdbGrYxD3P38P3DnyP3St3s7F+46TjNtRvoCPWwX2v31f0s548+SS/fe9v82jfo+42KSX7+vexvmE9t66+laZwEz878jN3/+MnH2dd3ToawpO/75ZoC83hZmJUs33kGiLVQTJp6Tarmk+WhSAAaK8Pk0k20Jg8gExHaUj1Ia74MKbfN+2mImBXIE2OWXx8x8f5o4v/iPaYbRPe2lWDANZVhSe9R61SR5y681X1hRvVpNMZ0lamoGmoLWyfx58OsrF5PVsidgp8faiebU3b3NVZYAqNQJkSBjxlsHd17OKj2z/qCjDVhyCqBIGnGFnAqXQZ8Uf41OWf4udvfojmsRVEa4I0jdqCc23d2oIryZ5qeyIzhMHt6293t1/aeilG8Ax/8ssP0h/v52OXTF322EpmCEX9tKyqdsacIJXMuL0bJrHj92H7+2DjHja32+UK7n/5NFVBk9bqrEboLfkN8OSP7DIL7b11U45pPjBNn92O0mfwse0fI2gE2d68nYFTY6XNQh52duxg64k3sSt0bfHz+A16+rciEDx47EFuCL6Nrle3l/xcr2lI/fZPRHjLqrfgN/xc3Xk1T5x8gqdOPcVgYpBrOq+Z9Bl3bruTVTWr+PwbP++ajaaDT/i4+813EzbD3PmLOxm3xvn4jo9P+T4hBJ+76nP89a6/5oG3P8Dn3/j5gveqMj89fuJx/vPD/5mfvPaTSSvzXxy1qxSr0hYAJ8ZOMJIcYUP9BnzCx9WdV/PYicdIpVMMxAd49syzBc1Cik9e/knek/4I0VCUSI1dkHBsKFH0+Lli2QiC1U3VZFINfOD0PyPTURrFCFz6+wTCJpGaqZuWKEKxABOjtq3Tq8Z+5NpePhCuoaEmNOk9htPwZMwRBLG6UEFBoPoaFzINdURsp1nLyEqqqiOsr11PJFnNmztvxPAZM9AIogAMnipe5Gt8WGkEQbcaZzH1VCYdh2dNgGZHEKyrW1fw2BXVKzCEwXUrrqM12upuX1u3lppgDYbP4O43380lLZPrvORjJTP4Az6iznc3PpgknUy7bT0nUdcNt/4dBCI0VQVpqQ6SsDL0tsRyJoKAc+1PHBjkyPPneOHhPrZe2+U2eF9oDE8xuGtXXMvj736ctmgbA6fGqW2NTuszotUhrjj6NtbWFP5ewG5ME0vW8qbaG7mt9zYuPXQLB39duhJnMl8QhAx3G8DVnVcTT8f5wq+/gClMdnXsmvQZq2pW8aO3/Yjru6+f1v/ipbu6m2/c9A22N2/nji13uE7Xqeip6WHPmj00RZpKHveBzR/gpp6beO7Mc9z16F08feppd5+UkoeP2WapX/b90n0+VHG+9fXrAbim6xrGUmM8c/oZfnzox1gZi7eufmvRc1634jpWjm8gGDaJOoJgIfwEZSs6t9Csb2mEzABPjdir/9a6OqhqZfcdIWL1kyfvYsTqgpw+MoSUMmcCaakO0TUO4Z7JfY9VwxNVwjpWF3QnV+9nqBLUhSazjlg7AStM19B6ghGTSFWIt+/9L/zuLVcB2YeykDbhJVzlJxA2izbGARgbzNUIbDt5xu0F7EUJoGhNkOZR21ymHoJJ5zbD/P11fz9pv0/4+Kfr/4mYPzalo1ChHMPR2uyqyUqV0Ajy2NRew+nhM/Q259qTqxpCNHRE+c1/2Jnsda0RLn/b9CaY+cDw2xqBulf8PrujWSqRpm4K/4DCHzR460e2uf2Vi50H4M6WP2Hd5W38878/zuhAHJmxM+kLkfURmO7v0cHs6vXS1ksJm2H29+/nsrbLStruL5SmSBNfu+lrc/65AA3hBv7mqr8hbsV503ffxI8O/cj1XR0YPMCJsRNsqN/Avv59HB05Snd1N/v692EIg7V1dvDGZW2XETSCPHz8YZ448QRbmrbQW9db6rR2J7mwQaTaWeRojWDuWNtcC8DL6dUAdK62V51ta2qpmoEgaO6uIjFmTWr2IjOSiZEUkerJggDAdCZo0+8jFPO7k6sXVYK6kMM3Egpz+7OfZufI9Xaz8aoAYStGetx+SJOJtN0YvUS7TbCFUm1LJMc0lM/QmXGCUZNgJNsdzXKEVH5nNGUnjlQHaB7t5mNNn+aWVbcU/ewrO64sWBlyc+PmaQsBwHUMK21ubCiBlcyUtOXnnM/xE3j9A2BPmu/89E5u/eg2Nuxq48Y/2Dxt4TIfmH4DKckp79x/0k7hnq5pCKBrY31BX5j3PJBtdpNMpElbGUYGirepTE44WqgjCPwhM0cjCBpBLmu7DIA3db1p2mOtNEJmiN09u7nv9fsYS9m9M5Q56BM7PwHAr/p+BdiO4p6aHkKmPaeEzTCXtV3G9w98n0NDh7it97aC5/Bq3IkJi0DI9JiG5l8jWDaCoLvBfmhG47adunv11OaHQrT02CaC04eHc7Ynxi0yGek2GslHTajBqN81/eT3JEiVMA2ZQYOwFSMStW+wkBN7Hnc6laUmrCkjhhT17VHOHR/JaVbjZfDMuLvaVONOJiyO7e/nqx//Jff/r5dd7cbVCGrtMh0XG5cTMApfg7lEaQT+gEEwYjLan7C1lmlO2hd12gsD5eT3IoSga0M91/7uhmynuDLh9i32dA87cWAQ4RM0ryztUJ8JSgtVgkAFCJTqbpfI80sFwybJvHv6hu4b8Pv8XNN1zZyNtRzsWb2HCWuCnx/5OQAPHXuITQ2b2N6yna6qLn51whYE+/r3TdJ439j5RiasCSJmhN0rdxf8/B9+4Vl+9T27Z0ZywiIYNvEHDcyAb0FMQ8tGEHTWRQBJetw2X/TUz6xeuaK+LYIZ8HH6SK4gGFN29SIagSsIIuYkh6TCcprE+wuYhpTDWa3qwjHHfuis0JOJ9LQiSAB6tjSSGLPoe6VwjPTgqXFqm21BoCbWVCLNwEl7NfTqk6f49l89RXw05f4P4Sp/wcbvM+WFh46z//GTUx7nNQNFaoIMO32Zp6sRXLu+mbt/9xKuWF0gWqeCUP+Pt3tY3yuDNHdXTfv7nsl50qkMmXTGPd/QGfu6vvhIH0/95HDOe5ITFmbQwOck1wXCtkbgXd2+ZdVbuP/t99MRKx6xVAgrmeY7n32KvlcGpj54AdjatJXu6m5+ePCHPNb3GM+ffd5NjtvVvounTz3N1176GmfGzxQUBALBTT03Fcw1iY+lOHFgkFOH7IY4tmnIRAhBpCaoTUNzScD0UR1NIS07+qO5enJ0z3TwGT6au6snaQQTjtSeShDkN6P3olZThTUC+6tSPW7DSiNwGtUkJ9JTRgwpVmyqxx80OPjr05P2JeMWY0NJaltzNYJUIs34UBLhE9x4x2bGBhOcPjLsajWBkC3glKnoQnn250d54Ov7OLa/dKN5y+MYjtYE3JXrdDUCwye4cVMrvilMaeXG1QgcM2IybnHmyDAda+c2ikn1PbaS6Zz7cvCMbUJ8/oFjHHg6935JTlgEPfdcIGyQScsc7UUIQX2ofsbjGTo7wbljo/QdmLxY2f/4SfpPLlw/X7D/jz2r9/CbM7/hQ/d/iLAZ5sYeO9z6yo4rmbAm+Ntn/pZtTdsmmUZboi3cc8M9OcltXk69ZguA4fMTyIy0F3VOLlK0OqCdxXNNUzUMj4HwWURnYfdtWVnN3geP2WF9zoOqVubhYoIg4NEIQoUFgXptFsgjcAWJoxEYpp24Nj7smGjiFv5prhBNv0HP1kYOPXeWq9+9DsPInk85kVWikhIuViLN+EiScJWfFsckMdIfz/o1ggb+kFmwBaeUkse+d5B1l7fS2FncYSgzkrGhBFLCz7/yEu/45KVF/Tdpj0YQrQly4lV7wigaNbRIMfNMQ6cODZHJSDrW1c7peYRPYJg+rFQmx7wzdGaC+FiKgVPjrs1aoVauCqWhJOPpWftVRs7bvomxPB9FOp3hga/vY8u1XVz59tJO17nm9vW3I4Rgbd1atjVvc3NddnXs4hM7P8G25m1F8yAKJZApTh60BcH4UNKeR2TWAb9ic4NrKZhPltZTMwUrnEklGEhcULcfRUtPNRlLcu74qLtNNZqe0jTk1QjiRUxDBSJ/1LawJ+chUh1wQz2T8elrBABrLmkmMWZxfH+u6q1WgEoQeE1D48NJItUBIjVBfD7hCII0PtOeRAIhY5KNGOzwt+fuP8arT03WQLxMjKbIpCUXvamTtJXhse9NbhKv8DqGo7UB15m61ASBWmioENK+VwfwGYK21XMrCMC+dlYq496XwicYOjPumkHzv9tEviBw/vY6jC+UESfhcXQg1ywy2h9HShZkcswnFojxwYs+yNWdV+ckPJo+k/dseM+0k+HyOXkoq/WoOUVdyx03reTyPatnMerpsbSemilY3WQ7eiOh2d1ELT32TXD6SLbJ9dhgwl2lF8Kcho/AzQUoZBryG1z59l7WvyGbsRvxqI3JuDUjm/GKjQ0EQsakWPHBU+MgoKbJNp3lm4Yi1bYQiNYFGe2P2wLIGa+dczB5ElAPs7LjF2PMCT3sXFdH57q6oup/RoWzenwEikIhrosZ12TjaAR9rw7SsrJ6yjDhCzqX30c6mSbpfId1rRGGzk24tmsrkUZ6opeUU1PhCoJZmgfBIwgGcwXBsKMpWKnCgQ6LjXQqw5kjI7Q6iZHnjtm1k+bS/zMdlpUg2NTWDEDV9KNFCxKtDRKpCeT4CfpPjlPbGimqabimnYjXR5D7wJQyDQFsva4rp7ZMpCbohpalZqgRGH4fPVubOPzc2ZzQxMHT41Q3hNwJ1Y1wUhqBYx6oqg+5GoEydRUzDY066v3wueKhiN7jYnVBYvUhtwxGPspM4moEXkGwxDQCr2koGbc48/oIHevmJ8vZ9OdqBE0rqshYMmex4F28JOPpHI0gGLbvg8QUGkFqGqv50SIagTIZeZ3ni5mzx0ZIWxnWXWYnWJ49amsEXgG7ECytp2YKNrfaJXcvNGJIIYSgZWWuw7j/xCgN7cUzPXN8BCU0AmWrnQ6RmgDjQwmklCRn4CNQrNhcT2LcclchYJee8AobNckn42kmhpNueKwrCOJp9/+xncUFBEH/9DQC9dBHa4NU1dnF7wpNKsos4PoIapeuRqD+x3Qqw6lDQ8iMpH3t3JuF1LnSXkHQZftzBk+PuwLJ+/3mm4bU/VfKNHTy0BBf+eNHSiY0QlYjSE5YORqGuofSqYU3Dc0Hyj/Qs60JM+Dj3HFHI9CCYP7oqo8QMH1s71g5689q6alm6OwE8dEUifEUowOJkjHnakL1Rg0lCwgCf3454hJEqgNYyQxxx7YeCM9sEuxcZ0dzHNtnR+hIKRk8M+GGjkI2lHV0IG7nSTg+kFh9kLHBJImJlKuJBELFTEP2Q50Yt9z8g0KMDSbw+QThqgCxentyL6QVKLOAN2pIsdQ0Aq9pSJlJvN/PXKI0AmUaalqRvZ+V8PF+v/nO4qDrIyg+SZ88NEgmLXPs4oUYOR93zalerUBpBKklohGcPDRIdVOYaE2Q6sawG64702d5tiytp2YKQn6DH9x5Be/ftXLWn+Umlr0+TP8J25ZdX0IjML0aQaC4RlAoh6AYyiSiVleFwk5LEakO0NARcx3GY4NJrEQ6RyPwGT4M08ewE57pNQ3JjGTw1HhWIwhNTiiCwg9yIUYHE0RqAvh8wo0WGikkCJRGUMg0tMQ0Am9CWXzUFqKlMoRney4rlXY1gtqWqHuNuzbYiwY1yaetDOlUxjUHgSdqqIRGoHJRzh2zTSDxsRQ/u/uFHG0xbWUYG0660WljnvtHmReXikZw9tiI+39WN2ZD2rVGMM9saq/JaSJxoTR3V4GwM4zPO4KgpEbgiRoSPpFT519hJdIzMu+oSVlF+lzIKqJzQx0nDw5hJdMMnrb/j9q80gX+oOHG6SuNQE3UY0NJd8yBoFHER5BwK7yWylQdG0wQq7MndfU730YMWfuwEq6Gp4LsUtMI3ISyVIaJ0RSmk009X+eykplseemQQU1zmFDU75qJlLaQX3AOwB9WZsTigqD/pH2vquiY1184x6Fnz/Lrn73uHjM6kACJW+jPW+Zi5Lx9/ywVZ3EqnnYFe41HEBQLOpkvltZTs4AEQib1bVFOHx6mv2+UQMhwJ69CVNWH8BnCPcZfQBAo09B0UZOy0gguJNKga309aSvDyUND7kOaX8zMDPoYOpcrCLyF+rIagWGvFPNKV4wOxGlbYz/Uw+eLC4LRgQTRWvtzIzVBhE8UNg3laQSAW3yunHWB5gNvQll8LDVv2oB9LsPNIxA+geH3seGKdrZe1+VO+ErQ55egBjAMH6bfV1QjkFJmNYLjo0gpOeHYyPc/cdItt6y+89ZV9j2josmsVNoNjlgqzuJUMmsFqGq0732fKRZcs9WCYBa0rKzmzBFbI6hvj5W07a/YVM/7PrfLNWP4C6yeU4kSZZQLkDUN2ZPrdGsNeWlbU4PPEOx94BhP/fg1ahx7pRd/0CRj2ZFFKlTTm+gVCCofweQaSpmMZGwoSX17lFDUXzRySErJ6GCCmOP49fkE0dpAYY0glasReMe1ZDWCZJr46PwKAjPgc53FgZDtq9p6XRc7bl6ZTYKM52kEeYsPVWaiEKpqamNXjOSExcj5OCcPDtLQESWTlrzw4HEgaw6saQ4Trs7eAyrowGeKsuQRzDWZdIaMJd37WGkECx0xBFoQzIqWnmriYylOHRqivqN0bXghRE6yWXGNYPo3QTBi4jNF1jR0ARpBIGTSuqqG1184TzBicuvHtk2qYKpW/Ibf5zqG/UHDNcdkw0cn+z7GhxLIjCRWF6K6MVQ0cigZT2Ml0kQ9WpWKTMonGzXk0QgcM9l0aw0tFnI0gtHkjJoozRTT9RFYkzRTb9YwTC5B7R5XoPCcQuWFrL3UDpU8tq+fgVPjrN3ZyqptTbz4SB/JuOV+51V1IWK1QU/4sX3v1LVEloRpKN/EqXwEC51DAFoQzAqVWJbJSBraZ1alMjAHpiElXNxIgwvQCAA2XdVOe28tv/Wn26luKNBhzclriFQFcrSeqoaQsz+bUAa5NuJRtxmPHRUxnOcjePXpU5w9OpKTQ6CI1YXc7V5cjcCjPte3x2xHs7G0bmlv1NDEaIrwfGoEfjt8NFnAV5UNI1YaQW4JakV+cxovyiy0ZkczQtgFBsEuBX/xm1eQGLfY96uTjPTHiVQHMPw+YnXBbEKiE2hQ1xZdEhpBKq/IpDINLbSjGJZZraG5pr4taqflJzMlcwgK4Q8axMfzEsqS6YL9iksRrQm6KvOFriTW7mxl7c7WovvVRJ9fayZWF+Ts0RFXABQyDanVna0RhHnNSWDz+QRWKs0vvraP1p4aLrnJrgrrzQmoqg9y6DeJSc1RCmkEW6/tZOOV7TP/5yscIYTbnMY2Dc1fiW/DuZdTcWvSosL0+xA+UdJHoF4Xcxb3nxwjXOWnqj5EbUuE831jGH4fzd1VGKaPtjU1PPeLo9Q0ht1FRqw2yAmn8NzI+Ql8hqCmMYzladazWHE1AuVjCxhEagJlEQRLa/m0wKhKpMCUpqF85sI0BLm1jS7ERzAd1ESfX0dJ+Qn8HnMR5AqCXI0gRCYtXeffmSMjZCxpl+B9zU7Oi9XmagSZtHQL+inyVWqwv4ty2FYXAtPvIxVPkxi35tdH4Ck6ly8IhBD2aj8xtWkoUSSPoP/EGPVt9nPS6EQhtfZUu1rPxTd0M9qfoO/VQWJ1jiCoD5EYt5PKhs/HqaoP2ROnxPVbLVayQQ/Za927o4UVG2derXW2aEEwS3q2NtK8strtDzBdCtXlmalpCDx1dgTzFlZYVBC4pqFcH0GuachODApGTNcGqsxD3qSiFx+2zQRejUBFJimNR2HllZhY6himz42omVfTUMCHzEgS44Wz1O0AB8c05Pz254UsF3MWq4ihOiUIOm1TatuabJb0ys0Nbtc1dW+p+2FsMMHwuThVDSH3PrcWeS5BqkCRySvf3sv2G7sXfCzL40maR7Zdv4K3f2LHjN+XrxGknQiCmZuGAu7nTdWm8kJRD16+IFCrNmUSUhqCNzJodCBBVV0QIYQrCFQo6okDQ9S1RWleWc3ESIpwlT+nvIbyF+Q7jNVKylhiEULFMPw+V7Oa7/BRsNuRBgosSLy1pBITFmbAl1PCHCAYKmwaGhtMkoynXY1AFVnr2pCtmyR8gm1vXgHYZkHI3gMDp8YZPjtBdUMoW5F1kYeQWonJJs5ysTR16UWAP5QrCNRNcaGmofmMNFAr/UheWGnb6hpaV9W4q7tQ1E+0JkD/iWx57tEBT5JYfRDDtLu7rX9DG6deG2LNjmbqW6OcOTLsChaFEiz5DmMrlcHnE5MmoaWK6fe55SXm1TTkTLDFNAK7zLijEYxbBU1x/rAdFp22MjlCXTmKlSBo763j9s9c5r5WrNvZyvC5CVZtswtEqnviZ3e/gJTQvrbO7YC22DWCQibOcrE8nqQKxB80yFjZBvbZfsUXZhq60Iih6eCahvL6MUdrg9z2Z5fkmHPqO2JupjXYk7h6mA3Dx7rLWnjliVP07R8gOWHRvrqGNTuaQeSahcAOjzUDvsmmoeTM8i0WO4bf53bAm2/TkKKQv8nbb2J8JFmwCVObkwS29xfHcrarRMLqpmxUWr4QAPt/vXzP6pwM87q2KF0bG7jtzy5h3WWtrk19sWsE2aih8gsCrRGUCW95Z8P0ueF4xUpQF8M1Dc2jRpCt+z+1H6S+PcqLD/eRyUiklIwPJ3NCQi++oZuXHzvJA/+8D7BtxNGaIJe9ddWkWk1C2DWHCmkERgU8PAuF1xcSis5f1JDXaVloYeEPmW5mr+pNkc+KTQ2s3NLI0/92mN5LW3JKkUDxxk3FMEwf7/7MZbnjDCwR01CB6LdyMasRCCHeLoR4SQiREULsyNt3lxDioBDiFSHEjZ7tu51tB4UQn5jN+Rcz3lLUg6fH+dn/+yJCFF4llUI9jPOpEcTq7GY0yoFXiob2GOlUhmGn5ywS6lqz/1NtS4TVFzcz2p+wy007n7nj5pWs2tY06fOitcFJzUms5MyK8y12DK8giM2fwPeep5CJMuDpSe3tTZHPVe/sBQmPfudVd9v4UGKSD+hCydZfWhqmofloMjRTZvutvAj8NvCId6MQYiPwLmATsBv4RyGEIYQwgH8AbgI2Arc7xy471Jf/7H1H+ZfPPc3EcJK3fnRbyZ6+hQhX+0HMr4+gZ0sj/8dfv2FS6YlCNDhhtOdPjLrlrfMbqVyy246KaFtTM2UceLgqwERe+Gg6mXEdm8sBw7T/VzNozGsNGq/mUUwjSMXtLmUTTtvSQlQ3hNn25hUc3nvO7aA3VkSDuKBxulFDi1sjSOX11Sgns5o9pJT7gEIP8x7g21LKBHBYCHEQ2OnsOyilfM1537edY1+ezTgWI0oQvPDgcVZsrOeN71lXMKt3KgzDR6QqMK/VCoWnLPRU1LVFQcD5vjH6XhmgsSs2acJoWlHFG9+9zs3MLkU45nfLLytSycyy0giU6SA8j+UlvOeBwj4Cv+MjiI+n7N4UVcXNPM1OaeWR83aW8PhQIqdvxFyMc7FnF7tRQxUQBj1fs0cH8ITn9XFnG8CxvO25BsBlQtuaGjbsaqN3R4tb6/1CufGOzdNarS8E/oBBTWOY04eHOPXaEFuv6yp43OarOwpuzydc5ScZT5NOZTy1+dM5ZoyljjKnzGfEEJCjZRXqQAxEBAAAGT1JREFUmx0IGciMdHtKlPIZeftJtPRUu4UH54Kl4iy2khk3Y7vcTCkIhBD3A4XqD3xKSvmjuR+Se947gDsAVqxYMV+nKRvBiJ9rf3fDnHxW+5r5aV14odS3Rzn8/DmQzFrIqZIKE6Mp1+mcSmYWvF57OVErxvmMGPKeB4pFDdnXXBU5LOX4VXkAowNx15Q0V4sVb7OexUwqma4IsxBMQxBIKa+/gM/tA7xLwU5nGyW255/3HuAegB07dizuXPJlRkNHjMN7z2H4fW4fggtFTX4To9noo3Qqjemfv+iZSkNNfPOtEUzHNAS4RQ5LCYJA2MQfMhjpjzMx6piS5kgQuKahRe8srpww6Pkaxb3Au4QQQSFED9ALPAU8DfQKIXqEEAFsh/K98zQGTZlQJoD2NTWzdm6Gq+zJz+snSCUzFbOSWgjMhRIEOeGjhaKGpq8RqNDfkfNxtzzG3PkIlo5pqBIihmCWPgIhxG8B/wNoAv5NCPGclPJGKeVLQojvYjuBLeDDUsq0854/BP4DMICvSilfmtV/oKk4VKZx14aGWX+WipufGM1GDqUraCW1EBgLZBrKDR8toBGEsxqBYfqmrJJplxFPMK5yCOZKIzCXhrN4UZmGSiGl/AHwgyL7Pgt8tsD2nwI/nc15NZVNXWuUW+7cQuf6uqkPngKlEUyMZDUCK5VZck3qS+FqBPMdNTRF+KhXI4hUB6YM/a2qD3Lm9eE51wiET2A4lVIrnfHhJKGYH18Bh/ByMA1pljkrtzTOyWonGLXzJLymISuZqZgHaCFQeQTz2YsAshqB4fcVbPCjfASJMWtaWeax+hDx0ZRbbXY675kuqg9IJZNKpPnGnz/Oq0+dKrjfSmYqorwEaEGgqXB8PkEo4mfCEQQyY9dnqoTY64VCCb359hGoJjjFstS928MlcggUKoT09JFhu27UHGpxqq1mJTMxksRKpHP6br/8qxMMnLJrcdk9yrUg0GimRbjKT9zJLi7UuH6ps1A+ArAn2GJ1q7zbp7O6V4LgzJHhOfMPKIyAMaVGcPrIMKdeG5rT884EVY5D+TKklDz0zVd46dET7vaZ1habLypjFBpNCUKxrEagVoHLyTTUua6O9Ve0UdsSmfdzmSU0Aq8DeTrF42JOLkEynp4z/4DC9PumdBb/8rsH+Mnf751UomShSDitaNXiJWNJZEYSH7Pv5UqKfls+T5Nm0RKuCmQFQQXVcF8oqhvDXPfeDXNSsG0qjIBRNKTR5xNuf91S5SUU0dogyp8815nvZsCYMqFsdCBOYtziiR8emtNzTxdXEDj3rKotFHfv5TT+Cgl60IJAU/GEYn7iTvhots+rvnXnA3/AV7KAoepcNh3TkGH43B4Tc+koBuUjKC4IMhnJ2FASf8jg5cdOcub14Tk9/3RQLTvVPasEQnwshZTSDnrQpiGNZnqownMyI5elRrCQ7HzrKrbfWLyki9utbpqVRFVTornXCEqbhiZGksiM5JLd3YSrAmXRChITuRqBGu/EaMo1E1XKfawFgabiCccCSGmr2sutcf1Cs2pbE+29xfM/lLYw3QYzqubQnGsEAaOkRqAiderboqzd0cKJg0Ok0/bx5/tGOfLCuTkdTyFcjcDxa6nf8dFURXUnAy0INIuAkKfekFVBNdyXIwFXI5jexB6rnyeNYApn8ZjTzChaG6Slp5p0KkN/nx22+dj3D/LAN/bP6XgKke8jUL+TE5YrJCol6GH5lHDULFrc7OLRlCd8tDIeoOWGP2TiDxZ3KOdT3Wj32PC2K50LpvIRKI0gVhdyM7JPHxmmviNqawepDDIj57UEdL6PIOURXKrrXqUsaLQg0FQ8YSejNj6SctX75dSPoJKoaghR1zr9MNZ1l7USqQ64AmGumCqPYGwwjs8Qdu6F8BOu8nP68BCNnTG3IUxi3JrXJD3XR5DK1QgARvvtng5LouicRrMQeE1DqvRBpdhWlxtX/PZq0tb0q8L7g0bBXtSzxR8onVk8OpggWhN0V/zNK6s5fXiYmuasEJsYTc6vIBjPjxrKjnfEEQSVotlWxig0mhJ4TUNp5+HXGkF5MP0GwSmqji4Eht8gY0kymcJCaWwgkWOOallZzcDpcQ7vPQeONWi+E82SRaKGAEb7bdNQpSxo9NOkqXhMv22Tjo+kSDkPVaU8QJryoKLGijmMRwcTbg4DYPfHlna5C9XRz1vRdj5I5EcNeUxDIwNKI6iM+1gLAs2iwC4zkcxqBBWiUmvKg5pAC2UXSykZG0gQzdMIFGsuaQZws9Xni2SRqCHI+gi0aUijmQEqqSyVzODzCYwCZZI1y4dsu8rJgkDlm8Q8GkEw4rdrNQlYdbHts5hP05CU0tUIVISS0gwM08eIMg1ViLNYP02aRUGkJsi5vlFGB+JaG9CUNA15cwi8rNrWRPemBqI1QQJhc9YawUh/nG/8+eMMOf0WvKQSaWRGuqGrlpXBSqYxTB/hKr8nj0ALAo1m2lyyu5vEmMWrT56umIdHUz5Ub4NCIaTeHAIvb/it1bzlD7cCjoY5S43gzOvDDJ+dYODk2KR9yQlbQEVrA8440061UV9OpJI2DWk0M6B1VQ3X/d4GQJeX0JQ2DWU1guLZz+Eq/6w1AhX5U9A8NWF/turDYCUzTmtKw9UShGBBKspOh/LHgWk006R3RwupeDqnkb1meZIVBJNNQ6MDcRCly1qEYgFGzsdnNYZRJ/Kn0BiUozhandUIrDyNwAwYU/Z9Xii0INAsKjZe2V7uIWgqAKOEaWhsMEGkKlBytR2u8s+6NLUqE1FoDMpRHHH8FFYqqxGEHY3ArBBHMWjTkEajWYS4GkEBZ3F+DkEhwrGAXdpcTj9LetJ5lGmowBiUM1h1ZlOmIX/AR9DRCPwV4h8ALQg0Gs0iRDmL8/MIrGSa04eHqWsrXQ8pXOUnk5buhH0hZE1DhUNYIdu3IWsaMtze05UU9KAFgUajWXQU0wgOPHOGxLjFxl2lTYhqMr7Q7GLVAQ0KJ7Ul8jWCVIZUnrNYCwKNRqOZBW4eQd4k/OLDx6lri9LeW1vy/SGn5/KFRg6ND9kd0CC3vLQiOW5h+H0EI04egdII/FlnsTYNaTQazSxQq2mvo/bM68OceX2EzVe3TxmNE1GCYCRJ/8kxXnq0r6i/4OzREb77N0+7q3zImoUA0oWcxXGLQNj0aC7KWezLagQV5CzWUUMajWbR4TMEQuSGbr74cB9mwMe6y9umfL9b2nwkyYGnT3Pw12cQQhSMSjt9ZJizR0c43zfqFqxTSWtQPHw0GDY9AivrI3DDR/2VIwi0RqDRaBYdQoic5jTpVIaDvznDmh0t0yqTrUqbjw0lOfrSeYSAR77zKuf7RicdqxzK3rwDpRGEq/xFw0eDETMn8S0/oWzJmIaEEJ8XQuwXQjwvhPiBEKLWs+8uIcRBIcQrQogbPdt3O9sOCiE+MZvzazSa5UsoajJ8zq7z0/fqAKl4mtXTbIKjSpu/9uxZkvE0b3z3OoJhkx996Vn+7R+f55mfHnFNRSoCSJ0LbI3ADPiI1gaLRg0FwmZOTSQrZSeU+YMGhulbUs7i+4DNUsotwKvAXQBCiI3Au4BNwG7gH4UQhhDCAP4BuAnYCNzuHKvRaDQzYvXFzbz+4nkmRpMc3nsOM2jQub5u2u8PV/k53zeKYfpYu7OVm+/cQktPDeeOj/Dkva8RH7MdycU0glhdyO6dXCSPIBg28Rk+fIZwP8vvZBPv+p01rL9iahPWQjErQSCl/LmUUnlQngA6nb/3AN+WUiaklIeBg8BO5+eglPI1KWUS+LZzrEaj0cyIDVe0kUlLXnniFIf3nqV7Y/2MVtkhpxd2x7o6/EGDlpXV3HLnFi6/dRUAiTF7alNO4uHzuRpBrC6I4TeKho8GIraJygwYriBQpqKLrunM6ZFQbubSSPUB4N+dvzuAY559x51txbZrNBrNjGjoiNHcXcUzPz3C2FCSnq2NM3q/8hP0bGnI2a5CPpVJKBkvpBHYgsAf8BUNHw2GHEHg9xEfVYKgcsxBXqYUBEKI+4UQLxb42eM55lOABXxzrgYmhLhDCPGMEOKZs2fPztXHajSaJcSGXe0kxi2ET9B90QwFgRO9k/++oLOST4w7piFHIIz2J8ikM2TSGcaHEsTqQgU1AiuVJm1lPBqBVxBUjoPYy5TudSnl9aX2CyF+D3gLcJ3MBuL2AV2ewzqdbZTYnn/ee4B7AHbs2HHhBUE0Gs2SpXdHM7/8lwO0rqp2o3Gmy9pLW4nUBKmqz+1bkK8RKNNQJiMZHUwghEBKiNUFGemPT4oaUr0IVPRSjmmogkJGvcwqj0AIsRv4M+CNUspxz657gf8thPgC0A70Ak8BAugVQvRgC4B3Ae+ezRg0Gs3yJRjxc/P/edGUReYK0bWxnq6N9ZM/M5qnEUxYRGuDjA0mGDkfx+e0SbWdxSOT8ghSCfu1akNp+n2MOD2K/RVqGpptQtnfA0HgPieT7wkp5X+SUr4khPgu8DK2yejDUso0gBDiD4H/AAzgq1LKl2Y5Bo1Gs4xZsbFh6oNmgDINxT0aQXtvLWODCYbPxd1exw0dUY7t65+kEagoIuUPMAMGqbjTr3ixmoZKIaVcU2LfZ4HPFtj+U+CnszmvRqPRzBem38Dw+0iMW2QyklQ8TUN7jNdfPM/I+Qn6Xh2koTOWDR+dVAHVfq38AV4HcaVqBJUpnjQajaaMBCMmifEUKSdiKFzlJ1Yb5OyxUU4eGmLlRbYWYgZ8yIwknc4Kg8kaQXaarVRncWWOSqPRaMpIMOInMW65juJA2KSqIcTrL55HZiQrnUgjNdl7C8+lXEHgy/ntPb7S0IJAo9Fo8gg5GoHKKg6GTaobwsiMJBTz0+wkg6kSEt5cAmUaUmYgb6SQ1gg0Go1mkWCbhixXEATCJlWNdphp96YGfD67zLVRoFNa2okiMvxaI9BoNJpFSzDiJzFmkXByAgJhk+oGRxBclI1S8vYbUKTyNQLP5G+alTnlVuaoNBqNpowEIyaJCSvHNLTyoka2XtvFyi3ZTGS330DKaxrK8xH4s7+Fr3TDnHKhG9NoNBpNHsGISXLCcjOCA2GTcFWAK9/Rm3Nctsy0N2pIhY8aBX9XIloj0Gg0mjxUmYlRJyO4WLObbO/kXI1A+AQ+w179+wtED1UalTsyjUajKROqzMTw+TiG6XMdv/kU6p1st6T0uX2TlUNZawQajUaziFAawcj5uFtFtBDZVpQejSCVznUQa41Ao9FoFh+q3tDw+YmSPZCNIj4C0z85ZLRSK4+CFgQajUYzCbcnwZhFIFR8AjcL5BGoJvXuMVoj0Gg0msVHKJLtbRCcjmkoL4/A75n0C+UTVBpaEGg0Gk0e3sk/UMI0VCyPwDvpK/ORX2sEGo1Gs3gwAwaGkwVcShD4nDDRXB9BOscMpDUCjUajWaQoraCUIACcngTeqKFMER+BFgQajUazqFCCoFTUENgTvJXvLPZGDfkn9yWoNCp3ZBqNRlNGpq0RBHxufSFQCWUFNIIiSWmVgK41pNFoNAVQSWVTaQSG38hpTJPvIzADBjvf2sOqi5vmZ6BzgBYEGo1GU4CZ+QjyS0zk+gMuvaVn7gc4h1SurqLRaDRlZLoagRnIOovT6QyZjKzoUNFCLK7RajQazQIxfR+B4YaPpvNKUC8WtCDQaDSaAszINOQIALdxfQU7hguhfQQajUZTgO7NDfSfGKOqPljyODt81BYA+U1pFgtaEGg0Gk0B6lqjXPveDVMe59UIsm0qF5cgWFz6i0aj0VQY3szirEawuKbWxTVajUajqTCMQDaPQGsEGo1Gswyxw0czSCndfIJlpREIIf5KCPG8EOI5IcTPhRDtznYhhPg7IcRBZ/92z3veJ4Q44Py8b7b/gEaj0ZQTFSGUTmWyGkEFdyMrxGzF1uellFuklNuAnwD/1dl+E9Dr/NwBfBlACFEPfAa4DNgJfEYIUTfLMWg0Gk3ZUJO+5RUEy0kjkFIOe15GAen8vQf4urR5AqgVQrQBNwL3SSn7pZQDwH3A7tmMQaPRaMqJt0tZyvEV+BeZj2DW4aNCiM8C7wWGgDc5mzuAY57Djjvbim3XaDSaRYm3S9mS1QiEEPcLIV4s8LMHQEr5KSllF/BN4A/namBCiDuEEM8IIZ45e/bsXH2sRqPRzCnKR2AlM0s3oUxKef00P+ubwE+xfQB9QJdnX6ezrQ+4Jm/7Q0XOew9wD8COHTtkoWM0Go2m3KiexFYqjZVKI5z2lYuJ2UYN9Xpe7gH2O3/fC7zXiR66HBiSUp4E/gO4QQhR5ziJb3C2aTQazaJErf7TjkZg+n0IsbgEwWx9BP9NCLEOyACvA//J2f5T4GbgIDAOvB9AStkvhPgr4GnnuP9LStk/yzFoNBpN2XCdxU7U0GLzD8AsBYGU8rYi2yXw4SL7vgp8dTbn1Wg0mkoh5PQtmBhJFmxKsxhYfKJLo9FoKoiqxhDCJxg8M+5oBFoQaDQazbLCMHxUN4YYPD1BKplZdN3JQAsCjUajmTW1LRGtEWg0Gs1yprY5wpASBIusOxloQaDRaDSzprYlgpXMMHR2QmsEGo1GsxypbQ4DkBi3FmX46OIbsUaj0VQYtS0R92+tEWg0Gs0yJFoTdDUBrRFoNBrNMkT4BDXNtlagNQKNRqNZptQ6gkDnEWg0Gs0ypbbFdhgbi6xNJWhBoNFoNHOCchhrjUCj0WiWKco0pDUCjUajWaY0dVex/cZuujc3lHsoM2bWPYs1Go1GYxefe8NvrS73MC4IrRFoNBrNMkcLAo1Go1nmaEGg0Wg0yxwtCDQajWaZowWBRqPRLHO0INBoNJpljhYEGo1Gs8zRgkCj0WiWOUJKWe4xTIkQ4izw+iw+ohE4N0fDmS8qfYyVPj7QY5wr9BjnhkoYY7eUsmmqgxaFIJgtQohnpJQ7yj2OUlT6GCt9fKDHOFfoMc4Ni2GMCm0a0mg0mmWOFgQajUazzFkuguCecg9gGlT6GCt9fKDHOFfoMc4Ni2GMwDLxEWg0Go2mOMtFI9BoNBpNEZa0IBBC7BZCvCKEOCiE+ES5xwMghOgSQjwohHhZCPGSEOKjzvZ6IcR9QogDzu+6ChirIYR4VgjxE+d1jxDiSed6fkcIESjz+GqFEP8qhNgvhNgnhHhDJV1HIcQfO9/xi0KIbwkhQpVwDYUQXxVCnBFCvOjZVvC6CZu/c8b7vBBie5nG93nne35eCPEDIUStZ99dzvheEULcON/jKzZGz74/FUJIIUSj83rBr+FMWbKCQAhhAP8A3ARsBG4XQmws76gAsIA/lVJuBC4HPuyM6xPAL6SUvcAvnNfl5qPAPs/r/xv4opRyDTAA/H5ZRpXlvwM/k1KuB7Zij7UirqMQogP4I2CHlHIzYADvojKu4f8CdudtK3bdbgJ6nZ87gC+XaXz3AZullFuAV4G7AJxn513AJuc9/+g8++UYI0KILuAG4Khnczmu4YxYsoIA2AkclFK+JqVMAt8G9pR5TEgpT0opf+P8PYI9eXVgj+1rzmFfA95WnhHaCCE6gVuArzivBXAt8K/OIWUdoxCiBrga+J8AUsqklHKQyrqOJhAWQphABDhJBVxDKeUjQH/e5mLXbQ/wdWnzBFArhGhb6PFJKX8upbScl08AnZ7xfVtKmZBSHgYOYj/780qRawjwReDPAK/zdcGv4UxZyoKgAzjmeX3c2VYxCCFWAhcDTwItUsqTzq5TQEuZhqX4EvYNnXFeNwCDnoex3NezBzgL/H+O+eorQogoFXIdpZR9wN9irwxPAkPAr6msa+il2HWrxOfoA8C/O39XzPiEEHuAPinl3rxdFTPGYixlQVDRCCFiwPeAj0kph737pB3KVbZwLiHEW4AzUspfl2sM08AEtgNfllJeDIyRZwYq53V0bOx7sAVWOxClgCmhEin3/VcKIcSnsM2r3yz3WLwIISLAJ4H/Wu6xXAhLWRD0AV2e153OtrIjhPBjC4FvSim/72w+rdRF5/eZco0P2AXcKoQ4gm1SuxbbHl/rmDmg/NfzOHBcSvmk8/pfsQVDpVzH64HDUsqzUsoU8H3s61pJ19BLsetWMc+REOL3gLcA75HZuPdKGd9qbKG/13luOoHfCCFaqZwxFmUpC4KngV4nSiOA7VC6t8xjUrb2/wnsk1J+wbPrXuB9zt/vA3600GNTSCnvklJ2SilXYl+3B6SU7wEeBH7HOazcYzwFHBNCrHM2XQe8TOVcx6PA5UKIiPOdq/FVzDXMo9h1uxd4rxP5cjkw5DEhLRhCiN3YpspbpZTjnl33Au8SQgSFED3YDtmnFnp8UsoXpJTNUsqVznNzHNju3KcVcQ1LIqVcsj/AzdgRBoeAT5V7PM6YrsRWu58HnnN+bsa2wf8COADcD9SXe6zOeK8BfuL8vQr7ITsI/AsQLPPYtgHPONfyh0BdJV1H4C+B/cCLwDeAYCVcQ+Bb2H6LFPaE9fvFrhsgsKPvDgEvYEdBlWN8B7Ht7OqZ+SfP8Z9yxvcKcFO5rmHe/iNAY7mu4Ux/dGaxRqPRLHOWsmlIo9FoNNNACwKNRqNZ5mhBoNFoNMscLQg0Go1mmaMFgUaj0SxztCDQaDSaZY4WBBqNRrPM0YJAo9Foljn/P/k1Vq9ZuY/jAAAAAElFTkSuQmCC\n"},"metadata":{}},{"output_type":"stream","text":"11.455599\n","name":"stdout"},{"output_type":"execute_result","execution_count":8,"data":{"text/plain":"[<matplotlib.lines.Line2D at 0x7f777513da58>]"},"metadata":{}},{"output_type":"display_data","data":{"text/plain":"<Figure size 432x288 with 1 Axes>","image/png":"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\n"},"metadata":{}}]},{"metadata":{"trusted":true},"cell_type":"code","source":"# between train and validation\nsecond_earthquake = 50085877\n\ntrain_dl = DataLoader(LANL_Dataset(df.iloc[:-150*1000*65,:],rand = True), batch_size= 64, num_workers=4)\nvalid_dl = DataLoader(LANL_Dataset(df.iloc[second_earthquake-150*1000*295:second_earthquake,:]), batch_size= 32, num_workers=2)\n\nloss = torch.nn.MSELoss()","execution_count":9,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"def last_step_acc(preds, targs):\n    return torch.mean(torch.abs( preds[:,-1]-targs[:,-1]))","execution_count":10,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"data_bunch = DataBunch(train_dl, valid_dl)","execution_count":11,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"learn = Learner(data_bunch, RnnBasedLAN(24,32), loss_func=loss, metrics = [last_step_acc])","execution_count":14,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"learn.fit_one_cycle(10,0.01)","execution_count":17,"outputs":[{"output_type":"display_data","data":{"text/plain":"<IPython.core.display.HTML object>","text/html":"Total time: 04:42 <p><table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: left;\">\n      <th>epoch</th>\n      <th>train_loss</th>\n      <th>valid_loss</th>\n      <th>last_step_acc</th>\n      <th>time</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td>0</td>\n      <td>20.881771</td>\n      <td>12.968961</td>\n      <td>3.034344</td>\n      <td>00:28</td>\n    </tr>\n    <tr>\n      <td>1</td>\n      <td>15.265742</td>\n      <td>10.961390</td>\n      <td>2.865591</td>\n      <td>00:28</td>\n    </tr>\n    <tr>\n      <td>2</td>\n      <td>14.109701</td>\n      <td>10.958992</td>\n      <td>2.865404</td>\n      <td>00:28</td>\n    </tr>\n    <tr>\n      <td>3</td>\n      <td>13.772815</td>\n      <td>10.971591</td>\n      <td>2.866372</td>\n      <td>00:28</td>\n    </tr>\n    <tr>\n      <td>4</td>\n      <td>13.581934</td>\n      <td>10.998455</td>\n      <td>2.868544</td>\n      <td>00:28</td>\n    </tr>\n    <tr>\n      <td>5</td>\n      <td>13.392735</td>\n      <td>11.033129</td>\n      <td>2.871367</td>\n      <td>00:28</td>\n    </tr>\n    <tr>\n      <td>6</td>\n      <td>13.217958</td>\n      <td>11.024844</td>\n      <td>2.870709</td>\n      <td>00:28</td>\n    </tr>\n    <tr>\n      <td>7</td>\n      <td>13.088071</td>\n      <td>10.977448</td>\n      <td>2.866878</td>\n      <td>00:28</td>\n    </tr>\n    <tr>\n      <td>8</td>\n      <td>12.995005</td>\n      <td>10.962824</td>\n      <td>2.865670</td>\n      <td>00:28</td>\n    </tr>\n    <tr>\n      <td>9</td>\n      <td>12.946448</td>\n      <td>10.960144</td>\n      <td>2.865439</td>\n      <td>00:28</td>\n    </tr>\n  </tbody>\n</table>"},"metadata":{}}]},{"metadata":{"trusted":true},"cell_type":"code","source":"learn.validate()","execution_count":18,"outputs":[{"output_type":"execute_result","execution_count":18,"data":{"text/plain":"[10.960144, tensor(2.8654)]"},"metadata":{}}]},{"metadata":{"trusted":true},"cell_type":"code","source":"learn.recorder.plot_losses()","execution_count":19,"outputs":[{"output_type":"display_data","data":{"text/plain":"<Figure size 432x288 with 1 Axes>","image/png":"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\n"},"metadata":{}}]},{"metadata":{"trusted":true},"cell_type":"code","source":"mdl = learn.model","execution_count":20,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# Prepare submission\nsubmission = pd.read_csv('../input/sample_submission.csv', index_col='seg_id', dtype={\"time_to_failure\": np.float32})\n\n# Load each test data, create the feature matrix, get numeric prediction\nfor i, seg_id in enumerate(tqdm(submission.index)):\n    seg = pd.read_csv('../input/test/' + seg_id + '.csv')\n    x = seg['acoustic_data'].values\n    x = torch.tensor(create_X(x))[None,:,:].to(torch.device('cuda'))\n    pred = mdl(x).cpu().detach().numpy()[0]\n    submission.time_to_failure[i] = pred\n","execution_count":21,"outputs":[{"output_type":"stream","text":"  1%|          | 27/2624 [00:19<01:19, 32.66it/s]Exception ignored in: <bound method _DataLoaderIter.__del__ of <torch.utils.data.dataloader._DataLoaderIter object at 0x7f77750ede10>>\nTraceback (most recent call last):\n  File \"/opt/conda/lib/python3.6/site-packages/torch/utils/data/dataloader.py\", line 717, in __del__\n    self._shutdown_workers()\n  File \"/opt/conda/lib/python3.6/site-packages/torch/utils/data/dataloader.py\", line 713, in _shutdown_workers\n    w.join()\n  File \"/opt/conda/lib/python3.6/multiprocessing/process.py\", line 124, in join\n    res = self._popen.wait(timeout)\n  File \"/opt/conda/lib/python3.6/multiprocessing/popen_fork.py\", line 50, in wait\n    return self.poll(os.WNOHANG if timeout == 0.0 else 0)\n  File \"/opt/conda/lib/python3.6/multiprocessing/popen_fork.py\", line 28, in poll\n    pid, sts = os.waitpid(self.pid, flag)\nKeyboardInterrupt: \n100%|██████████| 2624/2624 [15:26<00:00, 33.09it/s]   \n","name":"stderr"}]},{"metadata":{"trusted":true},"cell_type":"code","source":"submission.to_csv('submission.csv')","execution_count":22,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"submission.head()","execution_count":23,"outputs":[{"output_type":"execute_result","execution_count":23,"data":{"text/plain":"            time_to_failure\nseg_id                     \nseg_00030f         5.579088\nseg_0012b5         5.594763\nseg_00184e         5.594742\nseg_003339         5.594794\nseg_0042cc         5.592702","text/html":"<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>time_to_failure</th>\n    </tr>\n    <tr>\n      <th>seg_id</th>\n      <th></th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>seg_00030f</th>\n      <td>5.579088</td>\n    </tr>\n    <tr>\n      <th>seg_0012b5</th>\n      <td>5.594763</td>\n    </tr>\n    <tr>\n      <th>seg_00184e</th>\n      <td>5.594742</td>\n    </tr>\n    <tr>\n      <th>seg_003339</th>\n      <td>5.594794</td>\n    </tr>\n    <tr>\n      <th>seg_0042cc</th>\n      <td>5.592702</td>\n    </tr>\n  </tbody>\n</table>\n</div>"},"metadata":{}}]},{"metadata":{"trusted":true},"cell_type":"code","source":"","execution_count":null,"outputs":[]}],"metadata":{"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"},"language_info":{"name":"python","version":"3.6.4","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"}},"nbformat":4,"nbformat_minor":1}