From 667f0aef0898e8b5915aa6085bee0984d145eeb3 Mon Sep 17 00:00:00 2001 From: Philippe Pittoli Date: Thu, 10 Mar 2011 14:08:58 +0100 Subject: [PATCH] Ajout de fichiers --- C_Language/TP_SYS/Exemple_curses/a.out | Bin 0 -> 7579 bytes C_Language/TP_SYS/Exemple_curses/essaiCurses | Bin 0 -> 9099 bytes .../TP_SYS/Exemple_curses/essaiCurses.doc | Bin 0 -> 23552 bytes .../TP_SYS/Exemple_curses/essaiCurses.pdf | Bin 0 -> 31932 bytes .../TP_SYS/Exemple_curses/essaicurses.c | 89 ++++++++++++ C_Language/TP_SYS/Exemples_semaphores/a.out | Bin 0 -> 7276 bytes C_Language/TP_SYS/Exemples_semaphores/creaZ | Bin 0 -> 9101 bytes C_Language/TP_SYS/Exemples_semaphores/creaZ.c | 52 +++++++ C_Language/TP_SYS/Exemples_semaphores/ecrireZ | Bin 0 -> 9931 bytes .../TP_SYS/Exemples_semaphores/ecrireZ.c | 82 +++++++++++ .../TP_SYS/Exemples_semaphores/ecrireZ_Sem | Bin 0 -> 9902 bytes .../TP_SYS/Exemples_semaphores/ecrireZ_Sem.c | 114 +++++++++++++++ C_Language/TP_SYS/Exemples_semaphores/lireZ | Bin 0 -> 8912 bytes C_Language/TP_SYS/Exemples_semaphores/lireZ.c | 30 ++++ C_Language/TP_SYS/Exemples_semaphores/raZ | Bin 0 -> 12479 bytes C_Language/TP_SYS/Exemples_semaphores/raZ.c | 42 ++++++ C_Language/TP_SYS/Exemples_semaphores/sema.c | 135 ++++++++++++++++++ C_Language/TP_SYS/Exemples_semaphores/sema.h | 6 + C_Language/TP_SYS/Exemples_semaphores/sema.o | Bin 0 -> 1748 bytes C_Language/TP_SYS/FileeDeMessage/msgCons.c | 49 +++++++ C_Language/TP_SYS/FileeDeMessage/msgProd.c | 58 ++++++++ .../FileeDeMessage/nom2_de_fichier_existant | 1 + .../TP_SYS/FileeDeMessage/test_msgctl.c | 47 ++++++ C_Language/TP_SYS/constantes.h | 6 + C_Language/TP_SYS/essaiCurses.pdf | Bin 0 -> 31932 bytes C_Language/TP_SYS/manuel_2009.pdf | Bin 0 -> 240092 bytes C_Language/TP_SYS/tp_sema/Makefile | 2 + C_Language/TP_SYS/tp_sema/sema.c | 113 +++++++++++++++ C_Language/TP_SYS/tp_sema/sema.h | 7 + C_Language/TP_SYS/wtest6.c.pdf | Bin 0 -> 11739 bytes C_Language/environmentvariable.c | 14 -- 31 files changed, 833 insertions(+), 14 deletions(-) create mode 100755 C_Language/TP_SYS/Exemple_curses/a.out create mode 100755 C_Language/TP_SYS/Exemple_curses/essaiCurses create mode 100644 C_Language/TP_SYS/Exemple_curses/essaiCurses.doc create mode 100644 C_Language/TP_SYS/Exemple_curses/essaiCurses.pdf create mode 100644 C_Language/TP_SYS/Exemple_curses/essaicurses.c create mode 100755 C_Language/TP_SYS/Exemples_semaphores/a.out create mode 100644 C_Language/TP_SYS/Exemples_semaphores/creaZ create mode 100644 C_Language/TP_SYS/Exemples_semaphores/creaZ.c create mode 100644 C_Language/TP_SYS/Exemples_semaphores/ecrireZ create mode 100644 C_Language/TP_SYS/Exemples_semaphores/ecrireZ.c create mode 100644 C_Language/TP_SYS/Exemples_semaphores/ecrireZ_Sem create mode 100644 C_Language/TP_SYS/Exemples_semaphores/ecrireZ_Sem.c create mode 100644 C_Language/TP_SYS/Exemples_semaphores/lireZ create mode 100644 C_Language/TP_SYS/Exemples_semaphores/lireZ.c create mode 100644 C_Language/TP_SYS/Exemples_semaphores/raZ create mode 100644 C_Language/TP_SYS/Exemples_semaphores/raZ.c create mode 100644 C_Language/TP_SYS/Exemples_semaphores/sema.c create mode 100644 C_Language/TP_SYS/Exemples_semaphores/sema.h create mode 100644 C_Language/TP_SYS/Exemples_semaphores/sema.o create mode 100644 C_Language/TP_SYS/FileeDeMessage/msgCons.c create mode 100644 C_Language/TP_SYS/FileeDeMessage/msgProd.c create mode 100644 C_Language/TP_SYS/FileeDeMessage/nom2_de_fichier_existant create mode 100644 C_Language/TP_SYS/FileeDeMessage/test_msgctl.c create mode 100644 C_Language/TP_SYS/constantes.h create mode 100644 C_Language/TP_SYS/essaiCurses.pdf create mode 100644 C_Language/TP_SYS/manuel_2009.pdf create mode 100644 C_Language/TP_SYS/tp_sema/Makefile create mode 100644 C_Language/TP_SYS/tp_sema/sema.c create mode 100644 C_Language/TP_SYS/tp_sema/sema.h create mode 100644 C_Language/TP_SYS/wtest6.c.pdf delete mode 100644 C_Language/environmentvariable.c diff --git a/C_Language/TP_SYS/Exemple_curses/a.out b/C_Language/TP_SYS/Exemple_curses/a.out new file mode 100755 index 0000000000000000000000000000000000000000..8e8c115e68af37501b02a0129cec537bd25c0789 GIT binary patch literal 7579 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 O+7;^ABh)jAEa5*VARa9M literal 0 HcmV?d00001 diff --git a/C_Language/TP_SYS/Exemple_curses/essaiCurses b/C_Language/TP_SYS/Exemple_curses/essaiCurses new file mode 100755 index 0000000000000000000000000000000000000000..89ae528ca972a4a106c9664b4a3b31726ae60936 GIT binary patch literal 9099 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 literal 0 HcmV?d00001 diff --git a/C_Language/TP_SYS/Exemple_curses/essaicurses.c b/C_Language/TP_SYS/Exemple_curses/essaicurses.c new file mode 100644 index 0000000..9503643 --- /dev/null +++ b/C_Language/TP_SYS/Exemple_curses/essaicurses.c @@ -0,0 +1,89 @@ +/* + * RSc + * essaicurses.c : + * Illustration de l'utilisation de curses pour creer deux fenetres + * avec un cadre. + */ + +#include +#include +#include +#include + +/*------------------------------------------------------------------ + * + * creation_fenetre() : cree une fenetre de dialogue avec un cadre + * sur n lignes debutant a la ligne d et comportant + * le texte t centre sur le bord superieur du cadre + * La fenetre occupe toutes les colonnes disponibles (COLS) + * ENTREE: + * n: nombre de lignes du cadre + * d: ligne debut du cadre + * t: texte affiche dans le haut du cadre + * RESULTAT: + * un pointeur sur la fenetre de dialogue creee + * + * REMARQUES: + * - Afin de dessiner un cadre, une fenetre speciale (cadre) + * est creee et la fonction box() est appelee pour cette fenetre. + * - La fenetre de dialogue (w) est creee a l'interieur du cadre. + * - La fonction newwin() admet 4 parametres : + * - le nombre de lignes et le nombre de colonnes + * - la ligne debut et la colonne debut + *-------------------------------------------------------------------*/ + +WINDOW *creation_fenetre(int n,int d,char *t) +{ + WINDOW *cadre ; /* la fenetre pour le cadre */ + WINDOW *w ; /* la fenetre de dialogue */ + + /* creation du cadre */ + + cadre= newwin(n,COLS,d,0) ; + box(cadre,0,0) ; + mvwprintw(cadre,0,COLS/2-strlen(t)/2,t) ; + wrefresh(cadre) ; + + /* creation de la fenetre de dialogue */ + + w= newwin(n-2,COLS-2,d+1,1) ; + idlok(w,TRUE) ; + scrollok(w,TRUE) ; /* mise en place du defilement (scrolling) */ + wclear(w) ; + wrefresh(w) ; + return w ; +} + +/*-----------------------------------------------------------------------*/ + +main() +{ + const char CTRL_D = 4 ; + + WINDOW *f_haut, *f_bas ; /* les 2 fenetres de dialogue */ + WINDOW *w ; + char c ; + int i ; + + initscr() ; /* initialisation (obligatoire) de curses */ + noecho() ; /* suppression de l'echo des caracteres tapes*/ + cbreak() ; /* lecture non bufferisee */ + +/* creation des cadres et des fenetres de dialogue */ + + f_haut= creation_fenetre(LINES/2,0,"EMISSION") ; + f_bas = creation_fenetre(LINES/2,LINES/2,"RECEPTION") ; + +/* lecture et affichage des caracteres */ + + while (( c= wgetch(f_bas)) != CTRL_D) + { + w= islower(c) ? f_haut : f_bas; /* minuscules -> haut; autres -> bas */ + waddch(w,c) ; + wrefresh(w) ; + } + + endwin() ; /* remet l'ecran dans son etat initial + endwin() est obligatoire pour terminer + correctement un pg utilisant curses */ +} diff --git a/C_Language/TP_SYS/Exemples_semaphores/a.out b/C_Language/TP_SYS/Exemples_semaphores/a.out new file mode 100755 index 0000000000000000000000000000000000000000..feedb49722b0d92039396f6e189080c6be9fe471 GIT binary patch literal 7276 zcmeHMaco;h9X==S=0Q4=EL*b?syE?|R5Wff(rz6>O`5n_IxoqRw6Im{n`6J^nZz#D?DKZtT~`>SA5Sf93U zA5V;IACI?;CsMh|P&OU9UzNc$S>DsPA1P%gb;49xw*fK7hUF)g+eUil+kDF_>HWX? zUH{3@YfFvn*KH8CA;-cH29h%GCy)GXfoX3bPX_~u9U366heRrHM+NSwz@M+ctrd7{ z1-=J(+q3=v$EA+FG|jPOI%Q^^XvQ&3fnkbqcyeA$uY|j)?~tA zI_ijtoRbw3nMBGN6;UUhfGXB5sY*r@DbW+@-P2{>A5vCT!3(bcd>AtyT|)}ZtW6{~ zat00&AQa&zw{XBt`UAHj_A|zS2N+{gY8ayY1&L{y-AMeh#I(>hh)+sPOYLUjd5LMU%|W_6B{40xA0(at zZu|S8hDolACe$3~V59`TjF@|!nn3Xl|z1L_FMmUqPav8&T zXiMDq7%Q%a^$}Pff%OqsAA$7|SRaA)5%@nG0qmu?r4u@4nmbNz0c#+wI2+?|A!@MQ zd;gl7K7lhP&ufuy;EaLzC1CD_xXb@Ig!S%(FmNAr1v@aF^*SIt6Y_|?2~tFTrVEI9 ze&eBl=Vr#(J*LkgA2y|FOA+xaz)1ejfoEo2=`i~8EaW-Ji;!0#OOQW9-i2shPgmDN zM)UrWT*}F9k0esjOxkD<;n&jEo|Cydw#p0~LPOajNhdmj*vY8a)+rqDtjvT6rP7WS z>fF=Y;zY+vXe^ZrjpPzIS0~~kL}W*^wg|cBFFPeX8ikvw^afdT_q2cEYX+8~-| z!{==9>bl2wn&B$m9Ceyc0;%R<^@6-HJ}NBCP{?4Bv!k-c#T`1>U?YQGeu7 zz75el-k%l0Yof8Gz_DX^0it<)hSb0S+#{5OZuk2o9#u4h*9_i$WtM7_@I?sqkv9O| z0C-vlvdZa~ktPpjsk=2?*_0Q!hxZE)kB9iCkKn!L;qkB@1n*|;E`kS>WV`at4!m=v zJVde%?RXQS?c;q-@h1AH{|_D>pQTs8+lD+H$f3Lq(fSPBJ{XvQoAvi1c+BUx@Rp+a zBY2lkPJOKq2J$|ulJcKr6h6bLONSxw{-FV4au^tU+(W#Hm&5=Jr!TNS>;tMwU-s&2 z!ZpEwr=r#e>J5R<8D^?mU3Dj_uu{P1hQg`^J|7fj>*_h6uv%qY?+SB9)w))gPa?H` z6_zx)P8H^gRPQ*2)olUSox*(b2*LHGaE-)VM+)wvW(S}Sic*q<&#R?8!EnfgVWy>zKfBdUn$Htxbh!`d1ZG!RExXI z^Uhqqc+X`Ic^gCQgV$hM%l7$jgWC+O?epPHfmf?Aa8HK_ezQ?Lf>_?FA@+$z@dRSt zy>aG{ z?}2syxGFAI;C}+^@%CZ7uLA4wG_WJ$JuUAj>3Q|&?#FL-&wzQo z%6Xx^zXjHT?ft0&F9XYKR+QCZJd41sCH=(jSMWDr348f9o@WB}^WF1yX};>KHj2+x zl!t+N?|U9x+P4o_ug7}s1Y#K{>*Pj9LowXPcMbOsnvve2VchJSX7?Jjugg;uPn%=o z>5=HTDR)$6G&d=*TbdZR94j7rpmpaC!2&Z8pCo!f$ZePz&n1&bbUWd`ZrRM$_v${td6n=?WL$Ktgm)~mEWSfbd5AF=%GmbeCGaWmZdO9>RS^Bc$CCYC%a^%H- E09eD7RR910 literal 0 HcmV?d00001 diff --git a/C_Language/TP_SYS/Exemples_semaphores/creaZ b/C_Language/TP_SYS/Exemples_semaphores/creaZ new file mode 100644 index 0000000000000000000000000000000000000000..4e60ebffbc01217a732b37cb5a51de451a4c225b GIT binary patch literal 9101 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 literal 0 HcmV?d00001 diff --git a/C_Language/TP_SYS/Exemples_semaphores/creaZ.c b/C_Language/TP_SYS/Exemples_semaphores/creaZ.c new file mode 100644 index 0000000..c3fe1d0 --- /dev/null +++ b/C_Language/TP_SYS/Exemples_semaphores/creaZ.c @@ -0,0 +1,52 @@ +/* Mecanismes de communication entre processus - IPC */ +/* Creation d'une zone de mémoire interne partajée (shared memory - shm ) */ +#include +#include +#include +#include + +#define SHMEM_SIZE 256 +#define SHMEM_RIGHTS 0x01ff + +/* dimension de la zone : 255 octets */ +/* droits d'accès dans la zone de mémore partagée: 1ff */ +/* on nn'utilisera que le premier entier long pour l'exemple */ + + +int main (int argc, char ** argv) { + + /* l'identificateur externe (key) de la zone de mémoire partagée + est un nombre entier transmis en paramètre par l'utilisateur */ + + int ipc_key ; + + int ipc_result ; + char * pnl ; + int i; + + if (argc<2) + exit(1); + + ipc_key = atoi(argv[1]) ; + + /* creation de la zone commune : primitive shmget (....) */ + + ipc_result = shmget(ipc_key, SHMEM_SIZE, IPC_CREAT|IPC_EXCL|SHMEM_RIGHTS) ; + + if (ipc_result != -1) { + printf(" - Succes !! -\n"); + + /* attachement à la zone de mémoire partagée : shmat (....) */ + + pnl = (char*)shmat(ipc_result, 0, SHMEM_RIGHTS) ; + + /* initialisation avec 0 de la zone de mémoire partagée */ + for (i=0;ix3Y&yr@@v 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 O9C>ZVn^kq)=KlaKgO5f4 literal 0 HcmV?d00001 diff --git a/C_Language/TP_SYS/Exemples_semaphores/ecrireZ.c b/C_Language/TP_SYS/Exemples_semaphores/ecrireZ.c new file mode 100644 index 0000000..0b8dd3a --- /dev/null +++ b/C_Language/TP_SYS/Exemples_semaphores/ecrireZ.c @@ -0,0 +1,82 @@ +/* Mecanismes de communication entre processus - IPC */ +/* Ecriture dans une zone de mémoire partajée */ + + +#include +#include +#include +#include +#include + +#define SHMEM_SIZE 0xff +#define SHMEM_RIGHTS 0x01ff + +int main (int argc, char ** argv) { + long i , k , temp; + long * ptz ; + int p1 , p2, p3, p4; + int ipc_key, ipc_result ; + + if (argc<2) + exit(1) ; + + ipc_key = atoi(argv[1]) ; + + srand ( time(0) ); // initialisation générateur + + ipc_result = shmget(ipc_key, 0 , 0) ; // ouverture mémoire partagée + + ptz = (long *) shmat(ipc_result, 0, SHMEM_RIGHTS) ; // attachement + + if ((p1 = fork()) == 0) { + for(i=0;i<10;i++) { + temp = * ptz; + temp++; + sleep( rand() % 2 ); // attente aléatoire + *ptz = temp; + } + exit(0) ; + } + +// while(wait(0) != p1); + + if ((p2 = fork()) == 0) { + for(i=0;i<10;i++) { + temp = * ptz; + temp++; + sleep( rand() % 2 ); // attente aléatoire + *ptz = temp; + } + exit(0) ; + } + +// while(wait(0) != p2); + + if ((p3 = fork()) == 0) { + for(i=0;i<10;i++) { + temp = * ptz; + temp++; + sleep( rand() % 2 ); // attente aléatoire + *ptz = temp; + } + exit(0) ; + } + +// while(wait(0) != p3); + + if ((p4 = fork()) == 0) { + for(i=0;i<10;i++) { + temp = * ptz; + temp++; + sleep( rand() % 2 ); // attente aléatoire + *ptz = temp; + } + exit(0) ; + } + + + printf("\n Arret processus pid = %d compteur = ( %d )\n\n", getpid(), *ptz) ; + + + exit(0) ; +} diff --git a/C_Language/TP_SYS/Exemples_semaphores/ecrireZ_Sem b/C_Language/TP_SYS/Exemples_semaphores/ecrireZ_Sem new file mode 100644 index 0000000000000000000000000000000000000000..4780896289ffea70deffab3f65ff0de6b4dadada GIT binary patch literal 9902 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
nbqk68E00_F^S@yn_FE zV0}G2h~#eq>+9jcEO{1KUk?x7(s3P=?+lQ8aOdGV#P6z zJ@^;Y^``wYuzW6poc60RadiB6@OJk$V7EUjfDIL2>|f=0@Ex{J9IwF&{CEW(2G;TB z@h%o$2G-*vyswp?uD~x;;GY3=eWy*2_h#{G1%Dj)fgyh&41O*AeFK<@4H)e=Vajv< zaAq&U8|)>{5+LtANo{0p?dQ^|i_$?sJ1&jP#OIsXgrQS`4@$)5vmhP_sWe+JBb2B7T! zOTa$p*YdvvX43DhuLAQ`SU2kAcmdNMWomFe`M&cw^nDxk;~;eaWX6LF4$W`#%s1SvhCt`}&~PG&_2B?lQZ!cK6_w zziD>PK-)T|SbQR#v}`LDysNDxBr?cCYtbNGsVy OhsZBz+*K7{-uxfx9-O2A literal 0 HcmV?d00001 diff --git a/C_Language/TP_SYS/Exemples_semaphores/ecrireZ_Sem.c b/C_Language/TP_SYS/Exemples_semaphores/ecrireZ_Sem.c new file mode 100644 index 0000000..bea48c6 --- /dev/null +++ b/C_Language/TP_SYS/Exemples_semaphores/ecrireZ_Sem.c @@ -0,0 +1,114 @@ +/* Mecanismes de communication entre processus - IPC */ +/* Ecriture dans une zone de mémoire partajée (shared memory - shm ) */ + +// VERSION AVEC SEMAPHORE + +#include +#include +#include +#include +#include + +#define SHMEM_SIZE 0xff +#define SHMEM_RIGHTS 0x01ff + +void erreur(char *mess); + +int main (int argc, char ** argv) { + long i , k , temp; + long * ptz ; + int p1 , p2, p3, p4; + int ipc_key, ipc_result ; + + int mutex; // id du semaphore + + + if (argc<2) + exit(1) ; + ipc_key = atoi(argv[1]) ; + + + ipc_result = shmget(ipc_key, 0 , 0) ; // ouverture mémoire partagée + ptz = (long *) shmat(ipc_result, 0, SHMEM_RIGHTS) ; // attachement mémoire partagée + + // creation du semaphore mutex + + if((mutex = creat_sem(ipc_key+1,1)) == -1) + erreur("erreur creation semaphore"); + + if ((p1 = fork()) == 0) { + for(i=0;i<10;i++) { + + P(mutex); //__________________________ + + temp = * ptz; + temp++; + sleep( rand() % 2 ); // attente aléatoire + *ptz = temp; ; + + V(mutex); //________________________________ + + //(*ptz) ++ ; + } + exit(0) ; + } + + if ((p2 = fork()) == 0) { + for(i=0;i<10;i++) { + + P(mutex); //__________________________ + + temp = * ptz; + temp++; + sleep( rand() % 2 ); // attente aléatoire + *ptz = temp; + + V(mutex); //________________________________ + + } + exit(0) ; + } + + if ((p3 = fork()) == 0) { + for(i=0;i<10;i++) { + + P(mutex); //__________________________ + + temp = * ptz; + temp++; + sleep( rand() % 2 ); // attente aléatoire + *ptz = temp; + + V(mutex); //________________________________ + + //(*ptz) ++ ; + } + exit(0) ; + } + + if ((p4 = fork()) == 0) { + for(i=0;i<10;i++) { + + P(mutex); //__________________________ + + temp = * ptz; + temp++; + sleep( rand() % 2 ); // attente aléatoire + *ptz = temp; ; + //(*ptz) ++ ; + + V(mutex); //________________________________ + } + exit(0) ; + } + + // while(wait(0) != -1); si le père attend que tous ses fils soient terminés + + // suppression du semaphore + + //del_sem(mutex); + + printf("\n Arret processus pid = %d compteur ( %d ) \n\n", getpid(), *ptz) ; + + exit(0) ; +} diff --git a/C_Language/TP_SYS/Exemples_semaphores/lireZ b/C_Language/TP_SYS/Exemples_semaphores/lireZ new file mode 100644 index 0000000000000000000000000000000000000000..741db5da6217931d33f69cbe4280f1482fce3fe4 GIT binary patch literal 8912 zcmcIqeQ=b;8Q**F0tW<20wOBb3nmz*av>o`z+(A2J}i(xBJ!cWT<+fFu3ql0ckj_) zbp#KTG{(l!X;JA2Q^qomcKicBrfLU^3jEVSW@`U%rbDMyk3wfcO)VX%*WYj7-Q>*) zRT#UO=XQVlJp1gkyU%{Tn}Us)c+l>Lvw%Nt(CzBRdNCrJ&2#CF1RMiRi3EJelhbW>dii zr!1ic6vz&>Y=>}P+O0#e}bq|@*RrL{?Q@8glTqmrIKdW4rgrB6d0BWhoebkt*%bX z7TH)=*cNFklSySnM>-Qv+8xZ4JUfbfsK9SBWhPRQupLh&Su|oN7^Tv}>W{#B5n?1#yeSY+X>0@WY>C<8*cRddaQ)x!?fG;5 zuLCV@>tZdt!P$qOwd-RCu>KXAAu!nAkG^TmpY;_`Mr_`3WbRc$^gek3yj>^lvcd~U zY}kDKNWTnDKW<;}I%*Mi`I%|?!@gg>3{X6|pHc6`T_dXV4PBu2e?$AO!`nt5 z4RMT$$US~!xCROi7m(&0L;+pH4DjUIOXVYFrSiQ)vPGLUP-M7K#YMW7W@}E$_>7ruDtS-N_-p?J7KnpZq)Jo9{L6IRZWgj`~(eeQ#AreTC-F zq0UkIq*QtWO40B3wEAMt2Ys(nQQw<4Ff%K+lrfswrIz;l`|)P%My1FZ*jfVP4j0sRd0Jm^)>d!P?MAA>#v z>9S8z&+;Wp<_BtV44WBf4Auu50u8fgH`UK>m>Z}~XRM5su)G}NA^&lg@S@Ori?HqnJ_*@`359r^V2kL49Bm}o4Lp(bqe?8==f0ddq zlwqg>8DblLp8zo~Ir$++4I(c}U)qo*u3P!W_PWCK2V_9xiT_l?maN@wC)<8qB{#N1H&QqZw=cmuJ z8ELkf^f=Pek{c+H#E);Zv7VWJgQs|7v=MhQdC>8UGO&#bqs)r~vGA1{oZ$X4Bg$yB zF$EDal@=4oGs^cnM%VQ6x6I2!dKpjk@|bD}*5va%jNh->O7;$}Pwf%5u`ZIaxF~xnJQGJ%;?|PB+J4s(7a_5h`ZQRO9-zzt;ewWPj;gg#f9&Jj3F8*>G^!Zc>Kyc zJUYa45hoQwd#QAyGJ~_tdsukpR5dQBneLq$*tn@``rVri4;0-fRbPKG)gqpZ+rbD} z*l<9GScl&)S#Tv|B82i1Wg)%ZJI+&8SG8bMRcB{i-KMIlDrui6Gq?zNZv=CJQHJV~ z!{xv`M~NGwka_?A!9F^TvXASFcZ_GqB(5{wN{=>DbyPN%%Gd$U!bB?B8IV6jU$ci? z>xf(|a>;DGGigNwkytq6QaO}Q-A7Bfe9WqZpu4}bix)v zcB2T|RyTe-0KiH`!**B%t(e)733pi{7_n2CEGlrKA4H%CO2S?72r5XSAbx^Un^Uqq z3+YIztII-X1*2AbuG0)>!pTmHS|m*8+M!?=$CDi?%?r1;XRNIn;S&)|a7v*&;B#Ly zTn9P261N%ooeaRepGh|ZkF!xO=7{C@EHDB{>!5Z|QI8BRJ=Dju;R?vLA+7n0Nw$S`N9$wE!(alW<#>kO2f3J%WBarmw{qIbGcuPA ze*EIOR|l;(jSMXpfLs8KQ(6cy;P#wE>4XwmS-Lvbdg7q zK{>X!1#&Hro1=vgYq_5yt>tz?ZYSh4kK#K0w30)22wrFS9d+pN?2_B(lIw?D|0U#p z<&xtEi9MI7_eIFDk6Ew$E(^J1NOOD{Xdmr(1;lnxE{Z!z6q}y59a%C>{2P##=;R+EpwpD? zMy1`l5Mr(SW2D`31CXn6$!XqaC308cvUf9`LIo{{EpUXsMfi5NRSO~3auZABUW42| z&2-64Q*xY(40qwI_`Z{rzbr!H5t4nULoF_gH(f*@vs`A2eN*AraEvPCF9dNsI7i?f zBlHb?8}rRoflD+$fwlb-|Dp4a7u#L9wElm9|CkzY)?Wmc-$W3z{&Gwl?LQv8MqLZ+ zwr2(>mhvyQue3kDOTG&1ukI3@FTp~bHEE9@%cmGSHj-&z}zP}lPmDj#&6dQ$3XP{3bpuDD_jlyqS9Z1t8YE<%13>E zTk^}rZNU8Qzgpq%tMav~d?&D;-<5cw>jHiYJ@#iW2L@bedJ*vd3|eI?}|P`F*y_c(ByYkYqJtnHr&`(IG<)E@x-7Wfp#L-*%l#qR)*?SH>SUWD7@ zv*bmkRb1qzJoGt7UEmn;;(<%=*Sxb`^wUQqoJhFdGI`g{+PRJns5Q+cZO!YIjMsrG2N@~5*9^kb(5zkng%w!5J#?xz<4PUx(&7##S zm%u>wFz#TP@HW#*^6}M`A-`N8izDHdS-z@y@uF2`^Ri{Fp*FK^(c)DhcArbkDT(J_ ze1;chN7{`2NWB#=TsZuOtDcSBS?JSj%8Z4R(S#);v0OZA!e%I!Z^HPZCG7(q`LsMj z1?>>2w1wAe6m{OD-2!-PMrn6WBx8kbDZO4e56>cMB}!|SdQB6TSS2GLr@!=E?N-cd zuM&2i$lXk*DSQWa=kiJ1jnM|Ysk?JbOWvl@;Z1X!f?%5Ih-t@i$@_xs-9io{3Z>HS yGRVNw`*2P}>9<#O{IIR&9b3(HR%bkmj|)o@;cOQ7@fPRFe^|wAjKYZj5%@1&^C(mR literal 0 HcmV?d00001 diff --git a/C_Language/TP_SYS/Exemples_semaphores/lireZ.c b/C_Language/TP_SYS/Exemples_semaphores/lireZ.c new file mode 100644 index 0000000..6d8e920 --- /dev/null +++ b/C_Language/TP_SYS/Exemples_semaphores/lireZ.c @@ -0,0 +1,30 @@ +/* Mecanismes de communication entre processus - IPC */ +/* Lecture d'une zone de mémoire partagée */ + +#include +#include +#include +#include +#include + +#define SHMEM_SIZE 256 +#define SHMEM_RIGHTS 0x01ff + +int main(int argc, char ** argv){ + long * ptz ; + int ipc_result, ipc_key ; + + if (argc<2) + exit(1) ; + ipc_key = atoi(argv[1]) ; + ipc_result = shmget(ipc_key, 0 , 0) ; + ptz = (long *) shmat(ipc_result,0,SHMEM_RIGHTS) ; + + printf("\n Valeur dans la zone partagee : %d \n\n", *ptz) ; + exit(0) ; + } + + + + + diff --git a/C_Language/TP_SYS/Exemples_semaphores/raZ b/C_Language/TP_SYS/Exemples_semaphores/raZ new file mode 100644 index 0000000000000000000000000000000000000000..48e4b2b9e8a172a500c46fa01af28ce4162b82e6 GIT binary patch literal 12479 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 +#include +#include +#include + +#define SHMEM_RIGHTS 0x01ff + +/* droits d'accès dans la zone de mémore partgée: 1ff */ + + +int main (int argc, char ** argv) { + + /* l'identificateur externe (key) de la zone de mémoire partagée + est un nombre entier transmis en paramètre par l'utilisateur */ + int ipc_key ; + + int ipc_result ; + long *ptz; + int i; + + if (argc<2) + exit(1); + + ipc_key = atoi(argv[1]) ; + + ipc_result = shmget(ipc_key, 0,0); + + if (ipc_result != -1) + { + printf(" - Succes !! -\n"); + ptz = (long *) shmat(ipc_result, 0, SHMEM_RIGHTS) ; + printf("remise a zero ( %ld ) ", *ptz); + *ptz = 0; + } + else + printf(" Erreur :%d \n",ipc_result); + exit(0) ; +} + diff --git a/C_Language/TP_SYS/Exemples_semaphores/sema.c b/C_Language/TP_SYS/Exemples_semaphores/sema.c new file mode 100644 index 0000000..1a2fb60 --- /dev/null +++ b/C_Language/TP_SYS/Exemples_semaphores/sema.c @@ -0,0 +1,135 @@ +#include +#include +#include +#include +#include +#include + +union semun + { + int val; + struct semid_ds *buf; + ushort *array; + }; + +void erreur(char *s) +{ + if(errno) + perror(s); + else + fprintf(stderr,"%s\n",s); + exit(1); +} + +/*-----------------------------------------------------------*/ + +int creat_sem(key_t cle,int val) + +/* creation du semaphore cle ayant comme valeur initiale val + retourne un identificateur de semaphore >=0 ou -1 si erreur +*/ + +{ +int semid ; + +union semun arg; + + if((semid=semget(cle,1,0666+IPC_CREAT+IPC_EXCL))>= 0) + { + arg.val=val; + if(semctl(semid,0,SETVAL,arg)< 0) + semid = -1; + } + return(semid); +} + +/*--------------------------------------------------------------*/ + +int del_sem(key_t cle) + +/* destruction du semaphore cle + retourne: + 0 si la destruction du semaphore s est effectuee correctement + -1 si erreur +*/ +{ + int semid; + + if((semid = semget(cle,0,0)) >= 0) + semid = semctl(semid,0,IPC_RMID,0); + + if(semid != -1) + semid = 0; + return semid; + +} + +/*---------------------------------------------------------------*/ + +int chuid_sem(int semid, uid_t uid) + +/* change le owner's user id du semaphore semid en lui donnant la valeur + uid + retourne 0 si ok + -1 si erreur +*/ +{ + int ret; + union semun arg; + + struct semid_ds str_sema; + + arg.buf = &str_sema; + + if((ret = semctl(semid,0,IPC_STAT,arg)) != -1) + { + str_sema.sem_perm.uid = uid; + ret = semctl(semid,0,IPC_SET,arg); + } + if(ret != -1) + ret = 0; + + return ret; +} + +/*---------------------------------------------------------------*/ + +int open_sem(key_t cle) + +/* recherche le semaphore cle + retourne l'identificateur du semaphore >=0 ou -1 si erreur +*/ +{ + +return(semget(cle,0,0)); + +} + +/*----------------------------------------------------------------*/ + +void P(int semid) + +{ +struct sembuf psembuf; + +psembuf.sem_op = -1; +psembuf.sem_flg = 0; +psembuf.sem_num = 0; +semop(semid,&psembuf,1); +} + +/*------------------------------------------------------------------*/ + +void V(int semid) + +{ +struct sembuf vsembuf; + +vsembuf.sem_op = 1; +vsembuf.sem_flg = 0; +vsembuf.sem_num = 0; +semop(semid,&vsembuf,1); +} + +/*--------------------------------------------------------------*/ + diff --git a/C_Language/TP_SYS/Exemples_semaphores/sema.h b/C_Language/TP_SYS/Exemples_semaphores/sema.h new file mode 100644 index 0000000..5a46ddb --- /dev/null +++ b/C_Language/TP_SYS/Exemples_semaphores/sema.h @@ -0,0 +1,6 @@ +void erreur(char * format, ...); +int creat_sem(key_t cle,int val); +int del_sem(key_t cle); +int open_sem(key_t cle); +void P(int semid); +void V(int semid); diff --git a/C_Language/TP_SYS/Exemples_semaphores/sema.o b/C_Language/TP_SYS/Exemples_semaphores/sema.o new file mode 100644 index 0000000000000000000000000000000000000000..2f88d9a3c3af7c02b82a47aef0f26cc2fa074a9f GIT binary patch literal 1748 zcma)6&ubGw6n<$_o7xtCfG8*!u+@~(#gbY|^`NwCJrq%-UKGkE*|wq0ZrDsEJrobY zLkK;2^Q0#|c=qH$PzYW;`6nn8?V&;rJp|V8+ucdGIcOiue(!tpz4vBjXZN|ecsG$q zh_;0E${`c^*b~l71(1B-rEPfS-VZ`Gb06EP}VC1vG+$_sH# zd!D^vD7&h}C|Jr8BUh=2;khAkTxA>RFi}xfeqD^bTPoR(;*lK7E+3SCr)wbG`5tFt zKI6A_0tt*YX!kI*Pfi`zqD{}8K|rsKbL-GO)FPnP5#y~C7FR|PZ$H={*UE2_=M=B^ zqc1!^gagy{G}jo9C*_Z?*7WipYGx}!C5dqqdBh+Qoz z$$Pe?mXXgItF|KK)rJ)8jUbv|+bk9W&n??d;5?wlEz4t^H0}*9#d#twO9q(e6PX|m siriovKi)gU;c)*wco{Frv5_xC@coEqu_wk05xyc~{u}We1}-V_FG7k-1poj5 literal 0 HcmV?d00001 diff --git a/C_Language/TP_SYS/FileeDeMessage/msgCons.c b/C_Language/TP_SYS/FileeDeMessage/msgCons.c new file mode 100644 index 0000000..0c3fb19 --- /dev/null +++ b/C_Language/TP_SYS/FileeDeMessage/msgCons.c @@ -0,0 +1,49 @@ +/* travaille avec msgProd.c +lit les messages du type donne en parametre sur la ligne de cde +*/ +#include +#include +#include +#include +#include + +/* Defines */ +#define cle 17 + +typedef struct msgbuf_EXD +{ + long type; + char text [30]; +} MSGP;; + + +/* Global variables */ +int msqid; + +int main(int argc, char **argv) +{ + MSGP *m = (MSGP *)malloc (sizeof(MSGP)); + int type; + + if(argc!=2) + { + printf ( "usage : msgCons " ) ; + exit(-1); + } + + type = atoi(argv[1]); + + msqid = msgget(cle, 0); // ouverture file message + + // lecture + + + while(msgrcv(msqid, m, sizeof(MSGP) ,type,1) != -1) + { + + // decodage du message + + printf("un message de type %d recu ( %s )\n", m->type, m->text); + } + return 0; +} diff --git a/C_Language/TP_SYS/FileeDeMessage/msgProd.c b/C_Language/TP_SYS/FileeDeMessage/msgProd.c new file mode 100644 index 0000000..679308b --- /dev/null +++ b/C_Language/TP_SYS/FileeDeMessage/msgProd.c @@ -0,0 +1,58 @@ +/* msgProd.c.c + +works with msgCons.c + +Create a message queue et saisit un message et un type et envoie le message +*/ + +/* Includes */ +#include +#include +#include +#include +#include + +/* Defines */ +#define cle 17 + +/* Global variables */ +int msqid; + +#define TAILLE_NOM 15 + + +typedef struct msgbuf_EXD +{ + long mtype; + char text [30]; +} MSGP;; + + +int main() +{ + /* Create the message queue */ + msqid = msgget(cle, IPC_CREAT|IPC_EXCL|0660); + + /* Fill in the structure */ + MSGP m1,m2,m3; + int type; + char mess[20 ]; + + + printf("Taille de la structure MSGP = %d\n ", sizeof(MSGP)); + + while( 1) + { + printf("\nSaisir type destinataire ( 1-5 ) "); + scanf("%d",&m1.mtype); + printf("\nSaisir un message) "); + scanf("%s", m1.text); + + /* Send the message */ + msgsnd(msqid, &m1, sizeof(MSGP),0); + + } + return 0; +} + + diff --git a/C_Language/TP_SYS/FileeDeMessage/nom2_de_fichier_existant b/C_Language/TP_SYS/FileeDeMessage/nom2_de_fichier_existant new file mode 100644 index 0000000..5fcc8eb --- /dev/null +++ b/C_Language/TP_SYS/FileeDeMessage/nom2_de_fichier_existant @@ -0,0 +1 @@ +ce fichier sert a la fonction ftok pour generer une cle ipc diff --git a/C_Language/TP_SYS/FileeDeMessage/test_msgctl.c b/C_Language/TP_SYS/FileeDeMessage/test_msgctl.c new file mode 100644 index 0000000..db3deef --- /dev/null +++ b/C_Language/TP_SYS/FileeDeMessage/test_msgctl.c @@ -0,0 +1,47 @@ +/* fichier test_msgctl.c */ +/* +* le programme recupere l'identificateur d'une file existante (creee +* avec test_msgget.c) et affiche la structure msqid_ds associee a la file +*/ +#include +#include +#include +#include +#include +#include +#include + +#define CLE 123 +main() +{ +struct msqid_ds buf ; +char *path = "nom2_de_fichier_existant" ; +int msqid ; +/* recuperation de l'identificateur de la file de messages de cle 123 */ +if (( msqid = msgget(ftok(path,(key_t)CLE),0)) == -1 ) { +perror ("Erreur msgget()") ; +exit(1) ; +} +/* on recupere dans la structure buf les parametres de al file */ +if (msgctl(msqid,IPC_STAT,&buf) == -1){ +perror("Erreur msgctl()") ; +exit(1) ; +} +else +{ +printf("id de la file de messages : %d\n",msqid) ; +printf("id du proprietaire : %d\n",buf.msg_perm.uid) ; +printf("id du groupe du proprietaire : %d\n",buf.msg_perm.gid) ; +printf("id du createur : %d\n",buf.msg_perm.cuid) ; +printf("id du groupe du createur : %d\n",buf.msg_perm.cgid) ; +printf("droits d'acces : %d\n",buf.msg_perm.mode) ; +printf("nb courant d'octets dans la file : %d\n",buf.msg_cbytes) ; +printf("nb de messages dans la file : %d\n",buf.msg_qnum) ; +printf("nb maximal d'octets de la file : %d\n",buf.msg_qbytes) ; +printf("pid du dernier ecrivain : %d\n",buf.msg_lspid) ; +printf("pid du dernier lecteur : %d\n",buf.msg_lrpid) ; +printf("date de la derniere ecriture : %s\n",ctime(&buf.msg_stime)) ; +printf("date de la derniere lecture : %s\n",ctime(&buf.msg_rtime)) ; +printf("date du dernier changement : %s\n",ctime(&buf.msg_ctime)) ; +} +} \ No newline at end of file diff --git a/C_Language/TP_SYS/constantes.h b/C_Language/TP_SYS/constantes.h new file mode 100644 index 0000000..593574b --- /dev/null +++ b/C_Language/TP_SYS/constantes.h @@ -0,0 +1,6 @@ +#define NPLEIN 1 +#define NVIDE 2 +#define MUTEX_1 3 +#define MUTEX_2 4 +#define MAX_PROD 5 // Maximum de producteurs +#define MAX_BUF 100 // Taille maximale du buffer diff --git a/C_Language/TP_SYS/essaiCurses.pdf b/C_Language/TP_SYS/essaiCurses.pdf new file mode 100644 index 0000000000000000000000000000000000000000..e3988a07bfa347d56b579735753e686a29c9f29a GIT binary patch literal 31932 zcmZ^~1ytKj6E6(KgS)$HaCdk27ALq9+^xmk-QBgg7cEW;6fZ@JyTeEOKCj$+zI#q` zvNJpK+nt>`|I8-Ts*=*oY%ClA>XDxIhQPhWhr+wkY~2?)6SLJMOMGq?OA z3kRh`m6aCd=_Nt;$6bF!}2w9%z?`6pjHkYW2{1t-E;`R|SSa zv2bZ+8d;s#~TZgDE!l zrO~&dvf-!b{W0}l^Np%%=~ar4Lv)E%tqa*TyXE_9u42k6ggIZQJGZ8QkKviPYPMG) zGV^V0-KZG7RZ$7!aPNzZ_!4_E7S!sP$P@PKWf9eXJ_{6omQfxk*BRwZfE=H=2QooM z$!jQ3*yJ#99ejwFQqzd*e#E&KM-O|j=X=KB@6_m#Y{D4V`vEm~i&$M+Vm(8{5P7d~ zC7n%I_>*EV$t}%(RId1bAb0ULO7pA7+OyC|3GO%xrWEXNjLV5cLR`sZm(kUgQHn@R zfw1Fz{P2JqAbb(Mg?-eE#JOlixOmh@c7^+UsX4J4epM!7iI2%jY!fS^ zEd9X3M<1ssN5qC+v>`oB^4?r7^1K&2%7B7xPUeAXcTegW-Q@S-%eE~WGcKvYVc6qt zib&wD&~#oYVzu|w_wjUfpQ8lZ=2506!E7z_5GMkHAEOF0%6)NHeMiyP!6hysJ@Yz}HdCRFeq=_{g>jxnIW|6JA4V3@w`Q zU&Rzw4Q1rl8*M;&hg>HbL&}&6WM>Mwzhvh_iFP1p43Tj-Da|k{T<4h|@#Fxt9Q>j9 zARi}-zT>m>LKSmmLBtX;-U!3-r|5{VNg+sH6eFk7VOQ=OiYnShTA`1PzN&YexgVP` zj@5=3b%@CH8G5ttD@rb-T(NP!NCgIu8dy5i!e;W1M|!^Kw@XJP3bw|NHGy9`2>nzt z^TUoiCM1HE4v}HETgXb?EGn;_cC+i&ky2gd4&=m(wK-|er%Jq^-VJt#s}peGj&|?p zRq@6RFk!aAb~VB z01P=HNUj>_co{-mUH{Pm3bA=x(vX={9wOvd$WQp`5_Ipfc7*vdw@Sh9Q73XHNnvwM z%xfnjB$(YHR3XOPSbTN@l4@zrib`wb%(6cq`&=I3~&DcBMvA8A!9-4+jrT^A-j>mb2m$h#2$n?%9M@D>W%66TvBmn9n3 zBjX$dBwJc?QP^)8y1~TlEQ}N?u=$S`(god$?-1}|!oPE0B?1m)@ z9ExN@h_;|qu$!pR^5Xg!FBOuuX-zQ8TU6dx;10iU#}9&!R!0um#W8Kkoa7Kcgh?o9 ziRVR`;a?dipV=VOLEEJn11v))u(k$~$xZI>fx0c9(DkvmVSdP3r1b48GX~{kmic^nD-vV3a7Tkp##8ZVArKW9-ulF0Z#H5#Se>%E&No9ha2C=7n$zC8Z$rD z(uWyzSP*oJ-TN8~P1QltW*VjI%(Gz;oOF{`4r=dmNXN~cvEI2-&19e3E3?o1U^|z< z--3WuUng%2%!dC+9=R_&nhLj)v}>0O^SwhHrA|+-F5bGv*|C%QO?L$_uAC{7e;yAY2YaflX zLp*j>U|@Fk!skDx@f5rC^FF`en^or|)~#&MmmNLXWa32M5vr5Y+9|@WkMH|f9Y=in z($H0n561a!V`)d7-&NzLV%qoV)keDwT*{wTEBpLL#PX9oHb}X$kQspae7IeU*SRI* zSzs{y{ETsY5w(LnZ~CrGe|~E@9jl3!){UGo+4H%&{hj$1T{pH{3IB*L`_ni}7Wb~z zvH69ae@bTsB2=TM1*#!#EW*(2wrT&Wgn|dN-;CtGfipCGc9*GM=X<_uid*~*Cnjo@ zm0#%~4lpa@9kr+PH2L=?ZBtu|LaATZ_Y-17pZLcno_=AHH$sqSj zP@Zb(w8^3Ht_;D!{iD@Q)M^$`Vu@#TCfe?>(R4hn9cW#Vk^E`w2sa|AX~EOrY$xIt zjTtFGWk0G&BVO9=>DL6$&b^q?f$2hL&&8`C-!pT9D_0-hFRu2JevB%IQ(cm5_0H9h zzA>)2U*1`FMYy=>bZK(O5|SrQXJN}lWcE@kMW!sgU!v}aB@lK_Jc0jKAA(ty2K}^w zlGyk{mPU&Tog{IBm3kO75SmJvtXV)1Ms9Owj;rb2_JRwY8=u*8MVCQ9v-sPQv_!ha z+Fs5n0ZR}4VcDK+YNc0+@ zf4S#Fvw;}w6#oG_E(vZIk_TG!tpIz5Cu~}hCu(vS zWVG%+i`V+S>*Hs@?>Ku%>n_3NBs3$f#3>^NpSduaw$z7@^A(haliD_IMvn|p-qr%gmuYe(-Rh$a1741iCQIvOiqScVODAEzknyJ8iWOoi8 zM^3Bx3eu2q*8w-$;bkEN?8yYOL`@N^LxuCD`S}t8R~*oD0_k)7&m4qhL_rTalvw>6 zwlGrzs5pc|s97t!**G82=XW2{u{`l40^RjgGltDIqt=7v9c!X0_dd3=;ksiP3rib2 zA=@uSR)nv8x4+uQJEP{45(?QI{FL0j*t-#>Vtl1l76bH?z-~LMfA_uxF?;}dlWbE? zzw6i6U9}HbaTn)^dZ(Sxg{Akl!`J)WvLPeaCe%Wokk|IBKf$_nG4e$-I{4}a8>60- zupnxC&Pa|WQ*&!Xj{XohK2~9AZZjs^GpT@DWiZ0jJ&>Z+n97NoL-te+^xApj;-rc+(UA$>VZfvK(#@^h2PmsnWgL^fVZT@On2fHOOp*NDno z&o?*l?=!ipMM_G ze1g=x|3#(0SgQ$I1lqM)ZWF>rX#BQ4F@tl=S0VBg=ued~q=x!@=O8MsZk;(UoCe1~ zuUq9ktTqrgvW2rz^Nmz`Lav99iqp~H?n`?k`_S}gj>Nh6aacDW^GeWW`@6o7t5zt% zzJ2dl1ehLPmWCN;jx2Y0q{%`=ey$kenTDT8Vtaahv;Bj+p%|zkI#Q><{>g~{Sk{5P!G#&?x9vG1|d#B=+n9WQN6vkQCT5Dbe59-M1G7g z6O?PcRaT4*jy9EU)E9-hX9hR8Z&%l-lON{nU0hWCDq>(rZuYO}?A|N$S)qoa+)0Ir zpnp#Fj!d4tdlc6UCue2&RFJk0Ur3Vcm`2ek(er64QJku8l_;`wCC~n9Mi9QKwP_Ll zec{3H{V8&r${Z|WFW49f=5r->i;m6A=Wb95=ZNkt=oDtfe zrO|tQArPX)TZsy9g+@}O3y0Y9%VPbZ8hPB z$SFugD+ZF|Y$P&Ii&59#l_Sd3uSDL{fFUP8NZPX^iRT%Ge(-X5#52A`@(Xv~57!=P zqe>n2@*X`Om{zGr!_-g0UAzT{4$5jtAM$h1socp;Fc%9-FxDjn=O!bGwj2E}7!E^K zEuIuF7o5DF7)>WDi?u;8*;zW*TYJHV#p0VpuiJg0Wbdtrr&)e_4sck%8~WTEF81r! zMwjZ3=eY4Op7SS%=SQXI$Kn@1)mMMLSK-OhKe6ao_}jVkBYzJKT|Ie_j{v`AKarb;`mmqg5=g=lg!h}s{*fHIQkObZ?;1@ zAvgFzN@r0(Ond9M`Y##VVjf61^kr&Jtdl}Q3J%i-nh%LfLL}WTzD*h{18; zAQ{ANYoAUo2MWV-md9}A)%aMbX9j9%$0DK$jt-xG(67DzCU25f6FsC)F5j-tiAT* z(Q%E0VK>XA)DeMLeKVni3V|0dste)2PL`)tmJx!=FUZce({dgww!0Q+v1q z=V@E#B=Fn(`=ml9mPrH2aVS@^xOWIR>zHIahB_CcYmX>h4~idCcJF=qx;}{#j5dN% zXHJMSmVCNBmW4KqVyN8BtBYUxk&aC}9dnby9vI`NAjwY2trA{#tmWOwNW;Moom-to zia*H@lPC1qgHHvc(Bt%Nhysl-dsv+@Qu3Un&JkRTHx$5?1E;qRqYKb@^V{j5KqoIKo|fPZ+L|LuBddO3lB zswS2opc2U3+C<#Zlk7d~+cXy+7a1=ny8!^G?g)PCfsygCzKOYj9Kd88e>!Aue2}Z7 zn~NF9^{scN>f&go0Rq1VzIE5gfSMpr@SCEvLyB?Bs0o4b;|2mFDn4lp2lv*7l}6c^)?;JGzkZ`~~zkWPd!qZLzhBD_FwH#D$CvsA%%fkedsrV{Hz$a(z$6 z#mY*?&cjQ_#l=m=$;tVj@qcKpw@CA_{+;9CLf zZT!dfANqgae|Uf2T-*TOfAqPzdB}L!*~xhR!SQeU-=BZy-sbt<@cohbgW-(___t3s z)<2Hk!2J>A;N$!kh&RyxarW==8_+-VTwGja+;2hq2khHPlyZ1$;95IalCk|gO8*Uu ziyP?AZvHnie+B*t&EI|gw<_>YnEylQSUZS0xLW^*mbA980KFy0TQ`g%~ zuGW?gKx?1_&?zbOE{ooj@+uj^;ospygX%`K{j!1OvT* zPC!>X6IUzXTR7jQU2TC@UQSjZ2cQYi5$NV%{$|(A(FFvw06P6iM>~)O_+KLzYfCFI z(9F@!(E(@)bO)LO?SY;^MW6&w1*id(0xAPFf$BglpcqgIsP-mjZ*Kzh06M!lf)z^6dZvb%1g}Nua6A8_>VDT|xHN|1t`4b~CX9dV^dXfnX0upp%`OE6~va1hoB^ z^uPT7wP$W>2UG=uJk9J(?B6_qT*20k4hH|-R?Y|BLcZ8vi%J|K_{0i9HDT|Evb$Zx#AI zGanf<``e27_}Iv}d3X%|TvJ%Ol5qlnVy2@C({GG(aC%U5&pp4WG(y{XRQM##hB zWYU}_$vkn=95o{=MhFdyT#UjbMT#5}x<4$C3|?EKg~EnWU#iL;pC%m2s=%to-d@a} zQHya&-S&M^v(yS8!z<6#a;c}cXJh*G^5t^sm!PH3iC*rd;Ivn+tBNQdd9hSTxR`-P zU7QyAIZrcwU-W(3)baElsV5}))9)v)s&2n5VF4%@Qu1O|rr*8y->&Z7ZxO>J%c-pU zPIO3l`8om$dg5?_*`1qrqSsiVBpsLlTO5fXIa9&7_!F&BIGl}+ha2&L84{8%(C}0H z{nHn6yyWX|?QOS*hFmRBFV-vj7wv5eb>VLq&4shT(=BfnmPxeIU4Fs?AVp5Ni9vSmh(>?s#mmowf1u7Xr4S0YG8_=m(|0GI7? z1z}oNjQpYgQ7%?E-ijTB`Um3Q3x2ih%-CI_Y7+f(){nJK;tr)NZT44g*z!W*y%iLHjN^z*go?Mi zH+LHezKK5q-hulS(*v6~@iVeMVN@AMn?+JPJv=2$WFgAFHAe^TGa8)-QZ7$D$>SNc z)&0nw*%Lxj_C1!qKS@mf<^Be5blPU8T%ui~c8tShceFUG1msG3phe;PnOkRg#5-xv zTe-&6RV8j#xb!$Gld-h+j@3iikEVg02;K0P57^$Q-Kd9LI3C*@iJciH2i@%g#$9a9 zcoq%#LZ46y>*}!>8(^~!;eLuuD01ug2XURFC+dE!w$OK_P(dD04f zW^k?m{IM^AFCV4rG1sH}v*cF8dV@%Z9OHjZDq3(~mP^J9GI+_kD7vWG#FI?)BncsF zmK|&6D|>p+QZ$oTjhsCW&`aA|nd0|F^`%^uAO>s5m z`}Xmj$rF=5WgGuDb>8CCg=tc}_DRH?0_` zFg-ps8WPzC6lQyH#sQ_7lYSLWsDd?2hTO{#-Nh)!_H>}AzIew8F)iN=TLVK-0~aZR zklln^GHY^$<4tH4K;#Ec5E+{$91xVk`$<|22UAytUb`=e)CZ&)+t%`>-eqhAHeZ=?To`}U0fN#+TA5+Q+oPW(%MbjN5+F>WrOx$v^Ad;Ig+Q{+>s zuk4FxkA?1+J|{)C`To^OJF`{}dJBW41d67Y7%QI~z%)sR2~e^pQb%{3ciE;9s|_J!%+~ z61+0(tf!<2i<7`n%Da*()_AZ$v@v9+1pB1z&JPb1wgBTE6>f4WYuu`lKpY>!?#T7j z9@++35eX4$AC+*UbmtW&3n8j{L4@4jppbM596)Pr_2!8=4@Qg`r?j-H&x!@g(cg~7`KrDJ6Xeez| ze|q+Su_$Fo`n{aG1+A?)a=kd*dGo4@9MvsP{DaCF&K3D3*Vzk_Ak4@N$(4-m^~NUj zE|p#cVmDM~9lQ|aheu0JB=$R3IS8tKMsU1bzFy*d{cgi-9_U9&Rff-**W9}aYfP?N z&B_=tI1$*6$lq$jD~Q<;`jW}}y#+?5BC6*?%W(V7S7iJ{x~lPBu}FzTm#IThB;sWm zV>5>a`FX3nkj!h5seOW7?J7;v;)n`r#Fc}WXG{wyTtC&+PPFmvNoJ(P9o!w#nq>&2 zdIypkV2B})L2wMh3|ba45UwJlTc4~1*MmMbA_PtCpsc96eP7e*SP|2UTeqas>kQy;0=2&4LXnuP1=?t3#f_g_p$CD zYv=bf>5gg5jMIQcM(17YKRp3*hM96>{6m$4ca}t__9R{bR+bnYklKFOD^M%vB!WoP zh^pueko}$*r@i~7e`HbE+`1`BOYhfdj&_X^-7wXLp zR5^+JxcjdC6)jfaS_`)Mm7ZrEs;9&!!E(a~8AVlVclp{_CKJO!?ImQlKCO8ZOVSWH zV=V9V5xU0BigJDd6n!5AuwL2~Uje8i-i~B`VM*0U=Y3ANj+XY&_=J2Bb%K*K9p2`% zFi>a5xicH3^Q#S8Ry3@3-Mq~LLy0&`l006pnl+qA>vR_2x`c|{|LKlBb8k<)f3*tm zpl(P<;KQsu{)4vAt8N$z!gcnw59=a*0HiqSou#UwSJ4)7Tk5|&<-_6mt=T~~peX0` zyi|G!T$WCPF|RNC=zA92HrVrdEo;DUJ$7ML@)qv1G&00=q1-Zc2wIRv!1hLZA}*RqnjJ zG;v>Bc~WdO)vP5Y`ERL-QEQ%QGt2qJ>wYCNZ5w$evt2#q7LdKhCr2k(9BrR&Ov1%` zkLiCraNIEJS*%RW2kK5Ee*fXTi^rOx3y3}3eu&3jjjEM?rGvsOF=2FkGS;66B zP6HamrD2{Jnjs4J0M{|J5%7cc7OZ#Z+wNynJA zwwZHFqmMcWzeDIlqd)bnFR44+HBolMVyc$-vG*O4;K`e{D@7lIv5~68?(oMH_l(Pf zzdV7t*Xd0iniGV`#eEC4Dr|WpQX@co*_FtS?JUyHykN z-_1ugd_@k!;731o1h%^R5SWVk=f$y{#YPA2iqUZK)(GU?7JAikVwle6VjUE5$p9C1 z9rC$C(rj3I*GHgePh}Rw8j7(BCSI?q7Z(~nlZVy3DqIivJ{KR}%gtN3`3SV$Vp|DV zKXA4C`mO!y5N80{99n!Rj;COeu7)Yi_QTJx=-{H4LwgyMEH#WzU<_m&#yBF*GJX8A zXA(EQ_t@)8pCq8Lfllx<{e7t%pNgAcR7QfElnH>%JL9LFY z6Fwsjr$2;wk_fX$eDwSu#aMMB+ipFs4D@FePi9bbY>u9VSR;l%Lw-)l|K=yS&TXF; z*k&M7^+<;3@V)h5%{o}_y^-y755$5S=@kW4c*%|n{Z}t*6e8NqD^9g=t=f=x;vuFr zl1ylqmmGKzphyJ}-q-1PUwp>Y{<`Se?$xwoQ4T%uR*xM#Y{+a&FJH4{EAcZFR{^%M z0>+uQX}u5m{kIP&)e0`~O4GzCtb@eFTH>(VR_%CYg9()(%@oIAoo?9oeJoDqymWom zRSMN&2j9Ml7nZW*;jz$H@h=u8l3h_lQ$RYRx9XhNY&m%?E>p&jDB>Kjm6l8nn|wp+ zW-A)>)<~HdV1E@eK!cZOdz?{&hpsX15ho-=6Wz#SsVXLB^ZBIJ!GLqtD`^NHf`->j zNQQIy4m$GnSN)iL)~l<&Bie>QO0Db;=3sSqW!3PcFZ9oQ{7V+zdZP5u(*c?(Hj%I; zsPnAJ_p*$!m&+zX@44Wg{cvY`C#ogT%l%{Z;ws7fgW3sij3RG3n_1o->gTo+D{-(d z1zpR+8zb={ET_6lDi zqP}a=6S#m|uV~aa=L@ND2@}1IXv{PeE&3IHb0|GdP2`fCAovWcn0jWXgH!b^KOH`_ z3WeQ+&Ep;Q(x9jSQi%sDqZ`=VqcnyF{dmeGrk3HJ;8Hjf5Y)G+g7V`?ixGtbHCzLq zptW-!u~(UqOSD7a!WI%(TV{Jkz%govLEoTOEc#m}epq&Tm9i(B@Ecwwci(T7Pe*`2 zRB>L&Ed_WC(JU0#^w?cdV~B2B-LkqlQVWX+po;9__NwiqXZnL@g8t8WoL=5t=fU`N z_w)>CMfQ}8M8m#*h_aF`kiG!ub8SK8HY>N6=k@7qGYL?t<;D15OdwkP#{GZgCswEe##yKb z8M@^Y$B30C2)EG?r1d18LZ*7%{ny6uY(JSxxVUslg&^-^g#yW0_jz^K%gB5q^h_9C zyY4kF)4oogPif>BxwDUm2w$J4k#dYoD5v=8eSy!Z{aCre=LxeONIHapGU9}xGMvaa z39x{=B%|C)$4i1XjK8XQTnw=(6=yE*TtKS2sT_;j7vX=$KfuB zdIiOE2u3TwJ5+l=2+t6RPh_fsnR}4hGlI}0ns=x9)ufwf(Bl5IpP#WI$wij}c|`kU z_z3%G-<3g8Ve=A@$-E~Rm2*y}HA$u&R?7|LQHk`+3w0-l3HmhK1KjRL^*oL8JcS}r zdTwhJ4tzG1hghO6^$f)3lv-E0Yo*{no*muoOLTzJdPbz?}&tn_~!#w#91d{`T6o;Nxb}SoB;9x(#SJKkC8@?g+`C{Mgl+Ta(2Hf-^`Z|j7BvNNs#x*g*x=_E*f6hh@9I5Y%TWu zS`q0b8O`cyu(uQ0R1A@`q<1Or@Y@%;liEGRqf^JoZs+g`=Em%;+YuEW@8%q z$9csM8&yEFoXe5x^QYbrSdYteMvLsH&oAoRP)Y0CJVQK4WR;vQQ+S7VJSMZDl;(sc zlw+ugGV3uHMe=d~$AOe3nYSQuPgrXkV%V@di3B;DVaf?u>{_%VsdXmrBwDPQVoeWu zwh?>@B-c-L5SB3N#y=hGTlPd}K$qd?=`M$^+{2=oiyAP!w$o&86=YeHlVeZio+}(C z4vT31$!)W=rQM}sCncMv38C-WK?OaVF8C{RE~*f1v1Cxx>_Zkx034l;#y*+&_dPA5 zK$Dq|ci=IFz@ZXcDKZ9m;P1dusf|#v3_v%5S`#mwL`SG;!vO~HmaIBUI@nUEGL%Kzg7)P&tggp?RTj@?hhPl7th%kvYSp9c=_A=E0GMz?Rd8q_l$WsSehe zs6y2sC}3aZeo{F3xT1q_G~kIgAYbs|CG*MQUhp35#dyRse38FO3rx(ymWHXCq2~mo zh!@1uQvnJ^0g{s$tJdW5&qz&*U>-Uo1g-PlcwS=9wCQqWMxyk(eq)M54N;$o`)5h3$PU=0_Wzk79#RoO+qRI*On@CEh zQ=3G7W>HZj(L|DXX%6=vqrRB6`4*MI>3yd4t{3TZb5N2-}gq#%99kU?bOy`ic)F#kq!g?t0ua&Hc7>?4V49)17^ZXIx)qZ z#|3d}A8)=ykaQqTH%v-6ajL8%`s@*wy%8NWGc!Of*-z`Odg4}MRFxT2pzKuz#Miw* z)=U}umh|u^liK5j4UvdbA@R<>k_I5Ye--Hp{WMaox2}ZR{csl>hW4N?@Qtap40g|} z`!ThSKKow9g$B(KWBUdMWYXbu}S9m6h za3XEpmY(BZI)ZE;I!;}T+z4M4%m}T`+?wm?pB86^HYi4!4${d6m!0PMM4bHPH9PQ znPEV))-Nf7%L-$7T#FI@PW~ib5E*6)wGpZPLm;(zuvhEsefI2%Gr{6HPe^=S8jlMCI+_0LLHQwfSE1^1x!( zYA<4HKJf88B2Fb>l89MA&AlVKf;l?SeKEu&R44aGVUj*O1fK{9X_ z!bMGAzT#c4Z~L7gmVShxKaV$c1A~!Q)}4G0co7>Gw)?lV?C;dz?{K-AhyKAvX=5C3 zO+xaD9XHsDoy6~KE_CK|-w`eu9K_^_hB)Gd#&aDB>@x>)ZGRKli_6J2;X-O^-ysQ0 zph37R%t!%UuL{YeaN~7cu+$W|ZfO-y5$Z={PW)qvy%30!yG)^F zk+C1+)8+VCS^b`mfJ{*B(P&^n4+&xP^)+YTS&)q9?s#9_*DGxn?r9$(Q+8t#-NN3~Y_Jr#*Yir*=-1qQo-28t@#XMn8{n~IK6YB%iu zlUgbq1a)=`di8N6Kyh-DO`80a&5=G|RolT%^=xSpz9KiVS?daTXuIAv0>(m|$ssM0 z&F4t}%LnuC<4D;G)Ewm>YN^yS(ba8^Z;F*HTbIGGMGfWQKa17%)LC@s7Hndq>nuV1 zHQFWW6w(yVokAo@W7*BR)!Ls152)UKSpv2Fu#*L`Wg)|A&j?_6r<$2D4SsQB|JboB zPLJh{K;vw_VcV(G$x|`NU#8+#r{Gm*>xkqhCnVC%7DTj;eH*b8`>uPs-cm9#E}IbY zK_)9xa&$oAJ4CLoV-nsVhd2Ffau?twuCiwCV&CA1@cqOw=iF-?DU(^<*CCyeVKhr$ zv~3(iq^_}%bYGf{YWyF$)=$s977iz0hB>%BHeNr>(;7`Lu~R-i>Qym`!`enh%p*0u8lsoMyJDJy!J@(t6h04!6V; znp%d=r$4@StN0<3dY3SB#BC)%qjQ9-Wis2~EmB;=wG%89sA8Sc3)G=)zYS-T^vBG0 z(0?KB@ReYZN<{Cbe=Ay~cx1Sn1TBulXAdYD3 zC=I?s8;SK@?S?^p`9>Lg%-?TBxy-OuI=xRFmuN69wBsX>5IqH51f?`G-W{ffUpl9j z(SJ2>)r?(w7)UEx5fLQ|=e4-6xX9IVhNr7e#8BHhH_L~k(~7+Z_o>X{7KEGP(LC89 z5=Q8R7l#R#wrFAW^@UfVPO>1yoct0Z+5zJsDqm|kr6%U)i+05KP$m4vm%zb(uaPb1 zx**E+0X$Vq0LRBPwP2-qXkMAeEalM#B0-k^YKhg{3!(j`k2JoO2s~pdRrQhVJrcIE z<@#WwUaHwh_6 zR;TzktD_JK*tqfb5NSyYg49W4wt@cV!MV&R=l)*k4cN^N&UBhcc#U1K4m2&p{$65) zgM{3SBqm7A%)_(hO=9{w=nCA)+)8$wBgZG3#a6=vWfkNY$1@Cy+0&IXt*O!k6W>zO zSX>1NYOa40P9#<#yYGS}=GT1hmr^CouhVI=dMj(liR?l3#q3Kv9#}GjBWp{#N#zdZ z?G4?vyxDe_Y3kzQ3T?K?;OhaatR3yK_p&kGA1nOFjGOYm_-I{pCw3clKreL}9i*7j zQyH3I$!%+yQcIcYW$j-2q~FweW?RqBt;vY@B2oWg=cp|PlapbL z3Xv5tnsMr&p=bCd#8K7#M2JUz_=yO<<8zp*c5Q`nIHOb8mwJ>aZD7KncKNv^p(P6* zkJ&S7W2byoZpV7Q<|uMg)_Yt#z30slFtnB@jGjzpzl9Tk;DTISnciL2%2H#AoX4L*+$gx%&jW!sK%Cw6KftBxsvdCX=D8;r;358Qox2AGwO1MHG3c zj*_`jF#}vM$5oJ*V&ZbEn6G5V(IMB|F<2!V-e-HFo>pHCO9hKaJ}o*4CIvlf^`z00 zS;Y}IteT#Re8I_(WsuFMG4Q4qgC)=C4ORv}-B?g4!L%=!(I zv9BSX=EKwELNBr);wYHeCdQQW2OU?8S3cKBh^D*shyIdi>hU}Y zIZJ2s&PGBK$nEQ;$}`~$A7u#+dkNaZdn32k=~#37kz8Zm`!1d{#7jz0NLs5BQK{&T zxVsc_1!Z97e35tb4Mu;}=(rnD@Ni3p4cTf4*%?)0%j0p9P8Lg_O=6|wc~FG6qZFaq zuuM1o+J;xCUbTQHXYgh1+q1T*8zx?oe2tT((*~s3Wa_&lj*w?-J55!0HCxO`B+R9{ zBvWMg9lrjs;_75s5%!)kkDrtdNA7Q}N#S>`X@jot9zV&cRRtqTnE>Im?wFez#zVGC0uksbp-wm6p_Zj+uxIy!b7oD&9fks_}>nQjb)Eua3} zWM-y*3B>M=p7@k{{lY1l3l4F#Ss71)27#MC(t8&1%2GJx)BpSPAJ2EUie0iw(r6#xTG^w%{`V+Pu zrN8}RaezjQyRP?g>PYq*JFephpT*d4&PWrj)3CECW_Pv7&!|bZnI>*cH#EL-dt**& zbIkY;9R20rI53k-WSH>mZYEGh+GiEq@kYS|^dd;Lph_4fMl zbr0v08Z>d}nm=4(fxY-BLrua|GCO+(XG8+NLcd6&Xr=>?I=%^2{VzImGQrvB9Xw%J z*tezyF!Ajt$Lu!V8ObZ55HA%PK`^XDL>CI&qL^B{UX;AMPVTY6ZZMZki;h}>KSa}B zU4p0HF7_H=%*JYP4O5zph%ER~w@H-->l~+rQ~Y8dT<*fn`I?lje$oOMB8cQb@=Pl7 z?22a)^6U#fg+*+GR`nWkHR%025bl~gpCrDvtMq4wbU*s$PEwR88OP4hGU5Adp&?JU zDv2zEk;6zZ-nq>=(BE(DQ>GQz9t?gch?BQe9PL|9Gn)<4V2nX9Z89Lh@7<{pwo(RmYnn7(ki{&t~ZxyJ?=P4C;p7O0pHxgcuTuWXv}w~#<#+R_lqSf>S)3A z7ix}Y8$Q$qkttF5$T1v+jrW;qX8&<8cGwbHK_4LjlAQQ01wJDsyMDe1 zr_O=+{-=r2FTt55x!Tpnl7s4T;UvTD>p`;*c&t}%Ul$D3wne+xNNs4mzS1(za#fsr%&p~TZ7*7r%9>Gj;6qjmMT zVMQ;%QVDdpkjixsay#keZFu+<7cwmO{VLV^hS(gIl?W+d6R>3>QpHV!+hDuY@}zxZ z_#$=8SpB4ST%WoLp%S0B=f{w%DTx;jlp_?wKc z;CTwZ?(fpe(A$K1Wyfy^SLVo{e^y?@9&yxrN2J{1gC&FQyVgnJLu`ickQnQ|VHF`$ z(D9a;JDhlT}2d` zIV9zRNb=k2X1#ifljTK2HJU9sjyG9>GlKzFsq$X;H{vNcgWGoO38abWL!`s#Tm0O# z?tH(g8;u{p4-EKDZdonELRM?0o!?uQpCfmi5*TpwCu>q_W^0|-Z261RzW+x05(xK| zf<%>Ub6RxnRwzV`*5J1ZSbAsK0LK{E4q*t8+SMx%Q27=vXz*%|V=MFzD0IMdHcAH`q!g4U6XJ2;aK+B1fgs3&kUT2~= zJe?1xo%Y9#q}vS{W}Y{*yP{0W9{jkn(}7_2A+>583jw&GGeH<87&U+cH*@O-k*{DP zf`TJAQ_!UHpxHM|rN(>y_U|E2{$byXE-z19x?}IE3|NX;Q`@gerX&QvMgsUw-qpR< z&anaacm{(?r_^jT-Z|^35r^?7WN_)E-n0L934&#h=1N$);g zCZwTG`|pq5u-#6YD%IXyuC*C`Z?y7d-EUzsIr)%HhtjG%VG%2Gck4LqY(v$KNUDNb zam7eFa;*EX^PsN0niRids~aaTD23M`Pb9w`qcimQQ{o)g?lfzo&CljBO{rbEWyQtv z-fvRE;=r$RBz;5^^}V67q3T%IE=m;IX=I&QF@tmog>!$koG^u#`hE4zr*R>R3Ruc} z&X`?XK-}u#_0sdpe)IUaioB58GG}xE`Sqx;p~}#-8UEa8%jkf9_%H$2`|4;Vhb9!l ziQ|+lc$V*0N9d+HqdVUBntXEaJXL#i{6F~1v&?H4Ng85r5DH;XH(0UrbMe!5P;`(# z7++PCQ+T7=9=D3*eZ6i6Ojm8QAl~%>-R!Du1w=jSDF$ zZG@v&KUw*li5$k66SbR(fjsYjRaUu~j@XvW1)I&^qWKHZk}9ViDyZ=An_-q``)yfO~f%_B0zlJyQQW^7_W;{Y5d3i)$rH&j~O3Do2*Pq#jf&IIZ*3{JS_BvWL%jC_;*0APk+9H5EtWKA|*mPL6Hx^_f<9S?qP-0H$MCS3cCjwS-y2q z;IqfJXAk$->fs)9k8RtwZQHhO8+&ZqwrAe_?>#qp=iKDI%1V0W%UAs+Rh{mtuC>-r z%p(6(Fp>=`O0vS3M|c;96v*$2;}oa`1uUVBgsJXi2RLlU&BX7@8`) zL^F@JZ!C{9OjJlyL{fRftzofq(VlMgbn|rOz_s^Id1?ty(tG2CqYsN6 z#n=eMLZ*!MRML$JIwz-2*avF*lRavQvKljdF$fvBL0i9e z!4CjHCc1|G#gj(r1K_dt>ynj~f~Rw%-nT@8gYh>y(k_N(PL%DP%A4gmEy`}nwS^<^ z`kWqLRy3%fI0|X7DM_8dHdMVku(PXqGayw)JJ(E5uv3+BsDK7>g?_~B|| zacxo2#()^G8bQz&@IVU{&nQ&`HOoSiM*4X<=Y)zcA(tesw8vS+nh=EDG{Rzchxsx@ z!x_0D3XE3(l&cx-fuG`SOyzrWmDShI#6{9?PiDN=M5e?VncVBq+Uh8D0ls786usSg zmqCgTD;Qeq4u*lLu`sfuYZ#p9%VlxB1c%5B50QT>()R}W+=_O7z!;NNv?3rBL<+}@ zdlxr8Fe5LTovJpgPqlI3bvE_pBNlEPKE;DauTSB0;GOOJZJgY=c~qW^(Z)!ia zypQB8>7LiVphCC)L`ql8Rn{|$H@o>sv-myPT|WyDurU(Yu7TOA_nc7oL6L4 zVEoW%QrNu3dW?JTi2`>L+#%5QVbU#4btC3M5~tU=rLdb&o4OupDi08J2aS)_O4XZ4 zF$})8at@PhMT2zf1?iN1&HOY}(sd$Hbt@M(Z6J%~Hx|p2xU?WFW+i(_UC$2w0kMlP z%b|{Z!~-&iFq=YY%Pv|Ur2?A(cbmaCReZeT0ho-lzC#0fK8_I1{@SfG#NDJ`+PVmB zVi70P_6Uqn$G0TV>A97EqdiZcZhii1xzr0h)fVVVBeO@w=a!72^hCW}t)>v5jl3Ja zGFUXMaD}twoZ*n=(0%n%FH6xp9&RyERm*O9sn@iuU;)pmC^R2YC#yq&+4@=@p@~gZ zqC%6SL_gSvis`&7GD^EbJD8uAxyoe_eONr3O}Ta75xuo!7Aja3Lt#jX1CB4LKc~hu zCKM%fxmIWnF#l=(oAUwU9OCy?`y}N&lS7-?fJ*s+SpI4+%@z7eE=mO*gk5b9Q6{iI zmhs>8d*tfP5v))o3;H$?1Q~USX>EU)O7+A8%RRtvi<8ZD2*&tsXPnPa8qOw{^AD`&ZLRt4n|@>k_RK2> zE6(*RtaTV)AK;6-cJJ5w_*|(UY6-&0O!@IwMqA{z2pS)bx89Lf)}szhmrS=q%ylrMJvGrtLDE3paSx}uQgYD z+-Ert6!fW0!#$j~2M9Lf4Wj*KqRBb(0|WYpKh^63)=mrVKFuGE+k=9zW__;I`gu zG=`lg%$?*3ZQ(GAmg+2>I54{+k+&syJD*Cw(qJEvuMK4ji?|(k9n*1LO?s);x{r042eZ})@;K^(4`I&D||7( z=EtT33lXp9(G@Vq$tyjjN@HHq%scI$kVcTxLHsB-ctwPM+J_#FKj^6i zeWU0n>Pd0fd8>~QIPO%%mGEJ+`*QC7%&_irc9XxNzjE+)r0F~ykr};VBVwFwG~OA; zkPA`@sule`Ii4q@ljKe6ackv4?qtW>m}ipvt<%Te3W+kr5#5TnxA7%^IHx~93N`N!IGvu5|U^Z;smMYq%E zuvf2bFGVB;GuCbTN8WrG6lF^c;%Vu%pDRh(JmaSIq3aj87X&parR|%B|0mO@y;snK z^NaLzDvH;6b7ISf2f51S*ftL&3m&0rPQ^N?-j(Ol(cPONV=Hik8#P)2wnAT0OkA`j zRuH6;Bmtz6FdvKwv!=rl9lkvx=fGX-CaIfLLiaGk?0A$`+bf@@$%rq!2{x7`rAHd3 z%8I%)Lc*#0Nz+z2i269~s%j7M=B`}*9I`_|U$30~A6N{|AA*&J3_ojw^+rzG&RIn6 zUJ1W!iDAQ}Dodj&nIEj$M`t7M))={P-|5EkuWtmj*zEcu_}&u)8$&P}hK~pQ&{gd} z|4!53I`7u{QOU)35^|OndksI9Zh53pPgr#+WjA!&4d>sbwOTkvC+hndP^*4QxoMEjuTdEZFTP@?!c#rmmQ?grH4Ba3%d+T&ymZd+no9nWygwZA zjC~X9N*+o0DVB0dhmS9bNNtkT6;w_L*eVC*bW2+5cV+);=+i!gKEW@w_$OnlUNFy1 zNVIzKY{RTst4_F^^fus={bBr+^}fzTusZ2__EapWx{17aSKOQ7*C5lK2ocs_Xpa1P zq=g zrt~BENqyRWG=!UmGE?!DJm!4V}L_$?- z1I2QlCM)pzZEuYqVCceKXd#?EQFY>RJ&SicbI_r?vb8crbObC=$?$xP_=tn@EH7om zk*DKU;JROEJ`!^3Kh^zww9{M%w+e~33ATZ%i^qo#=g8oaMrc-nod2L^Th5nEo+P2g zmGHq~npS7q&L4*R3VtJM19b3}LAew+1Rqj2Gy)PLS@yXuU7r9`4S@ym^;_#Tea0Qv zOH@*!1FQ5GvK@YM1w_tjuhcRHKbiXGoI3lZ&&%|@p}Zl!;5I)TxCY=qbc9V@!!7niFHzO$WTen%O;?$5BS|uz#njZcD#|JSl#qoAxk zqklW8cjC`A(jRii&dp_s5upU(D|~YDlP)K-bs0}BZ`r*M-Xw=~Y(^avvY-kAOw1NC z%Br3juWieg*|-MJq7jCIciZ<$TW&GAwH`$7r4!2Is^qHdD&VbUH}{q!vziO0&qPg~ z1$_u=UAWS=an)OqD+j~|+LreT`ow|-;7KFjP25cFU-(XYMdd(iE3Ua-;Z>KREaI31pBZHj1~kd zzi%@BI<-rd%26ulwu8*Vr)uCuB>>5VO6Dv5S+1Gm`+93V+sk1;oyh9{FdKVNF=bYf85`JE$Z$qY;;6qadf z#V+fY7b7+$IgA?HelhS*(b)Z3sYRB5G=6!LAs^K#Mr9{P;jC&!7<{JYjwg25@jsus z{2`T=`9^lfaK}+5C~1(V6I*N1IWWGc3?+FHio1X?o?T*;R!W)0S^CP$)urB5eEud` zozSW3H2dVWGI}aKp0IEW{~|aixE63~wMI19JdLt2wFC0(!;g}@*L$cLH$0wIk&ts( zb@;N_b(q*BLgRj84<~YcVwBjoy3o-Ui&ag4o*&3OtF>9P;Jp%3z6-5WZ(_=(h8>Y4 zoVH6hh%k)x$3von$xHbi=cag-QiPiW`2x zn7F_VQhx-Pis|3W5&?%@MzimJVCu(c-h}IDQimGLXhMw^G^Les&>r-){BBBOlm&hb z;;UqdqPY5}RzS5S>v3PR$QM7c*jN!iZ0Rh-j@)`FKuO%Q)S&;kRsTHY>(9zBKFvRx ztZ`k_Ep*xSI%#8hV**<%FgF7x9iqC6=+xGKT828kKx(v8)bvkRu8j~xzzd`+fnNxA z5DFqHxSN4#WUbBvj9oDUzcsXESy8Oa5*z6Z8aomp8WQ0w+DY_zQ~{C5uiFr*;CuK< zzMmxE`8~VPN;>V!`R7pAGCy}HK=LYi2-4PbFoSWq-E_clG>F1Yx|HE{4E?e#*NQhiQ@_@^(q)S*UDtkOsffwD;Z$_dMI`GQLfFC40A1 zWR7ATSBS^iL!mSeQ`gPM!`0-m(OavkzA7zIC3m$-8@(XvoiVQW#CaZqg4^Qx@KOfZ z$S>ZXq_^h{zd63@tJEH~;SF_9a1Zn1_v*_Y@E-IguuB9^jzhkau!_AkvWm2eG&7u$ zntPJmVl^Hiyz|Wyc$W@~f`Efmmk60@mCl*#`9*eZDnYyq>yMlz2 z6q#J|z)=xC+fLoD7**g>JXpv~e2;lGMB&ok%KA)l4B44(kK&xz;UlsKvSY&EAuKty z4`>TmM=Ej8xn>2r7b|pe5c#;BWTFyE_R%sxzXH97pGOE`g@9I`;oVe%2NilDyl2@f z6racyU&5k!sm=gI^fZ1N4DQT@U$VVSBy*f%b0#vTN0wic6-k$5Dy)1szh$1)+)e!2 zT7R3aczvXRiGvsExGSCTwvI@WS51YkoBdHI2fF#>=Ibr-=J%NMh*myeQlXeb)D*JZ z!dTe%39EdM!flP~_kKP+HNqyk{v1ZsrkXEXazp`7-SP`TpTMhh;Kx1w~;VMS@~Qr;(pj^STq7=Cx-VxsAl?mv4RySr9O_a zGnQ34Dp@i4nB3zR4=ZBpwYhPPZI$}n%#qEG5e@XTnr=aJXwVmeSS*2;>e;rOEmTTj z5;Y(`|7uK(v;4t80hX9JWLYu2k5w=E?(S}4G*0aJhcgz;rDc}uk66yJ%SKB&cZv47 zSHTm!Gx5S;F-QN`H`stGJ?m)ljoJ=}Vdz<0Dp6K+x~a#*z+t0UrK5=r@i2u1ny%G^ z?jALjTeU;Y)VvB>_q7%@{a_4f?f2W=rol)tNujgF&~d*<9co!47-#8NsjlnCN~3J$ z-7^mZ;k!%8>Wg)igG)d) zJzW!ZLp9U5f7#J!`o3|H^9bkPKNo+-c~ZU26>+F@=p>T{V2zOK`?`}>w!4E{m7kO^ zjL{84iHrxK3mL^$ddhWBJLRg;c4`-4;jf$nCG1SWG2qPS#mZfRz{}0ietrfxLggU~ zV&Kg9x99hpX#$64E5a>|VBL{@*uQJPl6YAYd-uo!&zOA5?XurYnN2=q^`1|G-v(C)5lPc~KcBML35}RGq3;m+ zmqV^m13?E@-^b91VYmXl-Oi?L-5djB>wfHqiual6x{272sp8tFA1=I*882q4u;||p zLTtYHA*ekER3mvi9w(ix8L4G2x47@ccI%C6XSu#QO=4cT`V}|dAnBbGx+sI*SSgh#D5J$gJi%OEDpBD(HhaEkSgX%qH7ej z7o*DP@F)!))2MkyglC2^Fw~sYX2w@8)~cvKG{0?SJ_kvgvZ zY$oFs_*5zf2r~z!H!-8@#g+vq+w%+b3`{GSfCB{5Hn6d{V6RZ($(W4+c9H!!u88#Ft%E4VExvia;o|Nf>brcQ1)3|8-zqVFM4mn0TNKv8))J zk>^R+EQEM!)htS3frBMk%6J|Ln4No3Xca5xER39nPktu|hOdb5fSwJE5T6xxe3`?!*wnwPRl&Hcy5E#Zafmu=U7cX~ND3=ECz0Hm_0o@l3ac7?#ogIowkL;_Y z`fp7Xk_@~S)xAc=rgt**ZHlr6^E(3XYPqc8Qe^hXQR|gJjSvqUR(R#KbE+tbgi2~0 z`L%a{=VEy3F5NvC=j@aP+qt5`^2^Q-hcah9fu;GhqAJEK%W#he^RD(iiq12o!_kAp zowOk^1Z_IY2+*-Vtu+ThxLsposb~i%Kl{d_B+(Mvlh>c>57!vC)N0>Lcap+jyjg7) zZqCS>*kOf~%w!{lMCBmdy(qXH5l8Ke=T6;j@^~%e9QiqtVrbo@d1({JD(Ye+@|K8r zC=VJcvS|{ro=&5VLtuW%`^*`R1pD=B|J;7>(8k(s_lLNlR$WJ>6;#8WSGPu!d_{#=zJc1xZ@@iC|DJ1w+u{046r7zR8~m@$o^G zXj z-DIw&Z7yFikm0D)#_{fV#rO9{S$dhCdz5gjvNoH~giR3=l}ywtSc-|Xf~ZYo6noNg zbh{i2$9rph2fuL1Q}U%>MvWhHNVRCdIY-iBnV);YF#xtQ^lOts2#=OV#C?3ua6T@FD@y z;}X$aSycFCh!(`2)0wi62XCBPVNs)OLFq_xO5lEDpCa9H*^gruh zs>jZ`OByQZDj4S5sj!zV!xk#DL*mShK?O>~OZ)Ho2Dy88Fa!yw!A0B%Bh0&pnIWq! z97!9ob!X*D*?XEVr5>&}Zqd<|uF=Wu-|Ag*xb-kEEnrLzusW_fWR3=~GGHzL^>cXi zci5Er=(*y zW31(NQn;C#>?S=Cc;kq})Y#Grb5cTms@JNx*P|sxiW0WlpW-X$__AI`l>k|u>sNJ} z1BK~gCX=v`Q&yf<1UNHOom06K0-x?@UI*kn8??xx20V-gz)m4|h%pjEbAxlLDJlrl zk|7wetMZbyO8xk2BJ7|E1Ey)+_}P}YvJ|HNqXP6z^I1Dn-euUpcQWF)-QQ+;4|spg zC^V)7%tl}hXR0ttffSwokPYJzb8vw^-vmkE3O==yp* z6WLS-R`yG)OVBF~*-+^bW1HA-ds0UGIC@~fvZyGkt@>(6bX?S2P8CA=aHsDT(=jVBUN4MSZu{Ql)a92F3aZu2MD^=zomlP)>mLghGE>q;srcEsO zqRbF%%_7UR{}G?`nVz$Qc(k;7O3amk;GuGLDGHd;1PsB0SFO#o@DFDE2}R1u0R2 zbNqI2FmW4U0sVP}0;;GJaHxXX_LuwwA3w^A^HnVYkPneBaev`Z)T-epPvTZ~e=%!L zvPg|f%~04JJ6-C;m^l&tM(!eEREF~=b@pDt?$?4n~$;-*Z8;|AgvoEAh<}0k~4m&(UsZLUP?oEdh z20a~Tl@0%V%}vMI5&qdfiS%@jxHK4X{VR*-hD8rW;=Cc^hLBO5{tuO#9PHz*e7$!{ zfK-y)v0HBvJD2o_))|{j8(mAKXRfW5#X3a7x%apy%TOqG=s+8S+Ty$SCKif%;f`YC z7Z^x)+iBBIBWtlpH@(|Jl^ouF2Pf_5putU89M8J4^uD;C#X$P3FlUB*3A_&eM!VbS zDZpH0`0}^H*VQnu>fvRAEqL;{4?-`hNl`z9 z26NemP}5o$!RMy!o|}M*a=$=admoI(2$&k;!6*tpTz_nWvAm)}c?!Pk);x9gMWblx z9k}@6llQvfzkpb$4v1W$t2`4%%mk>61m7nxtm6G817Xr>IdByU6cvi}3tSl>?1WH@ z5m22mQ1$75+4t&>bjK0`Ddg=_G5#T046IcfZ8KTd&J|i+#nY&W~Zl*$6Uc5sLFgopR8Egg)@Qrwojripo(zxW%BbhWy(}9tG!H|aLV2bCg@7%v8Nbx&ux|pl0j8jan z^@%6d`YMeeZO-iXINeImr-3k+CU%Z6PH0)bR|a~$gp#5hbpN=oj?d1E#&0BXK@{rH ziNF2T5|nKF38<*GWOu|YOwnkI#oInq6*-_7li5rtUCR<0FFCMOk}WuN{o?~%cvcYI zQ}xp8NE=i5_dijeM6`9girXGnoL!tD--sYC-a6j`{gEJ`fYLC3>83=+;Gfzh^Sh9n~>Ba(dr|Pjz{`{c1Vktlr(- zF3bMNHXnva7GVl!*}mULDddcBuk6meOuSn2o^GU-ZVw!q>VzakQ zILtHFbF6E<3w;glw(B@*pJp}cy=%AlpuIuh_9GS|5rPTfL^~OO{C5=(O?Qs?2cN{p zH1Q%8C&m$gF83s-QEx0m`&Tl;!~_kf>ySuaB?!}%+!CibS|g{i)ybO7*QpF3Zi4aTTKI8zAZmp(fsy;c8iM=la#P~GoYlGd^T1sn=86Q< z9E|^b*cSwv&AM%!-MLx)G35KpgWoBB`KCpUhJ_w~`eS(BsV!ZhqTf%nG&Na3u{H#u z^@@Vgs*W)-Mi82^^2G!3NhGSj?2jPrmnrOJj=qVbebSvD z;v182pUg#yp#6(JzGz%qn7;0g?^Rt@B%TM4y6xlX5omrC7EhR(j&FH+{fXv=_#esL zYc&ndqqkl-_+$5452N^wj^Q`tFgf3hNDvMjiJnH%BrwP^bWaW^y_Iv8-ljo}EtNvxRiTouQfc0pnBZ_~T=~!!L zN3!`uw}1tWYoG)(-U|W+f2W^0%Dfbd7vT^1&l2oz8sYh40b2n2uP`*)R`U|C}_p%qd+?3fyfxjmGkg@Q;KPFZ%z zWjS8yt>P&3D$@?QITZ>O^8_3>v!46twWhqokC_v}LTS`LzqMmcLW+M<9FvT$q8nja z*`(ODEy==|$pqBZz*KJ@v;9H1{*+>*G~7s$Qmx8BDMHDL(L!*JXUz_Pkb$1cLB$g| zu6-dx8k_6$;CP>>Qgv|N7Q{&;zL;NthUq z1Ml06ksw^e{LI#UV&a>9HnEjt#FUA7M2X zzcwQn9wwuK=0UR&Y667>dGylZ(EX(jJRO^v_Ax8Livm?wyQ2H~rJVD@rQ!PaXb~14+tR6dX9ffUouwHb*6OOwV9rsb z&X0FU&#u1P5Pro-29-lo6*Rve#owGD+HagELdz!zw7V zkDF<gRn8Qi2-(lOuZ?XW^?Cu6b!8GOvBBQ6rX)zC)ot}2I-OZf7`$tv! z*P(j2CDX$&>x9Rf-mg{)=1x=DL&VQ~md6b)LFK2(tOmtp5n1r9H|p7)i!OK*ZJsJ7 zDe3jObJfFINB6D-7ixyYnvc~_Du{T(n;KI&$e++98JIPlhQswv52 z$oDw$k4sIp@3to#=v6(Q@PZVO&$}r;i^p8o9`_=~LeLRJxhVoK*T9imAkY4IZkNbK8l1M){@q}PDVBl--VtRc?qk? z(%T>}vt~k{juvMOl|4_9I>Ld@Q@c0T^Fj4~JxlbT!T_y)qBVE{rck{OUHGny|+B1(( zMsUA6TZ$Fw17&^DhCHuy>gW+Kw7#!ej3AjhgH(TuZCcc^$Q4>+F5M~)-a{+KzIsZN zv&i;}>^Rf^>47>ocom9i$y>lS7X5iGasT%@HKefwBQtX8I;@WZxyFS3^K!dld*BM4 z$4oProgXI}d^ephu%m)sD+%c%R7(PSI}>Gi-%89c;C&}W{Wvpyl3_?UZwIJK^@p-= z5Bns4#8zeZd?s}AwKc4F!GXB@n)pUbWnp>wr?=Lko{GfeEG+ z>MdIxQh|bX9``s-@Qd|6jn9IB_m)73U^j)h@(>{w=Mh}=*pV=nc0wG&U+Yv)L2muO zZbeOqJ;0m;8-!c4)=pQ?yVTlP94uYx>l8a>J5<{M4&pA!b!3k6pE@tTyEyN3(^H;T z4evibCLcJT-ntOf>^j1o@3_-PUM#~@@o226IT?(INAV#El8==%fg%?|Xrk{1NdeX` zZ2Snvhg6TpOk3~|GS40eF~UO~2DPuzx~R(@WRLT#ZTujFW18Z-gft|EA)GTO4D zMMeDJxtn<>;xtnT*0p#IO(;uJExUSxPXN-DbMbY1DT16tS&DKvg(Be>jd6cfk_Roa z6Z;E#65l1`&I`JENooB!wwzdDC1If`vl2}@vCR)J6#IgR@f{oLuh9gKKym4GoDa_T zh%Z+Sev18!a0}Z@`^m|#uV5xMN@)gjaOJ2>wC2k(@VoH$+|xTBaSE*GN?H=v?IM*b6o_%$!Pji$ zzpTczx?P_!vA2fxP@~?eA283aBVoWdjw1cJXf>Q1sN-kfS9Xu;MtK2qa5Y?;z*1Mb zUFKCIWcUiHD*WfV1tMtcd!3~ZD|kw`qh?YY6F+Y~OK&N?$`66+=Lv%bLuinlmP3;T z8>3gH{e^Un@)sU8l;&%zOJz)RI{(fvL1N8*y zL`Obk!dN8yAg8pz>Bg}Tb>t$^s1JG`9#UkaP`Oc3c40UOQ5KV=cCWh!<=;BnGVao= z6S@D=t(Z(&bln@^qRN7w$(u7A6r*gQLx z6FapUhZ7pKe!yt;BDz^nDs`6SJ}$dO#HFEjEcZ@X3vsSGMn(&tcbwT+whhg1CuSkN zFJME0l;#)zu;p)_i2s2Tk*Gh!HR?S8P08@R4yS@XIO*IKl90#Y{2P;x7kNL%@R4h# zom-2$UY<)ZLP|yj{tqI4EM$;h{8YMqF*|WW2c+T9(1pXl;ieWbu}XgkNhu%sicD(? zW-iC@5VfsS-aLCd1XZ+iV(40pjfRXXqlxbP3gm~Lw<(sTd#N09DNuT&fKqN5#H16} zLFu^!&C?XD=xk{iu@G5mX{J~kkKQGlCzG2h``Y(hJL?-z6*#n*fJ2%I8UGD{IWo3& zbgD}VS;2vU4CI`OWjx%AuBaM_Ox>arE27mhyN=>*EA+Dd8gMM{`pvjLc70Rkub)3| zm#+p@tcNEA5fY$HD>B|GP+Pma`iypPQG0PyKJGkJ zyjwlsDd|hv3gb8kKJDX-(>>8Oap!XbcOSVNou}newsh?Vi+@#H?m>?&=TG#Kt&E1aZ2NoTCcsRyg|3L7-A+QjSqD~ZM!FAi7 z`=B9sEPY9`q(coRv)86kxv;%3Ae%=%q zy74L*3X?*_na<%?7GV%WaBcl1%6zAohx%xkJeg@?z062IaX9@uN`%=!Tu>qm&2frw znAjM_97@F~H9D;ouYMZM z@nq#i%ef|Qrm7%T>-84)0{AVq>0V8BXbbg@{ey!K=Vntg?&j@!j0G)K?iNXw>!CM@ zssAHMTi82<2)koecp93=mwYFrv|aW?u6bt84^#z*IpDQ-_Vi_wRv8$DE~!Hm z%oS~8<9ZF2rfn1l!l5VA0|CQqib-Yne6Y#N_t4hWW+lv`8ztOK16$+eJhaUfUDsMu z`D^=nl$^*#%hhF$wlIayu!F?LwFVk_nV0mcHZyrqRj@?uFBL3G@0;=Q&j8?n=+Cl4VB;ze1PoX{&{X(yONyFVodouj(~9t+iY*tyrF7dQ9yDc)$^2F|Ip5P#^4i@fCkq{z6&L434 zmHU){Sf0-JR-7`5Oqb-0r;ctui_m|JN&{ZMW7j?~^BZsYX>V%Yp{pdfr`!iw=4A{KCj-i=Df=06W^2evK_eH2= zur;Hq1e1xNTw_CCXGlyK)PmMW{Nqg6u?56u$kl>j69g=EVp(#bPX#YZzW?Y)Q;hXl zB*K8s$D8-NHQ|zzfd-R7e94Innh_qz1-k~vdL>0}z!%sW3ZFh*_y~VneOrTQvof(P z^iB@D@-6==#~*%aFP=GBxr0~n@O!q(NEzQRPaU2?S_9>PPMmeHGHRRAw7EnckzL+0 z<%AqYRD*r91&^W&_JG)L64ttwP5tgbY-54l{uD!MOEkDNBxboCjM-bqR$ybT zAFaoFw0~^(?TU!=V8w3yfK`MF{K&AxScN}I?suXZmBF3W9%o^GqoT^E+Sw#>|3*_e zfE_?L9T|RVgS~-VbEf|Zy70;o`m}9``&r!Wi7^%r`&8lc)Q)-i>uLt(2>2S_D+knKDG?rmgh6#~-p@u4`$)8^=}CXro3f8%7U z(}!~zM{nUj_RPOSIscaj^Uc{9IO-ePk@E@5NDzpaSlc`Nx4}ZdMhl>)_@)*9@jAXu z3&C%-gIthR@3={;h%NnhH4D*&Evb z&s$sDk$+1%|5fFieNpV{W%y3vb96BI&M>mm{dP@g-E{4&Eler6x&Ni< zxY!vQLDLg3ut0yqDgW9CSO5Sf0D%#~zhVG-wr|nqpN+ukUoj>IM!>gA^KUVF0R2CH z&%ei**;u~)j(?BQ)Bodd{CkXas88@m8Ks{lW{FdG{m1B)Ot6AL4s0KE`E n7{E*~M9<3o|Ig6;2S&1Y(6w{;uM^3{zzkr6CLs}$7KZ*mQpPKd literal 0 HcmV?d00001 diff --git a/C_Language/TP_SYS/manuel_2009.pdf b/C_Language/TP_SYS/manuel_2009.pdf new file mode 100644 index 0000000000000000000000000000000000000000..9939e5b39925631b2a14cbef0cf258fbd5e4870d GIT binary patch literal 240092 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

