From 5445cef67d82ace006fa95fea18802f6d09917e4 Mon Sep 17 00:00:00 2001 From: Arutunyan-Dmitry Date: Mon, 16 Oct 2023 01:21:35 +0400 Subject: [PATCH 1/2] arutunyan_dmitry_lab_1 is ready --- arutunyan_dmitry_lab_5/README.md | 93 +++++++++++++++++++++++++++++++ arutunyan_dmitry_lab_5/all.png | Bin 0 -> 41042 bytes arutunyan_dmitry_lab_5/imp.png | Bin 0 -> 38817 bytes arutunyan_dmitry_lab_5/main.py | 65 +++++++++++++++++++++ 4 files changed, 158 insertions(+) create mode 100644 arutunyan_dmitry_lab_5/README.md create mode 100644 arutunyan_dmitry_lab_5/all.png create mode 100644 arutunyan_dmitry_lab_5/imp.png create mode 100644 arutunyan_dmitry_lab_5/main.py diff --git a/arutunyan_dmitry_lab_5/README.md b/arutunyan_dmitry_lab_5/README.md new file mode 100644 index 0000000..d55ad33 --- /dev/null +++ b/arutunyan_dmitry_lab_5/README.md @@ -0,0 +1,93 @@ + +## Лабораторная работа 5. Вариант 4. +### Задание +Использовать регрессию по варианту для данных из курсовой работы. Самостоятельно сформулировав задачу. Интерпретировать результаты и оценить, насколько хорошо он подходит для +решения сформулированной задачи. + +Модель регрессии: + +- Гребневая регрессия `Ridge`. + +### Как запустить +Для запуска программы необходимо с помощью командной строки в корневой директории файлов прокета прописать: +``` +python main.py +``` +После этого в папке `static` сгенерируются 2 графика, по которым оценивается результат выполнения программы. + +### Используемые технологии +- Библиотека `numpy`, используемая для обработки массивов данных и вычислений +- Библиотека `pyplot`, используемая для построения графиков. +- Библиотека `pandas`, используемая для работы с данными для анализа scv формата. +- Библиотека `sklearn` - большой набор функционала для анализа данных. Из неё были использованы инструменты: + - `Ridge` - инструмент работы с моделью "Гребневая регрессия" + - `metrics` - набор инструменов для оценки моделей + +`Ridge` - это линейная регрессионная модель с регуляризацией L2, которая может быть использована для решения задачи регрессии. + +### Описание работы +#### Описание набора данных +Набор данных - набор для определения возможности наличия ССЗ заболеваний у челоека + +Названия столбцов набора данных и их описание: + + * HeartDisease - Имеет ли человек ССЗ (No / Yes), + * BMI - Индекс массы тела человека (float), + * Smoking - Выкурил ли человек хотя бы 5 пачек сигарет за всю жизнь (No / Yes), + * AlcoholDrinking - Сильно ли человек употребляет алкоголь (No / Yes), + * Stroke - Был ли у человека инсульт (No / Yes), + * PhysicalHealth - Сколько дней за последний месяц человек чувствовал себя плохо (0-30), + * MentalHealth - Сколько дней за последний месяц человек чувствовал себя удручённо (0-30), + * DiffWalking - Ииспытывает ли человек трудности при ходьбе (No / Yes), + * Sex - Пол (female, male), + * AgeCategory - Возрастная категория (18-24, 25-29, 30-34, 35-39, 40-44, 45-49, 50-54, 55-59, 60-64, 65-69, 70-74, 75-79, 80 or older), + * Race - Национальная принадлежность человека (White, Black, Hispanic, American Indian/Alaskan Native, Asian, Other), + * Diabetic - Был ли у человека диабет (No / Yes), + * PhysicalActivity - Занимался ли человек спротом за последний месяц (No / Yes), + * GenHealth - Общее самочувствие человека (Excellent, Very good, Good, Fair, Poor), + * SleepTime - Сколько человек в среднем спит за 24 часа (0-24), + * Asthma - Была ли у человека астма (No / Yes), + * KidneyDisease - Было ли у человека заболевание почек (No / Yes), + * SkinCancer - Был ли у человека рак кожи (No / Yes). + +Ссылка на страницу набора на kuggle: [Indicators of Heart Disease](https://www.kaggle.com/datasets/kamilpytlak/personal-key-indicators-of-heart-disease/data) + +#### Формулировка задачи +Поскольку модель гребневой регрессии используется для решения задачи регресси, то попробуем на ней предсказать поведение параметров при обучении на всех признаках, и на значимых признаках, найденных ранее в лабораторной №3. Сформулируем задачу: +> "Решить задачу предсказания с помощью моделей гребневой регрессии, обученных на всех признаках и только на значимых признаках. Сравнить результаты работы моделей" + +#### Решение задачи предсказания + +Создадим два обучающих модуля. В 1й включим все признаки. Разделим даныые на выборки. Пусть обучающая выборка будет 99% данных, а тестовая - 1% соответсвенно: +```python +x_train = df.drop("HeartDisease", axis=1).iloc[0:round(len(df) / 100 * 99)] +y_train = df["HeartDisease"].iloc[0:round(len(df) / 100 * 99)] +x_test = df.drop("HeartDisease", axis=1).iloc[round(len(df) / 100 * 99):len(df)] +y_test = df["HeartDisease"].iloc[round(len(df) / 100 * 99):len(df)] +``` +Тогда во 2м модуле используем только признаки, названные значимыми в 3й лабораторной, а именно: + * BMI + * SleepTime + * PhysicalHealth + * GenHealth + * MentalHealth + * AgeCategory + * Race + * PhysicalActivity + +Обучим две модели гребневой регнессии на данных из разных модулей. Решим задачу предсказания, найдём ошибки и построим графики. + +График решения задачи предсказания моделью гребневой регрессии с использованием всех признаков: + +![](all.png "") + +График решения задачи предсказания моделью гребневой регрессии с использованием значимых признаков: + +![](imp.png "") + +### Вывод +Согласно графиком, среднеквадратическая ошибка обеих моделей достаточна низкая. что свидетельствует достаточно точному соответствию истиных и полученных значений, однако коэффициент детерминации моделей имеет очень низкое значение, что свидетельствует практически полному непониманию модели зависимостей в данных. +> **Note** +> +> Модель `Ridge` имеет коэффициент регуляризации `alpha`, который помогает избавиться модели от переобучения, однако даже при стандартном его значении в единицу, модель показывает очень низкий коэффициент детерминации, поэтому варьирование его значения не принесёт никаких результатов. +Исходя из полученных результатов можно сделать вывод, что модель гребневой регрессии неприменима к данному набору данных. \ No newline at end of file diff --git a/arutunyan_dmitry_lab_5/all.png b/arutunyan_dmitry_lab_5/all.png new file mode 100644 index 0000000000000000000000000000000000000000..5834679b180a68d6bd1b3d095a58f9ff06944989 GIT binary patch literal 41042 zcmd?RWmJ}7yDj?C-3myDsB{R@4bmYX-Hr4s-KdDP(jg^M(%p@8cZYO$*S=rBZ>{yM zeb!!QjkA9q#&9rr<9Y75?s?5Quj?^LSy2iLodg{Mfndoc!g_t zZWa9Eb&}L{QnfdCay5dQK@^Of9Bk~JY^;o_T+E>Ft?cbyvT(C-Fi}}LIXS%NV`a7d z_YbhxLoHb8_11jBMbI3iwcbM@I7YC4a5=)+RuD*PlZ=F@n%noic~`ebl9VWi2bn}v zB4YSrXz3r-#19%!;UuGfJfi<_`a@b3SHk9ntOos$7hn8Z8Bt%n71@$~v-K$wlK#~H zYvTdshF;5oTJMl6APjMFnbm-Yk6EmxIB%b*PY?y zZ%R#N5D^j69F|)zFIOUx^*F)O)PWU>t9UogkfX*BC9F}X`^IMa>gvkveA5y-Q&~} zjQ7zi&vTn{`$dYP`eXE8YPo-Q|9lNpMf*U-Q->>ItX`lU5U1~fCKXO5+Td|UR=Znj z*8Agi7|B$vbDnsd+)qYsZlblG81W{bJ2uyST??W>vNZGlM9aBqcA=Zym*55hWOaVs zdsel#=7q@PDJAdZfXZaW24Uz3vZ6yC4(JZ>no^Y!(OX4WChkc#L4|H`*GUcO{^ z{39`ztBPV|Wb{J6o`;0nE|k*ub~uNryStm1(-IflA3<1HIIng@r{Y}z3D-Nrhx>>4w7pTk2%a-%C zT-X!>ISNs!sS!vRglUS&e5lyiuZMp~4(Gg~wOOdwD!TnVd!AR+_(3*PtOmMvnw2W- zt6xWXb$z{EP(+u+ZQl__$~{zMAl$I^(qdq&H(NPf?8nV>$n8-lrL?rPh?^VFhYugX zi%1!E9VZ)u8TN~fUqVAAz$AXX&HF4FLa4<=2`Q_x+MEb5Z}I^P&TcV423to_QPCWY zqLhWB>^h&?{l%sTd^%Z?OckTS6v3G-@9R@h8yhCrrSmn}Iqet7gdc9p7V2T~GFhk> z)+6+8>_x^JlXf{Ovv#?Nsp(TOaq%~0<_h%>_cvYL-NSN|zuq#IzZ;jepNXbdT{<`@ zaup)xaY!2$a$IgjLPSCeqVT=DK5OG%^!j*u>XdPe-yNjayvmM@LlJtuH@lK#-`G-N zJ;~;M?F6oZ?t6De6impB4!OMEDH?9_^>sQ}AUE*2qPxAjE3uj8aN3>1o2{~!nys|` z_U#)SCH}2%H7469u&# zWw=0W^43}VrZ8~Y48bHlwz8E{!&&rdsrdOxVNt%|b7Q-@wq|tn=Qm`mrLV#B;&3~! z=!aUa%8Zks$7wSN2-vV}^%0OU!D&S~T<|FMd3^=|Cfr(3X)Ki!=k{pHc$-!Hi_kX+*X z;1f#9jcq$qE^24T0;0h6>9c1)WTKuy#)x*oi6!}ng42<&Rfda;>$lPwk%SdJIx@m$ zHS+ZG`kKT$_Ul(a6da1BdDlfrur|vpD<9oY)`NVk*iJ{4gsC|=@WDACy1N}p7l-)O zxgHoV)VsSK{U&+?qLR~Q3KvrBedF@<>C-grig%Zr84=2rHd?whP$Yhr-Jx~I^Ia`Y zs}V%A-q_#u?kBk9E3AuyMeal}l=r9G;~3yHN-HUKf(rzE z`h<9UHffNfUXb{^l(g3Ei01lyFQmGf2O#~@pzuTcci#7h;J4xL;K$E4lK7k%gl-ST zy>9lZX1qtE*-bi#y?KW%$A3N6_q}u8oi0N`Lqk)KOO@vE?~*Lgtxz(R`|^#hfF$Eh>`s_L&_zox~pu(B%U=+#vYrHLYl;v!Ph(Mdw65K&Mt zWMpJKtaQpPsXqk-pgno=;8Nl5~TI|Y$vSeF$oC+CNZ1H%|o$K+b6LAbTo}3 z{c*XAbw$R~gj;6|u%tOkS-R1nQ$avIr+FY(XjZ&?n{NC&c*aU)$N6k~93HZKGAPVl)8~D2 zjt2Q;HJX*ctYc%7zfeieZTDRnAn@|EMe1W?6O)S3gSi@72=0R03Rc4v$XWE#ym#t( z>I$1g;2KDjl$1sw+~6Tb z7yI)by*-12L{KR76A0vY7ds%OSqXDjG-=IXySuxKDJq5+dz`&%nVi%pV$rU&p@*#( zE~02WpYyM!jg99X6vS+Xe)@v9hiy0?A|fK#089?Au=4ZkDCerR?i4lImFh}B4T;#? zLjfF#9y~l#NTho8iV)lk8A2xDh6{$!<_CuW%X@d-gM(7pipdUO#X;bp!ok5o`~Wu6 z^6_c24#FWIQ*m)U1|(%PDJ3gM6@z!#QujE#*?N1XTPo}tiU!(`uGTeL1gPS{g4cyp{5qKzuO+m{kXYl*B^&+*405FRyE8`+#k(ff=!5;{aP%>T>=o6(>p|Ai9A{b#0JuLBp3L6?5K&^Vp3n+$%zx}b}?AEjKW{6O}F^sf!LB6ufv#PRYUD?v(j_z z=dZmFm;7J(RhIjx#Lr|UuEnzGX+s+pYTl!OfgB#O-!)tSpglZ0d#qPTPb(EZ<|6(M zUK-25z#!kCi2}SJ5k|uGbR!o=siRs*Aq~#h*w`H(kTA-7hv!_iYMrd2P8J(HiE3(U zG>Z-WyJz8SrtQ|jt$Zg_8vF9^@n*hb2fNm-S}= z>12R7zE0pUlV2AGj90+x68HUj-*8>_m@l<&`fvqPRneEa^LiLU^l7{u?(7gR_y z7`!~P*qb+Rz^o;=Ml!!eN1L8r^(S$|K|o}9j4pZ}2$oxozP8s6A!I(ikNEOMq(HlZ z4bZG%GwTm>VXz!-Jy{6LQ{a#R#%Z4hP~~#3YH?|2Cj^##0om28vP)hF+tt$2dhHGf z7OC|_zGyO^Gn?0?!|B#2ih=JPmkwL~!lg*t3JZ=eaS#ckq#%`)&i6DHyaK)j}(w|13C-SvEf<0ee?T&gj3dW3_>V5tM zz*rED(51-DP2E9bS-h`=1R}^b7RM)G2_ec=t9$cxL?B4Sz%hIsPL|t{syCQ90t>oK*%*0bKX7noVn<-;B_Kcs zsEXTKj7GT?*cNlnFLlcH56p}m<3#)(3`kotOoJ#p0YYrsj)Dn<46DJBYZ z0?{8cSn5>%oUjIHas)!f7-+|5b^iRW`=K@OH;lU@>EgMpW2Z|qv$J8V+%{EWq9F7W z4w9RjyE$1znc{P8wf7PKGfrK+3dqU2^=`wf8?`sOW#;|GK6f5~>LJ6NnA@aI+#1cM z<>4V#%~p*0?hDk<@$s?4_85J`7SLm_J9Cy@hREb&Zy019D;em za*x}^ysKm{;DDNAg?c(gZw>muk@}X9VC9lZ6Nv!ZNPyA5zfy}I!r%+2toT>9B(gCK z0eG~pA<8(trG_o=fCfQ8#uNvd1@Fm|Ah0@r30yM2D-7fy+t05jiVPxv5?&7DUJwEM zUjk(NE{Nw;pX=O((R`JDK%Bw1B%+=vu$lJ}!*C=aA)y+&hF)nmADk%{x9vQsSMP=g z(gy$W$%!LSqPD&MS!O@Lfu5>%1nGj<9|+t(u;B@MzLJe)3IZZ*huL$zFM-GNoC&NV zoUrf?&duSWL;Z0NqqMv{Y|%@cchtQAGQ&;*j15CX0CO!d?F$-?d~HCXUL6h4ug?{~i%3gfaJmyZD=Uwr%#`Vy$frEl}6#+u1~EnNngp|Tmc3En5-Z0 z6pU^!k6!3hG66g;0c0N*Uw+s3HQ>wXAV2?|CQ#8oL9n(4U`&;oVE}1l=3LW%1RxdU zTXv&X#MOy%e*?lRIY|z=zdcccX-#ls#MRUu6&f^!gV_X5~TYs?7Q&d4j3B& zKo+8cvrh!HXMjqkEE-6->>eKu08WdEiG5K1DUC0+Y!oZ8j;x6J+f)hS!Cujwc_{rmJ8_nO}Uko5bK(1;w zjPiR}y$5_2NBCA5CO2>&J$m|xK}|YGyW$s{%@kXME%h1w(l=Tubl@%#GN|QH0aAeh zMCW6WEli@-WgCDj5b(LxbUW$i4gd!b4G>W=H@E7cECteK0I@TifEl-TQu;ED<-8F` zMMcF0N&FMQ3=Ex0n_)&_$TE-*F_xeTT` znp8O5k(k=tERqf|xD|LJzr4ltRzLz50~i=kT+H@&RRQ~F^SO0v;Djk00LD+F8Q#jm zRul+gY9J&fZV(%Ii;wA-E*3nMU>4FR;3#3hh78DB0N{-wg$7`I&$6t;x%*X{VOQaE z+N6?r{TluL{$5N?EgIYr#RwcBj}xtvM~7gA%Wv#+RWd(K>U%0oRoW&Ek9O87!CAxf z6o3x`2KD?GAh0n$q%Ay$ptgO+8kNiAwSV&0-XM54k#D7@PE&KFK(%`Q{i*}kehBy? zKY#vQ0?~r4S16m=+VzdLVg=KKv0rukGfsSU63}c^EG*cRUWah{-e+$uh&t&qGc&1y zg$ArG_RrYl+c2ANg^f)@g2iTkuI6$r&Y&E}>+8lf5N&S&nAD$+$PKWdyTc*-fsf>a z)2Uel&D71}5p&*4CGxAoeRe2c=HP5H`2{f&}1J-}NwoNm>eX zZ%*}FwiJjVGwHxTg^cklf1{E7u1f;mjig~_#xm=P9@g({z(Ww>x2*LJc|_j|bD+EW z-A?v&7N(CBV1xSoe;AYzi&^nm#_)G6NQS^=^$uqk;_ zjKW(M02T%eVr-95K9}7ufR)lbe=g;elAq7?Gc$AR?!_}<$}e9aY79#~kB>N$xDgH- zF;L+hR*;7(nTJYf50^w+HW(fs&e~s}>`iB+G}@9Lc0X@+U3~22vQNflg|FPy$fwZY z(Hu^`JqUg8Pp>*Q%I^fZzYtzZb{*>-97Hkihp)6}?bN4_l zsr$MAO6Ry$1f|ACate07E?WJ0B47VnZ!=?2&W7*VTjv?i3%^MN6vb3zkY3{X9`iVg z2{O}3CYvvd86KOSDQS}ov=-e*Lk8iq5RRE%CRNrfQHm4VC@3U&dIj{C-G6%R{sy2l--Ku<5UzuQbZty;YV{=HW4ZS!BIS^Js zg$FFGIYKy5DK5D{pQyj_d{B5B8cMEHtONu@u^qX?1&eYX;n%Ma0gs>ey9Z7FufxV> zYvhOw7X;FbCC~0JcFT}PvlS3r_SGH?vO=$=T<^lk-b^lkrEVTo%IjrwV>`S(>6mrz zCvg@M^nlFQ=3ZEY)e9^oSd7gIaJ?1WySo_Q>W$ObsDoyDBy(+qT%DXnWOhdQZ(15o zv7NnoH>ubV-Wd*8QnGD=0@@;!Lpj5QVMzh!m3aXI4^#cjVxn6LBSpC9k^&`!MO zDN>V3rc4`{?UZV0+FihU#E1;QyY_yj3Z*0T&B4a-aPvVE0x35m-X|2j+g)p#Mzea57|Dy7_f9YPo>LWUHA^LEY!{k#bd z z?QRvGNu)niWT7zAE^$_K4MNzN#|-`OFx^MXd{Dh;b|}61{b26Jr1j)j>ceT2$5j9Z zf&QCRZ=bHOFjfU`@$-L1N;UfJ&ohtNWVei@{GN*?|k2>d_EFs19J~$4Jv76=P zwq^t0+>^JtV`oE+4c7-njrfbcT|OUB;Hf}urrRbFmJeYXGRbAB84mbpC+iBs?&f{* z)DX6783l!yyiKIW8%5l)!0cdDQ#SafC*kccK4nFf+pHqogY_3n}V9YlS#=W9E*f*;|1Dlz%JvvIWY zVaveBs!_mL_@JIve?RBN(J7@D73#x%p77pIQP^n1UFD_A?e)$FE87|3!O8518o~a0 zLC?N}k0dASTiGWUldNsiWk|jkyIO}AACR_B8Dh@P@~_;FBv<&@s~+Oz@=Bm)E#+|r zgrDwi6gGH$8>znYnSJlPJVF{(&&N%@Xhjm;oOyfaD&ps+#Z(Y6b$YUav2H&(0Bt}- z+Io2SO;l+g5&Zb9_w4TC&rRsQKy9aGnfY~U9Fx`jF%D&{x&m@;=W6YeN zoi0?{u7}+YMdm$_9+e~ZidMZ|8P(TFlU%kC=x-Zp~piT7NAEI6v z45uU#whu{8>NXNsrx3B0l#-&=dJlg&2sqO6#zr7eEW_^b2ncw@#G7CKfb57z-(jr- zAq6$IWaPzPF1u6yfNQoaE-uPsf|O39k^+(^4y8~#5dMzGO<5hmBIKKUagdhSql*ZF^SDT&nu9u^Y3Z{x&}$dz2R%E8`{hO^yV`$&{3{~c)6 z`(Qiw8iQ}-uy<=_(I)3h8j~Yt{i2)if_Iz$=Y0Sd9nYzQzT|g6zLG_(K==qd(ccT% zAxy5>Z9ED`kmmT0)r8%J+s?J~+6BC?0)N3+3IskZX#OW%2XmyUpPtf`k|2mc1+WqK zG|8AIuBx$g}#t^y`U%?}mzw zE(WOJ`N5+7t2^KaDc8B!0HIQ=5n_;IAhVa7KJGxOlo{#WSvVYA@ z0um1@;U=Bo{~)LQPMdz9G#ETE`csAgW=7~#*#%Ic!u;vRhkH*@clnJc`3&&+&n*P> z&9v~%(b11q*Vd>R7-a1|fKZQ&ijv&00<}z-@d%7-YEao99v+5OWC@ux4WYb1!Ar}@ zjovsusa-^jAt7H-Yh;Ky1%zi^$^1Naex|hRTgQTXdk<4=V9hmmTt`YspsuskuTbc2 zp6u?yXEV+!Ox0Az3SSu`d-7f_7OAEJv4ItXAc58IQu$m%6DDt1vci!XE81Z*%Sq>$ zYC#lbOU(M~0sp6|8L}2IHDI^G zs-YF<^NrrKId7Fs0PDA$DW})>+~XSi^%jGi-=!UtAWDpXqd%pi3mSN7*7N9RR@OUT z;I%xvsl|l>Xg|1)pC1GWe-of-Jw{=D6`%t2WgrR^ttlz*#xKs!kkagU9}y4}e*sMu zn|H9U)sRM@Lf{NrKcQXz31KY;H@LmKScD-Uuv;qhYE`r3ML}Of#TEgmWjL<9X3{D} zjAPMj1*J!rsRdjQ2r%ylw6S0(?)MdM9R#`sYBQkJ5TaFP4)fKy-i<1ggg^o(ByZ`ERLcbPmyEXlU}>+qcqH}1X;s0+sl;%he zJ_7LxutI6c&P3FaOr+D;o0qZ^E;{_oD0Br92~Q01fNv`~ihhU39#h0+aw79&V{l|+ zeWdFRq34c@4TW{DjRJ+NohMyo-rU+-kGa=67rgX4xntF_vb$~2=-+s~l`g3j7VhD{ zbaHPZqit&e_U!*AqLw-V#{ZhoL7)5gJ;NH*Us>J20BnT&T4-48T zXst?{90(Yj5%!A9a(~q%@noTZj%Vg_^pq4alr)jX4yzCqa?SS6a8?#qg|9KiWz^BH z3EanYi4V9tMc68k=tM}?fa5x)w+HU{Un=(hz+L=ro+|{A5)$erkWDn$Zou#}pLMch zFCzl12ZCtS-}O*>2Up@sWhoWi^7hzCBOk*%AICeq5XUvgR|@k~Nk8yEvSWCseR25j z{}GILH5>`O05QT2IYr!mMfj)_&WULv&U)p1xbvE=!x16_hY1n%U!HQSEdL^%(5XgZ z-LW3UF_4-$*q`|=gGqKQv%;+M84g`1s;Y5akDh*Jr){}Q>gX-AnP3db-5Ba**VkT8)rsmgUHCH5fk)8KG%}Wg*6Z)ldVyoK+rrZ#g2HQ0s$eBKKnRLt;(;) z4mG#8JX$e)->9a?*xEh+AHXTSg&gTQ%UGhf#!`fTQ)l#~pSf*pLuFzVuk#n}xslWw z-Ny0viUWGCh-YC1oj-Kt$uV{dU3f7e-A9+U6D6991D&=avP(XaE{6Y4cVcy63hOn% ze-IYU^LB-6Jbqvqp|*2E*P4_aJlIt9e*eD6n`pYuY_1^_hNsutKHg;wn$u~$h)*MIWdXVMi3C+bhaiDrnH~L&(2NLQPV&T zVB?z#Sk|P_UcC7DT@RkoZSxh?^OgT%n6NgqFI|Km%uzX?yM9!_7W{-idBQ%Nn@L4e ziv9OQee{P?S%MQqzn+S^)G$QQoJmlL;`h%<;BwOY={2V`JJ<;5XiNO;Ghqn(&*zJ7 zdt`<~Cn_+~gKHZIa60q!FDc71i-K zXAJ25>&^<4HzK*#ru-k*4H#ytv5&mb{S(k4CP6#?qFv(H^8NMW1p4>g3H+cE3i3I+LJVB5(SwvmPB-{m#VPc4UOC z`k`40NygKqW}CpP8b}cg0nLEH11F#(U)|c!k}ySaX~M^w9-yuDD=RB= z+?`@~+8h$K_W&Iw4#2z`c7J8R5DL`8GRR|6z*~j2YSmwF=egZpmUOR~nwe2EGbwyx- zXHWx%wNBF0(-X5B|D&2I)C}roe+sG=A{%ZcR#SADkm+b5`)IWxTx!S>?HC^nITdJy zg((?g&|#(5kH}bupkrV;BSNSZ*zWR`@QMi>NT9ejlL{(7-Hq51rgW7baPhSI!4+s} zXh0>`dThq^=G-!YI^e|h>DG#&@qW8iP?~e@P?CH^ZfBjQ`46XZL?xY7VIsn zvRflVQQp3O;n-LlolV;l_s?HPP=tYap$5fcP{tR4HO^TSd=Ro1)YP?YNcKKDm7q`)CJX*d*7`C0 z36z|I00Iab9xa=3JL>QtsQ;O97Qk9-=R54=F7$CT_c7RADTBw%v}K=n-uXjgeoq{0 z@<(VU{678)rTqGzup(#7J1?9^oxB8xpMjM(ZX@4YDc7CT%0`fI&3Jq6_swIy@J=T< z0zBTRyf8Uw2~z-+PyrVU9>N_R_DGX|l{-+<=|&m?y;Yh`5`d_YpW)J;J5+fx@?fW# zxGQ^ek+1IJzi9qg8Nu`~8KEXDBNJfu)jURDrw+4!$nWoZ_!lR3FPDJ4-8D*PIFWWU0m#GAx_&nt6g4(%dC z3mqS~#hl1Q7*U89h@uc6(ioAs%KM7O4QrQQ9ty^eA5m|J3=OOXo6&^)E7RaGBt^xm zA^49n0WZY?kt5SYm3X{2>ZgBEk#mvfBOC1@R8mH?G_JoPLj={chG_tvN;C~t6|0*_ zRz!wiJPClO?%qh}01plH`9CQEG)(U~*Z-D1q#_VrsGD0KD?>xs{z1-uU`!QHkO|bCfSMv}~9oDo(z{Xfff?U%+)Y?8QtKa>QtO%BcNSRiDh_z0s$JFC3!xy>T?zfEJ0#!~dN2WZOdVY`9gj_JzlEK#L6~6alGQ4l3fEa{#?qh-s%KvFv zd;On$_7X6135m)fmlsDg(yIZVqMoEU1sEBw1fH8730(rqrxjn!cR92umpK77arXIB^%HH4BUg8_r8pUcVDz={XPl(eYf%NyLjDx zL=qRLTWih`Kk~=Py13kJo{)J;p!}isiuJ)eP{l@Kh zc*I=Y-j7IFy~I0+^)8GF#;2YlC{t0`c$QBok1id z&W}+tSr1<&I9m^478^py1zC7Y?%?vK>$iI=5rsV{Q4tV_hh>kssb!65zI>G$?Rd}R zZO0NuX7(+YrS1amyc1r$R;vq$=!sCeoPS5R_B-d#X3@o%wjp1p02QfB{=S>PBG>9| z*7HNcgLp24ep1NVmO?gs%c8&0w5^1v>Paz^zV;i=V<4_AVF+QU7oJ*%A@a;^r{&MP z9cFPhZ*I-3Qa5ys*^X81YF}d2Vnvq62w9b?4}!b#r&nY%NKB|K?vy|4Ofb^2hXi?| z`IP$_zUppsFlUxk?LuS!1+0$6+-j;C@MqudAOF=3Z^G|J61UDvVZtFcgLMu{@jx>W zfN;c$K$!JIglZDz}B0l$b68oS>WugLrSGK6qym{!*0^UUZ4&f z#6Z)1Fgb6TNavyx@>SX>h2&{9CjWlKbqx*fB{Eynx6n1bwwsyn=E|;A=0CQY`)3>> zF`=H&`OV-yLXnG&*L9=`t3NK(SM&UQX&zZBI1HcBU7U#FoE;n`?+*4xX-j;sW#FJ( zWZZ$TLWeULkL1!xO5md`EPz8)csN)P6K8Q7SkWMX-TcwZbXsNGM~CW+7IE!00`zQD z2hAaMD`#71t5;J#_UQ#Sf`asp`m+Y=cbU8DIk)an?8tsUKTfNSs|@ijkA(a%I);+D@goY#yh z)7MVub*jl(Zk@Z(gqi{Ss*Cw(nPiQp;+@`-u`mCl%X_q?I+A8@{?u!()!T~Ejd#qE z5c?#@M*v>X%hpXR8~NDs8Nbr5(rZwuAhK$wh*x=zI@Cd5=9N&)Q5qmgt%{}i>fhBh zI>3v6*LhUbtS)h2)L*I2QSG?aETb$_^qdZdoFXo~g;0bhU>eF%7Z7+%)ZS*PV{W?5 zahuL?*xEsK$TnM9%dLY>v^jC=@=AD*!J1yT2xIDT3D-RP6g-eE4xuk3-Dj^Ojh!xj zT6iGvoMH74F-J_Buj4_!CO2;!E%tgOLEIngbWFlDZU;M0dLn#ZJ% z1@K%Ml}-XY)pSqR^q#5*R>4jHLAMsV|0e#wk-V`|%_>zOObKm-EFA_dcT$$_5# z1E!R4v*DVM^`1D@E9PE(^VpZi^l2l+OX*+Dy!FrbClfhq;SzJ-$6*L{{n`6(&Cs%w z%&e>*z7O}XX5){tvIDUz?4AwU6ezJ&NEHVtoMi931~ZuZZ8(6O?FSN380O7X&TVijIsUFC9EiqhzCsfC!s6czSF%hkz7hI|5tW~ph=^cC!Z zp+@hUAC4;>*bKQGP%p$=b;7Q5XBQdW*}=#De%$_<*!A%>Ge~W!mOJAqo)F2b=^2{U zT)h#L-e11H_dnnF8nLP-Nzok#RZ*0E&byNoaL6P+w8dH}U(l9HX$N-Q?ye0PzY8Wg zpVLs%0_Y3@P1-}NUZ6>%9kc*}hXF8Udb@ji#I&^&7b4`8bJqJ-_EB`(rzJeXHids$Pf>(Azk>&MxsO~viU4ZE+q|D8MjfO};MVI~-1V_nmICLsh96~wWkAtL3=G24ycn{=o^&`LAM+4Dut?@X_-1U$!ewb*G6&E5Onv-@iDTOln z4m+6c*$%*hqehdiWKhEN)`L02zl;*^p zvA?!zm<6q>+stpw>L6f7v@I%glR+Z z=?Ol~vB$j9lU_A1xrQptSxYkZZIV@Sk8KlK4KnYIEqFLSzTwqfyIwUC_yNkF&*bC% zeD1E(fd&6>kN1HGfQ&B>mmy>GRor%S&D-O7u;+S6xK1gpgTeD-%F17dooJv6h38`h zc`=i0im|86YDAGFfafCn8QKlUU_QVZwtv9`3jWik1(4Ak{0E?}!v20;{t81~8(NY0}q^Bz>< zPxN963Z^QB5RKm@Rd*Mzp9}n<5GmTQE1LSY;%r|z@NO}(LPgAPIN6_IICeCVKewC!b>VG;**hsfXruMR-bdet4sXYafAgnc2mXA!pgoc4m%3$ z;WklNrA++x8~lA~$=;|u*(94)NnugMKz#MMDWFex(#^LT$JHep$hhzgIPTNN5hTqi zT(^;q>OCXBYowh#>%51Don<7g9y$*+htcblMPf}xBPttD9wyG%YAmsAxHd^-dRM2N zS-QE-IrD2;_-c-MR;?%Q>x)4*X0}U~^hq*Glf>S<|G( zh1p$ZHIsHFal5Yqu6jKx?jGyXukX(a|IA zdgZths@vIb!E!h-FRaGRRzc2oO%Di`hp}EQN#28Qn0HC+Ni`*tiU01?jVm_|_p^h? z&o#cV$~8*Lw6Yj(fQe!snOj@LHM=`0L0@Xa8L9fo`<^{)v?Z%Ntul3^ezbIn@!QXW ztX|~#Y#sqq&CNyYM>9XTB!kl0x6=-k@8dkF`%6w&%PLAwN{?JHK;qh2Hz6v14-*id z=OHfPQf9}977PYxCMW%N^d&au;Ru%fJpStwQt#ZKuIBM$FXgK@)9RpDztYkt@a+|S zrx$-^ghpgu3;cFQ!rOet5vtK4!FF1u#=sj>8 zHs#}XdSmsQpPtl+Ik|t9k?(u|io5$7iaNq)@7&}SgcO=ep%cnI1HlSR)NBkg>6&j+ ztLBGk@Sx|m*)DMWH^ydNEkvvqGV%%%`i&e#UhZXBhvNn0JUQ;pm0T^+NV5#nx=fIi z;lzxmuJs~2vF_r|$y;`{1(_)k!tV96M!g(Pd~5j%Co&7q?A#QcQGjgz7OLdEy=KZ_ z5F>jHltR=B+CR+gXpij)iAIkLf$8GS)PcKCQ&%O@m#;*RIc#MvrVO4IJa#ra{_|79 zn>6-K?(<3Vk|LfPdIuCH18xE3Tyz%eY?{nIYoTg3(nq{?cD6tDEMm&J33ia*5mLhA zqP~KGHruDx*SCy2xk$w2F(Ms5ZB;B$4{q5A(Re zt2XKNwkSEifo5=cby-dk50YrSmkb1>Hf^C z3>4e~Eh4MsQCqbBW2Aeo6SXX^f~<4h<~7q_j{ry`rJ{s01uNV;##I@7VXJ8B8osu( zJGd4U#v^asrqc0IkGh&tudOn+5=?6)UNUAsd)Oy$tQAJ~Gi@KQV`6qZ`QsTdf#Clu z!=LhwCD_NV->jdjRd{r}0aGpb64|q7Iwg>?T(_>*(d?I;M(*)qcXfvHK%q=NMWzp$ zXC|XVu3HOarLfq*^ChyMzVXKIWXsZew1I_^eMfIs-mR#_I-4T#2Q0J`$tA1oSn&aj zueq#>7Wba`&S9-Z6=iXnM|#Wf$@o7ONey$QYvI!Dv~}u8cN+2=S!<|#FD&*1J)sB4 z(~aAUS(QO`++x)je~l)%D5RD@LA7m@%NxF)C?8_$Fri@xn`w5M zl5xfxd|$8;Z5ax<^qLD@N^nV0X95a}utWEL`begi1?|z&J%d~8gsT#>?Na*eEXxA! zszvZgTTr=?SGLcj)5l`x`vh|Ig9JqQZ7EH>OO#3XJn$4bTq)drTmx!c{Uf#YeJB(c zg|I|%b=N8Q^uigwJ>R3(2!`)BP!Yzm58FsZ5wbQ2`+n{;*I{p^I`6EZG!xvLnX-YMFmAcOz+;DbiOEQ6x{oO=VJv^9^?TNe z*z1rEt;E;jRv6%Z&}C7;v%mGRzVLl7HOk*V-qaLx(pwMkevh^!Tjsf)$z9L-=)d))Z*WHegf^=!uf*OJ3Lx+S- zHa5Fg6x6w}JE}wwS=aS`cfWT{w~lx!n_TV`n082bKDIW1zP%W-gTU&H!Vroi-euH6BS9OQInjiP&@bT^SMOKiK>obi8GdPD^@V_L~faL8cM-(N{b@wv#|Qk2>{i+0{l&O^$Y-$iKS0ygnsxk=ra^MOIx z#R9LZ!(jLgnO-i}=zQ_M00DxCtC?LsUuH)JM@&az$ra{E@)zWRMM2iY@y1#IT#_~P;(SCMQ8g7)* zVdZgw*lG|LJ@2dah1D}^0D<@!C4?;@x5YzFv*{pJ8RdJn>VT#^FfD@yq9OMhT2C2O zuVzXP^ceIHtNM>JD=wzcCI(G7o2HzS-bcqat?KBUrp!Q(dHj&AGRsec3YrY9eBZZU z7QpJ9g|Z!_QDt;?-6Pu6&|X@{htRS#1L)k_G9)~D6UY8+_D+o5%feW zsitImA^>9t>$7ZXXY$ktT@35$%2LHgxA?oE&q#>|3$Ey)QWpJpuIDbpW*cjoG5RA4 zmwZ<5LJ{$=;X%uRPThO~(xEBm;TXnoxgB`?IMEG#Dw>RX@|W2Yb1U13k0Ta=j1hK* zmhgvFp$9INY7xP%)^*do<9cimCj=EmR))KmX+OP`q7jAcFhh5kDyTZH&=a>*QeThC zWZ!r^4{H~5$HzeUer<0!RrKx&i`XAK=FC2Z$M?4f@G*E)C5Gq%F$Ek^ML!S>lDcj} zRt(a%g0n2|%&g0{nAYjVhmq(e42nY4cNdF~jdN6{Z|Qm+3{4xnFnd`uU&!j2C@?ks zmTRt*6)6)fWmUe3iv|xz2sYBY!u6^0C?DM4@Oa_ja7G^ojE8%-t=`kbX2*1X?U-fu zbC&gKxqzzAS&64SV^;R69ouPMvfD;^q_}4B<11D#QQcw1wwK&Z)vCI}$4}5ygSQ{N znbUp2f4z|+xY&rL!-^>S^^tO+Kn*^`;dK2?QXDfWS^>g@jZo$Rb^qBL;RM~Q!ul(Q zdH5Hue)0Ep2Ifzt5a=a<>4o zAB&wLhSk=S!+d_f!lrH_hG@2{6%k z=}-xw5^Ie*s|b zX6{8ZORE#+|3i&y9Ud_0lDNQ<(l_%GvrVuQ)T~-(E~>u27KaiQe~QY`Cn`RrsSfp` zrVI;&2&THa$gD;YKNBq2ceD6_&ht1nV5=^RmYGqZ@_1?#zWQaQVGd=RmyH$NSoK+# zliv{)Y7U#aU|$$r)`Y^oiD>xL>g#K)y~RR4?4_%E{+ybh&wgz1-Um!T?aOG{o9#5^`P?iLh~?(Xgm>F)0Cn0?Ouu6ONc zt$jZq_BUNH%*=IN=h4US?||H1e3BKk(dL)d7s!L`RsSjTPX|dBTph8c{mYzJ6(*^i(OfOa%*oINq)#||)c4j5 zL47&C=uab;tPk2t9A=Tb_*QTih;(sE-(MGKeLrZD7}583aa9n*7(mr~{l`Wfiqb{S z3F(Or5Bh|M%Fg-Jgta*BEOD^OI)$SMPr`PepNcBLkUNt+CTnbUC^or-E66=Uwtbw^ z1N^Ie93l4W-4ukzJ+hb7Xu&>Iub!nK6EaXdx%sF1_HaiWYWm|@3xR}w$0XK5g>>Yj z`C(mo&%yT9SGZ(UcB?)W$F`a*m9eBWi9Dk=YLL} z+Is_M%4nUIS#I6+zC#_o{E*O{w#H}GM5uYiSL=RW>N4pMl&!zuV@?T&OA9DHY|lG3 zy_3tx_7Zz=DerX@w#(Zf|AWIo{d{*=qcm)zm`bi`fWvzkkGi?l``ue+iTDLn_4?LL z)G3aDY)Mb2_#!;jysCz3|0ig;P1Jclia1ead3?NKZP@t_Ufx0PTx~x|T##b^AWUdh zB#9FaNg%8_n4X{ikb&fYfHf%686O-Hf|zA7)&>jAFvX#S@Kolj z%P7FE2mHF z>mimH3jMa8E1quN@+pR$FoG7hfnt&6UoNLK6p9TEOB^>%d%AdGkC{WDH6bLgV|C1N8 z|G4t4g-bcc*@5c;`S&`)pcUoWMAEPKKK~G18-Cuh`@fhH`YV%%KC79}s3a6)!)F$Z zhHD~^x+1XpF)Nzv3%2L$qwptNsPhJ;q(UEl@6JRSWV40g?UrqAt&6t@N*`tn4ukLZ zwF|K%ul^ZZSru1ZACan>sy4;bxme>SyD>>P!jAva%q8-B$M+|GVdo<-G-kr3$>#)BX|H?lDi~oL0(9zZ%UvpI|BcKP&b&R8&q1(8seyv|S`;k#D5x zR^~5KFd7@MT^F%7%S?!$uS5FVmWm2Le;Y(+sW!Tnn-|xc0?%K#%H6TNQ=kUfqiHE9mP5J$i_+RN_P!y zTR<6^re*t0CJO$xXVEj3l>j(rrq7LN+10O`~7IGvs6bW++{=&Pryq}on(-Ut?q8V^2BvOu zPTyk)N%S@N*n${iyT;oIgzY(Cn=n2?#idBuUivFmw_j?edH zP50}?AJVi)f(FWMKWCqFsG~?sEc!JLsAf$w8U~{u+bzXCC2UkmBQw$O!IO>q#Zjx$ zRil+T=JDCWlO4B1{te}#rR-D$#G=lfMz>lA+2Y$FO6jz!ZX~QDyz84;tZpp!bn9yy z7R)S8hUhz4uUP%i?eo_mD)5;I@-eB>+h7?cC>M<@M(2zlw z`{9o{D*ozI#gbU^4(T9s5HILFdi>iG!qD1U3~lJ`A90>JW50PB=wXOgTHs(9Q-2hl z>OSh4G&V5t@(|v?-}OY1?N+m1m7N%#Fa$1~`j6mZ^j^W=NIkpMtSUzTbsjj|>_E>I za-Db1e{ywCdu zs42-p>5om#>-xZB7j>Js2Nm%-?UE$!7~`xzew>`S7@;C?#9sB=CRS_36=XI&{NU?z zLp3`=NkL6plcF)s=XTI?`laP=pZ<`2G31-{$%Bo4Sx6ciQ|S0S#L`kzAT>J^EbqnE z+ek=jd|E%!KJC+$5!2i?EIJt0w;)+^_D)83({Sb-d)PKSF7n>(NvQPkAxhqR&`%Bp zSr=P<+fanc;lRMejgjFp?zQf0i1^>-^b5qY_p{6#y;p87%IuH781X*1eE3YeDCTkN z=X7n|XYdJ?z^u}UP>_-sKFVmE1}E{2GaUV;Dy~ag0NzFvHGU0buO2TkAk2g~Nlqku z`@eNlsm5&pX#{LKNdgl+7z+brON(MA`2^FyxY7_W05)2xi9eQ*T=hlh!G-HaRTz zX?QD!$Lwa-GIdX!wHFMOp6ZazUQ1}}79BDjHdpgRkHs)-TW&iXoEj*ZoN-uP)|kc- zPHOJ#G9Ed6Br(0Mis2B4+`n@^p0AGpcp|toGsl4*Lhg95tw=Oa?mrW{I(Me$QY&!?Q>pvMbP7KeSw`gf>Cd(Fb8%%nOJXfl8_ zqukW*#37$s~tDzFm#CjG&g0wMszN<~UKUdsgNgsVfO0c@}oT zM5u&c{Jq8nuAv}u zcAf&2KQuhkoVs`!wSNLW2PGvEATI<42ahEa z%FD|up*dMuv#R<$GY;+1>#uV>dc{wh2X7i60O?x6S zy(qT(t0F`>fW*whOkl2Yc5v@7aWSSj>x$Qp@rm#9iYxKx1;Oa2Wr4rY77oU=aP3F? zmS%qu5yDzQt_?c*V+2qxS0i@BB-LN&Cx7-WGd=+f<>CS|T_*s~y?kSS=XMQ-amg7N zWbc)-L%%&HUcE#-XsoSR(W4((NVnZ&!TazGp7dFCJ%QY1M35ZLh6P1>*AiK@2TNs!y@z?jX z1@)+9PX8{bqWk4xTZj;15GEha*uFY8%=FXq>qw9L!Hn95h0{2r-w>u>De4TPn9GeT7>2Q$2{&|e4^$fQZw^G zrt6%+mPjUJY42bh7H>`ELI1t(al+FV?-!l^;J7Qt^FrP1bf>u9&GfTGf^^^nMDMfx z6g^iH3q7VXTn#E6t&+sD(_Qd_Y#Xl6HXJ_duZ*{vqZ)NdUD61qcxKv7R7c-?qSdNi zJB?*%^)t2poSKYr6~(jre>>5<=dx`l_^@s?j2$z44MPY4(BRG0yzOX~3|`27jgN3uE2))$!$SCQb0_Qe{PDGD=4j5&B36v#=RIiQqq^VW; z==AT7cAZViR!-oXpqsT2-CCEn4YPO$JmtMReuJ(A6cK*tA+LiEH_KaO@u>x(-oabJ z@BqPAcloL8i|Rw*z+c73P?OM>pA$mo*y|QNJV$25{z>;W?jMjxqW|Cd_be-R+lU`T2sLjW^Si-0ies{dNnNck7An zmRD>P|3XU21jGF>%G;EiF8|EaL|j1#Y%(6;i^%R~!C1}3({hDb#2JzUmIE&$`L@y1 z)oA)RKM%PB%Uv4a7)0+V=XsbWa zHK#H>pL8907g)I_#b}fg8GuZLjb*u&Vzjv6q8h2r=~9dG?^F2R9uBF#H^t?$R{jU$ zC`h3#k@rx$*DcJ%&@!=cjc4B;a8qsGDe{*YwJjIVy`_2fZGgY*Xc)HeD;u+(7EeL5 zce!lY=XpT$&reIj{vG+i7hX2*x-&js2c>k>4|=^4%?Kk5b2+{y&7y-`u0?+ebP4;s z>VzS=GW|Pf8{D;ZeE%XwuNDc&ou#AKjVqp>L%!)R^ZCBos-pB!T8GSaDy>Td`K4#{ zAUbyL4=UTO5AFSBoJ(m=cHp$VQ#_J{Ws-UJ5X#>yORmB#J`-~y z+n%+(4kljDMBn)Yu_m`fY&PH?cqw!~1qd$e8&h8QO^%lQEH@z(Ot#57IRk;3o|jnT zZBGN|NWp}?>6VH5a0fGMFsKRn9q=i;U%cv5%0^(3>+Othtl%7Bri4^>-Bs+fKKOJ* z#UxOO2yXBv^asphn%I^(UReGm9EIPRGJcD9F?}XTb^O-l&C`=zPI@H@%0Oc(tE|ygPHe*PmUZ8=Z-iU{`CFWXOS_f6qYIB%`Dtt z4FH8v;*&@5flvs4HD4O(RtPm%H#yjlgCnK=4wr`V{vbbklk6p4-NS9(AlkweiH9l| zB?Xes^&Bf5t8a*3#6i;XBKI9}EAI5uWCyaQX zKKI}F!C_#ps~0`o2RH-DHi z1T|VrKO7B@Qt!9&?kCW5Ql(QKIX};DR)1=^z3ze6xrYz)hiB8=^`WAK#GdnwEiqA2 zbj^y9a)AlrA%+_xzb4^f@hG(J|B(P3yxS&K3s*0v+62on+J1Rko z`P>Nh_pfkPaPJ&&$x=m@X#BvvR9q8wy6HCfmIv~nDi5Lc}A$Sp7t3EGCYMuZ=~@l##HHYPn@i~ z%3ZW148h{V88YuN{dY{i4}xIm&B3A2b6$A0JrF&x%G`}o1+Ev}eki`Mb;U4nsLZ+v zlIAM-!BE6HHPtHNSKLp}XQumlzP_=8uZ=fMK9m|;H1qc(`MxV|8yIGS! zBnYVE#JsNhkAp>;26_F}*G#w11&c$LN|YCao;!1veHZzIM6Yl6wY; z=hU%y9|nP&b(@{>bYfH0Rp0$*dn65}SfkEMkrdvbL2xpkKao>VV7+<;AIHILf{D>h zK{DTMdpe><*3-j*nHbG)aMCAV<@QAW^fNO4T%r3_lyVm;oMcs(_w7w!)6 z0uEAGTiVY06Txn4_)P#~NMJ8$m?}%^>ZWkspkiXy@B_|s^6@|A%?^{}BU#~m9h39R zYp26xLcW=*p6OHLQON-_be}Yu;B+l3uEM6qDcZ$02ggxlCvq|T=Iz;8UVCFWwH3qU zS;sF&x2Vsb+dD`FZcyBc9$+HgAd`~Q2+zV}MIBVD**QP&#lnZs4d&bEk>k0L-~Ool zL3bHbQOtitf%RsoBxkcIQ!Q)Qvu#)naQRq?e@^ol>`Abe#PPWl-Cijkd14UB2ZLqGjyTNq$BE(k% z+w`w|1Ap(ZqD$QN)<(Ksj&~xzg}c!0Q?svHiU-mV9lJ;a^_&5CZLe!4R5U-E!CzoE zZ+DLUQf9IzCG~n|h^ug$WzfShsAR_atV9gCRx=wOcTc?QSLU7F zkSd&S!kGVLCDQQ2nUgUD>|=z;1wa~x5C0AEc@dc_*0Jf!Y_X650!JM zH`=hi!1+9VTpcza8TadF4Zj;|8?@*?vxeHBz4bXhpEY~COm2_qL?x-egg*uOdw2t} zj&})KYBftp*SzuJjA20))Q0*Ae!Z@-ev$uPzSET!-CCDL!)Jw1rpo}0kniwOG1i;( z@O`vnXCyqpY>JkH0XML3EtY0JpFPv)%$AaSk9Y+wCz;ilb*?ddblf93xOKy9UcPS9 zg}5FKa*M`?P9Xcdjc`D%x3ioq_=y+L6u5bwkOA#|axMQXG~>DXfTNtRDn;-BCwO>Q z1*19^;FVY)v`*ab)kOcmeZiqM44$u!o}9EcUV1jvxB|7QC+P96&*^OAh#h!?Og>2f zg5`&h-ip8PS7VCEO{BTGyEVMWoFBd3Y<718C^z#)6qwZ_qJ4+x`sJ3xw1#-8J?w&j zlewE&&*$Cs!wPBg`PgKWyvray55l@xcu%~O*1uvc9>m#S*AF#Y>pxeSNy(*sTJ;x? z^mVvz>*iX{&(BY{M+H^^-qtdqWH$>Nv26oCw0_+7-IA}5Z%ehxaO^2tcZSe8@*H#- z|Iz>IxaUm-YyJogyVdN=3fw{AvJ*qe=BUt7F9}Pn8}f8=7Pli~22V3G+@^+SfYJwp zLRVA|4KjhHN6F__{&w%;UOYpux^Z0QBDf`MD}NNsZp%%swhms2)VES^fA2ua&N*TGVw#TaQkL7O^I|Bg$fnW#erQp|6W#|PxD?||u~ zVHOxEzKwH_$S5gcuIHb|30czl@qV*EO|?nWdGmU5t%SvM%x+Y*^QQYWcfOQK*XP#h zq3jrQL9)>gp#fuM<>)(PLZ^6uU)z6|DZ!{;$A^nIW+Pa_e^6+dtS&kg+T{y}V$46> z*~2CvzFq%kw9dw?k^jO8A~=G}M_D2P9-_q4Q?!S>7QIpMcAj-7GNE2Zg}O;Z0!OXG zLp-c5yV^Im=fkMv%b#0f>x3LQ{*> zF2|>Q+VwtC!|DB7;E6C)A2GPu-I1R|pRuq8uGUNX>7xGQt*T@YFEsCraHaZW$f`6TBR=xb zf`n|X4jcE&dehmr7dG<*L-d>y3GO;4N3kwZr!*qADMS05>$6)U>GpNqb9YJCTf8r^ zxHZLxfecX_1-KO<%5*sOmwWz<`_(&g%jM3fd+deZ$2O(sV~^9TLP`%iIS=KH`y?~i zWdziNIpwR`l87w-l5i6xjOZalVCRB= zQm}^3U=F@%_kW2W)-63<7n&ULC_KVME1ZW|Ec$5!@GcKk3S5PCNT-aJ278Il@dG7xAKG*d52xrKoH0mdze!b?&Zm z=0-}iYrk=q3=7pPEtc-KQd#kop>wQT(kbGSlgrqcEjT-4@xB7HAK!l8($)U|i58My zsWPBpMPbcBy}Z1_#wz#cFyybj-a=0LGu7-|mkkQF$}nQKKXr$bxCm}$v|nK6h-4|k zK}T_)1=FV}h5Gr>c5FShz5wN0^ z-_%*bDZ?WOM!zGcgO{7<>;fm^RCJNL6q@kZJKQf0EJiTXbm?ZEsi)j;9!Ctw$+e!( z`d!>Uh(NP+lMV{4oN6w7Vw8?^;32}OKZBXp7k)VgGQ7z{f9l-W+%nK^vHt+QcDwMZ zWA^mC&_aRoJu>qrU%wgt!yN!DFMz+Iq#ZFa>D4t}9dB##MHCJ)#1<%HkQCkZ=HJ4l z$uu!h4dk-c-s?A=neY!!+&}F2WvJKbQ!=Htgi7p2L?$EzfS2$NyM_XP+!-4tWb=v1 zdlo21Ia?Q?7Y7CY_CpY&{|-kgHT7SD3?vlpM#3at(Ox`-Dpi$1U6y$oIbhl6TK-Qk zAs{W9@N$Tmh34NHh-!Jo^%Y378@Z53S}s}NR$2WB%zbufmT?y<+!2q?YT3r{8kO09 zgP;$8(WO#X?W?FVBFr5(xEvXdE{NSYtR^JhJt_B{BeZTO^G{o19gG$ReAZajIKx<@ z>oSLuEIHO*9cS)K;ZOSzx;M@sbm$R;lZ%C{z#PF<=WOrL=Tzg=+;c?#rjKY9)WhA$ zMoT|ZQ%TC-S18oEn}l47ioUDSZbntdB6h<3|8Dr1jvoUu`RVB?j7fHTwpsRdR}m#{ zf{(*`{&gE!+stVfGU0;P%SCrufr){<^_+_*0j~#kL;8HJz5I#7Zy?h8t1ikK8$_RR zt&}TCcF5b~BM_c+$|2T}2$yD9616E$@AN!7wJ3=MV%XogQ2EFOv&|ZzpG+31y}|Z2^H8P=NILKL#K-%RAI$())z0bgI{c4(^I~v42WUZ5g+K%EBIh^RDKj!ko%Nm;{;r~7QDSTeOM$nUC(^2pGxH)~=(<}gcEylq| z-|r2W76Yr>$2rz+$yZP8u>9+x@`)NE_%-j#4a&`WL)`M}-Q@mEgAsH5h+c6GF>p6M zsS;13XJN(^oTePLS;)Qi>0QFxzU|+4oX#ZNP?6e@v-5i8gTI)-~ zo78khE4h9&*lOa6^t4z}e8Lr7ITfhtZvf=N`(jiAA84Kcg@bQ^Z(#uBkZ6>$(c&32 z$dkN*R0RylzBQ5>0sC2RBpD3v0n;)(S+dcOtP30&w_1Mk2Nb}6H~HEI~rKPVlaXs0#YJR z-gBd`#q)3e>^pbwi|C<1KzO3m@cX|9eCZ~^fx)evHB^R6p>DM?o+w@IAqL$&Y$y9r zZ?Tf8rjyNfX4b2)GWYX^PxWEH)=kqTDu@%=jbD*xP_TOZt>4$|e{jfC%y`i~f*%2b z_Y9ZhrI~7T0`X68@)EWN#Prtsf6}`eEfECA`UUbvl-%r&(PbBV!i?w-X}c|oocDbo ze~^@X2Ga(Bi8S$e9n6${a65YkP&StA@<7Eyp~gnX6R6eAnJ05v!+L2E0D*sVujReR z3c%Gs-9S=KP7KhjFZc(5&qzrj ze18g|DaFy5HgH4bl*z7bSVmZqGZIUm_p#$9FLA~x{1nBR#pUq|_kV-oz~m@)9UUE` zqNB+_%7a$m*x1;G_v@$>8}6|0CT1qX{OD)o1IDVT!U)R;DY(KD51uYRyLA@J=t^d-=x{mC z^-jy-PCdHKo<*liaIBMsy{359y6nSa|3-JwRwpNZ-gkVD6} zc|cy9>CSp-JRpPAg8_Lui(%&Z>K3jmAWtpfmE`{JufeXr^R`^~|80K#cX-d9kX?@K zuWvwP$Z{NDRtbUVSJ#i{*#9B?0MR5E!s$P}_@Zy~rPY^=fMpb;mlArHwYT2E^#>YT z#iw1i$vVS~Z{TMTkL@05YLWyBy%}w>V$#>D zBx=0Hi(!PeXzw}T#dCuH91JIix((_sgY`}r3ktU033OCo`bk!c^*DfFE%ZGmI{Km; zF*GCu)&VO6I*+i17*KHQ&PnwSHcR!I(kMvV++MH6tL#h&m55CBuJGtTeC^5di15{R zfk!qrDz_v1csJeoH0HjuH*(*}Rp!sVD9W#HPtI5tbmBh&GnDI5gB`@YWsPyC+SwG?g>1uHNK5g=(2=v@u8NixhCwW>RTDj5z_ z++{EdUe6{<0#P|bhu|KF`S8y!UcRPNd}fp#Ce&qt6P27CvV8pzJ{x0}vCQ^3h^+U- z|J2*Z?CLe!UWaP`WrPeC`NuNq;l|~wwAVhZD^$9Ez93X!!B`GjmQOPX@yBO%Lwtcp z8w#=veNYfnzid&NgNr%D!o~NWC{)ha9hZ>nIn12Dx!9M7gB&+LVJs1zQ}I8Y8I5|v z3X1|cPi-q@-$&DhP;X4{4S~KD{+QV_&WCa^LvnY#_;_`0E4E(%3K*cCn7mY(MZ(Y( z^(djxRQ-58mS|`(|MM=Sg?jcaTyru9?M8y1V@T^>ry-(S#q z-i{|c!+1XRsYD?Qz8ixX|97o--ks~?pXoAC0wNUnO1Mhd&gwq*dR&2ADv|6Y&Y9*3%?0ILQyz6ikS1}Pi_ zViFuHr2LnLLA?|Lv?yEuWb*iaTHmQ-+b-Rz;J9(vPuS6}snF#Ig_poUhA*SNLw#LO zME9o)t=qrLAHBRhKl9{sJ~dwE^s$S92 z$Zi&`n`YMEOmu&;vV`!}tGS@7(r}~JSL5UD9`d4L5xt>M9Y+z111kEnu4=q$jZZsk z`Ed$ce1qsRzgo(c;&U8^tdHMDamad836{E!q%8cN-K%-*I*cBpRF+bxeRmdBfD}m> z!04Ol^w{qN)D-8=kRbls1I{}0tGmte2oT+07cVf5c|w7H(^`i-zo@BA_LqbLWy|;? zAyaXxIm$|G=6)Zz5s;G)ZeioU&gC1u&-bialx=%ztM#~N3J$=N$n~K)S}S%=SzGP0 zzrNBLeLyoYH8lhfhn@MFl8=JJ3i8k|-4eMfCAgZ-RasD;lu&ry*J4Hcb zX~pQ;ck#=G7=?DD&*%=D&`X6PQI3bPW4y}y{+mP+4WD-y+C2J`XADTL?u@<|7|8TE zB^&=XxrHAS?>@Mn=jyn9IFHA&?Zg#Cd4&iUQBERt=l1)2CYwa)rD%=@UBZ!V9^N!a zIKrM)xwt?Cm2+=q z;-p8tT)P&y?6frBczJDLLXu;#NamzMXMTEFE*DXam+Uq7TX~Z>JxHFF>-@<&|5i2M z;B)w7DiHB3s5PWY_cil?Pmjv{nROWd{L`AV=h!ax{t;ZIL!p?20AhNly@6DV=Hu%j z=uo_^X57uVtxxeE^LV{|JLQ976FzQHViC@b>PPLcw2nV`#C$Z4{AHd-Z!5vDo%Rs z7G&zoUcXytaUtoFNo+ag2MrjJ0Q9b*&g7XY%Y>!GNC_XFV2~$d$W?K=pTp{%6XxnD z1I>EbTwb78^o$-X^JG7>0iEnK7{6krwS)* z*MEV+GUC0dBFoA512~KUU|T+YL3KA zThT4&dE;_1X31aEDY5x|?sL^&#XM2wL_?9$#C^?>7h&y15;gA_8{~)h=OF*ITjy%O z8d*c|ckpO5KPlmP$P@|M)_Bivn1QqXuUXh5mQMQxbm?*0ia(wP2Xd7+iZVT3Y~-`% z4H2~QE@l8|YZ*~#@fT~sT^a|{9B&{=v)P7iddo>(r$c$RvcnXcGGVby`T`^Z))4i- z>PQ;!t##Jh!5HRB0@?g@0czbzN?Rl5^;=HA1I!t-$sW80j!kPWKpY9Q6c!hEJYUV9 z;zK^do&n-dQBxlyQ{uwG^;UmmeC&&sf4i7$@_}Cm+*iBPC$UbPFt#KgF!uzLHBRER z35HuohE*g$g};O3{;4&dL+j*N012-~4|+|XKV2L?cWJr4Ehq4wlACjtliUp)|K3#M zp@3CSXc-&JX;Dz_sWE!y!l%y(d^FE~2IJQxA>Sgc2ECF`Y%-H`97)Y%Jp&b+zxMmx z_&g2_R4qJjxZSv2w=Z4(73#1x-IID$?*v6DiKjblPxTHBbsc=Jus@pMez<5!1;wfy zuPpu3wLR62z+TYN6DO@#V2>ujZM0#jS7w)vW6V^?u42D7% zr3bLI73QB9m2PS*w;YYXJH7v>;2zT#KxzA{pf@u zGR~#+L|yrdSAT5wgpJHgXTgPDg>CZevi>wWF*+uJQ-@|+T+=O{uD1wiazqrNAuRvq z9p8?ZYvPm|u8~!L6Z<^oO82W)y=K>z#;jM?EJWeDSykz));Bq8uEmcrmg;}|hNuYS z=-(>8_CPrjEA?S1&erX+4T?{Fn5ygzLC5}TK1dl0RfayPm7RN~*^-u@m1p8EGFaNa zVc}(VWDxH$3gd|c+T>pZb2C$S+DE@AXJdVP{7wmtMW+w>=c|yh>yKhu1|~3=-$b0e zT(=DaO#Khu4+lC>#B=^XISE&rLCi)y5j_8Dy!2oNlg5f2 zB3__fHaC)`jmBZl>D`3oR_EsGGj|UQf376Xw_bK6f0y|YD_H7Nx+JwwYFT2cEXVtK z?fDPn#O5;Bt8cTpPohp}#~g$i_u=9oEM^5wV0ZIk-NxVm^SxHSUGZ1dPqy?nOSM5@ z_%t1G{pV5v(q2UC;k(U#zIbWsDJxZ67PWnmNimLzbOo(DG}!{~fqWH}SLf0k(pvn~ zP^jsBUcR+FYhmHT;?h#OB}Be>F6C?MyR)(x7px{cvd4Go*1nB9kbf^m&cm$59`=GR z)Rvw2C;STohl;)ryc?xmo<$t_Pc#eem+@Dee?DJIX#CER`b9MZ9rGR?dGLC`Qj-;! zY2dvo-w_c==;>!$Dttj#pcRW=Q&)h|wcZCHZe*Uy{L#8`nY->RT*#{6$ij56(0+eZ zu&rN>u>@^z{jO{J%0(6bj9RVn^2&pI6B+_lT&Z0tTrIx!;O-!2)Hnv^S87Tn7SQYS z({a>n;0e);#!3whZmc%Vz^u7W<Y2bt#BCXszzgoq_$}cYc?kvj{aJ+rwUij$U^_pWv=BS z>VHcg(`2#~S2My%Rv)j9J4Sj&j34)g5O9`k&N&S`3{TgnP6KqmPBLn!9m@n|#h1b| zkXF)1>hu=L8+egwG^{^*Y#4ie8!_(VA`c=8<#tjbn=y0@ENFk|oZCn6ysOQ<0f&ZI z3oP}Olvkm8q+dz1DIy z{*sw#gIg9aW4VhQ>2~WjmmC4E+?X!DvV!@55_qSH(0ucFsnq z2?{NP@l|4lPMG_N?vE)|-rj8&KQDX#QOwM_6pWT~x!G>5UKP|-$xrVck#v2#(E1VY zq7|Ny>Zvh*XC`^Aj^j~_tgxJ1aQ|!7`BlOFbW)?~6&$=$kI3b#NqhZ&aFr$hmNpve zy$>EK=x|DYkhniW1Y5GaG|$apAM?wb0s$+fy!NcnG0j&hG%u8rAj-ccUR2l7VFcMH5#2v_J033v8Yz^+*i6{m6IJQe|3cs zgu!1dS?sQEq?653BhU*%J>Q!RX7 zqrQJ4K_t*#F*$LJZ>z1@a{2isBExbI`6SGlfMV^;s{>3V43lrTA?w%i4e$uEz zDthu~Y)ZNt=Yuv)Kk+FCu{;LLDXp6odz*4FMKp!NIU$qsz9XF1TL@2?^f2`9xurUX z54ELy=^@Vr5|0R-R^s-P=IrR7(&T(RM5}G9KqY(*HIZYv{M!SNHB@(lP1f(Q(JnRs zW4eBoF)uz2yy!oVS1Q+tBpY}?z%j8qT@qUuX=JV|d|PHvR-5Fma%`CO8H9q`a!tXB z!h5z`lhVo}y51?(CL)d{X%Qt6I}eItcy#!Kb-*GZ-XfW&t}(t+M+7fExjc<~KrEzH zp~%kNT|JLac^Pb-=~rO}WCCXYg*P zflOx2e^0|wW56ItStd==twBp-c77{2z}b~VYzc#+R*s`xe;(?EAnc=c2HVhA-u6Ax zeSmzpI%8cJs-<_omo3#}$ro3yN|czE);X1aR6C)$$MXIN#qQ=Lw2T!m%vy{EVbnsR zU5Bwtoq9;h5#Fg2-!vR#$^0B6`zR^cL}#+&lT+b8tf78R5zju?CO0nL7Pt}b>%z?P z+g#5J_u!ApJH8k=7t1@wwV1?jJtdh>QYVaGEm@W{Gp0>rH~JPAM&~)+$vHB%25<^plv4u)FoUGc_9eDUJ9T$wKl?%Fzr##1-MrRt(WcFf0Zu~_D<=?E5^b!16Am79y}ihtKZ=l z$8apJffTCABCrPj?(Sx7(fJtO*BkO>l~^$BCG_Q?Qj5HbyYw+z2X3{Z*hT8XlnMSr z5EAV-Qc?yQG?DcHi=0Cra{&w;o*&@Q1aD~pBi8Km@le>uI;aN#c z*f(hpb?iiq^3_}P55GKL0mD$k!@PJt-TD!sY;S|^5Nhd;kBNP*eYt(oeZ=*zQdX%G zS49ssn?3d0X;_bC%gWvTT?qe&u?$U2WBC#B_06!VW0}-t`(}n?Qhv6z(9iP0M|d08 z^DTNWA;G_)@y;5-TV-1$4CM0wUTz=%?OVIwPqFV1ZWUmp7ap`L7MrrcIV5YPhH!b= zTBIt(pH(ITaq*?FEf5v{B1A1wHD=s+?lu=vrrp8O+ci;2IcFoWPwpu z%50HYMvn_0OYShKM)yZctavX`7^q`(<$f{&i>N8@I+)4Or8!zl-N(eAkeJFPSkRP0Z#FY&w-$H62Yf8(D?N^Woo%<}oZ zZv^!L^V~V0rCZJW9Wgt_yQ*_eEpm5m%nUXAFv-6p<+k5&&WM?$0|ZaF=&|7#e8Jb4 z%@LG3@%Ua-AQ@k9I}De@%m!M7PKr znUrJF^?+GItI?GeD4qdz>K`{Zt_RD^{G|ECO&-_epy?(gBt)av%p1?7lYi|7NT8LB z(e(l_)$OPZ>sT8`yXwHmXUg=S(P8eYubq;JzaGk_lG?`n=-rmZnm|~ujV^(RP&~YV zK=~F}ao?Nh)0?whW)qFAg=$BbziXU5lWRCDGr8wpOJo9(jyNZN-VPp}QU)>2Y%s~& zm%*qR%q#sf^mAHR?cdt}Q5A<-9b-|CgR+zcs8)*2S6gGfeCZ1Wz(^TnmuwHFV9SF4 zT_!H(T)WxxjXdAwYuKm*HuWd{y@@=S*c+!6jcYKNgb0JlZ$16y_j=ph-0XT(w{1*Y zvqel}>o!|Qc#K@-RA)UzJ3Tsn>x*aOBKUurJM(ZV*ENi<%BdwOv&cq5vdWN($dF-CtYs=1 zM24`mTckuHDUwXtq*SI<6vq%UlR4Q!GKLUB=AEIW&i!@H-e;fdoO7LjkAGaOwZ8Rz z@Atm<`@G+KKhLjqAc7v(d($)BG579JZMWLaMX7?W)m0Qn5sQsAa4t(SE~_K!aSXH( zogluJMK3TE5mpdx{n1-b!jvUG#?xbzuSbpiDOdMEiWxiV59@;boM9I@y+juT3`Pf_ z8F{4a5-$RCR~Enb%2Z!~h*L9XMeQLoTXo;+^)t-LhzJ$Xt@dS2kFboCpjIzoAbxkA6?EZ+4t%#!G7{W8v6 z;2;a+`+Qf!WdtCFmbe2_CfZ(yt^*cLQ19*bx#j97Xhs?GU^|w;raSGT85jf)fBK!p zx4-m)thDs%+S*4o`wi%HzL?E$>Hv+?Idf7-&1-#fHF-fFn6heMpCP z?070M^eQGuvB#rAs=K?;owhRI5yLx?l0zvRQ4T? zy|-mjF|+&mWzL4_F~bwW*LS;Q4}2P0xg^OrdttlK636<(0FVi6fdE`wnl*>x^f;U? z!_7(Sfb|ZZm@GUy!u9ed#o=HNsw~&ES^1pWRS%?%@w3$F-im)U53t3h4G%juoktaQ z4&gL);UiS)%GR`F1O@N#5nizwIoit|WkqX$GumDBG%Kk88P-3x%(waE8Mdb*gUbe# zkaeO5j40Xq}XqXOGyFw(2cOa@6O( z_$TqtV<_4odxW6=O>`ID{WTo}9=Ys6J=y49@hHwbHQy$(XSQ&%L<@EeOE2Riw*X|1 zVh!1hylpQ*$|nU8v8u&#P>!gHbf}n8KSx-F0IfSv3=bPYy^YTAKpp<6r1LX#*@I^iDHG zaA$_wN3+UmzTizaBO@Qoi=Vcz5F!c~U?<$R>Ansy^JV|=517eLq9QKsS!b zsNm}2L=+hYl7&97DZki>h4$K>&gFV`tn)r%t|xw8 zX2*u>O?rhgHR)sgkuzm;uzs|y;`CeCEAu( z|3J#=5kBn`$T|FJ$Cd6!4AZ2TLdMcCRQCFWX!;0%WOi@++ z2{xx!GFMHLS)AAUj7K8#G|6)DzLR_^fAb;5{zI~l zGMSZ`mIl8?7I3mG8yOkFee(?qbMIlV;nPt09aSZhs248A^uDphf7V9uBUR{Q)sEH> zrPd%utdU|*=S)&xjI}J$#{5v1ALorc$z&L7e!VTf!q?aLmCSX0>*Cwh1)MdW@*!@U zLW!ePpPAao0slHo?f_W)`2Alow*1*1(>A~eZQkB(^dLD}!2vtXBTL%4 zx+m57S(ZU-wG9l`0EgA| zER~g&8hC6MAab#B(IU+=53>Db_G3Ush8)WACm^TYW2)D;{G@}3zMFzeuSTMGvT-8S zld&h0NysMNnuzwj793pJY^WXrKC-!Nh~k8z$!OKl`Donxc=X^--+Kgt`PAEI4E6cy zrK*#x118Wg%EICz8#t!I_WbaYI10cqKRpC+$h|0_qVM?Wi2pZgZipwEqe zKplfLqdXUDYuG8vADbrmL48>96+AGBWiucJGLg~;_XE9^7J9APJ&6*{n zM(qJ|*2G&r%_U&$k3O8PEEs9eOw4c{+~4TUnqP<=VnM*J)AxaFnazflZglnAaY6FvW~l z(lB=H0oN91Xe4p&I_h-|4gB{L6aC%ad7G=q`Nz5XZZ%&}7XOq5RQ42-tE`AAo9Yk9H#_AZaXoi1XpGq@2IKnuH5tx(Yi# zzKe1ZY$QL#t*b9TU!qoIShDyo2B+CnU1zoOn*Pf?zifrfasFTa17lbD@qy6O-@cwl z7ZOFX364L{q&h5pZTh^pu6z?}7?Ayu7QpF?2#>RSd`Z<%wk!=~)TB(-Bf&>c?Z4ipe zBe27>eC#JBUg(nfCR9W1Tr{ zxUm)Cn{*o=(Kdkkw`?ku5Dsoh0}aG7Mu-ncUCyLw&t*jy;&!`@@~q~S_Ja_tf%^@< zOwHNRmi$r=0RmeY{P=)$@%O&~?mM&(MCR0`Li_qV1nNNgK=LKo(yt~LOrLFY>kpij z)K$Iq(0#rDbKkAGNpx0X+68j13f;?3Sk?3Py@rTUdvx4|kLjgTZ=Fj8yoc%+Lmqoh z4|zY@e^Z*Ui6UY668nZ-1em+bjB}4w5$jRXF~}8*7ZMLjHWG~B;SJH7*&q{$ z7>FA?-u!%MR9snEu%n{`!cbDXV}hRMc`Y=w8fb*znbI>KLTldek|MVr=E}^>RPy<@ zht!aMm!RpQk=lzdDDJ-n#Ph^BaWb6mX^RGEVuIO-xzrjc;^bq6yVO1paHqesDndFb zKNnUc#6qeo-_-dFJk?DgIB&lBavJqu2+Lq1Ho~rfJqa_VWsIGJgY9Hbai?-%SXe-5 zX{qI%2M@%t2I;gNrKSBKMxeu-UYN2zbw~Z%!U|vzg-y*#1RL9;@Eki-gQYj$Z4-Gp zI-@_zbJ(<{9mBDk7rTzmZ_u9=t3Em>Adg2h6iVI6dH(dlMqT;~v3fZ<1PlB?QBs08 zDAJ*)ylEEs{bTpH*!NckmdC1I@WVoa6@$I7G3TUt0)(;C?c#j5yFb*_8VjW#s-@=r z<=R?(qk^-HzFSroIYUL%WwIH~)#F!v_Zb@U)9)#5M0q4llBgGq(&d5No3ph@wFlS1 zv&eS{GLwQ|HMEPJP3Ema-G zL!7;^7jxOz+WI3Z?5o`z_hv)Eb8bd;^bEwu#>R%|gJg$S_nI!o#>L5E%F{v*;ak39 zg+FNbWT@xsy7vf*$}w^HA+TdBD=X7PbNg3TY7_I&xyhbwB)KmFa>p-;l4n{f5QF>k zTYBu3vdGII1?TJ4XN+L(Rnt=WdJtUsi8zXbVmZ{8f0n0H-w^{n`P*8X2`Voamw o1y&L{Wd9zk{24g-|NZjNcdn%`b&kSjOcH+f>Cm;)G>>2Y8}XW05dZ)H literal 0 HcmV?d00001 diff --git a/arutunyan_dmitry_lab_5/imp.png b/arutunyan_dmitry_lab_5/imp.png new file mode 100644 index 0000000000000000000000000000000000000000..762407adb6c9ae6d08a35d2f504b24140ea10f7a GIT binary patch literal 38817 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 literal 0 HcmV?d00001 diff --git a/arutunyan_dmitry_lab_5/main.py b/arutunyan_dmitry_lab_5/main.py new file mode 100644 index 0000000..9bd29c0 --- /dev/null +++ b/arutunyan_dmitry_lab_5/main.py @@ -0,0 +1,65 @@ +import pandas as pd +import numpy as np +from matplotlib import pyplot as plt +from sklearn import metrics +from sklearn.linear_model import Ridge + +filein = "P:\\ULSTU\\ИИС\\Datasets\\heart_2020_norm.csv" + + +# Метод решения задачи предсказания на всех признаках данных +def ridge_all(): + df = pd.read_csv(filein, sep=',') + + x_train = df.drop("HeartDisease", axis=1).iloc[0:round(len(df) / 100 * 99)] + y_train = df["HeartDisease"].iloc[0:round(len(df) / 100 * 99)] + x_test = df.drop("HeartDisease", axis=1).iloc[round(len(df) / 100 * 99):len(df)] + y_test = df["HeartDisease"].iloc[round(len(df) / 100 * 99):len(df)] + + rid = Ridge(alpha=1.0) + rid.fit(x_train.values, y_train.values) + y_predict = rid.predict(x_test.values) + err = pred_errors(y_predict, y_test.values) + make_plots(y_test.values, y_predict, err[0], err[1], "Гребневая регрессия (все признаки)") + + +# Метод решения задачи предсказания на значимых признаках данных +def ridge_valuable(): + df = pd.read_csv(filein, sep=',') + + x_train = df[["BMI", "PhysicalHealth", "MentalHealth", "AgeCategory", "Race", + "PhysicalActivity", "GenHealth", "SleepTime", ]].iloc[0:round(len(df) / 100 * 99)] + y_train = df["HeartDisease"].iloc[0:round(len(df) / 100 * 99)] + x_test = df[["BMI", "PhysicalHealth", "MentalHealth", "AgeCategory", "Race", + "PhysicalActivity", "GenHealth", "SleepTime", ]].iloc[round(len(df) / 100 * 99):len(df)] + y_test = df["HeartDisease"].iloc[round(len(df) / 100 * 99):len(df)] + + rid = Ridge(alpha=1.0) + rid.fit(x_train.values, y_train.values) + y_predict = rid.predict(x_test.values) + err = pred_errors(y_predict, y_test.values) + make_plots(y_test.values, y_predict, err[0], err[1], "Гребневая регрессия (значимые признаки)") + + +# Метод рассчёта ошибок +def pred_errors(y_predict, y_test): + mid_square = np.round(np.sqrt(metrics.mean_squared_error(y_test, y_predict)),3) # Рассчёт среднеквадратичной ошибки модели + det_kp = np.round(metrics.r2_score (y_test, y_predict), 2) # Рассчёт коэфициента детерминации модели + return mid_square, det_kp + + +# Метод отрисовки графиков +def make_plots(y_test, y_predict, mid_sqrt, det_kp, title): + plt.plot(y_test, c="red", label="\"y\" исходная") # Создание графика исходной функции + plt.plot(y_predict, c="green", label="\"y\" предсказанная \n" + "Ср^2 = " + str(mid_sqrt) + "\n" + "Кд = " + str(det_kp)) # Создание графика предсказанной функции + plt.legend(loc='lower left') + plt.title(title) + plt.savefig('static/' + title + '.png') + plt.close() + + +if __name__ == '__main__': + ridge_all() + ridge_valuable() From f84f7abaa9195cffe422733416d09570a72b6742 Mon Sep 17 00:00:00 2001 From: Arutunyan-Dmitry Date: Mon, 16 Oct 2023 01:23:28 +0400 Subject: [PATCH 2/2] arutunyan_dmitry_lab_5 is ready --- arutunyan_dmitry_lab_5/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/arutunyan_dmitry_lab_5/README.md b/arutunyan_dmitry_lab_5/README.md index d55ad33..4289c8a 100644 --- a/arutunyan_dmitry_lab_5/README.md +++ b/arutunyan_dmitry_lab_5/README.md @@ -90,4 +90,5 @@ y_test = df["HeartDisease"].iloc[round(len(df) / 100 * 99):len(df)] > **Note** > > Модель `Ridge` имеет коэффициент регуляризации `alpha`, который помогает избавиться модели от переобучения, однако даже при стандартном его значении в единицу, модель показывает очень низкий коэффициент детерминации, поэтому варьирование его значения не принесёт никаких результатов. + Исходя из полученных результатов можно сделать вывод, что модель гребневой регрессии неприменима к данному набору данных. \ No newline at end of file