sqg2x+ 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 J|Igo@{vTD-csBq5 literal 0 HcmV?d00001 diff --git a/C_Language/TP_SYS/tp_sema/Makefile b/C_Language/TP_SYS/tp_sema/Makefile new file mode 100644 index 0000000..9c3e5bf --- /dev/null +++ b/C_Language/TP_SYS/tp_sema/Makefile @@ -0,0 +1,2 @@ +CC=gcc + diff --git a/C_Language/TP_SYS/tp_sema/sema.c b/C_Language/TP_SYS/tp_sema/sema.c new file mode 100644 index 0000000..57c13d1 --- /dev/null +++ b/C_Language/TP_SYS/tp_sema/sema.c @@ -0,0 +1,113 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +/*void erreurMes(char * format, ...) +{ +char texte[200]; +va_list liste_arguments; + +va_start(liste_arguments,format); + +vsnprintf(texte,200,format,liste_arguments); + +va_end(liste_arguments); + +if(errno) + perror(texte); +else + fprintf(stderr,texte); + exit(1); +} +*/ + +/*-----------------------------------------------------------*/ + +int creat_sem(key_t cle,int val) + +/* creation du semaphore cle ayant comme valeur initiale val + retourne un identificateur de semaphore >=0 ou -1 si erreur +*/ + +{ +int semid; + +union semun{ + int val; + struct semid_ds *buf; + ushort *array; + } arg; + + if((semid=semget(cle,1,0666+IPC_CREAT+IPC_EXCL))>= 0) + { + arg.val=val; + if(semctl(semid,0,SETVAL,arg)< 0) + semid = -1; + } + return(semid); +} + +/*--------------------------------------------------------------*/ + +int del_sem(key_t cle) + +/* destruction du semaphore cle + retourne: + 0 si la destruction du semaphore s est effectuee correctement + -1 si erreur +*/ +{ + + return(semctl((semget(cle,0,0)),0,IPC_RMID,0)); + +} + +/*---------------------------------------------------------------*/ + +int open_sem(key_t cle) + +/* recherche le semaphore cle + retourne l'identificateur du semaphore >=0 ou -1 si erreur +*/ +{ + +return(semget(cle,0,0)); + +} + +/*----------------------------------------------------------------*/ + +void P(int semid) + +{ +struct sembuf psembuf; + +psembuf.sem_op = -1; +psembuf.sem_flg = 0; +psembuf.sem_num = 0; +semop(semid,&psembuf,1); +} + +/*------------------------------------------------------------------*/ + +void V(int semid) + +{ +struct sembuf vsembuf; + +vsembuf.sem_op = 1; +vsembuf.sem_flg = 0; +vsembuf.sem_num = 0; +semop(semid,&vsembuf,1); +} + +/*--------------------------------------------------------------*/ + diff --git a/C_Language/TP_SYS/tp_sema/sema.h b/C_Language/TP_SYS/tp_sema/sema.h new file mode 100644 index 0000000..c06e04e --- /dev/null +++ b/C_Language/TP_SYS/tp_sema/sema.h @@ -0,0 +1,7 @@ +void erreur(char *s); +int creat_sem(key_t cle,ushort val); +int del_sem(key_t cle); +int open_sem(key_t cle); +void P(int semid); +void V(int semid); + diff --git a/C_Language/TP_SYS/wtest6.c.pdf b/C_Language/TP_SYS/wtest6.c.pdf new file mode 100644 index 0000000000000000000000000000000000000000..07619f9293992c299b085f9ee218388aac9704e2 GIT binary patch literal 11739 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 literal 0 HcmV?d00001 diff --git a/C_Language/environmentvariable.c b/C_Language/environmentvariable.c deleted file mode 100644 index 7f525cf..0000000 --- a/C_Language/environmentvariable.c +++ /dev/null @@ -1,14 +0,0 @@ -#include -#include -#include - -int main( int argc, char **argv, char **envp) -{ - // I will display all the environment variables - while(*envp != NULL) - { - printf("%s\n", *envp); - *envp++; - } -} -