Subversion Repositories shark

Compare Revisions

Regard whitespace Rev 1683 → Rev 1684

/demos/branches/xen/network/DatagramSender.java
0,0 → 1,35
import java.net.*;
import java.util.*;
 
public class DatagramSender {
public static void main(String argv[]) throws Exception {
long i = 0;
DatagramSocket sender = new DatagramSocket();
InetAddress IP = InetAddress.getByName("192.168.121.2");
String line=("Inviato");
byte[] buffer = new byte[255];
byte[] buffer1 ;
DatagramPacket packetr;
 
while ( true ) {
//DatagramPacket packet = new DatagramPacket(buffer, buffer.length);
//System.out.println("In attesa di messaggi...");
//receiver.receive(packet);
//String message = new String(packet.getData(), packet.getOffset(), packet.getLength());
//System.out.println("Messaggio ricevuto dall'host " + packet.getAddress() + " su porta " + packet.getPort() + ": " + message+" "+ i++);
line="Inviato"+i;
buffer1 = line.getBytes();
packetr = new DatagramPacket(buffer1, buffer1.length, IP, 100);
sender.send(packetr);
if(i++ % 10==0)
System.out.println("Inviato"+i);
Thread.sleep(508,0);
//System.out.println(message+" "+ i++);
}
 
}
}
 
 
 
Property changes:
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: demos/branches/xen/network/notify.c
===================================================================
--- demos/branches/xen/network/notify.c (nonexistent)
+++ demos/branches/xen/network/notify.c (revision 1684)
@@ -0,0 +1,149 @@
+/*
+* Project: S.Ha.R.K.
+*
+* Coordinators:
+* Giorgio Buttazzo <giorgio@sssup.it>
+* Paolo Gai <pj@gandalf.sssup.it>
+*
+* Authors :
+* Tullio Facchinetti <tullio.facchinetti@unipv.it>
+* Luca M. Capisani <luca.capisani@unipv.it>
+*
+* Robotic Lab (Dipartimento di ingegneria informatica - Pavia - Italy)
+*
+* http://robot.unipv.it
+* http://www.sssup.it
+* http://retis.sssup.it
+* http://shark.sssup.it
+*/
+
+/*
+* udp_notify demo: this simple demo shows how to set up a simple UDP/IP
+* packet handler function in order to avoid busy waits or task creation
+* for the packet receiver function.
+* usage: after compiling this demo, with the "make" command, start it with:
+* x net <loc_ip> <loc_port>
+* where <loc_ip> stands for the local ip of the receiver host and
+* <loc_port> stands for the local UDP port where the receiver listens.
+*/
+
+/*
+* This program is free software; you can redistribute it and/or modify
+* it under the terms of the GNU General Public License as published by
+* the Free Software Foundation; either version 2 of the License, or
+* (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+*
+*/
+
+#include <kernel/kern.h>
+#include <drivers/udpip.h>
+#include <string.h> //for strcpy()
+#include <unistd.h> //for sleep()
+#include "drivers/shark_keyb26.h" //for keyboard
+
+
+//Received Packet Counter
+long recvcount=0;
+
+//The Internet Address of this Host
+char local_ip[20];
+
+//A index for the receiver socket
+int socket;
+
+//Declaring a structure containing the receiver UDP port
+UDP_ADDR local;
+
+//UDP receiver handler: this function is called upon UDP packet received.
+//No Busy waits are present.
+int recvFun(int len, unsigned char *buff, void *p){
+
+ recvcount++;
+
+ //Printing on screen the data contained, assuming that is text data
+ cprintf("Packet # %ld, len %d: %s.\n",recvcount, len,buff);
+
+ return 1;
+}
+
+/* Init the network stack */
+int init_network(char *local_ip)
+{
+ //Declaring a network model and asigning the UDP/IP model;
+ struct net_model m = net_base;
+
+
+ //Setting up the UDP/IP stack, assigning a UDP/IP/Ethernet Network Model,
+ //a host and a network broadcast address.
+ net_setudpip(m,local_ip,"255.255.255.0");
+
+ //Initializing the network stack
+ if (net_init(&m) != 1) {
+ cprintf("Network: Init Error.\n");
+ return -1;
+ }
+
+
+ //Binding of the UDP port in the system network stack
+ //without assigning a peer IP-list in the second parameter
+ socket = udp_bind(&local, NULL);
+
+ //Assigning a receiver notify handler called on packed received
+ udp_notify(socket, &recvFun,NULL);
+
+ return 0;
+
+}
+
+void program_key_end(KEY_EVT* e)
+{
+ exit(1);
+}
+
+
+int main(int argc, char **argv)
+{
+ //Assigning a CTRL+C exit key shortcut
+ KEY_EVT k;
+ k.flag = CNTL_BIT;
+ k.scan = KEY_C;
+ k.ascii = 'c';
+ k.status = KEY_PRESSED;
+ keyb_hook(k,program_key_end,FALSE);
+
+ if (argc==3){
+ //Copy the input parameters values into the UDP/IP stack
+ strcpy(local_ip, argv[1]);
+
+ //A local UDP port number where the receiver listens
+ local.s_port=atoi(argv[2]);
+ }else{
+ //The user has given a wrong number of parameters:
+ cprintf("S.Ha.R.K. udp_notify usage: x net <localIP> <localUDPport>\n");
+ return(1);
+ }
+
+ cprintf("Initializing the network stack... \n");
+
+ //Initializing the network settings
+ if (init_network(local_ip)) exit(1);
+
+ cprintf("Waiting for packets on port %d... \n",local.s_port);
+
+ //Waiting for packets
+ while(1){
+ sleep(1);
+ }
+
+
+ return 0;
+}
/demos/branches/xen/network/notify.c
Property changes:
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: demos/branches/xen/network/makefile
===================================================================
--- demos/branches/xen/network/makefile (nonexistent)
+++ demos/branches/xen/network/makefile (revision 1684)
@@ -0,0 +1,21 @@
+#
+#
+#
+
+ifndef BASE
+BASE=../..
+endif
+include $(BASE)/config/config.mk
+
+PROGS = net talk
+
+include $(BASE)/config/example.mk
+
+net:
+ make -f $(SUBMAKE) BASE=$(BASE) APP=net INIT= OTHEROBJS="initfile.o" OTHERINCL= SHARKOPT="__PCI__ __LINUXC26__ __INPUT__ __NET__"
+
+talk:
+ make -f $(SUBMAKE) BASE=$(BASE) APP=talk INIT= OTHEROBJS="initfile.o" OTHERINCL= SHARKOPT="__PCI__ __LINUXC26__ __INPUT__ __NET__"
+
+notify:
+ make -f $(SUBMAKE) BASE=$(BASE) APP=notify INIT= OTHEROBJS="initfile.o" OTHERINCL= SHARKOPT="__PCI__ __LINUXC26__ __INPUT__ __NET__"
Index: demos/branches/xen/network/net.c
===================================================================
--- demos/branches/xen/network/net.c (nonexistent)
+++ demos/branches/xen/network/net.c (revision 1684)
@@ -0,0 +1,99 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Giacomo Guidi <giacomo@gandalf.sssup.it>
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+#include <kernel/kern.h>
+#include <drivers/udpip.h>
+
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+/* Init the network stack */
+int init_network(char *local_ip)
+{
+
+ struct net_model m = net_base;
+
+ net_setudpip(m, local_ip, "255.255.255.255");
+
+ if (net_init(&m) != 1) {
+ cprintf("Network: Init Error.\n");
+ return -1;
+ }
+
+ return 0;
+
+}
+
+int main(int argc, char **argv)
+{
+ UDP_ADDR target, local;
+ char local_ip[20], target_ip[20], buff[10];
+ int socket, i;
+ IP_ADDR bindlist[5];
+
+ strcpy(local_ip, "192.168.1.10");
+ strcpy(target_ip, "192.168.1.1");
+
+ if (init_network(local_ip)) exit(1);
+
+ /* local IP string to addr */
+ ip_str2addr(local_ip,&(local.s_addr));
+ /* set the source port */
+ local.s_port = 100;
+
+ /* target IP string to addr */
+ ip_str2addr(target_ip,&(bindlist[0]));
+ memset(&(bindlist[1]), 0, sizeof(IP_ADDR));
+ /* bind */
+ socket = udp_bind(&local, NULL);
+
+ /* target IP string to addr */
+ ip_str2addr(target_ip,&(target.s_addr));
+ /* target port */
+ target.s_port = 100;
+
+ for (i = 0; i < 5; i++) {
+ strcpy(buff, "qwerty\n");
+ cprintf("Send packet: %s\n", buff);
+ udp_sendto(socket, buff, strlen(buff), &target);
+ sleep(1);
+ }
+
+ cprintf("The End.\n");
+
+ exit(1);
+
+ return 0;
+}
Index: demos/branches/xen/network/initfile.c
===================================================================
--- demos/branches/xen/network/initfile.c (nonexistent)
+++ demos/branches/xen/network/initfile.c (revision 1684)
@@ -0,0 +1,162 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators: Giorgio Buttazzo <giorgio@sssup.it>
+ *
+ * Authors :
+ * Mauro Marinoni <mauro.marinoni@unipv.it>
+ * Tullio Facchinetti <tullio.facchinetti@unipv.it>
+ * (see authors.txt for full list of hartik's authors)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://hartik.sssup.it
+ */
+
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+
+#include <kernel/kern.h>
+
+#include "edf/edf/edf.h"
+#include "cbs/cbs/cbs.h"
+#include "rr/rr/rr.h"
+#include "dummy/dummy/dummy.h"
+#include "intdrive/intdrive/intdrive.h"
+
+#include "sem/sem/sem.h"
+#include "hartport/hartport/hartport.h"
+
+#include <drivers/shark_linuxc26.h>
+#include <drivers/shark_pci26.h>
+#include <drivers/shark_input26.h>
+#include <drivers/shark_keyb26.h>
+
+/*+ sysyem tick in us +*/
+#define TICK 0
+
+/*+ RR tick in us +*/
+#define RRTICK 10000
+
+/*+ Interrupt Server +*/
+#define INTDRIVE_Q 1000
+#define INTDRIVE_U 0.1*MAX_BANDWIDTH
+#define INTDRIVE_FLAG 0
+
+void call_shutdown_task(void *arg);
+int device_drivers_init();
+int device_drivers_close();
+void set_shutdown_task();
+TASK shutdown_task_body(void *arg);
+
+PID shutdown_task_PID = 1;
+
+TIME __kernel_register_levels__(void *arg)
+{
+ struct multiboot_info *mb = (struct multiboot_info *)arg;
+ LEVEL EDF_level;
+
+ INTDRIVE_register_level(INTDRIVE_Q, INTDRIVE_Q, INTDRIVE_U, INTDRIVE_FLAG);
+ EDF_level = EDF_register_level(EDF_ENABLE_ALL);
+ CBS_register_level(CBS_ENABLE_ALL, EDF_level);
+ RR_register_level(RRTICK, RR_MAIN_YES, mb);
+ dummy_register_level();
+
+ SEM_register_module();
+
+ return TICK;
+}
+
+int device_drivers_close() {
+
+ KEYB26_close();
+ INPUT26_close();
+
+ return 0;
+
+}
+
+int device_drivers_init() {
+
+ KEYB_PARMS kparms = BASE_KEYB;
+
+ LINUXC26_register_module(TRUE);
+ PCI26_init();
+ INPUT26_init();
+
+ /*keyb_def_map(kparms, KEYMAP_IT);*/
+ keyb_def_ctrlC(kparms, NULL);
+ KEYB26_init(&kparms);
+
+ return 0;
+}
+
+TASK shutdown_task_body(void *arg) {
+
+ device_drivers_close();
+ sys_shutdown_message("-- S.Ha.R.K. Closed --\n");
+ return NULL;
+}
+
+#define SHUTDOWN_TIMEOUT_SEC 3
+
+void set_shutdown_task() {
+
+ NRT_TASK_MODEL nrt;
+
+ nrt_task_default_model(nrt);
+ nrt_task_def_system(nrt);
+
+ shutdown_task_PID = task_create("Shutdown Task", shutdown_task_body, &nrt, NULL);
+ if (shutdown_task_PID == NIL) {
+ sys_shutdown_message("Error: Cannot create shutdown task\n");
+ exit(1);
+ }
+
+}
+
+void call_shutdown_task(void *arg) {
+
+ struct timespec t;
+
+ sys_gettime(&t);
+ t.tv_sec += SHUTDOWN_TIMEOUT_SEC;
+
+ /* Emergency timeout to exit from RUNLEVEL_SHUTDOWN */
+ kern_event_post(&t,(void *)((void *)sys_abort_shutdown),(void *)0);
+
+ task_activate(shutdown_task_PID);
+}
+
+TASK __init__(void *arg)
+{
+ struct multiboot_info *mb = (struct multiboot_info *)arg;
+
+ HARTPORT_init();
+
+ set_shutdown_task();
+
+ device_drivers_init();
+
+ sys_atrunlevel(call_shutdown_task, NULL, RUNLEVEL_SHUTDOWN);
+
+ __call_main__(mb);
+
+ return (void *)0;
+}
Index: demos/branches/xen/network/talk.c
===================================================================
--- demos/branches/xen/network/talk.c (nonexistent)
+++ demos/branches/xen/network/talk.c (revision 1684)
@@ -0,0 +1,217 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Paolo Gai <pj@gandalf.sssup.it>
+ * (see the web pages for full authors list)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/*
+ * Copyright (C) 2000 Luca Abeni, Paolo Gai
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ *
+ * CVS : $Id: aster1.c,v 1.1 2002/10/28 08:13:37 pj Exp
+
+ This is the talkdx.c Hartik's example.
+
+ File: Talk.C
+ Revision: 1.00
+ Author: Luca Abeni
+
+
+ Simple Netlib demo: nothing of seriously real-time, only another Unix
+ Talk clone.
+ Read it to see how the UDP/IP layers of the networ library work.
+
+*/
+
+#include <kernel/kern.h>
+#include <string.h>
+
+#include <drivers/crtwin.h>
+#include <drivers/shark_keyb26.h>
+
+#include <drivers/udpip.h>
+
+
+WIN dbg;
+BYTE esc = FALSE;
+
+char talk_myipaddr[20];
+char talk_toipaddr[20];
+
+/*
+ This non real-time task reads UDP packets from the network and writes
+ them in a window
+*/
+TASK scrittore(void)
+{
+ char str[2000];
+ UDP_ADDR from, local;
+ WIN displ;
+ int s,n;
+
+ /* Connect on the local port #100 */
+ local.s_port = 100;
+ s = udp_bind(&local, NULL);
+
+ /* Open the window */
+ win_init(&displ,0,0,79,6);
+ win_frame(&displ,BLACK,WHITE,"Remote",2);
+
+ while (1) {
+ /* Clear the buffer for receiving the packet...*/
+ memset(str, 0, 1999);
+ /*...and receive the packet (block until a packet arrives */
+ n = udp_recvfrom(s, str, &from);
+ win_puts(&displ, str);
+ }
+}
+
+/*
+ This non real-time task reads strings from the keyoard and sends them
+ to the remote host
+*/
+TASK write(void)
+{
+ WIN wr;
+ UDP_ADDR to,local;
+ char str[80],tmp[5],ch;
+ int s;
+ IP_ADDR bindlist[5];
+
+ win_init(&wr,0,7,79,6);
+ win_frame(&wr,BLACK,WHITE,"Local",2);
+
+ /* Create a socket for transitting */
+ ip_str2addr(talk_myipaddr,&(local.s_addr));
+ local.s_port = 101;
+
+ /*
+ If we want the address of the remote host in the ARP table before
+ begginning the transmission (to eliminate a possible source of
+ unpredictability), we can use the bindlist, otherwise we set the
+ second parameter of udp_bind to NULL
+ */
+ ip_str2addr(talk_toipaddr,&(bindlist[0]));
+ memset(&(bindlist[1]), 0, sizeof(IP_ADDR));
+ s = udp_bind(&local, /*bindlist*/NULL);
+
+ ip_str2addr(talk_toipaddr,&(to.s_addr));
+ to.s_port = 100;
+ sprintf(str,"Local IP address %d.%d.%d.%d\n", local.s_addr.ad[0],
+ local.s_addr.ad[1], local.s_addr.ad[2],
+ local.s_addr.ad[3]);
+ win_puts(&dbg,str);
+ sprintf(str,"Talk to %d.%d.%d.%d ",to.s_addr.ad[0],to.s_addr.ad[1],
+ to.s_addr.ad[2],to.s_addr.ad[3]);
+ win_puts(&dbg,str);
+ while (1) {
+ /* Get the string...*/
+ while((ch = keyb_getch(BLOCK)) != 13) {
+ sprintf(tmp,"%c",ch);
+ strcat(str,tmp);
+ win_puts(&wr,tmp);
+ }
+ strcat(str,"\n");
+ win_puts(&wr,"\n");
+ /*...and send it!!! */
+ udp_sendto(s,str,strlen(str)+2,&to);
+ str[0] = 0;
+ }
+}
+
+/* This function is called when the user presses CTRL-C (stops the systems) */
+void esci(KEY_EVT *k)
+{
+ esc = TRUE;
+ exit(1);
+}
+
+int main(int argc, char **argv)
+{
+ KEY_EVT k;
+
+ struct net_model m = net_base;
+
+ NRT_TASK_MODEL m_nrt;
+
+ k.flag = CNTL_BIT;
+ k.scan = KEY_C;
+ k.ascii = 'c';
+ k.status = KEY_PRESSED;
+ keyb_hook(k,esci,FALSE);
+ k.flag = CNTR_BIT;
+ k.scan = KEY_C;
+ k.ascii = 'c';
+ k.status = KEY_PRESSED;
+ keyb_hook(k,esci,FALSE);
+
+ clear();
+ cprintf(" S.Ha.R.K. Talk! Ver. 1.10\n");
+
+ if (argc != 3) {
+ cprintf("S.Ha.R.K. Talk usage: talk fromIP toIP\n");
+ return 0;
+ }
+
+ strcpy(talk_myipaddr, argv[1]);
+ strcpy(talk_toipaddr, argv[2]);
+
+ /* We want a task for TX mutual exclusion */
+ net_setmode(m, TXTASK);
+ /* We use UDP/IP stack */
+ net_setudpip(m, talk_myipaddr, "255.255.255.255");
+ /* OK: let's start the NetLib! */
+ if (net_init(&m) == 1) {
+ cprintf("Net Init OK...\n");
+ } else {
+ cprintf("Net Init Failed...\n");
+ exit(300);
+ }
+
+
+ //dump_irq();
+
+ cprintf("\n\n\n\tPress ENTER\n");
+ while (!esc) {
+ keyb_getcode(&k,BLOCK);
+ if (k.ascii == 13) esc = TRUE;
+ }
+
+ esc = FALSE;
+ clear();
+ win_init(&dbg,0,20,60,3);
+ win_frame(&dbg,BLACK,WHITE,"Debug",2);
+
+ /* Start the sender and receiver tasks...*/
+ nrt_task_default_model(m_nrt);
+ task_activate(task_create("aaa",scrittore,&m_nrt,NULL));
+ task_activate(task_create("bbb",write,&m_nrt,NULL));
+
+ return 0;
+}
Index: demos/branches/xen/newtrace/udp/udptrace.c
===================================================================
--- demos/branches/xen/newtrace/udp/udptrace.c (nonexistent)
+++ demos/branches/xen/newtrace/udp/udptrace.c (revision 1684)
@@ -0,0 +1,141 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Giacomo Guidi <giacomo@gandalf.sssup.it>
+ * Tullio Facchinetti <tullio.facchinetti@unipv.it>
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ * http://robot.unipv.it
+ */
+
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+#include <kernel/kern.h>
+#include <FTrace_chunk.h>
+#include <FTrace_udp.h>
+#include <tracer.h>
+
+extern unsigned int clk_per_msec;
+
+int main(int argc, char **argv)
+{
+
+ long long i;
+
+ int a,b,c;
+ struct timespec start,end,diff;
+ SYS_FLAGS f;
+
+ /**
+ * Create 3 chunks for storing the tracer events.
+ * Explanation of flags:
+ * FTRACE_CHUNK_FLAG_FREE : the chunk is free to use
+ * FTRACE_CHUNK_FLAG_CYC : the chunk stores events in a cyclical way.
+ * When the chunk is full,
+ * it will continue from the head.
+ * FTRACE_CHUNK_FLAG_JTN : when the chunk is full,
+ * it jumps to the next chunk.
+ */
+ a = FTrace_chunk_create(1000000, 1000000, FTRACE_CHUNK_FLAG_FREE | FTRACE_CHUNK_FLAG_CYC);
+ b = FTrace_chunk_create(1000000, 1000000, FTRACE_CHUNK_FLAG_FREE | FTRACE_CHUNK_FLAG_JTN);
+ c = FTrace_chunk_create(1000000, 1000000, FTRACE_CHUNK_FLAG_FREE | FTRACE_CHUNK_FLAG_CYC);
+
+ /**
+ * Link the 3 chunks together.
+ * It is important to link before you can jump from one to another.
+ */
+ FTrace_chunk_link(a,b);
+ FTrace_chunk_link(b,c);
+
+ /** Select the first chunk for saving the events. */
+ FTrace_actual_chunk_select(a);
+
+ kern_gettime(&start);
+
+ /** Start the tracer. */
+ FTrace_enable();
+
+ /** Enable filtering for timer related events. */
+ FTrace_set_filter(FTrace_filter_timer, 1);
+
+ TRACER_LOGEVENT(FTrace_EVT_trace_start,proc_table[exec_shadow].context,clk_per_msec);
+
+ for (i=0;i<10;i++)
+ if (proc_table[i].context != 0) TRACER_LOGEVENT(FTrace_EVT_id,
+ (unsigned short int)proc_table[i].context,i);
+
+ for (i=0;i<1000000000;i++);
+
+ /** Enable filtering for timer related events. */
+ FTrace_set_filter(FTrace_filter_timer, 0);
+
+ /** Change the chunk where the events are stored. */
+ TRACER_LOGEVENT(FTrace_EVT_next_chunk,0,0);
+
+ f = kern_fsave();
+ __asm__("cpuid":::"eax","ebx","ecx","edx");
+ FAST_TRACER_LOGEVENT(FTrace_EVT_ipoint,1000,0);
+ FAST_TRACER_LOGEVENT(FTrace_EVT_ipoint,2000,0);
+ FAST_TRACER_LOGEVENT(FTrace_EVT_ipoint,3000,0);
+ FAST_TRACER_LOGEVENT(FTrace_EVT_ipoint,4000,0);
+ FAST_TRACER_LOGEVENT(FTrace_EVT_ipoint,5000,0);
+ __asm__("cpuid":::"eax","ebx","ecx","edx");
+ kern_frestore(f);
+
+ TRACER_LOGEVENT(FTrace_EVT_ipoint,6000,0);
+
+ for (i=0;i<1000000000;i++);
+
+ /** Store a TFrace stop event. */
+ TRACER_LOGEVENT(FTrace_EVT_trace_stop,0,0);
+
+ /** Stop the tracer. */
+ FTrace_disable();
+ kern_gettime(&end);
+
+ SUBTIMESPEC(&end,&start,&diff);
+
+ cprintf("Logged Time %d s %d us\n",(int)diff.tv_sec,(int)diff.tv_nsec/1000);
+
+ /** Initialize the network for remotely saving the trace. */
+ FTrace_OSD_init_udp(1, "192.168.1.10", "192.168.1.1");
+
+ /**
+ * You may want to save the events to disk. In that case, simply change
+ * the network initialization instruction with the following line:
+ *
+ * FTrace_init_disk_writer("trace.dat", 0, NULL, NULL);
+ *
+ */
+
+ /** Save the chunk. */
+ FTrace_send_chunk(a, 0, FTRACE_CHUNK_FLAG_FREE | FTRACE_CHUNK_FLAG_CYC);
+ FTrace_send_chunk(b, 0, FTRACE_CHUNK_FLAG_FREE | FTRACE_CHUNK_FLAG_JTN);
+
+ return 0;
+
+}
Index: demos/branches/xen/newtrace/udp/initfile.c
===================================================================
--- demos/branches/xen/newtrace/udp/initfile.c (nonexistent)
+++ demos/branches/xen/newtrace/udp/initfile.c (revision 1684)
@@ -0,0 +1,162 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators: Giorgio Buttazzo <giorgio@sssup.it>
+ *
+ * Authors :
+ * Mauro Marinoni <mauro.marinoni@unipv.it>
+ * Tullio Facchinetti <tullio.facchinetti@unipv.it>
+ * (see authors.txt for full list of hartik's authors)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://hartik.sssup.it
+ */
+
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+
+#include <kernel/kern.h>
+
+#include "edf/edf/edf.h"
+#include "cbs/cbs/cbs.h"
+#include "rr/rr/rr.h"
+#include "dummy/dummy/dummy.h"
+#include "intdrive/intdrive/intdrive.h"
+
+#include "sem/sem/sem.h"
+#include "hartport/hartport/hartport.h"
+
+#include <drivers/shark_linuxc26.h>
+#include <drivers/shark_pci26.h>
+#include <drivers/shark_input26.h>
+#include <drivers/shark_keyb26.h>
+
+/*+ sysyem tick in us +*/
+#define TICK 0
+
+/*+ RR tick in us +*/
+#define RRTICK 10000
+
+/*+ Interrupt Server +*/
+#define INTDRIVE_Q 1000
+#define INTDRIVE_U 0.1*MAX_BANDWIDTH
+#define INTDRIVE_FLAG 0
+
+void call_shutdown_task(void *arg);
+int device_drivers_init();
+int device_drivers_close();
+void set_shutdown_task();
+TASK shutdown_task_body(void *arg);
+
+PID shutdown_task_PID = 1;
+
+TIME __kernel_register_levels__(void *arg)
+{
+ struct multiboot_info *mb = (struct multiboot_info *)arg;
+ LEVEL EDF_level;
+
+ INTDRIVE_register_level(INTDRIVE_Q, INTDRIVE_Q, INTDRIVE_U, INTDRIVE_FLAG);
+ EDF_level = EDF_register_level(EDF_ENABLE_ALL);
+ CBS_register_level(CBS_ENABLE_ALL, EDF_level);
+ RR_register_level(RRTICK, RR_MAIN_YES, mb);
+ dummy_register_level();
+
+ SEM_register_module();
+
+ return TICK;
+}
+
+int device_drivers_close() {
+
+ KEYB26_close();
+ INPUT26_close();
+
+ return 0;
+
+}
+
+int device_drivers_init() {
+
+ KEYB_PARMS kparms = BASE_KEYB;
+
+ LINUXC26_register_module(TRUE);
+ PCI26_init();
+ //INPUT26_init();
+
+ /*keyb_def_map(kparms, KEYMAP_IT);*/
+ keyb_def_ctrlC(kparms, NULL);
+ KEYB26_init(&kparms);
+
+ return 0;
+}
+
+TASK shutdown_task_body(void *arg) {
+
+ device_drivers_close();
+ sys_shutdown_message("-- S.Ha.R.K. Closed --\n");
+ return NULL;
+}
+
+#define SHUTDOWN_TIMEOUT_SEC 3
+
+void set_shutdown_task() {
+
+ NRT_TASK_MODEL nrt;
+
+ nrt_task_default_model(nrt);
+ nrt_task_def_system(nrt);
+
+ shutdown_task_PID = task_create("Shutdown Task", shutdown_task_body, &nrt, NULL);
+ if (shutdown_task_PID == NIL) {
+ sys_shutdown_message("Error: Cannot create shutdown task\n");
+ exit(1);
+ }
+
+}
+
+void call_shutdown_task(void *arg) {
+
+ struct timespec t;
+
+ sys_gettime(&t);
+ t.tv_sec += SHUTDOWN_TIMEOUT_SEC;
+
+ /* Emergency timeout to exit from RUNLEVEL_SHUTDOWN */
+ kern_event_post(&t,(void *)((void *)sys_abort_shutdown),(void *)0);
+
+ task_activate(shutdown_task_PID);
+}
+
+TASK __init__(void *arg)
+{
+ struct multiboot_info *mb = (struct multiboot_info *)arg;
+
+ HARTPORT_init();
+
+ set_shutdown_task();
+
+ device_drivers_init();
+
+ sys_atrunlevel(call_shutdown_task, NULL, RUNLEVEL_SHUTDOWN);
+
+ __call_main__(mb);
+
+ return (void *)0;
+}
Index: demos/branches/xen/newtrace/udp/makefile
===================================================================
--- demos/branches/xen/newtrace/udp/makefile (nonexistent)
+++ demos/branches/xen/newtrace/udp/makefile (revision 1684)
@@ -0,0 +1,16 @@
+#
+#
+#
+
+ifndef BASE
+BASE=../../..
+endif
+include $(BASE)/config/config.mk
+
+PROGS = udptrace
+
+include $(BASE)/config/example.mk
+
+udptrace:
+ make -f $(SUBMAKE) BASE=$(BASE) APP=udptrace INIT= OTHEROBJS="initfile.o" OTHERINCL= SHARKOPT="__LINUXC26__ __PCI__ __INPUT__ __NET__"
+
Index: demos/branches/xen/newtrace/instr/instr.c
===================================================================
--- demos/branches/xen/newtrace/instr/instr.c (nonexistent)
+++ demos/branches/xen/newtrace/instr/instr.c (revision 1684)
@@ -0,0 +1,168 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Giacomo Guidi <giacomo@gandalf.sssup.it>
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+/* The tracer instrumentation ideas come from the York PWCET analisys tool
+ *
+ * Real-Time System Group
+ * University of York
+ *
+ */
+
+#include <kernel/kern.h>
+#include <time.h>
+#include <tracer.h>
+
+#define PWCET_Automatic_Ipoint(a) TRACER_LOGEVENT(FTrace_EVT_ipoint,(a),0);
+
+extern int instrumented_function();
+
+TASK ext_call(void)
+{
+
+ while(1) {
+
+ instrumented_function();
+
+ task_testcancel();
+ task_endcycle();
+
+ }
+
+ return 0;
+
+}
+
+#define TASKMAX 4
+#define TASKDELAY 1000000
+#define TASKDELAY_DELTA 100000
+
+int exec_code() {
+
+ int num;
+ struct timespec t;
+
+ HARD_TASK_MODEL m;
+ PID p;
+
+ clear();
+
+ cprintf("Start");
+
+ hard_task_default_model(m);
+ hard_task_def_mit(m,200000 + rand() % 100000);
+ hard_task_def_wcet(m,40000);
+ hard_task_def_group(m,2);
+
+ num = 0;
+
+ while(num < TASKMAX) {
+
+ cprintf(".");
+
+ p = task_create("Instr",ext_call,&m,NULL);
+ if (p == -1) {
+ sys_shutdown_message("Could not create task <instr> ...");
+ exit(1);
+ }
+
+ num++;
+ task_activate(p);
+
+ usleep(TASKDELAY + rand() % TASKDELAY_DELTA);
+
+ }
+
+ do {
+ sys_gettime(&t);
+ } while (t.tv_sec < 12);
+
+ cprintf("End\n");
+
+ return 0;
+
+}
+
+extern unsigned int clk_per_msec;
+
+int main(int argc, char **argv)
+{
+
+ int a,b,c,i;
+ struct timespec t,start,end,diff;
+
+ srand(sys_gettime(NULL));
+
+ a = FTrace_chunk_create(1000000, 1000000, FTRACE_CHUNK_FLAG_FREE | FTRACE_CHUNK_FLAG_CYC);
+ b = FTrace_chunk_create(1000000, 1000000, FTRACE_CHUNK_FLAG_FREE | FTRACE_CHUNK_FLAG_JTN);
+ c = FTrace_chunk_create(1000000, 1000000, FTRACE_CHUNK_FLAG_FREE | FTRACE_CHUNK_FLAG_CYC);
+
+ FTrace_chunk_link(a,b);
+ FTrace_chunk_link(b,c);
+
+ FTrace_actual_chunk_select(a);
+
+ kern_gettime(&start);
+ FTrace_enable();
+
+ TRACER_LOGEVENT(FTrace_EVT_trace_start,proc_table[exec_shadow].context,clk_per_msec);
+
+ for (i=0;i<10;i++)
+ if (proc_table[i].context != 0) TRACER_LOGEVENT(FTrace_EVT_id,
+ (unsigned short int)proc_table[i].context,i);
+
+ exec_code();
+
+ TRACER_LOGEVENT(FTrace_EVT_trace_stop,0,0);
+
+ FTrace_disable();
+ kern_gettime(&end);
+
+ SUBTIMESPEC(&end,&start,&diff);
+
+ printf_xy(1,21,WHITE,"Logged Time %d s %d us",(int)diff.tv_sec,(int)diff.tv_nsec/1000);
+
+ group_kill(2);
+
+ do {
+ sys_gettime(&t);
+ } while (t.tv_sec < 12);
+
+ FTrace_OSD_init_udp(1, "192.168.0.15", "192.168.0.12");
+
+ FTrace_send_chunk(a, 0, FTRACE_CHUNK_FLAG_FREE | FTRACE_CHUNK_FLAG_CYC);
+
+ return 0;
+
+}
+
Index: demos/branches/xen/newtrace/instr/bezier.c
===================================================================
--- demos/branches/xen/newtrace/instr/bezier.c (nonexistent)
+++ demos/branches/xen/newtrace/instr/bezier.c (revision 1684)
@@ -0,0 +1,127 @@
+
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+#include <kernel/kern.h>
+#include <tracer.h>
+
+#define PWCET_Automatic_Ipoint(a) TRACER_LOGEVENT(FTrace_EVT_ipoint,(a),0);
+
+/* here are the bezier curves defined
+format:
+{startpoint, endpoint, controlpoint1, controlpoint}
+.
+.
+. */
+int curveno = 20;
+int data[20][4][2] = {
+ {{123,321},{ 23,432},{345,120},{123, 98}},
+ {{567, 31},{ 23, 24},{ 35,421},{123,398}},
+ {{ 0, 21},{623,532},{145,323},{153, 68}},
+ {{253,321},{ 23,432},{745,525},{423,198}},
+ {{123,456},{ 23,482},{ 0,123},{123,128}},
+ {{322, 21},{223,232},{ 45,224},{123,98}},
+ {{423, 32},{123,332},{144,329},{123,98}},
+ {{276, 35},{ 23,492},{476,423},{123,98}},
+ {{783,121},{723,139},{ 78,528},{123,98}},
+ {{723,221},{623, 98},{734,683},{123,98}},
+ {{ 60,421},{523,132},{364,753},{123,98}},
+ {{100,521},{423,432},{633,623},{123,98}},
+ {{ 23,371},{323,599},{343,533},{123,98}},
+ {{123,123},{123, 0},{343,403},{123,98}},
+ {{253,321},{490, 32},{347,393},{123,98}},
+ {{ 68,321},{260,272},{674,283},{123,98}},
+ {{500,321},{245,373},{ 98,173},{123,98}},
+ {{423,321},{198,532},{306, 63},{123,98}},
+ {{197,321},{203,432},{307,443},{123,98}},
+ {{143,321},{293,132},{334,393},{123,98}}
+};
+#define STEPWIDTH 0.01 /* draws 1/STEPWIDTH +1 points between SP and EP */
+#define XSIZE 800
+#define YSIZE 600
+
+char screen[YSIZE][XSIZE];
+int xco[4],yco[4];
+
+int init()
+{
+ int y,x;
+
+ /*initialize screen*/
+ for (x = 0;x < XSIZE;x++) {
+ for (y = 0;y < YSIZE;y++) {
+ screen[y][x] = 255; /*white*/
+ }
+ }
+
+ return 0;
+
+}
+
+void rand_init()
+{
+ int i,j,x,y;
+ for (i=0;i<20;i++)
+ for (j=0;j<4;j++) {
+ x=rand()%800;
+ y=rand()%600;
+ data[i][j][0]=x;
+ data[i][j][1]=y;
+ }
+}
+
+int bezier()
+{
+
+ int i,y,x;
+ float k;
+
+ init();
+
+ for (i = 0;i < curveno;i++) {
+ xco[3] = data[i][0][0];
+ yco[3] = data[i][0][1];
+ xco[2] = 3*(data[i][2][0] - data[i][0][0]);
+ yco[2] = 3*(data[i][2][1] - data[i][0][1]);
+ xco[1] = 3*(data[i][3][0] - data[i][2][0]) - xco[2];
+ yco[1] = 3*(data[i][3][1] - data[i][2][1]) - yco[2];
+ xco[0] = data[i][1][0] - data[i][0][0] - xco[2]- xco[1];
+ yco[0] = data[i][1][1] - data[i][0][1] - yco[2]- yco[1];
+
+ /*scan curve for t = 0 to t = 1 with STEPWIDTH*/
+ for (k = 0;k <=1;k+=STEPWIDTH) { /* PAN_FIXED_LOOP PAN_VARPATH */
+ x = (int)(((float)xco[0]*k*k*k)+((float)xco[1]*k*k)+((float)xco[2]*k)+(float)xco[3]);
+ y = (int)(((float)yco[0]*k*k*k)+((float)yco[1]*k*k)+((float)yco[2]*k)+(float)yco[3]);
+ if ((x < XSIZE)&&(x > 0)&&(y < YSIZE)&&(y > 0)) {
+ /*write dot to screen*/
+ screen[y][x] = 0; /*black*/
+ }
+ }
+ }
+
+ return 0;
+}
+
+int instrumented_function() {
+
+ rand_init();
+
+ bezier();
+
+ return 0;
+}
+
Index: demos/branches/xen/newtrace/instr/bezier_i.c
===================================================================
--- demos/branches/xen/newtrace/instr/bezier_i.c (nonexistent)
+++ demos/branches/xen/newtrace/instr/bezier_i.c (revision 1684)
@@ -0,0 +1,137 @@
+
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+#include <kernel/kern.h>
+#include <tracer.h>
+
+#define PWCET_Automatic_Ipoint(a) TRACER_LOGEVENT(FTrace_EVT_ipoint,(a),0);
+
+/* here are the bezier curves defined
+format:
+{startpoint, endpoint, controlpoint1, controlpoint}
+.
+.
+. */
+int curveno = 20;
+int data[20][4][2] = {
+ {{123,321},{ 23,432},{345,120},{123, 98}},
+ {{567, 31},{ 23, 24},{ 35,421},{123,398}},
+ {{ 0, 21},{623,532},{145,323},{153, 68}},
+ {{253,321},{ 23,432},{745,525},{423,198}},
+ {{123,456},{ 23,482},{ 0,123},{123,128}},
+ {{322, 21},{223,232},{ 45,224},{123,98}},
+ {{423, 32},{123,332},{144,329},{123,98}},
+ {{276, 35},{ 23,492},{476,423},{123,98}},
+ {{783,121},{723,139},{ 78,528},{123,98}},
+ {{723,221},{623, 98},{734,683},{123,98}},
+ {{ 60,421},{523,132},{364,753},{123,98}},
+ {{100,521},{423,432},{633,623},{123,98}},
+ {{ 23,371},{323,599},{343,533},{123,98}},
+ {{123,123},{123, 0},{343,403},{123,98}},
+ {{253,321},{490, 32},{347,393},{123,98}},
+ {{ 68,321},{260,272},{674,283},{123,98}},
+ {{500,321},{245,373},{ 98,173},{123,98}},
+ {{423,321},{198,532},{306, 63},{123,98}},
+ {{197,321},{203,432},{307,443},{123,98}},
+ {{143,321},{293,132},{334,393},{123,98}}
+};
+#define STEPWIDTH 0.01 /* draws 1/STEPWIDTH +1 points between SP and EP */
+#define XSIZE 800
+#define YSIZE 600
+
+char screen[YSIZE][XSIZE];
+int xco[4],yco[4];
+
+void init()
+{ /*FB1*/PWCET_Automatic_Ipoint( 3157); /*FB2*/{
+ int y,x;
+
+
+ { /*forx1*/for (x = 0; x < XSIZE;x++) { /*forx2*/PWCET_Automatic_Ipoint( 3158); /*forx3*/{
+ { /*forx1*/for (y = 0;y < YSIZE;y++) { /*forx2*/PWCET_Automatic_Ipoint( 3159); /*forx3*/{
+ screen[y][x] = 255;
+ } } /*forx4*/PWCET_Automatic_Ipoint( 3160); /*forx5*/ } /*forx6*/
+ } } /*forx4*/PWCET_Automatic_Ipoint( 3161); /*forx5*/ } /*forx6*/
+
+}PWCET_Automatic_Ipoint( 3162); /*FB3*/} /*FB4*/
+
+void rand_init()
+{ /*FB1*/PWCET_Automatic_Ipoint( 33519); /*FB2*/{
+ int i,j,x,y;
+
+
+
+ { /*forx1*/for (i=0;i<20;i++)
+ { /*forx1*/ { /*forx2*/PWCET_Automatic_Ipoint( 33520); /*forx3*/for (j=0;j<4;j++) { /*forx2*/PWCET_Automatic_Ipoint( 33521); /*forx3*/{
+ x=rand()%XSIZE;
+ y=rand()%YSIZE;
+ data[i][j][0]=x;
+ data[i][j][1]=y;
+ } } /*forx4*/PWCET_Automatic_Ipoint( 33522); /*forx5*/ } /*forx6*/ } /*forx4*/PWCET_Automatic_Ipoint( 33523); /*forx5*/ } /*forx6*/
+
+
+}PWCET_Automatic_Ipoint( 33524); /*FB3*/} /*FB4*/
+
+void pepe(){ /*FB1*/PWCET_Automatic_Ipoint( 64662); /*FB2*/{
+ int a;
+
+ a=a+2;
+ }PWCET_Automatic_Ipoint( 64663); /*FB3*/} /*FB4*/
+
+int bezier()
+{ /*FB1*/PWCET_Automatic_Ipoint( 23955); /*FB2*/{
+ int i,y,x;
+ float k;
+ init();
+
+ { /*forx1*/for (i = 0;i < curveno;i++) { /*forx2*/PWCET_Automatic_Ipoint( 23956); /*forx3*/{
+ xco[3] = data[i][0][0];
+ yco[3] = data[i][0][1];
+ xco[2] = 3*(data[i][2][0] - data[i][0][0]);
+ yco[2] = 3*(data[i][2][1] - data[i][0][1]);
+ xco[1] = 3*(data[i][3][0] - data[i][2][0]) - xco[2];
+ yco[1] = 3*(data[i][3][1] - data[i][2][1]) - yco[2];
+ xco[0] = data[i][1][0] - data[i][0][0] - xco[2]- xco[1];
+ yco[0] = data[i][1][1] - data[i][0][1] - yco[2]- yco[1];
+
+
+ { /*forx1*/for (k = 0;k <=1;k+=0.01) { /*forx2*/PWCET_Automatic_Ipoint( 23957); /*forx3*/{
+ x = (int)(((float)xco[0]*k*k*k)+((float)xco[1]*k*k)+((float)xco[2]*k)+(float)xco[3]);
+ y = (int)(((float)yco[0]*k*k*k)+((float)yco[1]*k*k)+((float)yco[2]*k)+(float)yco[3]);
+ if ((x < XSIZE)&&(x > 0)&&(y < YSIZE)&&(y > 0)) { /*if1*/ PWCET_Automatic_Ipoint( 23958); /*if2*/ {
+
+ screen[y][x] = 0;
+ } } /*if3*/ PWCET_Automatic_Ipoint( 23959); /*ifxxx2*/
+ } } /*forx4*/PWCET_Automatic_Ipoint( 23960); /*forx5*/ } /*forx6*/
+ } } /*forx4*/PWCET_Automatic_Ipoint( 23961); /*forx5*/ } /*forx6*/
+ if (1==0) { /*if1*/ PWCET_Automatic_Ipoint( 23962); /*if2*/ {
+ k++;
+ pepe();
+ } } /*if3*/ PWCET_Automatic_Ipoint( 23963); /*ifxxx2*/
+
+
+ { /*returnE1*/PWCET_Automatic_Ipoint( 23964); /*returnE2*/return 0; } /*returnE3*/
+}PWCET_Automatic_Ipoint( 23965); /*FB3*/} /*FB4*/
+
+
+int instrumented_function(){ /*FB1*/PWCET_Automatic_Ipoint( 18549); /*FB2*/{
+
+ rand_init();
+ bezier();
+ { /*returnE1*/PWCET_Automatic_Ipoint( 18550); /*returnE2*/return 0; } /*returnE3*/
+}PWCET_Automatic_Ipoint( 18551); /*FB3*/} /*FB4*/
Index: demos/branches/xen/newtrace/instr/initfile.c
===================================================================
--- demos/branches/xen/newtrace/instr/initfile.c (nonexistent)
+++ demos/branches/xen/newtrace/instr/initfile.c (revision 1684)
@@ -0,0 +1,153 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators: Giorgio Buttazzo <giorgio@sssup.it>
+ *
+ * Authors :
+ * Mauro Marinoni <mauro.marinoni@unipv.it>
+ * Tullio Facchinetti <tullio.facchinetti@unipv.it>
+ * (see authors.txt for full list of hartik's authors)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://hartik.sssup.it
+ */
+
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+
+#include <kernel/kern.h>
+
+#include "edf/edf/edf.h"
+#include "cbs/cbs/cbs.h"
+#include "rr/rr/rr.h"
+#include "dummy/dummy/dummy.h"
+#include "intdrive/intdrive/intdrive.h"
+
+#include "sem/sem/sem.h"
+#include "hartport/hartport/hartport.h"
+
+#include <drivers/shark_linuxc26.h>
+#include <drivers/shark_pci26.h>
+#include <drivers/shark_input26.h>
+#include <drivers/shark_keyb26.h>
+
+/*+ sysyem tick in us +*/
+#define TICK 0
+
+/*+ RR tick in us +*/
+#define RRTICK 10000
+
+/*+ Interrupt Server +*/
+#define INTDRIVE_Q 1000
+#define INTDRIVE_U 0.1*MAX_BANDWIDTH
+#define INTDRIVE_FLAG 0
+
+void call_shutdown_task(void *arg);
+int device_drivers_init();
+int device_drivers_close();
+void set_shutdown_task();
+TASK shutdown_task_body(void *arg);
+
+PID shutdown_task_PID = 1;
+
+TIME __kernel_register_levels__(void *arg)
+{
+ struct multiboot_info *mb = (struct multiboot_info *)arg;
+ LEVEL EDF_level;
+
+ INTDRIVE_register_level(INTDRIVE_Q, INTDRIVE_Q, INTDRIVE_U, INTDRIVE_FLAG);
+ EDF_level = EDF_register_level(EDF_ENABLE_ALL);
+ CBS_register_level(CBS_ENABLE_ALL, EDF_level);
+ RR_register_level(RRTICK, RR_MAIN_YES, mb);
+ dummy_register_level();
+
+ SEM_register_module();
+
+ return TICK;
+}
+
+int device_drivers_close() {
+
+ return 0;
+
+}
+
+int device_drivers_init() {
+
+ LINUXC26_register_module(TRUE);
+ PCI26_init();
+
+ return 0;
+}
+
+TASK shutdown_task_body(void *arg) {
+
+ device_drivers_close();
+ sys_shutdown_message("-- S.Ha.R.K. Closed --\n");
+
+ return NULL;
+}
+
+#define SHUTDOWN_TIMEOUT_SEC 3
+
+void set_shutdown_task() {
+
+ NRT_TASK_MODEL nrt;
+
+ nrt_task_default_model(nrt);
+ nrt_task_def_system(nrt);
+
+ shutdown_task_PID = task_create("Shutdown Task", shutdown_task_body, &nrt, NULL);
+ if (shutdown_task_PID == NIL) {
+ sys_shutdown_message("Error: Cannot create shutdown task\n");
+ exit(1);
+ }
+
+}
+
+void call_shutdown_task(void *arg) {
+
+ struct timespec t;
+
+ sys_gettime(&t);
+ t.tv_sec += SHUTDOWN_TIMEOUT_SEC;
+
+ /* Emergency timeout to exit from RUNLEVEL_SHUTDOWN */
+ kern_event_post(&t,(void *)((void *)sys_abort_shutdown),(void *)0);
+
+ task_activate(shutdown_task_PID);
+}
+
+TASK __init__(void *arg)
+{
+ struct multiboot_info *mb = (struct multiboot_info *)arg;
+
+ HARTPORT_init();
+
+ set_shutdown_task();
+
+ device_drivers_init();
+
+ sys_atrunlevel(call_shutdown_task, NULL, RUNLEVEL_SHUTDOWN);
+
+ __call_main__(mb);
+
+ return (void *)0;
+}
Index: demos/branches/xen/newtrace/instr/makefile
===================================================================
--- demos/branches/xen/newtrace/instr/makefile (nonexistent)
+++ demos/branches/xen/newtrace/instr/makefile (revision 1684)
@@ -0,0 +1,17 @@
+#
+#
+#
+
+ifndef BASE
+BASE=../../..
+endif
+include $(BASE)/config/config.mk
+
+PROGS = instr
+
+include $(BASE)/config/example.mk
+
+instr:
+ make -f $(SUBMAKE) BASE=$(BASE) APP=instr INIT= OTHEROBJS="initfile.o bezier.o" OTHERINCL= SHARKOPT="__LINUXC26__ __PCI__ __INPUT__ __NET__"
+ #make -f $(SUBMAKE) BASE=$(BASE) APP=instr INIT= OTHEROBJS="initfile.o bezier_i.o" OTHERINCL= SHARKOPT="__LINUXC26__ __PCI__ __INPUT__ __NET__
+
Index: demos/branches/xen/newtrace/utils/udpdump.c
===================================================================
--- demos/branches/xen/newtrace/utils/udpdump.c (nonexistent)
+++ demos/branches/xen/newtrace/utils/udpdump.c (revision 1684)
@@ -0,0 +1,151 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Giacomo Guidi <giacomo@gandalf.sssup.it>
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+#include <netinet/in.h>
+
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <arpa/inet.h>
+#include <netdb.h>
+#include <stdio.h>
+#include <unistd.h>/* close() */
+#include <stdlib.h>
+#include <signal.h>
+#include <string.h>
+
+#define SERVER_PORT 20000
+#define MAX_MSG 10000
+
+struct tracer_udp_header {
+ char id[12];
+ unsigned int pkt_number;
+ unsigned int events;
+ unsigned int size;
+};
+
+FILE *output_file;
+
+int miss;
+
+void close_and_exit()
+{
+
+ printf("Closing...\n");
+
+ if (miss == 1) printf("Possible error receiving packets !\n");
+
+ fclose(output_file);
+
+ exit(0);
+
+}
+
+int main(int argc, char *argv[])
+{
+ int sd, rc, n, cliLen,count;
+ struct sockaddr_in cliAddr, servAddr;
+ char msg[MAX_MSG];
+
+ struct tracer_udp_header *pkt_head = (struct tracer_udp_header *)(msg);
+
+ if (argc < 2) {
+ printf("%s: Enter the output file name [%s filename]\n",argv[0],argv[0]);
+ exit(1);
+ }
+
+ // socket creation
+ sd = socket(AF_INET, SOCK_DGRAM, 0);
+ if(sd < 0) {
+ printf("%s: cannot open socket \n",argv[0]);
+ exit(1);
+ }
+
+ output_file = fopen(argv[1],"w+b");
+ if (output_file == NULL) {
+ printf("%s: Cannot open the file\n",argv[0]);
+ exit(1);
+ }
+
+ // bind local server port
+ servAddr.sin_family = AF_INET;
+
+ servAddr.sin_addr.s_addr = htonl(INADDR_ANY);
+ servAddr.sin_port = htons(SERVER_PORT);
+
+ rc = bind (sd, (struct sockaddr *)&servAddr,sizeof(servAddr));
+ if(rc < 0) {
+ printf("%s: cannot bind port number %d \n",
+ argv[0], SERVER_PORT);
+ exit(1);
+ }
+
+ signal(SIGINT, close_and_exit);
+
+ count = 1;
+ miss = 0;
+
+ while(1) {
+
+ printf("Wait packet...\n");
+
+ // receive message
+ cliLen = sizeof(cliAddr);
+ n = recvfrom(sd, msg, MAX_MSG, 0,(struct sockaddr *)&cliAddr, &cliLen);
+
+ if (strncmp(pkt_head->id,"TRACER",6)) continue;
+
+ printf("Received %d, length %d(%d), %d tracer events.\n",
+ pkt_head->pkt_number, n, pkt_head->size, pkt_head->events);
+
+ if (pkt_head->pkt_number != count) {
+ printf("Miss Packet !!!\n");
+ miss = 1;
+ }
+
+ if (n > 0) {
+
+ count++;
+
+ fwrite((void *)(msg+sizeof(struct tracer_udp_header)),n-sizeof(struct tracer_udp_header),1,output_file);
+
+ }
+
+ }
+
+ fclose(output_file);
+
+ return 0;
+
+}
+
Index: demos/branches/xen/newtrace/utils/extract.c
===================================================================
--- demos/branches/xen/newtrace/utils/extract.c (nonexistent)
+++ demos/branches/xen/newtrace/utils/extract.c (revision 1684)
@@ -0,0 +1,1131 @@
+
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+#include <unistd.h>
+#include <string.h>
+
+#define MAXCONTEXT 100
+#define MAXJOB 300000
+
+#define INT_CTX 1
+#define INT_PID 9999
+#define PID_NO_DEF -1
+#define SERVER_NO_DEF -1
+
+#define BACKGROUND 0
+#define PERIODICAL 1
+#define INTERRUPT 2
+
+#define DRAW_NUM 1000
+
+#define DISABLE_PLOT
+
+struct ctx_exec {
+ int ctx;
+ unsigned long long dtsc;
+ unsigned long long dnsec;
+ unsigned long long tsc_start;
+ unsigned long long nsec_start;
+};
+
+struct ctx_to_pid {
+ int ctx;
+ int pid;
+};
+
+struct ctx_server {
+ int ctx;
+ int server_id;
+
+};
+
+struct task_event {
+ int ctx;
+ unsigned long long tsc;
+ unsigned long long nsec;
+};
+
+struct server_event {
+ int server_id;
+ unsigned long long tsc;
+ unsigned long long nsec;
+};
+
+void Error(int num, int line) {
+ printf("Finite-State machine error %d at line %d\n",num,line);
+ exit(2);
+}
+
+int context_total = 0,endcycle_total = 0,job_total = 0,exec_total = 0;
+struct ctx_exec *exec_list;
+struct ctx_to_pid *context_list;
+struct task_event *endcycle_list;
+struct task_event *deadline_miss_list;
+struct task_event *wcet_miss_list;
+struct task_event *act_list;
+struct ctx_exec *job_list;
+struct ctx_server *ctx_server_list;
+
+int server_exec_total = 0, server_end_total=0, server_act_total=0, ctx_server_total = 0, server_total=0;
+struct server_event *act_server_list;
+struct server_event *server_budget_end_list;
+
+int deadline_miss = 0, wcet_miss = 0, act_total = 0;
+
+unsigned int clk_per_msec = 0;
+unsigned int skip_clk_per_msec = 0;
+
+unsigned long long log_start_tsc = 0;
+unsigned long long log_end_tsc = 0;
+unsigned long long total_tsc = 0;
+unsigned long long total_nsec = 0;
+
+/* Data for gnuplot external call */
+int draw_data[DRAW_NUM+1];
+
+int gnuplot_clear() {
+
+ int i;
+
+ for (i=0;i<DRAW_NUM;i++)
+ draw_data[i] = 0;
+
+ return 0;
+
+}
+
+int gnuplot_draw(char *title,unsigned long long max_limit,int type) {
+
+#ifndef DISABLE_PLOT
+
+ FILE *gnuplot_data, *gnuplot_command;
+ char temp_name[30];
+ int i,pid,*current_mem;
+
+ current_mem = malloc(sizeof(int)*(DRAW_NUM+1));
+ memcpy(current_mem,draw_data,sizeof(int)*(DRAW_NUM+1));
+
+ pid = fork();
+ if (pid == 0) {
+
+ srand(getpid());
+
+ sprintf(temp_name,"/tmp/pwcet%d",rand()%10000);
+
+ gnuplot_data = fopen(temp_name,"w");
+ gnuplot_command = popen("gnuplot -persist","w");
+
+ for (i=0;i<DRAW_NUM;i++)
+ fprintf(gnuplot_data,"%f\t%f\n",(double)i * (double)max_limit / (double)DRAW_NUM / 1000.0,(float)(current_mem[i]));
+
+ fflush(gnuplot_data);
+ fclose(gnuplot_data);
+
+ fprintf(gnuplot_command,"set xlabel \"Time [us]\"\n");
+ if (type == 0) {
+ fprintf(gnuplot_command,"set ylabel \"Frequency [#]\"\n");
+
+ fprintf(gnuplot_command,"plot \"%s\" using 1:2 title \"%s\" with lines\n",temp_name,title);
+ fflush(gnuplot_command);
+ } else {
+ fprintf(gnuplot_command,"set ylabel \"Time [us]\"\n");
+
+ fprintf(gnuplot_command,"plot \"%s\" using 1:2 title \"%s\" with lines\n",temp_name,title);
+ fflush(gnuplot_command);
+ }
+
+ pclose(gnuplot_command);
+ exit(0);
+
+ }
+
+#endif
+
+ return 0;
+
+}
+
+int stats_from_execs(int ctx_num, unsigned long long *tot_nsec,
+ unsigned long long *min_nsec,
+ unsigned long long *mean_nsec,
+ unsigned long long *max_nsec,
+ unsigned long long *first_nsec,
+ int *number) {
+
+ unsigned long long temp_nsec;
+ int k,i;
+
+ temp_nsec = 0;
+ *max_nsec = 0;
+ *mean_nsec = 0;
+ *min_nsec = 0xFFFFFFFF;
+ *first_nsec = 0;
+ k = 0;
+ for (i=0;i<exec_total;i++)
+ if (exec_list[i].ctx == context_list[ctx_num].ctx) {
+ if (*first_nsec == 0) *first_nsec = exec_list[i].nsec_start;
+ if (exec_list[i].dnsec > *max_nsec) *max_nsec = exec_list[i].dnsec;
+ if (exec_list[i].dnsec < *min_nsec) *min_nsec = exec_list[i].dnsec;
+ temp_nsec += exec_list[i].dnsec;
+ k++;
+ }
+
+ *number = k;
+ *tot_nsec = temp_nsec;
+ if (k != 0) *mean_nsec = temp_nsec / k;
+
+ return 0;
+
+}
+
+int stats_from_jobs(int ctx_num, unsigned long long *tot_nsec,
+ unsigned long long *min_nsec,
+ unsigned long long *mean_nsec,
+ unsigned long long *max_nsec,
+ unsigned long long *first_nsec,
+ int *number) {
+
+ unsigned long long temp_nsec;
+ int k,i;
+
+ temp_nsec = 0;
+ *max_nsec = 0;
+ *mean_nsec = 0;
+ *min_nsec = 0xFFFFFFFF;
+ *first_nsec = 0;
+ k = 0;
+ for (i=0;i<job_total;i++)
+ if (job_list[i].ctx == context_list[ctx_num].ctx) {
+ if (*first_nsec == 0) *first_nsec = job_list[i].nsec_start;
+ if (job_list[i].dnsec > *max_nsec) *max_nsec = job_list[i].dnsec;
+ if (job_list[i].dnsec < *min_nsec) *min_nsec = job_list[i].dnsec;
+ temp_nsec += job_list[i].dnsec;
+ k++;
+ }
+
+ *number = k;
+ *tot_nsec = temp_nsec;
+ if (k != 0) *mean_nsec = temp_nsec / k;
+
+ return 0;
+
+}
+
+int arr_stats_from_execs(int ctx_num, unsigned long long *min_nsec,
+ unsigned long long *mean_nsec,
+ unsigned long long *max_nsec) {
+
+ unsigned long long last_start,temp_nsec,delta_start;
+ int i,k;
+
+ last_start = 0;
+ temp_nsec = 0;
+ *max_nsec = 0;
+ *min_nsec = 0xFFFFFFFF;
+ *mean_nsec = 0;
+ k = 0;
+ for (i=0;i<exec_total;i++)
+ if (exec_list[i].ctx == context_list[ctx_num].ctx) {
+ if (last_start == 0) {
+ last_start = exec_list[i].nsec_start;
+ } else {
+ delta_start = exec_list[i].nsec_start - last_start;
+ if (delta_start > *max_nsec) *max_nsec = delta_start;
+ if (delta_start < *min_nsec) *min_nsec = delta_start;
+ temp_nsec += delta_start;
+ k++;
+ last_start = exec_list[i].nsec_start;
+ }
+ }
+
+ if (k != 0) *mean_nsec = temp_nsec / k;
+
+ return 0;
+
+}
+
+int arr_stats_from_jobs(int ctx_num, unsigned long long *min_nsec,
+ unsigned long long *mean_nsec,
+ unsigned long long *max_nsec) {
+
+ unsigned long long last_start,temp_nsec,delta_start;
+ int i,k;
+
+ last_start = 0;
+ temp_nsec = 0;
+ *max_nsec = 0;
+ *min_nsec = 0xFFFFFFFF;
+ *mean_nsec = 0;
+ k = 0;
+ for (i=0;i<job_total;i++)
+ if (job_list[i].ctx == context_list[ctx_num].ctx) {
+ if (last_start == 0) {
+ last_start = job_list[i].nsec_start;
+ } else {
+ delta_start = job_list[i].nsec_start - last_start;
+ if (delta_start > *max_nsec) *max_nsec = delta_start;
+ if (delta_start < *min_nsec) *min_nsec = delta_start;
+ temp_nsec += delta_start;
+ k++;
+ last_start = job_list[i].nsec_start;
+ }
+ }
+
+ if (k != 0) *mean_nsec = temp_nsec / k;
+
+ return 0;
+
+}
+
+int plot_exec_demand_function(int ctx_num, char *pidstr) {
+
+ unsigned long long max_limit;
+ char tmpstr[50];
+ int i;
+
+ gnuplot_clear();
+
+ max_limit = total_nsec;
+
+ for (i=0;i<exec_total;i++)
+ if (exec_list[i].ctx == context_list[ctx_num].ctx) {
+ int h1,h2,h3;
+
+ h1 = exec_list[i].nsec_start * DRAW_NUM / max_limit;
+ h2 = (exec_list[i].nsec_start+exec_list[i].dnsec) * DRAW_NUM / max_limit;
+ for (h3=h1;h3<h2;h3++)
+ if (h3 <= DRAW_NUM) draw_data[h3] += exec_list[i].dnsec/1000*(h3-h1)/(h2-h1);
+ for (h3=h2;h3<=DRAW_NUM;h3++)
+ if (h3 <= DRAW_NUM) draw_data[h3] += exec_list[i].dnsec/1000;
+
+ }
+
+ sprintf(tmpstr,"Ctx [%d:%s] Demand-Function",context_list[ctx_num].ctx,pidstr);
+ gnuplot_draw(tmpstr,max_limit,1);
+
+ return 0;
+
+}
+
+int plot_exec_c_distrib(int ctx_num, unsigned long long max_nsec, char *pidstr) {
+
+ unsigned long long max_limit;
+ char tmpstr[50];
+ int i,h;
+
+ if (max_nsec == 0) return 0;
+
+ gnuplot_clear();
+
+ max_limit = max_nsec;
+
+ for (i=0;i<exec_total;i++)
+ if (exec_list[i].ctx == context_list[ctx_num].ctx) {
+ h = exec_list[i].dnsec * DRAW_NUM / max_limit;
+ if (h <= DRAW_NUM) draw_data[h]++;
+ }
+
+ sprintf(tmpstr,"Ctx [%d:%s] Exec C-dist",context_list[ctx_num].ctx,pidstr);
+ gnuplot_draw(tmpstr,max_limit,0);
+
+ return 0;
+
+}
+
+int plot_job_c_distrib(int ctx_num, unsigned long long max_nsec, char *pidstr) {
+
+ unsigned long long max_limit;
+ char tmpstr[50];
+ int i,h;
+
+ if (max_nsec == 0) return 0;
+
+ gnuplot_clear();
+
+ max_limit = max_nsec;
+
+ for (i=0;i<job_total;i++)
+ if (job_list[i].ctx == context_list[ctx_num].ctx) {
+ h = job_list[i].dnsec * DRAW_NUM / max_limit;
+ if (h <= DRAW_NUM) draw_data[h]++;
+ }
+
+ sprintf(tmpstr,"Ctx [%d:%s] Job C-dist",context_list[ctx_num].ctx,pidstr);
+ gnuplot_draw(tmpstr,max_limit,0);
+
+ return 0;
+
+}
+
+int plot_exec_arr_distrib(int ctx_num, unsigned long long max_nsec, char *pidstr) {
+
+ unsigned long long max_limit,last_start,delta_start;
+ char tmpstr[50];
+ int i,h;
+
+ if (max_nsec == 0) return 0;
+
+ gnuplot_clear();
+
+ max_limit = max_nsec;
+
+ last_start = 0;
+ for (i=0;i<exec_total;i++)
+ if (exec_list[i].ctx == context_list[ctx_num].ctx) {
+ if (last_start == 0) {
+ last_start = exec_list[i].nsec_start;
+ } else {
+ delta_start = exec_list[i].nsec_start - last_start;
+
+ h = delta_start * DRAW_NUM / max_limit;
+ if (h <= DRAW_NUM) draw_data[h]++;
+
+ last_start = exec_list[i].nsec_start;
+ }
+ }
+
+ sprintf(tmpstr,"Ctx [%d:%s] Exec Arr.Delta",context_list[ctx_num].ctx,pidstr);
+ gnuplot_draw(tmpstr,max_limit,0);
+
+ return 0;
+
+}
+
+int plot_job_arr_distrib(int ctx_num, unsigned long long max_nsec, char *pidstr) {
+
+ unsigned long long max_limit,last_start,delta_start;
+ char tmpstr[50];
+ int i,h;
+
+ if (max_nsec == 0) return 0;
+
+ gnuplot_clear();
+
+ max_limit = max_nsec;
+
+ last_start = 0;
+ for (i=0;i<job_total;i++)
+ if (job_list[i].ctx == context_list[ctx_num].ctx) {
+ if (last_start == 0) {
+ last_start = job_list[i].nsec_start;
+ } else {
+ delta_start = job_list[i].nsec_start - last_start;
+
+ h = delta_start * DRAW_NUM / max_limit;
+ if (h <= DRAW_NUM) draw_data[h]++;
+
+ last_start = job_list[i].nsec_start;
+ }
+ }
+
+ sprintf(tmpstr,"Ctx [%d:%s] Job Arr.Delta",context_list[ctx_num].ctx,pidstr);
+ gnuplot_draw(tmpstr,max_limit,0);
+
+ return 0;
+
+}
+
+int create_lists(char *filename) {
+
+ FILE *input_file;
+
+ int type,par1,par2,k,i,state;
+
+ int current_context = 0;
+ int current_exec = 0;
+ int current_endcycle = 0;
+
+ int kill_delta = 0;
+
+ unsigned long long last_tsc, tsc;
+ unsigned long long current_nsec = 0;
+
+ input_file = fopen(filename,"r");
+
+ /* Memory alloc */
+ exec_list = malloc(sizeof(struct ctx_exec) * MAXJOB);
+ context_list = malloc(sizeof(struct ctx_to_pid) * MAXCONTEXT);
+ ctx_server_list = malloc(sizeof(struct ctx_server) * MAXCONTEXT);
+
+ endcycle_list = malloc(sizeof(struct task_event) * MAXJOB);
+ deadline_miss_list = malloc(sizeof(struct task_event) * MAXJOB);
+ wcet_miss_list = malloc(sizeof(struct task_event) * MAXJOB);
+ act_list = malloc(sizeof(struct task_event) * MAXJOB);
+
+ act_server_list = malloc(sizeof(struct server_event) * MAXJOB );
+ server_budget_end_list = malloc(sizeof(struct server_event) * MAXJOB);
+
+
+ /* Finite-State machine
+ *
+ * FS-Machine states:
+
+ 0 - Start
+ 1 - Context running
+ 2 - Interrupt running
+
+ 10 - End
+
+ */
+
+ for(i=0;i<MAXCONTEXT;i++) {
+ context_list[i].ctx = 0;
+ context_list[i].pid = PID_NO_DEF;
+ }
+
+ for(i=0; i<MAXCONTEXT; i++) {
+ ctx_server_list[i].ctx=0;
+ ctx_server_list[i].server_id=SERVER_NO_DEF;
+
+ }
+
+ /* The start context + interrupt context */
+ context_total = 2;
+ current_context = 0;
+ last_tsc = 0;
+ context_list[0].ctx = 0;
+ context_list[0].pid = PID_NO_DEF;
+ context_list[1].ctx = INT_CTX;
+ context_list[1].pid = INT_PID;
+
+ state = 0;
+
+ k = 0;
+ while(!feof(input_file)) {
+
+ fscanf(input_file,"%d %llu",&type,&tsc);
+ k++;
+
+ switch (type) {
+
+ case 1:
+
+ /* No par */
+ break;
+
+ case 2:
+ case 3:
+ case 4:
+ case 6:
+ case 7:
+ case 8:
+ case 10:
+ case 11:
+ case 12:
+ case 13:
+ case 14:
+ case 15:
+ /* 1 par */
+ fscanf(input_file,"%d",&par1);
+ break;
+
+ case 5:
+ case 9:
+ case 0:
+ case 16:
+ case 17:
+ case 20:
+ case 21:
+
+ /* 2 par */
+ fscanf(input_file,"%d %d",&par1,&par2);
+ break;
+
+ }
+
+ switch (type) {
+
+ case 0:
+ if (state != 0) Error(1,k);
+ printf("EVT:Log starts at [%12llu]\n",tsc);
+ last_tsc = tsc;
+ log_start_tsc = tsc;
+ current_nsec = 0;
+
+ if (par1 == 0) Error(11,k);
+ if (par2 == 0) Error(12,k);
+
+ current_context = par1;
+
+ for (i=0;i<context_total;i++)
+ if (par1 == context_list[i].ctx) break;
+ if (i == context_total) {
+ context_list[context_total].ctx = par1;
+ context_total++;
+ }
+
+ clk_per_msec = par2;
+
+ exec_list[current_exec].tsc_start = tsc;
+ exec_list[current_exec].nsec_start = current_nsec;
+ state = 1;
+ break;
+
+ case 1:
+ printf("EVT:Log ends at [%12llu]\n",tsc);
+ exec_list[current_exec].dtsc = tsc - last_tsc;
+ exec_list[current_exec].dnsec = exec_list[current_exec].dtsc * 1000000 / clk_per_msec;
+ current_nsec += exec_list[current_exec].dnsec;
+ exec_list[current_exec].ctx = current_context;
+ current_exec++;
+ last_tsc = tsc;
+ log_end_tsc = tsc;
+ total_nsec = current_nsec;
+ state = 10;
+ break;
+
+ /* Int start */
+ case 2:
+ if (state == 0) Error(2,k);
+ exec_list[current_exec].dtsc = tsc - last_tsc;
+ exec_list[current_exec].dnsec = exec_list[current_exec].dtsc * 1000000 / clk_per_msec;
+ current_nsec += exec_list[current_exec].dnsec;
+ exec_list[current_exec].ctx = current_context;
+ current_exec++;
+ last_tsc = tsc;
+ current_context = INT_CTX;
+ exec_list[current_exec].tsc_start = tsc - log_start_tsc;
+ exec_list[current_exec].nsec_start = current_nsec;
+ state = 2;
+ break;
+
+ /* Int end */
+ case 3:
+ if (state != 2) Error(3,k);
+ exec_list[current_exec].dtsc = tsc - last_tsc;
+ exec_list[current_exec].dnsec = exec_list[current_exec].dtsc * 1000000 / clk_per_msec;
+ current_nsec += exec_list[current_exec].dnsec;
+ exec_list[current_exec].ctx = current_context;
+ current_exec++;
+ last_tsc = tsc;
+ if (par1 > 16) {
+ current_context = par1;
+
+ for (i=0;i<context_total;i++)
+ if (par1 == context_list[i].ctx) break;
+ if (i == context_total) {
+ context_list[context_total].ctx = par1;
+ context_total++;
+ }
+ }
+
+ exec_list[current_exec].tsc_start = tsc;
+ exec_list[current_exec].nsec_start = current_nsec;
+ state = 1;
+ break;
+
+ /* Change ctx */
+ case 4:
+
+ exec_list[current_exec].dtsc = tsc - last_tsc;
+ exec_list[current_exec].dnsec = exec_list[current_exec].dtsc * 1000000 / clk_per_msec;
+ current_nsec += exec_list[current_exec].dnsec;
+ exec_list[current_exec].ctx = current_context;
+ current_exec++;
+ last_tsc = tsc;
+ current_context = par1;
+
+ for (i=0;i<context_total;i++)
+ if (par1 == context_list[i].ctx) break;
+ if (i == context_total) {
+ context_list[context_total].ctx = par1;
+ context_total++;
+ }
+
+ exec_list[current_exec].tsc_start = tsc;
+ exec_list[current_exec].nsec_start = current_nsec;
+ state = 1;
+ break;
+
+ /* Task create */
+ case 5:
+
+ for (i=0;i<context_total;i++)
+ if (par1 == context_list[i].ctx) {
+ context_list[i].pid = par2;
+ break;
+ }
+ if (i == context_total) {
+ context_list[context_total].ctx = par1;
+ context_list[context_total].pid = par2;
+ context_total++;
+ }
+
+ break;
+
+ /* Task kill */
+ case 7:
+
+ for (i=0;i<context_total;i++)
+ if (par1 == context_list[i].ctx) break;
+ if (i == context_total) Error(5,k);
+ else {
+
+ kill_delta += 1000;
+
+ for (k=0;k<current_endcycle;k++)
+ if (endcycle_list[k].ctx == par1)
+ endcycle_list[k].ctx += kill_delta;
+ for (k=0;k<current_exec;k++)
+ if (exec_list[k].ctx == par1)
+ exec_list[k].ctx += kill_delta;
+ context_list[context_total].ctx = context_list[i].ctx + kill_delta;
+ context_list[context_total].pid = context_list[i].pid;
+ context_total++;
+
+ if (current_context == par1) current_context += kill_delta;
+
+ }
+
+ break;
+
+ /* Task endcycle */
+ case 8:
+
+ for (i=0;i<context_total;i++)
+ if (par1 == context_list[i].ctx) break;
+ if (i == context_total) Error(4,k);
+
+ endcycle_list[current_endcycle].ctx = par1;
+ endcycle_list[current_endcycle].tsc = tsc;
+ endcycle_list[current_endcycle].nsec = current_nsec + (tsc-last_tsc) * 1000000 / clk_per_msec;
+ current_endcycle++;
+
+ break;
+
+ /* Task activate */
+ case 6:
+
+ act_list[act_total].ctx = par1;
+ act_list[act_total].tsc = tsc;
+ act_list[act_total].nsec = current_nsec + (tsc-last_tsc) * 1000000 / clk_per_msec;
+ act_total++;
+
+ break;
+ /* Server Create */
+ case 16:
+ for (i=0;i<ctx_server_total;i++)
+ if (par1 == ctx_server_list[i].ctx) {
+ ctx_server_list[i].server_id = par2;
+ break;
+ }
+ if (i == ctx_server_total) {
+ ctx_server_list[ctx_server_total].ctx = par1;
+ ctx_server_list[ctx_server_total].server_id = par2;
+ ctx_server_total++;
+ }
+ printf("(%d, %d, %d)", ctx_server_total, par1, par2);
+ break;
+
+ /* Deadline miss */
+ case 20:
+
+ for (i=0;i<context_total;i++)
+ if (par1 == context_list[i].ctx) break;
+ //if (i == context_total) Error(4,k);
+
+ deadline_miss_list[deadline_miss].ctx = par1;
+ deadline_miss_list[deadline_miss].tsc = tsc;
+ deadline_miss_list[deadline_miss].nsec = current_nsec + (tsc-last_tsc) * 1000000 / clk_per_msec;
+ deadline_miss++;
+
+ break;
+
+ /* Wcet miss */
+ case 21:
+
+ for (i=0;i<context_total;i++)
+ if (par1 == context_list[i].ctx) break;
+ //if (i == context_total) Error(4,k);
+
+ wcet_miss_list[wcet_miss].ctx = par1;
+ wcet_miss_list[wcet_miss].tsc = tsc;
+ wcet_miss_list[wcet_miss].nsec = current_nsec + (tsc-last_tsc) * 1000000 / clk_per_msec;
+ wcet_miss++;
+
+ break;
+
+ /* Task id */
+ case 9:
+
+ for (i=0;i<context_total;i++)
+ if (par1 == context_list[i].ctx) {
+ context_list[i].pid = par2;
+ break;
+ }
+ if (i == context_total) {
+ context_list[context_total].ctx = par1;
+ context_list[context_total].pid = par2;
+ context_total++;
+ }
+
+ break;
+
+ case 10:
+
+ exec_list[current_exec].dtsc = tsc - last_tsc;
+ exec_list[current_exec].dnsec = exec_list[current_exec].dtsc * 1000000 / clk_per_msec;
+ current_nsec += exec_list[current_exec].dnsec;
+ exec_list[current_exec].ctx = current_context;
+ current_exec++;
+ last_tsc = tsc;
+
+ exec_list[current_exec].tsc_start = tsc;
+ exec_list[current_exec].nsec_start = current_nsec;
+
+ if (!skip_clk_per_msec) clk_per_msec = par1;
+
+ break;
+
+ }
+
+ if (current_exec == MAXJOB-1) {
+ printf("Too many execs...\n");
+ exit(3);
+ }
+
+ if (current_endcycle == MAXJOB-1 || act_total == MAXJOB-1
+ || deadline_miss == MAXJOB-1 || wcet_miss == MAXJOB-1) {
+ printf("Too many jobs...\n");
+ exit(4);
+ }
+
+ if (state == 10) break;
+
+ }
+
+ endcycle_total = current_endcycle;
+ exec_total = current_exec;
+
+ return k;
+
+}
+
+int task_events(int num, int *act, int *dlinemiss, int *wcetmiss) {
+
+ unsigned long long i;
+ int tmp = 0;
+
+ *act = 0;
+ *dlinemiss = 0;
+ *wcetmiss = 0;
+
+ tmp = 0;
+ for (i=0;i<act_total;i++)
+ if (act_list[i].ctx == context_list[num].ctx) tmp++;
+ *act = tmp;
+ tmp = 0;
+ for (i=0;i<deadline_miss;i++)
+ if (deadline_miss_list[i].ctx == context_list[num].ctx) tmp++;
+ *dlinemiss = tmp;
+ tmp = 0;
+ for (i=0;i<wcet_miss;i++)
+ if (wcet_miss_list[i].ctx == context_list[num].ctx) tmp++;
+ *wcetmiss = tmp;
+
+ return 0;
+
+}
+
+int create_job_list() {
+
+ int current_job = 0, h, i, k;
+ int temp_ctx;
+ unsigned long long temp_nsec, endcycle_start_nsec;
+ unsigned long long temp_tsc, endcycle_end_nsec;
+
+ job_list = malloc(sizeof(struct ctx_exec) * MAXJOB);
+
+ for (k=0;k<context_total;k++) {
+
+ temp_ctx = context_list[k].ctx;
+ endcycle_start_nsec = 0;
+
+ for (h=0;h<endcycle_total;h++) {
+
+ if (endcycle_list[h].ctx == temp_ctx) {
+
+ if (endcycle_start_nsec == 0)
+ endcycle_start_nsec = 0;
+
+ endcycle_end_nsec = endcycle_list[h].nsec;
+ temp_nsec = 0;
+ temp_tsc = 0;
+
+ job_list[current_job].nsec_start = 0;
+
+ for(i=0;i<exec_total;i++)
+ if (exec_list[i].ctx == temp_ctx) {
+ if (exec_list[i].nsec_start < endcycle_end_nsec &&
+ exec_list[i].nsec_start >= endcycle_start_nsec) {
+ if (job_list[current_job].nsec_start == 0)
+ job_list[current_job].nsec_start = exec_list[i].nsec_start;
+ temp_nsec += exec_list[i].dnsec;
+ temp_tsc += exec_list[i].dtsc;
+ }
+ }
+
+ job_list[current_job].dtsc = temp_tsc;
+ job_list[current_job].dnsec = temp_nsec;
+ job_list[current_job].ctx = temp_ctx;
+ current_job++;
+
+ endcycle_start_nsec = endcycle_end_nsec;
+
+ }
+
+ }
+
+ }
+
+ job_total = current_job;
+
+ return 0;
+
+}
+
+int elaborate_statistics(int num, int task_type) {
+
+ char pidstr[10];
+ char serverstr[10];
+ unsigned long long tot_nsec,mean_nsec,max_nsec,min_nsec,first_nsec;
+ int number,act,dlinemiss,wcetmiss;
+ int i=0;
+
+ switch (context_list[num].pid) {
+ case PID_NO_DEF:
+ sprintf(pidstr,"NODEF");
+ break;
+ case INT_PID:
+ sprintf(pidstr," INT");
+ break;
+ default:
+ sprintf(pidstr,"%5d",context_list[num].pid);
+ break;
+ }
+
+ for (i=0; i<ctx_server_total; i++) {
+ if (ctx_server_list[i].ctx==context_list[num].ctx) {
+ sprintf(serverstr,"%5d", ctx_server_list[i].server_id);
+ break;
+ }
+ }
+
+ if (i==ctx_server_total)
+ sprintf(serverstr, "NODEF");
+
+
+ if (task_type == BACKGROUND) {
+
+ printf("Background Task CTX [%5d] PID [%s] SERVER [%s]\n",context_list[num].ctx,pidstr, serverstr);
+
+ stats_from_execs(num,&tot_nsec,&min_nsec,&mean_nsec,&max_nsec,&first_nsec,&number);
+
+ if (number > 0) {
+
+ printf(" Total Execution [%12llu ns]\n",tot_nsec);
+ printf(" Mean CPU Bandwidth [%11f%c ]\n",(double)(tot_nsec)/(double)(total_nsec)*100.0,'%');
+ printf(" after first exec [%11f%c ]\n",(double)(tot_nsec)/(double)(total_nsec-first_nsec)*100.0,'%');
+ printf(" Execs Number [%12d ]\n",number);
+ printf(" Min Exec [%12llu ns]\n",min_nsec);
+ printf(" Mean Exec [%12llu ns]\n",mean_nsec);
+ printf(" Max Exec [%12llu ns]\n\n",max_nsec);
+
+ plot_exec_demand_function(num,pidstr);
+
+ } else {
+
+ printf(" Total Execution [%12llu ns]\n\n",tot_nsec);
+
+ }
+
+ }
+
+ if (task_type == INTERRUPT) {
+
+ printf("Interrupts\n");
+
+ stats_from_execs(num,&tot_nsec,&min_nsec,&mean_nsec,&max_nsec,&first_nsec,&number);
+
+ if (number > 0) {
+
+ printf(" Total Execution [%12llu ns]\n",tot_nsec);
+ printf(" Mean CPU Bandwidth [%11f%c ]\n",(double)(tot_nsec)/(double)(total_nsec)*100.0,'%');
+ printf(" after first int [%11f%c ]\n",(double)(tot_nsec)/(double)(total_nsec-first_nsec)*100.0,'%');
+ printf(" Interrupts Number [%12d ]\n",number);
+ printf(" Min Interrupt [%12llu ns]\n",min_nsec);
+ printf(" Mean Interrupt [%12llu ns]\n",mean_nsec);
+ printf(" Max Interrupt [%12llu ns]\n\n",max_nsec);
+
+ plot_exec_demand_function(num,pidstr);
+
+ plot_exec_c_distrib(num,max_nsec,pidstr);
+
+ arr_stats_from_execs(num,&min_nsec,&mean_nsec,&max_nsec);
+
+ if (max_nsec > 0) {
+
+ printf(" Min Arr. Delta [%12llu ns]\n",min_nsec);
+ printf(" Mean Arr. Delta [%12llu ns]\n",mean_nsec);
+ printf(" Max Arr. Delta [%12llu ns]\n\n",max_nsec);
+
+ plot_exec_arr_distrib(num,max_nsec,pidstr);
+
+ }
+
+ } else {
+
+ printf(" Total Execution [%12llu ns]\n\n",tot_nsec);
+
+ }
+
+ }
+
+ if (task_type == PERIODICAL) {
+
+ printf("Periodical Task CTX [%5d] PID [%s] SERVER [%s]\n",context_list[num].ctx,pidstr,serverstr);
+
+ stats_from_execs(num,&tot_nsec,&min_nsec,&mean_nsec,&max_nsec,&first_nsec,&number);
+
+ if (number > 0) {
+
+ printf(" Total Execution [%12llu ns]\n",tot_nsec);
+ printf(" Mean CPU Bandwidth [%11f%c ]\n",(double)(tot_nsec)/(double)(total_nsec)*100.0,'%');
+ printf(" after first exec [%11f%c ]\n",(double)(tot_nsec)/(double)(total_nsec-first_nsec)*100.0,'%');
+ printf(" Execs Number [%12d ]\n",number);
+ printf(" Min Exec [%12llu ns]\n",min_nsec);
+ printf(" Mean Exec [%12llu ns]\n",mean_nsec);
+ printf(" Max Exec [%12llu ns]\n\n",max_nsec);
+
+ plot_exec_demand_function(num,pidstr);
+
+ stats_from_jobs(num,&tot_nsec,&min_nsec,&mean_nsec,&max_nsec,&first_nsec,&number);
+
+ printf(" Total Job Exec [%12llu ns]\n",tot_nsec);
+ printf(" Jobs Number [%12d ]\n",number);
+ printf(" Min Job [%12llu ns]\n",min_nsec);
+ printf(" Mean Job [%12llu ns]\n",mean_nsec);
+ printf(" Max Job [%12llu ns]\n\n",max_nsec);
+
+ task_events(num,&act,&dlinemiss,&wcetmiss);
+
+ printf(" Activations [%12d ]\n",act);
+ printf(" Deadline Miss [%12d ]\n",dlinemiss);
+ printf(" Wcet Miss [%12d ]\n\n",wcetmiss);
+
+ plot_job_c_distrib(num,max_nsec,pidstr);
+
+ arr_stats_from_jobs(num,&min_nsec,&mean_nsec,&max_nsec);
+
+ if (max_nsec > 0) {
+
+ printf(" Min Arr. Delta [%12llu ns]\n",min_nsec);
+ printf(" Mean Arr. Delta [%12llu ns]\n",mean_nsec);
+ printf(" Max Arr. Delta [%12llu ns]\n\n",max_nsec);
+
+ plot_job_arr_distrib(num,max_nsec,pidstr);
+
+ }
+
+ } else {
+
+ printf(" Total Execution [%12llu ns]\n\n",tot_nsec);
+
+ }
+
+ }
+
+ return 0;
+
+}
+
+int main(int argc, char *argv[]) {
+
+ int events_total,k,i;
+ int task_type;
+
+ unsigned long long temp_nsec;
+
+ srand(getpid());
+
+ if (argc < 2) {
+ printf("%s: Enter the input file name \"%s filename.pwc [clk_per_msec]\"\n",argv[0],argv[0]);
+ exit(1);
+ }
+
+ printf("\n");
+
+ if (argc == 3) {
+ skip_clk_per_msec = 1;
+ clk_per_msec = atoi(argv[2]);
+ printf("Clk/msec = %u\n\n",clk_per_msec);
+ }
+
+ events_total = create_lists(argv[1]);
+
+ total_tsc = log_end_tsc - log_start_tsc;
+
+ printf("\nTotal dTSC [%12llu] ns [%12llu]\n", total_tsc, total_nsec);
+ printf("Events [%12d]\n",events_total);
+ printf("Execs [%12d]\n",exec_total);
+ printf("EndCycles [%12d]\n",endcycle_total);
+ printf("Dline miss [%12d]\n",deadline_miss);
+ printf("WCET miss [%12d]\n",wcet_miss);
+
+ printf("\nPreemption Removing.... \n");
+
+ /* Remove preemption from the computation time */
+ create_job_list();
+
+ temp_nsec = 0;
+ for (i=0;i<job_total;i++)
+ temp_nsec += job_list[i].dnsec;
+
+ printf("Total nsec of jobs [%12llu]\n",temp_nsec);
+
+ temp_nsec = 0;
+ for (i=0;i<exec_total;i++)
+ temp_nsec += exec_list[i].dnsec;
+
+ printf("Total nsec of exec [%12llu]\n",temp_nsec);
+ printf("Total nsec considering last clk/msec [%12llu]\n",total_tsc*1000000/clk_per_msec);
+
+ printf("\nCompute Task Statistics.... \n\n");
+
+ for (i=0;i<context_total;i++) {
+
+ task_type = BACKGROUND;
+
+ if (context_list[i].ctx == INT_CTX) task_type = INTERRUPT;
+
+ for (k=0;k<job_total;k++)
+ if (job_list[k].ctx == context_list[i].ctx) {
+ task_type = PERIODICAL;
+ break;
+ }
+
+ elaborate_statistics(i,task_type);
+
+ }
+
+ return 0;
+
+}
+
Index: demos/branches/xen/newtrace/utils/list.c
===================================================================
--- demos/branches/xen/newtrace/utils/list.c (nonexistent)
+++ demos/branches/xen/newtrace/utils/list.c (revision 1684)
@@ -0,0 +1,112 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Giacomo Guidi <giacomo@gandalf.sssup.it>
+ * Tullio Facchinetti <tullio.facchinetti@unipv.it>
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ * http://robot.unipv.it
+ */
+
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+#include <stdio.h>
+#include <unistd.h>
+#include <stdlib.h>
+#include <string.h>
+
+#define READ_BUFFER 2000
+#define DELTA_BUFFER 100
+
+int main(int argc, char *argv[])
+{
+
+ char buffer[READ_BUFFER+DELTA_BUFFER];
+ void *p, *last;
+ int n,delta,size;
+
+ unsigned long long tsc_value;
+
+ unsigned long long ev = 0;
+
+ FILE *input_file;
+
+ if (argc < 2) {
+ printf("%s: Enter the input file name [%s filename]\n",argv[0],argv[0]);
+ exit(1);
+ }
+
+ input_file = fopen(argv[1],"rb");
+
+ last = buffer + READ_BUFFER;
+
+ while(!feof(input_file)) {
+
+ //move remaining byte
+ delta = (unsigned int)(buffer) + READ_BUFFER - (unsigned int)(last);
+ if (delta > 0) memcpy(buffer,last,delta);
+
+ n = fread(buffer+delta,1,READ_BUFFER+10,input_file);
+ fseek(input_file,-(delta+10),SEEK_CUR);
+
+ p = buffer;
+
+ while ((unsigned int)(p) + 16 <= (unsigned int)(buffer + READ_BUFFER) &&
+ (unsigned int)(p) + 16 <= (unsigned int)(buffer + n + delta)) {
+
+ printf("%08d Type = %02x ",(unsigned int)ev,*(unsigned short int *)(p));
+
+ tsc_value = (unsigned long long)(*(unsigned int *)(p+4)) << 32;
+ tsc_value += (unsigned long long)(*(unsigned int *)(p+8));
+
+ printf("TSC = %llu (%08x:%08x)",tsc_value, *(unsigned int *)(p+4),*(unsigned int *)(p+8));
+
+ size = 16;
+
+ printf(" Par1 = %11d",*(unsigned short int *)(p+2));
+ printf(" Par2 = %11d\n",*(unsigned int *)(p+12));
+
+ ev++;
+
+ p += 16;
+
+ if ((unsigned int)(p) + 10 > (unsigned int)(buffer + n + delta)) break;
+
+ last = p;
+
+ }
+
+ if ((unsigned int)(p) + 10 > (unsigned int)(buffer + n + delta)) break;
+
+ }
+
+ fclose(input_file);
+
+ return 0;
+
+}
+
Index: demos/branches/xen/newtrace/utils/pwcet_gen.c
===================================================================
--- demos/branches/xen/newtrace/utils/pwcet_gen.c (nonexistent)
+++ demos/branches/xen/newtrace/utils/pwcet_gen.c (revision 1684)
@@ -0,0 +1,275 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Giacomo Guidi <giacomo@gandalf.sssup.it>
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+#include <stdio.h>
+#include <unistd.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include <FTrace.h>
+
+#define READ_BUFFER 2000
+#define DELTA_BUFFER 100
+
+int main(int argc, char *argv[])
+{
+
+ char buffer[READ_BUFFER+DELTA_BUFFER];
+ void *p, *last;
+ int n,delta,size,tsc;
+
+ unsigned long long ev = 0, tsc_value;
+
+ FILE *input_file;
+
+ if (argc < 2) {
+ printf("%s: Enter the input file name [%s filename]\n",argv[0],argv[0]);
+ exit(1);
+ }
+
+ input_file = fopen(argv[1],"rb");
+
+ last = buffer + READ_BUFFER;
+
+ while(!feof(input_file)) {
+
+ //move remaining byte
+ delta = (unsigned int)(buffer) + READ_BUFFER - (unsigned int)(last);
+ if (delta > 0) memcpy(buffer,last,delta);
+
+ n = fread(buffer+delta,1,READ_BUFFER+10,input_file);
+ fseek(input_file,-(delta+10),SEEK_CUR);
+
+ p = buffer;
+ /*
+ // specific server events
+ #define FTrace_EVT_server_create 0x08 // Par1 [empty] Par2 [server]
+ #define FTrace_EVT_server_replenish 0x18 // Par1 [empty] Par2 [server]
+ #define FTrace_EVT_server_exhaust 0x28 // Par1 [empty] Par2 [server]
+ #define FTrace_EVT_server_reclaiming 0x38 // Par1 [empty] Par2 [server]
+ #define FTrace_EVT_server_remove 0x48 // Par1 [empty] Par2 [server]
+ #define FTrace_EVT_server_active 0x58 // Par1 [empty] Par2 [server]
+ #define FTrace_EVT_server_using_rec 0x68 // Par1 [reclaiming] Par2 [server]
+ */
+
+ while ((unsigned int)(p) + 16 <= (unsigned int)(buffer + READ_BUFFER) &&
+ (unsigned int)(p) + 16 <= (unsigned int)(buffer + n + delta)) {
+
+ tsc = 0;
+
+ switch (*(unsigned short int *)(p) & 0x00FF) {
+
+ case FTrace_EVT_ipoint:
+ printf("%d ",*(unsigned short int *)(p+2));
+ tsc = 1;
+ break;
+
+ /* Tracer start */
+ case FTrace_EVT_trace_start:
+ printf("0 ");
+ tsc = 1;
+ break;
+
+ /* Tracer stop */
+ case FTrace_EVT_trace_stop:
+ printf("1 ");
+ tsc = 1;
+ break;
+
+ /* Interrupt start (int num) */
+ case FTrace_EVT_timer_wakeup_start:
+ case FTrace_EVT_interrupt_start:
+ printf("2 ");
+ tsc = 1;
+ break;
+
+ /* Interrupt Stop (int num, or context num is int 3) */
+ case FTrace_EVT_timer_wakeup_end:
+ case FTrace_EVT_interrupt_end:
+ printf("3 ");
+ tsc = 1;
+ break;
+
+ /* Context to (context num) */
+ case FTrace_EVT_context_switch:
+ printf("4 ");
+ tsc = 1;
+ break;
+
+ /* Task Create (context num, pid num) */
+ case FTrace_EVT_task_create:
+ printf("5 ");
+ tsc = 1;
+ break;
+
+ /* Task Activate (context num) */
+ case FTrace_EVT_task_activate:
+ printf("6 ");
+ tsc = 1;
+ break;
+
+ /* Task End (context num) */
+ case FTrace_EVT_task_end:
+ printf("7 ");
+ tsc = 1;
+ break;
+
+ /* Task End-Cycle (context num) */
+ case FTrace_EVT_task_end_cycle:
+ printf("8 ");
+ tsc = 1;
+ break;
+
+ /* Task Context - PID declaration */
+ case FTrace_EVT_id:
+ printf("9 ");
+ tsc = 1;
+ break;
+
+ case FTrace_EVT_cycles_per_msec:
+ printf("10 ");
+ tsc = 1;
+ break;
+ // specific server events
+
+ case FTrace_EVT_server_active:
+ printf("16 ");
+ tsc=1;
+ break;
+
+ case FTrace_EVT_task_deadline_miss:
+ printf("20 ");
+ tsc = 1;
+ break;
+
+ case FTrace_EVT_task_wcet_violation:
+ printf("21 ");
+ tsc = 1;
+ break;
+
+ }
+
+ tsc_value = (unsigned long long)(*(unsigned int *)(p+4)) << 32;
+ tsc_value += (unsigned long long)(*(unsigned int *)(p+8));
+
+ if (tsc == 1) {
+
+ printf("%llu ",tsc_value);
+
+ switch (*(unsigned short int *)(p) & 0x00FF) {
+
+ case FTrace_EVT_trace_start:
+ printf("%d %d ",*(unsigned short int *)(p+2),*(unsigned int *)(p+12));
+ break;
+
+ case FTrace_EVT_interrupt_start:
+ printf("%d ",*(unsigned short int *)(p+2));
+ break;
+
+ case FTrace_EVT_timer_wakeup_start:
+ printf("%d ",0);
+ break;
+
+ case FTrace_EVT_timer_wakeup_end:
+ case FTrace_EVT_interrupt_end:
+ printf("%d ",*(unsigned short int *)(p+2));
+ break;
+
+ case FTrace_EVT_context_switch:
+ printf("%d ",*(unsigned short int *)(p+2));
+ break;
+
+ case FTrace_EVT_task_create:
+ printf("%d %d",*(unsigned short int *)(p+2),*(unsigned int *)(p+12));
+ break;
+
+ case FTrace_EVT_task_deadline_miss:
+ printf("%d %d",*(unsigned short int *)(p+2),*(unsigned int *)(p+12));
+ break;
+
+ case FTrace_EVT_task_wcet_violation:
+ printf("%d %d",*(unsigned short int *)(p+2),*(unsigned int *)(p+12));
+ break;
+
+ case FTrace_EVT_task_activate:
+ printf("%d ",*(unsigned short int *)(p+2));
+ break;
+
+ case FTrace_EVT_task_end_cycle:
+ printf("%d ",*(unsigned short int *)(p+2));
+ break;
+
+ case FTrace_EVT_task_end:
+ printf("%d ",*(unsigned short int *)(p+2));
+ break;
+
+ case FTrace_EVT_id:
+ printf("%d %d",*(unsigned short int *)(p+2),*(unsigned int *)(p+12));
+ break;
+
+ case FTrace_EVT_cycles_per_msec:
+ printf("%d ",*(unsigned int *)(p+12));
+ break;
+
+ case FTrace_EVT_server_active:
+ printf("%d %d",*(unsigned short int *)(p+2),*(unsigned int *)(p+12));
+ break;
+ }
+
+ printf("\n");
+
+ }
+
+ size = 16;
+
+ ev++;
+
+ p += 16;
+
+ if ((unsigned int)(p) + 10 > (unsigned int)(buffer + n + delta)) break;
+
+ last = p;
+
+ }
+
+ if ((unsigned int)(p) + 10 > (unsigned int)(buffer + n + delta)) break;
+
+ }
+
+ fclose(input_file);
+
+ return 0;
+
+}
+
Index: demos/branches/xen/newtrace/utils/test
===================================================================
--- demos/branches/xen/newtrace/utils/test (nonexistent)
+++ demos/branches/xen/newtrace/utils/test (revision 1684)
@@ -0,0 +1,919 @@
+ ®'¿¨{›`Á(¿¨`*¿¨`?+¿¨`Ž,¿¨` À-¿¨(Á¨(!Á¨ ,Á¨ W8Á¨’($:Á¨BÁ¨‚(OÁ¨( ŒSÁ¨(ÂXÁ¨Ÿ€Á¨ËïÁ¨b( õÁ¨‚,ùÁ¨ 0ûÁ¨ĨBHV¨=d¨‚Ih¨'j¨+4tø¨i‚ø¨ “Šø¨‚͏ø¨;Y˜ø¨ ¶ø¨bؽø¨‚PÁø¨lÂø¨+ -ù¨ Û1ù¨ B4ù¨’(n5ù¨‚("8ù¨( ï:ù¨;(
+>ù¨è˜ù¨>›ù¨b(àœù¨‚¯žù¨ǟù¨+˜›0©;¦Ÿ0©+“=1© Ô?1© B1©’(>C1©‚(ÈE1©( uG1©;({I1©¶ž1©Ù 1©b(£1©‚ä1©Ð¥1©+€Oi© ÂQi© Ti©’((Ui©‚(ˆWi©(  Yi©;(ÿZi©§¯i©¥±i©b(ɳi©‚µi©Ÿ¶i©+%c¡© Xe¡© Œg¡©’(°h¡©‚(k¡©( ’l¡©;(ˆn¡©á©öÄ¡©b(Ç¡©‚ÌÈ¡©ÙÉ¡©+uÙ© MwÙ© ŸyÙ©’(¸zÙ©‚( }Ù©( Œ~Ù©;(œ€Ù©DÕÙ©5×Ù©b(½ØÙ©‚rÚÙ©ÛÙ©+Ϫ Òª Ôª‚ïÖª;Úª ¡ãªb.窂Ñèªàéª+ˇª ,Šª oŒª’(£ª‚(ª( Á‘ª;(ô“ª§éªìëªb(síª‚2ïªAðª+èHª;¥êHª+>›Iª ‘Iª ֟Iª’(ú Iª‚(‹£Iª( 7¥Iª;(1§IªüIªþIªb(FJª‚Jª +Jª+3®ª p°ª IJª’(볁ª‚(K¶ª( Í·ª;(¾¹ª3‚ª%‚ªb(I‚ª‚
+‚ª‚ª+6À¹ª h¹ª  Ä¹ª’(¸Å¹ª‚(ȹª( ™É¹ª;(ŠË¹ª& ºª"ºªb(;$ºª‚ò%ºªÿ&ºª+”Óñª ÑÕñª 'Øñª’(CÙñª‚(–Ûñª( Ýñª;( +ßñª˜3òªŒ5òªb(7òª‚Æ8òªÕ9òª+ü+)«¹.)« å0)«‚³3)«;Ñ6)« Q@)«bœC)«‚?E)«NF)«+úå)« [è)« Cë)«’(Wì)«‚(°î)«( ^ð)«;(‹ò)«JH*«°J*«b(8L*«‚ýM*« O*«+êCa«;Fa«+—øa« Øúa« ýa«’(:þa«‚(b«( (b«;(,b«ÍXb«ÌZb«b(ü\b«‚±^b«Í_b«+R š« “š« ך«’(èš«‚(Hš«( Éš«;(ºš«<lš«-nš«b(Qpš«‚rš«sš«+?Ò« m Ò« ¡"Ò«’(¹#Ò«‚(&Ò«( ™'Ò«;()Ò«÷}Ò«éÒ«b( +‚Ò«‚ÃҫЄҫ+e1
+¬ ¦3
+¬ í5
+¬’(ø6
+¬‚(K9
+¬( Ì:
+¬;(Î<
+¬t‘
+¬h“
+¬b(ð”
+¬‚§–
+¬¶—
+¬+I‹A¬
+ŽA¬ A¬‚גA¬;ø•A¬ aŸA¬b©¢A¬‚X¤A¬g¥A¬+°CB¬  +FB¬ lHB¬’(–IB¬‚(õKB¬( ¤MB¬;(ÃOB¬+¥B¬n§B¬b(ç¨B¬‚¦ªB¬µ«B¬+‰£y¬;,¦y¬+ÆVz¬  Yz¬ C[z¬’(Z\z¬‚(¸^z¬( U`z¬;(Zbz¬.·z¬S¹z¬b(y»z¬‚3½z¬O¾z¬+hi²¬ °k²¬ n²¬’(8o²¬‚(×q²¬( is²¬;(Zu²¬¥É²¬Ó˲¬b(⬂µÏ²¬Äв¬+`}ê¬ ’ê¬ ׁꬒ(û‚ꬂ(~…ê¬( ‡ê¬;(õˆê¬QÝê¬Gßê¬b(káꬂ"ãê¬/äê¬+X"­ •‘"­ à“"­’(ü”"­‚(O—"­( ј"­;(ƚ"­ï"­ñ"­b(ºò"­‚lô"­{õ"­+ôèY­±ëY­ ÉíY­‚•ðY­;³óY­ #ýY­biZ­‚ Z­Z­+Ü¢Z­ >¥Z­ ”§Z­’(¨¨Z­‚(«Z­( ¬Z­;(ήZ­[­{[­b(þ[­‚à [­Ò
+[­+$’­;Ç’­+ѵ’­ ¸’­ Pº’­’(g»’­‚(º½’­( U¿’­;([Á’­á“­Ý“­b(“­‚Ç“­ã“­+ïÇÊ­ 0ÊÊ­ tÌÊ­’(…ÍÊ­‚(åÏÊ­( fÑÊ­;(YÓÊ­§'Ë­›)Ë­b(Þ+Ë­‚‘-Ë­ .Ë­+Û® IÝ® }ß®’(•à®‚(öâ®( wä®;(h殜:®<®b(Ó>®‚€@®A®+î:® Qð:® ˜ò:®’(£ó:®‚(öõ:®( w÷:®;(yù:®ÔM;®ÅO;®b(lQ;®‚S;®.T;®+7Fr®ÿHr®  Kr®‚ÖMr®;õPr® ¿[r®b_r®‚¨`r®·ar®+s® {s® Ás®’(ës®‚(Js®( ë s®;( s®Aas®…cs®b(es®‚Çfs®Ögs®+/^ª®;Ò`ª®+Ü«® !«® d«®’(‰«®‚(Ü«®( w«®;(q«®)s«®-u«®b(bw«®‚y«®)z«®+­&ã® ê(ã® 3+㮒(Z,㮂(º.ã®( <0ã®;(-2ã®—†ã®‰ˆã®b(̊㮂yŒã®ˆã®+š8¯ Ì:¯ =¯’(>¯‚({@¯( þA¯;(óC¯n˜¯_š¯b(¢œ¯‚Yž¯fŸ¯+ÜKS¯ NS¯ dPS¯’(€QS¯‚(ÓSS¯( UUS¯;(FWS¯ЫS¯Ä­S¯b(k¯S¯‚±S¯,²S¯+4¤Š¯õ¦Š¯  +©Š¯‚᫊¯;ý®Š¯ ‚¹Š¯bȼŠ¯‚k¾Š¯z¿Š¯+'^‹¯ ˆ`‹¯ Øb‹¯’(ìc‹¯‚(Ef‹¯( ág‹¯;(j‹¯¿‹¯çÁ‹¯b(y˯‚>ŋ¯MƋ¯+¼Â¯;3¿Â¯+=qï ~sï ¼uï’(Óvï‚(&yï( Ázï;(Ç|ïhÑïgÓïb(œÕï‚Q×ïmØï+|ƒû¯ ½…û¯ ˆû¯’(‰û¯‚(r‹û¯( óŒû¯;(æŽû¯[ãû¯Låû¯b(çû¯‚Féû¯Uêû¯+ɖ3° ÷˜3° +›3°’(Cœ3°‚(¤ž3°( % 3°;(¢3°‚ö3°tø3°b(·ú3°‚sü3°€ý3°+ð©k° 1¬k° x®k°’(ƒ¯k°‚(Ö±k°( W³k°;(Yµk°å l°Ö l°b(} +l°‚0l°?l°+H£°£° £°‚Ò £°;ñ £° Z£°b £°‚C£°R£°+¼£° m¾£° ³À£°’(ÝÁ£°‚(<Ä£°( ÝÅ£°;(êÇ£°á¤°% ¤°b(¨!¤°‚g#¤°v$¤°+ÏÛ°;rÛ°+|ÏÛ° ÁÑÛ° ÔÛ°’()ÕÛ°‚(|×Û°( ÙÛ°;(ÛÛ°å/Ü°æ1Ü°b(4Ü°‚Õ5Ü°â6Ü°+øá± 5ä± ~æ±’(¥ç±‚(ê±( ‡ë±;(xí±èA±ÚC±b(F±‚ÏG±ÞH±+VõK± Ž÷K± ÆùK±’(ÞúK±‚(=ýK±( ¿þK±;(´L±EUL±6WL±b(yYL±‚0[L±=\L±+H„± … „± Ð „±’(ì „±‚(?„±( Á„±;(²„±<g„±0i„±b(×j„±‚‰l„±˜m„±+a»±Îc»± æe»±‚¼h»±;Úk»± Ku»±b‘x»±‚4z»±C{»±+¼± d¼± ´¼±’(È ¼±‚(!#¼±( ½$¼±;(ê&¼±M|¼±³~¼±b(E€¼±‚
+‚¼±ƒ¼±+\yó±;ÿ{ó±+ .ô± J0ô± ˆ2ô±’(Ÿ3ô±‚(ò5ô±( 7ô±;(“9ô±4Žô±3ô±b(h’ô±‚”ô±9•ô±+H@,² ‰B,² ÍD,²’(ÞE,²‚(>H,²( ¿I,²;(²K,²2 ,²#¢,²b(f¤,²‚¦,²,§,²+5Rd² cTd² —Vd²’(¯Wd²‚(Zd²( [d²;(‚]d²î±d²à³d²b(#¶d²‚Ù·d²æ¸d²+\eœ² gœ² äiœ²’(ïjœ²‚(Bmœ²( Ãnœ²;(Åpœ²QŜ²Bǜ²b(éȜ²‚œÊœ²«Ëœ²+$¿Ó²áÁÓ² íÃÓ²‚®ÆÓ²;ÍÉÓ² 1ÓÓ²bwÖÓ²‚ØÓ²)ÙÓ²+öxÔ² S{Ô² ™}Ô²’(Ã~Ô²‚("Ô²( ÂԲ;(é„Ô²rÚÔ²ºÜÔ²b(=ÞÔ²‚üßÔ² áÔ²+m× ³;Ú ³+¬Š ³ ñŒ ³ 4 ³’(Y ³‚(¬’ ³( G” ³;(A– ³$ë ³(í ³b(]ï ³‚ñ ³$ò ³+£žD³ à D³ )£D³’(P¤D³‚(°¦D³( 2¨D³;(#ªD³þD³E³b(ÂE³‚oE³~E³+°|³ ²|³ ú´|³’(¶|³‚(q¸|³( ó¹|³;(ä»|³_}³P}³b(“}³‚J}³W}³+Íô³ 
+Æ´³ UÈ´³’(qÉ´³‚(ÄË´³( FÍ´³;(;Ï´³Æ#µ³º%µ³b(a'µ³‚)µ³"*µ³+›ì³\ ì³ ˆ"쳂V%ì³;t(ì³ ß1ì³b%5쳂È6ì³×7ì³+-Öì³ ŽØì³ áÚ쳒(õÛ쳂(NÞì³( êßì³;(â쳘7í³þ9í³b(;í³‚U=í³d>í³+6$´;º8$´+Té$´ •ë$´ Óí$´’(êî$´‚(=ñ$´( Øò$´;(äô$´…I%´K%´b(¶M%´‚kO%´‡P%´+“û\´ Ôý\´ ]´’()]´‚(‰]´( 
+]´;(ý]´}[]´n]]´b(±_]´‚ha]´wb]´+ë•´ •´ M•´’(e•´‚(Ä•´( E•´;(8•´¤n•´–p•´b(Ùr•´‚t•´œu•´+"Í´ S$Í´ š&Í´’(¥'Í´‚(ø)Í´( y+Í´;({-Í´‚Í´øƒÍ´b(Ÿ…Í´‚R‡Í´aˆÍ´+jzµ'}µ 3µ‚ôµ;…µ |Žµb‘µ‚e“µt”µ+;4µ 6µ Õ8µ’(ÿ9µ‚(^<µ( ÿ=µ;(@µ•µ×µb(F™µ‚›µœµ+m’<µ;•<µ+ G=µ eI=µ ¨K=µ’(ÍL=µ‚( O=µ( »P=µ;(µR=µ‰§=µŠ©=µb(¿«=µ‚y­=µ†®=µ+œYuµ Ù[uµ "^uµ’(I_uµ‚(©auµ( +cuµ;( euµ‘¹uµƒ»uµb(ƽuµ‚x¿uµ‡Àuµ+ÿl­µ 1o­µ iq­µ’(r­µ‚(àt­µ( bv­µ;(Wx­µéÌ­µÚέµb(Ñ­µ‚ÔÒ­µáÓ­µ+W€åµ ”‚åµ ߄嵒(û…嵂(Nˆåµ( Љåµ;(ŋåµPàåµDâåµb(ëã嵂å嵬æåµ+´Ø¶qÛ¶ ‰Ý¶‚`à¶;~㶠èì¶b.ð¶‚Ññ¶àò¶+§’¶ •¶ X—¶’(l˜¶‚(Ś¶( aœ¶;(Žž¶åó¶Jö¶b(Ü÷¶‚¡ù¶°ú¶+ôðT¶;—óT¶+¡¥U¶ â§U¶  ªU¶’(7«U¶‚(Š­U¶( %¯U¶;(+±U¶ÍV¶ÉV¶b(þ V¶‚³ V¶Ï V¶+Û·¶ º¶ `¼¶’(q½¶‚(Ñ¿¶( RÁ¶;(EͶÅŽ¶¶Ž¶b(ùŽ¶‚°Ž¶¿Ž¶+3ËŶ aÍŶ •ÏŶ’(­ÐŶ‚(ÓŶ( ÔŶ;(€ÖŶì*ƶÞ,ƶb(!/ƶ‚×0ƶä1ƶ+ZÞý¶ ›àý¶ ââý¶’(íãý¶‚(@æý¶( Áçý¶;(Ãéý¶O>þ¶@@þ¶b(çAþ¶‚šCþ¶©Dþ¶+²65·o95· ;5·‚P>5·;qA5· ÅJ5·b N5·‚¨O5··P5·+™ð5· öò5· <õ5·’(fö5·‚(Åø5·( fú5·;(Œü5·R6·GT6·b(ÊU6·‚‰W6·˜X6·+òNm·;•Qm·+Ÿn· än· 'n·’(L n·‚(Ÿ n·( : +n·;(4n·dn·fn·b(Phn·‚
+jn·kn·++¦· h¦· ±¦·’(ئ·‚(8¦·( º¦·;(«!¦·v¦·x¦·b(Jz¦·‚÷{¦·}¦·+ƒ)Þ· µ+Þ· í-Þ·’(/Þ·‚(d1Þ·( æ2Þ·;(×4Þ·W‰Þ·H‹Þ·b(‹Þ·‚BÞ·OÞ·+Z;¸ —=¸ â?¸’(þ@¸‚(QC¸( ÓD¸;(ÄF¸N›¸B¸b(鞸‚› ¸ª¡¸+#•M¸æ—M¸ þ™M¸‚̜M¸;ìŸM¸ #ªM¸bi­M¸‚ ¯M¸°M¸+ON¸ vQN¸ ÍSN¸’(áTN¸‚(:WN¸( ÖXN¸;([N¸°N¸õ²N¸b(‡´N¸‚L¶N¸[·N¸+Ÿ­…¸;B°…¸+Ü`†¸ c†¸ [e†¸’(rf†¸‚(Åh†¸( `j†¸;(fl†¸Á†¸Ƹb(;ņ¸‚ðƆ¸Ȇ¸+†t¾¸ Çv¾¸  y¾¸’(z¾¸‚(||¾¸( ý}¾¸;(ð¾¸`Ô¾¸QÖ¾¸b(”ؾ¸‚KÚ¾¸ZÛ¾¸+c†ö¸ ‘ˆö¸ Ŋö¸’(݋ö¸‚(>Žö¸( ¿ö¸;(°‘ö¸æö¸ +èö¸b(Pêö¸‚ìö¸íö¸+‰™.¹ ʛ.¹ ž.¹’(Ÿ.¹‚(o¡.¹( ð¢.¹;(ò¤.¹~ù.¹oû.¹b(ý.¹‚Íþ.¹Üÿ.¹+Róe¹öe¹ øe¹‚Üúe¹;ûýe¹ df¹bª
+f¹‚M f¹\ +f¹+#­f¹ w¯f¹ ½±f¹’(ç²f¹‚(Fµf¹( ç¶f¹;(ð¸f¹gg¹«g¹b(.g¹‚íg¹üg¹+U ž¹;ø +ž¹+Àž¹ Gž¹ ŠÄž¹’(¯Åž¹‚(Ȟ¹( Éž¹;(—Ëž¹k Ÿ¹l"Ÿ¹b(¡$Ÿ¹‚[&Ÿ¹h'Ÿ¹+~ÒÖ¹ »ÔÖ¹ ×Ö¹’(+ØÖ¹‚(‹ÚÖ¹(  +ÜÖ¹;(þÝÖ¹n2×¹`4×¹b(£6×¹‚U8×¹d9×¹+qäº £æº Û躒(ó麂(Rìº( Ôíº;(Éïº[DºLFºb(Hº‚FJºSKº+É÷Fº úFº QüFº’(mýFº‚(ÀÿFº( BGº;(7GºÂWGº¶YGºb(][Gº‚]Gº^Gº+—Q~ºTT~º lV~º‚9Y~º;U\~º ¿e~ºbi~º‚¨j~º·k~º+
+º o º ƺ’(Úº‚(3º( Ϻ;(ºWkº¼mºb(Noº‚qº"rº+×i¶º;zl¶º+·º T·º ’!·º’(©"·º‚(ü$·º( —&·º;((·º?}·º;·ºb(p·º‚%ƒ·ºA„·º+¸0ïº ù2ïº =5ﺒ(N6ﺂ(®8ïº( /:ïº;("<ﺢïº“’ïºb(֔ﺂ–ﺜ—ïº+¥B'» ÓD'» G'»’(H'»‚(€J'»( L'»;(òM'»^¢'»P¤'»b(“¦'»‚E¨'»R©'»+ÌU_»  +X_» TZ_»’(_[_»‚(²]_»( 3__»;(5a_»Áµ_»²·_»b(Y¹_»‚ »_»¼_»+”¯–»U²–» u´–»‚6·–»;Yº–» ¼Ã–»bǖ»‚¥È–»´É–»+h—» nj—» ´l—»’(Þm—»‚(=p—»( Þq—»;(t—»†É—»Ê˗»b(M͗»‚ ϗ»З»+åÇλ;ˆÊλ+!{Ï» f}Ï» ©Ï»’(΀ϻ‚(!ƒÏ»( ¼„Ï»;(¶†Ï»ŸÛÏ»£ÝÏ»b(ØßÏ»‚’áÏ»ŸâÏ»+³¼ ð¼ 9’¼’(`“¼‚(À•¼( B—¼;(3™¼í¼ï¼b(Øñ¼‚…ó¼”ô¼+¡?¼ C£?¼ {¥?¼’(“¦?¼‚(ò¨?¼( tª?¼;(i¬?¼å@¼Ö@¼b(@¼‚Ð@¼Ý@¼+S´w¼ ¶w¼ Û¸w¼’(÷¹w¼‚(J¼w¼( ̽w¼;(Á¿w¼Lx¼@x¼b(çx¼‚™x¼¨x¼+° ¯¼m¯¼ …¯¼‚R¯¼;n¯¼ ä ¯¼b*$¯¼‚Í%¯¼Ü&¯¼+˜Æ¯¼ ùȯ¼ P˯¼’(d̯¼‚(½Î¯¼( YЯ¼;(ŠÒ¯¼(°¼g*°¼b(ù+°¼‚¾-°¼Í.°¼+%ç¼;´'ç¼+¾Ùç¼ ÿÛç¼ =Þ缒(Tß缂(§áç¼( Bãç¼;(Håç¼ê9è¼æ;è¼b(>輂Ð?è¼ì@è¼+øë½ 9î½ }ð½’(Žñ½‚(îó½( oõ½;(b÷½ÒK ½ÃM ½b(P ½‚¾Q ½ÍR ½+@ÿW½ nX½ ¢X½’(ºX½‚(X½( œX½;(
+X½ø^X½ê`X½b(-cX½‚ãdX½ðeX½+f½ §½ ’(ù½‚(L½( ͐½;(ϐ½[r½St½b(úu½‚²w½Áx½+Äjǽmǽ oǽ‚Xrǽ;wuǽ á~ǽb'‚ǽ‚ʃǽلǽ+ $Ƚ ô&Ƚ :)Ƚ’(d*Ƚ‚(Ã,Ƚ( d.Ƚ;(m0Ƚä…Ƚ(ˆÈ½b(«‰È½‚j‹È½yŒÈ½+҂ÿ½;u…ÿ½+7¾ Ä9¾ <¾’(,=¾‚(?¾( A¾;(C¾藾陾b(œ¾‚؝¾垾+ûI8¾ 8L8¾ N8¾’(¨O8¾‚(R8¾( ŠS8¾;({U8¾ë©8¾Ý«8¾b( ®8¾‚Ò¯8¾á°8¾+Y]p¾ ‹_p¾ Ãap¾’(Ûbp¾‚(:ep¾( ¼fp¾;(±hp¾C½p¾4¿p¾b(wÁp¾‚.Ãp¾;Äp¾+±p¨¾ îr¨¾ 9u¨¾’(Uv¨¾‚(¨x¨¾( *z¨¾;(|¨¾ªÐ¨¾žÒ¨¾b(EÔ¨¾‚÷Õ¨¾ר¾+Éß¾ËËß¾ ãÍß¾‚°Ðß¾;ÌÓß¾ 7Ýß¾b}àß¾‚ âß¾/ãß¾+ö‚ྠW…ྠ®‡à¾’(ˆà¾‚(‹à¾( ·Œà¾;(èŽà¾?äྤæà¾b(6èྂûéà¾
+ëà¾+Ná¿;ñã¿+û•¿ <˜¿ zš¿’(‘›¿‚(䝿( Ÿ¿;(…¡¿'ö¿#ø¿b(Xú¿‚ +ü¿)ý¿+5¨P¿ vªP¿ º¬P¿’(Ë­P¿‚(+°P¿( ¬±P¿;(Ÿ³P¿Q¿
+Q¿b(S Q¿‚
+Q¿Q¿+»ˆ¿ »½ˆ¿ ￈¿’(Áˆ¿‚(hÈ¿( éĈ¿;(Úƈ¿F‰¿8‰¿b({‰¿‚1!‰¿>"‰¿+´ÎÀ¿ õÐÀ¿ <ÓÀ¿’(GÔÀ¿‚(šÖÀ¿( ØÀ¿;(ÚÀ¿®.Á¿Ÿ0Á¿b(F2Á¿‚ù3Á¿5Á¿+'ø¿Ò)ø¿ Þ+ø¿‚Ÿ.ø¿;À1ø¿ #;ø¿bi>ø¿‚ @ø¿Aø¿+èàø¿ Eãø¿ ‹åø¿’(µæø¿‚(éø¿( µêø¿;(Ûìø¿XBù¿œDù¿b(Fù¿‚ÞGù¿íHù¿+F?0À;éA0À+óó0À 8ö0À {ø0À’( ù0À‚(óû0À( Žý0À;(ˆÿ0ÀwT1À{V1Àb(°X1À‚jZ1Àw[1À+iÀ ÍiÀ  iÀ’(= iÀ‚(iÀ( iÀ;(iÀzfiÀlhiÀb(¯jiÀ‚\liÀkmiÀ+è¡À ¡À R¡À’(j¡À‚(É!¡À( K#¡À;(<%¡À·y¡À¨{¡Àb(ë}¡À‚¢¡À¯€¡À+º+ÙÀ ÷-ÙÀ B0ÙÀ’(^1ÙÀ‚(±3ÙÀ( 25ÙÀ;(#7ÙÀ­‹ÙÀ¡ÙÀb(HÙÀ‚úÙÀ ’ÙÀ+‚…Á?ˆÁ WŠÁ‚$Á;@Á КÁbžÁ‚¹ŸÁÈ Á+j?Á ËAÁ "DÁ’(6EÁ‚(GÁ( +IÁ;(\KÁÚ Á@£Áb(Ò¤Á‚—¦Á¦§Á+éHÁ;Œ HÁ+%QIÁ fSIÁ ¤UIÁ’(»VIÁ‚(YIÁ( ©ZIÁ;(¯\IÁQ±IÁM³IÁb(‚µIÁ‚7·IÁS¸IÁ+ÊdÁ  gÁ OiÁ’(`jÁ‚(ÀlÁ( AnÁ;(4pÁ¤ÄÁ•ÆÁb(ØȁÁ‚ÊÁžËÁ+§v¹Á Õx¹Á  {¹Á’(!|¹Á‚(‚~¹Á( €¹Á;(ô¹Á_Ö¹ÁQعÁb(”Ú¹Á‚JܹÁWݹÁ+͉ñÁ ŒñÁ UŽñÁ’(`ñÁ‚(³‘ñÁ( 4“ñÁ;(6•ñÁÂéñÁ³ëñÁb(ZíñÁ‚ +ïñÁðñÁ+–ã(ÂSæ( _è(‚*ë(Â;Iî( ³÷(Âbû(‚§ü(¶ý(Â+r) Ɵ) %¢)’(O£)‚(®¥)Â( P§)Â;(k©)Âíþ)Â1*Âb(´*‚s*‚*Â+Ûû`Â;~þ`Â+¯a ]±a •³a’(¬´a‚(
+·aÂ( §¸aÂ;(¬ºaÂob”bÂb(Ûb‚•b±bÂ+%Ù Rř ³Ç™Â’(Úș‚(Ë™Â( ͙Â;(ϙÂR#šÂu%šÂb(¸'šÂ‚e)šÂt*šÂ+†ÕÑ ¸×Ñ ýÙÑ’(!ÛÑ‚(€ÝÑÂ( ßÑÂ;(ôàÑÂQ5ÒÂG7ÒÂb(Š9Ò‚A;ÒÂN<ÒÂ+Âè à ÿê à Jí Ò(fî Â(¹ð Ã( ;ò Ã;(,ô ÃuH
+ÃgJ
+Ãb(L
+ÂÀM
+ÃÏN
+Ã+Ø@AÙCAà ±EAÂ…HAÃ;¡KAà  UAÃbRXAÂZAÃ[AÃ+ËúAà ,ýAà ƒÿAÒ(—BÂ(ðBÃ( BÃ;(½BÃÙ[BÃ>^BÃb(Â_B‡aBÖbBÃ+çXyÃ;Š[yÃ+” +zà Õzà zÒ(*zÂ(}zÃ( zÃ;(zämzàozÃb(ÕqzŠszætzÃ+!²Ã ^#²Ã ¢%²Ã’(³&²Ã‚()²Ã( ”*²Ã;(‡,²Ãۀ²Ã̂²Ãb(…²Ã‚Ɔ²ÃՇ²Ã+Þ2êà  5êà @7êÒ(X8êÂ(¹:êÃ( :<êÃ;(+>êÃe’êÃW”êÃb(š–êÂP˜êÃ]™êÃ+ÓE"Ä H"Ä [J"Ē(fK"Ä‚(¹M"Ä( :O"Ä;(<Q"Ĉ¥"Ä~§"Äb(%©"Ä‚ݪ"Äì«"Ä+_ŸYÄ¢YÄ (¤YĂé¦YÄ;ªYÄ |³YÄb¶YĂe¸YÄt¹YÄ+1YZÄ Ž[ZÄ Ô]ZĒ(þ^ZÄ‚(]aZÄ( þbZÄ;($eZÄoºZij¼ZÄb(6¾ZÄ‚õ¿ZÄÁZÄ+]·‘Ä;º‘Ä+
+l’Ä On’Ä ’p’Ä’(·q’Ä‚(
+t’Ä( ¥u’Ä;(Ÿw’ÄW̒Ä[ΒÄb(Ð’Ä‚JҒÄWӒÄ+p~ÊÄ ­€ÊÄ ö‚ÊĒ(„ÊÄ‚(}†ÊÄ( ÿ‡ÊÄ;(ð‰ÊÄZÞÊÄLàÊÄb(âÊÄ‚<äÊÄKåÊÄ+ȑÅ ú“Å 2–Œ(J—Å‚(©™Å( *›Å;(Å—ñňóÅb(ËõÅ‚‚÷ŏøÅ+š£:Å ×¥:Å "¨:Œ(>©:Å‚(‘«:Å( ­:Å;(¯:Å„;Åv;Åb(;Å‚Ï;ÅÞ ;Å+WýqÅrÅ ,rłrÅ;!rÅ ‹rÅbÑrłtrŃrÅ+J·rÅ «¹rÅ ¼rŒ(½rÅ‚(o¿rÅ(  ÁrÅ;(<ÃrÅ´sÅsÅb(«sÅ‚psÅsÅ+êÅ;fªÅ+pʪŠ±ÌªÅ ïΪŒ(ЪÅ‚(YÒªÅ( ôÓªÅ;(úժŜ*«Å˜,«Åb(Í.«Å‚‚0«Åž1«Å+ªÜâÅ ëÞâÅ /áâŒ(@ââÅ‚( äâÅ( !æâÅ;(èâÅ„<ãÅu>ãÅb(¸@ãÅ‚oBãÅ~CãÅ+òïÆ  òÆ Tôƒ(lõÆ‚(Í÷Æ( NùÆ;(?ûƪOÆœQÆb(ßSÆ‚•UÆ¢VÆ+­SÆ îSÆ 5Sƒ(@SÆ‚(“ SÆ(  SÆ;( +SÆ“aSƉcSÆb(0eSÆ‚èfSÆ÷gSÆ+k[ŠÆ(^ŠÆ 4`ŠÆ‚õbŠÆ;fŠÆ }oŠÆbÃrŠÆ‚ftŠÆuuŠÆ+<‹Æ ‹Æ Ö‹Æ’(‹Æ‚(_‹Æ( ‹Æ;( !‹Æ€v‹ÆÄx‹Æb(Gz‹Æ‚|‹Æ}‹Æ+nsÂÆ;vÂÆ+(ÃÆ `*ÃÆ £,Ã(È-ÃÆ‚(0ÃÆ( ¶1ÃÆ;(°3ÃÆŠˆÃÆ‹ŠÃÆb(ÀŒÃÆ‚zŽÃƇÃÆ+:ûÆ Ú<ûÆ #?ûƒ(J@ûÆ‚(ªBûÆ( ,DûÆ;(!FûÆ’šûÆ„œûÆb(ǞûÆ‚y ûƈ¡ûÆ+N3Ç 2P3Ç jR3ǒ(‚S3Ç‚(áU3Ç( cW3Ç;(XY3Çê­3ÇÛ¯3Çb(²3Ç‚Õ³3ǵ3Ç+í_kÇ *bkÇ udkǒ(‘ekÇ‚(ägkÇ( fikÇ;([kkÇ׿kÇÉÁkÇb(pÃkÇ‚"ÅkÇ1ÆkÇ+ª¹¢Çk¼¢Ç ƒ¾¢Ç‚WÁ¢Ç;sÄ¢Ç ÞÍ¢Çb$ѢǂÇÒ¢ÇÖÓ¢Ç+s£Ç þu£Ç Ux£Ç’(iy£Ç‚(Â{£Ç( ^}£Ç;(£ÇìÔ£ÇR×£Çb(äأǂ©Ú£Ç¸Û£Ç+ûÑÚÇ;žÔÚÇ+7…ÛÇ x‡ÛÇ ¶‰Ûǒ(͊ÛÇ‚( ÛÇ( »ŽÛÇ;(ÁÛÇcåÛÇeçÛÇb(šéÛÇ‚OëÛÇkìÛÇ+â˜È #›È gȒ(xžÈ‚(Ø È( Y¢È;(J¤ÈÌøȽúÈb(ýÈ‚·þÈÆÿÈ+ϪKÈ ý¬KÈ 1¯KȒ(I°KÈ‚(ª²KÈ( +´KÈ;(¶Kȇ
+LÈy LÈb(¼LÈ‚rLÈLÈ+õ½ƒÈ 6ÀƒÈ }ƒȒ(ˆÃƒÈ‚(ÛŃÈ( \ǃÈ;(^ɃÈÛ„ÈÑ„Èb(x!„È‚0#„È?$„È+³»Èp»È |»È‚=»È;\"»È Ê+»Èb/»È‚³0»ÈÂ1»È+„Ñ»È áÓ»È 'ֻȒ(Q׻Ȃ(°Ù»È( QÛ»È;(wÝ»Èú2¼È=5¼Èb(À6¼È‚8¼ÈŽ9¼È+è/óÈ;‹2óÈ+•äóÈ ÚæóÈ éóȒ(BêóÈ‚(•ìóÈ( 0îóÈ;(*ðóÈ +EôÈGôÈb(FIôÈ‚KôÈ +LôÈ+!÷+É ^ù+É §û+ɒ(Îü+É‚(.ÿ+É( °,É;(¡,É W,ÉýX,Éb(@[,É‚í\,Éü],É+ dÉ @ dÉ x +dɒ(dÉ‚(ïdÉ( qdÉ;(bdÉÝhdÉÎjdÉb(mdÉ‚ÈndÉÕodÉ+KœÉ ˆœÉ Ó œÉ’(ï!œÉ‚(B$œÉ( Ä%œÉ;(¹'œÉ5|œÉ'~œÉb(Μɂ€œÉ‚œÉ+vÓÉÅxÓÉ ÝzÓɂ´}ÓÉ;ҀÓÉ V‹ÓÉbœŽÓɂ?ÓÉN‘ÓÉ+Š.ÔÉ ë0ÔÉ B3Ôɒ(V4ÔÉ‚(¯6ÔÉ( K8ÔÉ;(x:ÔÉïÔÉT’ÔÉb(æ“ÔÉ‚«•Ôɺ–ÔÉ+oŽ Ê;‘ Ê+«A Ê ìC Ê *F ʒ(AG Ê‚(”I Ê( /K Ê;(5M Êס ÊÓ£ Êb(¦ Ê‚½§ ÊÙ¨ Ê+PUDÊ ‘WDÊ ÕYDʒ(æZDÊ‚(F]DÊ( Ç^DÊ;(º`DÊ*µDÊ·DÊb(^¹DÊ‚»DÊ$¼DÊ+-g|Ê [i|Ê k|ʒ(§l|Ê‚(o|Ê( ‰p|Ê;(zr|ÊåÆ|Ê×È|Êb(Ë|Ê‚ÐÌ|ÊÝÍ|Ê+Sz´Ê ”|´Ê Û~´Ê’(é´Ê‚(<‚´Ê( ½ƒ´Ê;(½…´Ê9Ú´Ê/Ü´Êb(ÖÝ´Ê‚Žß´Êà´Ê+ÔëÊÎÖëÊ îØëʂ¯ÛëÊ;ÐÞëÊ 9èëÊbëëʂ"íëÊ1îëÊ+ˆŒìÊ ܎ìÊ "‘ìʒ(L’ìÊ‚(«”ìÊ( L–ìÊ;(S˜ìÊÌíìÊðìÊb(’ñìÊ‚QóìÊ`ôìÊ+*ì#Ë;Íî#Ë+gŸ$Ë ¬¡$Ë ï£$˒(¥$Ë‚(g§$Ë( ©$Ë;(üª$ËÐÿ$ËÑ%Ëb(%Ë‚À%ËÍ%Ë+N³\Ë ‹µ\Ë Ô·\˒(û¸\Ë‚([»\Ë( ݼ\Ë;(Ò¾\ËC]Ë5]Ëb(x]Ë‚*]Ë9]Ë+FÅ”Ë xÇ”Ë °É”Ë’(ÈʔË‚('͔Ë( ©Î”Ë;(žÐ”Ë5%•Ë&'•Ëb(i)•Ë‚ +•Ë2,•Ë+£ØÌË àÚÌË +ÝÌ˒(GÞÌË‚(šàÌË( âÌË;( +äÌˈ8ÍËz:ÍËb(!<ÍË‚Ó=ÍËâ>ÍË+ë0̨3Ì À5̂˜8Ì;´;Ì )EÌboĤJÌ!KÌ+ÝêÌ >íÌ •ï̒(©ðÌ‚(óÌ( žôÌ;(ËöÌ2L̘NÌb(*PÌ‚ïQÌþRÌ+AI<Ì;äK<Ì+îý<Ì /=Ì m=̒(„=Ì‚(×=Ì( r=Ì;(x =Ì^=Ì`=Ìb(Mb=Ì‚d=Ìe=Ì+-uÌ nuÌ ²u̒(ÃuÌ‚(#uÌ( ¤uÌ;(—uÌpuÌruÌb(KtuÌ‚vuÌwuÌ+…#­Ì ³%­Ì ç'­Ì’(ÿ(­Ì‚(^+­Ì( ß,­Ì;(Ò.­Ì>ƒ­Ì0…­Ìb(s‡­Ì‚)‰­Ì6Š­Ì+¬6åÌ í8åÌ 4;å̒(?<åÌ‚(’>åÌ( @åÌ;(BåÌ’–å̈˜åÌb(/šåÌ‚ç›åÌöœåÌ+ùŽÍ¶‘Í “͂–Í;¬™Í £ÍbV¦͂ù§Í©Í+ÕHÍ 2KÍ xM͒(¢NÍ‚(QÍ( ¢RÍ;(ÈTÍKªÍŽ¬Íb(®Í‚ЯÍß°Í+9§TÍ;Ü©TÍ+æ[UÍ +^UÍ n`U͒(“aUÍ‚(æcUÍ( eUÍ;({gUÍ^¼UÍb¾UÍb(—ÀUÍ‚QÂUÍ^ÃUÍ+rnÍ ¯pÍ ørÍ’(tÍ‚(vÍ( xÍ;(òyÍ\΍ÍNЍÍb(‘ҍÍ‚>ԍÍMՍÍ+ʁÅÍ üƒÅÍ 4†Å͒(L‡ÅÍ‚(«‰ÅÍ( -‹ÅÍ;(ÅÍ™áÅÍŠãÅÍb(ÍåÅÍ‚„çÅÍ‘èÅÍ+•ýÍ D—ýÍ ™ý͒(«šýÍ‚(þœýÍ( žýÍ;(p ýÍëôýÍÝöýÍb(„øýÍ‚6úýÍEûýÍ+Ní4Î ð4Î #ò4΂ðô4Î; ø4Î w5Îb½5΂`5Îo5Î+6§5Î —©5Î î«5Β(­5΂([¯5Î( ÷°5Î;((³5Π6Î 6Îb(— 6΂\6Îk6Î+¯mÎ;RmÎ+\ºmÎ ¼mÎ Û¾mΒ(ò¿m΂(EÂmÎ( àÃmÎ;(æÅmΈn΄nÎb(¹n΂n nΊ!nÎ+–̥Π×ΥΠѥΒ(,ҥ΂(Ô¥Î( Ö¥Î;(ÿ×¥Îp,¦Îa.¦Îb(¤0¦Î‚[2¦Îj3¦Î+ÞßÝÎ  âÝÎ @äÝΒ(XåÝ΂(¹çÝÎ( :éÝÎ;(+ëÝΖ?ÞΈAÞÎb(ËCÞ΂EÞÎŽFÞÎ+óÏ EõÏ Œ÷ϒ(—øÏ‚(êúÏ( küÏ;(mþÏêRÏàTÏb(‡VÏ‚?XÏNYÏ+QKMÏNMÏ 2PMςóRMÏ;VMÏ _MÏbÅbMςhdMÏweMÏ+>NÏ ’NÏ Ø Nϒ( NÏ‚(a +NÏ( NÏ;( NÏ‚fNÏÆhNÏb(IjNÏ‚lNÏmNÏ+pc…Ï;f…Ï+†Ï b†Ï ¥†Ï’(ʆς( †Ï( ¸!†Ï;(²#†ÏŒx†Ïz†Ïb(Â|†Ï‚|~†Ï‰†Ï+Ÿ*¾Ï Ü,¾Ï %/¾Ï’(L0¾Ï‚(¬2¾Ï( .4¾Ï;(#6¾Ï”Š¾Ï†Œ¾Ïb(Ɏ¾Ï‚{¾Ï‘¾Ï+>öÏ 4@öÏ lBöϒ(„CöÏ‚(ãEöÏ( eGöÏ;(ZIöÏìöÏݟöÏb( ¢öςףöÏä¤öÏ+ïO.Ð ,R.Ð wT.В(“U.Ђ(æW.Ð( hY.Ð;(][.ÐÙ¯.Ð˱.Ðb(r³.Ђ$µ.Ð3¶.Ð+¬©eÐi¬eÐ ®eЂN±eÐ;j´eÐ Õ½eÐbÁeЂ¾ÂeÐÍÃeÐ+”cfÐ õefÐ LhfВ(`ifЂ(¹kfÐ( UmfÐ;(†ofÐÝÄfÐBÇfÐb(ÔÈfЂ™ÊfШËfÐ+ìÁÐ;ÄÐ+™vžÐ ÚxžÐ {žÐ’(/|žÐ‚(‚~žÐ( €žÐ;(#‚žÐÅ֞ÐÁ؞Ðb(öڞЂ«ÜžÐÇݞÐ+ӈÖÐ ‹ÖÐ XÖВ(iŽÖЂ(ɐÖÐ( J’ÖÐ;(=”ÖнèÖЮêÖÐb(ñìÖЂ¨îÖзïÖÐ++œÑ YžÑ  ђ(¥¡Ñ‚(¤Ñ( ‡¥Ñ;(x§ÑäûÑÖýÑb(Ñ‚ÏÑÜÑ+ç­FÑ (°FÑ o²Fђ(z³FÑ‚(͵FÑ( N·FÑ;(P¹FÑÍ +GÑÃGÑb(jGÑ‚"GÑ1GÑ+¤~Ña
+~Ñ m ~т8~Ñ;W~Ñ ¼~Ñb~т¥ ~Ñ´!~Ñ+Á~Ñ ÞÃ~Ñ $Æ~ђ(NÇ~Ñ‚(­É~Ñ( NË~Ñ;(tÍ~Ñö"Ñ:%Ñb(½&Ñ‚|(Ñ‹)Ñ+ä¶Ñ;‡"¶Ñ+‘濾 ÖÖ¶Ñ ٶђ(>ڶт(‘ܶÑ( ,Þ¶Ñ;(&à¶Ñ
+5·Ñ7·Ñb(C9·Ñ‚ý:·Ñ
+<·Ñ+#çîÑ `éîÑ ©ëîђ(ÐìîÑ‚(0ïîÑ( ±ðîÑ;(¢òîÑ +GïÑÿHïÑb(BKïÑ‚ïLïÑþMïÑ+ù&Ò Bû&Ò zý&Ғ(’þ&Ò‚(ñ'Ò( s'Ò;(d'ÒßX'ÒÐZ'Òb(]'Ò‚Ê^'Ò×_'Ò+M _Ò Š_Ò Õ_Ғ(ñ_Ò‚(D_Ò( Æ_Ò;(»_Ò7l_Ò)n_Òb(Ðo_Ò‚‚q_Ò‘r_Ò+
+f–ÒÇh–Ò ój–Ò‚Çm–Ò;åp–Ò !{–Òbg~–Ò‚
+€–ҁ–Ò+—Ò þ —Ò U#—Ò’(i$—Ò‚(Â&—Ò( ^(—Ò;(*—Ò€—Òl‚—Òb(þƒ—Ò‚ŗÒ҆—Ò+‡~ÎÒ;*ÎÒ+Ã1ÏÒ 4ÏÒ B6ÏҒ(Y7ÏÒ‚(¬9ÏÒ( G;ÏÒ;(M=ÏÒï‘ÏÒë“ÏÒb( –ÏÒ‚՗ÏÒñ˜ÏÒ+hEÓ ©GÓ íIӒ(þJÓ‚(^MÓ( ßNÓ;(ÒPÓB¥Ó3§Ób(v©Ó‚-«Ó<¬Ó+EW?Ó sY?Ó §[?Ӓ(¿\?Ó‚( _?Ó( ¡`?Ó;(’b?Óý¶?Óï¸?Ób(2»?Ó‚è¼?Óõ½?Ó+kjwÓ ¬lwÓ ónwӒ(þowÓ‚(QrwÓ( ÒswÓ;(ÔuwÓWÊwÓMÌwÓb(ôÍwÓ‚¬ÏwÓ»ÐwÓ+.Ä®ÓïÆ®Ó ûȮӂ¼Ë®Ó;ÝÎ®Ó FØ®ÓbŒÛ®Ó‚/Ý®Ó>Þ®Ó+~¯Ó Y€¯Ó Ÿ‚¯Ó’(Ƀ¯Ó‚((†¯Ó( ɇ¯Ó;(҉¯ÓI߯Ӎá¯Ób(ã¯Ó‚Õä¯Óäå¯Ó+7ÜæÓ;ÚÞæÓ+tçÓ ¹‘çÓ ü“çӒ(!•çÓ‚(t—çÓ( ™çÓ;( ›çÓíïçÓîñçÓb(#ôçÓ‚ÝõçÓêöçÓ+k£Ô ¨¥Ô ñ§Ԓ(©Ô‚(x«Ô( ú¬Ô;(ë®Ô[ ÔM Ôb( Ô‚B ÔQ
+ Ô+^µWÔ ·WÔ ȹWԒ(àºWÔ‚(?½WÔ( Á¾WÔ;(¶ÀWÔHXÔ9XÔb(|XÔ‚3XÔ@XÔ+¶ÈÔ óÊÔ >͏Ԓ(ZΏÔ‚(­ÐÔ( /ҏÔ;($ԏÔ (Ô’*Ôb(9,Ô‚ë-Ôú.Ô+!ÇÔÀ#ÇÔ Ø%ÇԂ¥(ÇÔ;Á+ÇÔ +5ÇÔbq8ÇԂ:ÇÔ#;ÇÔ+êÚÇÔ KÝÇÔ ›ßÇԒ(¯àÇÔ‚(ãÇÔ( ¤äÇÔ;(ÑæÇÔ)<ÈÔ—>ÈÔb((@ÈÔ‚íAÈÔüBÈÔ+89ÿÔ;Û;ÿÔ+åíÿÔ &ðÿÔ dòÿԒ({óÿÔ‚(ÎõÿÔ( i÷ÿÔ;(oùÿÔNÕPÕb(DRÕ‚ùSÕUÕ+8Õ Ð8Õ 8Ւ(%8Õ‚(… 8Õ(  8Õ;(ù 8Õya8Õjc8Õb(­e8Õ‚dg8Õsh8Õ+|pÕ ªpÕ ÞpՒ(öpÕ‚(WpÕ( ØpÕ;(ÉpÕ5spÕ'upÕb(jwpÕ‚ ypÕ-zpÕ+£&¨Õ ä(¨Õ ++¨Õ’(6,¨Õ‚(‰.¨Õ( 
+0¨Õ;( 2¨Õ‰†¨Õˆ¨Õb(&Š¨Õ‚ދ¨Õ패Õ+`€ßÕƒßÕ )…ßՂô‡ßÕ;‹ßÕ x”ßÕb¾—ßՂa™ßÕpšßÕ+Ì8àÕ );àÕ o=àՒ(™>àÕ‚(ø@àÕ( ™BàÕ;(¿DàÕBšàÕ…œàÕb(žàÕ‚ǟàÕÖ àÕ+ ˜Ö;C›Ö+ÝKÖ "NÖ eP֒(ŠQÖ‚(ÝSÖ( xUÖ;(rWÖU¬ÖY®Öb(Ž°Ö‚H²ÖU³Ö+i^PÖ ¦`PÖ ïbP֒(dPÖ‚(vfPÖ( øgPÖ;(éiPÖS¾PÖEÀPÖb(ˆÂPÖ‚5ÄPÖDÅPÖ+ÁqˆÖ ósˆÖ /vˆÖ’(GwˆÖ‚(¦yˆÖ( '{ˆÖ;(}ˆÖ•ÑˆÖ†ÓˆÖb(ÉՈÖ‚€×ˆÖØˆÖ+…ÀÖ B‡ÀÖ ‰À֒(©ŠÀÖ‚(üŒÀÖ( }ŽÀÖ;(rÀÖíäÀÖßæÀÖb(†èÀÖ‚8êÀÖGëÀÖ+PÝ÷Öà÷Ö =â÷ւ å÷Ö;+è÷Ö ”ñ÷ÖbÚô÷ւ}ö÷ÖŒ÷÷Ö+S—øÖ ´™øÖ  œø֒(øÖ‚(xŸøÖ( ¡øÖ;(@£øÖ¸øøÖûøÖb(¯üøÖ‚tþøÖƒÿøÖ+Çõ/×;jø/×+tª0× µ¬0× ó®0ג(
+°0ׂ(]²0×( ø³0×;(þµ0× 
+1ל 1×b(Ñ1ׂ†1×¢1×+®¼h× ï¾h× 3Áhג(DÂhׂ(¤Äh×( %Æh×;(Èh׍i×~i×b(Á iׂx"iׇ#i×+ûÏ × )Ò × ]Ԡג(uՠׂ(Ö× ×( WÙ ×;(HÛ ×´/¡×¦1¡×b(é3¡×‚Ÿ5¡×¬6¡×+"ãØ× cåØ× °çØג(»èØׂ(ëØ×( ìØ×;(‘îØ× +CÙ×EÙ×b(ªFÙׂbHÙ×qIÙ×+t;Ø1>Ø =@؂þBØ;FØ —OØbèR؂‹TØšUØ+FõØ š÷Ø ìùؒ(ûØ‚(uýØ( ÿØ;(3ضVØùXØb(|ZØ‚;\ØJ]Ø+¤SHØ;GVHØ+QIØ –
+IØ Î Iؒ(å +IØ‚(CIØ( àIØ;(åIبhIØÍjIØb(mIØ‚ÎnIØêoIØ+óØ  Ø Ø’(¨ Ø‚(O#Ø( á$Ø;(Ö&Ø {ØC}Øb(†Ø‚3ØB‚Ø+T-¹Ø †/¹Ø Ë1¹Ø’(ï2¹Ø‚(N5¹Ø( Ï6¹Ø;(Â8¹Ø¹Ø
+¹Øb(M‘¹Ø‚“¹Ø”¹Ø+…@ñØ ÂBñØ  +Eñؒ()FñØ‚(|HñØ( ýIñØ;(îKñØ8 ñØ*¢ñØb(Ñ£ñØ‚ƒ¥ñØ’¦ñØ+ š(Ùɜ(Ù áž(ق¸¡(Ù;Ö¤(Ù ?®(Ùb…±(ق5³(ÙD´(Ù+þS)Ù _V)Ù ¶X)ْ(ÊY)Ù‚(#\)Ù( Ã])Ù;(ð_)Ù–µ)Ùû·)Ùb(~¹)Ù‚C»)ÙR¼)Ù+¤²`Ù;Gµ`Ù+àeaÙ !haÙ _jaْ(vkaÙ‚(ÉmaÙ( doaÙ;(jqaÙðÅaÙïÇaÙb($ÊaÙ‚ÙËaÙõÌaÙ+oy™Ù °{™Ù ô}™Ù’(™Ù‚(e™Ù( 悙Ù;(ل™Ù(ٙÙۙÙb(\ݙÙ‚ߙÙ"à™Ù++‹ÑÙ YÑÙ Ñْ(¥ÑÙ‚(“ÑÙ( ‡”ÑÙ;(x–ÑÙ²êÑÙ¤ìÑÙb(çîÑÙ‚™ðÑÙ¦ñÑÙ+ ž Ú a  Ú ¨¢ ڒ(³£ Ú‚(¦ Ú( ‡§ Ú;(‰© ÚÔý ÚÊÿ Úb(q
+Ú‚)
+Ú8
+Ú+¬÷@Úiú@Ú uü@ڂ6ÿ@Ú;UAÚ ¾ AÚb÷AڂšAÚ©AÚ+}±AÚ Ú³AÚ  ¶Aڒ(J·AÚ‚(©¹AÚ( J»AÚ;(_½AÚ­BÚôBÚb(wBÚ‚6BÚEBÚ+ŸyÚ;ByÚ+LÄyÚ ‘ÆyÚ ÔÈyڒ(ùÉyÚ‚(LÌyÚ( éÍyÚ;(áÏyÚ˜$zÚœ&zÚb(Ñ(zÚ‚‹*zÚ˜+zÚ+¬Ö±Ú éØ±Ú 2۱ڒ(YܱÚ‚(¹Þ±Ú( ;à±Ú;(,â±Ú–6²Úˆ8²Úb(Ë:²Ú‚x<²Ú‡=²Ú+êéÚ 6ìéÚ nîéڒ(†ïéÚ‚(åñéÚ( góéÚ;(XõéÚÓIêÚÄKêÚb(NêÚ‚¾OêÚËPêÚ+Aý!Û ~ÿ!Û É"ے(å"Û‚(8"Û( ¹"Û;(ª"Û%]"Û_"Ûb(¾`"Û‚pb"Ûc"Û+ˆUYÛIXYÛ uZYۂC]YÛ;c`YÛ ÿiYÛbEmYۂènYÛ÷oYÛ+‹ZÛ ìZÛ CZے(WZÛ‚(°ZÛ( LZÛ;(xZÛ'qZÛŒsZÛb(uZÛ‚âvZÛñwZÛ+6n‘Û;Ùp‘Û+ã"’Û $%’Û b'’Û’(y(’Û‚(Ì*’Û( g,’Û;(m.’Ûƒ’Û …’Ûb(@‡’Û‚ûˆ’ÛŠ’Û+5ÊÛ ^7ÊÛ ¢9Êے(³:ÊÛ‚(=ÊÛ( ”>ÊÛ;(‡@ÊÛ÷”ÊÛè–ÊÛb(+™ÊÛ‚âšÊÛñ›ÊÛ+eHÜ “JÜ ÇLܒ(ßMÜ‚(@PÜ( ÁQÜ;(²SܨܪÜb(R¬Ü‚®Ü¯Ü+ Z:Ü a\:Ü ¨^:ܒ(³_:Ü‚(b:Ü( ‡c:Ü;(‰e:ܺ:Üü»:Üb(£½:Ü‚[¿:ÜjÀ:Ü+Þ³qÜ›¶qÜ §¸q܂h»qÜ;‡¾qÜ ðÇqÜb6Ëq܂ÙÌqÜèÍqÜ+¯mrÜ prÜ Irrܒ(ssrÜ‚(ÒurÜ( swrÜ;(vyrÜóÎrÜ7ÑrÜb(ºÒrÜ‚yÔr܈ÕrÜ+áË©Ü;„ΩÜ+Ž€ªÜ ӂªÜ …ªÜ’(;†ªÜ‚(ŽˆªÜ( )ŠªÜ;(#ŒªÜ÷àªÜøâªÜb(-åªÜ‚çæªÜôçªÜ+
+“âÜ G•âÜ —âܒ(·˜âÜ‚(›âÜ( ™œâÜ;(ŠžâÜúòâÜìôâÜb(/÷âÜ‚áøâÜðùâÜ+h¦Ý š¨Ý Òªݒ(ê«Ý‚(I®Ý( ˯Ý;(À±ÝRÝCÝb(†
+Ý‚= ÝJ +Ý+U¸RÝ ’ºRÝ ݼRݒ(ù½RÝ‚(LÀRÝ( ÎÁRÝ;(ÃÃRÝ?SÝ1SÝb(ØSÝ‚ŠSÝ™SÝ+ŠÝÏŠÝ çŠÝ‚¾ŠÝ;ÜŠÝ F&ŠÝbŒ)ŠÝ‚/+ŠÝ>,ŠÝ+ÌŠÝ fÎŠÝ ½ÐŠÝ’(ÑъÝ‚(*ԊÝ( ÆՊÝ;(÷׊Ý€-‹Ýå/‹Ýb(v1‹Ý‚;3‹ÝJ4‹Ý+*ÂÝ;2-ÂÝ+ËÝÂÝ  àÂÝ JâÂݒ(aãÂÝ‚(´åÂÝ( OçÂÝ;(UéÂÝ÷=ÃÝó?ÃÝb((BÃÝ‚ÝCÃÝùDÃÝ+pñúÝ ±óúÝ õõúݒ(÷úÝ‚(fùúÝ( çúúÝ;(ÚüúÝZQûÝKSûÝb(ŽUûÝ‚EWûÝTXûÝ+]3Þ ‹3Þ ¿3ޒ(×3Þ‚(8 3Þ( ¹ 3Þ;(ª3Þc3Þe3Þb(Kg3Þ‚i3Þj3Þ+„kÞ ÅkÞ  kޒ(kÞ‚(jkÞ( ëkÞ;(í!kÞjvkÞ`xkÞb(zkÞ‚¿{kÞÎ|kÞ+Hp¢Þs¢Þ %u¢Þ‚æw¢Þ;{¢Þ i„¢Þb¯‡¢Þ‚R‰¢ÞaŠ¢Þ+.*£Þ ‹,£Þ Ñ.£Þ’(û/£Þ‚(Z2£Þ( û3£Þ;(6£Þƒ‹£Þƍ£Þb(I£Þ‚‘£Þ’£Þ+qˆÚÞ;‹ÚÞ+=ÛÞ c?ÛÞ ¦AÛޒ(ËBÛÞ‚(EÛÞ( ¹FÛÞ;(³HÛÞ–ÛÞšŸÛÞb(Ï¡ÛÞ‚‰£ÛÞ–¤ÛÞ+ªOß çQß 0Tߒ(WUß‚(·Wß( 9Yß;(*[ß”¯ß†±ßb(ɳß‚vµß…¶ß+—aKß ÉcKß fKߒ(gKß‚(xiKß( újKß;(ëlKßkÁKß\ÃKßb(ŸÅKß‚VÇKßhÈKß+Ùtƒß wƒß ayƒß’(}zƒß‚(Ð|ƒß( R~ƒß;(C€ƒß¾Ôƒß°Öƒßb(W؃ß‚ ڃßۃß+‘κßNÑºß fӺ߂3Öºß;OÙºß ¿âºßbæºß‚¨çºß·èºß+‡»ß i‰»ß À‹»ß’(Ԍ»ß‚(-»ß( ɐ»ß;(õ’»ßŸè»ßë»ßb(–ì»ß‚[î»ßjï»ß+çòß;Áéòß+[šóß œœóß ڞóߒ(ñŸóß‚(D¢óß( ߣóß;(å¥ó߆úóß…üóßb(ºþóß‚oôß‹ôß+š¬+à Û®+à ±+à’(0²+à‚(´+à( ¶+à;(¸+àt ,àe,àb(¨,à‚_,àn,à+â¿cà Âcà DÄcà’(\Åcà‚(ÁÇcà( BÉcà;(:Ëcà¥dà—!dàb(Ú#dà‚%dà&dà+ӛà T՛à ›×›à’(¦Ø›à‚(ùڛà( zܛà;(|ޛà3œà5œàb(«6œà‚b8œàu9œà+v+Óà3.Óà ?0Óà‚
+3Óà;)6Óà “?ÓàbÙBÓà‚ˆDÓà—EÓà+SåÓà ±çÓà ÷éÓà’(!ëÓà‚(€íÓà( !ïÓà;(KñÓàÎFÔàIÔàb(”JÔà‚SLÔàbMÔà+¼C á;_F á+iø á ®ú á ñü á’(þ á‚(i á(  á;(þ áÒX áÓZ áb(] á‚Â^ áÏ_ á+å
+Dá " +Dá kDá’(’Dá‚(òDá( tDá;(iDáÚjDáÌlDáb(oDá‚ÁpDáÐqDá+H|á z |á ²"|á’(Ê#|á‚()&|á( «'|á;( )|á2~|á#€|áb(f‚|á‚„|á*…|á+50´á r2´á ½4´á’(Ù5´á‚(,8´á( ®9´á;(£;´á´á’´áb(¸“´á‚j•´áy–´á+ò‰ëᯌëá ǎëá‚”‘ëá;°”ëá žëába¡ëá‚£ëá¤ëá+ÚCìá ;Fìá ’Hìá’(¦Iìá‚(ÿKìá( ›Mìá;(ÌOìáU¥ìủìáb(L©ìá‚«ìá ¬ìá+d¢#â;¥#â+W$â RY$⠐[$â’(§\$â‚(ú^$â( •`$â;(›b$â<·$â;¹$âb(p»$â‚%½$âA¾$â+Pi\â ‘k\â Õm\â’(æn\â‚(Fq\â( Çr\â;(ºt\â:É\â+Ë\âb(nÍ\â‚%Ï\â4Ð\â+¨|”â Ö~”â 
+”â’("‚”â‚(ƒ„”â( †”â;(õ‡”âaܔâSޔâb(–à”â‚Lâ”âYã”â+dŽÌâ ¥Ìâ ì’Ìâ’(÷“Ìâ‚(J–Ìâ( ˗Ìâ;(͙ÌâJîÌâ@ðÌâb(çñÌâ‚ŸóÌâ®ôÌâ+!èãâêã íã‚Ãïã;æòã Iüãbÿã‚2ãAã+¢ã k¤ã ±¦ã’(Û§ã‚(:ªã( Û«ã;(®ã~ãÂãb(Eã‚ ã
+ã+l<ã;<ã+µ<ã ^·<ã ¡¹<ã’(ƺ<ã‚(½<ã( ´¾<ã;(®À<ã—=ã›=ãb(Ð=ã‚Š=ã—=ã+«Çtã èÉtã 1Ìtã’(XÍtã‚(¸Ïtã( :Ñtã;(+Ótã•'uã‡)uãb(Ê+uã‚w-uã†.uã+˜Ù¬ã ÐÛ¬ã Þ¬ã’( ߬ã‚(á¬ã( ã¬ã;(öä¬ãr9­ãc;­ãb(¦=­ã‚]?­ãj@­ã+àìäã ïäã hñäã’(„òäã‚(×ôäã( Yöäã;(NøäãÚLåãÌNåãb(sPåã‚%Råã4Såã+®FäkIä ƒKä‚PNä;lQä ãZäb)^ä‚Ì_äÛ`ä+%ÿä †ä Ýä’(ñä‚(Jä( æä;( äÁ`ä'cäb(¸dä‚}fäŒgä+@_Tä;ãaTä+}Uä ¾Uä üUä’(Uä‚(fUä( Uä;(Uä¨rUä§tUäb(ÜvUä‚‘xUä­yUä+¼$ä ý&ä A)ä’(R*ä‚(²,ä( 3.ä;(&0ä–„ä‡†äb(ʈä‚‚Šä‘‹ä+8Åä 2:Åä f<Åä’(~=Åä‚(ß?Åä( `AÅä;(QCÅä¼—Åä®™Åäb(ñ›Åä‚£Åä°žÅä+*Kýä kMýä ²Oýä’(½Pýä‚(Sýä( ‘Týä;(“Výä«ýä­ýäb(­®ýä‚e°ýät±ýä+w£4å?¦4å K¨4å‚ «4å;+®4å D¸4åb}»4å‚ ½4å/¾4å+T]5å ¨_5å îa5å’(c5å‚(we5å( g5å;(i5坾5åáÀ5åb(dÂ5å‚#Ä5å2Å5å+‹»lå;.¾lå+8pmå }rmå Àtmå’(åumå‚(8xmå( Óymå;(Í{må¡Ðmå¢Òmåb(×Ômå‚‘Ömåž×må+´‚¥å ñ„¥å :‡¥å’(aˆ¥å‚(ÁŠ¥å( CŒ¥å;(4Ž¥å¤â¥å–ä¥åb(Ùæ¥å‚‹è¥åšé¥å+–Ýå D˜Ýå |šÝå’(”›Ýå‚(óÝå( uŸÝå;(j¡ÝåüõÝåí÷Ýåb(0úÝå‚çûÝåôüÝå+j©æ §«æ ò­æ’(¯æ‚(a±æ( ã²æ;(Ø´æT æF æb(í æ‚Ÿæ®æ+·MætMæ ŒMæ‚Z Mæ;v Mæ ßMæb%Mæ‚ÈMæ×Mæ+ž»Mæ ÿ½Mæ VÀMæ’(jÁMæ‚(ÅÃMæ( aÅMæ;(ÇMæNæ~Næb(!Næ‚Ô"Næã#Næ+(…æ;Ë…æ+Õ΅æ хæ TӅæ’(kԅæ‚(¾Ö…æ( Y؅æ;(_څæ/†æý0†æb(23†æ‚ç4†æ6†æ+á½æ Pã½æ ”å½æ’(¥æ½æ‚(é½æ( †ê½æ;(yì½æù@¾æêB¾æb(-E¾æ‚äF¾æóG¾æ+gôõæ •öõæ Éøõæ’(áùõæ‚(Büõæ( Ãýõæ;(´ÿõæ TöæVöæb(UXöæ‚ Zöæ[öæ+Ž.ç Ï .ç  .ç’(! +.ç‚(t.ç( õ.ç;(÷.çtg.çji.çb(k.ç‚Él.çØm.ç+Û_eçœbeç ¨deç‚igeç;ˆjeç íseçb3weç‚Öxeçåyeç+²fç fç Ufç’(fç‚(Þ!fç( #fç;(¥%fç"{fçe}fçb(è~f炧€f缁fç+xç;³zç+½,žç /žç E1žç’(j2žç‚(½4žç( X6žç;(R8žç5žç9žçb(n‘žç‚(“žç5”žç+I?Öç †AÖç ÏCÖç’(öDÖç‚(VGÖç( ØHÖç;(ÉJÖç3ŸÖç%¡Öçb(h£Öç‚¥Öç$¦Öç+¡Rè ÓTè  Wè’(#Xè‚(‚Zè( \è;(ô]èp²èa´èb(¤¶è‚[¸èh¹è+sdFè °fFè ûhFè’(jFè‚(jlFè( ìmFè;(áoFè]ÄFèOÆFèb(öÇF肨ÉFè·ÊFè+0¾}èíÀ}è Ã}è‚ÒÅ}è;îÈ}è YÒ}èbŸÕ}è‚B×}èQØ}è+x~è yz~è Ð|~è’(ä}~è‚(=€~è( ف~è;(
+„~è´Ù~è!Ü~èb(²Ý~è‚wß~è†à~è+ÃÖµè;fÙµè+ÿ‰¶è @Œ¶è ~Ž¶è’(•¶è‚(葶è( ƒ“¶è;(‰•¶è+ê¶è'ì¶èb(\î¶è‚ð¶è-ñ¶è+¤îè åŸîè )¢îè’(:£îè‚(š¥îè( §îè;(©îè~ýîèvÿîèb(¹ïè‚rïèïè+ñ°&é ³&é Sµ&é’(k¶&é‚(̸&é( Mº&é;(>¼&éª'éœ'éb(ß'é‚‘'éž'é+­Â^é îÄ^é 5Ç^é’(@È^é‚(“Ê^é( Ì^é;(Î^é“"_é‰$_éb(0&_é‚è'_é÷(_é+j–é'–é 3!–é‚þ#–é;'–é !1–ébZ4–é‚ý5–é 7–é+G֖é ›Ø–é áږé’( ܖé‚(jޖé(  à–é;(â–é7—éÔ9—éb(W;—é‚=—é%>—é+~4Îé;!7Îé++éÎé pëÎé ³íÎé’(ØîÎé‚(+ñÎé( ÆòÎé;(ÀôÎé”IÏé•KÏéb(ÊMÏé‚„OÏé‘PÏé+§ûê äýê -ê’(Tê‚(´ê( 6ê;('ê—[ê‰]êb(Ì_ê‚~aêbê+š +?ê Ì?ê ?ê’(?ê‚({?ê( ý?ê;(ó?ê„m?êuo?êb(¸q?ê‚os?ê|t?ê+ò wê /#wê z%wê’(–&wê‚(é(wê( k*wê;(`,wê܀wê΂wêb(u„wê‚'†wê6‡wê+¯z®êp}®ê ˆ®ê‚\‚®ê;x…®ê ㎮êb)’®ê‚̓®ê۔®ê+13¯ê ’5¯ê é7¯ê’(ý8¯ê‚(V;¯ê( ò<¯ê;(?¯ê§”¯ê +—¯êb(ž˜¯ê‚cš¯êr›¯ê+&“æê;ɕæê+cFçê ¤Hçê âJçê’(ùKçê‚(LNçê( çOçê;(íQçꎦçꍨçêb(ªçê‚w¬çê“­çê+ +Zë N\ë ’^ë’(£_ë‚(bë( „cë;(weëý¹ëî»ëb(1¾ë‚è¿ë÷Àë+lWë .nWë bpWë’(zqWë‚(ÛsWë( \uWë;(MwWë¸ËWëªÍWëb(íÏWë‚£ÑWë°ÒWë+&ë gë ®ƒë’(¹„ë‚(‡ë( “ˆë;(•Šëߏëáëb(¯âë‚gäëvåë+éØÆë¦ÛÆë ²ÝÆë‚sàÆë;’ãÆë ÷ìÆëb=ðÆë‚ÚñÆëéòÆë+J‘Çë §“Çë í•Çë’(—Çë‚(v™Çë( ›Çë;(,Çë•òÇë×ôÇëb(ZöÇë‚øÇë(ùÇë+òðþë;•óþë+/¤ÿë t¦ÿë ·¨ÿë’(Ü©ÿë‚(/¬ÿë( Ê­ÿë;(įÿë§ì«ìb(àì‚š
+ì§ ì+&¸7ì cº7ì ¬¼7ì’(Ó½7ì‚(3À7ì( µÁ7ì;(¦Ã7ì8ì8ìb(E8ì‚ò8ì8ì+Êoì EÌoì }Îoì’(•Ïoì‚(ôÑoì( vÓoì;(gÕoìâ)pìÓ+pìb(.pì‚Ñ/pìÞ0pì+Pݧì ß§ì Øá§ì’(ôâ§ì‚(Gå§ì( Éæ§ì;(¾è§ì:=¨ì,?¨ìb(Ó@¨ì‚…B¨ì”C¨ì+5ßìZ8ßì r:ßì‚I=ßì;g@ßì ØIßìbMßì‚ÁNßìÐOßì+ïßì ðñßì Gôßì’([õßì‚(´÷ßì( Pùßì;(|ûßì&QàìŒSàìb(Uàì‚âVàìñWàì+5Ní;ØPí+âí #í aí’(xí‚(Ë
+í( f í;(lí +cí eíb(Agí‚öhíjí+!Pí bPí ¦Pí’(·Pí‚(Pí( ˜Pí;(‹ PíûtPíìvPíb(/yPí‚æzPíõ{Pí+i(ˆí —*ˆí Ë,ˆí’(ã-ˆí‚(D0ˆí( Å1ˆí;(¶3ˆí!ˆˆíŠˆíb(VŒˆí‚ Žˆíˆí+;Àí Ð=Àí @Àí’("AÀí‚(uCÀí( öDÀí;(øFÀíu›ÀíkÀíb(ŸÀí‚Ê ÀíÙ¡Àí+ܓ÷í™–÷í ¥˜÷í‚f›÷í;…ž÷í î§÷íb?«÷í‚â¬÷íñ­÷í+®Møí Pøí TRøí’(~Søí‚(ÝUøí( ~Wøí;(•Yøí¯øíV±øíb(Ù²ø킘´øí§µøí+¬/î;¤®/î+®`0î ób0î +e0î’(Bf0î‚( h0î( ;j0î;(>l0îÁ0î%Ã0îb(ZÅ0î‚Ç0î0È0î+:shî guhî Èwhî’(ïxhî‚(–{hî( (}hî;(hîgÓhî€Õhîb(Ã×hî‚pÙhîÚhî+‡ î 2‰ î w‹ î’(›Œ î‚(úŽ î( { î;(n’ î¾æ î¯è îb(òê î‚©ì î¶í î+Á˜Øî þšØî IØî’(ežØî‚(¸ Øî( :¢Øî;(+¤ØîtøØîfúØîb( +üØî‚¿ýØîÎþØî+Hòïõï ÷ï‚ìùï; ýï vïb¼ ï‚l ï{ ï+5¬ï –®ï í°ï’(²ï‚(Z´ï( úµï;((¸ïh +ïÍïb(Pï‚ï$ï+w
+Hï; +Hï+$¿Hï eÁHï £ÃHï’(ºÄHï‚( +ÇHï( ¨ÈHï;(®ÊHï4Iï3!Iïb(h#Iï‚%Iï9&Iï+Hрï ‰Ó€ï ÍՀï’(Þրï‚(>ـï( ¿Ú€ï;(²Ü€ï1ïò2ïb(55ï‚ì6ïû7ï+oä¸ï æ¸ï Ñè¸ï’(éé¸ï‚(Jì¸ï( Ëí¸ï;(¼ï¸ïöC¹ïèE¹ïb(+H¹ï‚ÝI¹ïêJ¹ï+d÷ðï ¥ùðï ìûðï’(÷üðï‚(Jÿðï( Ëñï;(ÍñïWñïYñïb(µZñï‚m\ñï|]ñï+ðP(ð±S(ð ¸U(ð‚yX(ð;˜[(ð e(ðb;h(ð‚Þi(ðíj(ð+Á
+)ð  +)ð d)ð’(Ž)ð‚(í)ð( Ž)ð;(£)ðãk)ð(n)ðb(«o)ð‚jq)ðyr)ð+Òh`ð;uk`ð+að Äað "að’(,#að‚(%að( 'að;()aðÌ}aðÐaðb(‚að‚¿ƒað̄að+å/™ð "2™ð k4™ð’(’5™ð‚(ò7™ð( t9™ð;(e;™ðϏ™ðÁ‘™ðb(”™ð‚±•™ðÀ–™ð+ÒAÑð DÑð <FÑð’(TGÑð‚(³IÑð( 5KÑð;(&MÑð¡¡Ñð’£Ñðb(Õ¥Ñð‚Œ§Ñð™¨Ñð+U ñ LW ñ —Y ñ’(³Z ñ‚(] ñ( ˆ^ ñ;(}` ñù´ ñë¶ ñb(’¸ ñ‚Dº ñS» ñ+Ì®@ñ‰±@ñ œ³@ñ‚s¶@ñ;‘¹@ñ úÂ@ñb@Æ@ñ‚ãÇ@ñòÈ@ñ+¹hAñ kAñ qmAñ’(…nAñ‚(ÞpAñ( zrAñ;(§tAñIÊAñ¯ÌAñb(@ÎAñ‚ÐAñÑAñ+YÇxñ;üÉxñ+–zyñ ×|yñ yñ’(,€yñ‚(‚yñ( „yñ;( †yñÁÚyñÀÜyñb(õÞyñ‚ªàyñÆáyñ+@Ž±ñ ±ñ Œ±ñ’(֓±ñ‚(6–±ñ( ·—±ñ;(ª™±ñî±ñ ð±ñb(Nò±ñ‚ô±ñõ±ñ+ éñ K¢éñ ¤éñ’(—¥éñ‚(ø§éñ( y©éñ;(j«éñÕÿéñÇêñb(
+êñ‚ÀêñÍêñ+C³!ò „µ!ò Ë·!ò’(Ö¸!ò‚()»!ò( ª¼!ò;(¬¾!ò)"ò"òb(Æ"ò‚~"ò"ò+ +YòÅYò åYò‚¦Yò;ÅYò .!Yòbt$Yò‚&Yò&'Yò+}ÅYò ÑÇYò ÊYò’(AËYò‚( ÍYò( AÏYò;(DÑYòº&Zòÿ(Zòb(‚*Zò‚A,ZòP-Zò+%‘ò;½'‘ò+Wؑò œÚ‘ò ßܑò’(ޑò‚(Wà‘ò( òá‘ò;(ìã‘òÀ8’òÁ:’òb(ö<’ò‚°>’ò½?’ò+>ìÉò {îÉò ÄðÉò’(ëñÉò‚(KôÉò( ÍõÉò;(Â÷Éò3LÊò%NÊòb(hPÊò‚RÊò)SÊò+6þó hó  ó’(¸ó‚(ó( ™ó;(Ž ó%^ó`ób(Ybó‚dó"eó+“:ó Ð:ó :ó’(7:ó‚(Š:ó(  :ó;(ý:ó}q:óos:ób(u:ó‚Èv:ó×w:ó+àiqólqó °nqó‚}qqó;™tqó ~qóbIqó‚ò‚qó„qó+Â#ró #&ró z(ró’(Ž)ró‚(ç+ró( ƒ-ró;(¯/róƒ…róé‡rób(z‰ró‚?‹róNŒró+”‚©ó;7…©ó+A7ªó ‚9ªó À;ªó’(×<ªó‚(*?ªó( Å@ªó;(ËBªól—ªók™ªób( ›ªó‚Uªóqžªó+€Iâó ÁKâó Nâó’(Oâó‚(vQâó( ÷Râó;(êTâój©âó[«âób(ž­âó‚U¯âód°âó+Ø\ô _ô :aô’(Rbô‚(³dô( 4fô;(%hô‘¼ôƒ¾ôb(ÆÀô‚|Âô‰Ãô+ÿoRô @rRô ‡tRô’(’uRô‚(åwRô( fyRô;(h{RôåÏRôÛÑRôb(†ÓRô‚9ÕRôHÖRô+Lȉô ˉô ͉ô‚Òωô;õ҉ô X܉ôbžß‰ô‚Aá‰ôPâ‰ô+‚Šô z„Šô À†Šô’(ꇊô‚(IŠŠô( ꋊô;(ŽŠô†ãŠôËåŠôb(NçŠô‚ +éŠôêŠô+vàÁô;ãÁô+#•Âô h—Âô «™Âô’(КÂô‚(#Âô( ¾žÂô;(¸ Âô›õÂôŸ÷Âôb(ÔùÂô‚ŽûÂô›üÂô+¯§úô ì©úô 5¬úô’(\­úô‚(¼¯úô( >±úô;(/³úô™ûô‹ ûôb(Î ûô‚{ +ûôŠûô+»2õ 9½2õ q¿2õ’(‰À2õ‚(èÂ2õ( jÄ2õ;([Æ2õÖ3õÇ3õb(
+3õ‚Á 3õÎ!3õ+ÙÌjõ Ïjõ aÑjõ’(}Òjõ‚(ÐÔjõ( RÖjõ;(GØjõÃ,kõµ.kõb(\0kõ‚2kõ3kõ+–&¢õS)¢õ f+¢õ‚3.¢õ;O1¢õ ì:¢õb2>¢õ‚Õ?¢õä@¢õ+xà¢õ Ùâ¢õ 0å¢õ’(Dæ¢õ‚(è¢õ( 9ê¢õ;(fì¢õB£õnD£õb(ÿE£õ‚ÄG£õÓH£õ+?Úõ;»AÚõ+UòÚõ –ôÚõ ÔöÚõ’(ë÷Úõ‚(>úÚõ( ÙûÚõ;(ßýÚõ€RÛõTÛõb(´VÛõ‚iXÛõ…YÛõ+ÿö @ö „
+ö’(— ö‚(÷ +ö( xö;(iöÙeöÊgöb( +jö‚ÄköÓlö+GKö uKö ©Kö’(ÁKö‚("!Kö( £"Kö;(”$KöÿxKöñzKöb(4}Kö‚ê~Kö÷Kö++ƒö C-ƒö Š/ƒö’(•0ƒö‚(è2ƒö( i4ƒö;(k6ƒö芃öތƒöb(…Žƒö‚=ƒöL‘ƒö+À„ºö‡ºö ¡‰ºö‚bŒºö;ƒºö 혺öb3œºö‚֝ºö垺ö+­>»ö A»ö GC»ö’(qD»ö‚(ÐF»ö( qH»ö;(xJ»ö䟻ö)¢»öb(¬£»ö‚k¥»öz¦»ö+Ԝòö;wŸòö+Qóö ÆSóö  Vóö’(.Wóö‚(Yóö( [óö;(]óöï±óöð³óöb(%¶óö‚ß·óöñ¸óö+d+÷ ?f+÷ ˆh+÷’(¯i+÷‚(l+÷( ‘m+÷;(‚o+÷òÃ+÷äÅ+÷b('È+÷‚ÙÉ+÷èÊ+÷+õuc÷ 'xc÷ _zc÷’(}{c÷‚(Ü}c÷( ^c÷;(Sc÷äÕc÷Õ×c÷b(Úc÷‚ÏÛc÷ÜÜc÷+R‰›÷ ‹›÷ ڍ›÷’(öŽ›÷‚(I‘›÷( ˒›÷;(¼”›÷Gé›÷9ë›÷b(àì›÷‚’î›÷¡ï›÷+ãÒ÷ØåÒ÷ ëçÒ÷‚¹êÒ÷;ÙíÒ÷ C÷Ò÷b‰úÒ÷‚,üÒ÷;ýÒ÷+’›Ó÷ óÓ÷ J Ó÷’(^¡Ó÷‚(·£Ó÷( S¥Ó÷;(„§Ó÷ýÓ÷lÿÓ÷b(ýÔ÷‚ÂÔ÷ÑÔ÷+‡û
+ø;*þ
+ø+î ø ± ø B³ ø’(Y´ ø‚(¬¶ ø( G¸ ø;(Mº øï øë øb(  ø‚Õ øñ ø+hÂCø ©ÄCø íÆCø’(þÇCø‚(^ÊCø( ßËCø;(ÒÍCøR"DøC$Døb(†&Dø‚=(DøL)Dø+UÔ{ø ƒÖ{ø ·Ø{ø’(ÏÙ{ø‚(.Ü{ø( ¯Ý{ø;(¢ß{ø4|ø6|øb(C8|ø‚ù9|ø;|ø+|ç³ø ½é³ø ì³ø’(í³ø‚(bï³ø( ãð³ø;(åò³øbG´øXI´øb(ÿJ´ø‚·L´øÆM´ø+9AëøöCëø ýEëø‚ÈHëø;çKëø KUëøb‘Xëø‚4ZëøC[ëø+ ùëø ýûëø Cþëø’(mÿëø‚(Ììø( mìø;(“ìø [ìøN]ìøb(Ñ^ìø‚`ìøŸaìø+iY#ù; \#ù+¥ $ù ê$ù -$ù’(R$ù‚(¥$ù( @$ù;(:$ùm$ù"o$ùb(Wq$ù‚s$ùt$ù+7\ù t!\ù ½#\ù’(ä$\ù‚(D'\ù( Æ(\ù;(·*\ù!\ù\ùb(Vƒ\ù‚…\ù†\ù+2”ù Á4”ù ù6”ù’(8”ù‚(p:”ù( ò;”ù;(ã=”ù^’”ùO””ùb(’–”ù‚I˜”ùV™”ù+ÌEÌù  HÌù TJÌù’(pKÌù‚(ÃMÌù( DOÌù;(5QÌù°¥Ìù¢§Ìùb(I©Ìù‚ûªÌù
+¬Ìù+žúРú è¢ú‚µ¥ú;Ѩú <²úb‚µú‚%·ú4¸ú+ûWú \Zú ³\ú’(Ç]ú‚( `ú( ¼aú;(ícú¹úö»úb(‡½ú‚L¿ú[Àú+ ¶;ú;C¹;ú+Mk<ú Žm<ú Ìo<ú’(ãp<ú‚(6s<ú( Ñt<ú;(×v<úyË<úuÍ<úb(ªÏ<ú‚_Ñ<ú{Ò<ú+‡}tú Ètú  ‚tú’(ƒtú‚(}…tú( þ†tú;(ñˆtúaÝtúRßtúb(•átú‚Lãtú[ätú+ϐ¬ú ý’¬ú 1•¬ú’(I–¬ú‚(¨˜¬ú( )š¬ú;(œ¬ú‡ð¬úyò¬úb(¼ô¬ú‚nö¬ú{÷¬ú+õ£äú 6¦äú }¨äú’(ˆ©äú‚(Û«äú( \­äú;(^¯äúõåúæåúb(åú‚D åúS
+åú+Xüûÿû  û‚áû;û jûb£û‚Rûaû+*¶û ‡¸û ͺû’(÷»û‚(V¾û( ÷¿û;(Âû£ûèûb(kû‚*û9û+“Tû;<Tû+EÉTû ŠËTû ÍÍTû’(òÎTû‚(EÑTû( àÒTû;(ÚÔTû®)Uû¯+Uûb(ä-Uû‚ž/Uû«0Uû+Áیû þ݌û GàŒû’(náŒû‚(ÎãŒû( PåŒû;(AçŒû±;û£=ûb(æ?û‚˜Aû§Bû+ïÄû QñÄû ‰óÄû’(¡ôÄû‚(÷Äû( ‚øÄû;(wúÄû OÅûúPÅûb(=SÅû‚ôTÅûVÅû+ ýû Iýû ”ýû’(°ýû‚( ýû( …
+ýû;(z ýûö`ýûèbýûb(dýû‚AfýûPgýû+ÉZ4ü†]4ü ™_4ü‚fb4ü;‚e4ü ìn4üb2r4ü‚Õs4üät4ü+«5ü  5ü c5ü’(w5ü‚(Ð5ü( l5ü;(™ 5üv5üˆx5üb(z5ü‚â{5üñ|5ü+*slü;Íulü+×'mü *mü V,mü’(m-mü‚(À/mü( [1mü;(a3müˆmüÿ‰müb(4Œmü‚émümü+:¥ü R<¥ü –>¥ü’(§?¥ü‚(B¥ü( ˆC¥ü;({E¥üû™¥ü웥üb(/ž¥ü‚查üõ ¥ü+iMÝü —OÝü ËQÝü’(ãRÝü‚(DUÝü( ÅVÝü;(¶XÝü"­Ýü¯Ýüb(W±Ýü‚ +³Ýü´Ýü+%_ý faý ­cý’(¸dý‚( gý( Œhý;(Žjý ¿ýÁýb(¨Âý‚`ÄýoÅý+â¸LýŸ»Lý ¦½Lý‚gÀLý;†ÃLý éÌLýb/ÐLý‚ÒÑLýáÒLý+®rMý  uMý QwMý’({xMý‚(ÚzMý( {|Mý;(~MýüÓMýAÖMýb(Ä×Mý‚ƒÙMý’ÚMý+ëЄý;ŽÓ„ý+˜……ý ݇…ý  Š…ý’(E‹…ý‚(˜…ý( 3…ý;(-‘…ýæ…ýè…ýb(Jê…ý‚ì…ýí…ý+*˜½ý gš½ý °œ½ý’(ם½ý‚(7 ½ý( ¹¡½ý;(ª£½ýø½ýú½ýb(Iü½ý‚öý½ýÿ½ý+ªõý I¬õý ®õý’(™¯õý‚(ø±õý( z³õý;(kµõýæ öý× öýb(öý‚ÑöýÞöý+[½-þ ˜¿-þ ãÁ-þ’(ÿÂ-þ‚(RÅ-þ( ÓÆ-þ;(ÈÈ-þC.þ5.þb(Ü .þ‚Ž".þ#.þ+eþØeþ eþ‚Òeþ;ð!eþ Ì+eþb/eþ‚µ0eþÄ1eþ+Ñeþ {Óeþ ÒÕeþ’(æÖeþ‚(?Ùeþ( ÛÚeþ;(Ýeþ©2fþ5fþb( 6fþ‚e8fþt9fþ+º/þ;]2þ+öâþ 7åþ uçþ’(Œèþ‚(ßêþ( zìþ;(€îþ"CžþEžþb(SGžþ‚Ižþ$Jžþ+›öÕþ ÜøÕþ  ûÕþ’(1üÕþ‚(‘þÕþ( Öþ;(ÖþzVÖþkXÖþb(®ZÖþ‚e\Öþt]Öþ+}ÿ «
+ÿ ß ÿ’(÷ +ÿ‚(Xÿ( Ùÿ;(Êÿ;hÿ-jÿb(plÿ‚&nÿ3oÿ+©Fÿ êFÿ 1 Fÿ’(<!Fÿ‚(#Fÿ( %Fÿ;('Fÿ•{Fÿ‹}Fÿb(2Fÿ‚ê€FÿùFÿ+lu}ÿ)x}ÿ 0z}ÿ‚ñ|}ÿ;€}ÿ y‰}ÿb¿Œ}ÿ‚bŽ}ÿq}ÿ+È-~ÿ 0~ÿ b2~ÿ’(Œ3~ÿ‚(ë5~ÿ( Œ7~ÿ;(9~ÿ~ÿJ‘~ÿb(͒~ÿ‚Œ”~ÿ›•~ÿ+eµÿ;µÿ+¡@¶ÿ æB¶ÿ )E¶ÿ’(NF¶ÿ‚(¡H¶ÿ( <J¶ÿ;(6L¶ÿ
+¡¶ÿ £¶ÿb(@¥¶ÿ‚ú¦¶ÿ¨¶ÿ+ˆTîÿ ÅVîÿ Yîÿ’(5Zîÿ‚(•\îÿ( ^îÿ;(`îÿx´îÿj¶îÿb(­¸îÿ‚_ºîÿn»îÿ+{f& ­h& åj&’(ýk&‚(\n&( Þo&;(Óq&eÆ&VÈ&b(™Ê&‚PÌ&]Í&+Óy^ |^ [~^’(w^‚(ʁ^( Lƒ^;(A…^½Ù^¯Û^b(VÝ^‚ß^à^+ ҕÝԕ ð֕‚Èٕ;äܕ …æ•bË镂në•}ì•+ +Œ– nŽ– Ֆ’(ّ–‚(2”–( Ε–;(ú—–{í–áï–b(rñ–‚7ó–Fô–+ŒêÍ;/íÍ+9ŸÎ z¡Î ¸£Î’(Ϥ΂("§Î( ½¨Î;(êÎdÿÎcÏb(˜Ï‚MÏiÏ+x± ¹³ ýµ’(·‚(n¹( ïº;(â¼bSb(–‚M\+ÐÄ> þÆ> 2É>’(JÊ>‚(«Ì>( ,Î>;(Ð>‰$?{&?b(¾(?‚t*?+?+÷×v 8Úv Üv’(ŠÝv‚(Ýßv( ^áv;(`ãvÝ7wÓ9wb(z;w‚2=wA>w+D0®3® 5®‚É7®;ì:® PD®b–G®‚9I®HJ®+ê® rì® ¸î®’(âﮂ(Aò®( âó®;(÷õ®iK¯­M¯b(0O¯‚ïP¯þQ¯+XHæ;ûJæ+ýæ Jÿæ ç’(µç‚(ç( £ç;(™ç}]ç_çb(¶aç‚pcçŒdç+‘ Ð $’(K‚(«( ,;(!‹oqb(Âs‚ou~v+ÿ"W 1%W i'W’((W‚(à*W( b,W;(S.W΂W¿„Wb(‡W‚¹ˆWƉW+<6 y8 Ä:’(à;‚(3>( ´?;(¥A –˜b(¹™‚k›zœ+ƒŽÆD‘Æ p“Æ‚>–Æ;^™Æ Ç¢Æb +¦Æ‚°§Æ¿¨Æ+†HÇ çJÇ >MÇ’(RNÇ‚(«PÇ( GRÇ;(sTǪÇk¬Çb(î­Ç‚³¯Ç°Ç+§þ;¹©þ+Ã[ÿ ^ÿ B`ÿ’(Yaÿ‚(¬cÿ( Geÿ;(Mgÿ¼ÿ¾ÿb(8Àÿ‚íÁÿ Ãÿ+n7 Yp7 £r7’(´s7‚(v7( •w7;(†y7÷Í7èÏ7b(+Ò7‚âÓ7ñÔ7+eo “ƒo Džo’(߆o‚(@‰o( ÁŠo;(²Œo.áo ãob(cåo‚ço&èo+1“§ r•§ ¹—§’(ʧ‚(›§( ˜œ§;(šž§(ó§õ§b(Åö§‚}ø§Œù§+ÿìÞ¼ïÞ ÃñÞ‚„ôÞ;£÷Þ  ßb]ß‚ßß+˦ß (©ß m«ß’(—¬ß‚(ö®ß( ˜°ß;(òß)àn
+àb(ñ à‚° +à¿à+;¼+ƹ  ¼ C¾’(Z¿‚(¸Á( SÃ;(VÅ=b(r‚1 M!+RÌO ÎO àÐO’(ÒO‚(®ÔO( @ÖO;(5ØOñ,P/Pb(_1P‚ 3P4P+1߇ cᇠ¨ã‡’(Ì䇂(+ç‡( ¬è‡;(Ÿê‡s?ˆdAˆb(§Cˆ‚^EˆkFˆ+vñ¿ ³ó¿ þõ¿’(÷¿‚(mù¿( ïú¿;(àü¿qQÀcSÀb(
+UÀ‚¼VÀËWÀ+DK÷N÷ P÷‚ëR÷;ýU÷ x_÷b¾b÷‚nd÷}e÷+&ø ‡ø Þ ø’(ò
+ø‚(K +ø( ëø;(øšføiøb(ƒjø‚HløWmø+«c/;Nf/+ç0 (0 f0’(}0‚(Ð0( k 0;(q"0#w0"y0b(W{0‚ }0(~0+¢*h ã,h '/h’(80h‚(˜2h( 4h;( 6h‡ŠhxŒhb(»Žh‚rh‘h+Š<  ¸>  ì@ ’(B ‚(eD ( æE ;(×G =œ /ž b(r  ‚(¢ 5£ +«OØ ìQØ 3TØ’(>UØ‚(‘WØ( YØ;([Ø‹¯Ø±Øb((³Ø‚à´ØïµØ+c© ¬ ,®‚í°;´ z½bÀÀ‚cÂrÃ+:c —e Ýg’(i‚(fk( m;(o|ÄÁÆb(DÈ‚ÊË+lÁG;ÄG+vH ^xH ¡zH’(Æ{H‚(~H( ´H;(®H‘ÖH•ØHb(ÊÚH‚„ÜH‘ÝH+¥ˆ€ ⊀ +€’(RŽ€‚(²€( 4’€;(%”€»è€­ê€b(ð쀂î€¬ï€+¾š¸ 𜸠(Ÿ¸’(@ ¸‚(Ÿ¢¸( !¤¸;(¦¸¹ú¸ªü¸b(íþ¸‚¤¹¶¹+'®ð d°ð ¯²ð’(˳ð‚(¶ð(  ·ð;(•¹ðBñ4ñb(Ûñ‚ñ ñ+¥(f ( y (‚F(;d( Û(b!(‚Ä(Ó (+À( îÂ( EÅ(’(YÆ(‚(²È(( NÊ(;(zÌ(H")$)b(.&)‚ó')))+=`;à!`+êÓ` +Ö` iØ`’(€Ù`‚(ÓÛ`( nÝ`;(tß`B4a>6ab(s8a‚(:aD;a+Pæ˜ ‘è˜ Õꘒ(æ똂(Fî˜( Çï˜;(ºñ˜VF™GH™b(ŠJ™‚AL™PM™+YøÐ ‡úÐ »üÐ’(ÓýЂ(4Ñ( µÑ;(¦Ñ=XÑ/ZÑb(r\Ñ‚(^Ñ5_Ñ+«  ì +  3 ’(> ‚(‘ (  ;( ½k ³m b(Zo ‚q !r +•e@Rh@ Yj@‚m@;=p@ §y@bí|@‚~@Ÿ@+öA J A "A’(º#A‚(&A( º'A;(Á)A_A¤Ab('ƒA‚æ„Aõ…A+¿}x;b€x+û0y @3y ƒ5y’(¨6y‚(û8y( –:y;(<y‘y‘“yb(ƕy‚€—y˜y+£C± àE± )H±’(PI±‚(°K±( 1M±;("O±¿£±±¥±b(ô§±‚¦©±µª±+-Wé _Yé —[é’(¯\é‚(_é( `é;(€bé=·é.¹éb(q»é‚(½é5¾é+@i! }k! Èm! ’(än! ‚(7q! ( ¹r! ;(ªt! QÉ! CË! b(êÌ! ‚œÎ! «Ï! +$ÃX áÅX ôÇX ‚ËÊX ;éÍX 9ØX bÛX ‚"ÝX 1ÞX +}Y rY ɁY ’(݂Y ‚(6…Y ( ҆Y ;(ÿˆY ¬ÞY áY b(’âY ‚WäY fåY +¡Û ;Dސ +ݎ‘ ‘‘ \“‘ ’(s”‘ ‚(Ɩ‘ ( a˜‘ ;(gš‘ 5ï‘ 1ñ‘ b(fó‘ ‚õ‘ 7ö‘ +®¢É ï¤É 3§É ’(D¨É ‚(¤ªÉ ( %¬É ;(®É ÄÊ µÊ b(øÊ ‚¯Ê ¾ Ê +δ
+ ü¶
+ 0¹
+’(Hº
+‚(§¼
+( (¾
+;(À
+±
+£
+b(æ
+‚œ
+©
++È9
+ `Ê9
+ §Ì9
+’(²Í9
+‚(Ð9
+( †Ñ9
+;(ˆÓ9
+1(:
+'*:
+b(Î+:
+‚†-:
+•.:
++˜ q
+Y#q
+ y%q
+‚:(q
+;]+q
+ À4q
+b8q
+‚©9q
+¸:q
++…Úq
+ âÜq
+ (ßq
+’(Ràq
+‚(±âq
+( Räq
+;(xæq
+<r
+_>r
+b(â?r
+‚¡Ar
+°Br
++
+9©
+;­;©
++·í©
+ üï©
+ ?ò©
+’(dó©
+‚(·õ©
+( R֩
+;(Lù©
+aNª
+ePª
+b(šRª
+‚TTª
+fUª
++zâ
+ ·â
+ â
+’('â
+‚(‡â
+( 
+;(ú â
+`â
+‚bâ
+b(Ådâ
+‚rfâ
+gâ
++“ Å ý ’( ‚(t ( û ;(ì “r „t b(Çv ‚~x ‹y +&R >(R ‰*R ’(¥+R ‚(ø-R ( z/R ;(k1R "†R ˆR b(»‰R ‚m‹R |ŒR +…~‰ B‰ Uƒ‰ ‚"†‰ ;>‰‰ ¨’‰ b ‚‘—‰  ˜‰ +g8Š È:Š =Š ’(3>Š ‚(Œ@Š ( (BŠ ;(UDŠ #šŠ xœŠ b( žŠ ‚ϊ Ý Š +—Á ;»™Á +ÅK N DP ’([Q ‚(®S ( IU ;(OW ¬Â ®Â b(P°Â ‚²Â !³Â +0^ú q`ú µbú ’(Æcú ‚(&fú ( §gú ;(šiú 6¾ú 'Àú b(jÂú ‚!Äú 4Åú +¤q2 Òs2 v2 ’(w2 ‚(y2 ( {2 ;(ñ|2 ˆÑ2 zÓ2 b(½Õ2 ‚o×2 |Ø2 +‹ƒj ̅j ˆj ’(‰j ‚(q‹j ( òŒj ;(ôŽj ãj “åj b(:çj ‚òèj êj +uÝ¡ 2à¡ 9â¡ ‚å¡ ;#è¡ Œñ¡ bÅô¡ ‚hö¡ w÷¡ +L—¢  ™¢ 曢 ’(¢ ‚(oŸ¢ ( ¡¢ ;(£¢ ºø¢ ÿú¢ b(‚ü¢ ‚Aþ¢ Pÿ¢ +ªõÙ ;MøÙ +æ¨Ú +«Ú n­Ú ’(“®Ú ‚(æ°Ú ( ²Ú ;({´Ú { Û | Û b(± +Û ‚kÛ xÛ +ù¼ + 6¿ + Á +’(¦Â +‚(Å +( ˆÆ +;(yÈ + + +b(J! +‚ü" + $ ++ÏJ + JÑJ + ‚ÓJ +’(šÔJ +‚(ùÖJ +( {ØJ +;(pÚJ +./K +1K +b(b3K +‚5K +&6K ++œâ‚ + Ùä‚ + $ç‚ +’(@è‚ +‚(“ê‚ +( ì‚ +;(
+î‚ +²Bƒ +¤Dƒ +b(KFƒ +‚ýGƒ + Iƒ ++;º +Ò=º + å?º +‚³Bº +;ÓEº + =Oº +bƒRº +‚&Tº +5Uº ++üôº + ]÷º + ´ùº +’(Ëúº +‚($ýº +( Àþº +;(ì» +£V» +øX» +b(‰Z» +‚N\» +]]» ++œSò +;?Vò ++Ió + Š
+ó + È ó +’(ß +ó +‚(2ó +( Íó +;(Óó +¡hó +jó +b(Òló +‚‡nó +£oó ++¯+ ð+ 4+’(E +‚(¥"+( &$+;(&+Åz+¶|+b(ù~+‚°€+¿++È,c ö.c *1c’(B2c‚(¡4c( "6c;(8c­ŒcŸŽcb(âc‚˜’c¥“c+@› \B› £D›’(®E›‚(H›( ‚I›;(„K›- ›#¢›b(Ê£›‚‚¥›‘¦›+”˜ÒU›Ò aÒ‚" Ò;A£Ò ¦¬Òbì¯Ò‚±Òž²Ò+kRÓ ÈTÓ WÓ’(8XÓ‚(—ZÓ( 8\Ó;(^^Ó´ÓJ¶Ób(Í·Ó‚Œ¹Ó›ºÓ+õ°
+;˜³
++¢e  íg  0j ’(Uk ‚(¨m ( Co ;(=q LÆ PÈ b(…Ê ‚?Ì LÍ +exC ¢zC ë|C’(~C‚(r€C( ôC;(åƒC‹ØCÚCb(ÂÜC‚oÞC~ßC+”Š{ ƌ{ þŽ{’({‚(u’{( ÷“{;(è•{ê{€ì{b(Ãî{‚zð{‡ñ{+ý³ : ³ …¢³’(¡£³‚(ô¥³( v§³;(k©³þ³´b(¬´‚^´m´+vöê3ùê Kûê‚þê;4ë Ñ
+ëb낺ëÉë+]°ë ¾²ë µë’()¶ë‚(‚¸ë( ºë;(K¼ë ì}ìb(ì‚Óìâì+#;¼#+ÆÃ# Æ# EÈ#’(\É#‚(¯Ë#( JÍ#;(PÏ#$$&$b(Q($‚*$"+$+1Ö[ rØ[ ¶Ú[’(ÇÛ[‚('Þ[( ¨ß[;(›á[76\(8\b(k:\‚"<\1=\+¥é“ Óë“ î“’(ï“‚(~ñ“( ÿò“;(óô“‰I”{K”b(¾M”‚tO”P”+ŒûË ÍýË Ì’(Ì‚(rÌ( óÌ;(õ̸[Ì©]Ìb(P_Ì‚aÌbÌ+ŒUIX UZ‚ ];?` ©ibïl‚žn­o+h Å  ’(5‚(”( 5;([
+qMsb(Ðt‚vžw+øm;;›p;+4!< y#< ¼%<’(á&<‚(4)<( Ï*<;(É,<Ɂ<ʃ<b(ÿ…<‚¹‡<ƈ<+Ü3t 6t b8t’(‰9t‚(é;t( k=t;(\?tø“tê•tb(-˜t‚ߙtîšt+fG¬ ˜I¬ ÐK¬’(èL¬‚(GO¬( ÈP¬;(¹R¬v§¬g©¬b(ª«¬‚a­¬n®¬+yYä ¶[ä ^ä’(_ä‚(paä( ñbä;(âd䏹䁻äb((½ä‚Ú¾äé¿ä+c³!¶ 9¸‚»;'¾ ‘Çb×Ê‚z̉Í+Pm ±o r’(s‚(uu( w;(=yñÎFÑb(×Ò‚œÔ«Õ+êËS;ÎS+'T hT ¦ƒT’(½„T‚(‡T( «ˆT;(±ŠT~ßT}áTb(²ãT‚gåTƒæT+ý’Œ >•Œ ‚—Œ’(“˜Œ‚(óšŒ( tœŒ;(gžŒóŒõŒb(G÷Œ‚þøŒ +úŒ+¥Ä D§Ä x©Ä’(ªÄ‚(ï¬Ä( p®Ä;(c°ÄÅòÅb(5 Å‚ç
+Åô Å+n¸ü ¯ºü ö¼ü’(¾ü‚(TÀü( ÕÁü;(×Ãü€ý|ýb(#ý‚Ûýêý+í4ª4 ¶4‚w4;–4 ù$4b2(4‚Õ)4ä*4+¾Ê4 Í4 aÏ4’(‹Ð4‚(êÒ4( ‹Ô4;( Ö4J,5.5b(05‚Ï15Þ25+8)l;Û+l+åÝl *àl mâl’(’ãl‚(åål( €çl;(zél‰>m@mb(ÂBm‚|Dm‰Em+ð¤ Úò¤ #õ¤’(Jö¤‚(ªø¤( +ú¤;(ü¤³P¥¥R¥b(èT¥‚•V¥¤W¥+¶Ý èÝ  Ý’(8Ý‚(—
+Ý(  Ý;( ݱbÝ¢dÝb(åfÝ‚œhÝ©iÝ+ \ §’(Â(( ˜;(!5v'xb(Îy‚‚{‘|+˜nLUqL msL‚DvL;byL ˂Lb†L‚´‡LÈL+Š(M ë*M B-M’(V.M‚(¯0M( K2M;(w4MMŠM£ŒMb(4ŽM‚ùM‘M+F‡„;鉄+ó;… 4>… r@…’(‰A…‚(ÜC…( wE…;(}G…Jœ…Iž…b(~ …‚3¢…O£…+^N½ ŸP½ ãR½’(ôS½‚(TV½( ÕW½;(ÈY½d®½U°½b(˜²½‚O´½^µ½+Òaõ dõ 4fõ’(Lgõ‚(«iõ( ,kõ;( mõ¶Áõ¨Ãõb(ëÅõ‚¡Çõ®Èõ+¹s- úu- Ax-’(Ly-‚(Ÿ{-(  }-;("-åÓ-ÖÕ-b(}×-‚4Ù-CÚ-+¹ÍdvÐd ‚Òd‚CÕd;bØd Ëádbåd‚ÀædÏçd+Š‡e ç‰e -Œe’(We‚(¶e( W‘e;(l“eéeYëeb(Üìe‚›îeªïe+æœ;§èœ+@™ …› ȝ’(힝‚(@¡( Û¢;(Ö¤ÕùÖûb( þ‚Åÿáž+è«Õ %®Õ y°Õ’( ±Õ‚(´Õ( ‚µÕ;(s·Õ ÖÖb(DÖ‚öÖÖ+}¿ + ¯Á + çà +’(ÿÄ +‚(^Ç +( ßÈ +;(ÐÊ +~!b(Á#‚x%‹&+ÑE ÍÓE ÖE’(4×E‚(‡ÙE( ÛE;(ùÜE¡1F“3Fb(:5F‚ì6Fû7F+t+}5.} M0}‚!3};=6} ¨?}bîB}‚‘D} E}+gå} Èç} ê}’(3ë}‚(Œí}( (ï};(Tñ}ýF~RI~b(ÕJ~‚šL~©M~+öCµ;™Fµ+3÷µ tùµ ²ûµ’(Éüµ‚(ÿµ( ·¶;(½¶§W¶ªY¶b(ß[¶‚”]¶°^¶+* î k +î ¯î’(Àî‚(&î( §î;(˜îFkî7mîb(zoî‚1qî@rî+I& w& «!&’(Ã"&‚($%&( ¥&&;(–(&>}&0&b(s&‚)ƒ&6„&+¬0^ í2^ 45^’(?6^‚(’8^( :^;(<^­^£’^b(J”^‚–^—^+‰•ы• ݍ•‚ž•;½“• &•bl •‚¢•£•+æB– :E– €G–’(ªH–‚( K–( ªL–;(­N–V¤–™¦–b(¨–‚Û©–ꪖ+D¡Í;ç£Í+ñUÎ 6XÎ yZÎ’(ž[΂(ñ]Î( Œ_Î;(†aÎœ¶Î¸Îb(Һ΂¼Î½Î+¯h ìj 5m’(\n‚(¼p( =r;(.tÊȼÊb(ÿÌ‚±ÎÀÏ+Íz> ÿ|> 7>’(O€>‚(®‚>( /„>;( †>ÍÚ>¾Ü>b(ß>‚¸à>Åá>+;Žv xv Òv’(ߓv‚(2–v( ³—v;(¤™vLîv>ðvb(åñv‚—óv¦ôv+¯æ­lé­ „ë­‚[î­;yñ­ Bû­bˆþ­‚+®:®+¡ ® £® Y¥®’(m¦®‚(ƨ®( bª®;(Ž¬®Y¯®¯b(?¯‚¯ ¯+Rÿå;õæ+ÿ³æ @¶æ ~¸æ’(•¹æ‚(è»æ( ƒ½æ;(‰¿æVçUçb(Šç‚?ç[ç+jÆ «È ïÊ’(Ì‚(`Î( áÏ;(ÔÑp&a(b(¤*‚[,j-+ÞÙV  ÜV @ÞV’(XßV‚(·áV( 8ãV;(,åVÂ9W´;Wb(÷=W‚©?W¶@W+ÅëŽ îŽ MðŽ’(XñŽ‚(«óŽ( ,õŽ;(.÷ŽóKéMb(O‚HQWR+ÊEƇHÆ ©JÆ‚jMÆ;‰PÆ íYÆb1]Æ‚ä^Æõ_Æ+²ÿÆ Ç žÇ’(ÈÇ‚('Ç( È Ç;(ñ Ç›aÇÞcÇb(aeÇ‚ gÇ/hÇ+‰^þ;,aþ+Åÿ 
+ÿ Bÿ’(Yÿ‚(·ÿ( Rÿ;(UÿCrÿhtÿb(vÿ‚Wxÿsyÿ+x$7 ¥&7 )7’(-*7‚(Ô,7( f.7;([07ф7ê†7b(-‰7‚ߊ7î‹7+ÿ6o 19o v;o’(š<o‚(ù>o( z@o;(mBoï–oà˜ob(#›o‚ڜoço+]J§ šL§ åN§’(P§‚(TR§( ÕS§;(ÆU§Aª§3¬§b(Ú­§‚Œ¯§›°§+¤ÞÓ¦Þ ë¨Þ‚¹«Þ;Ù®Þ H¸ÞbŽ»Þ‚>½ÞM¾Þ+‘\ß ò^ß Iaß’(]bß‚(¶dß( Vfß;(„hß¾ß]Àßb(àÁß‚¥Ãß´Äß+p¼;¿+­o îq ,t’(Cu‚(–w( 1y;(7{éÏåÑb(Ô‚ÏÕëÖ+bƒO £…O ç‡O’(øˆO‚(X‹O( ٌO;(̎OGãO8åOb({çO‚2éOAêO+J•‡ x—‡ ¬™‡’(̇‚(%‡( ¦ž‡;(— ‡ýô‡ïö‡b(2ù‡‚äú‡ñû‡+k¨¿ ¬ª¿ 󬿒(þ­¿‚(Q°¿( Ò±¿;(Ô³¿KÀA
+Àb(è À‚  +À¯À+#÷ë÷ ÷÷‚¸ ÷;× ÷ @÷by÷‚÷+÷+º÷ ì¼÷ 2¿÷’(\À÷‚(»Â÷( \Ä÷;(‚Æ÷ÿøBøb(Åø‚„!ø“"ø+]/;/+šÍ/ ßÏ/ "Ò/’(GÓ/‚(šÕ/( 5×/;(/Ù/.000b(K20‚4050+&àg câg ¬äg’(Óåg‚(3èg( µég;(¦ëg<@h.Bhb(qDh‚Fh-Gh+ªóŸ ÜõŸ øŸ’(,ùŸ‚(‹ûŸ(  ýŸ;(ýþŸ¥S –U b(ÙW ‚Y Z +¨Ø åØ 0
+Ø’(L Ø‚(Ÿ +Ø( !Ø;(ؾeØ°gØb(WiØ‚ kØlØ+‘_Nb fd‚=g;[j Åsb w‚®x½y+„ å <’(P‚(©!( E#;(v%L{¡}b(2‚÷€‚+ExG;èzG++H Â-H 0H’(1H‚(j3H( 5H;( 7HًHՍHb(
+H‚¿‘HےH+R?€ “A€ ×C€’(èD€‚(HG€( ÉH€;(¼J€XŸ€I¡€b(Œ£€‚C¥€R¦€+[Q¸ ‰S¸ ½U¸’(ÕV¸‚(6Y¸( ·Z¸;(¨\¸?±¸1³¸b(tµ¸‚&·¸3¸¸+­dð îfð 5ið’(@jð‚(“lð( nð;(pð¿ÄðµÆðb(\Èð‚Êð#Ëð+&½'ç¿' Â'‚ÈÄ';ëÇ' TÑ'bÔ'‚0Ö'?×'+w( gy( ­{(’(×|(‚(6(( ׀(;(à‚(‰Ø(ÌÚ(b(OÜ(‚Þ(ß(+wÕ_;Ø_+$Š` iŒ` ¬Ž`’(я`‚($’`( ¿“`;(¹•`¾ê`¿ì`b(ôî`‚®ð`Àñ`+ќ˜ Ÿ˜ W¡˜’(~¢˜‚(Þ¤˜( _¦˜;(P¨˜òü˜äþ˜b('™‚Ù™è™+õ®Ð '±Ð _³Ð’(w´Ð‚(Ö¶Ð( X¸Ð;(IºÐÑñÑb(4Ñ‚ëÑøÑ+n «Ä öÆ’(È‚(eÊ( æË;(×͏" $ b((& ‚Ú' é( +ò@¯@ Ç@‚”"@;°%@ /@ba2@‚4@5@+ÚÔ@ ;×@ ‹Ù@’(ŸÚ@‚(øÜ@( ”Þ@;(Áà@6AÖ8Ab(g:A‚,<A;=A+z3x;6x+'èx hêx ¦ìx’(½íx‚(ðx( «ñx;(±óx~Hy}Jyb(²Ly‚gNyƒOy+’ú° Óü° ÿ°’((±‚(ˆ±(  ±;(ü±¨Z±™\±b(à^±‚—`±¦a±+é Jé ~é’(–é‚(÷é( xé;(iénéòoéb(5ré‚çséôté+ ! D"! ‹$! ’(–%! ‚(é'! ( j)! ;(l+! €!  ‚! b(²ƒ! ‚j…! y†! +íyX ª|X ¶~X ‚X ; „X õX b.‘X ‚˒X ړX +É3Y &6Y l8Y ’(–9Y ‚(õ;Y ( –=Y ;(¼?Y a•Y ž—Y b(!™Y ‚àšY ï›Y +H’ ;딐 +…E‘ ÊG‘  +J‘ ’(2K‘ ‚(…M‘ (  O‘ ;(Q‘ )¦‘ -¨‘ b(bª‘ ‚¬‘ )­‘ +=XÉ zZÉ Ã\É ’(ê]É ‚(J`É ( ÌaÉ ;(½cÉ S¸É EºÉ b(ˆ¼É ‚5¾É D¿É +Ák! óm! +p!’(Cq!‚(¢s!( $u!;(w!¼Ë!­Í!b(ðÏ!‚§Ñ!´Ò!+¿}9! ü9! G‚9!’(cƒ9!‚(¶…9!( 8‡9!;(-‰9!ÕÝ9!Çß9!b(ná9!‚ ã9!/ä9!+¨×p!eÚp! ‘Üp!‚eßp!;ƒâp! Xìp!bžïp!‚Añp!Pòp!+«‘q!  ”q! \–q!’(p—q!‚(əq!( e›q!;(’q!hóq!½õq!b(N÷q!‚ùq!"úq!+jð¨!;ó¨!+©£©! ꥩ! (¨©!’(?©©!‚(’«©!( -­©!;(3¯©!ª!ÿª!b(4ª!‚é ª! ª!+·á! À¹á! ¼á!’(½á!‚(u¿á!( öÀá!;(éÂá!…â!vâ!b(¹â!‚pâ!â!+ˆÉ" ¶Ë" êÍ"’(Ï"‚(aÑ"( âÒ";(ÖÔ"l)"^+"b(¡-"‚S/"`0"+ÚÜQ" ßQ" báQ"’(mâQ"‚(ÀäQ"( AæQ";(CèQ"=R"÷>R"b(ž@R"‚UBR"dCR"+i5‰"*8‰" 6:‰"‚÷<‰";@‰" I‰"bÇL‰"‚vN‰"…O‰"+@ï‰" ñ‰" ãó‰"’( +õ‰"‚(l÷‰"(  +ù‰";(3û‰"ÛPŠ" SŠ"b(£TŠ"‚bVŠ"qWŠ"+ÊMÁ";mPÁ"+wÂ" ¼Â" ÿÂ"’(*Â"‚(}
+Â"(  Â";(Â"cÂ"eÂ"b(HgÂ"‚iÂ"jÂ"+%ú" bú" «ú"’(Òú"‚(2ú"( ´ú";(© ú"Quú"Cwú"b(†yú"‚8{ú"G|ú"+T'2# †)2# ¾+2#’(Ö,2#‚(5/2#( ¶02#;(§22#d‡2#U‰2#b(˜‹2#‚O2#\Ž2#+Ò:j# =j# Z?j#’(v@j#‚(ÉBj#( JDj#;(;Fj#ãšj#՜j#b(|žj#‚. j#=¡j#+F“¡#–¡# ˜¡#‚皡#;ž¡# n§¡#b´ª¡#‚W¬¡#f­¡#+-M¢# ŽO¢# åQ¢#’(ùR¢#‚(RU¢#( îV¢#;(Y¢#È®¢#±¢#b(®²¢#‚s´¢#†µ¢#+½«Ù#;`®Ù#+j`Ú# «bÚ# édÚ#’(fÚ#‚(ShÚ#( îiÚ#;(ôkÚ#ÁÀÚ#ÀÂÚ#b(õÄÚ#‚ªÆÚ#ÆÇÚ#+Õr$ u$ Zw$’(kx$‚(Ëz$( L|$;(?~$ëÒ$ÜÔ$b(×$‚ÖØ$åÙ$+Y†J$ ‡ˆJ$ »ŠJ$’(ӋJ$‚(4ŽJ$( µJ$;(¦‘J$>æJ$0èJ$b(sêJ$‚%ìJ$2íJ$+A˜‚$ ‚š‚$ ɜ‚$’(ԝ‚$‚(' ‚$( ¨¡‚$;(ª£‚$Sø‚$Iú‚$b(ðû‚$‚¨ý‚$·þ‚$+*ò¹$çô¹$ îö¹$‚¹ù¹$;Øü¹$ ”º$bÍ º$‚p º$ º$+¬º$ ^®º$ ¤°º$’(αº$‚(-´º$( εº$;(ô·º$œ +»$á»$b(d»$‚#»$2»$+‹
+ò$;. +ò$+Ƚò$  +Àò$ PÂò$’(uÃò$‚(ÈÅò$( cÇò$;(]Éò$ló$p ó$b(¥"ó$‚_$ó$l%ó$+€Ð*% ½Ò*% Õ*%’(-Ö*%‚(Ø*%( Ú*%;(Ü*%–0+%ˆ2+%b(Ë4+%‚x6+%‡7+%+äb% 6æb% nèb%’(†éb%‚(åëb%( gíb%;(Xïb%ÿCc%ðEc%b(3Hc%‚êIc%÷Jc%+öš% ?øš% Šúš%’(¦ûš%‚(ùýš%( |ÿš%;(q›%V›%
+X›%b(±Y›%‚c[›%r\›%+ëOÒ%©RÒ% ÕTÒ%‚¢WÒ%;ÀZÒ% *dÒ%bpgÒ%‚iÒ%"jÒ%+é Ó% J Ó% ¡Ó%’(µÓ%‚(Ó%( ªÓ%;(ÛÓ%ªkÓ%ÿmÓ%b(oÓ%‚UqÓ%drÓ%+Ÿh
+&;Bk
+&+Û &  & Z &’(q! &‚(Ä# &( _% &;(e' &3| &/~ &b(d€ &‚‚ &5ƒ &+A.C& ‚0C& Æ2C&’(×3C&‚(76C&( ¸7C&;(«9C&GŽC&8C&b({’C&‚2”C&A•C&+µA{& ãC{& F{&’(/G{&‚(ŽI{&( K{&;(M{&Ÿ¡{&‘£{&b(Ô¥{&‚Š§{&—¨{&+ +U³& NW³& •Y³&’( Z³&‚(ó\³&( t^³&;(v`³&9µ³&*·³&b(Ѹ³&‚Žº³&»³&+œ­ê&]°ê& d²ê&‚%µê&;D¸ê& ®Áê&bôÄê&‚£Æê&²Çê&+mgë& Êië& lë&’(:më&‚(™oë&( :që&;(`së&#Éë&hËë&b(ëÌë&‚ªÎë&¹Ïë&+Æ"';¶È"'+Àz#' }#' H#'’(m€#'‚(À‚#'( [„#';(U†#'UÛ#'VÝ#'b(‹ß#'‚Eá#'Râ#'+h[' ¥[' î‘['’(“['‚(u•['( ÷–[';(ì˜['‰í['{ï['b(¾ñ['‚pó['ô['+ŒŸ“' ¾¡“' ö£“'’(¥“'‚(m§“'( 﨓';(䪓'¢ÿ“'“”'b(Ö”'‚”'š”'+³Ë' MµË' ˜·Ë'’(´¸Ë'‚(»Ë'( ‰¼Ë';(~¾Ë'&Ì'Ì'b(¿Ì'‚qÌ'€Ì'+‰ (F( Y(‚1(;M( ·(bý"(‚ $(¯%(+vÅ( ×Ç( .Ê(’(BË(‚(›Í(( 7Ï(;(hÑ('(k)(b(ü*(‚Á,(Ð-(+ $;(;®&;(+¸Ø;( ùÚ;( 7Ý;(’(NÞ;(‚(¡à;(( <â;(;(Bä;(9<(;<(b(C=<(‚ø><(@<(+#ës( dís( ¨ïs(’(¹ðs(‚(ós(( šôs(;(ös(9Kt(*Mt(b(mOt(‚$Qt(3Rt(+<ý«( jÿ«( ž¬(’(¶¬(‚(¬(( ˜¬(;(‰¬(!]¬(_¬(b(Va¬(‚ c¬(d¬(+ä( Ðä( ä(’("ä(‚(uä(( öä(;(øä(¡pä(—rä(b(>tä(‚öuä(wä(+xj)5m) <o)‚ýq);u) ‡)b͂)‚p„)…)+Ô") 1%) w')’(¡()‚(+)( ¡,);(Ç.)o„)³†)b(6ˆ)‚õ‰)‹)+΂S);q…S)+ 6T) P8T) “:T)’(¸;T)‚( >T)( ¦?T);( AT)¯–T)³˜T)b(èšT)‚¢œT)¯T)+ÃHŒ) KŒ) IMŒ)’(pNŒ)‚(ÐPŒ)( RRŒ);(CTŒ)Ù¨Œ)˪Œ)b(­Œ)‚»®Œ)ʯŒ)+G\Ä) y^Ä) ±`Ä)’(ÉaÄ)‚((dÄ)( ªeÄ);(›gÄ)B¼Ä)3¾Ä)b(vÀÄ)‚-ÂÄ):ÃÄ)+Enü) ‚pü) Írü)’(ésü)‚(<vü)( ¾wü);(³yü)[Îü)MÐü)b(ôÑü)‚¦Óü)µÔü)+.È3*ëÊ3* Í3*‚ÐÏ3*;ìÒ3* dÜ3*bªß3*‚Má3*\â3*+‚4* w„4* Ά4*’(â‡4*‚(;Š4*( ׋4*;(Ž4*×ã4*,æ4*b(½ç4*‚‚é4*‘ê4*+Ìàk*;oãk*+”l* I–l* ‡˜l*’(ž™l*‚(ñ›l*( Œl*;(’Ÿl*eôl*döl*b(™øl*‚Núl*jûl*+y¦¤* º¨¤* þª¤*’(¬¤*‚(o®¤*( ð¯¤*;(籤*„¥*u¥*b(¸
+¥*‚o ¥*~ +¥*+ò¹Ü*  ¼Ü* T¾Ü*’(l¿Ü*‚(ÍÁÜ*( NÃÜ*;(?ÅÜ*çÝ*ÙÝ*b(Ý*‚ÒÝ*ß Ý*+UÍ+ –Ï+ ÝÑ+’(èÒ+‚(;Õ+( ¼Ö+;(¾Ø+g-+]/+b(1+‚¼2+Ë3++Î%L+‹(L+ ’*L+‚S-L+;r0L+ Û9L+b!=L+‚Ä>L+Ó?L++šßL+ îáL+ 4äL+’(^åL+‚(½çL+( ^éL+;(gëL+þ@M+CCM+b(ÆDM+‚…FM+”GM++í=„+;@„++šò„+ ßô„+ "÷„+’(Gø„+‚(šú„+( 5ü„+;(/þ„+/S…+0U…+b(eW…+‚Y…+,Z…++B½+ ½+ È ½+’(ï
+½+‚(O +½+( ѽ+;(½+^e½+Pg½+b(“i½+‚Ek½+Tl½++aõ+ “õ+ Ëõ+’(ãõ+‚(Bõ+( Ä õ+;(¹"õ+wwõ+hyõ+b(«{õ+‚b}õ+o~õ++å*-, "--, m/-,’(‰0-,‚(Ü2-,( ^4-,;(S6-,ûŠ-,íŒ-,b(”Ž-,‚F-,U‘-,+^ƒd,†d, .ˆd,‚‹d,;"Žd, Œ—d,bҚd,‚uœd,„d,+K=e, ¬?e, Be,’(Ce,‚(pEe,(  Ge,;(=Ie,ëže,@¡e,b(Ñ¢e,‚–¤e,¥¥e,+à›œ,;ƒžœ,+P, ÎR,  U,’(#V,‚(vX,( Z,;(\,䰝,㲝,b(µ,‚Ͷ,鷝,+øbÕ, 9eÕ, }gÕ,’(ŽhÕ,‚(îjÕ,( olÕ,;(bnÕ,ÃÕ,ÿÄÕ,b(BÇÕ,‚ùÈÕ,ÊÕ,+|v +- ªx +- Þz +-’(ö{ +-‚(W~ +-( Ø +-;(Ɂ +-aÖ +-SØ +-b(–Ú +-‚LÜ +-YÝ +-+dˆE- ¥ŠE- ìŒE-’(÷E-‚(JE-( ˑE-;(͓E-vèE-lêE-b(ìE-‚ËíE-ÚîE-+Mâ|-
+å|- ç|-‚×é|-;öì|- Zö|-b ù|-‚Cû|-Rü|-+œ}- |ž}-  }-’(ì¡}-‚(K¤}-( ì¥}-;(¨}-´ý}-ùÿ}-b(|~-‚;~-J~-+£ú´-;Fý´-+à­µ- %°µ- h²µ-’(³µ-‚(൵-( {·µ-;(u¹µ-„¶-ˆ¶-b(½¶-‚w¶-„¶-+˜Àí- ÕÂí- Åí-’(EÆí-‚(¥Èí-( 'Êí-;(Ìí-® î- "î-b(ã$î-‚&î-Ÿ'î-+Ô%. NÖ%. †Ø%.’(žÙ%.‚(ýÛ%.( Ý%.;(pß%.4&.6&.b(K8&.‚:&.;&.+æ]. Wè]. ¢ê].’(¾ë].‚(î].( “ï].;(ˆñ].5F^.'H^.b(ÎI^.‚€K^.L^.+ @•.ÆB•. ÙD•.‚§G•.;ÇJ•. 1T•.bwW•.‚Y•.)Z•.+ðù•. Qü•. ¨þ•.’(¼ÿ•.‚(–.( ·–.;(è–.·[–. ^–.b(_–.‚ba–.qb–.+¬XÍ.;O[Í.+è Î. )Î. gÎ.’(~Î.‚(ÑÎ.( lÎ.;(rÎ.PlÎ.OnÎ.b(„pÎ.‚9rÎ.UsÎ.+Ï/ "/ T$/’(e%/‚(Å'/( F)/;(9+/Õ/Ɓ/b( „/‚À…/φ/+Ø1>/ 4>/ :6>/’(R7>/‚(³9>/( 4;>/;(%=>/¼‘>/®“>/b(ñ•>/‚§—>/´˜>/+*Ev/ kGv/ ²Iv/’(½Jv/‚(Mv/( “Nv/;(“Pv/<¥v/2§v/b(Ù¨v/‚‘ªv/ «v/+£­/` ­/ g¢­/‚(¥­/;G¨­/ °±­/bµ­/‚¤¶­/³·­/+oW®/ ÃY®/ \®/’(2]®/‚(‘_®/( 2a®/;(Kc®/ô¸®/9»®/b(¼¼®/‚{¾®/Š¿®/+ãµå/;†¸å/+jæ/ Õlæ/  +oæ/’($pæ/‚(‚ræ/( tæ/;(&væ/Ëæ/9Íæ/b(nÏæ/‚(Ñæ/DÒæ/+N}0 {0 ܁0’(ƒ0‚(ª…0( <‡0;(1‰0§Ý0Àß0b(â0‚°ã0¿ä0+ՏV0 ’V0 L”V0’(p•V0‚(ϗV0( P™V0;(C›V0¿ïV0°ñV0b(óóV0‚ªõV0·öV0+-£Ž0 j¥Ž0 µ§Ž0’(ѨŽ0‚($«Ž0( ¦¬Ž0;(—®Ž0 0þ0b(¥0‚W0f 0+oûÅ0,þÅ0 ?Æ0‚Æ0;4Æ0 Æ0bãÆ0‚“Æ0¢Æ0+\µÆ0 ½·Æ0 ºÆ0’((»Æ0‚(½Æ0( !¿Æ0;(NÁÆ0ÁÇ0Ç0b(™Ç0‚^Ç0mÇ0+ºþ0;]þ0+gÈþ0 ¨Êþ0 æÌþ0’(ýÍþ0‚(PÐþ0( ëÑþ0;(ñÓþ0£(ÿ0¢*ÿ0b(×,ÿ0‚Œ.ÿ0¨/ÿ0+·Ú61 øÜ61 <ß61’(Mà61‚(­â61( .ä61;(!æ61œ:71<71b(Ð>71‚‡@71–A71+
+în1 8ðn1 lòn1’(„ón1‚(åõn1( f÷n1;(Wùn1½Mo1¯Oo1b(òQo1‚¨So1µTo1++§1 l§1 ³§1’(¾§1‚( §1( ’
+§1;(” §1 a§1c§1b(¨d§1‚`f§1og§1+rYÞ1/\Þ1 ;^Þ1‚ü`Þ1;dÞ1 „mÞ1bÊpÞ1‚mrÞ1|sÞ1+Dß1 ¡ß1 çß1’(ß1‚(pß1( ß1;(7ß1¢tß1çvß1b(jxß1‚)zß18{ß1+‘q2;4t2+>&2 ƒ(2 Æ*2’(ë+2‚(>.2( Ù/2;(Ó12·†2»ˆ2b(ðŠ2‚ªŒ2¼2+Ð8O2  +;O2 V=O2’(}>O2‚(Ý@O2( _BO2;(PDO2ë˜O2ߚO2b("O2‚ϞO2ޟO2+_L‡2 ‘N‡2 ÉP‡2’(áQ‡2‚(@T‡2( ÂU‡2;(³W‡2Z¬‡2K®‡2b(”°‡2‚K²‡2X³‡2+b^¿2 Ÿ`¿2 êb¿2’(d¿2‚(Yf¿2( Ûg¿2;(Ìi¿2s¾¿2eÀ¿2b( ¿2‚¾Ã¿2ÍÄ¿2+F¸ö2»ö2 ½ö2‚ã¿ö2;ÿÂö2 ÚÌö2b Ðö2‚ÃÑö2ÒÒö2+(r÷2 ‰t÷2 àv÷2’(ôw÷2‚(Mz÷2( é{÷2;(~÷2äÓ÷29Ö÷2b(Ê×÷2‚Ù÷2žÚ÷2+ÙÐ.3;|Ó.3+„/3 V†/3 ”ˆ/3’(«‰/3‚(þ‹/3( ™/3;(Ÿ/3mä/3iæ/3b(žè/3‚Sê/3oë/3+æ—g3 'šg3 kœg3’(|g3‚(ܟg3( ]¡g3;(P£g3ì÷g3Ýùg3b( üg3‚×ýg3æþg3+著3 ¬Ÿ3 Q®Ÿ3’(i¯Ÿ3‚(ʱŸ3( K³Ÿ3;(<µŸ3Ó  3Å  3b( 3‚¾ 3Ë 3+A½×3 ‚¿×3 ÉÁ×3’(ÔÂ×3‚('Å×3( ¨Æ×3;(ªÈ×3SØ3IØ3b(ð Ø3‚¨"Ø3·#Ø3+º4w4 ~4‚I4;h 4 Ò)4b-4‚».4Ê/4+‘Ï4 åÑ4 +Ô4’(UÕ4‚(´×4( UÙ4;(^Û4õ04:34b(½44‚|64‹74+ä-G4;‡0G4+‘âG4 ÖäG4 çG4’(>èG4‚(‘êG4( ,ìG4;(&îG4&CH4'EH4b(\GH4‚IH4#JH4+9õ4 v÷4 ¿ù4’(æú4‚(Fý4( Èþ4;(¹€4UU€4GW€4b(ŠY€4‚<[€4K\€4+ø4 õ
+¸4 - +¸4’(E¸4‚(¤¸4( &¸4;(¸4Ùh¸4Êj¸4b( +m¸4‚Än¸4Ño¸4+Üð4 ð4 dð4’(€ ð4‚(Ó"ð4( U$ð4;(J&ð4òzð4ä|ð4b(‹~ð4‚=€ð4Lð4+Åt'5‚w'5 •y'5‚b|'5;~'5 èˆ'5b.Œ'5‚э'5àŽ'5+7-(5 ˜/(5 ï1(5’(3(5‚(\5(5( ø6(5;()9(5ގ(54‘(5b(Œ(5‚Š”(5™•(5+G_5;ê_5+„@`5 ÅB`5 E`5’(F`5‚(mH`5( J`5;(L`5Û `5Ú¢`5b(¥`5‚Ħ`5à§`5+ïR˜5 0U˜5 tW˜5’(…X˜5‚(åZ˜5( f\˜5;(Y^˜5³˜5ö´˜5b(9·˜5‚ð¸˜5ÿ¹˜5+sfÐ5 ¡hÐ5 ÕjÐ5’(íkÐ5‚(NnÐ5( ÏoÐ5;(ÀqÐ5XÆÐ5JÈÐ5b(ÊÐ5‚CÌÐ5PÍÐ5+[x6 œz6 ã|6’(î}6‚(A€6( 6;(ă6mØ6cÚ6b(
+Ü6‚ÂÝ6ÑÞ6+DÒ?6Õ?6  +×?6‚ÎÙ?6;íÜ?6 Qæ?6b—é?6‚:ë?6Iì?6+Œ@6 sŽ@6 ¹@6’(ã‘@6‚(B”@6( ã•@6;( ˜@6«í@6ðï@6b(sñ@6‚2ó@6Aô@6+šêw6;=íw6+GŸx6 Œ¡x6 Ï£x6’(ô¤x6‚(G§x6( è¨x6;(âªx6ñÿx6õy6b(*y6‚äy6ñy6+²°6 B´°6 ‹¶°6’(²·°6‚(º°6( ”»°6;(…½°6+±6±6b(b±6‚±6±6+4Äè6 fÆè6 žÈè6’(¶Éè6‚(Ìè6( —Íè6;(ˆÏè6/$é6 &é6b(c(é6‚*é6'+é6+× 7 ÚÙ 7 %Ü 7’(AÝ 7‚(”ß 7( á 7;( ã 7³7!7¥9!7b(L;!7‚þ<!7 +>!7+0X7Ó2X7 æ4X7‚¸7X7;Ô:X7 >DX7b„GX7‚'IX76JX7+ýéX7 ^ìX7 µîX7’(ÉïX7‚("òX7( ¾óX7;(ëõX7¹KY7NY7b(¤OY7‚iQY7xRY7+®H7;QK7+êû7 +þ7 i‘7’(€‘7‚(Ó‘7( n‘7;(t‘7B\‘7>^‘7b(s`‘7‚(b‘7Dc‘7+»É7 üÉ7 @É7’(QÉ7‚(±É7( 2É7;(%É7ÁoÉ7²qÉ7b(õsÉ7‚¬uÉ7»vÉ7+Ä!8 ò#8 &&8’(>'8‚(Ÿ)8(  +8;(-8¨8šƒ8b(݅8‚“‡8 ˆ8+598 W798 ž998’(©:98‚(ü<98( }>98;(@98(•98—98b(Ř98‚}š98Œ›98+p8Lp8 S’p8‚•p8;=˜p8 §¡p8bí¤p8‚¦p8Ÿ§p8+fGq8 ºIq8 Lq8’(*Mq8‚(‰Oq8( *Qq8;(3Sq8ʨq8«q8b(’¬q8‚Q®q8`¯q8+¹¥¨8;\¨¨8+fZ©8 «\©8 î^©8’(`©8‚(fb©8( d©8;(ûe©8ûº©8ü¼©8b(1¿©8‚ëÀ©8øÁ©8+má8 Koá8 ”qá8’(»rá8‚(uá8( vá8;(Žxá8*Íá8Ïá8b(_Ñá8‚Óá8 Ôá8+˜€9 ʂ9 …9’(†9‚(yˆ9( û‰9;(ð‹9®à9Ÿâ9b(âä9‚™æ9¦ç9+±’Q9 î”Q9 9—Q9’(U˜Q9‚(¨šQ9( *œQ9;(žQ9ÇòQ9¹ôQ9b(`öQ9‚øQ9!ùQ9+šìˆ9Wïˆ9 oñˆ9‚<ôˆ9;X÷ˆ9 É9b ‰9‚¬‰9»‰9+‚¦‰9 㨉9 :«‰9’(N¬‰9‚(§®‰9( C°‰9;(t²‰9"Š9w
+Š9b( Š9‚Í +Š9ÜŠ9+Á9;ºÁ9+S¸Á9 ”ºÁ9 Ò¼Á9’(é½Á9‚(<ÀÁ9( ×ÁÁ9;(ÝÃÁ9«Â9§Â9b(ÜÂ9‚‘Â9­Â9+$Ìù9 eÎù9 ©Ðù9’(ºÑù9‚(Ôù9( ›Õù9;(Ž×ù9:,ú9+.ú9b(n0ú9‚%2ú943ú9+=Þ1: kà1: Ÿâ1:’(·ã1:‚(æ1:( ™ç1:;(Šé1:'>2:@2:b(\B2:‚D2:E2:+•ñi: Öói: öi:’((÷i:‚({ùi:( üúi:;(þüi:§Qj:Sj:b(DUj:‚üVj: Xj:+J¡:ËL¡: ÒN¡:‚“Q¡:;²T¡: ^¡:b[a¡:‚þb¡: +d¡:+Ú¢: 7¢: }¢:’(§ ¢:‚( ¢:( § +¢:;(Í¢:ze¢:¿g¢:b(Bi¢:‚k¢:l¢:+jbÙ:; +eÙ:+Ú: \Ú: ŸÚ:’(ÄÚ:‚(Ú:( ² Ú:;(¬"Ú:»wÚ:¿yÚ:b(ô{Ú:‚®}Ú:»~Ú:+Ï);  ,; U.;’(|/;‚(Ü1;( ^3;;(O5;å‰;׋;b(Ž;‚Ǐ;֐;+è;J; >J; R@J;’(jAJ;‚(ÉCJ;( KEJ;;(<GJ;ã›J;ԝJ;b( J;‚ΡJ;Û¢J;+QO‚; ŽQ‚; ÙS‚;’(õT‚;‚(HW‚;( ÊX‚;;(¿Z‚;g¯‚;Y±‚;b(³‚;‚²´‚;Áµ‚;+ʧ¹;‡ª¹; š¬¹;‚h¯¹;;ˆ²¹; %¼¹;bk¿¹;‚Á¹;¹;+±aº; dº; ifº;’(}gº;‚(Öiº;( rkº;;(Ÿmº;mú;Âź;b(SǺ;‚ɺ;'ʺ;+bÀñ;;Ãñ;+uò; Pwò; Žyò;’(¥zò;‚(ø|ò;( “~ò;;(™€ò;fÕò;e×ò;b(šÙò;‚OÛò;kÜò;+z‡*< »‰*< ÿ‹*<’(*<‚(p*<( ñ*<;(ä’*<€ç*<qé*<b(´ë*<‚kí*<zî*<+îšb< b< PŸb<’(h b<‚(É¢b<( J¤b<;(;¦b<Òúb<Äüb<b(ÿb<‚½c<Êc<+Õ¬š< ¯š< ]±š<’(h²š<‚(»´š<( <¶š<;(>¸š<ç ›<Ý›<b(„›<‚<›<K›<+¿Ò<| Ò< ƒ Ò<‚DÒ<;gÒ< ÑÒ<bÒ<‚ºÒ<É Ò<+ÀÒ< äÂÒ< *ÅÒ<’(TÆÒ<‚(³ÈÒ<( TÊÒ<;(]ÌÒ<ô!Ó<9$Ó<b(¼%Ó<‚{'Ó<Š(Ó<+ã
+=;†!
+=+ Ò
+= eÔ
+= ¨Ö
+=’(Í×
+=‚( Ú
+=( »Û
+=;(µÝ
+=µ2 =¶4 =b(ë6 =‚¥8 =²9 =+3æB= pèB= ¹êB=’(àëB=‚(@îB=( ÂïB=;(·ñB=YFC=KHC=b(ŽJC=‚@LC=OMC=+\øz= Žúz= Æüz=’(Þýz=‚(={=( ¿{=;(°{=mX{=^Z{=b(¡\{=‚X^{=e_{=+p
+³= ­ ³= ø³=’(³=‚(g³=( é³=;(Þ³=†j³=xl³=b(n³=‚Ño³=àp³=+Ydê=gê= .iê=‚ûkê=;oê= ‚xê=bÈ{ê=‚k}ê=z~ê=+Aë= ¢ ë= ù"ë=’( +$ë=‚(f&ë=( (ë=;(3*ë=áë=6‚ë=b(ǃë=‚Œ…ë=›†ë=+Ö|">;y">+0#> S2#> ‘4#>’(¨5#>‚(û7#>( –9#>;(œ;#>o#>n’#>b(£”#>‚X–#>t—#>+îC[> /F[> sH[>’(„I[>‚(äK[>( eM[>;(XO[>¤[>û¥[>b(>¨[>‚õ©[>«[>+ +V“> ;X“> oZ“>’(‡[“>‚(è]“>( i_“>;(Za“>ñµ“>㷓>b(&º“>‚Ø»“>弓>+_iË>  kË> çmË>’(ònË>‚(EqË>( ÆrË>;(ÈtË>qÉË>gËË>b(ÍË>‚ÆÎË>ÕÏË>+ØÁ?•Ä? œÆ?‚]É?;|Ì? ßÕ?bÙ?‚»Ú?ÊÛ?+¤{? ~? G€?’(q?‚(Ѓ?( q…?;(—‡??Ý?„ß?b(á?‚Æâ?Õã?+.Ú:?;ÑÜ:?+ێ;?  ‘;? c“;?’(ˆ”;?‚(ۖ;?( v˜;?;(pš;?€ï;?„ñ;?b(¹ó;?‚sõ;?€ö;?+™¡s? Ö£s? ¦s?’(F§s?‚(¦©s?( («s?;(­s?¯t?¡t?b(ät?‚–t?¥t?+²³«? 䵫? ¸«?’(4¹«?‚(“»«?( ½«?;(¿«?­¬?ž¬?b(á¬?‚˜¬?º¬?+Çã? XÉã? £Ëã?’(¿Ìã?‚(Ïã?( ”Ðã?;(‰Òã?1'ä?#)ä?b(Ê*ä?‚|,ä?‹-ä?+!@Á#@ Ô%@‚«(@;É+@ 25@bx8@‚:@*;@+Ù@ âÛ@ 9Þ@’(Mß@‚(¦á@( Bã@;(så@B;@—=@b((?@‚í@@üA@+§9S@;J<S@+äìS@ %ïS@ cñS@’(zòS@‚(ÍôS@( höS@;(nøS@;MT@:OT@b(oQT@‚$ST@@TT@+Oÿ‹@ Œ@ ÔŒ@’(åŒ@‚(EŒ@( ÆŒ@;(¹
+Œ@U_Œ@FaŒ@b(‰cŒ@‚@eŒ@OfŒ@+ÃÄ@ ñÄ@ %Ä@’(=Ä@‚(žÄ@( Ä@;(Ä@§rÄ@™tÄ@b(ÜvÄ@‚’xÄ@ŸyÄ@+ª$ü@ ë&ü@ 2)ü@’(=*ü@‚(,ü@( .ü@;(0ü@¼„ü@²†ü@b(Yˆü@‚Šü@ ‹ü@+”~3AQ3A qƒ3A‚2†3A;S‰3A ¼’3Ab–3A‚¥—3A´˜3A+{84A Ï:4A =4A’(?>4A‚(ž@4A( ?B4A;(HD4Aߙ4A$œ4Ab(§4A‚fŸ4Au 4A+ΖkA;q™kA+{KlA ÀMlA PlA’((QlA‚({SlA( UlA;(WlA¬lA®lAb(F°lA‚²lA +³lA+#^¤A ``¤A ©b¤A’(Ðc¤A‚(0f¤A( ²g¤A;(£i¤A?¾¤A1À¤Ab(t¤A‚&ĤA5ŤA+BpÜA trÜA ¬tÜA’(ÄuÜA‚(#xÜA( ¥yÜA;(š{ÜAXÐÜAIÒÜAb(ŒÔÜA‚CÖÜAP×ÜA+ƃB †B NˆB’(j‰B‚(½‹B( ?B;(4BáãBÓåBb(zçB‚,éB?êB+DÜKBßKB áKB‚áãKB;ýæKB gðKBb­óKB‚PõKB_öKB+&–LB ‡˜LB ޚLB’(ò›LB‚(KžLB( çŸLB;(¢LBÌ÷LB!úLBb(²ûLB‚wýLB†þLB+ÁôƒB;d÷ƒB+n©„B ¯«„B í­„B’(¯„B‚(W±„B( ò²„B;(ø´„BÖ …BÒ …Bb(…B‚¼…BØ…B+仼B %¾¼B iÀ¼B’(zÁ¼B‚(ÚüB( [żB;(NǼBú½Bë½Bb(. ½B‚å!½Bô"½B+ýÍôB +ÐôB _ÒôB’(wÓôB‚(ØÕôB( Y×ôB;(JÙôBâ-õBÔ/õBb(2õB‚Í3õBÚ4õB+Pá,C ‘ã,C Øå,C’(ãæ,C‚(6é,C( ·ê,C;(¹ì,CbA-CXC-Cb(ÿD-C‚·F-CÆG-C+É9dC†<dC >dC‚NAdC;qDdC ÕMdCbQdC‚¾RdCÍSdC+šódC ÷õdC =ødC’(gùdC‚(ÆûdC( gýdC;(ÿdC5UeCzWeCb(ýXeC‚¼ZeCË[eC+$RœC;ÇTœC+ѝC  C Y C’(~ C‚(ѝC( lC;(fCvgCziCb(¯kC‚imCvnC+ÕC ÌÕC ÕC’(<ÕC‚(œ!ÕC( #ÕC;(%ÕC¥yÕC—{ÕCb(Ú}ÕC‚‡ÕC–€ÕC+- +D E/ +D }1 +D’(•2 +D‚(ô4 +D( v6 +D;(g8 +D +DÿŽ +Db(B‘ +D‚ù’ +D” +D+?ED NAED ™CED’(µDED‚(GED( ŠHED;(JED'ŸED¡EDb(À¢ED‚r¤ED¥ED+ú˜|D·›|D ʝ|D‚¡ |D;¿£|D ®­|Dbô°|D‚—²|D¦³|D+wQ}D ØS}D /V}D’(CW}D‚(œY}D( 8[}D;(i]}D8³}Dµ}Db(·}D‚ã¸}Dò¹}D+±´D;@´´D+ÚdµD gµD YiµD’(pjµD‚(ÃlµD( ^nµD;(dpµD1ŵD0ǵDb(eɵD‚˵D6̵D+EwíD †yíD Ê{íD’(Û|íD‚(;íD( ¼€íD;(¯‚íDK×íD<ÙíDb(ÛíD‚6ÝíDEÞíD+¹Š%E çŒ%E %E’(3%E‚(”’%E( ”%E;(–%Eê%Eì%Eb(Òî%E‚ˆð%E•ñ%E+ œ]E áž]E (¡]E’(3¢]E‚(†¤]E( ¦]E;( ¨]E²ü]E¨þ]Eb(O^E‚^E^E+Šö”EGù”E gû”E‚(þ”E;I•E ²
+•Eb•E‚¦•Eµ•E+q°•E Ų•E 
+µ•E’(4¶•E‚(“¸•E( 4º•E;(M¼•Eð–E5–Eb(¸–E‚w–E†–E+àÍE;ƒÍE+ÃÍE ÒÅÍE 
+ÈÍE’(!ÉÍE‚(ËÍE( ÍÍE;(!ÏÍE$ÎE5&ÎEb(j(ÎE‚$*ÎE@+ÎE+EÖF rØF ÓÚF’(úÛF‚(¡ÞF( 3àF;((âF©6FÂ8Fb(;F‚²<FÁ=F+×è=F  ë=F Ní=F’(rî=F‚(Ñð=F( Rò=F;(Eô=FÁH>F²J>Fb(õL>F‚¬N>F¿O>F+ÄúuF ýuF LÿuF’(hvF‚(»vF( =vF;(.vF£ZvF•\vFb(<^vF‚î_vFý`vF+wT­F4W­F GY­F‚\­F;5_­F Ÿh­Fbåk­F‚•m­F¤n­F+^®F ¿®F ®F’(*®F‚(ƒ®F( #®F;(P®FÃo®Fr®Fb(›s®F‚`u®Fov®F+¼låF;_oåF+i!æF ª#æF è%æF’(ÿ&æF‚(R)æF( í*æF;(ó,æF¥æF¤ƒæFb(مæF‚Ž‡æFªˆæF+¹3G ú5G >8G’(O9G‚(¯;G( 0=G;(#?Gž“G•Gb(җG‚‰™G˜šG+ GVG :IVG nKVG’(†LVG‚(çNVG( hPVG;(YRVG¿¦VG±¨VGb(ôªVG‚ª¬VG·­VG+ÂXŽG [ŽG J]ŽG’(U^ŽG‚(¨`ŽG( )bŽG;(+dŽG¢¸ŽG˜ºŽGb(?¼ŽG‚÷½ŽG¿ŽG+z²ÅG7µÅG >·ÅG‚ ºÅG;(½ÅG ‘ÆÅGb×ÉÅG‚zËÅG‰ÌÅG+QlÆG ®nÆG ôpÆG’(rÆG‚(}tÆG( vÆG;(DxÆG¯ÍÆGôÏÆGb(wÑÆG‚6ÓÆGEÔÆG+žÊýG;AÍýG+KþG þG ӃþG’(ø„þG‚(K‡þG( æˆþG;(àŠþGÄßþGÈáþGb(ýãþG‚·åþGÄæþG+ݑ6H ”6H c–6H’(Š—6H‚(ê™6H( l›6H;(]6Hóñ6Håó6Hb((ö6H‚Õ÷6Häø6H+ö£nH (¦nH `¨nH’(x©nH‚(׫nH( Y­nH;(J¯nHñoHâoHb(%oH‚Ü oHé
+oH+_·¦H œ¹¦H 绦H’(½¦H‚(V¿¦H( ØÀ¦H;(ͦHu§Hg§Hb(§H‚À§HϧH+ØÞH•ÞH ¨ÞH‚vÞH;–ÞH $ÞHbF'ÞH‚é(ÞHø)ÞH+¿ÉÞH  ÌÞH wÎÞH’(‹ÏÞH‚(äÑÞH( €ÓÞH;(­ÕÞH‰+ßHÞ-ßHb(o/ßH‚41ßHC2ßH+€(I;#+I+-ÝI nßI ¬áI’(ÃâI‚(åI( ±æI;(·èI…=I?Ib(¶AI‚kCI‡DI+“ïNI ÔñNI ôNI’()õNI‚(‰÷NI( 
+ùNI;(ýúNI™OOIŠQOIb(ÍSOI‚„UOI“VOI+‡I 5‡I i‡I’(‡I‚(â
+‡I( c ‡I;(T‡Iëb‡IÝd‡Ib( g‡I‚Öh‡Iãi‡I+î¿I /¿I v¿I’(¿I‚(Ô¿I( U¿I;(W ¿Iu¿Iöv¿Ib(x¿I‚Uz¿Id{¿I+ØnöI•qöI µsöI‚vvöI;—yöI ƒöIbF†öI‚é‡öIøˆöI+¿(÷I +÷I Y-÷I’(ƒ.÷I‚(â0÷I( ƒ2÷I;(Œ4÷I#Š÷IhŒ÷Ib(ë÷I‚ª÷I¹÷I+‡.J;µ‰.J+¿;/J >/J G@/J’(lA/J‚(¿C/J( ZE/J;(TG/JTœ/JUž/Jb(Š /J‚D¢/JQ£/J+gNgJ ¤PgJ íRgJ’(TgJ‚(tVgJ( öWgJ;(çYgJŽ®gJ€°gJb(ògJ‚u´gJ„µgJ+‘`ŸJ ÃbŸJ ûdŸJ’(fŸJ‚(rhŸJ( ôiŸJ;(ékŸJ§ÀŸJ˜ÂŸJb(ÛğJ‚’ÆŸJŸÇŸJ+t×J Rv×J x×J’(¹y×J‚( |×J( Ž}×J;(ƒ×J+Ô×JÖ×Jb(Ä××J‚vÙ×J…Ú×J+ŽÌKKÏK ^ÑK‚,ÔK;L×K ¶àKbüãK‚ŸåK®æK+u†K ֈK -‹K’(AŒK‚(šŽK( 6K;(c’KèKeêKb(öëK‚»íKÊîK+åFK;¨çFK+²™GK ó›GK 1žGK’(HŸGK‚(›¡GK( 6£GK;(<¥GK úGKüGKb(=þGK‚òÿGKHK+¬K ^®K ¢°K’(³±K‚(´K( ”µK;(‡·K3 €K$€Kb(g€K‚€K-€K+6¾·K dÀ·K ˜Â·K’(°Ã·K‚(Æ·K( ’Ç·K;(ƒÉ·K¸K + ¸Kb(P"¸K‚$¸K%¸K+‰ÑïK ÊÓïK ÖïK’(×ïK‚(oÙïK( ðÚïK;(òÜïK›1ðK‘3ðKb(85ðK‚ð6ðKÿ7ðK+*'L¿,'L Æ.'L‚‘1'L;°4'L >'LbZA'L‚ýB'L D'L+Ùã'L 6æ'L |è'L’(¦é'L‚(ì'L( ¦í'L;(Ìï'LnE(L³G(Lb(6I(L‚õJ(LL(L+]B_L;E_L+
+÷_L Où_L ’û_L’(·ü_L‚(
+ÿ_L( ¥`L;(Ÿ`L¯W`L³Y`Lb(è[`L‚¢]`L¯^`L+È ˜L  ˜L N˜L’(u˜L‚(Õ˜L( W˜L;(H˜LÞi˜LÐk˜Lb(n˜L‚Ào˜LÏp˜L+LÐL ~ÐL ¶!ÐL’(Î"ÐL‚(-%ÐL( ¯&ÐL;( (ÐLG}ÐL8ÐLb({ÐL‚2ƒÐL?„ÐL+J/M ‡1M Ô3M’(ð4M‚(C7M( Ä8M;(¹:M`MR‘Mb(ù’M‚«”Mº•M+3‰?Mò‹?M Ž?M‚ë?M;”?M ?MbÅ ?M‚h¢?Mw£?M+ÀA@M !D@M xF@M’(ŒG@M‚(åI@M( K@M;(®M@M|£@MÑ¥@Mb(b§@M‚'©@M6ª@M+á¡wM;„¤wM+UxM _WxM YxM’(´ZxM‚(]xM( ¢^xM;(¨`xMuµxMt·xMb(©¹xM‚^»xMz¼xM+‰g°M Êi°M l°M’(m°M‚(o°M( q°M;(ór°MÇ°M€É°Mb(ÃË°M‚zÍ°M‰Î°M+ýzèM +}èM _èM’(w€èM‚(؂èM( Y„èM;(J†èMáÚèMÓÜèMb(ßèM‚ÌàèMÙáèM+äŒ N % N l‘ N’(w’ N‚(ʔ N( K– N;(M˜ Nöì Nìî Nb(“ð N‚Kò NZó N+ÎæWN‹éWN ˜ëWN‚YîWN;|ñWN åúWNb+þWN‚ÎÿWNÝXN+¥ XN ù¢XN ?¥XN’(i¦XN‚(ȨXN( iªXN;(p¬XNYN^YNb(áYN‚ YN¯YN+ÿN;«N+µ³N úµN =¸N’(b¹N‚(µ»N( P½N;(J¿NJ‘NK‘Nb(€‘N‚:‘NG‘N+]ÆÈN šÈÈN ãÊÈN’(
+ÌÈN‚(jÎÈN( ìÏÈN;(ÝÑÈNy&ÉNk(ÉNb(®*ÉN‚`,ÉNo-ÉN+|ØO ®ÚO æÜO’(þÝO‚(]àO( ßáO;(ÔãO’8Oƒ:Ob(Æ<O‚}>OŠ?O+ì8O =î8O ˆð8O’(¤ñ8O‚(÷ó8O( yõ8O;(n÷8OL9ON9Ob(µO9O‚iQ9OxR9O+~DpO;GpO NIpO‚%LpO;COpO ¬XpObò[pO‚•]pO¤^pO+kþpO ÌqO #qO’(7qO‚(qO( ,qO;(Y
+qO `qO`bqOb(ñcqO‚¶eqOÅfqO+]¨O;£_¨O+­©O î©O ,©O’(C©O‚(–©O( 1©O;(7©Or©Ot©Ob(6v©O‚ëw©Oy©O+$áO T&áO ˜(áO’(©)áO‚( ,áO( Š-áO;(}/áO)„áO†áOb(]ˆáO‚ŠáO#‹áO+,6P Z8P Ž:P’(¦;P‚(>P( ˆ?P;(yAP–P˜Pb(FšP‚ü›P P+IQP ÀKQP NQP’(OQP‚(eQQP( æRQP;(èTQP‘©QP‡«QPb(.­QP‚æ®QPõ¯QP+h£ˆP%¦ˆP ,¨ˆP‚íªˆP; ®ˆP o·ˆPbµºˆP‚X¼ˆPg½ˆP+Ä[‰P !^‰P g`‰P’(‘a‰P‚(ðc‰P( ‘e‰P;(·g‰PY½‰Pž¿‰Pb(!Á‰P‚à‰PïÉP+¹»ÀP;\¾ÀP+õnÁP :qÁP }sÁP’(¢tÁP‚(õvÁP( xÁP;(ŠzÁPšÏÁPžÑÁPb(ÓÓÁP‚ÕÁPšÖÁP+³ùP ðƒùP 9†ùP’(`‡ùP‚(À‰ùP( C‹ùP;(8ùPÎáùPÂãùPb(æùP‚²çùPÁèùP+B•1Q t—1Q ¬™1Q’(Ě1Q‚(#1Q( ¥ž1Q;(– 1Q=õ1Q.÷1Qb(qù1Q‚(û1Q5ü1Q+@§iQ }©iQ È«iQ’(ä¬iQ‚(7¯iQ( ¹°iQ;(®²iQVjQH jQb(ï
+jQ‚¡ jQ° +jQ+)¡Qæ¡Q ¡Q‚æ¡Q; ¡Q m¡Qb³¡Q‚V¡Qe¡Q+¼¹¡Q ¼¡Q t¾¡Q’(ˆ¿¡Q‚(áÁ¡Q( }áQ;(®Å¡Q}¢QÒ¢Qb(c¢Q‚(!¢Q7"¢Q+âÙQ;…ÙQ+ÍÙQ `ÏÙQ žÑÙQ’(µÒÙQ‚(ÕÙQ( £ÖÙQ;(©ØÙQ|-ÚQx/ÚQb(­1ÚQ‚b3ÚQ~4ÚQ+ŠßR ËáR äR’( åR‚(€çR( éR;(ôêR?RARb(ÄCR‚ERFR+þòIR ,õIR `÷IR’(xøIR‚(ÙúIR( ZüIR;(KþIRâRJRÔTJRb(WJR‚ÍXJRÚYJR+P‚R ‘‚R Ø
+‚R’(㠂R‚(6‚R( ·‚R;(¹‚Rbf‚RXh‚Rb(ÿi‚R‚·k‚RÆl‚R+É^¹R‘a¹R ˜c¹R‚Yf¹R;xi¹R ár¹Rb'v¹R‚Êw¹RÙx¹R+ ºR ôºR :ºR’(dºR‚(à ºR( d"ºR;(m$ºRazºR¦|ºRb()~ºR‚èºR÷€ºR+QwñR;ôyñR+þ+òR C.òR †0òR’(«1òR‚(4òR( 5òR;(™7òR˜ŒòR™ŽòRb(ΐòR‚ˆ’òR•“òR+«>*S è@*S 1C*S’(XD*S‚(¸F*S( :H*S;(+J*SǞ*S¹ *Sb(ü¢*S‚®¤*S½¥*S+ÊPbS üRbS 4UbS’(LVbS‚(«XbS( -ZbS;("\bSà°bSѲbSb(µbS‚˶bSØ·bS+NdšS ‹fšS ÖhšS’(òišS‚(ElšS( ÇmšS;(¼ošSdĚSVƚSb(ýǚS‚¯ÉšS¾ÊšS+ǼÑS„¿ÑS —ÁÑS‚oÄÑS;‹ÇÑS õÐÑSb;ÔÑS‚ÞÕÑSíÖÑS+´vÒS yÒS l{ÒS’(€|ÒS‚(Ù~ÒS( u€ÒS;(¦‚ÒSTØÒS©ÚÒSb(:ÜÒS‚ÿÝÒSßÒS+IÕ T;ì× T+ö‰
+T 7Œ
+T uŽ
+T’(Œ
+T‚(ߑ
+T( z“
+T;(ۥ
+TMê
+TLì
+Tb(î
+T‚6ð
+TRñ
+T+aœBT ¢žBT æ BT’(÷¡BT‚(W¤BT( Ø¥BT;(˧BTwüBThþBTb(«CT‚bCTqCT+z®zT ¨°zT ܲzT’(ô³zT‚(U¶zT( Ö·zT;(ǹzT_{TQ{Tb(”{T‚J{TW{T+ÍÁ²T IJT UƲT’(`DzT‚(³É²T( 4˲T;(6ͲTß!³TÕ#³Tb(|%³T‚4'³TC(³T+FêTêT êT‚Õ!êT;ô$êT I.êTb1êT‚,3êT;4êT+ÔêT zÖêT ÀØêT’(êÙêT‚(IÜêT( êÝêT;(àêTµ5ëTñ7ëTb(t9ëT‚3;ëTB<ëT+œ2"U;?5"U+Iç"U Žé"U Ñë"U’(öì"U‚(Iï"U( äð"U;(Þò"UíG#UñI#Ub(&L#U‚àM#UíN#U+úZU >üZU ‡þZU’(®ÿZU‚([U( [U;([UZ[U \[Ub(L^[U‚ù_[Ua[U+… +“U ·“U ï“U’(“U‚(f“U( è“U;(Ù“U€m“Uqo“Ub(´q“U‚ks“Uxt“U+ƒËU À!ËU  $ËU’('%ËU‚(z'ËU( ü(ËU;(ñ*ËUžËUËUb(7ƒËU‚é„ËUü…ËU+ryV/|V G~V‚V;0„V ¯ŽVbõ‘V‚˜“V§”V+é1V J4V ¡6V’(µ7V‚(:V( ª;V;(Û=V±“V–Vb(˜—V‚]™VlšV+’:V;½”:V+WE;V ˜G;V ÖI;V’(íJ;V‚(@M;V( ÛN;V;(áP;V¿¥;V»§;Vb(ð©;V‚¥«;VÁ¬;V+ÍWsV ZsV R\sV’(c]sV‚(Ã_sV( DasV;(7csVÓ·sVĹsVb(¼sV‚¾½sV;sV+Ak«V om«V £o«V’(»p«V‚(s«V( t«V;(Žv«V%Ë«VÍ«Vb(ZÏ«V‚Ñ«VÒ«V+(}ãV iãV °ãV’(»‚ãV‚(…ãV( †ãV;(‘ˆãV:ÝãV0ßãVb(×àãV‚âãVžããV+×WÓÙW ßÛW‚ ÞW;¿áW )ëWboîW‚ðW!ñW+éW =“W ƒ•W’(­–W‚( ™W( ­šW;(´œWYòWœôWb(öW‚Þ÷WíøW+GïRW;êñRW+ô£SW 9¦SW |¨SW’(¡©SW‚(ô«SW( ­SW;(‰¯SW‰TWŠTWb(¿TW‚y
+TW† TW+œ¶‹W Ù¸‹W "»‹W’(I¼‹W‚(©¾‹W( +À‹W;( ‹W½ŒW¯ŒWb(òŒW‚¤ŒW³ŒW+ÀÈÃW òÊÃW *ÍÃW’(BÎÃW‚(¡ÐÃW( #ÒÃW;(ÔÃWÖ(ÄWÇ*ÄWb(
+-ÄW‚Á.ÄWÎ/ÄW+DÜûW ÞûW ÌàûW’(èáûW‚(;äûW( ½åûW;(²çûWZ<üWL>üWb(ó?üW‚¥AüW´BüW+½43Xz73X ’93X‚i<3X;‡?3X ðH3Xb6L3X‚ÙM3XèN3X+¯î3X ñ3X gó3X’({ô3X‚(Ôö3X( pø3X;(ú3XQP4X§R4Xb(8T4X‚ýU4X W4X+JMkX;íOkX+÷lX 8lX vlX’(lX‚(à lX( { lX;( +lXNblXMdlXb(‚flX‚7hlXSilX+b¤X £¤X ç¤X’(ø¤X‚(X¤X( Ù¤X;(̤Xxt¤Xiv¤Xb(¬x¤X‚cz¤Xr{¤X+{&ÜX ©(ÜX Ý*ÜX’(õ+ÜX‚(V.ÜX( ×/ÜX;(È1ÜX`†ÜXRˆÜXb(•ŠÜX‚KŒÜXXÜX+Î9Y <Y V>Y’(a?Y‚(´AY( 5CY;(7EYà™Y֛Yb(}Y‚5ŸYD Y+G’KY•KY $—KY‚å™KY;KY i¦KYb¯©KY‚R«KYa¬KY+.LLY ‹NLY ÑPLY’(ûQLY‚(ZTLY( ûULY;(!XLYÊ­LY°LYb(‘±LY‚P³LY_´LY+¸ªƒY;[­ƒY+e_„Y ªa„Y íc„Y’(e„Y‚(eg„Y( i„Y;(új„Y
+À„Y„Yb(CĄY‚ýńY
+DŽY+#r¼Y `t¼Y ©v¼Y’(Ðw¼Y‚(0z¼Y( ²{¼Y;(£}¼Y>Ò¼Y2Ô¼Yb(uÖ¼Y‚"ؼY1Ù¼Y+²…ôY ä‡ôY ŠôY’(4‹ôY‚(“ôY( ôY;(‘ôY­åôYžçôYb(áéôY‚˜ëôY¥ìôY+°—,Z ó™,Z >œ,Z’(Z,Z‚(­Ÿ,Z( /¡,Z;($£,ZË÷,Z½ù,Zb(dû,Z‚ý,Z%þ,Z+ŸñcZ`ôcZ xöcZ‚EùcZ;cücZ ÝdZb# dZ‚Æ
+dZÕ dZ+ªdZ |¬dZ Ó®dZ’(ç¯dZ‚(@²dZ( ܳdZ;( ¶dZÞ eZ4eZb(ÅeZ‚ŠeZ™eZ+G
+œZ;ê œZ+„½œZ Å¿œZ œZ’(ÜZ‚(mŜZ( ǜZ;(ɜZ۝ZڝZb("Z‚Ä#Zà$Z+ïÏÔZ 0ÒÔZ tÔÔZ’(…ÕÔZ‚(å×ÔZ( fÙÔZ;(YÛÔZõ/ÕZæ1ÕZb()4ÕZ‚à5ÕZï6ÕZ+cã [ ‘å [ Åç [’(Ýè [‚(>ë [( ¿ì [;(°î [GC +[9E +[b(|G +[‚2I +[?J +[+JõD[ ‹÷D[ ÒùD[’(ÝúD[‚(0ýD[( ±þD[;(³E[\UE[RWE[b(ùXE[‚±ZE[À[E[+4O|[ñQ|[ ýS|[‚¾V|[;ÝY|[ Fc|[b—f|[‚:h|[Ii|[+ }[ Y }[ ž +}[’(È}[‚('}[( È}[;(á}[‹j}[Ïl}[b(Rn}[‚p}[ q}[+yg´[;j´[+&µ[ kµ[ £ µ[’(º!µ[‚($µ[( µ%µ[;(¼'µ[ª|µ[Ï~µ[b(µ[‚¾‚µ[ڃµ[+ä.í[ 1í[ r3í[’(™4í[‚(@7í[( Ò8í[;(Ç:í[=í[V‘í[b(™“í[‚F•í[U–í[+kA%\ C%\ âE%\’(G%\‚(eI%\( æJ%\;(ÙL%\U¡%\F£%\b(‰¥%\‚@§%\M¨%\+XS]\ •U]\ àW]\’(üX]\‚(O[]\( Ñ\]\;(Â^]\7³]\)µ]\b(ж]\‚‚¸]\‘¹]\+ ­”\ȯ”\ ౔\‚­´”\;É·”\ 3Á”\byĔ\‚)Ɣ\8ǔ\+òf•\ Si•\ ªk•\’(¾l•\‚(o•\( ·p•\;(är•\^ȕ\³Ê•\b(6̕\‚û͕\
+ϕ\+VÅÌ\;ùÇÌ\+zÍ\ D|Í\ ‚~Í\’(™Í\‚(ìÍ\( ‡ƒÍ\;(…Í\?ÚÍ\;ÜÍ\b(pÞÍ\‚%àÍ\AáÍ\+MŒ] ŽŽ] Ґ]’(ã‘]‚(C”]( ĕ];(·—]2ì]#î]b(fð]‚ò],ó]+ Ÿ=] Ρ=] ¤=]’(¥=]‚({§=]( ü¨=];(íª=]Sÿ=]E>]b(ˆ>]‚>>]K>]+V±u] —³u] Þµu]’(é¶u]‚(<¹u]( ½ºu];(¿¼u]6v],v]b(Óv]‚‹v]šv]+ ­]Ë +­] ë­]‚¬­];Í­] 6­]b|"­]‚$­].%­]+õÄ­] RÇ­] ˜É­]’(ÂÊ­]‚(!Í­]( Âέ];(èЭ]`&®]£(®]b(&*®]‚å+®]ô,®]+N#å];ñ%å]+û×å] @Úå] ƒÜå]’(¨Ýå]‚(ûßå]( –áå];(ãå]s8æ]w:æ]b(²<æ]‚l>æ]y?æ]+’ê^ Ïì^ ï^’(?ð^‚(Ÿò^( !ô^;(ö^¨J^šL^b(ÝN^‚ŠP^™Q^+«üU^ ÝþU^ V^’(-V^‚(ŒV^( V^;(ÿV^¦\V^—^V^b(Ú`V^‚‘bV^žcV^+Ž^ QŽ^ œŽ^’(¸Ž^‚( Ž^( Ž^;(‚Ž^*pŽ^rŽ^b(ÃsŽ^‚uuŽ^„vŽ^+hÅ^JkÅ^ bmÅ^‚/pÅ^;KsÅ^ è|Å^b.€Å^‚сÅ^à‚Å^+t"Æ^ Õ$Æ^ ,'Æ^’(@(Æ^‚(™*Æ^( 5,Æ^;(b.Æ^7„Æ^†Æ^b(ˆÆ^‚ã‰Æ^òŠÆ^+0ý^;Ӄý^+Ý5þ^ 8þ^ \:þ^’(s;þ^‚(Æ=þ^( a?þ^;(gAþ^4–þ^3˜þ^b(hšþ^‚œþ^9þ^+HH6_ ‰J6_ ÍL6_’(ÞM6_‚(>P6_( ¿Q6_;(²S6_N¨6_?ª6_b(‚¬6_‚9®6_H¯6_+¼[n_ ê]n_ `n_’(6an_‚(—cn_( en_;( gn_ »n_’½n_b(Õ¿n_‚‹Án_˜Ân_+£m¦_ äo¦_ +r¦_’(6s¦_‚(‰u¦_( 
+w¦_;( y¦_µÍ¦_«Ï¦_b(RѦ_‚
+Ó¦_Ô¦_+ÇÝ_JÊÝ_ VÌÝ_‚!ÏÝ_;@ÒÝ_  +ÜÝ_bSßÝ_‚öàÝ_âÝ_+iÞ_ ½ƒÞ_ †Þ_’(-‡Þ_‚(Œ‰Þ_( -‹Þ_;(6Þ_ÔâÞ_åÞ_b(šæÞ_‚YèÞ_héÞ_+Âß`;eâ`+þ’` C•` †—`’(«˜`‚(þš`( ™œ`;(“ž`“ó`”õ`b(É÷`‚ƒù`ú`+§N` N©N` —«N`’(¾¬N`‚(¯N`(  °N`;(‘²N`-O` O`b(b O`‚ +O`#O`+0¹†` b»†` š½†`’(²¾†`‚(Á†`( “†`;(ˆÄ†`F‡`7‡`b(z‡`‚1‡`> ‡`+I˾` †Í¾` ÑϾ`’(íо`‚(@Ó¾`( ÂÔ¾`;(¸Ö¾`_+¿`Q-¿`b(ø.¿`‚ª0¿`¹1¿`+2%ö`ï'ö` *ö`‚Ô,ö`;ð/ö` [9ö`b¡<ö`‚Q>ö``?ö`+ßö` {áö` Òãö`’(æäö`‚(?çö`( ßèö`;( ëö`Á@÷`C÷`b(¨D÷`‚mF÷`|G÷`+º=.a;]@.a+öð.a 7ó.a uõ.a’(Œö.a‚(ßø.a( zú.a;(€ü.aNQ/aJS/ab(U/a‚4W/aPX/a+Çga ga L ga’(]
+ga‚(½ ga( >ga;(1gaÝdgaÎfgab(iga‚Èjga×kga+àŸa Ÿa BŸa’(ZŸa‚(»Ÿa( < Ÿa;(-"ŸaÊvŸa¼xŸab(ÿzŸa‚µ|ŸaÂ}Ÿa+8*×a y,×a À.×a’(Ë/×a‚(2×a( Ÿ3×a;(¡5×aJŠ×a@Œ×ab(ç×a‚Ÿ×a®×a+±‚bn…b z‡b‚;Šb;`b Öbb šb‚¬›b»œb+ˆ<b å>b +Ab’(UBb‚(´Db( UFb;({Hb/žbs bb(ö¡b‚µ£bĤb+›Fb;ÀFb+ÊOGb RGb RTGb’(wUGb‚(ÊWGb( eYGb;(_[Gbo°Gbs²Gbb(¨´Gb‚b¶Gbo·Gb+ˆbb Ådb gb’(5hb‚(•jb( lb;(nbžÂbÄbb(ÓÆb‚€ÈbÉb+¡t·b Óv·b  y·b’(#z·b‚(‚|·b( ~·b;(õ·bœÔ·bÖ·bb(ÐØ·b‚‡Ú·b”Û·b+
+ˆïb GŠïb ’Œïb’(®ïb‚(ïb( ƒ‘ïb;(x“ïb èïbêïbb(¹ëïb‚oíïb~îïb+ƒà&c@ã&c Xå&c‚/è&c;Më&c ¶ô&cbü÷&c‚Ÿù&c®ú&c+uš'c ֜'c -Ÿ'c’(A 'c‚(š¢'c( 6¤'c;(c¦'c=ü'c’þ'cb(#(c‚è(c÷(c+6ù^c;Ùû^c+ã­_c $°_c b²_c’(y³_c‚(̵_c( g·_c;(m¹_c;`c7`cb(l`c‚!`c=`c+IÀ—c ŠÂ—c Îėc’(ßŗc‚(?ȗc( Àɗc;(³Ë—cO ˜c@"˜cb(ƒ$˜c‚:&˜cI'˜c+½ÓÏc ëÕÏc ØÏc’(7ÙÏc‚(˜ÛÏc( ÝÏc;(
+ßÏc¡3Ðc“5Ðcb(Ö7Ðc‚Œ9Ðc™:Ðc+¤åd åçd ,êd’(7ëd‚(Šíd(  ïd;( +ñd¶Ed¬Gdb(SId‚ KdLd+Ž??dKB?d WD?d‚G?d;7J?d êT?db0X?d‚ÓY?dâZ?d+_ù?d ³û?d ùý?d’(#ÿ?d‚(‚@d( #@d;(,@dÊZ@d +]@db(^@d‚O`@d^a@d+¸Wwd;[Zwd+e xd ªxd íxd’(xd‚(exd( xd;(úxdúlxdûnxdb(0qxd‚êrxd÷sxd+ +°d J!°d “#°d’(º$°d‚('°d( œ(°d;(‘*°d.°d °db(cƒ°d‚…°d$†°d+11èd c3èd ›5èd’(³6èd‚(9èd( ”:èd;(‰<èdG‘èd8“èdb({•èd‚2—èd?˜èd+µD e òF e =I e’(YJ e‚(¬L e( .N e;(#P eˤ e½¦ eb(d¨ e‚ª e%« e+.WeëŸWe ¢We‚ФWe;ì§We V±Webœ´We‚?¶WeN·We+WXe vYXe Í[Xe’(á\Xe‚(:_Xe( Ö`Xe;(cXe·¸Xe +»Xeb(ž¼Xe‚c¾Xer¿Xe+°µe;S¸e+]je žle Üne’(óoe‚(Fre( áse;(çueºÊe¶Ìeb(ëΐe‚ Ðe¼Ñe+È|Èe  Èe MÈe’(^‚Èe‚(¾„Èe( ?†Èe;(2ˆÈeÞÜÈeÏÞÈeb(áÈe‚ÉâÈeØãÈe+áŽf ‘f C“f’([”f‚(¼–f( =˜f;(.šfÆîf¸ðfb(ûòf‚±ôf¾õf+4¢8f u¤8f ¼¦8f’(ǧ8f‚(ª8f( ›«8f;(­8fF9f<9fb(ã9f‚›9fª9f+­úofjýof vÿof‚7pf;Vpf ¹pfbÿpf‚¢pf±pf+~´pf Û¶pf !¹pf’(Kºpf‚(ª¼pf( K¾pf;(qÀpfqf^qfb(áqf‚ qf¯qf+¨f;«¨f+µÇ¨f úɨf =̨f’(bͨf‚(µÏ¨f( PѨf;(JÓ¨fZ(©f^*©fb(“,©f‚M.©fZ/©f+sÚàf °Üàf ùÞàf’( ààf‚(€âàf( äàf;(óåàf‰:áf{<áfb(¾>áf‚k@áfzAáf+÷íg )ðg aòg’(yóg‚(Øõg( Z÷g;(KùgòMgãOgb(&Rg‚ÝSgêTg+õÿPg 2Qg }Qg’(™Qg‚(ìQg( n Qg;(c Qg `QgýaQgb(¤cQg‚VeQgefQg+ÞYˆg›\ˆg ³^ˆg‚Šaˆg;¨dˆg nˆgbeqˆg‚sˆgtˆg+`‰g Á‰g ‰g’(,‰g‚(…‰g( !‰g;(N‰g#t‰gyv‰gb(
+x‰g‚Ïy‰gÞz‰g+ŒrÀg;/uÀg+É%Ág 
+(Ág H*Ág’(_+Ág‚(²-Ág( M/Ág;(S1Ág †ÁgˆÁgb(TŠÁg‚ ŒÁg%Ág+48ùg u:ùg ¹<ùg’(Ê=ùg‚(*@ùg( «Aùg;(žCùg:˜ùg+šùgb(nœùg‚%žùg4Ÿùg+¨K1h ÖM1h 
+P1h’("Q1h‚(ƒS1h( U1h;(õV1hŒ«1h~­1hb(Á¯1h‚w±1h„²1h+]ih Ð_ih bih’("cih‚(ueih( öfih;(øhih¡½ih—¿ihb(>Áih‚öÂihÄih+y· h6º h V¼ h‚¿ h;8 h ¡Ë hbïΠh‚’Рh¡Ñ h+`q¡h ´s¡h úu¡h’($w¡h‚(ƒy¡h( &{¡h;(-}¡hËÒ¡hÕ¡hb(‘Ö¡h‚PØ¡h_Ù¡h+¹ÏØh;\ÒØh+f„Ùh «†Ùh îˆÙh’(ŠÙh‚(fŒÙh( ŽÙh;(ûÙhûäÙhüæÙhb(1éÙh‚ëêÙhøëÙh+—i K™i ”›i’(»œi‚(Ÿi(  i;(’¢i/÷i!ùib(dûi‚ýi%þi+2©Ii d«Ii œ­Ii’(´®Ii‚(±Ii( •²Ii;(Š´IiH Ji9 Jib(| +Ji‚3Ji@Ji+¶¼i ó¾i >Ái’(Zi‚(­Äi( /Ɓi;($ȁiÑ‚iÂib(j ‚i‚"‚i/#‚i+4¹iñ¹i  ¹i‚Ö¹i;ò¹i ])¹ib£,¹i‚F.¹iU/¹i+Ϲi }ѹi ÔÓ¹i’(èÔ¹i‚(A×¹i( Ýعi;(Û¹iÈ0ºi3ºib(®4ºi‚y6ºiˆ7ºi+Á-ñi;d0ñi+nâñi ¯äñi íæñi’(èñi‚(Wêñi( òëñi;(øíñiÆBòiÂDòib(÷Fòi‚¬HòiÈIòi+Ôô)j ÷)j Yù)j’(jú)j‚(Êü)j( Kþ)j;(>*jêT*jÛV*jb(Y*j‚ÕZ*jä[*j+íbj  bj O bj’(g bj‚(Èbj( Ibj;(:bjÒfbjÄhbjb(kbj‚½lbjÊmbj+@šj šj Èšj’(Óšj‚(&"šj( §#šj;(©%šjRzšjH|šjb(ï}šj‚§šj¶€šj+¹rÑjvuÑj ‚wÑj‚CzÑj;b}Ñj ņÑjb ŠÑj‚®‹Ñj½ŒÑj+Š,Òj ç.Òj -1Òj’(W2Òj‚(¶4Òj( W6Òj;(}8Òj,ŽÒjwÒjb(ú‘Òj‚¹“ÒjȔÒj+‹ k;½ k+Ç?
+k  B
+k OD
+k’(tE
+k‚(ÇG
+k( bI
+k;(\K
+kk 
+ko¢
+kb(¤¤
+k‚^¦
+kk§
+k+RBk ¼TBk WBk’(,XBk‚(ŒZBk( \Bk;(ÿ]Bk•²Bk‡´Bkb(ʶBk‚w¸Bk†¹Bk+fzk 5hzk mjzk’(…kzk‚(ämzk( fozk;(WqzkþÅzkïÇzkb(2Êzk‚éËzköÌzk+x²k >z²k ‰|²k’(¥}²k‚(ø²k( z²k;(oƒ²kزk Ú²kb(°Û²k‚bݲkqÞ²k+êÑék§Ôék ¿Öék‚–Ùék;´Üék æékbdéék‚ëékìék+lŠêk ͌êk $êk’(8êk‚(‘’êk( -”êk;(Z–êk/ìêk…îêkb(ðêk‚Ûñêkêòêk+˜ê!l;;í!l+՝"l  "l T¢"l’(k£"l‚(¾¥"l( Y§"l;(_©"l,þ"l+#lb(`#l‚#l1#l+@°Zl ²Zl Å´Zl’(ÖµZl‚(6¸Zl( ·¹Zl;(ª»ZlF[l7[lb(z[l‚1[l@[l+´Ã’l âŒl Ȓl’(0ɒl‚(Ë’l( ͒l;(ÿΒl˜#“lŠ%“lb(Í'“l‚ƒ)“l*“l+›ÕÊl Ü×Êl #ÚÊl’(.ÛÊl‚(ÝÊl( ßÊl;(áÊl­5Ël£7Ëlb(J9Ël‚;Ël<Ël+…/mB2m b4m‚#7m;D:m ­CmbóFm‚–Hm¥Im+lém Àëm îm’(0ïm‚(ñm( 0óm;(3õmÜJm Mmb(£Nm‚bPmqQm+ÊG:m;mJ:m+wü:m ¼þ:m ÿ;m’($;m‚(w;m( ;m;( ;m ];m +_;mb(Ba;m‚üb;m d;m+sm \sm ¥sm’(Ìsm‚(,sm( ®sm;(Ÿsm@osm2qsmb(ussm‚'usm:vsm+C!«m u#«m ­%«m’(Å&«m‚($)«m( ¦*«m;(—,«mT«mEƒ«mb(ˆ…«m‚?‡«mLˆ«m+Â4ãm ÿ6ãm J9ãm’(l:ãm‚(¿<ãm( A>ãm;(6@ãmݔãmϖãmb(v˜ãm‚(šãm7›ãm+@nýn ’n‚á”n;ÿ—n t¡nbº¤n‚]¦nl§n+(Gn ‰In àKn’(ôLn‚(MOn( éPn;(Snɨn«nb(¯¬n‚t®nƒ¯n+Â¥Rn;e¨Rn+oZSn °\Sn î^Sn’(`Sn‚(XbSn( ócSn;(ùeSnǺSnüSnb(ø¾Sn‚­ÀSnÉÁSn+Õl‹n o‹n Zq‹n’(kr‹n‚(Ët‹n( Lv‹n;(?x‹në̋nÜ΋nb(ыn‚ÖҋnåӋn+î~Ãn Ãn PƒÃn’(h„Ãn‚(ɆÃn( JˆÃn;(;ŠÃnÓÞÃnÎàÃnb(ãÃn‚ÇäÃnÔåÃn+L’ûn ”ûn Ԗûn’(ߗûn‚(2šûn( ³›ûn;(µûn^òûnTôûnb(ûõûn‚³÷ûnÂøûn+5ì2oòî2o þð2o‚Éó2o;èö2o M3ob“3o‚63oE3o+¡¤3o þ¦3o D©3o’(nª3o‚(ͬ3o( n®3o;(ƒ°3o"4oe4ob(è 4o‚§ 4o¶ 4o+€ko;#ko+½·ko ºko E¼ko’(j½ko‚(½¿ko( XÁko;(RÃkoaloelob(šlo‚Tloalo+uÊ£o ²Ì£o ûΣo’("Уo‚(‚Ò£o( Ô£o;(õÕ£o‹*¤o},¤ob(À.¤o‚m0¤o|1¤o+ùÝÛo +àÛo câÛo’({ãÛo‚(ÚåÛo( \çÛo;(MéÛoô=Üoå?Üob((BÜo‚ßCÜoìDÜo+÷ïp 4òp ôp’(›õp‚(î÷p( pùp;(eûp +PpÿQpb(¦Sp‚XUpgVp+àIKpLKp µNKp‚‚QKp;žTKp B^KpbàaKp‚ƒcKp’dKp+ÈLp )Lp €Lp’(” Lp‚(í Lp( ‰ +Lp;(µLp‘eLpægLpb(wiLp‚<kLpKlLp+‰bƒp;,eƒp+Å„p „p D„p’([„p‚(±„p( L„p;(P!„pv„px„pb(Nz„p‚|„p}„p++(¼p l*¼p °,¼p’(Á-¼p‚(!0¼p( ¢1¼p;(•3¼p1ˆ¼p"Š¼pb(eŒ¼p‚Ž¼p+¼p+Ÿ;ôp Í=ôp @ôp’(Aôp‚(zCôp( ûDôp;(ìFôpƒ›ôpuôpb(¸Ÿôp‚n¡ôp{¢ôp+ñN,q 2Q,q yS,q’(„T,q‚(×V,q( XX,q;(ZZ,q¯,qù°,qb( ²,q‚X´,qgµ,q+j§cq'ªcq G¬cq‚¯cq;)²cq ’»cqbã¾cq‚†Àcq•Ácq+Radq ¦cdq ëedq’(gdq‚(tidq( kdq;(.mdqÑÂdqÅdqb(™Ædq‚XÈdqgÉdq+À¿›q;c›q+mtœq ²vœq êxœq’(zœq‚(_|œq( ü}œq;(€œqñԜqלqb(Kٜq‚ۜq'ܜq++‡Ôq X‰Ôq ¹‹Ôq’(àŒÔq‚(‡Ôq( ‘Ôq;(“Ôq„çÔqéÔqb(àëÔq‚íÔqœîÔq+²™ r ä› r )ž r’(MŸ r‚(¬¡ r( -£ r;( ¥ rœù rû rb(Ðý r‚‡ÿ r” +r+
+­Dr G¯Dr ’±Dr’(®²Dr‚(µDr( ƒ¶Dr;(t¸Dré ErÛErb(‚Er‚4ErCEr+L|r |r 
+|r‚é |r;|r o|rbµ|r‚e|rt|r+.¿|r Á|r æÃ|r’(úÄ|r‚(SÇ|r( óÈ|r;(!Ë|r“ }rè"}rb(k$}r‚0&}r?'}r+Œ´r;/ ´r+9Ò´r zÔ´r ¸Ö´r’(Ï×´r‚("Ú´r( ½Û´r;(ÃÝ´ru2µrt4µrb(©6µr‚^8µrz9µr+‰äìr Êæìr éìr’(êìr‚(ììr( îìr;(óïìrnDír_Fírb(¢Hír‚YJírhKír+Ü÷$s 
+ú$s >ü$s’(Vý$s‚(·ÿ$s( 8%s;()%sW%sY%sb(Ä[%s‚z]%s‡^%s+ý
+]s > +]s …]s’(]s‚(ã]s( d]s;(f]sÝj]sÓl]sb(zn]s‚2p]sAq]s+Dc”sf”s h”s‚Ój”s;òm”s \w”sb¢z”s‚E|”sT}”s+•s x•s ¾!•s’(è"•s‚(G%•s( è&•s;()•st~•s¹€•sb(<‚•s‚ûƒ•s
+…•s+c{Ìs;~Ìs+0Ís U2Ís ˜4Ís’(½5Ís‚(8Ís( «9Ís;(¥;Ís‰Ís’Ísb(”Ís‚|–Ís‰—Ís+¢Bt ßDt (Gt’(OHt‚(¯Jt( 1Lt;("Nt¸¢tª¤tb(í¦t‚š¨t©©t+&V=t XX=t Z=t’(¨[=t‚(^=t( ‰_=t;(za=t!¶=t¸=tb(Uº=t‚ ¼=t½=t+$hut ajut ¬lut’(Èmut‚(put( qut;(’sut:Èut,Êutb(ÓËut‚…Íut”Îut+¬tÑĬt ýƬt‚Êɬt;è̬t WÖ¬tbÙ¬t‚@Û¬tOܬt+ z­t }­t X­t’(l€­t‚(ł­t( a„­t;(†­t[Ü­t°Þ­tb(Aà­t‚â­tã­t+ÁÚät;dÝät+ýåt >åt |’åt’(““åt‚(æ•åt( —åt;(‡™åtUîåtQðåtb(†òåt‚;ôåtWõåt+c u ¤¢u è¤u’(ù¥u‚(Y¨u( Ú©u;(Í«uiuZub(u‚Tucu+׳Uu ¶Uu 9¸Uu’(Q¹Uu‚(²»Uu( 3½Uu;($¿UuÁVu³Vub(öVu‚¬Vu¹Vu+/Ǎu pɍu ·Ëu’(Â̍u‚(ύu( –Ѝu;(˜ÒuF'Žu<)Žub(ã*Žu‚›,Žuª-Žu+­Åuj"Åu q$Åu‚2'Åu;Q*Åu º3Åub7Åu‚©8Åu¸9Åu+yÙÅu ÍÛÅu ÞÅu’(=ßÅu‚(œáÅu( =ãÅu;(@åÅuâ:Æu'=Æub(ª>Æu‚i@ÆuxAÆu+Ò7ýu;u:ýu+ìýu Äîýu ñýu’(,òýu‚(ôýu( öýu;(øýuMþuOþub(JQþu‚SþuTþu+'ÿ5v d6v ­6v’(Ô6v‚(46v( ¶6v;(«
+6vH_6v:a6vb(}c6v‚/e6v>f6v+Knv }nv µnv’(Ínv‚(0nv( ±nv;(¤nvaqnvRsnvb(•unv‚LwnvYxnv+Ï$¦v  '¦v W)¦v’(s*¦v‚(Æ,¦v( H.¦v;(=0¦v儦v׆¦vb(~ˆ¦v‚0Š¦v?‹¦v+H}Ýv€Ýv ‚Ýv‚t…Ýv;ˆÝv ’ÝvbG•Ýv‚ê–Ývù—Ýv+¹7Þv :Þv q<Þv’(…=Þv‚(Þ?Þv( zAÞv;(«CÞv^™Þv³›Þvb(DÞv‚ ŸÞv Þv+ã”w;†—w+Iw ÑKw Nw’(&Ow‚(yQw( Sw;(Uwí©wé«wb(®w‚Ó¯wï°w+f]Nw §_Nw ëaNw’(übNw‚(\eNw( ÝfNw;(ÐhNw|½Nwm¿Nwb(°ÁNw‚gÃNwvÄNw+o†w ­q†w ás†w’(ùt†w‚(Zw†w( Ûx†w;(Ìz†wdφwVцwb(™Ó†w‚OՆw\ֆw+҂¾w …¾w Z‡¾w’(eˆ¾w‚(¸Š¾w( 9Œ¾w;(;Ž¾wäâ¾wÚä¾wb(æ¾w‚9è¾wHé¾w+KÛõwÞõw àõw‚Ðâõw;óåõw Wïõwbòõw‚@ôõwOõõw+•öw y—öw ¿™öw’(éšöw‚(Höw( éžöw;(¡öw±ööwöøöwb(yúöw‚8üöwGýöw+¡ó-x;Dö-x+N¨.x “ª.x Ö¬.x’(û­.x‚(N°.x( é±.x;(ã³.xò/xö
+/xb(+ +/x‚å/xò/x+»fx C½fx Ž¿fx’(µÀfx‚(Ãfx( –Äfx;(‹Æfxgx
+gxb(Mgx‚ú gx "gx+͞x LϞx „Ñžx’(œÒžx‚(ûԞx( }֞x;(r؞x-Ÿx /Ÿxb(N1Ÿx‚3Ÿx4Ÿx+ˆàÖx ÅâÖx åÖx’(,æÖx‚(èÖx( êÖx;(öëÖxž@×xB×xb(7D×x‚éE×xøF×x+q:y.=y Z?y‚.By;LEy ÈNybRy‚¾SyÍTy+óy eõy ¼÷y’(Ðøy‚()ûy( Éüy;(öþyÅTyWyb(«Xy‚pZy[y+*SFy;ÍUFy+gGy ¨Gy æ
+Gy’(ý Gy‚(PGy( ëGy;(ñGyÄfGyÀhGyb(õjGy‚ªlGyÆmGy+Òy y Wy’(hy‚(È y( I"y;(<$yØxyÉzyb( }y‚Ã~yÒy+F,·y t.·y ®0·y’(Æ1·y‚(&4·y( §5·y;(˜7·y0Œ·y"Ž·yb(e·y‚’·y(“·y+3>ïy t@ïy ¼Bïy’(ÇCïy‚(Fïy( ›Gïy;(›IïyUžïyK ïyb(ò¡ïy‚ª£ïy¹¤ïy+-˜&zêš&z ñœ&z‚²Ÿ&z;Õ¢&z ?¬&zb…¯&z‚(±&z7²&z+þQ'z RT'z ˜V'z’(ÂW'z‚(!Z'z( Â['z;(Ë]'zb³'z§µ'zb(*·'z‚é¸'zø¹'z+Q°^z;ô²^z+Žc_z Óe_z h_z’(;i_z‚(Žk_z( )m_z;(#o_z#Ä_z$Æ_zb(YÈ_z‚Ê_z Ë_z+¡w—z Þy—z '|—z’(N}—z‚(®—z( 0—z;(%ƒ—zÂחzºÙ—zb(ýۗz‚±Ý—zÀޗz+ʉÏz ü‹Ïz 4ŽÏz’(LÏz‚(«‘Ïz( -“Ïz;(•ÏzÛéÏzÌëÏzb(îÏz‚ÆïÏzÓðÏz+I{ †Ÿ{ Ñ¡{’(í¢{‚(@¥{( ¦{;(·¨{_ý{Qÿ{b(ø{‚ª{¹{+Âõ>{ø>{ ’ú>{‚jý>{;†?{ '
+?{bm +?{‚?{?{+¯¯?{ ²?{ g´?{’({µ?{‚(Ô·?{( p¹?{;(¡»?{O@{¤@{b(5@{‚ú@{ @{+Dw{;çw{+ñÂw{ 2Åw{ pÇw{’(‡Èw{‚(ÚÊw{( uÌw{;({Îw{H#x{G%x{b(|'x{‚1)x{M*x{+\Õ¯{ ×¯{ áÙ¯{’(òÚ¯{‚(Rݯ{( ÓÞ¯{;(Æà¯{r5°{c7°{b(¦9°{‚];°{l<°{+uçç{ £éç{ ×ëç{’(ïìç{‚(Pïç{( Ñðç{;(Âòç{ZGè{LIè{b(Kè{‚EMè{RNè{+Èú|  ý| Pÿ|’([ |‚(® |( / |;(1 |ÚZ |Ð\ |b(w^ |‚/` |>a |+ASW|þUW| 
+XW|‚ËZW|;ê]W| MgW|b“jW|‚6lW|EmW|+ +X| oX| þX|’((X|‚(‡X|( (X|;(RX|ônX|9qX|b(¼rX|‚{tX|ŠuX|+äk|;‡n|+‘ | Ö"| %|’(>&|‚(‘(|( ,*|;(&,|5|9ƒ|b(n…|‚(‡|5ˆ|+I3È| †5È| Ï7È|’(ö8È|‚(V;È|( Ø<È|;(É>È|_“È|Q•È|b(”—È|‚A™È|PšÈ|+bE} ”G} ÌI}’(äJ}‚(CM}( ÅN};(¶P}]¥}N§}b(‘©}‚H«}U¬}+ËX8} [8} S]8}’(o^8}‚(Â`8}( Db8};(9d8}á¸8}Óº8}b(z¼8}‚,¾8}?¿8}+D±o}´o} ¶o}‚â¸o};¼o} lÅo}b²Èo}‚UÊo}dËo}++kp} Œmp} ãop}’(÷pp}‚(Psp}( ìtp};(wp}ìÌp}AÏp}b(ÒÐp}‚—Òp}¦Óp}+áɧ};„̧}+Ž~¨} π¨}  +ƒ¨}’($„¨}‚(w†¨}( ˆ¨};(Š¨}æÞ¨}âà¨}b(ã¨}‚Ìä¨}èå¨}+ôà} 5“à} y•à}’(Š–à}‚(ê˜à}( kšà};(^œà}úðà}ëòà}b(.õà}‚åöà}ô÷à}+h¤~ –¦~ ʨ~’(â©~‚(C¬~( Ä­~;(µ¯~L~>~b(~‚7
+~D ~+O¶P~ ¸P~ ׺P~’(â»P~‚(5¾P~( ¶¿P~;(¸ÁP~aQ~WQ~b(þQ~‚¶Q~ÅQ~+9ˆ~öˆ~ ýˆ~‚¾ˆ~;áˆ~ K$ˆ~b‘'ˆ~‚4)ˆ~C*ˆ~+
+ʈ~ ^̈~ ¤Îˆ~’(Îψ~‚(-҈~( Îӈ~;(×Ո~ª+‰~÷-‰~b(z/‰~‚91‰~H2‰~+š(À~;=+À~+ÖÛÀ~ ÞÀ~ ^àÀ~’(ƒáÀ~‚(ÖãÀ~( qåÀ~;(kçÀ~k<Á~l>Á~b(¡@Á~‚[BÁ~hCÁ~+~îø~ »ðø~ óø~’(+ôø~‚(‹öø~(  +øø~;(þùø~šNù~ŒPù~b(ÏRù~‚Tù~Uù~+1 :1 r1’(Š1‚(é 1( k 1;(` +1b1d1b(Rf1‚ h1i1+!i ^i ©i’(Åi‚(i( ši;(i7ti)vib(Ðwi‚‚yi‘zi+
+n Çp  Úr ‚±u ;Ïx   ƒ bO† ‚ò‡ ‰ +÷'¡ X*¡ ¯,¡’(Ã-¡‚(0¡( ¸1¡;(ä3¡’‰¡狡b(x¡‚=¡L¡+‡†Ø;*‰Ø+Ã9Ù <Ù B>Ù’(Y?Ù‚(¬AÙ( GCÙ;(MEÙšÙœÙb(LžÙ‚ Ù¡Ù+”M€ ÕO€ R€’(*S€‚(ŠU€(  W€;(þX€ª­€›¯€b(Þ±€‚•³€¤´€+­_I€ ÛaI€ dI€’('eI€‚(ˆgI€(  iI€;(újI€’¿I€„ÁI€b(ÇÃI€‚}ÅI€ŠÆI€+s€ Hu€ w€’(šx€‚(íz€( n|€;(n~€Ӂ€ +Ձ€b(´Ö€‚l؁€{ف€+~˸€;θ€ G舂Ó¸€;'Ö¸€ ‹ß¸€bÑ⸀‚t一ƒå¸€+P…¹€ ­‡¹€ 󉹀’(‹¹€‚(|¹€( ¹€;(2‘¹€É湀鹀b(‘ê¹€‚P칀_í¹€+¹ãð€;\æð€+f˜ñ€ «šñ€ îœñ€’(žñ€‚(f ñ€( ¢ñ€;(û£ñ€
+ùñ€ûñ€b(Cýñ€‚ýþñ€
+ò€+«) [­) ¤¯)’(Ë°)‚(+³)( ­´);(ž¶)9 *- +*b(p*‚*,*+­¾a ßÀa Ãa’(/Äa‚(ŽÆa( Èa;(Êa¨b™ bb(Ü"b‚“$b %b+«Ð™ èҙ 3ՙ’(O֙‚(¢Ø™( )ڙ;(ܙÁ0š³2šb(Z4š‚ 6š7š+”*сQ-с d/с‚12с;M5с Õ>сbBс‚¾CсÍDс+ãс gåс ¾çс’(Òèс‚(+ëс( Çìс;(óîсÁDҁGҁb(§Hҁ‚lJҁ{Kҁ+'C ‚;ÊE ‚+cö ‚ ¤ø ‚ âú ‚’(ùû ‚‚(Lþ ‚( çÿ ‚;(í
+‚»V
+‚·X
+‚b(ìZ
+‚‚¡\
+‚½]
+‚+ÉB‚ 
+ B‚ N +B‚’(_B‚‚(¿B‚( @B‚;(3B‚ÏhB‚ÀjB‚b(mB‚‚ºnB‚ÉoB‚+=z‚ kz‚ Ÿ z‚’(·!z‚‚($z‚( ™%z‚;(Š'z‚!|z‚~z‚b(V€z‚‚ ‚z‚ƒz‚+$.²‚ e0²‚ ¬2²‚’(·3²‚‚(
+6²‚( ‹7²‚;(9²‚6Ž²‚,²‚b(ӑ²‚‚‹“²‚š”²‚+ˆé‚ËŠé‚ Ҍ邂é‚;¼’é‚ xœé‚b¾Ÿé‚‚a¡é‚p¢é‚+åAê‚ 9Dê‚ Fꂒ(©Gê‚‚(Jê‚( ©Kê‚;(¬Mê‚N£ê‚“¥ê‚b(§ê‚‚Õ¨ê‚ä©ê‚+= !ƒ;à¢!ƒ+êT"ƒ /W"ƒ rY"ƒ’(—Z"ƒ‚(ê\"ƒ( …^"ƒ;(`"ƒµ"ƒ€·"ƒb(µ¹"ƒ‚o»"ƒ|¼"ƒ+’gZƒ ÏiZƒ lZƒ’(?mZƒ‚(ŸoZƒ( !qZƒ;(sZƒ®ÇZƒ ÉZƒb(ãËZƒ‚•ÍZƒ¤ÎZƒ+±y’ƒ ã{’ƒ ~’ƒ’(3’ƒ‚(’’ƒ( ƒ’ƒ;( …’ƒÇْƒ¸Û’ƒb(ûݒƒ‚²ß’ƒ¿à’ƒ+5Êƒ rÊƒ ½‘ʃ’(ْʃ‚(,•Êƒ( ®–ʃ;(£˜ÊƒKíʃ=ïʃb(äðʃ‚–òʃ¥óʃ+®å„kè„ ~ê„‚Lí„;lð„ Öù„bý„‚¿þ„Îÿ„+•Ÿ„ ö¡„ M¤„’(a¥„‚(º§„( V©„;(‚«„0„…„b(„‚Û„ê„+%þ9„;È:„+Ò²:„ µ:„ Q·:„’(h¸:„‚(»º:„( V¼:„;(\¾:„);„(;„b(];„‚;„.;„+=År„ ~Çr„ ÂÉr„’(ÓÊr„‚(3Ír„( ´Îr„;(§Ðr„S%s„D's„b(‡)s„‚>+s„M,s„+Áت„ ïÚª„ #ݪ„’(;Þª„‚(œàª„( ⪄;(䪄¦8«„˜:«„b(Û<«„‚‘>«„ž?«„+©ê℠êì℠1ïℒ(<ðâ„‚(òâ„( ôâ„;(öâ„»JㄱLã„b(XNã„‚Pã„Qã„+’D…OG… [I…‚L…;;O… ŸX…bå[…‚ˆ]…—^…+dþ… Á… …’(1…‚(…( 1…;(F
+…Ý_…"b…b(¥c…‚de…wf…+Í\R…;p_R…+ S… NS… ‘S…’(¶S…‚( S…( ¤S…;(žS…®pS…²rS…b(çtS…‚¡vS…®wS…+Ç"‹… 
+%‹… S'‹…’(z(‹…‚(Ú*‹…( \,‹…;(Q.‹…肋…ڄ‹…b(‡‹…‚ʈ‹…ى‹…+V6Å ˆ8Å À:Œ(Ø;Å‚(7>Å( ¹?Å;(ªAÅa–Ã…R˜Ã…b(•šÃ…‚LœÃ…YÃ…+dHû… ¡Jû… ìLû…’(Nû…‚([Pû…( ÝQû…;(ÎSû…u¨û…gªû…b(¬û…‚À­û…Ï®û…+H¢2†¥2† §2†‚å©2†;­2† k¶2†b±¹2†‚T»2†c¼2†+*\3† ‹^3† â`3†’(öa3†‚(Od3†( ëe3†;(h3†¾3†lÀ3†b(ýÁ3†‚ÂÃ3†ÑÄ3†+ »j†;¯½j†+Ink† Špk† Èrk†’(ßsk†‚(2vk†( Íwk†;(Óyk† Îk†ŸÐk†b(ÔÒk†‚ŽÔk†ªÕk†+´€£† õ‚£† 9…£†’(J†£†‚(ªˆ£†( +Š£†;(Œ£†ºà£†«â£†b(î䣆‚¥æ£†´ç£†+(”Û† V–Û† Š˜Û†’(¢™Û†‚(œÛ†( „Û†;(uŸÛ† ôۆþõۆb(Aøۆ‚÷ùۆûۆ+z§‡ »©‡ ¬‡’( +­‡‚(`¯‡( á°‡;(㲇Œ‡‚ ‡b() ‡‚á ‡ð +‡+óÿJ‡°K‡ ·K‡‚‚K‡;¡
+K‡ K‡baK‡‚K‡K‡+ʹK‡ ¼K‡ c¾K‡’(¿K‡‚(ìÁK‡( ÃK‡;(¦ÅK‡IL‡ŽL‡b(L‡‚Ð L‡ß!L‡+9ƒ‡;܃‡+æ̃‡ +σ‡ cу‡’(z҃‡‚(Øԃ‡( uփ‡;(z؃‡i-„‡Ž/„‡b(Ã1„‡‚}3„‡™4„‡+žß»‡ Ëệ ,仇’(S廇‚(ú织( Œé»‡;(ë»‡÷?¼‡B¼‡b(SD¼‡‚F¼‡G¼‡+%òó‡ Wôó‡ œöó‡’(À÷ó‡‚(úó‡(  ûó‡;(“ýó‡Rô‡Tô‡b(CVô‡‚úWô‡Yô‡+},ˆ º,ˆ 
+,ˆ’(! ,ˆ‚(t +,ˆ( ö,ˆ;(ç,ˆ\e,ˆNg,ˆb(õh,ˆ‚§j,ˆ¶k,ˆ+Æ]cˆƒ`cˆ ›bcˆ‚iecˆ;‰hcˆ óqcˆb9ucˆ‚évcˆøwcˆ+²dˆ dˆ jdˆ’(~dˆ‚(×dˆ( w!dˆ;(¥#dˆydˆk{dˆb(î|dˆ‚³~dˆÂdˆ+
+v›ˆ;­x›ˆ+·*œˆ ø,œˆ 6/œˆ’(M0œˆ‚( 2œˆ( ;4œˆ;(A6œˆ󊜈òŒœˆb('œˆ‚ܐœˆø‘œˆ+=Ԉ H?Ԉ ŒAԈ’(BԈ‚(ýDԈ( ~FԈ;(qHԈìœÔˆݞԈb( ¡Ôˆ‚עԈæ£Ôˆ+ZP ‰ ˆR ‰ ¼T ‰’(ÔU ‰‚(5X ‰( ¶Y ‰;(§[ ‰ +° ‰ÿ± ‰b(B´ ‰‚øµ ‰· ‰+{cD‰ ¼eD‰ hD‰’(iD‰‚(akD‰( âlD‰;(änD‰aÃD‰WÅD‰b(þÆD‰‚¶ÈD‰ÅÉD‰+È»{‰¾{‰ —À{‰‚XÃ{‰;{Æ{‰ ÖÏ{‰bÓ{‰‚¹Ô{‰ÎÕ{‰+¤u|‰ x|‰ Gz|‰’(q{|‰‚(Ð}|‰( q|‰;(†|‰ÜÖ|‰Ù|‰b(žÚ|‰‚]Ü|‰lÝ|‰+ÆÓ³‰;iÖ³‰+sˆ´‰ ¸Š´‰ ûŒ´‰’( Ž´‰‚(s´‰( ’´‰;(”´‰ë贉ï괉b($í´‰‚Þëﴉ+ÿšì‰ <ì‰ …Ÿì‰’(¬ ì‰‚( £ì‰( Ž¤ì‰;(¦ì‰ûì‰ýì‰b(Jÿ쉂÷í‰í‰+ƒ®$Š µ°$Š í²$Š’(´$Š‚(d¶$Š( æ·$Š;(×¹$Š~%Šo%Šb(²%Š‚i%Šv%Š+À\Š ¾Â\Š  Å\Š’(%Æ\Š‚(xÈ\Š( úÉ\Š;(ïË\Š— ]Š‰"]Šb(0$]Š‚â%]Šñ&]Š+j”Š'”Š :”Š‚"”Š;/%”Š §.”Šbí1”Š‚3”ŠŸ4”Š+WԔŠ ¸Ö”Š ٔŠ’(#ڔŠ‚(|ܔŠ( ޔŠ;(Eà”Š6•Šh8•Šb(ù9•Š‚¾;•ŠÍ<•Š+3̊;«5̊+Dæ̊ …è̊ Ãê̊’(Úë̊‚(-î̊( Èï̊;(Îñ̊œF͊˜H͊b(ÍJ͊‚‚L͊žM͊+ú‹ Vü‹ šþ‹’(«ÿ‹‚( ‹( Œ‹;(‹Z‹ \‹b(O^‹‚`‹a‹+ =‹ L=‹ €=‹’(˜=‹‚(ù=‹( z=‹;(k=‹l=‹ôm=‹b(7p=‹‚íq=‹úr=‹+pu‹ ±!u‹ ø#u‹’(%u‹‚(V'u‹( ×(u‹;(Ù*u‹‚u‹xu‹b(ƒu‹‚ׄu‹æ…u‹+éw¬‹¦z¬‹ ­|¬‹‚x¬‹;—‚¬‹ Œ¬‹bG¬‹‚ꐬ‹ù‘¬‹+À1­‹ 4­‹ Z6­‹’(„7­‹‚(ã9­‹( „;­‹;(=­‹$“­‹i•­‹b(얭‹‚«˜­‹º™­‹+ä‹;¶’ä‹+ÀDå‹ Gå‹ HI勒(mJå‹‚(ÀLå‹( [Nå‹;(UPå‹U¥å‹V§å‹b(‹©å‹‚E«å‹R¬å‹+hWŒ ¥YŒ î[Œ’(]Œ‚(u_Œ( ÷`Œ;(íbŒ„·Œv¹Œb(¹»Œ‚k½Œz¾Œ+òjUŒ $mUŒ \oUŒ’(tpUŒ‚(ÓrUŒ( UtUŒ;(JvUŒËUŒùÌUŒb(<ÏUŒ‚óÐUŒÒUŒ+ }Œ HŒ “Œ’(¯‚Œ‚(…Œ( „†Œ;(yˆŒ!ݍŒߍŒb(ºàŒ‚l⍌{㍌+„ÕČAØČ YÚȂ&ÝČ;BàČ ¬éČbòìȂ¢îȱïČ+kÅŒ ̑Ō #”ÅŒ’(7•ÅŒ‚(—ÅŒ( 0™ÅŒ;(]›ÅŒ ñŌ`óŌb(ñôŌ‚¶öŌÅ÷Ō+îüŒ;£ðüŒ+­¢ýŒ î¤ýŒ ,§ýŒ’(C¨ýŒ‚(–ªýŒ( 1¬ýŒ;(7®ýŒ
+þŒ þŒb(>þŒ‚óþŒ
+þŒ+µ5 _·5 £¹5’(´º5‚(½5( •¾5;(ˆÀ546%6b(h6‚6.6+¢Èm ÐÊm Ím’(Îm‚(Ðm( Òm;(öÓmŒ(n~*nb(Á,n‚w.n„/n+Ú¥ ÐÜ¥ ߥ’("्‚(u⥍( ö㥍;(ø奍È:¦¾<¦b(e>¦‚@¦,A¦+Ÿ4ݍ`7ݍ g9ݍ‚(<ݍ;G?ݍ ¬HݍbòKݍ‚¡Mݍ°Nݍ+qîݍ Îðݍ óݍ’(>ôݍ‚(öݍ( >øݍ;(dúݍyPލ¾Rލb(ATލ‚VލWލ+iMŽ; PŽ+¥Ž êŽ -Ž’(RŽ‚(¥Ž( @
+Ž;(: Ž4aŽ8cŽb(meŽ‚'gŽ4hŽ+MNŽ ŠNŽ ÓNŽ’(úNŽ‚(ZNŽ( ÜNŽ;(ÍNŽcsNŽUuNŽb(˜wNŽ‚IyNŽXzNŽ+Ñ&†Ž )†Ž ;+†Ž’(S,†Ž‚(².†Ž( 40†Ž;(%2†Ž܆†Ž͈†Žb(‹†Ž‚nj†Žԍ†Ž+ß8¾Ž ;¾Ž g=¾Ž’(ƒ>¾Ž‚(Ö@¾Ž( XB¾Ž;(ID¾Ž𘾎⚾Žb(‰œ¾Ž‚;ž¾ŽJŸ¾Ž+ÒõŽ€•õŽ “—õŽ‚jšõŽ;ˆõŽ ø¦õŽb>ªõŽ‚á«õŽð¬õŽ+@KöŽ ¡MöŽ øOöŽ’( QöŽ‚(eSöŽ( UöŽ;(2WöŽë¬öŽ@¯öŽb(Ñ°öŽ‚–²öŽ¥³öŽ+P«-;ó­-+^. Î`.  c.’(#d.‚(vf.( h.;(j.ä¾.ãÀ.b(Ã.‚ÍÄ.éÅ.+øpf 9sf }uf’(Žvf‚(îxf( ozf;(b|fÑfÿÒfb(BÕf‚ùÖfØf+|„ž ª†ž ވž’(ö‰ž‚(WŒž( ؍ž;(ɏža䞏S枏b(–螏‚LꞏY랏+ϗ֏ šÖ WœÖ’(bÖ‚(µŸÖ( 6¡Ö;(8£ÖÐ÷֏Æù֏b(mû֏‚%ý֏4þ֏+7ð +ôò + õ +‚Á÷ +;àú + Ib‚2 A
++ ª ]¬ ¥®’(ϯ‚(.²( г;(Õµs · +b(:‚ù+aF;
+ F+½F Y¿F œÁF’(ÁÂF‚(ÅF( ¯ÆF;(©ÈF¿GÀGb(õ!G‚¯#G¼$G+ÒÏ~ Ò~ XÔ~’(Õ~‚(ß×~( aÙ~;(VÛ~ó/å1b((4‚Ú5é6+öᶐ (䶐 `涐’(x綐‚(×鶐( Y붐;(Ní¶ûA·ìC·b(/F·‚æG·óH·+iõî ¦÷î ñù( +û(`ýî( âþî;(ÓïzUïlWïb(YÅZïÔ[ï+ÝM&‘šP&‘ ­R&‘‚{U&‘;›X&‘ b&‘bKe&‘‚îf&‘ýg&‘+Ä'‘ %
+'‘ | '‘’( +'‘‚(é'‘( …'‘;(²'‘zi'‘Ïk'‘b(`m'‘‚%o'‘4p'‘+of^‘;i^‘+_‘ ]_‘ ›_‘’(² _‘‚(#_‘(  $_‘;(¦&_‘t{_‘p}_‘b(¥_‘‚Z_‘v‚_‘+‚-—‘ Ã/—‘ 2—‘’(3—‘‚(x5—‘( ù6—‘;(ì8—‘ˆ—‘y—‘b(¼‘—‘‚s“—‘‚”—‘+ö@ϑ $Cϑ XEϑ’(pFϑ‚(ÑHϑ( RJϑ;(CLϑڠϑ̢ϑb(¥Ï‘‚Ŧϑҧϑ+ÝR’ U’ eW’’(pX’‚(ÃZ’( D\’;(F^’³’ö´’b(¶’‚U¸’d¹’+׬>’”¯>’ ›±>’‚\´>’;{·>’ ÞÀ>’b$Ä>’‚ÇÅ>’ÖÆ>’+£f?’ i?’ Fk?’’(pl?’‚(Ïn?’( pp?’;(–r?’>È?’‹Ê?’b(Ì?’‚ÒÍ?’áÎ?’+-Åv’;ÐÇv’+jxw’ ¯zw’ ò|w’’(~w’‚(j€w’( ‚w’;(ÿƒw’øØw’üÚw’b(1Ýw’‚ëÞw’øßw’+ ‹¯’ I¯’ ’¯’’(¹¯’‚(“¯’( ›”¯’;(Œ–¯’"믒í¯’b(W﯒‚ñ¯’ò¯’+žç’ Â ç’ ú¢ç’’(¤ç’‚(q¦ç’( ó§ç’;(ä©ç’›þç’Œè’b(Ïè’‚†è’“è’+ž°“ Û²“ &µ“’(B¶“‚(•¸“( º“;(¼“¯ “¡ “b(H “‚ú “  “+‚
+W“? +W“ RW“‚)W“;GW“ éW“b/"W“‚Ò#W“á$W“+oÄW“ ÐÆW“ 'ÉW“’(;ÊW“‚(”ÌW“( 0ÎW“;(\ÐW“&X“j(X“b(û)X“‚À+X“Ï,X“+
+#“;­%“+F֏“ ‡Ø“ Åڏ“’(Üۏ“‚(/ޏ“( Êߏ“;(ÐᏓž6“š8“b(Ï:“‚„<“ =“+êǓ XìǓ œîǓ’(­ïǓ‚( +òǓ( ŽóǓ;(õǓ-JȓLȓb(aNȓ‚Pȓ'Qȓ+0üÿ“ ^þÿ“ ’”’(ª”‚( ”( Œ”;(}”\”^”b(J`”‚b” +c”+ƒ8” Ä8”  8”’(8”‚(i8”( ê8”;(ì8”„o8”zq8”b(!s8”‚Ùt8”èu8”+ëgo”¨jo” ¯lo”‚poo”;ro” ø{o”b>o”‚á€o”ðo”+·!p”  $p” Q&p”’({'p”‚(Ú)p”( {+p”;(~-p” ƒp”e…p”b(è†p”‚§ˆp”¶‰p”+€§”;³‚§”+½4¨” 7¨” E9¨”’(j:¨”‚(½<¨”( X>¨”;(R@¨”h•¨”i—¨”b(ž™¨”‚X›¨”eœ¨”+{Gà” ¸Ià” Là”’((Mà”‚(ˆOà”( 
+Qà”;(ÿRà”¡§à”“©à”b(Ö«à”‚ˆ­à”›®à”+[• A]• y_•’(‘`•‚(ðb•( rd•;(cf•»•½•b(I¿•‚Á• +•+mP• UoP•  qP•’(¼rP•‚(uP•( ‘vP•;(†xP•.ÍP• ÏP•b(ÇÐP•‚yÒP•ˆÓP•+LJ•¾É‡• Ñˇ•‚žÎ‡•;ºÑ‡• $ۇ•bjއ•‚ +à‡•ᇕ+sˆ• ԁˆ• +„ˆ•’(?…ˆ•‚(˜‡ˆ•( 4‰ˆ•;(`‹ˆ•#ሕx㈕b( 刕‚Î戕Ý爕+‰ß¿•;,⿕+ŒÀ• •À• D—À•’([˜À•‚(®šÀ•( IœÀ•;(OžÀ•óÀ•õÀ•b(N÷À•‚ùÀ•úÀ•++¥ø• l§ø• °©ø•’(Áªø•‚(!­ø•( ¢®ø•;(•°ø•1ù•"ù•b(e ù•‚ ù•+ ù•+Ÿ¸0– ͺ0– ½0–’(¾0–‚(zÀ0–( ûÁ0–;(ìÃ0–ƒ1–u1–b(¼1–‚r1–1–+÷Ëh– 8Îh– Ðh–’(ŠÑh–‚(ÝÓh–( ^Õh–;(`×h–,i–.i–b(¶/i–‚n1i–}2i–+€$ –=' – D) –‚, –;./ – —8 –bÝ; –‚€= –> –+WÞ – ´à – ú⠖’($䠖‚(ƒæ –( $蠖;(9ꠖÑ?¡–B¡–b(™C¡–‚XE¡–gF¡–+À<ؖ;c?ؖ+mñؖ ²óؖ õõؖ’(÷ؖ‚(mùؖ( ûؖ;(ýؖüQٖTٖb(5Vٖ‚ïWٖüXٖ+— R— ›—’( —‚(" —( ¤ +—;(•—+d—f—b(`h—‚ +j—k—+.I— `I— ˜I—’(°I—‚(I—( ‘I—;(‚!I—9vI—*xI—b(mzI—‚$|I—1}I—+§)— ä+— /.—’(K/—‚(ž1—(  3—;(5—¸‰—ª‹—b(Q—‚——+‚¸—؄¸— 놸—‚¹‰¸—;ٌ¸— C–¸—b‰™¸—‚,›¸—;œ¸—+<¹— c>¹— º@¹—’(ÎA¹—‚('D¹—( ÃE¹—;(ïG¹—¨¹—ýŸ¹—b(Ž¡¹—‚S£¹—b¤¹—+šð—;@ð—+JOñ— ‹Qñ— ÉSñ—’(âTñ—‚(5Wñ—( ÐXñ—;(ÔZñ—¡¯ñ— ±ñ—b(Õ³ñ—‚Šµñ—¦¶ñ—+µa)˜ öc)˜ :f)˜’(Kg)˜‚(«i)˜( ,k)˜;(m)˜ËÁ)˜¼Ã)˜b(ÿÅ)˜‚¶Ç)˜ÅÈ)˜+9ua˜ gwa˜ ›ya˜’(³za˜‚(}a˜( •~a˜;(†€a˜Õa˜×a˜b(SÙa˜‚ Ûa˜Üa˜+!‡™˜ b‰™˜ ©‹™˜’(´Œ™˜‚(™˜( ˆ™˜;(Š’™˜"癘陘b(¿ê™˜‚w왘†í™˜+úàИ·ãИ ÃåИ‚„èИ;£ëИ  õИbRøИ‚õùИûИ+˚ј Ñ˜ eŸÑ˜’( Ñ˜‚(î¢Ñ˜( ¤Ñ˜;(’¦Ñ˜;üјþјb(Ҙ‚ÁҘÐҘ+)ù™;Ìû™+f¬ ™ «® ™ î° ™’(² ™‚(f´ ™( ¶ ™;(û· ™
+™
+™b(G
+™‚
+™
+™+$¿A™ aÁA™ ªÃA™’(×ÄA™‚(7ÇA™( ¹ÈA™;(®ÊA™JB™<!B™b(#B™‚1%B™@&B™+¸Òy™ êÔy™ "×y™’(:Øy™‚(™Úy™( Üy™;( Þy™Ã2z™´4z™b(÷6z™‚®8z™»9z™+Æ䱙 籙 N鱙’(j걙‚(½ì±™( ?;(0ð±™×D²™ÉF²™b(pH²™‚"J²™1K²™+ª>é™gAé™ C陂LFé™;hIé™ ÓRé™bV陂¼Wé™ËXé™+’øé™ óúé™ Jý陒(^þ陂(·ê™( Sê™;(ê™IZꙞ\ê™b(/^Ꙃô_ê™aê™+BW!š;åY!š+
+"š À "š þ"š’("š‚(h"š( "š;( "šÖj"šÝl"šb(o"š‚Çp"šãq"š+[Zš œ Zš à"Zš’(ñ#Zš‚(Q&Zš( Ò'Zš;(Ã)Zš`~ZšQ€Zšb(”‚Zš‚K„ZšZ…Zš+c0’š ‘2’š Å4’š’(Ý5’š‚(>8’š( ¿9’š;(°;’šH’š:’’šb(}”’š‚3–’š@—’š+¶Cʚ ÷Eʚ >Hʚ’(IIʚ‚(œKʚ( Mʚ;(OʚأʚΥʚb(u§Êš‚-©Êš<ªÊš+?œ›üž› ¡›‚Ó£›;ò¦› z±›bÀ´›‚c¶›r·›+V› yX› ¿Z›’(é[›‚(H^›( é_›;(þa›œ·›à¹›b(c»›‚"½›1¾›+Š´9›;-·9›+7i:› |k:› ¿m:›’(än:›‚(7q:›( Òr:›;(Ìt:›ÆÉ:›ÊË:›b(ÿÍ:›‚¹Ï:›ÆÐ:›+ß{r› ~r› e€r›’(Œr›‚(ìƒr›( n…r›;(_‡r›õÛr›çÝr›b(*àr›‚×ár›æâr›+øª› *ª› b’ª›’(z“ª›‚(ٕª›( [—ª›;(L™ª›ô瀞b(7òª›‚îóª›ûôª›+q¡â› ®£â› ù¥â›’(§â›‚(h©â›( êªâ›;(۬⛂ã›tã›b(㛂Íã›Üã›+åùœ¢üœ ºþœ‚‡œ;£œ ~œbÄœ‚gœvœ+̳œ -¶œ „¸œ’(˜¹œ‚(ñ»œ( ½œ;(¹¿œyœÏœb(`œ‚%œ4œ+rRœ;Rœ+ÇRœ `ÉRœ žËRœ’(µÌRœ‚(ÏRœ( £ÐRœ;(©ÒRœv'Sœu)Sœb(ª+Sœ‚_-Sœ{.Sœ+ŠÙŠœ Ëۊœ ފœ’( ߊœ‚(€áŠœ( ㊜;(ô䊜 9‹œ‘;‹œb(Ô=‹œ‚‹?‹œš@‹œ+íœ <ïœ pñœ’(ˆòœ‚(éôœ( jöœ;([øœóLÜåNÜb((QÜ‚ÞRÜëSÜ+öþúœ 7ûœ ~ûœ’(‰ûœ‚(Üûœ( ]ûœ;(_
+ûœý^ûœó`ûœb(šbûœ‚Rdûœaeûœ+ÔX2‘[2 ]2‚^`2;}c2 æl2b7p2‚Úq2ér2+¦3 3 E3’(o3‚(Î3( o3;(ˆ31t3uv3b(øw3‚·y3Æz3+qj;Âsj+Ì%k (k I*k’(`+k‚(¾-k( [/k;(b1kf†k‹ˆkb(ÀŠk‚zŒk–k+ 8£ Í:£ .=£’(U>£‚(ü@£( ŽB£;(ƒD£ù˜£›£b(U£‚Ÿ£ £+'K۝ YM۝ žO۝’(ÂP۝‚(!S۝( ¢T۝;(•V۝«Ûò¬Ûb(5¯Û‚ì°Ûù±Û+]ž A_ž Œaž’(¨bž‚(ûdž( }fž;(rhžè¼žÚ¾žb(Àž‚3žBÞ+¼¶Jžy¹Jž ‘»Jž‚]¾Jž;{ÁJž ëÊJžb1ÎJž‚áÏJžðÐJž+£pKž sKž [uKž’(ovKž‚(ÈxKž( hzKž;(•|KžÒKžtÔKžb(÷ÕKž‚¼×KžËØKž+ςž;ºÑ‚ž+マ †ƒž Cˆƒž’(Z‰ƒž‚(­‹ƒž( Hƒž;(Nƒž䃞ÿ僞b(4胞‚é郞냞+–»ž U˜»ž ™š»ž’(ª›»ž‚(
+ž»ž( ‹Ÿ»ž;(~¡»žèõ»žÙ÷»žb(ú»ž‚Óû»žâü»ž+V©óž „«óž ¸­óž’(Юóž‚(1±óž( ²²óž;(£´óž ôžû
+ôžb(> +ôž‚ôôžôž+ »+Ÿ M½+Ÿ ”¿+Ÿ’(ŸÀ+Ÿ‚(òÂ+Ÿ( sÄ+Ÿ;(uÆ+Ÿý,Ÿó,Ÿb(š,Ÿ‚R ,Ÿa!,Ÿ+ÕcŸ’cŸ žcŸ‚icŸ;ˆcŸ <*cŸb‚-cŸ‚%/cŸ40cŸ+±ÎcŸ ÑcŸ TÓcŸ’(~ÔcŸ‚(ÝÖcŸ( ~ØcŸ;(¤ÚcŸ0dŸT2dŸb(×3dŸ‚–5dŸ¥6dŸ+ÿ,›Ÿ;¢/›Ÿ+¬á›Ÿ ñ㛟 4曟’(Y盟‚(¬é›Ÿ( G뛟;(A훟BœŸDœŸb(GFœŸ‚HœŸIœŸ+"ôӟ _öӟ ¨øӟ’(Ïùӟ‚(/üӟ( ±ýӟ;(¢ÿӟ8Tԟ*Vԟb(mXԟ‚Zԟ)[ԟ+B   t   ¬
+  ’(Ä  ‚(#  ( ¤  ;(™  Qf  Bh  b(…j  ‚<l  Im  +¿D  üD  GD ’(cD ‚(¶!D ( 8#D ;()%D ÐyD Â{D b(i}D ‚D *€D +3r{ ðt{  w{ ‚Õy{ ;ñ|{  [†{ b¡‰{ ‚D‹{ SŒ{ +,|  {.|  Ò0| ’(æ1| ‚(?4| ( Û5| ;(8| ̍| !| b(²‘| ‚w“| †”| +Ŋ³ ;h³ +r?´  ³A´  ñC´ ’(E´ ‚([G´ ( öH´ ;(üJ´ ϟ´ Ρ´ b(¤´ ‚¸¥´ Ô¦´ +ãQì  $Tì  hV젒(yWì ‚(ÙYì ( Z[ì ;(M]ì ÿ±ì ð³ì b(3¶ì ‚ê·ì ù¸ì +me$¡ ›g$¡ Ïi$¡’(çj$¡‚(Hm$¡( Én$¡;(Àp$¡WÅ$¡IÇ$¡b(ŒÉ$¡‚BË$¡OÌ$¡+Zw\¡ ›y\¡ â{\¡’(í|\¡‚(@\¡( Á€\¡;(Â\¡l×\¡bÙ\¡b( Û\¡‚ÁÜ\¡ÐÝ\¡+Cѓ¡ԓ¡  ֓¡‚Íؓ¡;ìۓ¡ U員b›è“¡‚>ꓡM듡+‹”¡ i”¡ ¯”¡’(ِ”¡‚(8“”¡( ٔ”¡;(à–”¡씡Ãb(F𔡂ò”¡ó”¡+méË¡;ìË¡+ªœÌ¡ ïžÌ¡ 2¡Ì¡’(W¢Ì¡‚(ª¤Ì¡( E¦Ì¡;(?¨Ì¡UýÌ¡VÿÌ¡b(‹Í¡‚EÍ¡RÍ¡+h¯¢ ¥±¢ î³¢’(µ¢‚(u·¢( ÷¸¢;(캢‰¢{¢b(¾¢‚p¢¢+÷Â<¢ )Å<¢ aÇ<¢’(yÈ<¢‚(ØÊ<¢( ZÌ<¢;(OÎ<¢ü"=¢í$=¢b(0'=¢‚ç(=¢ô)=¢+ÿÔt¢ <×t¢ ‡Ùt¢’(£Út¢‚(öÜt¢( xÞt¢;(iàt¢5u¢7u¢b(©8u¢‚[:u¢j;u¢+ã.¬¢ 1¬¢ ¸3¬¢‚6¬¢;­9¬¢ C¬¢bdF¬¢‚H¬¢I¬¢+Ö謢 7묢 Ží¬¢’(¢î¬¢‚(ûð¬¢( —ò¬¢;(Èô¬¢“J­¢éL­¢b(zN­¢‚?P­¢NQ­¢+ŒGä¢;/Jä¢+Èúä¢  ýä¢ Gÿ䢒(^墂(±å¢( Lå¢;(Rå¢ [å¢]å¢b(Q_墂aå¢"bå¢+™£ Ú£ £’(/£‚(£( £;(£Ÿn£p£b(Ór£‚Št£™u£+¢ U£ Ð"U£ %U£’(&U£‚(}(U£( þ)U£;(ï+U£†€U£x‚U£b(»„U£‚q†U£~‡U£+ô3£ 56£ |8£’(‡9£‚(Ú;£( [=£;(]?£”£ +–£b(´—£‚l™£{š£+~ŒÄ£;Ä£ G‘Ä£‚”Ä£;'—Ä£ Š Ä£bУģ‚s¥Ä£‚¦Ä£+OFÅ£ ¬HÅ£ òJÅ£’(LÅ£‚({NÅ£( PÅ£;(HRÅ£ñ§Å£4ªÅ£b(·«Å£‚v­Å£…®Å£+ߤü£;‚§ü£+ŒYý£ Ó[ý£ ^ý£’(;_ý£‚(Žaý£( +cý£;('eý£ ºý£$¼ý£b(Y¾ý£‚Àý£ Áý£+9l5¤ vn5¤ ¿p5¤’(æq5¤‚(Ft5¤( Èu5¤;(¹w5¤OÌ5¤AÎ5¤b(„Ð5¤‚1Ò5¤@Ó5¤+R~m¤ „€m¤ ¼‚m¤’(ԃm¤‚(3†m¤( µ‡m¤;(¦‰m¤]Þm¤Nàm¤b(‘âm¤‚Häm¤Uåm¤+ˑ¥¤ ”¥¤ S–¥¤’(o—¥¤‚(™¥¤( D›¥¤;(5¥¤Üñ¥¤Îó¥¤b(uõ¥¤‚'÷¥¤6ø¥¤+?êܤüìܤ ïܤ‚áñܤ;ýôܤ tþܤbºݤ‚]ݤlݤ+&¤Ý¤ ‡¦Ý¤ ިݤ’(ò©Ý¤‚(K¬Ý¤( ç­Ý¤;(°Ý¤ÑÞ¤&Þ¤b(· Þ¤‚| Þ¤‹ Þ¤+Æ¥;i¥+s·¥ ´¹¥ ø»¥’(½¥‚(b¿¥( ýÀ¥;(åХϥb(¥‚¹¥Õ¥+äÉM¥ %ÌM¥ iÎM¥’(zÏM¥‚(ÚÑM¥( [ÓM¥;(NÕM¥ *N¥ü+N¥b(?.N¥‚ö/N¥1N¥+y݅¥ §ß…¥ Ûᅥ’(óⅥ‚(T入( Õ慥;(Æ腥]=†¥O?†¥b(’A†¥‚HC†¥UD†¥+`ï½¥ ¡ñ½¥ è󽥒(óô½¥‚(F÷½¥( Çø½¥;(Éú½¥bO¾¥XQ¾¥b(ÿR¾¥‚·T¾¥ÆU¾¥+9Iõ¥öKõ¥ ýMõ¥‚ÃPõ¥;âSõ¥ K]õ¥b‘`õ¥‚4bõ¥Ccõ¥+ ö¥ _ö¥ ¥ö¥’(Ïö¥‚(. ö¥( Ï ö¥;(Öö¥ndö¥³fö¥b(6hö¥‚ùiö¥kö¥+^a-¦;d-¦+ .¦ P.¦ “.¦’(¸.¦‚( .¦( ¦.¦;( !.¦¶v.¦·x.¦b(ìz.¦‚¦|.¦³}.¦+É(f¦ +f¦ O-f¦’(v.f¦‚(Ö0f¦( X2f¦;(M4f¦êˆf¦܊f¦b(f¦‚юf¦àf¦+í:ž¦ =ž¦ W?ž¦’(o@ž¦‚(ÎBž¦( PDž¦;(EFž¦òšž¦㜞¦b(&Ÿž¦‚ß ž¦졞¦+`NÖ¦ PÖ¦ èRÖ¦’(TÖ¦‚(WVÖ¦( ÙWÖ¦;(ÊYÖ¦q®Ö¦c°Ö¦b(
+²Ö¦‚¼³Ö¦Ë´Ö¦+Ô¦ +§‘© +§ ¤« +§‚|® +§;˜± +§  » +§bO¾ +§‚ò¿ +§Á +§+Á`§ "c§ ye§’(f§‚(æh§( ‚j§;(³l§w§Ìħb(]Ƨ‚"ȧ1ɧ+l¿E§;ÂE§+¨rF§ étF§ 'wF§’(>xF§‚(‘zF§( ,|F§;(2~F§ÓF§üÔF§b(1×F§‚æØF§ÚF§+y†~§ ºˆ~§ þŠ~§’(Œ~§‚(oŽ~§( ð~§;(ã‘~§æ~§pè~§b(³ê~§‚jì~§yí~§+‚˜¶§ °š¶§ 䜶§’(ü¶§‚(] ¶§( Þ¡¶§;(Ï£¶§fø¶§Xú¶§b(›ü¶§‚Qþ¶§^ÿ¶§+Û«î§ ®î§ c°î§’(n±î§‚(Á³î§( Bµî§;(B·î§ü ï§ò +ï§b(™ï§‚Qï§`ï§+c&¨ &¨ , &¨‚í &¨; &¨ p&¨b¶&¨‚Y&¨h&¨+5¾&¨ ’À&¨ ØÂ&¨’(Ä&¨‚(aÆ&¨( È&¨;((Ê&¨Ê'¨"'¨b(’#'¨‚Q%'¨`&'¨+¹^¨;\^¨+fÑ^¨ «Ó^¨ îÕ^¨’(×^¨‚(fÙ^¨( Û^¨;(ûÜ^¨õ1_¨ù3_¨b(.6_¨‚è7_¨õ8_¨+䖨 K斨 ”è–¨’(»é–¨‚(얨( í–¨;(Žï–¨$D—¨F—¨b(YH—¨‚J—¨K—¨+’÷Ψ ÄùΨ üûΨ’(ýΨ‚(sÿΨ( õϨ;(æϨ£WϨ”YϨb(×[Ϩ‚Ž]Ϩ ^Ϩ+¦ © ã © .©’(J©‚(©( ©;(©¼i©®k©b([m©‚ +o©p©+c>©Lf>© _h>©‚,k>©;Hn>© ²w>©bøz>©‚›|>©ª}>©+?© b?© ¹ ?©’(Í!?©‚(&$?©( Â%?©;(ó'?©¬}?©€?©b(’?©‚Wƒ?©f„?©+|v©;´~v©+N/w© 1w© Í3w©’(ä4w©‚(77w©( Ò8w©;(Ø:w©¥w©¤‘w©b(ٓw©‚Ž•w©ª–w©+¹A¯© úC¯© >F¯©’(OG¯©‚(¯I¯©( 0K¯©;(#M¯©Ï¡¯©À£¯©b(¦¯©‚º§¯©ɨ¯©+=Uç© kWç© ŸY穒(·Zç©‚(]ç©( ™^ç©;(Š`ç©"µç©·ç©b(W¹ç©‚ +»ç©¼ç©+%gª fiª ­kª’(¸lª‚( oª( Œpª;(Žrª&Ǫɪb(Ãʪ‚}̪ŒÍª+þÀVª»ÃVª ÂÅVª‚ÈVª;¬ËVª ÕVªb`ØVª‚ÚVªÛVª+ÕzWª )}Wª oWª’(™€Wª‚(ø‚Wª( ™„Wª;( †Wª8ÜWª}ÞWªb(àWª‚¿áWªÎâWª+(َª;Ëێª+Սª ª ]’ª’(‚“ª‚(Օª( p—ª;(j™ª€îªðªb(¶òª‚pôª}õª+“ Çª ТǪ ¥Çª’(@¦Çª‚( ¨Çª( "ªÇª;(¬Çª´Èª¦Ȫb(éȪ‚›ȪªȪ+·²ÿª é´ÿª !·ÿª’(9¸ÿª‚(˜ºÿª( ¼ÿª;(¾ÿª¼«­«b(𫂧«´«+*Æ7« gÈ7« ²Ê7«’(ÎË7«‚(!Î7«( £Ï7«;(”Ñ7«;&8«-(8«b(Ô)8«‚†+8«•,8«+žo«[!o« n#o«‚<&o«;\)o« Æ2o«b 6o«‚¯7o«¾8o«+…Øo« æÚo« =Ýo«’(QÞo«‚(ªào«( Fâo«;(säo«6:p«‹<p«b(>p«‚á?p«ð@p«++7§«;Î9§«+Ø맫  W𧫒(nñ§«‚(Áó§«( \õ§«;(b÷§«/L¨«.N¨«b(cP¨«‚R¨«4S¨«+Jþß« ‹à« Ï૒(àà«‚(@à«( Áà«;(² à«N^à«?`à«b(‚bà«‚9dà«Heà«+¼¬ ê¬ ¬’(6¬‚(—¬( ¬;( ¬¡q¬“s¬b(Öu¬‚Œw¬™x¬+¤#P¬ å%P¬ ,(P¬’(7)P¬‚(Š+P¬(  -P¬;( +/P¬ƃP¬¼…P¬b(c‡P¬‚‰P¬*ŠP¬+ž}‡¬[€‡¬ g‚‡¬‚(…‡¬;Gˆ‡¬ ª‘‡¬b𔇬‚“–‡¬¢—‡¬+ÿ5ˆ¬ \8ˆ¬ ¢:ˆ¬’(Ì;ˆ¬‚(+>ˆ¬( Ì?ˆ¬;(òAˆ¬”—ˆ¬ٙˆ¬b(\›ˆ¬‚ˆ¬*žˆ¬+ô•¿¬;—˜¿¬+0IÀ¬ uKÀ¬ ¸MÀ¬’(ÝNÀ¬‚(0QÀ¬( ËRÀ¬;(ÅTÀ¬Ä©À¬È«À¬b(ý­À¬‚·¯À¬Ä°À¬+Ø[ø¬ ^ø¬ ^`ø¬’(…aø¬‚(åcø¬( leø¬;(]gø¬ó»ø¬ç½ø¬b(*Àø¬‚×Áø¬æÂø¬+go0­ ™q0­ Ñs0­’(ét0­‚(Hw0­( Êx0­;(»z0­ƒÏ0­tÑ0­b(·Ó0­‚nÕ0­{Ö0­+†h­ Ãh­ †h­’(*‡h­‚(}‰h­( ÿŠh­;(ôŒh­œáh­Žãh­b(5åh­‚çæh­öçh­+o۟­,ޟ­ ?àŸ­‚ 㟭;(柭 ŸïŸ­båòŸ­‚ˆôŸ­—õŸ­+Q• ­ ²— ­  š ­’(› ­‚(v ­( Ÿ ­;(?¡ ­üö ­Qù ­b(âú ­‚§ü ­¶ý ­+ñó×­;”ö×­+.§Ø­ o©Ø­ ­«Ø­’(Ĭح‚(¯Ø­( ²°Ø­;(¸²Ø­…Ù­„ Ù­b(¹ Ù­‚n +Ù­ŽÙ­+»® E½® ‰¿®’(šÀ®‚(ú®( {Ä®;(nÆ®® ®b(N®‚!®"®+ÍH® KÏH® ÑH®’(—ÒH®‚(øÔH®( yÖH®;(jØH®-I®ô.I®b(71I®‚í2I®ú3I®+pà€® ±â€® ø䀮’(怮‚(V耮( ×逮;(Ù뀮q@®gB®b(D®‚ÆE®ÕF®+Ø8¸®•;¸® œ=¸®‚g@¸®;†C¸® õL¸®b;P¸®‚ÞQ¸®íR¸®+¯ò¸® õ¸® I÷¸®’(sø¸®‚(Òú¸®( sü¸®;(|þ¸®T¹®XV¹®b(ÛW¹®‚šY¹®©Z¹®+Qð®;¥Sð®+¯ñ® ôñ® 7
+ñ®’(\ ñ®‚(¯ +ñ®( Jñ®;(Dñ®Zfñ®[hñ®b(jñ®‚Jlñ®Wmñ®+m)¯ ª)¯ ó)¯’()¯‚(z )¯( ü!)¯;(í#)¯‰x)¯{z)¯b(¾|)¯‚p~)¯)¯+Œ*a¯ ¾,a¯ ö.a¯’(0a¯‚(m2a¯( ï3a¯;(ä5a¯‘Ša¯‚Œa¯b(Ŏa¯‚|a¯‰‘a¯+ÿ=™¯ <@™¯ ‡B™¯’(£C™¯‚(öE™¯( xG™¯;(iI™¯ž™¯ ™¯b(©¡™¯‚[£™¯j¤™¯+s–Я0™Ð¯ H›Ð¯‚žÐ¯;1¡Ð¯ ›ªÐ¯bá­Ð¯‚„¯Ð¯“°Ð¯+ZPѯ »Rѯ Uѯ’(&Vѯ‚(Xѯ( Zѯ;(H\ѯ ²Ñ¯`´Ñ¯b(ñµÑ¯‚¶·Ñ¯Ÿѯ+¯°;£±°+­c ° îe ° ,h °’(Ci °‚(–k °( 1m °;(7o °Ä °Æ °b(8È °‚íÉ ° Ë °+vA° YxA° zA°’(®{A°‚(~A°( A°;(‚A°ÖA°ØA°b(RÚA°‚ ÜA°ÝA°+Œ‰y° º‹y° îy°’(y°‚(g‘y°( è’y°;(ٔy°péy°bëy°b(¥íy°‚[ïy°hðy°+s›±° ´±° ûŸ±°’(¡±°‚(Y£±°( Ú¤±°;(ܦ±°›û±°‘ý±°b(8ÿ±°‚ð²°ÿ²°+sõè°0øè° 7ú谂øüè°;é°  é°bŠ鰂hé°wé°+D¯é° ¡±é° ç³é°’(µé°‚(v·é°( ¹é°;(=»é°ßê°$ê°b(§ê°‚fê°uê°+Î +!±;q!±+ Á!± PÃ!± “Å!±’(¸Æ!±‚( É!±( ¦Ê!±;( Ì!±ª!"±®#"±b(ã%"±‚'"±ª("±+ÃÓY± ÖY± IØY±’(pÙY±‚(ÐÛY±( RÝY±;(CßY±Ù3Z±Ë5Z±b(8Z±‚»9Z±Ê:Z±+G瑱 y鑱 ±ë‘±’(É쑱‚((( ªð‘±;(›ò‘±XG’±II’±b(ŒK’±‚CM’±PN’±+[ùɱ ˜ûɱ ãýɱ’(ÿþɱ‚(Rʱ( Ôʱ;(ÉʱqYʱc[ʱb(
+]ʱ‚¼^ʱË_ʱ+DS²V² X²‚áZ²;ý]² gg²b­j²‚Pl²_m²+& +² ‡² Þ²’(ò²‚(K²( ç²;(²Ñn²&q²b(·r²‚|t²‹u²+Æk9²;in9²+:² D!:² ‚#:²’(™$:²‚(ì&:²( ‡(:²;(*:²Z:²Y:²b(Žƒ:²‚C…:²_†:²+Ù2r² 5r² ^7r²’(o8r²‚(Ï:r²( P<r²;(C>r²ï’r²à”r²b(#—r²‚ژr²é™r²+òDª²  Gª² TIª²’(lJª²‚(ÍLª²( NNª²;(?Pª²פª²ɦª²b( ©ª²‚ªª²Ï«ª²+EXâ² †Zâ² Í\Ⲓ(Ø]Ⲃ(+`â²( ¬aâ²;(®câ²F¸â²<ºâ²b(ã»â²‚›½â²ª¾â²+­°³j³³ qµ³‚<¸³;[»³ Åijbȳ‚¹É³Èʳ+„j³ Øl³ o³’(Gp³‚(¦r³( Gt³;(`v³Ì³Hγb(Ëϳ‚ŠÑ³™Ò³+óÈQ³;–ËQ³+ }R³ åR³ ‚R³’(4ƒR³‚(’…R³( /‡R³;(4‰R³4ÞR³YàR³b(ŽâR³‚HäR³dåR³+nŠ³ ›’Š³ ü”Š³’(#–Š³‚(ʘŠ³( \šŠ³;(QœŠ³ÇðŠ³àòŠ³b(#õŠ³‚ÐöŠ³ß÷Š³+õ¢Â³ '¥Â³ l§Â³’(¨Â³‚(ïªÂ³( p¬Â³;(c®Â³ÔóÅób(ó‚¿óÌ Ã³+B¶ú³ ¸ú³ ʺú³’(æ»ú³‚(9¾ú³( »¿ú³;(¬Áú³!û³û³b(ºû³‚lû³{û³+„2´A2´ Y2´‚&2´;B2´ ­"2´bó%2´‚£'2´²(2´+lÈ2´ ÍÊ2´ $Í2´’(8Î2´‚(‘Ð2´( 1Ò2´;(^Ô2´á)3´6,3´b(¹-3´‚~/3´03´+Ú&j´;})j´+‡Ûj´ ÈÝj´ àj´’(áj´‚(pãj´(  åj´;(çj´Ã;k´Â=k´b(÷?k´‚¬Ak´ÈBk´+×í¢´ 𢴠\ò¢´’(mó¢´‚(Íõ¢´( N÷¢´;(Aù¢´±M£´¢O£´b(åQ£´‚œS£´«T£´+Û´ MÛ´ Û´’(™Û´‚(úÛ´( {
+Û´;(l Û´Ò`Û´ÐbÛ´b(eÛ´‚ÉfÛ´ÖgÛ´+Pµ ‘µ ص’(㵂(6µ( ·µ;(¹µAtµ7vµb(Þwµ‚–yµ¥zµ+¨lJµeoJµ lqJµ‚-tJµ;LwJµ µ€JµbûƒJµ‚ž…Jµ­†Jµ+t&Kµ Ñ(Kµ +Kµ’(A,Kµ‚( .Kµ( A0Kµ;(g2Kµ͇KµŠKµb(•‹Kµ‚TKµcŽKµ+¼„‚µ;_‡‚µ+i9ƒµ ®;ƒµ ñ=ƒµ’(?ƒµ‚(iAƒµ( Cƒµ;(þDƒµ̙ƒµЛƒµb(žƒµ‚¿ŸƒµÌ ƒµ+åK»µ "N»µ kP»µ’(’Q»µ‚(òS»µ( tU»µ;(eW»µû«»µí­»µb(0°»µ‚ݱ»µì²»µ+i_óµ ›aóµ Ócóµ’(ëdóµ‚(Jgóµ( Ìhóµ;(½jóµt¿óµeÁóµb(¨Ãóµ‚`ÅóµmÆóµ+wq+¶ ´s+¶ ÿu+¶’(w+¶‚(ny+¶( ðz+¶;(á|+¶ˆÑ+¶zÓ+¶b(!Õ+¶‚ÓÖ+¶â×+¶+[Ëb¶Îb¶ +Ðb¶‚Ób¶; Öb¶ àb¶bKãb¶‚îäb¶ýåb¶+H…c¶ ©‡c¶ Šc¶’(‹c¶‚(mc¶(  c¶;(6‘c¶óæc¶Héc¶b(Ùêc¶‚žìc¶­íc¶+è㚶;‹æš¶+%—›¶ f™›¶ ¤››¶’(»œ›¶‚(Ÿ›¶( © ›¶;(¯¢›¶|÷›¶{ù›¶b(°û›¶‚eý›¶þ›¶+ûªÓ¶ <­Ó¶ €¯Ó¶’(‘°Ó¶‚(ñ²Ó¶( r´Ó¶;(e¶Ó¶ Ô¶ +Ô¶b(EÔ¶‚üÔ¶ Ô¶+½ · B¿ · vÁ ·’(ŽÂ ·‚(ïÄ ·( pÆ ·;(aÈ ·ù ·ë ·b(.! ·‚ä" ·ñ# ·+gÐC· ¨ÒC· ïÔC·’(úÕC·‚(MØC·( ÎÙC·;(ÐÛC·h0D·^2D·b(4D·‚½5D·Ì6D·+Ï({·Œ+{· “-{·‚T0{·;s3{· Ü<{·b"@{·‚ÅA{·ÔB{·+›â{· ïä{· 5ç{·’(_è{·‚(¾ê{·( _ì{·;(hî{·D|·IF|·b(ÌG|·‚‹I|·šJ|·+ý@³·;¢C³·+¬õ³· ñ÷³· 4ú³·’(Yû³·‚(¬ý³·( Gÿ³·;(A´·WV´·XX´·b(Z´·‚G\´·T]´·+jì· §
+ì· ð 췒(ì·‚(wì·( ùì·;(îì·‹hì·}jì·b(Àlì·‚rn췁oì·+ù$¸ +$¸ c $¸’({!$¸‚(Ú#$¸( \%$¸;(Q'$¸þ{$¸ï}$¸b(2€$¸‚é$¸ö‚$¸+.\¸ >0\¸ ‰2\¸’(¥3\¸‚(ø5\¸( z7\¸;(k9\¸Ž\¸\¸b(«‘\¸‚]“\¸l”\¸+凓¸¢Š“¸ ºŒ“¸‚†“¸;¤’“¸ œ“¸bTŸ“¸‚÷ “¸¢“¸+\@”¸ ½B”¸ E”¸’((F”¸‚(H”¸( J”¸;(JL”¸¢”¸g¤”¸b(ø¥”¸‚½§”¸̨”¸+x Ë¸;£Ë¸+´S̸ õU̸ 3X̸’(JY̸‚(£[̸( >]̸;(D_̸´Ì¸¶Ì¸b(E¸Ì¸‚ú¹Ì¸»Ì¸+%f¹ fh¹ ªj¹’(»k¹‚(n¹( œo¹;(q¹;ƹ,ȹb(oʹ‚&̹5͹+©y<¹ ×{<¹  ~<¹’(#<¹‚(„<¹( ƒ<¹;(ö„<¹ŽÙ<¹€Û<¹b(ÃÝ<¹‚yß<¹†à<¹+‘‹t¹ ҍt¹ t¹’($‘t¹‚(w“t¹( ø”t¹;(ú–t¹³ët¹©ít¹b(Pït¹‚ñt¹òt¹+‹å«¹H諹 O꫹‚í«¹;3𫹠—ù«¹bÝü«¹‚€þ«¹ÿ«¹+\Ÿ¬¹ ¹¡¬¹ ÿ£¬¹’()¥¬¹‚(ˆ§¬¹( )©¬¹;(O«¬¹ñ­¹6­¹b(¹­¹‚x­¹‡­¹+áýã¹;Šä¹+#±ä¹ h³ä¹ «µä¹’(ж乂(#¹ä¹( ¾ºä¹;(¸¼ä¹±å¹µå¹b(ê幂¤å¹±å¹+0ź mǺ ¶Éº’(Ýʺ‚(=ͺ( ¿Îº;(°ÐºF%º8'ºb({)º‚(+º7,º+I×Tº {ÙTº ³ÛTº’(ËÜTº‚(*ßTº( ¬àTº;(âTºT7UºE9Uºb(ˆ;Uº‚?=UºL>Uº+Âꌺ ÿ쌺 J’(fðŒº‚(¹òŒº( ;ôŒº;(,öŒºÓJºÅLºb(lNº‚Pº-Qº+6CĺóEĺ Hĺ‚ÞJĺ;úMĺ XĺbÓ[ĺ‚v]ĺ…^ĺ+#ýĺ „ÿĺ Ûź’(ïź‚(Hź( äź;( źÎ^ź#aźb(´bź‚ydźˆeź+Ã[üº;f^üº+pýº ±ýº ïýº’(ýº‚(Yýº( ôýº;(úýºÇpýºÆrýºb(ûtýº‚°výºÌwýº+Û"5» %5» `'5»’(q(5»‚(Ñ*5»( R,5»;(E.5»ñ‚5»â„5»b(%‡5»‚܈5»ë‰5»+ô4m» "7m» V9m»’(n:m»‚(Ï<m»( P>m»;(A@m»ٔm»˖m»b(™m»‚Ěm»ћm»+GH¥» ˆJ¥» ÏL¥»’(ÚM¥»‚(0P¥»( ±Q¥»;(¯S¥»H¨¥»>ª¥»b(å«¥»‚­¥»¬®¥»+¯ Ü»l£Ü» x¥Ü»‚9¨Ü»;X«Ü» Á´Ü»b¸Ü»‚ª¹Ü»ºܻ+ZÝ» Õ\Ý» _Ý»’(E`Ý»‚(¤bÝ»( EdÝ»;(LfÝ»ä»Ý»)¾Ý»b(¬¿Ý»‚kÁÝ»zÂÝ»+Ô¸¼;w»¼+m¼ Æo¼  r¼’(.s¼‚(u¼( w¼;(y¼,μ-мb(bÒ¼‚Ô¼)Õ¼+?€M¼ |‚M¼ ńM¼’(ì…M¼‚(LˆM¼( ΉM¼;(ËM¼`àM¼RâM¼b(•äM¼‚GæM¼VçM¼+Γ…¼ –…¼ 8˜…¼’(P™…¼‚(¯›…¼( 1…¼;(&Ÿ…¼Ùó…¼Êõ…¼b( +ø…¼‚Äù…¼Ñú…¼+Ü¥½¼ ¨½¼ dª½¼’(€«½¼‚(Ó­½¼( U¯½¼;(J±½¼ò¾¼ä¾¼b(‹ ¾¼‚= ¾¼R ¾¼+Åÿô¼‚õ¼ •õ¼‚bõ¼;~
+õ¼ èõ¼b.õ¼‚Ñõ¼àõ¼+§¹õ¼ ¼õ¼ X¾õ¼’(l¿õ¼‚(ÅÁõ¼( aÃõ¼;(ŽÅõ¼]ö¼²ö¼b(Cö¼‚!ö¼"ö¼+R-½;õ-½+Ë-½ ÐÍ-½ Ð-½’(%Ñ-½‚(xÓ-½( Õ-½;(×-½æ+.½å-.½b(0.½‚Ï1.½ë2.½+úÝe½ ;àe½ âe½’(ãe½‚(ðåe½( qçe½;(dée½>f½ñ?f½b(4Bf½‚ëCf½úDf½+nñ½ œó½ Ðõ½’(èö½‚(Iù½( Êú½;(»ü½RQž½DSž½b(‡Už½‚=Wž½JXž½+ÀÖ½ Ö½ H Ö½’(S
+Ö½‚(¦ Ö½( 'Ö½;()Ö½ãdÖ½ÙfÖ½b(€hÖ½‚8jÖ½GkÖ½+J] +¾` +¾ b +¾‚Ùd +¾;øg +¾ Mq +¾b“t +¾‚0v +¾?w +¾+!¾ ~¾ ľ’((M¾( î ¾;(#¾«x¾êz¾b(m|¾‚,~¾;¾+•uE¾;8xE¾+B*F¾ ‡,F¾ Ê.F¾’(ï/F¾‚(B2F¾( Ý3F¾;(×5F¾ЊF¾ԌF¾b( F¾‚ÐF¾БF¾+ä<~¾ !?~¾ jA~¾’(‘B~¾‚(ñD~¾( sF~¾;(dH~¾úœ~¾ìž~¾b(/¡~¾‚Ü¢~¾ë£~¾+ýN¶¾ /Q¶¾ gS¶¾’(T¶¾‚(ÞV¶¾( `X¶¾;(QZ¶¾¯¶¾ù°¶¾b(<³¶¾‚󴶾¶¶¾+vbî¾ ³dî¾ þf(h(mjî¾( ïkî¾;(àmÂî¾yÄî¾b( ÆÒÇî¾áÈî¾+êº%¿§½%¿ º¿%¿‚ˆÂ%¿;¨Å%¿ ~Ï%¿bÄÒ%¿‚gÔ%¿vÕ%¿+Ñt&¿ 2w&¿ ‰y&¿’(z&¿‚(ö|&¿( ’~&¿;(¿€&¿|Ö&¿ÑØ&¿b(bÚ&¿‚'Ü&¿6Ý&¿+qÓ]¿;Ö]¿+ˆ^¿ _Š^¿ Œ^¿’(´^¿‚(^¿( ¢‘^¿;(¨“^¿vè^¿rê^¿b(§ì^¿‚\î^¿xï^¿+‹š–¿ ̜–¿ Ÿ–¿’(! –¿‚(¢–¿( ¤–¿;(󥖿 ú–¿‘ü–¿b(Ôþ–¿‚‹—¿š—¿+®Î¿ <°Î¿ p²Î¿’(ˆ³Î¿‚(éµÎ¿( j·Î¿;([¹Î¿ò +Ï¿äÏ¿b('Ï¿‚ÝÏ¿êÏ¿+õ¿À 6ÂÀ }ÄÀ’(ˆÅÀ‚(ÛÇÀ( \ÉÀ;(^ËÀ÷Àí!Àb(”#À‚L%À[&À+Î>À–>À ¢>À‚c!>À;‚$>À ë->Àb11>À‚Ô2>Àã3>À+«Ó>À ÿÕ>À EØ>À’(oÙ>À‚(ÎÛ>À( oÝ>À;(vß>À5?ÀS7?Àb(Ö8?À‚•:?À¨;?À+þ1vÀ;¡4vÀ+«ævÀ ðèvÀ 3ëvÀ’(XìvÀ‚(«îvÀ( FðvÀ;(@òvÀVGwÀWIwÀb(ŒKwÀ‚FMwÀXNwÀ+iù®À ¦û®À ïý®À’(ÿ®À‚(v¯À( ø¯À;(í¯ÀŠY¯À|[¯Àb(¿]¯À‚q_¯À€`¯À+ çÀ ¿ +çÀ ÷çÀ’(çÀ‚(nçÀ( ðçÀ;(åçÀkçÀŽmçÀb(ÑoçÀ‚ˆqçÀ•rçÀ+ Á H!Á “#Á’(¯$Á‚('Á( „(Á;(u*ÁÁÁb(µ‚Á‚g„Áv…Á+wVÁ@zVÁ S|VÁ‚ VÁ;>‚VÁ §‹VÁbíŽVÁ‚VÁŸ‘VÁ+f1WÁ Ç3WÁ 6WÁ’(27WÁ‚(‹9WÁ( ';WÁ;(T=WÁ“WÁq•WÁb(—WÁ‚ǘWÁ֙WÁ+ŽÁ;´’ŽÁ+NCÁ EÁ ÍGÁ’(äHÁ‚(7KÁ( ÒLÁ;(ØNÁ¥£Á¤¥Áb(ݧÁ‚’©Á®ªÁ+$WÇÁ eYÇÁ ©[ÇÁ’(º\ÇÁ‚(_ÇÁ( ›`ÇÁ;(ŽbÇÁ*·ÇÁ¹ÇÁb(^»ÇÁ‚½ÇÁ$¾ÇÁ+-iÿÁ [kÿÁ mÿÁ’(§nÿÁ‚(qÿÁ( ‰rÿÁ;(ztÿÁÉÿÁËÿÁb(FÍÿÁ‚üÎÿÁ ÐÿÁ+|7 À~7 7’(‚7‚(e„7Â( æ…7Â;(è‡7¢Ü7˜Þ7Âb(?à7‚÷á7Âã7Â+ ÕnÂÆ×n ÍÙn‚˜ÜnÂ;·ßn énÂbaìn‚înÂïnÂ+àŽo =‘o ƒ“o’(­”o‚( —oÂ( ­˜oÂ;(ӚoÂuðoºòoÂb(=ôo‚üõo ÷oÂ+dí¦Â;ð¦Â+¢§Â V¤§Â ™¦§Â’(¾§§Â‚(ª§Â( ¬«§Â;(¦­§Â ¨Â¤¨Âb(٨‚“¨Â  ¨Â+¹´ß ö¶ß ?¹ß’(fºß‚(ƼßÂ( H¾ßÂ;(9ÀßÂÏàÂÁàÂb(à‚±àÂÀàÂ+=Èà oÊà §ÌÒ(¿ÍÂ(ÐÃ(  ÑÃ;(‘ÓÃH(Ã9*Ãb(|,Â3.Ã@/Ã+KÚOà ˆÜOà ÓÞOÒ(ïßOÂ(BâOÃ( ÄãOÃ;(µåOÃ\:PÃN<PÃb(õ=P§?Pö@PÃ+/4‡Ãì6‡Ã 9‡Ã‚Ò;‡Ã;î>‡Ã XH‡ÃbžK‡Ã‚AM‡ÃPN‡Ã+¦ì‡Ã ï‡Ã ^ñ‡Ã’(rò‡Ã‚(Ëô‡Ã( gö‡Ã;(”ø‡ÃQNˆÃ¦PˆÃb(7RˆÃ‚üSˆÃ UˆÃ+·L¿Ã;ZO¿Ã+óÿ¿Ã 4Àà rÀÒ(‰ÀÂ(ÜÀÃ( w ÀÃ;(} ÀÃK`ÀÃGbÀÃb(|dÀÂ1fÀÃMgÀÃ+Yøà šøà ÞøÒ(ïøÂ(OøÃ( ÐøÃ;(ÃøÃorøÃ`tøÃb(£vøÂZxøÃiyøÃ+Ý%0Ä  (0Ä ?*0Ē(W+0Ä‚(¸-0Ä( 9/0Ä;(*10Ä…0Ä´‡0Äb(÷‰0Ä‚­‹0ĺŒ0Ä+Å7hÄ :hÄ M<hĒ(X=hÄ‚(«?hÄ( ,AhÄ;(.ChÄƗhļ™hÄb(c›hÄ‚hÄ*žhÄ+ž‘ŸÄ[”ŸÄ b–ŸÄ‚#™ŸÄ;FœŸÄ °¥ŸÄbö¨ŸÄ‚™ªŸÄ¨«ŸÄ+oK Ä ÃM Ä  P Ä’(3Q Ä‚(’S Ä( 9U Ä;(@W Ä0­ Äu¯ Äb(ø° Ä‚·² ÄƳ Ä+ ª×Ä;ì×Ä+Í^ØÄ aØÄ UcØĒ(zdØÄ‚(ÍfØÄ( hhØÄ;(bjØă¿ØÄ„ÁØÄb(¹ÃØÄ‚sÅØÄ€ÆØÄ+–qÅ ÓsÅ vŒ(CwÅ‚(£yÅ( %{Å;(}Å·ÑÅ©ÓÅb(ìÕÅ‚ž×Å­ØÅ+ºƒHÅ ì…HÅ $ˆHŒ(<‰HÅ‚(›‹HÅ( HÅ;(HÅ¿ãHÅ°åHÅb(óçHÅ‚ªéHÅ·êHÅ+-—€Å j™€Å µ›€Å’(ќ€Å‚(&Ÿ€Å( § €Å;(œ¢€ÅI÷€Å;ù€Åb(âú€Å‚”ü€Å£ý€Å+¬ï·Åiò·Å |ô·Å‚J÷·Å;jú·Å H¸ÅbŽ¸Å‚1 ¸Å@
+¸Å+“©¸Å ô«¸Å D®¸Å’(X¯¸Å‚(±±¸Å( M³¸Å;(zµ¸Å> ¹Å“ +¹Åb($¹Å‚é¹Åø¹Å+3ðÅ;Ö
+ðÅ+p»ðÅ ±½ðÅ ï¿ðŒ(ÁðÅ‚(YÃðÅ( ôÄðÅ;(úÆðÅÇñÅÆñÅb(ûñÅ‚°!ñÅÌ"ñÅ+FÏ(Æ ‡Ñ(Æ ËÓ(ƒ(ÜÔ(Æ‚(<×(Æ( ½Ø(Æ;(°Ú(ÆL/)Æ=1)Æb(€3)Æ‚75)ÆF6)Æ+Oá`Æ }ã`Æ ±å`ƒ(Éæ`Æ‚(*é`Æ( «ê`Æ;(œì`Æ3AaÆ%CaÆb(hEaÆ‚GaÆ+HaÆ+¡ô˜Æ âö˜Æ )ù˜Æ’(4ú˜Æ‚(‡ü˜Æ( þ˜Æ;(
+™ÆÄT™ÆºV™Æb(aX™Æ‚Z™Æ([™Æ++MÐÆèOÐÆ ïQÐƂºTÐÆ;ÙWÐÆ =aÐÆbƒdÐƂ&fÐÆ5gÐÆ+ÑÆ _ ÑÆ ¥ у(Ï ÑÆ‚(.ÑÆ( ÏÑÆ;(õÑÆ—hÑÆÜjÑÆb(_lÑÆ‚nÑÆ-oÑÆ+†eÇ;)hÇ+3 Ç x Ç » ǒ(à Ç‚(3" Ç( Î# Ç;(È% ÇÂz ÇÆ| Çb(û~ Ç‚µ€ ǁ Ç+Û,AÇ /AÇ a1Aǒ(ˆ2AÇ‚(è4AÇ( j6AÇ;([8AÇñŒAÇãŽAÇb(&‘AÇ‚ӒAÇâ“AÇ+_@yÇ ‘ByÇ ÉDyǒ(áEyÇ‚(@HyÇ( ÃIyÇ;(¸KyÇp yÇa¢yÇb(¤¤yÇ‚[¦yÇh§yÇ+sR±Ç °T±Ç ûV±Ç’(X±Ç‚(jZ±Ç( ì[±Ç;(á]±Ç‰²±Ç{´±Çb("¶±Ç‚Ô·±Ç㸱Ç+\¬èǯèÇ 1±èǂþ³èÇ;·èÇ ’ÀèÇbØÃèǂ{ÅèÇŠÆèÇ+ÓdéÇ 4géÇ ‹iéǒ(ŸjéÇ‚(øléÇ( ”néÇ;(ÁpéÇ~ÆéÇÓÈéÇb(dÊéÇ‚)ÌéÇ8ÍéÇ+äÄ È;‡Ç È+ x!È az!È Ÿ|!Ȓ(¶}!È‚( €!È( ¤!È;(ªƒ!ÈxØ!ÈtÚ!Èb(©Ü!È‚^Þ!Èzß!È+†ŠYÈ njYÈ  YȒ(YÈ‚(|’YÈ( ý“YÈ;(ð•YÈ¢êYÈ“ìYÈb(ÖîYÈ‚ðYÈœñYÈ+ž‘È > ‘È r¢‘È’(Š£‘È‚(륑È( l§‘È;(]©‘Èôý‘Èæÿ‘Èb()’È‚å’Èò’È+÷¯ÉÈ 8²ÉÈ ´ÉȒ(ŠµÉÈ‚(Ý·ÉÈ( ^¹ÉÈ;(`»ÉÈùÊÈïÊÈb(–ÊÈ‚NÊÈ]ÊÈ+Рɍ É ”ɂUÉ;tÉ ÝÉb.!ɂÑ"Éà#É+œÃÉ ðÅÉ 5Èɒ(_ÉÉ‚(¾ËÉ( _ÍÉ;(xÏÉ!%Éf'Éb(é(É‚¨*É,É+"9É;³$9É+½Ö9É Ù9É :Û9ɒ(QÜ9É‚(¯Þ9É( Là9É;(Sâ9É\7:Ɂ9:Éb(¶;:É‚p=:ÉŒ>:É+‘éqÉ ¾ëqÉ îqɒ(FïqÉ‚(íñqÉ( óqÉ;(tõqÉêIrÉLrÉb(FNrÉ‚óOrÉQrÉ+ü©É Jþ©É ªÉ’(³ªÉ‚(ªÉ( “ªÉ;(†ªÉò[ªÉã]ªÉb(&`ªÉ‚ÝaªÉêbªÉ+õ +âÉ 2âÉ }âɒ(™âÉ‚(ìâÉ( nâÉ;(câÉÙmâÉËoâÉb(rqâÉ‚$sâÉ3tâÉ+­gÊjjÊ }lʂUoÊ;qrÊ Û{Êb!ʂрÊàÊ+š!Ê û#Ê R&ʒ(f'Ê‚(¿)Ê( _+Ê;(Œ-ʃÊd…Êb(ç†Ê‚¬ˆÊ»‰Ê+€QÊ;«‚QÊ+µ4RÊ ö6RÊ 49Rʒ(K:RÊ‚(ž<RÊ( 9>RÊ;(?@RÊñ”RÊð–RÊb(%™RÊ‚ښRÊö›RÊ+GŠÊ FIŠÊ ŠKŠÊ’(›LŠÊ‚(ûNŠÊ( |PŠÊ;(oRŠÊÙ¦ŠÊʨŠÊb( +«ŠÊ‚ĬŠÊÓ­ŠÊ+GZÂÊ u\ÂÊ ©^Âʒ(Á_ÂÊ‚("bÂÊ( £cÂÊ;(”eÂÊú¹ÂÊì»ÂÊb(/¾ÂÊ‚å¿ÂÊòÀÂÊ+ýkúÊ >núÊ …púʒ(qúÊ‚(ãsúÊ( duúÊ;(fwúÊîËúÊäÍúÊb(‹ÏúÊ‚CÑúÊRÒúÊ+ÆÅ1˃È1Ë ŠÊ1˂KÍ1Ë;nÐ1Ë ØÙ1ËbÝ1˂ÁÞ1ËÐß1Ë+—2Ë ô2Ë :„2˒(d…2Ë‚(Ç2Ë( d‰2Ë;(Š‹2Ë÷à2Ë:ã2Ëb(½ä2Ë‚|æ2Ë‹ç2Ë+îÝiË;“àiË+’jË â”jË %—j˒(J˜jË‚(šjË( 8œjË;(2žjËÿòjËõjËb(8÷jË‚òøjËÿùjË+¥¢Ë P§¢Ë ™©¢Ë’(Àª¢Ë‚( ­¢Ë( ¢®¢Ë;(“°¢Ë)£Ë£Ëb(^ £Ë‚ £Ë £Ë+,·ÚË ^¹ÚË –»Ú˒(®¼ÚË‚( +¿ÚË( ÀÚË;(€ÂÚË7ÛË(ÛËb(kÛË‚"ÛË/ÛË+¥ÊÌ âÌÌ -Ï̒(IÐÌ‚(œÒÌ( ÔÌ;(Ö̶*̨,Ìb(O.Ì‚0Ì1Ì+#JÌÖ%JÌ î'Ĵ»*JÌ;×-JÌ A7JÌb‡:Ĵ*<JÌ9=JÌ+ÝJÌ aßJÌ ¸áJ̒(ÌâJÌ‚(%åJÌ( ÁæJÌ;(îèJÌ«>KÌAKÌb(‘BKÌ‚VDKÌeEKÌ+ ;‚Ì;C>‚Ì+Mð‚Ì Žò‚Ì Ìô‚Ì’(ãõ‚Ì‚(6ø‚Ì( Ñù‚Ì;(Ýû‚̪PƒÌ©RƒÌb(ÞTƒÌ‚“VƒÌ¯WƒÌ+¾»Ì ÿ»Ì C»Ì’(T»Ì‚(´
+»Ì( 5 »Ì;((»Ìåb»ÌÖd»Ìb(g»Ì‚Ðh»Ìßi»Ì+SóÌ óÌ µó̒(ÍóÌ‚(.óÌ( ¯óÌ;( !óÌ7vóÌ)xóÌb(lzóÌ‚"|óÌ/}óÌ+:(+Í {*+Í Â,+͒(Í-+Í‚( 0+Í( ¡1+Í;(£3+Í<ˆ+Í2Š+Íb(ً+Í‚‘+Í Ž+Í+‚bÍЄbÍ ׆b͂˜‰bÍ;·ŒbÍ  –bÍbf™b͂ ›bÍœbÍ+ß;cÍ 3>cÍ y@c͒(£AcÍ‚(DcÍ( £EcÍ;(¬GcÍCc͈ŸcÍb( ¡cÍ‚Ê¢cÍÙ£cÍ+2ššÍ;՜šÍ+ßN›Í $Q›Í gS›Í’(ŒT›Í‚(ßV›Í( zX›Í;(tZ›ÍŠ¯›Í‹±›Íb(À³›Í‚zµ›Í‡¶›Í+aÓÍ ÚcÓÍ #fÓ͒(JgÓÍ‚(ªiÓÍ( ,kÓÍ;(mÓ͹ÁÓÍ«ÃÓÍb(îÅÓÍ‚ ÇÓͯÈÓÍ+¼s Î îu Î &x Β(Jy ΂(©{ Î( *} Î;( ÎÌÓ Î½Õ Îb(Ø Î‚·Ù ÎÄÚ Î+:‡CÎ w‰CÎ ‹CΒ(ތC΂(1CÎ( ³CÎ;(¤’CÎKçCÎ=éCÎb(äêC΂–ìCÎ¥íCÎ+®ßzÎkâzÎ ~äz΂VçzÎ;rêzÎ ÜózÎb"÷z΂ÅøzÎÔùzÎ+›™{Î ü›{Î Sž{Β(gŸ{΂(À¡{Î( \£{Î;(¥{ÎQû{Φý{Îb(7ÿ{΂ü|Î |Î+Fø²Î;éú²Î+ó¬³Î 4¯³Î r±³Î’(‰²³Î‚(Ü´³Î( w¶³Î;(}¸³ÎJ +´ÎI´Îb(~´Î‚3´ÎO´Î+^¿ëÎ ŸÁëÎ ãÃëΒ(ôÄë΂(TÇëÎ( ÕÈëÎ;(ÈÊëÎdìÎU!ìÎb(˜#ì΂O%ìÎ^&ìÎ+gÑ#Ï •Ó#Ï ÉÕ#ϒ(áÖ#Ï‚(BÙ#Ï( ÃÚ#Ï;(´Ü#ÏK1$Ï=3$Ïb(€5$Ï‚67$ÏC8$Ï+¹ä[Ï úæ[Ï Aé[ϒ(Lê[Ï‚(Ÿì[Ï(  î[Ï;("ð[ÏÜD\ÏÒF\Ïb(yH\Ï‚1J\Ï@K\Ï+C=“Ï@“Ï  B“Ï‚ÍD“Ï;ìG“Ï Q“ÏbÇT“Ï‚jV“ÏyW“Ï+÷“Ï qù“Ï ·û“Ï’(áü“Ï‚(@ÿ“Ï( á”Ï;(”Ï©X”ÏîZ”Ïb(q\”Ï‚0^”Ï?_”Ï+™UËÏ;<XËÏ+F
+ÌÏ ‹ ÌÏ ÎÌϒ(óÌÏ‚(FÌÏ( áÌÏ;(ÛÌÏÔjÌÏØlÌÏb( +oÌÏ‚ÇpÌÏÔqÌÏ+èÐ %Ð n!В(•"Ђ(õ$Ð( w&Ð;(h(Ðþ|Ðð~Ðb(3Ð‚à‚ÐïƒÐ+l0<Ð ž2<Ð Ö4<В(î5<Ђ(M8<Ð( Ï9<Ð;(À;<Ð}<Ðn’<Ðb(±”<Ђh–<Ðu—<Ð+€BtÐ ½DtÐ GtВ($HtЂ(wJtÐ( ùKtÐ;(îMtЖ¢tЈ¤tÐb(/¦tЂá§tÐð¨tÐ+iœ«Ð,Ÿ«Ð ?¡«Ð‚ +¤«Ð;-§«Ð ±«ÐbN´«Ð‚ñµ«Ð·«Ð+æT¬Ð GW¬Ð žY¬Ð’(²Z¬Ð‚( ]¬Ð( §^¬Ð;(Ø`¬Ð¡¶¬Ðö¸¬Ðb(‡º¬Ð‚L¼¬Ð[½¬Ð+µãÐ;ª·ãÐ+ChäÐ „jäÐ ÂläВ(ÙmäЂ(,päÐ( ÇqäÐ;(ÍsäЛÈäЗÊäÐb(ÌÌäЂÎäСÏäÐ+©zÑ ê|Ñ .ђ(?€Ñ‚(Ÿ‚Ñ(  „Ñ;(†Ñ¿ÚÑ°ÜÑb(óÞÑ‚ªàѹáÑ+-ŽTÑ [TÑ ’Tђ(§“TÑ‚(–TÑ( ‰—TÑ;(z™TÑîTÑðTÑb(GòTÑ‚ýóTÑ
+õTÑ+ ŒÑ V¢ŒÑ ¤ŒÑ’(¨¥ŒÑ‚(û§ŒÑ( |©ŒÑ;(~«ŒÑÑ Ñb(³Ñ‚mÑ|Ñ+îùÃÑ«üÃÑ ²þÃт}ÄÑ;œÄÑ ÄÑbKÄтîÄÑýÄÑ+ųÄÑ ¶ÄÑ _¸Äђ(‰¹ÄÑ‚(è»ÄÑ( ‰½ÄÑ;(¿ÄÑ(ÅÑmÅÑb(ðÅÑ‚¯ÅѾÅÑ+üÑ;»üÑ+ÅÆüÑ 
+ÉüÑ MËüђ(rÌüÑ‚(ÅÎüÑ( `ÐüÑ;(ZÒüÑp'ýÑq)ýÑb(¦+ýÑ‚`-ýÑm.ýÑ+ƒÙ4Ò ÀÛ4Ò  Þ4Ғ(0ß4Ò‚(á4Ò( ã4Ò;(å4Ò¤95Ò–;5Òb(Ù=5Ò‚‹?5Òš@5Ò+§ëlÒ ÙílÒ ðlҒ()ñlÒ‚(ˆólÒ( 
+õlÒ;(ÿölÒ¬KmҝMmÒb(àOmÒ‚—QmÒ¤RmÒ+ÿ¤Ò W¥Ò ¢¥Ò’(¾¥Ò‚(¥Ò( “¥Ò;(„
+¥Ò+_¥Òa¥Òb(Äb¥Ò‚vd¥Ò…e¥Ò+ŽWÜÒKZÜÒ ^\Ü҂,_ÜÒ;LbÜÒ ¶kÜÒbünÜ҂ŸpÜÒ®qÜÒ+uÝÒ ÖÝÒ -ÝҒ(AÝÒ‚(šÝÒ( 6ÝÒ;(cÝÒ&sÝÒ{uÝÒb( wÝÒ‚ÑxÝÒàyÝÒ+pÓ;¾rÓ+È$Ó  'Ó G)Ӓ(^*Ó‚(±,Ó( L.Ó;(R0Ó…Ó‡Ób(S‰Ó‚‹Ó$ŒÓ+37MÓ t9MÓ ¸;MӒ(É<MÓ‚()?MÓ( ª@MÓ;(BMÓ9—MÓ*™MÓb(m›MÓ‚$MÓ3žMÓ+§J…Ó ÕL…Ó  O…Ó’(!P…Ó‚(‚R…Ó( T…Ó;(ôU…Ó‹ª…Ó}¬…Ób(À®…Ó‚v°…Óƒ±…Ó+Ž\½Ó Ï^½Ó a½Ó’(!b½Ó‚(td½Ó( õe½Ó;(÷g½Ó±¼½Ó§¾½Ób(NÀ½Ó‚½ÓýÓ+ˆ¶ôÓŒ¹ôÓ ˜»ôӂY¾ôÓ;xÁôÓ ÜÊôÓb"ÎôӂÅÏôÓÔÐôÓ+1oõÓ ŽqõÓ ÔsõӒ(þtõÓ‚(]wõÓ( þxõÓ;(${õÓÆÐõÓ ÓõÓb(ŽÔõÓ‚MÖõÓ\×õÓ+&Ï,Ô;ÉÑ,Ô+b‚-Ô §„-Ô ê†-Ԓ(ˆ-Ô‚(bŠ-Ô( ý‹-Ô;(÷-Ôöâ-Ôúä-Ôb(/ç-Ô‚éè-Ôöé-Ô+
+•eÔ G—eÔ ™eԒ(·šeÔ‚(eÔ( ™žeÔ;(Š eÔ õeÔ÷eÔb([ùeÔ‚ûeÔüeÔ+”¨Ô ƪÔ þ¬Ô’(®Ô‚(u°Ô( ÷±Ô;(쳝Ô¤žÔ•
+žÔb(Ø žÔ‚žÔœžÔ+§ºÕÔ ä¼ÕÔ /¿ÕԒ(KÀÕÔ‚(žÂÕÔ(  ÄÕÔ;(ÆÕÔ¸ÖÔªÖÔb(QÖÔ‚ ÖÔ!ÖÔ+‹ +ÕH +Õ [ +Ղ( +Õ;D +Õ ®( +Õbô+ +Ղ—- +Õ¦. +Õ+ýÌ +Õ ^Ï +Õ µÑ +Ւ(ÉÒ +Õ‚("Õ +Õ( ¾Ö +Õ;(ïØ +Õ¨.Õý0Õb(Ž2Õ‚S4Õb5Õ+ +-EÕ;°/EÕ+JàEÕ ‹âEÕ ÉäEՒ(àåEÕ‚(3èEÕ( ÎéEÕ;(ÔëEÕ¡@FÕ BFÕb(ÕDFÕ‚ŠFFÕ¦GFÕ+µò}Õ öô}Õ :÷}Ւ(Kø}Õ‚(«ú}Õ( ,ü}Õ;(þ}ÕËR~Õ¼T~Õb(ÿV~Õ‚·X~ÕÆY~Õ+9¶Õ g¶Õ ›
+¶Õ’(³ ¶Õ‚(¶Õ( •¶Õ;(†¶Õf¶Õh¶Õb(Sj¶Õ‚ l¶Õm¶Õ+ŒîÕ ÍîÕ îՒ(îÕ‚(r!îÕ( ó"îÕ;(õ$îՍyîÕ„{îÕb(+}îÕ‚Þ~îÕíîÕ+ôq%Ö±t%Ö ¸v%ւƒy%Ö;¢|%Ö ҆%ÖbŠ%ւ»‹%Öʌ%Ö+Ë+&Ö .&Ö e0&֒(1&Ö‚(î3&Ö( 5&Ö;(˜7&Ö/&Öt&Öb(÷&Ö‚¶’&Öœ&Ö+Š]Ö;ÁŒ]Ö+Ë>^Ö A^Ö SC^֒(xD^Ö‚(ËF^Ö( fH^Ö;(`J^ÖvŸ^Öw¡^Öb(¬£^Ö‚f¥^Ös¦^Ö+‰Q–Ö ÆS–Ö V–Ö’(6W–Ö‚(–Y–Ö( [–Ö;( ]–Ö¥±–Ö—³–Öb(Úµ–Ö‚Œ·–Ö›¸–Ö+¨cÎÖ ÚeÎÖ hÎ֒(*iÎÖ‚(‰kÎÖ(  mÎÖ;(oÎÖ­ÃÎÖžÅÎÖb(áÇÎÖ‚˜ÉÎÖ¥ÊÎÖ+w× Xy× £{ג(¿|ׂ(×( ”€×;(…‚×,××Ù×b(ÅÚׂwÜ׆Ý×+Ï=×LÒ=× dÔ=ׂ1×=×;MÚ=× ·ã=×býæ=ׂ è=ׯé=×+v‰>× ׋>× .Ž>ג(B>ׂ(›‘>×( 7“>×;(d•>×'ë>×|í>×b( +ï>ׂÒð>×áñ>×+èu×;¿êu×+ɜv× 
+Ÿv× H¡vג(_¢vׂ(²¤v×( M¦v×;(S¨v× ýv×ÿv×b(Twׂ w×%w×+4¯®× u±®× ¹³®×’(Ê´®×‚(*·®×( «¸®×;(žº®×:¯×+¯×b(n¯×‚%¯×4¯×+¨Âæ× ÖÄæ× 
+Çæג("Èæׂ(ƒÊæ×( Ìæ×;(õÍæ׌"ç×~$ç×b(Á&çׂw(çׄ)ç×+ÔØ ÐÖØ Ùؒ("ÚØ‚(uÜØ( öÝØ;(øßØ·4Ø­6Øb(T8Ø‚ :Ø;Ø+.VØP1VØ W3V؂6VØ;79VØ ›BVØbáEV؂„GVØ“HVØ+`èVØ ½êVØ íVؒ(-îVØ‚(ŒðVØ( -òVØ;(SôVØðIWØ5LWØb(¸MWØ‚wOW؆PWØ+ßFŽØ;‚IŽØ+úŽØ aüŽØ ¤þŽØ’(ÉÿŽØ‚(Ø( ·Ø;(±Ø»ZØ¿\Øb(ô^Ø‚®`Ø»aØ+Ô ÇØ ÇØ ZÇؒ(ÇØ‚(áÇØ( cÇØ;(TÇØêlÇØÜnÇØb(qÇØ‚ÌrÇØÛsÇØ+X ÿØ Š"ÿØ Â$ÿؒ(Ú%ÿØ‚(9(ÿØ( »)ÿØ;(¬+ÿØc€ÿØT‚ÿØb(—„ÿØ‚N†ÿØ[‡ÿØ+f27Ù £47Ù î67ْ(
+87Ù‚(]:7Ù( ß;7Ù;(Ð=7Ùw’7Ùi”7Ùb(–7Ù‚—7Ùј7Ù+JŒnُnÙ ‘nقç“nÙ;—nÙ   nÙbæ£nق‰¥nÙ˜¦nÙ+,FoÙ HoÙ äJoْ(øKoÙ‚(QNoÙ( íOoÙ;(RoÙקoÙ,ªoÙb(½«oÙ‚‚­oÙ‘®oÙ+̤¦Ù;o§¦Ù+ X§Ù JZ§Ù ˆ\§Ù’(Ÿ]§Ù‚(ò_§Ù( a§Ù;(“c§Ù`¸§Ù_º§Ùb(”¼§Ù‚I¾§Ùe¿§Ù+ßkßÙ  nßÙ dpßْ(uqßÙ‚(ÕsßÙ( VußÙ;(IwßÙõËßÙæÍßÙb()ÐßÙ‚àÑßÙïÒßÙ+ø}Ú &€Ú Z‚ڒ(rƒÚ‚(ӅÚ( T‡Ú;(E‰ÚÝÝÚÏßÚb(âÚ‚ÈãÚÕäÚ+K‘OÚ Œ“OÚ ӕOڒ(ޖOÚ‚(1™OÚ( ²šOÚ;(´œOÚLñOÚBóOÚb(éôOÚ‚¡öOÚ°÷OÚ+³é†Úpì†Ú wî†Ú‚Bñ†Ú;aô†Ú Ëý†Úb‡Ú‚´‡ÚÇÚ+Š£‡Ú Þ¥‡Ú $¨‡Ú’(N©‡Ú‚(­«‡Ú( N­‡Ú;(W¯‡ÚîˆÚ3ˆÚb(¶ˆÚ‚u
+ˆÚ„ ˆÚ+Ý¿Ú;€¿Ú+Š¶¿Ú ϸ¿Ú »¿Ú’(7¼¿Ú‚(Š¾¿Ú( %À¿Ú;(¿Ú5ÀÚ6ÀÚb(kÀÚ‚%ÀÚ2ÀÚ+HÉ÷Ú …Ë÷Ú ÎÍ÷ڒ(õÎ÷Ú‚(UÑ÷Ú( ×Ò÷Ú;(ÈÔ÷Úd)øÚV+øÚb(™-øÚ‚K/øÚZ0øÚ+ÒÜ/Û ß/Û <á/ے(Tâ/Û‚(³ä/Û( 5æ/Û;(*è/Û×<0ÛÈ>0Ûb( A0Û‚ÂB0ÛÏC0Û+ÚîgÛ ñgÛ bógے(~ôgÛ‚(ÑögÛ( SøgÛ;(DúgÛëNhÛÝPhÛb(„RhÛ‚6ThÛEUhÛ+¾HŸÛKŸÛ —MŸÛ‚kPŸÛ;‡SŸÛ ò\ŸÛb8`ŸÛ‚ÛaŸÛêbŸÛ+@ Û ¡ Û ø Û’(  Û‚(e  Û(   Û;(. + Ûñb ÛFe Ûb(×f Û‚œh Û«i Û+Va×Û;ùc×Û+“ØÛ ÔØÛ Øے()ØÛ‚(|ØÛ( ØÛ;( ØÛêtØÛévØÛb(yØÛ‚ÓzØÛï{ØÛ+þ&Ü ?)Ü ƒ+ܒ(”,Ü‚(ô.Ü( u0Ü;(h2Ü ‡ÜúˆÜb(=‹Ü‚ôŒÜŽÜ+w:HÜ ¥<HÜ Ù>Hܒ(ñ?HÜ‚(RBHÜ( ÓCHÜ;(ÄEHÜ\šHÜNœHÜb(‘žHÜ‚G HÜT¡HÜ+_L€Ü  N€Ü çP€Ü’(òQ€Ü‚(ET€Ü( ÆU€Ü;(ÈW€Ü¬€Üw®€Üb(°€Ü‚Ö±€Ü岀Ü+Y¦·Ü©·Ü «·Ü‚Þ­·Ü;±·Ü eº·Üb«½·Ü‚N¿·Ü]À·Ü+*`¸Ü ‡b¸Ü Íd¸Ü’(÷e¸Ü‚(Vh¸Ü( ÷i¸Ü;(l¸Ü¿Á¸ÜĸÜb(‡Å¸Ü‚FǸÜUȸÜ+¯¾ïÜ;RÁïÜ+\sðÜ ¡uðÜ äwðܒ( yðÜ‚(\{ðÜ( ÷|ðÜ;(ñ~ðÜêÓðÜîÕðÜb(#ØðÜ‚ÝÙðÜêÚðÜ+þ…(Ý ;ˆ(Ý „Š(ݒ(«‹(Ý‚( Ž(Ý( (Ý;(~‘(Ýæ(Ýè(Ýb(Iê(Ý‚öë(Ýí(Ý+˜`Ý Iš`Ý œ`ݒ(™`Ý‚(øŸ`Ý( z¡`Ý;(k£`Ý"ø`Ýú`Ýb(Vü`Ý‚ +þ`Ýÿ`Ý+«˜Ý Í­˜Ý °˜Ý’(4±˜Ý‚(‡³˜Ý(  µ˜Ý;(ú¶˜Ý¡ ™Ý“ +™Ýb(:™Ý‚ì™Ýû™Ý+ÐÝÁÐÝ ÔÐ݂¬ ÐÝ;ÈÐÝ 2ÐÝbxÐ݂ÐÝ*ÐÝ+ñ½ÐÝ RÀÐÝ ©ÂÐݒ(½ÃÐÝ‚(ÆÐÝ( ²ÇÐÝ;(ãÉÐÝœÑÝñ!ÑÝb(‚#ÑÝ‚G%ÑÝV&ÑÝ+‘Þ;4Þ+>ÑÞ ÓÞ ½Õޒ(ÔÖÞ‚('ÙÞ( ÂÚÞ;(ÈÜÞ•1 Þ”3 Þb(É5 Þ‚~7 Þš8 Þ+©ã@Þ êå@Þ .è@ޒ(?é@Þ‚(Ÿë@Þ(  í@Þ;(ï@Þ¿CAÞ°EAÞb(óGAÞ‚ªIAÞ¹JAÞ+ÂõxÞ ð÷xÞ $úxޒ(<ûxÞ‚(ýxÞ( ÿxÞ;(yÞ§UyÞ™WyÞb(ÜYyÞ‚’[yÞŸ\yÞ+ ±Þ V ±Þ  +±Þ’(¨±Þ‚(û±Þ( |±Þ;(~±Þi±Þ k±Þb(³l±Þ‚kn±Þzo±Þ+îbèÞ«eèÞ ²gèނsjèÞ;–mèÞ wèÞbQzèނô{èÞ}èÞ+OéÞ £éÞ èéޒ(!éÞ‚(q#éÞ( %éÞ;(+'éÞÕ|éÞéÞb(›€éÞ‚Z‚éÞiƒéÞ+3{ ß;Ö} ß+p.!ß µ0!ß í2!ߒ(4!ß‚(b6!ß( ÿ7!ß;(:!ߏ!ß3‘!ßb(h“!ß‚"•!ß>–!ß+DAYß qCYß ÒEYߒ(ùFYß‚( IYß( 2KYß;(%MYßœ¡Yßµ£Yßb(ø¥Yß‚¥§Yß´¨Yß+ÅS‘ß ÷U‘ß <X‘ß’(`Y‘ß‚(¿[‘ß( @]‘ß;(3_‘ߟ³‘ߐµ‘ßb(Ó·‘ß‚Š¹‘ß—º‘ß+ +gÉß JiÉß •kÉߒ(±lÉß‚(oÉß( †pÉß;({rÉßñÆÉßãÈÉßb(ŠÊÉß‚<ÌÉßKÍÉß+ÅÀà†Ãà žÅà‚kÈà;‰Ëà óÔàb9Øà‚éÙàøÚà+Ayà ¢{à ù}à’( +à‚(fà( ƒà;(3…à¶Úà Ýàb(ŽÞà‚Sààbáà+Ù8à;¾Û8à+WŒ9à ˜Ž9à ֐9à’(í‘9à‚(@”9à( ە9à;(á—9à“ì9à•î9àb(Êð9à‚ò9à›ó9à+ qà S¢qà —¤qà’(¨¥qà‚(¨qà( ‰©qà;(|«qàæÿqà×ràb(rà‚Ñrààrà+鱩à ´©à K¶©à’(c·©à‚(Ĺ©à( E»©à;(6½©àœªàŽªàb(Ñªà‚‡ªà”ªà+
+Åáà KÇáà ’Éáà’(Êáà‚(ðÌáà( qÎáà;(sÐáàû$âàñ&âàb(˜(âà‚P*âà_+âà+Óá!á —#á‚X&á;{)á å2áb+6á‚Î7áÝ8á+¤Øá Ûá GÝá’(qÞá‚(Ðàá( qâá;(—äáý9áB<áb(Å=á‚„?á“@á+ì6Qá;9Qá+)êQá nìQá ±îQá’(ÖïQá‚()òQá( ÄóQá;(¾õQá‹JRáLRáb(ÄNRá‚~PRá‹QRá+
+þ‰á GŠá Šá’(·Šá‚(Šá( ™Šá;(Š Šá ^Šá`Šáb(UbŠá‚dŠáeŠá+#Âá UÂá Âá’(¥Âá‚(Âá( †Âá;(wÂá.pÂárÂáb(btÂá‚vÂá&wÂá+œ#úá Ù%úá $(úá’(@)úá‚(“+úá( -úá;(/úá­ƒúៅúáb(F‡úá‚øˆúáŠúá+|1âÍ~1â à€1₸ƒ1â;Ԇ1â K1âb‘“1â‚4•1âC–1â+ý52â ^82â µ:2â’(É;2â‚(">2â( ¾?2â;(ïA2⨗2âý™2âb(Ž›2â‚S2âbž2â+”iâ;@—iâ+JIjâ ‹Kjâ ÉMjâ’(àNjâ‚(3Qjâ( ÎRjâ;(ÔTjâ¡©jâ «jâb(Õ­jâ‚Š¯j⦰jâ+µ[¢â ö]¢â :`¢â’(Ka¢â‚(«c¢â( ,e¢â;(g¢âË»¢â¼½¢âb(ÿ¿¢â‚¶Á¢âÅ¢â+ÎmÚâ üoÚâ 0rÚâ’(HsÚâ‚(©uÚâ( *wÚâ;(yÚâ³ÍÚâ¥ÏÚâb(èÑÚâ‚žÓÚâ«ÔÚâ+!ã bƒã ©…ã’(·†ã‚(
+‰ã( ‹Šã;(‰Œã"áãããb(¿äã‚wæã†çã+úÚIã·ÝIã ÃßIã‚„âIã;£åIã  ïIãbRòIã‚õóIãõIã+[“Jã ¯•Jã õ—Jã’(™Jã‚(~›Jã( Jã;(&ŸJã¾ôJã÷Jãb(†øJã‚EúJãTûJã+óã;Áõã+[¦‚ã  ¨‚ã 㪂ã’(¬‚ã‚([®‚ã( ö¯‚ã;(ð±‚ãƒã ƒãb(< ƒã‚ö ƒãƒã+¹ºã V»ºã Ÿ½ºã’(ƾºã‚(&Áºã( ¨Âºã;(Äºã:»ã,»ãb(o»ã‚!»ã0 »ã+¨Ìòã ÚÎòã Ñòã’(*Òòã‚(‰Ôòã(  Öòã;(Øòã³,óã¤.óãb(ç0óã‚ž2óã°3óã+¶Þ*ä óà*ä >ã*ä’(Zä*ä‚(­æ*ä( /è*ä;($ê*äÌ>+ä¾@+äb(eB+ä‚D+ä&E+ä+Ÿ8bä\;bä o=bä‚F@bä;dCbä ÍLbäbPb䂶QbäÅRbä+Œòbä íôbä D÷bä’(Xøbä‚(±úbä( Mübä;(zþbäHTcäVcäb(.Xcä‚óYcä[cä+=Qšä;àSšä+y›ä º›ä ø›ä’(
+›ä‚(b ›ä( ý +›ä;(›äÑd›äÍf›äb(i›ä‚·j›äÓk›ä+JÓä ‹Óä ÏÓä’(àÓä‚(@ Óä( Á!Óä;(´#ÓäPxÓäAzÓäb(„|Óä‚;~ÓäJÓä+S* å , å µ. å’(Í/ å‚(.2 å( ¯3 å;( 5 å7Š å)Œ åb(lŽ å‚" å/‘ å+¥=Cå æ?Cå -BCå’(8CCå‚(‹ECå(  GCå;(ICåȝC徟Cåb(e¡Cå‚£Cå,¤Cå+/–zåì˜zå óšz傾zå;Ý zå Aªzåb‡­zå‚*¯zå9°zå+P{å cR{å ©T{å’(ÓU{å‚(2X{å( ÓY{å;(ù[{å›±{åà³{åb(cµ{å‚"·{å1¸{å+Š®²å;-±²å+7c³å |e³å ¿g³å’(äh³å‚(7k³å( Òl³å;(Ìn³åÆóåÊųåb(ÿdz傹ɳåÆʳå+ßuëå xëå ezëå’(Œ{ëå‚(ì}ëå( nëå;(_ëåõÕëåç×ëåb(*Úëå‚×ÛëåæÜëå+ø‡#æ *Š#æ bŒ#æ’(z#æ‚(ُ#æ( [‘#æ;(L“#æè#æôé#æb(7ì#æ‚îí#æûî#æ+q›[æ ®[æ ùŸ[æ’(¡[æ‚(h£[æ( ê¤[æ;(Û¦[æ‚û[ætý[æb(ÿ[æ‚Í\æÜ\æ+åó’æ¢ö’æ µø’悃û’æ;£þ’æ  +“æbS “æ‚ö “æ“æ+Ì­“æ -°“æ „²“æ’(˜³“æ‚(ñµ“æ( ·“æ;(º¹“æw”æÌ”æb(]”æ‚"”æ1”æ+l Ëæ;Ëæ+ÁËæ ZÃËæ ˜ÅËæ’(¯ÆËæ‚(ÉËæ( ÊËæ;(£ÌËæq!Ìæm#Ìæb(¢%Ìæ‚W'Ìæs(Ìæ+Óç ÀÕç Øç’(Ùç‚(vÛç( ÷Üç;(èÞç•3ç†5çb(É7ç‚€9ç:ç+ç;ç 1é;ç eë;ç’(}ì;ç‚(Þî;ç( _ð;ç;(Pò;çèF<çÚH<çb(K<ç‚ÓL<çàM<ç+ëøsç ,ûsç sýsç’(~þsç‚(Ñtç( Rtç;(TtçìXtçâZtçb(‰\tç‚A^tçP_tç+ÄR«ç…U«ç ‘W«ç‚RZ«ç;q]«ç Ûf«çb!j«ç‚Äk«çÓl«ç+› ¬ç ï¬ç 5¬ç’(_¬ç‚(¾¬ç( _¬ç;(f¬çþm¬çCp¬çb(Æq¬ç‚…s¬ç”t¬ç+îjãç;‘mãç+›äç à!äç #$äç’(H%äç‚(›'äç( 6)äç;(0+äçF€äçG‚äçb(|„äç‚6†äçC‡äç+Y2è –4è ß6è’(8è‚(f:è( è;è;(Ý=èz’èl”èb(¯–è‚a˜èv™è+}DTè ¯FTè çHTè’(ÿITè‚(^LTè( àMTè;(ÕOT肤Tès¦Tèb(¶¨Tè‚mªTèz«Tè+ðWŒè -ZŒè x\Œè’(”]Œè‚(ç_Œè( iaŒè;(ZcŒè¸Œèó¹Œèb(š»Œè‚L½Œè[¾Œè+d°Ãè!³Ãè 4µÃ肸Ãè;"»Ãè ŒÄÃèbÒÇÃè‚uÉÃè„ÊÃè+KjÄè ¬lÄè oÄè’(pÄè‚(prÄè(  tÄè;(9vÄèüËÄèQÎÄèb(âÏÄ肧ÑÄè¶ÒÄè+ñÈûè;”Ëûè+ž}üè ßüè ‚üè’(4ƒüè‚(‡…üè( "‡üè;((‰üèõÝüèôßüèb()âüè‚Þãüèúäüè+ 4é J’4é Ž”4é’(Ÿ•4é‚(ÿ—4é( €™4é;(s›4éð4éò4éb(Cô4é‚úõ4é ÷4é+¢lé @¤lé t¦lé’(Œ§lé‚(í©lé( n«lé;(_­léöméèméb(+mé‚áméîmé+dµ¤é ¥·¤é 칤é’(÷º¤é‚(J½¤é( ˾¤é;(ÍÀ¤é‡¥é}¥éb($¥é‚Ü¥éë¥é+î +Üé«Üé ²Üé‚}Üé;œÜé "ÜébF%Üé‚é&Üéø'Üé+ÅÇÜé "ÊÜé hÌÜé’(’ÍÜé‚(ñÏÜé( ’ÑÜé;(¸ÓÜéZ)ÝéŸ+Ýéb("-Ýé‚á.Ýéð/Ýé+I&ê;ì(ê+öÚê ;Ýê ~ßê’(£àê‚(öâê( ‘äê;(‹æê…;ê‰=êb(¾?ê‚xAê…Bê+žíLê ÛïLê $òLê’(KóLê‚(«õLê( -÷Lê;(ùLê´MMê¦OMêb(éQMê‚–SMê¥TMê+"…ê T…ê Œ…ê’(¤…ê‚( …ê( …
+…ê;(v …ê-a…êc…êb(ae…ê‚g…ê%h…ê+0½ê m½ê ¸½ê’(Ô½ê‚('½ê( ©½ê;(š½êAs½ê3u½êb(Úv½ê‚Œx½ê›y½ê+môêÑoôê éqôꂶtôê;Òwôê Jôêb„ôê‚3†ôêB‡ôê+‹%õê ì'õê C*õê’(W+õê‚(°-õê( L/õê;(y1õê=‡õê’‰õêb(#‹õê‚èŒõê÷õê+§…,ë;Jˆ,ë+ã8-ë $;-ë b=-ë’(y>-ë‚(Ì@-ë( gB-ë;(mD-ë;™-ë7›-ëb(l-ë‚!Ÿ-ë= -ë+IKeë ŠMeë ÎOeë’(ßPeë‚(?Seë( ÀTeë;(³Veë_«eëP­eëb(“¯eë‚J±eëY²eë+Í^ë û`ë /cë’(Gdë‚(¨fë( )hë;(jë²¾ë¤Àëb(çë‚ÄëªÅë+µpÕë örÕë =uÕë’(HvÕë‚(›xÕë( zÕë;(|Õë¼ÐÕë²ÒÕëb(YÔÕë‚ÖÕë ×Õë+“Ê ìTÍ ì [Ï ì‚Ò ì;;Õ ì ¥Þ ìbëá ì‚Žã ìä ì+e„ +ì ¹† +ì ÿˆ +ì’()Š +ì‚(ˆŒ +ì( )Ž +ì;(0 +ìÈå +ì +è +ìb(–é +ì‚Uë +ìdì +ì+¸âDì;[åDì+e—Eì ª™Eì í›Eì’(Eì‚(eŸEì( ¡Eì;(ú¢EìøEìúEìb(QüEì‚ þEìÿEì+.ª}ì k¬}ì ´®}ì’(Û¯}ì‚(;²}ì( ½³}ì;(²µ}ìO
+~ìA ~ìb(„~ì‚6~ìE~ì+R¼µì „¾µì ¼Àµì’(ÔÁµì‚(3ĵì( µÅµì;(ªÇµìW¶ìH¶ìb(‹ ¶ì‚B"¶ìO#¶ì+ÅÏíì Òíì MÔíì’(iÕíì‚(¼×íì( >Ùíì;(/ÛíìÖ/îìÈ1îìb(o3îì‚!5îì06îì+9(%íö*%í  -%í‚Õ/%í;ñ2%í \<%íb¢?%í‚EA%íTB%í+â%í |ä%í Ìæ%í’(àç%í‚(9ê%í( Õë%í;(î%íÆC&í#F&íb(´G&í‚yI&íˆJ&í+»@]í;^C]í+hõ]í ©÷]í çù]í’(þú]í‚(Qý]í( ìþ]í;(ò^í¿U^í¾W^íb(óY^킨[^íÄ\^í+Ó–í 
+–í X –í’(i +–í‚(É–í( J–í;(=–íÙg–íÊi–íb( +l–í‚Äm–íÓn–í+GÎí uÎí ©Îí’(Á Îí‚("#Îí( £$Îí;(”&Îí+{Îí}Îíb(`Î킁Îí#‚Îí+.-î o/î ¶1î’(Á2î‚(5î( •6î;(—8îQîGîb(îî‚¦’î+(‡=îå‰=î ì‹=î‚·Ž=î;֑=î :›=îb€ž=î‚# =î2¡=î+ÿ@>î \C>î ¢E>î’(ÌF>î‚(+I>î( ÌJ>î;(òL>>îÙ¤>îb(\¦>>î*©>î+„Ÿuî;'¢uî+ÀRvî Uvî HWvî’(mXvî‚(ÀZvî( [\vî;(U^vîO³vîSµvîb(ˆ·vî‚B¹vîOºvî+he®î ¥g®î îi®î’(k®î‚(um®î( ÷n®î;(èp®î~Å®îpÇ®îb(³É®î‚`Ë®îoÌ®î+ìxæî {æî Z}æî’(r~æî‚(рæî( R‚æî;(E„æîýØæîîÚæîb(1Ýæî‚èÞæîõßæî+‹ï ?ï Šï’(¦ï‚(ù’ï( z”ï;(o–ïëïíïb(¯îï‚aðïpñï+éäUïªçUï ÂéUï‚–ìUï;²ïUï ùUïbcüUï‚þUïÿUï+ܞVï =¡Vï ”£Vï’(¨¤Vï‚(§Vï( ¨Vï;(ɪVïWïÖWïb(gWï‚,Wï;Wï+výï;Žï+³°Žï ô²Žï 2µŽï’(I¶Žï‚(œ¸Žï( 7ºŽï;(=¼Žï
+ï ïb(>ï‚óïï+‰ÄÆï ÊÆÆï ÉÆï’(ÊÆï‚(ÌÆï( ÎÆï;(óÏÆï¥$Çï–&Çïb(Ù(Ç*ÇïŸ+Çï+¨Öþï ÖØþï 
+Ûþï’("Üþï‚(ƒÞþï( àþï;(õáþïŒ6ÿï~8ÿïb(Á:ÿï‚w<ÿï„=ÿï+úé6ð ;ì6ð ˆî6ð’(“ï6ð‚(æñ6ð( gó6ð;(iõ6ðJ7ð÷K7ðb(žM7ð‚VO7ðeP7ð+hBnð%Enð ,Gnð‚íInð; Mnð uVnðb»Ynð‚^[nðm\nð+4ünð ˆþnð Îoð’(øoð‚(Woð( øoð;(ûoð]oðâ_oðb(eaoð‚$coð3doð+Z¦ð;0]¦ð+:§ð §ð §ð’(ç§ð‚(:§ð( Õ§ð;(ϧðåo§ðæq§ðb(t§ð‚Õu§ðâv§ð+ø!ßð 5$ßð ~&ßð’(¥'ßð‚(*ßð( ‡+ßð;(|-ßð‚ßð „ßðb(N†ßð‚ˆßð‰ßð+4ñ N6ñ †8ñ’(ž9ñ‚(ý;ñ( =ñ;(t?ñ!”ñ–ñb(\˜ñ‚šñ!›ñ+•GOñ ÒIOñ LOñ’(9MOñ‚(ŒOOñ( QOñ;(SOñ«§Oñ©Oñb(D«Oñ‚ö¬Oñ®Oñ+ †ñË¢†ñ Þ¤†ñ‚¶§†ñ;Òª†ñ  +µ†ñbS¸†ñ‚ö¹†ñ»†ñ+ûY‡ñ \\‡ñ ³^‡ñ’(Ç_‡ñ‚( b‡ñ( ¼c‡ñ;(íe‡ñ±»‡ñ¾‡ñb(—¿‡ñ‚\Á‡ñk‡ñ+¦¸¾ñ;I»¾ñ+Sm¿ñ ”o¿ñ Òq¿ñ’(ér¿ñ‚(<u¿ñ( ×v¿ñ;(Ýx¿ñªÍ¿ñ©Ï¿ñb(ÞÑ¿ñ‚“Ó¿ñ¯Ô¿ñ+¾÷ñ ÿ÷ñ C„÷ñ’(T…÷ñ‚(´‡÷ñ( 5‰÷ñ;((‹÷ñÄß÷ñµá÷ñb(øã÷ñ‚¯å÷ñ¾æ÷ñ+2“/ò `•/ò ”—/ò’(¬˜/ò‚( +›/ò( Žœ/ò;(ž/òó/òõ/òb(K÷/ò‚ù/òú/ò+¥gò Z§gò ¡©gò’(¬ªgò‚(ÿ¬gò( €®gò;(‚°gò<hò2hòb(Ùhò‚‘
+hò  hò+ÿžòПò ןò‚˜Ÿò;· Ÿò  ŸòbQŸò‚îŸòýŸò+߸Ÿò <»Ÿò ‚½Ÿò’(¬¾Ÿò‚( ÁŸò( ¬ÂŸò;(ÁğòV ò“ òb( ò‚Õ òä  ò+=×ò;à×ò+êË×ò /Î×ò rÐ×ò’(—Ñ×ò‚(êÓ×ò( ‰Õ×ò;(…××ò~,Øò‚.Øòb(·0Øò‚q2Øò~3Øò+’Þó Ïàó ãó’(?äó‚(Ÿæó( !èó;(êó¨>óš@ób(ÝBó‚ŠDó™Eó+«ðGó ÝòGó õGó’(-öGó‚(ŒøGó( úGó;(ÿûGó¶PHó§RHób(êTHó‚¡VHó®WHó+$€ó a€ó ¬€ó’(È €ó‚( €ó(  +€ó;(Ž€ó5d€ó'f€ób(Îg€ó‚€i€ój€ó+˜\·óY_·ó qa·ó‚>d·ó;\g·ó ´q·óbút·ó‚v·ó¬w·ó+…¸ó æ¸ó =¸ó’(Q¸ó‚(ª¸ó( F ¸ó;(r"¸ó‚x¸ó×z¸ób(h|¸ó‚-~¸ó<¸ó+wuïó;xïó+´(ðó õ*ðó 3-ðó’(J.ðó‚(0ðó( 82ðó;(>4ðó ‰ðó
+‹ðób(?ðó‚úŽðóðó+Š<(ô Ë>(ô A(ô’( B(ô‚(€D(ô( F(ô;(ôG(ô œ(ô‘ž(ôb(Ô (ô‚‹¢(ôš£(ô+£N`ô ÑP`ô S`ô’(T`ô‚(~V`ô( ÿW`ô;(ðY`ôˆ®`ôz°`ôb(½²`ô‚s´`ô€µ`ô+öa˜ô 7d˜ô ~f˜ô’(‰g˜ô‚(Üi˜ô( ]k˜ô;(_m˜ô÷Á˜ôíØôb(”Řô‚Lǘô[Șô+^ºÏô½Ïô "¿Ïô‚ãÁÏô;ÅÏô vÎÏôbÇÑÏô‚jÓÏôyÔÏô+*tÐô ~vÐô ÃxÐô’(íyÐô‚(L|Ðô( í}Ðô;(€Ðô©ÕÐôî×Ðôb(qÙÐô‚0ÛÐô?ÜÐô+™Òõ;<Õõ+F‡õ ‹‰õ Ëõ’(ڌõ‚(8õ( Րõ;(ڒõÚçõÿéõb(4ìõ‚îíõ
+ïõ+š@õ Aœ@õ ¢ž@õ’(ɟ@õ‚(p¢@õ( ¤@õ;(÷¥@õmú@õ†ü@õb(Éþ@õ‚vAõ…Aõ+›¬xõ Í®xõ ±xõ’(6²xõ‚(•´xõ( ¶xõ;( ¸xõu yõfyõb(©yõ‚`yõmyõ+ã¿°õ  °õ kÄ°õ’(‡Å°õ‚(ÚÇ°õ( \É°õ;(QË°õDZõ¹!±õb(`#±õ‚%±õ!&±õ+*èõçèõ úèõ‚Õèõ;ó"èõ ^,èõb¤/èõ‚T1èõc2èõ+Òèõ ~Ôèõ ÕÖèõ’(é×èõ‚(BÚèõ( âÛèõ;(Þèõ’3éõç5éõb(j7éõ‚/9éõ>:éõ+‹0 ö;.3 ö+8å ö yç ö ·é ö’(Îê ö‚(!í ö( ¼î ö;(Âð ötE!ösG!öb(¨I!ö‚]K!öyL!ö+ˆ÷Xö ÉùXö  +üXö’(ýXö‚(~ÿXö( ÿYö;(òYö\WYöMYYöb([Yö‚G]YöV^Yö+Ê
+‘ö ø ‘ö ,‘ö’(D‘ö‚(£‘ö( $‘ö;(‘ö}j‘öol‘öb(²n‘ö‚hp‘öuq‘ö+ëÉö , Éö s"Éö’(~#Éö‚(Ñ%Éö( R'Éö;(T)ÉöÜ}ÉöÒÉöb(yÉö‚1ƒÉö@„Éö+Jv÷y÷ {÷‚Ú}÷;ý€÷ ¢Š÷bè÷‚‹÷š÷+%0÷ ‚2÷ È4÷’(ò5÷‚(Q8÷( ò9÷;(<÷o‘÷²“÷b(5•÷‚ô–÷˜÷+]Ž8÷;‘8÷+
+C9÷ OE9÷ ’G9÷’(·H9÷‚(
+K9÷( ¥L9÷;(ŸN9÷l£9÷p¥9÷b(¥§9÷‚_©9÷lª9÷+€Uq÷ ½Wq÷ Zq÷’(-[q÷‚(]q÷( _q÷;(aq÷–µq÷ˆ·q÷b(˹q÷‚x»q÷‡¼q÷+i©÷ 6k©÷ nm©÷’(†n©÷‚(åp©÷( gr©÷;(Xt©÷É©÷Ë©÷b(IÍ©÷‚Ï©÷Щ÷+{á÷ U}á÷  á÷’(¼€á÷‚(ƒá÷( ‘„á÷;(††á÷.Ûá÷ Ýá÷b(ÇÞá÷‚yàá÷ˆáá÷+Õø¾×ø ÖÙø‚£Üø;¿ßø /éøbuìø‚îø'ïø+éŽø J‘ø ¡“ø’(µ”ø‚(—ø( ª˜ø;(֚ø ðøõòøb(†ôø‚KöøZ÷ø+™íPø;<ðPø+Ö Qø £Qø U¥Qø’(l¦Qø‚(¿¨Qø( ZªQø;(`¬Qø-Rø,Røb(aRø‚Rø2Rø+¬´‰ø í¶‰ø 1¹‰ø’(Bº‰ø‚(¢¼‰ø( #¾‰ø;(À‰øŠø³Šøb(öŠø‚­Šø¼Šø+ÅÆÁø óÈÁø 'ËÁø’(?ÌÁø‚( ÎÁø( !ÐÁø;(ÒÁøª&Âøœ(Âøb(ß*Âø‚•,Âø¢-Âø+Úùø YÜùø  Þùø’(«ßùø‚(þáùø( ãùø;(åùø:úø<úøb(¶=úø‚n?úø@úø+€21ù=51ù I71ù‚:1ù;3=1ù F1ùbãI1ù‚†K1ù•L1ù+]ì1ù ³î1ù ùð1ù’(#ò1ù‚(‚ô1ù( $ö1ù;()ø1ùÇM2ù P2ùb(ŽQ2ù‚MS2ù\T2ù+µJiù;XMiù+bÿiù §jù êjù’(jù‚(bjù( ýjù;(÷
+jù +`jùbjùb(Cdjù‚ýejù
+gjù+ ¢ù ]¢ù ¦¢ù’(Í¢ù‚(-¢ù( ¯¢ù;( ¢ù<r¢ù.t¢ùb(qv¢ù‚#x¢ù2y¢ù+ª%Úù Ü'Úù *Úù’(,+Úù‚(‹-Úù(  +/Úù;(1Úù¯…Úù ‡Úùb(ã‰Úù‚š‹Úù§ŒÚù+²7ú ï9ú :<ú’(V=ú‚(©?ú( +Aú;(Cú×úµ™úb(\›ú‚úžú+–‘IúS”Iú k–Iú‚8™Iú;TœIú ǦIúb +ªIú‚°«Iú¿¬Iú+ +JJú nLJú ÅNJú’(ÙOJú‚(2RJú( ÎSJú;(ûUJúÅ«Jú®Júb(¬¯Jú‚q±Jú€²Jú+.ªú;Ѭú+k]‚ú ¬_‚ú êa‚ú’(c‚ú‚(Te‚ú( ïf‚ú;(õh‚ú½‚úÁ¿‚úb(öÁ‚ú‚«Ã‚úÇĂú+Öoºú rºú [tºú’(luºú‚(Ìwºú( Myºú;(@{ºúÜϺúÍѺúb(Ôºú‚ÇÕºúÖÖºú+Jƒòú x…òú ¬‡òú’(Ĉòú‚(%‹òú( ¦Œòú;(—Žòú.ãòú åòúb(cçòú‚éòú&êòú+1•*û r—*û ¹™*û’(Ě*û‚(*û( ˜ž*û;(š *ûTõ*ûJ÷*ûb(ñø*û‚©ú*û¸û*û++ïaûìñaû øóaû‚¹öaû;Úùaû =bûbƒbû‚&bû5 bû+©bû _«bû ¥­bû’(Ï®bû‚(.±bû( ϲbû;(õ´bûž
+cûâ cûb(ecû‚$cû3cû+Œšû;/
+šû+ɺšû ½šû Q¿šû’(vÀšû‚(Éšû( dĚû;(^ƚû]›ûa›ûb(–›û‚P!›û]"›û+áÎÒû ÑÒû gÓÒû’(ŽÔÒû‚(îÖÒû( pØÒû;(aÚÒû÷.Óûé0Óûb(,3Óû‚Ù4Óûè5Óû+úà
+ü 2ã
+ü jå
+ü’(‚æ
+ü‚(áè
+ü( cê
+ü;(Xì
+üA üC üb(DE ü‚ûF üH ü+~ôBü »öBü ùBü’("úBü‚(uüBü( ÷ýBü;(èÿBüŸTCü‘VCüb(8XCü‚êYCüùZCü+Mzü¿Ozü ×Qzü‚¤Tzü;ÀWzü iazüb¯dzü‚Rfzüagzü+ê{ü K {ü ¢ {ü’(¶ {ü‚({ü( «{ü;(Ü{ü§h{üüj{üb(l{ü‚Rn{üao{ü+ e²ü;Ch²ü+ܳü ³ü [³ü’(r³ü‚(Å ³ü( `"³ü;(f$³ü4y³ü0{³üb(e}³ü‚³ü6€³ü+­,ëü î.ëü 21ëü’(C2ëü‚(£4ëü( $6ëü;(8ëüÌëü´Žëüb(÷ëü‚¯’ëü¾“ëü+Æ>#ý ô@#ý (C#ý’(@D#ý‚(¡F#ý( "H#ý;(J#ý«ž#ý #ýb(à¢#ý‚–¤#ý£¥#ý+R[ý ZT[ý ¡V[ý’(¬W[ý‚(ÿY[ý( €[[ý;(‚][ý²[ý´[ýb(·µ[ý‚o·[ý~¸[ý+ª’ý>­’ý J¯’ý‚²’ý;4µ’ý ž¾’ýbäÁ’ý‚‡Ã’ý–Ä’ý+^d“ý ²f“ý øh“ý’("j“ý‚(l“ý( "n“ý;()p“ýÈœý ȓýb(É“ý‚N˓ý]̓ý+¶ÂÊý;YÅÊý+cwËý ¨yËý ë{Ëý’(}Ëý‚(cËý( þ€Ëý;(ø‚ËýØËýÚËýb(DÜËý‚þÝËý ßËý+!Šþ ^Œþ §Žþ’(Ώþ‚(.’þ( °“þ;(¡•þ=êþ/ìþb(rîþ‚$ðþ3ñþ+«;þ ݟ;þ ¢;þ’(-£;þ‚(Œ¥;þ( §;þ;(©;þ°ý;þ¡ÿ;þb(ä<þ‚›<þ¨<þ+³¯sþ ð±sþ ;´sþ’(Wµsþ‚(ª·sþ( ,¹sþ;(»sþÄtþ¶tþb(]tþ‚tþtþ+— «þT «þ l«þ‚;«þ;[«þ Å«þb !«þ‚®"«þ½#«þ+«þ uÄ«þ ÌÆ«þ’(àÇ«þ‚(;Ê«þ( ×Ë«þ;(ΫþÑ#¬þ'&¬þb(¸'¬þ‚})¬þŒ*¬þ+:"ãþ;Ý$ãþ+wÕãþ ¸×ãþ öÙãþ’( +Ûãþ‚(`Ýãþ( ûÞãþ;(áãþÎ5äþÍ7äþb(:äþ‚·;äþÓ<äþ+âçÿ #êÿ gìÿ’(xíÿ‚(Øïÿ( Yñÿ;(LóÿèGÿÙIÿb(Lÿ‚ÓMÿâNÿ+VûSÿ „ýSÿ ¸ÿSÿ’(ÐTÿ‚(1Tÿ( ²Tÿ;(£Tÿ:[Tÿ,]Tÿb(o_Tÿ‚%aTÿ2bTÿ+= +Œÿ ~Œÿ ÅŒÿ’(ÐŒÿ‚(#Œÿ( ¤Œÿ;(¦Œÿ`mŒÿVoŒÿb(ýpŒÿ‚µrŒÿÄsŒÿ+7gÃÿøiÃÿ lÃÿ‚ÅnÃÿ;æqÃÿ I{Ãÿb~Ãÿ‚2€ÃÿAÃÿ+!Äÿ k#Äÿ ±%Äÿ’(Û&Äÿ‚(:)Äÿ( Û*Äÿ;(-Äÿª‚Äÿî„Äÿb(q†Äÿ‚0ˆÄÿE‰Äÿ+˜ûÿ;;‚ûÿ+E4üÿ Š6üÿ Í8üÿ’(ò9üÿ‚(E<üÿ( à=üÿ;(Ú?üÿԔüÿؖüÿb( +™üÿ‚ǚüÿԛüÿ+íF4 *I4 sK4’(šL4‚(úN4( |P4;(mR4§4õ¨4b(8«4‚å¬4ô­4+Yl 8[l p]l’(ˆ^l‚(ç`l( ibl;(Zdl¹l»lb(E½l‚ü¾l Àl+l¤ ¼n¤ q¤’(#r¤‚(vt¤( øu¤;(éw¤Ì¤‚Τb()Ф‚ÛѤêÒ¤+óÄÛ°ÇÛ ÈÉۂ•ÌÛ;±ÏÛ &ÙÛblÜۂÞÛßÛ+Ú~Ü ;Ü ’ƒÜ’(¦„Ü‚(ÿ†Ü( ›ˆÜ;(ȊÜŒàÜéâÜb(zäÜ‚?æÜNçÜ+…Ý;(à+2’ s” ±–’(ȗ‚(š( ¶›;(¼Šò†ôb(»ö‚pøŒù+˜¤L Ù¦L ©L’(.ªL‚(Ž¬L( ®L;(°L®M¦Mb(éM‚ 
+M¯ M+·¶„ 帄 »„’(1¼„‚(’¾„( À„;(„›……b(Ð…‚‚……+ ʼ J̼ ‘μ’(œÏ¼‚(ïѼ( pÓ¼;(rÕ¼ *½,½b(¨-½‚`/½o0½+r"ô/%ô ;'ô‚*ô;%-ô 6ôbÈ9ô‚k;ôz<ô+NÜô ¢Þô èàô’(âô‚(qäô( æô;(èôÄ=õ@õb(ŠAõ‚ICõXDõ+²:,;U=,+_ï, ¤ñ, çó,’( õ,‚(_÷,( úø,;(ôú,
+P- R-b(@T-‚úU-W-+e Ze £e’(Êe‚(*
+e( ¬ e;(¡ +e>be0deb(sfe‚%he4ie+¬ ޝ ’(.‚(( ;(!±u¢wb(åy‚œ{©|+´'Õ ñ)Õ <,Õ’(X-Õ‚(«/Õ( -1Õ;(3ÕŇÕ·‰Õb(^‹Õ‚ÕŽÕ+˜ Y„  q† ‚E‰ ;aŒ  ̕ b™ ‚µš ě +: + {< + Ò> +’(æ? +‚(?B +( ÛC +;(F +қ +(ž +b(¹Ÿ +‚~¡ +¢ ++;šD;ޜD+xME ¹OE ÷QE’(SE‚(aUE( üVE;(YEÏ­EίEb(²E‚¸³EÔ´E+ã_} $b} hd}’(ye}‚(Ùg}( Zi};(Mk}î¿}ßÁ}b("Ä}‚ÙÅ}èÆ}+\sµ Šuµ ¾wµ’(Öxµ‚(7{µ( ¸|µ;(©~µAÓµ3Õµb(v×µ‚,Ùµ9Úµ+¯†í ðˆí 7‹í’(BŒí‚(›Ží( í;(’í×æíÍèíb(têí‚,ìí;íí+>ß$ûá$ ä$‚Èæ$;çé$ fó$b¬ö$‚Oø$^ù$+™% l›% ²%’(ܞ%‚(;¡%( Ü¢%;(ñ¤%•ú%Ùü%b(\þ%‚&*&+ƒ÷\;&ú\+0¬] u®] ¸°]’(ݱ]‚(0´]( ˵];(Å·]¿ ^Ã^b(ø^‚²^¿^+ؾ• Á• ^Õ’(…Ä•‚(åƕ( gȕ;(Xʕî–à –b(##–‚Ð$–ß%–+ñÐÍ #ÓÍ [ÕÍ’(sÖÍ‚(ÒØÍ( TÚÍ;(EÜÍü0Îí2Îb(05΂ë6Îø7Î+jä §æ òè’(ê‚(aì( ãí;(Ôï{DmFb(H‚ÆIÕJ+Þ<=›?= ³A=‚ŠD=;¨G= Q=bdT=‚V=W=+Ðö= 1ù= ˆû=’(œü=‚(õþ=( ‘>;(½>}X>ÓZ>b(d\>‚)^>8_>+vUu;Xu+#
+v d v ¢v’(¹v‚( v( §v;(­vzjvylvb(®nv‚cpvqv+Ž® Ï® !®’($"®‚(„$®( &®;(ø'®¤|®•~®b(؀®‚‚®žƒ®+§.æ Õ0æ  3æ’(!4æ‚(‚6æ( 8æ;(ô9挎æ~æb(Á’æ‚w”æ„•æ+úA ;D ‚F’(G‚(àI( aK;(cMû¡ñ£b(˜¥‚P§_¨+ӛUžU œ U‚]£U;|¦U å¯Ub+³U‚δUݵU+4TV ˆVV ÎXV’(øYV‚(W\V( ø]V;(û_V¤µVç·Vb(j¹V‚)»V8¼V+´;¥¶+?gŽ „iŽ ÇkŽ’(ìlŽ‚(?oŽ( ÚpŽ;(ÔrŽêǎëɎb( ̎‚Ú͎çΎ+ýyÆ :|Æ ƒ~Æ’(ªÆ‚(
+‚Æ( ŒƒÆ;(…ÆÚÆÜÆb(SÞÆ‚àÆáÆ+Œþ ¾þ ö‘þ’(“þ‚(m•þ( ï–þ;(ä˜þ‘íþ‚ïþb(Åñþ‚|óþ‰ôþ+”Ÿ6 Ñ¡6 ¤6’(8¥6‚(‹§6(  +©6;(þª6¥ÿ6—7b(>7‚ð7ÿ7+xùm9üm Qþm‚%n;An ¬ +nbòn‚•n¤n+k³n ̵n #¸n’(7¹n‚(»n( ,½n;(X¿nopob(o‚ÆoÕo+¦;³¦+MŦ ŽÇ¦ Ìɦ’(ãʦ‚(6ͦ( ÑΦ;(×Ц¤%§£'§b(Ø)§‚+§©,§+#ÙÞ dÛÞ ¨ÝÞ’(¹ÞÞ‚(áÞ( šâÞ;(äÞ)9ß;ßb(]=ß‚?ß#@ß+,ë Zí Žï’(¦ð‚(ó( ˆô;(yöKMb(EO‚ûPR+~þN ¿O O’(O‚(dO( åO;(ç O¡^O—`Ob(>bO‚öcOeO+W†ÅY† Ì[†‚^†;°a† k†ben†‚p†q†+Ù‡ 6‡ |‡’(¦‡‚(‡( ¦‡;(»‡Sr‡˜t‡b(v‡‚Úw‡éx‡+Bo¾;åq¾+ï#¿ 4&¿ w(¿’(œ)¿‚(ï+¿( Š-¿;(„/¿~„¿‚†¿b(·ˆ¿‚qŠ¿~‹¿+—6÷ Ô8÷ ;÷’(D<÷‚(¤>÷( &@÷;(B÷­–÷Ÿ˜÷b(âš÷‚œ÷ž÷+°H/ âJ/ M/ ’(2N/ ‚(‘P/ ( R/ ;(T/ »¨/ ¬ª/ b(ï¬/ ‚¦®/ ³¯/ +)\g f^g ±`g ’(Íag ‚( dg ( ¢eg ;(“gg :¼g ,¾g b(Ó¿g ‚…Ág ”Âg +´ž Z·ž m¹ž ‚E¼ž ;a¿ž ËȞ b̞ ‚´Íž ÃΞ +ŠnŸ ëpŸ BsŸ ’(VtŸ ‚(¯vŸ ( KxŸ ;(|zŸ 5П ŠÒŸ b(ԟ ‚à՟ ï֟ +*ÍÖ ;ÍÏÖ +×× „× V†× ’(m‡× ‚(À‰× ( [‹× ;(a× .â× -ä× b(bæ× ‚è× 3é× +B”
+ ƒ–
+ ǘ
+’(ؙ
+‚(8œ
+( ¹
+;(¬Ÿ
+Xô
+Iö
+b(ο
+‚Cú
+Rû
++ƧG
+ ô©G
+ (¬G
+’(@­G
+‚(¡¯G
+( "±G
+;(³G
+«H
+ H
+b(à H
+‚– +H
+£H
++®¹
+ ï»
+ 6¾
+’(A¿
+‚(”Á
+( Ã
+;(Å
+¯€
+¥€
+b(L€
+‚€
+ €
++Ž·
+K·
+ W·
+‚·
+;;·
+ ¤'·
+bõ*·
+‚˜,·
+§-·
++cͷ
+ ·Ï·
+ üÑ·
+’(&Ó·
+‚(…Õ·
+( &׷
+;(?ٷ
+â.¸
+'1¸
+b(ª2¸
+‚i4¸
+x5¸
++Ò+ï
+;u.ï
++àï
+ Äâï
+ üäï
+’(æï
+‚(qèï
+( êï
+;(ìï
+Að
+8Cð
+b(mEð
+‚'Gð
+CHð
++Mó' zõ' Û÷' ’(ù' ‚(©û' ( ;ý' ;(0ÿ' ¦S( ¿U( b(X( ‚¯Y( ¾Z( +Ô` ` K
+` ’(o ` ‚(Î +` ( O` ;(B` ³e` ¤g` b(çi` ‚žk` °l` +¶˜ ó˜ >˜ ’(Z˜ ‚(­˜ ( /!˜ ;( #˜ ›w˜ y˜ b(4{˜ ‚æ|˜ õ}˜ +nqÏ +tÏ >vÏ ‚ yÏ ;'|Ï ‘…Ï b×ˆÏ ‚ŠÏ œ‹Ï +P+Ð ±-Ð 0Ð ’(1Ð ‚(u3Ð ( 5Ð ;(C7Ð ЌР%Ð b(¨Ð ‚m’Ð |“Ð +ĉ ;gŒ +q> ²@ ðB ’(D ‚(ZF ( õG ;(ûI ­ž ¬  b(ᢠ‚–¤ ²¥ +ÁP@ S@ FU@ ’(WV@ ‚(·X@ ( 8Z@ ;(+\@ •°@ †²@ b(É´@ ‚€¶@ ·@ +dx 1fx ehx ’(}ix ‚(Þkx ( _mx ;(Pox ¶Ãx ¨Åx b(ëÇx ‚¡Éx ®Êx +¹u° úw° Az° ’(L{° ‚(Ÿ}° (  ° ;("° ªÕ°  ×° b(KÙ° ‚þÚ°  +Ü° +‚Ïç ?Òç FÔç ‚×ç ;+Úç Ÿãç båæç ‚ˆèç —éç +S‰è °‹è öè ’( è ‚(‘è (  “è ;(F•è ±êè öìè b(yîè ‚8ðè Gñè +¡ç +;Dê ++Nœ + “ž + Ö  +’(û¡ +‚(N¤ +( é¥ +;(㧠+°ü +´þ +b(é! +‚£! +°! ++Ä®X + ±X + J³X +’(q´X +‚(ѶX +( S¸X +;(DºX +ÚY +ÌY +b(Y +‚¼Y +ËY ++ÝÀ + Ð + GŐ +’(_Ɛ +‚(¾È +( @ʐ +;(1̐ +è ‘ +Ù"‘ +b(%‘ +‚Ó&‘ +à'‘ ++VÔÈ + “ÖÈ + ÞØÈ +’(úÙÈ +‚(MÜÈ +( ÏÝÈ +;(ÀßÈ +g4É +Y6É +b(8É +‚²9É +Á:É ++Ê,‡/ š1‚h4;ˆ7 %AbkD‚FG+±æ é ië’(}ì‚(Öî( rð;(Ÿò\H±Jb(BL‚NO+QE8;ôG8+þù8 ?ü8 }þ8’(”ÿ8‚(ç9( ‚9;(ˆ9VZ9R\9b(‡^9‚<`9Xa9+d q ¥q éq’(üq‚(\q( Ýq;(Îqzlqknqb(®pq‚erqtsq+è© "© J$©’(b%©‚(Ã'©( D)©;(5+©Í©¿©b(„©‚¸…©ņ©+Ð1á 4á X6á’(c7á‚(¶9á( 7;á;(9=áёáǓáb(n•á‚&—á5˜á+©‹jŽ v‚7“;V– ÀŸb£‚©¤¸¥+€E ÔG J’(DK‚(£M( DO;(KQã¦(©b(«ª‚j¬y­+Ó£P;v¦P+€XQ ÅZQ ]Q’(-^Q‚(€`Q( bQ;(dQ+¹Q,»Qb(a½Q‚¿Q-ÀQ+>k‰ {m‰ Äo‰’(ëp‰‚(Ks‰( Ít‰;(Âv‰_ˉQ͉b(”ω‚FщU҉+b}Á ”Á ́Á’(ê‚Á‚(I…Á( ˆÁ;(ÀˆÁgÝÁXßÁb(›áÁ‚RãÁ_äÁ+Րù “ù ]•ù’(y–ù‚(̘ù( Nšù;(?œùöðùèòùb(ôù‚AöùP÷ù+Yé0ì0 )î0‚öð0;ô0 ‡ý0bÍ1‚p11+;£1 œ¥1 ó§1’(©1‚(`«1( ü¬1;()¯1ì2A2b(Ò2‚—
+2¦ 2+ái;„i+Ž¶i ϸi  +»i’($¼i‚(w¾i( Ài;(Âiåjäjb(j‚Îjêj+ùÈ¡ :Ë¡ ~Í¡’(Î¡‚(ïС( pÒ¡;(cÔ¡ÿ(¢ð*¢b(3-¢‚ê.¢ù/¢+ÛÙ 0ÝÙ dßÙ’(|àÙ‚(ÝâÙ( ^äÙ;(OæÙæ:ÚØ<Úb(?Ú‚Ñ@ÚÞAÚ+Tî •ð Üò’(çó‚(:ö( »÷;(½ùwNmPb(R‚ÌSÛT+ÞFI›II ¢KI‚mNI;ŒQI /\Ibu_I‚aI'bI+µJ J XJ’(‚J‚(áJ( ‚
+J;(¨ JJbJdJb(fJ‚ÑgJàhJ+9_;Üa+æ‚ +‚ n‚’(“‚‚(æ‚( ‚;({‚ut‚yv‚b(®x‚‚hz‚u{‚+Ž&º Ë(º +º’(;,º‚(›.º( 0º;(2º¤†º–ˆºb(يº‚†Œº•º+:ò D<ò |>ò’(”?ò‚(óAò( uCò;(fEòšòœòb(Qžò‚ ò¡ò+ L* ]N* ¨P*’(ÄQ*‚(T*( ™U*;(ŠW*1¬*#®*b(ʯ*‚|±*‹²*+¦aÁ¨a Ùªa‚¦­a;°a -ºabs½a‚¿a%Àa+{^b Ü`b 3cb’(Gdb‚( fb( <hb;(ijb&Àb{Âbb( Äb‚ÑÅbàÆb+Œ¾™;/Á™+Èqš  tš Gvš’(^wš‚(±yš( L{š;(R}š ҚԚb(Q֚‚ؚ"ٚ+.„Ò o†Ò ³ˆÒ’(ĉÒ‚($ŒÒ( ¥Ò;(˜ÒDäÒ5æÒb(xèÒ‚/êÒ>ëÒ+²—
+ à™
+ œ
+’(,
+‚(Ÿ
+( ¡
+;(ÿ¢
+—÷
+‰ù
+b(Ìû
+‚‚ý
+þ
++«B F­B ¯B’(˜°B‚(ë²B( l´B;(n¶B Cü Cb(£C‚[CjC+mz.z 5z‚ö
+z;z zbÅz‚hzwz+?½z “¿z ÙÁz’(Ãz‚(bÅz( Çz;(
+Éz¢{ç {b(j"{‚)${8%{+’²;;²+Dв ‰Ò² ÌÔ²’(ñÕ²‚(Dز( ßÙ²;(ÙÛ²ï0³ð2³b(%5³‚ß6³ì7³+ãê ?åê ˆçê’(¯èê‚(ëê( ‘ìê;(‚îêCëEëb(SGë‚IëJë+!õ" S÷" ‹ù"’(£ú"‚(ý"( „þ";(y#&U#W#b(ZY#‚[#\#+”[ Ñ
+[  +[’(8[‚(‹[(  +[;(þ[¥h[—j[b(>l[‚ðm[ÿn[+a’Åc’ Øe’‚¦h’;Æk’ ;u’bx’‚$z’3{’+ï“ P“ §“’(» “‚(#“( °$“;(Ý&“ |“ý~“b(Ž€“‚W‚“fƒ“+•yÊ;8|Ê+B.Ë ƒ0Ë Á2Ë’(Ø3Ë‚(+6Ë( Æ7Ë;(Ì9Ë™ŽË˜Ëb(͒Ë‚‚”Ëž•Ë+­@ îB 2E’(CF‚(£H( $J;(L³ ¤¢b(礂ž¦­§+!T; OV; ƒX;’(›Y;‚(ü[;( }];;(n_;´;÷µ;b(:¸;‚ð¹;ýº;+fs Ihs js’(›ks‚(îms( oos;(qqs+Æs!Èsb(ÈÉs‚€ËsÌs+Àª¿Âª ÆĪ‚‘Ǫ;°Êª ÕªbWت‚úÙª Ûª+Ùy« 6|« |~«’(¦«‚(‚«( ¦ƒ«;(»…«SÛ«˜Ý«b(ß«‚Úà«éá«+BØâ;åÚâ+‹ã č㠐ã’(,‘ã‚(“ã( •ã;(—ã +ìãîãb(Fðã‚òã +óã+ŒŸ É¡ ¤’(9¥‚(™§( ©;( «¢ÿ”b(ׂ„“+¥±S ׳S ¶S’('·S‚(†¹S( »S;(ù¼S°T¡Tb(äT‚›T¨T+%ŋ bNj ­É‹’(Éʋ‚(͋( Î‹;(’Ћ:%Œ,'Œb(Ó(Œ‚…*Œ”+Œ+Ã^ à v"ÂC%Ã;a(à Ø1Ãb5ÂÁ6ÃÐ7Ã+Š×à ëÙà BÜÃ’(VÝÂ(¯ßÃ( KáÃ;(wãÃ/9Ä„;Äb(=Ä‚Ú>Äé?Ä+$6û;Ç8û+Ñêû íû Pïû’(gðû‚(ºòû( Uôû;([öû)Kü%Müb(ZOü‚Qü+Rü+7ý3 xÿ3 ¼4’(Í4‚(-4( ®4;(¡4S]4D_4b(‡a4‚>c4Md4+Vl „l ¸l’(Ðl‚(1l( ²l;(£l@ol2qlb(usl‚+ul8vl+®"¤ ï$¤ 6'¤’(A(¤‚(”*¤( ,¤;(.¤µ‚¤«„¤b(R†¤‚
+ˆ¤‰¤+{ÛÙ}Û àÛ‚¡‚Û;ąÛ 9Ûb’Û‚"”Û1•Û+í4Ü A7Ü ‡9Ü’(±:Ü‚(=Ü( ±>Ü;(´@Üa–ܦ˜Üb()šÜ‚è›Ü÷œÜ+Q“;ô•+þG CJ †L’(«M‚(þO( ™Q;(“S©¨ªªb(߬‚™®¦¯+¼ZL ù\L B_L’(i`L‚(ÉbL( KdL;(@fLݺLϼLb(¿L‚ÄÀLÓÁL+Kn„ }p„ µr„’(Ís„‚(,v„( ®w„;(£y„P΄AЄb(„Ò„‚;ԄHՄ+S€¼ ‚¼ ۄ¼’(÷…¼‚(Jˆ¼( ̉¼;(½‹¼dà¼Vâ¼b(ý㼂¯å¼¾æ¼+7ÚóôÜó ßó‚Þáó;üäó eîób«ñó‚Nóó]ôó+´’ô •ô l—ô’(€˜ô‚(ٚô( uœô;(¡žôdôô¹öôb(Jøô‚úôûô+Êò+;mõ++¦, G¨, …ª,’(œ«,‚(ï­,( Š¯,;(±,^-Z-b(
+-‚D -` +-+l¸d ­ºd ñ¼d’(¾d‚(bÀd( ãÁd;(ÖÃdreceb(¦e‚]ele+à˜ Μ BМ’(Zќ‚(»Óœ( <՜;(-לÄ+¶-b(ù/‚¯1¼2+2ßÔ sáÔ ºãÔ’(ÅäÔ‚(çÔ( ™èÔ;(›êÔU?ÕKAÕb(òBÕ‚ªDÕ¹EÕ+¼7 y:  €< ‚A? ;dB  ÈK bO ‚±P ÀQ +ñ  êó  0ö ’(Z÷ ‚(¹ù ( Zû ;(oý S +LU +b(ÏV +‚ŽX +Y ++öOD;™RD+£E èE . E’(S
+E‚(¦ E( CE;(9E2eE6gEb(kiE‚%kEAlE+K} Š} Þ}’(}‚(e}( æ };(Û"}qw}ey}b(¨{}‚U}}d~}+z)µ ¬+µ ä-µ’(ü.µ‚([1µ( Ý2µ;(Î4µ…‰µv‹µb(¹µ‚pµ}µ+ó<í 0?í {Aí’(—Bí‚(êDí( lFí;(]Hííöžíb( í‚O¢í^£í+g•$%˜$ =š$‚ $;+ $ •©$bÛ¬$‚~®$¯$+TO% µQ%  T%’( U%‚(yW%( Y%;(A[%î°%C³%b(Æ´%‚‹¶%š·%+ã­\;†°\+b] Ñd] g]’(&h]‚(yj]( l];(n]þÂ]úÄ]b(/Ç]‚äÈ]Ê]+ u• Mw• —y•’(¨z•‚(}•( ‰~•;(z€•(Օוb(\ٕ‚ە"ܕ++‡Í Y‰Í ‹Í’(¥ŒÍ‚(Í( ‡Í;(x’Í çÍéÍb(UëÍ‚ íÍîÍ+Žš Ϝ Ÿ’(! ‚(t¢( õ£;(÷¥ ú–üb(=þ‚õÿ+wô<4÷< ;ù<‚üû<;ÿ< =bÕ =‚x +=‡=+Ó¬= 0¯= v±=’( ²=‚(ÿ´=(  ¶=;(µ¸=G>Œ>b(>‚Î>Ý>+§ u;Ju+ã¿u (Âu kÄu’(Åu‚(ãÇu( ~Éu;(xËu v‘"vb(Æ$v‚…&v’'v+¡Ò­ ÞÔ­ '×­’(NØ­‚(®Ú­( 0Ü­;(!Þ­·2®©4®b(ì6®‚™8®¨9®+%æå Wèå êå’(§ëå‚(îå( ˆïå;(yñå FæHæb(TJæ‚ LæMæ+#ø `ú «ü’(Çý‚(( œ;(‘9X+Zb(Ò[‚„]“^+ RUÉTU ÜVU‚³YU;Ñ\U :fUb€iU‚#kU2lU+ù V ZV ±V’(ÅV‚(V( ºV;(çVµmV
+pVb(›qV‚`sVotV+ªj;Mm+æŽ ' Ž e"Ž’(|#Ž‚(Ï%Ž( j'Ž;(p)Ž>~Ž:€Žb(o‚Ž‚$„Ž@…Ž+·1Æ ø3Æ <6Æ’(M7Æ‚(­9Æ( .;Æ;(!=ƽ‘Æ®“Æb(ñ•Æ‚¨—Æ·˜Æ+ÀCþ îEþ "Hþ’(:Iþ‚(›Kþ( Mþ;( +Oþ¤£þ–¥þb(Ù§þ‚©þœªþ+W6 SY6 š[6’(¥\6‚(ø^6( y`6;({b6$·6¹6b(Áº6‚y¼6ˆ½6+‹¯mH²m T´m‚·m;:ºm £ÃmbéÆm‚ŒÈm›Ém+bin ¶kn ümn’(&on‚(…qn( &sn;()unËÊnÍnb(“În‚RÐnaÑn+»Ç¥;^Ê¥+h|¦ ­~¦ ð€¦’(‚¦‚(h„¦( †¦;(ý‡¦ýܦþÞ¦b(3ᦂíâ¦úã¦+Þ M‘Þ –“Þ’(½”Þ‚(—Þ( Ÿ˜Þ;(”šÞ1ïÞ#ñÞb(fóÞ‚õÞ'öÞ+4¡ f£ ž¥’(¶¦‚(©( —ª;(Œ¬J;b(~‚5G+¸´N õ¶N @¹N’(\ºN‚(¯¼N( 1¾N;(&ÀNÓOÅOb(lO‚O1O+6 +†÷† 
+†‚׆;õ† l!†b²$†‚U&†d'†+dž Ɇ ψ’(ã̆‚(<φ( ØІ;(ӆ¸(‡ ++‡b(ž,‡‚c.‡r/‡+­%¾;P(¾+ZÚ¾ ›Ü¾ ÙÞ¾’(ðß¾‚(Câ¾( Þã¾;(äå¾²:¿®<¿b(ã>¿‚˜@¿´A¿+Àìö ïö Eñö’(Vòö‚(¶ôö( 7öö;(*øöÖL÷ÇN÷b(
+Q÷‚ÁR÷ÐS÷+D/ r/ ¦/ ’(¾/ ‚(/ (   / ;(‘ / )`/ b/ b(^d/ ‚f/ !g/ +,g mg ´g ’(¿g ‚(g ( “g ;(•g >rg 4tg b(Ûug ‚“wg ¢xg +lž Ònž Ùpž ‚šsž ;¹vž '€ž bxƒž ‚…ž *†ž +á%Ÿ >(Ÿ ƒ*Ÿ ’(­+Ÿ ‚( .Ÿ ( ®/Ÿ ;(Ù1Ÿ v‡Ÿ »‰Ÿ b(>‹Ÿ ‚ýŒŸ  ŽŸ +f„Ö ; ‡Ö +9× X;× =× ’(§>× ‚(A× ( ¢B× ;(§D× §™× Ë›× b(ž× ‚ºŸ× Ö × +kJ! ˜L! ùN!’( P!‚(ÇR!( YT!;(NV!Ī!ݬ!b( ¯!‚Ò°!á±!+]^G! `G! ÔbG!’(øcG!‚(WfG!( ØgG!;(ËiG!7¾G!(ÀG!b(kÂG!‚"ÄG!/ÅG!+:p! wr! Ât!’(Þu!‚(1x!( ³y!;(¨{!Ð!Ò!b(·Ó!‚iÕ!xÖ!+òɶ!¯Ì¶! Âζ!‚šÑ¶!;¶Ô¶! %Þ¶!bká¶!‚ã¶!*ä¶!+߃·! @†·! —ˆ·!’(«‰·!‚(Œ·!( ¤·!;(я·!cå·!¸ç·!b(;é·!‚ë·!ì·!+Xâî!;ûäî!+—ï! F™ï! „›ï!’(›œï!‚(îžï!( ‰ ï!;(¢ï!A÷ï!@ùï!b(uûï!‚*ýï!Fþï!+U©'" –«'" Ú­'"’(ë®'"‚(K±'"( ̲'";(¿´'") (" ("b(] +("‚("#("+ž¼_" ̾_" Á_"’(Â_"‚(xÄ_"( ùÅ_";(êÇ_"P`"B`"b(… `"‚;"`"H#`"+SΗ" ”З" Ûҗ"’(æӗ"‚(9֗"( º×—";(¼Ù—"D.˜":0˜"b(á1˜"‚™3˜"¨4˜"+(Ï"Ü*Ï" è,Ï"‚©/Ï";Ê2Ï" 3<Ï"by?Ï"‚AÏ"+BÏ"+òáÏ" OäÏ" •æÏ"’(¿çÏ"‚(êÏ"( ¿ëÏ";(åíÏ"KCÐ"EÐ"b(GÐ"‚ÒHÐ"áIÐ"+:@#;ÝB#+çô# ,÷# où#’(”ú#‚(çü#( ‚þ#;(|#OU#SW#b(ˆY#‚B[#T\#+c@#   @# é @#’( +@#‚(p@#( ò@#;(ã@#yg@#ki@#b(®k@#‚[m@#jn@#+|x# ®x# æx#’(þx#‚(]!x#( ä"x#;(Õ$x#yx#~{x#b(Á}x#‚xx#…€x#+û,°# 8/°# ƒ1°#’(Ÿ2°#‚(ò4°#( t6°#;(i8°#!°#°#b(º°#‚l’°#{“°#+„…ç#Aˆç# TŠç#‚!ç#;=ç# ²™ç#bøœç#‚›žç#ªŸç#+f?è# ÇAè# Dè#’(2Eè#‚(‹Gè#( 'Iè#;(TKè#^¡è#³£è#b(D¥è#‚ §è#¨è#+Sž$;ö $+S $ AU $ W $’(–X $‚(éZ $( „\ $;(Š^ $X³ $Tµ $b(‰· $‚>¹ $Zº $+feX$ §gX$ ëiX$’(üjX$‚(\mX$( ÝnX$;(ÐpX$|ÅX$mÇX$b(°ÉX$‚gËX$zÌX$+w$ ­y$ á{$’(ù|$‚(Z$( ۀ$;(̂$dא$Vِ$b(™Û$‚Oݐ$\ސ$+ҊÈ$ È$ ZÈ$’(eÈ$‚(¸’È$( 9”È$;(;–È$ÓêÈ$ÉìÈ$b(pîÈ$‚(ðÈ$7ñÈ$+«äÿ$hçÿ$ oéÿ$‚:ìÿ$;Yïÿ$ Âøÿ$büÿ$‚«ýÿ$ºþÿ$+% eŸ% «¡%’(Õ¢%‚(4¥%( Õ¦%;(Þ¨%uþ%º%b(=%‚ü% %+Õü7%;xÿ7%+°8% V²8% ™´8%’(¾µ8%‚(¸8%( ¬¹8%;(¦»8%¼9%½9%b(ò9%‚¬9%¹9%+ÏÂp%  Åp% UÇp%’(|Èp%‚(ÜÊp%( ^Ìp%;(OÎp%ë"q%Ý$q%b( 'q%‚Ò(q%á)q%+YÖ¨% ‹Ø¨% ÃÚ¨%’(ÛÛ¨%‚(:Þ¨%( ¼ß¨%;(±á¨%^6©%O8©%b(’:©%‚I<©%V=©%+aèà% žêà% éìà%’(îà%‚(Xðà%( Úñà%;(Ëóà%rHá%dJá%b( Lá%‚½Má%ÌNá%+EB&E& G&‚âI&;þL& hV&b®Y&‚Q[&`\&+'ü& ˆþ& ß&’(ö&‚(O&( ë&;(&ß]&5`&b(Æa&‚‹c&šd&+ØZP&;{]P&+Q& UQ& “Q&’(ªQ&‚(ýQ&( ˜Q&;(žQ&lnQ&hpQ&b(rQ&‚RtQ&nuQ&+å!‰& &$‰& j&‰&’({'‰&‚(Û)‰&( \+‰&;(O-‰&끉&܃‰&b(†‰&‚և‰&刉&+î3Á& 6Á& P8Á&’(h9Á&‚(É;Á&( J=Á&;(;?Á&ғÁ&ĕÁ&b(˜Á&‚½™Á&ʚÁ&+@Gù& Iù& ÈKù&’(ÓLù&‚(&Où&( §Pù&;(©Rù&c§ù&Y©ù&b(«ù&‚¸¬ù&Ç­ù&+ʟ0'‹¢0' —¤0'‚X§0';wª0' ͳ0'b·0'‚°¸0'¿¹0'+¡Y1' þ[1' D^1'’(n_1'‚(Ía1'( nc1';(”e1'3»1'p½1'b(ó¾1'‚²À1'ÁÁ1'+¸h';½ºh'+Çli' oi' Uqi'’(zri'‚(Íti'( hvi';(bxi'[Íi'_Ïi'b(”Ñi'‚NÓi'[Ôi'+o¡' ¬¡' õƒ¡'’(…¡'‚(|‡¡'( þˆ¡';('•ß¡'‰á¡'b(Ìã¡'‚yå¡'ˆæ¡'+ž‘Ù' ГÙ' –Ù'’( —Ù'‚(™Ù'( ›Ù';(òœÙ'©ñÙ'šóÙ'b(ÝõÙ'‚”÷Ù'¡øÙ'+¥( T§( Ÿ©(’(»ª(‚(­(( ®(;(°((((b(Á(‚s
+(‚ (+‹ýH(HI( `I(‚-I(;II( ¹I(bÿI(‚¢I(±I(+r·I( Ó¹I( *¼I(’(>½I(‚(—¿I(( 3ÁI(;(`ÃI($J(J(b(J(‚×J(æJ(+(;À(+Êʁ(  ́( Iρ(’(`Ё(‚(³Ò(( Nԁ(;(Tց("+‚(-‚(b(S/‚(‚1‚($2‚(+0ݹ( qß¹( µá¹(’(Æâ¹(‚(&å¹(( §æ¹(;(šè¹(F=º(7?º(b(zAº(‚1Cº(@Dº(+´ðñ( âòñ( õñ(’(.öñ(‚(øñ(( úñ(;(üñ(™Pò(‹Rò(b(ÎTò(‚„Vò(‘Wò(+œ*) Ý*) $*)’(/*)‚(‚
+*)(  *);(*)b*)“d*)b(:f*)‚òg*)i*)+u\a)2_a) >aa)‚ da);(ga) ’pa)bØsa)‚{ua)Šva)+Qb) ¥b) ëb)’(b)‚(tb)(  b);("b)¼wb)ÿyb)b(‚{b)‚A}b)P~b)+ªt™);Mw™)+æ'š) +*š) n,š)’(“-š)‚(æ/š)( 1š);({3š)‘ˆš)’Šš)b(njš)‚Žš)Žš)+¤:Ò) á<Ò) *?Ò)’(Q@Ò)‚(±BÒ)( 3DÒ);($FÒ)ÀšÒ)²œÒ)b(õžÒ)‚§ Ò)¶¡Ò)+.N
+* `P
+* ˜R
+*’(°S
+*‚(V
+*( ‘W
+*;(†Y
+*3®
+*$°
+*b(g²
+*‚´
+*+µ
+*+¡aB* ÞcB* )fB*’(EgB*‚(˜iB*( kB*;( mB*·ÁB*©ÃB*b(PÅB*‚ÇB*ÈB*+ºy*Û¼y* ó¾y*‚ÇÁy*;ãÄy* NÎy*b”Ñy*‚7Óy*FÔy*+ +tz* nvz* Åxz*’(Ùyz*‚(2|z*( Î}z*;(úz*ÄÕz*Øz*b(ªÙz*‚oÛz*~Üz*+½Ò±*;`Õ±*+ú…²* ;ˆ²* yŠ²*’(‹²*‚(㍲*( ~²*;(„‘²*Qæ²*Pè²*b(…ê²*‚:ì²*Ví²*+Йê* œê* Užê*’(fŸê*‚(Æ¡ê*( G£ê*;(:¥ê*Öùê*Çûê*b(
+þê*‚Áÿê*Ðë*+Ù«"+ ®"+ ;°"+’(S±"+‚(´³"+( 5µ"+;(&·"+à #+µ +#+b(ø#+‚®#+»#++1¿Z+ rÁZ+ ¹ÃZ+’(ÄÄZ+‚(ÇZ+( ˜ÈZ+;(šÊZ+S[+O![+b(ö"[+‚®$[+½%[++À’+}’+ ‰’+‚J’+;i"’+ ×+’+b/’+‚À0’+Ï1’++‘Ñ’+ îӒ+ 4֒+’(^ג+‚(½Ù’+( ^ے+;(sݒ+3“+[5“+b(Þ6“+‚8“+¬9“++0Ê+;¨2Ê++²äÊ+ ÷æÊ+ :éÊ+’(_êÊ+‚(²ìÊ+( MîÊ+;(GðÊ+AEË+EGË+b(zIË+‚4KË+ALË++Z÷, —ù, àû,’(ý,‚(gÿ,( é,;(Ú,pW,bY,b(¥[,‚R],a^,+Þ
+;,  +;, H;,’(`;,‚(¿;,( @;,;(1;,éj;,Úl;,b(o;,‚Ôp;,áq;,+ìs, )s, t!s,’("s,‚(ã$s,( e&s,;(V(s,ý|s,ï~s,b(–€s,‚J‚s,Yƒs,+Ðvª,yª, ¥{ª,‚|~ª,;šª, ‹ª,bJŽª,‚폪,üª,+R/«, ³1«, 
+4«,’(5«,‚(w7«,( 9«,;(?;«,ÿ«,U“«,b(攫,‚«–«,º—«,+hâ,; ’â,+¥Bã, æDã, $Gã,’(;Hã,‚(ŽJã,( )Lã,;(/Nã,ü¢ã,û¤ã,b(0§ã,‚å¨ã,ªã,+U- QW- •Y-’(¦Z-‚(]-( ‡^-;(z`-&µ-·-b(Z¹-‚»- ¼-+”hS- ÂjS- ölS-’(nS-‚(opS-( ðqS-;(ásS-yÈS-kÊS-b(®ÌS-‚dÎS-qÏS-+|z‹- ½|‹- ‹-’(€‹-‚(b‚‹-( ニ-;(克-}ڋ-s܋-b(ދ-‚Òߋ-áà‹-+UÔÂ-×Â- )ÙÂ-‚êÛÂ-; ßÂ- rèÂ-b¸ëÂ-‚[íÂ-jîÂ-+1ŽÃ- …Ã- ˒Ã-’(õ“Ã-‚(T–Ã-( õ—Ã-;(ø™Ã-¡ïÃ-åñÃ-b(hóÃ-‚'õÃ-6öÃ-+ìú-;2ïú-+<¡û- £û- Ä¥û-’(é¦û-‚(<©û-( תû-;(Ò¬û-çü-èü-b(ü-‚×ü-óü-+ú³3. 7¶3. ‹¸3.’(²¹3.‚(¼3.( ”½3.;(…¿3.!4.4.b(V4.‚4.4.+$Æk. VÈk. ŽÊk.’(¦Ëk.‚(Îk.( ‡Ïk.;(|Ñk.)&l.(l.b(]*l.‚,l.!-l.+—Ù£. ÔÛ£. Þ£.’(;ߣ.‚(Žá£.( ã£.;(å£.¨9¤.š;¤.b(A=¤.‚ó>¤.@¤.+ 2Û.É4Û. á6Û.‚¯9Û.;Ï<Û. 9FÛ.bIÛ.‚"KÛ.1LÛ.+øëÛ. YîÛ. °ðÛ.’(ÄñÛ.‚(ôÛ.( ¹õÛ.;(å÷Û.ŸMÜ.õOÜ.b(xQÜ.‚=SÜ.LTÜ.+˜J/;;M/+Eÿ/ †/ Ä/’(Û/‚(./( É/;(Ï
+/¹_/¼a/b(ñc/‚¦e/Âf/+ÑL/ L/ VL/’(gL/‚(ÍL/( NL/;(?L/ÜqL/ÍsL/b(vL/‚ÇwL/ÖxL/+ß#„/  +&„/ A(„/’(Y)„/‚(º+„/( ;-„/;(,/„/ԃ„/ƅ„/b( ˆ„/‚¿‰„/̊„/+B7¼/ ƒ9¼/ Ê;¼/’(Õ<¼/‚((?¼/( ©@¼/;(«B¼/T—¼/J™¼/b(ñš¼/‚©œ¼/¸¼/+»ó/x’ó/ „”ó/‚E—ó/;dšó/ Ø£ó/b§ó/‚Á¨ó/Щó/+Iô/ áKô/ 'Nô/’(QOô/‚(°Qô/( QSô/;(TUô/ýªô/@­ô/b(îô/‚‚°ô/‘±ô/+ë§+0;Žª+0+˜\,0 Ý^,0  a,0’(Eb,0‚(˜d,0( 3f,0;(-h,0-½,0.¿,0b(cÁ,0‚!Ã,0.Ä,0+@od0 }qd0 Æsd0’(ítd0‚(Mwd0( Ïxd0;(Äzd0aÏd0SÑd0b(–Ód0‚HÕd0WÖd0+ςœ0 …œ0 9‡œ0’(Qˆœ0‚(°Šœ0( 2Œœ0;('Žœ0åâœ0Öäœ0b(çœ0‚Ðèœ0Ýéœ0+è”Ô0 %—Ô0 p™Ô0’(ŒšÔ0‚(ߜÔ0( ažÔ0;(V Ô0þôÔ0ðöÔ0b(—øÔ0‚IúÔ0XûÔ0+Ñî 1Žñ 1 ¦ó 1‚}ö 1;›ù 1 … 1bË 1‚n 1} 1+S§ 1 ´© 1  ¬ 1’(­ 1‚(x¯ 1( ± 1;(@³ 1õ +1K +1b(Ü +1‚¡ +1° +1+^D1;
+D1+›ºD1 ܼD1 ¿D1’(1ÀD1‚(„ÂD1( ÄD1;(%ÆD1òE1ñE1b(&E1‚Û E1÷!E1+Í|1 GÏ|1 ‹Ñ|1’(œÒ|1‚(üÔ|1( }Ö|1;(pØ|1-}1 +/}1b(P1}1‚3}14}1+Šà´1 ¸â´1 ìä´1’(æ´1‚(eè´1( æé´1;(×ë´1o@µ1aBµ1b(¤Dµ1‚ZFµ1gGµ1+ròì1 ³ôì1 úöì1’(øì1‚(Xúì1( Ùûì1;(Ûýì1„Rí1zTí1b(!Ví1‚ÙWí1èXí1+[L$2O$2 &Q$2‚çS$2;
+W$2 m`$2b³c$2‚Ze$2kf$2+2%2 ‘%2  %2’(H %2‚(§%2( H%2;([%2úg%2>j%2b(Ák%2‚€m%2n%2+èd\2;‹g\2+%]2 j]2 ­]2’(Ò]2‚(% ]2( À!]2;(º#]2Éx]2Íz]2b(}]2‚¼~]2É]2+Ý*•2 -•2 c/•2’(Š0•2‚(ê2•2( l4•2;(]6•2óŠ•2匕2b((•2‚Ր•2䑕2+a>Í2 “@Í2 ËBÍ2’(ãCÍ2‚(BFÍ2( ÄGÍ2;(µIÍ2\žÍ2M Í2b(¢Í2‚G¤Í2T¥Í2+ÊQ3 T3 RV3’(nW3‚(ÁY3( C[3;(8]3å±3׳3b(~µ3‚0·3?¸3+Hª<3 ­<3 !¯<3‚õ±<3;µ<3 |¾<3bÂÁ<3‚eÃ<3tÄ<3+;d=3 œf=3 óh=3’(j=3‚(`l=3( üm=3;((p=3Æ=3]È=3b(îÉ=3‚³Ë=3ÂÌ=3+Ãt3;¤Åt3+>vu3 xu3 ½zu3’(Ô{u3‚('~u3( Âu3;(ȁu3•Öu3”Øu3b(ÉÚu3‚~Üu3šÝu3+Š­3 UŒ­3 ™Ž­3’(ª­3‚(
+’­3( ‹“­3;(~•­3ê­3 ì­3b(Nî­3‚ð­3ñ­3+œå3 Kžå3  å3’(—¡å3‚(ø£å3( y¥å3;(j§å3üå3óýå3b(6æ3‚ìæ3ùæ3+o¯4 °±4 ÷³4’(µ4‚(U·4( Ö¸4;(غ44w4b(4‚Ö4å4+èU4¥
+U4 ± U4‚rU4;‘U4 U4bKU4‚î U4ý!U4+ºÁU4 ÄU4 TÆU4’(~ÇU4‚(ÝÉU4( ~ËU4;(…ÍU4*#V4m%V4b(ð&V4‚¯(V4¾)V4+ 4;»"4+Åԍ4 
+׍4 Mٍ4’(rڍ4‚(Å܍4( `ލ4;(Zà4Z5Ž4[7Ž4b(9Ž4‚J;Ž4W<Ž4+mçÅ4 ªéÅ4 óëÅ4’(íÅ4‚(zïÅ4( üðÅ4;(ñòÅ4ŽGÆ4€IÆ4b(ÃKÆ4‚uMÆ4„NÆ4+üúý4 .ýý4 fÿý4’(~þ4‚(Ýþ4( _þ4;(Tþ4[þ4]þ4b(F_þ4‚ý`þ4
+bþ4+ +65 R65 65’(¹65‚( 65( Ž65;(ƒ65+m65o65b(Äp65‚vr65…s65+þfm5»im5 Ókm5‚ªnm5;Èqm5 /|m5bum5‚m5'‚m5+€n5 á!n5 8$n5’(L%n5‚(¥'n5( A)n5;(n+n5"n5xƒn5b( …n5‚Άn5݇n5+‹¥5;.‚¥5+È2¦5  5¦5 G7¦5’(^8¦5‚(±:¦5( L<¦5;(R>¦5“¦5•¦5b(S—¦5‚™¦5$š¦5+3EÞ5 tGÞ5 ¸IÞ5’(ÉJÞ5‚()MÞ5( ªNÞ5;(PÞ5I¥Þ5:§Þ5b(}©Þ5‚4«Þ5C¬Þ5+·X6 åZ6 ]6’(1^6‚(’`6( b6;(d6œ¸6Žº6b(Ѽ6‚‡¾6”¿6+ŸjN6 àlN6 'oN6’(2pN6‚(…rN6( tN6;(vN6±ÊN6§ÌN6b(NÎN6‚ÐN6ÑN6+ˆÄ…6IDž6 UɅ6‚̅6;7υ6 šØ…6bëۅ6‚ŽÝ…6Þ…6+_~†6 ¼€†6 ƒ†6’(+„†6‚(Š††6( ,ˆ†6;(WŠ†6ö߆69â†6b(¼ã†6‚{å†6Šæ†6+äܽ6;‡ß½6+‘‘¾6 ֓¾6 –¾6’(%—¾6‚(ƒ™¾6(  ›¾6;(%¾6*ò¾6Oô¾6b(„ö¾6‚>ø¾6Zù¾6+_¤ö6 Œ¦ö6 í¨ö6’(ªö6‚(»¬ö6( M®ö6;(B°ö6Ã÷6Ü÷6b( ÷6‚Ñ
+÷6à ÷6+ñ¶.7 #¹.7 h».7’(Œ¼.7‚(ë¾.7( lÀ.7;(_Â.7Ë/7¼/7b(ÿ/7‚¶/7Ã/7+ÎÈf7  Ëf7 VÍf7’(rÎf7‚(ÅÐf7( GÒf7;(<Ôf7Ã(g7µ*g7b(\,g7‚.g7/g7+–"ž7S%ž7 k'ž7‚8*ž7;T-ž7 Ï6ž7b:ž7‚Å;ž7Ô<ž7+~ܞ7 ßޞ7 6áž7’(Jâž7‚(£äž7( Cæž7;(pèž7 >Ÿ7^@Ÿ7b(áAŸ7‚¦CŸ7µDŸ7+;Ö7;¥=Ö7+?îÖ7 €ðÖ7 ¾òÖ7’(ÕóÖ7‚((öÖ7( Ã÷Ö7;(ÉùÖ7{N×7wP×7b(¬R×7‚aT×7}U×7+ô8 58 y8’(Š8‚(ê 8( k 8;(^ +8Èa8¹c8b(f8‚·g8Æh8+ÑG8 ÿG8 3G8’(KG8‚(¬G8( -G8;(G8„sG8vuG8b(¹wG8‚oyG8|zG8+ò&8 3)8 z+8’(…,8‚(Ø.8( Y08;([28ã†8و8b(€Š8‚8Œ8G8+º€¶8wƒ¶8 ƒ…¶8‚Nˆ¶8;m‹¶8 ה¶8b˜¶8‚À™¶8Ϛ¶8+—:·8 ô<·8 :?·8’(d@·8‚(ÃB·8( dD·8;(ŠF·8ü›·8?ž·8b(Ÿ·8‚¡·8¢·8+ê˜î8;›î8+—Mï8 ÜOï8 Rï8’(DSï8‚(—Uï8( 2Wï8;(,Yï8ù­ï8ý¯ï8b(2²ï8‚ì³ï8ù´ï8+ +`'9 Jb'9 “d'9’(ºe'9‚(h'9( œi'9;(k'9#À'9Â'9b(XÄ'9‚Æ'9Ç'9+&r_9 Xt_9 v_9’(¨w_9‚(z_9( ‰{_9;(z}_91Ò_9"Ô_9b(eÖ_9‚Ø_9)Ù_9+Ÿ…—9 ܇—9 'Š—9’(C‹—9‚(–—9( —9;( ‘—9°å—9¢ç—9b(Ié—9‚ûê—9
+ì—9+ÞÎ9ÐàÎ9 èâÎ9‚µåÎ9;ÑèÎ9 ¬òÎ9bòõÎ9‚•÷Î9¤øÎ9+ú—Ï9 [šÏ9 «œÏ9’(¿Ï9‚( Ï9( ´¡Ï9;(á£Ï9¡ùÏ9öûÏ9b(‡ýÏ9‚LÿÏ9[Ð9+£ö:;Hù:+R«: “­: ѯ:’(è°:‚(;³:( Ö´:;(ܶ:ª :¦ +:b(Û:‚:¬:+¸½?: ù¿?: =Â?:’(NÃ?:‚(®Å?:( /Ç?:;("É?:Î@:¿@:b("@:‚¹#@:È$@:+<Ñw: jÓw: žÕw:’(¶Öw:‚(Ùw:( ˜Úw:;(‰Üw:!1x:3x:b(V5x:‚ 7x:8x:+$ã¯: eå¯: ¬ç¯:’(·è¯:‚(
+ë¯:( ‹ì¯:;(î¯:%C°:E°:b(ÂF°:‚zH°:‰I°:+ý<ç:¾?ç: ÊAç:‚‹Dç:;ªGç: Qç:bZTç:‚ýUç: Wç:+Ôöç: (ùç: nûç:’(˜üç:‚(÷þç:( ˜è:;(Ÿè:7Xè:|Zè:b(ÿ[è:‚¾]è:Í^è:+'U;;ÊW;+c ; ¨
+ ; ë ;’( ;‚(i ;(  ;;(þ ;i ;k ;b(Jm ;‚o ;p ;+'X; dX; ­X;’(Ô X;‚(4#X;( ¶$X;;(«&X;S{X;E}X;b(ˆX;‚:X;I‚X;+Á.; ó0; +3;’(C4;‚(¢6;( $8;;(:;Ǝ;·;b(ú’;‚±”;¾•;+É@È; CÈ; QEÈ;’(mFÈ;‚(ÀHÈ;( BJÈ;;(3LÈ;Ú È;Ì¢È;b(s¤È;‚%¦È;4§È;+­šÿ;jÿ; }Ÿÿ;‚J¢ÿ;;f¥ÿ; Û®ÿ;b!²ÿ;‚ijÿ;Ó´ÿ;+T< ðV< GY<’([Z<‚(´\<( P^<;(}`<@¶<•¸<b(&º<‚ë»<þ¼<+5³7<;ص7<+qf8< ²h8< ðj8<’(l8<‚(Zn8<( õo8<;(ûq8<ÉÆ8<ÅÈ8<b(úÊ8<‚¯Ì8<ËÍ8<+Bzp< ƒ|p< Ç~p<’(Øp<‚(8‚p<( ¹ƒp<;(¬…p<HÚp<9Üp<b(|Þp<‚3àp<Báp<+KŒ¨< yŽ¨< ­¨<’(ő¨<‚(&”¨<( §•¨<;(˜—¨</ì¨<!î¨<b(dð¨<‚ò¨<'ó¨<+Ÿà< Þ¡à< %¤à<’(0¥à<‚(ƒ§à<( ©à<;(«à<Àÿà<¶á<b(]á<‚á<$á<+'ø=äú= ëü=‚¶ÿ=;Õ= 9 =b=‚"=1=+þ±= [´= ¡¶=’(Ë·=‚(*º=( Ë»=;(ñ½=“=Ø=b([=‚=J=+‚P=;%P=+/ÅP= tÇP= ·ÉP=’(ÜÊP=‚(/ÍP=( ÊÎP=;(ÄÐP=¾%Q=Â'Q=b(÷)Q=‚±+Q=¾,Q=+×׈= ڈ= ]܈=’(„݈=‚(ä߈=( fáˆ=;(Wãˆ=í7‰=ß9‰=b("<‰=‚Ï=‰=Þ>‰=+ðéÀ= "ìÀ= ZîÀ=’(rïÀ=‚(ÑñÀ=( SóÀ=;(DõÀ=ûIÁ=ìKÁ=b(/NÁ=‚æOÁ=óPÁ=+iýø= ¦ÿø= ñù=’( +ù=‚(`ù=( ãù=;(Øù=]ù=q_ù=b(aù=‚Êbù=Ùcù=+âU0>£X0> »Z0>‚]0>;«`0> j0>b\m0>‚ÿn0>p0>+Õ1> 61> 1>’(¡1>‚(ú1>( –1>;(Ç1>€q1>Õs1>b(fu1>‚+w1>:x1>+unh>;qh>+"#i> c%i> ¡'i>’(¸(i>‚( +i>( ¦,i>;(¬.i>yƒi>x…i>b(­‡i>‚b‰i>~Ši>+5¡> Î7¡> :¡>’(#;¡>‚(ƒ=¡>( ?¡>;(÷@¡>£•¡>”—¡>b(י¡>‚Ž›¡>œ¡>+IÙ> ?KÙ> sMÙ>’(‹NÙ>‚(ìPÙ>( mRÙ>;(^TÙ>û¨Ù>íªÙ>b(0­Ù>‚æ®Ù>ó¯Ù>+þZ? ?]? †_?’(‘`?‚(äb?( ed?;(gf?»?ö¼?b(¾?‚VÀ?eÁ?+×´H?”·H? ›¹H?‚\¼H?;{¿H? ïÈH?b5ÌH?‚ØÍH?çÎH?+£nI? ÷pI? =sI?’(gtI?‚(ÆvI?( gxI?;(pzI?"ÐI?gÒI?b(êÓI?‚©ÕI?¸ÖI?+̀?;µÏ€?+¿? „? G†?’(l‡?‚(¿‰?( Z‹?;(T?jâ?kä?b( æ?‚Zè?gé?+}”¹? º–¹? ™¹?’(*š¹?‚(Šœ¹?(  ž¹?;( ¹?žô¹?ö¹?b(Óø¹?‚…ú¹?”û¹?+¡¦ñ? Ó¨ñ?  «ñ?’(#¬ñ?‚(‚®ñ?( °ñ?;(ù±ñ?¦ò?—ò?b(Ú
+ò?‚‘ ò?ž +ò?+º)@ Q¼)@ œ¾)@’(¸¿)@‚( Â)@( Ã)@;(~Å)@%*@*@b(¾*@‚p*@ *@+ˆa@Ea@ Xa@‚0a@;La@ ¶&a@bü)a@‚Ÿ+a@®,a@+uÌa@ ÖÎa@ -Ña@’(AÒa@‚(šÔa@( 6Öa@;(gØa@+.b@€0b@b(2b@‚Ö3b@å4b@+ +™@;Ã-™@+Íߙ@ â™@ Lä™@’(cå™@‚(¶ç™@( Qé™@;(Wë™@$@š@#Bš@b(XDš@‚ +Fš@)Gš@+8òÑ@ yôÑ@ ½öÑ@’(Î÷Ñ@‚(.úÑ@( ¯ûÑ@;(¢ýÑ@>RÒ@/TÒ@b(rVÒ@‚)XÒ@8YÒ@+A
+A o
+A £
+A’(»
+A‚(
+A( 
+A;(Ž
+A%d
+Af
+Ab(Zh
+A‚j
+Ak
+A+“BA ÔBA BA’(&BA‚(yBA( ú BA;(ü"BA¶wBA¬yBAb(S{BA‚ }BA~BA+pyAÚryA átyA‚¢wyA;ÅzyA )„yAbo‡yA‚‰yA!ŠyA+î)zA K,zA ‘.zA’(»/zA‚(2zA( »3zA;(á5zAƒ‹zAȍzAb(KzA‚
+‘zA’zA+sˆ±A;‹±A+ =²A e?²A ¨A²A’(ÍB²A‚( E²A( »F²A;(µH²A®²A²Ÿ²Ab(硲A‚¡£²A®¤²A+ÂOêA ÿQêA HTêA’(oUêA‚(ÏWêA( QYêA;(B[êAدêAʱêAb( +´êA‚ºµêAɶêA+Fc"B xe"B °g"B’(Èh"B‚('k"B( ©l"B;(šn"BQÃ"BBÅ"Bb(…Ç"B‚<É"BIÊ"B+TuZB ‘wZB ÜyZB’(øzZB‚(K}ZB( Í~ZB;(¾€ZBeÕZBW×ZBb(þØZB‚°ÚZB¿ÛZB+8ϑBõёB  +ԑB‚Ú֑B;öّB nã‘Bb´æ‘B‚Wè‘Bfé‘B+¯‡’B Š’B gŒ’B’({’B‚(ԏ’B( p‘’B;(“’BZé’B¯ë’Bb(@í’B‚ï’Bð’B+ÀçÉB;cêÉB+üšÊB =ÊB {ŸÊB’(’ ÊB‚(å¢ÊB( €¤ÊB;(†¦ÊBYûÊBXýÊBb(ÿÊB‚BËB^ËB+m­C ®¯C ò±C’(³C‚(cµC( ä¶C;(Û¸C‰ +CzCb(½C‚tCƒC+÷À:C %Ã:C YÅ:C’(qÆ:C‚(ÒÈ:C( SÊ:C;(DÌ:Cì ;CÞ";Cb(!%;C‚×&;Cä';C+ïÒrC 0ÕrC w×rC’(‚ØrC‚(ÕÚrC( VÜrC;(XÞrCð2sCæ4sCb(6sC‚E8sCT9sC+È,ªC…/ªC Œ1ªC‚M4ªC;p7ªC å@ªCb+DªC‚ÎEªCÝFªC+™æªC íèªC 3ëªC’(]ìªC‚(¼îªC( ]ðªC;(fòªCýG«CBJ«Cb(ÅK«C‚„M«C“N«C+ìDâC;GâC+™ùâC ÞûâC !þâC’(FÿâC‚(™ãC( 4ãC;(.ãCDZãCE\ãCb(z^ãC‚4`ãCAaãC+W D ”D ÝD’(D‚(dD( æD;(×DslDenDb(¨pD‚ZrDisD+vSD ¨ SD à"SD’(ø#SD‚(W&SD( Ù'SD;(Î)SD{~SDl€SDb(¯‚SD‚f„SDs…SD+é1‹D &4‹D q6‹D’(7‹D‚(à9‹D( b;‹D;(S=‹Dú‘‹D쓋Db(“•‹D‚E—‹DT˜‹D+]ŠÂDÂD -ÂD‚’ÂD;!•ÂD ‹žÂDbÑ¡ÂD‚t£ÂDƒ¤ÂD+JDÃD «FÃD IÃD’(JÃD‚(oLÃD(  NÃD;(<PÃD¦ÃDU¨ÃDb(æ©ÃD‚««ÃDº¬ÃD+õ¢úD;˜¥úD+¢WûD ãYûD !\ûD’(8]ûD‚(‹_ûD( &aûD;(,cûDù·ûDø¹ûDb(-¼ûD‚â½ûDþ¾ûD+ +j3E Nl3E ’n3E’(£o3E‚(r3E( „s3E;(wu3EÊ3EÌ3Eb(GÎ3E‚þÏ3E +Ñ3E+}kE ¯kE ãkE’(û‚kE‚(\…kE( ݆kE;(ΈkEeÝkEWßkEb(šákE‚PãkE]äkE+h£E ©‘£E ð“£E’(û”£E‚(N—£E( Ϙ£E;(њ£E‹ï£Eñ£Eb((ó£E‚àô£Eïõ£E+béÚEìÚE +îÚE‚ìðÚE; ôÚE oýÚEbµÛE‚XÛEgÛE+áÛE  ¤ÛE f¦ÛE’(§ÛE‚(ï©ÛE( «ÛE;(¶­ÛEXÜEÜEb( ÜE‚ßÜEî ÜE+¸F;[F+õ´F :·F }¹F’(¢ºF‚(õ¼F( ¾F;(ŠÀFƒF‡Fb(¼F‚vFƒF+—ÇKF ÔÉKF ÌKF’(DÍKF‚(¤ÏKF( &ÑKF;(ÓKF­'LFŸ)LFb(â+LF‚-LFž.LF+ۃF M݃F …߃F’(àƒF‚(üâƒF( ~äƒF;(oæƒF&;„F=„Fb(Z?„F‚A„FB„F+)í»F fï»F ±ñ»F’(Íò»F‚( õ»F( ¢ö»F;(“ø»F?M¼F1O¼Fb(ØP¼F‚ŠR¼F™S¼F+GóFÐIóF ãKóF‚±NóF;ÑQóF ;[óFb^óF‚$`óF3aóF+úôF [ôF ²ôF’(ÆôF‚(% ôF( Á
+ôF;(ò ôF°bôFeôFb(–fôF‚[hôFjiôF+¥_+G;Hb+G+â,G #,G a,G’(x,G‚(Ë,G( f,G;(l,GJs,GFu,Gb({w,G‚0y,GLz,G+Ã&dG )dG H+dG’(Y,dG‚(¹.dG( :0dG;(-2dGنdGʈdGb( +‹dG‚ČdGӍdG+Ü8œG 
+;œG >=œG’(V>œG‚(·@œG( 8BœG;()DœGÁ˜œG³šœGb(öœœG‚¬žœG¹ŸœG+/LÔG pNÔG ·PÔG’(ÂQÔG‚(TÔG( ˜UÔG;(˜WÔG0¬ÔG&®ÔGb(ͯÔG‚…±ÔG”²ÔG+—¤ HT§ H [© H‚¬ H;;¯ H ¯¸ Hbõ» H‚˜½ H§¾ H+c^ H ·` H ýb H’('d H‚(†f H( 'h H;(0j HÌ¿ H Hb(”à H‚SÅ HbÆ H+¼¼CH;_¿CH+iqDH ®sDH ñuDH’(wDH‚(iyDH( {DH;(þ|DHÒDHÔDHb(JÖDH‚ØDHÙDH+'„|H d†|H ­ˆ|H’(ԉ|H‚(4Œ|H( ¶|H;(«|HHä|H:æ|Hb(}è|H‚/ê|H>ë|H+K–´H }˜´H µš´H’(͛´H‚(,ž´H( ®Ÿ´H;(£¡´HPö´HAø´Hb(„ú´H‚;ü´HHý´H+¾©ìH û«ìH F®ìH’(b¯ìH‚(µ±ìH( 7³ìH;((µìHÏ íHÁ íHb(h +íH‚íH)íH+2$Iï$I $I‚Ú $I;ö $I `$Ib¦$I‚I$IX$I+¼$I €¾$I ×À$I’(ëÁ$I‚(DÄ$I( àÅ$I;(È$IÕ%I* %Ib(»!%I‚€#%I$%I+Ê\I;m\I+wÏ\I ¸Ñ\I öÓ\I’( +Õ\I‚(`×\I( ûØ\I;(Û\IÎ/]IÍ1]Ib(4]I‚·5]IÓ6]I+âá”I #ä”I gæ”I’(xç”I‚(Øé”I( Yë”I;(Lí”IèA•IÙC•Ib(F•I‚ÓG•IâH•I+VõÌI „÷ÌI ¸ùÌI’(ÐúÌI‚(1ýÌI( ²þÌI;(£ÍI:UÍI,WÍIb(oYÍI‚%[ÍI2\ÍI+=J ~ J Å J’(Ð J‚(#J( ¤J;(¦J`gJViJb(ýjJ‚µlJÄmJ+7a<Jôc<J f<J‚Áh<J;àk<J Du<JbŠx<J‚-z<J<{<J+ =J f=J ¬=J’(Ö =J‚(5#=J( Ö$=J;(ü&=Jž|=Jã~=Jb(f€=J‚%‚=J4ƒ=J+ytJ;0|tJ+Ê,uJ /uJ R1uJ’(w2uJ‚(Ê4uJ( e6uJ;(_8uJXuJ\uJb(‘‘uJ‚K“uJ]”uJ+×@­J C­J ]E­J’(„F­J‚(äH­J( fJ­J;(WL­Jò ­J梭Jb()¥­J‚Ö¦­J姭J+ûRåJ -UåJ eWåJ’(}XåJ‚(ÜZåJ( ^\åJ;(O^åJ³åJ÷´åJb(@·åJ‚÷¸åJºåJ+eK LgK —iK’(³jK‚(mK( ˆnK;(}pK%ÅKÇKb(¾ÈK‚pÊKËK+ø¾TKµÁTK ÈÃTK‚•ÆTK;±ÉTK 3ÓTKbyÖTK‚ØTK+ÙTK+ÚxUK ;{UK ‹}UK’(Ÿ~UK‚(ø€UK( ”‚UK;(Á„UKzÚUKÏÜUKb(`ÞUK‚%àUK4áUK+o׌K;ڌK+ŒK ]ŽK ›K’(²‘K‚(”K(  •K;(¦—KtìKpîKb(¥ðK‚ZòKvóK+‚žÅK àÅK £ÅK’(¤ÅK‚(x¦ÅK( ù§ÅK;(ì©ÅK˜þÅK‰ÆKb(ÌÆK‚ƒÆK’ÆK+›°ýK ɲýK ý´ýK’(¶ýK‚(v¸ýK( ÷¹ýK;(è»ýK€þKrþKb(µþK‚kþKxþK+îÃ5L /Æ5L vÈ5L’(É5L‚(ÔË5L( UÍ5L;(WÏ5Lï#6Lå%6Lb(Œ'6L‚D)6LS*6L+VmLmL !mL‚å#mL;'mL ¢1mLbó4mL‚–6mL¥7mL+-ÖmL ØmL ÆÚmL’(ðÛmL‚(OÞmL( ðßmL;( âmL¬7nLñ9nLb(t;nL‚3=nLB>nL+œ4¥L;?7¥L+Ié¥L Žë¥L Æí¥L’(Ýî¥L‚(;ñ¥L( Øò¥L;(Ýô¥LÝI¦LL¦Lb(7N¦L‚ñO¦L +Q¦L+üÝL DþÝL ¥ÞL’(ÌÞL‚(sÞL( ÞL;(úÞLp\ÞL‰^ÞLb(Ì`ÞL‚ybÞLˆcÞL+žM ÐM M’(9M‚(˜M( M;( MxnMipMb(¬rM‚ctMpuM+æ!NM #$NM n&NM’(Š'NM‚(Ý)NM( _+NM;(T-NMʁNM¼ƒNMb(c…NM‚‡NM$ˆNM+ž{…M[~…M n€…M‚>ƒ…M;\†…M Ə…Mb “…M‚¼”…M˕…M+4†M v6†M Í8†M’(á9†M‚(:<†M( Ú=†M;(@†M‘•†M旆Mb(i™†M‚.›†M=œ†M+ù“½M;œ–½M+6G¾M wI¾M µK¾M’(ÌL¾M‚(O¾M( ºP¾M;(ÀR¾Mr§¾Mn©¾Mb(£«¾M‚X­¾Mt®¾M+ëZöM ,]öM p_öM’(`öM‚(áböM( bdöM;(UföM¿ºöM°¼öMb(¿öM‚¿ÀöMÎÁöM+Âl.N ðn.N $q.N’(<r.N‚(t.N( v.N;(x.NuÌ.NgÎ.Nb(ªÐ.N‚`Ò.NmÓ.N+ãfN $‚fN k„fN’(v…fN‚(ɇfN( J‰fN;(L‹fNÔßfNÊáfNb(qãfN‚)åfN8æfN+¬ÙNiܝN uޝN‚6áN;UäN ¾íNbñN‚§òN¶óN+ +’žN j”žN °–žN’(ڗžN‚(9šžN( ڛžN;(žžNpóžNµõžNb(8÷žN‚÷øžNúžN+ÐñÕN;sôÕN+ +¥ÖN R§ÖN •©ÖN’(ºªÖN‚( +­ÖN( ®®ÖN;(¨°ÖNu×Ny×Nb(® ×N‚h ×Nu ×N+ù¸O 6»O ½O’(¦¾O‚(ÁO( ˆÂO;(yÄOOOb(VO‚O O+(ËFO ZÍFO ’ÏFO’(ªÐFO‚( ÓFO( ‹ÔFO;(|ÖFO3+GO$-GOb(g/GO‚1GO+2GO+6Ý~O sß~O ¾á~O’(Úâ~O‚(-å~O( ¯æ~O;( è~OG=O9?Ob(à@O‚’BO¡CO+7¶O×9¶O ê;¶O‚»>¶O;ÙA¶O NK¶Ob”N¶O‚7P¶OFQ¶O+ñ¶O có¶O ³õ¶O’(Çö¶O‚( ù¶O( ¼ú¶O;(éü¶O¢R·O÷T·Ob(V·O‚RX·OaY·O+—OîO;:RîO+ÓïO ïO RïO’(iïO‚(¼
+ïO( W ïO;(]ïO+cïO'eïOb(\gïO‚iïO-jïO+¤'P å'P )'P’(:'P‚(š'P(  'P;("'Pºv'P«x'Pb(îz'P‚¥|'P´}'P+½(_P ë*_P -_P’(7._P‚(˜0_P( 2_P;(
+4_P¢ˆ_P”Š_Pb(׌_P‚Ž_Pš_P+<—P Q>—P ˜@—P’(£A—P‚(öC—P( wE—P;(yG—Pœ—Pž—Pb(®Ÿ—P‚f¡—Pu¢—P+x”ÎP5—ÎP <™ÎP‚œÎP;&ŸÎP ¨ÎPbÖ«ÎP‚y­ÎPˆ®ÎP+ONÏP £PÏP éRÏP’(TÏP‚(rVÏP( XÏP;(ZÏP³¯ÏPø±ÏPb({³ÏP‚:µÏPI¶ÏP+¢¬Q;E¯Q+OaQ ”cQ ×eQ’(üfQ‚(OiQ( êjQ;(älQúÁQûÃQb(0ÆQ‚êÇQ÷ÈQ+ +t?Q Jv?Q “x?Q’(ºy?Q‚(|?Q( œ}?Q;(?Q)Ô?QÖ?Qb(^Ø?Q‚Ú?QÛ?Q+—‡wQ ɉwQ ŒwQ’(wQ‚(xwQ( úwQ;(ï’wQœçwQéwQb(ÐëwQ‚‡íwQ”îwQ+Ÿ™¯Q ܛ¯Q 'ž¯Q’(CŸ¯Q‚(–¡¯Q( £¯Q;( ¥¯Q°ù¯Q¢û¯Qb(Iý¯Q‚ûþ¯Q
+°Q+ƒóæQ@öæQ XøæQ‚%ûæQ;AþæQ ù/çQ‚ IçQ-KçQ ,RçQb´UçQ‚ NYçQ  Å[çQ ã\çQ©mçQb ÿwçQ‚{çQ>|çQ+—­çQ ´çQ øçQ’(÷¹çQ‚(ˆ¼çQ( –¾çQ;( ÁçQ¿èQT#èQb(t%èQ‚='èQÀ(èQ+/ R;XR+ò¿R MÂR ”ÄR’(¤ÅR‚(FÈR( áÉR;(åËRØ Rë" Rb(R% R‚' R:( R+ÓWR HÕWR œ×WR’(¬ØWR‚( ÛWR( ÜWR;(‚ÞWR‘3XRƒ5XRb(Æ7XR‚y9XRˆ:XR+”åR ÆçR ýéR’(ëR‚(uíR( öîR;(ÜðR…ERwGRb(¹IR‚lKRyLR+Œ÷ÇR ÁùÇR üÇR’( ýÇR‚(yÿÇR( úÈR;(úÈR¯WÈR¥YÈRb(L[ÈR‚]ÈR^ÈR+†QÿRUÿR šXÿR‚k[ÿR;‡^ÿR âhÿRb7lÿR‚ìmÿRûnÿR+Ð
+S # +S eS’(’S‚(S( ±S;(èSºlSñnSb(tpS‚*rS9sS+k7S;´m7S+M8S   8S ã"8S’($8S‚(c&8S( þ'8S;(ç)8S÷~8Sû€8Sb(=ƒ8S‚û„8S†8S+1pS M3pS ©5pS’(¹6pS‚(9pS( š:pS;(<pS<‘pS.“pSb(q•pS‚$—pS3˜pS+?C¨S qE¨S ©G¨S’(ÁH¨S‚( K¨S( ¢L¨S;(ˆN¨S.£¨S"¥¨Sb(d§¨S‚©¨S(ª¨S+¢VàS ×XàS [àS’(6\àS‚(‰^àS(  `àS;( bàSº¶àS©¸àSb(PºàS‚¼àS½àS+¯TÔ±T ɳT‚¤¶T;ĹT ´ÃTböÆT‚«ÈTºÉT+ïhT QkT •mT’(©nT‚(qT( °rT;(ßtTƒÊTºÌTb(<ÎT‚òÏTÑT+oÇOT;ÊOT+|PT s~PT ©€PT’(ÀPT‚(„PT( µ…PT;(©‡PT‘ÜPTÞPTb(ÒàPT‚âPT¬ãPT+¥ŽˆT ␈T 6“ˆT’(F”ˆT‚(¦–ˆT( '˜ˆT;(šˆTÆîˆT¸ðˆTb(ûòˆT‚®ôˆT½õˆT+É ÀT û¢ÀT 2¥ÀT’(J¦ÀT‚(ª¨ÀT( +ªÀT;(¬ÀTÁTÁTb(ÑÁT‚„ÁT‘ÁT+ ´øT @¶øT ‡¸øT’(Ÿ¹øT‚(ò»øT( s½øT;(u¿øT(ùTùTb(ÁùT‚tùTƒùT+Š 0UG0U B0U‚0U;80U — 0Ubì#0U‚¡%0U°&0U+cÆ0U ÅÈ0U Ë0U’(&Ì0U‚(Î0U( Ð0U;(>Ò0Uò'1U)*1Ub(¬+1U‚b-1Uq.1U+Þ$hU;ƒ'hU+ÙhU ÓÛhU ÞhU’(:ßhU‚(áhU( (ãhU;(åhU:iU<iUb(\>iU‚@iU6AiU+/ì U lî U Èð U’(ðñ U‚(Pô U( Ñõ U;(Ä÷ UfL¡UXN¡Ub(›P¡U‚NR¡U]S¡U+ÔÿØU ÙU >ÙU’(VÙU‚(µÙU( 7 ÙU;( ÙUÃ_ÙU·aÙUb(ùcÙU‚¬eÙU¹fÙU+ÌV V HV’(`V‚(³V( 5V;(5VäqVÓsVb(zuV‚-wV<xV+¶kHVsnHV zpHV‚KsHV;ivHV ÙHVbƒHV‚ЄHV߅HV+”%IV ö'IV :*IV’(N+IV‚(­-IV( U/IV;(„1IVI‡IV€‰IVb(‹IV‚¹ŒIVȍIV+6„€V;ۆ€V+t7V º9V ó;V’(
+=V‚(]?V( ø@V;(îBVחVәVb(œV‚ӝVVóǒVϒV ±Ñ’V_ӒV‚ÝؒV –ð’V‚Dö’VGø’Vb6þ’V‚ øÿ’V  ß“V ê“VÞ“Vø“V >7“V‚ *“V  )„“V #ˆ“V z›“V «œ“V~ “Vb p¥“V‚Œ¨“V ½ª“Vm¬“V0¶“V
\ No newline at end of file
Index: demos/branches/xen/newtrace/utils/test.pwc
===================================================================
--- demos/branches/xen/newtrace/utils/test.pwc (nonexistent)
+++ demos/branches/xen/newtrace/utils/test.pwc (revision 1684)
@@ -0,0 +1,10629 @@
+0 24305936302 256 367483
+9 24305936577 256 0
+9 24305936918 264 1
+9 24305937215 272 2
+9 24305937550 280 3
+9 24305937856 288 4
+5 24306061849 296 5
+6 24306065670 296
+4 24306079938 296
+8 24306119945 296
+4 24306122948 256
+7 24306144840 256
+4 24306149927 264
+2 24309691444 0
+6 24309695081 280
+3 24309700697 280
+8 24309710296 280
+4 24309711468 264
+2 24309738764 0
+3 24309743114 296
+8 24309767392 296
+4 24309768135 264
+2 24313371544 0
+3 24313372582 264
+2 24313413011 0
+3 24313416059 296
+8 24313438977 296
+4 24313439696 264
+2 24317087616 0
+3 24317090559 296
+8 24317113289 296
+4 24317114015 264
+2 24320762661 0
+3 24320765576 296
+8 24320788250 296
+4 24320788953 264
+2 24324437255 0
+3 24324440220 296
+8 24324462781 296
+4 24324463489 264
+2 24328064791 0
+6 24328065547 280
+3 24328067603 280
+8 24328070958 280
+4 24328071648 264
+2 24328112075 0
+3 24328115188 296
+8 24328138099 296
+4 24328138817 264
+2 24331741191 0
+3 24331741861 264
+2 24331787070 0
+3 24331790129 296
+8 24331812934 296
+4 24331813645 264
+2 24335461939 0
+3 24335464894 296
+8 24335487561 296
+4 24335488281 264
+2 24339136566 0
+3 24339139466 296
+8 24339162171 296
+4 24339162879 264
+2 24342811540 0
+3 24342814477 296
+8 24342837012 296
+4 24342837717 264
+2 24346438652 0
+6 24346439353 280
+3 24346441425 280
+8 24346444700 280
+4 24346445390 264
+2 24346486266 0
+3 24346489483 296
+8 24346512440 296
+4 24346513164 264
+2 24350114794 0
+3 24350115469 264
+2 24350161047 0
+3 24350164012 296
+8 24350186748 296
+4 24350187469 264
+2 24353836114 0
+3 24353839034 296
+8 24353861713 296
+4 24353862423 264
+2 24357510719 0
+3 24357513613 296
+8 24357536269 296
+4 24357536976 264
+2 24361185637 0
+3 24361188558 296
+8 24361211120 296
+4 24361211830 264
+2 24364813129 0
+6 24364813834 280
+3 24364815864 280
+8 24364819113 280
+4 24364819815 264
+2 24364860336 0
+3 24364863427 296
+8 24364886247 296
+4 24364886965 264
+2 24368489353 0
+3 24368490028 264
+2 24368535238 0
+3 24368538202 296
+8 24368561017 296
+4 24368561743 264
+2 24372210024 0
+3 24372213082 296
+8 24372235784 296
+4 24372236484 264
+2 24375885152 0
+3 24375888117 296
+8 24375910763 296
+4 24375911471 264
+2 24379559768 0
+3 24379562694 296
+8 24379585210 296
+4 24379585915 264
+2 24383187188 0
+6 24383187889 280
+3 24383189939 280
+8 24383193193 280
+4 24383193883 264
+2 24383234780 0
+3 24383237838 296
+8 24383260670 296
+4 24383261394 264
+2 24386863396 0
+3 24386864071 264
+2 24386909649 0
+3 24386912603 296
+8 24386935314 296
+4 24386936035 264
+2 24390584303 0
+3 24390587225 296
+8 24390609886 296
+4 24390610592 264
+2 24394259227 0
+3 24394262120 296
+8 24394284755 296
+4 24394285453 264
+2 24397934096 0
+3 24397937017 296
+8 24397959532 296
+4 24397960238 264
+2 24401561143 0
+6 24401561855 280
+3 24401563893 280
+8 24401567493 280
+4 24401568183 264
+2 24401608734 0
+3 24401611788 296
+8 24401634568 296
+4 24401635286 264
+2 24405237295 0
+3 24405237970 264
+2 24405283548 0
+3 24405286513 296
+8 24405309282 296
+4 24405309993 264
+2 24408958637 0
+3 24408961581 296
+8 24408984268 296
+4 24408984968 264
+2 24412633242 0
+3 24412636147 296
+8 24412658850 296
+4 24412659558 264
+2 24416308188 0
+3 24416311110 296
+8 24416333675 296
+4 24416334380 264
+2 24419935284 0
+6 24419935989 280
+3 24419938045 280
+8 24419941576 280
+4 24419942266 264
+2 24419982887 0
+3 24419985934 296
+8 24420008825 296
+4 24420009549 264
+2 24423611536 0
+3 24423612211 264
+2 24423657789 0
+3 24423660743 296
+8 24423683484 296
+4 24423684205 264
+2 24427332476 0
+3 24427335398 296
+8 24427358095 296
+4 24427358805 264
+2 24431007433 0
+3 24431010326 296
+8 24431033015 296
+4 24431033728 264
+2 24434682352 0
+3 24434685273 296
+8 24434707837 296
+4 24434708543 264
+2 24438309448 0
+6 24438310149 280
+3 24438312177 280
+8 24438315424 280
+4 24438316114 264
+2 24438357017 0
+3 24438360042 296
+8 24438383016 296
+4 24438383734 264
+2 24441985743 0
+3 24441986418 264
+2 24442031996 0
+3 24442034961 296
+8 24442057755 296
+4 24442058466 264
+2 24445706744 0
+3 24445709688 296
+8 24445732381 296
+4 24445733086 264
+2 24449381718 0
+3 24449384628 296
+8 24449407353 296
+4 24449408061 264
+2 24453056328 0
+3 24453059250 296
+8 24453081815 296
+4 24453082520 264
+2 24456683793 0
+6 24456684494 280
+3 24456686554 280
+8 24456689809 280
+4 24456690499 264
+2 24456731395 0
+3 24456734442 296
+8 24456757317 296
+4 24456758041 264
+2 24460360028 0
+3 24460360703 264
+2 24460406281 0
+3 24460409235 296
+8 24460431976 296
+4 24460432697 264
+2 24464080968 0
+3 24464083890 296
+8 24464106598 296
+4 24464107308 264
+2 24467755573 0
+3 24467758466 296
+8 24467781155 296
+4 24467781862 264
+2 24471430492 0
+3 24471433413 296
+8 24471455977 296
+4 24471456683 264
+2 24475057956 0
+6 24475058657 280
+3 24475060685 280
+8 24475063927 280
+4 24475064617 264
+2 24475105526 0
+3 24475108585 296
+8 24475131453 296
+4 24475132171 264
+2 24478734189 0
+3 24478734866 264
+2 24478780076 0
+3 24478783041 296
+8 24478805853 296
+4 24478806564 264
+2 24482455203 0
+3 24482458147 296
+8 24482480834 296
+4 24482481534 264
+2 24486129808 0
+3 24486132708 296
+8 24486155411 296
+4 24486156119 264
+2 24489804749 0
+3 24489807675 296
+8 24489830241 296
+4 24489830946 264
+2 24493432219 0
+6 24493432924 280
+3 24493434996 280
+8 24493438245 280
+4 24493438935 264
+2 24493479469 0
+3 24493482523 296
+8 24493505424 296
+4 24493506148 264
+2 24497108503 0
+3 24497109178 264
+2 24497154388 0
+3 24497157348 296
+8 24497180086 296
+4 24497180807 264
+2 24500829075 0
+3 24500831997 296
+8 24500854705 296
+4 24500855415 264
+2 24504504043 0
+3 24504506936 296
+8 24504529625 296
+4 24504530332 264
+2 24508178962 0
+3 24508181883 296
+8 24508204447 296
+4 24508205153 264
+2 24511806058 0
+6 24511806759 280
+3 24511808787 280
+8 24511812034 280
+4 24511812724 264
+2 24511853627 0
+3 24511856648 296
+8 24511879494 296
+4 24511880212 264
+2 24515482221 0
+3 24515482902 264
+2 24515528480 0
+3 24515531445 296
+8 24515554239 296
+4 24515554950 264
+2 24519203228 0
+3 24519206176 296
+8 24519228870 296
+4 24519229575 264
+2 24522878207 0
+3 24522881111 296
+8 24522903837 296
+4 24522904545 264
+2 24526553175 0
+3 24526556101 296
+8 24526578667 296
+4 24526579372 264
+2 24530180276 0
+6 24530180977 280
+3 24530183038 280
+8 24530186286 280
+4 24530186976 264
+2 24530227879 0
+3 24530230926 296
+8 24530253788 296
+4 24530254512 264
+2 24533856500 0
+3 24533857175 264
+2 24533902753 0
+3 24533905707 296
+8 24533928446 296
+4 24533929167 264
+2 24537577435 0
+3 24537580357 296
+8 24537603065 296
+4 24537603775 264
+2 24541252403 0
+3 24541255296 296
+8 24541277985 296
+4 24541278692 264
+2 24544927322 0
+3 24544930243 296
+8 24544952807 296
+4 24544953513 264
+2 24548554418 0
+6 24548555119 280
+3 24548557169 280
+8 24548560395 280
+4 24548561079 264
+2 24548602009 0
+3 24548605068 296
+8 24548627914 296
+4 24548628632 264
+2 24552230642 0
+3 24552231317 264
+2 24552276895 0
+3 24552279860 296
+8 24552302672 296
+4 24552303383 264
+2 24555951659 0
+3 24555954603 296
+8 24555977290 296
+4 24555977990 264
+2 24559626627 0
+3 24559629527 296
+8 24559652235 296
+4 24559652943 264
+2 24563301210 0
+3 24563304132 296
+8 24563326697 296
+4 24563327402 264
+2 24566928675 0
+6 24566929382 280
+3 24566931436 280
+8 24566934889 280
+4 24566935579 264
+2 24566976277 0
+3 24566979331 296
+8 24567002247 296
+4 24567002971 264
+2 24570604959 0
+3 24570605634 264
+2 24570650844 0
+3 24570653798 296
+8 24570676539 296
+4 24570677264 264
+2 24574325894 0
+3 24574328816 296
+8 24574351508 296
+4 24574352218 264
+2 24578000483 0
+3 24578003376 296
+8 24578026064 296
+4 24578026771 264
+2 24581675401 0
+3 24581678322 296
+8 24581700886 296
+4 24581701596 264
+2 24585302866 0
+6 24585303567 280
+3 24585305595 280
+8 24585308842 280
+4 24585309532 264
+2 24585350435 0
+3 24585353456 296
+8 24585376302 296
+4 24585377020 264
+2 24588979029 0
+3 24588979704 264
+2 24589025282 0
+3 24589028247 296
+8 24589051041 296
+4 24589051752 264
+2 24592700030 0
+3 24592702974 296
+8 24592725667 296
+4 24592726372 264
+2 24596374641 0
+3 24596377545 296
+8 24596400271 296
+4 24596400979 264
+2 24600049609 0
+3 24600052535 296
+8 24600075101 296
+4 24600075806 264
+2 24603677079 0
+6 24603677780 280
+3 24603679829 280
+8 24603683077 280
+4 24603683767 264
+2 24603724302 0
+3 24603727360 296
+8 24603750222 296
+4 24603750946 264
+2 24607353303 0
+3 24607353978 264
+2 24607399187 0
+3 24607402141 296
+8 24607424880 296
+4 24607425601 264
+2 24611074232 0
+3 24611077154 296
+8 24611099862 296
+4 24611100572 264
+2 24614748837 0
+3 24614751730 296
+8 24614774419 296
+4 24614775122 264
+2 24618423756 0
+3 24618426677 296
+8 24618449241 296
+4 24618449947 264
+2 24622051220 0
+6 24622051925 280
+3 24622053977 280
+8 24622057218 280
+4 24622057908 264
+2 24622098449 0
+3 24622101508 296
+8 24622124365 296
+4 24622125083 264
+2 24625727461 0
+3 24625728136 264
+2 24625773345 0
+3 24625776310 296
+8 24625799128 296
+4 24625799839 264
+2 24629448115 0
+3 24629451059 296
+8 24629473752 296
+4 24629474452 264
+2 24633123089 0
+3 24633125993 296
+8 24633148697 296
+4 24633149405 264
+2 24636798035 0
+3 24636800961 296
+8 24636823527 296
+4 24636824232 264
+2 24640425136 0
+6 24640425837 280
+3 24640427886 280
+8 24640431146 280
+4 24640431836 264
+2 24640472728 0
+3 24640475786 296
+8 24640498681 296
+4 24640499405 264
+2 24644101393 0
+3 24644102068 264
+2 24644147646 0
+3 24644150600 296
+8 24644173339 296
+4 24644174060 264
+2 24647822328 0
+3 24647825250 296
+8 24647847942 296
+4 24647848653 264
+2 24651497280 0
+3 24651500173 296
+8 24651522861 296
+4 24651523568 264
+2 24655172198 0
+3 24655175119 296
+8 24655197690 296
+4 24655198401 264
+2 24658799300 0
+6 24658800001 280
+3 24658802039 280
+8 24658805287 280
+4 24658805977 264
+2 24658846880 0
+3 24658849901 296
+8 24658872747 296
+4 24658873465 264
+2 24662475474 0
+3 24662476149 264
+2 24662521727 0
+3 24662524692 296
+8 24662547486 296
+4 24662548197 264
+2 24666196475 0
+3 24666199419 296
+8 24666222112 296
+4 24666222817 264
+2 24669871449 0
+3 24669874353 296
+8 24669897079 296
+4 24669897787 264
+2 24673546417 0
+3 24673549343 296
+8 24673571909 296
+4 24673572614 264
+2 24677173518 0
+6 24677174219 280
+3 24677176268 280
+8 24677179517 280
+4 24677180207 264
+2 24677221110 0
+3 24677224168 296
+8 24677247030 296
+4 24677247754 264
+2 24680849742 0
+3 24680850417 264
+2 24680895995 0
+3 24680898949 296
+8 24680921688 296
+4 24680922409 264
+2 24684570677 0
+3 24684573599 296
+8 24684596307 296
+4 24684597017 264
+2 24688245645 0
+3 24688248538 296
+8 24688271227 296
+4 24688271934 264
+2 24691920564 0
+3 24691923485 296
+8 24691946054 296
+4 24691946760 264
+2 24695547665 0
+6 24695548370 280
+3 24695550400 280
+8 24695553641 280
+4 24695554331 264
+2 24695595240 0
+3 24695598299 296
+8 24695621151 296
+4 24695621869 264
+2 24699223878 0
+3 24699224553 264
+2 24699270131 0
+3 24699273096 296
+8 24699295920 296
+4 24699296631 264
+2 24702944912 0
+3 24702947856 296
+8 24702970543 296
+4 24702971243 264
+2 24706619880 0
+3 24706622780 296
+8 24706645483 296
+4 24706646191 264
+2 24710294458 0
+3 24710297379 296
+8 24710319944 296
+4 24710320649 264
+2 24713921922 0
+6 24713922623 280
+3 24713924672 280
+8 24713928214 280
+4 24713928904 264
+2 24713969514 0
+3 24713972572 296
+8 24713995474 296
+4 24713996198 264
+2 24717598185 0
+3 24717598860 264
+2 24717644069 0
+3 24717647023 296
+8 24717669762 296
+4 24717670483 264
+2 24721319114 0
+3 24721322036 296
+8 24721344728 296
+4 24721345438 264
+2 24724993703 0
+3 24724996596 296
+8 24725019284 296
+4 24725019991 264
+2 24728668621 0
+3 24728671542 296
+8 24728694106 296
+4 24728694812 264
+2 24732296086 0
+6 24732296787 280
+3 24732298825 280
+8 24732302084 280
+4 24732302774 264
+2 24732343666 0
+3 24732346731 296
+8 24732369588 296
+4 24732370306 264
+2 24735972315 0
+3 24735972990 264
+2 24736018200 0
+3 24736021164 296
+8 24736043995 296
+4 24736044721 264
+2 24739693349 0
+3 24739696392 296
+8 24739719096 296
+4 24739719796 264
+2 24743368070 0
+3 24743370996 296
+8 24743393674 296
+4 24743394382 264
+2 24747043010 0
+3 24747045932 296
+8 24747068430 296
+4 24747069135 264
+2 24750670040 0
+6 24750670745 280
+3 24750672801 280
+8 24750676050 280
+4 24750676753 264
+2 24750717643 0
+3 24750720701 296
+8 24750743490 296
+4 24750744214 264
+2 24754346215 0
+3 24754346890 264
+2 24754392468 0
+3 24754395422 296
+8 24754418133 296
+4 24754418854 264
+2 24758067485 0
+3 24758070407 296
+8 24758093071 296
+4 24758093781 264
+2 24761742046 0
+3 24761744939 296
+8 24761767578 296
+4 24761768285 264
+2 24765416915 0
+3 24765419836 296
+8 24765442341 296
+4 24765443052 264
+2 24769044319 0
+6 24769045020 280
+3 24769047048 280
+8 24769050306 280
+4 24769050996 264
+2 24769091889 0
+3 24769094948 296
+8 24769117750 296
+4 24769118468 264
+2 24772720477 0
+3 24772721152 264
+2 24772766730 0
+3 24772769695 296
+8 24772792464 296
+4 24772793175 264
+2 24776441456 0
+3 24776444400 296
+8 24776467087 296
+4 24776467787 264
+2 24780116424 0
+3 24780119323 296
+8 24780142027 296
+4 24780142735 264
+2 24783791002 0
+3 24783793928 296
+8 24783816477 296
+4 24783817182 264
+2 24787418455 0
+6 24787419156 280
+3 24787421217 280
+8 24787424465 280
+4 24787425155 264
+2 24787466058 0
+3 24787469116 296
+8 24787492011 296
+4 24787492735 264
+2 24791094723 0
+3 24791095398 264
+2 24791140976 0
+3 24791143930 296
+8 24791166669 296
+4 24791167390 264
+2 24794815658 0
+3 24794818580 296
+8 24794841272 296
+4 24794841982 264
+2 24798490610 0
+3 24798493503 296
+8 24798516191 296
+4 24798516898 264
+2 24802165165 0
+3 24802168086 296
+8 24802190640 296
+4 24802191351 264
+2 24805792619 0
+6 24805793320 280
+3 24805795348 280
+8 24805798595 280
+4 24805799285 264
+2 24805840188 0
+3 24805843209 296
+8 24805866055 296
+4 24805866773 264
+2 24809468782 0
+3 24809469457 264
+2 24809515035 0
+3 24809518000 296
+8 24809540800 296
+4 24809541511 264
+2 24813189789 0
+3 24813192737 296
+8 24813215431 296
+4 24813216136 264
+2 24816864768 0
+3 24816867672 296
+8 24816890398 296
+4 24816891139 264
+2 24820539373 0
+3 24820542299 296
+8 24820564848 296
+4 24820565553 264
+2 24824166826 0
+6 24824167531 280
+3 24824169587 280
+8 24824172836 280
+4 24824173526 264
+2 24824214429 0
+3 24824217487 296
+8 24824240356 296
+4 24824241080 264
+2 24827843067 0
+3 24827843742 264
+2 24827888951 0
+3 24827891905 296
+8 24827914650 296
+4 24827915371 264
+2 24831564002 0
+3 24831566922 296
+8 24831589632 296
+4 24831590342 264
+2 24835238607 0
+3 24835241500 296
+8 24835264188 296
+4 24835264895 264
+2 24838913525 0
+3 24838916446 296
+8 24838939000 296
+4 24838939711 264
+2 24842540979 0
+6 24842541680 280
+3 24842543708 280
+8 24842546960 280
+4 24842547650 264
+2 24842588548 0
+3 24842591607 296
+8 24842614464 296
+4 24842615182 264
+2 24846217192 0
+3 24846217867 264
+2 24846263445 0
+3 24846266410 296
+8 24846289222 296
+4 24846289933 264
+2 24849938209 0
+3 24849941153 296
+8 24849963840 296
+4 24849964540 264
+2 24853612814 0
+3 24853615714 296
+8 24853638417 296
+4 24853639125 264
+2 24857287755 0
+3 24857290681 296
+8 24857313230 296
+4 24857313935 264
+2 24860915208 0
+6 24860915909 280
+3 24860917970 280
+8 24860921500 280
+4 24860922190 264
+2 24860962442 0
+3 24860965496 296
+8 24860988390 296
+4 24860989114 264
+2 24864591471 0
+3 24864592146 264
+2 24864637355 0
+3 24864640309 296
+8 24864663048 296
+4 24864663769 264
+2 24868312400 0
+3 24868315322 296
+8 24868338014 296
+4 24868338724 264
+2 24871986989 0
+3 24871989882 296
+8 24872012570 296
+4 24872013277 264
+2 24875661907 0
+3 24875664829 296
+8 24875687382 296
+4 24875688093 264
+2 24879289361 0
+6 24879290062 280
+3 24879292112 280
+8 24879295359 280
+4 24879296049 264
+2 24879336584 0
+3 24879339603 296
+8 24879362450 296
+4 24879363168 264
+2 24882965546 0
+3 24882966221 264
+2 24883011431 0
+3 24883014396 296
+8 24883037190 296
+4 24883037901 264
+2 24886686542 0
+3 24886689490 296
+8 24886712184 296
+4 24886712889 264
+2 24890361158 0
+3 24890364062 296
+8 24890386793 296
+4 24890387506 264
+2 24894036131 0
+3 24894039053 296
+8 24894061601 296
+4 24894062306 264
+2 24897663211 0
+6 24897663912 280
+3 24897665972 280
+8 24897669231 280
+4 24897669921 264
+2 24897710813 0
+3 24897713867 296
+8 24897736746 296
+4 24897737470 264
+2 24901339457 0
+3 24901340132 264
+2 24901385710 0
+3 24901388664 296
+8 24901411405 296
+4 24901412126 264
+2 24905060397 0
+3 24905063319 296
+8 24905086027 296
+4 24905086737 264
+2 24908735365 0
+3 24908738258 296
+8 24908760947 296
+4 24908761654 264
+2 24912410284 0
+3 24912413205 296
+8 24912435759 296
+4 24912436470 264
+2 24916037369 0
+6 24916038070 280
+3 24916040108 280
+8 24916043350 280
+4 24916044040 264
+2 24916084949 0
+3 24916088008 296
+8 24916110865 296
+4 24916111583 264
+2 24919713593 0
+3 24919714268 264
+2 24919759846 0
+3 24919762811 296
+8 24919785623 296
+4 24919786334 264
+2 24923434610 0
+3 24923437554 296
+8 24923460241 296
+4 24923460941 264
+2 24927109578 0
+3 24927112478 296
+8 24927135181 296
+4 24927135889 264
+2 24930784519 0
+3 24930787440 296
+8 24930809988 296
+4 24930810693 264
+2 24934411598 0
+6 24934412299 280
+3 24934414348 280
+8 24934417597 280
+4 24934418287 264
+2 24934459190 0
+3 24934462248 296
+8 24934485143 296
+4 24934485867 264
+2 24938087855 0
+3 24938088530 264
+2 24938134108 0
+3 24938137062 296
+8 24938159801 296
+4 24938160522 264
+2 24941808790 0
+3 24941811711 296
+8 24941834404 296
+4 24941835114 264
+2 24945483742 0
+3 24945486635 296
+8 24945509323 296
+4 24945510030 264
+2 24949158660 0
+3 24949161581 296
+8 24949184135 296
+4 24949184846 264
+2 24952785745 0
+6 24952786450 280
+3 24952788502 280
+8 24952791749 280
+4 24952792439 264
+2 24952833342 0
+3 24952836363 296
+8 24952859209 296
+4 24952859927 264
+2 24956461936 0
+3 24956462611 264
+2 24956508189 0
+3 24956511154 296
+8 24956533954 296
+4 24956534665 264
+2 24960182943 0
+3 24960185891 296
+8 24960208585 296
+4 24960209296 264
+2 24963857922 0
+3 24963860826 296
+8 24963883552 296
+4 24963884260 264
+2 24967532527 0
+3 24967535453 296
+8 24967558002 296
+4 24967558707 264
+2 24971159980 0
+6 24971160681 280
+3 24971162730 280
+8 24971165979 280
+4 24971166669 264
+2 24971207572 0
+3 24971210630 296
+8 24971233492 296
+4 24971234216 264
+2 24974836204 0
+3 24974836879 264
+2 24974882457 0
+3 24974885411 296
+8 24974908150 296
+4 24974908871 264
+2 24978557139 0
+3 24978560061 296
+8 24978582769 296
+4 24978583479 264
+2 24982232107 0
+3 24982235000 296
+8 24982257689 296
+4 24982258396 264
+2 24985906663 0
+3 24985909584 296
+8 24985932138 296
+4 24985932849 264
+2 24989534116 0
+6 24989534817 280
+3 24989536855 280
+8 24989540098 280
+4 24989540788 264
+2 24989581697 0
+3 24989584756 296
+8 24989607613 296
+4 24989608331 264
+2 24993210340 0
+3 24993211015 264
+2 24993256593 0
+3 24993259558 296
+8 24993282371 296
+4 24993283082 264
+2 24996931363 0
+3 24996934306 296
+8 24996956994 296
+4 24996957694 264
+2 25000605968 0
+3 25000608868 296
+8 25000631571 296
+4 25000632279 264
+2 25004280909 0
+3 25004283835 296
+8 25004306384 296
+4 25004307089 264
+2 25007908362 0
+6 25007909063 280
+3 25007911141 280
+8 25007914599 280
+4 25007915289 264
+2 25007955613 0
+3 25007958671 296
+8 25007981566 296
+4 25007982290 264
+2 25011584647 0
+3 25011585322 264
+2 25011630531 0
+3 25011633485 296
+8 25011656224 296
+4 25011656945 264
+2 25015305576 0
+3 25015308498 296
+8 25015331190 296
+4 25015331900 264
+2 25018980165 0
+3 25018983058 296
+8 25019005746 296
+4 25019006453 264
+2 25022655083 0
+3 25022658004 296
+8 25022680564 296
+4 25022681275 264
+2 25026282542 0
+6 25026283247 280
+3 25026285277 280
+8 25026288524 280
+4 25026289214 264
+2 25026330117 0
+3 25026333138 296
+8 25026355990 296
+4 25026356708 264
+2 25029958711 0
+3 25029959386 264
+2 25030004596 0
+3 25030007561 296
+8 25030030371 296
+4 25030031082 264
+2 25033679723 0
+3 25033682667 296
+8 25033705360 296
+4 25033706065 264
+2 25037354334 0
+3 25037357238 296
+8 25037379964 296
+4 25037380672 264
+2 25041029302 0
+3 25041032228 296
+8 25041054777 296
+4 25041055482 264
+2 25044656387 0
+6 25044657088 280
+3 25044659137 280
+8 25044662385 280
+4 25044663075 264
+2 25044703978 0
+3 25044707025 296
+8 25044729896 296
+4 25044730620 264
+2 25048332600 0
+3 25048333275 264
+2 25048378853 0
+3 25048381807 296
+8 25048404548 296
+4 25048405269 264
+2 25052053903 0
+3 25052056825 296
+8 25052079533 296
+4 25052080243 264
+2 25055728508 0
+3 25055731401 296
+8 25055754090 296
+4 25055754797 264
+2 25059403427 0
+3 25059406348 296
+8 25059428902 296
+4 25059429613 264
+2 25063030880 0
+6 25063031581 280
+3 25063033619 280
+8 25063036862 280
+4 25063037552 264
+2 25063078092 0
+3 25063081151 296
+8 25063104008 296
+4 25063104726 264
+2 25066707104 0
+3 25066707779 264
+2 25066752989 0
+3 25066755954 296
+8 25066778766 296
+4 25066779477 264
+2 25070427753 0
+3 25070430697 296
+8 25070453384 296
+4 25070454084 264
+2 25074102721 0
+3 25074105626 296
+8 25074128329 296
+4 25074129037 264
+2 25077777667 0
+3 25077780594 296
+8 25077803142 296
+4 25077803847 264
+2 25081404752 0
+6 25081405457 280
+3 25081407531 280
+8 25081410778 280
+4 25081411468 264
+2 25081452371 0
+3 25081455424 296
+8 25081478319 296
+4 25081479043 264
+2 25085081031 0
+3 25085081706 264
+2 25085127284 0
+3 25085130238 296
+8 25085152977 296
+4 25085153698 264
+2 25088801966 0
+3 25088804888 296
+8 25088827585 296
+4 25088828295 264
+2 25092476923 0
+3 25092479816 296
+8 25092502505 296
+4 25092503212 264
+2 25096151842 0
+3 25096154769 296
+8 25096177322 296
+4 25096178033 264
+2 25099778932 0
+6 25099779633 280
+3 25099781661 280
+8 25099784936 280
+4 25099785626 264
+2 25099826502 0
+3 25099829555 296
+8 25099852412 296
+4 25099853130 264
+2 25103455140 0
+3 25103455815 264
+2 25103501393 0
+3 25103504357 296
+8 25103527188 296
+4 25103527914 264
+2 25107176179 0
+3 25107179222 296
+8 25107201926 296
+4 25107202626 264
+2 25110850900 0
+3 25110853826 296
+8 25110876493 296
+4 25110877202 264
+2 25114525829 0
+3 25114528750 296
+8 25114551249 296
+4 25114551954 264
+2 25118153228 0
+6 25118153929 280
+3 25118155990 280
+8 25118159237 280
+4 25118159940 264
+2 25118200830 0
+3 25118203888 296
+8 25118226814 296
+4 25118227538 264
+2 25121829540 0
+3 25121830215 264
+2 25121875424 0
+3 25121878378 296
+8 25121901092 296
+4 25121901813 264
+2 25125550447 0
+3 25125553369 296
+8 25125576028 296
+4 25125576738 264
+2 25129225003 0
+3 25129227896 296
+8 25129250535 296
+4 25129251238 264
+2 25132899872 0
+3 25132902793 296
+8 25132925297 296
+4 25132926008 264
+2 25136527276 0
+6 25136527977 280
+3 25136530005 280
+8 25136533239 280
+4 25136533929 264
+2 25136574845 0
+3 25136577887 296
+8 25136600695 296
+4 25136601413 264
+2 25140203423 0
+3 25140204098 264
+2 25140249676 0
+3 25140252641 296
+8 25140275409 296
+4 25140276120 264
+2 25143924396 0
+3 25143927340 296
+8 25143950027 296
+4 25143950727 264
+2 25147599364 0
+3 25147602264 296
+8 25147624967 296
+4 25147625675 264
+2 25151274305 0
+3 25151277226 296
+8 25151299774 296
+4 25151300479 264
+2 25154901384 0
+6 25154902089 280
+3 25154904163 280
+8 25154907461 280
+4 25154908151 264
+2 25154949003 0
+3 25154952056 296
+8 25154975005 296
+4 25154975729 264
+2 25158577718 0
+3 25158578393 264
+2 25158623971 0
+3 25158626925 296
+8 25158649664 296
+4 25158650391 264
+2 25162298653 0
+3 25162301575 296
+8 25162324267 296
+4 25162324977 264
+2 25165973605 0
+3 25165976498 296
+8 25165999186 296
+4 25165999893 264
+2 25169648160 0
+3 25169651081 296
+8 25169673635 296
+4 25169674346 264
+2 25173275614 0
+6 25173276315 280
+3 25173278343 280
+8 25173281590 280
+4 25173282280 264
+2 25173323183 0
+3 25173326198 296
+8 25173349050 296
+4 25173349768 264
+2 25176951777 0
+3 25176952452 264
+2 25176998030 0
+3 25177000995 296
+8 25177023789 296
+4 25177024500 264
+2 25180672778 0
+3 25180675722 296
+8 25180698415 296
+4 25180699120 264
+2 25184347752 0
+3 25184350656 296
+8 25184373382 296
+4 25184374090 264
+2 25188022357 0
+3 25188025283 296
+8 25188047832 296
+4 25188048537 264
+2 25191649810 0
+6 25191650511 280
+3 25191652572 280
+8 25191655820 280
+4 25191656510 264
+2 25191697413 0
+3 25191700471 296
+8 25191723382 296
+4 25191724106 264
+2 25195326095 0
+3 25195326770 264
+2 25195371979 0
+3 25195374933 296
+8 25195397672 296
+4 25195398393 264
+2 25199047024 0
+3 25199049946 296
+8 25199072654 296
+4 25199073364 264
+2 25202721629 0
+3 25202724522 296
+8 25202747211 296
+4 25202747918 264
+2 25206396548 0
+3 25206399469 296
+8 25206422023 296
+4 25206422734 264
+2 25210024008 0
+6 25210024709 280
+3 25210026757 280
+8 25210029999 280
+4 25210030689 264
+2 25210071598 0
+3 25210074640 296
+8 25210097481 296
+4 25210098199 264
+2 25213700209 0
+3 25213700884 264
+2 25213746462 0
+3 25213749427 296
+8 25213772239 296
+4 25213772950 264
+2 25217421226 0
+3 25217424170 296
+8 25217446857 296
+4 25217447557 264
+2 25221095831 0
+3 25221098731 296
+8 25221121439 296
+4 25221122152 264
+2 25224770777 0
+3 25224773699 296
+8 25224796247 296
+4 25224796952 264
+2 25228398225 0
+6 25228398926 280
+3 25228400975 280
+8 25228404229 280
+4 25228404919 264
+2 25228445448 0
+3 25228448501 296
+8 25228471446 296
+4 25228472170 264
+2 25232074526 0
+3 25232075201 264
+2 25232120411 0
+3 25232123365 296
+8 25232146106 296
+4 25232146827 264
+2 25235795098 0
+3 25235798020 296
+8 25235820712 296
+4 25235821422 264
+2 25239470050 0
+3 25239472954 296
+8 25239495642 296
+4 25239496349 264
+2 25243144979 0
+3 25243147900 296
+8 25243170475 296
+4 25243171189 264
+2 25246772086 0
+6 25246772787 280
+3 25246774825 280
+8 25246778073 280
+4 25246778775 264
+2 25246819667 0
+3 25246822731 296
+8 25246845588 296
+4 25246846306 264
+2 25250448316 0
+3 25250448991 264
+2 25250494569 0
+3 25250497534 296
+8 25250520328 296
+4 25250521039 264
+2 25254169317 0
+3 25254172265 296
+8 25254194959 296
+4 25254195664 264
+2 25257844296 0
+3 25257847200 296
+8 25257869926 296
+4 25257870634 264
+2 25261518901 0
+3 25261521827 296
+8 25261544376 296
+4 25261545081 264
+2 25265146354 0
+6 25265147055 280
+3 25265149104 280
+8 25265152353 280
+4 25265153043 264
+2 25265193946 0
+3 25265197004 296
+8 25265219916 296
+4 25265220640 264
+2 25268822628 0
+3 25268823303 264
+2 25268868881 0
+3 25268871835 296
+8 25268894576 296
+4 25268895297 264
+2 25272543568 0
+3 25272546490 296
+8 25272569198 296
+4 25272569908 264
+2 25276218536 0
+3 25276221429 296
+8 25276244118 296
+4 25276244825 264
+2 25279893092 0
+3 25279896013 296
+8 25279918567 296
+4 25279919278 264
+2 25283520545 0
+6 25283521250 280
+3 25283523302 280
+8 25283526543 280
+4 25283527233 264
+2 25283568142 0
+3 25283571201 296
+8 25283594053 296
+4 25283594771 264
+2 25287196780 0
+3 25287197455 264
+2 25287243033 0
+3 25287245998 296
+8 25287268816 296
+4 25287269527 264
+2 25290917803 0
+3 25290920747 296
+8 25290943434 296
+4 25290944134 264
+2 25294592408 0
+3 25294595318 296
+8 25294618022 296
+4 25294618730 264
+2 25298267360 0
+3 25298270286 296
+8 25298292851 296
+4 25298293556 264
+2 25301894830 0
+6 25301895531 280
+3 25301897580 280
+8 25301900841 280
+4 25301901531 264
+2 25301942053 0
+3 25301945111 296
+8 25301968056 296
+4 25301968780 264
+2 25305571136 0
+3 25305571811 264
+2 25305617021 0
+3 25305619975 296
+8 25305642716 296
+4 25305643437 264
+2 25309291708 0
+3 25309294630 296
+8 25309317322 296
+4 25309318033 264
+2 25312966660 0
+3 25312969553 296
+8 25312992241 296
+4 25312992944 264
+2 25316641578 0
+3 25316644499 296
+8 25316667053 296
+4 25316667764 264
+2 25320268663 0
+6 25320269375 280
+3 25320271403 280
+8 25320274813 280
+4 25320275503 264
+2 25320316244 0
+3 25320319263 296
+8 25320342116 296
+4 25320342834 264
+2 25323944843 0
+3 25323945518 264
+2 25323991096 0
+3 25323994061 296
+8 25324016855 296
+4 25324017566 264
+2 25327665844 0
+3 25327668788 296
+8 25327691481 296
+4 25327692186 264
+2 25331340818 0
+3 25331343722 296
+8 25331366448 296
+4 25331367156 264
+2 25335015786 0
+3 25335018712 296
+8 25335041261 296
+4 25335041966 264
+2 25338642871 0
+6 25338643572 280
+3 25338645622 280
+8 25338648869 280
+4 25338649559 264
+2 25338690462 0
+3 25338693520 296
+8 25338716431 296
+4 25338717155 264
+2 25342319144 0
+3 25342319819 264
+2 25342365397 0
+3 25342368351 296
+8 25342391090 296
+4 25342391811 264
+2 25346040079 0
+3 25346043001 296
+8 25346065709 296
+4 25346066419 264
+2 25349715047 0
+3 25349717940 296
+8 25349740629 296
+4 25349741336 264
+2 25353389966 0
+3 25353392887 296
+8 25353415441 296
+4 25353416152 264
+2 25357017051 0
+6 25357017756 280
+3 25357019784 280
+8 25357023027 280
+4 25357023717 264
+2 25357064626 0
+3 25357067685 296
+8 25357090536 296
+4 25357091260 264
+2 25360693264 0
+3 25360693939 264
+2 25360739517 0
+3 25360742482 296
+8 25360765294 296
+4 25360766005 264
+2 25364414281 0
+3 25364417225 296
+8 25364439912 296
+4 25364440612 264
+2 25368089249 0
+3 25368092148 296
+8 25368114852 296
+4 25368115560 264
+2 25371763827 0
+3 25371766753 296
+8 25371789302 296
+4 25371790007 264
+2 25375391280 0
+6 25375391981 280
+3 25375394030 280
+8 25375397279 280
+4 25375397969 264
+2 25375438872 0
+3 25375441930 296
+8 25375464882 296
+4 25375465606 264
+2 25379067587 0
+3 25379068262 264
+2 25379113471 0
+3 25379116425 296
+8 25379139164 296
+4 25379139885 264
+2 25382788516 0
+3 25382791438 296
+8 25382814137 296
+4 25382814849 264
+2 25386463473 0
+3 25386466366 296
+8 25386489055 296
+4 25386489758 264
+2 25390138029 0
+3 25390140950 296
+8 25390163504 296
+4 25390164215 264
+2 25393765482 0
+6 25393766183 280
+3 25393768221 280
+8 25393771610 280
+4 25393772300 264
+2 25393813063 0
+3 25393816082 296
+8 25393838935 296
+4 25393839653 264
+2 25397441662 0
+3 25397442337 264
+2 25397487915 0
+3 25397490880 296
+8 25397513674 296
+4 25397514385 264
+2 25401162663 0
+3 25401165607 296
+8 25401188300 296
+4 25401189005 264
+2 25404837274 0
+3 25404840179 296
+8 25404862904 296
+4 25404863612 264
+2 25408512242 0
+3 25408515168 296
+8 25408537717 296
+4 25408538422 264
+2 25412139695 0
+6 25412140400 280
+3 25412142456 280
+8 25412145705 280
+4 25412146395 264
+2 25412186929 0
+3 25412189982 296
+8 25412212894 296
+4 25412213618 264
+2 25415815974 0
+3 25415816649 264
+2 25415861859 0
+3 25415864813 296
+8 25415887554 296
+4 25415888275 264
+2 25419536909 0
+3 25419539831 296
+8 25419562545 296
+4 25419563255 264
+2 25423211520 0
+3 25423214413 296
+8 25423237101 296
+4 25423237808 264
+2 25426886438 0
+3 25426889365 296
+8 25426911919 296
+4 25426912630 264
+2 25430513897 0
+6 25430514598 280
+3 25430516626 280
+8 25430519869 280
+4 25430520553 264
+2 25430561098 0
+3 25430564140 296
+8 25430586970 296
+4 25430587688 264
+2 25434190066 0
+3 25434190741 264
+2 25434235951 0
+3 25434238916 296
+8 25434261728 296
+4 25434262439 264
+2 25437911078 0
+3 25437914022 296
+8 25437936709 296
+4 25437937409 264
+2 25441585683 0
+3 25441588583 296
+8 25441611286 296
+4 25441611998 264
+2 25445260624 0
+3 25445263550 296
+8 25445286099 296
+4 25445286804 264
+2 25448887709 0
+6 25448888410 280
+3 25448890471 280
+8 25448893726 280
+4 25448894416 264
+2 25448935311 0
+3 25448938364 296
+8 25448961309 296
+4 25448962033 264
+2 25452564021 0
+3 25452564696 264
+2 25452610274 0
+3 25452613228 296
+8 25452635969 296
+4 25452636690 264
+2 25456284961 0
+3 25456287883 296
+8 25456310575 296
+4 25456311285 264
+2 25459959913 0
+3 25459962806 296
+8 25459985494 296
+4 25459986201 264
+2 25463634831 0
+3 25463637752 296
+8 25463660306 296
+4 25463661017 264
+2 25467261916 0
+6 25467262617 280
+3 25467264645 280
+8 25467267903 280
+4 25467268593 264
+2 25467309486 0
+3 25467312533 296
+8 25467335385 296
+4 25467336103 264
+2 25470938113 0
+3 25470938788 264
+2 25470984366 0
+3 25470987326 296
+8 25471010138 296
+4 25471010864 264
+2 25474659130 0
+3 25474662173 296
+8 25474684867 296
+4 25474685567 264
+2 25478334208 0
+3 25478337134 296
+8 25478359794 296
+4 25478360502 264
+2 25482008769 0
+3 25482011691 296
+8 25482034189 296
+4 25482034894 264
+2 25485636168 0
+6 25485636870 280
+3 25485638924 280
+8 25485642172 280
+4 25485642875 264
+2 25485683765 0
+3 25485686824 296
+8 25485709648 296
+4 25485710372 264
+2 25489312375 0
+3 25489313050 264
+2 25489358628 0
+3 25489361582 296
+8 25489384296 296
+4 25489385017 264
+2 25493033288 0
+3 25493036210 296
+8 25493058869 296
+4 25493059579 264
+2 25496708207 0
+3 25496711100 296
+8 25496733739 296
+4 25496734442 264
+2 25500383076 0
+3 25500385997 296
+8 25500408501 296
+4 25500409212 264
+2 25504010480 0
+6 25504011185 280
+3 25504013208 280
+8 25504016443 280
+4 25504017133 264
+2 25504058049 0
+3 25504061091 296
+8 25504083883 296
+4 25504084601 264
+2 25507686610 0
+3 25507687285 264
+2 25507732863 0
+3 25507735828 296
+8 25507758597 296
+4 25507759308 264
+2 25511407589 0
+3 25511410533 296
+8 25511433220 296
+4 25511433920 264
+2 25515082194 0
+3 25515085094 296
+8 25515107797 296
+4 25515108505 264
+2 25518757135 0
+3 25518760061 296
+8 25518782610 296
+4 25518783315 264
+2 25522384588 0
+6 25522385289 280
+3 25522387345 280
+8 25522390592 280
+4 25522391282 264
+2 25522432185 0
+3 25522435239 296
+8 25522458176 296
+4 25522458900 264
+2 25526060889 0
+3 25526061564 264
+2 25526106774 0
+3 25526109728 296
+8 25526132469 296
+4 25526133190 264
+2 25529781824 0
+3 25529784746 296
+8 25529807438 296
+4 25529808148 264
+2 25533456413 0
+3 25533459306 296
+8 25533481994 296
+4 25533482701 264
+2 25537131331 0
+3 25537134252 296
+8 25537156806 296
+4 25537157517 264
+2 25540758792 0
+6 25540759493 280
+3 25540761541 280
+8 25540764788 280
+4 25540765478 264
+2 25540806013 0
+3 25540809028 296
+8 25540831874 296
+4 25540832592 264
+2 25544434970 0
+3 25544435645 264
+2 25544480855 0
+3 25544483820 296
+8 25544506614 296
+4 25544507325 264
+2 25548155966 0
+3 25548158914 296
+8 25548181608 296
+4 25548182313 264
+2 25551830582 0
+3 25551833486 296
+8 25551856217 296
+4 25551856930 264
+2 25555505555 0
+3 25555508477 296
+8 25555531030 296
+4 25555531735 264
+2 25559132640 0
+6 25559133341 280
+3 25559135385 280
+8 25559138633 280
+4 25559139329 264
+2 25559180226 0
+3 25559183279 296
+8 25559206266 296
+4 25559206990 264
+2 25562808980 0
+3 25562809655 264
+2 25562855233 0
+3 25562858187 296
+8 25562880928 296
+4 25562881649 264
+2 25566529920 0
+3 25566532842 296
+8 25566555550 296
+4 25566556260 264
+2 25570204888 0
+3 25570207781 296
+8 25570230470 296
+4 25570231177 264
+2 25573879807 0
+3 25573882728 296
+8 25573905286 296
+4 25573905992 264
+2 25577506892 0
+6 25577507593 280
+3 25577509621 280
+8 25577512862 280
+4 25577513552 264
+2 25577554461 0
+3 25577557520 296
+8 25577580366 296
+4 25577581084 264
+2 25581183094 0
+3 25581183769 264
+2 25581229347 0
+3 25581232312 296
+8 25581255124 296
+4 25581255835 264
+2 25584904111 0
+3 25584907055 296
+8 25584929742 296
+4 25584930442 264
+2 25588579079 0
+3 25588581979 296
+8 25588604682 296
+4 25588605390 264
+2 25592253657 0
+3 25592256583 296
+8 25592279132 296
+4 25592279837 264
+2 25595881110 0
+6 25595881811 280
+3 25595883855 280
+8 25595887154 280
+4 25595887844 264
+2 25595928696 0
+3 25595931750 296
+8 25595954687 296
+4 25595955411 264
+2 25599557400 0
+3 25599558075 264
+2 25599603285 0
+3 25599606239 296
+8 25599628980 296
+4 25599629701 264
+2 25603278335 0
+3 25603281257 296
+8 25603303949 296
+4 25603304659 264
+2 25606953287 0
+3 25606956180 296
+8 25606978868 296
+4 25606979575 264
+2 25610627842 0
+3 25610630763 296
+8 25610653317 296
+4 25610654028 264
+2 25614255296 0
+6 25614256001 280
+3 25614258051 280
+8 25614261299 280
+4 25614261989 264
+2 25614302893 0
+3 25614305912 296
+8 25614328748 296
+4 25614329466 264
+2 25617931476 0
+3 25617932151 264
+2 25617977729 0
+3 25617980694 296
+8 25618003493 296
+4 25618004209 264
+2 25621652482 0
+3 25621655426 296
+8 25621678119 296
+4 25621678824 264
+2 25625327093 0
+3 25625330003 296
+8 25625352728 296
+4 25625353436 264
+2 25629002066 0
+3 25629004988 296
+8 25629027552 296
+4 25629028257 264
+2 25632629531 0
+6 25632630232 280
+3 25632632281 280
+8 25632635529 280
+4 25632636219 264
+2 25632676754 0
+3 25632679812 296
+8 25632702717 296
+4 25632703441 264
+2 25636305799 0
+3 25636306474 264
+2 25636351683 0
+3 25636354637 296
+8 25636377376 296
+4 25636378097 264
+2 25640026728 0
+3 25640029650 296
+8 25640052358 296
+4 25640053068 264
+2 25643701333 0
+3 25643704226 296
+8 25643726915 296
+4 25643727622 264
+2 25647376252 0
+3 25647379173 296
+8 25647401727 296
+4 25647402438 264
+2 25651003705 0
+6 25651004406 280
+3 25651006439 280
+8 25651009681 280
+4 25651010371 264
+2 25651050912 0
+3 25651053971 296
+8 25651076817 296
+4 25651077535 264
+2 25654679913 0
+3 25654680588 264
+2 25654725797 0
+3 25654728762 296
+8 25654751575 296
+4 25654752286 264
+2 25658400567 0
+3 25658403511 296
+8 25658426198 296
+4 25658426898 264
+2 25662075535 0
+3 25662078435 296
+8 25662101138 296
+4 25662101846 264
+2 25665750476 0
+3 25665753397 296
+8 25665775945 296
+4 25665776650 264
+2 25669377555 0
+6 25669378256 280
+3 25669380305 280
+8 25669383554 280
+4 25669384244 264
+2 25669425147 0
+3 25669428205 296
+8 25669451143 296
+4 25669451867 264
+2 25673053856 0
+3 25673054531 264
+2 25673100109 0
+3 25673103063 296
+8 25673125802 296
+4 25673126523 264
+2 25676774791 0
+3 25676777713 296
+8 25676800405 296
+4 25676801115 264
+2 25680449743 0
+3 25680452637 296
+8 25680475324 296
+4 25680476027 264
+2 25684124661 0
+3 25684127582 296
+8 25684150157 296
+4 25684150867 264
+2 25687751768 0
+6 25687752473 280
+3 25687754496 280
+8 25687757731 280
+4 25687758433 264
+2 25687799338 0
+3 25687802397 296
+8 25687825259 296
+4 25687825977 264
+2 25691427987 0
+3 25691428668 264
+2 25691474245 0
+3 25691477210 296
+8 25691500004 296
+4 25691500715 264
+2 25695148993 0
+3 25695151937 296
+8 25695174630 296
+4 25695175335 264
+2 25698823967 0
+3 25698826871 296
+8 25698849597 296
+4 25698850305 264
+2 25702498572 0
+3 25702501498 296
+8 25702524047 296
+4 25702524752 264
+2 25706126025 0
+6 25706126726 280
+3 25706128770 280
+8 25706132018 280
+4 25706132708 264
+2 25706173611 0
+3 25706176665 296
+8 25706199577 296
+4 25706200305 264
+2 25709802282 0
+3 25709802957 264
+2 25709848535 0
+3 25709851489 296
+8 25709874228 296
+4 25709874949 264
+2 25713523217 0
+3 25713526139 296
+8 25713548847 296
+4 25713549557 264
+2 25717198185 0
+3 25717201078 296
+8 25717223767 296
+4 25717224474 264
+2 25720872741 0
+3 25720875662 296
+8 25720898216 296
+4 25720898927 264
+2 25724500194 0
+6 25724500895 280
+3 25724502918 280
+8 25724506159 280
+4 25724506849 264
+2 25724547758 0
+3 25724550800 296
+8 25724573636 296
+4 25724574354 264
+2 25728176363 0
+3 25728177038 264
+2 25728222616 0
+3 25728225581 296
+8 25728248394 296
+4 25728249105 264
+2 25731897386 0
+3 25731900330 296
+8 25731923017 296
+4 25731923717 264
+2 25735571991 0
+3 25735574891 296
+8 25735597594 296
+4 25735598302 264
+2 25739246939 0
+3 25739249864 296
+8 25739272412 296
+4 25739273117 264
+2 25742874391 0
+6 25742875096 280
+3 25742877168 280
+8 25742880530 280
+4 25742881220 264
+2 25742922010 0
+3 25742925063 296
+8 25742948000 296
+4 25742948724 264
+2 25746550714 0
+3 25746551389 264
+2 25746596598 0
+3 25746599552 296
+8 25746622291 296
+4 25746623012 264
+2 25750271643 0
+3 25750274565 296
+8 25750297262 296
+4 25750297972 264
+2 25753946237 0
+3 25753949130 296
+8 25753971824 296
+4 25753972531 264
+2 25757621161 0
+3 25757624088 296
+8 25757646642 296
+4 25757647353 264
+2 25761248620 0
+6 25761249321 280
+3 25761251344 280
+8 25761254591 280
+4 25761255281 264
+2 25761295816 0
+3 25761298831 296
+8 25761321677 296
+4 25761322395 264
+2 25764924773 0
+3 25764925448 264
+2 25764970657 0
+3 25764973622 296
+8 25764996416 296
+4 25764997127 264
+2 25768645768 0
+3 25768648712 296
+8 25768671405 296
+4 25768672110 264
+2 25772320379 0
+3 25772323283 296
+8 25772346009 296
+4 25772346717 264
+2 25775995347 0
+3 25775998273 296
+8 25776020822 296
+4 25776021527 264
+2 25779622432 0
+6 25779623133 280
+3 25779625188 280
+8 25779628491 280
+4 25779629181 264
+2 25779670029 0
+3 25779673082 296
+8 25779695986 296
+4 25779696710 264
+2 25783298700 0
+3 25783299375 264
+2 25783344953 0
+3 25783347907 296
+8 25783370648 296
+4 25783371369 264
+2 25787019640 0
+3 25787022562 296
+8 25787045270 296
+4 25787045980 264
+2 25790694608 0
+3 25790697501 296
+8 25790720190 296
+4 25790720897 264
+2 25794369527 0
+3 25794372448 296
+8 25794395002 296
+4 25794395713 264
+2 25797996612 0
+6 25797997313 280
+3 25797999340 280
+8 25798002582 280
+4 25798003272 264
+2 25798044181 0
+3 25798047223 296
+8 25798070064 296
+4 25798070782 264
+2 25801672792 0
+3 25801673467 264
+2 25801719045 0
+3 25801722009 296
+8 25801744822 296
+4 25801745548 264
+2 25805393809 0
+3 25805396769 296
+8 25805419458 296
+4 25805420158 264
+2 25809068799 0
+3 25809071699 296
+8 25809094402 296
+4 25809095110 264
+2 25812743740 0
+3 25812746661 296
+8 25812769209 296
+4 25812769914 264
+2 25816370819 0
+6 25816371524 280
+3 25816373598 280
+8 25816376845 280
+4 25816377535 264
+2 25816418438 0
+3 25816421491 296
+8 25816444398 296
+4 25816445122 264
+2 25820047126 0
+3 25820047801 264
+2 25820093379 0
+3 25820096333 296
+8 25820119096 296
+4 25820119817 264
+2 25823768088 0
+3 25823771014 296
+8 25823793707 296
+4 25823794417 264
+2 25827443045 0
+3 25827445938 296
+8 25827468643 296
+4 25827469350 264
+2 25831117617 0
+3 25831120538 296
+8 25831143109 296
+4 25831143820 264
+2 25834745087 0
+6 25834745788 280
+3 25834747811 280
+8 25834751069 280
+4 25834751759 264
+2 25834792651 0
+3 25834795715 296
+8 25834818545 296
+4 25834819263 264
+2 25838421273 0
+3 25838421948 264
+2 25838467526 0
+3 25838470486 296
+8 25838493298 296
+4 25838494029 264
+2 25842142290 0
+3 25842145333 296
+8 25842168159 296
+4 25842168859 264
+2 25845817137 0
+3 25845820063 296
+8 25845842855 296
+4 25845843563 264
+2 25849491830 0
+3 25849494752 296
+8 25849517322 296
+4 25849518027 264
+2 25853119300 0
+6 25853120001 280
+3 25853122045 280
+8 25853125310 280
+4 25853126013 264
+2 25853166886 0
+3 25853169944 296
+8 25853192835 296
+4 25853193559 264
+2 25856795563 0
+3 25856796238 264
+2 25856841447 0
+3 25856844401 296
+8 25856867159 296
+4 25856867880 264
+2 25860516514 0
+3 25860519436 296
+8 25860542139 296
+4 25860542849 264
+2 25864191114 0
+3 25864194007 296
+8 25864216690 296
+4 25864217397 264
+2 25867866027 0
+3 25867868948 296
+8 25867891496 296
+4 25867892207 264
+2 25871493475 0
+6 25871494176 280
+3 25871496208 280
+8 25871499456 280
+4 25871500146 264
+2 25871541050 0
+3 25871544092 296
+8 25871566916 296
+4 25871567634 264
+2 25875169644 0
+3 25875170319 264
+2 25875215897 0
+3 25875218862 296
+8 25875241674 296
+4 25875242385 264
+2 25878890661 0
+3 25878893605 296
+8 25878916336 296
+4 25878917036 264
+2 25882565310 0
+3 25882568210 296
+8 25882590957 296
+4 25882591670 264
+2 25886240295 0
+3 25886243221 296
+8 25886265819 296
+4 25886266528 264
+2 25889867429 0
+6 25889868134 280
+3 25889870180 280
+8 25889873441 280
+4 25889874131 264
+2 25889915021 0
+3 25889918074 296
+8 25889941038 296
+4 25889941762 264
+2 25893543741 0
+3 25893544416 264
+2 25893589994 0
+3 25893592948 296
+8 25893615731 296
+4 25893616452 264
+2 25897264720 0
+3 25897267642 296
+8 25897290378 296
+4 25897291088 264
+2 25900939353 0
+3 25900942246 296
+8 25900964978 296
+4 25900965685 264
+2 25904614315 0
+3 25904617236 296
+8 25904639834 296
+4 25904640545 264
+2 25908241813 0
+6 25908242514 280
+3 25908244541 280
+8 25908247789 280
+4 25908248479 264
+2 25908289014 0
+3 25908292033 296
+8 25908314919 296
+4 25908315637 264
+2 25911918015 0
+3 25911918690 264
+2 25911963899 0
+3 25911966864 296
+8 25911989702 296
+4 25911990413 264
+2 25915638691 0
+3 25915641634 296
+8 25915664372 296
+4 25915665077 264
+2 25919313709 0
+3 25919316608 296
+8 25919339377 296
+4 25919340085 264
+2 25922988352 0
+3 25922991274 296
+8 25923013866 296
+4 25923014571 264
+2 25926615844 0
+6 25926616545 280
+3 25926618601 280
+8 25926622079 280
+4 25926622769 264
+2 25926663441 0
+3 25926666495 296
+8 25926689426 296
+4 25926690150 264
+2 25930292129 0
+3 25930292804 264
+2 25930338013 0
+3 25930340967 296
+8 25930363750 296
+4 25930364471 264
+2 25934013102 0
+3 25934016024 296
+8 25934038776 296
+4 25934039486 264
+2 25937687758 0
+3 25937690651 296
+8 25937713382 296
+4 25937714089 264
+2 25941362719 0
+3 25941365640 296
+8 25941388238 296
+4 25941388949 264
+2 25944989848 0
+6 25944990553 280
+3 25944992605 280
+8 25944995846 280
+4 25944996536 264
+2 25945037445 0
+3 25945040504 296
+8 25945063394 296
+4 25945064112 264
+2 25948666122 0
+3 25948666797 264
+2 25948712375 0
+3 25948715340 296
+8 25948738202 296
+4 25948738918 264
+2 25952387194 0
+3 25952390138 296
+8 25952412869 296
+4 25952413569 264
+2 25956061843 0
+3 25956064748 296
+8 25956087495 296
+4 25956088203 264
+2 25959736833 0
+3 25959739755 296
+8 25959762363 296
+4 25959763068 264
+2 25963363973 0
+6 25963364674 280
+3 25963366718 280
+8 25963369966 280
+4 25963370656 264
+2 25963411559 0
+3 25963414613 296
+8 25963437577 296
+4 25963438301 264
+2 25967040280 0
+3 25967040955 264
+2 25967086533 0
+3 25967089487 296
+8 25967112272 296
+4 25967112993 264
+2 25970761264 0
+3 25970764186 296
+8 25970786922 296
+4 25970787636 264
+2 25974436260 0
+3 25974439153 296
+8 25974461885 296
+4 25974462588 264
+2 25978110859 0
+3 25978113780 296
+8 25978136378 296
+4 25978137089 264
+2 25981738357 0
+6 25981739058 280
+3 25981741091 280
+8 25981744325 280
+4 25981745015 264
+2 25981785932 0
+3 25981788951 296
+8 25981811842 296
+4 25981812560 264
+2 25985414570 0
+3 25985415245 264
+2 25985460454 0
+3 25985463419 296
+8 25985486257 296
+4 25985486968 264
+2 25989135609 0
+3 25989138553 296
+8 25989161290 296
+4 25989161995 264
+2 25992810264 0
+3 25992813168 296
+8 25992835938 296
+4 25992836646 264
+2 25996485276 0
+3 25996488202 296
+8 25996510795 296
+4 25996511500 264
+2 26000112405 0
+6 26000113106 280
+3 26000115155 280
+8 26000118403 280
+4 26000119093 264
+2 26000159996 0
+3 26000163052 296
+8 26000185993 296
+4 26000186717 264
+2 26003788700 0
+3 26003789375 264
+2 26003834953 0
+3 26003837907 296
+8 26003860690 296
+4 26003861411 264
+2 26007509679 0
+3 26007512601 296
+8 26007535353 296
+4 26007536063 264
+2 26011184328 0
+3 26011187221 296
+8 26011209954 296
+4 26011210661 264
+2 26014859291 0
+3 26014862212 296
+8 26014884810 296
+4 26014885521 264
+2 26018486420 0
+6 26018487125 280
+3 26018489153 280
+8 26018492396 280
+4 26018493086 264
+2 26018533995 0
+3 26018537054 296
+8 26018559949 296
+4 26018560667 264
+2 26022162677 0
+3 26022163352 264
+2 26022208930 0
+3 26022211901 296
+8 26022234757 296
+4 26022235468 264
+2 26025883749 0
+3 26025886693 296
+8 26025909442 296
+4 26025910142 264
+2 26029558420 0
+3 26029561320 296
+8 26029584067 296
+4 26029584775 264
+2 26033233405 0
+3 26033236331 296
+8 26033258924 296
+4 26033259629 264
+2 26036860534 0
+6 26036861235 280
+3 26036863284 280
+8 26036866583 280
+4 26036867273 264
+2 26036908125 0
+3 26036911179 296
+8 26036934158 296
+4 26036934882 264
+2 26040536857 0
+3 26040537532 264
+2 26040583110 0
+3 26040586064 296
+8 26040608849 296
+4 26040609570 264
+2 26044257841 0
+3 26044260763 296
+8 26044283499 296
+4 26044284209 264
+2 26047932837 0
+3 26047935731 296
+8 26047958462 296
+4 26047959169 264
+2 26051607436 0
+3 26051610357 296
+8 26051632976 296
+4 26051633686 264
+2 26055234956 0
+6 26055235657 280
+3 26055237695 280
+8 26055240943 280
+4 26055241645 264
+2 26055282536 0
+3 26055285595 296
+8 26055308496 296
+4 26055309214 264
+2 26058911224 0
+3 26058911899 264
+2 26058957108 0
+3 26058960073 296
+8 26058982911 296
+4 26058983622 264
+2 26062631900 0
+3 26062634844 296
+8 26062657581 296
+4 26062658286 264
+2 26066306918 0
+3 26066309817 296
+8 26066332586 296
+4 26066333294 264
+2 26069981561 0
+3 26069984482 296
+8 26070007080 296
+4 26070007785 264
+2 26073609059 0
+6 26073609761 280
+3 26073611815 280
+8 26073615063 280
+4 26073615753 264
+2 26073656656 0
+3 26073659709 296
+8 26073682647 296
+4 26073683371 264
+2 26077285354 0
+3 26077286029 264
+2 26077331239 0
+3 26077334193 296
+8 26077356978 296
+4 26077357699 264
+2 26081006333 0
+3 26081009255 296
+8 26081032007 296
+4 26081032717 264
+2 26084680982 0
+3 26084683875 296
+8 26084706613 296
+4 26084707316 264
+2 26088355950 0
+3 26088358871 296
+8 26088381475 296
+4 26088382186 264
+2 26091983085 0
+6 26091983786 280
+3 26091985814 280
+8 26091989042 280
+4 26091989732 264
+2 26092030654 0
+3 26092033696 296
+8 26092056592 296
+4 26092057310 264
+2 26095659320 0
+3 26095659995 264
+2 26095705573 0
+3 26095708538 296
+8 26095731394 296
+4 26095732105 264
+2 26099380381 0
+3 26099383324 296
+8 26099406056 296
+4 26099406756 264
+2 26103055030 0
+3 26103057929 296
+8 26103080677 296
+4 26103081385 264
+2 26106730015 0
+3 26106732941 296
+8 26106755534 296
+4 26106756241 264
+2 26110357144 0
+6 26110357845 280
+3 26110359906 280
+8 26110363153 280
+4 26110363843 264
+2 26110404746 0
+3 26110407799 296
+8 26110430772 296
+4 26110431496 264
+2 26114033478 0
+3 26114034153 264
+2 26114079731 0
+3 26114082685 296
+8 26114105470 296
+4 26114106191 264
+2 26117754462 0
+3 26117757384 296
+8 26117780120 296
+4 26117780830 264
+2 26121429458 0
+3 26121432352 296
+8 26121455083 296
+4 26121455790 264
+2 26125104057 0
+3 26125106978 296
+8 26125129597 296
+4 26125130307 264
+2 26128731577 0
+6 26128732278 280
+3 26128734306 280
+8 26128737553 280
+4 26128738255 264
+2 26128779146 0
+3 26128782188 296
+8 26128805084 296
+4 26128805802 264
+2 26132407812 0
+3 26132408487 264
+2 26132453696 0
+3 26132456662 296
+8 26132479499 296
+4 26132480225 264
+2 26136128488 0
+3 26136131443 296
+8 26136154180 296
+4 26136154885 264
+2 26139803517 0
+3 26139806416 296
+8 26139829185 296
+4 26139829899 264
+2 26143478160 0
+3 26143481081 296
+8 26143503674 296
+4 26143504379 264
+2 26147105652 0
+6 26147106357 280
+3 26147108413 280
+8 26147111662 280
+4 26147112352 264
+2 26147153255 0
+3 26147156308 296
+8 26147179221 296
+4 26147179945 264
+2 26150781942 0
+3 26150782617 264
+2 26150827827 0
+3 26150830781 296
+8 26150853599 296
+4 26150854320 264
+2 26154502954 0
+3 26154505880 296
+8 26154528634 296
+4 26154529344 264
+2 26158177609 0
+3 26158180502 296
+8 26158203251 296
+4 26158203958 264
+2 26161852588 0
+3 26161855509 296
+8 26161878090 296
+4 26161878801 264
+2 26165479700 0
+6 26165480401 280
+3 26165482429 280
+8 26165485676 280
+4 26165486366 264
+2 26165527270 0
+3 26165530285 296
+8 26165553180 296
+4 26165553898 264
+2 26169155908 0
+3 26169156583 264
+2 26169202161 0
+3 26169205126 296
+8 26169227986 296
+4 26169228701 264
+2 26172876975 0
+3 26172879918 296
+8 26172902655 296
+4 26172903360 264
+2 26176551629 0
+3 26176554528 296
+8 26176577281 296
+4 26176577989 264
+2 26180226619 0
+3 26180229540 296
+8 26180252133 296
+4 26180252838 264
+2 26183853743 0
+6 26183854444 280
+3 26183856505 280
+8 26183859848 280
+4 26183860538 264
+2 26183901345 0
+3 26183904398 296
+8 26183927359 296
+4 26183928083 264
+2 26187530066 0
+3 26187530741 264
+2 26187576319 0
+3 26187579273 296
+8 26187602058 296
+4 26187602779 264
+2 26191251050 0
+3 26191253972 296
+8 26191276708 296
+4 26191277418 264
+2 26194926046 0
+3 26194928940 296
+8 26194951671 296
+4 26194952374 264
+2 26198600645 0
+3 26198603566 296
+8 26198626192 296
+4 26198626903 264
+2 26202228170 0
+6 26202228871 280
+3 26202230921 280
+8 26202234161 280
+4 26202234869 264
+2 26202275762 0
+3 26202278897 296
+8 26202301793 296
+4 26202302511 264
+2 26205904521 0
+3 26205905196 264
+2 26205950405 0
+3 26205953365 296
+8 26205976221 296
+4 26205976947 264
+2 26209625208 0
+3 26209628251 296
+8 26209650989 296
+4 26209651694 264
+2 26213299967 0
+3 26213302893 296
+8 26213325603 296
+4 26213326311 264
+2 26216974941 0
+3 26216977862 296
+8 26217000410 296
+4 26217001115 264
+2 26220602389 0
+6 26220603091 280
+3 26220605145 280
+8 26220608398 280
+4 26220609101 264
+2 26220649617 0
+3 26220652676 296
+8 26220675552 296
+4 26220676276 264
+2 26224278640 0
+3 26224279315 264
+2 26224324525 0
+3 26224327479 296
+8 26224350234 296
+4 26224350955 264
+2 26227999586 0
+3 26228002508 296
+8 26228025211 296
+4 26228025921 264
+2 26231674186 0
+3 26231677079 296
+8 26231699762 296
+4 26231700465 264
+2 26235349099 0
+3 26235352020 296
+8 26235374568 296
+4 26235375279 264
+2 26238976547 0
+6 26238977259 280
+3 26238979287 280
+8 26238982521 280
+4 26238983211 264
+2 26239023759 0
+3 26239026818 296
+8 26239049669 296
+4 26239050387 264
+2 26242652765 0
+3 26242653440 264
+2 26242698650 0
+3 26242701615 296
+8 26242724427 296
+4 26242725138 264
+2 26246373414 0
+3 26246376358 296
+8 26246399089 296
+4 26246399789 264
+2 26250048426 0
+3 26250051325 296
+8 26250074073 296
+4 26250074781 264
+2 26253723048 0
+3 26253725974 296
+8 26253748567 296
+4 26253749272 264
+2 26257350545 0
+6 26257351246 280
+3 26257353307 280
+8 26257356555 280
+4 26257357245 264
+2 26257398148 0
+3 26257401206 296
+8 26257424178 296
+4 26257424902 264
+2 26261026885 0
+3 26261027560 264
+2 26261072769 0
+3 26261075723 296
+8 26261098506 296
+4 26261099227 264
+2 26264747858 0
+3 26264750780 296
+8 26264773516 296
+4 26264774226 264
+2 26268422491 0
+3 26268425384 296
+8 26268448116 296
+4 26268448819 264
+2 26272097453 0
+3 26272100374 296
+8 26272122972 296
+4 26272123683 264
+2 26275724582 0
+6 26275725287 280
+3 26275727339 280
+8 26275730573 280
+4 26275731263 264
+2 26275772179 0
+3 26275775200 296
+8 26275798095 296
+4 26275798813 264
+2 26279400823 0
+3 26279401498 264
+2 26279447076 0
+3 26279450041 296
+8 26279472884 296
+4 26279473600 264
+2 26283121873 0
+3 26283124816 296
+8 26283147559 296
+4 26283148264 264
+2 26286796533 0
+3 26286799433 296
+8 26286822196 296
+4 26286822904 264
+2 26290471534 0
+3 26290474455 296
+8 26290497064 296
+4 26290497769 264
+2 26294098674 0
+6 26294099375 280
+3 26294101424 280
+8 26294104673 280
+4 26294105363 264
+2 26294146266 0
+3 26294149313 296
+8 26294172263 296
+4 26294172987 264
+2 26297774970 0
+3 26297775645 264
+2 26297821223 0
+3 26297824177 296
+8 26297846962 296
+4 26297847683 264
+2 26301495954 0
+3 26301498876 296
+8 26301521632 296
+4 26301522342 264
+2 26305170972 0
+3 26305173865 296
+8 26305196597 296
+4 26305197300 264
+2 26308845571 0
+3 26308848492 296
+8 26308871090 296
+4 26308871801 264
+2 26312473069 0
+6 26312473770 280
+3 26312475808 280
+8 26312479022 280
+4 26312479706 264
+2 26312520649 0
+3 26312523708 296
+8 26312546593 296
+4 26312547311 264
+2 26316149320 0
+3 26316149995 264
+2 26316195205 0
+3 26316198170 296
+8 26316221026 296
+4 26316221737 264
+2 26319870013 0
+3 26319872957 296
+8 26319895688 296
+4 26319896388 264
+2 26323545025 0
+3 26323547925 296
+8 26323570672 296
+4 26323571380 264
+2 26327219647 0
+3 26327222573 296
+8 26327245166 296
+4 26327245871 264
+2 26330847144 0
+6 26330847845 280
+3 26330849923 280
+8 26330853278 280
+4 26330853968 264
+2 26330894763 0
+3 26330897810 296
+8 26330920782 296
+4 26330921506 264
+2 26334523498 0
+3 26334524175 264
+2 26334569385 0
+3 26334572339 296
+8 26334595124 296
+4 26334595845 264
+2 26338244479 0
+3 26338247401 296
+8 26338270137 296
+4 26338270847 264
+2 26341919112 0
+3 26341922006 296
+8 26341944737 296
+4 26341945440 264
+2 26345594074 0
+3 26345596995 296
+8 26345619614 296
+4 26345620324 264
+2 26349221225 0
+6 26349221930 280
+3 26349223960 280
+8 26349227207 280
+4 26349227909 264
+2 26349268800 0
+3 26349271859 296
+8 26349294755 296
+4 26349295473 264
+2 26352897482 0
+3 26352898157 264
+2 26352943735 0
+3 26352946706 296
+8 26352969544 296
+4 26352970255 264
+2 26356618533 0
+3 26356621481 296
+8 26356644230 296
+4 26356644935 264
+2 26360293204 0
+3 26360296103 296
+8 26360318872 296
+4 26360319580 264
+2 26363968210 0
+3 26363971131 296
+8 26363993724 296
+4 26363994429 264
+2 26367595334 0
+6 26367596039 280
+3 26367598085 280
+8 26367601332 280
+4 26367602022 264
+2 26367642925 0
+3 26367645979 296
+8 26367668910 296
+4 26367669638 264
+2 26371271613 0
+3 26371272288 264
+2 26371317866 0
+3 26371320820 296
+8 26371343605 296
+4 26371344326 264
+2 26374992597 0
+3 26374995519 296
+8 26375018271 296
+4 26375018981 264
+2 26378667609 0
+3 26378670502 296
+8 26378693235 296
+4 26378693938 264
+2 26382342209 0
+3 26382345130 296
+8 26382367728 296
+4 26382368439 264
+2 26385969706 0
+6 26385970407 280
+3 26385972440 280
+8 26385975757 280
+4 26385976447 264
+2 26386017281 0
+3 26386020340 296
+8 26386043236 296
+4 26386043954 264
+2 26389645963 0
+3 26389646638 264
+2 26389691848 0
+3 26389694813 296
+8 26389717669 296
+4 26389718380 264
+2 26393366656 0
+3 26393369600 296
+8 26393392331 296
+4 26393393031 264
+2 26397041668 0
+3 26397044568 296
+8 26397067315 296
+4 26397068023 264
+2 26400716290 0
+3 26400719217 296
+8 26400741809 296
+4 26400742514 264
+2 26404343787 0
+6 26404344489 280
+3 26404346560 280
+8 26404349808 280
+4 26404350498 264
+2 26404391401 0
+3 26404394459 296
+8 26404417424 296
+4 26404418148 264
+2 26408020127 0
+3 26408020802 264
+2 26408066011 0
+3 26408068965 296
+8 26408091748 296
+4 26408092469 264
+2 26411740737 0
+3 26411743659 296
+8 26411766395 296
+4 26411767105 264
+2 26415415733 0
+3 26415418627 296
+8 26415441364 296
+4 26415442071 264
+2 26419090701 0
+3 26419093622 296
+8 26419116241 296
+4 26419116957 264
+2 26422717852 0
+6 26422718557 280
+3 26422720580 280
+8 26422723828 280
+4 26422724530 264
+2 26422765421 0
+3 26422768480 296
+8 26422791403 296
+4 26422792121 264
+2 26426394131 0
+3 26426394806 264
+2 26426440384 0
+3 26426443349 296
+8 26426466187 296
+4 26426466898 264
+2 26430115176 0
+3 26430118124 296
+8 26430140862 296
+4 26430141567 264
+2 26433789836 0
+3 26433792740 296
+8 26433815510 296
+4 26433816218 264
+2 26437464848 0
+3 26437467774 296
+8 26437490367 296
+4 26437491072 264
+2 26441091977 0
+6 26441092678 280
+3 26441094733 280
+8 26441097981 280
+4 26441098671 264
+2 26441139574 0
+3 26441142632 296
+8 26441165564 296
+4 26441166288 264
+2 26444768267 0
+3 26444768942 264
+2 26444814520 0
+3 26444817474 296
+8 26444840259 296
+4 26444840980 264
+2 26448489251 0
+3 26448492173 296
+8 26448514925 296
+4 26448515635 264
+2 26452163900 0
+3 26452166793 296
+8 26452189526 296
+4 26452190233 264
+2 26455838863 0
+3 26455841784 296
+8 26455864382 296
+4 26455865093 264
+2 26459466360 0
+6 26459467061 280
+3 26459469084 280
+8 26459472589 280
+4 26459473279 264
+2 26459513556 0
+3 26459516615 296
+8 26459539510 296
+4 26459540228 264
+2 26463142606 0
+3 26463143281 264
+2 26463188491 0
+3 26463191456 296
+8 26463214312 296
+4 26463215023 264
+2 26466863299 0
+3 26466866243 296
+8 26466888974 296
+4 26466889674 264
+2 26470538311 0
+3 26470541211 296
+8 26470563958 296
+4 26470564666 264
+2 26474212933 0
+3 26474215859 296
+8 26474238452 296
+4 26474239157 264
+2 26477840430 0
+6 26477841131 280
+3 26477843180 280
+8 26477846442 280
+4 26477847132 264
+2 26477888022 0
+3 26477891080 296
+8 26477914045 296
+4 26477914769 264
+2 26481516748 0
+3 26481517423 264
+2 26481562632 0
+3 26481565586 296
+8 26481588377 296
+4 26481589098 264
+2 26485237369 0
+3 26485240295 296
+8 26485263032 296
+4 26485263742 264
+2 26488912370 0
+3 26488915263 296
+8 26488938012 296
+4 26488938719 264
+2 26492587349 0
+3 26492590270 296
+8 26492612868 296
+4 26492613579 264
+2 26496214478 0
+6 26496215179 280
+3 26496217202 280
+8 26496220449 280
+4 26496221139 264
+2 26496262042 0
+3 26496265063 296
+8 26496287942 296
+4 26496288660 264
+2 26499890669 0
+3 26499891344 264
+2 26499936922 0
+3 26499939887 296
+8 26499962725 296
+4 26499963436 264
+2 26503611714 0
+3 26503614658 296
+8 26503637395 296
+4 26503638100 264
+2 26507286369 0
+3 26507289273 296
+8 26507312043 296
+4 26507312751 264
+2 26510961381 0
+3 26510964307 296
+8 26510986900 296
+4 26510987605 264
+2 26514588510 0
+6 26514589211 280
+3 26514591266 280
+8 26514594514 280
+4 26514595204 264
+2 26514636107 0
+3 26514639165 296
+8 26514662097 296
+4 26514662821 264
+2 26518264800 0
+3 26518265475 264
+2 26518311053 0
+3 26518314007 296
+8 26518336792 296
+4 26518337513 264
+2 26521985784 0
+3 26521988706 296
+8 26522011458 296
+4 26522012168 264
+2 26525660796 0
+3 26525663689 296
+8 26525686422 296
+4 26525687129 264
+2 26529335396 0
+3 26529338317 296
+8 26529360915 296
+4 26529361626 264
+2 26532962893 0
+6 26532963594 280
+3 26532965622 280
+8 26532968864 280
+4 26532969554 264
+2 26533010463 0
+3 26533013522 296
+8 26533036412 296
+4 26533037130 264
+2 26536639139 0
+3 26536639814 264
+2 26536685024 0
+3 26536687989 296
+8 26536710845 296
+4 26536711556 264
+2 26540359832 0
+3 26540362776 296
+8 26540385507 296
+4 26540386207 264
+2 26544034844 0
+3 26544037744 296
+8 26544060491 296
+4 26544061199 264
+2 26547709466 0
+3 26547712392 296
+8 26547734990 296
+4 26547735695 264
+2 26551336969 0
+6 26551337670 280
+3 26551339719 280
+8 26551342967 280
+4 26551343657 264
+2 26551384560 0
+3 26551387624 296
+8 26551410589 296
+4 26551411313 264
+2 26555013292 0
+3 26555013967 264
+2 26555059176 0
+3 26555062130 296
+8 26555084932 296
+4 26555085653 264
+2 26558734287 0
+3 26558737209 296
+8 26558759945 296
+4 26558760655 264
+2 26562408920 0
+3 26562411813 296
+8 26562434545 296
+4 26562435252 264
+2 26566083882 0
+3 26566086803 296
+8 26566109401 296
+4 26566110112 264
+2 26569711011 0
+6 26569711712 280
+3 26569713735 280
+8 26569716993 280
+4 26569717683 264
+2 26569758575 0
+3 26569761611 296
+8 26569784508 296
+4 26569785226 264
+2 26573387235 0
+3 26573387910 264
+2 26573433488 0
+3 26573436454 296
+8 26573459310 296
+4 26573460036 264
+2 26577108302 0
+3 26577111345 296
+8 26577134083 296
+4 26577134783 264
+2 26580783061 0
+3 26580785987 296
+8 26580808691 296
+4 26580809399 264
+2 26584458029 0
+3 26584460951 296
+8 26584483493 296
+4 26584484198 264
+2 26588085103 0
+6 26588085804 280
+3 26588087860 280
+8 26588091107 280
+4 26588091810 264
+2 26588132700 0
+3 26588135758 296
+8 26588158617 296
+4 26588159341 264
+2 26591761338 0
+3 26591762013 264
+2 26591807591 0
+3 26591810545 296
+8 26591833303 296
+4 26591834024 264
+2 26595482295 0
+3 26595485217 296
+8 26595507920 296
+4 26595508630 264
+2 26599157258 0
+3 26599160151 296
+8 26599182834 296
+4 26599183541 264
+2 26602832171 0
+3 26602835092 296
+8 26602857640 296
+4 26602858351 264
+2 26606459250 0
+6 26606459951 280
+3 26606461979 280
+8 26606465226 280
+4 26606465916 264
+2 26606506820 0
+3 26606509879 296
+8 26606532714 296
+4 26606533432 264
+2 26610135441 0
+3 26610136116 264
+2 26610181694 0
+3 26610184659 296
+8 26610207472 296
+4 26610208188 264
+2 26613856464 0
+3 26613859408 296
+8 26613882146 296
+4 26613882846 264
+2 26617531487 0
+3 26617534387 296
+8 26617557140 296
+4 26617557848 264
+2 26621206114 0
+3 26621209036 296
+8 26621231628 296
+4 26621232333 264
+2 26624833606 0
+6 26624834307 280
+3 26624836351 280
+8 26624839712 280
+4 26624840402 264
+2 26624881192 0
+3 26624884246 296
+8 26624907210 296
+4 26624907934 264
+2 26628509913 0
+3 26628510588 264
+2 26628555797 0
+3 26628558751 296
+8 26628581534 296
+4 26628582255 264
+2 26632230886 0
+3 26632233808 296
+8 26632256544 296
+4 26632257254 264
+2 26635905519 0
+3 26635908412 296
+8 26635931144 296
+4 26635931851 264
+2 26639580481 0
+3 26639583402 296
+8 26639606000 296
+4 26639606711 264
+2 26643207610 0
+6 26643208311 280
+3 26643210344 280
+8 26643213592 280
+4 26643214282 264
+2 26643255185 0
+3 26643258206 296
+8 26643281085 296
+4 26643281803 264
+2 26646883812 0
+3 26646884487 264
+2 26646930065 0
+3 26646933030 296
+8 26646955868 296
+4 26646956579 264
+2 26650604857 0
+3 26650607801 296
+8 26650630538 296
+4 26650631243 264
+2 26654279875 0
+3 26654282779 296
+8 26654305549 296
+4 26654306257 264
+2 26657954524 0
+3 26657957450 296
+8 26657980043 296
+4 26657980748 264
+2 26661582021 0
+6 26661582722 280
+3 26661584766 280
+8 26661588014 280
+4 26661588704 264
+2 26661629239 0
+3 26661632297 296
+8 26661655237 296
+4 26661655961 264
+2 26665258311 0
+3 26665258986 264
+2 26665304196 0
+3 26665307150 296
+8 26665329935 296
+4 26665330656 264
+2 26668978927 0
+3 26668981849 296
+8 26669004601 296
+4 26669005311 264
+2 26672653939 0
+3 26672656832 296
+8 26672679565 296
+4 26672680272 264
+2 26676328539 0
+3 26676331460 296
+8 26676354058 296
+4 26676354769 264
+2 26679956036 0
+6 26679956737 280
+3 26679958765 280
+8 26679962007 280
+4 26679962697 264
+2 26680003606 0
+3 26680006665 296
+8 26680029555 296
+4 26680030273 264
+2 26683632282 0
+3 26683632957 264
+2 26683678535 0
+3 26683681506 296
+8 26683704362 296
+4 26683705073 264
+2 26687353349 0
+3 26687356293 296
+8 26687379042 296
+4 26687379742 264
+2 26691028020 0
+3 26691030920 296
+8 26691053667 296
+4 26691054375 264
+2 26694703005 0
+3 26694705931 296
+8 26694728524 296
+4 26694729229 264
+2 26698330134 0
+6 26698330835 280
+3 26698332884 280
+8 26698336132 280
+4 26698336822 264
+2 26698377725 0
+3 26698380779 296
+8 26698403748 296
+4 26698404472 264
+2 26702006446 0
+3 26702007121 264
+2 26702052330 0
+3 26702055284 296
+8 26702078067 296
+4 26702078788 264
+2 26705727419 0
+3 26705730341 296
+8 26705753077 296
+4 26705753787 264
+2 26709402052 0
+3 26709404945 296
+8 26709427677 296
+4 26709428384 264
+2 26713077014 0
+3 26713079935 296
+8 26713102533 296
+4 26713103244 264
+2 26716704143 0
+6 26716704844 280
+3 26716706877 280
+8 26716710125 280
+4 26716710815 264
+2 26716751718 0
+3 26716754739 296
+8 26716777618 296
+4 26716778336 264
+2 26720380345 0
+3 26720381020 264
+2 26720426598 0
+3 26720429563 296
+8 26720452401 296
+4 26720453112 264
+2 26724101390 0
+3 26724104334 296
+8 26724127071 296
+4 26724127776 264
+2 26727776408 0
+3 26727779312 296
+8 26727802082 296
+4 26727802790 264
+2 26731451057 0
+3 26731453983 296
+8 26731476576 296
+4 26731477281 264
+2 26735078554 0
+6 26735079255 280
+3 26735081304 280
+8 26735084553 280
+4 26735085243 264
+2 26735126146 0
+3 26735129204 296
+8 26735152136 296
+4 26735152860 264
+2 26738754839 0
+3 26738755514 264
+2 26738800723 0
+3 26738803677 296
+8 26738826460 296
+4 26738827181 264
+2 26742475812 0
+3 26742478734 296
+8 26742501486 296
+4 26742502196 264
+2 26746150461 0
+3 26746153354 296
+8 26746176092 296
+4 26746176799 264
+2 26749825429 0
+3 26749828350 296
+8 26749850948 296
+4 26749851659 264
+2 26753452558 0
+6 26753453259 280
+3 26753455282 280
+8 26753458523 280
+4 26753459213 264
+2 26753500122 0
+3 26753503181 296
+8 26753526082 296
+4 26753526800 264
+2 26757128810 0
+3 26757129485 264
+2 26757175063 0
+3 26757178028 296
+8 26757200884 296
+4 26757201595 264
+2 26760849871 0
+3 26760852815 296
+8 26760875546 296
+4 26760876246 264
+2 26764524520 0
+3 26764527420 296
+8 26764550167 296
+4 26764550875 264
+2 26768199505 0
+3 26768202431 296
+8 26768225024 296
+4 26768225729 264
+2 26771826634 0
+6 26771827335 280
+3 26771829384 280
+8 26771832683 280
+4 26771833373 264
+2 26771874225 0
+3 26771877279 296
+8 26771900243 296
+4 26771900967 264
+2 26775502946 0
+3 26775503621 264
+2 26775549199 0
+3 26775552153 296
+8 26775574938 296
+4 26775575659 264
+2 26779223930 0
+3 26779226852 296
+8 26779249588 296
+4 26779250298 264
+2 26782898926 0
+3 26782901819 296
+8 26782924551 296
+4 26782925258 264
+2 26786573525 0
+3 26786576446 296
+8 26786599044 296
+4 26786599755 264
+2 26790201023 0
+6 26790201724 280
+3 26790203751 280
+8 26790206999 280
+4 26790207689 264
+2 26790248592 0
+3 26790251613 296
+8 26790274492 296
+4 26790275210 264
+2 26793877219 0
+3 26793877894 264
+2 26793923104 0
+3 26793926069 296
+8 26793948907 296
+4 26793949618 264
+2 26797598259 0
+3 26797601207 296
+8 26797623950 296
+4 26797624655 264
+2 26801272924 0
+3 26801275824 296
+8 26801298593 296
+4 26801299301 264
+2 26804947568 0
+3 26804950494 296
+8 26804973087 296
+4 26804973792 264
+2 26808575065 0
+6 26808575766 280
+3 26808577815 280
+8 26808581064 280
+4 26808581754 264
+2 26808622657 0
+3 26808625715 296
+8 26808648647 296
+4 26808649371 264
+2 26812251350 0
+3 26812252025 264
+2 26812297234 0
+3 26812300188 296
+8 26812322979 296
+4 26812323700 264
+2 26815972334 0
+3 26815975256 296
+8 26815998014 296
+4 26815998724 264
+2 26819646989 0
+3 26819649882 296
+8 26819672614 296
+4 26819673317 264
+2 26823321951 0
+3 26823324872 296
+8 26823347470 296
+4 26823348181 264
+2 26826949080 0
+6 26826949781 280
+3 26826951804 280
+8 26826955032 280
+4 26826955722 264
+2 26826996644 0
+3 26826999703 296
+8 26827022599 296
+4 26827023317 264
+2 26830625326 0
+3 26830626001 264
+2 26830671579 0
+3 26830674544 296
+8 26830697401 296
+4 26830698112 264
+2 26834346393 0
+3 26834349337 296
+8 26834372068 296
+4 26834372773 264
+2 26838021042 0
+3 26838023942 296
+8 26838046689 296
+4 26838047418 264
+2 26841696027 0
+3 26841698953 296
+8 26841721546 296
+4 26841722251 264
+2 26845323524 0
+6 26845324225 280
+3 26845326281 280
+8 26845329528 280
+4 26845330218 264
+2 26845370753 0
+3 26845373811 296
+8 26845396776 296
+4 26845397500 264
+2 26848999847 0
+3 26849000522 264
+2 26849045732 0
+3 26849048686 296
+8 26849071471 296
+4 26849072192 264
+2 26852720463 0
+3 26852723385 296
+8 26852746121 296
+4 26852746831 264
+2 26856395459 0
+3 26856398352 296
+8 26856421084 296
+4 26856421791 264
+2 26860070058 0
+3 26860072979 296
+8 26860095577 296
+4 26860096288 264
+2 26863697556 0
+6 26863698257 280
+3 26863700307 280
+8 26863703554 280
+4 26863704244 264
+2 26863745147 0
+3 26863748168 296
+8 26863771047 296
+4 26863771765 264
+2 26867373774 0
+3 26867374449 264
+2 26867420027 0
+3 26867422992 296
+8 26867445830 296
+4 26867446541 264
+2 26871094819 0
+3 26871097763 296
+8 26871120500 296
+4 26871121205 264
+2 26874769474 0
+3 26874772378 296
+8 26874795148 296
+4 26874795856 264
+2 26878444486 0
+3 26878447412 296
+8 26878470010 296
+4 26878470719 264
+2 26882071620 0
+6 26882072321 280
+3 26882074365 280
+8 26882077613 280
+4 26882078303 264
+2 26882119206 0
+3 26882122270 296
+8 26882145202 296
+4 26882145926 264
+2 26885747905 0
+3 26885748580 264
+2 26885794158 0
+3 26885797112 296
+8 26885819911 296
+4 26885820632 264
+2 26889468900 0
+3 26889471822 296
+8 26889494574 296
+4 26889495284 264
+2 26893143549 0
+3 26893146442 296
+8 26893169175 296
+4 26893169882 264
+2 26896818512 0
+3 26896821433 296
+8 26896844031 296
+4 26896844742 264
+2 26900445641 0
+6 26900446342 280
+3 26900448369 280
+8 26900451611 280
+4 26900452301 264
+2 26900493210 0
+3 26900496269 296
+8 26900519165 296
+4 26900519883 264
+2 26904121892 0
+3 26904122567 264
+2 26904168145 0
+3 26904171110 296
+8 26904193967 296
+4 26904194678 264
+2 26907842959 0
+3 26907845903 296
+8 26907868634 296
+4 26907869334 264
+2 26911517971 0
+3 26911520871 296
+8 26911543618 296
+4 26911544326 264
+2 26915192593 0
+3 26915195519 296
+8 26915218112 296
+4 26915218817 264
+2 26918820090 0
+6 26918820791 280
+3 26918822847 280
+8 26918826228 280
+4 26918826918 264
+2 26918867319 0
+3 26918870377 296
+8 26918893342 296
+4 26918894066 264
+2 26922496413 0
+3 26922497088 264
+2 26922542298 0
+3 26922545252 296
+8 26922568037 296
+4 26922568758 264
+2 26926217029 0
+3 26926219951 296
+8 26926242687 296
+4 26926243397 264
+2 26929892025 0
+3 26929894918 296
+8 26929917650 296
+4 26929918357 264
+2 26933566624 0
+3 26933569545 296
+8 26933592143 296
+4 26933592854 264
+2 26937194122 0
+6 26937194823 280
+3 26937196873 280
+8 26937200131 280
+4 26937200821 264
+2 26937241713 0
+3 26937244749 296
+8 26937267640 296
+4 26937268358 264
+2 26940870368 0
+3 26940871043 264
+2 26940916621 0
+3 26940919585 296
+8 26940942442 296
+4 26940943168 264
+2 26944591429 0
+3 26944594472 296
+8 26944617221 296
+4 26944617921 264
+2 26948266199 0
+3 26948269125 296
+8 26948291829 296
+4 26948292543 264
+2 26951940804 0
+3 26951943726 296
+8 26951966268 296
+4 26951966973 264
+2 26955568247 0
+6 26955568948 280
+3 26955570997 280
+8 26955574245 280
+4 26955574948 264
+2 26955615838 0
+3 26955618896 296
+8 26955641755 296
+4 26955642479 264
+2 26959244476 0
+3 26959245151 264
+2 26959290729 0
+3 26959293683 296
+8 26959316441 296
+4 26959317162 264
+2 26962965433 0
+3 26962968355 296
+8 26962991058 296
+4 26962991768 264
+2 26966640396 0
+3 26966643289 296
+8 26966665972 296
+4 26966666679 264
+2 26970314946 0
+3 26970317867 296
+8 26970340415 296
+4 26970341126 264
+2 26973942394 0
+6 26973943095 280
+3 26973945128 280
+8 26973948375 280
+4 26973949065 264
+2 26973989969 0
+3 26973993028 296
+8 26974015863 296
+4 26974016581 264
+2 26977618590 0
+3 26977619265 264
+2 26977664843 0
+3 26977667808 296
+8 26977690621 296
+4 26977691332 264
+2 26981339613 0
+3 26981342557 296
+8 26981365288 296
+4 26981365988 264
+2 26985014262 0
+3 26985017162 296
+8 26985039909 296
+4 26985040617 264
+2 26988689247 0
+3 26988692173 296
+8 26988714766 296
+4 26988715471 264
+2 26992316376 0
+6 26992317077 280
+3 26992319126 280
+8 26992322374 280
+4 26992323064 264
+2 26992363967 0
+3 26992367021 296
+8 26992389999 296
+4 26992390723 264
+2 26995992704 0
+3 26995993379 264
+2 26996038957 0
+3 26996041911 296
+8 26996064694 296
+4 26996065415 264
+2 26999713683 0
+3 26999716605 296
+8 26999739341 296
+4 26999740051 264
+2 27003388679 0
+3 27003391572 296
+8 27003414304 296
+4 27003415011 264
+2 27007063278 0
+3 27007066199 296
+8 27007088797 296
+4 27007089508 264
+2 27010690776 0
+6 27010691477 280
+3 27010693527 280
+8 27010696774 280
+4 27010697464 264
+2 27010738367 0
+3 27010741388 296
+8 27010764267 296
+4 27010764985 264
+2 27014366994 0
+3 27014367669 264
+2 27014413247 0
+3 27014416212 296
+8 27014439050 296
+4 27014439761 264
+2 27018088039 0
+3 27018090983 296
+8 27018113731 296
+4 27018114436 264
+2 27021762705 0
+3 27021765609 296
+8 27021788379 296
+4 27021789087 264
+2 27025437717 0
+3 27025440643 296
+8 27025463236 296
+4 27025463941 264
+2 27029064846 0
+6 27029065547 280
+3 27029067596 280
+8 27029070844 280
+4 27029071534 264
+2 27029112437 0
+3 27029115491 296
+8 27029138422 296
+4 27029139146 264
+2 27032741125 0
+3 27032741800 264
+2 27032787378 0
+3 27032790332 296
+8 27032813117 296
+4 27032813838 264
+2 27036462109 0
+3 27036465031 296
+8 27036487783 296
+4 27036488493 264
+2 27040136758 0
+3 27040139651 296
+8 27040162384 296
+4 27040163091 264
+2 27043811721 0
+3 27043814642 296
+8 27043837240 296
+4 27043837951 264
+2 27047438850 0
+6 27047439551 280
+3 27047441584 280
+8 27047444826 280
+4 27047445516 264
+2 27047486425 0
+3 27047489484 296
+8 27047512374 296
+4 27047513092 264
+2 27051115101 0
+3 27051115776 264
+2 27051161354 0
+3 27051164319 296
+8 27051187176 296
+4 27051187887 264
+2 27054836168 0
+3 27054839112 296
+8 27054861843 296
+4 27054862543 264
+2 27058511180 0
+3 27058514080 296
+8 27058536827 296
+4 27058537535 264
+2 27062185802 0
+3 27062188729 296
+8 27062211321 296
+4 27062212026 264
+2 27065813299 0
+6 27065814002 280
+3 27065816071 280
+8 27065819333 280
+4 27065820023 264
+2 27065860544 0
+3 27065863598 296
+8 27065886562 296
+4 27065887286 264
+2 27069489633 0
+3 27069490308 264
+2 27069535518 0
+3 27069538472 296
+8 27069561257 296
+4 27069561978 264
+2 27073210249 0
+3 27073213171 296
+8 27073235907 296
+4 27073236617 264
+2 27076885245 0
+3 27076888138 296
+8 27076910870 296
+4 27076911577 264
+2 27080559844 0
+3 27080562765 296
+8 27080585363 296
+4 27080586074 264
+2 27084187342 0
+6 27084188043 280
+3 27084190076 280
+8 27084193323 280
+4 27084194013 264
+2 27084234917 0
+3 27084237936 296
+8 27084260833 296
+4 27084261551 264
+2 27087863560 0
+3 27087864235 264
+2 27087909813 0
+3 27087912778 296
+8 27087935616 296
+4 27087936327 264
+2 27091584605 0
+3 27091587549 296
+8 27091610286 296
+4 27091610991 264
+2 27095259260 0
+3 27095262164 296
+8 27095284934 296
+4 27095285642 264
+2 27098934272 0
+3 27098937198 296
+8 27098959797 296
+4 27098960504 264
+2 27102561406 0
+6 27102562107 280
+3 27102564163 280
+8 27102567410 280
+4 27102568100 264
+2 27102609003 0
+3 27102612057 296
+8 27102634993 296
+4 27102635717 264
+2 27106237696 0
+3 27106238371 264
+2 27106283949 0
+3 27106286903 296
+8 27106309686 296
+4 27106310407 264
+2 27109958675 0
+3 27109961597 296
+8 27109984349 296
+4 27109985059 264
+2 27113633324 0
+3 27113636217 296
+8 27113658950 296
+4 27113659657 264
+2 27117308287 0
+3 27117311208 296
+8 27117333806 296
+4 27117334517 264
+2 27120935784 0
+6 27120936485 280
+3 27120938508 280
+8 27120941749 280
+4 27120942439 264
+2 27120982980 0
+3 27120986039 296
+8 27121008929 296
+4 27121009647 264
+2 27124612025 0
+3 27124612700 264
+2 27124657909 0
+3 27124660874 296
+8 27124683731 296
+4 27124684442 264
+2 27128332723 0
+3 27128335672 296
+8 27128358405 296
+4 27128359105 264
+2 27132007746 0
+3 27132010646 296
+8 27132033393 296
+4 27132034101 264
+2 27135682368 0
+3 27135685294 296
+8 27135707887 296
+4 27135708592 264
+2 27139309865 0
+6 27139310566 280
+3 27139312644 280
+8 27139315891 280
+4 27139316581 264
+2 27139357116 0
+3 27139360174 296
+8 27139383139 296
+4 27139383863 264
+2 27142986210 0
+3 27142986885 264
+2 27143032095 0
+3 27143035049 296
+8 27143057837 296
+4 27143058558 264
+2 27146706826 0
+3 27146709748 296
+8 27146732484 296
+4 27146733200 264
+2 27150381822 0
+3 27150384715 296
+8 27150407447 296
+4 27150408154 264
+2 27154056784 0
+3 27154059705 296
+8 27154082303 296
+4 27154083014 264
+2 27157683913 0
+6 27157684625 280
+3 27157686648 280
+8 27157689895 280
+4 27157690585 264
+2 27157731488 0
+3 27157734509 296
+8 27157757481 296
+4 27157758199 264
+2 27161360209 0
+3 27161360884 264
+2 27161406462 0
+3 27161409433 296
+8 27161432270 296
+4 27161432981 264
+2 27165081259 0
+3 27165084203 296
+8 27165106940 296
+4 27165107645 264
+2 27168755914 0
+3 27168758818 296
+8 27168781588 296
+4 27168782296 264
+2 27172430926 0
+3 27172433852 296
+8 27172456445 296
+4 27172457150 264
+2 27176058055 0
+6 27176058756 280
+3 27176060811 280
+8 27176064059 280
+4 27176064749 264
+2 27176105652 0
+3 27176108710 296
+8 27176131642 296
+4 27176132366 264
+2 27179734345 0
+3 27179735020 264
+2 27179780598 0
+3 27179783552 296
+8 27179806337 296
+4 27179807058 264
+2 27183455329 0
+3 27183458251 296
+8 27183481003 296
+4 27183481713 264
+2 27187129978 0
+3 27187132871 296
+8 27187155604 296
+4 27187156311 264
+2 27190804941 0
+3 27190807862 296
+8 27190830460 296
+4 27190831171 264
+2 27194432070 0
+6 27194432771 280
+3 27194434804 280
+8 27194438031 280
+4 27194438715 264
+2 27194479645 0
+3 27194482704 296
+8 27194505588 296
+4 27194506306 264
+2 27198108316 0
+3 27198108991 264
+2 27198154569 0
+3 27198157534 296
+8 27198180390 296
+4 27198181101 264
+2 27201829377 0
+3 27201832321 296
+8 27201855052 296
+4 27201855752 264
+2 27205504389 0
+3 27205507289 296
+8 27205530036 296
+4 27205530744 264
+2 27209179011 0
+3 27209181937 296
+8 27209204535 296
+4 27209205244 264
+2 27212806514 0
+6 27212807215 280
+3 27212809264 280
+8 27212812789 280
+4 27212813479 264
+2 27212853737 0
+3 27212856795 296
+8 27212879768 296
+4 27212880492 264
+2 27216482842 0
+3 27216483517 264
+2 27216528727 0
+3 27216531681 296
+8 27216554480 296
+4 27216555201 264
+2 27220203469 0
+3 27220206391 296
+8 27220229127 296
+4 27220229837 264
+2 27223878465 0
+3 27223881358 296
+8 27223904090 296
+4 27223904797 264
+2 27227553064 0
+3 27227555985 296
+8 27227578583 296
+4 27227579294 264
+2 27231180562 0
+6 27231181267 280
+3 27231183295 280
+8 27231186543 280
+4 27231187233 264
+2 27231228137 0
+3 27231231156 296
+8 27231254047 296
+4 27231254765 264
+2 27234856775 0
+3 27234857450 264
+2 27234903028 0
+3 27234905993 296
+8 27234928831 296
+4 27234929542 264
+2 27238577820 0
+3 27238580768 296
+8 27238603506 296
+4 27238604211 264
+2 27242252480 0
+3 27242255384 296
+8 27242278154 296
+4 27242278862 264
+2 27245927492 0
+3 27245930418 296
+8 27245953011 296
+4 27245953716 264
+2 27249554621 0
+6 27249555322 280
+3 27249557383 280
+8 27249560630 280
+4 27249561320 264
+2 27249602223 0
+3 27249605277 296
+8 27249628216 296
+4 27249628940 264
+2 27253230922 0
+3 27253231597 264
+2 27253277175 0
+3 27253280129 296
+8 27253302914 296
+4 27253303635 264
+2 27256951906 0
+3 27256954828 296
+8 27256977580 296
+4 27256978290 264
+2 27260626555 0
+3 27260629448 296
+8 27260652181 296
+4 27260652888 264
+2 27264301518 0
+3 27264304439 296
+8 27264327037 296
+4 27264327748 264
+2 27267928647 0
+6 27267929348 280
+3 27267931398 280
+8 27267934639 280
+4 27267935329 264
+2 27267976238 0
+3 27267979297 296
+8 27268002193 296
+4 27268002911 264
+2 27271604920 0
+3 27271605595 264
+2 27271651173 0
+3 27271654138 296
+8 27271676995 296
+4 27271677706 264
+2 27275325987 0
+3 27275328931 296
+8 27275351669 296
+4 27275352369 264
+2 27279001010 0
+3 27279003910 296
+8 27279026657 296
+4 27279027365 264
+2 27282675632 0
+3 27282678564 296
+8 27282701156 296
+4 27282701861 264
+2 27286303135 0
+6 27286303840 280
+3 27286305891 280
+8 27286309155 280
+4 27286309845 264
+2 27286350363 0
+3 27286353417 296
+8 27286376389 296
+4 27286377113 264
+2 27289979463 0
+3 27289980138 264
+2 27290025348 0
+3 27290028302 296
+8 27290051087 296
+4 27290051808 264
+2 27293700079 0
+3 27293703001 296
+8 27293725737 296
+4 27293726447 264
+2 27297375075 0
+3 27297377968 296
+8 27297400700 296
+4 27297401407 264
+2 27301049674 0
+3 27301052595 296
+8 27301075193 296
+4 27301075904 264
+2 27304677172 0
+6 27304677873 280
+3 27304679901 280
+8 27304683159 280
+4 27304683849 264
+2 27304724741 0
+3 27304727777 296
+8 27304750674 296
+4 27304751392 264
+2 27308353401 0
+3 27308354076 264
+2 27308399654 0
+3 27308402620 296
+8 27308425476 296
+4 27308426202 264
+2 27312074468 0
+3 27312077511 296
+8 27312100249 296
+4 27312100949 264
+2 27315749227 0
+3 27315752153 296
+8 27315774857 296
+4 27315775565 264
+2 27319423832 0
+3 27319426754 296
+8 27319449296 296
+4 27319450001 264
+2 27323051275 0
+6 27323051976 280
+3 27323054025 280
+8 27323057273 280
+4 27323057976 264
+2 27323098866 0
+3 27323101924 296
+8 27323124790 296
+4 27323125514 264
+2 27326727510 0
+3 27326728185 264
+2 27326773763 0
+3 27326776717 296
+8 27326799472 296
+4 27326800193 264
+2 27330448461 0
+3 27330451383 296
+8 27330474086 296
+4 27330474796 264
+2 27334123424 0
+3 27334126317 296
+8 27334149000 296
+4 27334149707 264
+2 27337797974 0
+3 27337800895 296
+8 27337823443 296
+4 27337824154 264
+2 27341425422 0
+6 27341426123 280
+3 27341428173 280
+8 27341431420 280
+4 27341432110 264
+2 27341473013 0
+3 27341476072 296
+8 27341498918 296
+4 27341499636 264
+2 27345101646 0
+3 27345102321 264
+2 27345147899 0
+3 27345150864 296
+8 27345173682 296
+4 27345174393 264
+2 27348822674 0
+3 27348825618 296
+8 27348848349 296
+4 27348849049 264
+2 27352497323 0
+3 27352500223 296
+8 27352522970 296
+4 27352523678 264
+2 27356172308 0
+3 27356175234 296
+8 27356197827 296
+4 27356198532 264
+2 27359799437 0
+6 27359800138 280
+3 27359802187 280
+8 27359805486 280
+4 27359806176 264
+2 27359847028 0
+3 27359850082 296
+8 27359873054 296
+4 27359873778 264
+2 27363475760 0
+3 27363476435 264
+2 27363522013 0
+3 27363524967 296
+8 27363547752 296
+4 27363548473 264
+2 27367196744 0
+3 27367199666 296
+8 27367222402 296
+4 27367223112 264
+2 27370871740 0
+3 27370874633 296
+8 27370897365 296
+4 27370898072 264
+2 27374546339 0
+3 27374549260 296
+8 27374571858 296
+4 27374572569 264
+2 27378173837 0
+6 27378174538 280
+3 27378176576 280
+8 27378179923 280
+4 27378180613 264
+2 27378221417 0
+3 27378224438 296
+8 27378247322 296
+4 27378248040 264
+2 27381850050 0
+3 27381850725 264
+2 27381895934 0
+3 27381898899 296
+8 27381921737 296
+4 27381922448 264
+2 27385571089 0
+3 27385574033 296
+8 27385596770 296
+4 27385597475 264
+2 27389245744 0
+3 27389248648 296
+8 27389271418 296
+4 27389272126 264
+2 27392920393 0
+3 27392923320 296
+8 27392945912 296
+4 27392946617 264
+2 27396547890 0
+6 27396548591 280
+3 27396550640 280
+8 27396553889 280
+4 27396554592 264
+2 27396595482 0
+3 27396598540 296
+8 27396621480 296
+4 27396622204 264
+2 27400224186 0
+3 27400224861 264
+2 27400270070 0
+3 27400273024 296
+8 27400295807 296
+4 27400296528 264
+2 27403945159 0
+3 27403948081 296
+8 27403970833 296
+4 27403971543 264
+2 27407619808 0
+3 27407622701 296
+8 27407645439 296
+4 27407646146 264
+2 27411294776 0
+3 27411297697 296
+8 27411320295 296
+4 27411321006 264
+2 27414921905 0
+6 27414922606 280
+3 27414924640 280
+8 27414927881 280
+4 27414928571 264
+2 27414969480 0
+3 27414972539 296
+8 27414995446 296
+4 27414996164 264
+2 27418598173 0
+3 27418598848 264
+2 27418644426 0
+3 27418647391 296
+8 27418670248 296
+4 27418670959 264
+2 27422319240 0
+3 27422322184 296
+8 27422344915 296
+4 27422345615 264
+2 27425993889 0
+3 27425996789 296
+8 27426019536 296
+4 27426020244 264
+2 27429668874 0
+3 27429671800 296
+8 27429694393 296
+4 27429695102 264
+2 27433296003 0
+6 27433296704 280
+3 27433298765 280
+8 27433302012 280
+4 27433302702 264
+2 27433343605 0
+3 27433346659 296
+8 27433369635 296
+4 27433370359 264
+2 27436972342 0
+3 27436973017 264
+2 27437018595 0
+3 27437021549 296
+8 27437044332 296
+4 27437045053 264
+2 27440693321 0
+3 27440696243 296
+8 27440718979 296
+4 27440719689 264
+2 27444368317 0
+3 27444371210 296
+8 27444393942 296
+4 27444394649 264
+2 27448042916 0
+3 27448045837 296
+8 27448068435 296
+4 27448069146 264
+2 27451670414 0
+6 27451671115 280
+3 27451673143 280
+8 27451676720 280
+4 27451677410 264
+2 27451717983 0
+3 27451721004 296
+8 27451743888 296
+4 27451744606 264
+2 27455346616 0
+3 27455347291 264
+2 27455392869 0
+3 27455395834 296
+8 27455418672 296
+4 27455419383 264
+2 27459067661 0
+3 27459070609 296
+8 27459093347 296
+4 27459094052 264
+2 27462742321 0
+3 27462745225 296
+8 27462767995 296
+4 27462768703 264
+2 27466417333 0
+3 27466420259 296
+8 27466442852 296
+4 27466443557 264
+2 27470044462 0
+6 27470045163 280
+3 27470047212 280
+8 27470050460 280
+4 27470051150 264
+2 27470092053 0
+3 27470095107 296
+8 27470118046 296
+4 27470118770 264
+2 27473720752 0
+3 27473721427 264
+2 27473767005 0
+3 27473769959 296
+8 27473792747 296
+4 27473793468 264
+2 27477441736 0
+3 27477444658 296
+8 27477467410 296
+4 27477468120 264
+2 27481116385 0
+3 27481119278 296
+8 27481142011 296
+4 27481142718 264
+2 27484791348 0
+3 27484794269 296
+8 27484816867 296
+4 27484817578 264
+2 27488418477 0
+6 27488419178 280
+3 27488421206 280
+8 27488424447 280
+4 27488425137 264
+2 27488466046 0
+3 27488469105 296
+8 27488492001 296
+4 27488492719 264
+2 27492094728 0
+3 27492095403 264
+2 27492140981 0
+3 27492143946 296
+8 27492166803 296
+4 27492167514 264
+2 27495815795 0
+3 27495818739 296
+8 27495841470 296
+4 27495842170 264
+2 27499490807 0
+3 27499493707 296
+8 27499516454 296
+4 27499517162 264
+2 27503165429 0
+3 27503168355 296
+8 27503190948 296
+4 27503191653 264
+2 27506792926 0
+6 27506793627 280
+3 27506795688 280
+8 27506798949 280
+4 27506799639 264
+2 27506840160 0
+3 27506843214 296
+8 27506866186 296
+4 27506866910 264
+2 27510469260 0
+3 27510469935 264
+2 27510515145 0
+3 27510518099 296
+8 27510540884 296
+4 27510541605 264
+2 27514189876 0
+3 27514192798 296
+8 27514215534 296
+4 27514216244 264
+2 27517864872 0
+3 27517867765 296
+8 27517890497 296
+4 27517891204 264
+2 27521539471 0
+3 27521542392 296
+8 27521564990 296
+4 27521565701 264
+2 27525166969 0
+6 27525167670 280
+3 27525169720 280
+8 27525172975 280
+4 27525173665 264
+2 27525214560 0
+3 27525217581 296
+8 27525240465 296
+4 27525241183 264
+2 27528843193 0
+3 27528843868 264
+2 27528889446 0
+3 27528892411 296
+8 27528915249 296
+4 27528915960 264
+2 27532564238 0
+3 27532567186 296
+8 27532589924 296
+4 27532590629 264
+2 27536238898 0
+3 27536241802 296
+8 27536264572 296
+4 27536265280 264
+2 27539913910 0
+3 27539916836 296
+8 27539939434 296
+4 27539940143 264
+2 27543541044 0
+6 27543541745 280
+3 27543543794 280
+8 27543547043 280
+4 27543547733 264
+2 27543588636 0
+3 27543591694 296
+8 27543614638 296
+4 27543615368 264
+2 27547217345 0
+3 27547218020 264
+2 27547263598 0
+3 27547266552 296
+8 27547289335 296
+4 27547290056 264
+2 27550938324 0
+3 27550941246 296
+8 27550963998 296
+4 27550964708 264
+2 27554612973 0
+3 27554615866 296
+8 27554638599 296
+4 27554639306 264
+2 27558287936 0
+3 27558290857 296
+8 27558313455 296
+4 27558314166 264
+2 27561915065 0
+6 27561915766 280
+3 27561917794 280
+8 27561921035 280
+4 27561921725 264
+2 27561962634 0
+3 27561965693 296
+8 27561988602 296
+4 27561989320 264
+2 27565591322 0
+3 27565591997 264
+2 27565637575 0
+3 27565640540 296
+8 27565663396 296
+4 27565664107 264
+2 27569312383 0
+3 27569315327 296
+8 27569338058 296
+4 27569338758 264
+2 27572987395 0
+3 27572990295 296
+8 27573013042 296
+4 27573013750 264
+2 27576662017 0
+3 27576664943 296
+8 27576687536 296
+4 27576688241 264
+2 27580289514 0
+6 27580290215 280
+3 27580292276 280
+8 27580295524 280
+4 27580296214 264
+2 27580336748 0
+3 27580339802 296
+8 27580362774 296
+4 27580363498 264
+2 27583965848 0
+3 27583966523 264
+2 27584011733 0
+3 27584014687 296
+8 27584037472 296
+4 27584038193 264
+2 27587686464 0
+3 27587689386 296
+8 27587712122 296
+4 27587712832 264
+2 27591361460 0
+3 27591364351 296
+8 27591387085 296
+4 27591387792 264
+2 27595036059 0
+3 27595038980 296
+8 27595061578 296
+4 27595062289 264
+2 27598663557 0
+6 27598664258 280
+3 27598666308 280
+8 27598669555 280
+4 27598670245 264
+2 27598711148 0
+3 27598714163 296
+8 27598737059 296
+4 27598737777 264
+2 27602339786 0
+3 27602340461 264
+2 27602386039 0
+3 27602389004 296
+8 27602411842 296
+4 27602412553 264
+2 27606060831 0
+3 27606063775 296
+8 27606086517 296
+4 27606087226 264
+2 27609735491 0
+3 27609738391 296
+8 27609761160 296
+4 27609761868 264
+2 27613410498 0
+3 27613413430 296
+8 27613436022 296
+4 27613436727 264
+2 27617037632 0
+6 27617038333 280
+3 27617040383 280
+8 27617043642 280
+4 27617044332 264
+2 27617085224 0
+3 27617088277 296
+8 27617111215 296
+4 27617111939 264
+2 27620713922 0
+3 27620714597 264
+2 27620760175 0
+3 27620763129 296
+8 27620785912 296
+4 27620786633 264
+2 27624434901 0
+3 27624437823 296
+8 27624460575 296
+4 27624461285 264
+2 27628109550 0
+3 27628112443 296
+8 27628135185 296
+4 27628135892 264
+2 27631784524 0
+3 27631787445 296
+8 27631810043 296
+4 27631810754 264
+2 27635412021 0
+6 27635412722 280
+3 27635414760 280
+8 27635418003 280
+4 27635418693 264
+2 27635459233 0
+3 27635462275 296
+8 27635485160 296
+4 27635485878 264
+2 27639088256 0
+3 27639088931 264
+2 27639134141 0
+3 27639137106 296
+8 27639159962 296
+4 27639160673 264
+2 27642808949 0
+3 27642811893 296
+8 27642834624 296
+4 27642835324 264
+2 27646483961 0
+3 27646486861 296
+8 27646509608 296
+4 27646510316 264
+2 27650158583 0
+3 27650161509 296
+8 27650184102 296
+4 27650184807 264
+2 27653786080 0
+6 27653786781 280
+3 27653788830 280
+8 27653792224 280
+4 27653792914 264
+2 27653833672 0
+3 27653836725 296
+8 27653859703 296
+4 27653860427 264
+2 27657462409 0
+3 27657463084 264
+2 27657508293 0
+3 27657511248 296
+8 27657534030 296
+4 27657534751 264
+2 27661183019 0
+3 27661185941 296
+8 27661208677 296
+4 27661209387 264
+2 27664858015 0
+3 27664860908 296
+8 27664883640 296
+4 27664884347 264
+2 27668532977 0
+3 27668535898 296
+8 27668558496 296
+4 27668559207 264
+2 27672160106 0
+6 27672160807 280
+3 27672162857 280
+8 27672166115 280
+4 27672166805 264
+2 27672207698 0
+3 27672210734 296
+8 27672233625 296
+4 27672234343 264
+2 27675836352 0
+3 27675837027 264
+2 27675882605 0
+3 27675885571 296
+8 27675908427 296
+4 27675909159 264
+2 27679557419 0
+3 27679560462 296
+8 27679583200 296
+4 27679583900 264
+2 27683232178 0
+3 27683235104 296
+8 27683257808 296
+4 27683258516 264
+2 27686907146 0
+3 27686910068 296
+8 27686932610 296
+4 27686933315 264
+2 27690534220 0
+6 27690534921 280
+3 27690536965 280
+8 27690540213 280
+4 27690540916 264
+2 27690581806 0
+3 27690584865 296
+8 27690607723 296
+4 27690608447 264
+2 27694210444 0
+3 27694211119 264
+2 27694256697 0
+3 27694259651 296
+8 27694282409 296
+4 27694283130 264
+2 27697931401 0
+3 27697934323 296
+8 27697957026 296
+4 27697957736 264
+2 27701606364 0
+3 27701609257 296
+8 27701631940 296
+4 27701632647 264
+2 27705281277 0
+3 27705284198 296
+8 27705306746 296
+4 27705307457 264
+2 27708908356 0
+6 27708909057 280
+3 27708911090 280
+8 27708914338 280
+4 27708915028 264
+2 27708955931 0
+3 27708958990 296
+8 27708981820 296
+4 27708982538 264
+2 27712584547 0
+3 27712585222 264
+2 27712630800 0
+3 27712633765 296
+8 27712656578 296
+4 27712657289 264
+2 27716305570 0
+3 27716308514 296
+8 27716331245 296
+4 27716331945 264
+2 27719980582 0
+3 27719983482 296
+8 27720006229 296
+4 27720006937 264
+2 27723655204 0
+3 27723658130 296
+8 27723680723 296
+4 27723681428 264
+2 27727282708 0
+6 27727283409 280
+3 27727285480 280
+8 27727288733 280
+4 27727289423 264
+2 27727329952 0
+3 27727333005 296
+8 27727355969 296
+4 27727356693 264
+2 27730959041 0
+3 27730959716 264
+2 27731004925 0
+3 27731007879 296
+8 27731030662 296
+4 27731031383 264
+2 27734679651 0
+3 27734682573 296
+8 27734705309 296
+4 27734706019 264
+2 27738354647 0
+3 27738357540 296
+8 27738380278 296
+4 27738380985 264
+2 27742029615 0
+3 27742032536 296
+8 27742055139 296
+4 27742055850 264
+2 27745656749 0
+6 27745657450 280
+3 27745659473 280
+8 27745662726 280
+4 27745663416 264
+2 27745704313 0
+3 27745707328 296
+8 27745730218 296
+4 27745730936 264
+2 27749332946 0
+3 27749333621 264
+2 27749379199 0
+3 27749382164 296
+8 27749405002 296
+4 27749405713 264
+2 27753053991 0
+3 27753056939 296
+8 27753079677 296
+4 27753080382 264
+2 27756728651 0
+3 27756731556 296
+8 27756754325 296
+4 27756755033 264
+2 27760403663 0
+3 27760406589 296
+8 27760429182 296
+4 27760429887 264
+2 27764030792 0
+6 27764031493 280
+3 27764033680 280
+8 27764036935 280
+4 27764037625 264
+2 27764078521 0
+3 27764081579 296
+8 27764104516 296
+4 27764105240 264
+2 27767706851 0
+3 27767707526 264
+2 27767753104 0
+3 27767756058 296
+8 27767778846 296
+4 27767779567 264
+2 27771428198 0
+3 27771431120 296
+8 27771453872 296
+4 27771454582 264
+2 27775102847 0
+3 27775105740 296
+8 27775128473 296
+4 27775129180 264
+2 27778777810 0
+3 27778780731 296
+8 27778803329 296
+4 27778804040 264
+2 27782404939 0
+6 27782405640 280
+3 27782407667 280
+8 27782410909 280
+4 27782411599 264
+2 27782452508 0
+3 27782455567 296
+8 27782478457 296
+4 27782479175 264
+2 27786081185 0
+3 27786081860 264
+2 27786127438 0
+3 27786130403 296
+8 27786153259 296
+4 27786153970 264
+2 27789802246 0
+3 27789805195 296
+8 27789827917 296
+4 27789828617 264
+2 27793476895 0
+3 27793479794 296
+8 27793502542 296
+4 27793503250 264
+2 27797151880 0
+3 27797154806 296
+8 27797177399 296
+4 27797178104 264
+2 27800779377 0
+6 27800780078 280
+3 27800782156 280
+8 27800785422 280
+4 27800786125 264
+2 27800826628 0
+3 27800829686 296
+8 27800852651 296
+4 27800853375 264
+2 27804455722 0
+3 27804456397 264
+2 27804501607 0
+3 27804504561 296
+8 27804527349 296
+4 27804528070 264
+2 27808176338 0
+3 27808179260 296
+8 27808201996 296
+4 27808202706 264
+2 27811851334 0
+3 27811854232 296
+8 27811876965 296
+4 27811877672 264
+2 27815525939 0
+3 27815528859 296
+8 27815551474 296
+4 27815552185 264
+2 27819153453 0
+6 27819154154 280
+3 27819156181 280
+8 27819159429 280
+4 27819160119 264
+2 27819201022 0
+3 27819204043 296
+8 27819226922 296
+4 27819227640 264
+2 27822829649 0
+3 27822830324 264
+2 27822875534 0
+3 27822878499 296
+8 27822901337 296
+4 27822902048 264
+2 27826550689 0
+3 27826553637 296
+8 27826576381 296
+4 27826577088 264
+2 27830225354 0
+3 27830228254 296
+8 27830251023 296
+4 27830251731 264
+2 27833900361 0
+3 27833903287 296
+8 27833925880 296
+4 27833926585 264
+2 27837527490 0
+6 27837528191 280
+3 27837530246 280
+8 27837533549 280
+4 27837534239 264
+2 27837575087 0
+3 27837578145 296
+8 27837601077 296
+4 27837601801 264
+2 27841203780 0
+3 27841204455 264
+2 27841250033 0
+3 27841252987 296
+8 27841275772 296
+4 27841276493 264
+2 27844924764 0
+3 27844927686 296
+8 27844950438 296
+4 27844951148 264
+2 27848599413 0
+3 27848602306 296
+8 27848625039 296
+4 27848625746 264
+2 27852274376 0
+3 27852277297 296
+8 27852299895 296
+4 27852300606 264
+2 27855901505 0
+6 27855902206 280
+3 27855904234 280
+8 27855907475 280
+4 27855908165 264
+2 27855949074 0
+3 27855952210 296
+8 27855975100 296
+4 27855975818 264
+2 27859577828 0
+3 27859578503 264
+2 27859624081 0
+3 27859627046 296
+8 27859649902 296
+4 27859650613 264
+2 27863298889 0
+3 27863301833 296
+8 27863324564 296
+4 27863325264 264
+2 27866973538 0
+3 27866976438 296
+8 27866999185 296
+4 27866999893 264
+2 27870648523 0
+3 27870651449 296
+8 27870674042 296
+4 27870674751 264
+2 27874275652 0
+6 27874276353 280
+3 27874278402 280
+8 27874281650 280
+4 27874282340 264
+2 27874323243 0
+3 27874326297 296
+8 27874349266 296
+4 27874349990 264
+2 27877951969 0
+3 27877952644 264
+2 27877998222 0
+3 27878001176 296
+8 27878023959 296
+4 27878024680 264
+2 27881672948 0
+3 27881675870 296
+8 27881698606 296
+4 27881699316 264
+2 27885347944 0
+3 27885350837 296
+8 27885373569 296
+4 27885374276 264
+2 27889022543 0
+3 27889025464 296
+8 27889048062 296
+4 27889048773 264
+2 27892650041 0
+6 27892650742 280
+3 27892652769 280
+8 27892656017 280
+4 27892656707 264
+2 27892697610 0
+3 27892700631 296
+8 27892723578 296
+4 27892724296 264
+2 27896326298 0
+3 27896326973 264
+2 27896372182 0
+3 27896375147 296
+8 27896397985 296
+4 27896398696 264
+2 27900046974 0
+3 27900049918 296
+8 27900072655 296
+4 27900073360 264
+2 27903721992 0
+3 27903724896 296
+8 27903747666 296
+4 27903748374 264
+2 27907396641 0
+3 27907399567 296
+8 27907422160 296
+4 27907422865 264
+2 27911024138 0
+6 27911024839 280
+3 27911026895 280
+8 27911030351 280
+4 27911031041 264
+2 27911071735 0
+3 27911074788 296
+8 27911097720 296
+4 27911098444 264
+2 27914700423 0
+3 27914701098 264
+2 27914746307 0
+3 27914749261 296
+8 27914772044 296
+4 27914772765 264
+2 27918421396 0
+3 27918424318 296
+8 27918447070 296
+4 27918447780 264
+2 27922096045 0
+3 27922098938 296
+8 27922121671 296
+4 27922122378 264
+2 27925771015 0
+3 27925773934 296
+8 27925796532 296
+4 27925797243 264
+2 27929398142 0
+6 27929398843 280
+3 27929400871 280
+8 27929404113 280
+4 27929404803 264
+2 27929445712 0
+3 27929448754 296
+8 27929471633 296
+4 27929472351 264
+2 27933074361 0
+3 27933075036 264
+2 27933120614 0
+3 27933123579 296
+8 27933146435 296
+4 27933147146 264
+2 27936795422 0
+3 27936798366 296
+8 27936821104 296
+4 27936821804 264
+2 27940470445 0
+3 27940473345 296
+8 27940496092 296
+4 27940496800 264
+2 27944145067 0
+3 27944147994 296
+8 27944170586 296
+4 27944171291 264
+2 27947772564 0
+6 27947773265 280
+3 27947775309 280
+8 27947778587 280
+4 27947779277 264
+2 27947819782 0
+3 27947822835 296
+8 27947845799 296
+4 27947846523 264
+2 27951448871 0
+3 27951449546 264
+2 27951494755 0
+3 27951497709 296
+8 27951520492 296
+4 27951521213 264
+2 27955169481 0
+3 27955172403 296
+8 27955195139 296
+4 27955195849 264
+2 27958844477 0
+3 27958847370 296
+8 27958870102 296
+4 27958870813 264
+2 27962519076 0
+3 27962521997 296
+8 27962544595 296
+4 27962545306 264
+2 27966146574 0
+6 27966147275 280
+3 27966149308 280
+8 27966152638 280
+4 27966153328 264
+2 27966194149 0
+3 27966197164 296
+8 27966220054 296
+4 27966220772 264
+2 27969822781 0
+3 27969823456 264
+2 27969869034 0
+3 27969871999 296
+8 27969894837 296
+4 27969895548 264
+2 27973543826 0
+3 27973546770 296
+8 27973569507 296
+4 27973570212 264
+2 27977218481 0
+3 27977221385 296
+8 27977244155 296
+4 27977244863 264
+2 27980893493 0
+3 27980896419 296
+8 27980919012 296
+4 27980919717 264
+2 27984520622 0
+6 27984521323 280
+3 27984523372 280
+8 27984526620 280
+4 27984527310 264
+2 27984568213 0
+3 27984571266 296
+8 27984594198 296
+4 27984594922 264
+2 27988196901 0
+3 27988197576 264
+2 27988243154 0
+3 27988246108 296
+8 27988268893 296
+4 27988269614 264
+2 27991917885 0
+3 27991920807 296
+8 27991943559 296
+4 27991944269 264
+2 27995592897 0
+3 27995595790 296
+8 27995618523 296
+4 27995619230 264
+2 27999267497 0
+3 27999270418 296
+8 27999293016 296
+4 27999293727 264
+2 28002894994 0
+6 28002895695 280
+3 28002897723 280
+8 28002900965 280
+4 28002901655 264
+2 28002942564 0
+3 28002945606 296
+8 28002968485 296
+4 28002969207 264
+2 28006571213 0
+3 28006571888 264
+2 28006617097 0
+3 28006620062 296
+8 28006642919 296
+4 28006643630 264
+2 28010291911 0
+3 28010294865 296
+8 28010317597 296
+4 28010318297 264
+2 28013966934 0
+3 28013969834 296
+8 28013992597 296
+4 28013993305 264
+2 28017641572 0
+3 28017644494 296
+8 28017667086 296
+4 28017667791 264
+2 28021269064 0
+6 28021269765 280
+3 28021271809 280
+8 28021275057 280
+4 28021275747 264
+2 28021316650 0
+3 28021319703 296
+8 28021342717 296
+4 28021343441 264
+2 28024945420 0
+3 28024946095 264
+2 28024991305 0
+3 28024994259 296
+8 28025017044 296
+4 28025017770 264
+2 28028666036 0
+3 28028668958 296
+8 28028691694 296
+4 28028692404 264
+2 28032341032 0
+3 28032343925 296
+8 28032366657 296
+4 28032367364 264
+2 28036015994 0
+3 28036018915 296
+8 28036041513 296
+4 28036042224 264
+2 28039643123 0
+6 28039643824 280
+3 28039645857 280
+8 28039649121 280
+4 28039649811 264
+2 28039690698 0
+3 28039693734 296
+8 28039716625 296
+4 28039717343 264
+2 28043319353 0
+3 28043320028 264
+2 28043365606 0
+3 28043368570 296
+8 28043391427 296
+4 28043392153 264
+2 28047040414 0
+3 28047043457 296
+8 28047066195 296
+4 28047066895 264
+2 28050715173 0
+3 28050718099 296
+8 28050740803 296
+4 28050741511 264
+2 28054390141 0
+3 28054393063 296
+8 28054415605 296
+4 28054416310 264
+2 28058017222 0
+6 28058017923 280
+3 28058019977 280
+8 28058023225 280
+4 28058023928 264
+2 28058064818 0
+3 28058067877 296
+8 28058090734 296
+4 28058091458 264
+2 28061693450 0
+3 28061694125 264
+2 28061739703 0
+3 28061742657 296
+8 28061765415 296
+4 28061766136 264
+2 28065414407 0
+3 28065417329 296
+8 28065440032 296
+4 28065440742 264
+2 28069089370 0
+3 28069092263 296
+8 28069114946 296
+4 28069115653 264
+2 28072764283 0
+3 28072767204 296
+8 28072789758 296
+4 28072790469 264
+2 28076391368 0
+6 28076392080 280
+3 28076394107 280
+8 28076397340 280
+4 28076398030 264
+2 28076438948 0
+3 28076441990 296
+8 28076464798 296
+4 28076465516 264
+2 28080067526 0
+3 28080068201 264
+2 28080113779 0
+3 28080116744 296
+8 28080139556 296
+4 28080140267 264
+2 28083788543 0
+3 28083791487 296
+8 28083814218 296
+4 28083814918 264
+2 28087463555 0
+3 28087466455 296
+8 28087489202 296
+4 28087489910 264
+2 28091138177 0
+3 28091141103 296
+8 28091163696 296
+4 28091164401 264
+2 28094765674 0
+6 28094766375 280
+3 28094768431 280
+8 28094771693 280
+4 28094772383 264
+2 28094813271 0
+3 28094816325 296
+8 28094839289 296
+4 28094840013 264
+2 28098441992 0
+3 28098442667 264
+2 28098487876 0
+3 28098490830 296
+8 28098513613 296
+4 28098514334 264
+2 28102162965 0
+3 28102165887 296
+8 28102188623 296
+4 28102189333 264
+2 28105837598 0
+3 28105840491 296
+8 28105863223 296
+4 28105863930 264
+2 28109512560 0
+3 28109515481 296
+8 28109538079 296
+4 28109538790 264
+2 28113139689 0
+6 28113140390 280
+3 28113142423 280
+8 28113145671 280
+4 28113146361 264
+2 28113187264 0
+3 28113190285 296
+8 28113213164 296
+4 28113213882 264
+2 28116815891 0
+3 28116816566 264
+2 28116862144 0
+3 28116865109 296
+8 28116887947 296
+4 28116888658 264
+2 28120536936 0
+3 28120539885 296
+8 28120562617 296
+4 28120563322 264
+2 28124211954 0
+3 28124214858 296
+8 28124237628 296
+4 28124238336 264
+2 28127886603 0
+3 28127889529 296
+8 28127912122 296
+4 28127912827 264
+2 28131513732 0
+6 28131514433 280
+3 28131516482 280
+8 28131519730 280
+4 28131520433 264
+2 28131561323 0
+3 28131564381 296
+8 28131587313 296
+4 28131588037 264
+2 28135190016 0
+3 28135190691 264
+2 28135236269 0
+3 28135239223 296
+8 28135262014 296
+4 28135262735 264
+2 28138911006 0
+3 28138913928 296
+8 28138936680 296
+4 28138937390 264
+2 28142586018 0
+3 28142588918 296
+8 28142611649 296
+4 28142612356 264
+2 28146260623 0
+3 28146263544 296
+8 28146286181 296
+4 28146286892 264
+2 28149888159 0
+6 28149888864 280
+3 28149890887 280
+8 28149894130 280
+4 28149894832 264
+2 28149935729 0
+3 28149938788 296
+8 28149961793 296
+4 28149962511 264
+2 28153564521 0
+3 28153565196 264
+2 28153610405 0
+3 28153613370 296
+8 28153636205 296
+4 28153636916 264
+2 28157285197 0
+3 28157288141 296
+8 28157310872 296
+4 28157311576 264
+2 28160960209 0
+3 28160963109 296
+8 28160985872 296
+4 28160986580 264
+2 28164634847 0
+3 28164637769 296
+8 28164660361 296
+4 28164661066 264
+2 28168262339 0
+6 28168263040 280
+3 28168265096 280
+8 28168268350 280
+4 28168269040 264
+2 28168309568 0
+3 28168312626 296
+8 28168335569 296
+4 28168336293 264
+2 28171938640 0
+3 28171939315 264
+2 28171984525 0
+3 28171987479 296
+8 28172010264 296
+4 28172010985 264
+2 28175659256 0
+3 28175662178 296
+8 28175684930 296
+4 28175685640 264
+2 28179334268 0
+3 28179337161 296
+8 28179359894 296
+4 28179360601 264
+2 28183009231 0
+3 28183012152 296
+8 28183034733 296
+4 28183035444 264
+2 28186636343 0
+6 28186637044 280
+3 28186639072 280
+8 28186642319 280
+4 28186643009 264
+2 28186683913 0
+3 28186686933 296
+8 28186709818 296
+4 28186710536 264
+2 28190312545 0
+3 28190313226 264
+2 28190358804 0
+3 28190361769 296
+8 28190384629 296
+4 28190385340 264
+2 28194033618 0
+3 28194036566 296
+8 28194059304 296
+4 28194060009 264
+2 28197708278 0
+3 28197711182 296
+8 28197733935 296
+4 28197734643 264
+2 28201383273 0
+3 28201386195 296
+8 28201408787 296
+4 28201409492 264
+2 28205010397 0
+6 28205011098 280
+3 28205013147 280
+8 28205016395 280
+4 28205017085 264
+2 28205057988 0
+3 28205061042 296
+8 28205084000 296
+4 28205084724 264
+2 28208686703 0
+3 28208687378 264
+2 28208732956 0
+3 28208735910 296
+8 28208758693 296
+4 28208759414 264
+2 28212407682 0
+3 28212410604 296
+8 28212433340 296
+4 28212434050 264
+2 28216082678 0
+3 28216085571 296
+8 28216108303 296
+4 28216109010 264
+2 28219757277 0
+3 28219760198 296
+8 28219782813 296
+4 28219783524 264
+2 28223384791 0
+6 28223385492 280
+3 28223387515 280
+8 28223390756 280
+4 28223391446 264
+2 28223432355 0
+3 28223435414 296
+8 28223458318 296
+4 28223459041 264
+2 28227061037 0
+3 28227061712 264
+2 28227106922 0
+3 28227109887 296
+8 28227132721 296
+4 28227133432 264
+2 28230781708 0
+3 28230784652 296
+8 28230807383 296
+4 28230808083 264
+2 28234456720 0
+3 28234459620 296
+8 28234482383 296
+4 28234483091 264
+2 28238131358 0
+3 28238134280 296
+8 28238156872 296
+4 28238157577 264
+2 28241758850 0
+6 28241759551 280
+3 28241761607 280
+8 28241764911 280
+4 28241765601 264
+2 28241806447 0
+3 28241809500 296
+8 28241832443 296
+4 28241833167 264
+2 28245435146 0
+3 28245435821 264
+2 28245481030 0
+3 28245483984 296
+8 28245506767 296
+4 28245507488 264
+2 28249156119 0
+3 28249159041 296
+8 28249181793 296
+4 28249182503 264
+2 28252830768 0
+3 28252833661 296
+8 28252856394 296
+4 28252857101 264
+2 28256505731 0
+3 28256508652 296
+8 28256531233 296
+4 28256531944 264
+2 28260132843 0
+6 28260133544 280
+3 28260135567 280
+8 28260138814 280
+4 28260139504 264
+2 28260180407 0
+3 28260183422 296
+8 28260206312 296
+4 28260207030 264
+2 28263809040 0
+3 28263809715 264
+2 28263855293 0
+3 28263858258 296
+8 28263881118 296
+4 28263881829 264
+2 28267530107 0
+3 28267533055 296
+8 28267555798 296
+4 28267556507 264
+2 28271205135 0
+3 28271208035 296
+8 28271230793 296
+4 28271231501 264
+2 28274879768 0
+3 28274882694 296
+8 28274905287 296
+4 28274905992 264
+2 28278507265 0
+6 28278507966 280
+3 28278510010 280
+8 28278513258 280
+4 28278513948 264
+2 28278554483 0
+3 28278557536 296
+8 28278580489 296
+4 28278581213 264
+2 28282183561 0
+3 28282184236 264
+2 28282229445 0
+3 28282232399 296
+8 28282255182 296
+4 28282255903 264
+2 28285904171 0
+3 28285907093 296
+8 28285929829 296
+4 28285930539 264
+2 28289579167 0
+3 28289582060 296
+8 28289604796 296
+4 28289605503 264
+2 28293254135 0
+3 28293257056 296
+8 28293279670 296
+4 28293280381 264
+2 28296881280 0
+6 28296881981 280
+3 28296884014 280
+8 28296887261 280
+4 28296887951 264
+2 28296928855 0
+3 28296931897 296
+8 28296954777 296
+4 28296955495 264
+2 28300557504 0
+3 28300558179 264
+2 28300603757 0
+3 28300606722 296
+8 28300629557 296
+4 28300630268 264
+2 28304278549 0
+3 28304281493 296
+8 28304304224 296
+4 28304304924 264
+2 28307953198 0
+3 28307956098 296
+8 28307978861 296
+4 28307979569 264
+2 28311628199 0
+3 28311631121 296
+8 28311653713 296
+4 28311654418 264
+2 28315255323 0
+6 28315256024 280
+3 28315258073 280
+8 28315261321 280
+4 28315262011 264
+2 28315302914 0
+3 28315305967 296
+8 28315328910 296
+4 28315329634 264
+2 28318931613 0
+3 28318932288 264
+2 28318977866 0
+3 28318980820 296
+8 28319003605 296
+4 28319004326 264
+2 28322652597 0
+3 28322655519 296
+8 28322678271 296
+4 28322678981 264
+2 28326327609 0
+3 28326330502 296
+8 28326353235 296
+4 28326353942 264
+2 28330002209 0
+3 28330005130 296
+8 28330027711 296
+4 28330028422 264
+2 28333629690 0
+6 28333630391 280
+3 28333632419 280
+8 28333635666 280
+4 28333636356 264
+2 28333677259 0
+3 28333680274 296
+8 28333703170 296
+4 28333703888 264
+2 28337305897 0
+3 28337306572 264
+2 28337351782 0
+3 28337354747 296
+8 28337377607 296
+4 28337378318 264
+2 28341026596 0
+3 28341029550 296
+8 28341052287 296
+4 28341052992 264
+2 28344701624 0
+3 28344704524 296
+8 28344727287 296
+4 28344727995 264
+2 28348376262 0
+3 28348379184 296
+8 28348401776 296
+4 28348402481 264
+2 28352003754 0
+6 28352004455 280
+3 28352006504 280
+8 28352009753 280
+4 28352010443 264
+2 28352051346 0
+3 28352054399 296
+8 28352077359 296
+4 28352078083 264
+2 28355680066 0
+3 28355680741 264
+2 28355725951 0
+3 28355728905 296
+8 28355751698 296
+4 28355752419 264
+2 28359401051 0
+3 28359403971 296
+8 28359426708 296
+4 28359427418 264
+2 28363075683 0
+3 28363078576 296
+8 28363101309 296
+4 28363102016 264
+2 28366750646 0
+3 28366753567 296
+8 28366776181 296
+4 28366776892 264
+2 28370377791 0
+6 28370378492 280
+3 28370380530 280
+8 28370384064 280
+4 28370384754 264
+2 28370425372 0
+3 28370428414 296
+8 28370451299 296
+4 28370452017 264
+2 28374054026 0
+3 28374054701 264
+2 28374100279 0
+3 28374103244 296
+8 28374126079 296
+4 28374126790 264
+2 28377775071 0
+3 28377778015 296
+8 28377800746 296
+4 28377801446 264
+2 28381449720 0
+3 28381452620 296
+8 28381475383 296
+4 28381476091 264
+2 28385124721 0
+3 28385127643 296
+8 28385150235 296
+4 28385150940 264
+2 28388751845 0
+6 28388752546 280
+3 28388754595 280
+8 28388757956 280
+4 28388758646 264
+2 28388799436 0
+3 28388802489 296
+8 28388825440 296
+4 28388826164 264
+2 28392428146 0
+3 28392428821 264
+2 28392474399 0
+3 28392477353 296
+8 28392500138 296
+4 28392500859 264
+2 28396149130 0
+3 28396152052 296
+8 28396174804 296
+4 28396175514 264
+2 28399824142 0
+3 28399827035 296
+8 28399849768 296
+4 28399850475 264
+2 28403498742 0
+3 28403501663 296
+8 28403524250 296
+4 28403524961 264
+2 28407126228 0
+6 28407126929 280
+3 28407128957 280
+8 28407132215 280
+4 28407132905 264
+2 28407173798 0
+3 28407176840 296
+8 28407199736 296
+4 28407200454 264
+2 28410802463 0
+3 28410803138 264
+2 28410848716 0
+3 28410851682 296
+8 28410874560 296
+4 28410875286 264
+2 28414523552 0
+3 28414526595 296
+8 28414549333 296
+4 28414550033 264
+2 28418198311 0
+3 28418201237 296
+8 28418223925 296
+4 28418224633 264
+2 28421872900 0
+3 28421875826 296
+8 28421898369 296
+4 28421899074 264
+2 28425500348 0
+6 28425501049 280
+3 28425503099 280
+8 28425506353 280
+4 28425507056 264
+2 28425547939 0
+3 28425550997 296
+8 28425573879 296
+4 28425574603 264
+2 28429176599 0
+3 28429177274 264
+2 28429222852 0
+3 28429225806 296
+8 28429248564 296
+4 28429249285 264
+2 28432897556 0
+3 28432900478 296
+8 28432923164 296
+4 28432923874 264
+2 28436572502 0
+3 28436575395 296
+8 28436598078 296
+4 28436598785 264
+2 28440247052 0
+3 28440249973 296
+8 28440272538 296
+4 28440273249 264
+2 28443874517 0
+6 28443875218 280
+3 28443877256 280
+8 28443880834 280
+4 28443881524 264
+2 28443922097 0
+3 28443925156 296
+8 28443947991 296
+4 28443948709 264
+2 28447550719 0
+3 28447551394 264
+2 28447596972 0
+3 28447599937 296
+8 28447622727 296
+4 28447623438 264
+2 28451271714 0
+3 28451274658 296
+8 28451297389 296
+4 28451298089 264
+2 28454946370 0
+3 28454949273 296
+8 28454972037 296
+4 28454972745 264
+2 28458621375 0
+3 28458624297 296
+8 28458646889 296
+4 28458647594 264
+2 28462248499 0
+6 28462249200 280
+3 28462251249 280
+8 28462254497 280
+4 28462255187 264
+2 28462296090 0
+3 28462299144 296
+8 28462322098 296
+4 28462322822 264
+2 28465924805 0
+3 28465925480 264
+2 28465971058 0
+3 28465974012 296
+8 28465996803 296
+4 28465997524 264
+2 28469645795 0
+3 28469648717 296
+8 28469671475 296
+4 28469672185 264
+2 28473320813 0
+3 28473323712 296
+8 28473346444 296
+4 28473347151 264
+2 28476995418 0
+3 28476998339 296
+8 28477020937 296
+4 28477021648 264
+2 28480622915 0
+6 28480623616 280
+3 28480625644 280
+8 28480628891 280
+4 28480629581 264
+2 28480670485 0
+3 28480673504 296
+8 28480696390 296
+4 28480697108 264
+2 28484299117 0
+3 28484299792 264
+2 28484345002 0
+3 28484347967 296
+8 28484370827 296
+4 28484371538 264
+2 28488019816 0
+3 28488022764 296
+8 28488045502 296
+4 28488046207 264
+2 28491694839 0
+3 28491697743 296
+8 28491720496 296
+4 28491721204 264
+2 28495369471 0
+3 28495372393 296
+8 28495394985 296
+4 28495395690 264
+2 28498996963 0
+6 28498997664 280
+3 28498999725 280
+8 28499002980 280
+4 28499003670 264
+2 28499044566 0
+3 28499047624 296
+8 28499070586 296
+4 28499071310 264
+2 28502673292 0
+3 28502673967 264
+2 28502719176 0
+3 28502722130 296
+8 28502744913 296
+4 28502745634 264
+2 28506394265 0
+3 28506397187 296
+8 28506419923 296
+4 28506420633 264
+2 28510068898 0
+3 28510071791 296
+8 28510094523 296
+4 28510095230 264
+2 28513743860 0
+3 28513746781 296
+8 28513769396 296
+4 28513770107 264
+2 28517371006 0
+6 28517371707 280
+3 28517373735 280
+8 28517376976 280
+4 28517377666 264
+2 28517418575 0
+3 28517421640 296
+8 28517444535 296
+4 28517445253 264
+2 28521047263 0
+3 28521047938 264
+2 28521093516 0
+3 28521096487 296
+8 28521119321 296
+4 28521120032 264
+2 28524768313 0
+3 28524771257 296
+8 28524793988 296
+4 28524794688 264
+2 28528442962 0
+3 28528445862 296
+8 28528468625 296
+4 28528469333 264
+2 28532117963 0
+3 28532120885 296
+8 28532143477 296
+4 28532144182 264
+2 28535745087 0
+6 28535745788 280
+3 28535747837 280
+8 28535751098 280
+4 28535751788 264
+2 28535792678 0
+3 28535795732 296
+8 28535818679 296
+4 28535819403 264
+2 28539421382 0
+3 28539422057 264
+2 28539467635 0
+3 28539470595 296
+8 28539493380 296
+4 28539494101 264
+2 28543142372 0
+3 28543145294 296
+8 28543168063 296
+4 28543168773 264
+2 28546817401 0
+3 28546820294 296
+8 28546843026 296
+4 28546843733 264
+2 28550492000 0
+3 28550494921 296
+8 28550517503 296
+4 28550518214 264
+2 28554119481 0
+6 28554120182 280
+3 28554122210 280
+8 28554125457 280
+4 28554126147 264
+2 28554167051 0
+3 28554170070 296
+8 28554192950 296
+4 28554193672 264
+2 28557795678 0
+3 28557796353 264
+2 28557841931 0
+3 28557844896 296
+8 28557867756 296
+4 28557868467 264
+2 28561516745 0
+3 28561519693 296
+8 28561542431 296
+4 28561543136 264
+2 28565191405 0
+3 28565194309 296
+8 28565217062 296
+4 28565217772 264
+2 28568866400 0
+3 28568869322 296
+8 28568891914 296
+4 28568892619 264
+2 28572493524 0
+6 28572494225 280
+3 28572496280 280
+8 28572499535 280
+4 28572500225 264
+2 28572541121 0
+3 28572544179 296
+8 28572567133 296
+4 28572567857 264
+2 28576169836 0
+3 28576170511 264
+2 28576215720 0
+3 28576218674 296
+8 28576241457 296
+4 28576242178 264
+2 28579890809 0
+3 28579893731 296
+8 28579916467 296
+4 28579917177 264
+2 28583565442 0
+3 28583568335 296
+8 28583591067 296
+4 28583591774 264
+2 28587240411 0
+3 28587243330 296
+8 28587265945 296
+4 28587266656 264
+2 28590867555 0
+6 28590868256 280
+3 28590870284 280
+8 28590873526 280
+4 28590874216 264
+2 28590915125 0
+3 28590918184 296
+8 28590941074 296
+4 28590941792 264
+2 28594543801 0
+3 28594544476 264
+2 28594590054 0
+3 28594593019 296
+8 28594615854 296
+4 28594616565 264
+2 28598264846 0
+3 28598267790 296
+8 28598290521 296
+4 28598291225 264
+2 28601939858 0
+3 28601942758 296
+8 28601965527 296
+4 28601966240 264
+2 28605614502 0
+3 28605617428 296
+8 28605640027 296
+4 28605640732 264
+2 28609241999 0
+6 28609242700 280
+3 28609244744 280
+8 28609247992 280
+4 28609248682 264
+2 28609289217 0
+3 28609292275 296
+8 28609315218 296
+4 28609315942 264
+2 28612918289 0
+3 28612918964 264
+2 28612964174 0
+3 28612967128 296
+8 28612989913 296
+4 28612990634 264
+2 28616638905 0
+3 28616641827 296
+8 28616664579 296
+4 28616665289 264
+2 28620313917 0
+3 28620316810 296
+8 28620339543 296
+4 28620340250 264
+2 28623988517 0
+3 28623991438 296
+8 28624014019 296
+4 28624014732 264
+2 28627615998 0
+6 28627616699 280
+3 28627618732 280
+8 28627621984 280
+4 28627622674 264
+2 28627663573 0
+3 28627666592 296
+8 28627689472 296
+4 28627690190 264
+2 28631292200 0
+3 28631292875 264
+2 28631338453 0
+3 28631341418 296
+8 28631364278 296
+4 28631364989 264
+2 28635013267 0
+3 28635016215 296
+8 28635038953 296
+4 28635039658 264
+2 28638687927 0
+3 28638690831 296
+8 28638713584 296
+4 28638714292 264
+2 28642362922 0
+3 28642365844 296
+8 28642388436 296
+4 28642389141 264
+2 28645990046 0
+6 28645990747 280
+3 28645992796 280
+8 28645996044 280
+4 28645996734 264
+2 28646037637 0
+3 28646040691 296
+8 28646063644 296
+4 28646064368 264
+2 28649666347 0
+3 28649667022 264
+2 28649712600 0
+3 28649715554 296
+8 28649738339 296
+4 28649739060 264
+2 28653387338 0
+3 28653390258 296
+8 28653412994 296
+4 28653413704 264
+2 28657062332 0
+3 28657065225 296
+8 28657087958 296
+4 28657088665 264
+2 28660736932 0
+3 28660739853 296
+8 28660762467 296
+4 28660763178 264
+2 28664364446 0
+6 28664365147 280
+3 28664367175 280
+8 28664370416 280
+4 28664371106 264
+2 28664411647 0
+3 28664414706 296
+8 28664437596 296
+4 28664438314 264
+2 28668040692 0
+3 28668041367 264
+2 28668086576 0
+3 28668089541 296
+8 28668112381 296
+4 28668113092 264
+2 28671761368 0
+3 28671764317 296
+8 28671787050 296
+4 28671787750 264
+2 28675436391 0
+3 28675439291 296
+8 28675462071 296
+4 28675462779 264
+2 28679111046 0
+3 28679113972 296
+8 28679136565 296
+4 28679137270 264
+2 28682738543 0
+6 28682739244 280
+3 28682741288 280
+8 28682744549 280
+4 28682745239 264
+2 28682786129 0
+3 28682789183 296
+8 28682812130 296
+4 28682812854 264
+2 28686414833 0
+3 28686415508 264
+2 28686460718 0
+3 28686463672 296
+8 28686486457 296
+4 28686487182 264
+2 28690135812 0
+3 28690138734 296
+8 28690161486 296
+4 28690162196 264
+2 28693810461 0
+3 28693813354 296
+8 28693836087 296
+4 28693836794 264
+2 28697485424 0
+3 28697488345 296
+8 28697510926 296
+4 28697511637 264
+2 28701112536 0
+6 28701113237 280
+3 28701115270 280
+8 28701118523 280
+4 28701119213 264
+2 28701160111 0
+3 28701163132 296
+8 28701186011 296
+4 28701186729 264
+2 28704788738 0
+3 28704789413 264
+2 28704834991 0
+3 28704837956 296
+8 28704860816 296
+4 28704861527 264
+2 28708509805 0
+3 28708512749 296
+8 28708535486 296
+4 28708536191 264
+2 28712184460 0
+3 28712187364 296
+8 28712210117 296
+4 28712210825 264
+2 28715859455 0
+3 28715862377 296
+8 28715884969 296
+4 28715885674 264
+2 28719486579 0
+6 28719487280 280
+3 28719489329 280
+8 28719492577 280
+4 28719493267 264
+2 28719534170 0
+3 28719537224 296
+8 28719560177 296
+4 28719560901 264
+2 28723162880 0
+3 28723163555 264
+2 28723209133 0
+3 28723212087 296
+8 28723234872 296
+4 28723235593 264
+2 28726883864 0
+3 28726886786 296
+8 28726909522 296
+4 28726910232 264
+2 28730558860 0
+3 28730561753 296
+8 28730584485 296
+4 28730585192 264
+2 28734233459 0
+3 28734236380 296
+8 28734259000 296
+4 28734259711 264
+2 28737860979 0
+6 28737861680 280
+3 28737863707 280
+8 28737866949 280
+4 28737867639 264
+2 28737908548 0
+3 28737911613 296
+8 28737934503 296
+4 28737935221 264
+2 28741537230 0
+3 28741537905 264
+2 28741583115 0
+3 28741586080 296
+8 28741608931 296
+4 28741609642 264
+2 28745257923 0
+3 28745260867 296
+8 28745283598 296
+4 28745284298 264
+2 28748932935 0
+3 28748935835 296
+8 28748958604 296
+4 28748959312 264
+2 28752607579 0
+3 28752610505 296
+8 28752633098 296
+4 28752633803 264
+2 28756235076 0
+6 28756235777 280
+3 28756237821 280
+8 28756241069 280
+4 28756241759 264
+2 28756282662 0
+3 28756285716 296
+8 28756308663 296
+4 28756309387 264
+2 28759911366 0
+3 28759912041 264
+2 28759957251 0
+3 28759960205 296
+8 28759982990 296
+4 28759983711 264
+2 28763632345 0
+3 28763635267 296
+8 28763658019 296
+4 28763658729 264
+2 28767306994 0
+3 28767309887 296
+8 28767332620 296
+4 28767333327 264
+2 28770981957 0
+3 28770984878 296
+8 28771007459 296
+4 28771008170 264
+2 28774609069 0
+6 28774609770 280
+3 28774611803 280
+8 28774615062 280
+4 28774615752 264
+2 28774656644 0
+3 28774659680 296
+8 28774682571 296
+4 28774683289 264
+2 28778285299 0
+3 28778285974 264
+2 28778331552 0
+3 28778334516 296
+8 28778357390 296
+4 28778358116 264
+2 28782006382 0
+3 28782009425 296
+8 28782032163 296
+4 28782032863 264
+2 28785681141 0
+3 28785684067 296
+8 28785706760 296
+4 28785707468 264
+2 28789356098 0
+3 28789359020 296
+8 28789381562 296
+4 28789382267 264
+2 28792983172 0
+6 28792983873 280
+3 28792985922 280
+8 28792989171 280
+4 28792989874 264
+2 28793030764 0
+3 28793033822 296
+8 28793056697 296
+4 28793057421 264
+2 28796659418 0
+3 28796660093 264
+2 28796705671 0
+3 28796708625 296
+8 28796731383 296
+4 28796732104 264
+2 28800380375 0
+3 28800383297 296
+8 28800405989 296
+4 28800406699 264
+2 28804055327 0
+3 28804058220 296
+8 28804080915 296
+4 28804081622 264
+2 28807730256 0
+3 28807733177 296
+8 28807755742 296
+4 28807756453 264
+2 28811357352 0
+6 28811358053 280
+3 28811360076 280
+8 28811363323 280
+4 28811364013 264
+2 28811404916 0
+3 28811407975 296
+8 28811430805 296
+4 28811431523 264
+2 28815033532 0
+3 28815034207 264
+2 28815079785 0
+3 28815082750 296
+8 28815105541 296
+4 28815106252 264
+2 28818754533 0
+3 28818757477 296
+8 28818780208 296
+4 28818780908 264
+2 28822429545 0
+3 28822432445 296
+8 28822455208 296
+4 28822455917 264
+2 28826104183 0
+3 28826107105 296
+8 28826129697 296
+4 28826130402 264
+2 28829731675 0
+6 28829732376 280
+3 28829734432 280
+8 28829737803 280
+4 28829738493 264
+2 28829779272 0
+3 28829782326 296
+8 28829805273 296
+4 28829805997 264
+2 28833407976 0
+3 28833408651 264
+2 28833453861 0
+3 28833456815 296
+8 28833479600 296
+4 28833480321 264
+2 28837128955 0
+3 28837131877 296
+8 28837154629 296
+4 28837155339 264
+2 28840803604 0
+3 28840806497 296
+8 28840829230 296
+4 28840829937 264
+2 28844478567 0
+3 28844481488 296
+8 28844504069 296
+4 28844504780 264
+2 28848105679 0
+6 28848106380 280
+3 28848108403 280
+8 28848111650 280
+4 28848112340 264
+2 28848153243 0
+3 28848156264 296
+8 28848179148 296
+4 28848179866 264
+2 28851781885 0
+3 28851782562 264
+2 28851828140 0
+3 28851831105 296
+8 28851853965 296
+4 28851854676 264
+2 28855502954 0
+3 28855505902 296
+8 28855528640 296
+4 28855529345 264
+2 28859177977 0
+3 28859180881 296
+8 28859203634 296
+4 28859204342 264
+2 28862852609 0
+3 28862855531 296
+8 28862878123 296
+4 28862878828 264
+2 28866480101 0
+6 28866480802 280
+3 28866482852 280
+8 28866486100 280
+4 28866486790 264
+2 28866527324 0
+3 28866530378 296
+8 28866553336 296
+4 28866554060 264
+2 28870156408 0
+3 28870157083 264
+2 28870202292 0
+3 28870205252 296
+8 28870228037 296
+4 28870228758 264
+2 28873877029 0
+3 28873879951 296
+8 28873902703 296
+4 28873903413 264
+2 28877552041 0
+3 28877554934 296
+8 28877577667 296
+4 28877578374 264
+2 28881226641 0
+3 28881229562 296
+8 28881252176 296
+4 28881252887 264
+2 28884854155 0
+6 28884854856 280
+3 28884856883 280
+8 28884860125 280
+4 28884860815 264
+2 28884901724 0
+3 28884904783 296
+8 28884927673 296
+4 28884928391 264
+2 28888530401 0
+3 28888531082 264
+2 28888576291 0
+3 28888579256 296
+8 28888602090 296
+4 28888602801 264
+2 28892251440 0
+3 28892254384 296
+8 28892277115 296
+4 28892277815 264
+2 28895926089 0
+3 28895928989 296
+8 28895951752 296
+4 28895952460 264
+2 28899601090 0
+3 28899604012 296
+8 28899626604 296
+4 28899627309 264
+2 28903228214 0
+6 28903228915 280
+3 28903230970 280
+8 28903234515 280
+4 28903235205 264
+2 28903275811 0
+3 28903278869 296
+8 28903301812 296
+4 28903302536 264
+2 28906904515 0
+3 28906905190 264
+2 28906950768 0
+3 28906953722 296
+8 28906976507 296
+4 28906977228 264
+2 28910625499 0
+3 28910628421 296
+8 28910651173 296
+4 28910651883 264
+2 28914300148 0
+3 28914303041 296
+8 28914325774 296
+4 28914326481 264
+2 28917975111 0
+3 28917978031 296
+8 28918000613 296
+4 28918001324 264
+2 28921602223 0
+6 28921602924 280
+3 28921604952 280
+8 28921608199 280
+4 28921608898 264
+2 28921649793 0
+3 28921652812 296
+8 28921675692 296
+4 28921676410 264
+2 28925278420 0
+3 28925279095 264
+2 28925324673 0
+3 28925327638 296
+8 28925350498 296
+4 28925351209 264
+2 28928999487 0
+3 28929002435 296
+8 28929025173 296
+4 28929025878 264
+2 28932674510 0
+3 28932677414 296
+8 28932700173 296
+4 28932700881 264
+2 28936349148 0
+3 28936352074 296
+8 28936374667 296
+4 28936375378 264
+2 28939976645 0
+6 28939977346 280
+3 28939979390 280
+8 28939982638 280
+4 28939983328 264
+2 28940024231 0
+3 28940027278 296
+8 28940050243 296
+4 28940050967 264
+2 28943652946 0
+3 28943653621 264
+2 28943698831 0
+3 28943701785 296
+8 28943724570 296
+4 28943725291 264
+2 28947373562 0
+3 28947376484 296
+8 28947399220 296
+4 28947399930 264
+2 28951048558 0
+3 28951051451 296
+8 28951074183 296
+4 28951074890 264
+2 28954723520 0
+3 28954726441 296
+8 28954749056 296
+4 28954749767 264
+2 28958350666 0
+6 28958351367 280
+3 28958353400 280
+8 28958356627 280
+4 28958357311 264
+2 28958398241 0
+3 28958401300 296
+8 28958424173 296
+4 28958424891 264
+2 28962026901 0
+3 28962027576 264
+2 28962073154 0
+3 28962076119 296
+8 28962098953 296
+4 28962099664 264
+2 28965747940 0
+3 28965750884 296
+8 28965773615 296
+4 28965774315 264
+2 28969422589 0
+3 28969425489 296
+8 28969448252 296
+4 28969448960 264
+2 28973097590 0
+3 28973100512 296
+8 28973123104 296
+4 28973123809 264
+2 28976724714 0
+6 28976725415 280
+3 28976727464 280
+8 28976730820 280
+4 28976731510 264
+2 28976772305 0
+3 28976775359 296
+8 28976798306 296
+4 28976799030 264
+2 28980401009 0
+3 28980401684 264
+2 28980447262 0
+3 28980450216 296
+8 28980472999 296
+4 28980473720 264
+2 28984121995 0
+3 28984124915 296
+8 28984147668 296
+4 28984148378 264
+2 28987797006 0
+3 28987799899 296
+8 28987822631 296
+4 28987823338 264
+2 28991471605 0
+3 28991474526 296
+8 28991497108 296
+4 28991497819 264
+2 28995099086 0
+6 28995099798 280
+3 28995101826 280
+8 28995105073 280
+4 28995105763 264
+2 28995146667 0
+3 28995149686 296
+8 28995172566 296
+4 28995173288 264
+2 28998775294 0
+3 28998775969 264
+2 28998821547 0
+3 28998824512 296
+8 28998847372 296
+4 28998848088 264
+2 29002496361 0
+3 29002499309 296
+8 29002522047 296
+4 29002522752 264
+2 29006171021 0
+3 29006173925 296
+8 29006196689 296
+4 29006197397 264
+2 29009846027 0
+3 29009848949 296
+8 29009871541 296
+4 29009872246 264
+2 29013473151 0
+6 29013473856 280
+3 29013475902 280
+8 29013479149 280
+4 29013479839 264
+2 29013520742 0
+3 29013523796 296
+8 29013546754 296
+4 29013547478 264
+2 29017149457 0
+3 29017150132 264
+2 29017195342 0
+3 29017198296 296
+8 29017221085 296
+4 29017221806 264
+2 29020870436 0
+3 29020873358 296
+8 29020896094 296
+4 29020896804 264
+2 29024545069 0
+3 29024547962 296
+8 29024570694 296
+4 29024571401 264
+2 29028220031 0
+3 29028222952 296
+8 29028245567 296
+4 29028246278 264
+2 29031847177 0
+6 29031847878 280
+3 29031849911 280
+8 29031853153 280
+4 29031853843 264
+2 29031894752 0
+3 29031897811 296
+8 29031920701 296
+4 29031921419 264
+2 29035523428 0
+3 29035524103 264
+2 29035569681 0
+3 29035572646 296
+8 29035595481 296
+4 29035596192 264
+2 29039244473 0
+3 29039247417 296
+8 29039270148 296
+4 29039270848 264
+2 29042919485 0
+3 29042922385 296
+8 29042945148 296
+4 29042945856 264
+2 29046594123 0
+3 29046597045 296
+8 29046619637 296
+4 29046620342 264
+2 29050221615 0
+6 29050222316 280
+3 29050224366 280
+8 29050227614 280
+4 29050228304 264
+2 29050268838 0
+3 29050271892 296
+8 29050294839 296
+4 29050295563 264
+2 29053897911 0
+3 29053898586 264
+2 29053943795 0
+3 29053946749 296
+8 29053969532 296
+4 29053970253 264
+2 29057618521 0
+3 29057621443 296
+8 29057644195 296
+4 29057644905 264
+2 29061293533 0
+3 29061296426 296
+8 29061319159 296
+4 29061319866 264
+2 29064968133 0
+3 29064971054 296
+8 29064993635 296
+4 29064994346 264
+2 29068595614 0
+6 29068596315 280
+3 29068598342 280
+8 29068601590 280
+4 29068602280 264
+2 29068643183 0
+3 29068646208 296
+8 29068669176 296
+4 29068669894 264
+2 29072271904 0
+3 29072272579 264
+2 29072318157 0
+3 29072321122 296
+8 29072343993 296
+4 29072344704 264
+2 29075992982 0
+3 29075995930 296
+8 29076018668 296
+4 29076019373 264
+2 29079667642 0
+3 29079670546 296
+8 29079693299 296
+4 29079694007 264
+2 29083342637 0
+3 29083345564 296
+8 29083368162 296
+4 29083368867 264
+2 29086969772 0
+6 29086970473 280
+3 29086972522 280
+8 29086975886 280
+4 29086976576 264
+2 29087017363 0
+3 29087020410 296
+8 29087043364 296
+4 29087044088 264
+2 29090646067 0
+3 29090646742 264
+2 29090691952 0
+3 29090694906 296
+8 29090717691 296
+4 29090718412 264
+2 29094367046 0
+3 29094369968 296
+8 29094392704 296
+4 29094393414 264
+2 29098041679 0
+3 29098044572 296
+8 29098067304 296
+4 29098068011 264
+2 29101716641 0
+3 29101719562 296
+8 29101742177 296
+4 29101742888 264
+2 29105343787 0
+6 29105344488 280
+3 29105346521 280
+8 29105349763 280
+4 29105350453 264
+2 29105391362 0
+3 29105394421 296
+8 29105417311 296
+4 29105418029 264
+2 29109020038 0
+3 29109020713 264
+2 29109066291 0
+3 29109069256 296
+8 29109092091 296
+4 29109092802 264
+2 29112741083 0
+3 29112744027 296
+8 29112766758 296
+4 29112767458 264
+2 29116416095 0
+3 29116419000 296
+8 29116441764 296
+4 29116442472 264
+2 29120090739 0
+3 29120093665 296
+8 29120116258 296
+4 29120116963 264
+2 29123718236 0
+6 29123718937 280
+3 29123720986 280
+8 29123724248 280
+4 29123724938 264
+2 29123765459 0
+3 29123768513 296
+8 29123791460 296
+4 29123792184 264
+2 29127394532 0
+3 29127395207 264
+2 29127440416 0
+3 29127443370 296
+8 29127466153 296
+4 29127466874 264
+2 29131115142 0
+3 29131118064 296
+8 29131140822 296
+4 29131141532 264
+2 29134790160 0
+3 29134793053 296
+8 29134815785 296
+4 29134816498 264
+2 29138464759 0
+3 29138467680 296
+8 29138490262 296
+4 29138490973 264
+2 29142092240 0
+6 29142092941 280
+3 29142094964 280
+8 29142098222 280
+4 29142098912 264
+2 29142139804 0
+3 29142142840 296
+8 29142165737 296
+4 29142166556 264
+2 29145768464 0
+3 29145769139 264
+2 29145814717 0
+3 29145817683 296
+8 29145840566 296
+4 29145841292 264
+2 29149489553 0
+3 29149492596 296
+8 29149515334 296
+4 29149516034 264
+2 29153164312 0
+3 29153167238 296
+8 29153189926 296
+4 29153190634 264
+2 29156838901 0
+3 29156841827 296
+8 29156864370 296
+4 29156865075 264
+2 29160466349 0
+6 29160467050 280
+3 29160469105 280
+8 29160472353 280
+4 29160473056 264
+2 29160513946 0
+3 29160517004 296
+8 29160539879 296
+4 29160540603 264
+2 29164142600 0
+3 29164143275 264
+2 29164188853 0
+3 29164191807 296
+8 29164214565 296
+4 29164215286 264
+2 29167863557 0
+3 29167866479 296
+8 29167889165 296
+4 29167889875 264
+2 29171538503 0
+3 29171541396 296
+8 29171564079 296
+4 29171564786 264
+2 29175213053 0
+3 29175215974 296
+8 29175238539 296
+4 29175239250 264
+2 29178840518 0
+6 29178841219 280
+3 29178843246 280
+8 29178846494 280
+4 29178847184 264
+2 29178888087 0
+3 29178891146 296
+8 29178913981 296
+4 29178914699 264
+2 29182516718 0
+3 29182517395 264
+2 29182562973 0
+3 29182565938 296
+8 29182588728 296
+4 29182589439 264
+2 29186237715 0
+3 29186240659 296
+8 29186263390 296
+4 29186264090 264
+2 29189912364 0
+3 29189915264 296
+8 29189938027 296
+4 29189938735 264
+2 29193587365 0
+3 29193590287 296
+8 29193612879 296
+4 29193613584 264
+2 29197214489 0
+6 29197215190 280
+3 29197217239 280
+8 29197220487 280
+4 29197221177 264
+2 29197262080 0
+3 29197265134 296
+8 29197288081 296
+4 29197288805 264
+2 29200890784 0
+3 29200891459 264
+2 29200937037 0
+3 29200939997 296
+8 29200962782 296
+4 29200963503 264
+2 29204611774 0
+3 29204614696 296
+8 29204637465 296
+4 29204638175 264
+2 29208286803 0
+3 29208289696 296
+8 29208312428 296
+4 29208313135 264
+2 29211961402 0
+3 29211964323 296
+8 29211986905 296
+4 29211987616 264
+2 29215588883 0
+6 29215589584 280
+3 29215591607 280
+8 29215594854 280
+4 29215595544 264
+2 29215636447 0
+3 29215639468 296
+8 29215662347 296
+4 29215663065 264
+2 29219265074 0
+3 29219265749 264
+2 29219311327 0
+3 29219314292 296
+8 29219337152 296
+4 29219337863 264
+2 29222986141 0
+3 29222989085 296
+8 29223011822 296
+4 29223012527 264
+2 29226660796 0
+3 29226663711 296
+8 29226686464 296
+4 29226687172 264
+2 29230335802 0
+3 29230338724 296
+8 29230361316 296
+4 29230362021 264
+2 29233962926 0
+6 29233963627 280
+3 29233965682 280
+8 29233968930 280
+4 29233969620 264
+2 29234010523 0
+3 29234013581 296
+8 29234036535 296
+4 29234037259 264
+2 29237639238 0
+3 29237639913 264
+2 29237685491 0
+3 29237688445 296
+8 29237711230 296
+4 29237711951 264
+2 29241360222 0
+3 29241363144 296
+8 29241385880 296
+4 29241386590 264
+2 29245034855 0
+3 29245037748 296
+8 29245060480 296
+4 29245061187 264
+2 29248709817 0
+3 29248712738 296
+8 29248735353 296
+4 29248736064 264
+2 29252336963 0
+6 29252337664 280
+3 29252339692 280
+8 29252342983 280
+4 29252343673 264
+2 29252384532 0
+3 29252387591 296
+8 29252410481 296
+4 29252411199 264
+2 29256013209 0
+3 29256013884 264
+2 29256059462 0
+3 29256062427 296
+8 29256085261 296
+4 29256085972 264
+2 29259734248 0
+3 29259737192 296
+8 29259759923 296
+4 29259760623 264
+2 29263409260 0
+3 29263412160 296
+8 29263434929 296
+4 29263435637 264
+2 29267083904 0
+3 29267086830 296
+8 29267109423 296
+4 29267110128 264
+2 29270711401 0
+6 29270712108 280
+3 29270714157 280
+8 29270717518 280
+4 29270718208 264
+2 29270758630 0
+3 29270761688 296
+8 29270784647 296
+4 29270785371 264
+2 29274387719 0
+3 29274388394 264
+2 29274433603 0
+3 29274436557 296
+8 29274459340 296
+4 29274460065 264
+2 29278108329 0
+3 29278111251 296
+8 29278134003 296
+4 29278134713 264
+2 29281783341 0
+3 29281786234 296
+8 29281808967 296
+4 29281809674 264
+2 29285457941 0
+3 29285460862 296
+8 29285483443 296
+4 29285484156 264
+2 29289085422 0
+6 29289086123 280
+3 29289088156 280
+8 29289091403 280
+4 29289092093 264
+2 29289132997 0
+3 29289136016 296
+8 29289158896 296
+4 29289159614 264
+2 29292761624 0
+3 29292762299 264
+2 29292807877 0
+3 29292810842 296
+8 29292833702 296
+4 29292834413 264
+2 29296482691 0
+3 29296485639 296
+8 29296508377 296
+4 29296509082 264
+2 29300157351 0
+3 29300160255 296
+8 29300183008 296
+4 29300183716 264
+2 29303832346 0
+3 29303835268 296
+8 29303857860 296
+4 29303858565 264
+2 29307459470 0
+6 29307460171 280
+3 29307462220 280
+8 29307465468 280
+4 29307466158 264
+2 29307507061 0
+3 29307510115 296
+8 29307533068 296
+4 29307533792 264
+2 29311135771 0
+3 29311136446 264
+2 29311182024 0
+3 29311184978 296
+8 29311207763 296
+4 29311208484 264
+2 29314856755 0
+3 29314859677 296
+8 29314882413 296
+4 29314883123 264
+2 29318531751 0
+3 29318534644 296
+8 29318557376 296
+4 29318558083 264
+2 29322206350 0
+3 29322209271 296
+8 29322231886 296
+4 29322232597 264
+2 29325833864 0
+6 29325834636 280
+3 29325836664 280
+8 29325839906 280
+4 29325840596 264
+2 29325881137 0
+3 29325884196 296
+8 29325907086 296
+4 29325907804 264
+2 29329510182 0
+3 29329510857 264
+2 29329556066 0
+3 29329559031 296
+8 29329581871 296
+4 29329582582 264
+2 29333230858 0
+3 29333233802 296
+8 29333256539 296
+4 29333257239 264
+2 29336905876 0
+3 29336908780 296
+8 29336931544 296
+4 29336932252 264
+2 29340580519 0
+3 29340583441 296
+8 29340606033 296
+4 29340606738 264
+2 29344208011 0
+6 29344208712 280
+3 29344210756 280
+8 29344214004 280
+4 29344214694 264
+2 29344255229 0
+3 29344258287 296
+8 29344281230 296
+4 29344281954 264
+2 29347884301 0
+3 29347884976 264
+2 29347930186 0
+3 29347933140 296
+8 29347955925 296
+4 29347956646 264
+2 29351604917 0
+3 29351607839 296
+8 29351630591 296
+4 29351631302 264
+2 29355279929 0
+3 29355282822 296
+8 29355305555 296
+4 29355306262 264
+2 29358954892 0
+3 29358957813 296
+8 29358980395 296
+4 29358981101 264
+2 29362582004 0
+6 29362582705 280
+3 29362584738 280
+8 29362588184 280
+4 29362588874 264
+2 29362629579 0
+3 29362632600 296
+8 29362655479 296
+4 29362656197 264
+2 29366258206 0
+3 29366258881 264
+2 29366304459 0
+3 29366307424 296
+8 29366330284 296
+4 29366330995 264
+2 29369979273 0
+3 29369982217 296
+8 29370004954 296
+4 29370005659 264
+2 29373653928 0
+3 29373656832 296
+8 29373679585 296
+4 29373680293 264
+2 29377328923 0
+3 29377331845 296
+8 29377354437 296
+4 29377355142 264
+2 29380956047 0
+6 29380956748 280
+3 29380958797 280
+8 29380962045 280
+4 29380962735 264
+2 29381003638 0
+3 29381006692 296
+8 29381029645 296
+4 29381030369 264
+2 29384632348 0
+3 29384633023 264
+2 29384678601 0
+3 29384681555 296
+8 29384704340 296
+4 29384705061 264
+2 29388353332 0
+3 29388356254 296
+8 29388378990 296
+4 29388379700 264
+2 29392028328 0
+3 29392031221 296
+8 29392053953 296
+4 29392054660 264
+2 29395702927 0
+3 29395705848 296
+8 29395728468 296
+4 29395729179 264
+2 29399330447 0
+6 29399331152 280
+3 29399333175 280
+8 29399336417 280
+4 29399337107 264
+2 29399378016 0
+3 29399381075 296
+8 29399403960 296
+4 29399404678 264
+2 29403006687 0
+3 29403007362 264
+2 29403052572 0
+3 29403055537 296
+8 29403078388 296
+4 29403079099 264
+2 29406727380 0
+3 29406730324 296
+8 29406753055 296
+4 29406753755 264
+2 29410402392 0
+3 29410405292 296
+8 29410428055 296
+4 29410428763 264
+2 29414077030 0
+3 29414079952 296
+8 29414102544 296
+4 29414103249 264
+2 29417704522 0
+6 29417705223 280
+3 29417707267 280
+8 29417710566 280
+4 29417711256 264
+2 29417752108 0
+3 29417755162 296
+8 29417778109 296
+4 29417778833 264
+2 29421380812 0
+3 29421381487 264
+2 29421426697 0
+3 29421429651 296
+8 29421452436 296
+4 29421453157 264
+2 29425101791 0
+3 29425104713 296
+8 29425127465 296
+4 29425128175 264
+2 29428776440 0
+3 29428779333 296
+8 29428802066 296
+4 29428802773 264
+2 29432451403 0
+3 29432454324 296
+8 29432476905 296
+4 29432477616 264
+2 29436078515 0
+6 29436079216 280
+3 29436081249 280
+8 29436084497 280
+4 29436085187 264
+2 29436126090 0
+3 29436129111 296
+8 29436151990 296
+4 29436152708 264
+2 29439754717 0
+3 29439755392 264
+2 29439800970 0
+3 29439803935 296
+8 29439826795 296
+4 29439827506 264
+2 29443475784 0
+3 29443478728 296
+8 29443501465 296
+4 29443502170 264
+2 29447150802 0
+3 29447153706 296
+8 29447176459 296
+4 29447177167 264
+2 29450825434 0
+3 29450828356 296
+8 29450850948 296
+4 29450851653 264
+2 29454452926 0
+6 29454453631 280
+3 29454455687 280
+8 29454458936 280
+4 29454459626 264
+2 29454500160 0
+3 29454503214 296
+8 29454526167 296
+4 29454526891 264
+2 29458129238 0
+3 29458129913 264
+2 29458175123 0
+3 29458178077 296
+8 29458200862 296
+4 29458201583 264
+2 29461849854 0
+3 29461852776 296
+8 29461875517 296
+4 29461876227 264
+2 29465524855 0
+3 29465527748 296
+8 29465550481 296
+4 29465551188 264
+2 29469199455 0
+3 29469202376 296
+8 29469224990 296
+4 29469225701 264
+2 29472826969 0
+6 29472827670 280
+3 29472829697 280
+8 29472832939 280
+4 29472833629 264
+2 29472874538 0
+3 29472877597 296
+8 29472900487 296
+4 29472901205 264
+2 29476503215 0
+3 29476503890 264
+2 29476549468 0
+3 29476552433 296
+8 29476575267 296
+4 29476575978 264
+2 29480224254 0
+3 29480227198 296
+8 29480249929 296
+4 29480250629 264
+2 29483898903 0
+3 29483901803 296
+8 29483924566 296
+4 29483925274 264
+2 29487573904 0
+3 29487576826 296
+8 29487599418 296
+4 29487600123 264
+2 29491201028 0
+6 29491201729 280
+3 29491203784 280
+8 29491207032 280
+4 29491207722 264
+2 29491248625 0
+3 29491251683 296
+8 29491274626 296
+4 29491275350 264
+2 29494877329 0
+3 29494878004 264
+2 29494923582 0
+3 29494926536 296
+8 29494949321 296
+4 29494950042 264
+2 29498598313 0
+3 29498601235 296
+8 29498623987 296
+4 29498624697 264
+2 29502272962 0
+3 29502275855 296
+8 29502298588 296
+4 29502299295 264
+2 29505947925 0
+3 29505950846 296
+8 29505973427 296
+4 29505974138 264
+2 29509575406 0
+6 29509576107 280
+3 29509578134 280
+8 29509581393 280
+4 29509582083 264
+2 29509622607 0
+3 29509625643 296
+8 29509648539 296
+4 29509649257 264
+2 29513251635 0
+3 29513252310 264
+2 29513297520 0
+3 29513300484 296
+8 29513323368 296
+4 29513324094 264
+2 29516972356 0
+3 29516975397 296
+8 29516998136 296
+4 29516998836 264
+2 29520647109 0
+3 29520650035 296
+8 29520672723 296
+4 29520673431 264
+2 29524322061 0
+3 29524324987 296
+8 29524347530 296
+4 29524348235 264
+2 29527949509 0
+6 29527950214 280
+3 29527952265 280
+8 29527955513 280
+4 29527956216 264
+2 29527996737 0
+3 29527999795 296
+8 29528022670 296
+4 29528023394 264
+2 29531625755 0
+3 29531626430 264
+2 29531671639 0
+3 29531674593 296
+8 29531697354 296
+4 29531698075 264
+2 29535346706 0
+3 29535349628 296
+8 29535372314 296
+4 29535373024 264
+2 29539021289 0
+3 29539024182 296
+8 29539046865 296
+4 29539047572 264
+2 29542696202 0
+3 29542699123 296
+8 29542721688 296
+4 29542722399 264
+2 29546323667 0
+6 29546324368 280
+3 29546326395 280
+8 29546329643 280
+4 29546330333 264
+2 29546371236 0
+3 29546374295 296
+8 29546397125 296
+4 29546397843 264
+2 29549999852 0
+3 29550000527 264
+2 29550045737 0
+3 29550048702 296
+8 29550071492 296
+4 29550072203 264
+2 29553720842 0
+3 29553723786 296
+8 29553746517 296
+4 29553747217 264
+2 29557395491 0
+3 29557398391 296
+8 29557421154 296
+4 29557421862 264
+2 29561070492 0
+3 29561073414 296
+8 29561096006 296
+4 29561096711 264
+2 29564697616 0
+6 29564698317 280
+3 29564700372 280
+8 29564703633 280
+4 29564704323 264
+2 29564745213 0
+3 29564748271 296
+8 29564771214 296
+4 29564771938 264
+2 29568373917 0
+3 29568374592 264
+2 29568420170 0
+3 29568423124 296
+8 29568445909 296
+4 29568446630 264
+2 29572094901 0
+3 29572097823 296
+8 29572120575 296
+4 29572121285 264
+2 29575769550 0
+3 29575772443 296
+8 29575795176 296
+4 29575795883 264
+2 29579444513 0
+3 29579447433 296
+8 29579470015 296
+4 29579470726 264
+2 29583071994 0
+6 29583072695 280
+3 29583074723 280
+8 29583077970 280
+4 29583078660 264
+2 29583119195 0
+3 29583122214 296
+8 29583145094 296
+4 29583145812 264
+2 29586748190 0
+3 29586748865 264
+2 29586794075 0
+3 29586797040 296
+8 29586819900 296
+4 29586820611 264
+2 29590468889 0
+3 29590471837 296
+8 29590494575 296
+4 29590495280 264
+2 29594143912 0
+3 29594146816 296
+8 29594169575 296
+4 29594170288 264
+2 29597818550 0
+3 29597821476 296
+8 29597844069 296
+4 29597844774 264
+2 29601446047 0
+6 29601446748 280
+3 29601448804 280
+8 29601452051 280
+4 29601452741 264
+2 29601493644 0
+3 29601496698 296
+8 29601519662 296
+4 29601520386 264
+2 29605122365 0
+3 29605123040 264
+2 29605168249 0
+3 29605171203 296
+8 29605193986 296
+4 29605194707 264
+2 29608843338 0
+3 29608846260 296
+8 29608868996 296
+4 29608869706 264
+2 29612517971 0
+3 29612520864 296
+8 29612543596 296
+4 29612544303 264
+2 29616192933 0
+3 29616195854 296
+8 29616218469 296
+4 29616219180 264
+2 29619820079 0
+6 29619820780 280
+3 29619822813 280
+8 29619826055 280
+4 29619826745 264
+2 29619867654 0
+3 29619870713 296
+8 29619893603 296
+4 29619894321 264
+2 29623496330 0
+3 29623497005 264
+2 29623542583 0
+3 29623545548 296
+8 29623568383 296
+4 29623569094 264
+2 29627217375 0
+3 29627220319 296
+8 29627243050 296
+4 29627243750 264
+2 29630892024 0
+3 29630894924 296
+8 29630917687 296
+4 29630918395 264
+2 29634567025 0
+3 29634569947 296
+8 29634592539 296
+4 29634593244 264
+2 29638194149 0
+6 29638194850 280
+3 29638196899 280
+8 29638200147 280
+4 29638200837 264
+2 29638241740 0
+3 29638244794 296
+8 29638267741 296
+4 29638268465 264
+2 29641870444 0
+3 29641871119 264
+2 29641916697 0
+3 29641919651 296
+8 29641942434 296
+4 29641943155 264
+2 29645591423 0
+3 29645594344 296
+8 29645617097 296
+4 29645617807 264
+2 29649266435 0
+3 29649269328 296
+8 29649292061 296
+4 29649292768 264
+2 29652941035 0
+3 29652943956 296
+8 29652966537 296
+4 29652967248 264
+2 29656568516 0
+6 29656569221 280
+3 29656571249 280
+8 29656574497 280
+4 29656575187 264
+2 29656616091 0
+3 29656619110 296
+8 29656641990 296
+4 29656642708 264
+2 29660244718 0
+3 29660245393 264
+2 29660290971 0
+3 29660293936 296
+8 29660316796 296
+4 29660317507 264
+2 29663965785 0
+3 29663968733 296
+8 29663991471 296
+4 29663992182 264
+2 29667640445 0
+3 29667643349 296
+8 29667666102 296
+4 29667666810 264
+2 29671315440 0
+3 29671318362 296
+8 29671340954 296
+4 29671341659 264
+2 29674942564 0
+6 29674943265 280
+3 29674945314 280
+8 29674948562 280
+4 29674949252 264
+2 29674990155 0
+3 29674993209 296
+8 29675016162 296
+4 29675016886 264
+2 29678618865 0
+3 29678619540 264
+2 29678665118 0
+3 29678668072 296
+8 29678690857 296
+4 29678691578 264
+2 29682339849 0
+3 29682342771 296
+8 29682365507 296
+4 29682366217 264
+2 29686014482 0
+3 29686017375 296
+8 29686040107 296
+4 29686040814 264
+2 29689689444 0
+3 29689692365 296
+8 29689714980 296
+4 29689715691 264
+2 29693316590 0
+6 29693317291 280
+3 29693319324 280
+8 29693322566 280
+4 29693323256 264
+2 29693364165 0
+3 29693367224 296
+8 29693390114 296
+4 29693390832 264
+2 29696992841 0
+3 29696993516 264
+2 29697039094 0
+3 29697042059 296
+8 29697064894 296
+4 29697065605 264
+2 29700713886 0
+3 29700716830 296
+8 29700739561 296
+4 29700740261 264
+2 29704388898 0
+3 29704391798 296
+8 29704414561 296
+4 29704415269 264
+2 29708063536 0
+3 29708066458 296
+8 29708089050 296
+4 29708089755 264
+2 29711691028 0
+6 29711691729 280
+3 29711693778 280
+8 29711697040 280
+4 29711697730 264
+2 29711738251 0
+3 29711741305 296
+8 29711764259 296
+4 29711764983 264
+2 29715367335 0
+3 29715368010 264
+2 29715413219 0
+3 29715416173 296
+8 29715438956 296
+4 29715439677 264
+2 29719087945 0
+3 29719090867 296
+8 29719113619 296
+4 29719114329 264
+2 29722762957 0
+3 29722765850 296
+8 29722788583 296
+4 29722789290 264
+2 29726437557 0
+3 29726440478 296
+8 29726463065 296
+4 29726463776 264
+2 29730065043 0
+6 29730065748 280
+3 29730067771 280
+8 29730071019 280
+4 29730071709 264
+2 29730112613 0
+3 29730115632 296
+8 29730138518 296
+4 29730139236 264
+2 29733741240 0
+3 29733741915 264
+2 29733787493 0
+3 29733790458 296
+8 29733813329 296
+4 29733814040 264
+2 29737462318 0
+3 29737465266 296
+8 29737488004 296
+4 29737488709 264
+2 29741136978 0
+3 29741139882 296
+8 29741162635 296
+4 29741163343 264
+2 29744811973 0
+3 29744814895 296
+8 29744837487 296
+4 29744838192 264
+2 29748439097 0
+6 29748439798 280
+3 29748441841 280
+8 29748445090 280
+4 29748445780 264
+2 29748486683 0
+3 29748489730 296
+8 29748512692 296
+4 29748513416 264
+2 29752115387 0
+3 29752116062 264
+2 29752161640 0
+3 29752164594 296
+8 29752187379 296
+4 29752188100 264
+2 29755836371 0
+3 29755839293 296
+8 29755862029 296
+4 29755862739 264
+2 29759511367 0
+3 29759514260 296
+8 29759536992 296
+4 29759537699 264
+2 29763185966 0
+3 29763188887 296
+8 29763211502 296
+4 29763212213 264
+2 29766813480 0
+6 29766814181 280
+3 29766816214 280
+8 29766819456 280
+4 29766820146 264
+2 29766861055 0
+3 29766864114 296
+8 29766887004 296
+4 29766887722 264
+2 29770489732 0
+3 29770490407 264
+2 29770535616 0
+3 29770538581 296
+8 29770561416 296
+4 29770562127 264
+2 29774210408 0
+3 29774213352 296
+8 29774236083 296
+4 29774236783 264
+2 29777885420 0
+3 29777888325 296
+8 29777911089 296
+4 29777911797 264
+2 29781560064 0
+3 29781562991 296
+8 29781585583 296
+4 29781586288 264
+2 29785187561 0
+6 29785188266 280
+3 29785190322 280
+8 29785193571 280
+4 29785194261 264
+2 29785235164 0
+3 29785238217 296
+8 29785261159 296
+4 29785261883 264
+2 29788863862 0
+3 29788864537 264
+2 29788909747 0
+3 29788912701 296
+8 29788935486 296
+4 29788936207 264
+2 29792584841 0
+3 29792587763 296
+8 29792610521 296
+4 29792611231 264
+2 29796259496 0
+3 29796262389 296
+8 29796285121 296
+4 29796285828 264
+2 29799934458 0
+3 29799937385 296
+8 29799959966 296
+4 29799960677 264
+2 29803561576 0
+6 29803562277 280
+3 29803564300 280
+8 29803567547 280
+4 29803568237 264
+2 29803609140 0
+3 29803612155 296
+8 29803635045 296
+4 29803635763 264
+2 29807237773 0
+3 29807238448 264
+2 29807284026 0
+3 29807286991 296
+8 29807309851 296
+4 29807310562 264
+2 29810958840 0
+3 29810961788 296
+8 29810984526 296
+4 29810985231 264
+2 29814633500 0
+3 29814636404 296
+8 29814659164 296
+4 29814659873 264
+2 29818308501 0
+3 29818311427 296
+8 29818334020 296
+4 29818334725 264
+2 29821935630 0
+6 29821936331 280
+3 29821938386 280
+8 29821941843 280
+4 29821942533 264
+2 29821983227 0
+3 29821986285 296
+8 29822009239 296
+4 29822009963 264
+2 29825611942 0
+3 29825612617 264
+2 29825658195 0
+3 29825661149 296
+8 29825683934 296
+4 29825684655 264
+2 29829332926 0
+3 29829335848 296
+8 29829358584 296
+4 29829359294 264
+2 29833007922 0
+3 29833010815 296
+8 29833033547 296
+4 29833034254 264
+2 29836682521 0
+3 29836685442 296
+8 29836708057 296
+4 29836708768 264
+2 29840310035 0
+6 29840310736 280
+3 29840312759 280
+8 29840315985 280
+4 29840316669 264
+2 29840357599 0
+3 29840360641 296
+8 29840383510 296
+4 29840384228 264
+2 29843986237 0
+3 29843986912 264
+2 29844032490 0
+3 29844035461 296
+8 29844058295 296
+4 29844059006 264
+2 29847707282 0
+3 29847710226 296
+8 29847732957 296
+4 29847733657 264
+2 29851381931 0
+3 29851384831 296
+8 29851407594 296
+4 29851408302 264
+2 29855056932 0
+3 29855059854 296
+8 29855082446 296
+4 29855083151 264
+2 29858684056 0
+6 29858684761 280
+3 29858686812 280
+8 29858690298 280
+4 29858690988 264
+2 29858731653 0
+3 29858734706 296
+8 29858757736 296
+4 29858758460 264
+2 29862360439 0
+3 29862361114 264
+2 29862406324 0
+3 29862409278 296
+8 29862432063 296
+4 29862432790 264
+2 29866081418 0
+3 29866084340 296
+8 29866107092 296
+4 29866107802 264
+2 29869756067 0
+3 29869758960 296
+8 29869781693 296
+4 29869782400 264
+2 29873431030 0
+3 29873433951 296
+8 29873456532 296
+4 29873457243 264
+2 29877058142 0
+6 29877058843 280
+3 29877060866 280
+8 29877064135 280
+4 29877064825 264
+2 29877105706 0
+3 29877108742 296
+8 29877131633 296
+4 29877132351 264
+2 29880734361 0
+3 29880735036 264
+2 29880780614 0
+3 29880783578 296
+8 29880806452 296
+4 29880807178 264
+2 29884455444 0
+3 29884458487 296
+8 29884481225 296
+4 29884481925 264
+2 29888130203 0
+3 29888133129 296
+8 29888155817 296
+4 29888156525 264
+2 29891805155 0
+3 29891808081 296
+8 29891830624 296
+4 29891831329 264
+2 29895432234 0
+6 29895432935 280
+3 29895434995 280
+8 29895438244 280
+4 29895438947 264
+2 29895479837 0
+3 29895482895 296
+8 29895505770 296
+4 29895506494 264
+2 29899108491 0
+3 29899109166 264
+2 29899154744 0
+3 29899157698 296
+8 29899180456 296
+4 29899181177 264
+2 29902829448 0
+3 29902832370 296
+8 29902855056 296
+4 29902855766 264
+2 29906504394 0
+3 29906507287 296
+8 29906529970 296
+4 29906530677 264
+2 29910179307 0
+3 29910182228 296
+8 29910204793 296
+4 29910205504 264
+2 29913806410 0
+6 29913807122 280
+3 29913809149 280
+8 29913812456 280
+4 29913813146 264
+2 29913853989 0
+3 29913857031 296
+8 29913879861 296
+4 29913880579 264
+2 29917482589 0
+3 29917483264 264
+2 29917528842 0
+3 29917531807 296
+8 29917554597 296
+4 29917555308 264
+2 29921203584 0
+3 29921206528 296
+8 29921229259 296
+4 29921229959 264
+2 29924878596 0
+3 29924881496 296
+8 29924904265 296
+4 29924904978 264
+2 29928553240 0
+3 29928556166 296
+8 29928578759 296
+4 29928579464 264
+2 29932180737 0
+6 29932181438 280
+3 29932183487 280
+8 29932186741 280
+4 29932187431 264
+2 29932228329 0
+3 29932231382 296
+8 29932254342 296
+4 29932255066 264
+2 29935857049 0
+3 29935857724 264
+2 29935902934 0
+3 29935905888 296
+8 29935928673 296
+4 29935929394 264
+2 29939578028 0
+3 29939580950 296
+8 29939603702 296
+4 29939604412 264
+2 29943252677 0
+3 29943255570 296
+8 29943278303 296
+4 29943279010 264
+2 29946927640 0
+3 29946930561 296
+8 29946953142 296
+4 29946953857 264
+2 29950554752 0
+6 29950555453 280
+3 29950557491 280
+8 29950560739 280
+4 29950561429 264
+2 29950602333 0
+3 29950605353 296
+8 29950628238 296
+4 29950628956 264
+2 29954230965 0
+3 29954231640 264
+2 29954277218 0
+3 29954280183 296
+8 29954303043 296
+4 29954303754 264
+2 29957952032 0
+3 29957954976 296
+8 29957977713 296
+4 29957978418 264
+2 29961627050 0
+3 29961629954 296
+8 29961652707 296
+4 29961653415 264
+2 29965301682 0
+3 29965304604 296
+8 29965327196 296
+4 29965327901 264
+2 29968929174 0
+6 29968929875 280
+3 29968931924 280
+8 29968935437 280
+4 29968936127 264
+2 29968976397 0
+3 29968979451 296
+8 29969002412 296
+4 29969003136 264
+2 29972605486 0
+3 29972606161 264
+2 29972651371 0
+3 29972654325 296
+8 29972677110 296
+4 29972677831 264
+2 29976326102 0
+3 29976329024 296
+8 29976351760 296
+4 29976352470 264
+2 29980001098 0
+3 29980003991 296
+8 29980026723 296
+4 29980027430 264
+2 29983675697 0
+3 29983678618 296
+8 29983701233 296
+4 29983701944 264
+2 29987303211 0
+6 29987303916 280
+3 29987305946 280
+8 29987309187 280
+4 29987309877 264
+2 29987350786 0
+3 29987353845 296
+8 29987376741 296
+4 29987377459 264
+2 29990979468 0
+3 29990980143 264
+2 29991025353 0
+3 29991028318 296
+8 29991051158 296
+4 29991051869 264
+2 29994700513 0
+3 29994703457 296
+8 29994726188 296
+4 29994726888 264
+2 29998375162 0
+3 29998378072 296
+8 29998400836 296
+4 29998401544 264
+2 30002050174 0
+3 30002053096 296
+8 30002075704 296
+4 30002076409 264
+2 30005677314 0
+6 30005678015 280
+3 30005680064 280
+8 30005683375 280
+4 30005684065 264
+2 30005724906 0
+3 30005727964 296
+8 30005750925 296
+4 30005751649 264
+2 30009353632 0
+3 30009354307 264
+2 30009399516 0
+3 30009402470 296
+8 30009425253 296
+4 30009425974 264
+2 30013074605 0
+3 30013077527 296
+8 30013100279 296
+4 30013100990 264
+2 30016749254 0
+3 30016752147 296
+8 30016774880 296
+4 30016775587 264
+2 30020424217 0
+3 30020427138 296
+8 30020449719 296
+4 30020450430 264
+2 30024051329 0
+6 30024052030 280
+3 30024054068 280
+8 30024057316 280
+4 30024058006 264
+2 30024098910 0
+3 30024101929 296
+8 30024124815 296
+4 30024125533 264
+2 30027727542 0
+3 30027728217 264
+2 30027773795 0
+3 30027776760 296
+8 30027799620 296
+4 30027800331 264
+2 30031448609 0
+3 30031451553 296
+8 30031474290 296
+4 30031474995 264
+2 30035123627 0
+3 30035126531 296
+8 30035149284 296
+4 30035149992 264
+2 30038798259 0
+3 30038801181 296
+8 30038823773 296
+4 30038824478 264
+2 30042425751 0
+6 30042426452 280
+3 30042428507 280
+8 30042431755 280
+4 30042432445 264
+2 30042472980 0
+3 30042476038 296
+8 30042499000 296
+4 30042499724 264
+2 30046102074 0
+3 30046102749 264
+2 30046147959 0
+3 30046150913 296
+8 30046173698 296
+4 30046174419 264
+2 30049822690 0
+3 30049825612 296
+8 30049848348 296
+4 30049849058 264
+2 30053497686 0
+3 30053500579 296
+8 30053523311 296
+4 30053524018 264
+2 30057172285 0
+3 30057175206 296
+8 30057197821 296
+4 30057198532 264
+2 30060799799 0
+6 30060800504 280
+3 30060802534 280
+8 30060805775 280
+4 30060806465 264
+2 30060847374 0
+3 30060850433 296
+8 30060873329 296
+4 30060874053 264
+2 30064476056 0
+3 30064476731 264
+2 30064522309 0
+3 30064525274 296
+8 30064548109 296
+4 30064548820 264
+2 30068197101 0
+3 30068200045 296
+8 30068222776 296
+4 30068223476 264
+2 30071871750 0
+3 30071874650 296
+8 30071897413 296
+4 30071898121 264
+2 30075546751 0
+3 30075549673 296
+8 30075572265 296
+4 30075572970 264
+2 30079173875 0
+6 30079174576 280
+3 30079176625 280
+8 30079179884 280
+4 30079180574 264
+2 30079221466 0
+3 30079224520 296
+8 30079247482 296
+4 30079248206 264
+2 30082850181 0
+3 30082850856 264
+2 30082896434 0
+3 30082899388 296
+8 30082922171 296
+4 30082922892 264
+2 30086571160 0
+3 30086574082 296
+8 30086596841 296
+4 30086597551 264
+2 30090245815 0
+3 30090248708 296
+8 30090271440 296
+4 30090272143 264
+2 30093920777 0
+3 30093923698 296
+8 30093946280 296
+4 30093946991 264
+2 30097547890 0
+6 30097548591 280
+3 30097550629 280
+8 30097553864 280
+4 30097554554 264
+2 30097595470 0
+3 30097598491 296
+8 30097621386 296
+4 30097622104 264
+2 30101224114 0
+3 30101224789 264
+2 30101270367 0
+3 30101273332 296
+8 30101296192 296
+4 30101296903 264
+2 30104945181 0
+3 30104948129 296
+8 30104970867 296
+4 30104971572 264
+2 30108620204 0
+3 30108623109 296
+8 30108645861 296
+4 30108646569 264
+2 30112294836 0
+3 30112297758 296
+8 30112320350 296
+4 30112321055 264
+2 30115922328 0
+6 30115923033 280
+3 30115925089 280
+8 30115928338 280
+4 30115929028 264
+2 30115969562 0
+3 30115972615 296
+8 30115995577 296
+4 30115996301 264
+2 30119598651 0
+3 30119599326 264
+2 30119644536 0
+3 30119647490 296
+8 30119670275 296
+4 30119670996 264
+2 30123319267 0
+3 30123322189 296
+8 30123344930 296
+4 30123345640 264
+2 30126994268 0
+3 30126997161 296
+8 30127019894 296
+4 30127020601 264
+2 30130669231 0
+3 30130672158 296
+8 30130694772 296
+4 30130695483 264
+2 30134296382 0
+6 30134297083 280
+3 30134299111 280
+8 30134302380 280
+4 30134303070 264
+2 30134343951 0
+3 30134346993 296
+8 30134369884 296
+4 30134370602 264
+2 30137972611 0
+3 30137973286 264
+2 30138018864 0
+3 30138021829 296
+8 30138044664 296
+4 30138045375 264
+2 30141693656 0
+3 30141696600 296
+8 30141719331 296
+4 30141720031 264
+2 30145368305 0
+3 30145371205 296
+8 30145393968 296
+4 30145394680 264
+2 30149043306 0
+3 30149046228 296
+8 30149068820 296
+4 30149069525 264
+2 30152670430 0
+6 30152671131 280
+3 30152673192 280
+8 30152676452 280
+4 30152677142 264
+2 30152718032 0
+3 30152721085 296
+8 30152744036 296
+4 30152744760 264
+2 30156346742 0
+3 30156347417 264
+2 30156392995 0
+3 30156395949 296
+8 30156418734 296
+4 30156419455 264
+2 30160067726 0
+3 30160070648 296
+8 30160093400 296
+4 30160094110 264
+2 30163742375 0
+3 30163745268 296
+8 30163768001 296
+4 30163768708 264
+2 30167417338 0
+3 30167420259 296
+8 30167442840 296
+4 30167443551 264
+2 30171044819 0
+6 30171045520 280
+3 30171047548 280
+8 30171050795 280
+4 30171051485 264
+2 30171092020 0
+3 30171095035 296
+8 30171117930 296
+4 30171118648 264
+2 30174721026 0
+3 30174721701 264
+2 30174766911 0
+3 30174769876 296
+8 30174792736 296
+4 30174793447 264
+2 30178441725 0
+3 30178444673 296
+8 30178467411 296
+4 30178468116 264
+2 30182116748 0
+3 30182119652 296
+8 30182142405 296
+4 30182143113 264
+2 30185791380 0
+3 30185794302 296
+8 30185816894 296
+4 30185817599 264
+2 30189418872 0
+6 30189419577 280
+3 30189421633 280
+8 30189424882 280
+4 30189425572 264
+2 30189466475 0
+3 30189469528 296
+8 30189492481 296
+4 30189493205 264
+2 30193095184 0
+3 30193095859 264
+2 30193141069 0
+3 30193144023 296
+8 30193166808 296
+4 30193167529 264
+2 30196816163 0
+3 30196819085 296
+8 30196841821 296
+4 30196842531 264
+2 30200490796 0
+3 30200493689 296
+8 30200516421 296
+4 30200517128 264
+2 30204165758 0
+3 30204168679 296
+8 30204191294 296
+4 30204192005 264
+2 30207792904 0
+6 30207793605 280
+3 30207795632 280
+8 30207798885 280
+4 30207799575 264
+2 30207840473 0
+3 30207843515 296
+8 30207866395 296
+4 30207867113 264
+2 30211469122 0
+3 30211469797 264
+2 30211515375 0
+3 30211518340 296
+8 30211541175 296
+4 30211541886 264
+2 30215190167 0
+3 30215193111 296
+8 30215215842 296
+4 30215216542 264
+2 30218864816 0
+3 30218867716 296
+8 30218890479 296
+4 30218891187 264
+2 30222539817 0
+3 30222542739 296
+8 30222565331 296
+4 30222566036 264
+2 30226166941 0
+6 30226167642 280
+3 30226169697 280
+8 30226172945 280
+4 30226173635 264
+2 30226214538 0
+3 30226217596 296
+8 30226240539 296
+4 30226241263 264
+2 30229843242 0
+3 30229843917 264
+2 30229889495 0
+3 30229892449 296
+8 30229915234 296
+4 30229915955 264
+2 30233564226 0
+3 30233567148 296
+8 30233589900 296
+4 30233590610 264
+2 30237239238 0
+3 30237242131 296
+8 30237264864 296
+4 30237265571 264
+2 30240913838 0
+3 30240916759 296
+8 30240939340 296
+4 30240940051 264
+2 30244541326 0
+6 30244542027 280
+3 30244544059 280
+8 30244547317 280
+4 30244548007 264
+2 30244588899 0
+3 30244591935 296
+8 30244614826 296
+4 30244615544 264
+2 30248217554 0
+3 30248218229 264
+2 30248263807 0
+3 30248266771 296
+8 30248289645 296
+4 30248290371 264
+2 30251938637 0
+3 30251941680 296
+8 30251964418 296
+4 30251965118 264
+2 30255613396 0
+3 30255616322 296
+8 30255639015 296
+4 30255639728 264
+2 30259287990 0
+3 30259290912 296
+8 30259313460 296
+4 30259314165 264
+2 30262915438 0
+6 30262916139 280
+3 30262918183 280
+8 30262921431 280
+4 30262922140 264
+2 30262963024 0
+3 30262966083 296
+8 30262988968 296
+4 30262989692 264
+2 30266591684 0
+3 30266592359 264
+2 30266637937 0
+3 30266640891 296
+8 30266663649 296
+4 30266664370 264
+2 30270312641 0
+3 30270315563 296
+8 30270338249 296
+4 30270338959 264
+2 30273987587 0
+3 30273990480 296
+8 30274013163 296
+4 30274013870 264
+2 30277662137 0
+3 30277665058 296
+8 30277687627 296
+4 30277688333 264
+2 30281289602 0
+6 30281290303 280
+3 30281292331 280
+8 30281295589 280
+4 30281296279 264
+2 30281337171 0
+3 30281340230 296
+8 30281363065 296
+4 30281363783 264
+2 30284965793 0
+3 30284966468 264
+2 30285012046 0
+3 30285015011 296
+8 30285037801 296
+4 30285038512 264
+2 30288686788 0
+3 30288689732 296
+8 30288712463 296
+4 30288713163 264
+2 30292361437 0
+3 30292364337 296
+8 30292387100 296
+4 30292387808 264
+2 30296036438 0
+3 30296039360 296
+8 30296061952 296
+4 30296062657 264
+2 30299663562 0
+6 30299664263 280
+3 30299666312 280
+8 30299669611 280
+4 30299670301 264
+2 30299711153 0
+3 30299714207 296
+8 30299737154 296
+4 30299737878 264
+2 30303339857 0
+3 30303340532 264
+2 30303386110 0
+3 30303389064 296
+8 30303411847 296
+4 30303412568 264
+2 30307060836 0
+3 30307063758 296
+8 30307086510 296
+4 30307087220 264
+2 30310735848 0
+3 30310738741 296
+8 30310761474 296
+4 30310762181 264
+2 30314410448 0
+3 30314413369 296
+8 30314435950 296
+4 30314436661 264
+2 30318037929 0
+6 30318038634 280
+3 30318040662 280
+8 30318043910 280
+4 30318044600 264
+2 30318085504 0
+3 30318088523 296
+8 30318111403 296
+4 30318112121 264
+2 30321714131 0
+3 30321714806 264
+2 30321760384 0
+3 30321763349 296
+8 30321786209 296
+4 30321786925 264
+2 30325435198 0
+3 30325438146 296
+8 30325460884 296
+4 30325461589 264
+2 30329109858 0
+3 30329112768 296
+8 30329135515 296
+4 30329136223 264
+2 30332784853 0
+3 30332787775 296
+8 30332810383 296
+4 30332811088 264
+2 30336411993 0
+6 30336412694 280
+3 30336414738 280
+8 30336417997 280
+4 30336418687 264
+2 30336459579 0
+3 30336462633 296
+8 30336485586 296
+4 30336486310 264
+2 30340088289 0
+3 30340088964 264
+2 30340134542 0
+3 30340137496 296
+8 30340160281 296
+4 30340161002 264
+2 30343809273 0
+3 30343812195 296
+8 30343834931 296
+4 30343835641 264
+2 30347483906 0
+3 30347486799 296
+8 30347509531 296
+4 30347510238 264
+2 30351158868 0
+3 30351161789 296
+8 30351184404 296
+4 30351185115 264
+2 30354786014 0
+6 30354786715 280
+3 30354788748 280
+8 30354792309 280
+4 30354792999 264
+2 30354833589 0
+3 30354836648 296
+8 30354859538 296
+4 30354860256 264
+2 30358462265 0
+3 30358462940 264
+2 30358508518 0
+3 30358511483 296
+8 30358534318 296
+4 30358535029 264
+2 30362183310 0
+3 30362186254 296
+8 30362208985 296
+4 30362209685 264
+2 30365858322 0
+3 30365861222 296
+8 30365883985 296
+4 30365884693 264
+2 30369532960 0
+3 30369535882 296
+8 30369558474 296
+4 30369559179 264
+2 30373160452 0
+6 30373161153 280
+3 30373163202 280
+8 30373166451 280
+4 30373167141 264
+2 30373207675 0
+3 30373210729 296
+8 30373233676 296
+4 30373234400 264
+2 30376836748 0
+3 30376837423 264
+2 30376882632 0
+3 30376885586 296
+8 30376908369 296
+4 30376909090 264
+2 30380557358 0
+3 30380560280 296
+8 30380583032 296
+4 30380583742 264
+2 30384232370 0
+3 30384235263 296
+8 30384257996 296
+4 30384258703 264
+2 30387907333 0
+3 30387910254 296
+8 30387932835 296
+4 30387933546 264
+2 30391534445 0
+6 30391535150 280
+3 30391537173 280
+8 30391540421 280
+4 30391541111 264
+2 30391582015 0
+3 30391585034 296
+8 30391607914 296
+4 30391608632 264
+2 30395210642 0
+3 30395211323 264
+2 30395256900 0
+3 30395259865 296
+8 30395282725 296
+4 30395283436 264
+2 30398931714 0
+3 30398934658 296
+8 30398957395 296
+4 30398958100 264
+2 30402606369 0
+3 30402609273 296
+8 30402632026 296
+4 30402632734 264
+2 30406281364 0
+3 30406284286 296
+8 30406306878 296
+4 30406307583 264
+2 30409908488 0
+6 30409909189 280
+3 30409911238 280
+8 30409914497 280
+4 30409915187 264
+2 30409956079 0
+3 30409959133 296
+8 30409982094 296
+4 30409982822 264
+2 30413584789 0
+3 30413585464 264
+2 30413631042 0
+3 30413633996 296
+8 30413656781 296
+4 30413657502 264
+2 30417305773 0
+3 30417308695 296
+8 30417331431 296
+4 30417332141 264
+2 30420980769 0
+3 30420983662 296
+8 30421006394 296
+4 30421007101 264
+2 30424655368 0
+3 30424658289 296
+8 30424680904 296
+4 30424681615 264
+2 30428282882 0
+6 30428283583 280
+3 30428285616 280
+8 30428289111 280
+4 30428289801 264
+2 30428330457 0
+3 30428333499 296
+8 30428356379 296
+4 30428357097 264
+2 30431959106 0
+3 30431959781 264
+2 30432004991 0
+3 30432007956 296
+8 30432030790 296
+4 30432031501 264
+2 30435680140 0
+3 30435683084 296
+8 30435705815 296
+4 30435706515 264
+2 30439354789 0
+3 30439357689 296
+8 30439380452 296
+4 30439381160 264
+2 30443029797 0
+3 30443032722 296
+8 30443055315 296
+4 30443056020 264
+2 30446656925 0
+6 30446657630 280
+3 30446659681 280
+8 30446662942 280
+4 30446663632 264
+2 30446704522 0
+3 30446707575 296
+8 30446730517 296
+4 30446731241 264
+2 30450333220 0
+3 30450333895 264
+2 30450379473 0
+3 30450382427 296
+8 30450405210 296
+4 30450405931 264
+2 30454054199 0
+3 30454057121 296
+8 30454079879 296
+4 30454080589 264
+2 30457728854 0
+3 30457731747 296
+8 30457754485 296
+4 30457755192 264
+2 30461403822 0
+3 30461406749 296
+8 30461429330 296
+4 30461430041 264
+2 30465030940 0
+6 30465031641 280
+3 30465033668 280
+8 30465036927 280
+4 30465037617 264
+2 30465078509 0
+3 30465081524 296
+8 30465104425 296
+4 30465105143 264
+2 30468707153 0
+3 30468707828 264
+2 30468753406 0
+3 30468756371 296
+8 30468779231 296
+4 30468779942 264
+2 30472428220 0
+3 30472431168 296
+8 30472453906 296
+4 30472454611 264
+2 30476103243 0
+3 30476106147 296
+8 30476128900 296
+4 30476129608 264
+2 30479777875 0
+3 30479780797 296
+8 30479803389 296
+4 30479804094 264
+2 30483405367 0
+6 30483406068 280
+3 30483408124 280
+8 30483411371 280
+4 30483412061 264
+2 30483452596 0
+3 30483455649 296
+8 30483478602 296
+4 30483479326 264
+2 30487081674 0
+3 30487082349 264
+2 30487127558 0
+3 30487130512 296
+8 30487153295 296
+4 30487154016 264
+2 30490802284 0
+3 30490805206 296
+8 30490827942 296
+4 30490828652 264
+2 30494477280 0
+3 30494480173 296
+8 30494502905 296
+4 30494503612 264
+2 30498152242 0
+3 30498155163 296
+8 30498177778 296
+4 30498178489 264
+2 30501779388 0
+6 30501780089 280
+3 30501782116 280
+8 30501785358 280
+4 30501786048 264
+2 30501826957 0
+3 30501829999 296
+8 30501852879 296
+4 30501853597 264
+2 30505455606 0
+3 30505456281 264
+2 30505501859 0
+3 30505504825 296
+8 30505527659 296
+4 30505528385 264
+2 30509176651 0
+3 30509179611 296
+8 30509202344 296
+4 30509203044 264
+2 30512851322 0
+3 30512854222 296
+8 30512876985 296
+4 30512877693 264
+2 30516526323 0
+3 30516529245 296
+8 30516551837 296
+4 30516552542 264
+2 30520153447 0
+6 30520154149 280
+3 30520156203 280
+8 30520159451 280
+4 30520160141 264
+2 30520201044 0
+3 30520204097 296
+8 30520227014 296
+4 30520227738 264
+2 30523829731 0
+3 30523830406 264
+2 30523875984 0
+3 30523878938 296
+8 30523901743 296
+4 30523902464 264
+2 30527550732 0
+3 30527553658 296
+8 30527576412 296
+4 30527577122 264
+2 30531225387 0
+3 30531228280 296
+8 30531251029 296
+4 30531251736 264
+2 30534900366 0
+3 30534903287 296
+8 30534925885 296
+4 30534926596 264
+2 30538527863 0
+6 30538528564 280
+3 30538530587 280
+8 30538533845 280
+4 30538534535 264
+2 30538575059 0
+3 30538578101 296
+8 30538600975 296
+4 30538601693 264
+2 30542204071 0
+3 30542204746 264
+2 30542249955 0
+3 30542252920 296
+8 30542275782 296
+4 30542276498 264
+2 30545924769 0
+3 30545927713 296
+8 30545950444 296
+4 30545951144 264
+2 30549599781 0
+3 30549602681 296
+8 30549625428 296
+4 30549626136 264
+2 30553274403 0
+3 30553277329 296
+8 30553299922 296
+4 30553300627 264
+2 30556901900 0
+6 30556902601 280
+3 30556904657 280
+8 30556907904 280
+4 30556908594 264
+2 30556949497 0
+3 30556952551 296
+8 30556975515 296
+4 30556976239 264
+2 30560578218 0
+3 30560578893 264
+2 30560624102 0
+3 30560627056 296
+8 30560649839 296
+4 30560650560 264
+2 30564299191 0
+3 30564302113 296
+8 30564324849 296
+4 30564325559 264
+2 30567973824 0
+3 30567976717 296
+8 30567999449 296
+4 30568000156 264
+2 30571648786 0
+3 30571651707 296
+8 30571674305 296
+4 30571675016 264
+2 30575275915 0
+6 30575276616 280
+3 30575278650 280
+8 30575281897 280
+4 30575282587 264
+2 30575323490 0
+3 30575326505 296
+8 30575349395 296
+4 30575350113 264
+2 30578952123 0
+3 30578952798 264
+2 30578998376 0
+3 30579001341 296
+8 30579024179 296
+4 30579024890 264
+2 30582673168 0
+3 30582676116 296
+8 30582698854 296
+4 30582699559 264
+2 30586347828 0
+3 30586350732 296
+8 30586373502 296
+4 30586374215 264
+2 30590022840 0
+3 30590025766 296
+8 30590048364 296
+4 30590049073 264
+2 30593649974 0
+6 30593650679 280
+3 30593652725 280
+8 30593655986 280
+4 30593656676 264
+2 30593697566 0
+3 30593700614 296
+8 30593723550 296
+4 30593724274 264
+2 30597326253 0
+3 30597326928 264
+2 30597372506 0
+3 30597375460 296
+8 30597398243 296
+4 30597398964 264
+2 30601047232 0
+3 30601050154 296
+8 30601072906 296
+4 30601073616 264
+2 30604722244 0
+3 30604725137 296
+8 30604747870 296
+4 30604748577 264
+2 30608396844 0
+3 30608399765 296
+8 30608422363 296
+4 30608423074 264
+2 30612024341 0
+6 30612025042 280
+3 30612027065 280
+8 30612030328 280
+4 30612031018 264
+2 30612071905 0
+3 30612074969 296
+8 30612097854 296
+4 30612098572 264
+2 30615700582 0
+3 30615701257 264
+2 30615746835 0
+3 30615749799 296
+8 30615772672 296
+4 30615773398 264
+2 30619421291 0
+3 30619424334 296
+8 30619447072 296
+4 30619447777 264
+2 30623096413 0
+3 30623099339 296
+8 30623122027 296
+4 30623122735 264
+2 30626771002 0
+3 30626773928 296
+8 30626796471 296
+4 30626797176 264
+2 30630398450 0
+6 30630399151 280
+3 30630401206 280
+8 30630404459 280
+4 30630405162 264
+2 30630446047 0
+3 30630449105 296
+8 30630471995 296
+4 30630472719 264
+2 30634074712 0
+3 30634075387 264
+2 30634120965 0
+3 30634123919 296
+8 30634146677 296
+4 30634147398 264
+2 30637795669 0
+3 30637798591 296
+8 30637821277 296
+4 30637821987 264
+2 30641470622 0
+3 30641473514 296
+8 30641496197 296
+4 30641496904 264
+2 30645145171 0
+3 30645148092 296
+8 30645170657 296
+4 30645171368 264
+2 30648772635 0
+6 30648773340 280
+3 30648775370 280
+8 30648778617 280
+4 30648779307 264
+2 30648820210 0
+3 30648823269 296
+8 30648846099 296
+4 30648846817 264
+2 30652448826 0
+3 30652449501 264
+2 30652495079 0
+3 30652498044 296
+8 30652520840 296
+4 30652521556 264
+2 30656169827 0
+3 30656172771 296
+8 30656195502 296
+4 30656196202 264
+2 30659844476 0
+3 30659847381 296
+8 30659870145 296
+4 30659870853 264
+2 30663519483 0
+3 30663522409 296
+8 30663545018 296
+4 30663545723 264
+2 30667146628 0
+6 30667147329 280
+3 30667149373 280
+8 30667152632 280
+4 30667153322 264
+2 30667194214 0
+3 30667197268 296
+8 30667220292 296
+4 30667221016 264
+2 30670822995 0
+3 30670823670 264
+2 30670869248 0
+3 30670872202 296
+8 30670894985 296
+4 30670895706 264
+2 30674543974 0
+3 30674546896 296
+8 30674569648 296
+4 30674570362 264
+2 30678218623 0
+3 30678221516 296
+8 30678244249 296
+4 30678244956 264
+2 30681893586 0
+3 30681896507 296
+8 30681919088 296
+4 30681919799 264
+2 30685521067 0
+6 30685521768 280
+3 30685523801 280
+8 30685527048 280
+4 30685527738 264
+2 30685568273 0
+3 30685571294 296
+8 30685594173 296
+4 30685594891 264
+2 30689197269 0
+3 30689197944 264
+2 30689243153 0
+3 30689246118 296
+8 30689268978 296
+4 30689269689 264
+2 30692917967 0
+3 30692920911 296
+8 30692943648 296
+4 30692944353 264
+2 30696592985 0
+3 30696595889 296
+8 30696618642 296
+4 30696619350 264
+2 30700267617 0
+3 30700270539 296
+8 30700293131 296
+4 30700293836 264
+2 30703895109 0
+6 30703895810 280
+3 30703897854 280
+8 30703901102 280
+4 30703901792 264
+2 30703942695 0
+3 30703945751 296
+8 30703968710 296
+4 30703969434 264
+2 30707571416 0
+3 30707572091 264
+2 30707617300 0
+3 30707620254 296
+8 30707643037 296
+4 30707643758 264
+2 30711292389 0
+3 30711295311 296
+8 30711318047 296
+4 30711318757 264
+2 30714967022 0
+3 30714969915 296
+8 30714992647 296
+4 30714993354 264
+2 30718641984 0
+3 30718644905 296
+8 30718667520 296
+4 30718668231 264
+2 30722269130 0
+6 30722269835 280
+3 30722271863 280
+8 30722275091 280
+4 30722275775 264
+2 30722316705 0
+3 30722319764 296
+8 30722342643 296
+4 30722343361 264
+2 30725945370 0
+3 30725946045 264
+2 30725991623 0
+3 30725994594 296
+8 30726017428 296
+4 30726018139 264
+2 30729666415 0
+3 30729669359 296
+8 30729692108 296
+4 30729692808 264
+2 30733341086 0
+3 30733343986 296
+8 30733366749 296
+4 30733367457 264
+2 30737016087 0
+3 30737019009 296
+8 30737041601 296
+4 30737042306 264
+2 30740643211 0
+6 30740643912 280
+3 30740645961 280
+8 30740649215 280
+4 30740649905 264
+2 30740690802 0
+3 30740693856 296
+8 30740716818 296
+4 30740717542 264
+2 30744319517 0
+3 30744320192 264
+2 30744365770 0
+3 30744368724 296
+8 30744391507 296
+4 30744392228 264
+2 30748040496 0
+3 30748043418 296
+8 30748066170 296
+4 30748066880 264
+2 30751715508 0
+3 30751718401 296
+8 30751741134 296
+4 30751741841 264
+2 30755390108 0
+3 30755393029 296
+8 30755415610 296
+4 30755416321 264
+2 30759017589 0
+6 30759018290 280
+3 30759020328 280
+8 30759023576 280
+4 30759024266 264
+2 30759065169 0
+3 30759068190 296
+8 30759091074 296
+4 30759091792 264
+2 30762693802 0
+3 30762694477 264
+2 30762739686 0
+3 30762742651 296
+8 30762765511 296
+4 30762766222 264
+2 30766414500 0
+3 30766417444 296
+8 30766440181 296
+4 30766440886 264
+2 30770089518 0
+3 30770092422 296
+8 30770115175 296
+4 30770115883 264
+2 30773764513 0
+3 30773767435 296
+8 30773790032 296
+4 30773790737 264
+2 30777391642 0
+6 30777392347 280
+3 30777394403 280
+8 30777397652 280
+4 30777398342 264
+2 30777439245 0
+3 30777442298 296
+8 30777465258 296
+4 30777465982 264
+2 30781067965 0
+3 30781068640 264
+2 30781113850 0
+3 30781116804 296
+8 30781139589 296
+4 30781140310 264
+2 30784788944 0
+3 30784791866 296
+8 30784814602 296
+4 30784815312 264
+2 30788463577 0
+3 30788466470 296
+8 30788489208 296
+4 30788489915 264
+2 30792138545 0
+3 30792141466 296
+8 30792164086 296
+4 30792164797 264
+2 30795765696 0
+6 30795766397 280
+3 30795768425 280
+8 30795771677 280
+4 30795772367 264
+2 30795813265 0
+3 30795816307 296
+8 30795839198 296
+4 30795839916 264
+2 30799441925 0
+3 30799442600 264
+2 30799488178 0
+3 30799491143 296
+8 30799513978 296
+4 30799514689 264
+2 30803162970 0
+3 30803165914 296
+8 30803188645 296
+4 30803189345 264
+2 30806837982 0
+3 30806840881 296
+8 30806863645 296
+4 30806864353 264
+2 30810512620 0
+3 30810515542 296
+8 30810538134 296
+4 30810538841 264
+2 30814140112 0
+6 30814140813 280
+3 30814142874 280
+8 30814146122 280
+4 30814146812 264
+2 30814187346 0
+3 30814190399 296
+8 30814213350 296
+4 30814214074 264
+2 30817816424 0
+3 30817817099 264
+2 30817862309 0
+3 30817865263 296
+8 30817888048 296
+4 30817888769 264
+2 30821537040 0
+3 30821539962 296
+8 30821562714 296
+4 30821563424 264
+2 30825212052 0
+3 30825214945 296
+8 30825237678 296
+4 30825238385 264
+2 30828886652 0
+3 30828889573 296
+8 30828912154 296
+4 30828912865 264
+2 30832514133 0
+6 30832514845 280
+3 30832516873 280
+8 30832520120 280
+4 30832520810 264
+2 30832561713 0
+3 30832564728 296
+8 30832587624 296
+4 30832588342 264
+2 30836190351 0
+3 30836191026 264
+2 30836236604 0
+3 30836239570 296
+8 30836262429 296
+4 30836263155 264
+2 30839911418 0
+3 30839914373 296
+8 30839937110 296
+4 30839937815 264
+2 30843586084 0
+3 30843588988 296
+8 30843611741 296
+4 30843612449 264
+2 30847261079 0
+3 30847264001 296
+8 30847286593 296
+4 30847287298 264
+2 30850888203 0
+6 30850888905 280
+3 30850890959 280
+8 30850894207 280
+4 30850894897 264
+2 30850935800 0
+3 30850938853 296
+8 30850961784 296
+4 30850962508 264
+2 30854564504 0
+3 30854565179 264
+2 30854610757 0
+3 30854613711 296
+8 30854636529 296
+4 30854637250 264
+2 30858285521 0
+3 30858288447 296
+8 30858311184 296
+4 30858311894 264
+2 30861960159 0
+3 30861963052 296
+8 30861985801 296
+4 30861986508 264
+2 30865635138 0
+3 30865638059 296
+8 30865660657 296
+4 30865661368 264
+2 30869262267 0
+6 30869262968 280
+3 30869264996 280
+8 30869268254 280
+4 30869268944 264
+2 30869309837 0
+3 30869312852 296
+8 30869335747 296
+4 30869336465 264
+2 30872938475 0
+3 30872939150 264
+2 30872984728 0
+3 30872987693 296
+8 30873010531 296
+4 30873011246 264
+2 30876659520 0
+3 30876662468 296
+8 30876685206 296
+4 30876685911 264
+2 30880334543 0
+3 30880337447 296
+8 30880360217 296
+4 30880360925 264
+2 30884009192 0
+3 30884012118 296
+8 30884034711 296
+4 30884035416 264
+2 30887636689 0
+6 30887637390 280
+3 30887639451 280
+8 30887642827 280
+4 30887643517 264
+2 30887683923 0
+3 30887686976 296
+8 30887709916 296
+4 30887710640 264
+2 30891312990 0
+3 30891313665 264
+2 30891358875 0
+3 30891361829 296
+8 30891384614 296
+4 30891385335 264
+2 30895033606 0
+3 30895036528 296
+8 30895059280 296
+4 30895059990 264
+2 30898708618 0
+3 30898711511 296
+8 30898734244 296
+4 30898734951 264
+2 30902383218 0
+3 30902386139 296
+8 30902408737 296
+4 30902409448 264
+2 30906010715 0
+6 30906011416 280
+3 30906013450 280
+8 30906016691 280
+4 30906017387 264
+2 30906058290 0
+3 30906061403 296
+8 30906084289 296
+4 30906085007 264
+2 30909687016 0
+3 30909687691 264
+2 30909732901 0
+3 30909735866 296
+8 30909758722 296
+4 30909759433 264
+2 30913407709 0
+3 30913410653 296
+8 30913433384 296
+4 30913434084 264
+2 30917082721 0
+3 30917085621 296
+8 30917108368 296
+4 30917109076 264
+2 30920757706 0
+3 30920760632 296
+8 30920783230 296
+4 30920783935 264
+2 30924384840 0
+6 30924385545 280
+3 30924387601 280
+8 30924390850 280
+4 30924391540 264
+2 30924432443 0
+3 30924435496 296
+8 30924458478 296
+4 30924459202 264
+2 30928061185 0
+3 30928061860 264
+2 30928107070 0
+3 30928110024 296
+8 30928132809 296
+4 30928133530 264
+2 30931782164 0
+3 30931785086 296
+8 30931807822 296
+4 30931808532 264
+2 30935456797 0
+3 30935459690 296
+8 30935482422 296
+4 30935483129 264
+2 30939131759 0
+3 30939134680 296
+8 30939157278 296
+4 30939157989 264
+2 30942758888 0
+6 30942759589 280
+3 30942761617 280
+8 30942764875 280
+4 30942765565 264
+2 30942806458 0
+3 30942809477 296
+8 30942832368 296
+4 30942833086 264
+2 30946435096 0
+3 30946435771 264
+2 30946481349 0
+3 30946484314 296
+8 30946507152 296
+4 30946507863 264
+2 30950156141 0
+3 30950159089 296
+8 30950181827 296
+4 30950182532 264
+2 30953831164 0
+3 30953834068 296
+8 30953856838 296
+4 30953857546 264
+2 30957505813 0
+3 30957508739 296
+8 30957531332 296
+4 30957532037 264
+2 30961133310 0
+6 30961134011 280
+3 30961136072 280
+8 30961139573 280
+4 30961140263 264
+2 30961180544 0
+3 30961183598 296
+8 30961206537 296
+4 30961207261 264
+2 30964809611 0
+3 30964810286 264
+2 30964855496 0
+3 30964858450 296
+8 30964881235 296
+4 30964881956 264
+2 30968530227 0
+3 30968533149 296
+8 30968555901 296
+4 30968556611 264
+2 30972205239 0
+3 30972208132 296
+8 30972230865 296
+4 30972231572 264
+2 30975879839 0
+3 30975882760 296
+8 30975905358 296
+4 30975906069 264
+2 30979507336 0
+6 30979508041 280
+3 30979510071 280
+8 30979513323 280
+4 30979514013 264
+2 30979554911 0
+3 30979557975 296
+8 30979580860 296
+4 30979581578 264
+2 30983183588 0
+3 30983184263 264
+2 30983229841 0
+3 30983232805 296
+8 30983255684 296
+4 30983256410 264
+2 30986904671 0
+3 30986907714 296
+8 30986930463 296
+4 30986931168 264
+2 30990579441 0
+3 30990582367 296
+8 30990605055 296
+4 30990605763 264
+2 30994254030 0
+3 30994256956 296
+8 30994279516 296
+4 30994280221 264
+2 30997881494 0
+6 30997882195 280
+3 30997884244 280
+8 30997887509 280
+4 30997888212 264
+2 30997929086 0
+3 30997932144 296
+8 30997955041 296
+4 30997955765 264
+2 31001557762 0
+3 31001558437 264
+2 31001603647 0
+3 31001606601 296
+8 31001629356 296
+4 31001630077 264
+2 31005278708 0
+3 31005281630 296
+8 31005304320 296
+4 31005305030 264
+2 31008953297 0
+3 31008956190 296
+8 31008978873 296
+4 31008979580 264
+2 31012628210 0
+3 31012631131 296
+8 31012653696 296
+4 31012654407 264
+2 31016255674 0
+6 31016256375 280
+3 31016258413 280
+8 31016261661 280
+4 31016262351 264
+2 31016303255 0
+3 31016306314 296
+8 31016329154 296
+4 31016329872 264
+2 31019931882 0
+3 31019932557 264
+2 31019978135 0
+3 31019981100 296
+8 31020003890 296
+4 31020004601 264
+2 31023652877 0
+3 31023655821 296
+8 31023678552 296
+4 31023679252 264
+2 31027327526 0
+3 31027330426 296
+8 31027353189 296
+4 31027353897 264
+2 31031002527 0
+3 31031005449 296
+8 31031028041 296
+4 31031028746 264
+2 31034629651 0
+6 31034630352 280
+3 31034632401 280
+8 31034635762 280
+4 31034636452 264
+2 31034677242 0
+3 31034680289 296
+8 31034703239 296
+4 31034703963 264
+2 31038305955 0
+3 31038306632 264
+2 31038352210 0
+3 31038355164 296
+8 31038377947 296
+4 31038378668 264
+2 31042026936 0
+3 31042029858 296
+8 31042052610 296
+4 31042053320 264
+2 31045701948 0
+3 31045704841 296
+8 31045727574 296
+4 31045728281 264
+2 31049376548 0
+3 31049379469 296
+8 31049402050 296
+4 31049402761 264
+2 31053004029 0
+6 31053004734 280
+3 31053006762 280
+8 31053010010 280
+4 31053010700 264
+2 31053051604 0
+3 31053054623 296
+8 31053077503 296
+4 31053078221 264
+2 31056680231 0
+3 31056680906 264
+2 31056726115 0
+3 31056729086 296
+8 31056751946 296
+4 31056752657 264
+2 31060400935 0
+3 31060403883 296
+8 31060426632 296
+4 31060427337 264
+2 31064075969 0
+3 31064078873 296
+8 31064101626 296
+4 31064102334 264
+2 31067750601 0
+3 31067753523 296
+8 31067776115 296
+4 31067776820 264
+2 31071378093 0
+6 31071378794 280
+3 31071380838 280
+8 31071384097 280
+4 31071384787 264
+2 31071425679 0
+3 31071428733 296
+8 31071451686 296
+4 31071452414 264
+2 31075054389 0
+3 31075055064 264
+2 31075100273 0
+3 31075103227 296
+8 31075126010 296
+4 31075126731 264
+2 31078775362 0
+3 31078778284 296
+8 31078801020 296
+4 31078801730 264
+2 31082449995 0
+3 31082452888 296
+8 31082475620 296
+4 31082476327 264
+2 31086124957 0
+3 31086127878 296
+8 31086150493 296
+4 31086151204 264
+2 31089752103 0
+6 31089752804 280
+3 31089754837 280
+8 31089758079 280
+4 31089758769 264
+2 31089799678 0
+3 31089802737 296
+8 31089825627 296
+4 31089826378 264
+2 31093428354 0
+3 31093429029 264
+2 31093474607 0
+3 31093477572 296
+8 31093500407 296
+4 31093501118 264
+2 31097149399 0
+3 31097152343 296
+8 31097175074 296
+4 31097175774 264
+2 31100824048 0
+3 31100826948 296
+8 31100849711 296
+4 31100850419 264
+2 31104499049 0
+3 31104501976 296
+8 31104524568 296
+4 31104525273 264
+2 31108126178 0
+6 31108126883 280
+3 31108128939 280
+8 31108132188 280
+4 31108132878 264
+2 31108173781 0
+3 31108176839 296
+8 31108199782 296
+4 31108200506 264
+2 31111802485 0
+3 31111803160 264
+2 31111848738 0
+3 31111851692 296
+8 31111874477 296
+4 31111875198 264
+2 31115523469 0
+3 31115526391 296
+8 31115549143 296
+4 31115549853 264
+2 31119198481 0
+3 31119201374 296
+8 31119224112 296
+4 31119224819 264
+2 31122873086 0
+3 31122876007 296
+8 31122898589 296
+4 31122899301 264
+2 31126500567 0
+6 31126501268 280
+3 31126503291 280
+8 31126506549 280
+4 31126507239 264
+2 31126548131 0
+3 31126551152 296
+8 31126574058 296
+4 31126574776 264
+2 31130176786 0
+3 31130177461 264
+2 31130223039 0
+3 31130226004 296
+8 31130248864 296
+4 31130249575 264
+2 31133897853 0
+3 31133900801 296
+8 31133923539 296
+4 31133924244 264
+2 31137572513 0
+3 31137575417 296
+8 31137598170 296
+4 31137598878 264
+2 31141247508 0
+3 31141250430 296
+8 31141273022 296
+4 31141273727 264
+2 31144874632 0
+6 31144875333 280
+3 31144877388 280
+8 31144880636 280
+4 31144881326 264
+2 31144922229 0
+3 31144925287 296
+8 31144948241 296
+4 31144948965 264
+2 31148550944 0
+3 31148551619 264
+2 31148597197 0
+3 31148600151 296
+8 31148622936 296
+4 31148623657 264
+2 31152271928 0
+3 31152274850 296
+8 31152297586 296
+4 31152298296 264
+2 31155946561 0
+3 31155949454 296
+8 31155972186 296
+4 31155972893 264
+2 31159621523 0
+3 31159624444 296
+8 31159647059 296
+4 31159647770 264
+2 31163248669 0
+6 31163249370 280
+3 31163251397 280
+8 31163254639 280
+4 31163255329 264
+2 31163296238 0
+3 31163299297 296
+8 31163322187 296
+4 31163322905 264
+2 31166924915 0
+3 31166925590 264
+2 31166971168 0
+3 31166974133 296
+8 31166996967 296
+4 31166997678 264
+2 31170645954 0
+3 31170648898 296
+8 31170671629 296
+4 31170672329 264
+2 31174320966 0
+3 31174323866 296
+8 31174346629 296
+4 31174347337 264
+2 31177995604 0
+3 31177998526 296
+8 31178021118 296
+4 31178021823 264
+2 31181623096 0
+6 31181623797 280
+3 31181625846 280
+8 31181629108 280
+4 31181629798 264
+2 31181670319 0
+3 31181673373 296
+8 31181696320 296
+4 31181697044 264
+2 31185299392 0
+3 31185300067 264
+2 31185345276 0
+3 31185348230 296
+8 31185371021 296
+4 31185371742 264
+2 31189020013 0
+3 31189022939 296
+8 31189045693 296
+4 31189046403 264
+2 31192695031 0
+3 31192697924 296
+8 31192720673 296
+4 31192721380 264
+2 31196369647 0
+3 31196372568 296
+8 31196395149 296
+4 31196395860 264
+2 31199997128 0
+6 31199997829 280
+3 31199999856 280
+8 31200003115 280
+4 31200003805 264
+2 31200044697 0
+3 31200047718 296
+8 31200070597 296
+4 31200071315 264
+2 31203673324 0
+3 31203673999 264
+2 31203719577 0
+3 31203722542 296
+8 31203745402 296
+4 31203746113 264
+2 31207394391 0
+3 31207397335 296
+8 31207420072 296
+4 31207420777 264
+2 31211069046 0
+3 31211071950 296
+8 31211094703 296
+4 31211095411 264
+2 31214744041 0
+3 31214746963 296
+8 31214769555 296
+4 31214770260 264
+2 31218371165 0
+6 31218371866 280
+3 31218373921 280
+8 31218377169 280
+4 31218377859 264
+2 31218418762 0
+3 31218421820 296
+8 31218444774 296
+4 31218445498 264
+2 31222047477 0
+3 31222048152 264
+2 31222093730 0
+3 31222096684 296
+8 31222119469 296
+4 31222120190 264
+2 31225768461 0
+3 31225771383 296
+8 31225794119 296
+4 31225794829 264
+2 31229443457 0
+3 31229446350 296
+8 31229469082 296
+4 31229469789 264
+2 31233118056 0
+3 31233120977 296
+8 31233143592 296
+4 31233144303 264
+2 31236745570 0
+6 31236746271 280
+3 31236748299 280
+8 31236751541 280
+4 31236752231 264
+2 31236792771 0
+3 31236795830 296
+8 31236818720 296
+4 31236819438 264
+2 31240421816 0
+3 31240422491 264
+2 31240467701 0
+3 31240470666 296
+8 31240493500 296
+4 31240494211 264
+2 31244142487 0
+3 31244145431 296
+8 31244168162 296
+4 31244168862 264
+2 31247817499 0
+3 31247820399 296
+8 31247843162 296
+4 31247843870 264
+2 31251492137 0
+3 31251495059 296
+8 31251517656 296
+4 31251518361 264
+2 31255119635 0
+6 31255120336 280
+3 31255122385 280
+8 31255125633 280
+4 31255126323 264
+2 31255167226 0
+3 31255170290 296
+8 31255193238 296
+4 31255193962 264
+2 31258795941 0
+3 31258796616 264
+2 31258841826 0
+3 31258844780 296
+8 31258867579 296
+4 31258868300 264
+2 31262516931 0
+3 31262519853 296
+8 31262542605 296
+4 31262543315 264
+2 31266191580 0
+3 31266194473 296
+8 31266217206 296
+4 31266217913 264
+2 31269866543 0
+3 31269869464 296
+8 31269892045 296
+4 31269892756 264
+2 31273493655 0
+6 31273494356 280
+3 31273496379 280
+8 31273499637 280
+4 31273500327 264
+2 31273541219 0
+3 31273544240 296
+8 31273567124 296
+4 31273567842 264
+2 31277169852 0
+3 31277170527 264
+2 31277216105 0
+3 31277219070 296
+8 31277241930 296
+4 31277242641 264
+2 31280890919 0
+3 31280893867 296
+8 31280916605 296
+4 31280917310 264
+2 31284565579 0
+3 31284568483 296
+8 31284591236 296
+4 31284591944 264
+2 31288240574 0
+3 31288243496 296
+8 31288266088 296
+4 31288266793 264
+2 31291867698 0
+6 31291868399 280
+3 31291870454 280
+8 31291873702 280
+4 31291874392 264
+2 31291915295 0
+3 31291918353 296
+8 31291941307 296
+4 31291942031 264
+2 31295544010 0
+3 31295544685 264
+2 31295590263 0
+3 31295593217 296
+8 31295616002 296
+4 31295616723 264
+2 31299264994 0
+3 31299267916 296
+8 31299290652 296
+4 31299291362 264
+2 31302939990 0
+3 31302942883 296
+8 31302965615 296
+4 31302966322 264
+2 31306614589 0
+3 31306617510 296
+8 31306640125 296
+4 31306640836 264
+2 31310242103 0
+6 31310242804 280
+3 31310244832 280
+8 31310248074 280
+4 31310248764 264
+2 31310289673 0
+3 31310292732 296
+8 31310315622 296
+4 31310316340 264
+2 31313918349 0
+3 31313919024 264
+2 31313964234 0
+3 31313967199 296
+8 31313990033 296
+4 31313990749 264
+2 31317639383 0
+3 31317642327 296
+8 31317665065 296
+4 31317665765 264
+2 31321314043 0
+3 31321316943 296
+8 31321339712 296
+4 31321340420 264
+2 31324988687 0
+3 31324991613 296
+8 31325014206 296
+4 31325014911 264
+2 31328616184 0
+6 31328616885 280
+3 31328618929 280
+8 31328622201 280
+4 31328622891 264
+2 31328663770 0
+3 31328666817 296
+8 31328689760 296
+4 31328690484 264
+2 31332292463 0
+3 31332293138 264
+2 31332338716 0
+3 31332341670 296
+8 31332364453 296
+4 31332365174 264
+2 31336013442 0
+3 31336016364 296
+8 31336039116 296
+4 31336039826 264
+2 31339688091 0
+3 31339690984 296
+8 31339713717 296
+4 31339714424 264
+2 31343363054 0
+3 31343365975 296
+8 31343388556 296
+4 31343389267 264
+2 31346990166 0
+6 31346990867 280
+3 31346992900 280
+8 31346996467 280
+4 31346997157 264
+2 31347037741 0
+3 31347040777 296
+8 31347063668 296
+4 31347064386 264
+2 31350666396 0
+3 31350667071 264
+2 31350712649 0
+3 31350715613 296
+8 31350738487 296
+4 31350739213 264
+2 31354387479 0
+3 31354390522 296
+8 31354413260 296
+4 31354413960 264
+2 31358062238 0
+3 31358065164 296
+8 31358087852 296
+4 31358088560 264
+2 31361737190 0
+3 31361740116 296
+8 31361762659 296
+4 31361763364 264
+2 31365364638 0
+6 31365365339 280
+3 31365367388 280
+8 31365370636 280
+4 31365371339 264
+2 31365411861 0
+3 31365414919 296
+8 31365437801 296
+4 31365438525 264
+2 31369040889 0
+3 31369041564 264
+2 31369086774 0
+3 31369089728 296
+8 31369112483 296
+4 31369113204 264
+2 31372761835 0
+3 31372764757 296
+8 31372787464 296
+4 31372788174 264
+2 31376436418 0
+3 31376439311 296
+8 31376461994 296
+4 31376462701 264
+2 31380111331 0
+3 31380114252 296
+8 31380136817 296
+4 31380137528 264
+2 31383738796 0
+6 31383739497 280
+3 31383741525 280
+8 31383744772 280
+4 31383745462 264
+2 31383785997 0
+3 31383789056 296
+8 31383811896 296
+4 31383812614 264
+2 31387414992 0
+3 31387415667 264
+2 31387460877 0
+3 31387463848 296
+8 31387486638 296
+4 31387487349 264
+2 31391135993 0
+3 31391138937 296
+8 31391161686 296
+4 31391162386 264
+2 31394810664 0
+3 31394813564 296
+8 31394836327 296
+4 31394837035 264
+2 31398485302 0
+3 31398488224 296
+8 31398510816 296
+4 31398511521 264
+2 31402112794 0
+6 31402113495 280
+3 31402115545 280
+8 31402118804 280
+4 31402119494 264
+2 31402160386 0
+3 31402163433 296
+8 31402186381 296
+4 31402187105 264
+2 31405789079 0
+3 31405789754 264
+2 31405834963 0
+3 31405837917 296
+8 31405860700 296
+4 31405861421 264
+2 31409510052 0
+3 31409512974 296
+8 31409535726 296
+4 31409536436 264
+2 31413184701 0
+3 31413187594 296
+8 31413210327 296
+4 31413211034 264
+2 31416859664 0
+3 31416862585 296
+8 31416885166 296
+4 31416885877 264
+2 31420486776 0
+6 31420487477 280
+3 31420489510 280
+8 31420492758 280
+4 31420493448 264
+2 31420534351 0
+3 31420537372 296
+8 31420560251 296
+4 31420560969 264
+2 31424162978 0
+3 31424163653 264
+2 31424209231 0
+3 31424212196 296
+8 31424235056 296
+4 31424235767 264
+2 31427884045 0
+3 31427886989 296
+8 31427909726 296
+4 31427910431 264
+2 31431559063 0
+3 31431561967 296
+8 31431584720 296
+4 31431585428 264
+2 31435233695 0
+3 31435236617 296
+8 31435259209 296
+4 31435259914 264
+2 31438861187 0
+6 31438861888 280
+3 31438863937 280
+6 31438876665 288
+4 31438883629 280
+8 31438886324 280
+4 31438888163 288
+8 31438895103 288
+4 31438896190 264
+2 31438908823 0
+3 31438913952 296
+8 31438939508 296
+4 31438940352 264
+2 31442537519 0
+3 31442538328 264
+2 31442583538 0
+3 31442586597 296
+8 31442609490 296
+4 31442610234 264
+2 31446258451 0
+3 31446261378 296
+8 31446284230 296
+4 31446284936 264
+2 31449933204 0
+3 31449936092 296
+8 31449958841 296
+4 31449959545 264
+2 31453607820 0
+3 31453610746 296
+8 31453633356 296
+4 31453634067 264
+2 31457235334 0
+6 31457236351 280
+3 31457238663 280
+8 31457242167 280
+4 31457242875 264
+2 31457282768 0
+3 31457285864 296
+8 31457308788 296
+4 31457309497 264
+2 31460911892 0
+3 31460912564 264
+2 31460957773 0
+3 31460960743 296
+8 31460983613 296
+4 31460984343 264
+2 31464632592 0
+3 31464635535 296
+8 31464658289 296
+4 31464658995 264
+2 31468307263 0
+3 31468310152 296
+8 31468332900 296
+4 31468333608 264
+2 31471982242 0
+3 31471985163 296
+8 31472007760 296
+4 31472008466 264
+2 31475609371 0
+6 31475610068 280
+3 31475612100 280
+8 31475615478 280
+4 31475616186 264
+2 31475656943 0
+3 31475659999 296
+8 31475682876 296
+4 31475683585 264
+2 31479285615 0
+3 31479286292 264
+2 31479331870 0
+3 31479334825 296
+8 31479357650 296
+4 31479358380 264
+2 31483006629 0
+3 31483009562 296
+8 31483032315 296
+4 31483033021 264
+2 31486681289 0
+3 31486684177 296
+8 31486706897 296
+4 31486707601 264
+2 31490356235 0
+3 31490359157 296
+8 31490381761 296
+4 31490382467 264
+2 31493983370 0
+6 31493984071 280
+3 31493986104 280
+8 31493989356 280
+4 31493990064 264
+2 31494030947 0
+3 31494033982 296
+8 31494056876 296
+4 31494057585 264
+2 31497659614 0
+3 31497660291 264
+2 31497705869 0
+3 31497708817 296
+8 31497731676 296
+4 31497732406 264
+2 31501380655 0
+3 31501383620 296
+8 31501406363 296
+4 31501407069 264
+2 31505055700 0
+3 31505058589 296
+8 31505081337 296
+4 31505082041 264
+2 31508730316 0
+3 31508733237 296
+8 31508755834 296
+4 31508756540 264
+2 31512357814 0
+6 31512358515 280
+3 31512360553 280
+8 31512363803 280
+4 31512364511 264
+2 31512405396 0
+3 31512408452 296
+8 31512431363 296
+4 31512432072 264
+2 31516034102 0
+3 31516034779 264
+2 31516079988 0
+3 31516082926 296
+8 31516105749 296
+4 31516106479 264
+2 31517231091 1
+6 31517232913 280
+3 31517234015 1
+6 31517241494 288
+4 31517243463 280
+8 31517244982 280
+4 31517247210 288
+4 31517253379 248
+4 31517280291 288
+4 31517285547 288
+8 31517287792 288
+4 31517289581 272
+1 31517292059
Index: demos/branches/xen/newtrace/utils/README
===================================================================
--- demos/branches/xen/newtrace/utils/README (nonexistent)
+++ demos/branches/xen/newtrace/utils/README (revision 1684)
@@ -0,0 +1,19 @@
+Utility usage:
+
+1) udpdump: ./udpdump dumptest
+
+ - It receives all the UDP tracer packets,
+ saving them inside the "dumptest" file
+
+2) pwcet_gen: ./pwcet_gen dumptest > dumptest.pwc
+
+ - It converts the binary file to a text
+ version with only significative tracer events
+
+3) extract: ./extract dumptest.pwc
+
+ - It shows all the recorded tasks main
+ statistics, usign also "gnuplot" to display
+ execution time distributions, inter-arrival times,
+ and task demand functions.
+
Index: demos/branches/xen/newtrace/utils/example_results
===================================================================
--- demos/branches/xen/newtrace/utils/example_results (nonexistent)
+++ demos/branches/xen/newtrace/utils/example_results (revision 1684)
@@ -0,0 +1,382 @@
+This is an example file from "extract" utility,
+some comments are added to make it clearer.
+
+Jumpball demo (ecp) statistics
+
+Clk/msec = 2202900 (CPU Athlon 64 3200+)
+
+EVT:Log starts at [147140694139]
+EVT:Log ends at [196093930505]
+
+Total dTSC [ 48953236366] ns [ 22222113928]
+Events [ 144915]
+Execs [ 131127]
+EndCycles [ 13759]
+
+Preemption Removing....
+
+Total nsec of jobs [ 3604781671]
+Total nsec of exec [ 22222113928]
+Total nsec considering last clk/msec [ 22222178204]
+
+Compute Task Statistics....
+
+Interrupts
+ Total Execution [ 29399348 ns]
+ Mean CPU Bandwidth [ 0.132298% ]
+ after first int [ 0.132298% ]
+ Interrupts Number [ 45842 ]
+ Min Interrupt [ 189 ns]
+ Mean Interrupt [ 641 ns]
+ Max Interrupt [ 13056 ns]
+
+ Min Arr. Delta [ 1881 ns]
+ Mean Arr. Delta [ 484763 ns]
+ Max Arr. Delta [ 10000131 ns]
+
+- System Interrupts: All the hardware interrupts
+
+Periodical Task CTX [ 256] PID [ 9]
+ Total Execution [ 276253550 ns]
+ Mean CPU Bandwidth [ 1.243147% ]
+ after first exec [ 1.630252% ]
+ Execs Number [ 9335 ]
+ Min Exec [ 240 ns]
+ Mean Exec [ 29593 ns]
+ Max Exec [ 91661 ns]
+
+ Total Job Exec [ 276253550 ns]
+ Jobs Number [ 1695 ]
+ Min Job [ 162239 ns]
+ Mean Job [ 162981 ns]
+ Max Job [ 164505 ns]
+
+ Min Arr. Delta [ 4411818 ns]
+ Mean Arr. Delta [ 9999965 ns]
+ Max Arr. Delta [ 15588054 ns]
+
+- Task 9 "palla0": Soft Task. The CTX 256 was at the beginning assigned
+to the "main" task. After the task death, the context was free until the
+new "palla0" task was created. "main" task context number is converted to
+1256 to make independent statistics.
+
+Background Task CTX [ 264] PID [ 1]
+ Total Execution [ 18583350900 ns]
+ Mean CPU Bandwidth [ 83.625487% ]
+ after first exec [ 83.669980% ]
+ Execs Number [ 16908 ]
+ Min Exec [ 515 ns]
+ Mean Exec [ 1099086 ns]
+ Max Exec [ 9836143 ns]
+
+- Task 1 "dummy": The dummy task, it represents the system
+idle time, near 83% as mean value
+
+Background Task CTX [ 272] PID [ 2]
+ Total Execution [ 926 ns]
+ Mean CPU Bandwidth [ 0.000004% ]
+ after first exec [ 100.000000% ]
+ Execs Number [ 1 ]
+ Min Exec [ 926 ns]
+ Mean Exec [ 926 ns]
+ Max Exec [ 926 ns]
+
+- Task 2 "shutdown task": Shutting down the system. It closes
+the tracer too (this is the reason of only 3 us exec time).
+
+Periodical Task CTX [ 280] PID [ 3]
+ Total Execution [ 1445626 ns]
+ Mean CPU Bandwidth [ 0.006505% ]
+ after first exec [ 0.006512% ]
+ Execs Number [ 461 ]
+ Min Exec [ 2583 ns]
+ Mean Exec [ 3135 ns]
+ Max Exec [ 4206 ns]
+
+ Total Job Exec [ 1445626 ns]
+ Jobs Number [ 461 ]
+ Min Job [ 2583 ns]
+ Mean Job [ 3135 ns]
+ Max Job [ 4206 ns]
+
+ Min Arr. Delta [ 2021387 ns]
+ Mean Arr. Delta [ 48260445 ns]
+ Max Arr. Delta [ 50010461 ns]
+
+- Task 3 "interrupt server": The interrupt context
+
+Periodical Task CTX [ 288] PID [ 4]
+ Total Execution [ 59506 ns]
+ Mean CPU Bandwidth [ 0.000268% ]
+ after first exec [ 0.000351% ]
+ Execs Number [ 43 ]
+ Min Exec [ 566 ns]
+ Mean Exec [ 1383 ns]
+ Max Exec [ 5850 ns]
+
+ Total Job Exec [ 59506 ns]
+ Jobs Number [ 17 ]
+ Min Job [ 1217 ns]
+ Mean Job [ 3500 ns]
+ Max Job [ 9358 ns]
+
+ Min Arr. Delta [ 65650086 ns]
+ Mean Arr. Delta [ 1059090305 ns]
+ Max Arr. Delta [ 7168628909 ns]
+
+- Task 4 "key task": The task for keyboard handler
+
+Periodical Task CTX [ 296] PID [ 5]
+ Total Execution [ 1201275196 ns]
+ Mean CPU Bandwidth [ 5.405765% ]
+ after first exec [ 5.406917% ]
+ Execs Number [ 825 ]
+ Min Exec [ 11133 ns]
+ Mean Exec [ 1456091 ns]
+ Max Exec [ 4500554 ns]
+
+ Total Job Exec [ 1201275196 ns]
+ Jobs Number [ 223 ]
+ Min Job [ 5296076 ns]
+ Mean Job [ 5386884 ns]
+ Max Job [ 5515636 ns]
+
+ Min Arr. Delta [ 99757430 ns]
+ Mean Arr. Delta [ 100006689 ns]
+ Max Arr. Delta [ 101061945 ns]
+
+- Task 5 "jetctrl" : Soft task
+
+Periodical Task CTX [ 304] PID [ 6]
+ Total Execution [ 4254996 ns]
+ Mean CPU Bandwidth [ 0.019148% ]
+ after first exec [ 0.019156% ]
+ Execs Number [ 446 ]
+ Min Exec [ 1111 ns]
+ Mean Exec [ 9540 ns]
+ Max Exec [ 18912 ns]
+
+ Total Job Exec [ 4254996 ns]
+ Jobs Number [ 223 ]
+ Min Job [ 18971 ns]
+ Mean Job [ 19080 ns]
+ Max Job [ 21052 ns]
+
+ Min Arr. Delta [ 95501610 ns]
+ Mean Arr. Delta [ 99979413 ns]
+ Max Arr. Delta [ 102456106 ns]
+
+- Task 6 "jetdummy" : Soft Task
+
+Periodical Task CTX [ 312] PID [ 7]
+ Total Execution [ 341582118 ns]
+ Mean CPU Bandwidth [ 1.537127% ]
+ after first exec [ 1.537767% ]
+ Execs Number [ 936 ]
+ Min Exec [ 520 ns]
+ Mean Exec [ 364938 ns]
+ Max Exec [ 1300811 ns]
+
+ Total Job Exec [ 341582118 ns]
+ Jobs Number [ 223 ]
+ Min Job [ 1530776 ns]
+ Mean Job [ 1531758 ns]
+ Max Job [ 1533632 ns]
+
+ Min Arr. Delta [ 95494710 ns]
+ Mean Arr. Delta [ 99979490 ns]
+ Max Arr. Delta [ 102948741 ns]
+
+- Task 7 "jetslice": Soft Task
+
+Periodical Task CTX [ 320] PID [ 8]
+ Total Execution [ 361875645 ns]
+ Mean CPU Bandwidth [ 1.628448% ]
+ after first exec [ 1.628782% ]
+ Execs Number [ 6750 ]
+ Min Exec [ 2540 ns]
+ Mean Exec [ 53611 ns]
+ Max Exec [ 92451 ns]
+
+ Total Job Exec [ 361875645 ns]
+ Jobs Number [ 2222 ]
+ Min Job [ 162349 ns]
+ Mean Job [ 162860 ns]
+ Max Job [ 166904 ns]
+
+ Min Arr. Delta [ 9989352 ns]
+ Mean Arr. Delta [ 9999971 ns]
+ Max Arr. Delta [ 10010719 ns]
+
+- Task 8 "pallaEDF": Hard Task
+
+Background Task CTX [ 1256] PID [ 0]
+ Total Execution [ 4573409 ns]
+ Mean CPU Bandwidth [ 0.020580% ]
+ after first exec [ 0.020580% ]
+ Execs Number [ 6 ]
+ Min Exec [ 7166 ns]
+ Mean Exec [ 762234 ns]
+ Max Exec [ 2000656 ns]
+
+- Task 0 "main": Main task was killed, so the original context
+number 256 became 1256
+
+Periodical Task CTX [ 328] PID [ 10]
+ Total Execution [ 270267226 ns]
+ Mean CPU Bandwidth [ 1.216208% ]
+ after first exec [ 1.629184% ]
+ Execs Number [ 8846 ]
+ Min Exec [ 241 ns]
+ Mean Exec [ 30552 ns]
+ Max Exec [ 91592 ns]
+
+ Total Job Exec [ 270267226 ns]
+ Jobs Number [ 1659 ]
+ Min Job [ 162232 ns]
+ Mean Job [ 162909 ns]
+ Max Job [ 164270 ns]
+
+ Min Arr. Delta [ 9988124 ns]
+ Mean Arr. Delta [ 9999982 ns]
+ Max Arr. Delta [ 10032718 ns]
+
+- Task 10 "palla1": Soft Task
+
+Periodical Task CTX [ 336] PID [ 11]
+ Total Execution [ 264105857 ns]
+ Mean CPU Bandwidth [ 1.188482% ]
+ after first exec [ 1.630505% ]
+ Execs Number [ 8949 ]
+ Min Exec [ 239 ns]
+ Mean Exec [ 29512 ns]
+ Max Exec [ 91573 ns]
+
+ Total Job Exec [ 264105857 ns]
+ Jobs Number [ 1620 ]
+ Min Job [ 162271 ns]
+ Mean Job [ 163028 ns]
+ Max Job [ 164299 ns]
+
+ Min Arr. Delta [ 9989381 ns]
+ Mean Arr. Delta [ 9999964 ns]
+ Max Arr. Delta [ 10010620 ns]
+
+- Task 11 "palla2": Soft Task
+
+Periodical Task CTX [ 344] PID [ 12]
+ Total Execution [ 257971822 ns]
+ Mean CPU Bandwidth [ 1.160879% ]
+ after first exec [ 1.634880% ]
+ Execs Number [ 10631 ]
+ Min Exec [ 238 ns]
+ Mean Exec [ 24265 ns]
+ Max Exec [ 63831 ns]
+
+ Total Job Exec [ 257971822 ns]
+ Jobs Number [ 1578 ]
+ Min Job [ 162684 ns]
+ Mean Job [ 163480 ns]
+ Max Job [ 164782 ns]
+
+ Min Arr. Delta [ 9989399 ns]
+ Mean Arr. Delta [ 9999963 ns]
+ Max Arr. Delta [ 10010599 ns]
+
+- Task 12 "palla3": Soft Task
+
+Periodical Task CTX [ 352] PID [ 13]
+ Total Execution [ 250406676 ns]
+ Mean CPU Bandwidth [ 1.126836% ]
+ after first exec [ 1.630586% ]
+ Execs Number [ 8461 ]
+ Min Exec [ 240 ns]
+ Mean Exec [ 29595 ns]
+ Max Exec [ 91753 ns]
+
+ Total Job Exec [ 250406676 ns]
+ Jobs Number [ 1536 ]
+ Min Job [ 162225 ns]
+ Mean Job [ 163025 ns]
+ Max Job [ 164557 ns]
+
+ Min Arr. Delta [ 3184436 ns]
+ Mean Arr. Delta [ 9999970 ns]
+ Max Arr. Delta [ 16815492 ns]
+
+- Task 13 "palla4": Soft Task
+
+Periodical Task CTX [ 360] PID [ 14]
+ Total Execution [ 132048658 ns]
+ Mean CPU Bandwidth [ 0.594222% ]
+ after first exec [ 1.631180% ]
+ Execs Number [ 4462 ]
+ Min Exec [ 244 ns]
+ Mean Exec [ 29594 ns]
+ Max Exec [ 91702 ns]
+
+ Total Job Exec [ 132048658 ns]
+ Jobs Number [ 810 ]
+ Min Job [ 162240 ns]
+ Mean Job [ 163023 ns]
+ Max Job [ 164337 ns]
+
+ Min Arr. Delta [ 4934088 ns]
+ Mean Arr. Delta [ 9999968 ns]
+ Max Arr. Delta [ 15066505 ns]
+
+- Task 14 "palla5": Soft Task
+
+Periodical Task CTX [ 368] PID [ 15]
+ Total Execution [ 125033245 ns]
+ Mean CPU Bandwidth [ 0.562652% ]
+ after first exec [ 1.632032% ]
+ Execs Number [ 4239 ]
+ Min Exec [ 242 ns]
+ Mean Exec [ 29495 ns]
+ Max Exec [ 91828 ns]
+
+ Total Job Exec [ 125033245 ns]
+ Jobs Number [ 767 ]
+ Min Job [ 162266 ns]
+ Mean Job [ 163015 ns]
+ Max Job [ 164284 ns]
+
+ Min Arr. Delta [ 9187114 ns]
+ Mean Arr. Delta [ 9999969 ns]
+ Max Arr. Delta [ 10802835 ns]
+
+- Task 15 "palla6": Soft Task
+
+Periodical Task CTX [ 376] PID [ 16]
+ Total Execution [ 118201550 ns]
+ Mean CPU Bandwidth [ 0.531910% ]
+ after first exec [ 1.631159% ]
+ Execs Number [ 3985 ]
+ Min Exec [ 244 ns]
+ Mean Exec [ 29661 ns]
+ Max Exec [ 91622 ns]
+
+ Total Job Exec [ 118201550 ns]
+ Jobs Number [ 725 ]
+ Min Job [ 162270 ns]
+ Mean Job [ 163036 ns]
+ Max Job [ 164089 ns]
+
+ Min Arr. Delta [ 7797571 ns]
+ Mean Arr. Delta [ 9999955 ns]
+ Max Arr. Delta [ 12192001 ns]
+
+- Task 16 "palla7": Soft Task
+
+Background Task CTX [ 248] PID [NODEF]
+ Total Execution [ 7674 ns]
+ Mean CPU Bandwidth [ 0.000035% ]
+ after first exec [ 72.711768% ]
+ Execs Number [ 1 ]
+ Min Exec [ 7674 ns]
+ Mean Exec [ 7674 ns]
+ Max Exec [ 7674 ns]
+
+- Global context: the kernel context
+
Index: demos/branches/xen/newtrace/utils/makefile
===================================================================
--- demos/branches/xen/newtrace/utils/makefile (nonexistent)
+++ demos/branches/xen/newtrace/utils/makefile (revision 1684)
@@ -0,0 +1,36 @@
+#
+# util_linux -> compiles the tracer utilities under Linux
+#
+
+ifndef BASE
+BASE=../../..
+endif
+
+.PHONY: util_dos util_linux clean
+
+all:
+ @echo Targets: util_dos util_linux clean
+ @echo Note: udpdump and list are available only under linux
+
+util_linux: udpdump list pwcet_gen extract
+
+udpdump: udpdump.c
+ gcc -Wimplicit-function-declaration -Wall -ggdb\
+ -I$(BASE)/tracer/include -I$(BASE)/oslib udpdump.c -o udpdump
+
+list: list.c
+ gcc -Wimplicit-function-declaration -Wall -ggdb\
+ -I$(BASE)/tracer/include -I$(BASE)/oslib list.c -o list
+
+pwcet_gen: pwcet_gen.c
+ gcc -Wimplicit-function-declaration -Wall -ggdb\
+ -I$(BASE)/tracer/include -I$(BASE)/oslib pwcet_gen.c -o pwcet_gen
+
+extract: extract.c
+ gcc -Wimplicit-function-declaration -Wall -ggdb -lm\
+ -I$(BASE)/tracer/include -I$(BASE)/oslib extract.c -o extract
+
+clean:
+ rm -rf *.o udpdump list pwcet_gen extract
+
+
Index: demos/branches/xen/newtrace/nosave/initfile.c
===================================================================
--- demos/branches/xen/newtrace/nosave/initfile.c (nonexistent)
+++ demos/branches/xen/newtrace/nosave/initfile.c (revision 1684)
@@ -0,0 +1,80 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Giacomo Guidi <giacomo@gandalf.sssup.it>
+ * Tullio Facchinetti <tullio.facchinetti@unipv.it>
+ * (see the web pages for full authors list)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+#include "kernel/kern.h"
+#include "edf/edf/edf.h"
+#include "cbs/cbs/cbs.h"
+#include "rr/rr/rr.h"
+#include "dummy/dummy/dummy.h"
+
+#include "sem/sem/sem.h"
+#include "hartport/hartport/hartport.h"
+#include "cabs/cabs/cabs.h"
+
+/*+ sysyem tick in us +*/
+#define TICK 0
+
+/*+ RR tick in us +*/
+#define RRTICK 10000
+
+TIME __kernel_register_levels__(void *arg)
+{
+ struct multiboot_info *mb = (struct multiboot_info *)arg;
+ LEVEL EDF_level;
+
+ EDF_level = EDF_register_level(EDF_ENABLE_ALL);
+ CBS_register_level(CBS_ENABLE_ALL, EDF_level);
+ RR_register_level(RRTICK, RR_MAIN_YES, mb);
+ dummy_register_level();
+
+ SEM_register_module();
+
+ CABS_register_module();
+
+ return TICK;
+}
+
+TASK __init__(void *arg)
+{
+ struct multiboot_info *mb = (struct multiboot_info *)arg;
+
+ HARTPORT_init();
+
+ __call_main__(mb);
+
+ return (void *)0;
+}
+
Index: demos/branches/xen/newtrace/nosave/nosave.c
===================================================================
--- demos/branches/xen/newtrace/nosave/nosave.c (nonexistent)
+++ demos/branches/xen/newtrace/nosave/nosave.c (revision 1684)
@@ -0,0 +1,75 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Giacomo Guidi <giacomo@gandalf.sssup.it>
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+#include <kernel/kern.h>
+#include <tracer.h>
+
+int main(int argc, char **argv)
+{
+
+ long long i;
+
+ int a,b,c;
+ struct timespec start,end,diff;
+
+ a = FTrace_chunk_create(1000000, 1000000, FTRACE_CHUNK_FLAG_FREE | FTRACE_CHUNK_FLAG_CYC);
+ b = FTrace_chunk_create(1000000, 1000000, FTRACE_CHUNK_FLAG_FREE | FTRACE_CHUNK_FLAG_JTN);
+ c = FTrace_chunk_create(1000000, 1000000, FTRACE_CHUNK_FLAG_FREE | FTRACE_CHUNK_FLAG_CYC);
+
+ FTrace_chunk_link(a,b);
+ FTrace_chunk_link(b,c);
+
+ FTrace_actual_chunk_select(a);
+
+ kern_gettime(&start);
+ FTrace_enable();
+
+ for (i=0;i<1000000000;i++);
+
+ TRACER_LOGEVENT(FTrace_EVT_next_chunk,0,0);
+
+ for (i=0;i<1000000000;i++);
+
+ FTrace_disable();
+ kern_gettime(&end);
+
+ SUBTIMESPEC(&end,&start,&diff);
+
+ cprintf("Logged Time %d s %d us\n",(int)diff.tv_sec,(int)diff.tv_nsec/1000);
+
+ FTrace_chunk_dump(a);
+
+ return 0;
+
+}
Index: demos/branches/xen/newtrace/nosave/makefile
===================================================================
--- demos/branches/xen/newtrace/nosave/makefile (nonexistent)
+++ demos/branches/xen/newtrace/nosave/makefile (revision 1684)
@@ -0,0 +1,16 @@
+#
+#
+#
+
+ifndef BASE
+BASE=../../..
+endif
+include $(BASE)/config/config.mk
+
+PROGS = nosave
+
+include $(BASE)/config/example.mk
+
+nosave:
+ make -f $(SUBMAKE) BASE=$(BASE) APP=nosave INIT= OTHEROBJS="initfile.o" OTHERINCL= SHARKOPT="__LINUXC26__ __PCI__ __INPUT__"
+
Index: demos/branches/xen/newtrace/initfile/initfile.c
===================================================================
--- demos/branches/xen/newtrace/initfile/initfile.c (nonexistent)
+++ demos/branches/xen/newtrace/initfile/initfile.c (revision 1684)
@@ -0,0 +1,230 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators: Giorgio Buttazzo <giorgio@sssup.it>
+ * Gerardo Lamastra <gerardo@sssup.it>
+ *
+ * Authors :
+ * Giacomo Guidi <giacomo@gandalf.sssup.it>
+ * Tullio Facchinetti <tullio.facchinetti@unipv.it>
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://hartik.sssup.it
+ */
+
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+
+#include "kernel/kern.h"
+
+#include "intdrive/intdrive/intdrive.h"
+#include "edf/edf/edf.h"
+#include "hardcbs/hardcbs/hardcbs.h"
+#include "rr/rr/rr.h"
+#include "dummy/dummy/dummy.h"
+
+#include "sem/sem/sem.h"
+#include "hartport/hartport/hartport.h"
+#include "cabs/cabs/cabs.h"
+
+#include <drivers/shark_linuxc26.h>
+#include <drivers/shark_pci26.h>
+
+#include <drivers/shark_input26.h>
+#include <drivers/shark_keyb26.h>
+#include <drivers/shark_mouse26.h>
+
+#include <drivers/shark_fb26.h>
+
+#include <tracer.h>
+
+#define FRAME_BUFFER_DEVICE 0
+
+/*+ sysyem tick in us +*/
+#define TICK 0
+
+/*+ RR tick in us +*/
+#define RRTICK 2000
+
+/*+ Interrupt Server +*/
+#define INTDRIVE_Q 1000
+#define INTDRIVE_U 0.1*MAX_BANDWIDTH
+#define INTDRIVE_FLAG 0
+
+void call_shutdown_task(void *arg);
+int device_drivers_init();
+int device_drivers_close();
+void set_shutdown_task();
+TASK shutdown_task_body(void *arg);
+
+PID shutdown_task_PID = -1;
+int a = -1;
+
+extern unsigned int clk_per_msec;
+
+TIME __kernel_register_levels__(void *arg)
+{
+ struct multiboot_info *mb = (struct multiboot_info *)arg;
+ LEVEL EDF_level;
+
+ INTDRIVE_register_level(INTDRIVE_Q, INTDRIVE_Q, INTDRIVE_U, INTDRIVE_FLAG);
+ EDF_level = EDF_register_level(EDF_ENABLE_ALL);
+ HCBS_register_level(HCBS_ENABLE_ALL, EDF_level);
+ RR_register_level(RRTICK, RR_MAIN_YES, mb);
+ dummy_register_level();
+
+ SEM_register_module();
+ CABS_register_module();
+
+ return TICK;
+}
+
+TASK __init__(void *arg)
+{
+ struct multiboot_info *mb = (struct multiboot_info *)arg;
+
+ HARTPORT_init();
+
+ /* Create the shutdown task. It will be activated at RUNLEVEL SHUTDOWN */
+ set_shutdown_task();
+
+ /* Init the drivers */
+ device_drivers_init();
+
+ /* Set the shutdown task activation */
+ sys_atrunlevel(call_shutdown_task, NULL, RUNLEVEL_SHUTDOWN);
+
+ /* Tracer init: 10MB single tracer chunk */
+ a = FTrace_chunk_create(10000000, 1000000, FTRACE_CHUNK_FLAG_FREE | FTRACE_CHUNK_FLAG_CYC);
+
+ FTrace_actual_chunk_select(a);
+
+ FTrace_enable();
+
+ TRACER_LOGEVENT(FTrace_EVT_trace_start,proc_table[exec_shadow].context,clk_per_msec);
+
+ for (i=0;i<10;i++)
+ if (proc_table[i].context != 0) TRACER_LOGEVENT(FTrace_EVT_id,
+ (unsigned short int)proc_table[i].context,i);
+
+ __call_main__(mb);
+
+ return (void *)0;
+}
+
+void set_shutdown_task()
+{
+/* WARNING: the shutdown task is a background thread. It cannot execute if the system is overloaded */
+ NRT_TASK_MODEL nrt;
+
+ nrt_task_default_model(nrt);
+ nrt_task_def_system(nrt);
+
+ shutdown_task_PID = task_create("Shutdown Task",shutdown_task_body,&nrt,NULL);
+ if (shutdown_task_PID == NIL) {
+ sys_shutdown_message("Error: Cannot create shutdown task\n");
+ exit(1);
+ }
+}
+
+int device_drivers_init()
+{
+ int res;
+ KEYB_PARMS kparms = BASE_KEYB;
+ MOUSE_PARMS mparms = BASE_MOUSE;
+
+ LINUXC26_register_module(TRUE);
+
+ PCI26_init();
+
+ INPUT26_init();
+
+ /* keyb_def_map(kparms, KEYMAP_IT);*/
+ keyb_def_ctrlC(kparms, NULL);
+ KEYB26_init(&kparms);
+
+ mouse_def_threshold(mparms, 5);
+ mouse_def_xmin(mparms, 0);
+ mouse_def_ymin(mparms, 0);
+ mouse_def_xmax(mparms, 639);
+ mouse_def_ymax(mparms, 479);
+ MOUSE26_init(&mparms);
+
+ FB26_init();
+ res = FB26_open(FRAME_BUFFER_DEVICE);
+ if (res) {
+ cprintf("Error: Cannot open graphical mode\n");
+ MOUSE26_close();
+ KEYB26_close();
+ INPUT26_close();
+ exit(1);
+ }
+
+ FB26_use_grx(FRAME_BUFFER_DEVICE);
+ FB26_setmode(FRAME_BUFFER_DEVICE,"640x480-16");
+
+ return 0;
+}
+
+int device_drivers_close() {
+
+ TRACER_LOGEVENT(FTrace_EVT_trace_stop,0,0);
+
+ FTrace_disable();
+
+ FTrace_OSD_init_udp(1, "192.168.1.10", "192.168.1.1");
+
+ FTrace_send_chunk(a, 0, FTRACE_CHUNK_FLAG_FREE | FTRACE_CHUNK_FLAG_CYC);
+
+ mouse_grxcursor(DISABLE, 0);
+
+ FB26_close(FRAME_BUFFER_DEVICE);
+
+ MOUSE26_close();
+ KEYB26_close();
+ INPUT26_close();
+
+ return 0;
+}
+
+#define SHUTDOWN_TIMEOUT_SEC 120
+
+void call_shutdown_task(void *arg)
+{
+ struct timespec t;
+
+ sys_gettime(&t);
+ t.tv_sec += SHUTDOWN_TIMEOUT_SEC;
+
+ /* Emergency timeout to exit from RUNLEVEL_SHUTDOWN */
+ kern_event_post(&t,(void *)((void *)sys_abort_shutdown),(void *)0);
+
+ task_activate(shutdown_task_PID);
+}
+
+TASK shutdown_task_body(void *arg)
+{
+ device_drivers_close();
+
+ sys_shutdown_message("-- S.Ha.R.K. Closed --\n");
+
+ return NULL;
+}
Index: demos/branches/xen/newtrace/readme
===================================================================
--- demos/branches/xen/newtrace/readme (nonexistent)
+++ demos/branches/xen/newtrace/readme (revision 1684)
@@ -0,0 +1,14 @@
+This directory contains a set of sub directories containing all the tracer
+examples and utilities.
+
+Here a short description of the contents
+
+utils - some small utilities:
+
+ udpdump - save on a file the logged events sent through network
+
+udp - a small application that sends its trace data through the network
+ the new version also contains the code to configure the output to disk
+
+nosave - a simple tracer implementation without saving logged events
+
Index: demos/branches/xen/newtrace/makefile
===================================================================
--- demos/branches/xen/newtrace/makefile (nonexistent)
+++ demos/branches/xen/newtrace/makefile (revision 1684)
@@ -0,0 +1,15 @@
+.PHONY: all clean
+
+all:
+ make -C udp
+ make -C nosave
+ make -C instr
+ make -C utils util_linux
+
+clean:
+ make -C udp clean
+ make -C nosave clean
+ make -C instr clean
+ make -C utils clean
+
+
Index: demos/branches/xen/readme.txt
===================================================================
--- demos/branches/xen/readme.txt (nonexistent)
+++ demos/branches/xen/readme.txt (revision 1684)
@@ -0,0 +1,7 @@
+Hi, these are the official S.Ha.R.K. demos...
+
+Other demos can be downloaded from the online CVS repository for unsupported and advanced demos...
+
+Enjoy
+
+/toOl
Index: demos/branches/xen/makefile
===================================================================
--- demos/branches/xen/makefile (nonexistent)
+++ demos/branches/xen/makefile (revision 1684)
@@ -0,0 +1,28 @@
+include ../shark.cfg
+
+ifeq ($(findstring NEW,$(TRACER)) , NEW)
+TRC = newtrace
+endif
+
+dirs := $(filter-out CVS cvs first dynademo newtrace makefile readme.txt README.TXT myscript.sh, $(wildcard *))
+dirs += $(TRC)
+p_all := $(addprefix prefixall_, $(dirs))
+p_install := $(addprefix prefixinstall_, $(dirs))
+p_clean := $(addprefix prefixclean_, $(dirs))
+pcleanall := $(addprefix prefixcleanall_, $(dirs))
+pdepend := $(addprefix prefixdepend_, $(dirs))
+
+
+.PHONY: all clean
+
+
+
+all: $(p_all)
+
+clean: $(p_clean)
+
+prefixall_%:
+ make -C $*
+
+prefixclean_%:
+ make -C $* clean
Index: demos/branches/xen/bttvdemo/initfile.c
===================================================================
--- demos/branches/xen/bttvdemo/initfile.c (nonexistent)
+++ demos/branches/xen/bttvdemo/initfile.c (revision 1684)
@@ -0,0 +1,197 @@
+/*
+ * Project: S.Ha.R.K
+ *
+ * Coordinators: Giorgio Buttazzo <giorgio@sssup.it>
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * Authors:
+ * ...
+ * Tullio Facchinetti <tullio.facchinetti@unipv.it>
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://hartik.sssup.it
+ */
+
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+#include "kernel/kern.h"
+#include "edf/edf/edf.h"
+#include "cbs/cbs/cbs.h"
+#include "rr/rr/rr.h"
+#include "dummy/dummy/dummy.h"
+#include "intdrive/intdrive/intdrive.h"
+
+#include "sem/sem/sem.h"
+#include "hartport/hartport/hartport.h"
+
+#include <drivers/shark_linuxc26.h>
+#include <drivers/shark_pci26.h>
+#include <drivers/shark_input26.h>
+#include <drivers/shark_keyb26.h>
+#include <drivers/shark_fb26.h>
+#include <drivers/shark_i2c26.h>
+#include <drivers/shark_bttv26.h>
+#include <drivers/shark_videodev26.h>
+
+#define FRAME_BUFFER_DEVICE 0
+#define FRAME_GRABBER_DEVICE 0
+
+/*+ sysyem tick in us +*/
+#define TICK 0
+
+/*+ RR tick in us +*/
+#define RRTICK 10000
+
+/*+ Interrup Server */
+#define INTDRIVE_Q 1000
+#define INTDRIVE_U 0.1*MAX_BANDWIDTH
+#define INTDRIVE_FLAG 0
+
+void call_shutdown_task(void *arg);
+int device_drivers_init();
+int device_drivers_close();
+void set_shutdown_task();
+TASK shutdown_task_body(void *arg);
+
+PID shutdown_task_PID = -1;
+
+TIME __kernel_register_levels__(void *arg)
+{
+ struct multiboot_info *mb = (struct multiboot_info *)arg;
+ LEVEL EDF_level;
+
+ INTDRIVE_register_level(INTDRIVE_Q, INTDRIVE_Q, INTDRIVE_U, INTDRIVE_FLAG);
+ EDF_level = EDF_register_level(EDF_ENABLE_ALL);
+ CBS_register_level(CBS_ENABLE_ALL, EDF_level);
+ RR_register_level(RRTICK, RR_MAIN_YES, mb);
+ dummy_register_level();
+
+ SEM_register_module();
+
+ return TICK;
+}
+
+TASK __init__(void *arg)
+{
+ struct multiboot_info *mb = (struct multiboot_info *)arg;
+
+ HARTPORT_init();
+
+ set_shutdown_task();
+
+ device_drivers_init();
+
+ sys_atrunlevel(call_shutdown_task, NULL, RUNLEVEL_SHUTDOWN);
+
+ __call_main__(mb);
+
+ return (void *)0;
+}
+
+void set_shutdown_task() {
+
+ NRT_TASK_MODEL nrt;
+
+ nrt_task_default_model(nrt);
+ nrt_task_def_system(nrt);
+
+ shutdown_task_PID = task_create("Shutdown Task",shutdown_task_body,&nrt,NULL);
+ if (shutdown_task_PID == NIL) {
+ sys_shutdown_message("Error: Cannot create shutdown task\n");
+ exit(1);
+ }
+
+}
+
+int device_drivers_init() {
+
+ int res;
+ KEYB_PARMS kparms = BASE_KEYB;
+
+ LINUXC26_register_module(TRUE);
+
+ PCI26_init();
+
+ I2C26_init();
+
+ INPUT26_init();
+
+ keyb_def_ctrlC(kparms, NULL);
+
+ KEYB26_init(&kparms);
+
+ BTTV26_init();
+
+ FB26_init();
+
+ res = FB26_open(FRAME_BUFFER_DEVICE);
+ if (res) {
+ cprintf("Error: Cannot open graphical mode\n");
+ KEYB26_close();
+ INPUT26_close();
+ exit(1);
+ }
+
+ FB26_use_grx(FRAME_BUFFER_DEVICE);
+
+ FB26_setmode(FRAME_BUFFER_DEVICE,"640x480-16");
+
+ return 0;
+
+}
+
+int device_drivers_close() {
+
+ BTTV26_close();
+
+ FB26_close(FRAME_BUFFER_DEVICE);
+
+ KEYB26_close();
+
+ INPUT26_close();
+
+ return 0;
+
+}
+
+#define SHUTDOWN_TIMEOUT_SEC 3
+
+void call_shutdown_task(void *arg)
+{
+ struct timespec t;
+
+ sys_gettime(&t);
+ t.tv_sec += SHUTDOWN_TIMEOUT_SEC;
+
+ /* Emergency timeout to exit from RUNLEVEL_SHUTDOWN */
+ kern_event_post(&t,(void *)((void *)sys_abort_shutdown),(void *)0);
+
+ task_activate(shutdown_task_PID);
+}
+
+TASK shutdown_task_body(void *arg) {
+
+ device_drivers_close();
+
+ sys_shutdown_message("-- S.Ha.R.K. Closed --\n");
+
+ return NULL;
+
+}
Index: demos/branches/xen/bttvdemo/bttv.c
===================================================================
--- demos/branches/xen/bttvdemo/bttv.c (nonexistent)
+++ demos/branches/xen/bttvdemo/bttv.c (revision 1684)
@@ -0,0 +1,340 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Giacomo Guidi <giacomo@gandalf.sssup.it>
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/*
+ * Copyright (C) 2003 Giacomo Guidi
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#include "kernel/kern.h"
+#include "stdlib.h"
+#include "unistd.h"
+
+#include "drivers/shark_keyb26.h"
+#include "drivers/shark_videodev26.h"
+#include "drivers/shark_fb26.h"
+
+#include "tracer.h"
+
+#define WIDTH 640
+#define HEIGHT 480
+#define BYTES_PP 2
+
+//#define COLOR
+//#define MAX_SPEED
+
+#define FRAME_GRABBER_NUMBER 0
+
+#define FG_PERIOD 40000 //ONLY IF MAX_SPEED IS DISABLED
+#define FG_WCET 30000
+#define FG_W 320
+#define FG_H 240
+
+unsigned int frame_number = 0;
+
+void program_end(void *arg)
+{
+
+ exit(0);
+
+}
+
+void elaborate_image(void *imageptr);
+
+void start_frame_grabber(PID elaborate_task_PID, int channel, struct video_buffer *fbuf) {
+
+ struct video_window win;
+ struct video_channel chan;
+ struct video_tuner tuner;
+ struct video_picture vpic;
+ int res;
+
+ /* Init videodev driver */
+ VIDEODEV26_open(FRAME_GRABBER_NUMBER);
+
+ /* Select the input channel */
+ res = VIDEODEV26_ioctl(FRAME_GRABBER_NUMBER,VIDIOCGCHAN,(unsigned long)&chan);
+ //cprintf("res = %d\n",res);
+
+ chan.channel = channel;
+ chan.type = VIDEO_VC_TUNER;
+ chan.norm = VIDEO_TYPE_CAMERA;
+
+ res = VIDEODEV26_ioctl(FRAME_GRABBER_NUMBER,VIDIOCSCHAN,(unsigned long)&chan);
+ //cprintf("res = %d\n",res);
+
+ /* Enable the tuner */
+
+ tuner.tuner = 0;
+ tuner.mode = VIDEO_MODE_PAL;
+
+ res = VIDEODEV26_ioctl(FRAME_GRABBER_NUMBER,VIDIOCSTUNER,(unsigned long)&tuner);
+ //cprintf("res = %d\n",res);
+
+ /* Select palette and depth */
+ res = VIDEODEV26_ioctl(FRAME_GRABBER_NUMBER,VIDIOCGPICT,(unsigned long)&vpic);
+ //cprintf("res = %d\n",res);
+
+ #ifdef COLOR
+ vpic.palette = VIDEO_PALETTE_RGB24;
+ vpic.depth = 24;
+ #else
+ vpic.palette = VIDEO_PALETTE_GREY;
+ vpic.depth = 8;
+ #endif
+
+ vpic.brightness = 35000;
+ vpic.hue = 32000;
+ vpic.contrast = 32000;
+ vpic.colour = 32000;
+
+ res = VIDEODEV26_ioctl(FRAME_GRABBER_NUMBER,VIDIOCSPICT,(unsigned long)&vpic);
+ //cprintf("res = %d\n",res);
+
+ res = VIDEODEV26_ioctl(FRAME_GRABBER_NUMBER,VIDIOCGWIN,(unsigned long)&win);
+ //cprintf("res = %d\n",res);
+
+ win.x = 0;
+ win.y = 0;
+ win.width = FG_W;
+ win.height = FG_H;
+
+ res = VIDEODEV26_ioctl(FRAME_GRABBER_NUMBER,VIDIOCSWIN,(unsigned long)&win);
+ //cprintf("res = %d\n",res);
+
+ /* Set the buffer */
+ res = VIDEODEV26_ioctl(FRAME_GRABBER_NUMBER,VIDIOCSFBUF,(unsigned long)(fbuf));
+ //cprintf("res = %d\n",res);
+
+ /* IMPORTANT: Set the aperiodic elaboration task
+ * This is a SHARK change on VIDIOCSYNC. When the
+ * new frame is ready, the task elaborate_task_PID
+ * is activated. Elabortate_task must be aperiodic !!
+ * To link the task to BTTV use this function: */
+
+ VIDEODEV26_ioctl(FRAME_GRABBER_NUMBER,VIDIOCSYNC,(unsigned long)(elaborate_task_PID));
+
+}
+
+/* Check if the frame grabber is ready */
+volatile int ready_to_grab = 1;
+
+void grab_command(void *arg) {
+
+ SYS_FLAGS f;
+
+ f = kern_fsave();
+
+ int on = 1;
+ VIDEODEV26_ioctl(FRAME_GRABBER_NUMBER,VIDIOCCAPTURE,(unsigned long)&on);
+
+ kern_frestore(f);
+
+}
+
+/* Elaboration task, it is called when the frame
+ grabber buffer is ready */
+TASK elaborate_task(void *arg) {
+
+ struct video_buffer *fbuf = (struct video_buffer *)(arg);
+ char txt[100];
+
+ while(1) {
+
+ elaborate_image(fbuf->base);
+ //cprintf("E");
+
+ //Text version
+ //printf_xy(1,20,WHITE,"%08x",
+ // *(unsigned int *)(fbuf->base+50*320*3+50*3));
+
+ frame_number++;
+ sprintf(txt,"Elapsed Time = %u us Frame = %u",(int)(sys_gettime(NULL)),frame_number);
+ grx_text(txt, 10, 250, rgb16(255,255,255), 0);
+
+ ready_to_grab = 1;
+
+ #ifdef MAX_SPEED
+ grab_command(NULL);
+ #endif
+
+ task_testcancel();
+ task_endcycle();
+
+ }
+
+ return NULL;
+
+}
+
+/* Send the grab command */
+TASK grab_task(void *arg) {
+
+ while(1) {
+
+ if (ready_to_grab) {
+
+ /* Grab */
+ grab_command(NULL);
+
+ //cprintf("G");
+
+ ready_to_grab = 0;
+
+ } else {
+
+ //cprintf("S");
+ /* Frame skipped */
+
+ }
+
+ task_testcancel();
+ task_endcycle();
+
+ }
+
+ return NULL;
+
+}
+
+extern void *video_memory;
+
+void elaborate_image(void *imageptr)
+{
+
+ WORD x,y;
+ BYTE *col;
+
+ #ifdef COLOR
+
+ for(y = 0; y < FG_H; y++)
+ for(x = 0; x < FG_W; x++) {
+
+ col = (BYTE *)(imageptr + y * FG_W * 3 + x * 3);
+ *(WORD *)(video_memory + y*(WIDTH*2) + (x*2)) = (WORD)rgb16(*(BYTE *)(col+2),*(BYTE *)(col+1),*(BYTE *)(col+0));
+
+ }
+
+ #else
+
+ for(y = 0; y < FG_H; y++)
+ for(x = 0; x < FG_W; x++) {
+
+ col = (BYTE *)(imageptr + y * FG_W + x);
+ *(WORD *)(video_memory + y*(WIDTH*2) + (x*2)) = (WORD)rgb16(*(BYTE *)(col),*(BYTE *)(col),*(BYTE *)(col));
+
+ }
+
+ #endif
+
+}
+
+int main(int argc, char **argv)
+{
+
+ HARD_TASK_MODEL gt;
+ SOFT_TASK_MODEL et;
+ PID grab_task_pid,elaborate_task_pid;
+
+ struct video_buffer fbuf;
+ int channel = 0;
+
+ if (argc < 2) {
+ sys_shutdown_message("ERROR: Enter the input channel [ex> %s 0]\n",argv[0]);
+ exit(1);
+ }
+
+ channel = atoi(argv[1]);
+
+ soft_task_default_model(et);
+ soft_task_def_period(et,FG_PERIOD);
+ soft_task_def_arg(et,(void *)(&fbuf));
+ soft_task_def_met(et,FG_WCET);
+ soft_task_def_aperiodic(et);
+ soft_task_def_ctrl_jet(et);
+
+ hard_task_default_model(gt);
+ hard_task_def_mit(gt,FG_PERIOD);
+ hard_task_def_wcet(gt,5000);
+ hard_task_def_ctrl_jet(gt);
+
+ grab_task_pid = task_create("GrabTask",grab_task,&gt,NULL);
+ if (grab_task_pid == NIL) {
+ sys_shutdown_message("ERROR: Cannot create grab task\n");
+ exit(1);
+ }
+
+ elaborate_task_pid = task_create("ElaborateTask",elaborate_task,&et,NULL);
+ if (grab_task_pid == NIL) {
+ sys_shutdown_message("ERROR: Cannot create elaborate task\n");
+ exit(1);
+ }
+
+ #ifdef COLOR
+
+ fbuf.base = malloc(FG_W*FG_H*3);
+ fbuf.height = FG_H;
+ fbuf.width = FG_W;
+ fbuf.bytesperline = FG_W*3;
+ fbuf.depth = 24;
+
+ #else
+
+ fbuf.base = malloc(FG_W*FG_H);
+ fbuf.height = FG_H;
+ fbuf.width = FG_W;
+ fbuf.bytesperline = FG_W;
+ fbuf.depth = 8;
+
+ #endif
+
+ start_frame_grabber(elaborate_task_pid,channel,&fbuf);
+
+ #ifndef MAX_SPEED
+ /* Activate periodic grabbing */
+ task_activate(grab_task_pid);
+ #else
+ /* Grab */
+ grab_command(NULL);
+ #endif
+
+ while(keyb_getch(BLOCK) != ESC);
+
+ #ifndef MAX_SPEED
+ task_kill(grab_task_pid);
+ #endif
+
+ sleep(1);
+
+ exit(1);
+
+ return 0;
+
+}
Index: demos/branches/xen/bttvdemo/readme.txt
===================================================================
--- demos/branches/xen/bttvdemo/readme.txt (nonexistent)
+++ demos/branches/xen/bttvdemo/readme.txt (revision 1684)
@@ -0,0 +1,31 @@
+--------------------------------------
+BTTV Frame Grabber Demo
+
+by
+
+Giacomo Guidi <giacomo@gandalf.sssup.it>
+
+Last update 12/05/2004
+--------------------------------------
+Ex:
+
+x bttv [channel number]
+
+if the channel is not specified 0 is taken.
+If you don't see a grabbed image, you
+can try to set a channel number from 0 to 4.
+
+This is a simple demo for the BTTV driver.
+It starts the frame grabber at 25 fps 320x200.
+
+--------------------------------------
+
+The demo is composed by:
+
+MAKEFILE The makefile used to compile the application
+README.TXT This file
+INITFILE.C The init file
+BTTV.C The BTTV Demo
+
+--------------------------------------
+
Index: demos/branches/xen/bttvdemo/makefile
===================================================================
--- demos/branches/xen/bttvdemo/makefile (nonexistent)
+++ demos/branches/xen/bttvdemo/makefile (revision 1684)
@@ -0,0 +1,16 @@
+#
+#
+#
+
+ifndef BASE
+BASE=../..
+endif
+include $(BASE)/config/config.mk
+
+PROGS = bttv
+
+include $(BASE)/config/example.mk
+
+bttv:
+ make -f $(SUBMAKE) APP=bttv INIT= OTHEROBJS="initfile.o" OTHERINCL= SHARKOPT="__LINUXC26__ __PCI__ __INPUT__ __FB__ __I2C__ __BTTV__"
+
Index: demos/branches/xen/astro/rock.c
===================================================================
--- demos/branches/xen/astro/rock.c (nonexistent)
+++ demos/branches/xen/astro/rock.c (revision 1684)
@@ -0,0 +1,308 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators: Giorgio Buttazzo <giorgio@sssup.it>
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://hartik.sssup.it
+ */
+
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+#include "asteroid.h"
+
+PID pid_RC;
+int nrock;
+int kill_rock;
+rock_pos rocks[ROCK_NMAX];
+
+void draw_rock(int x, int y, int r, int c, int m)
+{
+ sem_wait(&mx_grf);
+ if (m==0)
+ grx_disc(x, y, r, c);
+ else
+ grx_circle(x, y, r, c);
+ sem_post(&mx_grf);
+}
+
+TASK rock(rock_ini* ri)
+{
+ int x, y, r; /* rock graphic position */
+ int ox, oy; /* rock old position */
+ int x0, y0; /* rock initial position */
+ float vx, vy; /* rock speed */
+ float vxo, vyo; /* rock initial speed */
+ float ty, tx;
+ float dt;
+ float rand_ang;
+ int rand_side;
+ int ab, ax, ay, i, l;
+
+ x = y = x0 = y0 = ox = oy = vx = vy = ab = 0;
+
+ i = ri->i;
+ r = ri->r;
+
+ rand_ang = ((rand()%120) - 60) * PI / 180.;
+
+ sem_wait(&mx_st_scr);
+ l = score / 50;
+ sem_post(&mx_st_scr);
+
+ sem_wait(&mx_mat);
+ vxo = - (ROCK_VEL + l) * sin(rand_ang);
+ vyo = - (ROCK_VEL + l) * cos(rand_ang);
+ sem_post(&mx_mat);
+
+#ifdef ASTRO_MOVE
+ rand_side = rand()%4;
+#else
+ rand_side = 1;
+#endif
+
+ if (rand_side == 0) { // Bottom
+ vx = vxo;
+ vy = vyo;
+ }
+ if (rand_side == 1) { // Top
+ vx = -vxo;
+ vy = -vyo;
+ }
+ if (rand_side == 2) { // Right
+ vx = vyo;
+ vy = -vxo;
+ }
+ if (rand_side == 3) { // Left
+ vx = -vyo;
+ vy = vxo;
+ }
+
+ if ( (ri->x == 0) && (ri->y == 0) ) {
+ if (rand_side < 2) { // Bottom or Top
+ x = ox = x0 = GB_XMIN + (GB_XMAX-GB_XMIN)/4 + (rand()%((GB_XMAX-GB_XMIN)/2));
+ if (rand_side == 0) { // Bottom
+ y = oy = y0 = GB_YMAX - (r+1);
+ }
+ if (rand_side == 1) { // Top
+ y = oy = y0 = GB_YMIN + (r+1);
+ }
+ } else {
+ y = oy = y0 = GB_YMIN + (GB_YMAX-GB_YMIN)/4 + (rand()%((GB_YMAX-GB_YMIN)/2));
+ if (rand_side == 2) { // Right
+ x = ox = x0 = GB_XMAX - (r+1);
+ }
+ if (rand_side == 3) { // Left
+ x = ox = x0 = GB_XMIN + (r+1);
+ }
+ }
+ } else {
+ x = ox = x0 = ri->x;
+ y = oy = y0 = ri->y;
+ }
+
+ sem_wait(&mx_rk);
+ rocks[i].x = x;
+ rocks[i].y = y;
+ rocks[i].r = r;
+ sem_post(&mx_rk);
+
+ tx = 0;
+ ty = 0;
+ dt = ((float)ROCK_PERIOD)/100000;
+
+ while (1) {
+ y = y0 + vy * ty;
+ x = x0 + vx * tx;
+
+ sem_wait(&mx_rk);
+ rocks[i].x = x;
+ rocks[i].y = y;
+ r = rocks[i].r;
+ sem_post(&mx_rk);
+
+ draw_rock(ox, oy, r, RGB_BLACK, 0);
+
+ if ((kill_rock) || (crash)){
+ nrock--;
+ sem_wait(&mx_rk);
+ rocks[i].pid = NIL;
+ sem_post(&mx_rk);
+ return 0;
+ }
+
+ ox = x;
+ oy = y;
+
+ sem_wait(&mx_xy);
+ ax = astro_x;
+ ay = astro_y;
+ sem_post(&mx_xy);
+
+ if (dist_xy(x, y, ax, ay) < (ASTRO_RADIUS/2+r)) {
+ if (!ab) {
+ sem_wait(&mx_st_nrg);
+ energy -= ENERGY_GOT;
+ sem_post(&mx_st_nrg);
+ ab = 1;
+ }
+ } else
+ ab = 0;
+
+ sem_wait(&mx_xy);
+ if (dist_xy(x, y, astro_x, astro_y) < (ASTRO_RADIUS+r)/2) crash = 1;
+ sem_post(&mx_xy);
+
+#ifdef ASTRO_MOVE
+ if (x <= GB_XMIN + r) {
+ x0 = x = GB_XMAX - (r+1);
+ y0 = y;
+ tx = ty = 0;
+ }
+ if (x >= GB_XMAX - r) {
+ x0 = x = GB_XMIN + (r+1);
+ y0 = y;
+ tx = ty = 0;
+ }
+ if (y <= GB_YMIN + r) {
+ x0 = x;
+ y0 = y = GB_YMAX - (r+1);
+ tx = ty = 0;
+ }
+ if (y >= GB_YMAX - r) {
+ x0 = x;
+ y0 = y = GB_YMIN + (r+1);
+ tx = ty = 0;
+ }
+#else
+ if ( (x <= GB_XMIN + r) || (x >= GB_XMAX - r) || (y >= GB_YMAX - 2*r) ) {
+ if (y >= GB_YMAX - 2*r) {
+ sem_wait(&mx_st_nrg);
+ energy -= ENERGY_GOT;
+ sem_post(&mx_st_nrg);
+ }
+ nrock--;
+ sem_wait(&mx_rk);
+ rocks[i].pid = NIL;
+ sem_post(&mx_rk);
+ return 0;
+ }
+#endif
+ draw_rock(ox, oy, r, RGB_YELLOW, 1);
+
+ ty += dt;
+ tx += dt;
+
+ task_endcycle();
+ }
+}
+
+void rock_create(rock_ini* ri)
+{
+ SOFT_TASK_MODEL mp;
+ PID pid;
+ int i;
+
+ soft_task_default_model(mp);
+ soft_task_def_ctrl_jet(mp);
+ soft_task_def_group(mp, ROCK_GROUP);
+ soft_task_def_met(mp, ROCK_WCET);
+ soft_task_def_period(mp,ROCK_PERIOD);
+ soft_task_def_usemath(mp);
+ i = -1;
+ do {
+ i++;
+ sem_wait(&mx_rk);
+ pid = rocks[i].pid;
+ sem_post(&mx_rk);
+ } while (pid != NIL);
+ ri->i = i;
+ soft_task_def_arg(mp, (void *)ri);
+ pid = task_create("Rock", rock, &mp, NULL);
+
+ if (pid != NIL) {
+ sem_wait(&mx_rk);
+ rocks[i].pid = pid;
+ sem_post(&mx_rk);
+ task_activate(pid);
+ nrock++;
+ }
+}
+
+TASK rock_creator()
+{
+ while (1) {
+ sem_wait(&mx_rn);
+ if (rock_new.i == 0) {
+ rock_create(&rock_new);
+ rock_new.i = -1;
+ }
+ sem_post(&mx_rn);
+
+ if ((nrock < ROCK_NMAX/2) && (!kill_rock) && (!crash)) {
+ if ((rand()%ROCK_NMAX) > nrock) {
+ rock_new.r = ROCK_RADIUS_I;
+ rock_new.x = rock_new.y = 0;
+ rock_create(&rock_new);
+ }
+ }
+ task_endcycle();
+ }
+}
+
+void reset_rock()
+{
+ kill_rock = 1;
+}
+
+void start_rock()
+{
+ kill_rock = 0;
+}
+
+void create_rock_task()
+{
+ SOFT_TASK_MODEL ms;
+
+ soft_task_default_model(ms);
+ soft_task_def_ctrl_jet(ms);
+ soft_task_def_met(ms, ROCK_WCET);
+ soft_task_def_period(ms,ROCK_PERIOD*10);
+ soft_task_def_usemath(ms);
+ pid_RC = task_create("RockCreator", rock_creator, &ms, NULL);
+ if (pid_RC == NIL) {
+ sys_shutdown_message("Could not create task <RockCreator>\n");
+ exit(1);
+ } else
+ task_activate(pid_RC);
+}
+
+void init_rock()
+{
+ int i;
+
+ nrock = 0;
+ kill_rock = 1;
+ for ( i=0; i<ROCK_NMAX; i++ ) rocks[i].pid = NIL;
+
+ create_rock_task();
+}
+
Index: demos/branches/xen/astro/asteroid.h
===================================================================
--- demos/branches/xen/astro/asteroid.h (nonexistent)
+++ demos/branches/xen/astro/asteroid.h (revision 1684)
@@ -0,0 +1,181 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators: Giorgio Buttazzo <giorgio@sssup.it>
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://hartik.sssup.it
+ */
+
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+#include <kernel/func.h>
+#include <stdlib.h>
+#include <semaphore.h>
+#include "sem/sem/sem.h"
+#include "hartport/hartport/hartport.h"
+
+#include <drivers/shark_keyb26.h>
+#include <drivers/shark_fb26.h>
+
+#include <math.h>
+
+#define ASTRO_MOVE/* If defined then astro else defender */
+
+#define FRAME_BUFFER_DEVICE 0
+
+// DA CALCOLARE
+#define RGB_BLACK rgb16( 0, 0, 0)
+#define RGB_GRAY rgb16(127,127,127)
+#define RGB_WHITE rgb16(255,255,255)
+#define RGB_RED rgb16(255, 0, 0)
+#define RGB_GREEN rgb16( 0,255, 0)
+#define RGB_BLUE rgb16( 0, 0,255)
+#define RGB_YELLOW rgb16(255,255, 0)
+#define RGB_MAGENTA rgb16(255, 0,255)
+#define RGB_CYAN rgb16( 0,255,255)
+#define RGB_D_RED rgb16(127, 0, 0)
+#define RGB_D_GREEN rgb16( 0,127, 0)
+#define RGB_D_BLUE rgb16( 0, 0,127)
+#define RGB_D_YELLOW rgb16(127,127, 0)
+#define RGB_D_MAGENTA rgb16(127, 0,127)
+#define RGB_D_CYAN rgb16( 0,127,127)
+
+#define LIVE_0 " "
+#define LIVE_1 " *"
+#define LIVE_2 " **"
+#define LIVE_3 " ***"
+#define LIVE_4 " ****"
+#define LIVE_5 " *****"
+#define LIVE_6 "******"
+#define LIVE_X "------"
+
+/* GameBoard constants */
+#define GB_YMIN 65 /* position of the top */
+#define GB_YMAX 460 /* position of the bottom */
+#define GB_XMIN 5 /* min position X of the asteroid */
+#define GB_XMAX 505 /* max position X of the asteroid */
+
+/* Asteroid constants */
+#define ASTEROID_RADIUS 4 /* radius of the asteroid */
+#define ASTEROID_NMAX 60 /* max number of asteroids */
+
+#define ASTEROID_GROUP 2 /* task group of asteroids */
+
+/* Astro constants */
+#ifdef ASTRO_MOVE
+#define ASTRO_Y (GB_YMAX+GB_YMIN)/2 /* Y position of the astro */
+#else
+#define ASTRO_Y GB_YMAX-22 /* Y position of the astro */
+#endif
+#define ASTRO_X (GB_XMAX+GB_XMIN)/2 /* X position of the astro */
+#define ASTRO_MAX_VEL ASTRO_VEL_INC*5 /* Max astro velocity */
+#ifdef ASTRO_MOVE
+#define ASTRO_MAX_GRAD 180 /* Max astro angle */
+#else
+#define ASTRO_MAX_GRAD 80 /* Max astro angle */
+#endif
+#define ASTRO_GRAD_INC 10 /* angular variation */
+#define ASTRO_VEL_INC 3 /* velocity variation */
+#define ASTRO_RADIUS 16 /* Dimension of the astro */
+#define ASTRO_PERIOD 10000
+#define ASTRO_MOVE_PERIOD 10000
+#define ASTRO_WCET 1500
+
+/* Shot constants */
+#define SHOT_RADIUS 1 /* radius of the shot */
+#define SHOT_VEL 35 /* speed of the shot */
+#define SHOT_NMAX 30 /* max number of shots */
+
+#define SHOT_GROUP 3 /* task group of shots */
+
+#define SHOT_PERIOD 30000
+#define SHOT_WCET 2000
+
+/* Rock constants */
+#define ROCK_RADIUS_I 8 /* initial radius of the rock */
+#define ROCK_RADIUS_S 4 /* radius of the rock after one shot */
+#define ROCK_VEL 6 /* speed of the rock */
+#define ROCK_NMAX 8 /* max number of rocks */
+
+#define ROCK_GROUP 4 /* task group of rocks */
+
+#define ROCK_PERIOD 30000
+#define ROCK_WCET 2000
+
+/* Statistic constants */
+#define ENERGY_INIT 200
+#define ENERGY_SHOT 2
+#define ENERGY_GOT 10
+#define SCORE_GOT 2
+#define LIVES_INIT 3
+
+#define STAT_PERIOD 400000
+#define STAT_WCET 2000
+
+/* Statistic constants */
+#define LOOK_PERIOD 30000
+#define LOOK_WCET 4000
+
+typedef struct {
+ PID pid;
+ int x, y, r;
+} rock_pos;
+
+typedef struct {
+ int i;
+ int x, y, r;
+} rock_ini;
+
+double dist_xy(int x1, int y1, int x2, int y2);
+void draw_rock(int x, int y, int r, int c, int m);
+void rock_create(rock_ini* ri);
+void frame_astro();
+void frame_stat();
+void init_astro();
+void init_stat();
+void init_rock();
+void reset_astro();
+void reset_rock();
+void start_astro();
+void start_rock();
+void reset_game();
+
+extern sem_t mx_mat, mx_grf; /* mutex semaphores */
+extern sem_t mx_pos, mx_vel; /* mutex semaphores */
+extern sem_t mx_xy, mx_rk, mx_rn; /* mutex semaphores */
+extern sem_t mx_st_scr, mx_st_nrg; /* mutex semaphores */
+extern sem_t mx_st_kil, mx_st_liv; /* mutex semaphores */
+extern int nshot; /* number of shot active */
+extern int nrock; /* number of rock active */
+extern int astro_x, astro_y; /* astro position */
+extern int astro_grad; /* astro angolar position */
+extern int astro_vel; /* astro velocity */
+extern int score; /* current player score */
+extern int energy; /* current player energy */
+extern int enemy; /* current player strikes */
+extern int lives; /* current player lives*/
+extern int kill_rock; /* kill active rocks */
+extern int kill_shot; /* kill active shots */
+extern int freez_astro; /* turn of control pad */
+extern int crash; /* astro vs. rock */
+extern rock_pos rocks[ROCK_NMAX]; /* rocks position */
+extern rock_ini rock_new;
Index: demos/branches/xen/astro/initfile.c
===================================================================
--- demos/branches/xen/astro/initfile.c (nonexistent)
+++ demos/branches/xen/astro/initfile.c (revision 1684)
@@ -0,0 +1,187 @@
+/*
+ * Project: S.Ha.R.K
+ *
+ * Coordinators: Giorgio Buttazzo <giorgio@sssup.it>
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * Authors:
+ * ...
+ * Tullio Facchinetti <tullio.facchinetti@unipv.it>
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://hartik.sssup.it
+ */
+
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+#include "kernel/kern.h"
+#include "edf/edf/edf.h"
+#include "hardcbs/hardcbs/hardcbs.h"
+#include "rr/rr/rr.h"
+#include "dummy/dummy/dummy.h"
+#include "intdrive/intdrive/intdrive.h"
+
+#include "sem/sem/sem.h"
+#include "hartport/hartport/hartport.h"
+
+#include <drivers/shark_linuxc26.h>
+#include <drivers/shark_pci26.h>
+#include <drivers/shark_input26.h>
+#include <drivers/shark_keyb26.h>
+#include <drivers/shark_fb26.h>
+
+#define FRAME_BUFFER_DEVICE 0
+
+/*+ sysyem tick in us +*/
+#define TICK 0
+
+/*+ RR tick in us +*/
+#define RRTICK 10000
+
+/*+ Interrup Server */
+#define INTDRIVE_Q 1000
+#define INTDRIVE_U 0.1*MAX_BANDWIDTH
+#define INTDRIVE_FLAG 0
+
+void call_shutdown_task(void *arg);
+int device_drivers_init();
+int device_drivers_close();
+void set_shutdown_task();
+TASK shutdown_task_body(void *arg);
+
+PID shutdown_task_PID = -1;
+
+TIME __kernel_register_levels__(void *arg)
+{
+ struct multiboot_info *mb = (struct multiboot_info *)arg;
+ LEVEL EDF_level;
+
+ INTDRIVE_register_level(INTDRIVE_Q, INTDRIVE_Q, INTDRIVE_U, INTDRIVE_FLAG);
+ EDF_level = EDF_register_level(EDF_ENABLE_ALL);
+ HCBS_register_level(HCBS_ENABLE_ALL, EDF_level);
+ RR_register_level(RRTICK, RR_MAIN_YES, mb);
+ dummy_register_level();
+
+ SEM_register_module();
+
+ return TICK;
+}
+
+TASK __init__(void *arg)
+{
+ struct multiboot_info *mb = (struct multiboot_info *)arg;
+
+ HARTPORT_init();
+
+ set_shutdown_task();
+
+ device_drivers_init();
+
+ sys_atrunlevel(call_shutdown_task, NULL, RUNLEVEL_SHUTDOWN);
+
+ __call_main__(mb);
+
+ return (void *)0;
+}
+
+void set_shutdown_task() {
+
+ NRT_TASK_MODEL nrt;
+
+ nrt_task_default_model(nrt);
+ nrt_task_def_system(nrt);
+
+ shutdown_task_PID = task_create("Shutdown Task",shutdown_task_body,&nrt,NULL);
+ if (shutdown_task_PID == NIL) {
+ sys_shutdown_message("Error: Cannot create shutdown task\n");
+ exit(1);
+ }
+
+}
+
+int device_drivers_init() {
+
+ int res;
+ KEYB_PARMS kparms = BASE_KEYB;
+
+ LINUXC26_register_module(TRUE);
+
+ PCI26_init();
+
+ INPUT26_init();
+
+ keyb_def_ctrlC(kparms, NULL);
+
+ KEYB26_init(&kparms);
+
+ FB26_init();
+
+ res = FB26_open(FRAME_BUFFER_DEVICE);
+ if (res) {
+ cprintf("Error: Cannot open graphical mode\n");
+ KEYB26_close();
+ INPUT26_close();
+ exit(1);
+ }
+
+ FB26_use_grx(FRAME_BUFFER_DEVICE);
+
+ FB26_setmode(FRAME_BUFFER_DEVICE,"640x480-16");
+
+ return 0;
+
+}
+
+int device_drivers_close() {
+
+ FB26_close(FRAME_BUFFER_DEVICE);
+
+ KEYB26_close();
+
+ INPUT26_close();
+
+ return 0;
+
+}
+
+#define SHUTDOWN_TIMEOUT_SEC 3
+
+void call_shutdown_task(void *arg)
+{
+ struct timespec t;
+
+ sys_gettime(&t);
+ t.tv_sec += SHUTDOWN_TIMEOUT_SEC;
+
+ /* Emergency timeout to exit from RUNLEVEL_SHUTDOWN */
+ kern_event_post(&t,(void *)((void *)sys_abort_shutdown),(void *)0);
+
+ task_activate(shutdown_task_PID);
+}
+
+TASK shutdown_task_body(void *arg) {
+
+ device_drivers_close();
+
+ sys_shutdown_message("-- S.Ha.R.K. Closed --\n");
+
+ return NULL;
+
+}
Index: demos/branches/xen/astro/astro.c
===================================================================
--- demos/branches/xen/astro/astro.c (nonexistent)
+++ demos/branches/xen/astro/astro.c (revision 1684)
@@ -0,0 +1,583 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators: Giorgio Buttazzo <giorgio@sssup.it>
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+#include "asteroid.h"
+
+int nshot; /* number of shot active */
+int astro_x, astro_y; /* astro position */
+int astro_grad; /* astro angolar position */
+PID pid_TR, pid_TL; /* pid of turn tasks */
+int astro_vel; /* astro speed */
+PID pid_SU, pid_SD; /* pid of acc tasks */
+PID pid_SZ, pid_FL; /* pid of acc tasks */
+int freez_astro; /* turn of pad*/
+int kill_shot;
+
+rock_ini rock_new;
+
+TASK shot(int i)
+{
+ int x, y; /* shot graphic position */
+ int ox, oy; /* shot old position */
+ int x0, y0; /* shot initial position */
+ float vx, vy; /* shot speed */
+ float ty, tx;
+ float dt;
+ float a_rad;
+ int a_vel;
+
+ int rx, ry, rr;
+ PID rp;
+
+ sem_wait(&mx_xy);
+ y = oy = y0 = astro_y;
+ x = ox = x0 = astro_x;
+ sem_post(&mx_xy);
+
+ sem_wait(&mx_pos);
+ a_rad = astro_grad * PI / 180.;
+ sem_post(&mx_pos);
+ sem_wait(&mx_vel);
+ a_vel = astro_vel;
+ sem_post(&mx_vel);
+ sem_wait(&mx_mat);
+ vx = - (SHOT_VEL + a_vel) * sin(a_rad);
+ vy = - (SHOT_VEL + a_vel) * cos(a_rad);
+ sem_post(&mx_mat);
+ tx = 0;
+ ty = 0;
+ dt = ((float)SHOT_PERIOD)/100000;
+
+ while (1) {
+ y = y0 + vy * ty;
+ x = x0 + vx * tx;
+
+ sem_wait(&mx_grf);
+ grx_disc(ox, oy, SHOT_RADIUS, RGB_BLACK);
+ sem_post(&mx_grf);
+ ox = x;
+ oy = y;
+
+ if ((kill_shot)||(crash)||(y < GB_YMIN+SHOT_RADIUS)||(x < GB_XMIN+SHOT_RADIUS)||(x > GB_XMAX-SHOT_RADIUS)||(y > GB_YMAX-SHOT_RADIUS)){
+ nshot--;
+ return 0;
+ }
+
+ for ( i=0; i<ROCK_NMAX; i++ ) {
+ sem_wait(&mx_rk);
+ rp = rocks[i].pid;
+ rx = rocks[i].x;
+ ry = rocks[i].y;
+ rr = rocks[i].r;
+ sem_post(&mx_rk);
+
+ if ((rp!=NIL) && (dist_xy(x, y, rx, ry) < (SHOT_RADIUS+rr))) {
+ draw_rock(rx, ry, rr, RGB_BLACK, 0);
+ if (rr == ROCK_RADIUS_I) {
+ sem_wait(&mx_rk);
+ rocks[i].r = ROCK_RADIUS_S;
+ sem_post(&mx_rk);
+ sem_wait(&mx_rn);
+ rock_new.r = ROCK_RADIUS_S;
+ rock_new.x = rx;
+ rock_new.y = ry;
+ rock_new.i = 0;
+ sem_post(&mx_rn);
+ sem_wait(&mx_st_scr);
+ score += SCORE_GOT;
+ sem_post(&mx_st_scr);
+ } else {
+ task_kill(rp);
+ sem_wait(&mx_rk);
+ rocks[i].pid = NIL;
+ sem_post(&mx_rk);
+ nrock--;
+ sem_wait(&mx_st_scr);
+ score += 2*SCORE_GOT;
+ sem_post(&mx_st_scr);
+ }
+ sem_wait(&mx_st_nrg);
+ energy += ENERGY_GOT;
+ sem_post(&mx_st_nrg);
+ sem_wait(&mx_st_kil);
+ enemy++;
+ sem_post(&mx_st_kil);
+ nshot--;
+ return 0;
+ }
+ }
+
+ sem_wait(&mx_grf);
+ grx_disc(ox, oy, SHOT_RADIUS, RGB_RED);
+ sem_post(&mx_grf);
+
+ ty += dt;
+ tx += dt;
+
+ task_endcycle();
+ }
+}
+
+TASK astro()
+{
+ float astro_rad;
+ int ox, oy;
+ float s, c;
+
+ //leggo posizione
+ sem_wait(&mx_pos);
+ astro_rad = astro_grad * PI / 180.;
+ sem_post(&mx_pos);
+ sem_wait(&mx_mat);
+ s = -sin(astro_rad);
+ c = -cos(astro_rad);
+ sem_post(&mx_mat);
+ sem_wait(&mx_xy);
+ ox = astro_x;
+ oy = astro_y;
+ sem_post(&mx_xy);
+
+ while (1) {
+
+ sem_wait(&mx_grf);
+ //DRAW SHADOW ASTRO
+ grx_line(ox + 15.*s , oy + 15.*c , ox - 5.*c - 9.*s, oy + 5.*s - 9.*c, RGB_BLACK);
+ grx_line(ox + 15.*s , oy + 15.*c , ox + 5.*c - 9.*s, oy - 5.*s - 9.*c, RGB_BLACK);
+ grx_line(ox , oy , ox - 12.*c - 9.*s, oy + 12.*s - 9.*c, RGB_BLACK);
+ grx_line(ox , oy , ox + 12.*c - 9.*s, oy - 12.*s - 9.*c, RGB_BLACK);
+ grx_line(ox - 12.*c - 9.*s, oy + 12.*s - 9.*c, ox + 12.*c - 9.*s, oy - 12.*s - 9.*c, RGB_BLACK);
+ sem_post(&mx_grf);
+
+ sem_wait(&mx_pos);
+ astro_rad = astro_grad * PI / 180.;
+ sem_post(&mx_pos);
+ sem_wait(&mx_mat);
+ s = -sin(astro_rad);
+ c = -cos(astro_rad);
+ sem_post(&mx_mat);
+ sem_wait(&mx_xy);
+ ox = astro_x;
+ oy = astro_y;
+ sem_post(&mx_xy);
+
+ sem_wait(&mx_grf);
+ //DRAW ASTRO
+ grx_line(ox + 15.*s , oy + 15.*c , ox - 5.*c - 9.*s, oy + 5.*s - 9.*c, RGB_WHITE);
+ grx_line(ox + 15.*s , oy + 15.*c , ox + 5.*c - 9.*s, oy - 5.*s - 9.*c, RGB_WHITE);
+ grx_line(ox , oy , ox - 12.*c - 9.*s, oy + 12.*s - 9.*c, RGB_WHITE);
+ grx_line(ox , oy , ox + 12.*c - 9.*s, oy - 12.*s - 9.*c, RGB_WHITE);
+ grx_line(ox - 12.*c - 9.*s, oy + 12.*s - 9.*c, ox + 12.*c - 9.*s, oy - 12.*s - 9.*c, RGB_WHITE);
+ sem_post(&mx_grf);
+
+/* {
+ int xxx;
+ for (xxx=0; xxx<10000; xxx++);
+ }*/
+
+ task_endcycle();
+ }
+}
+
+TASK look()
+{
+ while (1) {
+ if (crash) {
+ reset_rock();
+ reset_astro();
+ if (nrock==0) {
+ reset_game();
+ crash = 0;
+ }
+ }
+ task_endcycle();
+ }
+}
+
+TASK turn(int i)
+{
+
+ while (1) {
+
+ sem_wait(&mx_pos);
+ if (i==0)
+ astro_grad += 180;
+ else {
+ astro_grad += i;
+ }
+ if (astro_grad < -180) astro_grad += 360;
+ if (astro_grad > 180) astro_grad -= 360;
+ if (astro_grad < -ASTRO_MAX_GRAD) astro_grad = -ASTRO_MAX_GRAD;
+ if (astro_grad > ASTRO_MAX_GRAD) astro_grad = ASTRO_MAX_GRAD;
+ sem_post(&mx_pos);
+
+ task_endcycle();
+ }
+}
+
+TASK speed(int i)
+{
+
+ while (1) {
+
+ sem_wait(&mx_vel);
+ if (i==0)
+ astro_vel = 0;
+ else {
+ astro_vel += i;
+ if (astro_vel < -ASTRO_MAX_VEL) astro_vel = -ASTRO_MAX_VEL;
+ if (astro_vel > ASTRO_MAX_VEL) astro_vel = ASTRO_MAX_VEL;
+ }
+ sem_post(&mx_vel);
+
+ task_endcycle();
+ }
+}
+
+TASK move()
+{
+ int dv, x, y;
+ float drad;
+
+ drad = x = y = 0;
+
+ while (1) {
+
+#ifdef ASTRO_MOVE
+ sem_wait(&mx_pos);
+ drad = astro_grad * PI / 180.;
+ sem_post(&mx_pos);
+#endif
+ sem_wait(&mx_vel);
+ dv = astro_vel;
+ sem_post(&mx_vel);
+ sem_wait(&mx_xy);
+ x = astro_x;
+ y = astro_y;
+ sem_post(&mx_xy);
+#ifdef ASTRO_MOVE
+ x -= dv * sin(drad);
+ y -= dv * cos(drad);
+ if (x < GB_XMIN + ASTRO_RADIUS) x = GB_XMAX - ASTRO_RADIUS;
+ if (x > GB_XMAX - ASTRO_RADIUS) x = GB_XMIN + ASTRO_RADIUS;
+ if (y < GB_YMIN + ASTRO_RADIUS) y = GB_YMAX - ASTRO_RADIUS;
+ if (y > GB_YMAX - ASTRO_RADIUS) y = GB_YMIN + ASTRO_RADIUS;
+#else
+ x += dv;
+ if (x < GB_XMIN + 2*ASTRO_RADIUS) {
+ x = GB_XMIN + 2*ASTRO_RADIUS;
+ sem_wait(&mx_vel);
+ astro_vel = - astro_vel - ASTRO_VEL_INC;
+ sem_post(&mx_vel);
+ }
+ if (x > GB_XMAX - 2*ASTRO_RADIUS) {
+ x = GB_XMAX - 2*ASTRO_RADIUS;
+ sem_wait(&mx_vel);
+ astro_vel = - astro_vel + ASTRO_VEL_INC;
+ sem_post(&mx_vel);
+ }
+#endif
+ sem_wait(&mx_xy);
+ astro_x = x;
+ astro_y = y;
+ sem_post(&mx_xy);
+
+ task_endcycle();
+ }
+}
+
+void pad(KEY_EVT *k)
+{
+ if (freez_astro) return;
+ if (k->scan == KEY_O) task_activate(pid_TL);
+ if (k->scan == KEY_P) task_activate(pid_TR);
+ if (k->scan == KEY_S) task_activate(pid_SZ);
+ if (k->scan == KEY_Z) task_activate(pid_SD);
+#ifdef ASTRO_MOVE
+ if (k->scan == KEY_A) task_activate(pid_SU);
+ if (k->scan == KEY_F) task_activate(pid_FL);
+#else
+ if (k->scan == KEY_X) task_activate(pid_SU);
+#endif
+}
+
+void new_shot(KEY_EVT *k)
+{
+ SOFT_TASK_MODEL mp;
+ PID pid;
+
+ if ((nshot >= SHOT_NMAX)||(freez_astro)||(kill_shot)||(crash)) return;
+
+ soft_task_default_model(mp);
+ soft_task_def_ctrl_jet(mp);
+ soft_task_def_arg(mp, (void *)nshot);
+ soft_task_def_group(mp, SHOT_GROUP);
+ soft_task_def_met(mp, SHOT_WCET);
+ soft_task_def_period(mp,SHOT_PERIOD);
+ soft_task_def_usemath(mp);
+ pid = task_create("Shot", shot, &mp, NULL);
+
+ if (pid != NIL) {
+ task_activate(pid);
+ nshot++;
+ sem_wait(&mx_st_nrg);
+ energy -= ENERGY_SHOT;
+ sem_post(&mx_st_nrg);
+ }
+}
+
+void start_astro()
+{
+ freez_astro = 0;
+ kill_shot = 0;
+}
+
+void reset_astro()
+{
+ freez_astro = 1;
+ sem_wait(&mx_xy);
+ astro_x = ASTRO_X;
+ astro_y = ASTRO_Y;
+ sem_post(&mx_xy);
+ sem_wait(&mx_pos);
+ astro_grad = 0;
+ sem_post(&mx_pos);
+ sem_wait(&mx_vel);
+ astro_vel = 0;
+ sem_post(&mx_vel);
+ kill_shot = 1;
+}
+
+void create_astro_task()
+{
+ HARD_TASK_MODEL mp;
+ SOFT_TASK_MODEL ms;
+ PID pid;
+ int incr;
+
+ soft_task_default_model(ms);
+ soft_task_def_ctrl_jet(ms);
+ soft_task_def_arg(ms, (void *)nshot);
+ soft_task_def_met(ms, ASTRO_WCET);
+ soft_task_def_period(ms,ASTRO_PERIOD);
+ soft_task_def_usemath(ms);
+ pid = task_create("Astro", astro, &ms, NULL);
+ if (pid == NIL) {
+ sys_shutdown_message("Could not create task <astro>\n");
+ exit(1);
+ } else
+ task_activate(pid);
+
+ hard_task_default_model(mp);
+ hard_task_def_ctrl_jet(mp);
+ hard_task_def_wcet(mp,LOOK_WCET);
+ hard_task_def_mit(mp, LOOK_PERIOD);
+ hard_task_def_usemath(mp);
+ pid = task_create("Taken", look, &mp, NULL);
+ if (pid == NIL) {
+ sys_shutdown_message("Could not create task <Taken>\n");
+ exit(1);
+ } else
+ task_activate(pid);
+
+ incr = ASTRO_GRAD_INC;
+ hard_task_default_model(mp);
+ hard_task_def_ctrl_jet(mp);
+ hard_task_def_arg(mp, (void *)incr);
+ hard_task_def_wcet(mp,ASTRO_WCET);
+ hard_task_def_mit(mp, ASTRO_MOVE_PERIOD);
+ hard_task_def_aperiodic(mp);
+ hard_task_def_usemath(mp);
+ pid_TL = task_create("TurnLeft", turn, &mp, NULL);
+ if (pid_TL == NIL) {
+ sys_shutdown_message("Could not create task <Turn L>\n");
+ exit(1);
+ }
+
+ incr = - ASTRO_GRAD_INC;
+ hard_task_default_model(mp);
+ hard_task_def_ctrl_jet(mp);
+ hard_task_def_arg(mp, (void *)incr);
+ hard_task_def_wcet(mp,ASTRO_WCET);
+ hard_task_def_mit(mp, ASTRO_MOVE_PERIOD);
+ hard_task_def_aperiodic(mp);
+ hard_task_def_usemath(mp);
+ pid_TR = task_create("TurnRight", turn, &mp, NULL);
+ if (pid_TR == NIL) {
+ sys_shutdown_message("Could not create task <Turn R>\n");
+ exit(1);
+ }
+
+ incr = ASTRO_VEL_INC;
+ hard_task_default_model(mp);
+ hard_task_def_ctrl_jet(mp);
+ hard_task_def_arg(mp, (void *)incr);
+ hard_task_def_wcet(mp,ASTRO_WCET);
+ hard_task_def_mit(mp, ASTRO_PERIOD);
+ hard_task_def_aperiodic(mp);
+ hard_task_def_usemath(mp);
+ pid_SU = task_create("SpeedUP", speed, &mp, NULL);
+ if (pid_SU == NIL) {
+ sys_shutdown_message("Could not create task <Speed UP>\n");
+ exit(1);
+ }
+
+ incr = - ASTRO_VEL_INC;
+ hard_task_default_model(mp);
+ hard_task_def_ctrl_jet(mp);
+ hard_task_def_arg(mp, (void *)incr);
+ hard_task_def_wcet(mp,ASTRO_WCET);
+ hard_task_def_mit(mp, ASTRO_PERIOD);
+ hard_task_def_aperiodic(mp);
+ hard_task_def_usemath(mp);
+ pid_SD = task_create("SpeedDOWN", speed, &mp, NULL);
+ if (pid_SD == NIL) {
+ sys_shutdown_message("Could not create task <Speed DOWN>\n");
+ exit(1);
+ }
+
+ incr = 0;
+ hard_task_default_model(mp);
+ hard_task_def_ctrl_jet(mp);
+ hard_task_def_arg(mp, (void *)incr);
+ hard_task_def_wcet(mp,ASTRO_WCET);
+ hard_task_def_mit(mp, ASTRO_PERIOD);
+ hard_task_def_aperiodic(mp);
+ hard_task_def_usemath(mp);
+ pid_SZ = task_create("SpeedZERO", speed, &mp, NULL);
+ if (pid_SZ == NIL) {
+ sys_shutdown_message("Could not create task <Speed ZERO>\n");
+ exit(1);
+ }
+
+ hard_task_default_model(mp);
+ hard_task_def_ctrl_jet(mp);
+ hard_task_def_wcet(mp,ASTRO_WCET);
+ hard_task_def_mit(mp, 6*ASTRO_PERIOD);
+ hard_task_def_usemath(mp);
+ pid = task_create("MoveAstro", move, &mp, NULL);
+ if (pid == NIL) {
+ sys_shutdown_message("Could not create task <MoveAstro>\n");
+ exit(1);
+ } else
+ task_activate(pid);
+
+#ifdef ASTRO_MOVE
+ incr = 0;
+ hard_task_default_model(mp);
+ hard_task_def_ctrl_jet(mp);
+ hard_task_def_arg(mp, (void *)incr);
+ hard_task_def_wcet(mp,ASTRO_WCET);
+ hard_task_def_mit(mp, 3*ASTRO_PERIOD);
+ hard_task_def_aperiodic(mp);
+ hard_task_def_usemath(mp);
+ pid_FL = task_create("FlipAstro", turn, &mp, NULL);
+ if (pid_FL == NIL) {
+ sys_shutdown_message("Could not create task <Flip Astro>\n");
+ exit(1);
+ }
+#endif
+}
+
+void frame_astro()
+{
+ grx_text("Game", 10, 45, RGB_BLUE, RGB_BLACK);
+ grx_line(GB_XMIN-2,55,GB_XMAX+2,55,RGB_RED);
+
+ grx_rect(GB_XMIN-3, GB_YMIN-3, GB_XMAX+3, GB_YMAX+3, RGB_GREEN);
+
+#ifndef ASTRO_MOVE
+ grx_rect(GB_XMIN-1, GB_YMAX-1, GB_XMAX+1, GB_YMAX+1, RGB_CYAN);
+#endif
+}
+
+void init_astro()
+{
+ KEY_EVT k;
+
+ crash = 0;
+ freez_astro = 1;
+ kill_shot = 1;
+ astro_vel = 0;
+ astro_grad = 0;
+ astro_x = ASTRO_X;
+ astro_y = ASTRO_Y;
+
+ create_astro_task();
+
+ k.flag = 0;
+ k.scan = KEY_SPC;
+ k.ascii = ' ';
+ k.status = KEY_PRESSED | KEY_REPEATED;
+ keyb_hook(k,new_shot,FALSE);
+
+ k.flag = 0;
+ k.scan = KEY_O;
+ k.ascii = 'o';
+ k.status = KEY_PRESSED | KEY_REPEATED;
+ keyb_hook(k,pad,FALSE);
+
+ k.flag = 0;
+ k.scan = KEY_P;
+ k.ascii = 'p';
+ k.status = KEY_PRESSED | KEY_REPEATED;
+ keyb_hook(k,pad,FALSE);
+
+ k.flag = 0;
+ k.scan = KEY_S;
+ k.ascii = 's';
+ k.status = KEY_PRESSED | KEY_REPEATED;
+ keyb_hook(k,pad,FALSE);
+
+ k.flag = 0;
+ k.scan = KEY_Z;
+ k.ascii = 'z';
+ k.status = KEY_PRESSED | KEY_REPEATED;
+ keyb_hook(k,pad,FALSE);
+
+#ifdef ASTRO_MOVE
+ k.flag = 0;
+ k.scan = KEY_A;
+ k.ascii = 'a';
+ k.status = KEY_PRESSED;
+ keyb_hook(k,pad,FALSE);
+
+ k.flag = 0;
+ k.scan = KEY_F;
+ k.ascii = 'f';
+ k.status = KEY_PRESSED;
+ keyb_hook(k,pad,FALSE);
+#else
+ k.flag = 0;
+ k.scan = KEY_X;
+ k.ascii = 'x';
+ k.status = KEY_PRESSED;
+ keyb_hook(k,pad,FALSE);
+
+#endif
+}
Index: demos/branches/xen/astro/asteroid.c
===================================================================
--- demos/branches/xen/astro/asteroid.c (nonexistent)
+++ demos/branches/xen/astro/asteroid.c (revision 1684)
@@ -0,0 +1,126 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators: Giorgio Buttazzo <giorgio@sssup.it>
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+#include "asteroid.h"
+#include <kernel/kern.h>
+
+sem_t mx_mat, mx_grf, mx_pos, mx_vel, mx_xy, mx_rk, mx_rn; /* mutex semaphores */
+sem_t mx_st_nrg, mx_st_scr, mx_st_kil, mx_st_liv; /* mutex semaphores */
+
+double dist_xy(int x1, int y1, int x2, int y2)
+{
+ double dst;
+ int dx, dy;
+
+ dx = x2 - x1;
+ dy = y2 - y1;
+ sem_wait(&mx_mat);
+ dst = sqrt(dx*dx + dy*dy);
+ sem_post(&mx_mat);
+
+ return dst;
+
+}
+
+void frame_main()
+{
+
+ grx_clear(RGB_BLACK);
+
+#ifdef ASTRO_MOVE
+ grx_text("S.Ha.R.K. - Asteroid 2002 RC1", 0, 0, RGB_GREEN, RGB_BLACK );
+#else
+ grx_text("S.Ha.R.K. - Defender 2002 RC1", 0, 0, RGB_GREEN, RGB_BLACK );
+#endif
+ grx_text("by Marinoni Mauro" ,24,16, RGB_GREEN, RGB_BLACK );
+ grx_text(" Scaricabarozzi Mattia" ,24,24, RGB_GREEN, RGB_BLACK );
+
+ grx_text("Ctrl-C, Ctrr-C: exit" ,300, 0, RGB_GRAY, RGB_BLACK );
+ grx_text("O-P : turn left/right" ,300,16, RGB_GRAY, RGB_BLACK );
+#ifdef ASTRO_MOVE
+ grx_text("A-Z : speed up/down" ,300,24, RGB_GRAY, RGB_BLACK );
+ grx_text("S : stop engine" ,300,32, RGB_GRAY, RGB_BLACK );
+ grx_text("F : flip astro" ,300,40, RGB_GRAY, RGB_BLACK );
+#else
+ grx_text("Z-X : move left/right" ,300,24, RGB_GRAY, RGB_BLACK );
+#endif
+ grx_text("Space : fire" ,485,16, RGB_GRAY, RGB_BLACK );
+ grx_text("N : new game" ,485,24, RGB_GRAY, RGB_BLACK );
+ grx_text("B : begin game" ,485,32, RGB_GRAY, RGB_BLACK );
+
+ frame_stat();
+ frame_astro();
+}
+
+void end_func(KEY_EVT *k) {
+
+ exit(0);
+}
+
+int main(int argc, char **argv)
+{
+ KEY_EVT k;
+ TIME seme;
+
+ k.flag = CNTR_BIT;
+ k.scan = KEY_C;
+ k.ascii = 'c';
+ k.status = KEY_PRESSED;
+ keyb_hook(k,end_func,FALSE);
+
+ k.flag = CNTL_BIT;
+ k.scan = KEY_C;
+ k.ascii = 'c';
+ k.status = KEY_PRESSED;
+ keyb_hook(k,end_func,FALSE);
+
+ sem_init(&mx_mat,0,1);
+ sem_init(&mx_grf,0,1);
+ sem_init(&mx_pos,0,1);
+ sem_init(&mx_vel,0,1);
+ sem_init(&mx_xy ,0,1);
+ sem_init(&mx_rk ,0,1);
+ sem_init(&mx_rn ,0,1);
+ sem_init(&mx_st_scr,0,1);
+ sem_init(&mx_st_nrg,0,1);
+ sem_init(&mx_st_kil,0,1);
+ sem_init(&mx_st_liv,0,1);
+
+ seme = sys_gettime(NULL);
+ srand(seme);
+
+ frame_main();
+
+ init_stat();
+ init_astro();
+ init_rock();
+
+ return 0;
+
+}
Index: demos/branches/xen/astro/stat.c
===================================================================
--- demos/branches/xen/astro/stat.c (nonexistent)
+++ demos/branches/xen/astro/stat.c (revision 1684)
@@ -0,0 +1,177 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators: Giorgio Buttazzo <giorgio@sssup.it>
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://hartik.sssup.it
+ */
+
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+#include "asteroid.h"
+#include <string.h>
+
+int score; /* current player score */
+int energy; /* current player energy */
+int enemy; /* current player killed enemy */
+int lives; /* current player lives */
+int crash; /* astro vs. rock */
+
+TASK stat_write()
+{
+ char st[20];
+ int l;
+
+ while (1) {
+
+ sem_wait(&mx_st_scr);
+ sprintf(st, "%6d", score);
+ sem_post(&mx_st_scr);
+ sem_wait(&mx_grf);
+ grx_text(st, GB_XMAX+80, GB_YMIN+ 8, RGB_YELLOW, RGB_BLACK);
+ sem_post(&mx_grf);
+
+ sem_wait(&mx_st_nrg);
+ sprintf(st, "%6d", energy);
+ if (energy <= 0) crash = 1;
+ sem_post(&mx_st_nrg);
+ sem_wait(&mx_grf);
+ grx_text(st, GB_XMAX+80, GB_YMIN+24, RGB_YELLOW, RGB_BLACK);
+ sem_post(&mx_grf);
+
+ sem_wait(&mx_st_kil);
+ sprintf(st, "%6d", enemy);
+ sem_post(&mx_st_kil);
+ sem_wait(&mx_grf);
+ grx_text(st, GB_XMAX+80, GB_YMIN+40, RGB_YELLOW, RGB_BLACK);
+ sem_post(&mx_grf);
+
+ strcpy(st,LIVE_X);
+ sem_wait(&mx_st_liv);
+ l = lives;
+ sem_post(&mx_st_liv);
+ if (l == 0) strcpy(st,LIVE_0);
+ if (l == 1) strcpy(st,LIVE_1);
+ if (l == 2) strcpy(st,LIVE_2);
+ if (l == 3) strcpy(st,LIVE_3);
+ if (l == 4) strcpy(st,LIVE_4);
+ if (l == 5) strcpy(st,LIVE_5);
+ if (l == 6) strcpy(st,LIVE_6);
+ sem_wait(&mx_grf);
+ grx_text(st, GB_XMAX+80, GB_YMIN+56, RGB_YELLOW, RGB_BLACK);
+ sem_post(&mx_grf);
+
+ task_endcycle();
+ }
+}
+
+void reset_game()
+{
+ sem_wait(&mx_st_liv);
+ if (lives > 0) {
+ lives--;
+ sem_post(&mx_st_liv);
+ } else {
+ lives = LIVES_INIT;
+ sem_post(&mx_st_liv);
+
+ sem_wait(&mx_st_scr);
+ score = 0;
+ sem_post(&mx_st_scr);
+
+ sem_wait(&mx_st_kil);
+ enemy = 0;
+ sem_post(&mx_st_kil);
+ }
+
+ sem_wait(&mx_st_nrg);
+ energy = ENERGY_INIT;
+ sem_post(&mx_st_nrg);
+}
+
+void new_game(KEY_EVT *k)
+{
+ reset_rock();
+ reset_astro();
+ reset_game();
+}
+
+void start_game(KEY_EVT *k)
+{
+ start_astro();
+ start_rock();
+}
+
+void frame_stat()
+{
+ grx_text("Statistics", GB_XMAX+10, 45, RGB_BLUE, RGB_BLACK);
+ grx_line(GB_XMAX+8,55,640-8,55,RGB_RED);
+
+ grx_rect(GB_XMAX+7, GB_YMIN-3, 640-6, GB_YMIN+70, RGB_GREEN);
+ grx_text("Score : ", GB_XMAX+15, GB_YMIN+ 8, RGB_CYAN, RGB_BLACK);
+ grx_text("Energy : ", GB_XMAX+15, GB_YMIN+24, RGB_CYAN, RGB_BLACK);
+ grx_text("Enemy : ", GB_XMAX+15, GB_YMIN+40, RGB_CYAN, RGB_BLACK);
+ grx_text("Lives : ", GB_XMAX+15, GB_YMIN+56, RGB_CYAN, RGB_BLACK);
+}
+
+void create_stat_task()
+{
+ SOFT_TASK_MODEL ms;
+ PID pid;
+
+ soft_task_default_model(ms);
+ soft_task_def_ctrl_jet(ms);
+ soft_task_def_met(ms, STAT_WCET);
+ soft_task_def_period(ms,STAT_PERIOD);
+ soft_task_def_usemath(ms);
+ pid = task_create("StatWrite", stat_write, &ms, NULL);
+ if (pid == NIL) {
+ sys_shutdown_message("Could not create task <StatWrite>\n");
+ exit(1);
+ } else
+ task_activate(pid);
+}
+
+void init_stat()
+{
+ KEY_EVT k;
+
+ score = 0;
+ enemy = 0;
+ energy = ENERGY_INIT;
+ lives = LIVES_INIT;
+
+ create_stat_task();
+
+ k.flag = 0;
+ k.scan = KEY_N;
+ k.ascii = 'n';
+ k.status = KEY_PRESSED;
+ keyb_hook(k,new_game,FALSE);
+
+ k.flag = 0;
+ k.scan = KEY_B;
+ k.ascii = 'b';
+ k.status = KEY_PRESSED;
+ keyb_hook(k,start_game,FALSE);
+}
+
Index: demos/branches/xen/astro/makefile
===================================================================
--- demos/branches/xen/astro/makefile (nonexistent)
+++ demos/branches/xen/astro/makefile (revision 1684)
@@ -0,0 +1,16 @@
+#
+#
+#
+
+ifndef BASE
+BASE=../..
+endif
+include $(BASE)/config/config.mk
+
+PROGS= asteroid
+
+include $(BASE)/config/example.mk
+
+asteroid:
+ make -f $(SUBMAKE) APP=asteroid INIT= OTHEROBJS="initfile.o astro.o stat.o rock.o" SHARKOPT="__LINUXC26__ __PCI__ __INPUT__ __FB__"
+
Index: demos/branches/xen/mesademo/mesademo.c
===================================================================
--- demos/branches/xen/mesademo/mesademo.c (nonexistent)
+++ demos/branches/xen/mesademo/mesademo.c (revision 1684)
@@ -0,0 +1,386 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Giacomo Guidi <giacomo@gandalf.sssup.it>
+ *
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+#include <kernel/log.h>
+#include <kernel/kern.h>
+#include <math.h>
+#include <stdlib.h>
+
+#include <drivers/shark_fb26.h>
+#include <drivers/shark_keyb26.h>
+
+#include <GL/osmesa.h>
+#include <GL/glut.h>
+
+#ifndef M_PI
+#define M_PI 3.14159265
+#endif
+
+#define WIDTH 640
+#define HEIGHT 430
+#define BYTES_PP 2 //BytesPerPixel
+
+OSMesaContext ctx;
+
+extern void *video_memory;
+
+unsigned char *rgb_565_buf = NULL; //RGB 16 bpp Buffer
+unsigned char *video_buf = NULL; //Video Buffer
+
+unsigned long int VMEMLONG = WIDTH * HEIGHT * BYTES_PP / 4; // Used by copy_videomem_16to16
+unsigned long int RGB565MEM = WIDTH * HEIGHT * BYTES_PP; // Total video mem
+
+unsigned long int PERIOD_REFRESH = 100000;
+unsigned long int PERIOD_DISEGNA = 100000;
+
+unsigned long int WCET_REFRESH, WCET_DISEGNA;
+
+TASK refesh(void);
+TASK disegna(void);
+
+PID refresh_PID, disegna_PID;
+
+static void
+gear(GLfloat inner_radius, GLfloat outer_radius, GLfloat width,
+ GLint teeth, GLfloat tooth_depth)
+{
+ GLint i;
+ GLfloat r0, r1, r2;
+ GLfloat angle, da;
+ GLfloat u, v, len;
+
+ r0 = inner_radius;
+ r1 = outer_radius - tooth_depth / 2.0;
+ r2 = outer_radius + tooth_depth / 2.0;
+
+ da = 2.0 * M_PI / teeth / 4.0;
+
+ glShadeModel(GL_FLAT);
+
+ glNormal3f(0.0, 0.0, 1.0);
+
+ glBegin(GL_QUAD_STRIP);
+ for (i = 0; i <= teeth; i++) {
+ angle = i * 2.0 * M_PI / teeth;
+ glVertex3f(r0 * cos(angle), r0 * sin(angle), width * 0.5);
+ glVertex3f(r1 * cos(angle), r1 * sin(angle), width * 0.5);
+ if (i < teeth) {
+ glVertex3f(r0 * cos(angle), r0 * sin(angle), width * 0.5);
+ glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), width * 0.5);
+ }
+ }
+ glEnd();
+
+ glBegin(GL_QUADS);
+ da = 2.0 * M_PI / teeth / 4.0;
+ for (i = 0; i < teeth; i++) {
+ angle = i * 2.0 * M_PI / teeth;
+
+ glVertex3f(r1 * cos(angle), r1 * sin(angle), width * 0.5);
+ glVertex3f(r2 * cos(angle + da), r2 * sin(angle + da), width * 0.5);
+ glVertex3f(r2 * cos(angle + 2 * da), r2 * sin(angle + 2 * da), width * 0.5);
+ glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), width * 0.5);
+ }
+ glEnd();
+
+ glNormal3f(0.0, 0.0, -1.0);
+
+ glBegin(GL_QUAD_STRIP);
+ for (i = 0; i <= teeth; i++) {
+ angle = i * 2.0 * M_PI / teeth;
+ glVertex3f(r1 * cos(angle), r1 * sin(angle), -width * 0.5);
+ glVertex3f(r0 * cos(angle), r0 * sin(angle), -width * 0.5);
+ if (i < teeth) {
+ glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), -width * 0.5);
+ glVertex3f(r0 * cos(angle), r0 * sin(angle), -width * 0.5);
+ }
+ }
+ glEnd();
+
+ glBegin(GL_QUADS);
+ da = 2.0 * M_PI / teeth / 4.0;
+ for (i = 0; i < teeth; i++) {
+ angle = i * 2.0 * M_PI / teeth;
+
+ glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), -width * 0.5);
+ glVertex3f(r2 * cos(angle + 2 * da), r2 * sin(angle + 2 * da), -width * 0.5);
+ glVertex3f(r2 * cos(angle + da), r2 * sin(angle + da), -width * 0.5);
+ glVertex3f(r1 * cos(angle), r1 * sin(angle), -width * 0.5);
+ }
+ glEnd();
+
+ glBegin(GL_QUAD_STRIP);
+ for (i = 0; i < teeth; i++) {
+ angle = i * 2.0 * M_PI / teeth;
+
+ glVertex3f(r1 * cos(angle), r1 * sin(angle), width * 0.5);
+ glVertex3f(r1 * cos(angle), r1 * sin(angle), -width * 0.5);
+ u = r2 * cos(angle + da) - r1 * cos(angle);
+ v = r2 * sin(angle + da) - r1 * sin(angle);
+ len = sqrt(u * u + v * v);
+ u /= len;
+ v /= len;
+ glNormal3f(v, -u, 0.0);
+ glVertex3f(r2 * cos(angle + da), r2 * sin(angle + da), width * 0.5);
+ glVertex3f(r2 * cos(angle + da), r2 * sin(angle + da), -width * 0.5);
+ glNormal3f(cos(angle), sin(angle), 0.0);
+ glVertex3f(r2 * cos(angle + 2 * da), r2 * sin(angle + 2 * da), width * 0.5);
+ glVertex3f(r2 * cos(angle + 2 * da), r2 * sin(angle + 2 * da), -width * 0.5);
+ u = r1 * cos(angle + 3 * da) - r2 * cos(angle + 2 * da);
+ v = r1 * sin(angle + 3 * da) - r2 * sin(angle + 2 * da);
+ glNormal3f(v, -u, 0.0);
+ glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), width * 0.5);
+ glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), -width * 0.5);
+ glNormal3f(cos(angle), sin(angle), 0.0);
+ }
+
+ glVertex3f(r1 * cos(0), r1 * sin(0), width * 0.5);
+ glVertex3f(r1 * cos(0), r1 * sin(0), -width * 0.5);
+
+ glEnd();
+
+ glShadeModel(GL_SMOOTH);
+
+ glBegin(GL_QUAD_STRIP);
+ for (i = 0; i <= teeth; i++) {
+ angle = i * 2.0 * M_PI / teeth;
+ glNormal3f(-cos(angle), -sin(angle), 0.0);
+ glVertex3f(r0 * cos(angle), r0 * sin(angle), -width * 0.5);
+ glVertex3f(r0 * cos(angle), r0 * sin(angle), width * 0.5);
+ }
+ glEnd();
+
+}
+
+static GLfloat view_rotx = 20.0, view_roty = 30.0, view_rotz = 0.0;
+static GLint gear1, gear2, gear3;
+static GLfloat angle = 0.0;
+
+static void draw(void)
+{
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+
+ glPushMatrix();
+ glRotatef(view_rotx, 1.0, 0.0, 0.0);
+ glRotatef(view_roty, 0.0, 1.0, 0.0);
+ glRotatef(view_rotz, 0.0, 0.0, 1.0);
+
+ glPushMatrix();
+ glTranslatef(-3.0, -2.0, 0.0);
+ glRotatef(angle, 0.0, 0.0, 1.0);
+ glCallList(gear1);
+ glPopMatrix();
+
+ glPushMatrix();
+ glTranslatef(3.1, -2.0, 0.0);
+ glRotatef(-2.0 * angle - 9.0, 0.0, 0.0, 1.0);
+ glCallList(gear2);
+ glPopMatrix();
+
+ glPushMatrix();
+ glTranslatef(-3.1, 4.2, 0.0);
+ glRotatef(-2.0 * angle - 25.0, 0.0, 0.0, 1.0);
+ glCallList(gear3);
+ glPopMatrix();
+
+ glPopMatrix();
+
+ glFinish();
+
+}
+
+static void gl_init()
+{
+
+ static GLfloat red[4] = {1.0, 0.0, 0.0, 1.0};
+ static GLfloat green[4] = {0.0, 0.8, 0.2, 1.0};
+ static GLfloat blue[4] = {0.2, 0.2, 1.0, 1.0};
+ static GLfloat pos[4] = {5.0, 5.0, 10.0, 1.0};
+ static GLfloat h = (GLfloat) HEIGHT / (GLfloat) WIDTH;
+
+ //Create the OSMesa Context
+ ctx = OSMesaCreateContext(OSMESA_RGB_565, NULL);
+
+ //Make Current Context
+ OSMesaMakeCurrent(ctx, rgb_565_buf, GL_UNSIGNED_SHORT_5_6_5, WIDTH, HEIGHT);
+
+ glLightfv(GL_LIGHT0, GL_POSITION, pos);
+ glEnable(GL_CULL_FACE);
+ glEnable(GL_LIGHTING);
+ glEnable(GL_LIGHT0);
+ glEnable(GL_DEPTH_TEST);
+
+ /* make the gears */
+ gear1 = glGenLists(1);
+ glNewList(gear1, GL_COMPILE);
+ glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, red);
+ gear(1.0, 4.0, 1.0, 20, 0.7);
+ glEndList();
+
+ gear2 = glGenLists(1);
+ glNewList(gear2, GL_COMPILE);
+ glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, green);
+ gear(0.5, 2.0, 2.0, 10, 0.7);
+ glEndList();
+
+ gear3 = glGenLists(1);
+ glNewList(gear3, GL_COMPILE);
+ glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, blue);
+ gear(1.3, 2.0, 0.5, 10, 0.7);
+ glEndList();
+
+ glEnable(GL_NORMALIZE);
+
+ glViewport(0, 0, (GLint) WIDTH, (GLint) HEIGHT);
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+ glFrustum(-1.0, 1.0, -h, h, 5.0, 60.0);
+ glMatrixMode(GL_MODELVIEW);
+ glLoadIdentity();
+ glTranslatef(0.0, 0.0, -40.0);
+
+}
+
+void program_key_end(KEY_EVT *k)
+{
+
+ exit(0);
+
+}
+
+TASK refresh(void)
+{
+
+ while(1) {
+
+ task_testcancel();
+ memcpy((video_buf+40*WIDTH*2), rgb_565_buf, RGB565MEM);
+ task_endcycle();
+
+ }
+
+ exit(0);
+
+}
+
+
+TASK disegna(void)
+{
+
+ char text[100];
+ TIME disegna_TIME, refresh_TIME;
+
+ while(1) {
+
+ task_testcancel();
+
+ jet_gettable(refresh_PID, &refresh_TIME, 1);
+ jet_gettable(disegna_PID, &disegna_TIME, 1);
+
+ angle += 1.0;
+
+ draw();
+
+ sprintf(text,"Hard Task Refresh PER:%6d us EX:%6d us",(int)PERIOD_REFRESH,(int)refresh_TIME);
+ grx_text(text,10,5,color16(0,0,255),0);
+ sprintf(text,"Hard Task Draw PER:%6d us EX:%6d us",(int)PERIOD_DISEGNA,(int)disegna_TIME);
+ grx_text(text,10,15,color16(0,0,255),0);
+
+ task_endcycle();
+
+ }
+
+ exit(0);
+
+}
+
+int main (int argc, char *argv[])
+{
+
+ HARD_TASK_MODEL ht_refresh, ht_disegna;
+
+ WCET_REFRESH =((long int) PERIOD_REFRESH * (0.30));
+ WCET_DISEGNA =((long int) PERIOD_DISEGNA * (0.55));
+
+ hard_task_default_model(ht_refresh);
+ hard_task_def_wcet(ht_refresh,WCET_REFRESH);
+ hard_task_def_mit(ht_refresh,PERIOD_REFRESH);
+ hard_task_def_usemath(ht_refresh);
+ hard_task_def_group(ht_refresh,1);
+ hard_task_def_ctrl_jet(ht_refresh);
+
+ refresh_PID = task_create("refresh", refresh, &ht_refresh, NULL);
+ if (refresh_PID == -1) {
+ exit(0);
+ }
+
+ hard_task_default_model(ht_disegna);
+ hard_task_def_mit(ht_disegna,PERIOD_DISEGNA);
+ hard_task_def_wcet(ht_disegna,WCET_DISEGNA);
+ hard_task_def_group(ht_disegna,1);
+ hard_task_def_ctrl_jet(ht_disegna);
+ hard_task_def_usemath(ht_disegna);
+ hard_task_def_stack(ht_disegna,30000); //VERY IMPORTANT FOR glCallList !!
+
+ disegna_PID = task_create("disegna", disegna, &ht_disegna, NULL);
+ if (disegna_PID == -1) {
+ exit(0);
+ }
+
+ {
+ KEY_EVT k;
+ k.flag = CNTL_BIT;
+ k.scan = KEY_C;
+ k.ascii = 'c';
+ k.status = KEY_PRESSED;
+ keyb_hook(k, program_key_end, FALSE);
+
+ k.flag = CNTR_BIT;
+ k.status = KEY_PRESSED;
+ keyb_hook(k, program_key_end, FALSE);
+ }
+
+ rgb_565_buf = malloc(RGB565MEM);
+ video_buf = (unsigned char *)video_memory;
+
+ gl_init();
+
+ memset(rgb_565_buf, 0, RGB565MEM);
+
+ group_activate(1);
+
+ return 0;
+
+}
Index: demos/branches/xen/mesademo/initfile.c
===================================================================
--- demos/branches/xen/mesademo/initfile.c (nonexistent)
+++ demos/branches/xen/mesademo/initfile.c (revision 1684)
@@ -0,0 +1,202 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Giacomo Guidi <giacomo@gandalf.sssup.it>
+ * Tullio Facchinetti <tullio.facchinetti@unipv.it>
+ * (see the web pages for full authors list)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/*
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+#include "kernel/kern.h"
+#include "intdrive/intdrive/intdrive.h"
+#include "edf/edf/edf.h"
+#include "hardcbs/hardcbs/hardcbs.h"
+#include "rr/rr/rr.h"
+#include "dummy/dummy/dummy.h"
+
+#include "sem/sem/sem.h"
+#include "hartport/hartport/hartport.h"
+#include "cabs/cabs/cabs.h"
+
+#include <drivers/shark_linuxc26.h>
+#include <drivers/shark_pci26.h>
+#include <drivers/shark_input26.h>
+#include <drivers/shark_keyb26.h>
+#include <drivers/shark_fb26.h>
+
+#define FRAME_BUFFER_DEVICE 0
+
+/*+ sysyem tick in us +*/
+#define TICK 0
+
+/*+ RR tick in us +*/
+#define RRTICK 10000
+
+/*+ Interrupt Server +*/
+#define INTDRIVE_Q 1000
+#define INTDRIVE_U 0.1*MAX_BANDWIDTH
+#define INTDRIVE_FLAG 0
+
+void call_shutdown_task(void *arg);
+int device_drivers_init();
+int device_drivers_close();
+void set_shutdown_task();
+TASK shutdown_task_body(void *arg);
+
+PID shutdown_task_PID = -1;
+
+TIME __kernel_register_levels__(void *arg)
+{
+ struct multiboot_info *mb = (struct multiboot_info *)arg;
+ LEVEL EDF_level;
+
+ INTDRIVE_register_level(INTDRIVE_Q, INTDRIVE_Q, INTDRIVE_U, INTDRIVE_FLAG);
+ EDF_level = EDF_register_level(EDF_ENABLE_ALL);
+ HCBS_register_level(HCBS_ENABLE_ALL, EDF_level);
+ RR_register_level(RRTICK, RR_MAIN_YES, mb);
+ dummy_register_level();
+
+ SEM_register_module();
+
+ CABS_register_module();
+
+ return TICK;
+}
+
+TASK __init__(void *arg)
+{
+ struct multiboot_info *mb = (struct multiboot_info *)arg;
+
+ HARTPORT_init();
+
+ /* Create the shutdown task. It will be activated at RUNLEVEL
+ SHUTDOWN */
+ set_shutdown_task();
+
+ /* Init the drivers */
+ device_drivers_init();
+
+ /* Set the shutdown task activation */
+ sys_atrunlevel(call_shutdown_task, NULL, RUNLEVEL_SHUTDOWN);
+
+ __call_main__(mb);
+
+ return (void *)0;
+}
+
+void set_shutdown_task() {
+
+ /* WARNING: the shutdown task is a background thread. It cannot execute
+ if the system is overloaded */
+ NRT_TASK_MODEL nrt;
+
+ nrt_task_default_model(nrt);
+ nrt_task_def_system(nrt);
+
+ shutdown_task_PID = task_create("Shutdown Task",shutdown_task_body,&nrt,NULL);
+ if (shutdown_task_PID == NIL) {
+ sys_shutdown_message("Error: Cannot create shutdown task\n");
+ exit(0);
+ }
+
+}
+
+int device_drivers_init() {
+
+ int res;
+ KEYB_PARMS kparms = BASE_KEYB;
+
+ LINUXC26_register_module(TRUE);
+
+ PCI26_init();
+
+ INPUT26_init();
+
+ keyb_def_ctrlC(kparms, NULL);
+
+ KEYB26_init(&kparms);
+
+ FB26_init();
+
+ res = FB26_open(FRAME_BUFFER_DEVICE);
+ if (res) {
+ cprintf("Error: Cannot open graphical mode\n");
+ KEYB26_close();
+ INPUT26_close();
+ exit(0);
+ }
+
+ FB26_use_grx(FRAME_BUFFER_DEVICE);
+
+ FB26_setmode(FRAME_BUFFER_DEVICE,"640x480-16");
+
+ return 0;
+
+}
+
+int device_drivers_close() {
+
+ FB26_close(FRAME_BUFFER_DEVICE);
+
+ KEYB26_close();
+
+ INPUT26_close();
+
+ return 0;
+
+}
+
+#define SHUTDOWN_TIMEOUT_SEC 3
+
+void call_shutdown_task(void *arg)
+{
+ struct timespec t;
+
+ sys_gettime(&t);
+ t.tv_sec += SHUTDOWN_TIMEOUT_SEC;
+
+ /* Emergency timeout to exit from RUNLEVEL_SHUTDOWN */
+ kern_event_post(&t,(void *)((void *)sys_abort_shutdown),(void *)0);
+
+ task_activate(shutdown_task_PID);
+}
+
+TASK shutdown_task_body(void *arg) {
+
+ device_drivers_close();
+
+ sys_shutdown_message("-- S.Ha.R.K. Closed --\n");
+
+ return NULL;
+
+}
+
+
Index: demos/branches/xen/mesademo/makefile
===================================================================
--- demos/branches/xen/mesademo/makefile (nonexistent)
+++ demos/branches/xen/mesademo/makefile (revision 1684)
@@ -0,0 +1,16 @@
+#
+#
+#
+
+ifndef BASE
+BASE=../..
+endif
+include $(BASE)/config/config.mk
+
+PROGS = mesademo
+
+include $(BASE)/config/example.mk
+
+mesademo:
+ make -f $(SUBMAKE) APP=mesademo INIT= OTHEROBJS="initfile.o" SHARKOPT="__OSMESA__ __LINUXC26__ __PCI__ __INPUT__ __FB__"
+
Index: demos/branches/xen/mesademo/readme.txt
===================================================================
--- demos/branches/xen/mesademo/readme.txt (nonexistent)
+++ demos/branches/xen/mesademo/readme.txt (revision 1684)
@@ -0,0 +1,25 @@
+--------------------------------------
+MESA Demo (gears)
+
+by
+
+Giacomo Guidi <giacomo@gandalf.sssup.it>
+
+Last update 17/03/2003
+--------------------------------------
+
+This is a simple test demo for the MESA (5.0)
+libraries, the low level graphic drivers is
+the Linux 2.6 Frame Buffer Driver
+
+--------------------------------------
+
+The demo is composed by:
+
+MAKEFILE The makefile used to compile the application
+README.TXT This file
+INITFILE.C The init file
+MESADEMO.C The MESA Demo
+
+--------------------------------------
+
Index: demos/branches/xen/servo/load.c
===================================================================
--- demos/branches/xen/servo/load.c (nonexistent)
+++ demos/branches/xen/servo/load.c (revision 1684)
@@ -0,0 +1,76 @@
+/*
+ * Project: S.Ha.R.K
+ *
+ * Coordinators: Giorgio Buttazzo <giorgio@sssup.it>
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://hartik.sssup.it
+ */
+
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+#include "kernel/kern.h"
+#include "drivers/shark_keyb26.h"
+#include "unistd.h"
+
+#include "servo.h"
+
+#define N_SEND 10000
+
+int main () {
+
+ int res, i = 0, k;
+
+ srand(sys_gettime(NULL));
+
+ cprintf("(Open Com2)");
+ res = servo_open(COM2, 19200);
+ cprintf("(Res = %d)",res);
+
+ cprintf("(Servo Turn On 0)");
+ res = servo_turn_on(COM2, 0);
+ cprintf("(Res = %d)",res);
+
+ while(i < N_SEND) {
+
+ cprintf("(Cycle = %d)",i);
+
+ k = rand() % 180 - 90;
+
+ cprintf("(Set Servo 0 %d)",k);
+ res = servo_set_angle_sec(COM2, 0, ANGLE2SEC(k,0,0));
+ cprintf("(Res = %d)",res);
+
+ udelay(100000);
+
+ i++;
+
+ }
+
+ servo_close(COM2);
+
+ exit(0);
+
+ return 0;
+
+}
+
Index: demos/branches/xen/servo/initfile.c
===================================================================
--- demos/branches/xen/servo/initfile.c (nonexistent)
+++ demos/branches/xen/servo/initfile.c (revision 1684)
@@ -0,0 +1,172 @@
+/*
+ * Project: S.Ha.R.K
+ *
+ * Coordinators: Giorgio Buttazzo <giorgio@sssup.it>
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * Authors:
+ * ...
+ * Tullio Facchinetti <tullio.facchinetti@unipv.it>
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://hartik.sssup.it
+ */
+
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+#include "kernel/kern.h"
+#include "edf/edf/edf.h"
+#include "cbs/cbs/cbs.h"
+#include "rr/rr/rr.h"
+#include "dummy/dummy/dummy.h"
+#include "intdrive/intdrive/intdrive.h"
+
+#include "sem/sem/sem.h"
+#include "hartport/hartport/hartport.h"
+
+#include <drivers/shark_linuxc26.h>
+#include <drivers/shark_input26.h>
+#include <drivers/shark_keyb26.h>
+
+#define FRAME_BUFFER_DEVICE 0
+
+/*+ sysyem tick in us +*/
+#define TICK 0
+
+/*+ RR tick in us +*/
+#define RRTICK 10000
+
+/*+ Interrupt Server +*/
+#define INTDRIVE_Q 1000
+#define INTDRIVE_U 0.1*MAX_BANDWIDTH
+#define INTDRIVE_FLAG 0
+
+void call_shutdown_task(void *arg);
+int device_drivers_init();
+int device_drivers_close();
+void set_shutdown_task();
+TASK shutdown_task_body(void *arg);
+
+PID shutdown_task_PID = -1;
+
+TIME __kernel_register_levels__(void *arg)
+{
+ struct multiboot_info *mb = (struct multiboot_info *)arg;
+ LEVEL EDF_level;
+
+ INTDRIVE_register_level(INTDRIVE_Q, INTDRIVE_Q, INTDRIVE_U, INTDRIVE_FLAG);
+ EDF_level = EDF_register_level(EDF_ENABLE_ALL);
+ CBS_register_level(CBS_ENABLE_ALL, EDF_level);
+ RR_register_level(RRTICK, RR_MAIN_YES, mb);
+ dummy_register_level();
+
+ SEM_register_module();
+
+ return TICK;
+}
+
+TASK __init__(void *arg)
+{
+ struct multiboot_info *mb = (struct multiboot_info *)arg;
+
+ HARTPORT_init();
+
+ /* Create the shutdown task. It will be activated at RUNLEVEL
+ SHUTDOWN */
+ set_shutdown_task();
+
+ /* Init the drivers */
+ device_drivers_init();
+
+ /* Set the shutdown task activation */
+ sys_atrunlevel(call_shutdown_task, NULL, RUNLEVEL_SHUTDOWN);
+
+ __call_main__(mb);
+
+ return (void *)0;
+}
+
+void set_shutdown_task() {
+
+ /* WARNING: the shutdown task is a background thread. It cannot execute
+ if the system is overloaded */
+ NRT_TASK_MODEL nrt;
+
+ nrt_task_default_model(nrt);
+ nrt_task_def_system(nrt);
+
+ shutdown_task_PID = task_create("Shutdown Task",shutdown_task_body,&nrt,NULL);
+ if (shutdown_task_PID == NIL) {
+ sys_shutdown_message("Error: Cannot create shutdown task\n");
+ exit(1);
+ }
+
+}
+
+int device_drivers_init() {
+
+ KEYB_PARMS kparms = BASE_KEYB;
+
+ LINUXC26_register_module(TRUE);
+
+ INPUT26_init();
+
+ //keyb_def_ctrlC(kparms, NULL);
+
+ KEYB26_init(&kparms);
+
+ return 0;
+
+}
+
+int device_drivers_close() {
+
+ KEYB26_close();
+
+ INPUT26_close();
+
+ return 0;
+
+}
+
+#define SHUTDOWN_TIMEOUT_SEC 3
+
+void call_shutdown_task(void *arg)
+{
+ struct timespec t;
+
+ sys_gettime(&t);
+ t.tv_sec += SHUTDOWN_TIMEOUT_SEC;
+
+ /* Emergency timeout to exit from RUNLEVEL_SHUTDOWN */
+ kern_event_post(&t,(void *)((void *)sys_abort_shutdown),(void *)0);
+
+ task_activate(shutdown_task_PID);
+}
+
+TASK shutdown_task_body(void *arg) {
+
+ device_drivers_close();
+
+ sys_shutdown_message("-- S.Ha.R.K. Closed --\n");
+
+ return NULL;
+
+}
/demos/branches/xen/servo/initfile.c
Property changes:
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: demos/branches/xen/servo/makefile
===================================================================
--- demos/branches/xen/servo/makefile (nonexistent)
+++ demos/branches/xen/servo/makefile (revision 1684)
@@ -0,0 +1,15 @@
+#
+#
+#
+
+ifndef BASE
+BASE=../..
+endif
+include $(BASE)/config/config.mk
+
+PROGS = load
+
+include $(BASE)/config/example.mk
+
+load:
+ make -f $(SUBMAKE) APP=load INIT= OTHEROBJS="initfile.o" OTHERINCL= SHARKOPT="__LINUXC26__ __INPUT__ __SERVO__"
/demos/branches/xen/servo/makefile
Property changes:
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: demos/branches/xen/servo/README
===================================================================
--- demos/branches/xen/servo/README (nonexistent)
+++ demos/branches/xen/servo/README (revision 1684)
@@ -0,0 +1,2 @@
+TODO
+
Index: demos/branches/xen/mesatex/mesatex.c
===================================================================
--- demos/branches/xen/mesatex/mesatex.c (nonexistent)
+++ demos/branches/xen/mesatex/mesatex.c (revision 1684)
@@ -0,0 +1,391 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Giacomo Guidi <giacomo@gandalf.sssup.it>
+ *
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+#include <GL/osmesa.h>
+#include <GL/glut.h>
+
+#include <math.h>
+#include <stdlib.h>
+#include <assert.h>
+#include <kernel/log.h>
+#include <kernel/kern.h>
+
+#include <drivers/shark_fb26.h>
+#include <drivers/shark_keyb26.h>
+
+#ifndef M_PI
+#define M_PI 3.14159265
+#endif
+
+#define WIDTH 640
+#define HEIGHT 430
+#define BYTES_PP 2 //BytesPerPixel
+
+OSMesaContext ctx;
+
+static GLuint TexObj[2];
+static GLfloat Angle = 0.0f;
+static GLboolean UseObj = GL_FALSE;
+
+extern void *video_memory;
+
+#if defined(GL_VERSION_1_1) || defined(GL_VERSION_1_2)
+# define TEXTURE_OBJECT 1
+#elif defined(GL_EXT_texture_object)
+# define TEXTURE_OBJECT 1
+# define glBindTexture(A,B) glBindTextureEXT(A,B)
+# define glGenTextures(A,B) glGenTexturesEXT(A,B)
+# define glDeleteTextures(A,B) glDeleteTexturesEXT(A,B)
+#endif
+
+unsigned char *rgb_565_buf = NULL; //RGB 16 bpp Buffer
+unsigned char *video_buf = NULL; //Video Buffer
+
+unsigned long int RGB565MEM = WIDTH * HEIGHT * BYTES_PP; // Total video mem
+
+unsigned long int PERIOD_REFRESH = 30000;
+unsigned long int PERIOD_DISEGNA = 30000;
+
+unsigned long int WCET_REFRESH, WCET_DISEGNA;
+
+TASK refesh(void);
+TASK disegna(void);
+
+PID refresh_PID, disegna_PID;
+
+static void draw( void )
+{
+ glDepthFunc(GL_EQUAL);
+ /* glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );*/
+ glClear( GL_COLOR_BUFFER_BIT );
+
+ glColor3f( 1.0, 1.0, 1.0 );
+
+ /* draw first polygon */
+ glPushMatrix();
+ glTranslatef( -1.0, 0.0, 0.0 );
+ glRotatef( Angle, 0.0, 0.0, 1.0 );
+ if (UseObj) {
+#ifdef TEXTURE_OBJECT
+ glBindTexture( GL_TEXTURE_2D, TexObj[0] );
+#endif
+ }
+ else {
+ glCallList( TexObj[0] );
+ }
+ glBegin( GL_POLYGON );
+ glTexCoord2f( 0.0, 0.0 ); glVertex2f( -1.0, -1.0 );
+ glTexCoord2f( 1.0, 0.0 ); glVertex2f( 1.0, -1.0 );
+ glTexCoord2f( 1.0, 1.0 ); glVertex2f( 1.0, 1.0 );
+ glTexCoord2f( 0.0, 1.0 ); glVertex2f( -1.0, 1.0 );
+ glEnd();
+ glPopMatrix();
+
+ /* draw second polygon */
+ glPushMatrix();
+ glTranslatef( 1.0, 0.0, 0.0 );
+ glRotatef( Angle-90.0, 0.0, 1.0, 0.0 );
+ if (UseObj) {
+#ifdef TEXTURE_OBJECT
+ glBindTexture( GL_TEXTURE_2D, TexObj[1] );
+#endif
+ }
+ else {
+ glCallList( TexObj[1] );
+ }
+ glBegin( GL_POLYGON );
+ glTexCoord2f( 0.0, 0.0 ); glVertex2f( -1.0, -1.0 );
+ glTexCoord2f( 1.0, 0.0 ); glVertex2f( 1.0, -1.0 );
+ glTexCoord2f( 1.0, 1.0 ); glVertex2f( 1.0, 1.0 );
+ glTexCoord2f( 0.0, 1.0 ); glVertex2f( -1.0, 1.0 );
+ glEnd();
+ glPopMatrix();
+
+}
+
+static void gl_init()
+{
+
+ static int twidth=8, theight=8;
+ static GLubyte tex1[] = {
+ 0, 0, 0, 1, 1, 1, 0, 0,
+ 0, 0, 1, 0, 0, 0, 0, 0,
+ 0, 0, 1, 0, 0, 0, 0, 0,
+ 0, 0, 1, 0, 0, 0, 0, 0,
+ 0, 0, 1, 0, 0, 0, 0, 0,
+ 0, 0, 1, 0, 0, 0, 0, 0,
+ 0, 0, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1, 1, 1, 0, 0 };
+
+ static GLubyte tex2[] = {
+ 0, 0, 0, 2, 2, 2, 0, 0,
+ 0, 0, 2, 0, 0, 0, 0, 0,
+ 0, 0, 2, 0, 0, 0, 0, 0,
+ 0, 0, 0, 2, 0, 0, 0, 0,
+ 0, 0, 0, 0, 2, 0, 0, 0,
+ 0, 0, 0, 0, 0, 2, 0, 0,
+ 0, 0, 0, 0, 0, 2, 0, 0,
+ 0, 0, 2, 2, 2, 0, 0, 0 };
+
+ GLubyte tex[64][3];
+ GLint i, j;
+
+ //Create the OSMesa Context
+ ctx = OSMesaCreateContext(OSMESA_RGB_565, NULL);
+
+ //Make Current Context
+ OSMesaMakeCurrent(ctx, rgb_565_buf, GL_UNSIGNED_SHORT_5_6_5, WIDTH, HEIGHT);
+
+ UseObj = GL_TRUE;
+
+ glDisable( GL_DITHER );
+
+ /* Setup texturing */
+ glEnable( GL_TEXTURE_2D );
+ glTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL );
+ glHint( GL_PERSPECTIVE_CORRECTION_HINT, GL_FASTEST );
+
+ /* generate texture object IDs */
+ if (UseObj) {
+#ifdef TEXTURE_OBJECT
+ glGenTextures( 2, TexObj );
+#endif
+ }
+ else {
+ TexObj[0] = glGenLists(2);
+ TexObj[1] = TexObj[0]+1;
+ }
+
+ /* setup first texture object */
+ if (UseObj) {
+#ifdef TEXTURE_OBJECT
+ glBindTexture( GL_TEXTURE_2D, TexObj[0] );
+ assert(glIsTexture(TexObj[0]));
+#endif
+ }
+ else {
+ glNewList( TexObj[0], GL_COMPILE );
+ }
+ /* red on white */
+ for (i=0;i<theight;i++) {
+ for (j=0;j<twidth;j++) {
+ int p = i*twidth+j;
+ if (tex1[(theight-i-1)*twidth+j]) {
+ tex[p][0] = 255; tex[p][1] = 0; tex[p][2] = 0;
+ }
+ else {
+ tex[p][0] = 255; tex[p][1] = 255; tex[p][2] = 255;
+ }
+ }
+ }
+
+ glTexImage2D( GL_TEXTURE_2D, 0, 3, twidth, theight, 0,
+ GL_RGB, GL_UNSIGNED_BYTE, tex );
+ glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST );
+ glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST );
+ glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT );
+ glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT );
+ if (!UseObj) {
+ glEndList();
+ }
+ /* end of texture object */
+
+ /* setup second texture object */
+ if (UseObj) {
+#ifdef TEXTURE_OBJECT
+ glBindTexture( GL_TEXTURE_2D, TexObj[1] );
+ assert(glIsTexture(TexObj[1]));
+#endif
+ assert(!glIsTexture(TexObj[1] + 999));
+ }
+ else {
+ glNewList( TexObj[1], GL_COMPILE );
+ }
+ /* green on blue */
+ for (i=0;i<theight;i++) {
+ for (j=0;j<twidth;j++) {
+ int p = i*twidth+j;
+ if (tex2[(theight-i-1)*twidth+j]) {
+ tex[p][0] = 0; tex[p][1] = 255; tex[p][2] = 0;
+ }
+ else {
+ tex[p][0] = 0; tex[p][1] = 0; tex[p][2] = 255;
+ }
+ }
+ }
+ glTexImage2D( GL_TEXTURE_2D, 0, 3, twidth, theight, 0,
+ GL_RGB, GL_UNSIGNED_BYTE, tex );
+ glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST );
+ glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST );
+ glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT );
+ glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT );
+ if (!UseObj) {
+ glEndList();
+ }
+ /* end texture object */
+
+ glViewport(0, 0, (GLint)WIDTH, (GLint)HEIGHT);
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+ /* glOrtho( -3.0, 3.0, -3.0, 3.0, -10.0, 10.0 );*/
+ glFrustum( -2.0, 2.0, 2.0, -2.0, 6.0, 20.0 );
+ glMatrixMode(GL_MODELVIEW);
+ glLoadIdentity();
+ glTranslatef( 0.0, 0.0, -8.0 );
+
+}
+
+void program_end(void *arg)
+{
+
+ OSMesaDestroyContext(ctx);
+ free(rgb_565_buf);
+
+ exit(0);
+
+}
+
+void program_key_end(KEY_EVT *k)
+{
+
+ exit(0);
+
+}
+
+TASK refresh(void)
+{
+
+ while(1) {
+
+ memcpy((video_buf+40*WIDTH*2), rgb_565_buf, RGB565MEM);
+ task_endcycle();
+
+ }
+
+ exit(0);
+
+}
+
+
+TASK disegna(void)
+{
+
+ char text[100];
+ TIME disegna_TIME, refresh_TIME;
+
+ while(1) {
+
+ jet_gettable(refresh_PID, &refresh_TIME, 1);
+ jet_gettable(disegna_PID, &disegna_TIME, 1);
+
+ Angle += 2.0;
+
+ draw();
+
+ sprintf(text,"Hard Task Refresh PER:%6d us EX:%6d us",(int)PERIOD_REFRESH,(int)refresh_TIME);
+ grx_text(text,10,5,rgb16(0,0,255),0);
+ sprintf(text,"Hard Task Draw PER:%6d us EX:%6d us",(int)PERIOD_DISEGNA,(int)disegna_TIME);
+ grx_text(text,10,15,rgb16(0,0,255),0);
+
+ task_endcycle();
+
+ }
+
+ exit(0);
+
+}
+
+int main (int argc, char *argv[])
+{
+
+ HARD_TASK_MODEL ht_refresh, ht_disegna;
+
+ clear();
+
+ WCET_REFRESH =((long int) PERIOD_REFRESH * (0.45));
+ WCET_DISEGNA =((long int) PERIOD_DISEGNA * (0.45));
+
+ hard_task_default_model(ht_refresh);
+ hard_task_def_wcet(ht_refresh,WCET_REFRESH);
+ hard_task_def_mit(ht_refresh,PERIOD_REFRESH);
+ hard_task_def_usemath(ht_refresh);
+ hard_task_def_group(ht_refresh,1);
+ hard_task_def_ctrl_jet(ht_refresh);
+
+ refresh_PID = task_create("refresh", refresh, &ht_refresh, NULL);
+ if (refresh_PID == -1) {
+ exit(4);
+ }
+
+ hard_task_default_model(ht_disegna);
+ hard_task_def_mit(ht_disegna,PERIOD_DISEGNA);
+ hard_task_def_wcet(ht_disegna,WCET_DISEGNA);
+ hard_task_def_group(ht_disegna,1);
+ hard_task_def_ctrl_jet(ht_disegna);
+ hard_task_def_usemath(ht_disegna);
+ hard_task_def_stack(ht_disegna,30000);
+
+ disegna_PID = task_create("disegna", disegna, &ht_disegna, NULL);
+ if (disegna_PID == -1) {
+ exit(4);
+ }
+
+ {
+ KEY_EVT k;
+ k.flag = CNTL_BIT;
+ k.scan = KEY_C;
+ k.ascii = 'c';
+ k.status = KEY_PRESSED;
+ keyb_hook(k, program_key_end, FALSE);
+
+ k.flag = CNTR_BIT;
+ k.status = KEY_PRESSED;
+ keyb_hook(k, program_key_end, FALSE);
+ }
+
+ rgb_565_buf = malloc(RGB565MEM);
+
+ gl_init();
+
+ video_buf = (unsigned char *)video_memory;
+ //video_buf = (unsigned char *)malloc(640*480*2);
+
+ memset(rgb_565_buf, 0, RGB565MEM);
+
+ group_activate(1);
+
+ return 0;
+
+}
Index: demos/branches/xen/mesatex/initfile.c
===================================================================
--- demos/branches/xen/mesatex/initfile.c (nonexistent)
+++ demos/branches/xen/mesatex/initfile.c (revision 1684)
@@ -0,0 +1,202 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Giacomo Guidi <giacomo@gandalf.sssup.it>
+ * Tullio Facchinetti <tullio.facchinetti@unipv.it>
+ * (see the web pages for full authors list)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/*
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+#include "kernel/kern.h"
+#include "intdrive/intdrive/intdrive.h"
+#include "edf/edf/edf.h"
+#include "hardcbs/hardcbs/hardcbs.h"
+#include "rr/rr/rr.h"
+#include "dummy/dummy/dummy.h"
+
+#include "sem/sem/sem.h"
+#include "hartport/hartport/hartport.h"
+#include "cabs/cabs/cabs.h"
+
+#include <drivers/shark_linuxc26.h>
+#include <drivers/shark_pci26.h>
+#include <drivers/shark_input26.h>
+#include <drivers/shark_keyb26.h>
+#include <drivers/shark_fb26.h>
+
+#define FRAME_BUFFER_DEVICE 0
+
+/*+ sysyem tick in us +*/
+#define TICK 0
+
+/*+ RR tick in us +*/
+#define RRTICK 10000
+
+/*+ Interrupt Server +*/
+#define INTDRIVE_Q 1000
+#define INTDRIVE_U 0.1*MAX_BANDWIDTH
+#define INTDRIVE_FLAG 0
+
+void call_shutdown_task(void *arg);
+int device_drivers_init();
+int device_drivers_close();
+void set_shutdown_task();
+TASK shutdown_task_body(void *arg);
+
+PID shutdown_task_PID = -1;
+
+TIME __kernel_register_levels__(void *arg)
+{
+ struct multiboot_info *mb = (struct multiboot_info *)arg;
+ LEVEL EDF_level;
+
+ INTDRIVE_register_level(INTDRIVE_Q, INTDRIVE_Q, INTDRIVE_U, INTDRIVE_FLAG);
+ EDF_level = EDF_register_level(EDF_ENABLE_ALL);
+ HCBS_register_level(HCBS_ENABLE_ALL, EDF_level);
+ RR_register_level(RRTICK, RR_MAIN_YES, mb);
+ dummy_register_level();
+
+ SEM_register_module();
+
+ CABS_register_module();
+
+ return TICK;
+}
+
+TASK __init__(void *arg)
+{
+ struct multiboot_info *mb = (struct multiboot_info *)arg;
+
+ HARTPORT_init();
+
+ /* Create the shutdown task. It will be activated at RUNLEVEL
+ SHUTDOWN */
+ set_shutdown_task();
+
+ /* Init the drivers */
+ device_drivers_init();
+
+ /* Set the shutdown task activation */
+ sys_atrunlevel(call_shutdown_task, NULL, RUNLEVEL_SHUTDOWN);
+
+ __call_main__(mb);
+
+ return (void *)0;
+}
+
+void set_shutdown_task() {
+
+ /* WARNING: the shutdown task is a background thread. It cannot execute
+ if the system is overloaded */
+ NRT_TASK_MODEL nrt;
+
+ nrt_task_default_model(nrt);
+ nrt_task_def_system(nrt);
+
+ shutdown_task_PID = task_create("Shutdown Task",shutdown_task_body,&nrt,NULL);
+ if (shutdown_task_PID == NIL) {
+ sys_shutdown_message("Error: Cannot create shutdown task\n");
+ exit(1);
+ }
+
+}
+
+int device_drivers_init() {
+
+ int res;
+ KEYB_PARMS kparms = BASE_KEYB;
+
+ LINUXC26_register_module(TRUE);
+
+ PCI26_init();
+
+ INPUT26_init();
+
+ keyb_def_ctrlC(kparms, NULL);
+
+ KEYB26_init(&kparms);
+
+ FB26_init();
+
+ res = FB26_open(FRAME_BUFFER_DEVICE);
+ if (res) {
+ cprintf("Error: Cannot open graphical mode\n");
+ KEYB26_close();
+ INPUT26_close();
+ exit(1);
+ }
+
+ FB26_use_grx(FRAME_BUFFER_DEVICE);
+
+ FB26_setmode(FRAME_BUFFER_DEVICE,"640x480-16");
+
+ return 0;
+
+}
+
+int device_drivers_close() {
+
+ FB26_close(FRAME_BUFFER_DEVICE);
+
+ KEYB26_close();
+
+ INPUT26_close();
+
+ return 0;
+
+}
+
+#define SHUTDOWN_TIMEOUT_SEC 3
+
+void call_shutdown_task(void *arg)
+{
+ struct timespec t;
+
+ sys_gettime(&t);
+ t.tv_sec += SHUTDOWN_TIMEOUT_SEC;
+
+ /* Emergency timeout to exit from RUNLEVEL_SHUTDOWN */
+ kern_event_post(&t,(void *)((void *)sys_abort_shutdown),(void *)0);
+
+ task_activate(shutdown_task_PID);
+}
+
+TASK shutdown_task_body(void *arg) {
+
+ device_drivers_close();
+
+ sys_shutdown_message("-- S.Ha.R.K. Closed --\n");
+
+ return NULL;
+
+}
+
+
Index: demos/branches/xen/mesatex/makefile
===================================================================
--- demos/branches/xen/mesatex/makefile (nonexistent)
+++ demos/branches/xen/mesatex/makefile (revision 1684)
@@ -0,0 +1,16 @@
+#
+#
+#
+
+ifndef BASE
+BASE=../..
+endif
+include $(BASE)/config/config.mk
+
+PROGS = mesatex
+
+include $(BASE)/config/example.mk
+
+mesatex:
+ make -f $(SUBMAKE) APP=mesatex INIT= OTHEROBJS="initfile.o" SHARKOPT="__LINUXC26__ __PCI__ __INPUT__ __FB__ __OSMESA__"
+
Index: demos/branches/xen/mesatex/readme.txt
===================================================================
--- demos/branches/xen/mesatex/readme.txt (nonexistent)
+++ demos/branches/xen/mesatex/readme.txt (revision 1684)
@@ -0,0 +1,44 @@
+--------------------------------------
+MESA Demo (tex)
+
+by
+
+Giacomo Guidi <giacomo@gandalf.sssup.it>
+
+Last update 17/03/2003
+--------------------------------------
+
+This is a simple test demo for the MESA (5.0)
+libraries, the low level graphic drivers is
+the SVGA (from the SVGAlib)
+
+See drivers/svga/readme for supported cards
+
+--------------------------------------
+
+The demo is composed by:
+
+MAKEFILE The makefile used to compile the application
+README.TXT This file
+INITFILE.C The init file
+MESATEX.C The MESA Demo
+
+--------------------------------------
+
+- To specify your card change the line
+
+#define CARD <driver name>
+
+- The demo calls the grx and off-screen Mesa functions.
+The resolution must be 16 bitsperpixel (64K colors) and
+the graphic access mode must be linear.
+
+- There are two buffers
+
+ The video buffer (video_buf)
+ The virtual buffer (rgb_565_buf)
+
+ copy_videomem_16to16 links these buffers
+
+
+
Index: demos/branches/xen/base/initfile.c
===================================================================
--- demos/branches/xen/base/initfile.c (nonexistent)
+++ demos/branches/xen/base/initfile.c (revision 1684)
@@ -0,0 +1,184 @@
+/*
+ * Project: S.Ha.R.K
+ *
+ * Coordinators: Giorgio Buttazzo <giorgio@sssup.it>
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * Authors:
+ * ...
+ * Tullio Facchinetti <tullio.facchinetti@unipv.it>
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://hartik.sssup.it
+ */
+
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+#include "kernel/kern.h"
+#include "edf/edf/edf.h"
+#include "cbs/cbs/cbs.h"
+#include "rr/rr/rr.h"
+#include "dummy/dummy/dummy.h"
+#include "intdrive/intdrive/intdrive.h"
+
+#include "sem/sem/sem.h"
+#include "hartport/hartport/hartport.h"
+
+#include "pi/pi/pi.h"
+#include "pc/pc/pc.h"
+#include "srp/srp/srp.h"
+#include "npp/npp/npp.h"
+#include "nop/nop/nop.h"
+
+#include <drivers/shark_linuxc26.h>
+#include <drivers/shark_input26.h>
+#include <drivers/shark_keyb26.h>
+
+#define FRAME_BUFFER_DEVICE 0
+
+/*+ sysyem tick in us +*/
+#define TICK 0
+
+/*+ RR tick in us +*/
+#define RRTICK 10000
+
+/*+ Interrupt Server +*/
+#define INTDRIVE_Q 1000
+#define INTDRIVE_U 0.1*MAX_BANDWIDTH
+#define INTDRIVE_FLAG 0
+
+void call_shutdown_task(void *arg);
+int device_drivers_init();
+int device_drivers_close();
+void set_shutdown_task();
+TASK shutdown_task_body(void *arg);
+
+PID shutdown_task_PID = -1;
+
+TIME __kernel_register_levels__(void *arg)
+{
+ struct multiboot_info *mb = (struct multiboot_info *)arg;
+ LEVEL EDF_level;
+
+ INTDRIVE_register_level(INTDRIVE_Q, INTDRIVE_Q, INTDRIVE_U, INTDRIVE_FLAG);
+ EDF_level = EDF_register_level(EDF_ENABLE_ALL);
+ CBS_register_level(CBS_ENABLE_ALL, EDF_level);
+ RR_register_level(RRTICK, RR_MAIN_YES, mb);
+ dummy_register_level();
+
+ SEM_register_module();
+
+ PI_register_module();
+ PC_register_module();
+ NPP_register_module();
+ SRP_register_module();
+ NOP_register_module();
+
+ return TICK;
+}
+
+TASK __init__(void *arg)
+{
+ struct multiboot_info *mb = (struct multiboot_info *)arg;
+
+ HARTPORT_init();
+
+ /* Create the shutdown task. It will be activated at RUNLEVEL
+ SHUTDOWN */
+ set_shutdown_task();
+
+ /* Init the drivers */
+ device_drivers_init();
+
+ /* Set the shutdown task activation */
+ sys_atrunlevel(call_shutdown_task, NULL, RUNLEVEL_SHUTDOWN);
+
+ __call_main__(mb);
+
+ return (void *)0;
+}
+
+void set_shutdown_task() {
+
+ /* WARNING: the shutdown task is a background thread. It cannot execute
+ if the system is overloaded */
+ NRT_TASK_MODEL nrt;
+
+ nrt_task_default_model(nrt);
+ nrt_task_def_system(nrt);
+
+ shutdown_task_PID = task_create("Shutdown Task",shutdown_task_body,&nrt,NULL);
+ if (shutdown_task_PID == NIL) {
+ sys_shutdown_message("Error: Cannot create shutdown task\n");
+ exit(1);
+ }
+
+}
+
+int device_drivers_init() {
+
+ KEYB_PARMS kparms = BASE_KEYB;
+
+ LINUXC26_register_module(TRUE);
+
+ INPUT26_init();
+
+ keyb_def_ctrlC(kparms, NULL);
+
+ KEYB26_init(&kparms);
+
+ return 0;
+
+}
+
+int device_drivers_close() {
+
+ KEYB26_close();
+
+ INPUT26_close();
+
+ return 0;
+
+}
+
+#define SHUTDOWN_TIMEOUT_SEC 3
+
+void call_shutdown_task(void *arg)
+{
+ struct timespec t;
+
+ sys_gettime(&t);
+ t.tv_sec += SHUTDOWN_TIMEOUT_SEC;
+
+ /* Emergency timeout to exit from RUNLEVEL_SHUTDOWN */
+ kern_event_post(&t,(void *)((void *)sys_abort_shutdown),(void *)0);
+
+ task_activate(shutdown_task_PID);
+}
+
+TASK shutdown_task_body(void *arg) {
+
+ device_drivers_close();
+
+ sys_shutdown_message("-- S.Ha.R.K. Closed --\n");
+
+ return NULL;
+
+}
Index: demos/branches/xen/base/ipcidemo.c
===================================================================
--- demos/branches/xen/base/ipcidemo.c (nonexistent)
+++ demos/branches/xen/base/ipcidemo.c (revision 1684)
@@ -0,0 +1,149 @@
+/*
+ * Project: S.Ha.R.K
+ *
+ * Coordinators: Giorgio Buttazzo <giorgio@sssup.it>
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://hartik.sssup.it
+ */
+
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+
+#include "kernel/kern.h"
+#include "edf/edf/edf.h"
+#include "hardcbs/hardcbs/hardcbs.h"
+#include "rr/rr/rr.h"
+#include "dummy/dummy/dummy.h"
+#include "intdrive/intdrive/intdrive.h"
+
+#include "sem/sem/sem.h"
+#include "hartport/hartport/hartport.h"
+
+#include "drivers/shark_linuxc26.h"
+#include "drivers/shark_pci26.h"
+
+/*+ sysyem tick in us +*/
+#define TICK 0
+
+/*+ RR tick in us +*/
+#define RRTICK 10000
+
+/*+ Interrupt Server +*/
+#define INTDRIVE_Q 1000
+#define INTDRIVE_U 1000
+#define INTDRIVE_FLAG 0
+
+void call_shutdown_task(void *arg);
+int device_drivers_init();
+int device_drivers_close();
+void set_shutdown_task();
+TASK shutdown_task_body(void *arg);
+
+PID shutdown_task_PID = -1;
+
+TIME __kernel_register_levels__(void *arg)
+{
+ struct multiboot_info *mb = (struct multiboot_info *)arg;
+
+ INTDRIVE_register_level(INTDRIVE_Q, INTDRIVE_Q, INTDRIVE_U, INTDRIVE_FLAG);
+ EDF_register_level(EDF_ENABLE_ALL);
+ HCBS_register_level(HCBS_ENABLE_ALL, 1);
+ RR_register_level(RRTICK, RR_MAIN_YES, mb);
+ dummy_register_level();
+
+ SEM_register_module();
+
+ return TICK;
+}
+
+TASK __init__(void *arg)
+{
+ struct multiboot_info *mb = (struct multiboot_info *)arg;
+
+ HARTPORT_init();
+
+ set_shutdown_task();
+
+ device_drivers_init();
+
+ sys_atrunlevel(call_shutdown_task, NULL, RUNLEVEL_SHUTDOWN);
+
+ __call_main__(mb);
+
+ return (void *)0;
+}
+
+void set_shutdown_task() {
+
+ NRT_TASK_MODEL nrt;
+
+ nrt_task_default_model(nrt);
+ nrt_task_def_system(nrt);
+
+ shutdown_task_PID = task_create("Shutdown Task",shutdown_task_body,&nrt,NULL);
+ if (shutdown_task_PID == NIL) {
+ sys_shutdown_message("Error: Cannot create shutdown task\n");
+ exit(1);
+ }
+
+}
+
+int device_drivers_init() {
+
+ LINUXC26_register_module(TRUE);
+
+ PCI26_init();
+
+ return 0;
+
+}
+
+int device_drivers_close() {
+
+ return 0;
+
+}
+
+TASK shutdown_task_body(void *arg) {
+
+ device_drivers_close();
+
+ sys_shutdown_message("-- S.Ha.R.K. Closed --\n");
+
+ return NULL;
+
+}
+
+#define SHUTDOWN_TIMEOUT_SEC 3
+
+void call_shutdown_task(void *arg) {
+
+ struct timespec t;
+
+ sys_gettime(&t);
+ t.tv_sec += SHUTDOWN_TIMEOUT_SEC;
+
+ kern_event_post(&t,(void *)((void *)sys_abort_shutdown),(void *)0);
+
+ task_activate(shutdown_task_PID);
+
+}
Index: demos/branches/xen/base/aster3.c
===================================================================
--- demos/branches/xen/base/aster3.c (nonexistent)
+++ demos/branches/xen/base/aster3.c (revision 1684)
@@ -0,0 +1,303 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Paolo Gai <pj@gandalf.sssup.it>
+ * (see the web pages for full authors list)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/*
+ * Copyright (C) 2000 Paolo Gai
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ *
+ * CVS : $Id: aster3.c,v 1.11 2006-07-05 08:26:37 tullio Exp $
+
+ Test Number 10 (A):
+
+ this is a part of the classic Hartik demo Aster.
+
+ it is based on aster2.c, with the use of TBS to serve a set of aperiodic
+ tasks.
+
+ There are APER_MAX tasks sleeping, and when an asteroide task finish
+ the current activation, it activate also an aperiodic task chosen
+ randomly (if the task chosen is already active, the task_activate do
+ nothing!)
+
+
+*/
+
+#include "kernel/kern.h"
+#include "edf/edf/edf.h"
+
+int num_aster = 0;
+#define ASTER_LIM 60
+#define DISPLAY_MAX 15
+#define ASTER_MAX 70
+#define STAT_Y 9
+
+#define APER_MAX 8
+
+/* first numbers runs on a pentium 133, second numbers on a celeron 366 */
+#define PER_WCET 30000 /* 6200 */
+#define APER_WCET 50000 /* 18400 */
+#define CLOCK_WCET 1000 /* 200 */
+#define ASTER_WCET 1000 /* 200 */
+#define MIN_PERIOD 200 /* 64, in ms */
+
+#define APER_REP 22000
+
+PID aper_table[APER_MAX];
+
+TASK asteroide(void)
+{
+ int i;
+ int y = rand() % 7 + 1;
+
+ int load1,j;
+
+ char s[2];
+
+ s[0] = '*'; s[1] = 0;
+
+ /*for (;;)*/ {
+ i = 1;
+ while (i < ASTER_LIM) {
+ load1 = 10000; //8000 + rand()%2000;
+ for (j=0; j<load1; j++) {
+ s[0] = '*' + rand() % 100;
+ puts_xy(i,y,rand()%15+1,s);
+ }
+
+ task_activate(aper_table[rand()%APER_MAX]);
+ task_endcycle();
+
+ puts_xy(i,y,WHITE," ");
+ i++;
+ }
+ }
+ num_aster--;
+ return 0;
+}
+
+TASK aper_asteroid(void *a)
+{
+ int i;
+ int y = rand() % 7 + 1;
+
+ int load1,j;
+ int c;
+
+ char s[2];
+
+ c = (int)a;
+ s[0] = '*'; s[1] = 0;
+
+ for (;;) {
+ i = 1;
+ while (i < ASTER_LIM) {
+ load1 = APER_REP; //8000 + rand()%2000;
+ for (j=0; j<load1; j++) {
+ s[0] = '*' + rand() % 100;
+ puts_xy(i,y,rand()%15+1,s);
+ }
+ s[0] = c;
+ puts_xy(i,y,rand()%15+1,s);
+
+ task_endcycle();
+
+ puts_xy(i,y,WHITE," ");
+ i++;
+ }
+ }
+}
+
+TASK aster()
+{
+ PID p;
+
+ HARD_TASK_MODEL m;
+ int r;
+ int x; // adaptive bandwidth...
+
+ hard_task_default_model(m);
+ hard_task_def_wcet(m,PER_WCET);
+ hard_task_def_ctrl_jet(m);
+
+ x = MIN_PERIOD;
+
+ srand(7);
+ while (1) {
+ if (num_aster < ASTER_MAX) {
+ r = (rand() % 200);
+
+ hard_task_def_arg(m,(void *)((rand() % 7)+1));
+ hard_task_def_mit(m, (x+r)*1000);
+ p = task_create("aaa",asteroide,&m,NULL);
+ if (p == -1)
+ {
+ if (x < 500 && errno != ENO_AVAIL_TASK) x += 1;
+ printf_xy(62,3,WHITE,"adapt=%3u err=%d",
+ iq_query_first(&freedesc),errno);
+ }
+ else {
+ num_aster++;
+ printf_xy(62,3,WHITE,"adapt=%3u ",x);//,errno);
+ task_activate(p);
+ x /= 2;
+ if (x<50) x = 50;
+ }
+ }
+ task_endcycle();
+ }
+}
+
+TASK clock()
+{
+ int s = 0, m = 0;
+
+ while(1) {
+ printf_xy(62,1,WHITE,"%2d:%2d ast=%d",m,s, num_aster);
+ printf_xy(62,2,WHITE,"U=%12u",EDF_usedbandwidth(1));
+ task_endcycle();
+
+ if (++s > 59) {
+ s = 0;
+ m++;
+ }
+ printf_xy(62,1,WHITE,"%2d:%2d ast=%d",m,s, num_aster);
+ printf_xy(62,2,WHITE,"U=%12u",EDF_usedbandwidth(1));
+ task_endcycle();
+ }
+}
+
+
+
+/* we consider the first ASTER_MAX + 2 tasks from the PID 2
+ and plot on the screen the elapsed times... */
+TASK jetcontrol()
+{
+ int i; /* a counter */
+ TIME sum, max, curr, last[5];
+ int nact;
+ int j; /* the elements set by jet_gettable */
+ PID p;
+
+
+ kern_cli();
+ printf_xy(0,STAT_Y,WHITE,"PID ³ Mean T.³ Max T. ³ N.A. ³ Curr. ³ Last1 ³ Last2 ³ Last3 ³ Last4 ³ Last5");
+ kern_sti();
+
+ for (;;) {
+ for (i=0,p=0; i<DISPLAY_MAX+5 && p<MAX_PROC; p++) {
+ if (jet_getstat(p, &sum, &max, &nact, &curr) == -1) continue;
+
+ for (j=0; j<5; j++) last[j] = 0;
+ jet_gettable(p, &last[0], 5);
+ kern_cli();
+ printf_xy(0,STAT_Y+i+1,WHITE,"%-3d ³ %-6d ³ %-6d ³ %-4d ³ %-7d ³ %-5d ³ %-5d ³ %-5d ³ %-5d ³ %-5d",
+ p, (int)sum/(nact==0 ? 1 : nact), (int)max, (int)nact, (int)curr, (int)last[0], (int)last[1], (int)last[2], (int)last[3], (int)last[4]);
+ kern_sti();
+ i++;
+ }
+ task_endcycle();
+ }
+}
+
+int main(int argc, char **argv)
+{
+ PID p1,p2;//,p3,p4,p5,p6;
+ HARD_TASK_MODEL m;
+ NRT_TASK_MODEL m_nrt;
+ SOFT_TASK_MODEL m_aper;
+ int i;
+
+ clear();
+
+ hard_task_default_model(m);
+ hard_task_def_wcet(m,ASTER_WCET);
+ hard_task_def_mit(m,10000);
+ hard_task_def_group(m,1);
+ hard_task_def_ctrl_jet(m);
+
+ nrt_task_default_model(m_nrt);
+ nrt_task_def_group(m_nrt,1);
+ nrt_task_def_ctrl_jet(m_nrt);
+
+ p1 = task_create("Aster",aster,&m,NULL);
+ if (p1 == -1) {
+ sys_shutdown_message("aster3.c(main): Could not create task <aster> ...");
+ exit(1);
+ }
+
+ hard_task_def_mit(m,500000);
+ hard_task_def_wcet(m,CLOCK_WCET);
+ p2 = task_create("Clock",clock,&m,NULL);
+ if (p2 == -1) {
+ sys_shutdown_message("aster3.c(main): Could not create task <Clock> ...");
+ exit(1);
+ }
+
+ soft_task_default_model(m_aper);
+ soft_task_def_wcet(m_aper,APER_WCET);
+ soft_task_def_ctrl_jet(m_aper);
+ soft_task_def_aperiodic(m_aper);
+
+ soft_task_def_level(m_aper, 3);
+ aper_table[0] = task_create("JetControl",jetcontrol,&m_aper,NULL);
+ if (aper_table[0] == -1) {
+ sys_shutdown_message("aster3.c(main): Could not create task <JetControl> ...");
+ exit(1);
+ }
+
+ char st[80];
+
+ for (i=1; i<APER_MAX; i++) {
+ soft_task_def_level(m_aper, i/4 + 2);
+ soft_task_def_arg(m_aper, (void *)(i/4 ? 'Û' : '±'));
+ aper_table[i] = task_create("aper",aper_asteroid,&m_aper,NULL);
+ if (aper_table[i] == -1) {
+ sprintf(st, "aster3.c(main): Could not create task <aper> #%d...", i);
+ sys_shutdown_message(st);
+ exit(1);
+ }
+ }
+
+
+ group_activate(1);
+
+ {
+ struct timespec t;
+ do {
+ sys_gettime(&t);
+ } while (t.tv_sec < 60);
+ }
+
+ exit(0);
+ return 0;
+}
+
Index: demos/branches/xen/base/iaster4.c
===================================================================
--- demos/branches/xen/base/iaster4.c (nonexistent)
+++ demos/branches/xen/base/iaster4.c (revision 1684)
@@ -0,0 +1,177 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Paolo Gai <pj@gandalf.sssup.it>
+ * (see the web pages for full authors list)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/*
+ * Copyright (C) 2000 Paolo Gai
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+#include "kernel/kern.h"
+#include "intdrive/intdrive/intdrive.h"
+#include "edf/edf/edf.h"
+#include "rr/rr/rr.h"
+#include "tbs/tbs/tbs.h"
+#include "cbs/cbs/cbs.h"
+#include "rrsoft/rrsoft/rrsoft.h"
+#include "dummy/dummy/dummy.h"
+#include "sem/sem/sem.h"
+
+/*+ sysyem tick in us +*/
+#define TICK 0
+
+#define RRTICK 5000
+#define TBS_NUM 1
+#define TBS_DEN 10
+
+/*+ Interrupt Server +*/
+#define INTDRIVE_Q 1000
+#define INTDRIVE_U 0.1*MAX_BANDWIDTH
+#define INTDRIVE_FLAG 0
+
+#include <drivers/shark_linuxc26.h>
+#include <drivers/shark_input26.h>
+#include <drivers/shark_keyb26.h>
+
+#define FRAME_BUFFER_DEVICE 0
+
+void call_shutdown_task(void *arg);
+int device_drivers_init();
+int device_drivers_close();
+void set_shutdown_task();
+TASK shutdown_task_body(void *arg);
+
+PID shutdown_task_PID = -1;
+
+TIME __kernel_register_levels__(void *arg)
+{
+ struct multiboot_info *mb = (struct multiboot_info *)arg;
+ LEVEL EDF_level;
+
+ INTDRIVE_register_level(INTDRIVE_Q, INTDRIVE_Q, INTDRIVE_U, INTDRIVE_FLAG);
+ EDF_level = EDF_register_level(EDF_ENABLE_ALL);
+ RR_register_level(RRTICK, RR_MAIN_YES, mb);
+ TBS_register_level(TBS_ENABLE_ALL, 1, TBS_NUM, TBS_DEN);
+ TBS_register_level(TBS_ENABLE_ALL, 1, TBS_NUM*3, TBS_DEN);
+ CBS_register_level(CBS_ENABLE_ALL, EDF_level);
+ dummy_register_level();
+
+ SEM_register_module();
+
+ return TICK;
+}
+
+TASK __init__(void *arg)
+{
+ struct multiboot_info *mb = (struct multiboot_info *)arg;
+
+ /* Create the shutdown task. It will be activated at RUNLEVEL
+ SHUTDOWN */
+ set_shutdown_task();
+
+ /* Init the drivers */
+ device_drivers_init();
+
+ /* Set the shutdown task activation */
+ sys_atrunlevel(call_shutdown_task, NULL, RUNLEVEL_SHUTDOWN);
+
+ __call_main__(mb);
+
+ return (void *)0;
+}
+
+void set_shutdown_task() {
+
+ /* WARNING: the shutdown task is a background thread. It cannot execute
+ if the system is overloaded */
+ NRT_TASK_MODEL nrt;
+
+ nrt_task_default_model(nrt);
+ nrt_task_def_system(nrt);
+
+ shutdown_task_PID = task_create("Shutdown Task",shutdown_task_body,&nrt,NULL);
+ if (shutdown_task_PID == NIL) {
+ sys_shutdown_message("Error: Cannot create shutdown task\n");
+ exit(1);
+ }
+
+}
+
+int device_drivers_init() {
+
+ KEYB_PARMS kparms = BASE_KEYB;
+
+ LINUXC26_register_module(TRUE);
+
+ INPUT26_init();
+
+ keyb_def_ctrlC(kparms, NULL);
+
+ KEYB26_init(&kparms);
+
+ return 0;
+
+}
+
+int device_drivers_close() {
+
+ KEYB26_close();
+
+ INPUT26_close();
+
+ return 0;
+
+}
+
+#define SHUTDOWN_TIMEOUT_SEC 3
+
+void call_shutdown_task(void *arg)
+{
+ struct timespec t;
+
+ sys_gettime(&t);
+ t.tv_sec += SHUTDOWN_TIMEOUT_SEC;
+
+ /* Emergency timeout to exit from RUNLEVEL_SHUTDOWN */
+ kern_event_post(&t,(void *)((void *)sys_abort_shutdown),(void *)0);
+
+ task_activate(shutdown_task_PID);
+}
+
+TASK shutdown_task_body(void *arg) {
+
+ device_drivers_close();
+
+ sys_shutdown_message("-- S.Ha.R.K. Closed --\n");
+
+ return NULL;
+
+}
Index: demos/branches/xen/base/iaster6.c
===================================================================
--- demos/branches/xen/base/iaster6.c (nonexistent)
+++ demos/branches/xen/base/iaster6.c (revision 1684)
@@ -0,0 +1,222 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Paolo Gai <pj@gandalf.sssup.it>
+ * (see the web pages for full authors list)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/**
+ ------------
+ CVS : $Id: iaster6.c,v 1.8 2006-07-03 13:12:06 tullio Exp $
+
+ File: $File$
+ Revision: $Revision: 1.8 $
+ Last update: $Date: 2006-07-03 13:12:06 $
+ ------------
+
+ System initialization file
+
+ h3pips.c
+
+ These functions register the following levels:
+
+ an EDF (Earliest Deadline First) level
+ a RR (Round Robin) level
+ a CBS (Costant Bandwidth Server) level
+ a PS (Polling Server) level
+ a Dummy level
+
+ It can accept these task models:
+
+ HARD_TASK_MODEL (wcet+mit) at level 0
+ NRT_TASK_MODEL at level 1
+ SOFT_TASK_MODEL (met, period) at level 2
+ SOFT_TASK_MODEL (periodicity=APERIODIC) at level 3
+
+**/
+
+/*
+ * Copyright (C) 2000 Paolo Gai
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+
+
+#include "kernel/kern.h"
+
+#include "intdrive/intdrive/intdrive.h"
+#include "edf/edf/edf.h"
+#include "cbs/cbs/cbs.h"
+#include "rr/rr/rr.h"
+#include "dummy/dummy/dummy.h"
+#include "ps/ps/ps.h"
+
+#include "sem/sem/sem.h"
+#include "cabs/cabs/cabs.h"
+#include "pi/pi/pi.h"
+#include "pc/pc/pc.h"
+#include "srp/srp/srp.h"
+#include "npp/npp/npp.h"
+#include "nop/nop/nop.h"
+
+#include <drivers/shark_linuxc26.h>
+#include <drivers/shark_input26.h>
+#include <drivers/shark_keyb26.h>
+
+/*+ sysyem tick in us +*/
+#define TICK 1000
+
+/*+ RR tick in us +*/
+#define RRTICK 10000
+
+/*+ Interrupt Server +*/
+#define INTDRIVE_Q 1000
+#define INTDRIVE_U 0.1*MAX_BANDWIDTH
+#define INTDRIVE_FLAG 0
+
+void call_shutdown_task(void *arg);
+int device_drivers_init();
+int device_drivers_close();
+void set_shutdown_task();
+TASK shutdown_task_body(void *arg);
+
+PID shutdown_task_PID = -1;
+
+TIME __kernel_register_levels__(void *arg)
+{
+ struct multiboot_info *mb = (struct multiboot_info *)arg;
+ LEVEL EDF_level;
+
+ INTDRIVE_register_level(INTDRIVE_Q, INTDRIVE_Q, INTDRIVE_U, INTDRIVE_FLAG);
+ EDF_level = EDF_register_level(EDF_ENABLE_ALL);
+ RR_register_level(RRTICK, RR_MAIN_YES, mb);
+ CBS_register_level(CBS_ENABLE_ALL, EDF_level);
+ PS_register_level(2 /*PS_ENABLE_ALL_EDF*/,1,500,100000);
+ dummy_register_level();
+
+ SEM_register_module();
+
+ CABS_register_module();
+
+ PI_register_module();
+ PC_register_module();
+ NPP_register_module();
+ SRP_register_module();
+ NOP_register_module();
+
+ return TICK;
+}
+
+TASK __init__(void *arg)
+{
+ struct multiboot_info *mb = (struct multiboot_info *)arg;
+
+ /* Create the shutdown task. It will be activated at RUNLEVEL
+ SHUTDOWN */
+ set_shutdown_task();
+
+ /* Init the drivers */
+ device_drivers_init();
+
+ /* Set the shutdown task activation */
+ sys_atrunlevel(call_shutdown_task, NULL, RUNLEVEL_SHUTDOWN);
+
+ __call_main__(mb);
+
+ return (void *)0;
+}
+
+void set_shutdown_task() {
+
+ /* WARNING: the shutdown task is a background thread. It cannot execute
+ if the system is overloaded */
+ NRT_TASK_MODEL nrt;
+
+ nrt_task_default_model(nrt);
+ nrt_task_def_system(nrt);
+
+ shutdown_task_PID = task_create("Shutdown Task",shutdown_task_body,&nrt,NULL);
+ if (shutdown_task_PID == NIL) {
+ sys_shutdown_message("Error: Cannot create shutdown task\n");
+ exit(1);
+ }
+
+}
+
+int device_drivers_init() {
+
+ KEYB_PARMS kparms = BASE_KEYB;
+
+ LINUXC26_register_module(TRUE);
+
+ INPUT26_init();
+
+ keyb_def_ctrlC(kparms, NULL);
+
+ KEYB26_init(&kparms);
+
+ return 0;
+
+}
+
+int device_drivers_close() {
+
+ KEYB26_close();
+
+ INPUT26_close();
+
+ return 0;
+
+}
+
+#define SHUTDOWN_TIMEOUT_SEC 3
+
+void call_shutdown_task(void *arg)
+{
+ struct timespec t;
+
+ sys_gettime(&t);
+ t.tv_sec += SHUTDOWN_TIMEOUT_SEC;
+
+ /* Emergency timeout to exit from RUNLEVEL_SHUTDOWN */
+ kern_event_post(&t,(void *)((void *)sys_abort_shutdown),(void *)0);
+
+ task_activate(shutdown_task_PID);
+}
+
+TASK shutdown_task_body(void *arg) {
+
+ device_drivers_close();
+
+ sys_shutdown_message("-- S.Ha.R.K. Closed --\n");
+
+ return NULL;
+
+}
+
+
Index: demos/branches/xen/base/aster4.c
===================================================================
--- demos/branches/xen/base/aster4.c (nonexistent)
+++ demos/branches/xen/base/aster4.c (revision 1684)
@@ -0,0 +1,404 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Paolo Gai <pj@gandalf.sssup.it>
+ * (see the web pages for full authors list)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/*
+ * Copyright (C) 2000 Paolo Gai
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ *
+ * CVS : $Id: aster4.c,v 1.6 2006-07-03 13:08:29 tullio Exp $
+
+ Test Number 13 (D):
+
+ this is a part of the classic Hartik demo Aster, and it is based on aster 3.
+
+ The demo creates:
+ - a set of TBS tasks assigned to 2 TBS servers initialized with different bandwidth.
+
+ - a set of periodic tasks, just to make noise (function asteroide)
+
+ - a set of CBS tasks that are created to fill the available free
+ bandwidth (function soft_aster)
+
+ - a few service task (the one that creates the CBS tasks (aster), a clock,
+ JET info visualization
+
+ - a set of never ending "system tasks" that simulate a device driver
+ task that will end only at shutdown (function aper_asteroid)
+
+ - a keyboard task that will execute an hook to terminate the system
+
+*/
+
+/*
+ * Copyright (C) 2000 Paolo Gai
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+#include "kernel/kern.h"
+#include "edf/edf/edf.h"
+#include "cbs/cbs/cbs.h"
+
+#include <drivers/shark_linuxc26.h>
+#include <drivers/shark_input26.h>
+#include <drivers/shark_keyb26.h>
+
+int num_aster = 0;
+#define ASTER_LIM 60
+#define DISPLAY_MAX 15
+#define ASTER_MAX 70
+#define STAT_Y 9
+
+#define PER_MAX 5
+#define APER_MAX 8
+
+// These numbers works on a Pentium 133 */
+#define PER_WCET 25000
+#define APER_WCET 53000
+#define CLOCK_WCET 1000
+#define ASTER_WCET 1000
+#define SOFT_MET 6300
+
+#define APER_REP 22000
+
+PID aper_table[APER_MAX];
+
+int shutting_down = 0;
+
+TASK asteroide(void)
+{
+ int i;
+ int y = rand() % 7 + 1;
+
+ int load1,j;
+
+ char s[2];
+
+ s[0] = '*'; s[1] = 0;
+
+ for (;;) {
+ i = 1;
+ while (i < ASTER_LIM) {
+ load1 = 10000; //8000 + rand()%2000;
+ for (j=0; j<load1; j++) {
+ s[0] = '*' + rand() % 100;
+ puts_xy(i,y,rand()%15+1,s);
+ }
+
+ task_activate(aper_table[rand()%APER_MAX]);
+ task_endcycle();
+
+ puts_xy(i,y,WHITE," ");
+ i++;
+ }
+ }
+ //num_aster--;
+}
+
+TASK aper_asteroid(void *a)
+{
+ int i;
+ int y = rand() % 7 + 1;
+
+ int load1,j;
+ int c;
+
+ char s[2];
+
+ c = (int)a;
+ s[0] = '*'; s[1] = 0;
+
+ for (;;) {
+ i = 1;
+ while (i < ASTER_LIM) {
+ load1 = APER_REP; //8000 + rand()%2000;
+ for (j=0; j<load1; j++) {
+ s[0] = '*' + rand() % 100;
+ puts_xy(i,y,rand()%15+1,s);
+ }
+ s[0] = c;
+ puts_xy(i,y,rand()%15+1,s);
+
+ if (shutting_down) {
+ cprintf("Ending System Task %d\n",exec_shadow);
+ return 0;
+ }
+
+ task_endcycle();
+
+ puts_xy(i,y,WHITE," ");
+ i++;
+ }
+ }
+}
+
+TASK soft_aster(void)
+{
+ int i;
+ int y = rand() % 7 + 1;
+
+ int load1,j;
+
+ char s[2];
+
+ s[0] = '*'; s[1] = 0;
+
+ i = 1;
+ while (i < ASTER_LIM) {
+ load1 = 1000 + rand()%9000;
+ for (j=0; j<load1; j++) {
+ s[0] = '*' + rand() % 100;
+ puts_xy(i,y,rand()%15+1,s);
+ }
+ s[0] = 1;
+ puts_xy(i,y,rand()%15+1,s);
+
+ task_activate(aper_table[rand()%APER_MAX]);
+ task_endcycle();
+
+ puts_xy(i,y,WHITE," ");
+ i++;
+ }
+ num_aster--;
+ return 0;
+}
+
+TASK aster()
+{
+ PID p;
+
+ HARD_TASK_MODEL m;
+ SOFT_TASK_MODEL m_soft;
+ int r;
+ int x; // adaptive bandwidth...
+
+ srand(7);
+
+ /* create a set of periodic tasks, just to make noise */
+ hard_task_default_model(m);
+ hard_task_def_wcet(m,PER_WCET);
+ hard_task_def_ctrl_jet(m);
+ for (x=0; x<PER_MAX; x++) {
+ r = (rand() % 200);
+ hard_task_def_mit(m, (64+r)*1000);
+ p = task_create("per",asteroide,&m,NULL);
+ if (p!=-1) task_activate(p);
+ }
+
+ soft_task_default_model(m_soft);
+ soft_task_def_met(m_soft,SOFT_MET);
+ soft_task_def_ctrl_jet(m_soft);
+
+ x = 64;
+
+ while (1) {
+ if (num_aster < ASTER_MAX) {
+ r = (rand() % 200);
+
+ soft_task_def_period(m_soft, (x+r)*1000);
+ p = task_create("aaa",soft_aster,&m_soft,NULL);
+ if (p == -1)
+ {
+ if (x < 500 && errno != ENO_AVAIL_TASK) x += 1;
+ printf_xy(62,3,WHITE,"adapt=%3u err=%d",
+ iq_query_first(&freedesc),errno);
+ }
+ else {
+ num_aster++;
+ printf_xy(62,3,WHITE,"adapt=%3u ",x);//,errno);
+ task_activate(p);
+ x /= 2;
+ if (x<50) x = 50;
+ }
+ }
+ task_endcycle();
+ }
+}
+
+TASK clock()
+{
+ int s = 0, m = 0;
+
+ while(1) {
+ printf_xy(62,1,WHITE,"%2d:%2d ast=%d",m,s, num_aster);
+ printf_xy(62,2,WHITE,"Uedf=%12u",EDF_usedbandwidth(1));
+ printf_xy(62,4,WHITE,"Ucbs=%12u",CBS_usedbandwidth(5));
+ task_endcycle();
+
+ if (++s > 59) {
+ s = 0;
+ m++;
+ }
+ printf_xy(62,1,WHITE,"%2d:%2d ast=%d",m,s, num_aster);
+ printf_xy(62,2,WHITE,"Uedf=%12u",EDF_usedbandwidth(1));
+ printf_xy(62,4,WHITE,"Ucbs=%12u",CBS_usedbandwidth(5));
+ task_endcycle();
+ }
+}
+
+/* we consider the first ASTER_MAX + 2 tasks from the PID 2
+ and plot on the screen the elapsed times... */
+TASK jetcontrol()
+{
+ int i; /* a counter */
+ TIME sum, max, curr, last[5];
+ int nact;
+ int j; /* the elements set by jet_gettable */
+ PID p;
+
+
+ kern_cli();
+ printf_xy(0,STAT_Y,WHITE,"PID ³ Mean T.³ Max T. ³ N.A. ³ Curr. ³ Last1 ³ Last2 ³ Last3 ³ Last4 ³ Last5");
+ kern_sti();
+
+ for (;;) {
+ for (i=0,p=0; i<DISPLAY_MAX+5 && p<MAX_PROC; p++) {
+ if (jet_getstat(p, &sum, &max, &nact, &curr) == -1 ||
+ (proc_table[p].pclass & 0xFF00) == HARD_PCLASS) continue;
+
+ for (j=0; j<5; j++) last[j] = 0;
+ jet_gettable(p, &last[0], 5);
+ kern_cli();
+ if (proc_table[p].task_level == 5)
+ printf_xy(0,STAT_Y+i+1,WHITE,"%-3d ³ %-6d ³ %-6d ³ %-4d ³ %-7d ³ %-5d ³ %-5d ³ %-5d ³ %-5d ³ %-5d",
+ p, (int)sum/(nact==0 ? 1 : nact), (int)max, nact, (int)CBS_get_nact(4,p), (int)last[0], (int)last[1], (int)last[2], (int)last[3], (int)last[4]);
+ else
+ printf_xy(0,STAT_Y+i+1,WHITE,"%-3d ³ %-6d ³ %-6d ³ %-4d ³ %-7d ³ %-5d ³ %-5d ³ %-5d ³ %-5d ³ %-5d",
+ p, (int)sum/(nact==0 ? 1 : nact), (int)max, nact, (int)curr, (int)last[0], (int)last[1], (int)last[2], (int)last[3], (int)last[4]);
+ kern_sti();
+ i++;
+ }
+ }
+}
+
+void endfun(KEY_EVT *k)
+{
+ exit(0);
+}
+
+void exiting(void *arg)
+{
+ cprintf("System shut down...\n");
+ shutting_down = 1;
+}
+
+int main(int argc, char **argv)
+{
+ KEY_EVT k;
+
+ PID p1,p2,p3;
+ HARD_TASK_MODEL m;
+ SOFT_TASK_MODEL m_aper;
+ SOFT_TASK_MODEL m_soft;
+ int i;
+
+ k.ascii = 'c';
+ k.scan = KEY_C;
+ k.flag = CNTL_BIT;
+ k.status = KEY_PRESSED;
+ keyb_hook(k,endfun,FALSE);
+
+ k.flag = CNTR_BIT;
+ k.status = KEY_PRESSED;
+ keyb_hook(k,endfun,FALSE);
+
+ clear();
+ cprintf("Press Ctrl-C to end the demo...");
+
+ sys_atrunlevel(exiting, NULL, RUNLEVEL_SHUTDOWN);
+
+ hard_task_default_model(m);
+ hard_task_def_wcet(m,ASTER_WCET);
+ hard_task_def_mit(m,10000);
+ hard_task_def_group(m,1);
+ hard_task_def_ctrl_jet(m);
+
+ soft_task_default_model(m_soft);
+ soft_task_def_met(m_soft,1000);
+ soft_task_def_period(m_soft,100000);
+ soft_task_def_group(m_soft,1);
+ soft_task_def_ctrl_jet(m_soft);
+ soft_task_def_aperiodic(m_soft);
+
+ p1 = task_create("Aster",aster,&m,NULL);
+ if (p1 == -1) {
+ sys_shutdown_message("aster4.c(main): Could not create task <aster> ...");
+ exit(0);
+ }
+
+ hard_task_def_mit(m,500000);
+ hard_task_def_wcet(m,CLOCK_WCET);
+ p2 = task_create("Clock",clock,&m,NULL);
+ if (p2 == -1) {
+ sys_shutdown_message("aster4.c(main): Could not create task <Clock> ...");
+ exit(0);
+ }
+
+ p3 = task_create("JetControl",jetcontrol,&m_soft,NULL);
+ if (p3 == -1) {
+ sys_shutdown_message("aster4.c(main): Could not create task <JetControl> ...");
+ exit(0);
+ }
+
+ soft_task_default_model(m_aper);
+ soft_task_def_wcet(m_aper,APER_WCET);
+ soft_task_def_ctrl_jet(m_aper);
+ soft_task_def_system(m_aper);
+ soft_task_def_aperiodic(m_aper);
+
+ for (i=0; i<APER_MAX; i++) {
+ soft_task_def_level(m_aper, i/4 + 3);
+ soft_task_def_arg(m_aper, (void *)(i/4 ? 'Û' : '±'));
+ aper_table[i] = task_create("aper",aper_asteroid,&m_aper,NULL);
+ if (aper_table[i] == -1) {
+ sys_shutdown_message("aster4.c(main): Could not create task <aper> ...");
+ exit(0);
+ }
+ }
+
+ group_activate(1);
+ return 0;
+}
+
Index: demos/branches/xen/base/aster6.c
===================================================================
--- demos/branches/xen/base/aster6.c (nonexistent)
+++ demos/branches/xen/base/aster6.c (revision 1684)
@@ -0,0 +1,448 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Paolo Gai <pj@gandalf.sssup.it>
+ * (see the web pages for full authors list)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/*
+ * Copyright (C) 2000 Paolo Gai, Gerardo Lamastra and Giuseppe Lipari
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ *
+ * CVS : $Id: aster6.c,v 1.8 2006-07-03 13:11:52 tullio Exp $
+
+ this is a part of the classic Hartik demo Aster.
+
+ it is based on test 17 (h), and the JobControl Task uses an
+ SOFT_TASK_MODEL served by a polling server
+
+*/
+
+#include "kernel/kern.h"
+#include "edf/edf/edf.h"
+#include "cbs/cbs/cbs.h"
+
+#include <drivers/shark_keyb26.h>
+
+int num_aster = 0;
+#define ASTER_LIM 60
+#define DISPLAY_MAX 15
+#define ASTER_MAX 70
+#define STAT_Y 9
+
+#define PER_MAX 5
+#define APER_MAX 8
+
+#define PER_WCET 6200
+#define APER_WCET 18400
+#define JET_WCET 10000
+
+#define APER_REP 22000
+
+PID aper_table[APER_MAX];
+
+mutex_t m1;
+
+
+#define PIMUTEX
+//#define NPPMUTEX
+//#define NOPMUTEX
+
+//#define LONGSC
+
+#ifdef LONGSC
+#define SOFT_MET 3000 /* 12000 */
+#define CLOCK_WCET 200 /* 300*/
+#define ASTER_WCET 200 /* 300*/
+#else
+#define SOFT_MET 80000 /* 4500 */
+#define CLOCK_WCET 2000 /* 200*/
+#define ASTER_WCET 2000 /* 200*/
+#endif
+
+TASK asteroide(void)
+{
+ int i;
+ int y = rand() % 7 + 1;
+
+ int load1,j;
+
+ char s[2];
+
+ s[0] = '*'; s[1] = 0;
+
+ for (;;) {
+ i = 1;
+ while (i < ASTER_LIM) {
+ load1 = 10000; //8000 + rand()%2000;
+#ifdef LONGSC
+ mutex_lock(&m1);
+#endif
+ for (j=0; j<load1; j++) {
+ s[0] = '*' + rand() % 100;
+#ifndef LONGSC
+ mutex_lock(&m1);
+#endif
+ puts_xy(i,y,rand()%15+1,s);
+#ifndef LONGSC
+ mutex_unlock(&m1);
+#endif
+ }
+#ifdef LONGSC
+ mutex_unlock(&m1);
+#endif
+
+ task_activate(aper_table[rand()%APER_MAX]);
+ task_endcycle();
+
+ mutex_lock(&m1);
+ puts_xy(i,y,WHITE," ");
+ mutex_unlock(&m1);
+ i++;
+ }
+ }
+ //num_aster--;
+}
+
+TASK aper_asteroid(void *a)
+{
+ int i;
+ int y = rand() % 7 + 1;
+
+ int load1,j;
+ int c;
+
+ char s[2];
+
+ c = (int)a;
+ s[0] = '*'; s[1] = 0;
+
+ for (;;) {
+ i = 1;
+ while (i < ASTER_LIM) {
+ load1 = APER_REP; //8000 + rand()%2000;
+#ifdef LONGSC
+ mutex_lock(&m1);
+#endif
+ for (j=0; j<load1; j++) {
+ s[0] = '*' + rand() % 100;
+#ifndef LONGSC
+ mutex_lock(&m1);
+#endif
+ puts_xy(i,y,rand()%15+1,s);
+#ifndef LONGSC
+ mutex_unlock(&m1);
+#endif
+ }
+ s[0] = c;
+#ifndef LONGSC
+ mutex_lock(&m1);
+#endif
+ puts_xy(i,y,rand()%15+1,s);
+ mutex_unlock(&m1);
+
+ task_endcycle();
+
+ mutex_lock(&m1);
+ puts_xy(i,y,WHITE," ");
+ mutex_unlock(&m1);
+ i++;
+ }
+ }
+}
+
+TASK soft_aster(void)
+{
+ int i;
+ int y = rand() % 7 + 1;
+
+ int load1,j;
+
+ char s[2];
+
+ s[0] = '*'; s[1] = 0;
+
+ /*for (;;)*/ {
+ i = 1;
+ while (i < ASTER_LIM) {
+ load1 = 1000 + rand()%9000;
+#ifdef LONGSC
+ mutex_lock(&m1);
+#endif
+ for (j=0; j<load1; j++) {
+ s[0] = '*' + rand() % 100;
+#ifndef LONGSC
+ mutex_lock(&m1);
+#endif
+ puts_xy(i,y,rand()%15+1,s);
+#ifndef LONGSC
+ mutex_unlock(&m1);
+#endif
+ }
+ s[0] = 1;
+#ifndef LONGSC
+ mutex_lock(&m1);
+#endif
+ puts_xy(i,y,rand()%15+1,s);
+ mutex_unlock(&m1);
+
+ task_activate(aper_table[rand()%APER_MAX]);
+ task_endcycle();
+
+ mutex_lock(&m1);
+ puts_xy(i,y,WHITE," ");
+ mutex_unlock(&m1);
+ i++;
+ }
+ }
+ num_aster--;
+ return 0;
+}
+
+TASK aster()
+{
+ PID p;
+
+ // HARD_TASK_MODEL m;
+ SOFT_TASK_MODEL m_soft;
+ int r;
+ int x; // adaptive bandwidth...
+
+ srand(7);
+
+ soft_task_default_model(m_soft);
+ soft_task_def_met(m_soft,SOFT_MET);
+ soft_task_def_ctrl_jet(m_soft);
+
+ x = 128; //64;
+
+ while (1) {
+ if (num_aster < ASTER_MAX) {
+ r = (rand() % 200);
+
+ soft_task_def_period(m_soft, (x+r)*1000);
+ p = task_create("aaa",soft_aster,&m_soft,NULL);
+ if (p == -1)
+ {
+ if (x < 500 && errno != ENO_AVAIL_TASK) x += 1;
+ mutex_lock(&m1);
+ printf_xy(62,3,WHITE,"adapt=%3u err=%d",
+ iq_query_first(&freedesc),errno);
+ mutex_unlock(&m1);
+ }
+ else {
+ num_aster++;
+ mutex_lock(&m1);
+ printf_xy(62,3,WHITE,"adapt=%3u ",x);//,errno);
+ mutex_unlock(&m1);
+ task_activate(p);
+ x /= 2;
+ if (x<50) x = 50;
+ }
+ }
+ task_endcycle();
+ }
+}
+
+TASK clock()
+{
+ int s = 0, m = 0;
+
+ while(1) {
+ mutex_lock(&m1);
+ printf_xy(62,1,WHITE,"%2d:%2d ast=%d",m,s, num_aster);
+ printf_xy(62,2,WHITE,"Uedf=%12u",EDF_usedbandwidth(1));
+ printf_xy(62,4,WHITE,"Ucbs=%12u",CBS_usedbandwidth(3));
+
+ mutex_unlock(&m1);
+
+ task_endcycle();
+
+ if (++s > 59) {
+ s = 0;
+ m++;
+ }
+ mutex_lock(&m1);
+ printf_xy(62,1,WHITE,"%2d:%2d ast=%d",m,s, num_aster);
+ printf_xy(62,2,WHITE,"Uedf=%12u",EDF_usedbandwidth(1));
+ printf_xy(62,4,WHITE,"Ucbs=%12u",CBS_usedbandwidth(3));
+ mutex_unlock(&m1);
+ task_endcycle();
+ }
+}
+
+
+
+/* we consider the first ASTER_MAX + 2 tasks from the PID 2
+ and plot on the screen the elapsed times... */
+TASK jetcontrol()
+{
+ int i; /* a counter */
+ TIME sum, max, curr, last[5];
+ int nact;
+ int j; /* the elements set by jet_gettable */
+ PID p;
+
+ mutex_lock(&m1);
+ printf_xy(0,STAT_Y,WHITE,"PID ³ Mean T.³ Max T. ³ N.A. ³ Curr. ³ Last1 ³ Last2 ³ Last3 ³ Last4 ³ Last5");
+ mutex_unlock(&m1);
+
+ for (;;) {
+ for (i=0,p=0; i<DISPLAY_MAX+5 && p<MAX_PROC; p++) {
+ if (jet_getstat(p, &sum, &max, &nact, &curr) == -1 /*||
+ (proc_table[p].pclass & 0xFF00) == APERIODIC_PCLASS ||
+ (proc_table[p].pclass & 0xFF00) == PERIODIC_PCLASS*/ ) continue;
+
+ for (j=0; j<5; j++) last[j] = 0;
+ jet_gettable(p, &last[0], 5);
+ mutex_lock(&m1);
+ if (proc_table[p].task_level == 3)
+ printf_xy(0,STAT_Y+i+1,WHITE,"%-3d ³ %-6d ³ %-6d ³ %-4d ³ %-7d ³ %-5d ³ %-5d ³ %-5d ³ %-5d ³ %-5d",
+ p, (int)sum/(nact==0 ? 1 : nact), (int)max, nact, (int)CBS_get_nact(2,p), (int)last[0], (int)last[1], (int)last[2], (int)last[3], (int)last[4]);
+ // p, sum/(nact==0 ? 1 : nact), max, proc_table[p].avail_time, proc_table[p].status, proc_table[p].shadow, proc_table[p].timespec_priority.tv_sec,proc_table[p].timespec_priority.tv_nsec/1000 , CBS_get_nact(2,p), last[4]);
+ else
+ printf_xy(0,STAT_Y+i+1,WHITE,"%-3d ³ %-6d ³ %-6d ³ %-4d ³ %-7d ³ %-5d ³ %-5d ³ %-5d ³ %-5d ³ %-5d",
+ p, (int)sum/(nact==0 ? 1 : nact), (int)max, (int)nact, (int)curr, (int)last[0], (int)last[1], (int)last[2], (int)last[3], (int)last[4]);
+ // p, sum/(nact==0 ? 1 : nact), max, nact, proc_table[p].status, proc_table[p].shadow, proc_table[p].timespec_priority.tv_sec,proc_table[p].timespec_priority.tv_nsec/1000 , last[3], last[4]);
+ mutex_unlock(&m1);
+ i++;
+ }
+ }
+}
+
+void fine(KEY_EVT *e)
+{
+
+ exit(0);
+
+}
+
+int main(int argc, char **argv)
+{
+ PID p1,p2,p3; //,p4,p5,p6;
+ HARD_TASK_MODEL m;
+ // NRT_TASK_MODEL m_nrt;
+ SOFT_TASK_MODEL m_aper;
+ SOFT_TASK_MODEL m_soft;
+ // int i;
+ struct timespec fineprg;
+
+#ifdef PIMUTEX
+ PI_mutexattr_t a;
+#endif
+
+#ifdef NPPMUTEX
+ NPP_mutexattr_t a;
+#endif
+
+#ifdef NOPMUTEX
+ NOP_mutexattr_t a;
+#endif
+
+ KEY_EVT emerg;
+
+ emerg.ascii = 'c';
+ emerg.scan = KEY_C;
+ emerg.flag = CNTL_BIT;
+ emerg.status = KEY_PRESSED;
+ keyb_hook(emerg,fine,FALSE);
+
+ emerg.flag = CNTR_BIT;
+ emerg.status = KEY_PRESSED;
+ keyb_hook(emerg,fine,FALSE);
+
+ clear();
+
+ hard_task_default_model(m);
+ hard_task_def_mit(m,100000);
+ hard_task_def_wcet(m,ASTER_WCET);
+ hard_task_def_group(m,1);
+ hard_task_def_ctrl_jet(m);
+
+ // nrt_task_default_model(m_nrt);
+ // nrt_task_def_group(m_nrt,1);
+ // nrt_task_def_ctrl_jet(m_nrt);
+
+
+ soft_task_default_model(m_aper);
+ soft_task_def_group(m_aper,1);
+ soft_task_def_ctrl_jet(m_aper);
+ soft_task_def_aperiodic(m_aper);
+
+ soft_task_default_model(m_soft);
+ soft_task_def_period(m_soft,100000);
+ soft_task_def_met(m_soft,JET_WCET);
+ soft_task_def_group(m_soft,1);
+ soft_task_def_ctrl_jet(m_soft);
+ soft_task_def_aperiodic(m_soft);
+
+ p1 = task_create("Aster",aster,&m,NULL);
+ if (p1 == -1) {
+ sys_shutdown_message("test7.c(main): Could not create task <aster> ...");
+ exit(1);
+ }
+
+ hard_task_def_mit(m,500000);
+ hard_task_def_wcet(m,CLOCK_WCET);
+ p2 = task_create("Clock",clock,&m,NULL);
+ if (p2 == -1) {
+ sys_shutdown_message("test7.c(main): Could not create task <Clock> ...");
+ exit(1);
+ }
+
+ // p3 = task_create("JetControl",jetcontrol,&m_nrt,NULL);
+ p3 = task_create("JetControl",jetcontrol,&m_aper,NULL);
+ if (p3 == -1) {
+ sys_shutdown_message("test7.c(main): Could not create task <JetControl> ...");
+ exit(1);
+ }
+
+ task_nopreempt();
+
+#ifdef PIMUTEX
+ PI_mutexattr_default(a);
+#endif
+
+#ifdef NPPMUTEX
+ NPP_mutexattr_default(a);
+#endif
+
+#ifdef NOPMUTEX
+ NOP_mutexattr_default(a);
+#endif
+
+ mutex_init(&m1, &a);
+
+ fineprg.tv_sec = 20;
+ fineprg.tv_nsec = 0;
+ kern_event_post(&fineprg,(void (*)(void *))fine,NULL);
+ group_activate(1);
+
+ return 0;
+}
+
Index: demos/branches/xen/base/iaster7.c
===================================================================
--- demos/branches/xen/base/iaster7.c (nonexistent)
+++ demos/branches/xen/base/iaster7.c (revision 1684)
@@ -0,0 +1,209 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Paolo Gai <pj@gandalf.sssup.it>
+ * (see the web pages for full authors list)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/**
+ ------------
+ CVS : $Id: iaster7.c,v 1.8 2006-07-03 12:57:33 tullio Exp $
+
+ File: $File$
+ Revision: $Revision: 1.8 $
+ Last update: $Date: 2006-07-03 12:57:33 $
+ ------------
+
+ System initialization file
+
+ The tick is set to TICK ms.
+
+ This file contains the 2 functions needed to initialize the system.
+
+ These functions register a set of scheduling modules, in a fixed or
+ dynamic priority way...
+
+ It can accept these task models:
+
+ HARD_TASK_MODEL (wcet+mit) at level 0
+ SOFT_TASK_MODEL (periodicity=APERIODIC) at level 1
+ NRT_TASK_MODEL at level 2
+ SOFT_TASK_MODEL (periodicity=APERIODIC, wcet (only if TBS) ) at level 3,4
+
+**/
+
+/*
+ * Copyright (C) 2000 Paolo Gai
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+
+
+#include "kernel/kern.h"
+#include "intdrive/intdrive/intdrive.h"
+#include "edf/edf/edf.h"
+#include "tbs/tbs/tbs.h"
+
+#include "rm/rm/rm.h"
+#include "rr/rr/rr.h"
+#include "ps/ps/ps.h"
+
+#include "dummy/dummy/dummy.h"
+
+#include "sem/sem/sem.h"
+
+#include <drivers/shark_linuxc26.h>
+#include <drivers/shark_input26.h>
+#include <drivers/shark_keyb26.h>
+
+/*+ sysyem tick in us +*/
+#define TICK 0
+
+#define RRTICK 10000
+
+/*+ Interrupt Server +*/
+#define INTDRIVE_Q 1000
+#define INTDRIVE_U 0.1*MAX_BANDWIDTH
+#define INTDRIVE_FLAG 0
+
+void call_shutdown_task(void *arg);
+int device_drivers_init();
+int device_drivers_close();
+void set_shutdown_task();
+TASK shutdown_task_body(void *arg);
+
+PID shutdown_task_PID = -1;
+
+TIME __kernel_register_levels__(void *arg)
+{
+ struct multiboot_info *mb = (struct multiboot_info *)arg;
+
+ INTDRIVE_register_level(INTDRIVE_Q, INTDRIVE_Q, INTDRIVE_U, INTDRIVE_FLAG);
+ RM_register_level(RM_ENABLE_ALL);
+ PS_register_level(PS_ENABLE_ALL_RM,1,1000,100000);
+ RR_register_level(RRTICK, RR_MAIN_YES, mb);
+ PS_register_level(4,1,10000,100000);
+ PS_register_level(4,1,30000,100000);
+
+ dummy_register_level();
+
+ SEM_register_module();
+
+ return TICK;
+}
+
+TASK __init__(void *arg)
+{
+ struct multiboot_info *mb = (struct multiboot_info *)arg;
+
+ /* Create the shutdown task. It will be activated at RUNLEVEL
+ SHUTDOWN */
+ set_shutdown_task();
+
+ /* Init the drivers */
+ device_drivers_init();
+
+ /* Set the shutdown task activation */
+ sys_atrunlevel(call_shutdown_task, NULL, RUNLEVEL_SHUTDOWN);
+
+ __call_main__(mb);
+
+ return (void *)0;
+}
+
+void set_shutdown_task() {
+
+ /* WARNING: the shutdown task is a background thread. It cannot execute
+ if the system is overloaded */
+ NRT_TASK_MODEL nrt;
+
+ nrt_task_default_model(nrt);
+ nrt_task_def_system(nrt);
+
+ shutdown_task_PID = task_create("Shutdown Task",shutdown_task_body,&nrt,NULL);
+ if (shutdown_task_PID == NIL) {
+ sys_shutdown_message("Error: Cannot create shutdown task\n");
+ exit(1);
+ }
+
+}
+
+int device_drivers_init() {
+
+ KEYB_PARMS kparms = BASE_KEYB;
+
+ LINUXC26_register_module(TRUE);
+
+ INPUT26_init();
+
+ keyb_def_ctrlC(kparms, NULL);
+
+ KEYB26_init(&kparms);
+
+ return 0;
+
+}
+
+int device_drivers_close() {
+
+ KEYB26_close();
+
+ INPUT26_close();
+
+ return 0;
+
+}
+
+#define SHUTDOWN_TIMEOUT_SEC 3
+
+void call_shutdown_task(void *arg)
+{
+ struct timespec t;
+
+ sys_gettime(&t);
+ t.tv_sec += SHUTDOWN_TIMEOUT_SEC;
+
+ /* Emergency timeout to exit from RUNLEVEL_SHUTDOWN */
+ kern_event_post(&t,(void *)((void *)sys_abort_shutdown),(void *)0);
+
+ task_activate(shutdown_task_PID);
+}
+
+TASK shutdown_task_body(void *arg) {
+
+ device_drivers_close();
+
+ sys_shutdown_message("-- S.Ha.R.K. Closed --\n");
+
+ return NULL;
+
+}
+
+
+
+
Index: demos/branches/xen/base/iaster8.c
===================================================================
--- demos/branches/xen/base/iaster8.c (nonexistent)
+++ demos/branches/xen/base/iaster8.c (revision 1684)
@@ -0,0 +1,224 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Paolo Gai <pj@gandalf.sssup.it>
+ * (see the web pages for full authors list)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/**
+ ------------
+ CVS : $Id: iaster8.c,v 1.8 2006-07-03 12:53:41 tullio Exp $
+
+ File: $File$
+ Revision: $Revision: 1.8 $
+ Last update: $Date: 2006-07-03 12:53:41 $
+ ------------
+
+ System initialization file
+
+ h3piss.c
+
+ These functions register the following levels:
+
+ an EDF (Earliest Deadline First) level
+ a CBS (Costant Bandwidth Server) level
+ a SS (Sporadic Server) level
+ a RR (Round Robin) level
+ a Dummy level
+
+ It can accept these task models:
+
+ HARD_TASK_MODEL (wcet+mit) at level 0
+ SOFT_TASK_MODEL (met, period) at level 1
+ SOFT_TASK_MODEL (periodicity=APERIODIC) at level 2
+ NRT_TASK_MODEL at level 3
+
+**/
+
+/*
+ * Copyright (C) 2000 Paolo Gai
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+
+
+#include "kernel/kern.h"
+#include "intdrive/intdrive/intdrive.h"
+#include "rm/rm/rm.h"
+#include "edf/edf/edf.h"
+#include "cbs/cbs/cbs.h"
+#include "rr/rr/rr.h"
+#include "dummy/dummy/dummy.h"
+#include "ss/ss/ss.h"
+
+#include "sem/sem/sem.h"
+#include "cabs/cabs/cabs.h"
+#include "pi/pi/pi.h"
+#include "pc/pc/pc.h"
+#include "srp/srp/srp.h"
+#include "npp/npp/npp.h"
+#include "nop/nop/nop.h"
+
+#include <drivers/shark_linuxc26.h>
+#include <drivers/shark_input26.h>
+#include <drivers/shark_keyb26.h>
+
+/*+ system tick in us +*/
+#define TICK 1000
+
+/*+ RR tick in us +*/
+#define RRTICK 10000
+
+/*+ Interrupt Server +*/
+#define INTDRIVE_Q 1000
+#define INTDRIVE_U 0.1*MAX_BANDWIDTH
+#define INTDRIVE_FLAG 0
+
+void call_shutdown_task(void *arg);
+int device_drivers_init();
+int device_drivers_close();
+void set_shutdown_task();
+TASK shutdown_task_body(void *arg);
+
+PID shutdown_task_PID = -1;
+
+TIME __kernel_register_levels__(void *arg)
+{
+ struct multiboot_info *mb = (struct multiboot_info *)arg;
+ LEVEL EDF_level;
+
+ INTDRIVE_register_level(INTDRIVE_Q, INTDRIVE_Q, INTDRIVE_U, INTDRIVE_FLAG);
+ EDF_level = EDF_register_level(EDF_ENABLE_ALL);
+ CBS_register_level(CBS_ENABLE_ALL, EDF_level);
+ SS_register_level(SS_ENABLE_GUARANTEE_EDF,1,5000,20000);
+ RR_register_level(RRTICK, RR_MAIN_YES, mb);
+ dummy_register_level();
+
+ SEM_register_module();
+
+ CABS_register_module();
+
+ PC_register_module();
+ PI_register_module();
+ NPP_register_module();
+ SRP_register_module();
+ NOP_register_module();
+
+ return TICK;
+}
+
+TASK __init__(void *arg)
+{
+ struct multiboot_info *mb = (struct multiboot_info *)arg;
+
+ /* Create the shutdown task. It will be activated at RUNLEVEL
+ SHUTDOWN */
+ set_shutdown_task();
+
+ /* Init the drivers */
+ device_drivers_init();
+
+ /* Set the shutdown task activation */
+ sys_atrunlevel(call_shutdown_task, NULL, RUNLEVEL_SHUTDOWN);
+
+ __call_main__(mb);
+
+ return (void *)0;
+}
+
+void set_shutdown_task() {
+
+ /* WARNING: the shutdown task is a background thread. It cannot execute
+ if the system is overloaded */
+ NRT_TASK_MODEL nrt;
+
+ nrt_task_default_model(nrt);
+ nrt_task_def_system(nrt);
+
+ shutdown_task_PID = task_create("Shutdown Task",shutdown_task_body,&nrt,NULL);
+ if (shutdown_task_PID == NIL) {
+ sys_shutdown_message("Error: Cannot create shutdown task\n");
+ exit(1);
+ }
+
+}
+
+int device_drivers_init() {
+
+ KEYB_PARMS kparms = BASE_KEYB;
+
+ LINUXC26_register_module(TRUE);
+
+ INPUT26_init();
+
+ keyb_def_ctrlC(kparms, NULL);
+
+ KEYB26_init(&kparms);
+
+ return 0;
+
+}
+
+int device_drivers_close() {
+
+ KEYB26_close();
+
+ INPUT26_close();
+
+ return 0;
+
+}
+
+#define SHUTDOWN_TIMEOUT_SEC 3
+
+void call_shutdown_task(void *arg)
+{
+ struct timespec t;
+
+ sys_gettime(&t);
+ t.tv_sec += SHUTDOWN_TIMEOUT_SEC;
+
+ /* Emergency timeout to exit from RUNLEVEL_SHUTDOWN */
+ kern_event_post(&t,(void *)((void *)sys_abort_shutdown),(void *)0);
+
+ task_activate(shutdown_task_PID);
+}
+
+TASK shutdown_task_body(void *arg) {
+
+ device_drivers_close();
+
+ sys_shutdown_message("-- S.Ha.R.K. Closed --\n");
+
+ return NULL;
+
+}
+
+
+
+
Index: demos/branches/xen/base/aster7.c
===================================================================
--- demos/branches/xen/base/aster7.c (nonexistent)
+++ demos/branches/xen/base/aster7.c (revision 1684)
@@ -0,0 +1,314 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Paolo Gai <pj@gandalf.sssup.it>
+ * (see the web pages for full authors list)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/*
+ * Copyright (C) 2000 Giorgio Buttazzo, Paolo Gai, Massimiliano Giorgi
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ *
+ * CVS : $Id: aster7.c,v 1.7 2006-07-03 12:57:05 tullio Exp $
+
+ this is a part of the classic Hartik demo Aster.
+
+ it is based on test 10(A), and test the PS with RM.
+
+ The JetControl is served by a dedicated Polling Server, too.
+
+ There are APER_MAX tasks sleeping, and when an asteroide task finish
+ the current activation, it activate also an aperiodic task chosen
+ randomly (if the task chosen is already active, the task_activate do
+ nothing!)
+
+*/
+
+#include "kernel/kern.h"
+#include "edf/edf/edf.h"
+
+#include <drivers/shark_linuxc26.h>
+#include <drivers/shark_input26.h>
+#include <drivers/shark_keyb26.h>
+
+int num_aster = 0;
+#define ASTER_LIM 60
+#define DISPLAY_MAX 15
+#define ASTER_MAX 70
+#define STAT_Y 9
+
+#define APER_MAX 8
+
+/* Pentium 133 / Celeron 366 */
+#define PER_WCET 25000 /* 7800 */
+#define APER_WCET 5500 /* 1400 */
+#define CLOCK_WCET 500 /* 200 */
+#define ASTER_WCET 500 /* 200 */
+
+#define APER_REP 2200
+
+PID aper_table[APER_MAX];
+
+TASK asteroide(void)
+{
+ int i;
+ int y = rand() % 7 + 1;
+
+ int load1,j;
+
+ char s[2];
+
+ s[0] = '*'; s[1] = 0;
+
+ /*for (;;)*/ {
+ i = 1;
+ while (i < ASTER_LIM) {
+ load1 = 10000; //8000 + rand()%2000;
+ for (j=0; j<load1; j++) {
+ s[0] = '*' + rand() % 100;
+ puts_xy(i,y,rand()%15+1,s);
+ }
+
+ task_activate(aper_table[rand()%APER_MAX]);
+ task_endcycle();
+
+ puts_xy(i,y,WHITE," ");
+ i++;
+ }
+ }
+ num_aster--;
+ return 0;
+}
+
+TASK aper_asteroid(void *a)
+{
+ int i;
+ int y = rand() % 7 + 1;
+
+ int load1,j;
+ int c;
+
+ char s[2];
+
+ c = (int)a;
+ s[0] = '*'; s[1] = 0;
+
+ for (;;) {
+ i = 1;
+ while (i < ASTER_LIM) {
+ load1 = APER_REP; //8000 + rand()%2000;
+ for (j=0; j<load1; j++) {
+ s[0] = '*' + rand() % 100;
+ puts_xy(i,y,rand()%15+1,s);
+ }
+ s[0] = c;
+ puts_xy(i,y,rand()%15+1,s);
+
+ task_endcycle();
+
+ puts_xy(i,y,WHITE," ");
+ i++;
+ }
+ }
+}
+
+TASK aster()
+{
+ PID p;
+
+ HARD_TASK_MODEL m;
+ int r;
+ int x; // adaptive bandwidth...
+
+ hard_task_default_model(m);
+ hard_task_def_wcet(m,PER_WCET);
+ hard_task_def_ctrl_jet(m);
+
+ x = 200;
+
+ srand(7);
+ while (1) {
+ if (num_aster < ASTER_MAX) {
+ r = (rand() % 200);
+
+ hard_task_def_arg(m,(void *)((rand() % 7)+1));
+ hard_task_def_mit(m, (x+r)*1000);
+ p = task_create("aaa",asteroide,&m,NULL);
+ if (p == -1)
+ {
+ if (x < 500 && errno != ENO_AVAIL_TASK) x += 1;
+ printf_xy(62,3,WHITE,"adapt=%3u err=%d",
+ iq_query_first(&freedesc),errno);
+ }
+ else {
+ num_aster++;
+ printf_xy(62,3,WHITE,"adapt=%3u ",x);//,errno);
+ task_activate(p);
+ x /= 2;
+ if (x<50) x = 50;
+ }
+ }
+ task_endcycle();
+ }
+}
+
+TASK clock()
+{
+ int s = 0, m = 0;
+
+ while(1) {
+ printf_xy(62,1,WHITE,"%2d:%2d ast=%d",m,s, num_aster);
+ printf_xy(62,2,WHITE,"U=%12u",EDF_usedbandwidth(1));
+ task_endcycle();
+
+ if (++s > 59) {
+ s = 0;
+ m++;
+ }
+ printf_xy(62,1,WHITE,"%2d:%2d ast=%d",m,s, num_aster);
+ printf_xy(62,2,WHITE,"U=%12u",EDF_usedbandwidth(1));
+ task_endcycle();
+ }
+}
+
+
+
+/* we consider the first ASTER_MAX + 2 tasks from the PID 2
+ and plot on the screen the elapsed times... */
+TASK jetcontrol()
+{
+ int i; /* a counter */
+ TIME sum, max, curr, last[5];
+ int nact;
+ int j; /* the elements set by jet_gettable */
+ PID p;
+
+
+ kern_cli();
+ printf_xy(0,STAT_Y,WHITE,"PID ³ Mean T.³ Max T. ³ N.A. ³ Curr. ³ Last1 ³ Last2 ³ Last3 ³ Last4 ³ Last5");
+ kern_sti();
+
+ for (;;) {
+ for (i=0,p=0; i<DISPLAY_MAX+5 && p<MAX_PROC; p++) {
+ if (jet_getstat(p, &sum, &max, &nact, &curr) == -1) continue;
+
+ for (j=0; j<5; j++) last[j] = 0;
+ jet_gettable(p, &last[0], 5);
+ kern_cli();
+ printf_xy(0,STAT_Y+i+1,WHITE,"%-3d ³ %-6d ³ %-6d ³ %-4d ³ %-7d ³ %-5d ³ %-5d ³ %-5d ³ %-5d ³ %-5d",
+ p, (int)sum/(nact==0 ? 1 : nact), (int)max, nact, (int)curr, (int)last[0], (int)last[1], (int)last[2], (int)last[3], (int)last[4]);
+ kern_sti();
+ i++;
+ }
+ }
+}
+
+
+void fine(KEY_EVT *e)
+{
+ exit(0);
+}
+
+
+int main(int argc, char **argv)
+{
+ PID p1,p2,p3; //,p4,p5,p6;
+ HARD_TASK_MODEL m;
+ NRT_TASK_MODEL m_nrt;
+ SOFT_TASK_MODEL m_aper;
+ int i;
+
+ KEY_EVT emerg;
+
+ clear();
+
+ cprintf("Press Ctrl-C to end the demo...");
+
+ emerg.ascii = 'c';
+ emerg.scan = KEY_C;
+ emerg.flag = CNTL_BIT;
+ emerg.status = KEY_PRESSED;
+ keyb_hook(emerg,fine,FALSE);
+
+ emerg.flag = CNTR_BIT;
+ emerg.status = KEY_PRESSED;
+ keyb_hook(emerg,fine,FALSE);
+
+ hard_task_default_model(m);
+ hard_task_def_wcet(m,ASTER_WCET);
+ hard_task_def_mit(m,10000);
+ hard_task_def_group(m,1);
+ hard_task_def_ctrl_jet(m);
+
+ nrt_task_default_model(m_nrt);
+ nrt_task_def_group(m_nrt,1);
+ nrt_task_def_ctrl_jet(m_nrt);
+
+ p1 = task_create("Aster",aster,&m,NULL);
+ if (p1 == -1) {
+ sys_shutdown_message("test7.c(main): Could not create task <aster> ...");
+ exit(1);
+ }
+
+ hard_task_def_mit(m,500000);
+ hard_task_def_wcet(m,CLOCK_WCET);
+ p2 = task_create("Clock",clock,&m,NULL);
+ if (p2 == -1) {
+ sys_shutdown_message("test7.c(main): Could not create task <Clock> ...");
+ exit(1);
+ }
+
+ soft_task_default_model(m_aper);
+ soft_task_def_ctrl_jet(m_aper);
+ soft_task_def_level(m_aper, 2);
+ soft_task_def_group(m_aper,1);
+ soft_task_def_aperiodic(m_aper);
+ p3 = task_create("JetControl",jetcontrol,&m_aper,NULL);
+ if (p3 == -1) {
+ sys_shutdown_message("test7.c(main): Could not create task <JetControl> ...");
+ exit(1);
+ }
+
+ soft_task_def_wcet(m_aper,APER_WCET);
+ soft_task_def_ctrl_jet(m_aper);
+ soft_task_def_aperiodic(m_aper);
+
+ for (i=0; i<APER_MAX; i++) {
+ soft_task_def_level(m_aper, i/4 + 4);
+ soft_task_def_arg(m_aper, (void *)(i/4 ? 'Û' : '±'));
+ aper_table[i] = task_create("aper",aper_asteroid,&m_aper,NULL);
+ if (aper_table[i] == -1) {
+ sys_shutdown_message("test7.c(main): Could not create task <aper> ...");
+ exit(1);
+ }
+ }
+
+ group_activate(1);
+ return 0;
+}
+
Index: demos/branches/xen/base/aster8.c
===================================================================
--- demos/branches/xen/base/aster8.c (nonexistent)
+++ demos/branches/xen/base/aster8.c (revision 1684)
@@ -0,0 +1,505 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Paolo Gai <pj@gandalf.sssup.it>
+ * (see the web pages for full authors list)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/*
+ * Copyright (C) 2000 Giorgio Buttazzo, Paolo Gai, Massimiliano Giorgi
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ *
+ * CVS : $Id: aster8.c,v 1.7 2006-07-03 12:53:13 tullio Exp $
+
+ Test for Sporadic Server (ss):
+
+ this is a part of the classic Hartik demo Aster.
+
+ it is based on test 17 (h), and the JobControl Task uses an
+ SOFT_TASK_MODEL served by a sporadic server
+ There are two "dummy" tasks that increment a counter and print
+ the value. One uses a SOFT_TASK_MODEL served by sporadic server,
+ the other uses a NRT_TASK_MODEL handled by RR module.
+
+*/
+
+#include "kernel/kern.h"
+#include "edf/edf/edf.h"
+#include "cbs/cbs/cbs.h"
+#include "ss/ss/ss.h"
+
+#include <drivers/shark_keyb26.h>
+
+int num_aster = 0;
+#define EDF_LEV 1
+#define CBS_LEV 2
+#define SS_LEV 3
+
+#define ASTER_LIM 60
+#define DISPLAY_MAX 8
+#define ASTER_MAX 70
+#define STAT_Y 9
+
+#define PER_MAX 5
+#define APER_MAX 8
+
+#define PER_WCET 16000
+#define APER_WCET 22000
+#define JET_WCET 20000
+
+#define APER_REP 22000
+
+PID aper_table[APER_MAX];
+
+mutex_t m1;
+
+
+#define PIMUTEX
+//#define PCMUTEX
+//#define NPPMUTEX
+//#define NOPMUTEX
+
+#define LONGSC
+
+#ifdef LONGSC
+#define SOFT_MET 12000 /* 12000 */
+#define CLOCK_WCET 300 /* 300*/
+#define ASTER_WCET 300 /* 300*/
+#else
+#define SOFT_MET 5000 /* 4500 */
+#define CLOCK_WCET 2000 /* 200*/
+#define ASTER_WCET 2000 /* 200*/
+#endif
+
+PID p1,p2,p3,p4,p5;
+
+TASK asteroide(void)
+{
+ int i;
+ int y = rand() % 7 + 1;
+
+ int load1,j;
+
+ char s[2];
+
+ s[0] = '*'; s[1] = 0;
+
+ for (;;) {
+ i = 1;
+ while (i < ASTER_LIM) {
+ load1 = 10000; //8000 + rand()%2000;
+ #ifdef LONGSC
+ mutex_lock(&m1);
+ #endif
+ for (j=0; j<load1; j++) {
+ s[0] = '*' + rand() % 100;
+ #ifndef LONGSC
+ mutex_lock(&m1);
+ #endif
+ puts_xy(i,y,rand()%15+1,s);
+ #ifndef LONGSC
+ mutex_unlock(&m1);
+ #endif
+ }
+ #ifdef LONGSC
+ mutex_unlock(&m1);
+ #endif
+
+ task_activate(aper_table[rand()%APER_MAX]);
+ task_endcycle();
+
+ mutex_lock(&m1);
+ puts_xy(i,y,WHITE," ");
+ mutex_unlock(&m1);
+ i++;
+ }
+ }
+ //num_aster--;
+}
+
+TASK aper_asteroid(void *a)
+{
+ int i;
+ int y = rand() % 7 + 1;
+
+ int load1,j;
+ int c;
+
+ char s[2];
+
+ c = (int)a;
+ s[0] = '*'; s[1] = 0;
+
+ for (;;) {
+ i = 1;
+ while (i < ASTER_LIM) {
+ load1 = APER_REP; //8000 + rand()%2000;
+ #ifdef LONGSC
+ mutex_lock(&m1);
+ #endif
+ for (j=0; j<load1; j++) {
+ s[0] = '*' + rand() % 100;
+ #ifndef LONGSC
+ mutex_lock(&m1);
+ #endif
+ puts_xy(i,y,rand()%15+1,s);
+ #ifndef LONGSC
+ mutex_unlock(&m1);
+ #endif
+ }
+ s[0] = c;
+ #ifndef LONGSC
+ mutex_unlock(&m1);
+ #endif
+ mutex_lock(&m1);
+ puts_xy(i,y,rand()%15+1,s);
+ mutex_unlock(&m1);
+
+ task_endcycle();
+
+ mutex_lock(&m1);
+ puts_xy(i,y,WHITE," ");
+ mutex_unlock(&m1);
+ i++;
+ }
+ }
+}
+
+TASK soft_aster(void)
+{
+ int i;
+ int y = rand() % 7 + 1;
+
+ int load1,j;
+
+ char s[2];
+
+ s[0] = '*'; s[1] = 0;
+
+ /*for (;;)*/ {
+ i = 1;
+ while (i < ASTER_LIM) {
+ load1 = 1000 + rand()%9000;
+ #ifdef LONGSC
+ mutex_lock(&m1);
+ #endif
+ for (j=0; j<load1; j++) {
+ s[0] = '*' + rand() % 100;
+ #ifndef LONGSC
+ mutex_lock(&m1);
+ #endif
+ puts_xy(i,y,rand()%15+1,s);
+ #ifndef LONGSC
+ mutex_unlock(&m1);
+ #endif
+ }
+ s[0] = 1;
+ #ifndef LONGSC
+ mutex_lock(&m1);
+ #endif
+ //mutex_lock(&m1);
+ puts_xy(i,y,rand()%15+1,s);
+ mutex_unlock(&m1);
+
+ task_activate(aper_table[rand()%APER_MAX]);
+ task_endcycle();
+
+ mutex_lock(&m1);
+ puts_xy(i,y,WHITE," ");
+ mutex_unlock(&m1);
+ i++;
+ }
+ }
+ num_aster--;
+ return 0;
+}
+
+TASK aster()
+{
+ PID p;
+
+ SOFT_TASK_MODEL m_soft;
+ int r;
+ int x; // adaptive bandwidth...
+
+ srand(7);
+
+
+ soft_task_default_model(m_soft);
+ soft_task_def_met(m_soft,SOFT_MET);
+ soft_task_def_ctrl_jet(m_soft);
+
+ x = 128; //64;
+
+ while (1) {
+ if (num_aster < ASTER_MAX) {
+ r = (rand() % 200);
+
+ soft_task_def_period(m_soft, (x+r)*1000);
+ p = task_create("aaa",soft_aster,&m_soft,NULL);
+ if (p == -1)
+ {
+ if (x < 500 && errno != ENO_AVAIL_TASK) x += 1;
+ mutex_lock(&m1);
+ printf_xy(62,3,WHITE,"adapt=%3u err=%d",
+ iq_query_first(&freedesc), errno);
+ mutex_unlock(&m1);
+ }
+ else {
+ num_aster++;
+ mutex_lock(&m1);
+ printf_xy(62,3,WHITE,"adapt=%3u ",x);
+ mutex_unlock(&m1);
+ task_activate(p);
+ x /= 2;
+ if (x<50) x = 50;
+ }
+ }
+ task_endcycle();
+ }
+}
+
+TASK clock()
+{
+ int s = 0, m = 0;
+
+ while(1) {
+ mutex_lock(&m1);
+ printf_xy(62,1,WHITE,"%2d:%2d ast=%d",m,s, num_aster);
+ printf_xy(62,2,WHITE,"Uedf=%12u",EDF_usedbandwidth(EDF_LEV));
+ printf_xy(62,4,WHITE,"Ucbs=%12u",CBS_usedbandwidth(CBS_LEV));
+ printf_xy(62,5,WHITE,"CSss=%6d",SS_availCs(SS_LEV));
+ mutex_unlock(&m1);
+
+ task_endcycle();
+
+ if (++s > 59) {
+ s = 0;
+ m++;
+ }
+ mutex_lock(&m1);
+ printf_xy(62,1,WHITE,"%2d:%2d ast=%d",m,s, num_aster);
+ printf_xy(62,2,WHITE,"Uedf=%12u",EDF_usedbandwidth(EDF_LEV));
+ printf_xy(62,4,WHITE,"Ucbs=%12u",CBS_usedbandwidth(CBS_LEV));
+ printf_xy(62,5,WHITE,"CSss=%6d",SS_availCs(SS_LEV));
+ mutex_unlock(&m1);
+ task_endcycle();
+ }
+}
+
+
+
+/* we consider the first ASTER_MAX + 2 tasks from the PID 2
+ and plot on the screen the elapsed times... */
+TASK jetcontrol()
+{
+ int i; /* a counter */
+ TIME sum, max, curr, last[5];
+ int nact;
+ int j; /* the elements set by jet_gettable */
+ PID p;
+
+
+ mutex_lock(&m1);
+ printf_xy(0,STAT_Y,WHITE,"PID ³ Mean T.³ Max T. ³ N.A. ³ Curr. ³ Last1 ³ Last2 ³ Last3 ³ Last4 ³ Last5");
+ mutex_unlock(&m1);
+
+ for (;;) {
+ for (i=0,p=0; i<DISPLAY_MAX+5 && p<MAX_PROC; p++) {
+ if (jet_getstat(p, &sum, &max, &nact, &curr) == -1 /*||
+ (proc_table[p].pclass & 0xFF00) == APERIODIC_PCLASS ||
+ (proc_table[p].pclass & 0xFF00) == PERIODIC_PCLASS*/ ) continue;
+
+ for (j=0; j<5; j++) last[j] = 0;
+ jet_gettable(p, &last[0], 5);
+ mutex_lock(&m1);
+ if (proc_table[p].task_level == 2)
+ printf_xy(0,STAT_Y+i+1,WHITE,"%-3d ³ %-6d ³ %-6d ³ %-4d ³ %-7d ³ %-5d ³ %-5d ³ %-5d ³ %-5d ³ %-5d",
+ p, (int)sum/(nact==0 ? 1 : nact), (int)max, nact, (int)CBS_get_nact(2,p), (int)last[0], (int)last[1], (int)last[2], (int)last[3], (int)last[4]);
+// p, sum/(nact==0 ? 1 : nact), max, proc_table[p].avail_time, proc_table[p].status, proc_table[p].shadow, proc_table[p].timespec_priority.tv_sec,proc_table[p].timespec_priority.tv_nsec/1000 , CBS_get_nact(2,p), last[4]);
+ else
+ printf_xy(0,STAT_Y+i+1,WHITE,"%-3d ³ %-6d ³ %-6d ³ %-4d ³ %-7d ³ %-5d ³ %-5d ³ %-5d ³ %-5d ³ %-5d",
+ p, (int)sum/(nact==0 ? 1 : nact), (int)max, (int)nact, (int)curr, (int)last[0], (int)last[1], (int)last[2], (int)last[3], (int)last[4]);
+// p, sum/(nact==0 ? 1 : nact), max, nact, proc_table[p].status, proc_table[p].shadow, proc_table[p].timespec_priority.tv_sec,proc_table[p].timespec_priority.tv_nsec/1000 , last[3], last[4]);
+ mutex_unlock(&m1);
+ i++;
+ task_activate(p3);
+ task_endcycle();
+ }
+ }
+}
+
+void fine(KEY_EVT *e)
+{
+
+ exit(0);
+
+}
+
+void mydummyaper(void) {
+ int i=0;
+ while(1) {
+ mutex_lock(&m1);
+ printf_xy(1,24,RED,"dummyAPER pid=%d: %d",p4,i++);
+ mutex_unlock(&m1);
+ task_activate(p4);
+ task_endcycle();
+ }
+}
+
+void mydummynrt(void) {
+ int i=0;
+ while(1) {
+ mutex_lock(&m1);
+ printf_xy(40,24,RED,"dummyNRT pid=%d: %d",p5,i++);
+ mutex_unlock(&m1);
+ }
+}
+
+int main(int argc, char **argv)
+{
+// PID p1,p2,p5;
+ HARD_TASK_MODEL m;
+ NRT_TASK_MODEL m_nrt;
+ SOFT_TASK_MODEL m_aper;
+ SOFT_TASK_MODEL m_soft;
+
+ #ifdef PIMUTEX
+ PI_mutexattr_t a;
+ #endif
+
+ #ifdef PCMUTEX
+ PC_mutexattr_t a;
+ #endif
+
+ #ifdef NPPMUTEX
+ NPP_mutexattr_t a;
+ #endif
+
+ #ifdef NOPMUTEX
+ NOP_mutexattr_t a;
+ #endif
+
+
+ KEY_EVT emerg;
+
+ emerg.ascii = 'c';
+ emerg.scan = KEY_C;
+ emerg.flag = CNTL_BIT;
+ emerg.status = KEY_PRESSED;
+ keyb_hook(emerg,fine,FALSE);
+
+ emerg.flag = CNTR_BIT;
+ emerg.status = KEY_PRESSED;
+ keyb_hook(emerg,fine,FALSE);
+
+ clear();
+
+ cprintf("Press Ctrl-C to end the demo...");
+
+ hard_task_default_model(m);
+ hard_task_def_mit(m,100000);
+ hard_task_def_wcet(m,ASTER_WCET);
+ hard_task_def_group(m,1);
+ hard_task_def_ctrl_jet(m);
+
+ nrt_task_default_model(m_nrt);
+ nrt_task_def_group(m_nrt,1);
+ nrt_task_def_ctrl_jet(m_nrt);
+
+ soft_task_default_model(m_aper);
+ soft_task_def_group(m_aper,1);
+ soft_task_def_ctrl_jet(m_aper);
+ soft_task_def_aperiodic(m_aper);
+
+ soft_task_default_model(m_soft);
+ soft_task_def_period(m_soft,10000);
+ soft_task_def_met(m_soft,JET_WCET);
+ soft_task_def_group(m_soft,1);
+ soft_task_def_ctrl_jet(m_soft);
+ soft_task_def_aperiodic(m_soft);
+
+ p1 = task_create("Aster",aster,&m,NULL);
+ if (p1 == -1) {
+ sys_shutdown_message("test7.c(main): Could not create task <aster> ...");
+ exit(1);
+ return 0;
+ }
+
+ hard_task_def_mit(m,50000);
+ hard_task_def_wcet(m,CLOCK_WCET);
+ p2 = task_create("Clock",clock,&m,NULL);
+ if (p2 == -1) {
+ sys_shutdown_message("test7.c(main): Could not create task <Clock> ...");
+ exit(1);
+ return 0;
+ }
+
+ p3 = task_create("JetControl",jetcontrol,&m_aper,NULL);
+ if (p3 == -1) {
+ sys_shutdown_message("test7.c(main): Could not create task <JetControl> ...");
+ exit(1);
+ return 0;
+ }
+
+ p4 = task_create("MyDummyAper",(void *(*)(void*))mydummyaper,&m_aper,NULL);
+ if (p4 == -1) {
+ sys_shutdown_message("Could not create task <MyDummyAper> ...");
+ exit(1);
+ return 0;
+ }
+
+ p5 = task_create("MyDummyNRT",(void *(*)(void*))mydummynrt,&m_nrt,NULL);
+ if (p5 == -1) {
+ sys_shutdown_message("Could not create task <MyDummyNRT> ...");
+ exit(1);
+ return 0;
+ }
+
+ #ifdef PIMUTEX
+ PI_mutexattr_default(a);
+ #endif
+
+ #ifdef PCMUTEX
+ PC_mutexattr_default(a);
+ #endif
+
+ #ifdef NPPMUTEX
+ NPP_mutexattr_default(a);
+ #endif
+
+ #ifdef NOPMUTEX
+ NOP_mutexattr_default(a);
+ #endif
+
+ mutex_init(&m1, &a);
+
+ group_activate(1);
+ return 0;
+}
+
Index: demos/branches/xen/base/ego.c
===================================================================
--- demos/branches/xen/base/ego.c (nonexistent)
+++ demos/branches/xen/base/ego.c (revision 1684)
@@ -0,0 +1,204 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Paolo Gai <pj@gandalf.sssup.it>
+ * (see the web pages for full authors list)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/**
+ ------------
+ CVS : $Id: ego.c,v 1.8 2006-07-03 12:47:33 tullio Exp $
+
+ File: $File$
+ Revision: $Revision: 1.8 $
+ Last update: $Date: 2006-07-03 12:47:33 $
+ ------------
+**/
+
+/*
+ * Copyright (C) 2000 Paolo Gai and Giorgio Buttazzo
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+/****************************************************************/
+/* PERIODIC PROCESS TEST */
+/****************************************************************/
+
+#include <kernel/kern.h>
+
+#include <drivers/shark_keyb26.h>
+#include <drivers/shark_fb26.h>
+#define X0 10
+
+/* task periods */
+#define PERIOD_T1 100000
+#define PERIOD_T2 200000
+#define PERIOD_T3 300000
+
+/* X position of the text printed by each task */
+int y[3] = {100, 180, 260};
+
+/* text printed by each task */
+char talk[3][50] = { "I am ego1 and I print a character every 100 ms",
+ "I am ego2 and I print a character every 200 ms",
+ "I am ego3 and I print a character every 300 ms"};
+
+/***************************************************************/
+
+TASK ego(void *arg)
+{
+int i = (int)arg;
+int leng;
+char s[2];
+int x;
+int j = 0;
+
+ /* compute the length of the string to print */
+ leng = 0;
+ while (talk[i][leng] != 0) leng++;
+
+ x = X0;
+ s[1] = 0;
+ task_endcycle();
+
+ while (1) {
+ s[0] = talk[i][j];
+ grx_text(s,x,y[i],rgb16(255,255,255),0);
+ x += 8;
+ if (++j == leng) {
+ j = 0;
+ x = X0;
+ y[i] += 8;
+ if (y[i]>340) y[i]=100;
+ }
+ task_endcycle();
+ }
+}
+
+
+/****************************************************************/
+
+/* This function is called when Alt-X is pressed.
+*/
+void my_end(KEY_EVT* e)
+{
+ exit(0);
+}
+
+/******************************************************************/
+
+/* This function is called when the system exit correctly after Alt-X.
+ It exits from the graphic mode and then it prints a small greeting.
+ Note that:
+ - The function calls grx_exit, so it must be registered using
+ RUNLEVEL_BEFORE_EXIT (RUNLEVEL_AFTER_EXIT does not work because
+ at that point the kernel is already returned in real mode!!!)
+ - When an exception is raised, the exception handler is called.
+ Since the exception handler already exits from the graphic mode,
+ this funcion has not to be called. For this reason:
+ . we registered byebye using the flag NO_AT_ABORT
+ . the exception handler exits using exit; in that way byebye is
+ NOT called
+*/
+
+/****************************** MAIN ******************************/
+
+int main(int argc, char **argv)
+{
+ PID pid1, pid2, pid3;
+ KEY_EVT emerg;
+ HARD_TASK_MODEL m1, m2, m3;
+
+ /* set the keyboard handler to exit correctly */
+ emerg.ascii = 'c';
+ emerg.scan = KEY_C;
+ emerg.flag = CNTL_BIT;
+ emerg.status = KEY_PRESSED;
+ keyb_hook(emerg,my_end,FALSE);
+
+ emerg.flag = CNTR_BIT;
+ emerg.status = KEY_PRESSED;
+ keyb_hook(emerg,my_end,FALSE);
+
+ /* a small banner */
+ grx_text("EGO Test",8,8,rgb16(255,255,255),0);
+ grx_text("Press Ctrl-C to exit",8,16,rgb16(255,255,255),0);
+
+ /* ego1 creation */
+ hard_task_default_model(m1);
+ hard_task_def_ctrl_jet (m1);
+ hard_task_def_arg (m1, (void *)0);
+ hard_task_def_wcet (m1, 5000);
+ hard_task_def_mit (m1, PERIOD_T1);
+ hard_task_def_group (m1,1);
+ pid1 = task_create("ego1", ego, &m1, NULL);
+ if (pid1 == NIL) {
+ sys_shutdown_message("Could not create task <ego1>");
+ exit(1);
+ }
+
+ /* ego2 creation */
+ hard_task_default_model(m2);
+ hard_task_def_ctrl_jet (m2);
+ hard_task_def_arg (m2, (void *)1);
+ hard_task_def_wcet (m2, 5000);
+ hard_task_def_mit (m2, PERIOD_T2);
+ hard_task_def_group (m2,1);
+ pid2 = task_create("ego2", ego, &m2, NULL);
+ if (pid2 == NIL) {
+ sys_shutdown_message("Could not create task <ego2>");
+ exit(1);
+ }
+
+ /* ego3 creation */
+ hard_task_default_model(m3);
+ hard_task_def_ctrl_jet (m3);
+ hard_task_def_arg (m3, (void *)2);
+ hard_task_def_wcet (m3, 5000);
+ hard_task_def_mit (m3, PERIOD_T3);
+ hard_task_def_group (m3,1);
+ pid3 = task_create("ego3", ego, &m3, NULL);
+ if (pid3 == NIL) {
+ sys_shutdown_message("Could not create task <ego3>");
+ exit(1);
+ }
+
+ /* and finally we activate the three threads... */
+ group_activate(1);
+
+ /*
+ now the task main ends, but the system does not shutdown because
+ there are the three task ego1, ego2, and ego3 running.
+
+ The demo will finish if a Alt-X key is pressed.
+ */
+
+ return 0;
+}
+
+/****************************************************************/
Index: demos/branches/xen/base/initgraph.c
===================================================================
--- demos/branches/xen/base/initgraph.c (nonexistent)
+++ demos/branches/xen/base/initgraph.c (revision 1684)
@@ -0,0 +1,194 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Giacomo Guidi <giacomo@gandalf.sssup.it>
+ * (see the web pages for full authors list)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+#include "kernel/kern.h"
+#include "intdrive/intdrive/intdrive.h"
+#include "edf/edf/edf.h"
+#include "hardcbs/hardcbs/hardcbs.h"
+#include "rr/rr/rr.h"
+#include "dummy/dummy/dummy.h"
+
+#include "sem/sem/sem.h"
+#include "cabs/cabs/cabs.h"
+
+#include <drivers/shark_linuxc26.h>
+#include <drivers/shark_pci26.h>
+#include <drivers/shark_input26.h>
+#include <drivers/shark_keyb26.h>
+#include <drivers/shark_fb26.h>
+
+#define FRAME_BUFFER_DEVICE 0
+
+/*+ sysyem tick in us +*/
+#define TICK 0
+
+/*+ RR tick in us +*/
+#define RRTICK 2000
+
+/*+ Interrupt Server +*/
+#define INTDRIVE_Q 1000
+#define INTDRIVE_U 0.1*MAX_BANDWIDTH
+#define INTDRIVE_FLAG 0
+
+void call_shutdown_task(void *arg);
+int device_drivers_init();
+int device_drivers_close();
+void set_shutdown_task();
+TASK shutdown_task_body(void *arg);
+
+PID shutdown_task_PID = -1;
+
+TIME __kernel_register_levels__(void *arg)
+{
+ struct multiboot_info *mb = (struct multiboot_info *)arg;
+ LEVEL EDF_level;
+
+ INTDRIVE_register_level(INTDRIVE_Q, INTDRIVE_Q, INTDRIVE_U, INTDRIVE_FLAG);
+ EDF_level = EDF_register_level(EDF_ENABLE_ALL);
+ HCBS_register_level(HCBS_ENABLE_ALL, EDF_level);
+ RR_register_level(RRTICK, RR_MAIN_YES, mb);
+ dummy_register_level();
+
+ SEM_register_module();
+ CABS_register_module();
+
+ return TICK;
+}
+
+TASK __init__(void *arg)
+{
+ struct multiboot_info *mb = (struct multiboot_info *)arg;
+
+ /* Create the shutdown task. It will be activated at RUNLEVEL
+ SHUTDOWN */
+ set_shutdown_task();
+
+ /* Init the drivers */
+ device_drivers_init();
+
+ /* Set the shutdown task activation */
+ sys_atrunlevel(call_shutdown_task, NULL, RUNLEVEL_SHUTDOWN);
+
+ __call_main__(mb);
+
+ return (void *)0;
+}
+
+void set_shutdown_task() {
+
+ /* WARNING: the shutdown task is a background thread. It cannot execute
+ if the system is overloaded */
+ NRT_TASK_MODEL nrt;
+
+ nrt_task_default_model(nrt);
+ nrt_task_def_system(nrt);
+
+ shutdown_task_PID = task_create("Shutdown Task",shutdown_task_body,&nrt,NULL);
+ if (shutdown_task_PID == NIL) {
+ sys_shutdown_message("Error: Cannot create shutdown task\n");
+ exit(0);
+ }
+
+}
+
+int device_drivers_init() {
+
+ int res;
+ KEYB_PARMS kparms = BASE_KEYB;
+
+ LINUXC26_register_module(TRUE);
+
+ PCI26_init();
+
+ INPUT26_init();
+
+ keyb_def_ctrlC(kparms, NULL);
+
+ KEYB26_init(&kparms);
+
+ FB26_init();
+
+ res = FB26_open(FRAME_BUFFER_DEVICE);
+ if (res) {
+ cprintf("Error: Cannot open graphical mode\n");
+ KEYB26_close();
+ INPUT26_close();
+ exit(0);
+ }
+
+ FB26_use_grx(FRAME_BUFFER_DEVICE);
+
+ FB26_setmode(FRAME_BUFFER_DEVICE,"640x480-16");
+
+ return 0;
+
+}
+
+int device_drivers_close() {
+
+ FB26_close(FRAME_BUFFER_DEVICE);
+
+ KEYB26_close();
+
+ INPUT26_close();
+
+ return 0;
+
+}
+
+#define SHUTDOWN_TIMEOUT_SEC 3
+
+void call_shutdown_task(void *arg)
+{
+ struct timespec t;
+
+ sys_gettime(&t);
+ t.tv_sec += SHUTDOWN_TIMEOUT_SEC;
+
+ /* Emergency timeout to exit from RUNLEVEL_SHUTDOWN */
+ kern_event_post(&t,(void *)((void *)sys_abort_shutdown),(void *)0);
+
+ task_activate(shutdown_task_PID);
+}
+
+TASK shutdown_task_body(void *arg) {
+
+ device_drivers_close();
+
+ sys_shutdown_message("-- S.Ha.R.K. Closed --\n");
+
+ return NULL;
+
+}
Index: demos/branches/xen/base/aster5.c
===================================================================
--- demos/branches/xen/base/aster5.c (nonexistent)
+++ demos/branches/xen/base/aster5.c (revision 1684)
@@ -0,0 +1,476 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Paolo Gai <pj@gandalf.sssup.it>
+ * (see the web pages for full authors list)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/*
+ * Copyright (C) 2000 Paolo Gai, Gerardo Lamastra and Giuseppe Lipari
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ *
+ * CVS : $Id: aster5.c,v 1.7 2006-07-03 11:14:56 tullio Exp $
+
+ this is a part of the classic Hartik demo Aster.
+
+ it is based on test 13 (d), and use the CBS to serve the periodic tasks.
+
+ There are not periodic tasks, only CBS tasks.
+
+ The tasks use a PI, NPP or NOP mutex to access the video memory.
+
+ A flag (LONGSC) is provided to try long and short critical sections.
+
+ This demo is really interesting because you can note the behavior of
+ the system, and the differences between the various protocols...
+
+*/
+
+#include "kernel/kern.h"
+#include "edf/edf/edf.h"
+#include "cbs/cbs/cbs.h"
+
+#include <drivers/shark_keyb26.h>
+
+int num_aster = 0;
+#define ASTER_LIM 60
+#define DISPLAY_MAX 15
+#define ASTER_MAX 70
+#define STAT_Y 9
+
+#define PER_MAX 5
+#define APER_MAX 8
+
+#define PER_WCET 6200
+#define APER_WCET 18400
+#define JET_WCET 10000
+#define JET_PERIOD 100000
+
+#define APER_REP 22000
+
+//PID aper_table[APER_MAX];
+
+mutex_t m1;
+
+
+#define PIMUTEX
+//#define NPPMUTEX
+//#define NOPMUTEX
+
+#define LONGSC
+
+#ifdef LONGSC
+#define SOFT_MET 3000 /* 3000 12000 */
+#define CLOCK_WCET 400 /* 200 300*/
+#define ASTER_WCET 400 /* 200 300*/
+#else
+#define SOFT_MET 80000 /* 4500 */
+#define CLOCK_WCET 2000 /* 200*/
+#define ASTER_WCET 2000 /* 200*/
+#endif
+
+TASK asteroide(void)
+{
+ int i;
+ int y = rand() % 7 + 1;
+
+ int load1,j;
+
+ char s[2];
+
+ s[0] = '*'; s[1] = 0;
+
+ for (;;) {
+ i = 1;
+ while (i < ASTER_LIM) {
+ load1 = 10000; //8000 + rand()%2000;
+#ifdef LONGSC
+ mutex_lock(&m1);
+#endif
+ for (j=0; j<load1; j++) {
+ s[0] = '*' + rand() % 100;
+#ifndef LONGSC
+ mutex_lock(&m1);
+#endif
+ puts_xy(i,y,rand()%15+1,s);
+#ifndef LONGSC
+ mutex_unlock(&m1);
+#endif
+ }
+#ifdef LONGSC
+ mutex_unlock(&m1);
+#endif
+
+ // task_activate(aper_table[rand()%APER_MAX]);
+ task_endcycle();
+
+ mutex_lock(&m1);
+ puts_xy(i,y,WHITE," ");
+ mutex_unlock(&m1);
+ i++;
+ }
+ }
+ //num_aster--;
+}
+
+TASK aper_asteroid(void *a)
+{
+ int i;
+ int y = rand() % 7 + 1;
+
+ int load1,j;
+ int c;
+
+ char s[2];
+
+ c = (int)a;
+ s[0] = '*'; s[1] = 0;
+
+ for (;;) {
+ i = 1;
+ while (i < ASTER_LIM) {
+ load1 = APER_REP; //8000 + rand()%2000;
+#ifdef LONGSC
+ mutex_lock(&m1);
+#endif
+ for (j=0; j<load1; j++) {
+ s[0] = '*' + rand() % 100;
+#ifndef LONGSC
+ mutex_lock(&m1);
+#endif
+ puts_xy(i,y,rand()%15+1,s);
+#ifndef LONGSC
+ mutex_unlock(&m1);
+#endif
+ }
+ s[0] = c;
+#ifndef LONGSC
+ mutex_lock(&m1);
+#endif
+ puts_xy(i,y,rand()%15+1,s);
+ mutex_unlock(&m1);
+
+ task_endcycle();
+
+ mutex_lock(&m1);
+ puts_xy(i,y,WHITE," ");
+ mutex_unlock(&m1);
+ i++;
+ }
+ }
+}
+
+TASK soft_aster(void)
+{
+ int i;
+ int y = rand() % 7 + 1;
+
+ int load1,j;
+
+ char s[2];
+
+ s[0] = '*'; s[1] = 0;
+
+ /*for (;;)*/ {
+ i = 1;
+ while (i < ASTER_LIM) {
+ load1 = 1000 + rand()%9000;
+#ifdef LONGSC
+ mutex_lock(&m1);
+#endif
+ for (j=0; j<load1; j++) {
+ s[0] = '*' + rand() % 100;
+#ifndef LONGSC
+ mutex_lock(&m1);
+#endif
+ puts_xy(i,y,rand()%15+1,s);
+#ifndef LONGSC
+ mutex_unlock(&m1);
+#endif
+ }
+ s[0] = 1;
+#ifndef LONGSC
+ mutex_lock(&m1);
+#endif
+ puts_xy(i,y,rand()%15+1,s);
+ mutex_unlock(&m1);
+
+ // task_activate(aper_table[rand()%APER_MAX]);
+ task_endcycle();
+
+ mutex_lock(&m1);
+ puts_xy(i,y,WHITE," ");
+ mutex_unlock(&m1);
+ i++;
+ }
+ }
+ num_aster--;
+ return 0;
+}
+
+TASK aster()
+{
+ PID p;
+ // HARD_TASK_MODEL m;
+ SOFT_TASK_MODEL m_soft;
+ int r;
+ int x; // adaptive bandwidth...
+
+ srand(7);
+
+ /* periodic_task_default_model(m,0,PER_WCET);
+ periodic_task_def_ctrl_jet(m);
+ for (x=0; x<PER_MAX; x++) {
+ r = (rand() % 200);
+ periodic_task_def_period(m, (64+r)*1000);
+ p = task_create("per",asteroide,&m,NULL);
+ if (p!=-1) task_activate(p);
+ }
+ */
+ soft_task_default_model(m_soft);
+ soft_task_def_met(m_soft,SOFT_MET);
+ soft_task_def_ctrl_jet(m_soft);
+
+ x = 128; //64;
+
+ while (1) {
+ if (num_aster < ASTER_MAX) {
+ r = (rand() % 200);
+
+ soft_task_def_period(m_soft, (x+r)*1000);
+ p = task_create("aaa",soft_aster,&m_soft,NULL);
+ if (p == -1)
+ {
+ if (x < 500 && errno != ENO_AVAIL_TASK) x += 1;
+ mutex_lock(&m1);
+ printf_xy(62,3,WHITE,"adapt=%3u err=%d",
+ iq_query_first(&freedesc),errno);
+ mutex_unlock(&m1);
+ }
+ else {
+ num_aster++;
+ mutex_lock(&m1);
+ printf_xy(62,3,WHITE,"adapt=%3u ",x);//,errno);
+ mutex_unlock(&m1);
+
+ task_activate(p);
+ x /= 2;
+ if (x<50) x = 50;
+ }
+ }
+ task_endcycle();
+ }
+}
+
+TASK clock()
+{
+ int s = 0, m = 0;
+
+ while(1) {
+ mutex_lock(&m1);
+ printf_xy(62,1,WHITE,"%2d:%2d ast=%d",m,s, num_aster);
+ printf_xy(62,2,WHITE,"Uedf=%12u",EDF_usedbandwidth(1));
+ printf_xy(62,4,WHITE,"Ucbs=%12u",CBS_usedbandwidth(2));
+
+ mutex_unlock(&m1);
+ task_endcycle();
+
+ if (++s > 59) {
+ s = 0;
+ m++;
+ }
+ mutex_lock(&m1);
+ printf_xy(62,1,WHITE,"%2d:%2d ast=%d",m,s, num_aster);
+ printf_xy(62,2,WHITE,"Uedf=%12u",EDF_usedbandwidth(1));
+ printf_xy(62,4,WHITE,"Ucbs=%12u",CBS_usedbandwidth(2));
+ mutex_unlock(&m1);
+ task_endcycle();
+ }
+}
+
+
+
+/* we consider the first ASTER_MAX + 2 tasks from the PID 2
+ and plot on the screen the elapsed times... */
+TASK jetcontrol()
+{
+ int i; /* a counter */
+ TIME sum, max, curr, last[5];
+ int nact;
+ int j; /* the elements set by jet_gettable */
+ PID p;
+
+
+ mutex_lock(&m1);
+ printf_xy(0,STAT_Y,WHITE,"PID ³ Mean T.³ Max T. ³ N.A. ³ Curr. ³ Last1 ³ Last2 ³ Last3 ³ Last4 ³ Last5");
+ mutex_unlock(&m1);
+
+ for (;;) {
+ for (i=0,p=0; i<DISPLAY_MAX+5 && p<MAX_PROC; p++) {
+ if (jet_getstat(p, &sum, &max, &nact, &curr) == -1 /*||
+ (proc_table[p].pclass & 0xFF00) == APERIODIC_PCLASS ||
+ (proc_table[p].pclass & 0xFF00) == PERIODIC_PCLASS*/ ) continue;
+
+ for (j=0; j<5; j++) last[j] = 0;
+ jet_gettable(p, &last[0], 5);
+ mutex_lock(&m1);
+ if (proc_table[p].task_level == 2)
+ printf_xy(0,STAT_Y+i+1,WHITE,"%-3d ³ %-6d ³ %-6d ³ %-4d ³p%-7d ³ %-5d ³ %-5d ³ %-5d ³ %-5d ³ %-5d",
+ p, (int)sum/(nact==0 ? 1 : nact), (int)max, nact, (int)CBS_get_nact(2,p), (int)last[0], (int)last[1], (int)last[2], (int)last[3], (int)last[4]);
+ // p, sum/(nact==0 ? 1 : nact), max, proc_table[p].avail_time, proc_table[p].status, proc_table[p].shadow, proc_table[p].timespec_priority.tv_sec,proc_table[p].timespec_priority.tv_nsec/1000 , CBS_get_nact(2,p), last[4]);
+ else
+ printf_xy(0,STAT_Y+i+1,WHITE,"%-3d ³ %-6d ³ %-6d ³ %-4d ³ %-7d ³ %-5d ³ %-5d ³ %-5d ³ %-5d ³ %-5d",
+ p, (int)sum/(nact==0 ? 1 : nact), (int)max, nact, (int)curr, (int)last[0], (int)last[1], (int)last[2], (int)last[3], (int)last[4]);
+ // p, (int)sum/(nact==0 ? 1 : nact), (int)max, nact, (int)proc_table[p].status, (int)proc_table[p].shadow, (int)proc_table[p].timespec_priority.tv_sec,(int)proc_table[p].timespec_priority.tv_nsec/1000 , (int)last[3], (int)last[4]);
+ mutex_unlock(&m1);
+ i++;
+ }
+ }
+}
+
+void fine(KEY_EVT *e)
+{
+ exit(0);}
+
+int main(int argc, char **argv)
+{
+ PID p1,p2,p3;//,p4,p5,p6;
+ HARD_TASK_MODEL m;
+ // NRT_TASK_MODEL m_nrt;
+ SOFT_TASK_MODEL m_aper;
+ SOFT_TASK_MODEL m_soft;
+ // int i;
+ struct timespec fineprg;
+
+#ifdef PIMUTEX
+ PI_mutexattr_t a;
+#endif
+
+#ifdef NPPMUTEX
+ NPP_mutexattr_t a;
+#endif
+
+#ifdef NOPMUTEX
+ NOP_mutexattr_t a;
+#endif
+
+ KEY_EVT emerg;
+
+ emerg.ascii = 'c';
+ emerg.scan = KEY_C;
+ emerg.flag = CNTL_BIT;
+ emerg.status = KEY_PRESSED;
+ keyb_hook(emerg,fine,FALSE);
+
+ emerg.flag = CNTR_BIT;
+ emerg.status = KEY_PRESSED;
+ keyb_hook(emerg,fine,FALSE);
+
+ clear();
+
+ hard_task_default_model(m);
+ hard_task_def_wcet(m,ASTER_WCET);
+ hard_task_def_mit(m,100000);
+ hard_task_def_group(m,1);
+ hard_task_def_ctrl_jet(m);
+
+ // nrt_task_default_model(m_nrt);
+ // nrt_task_def_group(m_nrt,1);
+ // nrt_task_def_ctrl_jet(m_nrt);
+
+
+ soft_task_default_model(m_aper);
+ soft_task_def_group(m_aper,1);
+ soft_task_def_ctrl_jet(m_aper);
+ soft_task_def_aperiodic(m_aper);
+
+ soft_task_default_model(m_soft);
+ soft_task_def_period(m_soft,JET_PERIOD);
+ soft_task_def_met(m_soft,JET_WCET);
+ soft_task_def_group(m_soft,1);
+ soft_task_def_ctrl_jet(m_soft);
+ soft_task_def_aperiodic(m_soft);
+
+
+ p1 = task_create("Aster",aster,&m,NULL);
+ if (p1 == -1) {
+ sys_shutdown_message("test7.c(main): Could not create task <aster> ...");
+ exit(1);
+ }
+
+ hard_task_def_mit(m,500000);
+ hard_task_def_wcet(m,CLOCK_WCET);
+ p2 = task_create("Clock",clock,&m,NULL);
+ if (p2 == -1) {
+ sys_shutdown_message("test7.c(main): Could not create task <Clock> ...");
+ exit(1);
+ }
+
+ // p3 = task_create("JetControl",jetcontrol,&m_nrt,NULL);
+ p3 = task_create("JetControl",jetcontrol,&m_soft,NULL);
+ if (p2 == -1) {
+ sys_shutdown_message("test7.c(main): Could not create task <JetControl> ...");
+ exit(1);
+ }
+ /*
+ aperiodic_task_default_model(m_aper,APER_WCET);
+ aperiodic_task_def_ctrl_jet(m_aper);
+ aperiodic_task_def_system(m_aper);
+
+ for (i=0; i<APER_MAX; i++) {
+ aperiodic_task_def_level(m_aper, i/4 + 2);
+ aperiodic_task_def_arg(m_aper, (i/4 ? 'Û' : '±'));
+ aper_table[i] = task_create("aper",aper_asteroid,&m_aper,NULL);
+ if (aper_table[i] == -1) {
+ perror("test7.c(main): Could not create task <aper> ...");
+ exit(1);
+ }
+ }
+ */
+ task_nopreempt();
+
+#ifdef PIMUTEX
+ PI_mutexattr_default(a);
+#endif
+
+#ifdef NPPMUTEX
+ NPP_mutexattr_default(a);
+#endif
+
+#ifdef NOPMUTEX
+ NOP_mutexattr_default(a);
+#endif
+
+ mutex_init(&m1, &a);
+
+ fineprg.tv_sec = 1800;
+ fineprg.tv_nsec = 0;
+ group_activate(1);
+ return 0;
+}
+
Index: demos/branches/xen/base/imdemo.c
===================================================================
--- demos/branches/xen/base/imdemo.c (nonexistent)
+++ demos/branches/xen/base/imdemo.c (revision 1684)
@@ -0,0 +1,102 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Paolo Gai <pj@gandalf.sssup.it>
+ * (see the web pages for full authors list)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/*
+ * Copyright (C) 2000 Paolo Gai
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ *
+ * CVS : $Id: imdemo.c,v 1.5 2005-05-10 17:21:17 mauro Exp $
+**/
+
+#include "kernel/kern.h"
+
+#include "intdrive/intdrive/intdrive.h"
+#include "edf/edf/edf.h"
+#include "cbs/cbs/cbs.h"
+#include "rr/rr/rr.h"
+#include "dummy/dummy/dummy.h"
+
+#include "sem/sem/sem.h"
+#include "hartport/hartport/hartport.h"
+#include "cabs/cabs/cabs.h"
+#include "pi/pi/pi.h"
+#include "pc/pc/pc.h"
+#include "srp/srp/srp.h"
+#include "npp/npp/npp.h"
+#include "nop/nop/nop.h"
+
+/*+ sysyem tick in us +*/
+#define TICK 0
+
+/*+ RR tick in us +*/
+#define RRTICK 10000
+
+/*+ Interrupt Server +*/
+#define INTDRIVE_Q 1000
+#define INTDRIVE_U 1000
+#define INTDRIVE_FLAG 0
+
+TIME __kernel_register_levels__(void *arg)
+{
+ struct multiboot_info *mb = (struct multiboot_info *)arg;
+
+ INTDRIVE_register_level(INTDRIVE_Q, INTDRIVE_Q, INTDRIVE_U, INTDRIVE_FLAG);
+ EDF_register_level(EDF_ENABLE_ALL);
+ RR_register_level(RRTICK, RR_MAIN_YES, mb);
+ CBS_register_level(CBS_ENABLE_ALL, 1);
+ dummy_register_level();
+
+ SEM_register_module();
+
+ CABS_register_module();
+
+ PI_register_module();
+ PC_register_module();
+ NPP_register_module();
+ SRP_register_module();
+ NOP_register_module();
+
+ return TICK;
+}
+
+TASK __init__(void *arg)
+{
+ struct multiboot_info *mb = (struct multiboot_info *)arg;
+
+ HARTPORT_init();
+
+ __call_main__(mb);
+
+ return (void *)0;
+
+}
+
Index: demos/branches/xen/base/aster2.c
===================================================================
--- demos/branches/xen/base/aster2.c (nonexistent)
+++ demos/branches/xen/base/aster2.c (revision 1684)
@@ -0,0 +1,241 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Paolo Gai <pj@gandalf.sssup.it>
+ * (see the web pages for full authors list)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/*
+ * Copyright (C) 2000 Paolo Gai
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ *
+ * CVS : $Id: aster2.c,v 1.6 2005-02-25 11:10:46 pj Exp $
+
+ this is a part of the classic Hartik demo Aster.
+
+ It checks:
+ - jet functions
+ - The EDF level with many task, with almost full bandwidth used
+
+*/
+
+
+#include "kernel/kern.h"
+#include "edf/edf/edf.h"
+
+int num_aster = 0;
+#define ASTER_LIM 60
+#define DISPLAY_MAX 15
+#define ASTER_MAX 70
+#define STAT_Y 9
+
+// first numbers for wcet and periods are for a 486/25, the others for a
+// celeron 366
+
+#define PER_WCET 13000 /*6200*/
+#define CLOCK_WCET 1200 /* 100*/
+#define ASTER_WCET 1200 /* 100*/
+
+#define ASTER_MEAN_PERIOD 64 /*64*/
+
+#define END_TEST_TIME 60
+
+TASK asteroide(void)
+{
+ int i;
+ int y = rand() % 7 + 1;
+
+ int load1,j;
+
+ char s[2];
+
+ s[0] = '*'; s[1] = 0;
+
+ /*for (;;)*/ {
+ i = 1;
+ while (i < ASTER_LIM) {
+ load1 = 1000; //10000; // 5000 + rand()%5000;
+ for (j=0; j<load1; j++) {
+ s[0] = '*' + rand() % 100;
+ puts_xy(i,y,rand()%15+1,s);
+ }
+
+ task_endcycle();
+
+ puts_xy(i,y,WHITE," ");
+ i++;
+ }
+ }
+ num_aster--;
+ return 0;
+}
+
+TASK aster()
+{
+ PID p;
+
+ HARD_TASK_MODEL m;
+ int r;
+ int x; // adaptive bandwidth...
+
+ hard_task_default_model(m);
+ hard_task_def_wcet(m,PER_WCET);
+ hard_task_def_ctrl_jet(m);
+
+ x = ASTER_MEAN_PERIOD;
+
+ srand(7);
+ while (1) {
+ if (num_aster < ASTER_MAX) {
+ r = (rand() % 200);
+
+ hard_task_def_arg(m,(void *)((rand() % 7)+1));
+ hard_task_def_mit(m, (x+r)*1000);
+ p = task_create("aaa",asteroide,&m,NULL);
+ if (p == -1)
+ {
+ if (x < 500 && errno != ENO_AVAIL_TASK) x += 1;
+ printf_xy(62,3,WHITE,"adapt=%3u err=%d",
+ iq_query_first(&freedesc),errno);
+ }
+ else {
+ num_aster++;
+ printf_xy(62,3,WHITE,"adapt=%3u ",x);//,errno);
+ task_activate(p);
+ x /= 2;
+ if (x<50) x = 50;
+ }
+ }
+ task_endcycle();
+ }
+}
+
+TASK clock()
+{
+ int s = 0, m = 0;
+
+ while(1) {
+ printf_xy(62,1,WHITE,"%2d:%2d ast=%d",m,s, num_aster);
+ printf_xy(62,2,WHITE,"U=%12u",EDF_usedbandwidth(1));
+ task_endcycle();
+
+ if (++s > 59) {
+ s = 0;
+ m++;
+ }
+ printf_xy(62,1,WHITE,"%2d:%2d ast=%d",m,s, num_aster);
+ printf_xy(62,2,WHITE,"U=%12u",EDF_usedbandwidth(1));
+ task_endcycle();
+ }
+}
+
+
+
+/* we consider the first ASTER_MAX + 2 tasks from the PID 2
+ and plot on the screen the elapsed times... */
+TASK jetcontrol()
+{
+ int i; /* a counter */
+ TIME sum, max, curr, last[5];
+ int nact;
+ int j; /* the elements set by jet_gettable */
+ PID p;
+
+
+ kern_cli();
+ printf_xy(0,STAT_Y,WHITE,"PID ³ Mean T.³ Max T. ³ N.A. ³ Curr. ³ Last1 ³ Last2 ³ Last3 ³ Last4 ³ Last5");
+ kern_sti();
+
+ for (;;) {
+ for (i=0,p=0; i<DISPLAY_MAX+5 && p<MAX_PROC; p++) {
+ if (jet_getstat(p, &sum, &max, &nact, &curr) == -1) continue;
+
+ for (j=0; j<5; j++) last[j] = 0;
+ jet_gettable(p, &last[0], 5);
+ kern_cli();
+ printf_xy(0,STAT_Y+i+1,WHITE,"%-3d ³ %-6d ³ %-6d ³ %-4d ³ %-7d ³ %-5d ³ %-5d ³ %-5d ³ %-5d ³ %-5d",
+ p, (int)sum/(nact==0 ? 1 : nact), (int)max, nact, (int)curr, (int)last[0], (int)last[1], (int)last[2], (int)last[3], (int)last[4]);
+ kern_sti();
+ i++;
+ }
+ }
+}
+
+int main(int argc, char **argv)
+{
+ PID p1,p2,p3; //,p4,p5,p6;
+ HARD_TASK_MODEL m;
+ NRT_TASK_MODEL m_nrt;
+ struct timespec t;
+
+ clear();
+
+ hard_task_default_model(m);
+ hard_task_def_wcet(m,ASTER_WCET);
+ hard_task_def_mit(m,10000);
+ hard_task_def_group(m,1);
+ hard_task_def_ctrl_jet(m);
+
+ nrt_task_default_model(m_nrt);
+ nrt_task_def_group(m_nrt,1);
+ nrt_task_def_ctrl_jet(m_nrt);
+
+ p1 = task_create("Aster",aster,&m,NULL);
+ if (p1 == -1) {
+ sys_shutdown_message("test7.c(main): Could not create task <aster> ...");
+ exit(1);
+ }
+
+ hard_task_def_mit(m,500000);
+ hard_task_def_wcet(m,CLOCK_WCET);
+ p2 = task_create("Clock",clock,&m,NULL);
+ if (p2 == -1) {
+ sys_shutdown_message("test7.c(main): Could not create task <Clock> ...");
+ exit(1);
+ }
+
+ p3 = task_create("JetControl",jetcontrol,&m_nrt,NULL);
+ if (p2 == -1) {
+ sys_shutdown_message("test7.c(main): Could not create task <JetControl> ...");
+ exit(1);
+ }
+
+ group_activate(1);
+
+ do {
+ sys_gettime(&t);
+ } while (t.tv_sec < END_TEST_TIME);
+
+ exit(0);
+
+ return 0;
+}
+
+
+
+
Index: demos/branches/xen/base/mdemo.c
===================================================================
--- demos/branches/xen/base/mdemo.c (nonexistent)
+++ demos/branches/xen/base/mdemo.c (revision 1684)
@@ -0,0 +1,189 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Paolo Gai <pj@gandalf.sssup.it>
+ * (see the web pages for full authors list)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/*
+ * Copyright (C) 2000 Paolo Gai
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ *
+ * CVS : $Id: mdemo.c,v 1.4 2005-02-25 11:10:46 pj Exp $
+
+ This test verify the correctness of the NOP module. It works with the
+ PI, PC, SRP module, too.
+
+ The test uses one mutex
+
+ the main task (NRT) creates three tasks.
+
+ J1 with PC priority 0
+ starts at t=0.5 sec and lock m0
+
+ J2 with PC priority 1
+ starts at t=1 sec and doesn't lock any mutex
+
+ J3 with PC priority 2
+ it starts and locks m0
+ at t=2 sec it unlocks m1
+
+
+ The example is similar to the scheduling diagram shown at p. 188 of the
+ book "Sistemi in tempo Reale", by Giorgio Buttazzo, Pitagora Editrice
+
+*/
+
+#include "kernel/kern.h"
+#include "srp/srp/srp.h"
+
+mutex_t m0;
+
+
+void startJ(void *a)
+{
+ task_activate((PID)a);
+}
+
+TASK j1()
+{
+ cprintf("J1: before locking m0\n");
+ mutex_lock(&m0);
+ cprintf("J1: locked m0\n");
+ mutex_unlock(&m0);
+ cprintf("J1: unlocked m0, end task\n");
+ return 0;
+}
+
+
+TASK j2()
+{
+ cprintf("J2: waiting t=1.5 sec\n");
+
+ while (sys_gettime(NULL) < 1500000);
+
+ cprintf("J2: end task\n");
+ return 0;
+}
+
+
+TASK j3()
+{
+ cprintf("J3: before locking m0\n");
+ mutex_lock(&m0);
+ cprintf("J3: locked m0, waiting to t=2 sec\n");
+
+ while (sys_gettime(NULL) < 2000000);
+
+ cprintf("J3: t = 1 sec reached, unlocking m0\n");
+ mutex_unlock(&m0);
+ cprintf("J3: unlocked m0, end task\n");
+ return 0;
+}
+
+int main(int argc, char **argv)
+{
+ struct timespec t;
+
+ HARD_TASK_MODEL m;
+ PID p0,p1,p2;
+
+ PC_mutexattr_t a;
+ PI_mutexattr_t a2;
+ NOP_mutexattr_t a3;
+ SRP_mutexattr_t a4;
+ NPP_mutexattr_t a5;
+
+ PC_RES_MODEL r;
+ SRP_RES_MODEL srp;
+
+ /* ---------------------------------------------------------------------
+ Mutex creation
+ --------------------------------------------------------------------- */
+
+ PC_mutexattr_default(a,0);
+ PI_mutexattr_default(a2);
+ NOP_mutexattr_default(a3);
+ SRP_mutexattr_default(a4);
+ NPP_mutexattr_default(a5);
+ mutex_init(&m0,&a4);
+
+ /* ---------------------------------------------------------------------
+ Task creation
+ --------------------------------------------------------------------- */
+
+ hard_task_default_model(m);
+ hard_task_def_wcet(m,20000);
+ hard_task_def_mit(m,10000000);
+ PC_res_default_model(r,0);
+ SRP_res_default_model(srp,3);
+ p0 = task_createn("J1", j1, (TASK_MODEL *)&m, &r, &srp, SRP_usemutex(&m0), NULL);
+ if (p0 == NIL)
+ { cprintf("Can't create J1 task...\n"); return 1; }
+
+ hard_task_def_wcet(m,1600000);
+ hard_task_def_mit(m,21000000);
+ PC_res_default_model(r,1);
+ SRP_res_default_model(srp,2);
+ p1 = task_createn("J2", j2, (TASK_MODEL *)&m, &r, &srp, NULL);
+ if (p1 == NIL)
+ { cprintf("Can't create J2 task...\n"); return 1; }
+
+ hard_task_def_wcet(m,3000000);
+ hard_task_def_mit(m,100000000);
+ PC_res_default_model(r,2);
+ SRP_res_default_model(srp,1);
+ p2 = task_createn("J3", j3, (TASK_MODEL *)&m, &r, &srp, SRP_usemutex(&m0), NULL);
+ if (p2 == NIL)
+ { cprintf("Can't create J3 task...\n"); return 1; }
+
+
+ /* ---------------------------------------------------------------------
+ Event post
+ --------------------------------------------------------------------- */
+
+ t.tv_sec = 0;
+ t.tv_nsec = 500000000;
+
+ kern_cli();
+ kern_event_post(&t,startJ,(void *)p0);
+
+ t.tv_sec = 1;
+ kern_event_post(&t,startJ,(void *)p1);
+ kern_sti();
+
+ task_activate(p2);
+
+ do {
+ sys_gettime(&t);
+ } while (t.tv_sec < 60);
+
+ exit(0);
+
+ return 0;
+}
Index: demos/branches/xen/base/isemdemo.c
===================================================================
--- demos/branches/xen/base/isemdemo.c (nonexistent)
+++ demos/branches/xen/base/isemdemo.c (revision 1684)
@@ -0,0 +1,98 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Paolo Gai <pj@gandalf.sssup.it>
+ * (see the web pages for full authors list)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/**
+ ------------
+ CVS : $Id: isemdemo.c,v 1.2 2005-02-25 11:10:46 pj Exp $
+
+ File: $File$
+ Revision: $Revision: 1.2 $
+ Last update: $Date: 2005-02-25 11:10:46 $
+ ------------
+
+ The simplest initialization file
+
+ The tick is set to TICK ms.
+
+ This file contains the 2 functions needed to initialize the system.
+
+ These functions register the following levels:
+
+ a RR (Round Robin) level
+ a Dummy level
+
+ It can accept these task models:
+
+ NRT_TASK_MODEL at level 0
+
+**/
+
+/*
+ * Copyright (C) 2000 Paolo Gai
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+
+
+#include "kernel/kern.h"
+#include "rr/rr/rr.h"
+#include "dummy/dummy/dummy.h"
+#include "sem/sem/sem.h"
+
+
+/*+ sysyem tick in us +*/
+#define TICK 300
+
+/*+ RR tick in us +*/
+#define RRTICK 10000
+
+TIME __kernel_register_levels__(void *arg)
+{
+ struct multiboot_info *mb = (struct multiboot_info *)arg;
+
+ RR_register_level(RRTICK, RR_MAIN_YES, mb);
+ dummy_register_level();
+
+ SEM_register_module();
+
+ return TICK;
+}
+
+TASK __init__(void *arg)
+{
+ struct multiboot_info *mb = (struct multiboot_info *)arg;
+
+ __call_main__(mb);
+
+ return (void *)0;
+}
+
Index: demos/branches/xen/base/cabs.c
===================================================================
--- demos/branches/xen/base/cabs.c (nonexistent)
+++ demos/branches/xen/base/cabs.c (revision 1684)
@@ -0,0 +1,290 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Paolo Gai <pj@gandalf.sssup.it>
+ * (see the web pages for full authors list)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/*
+ * Copyright (C) 2000 Giorgio Buttazzo, Paolo Gai
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ *
+ * CVS : $Id: cabs.c,v 1.9 2005-02-25 11:10:46 pj Exp $
+ */
+
+/*--------------------------------------------------------------*/
+/* TEST ON CABS */
+/*--------------------------------------------------------------*/
+
+#include <kernel/kern.h>
+#include <cabs/cabs/cabs.h>
+#include <string.h>
+
+#include <drivers/shark_fb26.h>
+#include <drivers/shark_keyb26.h>
+
+#define NCAB 4 /* max number of CABs */
+#define NCAR 26 /* generated characters */
+
+#define YP 32 /* level of arrows */
+#define R 20 /* task radius */
+#define YY (YP+R+32) /* level of writing */
+#define DELTA (2*R+72) /* total channel hight */
+#define X1 120 /* start column for P1 */
+#define X2 360 /* start column for P2 */
+
+#define XP1 (X1+64) /* X position of task 1 */
+#define XP2 (X2+64) /* X position of task 2 */
+#define XC (XP1+96) /* X position of CAB */
+#define L 52 /* CAB rectangle length */
+
+void my_exit(KEY_EVT *k);
+void draw_channel(int i);
+void create_channel(int i);
+void get_data();
+
+TASK producer(void *arg);
+TASK consumer(void *arg);
+
+char *cname[NCAB] = {"cab1", "cab2", "cab3", "cab4"};
+char *pname1[NCAB] = {"wr1", "wr2", "wr3", "wr4"};
+char *pname2[NCAB] = {"rd1", "rd2", "rd3", "rd4"};
+
+CAB cid[NCAB]; /* CAB identifiers */
+PID p1[NCAB], p2[NCAB]; /* task identifiers */
+
+/* Task Periods */
+TIME t1[NCAB] = {200000, 100000, 300000, 800000};
+TIME t2[NCAB] = {400000, 400000, 150000, 200000};
+
+/* Task WCETS */
+TIME w1[NCAB] = {10000, 10000, 10000, 10000};
+TIME w2[NCAB] = {10000, 10000, 10000, 10000};
+
+/****************************************************************/
+
+/* This function is called when Alt-X is pressed.
+*/
+void my_end(KEY_EVT* e)
+{
+ exit(0);
+}
+
+/******************************************************************/
+
+/* This function is called when the system exit correctly after Alt-X.
+ It exits from the graphic mode and then it prints a small greeting.
+ Note that:
+ - The function calls grx_exit, so it must be registered using
+ RUNLEVEL_BEFORE_EXIT (RUNLEVEL_AFTER_EXIT does not work because
+ at that point the kernel is already returned in real mode!!!)
+ - When an exception is raised, the exception handler is called.
+ Since the exception handler already exits from the graphic mode,
+ this funcion has not to be called. For this reason:
+ . we registered byebye using the flag NO_AT_ABORT
+ . the exception handler exits using exit; in that way byebye is
+ NOT called
+*/
+
+/*--------------------------------------------------------------*/
+/* Main task */
+/*--------------------------------------------------------------*/
+
+/****************************** MAIN ******************************/
+
+int main(int argc, char **argv)
+{
+ char c = 0; /* character from keyboard */
+
+ grx_clear(BLACK);
+
+ grx_text("Press a key [1-4]", 10, 16, rgb16(255,255,255), 0);
+ grx_text("to create a pair", 10, 24, rgb16(255,255,255), 0);
+ grx_text("ESC to exit demo", 10, 48, rgb16(255,255,255), 0);
+
+ while (c != 27) {
+ c = keyb_getch(BLOCK);
+ if ((c >= '1') && (c <= '1'+NCAB-1))
+ create_channel(c-'1');
+ }
+
+ exit(0);
+
+ return 0;
+}
+
+
+/*--------------------------------------------------------------*/
+/* write data in a cab */
+/*--------------------------------------------------------------*/
+
+TASK producer(void *arg)
+{
+int i = (int)arg;
+char c; /* message character */
+char *p; /* pointer to a cab buffer */
+char s[2]; /* string to display */
+int k = 0;
+int x, y;
+int col = rgb16(0,0,255);
+int ybase = YY + i*DELTA;
+
+ x = X1;
+ y = ybase;
+ s[1] = 0;
+
+ k = 0;
+ while (1) {
+ c = 'A' + k;
+ p = cab_reserve(cid[i]);
+ *p = c;
+ cab_putmes(cid[i], p);
+
+ s[0] = c;
+ k = (k + 1) % NCAR;
+ grx_text(s,x,y,col,0);
+
+ x += 8;
+ if (x >= (X1 + NCAR*8)) {
+ x = X1;
+ y = y + 8;
+ if (y >= ybase+16) {
+ y = ybase;
+ }
+ }
+
+ task_endcycle();
+ }
+}
+
+/*--------------------------------------------------------------*/
+/* read data from a cab */
+/*--------------------------------------------------------------*/
+
+TASK consumer(void *arg)
+{
+int i = (int)arg;
+char *p;
+char s[2];
+int x, y;
+int col = 13;
+int ybase = YY + i*DELTA;
+
+ x = X2;
+ y = ybase;
+ s[1] = 0;
+
+ while (1) {
+ p = cab_getmes(cid[i]);
+ s[0] = *p - 'A' + 'a';
+ cab_unget(cid[i], p);
+
+ grx_text(s,x,y,col,0);
+ x += 8;
+
+ if (x >= (X2 + NCAR*8)) {
+ x = X2;
+ y = y + 8;
+ if (y >= ybase+16) {
+ y = ybase;
+ col = col % 15 + 1;
+ }
+ }
+ task_endcycle();
+ }
+}
+
+/*--------------------------------------------------------------*/
+/* create the two tasks and a channel */
+/*--------------------------------------------------------------*/
+
+void create_channel(int i)
+{
+ HARD_TASK_MODEL m;
+
+ draw_channel(i);
+ cid[i] = cab_create(cname[i], 1, 2);
+
+ hard_task_default_model(m);
+ hard_task_def_ctrl_jet (m);
+ hard_task_def_arg (m, (void *)i);
+ hard_task_def_wcet (m, w1[i]);
+ hard_task_def_mit (m, t1[i]);
+ hard_task_def_usemath (m);
+ p1[i] = task_create(pname1[i], producer, &m, NULL);
+ if (p1[i] == NIL) {
+ sys_shutdown_message("Could not create task <producer>");
+ exit(1);
+ return;
+ }
+ task_activate(p1[i]);
+
+ hard_task_default_model(m);
+ hard_task_def_ctrl_jet (m);
+ hard_task_def_arg (m, (void *)i);
+ hard_task_def_wcet (m, w2[i]);
+ hard_task_def_mit (m, t2[i]);
+ hard_task_def_usemath (m);
+ p2[i] = task_create(pname2[i], consumer, &m, NULL);
+ if (p2[i] == NIL) {
+ sys_shutdown_message("Could not create task <consumer>");
+ exit(1);
+ return;
+ }
+ task_activate(p2[i]);
+}
+
+/*--------------------------------------------------------------*/
+/* Disegna i processi e il canale di comunicazione */
+/*--------------------------------------------------------------*/
+
+void draw_channel(int i)
+{
+char buffer[32]; /* buffer per sprintf */
+int yc = YP + i*DELTA; /* altezza del canale */
+
+ grx_circle(XP1,yc,R,rgb16(255,0,0));
+ grx_text("P1",XP1-8,yc-4,rgb16(255,255,255),0);
+
+ grx_circle(XP2,yc,R,rgb16(255,0,0));
+ grx_text("P2",XP2-8,yc-4,rgb16(255,255,255),0);
+
+ grx_rect(XC,yc-R,XC+L,yc+R,rgb16(255,255,255));
+ grx_text("CAB",XC+16,yc-4,rgb16(255,255,255),0);
+
+ grx_line(XP1+R,yc,XC,yc,rgb16(255,255,255));
+ grx_line(XC+L,yc,XP2-R,yc,rgb16(255,255,255));
+
+ grx_text("T1 = ms",X1+40,yc+R+16,rgb16(255,255,255),0);
+ sprintf(buffer,"%ld", t1[i]);
+ grx_text(buffer,X1+88,yc+R+16,rgb16(255,255,255),0);
+
+ grx_text("T2 = ms",X2+40,yc+R+16,rgb16(255,255,255),0);
+ sprintf(buffer,"%ld", t2[i]);
+ grx_text(buffer,X2+88,yc+R+16,rgb16(255,255,255),0);
+}
Index: demos/branches/xen/base/ihello.c
===================================================================
--- demos/branches/xen/base/ihello.c (nonexistent)
+++ demos/branches/xen/base/ihello.c (revision 1684)
@@ -0,0 +1,95 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Paolo Gai <pj@gandalf.sssup.it>
+ * (see the web pages for full authors list)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/**
+ ------------
+ CVS : $Id: ihello.c,v 1.2 2005-02-25 11:10:46 pj Exp $
+
+ File: $File$
+ Revision: $Revision: 1.2 $
+ Last update: $Date: 2005-02-25 11:10:46 $
+ ------------
+
+ The simplest initialization file
+
+ The tick is set to TICK ms.
+
+ This file contains the 2 functions needed to initialize the system.
+
+ These functions register the following levels:
+
+ a RR (Round Robin) level
+ a Dummy level
+
+ It can accept these task models:
+
+ NRT_TASK_MODEL at level 0
+
+**/
+
+/*
+ * Copyright (C) 2000 Paolo Gai
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+
+
+#include "kernel/kern.h"
+#include "rr/rr/rr.h"
+#include "dummy/dummy/dummy.h"
+
+
+/*+ sysyem tick in us +*/
+#define TICK 300
+
+/*+ RR tick in us +*/
+#define RRTICK 10000
+
+TIME __kernel_register_levels__(void *arg)
+{
+ struct multiboot_info *mb = (struct multiboot_info *)arg;
+
+ RR_register_level(RRTICK, RR_MAIN_YES, mb);
+ dummy_register_level();
+
+ return TICK;
+}
+
+TASK __init__(void *arg)
+{
+ struct multiboot_info *mb = (struct multiboot_info *)arg;
+
+ __call_main__(mb);
+
+ return (void *)0;
+}
+
Index: demos/branches/xen/base/fly.c
===================================================================
--- demos/branches/xen/base/fly.c (nonexistent)
+++ demos/branches/xen/base/fly.c (revision 1684)
@@ -0,0 +1,202 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Paolo Gai <pj@gandalf.sssup.it>
+ * (see the web pages for full authors list)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/**
+ ------------
+ CVS : $Id: fly.c,v 1.11 2005-02-25 11:10:46 pj Exp $
+
+ File: $File$
+ Revision: $Revision: 1.11 $
+ Last update: $Date: 2005-02-25 11:10:46 $
+ ------------
+**/
+
+/*
+ * Copyright (C) 2000 Paolo Gai and Giorgio Buttazzo
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+/*--------------------------------------------------------------*/
+/* SIMULATION OF RANDOM FLIES */
+/*--------------------------------------------------------------*/
+
+#include <kernel/kern.h>
+#include <sem/sem/sem.h>
+#include <stdlib.h>
+#include <math.h>
+
+#include <drivers/shark_keyb26.h>
+#include <drivers/shark_fb26.h>
+
+#define YMENU 10 /* menu level */
+#define XMIN 50
+#define XMAX 600
+#define YMIN 100
+#define YMAX 450
+#define VEL 5 /* linear velocity (def. = 5) */
+#define ANG 30 /* angolo massimo sterzata (30) */
+#define D 3 /* raggio mosca */
+#undef ESC
+#define ESC 27 /* ASCII code of ESCAPE key */
+#define MAX_P 35 /* max number of flies */
+#define FLYGROUP 1
+
+double tick = 1.0; /* system tick = 1 ms */
+int fly_period = 40000; /* task period */
+int fly_wcet = 1000; /* task wcet */
+PID pid;
+
+sem_t grx_mutex;
+
+/*--------------------------------------------------------------*/
+
+void draw_fly(int x, int y, int c)
+{
+ grx_disc(x, y, D, c);
+}
+
+/******************************************************************/
+
+TASK fly(void *arg)
+{
+int x, y;
+int ox, oy;
+int dx, dy, da;
+int teta, col,red;
+int outx, outy;
+double r;
+int i = (int)arg;
+
+ x = ox = (XMIN+XMAX)/2;
+ y = oy = (YMIN+YMAX)/2;
+ teta = 0;
+ red = 100+10*i;
+ if (red > 255) red = 255;
+ col = rgb16(red,0,50); /* colore fly */
+
+ while (1) {
+
+ da = rand()%(2*ANG) - ANG; /* da = [-ANG,ANG] */
+ teta += da;
+
+ if (teta > 360) teta -= 360;
+ if (teta < 0) teta += 360;
+ r = (double)teta * PI / 180.;
+
+ dx = (float)(VEL * cos(r));
+ dy = (float)(VEL * sin(r));
+ x += dx;
+ y += dy;
+
+ outx = (x >= XMAX) || (x <= XMIN);
+ outy = (y >= YMAX) || (y <= YMIN);
+
+ if (outx || outy) {
+ x = x - dx;
+ y = y - dy;
+ if (outx) teta = 180 - teta;
+ if (outy) teta = -teta;
+ if (teta > 360) teta -= 360;
+ if (teta < 0) teta += 360;
+ r = (double)teta * PI / 180.;
+
+ dx = (float)(VEL * cos(r));
+ dy = (float)(VEL * sin(r));
+
+ x += dx;
+ y += dy;
+ }
+
+ sem_wait(&grx_mutex);
+ draw_fly(ox, oy, 0);
+ draw_fly(x, y, col);
+ ox = x; oy = y;
+ sem_post(&grx_mutex);
+
+ task_endcycle();
+ }
+}
+
+/****************************** MAIN ******************************/
+
+int main(int argc, char **argv)
+{
+ HARD_TASK_MODEL m;
+
+ char c; /* character from keyboard */
+ int i = 0; /* number of tasks created */
+ TIME seme; /* used to init the random seed */
+
+ /* Init the mutex */
+ sem_init(&grx_mutex,0,1);
+
+ /* The scenario */
+ grx_rect(XMIN-D-1, YMIN-D-1, XMAX+D+1, YMAX+D+1, rgb16(255,255,255));
+ grx_text("Simulation of Random Flies", XMIN, YMENU+10, rgb16(255,255,255), 0);
+ grx_text("SPACE create a fly" , XMIN, YMENU+20, rgb16(255,255,255), 0);
+ grx_text("ESC exit to DOS" , XMIN, YMENU+30, rgb16(255,255,255), 0);
+
+ /* The program waits a space to create a fly */
+ c = keyb_getch(BLOCK);
+
+ /* randomize!!!! */
+ seme = sys_gettime(NULL);
+ srand(seme);
+
+ do {
+ if ((c == ' ') && (i < MAX_P)) {
+ hard_task_default_model(m);
+ hard_task_def_ctrl_jet (m);
+ hard_task_def_arg (m, (void *)i);
+ hard_task_def_wcet (m, fly_wcet);
+ hard_task_def_mit (m, fly_period);
+ hard_task_def_group (m, FLYGROUP);
+ hard_task_def_usemath (m);
+ pid = task_create("fly", fly, &m, NULL);
+ if (pid == NIL) {
+ sys_shutdown_message("Could not create task <fly>");
+ exit(1);
+ }
+ task_activate(pid);
+ i++;
+ }
+ c = keyb_getch(BLOCK);
+
+ } while (c != ESC);
+
+ exit(0);
+
+ return 0;
+
+}
+
+/*--------------------------------------------------------------*/
Index: demos/branches/xen/base/iaster1.c
===================================================================
--- demos/branches/xen/base/iaster1.c (nonexistent)
+++ demos/branches/xen/base/iaster1.c (revision 1684)
@@ -0,0 +1,99 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Paolo Gai <pj@gandalf.sssup.it>
+ * (see the web pages for full authors list)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/**
+ ------------
+ CVS : $Id: iaster1.c,v 1.3 2005-02-25 11:10:46 pj Exp $
+
+ File: $File$
+ Revision: $Revision: 1.3 $
+ Last update: $Date: 2005-02-25 11:10:46 $
+ ------------
+
+ System initialization file
+
+ The tick is set to TICK ms.
+
+ This file contains the 2 functions needed to initialize the system.
+
+ These functions register the following levels:
+
+ an EDF (Earliest Deadline First) level
+ a RR (Round Robin) level
+ a Dummy level
+
+ It can accept these task models (into () the mandatory fields):
+
+ HARD_TASK_MODEL (wcet+mit) at level 0
+ NRT_TASK_MODEL at level 1
+
+**/
+
+/*
+ * Copyright (C) 2000 Paolo Gai
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+
+
+#include "kernel/kern.h"
+#include "edf/edf/edf.h"
+#include "rr/rr/rr.h"
+#include "dummy/dummy/dummy.h"
+
+
+/*+ sysyem tick in us +*/
+#define TICK 1000
+
+/*+ RR tick in us +*/
+#define RRTICK 10000
+
+TIME __kernel_register_levels__(void *arg)
+{
+ struct multiboot_info *mb = (struct multiboot_info *)arg;
+
+ EDF_register_level(EDF_ENABLE_ALL);
+ RR_register_level(RRTICK, RR_MAIN_YES, mb);
+ dummy_register_level();
+
+ return TICK;
+}
+
+TASK __init__(void *arg)
+{
+ struct multiboot_info *mb = (struct multiboot_info *)arg;
+
+ __call_main__(mb);
+
+ return (void *)0;
+}
+
Index: demos/branches/xen/base/srpdemo.c
===================================================================
--- demos/branches/xen/base/srpdemo.c (nonexistent)
+++ demos/branches/xen/base/srpdemo.c (revision 1684)
@@ -0,0 +1,234 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Paolo Gai <pj@gandalf.sssup.it>
+ * (see the web pages for full authors list)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/*
+ * Copyright (C) 2000 Paolo Gai
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ *
+ * CVS : $Id: srpdemo.c,v 1.5 2005-02-25 11:10:46 pj Exp $
+
+ This test verify the correctness of the SRP module.
+
+ There are 3 taks, Jh, Jm, Jl that uses 3 mutexes m1, m2, m3
+
+ the main task (NRT) creates the three tasks.
+
+ Jh with preemption level 3
+ starts at t=1.5 sec and lock m3, lock m1, unlock m1, unlock m3
+
+ Jm with preemption level 2
+ starts at t=0.5 sec and lock m3, lock m2, unlock m2, unlock m3
+ then lock and unlock m1
+
+ Jl with preemption level 1
+ it starts and locks m2
+ at t=1 sec it locks m1
+ at t=1.5 sec it unlocks m1
+ then it unlocks m2, and finally it locks and unlocks m3
+
+
+ The example is similar to the scheduling diagram shown at p. 210 of the
+ book "Sistemi in tempo Reale", by Giorgio Buttazzo, Pitagora Editrice
+
+*/
+
+#include "kernel/kern.h"
+
+#include "srp/srp/srp.h"
+
+mutex_t m1,m2,m3;
+
+void startJ(void *a)
+{
+ task_activate((PID)a);
+}
+
+TASK Jlobby()
+{
+ cprintf("(*) JLobby!!!\n");
+ return 0;
+}
+
+TASK Jh()
+{
+ PID l;
+ HARD_TASK_MODEL m;
+ SRP_RES_MODEL r;
+
+ cprintf("JH: creating Jy before locking m3\n");
+
+ hard_task_default_model(m);
+ hard_task_def_mit(m,30000);
+ hard_task_def_wcet(m,1000);
+ SRP_res_default_model(r,4);
+ l = task_create("Jlobby",Jlobby,&m,&r);
+ task_activate(l);
+
+ mutex_lock(&m3);
+ cprintf("JH: locked m3, locking m1\n");
+ mutex_lock(&m1);
+ cprintf("JH: locked m1, unlocking m1\n");
+ mutex_unlock(&m1);
+ cprintf("JH: unlocked m1, unlocking m3\n");
+ mutex_unlock(&m3);
+ cprintf("JH: unlocked m3, end task\n");
+ return 0;
+}
+
+
+TASK Jm()
+{
+ cprintf("JM: before locking m3\n");
+ mutex_lock(&m3);
+ cprintf("JM: locked m3, locking m2\n");
+ mutex_lock(&m2);
+ cprintf("JM: locked m2, unlocking m2\n");
+ mutex_unlock(&m2);
+ cprintf("JM: unlocked m2, unlocking m3\n");
+ mutex_unlock(&m3);
+ cprintf("JM: unlocked m3, locking m1\n");
+ mutex_lock(&m1);
+ cprintf("JM: locked m1, unlocking m1\n");
+ mutex_unlock(&m1);
+ cprintf("JM: unlocked m1, end task\n");
+ return 0;
+}
+
+
+TASK Jl()
+{
+ cprintf("JL: before locking m2\n");
+ mutex_lock(&m2);
+ cprintf("JL: locked m2, waiting to t=1 sec\n");
+
+ while (sys_gettime(NULL) < 1000000);
+
+ cprintf("JL: t = 1 sec reached, locking m1\n");
+ mutex_lock(&m1);
+ cprintf("JL: locked m1, waiting to t=2 sec\n");
+
+ while (sys_gettime(NULL) < 2000000);
+
+ cprintf("JL: t = 2 sec reached, unlocking m1\n");
+ mutex_unlock(&m1);
+ cprintf("JL: unlocked m1, unlocking m2\n");
+
+ mutex_unlock(&m2);
+
+ cprintf("JL: unlocked m2, locking m3\n");
+ mutex_lock(&m3);
+ cprintf("JL: locked m3, unlocking m3\n");
+ mutex_unlock(&m3);
+ cprintf("JL: unlocked m3, end task\n");
+ return 0;
+}
+
+int main(int argc, char **argv)
+{
+ struct timespec t;
+
+ HARD_TASK_MODEL m;
+ PID p0,p1,p2;
+
+ SRP_mutexattr_t a;
+ SRP_RES_MODEL r;
+
+ PI_mutexattr_t a2;
+
+ clear();
+
+ cprintf("Stack resource Policy demo. It ends after 60 sec\n");
+
+ /* ---------------------------------------------------------------------
+ Mutex creation
+ --------------------------------------------------------------------- */
+
+ PI_mutexattr_default(a2);
+ SRP_mutexattr_default(a);
+ mutex_init(&m1,&a);
+ mutex_init(&m2,&a);
+ mutex_init(&m3,&a);
+
+ /* ---------------------------------------------------------------------
+ Task creation
+ --------------------------------------------------------------------- */
+
+ hard_task_default_model(m);
+ hard_task_def_mit(m, 1000000);
+ hard_task_def_wcet(m, 80000);
+ SRP_res_default_model(r, 3);
+ p0 = task_createn("JH", Jh, (TASK_MODEL *)&m, &r, SRP_usemutex(&m3), SRP_usemutex(&m1), NULL);
+ if (p0 == NIL)
+ { cprintf("Can't create JH task...\n"); return 1; }
+
+ hard_task_default_model(m);
+ hard_task_def_mit(m, 2100000);
+ hard_task_def_wcet(m, 80000);
+ SRP_res_default_model(r, 2);
+ p1 = task_createn("JM", Jm, (TASK_MODEL *)&m, &r, SRP_usemutex(&m3), SRP_usemutex(&m1),
+ SRP_usemutex(&m2), NULL);
+ if (p1 == NIL)
+ { cprintf("Can't create JM task...\n"); return 1; }
+
+ hard_task_default_model(m);
+ hard_task_def_mit(m, 10000000);
+ hard_task_def_wcet(m, 3000000);
+ SRP_res_default_model(r, 1);
+ p2 = task_createn("JL", Jl, (TASK_MODEL *)&m, &r, SRP_usemutex(&m3), SRP_usemutex(&m1),
+ SRP_usemutex(&m2), NULL);
+ if (p2 == NIL)
+ { cprintf("Can't create JL task...\n"); return 1; }
+
+ /* ---------------------------------------------------------------------
+ Event post
+ --------------------------------------------------------------------- */
+
+ t.tv_sec = 0;
+ t.tv_nsec = 500000000;
+
+ kern_cli();
+ kern_event_post(&t,startJ,(void *)p1);
+
+ t.tv_sec = 1;
+ kern_event_post(&t,startJ,(void *)p0);
+ kern_sti();
+
+ task_activate(p2);
+
+ do {
+ sys_gettime(&t);
+ } while (t.tv_sec < 60);
+
+ exit(0);
+
+ return 0;
+}
Index: demos/branches/xen/base/iaster3.c
===================================================================
--- demos/branches/xen/base/iaster3.c (nonexistent)
+++ demos/branches/xen/base/iaster3.c (revision 1684)
@@ -0,0 +1,110 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Paolo Gai <pj@gandalf.sssup.it>
+ * (see the web pages for full authors list)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/**
+ ------------
+ CVS : $Id: iaster3.c,v 1.3 2005-02-25 11:10:46 pj Exp $
+
+ File: $File$
+ Revision: $Revision: 1.3 $
+ Last update: $Date: 2005-02-25 11:10:46 $
+ ------------
+
+ System initialization file
+
+ The tick is set to TICK ms.
+
+ This file contains the 2 functions needed to initialize the system.
+
+ These functions register the following levels:
+
+ an EDF (Earliest Deadline First) level
+ a RR (Round Robin) level
+ a TBS (Total Bandwidth Server) level 0.1 Us
+ a TBS (Total Bandwidth Server) level 0.3 Us
+ a Dummy level
+
+ The TBS bandwidth is TBS_NUM/TBS_DEN
+
+
+ It can accept these task models (into () the mandatory fields):
+
+ HARD_TASK_MODEL (wcet+mit) at level 0
+ NRT_TASK_MODEL at level 1
+ SOFT_TASK_MODEL (wcet, periodicity=APERIODIC) at level 2,3
+
+**/
+
+/*
+ * Copyright (C) 2000 Paolo Gai
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+
+
+#include "kernel/kern.h"
+#include "edf/edf/edf.h"
+#include "rr/rr/rr.h"
+#include "tbs/tbs/tbs.h"
+#include "dummy/dummy/dummy.h"
+
+
+/*+ sysyem tick in us +*/
+#define TICK 1200
+
+#define RRTICK 5000
+#define TBS_NUM 1
+#define TBS_DEN 10
+
+
+TIME __kernel_register_levels__(void *arg)
+{
+ struct multiboot_info *mb = (struct multiboot_info *)arg;
+
+ EDF_register_level(EDF_ENABLE_ALL);
+ RR_register_level(RRTICK, RR_MAIN_YES, mb);
+ TBS_register_level(TBS_ENABLE_ALL, 0, TBS_NUM, TBS_DEN);
+ TBS_register_level(TBS_ENABLE_ALL, 0, TBS_NUM*3, TBS_DEN);
+ dummy_register_level();
+
+ return TICK;
+}
+
+TASK __init__(void *arg)
+{
+ struct multiboot_info *mb = (struct multiboot_info *)arg;
+
+ __call_main__(mb);
+
+ return (void *)0;
+}
+
Index: demos/branches/xen/base/aster.c
===================================================================
--- demos/branches/xen/base/aster.c (nonexistent)
+++ demos/branches/xen/base/aster.c (revision 1684)
@@ -0,0 +1,378 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Paolo Gai <pj@gandalf.sssup.it>
+ * (see the web pages for full authors list)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/*
+ * Copyright (C) 2000 Paolo Gai, Gerardo Lamastra and Giuseppe Lipari
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ *
+ * CVS : $Id: aster.c,v 1.6 2005-02-25 11:10:46 pj Exp $
+
+ Author: Gerardo Lamastra
+ Giuseppe Lipari
+ Date: 1/10/96
+
+ File: Aster.C
+ Revision: 1.6
+
+*/
+
+/*
+ Well, this is only a stupid demo which intend to show many
+ HARTIK+ capabilities; the application is structured in the followig
+ way: there is an ASTER task wich randomly creates some ASTEROID tasks
+ which are displayed into the first window; each task is HARD/PERIODIC
+ and auto-kills itself when it reaches the window end!
+ An other couple of tasks, TITLE & PUT give an example of port
+ communication facility; the server task creates the port, the client
+ task connect to it and uses the server to accomplish some stuff.
+ Port can be declared READ/WRITE and can model ONE-TO-ONE communication
+ or MANY-TO-ONE communication.
+ Finally a second couple of tasks realizes a communiation through CABs;
+ each time a key is pressed, the ascii code is posted into the CAB by the
+ CCC task while the second task, WRITE, displays it on the screen and
+ perform other silly actions.
+ Finally a CLOCK task is implemented to test system clock.
+ Please note that usually the HARTIK+ application is made up of a task
+ group which interacts among them, while the main() function, which
+ became a task itself when the kernel is activated, is suspended until
+ the system is ready to terminate; the MAIN task can also be used to make
+ other background activities, but it should not be killed; when the
+ application terminates, the control is passed to MAIN which kills
+ everybody, shut down the system and can handle other operations using
+ the services available with the previou operating system (I.E. the DOS).
+ If you need to manage sudden abort/exception you should install your own
+ exception handler and raise it through the exc_raise() primitive to
+ make the system abort safely!
+ Remember that the exit functions posted through sys_atexit() will be
+ executed in both cases, to allow clean system shutdown.
+*/
+
+#include <kernel/kern.h>
+#include <sem/sem/sem.h>
+#include <hartport/hartport/hartport.h>
+#include <cabs/cabs/cabs.h>
+#include <string.h>
+
+#include <drivers/shark_keyb26.h>
+
+//#define __VPAGING__
+
+#include <drivers/crtwin.h>
+
+int num_aster = 0;
+#define ASTER_LIM 67
+
+CAB cc;
+BYTE esc = FALSE;
+
+TASK asteroide(void)
+{
+ int i = 1;
+ int y = rand() % 7 + 1;
+ while (i < ASTER_LIM) {
+ puts_xy(i,y,WHITE,"*");
+ task_endcycle();
+
+ puts_xy(i,y,WHITE," ");
+ i++;
+ }
+ num_aster--;
+ return 0;
+}
+
+DWORD taskCreated = 0;
+
+TASK aster(void)
+{
+ PID p;
+ SOFT_TASK_MODEL m_soft;
+ int r;
+ WIN w;
+
+ win_init(&w,0,0,ASTER_LIM,8);
+ win_frame(&w,BLACK,WHITE,"Asteroids",2);
+
+ soft_task_default_model(m_soft);
+ soft_task_def_met(m_soft,2000);
+ soft_task_def_ctrl_jet(m_soft);
+
+ srand(7);
+ while (1) {
+ if (num_aster < 5) {
+ r = (rand() % 50) - 25;
+ soft_task_def_arg(m_soft,(void *)((rand() % 7)+1));
+ soft_task_def_period(m_soft,(50 + r)*1000);
+ p = task_create("aaa",asteroide,(TASK_MODEL *)&m_soft,NULL);
+ taskCreated++;
+ task_activate(p);
+ num_aster++;
+ }
+
+ task_endcycle();
+ }
+}
+
+TASK clock()
+{
+ WIN w;
+ int s = 0, m = 0;
+
+ win_init(&w,68,0,11,2);
+ win_frame(&w,BLACK,WHITE,"Clk",1);
+
+ while(1) {
+ printf_xy(70,1,WHITE,"%2d : %2d",m,s);
+ task_endcycle();
+
+ if (++s > 59) {
+ s = 0;
+ m++;
+ }
+ printf_xy(70,1,WHITE,"%2d : %2d",m,s);
+ task_endcycle();
+ }
+}
+
+TASK title()
+{
+ PORT t;
+ WIN w;
+ int i,pos = 77;
+ char msg[85],tmp[85],ss[2];
+ BYTE c;
+
+ win_init(&w,0,9,79,2);
+ win_frame(&w,BLACK,WHITE,"Title",2);
+
+ for (i=0; i < 77; i++) msg[i] = ' ';
+ msg[77] = 0;
+
+ t = port_connect("title",1,STREAM,READ);
+
+ while (1) {
+ port_receive(t,&c,BLOCK);
+ ss[0] = c;
+ ss[1] = 0;
+ strcat(msg,ss);
+ puts_xy(1,10,WHITE,msg);
+ pos++;
+ if (pos > 77) {
+ strcpy(tmp,&(msg[1]));
+ tmp[pos-1] = 0;
+ pos -= 1;
+ strcpy(msg,tmp);
+ }
+ task_endcycle();
+ }
+}
+
+#define STR "..................... S.Ha.R.K. ....................."\
+ " Guarantees hard tasks "\
+ " Includes soft periodic tasks "\
+ "TB server for decrementing the aperiodic response time "\
+ "SRP for both hard & soft aperiodic tasks "\
+ "Portability toward other compilers/system "\
+ " "\
+ "Programmers : Gerardo Lamastra (lamastra@sssup2.sssup.it) "\
+ " Giuseppe Lipari (lipari@sssup2.sssup.it) "\
+ "Research coordinator: Giorgio Buttazzo (giorgio@sssup1.sssup.it)"\
+ " "\
+ " "\
+ " "
+
+static char GreetMsg[1600];
+
+TASK put(void)
+{
+ PORT p;
+
+ strcpy(GreetMsg,STR);
+
+ p = port_create("title",strlen(GreetMsg),1,STREAM,WRITE);
+ while(1) {
+ port_send(p,GreetMsg,BLOCK);
+ task_endcycle();
+ }
+}
+
+TASK ccc(void)
+{
+ WIN w;
+ char *m;
+
+ win_init(&w,68,3,10,3);
+ win_frame(&w,BLACK,WHITE,"CCC",2);
+ puts_xy(70,4,WHITE,"Cab");
+
+ while(1) {
+ m = cab_getmes(cc);
+ puts_xy(72,5,WHITE,m);
+ cab_unget(cc,m);
+ task_endcycle();
+ }
+}
+
+
+TASK write_keyb()
+{
+ BYTE c;
+ char *msg;
+
+ while (1) {
+ c = keyb_getchar();
+ if (c == ESC) {
+ esc = TRUE;
+ task_endcycle();
+ }
+ else {
+#ifdef __VPAGING__
+ if (c == 's') {
+ if (get_visual_page() == 0) set_visual_page(1);
+ else if (get_visual_page() == 1) set_visual_page(0);
+ }
+#endif
+ msg = cab_reserve(cc);
+ msg[0] = c;
+ msg[1] = 0;
+ cab_putmes(cc,msg);
+ }
+ }
+}
+
+#define DELTA 200000.0
+double carico(double rif,BYTE init)
+{
+ double i;
+ DWORD t1 = 0,t2 = 1000;
+ double u;
+
+ i = 0.0;
+ do {
+ i += 1;
+ } while (i <= DELTA);
+
+ u = i / ((double) (t2 - t1));
+
+ if (init) return u;
+ else return (1.0 - u/rif);
+}
+
+int main(int argc, char **argv)
+{
+ PID p1,p2,p3,p4,p5,p6;
+
+ HARD_TASK_MODEL m_per;
+ SOFT_TASK_MODEL m_soft;
+ NRT_TASK_MODEL m_nrt;
+
+ struct timespec t;
+
+#ifdef __VPAGING__
+ set_active_page(1);
+ set_visual_page(1);
+#endif
+
+ CRSR_OFF();
+ clear();
+ puts_xy(0,20,WHITE,"Press ESC to exit demo.");
+ cc = cab_create("Cab",2,2);
+
+ soft_task_default_model(m_soft);
+ soft_task_def_period(m_soft,500000);
+ soft_task_def_met(m_soft,1000);
+ soft_task_def_group(m_soft, 1);
+ p1 = task_create("Aster",aster,&m_soft,NULL);
+ if (p1 == -1) {
+ perror("Aster.C(main): Could not create task <aster>");
+ exit(-1);
+ }
+
+ hard_task_default_model(m_per);
+ hard_task_def_mit(m_per,500000);
+ hard_task_def_wcet(m_per,1000);
+ hard_task_def_group(m_per, 1);
+ p2 = task_create("Clock",clock,&m_per,NULL);
+ if (p2 == -1) {
+ sys_shutdown_message("Aster.C(main): Could not create task <Clock>");
+ exit(1);
+ }
+
+ soft_task_def_period(m_soft, 50000);
+ p3 = task_create("Title",title,&m_soft, NULL);
+ if (p3 == -1) {
+ sys_shutdown_message("Aster.C(main): Could not create task <Title>");
+ exit(1);
+ }
+
+ soft_task_def_period(m_soft, 1000000);
+ p4 = task_create("Put",put,&m_soft, NULL);
+ if (p4 == -1) {
+ sys_shutdown_message("Aster.C(main): Could not create task <Put>");
+ exit(1);
+ }
+
+ nrt_task_default_model(m_nrt);
+ nrt_task_def_group(m_nrt, 1);
+ p5 = task_create("Write",write_keyb,&m_nrt,NULL);
+ if (p5 == -1) {
+ sys_shutdown_message("Aster.C(main): Could not create task <Write>");
+ exit(1);
+ }
+
+ hard_task_def_mit(m_per, 50000);
+ p6 = task_create("CabTask",ccc,&m_per,NULL);
+ if (p6 == -1) {
+ sys_shutdown_message("Aster.C(main): Could not create task <CabTask>\n");
+ exit(1);
+ }
+
+ group_activate(1);
+
+ while (!esc) {
+ sys_gettime(&t);
+ printf_xy(0,21,WHITE,"Clock : %-9ds %-9dns",(int)t.tv_sec, (int)t.tv_nsec);
+ }
+
+ group_kill(1);
+ clear();
+ CRSR_STD();
+#ifdef __VPAGING__
+ set_active_page(0);
+ set_visual_page(0);
+#endif
+
+ exit(0);
+
+ return 0;
+
+}
+
Index: demos/branches/xen/base/makefile
===================================================================
--- demos/branches/xen/base/makefile (nonexistent)
+++ demos/branches/xen/base/makefile (revision 1684)
@@ -0,0 +1,92 @@
+#
+#
+#
+
+ifndef BASE
+BASE=../..
+endif
+include $(BASE)/config/config.mk
+
+PROGS = sig time preempt
+PROGS += aster aster1 aster2 aster3 aster4 aster5 aster6 aster7 aster8
+PROGS += pcidemo
+PROGS += jointest condtest intsem semdemo pidemo pcdemo srpdemo mdemo
+PROGS += ego fly cabs
+
+include $(BASE)/config/example.mk
+
+# Text applications
+time:
+ make -f $(SUBMAKE) APP=time INIT= OTHEROBJS="ihello.o" OTHERINCL= SHARKOPT=
+
+sig:
+ make -f $(SUBMAKE) APP=sig INIT= OTHEROBJS="ihello.o" OTHERINCL= SHARKOPT=
+
+preempt:
+ make -f $(SUBMAKE) APP=preempt INIT= OTHEROBJS="initfile.o" OTHERINCL= SHARKOPT="__LINUXC26__ __INPUT__"
+
+semdemo:
+ make -f $(SUBMAKE) APP=semdemo INIT= OTHEROBJS="isemdemo.o" OTHERINCL= SHARKOPT=
+
+pidemo:
+ make -f $(SUBMAKE) APP=pidemo INIT= OTHEROBJS="imdemo.o" OTHERINCL= SHARKOPT=
+
+pcdemo:
+ make -f $(SUBMAKE) APP=pcdemo INIT= OTHEROBJS="imdemo.o" OTHERINCL= SHARKOPT=
+
+srpdemo:
+ make -f $(SUBMAKE) APP=srpdemo INIT= OTHEROBJS="imdemo.o" OTHERINCL= SHARKOPT=
+
+mdemo:
+ make -f $(SUBMAKE) APP=mdemo INIT= OTHEROBJS="imdemo.o" OTHERINCL= SHARKOPT=
+
+aster:
+ make -f $(SUBMAKE) APP=aster INIT= OTHEROBJS="initfile.o" OTHERINCL= SHARKOPT="__LINUXC26__ __INPUT__"
+
+aster1:
+ make -f $(SUBMAKE) APP=aster1 INIT= OTHEROBJS="iaster1.o" OTHERINCL= SHARKOPT=
+
+aster2:
+ make -f $(SUBMAKE) APP=aster2 INIT= OTHEROBJS="iaster1.o" OTHERINCL= SHARKOPT=
+
+aster3:
+ make -f $(SUBMAKE) APP=aster3 INIT= OTHEROBJS="iaster3.o" OTHERINCL= SHARKOPT=
+
+aster4:
+ make -f $(SUBMAKE) APP=aster4 INIT= OTHEROBJS="iaster4.o" OTHERINCL= SHARKOPT="__LINUXC26__ __INPUT__"
+
+aster5:
+ make -f $(SUBMAKE) APP=aster5 INIT= OTHEROBJS="initfile.o" OTHERINCL= SHARKOPT="__LINUXC26__ __INPUT__"
+
+aster6:
+ make -f $(SUBMAKE) APP=aster6 INIT= OTHEROBJS="iaster6.o" OTHERINCL= SHARKOPT="__LINUXC26__ __INPUT__"
+
+aster7:
+ make -f $(SUBMAKE) APP=aster7 INIT= OTHEROBJS="iaster7.o" OTHERINCL= SHARKOPT="__LINUXC26__ __INPUT__"
+
+aster8:
+ make -f $(SUBMAKE) APP=aster8 INIT= OTHEROBJS="iaster8.o" OTHERINCL= SHARKOPT="__LINUXC26__ __INPUT__"
+
+pcidemo:
+ make -f $(SUBMAKE) APP=pcidemo INIT= OTHEROBJS="ipcidemo.o" OTHERINCL= SHARKOPT="__LINUXC26__ __PCI__"
+
+jointest:
+ make -f $(SUBMAKE) APP=jointest INIT= OTHEROBJS="imdemo.o" OTHERINCL= SHARKOPT=
+
+condtest:
+ make -f $(SUBMAKE) APP=condtest INIT= OTHEROBJS="imdemo.o" OTHERINCL= SHARKOPT=
+
+intsem:
+ make -f $(SUBMAKE) APP=intsem INIT= OTHEROBJS="imdemo.o" OTHERINCL= SHARKOPT=
+
+# Graphical applications
+
+ego:
+ make -f $(SUBMAKE) APP=ego INIT= OTHEROBJS="initgraph.o" OTHERINCL= SHARKOPT="__LINUXC26__ __PCI__ __INPUT__ __FB__"
+
+fly:
+ make -f $(SUBMAKE) APP=fly INIT= OTHEROBJS="initgraph.o" OTHERINCL= SHARKOPT="__LINUXC26__ __PCI__ __INPUT__ __FB__"
+
+cabs:
+ make -f $(SUBMAKE) APP=cabs INIT= OTHEROBJS="initgraph.o" OTHERINCL= SHARKOPT="__LINUXC26__ __PCI__ __INPUT__ __FB__"
+
Index: demos/branches/xen/base/jointest.c
===================================================================
--- demos/branches/xen/base/jointest.c (nonexistent)
+++ demos/branches/xen/base/jointest.c (revision 1684)
@@ -0,0 +1,214 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Paolo Gai <pj@gandalf.sssup.it>
+ * (see the web pages for full authors list)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/*
+ * Copyright (C) 2000 Giorgio Buttazzo, Paolo Gai
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ *
+ * CVS : $Id: jointest.c,v 1.3 2005-01-08 14:31:38 pj Exp $
+
+ This test verify the correctness of the task_join primitive. (that
+ function is the same as pthread_join... someday I will change the
+ names...)
+
+ There are 4 taks, J1, J2, J3, are created as joinable, J4 as detached
+
+ The main task:
+ Creates J1 and J2, locks m1 (a PI mitex), creates C3.
+ at t=0.8 sec it calls a task_join on J3 (that returns EDEADLK),
+ it unlocks m1, then it makes task_join on J3 another time.
+ Next it creates J4 as detached and finally it does a task_join on J4
+ (that returns EINVAL).
+
+ J1:
+ at t=0.2 sec it calls task_join on J2, the it ends.
+
+ J2:
+ it simply waits t=0.4 sec and it ends.
+
+ J3:
+ First, it calls task_join on J1.
+ Then, at t=0.6 sec it locks m1, then unlocks it
+
+ J4:
+ it simply waits t=1 sec and it ends.
+
+*/
+
+#include "kernel/kern.h"
+
+PID j0, j1, j2, j3, j4;
+mutex_t m1;
+
+TASK J1()
+{
+ int err;
+ void *ret;
+
+ cprintf("J1: started, waiting 0.2 sec\n");
+
+ while (sys_gettime(NULL) < 200000);
+
+ cprintf("J1: 0.2 sec reached, joining J2\n");
+
+ err = task_join(j2, &ret);
+
+ cprintf("J1: join J2 returns %d error %d, exiting\n",
+ (int)ret,err);
+ return (void *)11;
+}
+
+TASK J2()
+{
+ cprintf("J2: started, waiting 0.4 sec\n");
+
+ while (sys_gettime(NULL) < 400000);
+
+ cprintf("J2: 0.4 sec reached, exiting\n");
+
+ return (void *)22;
+}
+
+TASK J3()
+{
+ int err;
+ void *ret;
+
+ cprintf("J3: started, joining J1\n");
+
+ err = task_join(j1, &ret);
+
+ cprintf("J3: join J1 returns %d error %d, waiting 0.6sec\n", (int)ret, err);
+
+ while (sys_gettime(NULL) < 600000);
+
+ cprintf("J1: 0.6 sec reached, locking m1\n");
+
+ mutex_lock(&m1);
+
+ cprintf("J3: locked m1, unlocking m1\n");
+
+ mutex_unlock(&m1);
+
+ cprintf("J3: unlocked m1, exiting\n");
+
+ return (void *)33;
+}
+
+TASK J4()
+{
+ cprintf("J4: started, waiting 1 sec\n");
+
+ while (sys_gettime(NULL) < 1000000);
+
+ cprintf("J4: 1 sec reached, exiting\n");
+
+ return (void *)44;
+}
+
+int main(int argc, char **argv)
+{
+ NRT_TASK_MODEL m;
+
+ PI_mutexattr_t a;
+
+ int err;
+ void *ret;
+
+ struct timespec t;
+
+ j0 = exec_shadow;
+ nrt_task_default_model(m);
+ nrt_task_def_joinable(m);
+
+ /* ---------------------------------------------------------------------
+ Mutex creation
+ --------------------------------------------------------------------- */
+
+ PI_mutexattr_default(a);
+ mutex_init(&m1,&a);
+
+
+ /* ---------------------------------------------------------------------
+ Let's go !!!!
+ --------------------------------------------------------------------- */
+
+ cprintf("main: creating J1,J2,J3, locking m1\n");
+
+ j1 = task_create("J1", J1, &m, NULL);
+ if (j1 == NIL) { cprintf("Can't create J1 task...\n"); return 1; }
+ task_activate(j1);
+
+ j2 = task_create("J2", J2, &m, NULL);
+ if (j2 == NIL) { cprintf("Can't create J2 task...\n"); return 1; }
+ task_activate(j2);
+
+ mutex_lock(&m1);
+
+ j3 = task_create("J3", J3, &m, NULL);
+ if (j3 == NIL) { cprintf("Can't create J3 task...\n"); return 1; }
+ task_activate(j3);
+
+ cprintf("main: waiting t=0.8 sec\n");
+
+ while (sys_gettime(NULL) < 800000);
+
+ err = task_join(j3, NULL);
+
+ cprintf("main: join J3 error %d, unlocking m1\n",err);
+
+ mutex_unlock(&m1);
+
+ err = task_join(j3, &ret);
+
+ cprintf("main: join J3 returns %d error %d, unlocked m1, creating J4\n",
+ (int)ret,err);
+
+ nrt_task_def_unjoinable(m);
+ j4 = task_create("J4", J4, &m, NULL);
+ if (j4 == NIL) { cprintf("Can't create J4 task...\n"); return 1; }
+
+ task_activate(j4);
+
+ err = task_join(j4,&ret);
+
+ cprintf("main: join J4 returns %d error %d, exiting\n", (int)ret, err);
+
+ do {
+ sys_gettime(&t);
+ } while (t.tv_sec < 10);
+
+ exit(0);
+
+ return 0;
+
+}
Index: demos/branches/xen/base/aster1.c
===================================================================
--- demos/branches/xen/base/aster1.c (nonexistent)
+++ demos/branches/xen/base/aster1.c (revision 1684)
@@ -0,0 +1,174 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Paolo Gai <pj@gandalf.sssup.it>
+ * (see the web pages for full authors list)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/*
+ * Copyright (C) 2000 Paolo Gai
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ *
+ * CVS : $Id: aster1.c,v 1.4 2005-01-08 14:31:38 pj Exp $
+
+ this is a reduced verion of the classic Hartik demo Aster.
+
+ It uses:
+ - EDF module
+ . periodic tasks
+ - an high number of task executing concurrently
+
+ The demo ends after 6 seconds.
+
+*/
+
+/*
+ Well, this is only a stupid demo which intend to show many
+ HARTIK+ capabilities; the application is structured in the followig
+ way: there is an ASTER task wich randomly creates some ASTEROID tasks
+ which are displayed into the first window; each task is HARD/PERIODIC
+ and auto-kills itself when it reaches the window end!
+ Finally a CLOCK task is implemented to test system clock.
+ Please note that usually the HARTIK+ application is made up of a task
+ group which interacts among them, while the main() function, which
+ became a task itself when the kernel is activated, is suspended until
+ the system is ready to terminate; the MAIN task can also be used to make
+ other background activities, but it should not be killed; when the
+ application terminates, the control is passed to MAIN which kills
+ everybody, shut down the system and can handle other operations using
+ the services available with the previou operating system (I.E. the DOS).
+ If you need to manage sudden abort/exception you should install your own
+ exception handler and raise it through the exc_raise() primitive to
+ make the system abort safely!
+ Remember that the exit functions posted through sys_atexit() will be
+ executed in both cases, to allow clean system shutdown.
+*/
+
+#include "kernel/kern.h"
+
+int num_aster = 0;
+#define ASTER_LIM 67
+#define ASTER_MAX 90
+
+TASK asteroide(void)
+{
+ int i = 1;
+ int y = rand() % 20 + 1;
+ while (i < ASTER_LIM) {
+ puts_xy(i,y,WHITE,"*");
+ task_endcycle();
+
+ puts_xy(i,y,WHITE," ");
+ i++;
+ }
+ num_aster--;
+ return 0;
+}
+
+DWORD taskCreated = 0;
+
+TASK aster(void)
+{
+ PID p;
+
+ HARD_TASK_MODEL m;
+ int r;
+
+ hard_task_default_model(m);
+ hard_task_def_wcet(m,500);
+
+ srand(7);
+ while (1) {
+ if (num_aster < ASTER_MAX) {
+ r = (rand() % 50) - 25;
+
+ hard_task_def_arg(m,(void *)((rand() % 7)+1));
+ hard_task_def_mit(m, (50+r)*1000);
+ p = task_create("aaa",asteroide,&m,NULL);
+ taskCreated++;
+ task_activate(p);
+ num_aster++;
+ }
+
+ task_endcycle();
+ }
+}
+
+TASK clock()
+{
+ int s = 0, m = 0;
+
+ while(1) {
+ printf_xy(70,1,WHITE,"%2d : %2d",m,s);
+ task_endcycle();
+
+ if (++s > 59) {
+ s = 0;
+ m++;
+ }
+ printf_xy(70,1,WHITE,"%2d : %2d",m,s);
+ task_endcycle();
+ }
+}
+
+int main(int argc, char **argv)
+{
+ PID p1,p2;
+ HARD_TASK_MODEL m;
+ struct timespec t;
+
+ clear();
+
+ hard_task_default_model(m);
+ hard_task_def_mit(m,10000);
+ hard_task_def_wcet(m,2000);
+ hard_task_def_group(m,1);
+
+ p1 = task_create("Aster",aster,&m,NULL);
+ if (p1 == -1) {
+ sys_shutdown_message("Aster.C(main): Could not create task <aster> ...");
+ exit(1);
+ }
+
+ hard_task_def_mit(m,500000);
+ p2 = task_create("Clock",clock,&m,NULL);
+ if (p2 == -1) {
+ sys_shutdown_message("Aster.C(main): Could not create task <Clock> ...");
+ exit(1);
+ }
+
+ group_activate(1);
+
+ do {
+ sys_gettime(&t);
+ } while (t.tv_sec < 10);
+
+ exit(0);
+ return 0;
+}
+
Index: demos/branches/xen/base/time.c
===================================================================
--- demos/branches/xen/base/time.c (nonexistent)
+++ demos/branches/xen/base/time.c (revision 1684)
@@ -0,0 +1,69 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Paolo Gai <pj@gandalf.sssup.it>
+ * (see the web pages for full authors list)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/*
+ * Copyright (C) 2000 Paolo Gai
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ *
+ * CVS : $Id: time.c,v 1.2 2005-01-08 14:31:38 pj Exp $
+ *
+ * Timer correctness test
+ */
+
+#include "kernel/kern.h"
+
+#define NT 10
+
+int main(int argc, char **argv)
+{
+ struct timespec t[NT];
+ int i;
+
+ cprintf("Timer correctness test (1 second).\n");
+
+ for (i=0; i<NT; i++) NULL_TIMESPEC(&t[i]);
+
+ do {
+ for (i=0; i<NT-1; i++) t[i+1] = t[i];
+
+ sys_gettime(&t[0]);
+
+ if (TIMESPEC_A_LT_B(&t[0],&t[1])) {
+ for (i=0; i<NT; i++)
+ cprintf("%d %ld\n",i, t[i].tv_nsec);
+ exit(0);
+ }
+ } while (t[0].tv_sec < 1);
+
+ return 0;
+}
+
Index: demos/branches/xen/base/intsem.c
===================================================================
--- demos/branches/xen/base/intsem.c (nonexistent)
+++ demos/branches/xen/base/intsem.c (revision 1684)
@@ -0,0 +1,109 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Paolo Gai <pj@gandalf.sssup.it>
+ * (see the web pages for full authors list)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/*
+ * Copyright (C) 2000 Giorgio Buttazzo, Paolo Gai
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ *
+ * CVS : $Id: intsem.c,v 1.3 2005-01-08 14:31:38 pj Exp $
+
+ this test is a simple main() function with one other task.
+
+ This test verify the correctness of the internal_sem functions.
+
+*/
+
+#include "kernel/kern.h"
+
+#include <kernel/int_sem.h>
+
+internal_sem_t s;
+
+TASK pippo(void *a)
+{
+ int i=0;
+ struct timespec t;
+
+ do {
+ sys_gettime(&t);
+
+ if (i==0 && t.tv_sec == (int)a) {
+ i = 1;
+ cprintf("before internal_sem_wait %d\n",(int)a);
+ internal_sem_wait(&s);
+ cprintf("after internal_sem_wait %d\n",(int)a);
+ }
+
+ if (i==1 && t.tv_sec == 2+(int)a) {
+ i = 2;
+ cprintf("before internal_sem_post %d\n",(int)a);
+ internal_sem_post(&s);
+ cprintf("after internal_sem_post %d\n",(int)a);
+ return 0;
+ }
+
+
+ } while (1);
+}
+
+int main(int argc, char **argv)
+{
+ NRT_TASK_MODEL m;
+ PID p2,p3;
+
+ struct timespec t;
+
+ nrt_task_default_model(m);
+ nrt_task_def_group(m,1);
+
+ nrt_task_def_arg(m,(void *)1);
+ p2 = task_create("pippo1", pippo, &m, NULL);
+ if (p2 == NIL)
+ { cprintf("Can't create pippo1 task...\n"); return 1; }
+
+ nrt_task_def_arg(m,(void *)2);
+ p3 = task_create("pippo2", pippo, &m, NULL);
+ if (p3 == NIL)
+ { cprintf("Can't create pippo2 task...\n"); return 1; }
+
+ internal_sem_init(&s,1);
+
+ group_activate(1);
+
+ do {
+ sys_gettime(&t);
+ } while (t.tv_sec < 10);
+
+ exit(0);
+
+ return 0;
+}
Index: demos/branches/xen/base/pcdemo.c
===================================================================
--- demos/branches/xen/base/pcdemo.c (nonexistent)
+++ demos/branches/xen/base/pcdemo.c (revision 1684)
@@ -0,0 +1,203 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Paolo Gai <pj@gandalf.sssup.it>
+ * (see the web pages for full authors list)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/*
+ * Copyright (C) 2000 Paolo Gai
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ *
+ * CVS : $Id: pcdemo.c,v 1.4 2005-01-08 14:31:38 pj Exp $
+
+ This test verify the correctness of the PC module.
+
+ The test uses 3 mutexes
+ m0 with ceiling 0
+ m1 with ceiling 0
+ m2 with ceiling 1
+
+ the main task (NRT) creates three tasks.
+
+ J0 with PC priority 0
+ starts at t=1.5 sec and lock m0, unlock m0, then lock and unlock m1
+
+ J1 with PC priority 1
+ starts at t=0.5 sec and try to lock m2
+
+ J2 with PC priority 2
+ it starts and locks m2
+ at t=1 sec it locks m1
+ at t=1.5 sec it unlocks m1
+
+
+ The example is similar to the scheduling diagram shown at p. 197 of the
+ book "Sistemi in tempo Reale", by Giorgio Buttazzo, Pitagora Editrice
+
+*/
+
+#include "kernel/kern.h"
+
+mutex_t m0,m1,m2;
+
+void startJ(void *a)
+{
+ task_activate((PID)a);
+}
+
+TASK j0()
+{
+ cprintf("J0: before locking m0\n");
+ mutex_lock(&m0);
+ cprintf("J0: locked m0\n");
+ mutex_unlock(&m0);
+ cprintf("J0: unlocked m0, locking m1\n");
+
+ mutex_lock(&m1);
+ cprintf("J0: locked m1\n");
+ mutex_unlock(&m1);
+ cprintf("J0: unlocked m1, end task\n");
+ return 0;
+}
+
+
+TASK j1()
+{
+ cprintf("J1: before locking m2\n");
+ mutex_lock(&m2);
+ cprintf("J1: locked m2\n");
+ mutex_unlock(&m2);
+ cprintf("J1: unlocked m2, end task\n");
+ return 0;
+}
+
+
+TASK j2()
+{
+ cprintf("J2: before locking m2\n");
+ mutex_lock(&m2);
+ cprintf("J2: locked m2, waiting to t=1 sec\n");
+
+ while (sys_gettime(NULL) < 1000000);
+
+ cprintf("J2: t = 1 sec reached\n");
+ mutex_lock(&m1);
+ cprintf("J2: locked m1, waiting to t=2 sec\n");
+
+ while (sys_gettime(NULL) < 2000000);
+
+ cprintf("J2: t = 2 sec reached\n");
+ mutex_unlock(&m1);
+ cprintf("J2: unlocked m1\n");
+
+ mutex_unlock(&m2);
+ cprintf("J2: unlocked m2, end task\n");
+ return 0;
+}
+
+int main(int argc, char **argv)
+{
+ struct timespec t;
+
+ HARD_TASK_MODEL m;
+ PID p0,p1,p2;
+
+ PC_mutexattr_t a;
+ PI_mutexattr_t a2;
+ PC_RES_MODEL r;
+
+ clear();
+
+ cprintf("Priority Ceiling demo. It ends after 60 sec\n");
+
+ /* ---------------------------------------------------------------------
+ Task creation
+ --------------------------------------------------------------------- */
+
+ hard_task_default_model(m);
+ hard_task_def_mit(m, 1000000);
+ hard_task_def_wcet(m, 20000);
+ PC_res_default_model(r,0);
+ p0 = task_create("J0", j0, &m, &r);
+ if (p0 == NIL)
+ { cprintf("Can't create J0 task...\n"); return 1; }
+
+ hard_task_default_model(m);
+ hard_task_def_mit(m, 2100000);
+ hard_task_def_wcet(m, 20000);
+ PC_res_default_model(r,1);
+ p1 = task_create("J1", j1, &m, &r);
+ if (p1 == NIL)
+ { cprintf("Can't create J1 task...\n"); return 1; }
+
+ hard_task_default_model(m);
+ hard_task_def_mit(m, 10000000);
+ hard_task_def_wcet(m, 3000000);
+ PC_res_default_model(r,2);
+ p2 = task_create("J2", j2, &m, &r);
+ if (p2 == NIL)
+ { cprintf("Can't create J2 task...\n"); return 1; }
+
+ /* ---------------------------------------------------------------------
+ Mutex creation
+ --------------------------------------------------------------------- */
+
+ PI_mutexattr_default(a2);
+ PC_mutexattr_default(a,0);
+ mutex_init(&m0,(mutexattr_t *)&a);
+ mutex_init(&m1,(mutexattr_t *)&a);
+
+ PC_mutexattr_default(a,1);
+ mutex_init(&m2,(mutexattr_t *)&a);
+
+ /* ---------------------------------------------------------------------
+ Event post
+ --------------------------------------------------------------------- */
+
+ t.tv_sec = 0;
+ t.tv_nsec = 500000000;
+
+ kern_cli();
+ kern_event_post(&t,startJ,(void *)p1);
+
+ t.tv_sec = 1;
+ kern_event_post(&t,startJ,(void *)p0);
+ kern_sti();
+
+ task_activate(p2);
+
+ do {
+ sys_gettime(&t);
+ } while (t.tv_sec < 10);
+
+ exit(0);
+
+ return 0;
+
+}
Index: demos/branches/xen/base/preempt.c
===================================================================
--- demos/branches/xen/base/preempt.c (nonexistent)
+++ demos/branches/xen/base/preempt.c (revision 1684)
@@ -0,0 +1,149 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Paolo Gai <pj@gandalf.sssup.it>
+ * (see the web pages for full authors list)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/*
+ * Copyright (C) 2000 Paolo Gai
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ *
+ * CVS : $Id: preempt.c,v 1.4 2005-01-08 14:31:38 pj Exp $
+
+ CBS test with preemption disabling
+
+*/
+
+#include "kernel/kern.h"
+
+void *periodic(void *arg)
+{
+ int i;
+ int y = (int)arg;
+
+ for (i = 19; i < 60; i++) {
+ puts_xy(i,y,7,"*");
+
+ task_endcycle();
+ }
+
+ cprintf("Periodic: Task %d end.\n", exec_shadow);
+
+ return 0;
+}
+
+void *blocker(void *arg)
+{
+ struct timespec t;
+
+ task_nopreempt();
+ cprintf("Blocker: Task nopreempt\n");
+
+ do {
+ sys_gettime(&t);
+ } while (t.tv_sec < 5);
+
+ cprintf("Blocker: Task preempt\n");
+ task_preempt();
+
+ cprintf("Blocker: end\n");
+
+ return 0;
+}
+
+
+
+int main(int argc, char **argv)
+{
+ struct timespec t;
+ NRT_TASK_MODEL m;
+ SOFT_TASK_MODEL m_aper;
+ PID p;
+
+ clear();
+ cprintf("Preemption Test.\n");
+ cprintf("Start time: two periodic tasks and a blocker are created and activated.\n");
+ cprintf("2 seconds : blocker calls task_nopreempt.\n");
+ cprintf("5 seconds : task_preempt is called.\n");
+ cprintf(" The blocked task exec its pending activations.\n");
+ cprintf("10 seconds: the test stops.\n");
+ puts_xy(1,20,7,"save task:");
+ puts_xy(1,21,7,"skip task:");
+
+ nrt_task_default_model(m);
+
+ soft_task_default_model(m_aper);
+ soft_task_def_met(m_aper,10000);
+ soft_task_def_period(m_aper,200000);
+ soft_task_def_group(m_aper,1);
+ soft_task_def_arg(m_aper, (void *)20);
+ soft_task_def_periodic(m_aper);
+
+ p = task_create("save", periodic, &m_aper, NULL);
+ if (p == NIL)
+ {
+ sys_shutdown_message("Can't create save task...\n");
+ exit(1);
+ }
+
+ soft_task_def_skip_arrivals(m_aper);
+ soft_task_def_arg(m_aper, (void *)21);
+
+ p = task_create("skip", periodic, &m_aper, NULL);
+ if (p == NIL)
+ {
+ sys_shutdown_message("Can't create skip task...\n");
+ exit(1);
+ }
+
+ p = task_create("blocker", blocker, &m, NULL);
+ if (p == NIL)
+ {
+ sys_shutdown_message("Can't create blocker task...\n");
+ exit(1);
+ }
+
+ cprintf("main : save & skip tasks activated.\n");
+ group_activate(1);
+
+ do {
+ sys_gettime(&t);
+ } while (t.tv_sec < 2);
+
+ cprintf("main : blocker activated.\n");
+ task_activate(p);
+
+ do {
+ sys_gettime(&t);
+ } while (t.tv_sec < 10);
+
+ cprintf("main : End!!!\n");
+
+ return 0;
+}
Index: demos/branches/xen/base/pidemo.c
===================================================================
--- demos/branches/xen/base/pidemo.c (nonexistent)
+++ demos/branches/xen/base/pidemo.c (revision 1684)
@@ -0,0 +1,123 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Paolo Gai <pj@gandalf.sssup.it>
+ * (see the web pages for full authors list)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/*
+ * Copyright (C) 2000 Paolo Gai
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ *
+ * CVS : $Id: pidemo.c,v 1.4 2005-01-08 14:31:38 pj Exp $
+
+ This test verify the correctness of the PI module.
+
+ the main task (NRT) lock a PI mutex.
+ then 2 tasks arrives, with priority higher than the main
+
+ the first try to lock the mutex, but it can't, so the main inherit
+ his priority. The second simply prints a string.
+
+ If all works, the string of the second task is printed after the end of
+ the first task.
+
+*/
+
+#include "kernel/kern.h"
+
+mutex_t m1;
+
+
+TASK goofy1(void *a)
+{
+ cprintf("goofy1 before mutex_lock\n");
+ mutex_lock(&m1);
+ cprintf("goofy1 after mutex_lock\n");
+
+ mutex_unlock(&m1);
+ cprintf("goofy1 after mutex_unlock\n");
+
+ return 0;
+}
+
+TASK goofy2()
+{
+ cprintf("goofy2 inside goofy2\n");
+ return 0;
+}
+
+int main(int argc, char **argv)
+{
+ HARD_TASK_MODEL m;
+ PID p2,p3;
+
+ struct timespec t;
+
+ PI_mutexattr_t a;
+
+ hard_task_default_model(m);
+ hard_task_def_mit(m,50000);
+ hard_task_def_wcet(m,20000);
+ hard_task_def_group(m,1);
+
+ hard_task_def_arg(m,(void *)1);
+ p2 = task_create("goofy1", goofy1, &m, NULL);
+ if (p2 == NIL)
+ { cprintf("Can't create goofy1 task...\n"); return 1; }
+
+ hard_task_def_mit(m,100000);
+ p3 = task_create("goofy2", goofy2, &m, NULL);
+ if (p3 == NIL)
+ { cprintf("Can't create goofy2 task...\n"); return 1; }
+
+ PI_mutexattr_default(a);
+ mutex_init(&m1,&a);
+
+ cprintf("main before mutex_lock\n");
+ mutex_lock(&m1);
+ cprintf("main after mutex_lock\n");
+
+ group_activate(1);
+
+ cprintf("main after group_activate\n");
+ mutex_unlock(&m1);
+ cprintf("main after mutex_unlock\n");
+
+ mutex_destroy(&m1);
+ cprintf("main after mutex_destroy\n");
+
+ do {
+ sys_gettime(&t);
+ } while (t.tv_sec < 10);
+
+ exit(0);
+
+ return 0;
+
+}
Index: demos/branches/xen/base/sig.c
===================================================================
--- demos/branches/xen/base/sig.c (nonexistent)
+++ demos/branches/xen/base/sig.c (revision 1684)
@@ -0,0 +1,167 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Paolo Gai <pj@gandalf.sssup.it>
+ * (see the web pages for full authors list)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/**
+ ------------
+ CVS : $Id: sig.c,v 1.4 2005-01-08 14:31:38 pj Exp $
+
+ File: $File$
+ Revision: $Revision: 1.4 $
+ Last update: $Date: 2005-01-08 14:31:38 $
+ ------------
+**/
+
+/*
+ * Copyright (C) 2000 Paolo Gai and Giorgio Buttazzo
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+/*
+ Test Number 5:
+
+ this test is a simple main() function with one other task
+
+ This test can be useful to test functions like:
+
+ sys_gettime
+ sigemptyset
+ sigaddset
+ hartik_deliver_pending_signals
+ task_sigmask
+ sigaction
+ sigqueue
+ task_signal
+*/
+
+#include "kernel/kern.h"
+
+
+TASK goofy(void *arg)
+{
+ struct timespec t;
+
+ cprintf("Goofy: waiting 2 secs...\n");
+
+ do {
+ sys_gettime(&t);
+ } while (t.tv_sec < 2); // wait until 2 sec
+
+ cprintf("Goofy: ok, I'm ready :-)\n");
+
+ return 0;
+}
+
+void catchit_RT(int signo, siginfo_t *info, void *extra)
+{
+ cprintf("RT signal: Current Running Task = %d signo=%d code=%d value=%d from pid=%d\n",
+ exec_shadow,
+ info->si_signo, info->si_code,
+ info->si_value.sival_int, info->si_task);
+}
+
+void catchit(int signo)
+{
+ cprintf("RT signal: Current Running Task = %d signo=%d\n",
+ exec_shadow, signo);
+}
+
+int main(int argc, char **argv)
+{
+ struct timespec t;
+ NRT_TASK_MODEL m;
+ PID p2;
+
+ sigset_t newmask;
+ sigset_t oldmask;
+ struct sigaction action;
+ union sigval sval;
+
+ clear();
+
+ /* Set the signal action */
+ action.sa_flags = SA_SIGINFO;
+ action.sa_sigaction = catchit_RT;
+ action.sa_handler = 0;
+ action.sa_mask = 0;
+
+ if (sigaction(SIGUSR1, &action, NULL) == -1) {
+ perror("Error using sigaction.");
+ return -1;
+ }
+
+ action.sa_flags = 0;
+ action.sa_handler = (void (*)(int))catchit;
+
+ if (sigaction(SIGILL, &action, NULL) == -1) {
+ perror("Error using sigaction.");
+ return -1;
+ }
+
+ /* create another task */
+ nrt_task_default_model(m);
+ nrt_task_def_group(m,1);
+
+ p2 = task_create("goofy", goofy, &m, NULL);
+ if (p2 == NIL)
+ {
+ cprintf("Can't create goofy task...\n");
+ return 1;
+ }
+
+ group_activate(1);
+
+ /* block the signal for the main task */
+ sigemptyset(&newmask);
+ sigaddset(&newmask,SIGUSR1);
+ task_sigmask(SIG_BLOCK, &newmask, &oldmask); // pthread_sigmask
+
+ cprintf("main: Sending 2 signals ...\n");
+
+ sval.sival_int = 123;
+ sigqueue(0,SIGUSR1,sval);
+ sval.sival_int = 999;
+ sigqueue(0,SIGUSR1,sval);
+
+ cprintf("main: Now sending a signal to myself,"
+ " then wait until 4 secs...\n");
+
+ task_signal(0 /* main */, SIGILL); // pthread_kill
+
+ NULL_TIMESPEC(&t);
+ do {
+ sys_gettime(&t);
+ } while (t.tv_sec < 4); // wait until 4 s
+
+ cprintf("main: ending...\n");
+
+ return 0;
+}
Index: demos/branches/xen/base/condtest.c
===================================================================
--- demos/branches/xen/base/condtest.c (nonexistent)
+++ demos/branches/xen/base/condtest.c (revision 1684)
@@ -0,0 +1,209 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Paolo Gai <pj@gandalf.sssup.it>
+ * (see the web pages for full authors list)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/*
+ * Copyright (C) 2000 Giorgio Buttazzo, Paolo Gai
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ *
+ * CVS : $Id: condtest.c,v 1.3 2005-01-08 14:31:38 pj Exp $
+
+ This test verify the correctness of the condition variables.
+ (... it doesn't test all...)
+
+ The test uses 1 mutex
+
+ the main task (NRT) creates three tasks.
+
+ J0, J1, J3
+ starts, lock the mutex, and wait on a condition variable
+
+ J2
+ at t = 0.5 lock the mutex and call cond_signal
+ at t = 1 lock the mutex and call cond_signal
+
+*/
+
+#include "kernel/kern.h"
+
+mutex_t m0;
+cond_t c0;
+
+int number = 0;
+
+PID p0,p1,p2,p3;
+
+TASK j0()
+{
+ cprintf("J0: before locking m0\n");
+ mutex_lock(&m0);
+ cprintf("J0: locked m0, waiting on c0, number =%d\n", number);
+ while (!number) {
+ cond_wait(&c0,&m0);
+ cprintf("J0: number = %d, if >0 unlocking m0\n",number);
+ }
+ number--;
+ mutex_unlock(&m0);
+ cprintf("J0: unlocked m0, end task\n");
+ return 0;
+}
+
+
+TASK j1()
+{
+ cprintf("J1: before locking m0\n");
+ mutex_lock(&m0);
+ cprintf("J1: locked m0, waiting on c0, number =%d\n", number);
+ while (!number) {
+ cond_wait(&c0,&m0);
+ cprintf("J1: number = %d, if >0 unlocking m0\n",number);
+ }
+ number--;
+ mutex_unlock(&m0);
+ cprintf("J1: unlocked m0, end task\n");
+ return 0;
+}
+
+
+TASK j2()
+{
+
+ cprintf("J2: started, waiting t=0.5 sec\n");
+ while (sys_gettime(NULL) < 500000);
+
+ cprintf("J2: before locking m0\n");
+ mutex_lock(&m0);
+ cprintf("J2: locked m0, number++ (was %d), cond_signal\n", number);
+
+ number++;
+ cond_signal(&c0);
+
+ cprintf("J2: unlocking m0\n");
+ mutex_unlock(&m0);
+
+ cprintf("J2: waiting t=1 sec\n");
+ while (sys_gettime(NULL) < 1000000);
+
+ cprintf("J2: Killing J3\n");
+ task_kill(p3);
+ cprintf("J2: before locking m0\n");
+ mutex_lock(&m0);
+ cprintf("J2: locked m0, number++ (was %d), cond_signal\n", number);
+
+ number++;
+ cond_signal(&c0);
+
+ cprintf("J2: unlocking m0\n");
+ mutex_unlock(&m0);
+ cprintf("J2: unlocked m0, end task\n");
+ return 0;
+}
+
+void cleanup_lock(void *arg)
+{
+ cprintf("J3: KILL!!!\n");
+ mutex_unlock(&m0);
+ cprintf("J3: unlocked m0 by the cleanup function\n");
+}
+
+TASK j3()
+{
+ cprintf("J3: before locking m0\n");
+ mutex_lock(&m0);
+ cprintf("J3: locked m0, waiting on c0, number =%d\n", number);
+ task_cleanup_push(cleanup_lock, (void *)&m0);
+ while (!number) {
+ cond_wait(&c0,&m0);
+ cprintf("J3: number = %d, if >0 unlocking m0\n",number);
+ }
+ task_cleanup_pop(0);
+ // I hope this task never reach this point... it is killed by J2!!!
+ number--;
+ mutex_unlock(&m0);
+ cprintf("J3: unlocked m0, end task\n");
+ return 0;
+}
+
+
+int main(int argc, char **argv)
+{
+ struct timespec t;
+
+ NRT_TASK_MODEL m;
+
+ PI_mutexattr_t a;
+
+ /* ---------------------------------------------------------------------
+ Task creation
+ --------------------------------------------------------------------- */
+
+ nrt_task_default_model(m);
+ nrt_task_def_group(m,1);
+ p0 = task_create("J0", j0, &m, NULL);
+ if (p0 == NIL)
+ { cprintf("Can't create J0 task...\n"); return 1; }
+
+ p1 = task_create("J1", j1, &m, NULL);
+ if (p1 == NIL)
+ { cprintf("Can't create J1 task...\n"); return 1; }
+
+ p2 = task_create("J2", j2, &m, NULL);
+ if (p2 == NIL)
+ { cprintf("Can't create J2 task...\n"); return 1; }
+
+ p3 = task_create("J3", j3, &m, NULL);
+ if (p3 == NIL)
+ { cprintf("Can't create J3 task...\n"); return 1; }
+
+ /* ---------------------------------------------------------------------
+ Mutex creation
+ --------------------------------------------------------------------- */
+
+ PI_mutexattr_default(a);
+ mutex_init(&m0,&a);
+
+ cond_init(&c0);
+
+ /* ---------------------------------------------------------------------
+ Event post
+ --------------------------------------------------------------------- */
+
+ group_activate(1);
+
+ do {
+ sys_gettime(&t);
+ } while (t.tv_sec < 10);
+
+ exit(1);
+
+ return 0;
+
+}
Index: demos/branches/xen/base/semdemo.c
===================================================================
--- demos/branches/xen/base/semdemo.c (nonexistent)
+++ demos/branches/xen/base/semdemo.c (revision 1684)
@@ -0,0 +1,105 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Paolo Gai <pj@gandalf.sssup.it>
+ * (see the web pages for full authors list)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/*
+ * Copyright (C) 2000 Paolo Gai
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ *
+ * CVS : $Id: semdemo.c,v 1.3 2005-01-08 14:31:38 pj Exp $
+
+ This is a really simple semaphore demo.
+
+*/
+
+#include "kernel/kern.h"
+
+#include "semaphore.h"
+
+sem_t s;
+
+void *goofy(void *a)
+{
+ struct timespec t;
+ char *n = proc_table[exec_shadow].name;
+
+ cprintf("Task %s: Locking semaphore...\n", n);
+
+ sem_wait(&s);
+ cprintf("Task %s: Semaphore locked...\n", n);
+
+ do {
+ sys_gettime(&t);
+ } while (t.tv_sec < (int)a);
+
+ cprintf("Task %s: Unlocking semaphore...\n", n);
+
+ sem_post(&s);
+
+ cprintf("Task %s: Semaphore unlocked...\n", n);
+
+ return 0;
+}
+
+int main(int argc, char **argv)
+{
+ NRT_TASK_MODEL m;
+ PID p2,p3;
+
+ struct timespec t;
+
+ nrt_task_default_model(m);
+ nrt_task_def_group(m,1);
+
+ nrt_task_def_arg(m,(void *)1);
+ p2 = task_create("goofy1", goofy, &m, NULL);
+ if (p2 == NIL)
+ { cprintf("Can't create goofy1 task...\n"); return 1; }
+
+ nrt_task_def_arg(m,(void *)2);
+ p3 = task_create("goofy2", goofy, &m, NULL);
+ if (p3 == NIL)
+ { cprintf("Can't create goofy2 task...\n"); return 1; }
+
+ cprintf("Initializing semaphore...\n");
+
+ sem_init(&s,0,1);
+
+ group_activate(1);
+
+ do {
+ sys_gettime(&t);
+ } while (t.tv_sec < 10);
+
+ exit(0);
+
+ return 0;
+}
Index: demos/branches/xen/base/pcidemo.c
===================================================================
--- demos/branches/xen/base/pcidemo.c (nonexistent)
+++ demos/branches/xen/base/pcidemo.c (revision 1684)
@@ -0,0 +1,45 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/*
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+*/
+
+#include "kernel/kern.h"
+#include "unistd.h"
+
+int main (int argc, char *argv[])
+{
+
+ cprintf("Init Done...\n");
+
+ sleep(5);
+
+ return 0;
+
+}
Index: demos/branches/xen/base/readme
===================================================================
--- demos/branches/xen/base/readme (nonexistent)
+++ demos/branches/xen/base/readme (revision 1684)
@@ -0,0 +1,44 @@
+This directory contains a set of simple examples, useful to understand
+How to make a Shark application.
+
+Text mode demos:
+- hello.c --> a hello world application
+- timer.c --> tests if the time reads are always increasing
+ (useful for debugging purposes)
+- sig.c --> simple example that sends signals
+- semdemo.c --> simple example that uses a semaphore for mutual exclusion
+- pidemo.c --> simple example that uses PI mutexes between NRT and Hard tasks
+- pcdemo.c --> simple example that uses PC mutexes between NRT and Hard tasks
+- srpdemo.c --> simple example that uses SRP mutexes between NRT and Hard tasks
+- mdemo.c --> simple example that uses a mutex, initialized with whatever
+ protocol you want ;-)
+- aster.c --> Wow! the original Hartik ASTER demo!!! (EDF, CABs, ...)
+- aster1.c --> a -lot- of periodic tasks that are created and then die
+ (6 seconds demo)
+- aster2.c --> a simple stress test: a lot of tasks are created until Utot=1;
+ uses jet functions to dump statistics. (60 seconds demo)
+- aster3.c --> aster2 + 8 tasks handled by 2 different TBS servers
+- aster4.c --> aster3 + CBS tasks + Shutdown demo with system tasks
+- aster5.c --> aster3 + only CBS tasks + mutexes... Really interesting!
+- aster6.c --> aster5 + Polling Server to serve the JetCtrl task
+- aster7.c --> another aster clone with Rate monotonic and Polling server
+- aster8.c --> aster5 + Sporadic Server
+- preempt.c --> simple test for CBS, task_preempt, task_nopreempt, and
+ save/skip arrivals
+- pcidemo.c --> PCI Bus scan
+- jointest.c--> Simple test that uses the task_join primitive
+- condtest.c--> Simple test that uses condition variables
+- intsem.c --> Simple test that uses internal semaphores
+
+Graphical demos:
+- fly.c --> Random flies going around the screen
+- ego.c --> Periodic tasks that writes a phrease on the screen
+- cabs.c --> Example that uses cabs
+
+Note on the init files:
+- ihello.c (RR+dummy)
+- isemdemo.c (iaster1+Semaphores)
+- iaster1.c (EDF+RR+dummy)
+- iaster3.c (EDF+RR+TBS(0.1)+TBS(0.3)+dummy)
+- iaster4.c (iaster3+CBS)
+- initfile.c (EDF+CBS+RR+dummy, SEMaphores, CABS, HARTPORTs and Keyboard)
Index: demos/branches/xen/base/hello.c
===================================================================
--- demos/branches/xen/base/hello.c (nonexistent)
+++ demos/branches/xen/base/hello.c (revision 1684)
@@ -0,0 +1,53 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Paolo Gai <pj@gandalf.sssup.it>
+ * (see the web pages for full authors list)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/*
+ * Copyright (C) 2000 Paolo Gai
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+/*
+ CVS : $Id: hello.c,v 1.1 2002-10-28 08:13:37 pj Exp $
+
+ hello.c:
+
+ This test is a simple hello world function.
+
+*/
+
+#include "kernel/kern.h"
+
+int main(int argc, char **argv)
+{
+ cprintf("Hello, world!\n");
+
+ return 0;
+}
Index: demos/branches/xen/base/cabs.dat
===================================================================
--- demos/branches/xen/base/cabs.dat (nonexistent)
+++ demos/branches/xen/base/cabs.dat (revision 1684)
@@ -0,0 +1,11 @@
+----------------------------------------------------
+system tick (ms): 1
+----------------------------------------------------
+
+task periods (ticks)
+----------------------------------------------------
+producer 1: 200 consumer 1: 400
+producer 2: 100 consumer 2: 400
+producer 3: 300 consumer 3: 150
+producer 4: 800 consumer 4: 200
+----------------------------------------------------
Index: demos/branches/xen/tftptest/tftptest.c
===================================================================
--- demos/branches/xen/tftptest/tftptest.c (nonexistent)
+++ demos/branches/xen/tftptest/tftptest.c (revision 1684)
@@ -0,0 +1,239 @@
+
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+#include <string.h>
+#include <kernel/func.h>
+#include <kernel/kern.h>
+
+#include <drivers/shark_keyb26.h>
+#include <drivers/udpip.h>
+
+#include "tftp.h"
+#include "endian.h"
+
+#include "sem/sem/sem.h"
+
+#include <kernel/kern.h>
+#include <ll/i386/hw-instr.h>
+
+
+#define LOCAL_HOST_IP "192.168.0.134"
+#define REMOTE_HOST_IP "192.168.0.133"
+
+sem_t m1, m2;
+int handle, handle2;
+
+int prog = 0;
+
+/* This function is called when the user presses CTRL-C (stops the systems) */
+
+void esci(KEY_EVT *k)
+{
+ sys_shutdown_message("Exit from the program...\n");
+ sys_shutdown_message("Ctrl-C pressed!\n");
+ exit(1);
+}
+
+void augprog(KEY_EVT *k)
+{
+ prog = 1;
+}
+
+void keyb_start(void) {
+ KEY_EVT k;
+
+ k.flag = CNTL_BIT;
+ k.scan = KEY_C;
+ k.status = KEY_PRESSED;
+ k.ascii = 'c';
+ keyb_hook(k, esci,FALSE);
+ k.flag = CNTR_BIT;
+ k.scan = KEY_C;
+ k.ascii = 'c';
+ k.status = KEY_PRESSED;
+ keyb_hook(k, esci,FALSE);
+
+ k.flag = CNTL_BIT;
+ k.scan = KEY_A;
+ k.ascii = 'a';
+ k.status = KEY_PRESSED;
+ keyb_hook(k, augprog,FALSE);
+ k.flag = CNTR_BIT;
+ k.scan = KEY_A;
+ k.ascii = 'a';
+ k.status = KEY_PRESSED;
+ keyb_hook(k, augprog,FALSE);
+}
+
+TASK test_upload(void *arg) {
+ int i;
+ char msg[200];
+ int bytes;
+
+ i = 0;
+ while (1) {
+
+// cprintf("uploader 1\n");
+
+ sprintf(msg, "tftptest says: i = %5d\n", i);
+ tftp_put(handle, msg, strlen(msg));
+
+// cprintf("uploader 2\n");
+
+ bytes = tftp_usedbuffer(handle);
+ /*!*/sprintf(msg, "buffer %5d ", bytes);
+ /*!*/puts_xy(BASE_X, 18, WHITE, msg);
+
+// cprintf("uploader 3\n");
+ i++;
+
+ task_endcycle();
+ }
+ return(0);
+}
+
+TASK test_upload2(void *arg) {
+ int i;
+ char msg[200];
+ int bytes;
+
+ i = 0;
+ while (1) {
+
+ sprintf(msg, "tftptest says: i = %5d\n", i);
+ tftp_put(handle2, msg, strlen(msg));
+
+ bytes = tftp_usedbuffer(handle2);
+ /*!*/sprintf(msg, "buffer2 %5d ", bytes);
+ /*!*/puts_xy(BASE_X, 38, WHITE, msg);
+ i++;
+
+ task_endcycle();
+ }
+ return(0);
+}
+
+void wait() {
+ char ch;
+ do {
+ ch = keyb_getch(NON_BLOCK);
+ } while(prog == 0);
+ prog = 0;
+}
+
+int main(void)
+{
+ int err;
+ HARD_TASK_MODEL hard_m;
+ PID p1, p2;
+
+ keyb_start();
+ cprintf("main: Keyboard handler started\n");
+
+ tftp_init();
+ cprintf("main: Tftp library initialized\n");
+
+ err = tftp_net_start(LOCAL_HOST_IP, REMOTE_HOST_IP, 1);
+ cprintf("netval = %d\n", err);
+ if (err == 1) {
+ cprintf("Net Init from %s to %s\n", LOCAL_HOST_IP, REMOTE_HOST_IP);
+ } else {
+ cprintf("Net Init Failed...\n");
+ exit(1);
+ }
+
+ sem_init(&m1, 0, 1);
+
+
+ if ((handle = tftp_open("test.txt")) == -1) {
+ cprintf("No slots available. Program aborted...\n");
+ exit(1);
+ }
+
+ cprintf("NOTE: if you use a Linux TFTP server, remember that the two files\n");
+ cprintf(" to be written MUST exists on the server,\n");
+ cprintf(" and must have the right permissions\n");
+ cprintf("Ctrl-A to proceed *** Ctrl-C to stop\n");
+ wait();
+ clear();
+
+ cprintf("Handle = %d\n", handle);
+
+ if ((err = tftp_upload(handle, 4096, &m1)) != 0) {
+ cprintf("Error %d calling tftp_upload(). Program aborted...\n", err);
+ exit(1);
+ }
+
+ /* First we set the sender's task properties...*/
+ hard_task_default_model(hard_m);
+ hard_task_def_wcet(hard_m, 10000);
+ hard_task_def_mit(hard_m, 300000);
+
+ if ((p1 = task_create("test_upload", test_upload, &hard_m, NULL)) == NIL) {
+ cprintf("Error creating test_upload task. Program aborted...\n");
+ exit(1);
+ }
+ if (task_activate(p1) == -1) {
+ cprintf("Error activating test_upload task. Program aborted...\n");
+ exit(1);
+ }
+
+
+ sem_init(&m2, 0, 1);
+
+ if ((handle2 = tftp_open("test2.txt")) == -1) {
+ cprintf("No second slot available. Program aborted...\n");
+ exit(1);
+ }
+
+
+
+ cprintf("Handle2 = %d\n", handle2);
+
+ if ((err = tftp_upload(handle2, 4096, &m2)) != 0) {
+ cprintf("Error %d calling tftp_upload(). Program aborted...\n", err);
+ exit(1);
+ }
+
+ /* First we set the sender's task properties...*/
+ hard_task_default_model(hard_m);
+ hard_task_def_wcet(hard_m, 10000);
+ hard_task_def_mit(hard_m, 300000);
+
+ if ((p2 = task_create("test_upload2", test_upload2, &hard_m, NULL)) == NIL) {
+ cprintf("Error creating test_upload2 task. Program aborted...\n");
+ exit(1);
+ }
+ if (task_activate(p2) == -1) {
+ cprintf("Error activating test_upload2 task. Program aborted...\n");
+ exit(1);
+ }
+
+
+ wait();
+
+ tftp_close(handle, TFTP_STOP_NOW);
+
+ tftp_close(handle2, TFTP_STOP_NOW);
+
+ cprintf("\nProgram terminated correctly.\n");
+
+ exit(0);
+
+ return(0);
+}
Index: demos/branches/xen/tftptest/initfile.c
===================================================================
--- demos/branches/xen/tftptest/initfile.c (nonexistent)
+++ demos/branches/xen/tftptest/initfile.c (revision 1684)
@@ -0,0 +1,163 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators: Giorgio Buttazzo <giorgio@sssup.it>
+ *
+ * Authors :
+ * Mauro Marinoni <mauro.marinoni@unipv.it>
+ * Tullio Facchinetti <tullio.facchinetti@unipv.it>
+ * (see authors.txt for full list of hartik's authors)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://hartik.sssup.it
+ */
+
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+
+#include <kernel/kern.h>
+
+#include "edf/edf/edf.h"
+#include "cbs/cbs/cbs.h"
+#include "rr/rr/rr.h"
+#include "dummy/dummy/dummy.h"
+#include "intdrive/intdrive/intdrive.h"
+
+#include "sem/sem/sem.h"
+#include "hartport/hartport/hartport.h"
+
+#include <drivers/shark_linuxc26.h>
+#include <drivers/shark_pci26.h>
+#include <drivers/shark_input26.h>
+#include <drivers/shark_keyb26.h>
+
+/*+ sysyem tick in us +*/
+#define TICK 0
+
+/*+ RR tick in us +*/
+#define RRTICK 10000
+
+/*+ Interrupt Server +*/
+#define INTDRIVE_Q 1000
+#define INTDRIVE_U 0.1*MAX_BANDWIDTH
+#define INTDRIVE_FLAG 0
+
+void call_shutdown_task(void *arg);
+int device_drivers_init();
+int device_drivers_close();
+void set_shutdown_task();
+TASK shutdown_task_body(void *arg);
+
+PID shutdown_task_PID = 1;
+
+TIME __kernel_register_levels__(void *arg)
+{
+ struct multiboot_info *mb = (struct multiboot_info *)arg;
+ LEVEL EDF_level;
+
+ INTDRIVE_register_level(INTDRIVE_Q, INTDRIVE_Q, INTDRIVE_U, INTDRIVE_FLAG);
+ EDF_level = EDF_register_level(EDF_ENABLE_ALL);
+ CBS_register_level(CBS_ENABLE_ALL, EDF_level);
+ RR_register_level(RRTICK, RR_MAIN_YES, mb);
+ dummy_register_level();
+
+ SEM_register_module();
+
+ return TICK;
+}
+
+int device_drivers_close() {
+
+ KEYB26_close();
+ INPUT26_close();
+
+ return 0;
+
+}
+
+int device_drivers_init() {
+
+ KEYB_PARMS kparms = BASE_KEYB;
+
+ LINUXC26_register_module(TRUE);
+ PCI26_init();
+ INPUT26_init();
+
+ /*keyb_def_map(kparms, KEYMAP_IT);*/
+ keyb_def_ctrlC(kparms, NULL);
+ KEYB26_init(&kparms);
+
+ return 0;
+}
+
+TASK shutdown_task_body(void *arg) {
+
+ device_drivers_close();
+ sys_shutdown_message("-- S.Ha.R.K. Closed --\n");
+
+ return NULL;
+}
+
+#define SHUTDOWN_TIMEOUT_SEC 3
+
+void set_shutdown_task() {
+
+ NRT_TASK_MODEL nrt;
+
+ nrt_task_default_model(nrt);
+ nrt_task_def_system(nrt);
+
+ shutdown_task_PID = task_create("Shutdown Task", shutdown_task_body, &nrt, NULL);
+ if (shutdown_task_PID == NIL) {
+ sys_shutdown_message("Error: Cannot create shutdown task\n");
+ exit(1);
+ }
+
+}
+
+void call_shutdown_task(void *arg) {
+
+ struct timespec t;
+
+ sys_gettime(&t);
+ t.tv_sec += SHUTDOWN_TIMEOUT_SEC;
+
+ /* Emergency timeout to exit from RUNLEVEL_SHUTDOWN */
+ kern_event_post(&t,(void *)((void *)sys_abort_shutdown),(void *)0);
+
+ task_activate(shutdown_task_PID);
+}
+
+TASK __init__(void *arg)
+{
+ struct multiboot_info *mb = (struct multiboot_info *)arg;
+
+ HARTPORT_init();
+
+ set_shutdown_task();
+
+ device_drivers_init();
+
+ sys_atrunlevel(call_shutdown_task, NULL, RUNLEVEL_SHUTDOWN);
+
+ __call_main__(mb);
+
+ return (void *)0;
+}
Index: demos/branches/xen/tftptest/makefile
===================================================================
--- demos/branches/xen/tftptest/makefile (nonexistent)
+++ demos/branches/xen/tftptest/makefile (revision 1684)
@@ -0,0 +1,16 @@
+#
+#
+#
+
+ifndef BASE
+BASE=../..
+endif
+include $(BASE)/config/config.mk
+
+PROGS = tftptest
+
+include $(BASE)/config/example.mk
+
+tftptest:
+ make -f $(SUBMAKE) APP=tftptest INIT= OTHEROBJS="initfile.o" OTHERINCL= SHARKOPT="__LINUXC26__ __PCI__ __NET__ __INPUT__ __TFTP__"
+
Index: demos/branches/xen/shutdown/makefile
===================================================================
--- demos/branches/xen/shutdown/makefile (nonexistent)
+++ demos/branches/xen/shutdown/makefile (revision 1684)
@@ -0,0 +1,11 @@
+ifndef BASE
+BASE=../..
+endif
+include $(BASE)/config/config.mk
+
+PROGS += shutdown
+
+include $(BASE)/config/example.mk
+
+shutdown:
+ make -f $(SUBMAKE) APP=shutdown INIT= OTHEROBJS="ishut.o" OTHERINCL= SHARKOPT="__LINUXC26__ __PCI__ __INPUT__"
Index: demos/branches/xen/shutdown/ishut.c
===================================================================
--- demos/branches/xen/shutdown/ishut.c (nonexistent)
+++ demos/branches/xen/shutdown/ishut.c (revision 1684)
@@ -0,0 +1,183 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Paolo Gai <pj@gandalf.sssup.it>
+ * Tullio Facchinetti <tullio.facchinetti@unipv.it>
+ * (see the web pages for full authors list)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/*
+ * Copyright (C) 2000 Paolo Gai
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+#include "kernel/kern.h"
+#include "intdrive/intdrive/intdrive.h"
+#include "edf/edf/edf.h"
+#include "rr/rr/rr.h"
+#include "tbs/tbs/tbs.h"
+#include "cbs/cbs/cbs.h"
+#include "rrsoft/rrsoft/rrsoft.h"
+#include "dummy/dummy/dummy.h"
+#include "sem/sem/sem.h"
+
+/*+ sysyem tick in us +*/
+#define TICK 0
+
+#define RRTICK 5000
+
+/*+ Interrupt Server +*/
+#define INTDRIVE_Q 1000
+#define INTDRIVE_U 0.1*MAX_BANDWIDTH
+#define INTDRIVE_FLAG 0
+
+#include <drivers/shark_linuxc26.h>
+#include <drivers/shark_input26.h>
+#include <drivers/shark_keyb26.h>
+
+#define FRAME_BUFFER_DEVICE 0
+
+void call_shutdown_task(void *arg);
+int device_drivers_init();
+int device_drivers_close();
+void set_shutdown_task();
+TASK shutdown_task_body(void *arg);
+
+PID shutdown_task_PID = -1;
+
+TIME __kernel_register_levels__(void *arg)
+{
+ struct multiboot_info *mb = (struct multiboot_info *)arg;
+ LEVEL EDF_level;
+
+ INTDRIVE_register_level(INTDRIVE_Q, INTDRIVE_Q, INTDRIVE_U, INTDRIVE_FLAG);
+ EDF_level = EDF_register_level(EDF_ENABLE_ALL);
+ CBS_register_level(CBS_ENABLE_ALL, EDF_level);
+ RR_register_level(RRTICK, RR_MAIN_YES, mb);
+ dummy_register_level();
+
+ SEM_register_module();
+
+ return TICK;
+}
+
+TASK __init__(void *arg)
+{
+ struct multiboot_info *mb = (struct multiboot_info *)arg;
+
+ /* Create the shutdown task. It will be activated at RUNLEVEL
+ SHUTDOWN */
+ set_shutdown_task();
+
+ /* Init the drivers */
+ device_drivers_init();
+
+ /* Set the shutdown task activation */
+ sys_atrunlevel(call_shutdown_task, NULL, RUNLEVEL_SHUTDOWN);
+
+ __call_main__(mb);
+
+ return (void *)0;
+}
+
+void set_shutdown_task() {
+
+ /* WARNING: the shutdown task is a background thread. It cannot execute
+ if the system is overloaded */
+ NRT_TASK_MODEL nrt;
+
+ nrt_task_default_model(nrt);
+ nrt_task_def_system(nrt);
+
+ shutdown_task_PID = task_create("Shutdown Task",shutdown_task_body,&nrt,NULL);
+ if (shutdown_task_PID == NIL) {
+ sys_shutdown_message("Error: Cannot create shutdown task\n");
+ exit(1);
+ }
+
+}
+
+int device_drivers_init() {
+
+ KEYB_PARMS kparms = BASE_KEYB;
+
+ LINUXC26_register_module(TRUE);
+
+ PCI26_init();
+
+ INPUT26_init();
+
+ keyb_def_ctrlC(kparms, NULL);
+
+ KEYB26_init(&kparms);
+
+ return 0;
+
+}
+
+int device_drivers_close() {
+
+ KEYB26_close();
+
+ INPUT26_close();
+
+ return 0;
+
+}
+
+#define SHUTDOWN_TIMEOUT_SEC 5
+
+void mytimeout(void *x)
+{
+ kern_printf("\nTIMEOUT!!!!!\n");
+ sys_abort_shutdown(1);
+}
+
+void call_shutdown_task(void *arg)
+{
+ struct timespec t;
+
+ kern_printf("\ncall_shutdown_task\n");
+ sys_gettime(&t);
+ t.tv_sec += SHUTDOWN_TIMEOUT_SEC;
+
+ /* Emergency timeout to exit from RUNLEVEL_SHUTDOWN */
+ kern_event_post(&t,mytimeout,(void *)0);
+
+ task_activate(shutdown_task_PID);
+}
+
+TASK shutdown_task_body(void *arg) {
+
+ device_drivers_close();
+
+ sys_shutdown_message("-- S.Ha.R.K. Closed --\n");
+
+ return NULL;
+
+}
Index: demos/branches/xen/shutdown/shutdown.c
===================================================================
--- demos/branches/xen/shutdown/shutdown.c (nonexistent)
+++ demos/branches/xen/shutdown/shutdown.c (revision 1684)
@@ -0,0 +1,321 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Paolo Gai <pj@gandalf.sssup.it>
+ * (see the web pages for full authors list)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/*
+ * Copyright (C) 2000 Paolo Gai
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ *
+ * CVS : $Id: shutdown.c,v 1.2 2005-02-25 11:04:46 pj Exp $
+
+ Shutdown demo, used to test system shutdown.
+
+ - derived from demo aster4
+
+ - the aper_asteroid task simulates some system tasks that have to
+ finish prior system shutdown.
+
+ - note that if you remove the nanosleep in aper_asteroid
+ the system does not shut down correctly because the system
+ tasks does not receive any CPU time!!!
+*/
+
+/*
+ * Copyright (C) 2000 Paolo Gai
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+#include "kernel/kern.h"
+#include "edf/edf/edf.h"
+#include "cbs/cbs/cbs.h"
+
+#include <time.h>
+
+#include <drivers/shark_linuxc26.h>
+#include <drivers/shark_input26.h>
+#include <drivers/shark_keyb26.h>
+
+int num_aster = 0;
+#define ASTER_LIM 60
+#define DISPLAY_MAX 10
+#define ASTER_MAX 70
+#define STAT_Y 24
+
+#define PER_MAX 5
+#define APER_MAX 8
+
+// These numbers works on a Pentium 133 */
+#define PER_WCET 25000
+#define APER_WCET 53000
+#define CLOCK_WCET 1000
+#define ASTER_WCET 1000
+#define SOFT_MET 6300
+
+#define APER_REP 22000
+
+PID aper_table[APER_MAX];
+
+int shutting_down = 0;
+int nobandwidth;
+
+TASK asteroide(void *arg)
+{
+ int i;
+
+ for (;;) {
+ i = 1;
+ for (i=1; i < ASTER_LIM; i++) {
+ puts_xy(i,20,WHITE,"*");
+ task_endcycle();
+ puts_xy(i,20,WHITE," ");
+ }
+ }
+}
+
+
+TASK system_asteroide(void *arg)
+{
+ int i;
+ struct timespec t;
+ t.tv_sec = 0;
+
+ for (;;) {
+ i = 1;
+ for (i=1; i < ASTER_LIM; i++) {
+ puts_xy(i,21,WHITE,"s");
+
+ if (shutting_down) {
+ cprintf("Ending System Task %d\n",(int)arg);
+ return 0;
+ }
+
+ t.tv_nsec = 1000000*(100+rand()%200);
+ nanosleep(&t,NULL);
+
+ puts_xy(i,21,WHITE," ");
+ }
+ }
+}
+
+
+TASK aster()
+{
+ PID p;
+
+ SOFT_TASK_MODEL m_soft;
+ int r;
+ int x; // adaptive bandwidth...
+
+
+ soft_task_default_model(m_soft);
+ soft_task_def_met(m_soft,SOFT_MET);
+ soft_task_def_ctrl_jet(m_soft);
+
+ x = 64;
+
+ while (1) {
+ if (num_aster < ASTER_MAX) {
+ r = (rand() % 200);
+
+ soft_task_def_period(m_soft, (x+r)*1000);
+ p = task_create("aaa",asteroide,&m_soft,NULL);
+ if (p == -1)
+ {
+ if (x < 500 && errno != ENO_AVAIL_TASK) x += 1;
+ }
+ else {
+ num_aster++;
+ task_activate(p);
+ x /= 2;
+ if (x<50) x = 50;
+ }
+ }
+ task_endcycle();
+ }
+}
+
+
+/* we consider the first ASTER_MAX + 2 tasks from the PID 2
+ and plot on the screen the elapsed times... */
+TASK jetcontrol()
+{
+ int i; /* a counter */
+ TIME curr;
+ PID p;
+ struct timespec t;
+ t.tv_sec=0;
+ t.tv_nsec=100000;
+
+
+ kern_cli();
+ printf_xy(0,STAT_Y,WHITE,"PID ³ Curr. ³ status ³ name");
+ kern_sti();
+
+ for (;;) {
+ for (i=0,p=0; i<DISPLAY_MAX+5 && p<MAX_PROC; p++) {
+ if (proc_table[p].status==FREE) continue;
+
+ curr = 0;
+ jet_getstat(p, NULL, NULL, NULL, &curr);
+
+ kern_cli();
+ printf_xy(0,STAT_Y+i+1,WHITE,"%-3d ³ %-7d ³ %-6d ³ %s ",
+ p, (int)curr, proc_table[p].status, proc_table[p].name);
+ kern_sti();
+ i++;
+ }
+
+ for (; i<DISPLAY_MAX+5;i++) {
+ printf_xy(0,STAT_Y+i+1,WHITE," ³ ³ ³ ");
+ }
+
+ if (!nobandwidth) nanosleep(&t, NULL);
+ }
+}
+
+void endfun(KEY_EVT *k)
+{
+ exit(0);
+}
+
+void exiting(void *arg)
+{
+ cprintf("System shut down...\n");
+ shutting_down = 1;
+}
+
+int main(int argc, char **argv)
+{
+ KEY_EVT k;
+
+ PID p1,p3;
+ HARD_TASK_MODEL m;
+ SOFT_TASK_MODEL m_soft;
+ NRT_TASK_MODEL m_nrt;
+ int i;
+
+ srand(7);
+
+ clear();
+ cprintf("REMEMBER: RUN THIS DEMO IN 80x50 TEXT MODE!!!\n");
+ cprintf("use \"mode con lines=50\" to put the screen in 80x50.\n\n");
+ cprintf("Press SPACE for a typical WRONG shutdown sequence\n");
+ cprintf(" where the shutdown task does not receive bandwidth\n\n");
+ cprintf("Press another key for a clear shutdown\n");
+ nobandwidth = !(keyb_getch(BLOCK) - ' ');
+
+
+ k.flag = 0;
+ k.scan = KEY_ENT;
+ k.ascii = 13;
+ k.status = KEY_PRESSED;
+ keyb_hook(k, endfun, FALSE);
+
+
+
+ clear();
+ if (nobandwidth)
+ cprintf("ENTER to end the demo WITH A TIMEOUT...\n");
+ else
+ cprintf("ENTER to end the demo SHUTTING DOWN THE SYSTEM TASKS...\n");
+
+
+ sys_atrunlevel(exiting, NULL, RUNLEVEL_SHUTDOWN);
+
+
+ hard_task_default_model(m);
+ hard_task_def_wcet(m,ASTER_WCET);
+ hard_task_def_mit(m,10000);
+ hard_task_def_group(m,1);
+ hard_task_def_ctrl_jet(m);
+ p1 = task_create("Aster",aster,&m,NULL);
+ if (p1 == -1) {
+ sys_shutdown_message("(main): Could not create task <aster> ...");
+ exit(0);
+ }
+
+
+ soft_task_default_model(m_soft);
+ soft_task_def_met(m_soft,1000);
+ soft_task_def_period(m_soft,100000);
+ soft_task_def_group(m_soft,1);
+ soft_task_def_aperiodic(m_soft);
+ soft_task_def_system(m_soft);
+ soft_task_def_ctrl_jet(m_soft);
+ soft_task_def_nokill(m_soft);
+ p3 = task_create("JetControl",jetcontrol,&m_soft,NULL);
+ if (p3 == -1) {
+ sys_shutdown_message("(main): Could not create task <JetControl> ...");
+ exit(0);
+ }
+
+
+ /* These are the tasks that simulate the system tasks */
+
+ nrt_task_default_model(m_nrt);
+ nrt_task_def_ctrl_jet(m_nrt);
+ nrt_task_def_system(m_nrt);
+ nrt_task_def_group(m_nrt,1);
+
+ cprintf("creating system tasks: ");
+ for (i=0; i<APER_MAX; i++) {
+ char systemtaskname[]="mysystemtask0";
+ nrt_task_def_arg(m_nrt,(void *)i);
+ systemtaskname[12]='0'+i;
+ aper_table[i] = task_create(systemtaskname,system_asteroide,&m_nrt,NULL);
+ if (aper_table[i] == -1) {
+ sys_shutdown_message("(main): Could not create task <mysystemtask> ..."); exit(0);
+ }
+ else
+ cprintf(" %d",i);
+ }
+ cprintf("\n");
+
+
+
+ group_activate(1);
+ return 0;
+}
+
Index: demos/branches/xen/shutdown/readme.txt
===================================================================
--- demos/branches/xen/shutdown/readme.txt (nonexistent)
+++ demos/branches/xen/shutdown/readme.txt (revision 1684)
@@ -0,0 +1,15 @@
+This demo shows how the SHaRK shutdown sequence works.
+
+There are two ways to run the demo:
+
+- the first one shows a (hopefully) correct shutdown sequence
+
+- the second one shows an incorrect shutdows sequence, where the
+ system task does not have CPU time to execute and correctly
+ terminate. In this case the initializtion file posted a timeout that
+ forces system shutdown.
+
+Enjoy,
+
+PJ
+
Index: demos/branches/xen/dynademo/data.bin
===================================================================
--- demos/branches/xen/dynademo/data.bin (nonexistent)
+++ demos/branches/xen/dynademo/data.bin (revision 1684)
@@ -0,0 +1,11 @@
+//////////////////////////////////////////////////////////////////////
+/////////////// User Application running /////////////////////////////
+
+Dynalink demo.
+
+An ELF object (which is running now) and a data file
+(which you read now) are parsed as 'boot modules'
+to the S.H.A.R.K kernel by GRUB.
+
+Press a key to continue with this lame application.....:)
+//////////////////////////////////////////////////////////////////////
\ No newline at end of file
Index: demos/branches/xen/dynademo/app.c
===================================================================
--- demos/branches/xen/dynademo/app.c (nonexistent)
+++ demos/branches/xen/dynademo/app.c (revision 1684)
@@ -0,0 +1,188 @@
+///////////////////////////////////////////////////
+// app.c -Lex Nahumury 2006
+//
+// This would be the Closed Source User Application part.
+// The ELF object itself contains no GPL code.
+// The references to GPL code are resolved
+// by the Dynamic Linker after the kernel has loaded.
+//
+//////////////////////////////////////////////////
+
+/*
+Usage example:
+
+# For booting SHARK image from HD
+title S.H.A.R.K + Boot Modules from HD 0,0
+kernel (hd0,0)/boot/os mount root=/dev/hda1
+module (hd0,0)/boot/sh_app.bin
+module (hd0,0)/boot/data.bin
+
+*/
+
+#include "kernel/kern.h"
+#include <kernel/func.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <math.h>
+#include "ll/i386/cons.h"
+
+#include <drivers/shark_keyb26.h>
+#include "../../ports/dynalink/dynalink.h"
+
+extern void call_shutdown_task(void *arg);
+extern DWORD get_tick();
+
+struct params
+{
+ int task_nr;
+ int row;
+ int count;
+ int cycles;
+};
+
+
+TASK periodic_task(void *arg)
+{
+ int ani=0;
+ char c[2];
+ struct params* p = (struct params*)(arg);
+ int row = p->row;
+ char txt[4];
+ p->count=0;
+
+ while(p->count < p->cycles)
+ {
+ switch(ani)
+ {
+ case 0:
+ ani=1; sprintf(c,"%s", "\\");
+ break;
+ case 1:
+ ani=2; sprintf(c,"/");
+ break;
+ case 2:
+ ani=0; sprintf(c,"-");
+ break;
+ }
+ puts_xy(12,row,YELLOW, c );
+
+ ++p->count;
+ sprintf(txt,"%02d", p->count);
+ puts_xy(8,row,YELLOW, txt);
+
+ task_endcycle();
+ }
+
+ cprintf("Task #%d end.\n", p->task_nr);
+ if(p->task_nr==4) call_shutdown_task(0);
+ return 0;
+};
+
+
+// This is the main user application entry point.
+int main_module_entry(void* arg)
+{
+ struct dynalink_module_list* dml = (struct dynalink_module_list*)arg;
+
+ // make char pointer to text data module,..
+ char* txt = (char*)(dml->dat[0].start);
+
+ // ... and print out it's data content
+ cprintf("%s", txt);
+
+ keyb_getch(BLOCK);
+ clear();
+
+ SOFT_TASK_MODEL msoft;
+ PID p1,p2,p3,p4;
+
+ int yrow = 1;
+ puts_xy(0,yrow, 7,"Task#1:[ ]");
+ puts_xy(0,yrow+1,7,"Task#2:[ ]");
+ puts_xy(0,yrow+2,7,"Task#3:[ ]");
+ puts_xy(0,yrow+3,7,"Task#4:[ ]");
+
+ place(0,7);
+
+ // Init shared soft task model
+ soft_task_default_model(msoft);
+ soft_task_def_met(msoft,10000);
+ soft_task_def_group(msoft, 1);
+ soft_task_def_periodic(msoft);
+ soft_task_def_level(msoft, 2);
+
+ int cycles = 4;
+
+ // init Task 1
+ float task_periode = 1.0; // 1sec
+ int tick = get_tick(); // 1000 usec = 1 ms
+ int per = (int)( task_periode *1000.0 * tick);
+ struct params pp1;
+ pp1.task_nr = 1;
+ pp1.row = yrow;
+ pp1.cycles = cycles;
+ soft_task_def_period(msoft, per); // set period
+ soft_task_def_arg(msoft, (void*)(&pp1) ); // set arguments
+ p1 = task_create("save", periodic_task, &msoft, NULL);
+ if (p1 == NIL)
+ {
+ sys_shutdown_message("Can't create task1 ...\n");
+ exit(1);
+ }
+
+ // init Task 2
+ task_periode = task_periode*0.5; // twice as fast as task1
+ tick = get_tick(); // 1000 usec = 1 ms
+ per = (int)( task_periode *1000.0 * tick);
+ struct params pp2;
+ pp2.task_nr = 2;
+ pp2.row = yrow+1;
+ pp2.cycles = cycles*2;
+ soft_task_def_period(msoft, per);
+ soft_task_def_arg(msoft, (void*)(&pp2) );
+ p2 = task_create("skip", periodic_task, &msoft, NULL);
+ if (p2 == NIL)
+ {
+ sys_shutdown_message("Can't create task2...\n");
+ exit(1);
+ }
+
+ // init Task 3
+ task_periode = task_periode*0.5; // twice as fast as previous task
+ tick = get_tick(); // 1000 usec = 1 ms
+ per = (int)( task_periode *1000.0 * tick);
+ struct params pp3;
+ pp3.task_nr = 3;
+ pp3.row = yrow+2;
+ pp3.cycles = cycles*4;
+ soft_task_def_period(msoft, per);
+ soft_task_def_arg(msoft, (void*)(&pp3) );
+ p3 = task_create("skip", periodic_task, &msoft, NULL);
+ if(p3 == NIL)
+ {
+ sys_shutdown_message("Can't create task3...\n");
+ exit(1);
+ }
+
+ // init Task 4
+ task_periode = task_periode*0.5; // twice as fast as previous task
+ tick = get_tick(); // 1000 usec = 1 ms
+ per = (int)( task_periode *1000.0 * tick);
+ struct params pp4;
+ pp4.task_nr = 4;
+ pp4.row = yrow+3;
+ pp4.cycles = cycles*8;
+ soft_task_def_period(msoft, per);
+ soft_task_def_arg(msoft, (void*)(&pp4) );
+ p4 = task_create("skip", periodic_task, &msoft, NULL);
+ if(p4 == NIL)
+ {
+ sys_shutdown_message("Can't create task4...\n");
+ exit(1);
+ }
+
+ group_activate(1);
+
+ return 0;
+};
Index: demos/branches/xen/dynademo/os.c
===================================================================
--- demos/branches/xen/dynademo/os.c (nonexistent)
+++ demos/branches/xen/dynademo/os.c (revision 1684)
@@ -0,0 +1,201 @@
+//////////////////////////////////////////////////////////////
+// os.c -Lex Nahumury 2006
+//
+// This is the OpenSource SHARK OS/kernel part.
+// It will dynamicly link the main application ELF object
+// through 'Dynalink'.
+//
+//////////////////////////////////////////////////////////////
+#include "kernel/kern.h"
+#include <kernel/func.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <math.h>
+#include "ll/i386/cons.h"
+
+#include "edf/edf/edf.h"
+#include "cbs/cbs/cbs.h"
+#include "hardcbs/hardcbs/hardcbs.h"
+#include "rr/rr/rr.h"
+#include "dummy/dummy/dummy.h"
+#include "intdrive/intdrive/intdrive.h"
+
+#include "sem/sem/sem.h"
+#include "hartport/hartport/hartport.h"
+#include "cabs/cabs/cabs.h"
+
+#include <drivers/shark_linuxc26.h>
+#include <drivers/shark_pci26.h>
+#include <drivers/shark_input26.h>
+#include <drivers/shark_keyb26.h>
+
+// DYNALINK
+#include <dynalink.h>
+
+// some shark pci forward declaration stuff
+extern int pci20to26_find_class(unsigned int class_code, int index, BYTE *bus, BYTE *dev);
+extern int pci20to26_read_config_byte(unsigned int bus, unsigned int dev, int where, BYTE *val);
+extern int pci20to26_read_config_word(unsigned int bus, unsigned int dev, int where, WORD *val);
+extern int pci20to26_read_config_dword(unsigned int bus, unsigned int dev, int where, DWORD *val);
+extern int pci20to26_write_config_byte(unsigned int bus, unsigned int dev, int where, BYTE val);
+extern int pci20to26_write_config_word(unsigned int bus, unsigned int dev, int where, WORD val);
+extern int pci20to26_write_config_dword(unsigned int bus, unsigned int dev, int where, DWORD val);
+
+
+#define TICK 1000 // 1ms
+#define RRTICK 100000 // 100ms
+
+/*+ IntDrive Server +*/
+#define INTDRIVE_Q 1000
+#define INTDRIVE_U 0.1*MAX_BANDWIDTH
+#define INTDRIVE_FLAG 0
+
+#define NSEC_PER_SEC (1000000000L)
+#define SHUTDOWN_TIMEOUT_SEC 0.5 // seconds
+
+// prototypes
+void call_shutdown_task(void *arg);
+int device_drivers_init();
+int device_drivers_close();
+void set_shutdown_task();
+TASK shutdown_task_body(void *arg);
+
+// user application function pointer prototype
+int (*main_app_entry)(void* arg);
+
+
+// vars
+static struct multiboot_info *mb = 0;
+static struct dynalink_module_list dml;
+PID shutdown_task_PID = -1;
+
+
+// user app calls this to retrieve tick
+DWORD get_tick()
+{
+ return TICK;
+};
+
+TASK shutdown_task_body(void *arg)
+{
+ device_drivers_close();
+ sys_shutdown_message("-- OS Closed --\n");
+ return NULL;
+};
+
+void set_shutdown_task()
+{
+ NRT_TASK_MODEL nrt;
+ nrt_task_default_model(nrt);
+ nrt_task_def_system(nrt);
+
+ shutdown_task_PID = task_create("Shutdown Task", shutdown_task_body, &nrt, NULL);
+ if (shutdown_task_PID == NIL)
+ {
+ sys_shutdown_message("Error: Cannot create shutdown task\n");
+ exit(1);
+ }
+};
+
+
+void call_shutdown_task(void *arg)
+{
+ struct timespec t;
+ sys_gettime(&t);
+ t.tv_nsec += NSEC_PER_SEC * SHUTDOWN_TIMEOUT_SEC;
+ kern_event_post(&t,(void *)((void *)sys_abort_shutdown),(void *)0);
+ task_activate(shutdown_task_PID);
+};
+
+
+TIME __kernel_register_levels__(void *arg)
+{
+ mb = (struct multiboot_info *)arg;
+ LEVEL EDF_level;
+
+ INTDRIVE_register_level(INTDRIVE_Q, INTDRIVE_Q, INTDRIVE_U, INTDRIVE_FLAG);
+ EDF_level = EDF_register_level(EDF_ENABLE_ALL);
+ CBS_register_level(CBS_ENABLE_ALL, EDF_level);
+ RR_register_level(RRTICK, RR_MAIN_YES, mb);
+ dummy_register_level();
+
+ SEM_register_module();
+ CABS_register_module();
+
+ return TICK;
+};
+
+TASK __init__(void *arg)
+{
+ mb = (struct multiboot_info *)arg;
+
+ //HARTPORT_init();
+ set_shutdown_task();
+ device_drivers_init();
+
+ sys_atrunlevel( call_shutdown_task,
+ NULL,
+ RUNLEVEL_SHUTDOWN);
+
+ __call_main__(mb);
+
+ return (void *)0;
+};
+
+
+int main(int argc, char **argv)
+{
+ // Any modules passed to kernel by GRUB?
+ if(!mb->mods_count)
+ {
+ printk("No modules passed at all! Bye..\n");
+ exit(1);
+ }
+
+ // Process the modules through 'dynalink'
+ dynalink_modules(mb, &dml, "_module_entry");
+ if(dml.num_apps == 0)
+ {
+ printk("No Application modules found! Bye..\n");
+ exit(1);
+ }
+
+ // Run first found user application function
+ // and pass the dynalink_module_list..
+ DWORD dynadr = dml.app[0].dyn_entry;
+ if(dynadr)
+ {
+ main_app_entry = (void*)dynadr;
+ main_app_entry(&dml);
+ }
+ else
+ {
+ printk("No Application modules found! Bye..\n");
+ exit(1);
+ }
+return 0;
+};
+
+
+int device_drivers_init()
+{
+ LINUXC26_register_module(TRUE);
+ //PCI26_init();
+ INPUT26_init();
+
+ KEYB_PARMS kparms = BASE_KEYB;
+ keyb_def_ctrlC(kparms, NULL);
+ KEYB26_init(&kparms);
+
+ return 0;
+};
+
+int device_drivers_close()
+{
+ KEYB26_close();
+ INPUT26_close();
+ return 0;
+};
+
+
Index: demos/branches/xen/dynademo/make_app.mk
===================================================================
--- demos/branches/xen/dynademo/make_app.mk (nonexistent)
+++ demos/branches/xen/dynademo/make_app.mk (revision 1684)
@@ -0,0 +1,35 @@
+# This will make one single object file from multiple sources [Lex.N]
+
+DYNALINK=1
+ifndef BASE
+BASE=../..
+endif
+
+include $(BASE)/config/config.mk
+
+OTHERINCL += -I$(BASE)/drivers/linuxc26/include -I./include -I.
+OTHERINCL += -I$(BASE)/drivers/pci/include
+OTHERINCL += -I$(BASE)/drivers/input/include
+
+# add all sources here..
+OBJS = app.o
+
+all: sh_app.o
+ $(MV) sh_app.o sh_app.bin
+
+
+clean :
+ $(RM) *.o
+
+sh_app.o: $(OBJS)
+ $(LD) $(LINK_OPT) $(OBJS) -r -s -o sh_app.o
+
+
+# Common rules
+%.o : %.c
+ $(REDIR) $(CC) $(C_OPT) $(C_OUTPUT) -c $<
+%.s : %.c
+ $(REDIR) $(CC) $(C_OPT) $(C_OUTPUT) -S $<
+%.o : %.s
+ $(CC) $(ASM_OPT) -c $<
+
Index: demos/branches/xen/dynademo/make_os.mk
===================================================================
--- demos/branches/xen/dynademo/make_os.mk (nonexistent)
+++ demos/branches/xen/dynademo/make_os.mk (revision 1684)
@@ -0,0 +1,19 @@
+#
+
+ifndef BASE
+BASE=../..
+endif
+
+PROGS = os
+
+include $(BASE)/config/config.mk
+include $(BASE)/config/example.mk
+
+$(PROGS):
+ make -f $(SUBMAKE) APP=$(PROGS) \
+ INIT= \
+ OTHEROBJS= \
+ OTHERINCL= \
+ SHARKOPT="__LINUXC26__ __PCI__ __INPUT__ __DYNALINK__"
+
+
Index: demos/branches/xen/dynademo/readme.txt
===================================================================
--- demos/branches/xen/dynademo/readme.txt (nonexistent)
+++ demos/branches/xen/dynademo/readme.txt (revision 1684)
@@ -0,0 +1,83 @@
+---------------------------------------------
+Dynalink Demo.
+---------------------------------------------
+This is the Dynalink for S.H.A.R.K demo.
+Source files are in /shark/projects/dynademo
+The SHARK kernel and the user application
+are compiled seperatly by;
+
+make_os.mk
+make_app.mk
+
+The resulting OS kernel file is a default
+SHARK mutliboot compliant ELF executable.
+The resluting user Application is an ELF object file.
+
+Also included is a small test data.bin file
+to illustrate the use of extra data module parsing through GRUB.
+
+The idea is to boot the SHARK kernel through GRUB,
+and parsing the User Application plus any needed
+data files as 'boot modules'.
+GRUB usage example:
+
+# For booting SHARK image from HD
+title S.H.A.R.K + Boot Modules from HD 0,0
+kernel (hd0,0)/boot/os mount root=/dev/hda1
+module (hd0,0)/boot/sh_app.bin
+module (hd0,0)/boot/data.bin
+
+This could be a possible solution to get by
+certain GPL restrictions since no GPL code
+resides in the user application.
+The user application is dynamicly linked
+after the kernel is loaded.
+
+Another advantage is that we have a simple
+way of loading data files without the need for
+an IDE-driver plus Filesystem.
+Good enough for a few embedded solutions.
+
+-------------------------------------------------------------
+Dynalink code
+-------------------------------------------------------------
+The Dynalinker is based on Luca Abenia's code
+as used in the FD32 project.
+Source files are in /shark/dynalink
+The Dynalink makefile produces libdynalink.a
+which is compiled into the kernel by adding SHARKOPT =" __DYNALINK__"
+
+Also not that I added a section to config.mk as
+you can see in the included config.mk
+
+# added for dynalink [lex]
+ifndef DYNALINK
+LINK_OPT = -Bstatic -Ttext $(MEM_START) -s -nostartfiles -nostdlib -L$(LIB_PATH) -L$(OSLIB_PATH)
+else
+LINK_OPT = -Bstatic
+endif
+
+Operation:
+The Dynalinker supports only ELF objects.
+Everything else is loaded and treated as Data objects.
+
+After the SHARK kernel is booted it will execute main()
+which sole purpose here is to process all parsed
+boot modules, link any valid ELF objects
+and put the results in a dynalink_module_list struct.
+This struct is then used to run the actual User Application
+and to hold info about possible data files in memory
+that the User Application can use.
+
+The dynalinker uses a syscall_table to export/import the symbols.
+(review dynalink.c)
+Not all SHARK/Library functions needs to be exported!
+This is of course just an example.
+
+
+/Lex Nahumury 5:41 19-7-06
+
+
+
+
+
Index: demos/branches/xen/pci6025e/test_bms.c
===================================================================
--- demos/branches/xen/pci6025e/test_bms.c (nonexistent)
+++ demos/branches/xen/pci6025e/test_bms.c (revision 1684)
@@ -0,0 +1,262 @@
+/*****************************************************************************
+* Filename: test_bms.c *
+* Author: Marco Ziglioli (Doctor Stein) *
+* Date: 27/06/2001 *
+* Description: Test program for buffered period and semiperiod measurement *
+* capacity of National PCI6025E board *
+*----------------------------------------------------------------------------*
+* Notes: FOUT are enable and avaiable on pin 50 to provide 1 Mhz frequency *
+* You should connect source 0 (PIN 41) and source 1 (pin 45) to this *
+* freq source. Gate 0 (pin 42) and gate 1 (pin 44) must be connected *
+* rispectivly to DIO7 (pin 32) and DIO6 (pin 30). *
+* Use 'g' button to activate gate_action_task which generate a square *
+* wave with a freq of 0.5 Hz and Duty cycle of 75%. *
+* 's' button should show counters countent but gate_action_task *
+* when active shows counters content automatically so 's' button isn't*
+* useful. *
+*****************************************************************************/
+
+/* This file is part of the S.Ha.R.K. Project - http://shark.sssup.it
+ *
+ * Copyright (C) 2001 Marco Ziglioli
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+#include <kernel/kern.h>
+
+#include <drivers/shark_keyb26.h>
+#include <drivers/shark_fb26.h>
+
+#include <drivers/pci6025e/timer.h>
+#include <drivers/pci6025e/dio_ppi.h>
+
+#define SHOW_MET 30000
+#define SHOW_WCET 50000
+#define SHOW_PERIOD 1000000
+
+#define GATE_MET 2000
+#define GATE_WCET 5000
+#define GATE_PERIOD 2000000
+
+#define GATE_ACTION_P 500000
+#define GATE_ACTION_W 10000
+
+#define black rgb16(0, 0, 0)
+
+void endFun(KEY_EVT *);
+void gateEvent(KEY_EVT *);
+void showEvent(KEY_EVT *);
+
+void closeEvent(void *);
+
+void drawInterface(void);
+
+TASK show_val_body(int);
+TASK gate_action_body(int);
+
+BYTE sys = 0;
+PID show_val_pid, gate_action_pid;
+
+int main(int argc, char **argv)
+{
+ KEY_EVT k;
+ SOFT_TASK_MODEL show_val_mod;
+ HARD_TASK_MODEL gate_action_model;
+
+ k.flag = CNTL_BIT;
+ k.scan = KEY_C;
+ k.ascii = 'c';
+ k.status = KEY_PRESSED;
+ keyb_hook(k, endFun, FALSE);
+
+ k.flag = CNTR_BIT;
+ k.status = KEY_PRESSED;
+ keyb_hook(k, endFun, FALSE);
+
+ k.flag = 0;
+ k.scan = KEY_G;
+ k.ascii = 'g';
+ k.status = KEY_PRESSED;
+ keyb_hook(k, gateEvent, FALSE);
+
+ k.scan = KEY_S;
+ k.ascii = 's';
+ k.status = KEY_PRESSED;
+ keyb_hook(k, showEvent, FALSE);
+
+ if(!reMap()){
+ sys = 11;
+ exit(1);
+ }
+
+ soft_task_default_model(show_val_mod);
+ soft_task_def_aperiodic(show_val_mod);
+ soft_task_def_level(show_val_mod, 2);
+ soft_task_def_met(show_val_mod, SHOW_MET);
+ soft_task_def_wcet(show_val_mod, SHOW_WCET);
+ soft_task_def_period(show_val_mod, SHOW_PERIOD);
+ if( (show_val_pid = task_create("Show task", show_val_body, &show_val_mod, NULL))
+ == NIL ){
+ sys = 20;
+ exit(1);
+ }
+
+ hard_task_default_model(gate_action_model);
+ hard_task_def_mit(gate_action_model, GATE_ACTION_P);
+ hard_task_def_wcet(gate_action_model, GATE_ACTION_W);
+ if( (gate_action_pid = task_create("Gate Action", gate_action_body, &gate_action_model, NULL))
+ == NIL ){
+ sys = 22;
+ exit(1);
+ }
+
+ drawInterface();
+
+ DIO_init();
+ DIO_setup(0xFF);
+ DIO_write(0x00);
+
+ //All PFI configured as input
+ PFIprogramming(0x0000);
+
+ //Fout provide 1MHz: timebase = 20MHz; divided by 2; on FOUT pin also divided by 10
+ setIntClock(0, 1, 10);
+
+ //Reset both counters
+ TIM_reset(2);
+
+ //C0 measures period on PFI3 with gate from PFI 4 driven by DIO7
+ TIM_bufferedTimeMeasurement(C0, 0x04, 0x45, 0, 0);
+
+ //C1 measures semiperiod on PFI 6 with gate from PFI 5 driven by FIO6
+ TIM_bufferedTimeMeasurement(C1, 0x87, 0x46, 1, 0);
+
+ //arm both counters
+ TIM_arm(2);
+
+ return 0;
+}
+
+void endFun(KEY_EVT *k)
+{
+ closeEvent(NULL);
+
+ exit(1);
+}
+
+void showEvent(KEY_EVT *k)
+{
+ task_activate(show_val_pid);
+}
+
+void gateEvent(KEY_EVT *k)
+{
+ task_activate(gate_action_pid);
+}
+
+void drawInterface(void)
+{
+ grx_rect(1, 1, 799, 129, rgb16(105, 0, 0));
+ grx_rect(2, 2, 798, 128, rgb16(155, 0, 0));
+ grx_rect(3, 3, 797, 127, rgb16(205, 0, 0));
+ grx_rect(4, 4, 796, 126, rgb16(255, 0, 0));
+
+ grx_text("Test program for Buffered Period and Semiperiod measure through PCI6025E timers",
+ 7, 10, rgb16(50, 255, 50), black);
+
+ grx_text("This program counting rise edges on counters source (PFI3 & PFI6) between two rising",
+ 7, 25, rgb16(0, 255, 255), black);
+ grx_text("edges on gate (PFI 42) and beetwen each gate edge (PFI44).FOUT is enabled and",
+ 7, 33, rgb16(0, 255, 255), black);
+ grx_text("provides a frequency of 1 MHz", 7, 41, rgb16(0, 255, 255), black);
+ grx_text("Instruction:",7, 53, rgb16(255, 0, 0), black);
+ grx_text("Use 's' to see counters value",
+ 7, 61, rgb16(0, 255, 255), black);
+ grx_text("Use 'g' to enbale automatic tasks which generate square wave with freq of 0.5Hz",
+ 7, 68, rgb16(0, 255, 255), black);
+
+ grx_text("And duty cycle of 75%. Counter 0 must be loaded with about 2E6 ticks and counter 1",
+ 7, 75, rgb16(0, 255, 255), black);
+ grx_text("must be loaded alternativly with about 1.5E6 and 0.5E6 ticks",
+ 7, 83, rgb16(0, 255, 255), black);
+
+ grx_text("Please connect DIO7 (pin 32) to PFI4 (pin 42) and DIO6 (pin 30) to PFI5 (pin 44)",
+ 7, 95, rgb16(0, 255, 0), black);
+ grx_text("CTRL-C for Exit", 7, 110, rgb16(200, 200, 0), black);
+
+ grx_rect(1, 147, 355, 183, rgb16(0, 105, 0));
+ grx_rect(2, 148, 354, 182, rgb16(0, 155, 0));
+ grx_rect(3, 149, 353, 181, rgb16(0, 205, 0));
+ grx_rect(4, 150, 352, 180, rgb16(0, 255, 0));
+ grx_text("Period", 7, 155, rgb16(255, 255, 0), black);
+
+ grx_rect(455, 147, 799, 183, rgb16(0, 105, 0));
+ grx_rect(456, 148, 798, 182, rgb16(0, 155, 0));
+ grx_rect(457, 149, 797, 181, rgb16(0, 205, 0));
+ grx_rect(458, 150, 796, 180, rgb16(0, 255, 0));
+ grx_text("Semiperiod", 461, 155, rgb16(255, 0, 255), black);
+}
+
+TASK show_val_body(int dummy)
+{
+ DWORD val;
+ char buf[40];
+
+ while(1){
+ val = TIM_readHWSaveReg(C0);
+ sprintf(buf,"C0 %07ld", val);
+ grx_text(buf, 7, 165, rgb16(255, 0, 0), rgb16(0, 0, 0));
+ val = TIM_readHWSaveReg(C1);
+ sprintf(buf,"C1 %07ld", val);
+ grx_text(buf, 461, 165, rgb16(0, 255, 0), rgb16(0, 0, 0));
+
+ task_endcycle();
+ }
+}
+
+TASK gate_action_body(int dummy)
+{
+ int i;
+ i = 0;
+
+ while(1){
+ if( (i%4)==0 ) DIO_write(0xC0);
+ if( (i%4)==3 ) DIO_write(0x00);
+
+ i++;
+
+ task_activate(show_val_pid);
+
+ task_endcycle();
+ }
+}
+
+void closeEvent(void *arg)
+{
+ TIM_disarm(2);
+ switch(sys){
+ case 0: sys_shutdown_message("Ok\n"); break;
+ case 10: sys_shutdown_message("No PCI\n"); break;
+ case 11: sys_shutdown_message("No National Board\n"); break;
+ case 20: sys_shutdown_message("task <show val> down\n"); break;
+ case 22: sys_shutdown_message("task <gate action> down\n"); break;
+ case 30: sys_shutdown_message("Cannot initialize grx\n"); break;
+ case 31: sys_shutdown_message("Resolution 800x600x16 not supported\n"); break;
+ case 32: sys_shutdown_message("Cannot sets up graphic envirorment\n"); break;
+ default: sys_shutdown_message("????????????\n"); break;
+ }
+}
Index: demos/branches/xen/pci6025e/wave.c
===================================================================
--- demos/branches/xen/pci6025e/wave.c (nonexistent)
+++ demos/branches/xen/pci6025e/wave.c (revision 1684)
@@ -0,0 +1,312 @@
+/*****************************************************************************
+* Filename: wave.c *
+* Author: Marco Ziglioli (Doctor Stein) *
+* Date: 12/06/2001 *
+* Description: Little test program for Analog Output section of PCI6025E *
+*----------------------------------------------------------------------------*
+* Notes: Connect an oscilloscope to DACs output pins (20 & 21) and *
+* watch the waveforms. *
+* and decrise voltage *
+*****************************************************************************/
+
+/* This file is part of the S.Ha.R.K. Project - http://shark.sssup.it
+ *
+ * Copyright (C) 2001 Marco Ziglioli
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+#include <kernel/kern.h>
+
+#include <drivers/shark_fb26.h>
+#include <drivers/shark_keyb26.h>
+
+#include <sem/sem/sem.h>
+
+#include <drivers/pci6025e/dac.h>
+
+#define MAX_VAL 500
+
+#define WAVE_PERIOD 1000
+#define WAVE_WCET 200
+#define GRAPH_PERIOD 1000
+#define GRAPH_WCET 550
+
+#define TASK_GROUP 1
+
+#define DAC0_CONV 0.1
+#define DAC1_CONV 0.05
+
+#define INC 40
+
+void createWaves(void);
+void drawInterface(void);
+
+void endfun(KEY_EVT *);
+void close_event(void *);
+
+TASK wave_body(int);
+TASK video_body(int);
+
+WORD wave0[MAX_VAL], wave1[MAX_VAL];
+int black = rgb16(0,0,0),
+ white = rgb16(255, 255, 255);
+
+BYTE sys = 0;
+
+int main(int argc, char **argv)
+{
+ KEY_EVT k;
+ HARD_TASK_MODEL wave0, wave1;
+ HARD_TASK_MODEL video;
+ PID wave0_pid, wave1_pid, video_pid;
+
+ k.flag = CNTR_BIT;
+ k.scan = KEY_C;
+ k.ascii = 'c';
+ k.status = KEY_PRESSED;
+ keyb_hook(k, endfun, FALSE);
+
+ k.flag = CNTL_BIT;
+ k.status = KEY_PRESSED;
+ keyb_hook(k, endfun, FALSE);
+
+ hard_task_default_model(wave0);
+ hard_task_def_wcet(wave0, WAVE_WCET);
+ hard_task_def_mit(wave0, WAVE_PERIOD);
+ hard_task_def_arg(wave0, 0);
+ hard_task_def_group(wave0, TASK_GROUP);
+ if( (wave0_pid = task_create("Wave 0", wave_body, &wave0, NULL)) == NIL ){
+ sys = 10;
+ exit(1);
+ }
+
+ hard_task_default_model(wave1);
+ hard_task_def_wcet(wave1, WAVE_WCET);
+ hard_task_def_mit(wave1, WAVE_PERIOD);
+ hard_task_def_arg(wave1, (void *)1);
+ hard_task_def_group(wave1, TASK_GROUP);
+ if( (wave1_pid = task_create("Wave 1", wave_body, &wave1, NULL)) == NIL ){
+ sys = 11;
+ exit(1);
+ }
+
+ hard_task_default_model(video);
+ hard_task_def_wcet(video, GRAPH_WCET);
+ hard_task_def_mit(video, GRAPH_PERIOD);
+ hard_task_def_group(video, TASK_GROUP);
+ if( (video_pid = task_create("Video task", video_body, &video, NULL))
+ == NIL ){
+ sys = 12;
+ exit(1);
+ }
+
+ if(!reMap()){
+ sys = 21;
+ exit(1);
+ }
+
+ createWaves();
+ drawInterface();
+ //Analog output section set up
+ DAC_Init();
+
+ /*
+ *AI_TIMEBASE div by 2; OUT_TIMEBASE div by 2; single DAC mode
+ *TMRDACWR = 3 OUT_TIMEBASE period; FIFO flags polarity active low
+ *TMRDACWR disabled; DMA PIO control = FIFO DATA interface mode
+ *UPDATE signal timebase = AO_UPDATE pulse width
+ *UPDATE pulsewidth = 3-3.5 OUT_TIMEBASE period
+ *UPDATE signal polarity = HIGH Z
+ */
+ DAC_boardInit(0x02, 0x4000);
+
+ /*
+ *LDAC0 source = UPDATE
+ *DAC0 update immediately
+ *LDAC1 source = UPDATE
+ *DAC1 update immediately
+ */
+ DAC_LDACSourceUpdate(0x00);
+ //End of Analog output section setup
+
+
+ group_activate(TASK_GROUP);
+
+ return 0;
+}
+
+void endfun(KEY_EVT *k)
+{
+ close_event(NULL);
+
+ exit(1);
+}
+
+void close_event(void *arg)
+{
+ switch(sys){
+ case 0: sys_shutdown_message("Regular End!\n"); break;
+ case 10: sys_shutdown_message("Cannot create <wave 0> task!\n"); break;
+ case 11: sys_shutdown_message("Cannot create <wave 1> task!\n"); break;
+ case 12: sys_shutdown_message("Cannot create <video> task!\n"); break;
+ case 20: sys_shutdown_message("No PCI bus found!\n"); break;
+ case 21: sys_shutdown_message("No NATIONAL PCI E-Series board found on PCI bus!\n");
+ break;
+ case 30: sys_shutdown_message("Cannot start graphic envirorment!\n"); break;
+ case 31: sys_shutdown_message("800x600x16 video mode not supported!\n");
+ default: sys_shutdown_message("Unknown exit event!\n"); break;
+ }
+}
+
+/*
+* Wave's samples generation
+*/
+void createWaves(void)
+{
+ int i;
+ int value0, value1;
+ BYTE direction;
+
+ /* Wave0
+ * * * * * * * *
+ ** ** ** ** ** ** ** **
+ * ** * * ** ** ** ** ** *
+ * * ** * * * * * *
+ --------------------------...
+
+ Wave 1
+ * *
+ * * * *
+ * * * *
+ * * * *
+ -------*-------*-------*--...
+ * * *
+ * * *
+ * *
+ * */
+
+ value0 = 0;
+ value1 = 0;
+ direction = 0;
+ for(i=0; i<MAX_VAL; i++){
+ wave0[i] = (value0 & 0x0FFF);
+ wave1[i] = (value1 & 0x0FFF);
+
+ value0 = (value0 + INC) % 2000;
+ if(!direction) value1 += INC;
+ else value1 -= INC;
+
+ if(value1 >= 2000) direction = 1;
+ if(value1 <= -2000) direction = 0;
+ }
+}
+
+void drawInterface(void)
+{
+ int i;
+
+ grx_rect(1, 1, 799, 69, rgb16(105, 0, 105));
+ grx_rect(2, 2, 798, 68, rgb16(155, 0, 155));
+ grx_rect(3, 3, 797, 67, rgb16(205, 0, 205));
+ grx_rect(4, 4, 796, 66, rgb16(255, 0, 255));
+
+ grx_text("Test program for Analog output section of PCI6025E",
+ 7, 10, rgb16(50, 255, 50), black);
+ grx_text("DAC0 and DAC1 should generate saw-toothed wave and triangular wave",
+ 7, 33, rgb16(0, 255, 255), black);
+ grx_text("Use an oscilloscope to test this software",
+ 7, 40, rgb16(0, 255, 255), black);
+
+ grx_text("CTRL-C for Exit", 7, 55, rgb16(200, 200, 0), black);
+
+ grx_text("DAC 0", 100, 92, rgb16(200, 200, 0), black);
+ grx_rect(1, 100, 799, 325, rgb16(0, 105, 0));
+ grx_rect(2, 101, 798, 324, rgb16(0, 155, 0));
+ grx_rect(3, 102, 797, 323, rgb16(0, 205, 0));
+ grx_rect(4, 103, 796, 322, rgb16(0, 255, 0));
+ grx_line(19, 115, 19, 320, white);
+ grx_line(14, 315, 530, 315, white);
+
+ grx_text("DAC 1", 100, 362, rgb16(200, 200, 0), black);
+ grx_rect(1, 370, 799, 595, rgb16(105, 0, 0));
+ grx_rect(2, 371, 798, 594, rgb16(155, 0, 0));
+ grx_rect(3, 372, 797, 593, rgb16(205, 0, 0));
+ grx_rect(4, 373, 796, 592, rgb16(255, 0, 0));
+ grx_line(19, 385, 19, 585, white);
+ grx_line(14, 485, 530, 485, white);
+
+ for(i=22; i<530; i+=2){
+ //DAC0
+ grx_plot(i, 115, white);
+ grx_plot(i, 215, white);
+ //DAC1
+ grx_plot(i, 385, white);
+ grx_plot(i, 435, white);
+ grx_plot(i, 535, white);
+ grx_plot(i, 585, white);
+ }
+
+ grx_text("5 V", 540, 211, rgb16(0, 255, 0), black);
+ grx_text("10 V", 540, 111, rgb16(0, 255, 0), black);
+ grx_text("+5 V", 540, 431, rgb16(0, 255, 0), black);
+ grx_text("+10 V", 540, 381, rgb16(0, 255, 0), black);
+ grx_text("-5 V", 540, 531, rgb16(255, 0, 0), black);
+ grx_text("-10 V", 540, 581, rgb16(255, 0 , 0), black);
+}
+
+/*
+* Sends out waves' samples
+*/
+TASK wave_body(int wv)
+{
+ int i = 0;
+ while(1){
+ if(wv)
+ DAC_output(DAC1, wave1[i]);
+ else
+ DAC_output(DAC0, wave0[i]);
+
+ i = (i + 1) % 500;
+ task_endcycle();
+ }
+}
+
+/*
+* Shows wave on screen
+*/
+TASK video_body(int dummy)
+{
+ int i = 0;
+ int n_tmp = 0, o_tmp;
+ //char buf[10];
+
+ while(1){
+ o_tmp = n_tmp;
+ if( (wave1[i] & 0x0800) != 0 ) n_tmp = wave1[i]-0x0FFF;
+ else n_tmp = wave1[i];
+
+ if(i>0){
+ grx_line(19+i, 314-wave0[i-1]*DAC0_CONV,
+ 20+i, 314-wave0[i]*DAC0_CONV, rgb16(255, 255, 0));
+ grx_line(19+i, 485-o_tmp*DAC1_CONV,
+ 20+i, 485-n_tmp*DAC1_CONV, rgb16(0, 255, 255));
+ }
+
+ i = (i + 1) % 500;
+ task_endcycle();
+ }
+}
Index: demos/branches/xen/pci6025e/test_mes.c
===================================================================
--- demos/branches/xen/pci6025e/test_mes.c (nonexistent)
+++ demos/branches/xen/pci6025e/test_mes.c (revision 1684)
@@ -0,0 +1,278 @@
+/*****************************************************************************
+* Filename: test_mes.c *
+* Author: Marco Ziglioli (Doctor Stein) *
+* Date: 25/06/2001 *
+* Description: Test file for single period and pulsewidth measurement feature*
+* of PCI6025E timers/counters *
+*----------------------------------------------------------------------------*
+* Notes: board is configured to provide a frequency of 1 MHZ through its FOUT*
+* pin (50). PFI3 (41) and PFI6 (45) are configured like source pins *
+* counter 0 and counter 1. PFI4 (42) and PFI 5(44) are the gates for *
+* the two counters. Please connect DIO7(32) to PFI4 and DIO6(30) to *
+* PFI 5. *
+* With 'g' key a task is started which generate a square wave on DIO7 *
+* with a period of 2 secs. With 'h' key the same square wave is *
+* generated on DIO6. *
+* When measurement is performed data are stored into Hardware Save *
+* Registers: use key 's' to show this values *
+*****************************************************************************/
+
+
+/* This file is part of the S.Ha.R.K. Project - http://shark.sssup.it
+ *
+ * Copyright (C) 2001 Marco Ziglioli
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+
+#include <kernel/kern.h>
+
+#include <drivers/shark_keyb26.h>
+#include <drivers/shark_fb26.h>
+
+#include <drivers/pci6025e/timer.h>
+#include <drivers/pci6025e/dio_ppi.h>
+
+#define TASK_MET 20000
+#define TASK_WCET 50000
+#define TASK_PERIOD 100000
+
+#define PERIOD 1000000
+
+void endFun(KEY_EVT *);
+void gateEvent(KEY_EVT *);
+
+void drawInterface(void);
+void closeEvent(void *);
+
+TASK show_body(int);
+TASK gate_body(int);
+
+BYTE sys = 0;
+PID c0_gate_pid, c1_gate_pid, show_pid;
+int black = rgb16(0, 0, 0);
+
+int main(int argc, char **argv)
+{
+ KEY_EVT k;
+ SOFT_TASK_MODEL show_model;
+ HARD_TASK_MODEL gating;
+
+ k.flag = CNTL_BIT;
+ k.scan = KEY_C;
+ k.ascii = 'c';
+ k.status = KEY_PRESSED;
+ keyb_hook(k, endFun, FALSE);
+
+ k.flag = CNTR_BIT;
+ k.status = KEY_PRESSED;
+ keyb_hook(k, endFun, FALSE);
+
+ k.flag = 0;
+ k.scan = KEY_G;
+ k.ascii = 'g';
+ k.status = KEY_PRESSED;
+ keyb_hook(k, gateEvent, FALSE);
+
+ k.scan = KEY_H;
+ k.ascii = 'h';
+ k.status = KEY_PRESSED;
+ keyb_hook(k, gateEvent, FALSE);
+
+ k.scan = KEY_S;
+ k.ascii = 's';
+ k.status = KEY_PRESSED;
+ keyb_hook(k, gateEvent, FALSE);
+
+ if(!reMap()){
+ sys = 11;
+ exit(1);
+ }
+
+ soft_task_default_model(show_model);
+ soft_task_def_level(show_model, 2);
+ soft_task_def_met(show_model, TASK_MET);
+ soft_task_def_wcet(show_model, TASK_WCET);
+ soft_task_def_aperiodic(show_model);
+ soft_task_def_period(show_model, TASK_PERIOD);
+ if( (show_pid = task_create("Show task", show_body, &show_model, NULL))
+ == NIL ){
+ sys = 20;
+ exit(1);
+ }
+
+ hard_task_default_model(gating);
+ hard_task_def_mit(gating, PERIOD);
+ hard_task_def_wcet(gating, 20000);
+ hard_task_def_arg(gating, C0);
+ if( (c0_gate_pid = task_create("C0 Gate task", gate_body, &gating, NULL)) == NIL ){
+ sys = 21;
+ exit(1);
+ }
+
+ hard_task_def_arg(gating, (void *)C1);
+ if( (c1_gate_pid = task_create("C1 Gate task", gate_body, &gating, NULL)) == NIL ){
+ sys = 22;
+ exit(1);
+ }
+
+ drawInterface();
+ //Enable DIO to manage gates
+ DIO_init();
+ DIO_setup(0xFF);
+ DIO_write(0x00);
+
+ //All PFI configured as input
+ PFIprogramming(0x0000);
+ //Fout provide 1MHz: timebase = 20MHz; divided by 2; on FOUT pin also divided by 10
+ setIntClock(0, 1, 10);
+
+ //Reset both counters
+ TIM_reset(2);
+
+ //Source PFI3(41); Gate PFI 4(42); Measure period
+ TIM_timeMeasurement(C0, 0x04, 0x45, 0, 0x00, 0);
+
+ //Source PFI6(45); Gate PFI 5(44); Measure pulsewidth
+ TIM_timeMeasurement(C1, 0x87, 0x46, 1, 0x00, 0);
+
+ //Arm both counter
+ TIM_arm(2);
+
+ return 0;
+}
+
+TASK show_body(int dummy)
+{
+ DWORD val;
+ char buf[20];
+
+ while(1){
+ val = TIM_readHWSaveReg(C0);
+ sprintf(buf, "%ld", val);
+ grx_text(buf, 600, 471, rgb16(0, 255, 0), black);
+ val = TIM_readHWSaveReg(C1);
+ sprintf(buf, "%ld", val);
+ grx_text(buf, 200, 471, rgb16(255, 0, 0), black);
+
+ task_endcycle();
+ }
+}
+
+TASK gate_body(int counter)
+{
+ BYTE out;
+
+ if(counter == C0) out = 0x80;
+ else out = 0x40;
+
+ while(1){
+ DIO_write(out);
+ if(counter == C0){
+ if(out) out = 0x00;
+ else out = 0x80;
+ } else {
+ if(out) out = 0x40;
+ else out = 0x00;
+ }
+
+ task_endcycle();
+ }
+}
+
+void drawInterface(void)
+{
+ grx_rect(1, 1, 799, 120, rgb16(105, 0, 0));
+ grx_rect(2, 2, 798, 119, rgb16(155, 0, 0));
+ grx_rect(3, 3, 797, 118, rgb16(205, 0, 0));
+ grx_rect(4, 4, 796, 117, rgb16(255, 0, 0));
+
+ grx_text("Test program for single period and pulsewidth measurement features",
+ 7, 10, rgb16(200, 200, 0), black);
+
+ grx_text("This program measures single period and pulsewidth of a square wave",
+ 7, 20, rgb16(0, 255, 0), black);
+ grx_text("with frequency of 0.5 Hz", 7, 28, rgb16(0, 255, 0), black);
+ grx_text("Please connect PFI3 & PFI6 (41 & 45) to FOUT pin (50) or to 1Mhz frequency source",
+ 7, 40, rgb16(255, 0, 0), black);
+ grx_text("Connect also DIO7 (32) to PFI4 (42) and DIO6 to PFI5 (44)",
+ 7, 48, rgb16(255, 0, 0), black);
+ grx_text("Commands:", 7, 60, rgb16(0, 120, 0), black);
+ grx_text("Use 'g' to start wave generation on DIO7",
+ 7, 70, rgb16(0, 255, 255), black);
+ grx_text("Use 'h' to start wave generation on DIO6",
+ 7, 78, rgb16(0, 255, 255), black);
+ grx_text("Use 's' to show Hardware Save Registers content",
+ 7, 86, rgb16(0, 255, 255), black);
+ grx_text("CTRL-C to exit", 7, 105, rgb16(255, 255, 0), black);
+
+ grx_rect(197, 127, 603, 423, rgb16(0, 255, 0));
+ grx_rect(198, 128, 602, 422, rgb16(0, 205, 0));
+ grx_rect(199, 129, 601, 421, rgb16(0, 155, 0));
+ grx_rect(200, 130, 600, 420, rgb16(0, 105, 0));
+ grx_line(215, 405, 215, 150, rgb16(255, 255, 255));
+ grx_line(210, 400, 580, 400, rgb16(255, 255, 255));
+ grx_line(220, 395, 220, 170, rgb16(0, 0, 255));
+ grx_line(220, 170, 390, 170, rgb16(0, 0, 255));
+ grx_line(390, 170, 390, 395, rgb16(0, 0, 255));
+ grx_line(390, 395, 560, 395, rgb16(0, 0, 255));
+ grx_line(220, 150, 560, 150, rgb16(0, 255, 0));
+ grx_line(220, 155, 390, 155, rgb16(255, 0, 0));
+
+ grx_rect(1, 450, 390, 503, rgb16(105, 0, 0));
+ grx_rect(2, 451, 389, 502, rgb16(155, 0, 0));
+ grx_rect(3, 452, 388, 501, rgb16(205, 0, 0));
+ grx_rect(4, 453, 387, 500, rgb16(255, 0, 0));
+ grx_text("Pulsewidth: [us]", 7, 471, rgb16(255, 0, 0), black);
+
+ grx_rect(410, 450, 799, 503, rgb16(105, 0, 0));
+ grx_rect(411, 451, 798, 502, rgb16(155, 0, 0));
+ grx_rect(412, 452, 797, 501, rgb16(205, 0, 0));
+ grx_rect(413, 453, 796, 500, rgb16(255, 0, 0));
+ grx_text("Period: [us]", 416, 471, rgb16(0, 255, 0), black);
+}
+
+void endFun(KEY_EVT *k)
+{
+ closeEvent(NULL);
+
+ exit(1);
+}
+
+void gateEvent(KEY_EVT *k)
+{
+ if(k->scan == KEY_G) task_activate(c0_gate_pid);
+ if(k->scan == KEY_H) task_activate(c1_gate_pid);
+ if(k->scan == KEY_S) task_activate(show_pid);
+}
+
+void closeEvent(void *arg)
+{
+ TIM_disarm(2);
+
+ switch(sys){
+ case 0: sys_shutdown_message("OK\n"); break;
+ case 10: sys_shutdown_message("No PCI bus found\n"); break;
+ case 11: sys_shutdown_message("No NATIONAL board found\n"); break;
+ case 20: sys_shutdown_message("task <show value> down!!\n"); break;
+ case 21: sys_shutdown_message("task <C0 gate manage> down!!!\n"); break;
+ case 22: sys_shutdown_message("task <C1 gate manage> down!!!\n"); break;
+ case 30: sys_shutdown_message("Cannot init graphic envirorment\n"); break;
+ case 31: sys_shutdown_message("graphic mode 800x600x16 not supported\n"); break;
+ default: sys_shutdown_message("???????????????\n"); break;
+ }
+}
Index: demos/branches/xen/pci6025e/test_dac.c
===================================================================
--- demos/branches/xen/pci6025e/test_dac.c (nonexistent)
+++ demos/branches/xen/pci6025e/test_dac.c (revision 1684)
@@ -0,0 +1,352 @@
+/*****************************************************************************
+* Filename: test_dac.c *
+* Author: Marco Ziglioli (Doctor Stein) *
+* Date: 12/06/2001 *
+* Description: Little test program for Analog Output section of PCI6025E *
+*----------------------------------------------------------------------------*
+* Notes: Connect a multimeter to DAC1 output (pin 21) and watch *
+* tension value. Use '+' and '-' on numeric pad to increase *
+* and decrise voltage *
+* With this program it's possible to point out possible *
+* offset errors. To correct them no software are written but *
+* in National board package there's the program to calibrate *
+* the board. Otherwise you can see how much is the offset *
+* and you can compensate it through software value *
+*****************************************************************************/
+
+/* This file is part of the S.Ha.R.K. Project - http://shark.sssup.it
+ *
+ * Copyright (C) 2001 Marco Ziglioli
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+#include <kernel/kern.h>
+
+#include <drivers/shark_fb26.h>
+#include <drivers/shark_keyb26.h>
+
+#include <drivers/pci6025e/dac.h>
+
+#define TASK_VOLT_PERIOD 150E3
+#define TASK_VOLT_WCET 080E3
+#define TASK_DAC_PERIOD 050E3
+#define TASK_DAC_WCET 020E3
+
+#define CONV 10/2048
+
+#define TASK_GROUP 1
+
+WORD dac0_value = 0,
+ dac1_value = 0;
+
+BYTE sys = 0;
+BYTE dac = 0;
+
+//some colors
+int black = rgb16(0, 0, 0),
+ white = rgb16(255, 255, 255);
+
+void drawInterface(void);
+void endfun(KEY_EVT *);
+void inc(KEY_EVT *);
+void dec(KEY_EVT *);
+void change_dac(KEY_EVT *);
+void close_event(void *);
+TASK Voltage_body(int);
+TASK DAC_Check_body(int);
+
+int main(int argc, char **argv)
+{
+ KEY_EVT k;
+ HARD_TASK_MODEL m, d;
+ PID pid_m, pid_d;
+
+ k.flag = CNTR_BIT;
+ k.scan = KEY_C;
+ k.ascii = 'c';
+ k.status = KEY_PRESSED;
+ keyb_hook(k, endfun, FALSE);
+
+ k.flag = CNTL_BIT;
+ k.status = KEY_PRESSED;
+ keyb_hook(k, endfun, FALSE);
+
+ k.flag = 0;
+ k.scan = 78;
+ k.ascii = 43;
+ k.status = KEY_PRESSED;
+ keyb_hook(k, inc, FALSE);
+
+ k.flag = 0;
+ k.scan = 74;
+ k.ascii = 45;
+ k.status = KEY_PRESSED;
+ keyb_hook(k, dec, FALSE);
+
+ k.flag = 0;
+ k.scan = KEY_V;
+ k.ascii = 'v';
+ k.status = KEY_PRESSED;
+ keyb_hook(k, change_dac, FALSE);
+
+ hard_task_default_model(m);
+ hard_task_def_wcet(m, TASK_VOLT_WCET);
+ hard_task_def_mit(m, TASK_VOLT_PERIOD);
+ hard_task_def_group(m, TASK_GROUP);
+ pid_m = task_create("Voltage", Voltage_body, &m, NULL);
+ if(pid_m == NIL){
+ sys = 30;
+ exit(1);
+ }
+
+ hard_task_default_model(d);
+ hard_task_def_wcet(d, TASK_DAC_WCET);
+ hard_task_def_mit(d, TASK_DAC_PERIOD);
+ hard_task_def_group(d, TASK_GROUP);
+ pid_d = task_create("DAC Check", DAC_Check_body, &d, NULL);
+ if(pid_d == NIL){
+ sys = 31;
+ exit(1);
+ }
+
+ //Check if a NI board is on PCI bus
+ if(!reMap()){
+ sys = 11;
+ exit(1);
+ }
+
+ drawInterface();
+
+ //Analog output section set up
+ DAC_Init();
+
+ /*
+ *AI_TIMEBASE div by 2; OUT_TIMEBASE div by 2; single DAC mode
+ *TMRDACWR = 3 OUT_TIMEBASE period; FIFO flags polarity active low
+ *TMRDACWR disabled; DMA PIO control = FIFO DATA interface mode
+ *UPDATE signal timebase = AO_UPDATE pulse width
+ *UPDATE pulsewidth = 3-3.5 OUT_TIMEBASE period
+ *UPDATE signal polarity = HIGH Z
+ */
+ DAC_boardInit(0x02, 0x4000);
+ /*
+ *LDAC0 source = UPDATE
+ *DAC0 update immediately
+ *LDAC1 source = UPDATE
+ *DAC1 update immediately
+ */
+ DAC_LDACSourceUpdate(0x00);
+ //End of Analog output section setup
+
+ group_activate(TASK_GROUP);
+
+ return 0;
+}
+
+/*
+* Every time operator select a new value to send to a DAc this TASK makes
+* actions needed to perform the operation
+*/
+TASK Voltage_body(int dac_work)
+{
+ WORD old0_value, old1_value;
+ char buf[6];
+ float volt;
+
+ old0_value = dac0_value;
+ old1_value = dac1_value;
+ while(1){
+ if(dac){
+ if(dac1_value != old1_value){
+ DAC_output(DAC1, dac1_value);
+ old1_value = dac1_value;
+ sprintf(buf, "%04d", dac1_value);
+ grx_text(buf, 70, 120, rgb16(180, 0, 0), rgb16(255,255,140));
+ sprintf(buf, "%04x", dac1_value);
+ grx_text(buf, 300, 120, rgb16(180, 0, 0), rgb16(255,255,140));
+ if( (dac1_value & 0x0800) == 0 )
+ volt = (float)dac1_value * (float)CONV;
+ else
+ volt = (float)(dac1_value-0x0FFF) * (float)CONV;
+ sprintf(buf, "%05.2f", volt);
+ grx_text(buf, 70, 177, rgb16(180, 40, 180), black);
+ }
+ } else {
+ if(dac0_value != old0_value){
+ DAC_output(DAC0, dac0_value);
+ old0_value = dac0_value;
+ sprintf(buf, "%04d", dac0_value);
+ grx_text(buf, 521, 120, rgb16(180, 0, 0), rgb16(255,255,140));
+ sprintf(buf, "%04x", dac0_value);
+ grx_text(buf, 754, 120, rgb16(180, 0, 0), rgb16(255,255,140));
+ if( (dac0_value & 0x0800) == 0 )
+ volt = (float)dac0_value * (float)CONV;
+ else
+ volt = (float)(dac0_value-0x0FFF) * (float)CONV;
+ sprintf(buf, "%05.2f", volt);
+ grx_text(buf, 521, 177, rgb16(180, 40, 180), black);
+ }
+ }
+ task_endcycle();
+ }
+}
+
+/*
+* This TASK show which is the DAC active
+*/
+TASK DAC_Check_body(int dummy)
+{
+ BYTE old = dac;
+ char buf[8];
+
+ while(1){
+ if(dac != old){
+ old = dac;
+ sprintf(buf, "DAC %d", dac);
+ grx_text(buf, 385, 90, rgb16(255*dac, 255*(1-dac), 0), black);
+ }
+ task_endcycle();
+ }
+}
+
+void drawInterface(void)
+{
+ grx_rect(1, 1, 799, 69, rgb16(105, 0, 0));
+ grx_rect(2, 2, 798, 68, rgb16(155, 0, 0));
+ grx_rect(3, 3, 797, 67, rgb16(205, 0, 0));
+ grx_rect(4, 4, 796, 66, rgb16(255, 0, 0));
+
+ grx_text("Test program for Analog output section of PCI6025E",
+ 7, 10, rgb16(50, 255, 50), black);
+ grx_text("Use '+' and '-' on numeric pad to change tension",
+ 7, 25, rgb16(0, 255, 255), black);
+ grx_text("Connect a tester to DAC1 output (pin21) or to DAC0 output (pin20)",
+ 7, 33, rgb16(0, 255, 255), black);
+ grx_text("Use 'v' to alternate change active DAC",
+ 7, 40, rgb16(0, 255, 255), black);
+
+ grx_text("CTRL-C for Exit", 7, 55, rgb16(200, 200, 0), black);
+
+ grx_rect(1, 80, 355, 150, rgb16(0, 105, 0));
+ grx_rect(2, 81, 354, 149, rgb16(0, 155, 0));
+ grx_rect(3, 82, 353, 148, rgb16(0, 205, 0));
+ grx_rect(4, 83, 352, 147, rgb16(0, 255, 0));
+
+ grx_rect(1, 160, 355, 199, rgb16(0, 105, 0));
+ grx_rect(2, 161, 354, 198, rgb16(0, 155, 0));
+ grx_rect(3, 162, 353, 197, rgb16(0, 205, 0));
+ grx_rect(4, 163, 352, 196, rgb16(0, 255, 0));
+
+ grx_rect(455, 80, 799, 150, rgb16(105, 105, 0));
+ grx_rect(456, 81, 798, 149, rgb16(155, 155, 0));
+ grx_rect(457, 82, 797, 148, rgb16(205, 205, 0));
+ grx_rect(458, 83, 796, 147, rgb16(255, 255, 0));
+
+ grx_rect(455, 160, 799, 199, rgb16(105, 105, 0));
+ grx_rect(456, 161, 798, 198, rgb16(155, 155, 0));
+ grx_rect(457, 162, 797, 197, rgb16(205, 205, 0));
+ grx_rect(458, 163, 796, 196, rgb16(255, 255, 0));
+
+ grx_rect(360, 80, 450, 105, rgb16(85, 85, 255));
+ grx_rect(361, 81, 449, 104, rgb16(125, 125, 255));
+ grx_rect(362, 82, 448, 103, rgb16(175, 175, 255));
+ grx_rect(363, 83, 447, 102, rgb16(225, 225, 255));
+
+ grx_rect(153, 93, 195, 103, rgb16(255, 0, 0));
+ grx_text("DAC 1", 155, 95, rgb16(255, 170, 170), black);
+
+ grx_rect(607, 93, 649, 103, rgb16(255, 0, 0));
+ grx_text("DAC 0", 609, 95, rgb16(255, 255, 210), black);
+
+ grx_text("Decimal", 7, 120, rgb16(120, 120, 255), black);
+ grx_text("Hexadecimal", 200, 120, rgb16(120, 120, 255), black);
+ grx_text("Tension", 7, 177, rgb16(120, 120, 255), black);
+
+ grx_text("Decimal", 461, 120, rgb16(255, 120, 120), black);
+ grx_text("Hexadecimal", 654, 120, rgb16(255, 120, 120), black);
+ grx_text("Tension", 461, 177, rgb16(255, 120, 120), black);
+}
+
+void close_event(void *arg)
+{
+ switch(sys){
+ case 0 : sys_shutdown_message("Regular End\n"); break;
+ case 1 : sys_shutdown_message("End fun invoked\n"); break;
+ case 10: sys_shutdown_message("Pci bus not found\n"); break;
+ case 11: sys_shutdown_message("No National board found\n"); break;
+ case 20: sys_shutdown_message("Cannot initialize graphic envirorment\n"); break;
+ case 21: sys_shutdown_message("Cannot start envirorment in 800x600x16\n"); break;
+ case 30: sys_shutdown_message("Cannot create task <voltage>\n"); break;
+ case 31: sys_shutdown_message("Canot create task <DAC Check>\n"); break;
+ case 40: sys_shutdown_message("Break on clock end event\n"); break;
+ default: sys_shutdown_message("Unkwon exit event\n"); break;
+ }
+}
+
+void endfun(KEY_EVT *k)
+{
+
+ close_event(NULL);
+
+ exit(1);
+}
+
+/*
+* Capture correct key event and increase output tension of active DAC
+*/
+void inc(KEY_EVT *k)
+{
+ if(dac){
+ if( (dac1_value & 0x0800) == 0 && dac1_value > 0x07FF )
+ dac1_value = 0;
+ else
+ dac1_value++;
+ } else {
+ if( (dac0_value & 0x0800) == 0 && dac0_value > 0x07FF )
+ dac0_value = 0;
+ else
+ dac0_value++;
+ }
+}
+
+/*
+* Same as above but decrease tension
+*/
+void dec(KEY_EVT *k)
+{
+ if(dac){
+ if(dac1_value < 1)
+ dac1_value = 0x0FFF;
+ else
+ dac1_value -= 1;
+ } else {
+ if(dac0_value < 1)
+ dac0_value = 0x0FFF;
+ else
+ dac0_value -= 1;
+ }
+}
+
+/*
+* Capture correct key event and change active DAC
+*/
+void change_dac(KEY_EVT *k)
+{
+ if(dac) dac = 0;
+ else dac = 1;
+}
+
Index: demos/branches/xen/pci6025e/test_ec.c
===================================================================
--- demos/branches/xen/pci6025e/test_ec.c (nonexistent)
+++ demos/branches/xen/pci6025e/test_ec.c (revision 1684)
@@ -0,0 +1,392 @@
+/*****************************************************************************
+* Filename: test_ec.c *
+* Author: Marco Ziglioli (Doctor Stein) *
+* Date: 20/06/2001 *
+* Description: Test program for gated event counting using PCI6025E board *
+*----------------------------------------------------------------------------*
+* Notes: FOUT are enabled to provide a frequency of 6250 Hz. You could *
+* connect PFI3 (pin 41) and PFI6 (pin 45) to this source for counting *
+* edges. Gated counting are enabled and PFI4 (pin 42) is gate pin for *
+* counter 0 and PFI5 (pin 44) is gate pin for counter 0. DIO 7 and 6 *
+* are als configured to switch between 0 and 5 V. Connect DIO 7 to *
+* gate 0 and DIO 6 to gate 1. Use 'g' (counter 0) and 'h' (counter 1) *
+* to change DIO lines value. On left area of the screen you should *
+* see counter while counting and on the right area you should lock *
+* counter values by pressing 's' key. *
+* Notice that line parameters are enabled and accept inital value *
+* for the two counters. If they aren't specified or they are wrong *
+* counters start from 0x00FFFFFF (counter 0 which counts down) and *
+* 0x00000000 (counter 1 which counts up). *
+* Last time addiction: TC Interrupts and Gate interrupts are enabled *
+* Bottom squares indicates when an interrupt is *
+* raised *
+*****************************************************************************/
+
+/* This file is part of the S.Ha.R.K. Project - http://shark.sssup.it
+ *
+ * Copyright (C) 2001 Marco Ziglioli
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+#include <kernel/kern.h>
+
+#include <drivers/shark_keyb26.h>
+#include <drivers/shark_fb26.h>
+
+#include <drivers/pci6025e/timer.h>
+#include <drivers/pci6025e/dio_ppi.h>
+
+#ifndef INT_NO
+ #define INT_NO NIDevice_info[0].InterruptLevel
+#endif
+
+BYTE sys = 0;
+
+PID show_aper_pid;
+BYTE out = 0x00;
+
+int black = rgb16(0, 0, 0),
+ white = rgb16(255, 255, 255);
+
+void endfun(KEY_EVT *);
+void close_event(void *);
+void show_evt(KEY_EVT *k);
+void gate_change(KEY_EVT *k);
+
+void drawInterface(void);
+
+void int_evt(int intno);
+
+TASK show_per(int);
+TASK show_aper(int);
+
+int main(int argc, char **argv)
+{
+ KEY_EVT k;
+ SOFT_TASK_MODEL show_per_mod, show_aper_mod;
+ PID show_per_pid;
+ int result;
+ DWORD init_val_c0, init_val_c1;
+
+ if(argc >= 3){
+ if( (result = sscanf(argv[1], "%ld", &init_val_c0)) != 1)
+ init_val_c0 = 0x00FFFFFF;
+ if( (result = sscanf(argv[2], "%ld", &init_val_c1)) != 1)
+ init_val_c1 = 0x00000000;
+ }
+ if(argc == 2){
+ if( (result = sscanf(argv[1], "%ld", &init_val_c0)) != 1)
+ init_val_c0 = 0x00FFFFFF;
+ init_val_c1 = 0x00000000;
+ }
+ if(argc == 1){
+ init_val_c0 = 0x00FFFFFF;
+ init_val_c1 = 0x00000000;
+ }
+
+ k.flag = CNTL_BIT;
+ k.scan = KEY_C;
+ k.ascii = 'c';
+ k.status = KEY_PRESSED;
+ keyb_hook(k, endfun, FALSE);
+
+ k.flag = CNTR_BIT;
+ k.status = KEY_PRESSED;
+ keyb_hook(k, endfun, FALSE);
+
+ soft_task_default_model(show_aper_mod);
+ soft_task_def_aperiodic(show_aper_mod);
+ soft_task_def_level(show_aper_mod, 2);
+ soft_task_def_period(show_aper_mod, 250000);
+ soft_task_def_met(show_aper_mod, 30000);
+ soft_task_def_wcet(show_aper_mod, 60000);
+ if( (show_aper_pid = task_create("Show aperiodic task", show_aper, &show_aper_mod, NULL)) == NIL ){
+ sys = 10;
+ exit(1);
+ }
+
+ k.flag = 0;
+ k.scan = KEY_S;
+ k.ascii = 's';
+ k.status = KEY_PRESSED;
+ keyb_hook(k, show_evt, FALSE);
+
+ k.flag = 0;
+ k.scan = KEY_G;
+ k.ascii = 'g';
+ k.status = KEY_PRESSED;
+ keyb_hook(k, gate_change, FALSE);
+
+ k.scan = KEY_H;
+ k.ascii = 'h';
+ k.status = KEY_PRESSED;
+ keyb_hook(k, gate_change, FALSE);
+
+ soft_task_default_model(show_per_mod);
+ soft_task_def_level(show_per_mod, 2);
+ soft_task_def_met(show_per_mod, 1000);
+ soft_task_def_period(show_per_mod, 10000);
+ if( (show_per_pid = task_create("Show periodic task", show_per, &show_per_mod, NULL)) == NIL){
+ sys = 11;
+ exit(1);
+ }
+
+ if(!reMap()){
+ sys = 21;
+ exit(1);
+ }
+
+ drawInterface();
+
+ //Init DIO lines used to manage counters gates
+ DIO_init();
+ DIO_setup(0xFF);
+ DIO_write(out);
+
+ //All PFI are configured as input
+ PFIprogramming(0x0000);
+ //FOUT enable; Slow TIMEBASE, divided by two; divided by 16 on FOUT pin
+ setIntClock(1, 1, 0);
+
+ TIM_reset(2); //Reset both two counters
+
+ //Source PFI3(41); Gate PFI 4(42); Down counting; counts rising edge;
+ TIM_eventCounting(C0, 0x04, 0x45, 0x03, init_val_c0);
+
+ //Source PFI6(45); Gate PFI 5(44); Up counting; counts rising edge;
+ TIM_eventCounting(C1, 0x87, 0x46, 0x03, init_val_c1);
+
+ //Set up interrupt group A and B enabling and programming to assert a request
+ //both on line 2 and 3 respectively
+ INT_setup(0x0A, 0x0B);
+ INT_personalize(0x03); //Interrupt request polarity low; IRQ driven on line 0 and 1
+
+ handler_set(INT_NO, int_evt, FALSE, show_aper_pid, NULL);
+
+ TIM_arm(2); //Arm both two counters
+
+ task_activate(show_per_pid);
+
+ return 0;
+}
+
+void drawInterface(void)
+{
+ grx_rect(1, 1, 799, 99, rgb16(105, 0, 0));
+ grx_rect(2, 2, 798, 98, rgb16(155, 0, 0));
+ grx_rect(3, 3, 797, 97, rgb16(205, 0, 0));
+ grx_rect(4, 4, 796, 96, rgb16(255, 0, 0));
+
+ grx_text("Test program for Gated Event Counting capacity of PCI6025E timers",
+ 7, 10, rgb16(50, 255, 50), black);
+
+ grx_text("This program counting rise edges on counters source (PFI3 & PFI6) when releted gates",
+ 7, 25, rgb16(0, 255, 255), black);
+ grx_text("(PFI 42 & 44) are enabled. Frequency Out (FOUT) is enabled and provides a frequency of 6250 Hz",
+ 7, 33, rgb16(0, 255, 255), black);
+
+ grx_text("Instruction:",7, 43, rgb16(255, 0, 0), black);
+ grx_text("Use 's' to lock counters value in right squares",
+ 7, 51, rgb16(0, 255, 255), black);
+ grx_text("Use 'g' to block or to release alternativly counter 0 (see top-left square)",
+ 7, 58, rgb16(0, 255, 255), black);
+
+ grx_text("Use 'h' to block or to release alternativly counter 1 (see bottom-left square)",
+ 7, 65, rgb16(0, 255, 255), black);
+
+ grx_text("Please connect DIO7 (pin 32) to PFI4 (pin 42) and DIO6 (pin 30) to PFI5 (pin 44)",
+ 7, 78, rgb16(0, 255, 0), black);
+ grx_text("CTRL-C for Exit", 7, 88, rgb16(200, 200, 0), black);
+
+ grx_rect(1, 110, 355, 170, rgb16(0, 105, 0));
+ grx_rect(2, 111, 354, 169, rgb16(0, 155, 0));
+ grx_rect(3, 112, 353, 168, rgb16(0, 205, 0));
+ grx_rect(4, 113, 352, 167, rgb16(0, 255, 0));
+ grx_text("Counter 0 evolution", 7, 120, rgb16(255, 255, 0), black);
+
+ grx_rect(455, 110, 799, 170, rgb16(0, 105, 0));
+ grx_rect(456, 111, 798, 169, rgb16(0, 155, 0));
+ grx_rect(457, 112, 797, 168, rgb16(0, 205, 0));
+ grx_rect(458, 113, 796, 167, rgb16(0, 255, 0));
+ grx_text("Counter 0 locked value", 461, 120, rgb16(255, 0, 255), black);
+
+ grx_rect(360, 110, 450, 170, rgb16(0, 105, 0));
+ grx_rect(361, 111, 449, 169, rgb16(0, 155, 0));
+ grx_rect(362, 112, 448, 168, rgb16(0, 205, 0));
+ grx_rect(363, 113, 447, 167, rgb16(0, 255, 0));
+ grx_text("Gate0", 367, 120, rgb16(200, 255, 200), black);
+ grx_text("0 V", 367, 145, rgb16(255, 0, 0), black);
+
+ grx_rect(1, 190, 355, 260, rgb16(85, 85, 255));
+ grx_rect(2, 191, 354, 259, rgb16(135, 135, 255));
+ grx_rect(3, 192, 353, 258, rgb16(190, 190, 255));
+ grx_rect(4, 193, 352, 257, rgb16(230, 239, 255));
+ grx_text("Counter 1 evolution", 7, 200, white, black);
+
+ grx_rect(455, 190, 799, 260, rgb16(85, 85, 255));
+ grx_rect(456, 191, 798, 259, rgb16(135, 135, 255));
+ grx_rect(457, 192, 797, 258, rgb16(190, 190, 255));
+ grx_rect(458, 193, 796, 257, rgb16(230, 230, 255));
+ grx_text("Counter 1 locked value", 461, 200, white, black);
+
+ grx_rect(360, 190, 450, 260, rgb16(85, 85, 255));
+ grx_rect(361, 191, 449, 259, rgb16(135, 135, 255));
+ grx_rect(362, 192, 448, 258, rgb16(190, 190, 255));
+ grx_rect(363, 193, 447, 257, rgb16(230, 230, 255));
+ grx_text("Gate1", 367, 200, rgb16(255, 200, 255), black);
+ grx_text("0 V", 367, 225, rgb16(255, 0, 0), black);
+
+ grx_text("Counter 0 Interrupt events", 7, 340, rgb16(255, 200, 100), black);
+ grx_text("Counter 1 Interrupt events", 461, 340, rgb16(255, 200, 100), black);
+ grx_rect(1, 350, 355, 400, rgb16(105, 0, 0));
+ grx_rect(2, 351, 354, 399, rgb16(155, 0, 0));
+ grx_rect(3, 352, 353, 398, rgb16(205, 0, 0));
+ grx_rect(4, 353, 352, 397, rgb16(255, 0, 0));
+ grx_rect(455, 350, 799, 400, rgb16(105, 0, 0));
+ grx_rect(456, 351, 798, 399, rgb16(155, 0, 0));
+ grx_rect(457, 352, 797, 398, rgb16(205, 0, 0));
+ grx_rect(458, 353, 796, 397, rgb16(255, 0, 0));
+}
+
+
+TASK show_per(int none)
+{
+ DWORD val;
+ char buf[30];
+
+ while(1){
+ val = TIM_readCounter(C0); //Read counter 0 value
+ sprintf(buf, "HEX: %08lx DEC: %08ld", val ,val);
+ grx_text(buf, 7, 145, rgb16(255, 0, 0), black);
+
+ val = TIM_readCounter(C1); //Read counter 1 value
+ sprintf(buf, "HEX: %08lx DEC: %08ld", val ,val);
+ grx_text(buf, 7, 225, rgb16(255, 0, 0), black);
+
+ task_endcycle();
+ }
+}
+
+TASK show_aper(int dummy)
+{
+ DWORD val;
+ char buf[30];
+
+ while(1){
+ val = TIM_readCounter(C0);
+ sprintf(buf, "HEX: %08lx DEC: %08ld", val, val);
+ grx_text(buf, 461, 145, rgb16(80, 80, 255), black);
+
+ val = TIM_readCounter(C1);
+ sprintf(buf, "HEX: %08lx DEC: %08ld", val, val);
+ grx_text(buf, 461, 225, rgb16(80, 80, 255), black);
+
+ task_endcycle();
+ }
+}
+
+void endfun(KEY_EVT *k)
+{
+ close_event(NULL);
+
+ exit(1);
+}
+
+void show_evt(KEY_EVT *k)
+{
+ task_activate(show_aper_pid);
+}
+
+void gate_change(KEY_EVT *k)
+{
+ if(k->ascii == 'g'){
+ if( (out & 0x80) != 0){
+ out &= 0x7F;
+ grx_text("0 V", 367, 145, rgb16(255, 0, 0), black);
+ } else {
+ out |= 0x80;
+ grx_text("5 V", 367, 145, rgb16(0, 255, 0), black);
+ }
+ } else {
+ if( (out & 0x40) != 0){
+ out &= 0xBF;
+ grx_text("0 V", 367, 225, rgb16(255, 0, 0), black);
+ } else {
+ out |= 0x40;
+ grx_text("5 V", 367, 225, rgb16(0, 255, 0), black);
+ }
+ }
+
+ DIO_write(out);
+}
+
+void close_event(void *arg)
+{
+ TIM_disarm(2); //Disable both two counters
+ handler_remove(INT_NO);
+
+ switch(sys){
+ case 0: sys_shutdown_message("OK\n"); break;
+ case 10: sys_shutdown_message("Task <show aperiodic> down\n"); break;
+ case 11: sys_shutdown_message("Task <show periodic> down\n"); break;
+ case 20: sys_shutdown_message("No PCI bus\n"); break;
+ case 21: sys_shutdown_message("No National board on PCI bus\n"); break;
+ case 30: sys_shutdown_message("No graphic can be initialized\n"); break;
+ case 31: sys_shutdown_message("This graphic mode cannot be supported\n"); break;
+ default: sys_shutdown_message("???????????\n"); break;
+ }
+}
+
+void int_evt(int intno)
+{
+ WORD status;
+
+ status = DAQ_STC_Windowed_Mode_Read(AI_STATUS_1);
+ if( (status & 0x8000) != 0){
+ if( (status & 0x0008) != 0){
+ grx_text("INT Group A raised! G0 Rolls over", 7, 360, rgb16(0, 255, 0), black);
+ set(interrupt_a_ack, 14);
+ DAQ_STC_Windowed_Mode_Write(INTERRUPT_A_ACK, interrupt_a_ack);
+ clr(interrupt_a_ack, 14);
+ }
+ if( (status & 0x0004) != 0){
+ grx_text("INT Group A raised! G0 gate pressed", 7, 380, rgb16(0, 255, 0), black);
+ set(interrupt_a_ack, 15);
+ DAQ_STC_Windowed_Mode_Write(INTERRUPT_A_ACK, interrupt_a_ack);
+ clr(interrupt_a_ack, 15);
+ }
+ return;
+ }
+
+ status = DAQ_STC_Windowed_Mode_Read(AO_STATUS_1);
+ if( (status & 0x8000) != 0){
+ if( (status & 0x0008) != 0){
+ grx_text("INT Group B raised! G1 Rolls over", 461, 360, rgb16(0, 255, 0), black);
+ set(interrupt_b_ack, 14);
+ DAQ_STC_Windowed_Mode_Write(INTERRUPT_B_ACK, interrupt_b_ack);
+ clr(interrupt_b_ack, 14);
+ }
+ if( (status & 0x0004) != 0){
+ grx_text("INT Group B raised! G1 gate pressed", 461, 380, rgb16(0, 255, 0), black);
+ set(interrupt_b_ack, 15);
+ DAQ_STC_Windowed_Mode_Write(INTERRUPT_B_ACK, interrupt_b_ack);
+ clr(interrupt_b_ack, 15);
+ }
+ return;
+ }
+}
+/* End of file: Test_ec.c */
Index: demos/branches/xen/pci6025e/test_bec.c
===================================================================
--- demos/branches/xen/pci6025e/test_bec.c (nonexistent)
+++ demos/branches/xen/pci6025e/test_bec.c (revision 1684)
@@ -0,0 +1,324 @@
+/*****************************************************************************
+* Filename: test_bec.c *
+* Author: Marco Ziglioli (Doctor Stein) *
+* Date: 20/06/2001 *
+* Description: Test program for buffered gated event counting using PCI6025E *
+* board *
+*----------------------------------------------------------------------------*
+* Notes: FOUT are enabled to provide a frequency of 6250 Hz. You could *
+* connect PFI3 (pin 41) and PFI6 (pin 45) to this source for counting *
+* edges. Gated counting are enabled and PFI4 (pin 42) is gate pin for *
+* counter 0 and PFI5 (pin 44) is gate pin for counter 0. DIO 7 and 6 *
+* are als configured to switch between 0 and 5 V. Connect DIO 7 to *
+* gate 0 and DIO 6 to gate 1. Use 'g' (counter 0) and 'h' (counter 1) *
+* to change DIO lines value. On left area of the screen you should *
+* see counter while counting and on the right area you should lock *
+* counter values by pressing 's' key. *
+* Notice that line parameters are enabled and accept inital value *
+* for the two counters. If they aren't specified or they are wrong *
+* counters start from 0x00FFFFFF (counter 0 which counts down) and *
+* 0x00000000 (counter 1 which counts up). *
+*****************************************************************************/
+
+/* This file is part of the S.Ha.R.K. Project - http://shark.sssup.it
+ *
+ * Copyright (C) 2001 Marco Ziglioli
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+#include <kernel/kern.h>
+
+#include <drivers/shark_keyb26.h>
+#include <drivers/shark_fb26.h>
+
+#include <drivers/pci6025e/timer.h>
+#include <drivers/pci6025e/dio_ppi.h>
+
+BYTE sys = 0;
+
+PID show_aper_pid;
+BYTE out = 0x00;
+
+int black = rgb16(0, 0, 0),
+ white = rgb16(255, 255, 255);
+
+void endfun(KEY_EVT *);
+void close_event(void *);
+void show_evt(KEY_EVT *k);
+void gate_change(KEY_EVT *k);
+
+void drawInterface(void);
+
+TASK show_per(int);
+TASK show_aper(int);
+
+int main(int argc, char **argv)
+{
+ KEY_EVT k;
+ SOFT_TASK_MODEL show_per_mod, show_aper_mod;
+ PID show_per_pid;
+ int result;
+ DWORD init_val_c0, init_val_c1;
+
+ if(argc >= 3){
+ if( (result = sscanf(argv[1], "%ld", &init_val_c0)) != 1)
+ init_val_c0 = 0x00FFFFFF;
+ if( (result = sscanf(argv[2], "%ld", &init_val_c1)) != 1)
+ init_val_c1 = 0x00000000;
+ }
+ if(argc == 2){
+ if( (result = sscanf(argv[1], "%ld", &init_val_c0)) != 1)
+ init_val_c0 = 0x00FFFFFF;
+ init_val_c1 = 0x00000000;
+ }
+ if(argc == 1){
+ init_val_c0 = 0x00FFFFFF;
+ init_val_c1 = 0x00000000;
+ }
+
+ k.flag = CNTL_BIT;
+ k.scan = KEY_C;
+ k.ascii = 'c';
+ k.status = KEY_PRESSED;
+ keyb_hook(k, endfun, FALSE);
+
+ k.flag = CNTR_BIT;
+ k.status = KEY_PRESSED;
+ keyb_hook(k, endfun, FALSE);
+
+ soft_task_default_model(show_aper_mod);
+ soft_task_def_aperiodic(show_aper_mod);
+ soft_task_def_level(show_aper_mod, 2);
+ soft_task_def_period(show_aper_mod, 250000);
+ soft_task_def_met(show_aper_mod, 30000);
+ soft_task_def_wcet(show_aper_mod, 60000);
+ if( (show_aper_pid = task_create("Show aperiodic task", show_aper, &show_aper_mod, NULL)) == NIL ){
+ sys = 10;
+ exit(1);
+ }
+
+ k.flag = 0;
+ k.scan = KEY_S;
+ k.ascii = 's';
+ k.status = KEY_PRESSED;
+ keyb_hook(k, show_evt, FALSE);
+
+ k.flag = 0;
+ k.scan = KEY_G;
+ k.ascii = 'g';
+ k.status = KEY_PRESSED;
+ keyb_hook(k, gate_change, FALSE);
+
+ k.scan = KEY_H;
+ k.ascii = 'h';
+ k.status = KEY_PRESSED;
+ keyb_hook(k, gate_change, FALSE);
+
+ soft_task_default_model(show_per_mod);
+ soft_task_def_level(show_per_mod, 2);
+ soft_task_def_met(show_per_mod, 1000);
+ soft_task_def_period(show_per_mod, 10000);
+ if( (show_per_pid = task_create("Show periodic task", show_per, &show_per_mod, NULL)) == NIL){
+ sys = 11;
+ exit(1);
+ }
+
+ if(!reMap()){
+ sys = 21;
+ exit(1);
+ }
+
+ drawInterface();
+
+ DIO_init();
+ DIO_setup(0xFF);
+ DIO_write(out);
+
+ PFIprogramming(0x0000);
+ setIntClock(1, 1, 0);
+ TIM_reset(2); //Reset both two counters
+
+
+ //Source PFI3(41); Gate PFI 4(42); Down counting; counts rising edge;
+ TIM_bufferedEventCounting(C0, 0x04, 0x45, 0x01, init_val_c0);
+
+ //Source PFI6(45); Gate PFI 5(44); Up counting; counts rising edge;
+ TIM_bufferedEventCounting(C1, 0x87, 0x46, 0x00, init_val_c1);
+
+ TIM_arm(2); //Arm both two counters
+
+ task_activate(show_per_pid);
+
+ return 0;
+}
+
+void drawInterface(void)
+{
+ grx_rect(1, 1, 799, 99, rgb16(105, 0, 0));
+ grx_rect(2, 2, 798, 98, rgb16(155, 0, 0));
+ grx_rect(3, 3, 797, 97, rgb16(205, 0, 0));
+ grx_rect(4, 4, 796, 96, rgb16(255, 0, 0));
+
+ grx_text("Test program for Buffered Event Counting capacity of PCI6025E timers",
+ 7, 10, rgb16(50, 255, 50), black);
+
+ grx_text("This program counting rise edges on counters source (PFI3 & PFI6)",
+ 7, 18, rgb16(0, 255, 255), black);
+ grx_text("Counter 1 will be resetted every gate falling edge",
+ 7, 26, rgb16(0, 255, 255), black);
+ grx_text("(PFI 42 & 44) are enabled. Frequency Out (FOUT) is enabled and provides a frequency of 6250 Hz",
+ 7, 34, rgb16(0, 255, 255), black);
+
+ grx_text("Instruction:",7, 43, rgb16(255, 0, 0), black);
+ grx_text("Use 's' to watch contents of Hardware save registers updated every time gate goes down",
+ 7, 51, rgb16(0, 255, 255), black);
+ grx_text("Use 'g' to generate an event on counter 0 gate (see top-left square)",
+ 7, 58, rgb16(0, 255, 255), black);
+
+ grx_text("Use 'h' to generate an event on counter 1 gate (see bottom-left square)",
+ 7, 65, rgb16(0, 255, 255), black);
+
+ grx_text("Please connect DIO7 (pin 32) to PFI4 (pin 42) and DIO6 (pin 30) to PFI5 (pin 44)",
+ 7, 78, rgb16(0, 255, 0), black);
+ grx_text("CTRL-C for Exit", 7, 88, rgb16(200, 200, 0), black);
+
+ grx_rect(1, 110, 355, 170, rgb16(0, 105, 0));
+ grx_rect(2, 111, 354, 169, rgb16(0, 155, 0));
+ grx_rect(3, 112, 353, 168, rgb16(0, 205, 0));
+ grx_rect(4, 113, 352, 167, rgb16(0, 255, 0));
+ grx_text("Counter 0 evolution", 7, 120, rgb16(255, 255, 0), black);
+
+ grx_rect(455, 110, 799, 170, rgb16(0, 105, 0));
+ grx_rect(456, 111, 798, 169, rgb16(0, 155, 0));
+ grx_rect(457, 112, 797, 168, rgb16(0, 205, 0));
+ grx_rect(458, 113, 796, 167, rgb16(0, 255, 0));
+ grx_text("Counter 0 locked value", 461, 120, rgb16(255, 0, 255), black);
+
+ grx_rect(360, 110, 450, 170, rgb16(0, 105, 0));
+ grx_rect(361, 111, 449, 169, rgb16(0, 155, 0));
+ grx_rect(362, 112, 448, 168, rgb16(0, 205, 0));
+ grx_rect(363, 113, 447, 167, rgb16(0, 255, 0));
+ grx_text("Gate0", 367, 120, rgb16(200, 255, 200), black);
+ grx_text("0 V", 367, 145, rgb16(255, 0, 0), black);
+
+ grx_rect(1, 190, 355, 260, rgb16(85, 85, 255));
+ grx_rect(2, 191, 354, 259, rgb16(135, 135, 255));
+ grx_rect(3, 192, 353, 258, rgb16(190, 190, 255));
+ grx_rect(4, 193, 352, 257, rgb16(230, 239, 255));
+ grx_text("Counter 1 evolution", 7, 200, white, black);
+
+ grx_rect(455, 190, 799, 260, rgb16(85, 85, 255));
+ grx_rect(456, 191, 798, 259, rgb16(135, 135, 255));
+ grx_rect(457, 192, 797, 258, rgb16(190, 190, 255));
+ grx_rect(458, 193, 796, 257, rgb16(230, 230, 255));
+ grx_text("Counter 1 locked value", 461, 200, white, black);
+
+ grx_rect(360, 190, 450, 260, rgb16(85, 85, 255));
+ grx_rect(361, 191, 449, 259, rgb16(135, 135, 255));
+ grx_rect(362, 192, 448, 258, rgb16(190, 190, 255));
+ grx_rect(363, 193, 447, 257, rgb16(230, 230, 255));
+ grx_text("Gate1", 367, 200, rgb16(255, 200, 255), black);
+ grx_text("0 V", 367, 225, rgb16(255, 0, 0), black);
+}
+
+TASK show_per(int none)
+{
+ DWORD val;
+ char buf[30];
+
+ while(1){
+ val = TIM_readCounter(C0); //Read from Hardware Save Register
+ sprintf(buf, "HEX: %08lx DEC: %08ld", val ,val);
+ grx_text(buf, 7, 145, rgb16(255, 0, 0), black);
+
+ val = TIM_readCounter(C1); //Read from Hardware Save Register
+ sprintf(buf, "HEX: %08lx DEC: %08ld", val ,val);
+ grx_text(buf, 7, 225, rgb16(255, 0, 0), black);
+
+ task_endcycle();
+ }
+}
+
+TASK show_aper(int dummy)
+{
+ DWORD val;
+ char buf[30];
+
+ while(1){
+ val = TIM_readHWSaveReg(C0); //Read from Hardware Save Register
+ sprintf(buf, "HEX: %08lx DEC: %08ld", val, val);
+ grx_text(buf, 461, 145, rgb16(80, 80, 255), black);
+
+ val = TIM_readHWSaveReg(C1); //Read from Hardware Save Register
+ sprintf(buf, "HEX: %08lx DEC: %08ld", val, val);
+ grx_text(buf, 461, 225, rgb16(80, 80, 255), black);
+
+ task_endcycle();
+ }
+}
+
+void endfun(KEY_EVT *k)
+{
+ close_event(NULL);
+
+ exit(1);
+}
+
+void show_evt(KEY_EVT *k)
+{
+ task_activate(show_aper_pid);
+}
+
+void gate_change(KEY_EVT *k)
+{
+ if(k->ascii == 'g'){
+ if( (out & 0x80) != 0){
+ out &= 0x7F;
+ grx_text("0 V", 367, 145, rgb16(255, 0, 0), black);
+ } else {
+ out |= 0x80;
+ grx_text("5 V", 367, 145, rgb16(0, 255, 0), black);
+ }
+ } else {
+ if( (out & 0x40) != 0){
+ out &= 0xBF;
+ grx_text("0 V", 367, 225, rgb16(255, 0, 0), black);
+ } else {
+ out |= 0x40;
+ grx_text("5 V", 367, 225, rgb16(0, 255, 0), black);
+ }
+ }
+
+ DIO_write(out);
+}
+
+void close_event(void *arg)
+{
+ TIM_disarm(2); //Disable both two counters
+
+ switch(sys){
+ case 0: sys_shutdown_message("OK\n"); break;
+ case 10: sys_shutdown_message("Task <show aperiodic> down\n"); break;
+ case 11: sys_shutdown_message("Task <show periodic> down\n"); break;
+ case 20: sys_shutdown_message("No PCI bus\n"); break;
+ case 21: sys_shutdown_message("No National board on PCI bus\n"); break;
+ case 30: sys_shutdown_message("No graphic can be initialized\n"); break;
+ case 31: sys_shutdown_message("This graphic mode cannot be supported\n"); break;
+ default: sys_shutdown_message("???????????\n"); break;
+ }
+}
+/* End of file: Test_bec.c */
Index: demos/branches/xen/pci6025e/initfile.c
===================================================================
--- demos/branches/xen/pci6025e/initfile.c (nonexistent)
+++ demos/branches/xen/pci6025e/initfile.c (revision 1684)
@@ -0,0 +1,198 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Giacomo Guidi <giacomo@gandalf.sssup.it>
+ * Tullio Facchinetti <tullio.facchinetti@unipv.it>
+ * (see the web pages for full authors list)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+#include "kernel/kern.h"
+#include "intdrive/intdrive/intdrive.h"
+#include "edf/edf/edf.h"
+#include "hardcbs/hardcbs/hardcbs.h"
+#include "rr/rr/rr.h"
+#include "dummy/dummy/dummy.h"
+
+#include "sem/sem/sem.h"
+#include "hartport/hartport/hartport.h"
+#include "cabs/cabs/cabs.h"
+
+#include <drivers/shark_linuxc26.h>
+#include <drivers/shark_pci26.h>
+#include <drivers/shark_input26.h>
+#include <drivers/shark_keyb26.h>
+#include <drivers/shark_fb26.h>
+
+#define FRAME_BUFFER_DEVICE 0
+
+/*+ sysyem tick in us +*/
+#define TICK 0
+
+/*+ RR tick in us +*/
+#define RRTICK 2000
+
+/*+ Interrupt Server +*/
+#define INTDRIVE_Q 1000
+#define INTDRIVE_U 0.1*MAX_BANDWIDTH
+#define INTDRIVE_FLAG 0
+
+void call_shutdown_task(void *arg);
+int device_drivers_init();
+int device_drivers_close();
+void set_shutdown_task();
+TASK shutdown_task_body(void *arg);
+
+PID shutdown_task_PID = -1;
+
+TIME __kernel_register_levels__(void *arg)
+{
+ struct multiboot_info *mb = (struct multiboot_info *)arg;
+ LEVEL EDF_level;
+
+ INTDRIVE_register_level(INTDRIVE_Q, INTDRIVE_Q, INTDRIVE_U, INTDRIVE_FLAG);
+ EDF_level = EDF_register_level(EDF_ENABLE_ALL);
+ HCBS_register_level(HCBS_ENABLE_ALL, EDF_level);
+ RR_register_level(RRTICK, RR_MAIN_YES, mb);
+ dummy_register_level();
+
+ SEM_register_module();
+ CABS_register_module();
+
+ return TICK;
+}
+
+TASK __init__(void *arg)
+{
+ struct multiboot_info *mb = (struct multiboot_info *)arg;
+
+ HARTPORT_init();
+
+ /* Create the shutdown task. It will be activated at RUNLEVEL
+ SHUTDOWN */
+ set_shutdown_task();
+
+ /* Init the drivers */
+ device_drivers_init();
+
+ /* Set the shutdown task activation */
+ sys_atrunlevel(call_shutdown_task, NULL, RUNLEVEL_SHUTDOWN);
+
+ __call_main__(mb);
+
+ return (void *)0;
+}
+
+void set_shutdown_task() {
+
+ /* WARNING: the shutdown task is a background thread. It cannot execute
+ if the system is overloaded */
+ NRT_TASK_MODEL nrt;
+
+ nrt_task_default_model(nrt);
+ nrt_task_def_system(nrt);
+
+ shutdown_task_PID = task_create("Shutdown Task",shutdown_task_body,&nrt,NULL);
+ if (shutdown_task_PID == NIL) {
+ sys_shutdown_message("Error: Cannot create shutdown task\n");
+ exit(1);
+ }
+
+}
+
+int device_drivers_init() {
+
+ int res;
+ KEYB_PARMS kparms = BASE_KEYB;
+
+ LINUXC26_register_module(TRUE);
+
+ PCI26_init();
+
+ INPUT26_init();
+
+ keyb_def_ctrlC(kparms, NULL);
+
+ KEYB26_init(&kparms);
+
+ FB26_init();
+
+ res = FB26_open(FRAME_BUFFER_DEVICE);
+ if (res) {
+ cprintf("Error: Cannot open graphical mode\n");
+ KEYB26_close();
+ INPUT26_close();
+ exit(1);
+ }
+
+ FB26_use_grx(FRAME_BUFFER_DEVICE);
+
+ FB26_setmode(FRAME_BUFFER_DEVICE,"800x600-16");
+
+ return 0;
+
+}
+
+int device_drivers_close() {
+
+ FB26_close(FRAME_BUFFER_DEVICE);
+
+ KEYB26_close();
+
+ INPUT26_close();
+
+ return 0;
+
+}
+
+#define SHUTDOWN_TIMEOUT_SEC 3
+
+void call_shutdown_task(void *arg)
+{
+ struct timespec t;
+
+ sys_gettime(&t);
+ t.tv_sec += SHUTDOWN_TIMEOUT_SEC;
+
+ /* Emergency timeout to exit from RUNLEVEL_SHUTDOWN */
+ kern_event_post(&t,(void *)((void *)sys_abort_shutdown),(void *)0);
+
+ task_activate(shutdown_task_PID);
+}
+
+TASK shutdown_task_body(void *arg) {
+
+ device_drivers_close();
+
+ sys_shutdown_message("-- S.Ha.R.K. Closed --\n");
+
+ return NULL;
+
+}
Index: demos/branches/xen/pci6025e/test_ppi.c
===================================================================
--- demos/branches/xen/pci6025e/test_ppi.c (nonexistent)
+++ demos/branches/xen/pci6025e/test_ppi.c (revision 1684)
@@ -0,0 +1,177 @@
+/*****************************************************************************
+* Filename: Test_ppi.c *
+* Author: Marco Ziglioli (Doctor Stein) *
+* Date: 22/05/2001 *
+* Description: Test PPI82C55MSM on NI DAQ PCI6025E *
+*----------------------------------------------------------------------------*
+* Notes: Configures port A and port C in input and port B in output *
+* Test 1: *
+* Now connect port B to port A and watch on video value changes *
+* in counting order. After connect port B to port C and watch *
+* the same events on port C *
+* Test 2: *
+* Connect 8 LEDs on port B and port A and port C lines to Vcc or*
+* GND. Now run this test and watch 8 diode changing in counting *
+* mode and on screen port A and port C values displayed *
+*****************************************************************************/
+
+/* This file is part of the S.Ha.R.K. Project - http://shark.sssup.it
+ *
+ * Copyright (C) 2001 Marco Ziglioli
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+
+
+#include <drivers/shark_keyb26.h>
+#include <drivers/shark_fb26.h>
+
+#include <drivers/pci6025e/dio_ppi.h>
+
+void exit_fun(KEY_EVT *);
+TASK test_ppi(int);
+void close_event(void *);
+void draw_screen(void);
+
+BYTE system = 0;
+
+int main(int argc, char **argv)
+{
+ HARD_TASK_MODEL m;
+ KEY_EVT k;
+ PID pid_m;
+
+ k.flag = CNTL_BIT;
+ k.scan = KEY_C;
+ k.ascii = 'c';
+ k.status = KEY_PRESSED;
+ keyb_hook(k, exit_fun, FALSE);
+ k.flag = CNTR_BIT;
+ k.scan = KEY_C;
+ k.ascii = 'c';
+ k.status = KEY_PRESSED;
+ keyb_hook(k, exit_fun, FALSE);
+
+ hard_task_default_model(m);
+ hard_task_def_wcet(m, 90000);
+ hard_task_def_mit(m, 250000);
+ pid_m = task_create("TEST PPI", test_ppi, &m, NULL);
+ if(pid_m == NIL){
+ system = 10;
+ exit(1);
+ }
+
+ //Look for a National board on PCI bus
+ if(!reMap()){
+ system = 21;
+ exit(1);
+ }
+
+ //Start configuring DIO module
+ PPI_init();
+
+ draw_screen();
+
+ task_activate(pid_m);
+
+ return 0;
+}
+
+void draw_screen(void)
+{
+ grx_rect(5, 5, 610, 130, rgb16(255, 0, 0));
+ grx_rect(4, 4, 611, 131, rgb16(0,255,255));
+ grx_rect(3, 3, 612, 132, rgb16(255, 0, 0));
+ grx_rect(15, 45, 195, 100, rgb16(255, 0, 0));
+ grx_rect(215, 45, 395, 100, rgb16(0, 255, 0));
+ grx_rect(415, 45, 595, 100, rgb16(200, 200, 255));
+ grx_text("Test of PPI82C55MSM function (Hosted on PCI6025E)",
+ 9, 7, rgb16(0, 255, 0), rgb16(0, 0, 0));
+ grx_text("PORT A and PORT C are configured in input mode",
+ 9, 20, rgb16(255, 70, 70), rgb16(0, 0, 0));
+ grx_text("PORT B is configured in output mode",
+ 9, 28, rgb16(255, 70, 70), rgb16(0, 0, 0));
+ grx_text("PORT B (Output)", 35, 50, rgb16(200, 0, 0), rgb16(0, 0, 0));
+ grx_text("PORT A (Input)", 235, 50, rgb16(30,255,30), rgb16(0, 0, 0));
+ grx_text("PORT C (Input)", 435, 50, rgb16(200,200,255), rgb16(0, 0, 0));
+ grx_text("CTRL + C to exit", 9, 115, rgb16(255,255,0), rgb16(0,0,0));
+}
+
+/*
+* At each activation this task sends out value on port B and reads values from
+* port A and C
+*/
+TASK test_ppi(int dummy)
+{
+ BYTE val, pA, pC;
+ int i;
+ char buf[10];
+
+ PPI_config(0x99); //Mode 0 for all; Port A, Port C input; Port B output
+ val = 0;
+ while(1){
+ PPI_write(PPI_PORT_B, val); //sends out value
+ pA = PPI_read(PPI_PORT_A); //reads from port A
+ pC = PPI_read(PPI_PORT_C); //reads from port C
+
+ for(i=7; i>=0; i--){
+ if( (val>>i)%2 )
+ grx_text("1", 25+10*(7-i), 75, rgb16(255,0,0), rgb16(0,0,0));
+ else
+ grx_text("0", 25+10*(7-i), 75, rgb16(255,0,0), rgb16(0,0,0));
+ if( (pA>>i)%2 )
+ grx_text("1", 225+10*(7-i), 75, rgb16(0,255,0), rgb16(0,0,0));
+ else
+ grx_text("0", 225+10*(7-i), 75, rgb16(0,255,0), rgb16(0,0,0));
+ if( (pC>>i)%2 )
+ grx_text("1", 425+10*(7-i), 75, rgb16(200,200,255), rgb16(0,0,0));
+ else
+ grx_text("0", 425+10*(7-i), 75, rgb16(200,200,255), rgb16(0,0,0));
+ }
+ sprintf(buf, "%03d", val);
+ grx_text(buf, 140, 75, rgb16(255,0,0), rgb16(0,0,0));
+ sprintf(buf, "%03d", pA);
+ grx_text(buf, 340, 75, rgb16(0,255,0), rgb16(0,0,0));
+ sprintf(buf, "%03d", pC);
+ grx_text(buf, 540, 75, rgb16(200,200,255), rgb16(0,0,0));
+ val++;
+ task_endcycle();
+ }
+}
+
+void close_event(void *arg)
+{
+ switch(system){
+ case 0: sys_shutdown_message("Regular end\n"); break;
+ case 10:sys_shutdown_message("Cannot create task 'TEST PPI'\n"); break;
+ case 20:sys_shutdown_message("Pci bus don't find\n"); break;
+ case 21:sys_shutdown_message("No National board on PC\n"); break;
+ case 30:sys_shutdown_message("Cannot start graphic envirorment\n"); break;
+ default: sys_shutdown_message("Unknown exit\n"); break;
+ }
+}
+
+void exit_fun(KEY_EVT *k)
+{
+ system = 0;
+
+ close_event(NULL);
+
+ exit(1);
+}
+
+/*end of file: test_ppi.c*/
Index: demos/branches/xen/pci6025e/test_dio.c
===================================================================
--- demos/branches/xen/pci6025e/test_dio.c (nonexistent)
+++ demos/branches/xen/pci6025e/test_dio.c (revision 1684)
@@ -0,0 +1,171 @@
+/*****************************************************************************
+* Filename: Test_dio.c *
+* Author: Marco Ziglioli (Doctor Stein) *
+* Date: 22/03/2001 *
+* Last update: 22/03/2001 *
+* Description: Test STC digital lines (8 lines) *
+*----------------------------------------------------------------------------*
+* Notes: Configure DIO 4 5 6 7 in input and DIO 0 1 2 3 in output *
+* Two way to test this 8 lines: *
+* 1) Connect 4 LEDs to output lines and check LEDs lights *
+* themselves in counting order. Connect input lines to Vcc *
+* or GND and check on video that STC has readed the right *
+* nibble *
+* 2) Connect 4 output lines with 4 input lines and check on *
+* video that the nibble readed by STC change in counting *
+* order *
+*****************************************************************************/
+
+/* This file is part of the S.Ha.R.K. Project - http://shark.sssup.it
+ *
+ * Copyright (C) 2001 Marco Ziglioli
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+#include <kernel/kern.h>
+
+#include <drivers/shark_fb26.h>
+#include <drivers/shark_keyb26.h>
+
+#include <drivers/pci6025e/dio_ppi.h>
+
+BYTE system = 0;
+
+void close_event(void *);
+TASK test_DIO(int dummy);
+void exit_fun(KEY_EVT *);
+void draw_screen(void);
+
+int main(int argc, char **argv)
+{
+ HARD_TASK_MODEL m;
+ KEY_EVT k;
+ PID pid_m;
+
+ k.flag = CNTL_BIT;
+ k.scan = KEY_C;
+ k.ascii = 'c';
+ k.status = KEY_PRESSED;
+ keyb_hook(k, exit_fun, FALSE);
+ k.flag = CNTR_BIT;
+ k.scan = KEY_C;
+ k.ascii = 'c';
+ k.status = KEY_PRESSED;
+ keyb_hook(k, exit_fun, FALSE);
+
+ hard_task_default_model(m);
+ hard_task_def_wcet(m, 90000);
+ hard_task_def_mit(m, 250000);
+ pid_m = task_create("TEST DIO", test_DIO, &m, NULL);
+ if(pid_m == NIL){
+ system = 10;
+ exit(1);
+ }
+
+ //Look for a National board on PCI bus
+ if(!reMap()){
+ system = 21;
+ exit(1);
+ }
+
+ //Start configuring DIO module
+ DIO_init();
+
+ draw_screen();
+
+ task_activate(pid_m);
+
+ return 0;
+}
+
+void draw_screen(void)
+{
+ grx_rect(5, 5, 405, 130, rgb16(255, 0, 0));
+ grx_rect(4, 4, 406, 131, rgb16(0,255,255));
+ grx_rect(3, 3, 407, 132, rgb16(255, 0, 0));
+ grx_rect(15, 45, 195, 100, rgb16(255, 0, 0));
+ grx_rect(215, 45, 395, 100, rgb16(0, 255, 0));
+ grx_text("Test of PCI6025E DIO function",
+ 9, 7, rgb16(0, 255, 0), rgb16(0, 0, 0));
+ grx_text("DIO 4-5-6-7 are configured in input mode",
+ 9, 20, rgb16(255, 70, 70), rgb16(0, 0, 0));
+ grx_text("DIO 0-1-2-3 are configured in output mode",
+ 9, 28, rgb16(255, 70, 70), rgb16(0, 0, 0));
+ grx_text("Output bits", 35, 50, rgb16(200, 0, 0), rgb16(0, 0, 0));
+ grx_text("input bits", 235, 50, rgb16(30,255,30), rgb16(0, 0, 0));
+ grx_text("CTRL + C to exit", 9, 115, rgb16(255,255,0), rgb16(0,0,0));
+}
+
+/*
+* At each activation this task change output value of lowest digitals line
+* and read value on highest digital lines, showing them at video
+*/
+TASK test_DIO(int dummy)
+{
+ BYTE out_val = 0x00,
+ in_val = 0;
+ int i;
+ char buf[10];
+
+ //DIO 0..3 configured as output
+ //DIO 4..7 configured as input
+ DIO_setup(0x0F);
+
+ while(1){
+ DIO_write(out_val); //sends out value
+ in_val = DIO_read() >> 4; //reads value
+
+ for(i=3; i>=0; i--){
+ if( (out_val>>i)%2 )
+ grx_text("1", 25+10*(3-i), 75, rgb16(255,0,0), rgb16(0,0,0));
+ else
+ grx_text("0", 25+10*(3-i), 75, rgb16(255,0,0), rgb16(0,0,0));
+ if( (in_val>>i)%2 )
+ grx_text("1", 225+10*(3-i), 75, rgb16(0,255,0), rgb16(0,0,0));
+ else
+ grx_text("0", 225+10*(3-i), 75, rgb16(0,255,0), rgb16(0,0,0));
+ }
+ sprintf(buf, "%03d", out_val);
+ grx_text(buf, 80, 75, rgb16(255,0,0), rgb16(0,0,0));
+ sprintf(buf, "%03d", in_val);
+ grx_text(buf, 280, 75, rgb16(0,255,0), rgb16(0,0,0));
+
+ out_val = (out_val+1)%16;
+ task_endcycle();
+ }
+}
+
+void close_event(void *arg)
+{
+ switch(system){
+ case 0: sys_shutdown_message("Regular end\n"); break;
+ case 10:sys_shutdown_message("Cannot create task TEST DIO\n"); break;
+ case 21:sys_shutdown_message("No National board on PC\n"); break;
+ case 30:sys_shutdown_message("Cannot start graphic envirorment\n"); break;
+ default: sys_shutdown_message("Unknown exit\n"); break;
+ }
+}
+
+void exit_fun(KEY_EVT *k)
+{
+ system = 0;
+
+ close_event(NULL);
+
+ exit(1);
+}
+
Index: demos/branches/xen/pci6025e/makefile
===================================================================
--- demos/branches/xen/pci6025e/makefile (nonexistent)
+++ demos/branches/xen/pci6025e/makefile (revision 1684)
@@ -0,0 +1,32 @@
+#
+#
+# PCI6025E Examples and Test programs
+#
+#
+
+ifndef BASE
+BASE=../..
+endif
+include $(BASE)/config/config.mk
+
+PROGS= test_dac wave test_dio test_ppi test_ec test_bec test_mes test_bms
+
+include $(BASE)/config/example.mk
+
+test_dac:
+ make -f $(SUBMAKE) APP=test_dac OTHEROBJS=initfile.o SHARKOPT="__LINUXC26__ __PCI__ __6025E__ __INPUT__ __FB__"
+wave:
+ make -f $(SUBMAKE) APP=wave OTHEROBJS=initfile.o SHARKOPT="__LINUXC26__ __PCI__ __6025E__ __INPUT__ __FB__"
+test_dio:
+ make -f $(SUBMAKE) APP=test_dio OTHEROBJS=initfile.o SHARKOPT="__LINUXC26__ __PCI__ __6025E__ __INPUT__ __FB__"
+test_ppi:
+ make -f $(SUBMAKE) APP=test_ppi OTHEROBJS=initfile.o SHARKOPT="__LINUXC26__ __PCI__ __6025E__ __INPUT__ __FB__"
+test_ec:
+ make -f $(SUBMAKE) APP=test_ec OTHEROBJS=initfile.o SHARKOPT="__LINUXC26__ __PCI__ __6025E__ __INPUT__ __FB__"
+test_bec:
+ make -f $(SUBMAKE) APP=test_bec OTHEROBJS=initfile.o SHARKOPT="__LINUXC26__ __PCI__ __6025E__ __INPUT__ __FB__"
+test_mes:
+ make -f $(SUBMAKE) APP=test_mes OTHEROBJS=initfile.o SHARKOPT="__LINUXC26__ __PCI__ __6025E__ __INPUT__ __FB__"
+test_bms:
+ make -f $(SUBMAKE) APP=test_bms OTHEROBJS=initfile.o SHARKOPT="__LINUXC26__ __PCI__ __6025E__ __INPUT__ __FB__"
+
Index: demos/branches/xen/pci6025e/readme
===================================================================
--- demos/branches/xen/pci6025e/readme (nonexistent)
+++ demos/branches/xen/pci6025e/readme (revision 1684)
@@ -0,0 +1,7 @@
+These are the demos available for the National Instruments PCI6025e boards.
+
+These demos and the PCI driver have been made by
+Marco Ziglioli (zi_mar@libero.it). Please send any comments to:
+zi_mar@libero.it or to shark-help@gandalf.sssup.it.
+
+Paolo
Index: demos/branches/xen/jumpball/ern.c
===================================================================
--- demos/branches/xen/jumpball/ern.c (nonexistent)
+++ demos/branches/xen/jumpball/ern.c (revision 1684)
@@ -0,0 +1,220 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Paolo Gai <pj@gandalf.sssup.it>
+ * Tullio Facchinetti <tullio.facchinetti@unipv.it>
+ * (see the web pages for full authors list)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/**
+ ------------
+ CVS : $Id: ern.c,v 1.10 2006-07-05 08:27:27 tullio Exp $
+
+ File: $File$
+ Revision: $Revision: 1.10 $
+ Last update: $Date: 2006-07-05 08:27:27 $
+ ------------
+**/
+
+/*
+ * Copyright (C) 2003 Paolo Gai
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+#include "kernel/kern.h"
+#include "intdrive/intdrive/intdrive.h"
+#include "edf/edf/edf.h"
+#include "rr/rr/rr.h"
+#include "rrsoft/rrsoft/rrsoft.h"
+#include "dummy/dummy/dummy.h"
+
+#include "sem/sem/sem.h"
+#include "hartport/hartport/hartport.h"
+#include "cabs/cabs/cabs.h"
+
+#include "nop/nop/nop.h"
+
+#include <drivers/shark_linuxc26.h>
+#include <drivers/shark_pci26.h>
+#include <drivers/shark_input26.h>
+#include <drivers/shark_keyb26.h>
+#include <drivers/shark_fb26.h>
+
+#define FRAME_BUFFER_DEVICE 0
+
+
+/*+ sysyem tick in us +*/
+#define TICK 0
+
+/*+ RR tick in us +*/
+#define RRTICK 2000
+
+/*+ Interrupt Server +*/
+#define INTDRIVE_Q 1000
+#define INTDRIVE_U 0.1*MAX_BANDWIDTH
+#define INTDRIVE_FLAG 0
+
+void call_shutdown_task(void *arg);
+int device_drivers_init();
+int device_drivers_close();
+void set_shutdown_task();
+TASK shutdown_task_body(void *arg);
+
+PID shutdown_task_PID = -1;
+
+TIME __kernel_register_levels__(void *arg)
+{
+ struct multiboot_info *mb = (struct multiboot_info *)arg;
+ LEVEL EDF_level;
+
+ INTDRIVE_register_level(INTDRIVE_Q, INTDRIVE_Q, INTDRIVE_U, INTDRIVE_FLAG);
+ EDF_level = EDF_register_level(EDF_ENABLE_ALL);
+ RRSOFT_register_level(RRTICK, RR_MAIN_NO, mb, RRSOFT_ONLY_HARD|RRSOFT_ONLY_SOFT);
+ RR_register_level(RRTICK, RR_MAIN_YES, mb);
+ dummy_register_level();
+
+ SEM_register_module();
+
+ CABS_register_module();
+
+ NOP_register_module();
+
+ return TICK;
+}
+
+TASK __init__(void *arg)
+{
+ struct multiboot_info *mb = (struct multiboot_info *)arg;
+
+ HARTPORT_init();
+
+ set_shutdown_task();
+
+ device_drivers_init();
+
+ sys_atrunlevel(call_shutdown_task, NULL, RUNLEVEL_SHUTDOWN);
+
+ __call_main__(mb);
+
+ return (void *)0;
+}
+
+void set_shutdown_task() {
+
+ NRT_TASK_MODEL nrt;
+
+ nrt_task_default_model(nrt);
+ nrt_task_def_system(nrt);
+
+ shutdown_task_PID = task_create("Shutdown Task",shutdown_task_body,&nrt,NULL);
+ if (shutdown_task_PID == NIL) {
+ sys_shutdown_message("Error: Cannot create shutdown task\n");
+ exit(1);
+ }
+
+}
+
+int device_drivers_init() {
+
+ int res;
+ KEYB_PARMS kparms = BASE_KEYB;
+
+ LINUXC26_register_module(TRUE);
+
+ PCI26_init();
+
+ INPUT26_init();
+
+ keyb_def_ctrlC(kparms, NULL);
+
+ KEYB26_init(&kparms);
+
+ FB26_init();
+
+ res = FB26_open(FRAME_BUFFER_DEVICE);
+ if (res) {
+ cprintf("Error: Cannot open graphical mode\n");
+ KEYB26_close();
+ INPUT26_close();
+ exit(1);
+ }
+
+ FB26_use_grx(FRAME_BUFFER_DEVICE);
+
+ FB26_setmode(FRAME_BUFFER_DEVICE,"640x480-16");
+
+ return 0;
+
+}
+
+int device_drivers_close() {
+
+ FB26_close(FRAME_BUFFER_DEVICE);
+
+ KEYB26_close();
+
+ INPUT26_close();
+
+ return 0;
+
+}
+
+#define SHUTDOWN_TIMEOUT_SEC 3
+
+void call_shutdown_task(void *arg)
+{
+ struct timespec t;
+
+ sys_gettime(&t);
+ t.tv_sec += SHUTDOWN_TIMEOUT_SEC;
+
+ /* Emergency timeout to exit from RUNLEVEL_SHUTDOWN */
+ kern_event_post(&t,(void *)((void *)sys_abort_shutdown),(void *)0);
+
+ task_activate(shutdown_task_PID);
+}
+
+TASK shutdown_task_body(void *arg) {
+
+ device_drivers_close();
+
+ sys_shutdown_message("-- S.Ha.R.K. Closed --\n");
+
+ return NULL;
+
+}
+
+void app_mutex_init(mutex_t *m)
+{
+ NOP_mutexattr_t attr;
+
+ NOP_mutexattr_default(attr);
+
+ mutex_init(m, &attr);
+}
+
Index: demos/branches/xen/jumpball/demo.h
===================================================================
--- demos/branches/xen/jumpball/demo.h (nonexistent)
+++ demos/branches/xen/jumpball/demo.h (revision 1684)
@@ -0,0 +1,190 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Paolo Gai <pj@gandalf.sssup.it>
+ * (see the web pages for full authors list)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/**
+ ------------
+ CVS : $Id: demo.h,v 1.8 2006-06-27 09:27:15 tullio Exp $
+
+ File: $File$
+ Revision: $Revision: 1.8 $
+ Last update: $Date: 2006-06-27 09:27:15 $
+ ------------
+**/
+
+/*
+ * Copyright (C) 2000 Paolo Gai
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+
+#include <ll/ll.h>
+#include <kernel/types.h>
+#include <kernel/descr.h>
+#include <math.h>
+
+#include <drivers/shark_linuxc26.h>
+#include <drivers/shark_pci26.h>
+#include <drivers/shark_input26.h>
+#include <drivers/shark_keyb26.h>
+#include <drivers/shark_fb26.h>
+
+#define FRAME_BUFFER_DEVICE 0
+
+/* Subparts */
+#define JET_ON
+#define BALL_ON
+
+
+/* CPU Speed Selection
+ --------------------------------------------------------------------
+ 1700 - Pentium 4 1.7 GHz
+ 1300 - Centrino 1.3 GHz
+ 400 - Pentium 2 400 MHz
+ 133 - Pentium 1 133 MHz
+*/
+#define CPU 400
+
+/*
+ *
+ * WCET, Periods and Models
+ *
+ */
+
+#if CPU==133
+#define WCET_JETCTRL 10000
+#define WCET_JETDUMMY 300
+#define WCET_JETSLIDE 2000
+#define WCET_BALL 250
+#define WCET_HARD_BALL 1000
+#define BALL_DELAY 10000
+#endif
+
+#if CPU==400
+#define WCET_JETCTRL 7500
+#define WCET_JETDUMMY 400
+#define WCET_JETSLIDE 2100
+#define WCET_BALL 250
+#define WCET_HARD_BALL 480
+#define BALL_DELAY 10000
+#endif
+
+#if CPU==1300
+#define WCET_JETCTRL 4500
+#define WCET_JETDUMMY 200
+#define WCET_JETSLIDE 1300
+#define WCET_BALL 250
+#define WCET_HARD_BALL 650
+#define BALL_DELAY 100000
+#endif
+
+#if CPU==1700
+#define WCET_JETCTRL 4500
+#define WCET_JETDUMMY 100
+#define WCET_JETSLIDE 1300
+#define WCET_BALL 250
+#define WCET_HARD_BALL 410
+#define BALL_DELAY 100000
+#endif
+
+#define PERIOD_JETCTRL 100000
+#define PERIOD_JETDUMMY 100000
+#define PERIOD_JETSLIDE 100000
+#define PERIOD_BALL 10000
+
+/*
+ *
+ * Global Stuffs
+ *
+ */
+
+extern PID shutdown_task_PID;
+
+/* graphic mutex... */
+extern mutex_t mutex;
+
+/* useful colors... */
+extern int white;
+extern int black;
+extern int red;
+extern int gray;
+
+void init_jetcontrol();
+void init_ball(void);
+void scenario_jetcontrol();
+void scenario_ball();
+char *itoa(int n, char *s);
+int myrand(int x);
+
+/*
+ *
+ * JETCONTROL stuffs
+ *
+ */
+
+#define JET_NTASK 35
+#define JET_Y_NAME 170
+
+/*
+ *
+ * ATTENTION: the following PID MUST match
+ * with the one assigned by Shark to the
+ * Dummy task during dummy module creation.
+ *
+ */
+#define DUMMY_PID 2
+
+#define JET_DUMMY_WIDTH 210
+#define JET_DUMMY_HEIGHT 80
+
+/* the point (x, y) is the top left corner */
+#define JET_DUMMY_X 428
+#define JET_DUMMY_Y 65
+
+#define JET_SLIDE_WIDTH 50
+#define JET_SLIDE_X 576
+
+/*
+ *
+ * BALL stuffs
+ *
+ */
+
+// x and y corners are specified whithout consider a border of 3 pixels
+#define BALL_Y 450 /* position of the floor */
+#define BALL_HEIGHT 385 /* initial height of the ball */
+#define BALL_XMIN 10 /* min position X of the ball */
+#define BALL_XMAX 370 /* max position X of the ball */
+#define BALL_VELX 5. /* horizontal ball velocity */
+#define BALL_VYMIN 11. /* min ground speed */
+#define BALL_MAX_P 60 /* max number of balls */
+
+#define BALL_GROUP 2 /* task group of the balls */
Index: demos/branches/xen/jumpball/rrn.c
===================================================================
--- demos/branches/xen/jumpball/rrn.c (nonexistent)
+++ demos/branches/xen/jumpball/rrn.c (revision 1684)
@@ -0,0 +1,218 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Paolo Gai <pj@gandalf.sssup.it>
+ * Tullio Facchinetti <tullio.facchinetti@unipv.it>
+ * (see the web pages for full authors list)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/**
+ ------------
+ CVS : $Id: rrn.c,v 1.9 2006-03-09 14:17:03 tullio Exp $
+
+ File: $File$
+ Revision: $Revision: 1.9 $
+ Last update: $Date: 2006-03-09 14:17:03 $
+ ------------
+**/
+
+/*
+ * Copyright (C) 2003 Paolo Gai
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+#include "kernel/kern.h"
+#include "intdrive/intdrive/intdrive.h"
+#include "edf/edf/edf.h"
+#include "rr/rr/rr.h"
+#include "rrsoft/rrsoft/rrsoft.h"
+#include "dummy/dummy/dummy.h"
+
+#include "sem/sem/sem.h"
+#include "hartport/hartport/hartport.h"
+#include "cabs/cabs/cabs.h"
+
+#include "nop/nop/nop.h"
+
+#include <drivers/shark_linuxc26.h>
+#include <drivers/shark_pci26.h>
+#include <drivers/shark_input26.h>
+#include <drivers/shark_keyb26.h>
+#include <drivers/shark_fb26.h>
+
+#define FRAME_BUFFER_DEVICE 0
+
+/*+ sysyem tick in us +*/
+#define TICK 0
+
+/*+ RR tick in us +*/
+#define RRTICK 2000
+
+/*+ Interrupt Server +*/
+#define INTDRIVE_Q 1000
+#define INTDRIVE_U 0.1*MAX_BANDWIDTH
+#define INTDRIVE_FLAG 0
+
+void call_shutdown_task(void *arg);
+int device_drivers_init();
+int device_drivers_close();
+void set_shutdown_task();
+TASK shutdown_task_body(void *arg);
+
+PID shutdown_task_PID = -1;
+
+TIME __kernel_register_levels__(void *arg)
+{
+ struct multiboot_info *mb = (struct multiboot_info *)arg;
+
+ INTDRIVE_register_level(INTDRIVE_Q, INTDRIVE_Q, INTDRIVE_U, INTDRIVE_FLAG);
+ RR_register_level(RRTICK, RR_MAIN_NO, mb); // this module remains empty!!!
+ RRSOFT_register_level(RRTICK, RR_MAIN_NO, mb, RRSOFT_ONLY_HARD|RRSOFT_ONLY_SOFT);
+ RR_register_level(RRTICK, RR_MAIN_YES, mb);
+ dummy_register_level();
+
+ SEM_register_module();
+
+ CABS_register_module();
+
+ NOP_register_module();
+
+ return TICK;
+}
+
+TASK __init__(void *arg)
+{
+ struct multiboot_info *mb = (struct multiboot_info *)arg;
+
+ HARTPORT_init();
+
+ set_shutdown_task();
+
+ device_drivers_init();
+
+ sys_atrunlevel(call_shutdown_task, NULL, RUNLEVEL_SHUTDOWN);
+
+ __call_main__(mb);
+
+ return (void *)0;
+}
+
+void set_shutdown_task() {
+
+ NRT_TASK_MODEL nrt;
+
+ nrt_task_default_model(nrt);
+ nrt_task_def_system(nrt);
+
+ shutdown_task_PID = task_create("Shutdown Task",shutdown_task_body,&nrt,NULL);
+ if (shutdown_task_PID == NIL) {
+ sys_shutdown_message("Error: Cannot create shutdown task\n");
+ exit(1);
+ }
+
+}
+
+int device_drivers_init() {
+
+ int res;
+ KEYB_PARMS kparms = BASE_KEYB;
+
+ LINUXC26_register_module(TRUE);
+
+ PCI26_init();
+
+ INPUT26_init();
+
+ keyb_def_ctrlC(kparms, NULL);
+
+ KEYB26_init(&kparms);
+
+ FB26_init();
+
+ res = FB26_open(FRAME_BUFFER_DEVICE);
+ if (res) {
+ cprintf("Error: Cannot open graphical mode\n");
+ KEYB26_close();
+ INPUT26_close();
+ exit(1);
+ }
+
+ FB26_use_grx(FRAME_BUFFER_DEVICE);
+
+ FB26_setmode(FRAME_BUFFER_DEVICE,"640x480-16");
+
+ return 0;
+
+}
+
+int device_drivers_close() {
+
+ FB26_close(FRAME_BUFFER_DEVICE);
+
+ KEYB26_close();
+
+ INPUT26_close();
+
+ return 0;
+
+}
+
+#define SHUTDOWN_TIMEOUT_SEC 3
+
+void call_shutdown_task(void *arg)
+{
+ struct timespec t;
+
+ sys_gettime(&t);
+ t.tv_sec += SHUTDOWN_TIMEOUT_SEC;
+
+ /* Emergency timeout to exit from RUNLEVEL_SHUTDOWN */
+ kern_event_post(&t,(void *)((void *)sys_abort_shutdown),(void *)0);
+
+ task_activate(shutdown_task_PID);
+}
+
+TASK shutdown_task_body(void *arg) {
+
+ device_drivers_close();
+
+ sys_shutdown_message("-- S.Ha.R.K. Closed --\n");
+
+ return NULL;
+
+}
+
+void app_mutex_init(mutex_t *m)
+{
+ NOP_mutexattr_t attr;
+
+ NOP_mutexattr_default(attr);
+
+ mutex_init(m, &attr);
+}
+
Index: demos/branches/xen/jumpball/rrp.c
===================================================================
--- demos/branches/xen/jumpball/rrp.c (nonexistent)
+++ demos/branches/xen/jumpball/rrp.c (revision 1684)
@@ -0,0 +1,218 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Paolo Gai <pj@gandalf.sssup.it>
+ * Tullio Facchinetti <tullio.facchinetti@unipv.it>
+ * (see the web pages for full authors list)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/**
+ ------------
+ CVS : $Id: rrp.c,v 1.9 2006-03-09 14:17:03 tullio Exp $
+
+ File: $File$
+ Revision: $Revision: 1.9 $
+ Last update: $Date: 2006-03-09 14:17:03 $
+ ------------
+**/
+
+/*
+ * Copyright (C) 2003 Paolo Gai
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+#include "kernel/kern.h"
+#include "intdrive/intdrive/intdrive.h"
+#include "edf/edf/edf.h"
+#include "rr/rr/rr.h"
+#include "rrsoft/rrsoft/rrsoft.h"
+#include "dummy/dummy/dummy.h"
+
+#include "sem/sem/sem.h"
+#include "hartport/hartport/hartport.h"
+#include "cabs/cabs/cabs.h"
+
+#include "pi/pi/pi.h"
+
+#include <drivers/shark_linuxc26.h>
+#include <drivers/shark_pci26.h>
+#include <drivers/shark_input26.h>
+#include <drivers/shark_keyb26.h>
+#include <drivers/shark_fb26.h>
+
+#define FRAME_BUFFER_DEVICE 0
+
+/*+ sysyem tick in us +*/
+#define TICK 0
+
+/*+ RR tick in us +*/
+#define RRTICK 2000
+
+/*+ Interrupt Server +*/
+#define INTDRIVE_Q 1000
+#define INTDRIVE_U 0.1*MAX_BANDWIDTH
+#define INTDRIVE_FLAG 0
+
+void call_shutdown_task(void *arg);
+int device_drivers_init();
+int device_drivers_close();
+void set_shutdown_task();
+TASK shutdown_task_body(void *arg);
+
+PID shutdown_task_PID = -1;
+
+TIME __kernel_register_levels__(void *arg)
+{
+ struct multiboot_info *mb = (struct multiboot_info *)arg;
+
+ INTDRIVE_register_level(INTDRIVE_Q, INTDRIVE_Q, INTDRIVE_U, INTDRIVE_FLAG);
+ RRSOFT_register_level(RRTICK, RR_MAIN_NO, mb, RRSOFT_ONLY_HARD);
+ RRSOFT_register_level(RRTICK, RR_MAIN_NO, mb, RRSOFT_ONLY_SOFT);
+ RR_register_level(RRTICK, RR_MAIN_YES, mb);
+ dummy_register_level();
+
+ SEM_register_module();
+
+ CABS_register_module();
+
+ PI_register_module();
+
+ return TICK;
+}
+
+TASK __init__(void *arg)
+{
+ struct multiboot_info *mb = (struct multiboot_info *)arg;
+
+ HARTPORT_init();
+
+ set_shutdown_task();
+
+ device_drivers_init();
+
+ sys_atrunlevel(call_shutdown_task, NULL, RUNLEVEL_SHUTDOWN);
+
+ __call_main__(mb);
+
+ return (void *)0;
+}
+
+void set_shutdown_task() {
+
+ NRT_TASK_MODEL nrt;
+
+ nrt_task_default_model(nrt);
+ nrt_task_def_system(nrt);
+
+ shutdown_task_PID = task_create("Shutdown Task",shutdown_task_body,&nrt,NULL);
+ if (shutdown_task_PID == NIL) {
+ sys_shutdown_message("Error: Cannot create shutdown task\n");
+ exit(1);
+ }
+
+}
+
+int device_drivers_init() {
+
+ int res;
+ KEYB_PARMS kparms = BASE_KEYB;
+
+ LINUXC26_register_module(TRUE);
+
+ PCI26_init();
+
+ INPUT26_init();
+
+ keyb_def_ctrlC(kparms, NULL);
+
+ KEYB26_init(&kparms);
+
+ FB26_init();
+
+ res = FB26_open(FRAME_BUFFER_DEVICE);
+ if (res) {
+ cprintf("Error: Cannot open graphical mode\n");
+ KEYB26_close();
+ INPUT26_close();
+ exit(1);
+ }
+
+ FB26_use_grx(FRAME_BUFFER_DEVICE);
+
+ FB26_setmode(FRAME_BUFFER_DEVICE,"640x480-16");
+
+ return 0;
+
+}
+
+int device_drivers_close() {
+
+ FB26_close(FRAME_BUFFER_DEVICE);
+
+ KEYB26_close();
+
+ INPUT26_close();
+
+ return 0;
+
+}
+
+#define SHUTDOWN_TIMEOUT_SEC 3
+
+void call_shutdown_task(void *arg)
+{
+ struct timespec t;
+
+ sys_gettime(&t);
+ t.tv_sec += SHUTDOWN_TIMEOUT_SEC;
+
+ /* Emergency timeout to exit from RUNLEVEL_SHUTDOWN */
+ kern_event_post(&t,(void *)((void *)sys_abort_shutdown),(void *)0);
+
+ task_activate(shutdown_task_PID);
+}
+
+TASK shutdown_task_body(void *arg) {
+
+ device_drivers_close();
+
+ sys_shutdown_message("-- S.Ha.R.K. Closed --\n");
+
+ return NULL;
+
+}
+
+void app_mutex_init(mutex_t *m)
+{
+ PI_mutexattr_t attr;
+
+ PI_mutexattr_default(attr);
+
+ mutex_init(m, &attr);
+}
+
Index: demos/branches/xen/jumpball/ecp.c
===================================================================
--- demos/branches/xen/jumpball/ecp.c (nonexistent)
+++ demos/branches/xen/jumpball/ecp.c (revision 1684)
@@ -0,0 +1,216 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Paolo Gai <pj@gandalf.sssup.it>
+ * Tullio Facchinetti <tullio.facchinetti@unipv.it>
+ * (see the web pages for full authors list)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/**
+ ------------
+ CVS : $Id: ecp.c,v 1.9 2006-03-09 14:17:03 tullio Exp $
+
+ File: $File$
+ Revision: $Revision: 1.9 $
+ Last update: $Date: 2006-03-09 14:17:03 $
+ ------------
+**/
+
+/*
+ * Copyright (C) 2003 Paolo Gai
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+#include "kernel/kern.h"
+#include "intdrive/intdrive/intdrive.h"
+#include "edf/edf/edf.h"
+#include "cbs/cbs/cbs.h"
+#include "rr/rr/rr.h"
+#include "dummy/dummy/dummy.h"
+
+#include "sem/sem/sem.h"
+#include "hartport/hartport/hartport.h"
+#include "cabs/cabs/cabs.h"
+
+#include "pi/pi/pi.h"
+
+#include <drivers/shark_linuxc26.h>
+#include <drivers/shark_pci26.h>
+#include <drivers/shark_input26.h>
+#include <drivers/shark_keyb26.h>
+#include <drivers/shark_fb26.h>
+
+#define FRAME_BUFFER_DEVICE 0
+
+/*+ sysyem tick in us +*/
+#define TICK 0
+
+/*+ RR tick in us +*/
+#define RRTICK 2000
+
+/*+ Interrupt Server +*/
+#define INTDRIVE_Q 1000
+#define INTDRIVE_U 0.1*MAX_BANDWIDTH
+#define INTDRIVE_FLAG 0
+
+void call_shutdown_task(void *arg);
+int device_drivers_init();
+int device_drivers_close();
+void set_shutdown_task();
+TASK shutdown_task_body(void *arg);
+
+PID shutdown_task_PID = -1;
+
+TIME __kernel_register_levels__(void *arg)
+{
+ struct multiboot_info *mb = (struct multiboot_info *)arg;
+ LEVEL EDF_level;
+
+ INTDRIVE_register_level(INTDRIVE_Q, INTDRIVE_Q, INTDRIVE_U, INTDRIVE_FLAG);
+ EDF_level = EDF_register_level(EDF_ENABLE_ALL);
+ CBS_register_level(CBS_ENABLE_ALL, EDF_level);
+ RR_register_level(RRTICK, RR_MAIN_YES, mb);
+ dummy_register_level();
+
+ SEM_register_module();
+ CABS_register_module();
+ PI_register_module();
+
+ return TICK;
+}
+
+TASK __init__(void *arg)
+{
+ struct multiboot_info *mb = (struct multiboot_info *)arg;
+
+ HARTPORT_init();
+
+ set_shutdown_task();
+
+ device_drivers_init();
+
+ sys_atrunlevel(call_shutdown_task, NULL, RUNLEVEL_SHUTDOWN);
+
+ __call_main__(mb);
+
+ return (void *)0;
+}
+
+void set_shutdown_task() {
+
+ NRT_TASK_MODEL nrt;
+
+ nrt_task_default_model(nrt);
+ nrt_task_def_system(nrt);
+
+ shutdown_task_PID = task_create("Shutdown Task",shutdown_task_body,&nrt,NULL);
+ if (shutdown_task_PID == NIL) {
+ sys_shutdown_message("Error: Cannot create shutdown task\n");
+ exit(1);
+ }
+
+}
+
+int device_drivers_init() {
+
+ int res;
+ KEYB_PARMS kparms = BASE_KEYB;
+
+ LINUXC26_register_module(TRUE);
+
+ PCI26_init();
+
+ INPUT26_init();
+
+ keyb_def_ctrlC(kparms, NULL);
+
+ KEYB26_init(&kparms);
+
+ FB26_init();
+
+ res = FB26_open(FRAME_BUFFER_DEVICE);
+ if (res) {
+ cprintf("Error: Cannot open graphical mode\n");
+ KEYB26_close();
+ INPUT26_close();
+ exit(1);
+ }
+
+ FB26_use_grx(FRAME_BUFFER_DEVICE);
+
+ FB26_setmode(FRAME_BUFFER_DEVICE,"640x480-16");
+
+ return 0;
+
+}
+
+int device_drivers_close() {
+
+ FB26_close(FRAME_BUFFER_DEVICE);
+
+ KEYB26_close();
+
+ INPUT26_close();
+
+ return 0;
+
+}
+
+#define SHUTDOWN_TIMEOUT_SEC 3
+
+void call_shutdown_task(void *arg)
+{
+ struct timespec t;
+
+ sys_gettime(&t);
+ t.tv_sec += SHUTDOWN_TIMEOUT_SEC;
+
+ /* Emergency timeout to exit from RUNLEVEL_SHUTDOWN */
+ kern_event_post(&t,(void *)((void *)sys_abort_shutdown),(void *)0);
+
+ task_activate(shutdown_task_PID);
+}
+
+TASK shutdown_task_body(void *arg) {
+
+ device_drivers_close();
+
+ sys_shutdown_message("-- S.Ha.R.K. Closed --\n");
+
+ return NULL;
+
+}
+
+void app_mutex_init(mutex_t *m)
+{
+ PI_mutexattr_t attr;
+
+ PI_mutexattr_default(attr);
+
+ mutex_init(m, &attr);
+}
Index: demos/branches/xen/jumpball/ball.c
===================================================================
--- demos/branches/xen/jumpball/ball.c (nonexistent)
+++ demos/branches/xen/jumpball/ball.c (revision 1684)
@@ -0,0 +1,246 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Paolo Gai <pj@gandalf.sssup.it>
+ * (see the web pages for full authors list)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/**
+ ------------
+ CVS : $Id: ball.c,v 1.8 2005-05-10 17:21:17 mauro Exp $
+
+ File: $File$
+ Revision: $Revision: 1.8 $
+ Last update: $Date: 2005-05-10 17:21:17 $
+ ------------
+**/
+
+/*
+ * Copyright (C) 2000 Paolo Gai
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+/*--------------------------------------------------------------*/
+/* SIMULATION OF JUMPING BALLS */
+/*--------------------------------------------------------------*/
+
+#include "demo.h"
+#include <kernel/func.h>
+#include <stdlib.h>
+
+#define R 8 /* dimension of a ball */
+#define G 9.8 /* acceleration of gravity */
+
+static int ballexit = 0;
+static int npc = 0; /* number of tasks created */
+
+/*--------------------------------------------------------------*/
+/* Delay function for jumping balls */
+/*--------------------------------------------------------------*/
+
+void my_delay(void)
+{
+ int xxx;
+ for (xxx=0; xxx<BALL_DELAY; xxx++);
+}
+
+/*--------------------------------------------------------------*/
+/* Periodic task for ball simulation */
+/*--------------------------------------------------------------*/
+
+TASK palla(int i)
+{
+int x, y; /* coordinate grafiche pallina */
+int ox, oy; /* vecchia posizione pallina */
+int x0, y0; /* posizione iniziale X pallina */
+float vx, vy; /* velocit… della pallina */
+float vy0; /* velocita' pallina al primo rimbalzo */
+float ty, tx; /* variabile temporale */
+float dt; /* incremento temporale */
+
+ y = oy = y0 = BALL_HEIGHT;
+ x = ox = x0 = BALL_XMIN;
+
+ vy0= sqrt(2. * G * (float)BALL_HEIGHT);
+ vy = 0;
+ vx = BALL_VELX + myrand(9);
+ tx = 0;
+ ty = 0;
+ dt = ((float)PERIOD_BALL)/100000;
+
+ while (1) {
+ y = y0 + vy*ty - .5*G*ty*ty;
+ x = x0 + vx * tx;
+
+ if (y < 0) {
+ y = 0;
+
+ if (vy == 0.0)
+ vy = vy0;
+ else if (vy < BALL_VYMIN)
+ vy = vy0 * (1.0 - myrand(50)/100.0);
+ else
+ vy = 0.9 * vy;
+
+ ty = 0.0;
+ y0 = 0;
+ }
+
+ if (x > BALL_XMAX) {
+ tx = 0.0;
+ x0 = BALL_XMAX;
+ vx = -vx;
+ x = x0 + vx * tx;
+ }
+
+ if (x < BALL_XMIN) {
+ tx = 0.0;
+ x0 = BALL_XMIN;
+ vx = -vx;
+ x = x0 + vx * tx;
+ }
+
+ mutex_lock(&mutex);
+ grx_disc(ox, oy, R, 0);
+ ox = x;
+ oy = BALL_Y - y;
+ mutex_unlock(&mutex);
+
+ if (ballexit && i!=0xFFFF) {
+ npc--;
+ return 0;
+ }
+
+ mutex_lock(&mutex);
+ grx_disc(ox, oy, R, i);
+ mutex_unlock(&mutex);
+
+ my_delay();
+
+ ty += dt;
+ tx += dt;
+ task_endcycle();
+ }
+}
+
+void killball(KEY_EVT *k)
+{
+ ballexit = 1;
+}
+
+void ballfun(KEY_EVT *k)
+{
+ SOFT_TASK_MODEL mp;
+ int r,g,b;
+ PID pid;
+ char palla_str[]="palla ";
+
+ if (npc == BALL_MAX_P) return;
+
+ ballexit = 0;
+
+ r = 64 + myrand(190);
+ g = 64 + myrand(190);
+ b = 64 + myrand(190);
+
+ itoa(npc,palla_str+5);
+
+ soft_task_default_model(mp);
+ soft_task_def_level(mp,2);
+ soft_task_def_ctrl_jet(mp);
+ soft_task_def_arg(mp, (void *)rgb16(r,g,b));
+ soft_task_def_group(mp, BALL_GROUP);
+ soft_task_def_met(mp, WCET_BALL);
+ soft_task_def_period(mp,PERIOD_BALL);
+ soft_task_def_usemath(mp);
+ pid = task_create(palla_str, palla, &mp, NULL);
+
+ if (pid != NIL) {
+ task_activate(pid);
+ npc++;
+ }
+}
+
+void hardball()
+{
+ HARD_TASK_MODEL mp;
+ int r,g,b;
+ PID pid;
+
+ r = 255;
+ g = 255;
+ b = 255;
+
+ hard_task_default_model(mp);
+ hard_task_def_ctrl_jet(mp);
+ hard_task_def_arg(mp, (void *)rgb16(r,g,b));
+ hard_task_def_wcet(mp, WCET_HARD_BALL);
+ hard_task_def_mit(mp,PERIOD_BALL);
+ hard_task_def_usemath(mp);
+ pid = task_create("pallaEDF", palla, &mp, NULL);
+ if (pid == NIL) {
+ sys_shutdown_message("Could not create task <pallaEDF>");
+ exit(1);
+ }
+ else
+ task_activate(pid);
+}
+
+
+/*--------------------------------------------------------------*/
+/* MAIN process */
+/*--------------------------------------------------------------*/
+
+void scenario_ball()
+{
+ grx_text("Noise", 0, 45 /*BALL_Y-BALL_HEIGHT-15*/, rgb16(0,0,255), black);
+ grx_line(0,55,383,55,red);
+ grx_rect(BALL_XMIN-R-1, BALL_Y-BALL_HEIGHT-R-1,
+ BALL_XMAX+R+1, BALL_Y+R+1, rgb16(0,200,0));
+}
+
+void init_ball(void)
+{
+ KEY_EVT k;
+
+ hardball();
+
+ k.flag = 0;
+ k.scan = KEY_SPC;
+ k.ascii = ' ';
+ k.status = KEY_PRESSED;
+ keyb_hook(k,ballfun,FALSE);
+
+ k.flag = 0;
+ k.scan = KEY_BKS;
+ k.ascii = 0;
+ k.status = KEY_PRESSED;
+ keyb_hook(k,killball,FALSE);
+}
+
+/*--------------------------------------------------------------*/
Index: demos/branches/xen/jumpball/demo.c
===================================================================
--- demos/branches/xen/jumpball/demo.c (nonexistent)
+++ demos/branches/xen/jumpball/demo.c (revision 1684)
@@ -0,0 +1,198 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Paolo Gai <pj@gandalf.sssup.it>
+ * (see the web pages for full authors list)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/**
+ ------------
+ CVS : $Id: demo.c,v 1.8 2005-01-08 14:35:17 pj Exp $
+
+ File: $File$
+ Revision: $Revision: 1.8 $
+ Last update: $Date: 2005-01-08 14:35:17 $
+ ------------
+**/
+
+/*
+ * Copyright (C) 2000-2003 Paolo Gai
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+#include "demo.h"
+#include <kernel/func.h>
+#include <string.h>
+#include <stdlib.h>
+
+/* useful colors... */
+int white;
+int black;
+int red;
+int gray;
+
+void app_mutex_init(mutex_t *m);
+
+static void version( void )
+{
+ cprintf( "S.Ha.R.K. Jumpball Demo 1.0\n" );
+ cprintf( "---------------------------\n" );
+ cprintf( "by Paolo Gai 1999-2001\n" );
+ cprintf( " <pj@sssup.it>\n" );
+ cprintf( "---------------------------\n" );
+}
+
+int myrand(int x)
+{
+ return rand()%x;
+}
+
+void reverse(char s[])
+{
+ int c, i, j;
+
+ for (i = 0, j = strlen(s)-1; i<j; i++, j--)
+ {
+ c = s[i];
+ s[i] = s[j];
+ s[j] = c;
+ }
+}
+
+char * itoa(int n, char *s)
+{
+ int i, sign;
+
+ if ((sign = n) < 0)
+ n = -n;
+
+ i = 0;
+
+ do
+ {
+ s[i++] = n % 10 + '0';
+ } while ((n /= 10) > 0);
+
+ if (sign < 0)
+ s[i++] = '-';
+
+ s[i] = 0;
+
+ reverse(s);
+
+ return s;
+}
+
+
+void scenario()
+{
+ grx_text("S.Ha.R.K. Jumpball Demo 1.0", 0, 0, rgb16(0,255,0), black );
+ grx_text(" by Paolo Gai 1999-2001" , 0, 8, rgb16(0,255,0), black );
+ grx_text(" pj@sssup.it" , 0,16, rgb16(0,255,0), black );
+
+ grx_text("Ctrl-C, Ctrr-C, Enter: exit" ,320, 0, gray, black );
+ grx_text("Alt-C : void statistics" ,320, 8, gray, black );
+ grx_text("Space : create noise ball",320,16, gray, black );
+ grx_text("Backspace : kill noise balls" ,320,24, gray, black );
+
+
+ #ifdef JET_ON
+ scenario_jetcontrol();
+ #endif
+
+ #ifdef BALL_ON
+ scenario_ball();
+ #endif
+}
+
+void endfun(KEY_EVT *k)
+{
+ exit(0);
+}
+
+void zerofun(KEY_EVT *k)
+{
+ int i;
+ for (i=0; i<MAX_PROC; i++) jet_delstat(i);
+}
+
+int main(int argc, char **argv)
+{
+
+ KEY_EVT k;
+
+ version();
+
+ srand(4);
+
+ k.flag = CNTR_BIT;
+ k.scan = KEY_C;
+ k.ascii = 'c';
+ k.status = KEY_PRESSED;
+ keyb_hook(k,endfun,FALSE);
+ k.flag = CNTL_BIT;
+ k.scan = KEY_C;
+ k.ascii = 'c';
+ k.status = KEY_PRESSED;
+ keyb_hook(k,endfun,FALSE);
+ k.flag = ALTL_BIT;
+ k.scan = KEY_C;
+ k.ascii = 'c';
+ k.status = KEY_PRESSED;
+ keyb_hook(k,zerofun,FALSE);
+ k.flag = 0;
+ k.scan = KEY_ENT;
+ k.ascii = 13;
+ k.status = KEY_PRESSED;
+ keyb_hook(k,endfun,FALSE);
+
+ /* init the graphic mutex */
+ app_mutex_init(&mutex);
+
+ /* useful colors ... */
+ white = rgb16(255,255,255);
+ black = rgb16(0,0,0);
+ red = rgb16(255,0,0);
+ gray = rgb16(128,128,128);
+
+ scenario();
+
+ #ifdef JET_ON
+ init_jetcontrol();
+ #endif
+
+ #ifdef BALL_ON
+ init_ball();
+ #endif
+
+ group_activate(1);
+
+ return 0;
+}
+
+
Index: demos/branches/xen/jumpball/jetctrl.c
===================================================================
--- demos/branches/xen/jumpball/jetctrl.c (nonexistent)
+++ demos/branches/xen/jumpball/jetctrl.c (revision 1684)
@@ -0,0 +1,236 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Paolo Gai <pj@gandalf.sssup.it>
+ * (see the web pages for full authors list)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/**
+ ------------
+ CVS : $Id: jetctrl.c,v 1.5 2005-01-08 14:35:17 pj Exp $
+
+ File: $File$
+ Revision: $Revision: 1.5 $
+ Last update: $Date: 2005-01-08 14:35:17 $
+ ------------
+**/
+
+/*
+ * Copyright (C) 2000 Paolo Gai
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+
+// JetControl
+
+#include "demo.h"
+#include "kernel/func.h"
+
+TASK jetdummy_task(void *arg)
+{
+ TIME now_dummy, last_dummy, diff_dummy, slice;
+ struct timespec now, last, diff;
+ int x = 0;
+ int height;
+
+ NULL_TIMESPEC(&last);
+ last_dummy = 0;
+ for (;;) {
+ task_nopreempt();
+ jet_getstat(DUMMY_PID, NULL, NULL, NULL, &now_dummy);
+ sys_gettime(&now);
+ task_preempt();
+
+ SUBTIMESPEC(&now, &last, &diff);
+ slice = diff.tv_sec * 1000000 + diff.tv_nsec/1000;
+ diff_dummy = now_dummy - last_dummy;
+
+ height = (int)(JET_DUMMY_HEIGHT*((float)diff_dummy)/((float)slice));
+
+ TIMESPEC_ASSIGN(&last, &now);
+ last_dummy = now_dummy;
+
+ grx_line(JET_DUMMY_X+x,JET_DUMMY_Y,
+ JET_DUMMY_X+x,JET_DUMMY_Y+height ,black);
+ grx_line(JET_DUMMY_X+x,JET_DUMMY_Y+height,
+ JET_DUMMY_X+x,JET_DUMMY_Y+JET_DUMMY_HEIGHT,white);
+ grx_line(JET_DUMMY_X+(x+1)%JET_DUMMY_WIDTH,JET_DUMMY_Y,
+ JET_DUMMY_X+(x+1)%JET_DUMMY_WIDTH,JET_DUMMY_Y+JET_DUMMY_HEIGHT,255);
+
+ x = (x+1)%JET_DUMMY_WIDTH;
+
+ task_endcycle();
+ }
+}
+
+
+TASK jetctrl_task(void *arg)
+{
+ char st[50];
+ TIME sum, max;
+ int n;
+
+ PID i;
+ int printed = 0;
+
+ for (;;) {
+ for (i=2, printed=0; i<MAX_PROC && printed<JET_NTASK; i++) {
+ if (jet_getstat(i, &sum, &max, &n, NULL) != -1) {
+ if (!n) n=1;
+ sprintf(st, "%6d %6d %10s", (int)sum/n, (int)max, proc_table[i].name);
+ grx_text(st, 384, JET_Y_NAME+16+printed*8, gray, black);
+ printed++;
+ }
+ }
+ while (printed<JET_NTASK) {
+ grx_text(" ",
+ 384, JET_Y_NAME+16+printed*8, gray, black);
+ printed++;
+ }
+ task_endcycle();
+ }
+}
+
+TASK jetslide_task(void *arg)
+{
+ TIME sum, curr, max;
+
+ TIME total[JET_NTASK];
+ int slides[JET_NTASK];
+
+ PID i;
+ int printed = 0;
+
+ for (;;) {
+ // Fill the total array in a nonpreemptive section
+ task_nopreempt();
+ for (i=2, printed=0; i<MAX_PROC && printed<JET_NTASK; i++) {
+ if (jet_getstat(i, &sum, NULL, NULL, &curr) != -1) {
+ total[printed] = sum+curr;
+ printed++;
+ }
+ }
+ task_preempt();
+
+ while (printed < JET_NTASK)
+ total[printed++] = 0;
+
+ // Compute the Max elapsed time
+ max = 0;
+ for (i=0; i<JET_NTASK; i++)
+ if (total[i] > max) max = total[i];
+ if (!max) max = 1;
+
+ // Compute the slides width
+ for (i=0; i<JET_NTASK; i++)
+ slides[i] = (int)( (((float)total[i])/max) * JET_SLIDE_WIDTH);
+
+ // print the data
+ for (i=0; i<JET_NTASK; i++) {
+ grx_box(JET_SLIDE_X, JET_Y_NAME+16+i*8,
+ JET_SLIDE_X+slides[i], JET_Y_NAME+23+i*8, gray);
+ grx_box(JET_SLIDE_X+slides[i], JET_Y_NAME+16+i*8,
+ JET_SLIDE_X+JET_SLIDE_WIDTH, JET_Y_NAME+23+i*8, black);
+ }
+
+ while (i<JET_NTASK) {
+ grx_box(JET_SLIDE_X, JET_Y_NAME+16+i*8,
+ JET_SLIDE_X+JET_SLIDE_WIDTH, JET_Y_NAME+20+i*8, black);
+ i++;
+ }
+ task_endcycle();
+ }
+}
+
+
+void scenario_jetcontrol(void)
+{
+ grx_text("System load" , 384, 45, rgb16(0,0,255), black);
+ grx_line(384,55,639,55,red);
+
+ grx_text(" Mean Max Name Slide", 384, JET_Y_NAME, gray, black);
+ grx_line(384,JET_Y_NAME+10,639,JET_Y_NAME+10,gray);
+
+ grx_rect(JET_DUMMY_X-1, JET_DUMMY_Y-1,
+ JET_DUMMY_X+JET_DUMMY_WIDTH, JET_DUMMY_Y+JET_DUMMY_HEIGHT+1, gray);
+
+ grx_text("100%", JET_DUMMY_X-40, JET_DUMMY_Y, gray, black);
+ grx_text(" 0%", JET_DUMMY_X-40, JET_DUMMY_Y+JET_DUMMY_HEIGHT-8, gray, black);
+
+ grx_line(JET_DUMMY_X-1, JET_DUMMY_Y, JET_DUMMY_X-5, JET_DUMMY_Y, gray);
+ grx_line(JET_DUMMY_X-1, JET_DUMMY_Y+JET_DUMMY_HEIGHT, JET_DUMMY_X-5, JET_DUMMY_Y+JET_DUMMY_HEIGHT, gray);
+}
+
+void init_jetcontrol(void)
+{
+ SOFT_TASK_MODEL m3, m4, m5;
+
+ PID p3, p4, p5;
+
+ soft_task_default_model(m3);
+ soft_task_def_level(m3,2);
+ soft_task_def_period(m3, PERIOD_JETCTRL);
+ soft_task_def_met(m3, WCET_JETCTRL);
+ soft_task_def_ctrl_jet(m3);
+ soft_task_def_group(m3, 1);
+ p3 = task_create("jctrl", jetctrl_task, &m3, NULL);
+ if (p3 == -1) {
+ sys_shutdown_message("Could not create task <jetctrl> errno=%d",
+ errno);
+ exit(1);
+ }
+
+ soft_task_default_model(m4);
+ soft_task_def_level(m4,2);
+ soft_task_def_period(m4, PERIOD_JETDUMMY);
+ soft_task_def_met(m4, WCET_JETDUMMY);
+ soft_task_def_group(m4, 1);
+ soft_task_def_usemath(m4);
+ soft_task_def_ctrl_jet(m4);
+ p4 = task_create("jdmy", jetdummy_task, &m4, NULL);
+ if (p4 == -1) {
+ sys_shutdown_message("Could not create task <jetdummy> errno=%d",
+ errno);
+ exit(1);
+ }
+
+ soft_task_default_model(m5);
+ soft_task_def_level(m5,2);
+ soft_task_def_period(m5, PERIOD_JETSLIDE);
+ soft_task_def_met(m5, WCET_JETSLIDE);
+ soft_task_def_group(m5, 1);
+ soft_task_def_usemath(m5);
+ soft_task_def_ctrl_jet(m5);
+ p5 = task_create("jsli", jetslide_task, &m5, NULL);
+ if (p5 == -1) {
+ sys_shutdown_message("Could not create task <jetslide> errno=%d",
+ errno);
+ exit(1);
+ }
+}
+
Index: demos/branches/xen/jumpball/makefile
===================================================================
--- demos/branches/xen/jumpball/makefile (nonexistent)
+++ demos/branches/xen/jumpball/makefile (revision 1684)
@@ -0,0 +1,24 @@
+#
+#
+#
+
+ifndef BASE
+BASE=../..
+endif
+include $(BASE)/config/config.mk
+
+PROGS= ecp ern rrp rrn
+
+include $(BASE)/config/example.mk
+
+ecp:
+ make -f $(SUBMAKE) APP=ecp INIT= OTHEROBJS="demo.o ball.o jetctrl.o" OTHERINCL= SHARKOPT="__LINUXC26__ __PCI__ __INPUT__ __FB__"
+
+ern:
+ make -f $(SUBMAKE) APP=ern INIT= OTHEROBJS="demo.o ball.o jetctrl.o" OTHERINCL= SHARKOPT="__LINUXC26__ __PCI__ __INPUT__ __FB__"
+
+rrp:
+ make -f $(SUBMAKE) APP=rrp INIT= OTHEROBJS="demo.o ball.o jetctrl.o" OTHERINCL= SHARKOPT="__LINUXC26__ __PCI__ __INPUT__ __FB__"
+
+rrn:
+ make -f $(SUBMAKE) APP=rrn INIT= OTHEROBJS="demo.o ball.o jetctrl.o" OTHERINCL= SHARKOPT="__LINUXC26__ __PCI__ __INPUT__ __FB__"
Index: demos/branches/xen/jumpball/readme.txt
===================================================================
--- demos/branches/xen/jumpball/readme.txt (nonexistent)
+++ demos/branches/xen/jumpball/readme.txt (revision 1684)
@@ -0,0 +1,94 @@
+----------------------------------
+Jumping Balls demo
+
+by
+
+Paolo Gai 1999-2001 - pj@sssup.it
+
+----------------------------------
+
+This demo was created to show some S.Ha.R.K. functionalities in the course
+of Informatica Industriale , University of Pavia, Italy.
+
+The demo is composed by an application (derived by the template application
+distributed on the web site) and two init files.
+
+The demo is composed by:
+
+MAKEFILE The makefile used to compile the application;
+ demo is the rule to compile the application with a CBS scheduler
+ demo2 is the rule to compile the application with a RR scheduler
+README.TXT This file
+DEMO.H Some constants used into the demo
+ECP.C, ERN.C, RRP.C, RRN.C Various initfiles
+INITFIL2.C The EDF initfile
+INITFILE.C A makefile that cover either EDF+CBS and RR
+BALL.C The Jumping balls part of the demo
+DEMO.C The main() function and some other utility function
+JETCTRL.C The JET part of the demo
+
+The demo works as follows:
+- It works at 640x480 16 bit colors
+- on the left, there is the jumping ball arena, on the rigth there is the
+ statistics about the tasks into the system.
+
+- the tasks are guaranteed using CBS and EDF. The wcet and mean execution
+ time on my portable after a few minutes are (us):
+
+ JetCtrl 7400 max 7500 CBS met
+ JetDummy 135 max 200 CBS met
+ JetSlide 2100 max 2100 CBS met
+ Balls 276 max 380 EDF wcet for hard ball,100 CBS met for soft ones
+
+ The system should go overloaded with 40 soft balls.
+
+- The idea is the following:
+ - first, an edf guaranteed ball is created.
+ - then, create a set of soft ball using space. since their met is < than the
+ real met, they posticipate the deadlines.
+ - if they are killed, they remain for some seconds in the zombie state
+ - if a set of soft ball arde created (i.e., 10), and after a while all the
+ others are created, the bandwidth is fully used, and the task posticipate
+ their deadlines. the first set of tasks stops jumping when the bandwidth
+ is full utilized by the newest balls until all the tasks have similar
+ deadlines.
+ - Note on the left the slides that represents the relative ratio
+ between the tasks.
+ - Note that in overload conditions the EDF task is still guaranteed
+ - Note that PI is used with EDF, also if no theory says that it is good:
+ - S.Ha.R.K. allows that, it is the user that have to choose if that is
+ a non-sense
+ - PI is independent from the implemnentation of the scheduling modules
+ - if the second init file is used, RR is used instead of EDF+CBS.
+ - In overload condition RR perform differently from EDF+CBS, giving to
+ each task an equal fraction of bandwidth
+
+ - note also:
+ - the redefinition of the standard exception handler
+ - the redefinition of the keys and the initialization of the keyboard
+ - the myend exit function
+ - the main() that terminates
+ - the two parts (ball and jet) can be excluded using a #define
+
+If You have any question, please contact the author...
+
+Update (2003/12/19):
+Just some more notes...
+I usually show the four demos in the following order:
+
+(first of all, tune the demo depending on how fast your notebook is; see demo.h)
+
+ECP - EDF with CBS and PI... the white EDF ball still work also in overload; CBS balls just slow down but they still get their guaranteed bandwidth
+
+RRP - Round Robin with Priority inheritance ... the EDF ball is at the same level of the others, all slow down...
+
+RRN - 2 levels of Round Robin, without Priority inheritance ... when
+there is overload, the white ball works ok, but the other have an impredicible
+behavior (they execute many instances in one RR period)
+
+ERN - EDF, RR, no priority inheritance - the white ball misses his deadline
+just when there is an overload (all the other balls are queued on the same
+semaphore, so the blocking time increase, and when there is overload the EDF
+task misses also if it has not consumed his bandwidth). Note that it happens
+also if the EDF task consume just a few microseconds... Real time does not
+means "fast" :-)
Index: demos/branches/xen/bca/bca_lib.c
===================================================================
--- demos/branches/xen/bca/bca_lib.c (nonexistent)
+++ demos/branches/xen/bca/bca_lib.c (revision 1684)
@@ -0,0 +1,412 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Paolo Gai <pj@gandalf.sssup.it>
+ * Massimiliano Giorgi <massy@gandalf.sssup.it>
+ * Luca Abeni <luca@gandalf.sssup.it>
+ * (see the web pages for full authors list)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/* CVS : $Id: bca_lib.c,v 1.5 2006-07-03 15:34:08 tullio Exp $ */
+
+/*
+ * Copyright (C) 2000 Fabio Calabrese <fabiocalabrese77@yahoo.it>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+/****************************************************
+ * *
+ * file: BCA_LIB.c *
+ * libreria: BCA_LIB *
+ * creato da: Fabio CALABRESE *
+ * *
+ ****************************************************/
+
+#ifndef __BCA_LIB_c__
+#define __BCA_LIB_c__
+//-------------------BEGIN---------------------------
+
+// *** Librerie S.Ha.R.K ***
+#include<kernel/kern.h>
+
+#include<drivers/shark_fb26.h>
+
+// *** Librerie Standard C ***
+// *** Librerie FAB ***
+#include"fab_lib/fab_msg.h"
+// *** Librerie BCA ***
+#include"bca.h"
+
+char * titolo[10]={" UNIVERSITA' DEGLI \0",
+ " STUDI DI \0",
+ " PAVIA \0",
+ " S.Ha.R.K project \0",
+ " 'BaseContrAerea' \0",
+ "-------------------\0",
+ " PAVIA 2002 \0",
+ "by Fabio CALABRESE \0",
+ "<fabiocalabrese77 \0",
+ " @yahoo.it>\0"};
+
+void kern_alloc_images(); // richiede DISABLED_INTERUPTS
+void kern_free_images(); // richiede DISABLED_INTERUPTS
+void kern_load_images(); // solo in __kernel_register_levels__()
+
+void kern_alloc_borders(); // richiede DISABLED_INTERUPTS
+void kern_free_borders(); // richiede DISABLED_INTERUPTS
+void kern_set_border(); // consigliato in __kernel_register-levels__()
+
+void kern_alloc_frames(); // richiede DISABLED_INTERUPTS
+void kern_free_frames(); // richiede DISABLED_INTERUPTS
+void kern_set_frames(); // consigliato in __kernel_register-levels__()
+
+void kern_alloc_ballframes(); // richiede DISABLED_INTERUPTS
+void kern_free_ballframes(); // richiede DISABLED_INTERUPTS
+void kern_set_ballframes(); // consigliato in __kernel_register-levels__()
+
+void kern_alloc_task_tables(); // richiede DISABLED_INTERUPTS
+void kern_free_task_tables(); // richiede DISABLED_INTERUPTS
+void kern_set_task_tables(); // consigliato in __kernel_register-levels__()
+
+void kern_alloc_task_tables()
+{
+ int test=0,j;
+
+ FAB_print("TASKS'TABLES","allocazione...");
+ for (j=0; j<AEREO_N_MAX; j++) {
+ aereo_table[j].image=FAB_image_alloc(AEREO_LX,AEREO_LY);
+ if(aereo_table[j].image==NULL) test=1;
+ }
+ FAB_msg(test,"fatto","almeno un elemento della tabella non allocato");
+}
+void kern_free_task_tables()
+{ int j;
+
+ for (j=0; j<AEREO_N_MAX; j++) {
+ FAB_image_free(aereo_table[j].image);
+ }
+}
+void kern_set_task_tables()
+{ int j;
+
+ FAB_print(NULL,"settaggio...");
+ for (j=0; j<AEREO_N_MAX; j++) {
+ aereo_table[j].status = 0;
+ aereo_table[j].killing = 0;
+ aereo_table[j].image->trasparent = 1;
+ aereo_table[j].image->trasparent_col = AEREO_TRASPARENT_COL;
+ }
+
+ FAB_print(NULL,"fatto");
+}
+
+
+void kern_alloc_ballframes()
+{
+ int test=0,j;
+
+ FAB_print("FAB_BALLFRAMEs","allocazione...");
+ ballframe_radar = FAB_ballframe_alloc();
+ if (ballframe_radar==NULL) test=1;
+ for (j=0; j<3; j++) {
+ ballframe_lucerossa[j] = FAB_ballframe_alloc();
+ if (ballframe_lucerossa[j]==NULL) test=1;
+ }
+ FAB_msg(test,"fatto","almeno un ballframe non allocato");
+}
+void kern_free_ballframes()
+{ int j;
+
+ FAB_ballframe_free(ballframe_radar);
+ for (j=0; j<3; j++)
+ FAB_ballframe_free(ballframe_lucerossa[j]);
+}
+void kern_set_ballframes()
+{ int j;
+
+ FAB_print(NULL,"settaggio...");
+ FAB_ballframe_border_set(ballframe_radar,border_verde7,7,
+ FRAME_MISURE_LINE_COLOR);
+ FAB_ballframe_color_set(ballframe_radar,0,FAB_blue);
+ for(j=0; j<3; j++) {
+ FAB_ballframe_border_set(ballframe_lucerossa[j],border_verde7,7,
+ FRAME_MISURE_LINE_COLOR);
+ FAB_ballframe_color_set(ballframe_lucerossa[j],0,FAB_red);
+ }
+ FAB_print(NULL,"fatto");
+}
+
+void kern_alloc_frames()
+{
+ int test=0;
+
+ FAB_print("FAB_FRAMEs","allocazione...");
+ frame_bca = FAB_frame_alloc();
+ if (frame_bca==NULL) test=1;
+ frame_misure_oriz = FAB_frame_alloc();
+ if (frame_misure_oriz==NULL) test=1;
+ frame_misure_vert = FAB_frame_alloc();
+ if (frame_misure_vert==NULL) test=1;
+ frame_titolo = FAB_frame_alloc();
+ if (frame_titolo==NULL) test=1;
+ frame_comandi = FAB_frame_alloc();
+ if (frame_comandi==NULL) test=1;
+ frame_control = FAB_frame_alloc();
+ if (frame_control==NULL) test=1;
+
+ FAB_msg(test,"fatto","almeno un frame non allocato");
+}
+void kern_free_frames()
+{
+ FAB_frame_free(frame_bca);
+ FAB_frame_free(frame_misure_oriz);
+ FAB_frame_free(frame_misure_vert);
+ FAB_frame_free(frame_titolo);
+ FAB_frame_free(frame_comandi);
+ FAB_frame_free(frame_control);
+
+}
+
+void kern_set_frames()
+{
+ FAB_print(NULL,"settaggio...");
+ FAB_frame_border_set(frame_bca,border_blu7,7,FAB_rgb(255,0,0));
+ FAB_frame_color_set(frame_bca,0,image_bca,FAB_green);
+ FAB_frame_border_set(frame_misure_oriz,border_verde7,7,FRAME_MISURE_LINE_COLOR);
+ FAB_frame_color_set(frame_misure_oriz,0,NULL,FRAME_MISURE_BACK_COLOR);
+ FAB_frame_border_set(frame_misure_vert,border_verde7,7,FRAME_MISURE_LINE_COLOR);
+ FAB_frame_color_set(frame_misure_vert,0,NULL,FRAME_MISURE_BACK_COLOR);
+ FAB_frame_border_set(frame_titolo,border_bianco7,7,FAB_white);
+ FAB_frame_color_set(frame_titolo,0,NULL,FRAME_TITOLO_BACK_COLOR1);
+ FAB_frame_border_set(frame_comandi,border_giallo7,7,FAB_yellow);
+ FAB_frame_color_set(frame_comandi,0,NULL,FRAME_COMANDI_BACK_COLOR1);
+ FAB_frame_border_set(frame_control,border_verde7,7,FAB_green);
+ FAB_frame_color_set(frame_control,0,NULL,FRAME_CONTROL_BACK_COLOR);
+
+ FAB_print(NULL,"fatto");
+}
+
+void kern_alloc_borders()
+{
+ int test=0;
+
+ FAB_print("FAB_BORDERs","allocazione...");
+ border_blu7 = FAB_border_alloc(7);
+ if (border_blu7==NULL) test=1;
+ border_verde7 = FAB_border_alloc(7);
+ if (border_verde7==NULL) test=1;
+ border_rosso7 = FAB_border_alloc(7);
+ if (border_rosso7==NULL) test=1;
+ border_bianco7 = FAB_border_alloc(7);
+ if (border_bianco7==NULL) test=1;
+ border_giallo7 = FAB_border_alloc(7);
+ if (border_giallo7==NULL) test=1;
+
+ FAB_msg(test,"fatto","almeno un bordo non allocato");
+}
+void kern_free_borders()
+{
+ FAB_border_free(border_blu7);
+ FAB_border_free(border_verde7);
+ FAB_border_free(border_rosso7);
+ FAB_border_free(border_bianco7);
+ FAB_border_free(border_giallo7);
+}
+
+void kern_set_borders()
+{
+ FAB_print(NULL,"settaggio...");
+ border_blu7->buf[0]=FAB_rgb( 0, 0, 50);
+ border_blu7->buf[1]=FAB_rgb( 0, 50,200);
+ border_blu7->buf[2]=FAB_rgb( 50,100,255);
+ border_blu7->buf[3]=FAB_rgb(100,150,255);
+ border_blu7->buf[4]=FAB_rgb( 50,100,255);
+ border_blu7->buf[5]=FAB_rgb( 0, 50,200);
+ border_blu7->buf[6]=FAB_rgb( 0, 0, 50);
+
+ border_verde7->buf[0]=FAB_rgb( 0, 50, 0);
+ border_verde7->buf[1]=FAB_rgb( 0,100, 50);
+ border_verde7->buf[2]=FAB_rgb( 50,255,100);
+ border_verde7->buf[3]=FAB_rgb(100,255,150);
+ border_verde7->buf[4]=FAB_rgb( 50,255,100);
+ border_verde7->buf[5]=FAB_rgb( 0,100, 50);
+ border_verde7->buf[6]=FAB_rgb( 0, 50, 0);
+
+ border_rosso7->buf[0]=FAB_rgb( 50, 0, 0);
+ border_rosso7->buf[1]=FAB_rgb(200, 25, 25);
+ border_rosso7->buf[2]=FAB_rgb(255, 75, 75);
+ border_rosso7->buf[3]=FAB_rgb(255,125,125);
+ border_rosso7->buf[4]=FAB_rgb(255, 75, 75);
+ border_rosso7->buf[5]=FAB_rgb(200, 25, 25);
+ border_rosso7->buf[6]=FAB_rgb( 50, 0, 0);
+
+ border_bianco7->buf[0]=FAB_rgb( 25, 25, 25);
+ border_bianco7->buf[1]=FAB_rgb( 75, 75, 75);
+ border_bianco7->buf[2]=FAB_rgb(125,125,125);
+ border_bianco7->buf[3]=FAB_rgb(255,255,255);
+ border_bianco7->buf[4]=FAB_rgb(125,125,125);
+ border_bianco7->buf[5]=FAB_rgb( 75, 75, 75);
+ border_bianco7->buf[6]=FAB_rgb( 25, 25, 25);
+
+ border_giallo7->buf[0]=FAB_rgb( 25, 25, 0);
+ border_giallo7->buf[1]=FAB_rgb(115,115, 25);
+ border_giallo7->buf[2]=FAB_rgb(170,170, 75);
+ border_giallo7->buf[3]=FAB_rgb(255,255,100);
+ border_giallo7->buf[4]=FAB_rgb(170,170, 75);
+ border_giallo7->buf[5]=FAB_rgb(115,115, 25);
+ border_giallo7->buf[6]=FAB_rgb( 25, 25, 0);
+
+ FAB_print(NULL,"fatto");
+}
+
+void kern_alloc_images()
+{
+ int j,test=0;
+
+ FAB_print("FAB_IMAGEs","allocazione...");
+
+ image_missile[0] = FAB_image_alloc(MISSILE_LX,MISSILE_LY);
+ if (image_missile[0]==NULL) test=1;
+ image_missile[1] = FAB_image_alloc(MISSILE_LX,MISSILE_LY);
+ if (image_missile[1]==NULL) test=1;
+
+ for (j=0; j<2; j++) {
+ image_cannone[j] = FAB_image_alloc(CANNONE_LX,CANNONE_LY);
+ if (image_cannone[j]==NULL) test=1;
+ }
+
+ for (j=0; j<4; j++) {
+ image_aereo[j] = FAB_image_alloc(AEREO_LX,AEREO_LY);
+ if (image_aereo[j]==NULL) test=1;
+ }
+
+ for (j=0; j<5; j++) {
+ image_esplo[j] = FAB_image_alloc(ESPLO_LX,ESPLO_LY);
+ if (image_esplo[j]==NULL) test=1;
+ }
+
+ image_sfondo = FAB_image_alloc(96,96);
+ if (image_sfondo==NULL) test=1;
+
+ image_bca = FAB_image_alloc(500,500);
+ if (image_bca==NULL) test=1;
+
+ FAB_msg(test,"fatto","almeno un'immagine non allocata");
+}
+void kern_free_images()
+{
+ int j;
+
+ FAB_image_free(image_missile[0]);
+ FAB_image_free(image_missile[1]);
+ for (j=0; j<2; j++) FAB_image_free(image_cannone[j]);
+ for (j=0; j<4; j++) FAB_image_free(image_aereo[j]);
+ for (j=0; j<5; j++) FAB_image_free(image_esplo[j]);
+ FAB_image_free(image_sfondo);
+ FAB_image_free(image_bca);
+}
+
+void kern_load_images()
+{ int test=0;
+
+ FAB_print(NULL,"caricamento dai file...");
+
+ FAB_print(NULL," [missile1.raw]...");
+ if(FAB_image_load(image_missile[0],"BCA_raw/missile1.raw")==-1) test=1;
+ FAB_image_trasparent_set(image_missile[0],MISSILE_TRASPARENT_COL);
+ FAB_print(NULL," [missile2.raw]...");
+ if(FAB_image_load(image_missile[1],"BCA_raw/missile2.raw")==-1) test=1;
+ FAB_image_trasparent_set(image_missile[1],MISSILE_TRASPARENT_COL);
+
+ FAB_print(NULL," [aereo1.raw]...");
+ if(FAB_image_load(image_aereo[0],"BCA_raw/aereo1.raw")==-1) test=1;
+ FAB_image_trasparent_set(image_aereo[0],AEREO_TRASPARENT_COL);
+ FAB_print(NULL," [aereo2.raw]...");
+ if(FAB_image_load(image_aereo[1],"BCA_raw/aereo2.raw")==-1) test=1;
+ FAB_image_trasparent_set(image_aereo[1],AEREO_TRASPARENT_COL);
+ FAB_print(NULL," [aereo1_h.raw]...");
+ if(FAB_image_load(image_aereo[2],"BCA_raw/aereo1_h.raw")==-1) test=1;
+ FAB_image_trasparent_set(image_aereo[2],AEREO_TRASPARENT_COL);
+ FAB_print(NULL," [aereo2_h.raw]...");
+ if(FAB_image_load(image_aereo[3],"BCA_raw/aereo2_h.raw")==-1) test=1;
+ FAB_image_trasparent_set(image_aereo[3],AEREO_TRASPARENT_COL);
+
+ FAB_print(NULL," [cannon.raw]...");
+ if(FAB_image_load(image_cannone[0],"BCA_raw/cannon.raw")==-1) test=1;
+ FAB_image_trasparent_set(image_cannone[0],CANNONE_TRASPARENT_COL);
+ FAB_print(NULL," [cannon_h.raw]...");
+ if(FAB_image_load(image_cannone[1],"BCA_raw/cannon_h.raw")==-1) test=1;
+ FAB_image_trasparent_set(image_cannone[1],CANNONE_TRASPARENT_COL);
+
+ FAB_print(NULL," [esplo1.raw]...");
+ if(FAB_image_load(image_esplo[0],"BCA_raw/esplo1.raw")==-1) test=1;
+ FAB_image_trasparent_set(image_esplo[0],ESPLO_TRASPARENT_COL);
+ FAB_print(NULL," [esplo2.raw]...");
+ if(FAB_image_load(image_esplo[1],"BCA_raw/esplo2.raw")==-1) test=1;
+ FAB_image_trasparent_set(image_esplo[1],ESPLO_TRASPARENT_COL);
+ FAB_print(NULL," [esplo3.raw]...");
+ if(FAB_image_load(image_esplo[2],"BCA_raw/esplo3.raw")==-1) test=1;
+ FAB_image_trasparent_set(image_esplo[2],ESPLO_TRASPARENT_COL);
+ FAB_print(NULL," [esplo4.raw]...");
+ if(FAB_image_load(image_esplo[3],"BCA_raw/esplo4.raw")==-1) test=1;
+ FAB_image_trasparent_set(image_esplo[3],ESPLO_TRASPARENT_COL);
+ FAB_print(NULL," [esplo5.raw]...");
+ if(FAB_image_load(image_esplo[4],"BCA_raw/esplo5.raw")==-1) test=1;
+ FAB_image_trasparent_set(image_esplo[4],ESPLO_TRASPARENT_COL);
+
+ FAB_print(NULL," [sfondo.raw]...");
+ if(FAB_image_load(image_sfondo,"BCA_raw/sfondo.raw")==-1) test=1;
+ FAB_image_no_trasparent_set(image_sfondo);
+
+ FAB_print(NULL," [bca.raw]...");
+ if(FAB_image_load(image_bca,"BCA_raw/bca.raw")==-1) test=1;
+ FAB_image_no_trasparent_set(image_bca);
+
+ FAB_msg(test,"fatto","almeno un file non esiste oppure ha un formato incompatibile");
+}
+
+// *** Corpo delle funzioni in CA.h *** //
+void kern_init_bca()
+{
+ FAB_clr();
+
+ kern_alloc_task_tables();
+ kern_set_task_tables();
+
+ kern_alloc_borders();
+ kern_set_borders();
+ kern_alloc_images();
+ kern_load_images();
+ kern_alloc_frames();
+ kern_set_frames();
+ kern_alloc_ballframes();
+ kern_set_ballframes();
+}
+
+//----------------------END--------------------------
+#endif
Index: demos/branches/xen/bca/control.c
===================================================================
--- demos/branches/xen/bca/control.c (nonexistent)
+++ demos/branches/xen/bca/control.c (revision 1684)
@@ -0,0 +1,140 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Paolo Gai <pj@gandalf.sssup.it>
+ * Massimiliano Giorgi <massy@gandalf.sssup.it>
+ * Luca Abeni <luca@gandalf.sssup.it>
+ * (see the web pages for full authors list)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/* CVS : $Id: control.c,v 1.3 2006-07-03 15:34:08 tullio Exp $ */
+
+/*
+ * Copyright (C) 2000 Fabio Calabrese <fabiocalabrese77@yahoo.it>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+#include "bca.h"
+
+PID crea_soft_control()
+{
+ SOFT_TASK_MODEL m;
+ PID pid;
+
+ soft_task_default_model(m);
+ soft_task_def_periodic(m);
+ soft_task_def_period(m,CONTROL_PERIOD);
+ soft_task_def_wcet(m,CONTROL_WCET);
+ soft_task_def_met(m,CONTROL_MET);
+
+ pid = task_create("control", control, &m, NULL);
+ return pid;
+}
+
+TASK control(void *argv)
+{
+ int i, x0, y0;
+ int rect1_x0, rect1_y0, rect1_x1, rect1_y1;
+ int rect2_x0, rect2_y0, rect2_x1, rect2_y1;
+ char * str = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
+
+ x0=frame_control->x0;
+ y0=frame_control->y0;
+ rect1_x0=674;
+ rect1_y0=y0+19;
+ rect1_x1=758;
+ rect1_y1=y0+24;
+ rect2_x0=690;
+ rect2_y0=frame_control->y1-81+3;
+ rect2_x1=758;
+ rect2_y1=frame_control->y1-81+2+6;
+
+ while(1){
+
+ sprintf(str,"PLANE: %02d",aereo_count);
+ grx_text(str,x0+2,y0+18,FAB_white,FAB_blue);
+ grx_box(rect1_x0,rect1_y0,rect1_x1,rect1_y1,FRAME_CONTROL_BACK_COLOR);
+ grx_box(rect1_x0,rect1_y0,
+ rect1_x0+(rect1_x1-rect1_x0)*aereo_count/AEREO_N_MAX,rect1_y1,
+ FAB_yellow);
+ for (i=0; i<AEREO_N_MAX; i++){
+ if (aereo_table[i].status)
+ if (i==0) {
+ sprintf(str,"HARD vel=%04.1fkm/h",aereo_table[i].vel);
+ grx_text(str,
+ x0+2,y0+28+8*i,
+ FAB_white,FRAME_CONTROL_BACK_COLOR);
+ grx_box(x0+36,y0+29+8*i,
+ x0+45,y0+26+8*(i+1),
+ aereo_table[i].color);
+ }
+ else {
+ sprintf(str,"Soft vel=%04.1fkm/h",aereo_table[i].vel);
+ grx_text(str,
+ x0+2,y0+28+8*i,
+ FAB_white,FRAME_CONTROL_BACK_COLOR);
+ grx_box(x0+36,y0+29+8*i,
+ x0+45,y0+26+8*(i+1),
+ aereo_table[i].color);
+ }
+ else grx_text(" ",
+ x0+2,y0+28+8*i,
+ FAB_white,FRAME_CONTROL_BACK_COLOR);
+ }
+
+ sprintf(str,"CANNONS: %02d",cannone_count);
+ grx_text(str,x0+2,frame_control->y1-81+2,FAB_white,FAB_blue);
+ grx_box(rect2_x0,rect2_y0,rect2_x1,rect2_y1,FRAME_CONTROL_BACK_COLOR);
+ grx_box(rect2_x0,rect2_y0,
+ rect2_x0+(rect2_x1-rect2_x0)*cannone_count/CANNONE_N_MAX,rect2_y1,
+ FAB_yellow);
+
+ for (i=0; i<CANNONE_N_MAX; i++)
+ if (cannone_table[i].status) {
+ if (cannone_table[i].fire) {
+ if (i==0) {
+ grx_text(" ",x0+2,frame_control->y1-81+12+8*i,FAB_white,FRAME_CONTROL_BACK_COLOR);
+ sprintf(str,"HARD vel=%-5.1fkm/h",cannone_table[i].missile_vel);
+ grx_text(str,x0+2,frame_control->y1-81+12+8*i,FAB_white,FRAME_CONTROL_BACK_COLOR);
+ }
+ else {
+ grx_text(" ",x0+2,frame_control->y1-81+12+8*i,FAB_white,FRAME_CONTROL_BACK_COLOR);
+ sprintf(str,"Soft vel=%-5.1fkm/h",cannone_table[i].missile_vel);
+ grx_text(str,x0+2,frame_control->y1-81+12+8*i,FAB_white,FRAME_CONTROL_BACK_COLOR);
+ }
+ }
+ else {
+ if (i==0) grx_text("HARD ",x0+2,frame_control->y1-81+12+8*i,FAB_white,FRAME_CONTROL_BACK_COLOR);
+ else grx_text("Soft ",x0+2,frame_control->y1-81+12+8*i,FAB_white,FRAME_CONTROL_BACK_COLOR);
+ }
+ }
+ else grx_text(" ",x0+2,frame_control->y1-81+12+8*i,FAB_white,FRAME_CONTROL_BACK_COLOR);
+
+ task_endcycle();
+ }
+}
Index: demos/branches/xen/bca/bca.c
===================================================================
--- demos/branches/xen/bca/bca.c (nonexistent)
+++ demos/branches/xen/bca/bca.c (revision 1684)
@@ -0,0 +1,179 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Paolo Gai <pj@gandalf.sssup.it>
+ * Massimiliano Giorgi <massy@gandalf.sssup.it>
+ * Luca Abeni <luca@gandalf.sssup.it>
+ * (see the web pages for full authors list)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/* CVS : $Id: bca.c,v 1.10 2006-07-03 15:30:11 tullio Exp $ */
+
+/*
+ * Copyright (C) 2000 Fabio Calabrese <fabiocalabrese77@yahoo.it>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+/****************************************************
+ * *
+ * file: bca.c *
+ * header file: bca.h *
+ * data: 15/09/2002 *
+ * creato da: Fabio CALABRESE *
+ * *
+ ******************************************************
+ * *
+ * descrizione: e' il file in cui è descritto il task*
+ * main del programma S.Ha.R.K. *
+ * "(B)ase(C)ontr(A)rea". *
+ * *
+ ******************************************************/
+
+
+// *** Librerie S.Ha.R.K ***
+#include <kernel/kern.h>
+#include <ll/i386/cons.h>
+
+#include <drivers/shark_fb26.h>
+#include <drivers/shark_keyb26.h>
+
+// *** Standard C library ***
+#include <stdlib.h>
+
+// *** FAB library ***
+#include "fab_lib/fab_msg.h"
+#include "fab_lib/fab_show.h"
+#include "fab_lib/fab_tool.h"
+#include "fab_lib/fab_grx.h"
+
+// *** BCA library ***
+#include "bca.h"
+
+void end_fun(KEY_EVT* k) {
+ sys_shutdown_message("Ending...\n");
+ exit(0);
+}
+
+void inc_planes(KEY_EVT* k) {
+ if (aereo_count < AEREO_N_MAX) aereo_count++;
+}
+
+void dec_planes(KEY_EVT* k) {
+ if (aereo_count > AEREO_N_MIN) aereo_count--;
+}
+
+void inc_cannon(KEY_EVT* k) {
+ if (cannone_count < CANNONE_N_MAX) cannone_count++;
+}
+
+void dec_cannon(KEY_EVT* k) {
+ if (cannone_count > CANNONE_N_MIN) cannone_count--;
+}
+
+int main(int argc, char **argv) {
+ PID pid_dummy_radar, pid_aereo_creator, pid_cannone_creator, pid_control;
+
+ KEY_EVT k;
+
+ k.flag = CNTL_BIT;
+ k.scan = KEY_C;
+ k.ascii = 'c';
+ k.status = KEY_PRESSED;
+ keyb_hook(k, end_fun, FALSE);
+
+ k.flag = CNTR_BIT;
+ k.status = KEY_PRESSED;
+ keyb_hook(k, end_fun, FALSE);
+
+ k.flag = 0;
+ k.scan = KEY_1;
+ k.ascii = '1';
+ k.status = KEY_PRESSED;
+ keyb_hook(k, inc_planes, FALSE);
+
+ k.flag = 0;
+ k.scan = KEY_2;
+ k.ascii = '2';
+ k.status = KEY_PRESSED;
+ keyb_hook(k, dec_planes, FALSE);
+
+ k.flag = 0;
+ k.scan = KEY_3;
+ k.ascii = '3';
+ k.status = KEY_PRESSED;
+ keyb_hook(k, inc_cannon, FALSE);
+
+ k.flag = 0;
+ k.scan = KEY_4;
+ k.ascii = '4';
+ k.status = KEY_PRESSED;
+ keyb_hook(k, dec_cannon, FALSE);
+
+ /* inizializza il mutex grafico */
+ app_mutex_init(&grx_mutex);
+
+ scenario();
+
+ //---init---
+ srand(sys_gettime(NULL));
+ aereo_count = AEREO_N_MIN;
+ cannone_count = CANNONE_N_MIN;
+
+ pid_dummy_radar = crea_soft_dummy_radar();
+ if (pid_dummy_radar == -1) {
+ sys_shutdown_message("bca.c(main): could not create task <dummy_radar>");
+ exit(1);
+ }
+ task_activate(pid_dummy_radar);
+
+ pid_aereo_creator = crea_soft_aereo_creator();
+ if (pid_aereo_creator == -1) {
+ sys_shutdown_message("bca.c(main): could not create task <aereo_creator>");
+ exit(1);
+ }
+ task_activate(pid_aereo_creator);
+
+ pid_cannone_creator = crea_soft_cannone_creator();
+ if (pid_cannone_creator == -1) {
+ sys_shutdown_message("bca.c(main): could not create task <cannone_creator>");
+ exit(1);
+ }
+ task_activate(pid_cannone_creator);
+
+ pid_control = crea_soft_control();
+ if (pid_control == -1) {
+ sys_shutdown_message("bca.c(main): could not create task <control>");
+ exit(1);
+ }
+ task_activate(pid_control);
+ //----------
+
+ return 0;
+}
+
+
Index: demos/branches/xen/bca/scenario.c
===================================================================
--- demos/branches/xen/bca/scenario.c (nonexistent)
+++ demos/branches/xen/bca/scenario.c (revision 1684)
@@ -0,0 +1,167 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Paolo Gai <pj@gandalf.sssup.it>
+ * Massimiliano Giorgi <massy@gandalf.sssup.it>
+ * Luca Abeni <luca@gandalf.sssup.it>
+ * (see the web pages for full authors list)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/* CVS : $Id: scenario.c,v 1.3 2006-07-03 15:10:15 tullio Exp $ */
+
+/*
+ * Copyright (C) 2000 Fabio Calabrese <fabiocalabrese77@yahoo.it>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+#include "bca.h"
+
+char * titolo[10];
+
+void scenario_ca()
+{ //SFONDO
+ FAB_image_fill(image_sfondo,0,0,800,600);
+
+ //FRAME_BCA
+ FAB_frame_put(frame_bca,X0-7,Y0-7,500+7*2,500+7*2);
+}
+void scenario_misure()
+{ int x, y, cx, cy;
+ char* str_km ="X.Xkm";
+ char* str_m ="XXXXm";
+ int h;
+
+ //FRAME_MISURE orizzontale
+ FAB_frame_put(frame_misure_oriz, X0-7, Y1+7+20-7,
+ 500+7*2, FRAME_MISURE_ORIZ_LY+7*2);
+ cy = frame_misure_oriz->y0 + 10;
+ cx = frame_misure_oriz->x0 +
+ (frame_misure_oriz->x1 - frame_misure_oriz->x0) / 2;
+ for(x=frame_misure_oriz->x0 ;x<frame_misure_oriz->x1+1 ;x+=5)
+ grx_line(x,cy,x+2,cy,FRAME_MISURE_LINE_COLOR);
+ for(y=frame_misure_oriz->y0; y<cy-1; y+=5) {
+ grx_line(frame_misure_oriz->x0,y,frame_misure_oriz->x0,y+2,FRAME_MISURE_LINE_COLOR);
+ grx_line(cx,y,cx,y+2,FRAME_MISURE_LINE_COLOR);
+ grx_line(frame_misure_oriz->x1,y,frame_misure_oriz->x1,y+2,FRAME_MISURE_LINE_COLOR);
+ }
+ sprintf(str_km,"%02.1fkm",0.0);
+ grx_text(str_km,frame_misure_oriz->x0+10,cy+2,FRAME_MISURE_LINE_COLOR,frame_misure_oriz->color);
+ sprintf(str_km,"%02.1fkm",BASE_L/2.0);
+ grx_text(str_km,cx-10,cy+2,FRAME_MISURE_LINE_COLOR,frame_misure_oriz->color);
+ sprintf(str_km,"%02.1fkm",BASE_L);
+ grx_text(str_km,frame_misure_oriz->x1-FRAME_MISURE_ORIZ_LY,cy+2,FRAME_MISURE_LINE_COLOR,frame_misure_oriz->color);
+
+ //FRAME_MISURE verticale
+ FAB_frame_put(frame_misure_vert, X1+7+20-7, Y0-7,
+ FRAME_MISURE_VERT_LX+7*2, 500+7*2);
+ cy = frame_misure_vert->y0 +
+ (frame_misure_vert->y1 - frame_misure_vert->y0) / 2;
+ cx = frame_misure_vert->x0 + 10;
+ for(y=frame_misure_vert->y1; y>frame_misure_vert->y0-1; y-=5)
+ grx_line(cx,y,cx,y-2,FRAME_MISURE_LINE_COLOR);
+ h=0;
+ for(y=frame_misure_vert->y1; y>frame_misure_vert->y0-1;
+ y-=500.0*(X1-X0)/BASE_H, h+=500) {
+ for(x=frame_misure_vert->x0; x<cx-1; x+=5)
+ grx_line(x,y,x+2,y,FRAME_MISURE_LINE_COLOR);
+ sprintf(str_m,"%dm",h);
+ grx_text(str_m, cx+2, y-6,
+ FRAME_MISURE_LINE_COLOR, frame_misure_vert->color);
+ }
+}
+void scenario_radar()
+{ FAB_ballframe_put(ballframe_radar,
+ frame_bca->x1+7+30, frame_bca->y1+7+30, 30);
+ FAB_ballframe_put(ballframe_lucerossa[2],605,546,20);
+ FAB_ballframe_put(ballframe_lucerossa[1],594,578,15);
+ FAB_ballframe_put(ballframe_lucerossa[0],574,591,10);
+}
+void scenario_titolo()
+{ int x0,y0;
+ x0 = frame_misure_vert->x1+7+20-7;
+ y0 = frame_bca->y0-7;
+ FAB_frame_put(frame_titolo,x0,y0,800-x0-20+7,170);
+ x0 = frame_titolo->x0;
+ y0 = frame_titolo->y0;
+ grx_text(titolo[0],x0+2,y0+10,FRAME_TITOLO_TEXT_COLOR2,FRAME_TITOLO_BACK_COLOR1);
+ grx_text(titolo[1],x0+2,y0+20,FRAME_TITOLO_TEXT_COLOR2,FRAME_TITOLO_BACK_COLOR1);
+ grx_text(titolo[2],x0+2,y0+30,FRAME_TITOLO_TEXT_COLOR2,FRAME_TITOLO_BACK_COLOR1);
+ grx_text(titolo[3],x0+2,y0+46,FRAME_TITOLO_TEXT_COLOR2,FRAME_TITOLO_BACK_COLOR1);
+ grx_text(titolo[4],x0+2,y0+66,FRAME_TITOLO_TEXT_COLOR1,FRAME_TITOLO_BACK_COLOR2);
+ grx_text(titolo[5],x0+2,y0+81,FRAME_TITOLO_TEXT_COLOR2,FRAME_TITOLO_BACK_COLOR1);
+ grx_text(titolo[6],x0+2,y0+96,FRAME_TITOLO_TEXT_COLOR2,FRAME_TITOLO_BACK_COLOR1);
+ grx_text(titolo[7],x0+2,y0+116,FRAME_TITOLO_TEXT_COLOR2,FRAME_TITOLO_BACK_COLOR1);
+ grx_text(titolo[8],x0+2,y0+133,FRAME_TITOLO_TEXT_COLOR2,FRAME_TITOLO_BACK_COLOR1);
+ grx_text(titolo[9],x0+2,y0+141,FRAME_TITOLO_TEXT_COLOR2,FRAME_TITOLO_BACK_COLOR1);
+}
+void scenario_comandi()
+{ int x0, y0;
+ x0 = frame_misure_vert->x1+7+20-7;
+ y0 = frame_titolo->y1+7+20-7;
+ FAB_frame_put(frame_comandi,x0,y0,800-x0-20+7,100+7*2);
+ x0 = frame_comandi->x0;
+ y0 = frame_comandi->y0;
+ grx_text(" COMMANDS \0",x0+2,y0+10,FRAME_COMANDI_TEXT_COLOR1,FRAME_COMANDI_BACK_COLOR1);
+ grx_text("-------------------\0",x0+2,y0+20,FRAME_COMANDI_TEXT_COLOR2,FRAME_COMANDI_BACK_COLOR1);
+ grx_text(" exit \0",x0+2,y0+40,FRAME_COMANDI_TEXT_COLOR2,FRAME_COMANDI_BACK_COLOR1);
+ grx_text("[Ctrl+C]",x0+2,y0+40,FRAME_COMANDI_TEXT_COLOR3,FRAME_COMANDI_BACK_COLOR2);
+ grx_text(" +/- plane \0",x0+2,y0+60,FRAME_COMANDI_TEXT_COLOR2,FRAME_COMANDI_BACK_COLOR1);
+ grx_text("[1/2]",x0+2,y0+60,FRAME_COMANDI_TEXT_COLOR3,FRAME_COMANDI_BACK_COLOR2);
+ grx_text(" +/- cannon \0",x0+2,y0+80,FRAME_COMANDI_TEXT_COLOR2,FRAME_COMANDI_BACK_COLOR1);
+ grx_text("[3/4]",x0+2,y0+80,FRAME_COMANDI_TEXT_COLOR3,FRAME_COMANDI_BACK_COLOR2);
+}
+void scenario_control()
+{ int x0,y0;
+
+ x0 = frame_misure_vert->x1+7+20-7;
+ y0 = frame_comandi->y1+7+20-7;
+ FAB_frame_put(frame_control,x0,y0,800-x0-20+7,frame_misure_vert->y1+7-y0);
+ x0 = frame_control->x0;
+ y0 = frame_control->y0;
+ grx_text(" CONTROL \0",x0+2, y0+5,FRAME_CONTROL_TEXT_COLOR2,FRAME_CONTROL_BACK_COLOR);
+ grx_line(x0-3, y0+15,
+ frame_control->x1+3, y0+15,
+ FRAME_CONTROL_TEXT_COLOR1);
+
+ grx_line(x0-3, frame_control->y1-81,
+ frame_control->x1+3, frame_control->y1-81,
+ FRAME_CONTROL_TEXT_COLOR1);
+}
+void scenario()
+{ scenario_ca();
+ scenario_misure();
+ scenario_radar();
+ scenario_titolo();
+ scenario_comandi();
+ scenario_control();
+}
+
+void info()
+{ int i;
+ for(i=0; i<10; i++) kern_printf("%s\n",titolo[i]);
+}
Index: demos/branches/xen/bca/missile.c
===================================================================
--- demos/branches/xen/bca/missile.c (nonexistent)
+++ demos/branches/xen/bca/missile.c (revision 1684)
@@ -0,0 +1,199 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Paolo Gai <pj@gandalf.sssup.it>
+ * Massimiliano Giorgi <massy@gandalf.sssup.it>
+ * Luca Abeni <luca@gandalf.sssup.it>
+ * (see the web pages for full authors list)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/* CVS : $Id: missile.c,v 1.4 2006-07-03 15:10:15 tullio Exp $ */
+
+/*
+ * Copyright (C) 2000 Fabio Calabrese <fabiocalabrese77@yahoo.it>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+#include "bca.h"
+
+PID crea_hard_missile(int index);
+PID crea_soft_missile(int index);
+PID crea_soft_esplo(int index);
+
+TASK missile(void *arg)
+{
+ PID esplo_pid;
+ int img;
+ int i, index; // indice nella cannone_table
+ int distx, disty;
+ int xx0,yy0,xx1,yy1;
+ double vel, acc;
+ double a;
+ double y;
+ double x;
+ double old_x; // [pixel]: conserva valore x prima di aggiornare
+ double old_y;
+ double dx; // [pixel/us]: spostamento periodico
+ double dy;
+ int first_time;
+ int killing;
+
+ index = (int)arg;
+ img=0;
+ y = MISSILE_Y_MAX;
+ x = cannone_table[index].x;
+ a = FAB_rad(270);
+ vel = MISSILE_V_MIN;
+ acc = MISSILE_ACC_MIN;
+ dx = 0;
+ dy = 0;
+
+ first_time = 1;
+ killing = 0;
+
+ while(1){
+
+ old_x = x;
+ old_y = y;
+
+ if (vel<MISSILE_V_MAX) {
+ vel += acc*MISSILE_PERIOD/(60*60*1000000.0);
+ if (vel>MISSILE_V_MAX) vel = MISSILE_V_MAX;
+ }
+ if (acc<MISSILE_ACC_MAX) {
+ acc += MISSILE_ACC_MIN;
+ if (acc>MISSILE_ACC_MAX) acc = MISSILE_ACC_MAX;
+ }
+
+ cannone_table[index].missile_vel=vel;
+
+ dx = cos(a)*vel * (X1-X0) / (double)BASE_L
+ * (MISSILE_PERIOD / (60*60*1000000.0));
+ dy = sin(a)*vel * (Y1-Y0) / ((double)BASE_H/1000)
+ * (MISSILE_PERIOD / (60*60*1000000.0));
+
+ x += dx;
+ y += dy;
+
+ xx0 = old_x - MISSILE_LX/2;
+ yy0 = old_y - MISSILE_LY/2;
+ xx1 = xx0 + MISSILE_LX-1;
+ yy1 = yy0 + MISSILE_LY-1;
+
+ if (x<MISSILE_X_MIN || x>MISSILE_X_MAX
+ || y<MISSILE_Y_MIN || y>MISSILE_Y_MAX) {
+ killing = 1;
+ }
+
+ if (killing) {
+ if (!first_time) {
+ mutex_lock(&grx_mutex);
+ FAB_image_put_within(image_bca,X0,Y0,xx0,yy0,xx1,yy1);
+ mutex_unlock(&grx_mutex);
+ }
+ cannone_table[index].fire = 0;
+ //il task cannone si accorge che il suo missile ha finito
+ // quindi ne ricreer… uno nuovo in caso di bersaglio!!!
+ return NULL;
+ }
+
+ if ( (int)x != (int)old_x
+ ||(int)y != (int)old_y ) {//...se c'Š lo spostamento reale
+ // di almeno un pixel...
+ mutex_lock(&grx_mutex); //...aggiorna disegno...
+ if (first_time) {
+ first_time=0;
+ }
+ else {
+ if (yy1<Y1-CANNONE_LY) FAB_image_put_within(image_bca,X0,Y0,xx0,yy0,xx1,yy1);
+ else FAB_image_put_within(image_bca,X0,Y0,xx0,yy0,xx1,Y1-CANNONE_LY);
+ }
+
+ FAB_image_put_within(image_missile[img++], x - MISSILE_LX/2, y - MISSILE_LY/2,
+ X0, Y0,
+ X1, Y1-CANNONE_LY);
+ mutex_unlock(&grx_mutex);
+ if (img==2) img = 0;
+ }
+
+ //Ha colpito un aereo?
+ for (i=0; i<AEREO_N_MAX; i++)
+ if (aereo_table[i].status){
+ distx = aereo_table[i].x-x;
+ disty = aereo_table[i].y-y;
+ if (distx<0) distx *= -1;
+ if (disty<0) disty *= -1;
+ if ( distx<(AEREO_LX+MISSILE_LX)/2-1
+ &&disty<(AEREO_LY+MISSILE_LY)/2-1 ) { // BERSAGLIO COLPITO!
+ esplo_pid = crea_soft_esplo(i);
+ task_activate(esplo_pid);
+ killing=1;
+ aereo_table[i].killing=1;
+ break;
+ }
+ }
+
+ task_endcycle();
+ }
+
+return NULL;
+}
+
+
+PID crea_hard_missile(int index)
+{
+ HARD_TASK_MODEL m;
+ PID pid;
+
+ hard_task_default_model(m);
+ hard_task_def_level(m,1);
+ hard_task_def_arg(m,(void*)index);
+ hard_task_def_periodic(m);
+ hard_task_def_wcet(m, MISSILE_WCET);
+ hard_task_def_mit(m,MISSILE_PERIOD);
+
+ pid = task_create("hard_missile", missile, &m, NULL);
+ return pid;
+}
+
+PID crea_soft_missile(int index)
+{
+ SOFT_TASK_MODEL m;
+ PID pid;
+
+ soft_task_default_model(m);
+ soft_task_def_level(m,2);
+ soft_task_def_arg(m,(void*)index);
+ soft_task_def_periodic(m);
+ soft_task_def_period(m,MISSILE_PERIOD);
+ soft_task_def_wcet(m, MISSILE_WCET);
+ soft_task_def_met(m,MISSILE_MET);
+
+ pid = task_create("soft_missile", missile, &m, NULL);
+ return pid;
+}
Index: demos/branches/xen/bca/cannone.c
===================================================================
--- demos/branches/xen/bca/cannone.c (nonexistent)
+++ demos/branches/xen/bca/cannone.c (revision 1684)
@@ -0,0 +1,215 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Paolo Gai <pj@gandalf.sssup.it>
+ * Massimiliano Giorgi <massy@gandalf.sssup.it>
+ * Luca Abeni <luca@gandalf.sssup.it>
+ * (see the web pages for full authors list)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/* CVS : $Id: cannone.c,v 1.4 2006-07-03 15:10:15 tullio Exp $ */
+
+/*
+ * Copyright (C) 2000 Fabio Calabrese <fabiocalabrese77@yahoo.it>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+#include "bca.h"
+
+TASK cannone_creator(void * arg)
+{ int i, index, last;
+ WORD count;
+ PID pid=-1;
+
+ while(1){
+
+ count=0;
+ index=-1;
+ last=-1;
+
+ for (i=0; i<CANNONE_N_MAX; i++) // Conteggio aerei attivi
+ if (cannone_table[i].status) {
+ count++;
+ last=i; //...ultima posizione occupata in tabella...
+ }
+ else {
+ if (index==-1) index=i; //...prima posizione libera in tabella...
+ }
+
+ if (count<cannone_count && index!=-1) { // Richiesta nuovo cannone
+ cannone_table[index].status = 1; //...occupa posizione...
+ cannone_table[index].killing = 0; //...disattiva richiesta di kill...
+ if (index==0) pid = crea_hard_cannone(index); // sempre il 1ø hard
+ else pid = crea_soft_cannone(index); // tutti gli altri soft
+ cannone_table[index].pid = pid;
+ if (pid!=NIL) task_activate(pid);
+ else { //ripristino il posto libero in tabella;
+ cannone_table[index].status = -2;
+ cannone_table[index].killing = -2;
+ }
+ }
+
+ else if (count>cannone_count) { // Richiesta cancellazione cannone
+ cannone_table[last].killing = 1;
+ }
+
+ task_endcycle();
+ }
+ return NULL;
+}
+
+PID crea_soft_cannone_creator();
+PID crea_hard_cannone(int index);
+PID crea_hard_cannone(int index);
+
+PID crea_hard_missile(int index);
+PID crea_soft_missile(int index);
+
+TASK cannone(void *arg)
+{
+ PID missile_pid=-2;
+ int i, index; // indice nella aereo_table e cannone_table
+ int d, dir;
+ int xx0,yy0,xx1,yy1;
+ int first_time;
+
+ index = (int)arg;
+ first_time = 1;
+ if (index%2) {
+ //indice dispari
+ xx0 = X0 + 500/2 - CANNONE_LX/2 + 500/(CANNONE_N_MAX+1)*(index+1)/2;
+ }
+ else {
+ //indice pari
+ xx0 = X0 + 500/2 - CANNONE_LX/2 - 500/(CANNONE_N_MAX+1)*(index/2);
+ }
+ xx1 = xx0 + CANNONE_LX;
+ yy0= Y1 - CANNONE_LY;
+ yy1= Y1;
+
+ cannone_table[index].x = xx0 + CANNONE_LX/2;
+
+ while(1){
+
+ if (cannone_table[index].killing) {
+ if (!first_time) {
+ mutex_lock(&grx_mutex);
+ FAB_image_put_within(image_bca,X0,Y0,xx0,yy0,xx1,yy1);
+ mutex_unlock(&grx_mutex);
+ }
+ cannone_table[index].status=0;
+ cannone_table[index].pid=-2;
+ cannone_table[index].killing=0;
+ //il task aereo_creator si accorge che c'Š un aereo in meno
+ // quindi ne ricreer… uno nuovo!!!
+ return NULL;
+ }
+
+ if (first_time) {
+ mutex_lock(&grx_mutex); //...aggiorna disegno...
+ if (index==0) FAB_image_put(image_cannone[1], xx0, yy0);
+ else FAB_image_put(image_cannone[0], xx0, yy0);
+ mutex_unlock(&grx_mutex);
+ first_time=0;
+ }
+
+ if (!cannone_table[index].fire) {
+ for (i=0; i<AEREO_N_MAX; i++) {
+ if (aereo_table[i].status) {
+ d = aereo_table[i].x - (xx0+CANNONE_LX/2);
+ dir = aereo_table[i].dir;
+ if (d*dir<0 && FAB_ABS(d)<=CANNONE_SENSIBILITA/1000.0*500/BASE_L) {
+ // FA F U O C O
+ if (index==0) missile_pid=crea_hard_missile(index);
+ else missile_pid=crea_soft_missile(index);
+ if (missile_pid!=NIL) {
+ cannone_table[index].fire = 1;
+ task_activate(missile_pid);
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ task_endcycle();
+ }
+
+return NULL;
+}
+
+
+
+PID crea_soft_cannone_creator()
+{
+ SOFT_TASK_MODEL m;
+ PID pid;
+
+ soft_task_default_model(m);
+ soft_task_def_periodic(m);
+ soft_task_def_period(m,CANNONE_CREATOR_PERIOD);
+ soft_task_def_wcet(m,CANNONE_CREATOR_WCET);
+ soft_task_def_met(m,CANNONE_CREATOR_MET);
+
+ pid = task_create("cannone_creator", cannone_creator, &m, NULL);
+ return pid;
+}
+
+PID crea_hard_cannone(int index)
+{
+ HARD_TASK_MODEL m;
+ PID pid;
+
+ hard_task_default_model(m);
+ hard_task_def_level(m,1);
+ hard_task_def_arg(m,(void*)index);
+ hard_task_def_periodic(m);
+ hard_task_def_wcet(m, CANNONE_WCET);
+ hard_task_def_mit(m,CANNONE_PERIOD);
+
+ pid = task_create("hard_cannone", cannone, &m, NULL);
+ return pid;
+}
+
+PID crea_soft_cannone(int index)
+{
+ SOFT_TASK_MODEL m;
+ PID pid;
+
+ soft_task_default_model(m);
+ soft_task_def_level(m,2);
+ soft_task_def_arg(m,(void*)index);
+ soft_task_def_periodic(m);
+ soft_task_def_period(m,CANNONE_PERIOD);
+ soft_task_def_wcet(m, CANNONE_WCET);
+ soft_task_def_met(m,CANNONE_MET);
+
+ pid = task_create("soft_cannone", cannone, &m, NULL);
+ return pid;
+}
+
Index: demos/branches/xen/bca/esplo.c
===================================================================
--- demos/branches/xen/bca/esplo.c (nonexistent)
+++ demos/branches/xen/bca/esplo.c (revision 1684)
@@ -0,0 +1,90 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Paolo Gai <pj@gandalf.sssup.it>
+ * Massimiliano Giorgi <massy@gandalf.sssup.it>
+ * Luca Abeni <luca@gandalf.sssup.it>
+ * (see the web pages for full authors list)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/* CVS : $Id: esplo.c,v 1.6 2006-07-03 15:10:15 tullio Exp $ */
+
+/*
+ * Copyright (C) 2000 Fabio Calabrese <fabiocalabrese77@yahoo.it>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+#include <time.h>
+#include "bca.h"
+
+PID crea_soft_esplo(int index)
+{
+ SOFT_TASK_MODEL m;
+ PID pid;
+
+ soft_task_default_model(m);
+ soft_task_def_arg(m,(void*)index);
+ soft_task_def_period(m,ESPLO_PERIOD*2);
+ soft_task_def_wcet(m,ESPLO_WCET*10);
+ soft_task_def_met(m,ESPLO_MET*10);
+
+ pid = task_create("esplo", esplo, &m, NULL);
+ return pid;
+}
+
+TASK esplo(void *argv)
+{
+ int i;
+ int index;
+ WORD xx0, yy0, xx1, yy1;
+ struct timespec delay;
+
+
+ delay.tv_sec = 0;
+ delay.tv_nsec = 20000000;
+ i=0;
+ index = (int)argv;
+ xx0 = aereo_table[index].x - ESPLO_LX/2;
+ yy0 = aereo_table[index].y - ESPLO_LY/2;
+ xx1 = xx0 + ESPLO_LX-1;
+ yy1 = yy0 + ESPLO_LY-1;
+
+ for(i=0;i<5;i++) {
+ mutex_lock(&grx_mutex);
+ FAB_image_put_within(image_esplo[i],xx0,yy0,X0,Y0,X1,Y1);
+ mutex_unlock(&grx_mutex);
+ task_endcycle();
+ }
+
+ mutex_lock(&grx_mutex);
+ FAB_image_put_within(image_bca,X0,Y0,xx0,yy0,xx1,yy1);
+ mutex_unlock(&grx_mutex);
+
+ return 0;
+
+}
Index: demos/branches/xen/bca/bca.h
===================================================================
--- demos/branches/xen/bca/bca.h (nonexistent)
+++ demos/branches/xen/bca/bca.h (revision 1684)
@@ -0,0 +1,321 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Paolo Gai <pj@gandalf.sssup.it>
+ * Massimiliano Giorgi <massy@gandalf.sssup.it>
+ * Luca Abeni <luca@gandalf.sssup.it>
+ * (see the web pages for full authors list)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/* CVS : $Id: bca.h,v 1.3 2006-07-03 15:10:15 tullio Exp $ */
+
+/*
+ * Copyright (C) 2000 Fabio Calabrese <fabiocalabrese77@yahoo.it>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+/****************************************************
+ * *
+ * file: bca.h *
+ * included by: bca.c & bca_lib di cui fa da header*
+ * data: 15/09/2002 *
+ * creato da: Fabio CALABRESE *
+ * *
+ ******************************************************
+ * *
+ * descrizione: contiene la definizione di variabili *
+ * e strutture globali, con un corredo *
+ * di macro e funzioni per la loro *
+ * gestione, usate nel programma SHaRK *
+ * "(B)ase(C)ontr(A)rea", il cui codice *
+ * e' scritto nel file bca.c; *
+ * il file bca_lib.c contiene il corpo *
+ * di tutte le funzioni qui dichiarate. *
+ * *
+ ******************************************************/
+
+#ifndef __BCA_H__
+#define __BCA_H__
+//----------------BEGIN------------------
+
+// *** Librerie S.Ha.R.K ***
+// *** Librerie Standard C ***
+// *** Librerie FAB ***
+#include"fab_lib/fab_grx.h"
+#include"fab_lib/fab_tool.h"
+// *** Librerie BCA ***
+
+
+// ---------------------------------
+// *** Elementi Grafici Generici ***
+// ---------------------------------
+
+// IMMAGINI:
+FAB_IMAGE* image_sfondo;
+FAB_IMAGE* image_bca;
+FAB_IMAGE* image_aereo[4]; // 1 aereo per ogni direzione(soft e hard)
+FAB_IMAGE* image_esplo[5]; // 5 immagini in sequenza simulanti
+FAB_IMAGE* image_cannone[2]; // un esplosione
+FAB_IMAGE* image_missile[2];
+
+// BORDI:
+FAB_BORDER* border_blu7;
+FAB_BORDER* border_verde7;
+FAB_BORDER* border_rosso7;
+FAB_BORDER* border_bianco7;
+FAB_BORDER* border_giallo7;
+
+// FRAME:
+FAB_FRAME* frame_bca;
+FAB_FRAME* frame_misure_oriz;
+FAB_FRAME* frame_misure_vert;
+FAB_FRAME* frame_misure_vert;
+FAB_FRAME* frame_titolo;
+FAB_FRAME* frame_comandi;
+FAB_FRAME* frame_control;
+
+// BALLFRAME:
+FAB_BALLFRAME* ballframe_radar;
+FAB_BALLFRAME* ballframe_lucerossa[3];
+
+// Base ContrAerea
+#define BASE_L 1.0 // [Km]: lunghezza
+#define BASE_H 2100 // [m]: altezza max di visibilita'
+
+// Finestra Virtuale sullo schermo
+#define FIN_X_MIN 20 // [pixel]
+#define FIN_X_MAX 520-1 // [pixel]
+#define FIN_Y_MIN 20 // [pixel]
+#define FIN_Y_MAX 520-1 // [pixel]
+// Inoltre si possono usare le seguenti + comode define
+// con gli stessi valori:
+#define X0 FIN_X_MIN
+#define X1 FIN_X_MAX
+#define Y0 FIN_Y_MIN
+#define Y1 FIN_Y_MAX
+// NB: non e' necessaria la proporzionalita' tra finestra
+// reale(BASE_L*BASE_H) e virtuale((X1-X0)*(Y1-Y0))!
+
+// Finestra Misure
+#define FRAME_MISURE_LINE_COLOR FAB_green
+#define FRAME_MISURE_BACK_COLOR FAB_black
+#define FRAME_MISURE_ORIZ_LY 30
+#define FRAME_MISURE_VERT_LX 52
+
+// Finestra Titolo
+#define FRAME_TITOLO_TEXT_COLOR1 FAB_yellow
+#define FRAME_TITOLO_TEXT_COLOR2 FAB_white
+#define FRAME_TITOLO_BACK_COLOR1 FAB_gray
+#define FRAME_TITOLO_BACK_COLOR2 FAB_blue
+
+// Finestra Comandi
+#define FRAME_COMANDI_TEXT_COLOR1 FAB_yellow
+#define FRAME_COMANDI_TEXT_COLOR2 FAB_white
+#define FRAME_COMANDI_TEXT_COLOR3 FAB_red
+#define FRAME_COMANDI_BACK_COLOR1 FAB_gray
+#define FRAME_COMANDI_BACK_COLOR2 FAB_yellow
+
+// Finestra Control
+#define FRAME_CONTROL_TEXT_COLOR1 FAB_rgb( 50,255, 50)
+#define FRAME_CONTROL_TEXT_COLOR2 FAB_rgb(150,255,150)
+#define FRAME_CONTROL_BACK_COLOR FAB_black
+
+// ---------------------------------
+// *** Elementi Task Dummy_radar ***
+// ---------------------------------
+#define DUMMY_RADAR_GROUP 3
+#define DUMMY_RADAR_PERIOD 50000
+#define DUMMY_RADAR_WCET 400
+#define DUMMY_RADAR_MET 200
+
+// ---------------------------------
+// *** Elementi Task Control ***
+// ---------------------------------
+#define CONTROL_PERIOD 50000
+#define CONTROL_WCET 400
+#define CONTROL_MET 300
+
+// ---------------------------
+// *** Elementi Task Esplo ***
+// ---------------------------
+#define ESPLO_TRASPARENT_COL FAB_white
+#define ESPLO_LX 40
+#define ESPLO_LY 40
+
+#define ESPLO_PERIOD 80000
+#define ESPLO_WCET 300
+#define ESPLO_MET 100
+
+// -----------------------------------
+// *** Elementi Task Aereo_Creator ***
+// -----------------------------------
+#define AEREO_CREATOR_PERIOD 200000
+#define AEREO_CREATOR_WCET 300
+#define AEREO_CREATOR_MET 100
+
+// -----------------------------------
+// *** Elementi Task Cannone_Creator ***
+// -----------------------------------
+#define CANNONE_CREATOR_PERIOD 1000000
+#define CANNONE_CREATOR_WCET 150
+#define CANNONE_CREATOR_MET 50
+
+// ---------------------------
+// *** Elementi Task Aereo ***
+// ---------------------------
+#define AEREO_N_MAX 10
+#define AEREO_N_MIN 1
+
+#define AEREO_TRASPARENT_COL FAB_white
+#define AEREO_BASE_COL FAB_green
+#define AEREO_LX 32
+#define AEREO_LY 19
+#define AEREO_H_MIN 500 // [m]: altezza min di volo
+#define AEREO_H_MAX 2000 // [m]: altezza max di volo (<BASE_H)
+#define AEREO_L_MIN 0 // [km]: posizione 0 nella base
+#define AEREO_L_MAX BASE_L // [km] posizione max nella base
+#define AEREO_V_MIN 300.0 // [Km/h]: velocit… min di volo
+#define AEREO_V_MAX 500.0 // [Km/h]: velocit… max di volo
+#define AEREO_X_MIN X0 - AEREO_LX/2
+#define AEREO_X_MAX X1 + AEREO_LX/2
+
+#define AEREO_PERIOD 30000
+#define AEREO_WCET 1250 //Verificato!
+#define AEREO_MET 800
+
+struct { BYTE status; //[0=free/1=occupato]
+ BYTE killing; //richiesta uscita se Š 1 altrimenti 0
+ PID pid;
+ COLOR color;
+ FAB_IMAGE* image;
+ double vel; //[km/h]
+ int dir; //[+1/-1]
+ WORD h; //[m]
+ double l; //[km]
+ WORD x, y; //[pixel]
+ } aereo_table[AEREO_N_MAX];
+
+int aereo_count;
+
+// -----------------------------
+// *** Elementi Task Cannone ***
+// -----------------------------
+#define CANNONE_N_MAX 9
+#define CANNONE_N_MIN 1
+
+#define CANNONE_SENSIBILITA 200 //[m]
+
+#define CANNONE_TRASPARENT_COL FAB_white
+#define CANNONE_LX 33
+#define CANNONE_LY 15
+
+#define CANNONE_PERIOD 100000
+#define CANNONE_WCET 1000
+#define CANNONE_MET 100
+
+struct { BYTE status; //[0=free/1=occupato]
+ BYTE killing; //richiesta uscita se Š 1 altrimenti 0
+ PID pid;
+ BYTE fire;
+ WORD x;
+ double missile_vel;
+ } cannone_table[CANNONE_N_MAX];
+
+int cannone_count;
+
+// -----------------------------
+// *** Elementi Task Missile ***
+// -----------------------------
+#define MISSILE_V_MIN 300.0 //[km/h]
+#define MISSILE_V_MAX 5000.0 //[km/h]
+#define MISSILE_ACC_MIN 100000.0 //[km/(h*h)]
+#define MISSILE_ACC_MAX 10000000.0 //[km/(h*h)]
+#define MISSILE_X_MAX X1 + MISSILE_LX/2 //[pixel]
+#define MISSILE_X_MIN X0 - MISSILE_LX/2 //[pixel]
+#define MISSILE_Y_MAX Y1 + MISSILE_LY/2 //[pixel]
+#define MISSILE_Y_MIN Y0 - MISSILE_LY/2 //[pixel]
+
+#define MISSILE_TRASPARENT_COL FAB_white
+
+#define MISSILE_LX 7 //[pixel]
+#define MISSILE_LY 15 //[pixel]
+
+#define MISSILE_PERIOD 10000
+#define MISSILE_WCET 500
+#define MISSILE_MET 100
+
+
+
+
+
+// MUTEX:
+mutex_t grx_mutex; //per l'accesso alla grafica
+int app_mutex_init(mutex_t *m);
+
+
+
+// FUNZIONI GESTIONE RISORSE DI MEMORIA:
+void kern_init_bca();
+
+// implemented in esplo.c
+TASK esplo(void *argv);
+
+// implemented in missile.c
+PID crea_hard_missile();
+PID crea_soft_missile();
+TASK missile();
+
+// implemented in cannone.c
+PID crea_soft_cannone_creator();
+TASK cannone_creator();
+PID crea_hard_cannone(int index);
+PID crea_soft_cannone(int index);
+TASK cannone(void * index);
+
+// implemented in aereo.c
+PID crea_soft_aereo_creator();
+TASK aereo_creator();
+PID crea_hard_aereo(int index);
+PID crea_soft_aereo(int index);
+TASK aereo(void * index);
+
+// implemented in control.c
+PID crea_soft_control();
+TASK control(void *);
+
+// implemented in dummy.c
+PID crea_soft_dummy_radar ();
+TASK dummy_radar(void *);
+
+// implemented in scenario.c
+void scenario();
+void info();
+
+
+//------------------END------------------
+#endif
Index: demos/branches/xen/bca/dummy.c
===================================================================
--- demos/branches/xen/bca/dummy.c (nonexistent)
+++ demos/branches/xen/bca/dummy.c (revision 1684)
@@ -0,0 +1,104 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Paolo Gai <pj@gandalf.sssup.it>
+ * Massimiliano Giorgi <massy@gandalf.sssup.it>
+ * Luca Abeni <luca@gandalf.sssup.it>
+ * (see the web pages for full authors list)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/* CVS : $Id: dummy.c,v 1.2 2006-07-03 15:10:15 tullio Exp $ */
+
+/*
+ * Copyright (C) 2000 Fabio Calabrese <fabiocalabrese77@yahoo.it>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+#include "bca.h"
+
+PID crea_soft_dummy_radar()
+{
+ SOFT_TASK_MODEL m;
+ PID pid;
+
+ soft_task_default_model(m);
+ soft_task_def_level(m,0);
+ soft_task_def_periodic(m);
+ soft_task_def_period(m,DUMMY_RADAR_PERIOD);
+ soft_task_def_wcet(m,DUMMY_RADAR_WCET);
+ soft_task_def_met(m,DUMMY_RADAR_MET);
+
+ pid = task_create("dummy_radar", dummy_radar, &m, NULL);
+ return pid;
+}
+
+TASK dummy_radar(void *argv)
+{
+ WORD i,r,r_max,pos;
+ BYTE red[3]={250, 150,50};
+ int d[3]= {+10,+10,+10};
+
+ r = 0;
+ r_max = ballframe_radar->r+1;
+
+ while(1){
+ for(i=0; i<3; i++) {
+ if (red[i]<50) d[i]=+10;
+ if (red[i]>250) d[i]=-50;
+ red[i] += d[i];
+ grx_disc(ballframe_lucerossa[i]->cx,
+ ballframe_lucerossa[i]->cy,
+ ballframe_lucerossa[i]->r,
+ FAB_rgb(red[i],50,50));
+ }
+ grx_disc(ballframe_radar->cx,
+ ballframe_radar->cy,
+ r_max, FAB_blue);
+ grx_circle(ballframe_radar->cx,
+ ballframe_radar->cy,
+ (r+9)%r_max, FAB_white);
+ grx_circle(ballframe_radar->cx,
+ ballframe_radar->cy,
+ (r+5)%r_max, FAB_rgb(200,200,255));
+ grx_circle(ballframe_radar->cx,
+ ballframe_radar->cy,
+ r%r_max, FAB_rgb(100,100,255));
+ for (i=0; i<AEREO_N_MAX; i++) {
+ if (aereo_table[i].status
+ &&aereo_table[i].x>X0
+ &&aereo_table[i].y>Y0) {
+ pos = ballframe_radar->cx - ballframe_radar->r
+ + (aereo_table[i].x-X0)*2*ballframe_radar->r/500;
+ grx_plot(pos,ballframe_radar->cy,FAB_yellow);
+ }
+ }
+ r++;
+
+ task_endcycle();
+ }
+}
Index: demos/branches/xen/bca/aereo.c
===================================================================
--- demos/branches/xen/bca/aereo.c (nonexistent)
+++ demos/branches/xen/bca/aereo.c (revision 1684)
@@ -0,0 +1,238 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Paolo Gai <pj@gandalf.sssup.it>
+ * Massimiliano Giorgi <massy@gandalf.sssup.it>
+ * Luca Abeni <luca@gandalf.sssup.it>
+ * (see the web pages for full authors list)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/* CVS : $Id: aereo.c,v 1.3 2006-07-03 15:10:15 tullio Exp $ */
+
+/*
+ * Copyright (C) 2000 Fabio Calabrese <fabiocalabrese77@yahoo.it>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+#include "bca.h"
+
+TASK aereo_creator(void * arg)
+{ int i, index, last;
+ WORD count;
+ PID pid=-1;
+ COLOR col;
+ double vel;
+ int dir;
+ WORD h;
+ double l;
+ WORD x, y;
+
+ while(1){
+
+ count=0;
+ index=-1;
+ last=-1;
+
+ for (i=0; i<AEREO_N_MAX; i++) // Conteggio aerei attivi
+ if (aereo_table[i].status) {
+ count++;
+ last=i; //...ultima posizione occupata in tabella...
+ }
+ else {
+ if (index==-1) index=i; //...prima posizione libera in tabella...
+ }
+
+ if (count<aereo_count && index!=-1) { // Richiesta nuovo aereo
+ aereo_table[index].status = 1; //...occupa posizione...
+ aereo_table[index].killing = 0; //...disattiva richiesta di kill...
+ col = FAB_rgb(FAB_int_rand(50,255), //...nuovo colore...
+ FAB_int_rand(50,255),
+ FAB_int_rand(50,255));
+ vel = FAB_double_rand(AEREO_V_MIN,AEREO_V_MAX); //...velocita'...
+ dir = FAB_sign_rand(); //...direzione...
+ h = FAB_int_rand(AEREO_H_MIN,AEREO_H_MAX); //...altezza...
+ y = Y0 + 500 - h*500/BASE_H;
+ l = (dir>0) ? AEREO_L_MIN : AEREO_L_MAX; //...posizione iniz...
+ x = (dir>0) ? AEREO_X_MIN : AEREO_X_MAX;
+ // ... settaggio valori in tabella ...
+ aereo_table[index].color = col;
+ if (index>0) {
+ if (dir>0) FAB_image_copy(image_aereo[0],aereo_table[index].image);
+ else FAB_image_copy(image_aereo[1],aereo_table[index].image);
+ }
+ else {
+ if (dir>0) FAB_image_copy(image_aereo[2],aereo_table[index].image);
+ else FAB_image_copy(image_aereo[3],aereo_table[index].image);
+ }
+ FAB_image_color_change(aereo_table[index].image,AEREO_BASE_COL,col);
+ aereo_table[index].vel = vel;
+ aereo_table[index].dir = dir;
+ aereo_table[index].h = h;
+ aereo_table[index].l = l;
+ aereo_table[index].x = x;
+ aereo_table[index].y = y;
+ if (index==0) pid = crea_hard_aereo(index); // sempre il 1ø hard
+ else pid = crea_soft_aereo(index); // tutti gli altri soft
+ aereo_table[index].pid = pid;
+ if (pid!=NIL) task_activate(pid);
+ else { //ripristino il posto libero in tabella;
+ aereo_table[index].status = 0;
+ aereo_table[index].killing = 0;
+ }
+ }
+
+ else if (count>aereo_count) { // Richiesta cancellazione aereo
+ aereo_table[last].killing = 1;
+ }
+
+ task_endcycle();
+ }
+ return NULL;
+}
+
+TASK aereo(void *arg)
+{
+ int index; // indice nella aereo_table
+ FAB_IMAGE* image;
+ int xx0,yy0,xx1,yy1;
+ int y;
+ double x;
+ double old_x; // [pixel]: conserva valore x prima di aggiornare
+ double dx; // [pixel/us]: spostamento periodico
+ int first_time;
+
+ index = (int)arg;
+ image = aereo_table[index].image;
+ y = aereo_table[index].y;
+ x = aereo_table[index].x;
+ dx = aereo_table[index].vel * (AEREO_X_MAX-AEREO_X_MIN) / (double)BASE_L
+ * (AEREO_PERIOD / (60*60*1000000.0))
+ * aereo_table[index].dir;
+ first_time = 1;
+
+ while(1){
+
+ old_x = x;
+ x += dx;
+
+ xx0 = old_x - AEREO_LX/2;
+ yy0 = y - AEREO_LY/2;
+ xx1 = xx0 + AEREO_LX - 1;
+ yy1 = yy0 + AEREO_LY - 1;
+
+ aereo_table[index].x = x; //...aggiornamento posizione in tabella...
+
+ if (x<AEREO_X_MIN || x>AEREO_X_MAX) {
+ aereo_table[index].killing = 1;
+ }
+
+ if (aereo_table[index].killing) {
+ if (!first_time) {
+ mutex_lock(&grx_mutex);
+ FAB_image_put_within(image_bca,X0,Y0,xx0,yy0,xx1,yy1);
+ mutex_unlock(&grx_mutex);
+ }
+ aereo_table[index].status=0;
+ aereo_table[index].pid=-2;
+ aereo_table[index].killing=0;
+ //il task aereo_creator si accorge che c'Š un aereo in meno
+ // quindi ne ricreer… uno nuovo!!!
+ return NULL;
+ }
+
+ if(aereo_table[index].x!=(int)old_x) {//...se c'Š lo spostamento reale
+ // di almeno un pixel...
+ mutex_lock(&grx_mutex); //...aggiorna disegno...
+ if (first_time) {
+ first_time=0;
+ }
+ else {
+ FAB_image_put_within(image_bca,X0,Y0,xx0,yy0,xx1,yy1);
+ }
+
+ FAB_image_put_within(image, x - AEREO_LX/2, y - AEREO_LY/2,
+ X0, Y0, X1, Y1);
+ mutex_unlock(&grx_mutex);
+ }
+
+ task_endcycle();
+ }
+
+return NULL;
+}
+
+PID crea_soft_aereo_creator()
+{
+ SOFT_TASK_MODEL m;
+ PID pid;
+
+ soft_task_default_model(m);
+ soft_task_def_periodic(m);
+ soft_task_def_period(m,AEREO_CREATOR_PERIOD);
+ soft_task_def_wcet(m,AEREO_CREATOR_WCET);
+ soft_task_def_met(m,AEREO_CREATOR_MET);
+
+ pid = task_create("aereo_creator", aereo_creator, &m, NULL);
+ return pid;
+}
+
+PID crea_hard_aereo(int index)
+{
+ HARD_TASK_MODEL m;
+ PID pid;
+
+ hard_task_default_model(m);
+ hard_task_def_level(m,1);
+ hard_task_def_arg(m,(void*)index);
+ hard_task_def_periodic(m);
+ hard_task_def_wcet(m, AEREO_WCET);
+ hard_task_def_mit(m,AEREO_PERIOD);
+ hard_task_def_usemath(m);
+
+ pid = task_create("hard_aereo", aereo, &m, NULL);
+ return pid;
+}
+
+PID crea_soft_aereo(int index)
+{
+ SOFT_TASK_MODEL m;
+ PID pid;
+
+ soft_task_default_model(m);
+ soft_task_def_level(m,2);
+ soft_task_def_arg(m,(void*)index);
+ soft_task_def_periodic(m);
+ soft_task_def_period(m,AEREO_PERIOD);
+ soft_task_def_wcet(m, AEREO_WCET);
+ soft_task_def_met(m,AEREO_MET);
+ soft_task_def_usemath(m);
+
+ pid = task_create("soft aereo", aereo, &m, NULL);
+ return pid;
+}
+
Index: demos/branches/xen/bca/makefile
===================================================================
--- demos/branches/xen/bca/makefile (nonexistent)
+++ demos/branches/xen/bca/makefile (revision 1684)
@@ -0,0 +1,16 @@
+#
+#
+#
+
+ifndef BASE
+BASE=../..
+endif
+include $(BASE)/config/config.mk
+
+PROGS= bca
+
+include $(BASE)/config/example.mk
+
+bca:
+ make -f $(SUBMAKE) APP=bca INIT= OTHEROBJS="initfile.o fab_lib.o bca_lib.o esplo.o missile.o cannone.o aereo.o control.o dummy.o scenario.o" SHARKOPT="__LINUXC26__ __PCI__ __INPUT__ __FB__"
+
Index: demos/branches/xen/bca/initfile.c
===================================================================
--- demos/branches/xen/bca/initfile.c (nonexistent)
+++ demos/branches/xen/bca/initfile.c (revision 1684)
@@ -0,0 +1,230 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Giacomo Guidi <giacomo@gandalf.sssup.it>
+ * Tullio Facchinetti <tullio.facchinetti@unipv.it>
+ * (see the web pages for full authors list)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+#define PI_MUTEX
+
+#include "kernel/kern.h"
+#include "intdrive/intdrive/intdrive.h"
+#include "edf/edf/edf.h"
+#include "hardcbs/hardcbs/hardcbs.h"
+#include "rr/rr/rr.h"
+#include "dummy/dummy/dummy.h"
+
+#include "sem/sem/sem.h"
+#include "hartport/hartport/hartport.h"
+#include "cabs/cabs/cabs.h"
+
+#include "pi/pi/pi.h"
+#include "nop/nop/nop.h"
+
+#include "bca.h"
+
+#include <drivers/shark_linuxc26.h>
+#include <drivers/shark_pci26.h>
+#include <drivers/shark_input26.h>
+#include <drivers/shark_keyb26.h>
+#include <drivers/shark_fb26.h>
+
+#define FRAME_BUFFER_DEVICE 0
+
+/*+ sysyem tick in us +*/
+#define TICK 0
+
+/*+ RR tick in us +*/
+#define RRTICK 2000
+
+/*+ Interrupt Server +*/
+#define INTDRIVE_Q 1000
+#define INTDRIVE_U 0.1*MAX_BANDWIDTH
+#define INTDRIVE_FLAG 0
+
+void call_shutdown_task(void *arg);
+int device_drivers_init();
+int device_drivers_close();
+void set_shutdown_task();
+TASK shutdown_task_body(void *arg);
+
+PID shutdown_task_PID = -1;
+
+TIME __kernel_register_levels__(void *arg)
+{
+ struct multiboot_info *mb = (struct multiboot_info *)arg;
+ LEVEL EDF_level;
+
+ INTDRIVE_register_level(INTDRIVE_Q, INTDRIVE_Q, INTDRIVE_U, INTDRIVE_FLAG);
+ EDF_level = EDF_register_level(EDF_ENABLE_ALL);
+ HCBS_register_level(HCBS_ENABLE_ALL, EDF_level);
+ RR_register_level(RRTICK, RR_MAIN_YES, mb);
+ dummy_register_level();
+
+ SEM_register_module();
+ CABS_register_module();
+
+ PI_register_module();
+ NOP_register_module();
+
+ kern_init_bca();
+
+ return TICK;
+}
+
+TASK __init__(void *arg)
+{
+ struct multiboot_info *mb = (struct multiboot_info *)arg;
+
+ HARTPORT_init();
+
+ /* Create the shutdown task. It will be activated at RUNLEVEL
+ SHUTDOWN */
+ set_shutdown_task();
+
+ /* Init the drivers */
+ device_drivers_init();
+
+ /* Set the shutdown task activation */
+ sys_atrunlevel(call_shutdown_task, NULL, RUNLEVEL_SHUTDOWN);
+
+ __call_main__(mb);
+
+ return (void *)0;
+}
+
+#ifdef PI_MUTEX
+int app_mutex_init(mutex_t *m)
+{
+ PI_mutexattr_t attr;
+
+ PI_mutexattr_default(attr);
+
+ return mutex_init(m, &attr);
+}
+#else
+int app_mutex_init(mutex_t *m)
+{
+ NOP_mutexattr_t attr;
+
+ NOP_mutexattr_default(attr);
+
+ return mutex_init(m, &attr);
+}
+#endif
+
+void set_shutdown_task() {
+
+ /* WARNING: the shutdown task is a background thread. It cannot execute
+ if the system is overloaded */
+ NRT_TASK_MODEL nrt;
+
+ nrt_task_default_model(nrt);
+ nrt_task_def_system(nrt);
+
+ shutdown_task_PID = task_create("Shutdown Task",shutdown_task_body,&nrt,NULL);
+ if (shutdown_task_PID == NIL) {
+ sys_shutdown_message("Error: Cannot create shutdown task\n");
+ exit(1);
+ }
+
+}
+
+int device_drivers_init() {
+
+ int res;
+ KEYB_PARMS kparms = BASE_KEYB;
+
+ LINUXC26_register_module(TRUE);
+
+ PCI26_init();
+
+ INPUT26_init();
+
+ keyb_def_ctrlC(kparms, NULL);
+
+ KEYB26_init(&kparms);
+
+ FB26_init();
+
+ res = FB26_open(FRAME_BUFFER_DEVICE);
+ if (res) {
+ cprintf("Error: Cannot open graphical mode\n");
+ KEYB26_close();
+ INPUT26_close();
+ exit(1);
+ }
+
+ FB26_use_grx(FRAME_BUFFER_DEVICE);
+
+ FB26_setmode(FRAME_BUFFER_DEVICE,"800x600-16");
+
+ return 0;
+
+}
+
+int device_drivers_close() {
+
+ FB26_close(FRAME_BUFFER_DEVICE);
+
+ KEYB26_close();
+
+ INPUT26_close();
+
+ return 0;
+
+}
+
+#define SHUTDOWN_TIMEOUT_SEC 3
+
+void call_shutdown_task(void *arg)
+{
+ struct timespec t;
+
+ sys_gettime(&t);
+ t.tv_sec += SHUTDOWN_TIMEOUT_SEC;
+
+ /* Emergency timeout to exit from RUNLEVEL_SHUTDOWN */
+ kern_event_post(&t,(void *)((void *)sys_abort_shutdown),(void *)0);
+
+ task_activate(shutdown_task_PID);
+}
+
+TASK shutdown_task_body(void *arg) {
+
+ device_drivers_close();
+
+ sys_shutdown_message("-- S.Ha.R.K. Closed --\n");
+
+ return NULL;
+
+}
Index: demos/branches/xen/bca/fab_lib.c
===================================================================
--- demos/branches/xen/bca/fab_lib.c (nonexistent)
+++ demos/branches/xen/bca/fab_lib.c (revision 1684)
@@ -0,0 +1,424 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Paolo Gai <pj@gandalf.sssup.it>
+ * Massimiliano Giorgi <massy@gandalf.sssup.it>
+ * Luca Abeni <luca@gandalf.sssup.it>
+ * (see the web pages for full authors list)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/* CVS : $Id: fab_lib.c,v 1.5 2005-01-08 14:34:28 pj Exp $ */
+
+/*
+ * Copyright (C) 2000 Fabio Calabrese <fabiocalabrese77@yahoo.it>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+/****************************************************
+ * *
+ * file: FAB_lib.c *
+ * libreria: FAB_LIB *
+ * version: 1.0 25/08/2002 *
+ * creato da: Fabio CALABRESE *
+ * *
+ ****************************************************/
+
+#ifndef __FAB_LIB_c__
+#define __FAB_LIB_c__
+//-------------------BEGIN---------------------------
+
+// *** Librerie di S.Ha.R.K. ***
+#include<kernel/kern.h>
+#include<kernel/mem.h>
+
+#include<drivers/shark_fb26.h>
+
+#include<ll/sys/types.h>
+#include<ll/i386/x-dos.h>
+// *** Librerie Standard C ***
+// *** Librerie FAB ***
+#include"fab_lib/fab_msg.h"
+#include"fab_lib/fab_tool.h"
+#include"fab_lib/fab_grx.h"
+
+// *** Corpo delle funzioni in FAB_msg.h *** //
+
+void FAB_print(char * InitMsg, char * msg)
+{ if (InitMsg!=NULL) {kern_printf("\n[%s]",(InitMsg));}
+ if (msg!=NULL) {kern_printf("\n %s.",msg);}
+}
+void __FAB_go(int test, char * OkMsg, char * ErrorMsg,int EXITflag)
+{
+ if (OkMsg==NULL) OkMsg=FAB_EMPTY_MSG;
+ if (ErrorMsg==NULL) ErrorMsg=FAB_EMPTY_MSG;
+
+ if (!test) {kern_printf("\n OK: %s.",OkMsg);}
+ else {kern_printf("\n ERROR: %s!",ErrorMsg);
+ if (EXITflag==FAB_EXIT_YES) exit(0);
+ }
+}
+
+// *** Corpo delle funzioni in FAB_tool.h *** //
+
+// nessun corpo!
+
+// *** Corpo delle funzioni in FAB_show.h *** //
+
+void FAB_show_sched_modules()
+{ //int i;
+
+ FAB_print("MODULI DI SCHEDULAZIONE",NULL);
+ kern_printf("\n (livello) (nome)");
+ kern_printf("Names non more available!");
+ //for (i=0; i<sched_levels; i++)
+ // {kern_printf("\n %-9d %s",i,(level_table[i])->level_name);
+ // }
+ FAB_newline();
+}
+
+// *** Corpo delle funzioni in FAB_grx.h ***
+
+FAB_BALLFRAME* FAB_ballframe_alloc()
+{ FAB_BALLFRAME* frame;
+
+ frame=(FAB_BALLFRAME*)kern_alloc(sizeof(FAB_BALLFRAME));
+ if (frame==NULL) {
+ FAB_print(NULL,"BALLFRAME CREATING... ERROR #1");
+ return NULL;
+ }
+ return frame;
+}
+void FAB_ballframe_free(FAB_BALLFRAME * frame)
+{ if (frame!=NULL)
+ { kern_free(frame,sizeof(FAB_BALLFRAME));
+ }
+}
+
+FAB_FRAME* FAB_frame_alloc()
+{ FAB_FRAME* frame;
+
+ frame=(FAB_FRAME*)kern_alloc(sizeof(FAB_FRAME));
+ if (frame==NULL) {
+ FAB_print(NULL,"FRAME CREATING... ERROR #1");
+ return NULL;
+ }
+
+ return frame;
+}
+void FAB_frame_free(FAB_FRAME * frame)
+{ if (frame!=NULL)
+ { kern_free(frame,sizeof(FAB_FRAME));
+ }
+}
+void FAB_ballborder_put(FAB_BORDER* border, WORD cx, WORD cy, WORD r_int)
+{ int i;
+
+ for (i=0; i<border->dim; i++)
+ grx_circle(cx, cy, r_int+i, border->buf[i]);
+}
+void FAB_border_put(FAB_BORDER* border, WORD x0, WORD y0, WORD x1, WORD y1)
+{ int i;
+
+ for (i=0; i<border->dim; i++)
+ grx_rect(x0-i, y0-i, x1+i, y1+i, border->buf[i]);
+}
+FAB_BORDER* FAB_border_alloc(WORD dim)
+{ FAB_BORDER* border;
+
+ border=(FAB_BORDER*)kern_alloc(sizeof(FAB_BORDER));
+ if (border==NULL) {
+ FAB_print(NULL,"BORDER CREATING... ERROR #1");
+ return NULL;
+ }
+
+ border->buf=(COLOR*)kern_alloc(dim*sizeof(COLOR));
+ if (border->buf==NULL) {
+ FAB_print(NULL,"BORDER CREATING... ERROR #2");
+ return NULL;
+ }
+
+ border->dim = dim;
+
+ return border;
+}
+void FAB_border_free(FAB_BORDER * border)
+{ if (border!=NULL)
+ { kern_free(border->buf,border->dim*sizeof(COLOR));
+ kern_free(border,sizeof(FAB_BORDER));
+ }
+}
+void FAB_image_free(FAB_IMAGE* image)
+{ if (image!=NULL)
+ { kern_free(image->buf,image->lx*image->ly*sizeof(COLOR));
+ kern_free(image,sizeof(FAB_IMAGE));
+ }
+}
+FAB_IMAGE* FAB_image_alloc(WORD lx, WORD ly)
+{ FAB_IMAGE* image;
+
+ image=(FAB_IMAGE*)kern_alloc(sizeof(FAB_IMAGE));
+ if (image==NULL) {
+ FAB_print(NULL,"IMAGE CREATING... ERROR #1");
+ return NULL;
+ }
+
+ image->buf=(COLOR*)kern_alloc(lx*ly*sizeof(COLOR));
+ if (image->buf==NULL) {
+ FAB_print(NULL,"IMAGE CREATING... ERROR #2");
+ return NULL;
+ }
+ FAB_image_no_trasparent_set(image);
+ image->lx = lx;
+ image->ly = ly;
+
+ return image;
+}
+int FAB_image_load(FAB_IMAGE* image, char* file_name)
+{
+ DOS_FILE* file;
+ BYTE rgb[3];
+ COLOR * buf;
+ int i;
+
+ file=DOS_fopen(file_name,"r");
+ if (file==NULL) return -1;
+
+ buf = image->buf;
+ for (i=0; i<image->lx*image->ly; i++)
+ { DOS_fread(&rgb[0],sizeof(BYTE),3,file);
+ *buf = FAB_rgb(rgb[0],rgb[1],rgb[2]);
+ buf++;
+ }
+
+ DOS_fclose(file);
+ return(0);
+}
+void FAB_image_get(FAB_IMAGE* image, WORD x0, WORD y0, WORD lx, WORD ly)
+{ WORD x, y;
+ COLOR* buf;
+
+ buf = image->buf;
+ for (y=0; y<image->ly; y++)
+ for (x=0; x<image->lx; x++) {
+ *buf = (COLOR) grx_getpixel(x0+x,y0+y);
+ buf++;
+ }
+ FAB_image_no_trasparent_set(image);
+}
+void FAB_image_put(FAB_IMAGE* image, WORD x0, WORD y0)
+{ WORD x, y;
+ COLOR* buf;
+
+ buf = image->buf;
+ if (!image->trasparent) {
+ for (y=0; y<image->ly; y++)
+ for (x=0; x<image->lx; x++)
+ grx_plot(x0+x,y0+y,*buf++);
+ }
+ else {
+ for (y=0; y<image->ly; y++)
+ for (x=0; x<image->lx; x++) {
+ if (*buf!=image->trasparent_col)
+ grx_plot(x0+x,y0+y,*buf);
+ buf++;
+ }
+ }
+}
+void FAB_image_put_within(FAB_IMAGE* image, WORD x0, WORD y0,
+ WORD xx0, WORD yy0, WORD xx1, WORD yy1)
+{ int step_x0_xx0;
+ int step_y0_yy0;
+ int step_xx1_x1;
+ int step_yy1_y1;
+ WORD xx, yy;
+ COLOR* buf;
+
+ step_x0_xx0 = xx0 - x0;
+ step_y0_yy0 = yy0 - y0;
+ step_xx1_x1 = (x0 + image->lx - 1) - xx1;
+ step_yy1_y1 = (y0 + image->ly - 1) - yy1;
+
+ if (step_x0_xx0 < 0) step_x0_xx0 = 0;
+ if (step_y0_yy0 < 0) step_y0_yy0 = 0;
+ if (step_xx1_x1 < 0) step_xx1_x1 = 0;
+ if (step_yy1_y1 < 0) step_yy1_y1 = 0;
+
+ buf = image->buf + step_y0_yy0*image->lx;
+ if (!image->trasparent) {
+ for(yy=step_y0_yy0; yy<image->ly-step_yy1_y1; yy++) {
+ buf += step_x0_xx0;
+ for(xx=step_x0_xx0; xx<image->lx-step_xx1_x1; xx++)
+ grx_plot(x0+xx,y0+yy,*buf++);
+ buf += step_xx1_x1;
+ }
+ }
+ else {
+ for(yy=step_y0_yy0; yy<image->ly-step_yy1_y1; yy++) {
+ buf += step_x0_xx0;
+ for(xx=step_x0_xx0; xx<image->lx-step_xx1_x1; xx++) {
+ if (*buf!=image->trasparent_col)
+ grx_plot(x0+xx,y0+yy,*buf);
+ buf++;
+ }
+ buf += step_xx1_x1;
+ }
+ }
+}
+//...funzione usata da FAB_image_fill()...
+void __FAB_image_put_into(FAB_IMAGE* image, WORD x0, WORD y0, WORD lx, WORD ly)
+{ WORD x, y;
+ WORD skipped_pixels;
+ COLOR* buf;
+
+ if (lx < image->lx) skipped_pixels = image->lx - lx;
+ else skipped_pixels = 0;
+ buf = image->buf;
+
+ if (!image->trasparent) {
+ for (y=0; y<ly; y++, buf+=skipped_pixels) {
+ if (y > image->ly -1) break;
+ for (x=0; x<lx; x++, buf++) {
+ if (x < image->lx) grx_plot(x0+x,y0+y,*buf);
+ else break;
+ }
+ }
+ }
+ else {
+ for (y=0; y<ly; y++, buf+=skipped_pixels) {
+ if (y > image->ly -1) break;
+ for (x=0; x<lx; x++, buf++) {
+ if (x < image->lx) {
+ if (*buf!=image->trasparent_col)
+ grx_plot(x0+x,y0+y,*buf);
+ }
+ else break;
+ }
+ }
+ }
+}
+void FAB_image_fill(FAB_IMAGE* image, WORD x0, WORD y0, WORD lx, WORD ly)
+{ WORD x, y;
+ WORD sub_lx, sub_ly;
+
+ for (y=0; y<ly; y+=image->ly) {
+ sub_ly = ly - y; // spazio verticale disponibile
+ if (sub_ly > image->ly) sub_ly = image->ly;
+ for (x=0; x<lx; x+=image->lx) {
+ sub_lx = lx - x; // spazio orizzontale disponibile
+ if (sub_lx > image->lx) sub_lx = image->lx;
+ __FAB_image_put_into(image,x0+x,y0+y,sub_lx,sub_ly);
+ }
+ }
+}
+void FAB_frame_put(FAB_FRAME* frame, WORD x0, WORD y0, WORD lx, WORD ly)
+{
+ WORD eff_dim;
+ int j;
+
+ //BORDO DEL FRAME
+ if (frame->border!=NULL) eff_dim = frame->border->dim;
+ else eff_dim = frame->border_dim;
+ frame->x0 = x0 + eff_dim;
+ frame->y0 = y0 + eff_dim;
+ frame->x1 = x0 + lx - eff_dim - 1;
+ frame->y1 = y0 + ly - eff_dim - 1;
+ if (frame->border!=NULL) {
+ FAB_border_put(frame->border, frame->x0-1, frame->y0-1,
+ frame->x1+1, frame->y1+1);
+ }
+ else {
+ for (j=0; j<eff_dim; j++)
+ grx_rect(frame->x0-1-j, frame->y0-1-j,
+ frame->x1+1+j, frame->y1+1+j, frame->border_col);
+ }
+
+ //PANNELLO DEL FRAME
+ if (!frame->trasparent) {
+ if (frame->image==NULL) grx_box(frame->x0, frame->y0,
+ frame->x1, frame->y1, frame->color);
+ else FAB_image_fill(frame->image,
+ frame->x0, frame->y0,
+ lx-eff_dim*2, ly-eff_dim*2);
+ }
+}
+
+void FAB_ballframe_put(FAB_BALLFRAME* frame, WORD cx, WORD cy, WORD r)
+{
+ int j;
+ WORD eff_dim;
+
+ //BORDO DEL FRAME
+ if (frame->border!=NULL) eff_dim = frame->border->dim;
+ else eff_dim = frame->border_dim;
+ frame->cx = cx;
+ frame->cy = cy;
+ frame->r = r - eff_dim;
+
+ if (frame->border!=NULL) {
+ FAB_ballborder_put(frame->border,frame->cx,frame->cy,frame->r+1);
+ }
+ else {
+ for (j=0; j<eff_dim; j++)
+ grx_circle(frame->cx,frame->cy,frame->r+1+j,frame->border_col);
+ }
+
+ //PANNELLO DEL FRAME
+ if (!frame->trasparent) {
+ grx_disc(frame->cx,frame->cy,frame->r,frame->color);
+ }
+}
+
+void FAB_image_copy(FAB_IMAGE* orig_image, FAB_IMAGE* dest_image)
+{
+ COLOR* orig_buf;
+ COLOR* dest_buf;
+ int j,n;
+
+ n = orig_image->lx * orig_image->ly;
+ if (n==(dest_image->lx * dest_image->ly)) {
+ orig_buf = orig_image->buf;
+ dest_buf = dest_image->buf;
+ for(j=0; j<n; j++) {
+ *dest_buf = *orig_buf;
+ orig_buf++;
+ dest_buf++;
+ }
+ }
+}
+void FAB_image_color_change(FAB_IMAGE* image, COLOR old_col, COLOR new_col)
+{ COLOR* buf;
+ int j,n;
+
+ buf = image->buf;
+ n = image->lx * image->ly;
+ for(j=0; j<n; j++, buf++)
+ if (*buf==old_col)
+ *buf=new_col;
+}
+//----------------------END--------------------------
+#endif
Index: demos/branches/xen/bca/fab_lib/fab_msg.h
===================================================================
--- demos/branches/xen/bca/fab_lib/fab_msg.h (nonexistent)
+++ demos/branches/xen/bca/fab_lib/fab_msg.h (revision 1684)
@@ -0,0 +1,94 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Paolo Gai <pj@gandalf.sssup.it>
+ * Massimiliano Giorgi <massy@gandalf.sssup.it>
+ * Luca Abeni <luca@gandalf.sssup.it>
+ * (see the web pages for full authors list)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/* CVS : $Id: fab_msg.h,v 1.2 2004-05-23 08:59:28 giacomo Exp $ */
+
+/*
+ * Copyright (C) 2000 Fabio Calabrese <fabiocalabrese77@yahoo.it>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+/****************************************************
+ * *
+ * file: FAB_msg.h *
+ * libreria: FAB_LIB *
+ * version: 1.0 25/08/2002 *
+ * creato da: Fabio CALABRESE *
+ * *
+ ****************************************************
+ * *
+ * descrizione: libreria di funzioni per stampare *
+ * messaggi circa il corretto esito *
+ * dell'esecuzione delle istruzioni; *
+ * stampa semplici stringhe colorate; *
+ * aiuta a fare il debbuging. *
+ * *
+ ****************************************************/
+
+#ifndef __FAB_LIB__FAB_msg_h__
+#define __FAB_LIB__FAB_msg_h__
+//-------------------BEGIN---------------------------
+
+// *** Librerie di S.Ha.R.K. ***
+#include <ll/i386/cons.h>
+// *** Librerie Standard C ***
+// *** Librerie FAB ***
+
+// -----------
+// Definizioni
+//----------------------
+#define FAB_EXIT_YES 1
+#define FAB_EXIT_NO 0
+#define FAB_EMPTY_MSG ""
+//----------------------
+
+// ----------------
+// Funzioni & Macro
+//-------------------------------------------------
+#define FAB_newline() NL()
+#define FAB_home() HOME()
+#define FAB_clr() clear()
+
+void FAB_print(char * InitMsg, char * msg);
+#define FAB_msg(TEST,OKMSG,ERRORMSG) __FAB_go((TEST),(OKMSG),(ERRORMSG),FAB_EXIT_NO)
+#define FAB_go(TEST,OKMSG,ERRORMSG,EXITFLAG) __FAB_go((TEST),(OKMSG),(ERRORMSG),(EXITFLAG))
+//--------------------------------------------------
+
+
+// Altro...
+
+void __FAB_go(int test, char * OkMsg, char * ErrorMsg,int EXITflag);
+
+//----------------------END--------------------------
+#endif
Index: demos/branches/xen/bca/fab_lib/fab_grx.h
===================================================================
--- demos/branches/xen/bca/fab_lib/fab_grx.h (nonexistent)
+++ demos/branches/xen/bca/fab_lib/fab_grx.h (revision 1684)
@@ -0,0 +1,203 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Paolo Gai <pj@gandalf.sssup.it>
+ * Massimiliano Giorgi <massy@gandalf.sssup.it>
+ * Luca Abeni <luca@gandalf.sssup.it>
+ * (see the web pages for full authors list)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/* CVS : $Id: fab_grx.h,v 1.3 2004-05-23 08:59:28 giacomo Exp $ */
+
+/*
+ * Copyright (C) 2000 Fabio Calabrese <fabiocalabrese77@yahoo.it>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+/****************************************************
+ * *
+ * file: FAB_grx.h *
+ * libreria: FAB_LIB *
+ * version: 1.0 25/08/2002 *
+ * creato da: Fabio CALABRESE *
+ * *
+ ****************************************************
+ * *
+ * descrizione: libreria di funzioni grafiche: *
+ * permette di gestire con facilita' *
+ * immagini, cornici, e veri e propri *
+ * pannelli colorati. *
+ * Il contesto di grafica va avviato *
+ * con FAB_grx_open() e alla fine *
+ * chiuso correttamente con la funz. *
+ * FAB_grx_close(). L'ambiente di *
+ * grafica e'impostato a 16bit per *
+ * default, comunque e' sempre *
+ * possibile scegliere la profondita' *
+ * di colori preferita tra 15/16/24/32*
+ * definendo semplicemente solo una *
+ * delle seguenti costanti all'inizio *
+ * del proprio programma che include *
+ * questa libreria grafica: *
+ * FAB_GRX_15 *
+ * FAB_GRX_16 (default) *
+ * FAB_GRX_24 *
+ * FAB_GRX_32 *
+ * *
+ ****************************************************/
+
+#ifndef __FAB_LIB_fab_grx_h__
+#define __FAB_LIB_fab_grx_h__
+//-------------------BEGIN---------------------------
+
+// *** Librerie di S.Ha.R.K. ***
+#include <kernel/kern.h>
+#include <ll/sys/types.h>
+
+#include <drivers/shark_fb26.h>
+
+// *** Librerie Standard C ***
+// *** Librerie FAB ***
+#include"fab_grx.sys"
+
+//#define FAB_GRX_15
+//#define FAB_GRX_16
+//#define FAB_GRX_24
+//#define FAB_GRX_32
+
+typedef __FAB_COLOR COLOR;
+
+typedef struct {
+ WORD lx,ly;
+ COLOR * buf;
+ int trasparent;
+ COLOR trasparent_col;
+ } FAB_IMAGE;
+
+typedef struct {
+ WORD dim;
+ COLOR * buf;
+ } FAB_BORDER;
+
+typedef struct {
+ FAB_BORDER * border; //default = NULL
+ WORD border_dim; //default = 0
+ COLOR border_col;
+
+ BYTE trasparent; //default = 0
+ FAB_IMAGE * image; //default = NULL
+ COLOR color;
+
+ WORD x0,y0,x1,y1; //spigoli pannello interno
+ //cornice esclusa: vengono settati
+ //automaticamente con FAB_frame_put().
+ } FAB_FRAME;
+typedef struct {
+ FAB_BORDER * border; //default = NULL
+ WORD border_dim; //default = 0
+ COLOR border_col;
+
+ BYTE trasparent; //default = 0
+ COLOR color;
+
+ WORD cx,cy,r; //centro e raggio del pannello
+ //circolare: vengono settati
+ //automaticamente con FAB_ballframe_put().
+ } FAB_BALLFRAME;
+
+// -----------
+// Definizioni
+//----------------------
+#define FAB_BPP __FAB_BPP
+#define FAB_rgb(R24,G24,B24) __FAB_rgb((R24),(G24),(B24))
+
+// Colori base
+#define FAB_white FAB_rgb(255,255,255)
+#define FAB_black FAB_rgb( 0, 0, 0)
+#define FAB_red FAB_rgb(255, 0, 0)
+#define FAB_green FAB_rgb( 0,255, 0)
+#define FAB_blue FAB_rgb( 0, 0,255)
+#define FAB_yellow FAB_rgb(255,255, 0)
+#define FAB_gray FAB_rgb(100,100,100)
+
+//----------------------
+
+// ----------------
+// Funzioni & Macro
+//--------------------------------------------------
+int FAB_grx_open(WORD lx, WORD ly);
+void FAB_grx_close();
+
+FAB_IMAGE* FAB_image_alloc(WORD lx, WORD ly); //richiede DISABLED INTERRUPTS
+void FAB_image_free(FAB_IMAGE* image); //richiede DISABLED INTERRUPTS
+FAB_BORDER* FAB_border_alloc(WORD dim); //richiede DISABLED INTERRUPTS
+void FAB_border_free(FAB_BORDER * border);//richiede DISABLED INTERRUPTS
+FAB_FRAME* FAB_frame_alloc(); //richiede DISABLED INTERRUPTS
+void FAB_frame_free(FAB_FRAME * frame); //richiede DISABLED INTERRUPTS
+FAB_BALLFRAME* FAB_ballframe_alloc(); //richiede DISABLED INTERRUPTS
+void FAB_ballframe_free(FAB_BALLFRAME * frame);//richiede DISABLED INTERRUPTS
+
+// Permette di riempire lo spazio allocato ad un FAB_IMAGE
+// leggendo le sequenze rgb a 24bit da un file immagine binario.
+// Un formato perfettamente compatibile Š quello
+// "RAW"(con header=0 e sequenza ad ordinamento RGB-RGB-RGB...):
+int FAB_image_load(FAB_IMAGE* image, char* file_name); // solo in __kernel_register_levels__()
+// Per default un FAB_IMAGE non ha il colore di trasparenza:
+#define FAB_image_no_trasparent_set(IMAGE) (IMAGE)->trasparent=0
+#define FAB_image_trasparent_set(IMAGE,TRASPARENT_COL) (IMAGE)->trasparent=1;(IMAGE)->trasparent_col=(TRASPARENT_COL)
+
+// Settaggio FAB_BORDER deve essere fatto manualmente!
+// esempio:
+// mio_border->buf[i] = FAB_rgb(0,100,0);
+// ...
+// mio_border->buf[N] = FAB_rgb(0,100,255);
+// (non esiste una funzione FAB_border_set)
+
+#define FAB_frame_border_set(FRAME,BORDER,BORDER_DIM,BORDER_COL) (FRAME)->border=(BORDER);(FRAME)->border_dim=(BORDER_DIM);(FRAME)->border_col=(BORDER_COL);
+#define FAB_frame_color_set(FRAME,TRASPARENT_FLAG,IMAGE,COLOR) (FRAME)->trasparent=(TRASPARENT_FLAG);(FRAME)->image=(IMAGE);(FRAME)->color=(COLOR);
+#define FAB_ballframe_border_set(FRAME,BORDER,BORDER_DIM,BORDER_COL) (FRAME)->border=(BORDER);(FRAME)->border_dim=(BORDER_DIM);(FRAME)->border_col=(BORDER_COL);
+#define FAB_ballframe_color_set(FRAME,TRASPARENT_FLAG,COLOR) (FRAME)->trasparent=(TRASPARENT_FLAG);(FRAME)->color=(COLOR);
+
+void FAB_ball_put(WORD cx, WORD cy, WORD r, COLOR c);
+void FAB_image_get(FAB_IMAGE* image, WORD x, WORD y, WORD lx, WORD ly);
+void FAB_image_put(FAB_IMAGE* image, WORD x, WORD y);
+void FAB_image_put_within(FAB_IMAGE* image, WORD x0, WORD y0,
+ WORD xx0, WORD yy0, WORD xx1, WORD yy1);
+void FAB_image_copy(FAB_IMAGE* orig_image, FAB_IMAGE* dest_image);
+void FAB_image_color_change(FAB_IMAGE* image, COLOR old_col, COLOR new_col);
+void FAB_image_fill(FAB_IMAGE* image, WORD x0, WORD y0, WORD lx, WORD ly);
+void FAB_border_put(FAB_BORDER* border, WORD x0, WORD y0, WORD x1, WORD y1);
+void FAB_ballborder_put(FAB_BORDER* border, WORD cx, WORD cy, WORD r_int);
+void FAB_frame_put(FAB_FRAME* frame, WORD x0, WORD y0, WORD lx, WORD ly);
+void FAB_ballframe_put(FAB_BALLFRAME* frame, WORD cx, WORD cy, WORD r);
+//--------------------------------------------------
+
+// Altro...
+
+//---------------------END---------------------------
+#endif
Index: demos/branches/xen/bca/fab_lib/fab_show.h
===================================================================
--- demos/branches/xen/bca/fab_lib/fab_show.h (nonexistent)
+++ demos/branches/xen/bca/fab_lib/fab_show.h (revision 1684)
@@ -0,0 +1,83 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Paolo Gai <pj@gandalf.sssup.it>
+ * Massimiliano Giorgi <massy@gandalf.sssup.it>
+ * Luca Abeni <luca@gandalf.sssup.it>
+ * (see the web pages for full authors list)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/* CVS : $Id: fab_show.h,v 1.2 2002-10-01 10:33:52 pj Exp $ */
+
+/*
+ * Copyright (C) 2000 Fabio Calabrese <fabiocalabrese77@yahoo.it>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+/****************************************************
+ * *
+ * file: FAB_show.h *
+ * libreria: FAB_LIB *
+ * version: 1.0 25/08/2002 *
+ * creato da: Fabio CALABRESE *
+ * *
+ ****************************************************
+ * *
+ * descrizione: libreria di funzioni per stampare *
+ * specifiche informazioni utili *
+ * riguardo lo stato del sistema. *
+ * *
+ ****************************************************/
+
+#ifndef __FAB_LIB__FAB_show_h__
+#define __FAB_LIB__FAB_show_h__
+//-------------------BEGIN---------------------------
+
+// *** Librerie S.Ha.R.K ***
+
+// *** Librerie Standard C ***
+
+// *** Librerie FAB ***
+#include "fab_msg.h"
+
+// -----------
+// Definizioni
+//----------------------
+//----------------------
+
+// ----------------
+// Funzioni & Macro
+//-------------------------------------------------
+void FAB_show_sched_modules();
+//--------------------------------------------------
+
+
+// Altro...
+
+//----------------------END--------------------------
+#endif
Index: demos/branches/xen/bca/fab_lib/fab_grx.sys
===================================================================
--- demos/branches/xen/bca/fab_lib/fab_grx.sys (nonexistent)
+++ demos/branches/xen/bca/fab_lib/fab_grx.sys (revision 1684)
@@ -0,0 +1,71 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Paolo Gai <pj@gandalf.sssup.it>
+ * Massimiliano Giorgi <massy@gandalf.sssup.it>
+ * Luca Abeni <luca@gandalf.sssup.it>
+ * (see the web pages for full authors list)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/* CVS : $Id: fab_grx.sys,v 1.1 2002-10-01 10:25:02 pj Exp $ */
+
+/*
+ * Copyright (C) 2000 Fabio Calabrese <fabiocalabrese77@yahoo.it>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+// file incluso da FAB_grx.h
+// -------------------------
+
+typedef BYTE COLOR8;
+typedef WORD COLOR15;
+typedef WORD COLOR16;
+typedef DWORD COLOR24;
+typedef DWORD COLOR32;
+
+#if defined FAB_GRX_15
+ #define __FAB_BPP 15
+ #define __FAB_rgb(R24,G24,B24) rgb15((R24),(G24),(B24))
+ typedef COLOR15 __FAB_COLOR;
+#elif defined FAB_GRX_16
+ #define __FAB_BPP 16
+ #define __FAB_rgb(R24,G24,B24) rgb16((R24),(G24),(B24))
+ typedef COLOR16 __FAB_COLOR;
+#elif defined FAB_GRX_24
+ #define __FAB_BPP 24
+ #define __FAB_rgb(R24,G24,B24) rgb24((R24),(G24),(B24))
+ typedef COLOR24 __FAB_COLOR;
+#elif defined FAB_GRX_32
+ #define __FAB_BPP 32
+ #define __FAB_rgb(R24,G24,B24) rgb32((R24),(G24),(B24))
+ typedef COLOR32 __FAB_COLOR;
+#else
+ #define __FAB_BPP 16
+ #define __FAB_rgb(R24,G24,B24) rgb16((R24),(G24),(B24))
+ typedef COLOR16 __FAB_COLOR;
+#endif
Index: demos/branches/xen/bca/fab_lib/fab_tool.h
===================================================================
--- demos/branches/xen/bca/fab_lib/fab_tool.h (nonexistent)
+++ demos/branches/xen/bca/fab_lib/fab_tool.h (revision 1684)
@@ -0,0 +1,90 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Paolo Gai <pj@gandalf.sssup.it>
+ * Massimiliano Giorgi <massy@gandalf.sssup.it>
+ * Luca Abeni <luca@gandalf.sssup.it>
+ * (see the web pages for full authors list)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/* CVS : $Id: fab_tool.h,v 1.1 2002-10-01 10:25:03 pj Exp $ */
+
+/*
+ * Copyright (C) 2000 Fabio Calabrese <fabiocalabrese77@yahoo.it>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+/****************************************************
+ * *
+ * file: FAB_tool.h *
+ * libreria: FAB_LIB *
+ * version: 1.0 25/08/2002 *
+ * creato da: Fabio CALABRESE *
+ * *
+ ****************************************************
+ * *
+ * descrizione: tool di funzioni d'utilita' *
+ * *
+ ****************************************************/
+
+#ifndef __FAB_LIB__FAB_tool_h__
+#define __FAB_LIB__FAB_tool_h__
+//-------------------BEGIN---------------------------
+
+// *** Librerie S.Ha.R.K ***
+// *** Librerie Standard C ***
+#include <stdlib.h>
+#include <math.h>
+// *** Librerie FAB ***
+
+// -----------
+// Definizioni
+//----------------------
+//----------------------
+
+// ----------------
+// Funzioni & Macro
+//-------------------------------------------------
+#define FAB_PI 3.141592654
+#define FAB_grad(RADIANTI) RADIANTI/FAB_PI*180
+#define FAB_rad(GRADI) GRADI/180.0*FAB_PI
+#define FAB_set_ang360(ANGOLO,X,Y) if ((X)>0) {if((Y)>0) (ANGOLO)=atan((Y)/(double)(X));else if((Y)<0) (ANGOLO)=atan((Y)/(double)(X))+2*FAB_PI;else (ANGOLO)=0;}else if ((X)<0) (ANGOLO)=atan((Y)/(double)(X))+FAB_PI;else /* X==0 */if ((Y)>0) (ANGOLO)=FAB_PI/2;else if ((Y)<0) (ANGOLO)=FAB_PI/2+FAB_PI;else /* Y==0 */ (ANGOLO)=-1; /* X=Y=0 */
+#define FAB_set_xy360(X,Y,MODULO,ANGOLO) (X)=(MODULO)*cos(ANGOLO);(Y)=(MODULO)*sin(ANGOLO);
+
+#define FAB_ABS(X) ((X) > 0 ? (X) : (X)*-1)
+
+#define FAB_sign_rand() (rand()%2 ? -1 : +1)
+#define FAB_int_rand(MIN,MAX ) ((MIN) + rand()%((MAX)-(MIN)+1))
+#define FAB_double_rand(MIN,MAX) ((MIN) + ((MAX)-(MIN))*((double)rand()/RAND_MAX))
+//--------------------------------------------------
+
+
+// Altro...
+
+//----------------------END--------------------------
+#endif
Index: demos/branches/xen/bca/readme
===================================================================
--- demos/branches/xen/bca/readme (nonexistent)
+++ demos/branches/xen/bca/readme (revision 1684)
@@ -0,0 +1,11 @@
+Hi,
+
+This is a nice simulation made by Fabio Calabrese
+(fabiocalabrese77@yahoo.it).
+
+Documentation is also available in PDF form on the shark website (only
+in italian, sorry).
+
+Enjoy
+
+PJ
Index: demos/branches/xen/bca/bca_raw/esplo5.raw
===================================================================
--- demos/branches/xen/bca/bca_raw/esplo5.raw (nonexistent)
+++ demos/branches/xen/bca/bca_raw/esplo5.raw (revision 1684)
@@ -0,0 +1,65 @@
+ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ)&ÿÿÿÿÿÿÿÿÿ
+ÿÿÿÿÿÿ+*#!
+.*%ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ):'+) :-65/1&&ÿÿÿÿÿÿ *-"&* %!&$)"%+-&% &!+% )& ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ  
+?.'O==D58F><$!ÿÿÿ=<EF&23FJ'16EI.;>)58%:=,10&$ +.(B= 7342)&
+ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ  $)&.(:/G7'H7/@3-) 62&+*EE HJ MRNSHNOS2JN7Y\K<=/0/@@('&
+<9B=D?SO)75-* ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ-. YW.uqDYP)[M3P@0SE8J>2/(1-XUzz$€ƒ(v{!rv)Z^!BDWYC=>0=>0KK3BC#;;DEA?SP'JHVT#2/,) +ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ++-ba3“`{tHl_?cT=\L<`SBSH2`Y/xr(—”5•–0šœ9z}&kn)QR*OO7VTGIJ:DE&EHJL47@?RQ!]\&[Z"KHTR,ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ !IGTQ$^W-ZM-aS9zkVj[Dj_Ai^1zq,‹ƒ.—“2}}aa ;:LJ#CA*@>/A@+HJ"HMAF=BORBBXW!po9spEvsPÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ + *'!.(OD(cW?o`Ik]BylJqd8pc,‚x1›“>{"MJ0/0,#! 41 ,,;>EJOTZ_RU MOVU%_^0\Z4gfH$#ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ  -)( +/,")# +#?4 i]GcU:i[6}nEmEƒuDzo-xr(^ZDB :6'%30//36 279=BE `a7**!*'1-KH7*'ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
+-(.2-*A=4<8,*$ +&QC(eW2o`9E4]M,QE[Uzv9eb/63#!  +*#%47
+$&#"ÿÿÿÿÿÿ
+ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ")!.,%,1++/+(ÿÿÿÿÿÿD8"dV3`P/@/5&2);5DA.-/.!!  +ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ +  +ÿÿÿÿÿÿ +F:*bR80 ! 
+ÿÿÿ +ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ&#$ÿÿÿÿÿÿÿÿÿÿÿÿ $( - +$& +ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ +ÿÿÿ + + +ÿÿÿ +ÿÿÿÿÿÿ+%/1)692:0*,#"
+ ÿÿÿÿÿÿ
+%+!*%! ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ0&%"   , ÿÿÿÿÿÿ3-7IBJHBF@;7((ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ (#C<4>6)RD9=$/   6&ÿÿÿÿÿÿ
+-(/A:A824>;6!!ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
+ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ G=;QG>SG9P@1S6.=&( $ +*7%ÿÿÿ
+*&'! ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ &G99C41YGCG3*>7+ !-,( 2-'*&##ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ;+,J::6$"Q<7/ 6
+ ,%
+!
+# 50,(#!ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ =20>0-PA>J84M32>"!4*! ! ÿÿÿ940 +&# ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ,$!@72RID]RLJ<9R>?E13<)-/"7&.7'1ÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ,)$,'!@<3G@8H?:C867++/%$;125,-+%'ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ"(#=849612/*$#)($ÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ"#%&;<445-692 ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
+%(!'*#%(! ÿÿÿÿÿÿ 
+ÿÿÿÿÿÿ !ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
+  "!ÿÿÿ
+
+ 
+ *' 52+=:5A@;43.ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
+
+
+ÿÿÿÿÿÿ  ÿÿÿ + +'-) '#HE<LIB[[SGG?('"ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
+ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ51%ZVJjf[hfZpmd;;177/872! ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ&&++!'% $"(&ÿÿÿÿÿÿÿÿÿÿÿÿ'!gaS}zkŠ{‚€srpd@=441* ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ%'DE79:*DC1ML8WU@GE0ÿÿÿ&! )$c]Mxs`Œ{|‘€ŽdbVNKB""ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ1*"ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ!#EE9LM?GE6WVDNK8><'ÿÿÿFA.kfR|i„k˜•‚•’‰ˆv‘€‚€t|saaY#"ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ +/&.%"  ÿÿÿÿÿÿÿÿÿÿÿÿ!# *+&A@;DA:;8/GE9ÿÿÿ XUD€}l™–…‡„s‘€‰‡x‡…x…ƒw|ypjjb?>9 %%"6,"I<3dSIucWeSG-$ 
+  + ÿÿÿÿÿÿÿÿÿ0/+=96?<7ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ"WTMyvo‚x}zszwpŒƒpmftqjnkdgd]41,52+DB5a^Og_Rwi^Œvk¥‰~±‘†›wk}YKtRFK+ 9) +*
+ +ÿÿÿÿÿÿ!!52+41,GD?B?:ÿÿÿÿÿÿÿÿÿÿÿÿ32.NMIPOKZYUfc^]ZUxunole{xqwtm…‚{Œ‰€wui…u†|p‚pfŸ„{Ÿt”nažtd¦}i}WB€]IR6!4 +3!1"ÿÿÿÿÿÿ$!;812/*:63ÿÿÿÿÿÿÿÿÿ('#;:6KJF>=9MJEMJEdaZlib…‚{¡ž—Œ…“‰Œ‰‚‰„~…|uzŽwosg o{boP`=[?O7\J$RE"' +""*)$ÿÿÿÿÿÿÿÿÿ
+('#@?;GFBVUQWTOROJgd]…‚{|u‡„}‡„}{xsyura\Ysig‘ƒ€‰vo‘{nƒjV|bG~dA‚kA„o@n^-[OOG,%
+ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
+21/JIG=<8CB>FE@KJEVSN_\Wlibqng`]VNKFIEDLFHkbcwmlwhc{j`aP<4#G5†uJqBdX&C<a[)51EC""!"&'10+'&"ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ! 431540A@<VUP:94-*% B?8A>9A=<0,-5/1TKL@64  */%8/% >9/+;8jjR^_MKL>++!"! ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ +
+ ÿÿÿÿÿÿ '$ÿÿÿÿÿÿÿÿÿ"
+ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ +ÿÿÿ +&$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ +ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
\ No newline at end of file
Index: demos/branches/xen/bca/bca_raw/missile2.raw
===================================================================
--- demos/branches/xen/bca/bca_raw/missile2.raw (nonexistent)
+++ demos/branches/xen/bca/bca_raw/missile2.raw (revision 1684)
@@ -0,0 +1 @@
+ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÀÀÀÀÀÀ€€€ÿÿÿÿÿÿÀÀÀ€€€€€€ÿÿÿÿÿÿÀÀÀÀÀÀ€€€ÿÿÿÀÀÀ€€€€€€ÀÀÀÀÀÀ€€€ÀÀÀ€€€€€€ÀÀÀÀÀÀ€€€ÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
\ No newline at end of file
Index: demos/branches/xen/bca/bca_raw/sfondo.raw
===================================================================
--- demos/branches/xen/bca/bca_raw/sfondo.raw (nonexistent)
+++ demos/branches/xen/bca/bca_raw/sfondo.raw (revision 1684)
@@ -0,0 +1,136 @@
+v= u<!s;"r;&p;)k:+f6(c3'p5r5v4w4x1w3x6 y8"t=o7n2r3{:~? {=$v:"w7x8x8v6x8{;x8r2l4n6o7 o7 m5k3k3l4m5&o6%t7%w6$x4z2~35u6r6q6q8r9t9s7r3d-e.e.e.e.e.d-c,s3 +{;€>z7t4r6m6!g5N.!M-"L* J%H!H!L#N%!M# +V,^4_5^2^2e7k=#a<*_9&^5#_4#d7$h9%i9%i9%ˆ9…8 ƒ6 6€6}4x1v/T6W6Z6[2Z1X0V3W5Q3)O/$M)N&O'M&F#AS"V%!W&"W&"[*&_.*],(X'#N"#P$%S'(T()T()U)*W+,Y-.?%D(K-Q/V1\3c6f9x;u:p9o9q;t=w<w:DDDŽCB‹@Š?‰>n;s=!q9 k1g.c/[+S$M(O*R+S+V+"Y-$\/)a2,k6$f2f/l3u;%{?'u9o1z:x6u3v4|8€<ƒ=ƒ=r:!o9n8 n7"n:%o:(n9)l9(m9#q:%t9'u8&s5&p5%o7(o:*`0b/f/g/f-d,_+\+T0V2V2S/T0U1R.L(I&J'K(L)L)O,S0V3^0!c4$h7&m8&p7$r8$v8#x:%u<p8j6h6j8!n:"s; u<g3g3g3g3f2e1c/c/L#N#Q"W$_,g4#e6$_2|5 ~7 +€877‚6„8‡8v9'{<+>*~:%z4y/y-|/h9%e6$`2"^0![/"[/$Y.%X-$[4%X1"U-!V, W-!W,#W,#V+"o+r, u-!v,#t+$r,$q.&p0'o1v6};!€="~<"|<#y<'x=+†:*‰=-‰=-…9)„8(„8(5%|0 ~2"~2"}1!|0 z.{/~2"5%j0%l2'o3(r2&r0$p,p+r*m7h4d1`1b3g4h4j4R,#R,#T.%U/&V0'W1(W1(V0'b=*d;)e6$h5"m6"o8$n7"j6R0&T/&S.%Q,$N)!M("N)#P*'] +j+x7!}: ~7‚7A!˜I(EŒDˆB…@€= {:v6t4‡H)„E&@ =<:€98Y/Z0^1^/[.V-S.Q1J!O& U*#V*!P%H!D!A" 2%7*!:-$:-$;.%?2)?2)</&=0'=0';.%8+"6) 6) 8+";.%G+L-O0R2T1U1W1X2k4h4c3b3#c4$c3d0d-u5v6w7x8y9z:z:y9i?'l>'p<&r8"r4q1p3s6\4([3)X2'U/&S-$T-&X1*[4-l6i3j2t8B#‡G$…C ‚>~6:ƒ=„?€?!}=!x:!v8^*])_)d*l.q1u2u2u;#x<$z<'x:%s6#k4 f3c5s;*w>+{A-z@*u<(l9&f7'c8(e)k/$n2'm1&l0%o3(o3(m1&k0(l1)l1)j/'i.&i.&l1)n3+b5 d7"f9$g8$h8$k8%m:'p=*n7"k7"j7$g8(h9)j7$g3g0e1e1e1e1d0c/b.a-O! V$ a)k/q1s3z:D%—D–C’AŽ=ˆ9‡8‰:‹=sB$rA#s@!q>q<m8k5h2Z0]2`7%a7'_5'Z2&X0&X0&O-$R-$U/$^4&g9*p=,r=+t<+ˆ1Š35!Œ3!‡20{0w0ƒ3…6‰7Š9†98{7w7u;z@|Bx>t:t:s9p6k5l6n8m7l6l6n8o9y4$y4$z2#w/ v-v-x.!z0#n6l5 h3!h5$j7&k6$m6!l4W2*W2*V1)V1)T/'S.&Q,$P+#a7b4g4p9%q8$m4 l5 n:$k4l5!j6!f3 b/],[,[,^'i2t=s>j7h5o="yG,DC~B|>x:w7x8z:|C&}B$@!„?‡>‡<‡8†4 q5v7z;{<x=t>p?mAt:"v: v:v:r;m:f8 a7e1l8#o;&l8#j6!l8#l8#k7"]/ _1"`2#`2#^0!\.]/ ]/ a5b5`2^0\.^/b2f6k1g/c,`-c0j3m5o5q4q4r5r5r5q4q4p3\7$W1X-`0"b2$Z,R'P&\'`-f3"h7&g8(e7(a6&a6&@!|=x;u<!u=$q='j7"e2X9%X8#W4 S.R,W._5e;%lBmClEjBc<[4P+K& b5c6g8l:q;r:s9s8n5p7t8v9u8w8y8z9{9{9|:};|:{9y7x6„: ‡=ŒBŽEŽE‰B…>€;p5v9z=z;v5t2y4|7^1c3i5p8q8p7l4i3X0(U*!W+a2"e2b+^$^$ O,M( +R*\0`0`,d,i1f9h9k<"n;&p<&t>$xA#{E#zDwCl>_6V.R,T.Z1b2
+g7m=q@rAt@vBxDZ*W'S#Q"S#W*'^00b67w6$x5$y5"z3~334ƒ3s7s7s6v7x9|;€>?^:"^:"^:"^:"`<$b>&d@(fB*T/T/U0 T0 S/!O-!M+J*B)$G+'J.*K.*J+&K*%L+&P-)R+V,\/a1c1a/\,Y*_2X,X,^2b9d:!f>$kC)j>%f:!g;"m?(o?)m:%n;&r?,f5e4c0b.c-d,e.f. +}>x=r:l8"h5"i6#m8&p;)^/)b1*e3,e3,e0*e.'g.'h/(z?x<w;t9s8p7q8p9P.O-Q.S/X1^6d9g<V1(R-$O*!Q+ W/#\4(_7+a7)~6~6€8‚:ƒ;…=…=†>£J¡HFšC +—B –@ +”A +”A += > “@•B˜B˜BšBšB‡?ŠAC–E˜F–E’DBˆ@€;{7x8v9q8p:s=#m4j1i1j4h4f2e2h5"L*}H(yB$w?$zA&{B%}B${@ w4r2m/h-h-j-m,m*m; o<p;o8p5p4t3u5M& O( T,U0V2U1R0Q.q1r0t2w4|7€;…> ‡@"“B=‹9
+Œ: ’@–D”B‘?¢;¥>©B¬E"«D!¨A£< 9’I‘HŽE‹C‡B†A…A…A†=…<…<‡=Š@‹A‰?‰=‰; +< +“@˜BšD™F—E•Dœ? œ? œ? œ? š=–9’535~4|3x3u4s3q6r6s9m2i.k.q4v9v9t7y;&u8%p5#o6%s8&v7%w5u1L7&M6$N4#P4S3X4\6`8’B+@)‹='‰;%ˆ<%‰>)ŒA,D/ŒB%D$ŽC$B#ŒA!‹?‰=ˆ<–E’A>‘@”C’CŒ=‡8 +m7+n8,o9-o9-n8,k5)h2&f0$V0#W1$W3'W3'T2(S1(P/&O.%[1!Z0 W0!X1"Y1%Y1'W/'U-%R."V/ Z0 ]2!^3"Z3$X2%V2&o.u3€8Š>–BŸF¨IªJšCšC–B‘@>‰>‡=†<ƒA~<y7z:?ƒB"ƒB$€?#n6k5i5l9$s?)xB(zA${>!u7*u6'u3#w4$}5&‚9(ˆ;)Š=+–>”?’=<‹8†5
+ƒ1 ~/i7j8l:l:k9h6f4d2 +X6-W5,U4-V5.U61R3.L-(E($K2I0E,B)B)E,I0L3o0q2r5t7s7q5m4k2z9z9z8x8v5s3q1p0^7(`6&a6%`5$^3"X1"S/#P.$D2K5P5U3`6 o?|G‚I—IœK›J—F”C”C‘@<‹C‡?<:;~:y7u2g.e.b/c1e3h5j5j4ˆ=†;…7…7ˆ9‹<Ž<Ž<:#?(E0I6%L9(J9'F5!C2j"k#m%o'q)r*q,r-n5n6n6n8 l8"i6!g4e2g9f8e7d6e7h:k=m?j0k3m5n8 n7"k7!h4g3r5t7t9p7k3h0g0h1z8|8|7{6x4r2m0k0T<"W=$S9 J/G) +K.O0O0{A‚F!‡I"ˆGG”I!•F’ADDŒC‹B‡@‚<8|6€:};z;s:o8n7o7r8J5G2B.A,@.@->-=,r8,n4(g/ b*^)`+b/e2V0#U/"S/!S/!S/#S1%V4(W5)`*b,a-`-^.]._0a3#d*h.#m3(q7,r8-o5*k1&h.#s7s7t8s9!r:!q9"n8 n8 w8{<|? x=p7m3m5q8$q9r9u:u:s:p: l:#h9%t2w8&t9)g1%],%Y-*U--N*,J%V-a4j5u9ƒ?‡>„8‡8‰<Œ?‹Aˆ?…=‚;‚:!Š8‰;†=={:z;~?ƒC > {;u8s7p7#o7&j5'g3%|8z6z6}9=„@‚>;x9x7x4y3y4v3q2l1e,h0m4s7v9y7x6 x4!p4p4p4o6p7o7l4i3l7l6k7k9"j:#j:#i<g<g4i6n9r9v;z;|<{;u4|<…FŠMˆKƒFA}>q5q7p:l;g9^6U1P-P2N0M.M.M-N.N-N-_9`5e4o6}:†;ˆ7ˆ4z9<†>Œ@ ‘B
+“D •H—L~Dz?y;y9{99‚:‚:‘HŽE‹BŠAŒC‹B‡>„;|<{9|8~7~9z9u8r6y6z8:€<€:~7|4z2z8x7x7y:{<y<w:t7s2s2t2s2q3p4o4m5l3n5q6t7w8x8w7x6‰19™DIIšF—B•?…B…BBAz@u?p>n;^0#].$Y-$W,&U)(P&(L#)J!)L)L)L'N'R)V,\0_2€D"†F"H’J•I–I–J—KJ‹F‡Aˆ?‰>Š>‹<Š<’C@‹<Œ=Ž?AŽ?‹<€?€<;ƒ:‚;;!|: w:ˆ:‡<ˆ=ˆ=…;‚8}3{1|8{7y7{9{:|;y:w8|5|5|4z3z3w4w4v5x;x;y<y<y<{<z;y:i8k;m>n@n@ n@pAqB‹G‰E†Aƒ@€?@B‚CxCwCtBq@ h: _5X/R+H+'G+'B)%;#4 4":+>2o4w8ƒ?ŽC”F–F–F”G˜G–E”B•A•A–@”>“>;Š8‡5 +ˆ6;==;‰@‰>‹;‹;Š;‡;ƒ:}8…;†<…=ƒ>=};z8x6u8t7r6r6q8p7n6l4s9!r8"r7%r7%r9&r:#s; t=t<%t<%t<%t>&t>&t>&t>&t>&~A/{>)w;!t9s8v;{?#~B(~F%}E"{C {@{@|BCE!{CzEyFtEk?_8W2R.@$#@$#>!#968?%F-z5„<’EžL¤O¥N¥O¤M™C
+˜A ˜@™@šA™B—@”>‘CŽ@Š<Š<Œ>?‹=ˆ:’E’D“@’?‘?=‡;‚9w9"w9 w;t;r:o9!k7"j5%j:&g7#d5#b3!a3#`2"\1!Z/T1T0 T0"U1#X3#Z5#\8 ^: \/]0^1`1b3!d5!e6"f7#f2$f3"e2e3f4g5g4g4^5!_4!`6 b5c5c5d4d5c*e-f0$b0)Y,)P&'J#&F"&H(L'O'X' a+!n0#w6$|8#“B›G¥M¯Q¯Q¬N¨J +¥H  K
+žH œG™F˜F–F“CŽA ƒA!€>=‚@ …C#†D$ƒA!€>ŠGŠEŠBŠ@‰@…>=z;c2$c2#b2a1^0\-Y+X*\2$Z0"T, S+Q+ P*N) L'?%?%@$A%E(H+M/O1T+U*Y,]/a1g5k8o9P/S2Y8_>bA `?Z9U4^3 _4!c6!d7"d7"c5a3_1i0k3l6h5 b1 ]/ [/"[1%f8j8p6 {7"‡9"‘; š=ž=™C¡G§L«NªM¤J¡HG£UžR™M“KIŠG„D€Bl6k5m7q;!v@&wA't>$p: j;k:k8m7l8"h8"c6!_4![,$[- [-\.[-\,[+[+Z/W,T)R(R(Q)P(N(O*P)O(R(U*Y/^2`5e8g8l9s;z>BˆEŒHœJ%œJ%žL'¡N,£P.¢O-J(™G"‰I%‰I%ŠJ&‹K'ŠJ'†G$„E"‚C ƒD„F„F€Dy? +x>zBGv6y9~96ƒ5‡6 :“>L¡N£P¤R¡P›O˜P•Q"ŽK‹HƒC|? w>!s=!n=j<g9"f8!f8!h:#j<%g9"a3[-I-J+K*N*N,"K-#G,#D,"_0(a1%c3g5j7n9p8q9f3a1_/^/_0`2"`2"_1!p9$p9$p7$q6$t7"w;{>}AzD |E‚D‰F’JšM¢R§S£X›P’GŒ@ Œ@ ŽBE‘F™B +™B +—A”A +‘? += +< +Œ; Š?"‹@#‰>!„9~3~3ƒ8ˆ=7ˆ>ŽD!ŒDˆDŠI”Tœ_–L˜L–JG†B~?v?t@t7o3h/c._/!]1$Y2#X3#M.Q2U6!W7 Y3`3j8!t;'b< +g>mBqEtEsCr?p=l2{= ŠDC ”D —F•FŽA ? Š< ‡=‡@‚?z:x:x<n8o9o9p:q;s=u?v@€: ƒ= ‡? +‹CD‹B‹? ‰= y?'v<$p8!k4h4j7$n;(o>-t2v4x7y8y8v5s1q/f-j1 j1 f-h/n5$n5$i0a-h1
+r6y={@ wAp?j=c3b2`1!_1$\0%X."Q*L'=,$@-'C+'C*%E'H&M*Q-x7 +}>„E‡G‡C‹>=”=ž7ž7 7¡8£8£7¢6¢5›C¢I§J!¢Eœ@–@>!‡9"}=w8r7n7g4^,X*X+b0a/a/`.`.`.`.`.H4-H4-K4,L5-M5+N3*N3(M2'Z4Y3V2U1U2U4T5V7fA&fA$fB eAb>^:Z5X3V3Z7Z7W4X5\9\9X5_=$a='d;'d9(a7'Z5%S4"M2M0K-K-I-J.G-E+B( +M'Q+Y0`3 d5!h9o> sA †E‰I#M'ŽO&K$‘G •E ™G"¤L¡IžEšC˜@•@–A–A‡MˆN‚Js?c7W2L-D*@((;%'9%'8'-4'./#--#..&37#"8$#9%$;'&=)(?+*A-,B.-G"J#M&U,\3!d9&j?,pC.n>n>l?k=h<d8_4]2H$
+K( O, S1X6\9^;`<"a8d;d;b9b9d;e<b9b8 c6!a2_0].Z/W1V1`9^7]5_5b8f:f;e:@ƒB…D„B?}<z9y9 +£B ¢C ŸB œ?›< =©A
+°E}LxItElAh> e<b<b<s'u)v- +t.s1r5#q7)p7,x3v1t2x7v9t8t:"w?({7|8;=„@†B‡C ˆD!ŽCBBŽAB‘C”C•D“D%”E&”E&“D%‘B$‹> ‡:„7€<'€=#€="€= €= >#>$=(„:†<!‡="…; „:„:…; …; 7~6}5 +~4 +~6€8<‚=|4}2|/1…4Š8 Ž;<Œ? Ž@C‘F“J!”M#–O#•Q"n9'k8%d5!^1].`/f1!l4%€;~<};z;w:u9q8p7p.p.t2y69 9 „8†9‘@‹<‡:ˆ:ƒ95~59ˆ=ˆ=ˆ=ˆ=‡<…:ƒ8‚7x@%x@%y@#x?"x=v;u8t7„5…6ˆ9Š;>?!‘A ’B!Š;‰:ˆ9‡9…7„5ƒ4‚3ˆ;‰<Š=Š=ˆ;†9‡:Š=ŽCŽCŽCŽCŽCCBŽA‰:‡7†4‰59 ”=!™@œB©]+¤W)›P&‘I#ˆB‚>|;y:ŠC%‰D%†E%‚E&~A"z= y8x5z1|3 €7$ƒ<(…>*„@+ƒ?*‚>'nK+iF(gD&jC$k@h8h1j/^8-Y3(T/&R0&O-$J)"G)!J+&N-$O.%P/&P/&P/&N-$L+"K*!Q+U,Y0^3 a7!e8#f9"g9"g9g9h;l<n>rAuDxDv?xAyC{E}G~H~G~G r<r<t>v@s=o9q;wAs:s; t? tA"vA!w@!y>y<}G{DyBzBE‚H …J†L€=}9x6w6y9|? €D"F$i4"i6#f9&d;'`:'^4$[0 W+b.d0h5m8p;r<s=r<€8w3s2u6%x9*x6&{7$8%h8!c3`2a3`3^1_2d7$_0a2d5g8i: i: h9h9nB)n@(l>$k<"i:j9j9j9fB fB hBgAh@j@i?j>o<o=n<l;i8d2 +`. ]* q;q;t>wAs=o9r<yCk2l5l:n>r@xB}AAyEwCu@s?uAtCtDtDƒE ~?x9r5q4p3o2l176x7w9u;w<y<{<x@'y@%|A#~B €B‚CƒBƒCyDj:Z3Q2K1"C+B*D, L.#G)D&E'C'A%B&F*N)P+R-S.S.Q,O*N)K.L-J+K*N-U2Y6"]:&l5 n6p8!s9!v: v9w7v6t1!w4#{9#=%?'?)<+~;+ˆ9ˆ9‹<@"Œ=‡8Š;“D&“E’FIK“LšM M¥N™L—J ’G E%ŽG'H'‹G$ˆG!C|@z= }="?$€A"~?|>=/&:)<)E. L1 M,P+U/S6V9\;a<f=!i;!h9i7k:i;j;k>!k?$f<#`8[3[8"Z7#Y4$T0$M+"C'9#4 H)K*P/W4 [7!^8!`8`8V* +[/d7j=oA p?n=k:a<`;c;!e;#e8#c4 e6$l;*Z8Z7Z7Z5[7]6^7_8V1X3Y4Z5Y3W1U/S-J4)G1$E/"F0"I4#K6#I4G2H3B/A-B1B2?0<0=1F)G*I+ L.#N0&L.$H*"D&iB%d= f;n@wE"}G#„J%‹O*o6o6q6r5u5x5{5{5_:'\7$W4!S2!Q2 O/ I,F)?%?%@#A$>%!;&#8)$5*&?&@(C(D)F*F)E(G'Q2 S4"V7#Z9&]:&]:$\8"\8"r;s9s9v:u7r2s3x8p5p5q7s7u9z<|>~>…J†K‡L"‡L$†K#„H#E!€D ƒ?‚>ƒ?…AˆD‰F‡D…B +“J)ŒF$‹D$H'ŒJ*‰F)‡F(ˆG+xE&vC$tA"s@#s@%r?$p<$n:"L,J'L(R,Z0_1c4f7qDoBo?o?qAuEzJ"}M%ŽE‰Bƒ<8{6 +{6 +y5x4 +y9 +{8 +z5 z5y5w7u;t<y8z9}9~:<‚=ƒ>…>€@?€=€==„=…?†@i?)g='i<%j=&i;$e7e7j:#e5'e4%e4%g4#h5$j5#l7%l7%c2d3e4e3d2c1`._-O(P*Q+T.W1X2V0T.Z1U,S,V/U0R-O+Q-\6X2S-P*P*R,R+R+ŽJŽJ‘J•M—M–I‘EB’>&;#‹9!ˆ8†9ˆ<"‹?%C(o=&l:#i7 g4g4i6!k8#l9$q?$r?$s=!q;p: k9 f9"d:$n<%n<%n<%p<$q=%s?'uA)vB*qE*pD)pB(oB%qB&uD&wF(yH(<:9„=ƒ<8 ~7 : ‰;‰;‰;Š;‹<=?’?•G•G—I—I˜J—I–H–H„I)„I)„I)„I)†K+‡L*ˆM+ˆM+”X"SŽR‘U’V"SŽRT”M‘JFŒEŽGI’K!’J"iC.hB-f@+g>,g>,f=+c9)`6&c7_5[3U0Q.K,I,H+ +d6&e7'f8(g9)h:*j;+l=-m>,e6"i9"o<!r?"r?$n>'k<(f;*n>(m='k;%h8"f6 d5!d5!c4 Z1Z1\2\2_3`2a3a3X2'U/$U1%Y5'Z6(V2$U1!W3#Y2!Z3"]4"`5"c8%h;&k>)l?*c8'd9(f;(g<)i>+j?,k@-k@-tA&r?$p="n; m:o;#q=%s?'r:+n4&m3%q7)s:)p7&o6%q8'f@)d>)c=(c=*e?,f?.e>-d=,‰B…@:y4 +z6=ƒAƒA€:.;.€</=/|=.z<-v;+t;*t5x7{:}=};};;;x6~:…>ŠA‹B‡@=|:‚=<€<;{:z9x8x8†F ‡H‰H ‰H‹HŠE‰DˆC„@==„B…C €@~>>B€A€?€@>ƒ?ƒ?„@;;=ƒ@…B†CˆE‰FŽGF‹DˆA†?†?‰AŒD‘I!FF’I ”K ”J“I•KŽGFFFF‹Dˆ@…=r7o6j1c+c-g3h5"e2!^5_6a8d;e>!g@#iB%jC&W.Z1^3 a4!a2`2b2d4d6)g8&l:!n;m:h6c3_/!c4c5e7f:!d:"d:$b9#b9%i9"j;!j;!m; n; n;p:o:w=s8p8t;t<#n7"h4g2 p@)o?(n?%n<#m:l9n8n8g5h6h7i8j9l;m=n>h>%j@'kA)j@*h>(g<)h=,i>-^<Z8[8`=e@e>e>i@}C|B{Az@{@y>v;s8›MŸQ#P$–K#’J$ŽH&†A |7w<v;u:t9t9t9v9w:†AˆCFFF“F–J›MF%’G •H™I™I—I•G ’F$“J“J“K’LŽJ‹G‡D…B‘C“C”D—E™HJŸL¡NL˜G•E–H–IŽBˆ<†;z8{9|:<…?‰C!ŽE"G$‘N#‘N#M NN‘O’P’Q¡L ¥P«U¬VªT§Q¦O¦OžP"œKL£Q!¨U#©S ªR ­V!¡R QžNŸO P¡Q¡Q ŸOt?k6 g1 +i4m8i6f4d3T2]6j:s=u=p;i<f;R) W, ^0h6q9z<~=€<y>v;r7m6j7i8f7d7b:!`7!`6 b8"g:%j;'j:&h7&dA+c=&f:g8k:k<"j=(g>*o?j:h8k;qAsCm=g7_;_:];];"^<#a<"f<#i;!n<o=v@{C~C|?}>A|?~A}@x=y?{C zA#t=}D~E~FzEwAu>v? yA&pElAj=l?tEvGtCp?U5(P0%O.'Q0+Q/-N-(O,&Q/&\39c57m84t80v7.p5/g1/_//dE3cD0dA-d@*g>(l@'pB(rC)xDt?n;j8g9!g:#d:!b;_3^2^0a3f7k9 l9j7`8b6c4i4j5h5d2_1[;0Y9.W7,V6+U5*S3(O/$M-"e6c5`3]2_2`1c0g0_9$a8"g=%nB)pB(p?!r? vC$q@rA!rA#n?#o@&rB+oA)j<%y;|AFH{Ds=l7i3€D(|@&w>#v<$w='v<&s9%p6"c.b-g/"l2&n2'o1"t5#z<'x-~/Š3–<
+ŸCžF˜D’@‡>‰?‹AD”H™LœO Q˜M’IŒDˆA…@…BƒCƒCCC‘D”GšKNŸOŸO•J—J›J K¡LžI–C +‘@ ”@–B—C•A’>‘=“?–B—@”?‘==<‘<•<™<–F—GœJ¤Q§R¦OªQ°U¡K¦M¦M¥L§L©N¦K¢D‰AŒGM#N$‰K"~Bs;o6a8_6\4W1S/O,K*I({9y6|6„:!ˆ;!Š9<”@zF!zC}B‚E…FDs<i3 +…C!‡G$‹K'M'ŠJ$ƒE|?w:d@*`;(Y5%T2&T2(T4)R5'R5%a8$a8$b9#e=#g@#kB$lC#lD!pH.qG.tH-wI/xJ0wH.rB+n>'u<v= v= u<t;u<x?"{B%k6(i5(g5*e5+h6+l8+r:+v;+„<„<ˆ@F‘F‘D”G™J•H™LœN LŸN¢P žL™E I IœJ–H‘GŽEŠFˆE˜?!–?#•?&='ˆ:&„6)ƒ7*7,i;!b3`.e.i/j,i* h)-ƒ.Š2
+•= H ¤O(¡M(œJ%‰CG#’M&•Q*’Q)‹L!…F€AsD&o@$j:#g8$g8$g:%h<#h<!oA)pB(qC)rE(rE&sF%sH%tI&qD%pC$oB%pA%rC'uC(uB%u?#nI7kF4gB0e@.d?-d?-c>,b=+q9 o9!k7!j7"m9#s;"y=!}@!‡<‰;‹>C‘B@‘B—F’A–E™G™G›IžK›H•BªI§F¢BB +CœGJžM‹I ŠJ +ˆJƒG~DxBwBvC[+”Q$‘L"—O'T+žT'œP›O€M.|I*wD's@#n=g5].V' +Œ58”=˜C +žI¢M£Q¥S²Q +¯M ¬J +¬I¬I­K­K
+¬K°R²T±U±U­S­S­S®V­Q¨N¤L +£J¥L«N®N±O¬R©O¦L +¦L +§M§M¥K £I
+¯M«K§H¥H +¦H ©J
+¯L´M­N¬M®O±R°Q­N¯P´U°L²P²P¯O±Q²T¯Q¨L +¬O«NªLªO¬Q­S­T­TºS¹RµP²N®M«K¨I§H§J¢D¢B§G +ªIªJªJ«KŸTS™R–P“N‘LKJu@!u?#t>"s=!r< r:r:q9ˆC‡B†A‡A‰CŠEˆC‰B„@…A‡B„A€?~>?€A‹L ‡I G!~F!G"†H#‹G ŒGŽ> +@’B“C’B’B“C”D†C&ƒB$?#}=!~?‚@‰DF†J(„G(†I*ˆK,‡L,„I)†K+‹P0—V0—W1”V1ŽT/ŠT0ŠU3„S2~M-¡VŸSŸQ!¡S%¥T'§U&¥T£RŸZ!œW™TšU›U!œV#™S –P—I“F’DC!‹?„9„:ˆ>€5~6 ~7#z7&y7'z8(};+>.„A‡DH’K!“K#‘G ŽC‹@…G …G"‡F&‰H*‹J*‹K(ŠI#ˆG’L’N”O%’O%ŽL)ŒK+ŒM.O3‡JƒH }E {E#{E#€D ‚B„Av=*|C0€G4~E2v=*r9&s:'w>+}<(y:(v9's9%w:%?$†D$‹F%“F’E“F”J”J’H”K™P#¢Q¢R›O’JŒJ‰JƒH|CŠP ‡JƒD‚@‡AŠB‹B‹AC‹?ˆ<Œ@”F"˜H%–F#’BˆG‹J L"ˆIB|?~ADxD
+|GK‚L €KKKN|L|J|GƒGL•P™QœQžQšM–J˜L•KFŒCŒCG"|D!vA"n<#j:#m:%p<&s=%nA i<f9j=rE$vI(sF%nA pArCsCsB!sB!tDxIzKƒT €PM…L‹N"ŽM%ŽJ#ŒF"|IKŠL'K+H)ˆF$ƒE E†B‰EIK!L"I"‰E†Bu?t?s>q;o7p6t6v8€<:‚;ˆ>!Š? ‹?B—HœNŸQ ¢T#¢U! S¢S¥V¨Y!«M­O­N ¬L"©I©J©M«O•T6“R4”O0—P0R2£T3¥U2¦S1Q*ˆM%‡K&ˆN)ˆM+‚J)F(H*HŠG„D €A ~A$A%…D&ˆE(™F(—D&•B$”A#“@"’?!<:’D’C"‘B$?$Ž>#@"“D#–H"JGG‚E„E†E‡D‡B€F…HŒH!F#ŒC ŠB…BƒCo>o>p= q>!r?"s@#v@&wA'žF ¡I#£K%¥K&¥L$¨L#¬O$°Q%«Q¨NªMªL©J¤E ¥G «L
+œIŸI£L§M«P°S´VµW«WªV§R¤O¡L¢N¥O¨SžT +ŸR ŸR ¡R +¢S£S¡Q ¡N
+³U¯Q­Q°S¯U«P¨O¨N¹L ¶J ¯I «G ©F +¬G±J´K¨I«L
+­N ¬M ªK ªK ¬M ®O +§R§R¥O£M J¡K¤O¦Q°X±Y´X³W±U°T±U²V§OªN +­M®K­I¬H ¬J «L§W"¥V¢QJ™D +•>’86P%U*^1e7j<n@tD wG#•N“K’K”M!‘L"ŽJL”R ‚8‚8„9Š;‘?—A˜A š@ —O–N•M•J•J–L™M›O¦L§M§L¨M¦N ¤L¢I G“GŽB‹AŽDDˆA…=†>~={; u9!o6"l5!m4 p6 s7^7a:e>g@iB!kD#oH'rK*dF$eG%fG(eF'cD%bC$bD"cE#xC#zE&yF'uD&o@"k>!k?"mA$f<#g=%i<'i:(i8'j:$m>$pA%v:|A‡I"‘P(—T*™T+˜Q'—N%™X ›YY™SJ †B|:y7n2 +k1 k2m5l6i6k:p?!uB/vA/xA,|B*ƒF)‡H'ŠH%‰H"—=˜>A¡D¤G§G§F§F›@BDŸFF™E—B•B•KFDŽGŽF‡B„>ƒ?u=,p=,j:,g9,d8-f8+g7)i8)v<0u;/t:.u;/x>2y?3x>2w=1w<*z?-E1€F2E1|B.{@.z?-r?$sA(sA(m?'f:!`6`8`:#U5(U5*U4+V4+W5+\8,c>,hB/ƒI#†J%‹M(‹M&ŠJ$„C;{7q)y.ƒ5Š:#Š:#†9%8'}8)Š;‡8…7ƒ6~3x.v/y5R'T*V*Z,^/a1d2f4w6z9?‰E J#‘I#E ŒBœPžS¢X£Y¡ZŸXŸXžX¬V§Q¥N¦Q¥OžJšF™G”=‘>>‰>‰>‹@@’A’CAŽ?@‘B’CAŽ?’? +–C›HKK›H™F˜E£L¢M¡KœI˜F”D‘C‘C„:„<‚<ƒ=„?‹B”GšL@
+@ ŽA +B”F—I›MO!™E!ŸG!¦I ¨G A“:ˆ40}?(y<)x:+w9,q5*l1#k2!n5"j7"m:%p=(q?(p>%p>#tB'wE*^9`<gApGvKvJtEq@r3$u6'z8({:(z9%z8"{9!|:"wD'r?$p<$r@)o?)k;'g8&g8(d-b._.\/[0^1`2b3O2P3R5S6S6T7V9W:Q3S6V9W;V:U8V9W9i7g5e3e3c3b2`0_/f1e2c4"b5"d6j8s<x?!€Q3{N1uG/kA)d;'_8']8(\8*L0T4^9e<c<\:!T9&O9+M,%L)%M*(P,,Q+*N(%R+$W1&y:~?B!}Ay=v<z@~D|;'|<!€?‡CŒGŽDŠ>‡8sB$vE%zH'|H#zFzE|F~H…A€<};€>€?{<x8y9r<$o;%j:$g:%f9$f:!g9h9s6!x;&|?*z=(t7"r5 v9${>)o;-o<+o=&m; l:m;$p=,s?1g='d:$b7$c8%h:*j<,g9*e7(r5 q7!o8#l8 l9s:z>€@}:{:x:s9m6g4b0_/m6"r8"|<!<|9s7h5$b4'h7h5k5o7o6o4r6x<›MœNMœLœKžM¢O¥RRŸT WV™T—Q•Q•QžM  O£Q¥S¥S£QŸNL ON‘N!‘N$‘M&M#L!ŽL„K ‚I€G}Cz@x>w=w=‚8‡<ŒA‘D’D•D˜FšHœL +›K™J˜I•G“F“F“E„A…BˆD‹G‘K“K’IF…G‹H–IžIH—EŽA‡?LŒJ‹I‰IˆJ…H~Dz?r6u9t9r7r7u:u:r7|:‚@ŒH!“N%—P$˜P ˜P™Pr:t<v>y>y=x<|>}?r6s6!s9#r8$o6#l4#i4"i4$kF+jE+iC.gA.f@-d>)b=#b="o?o?n=m;"l:#j8i7i8l;l;l;l;m<n<!o="p>%c/g3m7p8q8q8u:v;r@qAp?m> l=#k=%k<(j=(b9%b9#b8"c9!f:!f8c5a2X3`4i6p8q8m7d5!^3#d4a3_1^1]2]2Y0V-e<&h?)h?+d;'b7&b7&_4$Z/e5d4e3c1c0f1l6o9‚?…B‰D‹FŒE‹D‹B‹B’K“K”N“MKIŒJK‹G‰E‡B†A‡B‰DŒHK‰FˆE†Bƒ?=€<;;‰Aˆ?‡>†=†=†=†=†<|;~=€@‚@‚Aƒ?„A…BŠGŠG‰F‡F†E…F…EƒEz:y9y8{:€<‚>‚=<~<ƒ>ˆ?Œ?‹>„<{9u8†;„9‚7€788~7|7r=w?{A{?~?@"€?!~; ‚BA~=z9z7 +}:ƒ?ˆD^9'a<*d?-f@-e?,f=)f=)h>(d<f>g?f>d<b<c=d>o<n;m9!l8"n:$q=%tA$wD%k@-j?,h=,e:*d9)c8(c8'c8'n@)m>*k<(h9'f7%e6&d5%d5%W2)W2)X4(X4&X4&W3#Y4"Y4"]/]/\0\/Z0Y/W/W/e6"d5!c4 f6 j:$l<&m='m='k:+n;(p<&s=%p<$k;%f9&b8(r?.p<.m9+i8)h7(h7(h7(h7(G(K,N-Q,U.^4(b6+c4*]6%`:'d>+f@-h?+i@,jA-kB.ŒIŽIŽIHŽGG“J–M ™M-šN.›O/›O/™M-™M-N/žO0ŠP+‰N,‡L,…I-‚F*F&D"E ™J™J˜J˜J—I˜J˜J˜J‹@‹@Š?Š?Š?Š?‹@‹?„<ƒ;‚;‚;‚;ƒ<€<€<wD)vD)wE*uF*tE)rE(qD'pC&wC+t@(q=%p<$p<$o=&m;$l:#g4#h5"k7"o8#o;#o=&m='l=)g9"g9"f8!e7 e7 f8 h:"k;$GŽFŠB†< +‡:>’@’@Š@E”J—M–M “J’I‘HS.T/T.S-T+U,Z0]3S*T+U,U*T*W*Y,\.X0X/Y0Y/W-U,R)Q)`-a.c1d2e4e3e3e3h;&g:'f9&d6&b4$a3$a3$a3&l<&j<%h:#h:#i<%j=&h>&g=%†>‡?†@†?ƒ?<~;}:†?‚=€;:;~:z9x7u6u6v6v6w5y5y5y5q3
+s5 v9 +y:|<?‚B‡D~L1}K0xF-p>%n<%r@)rB,qA+`4`4_3Y/U+Q(Q(Q'o@&qB(tB'tB'tA$vA"xC$zE&xLyN|N}N~LNƒP†S…? †@ˆAŠC‹D‹D‹E‹E}@$B#‚F!…J †K…J ƒH ‚F!€B~?{<x9u6s4r3q2w7u5s3s5t8u;v<s;\7]8^8!\7$Z7$W3%R0$P.$H(F)F)F*F+ E*!A)>%8)$7(#8&":% <%@#B$E$F)L,P0!S2!W3#X5"\7$_:'{7}9y7r3p4r7r:p8„L'K'~H&xC$q>!m;"n<%n>(D) G,#K/$M1&M/$L.#M- N.!E,'F-(I.'I,$J,"M-"P0%T2&N5!N4#M3&L1&K0%K1$K1 K2R* U.Y3\7]8[6X3V0f7f7e6e5f6g7!h8"i9#g7 c5a3b5d:"f='e?(d>'q=r>p>p=m; g7 d4 a0d<#b:!_9"]9#Z7#S2N-H)7$9&>(E+O/"Y4$c8(h:*f3i7 n:$r<$q9 r9s:w;i6#j9(i:(c8'^8%]:'X9%S4"L,M,N.K. G+ E*#E)%C*&v:z>B#€D(~B&{@"z?z@„C‰EŒH#ŽH$‘G"’G–I—KœL +œNœM—J“GEG“J‘E%Š>ˆ<Œ@ Œ@ †:„8‡;x6z9|;~>}={:x7v4s6s8t8r9p8m7i5g3Y7V4Q.K+J*I*K,J.H(G'H(L,O/P0M-I)A&<!:>#C&D'F)J-<'?-B/E0I-U2g;uD{CzE{G{HxGuE!pB n@y9x:u;r;s:s8 v7 w7 h0 +k3o6s7t8v;{?}Ao?p@qAs@r?s?t@vCz@{AyAu=o9j5i3g4uAp<o;s?t@p<o;q=g5i7l;n=o>n=m;l:f?f?g@f@eAdBdBdC l;l;l;k<l=m@#oB%oC(h<!g; g; h<!i="g; c7`4f9&`3 ]0_2b3a3b2e5{8|:"z<'t:&p6"r4x6}:6}6|5{4w1s-n*l(^1^3 ^8!_;#a<"c;!e9 f8€H%€E#}B"y<w8w7z9~;‚H‚H€G}CyBxAyC{Ev;v=x?"w@"v?!s>r=r=s?o;n:r>t@s?r>t@o7p8r:t=v?w?w?w?uDsDqAo?k>j=h<h<h:"g:#e8!`6 \2W.S*N(K-#K-#L.$N0&P2(Q3)O1'M/%N/-I*(J(&P-)T1-V1+Y2-]6/h0h4h9f>fB gF'hG(iH)‚B)‚B)?'=%~:#|8!|5{4};|;y=z@|BC„D †D!|=~=ƒ?ˆBH"˜O$¡W(¨\*›A™@•> 9 ‹7‡5ˆ8Š;?Ž@BDF‘G’H“I‰>‡<‡<‰>‹@!‹@!‹@!Š? Š:!Š:Š;‹<Œ=Œ=="=$@@Ž? >‹<‰:ˆ9‡8s6t7u:v;v=v= u> u="‚7ƒ8„9†;ˆ=ˆ=ˆ=‡<}7{2|2 +‚8‰;Š=>’A‡<ƒ:8}7z7v4p0k+i>i>j>l>o?rAuAwBm5$g2 ]-Y*Z-`2f6 l9$šS%˜Q%–M$“H ’EB?==;‹9!†5 €2~147ƒ<;€7~6~7 +~7 8
+8
+…>"„=!ƒ< ‚;„=!…>"„=!:€=#<=~<|:|:{8z7„5‡8‹<A#“D%•F'•F'•F'–E•D’D’D‘D‘DE‘FŒF$‹E#ŠD"‡A„>;9~8u>q9q6u9y9x7y6 z7 +u=0s8(r3!t2y1{0x+ +t(k5m6o8t;z=AƒC…E¯F +ªC ¢?>žA£D
+¦F ¦F }:~;;‚>…A†B‚A@e:e9e9 a7_5]5_7a:\2"Z0 X/Y.Z0^1^2^2b;c<a:^7_8a:_8[4]:];\:\;Z9X6W5V3\/_3d6h:m=n>o?p>oB/j?,d9(\3!V,P)M&J%B-,C.-B-,@+*<'&:%$:%$:%$2,00'*0&'6+);,)<)#=)"@)!D)J*T,c5u?H‰L ŠM —=˜>š@žB D¢F¤G¥H–D’D‘G ’M$’Q)”P)K&‹E!u@ p= k9 e5!a2 \/T*N%C)E+G,I,H,K,M/O1S2T3 X5"\9&a<)c=*c:(a8&X6Z8X6U3U3Y7X6R0X3Z5\8]9^:]9[6Z5X6X5V3V2X1Z1[3\4K0'L1*M2+K2-J3-J2.G2-G2-^+`-b/a.`-`-c0e2[.Z+_,g3p8t9x9|;†4Š6“:?£B¥D!£E#¡D#–<—=˜>˜?—?”?“>’=<Œ;‰<ˆA‰E‡B‚=~6P*N'J&G&G*&E,(C+'?+$P*T,"Z/(]0*a2*c3%f5$h8"n<o=t@xDzD x@s8m2j2#m5&l4%h0!i1"n6'm5&g/ q- t1!x5"|:$='<)}:*|8+t?/q<*o7&m4!o5!u8#z>&~@)ACEEŒD‰@ƒ<:w?yA zB!x@t<s;u=x@u7"t3v4€: ‡= ˆ<‹;=’A –C +HœJ˜HC‚?{=z<{={?z@w@t>p<l;xA,n;&a4[2Y5Z5"Y4"W0P2R2T2Y1]1c2d1g2n:r<{>…CH“J”K“J¡QQ•N‹I‚CA€A‚C€Az;t5 t5 z;€A‚CƒB‡;
+ˆ< Š< Ž> +‘? +’A “@
+“@
+‡D +ŒFG’D’B”D˜KR¢O +žM˜I‘E‹D‡C„C#ƒC'wAv@t? p<$m:%j:$j:#i;#[2\3]3[1\/\0`2b4m7l8 k9i:f8c6_4#^3#A*F,K.O.P,L+J+H,Q,V1_8f=!i="h: e7d5m; o<t? y@"B!†D"ŠF#G#”R ˜RŸT¥V©W¨V£QŸN‘<Œ;†: €9}8|8|8}7Š>&†8!‚5…5Š9Ž="< ;ƒG#„H$…I%‡K&ŠL'ŠL'ŠL'ŠL%‹E
+•JŸO£P¡K›H˜G˜G‘MK†FAx=q;n:"l:#`3^0[.W,T)R(O(O)J&K'M(L'M'N(S*V-V'W(W*W+W*S)Q&P$]3b6h9m9!n8l9k:j;k=m?q@ r? p=o:m6m6ˆ@Š@B”E™GŸJ!£L!¥L"G ¡H ¦L­O®P¨M F™B +™F‘B‡=€;|;z8u3q/[4#Y3 Z1`3f7j8k6h3_3`4a5_5`6_5^6]5Q6!Z;'dA.gB0e>-^9'Z6&V5$m8i6c1\.W*Q(M'L'S-R,N)L&H#F!C!C!G%I'M)M)O*Q,U.X1 \0#]2"a4!b5c5c5b3!b1"x:~<…?‰@‹A‹CŠEŠGC‚D‚D‚B€@?ƒA†D!”@•A˜BšBCŸC D£E£E¦H «K¯O­P¤J—C<€@$u9g0],Z,X*S%N =*A,G.N2V7\8\6[3a2a4a4a5`4^4\4\4a4c4g4h3f1d1e3f6g8$f7#c6!`5"]4 [5 [5"Z5"`8_6 ]3#[1#Z0$Y/#V/ V/Z/\1!^3"a4!a4!d5!g7#i9%g4#i4"k7q9s:u9v8u79†;Œ=‘?’?“@’C“Fˆ=‰>Š?‰>ˆ=‹=A“E˜F˜G—F—F˜E˜E˜E˜F§M¨NªO©O¢L“D„:z3T+J%=78!<%=& <%\'!`)"h/$s5&}<&>#„=…<D€EE €F €F €F!E }E wAw?x<w9v8t9u<v@&s?)s?)r>&q?&r@'r@%sA&sA&q>p= o;#n:%n:%n:%q;#q;!l4n6q7s7r6s6t7v9v4x7{9;‚=„<…;†:}9‚9‡;Š;‹;‹;Š?‹AŒ9<‘><‰8 +‡6 ˆ7 ‹:‘E‘E’FF‘G‘I‘I’J™G™GšF˜E‘D‡>{8s3P+H'>"8!9&>+$A.'C/&V*[- a2"j7"p="v? yA{A@‚A…A‡DˆC‰D‹D‹DqA*tB'vC$xC#tA"o=$h9'c7*s:u:t9t9t7t7u6u6q9s8r6s5s5v6w8x9v5x7{8{8{6z5{4|5ƒ8…:ˆ<Š?‹@?Œ>Œ=w:|;€: :ƒ9:‚=?‹8=•B“A=Š;Œ=@‡<ˆ=‡=‡?†A‡B‡C…D™I˜F—E—F•FE ˆC"ƒB$i/d-\+U*P)P)P)P*A,B-D/G1K3O6Q9R:o9r:u<z=?ƒ?…@‡?‘> –A ›E
+žH œF +”A +ˆ9‚4x=x=y=z;z9z8x6z5n6n5m4o3p2r2s3u4u5w7z8z8z7x5z5{6{/|1}4~5|6|5{3y3r6u8y8|6}6|7};~=ˆ8=‘C‘C‹@‰?ŒD‘I!†7†7…8„9ƒ9€;~<~;šH˜E”A +’? +=Š=„:9†7†9‚:"|:$u7"q5p2p3W+(W,&V+$V*U)V+X-Z0X0&\2&a3$f6"n7"r9v9y:‚@„C‰FIJ‡G$C)y?+o9q9s8t7v7v5v3w1n;m:n7"n5!o5!q4q5r5l2n4 s6#s6!s5r4t4t4y2z4y6y8x8u7"r5#q3&m2q1u2w2x1x3y7z:ˆ<‹?ŒB†>|7y4 +{7€<c1h6k< n=o:r8{:<s@q;s8x9~;‚=;~9{?|;€8ˆ:>‘@‰= 7|7{8y9t8 l3b-X'S$C,&M2+R4)V2"]4 h:"n<!n8e8%h:#m;"r< t=s<p:m:m5k3l2q7y=#|?#y9s3c5e7h:l;n;n;o9m7i3h5i6h6h6d4a1`0_1]/[-Y,Z-Z-Y,X+P3#R2#S4"S4"S4"S2R1R1M/ S3 +V6V4T0W0]6d=;'&>,,A//@..?+*B*&I,$N0&p;p8q6v6z8}< =€>w;|<„>‹@Ž@BEGI +‘K‘LNŽM‰J†GƒEX,Y-V*P& +R*Z5_9"_9"e.j/q2w5{7z9y9x8k4i2i1l4r8 v: v9t7d7f7g8k9k9l9k8j7o8#m9#k7"i6!h5"e5!e4#c4"h/i0l3n5!o5o5o5n4p-p-o,n+m)k'j&i%S&+Y*0].4_06[,2V%+O$J>Ž?@ˆ=„9…8Š9 Ž< +r6q5n3j.h*h*i+k-o3x9‚>…<‚8‚8ˆAIŠ@ŒBD’F
+—H +šJœJœJG†Dx;h2 _1[3U2O/L+"O-#V0#\2"`5%_5%]6'\6)s3r2q1s2u4x6{9|:m4m4o4o4p3p3q2q2R/P.N,J*J*J,L.N0K$%R**X00\31^2/^1,a2,b3-e5 +f6g7i9j:j:j:j:w8v7w8z=€C +„G„H„HŒA‹A„?|;v6u4v5z8~?}@#{?%t:&m4!j1l2p3 v9|@B!?y7{7‚>ŠF!:€9…:Š;‘<—> š? @!¤QŸM•HF„D {@ o9e2Q/%T0$X0$[1!\1!Y/!T.!R-$T,"U-#V.$V.$U-#U-#Y/#[1%S.%R-$R-$S-$T,"U-#X."Y/#p4p4p4n5o7q9 r<$s=%ˆ6Ž<•B—B—>—<›?ŸCŠ>‹?‹@ B"B"D$D$ŒC#”D#‘A Œ>‰;‡<‰?CŽFc5(_4+Y2-R0.N/-M-.O0.S1/r2t6t<%q=(o:(p8's:'y<)r7r7q6n3j/k.q2u6r9(r7't5$v3"{2~13ƒ2‰9ˆ8Š:?”D!•E"’B@“B•C—C™C—A’><‰:‰>‹ACCŠ@ˆ>†<†<ŠA‹AŒBAD“E•H—H¡< ¢<#£?%¤@(£A(£@) @( @(Š?B‘DŽ@‹: ‹9 = •B‰?"†?!„=!€: z7u3r0p.R)#X/)\6-\6-W1&P,M)M)w0t1q1o3n4o5t8 u9f(e-d0c3c3g3m3q3‚F,~E*zB'xB&yD%|E'~E(E)k=l;k9h6h4h2 h1
+h1
+z7$w5x1}3€3ƒ2ˆ5Ž:A“B–C—E–C’CŒA‰?˜@™AšD›E˜D•A=:–>—?™ACŸE¢G£H¦H~>?€?@}>y;v8r7X8+X8+V6)Q1$M- L,O/"S3&g:f9c8^5Z3T/P,N*z-2 …6%„6"‚2‚0†5Œ; j.h.f/d1e2g3i3j2r9%l8#e7 a7f:!n; w:|9k/g/c0_0`1c1h2j0s@#r?"p?l>i<f;b:b:q<*n:%n7#k4 e,^%`(h.[*_,b.d0c0`/ Z.!W-!M*$J)$I(#H)&I+)H,+E)(?%&I&"J'!O*"Q,#T.!U0 V/U/eCeCcCbA`A^?[>Z=ƒ?‚>};z9u8s7r9s:„2„4‚4‚5!5%}5&{6'z4(J@'H<"D6>-=( A( H. +P3{?#w>#t>$q=%r<$q9 r6q4k6$b2Y/X0b6p=@†Bv:"t<%p>%k=#i;!i9"m9#r9%f)$f+%e,%_-$\-%X-$T.#R."U'W+]3_9&X4$M- L0$T8-n4o5s7u7s7o6"h5"e4%€;{6u3u4y9z=!x;t8ƒ=„>‰AŒDDDŒB‹A…7 „6‚65€5 €7$‚9&„;(†6„5€5~7|9z9#v7%s6#w8w8u8r9o9l9j8g7 V'Y)`,j2#u7(}<*€<):(^5#Y3 U/Q-R.U2Y7];"e8f8j9o=u?x@y?x<\=(^;%c8%h8$j5#g4`0[-I#M'R,U/X/X/Y0Y0o2o2p3q4q4q4p3p3g3h4g3d0`,^*^*_+U3U2T1U2W4[6[7Z6Q0P/P/Q0T3 V5"V5"U4!g3i5i5h4j6 m9#j6 d0f6 i6!n7#r8$u8#r8"q9 o9lBn@q?v>x>x<s9p6„5…7…:„<=?€A€D y:y:z;|>A‚D…G†Io@"m> k<l;l9h5f0b,U1X/].c0j3m6!k7j8j8l:!n<#k<"i: g7 e7f8 P, Q-!S/#T0$V2&W3'W3'W3'f4h6i7 j8!j8!k9"n<%p>'s.r-t,v.y1"{3${3$z2#n<l:j8i7k9l:k9j8q8 +s:u<u<y@}D|Cw>{77‚6†6†6…6€5 +4 w3z23†4‹7Œ8 Š6†5p=*p=,l;*e7']2"V/ S.Q-S.%V1([5*_8)a8&a6#`3_1h3i3k5m9!p>'s@+r?,o?+…A†=‡:Œ;=”A—E–E{?y>v;m4e-]' X%
+W# _+_+a-b.c/c/c/c/e5f6 g7!g7!f6 f6 i9#k;%q9(p8'o7&p8'p8'l7%i4"f1q2+n/(k,%j+$k,%m.'m.'m.'k/$m1&m1&k/$l0%n2'k/$e)g8$j:&o:(u<)x>*w>*v@(t@(e7f6m6!s9#y<'{?'x>&v>%r1q1o2k/d+`( +`( +_)o5t8y< > ‚=;€6}3 †D!„B €?!{>"x<$q8$j2!d/V5,U3*U0'V0'Y1'[3)\4(\4(n1o2p4m5m7l8"n;&o?)y:y:y:x9w8v7u6t5b2c3c3b2`0_/a1c3Z1Z1W1X2W1T/O*L':,#7) 4&3%5'9+";-$<.%9,#</&</&9,#8+"9,#6) 1$D#F$L&Q&S'R'P(O)R2U1X/]0`1`3\2Y0{6}8€;€>?ƒA!„C#‡F&q5t7z:€= †A ‹BŒBA“EB‰?‚;|7s1i+d%O)&N(%L)#N+%S.&V/(U/&U-%m6!l8"m9$k8%h7&g8(h:*k=.Z4)Z4)Z4)Y3(X2'W1&V0%U/$d0f2g3h4h4i5 l8#n:%l-l-m/ o1$o4&m3'j0%f-"|8%y5"u1u1w3 z6#|8%}9&}1!ƒ7'†:*†:*‡;+‹?/Œ@0‰=-x@%y@%~>#=#~; {:x9t7p0$q/#r,"v,#w,&v-&r,$o+"R* T,"V.$X-$X."Y/#\0%^2'V."V/ X. Z/^0!a2"d3$e4%}/{0 |2}6€;=#}<&y;&‰8†7‚78‚:‚8ƒ5‚2 +c2#c2#a0!],X'S"Q Q c/c/e1f2g3g3g3g3q9"q9"r:#p8!o7 n6p8!r:#s=%p<$m;$j:$h9%d7$^3"[0 M3J0F,E+E+F,F,F,M(R-V1T/U0W2X3 V1Z+\,b-g.h/h/f/d0p9%p7$r4%t5&v6*u7*r8,o7*i8'k:)n;(o:(p9%p7$r8$t:&€?~={:z6x4w2w2w2y:x8u8t8 r8"o6#k3"h0e2/_/+X-'T,$R,!U*!V'V&U!Y%`+f/k2q4u7 w9"†;‡<‰>‹@ŒABBBy=#y=#x<"u9q5o3p4q5g<c8]4Y2R.N,G'C$V*+S'(Q%&P$%P$%P$%O#$M!"V$%[)*]+,Y'(V$%V$%V$%S!"= B!I$M&!R)#R,#R-$P.$Z6Z3Z1\0^2]3Z4X4t2x3{5€65†6Š8Œ:n@(k?&i<%g:'d9(d9)c9+c9-i9#g7#e5!c4"a2"^. X*T%V%(P"$H E"H%N)#T+%Y,'k3"o6#t:&z<%~;!€9‚9„9g0g0h1i2i2h1h1g0u5w7x8x8w7x8{;}=!Š5 †4‚1€1 3%}5'z4(y3)t3r1q0r1t3u4 t3r1s3y9}="z:y9z:{; z:p: s9!w9 y9 y7v6r5o4|: {8{4{2|3"{3$w4#s4#b7'f8(j;+n;*r:)u:(y<)}>,
\ No newline at end of file
Index: demos/branches/xen/bca/bca_raw/aereo1.raw
===================================================================
--- demos/branches/xen/bca/bca_raw/aereo1.raw (nonexistent)
+++ demos/branches/xen/bca/bca_raw/aereo1.raw (revision 1684)
@@ -0,0 +1 @@
+ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿¿¿¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿¿¿¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿¿¿¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
\ No newline at end of file
Index: demos/branches/xen/bca/bca_raw/cannon.raw
===================================================================
--- demos/branches/xen/bca/bca_raw/cannon.raw (nonexistent)
+++ demos/branches/xen/bca/bca_raw/cannon.raw (revision 1684)
@@ -0,0 +1 @@
+ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀ€€€ÀÀÀÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀ€€€ÀÀÀÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀ€€€ÀÀÀÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀ€€€ÀÀÀÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀÀÀÀÀÀÀÀÀ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀ€€€€€€€€€€€€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀ€€€€€€€€€€€€€€€€€€€€€€€€€€€ÿÿÿÿÿÿÿÿÿÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀ€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€ÿÿÿ
\ No newline at end of file
Index: demos/branches/xen/bca/bca_raw/aereo2.raw
===================================================================
--- demos/branches/xen/bca/bca_raw/aereo2.raw (nonexistent)
+++ demos/branches/xen/bca/bca_raw/aereo2.raw (revision 1684)
@@ -0,0 +1 @@
+ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿¿¿¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿¿¿¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿¿¿¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
\ No newline at end of file
Index: demos/branches/xen/bca/bca_raw/esplo1.raw
===================================================================
--- demos/branches/xen/bca/bca_raw/esplo1.raw (nonexistent)
+++ demos/branches/xen/bca/bca_raw/esplo1.raw (revision 1684)
@@ -0,0 +1,46 @@
+ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ +
+ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$#BB??-*ÿÿÿÿÿÿÿÿÿÿÿÿCB]_`b_b>Bÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ-+LLŠŒ'³¶C¹¹G›™2‚|.2)3&
+`[ ut‘‘~z~ƒ‰%6;"% +ÿÿÿÿÿÿÿÿÿÿÿÿA>?ÿÿÿggaÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ94 qn'µ·LÈÍ=ÄÉ'ÒÕ0ÓÏ:»°<hVH. - kRˆ| “ Ÿ  £ˆŒmpBC,*ÿÿÿ$$%'?B ;?+. +ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ Ž<±³8ÖÛ6áæ(ÛÛÙÏàË>°$dJ„N"Žb¼¥!Ñƺ¿¹ +ËÇ—•’‹‰„€mh3/ 56nqhm“˜Htz4HKÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ;7hiª¬1ÂÆÞàìåijԳΝ'ŽNz1ŸO¿|%â¼)åÐãÐâÑÛ˽±±§‘Š’‹«§!Š Ž~€ª®&¬°5¢§IˆŽF]`''(ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ !wz ´¶Ú×˾àÄ à±·v¤S2™3¶^Û©ݾîÐïÕ âÈãÍ!áÏ#ÎÀ©ž²¬ÒÎ$ÚÙ/ÚÙ1ÅÆ ¸¹¯²%‰.X]*, ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ + +98»º.ÓË"åÎÈ¢Þ¡¹i­JÂR£*ÀXê¬øÑ
+ü×çà +ëÊùÛ/óÙ*ÝÈâÕÔÌéã×Ô +éæ'ÛÚ ÕÒ#´±"ii$$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ,+qn­ δ!Ù¬¿{Ãm°J¶HÚiéƒÿ· +î°÷«ò¢ +î¡à–ó®"õº ÷Éö×êÚîéàÞÕÔÕÏ#‰EC + +ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿmaœ¼·t±]Èm¿eê›ð£ÿ­îˆåXÝ<Ñ2Ï3ÕBØWöŽó¬íÏÙÓÙØ%ÆŬ§†€<; + ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ+!eQ•q··vڗʌà®Ú¡
+åŒ
+Þ]ë5õ'éÖ ÔÓ%ÓBæ Þ¬ª™˜“—–‰d`10ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ  VMŠ{¦ŒÆ¦áÌ­ʳÔ¨ÅjÍ?Þéé îè ÌÆ"ÕZՏ +±œ‹ˆ‡ˆsw./ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ op·¸6µ°¶°ǽÊ¿ Á·Âœ¶TÎ:ê%îãê îØÓ'ÍDÎrÀ† ¯Œ ‡wsodh!#ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ "qy&ž©1•Ÿ ±¹¬®¶°˾ĖÄ\Â*ÑëìãßÚÐ"Ó?Ï_ ´b§li rb PL 10ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ +(+1:‹™: ¯:©µ/º½2¶«̲!ҘÝr"ÖD ÏÙá$Þ#Ö!Ô& Ï(Õ>ÎN +¨>—E‰NwUUD-'ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ9@
+BMAF_Ug
+µ„%ë Eãx*üx.ö^Þ>Ñ3Ê0Æ0Î9Ì6Ë9Á7ž ‡mZ<ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿi? +„B¶]#Üo*ëp"á]áYñkä_ÉD ÈAÄ6É9Å2 wZ/ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ 4U-¦7ÏYÆRÞhú.Ûa­0—“¡ ¨ +›ˆz Y + +-ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ+B_¬8+¤9ÁVÌY¸=“š©”Žž‚sM 'ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ 7 <>q
+uŽ‹%˜2 “› ™š¥™“
+r Q<
+  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿC
+b*`tn{ €cK[z —™¥Ÿ“…e> ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ'@ +h'x+¶^›=¦E•2t 76`€
+ £  
+‹k =%  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ)@ [“KÃx°f¸n”CaBF\‘ ‹„} W
+/ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ:
+e+¯w"ȕ"›­ƒ
+œf6 ÿÿÿ #D n q~q j [  +ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2e1­‰(̯-Ä´±Ÿ‡j@) ÿÿÿ)>X [\
+F 7ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ1*†~-´­;ÊÇ<ÄÄ&µ²-ld&ÿÿÿÿÿÿÿÿÿ +&)
+" ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
+nr%½Â^®³=’•tx
+)*ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ45 yx?WWZX 43 +ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
+'" ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
\ No newline at end of file
Index: demos/branches/xen/bca/bca_raw/aereo1_h.raw
===================================================================
--- demos/branches/xen/bca/bca_raw/aereo1_h.raw (nonexistent)
+++ demos/branches/xen/bca/bca_raw/aereo1_h.raw (revision 1684)
@@ -0,0 +1 @@
+ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿¿¿¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿¿¿¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿¿¿¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
\ No newline at end of file
Index: demos/branches/xen/bca/bca_raw/cannon_h.raw
===================================================================
--- demos/branches/xen/bca/bca_raw/cannon_h.raw (nonexistent)
+++ demos/branches/xen/bca/bca_raw/cannon_h.raw (revision 1684)
@@ -0,0 +1 @@
+ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀ€€€ÀÀÀÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀ€€€ÀÀÀÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀÀÀÀÀÀ€€ÀÀÀ€€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀÀÀÿÿÿÿ€ÀÀÀÀÀÀÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀÀÀÿÿÿÿ€ÀÀÀÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀÀÀÿÿÿÿ€€€ÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÿÿÿÿ€€€€ÿÿÿÿ€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀ€€€ÿÿÿÿ€€€€ÿÿÿÿ€€€€ÿÿÿÿÿÿÿÿÿÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀ€€€€€€€€€ÿÿÿÿ€€€€€€ÿÿÿÿ€€€€€€€€€€€€ÿÿÿ
\ No newline at end of file
Index: demos/branches/xen/bca/bca_raw/esplo2.raw
===================================================================
--- demos/branches/xen/bca/bca_raw/esplo2.raw (nonexistent)
+++ demos/branches/xen/bca/bca_raw/esplo2.raw (revision 1684)
@@ -0,0 +1,92 @@
+ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ" 6H`` UN1ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ + ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ#% +JE(H=!E54"=<`m +f|
+q_2" +ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿKO.‰‹Y}Dno3GD"L i‹œª ± «ž‹K.(ÿÿÿÿÿÿ.2KJ WU UR >>ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ::jm8ox5^i'+2 +$3e‰§¿á +ÔÚ ¦vPÿÿÿ +OY‡‰ŽŒ¬¤7†|qjif#'%/-.,'%(%ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ(D@ &-8ÿÿÿÿÿÿÿÿÿ.S‚¢Á
+× Þ ë à ¨
+d9
+$IRo} ¤³®½°$®Ÿ³©0}HI59HLqt#gh"[\"12ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ: R† ­´ÈÔåÛ© y 8'IP—£±´ +¼¶º­ ³¤ Ä»"ÇÅ4”—ƒ‰ +—•šž0ƒ‡)tv+ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ3n„Ÿ¬Ã +¾Ù ´g/#VR¸»8³±¾¹ÕËÊüº¿Â°²º¿°·¬´³¹#–œ©­>X[DEÿÿÿÿÿÿ +
+ÿÿÿÿÿÿ*P} žª£³¯ £ +x`2*rh‡‚
+¤Ÿ¿¹ ÞÛÞÞÝßÈËÒÓ³´±¶¾Å­²¾Ãª®›’”'NP $ `Gb0c„˜ +¡ª¤—‰y +i' +jCZD G7cW­¤½¹àãÞäÍÓÈ˾»Â¿ÄÇ´¹¹¼¿Ã
+¹¼ +¸º±´œ  +ÿÿÿ82ztˆ}µœ(²Áo'”¥£¨
+£’† x+uAŽn%†t [KQDœ¹´ÜßÝä
+ÎÒÂÄüÌž½¾ÁÁÀÁ¸¸¹º¸» «¯ÿÿÿÿÿÿ 92us±±5ËÈ+×Æ!ë¿+õ¨6ÃP¢¦ ¡£œ•…#7_¢’ˆqfvk‹~³ªÊÊÒÖÎÐÀ¿Ä¼ÍľµÂ» ¼ º··´º¸ ¸¸
+°³ÿÿÿÿÿÿÿÿÿ*)Œ‘+¶»+ÑÔ!ïá(öÉ%æ”âi"½* ¨´¬ ¦ºA¼^Ń Чʹ£Ÿˆ‚’‰˜‹¸®º¶ÆÈÕÔÊÇÍÄÍÃÏÆÐÉÉÄÀ¾ Á¾ +¿¾ ¶·¯²ÿÿÿÿÿÿ
+3>`m¬·*ÑÓ'äÑò» ×zÛVÆ&¼ ÌÃ
+É0èrû¦%ÿÅ&ïÍàÕ ÑÐÁ¾²¬º®
+ÎÃÁ½ËÉÞÛÚÕÞÓÙÑÞÙ ÙØ
+ÐÏÆÇÂĹ¼¯´­³ÿÿÿÿÿÿ4:sq¾°ñÊ-é¡át +Ç3ÄÖÍÅÏ;òŠþ¹ûÍîÓäÛæäíéæáÕÌ +ÞÖÔÑÒÓ ÝÝ +ßÛ
+äÙ æÛ +ÛÚØÛÕ×ËÎÀø½µº°·ÿÿÿK5s\hQ’rÏ£ï«,äÞ[ +Î*ÍÜ$ÐÆ$ÑPížðÃóÖúéôêèâ
+ïæ îæ âÜßÜÛÞ ÓÙÕÛÝÜßÔ áÕØ× ÖÛ×ÚÌÑÀÄ¿Ä ±¶“—ÿÿÿ= q9±q3·uǀÍxåègÉ5á:Õ'Ë Ú<ÓIçð°ïÌåÎæ×éÞ
+îã +øè çØïàÞÕÞÞÔØÔØàÞ +ÚÍÔÈÌÌÇÌÆʹ½°²#±´3MQÿÿÿJ u¼FÆNÅIÓPÝOãJêJèIçOéWÙ[Ôtçœñ¶á¶çËìØêÛîÛîÓóÔïÐêÑäÖÝØÖÔÖÏÍ¿¸« +—˜„ƒ…š›$™—2nn<@ÿÿÿR mµ"ÂË"Ó'ÌÔ#Û(é<ðSûjÿxïvÛ}â‘
+ߏÛ•ê¸ ôÏ +ñ×òÙïÑôÒóÑéÎãÔâÛÜÙÎʱ¦Š€mkLLrmpiSL=7ÿÿÿÿÿÿ{© Èáã âÝß éñ8 íK +ìXô`é\ ÜZãeÛbÙlë”ô³óÅ +òÓ îÔñÙêØæØâÝÚÚÍÑÉÌ ÅƼ¸’‰
+xkweG4ÿÿÿÿÿÿÿÿÿÿÿÿ® Á
+Þù
+éíúæ àç3áHÜO
+áPßGÚ=ßAÞEÖIàkçŒê«ðÇ îÔíÝíáâÙÚÕÙÖØ× Ö×ÄÈ®¯ ˜’ƒ„qYE9%ÿÿÿÿÿÿÿÿÿŠµ äíìææà ×ß@ ÔT ÉRÏJÒ>Û/ç3è8Ú8ÞSåvíŸ ÷ÄïÒéÙìßèÚçÖåÔ àÒÔ͵µ ’Ÿœ°©ÍÅ@«£4Ž†3lf,-)ÿÿÿ…œÍ
+Üð
+ êÙÛ Ø'ßO Õf ÈfÉ`ÎSÛEêJ ìOáOéið‰ö®ýÐòÙ +éÙéÖôÚ øÒç¼Õ«˪³ •Š‹„ÿ(°®'³³A¨¨Nnq.+.O| º +ÖÙó ê
+ÓÊ×NÚy؎ܙ؎Ù~ à ßـ㒠+ä£â·èÏåÖæ×êÍóÄï¨Ԁ¿k¶j‘W +[5ƒr
+‡ƒ››9§«VšSHS)ÿÿÿ=m˜ÍÌÞ Ó ÐÊ2ÐYÎzȎʝǚʒ֘ڙ֕۟ +ўǢδÕÂäÈæµú°ñ‹ÀJ•‰rG,N:RF 30,1ÿÿÿÿÿÿÿÿÿÿÿÿ[Š­Ê!ÆÇ.À:×e +Ú}ݔǏϥƟƛՠѐגۗʌӝÕ¦ܱØ¢í¢ óŒÙV¼(£ +—Š
+lG5'ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ&X˜ Í@ØNâoì‰+àˆ$ֈ̃ʉՠϝқܞ ٍÍzÌxÊ{Սϊؔá”ðŽðv×C¿­§£  zW?/ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿNjª6Ým#؁"Æ|؏(Ê{ºcÕ|ލ
+׈áëç‚ÙoÊaÀ[ÑqރêîŠõƒ îiÕ<¸ ³¶ª£xH,ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ3f‘¹E¿^Ço¸[ ´O³Aêzå†Òx×w Ûv ÍißzçƒÝx Öt Ýwé~ï}%âdØLÆ+»½µ¹®«™– ^@ÿÿÿÿÿÿÿÿÿÿÿÿ8¢£ ¥¡©¬´"òpîŠÔÔyÌvڑᝠò«ÿ´2ø£.ãÎ_ +ÈM ´,¬¬³Ë% +ÇÍ
+¿ ½ §’b6ÿÿÿÿÿÿÿÿÿÿÿÿ:^Œ£¬ © ªª ±ÝYëˆäîì’õ©ó­éžæÚtÓ[¼0©¬ +¨ ±Ç-óU.öR-ÿR4í:$Ð ¼‰
+]6ÿÿÿÿÿÿÿÿÿÿÿÿ H~
+ Œ§˜ª¶"Ä9Õ^çŒ
+ç‘
+ô†ù†óŠÿ¨2ÿš(çhÄ/Ò)Þ!à Ï Å È"Ø?ÿt1ÿt.ÿr/ñQ!º 
+~ +FÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿO‡. ‘"Ž“ÀDçqè
+ó™à‚Õ_×RÖQòh÷eðNÙ!áè ê
+ä
+Ò ÌÎ/ôc"í`éZÀ4¬)‡jA 3! +ÿÿÿÿÿÿÿÿÿÿÿÿX1²xH¬e'Âs0­W°VÖ|âˆþ¢ü +í‚Ú[Å7Ö;Û5ï= +ä'àå êï
+ãçÉ ÈÇ(
+¹#µ'•gG@`?ra)lh+DE ,2ÿÿÿÿÿÿ![D­‰M¤u-¯z.w<…H¤fá "ò«þ¬ì‹ çwÇGÒBÓ3Ý0à#ì +ê +ëíéæÎ Á² –ƒe05gU%›U‰Bqm042ÿÿÿÿÿÿ+!‡q@sTsNEL!^4ªàµ5ò½3ì®)ޑ%¼d
+§CÍ\â[#áCÕØçòèáÒ²’ +nF3+;&VG(tkBZV)98 ÿÿÿÿÿÿÿÿÿÿÿÿ06ua ͹I˲1ȧ&qo9l0x-®MÀEÉ.ÐÏØß
+ÐÁ +–|m'G< +%
+ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ65rs…ƒ‘ŠmM6) 1 <`{¹7'¼(² À&¥Žht9“r-yq pn1I<3 
+ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ @Jz„$sy‹6>8*r1•D1š;)¥?0y^L>gI˜Jƒ‹8s}>3/$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ(3„ŽEV^ee',+ÿÿÿÿÿÿ +:K!=-">/XU2DL9Aÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ *+4.0ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
\ No newline at end of file
Index: demos/branches/xen/bca/bca_raw/aereo2_h.raw
===================================================================
--- demos/branches/xen/bca/bca_raw/aereo2_h.raw (nonexistent)
+++ demos/branches/xen/bca/bca_raw/aereo2_h.raw (revision 1684)
@@ -0,0 +1 @@
+ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿¿¿¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿¿¿¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿¿¿¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
\ No newline at end of file
Index: demos/branches/xen/bca/bca_raw/bca.raw
===================================================================
--- demos/branches/xen/bca/bca_raw/bca.raw (nonexistent)
+++ demos/branches/xen/bca/bca_raw/bca.raw (revision 1684)
@@ -0,0 +1,13211 @@
+ d d d d d d d d d d b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b d d d d b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b d d d d b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b d d d d b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b d d d d d d d d d d b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b d d d d b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b d d d d b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b d d d d b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b d d d d d d d d d d b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b d d d d b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b d d d d b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b d d d d b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+c
+c
+c
+c
+c
+c
+c
+c
+c
+c
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+c
+c
+c
+c
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+c
+c
+c
+c
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+c
+c
+c
+c
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+b
+b
+b
+b
+b
+b
+b
+b
+b
+b
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+b
+b
+b
+b
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+b
+b
+b
+b
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+b
+b
+b
+b
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+` b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a b b b b b b b b b b ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` `7;7;7;7;7;7;7; ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` b b b b ` ` ` ` ` ` ` ` ` ` `7;7;7;7;7;7;7;7;7;7;7; ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` b b b b ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` b b b b ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b7<~7<~7<~7<~7<~7<~7<~7<~7<~7<~7<~7<~ b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b7<~7<~7<~7<~7<~7<~7<~7<~7<~7<~7<~ b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` `8<}8<}8<}8<}8<}8<}8<}8<}8<}8<}8<}8<}8<}8<}8<} ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` `8<}8<}8<}8<}8<}8<}8<}8<}8<}8<}8<} ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` `8<}8<}8<}8<}8<}8<}8<}8<}8<}8<}8<}8<}8<}8<}8<}8<} ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` `8<}8<}8<}8<}8<}8<}8<}8<}8<}8<}8<}8<}8<} ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` `8<}8<}8<}8<}8<}8<}8<}8<}8<}8<}8<}8<}8<}8<}8<}8<}8<}8<} ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` `8<}8<}8<}8<}8<}8<}8<}8<}8<}8<}8<}8<}8<} ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` a a a a a a a a a a +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_9=~9=~9=~9=~9=~9=~9=~9=~ +_ +_ +_9=~9=~9=~9=~9=~9=~9=~9=~ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ a a a a +_ +_ +_ +_ +_ +_ +_ +_ +_ +_9=~9=~9=~9=~9=~9=~ +_9=~9=~9=~9=~9=~9=~ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ a a a a +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ a a a a +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_9=~9=~9=~9=~9=~9=~9=~9=~9=~9=~9=~ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_9=~9=~9=~9=~9=~9=~9=~ +_ +_ +_ +_9=~9=~9=~9=~9=~9=~9=~9=~ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_9=~ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_9=~9=~9=~9=~9=~9=~ +_9=~9=~9=~9=~9=~9=~ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`:=}:=}:=}:=}:=}:=}:=}:=}:=}:=}:=}:=}
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`:=}:=}:=}:=}:=}:=}:=}
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`:=}:=}:=}
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`:=}:=}:=}:=}
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`:=}:=}:=}:=}:=}:=}:=}
+ +`:=}:=}:=}:=}:=}:=}:=}
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +`
+ +` +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_;>~;>~;>~;>~;>~;>~;>~;>~;>~;>~;>~;>~;>~ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_;>~;>~;>~;>~;>~;>~;>~ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_;>~;>~;>~;>~;>~ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_;>~;>~;>~;>~;>~;>~;>~ +_;>~;>~;>~;>~;>~;>~;>~ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_ +_
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`;>~;>~;>~;>~;>~;>~;>~;>~;>~;>~;>~;>~;>~
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`;>~;>~;>~;>~;>~;>~;>~
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`;>~;>~;>~;>~;>~
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`;>~;>~;>~;>~;>~;>~
+`
+`
+`;>~;>~;>~;>~;>~;>~
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`;>~;>~;>~;>~;>~
+`
+`
+`;>~;>~;>~;>~;>~
+`
+`
+`
+`
+`
+`;>~;>~;>~;>~;>~;>~;>~;>~
+`
+`
+`
+`
+`
+`;>~;>~;>~;>~;>~;>~;>~
+`
+`
+`
+`
+`
+`
+`;>~;>~;>~;>~;>~;>~;>~
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`;>~;>~;>~;>~;>~;>~;>~
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`;>~;>~;>~;>~;>~
+`
+`
+`
+`
+`
+`;>~;>~;>~;>~;>~
+`;>~;>~;>~;>~;>~
+`
+`;>~;>~;>~;>~;>~;>~;>~;>~;>~
+`
+`
+`;>~;>~;>~;>~;>~
+`;>~;>~;>~;>~
+`
+`;>~;>~;>~;>~;>~;>~;>~
+`
+`
+`;>~;>~;>~;>~;>~;>~;>~
+`
+`
+`
+`
+`
+`
+`;>~;>~;>~;>~;>~;>~;>~
+`
+`
+`
+`
+`;>~;>~;>~;>~;>~
+`;>~;>~;>~;>~
+`
+`
+`;>~;>~;>~;>~;>~;>~;>~
+`
+`
+`
+`
+`
+`
+`
+`;>~;>~;>~;>~;>~;>~;>~;>~
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+`
+` ` ` ` ` ` ` ` ` ` ` ^ ^ ^ ^ ^<=}<=}<=}<=}<=} ^ ^ ^<=}<=}<=}<=}<=} ^ ^ ^ ^<=}<=}<=}<=}<=}<=}<=}<=}<=}<=}<=} ^ ^ ^ ^<=}<=}<=}<=}<=}<=}<=}<=}<=} ^ ^ ^ ^ ^<=}<=}<=}<=}<=}<=}<=}<=}<=} ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^<=}<=}<=}<=}<=}<=}<=} ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^<=}<=}<=}<=}<=}<=}<=}<=}<=} ^ ^ ^ ^<=}<=}<=}<=}<=}<=}<=}<=}<=}<=}<=}<=} ^<=}<=}<=}<=}<=}<=}<=}<=}<=} ^ ^ ^<=}<=}<=}<=}<=}<=}<=}<=}<=} ^ ^ ^<=}<=}<=}<=}<=}<=}<=} ^ ^ ^<=}<=}<=}<=}<=}<=}<=} ^ ^ ^ ^ ^ ^<=}<=}<=}<=}<=}<=}<=}<=}<=} ^ ^ ^ ^<=}<=}<=}<=}<=}<=}<=}<=}<=} ^ ^ ^<=}<=}<=}<=}<=}<=}<=}<=}<=} ^ ^ ^ ^ ^<=}<=}<=}<=}<=}<=}<=}<=}<=}<=}<=} ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ` ` ` ` ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ` ` ` ` ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^=>~=>~=>~=>~=>~=>~=>~=>~=>~=>~=>~=>~ ^ ^ ^ ^=>~=>~=>~=>~=>~=>~=>~=>~=>~=>~=>~=>~=>~ ^ ^=>~=>~=>~=>~=>~ ^ ^=>~=>~=>~=>~ ^ ^ ^=>~=>~=>~=>~=>~=>~=>~=>~=>~=>~=>~ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^=>~=>~=>~=>~=>~=>~=>~ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^=>~=>~=>~=>~=>~=>~=>~=>~=>~=>~=>~ ^ ^ ^=>~=>~=>~=>~=>~=>~=>~=>~=>~=>~=>~=>~=>~=>~=>~=>~=>~=>~=>~=>~=>~=>~ ^ ^ ^=>~=>~=>~=>~=>~=>~=>~=>~=>~ ^ ^ ^=>~=>~=>~=>~=>~=>~=>~ ^ ^ ^=>~=>~=>~=>~=>~=>~=>~ ^ ^ ^ ^ ^=>~=>~=>~=>~=>~=>~=>~=>~=>~=>~=>~ ^ ^ ^=>~=>~=>~=>~=>~=>~=>~=>~=>~ ^ ^=>~=>~=>~=>~=>~=>~=>~=>~=>~=>~=>~ ^ ^ ^=>~=>~=>~=>~=>~=>~=>~=>~=>~=>~=>~=>~=>~ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ _ _ _ _ _ _ _ _ _ _ +^ +^ +^ +^ +^<?|<?|<?|<?|<?|<?|<?|<?|<?|<?|<?| +^ +^ +^ +^ +^<?|<?|<?|<?|<?| +^ +^ +^<?|<?|<?|<?|<?| +^ +^<?|<?|<?|<?|<?| +^ +^ +^ +^ +^ +^ +^ +^<?|<?|<?|<?|<?| +^ +^ +^<?|<?|<?|<?|<?| +^ +^ +^ +^ +^ +^ +^ +^ +^<?|<?|<?|<?|<?|<?|<?| +^ +^ +^ +^ +^ +^<?|<?| +^ +^ +^ +^ +^ +^ +^ +^<?|<?|<?|<?|<?|<?| +^<?|<?|<?|<?|<?|<?| +^ +^<?|<?|<?|<?|<?|<?| +^ +^<?|<?|<?|<?|<?| +^ +^<?|<?|<?|<?|<?| +^ +^ +^ +^ +^=>~=>~=>~=>~<?|<?| +^ +^ +^ +^ +^ +^<?|<?|<?|<?|<?|<?|<?|<?|<?|<?|<?|<?|<?|<?|<?|<?|<?| +^ +^ +^ +^<?|<?|<?|<?|<?| +^ +^ +^<?|<?|<?|<?|<?| +^ +^<?|<?|<?|<?|<?|<?| +^ +^ +^ +^<?|<?|<?|<?|<?| +^ +^ +^<?|<?|<?|<?|<?| +^ +^<?|<?|<?|<?|<?| +^ +^ +^<?|<?|<?|<?|<?| +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ _ _ _ _ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ _ _ _ _ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ _ _ _ _ _ _ _ _ _ _ +^ +^ +^ +^ +^<?|<?|<?|<?|<?|<?|<?|<?|<?|<?|<?|<?|<?| +^ +^ +^ +^ +^ +^ +^ +^ +^ +^<?|<?|<?|<?|<?|<?| +^ +^<?|<?|<?|<?|<?|<?|<?|<?| +^ +^ +^ +^ +^<?|<?|<?|<?|<?| +^ +^ +^<?|<?|<?|<?|<?| +^ +^ +^ +^ +^ +^ +^ +^ +^<?|<?|<?|<?|<?|<?|<?| +^ +^ +^ +^ +^ +^<?|<?|<?|<?|<?|<?| +^ +^ +^ +^<?|<?|<?|<?|<?| +^ +^ +^<?|<?|<?|<?|<?| +^ +^<?|<?|<?|<?|<?| +^ +^ +^<?|<?|<?|<?|<?| +^ +^<?|<?|<?|<?|<?| +^ +^ +^ +^ +^=>~=>~=>~=>~<?| +^ +^ +^ +^ +^ +^<?|<?|<?|<?|<?|<?|<?|<?|<?|<?|<?|<?|<?|<?|<?|<?|<?|<?|<?| +^ +^ +^<?|<?|<?|<?|<?| +^ +^ +^<?|<?|<?|<?|<?| +^ +^<?|<?|<?|<?|<?| +^ +^ +^ +^ +^<?|<?|<?|<?|<?| +^ +^ +^<?|<?|<?|<?|<?| +^ +^ +^ +^ +^ +^ +^ +^ +^<?|<?|<?|<?|<?|<?| +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ _ _ _ _ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ _ _ _ _ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^ +^]]]]]]]]]]]]]]]=>~=>~=>~=>~=>~=>~=>~=>~=>~=>~=>~=>~=>~]]]]]=>~=>~=>~=>~=>~=>~=>~=>~=>~=>~=>~]]]=>~=>~=>~=>~=>~=>~=>~=>~=>~]]]=>~=>~=>~=>~=>~=>~=>~=>~=>~=>~=>~=>~=>~]]]]]]]]]]=>~=>~=>~=>~=>~=>~=>~]]]]=>~=>~=>~=>~=>~=>~=>~=>~]]]=>~=>~=>~=>~=>~]]]=>~=>~=>~=>~=>~]]=>~=>~=>~=>~=>~]]]=>~=>~=>~=>~=>~]]=>~=>~=>~=>~=>~]]]]]=>~=>~=>~=>~=>~]]]]]]=>~=>~=>~=>~=>~=>~=>~=>~=>~=>~=>~=>~=>~=>~=>~=>~=>~=>~=>~]]]=>~=>~=>~=>~=>~=>~=>~=>~=>~=>~=>~=>~=>~]]=>~=>~=>~=>~=>~]]]]]=>~=>~=>~=>~=>~=>~=>~=>~=>~=>~=>~=>~=>~]]]]=>~=>~=>~=>~=>~=>~=>~=>~=>~=>~=>~]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]__________^^^^^=>~=>~=>~=>~=>~^^^^=>~=>~=>~=>~=>~^^^=>~=>~=>~=>~=>~=>~^=>~=>~=>~=>~=>~^^^^=>~=>~=>~=>~=>~=>~=>~=>~=>~^^=>~=>~=>~=>~=>~=>~=>~=>~=>~=>~=>~=>~=>~^^^^^^^^^^=>~=>~=>~=>~=>~=>~=>~^^^^=>~=>~=>~=>~=>~=>~=>~^^^^=>~=>~=>~=>~=>~^^^=>~=>~=>~=>~=>~^^=>~=>~=>~=>~=>~^^^=>~=>~=>~=>~=>~^^=>~=>~=>~=>~=>~^^^^^=>~=>~=>~=>~=>~^^^^^^=>~=>~=>~=>~=>~=>~=>~=>~=>~=>~=>~=>~=>~=>~=>~=>~=>~=>~=>~^^^=>~=>~=>~=>~=>~=>~=>~=>~=>~=>~=>~=>~=>~^^=>~=>~=>~=>~=>~^^^^^=>~=>~=>~=>~=>~=>~=>~=>~=>~=>~=>~=>~=>~^^^=>~=>~=>~=>~=>~=>~^=>~=>~=>~=>~=>~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^__________^^^^^??~??~??~??~??~^^^^??~??~??~??~??~^^??~??~??~??~??~^^^??~??~??~??~??~^^^^^^^??~??~??~??~??~??~^^??~??~??~??~??~^^^^^^^^^^^^^^^^^^^??~??~??~??~??~??~??~??~??~??~??~??~??~??~??~??~??~^^^^??~??~??~??~??~^^^??~??~??~??~??~^^??~??~??~??~??~^^^??~??~??~??~??~^^??~??~??~??~??~^^^^^??~??~??~??~??~^^^^^??~??~??~??~??~??~??~??~??~??~??~??~??~??~??~??~??~??~??~??~??~^^??~??~??~??~??~^^^^^^^^^^??~??~??~??~??~^^^^^??~??~??~??~??~^^^^^^^^^^??~??~??~??~??~^^^??~??~??~??~??~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^??~??~??~??~??~??~??~??~??~??~??~??~??~??~^^??~??~??~??~??~^^??~??~??~??~??~??~^^^^^^^^??~??~??~??~??~^^??~??~??~??~??~??~^^??~??~??~??~??~^^^^^^^^^^^??~??~??~??~??~??~??~??~??~??~??~??~??~??~??~??~^^^^^??~??~??~??~??~??~^??~??~??~??~??~??~^^??~??~??~??~??~^^^??~??~??~??~??~^^??~??~??~??~??~^^^^^??~??~??~??~??~^^^^^??~??~??~??~??~??~??~^^^^^^^??~??~??~??~??~??~??~^^??~??~??~??~??~??~^^??~??~??~??~??~^^??~??~??~??~??~^^^^^??~??~??~??~??~??~^^??~??~??~??~??~^^??~??~??~??~??~^^??~??~??~??~??~??~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^[[[[[@?|@?|@?|@?|@?|@?|@?|@?|@?|@?|@?|@?|@?|@?|[[@?|@?|@?|@?|@?|@?|@?|@?|@?|@?|@?|@?|@?|[[@?|@?|@?|@?|[[@?|@?|@?|@?|@?|[[[@?|@?|@?|@?|@?|@?|@?|@?|@?|@?|@?|[[[[[[[[[[[[[@?|@?|@?|@?|@?|@?|@?|@?|@?|@?|@?|@?|@?|@?|@?|[[[[[[@?|@?|@?|@?|@?|@?|@?|@?|@?|@?|@?|[[[@?|@?|@?|@?|@?|[[[@?|@?|@?|@?|@?|[[@?|@?|@?|@?|@?|@?|@?|@?|[[@?|@?|@?|@?|@?|[[[[[@?|@?|@?|@?|@?|@?|@?|[[[[[[[@?|@?|@?|@?|@?|@?|@?|[[[@?|@?|@?|@?|@?|@?|@?|@?|@?|@?|@?|[[[@?|@?|@?|@?|@?|[[[[[[@?|@?|@?|@?|@?|@?|@?|@?|@?|@?|@?|[[[@?|@?|@?|@?|@?|@?|@?|@?|@?|@?|@?|@?|@?|[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[^^^^[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[^^^^[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[^^^^^^^^^^^^^^^??{??{??{??{??{??{??{??{??{??{??{??{??{^^^^??{??{??{??{??{??{??{??{??{??{??{??{^^^??{??{??{??{??{??{??{??{??{^^^^^??{??{??{??{??{??{??{??{??{^^^^^^^^^^^^^^^??{??{??{??{??{??{??{??{??{??{??{??{^^^^^^^^^??{??{??{??{??{??{??{??{??{^^^^??{??{??{??{??{^^^??{??{??{??{??{^^^??{??{??{??{??{??{??{^^>?|>?|>?|>?|??{^^^^??{??{??{??{??{??{??{??{^^^^^^^??{??{??{??{??{??{??{??{^^^??{??{??{??{??{??{??{??{??{^^^^??{??{??{??{??{^^^^^^^??{??{??{??{??{??{??{??{??{^^^^^??{??{??{??{??{??{??{??{??{??{??{??{^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\\\\\\\\\\\\\\\@@|@@|@@|@@|@@|@@|@@|@@|@@|@@|@@|\\\\\\\@@|@@|@@|@@|@@|\\@@|@@|@@|@@|\\\\@@|@@|@@|@@|@@|@@|@@|\\\\\\\@@|@@|@@|@@|@@|@@|@@|\\\\\\\\\\\\\\\\\\\@@|@@|@@|@@|@@|@@|@@|\\\\\\\\\\\\\@@|@@|@@|@@|@@|\\\\\\@@|@@|@@|@@|@@|\\\@@|@@|@@|@@|@@|\\\\@@|@@|@@|@@|@@|@@|\\A@}A@}A@}A@}@@|\\\\@@|@@|@@|@@|@@|@@|@@|@@|\\\\\\\\@@|@@|@@|@@|@@|@@|@@|\\\\@@|@@|@@|@@|@@|@@|@@|\\\\\@@|@@|@@|@@|@@|\\\\\\\\@@|@@|@@|@@|@@|@@|@@|\\\\\\\@@|@@|@@|@@|@@|\\@@|@@|@@|@@|\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\^^^^^^^^^^[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[^^^^[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[^^^^[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[^^^^[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[]]]]]]]]]][[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[]]]][[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[]]]][[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[]]]][[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ\\\\ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ\\\\ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ\\\\ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ\\\\\\\\\\ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ\\\\ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ\\\\ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ\\\\ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZECzZZZZZZZZZZZZZZZZZZZZZZZZECzECzECzECzECzECzECzECzZZZZZECzECzECzECzZZZZZZZECzECzECzECzECzECzECzZZZZZECzECzECzZZZZZZECzECzECzECzECzZZZZECzECzECzZZZZZZZZZZZECzECzECzECzZZZZZZZECzECzECzECzZZZZZZECzECzECzZZECzECzECzECzECzECzECzECzZZZZZZZZZZECzECzECzECzECzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZYYYYFByYYYYYYYYYYYYYYYYYYYYYYYYYFByYYYYYYYYYYYYYYYYYYYYYYYFByFByFByFByFByFByFByFByFByYYYYYFByFByFByFByYYYYYYYFByFByFByFByFByFByFByFByYYYYFByFByFByYYYYFByFByFByFByFByFByFByFByYYYFByFByFByYYYYYYYYYYYFByFByFByFByYYYYYYYFByFByFByFByYYYYYYFByFByFByYYFByFByFByFByFByFByFByFByFByFByYYYYYYFByFByFByFByFByFByFByFByYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZYYYYFByYYYYYYYYYYYYYYYYYYYYYYYYYFByYYYYYYYYYYYYYYYYYYYYYYYFByFByFByFByFByFByFByFByFByYYYYFByFByFByFByFByYYYYYYFByFByFByFByFByFByFByFByFByFByYYFByFByFByFByYYYFByFByFByFByFByFByFByFByFByFByYYFByFByFByYYYYYYYYYYFByFByFByFByFByYYYYYYFByFByFByFByFByFByYYYYYFByFByFByYFByFByFByFByFByFByFByFByFByFByFByFByYYYYFByFByFByFByFByFByFByFByFByFByYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZGBzZZZZZZZZZZZZZZZZZZZZZZZGBzGBzGBzZZZZZZZZZZGBzGBzGBzGBzGBzZZZZZZGBzGBzGBzGBzZZZGBzGBzGBzZZGBzGBzGBzZZZZGBzGBzGBzGBzZZZGBzGBzGBzZGBzGBzGBzGBzZZZZZZZZZZGBzGBzGBzGBzGBzZZZZZZGBzGBzGBzGBzGBzGBzZZZZGBzGBzGBzZZGBzGBzGBzGBzZZZZGBzGBzGBzGBzZZZZGBzGBzGBzGBzZZZGBzGBzGBzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZGCzZZZZZGCzGCzGCzGCzZZZZZZZGCzGCzGCzGCzZZZZZGCzZZZZZZGCzGCzGCzGCzGCzGCzZZZZZZZZZZZGCzGCzGCzZZZZZZZZZGCzGCzGCzZGCzGCzGCzZZZZZGCzGCzGCzZZZZGCzGCzGCzZZGCzGCzGCzZZZZGCzGCzGCzZZZZGCzGCzGCzZGCzGCzGCzZZZZZZZZZZGCzGCzGCzZGCzGCzGCzZZZZZGCzGCzGCzGCzGCzGCzZZZZGCzGCzGCzZZGCzGCzGCzZZZZZZGCzGCzGCzGCzZZZGCzGCzGCzZZZZGCzGCzGCzZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZWWWWHCyWWWWHCyWWWHCyHCyWWWWHCyHCyWWWWHCyHCyWWWHCyWWWWWHCyHCyWWWWHCyHCyWWWWWWWWWWHCyHCyHCyWWWWWWWWWHCyHCyHCyWHCyHCyHCyWWWWWHCyHCyHCyWWWHCyHCyHCyHCyWWHCyHCyHCyWWWWHCyHCyHCyWWWWWWWWHCyHCyHCyWWWWWWWWWWHCyHCyHCyWHCyHCyHCyWWWWWHCyHCyHCyZHCyHCyHCyWWWHCyHCyHCyWWHCyHCyHCyWWWWWWWHCyHCyHCyWWWHCyHCyHCyWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWZZZZWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWZZZZWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWZZZZZZZZZZWWWWHCyWWWHCyWWWWWHCyWWWHCyWWWWWWWWHCyWWHCyWWWWHCyWWWWWWWWHCyWWWWWWWWWHCyHCyHCyHCyHCyHCyHCyHCyWWWHCyHCyHCyWWHCyHCyHCyWWWWWHCyHCyHCyHCyHCyHCyHCyHCyHCyWWWHCyHCyHCyWWWWHCyHCyHCyHCyHCyWWWWWWHCyHCyHCyWWWWWWWWWHCyHCyHCyWWHCyHCyHCyWWWWWHCyHCyHCyZHCyHCyHCyWWWHCyHCyHCyWWHCyHCyHCyWWWWWWWHCyHCyHCyWWWHCyHCyHCyHCyHCyWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWZZZZWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWZZZZWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWZZZZZZZZZZYYYYHCyYYYHCyYYYYYYYYYHCyYYYYYYYYHCyYYHCyYYYHCyHCyYYYYYYYYHCyHCyYYYYYYYHCyHCyHCyHCyHCyHCyHCyHCyHCyYYYHCyHCyHCyYYHCyHCyHCyYYYYYHCyHCyHCyHCyHCyHCyHCyHCyYYYYHCyHCyHCyYYYYYHCyHCyHCyHCyHCyHCyYYYYHCyHCyHCyYYYYYYYYYHCyHCyHCyYYHCyHCyHCyYYYYYHCyHCyZZHCyHCyHCyYYYHCyHCyHCyYYHCyHCyHCyYYYYYYYHCyHCyHCyYYYYHCyHCyHCyHCyHCyHCyYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYXXXXXXXXXXXXXXIDzXXXIDzIDzXXXXXXXIDzXXXXXXXXXXIDzXIDzXXXIDzXXXXXXXXXXIDzXXXXXXXIDzIDzIDzIDzIDzIDzIDzIDzXXXIDzIDzIDzXXXIDzIDzIDzXXXXIDzIDzIDzIDzIDzIDzIDzIDzIDzXXXIDzIDzIDzXXXXXXXIDzIDzIDzIDzIDzIDzXXIDzIDzIDzIDzXXXXXXXXIDzIDzIDzXXXIDzIDzIDzXXXXIDzIDzHD{XXXIDzIDzXXIDzIDzIDzXXIDzIDzIDzIDzXXXXXXXIDzIDzIDzXXXXXIDzIDzIDzIDzIDzIDzXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXIDzXXXXIDzIDzIDzIDzXXXXIDzXXXXXXXXXXIDzXIDzXXXIDzIDzIDzIDzIDzIDzIDzIDzIDzIDzIDzIDzXXXXXXXIDzIDzIDzXXXXXXXIDzIDzIDzIDzXXXXIDzIDzIDzXXXIDzIDzIDzXXXXIDzIDzIDzXXIDzIDzIDzXXXXXXXXXIDzIDzIDzIDzIDzXIDzIDzIDzXXXXXXXXIDzIDzIDzIDzXXXXIDzIDzIDzXXXIDzIDzIDzXXXIDzIDzIDzXIDzIDzIDzXXIDzIDzIDzXXXXXXXXIDzIDzIDzXXXXXXXIDzIDzIDzIDzIDzXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXZZZZZZZZZZXXXXIDzXXXXXXXIDzIDzXXXIDzXXXXXXXXXXIDzXIDzXXXIDzXXXXXXXXXXXXXXXXXXIDzIDzIDzXXXXXXXIDzIDzIDzIDzIDzIDzIDzIDzIDzIDzIDzXXXIDzIDzIDzXXXXIDzIDzIDzXXIDzIDzIDzXXXXXXXXXXXIDzIDzIDzXIDzIDzIDzXXXXXXXXIDzIDzIDzIDzIDzIDzIDzIDzIDzIDzIDzXXXIDzIDzJDxZZZIDzIDzIDzXIDzIDzIDzXXIDzIDzIDzXXXXXXXIDzIDzIDzXXXXXXXXXXIDzIDzIDzXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXZZZZXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXZZZZXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYWWWWJDxWWWWWWWWWJDxWWJDxWWWWWWWWWWJDxWJDxWWWJDxWWWWWWWWWWWWWWWWWWJDxJDxJDxWWWWWWJDxJDxJDxJDxJDxJDxJDxJDxJDxJDxJDxJDxWWWJDxJDxJDxWWWWJDxJDxJDxWWJDxJDxJDxWWWJDxJDxJDxWWWWWJDxJDxJDxWJDxJDxJDxWWWWWWWJDxJDxJDxJDxJDxJDxJDxJDxJDxJDxJDxJDxWWWJDxJDxJExYYYWJDxJDxWJDxJDxJDxWWJDxJDxJDxWWWWWWJDxJDxJDxJDxWWJDxJDxJDxWWWWWJDxJDxJDxWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWYYYYWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWYYYYWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXJExXXJExXXXXXXJExXXXJExXXXXXXXXJExXXJExXXXXJExXXXXXXXXXJExXXXXXXXJExJExXXXXXXXJExJExJExJExJExJExJExJExJExJExJExJExXXXJExJExJExXXXJExJExJExJExXXJExJExJExXXXJExJExJExJExXXXJExJExJExJExXJExJExJExXXXXXXXJExJExJExJExJExJExJExJExJExJExJExJExXXXJExJExXXXXXJExJExJExJExJExJExXXJExJExJExXXXXJExJExJExJExJExXXXJExJExJExJExXXXJExJExJExJExXXXXXXXXXXXXXXXXXXXXXXXXXXXWXY"[)!_+$a#\XXXXXXWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXWWWWKEwWWKEwWWWWWWKEwWWWKEwWWWWWWWWKEwWWKEwWWWWKEwKEwWWWWWWWKEwWWWWWWWKEwKEwKEwWWWWWWKEwKEwKEwKEwWWWWWWKEwKEwKEwWWKEwKEwKEwKEwKEwKEwKEwKEwKEwKEwWWKEwKEwKEwWWWWKEwKEwKEwKEwKEwKEwKEwKEwKEwKEwWKEwKEwKEwKEwKEwKEwKEwKEwKEwWKEwKEwKEwKEwWWWWWWKEwKEwKEwWWKEwKEwKEwXXXXWKEwKEwKEwKEwKEwWWKEwKEwKEwKEwKEwKEwKEwKEwKEwKEwKEwKEwKEwWWWKEwKEwKEwKEwKEwKEwKEwKEwKEwKEwWWWWWWWWWWWWWWWWWWWWWWWWW Z#] Z%^)"_*"`4,hA;o91j']WWWWY"\&_YYWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWYYYYYYYYYYYYYYLExYYYLExYYYYLExYYYYYLExLExYYYYLExLExYYYLExYYYYYLExLExYYYYYLExYYYYYYYYLExLExLExYYYYYYLExLExLExYYYYYYYYLExLExLExYLExLExLExLExLExLExLExLExLExLExYYLExLExLExYYYYYLExLExLExLExLExLExLExLExLExYLExLExLExLExLExLExLExLExLExYLExLExLExYYYYYYYYLExLExLExYLExLExLExYYYYYLExLExLExLExLExYYLExLExLExLExLExLExLExLExLExLExLExYYYYYYLExLExLExLExLExLExLExLExLExYYYYYYYYYYYYYYYYYYYYYYY Z&^,$`']( ^.&b0(d) ]/'c80i5-i$\YYYYY"Z%_!YYYYYYYYYYYYYYY![#Y![YYY XYYY X XYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYLFxYYYYLFxLFxLFxLFxYYYYYYYYLFxLFxLFxLFxYYYYYLFxYYYYYYYLFxLFxLFxLFxLFxYYYYYYYYYLFxLFxLFxYYYYYLFxLFxLFxLFxYYYYYYYYLFxLFxLFxYLFxLFxLFxLFxLFxLFxLFxLFxYYYYLFxLFxLFxYYYYYYYLFxLFxLFxLFxLFxYYYLFxLFxLFxLFxLFxLFxLFxLFxLFxLFxLFxLFxLFxYYYYYYYYLFxLFxLFxYLFxLFxLFxYYYYYYLFxLFxLFxLFxYYLFxLFxLFxLFxLFxLFxLFxLFxLFxYYYYYYYYYYLFxLFxLFxLFxLFxYYYYYYYYYYYYYYYYYYYYYYYY"Z( ^;3l=5lF?rTN~GAu;5l80i91j;3j1)e&\![YYYYYYYYYYYYY"X'] ZYYY X']91jHBt91j( ^$Z*#`2*f-%a%[#Y$Z"XYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X"Z$\$Z#["Z"X#["Z X X X X X X X X X V V V!Y V X X X X X X X X!Y X V!Y!Y%[5,gG@s]V‚qn’ŽŒ¥’§ˆ„ |w–}x—{v•rn‘_YƒLFx>5k3*e0(d,$`+#_+#_'[!W X X X X X#[-%a*"^"Z X"Z&\1)eJDvwu—„ƒ rn‘E?q91jMGygc‰[T€A;o?8k?9m2*f#Y X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X"V']80i>8l91h80i4,e80i;3j5-f(\"Z!Y"Z"Z#W"Z#W%Y)!]*!^*!^-$a) ]!Y X%Y"Z!Y!Y#W%[*"^/'c6.g/'c+#_4+fLEvc]‡‹‡£³²¾Á¿Æ·´½³°¹·¶À¾¼Ã¹·¾­¬¶ª©µš®‚|˜rn‘up’c]…c\…e`ˆICu7/h3+d*"^&\&Z#Y&Z7/h>5k,$`1)b:2kUN}so’Œ‹¥›œ° ¢²”•¨}y˜fa‰ƒ‚•—¬¦yx•ut”liLFx.&b&Z#["V X X X X#W&Z#[!W X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W"V) ]F@rkjŽuu–ooliie‹mjŽrq‘^Y90h,#^-$_.%`*!^,$`8/g+"_)[.&b=4j=4j4+f+#_%Y$X)[-%a'[(\4*cIBsd]†up’zs•`XƒLFx/'c:1ioj­¬¸ÅÄÉÌÌÌÌËÊÉÉÉÈÇÉÆÅÇ¿¿ÂÂÀÄÄÂƺ¹Á¥¡±Œ¢–”©–”©››­“¦€{™ƒž{w—\TMFwI@s;2j@9lPIx[T€XO}f`ˆŽ§¥£µ®®¹§§²¡¢±¤§± £°œŸ¬¡¢±ª­¹¬®·¢¥±•—§‹¢€šc^†HArD=p80i*"^#W"X!W!W(Z=7k0(a+"_&Z!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!W!Y!Y!Y!Y!Y!Y!Y!Y!Y!Y"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V!Y!Y!Y!Y"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V$X*"^@9lss”Ž¥”¨‹¤‰‹ †Œ¡‰Ž¢ŒŽ£}™_Z‚OHwTM|[UF=pC:mNGxA:m1)b:1i>5k6.g0'b,#^,$`.%`7.f:1i5,dB8mh`ˆ˜”©±­º·³¾ª¤´ˆ‚œe]…A:mUN}™—¬ÅÄÉÑÐÏÐÏÎÒÒÏÊÊÊÄÄǼºÁº¹¾¼¼ÂÁÀŹ¸À¨¥±™–ª™—©¦¥±ªª³¥¤°£¢±¥¤³¡ ¯–”©„€œxt”sn}x—…€›Š… Œ¤¡ž¯µµÀÀÀƽ½Ã®®·¦§³¦©³¤¨°¤©²²¶¾·º¾¯²¹£§¯—œ¨‘–§ŠŒ¡xy”uu“vv”b^‡<3i) ]%W#W#W) ]A:mHArLFx80g(\#W"V"V#W"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V!Y!Y!Y!Y"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V!Y!Y!Y!Y"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V$X'Y.%`F?rwv–—œ°¢±—œ«”™¨—¦Ž•¤–¥•™©––¦Ž£‹ˆ ‹¢ŒŠ¡€{™pkc\…XQ}C:mC9n=4j6,e3)b90hOHvUN|JCtIBsQJx{v•ª§¶ÆÂÈÎÍÌÐÍÍÆÂÈ´°¸—©{™Œ¤¿¾ÆÔÓÒ×ÕÓÔÔÑËÊɾ¼Â´²¹°¯¹µ´¼³²º±°¸«¨´¦¢°Ÿœ«¥¥°­¯µ­¯µª©±©¨²ª©±«ª´¨¥±¢Ÿ®›™«›™«¤¡²­ª¶²¯»¶µ¿º¹Ã¸·¿»»ÁººÀ²´º«­¶¦©³¤¨°¥©±±´»²µ¼©¬³› ¬”™¨”¥“¥Š¢Š¢ˆ¡xw—OHw=6i7.f4+c6-e<5hPIxgc‰hdŠYUI@s0(a*\$X"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V#W#W#W#W#W#W#W#W#W#W"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V#W#W#W#W"V"V"V"V"V"V"V"V"V"V"V"V#W#W(Z3)bRKzˆ†¢§¨¹©®º¤©µ›Ÿ­—žª”›§’š§–©œ «¤¥±§§²©©´¨¨³¤£¯£ ¯š—«‹ tmNGuA7l;2j=4jC:mXQ}|›“¨ƒ}™tl‹£¹¶ÂÍËÌÕÓÑ×ÕÓÖÔÒÒÐÎÈÅȺ¶¾´¯¹¿½ÄÑÑÑÙ×ÔÖÔÑÊÉÈÃÀö²º²¯¸³±¸¶µ½¶´»µ´¹µµ»°¯·«ª²­¯µ¯²¶­°´®°³°°¶²´·´´º²°·¬«µ©¨²°¯¹¼ºÁÂÀÄÃÁÅÁÀž¾Ä¹·¾·¶»µµ»®°¶¨ª³£§¯¡¤®Ÿ£®¦«´¨«²¢¦®—œ¨’™¥“›¨“›¨“š¦Ž–£Œ’¤ƒ‚œmiŒvu•qmŽhcˆpntt’y{˜~€š|šwy–mmŽWS}H?r+"]"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V#W#W#W#W"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V#W#W#W#W"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V"V$V$V$V$V$V$V$V$V$V$V#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U$V$V$V$V#U#U#U#U#U#U#U#U#U#U$V$V(X*Z4(aYR~›²²µÁ²µ¼¬±º¤¨³ £¯ £­ £­£§¯¥©±ª­´²´·µ·½´´º±±·®­µ®­µ±®·°­¶œ™ªtmRIw]Vf^†tl{—”¥°­¹µ²»³°¹¾¼ÃÍÍÍÕÔÓÖÖÓ×ÕÓ×ÔÑÔÒÐÍËÉÉÆÆÉÄÄÍÊÊÕÓÐÖÔÑÑÏÍÅÂÂÁ¾Á¼º¾½»¿¹¸½¼¼¿ÀÁÂÁÀ¾¾Áºº½´´·±³¶°²µ®°³±³¶²´·´¶¹µ·ºµ·º´³¸´²¹¹¹¿ÃÄÅÈÆÇÅÄÆÂÀĽ¼Á»º¿»º¿··½°²µ¨¬²£§¯œ¤¯œ¡­¤®Ÿ¦°›¢¬”™¥’—£’›§•žª”œ§—£Ž“¢‘•¥—›«˜šª”–¦Ž¢‰ŽŸ‰Ž¢‰¡‡Ÿ†Œž„‰~™jg‹OHy+"]#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U$V$V$V$V#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U$V$V$V$V#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V%W&X+!Z3)`JCtŽŒ¨»¼È¾ÀƳ¶½«®µ©«´©«´«¯·°²¸´´º··½¹¹¿¼¼¿¼¾ÁººÀ¸¸¾»º¿»»¾¼»À»¹¿©¤°Œ† †š¨¤´¶²½¼¸ÀÀ¾ÄÅÂÅÇÅÆÊÉÈÊÉÈËÊÉÎÍÌÐÐÍÏÏÌÒÒÏÔÒÐÒÐÎÐÐÍÏÍËÐÎÌÕÓÑÙÖÒÔÑÍÏÌÉÉÆÆÈÅÅÉÈÇÉÈÇÈÆÄÊÊÇÍÍÊËÉÇÃÁ¿»»¾´¶¹±±·¯²¶¯±´²´·°³·°²µ±´¸¸º½»»¾¾¾ÁÃÄÅÈÈÈÉÈÇÅÄƾ½Â»»ÁººÀ¸º½¸¹º±³¶§ª®Ÿ£«š¡«˜ «›¢¬™ ª“›¦‘˜¢• Ž–£“›¦’š¥—¢Ž–¡™ ª©®·¯²¹¬¯¶¢¤­”™¥”£Œ”¡˜¥•¤ˆžƒ‰žpoXR|.%]$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V$V%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U$V$V$V$V%U%U%U%U%U%U%U%U&V&V*Z.$]:0gXO}„¬®¾¾¾Ç¼¾Äµ·½±°¸²´ºµ·½ººÀ¾¾ÁÀÀÃÃÁÂÄÂÃÅÄÃÅÅÅÁÀÂÁÀÂÀÀÃÀ¿ÁÀ¿Á¾¼À¯ª´°¬·¿»ÃÏÍÎÖÔÒ×ÕÒÖÓÏÔÑÍÏÍËÌËÊÌËÊÌËÊÉÈÇÂÀÁÅÄÃËÊÉÎÌÊÒÒÏÒÒÏÏÍËÑÏÌ×ÔÐØÖÓ×ÔÐÖÓÏÓÑÏÒÐÍÕÓÑ×ÕÒØÕÑØÕÑÖÔÑÓÑÏÇÅ÷¸¹°²µ®±µ®±µ´´º´¶¹¯²¶­¯µ®±µ·¹¼¸º½¾ÀÿÁÄÂÁÃÄÃÅ»º¿²°·­¬´­¯µ®°¶±³¶­¯µ£§­œ¢©š¡«™žª—Ÿª˜ «–›§—¢Œ”Ÿ–¢’š¥“š¤—¢– “š¤Ÿ¤­²µ¼´¶¼ª¬²™¨Ž•¡Œ“Ÿ‘™¦”›§” ‰Ÿƒšfa†3*b%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U$V$V$V$V%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U$V$V$V$V%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%W%W%W%W%W%W%W%W%W%W%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%W%W%W%W%U%U%U%U%U%U%U&V'W/#\;1eH?oc]…š™¯¯²¾»»Ä¼¼Â¹¸À·¶¾¼ºÁ½¼Á¾¾ÁÃÂÄÆÅÄÉÈÇÍÍÊÏÏÌÎÍÌÌËÊÉÉÉÅÆÄÃÂÁÅÄÃÊÉÈÈÆÄÊÈÉÐÍÍÖÔÒÚ×ÓÜÙÕÙÖÒÔÑÎÐÎÌËÉÇÆÅÄÈÈÅÈÉÇÅÆÄÂÀÁÁÀÂÄÁÄËÊÉÏÎÍÎÍÌÑÏÌÑÑÎÔÒÐÓÑÏÓÑÏÕÒÏØÖÓÙ×ÔÚØÕÚØÕÙ×ÔÙ×ÔØÖÓÔÒÏÆÅIJ²µ«­³®±µ±´¸¹»¾¸¸¾²²¸®®´ª¬²«­³ª¬²°²¸¶¸¾¹¹¿»»Á¶´»©¨²¤£¯¥§°¨«²©­³¨¬²¢¦¬ž¢ª›¢¬š¡«˜Ÿ©—ž¨“›¦Ž–¡Œ”ŸŽ–¡“š¤“š¤’—£’—£‘–¢–§¨®´¯³¹©«± ª’—£‹Ÿ‰‘ž˜£˜£–¢‡Œie†0'_%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%W%W%W%W%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%W%W%W%W%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U&V&V&V&V&V&V&V&V&V&V%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U&V&V&V&V%U%U%U%U%U%U%U(X/%^F=mg`†‚}›œ°¹ºÆÇÅÌÅÅ˾¾Ä½»Â¿¾ÃÂÀÄÅÂÅÈÅÅÍÌËÓÑÏÕÓÑÕÓÑÓÓÐÒÒÏÏÎÍËÌÊÈÉÇÈÈÅÌËÊÐÎËÒÒÏØÖÓÙ×ÕÛÙÖÜÙÕÛØÔØÕÑÑÏÍÉÆÃÃÀÀÁÀÂÅÄÃÄÅÃÅÅÅÄÃÂÄÁÁÃÀÀÈÅÅÈÅÅÇÅÆÈÇÆÍÍÊÉÆƾºÀº¸¾ÉÄÇÓÑÏÔÒÐÓÑÏÎÍÌÎÍÌÎÍÌÌËÊÅÅÅ·¹¼¯¯µ®®´¹»¾¹»¾¹»¾¸º½¶¸»±±·¨§±££®¤¤¯©«±ª¬²ª¬²¨¨±¦¦¯£¢®££®¥§°¨«²¨¬²§¬¯£©¯¢¨® ¦¬£ª™Ÿ¦–§‘˜¢• Ž•Ÿ—¢“š¤’™£”œ§’™£‘–¢•œ¦ ¦­«°³«®²¢¦®–›§Š‘‰œŒ•¡˜¤—¢„‰šXQz."[%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U&V&V&V&V%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U&V&V&V&V%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U%U&U&U&U&U&U&U&U&U&U&U&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&U&U&U&U&V&V&V&V&V&V'W/#\H?oohŽŒ£¯«¬»½¿ÈÅÅË¿¿Å½½Ã¿¾ÃÃÀÃÈÅÅÎËËÒÐÎÕÓÑ×ÕÒÖÔÒÑÏÍÏÎÍÑÑÎÏÏÌÊÊÇÈÉÇÈÈÅÉÈÇÌÊÈÕÓÑÛÙÖÜÚ×ÚØÕ×ÕÒØÕÑÕÓÐÐÎÌÇÅÃÄÁÁÅÄÃÆÆÃÅÆÄÆÅÄÅÆÄÂÁÀÂÁÀÃÁÂÇÅÃÆÅÄÇÅÃÇÅÿ¼¿¶²¸´¯¶¸¶¼Ã¾ÂÅÀÃÄÁÁÂÀÁ¼»½»¹½¸¸»´¶¹®°³­°´³µ¸¹»¾¶¶¹¶¸»²´·²´·®®´¦¥¯£¢®¦¦¯¦¨®¨ª°©«±©«±ª©±©©²©«±¨«¯¨¬²©¬°¨­°¦ª°¥©¯£©¯ ¦ªš §•š£“˜¡—¡—¢‘˜¢’™£–¥™ ¨˜Ÿ©–š¥—œ¨¢¨¯¬±´ª®´£©¯˜Ÿ©Œ“Ÿ‡œ‹“ž‹“ž” ~•D;k(W&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&U&U&U&U&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&U&U&U&U&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&V&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U*W8.bTLwy•“‘¦œœ®¥¤³µ·Àº¼Â»½ÀÀ¿ÄÈÆÇÍËÉÎÌÊÔÒÐ×ÕÓØÖÓÖÔÑÑÑÎÍÍÊÍÍÍÏÏÌÌÌÉÉÇÅÈÈÅÊÉÈÍËÉÑÏÍÙ×ÔÜÚ×ÜÚ×ØÖÓÑÏÌÎÎËÐÐÍÌÌÉÇÅÃÇÇÄÈÈÅÆÇÂÆÆÃÅÆÄÇÅÃÃÄÂÁÀ¿ÄÃÂÇÇÄÊÈÅÉÇÄÅ¿¿½¾º·º»¸»½º½À¾¿Á¿ÀÃÀÀ½¼¾·¶¸´´·´¶¸²´¶­°´¯²¶±³¶±±·­­³¬¬²®°³­­°©«®¦¦¬¥¤®§§°¨ª°«®²³µ¸µ·º¶µº³³¹«®²¨¬²«°³¬¯³ª­±©¬°§¬¯¤¨® ¦¬Ÿ£«¡©¡©šž¦•š£“š¤—ž¨¤¬¢¨¬¡§­œ¡ª¢«¤ª°¤ª® ¦¬ ¤¬˜Ÿ©‹“žˆ‘†›„Œ™‚†™on‹7+b&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U'V'V'V'V'V'V'V'V'V'V&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U'V'V'V'V&U&U&U&U&U&U-!Z=1eZRz‡ƒŸ˜˜ªš˜ª¨¨µ¶¸Á»»ÁÁÀÅÊÊÊÓÑÏ×ÔÐÖÔÑØÖÓÙ×Ô×ÕÒÐÐÍÍÍÊÌÌÉÉÊÈÊËÉÌÍËÌËÊÌËÊÎÍÌÕÓÑÙ×ÔÛÙ×ÜÚ×ÛØÔÕÕÏÏÍËÈÆÄÇÅÃÆÅÄÉÇÄÇÈÃÈÈÅÇÈÃÇÇÄÇÇÄÆÇÂÄÃÂÀ¿¾ÁÀ¿ÇÅÃÈÈÂÈÅÂÅÃÁÄÁÁÃÀÀÁ¿ÀÀ¾¿¾¼½¾¼½À¾¿¾¾¾º¹»´¶¹³µ·°²´¯±³¯°±­¯²®°³««±©©¯ªª°¬®±¬®±ªª°§©¯¥§­¦¨®«­³¶¸»º¼¿ºº½µµ¸®°²¬±´®±´®±´¬¯³©¬°¥©¯£©¯¡¨­§­³«¯µ®±µ©­³œ ¨˜¦ž¤ª¡§­¢¨®£©­¡§­ž¤«œ¢©›¢ªœ¢©™ ª’š¥ˆ’›‚™€‰˜x{“je‡MDr-#Z&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U'V'V'V'V&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U'V'V'V'V&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U'V'V'V'V'V'V'V'V'V'V&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U'V'V'V'V&U&U&U&U&U'V.!Y<0d_W„‚›•’¦œ«©ª¶¸ºÀÀÀÆÊÉËÐÏÎ×ÕÒÚ×ÓÙÖÒØÕÑÖÔÑÒÒÏÏÏÌÌËÊÈÈÅÊËÉËÌÊËÌÊÉÈÇËÊÉÊÉÈËÊÉ×ÕÓÛÙÖÛÙÖ×ÔÐÓÑÎËÉÇÅÂÂÄÃÂÇÅÃÇÅÃÆÆÃÂÁÀÅÅÂÆÆÃÅÅÂÅÅÂÃÀÀÀÀÀÁÀ¿ÅÄÃÆÇÂÆÇÂÇÅÃÆÆÃÅÄÃÂÁÀ¿½¾¾¼½½¼¾¼½¾¼½¾·¸¹´µ¶±³µ±³µ°²´±²³°²µ±³µ¯¯²¬®±ª¬¯­¯²­¯²ªª°§©¯¨«¯©¬°«¯µ­¯²¯±´°²µ°²´«®±«°³®±´­°³«®²§«±¤¨® ¦¬¢¦¬§­±ª°´¬±´§«±£©œ¢© ¦¬ž¤ªœ¢©£ª£ª™Ÿ¦–§—ž¦”›¥‘™¤• ƒŽš~‰–z€’ea„?4e0#[(U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U'V'V'V'V&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U'V'V'V'V&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U&U(U(U(U(U(U(U(U(U(U(U'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T(U(U(U(U'T'T'T'T'T(U/#ZA6gldˆ‡‚–“§§§´´´½½½ÃÆÆÉÎÎÎÒÒÏÖÔÑÚ×ÓÙÖÒÖÓÏÒÒÏÎÎËÌÌÉÉÈÇÇÅÃÈÈÈÈÈÈÈÈÈÅÄÃÆÅÄÄÂÃÄÄÄÎÏÍ×ÕÒÙÖÒÕÓÐÎÏÊÈÅÂÅÄÃÇÅÃÅÆÄÃÄ¿À¾¾¾¾¿¿¿ÀÀÀÀÀÀ¿ÀÁ¾½¿½¾¿¾¿ÀÁÁÁÆÆÃÇÅÂÇÅÃÆÆÃÆÆÃÂÁÀ¾½¿½¼¾¼»½½½½º»¼¸¹º¶·¸´µ¶±²³±²³²´¶´¶¸µ¶·´µ¶°²µ­°´¬¯³­¯²ª¬¯©«®©¬°ª®´ª¯²«¯µ¬¯³©«±©®±ª¯²¨­°©®±¨­°¦ª°¡¤«Ÿ£«¢«£ª ¦ª ¦¬ ¦¬¡§­ž¤ª£ªœ¢©š §™Ÿ¦™Ÿ¦˜Ÿ§˜ž¥–§•š£”™¢—¡Š’ƒ‹˜~‡–tvJBm6)^(U'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T(U(U(U(U'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T(U(U(U(U'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T'T(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U*W4&]@5fc[€Œ‡Ÿ¤¡°±³¼·¹¿À¿ÄÈÉÊÎÎÎÏÏÌÓÑÎ×ÕÒÖÔÒÓÑÏÐÎÌÌÍËÈÈÈÃÂÄÁÀÂÀÁÂÀÀÃÅÅÅÀÃÃÁÁÁÃÁÂÄÂÃÈÈÈÎÍÌÒÏÌÏÍÊÉÇÄÄÃÂÅÄÃÃÄÂÃÄÂÀÀÀ¹»º¸¹º¸¹º¸¹º¹¸º¸º½··º·¸¹»¼½¾¿ÀÂÁÀÆÆÃÅÆÄÅÅÂÁÁÁ¿¿¿½¾¿¼»º»»»½½½ººº¹¹¹¶·¸³´µ¯¯²¯±´³µ·µ·¹¶·¸´¶¸¯±´¬¯³¬¯³¯±´¯±³­¯²¯±´±°µ®°³±³¶®±´¬®±©¬°¦ª°¤¨®¤ª°¡§­ £ª›¡¨œ ¨šŸ¨™ž§—œ¥—¤—ž¨™Ÿ¦˜ž¥—œ¥•œ¤”›¥—ž¦™ ªš¡©›¡¨™ ªš §˜ž¥’™£’ž†Ž›„‹šqp‹A8h-#Z(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U(U)V)V)V)V)V)V)V)V)V)V(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S)V)V)V)V(S(S(S(S(S,W/#Z9-a]S{•“¨±³¼·¹¿»½ÃÂÄÇÈÉÊÍÍÍÍÌËÑÏÍÕÓÐÕÓÐÑÏÌÍÍÊÉÊÈÃÄž¾Á¼¼¿»½À¼¾À½ÀÀÀÁÂÀÁ½¾¿¾¾ÁÁÂÃÅÄÃÈÈÅÇÅÃÅÆÄÅÄÃÄÃÂÂÁÀÀ¿Á½¼¾¸¹ºµ·¹´´·²´·²´¶²´·³µ·³´µ¶·¸¼½¾ÁÀ¿ÅÄÃÂÁÀÀÁ¿¾¾¾»º¼¸¹º¹º»»¼½»¼½»»»¹¹¹´µ¶¯±³­­°®°³²´·´µ¶´¶¸°³¶¬¯³ª­°­¯²®±µ°²´°²´³µ·³µ¸³µ¸²´·®°³«­°¦©­¡§­¢¨®£©¯¢¨®œ¡ªš §™ ª˜¦–›¤•™¤“˜¡‘˜¢“—¢‘˜¢‘˜¢‘˜¢’™£”›¥—ž¦¤¬ ¦­ ¦¬ ¦¬Ÿ£«™ ª“š¤Œ”Ÿ‹“žƒ„˜`Y~A6g2%Z*U(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S)V)V)V)V(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S)V)V)V)V(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S)T)T)T)T)T)T)T)T)T)T*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S)T)T)T)T*S*S*S*S*S+T. W9+_\Rzšš¬¶¶¿¼¼Â¿ÁÄÅÅÈÊÊÊËÌÊÍÌËÐÐÍÒÒÏÓÑÎÏÏÌËÊÉÆÆÆ¿¾À¹¹¼µ·º¶¸»¶¹¼»¼½¾¿À½¾¿¼½¾»¼½º¼¾¼¾ÀÀ¿ÁÀÁÂÂÂÂÂÃÁÂÂÂÂÁÀÁÁÁ½¾¿»¼½·¹»µ·º±´·±³µ±³µ±³µ´µ¶µ¶·¹¼ÀÅÅÅÅÄÃÁÁÁ»½¼ºººµ¶·´µ¶²´¶·¸¹¹¹¹¸¸¸·¸¹±±´­¯²«­°®±´³µ·³µ·°²´«®±«°³­°³¯²µ¬¯³«®²«®²¯²µ²´·¯²µ­°³¬®±§©¯£¥«¡£© ¦­¢¨®¡§®›¡¨›¡¨š §—ž¨”›¥“š¤’—£‘˜¢Ž–¡’–¡—¡‘˜¢’™¡’— •š£œ¢©ž¤ª¢¨¬¤¨®¡§­¢«–§“›¦“š¤•¡†Ššwv^V{:,`-V*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S)T)T)T)T*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S)T)T)T)T*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S+T+T+T+T+T+T+T+T+T+T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T+T+T+T,U*U*U)T)T)T,U3%Y@5cf]›­»ºÄÄÄÇÂÁÃÄÃÅÉÉÉËÌÊÌÍËÌÌÉËÊÉÌËÊÊÉÈÅÅÅ¿¿Â¹¹¼´¶¹°²µ°°¶°³·´·º¹»¾¹»½·¹»·¹»·¹»¸º½¸º½¹»½º¼¾½¾¿½¾¿¿ÀÁÀÀÀ¾¿À½¾¿¸¹º´¶¸±³µ±³µ±³µ²´·³µ¸³³¶¸º½ÂÁÃÅÅÂÁÁÁ¼½¾µ´¶²³´¯±³°³¶±¶¶µ¶·¶·¸¶·¸²´¶­¯²¬®±¯²µ²´¶±²³­¯±«®±ª­±«°³«°³¨­°¥©¯§¬¯«®²¬¯²©¬¯¨«®¥©¯¢¦¬ ª› ©Ÿ£«ž¤«›¢¬œ¢©›¡¨™Ÿ¦”œ§“š¤‘˜¢—¢– Ž–¡Ž•¡– —¢—¡‘• ”™¢˜Ÿ§›¢ª¡§«¥©¯£©¯ ¤¬œ¢©™ ¨˜Ÿ§–§”›¥‘˜¤‡ˆœe`‚C8f2&Z+V)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T+T+T+T+T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T+T+T+T+T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T)T*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S+T+V+T. W. W0#X3&[5'[5&Y8)\F;i_Vzƒ|—«ª¶ÆÅÊÌÌÌÈÆÇÁÀÂÅÅÅÉÉÉÉÉÉÄÄÄÅÄÃÃÂÄ¿¿Â»½À¶¸»²²¸­¯²«®±«¯µ­°³°³·µ·º±´·¯²µ¯´·¯´·±´·±´¸²´·³µ·µ·¹·¸¹¹º»¹º»¹»½¹º»´¶¸±³µ±³µ±³µ®±´°³¶±±´²´·¹»¾¿¿ÂÁÁÁ¾¿À·¸¹²´¶°²´°²´®±´¯²µ°³¶³¶¶¶·¸³µ·¯±³¯±³°²´°²´­¯²ª­°ª­±©«®¨«¯©®±§ª®£¦ª¤¨®¦ª°¦©­£¨«¡¥«£ª›¡¨™¥˜œ¤™ ª™ ªš¡«šŸ¨˜œ¤•œ¤”›£’™¡Ž•Ÿ–žŽ–¡Ž•Ÿ”ž”žŽ•” – ”›£—ž¨š §¡§­¦«®¥©¯¡¤«œ¡ªš §—ž¨•œ¦“š¤‘”¡‹Ÿƒ˜oj‰SIt1$Y*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S,S,S,S,S,S,S,S,S,S,S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S+T.U/!U3%Y9,_F9jXMw^T|ZPxXLvvpŽ“¤­­¸ÄÂÉÏÎÍÏÎÍÆÅÄÀÀÃÁÀÂÃÂÄÂÁÿÀÁ»»¾¸¸»µ·º±´¸®±µ©­³¦©­¥¨¯¥«±§­³¬°¶®±µ¬¯²ª¯²¨­°ª­±ª­±«®²«®±ª¯²¬®±®±µ°³¶±´·µ·¹´·ºµ·¹°³¶¯±´°²´±³µ°³¶±³µ³´µ¸¹º¹»¾º¼¾¹º»³µ·«®±ª¯²«®²«®²«®±®±´±³µ²µµ²··±´´®±´®°²«°°ª­°©¬°§«±¦ª°¦«®§¬¯¥¨¬¢¢« £ª¡¤«Ÿ£«œ¢©›¡¨˜¦—œ¥•š£”š¡“˜¡”›¥—ž¨˜ž¥”š¡‘˜ —¡Ž–¡‹“œ‹“ž‹“ž‹’œŠ’Š“ŸŠ”Œ”• ’™£–¥›¡¨ ¦¬¥©¯£¦­› ©š¡«˜œ§’•¢Ž‰Š›ƒ€–~–{y’kd†MAn0#X*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S,S,S,S,S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S,S,S,S,S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S*S+T+T+T+T+T+T+T+T+T+T,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S-T1!X4&Z7*]@3dD9gMBm]S{ng‰|—Š‡Ÿ‡›–’¤¯°¼ÂÂÈÌÌÌÏÎÍËÊÉÅÅž¾Á½¾¿»½Àº¼¾··º²´·°³¶®°³ª­±¤ª°¡§­¢«œ¡ªœ¦¬£©°¤ª°§«±§¬¯¥©¯¤§ª¤§«£§­¤ª°¤ª®¤ª°¦ª°¦«®ª­°¬¯²¬¯²®³¶±´·±´·±³¶¯²µ°³¶²´·±³¶±²³±³µ±³µ¯²µ¬°¶«®±¨«¯¦«®¤ª®¥ª­§ª­§¬¯ª¯²®±´°µµ°³¶®±´«°°©®±¦«®¤¨®¢¤ª¡¤«£§­£§­¡£©›¡§™Ÿ¦™Ÿ¦˜œ¤”›¥—›£”˜ ’— ‘—ž””žŽ–Ÿ™Ÿ‘™¢‘˜ ”žŒ”Ÿ‹’œ‡‘š‡œ†‘‡œˆ‘ˆ‘‹“œŒ“• Ž–¡‘˜¢•¨˜Ÿ©Ÿ£«œ ¨–›§˜œ§’•¢„—xsŽtnŠph‰rlŠrlŠaX|>0b-S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S+T+T+T+T,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S+T+T+T+T,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S,S-T-T-T-T-T-T-T-T-T-T+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q-S4&Z>0bJ@mWQy^Y~d]‚[QyaY~‹¢Ÿ ±¥¤³ªªµ»»ÄÅÅÈÉÉÉÈÈÈÂÁÿÁÄ¿ÀÁ¼½¾µ·º°³¶®±µ«°³¨®²¦¬°¢¨® £ª™Ÿ¦–ž§•¨˜Ÿ§œ£­ ¤¬¡¤«ž¤ªŸ£«£©£ª£©ž¤ªž¤ª¤¬ž¤« ¦­¢¨¬£¨«£©­¦¬°¨¬²ª­±¬¯³¬±´¬±´­°´¬®±­¯²­¯²¨«®¥ª­¥ª­£©­¢§ª §©¢¨¬£©­¤©¬£ª¬§¬¯§¬¯¬±´®±´ª­±§¬¯¤ª® ¦ªŸ¢©›¡§£ªž¤«¢«œ ¨™ž§—œ¥•›¢“™ ‘—ž—Ÿ–ž‹•ž‰‘šˆ™‡œ‰’žŠ’›‹•ž‰“œ‡‘š†™ˆ™„™„™„›…š…Žš†›Š’”ž– —¡—¡‘˜¢•¦—ž¨•š¦’•¢“–£Ÿ|”ne…e\aX|aX|aX|ZOv@4a. T+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q-T-T-T-T+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q-T-T-T-T+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q+Q-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T0 W;.aNFqYU{cb…iiŠnj‹oj‰•–©§ª¶±³¼¹»Á¿¿ÅÄÂÆÂÁû½À¼¾Á½½Ã¼¾Á¸º½²µ¹¬¯³¨«¯£©­ž¦¬›£¬šŸ¨—œ¥“š¤‘™¢“š¤“š¤”œ§–ž©˜Ÿ©˜Ÿ©˜Ÿ©˜Ÿ©˜¦˜Ÿ©™ž§š §˜Ÿ§š¡©œ¢©œ¢©ž¤« £ªž¤ª £ª¡¥«¤©¬¥ª­¥©¯¥ª­¥«¯¦ª°¥©¯£§­¡¤«¡¤«ž¤ª £ªž¤«ž¤«ž¥ªŸ¦«¢¨¬¢¨®£©­ª¯²«®²¦©­ ¦¬ž¤ªœ¢©œ ¨œ ¨š §™ ¨˜¦—œ¥–›¤”™¢’˜ŸŽ–¡–ž‹“œ‰“œˆ™„™„™…š…š…š…š„™ƒŽ˜ƒŽ˜ƒŽ˜€‹—€‹˜‚™ƒŒ›„™…š†‘‹“ž—¢‘˜¢‘˜¢“š¤”›¥”™¥‘“£ŠŠœˆ…›|w’tnŠf]€^Uy_Sy]TxYMvI=j0"V-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T.S.S.S.S.S.S.S.S.S.S-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T.U8)\F=kSMw^Z€feˆqqƒ‚›œ®¯±ºµ·À¹»Á¼¾Ä½½Ã¹¹¿´·¾³µ»´·»µ¸¼³¶º®±µ§«±£¦­ ¢«—ž¨–§”›¥’™£–¢–žŽ•Ÿ–žŽ–Ÿ—¢“š¤“š¤“š¤“š¤”›¥”™¢–œ£•œ¤–§—ž¨–§—¤—ž¨˜Ÿ§™ ª›¡¨›¢§£ªž¤¨ž¤ª¡§­¡§­ ¦¬¡¤«¡£¬¢«£ª£ª›¡¨—Ÿ¨—ž¨˜ž¥›¡¨£ªž¤ª¥©¯©¬°¥¨¬ž¤ª›¡¨™ž§˜Ÿ§—ž¦—¤•œ¦•›¢•›¢“š¢’™¡—¢Ž–¡Ž•”œ‰‘šˆ™…œƒŽšƒŒ˜„™…œ…Žš„œƒŽš˜˜Œ–‹–~Š•€‹˜€Œš‚Ž™„›„›Š“ŸŽ–¡• —¢‘˜¢–¢‹Ÿ~–tnŠqk‰ia‚]Tx^Uykc„pjˆeZ~\OwODo=/a/ S-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T.S.S.S.S-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T.S.S.S.S-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S/ S9+]G=jRKt^Y~lk‹‚ƒœ˜™¬¦©µ¯²¹²µ¼´¶¿²´º¯²¹«±·«­³¬®·¬¯¶­±·ª­´¡¤«Ÿ£«šž©”˜£“—¢—¢Œ”Ÿˆ’›‰‘œ‡œˆ’›‰‘œŒ”Ÿ• •ž•žŽ–Ÿ•ž‘˜ ”›£“›¤”œ§•œ¤“š¢‘™¢“š¢’š¥•¦•¦™Ÿ¦˜ž¥—ž¨œ¢©ž¤ªŸ£«¢«œ¡ª› ©œ¡ª›¡¨™ž§—ž¨”›¥“š¤•š£š § ¦ª£§­¡§­ž¤ª˜ž¥•›¢”š¡“š¤“š¤˜¡— —Ÿ‘˜¢—¡Ž–¡Ž•Ÿ• Œ”‹“žŒ“›ˆ™†Ž™…Žš…š†™†™‡Žš‡Žš…šƒŒ›Œ˜Š—|ˆ“|ˆ“~‰–~Š•€Œš‚Ž™„™„›‡’ž‹•ž• Ž•¡‹ƒ€–tnŠ^RxD6c;,\9*Z=.^J<i^Rxld…]TxNBlG9i7([-Q.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S-Q-Q-Q-Q.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S-Q-Q-Q-Q.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S.S/T/T/T/T/T/T/T/T/T/T-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q/T5$Y;,\A2bLAlb^ts„ƒœ“”¥Ÿ ¯¤§±¤§³¥¦²£¦°¥¨²¤©²¦ª²¦©°¦¬²¤ª°Ÿ¢¬šž©“š¤– ”ž‰‘œ‡‘š…œ„™ƒŽš„›…œ†›ˆ‘ˆ‘‡’œ‡’œ‹“œ•ž˜¡‘™¢‘™¢—ŸŒ”ŸŒ”— ˜¡‘™¢’š£“š¤•œ¦”œ§•¦—ž¦š §˜Ÿ©—ž¨—ž¨˜¦˜œ¤•š£•™¡•œ¦•œ¦–§›¢ªœ¡ª˜Ÿ©“š¤‘˜ Ž–ŸŽ–¡—Ÿ— Ž–¡Š’›‹“œŒ”•žŒ”Ÿ‹“žŠ’Š”Š“Ÿ‰’ž‹“œˆ’›…Žš‡Žš†™…š‡Žš†‹š…Š™„‹—„‹—‚Š—~‡–x„”x„’z†”}ˆ•Š™ƒŽš…œ†›‡œˆˆ›ƒ„•vqŒj`VHr>/_0"V-Q.R7&YF8ePDnOCmA3c9*Z8)Y0!T-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q/T/T/T/T-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q/T/T/T/T-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q/T/T/T/T/T/T/T/T/T/T/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/T4#V6%X7&YF:gYMvaX{mfˆwq|”‰…šŽ‹Ÿ——©œ¬  ­¡¦¯¡§®¡§®¡¦¯Ÿ¤­œŸ©–š¥Ž–¡‹“ ‡’ž…œ‚š€‹˜€ŒšŠ—Œ˜ƒŽš„™…ŽšƒŽ˜˜‚Ž™†™‰’ž”ž• Œ”Ÿ‹“žŠ“Ÿ‡“›ˆ’›‰’žŒ”Ÿ•ž– ‘˜¢‘™¤’š¥’š£“š¤“š¤’š¥’—£’™£”˜£‘–¢’–¡’—£’–¡‘–¢‘˜¤•¡Ž•ŸŠ’Š“ŸŒ”Ÿ‹’œ•ž‹” ˆ’›‡‘š†›†›†‘›†›†›‡‘š†‘›‡œ†‘›‰’žŠ”ˆ‘‡’ž‡œˆ‘†‘‡Žš‡‹™„‰˜„†˜ƒ…—†•{†•z†–z†”}ˆ•Š—‚‹œ‰›–z{‘wvqm‰\QuD6c@/_:)Y0!T/Q/Q1 SC5bXKsM?i7&V0!T0R/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/T/T/T/T/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/T/T/T/T/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/S/S/S/S/S/S/S/S/S/S/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/S1 U0T4"V?.^F8eI=gPDnPDnSGp_SyqhˆŒŠŸ••§›ž« £°Ÿ¤°¤¬œ£­™ ª•œ¦’—£Œ”Ÿ‡ŸƒŽš€‹˜Š—}ˆ•|ˆ–|‡–}ˆ•‚Š—‚Š•ƒŒ˜Œ˜~Š•Š–‚™‰œ‹œŒ‘‰‘œ‹’ž‰œ‡œ‡œ†›†›ˆ‘‰“œ‹“ž•ž–¢Ž–Ÿ– Ž–¡• Œ”Ÿ” ” ’Ÿ’žŸ‰Š™††˜ŠŽžŒžŒž‰’žˆ‘Š’›ˆ‘ˆ‘‡œ„›ƒŽ˜ƒŽ˜‚™ƒŽ›ƒŽ›ƒŽ„›„™„›†›Š“Ÿ‹” ‡’œ†‘ˆ“Ÿ‰” ˆ‘ˆ›†‹œ…‡™ƒ„•€’ƒ•‡—†•†•Š™‚œ‚‹œwvaX{L@jE7d<-\6%X1 S0R/S/Q/Q/Q1 S>-]D5c9(X0R/Q0R/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/S/S/S/S/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/S/S/S/S/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q0R0R0R0R0R0R0R0R0R0R/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S0R0R0R0R1 S5#U9(X>-]8'W:(ZD5cZNt‚|–““¥˜™ªšž®›¢±™¡¬•œ¦“˜¤Ž–£Š’Ÿˆ‘ ‚Žœ‹™Š™~‰˜}ˆ•{†•|…”~†“€‡“‚‰•ƒŠ–‰–€‰˜€‰˜ƒŒ˜†Ž™‰Žš‰Žš‰Žšˆ™ˆœ‡Žš…š‚šŒ™Œ™„œ†‘ˆ‘ˆ“Ÿ‰” Š“Ÿ‰’žˆ“Ÿ‡œŠ‘‹œŒœ‹Ÿ‰Š›€|‘}x–„ƒ™ˆŒœŠžŠ‘ˆ†›…ŽšƒŒ˜Š™}ˆ•}‰—€‹˜Œ™‚š‚šƒŽ›ƒŽš‚š†‘ˆ“Ÿ‡’žƒŽš…‡’œˆ‘‰’ž‡œ‡œˆœ‡Š—„…–„‰˜€‰š€†˜Š™‹™‚šƒŒ›|{”UJq>-]4"T/S/S/S/S/S/S/S/S/S1 U1 S/Q/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S0R0R0R0R/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S0R0R0R0R/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S/S0T0T0T0T0T0T0T0T0T0T/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q0T0T0T0T/Q/Q0R1 S0R4"T?0^XKsqk‰€z”ˆƒ›““¥˜®–©‘˜¤Œ•¡ˆ‘ …Ÿ„ž‹›Š™~‰–}†•~†“}…’†•…“‚†”ƒ†“‚†–‚‡–†•‰–„‹—ˆ‹˜‰Œ™‡Œ˜ˆŒš…Œ˜‡‹™„‹š„Œ™Œ˜Š™€‰˜‚œƒŽš„œ†‘†‘ž…‚šƒ„›…šˆœ…Š›…†™‚—ytnf„lcƒpj†‚€•‰›‡šˆ›‡Žš„Œ—‚Š—|‡–{‡—|ˆ–Š—~Š•€Œ—€‹˜€Œ—˜‚Ž™ƒŽ›ƒŽšŒ™€‹—ƒŽš„œˆ“Ÿ‰’ž‰‘ž‹“ ‹’ž‡œ†œ…Œ›‚œ€Œœ€‹šŒ›‚š‚™‚‡›yx‘\Qu?.^4#V1 S/Q/Q/Q/Q0R1 S0R/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q0T0T0T0T/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q0T0T0T0T/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q/Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q4"T>/]I:fOAkZMrmd„ŒŠ¡”˜¨’—£Œ”¡ˆ“¢ƒŽ›‹›Œ›~Šš}‰—~‰•~‡–€…”€„’€„”€‚’ƒ“ƒ“ƒ“…•…•‚†–…†—…†—†ˆ˜…‰™†ˆ˜„‰š…‰™„‰šƒˆ—‚‰˜ˆ—‡—Š™Š™€‹˜‚š€Œš‹™Š—‹™Œ™ƒŒ›…˜xwoj‰i_€\OtSFnXJqcYz}zˆŒš‡Œ›‡Œ˜‡‹™…Š–ƒŠ–‡—~‰˜~‰–~Š•Š—Š–Š™~Š•Š”~Š˜Š—Š—~Š˜|ˆ–€‹˜Œ™…œ‹“žŽ•¡• ’žŠ’Ÿˆ„›ƒŽ‚œƒ‹›‚œƒŽš†ž‡Ÿ‡œ˜jd‚OClD6c>/]:)Y9(X<*Y@1_E6b:)Y0R1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q4"T8&X;(YD5af\}ysŽ¢–¥ˆ“ ƒŸ‹›Š™Š—Š™€‡–€…”€„’ƒ“~‚’€’‘‘€’‚“‚“€‚”‚“‚ƒ”‚ƒ”„„”„…–„…–„…˜ƒ…—ƒ„•…•†—~†˜…—~†–{‡—|‡–{‡—{ˆ—z†–{‡—}‰—~Šš€†˜vu\QuI:f>-]9(X:(W@/]UHpxv…‰™†Š˜†Š˜ƒˆ—…‰—‚‰•†•ˆ—€‰˜€‹—ˆ—€‰˜ˆ—ˆ”}ˆ•~‰–}ˆ•}‰—z‡“z†–}‰—€Œ—‡’žŒ”ŸŽ•Ÿ• Œ”ŸŒ”ŸŠ’Ÿ‡œ…œ‚œƒ‹›ƒŽ…œ‡’ž‡’œ‰” ‹’žˆŒœƒ‚˜wuŽf]}g\}aWxh_qj…jd‚E4b3!S1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q2 R2 R2 R2 R1Q1Q1Q1Q1Q3 Q5"S6#T9'V@/]ZMrxrŒˆŠœŒ“¢ˆ‘ ƒŽ›Œ›Š™‚‡–€‡–…•€‚’‘€€‘€€’€‘€€’€€’}~‘|z~|‘€~“€€’‚€’‚‚”‚•“€€’”€“‚–ƒ–€•}ƒ•zƒ”u‚“sƒ“t„”u…•v†˜x…–{…—|•oi‡WIp@.]8%V5#U3 Q8&UPCkup‹ƒ„—„…–ƒ…•ƒ„•‚„”†—€‡–†•‚‡–‚‰˜€‰˜€ˆ•€ˆ•~‰–}†•}†•|…”{„“x…–x„”z†”Œ™‡’žŒ”ŸŒ”ŸŽ“ŸŒ”Ÿ” Š’ˆ‘†›…šƒŒ›‚‹š„œƒŽ›…œˆ“Ÿ‹“ž• –¢“ž‹Ž›‰‹›…†™~|‘f[|=,Z4!R4!R2 R1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q2 R2 R2 R2 R1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q2 R2 R2 R2 R1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q1Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R3 Q3 Q3 Q3 Q2 R2 R2 R2 R4!R7%T<+YA0^H8cXJqjawuŽ‚˜†‹š‡Ž†Ž›…Š™…‰—„…–‚ƒ”‚‚’‘€€‘~~‘€~}’}zŽ{wŒwtŒtq‰wrŠzv‹|x~z{}{|z|xxu{wŒ{yŽ{y{z|~“w€”r€’p€’q“sƒ•t‚”zƒ–{–wvf\{K<e;)X6$S6#T3 Q:(WSElqj…~{‘}{~{}’~’“€„”€„”…•†•€‡–€ˆ•ˆ”}ˆ•~‰•}†•|…–z†–w†•vƒ”{‡—€‹˜„œ…œˆ‰‘žŠ’‹’ž‰’ž‡‘š†›…Žƒ‹˜ƒŠ™„Šœ‚‹šƒŒ˜„›‡‘šŒ”ŸŽ•Ÿ‘–¢—¡Ž’ ˆŠš‚•wuŒaVw=+Z5"S;)X7%T2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R3 Q3 Q3 Q3 Q2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R3 Q3 Q3 Q3 Q2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q5"S:(WD4_N?hXKpbXykcsqŠ{y~’‚„–†Š˜…‰™……•„ƒ’‚€’~~~|‘~{}zŽ|z|z}z|xuo‰i_~_Svg\}mdpg„qhƒvpŠxr‰xs‹wq‹tk†qh…qh…qj…rk†sl‡vuŽvzu}’r~‘s’v“x€’y}’vuŽh_XIoG5a6$S3 Q3 Q4"Q;)XM>geZ{mdj`ka€ne‚pj†wtŠ|}€‘€‘ƒ“€„”„“„“€…”~…”~†“|…”w„•uƒ•t„”v†˜{‡—€‹˜‚š„›†‘‡’žˆ‘‡œ‡œ†Ž›…š…Š™ƒŠ™‚‡˜ƒ‰›„‹šƒŽ˜†›‹“žŠ’Œ‘‰‹›„„–}{wuŠmj‚d[{F7`8&U7%T8#T3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q5 S5 S5 S5 S5 S5 S5 S5 S5 S5 S3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q5 S5 S5 S5 S3 Q3 Q3 Q3 Q5#R?,ZF7`OAhYLq_Uve]~mh†qpŠwuŒ{yŽ~’‚‚’‚‚”“~~~z}yŽzt‹wq‹sm‡qj…qj…meƒ_SvJ;dH6aXIocXyeZ{f[|mdsi…ri„oek_~fZzbWxbUw_SvdYzohƒusŠtvuyŽu{w|y}’vwicQCjB1_9'V4!R3 Q3 Q9&T7%T9'VE3^P@hN?hJ8cN?hQCj]Nspk†wuŒxw||Ž~’~€‘ƒ“„“†•|‡–x…–vƒ”u„“t„–w…—~Š˜Œ™Œ™ƒŽ›„›„›…š…œ„›„™Š™Œ›ƒŠ™„‰˜ƒŒ›„›†›Š“Ÿˆ›…‰™}~‘wuŠqn†lg‚f_z]TtSFkC3^8&U7"S4!R3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q5 S5 S5 S5 S3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q5 S5 S5 S5 S3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q8&U>,XD4_K>fSFkZNq`Wwf`~kepj„sn†vt‰wx‹||Ž||xysŠysŠuo‰mddYzZKpXIoM?f?-Y8&U:(WH9b_Rt`Su^QscVxi]|k_~eYy]NsWHnP@hN>fN>fRDk`Uvkcoj…qoˆusŠvuŽwxŽtr‹`UvL=f>+Y7"S5 Q5 Q7"S9&T5 Q5 Q7"S8%S9&T<)W>+Y=*XC1]WHn_Tune‚urŠ{yŽ}~‘~‚’~‚’~…”}…•z„–u„“vƒ”uƒ•v†˜{ˆ—|ˆ˜~‰–Š—€‹˜Œ›Œ™Œ™Œ™Œ˜Œ™€‹˜€‹˜‹™Œ™‚™„›„Œ™…•{{utŠqk…jd~b\z]TtVLmOCiF8_@-[8%S6!R5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q7"S<)W@.ZF7`K=dSDjYMp]TtbYyc]{kdoiƒpm…spˆsl‡nd€ri„ri„i]|^QsO?gA/[?-Y:'U7!Q5 Q>+YSCk`Su`Su_OsTEkZKpaTv^NrN>fD2]@-[C.\@.ZC1]L<dWHn]Qt`Uviane‚kce\|O?g@.Z<)W8%S6!R5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5"P6!R9&T>,XH9b\Mrj`vq‰{yŽ|}~’“~ƒ”}…•{„•zƒ”x„”w„“u…—w†•uƒ•vƒ”w„“z†–}ˆ•Š—Š–~‰–~Š˜‹™~Š˜Š—}‰—Š—Š—†•|’xzŒsrˆmj‚gb}aZu\SsVLmNBhH:aC1]=*X:'U7$R5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P5 Q5 Q5 Q5 Q6 P6 P6 P6 P6 P9#S<*V@.ZD5^I;bN@gPDjTKo[Qr`Wwd\zg_}g^{aUuaUudXx^QsR@hI6`@-X9#S7!Q6 P6 P6 P:%SC0[WGlXHmTDiTDiTDiZJoR@hA.Y<'U?*X@+Y9$R9#S:$T<)W@-XD2]SDj\MrUFlP@h>+Y8"R7!Q8"R8"R6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P7!Q8"R;&T>+VD1[RCimdwtŠ{yŽ{|~““}ƒ•{„•x„”w„•x„”y…“u„“u„“t‚”u‘wƒ“{†•}†—~‰˜}†•|ˆ–{‡—z†”|ˆ–{‡—z…”vsy‹rv‰no…jge_{^VtYPpSIjNAfG9`B3\?-Y<'U8"R6#Q6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P5 Q5 Q5 Q5 Q6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P5 Q5 Q5 Q5 Q6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P6 P7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q9#P<'U@-XD2]D5^G8aK=dQDiTHkXInUFlRCiQ?gM;cJ8`D1\>+V;%R8#Q7!Q8"R7!Q7!Q7!Q7!Q9$R?,WF3]N<dN<dYIn[KpN<d@+Y:%S<'U:$T7!Q7!Q7!Q7!Q7!Q9#S;&TA.YB/ZF3]<)T6!O7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q9#S8"R9#S;&TC0[^Qspf‚vq‰yvŒ|z~“}‚“}…•z…”w„•z…”y…“vƒ”v‚’u‚‘u‚“y„“~…‘~…”€…”~…”|‡–x…–x…”vƒ”s’pyŒnt‰hlfe~b^z_Yu[RrVLmODhJ<cG7_B0[>,X=(V9#S8"R7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q7!Q8"R8"R8"R8"R8"R8"R8"R8"R8"R8"R6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O8"R8"R8"R8"R6!O6!O6!O6!O6!O6!O6!O8#Q<'U>+V@.YB3\E5]G7_G4^E2\A.Y=*U<)T;&T:%S8#Q7"P6!O7"P6!O6!O6!O6!O6!O6!O6!O7!N8#Q='TG5]YIm_PrWGlG4^<)T7"P6!O6!O6!O6!O6!O6!O6!O6!O7"P;(SA.Y;&T9$R8#Q6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O7"P>+VP@eZJndXxsl‡xu{yŽ}~’|‚”|„”x„”{„“z…”x„”wƒ“wƒ“x„”|„‘~…”~…”~‚’~ƒ”}„“zƒ”u‘qzŽlt‰jo…ega`{][wYTrSNmQHkL@fG;aD5^@.Y>,X:(T:%S6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O8"R8"R8"R8"R6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O8"R8"R8"R8"R6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O6!O7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N8"O:%S<*V?,W@-X>+V@-XA.Y=(V7"P8"O7!N7!N8"O7!N7!N7!N7!N7!N7!N7!N7!N7!N8"O7!N7!N:$QC/YYIm`QsYHlH6^:%S7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N8"O=(V:$Q7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N8"O8"O:%SA.YE2\N<deYxqhƒupˆxu‹z{Ž{’|’}‚“|‚”|‚”|‚”|ƒ’|ƒ’}„“~…”}„“~‚’}‘y~uzŽpvˆjo…diab{[ZuVTpTOnPIkMBfH=aE7^A2[@.Y>+V;(S8#Q7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N9"Q9"Q9"Q9"Q9"Q9"Q9"Q9"Q9"Q9"Q7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N9"Q9"Q9"Q9"Q7!N7!N7!N7!N7!N7!N7!N7!N7!N8"O8#Q9$R:$Q9#P:$Q:$Q8"O7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N:#R8"O7!N>(UI5^S@gQAfK8_A.Y9#P7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N8"O8"O7!N9#P=)SH5\YIndWvj^}oerk†upˆwvŒ{||~|}Ž}~}‘}‘~‚’}‘}‘{|vu‹rq‡op†jhed~^]zVUrSQpOKkLDhI@dF:`B4[?0Y>,W<)T:%S8"O7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N9"Q9"Q9"Q9"Q7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N9"Q9"Q9"Q9"Q7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N7!N8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N8"O8"O8"O8"O9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N:#O:#O9"N;%RB.X@,V<(R<%Q9#P9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9#P>*TC/YJ7^SBfYHlZIk\MofYxtk†wuŠzxzw‹{yŽ{{zzŒxxŠvs‡rm…oiƒkdg`{d]x_XsYSqSLnNGiJAeH<bD7\B2ZA.X=*U<)T:$Q9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N8"O8"O8"O8"O9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N8"O8"O8"O8"O9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N9"N:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O:#O:#O:#O:#O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O9#P9#P8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O;$P>'S?+UA-WD.XD0ZJ7^`Oqoeqjƒri„qjƒqjƒpi‚ofja|g^ycYu`Ts^Rq[QpWLmSHiNDeJ>aG:_D5[A1Y@-W=*T<(R:$Q8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O:#O:#O:#O:#O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O:#O:#O:#O:#O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O8"O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O;$P:#O;$P?(TA+UI6]XFgXGiXGi[Jl_Pr^Qp`SrbVuaTq]Qp[NmXIkSFhQAeN>bJ:_F6[C0WA.X?+U=)S<%Q;$P:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#Q:#Q:#Q:#Q:#Q:#Q:#Q:#Q:#Q:#Q:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#Q:#Q:#Q:#Q:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O;$P:#O;$P=&RI5\K8_C-WA*VC-WE1ZM:aZIk[LnYJlVFjSCgP@dL<aJ7^G4[D0YB.W?+U?(T=&R;$P:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#Q:#Q:#Q:#Q:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#Q:#Q:#Q:#Q:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#OA)TQ=cQ=cA*S;$P;$P<&PC-WQ@dTDhRBfN=aL;_I6]G3ZC/VC-W@*T>'S=&R<%Q:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O<$O<$O<$O<$O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#OC-WUDhUDhG3ZA+U@)R@,SC-WJ6\M<`L;_J6\G4[D0WB.U@*T?)S>(R;%O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O<$O<$O<$O<$O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O<$O<$O<$O<$O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O:#O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$OB+TR?cXFgS@dO<`M:^L9]J6\I5[I5[H4ZE/VB.UB+T@)R>'P=&O=%P<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O;$MC,UM:^SAbR@aO<`L9]J7[I4YF0WC/VC-TB+TA*S?(Q=&O=%P<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O<$O=%P=%P=%P=%P=%P=%P=%P=%P=%P=%P=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=%P=%P=%P=%P=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N<%NF/XJ7[K8\L7\I3ZH2YE/VE-UE-UA*S?(Q@(P?%P>$O=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=%P=%P=%P=%P=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=%P=%P=%P=%P=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N=#N>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M>$O>$O>$O>$O;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M=&OE-UG1XG1XD.UE-UD,TC+SA*S@)R?(Q=&O;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M>$O>$O>$O>$O;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M>$O>$O>$O>$O;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M;$M>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O@&QC+SD,TA)Q@(P?'O?'OA'R?'O?'O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O?$N?$N?$N?$N?$N?$N?$N?$N?$N?$N>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O?$N?$N?$N?$N>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O@(PA)Q?%P>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O?$N?$N?$N?$N>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O?$N?$N?$N?$N>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>$O>&N>&N>&N>&N>&N>&N>&N>&N>&N>&N>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>&N>&N>&N>&N>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>&N>&N>&N>&N>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>&N>&N>&N>&N>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L>$L?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M@%L@%L@%L@%L?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M@%L@%L@%L@%L?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M@%L@%L@%L@%L?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%M?%MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&M@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%LA&MA&MA&MA&M@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%LA&MA&MA&MA&M@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%LA&MA&MA&MA&M@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%L@%LA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MA&MB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LA&MA&MA&MA&MB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LA&MA&MA&MA&MB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LA&MA&MA&MA&MB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB'KB'KB'KB'KB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB'KB'KB'KB'KB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB'KB'KB'KB'KB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LB&LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KD'LD'LD'LD'LB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KD'LD'LD'LD'LB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KD'LD'LD'LD'LB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KB'KD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JD'LD'LD'LD'LC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JD'LD'LD'LD'LC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JD'LD'LD'LD'LC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JD'LD'LD'LD'LC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JD'LD'LD'LD'LC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JD'LD'LD'LD'LC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JC'JD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD(KD(KD(KD(KD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD(KD(KD(KD(KD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD(KD(KD(KD(KD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LD'LE(ME(ME(ME(ME(ME(ME(ME(ME(ME(MD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KE(ME(ME(ME(MD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KE(ME(ME(ME(MD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KE(ME(ME(ME(MD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KD(KE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JF)KF)KF)KF)KE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JF)KF)KF)KF)KE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JF)KF)KF)KF)KE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JE(JF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF)KF)KF)KF)KF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF)KF)KF)KF)KF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF)KF)KF)KF)KF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IF'IG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KG(JG(JG(JG(JF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KG(JG(JG(JG(JF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KG(JG(JG(JG(JF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KF)KG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JI)JI)JI)JI)JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JI)JI)JI)JI)JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JI)JI)JI)JI)JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JG(JH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JH)KH)KH)KH)KI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JH)KH)KH)KH)KI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JH)KH)KH)KH)KI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JI)JH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KI)JI)JI)JI)JH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KI)JI)JI)JI)JH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KI)JI)JI)JI)JH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KH)KK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HK*IK*IK*IK*IH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HK*IK*IK*IK*IH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HK*IK*IK*IK*IH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HH)HI*II*II*II*II*II*II*II*II*II*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*II*II*II*II*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*II*II*II*II*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*II*II*II*II*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IK*IL+JL+JL+JL+JL+JL+JL+JL+JL+JL+JJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HL+JL+JL+JL+JJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HL+JL+JL+JL+JJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HL+JL+JL+JL+JJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HJ*HK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IM+IM+IM+IM+IM+IM+IM+IM+IM+IM+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IM+IM+IM+IM+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IM+IM+IM+IM+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IM+IM+IM+IM+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IK+IL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HL+HM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GL+HL+HL+HL+HM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GL+HL+HL+HL+HM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GL+HL+HL+HL+HM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GN,HN,HN,HN,HM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GN,HN,HN,HN,HM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GN,HN,HN,HN,HM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GM+GN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HN,HO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FN,HN,HN,HN,HO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FN,HN,HN,HN,HO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FN,HN,HN,HN,HO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FP,GP,GP,GP,GP,GP,GP,GP,GP,GP,GO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FP,GP,GP,GP,GO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FP,GP,GP,GP,GO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FP,GP,GP,GP,GO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FO+FP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FP,EP,EP,EP,EO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FP,EP,EP,EP,EO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FP,EP,EP,EP,EO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FO-FP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EQ,FQ,FQ,FQ,FQ,FQ,FQ,FQ,FQ,FQ,FP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EQ,FQ,FQ,FQ,FP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EQ,FQ,FQ,FQ,FP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EQ,FQ,FQ,FQ,FP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EP,EQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ-FQ-FQ-FQ-FQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ-FQ-FQ-FQ-FQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ-FQ-FQ-FQ-FQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DQ,DR-ER-ER-ER-ER-ER-ER-ER-ER-ER-EQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FR-ER-ER-ER-EQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FR-ER-ER-ER-EQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FR-ER-ER-ER-EQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FQ-FR-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ES.FS.FS.FS.FS.FS.FS.FS.FS.FS.FR-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ES.FS.FS.FS.FR-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ES.FS.FS.FS.FR-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ES.FS.FS.FS.FR-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ER-ES.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FS.FT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CT.DT.DT.DT.DS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CT.DT.DT.DT.DS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CT.DT.DT.DT.DS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CS.CT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT/DT/DT/DT/DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT/DT/DT/DT/DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT/DT/DT/DT/DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DT.DU/EU/EU/EU/EU/EU/EU/EU/EU/EU/ET/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DU/EU/EU/EU/ET/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DU/EU/EU/EU/ET/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DU/EU/EU/EU/ET/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DT/DU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CX/DX/DX/DX/DX/DX/DX/DX/DX/DX/DU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CX/DX/DX/DX/DU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CX/DX/DX/DX/DU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CX/DX/DX/DX/DU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CU/CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BW0CW0CW0CW0CW0CW0CU0EU0EU0EU0EW0CW0CW0CV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BW0CW0CW0CW0CV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BW0CW0CW0CW0CV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BV/BW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CY2CW1CW1CV2DV2DV2DV2DW1CW1CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CY2CY2CX2DW3EU2EU3DU3DU3DU3DU2EW3EW1CW1CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CY2EX2DY3EX4FU4GU5EU6GU6GU6GU6GU5EU4GW4DX2DW1CY2CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CY0CY0CY0CY0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CY0CY0CY0CY0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CW0CZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CZ2BY2CZ3DY3EW4DW5FU6GS8HS8HS8HS8HS8HS8HU6GU5EW4DW4DX2DY2CZ2BY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CZ2BZ2BZ2BZ2BY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CZ2BZ2BZ2BZ2BY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CY0CZ1DZ1DZ1DZ1DZ1DZ1DZ1DZ1DZ1DZ1DZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BY2CY3EX5EX6GU7FS8HR:JS;KR<KR<KS;KR:JS8HT6HV6FW4DX4CY2CZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ1DZ1DZ1DZ1DZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ1DZ1DZ1DZ1DZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ1DZ1DZ1DZ1DZ1DZ1DZ1DZ1DZ1DZ1DZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ1DY2CZ3DY5DX6GU7FT9IS;KQ=LP?NP@PP@PP?NQ=LS;KT9HU7FW5FX5EZ3DY2CZ1DZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ1DZ1DZ1DZ1DZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ1DZ1DZ1DZ1DZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2B[1B[1B[1B[1B[1B[1B[1B[1B[1B[1BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2B[3CZ3DX5EX8HT9IT<LP?NO@NNBPNCRNCRNBPO@NQ>MS;KT9HW7GX5EZ3D[3CZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2B[1B[1B[1B[1BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2B[1B[1B[1B[1BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2BZ2B[3C[3C[3C[3C[3C[3C[3C[3C[3C[3C[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[3CZ3AY5DY7GV:IT<IR?MOAPMDPLESKGTKGTLESNCRPAOQ>LS;HU9HY6EY5DZ3A[3C[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[3C[3C[3C[3C[1A[1A[1A[1A[1A\2B\4D[3C[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[3C[3C[3C[3C[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A[1A\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\4DZ4CY6DX9GV;JR>MPAOMDPKGTJIUIIVIIVKHTLESOCQP@MR<KU:IW8FY5DZ3A\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B]3C^4Da9Ia:Ha:H^4D]3Ca9Ig@Nc<J^6F^4D^4D]5E\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\4D[5DX6FW9HT=KR?NPDRLGSJIUHKWHLWHLWHKWKHTLESNBOR?MU<KW8FY6DZ4C\4D\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B]3Cd:Jg?LoKWrO[qMYiBPc9IgCOpLXqMYkDRkDRkDRgAPe;Kb8Hc;Hc;H`8E]3C\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B]3B]3B]3B]3B]3B]3B]3B]3B]3B]3B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B]3C[4BY6DX9GV;JS?LPAONFSKHTHKWHMYFNYFNYHMYJJWKGTNCOQANT=KU:HX8E[5D[4B]3C\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B]3C]3C\2B\2B\2B\2B]3B^4Ce;KnHTwVb_i_ivS_sP\zWc_i_i~^h€`j~^h{[etQ]sP\~[g}]gsOZe=J_5E^4D`6Fa7Gb:Ge>Ld<L^4D\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B]3B]3B]3B]3B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B\2B]3B]3B]3B]3B]3B]3B]3B]3B]3B]3B\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A]3B]3C]5B[5DZ7FW9HT=KRAMPDRLHUIJVHMYFO[FO[FO[FNYHLWJIUNFSPBOR?MT<IX9GZ7F[5D]5B]3C]3B\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A]3B`6E_5D\2A\2A\2A\2A]3B]3B_5DhAOvS_‚blˆis‡gp‰irˆis‹ow‹owŒpxŽrz‹ow‹ow‹kts{–}ƒ•|‚Œpx|\foIUnJVwT`yYc}]g‡hr~^hh@M]3B\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A]3B]3B]3B]3B\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A\2A]3B]3B]3B]3B]3B]3B]3B]3B]3B]3B]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]3B\4A\5CZ7EX9GV;JS?LQBNNFSLIUHKWFNYEPZFQ[FQ[FO[HMYIJVLHUNCOQANR>KW;HY9FZ7E\5C]5B]5B]3B]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@^5A^5A^5A]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@^5A]4@]4@]4@]4@]4@]3B]3B`7Cg?LtQ]…fpw}•|‚–}ƒ–~„˜€†›…‹Ÿ‡ž†Œš‚ˆ˜€†˜€† ‡Œ¦‘•¦‘•¡Œ˜€†‘v•}†¡Œ“¡—£’™¦•˜ƒuU_c;H_6B^5A]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]3B]3B]3B]3B]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@]4@_4B_4B_4B_4B_4B_4B_4B_4B_4B_4B^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A]5B\5C[7CZ7FW;HS=JRAMPDRLHUJJWIMXFO[FQ[EQ\EQ\EPZGNXHKWKHTLEQNBOR?MU=JW;HY9FZ7EZ6B\5C]5B]3B^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A`5Ca8Da8D`5C^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A_4B`7C`7C^5A^3A^3A^3A_6Ba6Da6D`5C`7Ca8Db8Ge<HmERyU`…enw}‡¢Ž“¥’•©—›¨–šª˜œ®œ ¯¡¬šžª˜œ¨“–©”—¯¡°ž¢¯¡­š ®ž¤³§¬¶­´¶®´´«°²ª°«Ÿ§“z‚xW`nHTkCMb9E_4B_4B^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A_4B_4B_4B_4B^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^5A]5B\6B[8FZ:GU<HS?LOCPMFRLIUJMWGNXEPZEQ\DR[DR[FQ[FO[IMXIJVKHTOFRPBOS?LU=JW;HY9F[8F\6B]5B]5B^5A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A_6Bb9Eb7Eb9Ec:Fd;Gb9E`7C`7C_4B_4B^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3Ac:FnGRpJVd;G^3A^3A_6Bh?KpLWpJVoIUpLWwS^yXa|[dŠjs“z€š„Š£‘•©›ž¬Ÿ£¯¢¦°¢¥¯Ÿ¢° £´§ª¹¯°¹®±¶©¬± ¢±Ÿ£³£¦³¥¨µ§ª·¬¯º°´¼¶¹½¸¼¼·»¸³·¸²¸²¬²«Ÿ§›Š‘r{|Xch?K^5A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A_4B^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A_4@_4@_4@_4@^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3A^3Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5A_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_6B_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_6B^6C[7C[:FX<GT>KQANODPLHSJKWHOYFO[FQ[DR[DR[DR[FQ[EPZGNXHLWJJULGSNEQPBOS?LU>IW;HY9F[8F[7C^6C_6B^5A_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@`5Ag>JoIUpITkCMi@Lg>Jd9Ec:Fc8D`5A`5A_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@a6BiAK^g^giAKa6Ba8Df=IwT]†foˆisŠnvŽu}—‚‰›† “¦–œªœ¢¬Ÿ£­¡¦³¨«¶­¯·¯²·®°·­®¸®¯½´¶À·¹À¹º¼³µ»­¯º¬®¼¯²»±²¿´·¾¶¹½µ¸¾¹½¾ºÀ¾ºÀ»¸»¸¶º·µ»´¯¶­¡© “ˆhqmFQc8D`7C_4@_4@`5A_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@a6Ba6B`5A_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@a5Aa5Aa5Aa5A_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@_4@a5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5A`5Ab7Cf;Gg<Hg<Hd9E`5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5A_4@_4@_6B]7C[8DY:EX=IS@LPDQMFRKJVIMXGOZEPZEQ\DR[DR[DR[DR[FQ[FO[GNXHLWJIULGSNEQQBNRAMT>KW<HY:E[8D[7C^6C_6B`5A_4@a5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Ad9EmDPvRZ^g^guQ\lDNf=Ie:Fd9Eb7Cb6Bb6Ba5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Ab6Bc7Ci>JoHRwT]ŒsyŠjspITkCMqKWyU`‹nu•|„š…ŒŠ¤”š«Ÿ§¯§­²®´·µ»¸¶¼·²¶µ¯²º´·½¸¼¿¼¿À¼Â¿ÂþÂļ¿Å½Àļ¿Ã¹ºÁ·¸Á·¸Åº½Äº¾Å¼Áû¾½µ¸½¸»À¾ÂÀ¾Ä¾½Â¼ºÁ¹»Á¸¶½²­±ªž£›…‹„dmuPZnGRjBLh=Ic8D`5Aa5Ab6Bb6Ba5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5A`5Aa6Bb6Bc7Cc8Dc8Db6Bb6Bb6Ba5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5Aa5A`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?a5@c7Bh=Ik@Lh@Jj?KkBKiAKg;Fc7Ba5@`5A`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?a5A`5A^6@]7C[:FX<GT>KQBNNFQLIUKMVHOYFO[FQ[DR[DR[DS]DR[DR[EQ\EPZFO[GNXHLWJJULHUOFRPDQRAMT>KX=IY;G[8D]7C^7B_6B`5Aa5A`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?a5@g<HqJU€]fw™…ŠnvuQYoHSiAKg<Hd9Ee:Fb7Ca5@b6Ac7Bc8Db6A`4?`4?`4?`4?`4?`4?`4?b7Cf;Gh@JmFQ‚ajv|“{œ‡Ž–}…†gq†fo‹ow’y™ƒ‰ “¤”š¤”š©›¡¯§­µ°·º¸¿¼¾Ä½Àǽ½Ã¼ºÀ¿¿ÅÄÂÉÃÅÈÇÇÊÉÉÌÉËÎÉÈÊÉÆÆÈÂÄÈ¿ÁǾÀȾ¿ÊÂÅÊÄÇÉÁÄƾÁÀ»¾¾¹½Á¿ÅÂÀÆÀÀÆ¿Áʼ¾Ä¹»Á´²¶°ª­ª¡‰Ž”ysz‡gn|X`qJUg?If;GiAKh@Jb6A`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?a5Ad8Cj?KoGQpISk@Lg;Fg<Hg<He:Fe9Db6Aa5@`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?a5Aa5Aa5Aa5A`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?`4?a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@a5@c7Bi=Hk@LmDMoFOoGQnENnFPqISlDNi@Ii=Hh<Ge9Dc7Bb4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@a5@`5A^7B]9DZ;FX=IT@KPDONHQKJVIMXHPYFQ[DR[DR[CR\CR\CR\DR[DR[EQ\FQ[FPYGNXIMXJJULHSMFRPDQRAMU@JX=IZ;F\9E]7C^7B^6@`5Aa5@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@c5Ac7Be9DkCM{XaŠqw›Š’¤™¢™†ŒŠmtƒ`itPXnFPlCLlDNlCLj?KlCLrKUvOYlDNd8Cb4@c5Ab4@b4@b4@d9EnFPyV_`iŽs| ’˜¦šŸ©›¡©œ£¨š ¤“š¢‘˜¥”™¦˜ž¦–œ¨š ©œ£§› «Ÿ¤±©¯²®´¹µ½½¿Å½ÀÇ¿ÂÉÂÅÌÆÈÎÈÊÍÊÌÏËÍÏÍÏÑÎÐÒÌÎÐÏÐÑÏÏÏÎÌÍÏÌÌÎÉÉÐÍÍÏÌÏÊÄÇƾÁļ¿¿º¾Â¿ÂÂÀÇ¿ÁǾÂʽÁɺ½Ä¸·¿µ²µ¯©¬«ž¡§—š§•™ ‹Ž•{ms]e|U_vRZoGQf:Ee9Db6Aa5@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@d8ClAM|Waq{œ‡Ž˜‡]epHRxQ[xT\rJTkBKf:Ed8Cc7Bd6Bd6Bc5Ab4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@a5@a5@a5@a5@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@b4@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@b6Ab6Ad8Ce:Ch?HjAJmDMoFOqHQsKStLTsKStOVwRYvOYrJTnENjAJh?Hg>Gf:Ea5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a6B^7B\9E[<GW?IRBLPEQLHSKMVHOYFO[EQ\DR[CR\CR\CR\CR\CR\DR[DR[EQ\FQ[EPZGOXIMXIJVKHTMFRODPRBLU@JX=IZ;F\9E^7B_7Aa6B`5Aa5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@d8Cf=Fi@IrKUƒclz€‘™¥œ¤¡”›š†‹“zŒovah|Yb†fo‡jq}Ya}\bŠoutzahpGPe9Da5@a5@a5@f:EqJTŠmt—„Š•§¡ª«§¯¬§«¬£ª¯©¯±¬³²ª³²¬²³®µ±¯µ±«±¯«±°«²°¨®°ª°³¯µ´²¸º¸¿¾ÀÆ¿ÂÉÃÆÍÆÉÐÉÌÐÊÍÐËÍÏÌÎÐÎÑÑÎÓÓÏÔÔÒÕÕÔÖÕÖ×ÕØØÕØØÕÖÕÔÔÒÓÌÉÉÈÀÃĽ¾Á»¾Â¿ÂÂÀÇ¿ÂɾÂʽÁÉ»¾Å¸ºÃµ³¹³«®­£¤®¤¥­¢¢ªœž¥“›…ˆ”{}Žrv…dj}X_qIQh?Hi>Jg<Ed9Ba5@a5@a5@a5@a5@a5@a5@a5@c7Bi>JtPXŒpx©˜ ·±º»¸Á³¨¯˜}ƒ‡fl•y~—{or{V]lCLi@Ii=Hf:Ef:Ed8Cb6Ab6Aa5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@c6@c6@c6@c6@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@a5@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@e8Be9Dg<Eh=Fk@ImDMoFOpGPoFOoFOsJStLTvQXxSZ{U[~Y`}X_wRYtKTpGPnENk@Ih=Ff9Cc7Bd7Ab6Ac6@c6@c6@c6@c6@c6@c6@c6@a6?`7@_8C\;DZ=GW@KRCOMFRLIUIMXHPYFQ[DR[CR\CR\CR\CR\CR\CR\CR\CR\DR[DR[FQ[EPZGOXGNXIJVLIUNHQODPRBLT@KX=IZ;F\9E^7B_7Aa6Ba5@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@e8Bf:EjAJnENwS[…iq†œ‘š£›¡¦¤¤™ ¢–›—–…Œ˜‡œ“œ›Ž˜w}Žv|›Ž•œ–‹rxwS[jAJd8Cc7Bf:EqISŠjs ’˜¨ ©ª¨®¬¬µ­«±¬§«±«±³¯·¶³¼¶´º··À¸»Å¸»Â¸»Â¸ºÃ¶¶¿¶¶¿·¶¾¸ºÀ¹»Áº¾Æ¾ÂÊÀÆÍÂÆÌÆÊÐÇÊÎÊÌÏÊÍÐÍÏÑÍÒÒÎÓÓÑÔÔÔÖÕ×ØÖÚÚ×ÝÛØÞÛ×ÜÚ××ÖÕÑÐÏËÆÉÄ¿ÂÄ¿ÂÂÀÆÂÂÈ¿ÂÉÀÀɾÀɺ¼Å¸ºÃµ³¹³­°®¤¥°¦§°¦§¯¡£©™™¢™€‚“w{msˆgm[cqIQsKUqHQkBKd8Ce8Be8Be9De8Bb6Af:ElCLsKU`fœ‡Ž³«±ÃÂÌÉËÑÇÊÑÀ¼Ä®ž¡¤Ž®œ°žŸ¨’“‘tx‚]d^g€\dqHQi@Ih=Fh;Ef;De9De8Bd7Ac6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@e8Bg:Dg<ElAJmBKmBKmDMoFOrIRsKRtKTqHQrIRtLTuPWxSZ{V]Zaƒ^eƒ`f€[b|W^yT[vNVsJSnENj?Hj>Ik@Ii>Gf9Cd7Ac6@c6@c6@c6@c6@c6@a6?`7@_8B\;DZ>IVAKQDNNGSKJTHOYFPYFQ[DS]CR\CR\CR\CR\CR\CR\CR\CR\CR\CR\DR[DP[EPZFO[GNXJMWKJTNHQOFORCOVAKZ>I[;E]9D`8B`7@a6?c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@d7Ad8Cg<EkBKpHR{Xa†ms~‡˜–¢š£¦£¬¨§±¨ª³¦¥¯¤£­¤§´¤¨¸¤¡­ ”œœ–¤ž§£›¤v|uPWmDMmDMmDMrIR_fœŒ’¨¤¬¬«³¬¬²­­³¬ª°®©­²®¶¶´»·¶¾·¹¿·ºÁ¸¼Ä¹¾ÇºÁ˺Á˹½Å¹½Åº¾É»¿Ê»ÀɼÁʾÄËÀÆÍÃÆÍÂÆÌÄÈÎÇÊÎÆÊÐÉÌÏÌÎÐÍÏÑÏÑÓÓÔÕÔÓÒ×ÖÕÜÚ×ÞÛ×ÞÛ×ÙÙÖÔÓÒÎÎÎÈÅÈÈÅÈÅÄÉÂÄÊ¿Âɽ¿Å»¾Å¸»Â·¶¾µ²µ²¬®°¦§°¥¥²§§¯¢¢ªšš¡‹Œ’vz‹mpˆglˆekƒbh‚]d€[byT[nENf;Df:Ef:Eg<Ei<FkBKxSZŽsy›…‹¦•š²ª°ÂÀÇÐÒÕÔÖØÒÔ×ÉÉÏÀ¼Â¼³µ»±¯º°®·©¨¯œœ±žž»«®¶¤¨ty‚_e€[bXbvQXtKTi=Hg:De9Dg:De8Bc6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@c6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?h9Ck@InCLpENqIPrIRpENpENpHOsKRuMTwOVtLTwQW}W]}W]Y_[aƒ_dˆdi‰fl‰ej‡ch…afƒ]c|TZtLSqHQqIPrJQqFOnCLj>Ff9Cc6@d5?d5?d5?d5?c6@a8A_8B\<FZ>IUALQEPMHRJKWHOYFO[EQ\DS]CR\CR\CR\CR\CR\CR\CR\CR\CR\CR\CR\DR[DP[EPZFO[GNXJMWKJTNHQQEPRBLW?IZ=G\;D^9C`8Ba8Ac6@c6@d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?e6@e8Bh<Dk@IqIQzZa…jsŒy‚–ˆ‘— ¥¥°©­¸©®º©®º¦¯¾¤¯¾¤­¾¦ª¸¥¥²¥¡©¥¢«£ž¥“}ƒ€]c|W^^d…bhŠjp–€†¦ž¤¬«³¬®´¬®±«­³¯®³³±¸´³»·¶¾¸·¿·¹¿·ºÁ·¹¿·»Ã¸¼Ä»¿Ç¹½Å¹½Èº¾É¸½Æ¸¼Ä»¿Ç¼ÁʽÄÌ¿ÅÌÂÆÎÃÆÍÅÈÏÆÉÍÄÉÌÈÊÍÉÊËÌËÍÍËÌÏÌÌÓÒÑØ×ÖÙÚÕÜÚ×ÙÙÖÕÔÓÏÐÑÊÌÏÇÉÌÇÆËÄÄÊ¿ÁļÀƹ¼Ãµ¸¿µ²µ²­°³ª¬°¦§²¤¦²§§®¡¡¨••™}‰hmƒ_dƒ_dƒ_dƒ_d†ci„`ezTZnCLi=Eg:Dg<Ek@IuOUŒlrŸ‡®£ª³¯µ¶´ºº·ºÂÂÈÓÔÕÙÚØ×××ÎÐÓÆÆÉÅž¿Ä»ºÀ¶´½²¯ÊÀ¾ÖÓÓÓÎÎõ´ºªª»ª¬´¢¦¡‡‹‡djqHQsKR{U[]bvPVlAJg<Ee8Bd5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?e6@e6@e6@e6@d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?e6@k?GnFMsKRtLSuMTsKRsKRsKRsKRxRX|V\~X^[a‚^c†bgˆdi‡chˆdi‡eiŠhlŒloŽnqŽnqŽnqŒio†bg‚\b}U[{SYzTZySYvPVsKRoDMj?Hg;Ce6@d5?d5?b7@a8A_:D\<FX?HTCLPENLHSILVGOZFQ[DR[DS]CR\CR\CR\CR\CR\CR\CR\CR\CR\CR\CR\CR\CR\DP[EPZEPZGNXJMWKHTNGSREOTCLX?H\<E^:Ba9Aa8Ac6@d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?f7Ah<Dj?HqKQyY`‚gp‰u}‘ƒŒ™‘œ£ ¬§«¶©°º©²Á¦²À¤°À£¯¿¤¬¹¤«º¥¨²¦¤«¥Ÿ¥˜†Šu{“z“}€™„ˆ¦›¢ªª°¬°¸¬²¹¬²¸®²º°´¼´¶¿·¹Âº¼Å¹»Á·º¾·¶»´³¸µµ»´´ºµ·½´¶¼µµ¾·¹Â¶¸Á´¶¼·»Ã·½Ä¹ÀʼÁʾÄË¿ÂÉÃÅÎÄÆÌÄÄÊÄÃÅÈÅÈÈÅÅÉÆÆÍÈÈÏÎÍÔÔÔÖ×ÕÙÙÖ×ÖÕÔÓÒÏÎÐËÍÏÉËÎÄÆÉÀÀƽÀÄ»½Ã¶¸¾¶³¶´±´´®°³¬­²¨©°¥¥¯¢¢¬œœ¡‹‹Žnq{VZxPV}W]~X^~X^[`|V\rIOk@Ii=Ek?GoGN|V\ru¨—™³«®¹·½¼»Ãº¼ÂººÀÀÄÊÏÑÓ×ØÖÕ×ÖÐÑÒÇÈÉÉÄÄÇÄÁÈÀÀǾ½Äº·ËÁ¾ØÕÒÜÚØÛØÕÙÖÓÚÕÕÖÑÑŸ¸š}ˆekœ€„®˜™² Ÿƒ‡ŠgmxRXpDLf7Ad5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?e6@e6@e6@e6@d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?d5?e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@g8Bh;Bl@HrIOxRXxRXxRXxRXwQWySYySY}W]ƒ_dŒjn‘tv™|~–y{”vy’twŽnqjpkonp’ru•ux–vy•ww—wz•uxŽnqilŠfi…afƒ]c~V\xPVtKQpENk?Gf7Ac6@b7@a9A^:B\=GX@JSCMOGRMITILVGOZFQ[DR[BR]CR\CR\CR\CR\CR\CR\CR\CR\CR\CR\CR\CR\CR\CR\DP[EPZEOXGNXIJVLIROGRRCOWAJZ>F]<E`9Cb7@c7?d5?e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@f7Ag;Cl@HpHPwV_€dl‡qzŽ~ˆ––žš¥¤§³¨°½¨³Â§²Á¤°¾¤­¾£®½¤¬¹¦¨±¥¥«§Ÿ¥¡“–ŸŽ“ ’•¡“–¤—›§ž£©¨°«°¹­´¾­µÀ­´À¯¶À²¹Ã¶»Ä¹½È»¾Å»¿Ç¹¼Ã¶µº´²¸³°³²®´²°¶µ³º³±¸µ³º¶µ½²²¸´·¾µ»Âµ¼Æ¹½Å¼¿Æ½ÁÉ¿ÁÇÃÅËÄÄÊÃÁÅÄÁÄÈÂÄÊÇÇËÆÊËÉÊÏÏÏÒÒÒÔÔÔÓÒÑÑÏÍÍÌËÊËÌÈÉÊÄÄÊÁÀÅÀ¿Ä»º¿¶³¶´®°´¯²¶¯°³««²§§®¡¡«š™¨••Ÿ…†Žnq}X\{U[†bg‚]a|W[{SYuMTqFOlAJoCKvNTˆdg—{ª˜™´ª«»¶¹½½Ã½¿Å½½Ã½¼Á¿ÄÇÇÊÎÑÔÔÓÖÖÎÐÒÈÉÊÈÇÆÊÅÅËÉÇÌÆÅÊ¿ÌľÔÏÌÝÚÖßÜØßÜØßÜØÝÚ×ÒÍʼ«©¸§¦É¾¾ÍÈÈÊÁÀ»¬ª«••”vyxPVi=Ee6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@g8Bj>FoFLwOU€Z`[`Y_[aY_~X^~X^ƒ_d’tw£ŠŒ¬—š¯ž ±œŸ®™œ©“”¢†Š˜z}’ru‘pr•ux–xyœ~£ˆˆ¬––±Ÿ ±žž­——¨ŽŸ„„˜x{mqƒ_d|TZuMTsHQmAIe9Ab9Bb;E^=F[>HW@KRDMNGSKJTHLWGOZFQ[DR[CR\CR\CR\CR\CR\CR\CR\CR\CR\CR\CR\CR\CR\CR\CR\CR\DP[EPZGOXHMVJJUNHQREOTCLY>G\<F_;Ca9@c7?d7>e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@g8Bj>FpGPuR[|]gƒkuŠwƒ…‘˜“¡ ¬§«¹©°¿§°¿¥°¿¤­¾¤¬¹¥¬¶¦¨®§§­¥¡§¥›Ÿ¥™ž¥›Ÿ¥š§Ÿ¥©§­«®µ«²¼­µ¾¬´½­¶Â°¸Ã´»Å¶½Éº¿Ë¼ÁʼÁʹ½Å·¹¿³²·³°³²¯²²°¶´²¹³²º´´º´¶¼³³¹³µ»³¹¿³½Ã¸¾Å¹¼Ã½ÀľÀÃÀÂÈÅÅËÅÄÉÆÅÇÈÅÈÈÅÈÊÈÉÊÉÈÊËÌÍÌËÍÌËÐÎÏÍÈÈÊÈÉÉÆÉÇÅÉÃÁÅÁ½Ã¿½Ã¼¹¹¸²´µ®¯´«­´ª«²§§°¡¡«››©—˜§•–¥›ƒ“w{™ƒœ„‡—{‘txmp†bg[`|V\[`mpŸ…†®œ³««¹±±»¸¸½½À½¿Å¼¾Ä»½À½¿ÂÀÅÈÈÍÍËÑÒÊÍÐÈÉÊÉÉÉËËËÐÏÎÑÏÍÏÌÉÓÎËÓÐÌÙÙÓßÜØàÜÖàÜÖàÜÖÚØÕÖÑÎ×ÔÑÙÙÖÛÙÖÔÑÍÈ»¸½®¬±žž”vy{SYoCKf9@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@f7Af7Ae6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e8?e8?e8?e8?e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@e6@f7?f7?f7?f7?f7?f7?f7?f7?f7?f7?e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>f7?h9Cl@HtIR|TZƒ^b†bg‡ch‡ch‡ch„`e‡bfps¦‘´§ª¹¯°»±²¼²³¼²³¹«­±žž¨‘€˜x{™{{Ÿ§´¢ Á´´ÈÀÀËÁÂÊ¿¿Æ»¸À³³¸¥¥¬””›~€ŒhkY_zRXsJPjBIiAIb=G]=FY@ITCLREOMHRJJUHMVFPYFQ[DR[CR\CR\CR\CR\CR\CR\CR\CR\CR\CR\CR\CR\CR\CR\CR\CR\CQZDP[FPYGNXILVLIRPENSCMY@I]=F_;Ca9Ad8@d7>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>g8Bi<CmBKrKUxXa€dl†q{Œ~‡”‹”›—¢¢¢¯¦ªµ§¬¸¦«·¥ª¶¦©³¦¨±¦©°§©¯§¥«¨ ¦¨ £§ž£§Ÿ¢¨£§ª©®«®µª°·¬´¿«¶À®·Ã±¹Äµ¼Æ¸½É»¿Ê¼¾Ä»¾Å¸¼Ä¶¸¾µ³·´³¸´²¸µ´¹µµ»³µ»´¶¼³³¹²´º³¶½µ»Â´»À·½Äº½Ä½¿Â¿¿ÅÂÅÉÆÈËÈÈÎÉÉÌËÊÌËËÎËÊÌÊÉÈÉÆÉÊÈÉÊÅÈËÅÇÉÂÃÆ¿ÀÅÀÃÃÀÃÁ¾ÁÀ½À¾¹½¼¶¸¹²³µ¬®µªª±¢¢¯ŸŸ®žž®žž®žž®žž° £¯Ÿ¢¯Ÿ¢´§ª´§ª°¢¥®ž¡«šœ¦‘¡‹‹„†ƒ„¥­›™µ«©¸²±º´³ºµµ»º¼»¾Â»¾Â»½À¼¾Á¿ÄÇÄÇÊÃÉÊÄÇÊÈÉÊËÌÍÓÓÓ×ÖÕÙ×ÕÙÖÓÖÖÓÕÖÑ××ÑÜÜÖàÜÖàÜÖàÜÖÞÛ×ßÜØßÜØßÜØÝÛØÖÓÏÍÃÀÉ»·Å¶´»««¦‹glqEMj=Dh;Bf9@e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e8?g8Bi=Ek>Ek>Eg8@f7Ak<FpDLm>Hh9Cg8Bg8Bg8Be8?e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>f7?f7?f7?f7?e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>e6>f7?f7?f7?f7?f7?f7?f7?f7?f7?f7?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?f9@g:Ak>EpCJsHNyQW€[_‡chŠhlŠgmŒjnŒjnŒlopsŸƒ‡®œ¸¯±½·¹Àº½Á»½Áº»¿¶µ»¬ª³žž¬””¨Ž¦Œ«”’¶¤¢Å»¹ÍÊÊÐÏÎÐÏÎÓÎÎÑÏÍÑËÊÍÂÂƸ·¹¨§©‘‘’ru]buQVpKRnJReEN`DLYCLTDMOGRLIRIJVGNXEPZDP[DR[CR\CR\CR\CR\CR\CR\CR\CR\CR\CR\CR\CR\CR\CR\CR\CR\CR\CQZEPZGOXHMVKJTOGPSENXBK[?G_<Ea9Ac8Ae8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?f9@k?GpHOtQW|\eƒjr‰u}Š—Ž—š£££®¦©°¦©°§©¯§§°§©¯§©¯¨ª°¨§¬¨¤ª¨¤ª§¢¦§¢¦§¡¤ª§ª««±«®µ«±¸¬³½­´¾¯·À³ºÄ¶½Çº¾Éº¾Æ¹½Ã·¹¼µ¸¼µ´¹µ³º´´º³µ»´¶¼³µ»³µ»´´º³¶½³¹¿µ»Â·½Ä¸¾Å»¿ÇÀÀÆ¿ÁÄÄÆÉÆÉÍÇÊÎÊÌÏÌÍÎÍÎÏËÊÌÉÆÉÉÄÇÉÂÃÇ¿Âƽ¿À¸¸¿¶µÁ¸º¿·º¿¸¹¿·º¿·º¼µ¶¸¯±µ­­³¨¨¯ŸŸ®žž³¤¤¶­¬·¯¯¶®®º³´»¶¹¼¶¹½·º¼·ºº³´»²´»³¶¹±´¶­¯³¥§¯ž²¡ ³¥¤¸®¬¸±¯·±°¸²±¸·¶¹»¾º¾Äº½Á»¾Â¾ÁÅÁÃÅÀÂÄÃÄÅÅÆÇÊÌÎÕÖÔÛÛØÞÛ×ÝÛØÜÚ×ØÙÔÙÚÕÚÚÔÞÛ×àÜÖàÜÖàÜÖàÜÖàÜÖàÜÖÞÛ×ÙÕÏÎÈÁȼ¶Æº´ÌÄÁÅ»¹­—˜‰ehxOTrGMnCIi<Ce8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?f9@k?GnBJwNS{SYyQWoFLk>EoFLyQW{RWrIOrIOrIOoFLm@Gj=Dl?Fl?Fi<Cf7>e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?f7?f7?f7?f7?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?e8?g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7?i:An?FqFLtIOyQWY_ƒ^b†ae‰dhŒhkmqnpor’ru”vv—yz¡††­›œ·®­¾¸ºÁ¾ÁÃÀÃÂÀÁĽ¾Á·µ½¯®»¬ª¹©©º©¨¼­«Å»¸ÌËÊÒÔÓÔÖÕ××ÔØÕÑÕÕÒÔÑÎÏÉÅÍ¿ɾ»¾°¯¨Šjm}Y^uTZoQWhOUcKTYFORFNNISLKUINWFNYEPZDP[CR\CR\CR\CR\CR\CR\CR\CR\CR\CR\CR\CR\CR\CR\CR\CR\CR\CR\CQZEPZEOXGNXJJUMHRQEMUBKZ?H]=Da:Dc8Ad8@e8?f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>i:Am@GqIPvSY~`f…ms‹w“ƒŒ˜™ ¦£¥®¦ª²§«³¨¬´¨«µ©¬³¨«²©«®¨ª­ª©®¨¦ª§¢¦¨ £§¡¤ª§ªª¨¬««±¬®´­°·®´»°·Á´¸Ãµ¼Æ¸½Æ¸¼Ä¶¹½µ·ºµµ»µ³¹´´º´¶¹³³¹³³¹²´º²µ¼´·¾´·¾¶¹À·»Ãº¾Æ»½ÃÀ¿ÄÀÀÃÄÆÉÄÇÊÇÉÌÉÉÌËÌÍËÌÍÈÆÇÈÂÄÇÁÄſº½½³´º­­¹«ª»°°º²²¾µ·Àº½À»¿¿º¾½´¶¸®¯µ¨¨°  ±¡¡»°°¿¼¿Â¿ÂÁ¾Á¿ÂÂÀÄÃÁÅÃÀÃÁ¼¿¾¸ºÀ»¾Á¾ÁÁ¿Ã¾»¾¼µ¶º±°»°­º¯¬º°®¸¯®µ­ªµ¯®·µ³¸º½¸¼Âº¾Æ½ÀǽÁǾÁÄÁÂÃÃÄÅÄÆÉËÌÍÖ×ÕÞÛ×àÜÖàÜÖßÜØÝÛÕÜÚ×ÙÙÓÛÛÕÜÜÖÞÛ×ÞÛ×ÞÛ×àÜÖàÜÖßÜØÜØÒÎÈÁÈ»µÉ¼¶ÎÇÂÏÊǾ³³¥‹Œ‹gj~X[vKQnBGf7>f7>f7>f7>f7>g8?g8?f7>f7>f7>f7>f7>g8?l?FuJPZ^ˆcg‡ch€Z]V[ƒ^bŒhkŽmo‰ej‰dh†aeƒ^b~V\}TY…`d†ae{RWmAFh9@h9@h;Bi<Cj>CoBIm@Gh9@f7>f7>f7>f7>f7>f7>f7>f7>f7>g7>g7>g7>g7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>g8?g8?g8?g8?g8?g8?g8?g8?g8?g8?f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>g8?l=DsHN{RW€Z]†aeŽnq•x|˜{}•ux’tt“sv‘qt’tu™}¡‰‰¤‹Š¦ŽŽª••±žž¶©©½·¹Á¿ÃÂÁÃÅÆÇÄ¿¿Å¿¾Äº¸Á¶³Àµ²Äº¸ÉÂÀÍËÉÒÓÑÓØÕØÚÖÚÚ×ÜÚ×ÛÙÖØÖÓÕÏËÏÅÂʽºÁ´±®œš“w{cfwZ^nU[iQZbQXYKTPHQMITJMWHOYEOXDP[DR[CR\CR\CQZCQZCQZCQZCQZCQZCQZCQZCQZCQZCQZCQZCQZCQZCQZCQZCQZCQZFPYGNXILSLIRPGPUDLZAI]=F`<Db:Ae9Ae8?f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>g8?k<CmBHsKQyX^‚el†qx|„’‡š”  ©¤©²¦®¹¦¯¾§®¸©­¸©­µª­´ª¬²©«±©¨­¨£§§¡¤¨ £§¡¤§¡£©¤¨«¦©ª¨¬­­³¯±·²µ¼³¶½¶ºÂ¸¼Ä¶¼Ãµ»Áµ¸¿µ·½´¶¼³µ¸²´·²µ¹±´¸²µ¼²µ¼´·»µ¸¿¶ºÂ»¾Å¼¿Ã¾¾ÄÂÀÆÄÄÇÇÇÊÈÊÌÉÊËÊËÌÈÉÊÈÅÅÇÂÅÄÁÄÅÂÅÁ»¾»±²¶©©µ§¦»°°¼µ¶¾¸º¿º½Ã¿ÅÄÂÈÁ»¾¼²³·ªª¶§§·©¨Á¸ºÅÅÈÇÉÌÆÅÊÇÅÉÇÅÉÅÅÈÃÀÀý¿Â¿ÂÃÀÀÄÁÄÃÀÿ½¾Á¾¾Ã»»Â¹¸À¸¸Á¼¿ºµµ¶°¯¶±±¸µµ·º¾·½Ã»ÁȼÂɾÄȾÁÄ¿ÁÃÂÅÈÇÉËÌÍÎÕÖÔÝÛØàÜÖàÜÖàÜÖßÜØÜÚ×ØØÒ×ØÓ××Ñ×ÔÍÚ×ÓßÛÕàÜÖàÜÖßÜØÚ×ÓÎÈÁɼ¶Ê½·ÎÇÂË¿¹¼­«®˜—›}~Šfi}SVnBGg8?f7>f7>f7>g8?i:Ah9@f7>f7>f7>f7>f7>f7>h9@qFLƒ[aŠhl‘qt’ru”tw™{~£‡‹¡ƒ„—y|–vy’ru‘qtnp–vyŸ„ ƒ…”tw„_cvMSwNS€X^‚\b…`dŒlo…afqDKg8?f7>f7>f7>f7>f7>f7>f7>f7>g8?g8?g8?g8?f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>f7>h8?h8?h8?h8?h8?h8?h8?h8?h8?h8?g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>h8?k<CqFL|SXƒ]`ˆdg•wx¢Š¦‘”¨’“¦‘¡‡ˆš}˜z{„†ª”•®žž°¡¡³¤¤´§§µ§¦·¬©½¶·¿ÁÄÃÆÉÃÆÉÅÄÃÈÅÂǾ½Äº¸Äº¸ÉÁ¾ÌÊÈÐÑÏÓÖÓÖÙÖÚÛÖÝÝ×ÝÝ×ÜÜÖÛÛÕÙÖÒÓÍÉËÀ»Ä¶²·¥£ Š‰Šqs}bhr\bkZabU\ZQYQNWMOXJQ[IQZFRZDP[CR\CR\CR\CQZCQZCQZCQZCQZCQZCQZCQZCQZCQZCQZCQZCQZCQZCQZCQZCQZCQZDPXFNYHMVKJTOGPSENWBI[?G]=Db<Bc:@e9>f7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>i:Am>EqHNvRW}\b‚io‰t~Ž‹•˜šš¥¢¦±§¯¼¨³¿¨±À©±¾¬°»«¯·«®µ«­³ª¬²«ª¯ª¨®ª¨¬©§«¨¢¥¨ £¨ £«¦©«¨«®«®°¯´²²¸´¶¼¶¹À¸¼Ä¶¼Ãµ»Á¶¹À´¶¼³µ»³µ»´¸À²·À²·À³¹À´ºÁ¶¼Ã¸¼Ä»¾Å¾ÁÈÂÂÈÄÆÉËÌÍÏÐÑÎÐÒÎÏÐÊÍÐËÌÍÉÈÊÅÅÈÄÆÉÅÅËÃÀþ·¸¸­­¶©©¹®®½¶·À»¾À·¹Ã½ÀÉÄÇÇ¿ÂÁ¹¹½°°¾°²Á·¸Ç¿ÂÈÈËÉËÎÉÉÌÉÉÌÇÅÉÅÂÅ¿ÂÄ¿ÂÅÂÅÄÁÄÅÄÆÃÀÃÀ½½Å¿ÁÆ¿ÀÊÃÄÊÃÄÈÇÉÃÀÀ»µ´¸³³¹¸º¸¼Â¸¾Å¼ÂɼÃȾÄȾÁÄÂÂÅÃÆÊÈÊÌËÍÌÔÕÓÜÚ×ÞÛ×ßÜØÞÜÖàÜÖÞÛ×ÜÚÔÙÙÓ××ÑÔÎÈÔÎÈÞÚÔàÜÖàÜÖßÜØÚ×ÓÑËÄÌ¿¹Î¼ÎÇŸµ¶¤ ¯™˜ „ˆnpV[pAHi9@g7>g7>g7>g7>h8?g7>g7>g7>g7>g7>g7>h9@n?FvKQƒ]`‘prŸ‚„£‡‹¢…‡¥‹Œ©‘‘«’”¦Œ¥ˆŠ¡„†Ÿ‚„ ‚ƒ¥ŠŠ«••­——§ŽŸ‚„˜z}›€†¥’§’–¨“—©–œŸ†‹€X^m>Ei9@i9?g7>g7>i9@i:Ai9@h8>h8?h8?i9?h8?g7>g7>h8?h8?g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>g7>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>l<Bn?FsGLyQT‚\_ln ‡‰«šœ®ž¡¯Ÿ¢°¢¥®Ÿ§‘’¦­œž´§ªµ¬®·®°·®°º³´¼µ¶¼µ¶¿½¾ÀÅÈÂÈÌÇÊÍÇÉËËÌÍÊÈÆÈÁ¿É¿¼Ê¿ÌÉÆÐÐÍÕÕÒØÙ×ÜÚ×ÞÛ×ßÜØßÜØÝÝ×ÜÙÕÖÑÎÎþŷ³»®«°Ÿž›‰Š‡ruyhmnbgg^fa\cXWaQV_NU]KU^KW_GS^DS]CR\CR\CQZCQZDR[CQZCQZDR[CQZCQZCQZCQZCQZCQZCQZCQZCQZCQZCQZCQZEPZEOXGNXJJUMIQQFOUBKZAI^>Ga<Cd;Ad9?g8?h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>i9?k<CnCIrLRxU[bi…ox‰yƒ‘†–’ Ÿ«¨«¸ª²¿«´Ã­´À¬±½­°º¬°¸¬¯¶«¯·©®·«¯·ª®¶ª¬²ª¨¬©£¦¨¢¤©£¥¬§ª¬§ª®©¬°¬²²°´´´º¶¹À¶ºÂ¶ºÂ´ºÁµ¹Á´¸À´¹Â¶¼Ã¶½Ç¶½Ç¶¼Ã¹¿Æ»ÁÈ»ÀɼÂÈÀÄÊÈÊÍÍÎÏÑÒÓÓÕÔÓÕÔÒÓÔÍÏÑËÍÏÉÈÊÅÅÈÅÅÈÃÅËÂÁÉ¿»Á»²´¸®¯·®­»³³Á¼¿Å¿ÁÈÂÄÎÍÌÏÌÌÊÄÃú¹Ä»ºÈ¾¿ÊÄÃËÉÊÉÊËËÌÍÊÊÍÇÆÈÃÀÃÄ¿ÂÆÄÈÆÆÉÇÈÉÆÈËÅÄÉÄÁÄÄÁÁÊÄÃÌÊËÍÌËÍÍÐÆÅǽººº··»º¼¹½Ã¶¼ÂºÀÇ»ÁǾÄÈÂÆÌÇÉÌÉËÎÎÏÐÐÐÐÖÕÔÛÙÖÛØÔÛÛÕÝÚÖàÜÖàÜÖÞÛ×ÜÚÔÙ×ÑÔÎÈ×ÑËÞÛ×àÜÖàÜÖßÜØÜÙÕÕÏÉÏÈÀÑÉÃÌÁ¾À²®´¡žª“‘œ‚ƒnp~VYpDIk<Ci9?h8>h8>h8>i9?k;Ak;Aj:@i:Ak<Cm@DsGL„^aŽmoœ~­——±œœ°±žž´¢£´¡¡³  ² ¡²ŸŸ°››¯™™­••®˜˜³žµ £²ŸŸ² °Ÿ¡¶©¬º¯²º°´¸­°·­±±£©™}‚Z^uLRsGLl=Dm@DxOT‚\_wNSn?Fm=CoBFsGLrCJk>Bk;Aj;Bj:@h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>l<Bm>Em>EoBFn?Fn?FuINƒ]`–x{©”—® £²¥©³ª¬¶¬°´ª®±¤§²¤¦´«­¹±´ºµ¸º·º»¸¸¼¼¿¾¾Á¿¿ÂÀÂÅÀÆÊÄÊÎÈÍÐÊÐÑÍÒÒÎÎÎÊÇÄÉÂÀËÄ¿ËÅÁÎÊÄÒÏËÔÒÏ×ÔÐÛ×ÑÞÚÔßÜØÞÜÖÝÚÖÙÕÏÓËÅËÀ½Ç¼·Á¹¶µ«©œ‘‘Š‚€x{xtznntcfm[`iW^fT_fP\dLZcIXbFU_FU_FT]GU^FT]ES\FT]GU^ES\DR[CQZCQZCQZCQZCQZCQZCQZCQZCQZCQZCOZEOXFNYILVLIROGRSENXCJ[?G_>Db<Bd;Ag8?g8?h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>k;Am>EqFLtPU{[b€en…qyŒ~‡“Š“š•Ÿ££®ª®¹­µÂ¬´Á¬±À¬³¿­´À¬³¿ª²¿©²¾ª±»ª±¹«¯·ª­´«©¯ª¤§ª¢¥ª¤¦ª¤¦¬¦¨­§©°«¯²®´´²¶µ´¹¶µ½¶¸Á´¸ÀµºÃµ¼Æ·¾Æ¸¿É¹ÀÊ»ÀɼÁʽÂË¿ÅÌÂÆÌÆÉÍÍÎÏÑÑÑÑÓÒÏÔÑÑÓÒÑÒÓÎÐÒÌËÍÊËÌÉÊËÈÉÊÆÅÊÃÂÊÀ¾Ä¾¹½¾¸º½µµ¼µ³¿¹¸ÆÁÄÏÎÍÕÔÓ×ÕÓÐÎÌÊÁÀƽ¼È¾¼ÉÀ¿ÉÆÆÊÈÉÊËÌÊËÌÇÈÉÄÁÄÄÁÄÇÅÉÇÇÊÈÉÊÉËÎÈÊÍÉÉÌÈÆÇÉÄÄÐÍÍÑÑÑÏÐÑÊËÌÁÀ¾½¿½¿Â¹¼À·½Ã·½Ã»¿Å¾ÄÊÄÉÌËÍÐÏÑÓÕÕÕÖÕÔØÖÔÚØÕÚ×ÓÙÙÓÜÜÖàÜÖáÝ×àÝÙÝÝ×ÜÚÔØÔÎÜØÒàÜÖàÜÖàÜÖàÜÖÞÛ×ØÔÎÐÊÃÌľŷ³¹¨¦®˜—¢‰ˆ—yzil‚Z]~TW{QTo?Eh8>h8>j:@qBIxOTyORwLR|RU‚\_Œhk–xx©‘‘¶¤¥Ä··Ê½½ËÀÀȾ¼É¿½È¿¾È½ºÄ··ÄµµÄ¶¸Àµµ½®®·¦¥·¥¦º©¨¸¨¨¹©©»®®½°³¾¶¹¿¹¼¾¸»»µ¸½¸¼º±¶¯¡§¢Œ”w{†aeyPUƒ^bš…‰¢‘–˜~‚Y\wLR„_c’v{Œkp}U[zRX~TWsGLk;Ah8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>i9?h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>j:@{QTlo‡bf‡ch€Z]uINUXnp¡‹‹­ °£§´©¬´«­µ­°¶®±¶®±¶®±¹±´ºµ¸º¹»º¼¿½¿Â¿ÁÄ¿ÃÉÂÆÌÃÆÊÂÉËÇÎÐÉÐÒËÒÔÎÓÓÎÎÎÌÉÆÌÅÃÎÄÁÍÃÀÍÆÁÏÉÃÐÊÄÐÊÃÒÌÅÙÓÍÝÚÖßÜØÞÜÖÝÙÓØÔÎÕÐÍÓÎËÐÍÉÉÇļ¹¶°««ª§§¢¡£‘“•|„krwblr\gnYdkS_gP^gKYbKYbKYbKW_HV_GU^HV_JV^GU^DR[ES\CQZCQZCQZCQZCQZCQZCQZCQZCQZCQZDPXEOXGNXJJUMIQQFOUDLZAI]?E`=Cc;Ad9?g8?i9?h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>l<BnBGsJPuTZ}]f‚ir†s|ˆ–Ž™ š£¦¦¯ª¯»­´À®µÁ¬´Á®µÁ­µÂ¬´Áª±»©°º©±¼«²¾«¯º«­³«©­ª¤§ª¢¥© ¢ª¡£ª¡£¬£¥¯¥©°¨«°ª­²®´²²¸³µ»´·¾³ºÂµ¼Æ·¾Æ¹ÀʼÁʽÂ˾ÁÈÀÆÌÃÉÍÉÌÏÐÑÒÓÓÓÑÓÒÎÑÑÍÐÐÌÎÐËÐÐÎÏÐÎÏÐÎÏÐÌÌÏÉÉÌÅÅËÁÀÅÀ¿ÄÂÀÄ¿ÂÁº»Ã»»ËÆÉ×ÕÓÛÙÖÚØÕÔÒÐÏÊÊËÂÁÊÁÀÉÀ¿ÊÄÃÊÄÃÉÈÇÉÈÊÈÉÊÇÂÆÄ¿ÂÅÂÅÆÄÅÆÈÊÊËÌËËÎËËÎÊÉËÊÅÅÎÍÌÒÒÒÏÐÑÊÌÎÆÈÊÃÆÊÀÆʼ¿Æ¹½Ã¹½Ã»ÀÿÅËÃÆÍÌÎÐÑÓÒ×××ÙÙÖÙÙÖÜÚ×ÚÛÖÛÜ×ÝÝ×ßÝÚáÞÚàÝÙßÜØßÜØÝÝ×àÝÙáÝ×áÝ×áÝ×áÝ×ÞÛ×ÚÖÐÍÅ¿Ç»µ¾¯ª´¡žª‘¡„„”tw‰df…`d‘os‹gjsGLk;Al<BrEI„^aps–xy–x{™}¥±Ÿ ½®®ÊÀ¾ÐÍÍÒÐÎÔÏÌÑÎËÑÏÍÓÑÏÐÎÌÎËÈÌÉÉÌÇÇÎÉÉÍÈÈËÃÃÊ¿¿É¾¾ÌÁÁɾ¾Ä¹¹Å¼¾Á¸ºÁ»¾Á¼ÀÀ½À¾¹½Â¿ÂÁ½Ã¹³¹µª­®™œ£‹‹£‡‹©™œ«£©ª¨®¨ž¢œ‡‹‘tx¡•¥Ÿ¨ —Ÿ™‡‹—‚†•|„_cqEJk<Ck;Ai9?h8>h8>h8>h8>j:@l<Bk;Ah8>h8>h8>h8>h8>h8>h8>j:@k;Ai9?h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>h8>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=l;@UXª—­Ÿ¥ªœŸ Šps“svœƒ…©–™¯¡£±§¨³ª¬´¬¬¶®±µ°³·³¹¹µ»º·º¹·»ºº½½¿Â½ÁǾÄÊÂÈÌÃÊÏÈÍÐÈÎÒÊÑÓÍÓÔÌÓÒÏÐÑÏÎÍÏÌÉÏÌÉÐËÈÏÈÃÑÊÈÒÍÊÐËÈÐÊÄÎÇ¿ÒËÃÚÔÎÞÚÔßÜØÝÛÕÞÛ×ÝÚÖÛÙÖÚØÕÕÖÑÒÑÐÌÍËÈÊÉÂÅÅ·¼¼¡§¨†Œt|‚jtz`krZelUaiN\eN\eNZbMYaLX`KW_IU]HV_FT]ES\HV_HV_FT]FT]DR[CQZCQZCQZCQZCQZCQZCOZDOYFNYHLTKJTNHQRFNWCKZAG^>Da<Cd;@f:?g8?i9?i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=k:?m?BpDItKPxU[}`g‚jsŠu‘ƒš’£ž¨§©²«°¼­´À­´À®³Â­µÂ­µÂ«´À«³¾­´À«³À«²¾«®µ«­³¬©¬«¦©© ¢ª ¡¬ž «Ÿ¬ž ¬ž «  ¯¥©¯¬¬±¯³²²¸°µ¾³ºÂ³»Á·½Ä¹ÀʼÁʾÁÈÀÄÊÇÊÍËÍÏÐÑÒÒÓÔÒÓÔÎÑÑÌÏÏÌÍÎÌÍÎÏÐÑÏÐÑÎÎÑÎÏÐÌËÍÇÉÌÄÆÌÃÅËÄÄÊÄÄÇÃÂÄÇÅÆÐÍÍÚØÖÝÛØÙÚÕÖ×ÒÔÕÓÑÎÎËÄÂËÁ¿È¿¾ÈÀÀÈÀÀÇÅÃÈÅÅÆÀÂÃÀÀÃÀÀÄÁÄÅÆÇÅÈËËÌÍÌÍÎËÌÍÈÈÈÌÉÉÌÍÎÊËÌÇÈÉÃÈÈÄÉÉÂÇÊ¿ÃÉ»ÁǺÁüÂÆ¿ÅÉÃÆÊÇÊÍÏÐÑÕÕÕÖ×ÕÖ×ÕÚÚ×ÛÜÚÖØ×ÑÔÔÔ×ÔÖ×ÕÕÖÔÒÔÓÑÖÓÜÝØààÚáÝ×áÝ×âÞØáÝ×ßÛÕØÒÎʾ¸¼®ª¶¤¢´ž«‘€€”ttmnnpŸ‚„˜x{}SVvJOƒ[^•tv¯–•¾¬ªÃ´²»ª©¹ªª³¨«º±³ËÆÉÕÕÕÖ×ÕØÖÓÖÖÐ×ÕÒÔÔÑÒÓÑÏÏÌÐÏÎÐÏÎÌËÊÎËËÐÎÌÌËÊËÉÇÅÄÆËÈÈÏÊÊÎËËÍÊÊÊÂÂËÃÃËÉÊÈÅÈÈÅÈÈÆÊÊÉËÇÅÉÇÁÃÅÀÃýÀ¿¹»¹²³±«­¬¬¯©¨­¦¤ª®©­³±µ±°µ¨¨® œ¤•›š‘qt[^WZvKQoADk:?j9>i8=i8=n>D}QTsFJpBEm=Ci8=i8=j9>k:?k:?k:?m<Am<Aj9>j9>j9>i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=i8=j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>l;@yOR“uu·²¶½¼Ä´°¶¨—™¢ŒŒ§””­Ÿ¡±¤§²¨©²ªª³««µ¯±¸µ¸¹¶¹¸¸¾ººÀ»½Àº¾Ä¼ÀƼÄÊ¿ÇÍÅËÏÉÎÑËÑÒÍÒÕÎÓÓÍÓÑÐÓÓÏÑÐÒÒÒÑÐÏÓÑÎÔÑÍÔÐÊÕÒÏÖÓÐÔÑÍÓÏÉÐÊÃÐÈ¿ÓÍÆÚ×ÐÞÛ×ßÜØßÜØßÜØÞÜÙÜÜÖÛÛÕÚÛÙÕÖÔÏÐÎÅÊÇ¿Å󸸢§§‘˜š|ƒˆgrw]hoVbjS_gQ]eQ^dP\dP\dQ]eO[cLX`KW_IW`JXaMYaMYaKW_GU^ES\DR[CQZDR[CQZCQZCOZDPXEOXGNXILSLIRPGOTDMZBK]@G`=Cd<Be:@g:>i9?j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j<?nAErFKuORyY_~bj…oxŒ{„•†’›“ž¤ «§ª¶ª±»«³À«´ÀªµÁ­µÀ­´¾®µ¿¯¶Â®³Â¬³¿ª±»«®µ¬¬²¬ª®«¦©ª ¡ªª››©šš§——ª››«  ®§¨¯¬¯¯¯²¯³¹°·¿¯·Â³ºÄµ¼Äº¿È¾ÁÈÃÆÊÆÉÌËÍÏÍÎÏÏÏÒÏÐÑÌÏÏËÎÎÌÎÐÌÎÐÍÎÏÍÎÏËÌÍÍÍÐÍÎÏËËÎÇÉÌÂÆÌÄÆÉÄÆÉÅÅÈÊÉËÔÓÒÚØÖÙÚÕØÙÔÕÖÔÖÖÓÑÐÏÌÉÆÊÁÀÉÀ¿ËÄÂÇ¿¿ÈÂÁÅ¿¾Ã¼ºÃ¾¾Á¾¾ÂÀÁÀÁÂÂÇÊÉÊËËÌÍËÌÍÊËÌÈÉÊÄÄÄÁÀÂÀ¿ÁÀÁÂÀÅÅ¿ÄÄÂÅÉ¿Å˼ÂƽÂÅ»ÁžÁÅÂÇÊÈÊÌÍÏÑÒÔÓÔÖÕÖØ×ÑÔÔ¿ÆȼÃÈÂÈɾÅǵ¼Á³º¿ÂÈÉÖØÔÞßÚáßÜááÛãáÛâÞØÜÖÐÓÌÇÅ·³¸¦¢µŸž¯˜–¥‹‰€¢‡‡§‘‘¦®™œ¨‘–xx™{{°š™Ê¹·ÔÊÇÙÒÍÖÏÊÎþù·»³¶Ä¿ÃÔÓÕÙÚØÛÜ×ÙÙÓÛÛÕ××ÑÕÕÒÐÑÏÎÏÍÏÐÎÑÑÑÍÍÍÍÌËÐÏÎÍÌËÆÅÄÀÁÂÆÅÄÈÈËÈÉÊÊËÌËÊÉÏÍËÒÑÐÓÑÒÓÓÓÔÔÔÔÔÔÒÒÒÎÎÎÉÈÊÊÉËÇÅƾ¼½´´·­°´«­³ª¬²·¹¼¼¼¿²´·¨ª°žž§šš£š”š™‡‹–„ˆ–…ŠquzPSn@Ci;>j9>k:?n@C~UW[^„_awNPqDHsEHwJNxLQrEIm?BoADoADm?Bk=@l;@k:?j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>j9>k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k:?n@CvIM”vw¼»À¾ÁÈ°¨«¨–—«™š® ¢¯¢¥²§§±©©³¬­¶±´¹·¾¹·»º¹¾¹»ÁºÀƼÂƼÄʾÈËÃÊÏÉÎÑÌÑÑÎÓÓÐÒÔÑÔÔÏÒÒÎÑÑÒÔÓÔÕÓÖÖÓØÖÓØÕÑÙÖÒÙ×ÔÙ×ÕØÖÓÖÓÏÕÑËÓÌÇÒÌÅÕÏÉÙÓÍÛ×ÑÚÚÔÚÚÔÛÛÕÛÜ×ÛÜ×ÙÚØÑÒÐÄƽ¿¹¼¹²µµ«±¯Ÿ¤¤ˆ‘rz€gqw_jq[fmXdlVahVbjWbiZelYdkWbiQ]eP\dQ]eP\dS_gQ^dP\dMYaLX`IW`HV_DR[CQZCQZCOZDPXEOXGLUJJSMIQQFOUDL[BH^@Fa=Be<Bh;?h:=j9>k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<l:=m;>k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<l<?oADsILuPT{[aemˆr{|…•‰‘›•ž¡ ª¥©´¨±½©²¾©²¾­µÀ¬´¿­µÂ­µÂ­´Ãª²¿ª±»«­³­«²¬«°¬§ª«¢¤ªœžª››¦––¦”•¨˜˜«œœ«¡¢®§¨®¬°®±µ¬´½¬·Á±¹Âµ¼Ä¸¾Å½ÁÉ¿ÅËÂÆÌÇÉÌÊËÌËËÎËÌÍÉËÍÊÌÎÈËÎÇÊÍÉËÎÉÊËÇÉÌËÌÍÌÌÏÌÍÎÇÉÌÃÆÊÇÉÌÇÉÌÄÇÊÌÍÎÔÓÒØØÕÖ×ÒÔÕÓÒÓÑÑÐÏÑÐÏÏÎÍÍÆÄËÄÂËÅÄÉÂÀÈ¿¾Ä¼¹Á¹¶¿·´¾¸·¿½¾¿ÁÃÀÅÈÃÆÊÆÈËÈÉÊÇÉËÄÆÈÁÀ¿¾¼º¼»º¾¾ÁÀÁÂÂÄÆÂÅÈ¿ÅɽÂżÁļÁĽÂÅÀÅÈÄÉÌÊÏÒÏÔÔÓÖÖÏÔÔ¾Ä˵»Âµ¼Áµ¼Á«²·Ÿ§°¢ª°¹¿ÃÌÎÍÕ×ÓÚÛÖÜÝØßßÙàÞØÛÕÏÏſĵ°¸¥¢·¡ ³¬–•®››¹«­¿¶µÀ¶´¼±±º­­¸©©Å¸µÔÌÉÜØÒàÝÖáÛÕßÙÓÚÓÎÔÎÊÎËÈÔÏÏÚÙØßàÛßßÙÞÞØ×ØÓÖÖÓ××ÔÓÔÒÏÐÎÑÒÐÐÑÏÏÐÎÎÏÍÐÐÐÈÊÉ¿Áý¾¿ÃÄÅÈÈÈÈÈÈÈÇÆÉÈÇÌËÊÐÑÏÓÓÓÔÔÔÕÕÕÒÒÒÏÏÒÌËÍÊËÉÈÈÈÂÁý½À··½°³·«¯µ«®²¶¸¾¸¸¾¯¯µ £ªž¥œš¡™˜ ™—ž••ž–“œ—†‹„_czPSvJOvIMvJMxPS…ad‘uy’y{qr‘ss˜{}¥ŒŽ ƒ…†abxKO€VW€WYzNQsEHp?Dn=Bm<Am;>m;>l:=k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<l:=l:=l:=l:=l:=l:=l:=l:=l:=l:=k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<l<?xNQ©—˜½¼Á±¨ªª—š©—˜«››®ŸŸ® ¢°£¦´®±·´·¹·»¸º½·º¾¸¾Ä»ÂʼÆ̾ÈËÃËÎÇÍÎËÐÐÎÑÑÒÓÔÓÔÕÓÔÕÓÕÔÒÕÒÓÕÑÖÖÓÙ×ÔÛÙÖÚÚÔÛÙÖÙÙÓÛÙÖÙ×Ô×ÔÐ×ÕÒØÕÑ×ÓÍÕÏÉÏÉÂÏÉÂÐÌÆÓÐÌÖ×ÒÚÛÙÛÛØÕÖÔÊËÉÄÆÂÃÆÿÄÁ¹¾»°µ²¤ª¨•›œ†z†kv{hszbmt`krbmtblrbmtbmt`kr`kr\gnYdkYdk\gnZelYdkVahUaiR^fO[cIW`FT]CQZCQZCOWEOXGNVHLTLIRPHQSFMYCI^AH`?De<Ag;@h:=i9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<l:=l:=j:=k9<k9<n<?o=@m;>k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<n=BpCGuKNvSY|\c‚gp‡ry}‡”‰’™”žŸ ¬¤©µ§¯º¬³¿¬´Á«³Àª²¿ª³Â©±Á©±¾ª¬µª¤ªª ¤¨ £ª ¤¨›ž§˜˜§˜˜§•–¦‘”¤’“§•–ª¬£¥®«®®®´«°¹«´À®·Ã³ºÂµ¼Äº¿È½ÁÉ»ÁÇÀÂÈÄÃÅÅÅÈÄÄÇÃÆÊÃÆÊÂÅÉÃÅÈÄÆÉÆÆÉÃÆÊÇÉÌÊÊÍÉËÎÆÉÌÅÈËÄÉÌÄÇËÈÊÌËÌÍÏÐÑÒÒÒÑÒÐÐÑÏÐÑÏÐÏÎÒÍÍÒÐÎÐÍÍÏÊÊÌÊÈÉÆÃÈÀÀÅ»¼¿¶µ½³±»²±¼¶µ¼º¸½¿Â½ÀĽÁǾÁžÀÿ¿Â¿½¾»¶¶»¶¶»»»¿ÁÿÄÄ¿ÂƽžÁÅÀÃÆÀÄÊÀÄÊÁÇËÂÈÌÉÎÑÑÖÙÒÕØÁÅ͸¾Åµ¼Á¹¿Ãµ¼Á­´¶ ¨®£«±µ»¿ÀÅÅÌÏÌÏÐÎÓÔÒØÙÔ××Ñ×ÔÍÑÊÂȹ´»©¥¼«©½¯®»°°À»¾ÇÄÄÐÎÌÓÐÍÎËÈÊÇÇÑÌÌ×ÕÓÞÛ×âßÛáßÙâßØáÞ×ÞÛÔÜØÒÛ×ÑÛÙÖßÝÚààÚàÞØÜÚÔØØÒØØÕ××ÔÕÕÒÏÐÎÑÑÎÎÏÍÊËÉÉÊÈÈÊÉ¿Äĺ¿¿º¼¾½¾¿ÀÁÂÂÂÂÀÁÂÄÄÄÉÈÇÍÌËÏÏÏÐÐÐÐÐÐÐÐÐÎÍÏÎÎÎËÌÊÈÈÅÂÁû»¾¶¸º®±µ¨¬²¨¬²®²¸®°¶¨«¯ž¡¨š¤™¥šž¦—œ¥”˜£––ŸšŽ“”{€–‚‡”|‚‘uy“~‚“‚‡”‡Ž–”›“–¦œ ²¬¯¿»ÁÿŸ­°œhi›{{œ||’qp‚Y[tGHrBErAFo>Co>Cm<Al:=l:=k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<m9<m9<m9<m9<m9<m9<m9<m9<m9<m9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<l:=p@Cp@C‡bc¯¤§ªš£¡‹‹©”—­›œ¬±¤§µ¯²¶³¶·¶¸·¹¼¹¿Ã¼ÂÉ»ÃÉ¿ÆËÃÊÌÈÍÐÊÏÏÏÑÓÐÒÔÏÒÒÕÕÕÒÔÓÓÖÓÓ×ÑÓÕÑÖÖÓÚÚÔÛÛÕÛÛÕÛÛÕÚÚÔÚÚÔÚÚÔÙÖÒÙ×ÔØÖÓ×ÕÒÓÐÌÏÈÃËÄ¿ÊľÏÌÈÐÑÌÕÖÔÖÖÓÎÎËÊÌÈÌÎÊËÎËÊÏÌÇÌɼ¿´º¸«±¯Ÿ¤¤–˜ƒ‹Ž{‚‡s{mx}kv{lw|ozny~mx}kv{fqvdntdovcouams`kr_jq^jp]hoVbjM[dJXaFT]FT]EQYDPXEOXGLUJLRMIQQFOVEM[BH_?Ec>Bf<?h;?j:=j:=k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<p>ArDGtFIqCFo?Bn<?n<?q?Bm;>k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<m;>p?DrEItKQxU[~^gƒhq‡ryŽ}…•ˆ’™”žŸŸª¤¨³©®½«²Á©²Á§²¾§¯¼©°¼©¬¶§¡§£’”œ††Ÿ‰‰ ‹‹‡‡œ††¡‰‰¢ŒŒ¡‰‰ž††£§•–ªŸŸ«£¦¬ª®ª¬²«¯º¬´¿¯¶¾±¹Â¶½Ç·½Ä¹¿Æ¹¿Å¾½ÂÀ¾Â½½Ã¾ÁžÁžÀü¾Á¿ÁÄÂÄÇÀÄÊÃÆÊÆÈËÆÈËÄÇËÂÆÌÃÆÊÃÆÊÃÅÈÇÈÉÇÇÊÉÉÉÌÌÌÍËÉÌÊÈÍËÉÐÍÊÒÏÏÒÏÏÐÎÌÍËÉÈÅÂÈ¿¾Æ¼½ÂººÀ¸¸»°°¶¬ª¶­¬·´´¶¸»¶ºÀ¶¹½¶µ·¹¶¶»¶¶ºµµ»¶¶½¼¾½ÀþÁÄ¿ÁĽÀľÁÅ¿ÄÇÀÄÊÀÆ̾ÈËÂÉËÍÒÕÑÖÙÈËϾÁȹ¿ÅºÀĽÂŹÀµ»¿­³·±¶¹¹¾Á¿ÁÃÄÆÅÊÊÊÐÐÍÑÒÍÔÒÌÔÑÊÓÍÉÑÇÁÍ¿»Ç¾½ËÅÄËÈÈÎÎÎÎÍÌÓÐÍ×ÕÓÖÔÒ×ÕÒÖÕÔÙÙÖÞßÚààÚáßÙâßÛàÞØÞÜÖÝÛÕÝÛÕÝÛÕÝÝ×ßßÙßÜØÝÛÕÛÛÕÙ×ÔÕÖÑÓÔÏÐÐÍÎÏÊÌÍÈÊÊÇÅÆĽ¿Á»¾Á¹»¾»½¿½¿Á¾À¿ÁÃÀÁÂÄÅÃÈÉÇËÌÊÎÏÍÐÐÍÑÑÎÏÐÎÎÎÎÊÊÊÆÆÆÁÂú»¼°µµ«°³¥«²£©¯¤ª°¥«±£¦­šž¦–œ£–§š¡©˜¦”™¢—— žœ£¥ §¢Ÿ¨Ÿ£š–œ—•›••ž“•ž“– œŸ¦£©¯¬±ºÇÊÎÍÐÔĿò ¡©³œ²Ÿœ­”‘—vu‰`b‰ad‡_bwJNrDGqADq?Bo?Bn>Am;>l:=k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<k9<m9<m9<m9<m9<m9<m9<m9<m9<m9<m9<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<l;=p@Cm<>sFGŒkm¨šž††Ÿ„„£‹‹©––¬œŸ²©«´®°¶µ·¸¸¾¶¹½¹¿Å¼ÄʾÆÌÂÉËÅÌÎÉÎÎÌÎÐÏÑÓÑÒÓÑÔÔÓÕÔÒÕÒÒÔÐÑÓÏÔÖÒØÙÔÚÛÖÚÚÔÛÙÖÜÚÔÜÜÖÜÜÖÛÙÖÚÚÔ×ØÓÕÒÎÓÏÉÐËÈÌÅÀÊľÉÄÁÉÅ¿ÉÉÃÊÊÄÊËÆÉÊÅÊÌÈÎÏÍÑÒÐÒÓÑÑÔÑÊÏÌ¿Åú¿¼®³°¢¨¦Ÿ¦¥›¡¢‹’”~…‡{‚‡~…Š}„‰v€ƒp{€s}€x‚…t~px~lw|ityfqvdpvdntdnt^ipWbiNZbLX`O]fMYaFRZEOXGNVIMUKJTPHQTFL[CI^AEb>Ae<Ah;?j:=l:=k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<o>@tDGyLM}QRST|PQwJLuHItDGo?Bm;>k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<n=?oBCrFIuORxU[~^d„gkŠpt{€”‡Žš’›žª¤§´¥®½¦¯¾¦®»§¬¸©«´¨ ¦¢‘–xyŽjknmpplk‹fgpp˜{{—yz•ww›€€¤§——¬Ÿ¢«¨««©°¬°¸ª³¿¬³½¯¶Àµ¹Á´¹Â·½Ä·½ÃººÀ¼¼Â¹¼À¹¼Ãº¼¿ºº½ºº½¼¼¿½¿Â½ÁǾÂÈÂÅÉÃÆÊÃÆÊÀÄÊÀÄÊ¿ÂÆÀÀÃÃÀÀÃÀÀÅ¿ÁÈÀÀÇÁÀËÄÂÉÄÁÌÇÇÍÈÈÏÍËÏÍËÍËÉÉÆÃÇÀ¾Ç¿¿ÉÂÃÆÀ¾µ´¶¨§µ§¦¶­¬¶°²´±´²°±³­¬¶®®»´µ½ºº¼»º½¿Á½¿Á½ÀþÀ¼½¾¼¾Á½ÀļÁľÁÅ¿ÆÈÃÊÌÌÒÖÎÑÕÉËξÄÈ¿ÆÈÁÇÈ¿ÆȽÂÅ»¾Á¼¾ÁÀÁÂÄÅÆÆÆÆÄÇÇÉÉÉËÌÊÍÍÊÍÎÉÒÏËÓÎËÕÍÄÖÏÊÔÒÐÚÚ×ÜÚ×ÜÜÖÚÚÔÚ×Ó×ÕÒÕÕÒØÖÓÖÖÐØØÒÚÚÔÛÛÕÜÝØÞÞØÞÞØÝÝ×ÝÝ×ÝÛÕßßÙàÞØàÝÖßÝ×ßÝ×ÜÜÖÙÙÓØØÒ×ÕÒÖÔÑ×ÕÏÔÔÎÍËÈÄÅÿÁû½À¹¼¿¸»¾¼¾Àº½À½¿Á¾ÀÂÂÄÃÅÆÄÉÊÈÍÎÌÏÐÎÑÑÎÐÑÏÏÐÎÊÌËÅÆÇÅÅÅÀÁº»¼°²´§¬¯¢¨¯¡§®¢¨® ¤¬š §™¥“˜¡”™¢™Ÿ¦—¤”™¢–™ ¡£©¯±´³³¹°°¶§§­›£–›¤”›¥˜Ÿ©˜ «š¢«¤«³ÇÊÍÓÕ×ÊÌÏľÀ¾´²¾±®¾±®»©¥³™¶ Ÿ¾®®¹¦¦˜wv‰ccˆ_a†]_ST|OPsBDn>Ao>@o>@n<?l:=k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<k:<n:=n:=n:=n:=n:=n:=n:=n:=n:=n:=l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l;=m<>n<=tFIŽjmª ¤¦”•—yz—yy¦‘‘®£¦³°³´³µ¶¶¹·¹¼·¹¼»¾Å½ÄÉÀÇÌÅÊÍÅÌÎÉÎÎÌÎÐÍÐÐÑÒÓÒÔÓÑÒÐÑÒÐÒÓÑÕÖÑÖ×ÒÙÚÕÚÛÖÚÚÔÛÛÕÚÛÖÜÜÖÝÛØÛÛÕÚÚÔØØÒÕÒÎÓÎËÑÍÇÎÈÂÎÊÄÍÊÆÌÉÅÉÉÃÉÊÅËÌÇÍÎÉÐÑÌÐÑÏÕÕÒ×ÙÕ×ÙÕÒÕÒÌÐÊ¿ÄÀ¸»¸µº·µ»¹³¹·¨®¬–œ••”–‰’€ˆ‹}„†€ˆ‹Š‘“‰’…ŒŽ‰’”–‰’v€ƒhsxfqvams]hoXcjS_gT`hT`hO[cHT\GOXGLUJLRNIPRFNYDK]AFb@Dd>Ah;?j:=l:=l:;l:;l:;l:;l:;l:;l:;l:;l:;o>@rACo>@n=?o>@p?AuEH|OP‚VW†^^ŠddŒffŠdd†\]€TUxKLrBEn=?m;<l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l;=l;=l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;n=?qADsFHwMP}UX\^†dh‹np{€”‡Žš’›œ¦ £¯¥©´¨ª³§§°§¡§¢‘“uu†]_|OPST‚VWWX„Z[ŠefŽjk‹fghh–xx¡‹‹¦•”«Ÿª¥©«ª¯ª°·ª³¿­µÀ¯¶À²¶¾³ºÄµºÃ¶¼Â·¹¿¶¼Âµ»Á¶ºÀ¸¶º·´·¸µ¸º¹¾¹»¾»¾Â»¿Å½ÀǾÁȾÁȾÁŽÀļ¼¿¾»»¾¹¹¾¹¹Àº¹Ä»ºÄ¼¹Æ½¼Ç¾½ÉÂÀÌÄÁÌÈÂÍËÉÌÉÆËÈÅÈÃÀÉÂÀÊÁÃÇÀÁ¿µ³¸ª©¶§¥´§§³¨¥²§§¯¤¤°¡¡³¦¦¸®¯½ºº¾Àý½Àý¾¿º»¼¸·¶¶´µ·µ¶¹¶¶¼»½ÅÆÇËÍÏÆÊÐÈÊÍÆÈËÄÇÊÈËËÈËËÄÊËÃÈÈÈÉÊÉÊÈÊËÉÍÍÊÎÎËÏÏÌËËÈÊÊÇËËÈÏÏÉÕÒË×ÑËÙÒÊÝÙÓßÜØààÚáßÙààÚÞÜÖÜÙÕ××ÑÔÕÐÕÕÏÔÔÎÑÒÍÒÒÌ××ÑÚÚÔÜÜÖÜÝÕÝÝ×ÜÜÖÛÜÔßÝ×áßÙàÞÕàÞØÞÞØÞÞØßßÙáßÙàÞØáÞÚÞÜÖÜÚÔÑÑËÂÃÁ¿ÀÁº½Àº½À½¿Á¿Áý¿Á¿ÁþÃÃÄÆÈÄÆÅÌÌÌÊËÉËÌÊÍÎÌÎÎËÌÍËÉÊÈÄÆÅÁý¾¿¶·¸«®±¥ª­¢¨® ¤¬Ÿ£«Ÿ£«š §–œ£“™ •™¤˜ž¥™¥–š¢–™ › §©¬¶¸»¹¹¼¯±´ £ª˜¦š¡©›£¬¤¬˜Ÿ§›£¬°¶¼ËÎÑÏÑÔÈÇÉÈÃÃÇ¿¼Æ¼¹Ä·´À³­ÌÁ¾ØÓÓÖÐÏǶ´¾¬ª¾¬ª·¥£¦‹ˆŽhhxKL|OPƒYZˆ``STuEHq@Bn=?l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;m;<m;<m;<m;<m;<m;<m;<m;<m;<m;<l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;m<>p?Ap@CuEHp?A€TU™€­«¯¬ª°¡‹Œ–yy¦““±©¬µ³·´³µ´´·¶¶¹¹¼À»ÁÈ»ÃÉÁÇËÆËÎÉÎÑÊÏÏÌÏÒÏÒÒÒÔÓÒÔÓÔÔÔÒÓÑÒÓÑÖ×ÒØÙÔÙÚÕÚÛÖÚÛÖÚÛÖÚÛÖÛÛÕÚÛÖÛÙÖ×ØÓ×ÕÒÕÒÎÒÎÈÏÌÈÍÍÇÍÎÉÎÎËÍÍÊÍÍÊÏÐËÏÐËÒÓÎÔÖÏ×ØÓÙÚÕÚÜØÙÚÕÔÖÒÐÔÎËÍÉÄÈÂÆÈÄÇÊÇÅÊǽ¿¯´±¢¨¦œ£¢”›š”–Œ“•’˜™˜žŸ™Ÿ ›¡¢¤ª¨­´³«²±—ž |ƒ…jtzcmsakq\gnWbiWbi\dmZbkO[cNV_HOYILSMIQQHOUEK]BHa@Ed>Ah<?j<?l;=l:;l:;l:;l:;l:;l:;l:;l:;o>@vEGvFItDGvFIwIIxJJ~RSƒYZŠ`aŒff‘ll“op“qr‘mnŠddƒYZ|OPxJJtCEn<=l:;l:;l:;l:;l:;l:;l:;l:;l:;o>@sCFuGGsCFo>@n<=n<=m;<l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;m;<m;<l:;l:;l:;n=?q@BsEHwJL{QR~VY…`bŠmoy•„Œ—Ž•ž–Ÿ¢¤¦ ¦§Ÿ¥£“–•zz‰aawJKp?Ap?AtDG€TUhi‘mnhiŒghnmš}} ŠŠ¦•”©žžª¤§««±¬°¸«³¾®¶¿°·¿±¸Â³ºÄ´»Å´»Å´¹Â³ºÄ´ºÁµ¸¿µ³¹´±´¶³¶¹¶¹º¹¾º¹¾¸ºÀ¹¼Àº½Ä»¾Å»»Á»»¾¸¸¸»¸¸¼··»¶¶½¸¸¿¸¶Ãº¹Äº¸Æ½¼Æ¾»È¿¾ÈÃÀÌÉÅÌÇÄÊÈÅÊÇÃÉÄÄȾ¿Á·µ¾³°¼±®¹«ª³¢¡®œš®œ§‘¨’’«––¯ž·°±½¿Â¾Áļ¿Âº¹»·²²²ªª±£¥´§§¸ª©½´³ÆÅÊÇÉÌÇÉÌÇÇÊÇÆÈËÌÍÎÏÍÎÏÍÐÑÏÏÐÎÏÐÎÑÒÍÖÖÐØØÒ××ÑÓÔÏÐÑÌÌÍÈËÌÇÔÑÍ×ÕÏÙ×ÎÜÚÔßÜØáßÙâàÚâàÚáÞÚÛÙÓØØÒÓÔÏÐÑÌÏÐËÐÑÌÍÎÉÎÎÈÓÓÍÙÖÒÙÙÓÙÚÕÛÛÕÛÛÕÛÛÕÞÜÖßÝ×àÞØàÞØßàØàáÙááÛááÛààÚààÚßßÙÛÛÕÐÐÍÃÄÂÁþÁÁ½ÂÂÄÅÆÃÄÅÀÁÂÀÃÃÄÆÅÂÇÄÇÉÈÄÆÅÃÄÅÄÆÅÉÊËÆÅÄÈÉÇÇÈÆÄÅýÀÀµºº°³¶ª¯¯§ª­¥ª­ ¦¬œ¢¨œ¢©˜ž¥”š¡’˜Ÿ•›¢˜ž¥˜ž¤˜›¢—š¡œ› Ÿ¢¦°²µµ·¹°²µ¤¨®œ¢©›¢ª›¥«›£¬˜ ©™¡¬£©°ÄÊËÏÑÓÉÉÉÈÅÂÊÄÀÊ¿ɿ¼È»µÎ¼ÙÖÓÜÚØÜ×ÔÛÖÓÛÕÔØÒÑɺ¸Ÿii¢‚‚²ššµžœ¥……klUVwGJm<>l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;l:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;m9<m9<m9<m9<m9<m9<m9<m9<m9<m9<m9<m9<m9<m9<m9<m9<m9<m9<m9<m9<m9<m9<m9<m9<m9<m9<m9<m9<m9<m9<m9<m9<m9<m9<m9<m9<m9<m9<m9<m9<m9<m9<m9<m9<m9<m9<m9<m9<m9<m9<m9<m9<m9<m9<m9<m9<m9<m9<m9<m9<m9<m9<m9<m9<m9<m9<m9<m9<m9<m9<m;<sBD{MM|LO{NOuDF}PP‡Š¯¯µ¬²¸ª¢¨¦“–ªš±©¬³°°³²´´¶¹¶¹½·½Ã¼ÂɾÅÊÂÈÌÇÊÍÉÏÐÌÑÑÎÐÒÎÐÒÏÒÒÒÓÑÓÓÓÒÓÑÔÓÒ××ÔÚØÕÙÙÓÙÚÕÚÛÖÚÛÖÚÛÖÙÚÕÙÚÕØØÕÕ×ÓÖÔÑÓÐÌÒÏËÒÐÍÏÐËÐÒÎÓÔÒÑÒÐÑÑÎÒÔÐÒÔÐ×ØÓÙÚÕÛÜ×ÜÝØÛÜ×ÛÜ×ÚÛÖÖØÒÕ×ÓÔÖÒÔÖÒÓÕÑÑÔÑÍÐÍÃÆø»¸®³°¦¬ªœ£¢šŸŸ ¦¤¦¬ª©¯­¬²°³¹·ºÀ¾¸¿¾¯¶µ–Ÿt|‚dotcms\gn\dm\fl^hnZelOZaMX_JR[OS[PPVSJRUGM[CI_ADd?Ag=@j<?l;=m;<m9<m9<m9<m9<m9<n:=m;<q?@wFHxJJyILyKK}PQRR…YZŠ`aŒddjj’mm’mm”pq“nnŽhhŠbb„Z[€STyKKrACn<=m;<m9<m9<m9<m9<m9<m9<n<=wFHRS‰_`†\]~QR|OP{NOwGJp?An<=m9<m9<m9<m9<m9<m9<m9<m9<m9<m9<m9<m9<m9<m9<m9<p>?q@Bn:=m9<m9<m9<n<=p>?rACuEHxKL~TU„_`‹jouy’}—‚†›‰ “¢‘“œƒ…‘ll€TUsBDn<=p>?xJMŽij™||›~~–xx™||œ‚€¡‰‰¥§——ªŸŸ«¥¨¬«°¬¯¶«°¹¬³½¯µ¼²¶¾²·À²¹Ã°¸Ã®¶Á¬µÁ¬µÁ¯´½²²¸²¯²¶±´·µ¹··º·µ¹¸¶º··½¸»Â¹½Ã¹¼À¹»¾¸¸»¹º»»»»½¼¾À¿ÁÃÀÀÆ¿Àƾ¾Å¿¾ÇÀ¾ÉÂÀÊÄÃÌÊÇÌÊÈÍËÉËÉÇÉÃÂÆ»»Ä¹¹Äº¸ÉÄÁÈ¿¾½²¯³¢¡¬——¨§¥‹‰¦ŽŽ±¤¤»º¼¾Àü¾Á¸¶·²ªª¯ŸŸ²¡ ¼®­Ãº¹ÆÁÄÉËÎÏÏÒÎÍÏÇÇÊÇÈÉÌÌÌÑÒÐ×ØÓØÙÔÖ×ÒÛÛÕÞÞØÞÞØÜÜÖÚÚÔ×ØÓÓÔÏÐÑÌÎÏÊÖÔÎÙÙÓÛÛÕßßÙàáÙáâÚââÙááØßÝ×ÙÙÓÒÒÌÑÒÍÏÐËÍÎÉÌÍÈÌÍÈÌÍÈÑÑËÔÒÌØØÒÙÙÓÙÙÓÙ×ÑÙÙÓÙÙÓÛÙÓÜÜÖßßÙààÚßßÙÞÞØØØÒØÙÔ×ØÓÕÖÑÏÏÌÆÅÄ¿ÄÁÃÄÂÄÇÇÃÅÄÃÅÄÀÃÃÀÁÂÀÁÂÆÇÅÈÊÉÇÉÈÃÅÄ¿ÁÃÀÃÃÃÅÄÂÃÁÂÃÁÂÃÁ¾ÁÁ·ºº³¸¸±¶¶¬±´ª°±©¬¯¤§ª £§œ ¦˜ž¤”š¡“™ •›¢—¤—£™Ÿ¥š¡›£œ¢¨¨­°²µ¸³µ¸ª®´Ÿ¤­¤¬›£©˜ ©˜ ©š¡©¦¬°ËÐÐÎÐÒÉÉÉÊÇÄËÈÅÍÊÇÌÇÄͽÍýÕÐÍÝÚÖßÜØßÜØßÜØÝÚ×ÕÎ̾®¨¼©¤Ë½¼ÐÉÇÍ¿¾¬¨°–’šxvSTsABm;<m9<m9<m9<m9<m9<m9<m9<m9<m9<m9<m9<m9<m9<m9<m9<m9<m9<m9<n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;m;<m;<m;<m;<m;<m;<m;<m;<m;<m;<m;<m;<m;<m;<m;<m;<m;<m;<m;<m;<m;<m;<m;<m;<m;<m;<m;<m;<m;<m;<m;<m;<m;<m;<m;<m;<m;<m;<m;<m;<m;<m;<m;<m;<m;<m;<m;<m;<m;<m;<m;<m;<m;<m;<m;<m;<m;<m;<m;<m;<m;<m;<m;<m;<m;<m;<m;<m;<m;<m;<q?@yKKUV…[\…\[‚VW‡^]ƒ„­«¯¯µ¼¯³»®®´­¨¬°«®³²´³µ¸´ºÀ´ºÀ·º¾ºÁƽÅËÂÉËÅÌËÉÎÎÍÐÐÐÑÒÏÑÐÎÐÏÐÑÏÑÒÐÓÓÓÔÓÒØØÕÙ×Ô×ØÓØØÒ×ØÓÙÚÕØÚÓ×ØÓÖ×ÕÕÖÔÑÒÐÓÑÎÐÐÍÒÒÏÔÕÓÔÖÒÔ×ÔÕØÕÔ×ÔÒÕÒÔÖÒÕ×ÓÚÛÖÛÛØÜÝØÜÝØÝÞÙÜÝØÛÝÙÛÜ×ÛÜ×ÛÜ×ÜÝØÛÜ××ÙÕÖØÔÑÓÏÉËǾÁ¾·¼¹±´´¨®¬«±¯²·´µº·¶»¸ºÀ¾¿ÅÃÃÈĽÃÁ¬²°Š‘“mx}dnt_jq`kr\gn[clYdkLX`IT[PZ`TZaVU]XRXXJPZEI^BFc?Bg=@i<=k;>m;<m;<n<=m;<m;<o=>p>?q?@sABwGGxJJ|NL|OO‚UUƒYZ‡^]‹ccgeigjhig’ljkligŽijŒfdˆ_^TTxJJwGGtDGq?@m;<m;<m;<m;<m;<o=>xJJWX‹cckl’mm”pq“op‹cc~PNvFIsBDq?@o=>m;<m;<m;<m;<m;<m;<m;<m;<m;<m;<m;<n<=o=>rACr@Am;<m;<m;<m;<m;<m;<p>?sBDwII}QRƒ]]ˆde‹jllnŽpp“xx•wwno…]]{MMq@Bp>?xJJ‹ecœ‚ƒ¤¥£‹‹¤Ž¥¥“‘¨˜˜ª«¢¤¬§«­«±¬ª°«­³®­µ¯¯µ¯±´¯³»­´¾«³¾¨³¿§²¼¨°»ª¯¸­°´°¯´³³¶µµ¸µ´¹´´··¸¹¶ºÀ¶¼Â¶¼Â¸¾Äº¾Ä¹¿Å¼¿Ã¾ÁÄÄÆÈÉÊËÊËÌËÊÌÉÈÊÇÅÆÆÅÄÉÄÄÊÉÈÍÎÌÎÏÍÏÏÏËÈÅÇ¿¼Äº¸Ä¼¹ÌÊÈÒÒÏÒÒÏÌÇǾµ´´£¢±žž°žœ­—–¦ŽŽ°  º··¼¼¿¼¼¿¹¶¶µ°°»¸¸Ä¿¿ÈÃÃÈÅÅÈÉÊÉËÎÌÍÎÇÈÉÆÅÇËËËÏÐÎÖ×ÒßÜØßÝÚÝÝ×ßßÙÞÞØÚÚÔØØÒÙÙÓÖ×ÒÑÒÍÑÒÍÐÑÌÕÕÏÙÙÐÞÞØàáÙáâÚàáÙàáÙààÚÝÝ×ØØÒÐÐÊÍÎÉÎÏÊÍÏËÌÍËÍÎÌÍÎÉÎÎÈÑÏÉÕÓÍÖÖÐÔÔÎÔÕÍÓÔÏ×ÕÏØÖÐÚÚÔÛÛÕÜÚÔÙ×ÑÔÔÎÏÐËÎÏÊËÌÊÆÈÄ¿ÄÁÀÃÀ¾ÁÁÀÃÃÆÆÆÁÃÂÀÃü¿¿¾¿À¾À¿ÆÅÄÆÈÇÂÅÅÀÃüÁÁ»½¿¼½¾»»¾»»¾¹»º·ºº´¹¹³¶¶²µµ­²²¬±±«°°¨­­¤§ª¥§©¡¤¨™Ÿ¥—¤˜ž¤˜ž¥›¡§£©Ÿ£©¡£¦¤§ª¨¯±²¸¹³¶¹¬°¶ ¦¬™¡§™¡§–ž§”œ¥™¡ª¯¶¸ÉÏÐÊÏÏÊÊÊÊÉÈÌËÊÑÐÏÒÏËÑÌÉÓÎËÕÑËÚØÒßÜØàÜÖàÜÖàÜÖÜÙÕ×ÒÏØÕÒÚØÖÛÙÖÖÑÎ˽¹À°ªµŸ›šxv‚VWwFHo=>m;<m;<m;<m;<m;<m;<m;<m;<m;<m;<m;<m;<m;<m;<m;<m;<m;<p;=p;=p;=p;=p;=p;=p;=p;=p;=p;=n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;r>?wGG}OM…[\geig’pn™|| ……¬Ÿ¢±µ½¯·À°·Á²¶¾±·½²¸¼³¹¿³·½´¶¹·º¾¼ÂƽÄÉÂÈÉÅÌËÉÌÌËÎÎÎÐÏÏÐÎÏÐÎÐÏÎÒÑÐÔÕÓÖÕÔØØÕ××ÔÕÕÒÖ×ÒÕ×Ó×ØÓÖØÑÕÖÑÓÔÒÒÓÑÑÒÐÐÐÍÐÏÎÓÔÒÕ×ÓÕØÕÔÙÖÖÙÖÖÙÖÓ×ÑÔÖÒ×ÙÕÚÛÙÛÝÖÝÞÙÝÞÙÝÞÙÝÞÙÛÝÙÛÜÚÜÞ×ÝÞÙÝÞÙÝÞÙÚÛÖÚÛÖ×ÙÕÒÔÐÌÎÊÈÉǿ·¼¹³¸µ·¼¹½Â¿¾Ã¿¾Á¾ÃÇÁËÎËÆËȸ½º §¦ƒ‹Žpx~dpv_jqZelXcjXcjP\dJV^QYbV\bZZ`YU[^RWaOSdHLgCFh?Ai<=l;=o=>r>?r>?o;<o;<q=>p<=tBCtDDxHH{KK~PN€RP‚UU„XY‰`_ŒcbŒddŠa`‹ba‹baŒddŒcbfcgg‘jgŽff‹ba‰`_‰`_…YZ|LLvDEp<=n:;n:;n:;p<={KKˆ_^ee‘nk˜wvœ||Ÿ™xwŽhf‰_`ˆ_^†YYxJJq?@n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;o;<o;<sABr>?p>?o;<n:;n:;n:;n:;n:;p<=tBCxHH|NL~RS€TU‚XY‚XVXWƒWXSQxHHsCCsABuEE„ZX™~~¦““ª››ª™˜©˜—¨˜˜©™™ª››ª¡£¬¥¦­ª­­­³­­³¬ª°¬ª°­«±°­°­¯²®²¸®²½ª±»©±º§²¼©°º©®·«±¸¯²¶²µ¹³¶º³µ¸´¸¾µ¸¼µ¹¿¶¼Ã¶¼Ãº¾Æ½ÁÉ¿ÂÉÃÆÊÆÉÌÊÌÎÐÐÐÓÓÓÒÔÓÒÒÒÍÎÏÌÍÎËËËÌÌÌËÍÌÍÎÌÍÎÌËÉÇÈ¿¾ÈÂÁÌÊÈÒÒÏÕÖÑÔÕÐÑÐÏƽ¼² ž¬•“®˜—®œš¬—”°¡Ÿ¶­¬¹³µ»º¼¹·¸º¹¸ÃÄÅÉÌÌËÌÊÊËÉÉÈÇÄÆÉÃÅÈÄÅÆÇÈÉÐÏÎ×ÕÒÙÙÓßßÙààÚààÚÝÞÙØÚÓÕÖÑÔÖÒÖ×ÒÔÕÐÒÒÌÐÑÌÒÓÎ××ÑÜÚÔáßÙââÜáâÚßàØÞß×ÚÛÖÙÙÓÔÕÐÎÏÊÎÏÊÐÑÌÎÏÊÌÍÈÍÎÉÎÎÈÌÍÈÎÎÈÐÐÊÑÒÍÒÓÎÑÒÊÒÒÉÔÒÌÕÓÍÖÖÐÖ×ÏÖÖÐÓÓÍÎÏÊÊËÆÉÊÈÄÇľÁÁ»¾¾¼¿¿¼¾À¿ÁþÀÂÂÃÁÁÂü½¾¼¼¼¾¿½ÀÃÀÃľÁÁ½ÀÀ»½¿¾ÀÂÀÁ¿ÀÁ¼¼¿¶·¸³¶¶³¸¸³µ·²´¶±´´°µµ®³³«°°§®°«®±«®±¥¨¬Ÿ£©Ÿ£©ž¤ª¤«­©®±©¬¯¥¨«§¬¯­²µ¬²³§®°¦­¯ §¬”ž¤’š£’š£–ž§¡«®»ÀÃÄÉÉÇÉËÉÊËÌÍÎÓÓÓ×ÖÕÚ×ÔÙÖÓØÖÓÖ×ÒØÖÐÞÛ×àÜÖàÜÖàÜÖßÜØßÜØàÜÖßÜØÞÛ×ØÔÎÏſ˼·É·³¿­©«‘jgxJJsABq?@p<=n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;o;<o;<o;<o;<o;<o;<o;<o;<o;<o;<n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;tBCyIIƒWXjj•ts”rpš}}¨˜˜©—˜¬Ÿ¢¯µ»¯·À±¹Â³ºÂ³¹¿³º¿³º¿³¹¿´·»¶¹¼¹ÀŽÅÈÁÈÊÆËËÉÌÌËÌÍÏÏÏÎÏÍÎÏÍÐÏÎÒÓÑÔÓÒÖÖÓ××ÔÕÕÒÕÕÒÔÕÓÓÔÏÒÔÐÓÔÏÒÔÐÑÓÏÑÒÐÑÒÐÑÒÐÒÓÑÔÕÓÕ×ÓÕØÕÖØÔÕØÕÖÙÖ×ØÖ×ÙÕÙÛ×ÚÜØÛÜ×ÛÜ×ÝÞÙÝÞÙÝÞÙÝÞÙÝÞÙÝÞÙÝÞÙÝÞÙÝÞÙÜÝØÛÜ×ÚÛÖ×ØÖÔÖÒÒÓÑÌÏÌÃÆûÀ½¼Á¾ÄÇÄÇÊÇÆÈÂÊÌÈÓÕÑÏÑÍÂÅ´º¸ž¥¤‚Šlw|`lr^ip[fmYdkT`hNZbNY`SZbZ\b\X^aW[cRWfNQhHKjEFl@Ap@CtDDvFFt@As?@r>?r>?r>?r>?vEDyII{KK|NL~PN€RPTT†Z[‰`_ˆ^\„WWƒVV…XX…[Y†\Zˆ_^Œeb“mk–qq•sq—us”rpjhŠa`…XXzJJvDEt@As?@tBCQOig”rp—vuž€¤‡‡§‹£ˆˆš{x™xuœ||šzzig|LLp<=n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;o;<p<=q=>q=>p<=n:;n:;n:;n:;n:;n:;p<=s?@sCCvFFvFFwGGtDDrBBuCDsABq=>r>?uEE}PPge ‡†©šš­Ÿ¡«žž«  «  ¬ž «¡¢¬¦¨¬ª®«®²­°·¬°¸¬¯¶¬®´­¯µ¯²¹¬²¸¯¶À±¶Â­²¾ª³¿¬µÁ«³¾©°º¬´¿²¸¿´ºÁ³¹¿³¹À²¸¾³¹½µ»Âµ»Â¶½Å¹¿Æ½ÁÉÂÅÉÇÉÌÊÌÎÌÎÍÑÑÑÔÖÒÖØÔÕÖÔÒÔÓËÎÎÈËËÉËÊÊËÌÉÉÉÉÆÃÉÃÂÈÃÀÌÌÉÑÑÎÓÔÒÕÕÒÓÓÐÎÌÊö³ª‘Ž˜wv›|y¢……§Ž¬™–°Ÿžµªªº··º¹»½¼¾ÃÆÉÊÏÏÍÍÍÌÊÇÆÅÄÂÂÈÃÄÅÈÈÈÒÒÏÜÙÕÞÜÖÝÝ×ààÚààÚÞÞØØØÒÔÖÏÓÔÏÔÔÎÓÔÏÕÖÑÔÕÐÔÕÐ××ÑÝÛÕáßÙâàÚââÜàáÙÞÞÕÚÛÓÖÖÐÒÓÎÏÐÎÏÏÉÏÐËÏÐËÏÐËÎÏÊÎÏÊÎÏÊÌÍÈËËÅÍÍÇÏÏÉÏÐËÏÐÈÐÐÊÐÑÌÐÑÌÑÑËÒÒÌÒÒÌÏÐËËÌÇÈÉÄÄÅÿÀÁº¿¿¸»»¸»»¼¾½¾¿À¾¿ÀÁÁÁÀÁ¿½¿¾¼¼¼¸º¹º¼»¾À¿¿ÀÁ½¾¿º¼¾¿ÁÃÃÅľ¾¾µ·¶²··¶¹¹µ¸¸´¶¸³¸¸²··®´µ«²´¯µ¶´º»·¼¿³¶¹¥ª­¡§«¦­¯¨®²«°³«°³ª¯²¤«­£©­¢©«£ª¬ §¬š¢¨‘›¡Œ—ž‘œ£«²´½ÂÅÃÈÈÃÄÅÄÄÄÆÅÄÌÍÎÕÖÔÛÛØÞÛ×ÞÛ×ÜÜÖÚÚÔÚÚÔÛÛÕÝÝ×àÜÖàÜÖàÜÖàÜÖàÜÖàÜÖßÛÕÙÕÏÑÉÀ˽¶Ê»³ÎÄÁʼ¸±˜•heQOyIIvFFr>?n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;n:;p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:o:9o:9o:9o:9o:9o:9o:9o:9o:9o:9o:9o:9o:9o:9o:9o:9o:9o:9o:9o:9o:9o:9o:9o:9o:9o:9o:9o:9o:9o:9o:9o:9o:9o:9o:9o:9o:9o:9o:9o:9o:9o:9o:9o:9o:9o:9o:9o:9o:9o:9o:9o:9o:9o:9o:9o:9o:9o:9o:9o:9o:9o:9o:9o:9o:9o:9o:9o:9o:9r>?yHG…XX’mm˜xx™yy¢ˆ‰®¦©±®±°¯´±·¾°¸Á±¹Â±¹¿²·º´º¾´»À´¼Âµ¼Á¶½Â¹¿Å¼ÃÈ¿ÇÊÃÉÊÆÈÊÈÉÊËÍÌÍÏÎÎÏÍÐÐÐÐÑÏÒÒÒÕÕÒÕÕÒÖ×ÕÖ×ÒÔÕÐÑÓÏÏÑÍÐÑÏÐÒÎÏÒÏÏÑÐÏÑÐÑÓÒÓÕÔÕÖÔÓÕÑÕØÕÕØÕÕØÕÖØÔ×Ú×ØÚÖÚÜØÜÝØÛÜ×ÛÜ×ÝÞÙÝÞÙÝÞÙÝÞÙÝÞÙÝÞÙÝÞÙÝÞÙÝÞÙÝÞÙÜÝØÚÛÖÚÛÖ×ÙÒÕ×ÓÓÕÑÎÐÌÇÉÅÆÈÄËÍÉÐÒÎÒÓÎÖ×ÒÚÛÖÖØÔÏÑÍÄÉű·µ–Ÿ|„‡kv{fpvcnu^ipWbiLX`Q\cT[cX[bXV\YPU^MRcIMdDGiCCnDEsFGuEEyIIvEDt@Aq=>p;:q=>p<=wEFyII{JI{IJ{JI{KK{KKQO„VT‚TR}NKzJJ}LK~PP‚TR‰_]if–qq›{{ŸŸ€}›|y•sq“pm‘nkfc‡][ˆ^\‡ZZƒWXˆ^\•roŸ€}¡ƒ‚¦‹ˆ©‘‘«”’©¦‹ˆ¥Š‡¡ƒ‚}}–qqƒVVr>?o:9o:9o:9o:9o:9o:9o:9o:9o:9o:9o:9o:9o:9o:9o:9o:9o:9o:9o:9o:9o:9o:9o:9p<=q=>q=>q=>p<=p;:o:9o:9o:9q=>xGF„WWnl ‡†¨˜˜¬¡¡«££­¤¦­¤¦­¤¦­¤¦­¨«­«¬¬®±«±¸¬±º¬±º®µ¿±¸Â¯·Â°¸Ã²ºÅ²¹Ã°·Á°¸Ã®¶Á­µÀ­´¾²¹Á»¿Ç½Áɹ¿Å¸¾Ä³¹À³º¿³º¿´»À³»Á¹¿Æ¼ÀÆ¿ÃÉÃÈËÉËÍËÌÍÍÎÏÐÑÏÓÔÒÖÖÖÓÕÔÎÐÒÉËÍÉÊËÆÆÆÄ¿¿À·¶Á¶³Æ¿½ÉÄÁÌÌÉÐÑÏÒÒÏÏÍËÄ·´³œš ~Žedfc”oo˜vt¡„„¨’‘®››²¥¥´©©¸°°ÄÄÄËÌÍÍÎÏÊÇÃÈÃÃÂÂÅÇÆÈÑÏÍÙ×ÔßÜØáßÙáßÙàÞØÞÞØÚÚÔÖ×ÒÔÕÐÐÑÌÒÓÎÓÔÏÓÔÏÓÓÐÓÔÏÖÔÑ××ÑÞÞØâßÛáßÙßÜÕÜÚÔ××ÑÔÔÎÐÑÌÏÐËÎÏÊÌÍÈÉËÇËÌÇÌÍÈËÌÇËÌÇÊÊÄÈÉÄÈÉÄÍÍÇÎÏÊÎÏÊÏÐËÏÏÉÍÎÉËÌÇÌÍÈÍÎÉÉËÇÈÉÄÄÆÂÀÃÀ¼¾½º¼»¸»»¸»»¹»º¹¼¼º½½¼½¾º½½º¼»¸¹º·¸¶¹º¸º¼»·ºº¶»»¶¸º¹»½º½½º¼»¸º¹´¶µ±¶¶µ¸¸µ·¹µ·¹±·¸±¶¶¯µ¶®±´¯µ¶²¸¹³¹º¯µ¶§¬¯¥«¯¨®²¦­¯¤ª®¤«­¤ª®¡§« §©Ÿ§ªž¥§š¡¦•£˜¡Œ˜ š¥¬¼ÂÆÂÆÌÀÅÅÂÂÂÄÄÄÅÆÇÌÌÌÖ×ÕÝÝ×àÜÖàÜÖßÜØÝÛÕÜÚ×ÙÙÓÛÛÕÞÛ×ÞÛ×ßÜØßÜØàÜÖàÜÖßÜØÛ×ÑÑÉÀ˽¶Ë½¶ÑÉÃÏÈÿ±­§Š‡‘jg„YV~OLwEFo;<o:9o:9o:9o:9o:9o:9o:9o:9o:9o:9o:9o:9p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:o;<o;<o;<o;<o;<o;<o;<o;<o;<o;<o;<o;<o;<o;<o;<o;<o;<o;<o;<o;<o;<o;<o;<o;<o;<o;<o;<o;<o;<o;<o;<o;<o;<o;<o;<o;<o;<o;<o;<o;<o;<o;<o;<o;<o;<o;<o;<o;<o;<o;<o;<o;<o;<o;<o;<o;<o;<o;<o;<o;<o;<o;<o;<o;<o;<o;<o;<o;<o;<q=>vEDQOˆ_^‘omšzz¥¯ª­²¶¼±·¾®¶¿®¶¿®¶¿°¸¾³¹½´ºÁ³¹½´¼Âµ¿Å¸¿Ä¹¿Å¼ÃȽÅȾÅÇÃÆÉÆÉÉÈËËÊÌËÌÎÍËÐÍÐÑÏÒÓÑÒÓÎÓÔÒÕ×ÓÔÖÒÒÓÑÑÒÐÎÐÌÌÐÊÌÏÌÍÐÍÌÑÎÏÒÒÒÔÓÕÖÔÕ×ÓÓÖÓÔ×ÔÕØÕÔ×Ô×ÙÕ×ÙÕÚÚ×ÚÛÖÚÛÖÛÜ×ÜÝØÝÞÙÝÞÙÝÞÙÝÞÙÝÞÙÝÞÙÝÞÙÝÞÙÝÞÙÝÞÙÛÜ×ÛÜ×ØÙÔ×ÙÒ×ØÓ×ÙÕÓÕÑÏÑÍÑÓÏÖ×ÒØÙÔÙÚÕÛÜ×ÜÝØÛÜ××ÙÕÐÒξÁÁ¦««–˜v€ƒkv{juzgqwXcjNZbR]dY_fW[aTRYSJRVFL^EJbBEfABnDEsEEtCByIIuABq=>o;<o;<o;<q=>uDCxHHyHGvDEuDCvEDxHHyII|KJyIIzIHxGFvFFyHG~NNˆ\]‘jg–sp~{¤‡‡¤‡‡ ~Ÿ~{|yœ}z›zw›{{œ~}™xw–sp•ro|y¦‹ˆª‘Ž¬“«”’«”’©‹§Œ‰¥Š‡™xu‘liŒcb|LLq=>o;<o;<o;<o;<o;<o;<o;<o;<o;<o;<o;<o;<o;<o;<o;<o;<o;<o;<o;<o;<o;<o;<o;<o;<o;<o;<o;<o;<o;<o;<o;<o;<p<=sBA€RPmj¡‡…©˜—© Ÿ­¦§®©¬­§©®¨ª­¦§¬ª«­ª­«­°¬²¹«³¾®µ¿²ºÅµ¼Æ°¸Ã±¹Ä³»Æ´»Ã´»Ã³»Æ³ºÄ²¹Ã¶¼ÃºÀǾÄÊÂÆ̾ÄʽÁɸ¿Ç³»Áµ¼Ä´»Ã´»Ã¶½Å¸¿Ä¼ÂÈ¿ÅÉÄÇÊÈÉÊÉÊËÉÊËËÌÍÏÐÑÍÏÑÊÌÎÈÉÊÆÆÆľÀ¿µ³½®¬¹¨¦»­©Àµ²Æ¾»ËÄÂÊ¿ö³µžœ¢~”qn‹ba…XX„YV‡[\hh‘nk›}|£…„§¯œ™½³±ÈÁ¿ÉÆÃÇÄÁÀÀÃÃÂÄÌËÊÒÓÎÙ×ÑÝÛÕáÞ×àÞØÞÜÖÛÛÕÖÖÐÓÔÏÑÒÍÎÏÊÑÑÎÑÑÎÐÑÏÏÏÌÏÏÌÐÎÌÏÐËÖÖÓÝÝ×áÝ×ÜÚÔØÖÐÔÒÌÐÐÊÍÎÉÍÎÉËÌÇÇÈÃÄÆÀÆÇÂÇÈÃÇÈÃÈÈÅÆÅÄÄÆÂÃÆÃÈÉÄÌÍÈÍÎÉÍÎÉÍÎÉÌÍÈËÌÇÇÈÃÈÈÅÇÅÂÅÆÁÃÄÂÁÿÁÀ¼¾½º¼»º¼»»¾¾¼¿¿¾¿À½¾¿¹»½¸¹ºµ¸¸···¸¸¸·¹¸¶¸·µ·¹´¹¹µ»¼¸½½¸»»´¹¹³¶¶°µµ±´´°µµ°³¶±¶¹¯µ¶®³¶©°²¨¯±§®°ª¯²¨¯±¦­¯¤«­¥«¯¢¨¬¡§«¡§« §©¡§«¢©«£©­ ¦ª£ªš¡©•¦”Ÿ¦«³¹ÀÆÊÂÇʾÁÄÁÂÃÄÆÈÈÉÊÍÍÍÖÖÓÝÛØßÝ×ßÝ×ßÝ×ßÝ×ÝÚÖÙ×ÑØØÒØØÒÙÓÍÛ×ÑßÛÕßÝ×ßÝ×ßÜØÜØÒÑÉÀ̽µÌ¾·Ïſʾ¶¼¬¦¯–“ ~z‘heƒUSvEDp<=o;<o;<o;<o;<o;<o;<o;<o;<o;<o;<o;<o;<r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:r>?wCDyHG‚TR‹ba˜xxªš¯­±°·¿®¶¿®¶¿­µ¾­µ¾±·¾²¸¿²¸¿²·º³»¾¶¾Ä¹¿ÆºÀÄ»ÃÆ¿ÅɾÅÇ¿ÆÈÀÇÆÂÇÇÄÉÉÇÍËÊÏÌÎÑÎÏÒÏÏÓÍÑÕÏÑÔÑÑÓÒÎÐÏÎÑÎÎÑÎÌÏÌËÎËÊÐÎËÑÏÎÑÑÐÓÓÒÔÓÔ×ÔÔ×ÔÔ×ÔÕØÕÕØÕÖÙÖ×ÙÕÙÚÕÛÛÕÛÛÕÜÝØÝÞÙÝÞÙÝÞÙÝÞÙÝÞÙÝÞÙÝÞÙÝÞÙÝÞÙÝÞÙÝÞÙÜÝØÜÝØÜÝØÜÜÖÛÜ×ÚÛÖØÙÔ×ØÓÙÚÕÛÜ×ÜÝØÜÞ×ÜÝØÝÞÙÜÝØÛÜ×ÔÖÒÈÉǶ»¸Ÿ¦¥ƒ‹Žp{€ny~frxYdkQ]eP[bT[cRX_OOUOIOTFLZDGaCFhCEkABoA?sCCvDBr=<q<;r=<q<;p;:s?=vBCxDEwCDs?@wCDvDBt@At@AvDBvDBwCDxGFxGFzIH€QN†[Xif•ro |¨ŽŒª‘Ž¦‹ˆ£„¥†ƒ¥Š‡§Œ‰¨Ž¨Œ¦‰‰¥†ƒ¢…‚§Œ‰¬“¯™˜®—•¬“ª‘Ž¨Š©Ž‹§Œ‰œ{zŽedƒUSvEDp<=p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:vBC…XX“qo¢‹‰©š˜«¡¢­ªª­¬®®«®®©¬¯ª­¯¬¯¬«°¬®±¬³»±¸Â´»Å´¼Çµ½È±¹Ä±¹Äµ¼Äµ»Â´»Ãµ¼Ä¶½Å¶½Å»ÁȾÄÈÃÆÊÃÆÊ¿Å˼ÂÉ·¿Å´¼Å³»Á´ºÁ³ºÂ²ºÀ´»Ã¸¾ÅºÀƽÁÇ¿ÃÉÂÅÉÂÄÆÄÆÉÄÇÊÄÆÉÂÁÃÁ¾¾¾¸·»°­¸§¥´Ÿœ³ž›´›˜³™¸§¥»¬ª¹¨¦³œš§ˆ…šwtŒb`‚TRƒUS}LK|KJ‚TRSQ…[Yfc”nlœ{x¯•“Àµ²Å¿¾À¿Á¿¾ÀÄÂÃÍÌËÔÒÏÕÓÍØÖÐÝÛÕÝÛÕÚÚÔ××ÑÔÕÐÑÓÏÏÐÎÌÍËÉËÇËËËËÍÉÉËÇÈÊÆÉÊÈËËÈÏÏÌÕÕÏÚ×ÓÖÔÎÒÐÊÐÎËÍÍÊÊËÆÊËÆÆÇÂÀÃÀ¿Â¿ÂÃÁ¿ÂÂÁÁÁ¿ÁÃÀÃÃÃÅÄÃÆÃÄÇÄÉÊÈÌÍÈÌÍÈËÌÇÈÉÄÇÈÃÄÇÄÇÅÂÅÅÂÆÆÃÃÄÂÂÄÀ¿ÁÀ½¿¾¼¾½»¾¾º¿¿¾¿À½ÀÀ¼¾À¹»½µ¸¸¶¹¹·¹¸¶¸·¶¸·º»¼¹º»¹º»º¼¾¸½½·¹»²··¯µ¶®³³¬²³«°³§®°­²µ«²´«²´©°²¤«­£©­¡¨­£ª¬ §¬Ÿ¦«ž¥ªŸ¦¨Ÿ©¬¢©®¡©¬¢©«¤ª±£©­¡§«ž¤ªž¤«•¦˜£ª´»À¿ÅÉ¿ÅÉ¿ÂÆÃÃÆÄÆÉÉÊËÌÍËÔÕÓÜÚ×ßÜØàÜÖßÜÕßÝ×ßÜØÜÚÔÚÚÔÙÖÒÔÎÇÕÏÈÞÛÔßÝ×ßÝ×ÞÜÖÜØÒÓÌÄÎÀ¹ÏÁºÎľŷ°·¢œ¯˜“¤…‚“nk„YVvEDq<;p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:q<;q<;q<;q<;q<;q<;q<;q<;q<;q<;p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:q<;t@AwCDvED~OLŠ`^œ‚€¬¤§¯´·¬´º­µ¾®¶¿®¶¿­µ¾°³·±¯³³³¶µ»¿¶½Â´»À¸¿Ä¼ÂɼÞÅÇ¿ÆÈ¿ÆÈÀÈÈÃÉÊÆËËÇÍËÇÍËÈÍÊÌÏÏÌÑÎÏÒÏÐÓÐÐÒÑÌÏÏÊÏÌËÐÍÌÏÌÉÎËÊÍÍÌÏÏÍÐÐËÐÍÏÑÐÒÔÓÓÖÓÓØÔÓÖÓÔÙÕÓ×ÑÔÖÐØÙÔÚÜÕÚÜÕÜÝØÝÞÙÝÞÙÝÞÙÝÞÙÝÞÙÝÞÙÝÞÙÝÞÙÝÞÙÝÞÙÝÞÙÝÞÙÝÞÙÝÞÙÝÞÙÜÝØÜÝØÜÝØÜÝØÜÝØÜÝØÝÞÙÝÞÙÝÞÙÝÞÙÝÞÙÜÝØÖ×ÒÏÑÍÂů´±–œƒŠŒp{€dot\gnVahR]dJTZJPWKMSNIPTHMZEI_BFhDGkABoAAp?>r@>vBCsA?q=>r=<q<;p;:r=<q<;q<;q<;q<;r>?s>=p;:p;:q<;s?=xGF}LKƒTQ‡YWŠ]]’kh˜vt¤‡‡­—–­—–©¦‰†§‹¬•“®˜—°››­–”¬“­”‘¬•“¬“°š™¯›­–”¬“©‹¥Š‡¦‹ˆ©£…„ifSQwFEt@Ap;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:xDE†[X‘omœ„„£““©Ÿ ­§©¯¬¯°­°±¯³°®µ®°¶¬°¸¬²¸°¶½µ¼Æº¾É¶½Ç¶½Å¶½Çµ¼Ä¶½Åµ¼Ä¶½Å¶½Å´¼Â·¿Å¼ÂɾÄÈ¿Å˾ÄȼÂɸ¿Çµ¼Ä±¹Â±¸À°·¿­µÀ®¶¿®¶¿°¸¾°¸¾µ»Â¶½Â»¿Å»¾Â¼¿Ã¼¾Á½»¿»µ´¹«ª² ž²œ›­”‘«§Š‡¦‡„¥†ƒ§ˆ…§ˆ…¡{›yw”ol“mk‡][|HI{IGuCAuABwECuABvBC}NK†[X‡\Y™wuµ¨¨¾¼½¾½¿À¿ÁÈÅÅÌÌÉÒÐÍÓÐÌÖÓÏÚØÒÚØÒ×ÕÏÕÓÐÐÑÏÏÐÎËÍÌÈÊÉÄÆÈÄÆÅÃÈÄÆÉÆÆÈÄÄÅÃÆÆÆÈÊÆÌÌÉÎÏÊÏÍÊÌÍÈÌÍÈËÌÇËÉÆÇÇÄÄÅÿÁÀ¾¿À¿ÀÁ½ÀÀ»¾¾»½¿¼¾ÀÁÃÂÃÆÃÃÅÄÉÊÅÌÍÈÉËÄÇÉÂÆÇÂÄÆÂÅÆÄÃÄÂÃÄÂÄÅÃÅÅÂÂÃÁ¿ÁÀ½¿¾»½¼¹¼¼º¼¾»½¼»¾¾¹¾¾µººµºº·ºº¸¹º¶¹¹¶¹¹¹¼¼½¾¿»½¿º½½¹»½·ººµ·¹±¶¶­²µ®³¶¬±´¦¬°¥«¯¦¬°§­±§­±¥«¯¢¨¬ž¥ª §¬ž¤ªž¤«œ¤ª §©£©­¤«°§®³§¯²¨¯±©¯³¦¬²¢¨®œ¢©•Ÿ¥—¡§¥­³¼ÂÆÀÆÊÃÈËÇÉÌÉËÎÏÐÑÏÐÎÖÖÓÚÚÔÚØÒÜÚÔÝÛÕßÝ×ßÝ×ÝÛÕÜÚÔÙ×ÑÕÏÈ×ÑÊßÛÕßÝ×ßÝ×ÞÜÖÜÙÒÕÐÇÑÉÀÐÆÀ˾¸À°ª´žš¬‘Œ¡€}’mj„VTvDBq<;p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:p;:s=;s=;s=;s=;s=;s=;s=;s=;s=;s=;r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:q<;u@?zHF}LKˆ^\ƒ¬¦¨®´º«³¹­µ¾¯·½±¸À®¶¼°µ¸®¥§²¬®µ¹¿¶½Âµ¼Á·½ÄºÀÆ»ÁžÄȽÄƽÃľÅÇÂÈÉÃÉÊÄÊËÇÊÊÆÌÊÉÌÌÊÍÍÊÏÌÍÏÎËÎÎÊÍÍÉÌÌÉÎËËÍÌÈËËÊÍÍËÎÎÊÐÎÉÏÍÍÒÏÎÓÐÐÓÐÐÕÒÑÖÓÒ×ÓÕ×ÑÕ×Ð×ÙÓÙÚÕÛÜ×ÛÝÖÝÞÙÝÞÙÝÞÖÝÞÖÜÝÕÛÜ×ÜÝØÝÞÙÝÞÙÝÞÙÝÞÙÝÞÙÝÞÙÝÞÙÝÞÙÝÞÙÝÞÙÜÝØÜÝØÝÝ×ÝÞÙÝÞÙÝÞÙÝÞÙÝÞÙÝÞÙÜÝØÛÛÕÔÕÐÉËǼÁ¾­²¯œ£¢Œ“•t~amsS^eOZaFQXHOWJMTMIQRHLYEJ_CGhHHnHHrEEtEByIINM}KIxDBs>;r<:r<:r<:r<:r<:r<:r<:r<:r=<r<:r<:r<:q<;xDBƒTQ‰^[Š`^ec—tq |¨Š°››²°š™¬•“®—•± Ÿµ§©¶©©´¢£²œ›±š˜±›š±›š±Ÿ³¡¢®˜—«‘¨ŽŠ¦‡„¥†ƒ©Ž‹§Š‡”nj‰^[…VS~LJt?>r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:vB@ƒTQfc–wt‡†¤••© ¢­ª­¯®³±´»±¶¿¯¶À±¹Ä¶»Ä¹¿Æ½ÁɽÁɶ»Ä¶½Ç·¾È·¾Æ·¾Æ·¾Æ·¾Æ¶½Ç¶¼Ã·¾ÆºÀÇ»ÁȺÀǶ½Å³ºÄ³ºÂ¯·À­µ¾­³º­³ºª°¶¬²¹ª°·«²ºª²¸­´¼¯¶¾±µ»µµ¸·µ¶¸²´¶­¬³¤¢­—“£†ƒ¤…‚¢~›xu“liŽdbca‹`]‰[YƒVSƒTQPM…VSPMvB@r><q<;r<:s=;r<:q<;u@?yGE}KI’mj²¥¥½»¼À¿ÁÅÄÃÈÇÆÍËÉÐÍÉÒÏËÖÓÏØÖÐ×ÕÏÕÕÏÐÑÌÎÎËÊËÉÈÉÇÂÇľÁĽÂ¿ÄÁÄÆÅÄÅÃÂÄÃÁÃÂÀÃÃÄÆÅÈÈÈÇÉÅÉÊÅÉÊÈÉÊÅÈÉÄÆÇÂÄÅÃÀÃÀ¿ÀÁ¾¿À»½¿º½½¸»»º½½¿ÁÀÀÃÃÄÅÆËÌÊÌÍÈÉÊÅÃÆÿÁÀ¿Â¾ÃÀ¿ÁÀ¿ÁÀÀÁ¿ÀÁ¿¿ÁÀ½¾¿º¼¾¹»º·¼¼º½½º½½·ººµ¸¸²¹¸¶»»·ººµ·¹´¶¸´¶¸·ºº¹¼¼¸»»¹»½»¾¾º¿¿·ºº±¶¶ª°´ª±³©¯³¥¬®¤«°¢ª­¡¨­¢¨¬ž¥ªœ¢©š¡«œ£«¤¬¤©œ£«œ¦©¥«¯¦¬°¥­°§®°ª±³«±µª°´¥«±ž¤«œ£«¤¬¤¬¦­²¹¿ÃÆÉÌÊÍÐÏÑÓÕÕÕÖÕÔØÖÔÙÙÓÚ×ÓÚØÒÝÚÖÞÜÖßÝ×ßÝ×ÝÛÕÛÙÓØÕÎÜÙÒàÜÖßÝ×ßÝ×ßÝ×ÝÛÕÙÓÍÑÉÀÍÀºÅµ¯»§¡¯—‘¥‡ƒšxv‘he„WTxDBr=:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:s=;s=;s=;s=;s=;s=;s=;s=;s=;s=;q<9q<9q<9q<9q<9q<9q<9q<9q<9q<9q<9q<9q<9q<9q<9q<9q<9q<9q<9q<9q<9q<9q<9q<9q<9q<9q<9q<9q<9q<9q<9q<9q<9q<9q<9q<9q<9q<9q<9q<9q<9q<9q<9q<9q<9q<9q<9q<9q<9q<9q<9q<9q<9q<9q<9q<9q<9q<9q<9q<9q<9q<9q<9q<9q<9q<9q<9q<9q<9s>=t@>zHFƒTQ‹a_–vvª ¬°¶«³¹«³¹°¶½±·¾°¸¾°´º°©ª¯§§³³¶¶¼À´¼Â·¾ÃºÀǺÀǼÃȾÄÈ¿ÆÈ¿ÆȽÄƽÄÆ¿ÆÅÃÊÉÄËÊÆËËÈÎÌÊÍÍÈÍÍÇÍËÊÍÍÇÍËÇÌÉÇÊÊÈËËÉÌÌÈÍÍÈÎÌÉÏÍÉÏÍÌÑÎÏÒÏÏÒÏÐÔÎÑÔÑÔØÒÕ×ÑÖØÑØÙÔÚÛÖÛÜ×ÝÞÙÝÞÙÝÞÙÝÞÙÜÝØÜÝØÝÞÙÝÞÙÞßÚÝÞÙÝÞÙÝÞÙÝÞÙÝÞÙÝÞÙÝÞÙÝÞÙÜÝØÜÝØÜÝØÜÝØÝÞÙßàÛÞßÚÝÞÙÝÞÙÝÞÙÜÜÖÕÖÑÒÓÎËÍÉÀŶ¹¹ª°®•œžv€ƒblrP\dHSZGOUIMULJPQHOWFK^FIlNOxWV‚\ZŒebdaŠ`^‹`[…VS|HFvB@s>;r=:q<9q<9q<9q<9q<9q<9q<9q<9q<9q<9vB@PM‹`[“mi˜ur¡€}§Œ‡¬•“°žœ²¡ ²¡ ±Ÿ± Ÿ¶¬­¹´·»³¶¸°°¹®®·©¨¶¦¦¸ª©¹®®·¬¬´£¢°š°š–®—•«’®—•¯š—£‚—ro’ifŠ_\|HFr=:q<9q<9q<9q<9q<9q<9q<9q<9q<9q<9q<9q<9q<9q<9q<9q<9q<9q<9q<9q<9q<9q<9q<9q<9q<9q<9q<9q<9q<9q<9q<9u@=€QNˆ^\nl–yyœ‡‡£””¨Ÿ¤«©¯®±¸±¸Â²ºÅ¶½Ç»ÂÌ¿ÅÌÁÄ˽Áɶ»ÄµºÃ¶½Ç´¼Å´»Å´»Å´¼Ç²¹Ã³ºÄ³ºÄµ¼Ä·½Ä´»Å¯·À¯µ¼­´¾®´»­±·­°·­¯²«­³«­³ª¬¯ª¬¯©­³ª­±¬¯³¯®°±ª«²©¨±§¥°žœ«’¡€}”ol’lh’if‡ZW}NIwECwCAvB@uA?s?=s>;s?=t@>t?<r=:r=:r=:r=:q<9q<9q<9s>=xDB€QN–sp³¥¤Á¾¾ÈÅÅÈÃÃÉÄÄÌÊÇÐÍÉÑÎÊÑÎÊÒÏËÓÐÌÐÎËÌÌÉÈÈÅÂÂÂÀÃýº½À¸¾¿»ÀÀ¿ÁþÁÁ¾ÁÁ¾À¼ÁÁ½ÂÂÀÁ¾ÁÁ¿ÄÁÃÅÄÄÅÃÅÆÄÄÆÂÄÅÃÃľÀ¿»½¼¹»º¹»º¹¼¼º½½½¿ÁÀÃÃÃÄÅÉÊÈËÌÇÉÊÅÄÅþ¿½¾À¿½À½º¿¿¹¿½½¾¿½¿¾¾À¿º½½¹º»¹»º¸»»¹¼¼¸º¹µ¸¸´¹¹³¸¸³¸¸´¹¹±¶¶³¸¸±¶¶´¶¸µ¸¸²µµ´¹¹µºº³¸¸±·¸«²´©¯³©¯³¥¬®¦¬°¤«­¡¨ªž¦¬£ª›¢§™ ¨˜Ÿ§˜Ÿ§š¡«›¢ª˜ ¦›¢§¢©«¢¨¬¢¨¬£ª¯©°²­³´«²´§®³£ª¯ §¬Ÿ¦«ž¥ªŸ¦«¤¬²°¶ºÇÊÍÑÒÓ×ÖÕÙÙÖØÙÔÚÚÔÛÛÕÚÚÔÜÜÖßÜØßÝ×ÞÜÖÞÜÖÝÛÕÜÚÔÞÜÖßÝ×ßÝ×ßÝ×ßÝ×ÞÛÔÙÓÍÎüƷ²»¨£²›–¨‹…Ÿ}y“pj‹a_„URyHGt@>q<9q<9q<9q<9q<9q<9q<9q<9q<9q<9q<9q<9t=:t=:t=:t=:t=:t=:t=:t=:t=:t=:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:s=;s=;r<:r<:r<:r<:r<:s=;r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:t><vB@~LJŠ]Zgd›yu¦‘‘®«®¯µ¹¯¶¾­µ»­·½¯·½±·¾°°³®¤¥³®±²±³¶¼À·¾Ã¹¿Ã¸¿Ä»ÂǾÅÊ¿ÇÊ¿ÆȾÅʽÆÇ¿ÅÆÂÊÊÃÊÉÇÌÌÇÎÍÆÍÌÇÎÍÅÌËÅÌËÇÊÊÄÊÈÈËËÆËËÆÉÉÇÍËÈÎÌÉÏÍÌÑÎÌÒÐÎÓÐÏÒÏÑÔÑÒÔÐÓÕÑÔÖÐÓÕÑÖØÔØÙ×ÚÛÖÜÝØÝÞÙÝÞÙÝÞÙÝÞÙÞÞØÝÞÙÞßÚÝÞÙÝÞÙÝÞÙÝÞÙÝÞÙÝÞÙÝÞÙÝÞÙÝÞÙÝÞÙÝÞÙÛÛÕÛÜ×ßàÛàáÜàáÜààÚÝÞÙÝÞÙÝÝ×ÚÛÖÙÙÓ××ÔÒÔÐÈËȽÀÀ©¯­–˜v€ƒdpvYciW]dRX^QQWRJPVFL^FIqVV‹pmš|Ÿ}œzv˜sp–ojfbŠ]Z†WT~LJ|HFzFDu@=r=:r<:r<:r<:r<:r<:r<:r<:t><|HFƒUQ“jg|y§Œ‰¯˜–°žœ´¦¥µ¨¨·ªª´ª¨·®­ºµ¸»º¿¼¼¿¼»½½º½¾¹¼½·¹¾¸º½¹¿¼·»¹±±¸­­¶©©µ§¦´¢ ¶§¥µ§¦°žœ¨Š›xu”nj„URt@>r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:t@>~LJ„WT‹b_‘po—yx™¡’¦œ ¨¤¬¬®´­´¾³ºÄ¸¿É¼ÁʽÁÉ»ÀÉ·¾È´»Åµ¼Ä²ºÃ²ºÅ°¸Ã²ºÃ¯·Â²¹Ã²¹Ã°·Á°¸Ã®µ¿­´¼¬²¸­°´®®±®¬²«­°­«¯­¨«­¨«ªª­«ª¬ª©«ª©«¬ª«®§¨°££°¡Ÿ¯žª” |“miˆ]Z†XTPMyECs>;r<:r<:r<:r<:r<:r<:r<:s=;s=;s=;u@=t@>vB@xDByECyECzHD…VS“mi§Œ‰º±°ÊÈÆÐÍÊËÈÄÆÁÁÈÅÂÌÊÇÍÊÆÊÇÃËÈÄÉÇÄÄÅÃÀÁ½¾¿¹»¾·ºº·¼¼·¼¿·¼¿¹¼¿»¾Á¹¼¿¶¼½´»º¶¼½¸½½¹¼¿º¼¾º¼¾¼¾À¾¿À¿ÁÀ¾ÁÁ¿ÁÀ¾À¿»½¼¸»¸¹»º¸º¹¶¹¹¸»»½¿¾ÀÁÂÁÃÅÆÈÇÇÉÅÄÇÄ¿ÀÁ¸½½º½½º¼»·¼¼¸½½¸½½»¾¾¾À¿½¿¾¸»»¶¹¹·ºº¹»º¶¹¹´¹¹´··³µ·±¶¶¯¶µ±¶¶³¸¸¯´·­³´®³³«±²«±²®´µ­²µ©°²©°²§­±¤«°¦¬°¥«¯£©­Ÿ¦«¤¬›¢ª™¡§—Ÿ¥–ž§˜Ÿ§™¡§˜ ¦™¡§š¡©›¢ª¤¬ §¬¡©¬©°²¯´·®³¶©¯³¤«°¢©® §¬ §¬¡¨­¦­²«±µ¶¼ÀÈÊÌÕÕÕÖ×ÕÕÖÔØÙÔÛÛÕÜÜÖßÛÕßÜÕßÝ×ßÜÕßÜÕÞÜÖÞÜÖßÝ×ßÝ×ßÝ×ßÝ×ÞÜÖÜÖÐÔÊÄƸ±¼ª¤´˜«‰¡{•rlea†YVPM{GEvA>r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:s=9s=9s=9s=9s=9s=9s=9s=9s=9s=9r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:s=;u@=wCAu@=s=;s=;u?=t?<s=;s=;t><s=;s=;r<:r<:s=;r<:s=;r<:r<:s=;r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:s=;r<:r<:r<:r<:r<:r<:s=;r<:t><yEC…VSŒb`–qn›{{¤‹«¡¢®®±®´º­´¹¬³¸¯¶¾±¸À¯µ»²²µ´±´µªª¸¸»¹¾Á¸¿Ç»ÂÇ»ÅȽÅË»ÅȽÇʾÈʾÈʾÈÊÁÊËÂËÌÃÌÍÄÍÎÇÍÎÇÎÍÆËËÃÊÉÃÊÉÃÊÉÃÊÉÄÊËÆËËÉÌÌÈÎÌÌÏÏÌÑÎÌÒÐÍÓÑÎÓÏÎÓÏÑÓÏÒÕÒÕ×ÑÔØÒÕ×ÓØØÕÙÛÔÜÝØÝÞÙÝÞÙÝÞÙÝÞÙÝÞÙÞÞØÞßÚÝÞÙÝÞÙÝÞÙÝÞÙÝÞÙÝÞÙÝÞÙÝÞÙÝÞÙÝÞÙÝÞÙßßÙßßÙßßÙßàØàáÜàáÜßßÙÝÞÙÝÞÙÝÝ×ÝÝ×ÜÝØÛÜÚÖ×ÒÍÏ˼Á¾©¯­˜žŸ—™‹’”‰Ž‘|~kkn]U[VIM]HKs[[‘xu¤ˆ¨ŽŠ¥‡ƒ¡€{›xs—qm–pl•nifdŒ_\ˆ[X€NJyECvB@s=;r<:r<:r<:r<:r<:r<:t?<KI‘he¢~¬’Ž°žœµªª¶®®¸°°¸±²¸²´¸µµ»º¼¼¼Â½ÂŽÂžÁÅÀÄÊÀÂȾ¾Ä½ÁǽÁǾ¼Àº··»´µº³´¹²³¸°°¸°°¸®¯³¡ŸªŠŸ}{b_yECr<:r<:r<:r<:r<:r<:s>;t?<u?=t?<r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:t?<|HF€QL…[Yfcmk’sp˜~ŒŽ¢•˜¥ ¤§§°«¯·°·Á³ºÄ¶ºÅ·»Æ´»Å²¹Ã±¸À²¹Á°¸Ã°¸Ã¯¸Ä±¹Â²¹Ã²¹Á¯·À¬´¿«³¾¬²¹­°´®«®­ªª®¨ª­§©­§©¬£¥¬¤§ª¤¦ª¤¦ª§§«¨¨«¦¦¬£¢¯¡ ®Ÿ¬™–¦‹ˆ•pmƒTQ|HF|HFwCAs>;r<:r<:r<:r<:r<:r<:r<:r<:s=;t><vA>xDB}IG„URŽgd’mjgdda¡‚¯›¼´´ÊÄÃÓÐÌÓÐÌËÈÄÅÀÀÄÂÀÈÅÂÇÄÁÄÁ¾ÃÀ½¿¾½»¼½·¹»³¶¹²´¶°³¶¯²µ­´¶®µ·´¹¼µº½³¸¸±·¸¯µ¶²µ¸²µ¸³¶¹³¸¸´¹¹¶¸º·¹»¸½½¹¼¼º½½»¾¾º½½·ººµ·¶¶¸··¹¸·ººº¼»½¿¾¿ÁÃÀÃÃÀÃþÁÁ»½¿´¹¹²··³¹º²¹¸´¹¹·ºº¸»»º½½¹¿½¸½º·ºº·¹¸µ¸¸³¸¸³¸¸³¸¸±¶¹®µ´¯¶µ³¸¸³¸¸¯´·§®°§­±¥¬®§®°«±²¨¯±§­®¥¬®¤ª®ž¥ª¡¨ª¡¨ªž¤¨™ ¥™Ÿ¦˜Ÿ§”œ¢•Ÿ¥–ž¤”œ¢˜ ¦”Ÿ¦• ¥—¡§˜¢¨œ£«ž¥ª¢©«§®°®³¶ª¯²¦¬°£ª¯¦¬°«±µ­´¶¯µ¹¸¾Â»ÁÅÀÅÈÊÌÎÐÑÒÐÐÐÑÒÐÕÖÔÖØÔÚÚÔÝÛÕÞÜÖßÝ×ßÛÕßÜÕßÝ×ßÝ×ÝÛÕÞÜÖßÝ×ßÜÕÜÖÐÕÍÇ˽¶¼©¢´˜­‘‹£‚™vp’hd‰^[‚SP}IGwCAs>;r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:r<:t>:t>:t>:t>:t>:t>:t>:t>:t>:t>:t=:t=:t=:t=:t=:t=:t=:t=:t=:t=:t=:t=:t=:t=:t=:t=:t=:t=:t=:t=:s=;wB?|HF|HFyDAyECwB?wB?wB?u@=xC@xDBxDBwCAu?=v?<u>;u>;u>;t><t=:v?<u?=u>;t=:t=:t=:t=:t=:s=9t><xC@u?=v@>t><u?=xDBwA?t><t=:u>;u>;t=:u@=vA>u>;t=:u>;u>;u?=€NJ‹^[‘heœ{x£‹‹©—˜­žž¬¤§¯±´­´¹­´¹°¶½±·¾²¸¿³¹À²¸¾¹´´»¹ºº¿ÂºÄʾÆ̾È˼ÄʽÄɼÅƺÄǼÆȽÈË¿ÊÍ¿ÊÍÂÌÎÃÍÏÄÍÎÄÍÎÇÍÎÅÍÍÄËÍÄËÍÄÊËÇÌÌÉÎÎÊÏÏÊÍÍÎÐÏÌÏÏÏÒÏÐÕÑÐÕÑÏÒÏÒÕÒÕÙÓÕÙÓÔØÒÓÖÓ×ØÖÙÛÔÛÝÖÝÞÙÝÞÙÝÞÙÝÞÙÝÞÙÝÞÙÞßÚÞßÚÝÞÙÝÞÙÝÞÙÝÞÙÝÞÙÝÞÙÝÞÙÝÞÙÞßÚàáÜßáÚßáÚáßÙààÚÞàÙßáÚàáÜßßÙÞÞØÞßÚààÚßáÚÞßÝÜÝØØÙÔÍÏËÆÈľÁÁ¸½½º¿¿¸½½¬­®˜™š|wz_TW]INoYYŽwu¥‹ª”ªŠ¦‰ƒ¥„¢€~¢z£€{ }xœyt˜uo“ie‹]Y…TQxC@t=:t=:s=;t><s=;s=9vA>…VSœzvª‘Ž¯œ™³¦£·¯¯¸³³·´´¸¶·¹¸ºº»¼»»¾½ÀþÅÊ¿ÇÊÁÇËÃÈËÂÆÌÀÆ̾Æ̾ÅʽÂŽ½À¼¼¿»»¾ºº½»¹º¼¶¸º²²¸ª©²ŸœªŠ–ojOKu@=s>;u?=v@>vA>yECOK„SPƒROKIwA?u>;t=:t=:t=:t=:t=:t=:t=:t=:t=:t=:t=:t=:t=:t=:t=:t=:t=:t=:t=:s=;yEC}IGSO†[X‹b_ig‘qq—||›†‰Ÿ—¢ §¥§°§«¶ª±»®µ¿°·Á¯·À¯·À¯·½¯·À¯·Â°¸Á°¸Ã±¹Ä²¹Á¯·Â«³¹«³¹­°·­¬±¯ª­­§¦¬¤¤¬¤¤«¢¡«¢¡«¡Ÿª¡ ª¡ ª¢¢ª£¤«¢¡®¡¡®žž®œš¬•“¢~Œb`|HFvA>v@>s=;t=:t=:t=:t=:t=:t=:t=:v?<xC@zFDzIH‚SP„WT‹`]‘nkš|{£§•–¨°žœ»µ·ÉÄÄÐÍÉÔÐÊÏÌÈÈÅÂÂÀ¾À¿¾¿¿¿¾¾¾¼º¸¹·µ¶·¸²³´°²´¬¯²¬¯²©®±¦¬°¤¬²©°µ¬²¶¯´·¬³µ«±µ­³´­³´ª±³«±µ«²´¬³µ®³¶®´µ±¶¶³¸¸³¶¶µºº¹º»·ºº¶¹¹¶¸·¸¹º¹º»·ºº¸¹ºº¼»¸»»¶»»·¼¿²¸¹²··°¶·°µ¸®³³¯´´°µµ³¸¸µºº¸½½¸½½µºº²¸¶±¶¶°µµ²¸¹²¸¹¯´·¬³µ®´µ°¶·¯µ¶§­±¤ª®¡¥« ¦ª£ª¬§­®¤«­¡¨ªž¦©š¢¨˜ ¦™¡§›£©™ ¥•œ¡–¥“šŸš ’¤“ž¥’œ¢‘œ£“ž¥“ž¥–¥–ž¤—Ÿ¥›¢ª¥«¢¨¬§­±¦¬°¦­²§­±®´º»ÁÅÀÆÇÂÈÉÄÇÊÅÈËÅÈËËÍÏÊÌÎÌÍÎÍÏÎÒÓÑÒÕÒ×ÙÒÜÜÖÝÛÕÝÝ×ÝÚÖÞÜÖÞÜÖÞÜÖÛÛÕÛÛÕÝÛÕÜÙÒÕÎÉÌ¿¹¾®¨³œ—¬’Œ¥†›xs“lgŒa^„UR~LHyECu?=u>;t=:t=:t=:t=:t=:t=:t=:t=:t=:t=:t=:t=:t>:t>:t>:t>:t>:t>:t>:t>:t>:t>:s=9s=9s=9s=9s=9s=9s=9s=9s=9s=9s=9s=9s=9s=9s=9s=9s=9s=9s=9u@=zHD†YV‘lic_ƒTQ‡\Y‹`[€QL}KG|JF…WS‰^[ca‹a]€NJwB?vA>vA>u@=t>:v@<v@<u@=u?;t>:t>:t>:s=9s=9wB?|GD}IG|JE~JH}IG}HEKI…SO{IDt?<u?;t>:s=9wB?vA>u?;v@<s=9s=9u?;PJ`]’ifšyv©˜—®¤¥­žž¯¦¨³³¶¯µ»®¶¼°·¿°´¼¯´½±¸À°·¿²¸¿º··ºÀƺÄʾÈËÁÈʽÈͺÅʺÅȺÅȼÆɽÈ;É̽ÊÍ¿ÊͼÉɽÈÈÂËÌÃÌÍÃÌÍÃÊÌÄËÍÄÉÉÇÉËÊÏÏËÐÐÎÑÑÎÑÑÏÒÒÑÔÑÒÕÒÑÖÓÓÖÓÒ×ÓÓØÔÖÚÔÔØÒÔØÒÕÙÓØÚÓÛÜ×ÝÞÖÝÞÙÝÞÙÝÞÙÝÞÙÞßÚßàÛßàÛÝÞÙÝÞÙÝÞÙÞßÚÞÞØÞÞØàáÙáâÚàâÛâãÛàâÛàâÛáâÚàáÜáâÝáâÝáâÝßáÚààÚàáÜáâÝáâÝßàÛÝßØÝÞÙØÚÖÔÖÒÌÏÌËÐÍÍÒÏËÐÍÄÇÇ·¹¸œ›sknaQToYZŽxw¥±ž™²—±š•°—”¯•‘®“Ž¬Š­‘‹¯”°–’«‰ }w”jfOKvA>wCA}IG€NJ}IGyEC~LH’if¨Š°žœ³¥¤µ¬«¸²´¹·¸¸¸»¹¸º»½¿»ÀüÁļÃÅ¿ÇÊ¿ÉÌÂÉËÀÇÉÀÆÊÁÈʾÈ˾Æ̾ÅʼÃżÂȼÀÆ»ÁÅ»¾Â¼»½¼µ¶¹¬¬·¦¤°š–¤ƒ€’hd‚QN~JH…VQ‹^[Š]Z‰\Y•okœwt™rme_~LHwB?u@=u@=t>:s=9s=9s=9s=9s=9s=9s=9s=9s=9s=9s=9s=9s=9s=9s=9s=9s=9vB@zFD~LH€RN„YVŠa^Œifol“yw•˜‡‰š’œ”šŸ£¤¢©§©¯ª­´­±¹®´»®µº­·½­·À®¶¿­·À°¸Ã°¸Á¯·À¬¶¼ª´º«±·­­°¯ª­­¨¨«££«¢¡¬ŸŸª žª ž«œ« ©Ÿ© Ÿ«  ­Ÿž­žœ­—–ª‘ŽŸ~{ˆZVwCAt>:s=9s=9s=9s=9s=9s=9s=9s=9s=9u@=zHDSO‡a_Œoouv“yznm’pn¦˜›¬§«³¬­·¯¯Ä¿ÂÉÆÆÌÊÇÌÉÅÇÄÁÃÂÁÁÀ¿¿¾½¹¹¹¶·µµ´³²³±¬±±«®±§¬¯¤©¬¡¦©ž¤ª¤©¥«¢©®¦¬³§­±¦­¯¦¬°§®°¦­¯¦­¯¦­¯¥­°¥¬±¥«¯§­±ª°±«°°ª°±¬²³¯µ¶²´¶³µ·³¶¶³¶¶´¶¸´µ¶³¸¸µ¸¸²··±¸·°¸¸­µµ®´µª³´ª±³ª±³«±²­³´¯´´¯´´´¹¹µºº²··®´µ¬²³­³´±¶¶¯¶µ«²´¦®±§­±¨¯±§­±¢©®Ÿ¦«£§™ ¥š¢¨œ¤ª˜£¨˜¢¥“£’œ¢“›¤“£“ž£œ¢šŸš ™ŸŒ—ž‘™¢”ž¤•Ÿ¥‘œ£’¤”œ¥•œ¤–ž§—Ÿ¨›¡¨ž¥ªœ¤ªŸ¦«¦¬°®´¸­³·µº½ÀÃÆÇÉËÉÌÌÊÌÎÊÌÎÈÍÍÉÌÏÉËÎÉËÍËÎÎÍÏÎÒÔÓÖØÔÙÚÕÙÚÕÙÚÕÙÚÕÙÚÕÛÛÕÚÛÖÙÚÕØÙÔØØÒÕÏÉμ¾±«²—ªŽˆ¥†ž{v”njb]†XT€OI|HFvA>t>:s=9s=9s=9s=9s=9s=9s=9s=9s=9s=9s=9s=9s=9v=:v=:v=:v=:v=:v=:v=:v=:v=:v=:u>8u>8u>8u>8u>8u>8u>8u>8u>8u>8u>8u>8u>8u>8u>8u>8u>8v?9w@:€NJidœ~¢Œ‹¢Œ‹œ~‚„™xu–ur‘li™}Ÿ†…¢‹‰{Š]W}HEwB?xB>xB>xB>wB?wB?wA=wA=wA=KI~LGxC@u?;xB>wB?zEB„RNe_Ža^‡XS€NI„SM}HEv@<v@<v?9v@<wA=xB>}HEyDAu?;u>8w@:OJŽc]•lf z±¡¡¹´··µ¶¸º½·¼¿²¸¿²¹Á³ºÂ¯´½¯µ¼¯µ¼­µ»±·¾½¿ÂÀÆʸÃÈ¿ÆË¿ÇʼÆÉ»ÃɹÃɹÃƺÄǺÂÈ»Å˺ÆÌ»Æ˽È˽È˾ÉÌÀÊÌÃÌÍÁÉÌÄËÍÅËÌÄÊËÉÎÎËÐÐÍÐÐÎÑÑÍÓÑÑÔÑÒÕÒÐÓÐÒÕÒÓØÔÕÙÓÖÚÔ×ÙÓÔ×ÔÖØÔØÚÔÚÜÕÞÞØÝÞÙÝÞÙÝÞÙÝÞÙÝÞÙßàÛßàÛßàÛßàÛÞßÚÞàÙáâÝâãÛâãÞãäÜâãÞâãÛàâÛáâÝáâÚàáÙáâÝáâÝáâÝàâÛáâÝâãÞâãÞâãÞáâÝààÚßàÛÛÝÙÙÛ×ÖØÔÔ×ÔÓÖÓÒÕÒÎÓÐÄÉƳ´²“ŽŽvkk{hh•€€¬š–·©¥º¨¤¸¨¢¶¢œµŸ›µ¡›·¡¸¦ »­©À¶´½²¯±›—¢zd^€NI†XT“hc”mh’gb‹^[’hd£‚­š—³££µ«©¶¯­¸¶·¹·¸º¼¿¹¼À¹À»ÂǼÄÇ¿ÆÈ¿ÇÊÂÉËÃÊÌÁÈÊÃÈËÃÉʽÈÈ¿ÈÉ¿ÇÊ¿Æ˾ÅʽÄɼÃȼÂƼ¾Á¼¹¹»²±¹«ªµŸ›±–‘©Š…œwt–oj¡~yªŒˆª‹†¢€|§†­’©Š…žxt_[„RN€NI}HExB>v?9v?9v?9u>8u>8u>8u>8u>8u>8u>8u>8u>8u>8u>8u>8u>8u>8u?;wB?|GD}KF€QL…WSˆ]X‹damiŽqn‘xw”~•„†šŠ“¢˜œ¥ §£©«ª¯«®²¬²¸®´»­µ¾®¸Á±¹Ä²¹Ã¯·Â­µÀ­´¾¬²¸­°´®­¯¯©«­¥¥­¢¢¬ŸŸ«œš«œ«œ«œªœ›ªœ›«œ­œš­›™¬—”©Ž‰›yu‚QKw@:u>8u>8u>8u>8u>8u>8u>8u>8u>8u>8u>8wA=€OL‡fh‡rvˆ{‚‹‚‰”„‡™© §¯­³·µ¹¾½¿ÃÁÂÈÅÅÄÃÂÁ¿ÀÂÀÁÂÀÁÀ¿Á¼»½¶·¸³²±°¯®©¬¬¤©¬ ¦¬Ÿ£©›¡§š ¦š¡¦œ¢©›¡¨š¢«œ¤­ ¦­Ÿ¦« ¦­ §¬¡¨­¡¨­£«®¢ª­Ÿ¦« §¬¡¨ª£©­£ª¬¦«®¤«­¨«®¨­­ª¯¯«°°¬¯²¬±±¬²³­³´¯µ¶°µµ¯µ¶­´¶ª±³ª±³©°²¦®±§¯²¨¯±©°²ª±³ª±³²··²··®³³§®°¨®²¦­¯§®°¦­¯£«® ¨« §¬£©­¢¨¬ž¥ªš¡¦—Ÿ¥—¡¤–ž¤“ž£“£›¢Ž™ Ž™ ›¡š¡›£Ž™ ˜ŸŒ—ž‰•Š”˜Ÿ’š£“›¤˜Ÿ˜Ÿš£“›¤–ž§™ ¨™ ªœ£«¤¬¡§®ª°´·¼¿´º¾¸½À¿ÅÆÃÈÈÉËÍÊÌÎÈÍÍÆÌÍÇÌÏÈËÎÅÊÍÇÊÍÊÍÍÎÑÑÒÕÒÓÕÑÑÔÑÑÔÑÑÔÑÓÕÑÓÕÑÔÕÐÓÔÏÑÒÍÑÍÇÍÁ»À³­¶¢œªŠ¡€{zu–pie`†YS‚PL}HExB>u?;u>8u>8u>8u>8u>8u>8u>8u>8u>8u>8u>8u>8u>8u>8v?9v?9v?9v?9v?9v?9v?9v?9v?9v?9u>8u>8u>8u>8u>8u>8u>8u>8u>8u>8u>8u>8u>8u>8v?9v?9xA;yB<|FBŠ_Zƒ¦˜š¦œ ¦››¥˜˜¥••¤“’¢‘ ž‘”Ÿ•™¥šš§šš¥Œ‰—qm…VQ~HDzD@|FB}HB…SL‚OIzD@yC?}HE‘f`–le‡UNyD>xA;wA=}GC„QK‡VPˆWQ†UO„RK}HEyC?xA;xA;w@:xB>yC?}HE†TP}HEyC?}F@xB>ƒQLŸxs°’‹¿¨£Ë½¼ÄÄÄ»ÁŹÀŶ¾Ä°¸¾¯¹¿¯·½¯¶¾¯µ¼°¶½¯µ»´ºÀ»ÁǾÈ˺ÄʹÄɸÃȹÁÇ·ÃÉ·ÃɹÀÅ»ÂʸÀƺÂ˸ÃÊ·ÃÉ»Æ˽È˽ÈËÁËÍÃÌÍÃÌÍÄÌÌÅÌËÅËÌÇÍÎÉÎÎÉÏÍÎÐÏÌÑÎÏÔÐÏÔÑÐÓÐÐÕÒÓÖÓÓÖÓÕ×ÓÖØÔ×Ú×ØÛØÙÛ×ÝÞÙÞßÚßàÛÞÞØßàÛÞàÙààÚàáÜÞàÙßßÙààÚàáÜáâÚáãÜãäÜãäÜãäÜãäÜâãÞàâÛáâÝàâÛáâÚáâÝáâÝáâÝáâÚâãÛáãÜáãÜâãÞâãÛááÛßáÚÝßÙÛÝÙØÚÖÕ×ÓÖÙÖÔØÒÏÔÐÌÏÌÀÃÀ¸¹·©£¢œ‘Ž£•‘²¤ »¯©¾±®¾±®¼­¨¹©£º«¦¼®ª¿´±Ä¾½ÈÆÇŽ²¯´žš©Š…štp˜uo¤ƒ~¨‡„¤…€£‚§Œ‰°š™²¢¢´§§µ¬«¶¯°¸µµ¹¸º¹¾Á¹¿ÃºÁƼÃȽÅÈ¿ÈÉÂÈÉÄÊËÆËËÆËËÄÊËÂÉÈÂÉÈÁÈÇÂÉÈ¿ÈɾÆɼÆÉ»ÅȼÃȼ¿Ã¼¾Á¾·¸º¯¬¹§£·¤¡µ¢Ÿ³™²—’´š–¶£ ¸¦¢¶£ ¶ œ·¡µ›—­ˆ¤yœvo–le^Y€KHwA=v?9w@:u>8u>8u>8u>8u>8u>8u>8u>8u>8u>8u>8u>8u>8u>8u>8w@:zC=|FB|JEOKƒTO…ZWŠa^Œgdlkrr‘vv“zy—š‡‡œŒŒ¢”–¤œŸ¦¡¥¨¦ª¨«¯«±µ­³º¯¶À²¹Ã±¸Â°·Á­¶Â­´¾­²»­°·®«®¬¤¤­Ÿž«œª™˜ª˜–ª˜–ª˜–¨–”ª˜–¬š˜¬š–¬™”¬•“¨Œ†˜rn}HEu>8u>8u>8u>8u>8u>8u>8u>8u>8u>8u>8u>8u?;~IF„^\„lr…u~‡|ˆˆŽ ˜ž«ª¯µµ»º¹¾½½ÀÁ¿ÃÀ¿Á¼»½·¹¼º¸¹»º¹ºº½··º²³´®®®«ª©¦¤¨Ÿ¡¤œŸ¦š ¦™Ÿ¥•œ¡™ž¡™£•œ¡“›¤•¦š¡©›¢ªš¡©›¢ªœ£«ž¥ª §¬ §¬ž¤ª£ªœ¢¨ž£¦œ¢¨Ÿ£©ž¤ª ¦ª¡§«£¨«£©ª¥ª­¨®¯©®±§­±ª¯²¬±´ª±³¨¯±¨¯±§®°¥¬±¢©®£ª¯¤«­¥¬®§®°¬³µ±´·¬²³¦­¯¥«¯¤«­¡©¬ž¨«ž¦©¥«¤©¤©š¢¨™¡§™ ¨—Ÿ¥—¡¤—¡¤”Ÿ¤”Ÿ¤“ž¥’¤“£’ž¤“£’œ¢“ž¥Ž™£Š–žŠ–ž‡“›ˆ”œˆ”œŠ•ŸŠ–¡Š–žŒ˜ ™¡’š£•¦–¥˜Ÿ§£ª¡¨­­³·º½ÁÀÅÅÂÅÈÂÅÈÄÅÆÅÇÉÅÇÉÃÆÊÄÇÊÃÈÈÀÅÅ¿ÄľÁÄÀÂÅÃÆÉÇÊÊÉÌÌÉÌÌÇÌÌÊÍÍÈÍÍÊÌËÊËÉËÌÇÌÊÇÊľƼ¶¿±ª¶£œ¬”Ž£‚}™vp•oke`Š[V„RN~IFyC?w@:u>8u>8u>8u>8u>8u>8u>8u>8u>8u>8u>8u>8u>8u>8u>8w>8w>8w>8w>8w>8w>8w>8w>8w>8w>8u>8u>8u>8u>8u>8u>8u>8u>8u>8u>8u>8u>8u>8u>8xA;w@:yC?zE?‡XSžƒ€§š¤ ¦¥¡§¤Ÿ£¥ ¥œ›¢šš¡™œš˜ž™˜ ™›¡¢¡¨žŸ«š˜§‰•okŒ^ZŠ[VˆYT–le¢z‘fa‚PIOH„RKŒ_Y˜ng“hbNHzE?|IC„RK`[†TMLFLF}HB~HD|FBzE?zE?yD>}HB„RK‚PIŠYS€KE}JD„RKƒQJ‘d^²”Êµ¯Óž×ÏÉÏÎÍ¿ÅÉÀÆʽÀĶ¼À°¸¾°·¿­´¹¯µ¹°µ¸¸µ¸ÂÀÄÒÑÐÍÐнÅË·Ã˹ÃɸÀÆ·ÂÉ·ÂǸÀƹÁÇ»ÁȺÂȺÂȸÃʸÃȹÄɼÄʾÉÌÁÉÌÂËÌÄÌÌÄÌÌÄËÍÅËÌÆÍÌÇÎÍÊÏÌËÐÍÍÒÏÌÒÐÎÑÑÐÕÒÑÖÓÓÖÓÓÕÑÕØÕØÙ×ÚÛÙÛÜÚÛÜ×ÜÝØààÚàáÜáâÚáâÚáâÚáâÚáâÚáâÚáâÝàâÛâãÞáãÜãäÜãäÜãäÜãäÜâãÛâãÛàâÛáâÝáâÝáâÝáâÝáâÝáâÝâãÛãäÜãäÜâãÞâãÛàâÛÞàÚÞßÚÝÞÙÛÛØ×ÙÕØÛØØÚÔÔ×ÔÐÕÒÌÑÎÊÍÍÄÅü¹¶¶®¨»°«¾²¬Àµ°Äº·Á·´¿³­¾²¬¿µ²Á»·ÅÂÂÊËÌÇÈÉÅÂÂż»½¯«²˜’¬Š°–’±›—±›—±œ™² ž´¦¥·¬¬¶®®·¯¯·±³º¸¹¹¼ÀºÀĺÀÄ»ÁÅ»ÅȾÈÊÁÈÊÃÊÉÅËÌÆËËÆËËÅËÌÄÉÉÆÉÉÇÊÊÃÊÉÂÉÈ¿ÈɽÆǼÄǽÅȾÄÊ¿ÁÄ¿¼¼¼³²¼¯¬¼±®¼±®»°­»ª¨¹§£½¯®¿¶µ¿¶¸¿±°½¬ª»¨£·¡´˜³˜“«Š…šsn†UO|FBxB>wA=u>8u>8v?9u>8u>8u>8u>8u>8u>8u>8u>8u>8u>8u>8u>8u>8v?9xC=zGA}JDNHSO…ZU†]Zˆc`‹igŒkhŽnnsp”zx–~~›…„Œ‹¢‘“£–™¤ž¡¤¢¦¦¨®ª­´®±¸®²º®µ¿­´¾­´¾­±¹­­³¬§ª«œ¦“¦‘Ž¥‹¤Š†£ˆ…¡†ƒ¡†ƒ£‰…§‘«˜“¬—”¬–’§Œ‡—qm|ICu>8u>8u>8u>8u>8u>8u>8u>8u>8u>8u>8u>8u>8wA=|JF…\[ˆjmŠuyƒ‹™¡­«²³³¹·¶»··º¸¸»¶¶¹³µ¸²´¶´±±´²³°²µ±³¶®®±«©ª¦§¨¢¢¥› šœŸ˜›Ÿ”šž’™›“™‘˜˜ž— ‘™¢“›¡’œ¢’¤”ž¤”ž¤—Ÿ¥š¢¨š¢¨™¡§š ¦—£–œ£˜ž¥˜ž¥™ ¨š¡¦£©œ¢¨£©¡§«¥ª­¤¨®¤ª°¥«¯¨®²¨®²§®³¥¬±¡¨­Ÿ¦«¤©Ÿ¦«¤«­§®°ª°´ª°´¦¬° ¦ªž¤¨¤©ž¥ªœ¤ª›£©–¡¦—Ÿ¥š¡©š¡©–ž§˜Ÿ§—Ÿ¥—Ÿ¥– ¦–ž¤’¢• ¥˜¢¨™£©›£©¤©œ¦©›¥¨˜¢¨’š£— ‰”ž„’›„˜†’ˆ”œ‰•Š–žŠ–žŒ—¡™¢’œ¢•œ¤š §§ª®·º½ÀÅÈÄÉÉ¿ÄÄ¿ÀÁ¼½¾¼¹¹¾»»¿½¾¾»»¾¸·¼µ³º´³¸±¯¶±±¹´´º¹»½¿ÁÁÂÿÅÆÂÅÅÅÆÇÃÈÈÆÈÇÈÅÂÉÂÀÆ¿º¿³­¹ª¥³Ÿ™¬•£…~›xs“mf‘fa‰\VƒRL~KEzGAwA=u>8u>8u>8u>8u>8u>8u>8u>8u>8u>8u>8u>8u>8u>8u>8u>8w>8w>8w>8w>8w>8w>8w>8w>8w>8w>8w>8w>8w>8w>8w>8w>8w>8w>8w>8w>8x?9y@:y@:xA;y@:zC=~HDˆ[U›yu§™›¦¥¯¤¤­££©¥¡§¤¡¤¤Ÿ¢Ÿ£™™¢“—¢‘–¢”˜£¡Ÿ¥© ¢¬¡ž®œ˜­–‘ªŽˆ§‰‚¤‚{°•´˜«Žˆ {u—phe_Ž_Z˜me—ld^Y†SKˆVOŽ_Zb[‹YR~KE}GC}F@zE?|FB€KENFNHJD„RKŠYS‹ZTˆWQ‚OIˆWQšskµ˜’ɳ¬ÔÈÀÚÐÊÛÔÌØÖÓÈÍÍÃÊÌÄÉÌÃÆɽÂŶ¼Ã±·¾°³·¶µ·½¶·ÍÌË×ÕÓÞÜÙÐÕÕ¼Æ̺ÂË·¿ÅµÀŸÀÆ·¿Å¹ÁǺÂÈ»ÁȼÂÆ»ÂǹÃƹÃƺÄǼÆɾÈÊ¿ÈÉ¿ÊÊÀËËÄÌÌÂÌÎÅÍÍÇÍÎÉÏÍÊÐÎËÑÏÌÑÎÍÐÐÏÔÑÐÓÐÏÔÑÑÕÏÓÕÑ×ØÖÚÚ×ÚÛÙÛÜ×ÛÝÙßàÛààÚáâÝáâÝàâÛâãÛâãÛâãÞâãÞâãÞáãÜáãÜãäÜãäÜãäÜâãÞâãÛâãÞâãÛàâÛàâÛàâÛàâÛáâÝáâÝàâÛâãÞâãÞáâÝàáÜÞßÚÝßÛÝßÙßàÛÞßÚÜÞÚÚÜØÚÜØØÛØÓØÕÎÔÒÐÓÓÏÑÐËÌÊÄ¿¼À¹´À¶³Å»¸Äº·ÅºµÅ½ºÅ»¸ÁºµÄ½»ÅÄÃÊÍÍÊÏÏÊÍÍÊÊÊÁ»·¼­¨º¨¤µ£Ÿ¶¤ ·¨¦µª§³©§¶­¬·°±·±³¸±²¶³³¸º½¸º½ºÀƺÁÆ»ÂʼÄʾÈË¿ÆÈ¿ÈÉÃËËÄÌÌÃÉÊÄËÊÇÊÊÇÊÊÈËËÈËËÃÉÊÃÉÊÃÉÊÂÊʾÅÇ¿ÅÌ¿ÃÉÀ¿ÁÀ¹·¿·´¾¹¹Àº¹¿¸¶¾´±½°­¿µ²Ã½¿Ã½ÀÁ¹¹¿´±½¯«½®©¿®¬½ª¥·œ—¢|u‹\WLF|E?yB<x?9w>8x?9w>8w>8w>8w>8w>8w>8w>8w>8w>8w>8w>8w>8w>8w>8x?9xA;zD@}HE~MG€QL‚URƒ\Y†`^‰dd‹ffŒjhŽol‘tt”ww—|y™€›……œŠ‹“¡—›¤œ¢¦¡¨¥£©§£«¨¦¬§¥«¨£§©›¦•”¥Ž‚š|x—vq–sn‘nhŽgbŽd`•ok|y¥‹‡¨‘Œ¨ˆ¤ƒ€•ni}HBw>8w>8w>8w>8w>8w>8w>8w>8w>8w>8w>8w>8w>8w>8|FB€NG‚SNŠa^‘{~˜Œ‘¤œ¢ª¦¬¯¬¯®­¯±¬¯°«®¯¬¬­¬®¯­®¯¯¯®­¯¬®±ª¬¯¨§¦¢¢¥› ˜š–™“–š–šŒ“˜Š”šŒ“˜–›‘˜ —š Ž˜¡Ž˜¡Œ˜ ‘›¡”ž¤˜ ¦˜Ÿ¤™Ÿ£”š ‘—ž–›“™ •›¢—¤—ž£˜ž¤š ¦š §›¢§¤© ¦ªŸ¦«ž¥ª¡§®¥¬±¨®²¢©®¢©®¡¨­Ÿ¦®Ÿ§­¥¬±¦­²¡¨­œ£«˜ ¦–ž¤—ž¦—ž£– ¦– ¦”ž¤”ž¤’¤•¦”œ¥’œ¢“›¤”ž¤”ž¤’œ¢‘œ£’œ¢•Ÿ¢—¡§›£©˜¢¨˜ ¦Ÿ¦«¢©« ª­›£©–ž§™¢„’›ƒš…‘œ‰•‹– ‹” Œ–Ÿ˜¡“š¢•›¢—£¢¢¥¶®®À½½ÄÇÇÀÆǾÁÄ»»»¸³³µ¬«¶©¦·©¥²Ÿœ¬’Ž«”®—’®™–¯›²£¡¶­¬¹³²¼¹¹½¼¾À¿ÁÄÃÅÇÈÉÉÉÉÇÄÁĺ·½²¯·¦¤±›—«‘‹£†€œ{v•ok‘faŠ]W…TN€KE}F@xA;w>8w>8w>8w>8w>8w>8w>8w>8w>8w>8w>8w>8w>8w>8w>8w>8w>8x?9x?9x?9x?9x?9x?9x?9x?9x?9x?9w>8w>8w>8w>8w>8w>8w>8w>8x?9w>8y@:yB<yB<zC=|E?~HDŒ_\£‹‹ª ¤«­³°²»©«±¥£§¦¡¤¥¢¥£ £šœ¢•˜¢‘–¢– ”˜£¢Ÿ¢©¡¡­£¡±£Ÿ³¤Ÿµ£Ÿµ£Ÿ¶£ž¸©¤º¨¢¸¢›¶ ™´œ–®‰¡{tŸxpŸvp—ld^Y‡VP_Xb[„QK€KE…RL‚OG~HD‚OG^Y yt£€x›qj_X^XŽ_Z‰XR`[¤y¾©£Î¿ºÔÊÄÚÒÉÝÖÎÝ×ÐÝÙÓÕÕÒ¾ÅʾÅÊÈÉÊÅÄÆ¿ÂÆ·»Áµ»¿¶ºÀ¾ÁÄÓÓÓßÝÛßÜØÛÜ׿É̸ÀÉ·¿Å¸ÃʶÁÆ·ÁĶÀƸŸÀƼÂƸÃȸÃÈ·ÂǹÃƺÄǽÆÇ¿ÈÉÂÊÊÀËËÂËÌÃÌÍÅÎÏÇÎÍÈÏÎÈÐÐËÐÐÍÐÐÌÏÏÍÐÐÎÑÑÐÓÐÓÔÒÓÖÓ×ØÖÚÚ×ÚÚ×ØÙÔÛÜ×ßàÛàáÙàáÙâãÛâãÞãäÜãäÜãäÜãäÜãäÜãäÜâãÛâãÞâãÞâãÞâãÞâãÞâãÞâãÞàâÛáâÝáâÝáâÝáâÝáâÝáâÚâãÛáâÝßàÛÞßÚÜÝØÞßÚßàÛÝßÙÝÞÙÞßÚÜÝØÚÜØÚÝÚÕØÕÓÖÓÒ×ÔÐÕÒÐÒÑËËÈÅÀ½Å¾¹ÈÁ¿Æ¿ºÆ¿ºÈÃÀÈÅÂÈÅÂÅÃÁÆÆÃËÎÎËÑÏËÒÑÉÏÐÆÅÄ¿¼¿º·Áº¸½µ²¸°­¸¯®¸²´¸²´¶°²·´´·¶¸·¶¸·º½·º¾¹¿Å¹ÁǸÃÈ»ÃÉ¿ÆË¿ÈÉ¿ÈÉ¿ÈÉÄÊËÃÉÊÇÊÊÈËËÍÍÍÎÎÎÉËÊÈËËÈËËÉÌÌÇÌÌÂÉËÀÇÉÂÆÌÂÀÁÁ¿½À¿¾Á¿ÀÀ¿¾¿¼¹¾¹¶À¶³¿¸¶ÃÀÃÃÁÂľÀÁ¸·Àµ°À³°Ä¶µÁ´±¼¨¢­Œ‡•jd‡UN€KEzD=x?9w>8w>8w>8w>8w>8w>8w>8w>8w>8w>8w>8w>8w>8w>8w>8w>8w>8w>8w@:yC?|FB|IC~MJRO‚XV„[Z†_\ˆb`ŠeeŒjhnjol“qm“pk’ol”vu–~~™‡ˆ›‹ŽœŒœŒ‹Œ‹œ†…•zw‘so”spnkŠeb‰c_‡`[ƒZT~OJ{JGƒUQ‹b\’mg™ws›xs•ni‹\W|E?w>8w>8w>8w>8w>8w>8w>8w>8w>8w>8w>8w>8w>8w>8zD@}GC~HD‡\Ymk•wv›ƒƒ¢Œ‹¨““©—•«˜•­  ­¤£­¦§¬«­ª«¬ª«¬§©¬§§ª¤¢£ŸŸ¢–™”—žŽ”›Œ“›‡˜„Ž—ƒŽ˜†Ž—“š‘—›–›—œ‹•›‰“œ‡“›—“£™Ÿ¥™ž¡•™Ÿ’–œ–•›•œ—œ“š¢’š •›¢—ž¦˜Ÿ§™ ¨™¡§š¡©š¡©š¡©œ¢©¡¨­£ª¯¢ª°£ª¯¡©¯¥­³¥­³¥­³¤®±Ÿ©¬–¡¨’¤“›¤’š “£’¤š¡Ž™ Ž™ Ž™ Œ˜ Ž™ Ž˜¡š¡š¡š¡Ž™ ›¢”œ¥‘œ£‘œ£’œ¥‘œ¦”œ¥›£©¥¬±¨¯±¨¯±§¯²š¥ªŽ˜¡‡’œˆ–ŸŠ–žˆ”Ÿ˜¢˜ «£¥«¨¦ªª§§®¦¦±ž›±˜•¸«¨¿¾À¿Áľ¿À¹·µµ¬«´¦¢¶¤¢²œ˜©Ž‰£„¥‡ƒ¦‰ƒ«’­˜•²£¡·®­µ®¬¹³²¾¼½ÁÀÂÄÆÈÇÈÉÆÅÄÄ¿¿½³±µ¤£°›˜©‹¢…‚œ{v”qkgaŠ]W…TN€NG}F@xA;x?9w>8w>8w>8w>8w>8w>8w>8w>8w>8w>8w>8w>8w>8w>8w>8w>8w>8x?9x?9x?9x?9x?9x?9x?9x?9x?9x?9w>8w>8w>8w>8w>8w>8x?9x?9w>8zA;{B<{B<yB<~E?IE`]©²®¶´´½®±¸·ºÁ¬¯³©¦¦§¢¥¤¢¦¤¢¦Ÿž£–™ ’— ’™£•›¢¢ ¤©¤§®¨ª³ª©¶©¦¹­§º¯ª»°«¼±¬½¯¨½¯¨¾±«¿­§º¤›¶œ“¯ˆ§xulŽ_W‡UNŠXQ‰VN„OIƒNH‰WP‡TL‡TL’e_¦ƒ}º§¤À±¬¶œ“«‰€œum’d]—ldª‰„ų¯ÐÆÃ×ÏÉÛÔÌÝ×ÐÞ×ÏáÝÕàÜÖÙÙÖÊÏϺÁƼÃÅÈÊÉÉÉɾÁż¿Â¹¿ÃÁÇËÑÔÔÞÜÙßÝ×Ô××½ÄɸÀɹÁÊ·ÂÉ·ÂɵÀŶÀÆ·ÁǹÁǼÃȹÄÉ·ÅɸÃƹÃÅ»ÆɼÉÌÀÊÌÂËÌÂËÌÃÌÍÂÌËÂÍÍÅÍÍÆÍÌÉÐÏÊÐÎÌÏÏÎÐÏÍÐÐÐÓÓÑÔÔÓÖÓÓÖÓ×ØÖ×ØÖ××ÔÚØÕÛÜ×ÞßÚààÚàáÙâãÛãäÜãäÜãäÜãäÜãäÜãäÜãäÜâãÞâãÛâãÞâãÞâãÞâãÛâãÛàâÛàâÛáâÝáâÝáâÝáâÝáâÝàâÛáâÚàáÙààÚßàÛÜÝØÜÝØÝßÙÞßÚÝÝ×ÝßØÜÞ×ÛÜ×ÛÝÙÛÜÚØÛØÕÚ×Ô×ÔÑÖÓÐÑÏÊÊÇËÌÇÍÍÊËÉÇÊÅÂÉÇÄÊËÉÊËÉÊÌËÊÍÍËÑÏÌÓÒÌÓÒÊÑÐÅËÌÂÉÈÂÅÅÁÆÉ¿Áþ¹¹¼º¸º¸¹¸µµµ³´¶¶¹··º·º¾·¼¿·¼¿¸½À¹¿ÃºÂÈ»ÃɽÅÈ¿ÇÊ¿ÈÉÂÈÉÄÊËÆËËÇÊÊËÌÍÎÎÎÎÏÍÎÏÍÍÎÌÌÍËÊÌËÈËËÅÈËÄÉÌÃÉÊÄÆÉÁÂÃÀÁÂÀÁÂÀÁÂÁÀ¿À»¸Â»¹¿¼¹ÀÁ¿ÃÅÄÁÀ¿Á»ºÃ¼·Ä½»Å½½Å»¹Â±¯¹¡›¨…}”ga‡TL€JC}D>zA;x?9w>8w>8x?9w>8w>8w>8w>8w>8w>8w>8w>8w>8w>8w>8w>8w>8w>8x?9zA;zC=|FB}JD~LH€QL‚UR„YV†[Vˆ]X‹`[Œa\Œa\†YS„UP‚UR‰_[ŒjhŒolŒollinkŠmjˆgdƒ`[€[X}XU}WSxSPxQLvOJtJFqDAqC?sEAvHDzMGƒUQˆ[U„SMzGAv@<w>8w>8w>8w>8w>8w>8w>8w>8w>8w>8w>8w>8w>8w>8zA;y@:zD=ƒQJ‰ZUŠ]Wd_d_‘fa•ohŸ~yª˜–¬ž«£¦¦¨«¤¨®£¨«¢¥¨¢¢¥Ÿ¢—š¡’–žŒ“ˆ™…–„Œ•Š–€Š“‚Š“‰““–’•˜’—šŽ•šˆ–ˆ™Ž–œ—œŸš¡šœŸ–˜›•—š““™Ž”š–˜žŽ–ŸŽ˜ž™Ÿ‘™¢“›¡“£“£–§–¥”œ¥•¦œ¤ª¢©®¦¬°¦­¯©°²±¸º³º¿­µ»¦²¸¢¬²˜£ª“ž¥‘œ£’š£‘œ£™¢‹– ‰•‰•Š•ŸŠ–¡Š–¡‹–¢Œ˜ Œ˜ Œ˜ Ž™ ’¤“ž¥Žš¢š¤’œ¥‘œ¦”œ¥›£©¥¬±ª±³°·¹´º»¦®±•¦‘›¤’œ¥š¤Š–¡’©¶¹½Â¼¾º­ª¹¨¦¶¤ ´˜®’Œ´¢ž»¸¸½¼¾½¼¾ºµµµ®¬¸²±·¯¯°Ÿž®˜—­›™­”‘ªŠ­š—±£¢µ¬«¸µµ¸·¶¹¸·½¾¿ÂÅÅÄÆÅÄÅÃþ¾¼´±µ¨¥®›˜§‹¡ƒš{v–plf`‰\V…TNNF~HA{B<x?9w>8w>8w>8w>8w>8w>8w>8w>8w>8w>8w>8w>8w>8w>8w>8w>8w>8w>8x?9x?9x?9x?9x?9x?9x?9x?9x?9x?9w@8w@8w@8w@8w@8w@8xA9zC;xA9xA9zC;}D>}F>„RK”nj­›œ¹·½½»Â·¹¿®±¸­³¹«°³ª§§¨¥¥¨£¦¨£¦¥¢¢  £š¤˜ž¤¡§§¤§ª©«®­¯·±°»´²¼µ³½¶´½³°¾³¬¾°©¿²¬À±©¼©Ÿ¿¬¥Â°ª¼¥·™¦€w“e\Š[S…RJLFLFƒOF„PGˆVO\VaYvn°’‰¾«¤Ã°©Àª¡·™®Ž…´š‘ó­ÏÈÆ×ÒÏÜÖÐÜÙÒáÝÕàÚÔàÚÔáÞÚØÙÔØØÕÊÐÑÉÎÎÆËËÀÅÅÀÃƾÁÄËËËÐÒÑÑÓÒÜÜÖßÛÕÜÚ׿ÇʶÀƵÀÇ·ÂÉ·ÁÊ´¿ÆµÀǸÃÊ»ÅȼÃżÄʸÆʹÄ˹ÅË»ÆÉ»È˾ÉÎÀËοÌÌÁËÍÁÌÌÁÌÌÄÍÎÆÎÎÇÏÏÉÑÑËÐÐÌÒÐÌÒÐÏÒÒÐÓÓÐÖÔÓÖÓÔ×ÔÕ×Ó×ØÖÙÙÖØÙÔÝÝ×ßßÙàáÙáâÚãäÜãäÜãäÜãäÜãäÜãäÜâãÞâãÞâãÞâãÞâãÞâãÛâãÛàâÛàâÛáâÝáâÝáâÝáâÝáâÝáâÝáâÝàáÜàáÙàáÙàáÜßàÛÝßØÝÞÙßßÙßàÛßßÙÞßÚÞßÚÝÞÜÜÞÚØÛØ×Ú××Ú×Ô××ÒÔÓÐÒÑÏÒÏÏÑÐËÎÎÌÏÌÍÎÌÌÎÍËÎÎÉÏÍÉÏÍËÒÑÌÒÐËÒÑÊÑÐÉÏÐÇÎÍÄÍÎÃÊÌ¿ÆȾÁľÀ¼¼¼·¸¹µµ»³µ¸´¶¹µ·¹·¼¿·¼¿¸½À¸¿Ä¹ÁĺÂÅ»ÃƽÅÈÄÊËÅÌËÅÌËÉÌÌÉÌÌÌÎÍÎÏÍÍÎÌÌÎÊÍÎÌÍÎÌÌÎÍÈËËÈËËÈËËÈËËÇÊÊÄÉÉÃÆÆÁÃÂÂÃÁÃÁÂÁÀ¿ÁÀ¿ÁÀ¿ÁÁÁÃÅÄÃÄÂÃÁ¿ÂÁÀÄÁÁÇÂÂÇ¿¿Æ»¸À²®¹¡›¨‚y•g`Œ[S‡TL€JC|E=zC;w@8w@8w@8w@8w@8w@8w@8w@8w@8w@8w@8w@8w@8w@8w@8w@8w@8w@8xA9yB:zD=|GA|IC~KE€NG€NGOHƒQJ„SMƒTO~LExF?tC=uGCxMHwQMvQNtQNvTRuTSrQPqPMpOLlJHjHFiGEkFFkECkDAkB?kA?mB=mB?oB?tE@vGBvD?tA;u?8v?9w@8w@8w@8w@8w@8w@8w@8w@8w@8w@8w@8w@8w@8w@8w@8x?9yB:|E=JDƒOFHB~HA†TM“jd§Ž«žž© ¢¦¢¨¡¤«ž¤«›ž¥™›¡“™ – Œ“†™ƒ–‚Œ•ƒ‹–ƒ‹‘„Š‘…‹‘ŒŽ’’’”“•””—’”—“™Œ’˜‘–™˜™šš™›—–˜–•—•”–••˜–˜›”š Ž˜¡‰•‰”ž— ˜¡’š£š£›¢’š£™¥š£‘œ£—Ÿ¨Ÿ¦«¥«¯§®°®µ··¾À¹ÀÅ´¼Â°ºÀ¨²¸œ§®™¤«–¡¨“Ÿ§”Ÿ¦Œ˜ ‡“ž„‘†’‰”ž‰• ‰— ‹– ‹– Œ—¡Š–¡Žš¢›¥›£‹—ŸŽ™£›£›£‘œ£”ž§™£©§­©±´®µ· ¨®•Ÿ¨—Ÿ¨Ž™£Š–¡‹—¢“ž¨³¹¿Æ¿À¹¦¡±™“²›–²—±š•´¢ž¸®«º´³¼»½¹¶¶·²²¶·¸³µ·±ª¨°¢¡°žœ­—“¬•“­—“²£¡µ¬«¸¸¸¸½½¼¾Á¿ÁÃÀÁ¿¾½¼¹¶¹±®²£¡¬—”¥Œ‰Ÿ}˜wr“nhf`‰\V„UMNF~HAzC;xA9w@8w@8w@8w@8w@8w@8w@8w@8w@8w@8w@8w@8w@8w@8w@8w@8w@8w@8w@8y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8z@9y?8zC;}C<}C<~D=}F>~G?ƒOF¡€}¼³¸¿½ÃÂÀƽ»¿´³¸²´º¯³¹«®²«¨¨¬¦¥¬¦¥«¦¦ª§§¦¦©¥§ª¤¨®¨ª­¯­®°°³´³µº¸¹¼º»»¹º½º·¿¹µ¿·±À³­Á³¬Ã´¬Á²ªÅ·°È»µË½¹Å¶®¾§®Ž…˜meŠWO‰VNŽ_WaYŽ_W—ldœtkœtkwp©†~¹¢šÊ¼µÌ½µÊ»³È¸¯Ê½·ÍÃÀÒÍÊØÕÎÝÚÓßÜÕàÝÖßÛÓàÚÔÝÛØàÜÖÞØÒÙÓÌØÕÎÍÏξÅǼÃÅÂÇÊÐÏÎÕÓÐÒÔÓÙÙÖÝÙÓÝÙÓÈÍ͸ÀÉ´¿É¶ÀÉ·ÁÊ·ÁʸÂ˸ÃʺÂÈ¿ÆȾÆɽÈ˹ÆÌ»ÇÍ»È˼ÈμÈοÊÏÂËÌÃÌÍÃËËÂËÌÄÍÎÇÏÏÇÏÏÈÐÐÊÑÐÌÒÐËÑÏÍÒÒÎÓÓÑÔÔÑÖÓÓÖÓÔ×ÔÕØÕØØÕØÙÔÜÜÖßßÙààÚàáÙâãÛãäÜãäÜãäÜãäÜáãÜáãÜâãÞâãÞâãÞâãÞâãÞâãÛâãÛàâÛàâÛáâÝáâÝáâÝáâÝáâÝáâÝáâÚàáÙàáÙáâÚßáÚÝÞÙÝÞÙÞÞÛÞßÚÞàÙààÚßáÚßàÛÛÝÙØÚÖØÙ×ÙÛÚØÚÙÕÖ×ÐÓÓÑÒÐÏÒÒÍÒÎËÑÎËÑÏÊÐÎÉÏÍÉÏÍÉÏÍÉÏÍËÒÑËÒÑÈÏÎÈÐÐÈÏÎÇÎÐÂÌνÇʽÄƺÀĹ¼Àµ¸¼´ºÀ³¹¿µ¸¼¶¸ºµ»¿¶»¾¹¾Á¸¿Á·ÁùÁĽÅÅÀÇÉÆËËÆÌÊÆÌÊÊÍÍÊÍÊÍÎÌÎÏÍÎÏÍÍÎÉÎÏÍÎÏÍÍÎÌÍÍÍËÌÍÉËÊÉËÊÈËËÄÊÈÂÈÉÄÆÅÄÃÂÄÃÅÃÂÄÄÅÆÃÄÅÄÄÄÂÅÅÄÄÄÂÄÃÄÄÄÅÆÇÅÆÄÅÃÁÈÁ¿È½ºÁ²­´˜¢{sœri˜lcŽ_W…QH~G?yB:y?8z@9y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8z@9yB:zC;}D>~E?}F>}G@}JD}JD|ICxGArA;oA=mB?lC@jDBiFChGFhHHgIIdGGcHHcFFbEEbEEaDDaDDbDDcCCdDDeCAgDAjC@lB>mB?oA=q@:r@;s@:u@:v?9x?9y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8xA9zC;z@9|B;…QH“ib¡„¦Š¨““¨¢¡©œŸ¦–š¢’˜ŸŒ“‰‘œˆ›„™„Œ•…Œ‘ˆ‹’Š‘ŠŒ‘ŽŽ”—‘–“““’”’‘“‘‘”–““™””›”•—””•“”•”–™—˜˜š˜ž¤’œ¢Š•ŸŒ–ŸŒ—¡Œ—¡š£š£Ž™£Œ—¡‰• ‰˜¢š¤– ©Ÿ©¯¨°¶¬´º°¸¾ºÁƼÃÈ»ÂʹÀű»Á£­³›§­š¦¬§­š¥ª” ¨‹—¢ˆ”Ÿ†”‡•ž‡•žˆ–Ÿ‡•ž‡“žˆ—¡‰— ‹—¢Œ—¡‰• Š–¡Œ—¡Ž™£›¥‘›¤’œ¥”ž§–ž§š¢« ¨®›£¬›¥š¤˜¥‹—¢‹—¢›¥ž¦¬±±´´¢ ¥ƒ|¤‚{¨Šƒ®’Œ²›–´¡œ·ª§»¸¸º¸¹¸¶·´·»³¶º³­¯°¢¡«•‘ªŠªŽˆ©‡°žš³¨¥¶±±·¶µ¹¸·º¸¶¸±¯³©§±¢ ®›–¨ˆ z›yu–sm’leŽc^‰[T„SKNFH@}C<yB:y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8y@8y@8y@8y@8y@8y@8y@8y@8y@8y@8y?8y?8y?8{A:y?8y?8z@9~D=~G?~G?}F>€JC’icº¬®ÏÍÎÏÍÎÃÀúº½µµ¸³µ¸°°³®¬­®«¨°©§°««¯­®®¬­¬«°¬¬¯¯¯²±°²¶´µº¹»¼»½¾½¿¾½¿¼»½¾¼º¿¹µÀ¶³À¸²Äº·Ä¼¶Æ¼¶É¾·ÌÁ¼Ì¿¹É·®¿© ¸œ“›sjŽ_W£}v¹Ÿ™¼¢œ¶—º —ï¦Å±¨Çµ¯Êº´Ë¿¹ÍÅ¿ÎÈÁÏÉÂÎÆÀÐÊÄÑÍÇÑÎÊÙÖÏÝÚÓÝÚÓÞÛÔÞÛÔ×ÙØÛÙ×àÚÔÛÕÎÚÔÍÞØÒØÕÑÒÓÑÏÑÐÏÑÐÎÑÑÒÔÓÕÖÔÑÓÒÝÚÖÝ×ÑÊÍͶÀÆ´¾Çµ¿È¶ÀɵÀʵ¾Ê¹ÁÊ»ÅÈ¿ÇʾÈ˽ÈͺÆÌ»ÇÍ»ÇͼÈνÈË¿ÉÌÂÉËÁÊËÃËËÁÊËÁÊËÅÍÍÆÎÎÇÏÏÉÑÑÊÑÐÊÐÎËÐÐÍÒÒÍÒÒÎÔÒÒÕÒÓÖÓÕ×ÓØÙÔÚÚ×ÛÛØÜÝØßßÙàáÙáâÚâãÛâãÛãäÜãäÜãäÜãäÜãäÜâãÞáãÜãäÜâãÞâãÞâãÛâãÛàâÛáâÝáâÝáâÝáâÝáâÝáâÝáâÝáâÝáâÝßáÚÞàÙààÚßßÙßàÛßàÛÞàÙàáÜßáÚßàÛÞßÚÛÝÙÙÜÙÙÜÙÙÛÚÖ×ØÔÖÕÑÔÔÒÔÓÎÔÒÌÑÍËÑÎÊÐÎÊÏÌÉÏÍÈÎÌÈÏÎÊÐÑÊÑÐÈÏÎÇÎÍÈÐÐÈÐÐÄÍÎÀÊÌ»ÄÅ»ÂǺÀǵ¼Á´»Àµ»¿µ¹¿¶¼À´º¾¶½Â¸¿Á¸¿ÁºÁûÄŽÆÇ¿ÆÈÃÉÊÅÌËÇÍËÊÍÍÌÎÍÍÎÌÏÐÎÎÏÍÍÎÌÏÐÎÏÐÎÎÏÍÍÍÍÍÍÍÌÌÌÌÌÌËÍÌÉÎËÇÍËÃÊÉÃÈÈÅÆÇÄÆÈÄÆÉÃÈÈÃÈÈÃÈÈÃÅÈÃÆÉÄÉÉÄÊËÉÉÉÈÈÅÈÅÂÊÁÀÆ»¸º£žª†}¥~v£{r˜lc\T„PG€IAzC;y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8z@9z@9yB<yD>yF>wE>uD>sD?mB?kB?hC@eCAdDDcED`EE_FE]GG\FG\FG[FI[FI[FI[FI\FG\FG\FF`FG`EEcEDdDDeCAhC@kB?mB?oA=q@:s@:u@:v@9x?9y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8zC;„OIŠYQ`Z“ib›zu¦–™¡£šœ¢‘–¢Œ”Ÿ†›„™„™…˜ˆŽ•ˆŽ”ŒŽ‘Ž‘ŒŒ“Œ–Œ–Ž‹—Œ—Ž––—‘š‘›‘›’‘˜’‘˜’”˜••˜›Ÿž £˜Ÿ¤‘™¢— Š•ŸŠ•ŸŒ—¡‹– †“Ÿ…”ž†’†“Ÿ‹™¢—£«§²¹´¼Â¹ÀÈ»ÂʼÂɼÂÉ»ÃɺÄʵ½Ã¥°µ «° «°¤®±¢­²›§­•¢¨¦Žœ¥‹™ ‰˜¢Š˜¡‰• ˆ”œ‡•ž†“Ÿˆ”Ÿˆ”Ÿ…”ž„‘‡” Š–¡Ž™£”œ¥–ž§–ž§–¥–ž§–ž§”ž§Ž™£Žš¥‘œ¦˜¢˜¢˜¤“›¤–§¢Ÿ¢¦Œ¡€{¢|¥ƒ|«Žˆ±š•³¡·­«º°­¶­¬´²³³±²²°±®œªŠ¦‰ƒ¢€y¡{¨‹ˆ®”±ž™²¡Ÿ²£¡°žš«’§‹…£„Ÿ}y—rl“jd‘faŽc]‹\W…TNƒPHJD~GAzC;yB:y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8{@8{@8{@8{@8{@8{@8{@8{@8{@8{@8y?8z@9y?8y?8|A9~C;}C<}C<€F?H@KD‹]V¯ššÀ¾ÄÎÍÏÍËÌÁÀºº½µµµµ°°µ¯®´®­´®­µ¯®µ³´´²¶µ³·µ´¶¶µ·¼¹¹½»¼¿¼¿¿½¾¿½¾À¿¾ÁÁÁ¿¾ÀÀ»»¿º·Á¾»Ã¾¾Å¿¾ÈÁ¿Ê¼ËÁ»Í½Í½ʸ¯Å¯¦ºž•¡ypª„{Á­¤ÐľÔÉÄÒÅ¿ÓÉÀÔÍÈÖÐÉÕÏÈÖÏÊÓÏÉÐÊÄÒÎÈÒÏÈÔÑÊÒÏÈÑÎÇÓÐÌÖÒÌÖÓÌ×ÔÍÜÙÒÛÙÖÖÖÖÝÚÖàÜÖÚÕÌÚÔÍÝ×ÑÛ×ÏÙ×ÔÓÔÒÌÏÏÃÉÍÍÒÒÇÌÏ¿ÇÊØÖÓÙÓÌÙÖÒ·¿Å°»Âµ¿È¹ÁʶÀÉ·ÁʹÁÊ»Æ˾È˾É̾É̼ÉÌ»Æ˺Å̽Ç;ÈË¿É̾ÉÌÂÊÍÂÊÍÁÉÌÁËÍÃÌÍÇÏÏÈÐÐÊÐÑÉÐÏÉÐÏÊÑÐËÐÐÌÒÐÎÔÒÒÕÒÔÖÒÖØÔÙÚÕÚÛÖÛÜ×ÝÞÙßßÙàáÙáâÚâãÛâãÛãäÜãäÜãäÜãäÜâãÞâãÞâãÞáãÜâãÞâãÞâãÛàâÛáâÝáâÝáâÝáâÝáâÝáâÝáâÝáâÝáâÝßáÚßáÚàáÙàáÙßàÛààÚààÚÞàÙßáÚßàÛÞàÙÞßÚÝÞÙÚÜØÙÛ×ØÛØ×ÙØÕ×ÖÔÖÕÑÔÔÎÔÒÌÒÐÌÑÎÉÏÍÇÍËÈÎÌÇÎÍÈÎÌÉÐÏÊÑÐÈÏÎÆÏÐÈÐÐÇÏÏÇÎÐÂÌξÈÊ»ÂǹÀÅ´¼Â´ºÁ´¼Âµ¼Áµ¼Áµ»¿·½ÃºÀĹÀºÃļÅƽÅÈÀÈÈÂÉÈÆËËÈËËÊËÉÌÎÍÍÎÌÏÐÎÎÏÍÐÐÍÐÑÏÏÐÎÏÐÎÐÐÐÏÏÏÏÏÏÍÎÌËÎËËÎËÊÍÍÇÍËÃÊÉÃÉÊÄÊËÄÆÉÇÈÉÈÊÌÄÊËÄÉÉÂÈÉÆËËÆËËÄÉÉÇÈÆÈÅÂÉÄÁɾ»Á±«·›’±‘ˆ­‹‚£{r—ib[TˆRK~G?y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8x?7w@8v@9u@:tA;rA;oB?mC?hC@fDBcEDaDD\FF\FGYGHXGIUGJUHKUHLSHKSHKSHKSHKUHLUHKUGJXGIYGH\FG\FFaDDcEDfDBhC@lB>nA>qB=sA:u@:v@9w@8x?7y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8z@9}C<~G?H@‡TL™vp£ˆ…¡™œ˜š • ‡œ„™„Œ—†’‰•“Ž’“Œ”‹—Š˜Š™‡šŽˆ˜Ž‹˜ŽŒ˜ŽŒšŒ››œŒš‘šŽš‘••¤ž£¢¤Ÿ¤§–ž¤”œ¥š¤ˆ”Ÿ‡’œ„›šŽšƒš„‘‹˜¤œª³³»Á¼ÄÊ·¿È´¼Å¶½Ç·¾Æ¸¿Ç»ÃɶÀÆ«¶»ª´·«µ¸¬¶¸©³µ¢­°š¦¬˜¥«—¤ª•¢¨ž§š¤Ž™£Œ˜ Š–ž‡•ž†’„‘‚‘›‚›„‘‡•ž›£”ž§–ž¤—ž¦•¦•¦“›¦˜¡š£Ž™£’œ¥Žš¥Žš¢™¢Ž™ ˜¡“˜¡™™ŸŸ—š¤“’¤‰„«’«’±Ÿ³¦£®£ °š–­–”®œ˜®œš§Œ‡¡~y™rj˜ng™pjxr¡|v¤ƒ~¥„¤…€£€{šuo—nh“ib‘d^\VŠXQ‰VN†SKƒOF€IC€GA~G?|B;z@9y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8y?8{@8{@8{@8{@8{@8{@8{@8{@8{@8|A9y@8zA9y@8zA9|C;}D<F>~E=JB„PG•hb©Ž‰·±´ÂÂÈÈÈËÉÆÉÂÀļº¾¸µ²º°­»³°¸³°¹´´¹¸·»¹ºº¹»¾½¿À¿ÁÁ¿ÀÁ¿ÀÃÀÀÄÁÁÅÀÀÃÀ½ÆÁÁÆÁÁÃÀÀÁ¿½Ä¿¿Å¿ÃÃÀÆÄÁÈÅÁËøËļÍÅ¿ÏÁ½É¶¬½£š¼¡—» –Ê´«ÑŽÙÓÍÜÖÐÜÖÐÞØÒÝ×ÑÝ×ÑÜÖÐÛÕÎØÒÌÑÎÇÓÏÉÓÐÌÕÒËÕÒËÓÐÉÑÏÉÍÉÃ˞ξÖÐÉÙÕÏÚ×ÓÚ×ÐÚÖÎÚ×ÐÙÕÍÙÕÍÛ×ÏÙÖÒÒÓÑÈÊ̼ÂÉÈÍкÁ˾ÆÌÅËÌÛØÔÙ×Ô¶Àð»Â´¾ÇºÂȼÆ̺ÄʺÂË»Æ˽È˽ÈͽÈͼÆÌ»ÇͺÆ̽ÇʽÈ;È˽ÈËÁÊ˾ÉÎÂËÌÂÊÊÁÊËÄÍÎÈÎÏÈÎÏÉÎÎÊÏÏÊÏÏÉÐÏÌÒÐÎÓÐÐÓÓÓÖÓÕ×Ó×ÙÓÚÚÔÜÝØÝÞÙÝÞÙÞßÚàáÜáâÚâãÛáâÚâãÛâãÞâãÞâãÞâãÞâãÞâãÞâãÛâãÛâãÛàâÛáâÝáâÝáâÝáâÝáâÝáâÝáâÝáâÝáâÝáâÝßáÚàáÜàáÙàáÙààÚààÚààÚÞàÙààÚÞßÚÝÞÙÛÝÖÚÛÖÛÜ×ÙÚÕ×ØÖÖ×ÕÑÔÔÏÕÓÌÒÐÍÓÑÌÒÐÊÐÎÇÎÍÇÎÍÅÍÍÄËÊÈÎÌÉÐÏÈÐÐÅÍÍÅÎÏÆÎÎÃÌÍÂÌξÉ̹ÄɹÀŵ½Ã³»Á´¼Âµ½Ã¶¾Ä·¾Ã¹¿Ã·¾ÃºÁúÃÄ»ÃþÄÅ¿ÆÈÂÈÉÄÉÉÈËËËËËÌÎÍÎÏÍÎÏÍÏÐËÐÒËÐÒÎÐÑÏÐÑÏÐÑÏÑÑÑÐÐÐÎÏÍËÎËËÎËËÌÊËÍÌÉÌÌÅÌËÆËËÄÉÉÈÉÊÊËÌÉËÍÈËËÂÇÇÂÇÇÆÌÊÅËÉÈÉÇÈÈÂÊÆÀÉÁ¾Ç»µÁ±«¼¦Ÿ¸•³”Œ¦u—i`[RJB}B:y@8y@8y@8y@8y@8y@8zA9zA9zA9y@8y@8y@8y@8y@8y@8y@8y@8y@8y@8x?7w@8v@9u@:sA:rC>nC@kDAgDAdEB`FD\FFZHIWGJUHKSIMQHMPHNOJNMIOMIOMIOMIOMIOMIOOJNPHNQHMSIMUHKWGJZHI\FF`FDdEBfDBiC?nC>qB=sA:u@:v@9w@8x?7y@8y@8y@8y@8y@8y@8y@8y@8y@8y@8y@8y@8y@8y@8y@8zA9|C;~E=H@…QH“ld Š†Ÿ—•™¡Ž•ŸŠ‘›ˆ™‹•Ž“‘•Ž—Œ˜Ž‹™‡˜Š›‰›†›Œ‡›‰›‰šŒˆœ‰„œŒ†œˆŽ‰Ž‰œŽŠ›Ž‹œŒ£˜•¦Ÿ§¦¥¦¨ª ¦ªŸ¦«˜ ©˜¢‚‘|Œš{Žš~Žœ€ž…” œ¨¢®¶ºÁɽÅË·¿È³»Ä·¾Æµ¼Ä¶½Â»ÃÉ»Ãɲ¼¿²¼¾´½¾³½¿°º¼¨³¶¡¬¯Ÿ«±ª°›¨®—¤ª’ž¦‘Ÿ¨Žœ¥š Œ˜ Œ—¡ˆ•¡ƒ’ž‚Žœ‚›‰• š¤”œ¥”œ¥•œ¤•œ¤”›¥‘™¢š¡˜ž—¢Ž˜¡‘›¤’š¥•ž‹•žŽ–Ÿ‘–Ÿ“˜¡•›¡šš ›™œšžœ™œœ—š¢——§Œ‡™tn™sl£€{ }w–mgŽ_WŒ[SŒ]U‘bZ’d]“f`–ja“hb”ic‘d^aY‹\T‰XP…RJ‚NEJB€IA€JCH@~E=|C;zA9y@8y@8y@8y@8y@8y@8y@8y@8y@8y@8y@8y@8y@8y@8y@8y@8y@8y@8y@8y@8y@8y@8y@8y@8}A8}A8}A8}A8}A8}A8}A8}A8}A8}A8}B7}B:|A6}B7F>€G?€G?‚KA`Xyp¨‹…µ¬®¼¼Â¿ÁÄÁÀÂÀ¿ÁÀ¾ÄÀ½À½¶´¾¶°¿¶µ¾¹¶¿ºº¿½¾À¾¼ÃÀÀÅÂÂÇÄÁÇÄÁÈÅÂÇÄÀÉÄÁÈÅÂËÈÄÊÈÂËÈÄÉÄÁÉÄÁÇÅÂÇÄÀÈÅÁÉÄÁʼËÀ¹ÍúÏÈÀÏ¿´Æ±¥È²©Ì¼³ÑüÕÍÄÛÕÏÞØÒßÛÓàÚÔàÚÔÞÚÒÜØÐÛÕÎÙÓÌØÒÌÒÏÈÏÍÇÐÊÄÏÌÅÏÌÅÐÍÆÑÎÇÌÉÂÉÁ»ÌÀ¸ÎƽÔÎÈÔÎÇÕÍÂÚÔÎÛØÑÚÖÎÚÖÎÚÔÎ×ÑË×ÔÍÜÙÕßÝÚÐÓÖºÁË´¼Å±¹Â¹¿ÆÃÉʸ¿Ä¼ÃÈ¿ÇÊ¿ÆËÂÊͽÈͽÅ˾ÆÌ·ÃɺÄʽÈͽÈͽÈͺÅÊ»Æ˽ÈË»Æ˽È˽ÈÈÁÊË¿ÊÊÂËÌ¿ÉËÂËÌÆÌÍÈÍÍÊÏÏÉÎÎÊÍÐËÐÐÌÒÐÍÐÐÏÒÒÐÓÐÒÕÒÕ×ÓÙÚÕÚÛÖÛÜ×ÝÞÙÞßÚàáÙáâÚáâÚáâÚâãÛâãÛàâÛâãÛâãÛâãÛâãÛâãÞâãÛàâÛáâÝáâÝáâÝáâÝáâÝáâÝáâÝàâÛáâÝáâÝáâÝßáÚßáÚßáÚàáÙàáÙààÚßàØÞàÙÞàÙßàÛÝßØÛÝÖÛÜ×ÛÜ×ÚÚ×Õ×ÓÓÖÓÒ×ÔÑÔÔÌÒÐÌÒÐËÑÏÊÐÎÇÎÍÆÎÎÅÍÍÄÌÌÅÍÍÈÎÏÈÐÐÆÎÎÃÌÍÅÍÍÃÌÍÁËͽÈ˺ÅʹÃƵ½Ã³»Á²½Âµ½Ã¶¾Ä¹¿Ã¹¿Ã¹¾Á¹ÀºÂźÃļÂýÃÄÁÇÈÃÈÈÈÉÊÉËÊÍÎÌÍÎÌÎÏÍÏÐÎÏÑËÏÑÍÐÒÎÎÐÏÐÑÏÐÑÏÍÎÌÍÎÌÍÎÌËÎËÊËÉËÌÊËÎËÉÎËÉÌÌÉÌÌÌÌÌÍÍÍÊÌËÇÊÊÁÇÅÂÅÅÄÊÈÅÊÇÉËÊÈÊÆÊÆÀÊÄÀɾ¹Æ¹³Ä²¬¿¬¥»£²“‹¦~s˜i_ˆRIF>}B7|A6z@6z@6z@6z@6z@6z@6z@6z@6z@6z@6z@6z@6z@6z@6z@6z@6y@8x?7wA:u@:sB<oB<nC>iDAeDAbEE]GGZHIWGJSHKQHMNIMMIOKJOJJPIKQIKQHLRHLRHLRHLRIKQIKQJJPKJOMIONIMQHMSHKWGJZHI]GGaDDeDChC@lB>oB<rA;u@:wA:x?7y@8z@6z@6z@6z@6z@6z@6z@6z@6z@6z@6z@6z@6z@6|A6€G?ƒLD†SH‰XP”jc˜}zœŽ—•›”–œ”–™““–“’”•’’—™šŠ›‰›†›Œ‡›Œ‡œˆœˆœŒ†œ‰„›‡›„{žƒ~†Ÿ‡ ‰„ž‰ƒŠ…¡‡§•‘«™­¦¤­«©­®¯©®±ž¦¬‘¥‚‘{Œ›~ŽœŸ†•¡‘ ª›©²°ºÀ¼ÄʽÄ̹ÀÊ·¾Æ¸¿Ç¶¼Ã¹¿Æ½ÄɾÅʹÁÄ»ÄÅ»ÃøÃöÀ¯º½¨³¶¥²µ¤±´¢®´›ª¯™§«–£©’¢¨ž¥¦Žœ¥‰˜¢’žŽš‚›‡“žŒ—¡Ž˜¡—¢˜£‘˜¢‘˜¢˜žŽ–œ’™¡‘˜ Ž–¡“˜¡•™¡‘–ŸŒ“›Š””œ–’˜Ÿ“™Ÿ–™ ˜–š–““‰Š•……œ{vŠXQ‡QH\T‹YPƒMD€G?€IA‚KA…OFJBƒLB‡SJ…QH„NE‡SJ‡SJ…OF„NEJB€E=~D:~C;}C9|B8|B8|A6z@6z@6z@6z@6z@6z@6z@6z@6z@6z@6z@6z@6z@6z@6z@6z@6z@6z@6z@6z@6z@6z@6z@6z@6z@6|A6|A6|A6|A6|A6|A6|A6|A6}B7}B7z@6}B7E;€G?H@‚KC†PGŠYQ©Ž‰¶­¯¸²´½¸»¾¼ÀÀ½ÀÁÀ¿¼¼¾»»¿¹¸Á¸·Äº·Ä½»Å¿¾Å¿¾Æ¿½ÇÁ½ÉÄÁÈÅÂÈÅÁÉÇÁÌÈÂÏÌÅÑÎÇÒÏÈÔÐÊÑÏÉÑÍÇÎËÇÎÊÄËÈÄÇÄÀÇÄÀÈÃÀʼ̎ÏËÃÒËÁÏøÑŽÒÊÄÖÏÊØÒËÜÖÐÞÚÒáÛÕßÛÓàÜÔßÛÓÜØÐÙÓÍÚÔÎÙÓÍÕÏÉÍÍÄÎËÄËÈÁÎËÄÎËÄÐÍÆÎËÄÉÅ¿ÇÁ»É¿¹ÍýÎľÏĽÒÊÁÙÓÍ×ÓÍØÔÌ×ÓËØÔÌØÓÊÖÒÊØÔÌÜØÐáÞÚÜÜÙ¼ÂɲºÃ°¸Á±¹¿¼ÂÈÍÐÐÎÑÑÁÉÌÁËÎÇÍÎÃÊ̺ÄʹÁʼÆ̽ÈÍ»Æ˾È˺ÅÊ»ÆͽÈ;ÈË¿ÇÊ¿ÉËÁÊËÀÊ̾ÈÊ¿ÉËÂÉËÃÊÌÈÎÏÊÏÏÊÏÏÊÍÐËÐÐÎÑÑÌÏÏÌÑÎÒÔÐÕÖÔÖØÔÚÛÖØÙÔÚÛÖÝÝ×ààÚâãÛâãÛâãÛâãÞâãÛàâÛàâÛâãÛàâÛâãÛàâÛâãÛâãÛàâÛáâÝáâÝáâÝáâÝáâÝáâÝáâÝáâÝáâÝáâÝáâÝàâÛßáÚàáÜàáÜàáÙßàØÞàÙààÚàáÙàáÙÞàÙßàÛÞßÚÝÞÙÝÝ×ÚÛÖÕØÕÕ×ÖÑÔÔÍÓÑÌÒÐÉÐÏÈÏÎÇÍÎÃÌÍÅÍÍÄÍÎÄÌÌÃËËÅÎÏÂÍÍÃÌÍÃÍÏ¿Ì̽È˺ÅȹÃÆ»ÂÇ·¾Ã´¼Â²½Âµ½Ãµ½Ã¶½Â¹¿Ã¹¿Ã¹ÀºÃĻĿÂýÃÄ¿ÆÅÃÆÆÈÉÊÈËËËÎËÎÏÍÎÏÍÍÐÍÏÑÍÐÒÎÐÑÏÏÐÎÑÑÎÐÑÏÍÎÌÍÏËÍÎÌÍÎÌÍÎÌËÌÊËÎËËÏÉÌÏÌÌÎÍÍÍÍÌÌÌÊÌËÈÊÉÁÇÅ¿ÆÅÂÇÄÆÉÉÊÌËÊËÉÊÈÅÉÄÁÉ¿¼Çº´Å·³Ã³­¿«¥·”²“‹¥~v_W„KC€G?~D:|A6|A6|A6|A6z@6z@6z@6z@6z@6z@6z@6z@6z@6z@6z@6{@8xA9wA:u@:sB<oB<kD?hEBeFC_FE\GGWGJSHKPHKMIOKJOJJPHLRFLRFLSFLSFMUFMUDLRDLRFMUFMUFLSFLSFLRHLRJJPKJOMIOPHKSHKWGJ\FG^EDdEBgDAkD?oB<sA:u@:wA:xA9{@8z@6z@6z@6z@6z@6z@6z@6z@6z@6z@6z@6z@6}C9€IAˆVMŽbY’mg–ur—~{˜ŠŒ–“—’–˜••˜••š“‘œ‘Œœ‰œŽŠœŒ†‹…œŠ„œ‰„‰ƒžŠ„žŠ„†œ€z—tl“ld—qjšxo{tœ{vŸzžƒ{ƒ} „~¦Œ†¬•¯™°¥¢³¬ª²±°¬±´¡©¯”¢«Š™¥‡˜¤¨™§°¥±¹³»Á¿ÅÉ¿Å̼ÂɺÁË·¾Æ¸¿Ç¹¿Æ»ÁȽÄÉ¿ÆË¿ÆË¿ÈÉ¿ÇʾÈÊ»ÅȵÀÅ®ºÀ¬·º«¶¹¨³¶¦±´¡¬¯œª«š§ª˜¦ª–£©‘Ÿ¨ˆ˜£‘Ÿ}›~Žœƒˆ“‰”ž‹•ž•žŽ–ŸŽ–¡•ž•œ–•œ‘™Œ‘š““™’”šŽ‘˜‰‘—Œ“›–”œ“•›•’•—ŒŒ“ƒ†}~Žxxol†UM€G?F>E;|B8z@6zA9|A6|B8zA9|B8}C9}C9}C9E;F>F>F>F>|A6z@6z@6z@6z@6z@6z@6z@6z@6z@6z@6z@6z@6z@6z@6z@6z@6z@6z@6z@6z@6z@6z@6z@6z@6z@6z@6z@6z@6z@6z@6z@6~B9~B9~B9~B9~B9~B9~B9~B9C:C:~B9~C8‚IAŠTKZR“d\™nf£€x·ªªÁ¿ÅÂÀÄÄÁÄÉÄÇÅÂÅÆÁÄÁ»ºÁ¹¹Ä»ºÇ¾½ÉÀ¿ÈÁ¿ÊÀ½ÌľÊĽÊľÎÊÄÍËÅÎËÄÒÏÈÕÏÉÖÓÌ×ÔÍ×ÔÍÕÒËÒÏÈÑÎÇÏÌÅÏÍÇÍËÅËÇÁÇÄÀÊľÎÈÁÕÑËÖÒÌÕÑÉÓÏÇÕÏÉÙÕÏÝ×ÑÞØÑàÚÔàÛÒàÛÒßÛÓàÚÓÝ×ÑÜÖÐÖÐÊÖÐÊÑÍÇÐÊÄÊÇÀÊľÌÈÂËÈÁËžÉÅ¿ÊÅÂÉÅ¿ÈľÊĽÍýÍżÎüÑÊÂÖÑÎ×ÒÏÕÏÉÓËÂÕÐÇ×ÐÆÕÑÉÚÔÎÜØÐÞÚÒÝ×ÑÝ×ÑØÕÑÉÊ˾ÄÈÈÍÍÑÔÔËÐÓ¿ÉÌÄËÍÊÏÒÄËͺÂȹÃɽÅ˼ÄʼÄʾÈ˾È˺Æ̾Æ̾ÆÌ¿ÉËÁÊËÁÉÌÂËÌÁÊËÀÉÊÂÉËÂËÌÇÌÏÊÍÐÉÎÎÊÍÐËÎÑÏÒÒÏÔÑÐÓÐÖ×ÕÚÚ×ÛÛØÛÜ×ÚÛÖÜÝØßßÙàáÙâãÛãäÜâãÞâãÛàâÛàâÛàâÛàâÛàâÛàâÛàâÛàâÛàâÛàâÛáâÝáâÝáâÝáâÝáâÝáâÝáâÝáâÝàâÛàâÛßáÚßáÚßáÚàáÜàáÜàáÜàáÙÞàÙÞàÙàáÜàáÙßáÚàáÜÞàÙÞßÚÞßÚÜÝØØÙ×Õ×ÖÑÔÔÌÒÐËÒÑÈÐÐÆÍÏÂËÌÃÌÍÄÍÎÂÊÍÂËÌÁÊËÃÌÍÂÌοÌÌ¿Ê;ÉÌ»Æ˸ÃƹÃƹÀÅ·¿Å´¼Â´¼Âµ½Ã´¼Â¶½Â¹¿Ã¹À»ÃûÄŽÅżÄĽÅžÅÄÂÅÅÆÉÉÈËËËÍÌÌÏÌÎÏÍÌÏÌÍÏÎÏÑÍÎÐÌÏÏÌÐÐÍÐÑÏÐÐÍÎÐÌÍÎÌÎÏÍÎÏÍÍÎÌÎÏÍÎÐÌÏÐÎÍÏÎËÌÍÈÉÊÉËÊÇÊÊÂÇÄÂÇÇÂÈÆÈËËÉÌÌÌÌÌËÉÇÉÄÁÊÄÀȾ¸È¼¶Ä¶²À®¨¼¦¸ž˜°‡qhŒYNƒJB€F<D9~B9}A8~B9~B9}A8}A8}A8}A8}A8}A8~B9~B9}A8z@6y@8xA9vB9sA:oB<kD?gDAdFE^FFZHIUHKQHMNIMKJOIKQFLRFLSELQDLRCMSCMSDLUBMTBMTBMTBMTDLUCMSCMSDLRELQFLSFLRIKQKJONIMQHMUHKYGH]GGcEDgDAkD?oB<sA:vB9xA9y@8z@6}A8}A8}A8}A8}A8}A8}A8}A8}A8}A8}A8E;„NE‰ZRŽd]‘nh”sp‘yy“‚„”‡Š˜‹‹™›’‘’œŽŠŽ‰œŒ†žŠ„ˆ‚…ž‚|œ~w›|tš|u˜yq”lc‰VNˆTK‘c\—ph˜qi˜qi›xp›|tœ}u{t¢|¦ˆ«ˆ­—“°žš³©¦±°¯¬±´§¯µ ¬´«´¢¯µ¤°¶²¼ÂÁÇËÃÆʽÁɸ¾Å·¾È´¼Åµ¼Ä·¾Æ·¾Èµ¼Ä¹ÀÈ»ÂÊ»ÃɼÁÊ»ÂǹÀŹ¿Ã¶½Â²¼¿²º½±¸º¬µ¶¨±²¦¯°£­¯Ÿª­˜¦ª’¡¦Šš£…”žŽš~™Žš…‘œ‡’œ‡œ‰’ž‰’žŠ’›‰šŠ’ˆ›‰š‡Ž˜†Ž™Œ–ŽŽ”‹™ˆ–Š‘›•œ’–’’•‡‰”‘yysq‹pmˆfd‡\T…OF~E=~C8~B9}A8}A8}A8}A8}A8}A8}A8}A8}A8}A8~B9D9~C;C:}A8}A8}A8}A8}A8}A8}A8}A8}A8}A8}A8}A8}A8}A8}A8}A8}A8}A8}A8}A8}A8}A8}A8}A8}A8}A8}A8}A8}A8}A8}A8}A8}A5}A5}A5}A5}A5}A5}A5}A5~B6~B6~D:H@‰VK•g`žvmª‹ƒ²š”¸ª©Á¾ÁÊÈÉÎËËÐÍÍÐÍÍËÆÉĿ½ÀÃÀÀÄ¿¿ÆÀÂÊÄÃÍÅ¿ÏÅ¿ÐÈ¿ÏÈÀÏÉÅÔÐÊÖÒÌÛÕÏÛ×ÏÞØÒÝ×ÑÛÕÏ×ÔÍÖÓÌ×ÔÍÖÒÌÐÎÈÐÎÈÏÍÇÍÊÃÉÇÁÍËÅÔÐÊÖÐÊÖÓÌØÒÌØÔÌÚ×ÐÞØÒÞØÑáÛÕàÜÔàÛÒàÛÒàÜÔàÚÓßÙÒÝ×ÑØÒÌÐÊÄÍÊÃÊĽ˽´Ê¿¸É½ÊÇÀÊľÊľÉÅ¿ÉÅ¿ÉÅ¿ËÅ¿ËļÌÄ»ÍýÏÈÀÔÍÈÔÎÇÓÉÀÓÉÀÒÊ¿ÕÍÄÙÓÍÙÕÍÚÔÎÙÑËÔŻн±ÒÁµÔÌÃÐÎËÎÑÑÏÒÒÈÍÐÉÏÐÐÓÓËÐÐÁÇË»ÃɼÂɼÂɽÄɾÈË¿ÇʽÅ˸ÃÈ»ÃɽÄÉ¿ÈÉ¿ÇÊÁÉÌÄÍÎÄÍÎÃËËÂËÌÂÉËÄËÍÇÌÏÉÎÎËÎÑÌÑÑÐÓÓÓÕÔÕÖÔ×ØÖÚÚ×ÚÛÖÜÜÖÝÝ×ÞÞØàáÙáâÚàâÛàâÛàâÛàâÛàâÛàâÛàâÛàâÛàâÛàâÛàâÛàâÛàâÛàâÛàâÛáâÝáâÝáâÝáâÝáâÝáâÝáâÚáâÚßáÚßáÚàáÜßáÚàáÜàáÜàáÜßáÚßáÚßáÚßáÚßáÚÞàÙààÚßàÛÞßÚÜÝØÚÛÖÖ×ÕÒÕÒÏÒÒÍÒÒÌÒÐÈÎÏÄÌÏÃËÎÃËÎÁËÎÁËÎÀÊÌ¿ÉË¿ÇÊ¿É̾ÉÌ»ÆË»ÈË·ÄÇ·ÃɵÀŵ¼Á¶½Âµ¼Áµ½Ãµ½Ãµ¼Á·¾À¸¿Á¹À¸¿ÁºÃÄ»ÃûÃÀ¼Ã½ÄÃÁÇÅÃÉÇÆÉÉÇÌÉËÌÊÎÏÍÎÏÍÎÏÍÎÐÌÍÎÌÏÐÎÏÏÌÐÐÍÑÑÎÏÐÎÏÏÌÍÎÉÍÍÊÎÏÊÏÐËÏÐÎÏÐÎÌÎÍÉÌÌÆÉÉÃÉÇÆÉÉÇÉÈÄÉÉÄÊÈÇÍËÊÏÌËÎËÊËÆÊÊÄÊÅÂÈÃÀɾ¹Å¸µÃ³­¿ª¤¼¥ µ™§€x–g]ˆQGG=E;}B7|A6|A6|A6}B7|A6}B7|A6|A6~C8€F<€F<~C8zA9xA9vB9uB:oB<mC?gECbEE^HHYHJTILPJMLJPIKQHLRFLSDLRCMSBMTBMTAMUAMUAMUAMUAMUAMUAMUAMUAMUAMUBMTBMTCMSDLRFLSFLRIKQLJPOILSHKYGH]GGbEEgECmC?oB<uB:vB9xA9zA9|A6|A6|A6|A6|A6|A6|A6|A6|A6|A6}C9€G?ƒPE†XQŠ`Ygcnk‘vs‘{z’€•ƒ—†…™Œ‰œŽŠœˆ Œ†Ÿ‡Ÿ„|ƒ}€zšxq–og’d[‘cZŒZQ‚KCE;€F<ˆUJ•i`•kb•i`–ne˜rk›ul˜ri›tlwpŸyr£‚}¨Œ†­–‘±£¢±®®¯±´®´¸©´¹¬·¾®¸¾µ¼ÄÁÇÍÂÆÌ»Áȶ½Å´¼Å³»Ä³»Ä³ºÄ±»Ä°¸Á³ºÂ³ºÂ³ºÂ³»Ä²¹Ã±·¾²·º¸»¿º»¼º¼¾·º½±¸·¬³²«²±§°±£­¯›¨«—¤ªž§‡–ž‡“ž‚›ŽšŽš‚š‚—ƒŽ˜„™„™„Ž—†Ž—…–…–…–ƒ–ƒŽ•…–…–…˜‰˜‹Ž•ŠŽ’„†~xv‹roŠmj‰fa…_[ƒYR„RIH@~D:}B7|A6|A6|A6|A6|A6|A6|A6|A6|A6|A6|A6}B7}B7}B7|A6|A6|A6|A6|A6|A6|A6|A6|A6|A6|A6|A6|A6|A6|A6|A6|A6|A6|A6|A6|A6|A6|A6|A6|A6|A6|A6|A6|A6|A6|A6|A6A8A8A8A8A8A8A8C7A8D9ƒI?ŒZQ¤~w®“‹´˜·¤¡»­¬¼º¾ÅÅËÌËÍÒÐÎÔÒÐÏÍËÆÁÄÄ¿ÂÆÁÄÅ¿ÁÆ¿½ÊþÌÇÄÏÉÂÔÉÂÖÌÃÕÏÈÓÏÉÖÒÌÚÖÐÞØÒßÙÓßÙÓÜÙÒ×ÑË×ÓÍØÔÎØÕÎØÕÎÓÐÌÐÎÈÏÌÅÌÉÂÌÉÂÐÌÆÐÌÄÑÌÃÔÍÃÕÑËÚ×ÐÝÚÓßÜÕßÜÕßÛÓàÜÔàÜÔàÜÔàÛÒßÙÓÞÚÒÝ×ÑØÒÌÒÌÆÍÇÁËļʼɽÊÄÀËÈÁÊÇÀÊÆÀÊÇÃÌÉÅÌÈÂÉÅ¿ËļËļÌÄ»ÏżÑǾÐƽÐÈ¿ÒÊÁÓÉÀÕÏÈØÒÌÔÐÈÔÍÅÑúÑÁ¸Ì·«Êµ©Ð½³ÕÏÈÖÔÑÐÐÐÃÉÊËÍÌÏÐÎÊÌËÀÆÊÀÆʾÄÈ»ÁȾÄËÀÆʾÅÊ»ÂʸÀƺÁÆ»ÅȽÅ˾ÈËÂÊÍÄÌÏÃÌÍÂËÌ¿ÉËÂÊÊÂËÌÆÍÏÉÏÐËÐÐÏÑÓÑÔÔÓÖÓÔÕÓÖÖÓØÙ××ØÓØØÒÛÛÕßßÙßáÚßáÚáâÝáâÝáâÝáâÝáâÝàâÛàâÛàâÛàâÛàâÛàâÛàâÛàâÛàâÛàâÛáâÝáâÝàâÛáâÝáâÝáâÝáâÝáâÚßáÚßáÚßáÚàáÜàáÜàáÜßáÚßáÚßáÚßáÚßáÚßáÚÞàÙÞàÙÞàÙßßÙÜÜÖÙÚØÕÖÔÒÕÒÎÑÎËÐÍÌÒÐÈÍÍÄÊËÄÌÌÁÉÌ¿É̾È˽È;ÅʽÄÉ»ÅÈ»ÅȺÅʸÄÊ·ÄÇ·ÂɶÀƳº¿²¹¾³»Á´¼Â³½À³½Àµ¼Á¸¾Â·¾À·¾ÀºÁûÃûÄ¼ÄľÅÄ¿ÈÆÀÈÅÂÈÆÈÉÊÊÌËÍÎÌÍÎÌÍÎÌÎÏÍÎÏÍÎÐÌÏÐÎÎÏÍÎÏÍÎÏÍÏÐÎÏÏÌÎÏÊÍÎÉÎÏÊÏÐÎÌÍËÈËÈÈÊÉÇÉÈÈÊÉÆÉÉÇÉÈÈËÈÈËÈÉÎËÌÏÌÌÏÌËÌÇÊÊÄÇÈÃÉÅ¿Ä¿¼Ç½ºÄ·´Á¯©½¨¢·œ’¬†}škaˆRIƒI?F;€E:C7C7~B6~B6}A5~B6~B6~D:ƒJB‹XM‹ULJBzC;yB8vB9qC<pGAkHEdFE^HHZIKTILPKOKJOHJPFLRDLRCMSBMT@LTAMUAMUAMUAMUAMUAMUAMUAMUAMUAMUAMUAMUAMUAMU@LTBMTCMSDLRFLRHJPKJOOJNSIJXHH]GGdFEhE@nC>qC<vB9yB8y@8|A6}A5}A5}A5}A5}A5}A5}A5}A5}A5D9G=‚LE†SKˆZS‹`XgcŽmjrouuxx‘~{•‚™†›‡‚zœzsœ}u›|t˜ri•i`ŒZQ…NDƒK@€F<}B7}A5‚H>^V–lc—kb•g^`V“dZ–lc—i`•eZ‘bX•g^™rjœxo¢€y§‹­žœ®¤¥°­­°³·³¹À¶½Â¹ÀÊ»Àɺ¿È·¾Èµ¼Ä±¹Â²¹Á²¹Á°¸Ã¯¹Â°ºÃ³ºÂ±¹¿¯·À®µ½¬³½®´º¯±´²°±¶±±»¶¶º¸¶¶¸·°µ²­³±«²±¥®¯Ÿ©¬˜¤ª“Ÿ¥™¡‹™¢ˆ–Ÿ‚‘~™}‰—|‡–}†’Š”ƒ‹”„Œ•‡”ƒ‹”Œ–ƒ–Œ–‚Œ•€‹•„Œ•…Œ”†Š’‰‡ŠƒŒ||‹vv‰po‡li†eb„_\ƒXP‚SKƒLBG=€F<~C8}A5}A5}A5}A5}A5}A5}A5}A5}A5}A5}A5}A5}A5}A5}A5}A5}A5}A5}A5}A5}A5}A5}A5}A5}A5}A5}A5}A5}A5}A5}A5}A5}A5}A5}A5}A5}A5}A5}A5}A5}A5}A5}A5}A5}A5}A5~B6~B6~B6~B6~B6~B6C7C7€E:„L@•d\¤}u¯’Œ¶ œ¹¬©»°­º°®»¸¸¿¿ÅÇÅÉËËËËÊÉÄÁÁÁ¾¾Ä¿ÂÆÀÂÅ¿¾É¿¼ÌľÏÉÂÓËÂ×ÍÄÚÓÎÛÕÏÛÕÏÚÔÎÜØÐÝ×ÑÝÚÓØÕÎÓÐÉÒÎÈÔÐÊÖÒÌÔÑÊÓÐÉÐÌÆÌÊÄÎËÄÎÊÄÍÊÃÎËÄÐÌÄÑÌÃÓËÀ×ÑËÜØÐàÚÔßÜÕßÜÕàÜÔàÜÔßÛÓÞÙÍÜÕÍÞØÒÜØÐØÕÎÙÓÍÐÊÄÊľÊĽÊľÊÇÀÊÇÀËÈÁÊÇÃÈÅÁÌÉÅÍËÈÊÊÄÊÆÀÊĽÊĽÌŽÎƽÑÊÀÏÉÂÒÌÆÓÏÉÑÌÃÕÏÉÖÐÊÔÎÇÑǾÐÁ·Î¾µÐ¾µË·¬Íº°ÑúÒËÃÐËÈÊÊÇÈÇÆÉÉÉÆÉÉÂÇÊ»ÁǶ½Â»ÁÇ»ÁÈ»ÂʺÁƼÂƸÀùÁÄ»ÂǽÇʾÈ˾ÉÎÂÊÍÂÉ˾ÉɼÉÉ¿ÉË¿ÉËÃÌÍÆÎÎÊÐÑÍÒÒÎÓÐÓÔÒÔ×ÔÖÖÓÕÖÔÖ×Õ×ØÓÙÚÕÝÞÙßáÚáâÚàâÛáâÝáâÝâãÛàâÛàâÛàâÛàâÛàâÛàâÛàâÛàâÛàâÛàâÛáâÝáâÝáâÝàâÛàâÛáâÝáâÝáâÝáâÚáâÚßáÚßáÚßáÚßáÚßáÚßáÚßáÚßáÚßáÚßáÚßáÚßáÚßáÚßáÚààÚÜÜÖÛÛØ×Ú×ÖÚÔÒÕÒÍÒÎÍÓÑËÑÏÇÎÍÃË˾ÉÉÀÉʽÇʽÈÍ»ÅË»Å˸ÃʸÃȸÃȶÁƶÁÆ´¿Ä¶¾Ä´»À²¹¾²¹¾³¹½´¼¿³½À¶¾Á¸¾Â¸¾Â¹À¸¾¿¸ÀÀ»ÃûĻĽÄþÇÅÂÉÈÆÉÉÉËÊÉÊÈÉËÇÌÍÈÎÏÊÍÍÊÍÎÌÍÎÌÍÎÌÍÎÌÎÏÍÍÎÌÎÏÊÏÐËÍÏÉÎÐÌÎÐÌÎÏÍÌÍËÉÌÉÅÊÇÈËÈÉÌÉÊËÉÊÌÈÊÍÊÌÏÌÍÐÍÍÏËËÍÉÊÌÈÊÈÅÇÅÂÅ¿ƿ½Äº·Á²­¾«¤¹¢š­„˜ia‰RH‚H>‚H>‚H>‚H>€E:~C8~B6~B6~C8€E:‚H>‹WK–ha–haˆUJ~G=wC:sB<nC>mJEjOL^HHXHHTILPKOLLRIMSFLSCMSBMTAMU@LTAMUAMUAMUAMUAMUAMUAMUAMUAMUAMUAMUAMUAMUAMUAMUAMU@LT@LTBMTCMSFLSFLRJJPNIMTILXHH]GGeFCiDAnC>sB<wC:zB7zA9}A5}A5}A5}A5}A5}A5}A5}A5}A5~B6E;€G?‚NE…SJ‡XP‰^Vˆb^†dbˆhh‹pmŽtp‘ws–{v—zt˜rk—ph˜qi–ja\T‰SJƒI?D9~B6}A5}A5}A5€E:†OE‘`X‘bZ^V^U^V“dZŽ\S‰UI‰SJŽ^S”f_“h`”ng˜vož‚|¢Š¦—•¬£¥¯­±±±·³µ¾®³¼¯¶À±¸Â°¸Á°¸Á¯·½±¸À¯·Â°¸Á°¸Á±¹Â±¹Â¯·À­´¼­´¼®²¸°®²²¯¯³¬ª³­©¸±¯¸µ²µ¶´²´°­³±«°°¥¬®œ§ª–¢¨œ¢Œš£Œ˜ ˆ”œ€Ž—}ˆ•{†’|…‘ˆ„Š‰“Š”†Œ’ƒ‹”‚Š“~‰“Š”€‰•‚†‘‚„‚~†„{€†xzˆss‡nm‡he„b`ƒ]Y‚XQ€RKMF€I?E;~C8}A5}A5}A5}A5}A5}A5}A5}A5}A5}A5}A5}A5}A5}A5}A5}A5}A5}A5}A5}A5}A5}A5}A5}A5}A5}A5}A5}A5}A5}A5}A5}A5}A5}A5}A5}A5}A5}A5}A5}A5}A5}A5}A5}A5}A5}A5}A5€B6€B6€B6€B6€B6€B6€B6€D8†K@‘]Q™ma¥v°’‰´•¹«§¹ª¥º¨¢¹©£½¶´¿¾ÃÁÀž½¿½½½¾¾¾À¾¿ÃÀÀÉÄÁËÄ¿ÍÇÁÐÊÃÔÍÃÚÔÍÝ×ÑÞØÑßÙÓÞØÒÝÙÑÜÙÒÙÖÏÓÍÇÏÌÅÒÎÈÔÐÊÕÑËÖÐÊÒÏÈÏÌÅËÇ¿ÌǾÌÈÀÍÉÃÎÊÄÐÊÄÒËÁÔÌÁØÑÉÜÖÐßÜÕßÜÕàÝÖßÜÕßÛÓÛÖÍÚÒÇØÑÇØÔÌÙÖÏÚÖÎÖÓÌÏËÃÉÅ¿ÉÅ¿ÊÇÃÍÊÃÍÊÃÊÇÀÊÇÀÉÅ¿ÊÇÃÊÅÂËÇÁÊľÊľÊĽÊĽÏÉÂÒÌÆÑÎÇÑÏÉÒÏÈÒÎÆÐÌÄÓÏÇÓÌÂÑǾÑǾÒÄ»ÒÄ»ÒÄ»ÒÄ»ÒÈ¿ÐËÈÍËÉÊÉÈÄÆÉ¿ÅɾÄÈÂÅȽŸ¾Å¹¿Æ³»Ä¸¾Å·¾Ã»ÁźÁÆ»ÂǼÃȼÄÊ»Æ˾ÈË¿ÉËÀÉÊ¿ÈɼÉÉ¿ÈÉÀÉÊÀÊÌÅÍÍÉÐÏÌÒÐÎÓÐÐÓÐÓÖÓÕ×ÓÔÖÒÔÖÒ×ØÓÚÛÖÞßÚàáÙáâÚáâÚáâÚâãÛâãÞâãÛâãÛàâÛàâÛàâÛàâÛàâÛâãÛàâÛàâÛàâÛàâÛàâÛàâÛáâÝáâÝáâÝáâÝáâÝáâÚáâÚßáÚßáÚßáÚßáÚßáÚßáÚßáÚßáÚáâÚáâÚáâÚàáÜÞàÙÞàÙÞßÚÚÛÖØÚÖ×ÛÕÔØÒÐÔÎÍÒÏÌÒÐÇÎÍÃË˾ÈʾÈʼÇǺÅʺÄʹÃɶÀƵÁÇ·ÁǵÀǶÀƱ½Ã³»Á³º¿²¹¾³º¿±¸º³»¾³½À¶½Â¸¾Â¸¿Á¸¿Á·¾ÀºÀÁ¼ÂûÂÁ»ÃýÅžÆÃÀÈÅÃÈÈÂÇÄÊÊÊÌÍËÍÎÌÌÎÊÌÍËÍÍÊÌÍËÌÍËÍÎÌÍÏËÌÎÊÍÎÉÌÎÈÌÎÈÍÏËÍÎÌÍÎÌÌÍËÊÌËÉËÊÇÊÇÇÊÇÌÍËËÎËÍÐÍÎÏÍÍÏËÌÏÌËÎËÈËÈÆÉÉÃÆÆÂÂÂÃÀ½Ã»¸Á¶³À²®¼¬¦±“Œšl`‹TJƒK?„I>…J?…KA„L@I=G=‚G<ƒK?ˆPE‰UI’`W›tl›tlŽ_U€NEvG?qD>mGClOLgQP]KLSIJPKOJLOHLRELQCMSBMTAMUAMU@LT@LT@LT@LT@LT@LT@LT@LT@LT@LT@LT@LT@LT@LT@LT@LT@LT@LT@LT@LTBMTCMSELTFLRJJPNIMSIJZHI^FFfEBjD@pC=tB;xB9zA9}B7}A5A5A5A5A5A5A5A5A5A8€E:€G?ƒLB„RI…VN‚WQ…ZTˆ^WŠd`hbga‘f^‘cZ^VŽ[PŒXL‡PFƒH=F;C7A5€B6A5A5A5A5€D8„I>‡PCŒYNŒYN“cX”e[ŒYN…NA…NA‰UIŒXLŒ[S‘cZ”ia•qh™zu›}ž‹ˆ£””¦›ž©£¦¨¦ª¨¨®«®²­±¹®´º°¶º®¶¼®¶¿®¶¿®¶¿±¹Â¯¹Â¯·À¬¶¼«³¹­²µ¯®°±¬¬±ª¨²¨¥´ª§¹²­¸µ±¶´²´´±°²±¨­­Ÿ¨©–¢¨œ¢‹—Ÿ‹—Ÿ‰•…š€Š“}…~…ƒ‰ŠŒŽŒŒŒŽ‹‹‘†Œ’‰’‰’~†‘}„Ž~~‡z€ux‚ss‚mm…jj†d`ƒ`[ZU‚UO‚QI€MB€H=€F<C7A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5€B6€B6€B6€B6€B6€B6C7„I>ŠRGYM˜i_©†|´œ“µ›’¸£»¨¡ºª¤º«£½µ²¾¼À¾¾Á½¼¾½¼¾¾½¼Á¿ÀÊÇÃÐÍÉÓÐÉÓÐÉÒÎÆ×ÓËÝ×ÑßÙÓÝÚÓßÙÓÞÚÒÜÙÒÙÖÏÓÐÉÑÎÊÐÎÈÐÎÈÑÎÊÔÐÊÓÑËÐÍÆÏÌÅÍÈ¿ÏÉÃÎÊÄÎËÇÑÍÇÓÍÇÖÑÈÙÒÊÝØÏàÚÔàÝÖàÝÖàÝÖáÛÕÝØÏÛÓÈØÏÃ×ÐÆÓÏÇÔÑÊ×ÔÍÏÌÅÊÇÀÈžËÈÁÏÌÅÏÌÅÎËÄÌÉÂÊÇÀÈžÉÇÁÊÇÀËÈÁÊÇÀÉÅ¿ÊľÊľÏÉÃÐÍÆÐÍÆÏËÃÓÐÉÒÏÈÐÌÄÍËÂÑÌÀÑÊÂÒËÁÒËÁÒÈ¿ÒËÃÓÌÄÐÌÆÊÊÊÇÈÉÃÆÊÃÆÊÂÇÊÂÇÊÄÇÊ¿ÅÉ·¾Æ´¼Å³½Ã´¼Å¸¾Å¹¿Æ¸¿Ä¹ÀȹÃƼÆɽÇÊ»Æ˾È˾ÆɽÇÊ¿ÈÉ¿ÆÈÀÇÉÂÊÊÄËÍÈÏÎÊÐÎÌÒÐÏÔÑÎÓÐÑÖÒÓÖÓÓÕÑÔÕÓØÙÔÝÞÙààÚàáÙáâÚáâÝâãÛâãÞâãÞâãÛàâÛàâÛàâÛâãÛâãÛâãÛâãÛàâÛàâÛàâÛàâÛàâÛáâÝáâÝáâÝáâÝáâÝáâÝáâÚáâÝáâÝßáÚßáÚßáÚßáÚßáÚßáÚáâÚáâÚàáÙàáÙßàØßàÛÝÝ×ÜÝØÙÛ×ÖØÔÓ×ÑÓ×ÑÑÔÑÎÓÐÊÐÎÇÍοÉ˼ÆÉ»ÆɹÄÉ·ÂÇ·ÁÇ´¿Æ±¼Ã±¼Ã³¾Å²½Ä°»À¯·½±¹¿¯·½±¹¿±»¾²¹»³½Àµ½À¶½¿¸¿Á·¾À¸¿Á¸¿Á¹À¹ÀºÁýÅŽÄþÅÄÀÅÅÅÈÈÆÈÇÊÌËÌÍËÌÍËÌÍËÌÍËËÌÊËÍÉÍÎÌÍÎÉËÌÇÌÍÈÌÍÈËÍÇËÌÇÌÎÊÍÎÌÌÍËÌÌÌÉËÊÇÌÉÉÌÉÊÍÊËÎËÍÐÍÍÐÍËÐÌÊÏËÉÌÉÇÊÊÃÈÈÂÅÅÀÀÃÀÀÀÀ½ºÀ¹·Àµ²¼®ª´š”ŸulŽ[N†OBƒK?…J?ƒK?ˆRFYM‹WKˆQDŒXL]R“cX—la zqŸ{r”lc‡[R{PHsMFoPKmVTgVU]RRQKNMLQHLRFMRDNTCNUAMUAMUAMU@LT@LTAMUAMUAMU@LT@LT@LT@LT@LT@LT@LT@LT@LT@LT@LT@LT@LT@LT@LT@LTBMTCMSELTGKQJJPOILUHK[HHbGDhE@mD>rC;wC:yB8}B7}B7~B6C7‚F:‚H<‚F:C7~B6~B6~B6~B6E9€H<€JANC€QIƒUL‡VN‰XP‰VK‡SG…OCI=ƒH=‚G<‚F:€D8C7~B6C7~B6~B6~B6~B6~B6~B6~B6~B6€D8‚G<ˆRF“cX•i]‘aV‰SG„L@„LA…OCˆTH‹YPŽ_U’f]“mf•sl—yu™€}œ‡‡¤“’£•”¦››§ŸŸ©¤§«ª¬®°²®±µ®´»¯¶¾®¸Á±¹Â²ºÅ¯·Â­µÀ­´¾®²¸®±µ°®¯°ª©°¨¥²§¢·¬§¸¬¦¸°­·²¯´²°¯°®©¬¬ž¦©• ¥‘œ¡‘›¡Ž™ Š’›…‹’‚ˆƒ‰ˆ‹ŠŒŒŽŒŒ‰‹Ž…‰ƒ…‹‡{z‚}u{~sv~nniiec€a^\V€WQ€SM€OGKB€H=~F:€D8~B6~B6~B6~B6~B6~B6~B6~B6~B6~B6~B6~B6~B6~B6~B6~B6~B6~B6~B6~B6~B6~B6~B6~B6~B6~B6~B6~B6~B6~B6~B6~B6~B6~B6~B6~B6~B6~B6~B6~B6~B6~B6~B6~B6~B6~B6~B6~B6~B6A5A5A5A5A5A5€D8†NBŠSF‘_S™i^«‰€¸¥ ¹¦Ÿ·¡˜¹£š»­¦½³°¼º¾¾½Â¼»½¿¼¼¿½¾ÄÁÁÍÈÅÔÐÊØÔÎÚ×ÐÛÕÏ×ÑËÙÖÏÝÚÓÞÛÔÛØÑÜÙÒÛØÑØÕÎÔÑÊÒÏÈÑÏÉÐÊÄÏÌÅÐÊÄÐÌÆÒÐÊÓÐÉÓÏÉÒÎÈÐÍÉÐÍÉÓÏÉ×ÑËÛØÑÞØÒßÙÓàÚÔàÝÖàÝÖáÛÕâÜÖßÙÒÛÔÊÚÒÇÕÎÄÔÌÁÒÍÄÐÊÃÏÉÂÌÆÀÊľÌÉÂÎËÄÐÍÆÏÌÅÎËÄÍÊÃÍÊÃÍÊÃÍÊÃÌÉÂÍÊÃËÉÃÉÅ¿ÇÁ½ÉýÌÈÀÏÊÁÏÉÃÐÍÆÑÎÇÐÍÆÎÊ¿ÑÊÀÒËÁÒÌÅÑËÅÒÎÆÑÎÇÓÍÇÑÎÇÎÌÉÅÆǽÁǽÁÇÂÅÉÃÆÉÄÇÊÄÉÉÃÈ˾ÄÈ»ÁÈ·¾Æ¸¿Ä¸¿Ä¶¾Ä¸ÀƸÂŹÃƼÄǺÅʹÄɽÇʾÈʽÈȾÆÉ¿ÈÉ¿ÈÉÀÉÊÁÊËÆÎÎÉÐÏÊÑÐËÒÑÊÐÎËÑÎÏÔÑÔÕÓÔÕÓ×ØÓÚÛÖÞÞØÞàÙâãÛãäÜãäÜâãÛâãÞâãÛàâÛàâÛàâÛâãÛâãÛâãÛâãÛâãÛâãÛàâÛáâÝàâÛàâÛáâÝáâÝàâÛâãÛâãÛâãÞâãÞâãÞâãÛáâÝßáÚàáÙßáÚáâÝàáÜàáÙàáÙÞßÚÞß×ÝÞÙÛÝÖÛÜ×ÙÚÕÓÖÓÓ×ÑÒÖÐÒÖÐÎÓÏËÑÏÇÎÍÀÉʼÆɺÄÇ·ÂÇ·Ádz¾Å²ºÃ²ºÃ°¸¾±¹¿°ºÀ°¸¾¯¶¸®¶¼®¶¼¯¹¼®¶¹¯·º³º¿µ¼Á·½Á¸¿Á¹À¹À¸¾¿¹À¿»Á¹À»ÂļÄĽÃÄ¿ÅÃÂÈÆÆÈÇÈÉÊÈÉÇÉÊÈËËËÌÍËËÌÊËÍÉÌÍËÌÍÈÌÍÈÌÍÈÊËÆËÌÇÌÍÈËÍÉËÌÊËÌÊÌÍËÊÍÊÈËÈÈËÈÊÍÊÊÍÊËÎËËÎËÌÏÌÉÎËÈËÈÂÇÄÀÆÇ¿Áþ¾Á¿¿¿¾¼ºÀº¹¿¶µ½¯«¶›“¤|p•eYŒVJ‡OD„J>†NBYM”bY’`W]R•eZ˜i_ul£€x¤ƒ~£‚}|w’og‡d_}^Yv\XjXVfXZ\VXOORIMSFMREMSDOVAMUAMUAMUAMU@LTAMUBNVBNV@LT@LT@LT@LT@LT@LT@LT@LT@LT@LT@LT@LT@LT@LT@LT@LT@LT@LTALSCMSELTGKQKJOPJMWGJ\GGbEBhE?oD<tC;xB9{C8D9ƒG;„L@ˆPD‰QC‰QC„J>ƒG;C7A5A5A5€D8€F<I>KB‚OD…NDƒK?†NB†NCƒI=C7€B6A5A5€B6A5A5A5A5A5A5A5A5A5€B6A5A5E9†NC”bY–j^’bWŠSF‚G<‚G<‚J>…NA‡SGŠWL]RcZ‘jb’mg”sn–xtœ~Ÿ„Ÿ‰…¡Ž‹¥–”¨¨¡¢«¦©©«®«¯µ­³º°·Á³ºÂ±¸Â°¸Ã­·À®µ¿­³¹¯±´±®®±§¤¯¡²£ž² š³¤Ÿ¸­¨·°«³®«±®«¬¬¬¤©© ¦§ž£¦› £–˜›ŒŽŠŠ‹ŠŒŒŽŒŽŽŒ’‹Œ“Š‰ˆ‰‰ƒ…ƒ}€w}~tx}oq{ij|dd}``}\Y|YS~TMQH~MEI@€H<€E:C7A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5€B6€B6€B6€B6€B6€B6E6†NB‹SE”dXšnb®Žƒ¸ª©»®«ºª¤¹£š¸¦¼¯¬¿¼¿¾½Â¾¼½À¾¿ÈÂÄÍÊÇÔÏÌÚÔÎÝ×ÐÞØÑÝ×ÐÛ×ÏÛØÑÝÚÓßÙÓÛØÑÙÖÏØÔÌÔÑÊÒÏÈÒÏÈÐÎÈÐÌÆÏÌÅÐÊÄÎÌÆÒÏËÒÏËÓÐÉÓÐÌÓÏÉÕÑËÓÐÉ×ÑËÛØÑßÙÓáÛÕáÛÕàÝÖâÜÖáÛÔàÚÓÞØÒÛÖÍÙÕÍÖÐÊÑÊÂÏȾÎǽËÅÁÌÈÂËÈÁÍÊÃÍÊÃÎËÄÌÉÂÊÈÂÍÊÃÌÉÂÍÊÃÌÉÂÍÊÃÍÊÃËÉÃÉÅ¿ÇýÈÀºÈÁ¼ÌÈÀÏÉÃÍÊÃÐÍÆÎËÄÐÍÆÒÏÈÓÐÉÓÐÌÑÏÉÒÏËÑÏÌÐÎËÎÎÈÉÊÈÄÆÈÀÃÇ¿ÄǾÁÅÀÃÆ¿ÅÉÁÆÉÀÄʼÂÈ»ÁÇ·½Ä¶ÀùÀÅ·¾Ã¹ÀŶ¾Ä·ÁÄ»ÅȽÅȼÆɽÇʾÈÊÀÇÉ¿ÈÉ¿ÈÉ¿ÈÉÂÈÉÁÉÉÀÊÌÄÍÎÄÌÌÆÎÎÇÏÏÊÐÎÏÒÏÑÔÑÔÖÒØÙÔÚÚÔÝÞÙÞàÙáâÚáâÚâãÛâãÛâãÛâãÛâãÛàâÛâãÛâãÛâãÛâãÛâãÛàâÛàâÛàâÛàâÛàâÛàâÛáâÝáâÝàâÛâãÞâãÛâãÛâãÞâãÞâãÛáâÝàáÙßàØàáÜßáÚàáÙààÚààÚÞßÚÜÝØÜÝØÛÝÖÚÛÖ×ÙÕÕ×ÓÒÖÐÑÕÏÎÓÏÍÒÏÊÐÎÆÍÌ¿É˽È˹ÄÉ·¿Åµ¿Å±¼Ã­¹Á­¸¿­·½°·¿­´¹¬´º­´¹«³¹­´¹¯¶»®¶¹­µ¸±·»µ¼¾¶½¿¶½¿¹À¸¿Á¶¾¾¸¾¿ºÀÁºÀÁºÁÀ»ÃýÃľÅľÅÄÂÇÇÄÇÇÇÉÈÊÊÊÊÊÊËËËÊËÉËÌÊÊÌÈÈÉÄÊËÆÌÍÈËÌÇÌÍÈÍÎÉÍÎÉÌÎÊËÌÊËÍÉÊÎÈÈÌÆÇÊÇÉÌÉÈËÈËÌÊÊÍÊÉÎËÊÌËÆÉÆÂÇǾÅǽÃÄ»ÀÀ¼½¾¼»½¾¹¹¿¶µ¼®ªµ›’ªƒy›oc“aUŒUH‰QFˆQDYM‘]Q“cW™j`›pe¡yp¦„}¨Š¨•’¦•”¤“’œ‹Š’}zŠuu~mlnaae\^^[^TW[OU[IQWEPWBNVAMU@LT@LT@LT@LT@LT@LT@LT@LT@LT@LT@LT@LT@LT@LT@LT@LT@LT@LT@LT@LT@LT@LT@LT@LT@LT@LTBMTCMSFLSHJPMIOSIMZHI_GGfEBlF?sG>xG?H>ƒMA‡PC‹SHWK[O‘]QYMŠRD†K@ƒG;€D8C7A5C7€F:‚G<ƒG;‚F:E9E9‚F:€D8A5A5A5A5A5A5A5A5A5A5A5A5A5A5€B6€B6A5ƒG;‰RE\QŽ[P‹UI„L@€D8€B6ƒG;ƒI=†NC†RFˆVM‹[P_Ve^ke’mg”ql–tm˜{uœ€z†¡Œ‰£‘¥••¦œ¥¢¥¦¨««­³­°´¯²¹¯´½®µ¿¯³¾¯±·°®²°¨¨°žš¬•­•­•Œ¯•±›”³ž˜² š³¤Ÿ³©¦°­ª®¬ªª©¨¦¦£¡›š•Š’‹‰“ŒŠ“ŒŠ“ŒŠ“Š‰”†…”ƒ‚‘€~|z‰wu„rp€mm{efyaay^[{XU|UP|QI}OF|JCH>€F<E9C7A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5€B6€B6€B6€B6€B6C7E6†J>ˆPD“`Sqe¯“Š¶¡ž¸¨¢¹§¡º¦¹£š»®¨¼»½À¿ÁÁ¿ÀÈÅÅÎËÈÓÎË×ÓÍÜÖÐÞØÒÞØÑÞØÒÝÙÑÝ×ÑÞØÑÝ×ÐÚ×ÐØÒÌØÒÌÔÑÊÒÐÊÒÏÈÏÌÅÎÊÄÎÊÂÑËÅÑÏÉÑÎÊÐÎÈÒÎÈÐÌÆÒÎÈÖÒÌÔÐÊÐÎÈÒÍÊÚÔÎÞÛÔàÝÖßÜÕàÜÔáÛÕÞØÑÛÕÏÛÕÏÕÐÇÑËÄОÎƽÌŽËžÊÇÀËÈÁËÈÁÌÉÂÊÇÃÈÅÁÈÅÁÊÈÂÊÈÂÊÈÂËÈÁËÈÁÉÅ¿ÈÅÁÇýÇÁ½ÆÀºÅ¿¹ÉÅ¿ÌÈÂÎËÄÑÎÇÑÎÇÏÌÅÑÑËÑÒÍÑÒÍÎÏÍÍÎÌÎÏÍËÍÌÉËÊÄÆÈÀžÁŽÁÇ¿ÄÇÃÅȾÄÈ¿ÅɼÂȺÀƹ¿Ã¶¼Ã¹¿Ã»ÁźÀĹÀŹÀŹÁǺÄǼÆɾÈÊ¿ÈÉ¿ÈÉÀÈÈ¿ÆÈÂÈÉÁÇÈÂÊÊÃË˾ÉÉÂÊÊÁËÊÆÌÊÇÎÍÊÐÎÌÑÎÏÔÐÓÕÑÕ×ÓØÚÖÝÞÙßàÛàáÙàáÙáâÚáâÚâãÛáâÚáâÚàâÛâãÛâãÛâãÛâãÛâãÛàâÛàâÛàâÛàâÛáâÝáâÝáâÝáâÝàâÛâãÛâãÛâãÛâãÛâãÛàâÛáâÚßàØàáÙàáÙàáÙÞàÙßàÛÞÞØÜÝØÚÜÕÚÜÕÙÚÕÖØÔÓÕÑÓÕÑÑÓÏÎÑÎÎÓÏËÑÏÇÍËÃËË¿É˽È˺ÅÊ´¿Ä²¼Â®ºÂ¬·¾¬´½¬´º«²·«±¸«²·«²·ª±¶ª²¸­´¹®µº¬³¸¯¹¼³»¾´¼¿¶½¿µ½Àµ½À¶½¿·½¾¸¿¾¹À¿ºÀÁ»ÃüÃ¾ÅľÄÂÀÈÅÃÉÇÅÊÇÆÈÄÉÊÈÉÊÈÈÉÄÉÊÈÇÈÆÉÊÈÉÊÈÉÊÅËÍÉËÍÉËÌÊÌÎÊÍÏËËÎËÊÍÊÈËÈÈËÈÉÊÈÇÉÅÅÊÇÆÈÄÉÊÈÉËÊÆÉÉÂÈÆÀÆǾÆƼÄĺÀĺ¿Âº»¼¼··½¶´»®«µŸ˜¯„¥{ršl`‘^SYMWKŽZN‘_S•eZšnbŸul¥‚z©“©œœ¨Ÿ¡¦ £¢ž¤˜œ–“‡Œ†~ytxomnggmagm^dkS]cJV^FRXDOVAMUALSALSALSALSALSALSALSALSALSALSALSALSALSALSALSALSALSALSALSALSALSALSALSALSALSALSBMTELTFLRJJPOILUHK]HHgMIoNIuPJ}QE„TIˆXLŠWL[O‘^S”bV˜h\˜h\”bV[O‹SE‡OA†L@ƒG;€D8C7A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5€B6€B6A5E9†L@ƒI=‚F:E9€D5A5A5€B6E9G;ƒK?…QE‡TIˆWOŠ^Uc\fa‘hb‘lf”ql–up—yrš}wœ|ž…‚¢‹‰ ¢——¥œž§¡¤¦¡¥§£©¨¤ª«£©«¢¤¬›š«–ªŠ¥ƒz£}t¡zp¡ynŸwnŸul£{p©‡~¯“Š²—µ¦¡³§¡­£ ©›—Š…˜ˆ‚—ˆƒ˜†‚˜…€–‚|–~x•zu’vpsmŒpg‰kd„fb`]}[W|WT|SM}QH}LD~JAH>~F:€D8A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5‚C6‚C6‚C6‚C6‚C6ƒD7ƒE9„F:‡N?“`S¢zl­Œ€¯„±‘†¶ž•º§ ¼­¨½·¹½¼¾¿¾ÀÄÄÄÌÊÈÒÏËÖÒÌÖÒÌÜÖÐÜÖÐÞØÑàÚÔÝÙÑÞØÑÝÖÎÛÕÏÙÖÏ×ÓËÔÑÊÓÐÉÐÎÈÐÎÈÍÊÃËÈÁÐÌÆÒÎÈÒÎÈÐÌÆÑÎÊÐÌÆÍÅ¿ÍÇÁÍÇÀÍÇÀËļÌÄ»ÑÊÂÚÖÐßÛÕßÜÕàÜÔàÚÔÜÖÐÙÕÍÚÔÎÔÐÈÐËÂÎƽÍÅ¿ÌÈÀÌÉÂÎËÄÍÊÃËÈÁÉÅ¿ÆÿÆÿÅÀ½ÆÿÆÁ¾ÉÅ¿ÇÄÀÈľÇÄÀÉÄÁÈÃÀÆÁ¾ÅÁ»Ä¿¼ÇÄÀÊÇÃËÈÁÎËÄÎËÄÍËÅÑÑËÒÒÌÑÒÐÏÐÎÌÏÌÎÏÍÈËËÃÈÈÀÅÅÀÃƾÁŹ¿Å»ÁžÄÈÀÅÈ¿ÄǺÀĹ¿Å¸¾Å´ºÁ¶¼Ã¸¿Ä¸¿Ä¸ÀùÀŶÀƹÃɸÃȺÅʾÆÉÀÈÈÁÈÇÃÈÈÂÉÈÃÊÉÃÊÉÃÊÉÂÊÊÂÊÊÄÌÉÇÍÊÈÐÍÊÐÎÌÑÎÎÓÐÑÔÑÓÖÓÖØÔÜÝØßßÙÞàÙàáÙàáÙàáÙáâÚàáÙáâÚáâÚâãÛâãÛâãÛâãÛâãÛâãÛàâÛáâÝáâÝáâÝáâÝáâÝáâÝáâÝàâÛàâÛàâÛàâÛàâÛáâÚáâÚàáÙàáÙàáÙààÚÞßÚÝÞÙÚÜÖÛÜ×ÙÚÕÖØÔÓÕÑÑÔÑÑÔÑÐÔÎÎÒÌËÐÍËÑÏÉÏÍÆËËÂÊʾÈÊ»ÈȹÄdz¾Ã±¼Ã¯ºÁ«¶½ª´º¨°¶¨°¶©°µ©°µ©°µª±¶©°µ«²·¬³¸¬³¸®¶¹²¹»²¹»·½Á¶½¿¶½¿¶½¿µ¼¾·¾À¸¾¿¸ÀÀºÁûÃüýŞÅÄÁÈÇÃÉÇÆÈÄÇÉÅÇÊÇÈÊÆÇÈÃÈÉÇÉÊÈÈÉÇÆÈÄÊËÉÊËÉÊËÉÍÎÌÍÎÌÊÍÊÇÊÇÆÉÆÇÊÇÆÈÄÇÉÃÆËÇÆÈÄÄÇÄÄÆÅÄÅÆÃÆÆ¿ÆȼÄĹÀ¸¿Ä¸¾Â·¹»¹·µ»µ´º¯¬¶¡›°‘‰§t rf•eY‘_S”aT—g[šj_šl`šod xo¥†~©–“ªŸŸ§Ÿ¢¤Ÿ£Ÿ£—™Ÿ’’›ŒŒ•„†~€‰symt~iqzcnu[clP[bIU[FQXFQXDOVDOVBMTALSALSALSALSALSALSALSALSALSALSALSALSALSALSALSALSALSALSALSALSALSALSALSALSCMSDKPGJQKJOPHK]NNiVSuZU|[VYR…[RŽcX•i]šnb›ocœnbŸpc¡sg¡ugo`™i[•cW“`SYK‰PAƒH;E6€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€D5C4€B3€B3€B3€B3€B3€B3€B3E6‚G:ƒI=„M@‡QE‡UL‰ZPŠ^UŒaYŽd]f`’lc”ne–pg—qh—qh—qh™wpœy ‡„¢Œ‹£Œ£ŒŠ¤‹ˆ¦‹†¤†¡{rujuj™oc—g\•eY”bV‘]QŒUHŒUH’_Ršl`¡wk©…|­‘ˆ«”Œ¥„œ€wš|u™}t˜|s—yr–vm”ri”ne’lcjcf^Šc[‡`X„ZQWN€RI€PE€MB€I<G;F9E6€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3‚C6‚C6‚C6‚C6‚C6C4ƒE9…J=‹RCšl`®‡´™µ›’¶›‘º§ »®¨¾·µ¾¾Á½¼¾ÂÀÁÆÅÄÏÍËÔÑÍÔÒÌ×ÔÍÛÕÏÜØÐßÙÒàÚÔÝÙÑÞØÒÛÔÌÙÕÍØÒÌÔÑÊÒÏÈÑÍÅÐÍÆÎËÄËÇÁÊÇÀÍÊÃÎËÇÌÉÆÎËÇÏÌÈÎÊÄÊÄÀËÇÁÌÈÂÌÆÀÌľÊûÎÈÁÕÑËÛ×ÑÝÚÓßÙÒßÙÓÚÔÎØÕÎ×ÓËÒÍÄÐÉ¿ÍÉÁÌŽËÈÁÊÇÀËÈÁËÈÁÉÅ¿Åſ¼ÁÁ»Â¿»ÃÀ¼ÃÀ¼ÅÀ½ÅÀ½ÄÁ¾Å¿ÄÁ¾ÄÁ¾Á¿½Â¾¸ÀÀºÁÁ¾ÃÁ¿ÈÅÁËÉÃÍÊÃÐÍÉÐÎËÒÐÍÎÏÍÏÐÎÍÏÎÏÐÎÉÌÌÆÉÉÄÇÇ¿Åƹ¿Å²¹¾´¼Â¼ÀƽÂżÂƺÀÆ»¿Å¸¾Å³ºÂ³»Ä±¼Á´¼Â¶½Âµ¿Â´¼Â·ÁĺÄǼÄǾÅÊÀÈÈÂÈÉÄÊËÃÊÉÃÊÉÃËËÅËÌÄÌÌÂËÌÄËÊÆÎËÈÏÎÊÐÎÌÑÎÍÒÏÑÔÑÓØÔÕÙÓÚÛÖÝÝ×ßßÙààÚÞàÙàáÙáâÚáâÚáâÚàáÙàáÙàâÛàâÛàâÛàâÛáâÝáâÝáâÝáâÝáâÚáâÚáâÚáâÚáâÚááÛááÛáâÚáâÚáâÚàáÙàáÙààÚßßÙÞÞØÞÞØÝÝ×ÙÛÔØÚÖØÙÔÖØÔÒÕÒÐÓÐÐÓÐÏÒÏÍÑËÊÎÈÈÎÌÈÎÌÆÍÌÃËË¿ÈɼÆȸÃƸÂŵÀÅ´¾Ä¯ºÁ®¹À«µ»©±·©±·¨¯´§¯µ¦®´©¯³¨®µª°·¬²¹­³º®µº°¸»°·¹µ»¿µ»¿µ»¿´º¾´º¾¶½¿´½¾´»½¶¾Á¹À»ÂÄ»ÃûÃþÆÿÆÅÅÉÃÅÉÃÆÈÄÆÈÄÇÅÂÆÆÃÈÉÇÈÊÆÆÈÄÆÉÆÉÌÉÌÍËÌÎÊÊËÉÈÉÇÊÊÊÊÊÊÉÊÈÄÈÂÄÉÅÅÊÇÄÉÅÃÈÅÃÆÆÀÅÅÀÆǽÄƹÀµ½Ãµ¼Á³º¿´·»¶µ·º´¶¹¯­·£¯Ž‚¤znŸtg™k_•eY™k_žrfœrf vm¡wn¢|p¥ƒ|§‡¨•¥˜˜ —™™–™“š‹—…Š–~…‘w€Œp{ˆkw‚gs~bmwZdmP[bLW^KV]JU\HSZGRYEPWALSALSALSALSALSALSALSALSALSALSALSALSALSALSALSALSALSALSALSALSALSALSALSALSALSCKQFLSJJPPMP]STm_^yda€d^„c^‹h`œ|s¬Ž…²–±’ˆª„x§}q§}q«ƒu¯¶•‰²„­…z¢wj˜fZYK‡N?‚D5C4€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3E6‚G:ƒI=„M@…QE†SHˆWO‹[PŒ]S_VaWbY’bWŽ\P‹WKŒXL‘aV•kb–pg—ph—la—ma—la˜i\`T[MYKŽWJ‹TGŠRDˆPB„J>‚G:‚F7ƒH;…K?ŠSF’_R—l_™oc”fZ’bV“dW”i^”h\”l`”mc’kah\e\bW‹_S‹\RˆXM…UIƒQE‚NBJ=G;‚G:E6€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3C4C4C4C4C4ƒG8‡N?UG\N›maª‡}´˜µš¶ž•»®«¼··¼»º½¼¾¾¼ºÃÀÀÉÈÇÐÎËÕÑËÒÐÊÕÒË×ÑËÙÕÍÞØÒÝÙÑÝ×ÑÝ×ÑÙÕÍÖÒÊÕÒËÑÎÇÒÏÈÑÍÇÏÌÅÌÉÂÊÄÀÉÿÉÄÁÉÅ¿ÉÄÁÊÇÃËÉÃÌÉÅÊÇÃÊÆÀÊÅÂÊÇÃÊľÊľÍÇÁÎÊÄÓÏÉÙÖÏÝ×ÑÝ×ÑÙÓÍÔÑÊÐÌÁÎǽÍÇÀÍÈÅÊÇÀËÈÁÊÇÀÊÇÀÈÅÁÄÁ¾ÁÁ¾À¾»¾»·À½¹¿½ºÀ¾»À¾»¿½ºÀ½ºÂ¿¿Á¾¾À¾¼¿½º½½ºÀ¾»ÀÀ½ÂÀ½ÄľÈÆÀÎËÄÏÏÉÐÐÊÏÏÌÍÎÌÏÐÎÎÏÍÍÎÌÌÍËÊÊÊÀÅŶ¼Â±¸À®µ½¯¶¾¹½Ã¼Àƶ¼Ãµ»Âµ½Ã´»Ã³ºÂ³½Ã²¼Â³½Ã³»Á±½Ã±¼Ã³¾Ã»ÂǽÅȾÆÉÀÈÈÂÉËÄÊËÄËÊÂÉÈÂÊÊÄÌÌÅÍÍÂËÌÄÌÌÄÎÍÈÍÍÉÏÍÌÑÎÎÓÐÒÕÒÔ×ÔÕÙÓØÙÔÚÛÖÞÞØààÚàáÙàáÙàáÙàáÙàáÙàáÙàáÙàâÛàâÛáâÝáâÝáâÝáâÝáâÝáâÚáâÚáâÚáâÚáâÚàáÙàáÙàáÙàáÙáâÚáâÚàáÙßßÙÝÝ×ÜÝØÛÛÕÚÛÖÚÚÔ×ÙÒÖØÔÖ×ÒÓÕÑÑÔÑÏÒÏÍÒÏÍÒÎÉÎÊÈÍÉÈËÈÇÌÉÄËÊÂË̾ÈʺÄƶÀô¿Ä¶¾Ä´¼Â°ºÀ°¸¾¬´½ª´ºª²¸¨°¶§¯µ¦®´¤¬²¥¬´¨¯·ª°·ª°·­´¹¯¶»°·¹²¸¾²¸¾³¹¿³¹¿µ»¿´¼¿´¼¿´»½¶¾Á·¾À·¾ÀºÁúÁüÃÂÀÆÄÂÇÄÃÇÁÄÆÂÄÅÀÅÅÂÄÆÂÄÅÃÆÉÆÇÊÇÇÊÇÈËÈËÍÉËÍÉÊËÉÉÊÈÊÊÊÈÊÉÇÊÇÄÇÄÄÉÅÄÉÆÁÈÇÀÇÆÀÇÆÀÆǾÄźÁ÷¾Ã³»Á³¹À²¸¿±·½²²µ·²µ·¯¯´¢ž¯„¤znŸtgocšnbŸtg vj xl¥v¦„{¥ƒz¥‡€¥‰€¡‡žŠ„™Ž‹”ŽŒŒ’„‹•|„‘u‘p|Šjw†gtƒbo{^juXbkS^eO[cNY`MX_KV]IT[FQXCNUALSALSALSALSALSALSALSALSALSALSALSALSALSALSALSALSALSALSALSALSALSALSALSALSBLRFMRIOUTTWc]_tkjqm…roŠrl–|v®œ–¼¯¬Á´±Á²­¼¤›µ”ˆ²„¹›È´«ÏÁ½Ï¼μ¶Ä¬£¶“‰ tf‘]O‰PA‚G:C4€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3E6‚G:I=ƒK?„M@†PDˆQD‰RE‰UGŠVJŠVH†N@ƒG8‚G:ƒH;ˆO@ŠRD‰REˆPB‹TG‹TGˆPBˆPB‰PA„I<‚G:ƒG8ƒG8‚F7C4€B3€B3C4€B3‚F7…J=XKYK…K?‚H<„J>‡OA‹WKdXeZcWaU^Q‹[M‰WKˆUH†RD…NAƒK?‚H<‚G:F9C4€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3€B3C4C4C4C4ƒE6ƒE6…I:‰N?‰Q@’^PŸtg²’‡¸¢›¼ª¤½µ²½ºº½¼¾¾¼ºÁ¾¾ÅÂÂÇÈÃÐÎËÒÏÈÔÑÊÒÏÈÔÑÊ×ÓËÙÕÍÜØÐÛ×ÏÚÖÎØÔÌÕÑÉÓÐÉÓÐÉÒÏÈÏÌÈÍÇÁÉÅ¿ÊþÉÁ¾Å¿ÆÿÄÁ¾ÅÃÁÇÅÂÆÆÀÄľÃÀ¼ÃÀ¼ÅÃÀÈÃÀÉÄÁÈÅÂËÈÄÏÌÈÒÐÊ×ÑË×ÑËÕÏÉÏËÃÌǾÌŽÊÄÀÊÅÂÊÇÀȞȞÉÅ¿ÉÄÁÃÀ½À¾»º»¶¾»·½º¶½º·½º¶¼¼¹½»¸¼º¸»»»¼»º¼¹¶½¸µ¼¹¶¾»·Á¿½ÃÁ¿ÈľÈÈÂËËÅÎÌÉÐÎËÌÍËÎÍÌÎÎËÌÌÉËËÈÊÊÊÂÄƸ¾Â­µ»¬´º­µ¾®µ½¶¼À·½Á²ºÀ±¹Â²¼Âµ¿Åµ½Ã´¿Ä·¿Å¶¾Ä³»Á³½Ãµ½Ãµ½Ã¹ÁǽÅÈ¿ÆÈÂÇÇÄÊËÄÊËÃÉÊÃÊÉÂÉËÃËËÅËÌÅÍÍÃËËÆÌÊÇÍÎËÐÍÍÓÑÐÕÒÓÖÓÕ×ÓÖØÔ×ØÓÚÛÖÞÞØààÚàáÙàáÙàáÙßàØàáÙàáÙáâÚáâÝáâÝàáÜàáÙàáÙáâÚàáÙàáÙáâÚàáÙàá×áâÚàáÙàáÙàáÙàáÙàáÙÞàÙÞßÚÚÛÖÙÙÓ×ØÓÖ×ÒÖ×Ò×ØÓÕ×ÓÔÖÒÓÕÑÐÓÐÏÑÍÎÒÌÌÑÍËÐÌÇÍÊÈÍÉÈÍÊÇÌÉÃÊɽÈȺÄÆ·¿Â³»Á²ºÀ±¹¿¯·½®¶¼°¶½­µ»©±·¨°¶§¯µ¨°¶§®³¥­³£«´¤¬µ¥¬¶¦­µ©°µ­´¹¯µ¼±·½±·½±µ»±µ»´ºÁ²ºÀ³»¾´¼¿µ½À·¿¿·¿¿¹ÀºÁûÃýÄÿÄÄ¿ÅÃÄÅÃÃÄÂÂÄÀ¿ÄÁ¿ÂÂÂÇÄÂÇÃÆÉÆÆËÈÈËÈÉËÇÊËÉÉÊÈÆÇÅÆÈÄÅÊÇÃÉÇÃÆÆÃÈÈÁÈÇÁÇÈ¿ÅÉ¿ÄǽÂŹ¿Ã·¾Ã±¹¿¯¶»¯·½°´º±³¶³°°´­®µ¤¢±•Œ§u£{o¢xl¢xl£xm¡ym£{p¦€w§‰‚¨Žˆ§‹£‰š‚|”}x’€|Ž†‰†ˆŽ~ƒvs~lx†gsap]lxZfqXcmT`hP\dNZbLX`JV^GS[FQXDOVALSALSALSALSALSALSALSALSALSALSALSALSALSALSALSALSALSALSALSALSALSALSALSBMTHPYQY__ciloruvw}xx„{z€}—…¢Š²¥ŸÀ¹·Ä¿¿ÇÀ¾Æ¸±Ã°©Ä°§Ë»²ÑÍÇØÕÑÚÖÐØÒÌÒÇÀË·®·–Š›l_‘ZM‹RC„H9ƒD7ƒD7‚C6‚C6‚C6‚C6‚C6‚C6‚C6‚C6‚C6‚C6‚C6‚C6‚C6‚C6‚C6‚C6‚C6‚C6‚C6‚C6‚C6‚C6‚C6‚C6‚C6‚C6‚C6‚C6‚C6‚C6‚C6‚C6‚C6‚C6‚D5ƒE9ƒG8ƒH;„H9…J=†K>‡N?†K>„I<ƒD7‚C6‚C6C4‚D5‚D5ƒE6ƒG8ƒG8ƒG8ƒE6‚F7ƒD7‚C6‚C6‚C6‚C6‚C6‚C6‚C6‚C6‚C6‚C6„H9ZNYM„I<‚D5C4ƒE6‡N?[OŽ^SŒ\P‹YM‹WIˆTF‰QCˆO@…L=ƒH;‚G:ƒE6‚D5‚C6‚C6‚C6‚C6‚C6‚C6‚C6‚C6‚C6‚C6‚C6‚C6‚C6‚C6‚C6‚C6‚C6‚C6‚C6‚C6‚C6‚C6‚C6‚C6‚C6‚C6‚C6‚C6‚C6‚C6‚C6‚C6‚C6‚C6‚C6‚C6‚C6‚C6‚C6‚C6‚C6‚C6‚C6‚C6‚C6‚C6‚C6‚C6‚C6‚C6‚C6‚C6‚C6‚C6‚C6‚C6‚C6‚C6‚C6C4C4C4C4C4„F7„F7…I:ˆM>YJ¡vi±—Žº°­½¸¸¾¹¹¾¹¹¾¼½¿½¾ÄÁÁÇÅÃÌÊÇÌÍÈÓÐÌÔÐÊÑÏÉÓÐÉØÒÌÚÖÎÚÖÎÛ×ÏØÓÊÕÑÉÓÐÉÓÏÉÒÏÈÏÌÈÎÊÄÊÅÂÉÄÁÇÁ»ÅÀ½ÃÀ½ÂÀ¾ÁÁ¾ÃÁ¿ÃÁ¿ÄľÃÁ¾ÄÁ¾ÂÀ½Á¿¼Á¿½ÃÀ½ÈÂÁÈÅÁÈÅÁÍÊÃÏÌÅÎËÄÍÊÃÍÊÃËÇ¿ÊĽÊÄÀÊÄÀÈÅÂÈľÈÃÀÇÁÀÅ¿ÃÀ½¿½»¼º·ºº·»¹¶»¸´º¸¶¸¶´ºº·¸·¶¹·¸¹¹¹¹·µ»¸´½¸µ¿»µÁ¿¼ÃÁ¿ÅÃÁÉÄÁÊÇÃÎÌÉËÌÊÌÌÉÌÊÈÌÌÉËËÈÆÈľÁIJ¹¾­·½­·½±¹¿²ºÃ³»Ä³»Ä³ºÂ±»Á´¾Ä¸ÀƹÁÇ·ÁÄ´¾Á·ÁĺÂÈ»Âʸ¿Ç·¾Ã¹¿Ã¼ÃÈ¿ÆÈÃÆÉÃÈËÄÉÌÃÈËÂÈÉ¿ÉÈ¿ÉÈÃÊÉÃÊÉÆËËÂÌËÆÌÍÈÎÏÉÐÏÍÒÏÐÕÒÓÖÓÖÖÓ×ØÓØÙÔÚÛÖÜÝØÞÞØÞÞØÞÞØÞß×ßàØàáÙàáÙáâÚáâÚàáÜàáÙààÚààÚááÛààÚààÚàáÙàáÙàà×âßØáßÙàáÙàáÙàáÙßàØßàÛÛÜ×Õ×ÐÕÖÑÓÔÒÒÕÒÒÔÐÓÔÒÒÔÐÑÔÑÐÒÎÌÏÏËÎËËÎËËÐÍÊÏËÉÎËÉÌÉÉÌÉÆËÈ¿ÆÅ»Âĸ¿Ä´¼Â±¹¿°¸¾¯·½¬´º¯¶¾®¶¼«³¹¦°¶§±·¥°µ¨²¸§¯µ£«± ¨®¢ª³£«´¥¬´§­´ª±¶­³º¯µ»±µ½®´º±µ½²¸¿³¹À²¹¾±¸½³¹½µ¼¾¶½¿·¾À¸¿Á¹ÀºÀÁ¼¾À¾À¾ÁÁ¾ÃÀ¾ÁÁ½ÀÀ¾Ä¿ÅÃÀÆÄÁÇÅÃÉÇÄÊÈÆÈÄÇÉÂÆÇÂÄÇÄÃÆÃÄÉÅÄÊÈÂÈÆÀÇÆ¿ÅƾÃÿÄǽÂŹ¿Ã¹¿Ã·½Á³¹À²¸¿°·¿°³¶°°³³­¯³­¬²¨¦²ž˜®’‰¬Œ©‡~¨„x¨‚v¦€t¥u¥ƒz¨…©“¦•“¡˜…‚yu‰xw‡„€ƒwŒr}Œny†itbo{^myXgsWdpT`kS^hN\eLX`JV^HT\FRZEPWCNUALSALSALSALSALSALSALSALSALSALSALSALSALSALSALSALSALSALSALSALSALSALSALSEPWS]celq}‚…“”’——’Ÿ™˜©¢ °©¤¶°¬¾»¸ÅÅÅÈÈÅËĿʽ·ÍÀºÑËÅÖÖÐÛÙÖÞÛ×ÝÙÓ×ÑÊÑÁ¸Â©ª‚t™g[[M‰Q@…I:ƒG8‚F7C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4‚D5‚F7ƒG8„H9ƒG8ƒG8‚D5C4C4C4C4C4C4C4‚D5‚D5C4C4C4C4C4C4C4C4C4C4C4C4C4C4…L=_S_S‰QC„I<ƒH;…J=…L=‰SD‹XKŠVHˆTFˆRC‡O>†K>†J;„H9ƒG8‚F7‚D5C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4ƒD4ƒD4ƒD4ƒD4„E5…G8†H9‡I:ˆL=ŽVH›l_±’ˆ»²±¾½¿½¼¾¿¼¹¾½¿ÂÀÁÈÅÅÊÈÅËÈÄÍËÈÒÏËÒÏËÒÏÈÒÏÈ×ÓË×ÓËÚÔÎÙÕÍ×ÓËÕÑÉÔÎÈÐÎÈÏÍÇÌÉÂËÅ¿ÉÂÀÇÀ»Å¾¹Ä¿¼À½½¿¾½ÀÀ½ÁÀ¿ÂÀ½ÃýÆÄÁÇÄÁÄÁ¾ÁÁ¾ÁÁ¾ÁÁ¾ÃÁ¿ÅÃÀÇÄÁÈÅÁËÇÁÈÅÁÉÇÁÉÇÁÊÇÀÌÈÂËÇÁÉÄÁÊÆÀÉÅ¿ÈÃÀÅÀÀÃÀ½ÃÀ½¿¼¸¹ºµº¹¸¹¹¶¹·µ¹·µ¹·´¶·²´µ³¶¶¶¶¶¶¶¶¶¹·´»·±¿¹³À½¹ÂÀ¾ÄÂÀÊÇÃÍËÈÌÌÉÈÉÇÄÆÅÆÇÅÆÇÅÂÄ÷½Á¬¶¼¬´½®¶¼²¹¾¶½Â¶¾Ä·¾Æ¶½Å´¼Â´¼Â¶½Â¹ÁǺÄǸÀ÷¿Â¸ÀüÆɼÆÉ»ÂÊ·¾Ã¼ÂÆÀÅÈÀÆÇ¿ÅÉÂÇÇÂÈÉÂÇÊÀÈÈÀÈÈÁÊÈÂÊÊÄÌÌÅËÌÄËÊÄËÍÄËÍÇÎÍÌÒÐÐÓÐÓÕÑÕÖÑÖ×Ò×ØÓ×ØÓÚÛÖÚÜÕÛÜ×ÝÝ×Þß×ÝÞÙààÚàáÙàáÙàáÙàáÙàáÙààÚáßÙâßØààÚÞàÙàáÙááØàà×àà×áßÙàáÙßàØßàÛÞßÚÜÝØØÙÔÔÖÒÒÔÐÒÔÐÑÔÑÏÒÏÎÓÏÏÒÏÎÑÎÌÏÌÊÏÌÇÍËÈËËÈÍÊÈÍÊÇÍËÈÍÉÇÊÇÂÇǽÂŶ¾Á¶½Â³»Á¯¹¿­·½­µ»¬´½­µ¾­µ¾©±·§¯µ¥¯µ¨²¸¨²¸¦®·¡©²Ÿ§°Ÿ§°¡«´¥¬´¥¬±¨®µ«±¸­³º­³ºª°·ª°¶®´º¯µ¼¯µ¼±·¾±·½²¸¾°·¹³º¼µ¼¾´º¾¸½À¹¾Áº¿¿º¿¿½Â½Â»Á¼ÁÁ¾ÃþľĽÃÁÀÆÄÂÇÃÄÈÂÄÆÂÂÅÂÂÇÃÃÈÄÂÈÆÂÈÆÃÆƽ¿ÁþÁļÁĶ½¿µ»¿´º¾³¹À³·¿°¶¼°³·®°³³­¯³­¬²ªª±£¢°žš°œ–­•­Ž„©‰€¨ˆ¨‰§‰€¦‘‹¦•“¢”“šŠ”…ƒ‹yu„vu}ƒ{Šr}‰ny†jvfr€_lx\hvWdsRamR^iNZeLX`KW_HT\FRZDPXDOVALSALSALSALSALSALSALSALSALSALSALSALSALSALSALSALSALSALSALSALSALSCNUHSZNX^PZ`X`fpw|—™ ¦§¦¬­¤§ª§¨©®¯°µ¶·ººº½¾¿ÀÃÃÄÊËÉÎÎÌÎÊÎÈÂÎÆÀÑËÅ×ÓÍÚÖÐÝÚÓÞÛÔÝ×ÑÔɿκ±Á¨œ®†{¢vhšh\‘[L‹SB‰N?†H9„F7„F7„E5„F7„E5‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3†J;\O‘aSŽ]NZMŒXJŠVHŠTE‹SE‰SDˆRC‡O>‡L?‡K<…G8„F7ƒE6ƒD4‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3ƒD4ƒD4ƒD4ƒD4„E5„E5„F7†H9‡K<RCšk[³™“»´²½ºº¿¼¹¾½¼ÃÀÀÈÅÅÆÅÄËÈÄÎËÇÐËÈÐÍÉÑÍÇÒÏÈÔÑÊ×ÓËÙÕÍÚÖÎØÕÎØÔÌÓÐÉÓÐÉÐÍÉÎËÄËÅÁÊľÇÀ»Ä¾¸Â¾¸À»¸¾¼º»º¹½¼»¾½¼ÀÀ½ÃÁ¾ÅÃÀÄÁ¾ÃÀ½ÀÀ½Á¿½ÀÀ½À¾»ÀÀ½ÁÁ¾ÃÁ¿Å¿ÇÄÁÅ¿ÈÅÁÈÅÁÉÇÁÉÇÁÊÅÂÉÄÁÉÅ¿ÉÄÁƼÄÁ¾Á¿½À½º¼º·»»¸º»¹¹º¸¹¹¹·¶µ·µ²··´´µ³¶¶¶µ¶´¸¶³º·³½¹³¾»¸À¿¾ÅÄÃÌÊÈÍËÈÊÊÄÄÇÄÀÃþÀ¹¾Á±¸½«³¹©±·­µ»±·¾³ºÂµ½Ã·¾Æ¶½Åµ¼Á´»À´»À·½Á¹ÀÅ»ÅȽÅȽÅȾÈʾÈʽÇʼÂɸ¾Å»ÁžÄÅ¿ÅƾÅÇÀÅÈÁÆɽÅȽÆǽÈÈ¿ÉȾÉÉ¿ÊÊÂËÌÂËÌÄÌÌÅËÌÇÍËËÑÏÏÔÐÑÓÏÓÔÏÕÖÑÖ×Ò×ØÓØÙÔÚÛÖÜÜÖÝÝ×Þß×ÝÝ×ààÚàáÙàáÙàáÙàáÙàáÙááÛáßÙâßØáßÙáßÙááØâßØáÞ×áßÙáßÙáßÙßßÖÝÞÙÛÛÕ×ÙÒÖ×ÒÒÔÎÑÒÍÏÒÏÌÏÌÌÏÌÍÐÍËÐÍÊÐÎÉÌÌÆËÈÃÊÉÂÉÈÃÈÈÂÈÆÃÈÈÃÈÄÃÆƾÁĺ¿Â´»À¯·½®¶¼­·½©µ»©±·ª²»«³¼«³¹ª´º¨²¸¥¯µ¦±¸¦°¹ ª³ §¯›§¯¡¨°¡©²¢ª³¥¬´¦­µ¦­µ§­´¨®µª°·©¯¶ª°·«±¸®´»¯µ»¯³¹°µ¸±¶¹°·¹³¹º³¸»´ºÀ·¼¿¸½À¹¿ÀºÀÁºÀÁ»Àü¿Â¼¿¿»ÀÀ»ÀÀ»Á½ÃÁ¿ÅÃÀÅÂÂÅÂÂÅ¿ÅÿÅýÃÁ¿ÅýÃÁ½Â»ÀýÀüÁÄ·¾À´»À´ºÁ²¸¿°³º¯²¶®°³¯¯²°®¯²¬®±©©°§¦¯¤¡­ ¯œ—­–Ž«†©‰¨Žˆ¨‘Œ¦•“¡––›‘’”‹Š€†xw€xx|{ƒqz†my‡kvƒgr`my\iuWdpRakP]iNZeLX`KW_HTZFRXEQWDOVCNUALSALSALSALSALSALSALSALSALSALSALSALSALSALSALSALSALSALSALSALSALSEPWeor}„‰y‡ow}„Œ›£¦¦­¯«±µ­³·±¶¹µº½·¾À¼ÃÅ¿ÇÊÂÊÍÈÏÑÌÒÓÏÑÐÐÍÉÑËÄÒËÃÔÎÈÕÎÆ×ÑÊÝÚÓßÙÓÝ×ÑØÒËÔÌÃμ³Æ¯¥º›‘¨~ršiZ‘[LTEˆM>‰M=‡I:†H9„F7ƒE6„E5ƒD4‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3C4‡K<ŒXJŽ\P[OŒYLŠVHŠTE‰Q@ˆP?ˆO@†K<…J;…I:…G8„F7„E5‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3‚C3„E5„E5„E5„E5…F6…F6†G7†H9ˆJ;RCoc´¡œ½¶·¾½¿ÃÀÃÃÁÂÃÀÀÅÂÂÊÅÅÍÊÇÏÌÈÏÌÈÏÌÅÏÌÈÒÏÈÓÐÉÕÑÉ×ÓË×ÔÍØÔÌÕÒËÕÒËÓÏÉÐÌÆÍÇÁÊÄÀÆÀ¹Å¿¹À½¹Àº³¾¸´»¹·¹·¸ººº¹º¸»½¹½¾¹ÁÁ¾ÂÀ¾À¾»À¾»¿½º¼¼¹¾½¼¼½»¿À¾¿¾½À½½Ä¿¿ÃÁ¿ÅÃÀÃÁ¿ÃÁ¿ÈÅÁÉÄÁÆÁ¾ÇÄÀÉÅ¿ÇýĿ¼Á¿½ÂÀ¾ÀÀ½½¼»½½ºº»¹¸¸¸¶·µµ³±µ¶´µ¶´·µ²·µ³¹·´¹¹¶½º¶¾¹¶¾¾¾ÂÁÀËÉÇÈÉÄÆÇÅÇÅÃÄÄĹ¼¿´º¾­³·©°µ¬³¸°·¼²¹¾³»Á³½Ã³º¿³º¿³º¿±¸½±¸½´»À·¾Ã¾ÅʾÈʾÈÊ¿É˾ÈʼÆɼÂȸ¾Ä¶½¿¸ÀúÂźÁƺÂ˾ÅʾÅʾÈÊ¿ÈɾÈÇ¿ÊÊÀÊÌÁËÍÃÌÍÄÌÌÇÍËÊÐÎÍÒÎÍÐÍÑÔÑÒÓÑÓÕÑÕÖÑ×ØÐØÙÔÛÛÕÝÝ×Þß×ßßÙßßÙàáÙàáÙáâÚáâÚáâÚáâÝâßÛâßÛâßÛàÞØâßÛáÞÚààÚâßÛàÞØßÝ×ÞÜÖÝÝ×ÚÛÖØØÒÒÓÎÐÑÌÏÑÍÏÐÎÍÐÍËÎËÉÎËÊÏÌÉÌÉÇÌÉÃËÈÃÉÇÀÈÅ¿ÆžÅÇÀÃÆ¿ÄľÄŽÃĺÁô»À²ºÀ¯·½ª²¸ª´º¨³º¥°·¥¯µ¨³º§²¹¦±¶§²¹¥°·¤®·£®¸ž©³›§¯œ§®Ÿ¦®Ÿ¦®§° ª³¢ª³¢ª³¥¬´¤«³¦®´¦®´¨®µª°·¬²¹«±·®²¸¯´·®³¶²·º°¶º³¸»³¹½´º¾µ¼¾¶½¿µ¼¾¶¼½¸»¾·¼¿¹¾¾¹¾¾»Á»ÀÀ¸¿¾»ÀÀ»ÀÀ¾ÁÁÀÃÃÀÁ½Â½Â¼ÁÁºÀÁ¹¿À¸¾¿¸½À·½Á¶½Â¶½Â´ºÀ±´»®²º®²¸®®´¬¬²®­¯°©ª­¨¨®§¥«¥¤«£ ¬¡ž­œš©”Ž©“Œ§‹¢‡¡’š’’–Ž‘‰Šˆ~xz|y|sxlwƒhs€fq~bn|\iuWdpS`lO\hN\eLX`KW_HT\GRYEPWDOVCNUALSALSALSALSALSALSALSALSALSALSALSALSALSALSALSALSALSALSALSALSALSALSFPV^fl‘›ž¢¬¯”› –ž¡ ¨«§®°«²´±¸½³»Á¶¾Ä¹ÃɽÈËÆÍÏÊÐÑÍÓÔÎÔÒÑÓÒÓÔÏÖÔÎ×ÓÍØÔÎÕÑÉÕÎÄÙÓÌÝÙÑßÙÓÞÚÔÜÙÒÙÓÍÓžͺ°À¤™¯‡yœk\“]NŽWGŒTCŽSDRCŠO@ŠN>ŠO@ˆL=…I:„F7„E5ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒE6‰P>UGŒVG‹UFŠRAŠQBˆO=ˆM>‡K<…I:…G8„F7„F7…F6„E5„E5ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4…E4…E4…E4…E4…F6…F6†G7‡I8ŒP@•_P¢vh²—¼³²À»¾ÇÄÄÉÈÇÅÂÂÃÀÀÄÁÁËÈÄËÈÄÎËÇÐÍÉÐÍÉÓÐÉÔÎÈÐÌÄÑÍÅÔÎÈÓÐÉÓÏÉÓÏÉÎÊÄÉÄÁÊľÅÀ½Á¾»½»¸½º³½¸µ¼µ°·´°¶´µµ¶·¶¶¶¹º¸¼½»¿¾½¿À¾¾¾»¾¼¹½½º»¼º»»»¼¼¼º»¹½½½¾»»¾¼½¾¾¾¿½ºÀ¾»ÁÁ¾ÂÀ¾ÂÀ¾ÀÁ¼ÃÁ¾ÃÀ½ÄÁ½ÂÀ½ÃÁ¿ÄÂÀÃÁ¿¾¼¹ºº·¸¸µ¶·µ¶´²µµ²µ¶´¶´±··´¶·µ·¶µ¹¸·½·³¾¹¶À»»ÂÀÁÉÇÄËÉÆÊÈÅÇÈÃÄÄÄ»½¿°µ¸¬²¸­³·®µº°·¼±¸½±¹¿±»Á°ºÀ¯¶»¯¶»±¸½²ºÀµ½ÃºÁƾÈ˾ÈʾÈÊ¿ÉËÀÊÌÀÊÌ¿É˻ĿÄǽÅȼÆɼÄʺÄʺÂȽÅÈ¿ÈɼÅƽÈȽÈÈ¿ÉÈÀÊÌÂÌËÄÌÌÈÏÎÊÐÎÉÏÍÍÐÍÐÓÐÐÓÐÑÔÑÓÕÑÕÖÑ×ØÓÛÛÕÜÝÕÞÞØÞÞØßßÙàáÙàáÙáâÚáâÚáâÝáâÝáâÝááÛâßÛáÞÚâÞØáÞÚàÞØÞÜÖÝÝ×ÝÝ×ÛÛÕØØÒÕÕÏÔÕÐÑÒÍÎÐÌÎÐÌÎÏÍÊÏÌÈÎÌÉÏÍÇÍÊÆÌÊÂÊÇÁÈÇ¿ÈÆ¿ÈƽÅżÄÄ»ÀúÀÁº½À¹¿Ã·¾Ã³º¿¯¹¿«³¹¨²¸©³¹§²¹¤®·£®µ¥°·¤¯´¤¯´§²¹¦±¸¤®·¢­·žªµš§³š¦±š¥±™¥°›¦°›¤° ¨±¡«´¡«´£«´¢¬µ£­³¥¬±§®³ª°·ª°¶­±·­±·­±·¯µ¹¯µ»®³¶°µ¸³¹½´º¾´º¾¶»¾¶»¾µ»¿·¼¿¸»¾¹¼¿º¿Â¹¿ÀºÀÁºÀÁ¹ÀºÀÁ½ÀÿÁþÀºÀÁ¹¿À¹¿À·½¾¸½À¶¼À¶¼À´»À´»À²¸¾¯³»®²º¬¯¶­¯²¬®±­¬®®©¬­¨¨¬§§«¥¤ª£¡ª¡ «  «š˜¨•’£Œ„œ…€™‹Š•ŽŠˆ…ˆ‚€†{{tx€nvgrcp|am{\gtYesRamP]iMZfKYbKW_HT\FRZEPWDOVCNUBMTALSALSALSALSALSALSALSALSALSALSALSALSALSALSALSALSALSALSALSALSALSALSALSJU\ksyŸ§ª›£¦˜Ÿ¡ž¥§¤«­¬´·²ºÀ²½Â·ÃɽÈÍÂÌÏÊÐÑÎÓÓÐÕÕÑÖÓÓÖÓ×ØÓÙÙÓÚÚÔÛØÔÚ×ÐÙÓÍØÒË×ÍÄ×ÐÈÙÕÍÝ×ÑÙÑËÒǽѿ¶Ë¶ª¼ž’­…w¡rb›hY˜dT—cS˜dT–`Q”]M”]M’[KXHTBŠN>„F7ƒE4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒE4„F5„F5…F6„F7„E5ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4„F5‰N?‰Q@‰P>ˆO=‡K;†J:†J:…I9…G8„F5„F5„E5…E4…E4…E4…E4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4ƒD4…E4…E4†F5†F5…E4†G7ˆI9ŠN>WE p_£wi±“‡¼³²Ã¾ÁËÈÈÐÍÊËÈÄÈÅÂÇÁÀÈÅÂËÈÄÍÊÆÐÍÉÒÎÈÒÎÈÎËÄËÈÁÎÈÂÏÊÁÍÊÃÊÇÃÉÄÁÅÃÁÃÁ¿Ä¿¿¿½ºº¹¸ºµµ¸µ²·´±¹µ¯µ³°µ³±µµ²µ³±···¼¼¼½½½»¼º¸·¶·¸¶·¸¶¹¹¹¶·¸·¸¹¶¸·ºººº¸¹»¸¸¹·µºº·¹ºµ½½º¾¾»½½º¿¾½¾¿ºÀ¾»ÂÀ½ÀÀ½À¾»ÁÁ¾¾¿º¹ºµ··´µ¶±¶¶³¶·µ··´´µ³µµ²¶´µ¶¶¶·¸¶º¸¶¼µ°¾¸´¿¾½ÂÁÀÈÅÂÊÈÅÆÇÂÅÆÄÀÁ³¶¹¬²¶­³¹®´º¯µ¹­´¹®µº¬´º«¶»°¸¾¯·½¬¶¹¯·½³»Á¸¿Ä»ÃÉ¿ÇÊ¿ÉËÀÉÊÁÊ˾ÉÉÂËÌÂËÌÃÌÍÄÌÌ¿ÉË¿É˽ÇʼÄʼÃÅ»ÂÇ»ÆɽÇƼÆȼÇǼÆȾÈÊÃÌÊÇÎÍÈÏÎÉÐÏÉÏÍÌÏÏÍÒÎÏÒÏÐÓÐÑÓÏÖ×ÒÚÛÖÜÜÖÜÝÕÞÞØßßÙßßÙßàØàáÙßáÚáâÝßáÚáâÝáâÝáâÚááÛâßÛáÝ×ßÝ×ßÝ×ÜÚÔÛÙÓÛÙÓ××ÑÔÔÎÓÓÍÒÓÎÑÒÍÎÐÌÎÐÌÌÎÍÈÍÊÇÌÌÇÎÍÆÌÊÂÊÄ¿ÈÆÀÈÈ¿ÆžÄźÁ÷¿Â·¾À·¼¿¶¼½¶¼À¶½¿²º½®¸¾«¶½ª²»¨¯·¤¯¶¢®¶£®µ¤®´¢­´¤®´¥°·£¯·¢®¶ž©³›§µ›¨´›¨´š¨±š¨±›§²š¥¯™¥­›©²Ÿ©² «²£ª²¤«³¦¬³¥«±¦­²¨¯´ª°¶«¯µª°¶ª°¶¬²¶ª°´­°³°¶º²¸¾±µ»±·½²·º´¸¾´º¾¶»¾·º½¸½Àº¿Â¹¿À¸¿Á¸¿Áº¿Â¹¾¾º¼¾¸¾¿¸½½¹¼¿·½¾µ¼¾µº½µ¹¿´ºÀ´º¾²¸¾°¶¼®²º­°·ª­±«­°¬¬¯¬«­¬©©«¨¨©¨§¨¦¤ª¡ © Ÿ¨  ¨¥–”ŸŠ„–{”†…Ž‰Œ‡†‹‚†{}ƒsz„ow€gr|anz^kw[grXdrQ`lO^hMZfKW_KW_HT\FRZEQYBNVBMTALS@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KRCNUPZ`{‚‡’šŽ–™—Ÿ¢¤«­¬¶¹²¼¿µÁÇ»ÆËÂÌÏÉÏÐÌÒÓÏÔÔÑÖÓÑÖÒÔ×ÔÙÚÕÛÛÕÛÛÕÜÚ×ÚÚÔ×ÕÏÖÐÊÓÉÀÒÈ¿ÔÌÁ×ÏÄÖÌÃ×ÏÆ×ÏÆÔÈÀθ¯Á§›¹—‹±‰{§{m§yj¥ug£se¡rb p_m\šgX—aR‘YH‹PAŠN>†H7„E5…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4„E5„E5…F6ˆM;VD‘XITB‹O?†G7„E5…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…F6ˆK:ˆJ;†G7…F6…F6…F6…F6…F6…F6†F5…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4†F5†G7†G7†G7†G7ŠM<WE•_Pžn`§~o³’†º¬¨¿¼¿ÌÉÉÔÑÍØÔÎÒÏËËÈÄÄÁ¾Ä¿¿ÇÄÁÊÇÃÍÊÆÍËÅÍÊÃÊÆÀÉÄÁÊľÊÄÀÉÄÁÅÃÁÄ¿¿ÀÀÀ¾¼½»»»º¹¸¸¶·µ³±´²°²²²³³°±²°´²¯³´²´´´³³¶¸¹ºººº¸¸¸´´´²´³±³²²´³³µ´²´³¶¶¶¶¶¶¶¶¶···µ¶´´¶µµ¶´·¸¶º··¸·¶º¹¸º»¹½½ºº¼¸½¾¹¾¾»»»¸º»¶º»¹··´¶´±´µ³¶·µµ¶´´´±³´²´³²µ¶´¸¶³»·±»¶³¾¹¶¾½¼ÄÁÁÈÅÂÅÅÂÁÁÁ¾ÁÁº¼¾®³¶ª°´¬²¶«±·«±·¨¯´¦®´¨¯´ª²¸¬´º«µ»¬¶¹®¸»³»Á¶½Â¼ÂȾÆÉÀÉÊ¿ÈɽÈȽÈÈÂËÌÃÌÍÃÌÍÄÌ̽ÈÈÀÊÌÀÊ̾ÈË»ÅȺÂźÅȼÆȼÄǽÆǼÆȽÆÇÁËÊÈÐÍÊÐÎÌÏÏËÐÍÎÑÎÏÑÐÎÑÎÐÒÎÓÔÏÖ×ÒÚÛÖÜÜÖÜÜÖßßÙßßÙßßÙßàØàáÙàáÙàáÙßáÚáâÝáâÝáâÚáâÚàáÙàÝÙÝÚÓÝÛÕÝÛÕÛÛÕ××ÑÕÕÏÔÔÎÓÔÏÑÓÍÏÑËÌÎÊÎÏÍÊÏÌÈÍÊÄËÊÃËËÁÉÉ¿ÈƾÆƽÅŽÂżÁĸ¾Ä¶½¿´¼¿´º¾³º¼µ¼¾´¼¿³¹½®¶¼ª´½¨°¹£­¶¡­µ ¬´ «µ¡­µ¡­µ¡¬³¢®¶¤¯¹¢­·š©³˜¥±™¦²™¨²›©²œ¨³›§²š¥¯—¦°˜¦¯™§°œ¨°ž©° ¨®¤ª°¤¨®¦ª°¦­µ§­´¨®µ¨®µ¦­²§­±¨®²ª°´­³·¯µ»°´º¯³¹±µ»±·½³¸»³¹¿³·½³·½¶»¾¶»¾·¼¿¸½À·¼¿¶»¾¶¸ºµ¸»¸¹º·º½·º¾¶ºÀ±·½³¶½¯µ»±·¾°¶½¯µ»­±¹ª°¶ª­±ª¬¯ªª­¬©©¬©©ª¨©ª§§©£¥¨¡¢§ŸŸ§ž £šœŸ””˜Š†’Œƒ‚ˆ„Š‚‚ˆ{}ƒsz„mv‚gr~`my\iuXeqWcqQ`jO^hLZcKW_JV^HT\GRYEQYDOVBMT@LT@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KRCNUFQXNX^t~—¢§Š”—–¢§¯µ­·º°»À·ÂɽÈÍÃËÎÈÏÑÍÒÒÏÔÔÏÒÒÑÖÓÖØÔÚÛÖÚÛÖÛÛÕÛÛÕÙÙÓÖÔÎÔÎÇÑÌÃÓÍÆÔÌÃÕÎÄ×ÐÈÚÔÍÝ×ÑÛÕÏÕËÂоµÏ¼²Ë³¨¼·“…±Œ}±Œ}µ’…·”‡¹™‹°‹|¡pa—aR’[KWETE‰L;†F5…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4‡H8‰K:‰L;ŒP@“\L™fWm_žn`˜dVWFŠM<„F5…E4…E4…E4…E4…E4†H7ˆJ;†H9…G6…F6…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4„F5…G6†F5…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4…E4ŽRB“\L–_OXGVD”\K¥yk­Š}´˜¶œ“»±¯Ä¿ÂËÈÈÓÑÎÙÕÏÙÕÏÖÒÌÍÉÃÃÀ½ÃÀÀÅÀÀÊÅÂÊÇÃËÈÄÊÇÃÉÄÁÈÃÀÈÁ¿Ä¿¼Å¿¹À¾»¾¼º¼»ºººº···¶¶¶³²´°¯±¯¯¯¯¯¬®®®¬¯¯±±±°°°²³´³³¶µ¶·¶µ·³³³´´´±³²®°¯­¯®±±±²²²°°°²²²³³³³³³²±°³²±³³°µ³±³²±¶³³¶¶¶¶·µ·¸¶¹¹¹¹º¸¼»ºº¹¸º»¹¹º¸µ¶´´µ³²³±³´²µ´³µ´³´³²³´²µ¶´µ¶´·µ²º¶°»¹¶¼½»ÁÀ¿ÄÁÁÀÀÀ·¼¼¸½½µ¸»®³¶¬²¶«±µ©¯³¨®²¥­³£«±£«±¦®´¨°¶¨°¶­´¹¯·½²¹¾µ¼Á¹¿Å¼ÄǾÆÆ¿ÈɽÈȾÉÉÂËÌÂË̾ÉÉÃËËÂËÌÃÌÍÂËÌ¿É˾ÈÊ»ÃƽÄÆ»ÅȼÄÇ»ÅȼÆȽÈÈÃÌÊÉÏÍÌÑÎÍÏÎÏÑÍÒÓÑÒÓÑÑÓÏÔÕÐÔÖÒØÙÔÚÚÔÜÜÖÝÝ×ßßÙßßÙàà×àáÙàáÙàáÙàáÙßáÚáâÚáâÚáâÚàáÙßàØßÝ×ÜÙÒÜÚÔÜÚÔÛÙÓÙÙÓÕÖÎÔÔÎÓÔÏÑÓÍÎÒÌÊÍÊÉÎËÊÏÌÈÍÊÀÈȽÆǾÆƼÅúÃĹÁĺÀĸ¾Âµ¼Á³º¿°·¼°·¼²¹»³º¼³º¿°·¼«³¹¥¯¸£­¶ «µœ©µ›ª´š©³žªµ¡¬¶ ¬´ «µ¡­¸ ¬·š©³˜§±–¦¯˜¦¯™¦²š¦±™¥°™¥°™¥°—¦°˜£­˜¤¬™¥­ž¨®¢¨¬£©¯¤ª°¢ª°¤«³¥¬´¤«³£©¯¤ª®¥¬±¦­²©¯³­³·­³¹®²¸­³¹°´º±·»²·º°µ¸²·º³¶¹²µ¸²·º²·º²·º²µ¸°³¶±´·´¶¸µµ¸µ¸¼³¶º±´»¯³¹®´¸®´¸­³·­³¹«±·©¯µª­±ª©«¬©¬«¨¨«¨¨ª§§ª¤¦§¢¥¨¡¢¤œœ¢™›–—˜‘”‰‰‚‚‡ƒ€…z|‚rxlvgr|`my]jvZftVcoQ`lO\hLZcKW_JV^GS[FRZEQYDOVBNT@LT@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KRCNUNY`V`fZbh€‡Œ «°¡©¯Ÿ©¬©³¶¬¸¾°¼Â·ÃɾÉÎÇÎÐËÑÒËÒÑÏÒÒÐÓÓÔÖÕÖÙÖ×ÙÕØÚÖÙÚÕ×ØÖÔÖÒÑÒÍÔÑÍÔÒÌÖÓÏÖÒÌØÕÎÝ×ÑßÙÓàÚÔÝÚÓÝ×ÑÛÕÎÛÓÊØÎÅÒ¿µÊ±¥Â¤˜À¢–Å«ŸÊ±¥Í¸¬Æ®£±Œ}j[—`P–^M“ZHŠO=‰K:ˆI9„F5…E4†E3†E3†E3†E3†E3‡F4„F5‹N=TBWE”]M™fWœm]¡rb¢sc o`šgX”]MŒQ?‡I8†F5†E3†E3…G6WE™eU™dS–`QVD‰K:…G6…E4†E3†E3†E3†E3†E3†E3…G6†F5†E3†E3†E3†E3†E3†E3†E3†E3†E3†E3†E3†E3†E3†E3†E3†E3†E3†E3‡F4‡F4‡F4‡F4†E3†E3†E3†E3†E3†E3†E3†E3†E3†E3†E3†E3†E3†E3†E3†E3†E3†E3†E3†E3†E3†E3†E3†E3†E3†E3†E3†E3†E3†E3†E3†E3†E3†E3†E3†E3†E3†E3†E3†E3†E3†E3†E3†E3†E3†E3†E3†E3†E3†E3†E3†E3†E3†E3†E3†E3†E3†E3†E3†E3†E3†E3†E3†E3¤zn©†|¨„x¥zmŸo^m\­‡{¶ž•ºª¤¾¸ºÄÁÄÌÊÈÓÐÌØÔÎ×ÔÍ×ÔÍÓÏÉÉÄÁÈÂÁÃÁ¿ÃÁ¿ÇÄÁÈÃÀÈÃÀÄÁ¾ÃÀ¼Ä¿¼Â¼¶À½¶½½·½¸¸·¶µ¶¶¶³´µ²³´±²³°°°®­¬®«¨«ª©©¨ª§©«©®®©®®¬®°®¯°²³´±°²±±±®°¯°±²®¯°¬®­®­¬¯¯¯¬®­°°°¯¯¯¯°®±±±®¯­¯°®±°¯²°®²¯¯³³³³´²µµ²µ¶´´µ³¶¶¶···ººº¸¹·¸¹·¸¸¸´´´²²¯²±°´³²µ´³µµµ···´µ³µ¶´¶´±º·³ºº·¾½¼½¾¿·¹»µºº´¹¹±¶¹®´¸«±µ©¯³¨¬²§­±¦­²¥¬±£­³¢ª°¤¬²§¯µ©±·¬³¸°¶º²¹¾¹¿ÃºÃļÅƽÈȽÈȽÈÈÂËÌÂËÌÂËÌÂËÌÂËÌÂË̾ÈʾÈʽÅȹÃżÅÆ»ÅÈ»ÄÅ»ÃÆ»ÅȽÆÇÂÊÊÉÏÍËÎËÍÐÍÐÒÎÑÓÏÒÓÑÔÕÐÕÖÑ×ØÓØÙÔÙÙÓÛÛÕÜÜÖÞÞØàà×ßàØßàØßàØàáÙàáÙàáÙàáÙàáÙáâÚßàØßàØàÞØÜÚÔÛÙÓÚÚÔÚÚÔØØÒÕÖÑÔÕÐÓÔÏÏÓÍÌÐÊÈÍÉÆËÈÈÍÊÄËÊ¿ÆžÆƼÂù¿À¶½¿¶½¿¸¾Âµ»¿²ºÀ°·¿¬¶¼«³¹­´¹¯¶»¯·½¬´º§±·¡®´ž¬µš§³˜¨¶—§²–¦±—¦²™©´›ª´œ©µœ«µšªµ™¨²–¦±—¥®–¥±•¢®˜¤¯˜¤¯–¢­–£¯—£®•£¬—£®—£®™¥­¥®¡§« §¬œ¨°Ÿ©² ¨±¡¨°¡§®£©°£ª¯¢¬¯¥­³§®³©¯¶ª®¶®±¸®´º¯µ»°µ¸­²µ¯²¶¯´·­²µ®³¶­±·­²µ®°³®°³­±·¯²¶²²µ°³·®°¶­°·©¯µª¯²«±·«±·ª®´©­³¨¬²§©¬©©¬©¨ª©¨ªª¥¥©¦¦§¤¤¦¡¤¤ž  ˜˜›’‘˜’ŠŠ„†‡€€}}x{rxmu~hr{bny^juZfqVcoQalM\fLYeJXaIW`GS[EQYEQYDOVBNTBMT@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KRIT[[ekksyt|‚Š”—¤¯´«¶½«¶½­¸¿¯ºÁ°»Â·ÃɾÉÌÆÍÏÊÐÑÍÐÐÎÐÏÒÔÓÔ×ÔÔ×ÔÔ×ÔÔ×ÔÔÖÒÒÕÒÐÒÎÑÒÐÕÕÒÖ×ÒØØÒØÖÐÚØÒÞÛÔßÝ×àÝÖàÜÖßÜÕàÜÔßÛÓÞÙÐÚÓËÖȿѾ´Í¸¬Ð¼±ÑÀ´ÔÅ»Óøĩœ¬rœiZ—`P“[JQ>R@R@‹P>ˆJ9…G6†F5†G4…G6…F3…F3ˆJ9ŒQ?‘VD“ZH—`PœhXœiZœiZj[›l\Ÿo^œm]œiZ—bQVD‰L;†H7ŠN;˜cR¡rb§}q¨€r¢te›hY•`OŠN;…E4„E2„E2„E2„E2„E2†F5†G4…F3„E2„E2„E2„E2„E2„E2„E2„E2„E2„E2„E2„E2„E2„E2„E2„E2„E2‡F4‡F4‡F4‡F4„E2„E2„E2„E2„E2„E2„E2„E2„E2„E2„E2„E2„E2„E2„E2„E2„E2„E2„E2„E2„E2„E2„E2„E2„E2„E2„E2„E2„E2„E2„E2„E2„E2„E2„E2„E2„E2„E2„E2„E2„E2„E2„E2„E2„E2„E2„E2„E2„E2„E2„E2„E2„E2„E2„E2„E2„E2„E2„E2„E2„E2„E2„E2„E2®Žƒ¯—Ž±œ–±š’­Š€¨€r´“‡¸¨¢¼·ºÃÁÅËÈÈÑÎÊÕÒË×ÔÍÖÓÌÓÐÉÒÎÈÉÄÁÅÀÀÁÁ¾ÃÀ½ÃÁ¿ÁÀ¿ÂÀ¾Á¿½¿½»¼¼¹¼¹µ»¸´¸·¶µ¶´³²±±±±±±±¯°±­®¯¬«ª«©§ª¨¦¨¨¨§¨©£¨«¥ª­©¬¯ª­°ª­­­®¯¯°±®¯°¬®­«­¯©¬¬¬¬©­¬«­­­¬¬¬«¬­©«­¬¬¬¬­®¬­®¬®­­­­¯¯¯­®¬¬®­¯°®²²¯³´²´´´²²²¶¶¶·¸¹ºººººº¸¹··¸¶´³²´³²²³±¶¶¶······µ¶·µ¶´´µ³··´¸¸µ¸¹·¶·¸°³¶¯´´¯²µ®³¶­²µ«°³¨®²¨®²§­±¦­²¥­³¤¬²¡©¯¤¬²¤®´§®³¨¯´«²·¯·½¶¾Á¹ÁļÅÆ¿ÈɽÈȽÈȾÉɾÉÉÂËÌÂÌËÃÌ;ÉɼÅƼÅÆ»ÅÈ»ÄżÅÆ»ÄżÃżÅÆ»ÄÅ¿ÈÉÃÊÉÉÎËÌÏÌÎÑÎÐÒÎÑÓÏÐÒÎÔÕÐÕÖÑÖÖÐØÙÔÚÛÖÚÚÔÙÙÓÜÜÖÞß×ßàØßàØßàØààÚßàØßàØßàØßàØßàØßàØßàØààÚÝÛÕÙ×Ñ×ØÓØØÒ××ÑÕÖÑÒÓÎÐÒÎÏÑÍÌÐÊÈÍÉÆËÈÄÊÈ¿ÈÆ¿ÈƽÅÅ»Á·½¾³»¾´º¾´»À°¸¾®¶¼©´¹¦±¶¦±¸¦°¶ª°·ª²¸¨²¸¢­´žª²š©µ–¦´”¥´“¤³’¢°‘¢±“£±•¥³™¨´š©µš©µ—§²–¦±•¥°•¤°“£±”£­” «”¡­”£­•¡¬“¢¬–¢­•¡¬—£®š¥¯œ¤­›¥®™§°™§°›¤°œ¦¯ §¯¡¨°¢¨¯¡©¯¤ª®¥«¯¤ª±¥«²¨®´ª°¶¬²¸«±·©­³ª®´ª­±ª¯²¬±´¬±´«°³«®±«®±©¯µ¬°¶®®´¬®´¬®±©¬°§«±§«±§­³§­³¨«¯¦¬³¤ª°¨§¬¦¨«§§ª¨¦ª©¦¦¨¢¤¥¢¢¤Ÿ¢ šœ›““—Œ‰’……Œƒ…„~€~y|wwzrx~ov~hr{bny\kuXdoRbmQ`lO\hLYeKWbIU`FR]EQYDPXCOWBNTBMTALS@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KRALSMW]alqv~„‰“–¨­¨³º¬¸À®ºÂ¯»Á°¼Â°¼ÂµÁǽÈËÃÊÌÇÍÎÊÏÏÍÐÐÑÓÒÒÕÒÓÖÓÒÕÒÏÒÏÎÓÏÎÓÐÐÒÑÔÕÓÕÖÑ×ØÓØÙÔÙÚÕÛÛÕÞÜÖßÜÕàÝÖàÝÖàÝÖàÝÖàÝÖàÜÔßÙÓÜÕÍÙÑÈÖǽÔȽÙÎÄÛÓÊÙÒÊÒÀ·¿ “¨{jiY–aOVDS@ŽSAŒP=ŠK8ˆI6‰J7ŠN;‹M<ˆI6…F3†H7ŒQ?TB‘VD’YG”_M–^M“ZH“^LšfV¢sc©~oªr¥yi p_šfV–`Q—aR qa«ƒu°Ž‚´“‡¯Œ¬„v¤xj“[J…F3†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2‡F4‡F4‡F4‡F4†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2¨„x®—°¢ž²§§±§¨µ¢·¤º­ª¾»¾ÈÅÈÌÊÈÑÎÊÓÐÉÕÒËÒÏÈÌÊÄËÉÃÇÄÁÃÁ¿ÂÀ½ÁÁ¾¾¾»¾½¼¼½»ºº·»»¸º¸µ¹´´·µ³³µ´³³³¯±°±±±¬®°«¬­ªªª¨©§¨¨¨¤¥££¢¤¢£¤ £¦¢§ª¥ª­¦©­©«®§ª­«¬­ª¬®¨ª¬¨ª¬¦¨ª¨©§©ª¨©ª¨¨©§¨©ª¨©ª¨©ª¨©ª¦««©«­§¬¬¨ª¬ª«¬ª«©¬®­®®«®¯­°°°­®¯®±±±³²µ¶·¶¶¶¶¶¶···¶¶¶¶¶¶´µ³´µ³¶¶¶¶·¸µµµ²³±´³²´³²µ¶´´µ³°³³¬¯¯©®®©¬¯©¬¯©®±¦­¯¨­°¦«®¤«­£«®¤«­¢¬¯¡«®¤«³£«±¦­µ§®³«²·¯¶»´»À·ÁÄ»ÂļÄǼÅƻĎÆǽÈÈÀÉʾÉɾÉɾÈǼÆŽÆǼÆȺÃĻďÄÄ»ÅǺÄƼÅÆÂÊÊÆÌÊÊÍÊÍÐÍÎÑÎÎÑÎÒÓÎÑÒÍÓÔÒÔÕÐÖ×ÒØÙÔÚÚÔÚÚÔÙÙÓÜÝÕÝÞÖÞß×ßßÙßßÙààÚßàØßàØßàØàáÙßàØßàØßßÙßßÙÝÝ×ØØÒÕÕÏÕÖÑÕÖÑÓÔÏÐÑÌÏÐËÍÑËÊÏËÈÎÌÇÌÉÁÈǽÆľÆÆ»ÂÁºÀÁ·½¾³º¼±¸½°¸¾¯·½¬´º¦±¶£¯µ¥°·¤¯¶£®µ¢­´¤¯¶¢­·ž«·˜©µ—©²“¦°£¯¡°Ž¡­Ž¡°¡°’£²—§µ—§µ•¦²•¦²’£²’£¯£¯ ¬ ¬’Ÿ« «’¡«‘ ª“¡ª’¡«“¢®—£±˜¤¯˜¤¯˜¤¯—£®™¥°›¦°›¤°š¦® §¯¡§®£©­£©¯¤ª±¤«³§­´¨®´¨®´¨®´¨®²¨¬²§¬¯§­±©¯µ©¯µ©¯³ª­°§«±¨ª°ª­´ª­´§ª®¨«¯§¬¯¤ª°¥«±¥«²£©°£©°¢©³£¨±¤§®£¦ª¦¤ª§¦¨§¤§§¡££žžŸ™›œ•–—Ž’……Š€…}€~y|vuwqtxls{fq{amu\jsWdpRamQ`jO^hLZcJXaHV_FRZEQYCOWBNVBMTBMTALSALS@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KRHSZYagq{~’œŸ¦²¸«·¿ª¶¾­¹Á®ºÀ¯ºÁ³¿Å·ÂÇ»ÅȽÅÈÀÉÊÃËËÈÏÎÌÒÐÎÓÏÏÔÑÍÒÏÌÒÐÉÏÌÊÐÎÌÒÐÒÕÒÔ×ÔÔØÒØÙÔÚÚÔÜÚÔÞÛÔàÝÖàÝÖàÝÖàÝÖàÝÖàÝÖáÛÕßÜÕàÚÔÞØÑÛÔÌÝÖÎßÙÓàÚÔàÚÔÛÑËι­·”‡¦wgžjZ’YGTBQ>†G4†F2†F2‡H5‰K:‰K:†G4‡F4‡G6ŠN;ŠM9‹N:ŠN;ŒP=O>ŽR?WE˜bS£uf­‰{°ƒ®Š|­‰{­‰{¬†z«ƒu®‡z´”‰¶˜Œ¶–‹³’†®‡zŸo^WE‡G3†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2£ym«Ÿ­¨¬­«±±®±·®­º«¦¼³²ÄÁÄËÅÇÍÉÃÍËÅÏÌÅÍËÅÌÉÂÊÆÀÇÄÀÄÁÁÂÁÀÀÁ¿ÀÀ½¿¾½º¹¸¸·¶·¶µ¸¶³·µ³µ³±±²°¯²²­²²¬¯¯«­¯§ª­§©«¤¦¨¢£¤Ÿ¢¥›Ÿ¥™Ÿ¥š §›¡¥£§Ÿ£©£§­¤§«¤¦©¤©©¥¨«¥§ª£¦ª¡¦¦£¦¦¤¦¨¢¥¨¦¦¦£¦¦¢§§¤§§£¨¨¥§©£¦©£¦©¢¥¨¤§ª§©¨§©«©«ª««««««¨««¨­­«®®¯°±°±²°¯±²²²´´´µµµ±³²°²±µµµ´´´²²²°°°±°²±²³²³´®°¯«°°ª­­¨«®§¬¬¦¬­£ª¬¢©«¤©¬¡¨ª ª­¡©¬¡«®¢ª° «°¢ª°¡©¯¢ª°¥¯µª±¶­´¹±¸½²¹¾·¿Â¹ÁĺÂźÂÅ»ÂĻĿÇǽÈȽÆǼÆżÅƼÅƺÄƹÂúÂźÄƺÅȼÆȾÆÉÄÊËÈÎÌÊÏÌÌÏÌÌÏÌÎÑÎÐÒÎÑÓÏÓÔÏÕÖÑÖ×Ò×ØÓ××ÑÙÙÓÚÛÖÛÜÔÛÜÔÛÜ×ÝÝ×ßßÙààÚßßÙßßÙààÚààÚààÚààÚÞÞØÝÝ×ÝÝ×ÚÚÔÕÖÎÔÕÐÓÔÏÎÐÉÍÏÉÌÎÊÌÐÊËÐÌÊÏËÉÌÉÇÌÉ¿ÈÆ»ÃûÁ¹¿À¶½¿¶½¿²¼¿°¸¾¬³¸¦±¶£¯µ¤¯¶£®µ¢­´ ¬´žª²ž¬µ¡¬¶Ÿ«¶œ¬·™ª¶–§³•¥³‘¤°¡°Ž¡®¢¯£°’£²‘¢±”¥´“£³’¢²’¢°¡°¡° ¬Ÿ©‘žªŸª‘ ª‘ ¬‘ ¬’¢°•¢±–¢°—£±˜£°—£®˜£°š¥²š¥±™¤°š¥¯§° ¨±¡©²£ª²¡©¯£ª²¢ª°¥¬´§­´§­´§­³¤«°§­±§­´§­´§­´§«±¦ª°¦ª°¦©°§ª±¥©±¤ª±£ª²¡©²¢§°£¨±¡§®¡§®¡¦¯ §¯ ¦¬¢¢«¤¤ª¥£©£¢¤£ŸŸ——š’’—Ž‘‰‰Š€…}}~y|wwzqsvlrvgoxcmv\jsYepSblP_iN[gKYbKWbHV_FRZEQYCOWBNVAMSALS@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@LRGQWP[`ny~š¢¨¨´º«·¿¬¸À©µ»ªµº²¼Âµ¿Å¹ÁǹÄɼÆɾÈÊÁÊËÄÌÌÈÏÎÊÐÎËÑÏÈÏÎÉÏÍÈÎÌÉÏÍÊÐÎÍÒÏÑÔÑÓÖÓÕ×Ñ××ÑÛÙÓÝÛÕàÝÖàÝÖàÝÖàÝÖàÝÖàÝÖàÝÖàÝÖàÝÖàÜÔàÜÔàÜÔàÝÖàÝÖàÝÖÞØÑÕɾɯ£µ‘ƒ¥ud—_NŽR?ˆH4ˆE3ˆE3‡G3‰J7‹N:O>‹M<ˆH4…F3‡G3‡G3‡G3‡G3…F3ˆH4S@—_NœiZ§|o³“ˆ¶›‘µ–Œ·™· ˜¶œ“¸š‘·œ’¸ —·œ’µ•Š²‘…°Ž‚¡q`“ZHŠJ9ˆE3ˆE3ˆE3ˆE3ˆE3ˆE3ˆE3ˆE3ˆE3ˆE3ˆE3ˆE3ˆE3ˆE3ˆE3ˆE3ˆE3ˆE3ˆE3ˆE3ˆE3ˆE3ˆE3ˆE3ˆE3‡F1‡F1‡F1‡F1ˆE3ˆE3ˆE3ˆE3ˆE3ˆE3ˆE3ˆE3ˆE3ˆE3ˆE3ˆE3ˆE3ˆE3ˆE3ˆE3ˆE3ˆE3ˆE3ˆE3ˆE3ˆE3ˆE3ˆE3ˆE3ˆE3ˆE3ˆE3ˆE3ˆE3ˆE3ˆE3ˆE3ˆE3ˆE3ˆE3ˆE3ˆE3ˆE3ˆE3ˆE3ˆE3ˆE3ˆE3ˆE3ˆE3ˆE3ˆE3ˆE3ˆE3ˆE3ˆE3ˆE3ˆE3ˆE3ˆE3ˆE3ˆE3ˆE3ˆE3ˆE3ˆE3ˆE3ˆE3Ÿui§¡ª¬«³²©«µ¬«¶³³º¸¹ÃÀÃÈÅÅÍÈÈÌÈÂÌÇÄÉÄÁÇÁÀÆÁ¾ÃÀ½ÁÀ¿ÅÂÂÅÂÂÄÁÁÁÀ¿¾¾¾¹¹¹µ´³¶¶³´´±´²¯±¯¬­¯®¨®¯¤«­¥ª­¥¨«¤¦©¡¤¨¡£¥œŸ£™Ÿ£™Ÿ£˜ž¤—£—£› £š ¦œ¢¨Ÿ£© £§ £§Ÿ£© ¤ªŸ£© £§¡£¦ £§¢£¤¡£¥¢£¤£¤¥££¦¢¤¦ £¦ £¦ £¦ £¦¡¦¦¢¥¨¥§©¥¨¨¤©©¥§©¥ªª¦««§¨©¨©ª¨¨«©«ªª­­°°°¯°±¬®°®¯°­°°¯°±¯°±¬®°­¯±¬¯¯¬®°­®¯©«ª©¬¬§ªª¦««¥ªª¡ª«¡§« §©¢©«¢ª­§®°§®°¢ª°¡«®¢ª°£«±£­³¤®´¦®´©±´¬´·­µ¸²¹¾´»½µ¼Á¸ÀúÂÅ»ÄźÃÄ»ÄÅ»ÄÅ»ÄźÂÅ»ÄźÃĸÂŹÁĻğÃĻĞÅÇÃÉÊÈÎÌÉÏÍÊÏÌÌÑÍÍÑËÍÐÍÎÏÍÐÒÎÑÓÏÓÔÏÔÕÐÔÕÐÕÖÑ×ÙÒÙÚÕÚÚÔÜÜÖÝÝ×ÛÛÕÞÞØßßÙßßÙßßÙßßÙààÚààÚÞÞØÝÝ×ÝÝ×ÙÚÕ××ÑÕÖÑÏÑÊÎÐÉÌÎÈÊÎÈÉÍÇÉÎÊËÐÌÌÑÍËÐÌÂÉȾÆƼÄļÂø¿Á·¾À³½À°¸¾¬³¸¤¯´£®µ «² «² ¬´Ÿ«³›©²œ«µœ«·žªµ›«¶šªµ˜¨³•¦²–¥±’¢°£¯Ž¢°¡¯ ¯ ¯¡°¡°¡°’¢²‘¤³’£²¢® ®ŒŸ«ŽŸ«Ÿ­žªžª‘ ¬’Ÿ®“ ¯’Ÿ«”¡­—£±˜£°˜£°—¢¯—£®˜£­˜¦¯œ§±œ§±§°œ§®›§¯ž¦¯¡¨²¢©³¤«³¤«°¥«²£©¯¤ª±¥«²¥«²£ª²¥©±£©°¥¨¯£©°¡¨°ž¦±Ÿ§²ž¦± §±Ÿ¨´ ¨³Ÿ§­ §¯œ¦¯›¤°Ÿ£«¡£©£ £¡›ž—™›’”–Œˆˆ‹‚„†~y{xvzqtxkqxdnt_ks[fpXdlSajO^hL[eKYbJXaHT\FRZEQYCOWBNVAMSALS@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KREPWR]bnx{“ž£¦²¸«¶½«·¿©µ»¦°³¬·¼±¼Á³¿Å¹ÁǺÂÅ»ÄżÆɾÉÉÂËÌÆÎÎÄÍÎÅÎÏÅÍÍÅÌËÆÍÌÈÎÌÊÐÎÎÑÎÐÒÎÓÕÑÖ×ÏÙÙÓÜÚÔßÝ×ßÝ×ßÜÕàÝÖàÝÖàÝÖàÝÖàÝÖàÝÖàÝÖáÝÕáÝÕàÜÔàÝÖàÝÖáÛÕÛÓÊÕź̳§º™Š£sb”YGŒN9ˆI6‡G3‹M8˜_MžjZžjZ˜cQ’WEO:‰J7‡G3†F2†F2†F2†F2ŒP=™dS¥yk®Œ€¶œ“¹£œ¹£œ»«¥½³°¾±®¾®¨¾®¨½¯«¼¨¢¸ —·œ’·œ’®‰z¢ra“ZHˆH4†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2‡F1‡F1‡F1‡F1†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2†F2§‡~«£©««´°¯±¶µ·º¹¾¿¿ÂÄÁÄÄÁÁÉÄÄÉÆÃÈÅÂÆÁÁÁ¾¾Â¿¿ÃÀÀÂÁÀÄÁÁÄÁÁÁ¿ÀÀ¾¿¼»½·¸¹¶¶¶´²¯³³­±®ª¬¬©¦©©¢¨©ž¥§Ÿ£©Ÿ£©¡§›Ÿ¥™£›Ÿ™œŸ™ž¡› œžšœŸ˜ž¤™Ÿ¦™Ÿ¦›Ÿ§›Ÿ¥œ ¦›Ÿ¥ ¤Ÿ¥ ¤ ¤œŸ£ ¡¢ ¤Ÿ¡¤¢¡£¢£¤¢£¤ ¤ ¤ ¢¥Ÿ¤§Ÿ¤§ ¦§ £¦¢¤¦¡¦¦¢¥¨¤¥¦£¥§¢§§¤¦¥¦§¨¦¥§¤§§¨««§¬¬¨««©«­¨­­§ªª¨ª¬¨­­¨­­¨®¯ª¬®©«­¨ª©¥ªª¦©©£©ª£©ª ¨«ž¦©œ¤§¡§¨¢¨¬¤«­¦­¯¦­²¦®±£­°Ÿª¯£«±¤¬²¦®´¦­²§¯²¬´·¯¶¸¯µ¹³º¿·¿Â¸ÁºÂźÃÄ»ÁźÀĺÁúÁúÁƺÁƺÁøÁ¸ÀùÁļÃÅÂÈÉÆËËÈÎÌÊÏÌÊÏÌËÐÌËÐÌÊÍÊÍÎÌÏÑÍÐÒÎÒÓÎÕÖÑÖ×ÒÖ×Ò×ØÓÙÙÓÚÚÔÚÚÔÜÜÖÜÜÖÛÛÕÞÞØßßÙÞÞØÝÝ×ßßÙßßÙÜÜÖÛÛÕÜÜÖÙÚÕÖ×ÒÔÕÐÐÑÌÌÎÈÊÌÆÈÌÆÈÌÆÇËÅËÏÉËÐÌËÐÌÀÈÈ»ÂĺÁùÀ¸¿Á²¼¿²¹¾¯¶»ª²¸¥¯µ¡¬³¡¬³¢¬² «²Ÿ«³œª³š©³œ¨¶š©µš©³šªµ™©´—§²•¦²“¤³‘¢±Ž¢°Ž¡­ ¯ŽŸ®ŽŸ®‘¢±’¢°“£³’£²’£²¢®žª‹œ¨‹žª‹œ«Œœª«Ž›ªŽž¬Ÿ® ®“ ¯’Ÿ®”¡°•¢±–¢­”¢«–¢ª—£®™¤°š¥¯™¥­š¦®™¥­š¦®Ÿ§²ž¦±Ÿ¦® §¯¢©± §¯ §¯ §¯¢©±¢©³ §± ¥® ¦¬Ÿ§²ž¦±¤°œ§³œ§³œ§±œ§³œ¦¯œ¥±œ§³š¥±™¢®™ ªœ›£œ˜žœ”—š‘•ŒŽ‘ˆŠ‹ƒƒ†~~y|wtwoqtkoufmu`jp[fmWckS_gQ]eNZbKYbJXaHV_FRZDPXCOWBNVAMS@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KR@KRJTZ^hks}€˜¢­²ªµ¼ª¶¾«¶½¥°µ¤®±¬·¼³»Á±¼Á´¿Ä·ÁĹÃżÇǽÈÈÀÊÌÁÊËÀÉÊÀÉÊÃËËÅÌËÈÎÌËÑÏÍÒÏÏÒÏÒÔÐÕÖÑÖØÑÙÙÓÞÜÖßÝ×ßÝ×ßÝ×àÝÖàÝÖàÝÖàÝÖàÝÖàÝÖàÝÖßÚÑÞÙÐßÛÓàÜÔàÜÔßÙÒÛÓÊÕȼ̴¦¹•‡©{i¢q_›fTŽR?‘UB¤uc¯ˆx­…t¨{j¤saŸjY—bPVA‹M8‡G3‡F1‡F1‰J7—`N¬ƒtµ›’¹ª¢¼°ª¼²¯½·¶¿¾ÀÀÁÂÁÁÁÁ¿ÀÁ¿ÀÀ¹·½³°½±«¼¯©º¤±Ž o]O:‡G3‡G3‰I5ŠJ6ŠL7ˆG2‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‰E2‰E2‰E2‰E2‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1§ššª¨¬±±·µµ»¹¹¿½¼ÁÀÀÃÂÀÁÅÀÃÄÁÁÆÁÁÃÀÀ¾½¿¼º»»º¼¾¼½À½ºÀ¾¼¾½¿½¼¾»¼½ººº´³µ²±³±±®²¯«¯¬¨©¨§¦¦¦ £¦œ¡¤›¡¥š ¦™Ÿ¥›ž¢™ž¡˜ –™™››œ››ž™›ž•™Ÿ”š¡•›¢–œ¢—›£—£›ž¥˜œ¢˜›¢š¡™£›ž¢šŸ¢›ž¡ŸŸ¢Ÿ ¡  £œ¡¤› £œŸ¢œ ¦Ÿ¢¦Ÿ¢¦¢¥ž¡¤ ¤Ÿ¡§ £§ £§ £§Ÿ£© ¦§ £§¢¥¨¡¤¨¥§ª¤©©¢§§¤©©¥ªª¦««¥ªª§ª­¦«®¥ªª¥¨«¥¨«¥¨¨¤§ª¡¨§ ¦§ ¦§ ¦§ž¥§œ¤ª›£©œ¤ªš¥ª¢¨¯£©­£ª¯¡«® ¨®¢ª°¤«°¥¬±§®³¨¯´©±´¬³¸­³·±¸½´¼¿µ½À¸ÀùÁĺÁø¾Â·¾À¹¿Å¸¾ÄºÀĺÁùÀºÁûÂľÅÇÂÈÉÆËËÈËËÇÌÉÇÌÈÆÎÈÉÎÊÊÍÊÌÎÍÎÑÎÏÑÍÒÔÐÔÕÐÔÕÐÕÖÑÖ×ÒÖ×ÒØØÒÙÙÓÛÛÕÜÜÖÚÚÔÝÝ×ÝÝ×ÛÛÕÜÜÖÜÜÖÜÜÖÜÜÖÚÚÔÛÛÕØÙÔÔÕÐÑÒÍÌÎÈËÍÇÇÊÇÈÍÉÇÌÈÄÉÅÈÌÆÈÍÊÇÌÉ¿ÈÆ·½¾´»½´»½³»¾¯¹¼¬³µ©°µ¨°¶¥¯µ¢¬µ¢­· ¬´ «²œª³œª³˜¥±–¦±—§²š©³™©´•¦²–¥±“£±‘¡¯ ¯Ž¡­¡­ ¯Œ¬ž­ŽŸ®‘¡¯¡°’¢°¡°žª‰œ¨ŠªŒœªŒœª‹œ«Š¬‹›©Œ¬‹ž­­Ÿ¯ °Ÿ­’¢°‘¢®” «–¡«–¢­—£®˜£°˜£¯™¤®š¥¯š¥±œ§±œ¦¯œ¦¯ž¦±Ÿ¦°Ÿ¦°¡¤« §¯ §¯ §±¢§°£¦­ ¦¬ §±Ÿ¦° §±Ÿ£®¤®œ¤¯œ§±œ§´œ§´›¤³™¢®–ž©——¢˜”œ™“–˜Ž•‹Œ†‡Œ‚ƒ†|}€yzyvvqprjloeko`goZdjV`fR]dQ[dNY`KW_KV`GS[FRZDPXBNVAMUALS@JSAIRAIR@KR@KR@KR@KRAIRAIRAIRAIRAIRAIRAIRAIRAIRAIRAIRAIRAIRAIRAIRAIRAIRAIRAIRAIRAIRAIRAIRAIRALSNX^eor‡Š“ž£Ÿ§­©³¹ª¶¾¬¶¿ªµ¼§²·ª±¶­¸½­¸½¯º¿³¾Ã¶ÁĸÃƸÅȺÅȼÆȼÆȽÅÈ¿ÆÈÄÊËÇÍËÊÏÌÍÒÎÐÓÐÒÖÐÔÖÒÔÖÐØÚÓÜÜÖßÝ×ßÝ×ßÝ×ßÝ×ßÝ×ßÝ×àÝÖàÝÖàÝÖàÝÖàÜÔßÙÓßÛÓàÝÖàÝÖàÜÔÞÙÐÚÒÉÔŻ̵¨ÄªžÅ¬ ¼ž’£sb•]I©|k¸—ˆ¹˜‰µ”…³²Ž€°‹|§zi™dRP<ŽP;R>‘UB p_³”Šº§ ¼²¯»¸µ»¼º½¿Á¿ÅÆÃÈËÃÈËÀÇÉÀÆʾÄÅ¿ÀÁ½½À¿ºº¾±®º¢™®†x˜aO‘XC•\G—`NŸkXœgU‘UBŠJ6ˆG2‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1ˆG2ˆG2ˆG2ˆG2‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1‡F1¤Ÿ£­©¯´²¶¹¸½¹¸½º¹¾¿½Á¾¾ÁÀ¿ÁÂÀÁÀ¾¿¼»½ºº½¹º»¹·¸º·´¼·´¹¸·¹º»·¶¸¹¸º·¶¸´³µ¯®°°­©¯¬©­ª§©§¥¥¢¥ ¤žŸ £›ž¢Ÿ¡› ™œ —š”š›•ššššš˜™š•—š–š‘—’˜ž’˜ž•›¡–œ¢–œ¢•›¡”š –œ¢–œ¢–œ¢—›¡™œ › › žŸ œž ›ž¢› £œ ¦ §šž¤› š ›ž¢šž¤›Ÿ¥œŸ£š ¦¡§£§Ÿ£©Ÿ¤§Ÿ¤§ £§ £§Ÿ¤§Ÿ¤§£¦©¥¨«¢©«¤©¬¢§ª¢¦¬£¦©£¦©¡¦©¢§ªž¥ªž¥§ž¦©ž¥ª¤©œ£¨œ£¨—£©˜¢¨š¤ªš¢¨¤¬š¥ªž¨®¢¬¯¤¬¯§¯²¬³¸«µ¸¬³¸¬²¶«²·¬³¸¯·º²¹¾µ¼Áµ¼Á¶½¿¸¿Á·¾Àº¿Â¼ÁÄ»ÀúÀĹ¿Ã¹À»ÂĽÅÈÀÇÉÂÈÉÄÉÉÅÈÈÄÊÇÆÌÊÆËÈÇÌÉÇÌÉËÍÌÎÑÎÏÑÍÐÑÌÑÒÍÓÔÏÓÕÎÓÕÎÓÔÏ×ØÓÙÙÓÚÚÔÛÛÕÜÜÖÜÜÖØØÒØÙÑÚØÒÜØÒÜØÒÛØÔÙÙÓ××ÑÓÔÏÍÎÉÉËÇÉÊÅÇÊÇÆËÈÅÊÇÄÉÅÀÆÄÄÉÅÂÉȾÅĸ¾¿´»½µ¼¾³º¿¬³¸¬²¶¦®´¢®´£®µ ¬´¡­µŸ­¶ž¬µ›¨´š©³˜§±–¦±•¤°•¦²•¤°’¡­žª«­ž­ŒŸ¬ ¯¡° ¯Ÿ¯ŽŸ®ŒŸ®Žž®ŒŸ«Š©‰š©ˆ›§‡š©ˆ™¨ˆ™¨ˆ›ªˆœ¬ˆœ¬‡š©…™©†šª‰­‹°ŽŸ°ž­¡°’¢°’¡­”Ÿ¬• ­•¡¯•¡¯—¢¯˜£°˜¤¯›¦°¥®ž¦¯ž¦¯œ¦¯ ¥®£¦­£¦ª£¥«¤§®£¦­¤§®¢¦®£¦­£¥®¢§° §±Ÿ¦®Ÿ§²ž§³œ§´›¤³š¡­—œ¨—™¢•”œ–“•ŒŽ“‰Š’„†‹€€‡}~xz{uwsqukkndgk`fmZbhW_hR]dOZaMX_LW^IU]GS[EQYCOWCNUBMTALS@JSAIRAIRAIR@KR@KR@KR@KRAIRAIRAIRAIRAIRAIRAIRAIRAIRAIRAIRAIRAIRAIRAIRAIRAIRAIRAIRAIRAIRAIRAIRAIRALSKU[_fkt|‚”Ÿ¤¡¬±§²¹ªµ¼«¶½ªµ¼©³¹§±´¬¶¹¬·¼¯º¿°»À³»Á´¾Ä³¿Å·ÂÇ·ÂŸÂźÂŽÅÅÁÉÉÆËËÇÍËËÐÌÍÐÍÐÔÎÒÔÎÓÕÑØÙÔÛÛÕÞÜÖÞÜÖßÝ×ßÝ×ßÝ×ßÝ×ßÝ×ßÝ×àÝÖàÝÖàÝÖáÝÕàÝÖàÝÖàÜÔàÝÖàÜÔÝØÏÙÒÊÖË¿ÓżÑǾ;´¼Ÿ¦we°‹|¾¦˜Á¬ À©œ¿¨›À¬¡À±©¼¦®‰zŸlZ£sb§xh¦zj±„¸£»®«½·¶¼½¾½ÀýÄÆÁÇÈÅÊÍÄÊËÃÉÊÂÈÉÁÈÇ¿ÆȽÄÆ¿Áÿ¹¸¾®¨¹ž”³ƒ¯ˆx´“„µ“‡·•‰±Œ}£tbšcQ‘U?ŠI4ŠG2‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1¨Ÿ¤­§©´¯²·µ¹¸·¼¹·½¼º¾»»¾¹¹¼¹¸½»¸»·¶¸·¸¹µ¶·µ´¶¸²±º³±¸µµ´´·³³¶µµ¸³´µ±±´®¯°­ª§­¨¥©©©¦¦¦¢£¤Ÿž œž¡œžœžšœž—š•˜›“™š–—˜’•˜”–™’—š•™Ž•š•™‘•‘—“™Ÿ“™Ÿ‘—’˜œ’˜œ”šž•›Ÿ”šž“™•™Ÿ–š ™£—£™Ÿ£™Ÿ¥˜ž¤™Ÿ¥›Ÿ¥˜ž¤—£•›¡–œ¢—£˜œ¢˜ž¥˜ž¥™Ÿ¦š ¦š ¦¡§¢¥›¡¥›¡¥œ¢¨£§¡¦©¤©¬¡¦©¡¦©¡¦© ¦ªž¥ª ¦ªŸ¥©ž¥§ž¥§œ¦©œ¦©›£©œ£¨›¢§˜¢¨– ¦– ¦– ¦•Ÿ¥š¡©›£©Ÿ¦«¢¬¯¨°³«³¶¬´·¬³¸ª±¶¨¯´§®³¨¯´¬³¸¯¶¸²¹¾±¹¿´¼¿·¿¿·¾À¸¿Á¸¿Á»Àù¿Ãº¿Â¸¾Â¸ÀùÁļÅƾÆÆÀÅÅÀÆÇÂÇÇÂÈÆÃÊÉÄËÊÆËÈÉÌÉÌÏÌÍÐÍÍÐÍÐÑÌÐÒÎÐÒÎÒÔÍÒÓÎÒÓÎ×ØÓØÙÔÙÚÕÚÛÓÚÛÓÙÚÒÖÖÐ×ÕÏÚ×ÓØÖÐØÖÐØØÒÖ×ÒÑÑÎËÌÇÄÆÂÄÆÂÂÇÄÄÅÆ¿ÄĽÄþÄÅ¿ÆŽÄƼÄļÄĺÁö½¿±¸½­´¹ª°´§¯µ¥¯µ¡¬³ «µ ¬´œ«µ™©´™¨´˜§³˜¤²”¤²’¡°¡°Ÿ«ž­Œ¬Œ¬Œ¬‹ž«‹ž­Žž®Ÿ¯ŽŸ°ŒŸ®‰ž¯ŒŸ¬ŒŸ«Š¬‡š©‡š©…š©†™¦†™¥†™£‡š§‡›«‡š©…š©…œ«†›¬‡œ­‰­ŽŸ°ž­ž­ ® ®Žž¬ ®“ ¯•¡¯–¢°–¢°–¢­š¥±›¥®Ÿ£« ¤¬ ¤¬£¥«¥¤©¦¤¨¦¤¨¦¤ª¦¤«§¦«§¦«¦¦©¤¦©¥¥«¢¦¬£¦­¡¦¯ž¦±œ¤±šŸ«™œ¦—™¢•”œ”“’Š”†ˆ’‚‚Ž‡||ƒvyytwtqtmmpfim`flZafT^dP[bNY`LW^KV]IT[GRYEPWDOVCNUBMTALS@JSAIRAIRAIRAIR@KR@KR@KR@KRAIRAIRAIRAIRAIRAIRAIRAIRAIRAIRAIRAIRAIRAIRAIRAIRAIRAIRAIRAIRAIRAIRAIRAIRAIREOUMW]_gmŠ”—ž©®¢®´§²¹ª´º¦±¶›¦«‘˜¥¯²¯¹¿®ºÀ¯º¿²ºÀ²¼Â³½Ã³¾Ãµ¿Â·ÁĸÂĺÄÆ¿ÆÈÂÈÉÃÉÇÇÍËÉÎËÍÐÍÎÐÌÑÓÏÕ×ÓØÙÔÜÜÖÞÞØÞÜÖÞÜÖÞÜÖßÝ×ßÝ×ßÝ×ßÝ×ßÝ×àÝÖàÝÖàÝÖàÝÖáÝÕàÝÖßÛÓÝÙÑÛÖÍÚÓË×ÐÈÖÑÈÒÊÁ˸®À¦š¿¤—ű¦È¸¯È¸¯Å¶¬Æ»´ÈÃÀÆ¿½¾¬£´•ˆµ–‰·œ’·Ÿ–º§ º­ª»²±»º¹»¾Á¼ÂƾÆÉÂÉÈÄÊËÆËËÆËËÈÊÉÃÊÉÂÈÉ¿ÆȾÅÇÂÀÁ·²À²«¾¯§¿«¢Á¯©Ã´¯Â¯¨¿§œº›Ž²‹{žiWP;‹H3‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1ŠF0ŠF0ŠF0ŠF0‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1¦™œª¡£­§©µ²µ¶µº´¶¹´¶¹µµ»··½¶µº´´·±³µ±³µ°²µ°°³µ²²µ²¯µ²®²±°³°³°±²®°²®°³ªª­¬©¦ª¨¦¦¦¦¢¢¥¡¡¡žŸœžœ››šœ—™œ•—™“–™’—š“•˜’•˜’”–‘––•••˜Ž”šŽ”š–š•œ‘—‘—ž‘—ž–•œ’˜œ’˜œ—œ“™•›Ÿ–œ¢–œ ˜ž¢˜ž¤—£šž¤˜ž¢•›Ÿ•›¡’š ”š¡–œ¢—£—¡–¢–ž¤–¢˜Ÿ¤™Ÿ¥š ¦š ¦™Ÿ¦š §œ¢©ž¤ª ¦ªŸ£©Ÿ£©ž¤«¤©£ª›¢§ž¤¨œ¤§ž¥§ž¤¨œ¤§š¢¨™£¦š¢¨–¡¨• §–ž¤–¥”ž¤—Ÿ¥›¦«¢¬¯¦°³©°µ©°µ¨¯´¨®µ¤«°£ª¯£ª¯¥¬±©°µ¬´·¯µ¹°·¼³¹½´»½µ¼¾¶½¿·¾À¸¾Â·½Á¶¼Â¶½¿·¿Â·ÁøÂÅ»ÂĽÃÄ¿ÅÆ¿ÆÈ¿ÆÈ¿ÈÉÀÈÅÄÊÈÆËÈÊÌËÊÍÊËÎËÌÐÊÍÑËÌÎÊÏÐËÑÒÍÑÓÌÓÔÏÓÔÏÖ×ÒÖ×ÒÖØÑØÙÔ×ØÓØØÒÙ×ÑÙÖÒÕÕÏÔÔÎÖ×ÒÑÓÏÊÌÈÂÄÀ¾Á¾¾ÃÀ¿ÂÂÀÂÄ¿ÅƾÅÇ¿ÅƼÂûÂļÃźÁô¼¿±¹¿¬³¸¨°¶¤¯´£®µ¡¬³ «µœ«µšªµš©³š¦±—¤°–£²’¢°Ž¡­Ÿ­ŽŸ®ŽŸ®ž­‰­Š›ªŠ¬‹ž­ž­ ¯ŒŸ®‹ž­ˆ¬‰­Š¬‰œ«†›¬„™ª…™§ƒ˜¤ƒ˜¤„˜¦…˜§‡š©‡˜§‡š©…š©…š«…š«‰­‹Ÿ¯ ¯Žž®­Žž¬«ž­“ ¯“ ¯“ ¯“¢®–¡®›£¬¤¬ £ª£¢§§¡£§¡£¨¡¢©¢£ª¡£ª ¡­Ÿ¡¬ŸŸ¬¡¡¬¡¡¬¡¡© Ÿ© Ÿ© ¢¦¡¥¤ ¦ ž¤œš ˜”š˜’˜•“•‹”„‡“‚Ž}|‹zy†wu~tuvprpmpggm`dj[ahT_fR\bNX^LV\KU[ISYHRXEPWFPVCNUCMSBLR@JP@JP@JP@JP@JP@JP@KR@KR@KR@KR@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JPBLRDNTNY^|ƒˆš¢¨¨­ ¨®¤®´¤¬²’™žsz’š¬¶¼°ºÀ¯º¿¯¹¿¯º¿°ºÀ²½Â³½Àµ¿Â´¿Â¸ÃùÄÄ¿ÈÉ¿ÉÈÂÊÇÄÊÈÈÍÊÌÏÌÐÑÏÓÔÒÔÕÐÚÚÔÜÜÖÞÞØÞÞØÞÜÖÞÜÖÞÜÖßÝ×ßÝ×ßÝ×ßÝ×ßÝ×àÝÖàÝÖßÜÕàÜÔÜØÐÛÕÏÛ×ÏÝ×ÑÜÙÒÚ×ÐÕÒËÑÉÀÎù˽´Ê»±Ê¾¶Ê¿¸É½É½ÈÉÄÉÊÈÆÁ¾¿±ª½®¦¼®§¼°ª»±®º´³ºµµ¹»¾º¿Â»ÂǾÅÊÂÊÊÃÊÉÄÉÉÈËËÍÍÍÌÌÌÈËËÇÊÊÃÈËÅÆÇÅ¿¾Å¾¼Ä¼¹Å¹³Æ»¶Æ¿½Ç¼·Å¶®Æ³¬¿¤š¬~l˜\IN8ŠG2‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‹G1‹G1‹G1‹G1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1‰F1¡’’£™š§ž£¬§ª¯¬¯¯¯²¯±³®°³±°²³®±²­­²¬«±¬¬¯­®®®®¯®­±¯­±°¯°¯®°­°®­¯­¯²­¯±ª«¬«¨¥©¦£¢¢¥¡ ¢œžš›œ›™š˜—™••˜”–˜‘––”—“—‹’—Š‘“Ž“–”—“–•˜”—“™Ž”š”š•œ’›Ž•‹“™”™–‘—›’˜œ“™•™Ÿ”›–œ ˜ž¤™£”š ”™œ“˜›–›Ž•š‘—ž”š¡•›¢–š¢”š¡–œ£—¤•£–œ¢–œ¢˜ž¤–ž¤–ž¤– ¦˜ ¦˜Ÿ¤™ ¥›¢§œ£«š¡«™ ¥˜ ¦š¡¦š¡¦£§£§›¢§™ ¥˜Ÿ¤™Ÿ¦™ ¥—Ÿ¥™¡ª˜ ©–ž§™£©Ÿ©¯£«±¥­³¥¬± ¨® §¬Ÿ¦«ž¦¬Ÿ§­Ÿ©¬¢ª°¥¬±©°µ¬²¶­´¶¯¶¸±¸½±¸½³¹½³º¼´»½³»¾´»À´½¾·¾À¶ÀøÀúÂÅ»Á»ÂĽÅŽÅŽÆÇ¿ÈÆÂÈÆÁÇÅÄÊÈÆËÈÈËÈÉÎÊÊÍÊËÍÉÌÍÈÍÏËÏÑÍÏÐËÐÑÌÒÔÍÔÖÏÕ×ÐÖ×ÒÕÖÑ×ØÓØØÒ××ÑÕÕÏÓÓÍÓÕÑÐÒÎÉËÇ¿ÁÀ¾À¿¿ÁÀ½Â½Â¾ÄŽÂżÁĶ½¿¹¿Ã¹À·¿Â³»Á±¸À«²º¨¯·¥­¶£­¶Ÿª´Ÿª´›ª´š©³™¨´˜¤²”£­’¡­‘ ¬ ¯ ¬ŽŸ®ž­Œ¬‰­ˆ›ª‡›«‰œ«‹œ«‹ž­‰œ«†›¬†›ª‡š©†šª†š­„™ªƒ—§‚—¦‚—¨‚—¦ƒ˜§†™¨‡˜§‡˜§…–¥ˆ˜¨‡™¬†›¯ˆ®Šž®‹Ÿ¯ŽŸ° ¯ž­ŒŸ®‘ ¬’¡­•¡¯•¡¯–¢­˜£­œ£«¡Ÿ¦¤¡¤¦Ÿ ¨šªœ˜«œ­žœ®œ˜¯›•¯˜“¯˜“®—¯˜“¯˜“­–Ž­•Œ«”Œª–§•‘¤“’¡’’œ™‰‰—‡‡–ƒƒ”|yŒwt‡tqƒrpwooqkmigkbdj[agW^cQ\cNX^JTZJTZHRXGQWFPVDNTCMSBLRBLR@JP@JP@JP@JP@JP@JP@JP@KR@KR@KR@KR@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JPBLRISYQ[aszŠ‘–—¡§š¢¨ž¨«š¥ª–›ry~˜›¨³¸¯ºÁ¯ºÁ¯ºÁ­¸½±¹¿²½Â²¾Ä´¿Ä³¾Ã¸ÂŹÄÄ»ÅÈ¿ÈÉÂÉÈÃÉÇÆÌÊÊÏÌÍÐÍÐÑÏÓÓÐ×ØÓÛÛÕÝÝ×ÞÜÖÞÞØÞÞØÞÜÖÞÜÖÞÜÖßÝ×ßÝ×ßÝ×ßÝ×ßÝ×àÝÖßÜÕÞÚÒÚÖÎÜÖÐÝÚÓÝÚÓÝÙÓÛ×Ñ×ÔÐÔÑÍÑÍÇÍÇÀËļËÅ¿ÉÄÁÊÆÀÉÊÈÊÍÊÈÊÉÄÅÃÁÀ¿¾»¸»µ´¸¶´·¶¸¹¹¹¹¼¿º½ÀºÁƼÃÈ¿ÈÉÆËËÈËËÎÎÎÎÏÍÎÏÍÍÎÌÍÍÍÈÊÌÈÉÊÄÇÄÃÄÂÄÂÀÅ¿¾ÃÀ½ÅÃÁÅÀ½ÈÀ½É¿¼É¶¯½’¥ub˜]H’R=J5ŠF0ŠF0ŠF0ŠF0ŠF0ŠF0ŠF0ŠF0ŠF0ŠF0ŠF0ŠF0‹G1‹G1‹G1‹G1ŠF0ŠF0ŠF0ŠF0ŠF0ŠF0ŠF0ŠF0ŠF0ŠF0ŠF0ŠF0ŠF0ŠF0ŠF0ŠF0ŠF0ŠF0ŠF0ŠF0ŠF0ŠF0ŠF0ŠF0ŠF0ŠF0ŠF0ŠF0ŠF0ŠF0ŠF0ŠF0ŠF0ŠF0ŠF0ŠF0ŠF0ŠF0ŠF0ŠF0ŠF0ŠF0ŠF0ŠF0ŠF0ŠF0ŠF0ŠF0ŠF0ŠF0ŠF0ŠF0ŠF0ŠF0ŠF0ŠF0ŠF0ŠF0ŠF0ŠF0ŠF0ŠF0ŠF0ŠF0¡‡ƒ¡Ž‹¤””«™•­Ÿ›°¦£±©¦²§¢³¤Ÿµ£Ÿ´§¤²ª§´©¤²ª¤°­ª°­ª°®¬¯­«®®®­«¬©«®©¬°¨­°ªªªª¥¢©£¢£¢¡Ÿœœ››ž™š›•˜›“˜›”–˜”šŽ”˜“™Š‘–†‘˜…˜†Ž—ˆŽ”““—‘“•’•“™”—”—Œ’™Œ’™Š‘™Š‘™‰“™‹“™Œ“˜Ž”˜–”™œ˜šœ˜›ž–›ž•›Ÿ–˜›‘—‘—žŽ••›Œ”š–›‘˜ ‘—ž‘—ž“™ ”š¡š “™ •›¢–¢•£”œ¢•£”ž¤•Ÿ¥– ¦˜Ÿ¤™ ¨–ž¤•¦–ž§–¥•£—Ÿ¥™ ¥˜Ÿ¤–¢—¤—ž£–ž¤—Ÿ¨™¡ª˜ ©˜ ©™£¬š¥¬œ¦¬›£©š¤ªš¤ª˜¢¨™£©™£©š¤ªš¥ªŸ¦«¡¨­£ª¯§®³ª±¶«³¶¬´·¬´·¬³µ®µ·°¶º¯·º°º½³»¾´¼¿´¿¿·Á÷ÁĸÀùÀºÁúÁýÄƾÅÄ¿ÆÅÃÆÆÄÆÅÄÉÅÇÊÇÇÊÇÉÌÉÊÍÊÊÍÊÉÌÉÊÍÊÍÏËÎÐÌÏÑÍÐÑÌÓÕÎÔÕÐÔÕÐÖ×ÒÖÖÐÒÔÍÔÔÎÒÒÌÑÓÏÏÐÎÇÊÇÀÃÀ¿ÁÀ¿ÀÁ½¿¾¼ÁÁ¼ÁĹ¿Ã·¼¿´º¾¶½¿µ½À´¼¿°¸¾­µ»ª±»¦­µ¤¬µ «µ›©²˜§±˜§±—¤°—¦²—¤³“ ¯Ÿ«‘ ¬Ÿ­ž­««Š©‹›«‹œ­Œ®Œ®Ššª‡™¬‡š©…˜§„˜¨„˜¨„˜¨„™ª˜§•§~”¦•ª€–¨‚˜ª…™©„—£…˜¢‡˜§†™¨…š«†›¬…š«†›¬‰°Šž®ŒŸ®‹ž­ ¬Ÿ«’¡«•¡¬• ª– ©š¡©œ ¦  ¢™˜¤—”§•ª–«–¬”‹¬’‰­“Š¯“Š®Œ€¬‡x¬†z«…yª‚tª‚t©‚r¨„x§†z¦‡}¢ˆ‚ †€œ„~™{˜|v”zvwqŠrl…qk~ljtjhkegecg]`dV\bQ[aMX_KV]ISYISYGQWFPVCNUCMSBLR@JP@JP@JP@JP@JP@JP@JP@JP@JPAIRAIRAIRAIR@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JPCMSLW\_gmq{~`jmemsŠ”—˜ ¦“›¡‹’—|ƒˆ€‡Œ£­³«·¿­¸Â¬¸À­·½«¶»°¼Â±½Ã³¿ÅµÀŶÀùÂüÄǽÈÈÂÊÊÂÉÈÃÉÊÉÌÌËÐÍÍÐÍÏÑÍÓÔÏØÙÔÛÜÔÝÝ×ÝÝ×ÞÞØÞÞØÞÞØÞÜÖÞÜÖÞÜÖßÝ×ßÝ×ßÝ×ßÝ×àÝÖÞÜÖÞÛÔÜÙÒßÙÓÞÛÔÞÛÔÜÙÕÙÖÒØÖÓÔÒÏÐÊÄÍÊÃÈÈ¿ÉÇÁÈžÈÈÂËÌÊÉÌÉÈÊÉÂÇǽ¹¼¿¶»¾¶»¾·º½¸½À¹¿ÀºÁüÄÄÂÉÈÈËËËÍÌÌÎÊÐÐÍÏÏÌÏÐÎÍÎÌÍÍÍÌÌÌÇÌÉÇÉÈÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÄÇÄÈÅÂËÁ¾Èµ®º•„¬}k¡kV”XBŽM7ŠG/ŠG/ŠG/ŠG/ŠG/ŠG/ŠG/ŠG/ŠG/ŠG/ŠG/‹G1‹G1‹G1‹G1ŠG/ŠG/ŠG/ŠG/ŠG/ŠG/ŠG/ŠG/ŠG/ŠG/ŠG/ŠG/ŠG/ŠG/ŠG/ŠG/ŠG/ŠG/ŠG/ŠG/ŠG/ŠG/ŠG/ŠG/ŠG/ŠG/ŠG/ŠG/ŠG/ŠG/ŠG/ŠG/ŠG/ŠG/ŠG/ŠG/ŠG/ŠG/ŠG/ŠG/ŠG/ŠG/ŠG/ŠG/ŠG/ŠG/ŠG/ŠG/ŠG/ŠG/ŠG/ŠG/ŠG/ŠG/ŠG/ŠG/ŠG/ŠG/ŠG/ŠG/ŠG/ŠG/ŠG/ŠG/£{m¤w¦†}ª‡z®Žƒ°•‹±™²˜Œ´›´“´£¡²§¢³¤Ÿ³¤Ÿ±©¦°­­­­­ª¬««ª©ª«¬ªªª¨ª­©¨ªª§§©£¢¥¢Ÿ žŸšœŸ–˜ž–˜ž“—‘–™Ž”šŠ’˜ˆ™†Ž™„Œ•‚—„Ž—ƒ–„‹•ŠŽ–Ž‘•’“”’•Ž”•Ž‘•’–Š‘–ˆ”…—„Ž—„Ž—‡˜‹’šŽ”›’—š”–™™š››››•š”—›–˜›’—š–Ž•š•›Š•šŒ”š‹“™Œ”š”œŽ–œ——’™¡’™¡’œ¢“£’š “›¡”ž¤“ž¥“ž¥”›£”›£”œ¥”›£”›£”›£•›¢•£–ž¤”ž¡”ž¡•£”œ¢”ž¤”œ¥•£”œ¢”œ¢”œ¥•Ÿ¥–ž¤”Ÿ¤˜Ÿ¤– £– ¦– ¦—¡§™¡§š¢¨›£©œ¤ª §¬£«±¦­²¦­²¥¯²§¯²©°²ª±¶©±·©³¹¬´º°º½³»¾´¾Àµ¿Á·ÀÁ¸¿Á¸¿Á¸¿Á¹¿Ã½ÂŽÂżÃ½ÄÿÄÄÁÇÅÂÈÆÅÊÇÆËÈÆËÈÆÉÆÄÊÈÆÉÆÈËÈÊËÉÍÎÌÎÏÊÐÑÌÒÓÎÔÕÐÕÖÎÓÓÍÒÔÍÓÕÎÐÑÌÏÑÍÌÏÌÇÉȾÀ¿¼¾½»¾¾º¿¿º¿Âµ¼¾µ»¿µ»¿²º½²¹¾²¹¾¯·½ª²¸§¯µ¤¬² «²›§²™¥°–¢­•¤°”¡­•¡¯”¡°‘ ¯‘ž­Ÿ®Ÿ­Ÿ­­Œ¬‰š©Š¬Œ®‹°Œ®ˆœ¬†˜«…™©…—ª„˜«ƒ—§ƒ˜©€–¨€–¨—©~–©~”©~–¨™«†™¦‡—¥†—£‡˜§†šª…™¬†š­…›­…š«‰«ˆœ¬Œ¬ŒŸ®žªŽŸ«‘ ª‘¥”ž¤—¤˜ š™›œ–•Ÿ‰¤‰¦‡§„©‹«‹€®Žƒ¬Š~«€q¦xf¦uc¥tb¤sa¢o]¡n\¢q_£sb¤yj£}q¡}qzp›xn–vm’skŒqi‡mg€jfwfdoddgac_^`X[_RX_NX^NX^KU[GRYGQWEOUCMSCMSBLR@JP@JP@JP@JP@JP@JP@JP@JP@JP@JPAIRAIRAIRAIR@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JPCMSS[akuxisvQY_PZ`mwzˆ’•–¢•£Ž˜›ˆ ¨®¨³º¨³½ªµ¼©´»ªµº±»Á±½Ã´¾Äµ¿Â·ÁĹÃżÅƾÈÊÂÊÊÂÊÊÄÊËÆÌÊÉÎËÊÍÊÍÏËÒÓÎ×ØÓÚÛÖÜÜÖÝÝ×ÝÝ×ÝÝ×ÞÞØÞÞØÞÞØÞÜÖÞÜÖÞÜÖÞÜÖßÝ×ßÝ×ßÝ×àÝÖßÜÕßÜÕßÜÕÞÛÔÝÚÓÜØÒÚ×ÓÖÔÑÐÎÌÌÌÆÈÆÀÈľÇÅ¿ÆÇÂÉÊÈÆËÈÅËÉÂÉÈ¿ÅƺÀÄ·½Áµ¼Á¶½Â¸½À¹¿ÃºÃĽÅÅÁÈÇÉËÊËÌÊÎÏÍÑÑÎÑÑÎÐÑÏÑÑÎÏÐÎÍÎÌËÎËÊÌËÇÊÊÆÉÉÈÉÊÇÉÈÃÉÇÆÉÉÇÊÇÊÇÃÊ¿¸Å­Ÿ¼˜ˆ±…r¢jU”W@ŒJ2‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1ŒG0ŒG0ŒG0ŒG0‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1 oZ¡p^£tb¢q\¥r`¨{j«oª~n¯Šy²š‘² œ°¢ž´¡š±£Ÿ°¨¥ªª­§¬¯¦«®§¨©§©¨§¨©¨¨¨¨§¦§¤¤¤¢ ¡ ŸšœŸ•™Ÿ”˜ž‘•”šŠ‘›‡˜†Ž—†Ž”‡”ƒ‹”‹”‚Œ•‰’‚Š“†Œ’ŠŽ”‘’“”””’’’‘’’”Ž‘•Š–†’ƒŽ•ƒ–…•‰‘—‘”—”–™˜—™™˜š™˜š––™—˜™––™”—›’–œ‘”˜Œ“˜‹’—Š’›Š”š‹“™Š”šŠ•œŒ–œŒ—žŒ–œŽ•— š¡‘™¢š¡›¢™Ÿš ’š£‘™¢‘™¢‘™¢— — ™Ÿ’œ¢‘œ£”œ¢”› ’š “šŸ”œ¢“£‘œ¡’šš’š ‘œ¡“ž£”ž¡•Ÿ¢•£“Ÿ¥•Ÿ¥”Ÿ¦– ¦—¡§—¢§š¢¨š¥ªŸ©¬ ¨®¡©¯¡¨­£«±£ª¯¤¬²¤®´¦®·§¯µ¬³¸®¸»°º½²»¼´¼¿¶¼À·½Á¶½¿¸¿Á¹À¹À¹¾Á¼ÁļÂýÃÄÀÆÄÂÇÄÃÈÈÂÈÆÂÅÅÁÇÅÂÅÅÃÆÆÅÈÈËÌÊÌÍËÏÏÌÑÒÍÓÔÏÔÕÍÓÓÍÒÔÍÒÔÎÒÓÎÌÏÌÉÎËÃÊÉÀÃÿÁÀ¼¾½¹¾¾·½¾¶¼À³º¿²¸¾±·»°¶·¯µ¶­µ¸ª´·¤«°¢©«¨­™¤«™¤®–¢­”¢«’¡­’¡­‘¢±’¢°‘ ¯‘ ¯Ÿ¯ŽŸ®­Œœ¬Œœ¬ˆ›ªŠ›¬‰°‰›®‰›®†š­„˜¨ƒ—§„˜«ƒ—ª‚—¨‚—¨•§—©—¬}–ª{”¨—ª€–«ƒ—§„˜¨†™¨†™¨‡š©‡›«…š«…œ«‡œ­‡›©Š©Œ¬Žž¬žªŽž©ž§‘™¢’™ž“—•—™–““–˜ˆšŒˆ¡Ž‡£„¥‹‚§‰}©‰~©†y©s¦wg¡mZžiUŸhVgR™`K˜]HšaL›dR kW p_ qaœqd™qc•ocne‹lbƒg^{d_ra_f]\_\\YXZQW[MTYLV\IT[GRYEPWCNUDNTBLRBLR@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JPGQWMX]NX^LV\FPVQ[aksyˆ”•Ÿ¥™£©š¢¨ž¨« «°¤¬²¦±¶¨³¸­·½­¹¿±»Á²½Â´¿Ä·¿Â¹ÁĻĿÅÆ¿ÈÉÃÉÊÃÉÊÆËËÈËËÊÍÊÏÑÍÓÔÏÖÖÓÙÚÕÛÜ×ÜÜÖÝÝ×ÝÝ×ÝÝ×ÝÝ×ÞÞØÞÞØÞÞØÞÞØÞÜÖÞÜÖÞÜÖßÝ×ßÝ×àÝÖàÝÖßÜÕßÜÕÜÚÔÚØÒÛ×ÑÕÕÏÐÑÏÍÍÊÈÅÁÈÅÁÅÆÄÄÅÃÆÈÄÅÊÇÃÉÇÁÈÇ¿ÅƺÁö½Â´¾Á·¾Ã¹¿Ã¸¿Á»ÃûÃÿÆÅÇÉÈËÌÊÏÏÌÏÐÎÑÒÍÑÒÍÐÑÏÑÑÎÍÎÌÌÍËÍÍÊÉÎËÈÍÊÌÌÌÉËÊÃÉÇÃÉÇÈËÈËËÅÌľ˼´Ç¯¤¾Ÿ’±…ržfQP8ŒH2‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1ŒH/ŒH/ŒH/ŒH/‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1‹G1š_JdNbM—[E—YAœ`J¡hSŸfQ¢r_¯ƒ²ž˜±ž—±Ÿ™¯¤¡ª¨©©§«¦¨«£©¯£©­¢§ª¢¥¨¦¥¤¤¤¤¢£¤   ˜›Ÿ”˜ ‘–Ÿ•›‹’œ‹’œ†Ž™„Ž—ƒ–„Œ•†•‚Š“‚‰“‰’‰’‚‰“‡ŒŠ‘‘’’’’‘“’‘’“‘‘’“Š”†’†•…‹’‡”Œ’“”•———™—˜š——˜—––—˜–—˜•—™•—™•–—‘–™•œŒ“›Š’›‹“œŠ’›†‘›ˆ’›ˆ“š†’š‰”›Š•œŒ”Œ—ž‹–— ‹–‹—Ÿ— ‘˜ ’™¡— — Ž–Ÿ‹•ž‹•ž™Ÿ’š ‘›ž‘™œ˜›‘™œ’™žš—š‹•—‰’“ˆ’”šŸ‘£‘£”ž¤“ž¥“ž¥’ž¤“£“Ÿ¥•Ÿ¥•Ÿ¥—Ÿ¨™¡§›¥«›¥«›¥«œ¦¬œ¦¬¨­Ÿ§­¢ª³£«´£«´¥°µ¦±¶«µ¸­´¹­´¹±·»³¹¿³º¿¶¼Àµ¼¾µ¼¾´»½¶½¿¸¿Á¸¾Â½ÂŽÃĽÃļÃżÂý¼ÁÁ¼ÃÂÀÅÅÃÉÇÈËÈÊÍÊÏÐËÐÑÌÑÓÌÒÔÍÑÒÍÑÓÍÏÑÍÌÏÌÉÎËÃÉǾÅĽÂº½½·ºº´º»³º¼´º¾±·¾®µº®´µ¨¯±©°²¤®±Ÿ§ª™¤©—¢§–¡¨–¡«“¢¬’¢­”¡°“ ¯ ¯Ž¡­¡° ¯Ÿ®Œ®‹ž­­Œœ¬Š›¬ˆš­‡›®Š›¯‡›®…š«„˜¦‚—¨ƒ˜©€–¨‚—¨~–¨~”©~–«}–¬}–ª|•©}–ª€–«—©ƒ˜©…˜§…˜§†™¨‡š©‡›«…œ«†›¬‡š©‹œ««‹œ¨¨¦š¡˜ž’˜Ÿ‘—›‘“–’’’•’’—Žš›ŽˆŸŒ… ‰¢‡}¥„x¤~r£xi o]œgSšaL™^I—ZC•U@•U@–YB˜\FšaL›cO›fUšjY–j\’h\ŒfZ„d[~bYr]WgYU`WVZWWRUYNTZIQWFQVGQWFPVEOUBMTBLRBLR@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JP@JPBLRCMSEOUCMSEOUITYR\bhruŠ”—”œ¢˜ ¦—¡¤ ¨®¡©¯§±·©´¹«¶»­·º±¼Áµ½Ãµ½À·¾Ã¹ÁĺÃľÆÉÃÉÊÄÉÌÇÌÌÊÌËÐÑÏÓÔÏÔÕÐ×ØÓÛÜ×ÝÝ×ÝÝ×ÝÝ×ÝÝ×ÝÝ×ÝÝ×ÝÝ×ÝÝ×ÞÞØÞÞØÞÞØÞÞØÞÞØÞÜÖÞÜÖßÝ×ßÝ×ÞÜÖÞÜÖßÜÕÞÛÔÝÙÓØØÒÒÒÏËÍÉÈÊÆÅÆÄÂÇÄÂÇÄÂÇÄÂÇÇÀÈÈ¿ÆżÂù¿À·¾Ã¶½Âµ¼Á¸¿Á»Á»ÃýÄÿÆÅÂÇÄÉËÊÍÎÌÎÏÍÏÑÍÐÐÍÒÐÍÐÑÏÎÏÍÏÏÌÏÏÌÎÐÌÎÏÍÍÍÍÉËÊÇÉÈÄÉÅÉÌÉËÌÇÍÇÁËÀ¹Êº±Æ®£¼œŽ­~l˜\FM5H1H1ŒG0ŒG0ŒG0ŒG0H1ŒG0ŒG0ŒH/ŒH/ŒH/ŒH/ŒG0ŒG0ŒG0ŒG0ŒG0ŒG0ŒG0ŒG0ŒG0ŒG0ŒG0ŒG0ŒG0ŒG0ŒG0ŒG0ŒG0ŒG0ŒG0ŒG0ŒG0ŒG0ŒG0ŒG0ŒG0ŒG0ŒG0ŒG0ŒG0ŒG0ŒG0ŒG0ŒG0ŒG0ŒG0ŒG0ŒG0ŒG0ŒG0ŒG0ŒG0ŒG0ŒG0ŒG0ŒG0ŒG0ŒG0ŒG0ŒG0ŒG0ŒG0ŒG0ŒG0ŒG0ŒG0ŒG0ŒG0ŒG0ŒG0ŒG0ŒG0ŒG0ŒG0ŒG0˜[D˜[D“S;M5M5‘N6•W?™[CbM§|j°›•®¡ž¯¢Ÿ­¤£ª§§«¨«§§­¢¨¯¡§«ž¤«›¡§¡ ¢¡Ÿ › –š ’— –””œˆ’›†™ƒŽ˜ƒ–ƒ–ƒ‹”‡”…Œ‘†Œ“‚‰“‚‰Ž†‹ŽŠ‘““–‘Ž—’“’‘‘’‘’Œ’‡“‰Œ“Š’’”•”“–—•™—•›––˜˜˜—–•———•–—“•˜’•˜‘”—Ž•šŒ”—Š’˜ˆ’›…š‚™ƒš‚™ƒ‘š†’š‰“œ‰”›ˆ“š‹–Š•œ‰”ž‹– Œ–Ÿ•žŽ–Ÿ‹” Š•Ÿ‰”žˆ”œˆ”œŒ–ŸŽ˜ž˜ž˜Ž˜›šŽ™ž™œ‹“–€‰ŠƒŒˆ’•—™ŸšŸ’œ¢“£‘£’¤”ž¤“ž¥”ž¤”ž¤”Ÿ¦–¡¨˜¢¨˜¢¨—Ÿ¨˜¢«™¡ª˜£ªš¥¬œ§®ž¦¬¡©²£«±¦­µ¨¯·¨°¶ª°·«²·®´¸®´¸°¶¼°¶º°¶º±¹¼±¹¼²º½µ¼¾µ¼¾·½Á¹¿Ã¹¿Ã¸¿Áº¿Â¸¿Á¼ÂüÄÁ½ÅÂÁÇÅÄÉÅÇÊÇÍÏÈÏÑËÐÒËÏÑÊÏÑËÎÑÎÍÏÎÉÌÌÃÈȾÃýŸ¾¿¶»»´¹¹´¹¼´º¾±·¾®´¸­³·§­±£«®Ÿª¯š¥ªš¤ª˜£ª–¢ª”£­”£­“¢®“ ¯‘ ¯Ÿ­ŒŸ«ŽŸ® ¯ž­Œ®‹ž­‹›«‹›«Šœ¯Š›¯‰š®‡™®†š­†šª†š¨ƒ˜©‚—«—©€–¨€–¨~–¨}–ª|–­}–ªz”©|”©—¬—©„–©†™¨‡˜§‡š§†šªˆ›ªˆ›ªˆœ¬‹›«Œœªœ¨Ž©Žœ¥Žš¢Ž™ Ž–œ——œ•™“–““–•’’–˜Ž‹šŒˆš†€š€w›}qšxl›pa˜eS—_J•YC“V?’R:‘P:’R:’T<•XA˜\F™^I—_K–bO’cSbU‡_T~^Su[UjWR`SPZTSRRUMRUHOTGOUEOUDNTCMSBLRAIR@HQ@HQ@HQ@HQ@HQ@HQ@HQ@HQ@HQ@HQ@HQ@HQ@HQ@HQ@JP@JP@JP@JP@HQ@HQ@HQ@HQ@HQ@HQ@HQ@HQ@HQ@HQ@HQ@HQ@HQ@HQ@HQ@HQ@HQ@HQ@HQ@HQ@HQ@HQ@HQ@HQ@HQ@HQ@HQ@HQAIRBLREOUJTZLV\NX^OW]T\bnv|Š‘––ž¤–ž¤œ¤ª¥­³ª°·ª±¶­´¹°º½²¼¿´»À´»Àµ¾¿¸Á»ÄÅ¿ÈÉÅÊÍÊÍÍÎÐÏÑÓÏÔÕÐÖØÑÚÛÖÜÝØÝÝ×ÝÝ×ÝÝ×ÝÝ×ÝÝ×ÝÝ×ÝÝ×ÝÝ×ÝÝ×ÝÝ×ÝÝ×ÞÞØÞÞØÞÞØÞÞØÞÜÖÞÜÖßÝ×ßÝ×ÞÜÖÞÛÔÝÚÓ××ÑÐÑÌËÌÊÈËÈÃÆÆÂÅžÅÄÀÃþÁĽÃÄ»ÂĹÀ¶¼Àµ¼Áµ½Àµ½À¸¿Á¹À¿ºÂ¼ÄÁ½ÄÃÁÇÅÅÊÇËÌÊÍÏËÏÐÎÎÏÍÐÐÍÐÐÍÐÐÍÐÎËÎÏÊÏÐÎÍÎÌÉËÊÇÉÈÇÉÈÇÊÇÊÍÊÌÎÊÌÊÄËſʾ¸É¶¬Ã©¶¢iT“S;ŽK3I0I0ŒH/I0N6“U=‘O7ŒH/ŒH/I0ŒH/ŒH/ŒH/ŒH/ŒH/ŒH/ŒH/ŒH/ŒH/ŒH/ŒH/ŒH/ŒH/ŒH/ŒH/ŒH/ŒH/ŒH/ŒH/ŒH/ŒH/ŒH/ŒH/ŒH/ŒH/ŒH/ŒH/ŒH/ŒH/ŒH/ŒH/ŒH/ŒH/ŒH/ŒH/ŒH/ŒH/ŒH/ŒH/ŒH/ŒH/ŒH/ŒH/ŒH/ŒH/ŒH/ŒH/ŒH/ŒH/ŒH/ŒH/ŒH/ŒH/ŒH/ŒH/ŒH/ŒH/ŒH/ŒH/ŒH/ŒH/ŒH/ŒH/ŒH/ŒH/ŒH/‘P7–T<M5I1ŽI/‘M4”R:œ_H¡fQ©}m¯™•®¡ž° š¯¡¬¤¤®££©¤¨¢¦®¡§®¡©šž¤™œ ™›ž–š ’˜Ÿ—¡Ž•ŸŒ“‰‘œ…Žš…Žš„Ž—„‹•‡”†Œ“‡‹‘‡‘‡‘‡Œ‰Œ‹Ž“•˜’Œ–‘Ž˜’Ž—’•”‘‘’‘‘‘’’’’••’—•“š—”›•”›––š—”—–•–––“•”–—•˜•˜”™‹•˜Š’˜…‘™„˜Žš€™˜Žšƒ‘š†’š‡’™‡’œ‰“œ‰•‰”žŠ•ŸŠ•Ÿ‹– ˆ“‡’œ†’š‡“›‡“›‰“œˆ”œŒ—žŒ—ž—Ž–œ˜˜˜Š”—ƒŒ„Ž…’„”„Ž‘†‘–‹–›Ž™ž›¢‘›¡‘œ£’¤‘œ£“£’¤“ž¥’ž¤“ž¥‘¥’§’§“Ÿ§–¡¨™¡ªš¤­›¥®¥®¡¨°¤«³¦­µ¦­µ¤«³¥¬´©¯¶«±µ­³·®´¸±·»±¸½¯¶»²¹»³»»³¹½´ºÀµ»Áµ¹¿¶¼À¶½¿¶½¿ºÀÁ»ÃüþÅÄÄÇÇÊËÉÊÎÈÍÏËÎÐÌÌÐÊÌÏÌËÍÌÇÌÉÂÉÈ¿ÄǺÁø¾Âµ¹¿±¸º²¸¼³¹½°¶½­´¹«±¸¨®²¢ª° ¨±š¥¬—£«•¡¬•¡¯“ ¬’¡­ ®Ÿ­Ÿ­ž­ŒŸ« ¯ ¯ž­ŒŸ®ž¯‹›«‹œ­ˆœ¬Šš­ˆ™­‰š«ˆ›ª†šª…˜§‚—¨ƒ˜©‚˜ª—©–ª€•©•ª|”©}•ª{•¬}–¬—¬ƒ˜¬‚˜ª†˜«‰™©‰™©ˆ›ª‰š©Ššªˆ›ªŠ›ªŽ›ªœ«œ¦Žš¢™¢Ž™ —Ž–œŽ–œŽ•šŽ”˜Ž‘”ŽŽŽŽ‰‰†…Ž~{uŽvmri‘na‘eU]KZES=Q9O7M5‘M4’P6”T<•W?–ZD”[F[GŒ\K‡YJ~XLuWKjTMcRP[RQSQRMORHNTFMRDLRBMTALSAIR@HQ@HQ@HQ@HQ@HQ@HQ@HQ@HQ@HQ@HQ@HQ@HQ@HQ@HQ@HQ@HQ@JP@JP@JP@JP@HQ@HQ@HQ@HQ@HQ@HQ@HQ@HQ@HQ@HQ@HQ@HQ@HQ@HQ@HQ@HQ@HQ@HQ@HQ@HQ@HQ@HQ@HQ@HQ@HQ@HQ@HQ@JPGQWHRXKU[LW\P[`OY_PX^W^cbjp…‰‘˜—ž£œ¤ª£«±§®³ª±¹ª²¸­µ¸¯¶»±¹¿³½À³»¾·ÀÁ»ÂľÈÊÄÊËÊÍÍÎÑÎÐÑÏÑÒÍÕÖÑÚÛÖÝÝ×ÝÝ×ÝÝ×ÝÝ×ÝÝ×ÝÝ×ÝÝ×ÝÝ×ÝÝ×ÝÝ×ÝÝ×ÝÝ×ÝÝ×ÝÝ×ÝÝ×ÞÞØÞÞØÞÜÖÞÜÖßÝ×ßÝ×ÞÜÖÜÚÔØÖÐÔÔÎÍÎÉÊÌÈÄÇÄ¿ÂÂÀÁ½ÀûÀø¿Á·¾Àµ»¿´»À´º¾³º¼´¼¿¸¿ÁºÀÁºÀÁ»ÂÁ»Ä¾ÆÃÂÈÅÇÊÇÌÌÉÎÎËÍÎÉÎÎËÎÎËÎÏÍÎÏÊÎÏÊÏÏÌÍÎÌËÌÊÊËÉËÌÊËÍÉÍÏËÍÏËËÍÉÉÉÃȾȺ³Ä°¥»š‹¢nX•U=“Q7’P6N4N4’Q8˜[D¡kV™\EN4ŽJ1’N5ŽJ1ŽH0ŽI/H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.ŽJ1L3J0J0J0K2”S:š\D¡hRªo®”‹°˜±–Œ±š’±›”°–ª¡ ¡£© £ª¡Ÿ£šœŸ–š •™Ÿ‘—žŽ“œ‹’š‹“ž‹™‰š„™‚‹—ƒ‹–‡“ˆŽ’‡‹‘‹ŒŽ‹ŽŽŽŒ“ŽŽ•Ž—‹–‰š’Œš’Œš’Œ™‘Ž˜’Ž”‘Ž”Œ“‘“’‘–“™”‘›•‘›—‘–”œ–’—–•–•””•–‘“••˜“–•˜Œ”—‹“™ˆ“˜‡’™…’˜€™Œ˜‚Ž–‚Ž™„›„›ƒ‘š„’›†”ˆ”œˆ“‰”žˆ”Ÿ‡“ž„›ƒšƒ‘š…“œ…‘œ‡’œ†’š‰•Œ–Ÿ‹—•›‹–›‹—Œ˜ž‰”™„Ž~†‰v€ƒt|r|u‚~ˆ‹Š•šš Ž™žŽš Žš šŸ’œ¢’œ¢‘›¡’œ¢‘œ£Žš¢™¡›¤œ§‘Ÿ¨•Ÿ¨•Ÿ¨™¡ªš¢«›£¬ž¦¬ §¯Ÿ¦®œ¤¯¡§®¡©¯¤¬²©¯³¬³¸¯µ¹°·¹²·º±¸º±·»°¶º°¶½±·½´ºÀµ»Áµ»Á¶¼À·¼¿¸¿Á¹À¼ÂþÄÅÄÆÈÈÊÉÉÌÉÊÍÊÈÊÉÈËÈÈËÈÂÇÇÀÈȾÅÇ»Âĸ¿Ä¶¼À´º¾²¸¼²¸¼¬³¸©±·©±·¨°¶¥¯µ¡«´™¥°™¤±•¢®“¢®Ÿ«Ÿ­ž­ŽŸ®ŒŸ«ž­«ŽŸ®Žž¬‹ž­Šž®‰­‰­‰›®ˆœ¬‡›«†—¨ˆ›ªˆ›¨‡›©…š«„˜¨ƒ˜©„˜¨ƒ—§–§‚”§–ª€–«|–­~–«€–«‚–©ƒ—§†™¨ˆ™ª‰™©ˆ—¦‡˜¤Šš¨‰š©Š›ª‹›©š¦š¦Žš¥Žš¢Ž™ ˜Ÿ‹–›Š’˜ˆ–ˆ”Š”†‰Œ‚ƒ„~{{}vt~sp|lf~g_‚d[‚_U…ZK†VEˆS?ŠO:ŒO8M5ŒI1K2N4N4’P8’T<T?‰S>„SA~RBtQDlPGdPJ[PMTOOLLOGLODKPCKQBLR@JP?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO@JP@JP@JP@JP?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IOBLRLV\LV\ISYITYOW]Yagdkpjqvry~‡•”œ¢›¢ªœ¤ª¢©®¦®´¨°¶ª±¶«³¹¬´º­·º±»¾²º½´¼¿·¾ÀºÃÄÁÉÉÇÌÌÊÏÌÍÐÍÏÑÍÔÕÐÙÚÕÜÜÖÜÜÖÝÝ×ÝÝ×ÝÝ×ÝÝ×ÝÝ×ÝÝ×ÝÝ×ÝÝ×ÝÝ×ÝÝ×ÝÝ×ÝÝ×ÝÝ×ÝÝ×ÞÞØÞÞØÞÞØÞÜÖßÜÕÞÛÔÛÙÓØØÒÔÕÐÐÑÌÍÎÉÉÊÈ¿ÅüÁÁº½À¶¹½´º¾´º¾³¸»²¹¾²¹¾²¹»´»½·½¾¹À¿¹¿À»Á»ÂÁ½ÄÿÆÅÂÇÄÉÊÈÌÍËÌÍËÌÍËÎÎËÍÎÉÌÍÈÌÍÈÍÎÉÎÎËËÍÉÉÌÉÌÍËÍÎÌÍÏËÌÎÊÉÌÉÄÇÄÂÁÀý¹Ãµ®¼¡—¨u`™[C•T;–V>˜[D™[CœaL£oYª{k£nZ˜[D–U?–V>’N5J0ŽI/I0ŒH/ŽI/H.ŽI/H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.ŽI/ŽI/ŽI/ŽI/ŽI/‘N3š\DcL£oY§xf¨}kªm«}kªm«†w®›¥£ª¤¢©£ £ ˜›Ÿ’— —Ÿ–žŠ‘™†Ž™…œ‡œ‡Ž˜…Œ–…–ˆŽ•‰“ŠŒŒ’Ž’Ž’Œ•‹•‹˜Š™Œ™‘‹›‘‹›‰œ‘Š™’š“Ž˜’Ž˜’Ž˜’Œ™“™”‘••Ÿ”Ÿ•œ–˜–“–––“”•‘“•“–Ž”˜Ž“–‹•˜ˆ“˜‰“™†’˜„˜ƒŽ˜ƒŽ˜‚Ž–‚Ž™€™‚Žœ‚›ƒ‘š†“™†’š„‘„‘ƒ’œƒšƒšŽšŽš˜ƒ‘šƒ‘š†’šŠ”‹–‹–ˆ”š‡’—ˆ”š‡“™„Ž”|ƒˆoy|owzpz}qx}oy|x‚…ˆ“˜˜Ÿ˜Ÿ‹—Œ˜ž˜ŸŽ™ š ™ŸšŸ™¡™ŸŒ˜ ˜¢Žš¥›£“¦“¦”Ÿ¦• §–¡¨–¡¨–¡¨˜¢«š¢«§­ ª°£«±¦®´©±·¬³¸­´¶®µ·¯¶¸¯¶¸®µº­´¹¯µ¼±·¾³·¿±µ½±·¾´¸Àµº½¶¼À·¾ÀºÀľÄÅ¿ÆÅÁÈÇÄÇÇÆÉÉÆÉÉÃÈÈÂÇǾÅĽÅŹÃÆ·¿Â´ºÀ²¸¾²¸¿¯µ¼­³º«²º§±º¦®·¥­¶£­¶œ©µ˜§³”£² ¯Žž®«Œœª‹›«Œœ¬­‹œ«‹œ«Œ¬‰œ«ˆ›ªˆ›ªˆš­ˆš­ˆ™ªˆ›ªˆ™ª‡š©ˆ›§ˆ™¨…™©„˜¨…–§‚—¨ƒ˜©‚—«—©‚–¦•¨€•©‚”§‚–©ƒ–¥„•¡†–¡‡– ‰• ‰–¢Š™¥‹š¦‹š¦‹š¦‹—¢Œ˜ Ž˜¡Œ˜ ˜Ÿ‹–‹•›‡‘—ˆ{…|‚†|‚†x}€rtvmnokhhjbbl_\n\VqZRvWMyUI|QB€P=„N9‡K8‰I4‹I1ŒI1ŽK3N4M3ŒN6ŠN8…O:}M<vM>nMAeNF^MKULKNLMGJNCIOBIQ@HN?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO@JP@JP@JP@JP?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO@JPGQWJUZITYKU[W_ehotov{y€…ˆ‘˜™ ¨›¢ªš¡¦¥«¢ª°§¯µ¦°³©³¶ª´·ª´·®¸»°¸»²º½µ¼¾¹À¼ÅƾÈÇÂÉÈÆÌÉÍÐÍÑÓÍÖ×ÒÛÜ×ÜÜÖÝÝ×ÝÝ×ÝÝ×ÝÝ×ÝÝ×ÝÝ×ÝÝ×ÝÝ×ÝÝ×ÝÝ×ÝÝ×ÝÝ×ÝÝ×ÝÝ×ÝÝ×ÜÜÖÝÝ×ÝÛÕÜÚÔÚØÒØØÒÖÖÐÓÓÍÐÐÊÍÎÉÉÊȾÅļÁÁ¸º½³¸»®µº¯´·¯µ¹®µ·®µº®¶¹±¸º¶¼À¹¿À¹¿À¸¿¾»ÀÀ»Á½ÄÃÁÇÅÄÇÄÉÊÈËÊÉËÌÊÌÍÈËÌÄËÌÇÌÍÈÍÎÉÍÍÊÌÍËÉÌÉÊÌÈÊÌÈÌÍËËÌÊÆÈÄÀÅÅ¿ÀÁ¿½»À¶³¼¤™®m eP˜ZB™\E eP¤lW§wd­‰{°…«‰}¥xg kW™^I—YA“R9M2ŽI/H.H.H.ŽI/H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.I.I.I.I.I.“P5˜X@˜X@›_F`Iš]FœbKžeO¡iT¬ˆx«Ÿ§¡¤§¡£¢ŸŸ˜š ’–¡– Ž–¡‹“œ†Ž™…Žš…˜„™…˜‰–ŠŽ”‹“‹“ŒŽ‘Ž’Ž•–Š•‹™‰™‘‹›‘‹šŠœ‘‡ž’Š’ˆ ‘‡ž’Šœ‘Šœ’Œœ’Œœ’Œ“ ’‹ “¡“Œ¡“ŒŸ•š•’™”‘–•”“”•’“”•˜Œ”—‹•˜Š”—ˆ’•‡’•‡’•ƒ—‚Ž–˜~‹—€Œ—˜€Œš€Œš€™‚Ž™‚™ŽšŒ˜€›€™~‹—€Œ—˜€™€™ƒš…‘œˆ“šˆ“š„–€Šv€ƒv†ozblo^fl_fkX`f^ejdnqfpsw„‡’—Œ˜žŒ˜žŒ˜žŒ—œ˜˜›˜˜™Ÿš ‹˜žŒ˜ Œš£›¤Žœ£›£Žš¢Žš¢£“¦‘¥‘¥œ§“Ÿ§–¢ª›¥®Ÿ©¯¢¬²£®³§±´§±´©±´ª²µ«²·ª±¶©±·¬²¹¬±º­³º¬±º¬²¹¯´½±·½´ºÀ´ºÀ¶¼Â¸¾Â»ÂľÁÄ¿ÄÄÃÆÉÀÆÇÁÆÉÀÆÇ»ÂĸÁ¸À÷¾À¶¼À³¹¿²¸¿°·¿­´¼§¯¸¥¯¸¤®·£®¸¡ª¶œ©µ˜¨¶’£² ¯‹ž­ŠªŠšª‰œ©‰š«Ššª‰œ«‹›©Ššª‰š©ˆ›ªˆ›ª‰š«†šª…™©‡›©†šª‡˜©‡š¦ˆ˜¨†™¨„˜«‚—¨‚—¨ƒ—§ƒ—ª—©‚–©•¨€•¦•¥ƒ”£…”ž†“™ƒŽ•ƒŽ•…—†’šˆ–Ÿ‰˜¢Š–¡‰— Š–ž‰•‹–Š”šˆ’˜ˆ’˜‡•}…‹qx}gnsgnshotdjn_ei\_b\]^\YY^VVbURgTOiRJnNCsN?yN?}L:€H4„H2‡I1‰I1ŠI0‹J1ŒL4ˆK4„I4~J7xL<pM@gKB^JDWIHPJLHHKDHNCIP@HN?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO@JP@JP@JP@JP?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IOBLREPUFPVLV\bint{€€ˆ‹„Œ•›•œ¡™¡§˜ ¦š¢¨Ÿ§­£ª¯§®³¦­²¦°³¨³¸§²·ª´·¬µ¶®´µ®¶¶³»»¹ÂûÃüÅÃÂÊÇÊÏËÏÑÍÖ×ÒÙÛÔÜÜÖÜÜÖÜÜÖÝÝ×ÝÝ×ÝÝ×ÝÝ×ÝÝ×ÝÝ×ÝÝ×ÝÝ×ÝÝ×ÝÝ×ÝÝ×ÝÝ×ÝÝ×ÜÜÖÜÜÖÛÛÕÙÙÓ××ÑÔÕÐÐÑÌÐÐÊÌÍÈÊÌÈÄÇľÅÄ»Áµº½°¶º¬²¶¬²¶¬²¶¬²¶­³·­´¹®¶¹´º¾¶½¿¶½¿¸¾¿¸¿¾ºÀÁ¼Ã¾ÅÄÁÇÄÆÊÄÉËÇÊÊÇÉÊÅÊÊÇÊÊÇÌÍËÍÍÊÍÎÌËÌÊÉËÇÉÊÅÈÊÄÈÉÇÅÈÈÀÇƼÃÅ»Àü¼¼½·³¼©Ÿµ}©u_ eM fO¡lU§va­†v¯˜­ž™©˜–¥Ž‰¢‚yŸtglZšdO–X@‘O5K2J0ŽI/ŽI/ŽI/ŽI/ŽI/ŽI/ŽI/ŽI/ŽI/ŽI/ŽI/ŽI/ŽI/ŽI/ŽI/ŽI/ŽI/ŽI/ŽI/ŽI/ŽI/ŽI/ŽI/ŽI/ŽI/ŽI/ŽI/ŽI/ŽI/ŽI/ŽI/ŽI/ŽI/ŽI/ŽI/ŽI/ŽI/ŽI/ŽI/ŽI/ŽI/ŽI/ŽI/ŽI/ŽI/ŽI/ŽI/ŽI/ŽI/ŽI/ŽI/ŽI/ŽI/ŽI/ŽI/ŽI/ŽI/ŽI/ŽI/ŽI/J/J/J/J/J/J/’M1’O4”O3“P5“Q7–T:š]F¨|i­‚­Š}®š”§ŸŸ¢Ÿ¢™™Ÿ—¢‹“ž‹“žˆ›„™ƒŒ˜ƒ‹–„Œ•‰“‹•‹“‘’‘’‘“Ž‹•—ˆ™‰šŠ›‰›‰‘‰Ÿ† ‘‡ ‘… ‘‡ ‘‰Ÿ‘Š›“Šœ’Œ“’‹ ’‰¡“Š¢“‹¡“Œ¡•“œ”Ž—”•••“”•““Œ“•Œ“•Š’•‰“–‡’•†‘–…‘—„––Ž–€Ž—~Œ•‹–€Œ—|‹•‹™~‹—‹™‹™}Œ˜{‹™|‰•}Š–{ˆ”|‰•~Š˜€Œšƒš…“œ†“™‚’s~ƒgnsZbhPX^JUZEPUCNSEPUFQVPX^PZ`Yagu‚‡’—‹—‹—Œ—œ‹–›˜›Ž˜š˜›Ž™œŽ™œŒ™ŸŒ˜žŒ˜žš ™¡œ¢œ¢œ¢Œš£Œ˜ ™¡Ž™£š¤Žš¥›£” ¨—£«™¥­œ§®Ÿ©¯Ÿª¯ «°¢¬²¥­³¥­³£­³¢­´¤¬µ¥¬´¥­¸§®¸¦­µ¨¯¹­³º¯µ»²¸¿³¹¿·½Á¹¿Ã»ÀüÁļÃŽÄƾÄŽÅżÃŸÀõ½À²ºÀ´ºÁ³ºÂ¯·À­µ¾©³¼§±º¤¯¹¥¯¸¥¯¸¡­µœ«µ—¦²“¤³¢±Œ °‰­ˆœ¬‰œ«‰š©Š›ªŠ›ª‹›«‹›©‰œ«‹ž­ ¯ ¯Š¬‡š©„™¨†™¨ˆ›ªˆ˜¦ˆ—£ˆ˜¨‡˜©‡—§…–§†–¦…˜§„•¤‚–¦‚–©‚–¦„”¤…•£…”ž‚”‹‘Š‰Œ‰‚”„˜…‘™†‘˜‡‘—†–…•„Œ’ƒ‹‘‹Ž}„‰q{~bloV^dT\bS[aOW]MU[NTXPUXQSVUSTYQQ\OL`MHeMDlMCqM?tI:{J8J6‚I4…I3‡I1‡J3ˆK4„I4J6xI9qI;jH?aJEYHFPHHJIKFIMCIP@HN?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO@JP@JP@JP@JP?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IOAIREOUOW]aknrz€~ˆ‹…Œ”š–ž¤œ¦¬™¥«œ¤ª ¨®¥¬±ª²¸©³¹©±·¨³¸©³¶ª²µ«²´«±²¬²³²ºº¸ÀÀ»ÃýÅÅÀÈÅÇÌÉÌÑÍÒÔÐØÙÔÚÛÖÜÜÖÜÜÖÜÜÖÜÜÖÝÝ×ÝÝ×ÝÝ×ÝÝ×ÝÝ×ÝÝ×ÜÝÕÜÜÖÝÝ×ÝÝ×ÛÜ×ÚÚÔØÙÔÖ×ÒÓÔÏÑÒÍÍÏËÌÍÈËÌÇÈÉÄÄÇÄ¿ÅüÂ÷½Á´º¾¯¶»­³¹«±·ª°¶¨¯´©¯µ«±·­´¹±·»´º¾µ»¿µ»¿¶½¿¶½¿ºÀÁ»ÃýÅÂÂÇÄÆÈÂÇÉÂÇÇÁÈÉÄÇÉÅÉÌÉÌÍËÌÌÉÊÊÊÉÊÈÇÉÃÆÉÆÄÇÄÃÆƾÄŸ¿Áµ¼Áµ¸»º´³»©£¶~«ze¥pY¨t^ªzg­€l°Šx¯“ˆ¬•¤’Žœ‹˜ƒƒ–zt•qešgX—[E–U<“R9’O4K1I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.J/J/J/J/J/‘K0‘K0‘L0’M1‘K0“N2“P5›]E¤uc¥ub«o®—§ž¢Ÿ¢–š¢‘˜ ‰”ž‡’ž†›ƒŒ˜…Œ”†•‡“‘Ž’‘’’‘”‘Ž—‘—ˆ™‘ˆ™‰›‰›‰†‘‰ ‡¡‘† ‘…¡‘ƒ¢’‡¢‘…Ÿ‘ˆŸ‘ˆŸ‘ŠŸ‘Š¡’Š¡’Š¡’ˆ¡’ˆ ”ŒŸ‘Š’‹™“˜“”’’’’‘Œ’“‹’”‰‘”ˆ’•‡‘”…•…‘—„–„‘—˜˜•‚—–{ˆ”|‰•zŠ•{Š”z‰•x‰•wˆ”z‰•|ˆ–{ˆ”|‹•{Š–}Œ–š„’›ƒ•w‚‡cmpMW]KV[DNT@JP?IO?IO?IODOTDNTDNTMX]mx}…‘—Š–œŒ—š‹–›Œ–™‹–™‹–™‹–™‹–™Œ—œ‹˜›Š—š‰•›‹—Œ˜žŽš Ž›¡š Š˜¡Š˜¡‰— Š–¡‹—¢Œ˜£Žš¢‘¥” ¨–¢ª™£¬—£«˜£ª—¢©š¥¬›§­Ÿª±Ÿª±§°™¥­š¥±ž¦±Ÿ©²¢ª³¤«³¨®µ«±¸­³¹±·½µ¹¿µ»Á¸½À¹¼ÃºÀĹ¿À¸¿Á»ÂĺÁö¾Á³º¿±¹¿¯·½¯·À¯¶¾¬²¹¨°¹£¯·¤¯¶¥­¶¥¯¸¡­µœ©µ—¦²’£²Ž¡°‹°ŠŸ°Šž¬‰«ŽŸ®‘¡±Ž¡° ¯Ž¡° ±Ÿ²¡²Ž¡°‰œ«‡š§ˆ›¨‡š§‰š©Š™¥‰˜¤Š—¦ˆ—£ˆ—£‡—¥‡—¥‡—¥…–¥„—¦„•¦„•¤„•¤…” …‘™„Ž”€‹}…‹v}‚r|v~„{ƒ‰}…‹}…‹|„Š{ƒ‰z†y‡y‡x€†rz€gouW_eKV[HSXGQWCMSBLRCKQELQJORLNQLKMPIJTIF]JEbJDiJBnJ>sJ;xI9}I6I4‚I4‚I4I5~I7xI9sJ;lI?dIA]ICTIFMJJHHKDHNAHM?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO@HQ@HQ@HQ@HQ?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO@JPDNTHRXP[`ckqlvyt~‰Œ‘™Ÿž¨®¤¬²¢ª°£«±¨²¸­µ»®¸¾¯¹¿®¶¼¬´º©³¶¨¯±©¯°©¯°­³´±¹¹´»½¸¿Á¼ÄÄÀÆÄÃÉÇÊÍÊÐÒÎÖ×ÒÙÚÕÛÛÕÛÜÔÜÜÖÝÝ×ÝÝ×ÜÜÖÝÝ×ÜÜÖÝÝ×ÜÝÕÜÝÕÜÝÕÝÝ×ÛÜ×ÖØÑÔÕÐÓÔÏÑÒÍÍÏËËÍÉÈÈÂÄÆÀÃÅÁÃÄ¿ÀÁ¿¼ÁÁ·½¾²¸¾±¶¹¯´·­³¹¬²¶«±µ©¯³¥¬±¨®µ©°µ¯µ¹±·½°¶¼³¹¿µ»¿µ¼¾¸¾¿¹À¿»ÂÁ½ÄÃÂÅÂÅÆÁÃÅÁÃÆÃÅÉÃÇÊÇÉËÇÉÊÈÈÉÇÇÊÇÄÉÅÃÉÇÀÇÆ¿ÄļÁĵ¼¾³¹½²µ¸¶±±¸ª¦¶•†¯„r¬}k¬}k®‚o±Œ{°‚¯‹}ª…v¢‡–„‚}zto‘md•eW•]I”XB“S;’P6K1I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.‘I.‘I.‘I.‘I.‘I.‘I.’J/“M0“M0”N1’M1”N1–S8›]E¤pZ¬…u­”ˆ¤›šœ¡—šž– Œ”ˆ›†Ž™…–ˆŽ”Œ“’‘‘‘‘’”‘Ž˜‘Œš’Œ›‰‘‰‘‰ž‡ …ž‡¡‘†¡†¢…¢‘…¡„¢‘… ‘‡ ‘‡ ‘‰Ÿ†¡‘†¢…¡Ž‚¡†¢’‡¢’‡ ‘‡’‹œ’Œš’Œ•’Ž’’Ž‘‘‹’‘‹““‰’“ˆ“‡‘”…•…•…•ƒ•‚Ž––•‚Ž–˜€Œ”|‹•w†’wˆ”uˆ”v‰•v‰•v‰–uˆ”v‰•wŠ–z‰•yŠ–z‹—}Žšƒ‘š€Œ’r|gqtV^dKU[GQWBLRCNS@JP?IOBLR?IOBLRNV\mwzƒŽ“Š•˜Š•š‰”—Š•˜Š•˜‰””ˆ••‰”—Š•˜ˆ–—‰–™ˆ”šŠ—‹—Œ—žš š š ‹™¢Š˜Ÿ‹—ŸŒ˜ ›¤›££‘ž¤‘¥‘¥’¤›¢‘œ£’ž¦—£«™¥­™¥­–¢­•¡¬—¢¯™¥°™¥°š¦®Ÿ©² ª³¦­µ©¯¶®´¸±¶¹´¸¾¶»¾·ºÁ´ºÁ³¹½´ºÀ·½Áµ¼Á±¸½¯·½­µ»­´¼­´¼­´¹«³¹¨²¸¥°µ¦±¶¦±¸£¯· ¬·š©³“¤³¡±ˆŸ®†œ®‡¯ˆŸ®‰ ¯‹ ±£³£±£±Ž¢²’¢²‘¡±‘¡±Š¬ˆ›¨ˆ›¨ˆ™¨‡š¦‰˜¤ˆ–Ÿˆ“‡’œ†’ˆ”Ÿ‰• ˆ•¡ˆ—£†—¦†–¤†•¡…” …’ž„’›ƒŽ•€‹’~ˆŽw…oy|kuxjrxlsxlvyow}nv|jtwjqvlvypx~nv|fpsX`fMW]FPVDNT@JP?IO?IO?IO@HNDJQDJPFIMKHKOHIRHFZHD`IDeI@lI?pI<tI:xI9{J8|I7zJ9xI9rI:lI?fH?^HDXIGPHHJIKEHLCIM@HN?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IODNTFQVLV\Yagepukv{r}‚ˆ’˜˜£ª¥¯µ¬´º¬´½¬´º¯·½²ºÀ±»¾³½Àµ½Ã¯¶»¨®²¦­¯§®°®³¶®¶¶°¸¸´º»·¾À½ÅÅ¿ÉÈÄÊÈÉËÇÐÑÌÓÕÎÖØÑ×ØÓÙÚÒÜÜÖÜÜÖÜÜÖÜÜÖÝÛÕÛÛÕÜÜÖÜÚÔÞÛÔÜÜÖÚÛÖ×ØÓÒÓÎÎÐÌÌÏÌËÍÉÈËÈÄÇÄÂÅ¿Á½¿À»½½·»»¸¶¸º³¸»®´¸­±·­±·ª°¶©¯³ª°·¨®µ¢©®¤«³§­´«±µ­³¹­³¹¯µ»±·¾²¸¼´º¾´»½·½¾º½À½¿Á¾ÁÁ¾ÁÁ½ÃÁ¿ÅÃÂÅÅÃÈÄÅÇÁÃÆÃÃÈÄÂÈÆÀÆÄ¿ÄľÁĸ½Àµ»¿³·½²´·´¯¯¶«¨¶ —µ—‹²€±‰x±Šz°‘„®’‡ªˆ|§|mŸv“|w’vp‘nfg[’_P’ZF”V>“R9‘N3‘I.H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-H-‘I.‘I.‘I.‘I.’J/”N1‘K0“M0”N1”N1’M1•P4”T9¡gP§|jª‰z¦“Œž˜š—™Ÿ’˜ž‘—’”š”—‹‘—Œ–Ž‘•’‘“–‘‘™’™’›“ ’‰ ‘‡¢‘…¡‘†¢‘…¡„¢‘…¡„£†¡‘ˆ … ‘…¡‘† ‡ Ž…Ÿˆ‘‰ž‡œˆŸ„ Œ Œ ‡Ÿˆ†›‰šŠ—‹”‘ŒŠ‘ˆ†……’„Ž‘„Ž‘„”ƒŽ“ƒŽ“‚Ž”‚’‚”€Œ”‹–{Š”v‡“s†’sƒ“s„“s†•uˆ•s†•uˆ—v‰˜wˆ—{Š–{Š–}˜–‹‘s}€hru]ekOW]FQVCMSMU[EOU?IO?IO?IOEOUU]cmwz€ŠŒˆ“–Š”–‰”—‡’•‡’•‡’’‡””†““‡’•‡’•‡”—†”˜†’˜‡•–ˆ•˜‰•›Š–œ‹—™Ÿ™ŸŒ˜žŒ˜ ‹˜ž‰—ž‰—ž‰—ž‹—‰•Š–ž‰•Š•œ™¡‘Ÿ¨” «• ­“ž«’ž©•¡¯•¡¬–¢­—¢¬™¤°œ¦¯£«´¨®µ¨°¶­³·°¶º³·½³¸»±·½¯µ»°¶½°¶½±·¾­·½­µ»®µ½«µ»®´»®µº¬´º¨²¸§±·¦±¶¥±·£¯·ž¬µ˜§³’¥²‰ ¯…­†¬…­…­†ž®‰ ¯Œ¡²£±£³’£²“£±’£²¡°‹ž­ˆ™¨‡š¦‰™§‰–¢‡“›‚Œ’~ˆŽ|„Š~‰€Œ”„˜‡’œˆ”Ÿ†•Ÿ†“Ÿ…‘œ‚Ž–€‹’Š‘|†Œw‚‡u}ƒlvyfmrblo_fk^ej_gm_gm]diYag[bgblogoubloX`fPX^HRXALQ?IO?IO?IO?IO?IO?IO@HNCIMCIOFIMIHJNHJQHGYHF]ICbHBiI>lI?pI<rI:rI:rI:pI<lI?fH?`IAYHFQHGKIJGILCIOAHM?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IOCMSFPVMX][ekfpvny€xƒŠˆ’›–¡¨¤®´«³¹¬´º¬´·¯¶»¶½Â¸ÀùÁĸÀñ¸½¬²¶«²´¯µ¹®µ·²ºº´¼¼·¿Â»ÄžÆÆÃÉÇÈËÈËÍÉÐÑÌÒÓÎÕÖÑØÙÑØÙÔÜÜÖÜÜÖÜÜÖÝÛÕÝÛÕÜÚÔÛÛÕÝÚÖÛÙÓÙÙÓÖÖÐÐÑÌÍÎÉÉÌÉÆÉÆÄÉÅÀÆĽÀÀ¼¿¿º½½¸º¹¶µ´³´µ°³¶¬²¶©°µ§­´©¯³©¯³¦­²§­´£ª²¢¨¯¢¨¯¤«³¦¬³§­´ª°·ª°´­³·¯³¹°µ¸²·º³¸»µº½·½¾¹¾¾º¿¿»¾Á¼ÁÁ¼ÁÁ½ÃÁ¿ÄÁÀÅ¿ÅþĽ»ÀÀ»À÷½Á²¸¾°´º°°³±¯°´«ª²§¢±¡›´œ‘³”‡±‘ƒ­’ˆ§„¥ƒw¡zj˜xotnneh\`R[I‘W@’R7’P6M/J-J-J-J-J-J-J-J-J-J-J-J-J-J-J-J-J-J-J-J-J-J-J-J-J-J-J-J-J-J-J-J-J-J-J-J-J-J-J-J-J-J-J-J-J-J-J-J-J-J-J-J-J-J-J-J-J-J-J-J-“J.“J.“J.”K/–P3•P4–P3–Q5—R6—T9•U:œ`G¢oZ¥}l¦…y£Œ„¡Ž›”•˜“—”–™•—š—–˜—–•”•––”’˜“š“‘œ’ž‘‹¡“Œ£“ˆ£’†£’†£’†¤‘…¡‘†¢‘…¢‘…¢‘…¡„¡‘†Ÿ†Ÿ†ž‡›††œˆ›‡›†šŒ…›‰€œˆ}œŠ‚œƒ›Œ‚˜†–Œ†“‡‘ŽŠŽ‰Ž‹†Œ…ƒŒ‚ŒŽ‚Šˆ‰‹Ž‚ŒŒ‘Œ‘€‹‚Œ’Œ“‹“}‰”wˆ”s„“q‚“q„“q‘r…”r‚’rƒ’t…”v†–wŠ–}Œ–~—€™Ž”y„‰owz`glNV\EPUGOUDLRDOTCNS?IO?IO@JPHSXZafiqt|„‡†‘”‡’•†‘‘…‡‘“……’’…’’…“…“…’•„’–…’•„‘”…“†‘”„‘”…’•…‘—…‘—…‘—„–„‘—••„‘—ƒ—‚Ž–ƒ—‚‘™‚‘›†•Ÿ†–¡š¦‘œ©’ž©” «•¡¬•¡¬•¡¬˜£­›¥®œ§®£ª²¥¬´§®³«±¸®´¸¯µ»¯³¹­³¹«±·«±¸­³º®´»­µ»­µ»¯µ¹¯µ¼¯µ¼®µº­´¹¨³º§²·¦²¸¥°µ£¯·œ«µ˜¨³’¥±ŠŸ°†ž°‡¯†ž®†ž®…­‰Ÿ±‹ ±‘¤±‘¢±’¥´•¥³’£²’¢°Œœª‰™§ˆ˜£‰— ‡“›‚’s}€kuxjtwoy|s~ƒ{ƒ‰‰Œ“•€Œ”Š‘w‚‡s}€p{€nx{lvyeor_fk]di[bgY`eS]`S]`S]`OY\NX[NY^Zbh^fl[bgQY_NV\GRWALQ?IO?IO?IO?IO?IO?IO?IO@HNAHMCIOEHLHHKMHKPHHUHEZHD`IDdIAhI?iI>iI>iI>hI?eI@]HBYHFQHGNHJHHKEHLCIM@HN?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IOBMREPUITYX`f^inju|s‡€Œ”˜Ÿ˜£ªŸª¯§¯µª´·°·¼·¿ÂºÃļÅÆ»ÄŹÁÄ·¿Â¶¾Áµ¼Á°¸»³»¾´½¾¸Á½ÆÇÁÉÉÂÉÈÇÌÉÊÍÊÌÎÊÑÒÍÖ×ÒÙÚÒÚÛÓÜÜÖÝÝ×ÝÝ×ÝÝ×ÝÝ×ÛÙÓÛÙÓÙ×Ñ××ÑÒÒÌÎÏÊÊÌÈÉÊÅÇÊÇÃÉÇÀÈźÁÀ¸¿¾·½¾´º»±´´°±²­²²ª°´¨®µ¥¬±£ª²£ª¯¤«°¥¬´¡¨²œ¦¯œ¦¯œ§®Ÿ¦®¢©±¤«³¥¬´§­³©¯³«±·­²µ®´¸®´¸±¶¹³¹½µº½µº½¸»¾¹¾¾º¿¿»ÀÀºÀÁ½ÀÀ¼ÁÁº¿¿¹¾¾¸»¾·¼¿´ºÀ±µ½®±¸­¯²¯­®°ª©¯¨¦¯¤Ÿ¯Ÿ™±˜Œ®‹~ª‹~£‡~Ÿ€xšym“shmdfZ‘`Q[I’V@’R:“P5‘L0‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.’K-’K-’K-•O2—Q4–P3™W:aHŸeN eM¢lW¢vc¤{i¥€q¢„{¡Š…ž‹˜Ž˜‘’˜’”™””š——›–––”• ”Ž •Ž¢”¤“‡£“Š¥’†¤‘„¥‘†£ƒ£„¢‚¢ƒ¡‘† …Ÿ„ž‡†œˆšˆ™Ž‡˜†˜Œ„–Š‚“„|’€w”~u”w–„{–‡}—ˆ~•‰“‰ƒ’ˆ‚Œ†ŒŠ‡‰Œ‰†ŒŠ…‹Œ‚‹Œ‚‰‹~‡ˆ~‡ˆ}…ˆ|„‡}…ˆ~ˆ‹|†‰€‡Œ€‡Œ‰Œ}‰‘~‹‘|Š“s„o‚‘np’rƒ’r‚’w†’xˆ“z‰•}Œ––”€“z…Šoy|cmpY`eGOUAIO?IO?IO?IO?IO?IO?IO@KPOW]aknq{~~ˆ‹ƒ‚ŒŽ€‰Š{ƒ†€ŠŒƒ‚‚‚ƒŽ‘…“…“„’“„’“…“…“‚‘“„’“„‘”„–„‘”‚‘’€Ž’‚Ž”‚•Ž”€Ž•~—–~•}˜Žš…”žŠ—£›¦©”Ÿ©“Ÿª—¢¬˜£­š¤­›¦­Ÿ§­¡©¯£ª¯¤«°§¯µª±¶«²·ª±¶©°µ©¯¶«±¸­³·¬²¶¬³¸®´¸®´¸®´»¯µ¹¬´ºª´ºª´º©³¹¨°¶¤±·¡­µž¬µ–§³£³ŠŸ³ˆž°‰Ÿ±ˆ ²ˆž°Š ²¡±’¥´”¥´”¤²•¤°”¤¯”£­‘žªŠ—£ˆ–Ÿ†’šŠs{~dloZbh\chbinfmrisvpz}u…x‚ˆw‡r|‚jrxdnqaknakn^ejU]cRZ`S]`R\_PX^MU[GRWGRWGRWLTZOW]T\bYagV^dMX]IQWFNT@JP?IO?IO?IO@JP?IO?IO?IO?IO@HNAHMBHNDHNFHKKHKOHIRHFXIG[HC]HB`IAaIC`ID]HB[HCXIGQHGNHJIHJEHLCIO@HN?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO?IO@JP@JP@KPFQVS]c\flbmtlx€w‚‰~‰‡’™“ž¥š¦¬¦°³¯¶»·¾ÀºÃļÅƽÆǽÆǼÅƻğÀó½À²¼¿µ½À·ÀÁ¼ÆÅÃÊÉÅËÉÇÌÉÊÍÊÍÏËÓÔÏ×ØÓÙÚÒÚÛÓÜÝÕÜÝÕÜÝØÝÝ×ÝÝ×ÜÚÔÙ×Ñ×ÕÏÔÔÎÎÎÈËÌÄÉËÅÉÊÈÄÊÈÀÈÅ»ÂÁ·¿¿¶¼½´¹¼¯¶¸­³´©¯°©¬¯§­±¤«³Ÿ§°ž¦¯ ¨®¢©±¡©²Ÿ§°™¢®œ¤­œ¤­œ¤¯›¦­ž¨®¡¨­¥«¯§ª­§­³©¯³¨®´¨®²¬±´¯µ¹°´º±·½´¹¼µ¸»·º½·¼¿¸»¾·º½·¹»·º½·º½³·½°¶½°¶½®´º¬°¶­¬®¯ªª®©©¬¦¥¬¢Ÿ«™«”Œª‡z¦ƒvv™zp’rik_ŽfZ`O’\G‘W@’R:’P6’M1‘K.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.‘I.”K/”K/”K/•N0—Q4–S5›[@žaG eM¢jU¡r`£wg¤xh¤{l¡€t†~›‰…›ŠˆœˆœŠœ’œ–’œ–’ –¡–£”Š¥”ˆ¥’†£“ˆ£’†¤‘„¤‚£ƒ¢‚¡„¡Ž„ ƒžŽƒœŽ…šˆšˆ™‰˜Š—‰”Š„’‡€‚|ˆyq~lcmd†vmŠzqŠ{sxŒy‰|vŠ€zŠ„€‰‡„‰‰†„‰†‚‡‡‡ˆ~…‡|ƒ…z€„v~x€ƒw‚x„x‚…y€…y€…y€…{‚‡{ƒ‰|‡Œ|ˆŽxˆ‘w‡v…‘t„’s„t…‘x‡‘xˆ“~‹‘~Š‹‘~Šwƒ‰oy|fps`gl]diMU[BLR?GM?GM?GM@HN?GMAIOFPVJRXW^cgqtu}€z‚…w‚t|ltwpx{t~w„x‚…z„‡}‡‰€‹„’…“„’„’„„’…“…“…“ƒ“‚‘“ƒ“‚‘“‚Ž”““€Ž•”|Œ•wŠ”v‰•}Œ˜…• ‰–¢Œ˜£™¤š¤‘œ¦’§• ª™£¬œ£«œ¤­ž¦¬ ¨®¤«³¥­³¦®´§®³¨¯´©°µ©°µ©°µ©°µ©°µ«±¸«±¸«²·ª²¸¨°¶©±·©±·§¯µ¤°¶£¯µ¢­´›«¶•¨´£³ ´‹ ´Œ ³¢³£³‘¤³”¥´”§³–¥±•¤®•£¬”¢«“Ÿª™¡‡“›€‹’t|‚dkpT^aPX^V]b[bg\ch]dicmpjqvmu{ltzfnt]ekX`fW_eW^cOW]LTZKSYMU[KSYGOUCMSAIOAIODLRKSYOW]RZ`T\bQY_NV\GOUBLR@HN?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM@GLBHNCGMFHKIHJMHKOGGRHFTIFUHEXIGXIGUHERHFPHHMHKIHJEHLCGMBHOAHP?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?IO?IO?IO?IO?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM@JPIQWOZaS_g]gpfqxmxs}†{…ŽƒŽ•™Ÿ›£©©°µ³º¼ºÁûÄŽÆǽÆǽÆǼÅƹÂô¾Á´¼¿µ½À¶¾Á¼ÆÅÄÊÈÉÌÉÌÎÊÎÏÍÑÒÍÔÕÐÖ×ÒÙÚÒÛÛÕÜÚÔÜÝÕÝÝ×ÜÜÖÜÜÖÜÚÔ×ÕÏÖÖÐÔÔÎÏÏÉÍÎÉÈÌÆÄÉÅÂÈƼÂ÷½¾³¹º±·»°¶º«²·§®³¤ª®£©­Ÿ¦«›§¯™¤±—£®™¤°›¦°œ§±›¦°—¢¬—¡ªš¡«œ£«š¤­š¢«œ¤ª¡§­¤©¬¢©®£ª²¢¨®¥«¯¦­²ª°´«±·®´º°µ¸¯´·°µ¸¯´·¯´·¯²µ°²µ²´·±´¸®²¸«±µ¬²¶ª°¶ª­±ª©«¬©©«¨¥ª£¡©œ™§”¥‹‚¤‚v¡}o›xn–sf’kaŽdXŽ_O‘\H’V@’R:“Q7“M0’J/“J.“J.“J.“J.“J.“J.“J.“J.“J.“J.“J.“J.“J.“J.“J.“J.“J.“J.“J.“J.“J.“J.“J.“J.“J.“J.“J.“J.“J.“J.“J.“J.“J.“J.“J.“J.“J.“J.“J.“J.“J.“J.“J.“J.“J.“J.“J.“J.“J.“J.“J.“J.“J.“J.“J.“J.“J.“J.“J.“J.“J.“J.”K/”K/”L.–O1–Q3™X<›]B`FžfQœlYŸp^ ta¡ub¡xiœ}sš€z™…›†€‰€ †ž‡Š “¢”‹£”Š¤”‰¤”‰¤‘…¤‘…¡‘†¢‘…¡Ž„¡Ž‚ ƒžŽƒŠ€›‹‚™‰€˜Š–‹„”Š„’‹†‘Š…Š†Ž‰†Š€}€tnpc]i[Tk]Yymg€tn‚vp„ytƒyv€vs‚|xƒ€}ƒ‚………‚‚„„{‚x€ƒu}€sz|rz}rz}qy|qy|px{ov{owzowzr|x‚…z…Š|ˆŽ|ˆŽ|‰zˆ‘w†t„’xˆ‘{‰{Š’}‹’~‹‘{‡y…‹oy|^ejS[aRZ`MU[HPVBLR?GM?GM@HN?GMBIQHPVISYCKQCMSMU[_fkfnqiqtfnq]diX_dY`e_fkgorfpsgqts~ƒ€‹Ž‚ƒŽ‘‚ƒŽŽƒŽ‘ƒƒŽŽƒŽ‘ƒ„’’’‚‘“‚”‚”€”~Ž”Ž–|‹•wŠ”uˆ—v‡“v‰•}›~ŽœŽš†’†’‡“ž‰• ˜¤‘œ¦•¦•¦”ž§—¡ªœ¤ªŸ¦«¢ª°¤¬²¤¬²¥­³¦­µ¥­³§®³§®³¦®´¦®´¦­²¤«­¤¬²¥­³£®³¤®´£­³£®µ¢®¶Ÿ­¶—¨´•¥µ’¥´‘¢±£²‘¢®“£±‘¢®’£¯”¡­•¡¬“Ÿª‘¥›¢Œ—ž„Ž”x‚ˆmwz]diOW]OW]V]b[bgZaf[ci_fkcjoakn`jm\chV]bQY_S[aPX^JRXEOUGOUEOUBLR@HN?GM?GM?GM@HNGOUKSYMU[MU[KSYIQWDNT@HN?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM@GLBHOCGMDHNFHKIHJKHHNHJOHIOGGOGGOHIMHKKHKFHKEHLCGMBHO@GL?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?IO?IO?IO?IO?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM@HNBLRHRXKV]OZaWaj^hqbnvkv}o{ƒv‹‚Œ••ž›£©«³¶´¼¿¹ÀºÃĻĿÅƺÃÄ·ÀÁ¶¾Á´¾Á´½¾¸¿Á¾ÅÄÆÉÉÊÍÊÍÎÌÏÐËÑÒÍÔÕÐÕÖÑ×ØÐÚÛÓÛÛÕÜÜÖÜÜÖÜÜÖÜÜÖÛÛÕÙÖÒÒÒÌÒÒÌÎÏÊÌÍÈÆËÄÁÇĽÅ»Á¶¼½±·¸¬´·ª²¸¤¯´¢¬² ¨®œ¦¬›£¬•¢®’¡­Ÿ«Ÿ«’Ÿ«˜¤²˜¤¯–¡«” «” ¨™ ¨™¡ª™¡§˜¢«š£¯¤®™¥­›¦­ž¦±¡§®£©°¥«±¥«²©¯µ«±µ©¯³©®±ª°´«¯µ«®±ª®´¬®´ª¬²¨¬²§­±¦¬³¥«±¦©°¥§ª©§¨§¢¢¦œ¤•¤‰£‚v¢zlœue—rc”l^dVŽ_M‘[F‘U?’R:“P5”N1’K-’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,”K/”K/•M/•M/™R4šY=›^DœaIgRœkVœlWq^r`švhšzo›v™{™‚z›„| ˆ} Š¡„¡„ ‘‡£“ˆ¡’ˆ£’† “‡¡‘†Ÿ† …ŸŒ‚Š~›Œ‚š‹™ˆ|•†~“…~‚{Š|u‡|u‡y‡}„||ytole]Z\TQ\TQ[SPf^[upm|wt|wtxurxurvtr{zy}‚‚|xw~€t|rz}nvynvyltwipuelqhpsfmrfmrhotnx{s}€w„z…Š|†ŒxƒŠ{‡{‡{ˆŽ{‡}Š~‹‘|Š‘~‹‘{‡q{~[ciS[aMU[EOUAIO@HN@HN?GM?GM?GM@HNFNTHPVCKQ?GM?GMAIODNTMU[PX^T\bNV\JRXNV\V^dOW]PX^PX^cjov†~‰ŒŠŠ€‹Ž€‹‹‚‚ƒŽ‘„’ƒŽŽ‚‚ƒ„’‚’’•Ž–|Ž”zŒ•xŠ“wˆ”v†”wŠ–v‰˜v‰•{‹™Žš„ž‚›‚Ž™ƒš†’Š•ŸŠ•¡Š•¡Ž—£š¤•Ÿ¨™£¬›¦­›¦­ž¨®Ÿ©¯¡©¯ ª°¡«± «²Ÿ©¯›¥«š¢¨š¥¬Ÿ§°Ÿ©¯›§­¨­Ÿ©¯¢ª³¢¬µœª³˜§³•¤³•¢±’¢­‘ ª‘¡¬‘ ª’ ©“ž¨œ¤Žš¢‹–†–‚Œ}„‰w…mwzZafOW]RZ`\ch]diX_dT\bX`fZafY`eY`eX_dRZ`MU[OW]LV\GOUDNTBLR@HN?GM?GM?GM?GM?GM@HN@HNBLREOUEMSCKQ@HN?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM@GLBHNCGMDHNFHKGGJHHKIHJIHJHHKFHKEHLDHNBHNBHO@GL?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?IO?IO?IO?IO?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM@HNAIODNTGRYKV]NZbT^gZdm`krfrzmyu€ŠŒ“—›¢§§¯²¯·ºµ½À·ÀÁ¸Á¹ÁÁ¶¿À´¼¿µ½À·ÀÁ¼ÄÄÀÇÆÆËÈÈËÈËÍÉÎÏÊÑÒÍÑÓÌÔÕÐÕ×ÐØÙÑÙÚÒÛÜÔÛÛÕÜÜÖÜÜÖÚÛÓ×ØÐÑÒÍÎÎÈÇÉÂÇËÃÆËÇÄÊÈÀÈŹÀ¿¶¼½²¹»­´¹¦®´ «°ž©°›§¯™¤®˜£­•¡¬ «Ÿ«Ž©žª ®‘¡¯“ ¯“Ÿ­’Ÿ«• ª—Ÿ¨•Ÿ¨”Ÿ©–¡­—¢®™¤°š£¯›¤°›¤°§° ¨± ¨®¡©¯¥«²¥¬±¦¬°¦¬³¥¬±¦¬²¤ª°¦ª²£¨±¡©²¢©±¢©±¢¨¯ §¯¡£©£¡¥¢›œ “œŠ„‚x›zkšsc˜o]–k\’dU_MZF‘U?“R9“P5•N0”K/’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,”M,”M,–N0–P1™T6™W:š\Aš_G™dM›gQšiTšn[›r`™te™wkœ|q›v˜€wš€wƒw …{¡Š}žžŽƒ ƒŸ† ‘‡ž‡‘‰œŽ…›Œ‚™Š€™‹‚˜Š•Šƒ’†~yŠ~x‡}w}rktlfsmiyvsrpna\\USTOMNLJKKIJLJKTRSdcbtttwwwtttmmmlmnsvvuzzw|tz{u|~px{nvymtyipufmrckn\chV]b\chZafW^c\chfmrlsxt~v†w‚‡w‚‡w‚‡|†Œz…Š|‰{‡~‹‘~Š’~Š’|‡Žnx{X`fY`eNV\BLRAIO@HN@HN?GM?GM?GMBLRGOUEOUAHP?GM?GM?GM?GM@HNAIOBLRCMSGQWNV\LTZFPVHPVGQWQY_fpsoy|pz}v~{…ˆ‰‹‹€‹‹‚ƒŽ‘ƒŽ‘‚‚‘‚’‚’“€”~Ž”~Ž”z‹—w‹”uˆ’w†’v†”u…“uˆ”z‹š~™}Š–€Œš€Œš~‹—€Ž—‚—ƒš‚Ž™†’…“œ‰• ˜¢›£‘›¤“ž¥–¡¨™¤«š¥¬š¥¬˜¢«›£‰•‰•Žš¢“Ÿ§”ž§”Ÿ¦–¡¨–¡¨™¡ª›£¬š¥¬˜¤¬—£«”¢«‘ ªž¨œ§›¦›£˜Ÿ‹•›†–‡t|‚mwziqwhpvdkpW^cQY_V]bX`fX_dV]bPX^OW]NV\OW]OW]MU[ISYEOUGQWGQWDNTAHP?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM@GLBHOBHOBHNCGMDHNDHNDHNDHNCGMBHNBHO@GL?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?IO?IO?IO?IO?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GPAIOCNUFQXJU\LX`Q\cV`f]endovmxw‚‰‹‘‹“™•Ÿ¢¢ª­­´¶³»¾µ¼¾´¼¿³»¾°¹º³¼½¶½¿½ÅÅÁÇÈÄÊÈÇÊÇÇÊÇËÍÉÎÏÊÑÒÍÒÓÎÓÕÎÖ×ÏØÙÑÙÚÒÚÛÓÚÛÓÚÚÔØÙÑ××ÑÑÒÍÈÉÄÞÃÈÁÂÈÂÄÉÅÀÈŸ¾¿´»½°·¹ª²µ¥­³Ÿ©¯›¦­™¥­–¢­–¢­’Ÿ«Ÿ©ž¨«‹žª««©’Ÿ®“Ÿ­’ž©’§’§‘¨’ž©“Ÿ­• ­–¡®˜£­—¢¬™¤®š¥¯š¦®›§¯Ÿ§°Ÿ§°¢©±Ÿ§° ¨±¡¨² §±Ÿ§²ž¦±œ§±œ§±¨²œ§±š£¯˜œ¤™—›™‘‘—‰ˆ–{•zp•qc•m\”hU’bO’]IXCU=’Q8“P2”N/”M,”M,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,’J,•L-–M.–N0—Q2˜S5˜W;˜Z?™]Dš_GœdOšfP›kXœo[›p^šscšwj™zp˜}s–|s™~t›uœ…{š‡}šˆ˜Šƒ™‹„™Ž‡™Ž‡˜†—‹ƒ•‰’†~’ŠŠƒŽˆ‹„‡yƒ|w|tqngefc`daaa_`[\]NPRGILEHLDGKDGKFIMNQTXZ\hmmmrrkmoikmhmmhnoiprntxqxzsz|px{jrubjm\ch\chY`eRZ`PX^OW]PX^T\bQ[^Zafelqlsxoy|u}ƒu‚t|‚v‚ˆy„‰z…Š|‡Œ{‡}‰}ˆyƒ‰mwz]ekRZ`OW]GOU@HN?GM?GM?GM?GM?GMAIOBLRBLR?GM?GM?GM?GM?GM?GM?GM?GM?GM@HNBLRCKQ@HN@HNBLRIQWPX^X_dW^chrut|x‚…{ƒ†€ŠŒ‚ŒŽ‚ŒŒŒŒƒŽ‘ƒŽ‘ƒ“ƒ“‚•–Ž–Ž–|‹•wŠ”y‹”zŠ•x‰•wˆ”v‡–v‰•|Œš{Š–{ˆ”|‰•}Š–{Š”}Š–‹™€Œ—‹™Œ˜Œ˜˜‚™ƒ—ƒ—‡“›Œ˜ œ§›£Š–¡ƒœš˜„’›‰• ‹– ˜¢›£›£Ž™ Ž˜ž‘™Ÿ’œŸ‘œ¡œ¤›£™¡‹—ŸŠ–žŠ•œˆ™ƒ‹‘|‚‰px~gou\djW_eU_eQY_Q\aS[aW^cOW]OW]OW]NV\LTZHPVFNTEMSDLRAIO@HN@HN@HN?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM@GL@GL@GLBHOBHOBHOBHO@GL@GL?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?IO?IO?IO?IO?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM@JPDNTEPWIT[KW_P[bV^d_gpfqxpz€x‚ˆ}ˆ‡•’š œ¦©§¯²­´¶­´¶¯´·®µ·°·¹·¾À»ÂÄ¿ÅÆÀÆÄÃÈÄÂÈÆÈËÈÌÎÊÎÏÊÐÑÌÑÒÍÓÔÏÖ×Ï×ØÓ×ØÓÕÖÎ×ÕÏ×ÕÏÕÕÏÎÏÊÂþ¿Á½ÀÅÁ¿ÅÂÀÆļõ»¼°·¹ª²µ¥¬±Ÿª¯œ¨°™§°—£®–¢­’¡­‘ ªž¨Ž©Œ›ª‹›©‹›©‹›«ŒœªŽ©Ž§œ¦Œ›§›¦ŒœªŒ›§‹›«Žž® ¯’¡­–¡«–¡«—¢¯—£®™¤±›¦°œ¦¯œ§® §¯ §¯¡§®¡§® §¯ž¦¯§°œ§±š¥±˜¡­’›§“š‹Ž…„Ž}ŒwqŽpgi\eV_L[EW?U=R7’O4”N1”M,•L-•L-”K,”K,”K,”K,”K,”K,”K,”K,”K,”K,”K,”K,”K,”K,”K,”K,”K,”K,”K,”K,”K,”K,”K,”K,”K,”K,”K,”K,”K,”K,”K,”K,”K,”K,”K,”K,”K,”K,”K,”K,”K,”K,”K,”K,”K,”K,”K,”K,”K,”K,”K,”K,”K,”K,”K,”K,”K,”K,”K,”K,”K,”K,”K,”K,•L-–M.–O.–P1—R4—U8˜X=™[@›^D›`H›eM›gQšiT™lX—n\—p`–ui”vj‘vl“xn”|s“v”w”z”„{”ˆ€“‰€’‡€‚|‹}vŠxŒ„~‡Š…‚†€||wt{uturodaaWUVRQSQSUOTWHNRCIOBHNBHLBHLDJNLRV_eiiprmtvmtviprkrtkrtcjlU\a`giksvovxmuxfnq[bgX_dOW]KSYFNTFNTKSYMU[MU[MU[S]`[bg\chfpsnuzmtymtypw|r|t„u€…u€…t„w‡nx{[bgNX[NV\HPVGOUDLRAIOAIO?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GMAIO@HNEMSEMSFNTNX[^ejmuxrz}x‚…}‡‰‹‚ŒŽŒŒŽŽŽŽƒ“’•€Ž•€Ž•”|Œ•|‹“{Š”{‹”wŠ”wˆ”v‰•v‰–wŠ–xˆ–v†”xˆ–x…”z‰•v‡“z‡“{Š–|‹•|Œ—~‹—Ž˜€Ž—–}Œ––‚Ž™…“œƒ‘š€™€™Œ˜}Œ–‚Ž™†’†’ˆ“‡’œˆ”œˆ“š‡’™„”‡•‰“™Š•œ‹•›†‘–…“„Ž”ƒ“‰{‚Špx~jrx`glV]bPX^MU[JRXMU[S[aV]bPX^JRXGOUFNTHPVFNTDLRCKQ@HN?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?IO?IO?IO?IO?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM@JPALQEOUISYLV\P[bXbh_gmisyoyu…|ƒˆ†Ž”–›˜Ÿ¡¤¦¢¨©¦­¯«²´°·¹³»¾·¿Â¼ÁļýÄÿÆÅÃÈÅÇÊÇÉËÇËÍÉÍÎÉÏÐËÒÓÎÔÕÐÔÕÐÓÔÌÔÔÎÔÒÌÒÒÌËÌǼ½¸µ·³º¼»»ÀÀ¼ÂûÀ÷¾À±¸º©°µ¡©¯œ§®›§¯˜¦¯–£¯”¡­‘ ¬ ®ŽŸ®‹ž­Š›ª‰š©Š›ªŠšª‰œ©Š›ªˆ™¨‡š©ˆ™¥‰™¤‹š¦Šš¨‰œ©‰œ«Žž®ž­’Ÿ®‘žª” ®–¢°—¢¯™¤®¤¬ž¤ªŸ£© £§¢¢¨¢¢¨ ¢¥ ¢¥ž¡¨› ©–§‘˜¢‘™ˆŠˆ‚……|{…vt…qk„ja…cW†]N‡XFˆU@ŠT<ŒP7ŽN3M2‘L.“M.”M,•L-”M,”M,”M,”M,”M,”M,”M,”M,”M,”M,”M,”M,”M,”M,”M,”M,”M,”M,”M,”M,”M,”M,”M,”M,”M,”M,”M,”M,”M,”M,”M,”M,”M,”M,”M,”M,”M,”M,”M,”M,”M,”M,”M,”M,”M,”M,”M,”M,”M,”M,”M,”M,”M,”M,”M,”M,”M,”M,”M,”M,”M,”M,”M,”M,•L-•L-–M.—P/˜Q3˜S7™V8šX;›[@š]C™`G˜cL˜eP—hV•jX“n_ocndŒpgŒriŒvmypŽ|v~vŒyŒ‚|‹ƒ}ˆ~xuo~rlƒ|w…€}„~€}zusqe``daagfhXYZKMPHMPEIODJNAHM?GM?GM?GM?GMEMSPW\Zafcknmuxovxhpsailbjm^egPW\MU[^eghpsdlo^ejQY_OW]JRXGOUDNQHPVPW\GOUDLRIQWEOREORFNTOY\X_dRZ`T\b\chjtwmwzoy|isvbjmhps]diJTWBLOAIOAIOEMSEMSEORAIO?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM@HNAIO@HNCKQCKQIQWISVNX[[bgcknksvx‚…€ŠŒ€‹‹ŠŠ€‹‹ŽŽŽŽƒŽ‘‚’’Ž”•~•{“{Š’{Š”{Š’xŒ•x‹’{‹”wŠ—u†•uˆ”u…•u…•v…”u„s„t…‘xˆ“|‹•|Œ—Ž˜€™€Œ—€Ž—}Š–}Œ˜Š—~Š•‹–|Š“}‹”~Œ•|‹•~‹—˜‚Ž™€Œ—~‰“Š”~Š’Š‘|„}…‹†Ž€Š€ˆŽ~…w…w‡x€†w…rz€ksyaioW^cOY_MW]JTZHRXKUXOW]OW]OY\KSYCKQ@HNCKQCKQCKQ?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?IO?IO?IO?IO?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM@HNCKQEMSHRXKV]PZ`X`f_gmfpsltzq{~{‚‡‚‰Ž‡Ž‹‘•–š™ ¢£ª¬¬³µ¯¸¹³»¾µ¼¾·¾À¸¿Á¼Ã¾ÃÀ¾ÃÀ¿ÄÀÃÆÃÆÈÄÈÊÆÌÍÈÏÐËÑÒÍÑÒÍÒÓËÑÒÊÏÐËÉË延²³±³¶³·¼¼¸½Àµº½³º¼®µº§®³Ÿ§°š¦®˜¦¯—¤°–£²’¡­Ÿ­ŽŸ®ž­Š¬‰œ«ˆ›ªˆ›ªˆ™ª‡š§†™¨„™ªƒ—§ƒ—§†—¦Š—£Š—£‰™©‡›«‹ž­ŒŸ®ž­‘ ¬•¡¬–¡«—¡ªš §š¡œžœœœ›œ›™šš••—’’•‘ŒŒŽŒŽˆŠ…„‰‚‚y{|sryliygcwb\z\S{XK|SAQ<ƒO9†L5ˆM2ŠJ/ŽL/M/’L-“M.”M,”M,”M,•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+–M,–M,–M,—N-˜Q0—Q2™T6™V8™X<˜[A–\B•_G”aL‘bPdU‰cWˆf]‡h^‡lb‡od†ri‡tm†vp…ys„zwƒ}y‚|x~wrvnkwro{ywzyxvvvnnncbd\\_WXYVY\KQUDKPAHM@HNAIO?GM?GM?GM?GM?GM@HNCKQEMSMWZdlogor_fkV^a]df`giZafX_d\ch`gl_fkX_dKUXGQTCKQCKQFNTOW]IQWCKQ@HN?GM?GM?GM?GMAIOCKQBINDLRNV\]didkphpsdloZaf^ejOW]DLR?GM?GM?GM?GM@GL@HNBLOAIO?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GMAIOCKQ@HNEMSHRUGQTFNTHPVNV\\chr||„‡~ˆŠŠŠŠŠŒŒ‚Ž‘Ž‘‚’“€”Ž“~•{“|Œ•zŒ•|Œ•|Œ•{“{‹”xŠ“u…“s„“v†”t…”t…‘v†‘v…‘z‰“y‰”}Œ–€Ž—Ž˜Ž˜Ž˜–|‹•|‹•|‹•z‰•wˆ”{Š”}Š–}Š–|‰•|‰•zˆ‘w„wƒŽu€Šu‰t€ˆq}…r}„s}ƒpz€pz€ow}jtzjrxku{mu{ksyfnt]ekQ[aLV\JTZHRXFPVHPVMU[KUXKUXHPV@HN?GM?GM@HN?GM?GM?GM?GM@HN?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM@HNAIOBMRFPVLV\NY^W_e]ekcmphruow}t{€v}‚z†ˆŠŒ’–™Ÿ£ ¨«§°±­¶·±¸º³º¼¶½¿¹¿Àº¿¿»¾¾º½½½ÀÀ¿ÁÀÁÆÂÄÇÄÉÊÈÍÍÊÏÐËÏÐÈÎÐÉÎÏÊÆÈĺ½º±´±¯´±³¸¸°·¹¯¶¸­µ¸ª±¶¡©¯§­˜¤¯•¢®“¢®“¢®’Ÿ®Ÿ«Ÿ­Œ¬‰š©‡›«‡›«ˆ™ª‡˜©„˜¨ƒ˜©€–¨—©•§„˜¨ˆ—£‰˜¤‡š©†šª‡›«‹œ«ž­Ÿ«“Ÿ§–¥–œ¢—™œ”“•’‘”ŽŒŠŠˆ‚xv{trvpouro{ut{xxywxvuwsppqiimcal^ZlZTlUMnSIrO@uM<xL9}J5‚J5†J1ŠL/L0M/‘L.‘L.”M,”M,”M,•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+•L+—M+—M+—M+—M+˜N,˜Q0—Q2—T6—V8•X=’Y@[D]J‰]M…]O‚^P„`RƒdWg^jb€mfpk~rl}rm|roxrqurorpnnmlmmmlmnjklaceWZ]QVYLRVKRTGNPDKP@HN?GM@HNAIO?GM?GM?GM?GM?GM?GM?GM?GMAIOKUXW^cY`e^ejbjm^ej\chfnqhpscknZafOY\EMSAIOCKQAIOEMSLTZFNT?GM?GM?GM?GM?GM?GM?GM?GM?GM?GMAIODLRHPVS[aX_dPW\S[aNX[IQW@HN?GM?GM?GM@HN?GM@HN?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM@HNDLRDLRAIOCKQCKQEMSFNTOW]hpsv€ƒ|†‰‰‹‹€‹ŽŒ€‹ŽŽ‘Ž‘““•”~•x‹’wŠ–wŠ–|Œ•xŒ•x‹’y‰’w‡’w†’w†’t…”t…”u…“xˆ‘|Š“Œ’€“€Œ”‚•€Ž•€Ž—–|Œ•{‹”{ˆ”{Š”{‹–{ˆ—|ˆ–z‡“y†•vƒ’u‚Žt€‹s~ˆnz‚nz‚mykv}kv}it{gqwdntblrblr]gm\fl^fl`jm^ejX`fOY_ISYIQWDOTEMSEMSJTWGQTDLRAIO?GM?GM?GM?GM?GM?GM?GM?GM@HN@HN?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GMAIOCMSFPVKSYPX^U]cYag_gmdnqipujrunvyt{€ˆ‹’—“›¡œ£¨ ¨«§­±¬²¶¯¶¸²¸¹³¹º´º»µºº·½¾¹¾¾º¿¿¾ÁÁÃÆÃÇÉÅËÍÆÍÎÉÌÎÇËÍÉÆÉƽÀÀ´¶µ®³³¯µ¶®´¸©¯³§®°¤«°š¥ª—¢©—¢¬”¡­“ ¯¡° ®Žž®‹ž­Œœ¬‡›«ˆš­‡™¬„˜¨ƒ˜©‚—¨€–¨•ª}–ª~–©€–«†—¨‡˜§ˆ™¨‡›«‡›«‹œ«œªž§’œ¢’˜ž‘–™’”ŽŒŽ‹‹‹†„…€}}rqpheeb__\Z[^\]bachfgjikhgifccc^^`YW_US_ROaQKdOIgLBkK@oJ;uJ8yJ8~J4„L4ˆM2ŠL/ŒL1ŽL/‘L.’L-”M,”M,•L+•L+–L*–L*–L*–L*–L*–L*–L*–L*–L*–L*–L*–L*–L*–L*–L*–L*–L*–L*–L*–L*–L*–L*–L*–L*–L*–L*–L*–L*–L*–L*–L*–L*–L*–L*–L*–L*–L*–L*–L*–L*–L*–L*–L*–L*–L*–L*–L*–L*–L*–L*–L*–L*–L*–L*–L*–L*–L*—M+—M+—M+—M+—M+•N-•P2’Q2“T6U;ŒV>‰XC†XF€WH{WK|YL}\M{_Txb[vd^vf`ugcrgbmdcia^a\\_\\\\\\]^UX[RWZRWZOUYJPTELQBINAHM@GL@HN?GM?GM?GM@HN?GM?GM?GM?GM?GM?GM?GM?GM?GMAHMCKQEORNX[ZafX_dNV\[bggoremp_fhS]`IQWFNTBINFNTEMSAIO?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GMBINFNTGOULTZOY\FNT?GM?GM?GM?GM@HN?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GMCKQ@HN?GMAIOCKQCKQEMSJRX[bgoy|t~w„|†‰‰‹ŠŠ€‹Ž€Ž’“€”•~Ž—}“{‹‘x‰•{‹”|‹•|Œ•xŠ“x‰•x…‘v‡“w‡’w†’v‡“t…‘y‰’{Š’Œ’}“Ž”““Ž”–~’}Œ”x‰•wŠ–|‹—{Š–v‡“s„q‚Žp‹o|ˆnzˆnyƒjv~it{gs{eqydovalsakq]en[ciZdjV`fS]cR\bR\bQY_NX^LTZHPVEOUEMSCKQAIOEORCKQ?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM@JPALQGOUJRXMW]QY_V^d\ck_gmdkpgqtmtyu||ƒˆ†’Œ“˜”š¡˜ž¥£ª£©­¦­¯©°²«²´°µ¸±¶¹²·º³¹º·½¾º¿¿¾ÃÀÄÆÂÉÊÅÊÌÈÈËÈÂÈƽ¶¼½¯´´®³¶­³·¦­²¡¨­Ÿ§­™¤«—¢¬“¢¬‘ ¬Ÿ®ž­ŽŸ®Žž®ŒŸ®‹œ­‰›®ˆš­†šª†šª‚˜ª‚˜ª€–¨}•ª}•ª}•ª€–«„˜¨ˆ™¨‰š©Š›ª‰š©œ¨œ§›£˜ž–›”™Š‘“ˆ‹Ž‚…ˆ|~€uwymoq_acWXYORULORNQTSVYWZ]Z\_Y[^WWZUVWSQRROOTNMVLIXJF\IBaJBfJ?kI=rK;vK9|L7L5„L4†L2‰L1ŒM/ŽL/‘L.’L-”M,–M,—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+™N+™N+—M+–M,–M,“M.‘N0O1ŒQ6‰Q9„S>€S?|TCvUFtUKpVMpYQn[Tm]Wl]Xi\Vf\YaXW[UTURRNMOLNPKPSHMPELQDKPDKPCKQAHM@HN?GM?GM?GM@HN@HN?GM?GM?GM?GM?GM?GM?GM@HN?GM?GM?GM?GM?GM?GM?GMAIOFNTOW]LTZZafdlofnqeln]dfNX[ISVHPVGOU@HN?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GMFNTLTZMU[EMS?GMCKQDLR@HN?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM@HN@HN?GM?GM?GM@HNDLRGOUX_dfnqhpshpss{~{…ˆ~ˆŠ~‰ŒŠ€Ž‘‚•Ž–•~•}Œ”{Š”|Œ•|‹“|Œ•z‹—y‰—z‡“v‡“v…‘w†’wˆ”v‡“z‰“}‹’~Œ“”€Ž•Ž‘‚Ž”‚•Ž”€“|Œ•{‹–{‹–wˆ”v…‘q„p‹m}ˆmz†my„jxht|frzdpxbnvals^hq[fmZdmWajT_fS]cQ[aOY_NX^LV\ITYHRXEPUDNTBMRCKQAIO@HN@HN@HN?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM?GM@HNAIOEMSEPUJTZNX^Q[aW_e[ciahpemsksypx~w~†}ƒŠƒŠ†’Š‘–‘˜–Ÿš¡£ £¦¦«®¨®´ª°´«±µ¯´·´¹¼¸½À¾ÀÂÂÅÂÄÆÅÂÇÄ¿ÅüÂö¼À±·»®´¸ª±¶¥­³Ÿ§­š¦®™¥°“¢®Ÿ­ž­ž­­Œ¬‹ž­‹œ­Š›¬‡›«‡˜©‡š©†šª„˜¨ƒ˜©–ª–§•ª€–¨‚–¦†—¦ˆ—£‰™¤‹š¦‹š¦Œ™¥Ž™£˜Ÿ‹•›‡Ž“ˆ~„ˆuz}mpschk]beW\_QVYKPSELQDJNELQHNRJQVJPTIOSHNRHMPHKNHJMIHJKHHOGGSHEXID]I@bJAgI=mJ=sK:vK6{K6L4‚L4†L2‰L1ŒM/ŽL/‘L.“M.”M,–M,—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+˜N,—N-–M,•N-’M/ŽM.ŒM/ˆN4„N6€O9}O=wP@sRCoSHkTLhUPfVPcVPbURaWT[TRYSRURRRQSQRSFIMDJNCIOAGN@GL@GO@GO@GO@GO@HN@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@HN@GO@GO@GO@GO@GO@GOAHMKSYT\bbikhoqiqtelq`fjW^cLTZBIN@GL@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GOBIQHPVPW\DLR?GMCKQFNTCJR@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GOAHPAHPCJRFMRQX]]cgV]bX^bailr|z‚…|†‰~ˆ‹~ˆ‹~‰ŒŒŽ”€Ž’Ž“}“~Œ•~•~•}–|Œ•|Œ•x‹•{Š’xˆ“|Š“{Š’|Š‘}‹’~’~•}–”Ž”“€Œ’Ž”~•}Œ”|‹•zˆ‘w†uƒŒn~‰k{†kz„ix‚hves|cowamu_ks]iq[goZdmXbkS_gS^eP[bOY_NX^LV\JTZISYGQWFNTDLRCKQAIOBIQAHP@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO?GM?GM?GM?GM@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GO@GOAHPCJREMSGOUKSYMW]Q[aW^fY`e_fkdnthrxmu{qy‚u…|ƒ‹€†„ŠŽ‡‘Œ“••›Ÿœ¢©¡§®¥«²§­´ª°´®´¸µº½¹¾Á¼ÁÁ¼ÂüÂ÷¾À³»¾±·»®´¸©°¸£«´Ÿ§°š£¯•¢®ž­Š¬Š›ªŠšª‰œ«Š›ªˆ›ªˆ›ª…™©†™¨‡š©‡š©ˆ˜¨ƒ—§ƒ—§ƒ—§‚–©•¨ƒ”¥…”ž†™„–…‘™ˆ”œˆ”œ‡“›ˆ’˜†Ž”‚‰Žry~fmrcjl[aeSZ_OV[KRWHOTELQBIN@GL@GO@GOBIQBIQAHMAHM@GLAGNAGMBHLDGJFHKIHJLIIQHGTGDZJD^ICcI@iJ=nK>rK;vK6yJ8}J5L5†L2‰L1ŒL1M-’M/”M,–M,—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+—M+”N,“N-’M/M/ŽM/‹M0‡M3L5|L7wL:rM<lNBiOFdQJaRM^SP\TQ[SPVPOVQQTSRRSTSUWQVYIOSBHNAGN@GL?FK@GL?FK@GL@GL@GL?FK?FK@GL?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FKAHM?FK?FK?FK?FK?FK@GLCKQPW\`fjiprlsuhotbhlW]aLSXBIN?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK@GLGOUKRWEMS?FK?FK@GL?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK@GL?FKBINDJQHOTLSXKRWLSXPW\elqs{~w‚z‚…|…†}‡‰}‡Š€‹Ž€Œ’€Ž’€Œ’€“€“€“Ž“~Ž”}“|Œ•~Œ“|Œ’|‹“~‹‘Œ’~’~Ž”Ž“–€“”€Œ’Œ‘€Œ’€“|Š‘{ˆŽw…Žq€Šp~‡jz…ix‚iu€es|bpw_mv^jr\hp\foZdmXbkS_gQ]eP[bNY`MX_MU[JTZISYHRXFPVEMSDLRCKQAIO@GL@GL?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?GM?GM?GM?GM?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK@GLBINCKQFNTJRXLTZOW]S[aYag\dm`jpdovhrxksymu{ovxpwyyƒƒŠŠ’˜˜£”œ§˜ ©ž¤«¤ª°ª¯²­²µ³¸»·¼¿µ¼¾³º¿¯¶»¬³¸©°µ¤¬²Ÿ©¯›£¬–¢ª’ž©Š›ª…š«…š«‡˜§‰š©‰œ«Ššª‰š©‡š©†™¨ˆ™¨ˆ˜¦ˆ•¡‡–¢†–¤…–¥„•¤„•¤…” „˜€Šz†w…{ƒ‰|„Š|‚‰x€†v~„pw|_eiPW\JQVGNSELQDLRBIN@GL@GL@GL?FK?FK?FK@GO?FK?FK?FK?FK?FK?FKAGNAGMBFLDGJGGJJHIMHHQHGVHD[IC_IBcKBgK@lK<qJ:uJ8yJ8~L5L2ˆM2ŒM/ŽM.’M/”M,–M,—M+˜M*˜M*˜M*˜M*˜M*˜M*˜M*˜M*˜M*˜M*˜M*˜M*˜M*˜M*˜M*˜M*˜M*˜M*˜M*˜M*˜M*˜M*˜M*˜M*˜M*˜M*˜M*˜M*˜M*˜M*˜M*˜M*˜M*˜M*˜M*˜M*˜M*˜M*˜M*˜M*˜M*˜M*˜M*˜M*˜M*˜M*˜M*˜M*˜M*˜M*˜M*˜M*N.ŽM.ŒM/‹M0‡M3‚L4~K6yL8sL:oK=gI@cLB`MF[MIYOLSPMSNNONMLMNJLNMOQINQINQJPTDKP?FK?FK@GL@GL?FK?FK?FK@GL@GL?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK@GL?FKAHMAHM?FK?FK?FK?FKELQDLRNUZagkkrtksvfmobhl[aeOV[AHM?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FKCKQAHM@GL?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FKAHM?FK?FK@GL?FKBINGNSHPVHOTNUZ\bflsupx{u}€x‚…{ƒ†|„‡|†‰€‹ŽŒŒŒ€Œ’€Ž’Ž~’Ž‘€€‹‘€“~’€“‘€Ž’”€Œ’“€Œ’€‹Š|ˆŽw…Œw„Šs€†p|„lzƒhwet~cqzamx^jr]jpXfoXdlWajU_hQ]eP[bOZaMX_LW^JU\JTZHRXHPVFNTEMSDLRCKQAHM@GL?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?GM?GM?GM?GM?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK@GLCIPDKPEMSHPVOV[QY_T\bW^cW^cW^cY_cW^cZ`delqqyz‚‹~‰Œ–‡‘šŒ”“™ ˜ž¤£§£©­©¯µ­³·ª±¶¨¯´¦­²£ª¯¥«—¡§—¡§’ ©Š©„™ª˜§‚™¨ƒš©†š¨ˆ›ª‰™©ˆ™¨‡š¦‡˜¤‡– ƒ—‹‘ƒ–„˜…’ž…’žƒš‹“}…‹u}ƒmtvelqdkpdkpbjmcknfmr]cgNUZDLR@GL?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FKAGNAGMCGMEGJHGIJHINHGQHGWIEZJD^ICbJAfJ?jJ<pK<uJ8zJ5L4…L3ŠM2ŽM.’M/”M,–M,˜N,™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+‹M0ˆM2†M4‚M3~K6zL7tL9pK<iJ=dJA^ICYJETJGQIIMJJLJKIILGILFIMDHNCIODJNDJQBIN@GL?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK@GL@GLAHM@GL?FK?FK@GLFNTKRW[aeagk`fj\bfSZ_T[`NV\CKQ?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FKAHM@HN?FK?FK?FK@GLAIOFNTT[`bhlfmolsupx{px{u}€u}€v€ƒ{…ˆ|‡Œ}ˆŠ€‹ŽŒ€€Œ€‹ŽŒŒ‘‘€€ŽŽ‘€Ž’€Ž’€ŒŠ}ˆ|‡Šwƒ‰t€†r~„p{‚mykw}gs{dpxamu]hrZfqXdlVbjS_gR\eO[cOZaMX_KV]KV]IT[HRXGQWEOUEMSDLRCKQAHM@HN@GL?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?GM?GM?GM?GM?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK@GLAHMAIOCKQCKQCKQCKQELQELQHOTPW\`gljrxnv|qyt|‚v~„|‚ˆ€†Œ…ŒŽ•™—¡š ¦š¡¦š¡¦œ¢©š ¦–¢‘œ¡‘›¡Žš¢‹š¦ƒ˜©‚˜ª‚™¨‚˜ª†™¨‰™§ˆ˜¦‡—¥‡–¢†”~‰nv|ipunuzu}ƒz„Š{ƒŒs}ƒltzhot_fkZ`dW]aOW]PW\OV[SZ_Y_cPW\IPU@GL?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FK?FKAGMBFLCFJEGJHGIJHINHGQIFUHEYIC\IBaJBfJ?lK<rJ9xK7~L5ƒK3ˆM2ŽM/’M/”M,–O,˜N,™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+M4€M5}L6yL8tL9pK<lK<eJ@`IA\IBUHEPHELGGIGHFFIDGKCFJCIOCIM@GL?FK?FK>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FLAHM@HN>FL>FL?GMFPSPW\Y`bPW\FNTCKQBINCKQ@HN>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL?GM>FL>FL?GM?GM@HNCKQJRXQ[^RY^W^c_fkfnqksvltwhpsmtypz}q{~s}€{…ˆ~‰ŒŠ€‹ŽŠŠ€‹Ž€‹Ž€‹Ž~Œ€€€ŒŒ€‹ŽŠ|‡Šz…Šv‚ˆu€…q|p{~nz€lx~iu{gsydpv_mv]ktZeoVbjS_jP^gO[cNZbLX`JV^JU\HSZGRYEPWDOVEOUCMSBLR@KP@HN?GM?GM>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL@GO@GO@GO@GO>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL?FKBINKSYS]`W^cX_dY`e^ej`glckniqtt{€…‹„‹†’Š‘–‹’—ˆ”„Œƒ„Ž‘ƒŽ“ƒ‘š‚’ ’¡~’¢”¡‚“Ÿ„“Ÿƒ’œ‚Ž™€Œ”|†Œnv|Y`eV]b[bg`glhotipu`glX_dRZ`NUZKRWHPVDLRCKQFNTLVYNX[JRXCKQ>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL?FKAGKAGMBFLDGKEGJHGIJHIMHHQHGSHEXID]I@bJAhI<pK:uJ8{K6L2ˆM2ŽM/’M/”N,–O,™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+™N+wK8vK9sM;oK=kK=eJ@aJB\IBXIDSIFNHGJGGGGJDGKBGJAGM?FK?FK>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL@HN?GM>FL?GM>FL?GMCKQHRUBIN>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL@HN?GMDLREMSCMPGQTKUXPZ]T^aX_dX_dV]bW^cY`e`glkuxv€ƒ}‡Š~‰Œ~‰Œ~‰Œ}‡‰~ˆŠ}ˆ€‹ŽŠŠ~‰Œ}ˆ‹{…ˆx‚…u€ƒt„q|oy|ny~lwzjuzhtzfrxdotams]io[fmXcjR^fP\dO[cMYaLX`KV]JU\HSZGRYEPWEOUDNTALQ@KPAIO@HN?GM>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL?FK?FK?FK?FK>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL@HNDLREMSFNTEMSFNTISVKSYOW]Z`ddkpjruqx}v}‚v}‚qx}hpslsxov{pw|q{t€ˆv…‘v‡“v‡“xˆ“zˆ‘wƒ‹t†px~iqw_fkPX^R\_W^cT^aX_dW^cRZ`MWZJRXDLRAIO?GM>FL>FL@HNEMSDLRAIO>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL?FKAGKAGKBFLCHKFHKGGJJHILGGOHFTGDYIC_I@fJ?lK<tK9{K6L5ˆM2ŽM/‘N-•N+˜N,™N+›O+›O+›O+›O+›O+›O+›O+›O+›O+›O+›O+›O+›O+›O+›O+›O+›O+›O+›O+›O+›O+›O+›O+›O+›O+›O+›O+›O+›O+›O+›O+›O+›O+›O+›O+›O+›O+›O+›O+›O+›O+›O+›O+›O+›O+›O+›O+›O+oK=lK<gK@dJAaJB\IBYICSIFOHFLIIHGIEGJCFJAGMAGK?FK>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL?GM@HN>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL?GMDLREOREMSGOUHPVHRULTZISVMTYNX[V]bjruv~{…ˆ{ƒ†|†‰{…ˆ{ƒ†{ƒ†{…ˆ{ƒ†z„‡u€…u‚t~pz}oy|nx{kuxisvgqtfqvfqvdotbmp`kn\gl[ekYciT`fR]dO[aMY_MX_KV]KU[HSZHRXFPVDOTBMRALQCKQ@JP@HN?GM>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL?FK?FK?FK?FK>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FLAIO>FL>FL?GM@GLAIODNQHRUKUXQ[^\ch\chOW]LSXOY\S]`V]bX_d_gmhrxlx€mynz‚myjtz^flRZ`MU[MU[MWZOW]OW]MU[ISVHPVEORCKQAIO?FK>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL?FK?FK?FKAGMBFLCHKFHKFFIIGHLGGPHEWHC]I@dI?lK<sK:yL5M4ˆM2ŽM/’M,–O,˜N,šO)šO)šO)šO)šO)šO)šO)šO)šO)šO)šO)šO)šO)šO)šO)šO)šO)šO)šO)šO)šO)šO)šO)šO)šO)šO)šO)šO)šO)šO)šO)šO)šO)šO)šO)šO)šO)šO)šO)šO)šO)šO)šO)šO)šO)šO)™O*™N+bJA`IA^IC[ICXIDSIFQHGLGGJHIGHICFJBGJAGK?FK>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL@HN?GM>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL?GM@HN?FK?GMCKQ@HNBINAIOEORDNQFPSFNTKUX]cglsut|‚t~s}€r}‚r|r|s}€s}€r}€pz}oy|oy|lvyjtwitwhrueorcmpblo`jm_gm]gj[ehXchVafT_dQ]cO[aLX^LW^JV\KU[ISYFQVDOTCNSDLRBLRAIO@HN?GM>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL?FK?FK?FK?FK>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL?GM>FL>FL>FL>FL>FL>FL>FL?GMAHMDLRDLR@HN@HNCKQEMSEMSHPVKUXQY_\dj^hn^in_joZbhOW]FNT@HNAIOJRXLTZGOUDLRCKQ@HN>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL?FK?FKAGNAGMBGJDGKGGJJGGNHGTGD\IBcI@jJ<sK:yL5‚M3ŠM2ŽM/“N-–O,™O*šO)›O(›O(›O(›O(›O(›O(›O(›O(›O(›O(›O(›O(›O(›O(›O(›O(›O(›O(›O(›O(›O(›O(›O(›O(›O(›O(›O(›O(›O(›O(›O(›O(›O(›O(›O(›O(›O(›O(›O(›O(šO)šO)™O*™O*—O+˜N,YICWIETIDQHGNHGLGGJHIGGJFHKCGMAGMAGK?FK>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL?GM?GM>FL@HN@HN?GM@HN?GMCMPEMSFNTEORMTYZ`dcjocjl`glbjmdlodlogorksviqtckndlohruhrufpseorcmpbloakn^hk]ek[ehZdgXbeS^cT\bP[`NY^LX^LW\JUZHSXHRXEPUDOTBMRDLR@KP@HN?GM?GM>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL?FK?FK?FK?FK>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL?GM@HNAIOEMSHRUKSYKSYOW]OW]JRXAHM>FL?GMFNTGOUAIO>FL>FL>FL>FL>HN>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL?FK?FK?FK?FKAGKAGKCFJEGJIGHNHGSHE\IBcI@jJ<sL:{K6‚M3‰N0N/“N-–O,™O*šO)›O(›O(›O(›O(›O(›O(›O(›O(›O(›O(›O(›O(›O(›O(›O(›O(›O(›O(›O(›O(›O(›O(›O(›O(›O(›O(›O(›O(›O(›O(›O(›O(›O(›O(›O(›O(›O(›O(œP,™O*™O*—O+–O,”N,“N-OHFNHGLGGJHIHGIGHIDGKCFJAGMAGK?FK>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL?GM>FL>FL?GMAIO@HN@HNIQWOV[NUZNUZMWZNUZMTYPW\T\_Zac[cf\ch_gjdlodnqbmpblo`jm^hk\fi\chXbeV`cT^aS]`Q[^OY\MX]MWZJUZJTWHRUFQVDOTCNSCMPBLOAIO@HN?GM>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL?FK?FK?FK?FK>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL?GM>FL>FL>FL>FL>FL>FL>FL>FL?GM@HNBLODNQELQ?GM>FL>FLBIN?GM>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL?FK?FK?FK?FK>FL?FKAGKBGJEGJHGINHGSHE\IBcI@jJ<tL9{K6‚M3‰N0N/“N-–O,™O*šO)›O(œO+œO+œO+œO+œO+œO+œO+œO+œO+œO+œO+œO+œO+œO+œO+œO+œO+œO+œO+œO+œO+œO+œO+œO+œO+œO+œO+œO+œO+œO+œO+œO+œO+›O(›O(šO)™O*—O+•O-“N-‘N-N/ŒN/HGIGGJGHIFHKCFJBGJAGMAGK?FK?FK>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL@HN@HN>FL>FL?GM>FL>FL@HNNV\[bgGOUAIOAIOBLO@HNEORHRUFPSMTYV]__gjaknakn^hk]gj[ehZdgXbeW_bT^aR\_PZ]OY\NX[LVYKUXJTWHRUGQTFPSEORBMRBLOAIO@HN?GM?GM>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>FLAGKAGKEGJHGINHGSHE\IBdK?lK<tL9{M5‚M3‰N0ŽM/’O,–O,™O*šO)›P*œP)œP)œP)œP)œP)œP)œP)œP)œP)œP)œP)œP)œP)œP)œP)œP)œP)œP)œP)œP)œP)œP)œP)œP)œP)œP)œP)œP)œP)œP)œP)›P*šO)™O*—O+–O,“N-N.N.ŠM/ˆN1…M2CFJCFJBFLAGMAGKAGK?FK?FK>FL>FL>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ?FK>EJ?FK>EJ>EJ>EJ>EJBINPZ]binLTZ@HN?FK>EJ>EJ>EJ?FK?FKBINOV[[bg^ej\ch\chZafX_dV]bT[`SZ_PX^OW]MWZMTYLSXKRWHPVHOTEMSDLRCKQBINAHMAHM@GL?FK>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>FL>FL>FL>FL>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>FL>FL>FL>FL>EJ>EJ>EJ>EJ?FKAGKEGJHGINHGSHC\IBdK?lK<sL:yL5M4ˆN1N.’O.•O-™O*šP+›P*žP)žP)žP)žP)žP)žP)žP)žP)žP)žP)žP)žP)žP)žP)žP)žP)žP)žP)žP)žP)žP)žP)žP)žP)žP)žP)žP)žP)œP)›P*šP+™O*–O,”O.‘O-N.‰N0†M1‚M3~M4{M5AGKAGKAGK?FK?FK?FK>FL>FL>FL>FL>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ?FK>EJ>EJ?FKGOU[bgcjoPZ]DLRAHM?FK>EJ>EJ>EJ?FK@GLKRWS[aX_dY`eX_dW^cR\_SZ_PZ]NX[MWZMTYLSXIQWIPUHOTEORDLRCKQBINAIOAHM@GL?FK?FK>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>FL>FL>FL>FL>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>FL>FL>FL>FL>EJ>EJ>EJ>EJ>EJAGKBGJEGJIGHMGFSHC\IBbJ?iJ=sM;xL6€M5†M1N0‘O-•O-˜P,šP+œP)žP)žP)žP)žP)žP)žP)žP)žP)žP)žP)žP)žP)žP)žP)žP)žP)žP)žP)žP)žP)žP)žP)žP)žP)žP)žP)žP)›P*šP+˜P,•O-’O,ŽO/ŠM/†M1L2|L4xL6tL9pL9>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ?FK>EJ@GLPW\binbloX_dKRWDKPBIN>EJ>EJ?FK@GL@GLBINKRWSZ_R\_SZ_RY^OY\NX[OV[MTYLSXJQVHRUFNTGNSFMRCKQDKPBINAHM@GL?FK?FK>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>FL>FL>FL>FL>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>FL>FL>FL>FL>EJ>EJ>EJ>EJ>EJ>EJAGKBGJFGHIGHMGFSHC[ICaI@iJ=pL9wL7~M4…M2‹N0‘O-•O+šP+›P*žP)žP)žP)žP)žP)žP)žP)žP)žP)žP)žP)žP)žP)žP)žP)žP)žP)žP)žP)žP)žP)žP)žP)ŸP(žP)œP)›P*šP+–P+“N-‘O-O0ˆN1‚M2|L4xL6sL:mJ;iJ=eJ=>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ@GLPX^_fkakn\chRZ]JQVHOTDLRDLRIPUJRXGOUHOTLSXPW\PW\OY\OW]MWZLTZLSXISVHRUHOTFNTDLRCKQBINBINAHM@GL?FK?FK>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>FL>FL>FL>FL>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>FL>FL>FL>FL>EJ>EJ>EJ>EJ>EJ>EJ>EJ@FLBGJFGHIGHLGGRHEXIA`I?eJ=mL:uL6|L4…M2‹N0‘O-–P+šP+œP)žP) Q) Q) Q) Q) Q) Q) Q) Q) Q) Q) Q) Q) Q) Q) Q) Q) Q) Q)žP)žP)Q*Q*›P*šP+—P-”P,‘O-ŽO/‰N0„N3€M5xL6tL9nM;iJ=dK?`I?\IB>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ?FK>EJ>EJ@GLOV[[bg_fk]diYadU\aU\aSZ_SZ_SZ_SZ_QX]OW]NV\NV\OV[MWZNUZKSYISVHPVHOTFNTDLRDLRDKPBINAHM@GL?FK?FK>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>FL>FL>FL>FL>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>FL>FL>FL>FL>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ@FLBGJEGIGFHKFFPHEWHC_I@eJ=lL;tL7|L4…M2ŒN/“P-—P-™Q*Q* Q) Q) Q) Q) Q) Q) Q) Q) Q) Q) Q) Q) Q) Q) Q) Q) Q)žP)Q*Q*›Q*šP+—P-•O+“P-ŽO/ŠO1†M1N3{M5uL7nM;iJ=dK?_I@XIATHBRHE>FL>FL>FL>FL>FL>FL>FL>FL>FL>FL>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ?FK>EJ>EJ>EJ>EJFMRW^c\ch\chZafX_dW^cV]_T\_S[^RY^OWZOV[MTYMTYLSXKRWJQVIPUHOTGNSFMRELQDKPBINAHM@GL?FK?FK>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>FL>FL>FL>FL>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>FL>FL>FL>FL>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ@FLAFICFIFGHJGGPHEUHB]I@dJ>lL;uL6~M4ˆN1ŽO/”P,™Q*Q*žP)¡Q(¡Q(¡Q(¡Q(¡Q(¡Q(¡Q(¡Q(¡Q(¡Q(¡Q(¡Q(¡Q(¡Q( Q)žP)Q*›Q*™Q*—P-•O+“P-ŽO/‹N0ˆN1‚M2|L4wL7pL9jJ<eJ=`I?XIATGDPHEMGFJGG>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ?FK?FK>EJ>EJ>EJAHMGORSZ_X_dX_dV]bT\_SZ_PZ]OY\OWZOV[LTWLSXKSVJRUIQTHOTHOTFMRFMRELQDKPBINAHM@GL?FK?FK>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ@FJ@FJBEIFGHJGGNGETHB]I@eJ=mL:wL7€N4ˆN1P.–P+™Q*Q*¡R*¢R)¢R)¢R)¢R)¢R)¢R)¢R)¢R)¢R)¢R)¢R)¢R)¢R)žP)Q*›Q*˜Q+•O+“P-ŽO/ŠO1†M1‚M2}L3xL6sL:mL:fJ<aI>\IBUHBPHEMGFHGFFGHEGI>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ?FKJQVPW\RY^SZ_RY^PX^OY\PW\NVYNUZLTWKSVJQVJQVHPSHOTGNSELQELQDKPBINBINAHM@GL@GL?FK>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ@FJBEIDFIHGFMGFTHB_I@fJ<nM;xL6‚M2‹N0“P-˜Q+Q*žR(¢R)£R(£R(£R(£R(£R(£R(£R(£R(£R(£R(¢R)¡R*Q*›Q*˜Q+”P,P.‹N0‡N0‚M2~M4xL6sL:nM;gK=cJ>]I@WHCQGDMGFJGGFGHDFIBEI@FJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ@GLJQVPW\PX[PW\PW\OV[MTYLTWJRUKRWJQVHPSGNSGNSGNSELQELQDKPBINBINAHM@GL?FK?FK>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ@FJAFIDFIHGFNGEUHB`I?iJ=sM8}M5†O1ŒO.•Q-™Q*R*¡R*£R(£R(£R(£R(£R(£R(£R(£R(£R(£R(¢R)žR(Q*˜Q+”P,P0‰O/„N2~M4xL6sL:lL;gK=bJ?]I@ZHBTHBNGEKFFGFHDFIBEH@FJ@FJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ@GLIPULTWNUZMUXLTWKRWJRUIPUHOTGORFNQGNSEMPELQDKPDKPBINAHMAHM?FK?FK?FK>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ@FJAFIDFIJGGPHEXIAbJ?jK<tL7€N4‡N0P.–P,›Q*žR(¢R)£R(£R(£R(£R(£R(£R(£R(£R(£R(¢R)R*™Q*–P,P.ˆN1‚M2{M5rM9lL;gK=bJ?]I@XIATHBPHEMGFHGFEEHDFIAFI@FJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJDKPHOTJQVJRUJQVIPUGORFMRELQELQELQELQDLODKPBINBINBINAHM?FK?FK?FK>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ@FJBEHEEHKFFQGD\IBdJ>mL:xL6N3ŠP0’P,˜Q+œR+¡R*£R(£S'£S'£S'£S'£S'£S'£S'£R(žR(›Q*–P,P.‰O/N3xL6pL9iL;cJ>]I@XHBTHBPHEMGFJGGFEGDFIAFI@FJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?ELCIPFMRGNSHOTFNQDKPBINCIPCIPCIPCIMBHOCIPBHOBHOAGN?FK@FM@FM?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL>EJ>EJ>EJ>EJ?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL>EJ>EJ>EJ>EJ?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL>EJ@FJDFIFGHMGFTHB]I@fJ<rM9yM4ƒN3ŒO.”Q.˜Q+R*¡R*¢S(¥R(¥R(¥R(¥R(¥R(£S'¢R)R*˜Q)’P,‹P/ƒN3yM4oL:iJ=aI>YI@THBOGDKFFHGFFEGEFGBEH@FJ@FJ>EJ?EL?EL?EL?EL?EL>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI?FKAHMELQELQDKP?FK?FK@GL?FK>EJ>EJ>EJ>EJ?FK?FK?FK>EJ=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI>EJ>EJ>EJ>EJ=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI>EJ>EJ>EJ>EJ=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI?EIAFIDFIHGFNGEWHC`I?hK<sM8}M5†O1ŒO.•Q-šR+žR(¡R'£S'¥R(¥R(¥R(£S'¢S(žR(šR+•Q-ŒO.„N2}M5rM9hK<aI>XHBQGDKFFGGGEEHDFIBEHAFI@FJ@FJ?EI=DI=DI=DI=DI=DI=DI>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI?FK@GLAHMAHM@GL>EJ>EJ>EJ>EJ=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI>EJ>EJ>EJ>EJ=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI>EJ>EJ>EJ>EJ=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI?EKAFIEFGIGEOGDXHBbJ?jK<tL7~M4‡N0ŽP.–P,šR+ŸS)¢S(£S'¤S&£S'¢S(ŸS)›Q*–P,P-‡N0~M4tL7jK<bJ?XHBOGDKFFFEGDFIAFI@FJ?EK?EI?EI=DI=DI=DI=DI=DI=DI=DI=DI>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI?FK>EJ=DI>EJ>EJ>EJ>EJ=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI>EJ>EJ>EJ>EJ=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI>EJ>EJ>EJ>EJ=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI?EI@EHBEHFEGKFFQGDYI@cJ>lL;uL6€N4ˆO0P-–R+šR+R* R(¡R' R(R*šR+–R+Q.ˆO0N2uL6mL:cJ>YI@QGDKFFEEHBEH?EK?EI?EI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ>EJ=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI>EJ>EJ>EJ>EJ=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI>EJ>EJ>EJ>EJ=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI>EJ>EJ>EJ>EJ=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI?EI@EHBEHFEGKFFSHC[I@dJ>mL:wM6N2ˆO0P-”Q+˜Q)šR+›Q*šR+˜Q)”Q+P-‰O/‚O4wM6oL:dJ>\I?SHCJGDFEGBEH?EK=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI?EL?EL?EL?EL=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI?EL?EL?EL?EL=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI?EL?EL?EL?EL=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI?EI@EHDFHHFGLFETHB\I?eJ=nK9wM6N2ˆO1P/‘Q-”Q.”Q+”Q.Q.ŒO.ˆO1N2wM6nK9fJ<]I@TGANGEHFGDFH@EH?EI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI?EL?EL?EL?EL?EL?EL?EL?EL?EL?EL=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI?EL?EL?EL?EL=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI?EL?EL?EL?EL=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI?EL?EL?EL?EL=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI?EIADHDFHGFENGETGA]I@eJ=mL:uL6~M4„N2‡P0ŠP0‰O/‰O/ˆO1ƒN3~M4uL6oL:fJ<^H?TGAOGDIFFEFGADH?EI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI>DH:@D;@C:?B;@C:@D>DH=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI?EIADHDFHIFFNGETGA]I>dJ>lL9sM8wM6|N3N2N2~N3|N3wM6sM8lL;dJ>]I>TGAOGDIFFEFGADG?EI?EI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI>DH:@D9>A4533424539>A:@D>DH=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI?EIADGEFGIFFNGETGA[I@aJ=iL;mL:rM9sM8tL7sM8pN8lL9fJ<aI>[I@TGAOGDIFFEFGCEH@EH?EI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI9@B8>?34222/22/22/3428>?9@B=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI?EIADGEFGIFFNGERHBWH@]I>aJ=dJ>fJ<fJ<eJ=cJ;aI>\I?WH@RHBKFCIFFEFGCEH@EH?EI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI<CE:?B45322/22/22/22/22/453:?B<CE=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI@EHADGEFGGFEKFCPFCTHBWH@ZH?[I@[I@[I@XH?UG@RHBOGDJEEGFEDEFADG@EH=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DF<CE;@C8;>12011.11.11.11.11.1208;>;@C>DH=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI@EHADGDEFFFFHFDKFCNGBPFCRGBRGBPFCPFCKFCJEEGFEEFGCEG@EH@EH=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH=CI;@C9>A9;=33311.11.11.11.11.11.11.4449>A=CG>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH=DI=DI=DI=DI>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH=DI=DI=DI=DI>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH=DI=DI=DI=DI>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH=DI@EH@EHADGDEFFFFFFFHFDHFDHFDHFDGFEFFFEFGCEGADG@EH>DH=DI>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH=CI:?B8;>13201/00-00-00-00-00-00-00-00-01/9;=:?B>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH=DI=DI=DI=DI>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH=DI=DI=DI=DI>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH=DI=DI=DI=DI>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH=DI>DH@EH@EHADGADGCEGDEFDEFCEGADGADG@EH@EH>DH=DI>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH:?B8;>12000-00-00-00-00-00-00-00-00-00-00-1329>A=CI>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH=DI=DI=DI=DI>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH=DI=DI=DI=DI>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH=DI=DI=DI=DI>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH@EH@EH@EH@EH@EH@EH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH=CG9<@33300-00-00-00-00-00-00-00-00-00-00-00-01/8=@=CI>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH=DI=DI=DI=DI>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH=DI=DI=DI=DI>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH=DI=DI=DI=DI>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH:?B7:=/0.//,//,//,//,//,//,//,//,//,//,//,//,1118=@=CG>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH=DI=DI=DI=DI>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH=DI=DI=DI=DI>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH=DI=DI=DI=DI>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH=DI=DI=DI=DI=DI=DI=DI=DI=DI=DI>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH<BF9<?021//,//,//,//,//,//,//,//,//,//,//,//,//,/0.9<?<BF>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH=DI=DI=DI=DI>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH=DI=DI=DI=DI>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH=DI=DI=DI=DI>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH=CG=CG=CG<BF:?B6;;./-..+..+..+..+..+..+..+..+..+..+..+..+..+./-6;;:?B=CG>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH<BF:?B8=@8=@7=>6;;/0...+..+..+..+..+..+..+..+..+..+..+..+..+..+..+/108=@<BF>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH<BF:?B7:=.0///////-.,,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*-.,6;;:?B=CG>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH=CG:?B8:<./-,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*.0/9<?<BF=CG>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI<BF8;>000+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*),-+68:8;>9>A<BF=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI>DH>DH>DH>DH=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI>DH>DH>DH>DH=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI>DH>DH>DH>DH=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG9>A5::,-++*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*),-+00069<9>A<BF=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG>DH>DH>DH>DH=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG>DH>DH>DH>DH=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG>DH>DH>DH>DH=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=BE8;>///*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(,.-79;:=@=BE>CF=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG>DH>DH>DH>DH=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG>DH>DH>DH>DH=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG>DH>DH>DH>DH=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG>DH>DH>DH>DH>DH>DH>DH>DH>DH>DH=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG>CF=BE=BE=BE=BE:=@68:+,**)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(-.,68:8;>:=@=BE=BE=BE=BE>CF=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG>DH>DH>DH>DH=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG>DH>DH>DH>DH=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG>DH>DH>DH>DH=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CI=CI=CI=CI=CI=CI=CI=CI=CI=CI=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG>CF<BF<BF<BF<BF<BF<BF<BF<BF=BE:=@8;>7<<7<<8:<68:,-+)(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')('+*)...68:8:<7<<7<<8;>:=@=BE=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CI=CI=CI=CI=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CI=CI=CI=CI=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CI=CI=CI=CI=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG<BF;AE9>A8;>7:=7:=7:=7:=7:=7:=7:=6;;499...,,,,,,,,,*+))(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')('*+),,,,,,,,,...5::9>A=BE=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG;AE8=@6;>47:,-+++++++++++++++++++++++++*)(('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&,,,58;8=@<BF=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG<BF<BF=BE=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG;AE8=@68:,,,)*(('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&,,,6;><BF=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG=CG6;;7:=8=@<AD<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF;AE9<?499+++'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%***79;<AD<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF=CG=CG=CG=CG<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF=CG=CG=CG=CG<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF=CG=CG=CG=CG<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF***,,,57969<6;;6;;6;;6;;6;;7:=9<?:AC<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF:AC9<?499+++'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%)('5799<?=BE<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF=CG=CG=CG=CG<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF=CG=CG=CG=CG<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF=CG=CG=CG=CG<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF'&%'&%)))******************,,,4999<?<AD<BF<BF<BF<BF<BF<BF<BF<BF<BF=BE9<?499+++'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%,,,7:=;AE<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF=CG=CG=CG=CG<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF=CG=CG=CG=CG<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF=CG=CG=CG=CG<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$***5797<?=BE<BF<BF<BF<BF<BF<BF<BF<BF;AE69<+++&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$)))5::;AE<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF=CG=CG=CG=CG<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF=CG=CG=CG=CG<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF=CG=CG=CG=CG<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$+++5:=;@C<BF<BF<BF<BF<BF<BF<BF<BF;AE58;)))&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$)))58;;@C<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#'&%4687<?<AD<BF<BF<BF<BF<BF<BF<BF;@C58;(((%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#'&%4687<?<AD<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#)))3887<?<AD<BF<BF<BF<BF<BF<AD7<?468'&%%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#***5:=;AE<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF<BF$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"***69<;@C=BE=BE=BE=BE=BE;@C69<***$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"&'%68:<AD=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE<BF<BF<BF<BF=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE<BF<BF<BF<BF=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE<BF<BF<BF<BF=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"&%$3578;><AD=BE=BE=BE<AD8;>357&%$$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"'''68:<AD=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE<BF<BF<BF<BF=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE<BF<BF<BF<BF=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE<BF<BF<BF<BF=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!)))5::;@C<AD<AD;@C7<<366'''#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!&'%588<AD=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE<BF<BF<BF<BF=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE<BF<BF<BF<BF=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE<BF<BF<BF<BF=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!%$#166579588588579255'&%#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!%&$588<AD=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE<BF<BF<BF<BF=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE<BF<BF<BF<BF=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE<BF<BF<BF<BF=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE"! "! "! "! "! "! "! "! "! "! "! "! "! "! "! $#"%&$%&$%&$%&$$#""! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! %&$579<AD=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE<BF<BF<BF<BF=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE<BF<BF<BF<BF=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE<BF<BF<BF<BF=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE"! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! %&$579<AD=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! $%#579<AD=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE=BE! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! $%#579;@C<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD=BE=BE=BE=BE<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD=BE=BE=BE=BE<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD=BE=BE=BE=BE<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD                                                                                     $$$468;@C<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD=BE=BE=BE=BE<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD=BE=BE=BE=BE<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD=BE=BE=BE=BE<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD                                                                                     #$"468:?B<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD=BE=BE=BE=BE<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD=BE=BE=BE=BE<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD=BE=BE=BE=BE<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD"""05569<:?B;@C<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD=BE=BE=BE=BE<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD=BE=BE=BE=BE<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD=BE=BE=BE=BE<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD$$$05538869<:?B<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD=BE=BE=BE=BE<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD=BE=BE=BE=BE<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD=BE=BE=BE=BE<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD! %%%14769<:?B<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD###14769<;@C<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD$$$388:?B;@C;@C;@C<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD .3325825838869<:?B<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD !!!!!!###0555::;@C<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD###468:?B<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD02458;:?B<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD<AD !/2547:9>A;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C<AD<AD<AD<AD;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C<AD<AD<AD<AD;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C<AD<AD<AD<AD;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C;@C 0245799<?9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A:?B:?B:?B:?B9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A:?B:?B:?B:?B9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A:?B:?B:?B:?B9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A9>A,-./13358357357357258469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469469(+.*/2+.1+03-3906=17=28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28?28? (.4,29-5@09H2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J2;J (1=,7F.<N0=Q3?R2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S2?S'2>*6F+8L/@Y2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\2C\#%3E*9R.Ca/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed/Ed%%7N)@`+Be+Be+Cg*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh*Dh 0E"4N"7R"9Y%Aj'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl'Cl' 4V!@m"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp"Bp 2U=o@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v-O6c>w@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|@|'2\=x>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>,R5i>‚>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„>„'0b <ƒ
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡
+>‡ /` <ƒ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ ?ˆ/] <€ >„ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡ >‡+Q5j>‚ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„ >„$1_>~?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚?‚.X=z?~?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????*N4d=w>{@~@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@~@|@{@{@{@{@{@{@{@|@~@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@,M2\5c=v?y@{A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}@{?x<j;e;d;d;d;d;d;e<j?x@z@z@z@z@z@z@z@z@z@z@{A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}#*K2Y6d>v>wA{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{Aw;i;b:Z,4?-39-39-39-39-39,4?:Z:a;`;`;`;`;`;`;`;`;`;d;i@vAxAxAxAx@zA{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{#+L2W6a>s?u?u?u?u?u?u?u?u?u?u?u?u?u?u?u?u?u?u?u?u?u?u?u?u?u?u?u?u?u?u@vByA{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{ByBy@v=h:[+3<.1422222/22/22/22/22/222.14-39-39-39-39-39-39-39-39-39-39+3<:Z:_<a<a<a;b<g@vAwByByA{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{A{ByByAwAwAwAwAwAwAwAwAwAw ,J1S1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V3X6a>r@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@v@vBxCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCyBxBuBuBuBuBuBuBuBuBuBu@u<f<a :X-3:11111.11.11.11.11.11.11.11.11.11.11.11.11.11.11.11.11.11.11.111.14-17-17-17-17,3; :X;`;a<f@uBuBuBxCyCzCzCzCzCzCzCzCzCzCzCzCzCzCyBx@u<f;a;`;`;`;`;`;`;`;a<e + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ++I0S0S0S0S0S0S0S0S0S0S0S0S0S0S0S0S3X6a?q@s@s@s@s@sCvBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxAt<f<`;];];];];];];];];]:]!9W,3;/1411111.11.11.11.11.11.11.11.11.11.11.11.11.11.11.11.11.11.11.11.11.11.11.11.11.11.111/14-25,3;!9W:];]<`<fAsAtAtAtAtAtAtAtAtAtAtAtAtAtAs<f<a!9W,3;-25-25-25-25-25-25-25,3;!:V + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ++I0Q1S1S1S3U6]?nAsAsAsAsAsAsAsAsAsAsAsAsAsAsAsCtCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvCvBuAq=d:Z,29,14,14,14,14,14,14,14,14,14,14-0300000-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-000-03,14,14,29!:V;];];];];];];];];];]<_=a<_;];]!:V,29-0300000-00-00-00-00-00-00-000-03 +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + +G1O2P2P2P2P2P2P2P2P2P2P2P2P2P3U9]BpCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsCsBq=c!;X+17/////,//,//,//,//,//,//,//,//,//,//,//,//,//,//,//,//,//,//,//,//,//,//,//,//,//,//,//,//,//,//,//,//,//,//,//,//,//,//,//,//,//,//,//,//,//,//,///,/2,14,14,14,14,14,14,14,14,14,14+2:$9P+2:,14,14,/2/////,//,//,//,//,//,//,//,//,//,//, +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + #4RCnDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrDrCp>a!;U+17/////,//,//,//,//,//,//,//,//,//,//,//,//,//,//,//,//,//,//,//,//,//,//,//,//,//,//,//,//,//,//,//,//,//,//,//,//,//,//,//,//,//,//,//,//,//,//,//,//,//,//,//,//,//,//,//,//,//,//,//,///,.0/////,//,//,//,//,//,//,//,//,//,//,//,//,//,//,
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +  4RClErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErErDm =[*16.....+..+..+..+..+..+..+..+..+..+..+..+..+..+..+..+..+..+..+..+..+..+..+..+..+..+..+..+..+..+..+..+..+..+..+..+..+..+..+..+..+..+..+..+..+..+..+..+..+..+..+..+..+..+..+..+..+..+..+..+..+..+..+..+..+..+..+..+..+..+..+..+..+..+..+..+..+..+..+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
++@2L2M2M2M2M2M2M2M2M2M2M2M2M2M2M2M4O9ZCmEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpEpDmBi ;V*/2,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + + + 3NBgDlDlDlDlDlDlDlDlDlDlDlDlDlDlDlDlCjFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoFoCj!?^!<W#9N*//,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*,+*
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + + +,C2J3K3K3K3K3K3K3K3K3K3K3K3K3K3K3K3K3K3K3K3K3K3K3K3K3K3K3K3K3K3K3K3K3K3K3K3K3K3K3K3K3K3K3K5P9WEj Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm Gm GmDi"@\#;P*04+-/++++*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+0E9UCgDiDiDiDiDiDiDiDiDiDiDiDiDiDiDiDiDiDiDiDiDiDiDiDiDiDiDiDiDiDiDiDiDiDiDiDiDiDiDiDiDiDiDiDiDi Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Gl Ej"@\#;P)/3+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)+*)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ .@3I4K4K5L:S Cd"Fj"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Gl"Hj"Ef#=T)/3****)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(*)(
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+     .@2G3I3I3I5L:S!Cc!De!De!De"Ef"Gh#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Hi#Fg$?Z#9K*+,)(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')('
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+  +;2G3G3G3G5L9Q Ba!Db!Db!Db!Db"Dd#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg#Fg"Dc#<R(.2)(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')(')('                                                                                                               
+3IA^ Ca Ca Ca Ca!Cc"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Dd"=X#9K)*+('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&('&                                                                                                              
+
+
+ -?8P Ca"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef"Ef!Db!Db!Db!Db!Db!Db!Db!C`";Q&,2''''&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%  ,@6NA^!Db"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd"Dd!Cb!Cb!Cb!Cb!Cb!Cb!Cb!Cb!Cb!Cb!Cb"B`"=U";Q#;N#;N#;N#;N#;N":M$8F()*'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&%'&% ,@5M @^ Ca!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc!Cc Ca Ba!A_!<T!:P":M":M":M":M":M":M":M":M":M":M!7I%+1'),'),'),'),'),'),'()&&&&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$ + +>5L?] B_ Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba Ba @^!;R":O"7H%)/%(+%(+%(+%(+%(+%(+%(+%(+%(+%(+'()&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$&%$ )90C5M?[A^A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A`A` @^ @^ @^ @^ @^ @^ @^ @^ @^ @^ @^ @^ @^ @^ @^ @^ @^@\ :Q!7I$(.&'(%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#%$#
+        *=4K=Y?[ @^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^A^@\ ?[ :Q!9N!9K!9K!9K!9K!9K!9K!9K!9K!9K!9K!9K!9K!9K!9K!9K 8J!6G$'*$$$$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"
+ +'8,@-?-?-?-?-?-?.C3H=Y?[?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]?]>Z9P 6K 5F#'-%')%')%')%')%')%')%')%')%')%')%')%')%')%')%')%')%&'$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#"$#" )92H;V=Y=Y=Y=Y=Y=Y=Y=Y?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[=Y 9O 5F"&,$%&#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!#"!                     (;1G;W>Z?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[?[=Y8N4E"%(""""! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "!  +'6*=+?+?+?+?+?+?+?+?+?+?+?+?*='6 
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +'6*=+?+?,A1G;W=Y>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z>Z<X5J!&)"! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! "! 
+
+ 
+ '70E:S;V;V;V;V;V;V;V;V;V;V;V;V:S1G,A*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=&5
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ '70E:S;V;V;V;W<X<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y<Y;W4F"$&! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !  $4)<)<+?0F:S;V;W;W;W;W;W;W;W;W;W;W;W;W;V;V:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U9R0F+?)<)<)<)<)<)<)<)<+?0F:S;V;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;V3E!#%                                                                                                                                   
+$3*>0D8Q:S:S:U;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V:U:S:S:S:S:S:S:S:S:S:S:U;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;T;T;T:R2D!"#                                                                                                                                    +&5.C8P9R;T;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V;V:S:S:S:S:S:S:S:S:S:S:S:S:S:S:S:S:S:S:S:S:S:S:S:R5J3E2D2C.= !"
+ +"2(;.C8P:S:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:U:S9Q4I2D1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1B/>#&!#!# !""1,A7O8P9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9Q3E/>!% " " " " " " " " " " " " " " " " " " " " " " ! ':5M8P8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8Q8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P6N1F.= #           "2+@7O8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P6N1F0A/?/?/?/?/?/?/?/?/?/?/?/?/?/?/?/?/?/?/?,; #
+ + .$5&5&5&5&5&5&5&5&5&5'7*>5K6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N6N5L/? &
+ +-#3%4&6)=3J4L4L4L4L4L4L4L4L4L4L4K6L5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M0B+9#3#3#3#3#3#3#3#3#3#3#3#3$7(<2I3J3J3J5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M5M4K4K4K4K4K4K4K4K4K4K3I/C*:!2I2I2I2I2I2I2I2I2I2I2I2I2I2I4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L4L3H3J3J3J.B+>+<+<+<+<+<+<+<+<+<)7 3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J2H2H2H.?+<,;,;)7!3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J3J2H2F2F2F2F2F2F2F2F2F2F1F+>*:*:*9(42I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I2I1E*=+:)9)9)9)9)9)9)9)9)9)8'31G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1G1D0E0E0E*='30D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D/B*:(8(7(7&2/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/D/B)9%1.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.@'6.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A,A&6,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A'8".+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@*>'6$2$2$2$2!-*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>)<)<)<)<%5#2#/#/#/#/#/#/#/#/#/#/#/#/#/#/!,)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=):(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;$3#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1#1". ,(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;(;&9#3 +':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':%8#2*':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':':&6#2!-!-!-!-!-!-!-!-!-!-!-!-!+)%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8%8&6&5&5&5&5&5&5&5&5&5&5&5&5%6"0++++++++++++++++++&%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4* + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5$5%4) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4%4#2) +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + "2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"2"1)(&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&# +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + "1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1"1!/!/!/!/!/!/!/!/!/!/!/!/!/!/!/!/!/!/!/!/!/!/!/!/!/!/!/!/!/!/!/!/!/!/!/!/!/!/)&!
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0!0 .(%%# +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .)') . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .+-' + + +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------******&&***********----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*&! +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ******************************************************************************************************************************************************************************************************* +$ !                   ! +$**************************************************************************************************************************************************************************************************************%# +
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ ******************************************************************************************************************************************************************************************************' !  
+             +"(***********************************************************************************************************************************************************************************************************($ +
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) +"  
+
+
+
+
+
+
+      +"))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))# + +                                                                        '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''&   %%%&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& !      
+
+                   !&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&                                 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$  +
+
+
+
+
+  
+
+
+
+
+
+
+
+
+
+
+
+ 
+ + + + + + $%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$ + 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+  +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +" 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+               
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+       +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ +$ # 
+
+ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # +"           +
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+                   +" # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # +"   
+  +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +"             + + + + + + + + + + + + + + + + +    
+
+
+
+
+
+
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + +     + + + !  +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" +" 
+
+
+  ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !  + + + + + + + + + + 
+
+
+
+
+
+
+ +  + + + 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +  +                 ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !                                                                                                                                                                                       + + + + + +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +                                                                                                                                                    
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+  
+
+
+
+
+
+ 
+ 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+  
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+          +                               
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 
+ + + + + +                                                                                                                                                                                   
+                                                                                                                                                                
+   
+     
+  +   +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +    
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+     
+
+
+
+
+
+
+
+
+                                                                                                                                                                                                                      
+ 
+                                                                                                                                                                                                                                       
+ + + + + + +                                                                + +                                                                                                                                                                                                                                                                                                                                                                                                                                                                               + 
+
+
+
+
+  +                      
+                             +
+
+
+        
+                   + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +     + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +                     + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +                      + 
+
+
+
+
+
+
+
+
+
+
+
+
+
+  
+
+
+
+
+
+
+
+
+
+
+
+  +                                                                                                              +   + + 
+  +                                                                                                                                                                                                                 
+ +
+ +
+ +
+ + +                                                                                                           
+ +                                                                                                                                                                                                            
+  +
+ 
+  
+                                                                                                 
+   +
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+  
+                                                                                                                                          
+ +
+ + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+
+  + + + + + + + + + + + + +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+                                    
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ + +
+ 
+                                                                    
+ 
+
+                               
+
+
+
+                                                                
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    
\ No newline at end of file
Index: demos/branches/xen/bca/bca_raw/esplo3.raw
===================================================================
--- demos/branches/xen/bca/bca_raw/esplo3.raw (nonexistent)
+++ demos/branches/xen/bca/bca_raw/esplo3.raw (revision 1684)
@@ -0,0 +1,75 @@
+ÿÿÿÿÿÿÿÿÿ "ÿÿÿÿÿÿÿÿÿ5Si\cSO+3""ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
+,-@H2B-; +'A _n–D•JŽR žr)nVn`#O@ ++ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ=E‰Npy6kq5CC! "@b"t)´eÊ$͉(Й5Ɯ:©Š/oU=,5++&0.HGYU e_F>A9#ÿÿÿ
+ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ8@y~Fpt9fg.?;3%F) Io2œTºq
+ݖ"۝&љ џ&º’—x_Kxm~{ur |¥ž,¤™%º­;–ˆ%s'dZ%*%%!0( ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ%#
+86..:81.]R“x3|P˜[ÃԒ؞Ó¥Ò¨ ã´&Í£ݾ%±œȽ#ÊÆ/¤Ÿ·±%¾³% ‘º«¼®)¬¡-†€ MJDAOJŒ1wd wf0H?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ + + ÿÿÿÿÿÿ'#~s3¡„6 r¹z¶sã¦Ú¨Ùµ!׸ æ¿"á¼γãÐȽ ÅÀÊÆ°«×Ï,¹»° À¶º´ ®ª%‹ˆ{“†•€±”6…hzh(ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
+&!PBvT‰U ´r°iÝ¡ܬ
+ÝÀк˳ äÎ"× +ʺÒÇ Ã»ÑÌÎÌ·¶ÇÈÁÃ
+»¼ËÊÙÖ1¾·¿°!¨œ¹‹½‘.¶˜B`PII ÿÿÿÿÿÿÿÿÿ%#?? +212,)]@X+ša͒
+ڥҪӹ ˺
+ɺ ßÓ³Ñà ÙÎÊÁËÆÊÊ
+ÒÖÍÔ ÌÐÝßßÚÓÈо¾¢¬µz¾{Ɋ ¿‘/²˜;‰ƒ+NTÿÿÿÿÿÿ* OF…ˆ~¨Ÿ&«Ÿ'œ‰¡‰Ç¥ϪÙ´б˴ŵ·Ƽ½°¿´ɾÊÁ
+ÐÌÑÑÕÙÒÖ××çß×Æؾ Ыϝ¾x´_½_Ðx΍'Ǟ4µ¨6¡¢-ÿÿÿ$1&tg ·)ÚÑ*ÐÉ#ãÛ:ìßE×Å'ÞÄÚ¹
+á»׳ÓµÔ»Ò¾Ƶ± ³¤¾²À¸ +ÊÅ ÏÌÆÀÔÈÝÊéËܳ à®Ú¡
+ޕÑq
+Ë]Ô^ØkÍzǐ¹¢ §¡ÿÿÿ%qh +¾¸&ÒÐÌËåà$éÝ)àÈéÃä´ê´ ç±ܯ Ú±ͤȢ¦ˆ“} ’¶­È¿È» +×ÀæÁÛ§ɉ»qÃtÆrÐq×` ÕPÚLÖRÇaǂ 䶫ÿÿÿÿÿÿÿÿÿTSœžâæ:êí,ÜÙèÕöÓ!ýÂ&æœãê–&à–ו̗۟¾—γ˼!¬¢©žº¨Ä¢Õ¡ǀ³]·WÆcÆaÊXÙO×>ß>àKÔ^р Ç ·¦ÿÿÿÿÿÿÿÿÿ1<MY¡® ÄÍßÛéÌñ¹àˆ¼O´8ÂEÀLÂ\ىô¸
+ùÌîÐáÐÔÊÉ¿½©Ë¦ÓœÆyº]Önñò ïpâJÝ5æ7òNîkæ‰ϟ!µÿÿÿ,1CHZ_…³µ áØâÀٜÅh¼H¼:¿:³2¾Lí– ý»þÌýÙóÞëÜ +ïâõãõÕ ñ½âœ؀ôŒÿ“"ÿ!ÿvå?Ý'â$ë;ïaò3ß©=æ0 _P«™E¢Œ®•¿§ÞÌ"× +Û»֦ω݅ã}ØkºJÄ]æ“ÿ¾$ÿÍ#ûÑþàÿï$þï"ëÜòÜîË÷Â÷®ÿ¢#û†ókâGØ(ØÚÖÕ= ßr/̐:¨†%D#‚` ´’'ïÊEäÀ*Ü»êÎ"æËáÂéÁé´ öµú¬ õŸ Ü~ë‘ܒ +ږޙ÷¸ÿÓ ýÖôÚñÜößîÎ ýËù°òÚ[
+Ô> ÇÐÞãÐÁ!ÂIUh77n@¶ŽÙ¶$ëÌ#ñÔëÑôÚ!åÈ
+áÀã¼ì¼ð¶ +î©ð£õ¨&ä¡í¥߃Ôtè“ÿ½ÿØ#þÜôÑþÒ +ÿÉñ›ßjÈ7Ì"Óë ÛßÚ Ä +¡uN]’Pŏ"Чݼ ðÒëÍçÉâÄß¿Þ¾äÀéÀê» +ëµë´â«ޜÛÖråþ·ÿÔÿâÿàÿÖùº +Ï{ÇY»4Ë)ÕÙä æÁ¬ £ {HzŸ@Éܤç»ëÆä»ç¿èÀèÄåÇãÊåÐèÓçÎâÅÓ¯ĕ֑ޖé«ûËõÙ ÿèÿåÿÙ÷À +яè•ë…ø|úaÒí#ÐÈ´$wLÿÿÿªBԂé¨ê¶Þ¯џاóÄ÷ÑôÙìÚêÝîâëßåÑëÌÕªïº üÅûÎÿÜïÔùßûÔ
+ñ¿å¬Քÿ¼)ÿ²-ÿ-üu#Ú-à Ç©Š 3$=ÿÿÿ€²Q +ã“"ë¨è®å® ܢܢúÆÿÛÿçøæ
+ñãõçõãð×÷ÎÞ­ð½÷ÇõËúÕ
+òÌÿÕ ÿÆæŸхπÿ²*ÿ­1ú’1èh!Õ4É°³)¢5w)U&ÿÿÿk +¡G â*þ±-ÿ¶!ö°ê¥
+ï±÷ÆÿÝÿíøëòå +ôçõâ
+òÖôÉ é¹ôÆôËôÑýÚ úÐÿÏè¢Éy´b»hو݃ Ïc º:¸#¼#®8­S;…G2C +ÿÿÿ_ ‡2 +Éo!ö—+ÿŸî”à‘ê­íÇ
+ñßôííìêæëâêÚçÏ æ¾ðÇ ïÌäÉæÌèÌä»ß©ê¦؍ЄٍӃÓv¾K ›¥¦0œ<$¢[G€QA&ÿÿÿ<d
+D ¼XÔkáߒâ­èÍêáììêëéãéÝâÔÞÇèÅ ÿÞõÝ ê×óàýãüÖóÁ
+ó¶ñ¯õ²ÿ·'åê„Û[¹1¢!˜$ + x+G#ÿÿÿÿÿÿÿÿÿO|.¬P¤?çŒ٘߸êÛäáëçïèïà ïÝ +éÙâÍðÓ õÚ +ðàïãóäõÝûÖÿØ"ÿÓÿÊÿË"ÿ¿+û›+õ|-ÝK»&Š +iV9'ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ@žSêš)í¦Þ®ðÖìâëåõçûåùÞúß
+öâ ïÜðØóßðäðçöçúã ÿÛÿÜ%ÿÚÿÓÿÎú²áyÈA º°“p V/ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿK9„a¢wÏ ëÁõÝ#íÞïãóãÿàÿÜÿÖÿÜÿæùçúåøçòêðèôãöÝûÖýÕþÙÿÛýÈã“
+ÇQ°³ º·+v‡0P#ÿÿÿÿÿÿÿÿÿA2†t ž‡ŪÜÃ!ßÊôæ!ÞÔîàôßÿÝÿØüÒýÚýè÷ê÷êöêñíóìöçþåÿàÿÛôÔúÓñ¸ چËT°¶Â(Ë>ÀJ°W-s4)ÿÿÿÿÿÿ±Š#°ѵ&̵àÍèÚÛÏìÞ ñßôÞúß
+÷Ýî× îÞ ðéíéðêíéðî +ñïñä
+óß ñÖ äÇéÌéÂç«åãr¹8¶7ÃCècùƒCËr8Q"F"ÿÿÿÿÿÿµ Í¡ϳ×ÄèÞéÞèØ ÿìñÚðÜñßëÞåÙäÜ +éáæÝíßëÞñçõéòÝòÕëÊزâ¹ê´ êšä~ôz +ãeçuØi +ïx&áu,Çw8c0* +ÿÿÿÿÿÿ¾‡ʟ·¡ÐÅÝÖÛÒ èÑâÆïÔëÖäÜ ßÞÛØà× êÕëÌìÊéÆïÑ÷ÕøÍÿÑ"ÿÐ÷º
+ë¦ ä ÙgÚTÿoÿvÿ’6×rØq"°Xu;> ÿÿÿÿÿÿÿÿÿl>•r
+›‰×Ò0ÒÑîçì×
+õÛîÕæÕáÛ ÝÜÙØ
+ß×êÑëÆòÂèµç¶æ³
+ä¨
+ô±ÿ¶õ ü%ÄV¯*ÓDÿs$åd Ûp­U±aOƒY:'20"(ÿÿÿ! 0A5ÉÃGåã6åäüõ!äÚìßâÔáÖ×ÏØÑÞÔÔÅöØí¶â¢Ïè¦ ë£÷¥ò•ü“*ßkÇHµ1³0ÉQáwò™#ɄĐ ¥Õ¸6ÔÀG©ž2š–5OLOOÿÿÿ!(¿ºRÐÑ-ô÷.ééíêÖÐïèßÔÞÓèßâÛæÜÖ¼ +è¸ð±ù¶÷¬ÿ©&þ›&ãnÌJÀ4¯ ¯%!Òj õŸ(û¶+ÿÏ5Ö·æÑ&ÛÈ#ÿñSãØHæß[¸µDEDÿÿÿ%Œˆ%çéJâå$Ýßâã æã
+ÞÙÑÈìäÇÁÔÌæÚ,äÒ4¼œ ˝õ»5þ°2æ‚íséXÕ6Ø3òRÐ?ÇKò’"ؓ
+êºþß-äÐæØãÙèß*ùõL×Ö>¡£\`ÿÿÿÿÿÿÿÿÿ+)£¦ÌÐ#íî8àá!áßÊÆÙÓàÚ"ØÓóì;ź"Ž€gV“və3̃$à|'·;¿-Ä'íMüe0ùv2Òh·jº‡Ø»åÕòæ"ß×ñê*ëé2×Ö.ÍÐ9ˆ‹
+X]ÿÿÿÿÿÿÿÿÿXW‘•&½Á8ÁÃ2æåMàÞ>àÜ;Ü×=Á¼"ÕÑ0¶°§"g]-%'Q-q7ˆ43 ¯4ÇG$éjGïQ߁C›S}M±• +Á´Û×-ÛÕ%øòDÌÇ!¿"£¢œž!Œ$Y]ÿÿÿÿÿÿÿÿÿEGdd
+he‡ƒ š–*¤ž.w§ ,¬¦*zs‚)<4##ÿÿÿ-[’A,–=+ªO<•C+¨aAn8
+f@i—Š!®ª/Á¾9ľ6Áº5«¦(wtom^^PR ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ&=33(D;wp „|1ma-;2ÿÿÿÿÿÿÿÿÿ8MQ!.1ÿÿÿÿÿÿ.+OLe]PHulA8e].& ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ#;2"8+ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ"ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ*,"ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
\ No newline at end of file
Index: demos/branches/xen/bca/bca_raw/esplo4.raw
===================================================================
--- demos/branches/xen/bca/bca_raw/esplo4.raw (nonexistent)
+++ demos/branches/xen/bca/bca_raw/esplo4.raw (revision 1684)
@@ -0,0 +1,51 @@
+ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿBJfa\[ H
+?)ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ&2KYYehslq=A87ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ33VT#;7A;'ÿÿÿ*%d$p$y)Š>œZ:šd>}U$gKI2ÿÿÿ ÿÿÿ#Zb t{ ˜ž¯³*’’~{KELDh^un&IKDLCHÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿHG‚@yy3{z:DA'>V"z=”U)ŒR"`(v1¬ˆ4 €-„f(2?-3&=6fa“²­»´¹¯Š~zmoasešŽ¹²-¯¯+¬°7op
+:8ÿÿÿÿÿÿÿÿÿÿÿÿCB|{;cctu/AB.+3'@(J$oCwH{S~b!x_Ÿ‚µ™.‡l\F–ƒ4xhui†®£ Ä·¹ª¼¬±¡“ƒ„v¸­ ÉÁ ƾ½ÊË2··5ª¦BRJ ÿÿÿÿÿÿÿÿÿA=/-86**XV#up8xk4~g5ƒg8gL!r[/nc+i`¡)´¡+·¦2·©/¾´1ƽ0«¢ÉÀµ·©¼ª
+ȸÕÇ&ÔÌ#¹´Ã»¹ßÝ(ÂÁéçDµ·(§¨3{z'ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿfd;•“`}vBpb5uc=m^?mc@YX*lm+†~˜¸¯.¹²$½¹ÇÄÑ͵­Í¿²Ÿ
+÷ ÐÇêç(äçéî ßß¼¸ÎÈÁºÕÑ:žŸ \`ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ JH1QN+YU/bY<i^JlcTniUZ^;\a)…ƒ0|x ¬¬*¹¹%À¿ÆÆËÇ ×ÓÍÆÐÈÍÇÓÐãåâçÚâÞåÓÐã٠ŵɹÙÎ4—”syÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ&! #?9+b[Sg`ZfcTimH^c)pn$‚ ››#ÁÀ2ÔÒ/ÊÉÅÁÒÍÐÉÙÓ +ÕÐÞÝÚÛÐÔ +äé+áß*ÝÐ"Ö»ğ¼™Ï´­ ŠŠNWÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ + +@7<`XUQL6po7€€:ld%~v+€x¥Ÿ#«¥ÇÀÔÊÒÉÐÆûß×ÓÍÊź³ ÔÍ4ÖÄ4Ï©"Ȓ À|юȔȦ¸®¢¢ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ3)'UK0cYzq&i_"i`]U_V–Ž»²)¹®™Œ‚°¨®¦Ǿ3‹‡y‹|ž€²{³g¸YÐsʀșº§ ¥¡ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
+B3Œx;‹y/TK
+^YG@\U{txp¢9mgRLE>QHXM o`P@ZHfAˆCž>´@ÍZ¼aº~»¡·±ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
+?*†h4sXVIUP \T_WG>GADB*(;2!4$
+C0_If<|-œ/»5ÔQ ÁY¿y½ ¹¯ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ6 R,P-H8z)VNLD!$ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ0J. l;9§1 +¼+ÚJ ×e +܎!ɧ)ª¡ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ  !3CK3aQ_P1$% ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ9 oJ-•Y5ž;²/½Ò2ÔRå‹+×­=¶£+ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ +*4 EZ2sPR3YAG4' ÿÿÿÿÿÿÿÿÿL$
+vBžS,œ)¼&ÈÍÃ-ÕgƎ1¤„!ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ  + + + &%+>"g9p;yG_%£r/¿”E€^j]T(&! ÿÿÿÿÿÿG'j9r-Š( Ã
+ÒÕÄÉI¥Vm8ÿÿÿÿÿÿÿÿÿÿÿÿEB —’XNK40
+61;5J=fN…a½;Í7Õ¦LÁ9¡]¦c·‚Ä .º«6|x>;"5#!B" +m5z œÅ$ÁäÍÀ +¿- ~ÿÿÿÿÿÿÿÿÿÿÿÿ*]Muh™Ang!SLE@@7L?…p!¶™;Û³SϤ>Í£=¬{’M–NcÀ™ ʺ1‚|[TMEQF0J8$W6F‡*£$È(Í
+É×Æ—jÿÿÿÿÿÿ8 ]?W8tZt]’)\PMD50/-87idˆ}!š‡(¢Š*¦‰+•o„M†NŽa³”(ÑÅ=µ­&|n\J^K YA_B…U¦_!»U$§"¿'¹±¦^ Aÿÿÿ€W;¦|J¡y1µ‘3˜{Žv `N 4+#*Zaoshbk_sa‚f%sM qHuWua
+…¶ª0u Žp„f‚c¦‡4À›KďK”IŠ$Œ“’
+wI
+#[)}L!»‹KÑ¢TΣG {"rT ;$+'$8>>Idp.mw:]`5ZV1MD^O&UA P<N?A4TE„n"·’DȞJ¡u’n«Ž2•{'‘o/pBYim ‰(…-ŠE5O&ÿÿÿ@R"g8|Oc‡`>68) 4/NU"do3q}?Xb.RU:baOQO:GC*E?'C=#:6@:N@T;f<
+tB}L–lqaML8' +,7De$–[K„WD;$ÿÿÿÿÿÿ3R,:;:B" )@0( 11X^u{;dg2eaD`]NccYOQFLP?IN::>-<=-C6-A'_5i8{JzQgJH5
+ +!ÿÿÿ( .I#jG3X?)ÿÿÿÿÿÿÿÿÿÿÿÿ(4A%?$)<&'+ -)86QOc^4vlQSL<[[QV[TT_QS^PMWL>A6>6+]J9]>tM$~V%vQ$pS1#ÿÿÿÿÿÿ 45"ÿÿÿÿÿÿÿÿÿ;,=/C4F6K:&F7$D7&B7%>3A6 KA(QE-‚s^\Q=\[GahVYcXV`XRYQVYHLI&ha-se$q^~e,jO$D( ÿÿÿ
+   ÿÿÿÿÿÿÿÿÿÿÿÿF<f\9RG'KA&SH2F>)TL9h_PE;/;/!YL;VH.[R3]\=Z`FU]P[b[WZSSU?VT$‚:¢ Kƒ}'Œ~7{d2Y;#)/&  ÿÿÿ ÿÿÿ4$<-J=C:^V2XR2PK-`]>ZV9TP7TO;MH2QL/[X/_]-TS%PR-KP<MPEJH<LF0YS#‰…>¨¨PŒ/Š€)|ec?*E,3D*-9!!-ÿÿÿT:_G _L
+<,1%`Y+d`;``>ZZ6NO-QQ5VV>?>)FE)ˆˆbrqC`]0_]6TW<FH2HB,UJ,cU&€r3ˆ3”5˜‡-pR_'PP L I%B%! + -* -.!Œh‹irZiVoc[UqnEZY:^b?koNLO4-//0"(&A@,mlPuoKlgA_a<QQ+_X.tc7}e7†k<zc/qX~[’c•U–Nx-_QU(@8!C8GD +bb.TY#¾‘4²‹&•w’~ +‘„&g`PM"ggK`cHTXA57"  C>*YN2G?CDHKog&Šy4—y;šu@zU(xM‡RªgË{»bªSn\^)Y0G*SD XSkl3CF¤n&Á“=¹˜%¯› ¥™-zs"a^1UT?ZZN>=8ÿÿÿÿÿÿ -",.:?qnŽ'³’3­ƒ1^&š^*D™Bê‡*ê…-ãB™A‚3 p/ a0[9 :(>5
+62 +oB “m&Ÿ„¸§1¶¬9†#XUWS8DB6621 ÿÿÿÿÿÿ ÿÿÿ(%,A; HB‚s¾¢4Õ©@‰2ÁG—J‡0¤Fá~-Éi¹aœN”N{B +R;8&6.# ÿÿÿÿÿÿÿÿÿ?4µ­Hš—"™–+qm&FB51ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ0!
+A. +O;gJ°‡/č0äžFÉw.¯U!…)xz#”C ·q,­r$¨x$¢}%‡i Æ°AÉ»Až––“ [Xÿÿÿÿÿÿ0,62²¯NŸŸ'~}a]WQD?B>%ÿÿÿÿÿÿ H?,N6jHŠY
+·u'Æw2œC ‚"_e hŒMˆU›s ƒ ‹ £•´« ØÒ<ÞÝEáàRª©3VU><vs"œ›1ÂÃC™š‡ƒc^ +KHMJKG".+B@ML ZZNH`SpV i?n7i#djoZo.xD
+šp$”v’| +£”œ“­¨»º"¿À'ÏÐDžŸ'IK$B?€}.Ž$º¼5ÀÁ7žž&Š‡Œ'op^^MM]^ŽB™Rƒ€;FGTS‡~;zf'`@?NOn+‰H,‹O-ƒP!Xp œˆ)¸ªA³©6y—•‘šœº¼?˜š/fhLF"}x6š˜4ÁÃ;»¾%àâP×ÛI¾Ä0 §{“–-‹‹'Ž3˜H?8'$ +6,@1;#5,X-†Z-«N yBnN`Hm!‘„5³¬T§¡A–“*†„‘’*€"yz,EGÿÿÿEAUQrollwt{{‹Ž +”™|~yz—”3|x!•ŠH>5
+ÿÿÿ +ÿÿÿ='K2O3 nQ%rV&G0,-<2SMˆF«¨[Ž;Ž;VW OP
+;;76ÿÿÿÿÿÿÿÿÿ ÿÿÿ&ÿÿÿÿÿÿÿÿÿ+ MF"B<qj&qj&m`)4*ÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ& #NK\[#FE `^+$#ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿA70'?2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿ
\ No newline at end of file
Index: demos/branches/xen/bca/bca_raw/missile1.raw
===================================================================
--- demos/branches/xen/bca/bca_raw/missile1.raw (nonexistent)
+++ demos/branches/xen/bca/bca_raw/missile1.raw (revision 1684)
@@ -0,0 +1 @@
+ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÀÀÀÀÀÀ€€€ÿÿÿÿÿÿÀÀÀ€€€€€€ÿÿÿÿÿÿÀÀÀÀÀÀ€€€ÿÿÿÀÀÀ€€€€€€ÀÀÀÀÀÀ€€€ÀÀÀ€€€€€€ÀÀÀÀÀÀ€€€ÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
\ No newline at end of file
Index: demos/branches/xen/advtimer/advtimer.c
===================================================================
--- demos/branches/xen/advtimer/advtimer.c (nonexistent)
+++ demos/branches/xen/advtimer/advtimer.c (revision 1684)
@@ -0,0 +1,236 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Giacomo Guidi <giacomo@gandalf.sssup.it>
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+/*
+ * Advanced Timer Demo
+ *
+ */
+
+#include "kernel/kern.h"
+#include "ll/i386/cons.h"
+#include "ll/i386/advtimer.h"
+
+#include "drivers/shark_keyb26.h"
+#include "drivers/shark_cpu26.h"
+
+#define UPDATE_PERIOD 10000
+#define UPDATE_WCET 1000
+
+extern unsigned int clk_per_msec;
+extern unsigned int apic_clk_per_msec;
+
+int freq_number = 0;
+int cur_frequency = 0;
+int cur_freq_number = 0;
+int dvs_status = 0;
+
+TASK Update(void *arg)
+{
+ struct timespec actual_timer;
+
+ long nsec,sec,min,hrs,day;
+ long mean_delay,tot_delay,num_delay;
+
+ signed long long start,end,res;
+ struct timespec s_test,startts,endts;
+
+ /* Get the DVS status */
+ int i;
+ char dvs_frequencies[1000];
+
+ dvs_status = CPU26_DVS_installed();
+
+ if (dvs_status > 0) {
+
+ printf_xy(0,11,WHITE,"Dynamic Frequency Scaling Supported");
+ printf_xy(0,12,WHITE,"Press \"q\" to raise or \"a\" to lower CPU freq");
+
+ CPU26_show_frequencies(dvs_frequencies);
+ freq_number = CPU26_get_frequencies(cpu26_freqs);
+ if (freq_number > 0) {
+ printf_xy(0,13,WHITE,"Supported Frequencies [ %s: %d ]",dvs_frequencies,freq_number);
+ } else {
+ printf_xy(0,13,WHITE,"Not Pre-Defined Frequencies");
+ }
+ cur_frequency = CPU26_get_cur_frequency();
+ printf_xy(0,14,WHITE,"Current Frequency [ %10d ]",cur_frequency);
+
+ for (i=0;i<freq_number;i++)
+ if (cpu26_freqs[i] == cur_frequency) break;
+ cur_freq_number = i;
+
+ } else {
+
+ printf_xy(0,11,WHITE,"Dynamic Frequency Scaling NOT Supported");
+
+ }
+
+ task_nopreempt();
+
+ num_delay = tot_delay = mean_delay = 0;
+
+ while (1) {
+
+ if (clk_per_msec != 0) {
+
+ rdtscll(start);
+ sys_gettime(&actual_timer);
+ rdtscll(end);
+ res = end - start;
+ rdtscll(start);
+ rdtscll(end);
+ res -= (end - start);
+ s_test.tv_nsec = res * 1000000 / clk_per_msec;
+
+
+ } else {
+
+ sys_gettime(&startts);
+ sys_gettime(&actual_timer);
+ sys_gettime(&endts);
+ SUBTIMESPEC(&endts,&startts,&s_test);
+ sys_gettime(&startts);
+ sys_gettime(&endts);
+ SUBTIMESPEC(&endts,&startts,&endts);
+ SUBTIMESPEC(&s_test,&endts,&s_test);
+
+ }
+
+ if (tot_delay < 1000000000) {
+ tot_delay += s_test.tv_nsec;
+ num_delay ++;
+ mean_delay = tot_delay / num_delay;
+ }
+
+ nsec = actual_timer.tv_nsec;
+ sec = actual_timer.tv_sec;
+ min = sec / 60;
+ sec %= 60;
+ hrs = min / 60;
+ min %= 60;
+ day = hrs / 24;
+ hrs %= 24;
+
+ printf_xy(0,5,WHITE,"Actual CPU Clk/msec: %12d",clk_per_msec);
+ printf_xy(0,6,WHITE,"Actual APIC Clk/msec: %12d",apic_clk_per_msec);
+ printf_xy(0,7,WHITE,"Actual Timer: %2ld d %2ld h %2ld m %2ld s %12ld ns",day,hrs,min,sec,(long)nsec);
+
+ printf_xy(0,9,WHITE,"Timer Access Delay: %12ld ns",mean_delay);
+
+ if (dvs_status > 0)
+ printf_xy(0,14,WHITE,"Current Frequency [ %10d ]",CPU26_get_cur_frequency());
+
+ task_endcycle();
+
+ }
+
+}
+
+void set_screen()
+{
+
+ clear();
+
+ printf_xy(20,0,WHITE," Advanced Timer Demo ");
+ printf_xy(20,1,WHITE,"Giacomo Guidi <giacomo@gandalf.sssup.it>");
+ printf_xy(20,2,WHITE," Press Ctrl + C to exit ");
+
+}
+
+void program_key_end(KEY_EVT* e)
+{
+ exit(1);
+}
+
+void up_freq(KEY_EVT* e)
+{
+
+ if (dvs_status > 0 && freq_number > 0) {
+ cur_freq_number++;
+ if (cur_freq_number >= freq_number) cur_freq_number--;
+ CPU26_set_frequency(cpu26_freqs[cur_freq_number],DVS_RELATION_H);
+ }
+}
+
+void down_freq(KEY_EVT* e)
+{
+ if (dvs_status > 0 && freq_number > 0) {
+ cur_freq_number--;
+ if (cur_freq_number < 0) cur_freq_number++;
+ CPU26_set_frequency(cpu26_freqs[cur_freq_number],DVS_RELATION_L);
+ }
+}
+
+int main(int argc, char **argv)
+{
+
+ HARD_TASK_MODEL mp; //Show current setting
+ PID update;
+ KEY_EVT k;
+
+ k.flag = CNTL_BIT;
+ k.scan = KEY_C;
+ k.ascii = 'c';
+ k.status = KEY_PRESSED;
+ keyb_hook(k,program_key_end,FALSE);
+
+ k.flag = CNTR_BIT;
+ k.status = KEY_PRESSED;
+ keyb_hook(k,program_key_end,FALSE);
+
+ k.flag = 0;
+ k.scan = KEY_Q;
+ k.ascii = 'q';
+ k.status = KEY_PRESSED;
+ keyb_hook(k,up_freq,FALSE);
+
+ k.flag = 0;
+ k.scan = KEY_A;
+ k.ascii = 'a';
+ k.status = KEY_PRESSED;
+ keyb_hook(k,down_freq,FALSE);
+
+ set_screen();
+
+ hard_task_default_model(mp);
+ hard_task_def_ctrl_jet(mp);
+ hard_task_def_group(mp, 1);
+ hard_task_def_wcet(mp,UPDATE_WCET);
+ hard_task_def_mit(mp,UPDATE_PERIOD);
+ hard_task_def_usemath(mp);
+ update = task_create("Update", Update, &mp, NULL);
+ if (update != NIL) task_activate(update);
+
+ return 0;
+
+}
Index: demos/branches/xen/advtimer/initfile.c
===================================================================
--- demos/branches/xen/advtimer/initfile.c (nonexistent)
+++ demos/branches/xen/advtimer/initfile.c (revision 1684)
@@ -0,0 +1,188 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Giacomo Guidi <giacomo@gandalf.sssup.it>
+ * Mauro Marinoni <mauro.marinoni@unipv.it>
+ * Tullio Facchinetti <tullio.facchinetti@unipv.it>
+ * (see the web pages for full authors list)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ *
+ */
+
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#include "kernel/kern.h"
+#include "intdrive/intdrive/intdrive.h"
+#include "edf/edf/edf.h"
+#include "hardcbs/hardcbs/hardcbs.h"
+#include "rr/rr/rr.h"
+#include "dummy/dummy/dummy.h"
+
+#include "sem/sem/sem.h"
+#include "hartport/hartport/hartport.h"
+#include "cabs/cabs/cabs.h"
+
+#include "drivers/shark_linuxc26.h"
+#include "drivers/shark_input26.h"
+#include "drivers/shark_pci26.h"
+#include "drivers/shark_keyb26.h"
+#include "drivers/shark_cpu26.h"
+
+/*+ sysyem tick in us +*/
+#define TICK 0
+
+/*+ RR tick in us +*/
+#define RRTICK 10000
+
+/*+ IntDrive Server +*/
+#define INTDRIVE_Q 1000
+#define INTDRIVE_U 0.1*MAX_BANDWIDTH
+#define INTDRIVE_FLAG 0
+
+void call_shutdown_task(void *arg);
+int device_drivers_init();
+int device_drivers_close();
+void set_shutdown_task();
+TASK shutdown_task_body(void *arg);
+
+PID shutdown_task_PID = -1;
+
+TIME __kernel_register_levels__(void *arg)
+{
+ struct multiboot_info *mb = (struct multiboot_info *)arg;
+ LEVEL EDF_level;
+
+ INTDRIVE_register_level(INTDRIVE_Q, INTDRIVE_Q, INTDRIVE_U, INTDRIVE_FLAG);
+ EDF_level = EDF_register_level(EDF_ENABLE_ALL);
+ HCBS_register_level(HCBS_ENABLE_ALL, EDF_level);
+ RR_register_level(RRTICK, RR_MAIN_YES, mb);
+ dummy_register_level();
+
+ SEM_register_module();
+
+ CABS_register_module();
+
+ return TICK;
+}
+
+TASK __init__(void *arg)
+{
+ struct multiboot_info *mb = (struct multiboot_info *)arg;
+
+ HARTPORT_init();
+
+ /* Create the shutdown task. It will be activated at RUNLEVEL
+ SHUTDOWN */
+ set_shutdown_task();
+
+ /* Init the drivers */
+ device_drivers_init();
+
+ /* Set the shutdown task activation */
+ sys_atrunlevel(call_shutdown_task, NULL, RUNLEVEL_SHUTDOWN);
+
+ //sys_set_reboot(EXIT_MODE_HALT);
+
+ __call_main__(mb);
+
+ return (void *)0;
+}
+
+void set_shutdown_task() {
+
+ /* WARNING: the shutdown task is a background thread. It cannot execute
+ if the system is overloaded */
+ NRT_TASK_MODEL nrt;
+
+ nrt_task_default_model(nrt);
+ nrt_task_def_system(nrt);
+
+ shutdown_task_PID = task_create("Shutdown Task",shutdown_task_body,&nrt,NULL);
+ if (shutdown_task_PID == NIL) {
+ sys_shutdown_message("Error: Cannot create shutdown task\n");
+ exit(1);
+ }
+
+}
+
+int device_drivers_init() {
+
+ KEYB_PARMS kparms = BASE_KEYB;
+
+ LINUXC26_register_module(TRUE);
+
+ PCI26_init();
+
+ CPU26_init();
+
+ CPU26_DVS_init();
+
+ INPUT26_init();
+
+ keyb_def_ctrlC(kparms, NULL);
+
+ KEYB26_init(&kparms);
+
+ return 0;
+
+}
+
+int device_drivers_close() {
+
+ KEYB26_close();
+
+ INPUT26_close();
+
+ return 0;
+
+}
+
+#define SHUTDOWN_TIMEOUT_SEC 3
+
+void call_shutdown_task(void *arg)
+{
+ struct timespec t;
+
+ sys_gettime(&t);
+ t.tv_sec += SHUTDOWN_TIMEOUT_SEC;
+
+ /* Emergency timeout to exit from RUNLEVEL_SHUTDOWN */
+ kern_event_post(&t,(void *)((void *)sys_abort_shutdown),(void *)0);
+
+ task_activate(shutdown_task_PID);
+}
+
+TASK shutdown_task_body(void *arg) {
+
+ device_drivers_close();
+
+ sys_shutdown_message("-- S.Ha.R.K. Closed --\n");
+
+ return NULL;
+
+}
+
Index: demos/branches/xen/advtimer/makefile
===================================================================
--- demos/branches/xen/advtimer/makefile (nonexistent)
+++ demos/branches/xen/advtimer/makefile (revision 1684)
@@ -0,0 +1,18 @@
+#
+#
+#
+
+ifndef BASE
+BASE=../..
+endif
+include $(BASE)/config/config.mk
+
+PROGS = advtimer
+
+include $(BASE)/config/example.mk
+
+# Text applications
+advtimer:
+ make -f $(SUBMAKE) APP=advtimer INIT= OTHEROBJS="initfile.o" SHARKOPT="__LINUXC26__ __PCI__ __CPU__ __INPUT__"
+
+
Index: demos/branches/xen/advtimer/readme.txt
===================================================================
--- demos/branches/xen/advtimer/readme.txt (nonexistent)
+++ demos/branches/xen/advtimer/readme.txt (revision 1684)
@@ -0,0 +1,31 @@
+--------------------------------------
+Advanced Timer Demo
+
+by
+
+Giacomo Guidi <giacomo@gandalf.sssup.it>
+
+Last update 23/04/2003
+--------------------------------------
+
+This demo shows the new timer management
+code of S.Ha.R.K.
+
+--------------------------------------
+
+The demo is composed by:
+
+MAKEFILE The makefile used to compile the application
+README.TXT This file
+INITFILE.C The init file
+ADVTIMER.C The Advanced Timer Demo
+
+--------------------------------------
+
+To change the timer mode, you have to
+modify shark.cfg and to recompile the
+system
+
+make clean
+make
+
Index: demos/branches/xen/input/key.c
===================================================================
--- demos/branches/xen/input/key.c (nonexistent)
+++ demos/branches/xen/input/key.c (revision 1684)
@@ -0,0 +1,135 @@
+
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators: Giorgio Buttazzo <giorgio@sssup.it>
+ *
+ * Authors : Mauro Marinoni <mauro.marinoni@unipv.it>
+ * (see authors.txt for full list of hartik's authors)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#include <kernel/kern.h>
+#include <kernel/func.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include <drivers/shark_keyb26.h>
+
+//#define SHOW_EVT
+
+void my_sysclose(KEY_EVT *e)
+{
+ kern_printf("S.Ha.R.K. closed.\n\n");
+ exit(0);
+}
+
+TASK my_get(void *arg) {
+#ifdef SHOW_EVT
+ int status;
+ KEY_EVT ev;
+#else
+ BYTE ch;
+#endif
+
+ while (1) {
+#ifdef SHOW_EVT
+ status = keyb_getcode(&ev, NON_BLOCK);
+ if (status == TRUE)
+ cprintf("[%c %d %d %d]\n", ev.ascii, ev.scan, ev.status, ev.flag);
+#else
+ ch = keyb_getch(NON_BLOCK);
+ if (ch)
+ cprintf("%c", ch);
+#endif
+ task_endcycle();
+ }
+}
+
+void my_pause(KEY_EVT *e){
+
+ TIME t;
+
+ cprintf("Start Pause.\n");
+ keyb_disable();
+ cprintf("Keyboard Disabled.\n");
+ t = sys_gettime(NULL);
+ while ( ( (sys_gettime(NULL) -t) / 1000) < 5000);
+ keyb_enable();
+ cprintf("Keyboard Enabled.\n");
+}
+
+void my_test(KEY_EVT *e){
+ cprintf("<test>\n");
+}
+
+void my_arrow(KEY_EVT *e){
+ cprintf("<arrow>\n");
+}
+
+int main(int argc, char **argv)
+{
+ SOFT_TASK_MODEL mp;
+ PID pid;
+
+ KEY_EVT ev;
+
+ ev.ascii = 'p';
+ ev.scan = KEY_P;
+ ev.status = KEY_PRESSED;
+ ev.flag = CNTR_BIT;
+ keyb_hook(ev, my_pause, FALSE);
+
+ set_keyevt(&ev, 'a', KEY_A, 0, KEY_PRESSED|KEY_REPEATED);
+ keyb_hook(ev, my_test, FALSE);
+
+ set_keyevt(&ev, 0, EXT_UP, 0, KEY_PRESSED);
+ keyb_hook(ev, my_arrow, FALSE);
+
+ set_keyevt(&ev, 'b', KEY_B, CNTL_BIT, KEY_PRESSED);
+ keyb_hook(ev, my_test, TRUE);
+
+ ev.ascii = 'c';
+ ev.scan = KEY_C;
+ ev.status = KEY_PRESSED;
+ ev.flag = CNTR_BIT;
+ keyb_hook(ev, my_sysclose, FALSE);
+ ev.flag = CNTL_BIT;
+ keyb_hook(ev, my_sysclose, FALSE);
+
+ soft_task_default_model(mp);
+ soft_task_def_level(mp,2);
+ soft_task_def_ctrl_jet(mp);
+ soft_task_def_met(mp,700);
+ soft_task_def_period(mp,1000);
+ soft_task_def_usemath(mp);
+ pid = task_create("Keyb_Print", my_get, &mp, NULL);
+ if (pid == NIL) {
+ perror("Could not create task <Keyb_Print>");
+ exit(1);
+ } else
+ task_activate(pid);
+
+ return 0;
+}
Index: demos/branches/xen/input/initkey.c
===================================================================
--- demos/branches/xen/input/initkey.c (nonexistent)
+++ demos/branches/xen/input/initkey.c (revision 1684)
@@ -0,0 +1,154 @@
+/*
+ * Project: HARTIK (HA-rd R-eal TI-me K-ernel)
+ *
+ * Coordinators: Giorgio Buttazzo <giorgio@sssup.it>
+ * Gerardo Lamastra <gerardo@sssup.it>
+ *
+ * Authors :
+ * Mauro Marinoni <mauro.marinoni@unipv.it>
+ * Tullio Facchinetti <tullio.facchinetti@unipv.it>
+ * (see authors.txt for full list of hartik's authors)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://hartik.sssup.it
+ */
+
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+
+#include <kernel/kern.h>
+
+#include "edf/edf/edf.h"
+#include "cbs/cbs/cbs.h"
+#include "rr/rr/rr.h"
+#include "dummy/dummy/dummy.h"
+#include "intdrive/intdrive/intdrive.h"
+
+#include <drivers/shark_linuxc26.h>
+#include <drivers/shark_input26.h>
+#include <drivers/shark_keyb26.h>
+
+/*+ sysyem tick in us +*/
+#define TICK 0
+
+/*+ RR tick in us +*/
+#define RRTICK 10000
+
+/*+ Interrupt Server +*/
+#define INTDRIVE_Q 1000
+#define INTDRIVE_U 0.1*MAX_BANDWIDTH
+#define INTDRIVE_FLAG 0
+
+void call_shutdown_task(void *arg);
+int device_drivers_init();
+int device_drivers_close();
+void set_shutdown_task();
+TASK shutdown_task_body(void *arg);
+
+PID shutdown_task_PID = 1;
+
+TIME __kernel_register_levels__(void *arg)
+{
+ struct multiboot_info *mb = (struct multiboot_info *)arg;
+ LEVEL EDF_level;
+
+ INTDRIVE_register_level(INTDRIVE_Q, INTDRIVE_Q, INTDRIVE_U, INTDRIVE_FLAG);
+ EDF_level = EDF_register_level(EDF_ENABLE_ALL);
+ CBS_register_level(CBS_ENABLE_ALL, EDF_level);
+ RR_register_level(RRTICK, RR_MAIN_YES, mb);
+ dummy_register_level();
+
+ return TICK;
+}
+
+int device_drivers_close() {
+
+ KEYB26_close();
+ INPUT26_close();
+
+ return 0;
+
+}
+
+int device_drivers_init() {
+
+ KEYB_PARMS kparms = BASE_KEYB;
+
+ LINUXC26_register_module(TRUE);
+ INPUT26_init();
+
+ /*keyb_def_map(kparms, KEYMAP_IT);*/
+ keyb_def_ctrlC(kparms, NULL);
+ KEYB26_init(&kparms);
+
+ return 0;
+}
+
+TASK shutdown_task_body(void *arg) {
+
+ device_drivers_close();
+ sys_shutdown_message("-- S.Ha.R.K. Closed --\n");
+ return NULL;
+}
+
+#define SHUTDOWN_TIMEOUT_SEC 3
+
+void set_shutdown_task() {
+
+ NRT_TASK_MODEL nrt;
+
+ nrt_task_default_model(nrt);
+ nrt_task_def_system(nrt);
+
+ shutdown_task_PID = task_create("Shutdown Task", shutdown_task_body, &nrt, NULL);
+ if (shutdown_task_PID == NIL) {
+ sys_shutdown_message("Error: Cannot create shutdown task\n");
+ exit(1);
+ }
+
+}
+
+void call_shutdown_task(void *arg) {
+
+ struct timespec t;
+
+ sys_gettime(&t);
+ t.tv_sec += SHUTDOWN_TIMEOUT_SEC;
+
+ /* Emergency timeout to exit from RUNLEVEL_SHUTDOWN */
+ kern_event_post(&t,(void *)((void *)sys_abort_shutdown),(void *)0);
+
+ task_activate(shutdown_task_PID);
+}
+
+TASK __init__(void *arg)
+{
+ struct multiboot_info *mb = (struct multiboot_info *)arg;
+
+ set_shutdown_task();
+
+ device_drivers_init();
+
+ sys_atrunlevel(call_shutdown_task, NULL, RUNLEVEL_SHUTDOWN);
+
+ __call_main__(mb);
+
+ return (void *)0;
+}
Index: demos/branches/xen/input/initspk.c
===================================================================
--- demos/branches/xen/input/initspk.c (nonexistent)
+++ demos/branches/xen/input/initspk.c (revision 1684)
@@ -0,0 +1,156 @@
+/*
+ * Project: HARTIK (HA-rd R-eal TI-me K-ernel)
+ *
+ * Coordinators: Giorgio Buttazzo <giorgio@sssup.it>
+ * Gerardo Lamastra <gerardo@sssup.it>
+ *
+ * Authors :
+ * Mauro Marinoni <mauro.marinoni@unipv.it>
+ * Tullio Facchinetti <tullio.facchinetti@unipv.it>
+ * (see authors.txt for full list of hartik's authors)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://hartik.sssup.it
+ */
+
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+
+#include <kernel/kern.h>
+
+#include "edf/edf/edf.h"
+#include "cbs/cbs/cbs.h"
+#include "rr/rr/rr.h"
+#include "dummy/dummy/dummy.h"
+#include "intdrive/intdrive/intdrive.h"
+
+#include "sem/sem/sem.h"
+#include "hartport/hartport/hartport.h"
+
+#include <drivers/shark_linuxc26.h>
+#include <drivers/shark_input26.h>
+#include <drivers/shark_keyb26.h>
+#include <drivers/shark_spk26.h>
+
+/*+ sysyem tick in us +*/
+#define TICK 0
+
+/*+ RR tick in us +*/
+#define RRTICK 10000
+
+/*+ Interrupt Server +*/
+#define INTDRIVE_Q 1000
+#define INTDRIVE_U 0.1*MAX_BANDWIDTH
+#define INTDRIVE_FLAG 0
+
+PID shutdown_task_PID = 1;
+
+TIME __kernel_register_levels__(void *arg)
+{
+ struct multiboot_info *mb = (struct multiboot_info *)arg;
+ LEVEL EDF_level;
+
+ INTDRIVE_register_level(INTDRIVE_Q, INTDRIVE_Q, INTDRIVE_U, INTDRIVE_FLAG);
+ EDF_level = EDF_register_level(EDF_ENABLE_ALL);
+ CBS_register_level(CBS_ENABLE_ALL, EDF_level);
+ RR_register_level(RRTICK, RR_MAIN_YES, mb);
+ dummy_register_level();
+
+ SEM_register_module();
+
+ return TICK;
+}
+
+int device_drivers_close() {
+
+ KEYB26_close();
+ SPEAK26_close();
+ INPUT26_close();
+
+ return 0;
+}
+
+int device_drivers_init() {
+
+ KEYB_PARMS kparms = BASE_KEYB;
+
+ LINUXC26_register_module(TRUE);
+ INPUT26_init();
+
+ /*keyb_def_map(kparms, KEYMAP_IT);*/
+ keyb_def_ctrlC(kparms, NULL);
+ KEYB26_init(&kparms);
+
+ SPEAK26_init();
+ return 0;
+}
+
+TASK shutdown_task_body(void *arg) {
+
+ device_drivers_close();
+ sys_shutdown_message("-- S.Ha.R.K. Closed --\n");
+ return NULL;
+}
+
+void set_shutdown_task() {
+
+ NRT_TASK_MODEL nrt;
+
+ nrt_task_default_model(nrt);
+ nrt_task_def_system(nrt);
+
+ shutdown_task_PID = task_create("Shutdown Task", shutdown_task_body, &nrt, NULL);
+ if (shutdown_task_PID == NIL) {
+ sys_shutdown_message("Error: Cannot create shutdown task\n");
+ exit(1);
+ }
+
+}
+
+#define SHUTDOWN_TIMEOUT_SEC 3
+
+void call_shutdown_task(void *arg) {
+ struct timespec t;
+
+ sys_gettime(&t);
+ t.tv_sec += SHUTDOWN_TIMEOUT_SEC;
+
+ /* Emergency timeout to exit from RUNLEVEL_SHUTDOWN */
+ kern_event_post(&t,(void *)((void *)sys_abort_shutdown),(void *)0);
+
+ task_activate(shutdown_task_PID);
+}
+
+TASK __init__(void *arg)
+{
+ struct multiboot_info *mb = (struct multiboot_info *)arg;
+
+ HARTPORT_init();
+
+ set_shutdown_task();
+
+ device_drivers_init();
+
+ sys_atrunlevel(call_shutdown_task, NULL, RUNLEVEL_SHUTDOWN);
+
+ __call_main__(mb);
+
+ return (void *)0;
+}
Index: demos/branches/xen/input/initfile.c
===================================================================
--- demos/branches/xen/input/initfile.c (nonexistent)
+++ demos/branches/xen/input/initfile.c (revision 1684)
@@ -0,0 +1,217 @@
+/*
+ * Project: HARTIK (HA-rd R-eal TI-me K-ernel)
+ *
+ * Coordinators: Giorgio Buttazzo <giorgio@sssup.it>
+ * Gerardo Lamastra <gerardo@sssup.it>
+ *
+ * Authors :
+ * Mauro Marinoni <mauro.marinoni@unipv.it>
+ * Tullio Facchinetti <tullio.facchinetti@unipv.it>
+ * (see authors.txt for full list of hartik's authors)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://hartik.sssup.it
+ */
+
+/*
+ * Copyright (C) 2000 Paolo Gai
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+
+#include "kernel/kern.h"
+
+#include "intdrive/intdrive/intdrive.h"
+#include "edf/edf/edf.h"
+#include "hardcbs/hardcbs/hardcbs.h"
+#include "rr/rr/rr.h"
+#include "dummy/dummy/dummy.h"
+
+#include "sem/sem/sem.h"
+#include "hartport/hartport/hartport.h"
+#include "cabs/cabs/cabs.h"
+
+#include <drivers/shark_linuxc26.h>
+#include <drivers/shark_pci26.h>
+
+#include <drivers/shark_input26.h>
+#include <drivers/shark_keyb26.h>
+#include <drivers/shark_mouse26.h>
+#include <drivers/shark_spk26.h>
+#include <drivers/shark_joy26.h>
+
+#include <drivers/shark_fb26.h>
+
+#define FRAME_BUFFER_DEVICE 0
+
+/*+ sysyem tick in us +*/
+#define TICK 0
+
+/*+ RR tick in us +*/
+#define RRTICK 2000
+
+/*+ Interrupt Server +*/
+#define INTDRIVE_Q 1000
+#define INTDRIVE_U 0.1*MAX_BANDWIDTH
+#define INTDRIVE_FLAG 0
+
+void call_shutdown_task(void *arg);
+int device_drivers_init();
+int device_drivers_close();
+void set_shutdown_task();
+TASK shutdown_task_body(void *arg);
+
+PID shutdown_task_PID = -1;
+
+TIME __kernel_register_levels__(void *arg)
+{
+ struct multiboot_info *mb = (struct multiboot_info *)arg;
+ LEVEL EDF_level;
+
+ INTDRIVE_register_level(INTDRIVE_Q, INTDRIVE_Q, INTDRIVE_U, INTDRIVE_FLAG);
+ EDF_level = EDF_register_level(EDF_ENABLE_ALL);
+ HCBS_register_level(HCBS_ENABLE_ALL, EDF_level);
+ RR_register_level(RRTICK, RR_MAIN_YES, mb);
+ dummy_register_level();
+
+ SEM_register_module();
+ CABS_register_module();
+
+ return TICK;
+}
+
+TASK __init__(void *arg)
+{
+ struct multiboot_info *mb = (struct multiboot_info *)arg;
+
+ HARTPORT_init();
+
+ /* Create the shutdown task. It will be activated at RUNLEVEL SHUTDOWN */
+ set_shutdown_task();
+
+ /* Init the drivers */
+ device_drivers_init();
+
+ /* Set the shutdown task activation */
+ sys_atrunlevel(call_shutdown_task, NULL, RUNLEVEL_SHUTDOWN);
+
+ __call_main__(mb);
+
+ return (void *)0;
+}
+
+void set_shutdown_task()
+{
+/* WARNING: the shutdown task is a background thread. It cannot execute if the system is overloaded */
+ NRT_TASK_MODEL nrt;
+
+ nrt_task_default_model(nrt);
+ nrt_task_def_system(nrt);
+
+ shutdown_task_PID = task_create("Shutdown Task",shutdown_task_body,&nrt,NULL);
+ if (shutdown_task_PID == NIL) {
+ sys_shutdown_message("Error: Cannot create shutdown task\n");
+ exit(1);
+ }
+}
+
+int device_drivers_init()
+{
+ int res;
+ KEYB_PARMS kparms = BASE_KEYB;
+ MOUSE_PARMS mparms = BASE_MOUSE;
+
+ LINUXC26_register_module(TRUE);
+
+ PCI26_init();
+
+ INPUT26_init();
+
+ /* keyb_def_map(kparms, KEYMAP_IT);*/
+ keyb_def_ctrlC(kparms, NULL);
+ KEYB26_init(&kparms);
+
+ mouse_def_threshold(mparms, 5);
+ mouse_def_xmin(mparms, 0);
+ mouse_def_ymin(mparms, 0);
+ mouse_def_xmax(mparms, 639);
+ mouse_def_ymax(mparms, 479);
+ MOUSE26_init(&mparms);
+
+ SPEAK26_init();
+
+ JOY26_init();
+
+ FB26_init();
+ res = FB26_open(FRAME_BUFFER_DEVICE);
+ if (res) {
+ cprintf("Error: Cannot open graphical mode\n");
+ MOUSE26_close();
+ SPEAK26_close();
+ JOY26_close();
+ KEYB26_close();
+ INPUT26_close();
+ exit(1);
+ }
+
+ FB26_use_grx(FRAME_BUFFER_DEVICE);
+ FB26_setmode(FRAME_BUFFER_DEVICE,"640x480-16");
+
+ return 0;
+}
+
+int device_drivers_close() {
+
+ mouse_grxcursor(DISABLE, 0);
+
+ FB26_close(FRAME_BUFFER_DEVICE);
+
+ MOUSE26_close();
+ SPEAK26_close();
+ JOY26_close();
+ KEYB26_close();
+ INPUT26_close();
+
+ return 0;
+}
+
+#define SHUTDOWN_TIMEOUT_SEC 3
+
+void call_shutdown_task(void *arg)
+{
+ struct timespec t;
+
+ sys_gettime(&t);
+ t.tv_sec += SHUTDOWN_TIMEOUT_SEC;
+
+ /* Emergency timeout to exit from RUNLEVEL_SHUTDOWN */
+ kern_event_post(&t,(void *)((void *)sys_abort_shutdown),(void *)0);
+
+ task_activate(shutdown_task_PID);
+}
+
+TASK shutdown_task_body(void *arg)
+{
+ device_drivers_close();
+
+ sys_shutdown_message("-- S.Ha.R.K. Closed --\n");
+
+ return NULL;
+}
Index: demos/branches/xen/input/initjoy.c
===================================================================
--- demos/branches/xen/input/initjoy.c (nonexistent)
+++ demos/branches/xen/input/initjoy.c (revision 1684)
@@ -0,0 +1,149 @@
+/*
+ * Project: HARTIK (HA-rd R-eal TI-me K-ernel)
+ *
+ * Coordinators: Giorgio Buttazzo <giorgio@sssup.it>
+ * Gerardo Lamastra <gerardo@sssup.it>
+ *
+ * Authors:
+ * Mauro Marinoni <mauro.marinoni@unipv.it>
+ * Tullio Facchinetti <tullio.facchinetti@unipv.it>
+ * (see authors.txt for full list of hartik's authors)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://hartik.sssup.it
+ */
+
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#include <kernel/kern.h>
+
+#include "edf/edf/edf.h"
+#include "cbs/cbs/cbs.h"
+#include "rr/rr/rr.h"
+#include "dummy/dummy/dummy.h"
+#include "intdrive/intdrive/intdrive.h"
+
+#include "sem/sem/sem.h"
+#include "hartport/hartport/hartport.h"
+
+#include <drivers/shark_linuxc26.h>
+#include <drivers/shark_input26.h>
+#include <drivers/shark_joy26.h>
+
+/*+ sysyem tick in us +*/
+#define TICK 0
+
+/*+ RR tick in us +*/
+#define RRTICK 10000
+
+/*+ Interrupt Server +*/
+#define INTDRIVE_Q 1000
+#define INTDRIVE_U 0.1*MAX_BANDWIDTH
+#define INTDRIVE_FLAG 0
+
+PID shutdown_task_PID = 1;
+
+TIME __kernel_register_levels__(void *arg)
+{
+ struct multiboot_info *mb = (struct multiboot_info *)arg;
+ LEVEL EDF_level;
+
+ INTDRIVE_register_level(INTDRIVE_Q, INTDRIVE_Q, INTDRIVE_U, INTDRIVE_FLAG);
+ EDF_level = EDF_register_level(EDF_ENABLE_ALL);
+ CBS_register_level(CBS_ENABLE_ALL, EDF_level);
+ RR_register_level(RRTICK, RR_MAIN_YES, mb);
+ dummy_register_level();
+
+ SEM_register_module();
+
+ return TICK;
+}
+
+int device_drivers_close() {
+
+ JOY26_close();
+ INPUT26_close();
+
+ return 0;
+}
+
+int device_drivers_init() {
+
+ LINUXC26_register_module(TRUE);
+ INPUT26_init();
+
+ JOY26_init();
+
+ return 0;
+
+}
+
+TASK shutdown_task_body(void *arg) {
+
+ device_drivers_close();
+ sys_shutdown_message("-- S.Ha.R.K. Closed --\n");
+ return NULL;
+}
+
+void set_shutdown_task() {
+
+ NRT_TASK_MODEL nrt;
+
+ nrt_task_default_model(nrt);
+ nrt_task_def_system(nrt);
+
+ shutdown_task_PID = task_create("Shutdown Task", shutdown_task_body, &nrt, NULL);
+ if (shutdown_task_PID == NIL) {
+ sys_shutdown_message("Error: Cannot create shutdown task\n");
+ exit(1);
+ }
+
+}
+
+#define SHUTDOWN_TIMEOUT_SEC 3
+
+void call_shutdown_task(void *arg) {
+ struct timespec t;
+
+ sys_gettime(&t);
+ t.tv_sec += SHUTDOWN_TIMEOUT_SEC;
+
+ /* Emergency timeout to exit from RUNLEVEL_SHUTDOWN */
+ kern_event_post(&t,(void *)((void *)sys_abort_shutdown),(void *)0);
+
+ task_activate(shutdown_task_PID);
+}
+
+TASK __init__(void *arg)
+{
+ struct multiboot_info *mb = (struct multiboot_info *)arg;
+
+ HARTPORT_init();
+
+ set_shutdown_task();
+
+ device_drivers_init();
+
+ sys_atrunlevel(call_shutdown_task, NULL, RUNLEVEL_SHUTDOWN);
+
+ __call_main__(mb);
+
+ return (void *)0;
+}
/demos/branches/xen/input/initjoy.c
Property changes:
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: demos/branches/xen/input/initcur.c
===================================================================
--- demos/branches/xen/input/initcur.c (nonexistent)
+++ demos/branches/xen/input/initcur.c (revision 1684)
@@ -0,0 +1,164 @@
+/*
+ * Project: HARTIK (HA-rd R-eal TI-me K-ernel)
+ *
+ * Coordinators: Giorgio Buttazzo <giorgio@sssup.it>
+ * Gerardo Lamastra <gerardo@sssup.it>
+ *
+ * Authors :
+ * Mauro Marinoni <mauro.marinoni@unipv.it>
+ * Tullio Facchinetti <tullio.facchinetti@unipv.it>
+ * (see authors.txt for full list of hartik's authors)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://hartik.sssup.it
+ */
+
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#include <kernel/kern.h>
+
+#include "edf/edf/edf.h"
+#include "cbs/cbs/cbs.h"
+#include "rr/rr/rr.h"
+#include "dummy/dummy/dummy.h"
+#include "intdrive/intdrive/intdrive.h"
+
+#include "sem/sem/sem.h"
+#include "hartport/hartport/hartport.h"
+
+#include <drivers/shark_linuxc26.h>
+#include <drivers/shark_input26.h>
+#include <drivers/shark_mouse26.h>
+#include <drivers/shark_keyb26.h>
+
+/*+ sysyem tick in us +*/
+#define TICK 0
+
+/*+ RR tick in us +*/
+#define RRTICK 10000
+
+/*+ Interrupt Server +*/
+#define INTDRIVE_Q 1000
+#define INTDRIVE_U 0.1*MAX_BANDWIDTH
+#define INTDRIVE_FLAG 0
+
+void call_shutdown_task(void *arg);
+int device_drivers_init();
+int device_drivers_close();
+void set_shutdown_task();
+TASK shutdown_task_body(void *arg);
+
+PID shutdown_task_PID = 1;
+
+TIME __kernel_register_levels__(void *arg)
+{
+ struct multiboot_info *mb = (struct multiboot_info *)arg;
+ LEVEL EDF_level;
+
+ INTDRIVE_register_level(INTDRIVE_Q, INTDRIVE_Q, INTDRIVE_U, INTDRIVE_FLAG);
+ EDF_level = EDF_register_level(EDF_ENABLE_ALL);
+ CBS_register_level(CBS_ENABLE_ALL, EDF_level);
+ RR_register_level(RRTICK, RR_MAIN_YES, mb);
+ dummy_register_level();
+
+ SEM_register_module();
+
+ return TICK;
+}
+
+int device_drivers_close() {
+
+ MOUSE26_close();
+ KEYB26_close();
+ INPUT26_close();
+
+ return 0;
+}
+
+int device_drivers_init() {
+
+ KEYB_PARMS kparms = BASE_KEYB;
+ MOUSE_PARMS mparms = BASE_MOUSE;
+
+ LINUXC26_register_module(TRUE);
+ INPUT26_init();
+
+ /*keyb_def_map(kparms, KEYMAP_IT);*/
+ keyb_def_ctrlC(kparms, NULL);
+ KEYB26_init(&kparms);
+
+ MOUSE26_init(&mparms);
+
+ return 0;
+
+}
+
+TASK shutdown_task_body(void *arg) {
+
+ device_drivers_close();
+ sys_shutdown_message("-- S.Ha.R.K. Closed --\n");
+ return NULL;
+}
+
+void set_shutdown_task() {
+
+ NRT_TASK_MODEL nrt;
+
+ nrt_task_default_model(nrt);
+ nrt_task_def_system(nrt);
+
+ shutdown_task_PID = task_create("Shutdown Task", shutdown_task_body, &nrt, NULL);
+ if (shutdown_task_PID == NIL) {
+ sys_shutdown_message("Error: Cannot create shutdown task\n");
+ exit(1);
+ }
+
+}
+
+#define SHUTDOWN_TIMEOUT_SEC 3
+
+void call_shutdown_task(void *arg) {
+ struct timespec t;
+
+ sys_gettime(&t);
+ t.tv_sec += SHUTDOWN_TIMEOUT_SEC;
+
+ /* Emergency timeout to exit from RUNLEVEL_SHUTDOWN */
+ kern_event_post(&t,(void *)((void *)sys_abort_shutdown),(void *)0);
+
+ task_activate(shutdown_task_PID);
+}
+
+TASK __init__(void *arg)
+{
+ struct multiboot_info *mb = (struct multiboot_info *)arg;
+
+ HARTPORT_init();
+
+ set_shutdown_task();
+
+ device_drivers_init();
+
+ sys_atrunlevel(call_shutdown_task, NULL, RUNLEVEL_SHUTDOWN);
+
+ __call_main__(mb);
+
+ return (void *)0;
+}
/demos/branches/xen/input/initcur.c
Property changes:
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: demos/branches/xen/input/input.c
===================================================================
--- demos/branches/xen/input/input.c (nonexistent)
+++ demos/branches/xen/input/input.c (revision 1684)
@@ -0,0 +1,452 @@
+
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators: Giorgio Buttazzo <giorgio@sssup.it>
+ *
+ * Authors : Mauro Marinoni <mauro.marinoni@unipv.it>
+ * (see authors.txt for full list of hartik's authors)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#include <kernel/kern.h>
+#include <kernel/func.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include <drivers/shark_fb26.h>
+
+#include <drivers/shark_mouse26.h>
+#include <drivers/shark_keyb26.h>
+#include <drivers/shark_spk26.h>
+#include <drivers/shark_joy26.h>
+
+#define RGB_BLACK rgb16( 0, 0, 0)
+#define RGB_GRAY rgb16(127,127,127)
+#define RGB_WHITE rgb16(255,255,255)
+#define RGB_RED rgb16(255, 0, 0)
+#define RGB_GREEN rgb16( 0,255, 0)
+#define RGB_BLUE rgb16( 0, 0,255)
+#define RGB_YELLOW rgb16(255,255, 0)
+#define RGB_MAGENTA rgb16(255, 0,255)
+#define RGB_CYAN rgb16( 0,255,255)
+#define RGB_D_RED rgb16(127, 0, 0)
+#define RGB_D_GREEN rgb16( 0,127, 0)
+#define RGB_D_BLUE rgb16( 0, 0,127)
+#define RGB_D_YELLOW rgb16(127,127, 0)
+#define RGB_D_MAGENTA rgb16(127, 0,127)
+#define RGB_D_CYAN rgb16( 0,127,127)
+
+void my_sysend(KEY_EVT *e)
+{
+ exit(0);
+}
+
+void no_note(KEY_EVT *e)
+{
+ speaker_sound(0, 0);
+}
+
+void my_note(KEY_EVT *e)
+{
+ switch (e->scan) {
+ case KEY_Q:
+ speaker_sound(262, 0); /* DO */
+ break;
+ case KEY_W:
+ speaker_sound(277, 0); /* DO# */
+ break;
+ case KEY_E:
+ speaker_sound(294, 0); /* RE */
+ break;
+ case KEY_R:
+ speaker_sound(311, 0); /* RE# */
+ break;
+ case KEY_T:
+ speaker_sound(330, 0); /* MI */
+ break;
+ case KEY_Y:
+ speaker_sound(349, 0); /* FA */
+ break;
+ case KEY_U:
+ speaker_sound(370, 0); /* FA# */
+ break;
+ case KEY_I:
+ speaker_sound(392, 0); /* SOL */
+ break;
+ case KEY_O:
+ speaker_sound(415, 0); /* SOL# */
+ break;
+ case KEY_P:
+ speaker_sound(440, 0); /* LA */
+ break;
+ case KEY_BRL:
+ speaker_sound(466, 0); /* LA# */
+ break;
+ case KEY_BRR:
+ speaker_sound(494, 0); /* SI */
+ break;
+ }
+}
+
+TASK my_getjoy(void *arg)
+{
+ int a0, a1, a2, a3, btn;
+ char st[20];
+
+ while (1) {
+ joy_getstatus(&a0, &a1, &a2, &a3, &btn);
+
+ sprintf(st, "X Axis : %6d ", a0);
+ grx_text(st, 100, 64, RGB_CYAN, RGB_BLACK);
+ sprintf(st, "Y Axis : %6d ", a1);
+ grx_text(st, 100, 114, RGB_CYAN, RGB_BLACK);
+ sprintf(st, "Buttons: %2x ", btn);
+ grx_text(st, 100, 164, RGB_CYAN, RGB_BLACK);
+
+ task_endcycle();
+ if (btn == 0xF)
+ my_sysend(NULL);
+ }
+}
+
+TASK my_getch(void *arg)
+{
+#define MYNCHAR 25
+
+ BYTE ch;
+ int i = 0;
+ char st[20];
+
+ while (1) {
+ ch = keyb_getch(NON_BLOCK);
+ if (ch) {
+ if (ch == BACKSPACE) { //backspace
+ i--;
+ //ch = 0x20;
+ }
+ if (ch == ENTER) { //enter
+ i = ((i / MYNCHAR) + 1) * MYNCHAR - 1;
+ ch = 0x20;
+ }
+ sprintf(st, "%c", ch);
+ grx_text(st, 340 + 10 * (i%MYNCHAR), 25 + 20 * (i/MYNCHAR), RGB_BLUE, RGB_BLACK);
+
+ if (ch == BACKSPACE) //backspace
+ i--;
+ if (++i >= MYNCHAR * 9) {
+ i = 0;
+ grx_box(315, 15, 623, 223, RGB_BLACK);
+ }
+ }
+
+ task_endcycle();
+ }
+}
+
+void my_mouse(MOUSE_EVT *e)
+{
+ char st[20];
+ char pressed = 0;
+
+ sprintf(st, "X Axis : %3d (%4d)", e->x, e->dx);
+ grx_text(st, 100, 280, RGB_YELLOW, RGB_BLACK);
+ sprintf(st, "Y Axis : %3d (%4d)", e->y, e->dy);
+ grx_text(st, 100, 320, RGB_YELLOW, RGB_BLACK);
+ sprintf(st, "Z Axis : %3d (%4d)", e->z, e->dz);
+ grx_text(st, 100, 360, RGB_YELLOW, RGB_BLACK);
+ sprintf(st, "Buttons: %6x ", (int)e->buttons);
+ grx_text(st, 100, 400, RGB_YELLOW, RGB_BLACK);
+
+ if ((e->x > 377) && (e->x < 401) && (e->y > 300) && (e->y < 360) && (e->buttons == MOUSE_LBUTTON)){
+ if (!pressed) {
+ speaker_sound(277, 0); /* DO# */
+ pressed = 1;
+ }
+ return;
+ }
+ if ((e->x > 407) && (e->x < 431) && (e->y > 300) && (e->y < 360) && (e->buttons == MOUSE_LBUTTON)){
+ if (!pressed) {
+ speaker_sound(311, 0); /* RE# */
+ pressed = 1;
+ }
+ return;
+ }
+ if ((e->x > 467) && (e->x < 491) && (e->y > 300) && (e->y < 360) && (e->buttons == MOUSE_LBUTTON)){
+ if (!pressed) {
+ speaker_sound(370, 0); /* FA# */
+ pressed = 1;
+ }
+ return;
+ }
+ if ((e->x > 497) && (e->x < 521) && (e->y > 300) && (e->y < 360) && (e->buttons == MOUSE_LBUTTON)){
+ if (!pressed) {
+ speaker_sound(415, 0); /* SOL# */
+ pressed = 1;
+ }
+ return;
+ }
+ if ((e->x > 527) && (e->x < 551) && (e->y > 300) && (e->y < 360) && (e->buttons == MOUSE_LBUTTON)){
+ if (!pressed) {
+ speaker_sound(466, 0); /* LA# */
+ pressed = 1;
+ }
+ return;
+ }
+
+ if ((e->x > 360) && (e->x < 388) && (e->y > 300) && (e->y < 400) && (e->buttons == MOUSE_LBUTTON)){
+ if (!pressed) {
+ speaker_sound(262, 0); /* DO */
+ pressed = 1;
+ }
+ return;
+ }
+ if ((e->x > 390) && (e->x < 418) && (e->y > 300) && (e->y < 400) && (e->buttons == MOUSE_LBUTTON)) {
+ if (!pressed) {
+ speaker_sound(294, 0); /* RE */
+ pressed = 1;
+ }
+ return;
+ }
+ if ((e->x > 420) && (e->x < 448) && (e->y > 300) && (e->y < 400) && (e->buttons == MOUSE_LBUTTON)) {
+ if (!pressed) {
+ speaker_sound(330, 0); /* MI */
+ pressed = 1;
+ }
+ return;
+ }
+ if ((e->x > 450) && (e->x < 478) && (e->y > 300) && (e->y < 400) && (e->buttons == MOUSE_LBUTTON)) {
+ if (!pressed) {
+ speaker_sound(349, 0); /* FA */
+ pressed = 1;
+ }
+ return;
+ }
+ if ((e->x > 480) && (e->x < 508) && (e->y > 300) && (e->y < 400) && (e->buttons == MOUSE_LBUTTON)) {
+ if (!pressed) {
+ speaker_sound(392, 0); /* SOL */
+ pressed = 1;
+ }
+ return;
+ }
+ if ((e->x > 510) && (e->x < 538) && (e->y > 300) && (e->y < 400) && (e->buttons == MOUSE_LBUTTON)) {
+ if (!pressed) {
+ speaker_sound(440, 0); /* LA */
+ pressed = 1;
+ }
+ return;
+ }
+ if ((e->x > 540) && (e->x < 568) && (e->y > 300) && (e->y < 400) && (e->buttons == MOUSE_LBUTTON)) {
+ if (!pressed) {
+ speaker_sound(494, 0); /* SI */
+ pressed = 1;
+ }
+ return;
+ }
+
+ speaker_sound(0, 0);
+ pressed = 0;
+}
+
+void graph_init(void)
+{
+ grx_rect( 4, 4, 634, 474, RGB_WHITE);
+ grx_rect( 14, 14, 304, 224, RGB_YELLOW);
+ grx_rect(314, 14, 624, 224, RGB_RED);
+ grx_rect( 14, 234, 304, 464, RGB_GREEN);
+ grx_rect(314, 234, 624, 464, RGB_BLUE);
+
+ /* Draw Teyboard */
+ grx_box(360, 300, 388, 400, RGB_WHITE); /* DO */
+ grx_box(390, 300, 418, 400, RGB_WHITE); /* RE */
+ grx_box(420, 300, 448, 400, RGB_WHITE); /* MI */
+ grx_box(450, 300, 478, 400, RGB_WHITE); /* FA */
+ grx_box(480, 300, 508, 400, RGB_WHITE); /* SOL */
+ grx_box(510, 300, 538, 400, RGB_WHITE); /* LA */
+ grx_box(540, 300, 568, 400, RGB_WHITE); /* SI */
+
+ grx_box(377, 301, 401, 360, RGB_BLACK); /* DO# */
+ grx_box(407, 301, 431, 360, RGB_BLACK); /* RE# */
+ grx_box(467, 301, 491, 360, RGB_BLACK); /* FA# */
+ grx_box(497, 301, 521, 360, RGB_BLACK); /* SOL# */
+ grx_box(527, 301, 551, 360, RGB_BLACK); /* LA# */
+}
+
+void start_sound(void)
+{
+ KEY_EVT ev;
+
+ speaker_sound(440, 400);
+ while ( (sys_gettime(NULL)/1000) < 1000);
+
+ ev.ascii = 'q';
+ ev.scan = KEY_Q;
+ ev.flag = 0;
+ ev.status = KEY_PRESSED;
+ keyb_hook(ev, my_note, FALSE);
+ ev.status = KEY_RELEASED;
+ keyb_hook(ev, no_note, FALSE);
+
+ ev.ascii = 'w';
+ ev.scan = KEY_W;
+ ev.flag = 0;
+ ev.status = KEY_PRESSED;
+ keyb_hook(ev, my_note, FALSE);
+ ev.status = KEY_RELEASED;
+ keyb_hook(ev, no_note, FALSE);
+
+ ev.ascii = 'e';
+ ev.scan = KEY_E;
+ ev.flag = 0;
+ ev.status = KEY_PRESSED;
+ keyb_hook(ev, my_note, FALSE);
+ ev.status = KEY_RELEASED;
+ keyb_hook(ev, no_note, FALSE);
+
+ ev.ascii = 'r';
+ ev.scan = KEY_R;
+ ev.flag = 0;
+ ev.status = KEY_PRESSED;
+ keyb_hook(ev, my_note, FALSE);
+ ev.status = KEY_RELEASED;
+ keyb_hook(ev, no_note, FALSE);
+
+ ev.ascii = 't';
+ ev.scan = KEY_T;
+ ev.flag = 0;
+ ev.status = KEY_PRESSED;
+ keyb_hook(ev, my_note, FALSE);
+ ev.status = KEY_RELEASED;
+ keyb_hook(ev, no_note, FALSE);
+
+ ev.ascii = 'y';
+ ev.scan = KEY_Y;
+ ev.flag = 0;
+ ev.status = KEY_PRESSED;
+ keyb_hook(ev, my_note, FALSE);
+ ev.status = KEY_RELEASED;
+ keyb_hook(ev, no_note, FALSE);
+
+ ev.ascii = 'u';
+ ev.scan = KEY_U;
+ ev.flag = 0;
+ ev.status = KEY_PRESSED;
+ keyb_hook(ev, my_note, FALSE);
+ ev.status = KEY_RELEASED;
+ keyb_hook(ev, no_note, FALSE);
+
+ ev.ascii = 'i';
+ ev.scan = KEY_I;
+ ev.flag = 0;
+ ev.status = KEY_PRESSED;
+ keyb_hook(ev, my_note, FALSE);
+ ev.status = KEY_RELEASED;
+ keyb_hook(ev, no_note, FALSE);
+
+ ev.ascii = 'o';
+ ev.scan = KEY_O;
+ ev.flag = 0;
+ ev.status = KEY_PRESSED;
+ keyb_hook(ev, my_note, FALSE);
+ ev.status = KEY_RELEASED;
+ keyb_hook(ev, no_note, FALSE);
+
+ ev.ascii = 'p';
+ ev.scan = KEY_P;
+ ev.flag = 0;
+ ev.status = KEY_PRESSED;
+ keyb_hook(ev, my_note, FALSE);
+ ev.status = KEY_RELEASED;
+ keyb_hook(ev, no_note, FALSE);
+
+ ev.ascii = '[';
+ ev.scan = KEY_BRL;
+ ev.flag = 0;
+ ev.status = KEY_PRESSED;
+ keyb_hook(ev, my_note, FALSE);
+ ev.status = KEY_RELEASED;
+ keyb_hook(ev, no_note, FALSE);
+
+ ev.ascii = ']';
+ ev.scan = KEY_BRR;
+ ev.flag = 0;
+ ev.status = KEY_PRESSED;
+ keyb_hook(ev, my_note, FALSE);
+ ev.status = KEY_RELEASED;
+ keyb_hook(ev, no_note, FALSE);
+}
+
+int main(int argc, char **argv)
+{
+ SOFT_TASK_MODEL mp;
+ PID pid;
+
+ KEY_EVT ev;
+
+ ev.ascii = 'c';
+ ev.scan = KEY_C;
+ ev.status = KEY_PRESSED;
+ ev.flag = CNTL_BIT;
+ keyb_hook(ev, my_sysend, FALSE);
+ ev.flag = CNTR_BIT;
+ keyb_hook(ev, my_sysend, FALSE);
+
+ graph_init();
+
+ mouse_grxlimits(639, 479);
+ mouse_setposition(319, 239, 0);
+ mouse_hook(my_mouse);
+ mouse_grxcursor(ENABLE, 2);
+
+ soft_task_default_model(mp);
+ soft_task_def_level(mp,2);
+ soft_task_def_ctrl_jet(mp);
+ soft_task_def_met(mp,700);
+ soft_task_def_period(mp,10000);
+ soft_task_def_usemath(mp);
+ pid = task_create("Key_Print", my_getch, &mp, NULL);
+ if (pid == NIL) {
+ sys_shutdown_message("Could not create task <Key_Print>\n");
+ exit(1);
+ } else
+ task_activate(pid);
+
+ if (JOY26_installed()) {
+ soft_task_default_model(mp);
+ soft_task_def_level(mp,2);
+ soft_task_def_ctrl_jet(mp);
+ soft_task_def_met(mp,700);
+ soft_task_def_period(mp,10000);
+ soft_task_def_usemath(mp);
+ pid = task_create("Joy_Print", my_getjoy, &mp, NULL);
+ if (pid == NIL) {
+ sys_shutdown_message("Could not create task <Joy_Print>\n");
+ exit(1);
+ } else
+ task_activate(pid);
+ }
+
+ start_sound();
+ return 0;
+}
Index: demos/branches/xen/input/joy.c
===================================================================
--- demos/branches/xen/input/joy.c (nonexistent)
+++ demos/branches/xen/input/joy.c (revision 1684)
@@ -0,0 +1,76 @@
+
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators: Giorgio Buttazzo <giorgio@sssup.it>
+ *
+ * Authors : Mauro Marinoni <mauro.marinoni@unipv.it>
+ * (see authors.txt for full list of hartik's authors)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#include <kernel/kern.h>
+#include <kernel/func.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include <drivers/shark_joy26.h>
+
+TASK my_getjoy(void *arg) {
+
+ int a0, a1, a2, a3, btn;
+
+ while (1) {
+ joy_getstatus(&a0, &a1, &a2, &a3, &btn);
+ cprintf("(%6d %6d) %2x\n", a0, a1, btn);
+ task_endcycle();
+ if (btn == 0xF)
+ exit(1);
+ }
+}
+
+int main(int argc, char **argv)
+{
+ SOFT_TASK_MODEL mp;
+ PID pid;
+
+ if (!JOY26_installed()) {
+ cprintf("No Joystick found.");
+ exit(1);
+ }
+ soft_task_default_model(mp);
+ soft_task_def_level(mp,2);
+ soft_task_def_ctrl_jet(mp);
+ soft_task_def_met(mp,700);
+ soft_task_def_period(mp,10000);
+ soft_task_def_usemath(mp);
+ pid = task_create("Joy_Print", my_getjoy, &mp, NULL);
+ if (pid == NIL) {
+ sys_shutdown_message("Could not create task <Joy_Print>\n");
+ exit(1);
+ } else
+ task_activate(pid);
+
+ return 0;
+}
/demos/branches/xen/input/joy.c
Property changes:
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: demos/branches/xen/input/speak.c
===================================================================
--- demos/branches/xen/input/speak.c (nonexistent)
+++ demos/branches/xen/input/speak.c (revision 1684)
@@ -0,0 +1,208 @@
+
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators: Giorgio Buttazzo <giorgio@sssup.it>
+ *
+ * Authors : Mauro Marinoni <mauro.marinoni@unipv.it>
+ * (see authors.txt for full list of hartik's authors)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#include <kernel/kern.h>
+#include <kernel/func.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include <drivers/shark_keyb26.h>
+#include <drivers/shark_spk26.h>
+
+void my_sysclose(KEY_EVT *e)
+{
+ speaker_sound(0, 0);
+
+ kern_printf("S.Ha.R.K. closed.\n\n");
+ exit(0);
+}
+
+void no_note(KEY_EVT *e){
+ speaker_sound(0, 0);
+}
+
+void my_note(KEY_EVT *e){
+
+ switch (e->scan) {
+ case KEY_Q:
+ speaker_sound(262, 0);
+ break;
+ case KEY_W:
+ speaker_sound(277, 0);
+ break;
+ case KEY_E:
+ speaker_sound(294, 0);
+ break;
+ case KEY_R:
+ speaker_sound(311, 0);
+ break;
+ case KEY_T:
+ speaker_sound(330, 0);
+ break;
+ case KEY_Y:
+ speaker_sound(349, 0);
+ break;
+ case KEY_U:
+ speaker_sound(370, 0);
+ break;
+ case KEY_I:
+ speaker_sound(392, 0);
+ break;
+ case KEY_O:
+ speaker_sound(415, 0);
+ break;
+ case KEY_P:
+ speaker_sound(440, 0);
+ break;
+ case KEY_BRL:
+ speaker_sound(466, 0);
+ break;
+ case KEY_BRR:
+ speaker_sound(494, 0);
+ break;
+ }
+}
+
+int main(int argc, char **argv)
+{
+ KEY_EVT ev;
+
+ ev.ascii = 'c';
+ ev.scan = KEY_C;
+ ev.status = KEY_PRESSED;
+ ev.flag = CNTL_BIT;
+ keyb_hook(ev, my_sysclose, FALSE);
+ ev.flag = CNTR_BIT;
+ keyb_hook(ev, my_sysclose, FALSE);
+
+ speaker_sound(440, 400);
+ while ( (sys_gettime(NULL)/1000) < 1000);
+
+ ev.ascii = 'q';
+ ev.scan = KEY_Q;
+ ev.flag = 0;
+ ev.status = KEY_PRESSED;
+ keyb_hook(ev, my_note, FALSE);
+ ev.status = KEY_RELEASED;
+ keyb_hook(ev, no_note, FALSE);
+
+ ev.ascii = 'w';
+ ev.scan = KEY_W;
+ ev.flag = 0;
+ ev.status = KEY_PRESSED;
+ keyb_hook(ev, my_note, FALSE);
+ ev.status = KEY_RELEASED;
+ keyb_hook(ev, no_note, FALSE);
+
+ ev.ascii = 'e';
+ ev.scan = KEY_E;
+ ev.flag = 0;
+ ev.status = KEY_PRESSED;
+ keyb_hook(ev, my_note, FALSE);
+ ev.status = KEY_RELEASED;
+ keyb_hook(ev, no_note, FALSE);
+
+ ev.ascii = 'r';
+ ev.scan = KEY_R;
+ ev.flag = 0;
+ ev.status = KEY_PRESSED;
+ keyb_hook(ev, my_note, FALSE);
+ ev.status = KEY_RELEASED;
+ keyb_hook(ev, no_note, FALSE);
+
+ ev.ascii = 't';
+ ev.scan = KEY_T;
+ ev.flag = 0;
+ ev.status = KEY_PRESSED;
+ keyb_hook(ev, my_note, FALSE);
+ ev.status = KEY_RELEASED;
+ keyb_hook(ev, no_note, FALSE);
+
+ ev.ascii = 'y';
+ ev.scan = KEY_Y;
+ ev.flag = 0;
+ ev.status = KEY_PRESSED;
+ keyb_hook(ev, my_note, FALSE);
+ ev.status = KEY_RELEASED;
+ keyb_hook(ev, no_note, FALSE);
+
+ ev.ascii = 'u';
+ ev.scan = KEY_U;
+ ev.flag = 0;
+ ev.status = KEY_PRESSED;
+ keyb_hook(ev, my_note, FALSE);
+ ev.status = KEY_RELEASED;
+ keyb_hook(ev, no_note, FALSE);
+
+ ev.ascii = 'i';
+ ev.scan = KEY_I;
+ ev.flag = 0;
+ ev.status = KEY_PRESSED;
+ keyb_hook(ev, my_note, FALSE);
+ ev.status = KEY_RELEASED;
+ keyb_hook(ev, no_note, FALSE);
+
+ ev.ascii = 'o';
+ ev.scan = KEY_O;
+ ev.flag = 0;
+ ev.status = KEY_PRESSED;
+ keyb_hook(ev, my_note, FALSE);
+ ev.status = KEY_RELEASED;
+ keyb_hook(ev, no_note, FALSE);
+
+ ev.ascii = 'p';
+ ev.scan = KEY_P;
+ ev.flag = 0;
+ ev.status = KEY_PRESSED;
+ keyb_hook(ev, my_note, FALSE);
+ ev.status = KEY_RELEASED;
+ keyb_hook(ev, no_note, FALSE);
+
+ ev.ascii = '[';
+ ev.scan = KEY_BRL;
+ ev.flag = 0;
+ ev.status = KEY_PRESSED;
+ keyb_hook(ev, my_note, FALSE);
+ ev.status = KEY_RELEASED;
+ keyb_hook(ev, no_note, FALSE);
+
+ ev.ascii = ']';
+ ev.scan = KEY_BRR;
+ ev.flag = 0;
+ ev.status = KEY_PRESSED;
+ keyb_hook(ev, my_note, FALSE);
+ ev.status = KEY_RELEASED;
+ keyb_hook(ev, no_note, FALSE);
+
+ while(1);
+ return 0;
+}
Index: demos/branches/xen/input/mouse.c
===================================================================
--- demos/branches/xen/input/mouse.c (nonexistent)
+++ demos/branches/xen/input/mouse.c (revision 1684)
@@ -0,0 +1,95 @@
+
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators: Giorgio Buttazzo <giorgio@sssup.it>
+ *
+ * Authors : Mauro Marinoni <mauro.marinoni@unipv.it>
+ * (see authors.txt for full list of hartik's authors)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#include <kernel/kern.h>
+#include <kernel/func.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include <drivers/shark_mouse26.h>
+#include <drivers/shark_keyb26.h>
+#include <drivers/shark_spk26.h>
+
+void my_sysclose(KEY_EVT *e)
+{
+ mouse_txtcursor(DISABLE);
+
+ exit(0);
+}
+
+TASK my_putxy(void *arg) {
+
+ int x, y, z;
+ unsigned long btn;
+
+ clear();
+
+ while (1) {
+ mouse_getposition(&x, &y, &z, &btn);
+ place(10, 10);
+ cprintf("X: %2d - Y: %2d - Z: %3d - Btn: %4d\n", x, y, z, (int)btn);
+
+ task_endcycle();
+ }
+}
+
+int main(int argc, char **argv)
+{
+ SOFT_TASK_MODEL mp;
+ PID pid;
+ KEY_EVT ev;
+
+ ev.ascii = 'c';
+ ev.scan = KEY_C;
+ ev.status = KEY_PRESSED;
+ ev.flag = CNTL_BIT;
+ keyb_hook(ev, my_sysclose, FALSE);
+ ev.flag = CNTR_BIT;
+ keyb_hook(ev, my_sysclose, FALSE);
+
+ mouse_txtcursor(ENABLE);
+
+ soft_task_default_model(mp);
+ soft_task_def_level(mp,2);
+ soft_task_def_ctrl_jet(mp);
+ soft_task_def_met(mp,700);
+ soft_task_def_period(mp,1000);
+ soft_task_def_usemath(mp);
+ pid = task_create("Mouse_Print", my_putxy, &mp, NULL);
+ if (pid == NIL) {
+ sys_shutdown_message("Could not create task <Mouse_Print>\n");
+ my_sysclose(NULL);
+ } else
+ task_activate(pid);
+
+ return 0;
+}
/demos/branches/xen/input/mouse.c
Property changes:
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: demos/branches/xen/input/makefile
===================================================================
--- demos/branches/xen/input/makefile (nonexistent)
+++ demos/branches/xen/input/makefile (revision 1684)
@@ -0,0 +1,28 @@
+#
+#
+#
+
+ifndef BASE
+BASE=../..
+endif
+include $(BASE)/config/config.mk
+
+PROGS= input speak key mouse joy
+
+include $(BASE)/config/example.mk
+
+input:
+ make -f $(SUBMAKE) APP=input INIT= OTHEROBJS="initfile.o" SHARKOPT="__INPUT__ __LINUXC26__ __PCI__ __FB__"
+
+speak:
+ make -f $(SUBMAKE) APP=speak INIT= OTHEROBJS="initspk.o" SHARKOPT="__INPUT__ __LINUXC26__ __PCI__"
+
+key:
+ make -f $(SUBMAKE) APP=key INIT= OTHEROBJS="initkey.o" SHARKOPT="__INPUT__ __LINUXC26__ __PCI__"
+
+mouse:
+ make -f $(SUBMAKE) APP=mouse INIT= OTHEROBJS="initcur.o" SHARKOPT="__INPUT__ __LINUXC26__ __PCI__"
+
+joy:
+ make -f $(SUBMAKE) APP=joy INIT= OTHEROBJS="initjoy.o" SHARKOPT="__INPUT__ __LINUXC26__ __PCI__"
+
Index: demos/branches/xen/orbit/initfile.c
===================================================================
--- demos/branches/xen/orbit/initfile.c (nonexistent)
+++ demos/branches/xen/orbit/initfile.c (revision 1684)
@@ -0,0 +1,200 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Giacomo Guidi <giacomo@gandalf.sssup.it>
+ * Tullio Facchinetti <tullio.facchinetti@unipv.it>
+ * (see the web pages for full authors list)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+#include "kernel/kern.h"
+#include "intdrive/intdrive/intdrive.h"
+#include "edf/edf/edf.h"
+#include "hardcbs/hardcbs/hardcbs.h"
+#include "rr/rr/rr.h"
+#include "dummy/dummy/dummy.h"
+
+#include "sem/sem/sem.h"
+#include "hartport/hartport/hartport.h"
+#include "cabs/cabs/cabs.h"
+
+#include <drivers/shark_linuxc26.h>
+#include <drivers/shark_pci26.h>
+#include <drivers/shark_input26.h>
+#include <drivers/shark_keyb26.h>
+#include <drivers/shark_fb26.h>
+
+#define FRAME_BUFFER_DEVICE 0
+
+/*+ sysyem tick in us +*/
+#define TICK 0
+
+/*+ RR tick in us +*/
+#define RRTICK 2000
+
+/*+ Interrupt Server +*/
+#define INTDRIVE_Q 1000
+#define INTDRIVE_U 0.1*MAX_BANDWIDTH
+#define INTDRIVE_FLAG 0
+
+void call_shutdown_task(void *arg);
+int device_drivers_init();
+int device_drivers_close();
+void set_shutdown_task();
+TASK shutdown_task_body(void *arg);
+
+PID shutdown_task_PID = -1;
+
+TIME __kernel_register_levels__(void *arg)
+{
+ struct multiboot_info *mb = (struct multiboot_info *)arg;
+ LEVEL EDF_level;
+
+ INTDRIVE_register_level(INTDRIVE_Q, INTDRIVE_Q, INTDRIVE_U, INTDRIVE_FLAG);
+ EDF_level = EDF_register_level(EDF_ENABLE_ALL);
+ HCBS_register_level(HCBS_ENABLE_ALL, EDF_level);
+ RR_register_level(RRTICK, RR_MAIN_YES, mb);
+ dummy_register_level();
+
+ SEM_register_module();
+ CABS_register_module();
+
+ //read_file();
+
+ return TICK;
+}
+
+TASK __init__(void *arg)
+{
+ struct multiboot_info *mb = (struct multiboot_info *)arg;
+
+ HARTPORT_init();
+
+ /* Create the shutdown task. It will be activated at RUNLEVEL
+ SHUTDOWN */
+ set_shutdown_task();
+
+ /* Init the drivers */
+ device_drivers_init();
+
+ /* Set the shutdown task activation */
+ sys_atrunlevel(call_shutdown_task, NULL, RUNLEVEL_SHUTDOWN);
+
+ __call_main__(mb);
+
+ return (void *)0;
+}
+
+void set_shutdown_task() {
+
+ /* WARNING: the shutdown task is a background thread. It cannot execute
+ if the system is overloaded */
+ NRT_TASK_MODEL nrt;
+
+ nrt_task_default_model(nrt);
+ nrt_task_def_system(nrt);
+
+ shutdown_task_PID = task_create("Shutdown Task",shutdown_task_body,&nrt,NULL);
+ if (shutdown_task_PID == NIL) {
+ sys_shutdown_message("Error: Cannot create shutdown task\n");
+ exit(1);
+ }
+
+}
+
+int device_drivers_init() {
+
+ int res;
+ KEYB_PARMS kparms = BASE_KEYB;
+
+ LINUXC26_register_module(TRUE);
+
+ PCI26_init();
+
+ INPUT26_init();
+
+ keyb_def_ctrlC(kparms, NULL);
+
+ KEYB26_init(&kparms);
+
+ FB26_init();
+
+ res = FB26_open(FRAME_BUFFER_DEVICE);
+ if (res) {
+ cprintf("Error: Cannot open graphical mode\n");
+ KEYB26_close();
+ INPUT26_close();
+ exit(1);
+ }
+
+ FB26_use_grx(FRAME_BUFFER_DEVICE);
+
+ FB26_setmode(FRAME_BUFFER_DEVICE,"640x480-16");
+
+ return 0;
+
+}
+
+int device_drivers_close() {
+
+ FB26_close(FRAME_BUFFER_DEVICE);
+
+ KEYB26_close();
+
+ INPUT26_close();
+
+ return 0;
+
+}
+
+#define SHUTDOWN_TIMEOUT_SEC 3
+
+void call_shutdown_task(void *arg)
+{
+ struct timespec t;
+
+ sys_gettime(&t);
+ t.tv_sec += SHUTDOWN_TIMEOUT_SEC;
+
+ /* Emergency timeout to exit from RUNLEVEL_SHUTDOWN */
+ kern_event_post(&t,(void *)((void *)sys_abort_shutdown),(void *)0);
+
+ task_activate(shutdown_task_PID);
+}
+
+TASK shutdown_task_body(void *arg) {
+
+ device_drivers_close();
+
+ sys_shutdown_message("-- S.Ha.R.K. Closed --\n");
+
+ return NULL;
+
+}
Index: demos/branches/xen/orbit/orbit.c
===================================================================
--- demos/branches/xen/orbit/orbit.c (nonexistent)
+++ demos/branches/xen/orbit/orbit.c (revision 1684)
@@ -0,0 +1,351 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Paolo Gai <pj@gandalf.sssup.it>
+ * (see the web pages for full authors list)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/*
+ ------------
+ CVS : $Id: orbit.c,v 1.9 2005-01-08 14:34:48 pj Exp $
+
+ File: $File$
+ Revision: $Revision: 1.9 $
+ Last update: $Date: 2005-01-08 14:34:48 $
+ ------------
+*/
+
+/*
+ * Copyright (C) 2000 Giorgio Buttazzo and Paolo Gai
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+/****************************************************************/
+/* SIMULAZIONE DI MASSE CHE ORBITANO */
+/****************************************************************/
+
+#include <kernel/kern.h>
+#include <semaphore.h>
+#include <stdlib.h>
+#include <math.h>
+#include <string.h>
+
+#include <drivers/shark_fb26.h>
+#include <drivers/shark_keyb26.h>
+
+#define MAX 11 /* numero massimo pianeti */
+#define XMAX 639 /* valore massimo coordinata X */
+#define YMAX 479 /* valore massimo coordinata Y */
+
+extern int vga16color[16];
+
+struct coord {
+ double x;
+ double y;
+};
+
+int flen; // file length
+
+double mass[MAX]; /* vettore masse pianeti */
+struct coord pos[MAX]; /* vettore posizioni attuali */
+struct coord vel[MAX]; /* vettore velocita' iniziali */
+
+int XGS, YGS; /* Coordinate centro spazio */
+int RP, RT; /* raggio pianeta, raggio Terra */
+int np; /* numero attuale di pianeti */
+double G; /* Gravitazione Universale */
+double tick; /* tick di sistema */
+double delta; /* incremento temporale */
+double scala; /* fattore grafico di scala */
+
+char fbuf[1000] ="\
+----------------------------------------------------\n\
+period: 10000 wcet: 500\n\
+delta: 1. scala: 150.\n\
+G: 6.6e-15\n\
+r_pianeta: 4 r_Terra: 8\n\
+X_centro: 320 Y_centro: 240\n\
+------------------- pianeti ------------------------\n\
+ massa pos.x pos.y vel.x vel.y\n\
+0: \t 6.0e21 \t 0. \t 0. \t 0. \t 0. \n\
+1: \t 1.0e21 \t 10000. \t 8000. \t -60. \t 0. \n\
+2: \t 1.0e8 \t 5000. \t 0. \t 0. \t 80. \n\
+3: \t 5.0e18 \t 10000. \t 8000. \t -50. \t 0. \n\
+4: \t 1.0e9 \t 10000. \t 8000. \t -40. \t 20. \n\
+5: \t 1.0e15 \t 1000. \t 5000. \t -80. \t 0. \n\
+6: \t 1.0e5 \t 1000. \t 5000. \t -80. \t 0. \n\
+7: \t 1.0e17 \t 1000. \t 5000. \t -80. \t 0. \n\
+8: \t 1.0e5 \t 1000. \t 5000. \t -80. \t 0. \n\
+9: \t 1.0e5 \t 1000. \t 5000. \t -80. \t 0. \n\
+10: \t 1.0e5 \t 1000. \t 5000. \t -80. \t 0. \n\
+----------------------------------------------------\n";
+
+// -------------------------------------------------------
+// NOTA: %f o %lf significa double e %nf significa float
+// -------------------------------------------------------
+
+PID pid;
+int period; /* task period */
+int wcet; /* task wcet */
+sem_t mutex; /* semaforo di mutua esclusione */
+
+
+void get_par(void);
+
+/*--------------------------------------------------------------*/
+
+int inside(int x, int y)
+{
+ return ((x > RP) && (x < XMAX-RP) &&
+ (y > RP) && (y < YMAX-RP));
+}
+
+/*--------------------------------------------------------------*/
+
+TASK massa(void *xxx)
+{
+ int i = (int)xxx; /* parametro del task */
+ int gx, gy; /* coordinate grafiche pallina */
+ int ox, oy; /* vecchia posizione pallina */
+ int j;
+ int r, col; /* raggio e colore pianeta */
+ double dt; /* incremento temporale */
+ double dist=0.0, dx, dy; /* distanze pianeta-pianeta */
+ double dist0=0.0; /* distanze pianeta-Terra */
+ double x, y; /* posizione del pianeta */
+ double vx, vy; /* velocita' del pianeta */
+ double ax, ay; /* accelerazione del pianeta */
+ double k; /* variabile ausiliaria */
+ double arg; /* variabile di appoggio */
+
+ x = pos[i].x; y = pos[i].y;
+ vx = vel[i].x; vy = vel[i].y;
+ ox = XGS + x / scala;
+ oy = YGS + y / scala;
+ dt = delta;
+
+ do {
+ x = pos[i].x;
+ y = pos[i].y;
+ ax = ay = 0.0;
+ for (j=0; j<np; j++) {
+ if (j != i) {
+ dx = pos[j].x - x;
+ dy = pos[j].y - y;
+ arg = dx*dx + dy*dy;
+ dist = sqrt(arg);
+ if (dist < RP*scala) dist = RP*scala;
+ k = G * mass[j] / (dist*dist*dist);
+ ax += k * dx;
+ ay += k * dy;
+ }
+ if (j == 0) dist0 = dist - (RP+RT)*scala;
+ }
+ x += vx*dt + 0.5*ax*dt*dt;
+ y += vy*dt + 0.5*ay*dt*dt;
+ vx += ax * dt;
+ vy += ay * dt;
+
+ gx = XGS + x / scala;
+ gy = YGS + y / scala;
+
+ r = RP;
+ col = i + 1;
+
+ sem_wait(&mutex);
+ grx_disc(ox,oy,r,vga16color[0]);
+ grx_disc(gx,gy,r,vga16color[col]);
+ sem_post(&mutex);
+
+ pos[i].x = x; pos[i].y = y;
+ ox = gx; oy = gy;
+
+ task_endcycle();
+
+ } while ((dist0 > 0) && inside(gx,gy));
+
+ sem_wait(&mutex);
+ grx_disc(ox,oy,r,vga16color[0]);
+ grx_disc(XGS,YGS,RT,vga16color[12]);
+ grx_circle(XGS,YGS,RT,vga16color[14]);
+ sem_post(&mutex);
+
+ return NULL;
+}
+
+/*--------------------------------------------------------------*/
+/* MAIN */
+/*--------------------------------------------------------------*/
+
+int main()
+{
+ HARD_TASK_MODEL m;
+ char c; /* carattere letto da tastiera */
+
+ sem_init(&mutex,0,1);
+
+ get_par();
+
+ grx_disc(XGS,YGS,RT,vga16color[12]);
+ grx_circle(XGS,YGS,RT,vga16color[14]);
+
+ np = 0;
+
+ do {
+ if (np < MAX-1) {
+ np++;
+ hard_task_default_model(m);
+ hard_task_def_arg (m, (void *)np);
+ hard_task_def_wcet (m, wcet);
+ hard_task_def_mit (m, period);
+ hard_task_def_usemath (m);
+ pid = task_create("massa", massa, &m, NULL);
+ if (pid == NIL) {
+ sys_shutdown_message("Could not create task");
+ exit(1);
+ }
+ task_activate(pid);
+ }
+ c = keyb_getch(BLOCK);
+
+ } while (c != ESC);
+
+ exit(1);
+
+ return 0;
+}
+
+/*------------------------------------------------------*/
+/* file reading */
+/*------------------------------------------------------*/
+
+void read_file(void)
+{
+ int err;
+ DOS_FILE *fp;
+
+ fp = DOS_fopen("orbit.dat","r");
+
+ if (!fp) {
+ err = DOS_error();
+ cprintf("Error %d opening myfile.txt...\n", err);
+ flen = 0;
+ return;
+ }
+
+ flen = DOS_fread(&fbuf, 1, 1000, fp);
+ cprintf("Read %d bytes from orbit.dat\n", flen);
+
+ DOS_fclose(fp);
+}
+
+/*------------------------------------------------------*/
+/* get data from buffer */
+/*------------------------------------------------------*/
+
+void get_par(void)
+{
+ int x = 0;
+ int i;
+ double vx, vy, px, py;
+
+ flen = strlen(fbuf);
+
+ while ((fbuf[x] != ':') && (x < flen)) x++;
+ x++;
+ sscanf(&fbuf[x], "%d", &period);
+
+ while ((fbuf[x] != ':') && (x < flen)) x++;
+ x++;
+ sscanf(&fbuf[x], "%d", &wcet);
+
+ while ((fbuf[x] != ':') && (x < flen)) x++;
+ x++;
+ sscanf(&fbuf[x], "%lf", &delta);
+
+ while ((fbuf[x] != ':') && (x < flen)) x++;
+ x++;
+ sscanf(&fbuf[x], "%lf", &scala);
+
+ while ((fbuf[x] != ':') && (x < flen)) x++;
+ x++;
+ sscanf(&fbuf[x], "%lf", &G);
+
+ while ((fbuf[x] != ':') && (x < flen)) x++;
+ x++;
+ sscanf(&fbuf[x], "%d", &RP);
+
+ while ((fbuf[x] != ':') && (x < flen)) x++;
+ x++;
+ sscanf(&fbuf[x], "%d", &RT);
+
+ while ((fbuf[x] != ':') && (x < flen)) x++;
+ x++;
+ sscanf(&fbuf[x], "%d", &XGS);
+
+ while ((fbuf[x] != ':') && (x < flen)) x++;
+ x++;
+ sscanf(&fbuf[x], "%d", &YGS);
+
+ for (i=0; i<MAX; i++) {
+
+ mass[i] = 0.;
+ px = 0.;
+ py = 0.;
+ vx = 0.;
+ vy = 0.;
+
+ while ((fbuf[x] != '\t') && (x < flen)) x++;
+ x++;
+ sscanf(&fbuf[x], "%lf", &mass[i]);
+
+ while ((fbuf[x] != '\t') && (x < flen)) x++;
+ x++;
+ sscanf(&fbuf[x], "%lf", &px);
+
+ while ((fbuf[x] != '\t') && (x < flen)) x++;
+ x++;
+ sscanf(&fbuf[x], "%lf", &py);
+
+ while ((fbuf[x] != '\t') && (x < flen)) x++;
+ x++;
+ sscanf(&fbuf[x], "%lf", &vx);
+
+ while ((fbuf[x] != '\t') && (x < flen)) x++;
+ x++;
+ sscanf(&fbuf[x], "%lf", &vy);
+
+ pos[i].x = px; pos[i].y = py;
+
+ vel[i].x = vx; vel[i].y = vy;
+
+ }
+}
+
+/*--------------------------------------------------------------*/
+
Index: demos/branches/xen/orbit/makefile
===================================================================
--- demos/branches/xen/orbit/makefile (nonexistent)
+++ demos/branches/xen/orbit/makefile (revision 1684)
@@ -0,0 +1,16 @@
+#
+#
+#
+
+ifndef BASE
+BASE=../..
+endif
+include $(BASE)/config/config.mk
+
+PROGS= orbit
+
+include $(BASE)/config/example.mk
+
+orbit:
+ make -f $(SUBMAKE) APP=orbit INIT= OTHEROBJS="initfile.o" OTHERINCL= SHARKOPT="__LINUXC26__ __PCI__ __INPUT__ __FB__"
+
Index: demos/branches/xen/orbit/orbit.dat
===================================================================
--- demos/branches/xen/orbit/orbit.dat (nonexistent)
+++ demos/branches/xen/orbit/orbit.dat (revision 1684)
@@ -0,0 +1,21 @@
+----------------------------------------------------
+period: 10000 wcet: 100
+delta: 1. scala: 150.
+G: 6.6e-15
+r_pianeta: 4 r_Terra: 8
+X_centro: 320 Y_centro: 240
+
+------------------- pianeti ------------------------
+ massa pos.x pos.y vel.x vel.y
+0: 6.0e21 0. 0. 0. 0.
+1: 1.0e21 10000. 8000. -60. 0.
+2: 1.0e8 5000. 0. 0. 80.
+3: 5.0e18 10000. 8000. -50. 0.
+4: 1.0e9 10000. 8000. -40. 20.
+5: 1.0e15 1000. 5000. -80. 0.
+6: 1.0e5 1000. 5000. -80. 0.
+7: 1.0e17 1000. 5000. -80. 0.
+8: 1.0e5 1000. 5000. -80. 0.
+9: 1.0e5 1000. 5000. -80. 0.
+10: 1.0e5 1000. 5000. -80. 0.
+----------------------------------------------------
Index: demos/branches/xen/mix/initfile.c
===================================================================
--- demos/branches/xen/mix/initfile.c (nonexistent)
+++ demos/branches/xen/mix/initfile.c (revision 1684)
@@ -0,0 +1,200 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Giacomo Guidi <giacomo@gandalf.sssup.it>
+ * Tullio Facchinetti <tullio.facchinetti@unipv.it>
+ * (see the web pages for full authors list)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+#include "kernel/kern.h"
+#include "intdrive/intdrive/intdrive.h"
+#include "edf/edf/edf.h"
+#include "hardcbs/hardcbs/hardcbs.h"
+#include "rr/rr/rr.h"
+#include "dummy/dummy/dummy.h"
+
+#include "sem/sem/sem.h"
+#include "hartport/hartport/hartport.h"
+#include "cabs/cabs/cabs.h"
+
+#include <drivers/shark_linuxc26.h>
+#include <drivers/shark_pci26.h>
+#include <drivers/shark_input26.h>
+#include <drivers/shark_keyb26.h>
+#include <drivers/shark_fb26.h>
+
+#define FRAME_BUFFER_DEVICE 0
+
+/*+ sysyem tick in us +*/
+#define TICK 0
+
+/*+ RR tick in us +*/
+#define RRTICK 2000
+
+/*+ Interrupt Server +*/
+#define INTDRIVE_Q 1000
+#define INTDRIVE_U 0.1*MAX_BANDWIDTH
+#define INTDRIVE_FLAG 0
+
+void call_shutdown_task(void *arg);
+int device_drivers_init();
+int device_drivers_close();
+void set_shutdown_task();
+TASK shutdown_task_body(void *arg);
+
+PID shutdown_task_PID = -1;
+
+TIME __kernel_register_levels__(void *arg)
+{
+ struct multiboot_info *mb = (struct multiboot_info *)arg;
+ LEVEL EDF_level;
+
+ INTDRIVE_register_level(INTDRIVE_Q, INTDRIVE_Q, INTDRIVE_U, INTDRIVE_FLAG);
+ EDF_level = EDF_register_level(EDF_ENABLE_ALL);
+ HCBS_register_level(HCBS_ENABLE_ALL, EDF_level);
+ RR_register_level(RRTICK, RR_MAIN_YES, mb);
+ dummy_register_level();
+
+ SEM_register_module();
+ CABS_register_module();
+
+ //read_file();
+
+ return TICK;
+}
+
+TASK __init__(void *arg)
+{
+ struct multiboot_info *mb = (struct multiboot_info *)arg;
+
+ HARTPORT_init();
+
+ /* Create the shutdown task. It will be activated at RUNLEVEL
+ SHUTDOWN */
+ set_shutdown_task();
+
+ /* Init the drivers */
+ device_drivers_init();
+
+ /* Set the shutdown task activation */
+ sys_atrunlevel(call_shutdown_task, NULL, RUNLEVEL_SHUTDOWN);
+
+ __call_main__(mb);
+
+ return (void *)0;
+}
+
+void set_shutdown_task() {
+
+ /* WARNING: the shutdown task is a background thread. It cannot execute
+ if the system is overloaded */
+ NRT_TASK_MODEL nrt;
+
+ nrt_task_default_model(nrt);
+ nrt_task_def_system(nrt);
+
+ shutdown_task_PID = task_create("Shutdown Task",shutdown_task_body,&nrt,NULL);
+ if (shutdown_task_PID == NIL) {
+ sys_shutdown_message("Error: Cannot create shutdown task\n");
+ exit(1);
+ }
+
+}
+
+int device_drivers_init() {
+
+ int res;
+ KEYB_PARMS kparms = BASE_KEYB;
+
+ LINUXC26_register_module(TRUE);
+
+ PCI26_init();
+
+ INPUT26_init();
+
+ keyb_def_ctrlC(kparms, NULL);
+
+ KEYB26_init(&kparms);
+
+ FB26_init();
+
+ res = FB26_open(FRAME_BUFFER_DEVICE);
+ if (res) {
+ cprintf("Error: Cannot open graphical mode\n");
+ KEYB26_close();
+ INPUT26_close();
+ exit(1);
+ }
+
+ FB26_use_grx(FRAME_BUFFER_DEVICE);
+
+ FB26_setmode(FRAME_BUFFER_DEVICE,"640x480-16");
+
+ return 0;
+
+}
+
+int device_drivers_close() {
+
+ FB26_close(FRAME_BUFFER_DEVICE);
+
+ KEYB26_close();
+
+ INPUT26_close();
+
+ return 0;
+
+}
+
+#define SHUTDOWN_TIMEOUT_SEC 3
+
+void call_shutdown_task(void *arg)
+{
+ struct timespec t;
+
+ sys_gettime(&t);
+ t.tv_sec += SHUTDOWN_TIMEOUT_SEC;
+
+ /* Emergency timeout to exit from RUNLEVEL_SHUTDOWN */
+ kern_event_post(&t,(void *)((void *)sys_abort_shutdown),(void *)0);
+
+ task_activate(shutdown_task_PID);
+}
+
+TASK shutdown_task_body(void *arg) {
+
+ device_drivers_close();
+
+ sys_shutdown_message("-- S.Ha.R.K. Closed --\n");
+
+ return NULL;
+
+}
Index: demos/branches/xen/mix/mix.c
===================================================================
--- demos/branches/xen/mix/mix.c (nonexistent)
+++ demos/branches/xen/mix/mix.c (revision 1684)
@@ -0,0 +1,766 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Paolo Gai <pj@gandalf.sssup.it>
+ * (see the web pages for full authors list)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/*
+ ------------
+ CVS : $Id: mix.c,v 1.7 2005-01-08 14:33:10 pj Exp $
+
+ File: $File$
+ Revision: $Revision: 1.7 $
+ Last update: $Date: 2005-01-08 14:33:10 $
+ ------------
+*/
+
+/*
+ * Copyright (C) 2000 Giorgio Buttazzo and Paolo Gai
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+/*--------------------------------------------------------------*/
+/* DEMO with 9 INDEPENDENT TASKS */
+/*--------------------------------------------------------------*/
+
+#include <kernel/kern.h>
+
+#include <drivers/shark_fb26.h>
+#include <drivers/shark_keyb26.h>
+
+#include <semaphore.h>
+#include <stdlib.h>
+#include <string.h>
+#include <math.h>
+
+#define PIG 3.1415
+#define DURATA 10000 /* counter duration in tick */
+
+#define LW 200 /* window length */
+#define HW 150 /* window height */
+#define HLOAD 30 /* Y level for the max load */
+#define LLOAD (HW-HLOAD-5) /* length for the max load */
+
+#define XWL 10 /* left X of LEFT window */
+#define XWM 220 /* left X of MIDDLE window */
+#define XWR 430 /* left X RIGHT window */
+
+#define YWH 5 /* top Y of HIGH window */
+#define YWM 165 /* top Y of MIDDLE window */
+#define YWL 325 /* top Y of LOW window */
+
+int flen = 0; /* file length */
+int fine = 0; /* ending flag */
+
+sem_t mx_mat, mx_grf; /* mutex semaphores */
+
+int wcet[10]; /* array of task wcets */
+int period[10]; /* array of task periods */
+double load(long); /* load evaluation function */
+
+PID ptas;
+char talk[5][25] = {" SHARK Demonstration ",
+ " RETIS Lab -- Scuola ",
+ " Superiore S. Anna ",
+ " HARD REAL-TIME DEMO ",
+ " June 5, 2001 "};
+
+char fbuf[1000] = "\
+TASK NAME PERIOD WCET\n\
+------------------------------------------\n\
+task1 watch: 1000000 200\n\
+task2 tasto: 2000 200\n\
+task3 palla: 2000 200\n\
+task4 mosca: 20000 200\n\
+task5 infor: 20000 300\n\
+task6 ruota: 5000 400\n\
+task7 color: 2000 200\n\
+task8 pendo: 5000 400\n\
+------------------------------------------\n";
+
+extern int vga16color[16];
+
+/*------------------------------------------------------*/
+/* file reading */
+/*------------------------------------------------------*/
+
+void read_file(void)
+{
+ int err;
+ DOS_FILE *fp;
+
+ fp = DOS_fopen("mix.dat","r");
+
+ if (!fp) {
+ err = DOS_error();
+ cprintf("Error %d opening myfile.txt...\n", err);
+ flen = 0;
+ return;
+ }
+
+ flen = DOS_fread(&fbuf, 1, 1000, fp);
+ cprintf("Read %d bytes from file\n", flen);
+ DOS_fclose(fp);
+}
+
+/*------------------------------------------------------*/
+/* get data from buffer */
+/*------------------------------------------------------*/
+
+void get_par(void)
+{
+ int x = 0;
+ int i;
+
+ flen = strlen(fbuf);
+
+ for (i=1; i<=8; i++) {
+ while ((fbuf[x] != ':') && (x < flen)) x++;
+ x++;
+ sscanf(&fbuf[x], "%d %d", &period[i], &wcet[i]);
+ }
+}
+
+/*--------------------------------------------------------------*/
+
+void finish1()
+{
+ exit(1);
+}
+
+/*--------------------------------------------------------------*/
+
+void finish2()
+{
+ fine = 1;
+}
+
+/****************************************************************/
+/* PROCESSO OROLOGIO */
+/****************************************************************/
+
+#define LLAN 40 /* length of watch stick */
+
+TASK watch()
+{
+ int x0 = XWL + LW/2;
+ int y0 = YWH + HW/2;
+ int grad;
+ int xg, yg;
+ int xt, yt, d;
+ int sec, min;
+ char s[5];
+ double rad, x, y;
+
+ xg = x0;
+ yg = y0 - LLAN;
+ xt = XWL + 78;
+ yt = YWH + 12;
+ sec = min = 0;
+
+ while (1) {
+ sec = (sec + 1) % 60;
+ if (sec == 0) min++;
+ grad = 90 - sec * 6;
+ rad = (double)grad * PIG / 180.;
+
+ sem_wait(&mx_mat);
+ x = (double)x0 + (double)LLAN * cos(rad);
+ y = (double)y0 - (double)LLAN * sin(rad);
+ sem_post(&mx_mat);
+
+ sem_wait(&mx_grf);
+ grx_line(x0, y0, xg, yg, vga16color[0]);
+ sem_post(&mx_grf);
+
+ xg = x;
+ yg = y;
+
+ sem_wait(&mx_grf);
+ grx_line(x0, y0, xg, yg, vga16color[14]);
+ sem_post(&mx_grf);
+
+ sem_wait(&mx_grf);
+ grx_text("0 :0 ", xt, yt, vga16color[14], vga16color[0]);
+ sprintf(s, "%d", min);
+ grx_text(s, xt+8, yt, vga16color[14], vga16color[0]);
+ sprintf(s, "%d", sec);
+ if (sec > 9) d = 24; else d = 32;
+ grx_text(s, xt+d, yt, vga16color[14], vga16color[0]);
+ sem_post(&mx_grf);
+
+ task_endcycle();
+ }
+}
+
+/****************************************************************/
+/* PROCESSO DI RIEMPIMENTO */
+/****************************************************************/
+
+#define CIMA (YWH+5) /* fondo del recipiente */
+#define FONDO (YWH+HW-5) /* cima del recipiente */
+#define LREC (XWM+75) /* lato sinistro recipiente */
+#define DREC 50 /* diametro del recipiente */
+
+TASK tasto()
+{
+ int x, y;
+ int x0; /* coord. sinistra recipiente */
+ int col, cliq, bkg;
+ int i;
+ int liv; /* livello del liquido */
+
+ cliq = 9;
+ bkg = 14;
+ x0 = LREC;
+ x = x0 + DREC/2;
+ y = CIMA;
+ liv = FONDO;
+
+ while (1) {
+
+ col = cliq;
+ for (i=0; i<2; i++) { /* disegna goccia */
+ while (y < liv) {
+ sem_wait(&mx_grf);
+ grx_plot(x,y,vga16color[col]);
+ sem_post(&mx_grf);
+ y++;
+ }
+ y = CIMA;
+ col = bkg;
+ }
+
+ liv--;
+ sem_wait(&mx_grf);
+ grx_line(x0+1, liv, x0+DREC-1, liv, vga16color[cliq]);
+ sem_post(&mx_grf);
+
+ if (liv <= CIMA+1) { /* swap colors */
+ i = bkg; bkg = cliq; cliq = i;
+ liv = FONDO;
+ }
+
+ task_endcycle();
+ }
+}
+
+/****************************************************************/
+
+void kboar()
+{
+ task_activate(ptas);
+}
+
+/****************************************************************/
+/* PROCESSO PALLA */
+/****************************************************************/
+
+#define VMIN 11. /* velocit… minima per suono */
+#define LP 3 /* lato della pallina */
+
+TASK palla()
+{
+ int ox, oy; /* vecchia posizione pallina */
+ int x0; /* posizione iniziale pallina */
+ int xmin, xmax;
+ int base, top;
+ int xg, yg; /* coordinate grafiche pallina */
+ double x, y; /* coordinate pallina */
+ double G = 9.8;
+ double vx, vy, v0; /* velocit… della pallina */
+ double t, tx; /* variabile temporale */
+ double dt; /* incremento temporale */
+ double arg; /* variabile di appoggio */
+
+ xmin = XWR+LP+1;
+ xmax = XWR+LW-LP-1;
+ base = YWH+HW-LP-1;
+ top = HW-10-LP;
+ x = ox = x0 = xmin;
+ y = oy = top;
+ arg = 2.*G*(double)top;
+ vy = v0 = sqrt(arg);
+ vx = 15.;
+ tx = 0.0;
+ t = vy / G;
+ dt = .02;
+
+ while (1) {
+ x = x0 + vx*tx;
+ y = base - vy*t + .5*G*t*t;
+ if (y >= base) {
+ t = 0.0;
+ vy = v0;
+ y = base - vy*t + .5*G*t*t;
+ }
+ if (x >= xmax) {
+ tx = 0.0;
+ x0 = xmax;
+ vx = -vx;
+ x = x0 + vx*tx;
+ }
+ if (x <= xmin) {
+ tx = 0.0;
+ x0 = xmin;
+ vx = -vx;
+ x = x0 + vx*tx;
+ }
+ xg = x; yg = y;
+ sem_wait(&mx_grf);
+ grx_disc(ox,oy,LP,vga16color[0]);
+ grx_disc(xg,yg,LP,vga16color[10]);
+ sem_post(&mx_grf);
+ oy = yg; ox = xg;
+ t += dt;
+ tx += dt;
+ task_endcycle();
+ }
+}
+
+/****************************************************************/
+/* PROCESSO MOSCA */
+/****************************************************************/
+
+TASK mosca()
+{
+ int x, y, Ax, Ay, h;
+ int x0, y0, tet;
+ int xmax,ymax;
+ double A, B;
+ double r;
+ double rnd;
+
+ xmax = LW/2-1; ymax = HW/2-1;
+ x = 0; y = 0; tet = 0;
+ x0 = XWL+LW/2; y0 = YWM+HW/2;
+ A = 5.; B = 30.;
+
+ while (1) {
+
+ rnd = (rand()%100)/100.; /* rnd = [0,1] */
+ h = (2. * B * rnd) - B; /* h = [-B,B] */
+ tet = tet + h;
+
+ if (tet > 360) tet = tet - 360;
+ if (tet < 0) tet = tet + 360;
+ r = tet * PIG / 180.;
+
+ sem_wait(&mx_mat);
+ Ax = (double)(A * cos(r));
+ Ay = (double)(A * sin(r));
+ sem_post(&mx_mat);
+ x = x + Ax;
+ y = y + Ay;
+
+ if ((x >= xmax) || (x <= -xmax) ||
+ (y >= ymax) || (y <= -ymax)) {
+ x = x - Ax;
+ y = y - Ay;
+ tet = tet - 180;
+ if (tet > 360) tet = tet - 360;
+ if (tet < 0) tet = tet + 360;
+ r = tet * PIG / 180.;
+ sem_wait(&mx_mat);
+ Ax = (double)(A * cos(r));
+ Ay = (double)(A * sin(r));
+ sem_post(&mx_mat);
+ x = x + Ax;
+ y = y + Ay;
+ }
+ sem_wait(&mx_grf);
+ grx_plot(x+x0, y+y0, vga16color[10]);
+ sem_post(&mx_grf);
+ task_endcycle();
+ }
+}
+
+/****************************************************************/
+/* PROCESSO INFORMAZIONI */
+/****************************************************************/
+
+TASK infor()
+{
+ char s[2];
+ int x, y;
+ int r;
+ int i = 0;
+ int leng;
+ int col = 0;
+
+ r = 0;
+ x = XWM + 16;
+ y = YWM + 40;
+ s[1] = 0;
+
+ leng = 0;
+ while (talk[0][leng] != 0) leng++;
+
+ while (1) {
+ s[0] = talk[r][i];
+ sem_wait(&mx_grf);
+ grx_text(s,x+i*8,y+r*8,vga16color[col+10],vga16color[1]);
+ sem_post(&mx_grf);
+ i++;
+ if (i == leng) {
+ i = 0;
+ r = (r + 1) % 5;
+ if (r == 0) col = (col + 1) % 6;
+ }
+ task_endcycle();
+ }
+}
+
+/****************************************************************/
+/* PROCESSO RUOTA */
+/****************************************************************/
+
+TASK ruota()
+{
+ int x0 = XWR + LW/2;
+ int y0 = YWM + HW/2;
+ int grad = 90;
+ int xg, yg;
+ double rad, x, y;
+
+ xg = x0;
+ yg = y0 + LLAN;
+
+ while (1) {
+
+ rad = (double)grad * PIG / 180.;
+
+ sem_wait(&mx_mat);
+ x = (double)x0 + (double)LLAN * cos(rad);
+ y = (double)y0 + (double)LLAN * sin(rad);
+ sem_post(&mx_mat);
+
+ sem_wait(&mx_grf);
+ grx_disc(xg, yg, 4, vga16color[0]);
+ sem_post(&mx_grf);
+
+ xg = x; yg = y;
+
+ sem_wait(&mx_grf);
+ grx_disc(xg, yg, 4, vga16color[13]);
+ sem_post(&mx_grf);
+
+ grad = (grad + 1) % 360;
+
+ task_endcycle();
+ }
+}
+
+/****************************************************************/
+/* PROCESSO COLORI */
+/****************************************************************/
+
+TASK color()
+{
+ int xx0 = XWL+5;
+ int yy0 = YWL+5;
+ int n, col;
+ int x, y;
+
+ x = 0; y = 0;
+
+ while (1) {
+ n = 19. * ((rand()%100)/100.);
+ x = xx0 + n * 10;
+ n = 14. * ((rand()%100)/100.);
+ y = yy0 + n * 10;
+ col = 16. * ((rand()%100)/100.);
+
+ /* xg = xx0 + x;
+ yg = yy0 + y;
+ x = (x + 10)%(LW-10);
+ y = (y + 10)%(HW-10);
+ */
+ sem_wait(&mx_grf);
+ grx_box(x, y, x+9, y+9, vga16color[col]);
+ sem_post(&mx_grf);
+
+ task_endcycle();
+ }
+}
+
+/****************************************************************/
+/* PROCESSO PENDOLO */
+/****************************************************************/
+
+TASK pendo()
+{
+ int x0 = XWM+LW/2;
+ int y0 = YWL+10;
+ int xg, yg;
+ int col = 11;
+ double x, y, teta;
+ double v, a, dt;
+ double g, l;
+
+ g = 9.8;
+ l = 80.;
+ dt = 0.1;
+ teta = 40. * PIG / 180.;
+ v = 0.;
+ sem_wait(&mx_mat);
+ x = l * sin((double)teta);
+ y = l * cos((double)teta);
+ a = -(g/l) * sin((double)teta);
+ sem_post(&mx_mat);
+ xg = x0 + x;
+ yg = y0 + y;
+
+ while (1) {
+
+ v += a * dt;
+ teta += v * dt;
+ sem_wait(&mx_mat);
+ x = l * sin((double)teta);
+ y = l * cos((double)teta);
+ a = -(g/l) * sin((double)teta);
+ sem_post(&mx_mat);
+
+ sem_wait(&mx_grf);
+ grx_line(x0, y0, xg, yg, vga16color[0]);
+ grx_circle(xg, yg, 5, vga16color[0]);
+ grx_disc(xg, yg, 4, vga16color[0]);
+ sem_post(&mx_grf);
+
+ xg = x0+x; yg = y0+y;
+
+ sem_wait(&mx_grf);
+ grx_line(x0, y0, xg, yg, vga16color[col]);
+ grx_circle(xg, yg, 5, vga16color[col+2]);
+ grx_disc(xg, yg, 4, vga16color[col+1]);
+ sem_post(&mx_grf);
+
+ task_endcycle();
+ }
+}
+
+/****************************** gener ******************************/
+
+TASK gener()
+{
+ HARD_TASK_MODEL m;
+ SOFT_TASK_MODEL am;
+ PID pid;
+
+ //---------------------------------------------
+ hard_task_default_model(m);
+ hard_task_def_wcet (m, wcet[1]);
+ hard_task_def_mit (m, period[1]);
+ hard_task_def_usemath (m);
+ pid = task_create("watch", watch, &m, NULL);
+ task_activate(pid);
+ keyb_getch(BLOCK);
+ //---------------------------------------------
+ soft_task_default_model(am);
+ soft_task_def_met (am, wcet[2]);
+ soft_task_def_period (am, period[2]);
+ soft_task_def_aperiodic(am);
+ soft_task_def_usemath (am);
+ ptas = task_create("tasto", tasto, &am, NULL);
+ task_activate(ptas);
+ keyb_getch(BLOCK);
+ //---------------------------------------------
+ hard_task_default_model(m);
+ hard_task_def_wcet (m, wcet[3]);
+ hard_task_def_mit (m, period[3]);
+ hard_task_def_usemath (m);
+ pid = task_create("palla", palla, &m, NULL);
+ task_activate(pid);
+ keyb_getch(BLOCK);
+ //---------------------------------------------
+ hard_task_default_model(m);
+ hard_task_def_wcet (m, wcet[4]);
+ hard_task_def_mit (m, period[4]);
+ hard_task_def_usemath (m);
+ pid = task_create("mosca", mosca, &m, NULL);
+ task_activate(pid);
+ keyb_getch(BLOCK);
+ //---------------------------------------------
+ hard_task_default_model(m);
+ hard_task_def_wcet (m, wcet[5]);
+ hard_task_def_mit (m, period[5]);
+ hard_task_def_usemath (m);
+ pid = task_create("infor", infor, &m, NULL);
+ task_activate(pid);
+ keyb_getch(BLOCK);
+ //---------------------------------------------
+ hard_task_default_model(m);
+ hard_task_def_wcet (m, wcet[6]);
+ hard_task_def_mit (m, period[6]);
+ hard_task_def_usemath (m);
+ pid = task_create("ruota", ruota, &m, NULL);
+ task_activate(pid);
+ keyb_getch(BLOCK);
+ //---------------------------------------------
+ hard_task_default_model(m);
+ hard_task_def_wcet (m, wcet[7]);
+ hard_task_def_mit (m, period[7]);
+ hard_task_def_usemath (m);
+ pid = task_create("color", color, &m, NULL);
+ task_activate(pid);
+ keyb_getch(BLOCK);
+ //---------------------------------------------
+ hard_task_default_model(m);
+ hard_task_def_wcet (m, wcet[8]);
+ hard_task_def_mit (m, period[8]);
+ hard_task_def_usemath (m);
+ pid = task_create("pendo", pendo, &m, NULL);
+ task_activate(pid);
+ //---------------------------------------------
+
+ return NULL;
+}
+
+/****************************** MAIN ******************************/
+
+int main()
+{
+ char s[20]; /* carattere letto da tastiera */
+ int x0, y0;
+ int x, y;
+ TIME t1, count; /* contatori valutazione carico */
+ double car; /* valore del carico corrente */
+ TIME seme;
+ PID pid;
+ NRT_TASK_MODEL m2;
+ KEY_EVT eva, evx, evs;
+
+ /* set the keyboard handler */
+ eva.ascii = 'a';
+ eva.scan = KEY_A;
+ eva.flag = 0;
+ eva.status = KEY_PRESSED;
+ keyb_hook(eva,kboar,FALSE);
+
+ evx.ascii = 'x';
+ evx.scan = KEY_X;
+ evx.flag = ALTL_BIT;
+ evx.status = KEY_PRESSED;
+ keyb_hook(evx,finish1,FALSE);
+
+ evs.ascii = ESC;
+ evs.scan = KEY_ESC;
+ evs.flag = 0;
+ evs.status = KEY_PRESSED;
+ keyb_hook(evs,finish2,FALSE);
+
+ sem_init(&mx_mat,0,1);
+ sem_init(&mx_grf,0,1);
+
+ seme = sys_gettime(NULL);
+ srand(seme);
+
+ get_par();
+
+ grx_rect(XWL,YWH,XWL+LW,YWH+HW,vga16color[14]);
+ grx_rect(XWM,YWH,XWM+LW,YWH+HW,vga16color[14]);
+ grx_rect(XWR,YWH,XWR+LW,YWH+HW,vga16color[14]);
+
+ grx_rect(XWL,YWM,XWL+LW,YWM+HW,vga16color[14]);
+ grx_rect(XWM,YWM,XWM+LW,YWM+HW,vga16color[14]);
+ grx_rect(XWR,YWM,XWR+LW,YWM+HW,vga16color[14]);
+
+ grx_rect(XWL,YWL,XWL+LW,YWL+HW,vga16color[14]);
+ grx_rect(XWM,YWL,XWM+LW,YWL+HW,vga16color[14]);
+ grx_rect(XWR,YWL,XWR+LW,YWL+HW,vga16color[14]);
+
+ x0 = XWL + LW/2;
+ y0 = YWH + HW/2;
+ grx_circle(x0, y0, LLAN+3, vga16color[12]);
+ grx_rect(XWL+74, YWH+7, XWL+120, YWH+22, vga16color[12]);
+
+ x0 = LREC;
+ grx_line(x0, CIMA, x0, FONDO, vga16color[15]);
+ grx_line(x0+DREC, CIMA, x0+DREC, FONDO, vga16color[15]);
+ grx_line(x0, FONDO, x0+DREC, FONDO, vga16color[15]);
+ grx_box(x0+1, CIMA, x0+DREC-1, FONDO-1, vga16color[14]);
+ grx_text("Press A", XWM+16, YWH+48, vga16color[10], vga16color[0]);
+ grx_text("to fill", XWM+16, YWH+64, vga16color[10], vga16color[0]);
+
+ grx_text("Press:", XWM+18, YWM+HW-50, vga16color[10], vga16color[0]);
+ grx_text("ESC to exit", XWM+18, YWM+HW-40, vga16color[10], vga16color[0]);
+ grx_text("SPACE to create", XWM+18, YWM+HW-30, vga16color[10], vga16color[0]);
+
+ x0 = XWR + LW/2;
+ y0 = YWM + HW/2;
+ grx_circle(x0, y0, LLAN/3, vga16color[14]);
+ grx_disc(x0, y0, LLAN/3-1, vga16color[12]);
+
+ x0 = XWR+5;
+ y0 = YWL+HW-5;
+ grx_line(x0, YWL+HLOAD, x0+LW-10, YWL+HLOAD, vga16color[12]);
+ grx_text("SYSTEM WORKLOAD:", x0+5, YWL+HLOAD-10, vga16color[10], vga16color[0]);
+
+ count = 0;
+ t1 = sys_gettime(NULL);
+ do count++; while (sys_gettime(NULL) < (t1 + DURATA));
+
+ nrt_task_default_model(m2);
+ pid = task_create("gener", gener, &m2, NULL);
+ task_activate(pid);
+
+ x = 0;
+ while (!fine) {
+ car = load(count);
+ y = (double)LLOAD*car;
+ sem_wait(&mx_grf);
+ grx_line(x0+x, y0-LLOAD+1, x0+x, y0, vga16color[0]);
+ grx_line(x0+x, y0-y, x0+x, y0, vga16color[15]);
+ grx_text(" ", x0+LW-60, YWL+HLOAD-10, vga16color[0], vga16color[0]);
+ sprintf(s, "%.3f", car);
+ grx_text(s, x0+LW-50, YWL+HLOAD-10, vga16color[15], vga16color[0]);
+ sem_post(&mx_grf);
+ x = (x + 1) % (LW-10);
+ }
+
+ exit(1);
+
+ return 0;
+}
+
+/****************************************************************/
+
+double load(long n)
+{
+ TIME i, t1;
+ double carico;
+
+ i = 0;
+ t1 = sys_gettime(NULL);
+ do i++; while (sys_gettime(NULL) < (t1 + DURATA));
+ carico = 1. - (double)i / (double)n;
+ return(carico);
+}
+
+/****************************************************************/
Index: demos/branches/xen/mix/makefile
===================================================================
--- demos/branches/xen/mix/makefile (nonexistent)
+++ demos/branches/xen/mix/makefile (revision 1684)
@@ -0,0 +1,16 @@
+#
+#
+#
+
+ifndef BASE
+BASE=../..
+endif
+include $(BASE)/config/config.mk
+
+PROGS= mix
+
+include $(BASE)/config/example.mk
+
+mix:
+ make -f $(SUBMAKE) APP=mix INIT= OTHEROBJS="initfile.o" OTHERINCL= SHARKOPT="__LINUXC26__ __PCI__ __INPUT__ __FB__"
+
Index: demos/branches/xen/mix/mix.dat
===================================================================
--- demos/branches/xen/mix/mix.dat (nonexistent)
+++ demos/branches/xen/mix/mix.dat (revision 1684)
@@ -0,0 +1,12 @@
+TASK NAME PERIOD WCET
+------------------------------------------
+task1 watch: 1000000 200
+task2 tasto: 2000 200
+task3 palla: 2000 200
+task4 mosca: 20000 200
+task5 infor: 20000 300
+task6 ruota: 5000 400
+task7 color: 2000 200
+task8 pendo: 5000 400
+------------------------------------------
+
Index: demos/branches/xen/mix/readme
===================================================================
--- demos/branches/xen/mix/readme (nonexistent)
+++ demos/branches/xen/mix/readme (revision 1684)
@@ -0,0 +1,7 @@
+MIX
+---
+
+This simple applications is a pout-pourri of simple graphic tasks
+that does different things with different timing constraints...
+
+Paolo
\ No newline at end of file
Index: demos/branches/xen/cpufreq/initfile.c
===================================================================
--- demos/branches/xen/cpufreq/initfile.c (nonexistent)
+++ demos/branches/xen/cpufreq/initfile.c (revision 1684)
@@ -0,0 +1,186 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Giacomo Guidi <giacomo@gandalf.sssup.it>
+ * Tullio Facchinetti <tullio.facchinetti@unipv.it>
+ * (see the web pages for full authors list)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#include "kernel/kern.h"
+#include "intdrive/intdrive/intdrive.h"
+#include "edf/edf/edf.h"
+#include "hardcbs/hardcbs/hardcbs.h"
+#include "rr/rr/rr.h"
+#include "dummy/dummy/dummy.h"
+
+#include "sem/sem/sem.h"
+#include "hartport/hartport/hartport.h"
+#include "cabs/cabs/cabs.h"
+
+#include "drivers/shark_linuxc26.h"
+#include "drivers/shark_input26.h"
+#include "drivers/shark_keyb26.h"
+
+#include <drivers/shark_cpu26.h>
+
+/*+ sysyem tick in us +*/
+#define TICK 0
+
+/*+ RR tick in us +*/
+#define RRTICK 10000
+
+/*+ IntDrive Server +*/
+#define INTDRIVE_Q 1000
+#define INTDRIVE_U 0.1*MAX_BANDWIDTH
+#define INTDRIVE_FLAG 0
+
+void call_shutdown_task(void *arg);
+int device_drivers_init();
+int device_drivers_close();
+void set_shutdown_task();
+TASK shutdown_task_body(void *arg);
+
+PID shutdown_task_PID = -1;
+
+TIME __kernel_register_levels__(void *arg)
+{
+ struct multiboot_info *mb = (struct multiboot_info *)arg;
+ LEVEL EDF_level;
+
+ INTDRIVE_register_level(INTDRIVE_Q, INTDRIVE_Q, INTDRIVE_U, INTDRIVE_FLAG);
+ EDF_level = EDF_register_level(EDF_ENABLE_ALL);
+ HCBS_register_level(HCBS_ENABLE_ALL, EDF_level);
+ RR_register_level(RRTICK, RR_MAIN_YES, mb);
+ dummy_register_level();
+
+ SEM_register_module();
+
+ CABS_register_module();
+
+ return TICK;
+}
+
+TASK __init__(void *arg)
+{
+ struct multiboot_info *mb = (struct multiboot_info *)arg;
+
+ HARTPORT_init();
+
+ /* Create the shutdown task. It will be activated at RUNLEVEL
+ SHUTDOWN */
+ set_shutdown_task();
+
+ /* Init the drivers */
+ device_drivers_init();
+
+ /* Set the shutdown task activation */
+ sys_atrunlevel(call_shutdown_task, NULL, RUNLEVEL_SHUTDOWN);
+
+ //sys_set_reboot(EXIT_MODE_HALT);
+
+ __call_main__(mb);
+
+ return (void *)0;
+}
+
+void set_shutdown_task() {
+
+ /* WARNING: the shutdown task is a background thread. It cannot execute
+ if the system is overloaded */
+ NRT_TASK_MODEL nrt;
+
+ nrt_task_default_model(nrt);
+ nrt_task_def_system(nrt);
+
+ shutdown_task_PID = task_create("Shutdown Task",shutdown_task_body,&nrt,NULL);
+ if (shutdown_task_PID == NIL) {
+ sys_shutdown_message("Error: Cannot create shutdown task\n");
+ exit(1);
+ }
+
+}
+
+int device_drivers_init() {
+
+ KEYB_PARMS kparms = BASE_KEYB;
+
+ LINUXC26_register_module(TRUE);
+
+ CPU26_init();
+
+ CPU26_DVS_init();
+
+ INPUT26_init();
+
+ keyb_def_ctrlC(kparms, NULL);
+
+ KEYB26_init(&kparms);
+
+ return 0;
+
+}
+
+int device_drivers_close() {
+
+ //CPU26_DVS_close();
+
+ KEYB26_close();
+
+ INPUT26_close();
+
+ return 0;
+
+}
+
+#define SHUTDOWN_TIMEOUT_SEC 3
+
+void call_shutdown_task(void *arg)
+{
+ struct timespec t;
+
+ sys_gettime(&t);
+ t.tv_sec += SHUTDOWN_TIMEOUT_SEC;
+
+ /* Emergency timeout to exit from RUNLEVEL_SHUTDOWN */
+ kern_event_post(&t,(void *)((void *)sys_abort_shutdown),(void *)0);
+
+ task_activate(shutdown_task_PID);
+}
+
+TASK shutdown_task_body(void *arg) {
+
+ device_drivers_close();
+
+ sys_shutdown_message("-- S.Ha.R.K. Closed --\n");
+
+ return NULL;
+
+}
+
Index: demos/branches/xen/cpufreq/cpufreq.c
===================================================================
--- demos/branches/xen/cpufreq/cpufreq.c (nonexistent)
+++ demos/branches/xen/cpufreq/cpufreq.c (revision 1684)
@@ -0,0 +1,75 @@
+
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators: Giorgio Buttazzo <giorgio@sssup.it>
+ *
+ * Authors : Mauro Marinoni
+ * Giacomo Guidi <giacomo@gandalf.sssup.it>
+ * (see authors.txt for full list of hartik's authors)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+#include <kernel/kern.h>
+
+#include <drivers/shark_keyb26.h>
+#include <drivers/shark_cpu26.h>
+
+void endfunc(KEY_EVT *e)
+{
+ exit(0);
+}
+
+int main(int argc, char **argv)
+{
+ int val, num;
+ char buf[1000];
+
+ CPU26_showinfo();
+
+ val = CPU26_get_min_frequency();
+ cprintf("Min freq: %d\n", val);
+
+ val = CPU26_get_max_frequency();
+ cprintf("Max freq: %d\n", val);
+
+ val = CPU26_get_cur_frequency();
+ cprintf("Current freq: %d\n", val);
+
+ num = CPU26_show_frequencies(buf);
+ if (num>0)
+ cprintf("Allowed frequencys: %s\n", buf);
+ num = CPU26_get_frequencies(cpu26_freqs);
+
+ if (num>0) {
+ CPU26_set_frequency(cpu26_freqs[0], DVS_RELATION_L);
+ val = CPU26_get_cur_frequency();
+ cprintf("Actual freq: %d\n", val);
+ }
+
+ endfunc(NULL);
+
+ return 0;
+}
/demos/branches/xen/cpufreq/cpufreq.c
Property changes:
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: demos/branches/xen/cpufreq/makefile
===================================================================
--- demos/branches/xen/cpufreq/makefile (nonexistent)
+++ demos/branches/xen/cpufreq/makefile (revision 1684)
@@ -0,0 +1,16 @@
+#
+#
+#
+
+ifndef BASE
+BASE=../..
+endif
+include $(BASE)/config/config.mk
+
+PROGS= cpufreq
+
+include $(BASE)/config/example.mk
+
+cpufreq:
+ make -f $(SUBMAKE) APP=cpufreq INIT= OTHEROBJS="initfile.o" SHARKOPT="__INPUT__ __CPU__ __LINUXC26__ __PCI__"
+
Index: demos/branches/xen/pse51/pinit.c
===================================================================
--- demos/branches/xen/pse51/pinit.c (nonexistent)
+++ demos/branches/xen/pse51/pinit.c (revision 1684)
@@ -0,0 +1,104 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Paolo Gai <pj@gandalf.sssup.it>
+ * (see the web pages for full authors list)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/**
+ ------------
+ CVS : $Id: pinit.c,v 1.4 2005-02-25 11:05:44 pj Exp $
+
+ File: $File$
+ Revision: $Revision: 1.4 $
+ Last update: $Date: 2005-02-25 11:05:44 $
+ ------------
+
+ This is a minimal initialization file for the PSE51 profile.
+
+ It initializes the POSIX scheduler, the Hartik Ports and the Keyboard driver.
+
+**/
+
+/*
+ * Copyright (C) 2000 Paolo Gai
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+
+
+#include "kernel/kern.h"
+#include "posix/posix/posix.h"
+#include "dummy/dummy/dummy.h"
+
+#include "pi/pi/pi.h"
+#include "pc/pc/pc.h"
+
+#include "sem/sem/sem.h"
+#include "hartport/hartport/hartport.h"
+
+#include "pthread.h"
+#include "time.h"
+
+/*+ sysyem tick in us +*/
+#define TICK 0
+
+/*+ RR tick in us +*/
+#define RRTICK 10000
+
+TIME __kernel_register_levels__(void *arg)
+{
+ struct multiboot_info *mb = (struct multiboot_info *)arg;
+
+ POSIX_register_level(RRTICK, POSIX_MAIN_YES, mb, 32);
+ dummy_register_level();
+
+ PI_register_module();
+ PC_register_module();
+
+ SEM_register_module();
+
+ /* for the Pthread library */
+ PTHREAD_register_module(0, 0, 1);
+
+ /* for the real time clock extensions */
+ TIMER_register_module();
+
+ return TICK;
+}
+
+TASK __init__(void *arg)
+{
+ struct multiboot_info *mb = (struct multiboot_info *)arg;
+
+ HARTPORT_init();
+
+ __call_main__(mb);
+
+ return (void *)0;
+}
Index: demos/branches/xen/pse51/ptest1.c
===================================================================
--- demos/branches/xen/pse51/ptest1.c (nonexistent)
+++ demos/branches/xen/pse51/ptest1.c (revision 1684)
@@ -0,0 +1,206 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Paolo Gai <pj@gandalf.sssup.it>
+ * (see the web pages for full authors list)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/**
+ ------------
+ CVS : $Id: ptest1.c,v 1.4 2005-01-08 14:36:11 pj Exp $
+
+ File: $File$
+ Revision: $Revision: 1.4 $
+ Last update: $Date: 2005-01-08 14:36:11 $
+ ------------
+
+ Posix test 1:
+
+ the main task create 4 tasks, J1, J2, J3, J4
+ at t = 0.2 sec. it raise a signal to J1
+ at t = 0.4 sec. it raise a signal to J2
+ at t = 0.8 sec. it kill J4
+
+ J1: it simply calls sigwait
+
+ J2: it simply calls sigwaitinfo
+
+ J3: it simply calls sigtimedwait with a timeout of 0.5 sec.
+
+ J4: it simply calls sigtimedwait with a -long- timeout
+ (J4 will be killed by main)
+
+ non standard function used:
+ cprintf
+ sys_gettime
+ keyboard stuffs
+
+**/
+
+/*
+ * Copyright (C) 2000 Paolo Gai
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+#include <sys/types.h>
+#include <pthread.h>
+#include <signal.h>
+
+#include <kernel/kern.h>
+
+void *J1(void *arg)
+{
+ int sig, err;
+ sigset_t mask;
+
+ cprintf("J1 starts and call sigwait(31)\n");
+
+ sigemptyset(&mask);
+ sigaddset(&mask,31);
+ err = sigwait(&mask,&sig);
+
+ cprintf("J1 exit from sigwait(), err=%d, sig=%d\n", err, sig);
+
+ return 0;
+}
+
+void *J2(void *arg)
+{
+ int err;
+ siginfo_t info;
+ sigset_t mask;
+
+ cprintf("J2 starts and call sigwaitinfo(30)\n");
+
+ sigemptyset(&mask);
+ sigaddset(&mask,30);
+ err = sigwaitinfo(&mask,&info);
+
+ cprintf("J2 exit from sigwaitinfo(), err=%d, signo=%d code=%d value=%d\n",
+ err, info.si_signo, info.si_code, info.si_value.sival_int);
+
+ return 0;
+}
+
+void *J3(void *arg)
+{
+ int err;
+ siginfo_t info;
+ sigset_t mask;
+ struct timespec t;
+
+ cprintf("J3 starts and call sigtimedwait(29)\n");
+
+ sigemptyset(&mask);
+ sigaddset(&mask,29);
+ t.tv_sec = 0;
+ t.tv_nsec = 300000000;
+ err = sigtimedwait(&mask,&info,&t);
+
+ cprintf("J3 exit from sigtimedwait(), err=%d, signo=%d code=%d value=%d\n",
+ err, info.si_signo, info.si_code, info.si_value.sival_int);
+
+ return 0;
+}
+
+void uscitaJ4(void *arg)
+{
+ cprintf("J4: AAAARRRRGGGHHH!!! killed by someone...\n");
+}
+
+void *J4(void *arg)
+{
+ int err;
+ siginfo_t info;
+ sigset_t mask;
+ struct timespec t;
+
+ cprintf("J4 starts and call sigtimedwait(28)\n");
+
+ sigemptyset(&mask);
+ sigaddset(&mask,28);
+ t.tv_sec = 10;
+ t.tv_nsec = 0;
+
+ pthread_cleanup_push(uscitaJ4,NULL);
+ err = sigtimedwait(&mask,&info,&t);
+ pthread_cleanup_pop(0);
+
+ cprintf("J4 exit from sigtimedwait(), err=%d, signo=%d code=%d value=%d\n",
+ err, info.si_signo, info.si_code, info.si_value.sival_int);
+
+ return 0;
+}
+
+int main(int argc, char **argv)
+{
+ int err;
+ sigset_t mask;
+ pthread_t j1, j2, j3, j4;
+ union sigval value;
+
+
+ /* main blocks signals for all the tasks */
+ sigfillset(&mask);
+ pthread_sigmask(SIG_BLOCK, &mask, NULL);
+
+ cprintf("main: creating J1\n");
+ err = pthread_create(&j1, NULL, J1, NULL);
+ if (err) cprintf("Error creating J1\n");
+
+ cprintf("main: creating J2\n");
+ err = pthread_create(&j2, NULL, J2, NULL);
+ if (err) cprintf("Error creating J2\n");
+
+ cprintf("main: creating J3\n");
+ err = pthread_create(&j3, NULL, J3, NULL);
+ if (err) cprintf("Error creating J3\n");
+
+ cprintf("main: creating J4\n");
+ err = pthread_create(&j4, NULL, J4, NULL);
+ if (err) cprintf("Error creating J4\n");
+
+ cprintf("main: waiting 0.2 sec\n");
+ while (sys_gettime(NULL) < 200000);
+
+ cprintf("main: kill(31), then wait until t=0.4 sec \n");
+ kill(0, 31);
+
+ while (sys_gettime(NULL) < 400000);
+ cprintf("main: sigqueue(30), then wait until t=0.8 sec \n");
+ value.sival_int = 300;
+ sigqueue(0, 30, value);
+
+ while (sys_gettime(NULL) < 800000);
+ cprintf("main: kill(J4)\n");
+ pthread_cancel(j4);
+
+ cprintf("main: ending...\n");
+
+ return 0;
+}
Index: demos/branches/xen/pse51/ptest2.c
===================================================================
--- demos/branches/xen/pse51/ptest2.c (nonexistent)
+++ demos/branches/xen/pse51/ptest2.c (revision 1684)
@@ -0,0 +1,135 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Paolo Gai <pj@gandalf.sssup.it>
+ * (see the web pages for full authors list)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/**
+ ------------
+ CVS : $Id: ptest2.c,v 1.4 2005-01-08 14:36:11 pj Exp $
+
+ File: $File$
+ Revision: $Revision: 1.4 $
+ Last update: $Date: 2005-01-08 14:36:11 $
+ ------------
+
+ Posix test 2:
+
+ pthread_once + thread_specific_data
+
+ the main task:
+ creates a key
+ creates 2 tasks, J1, J2
+ at t = 0.4 sec. it kills J1 and J2
+
+ J1 and J2 will set and check the thread specific data
+ and when the die, a destructor is called (twice, because the value
+ is not set to null...)
+
+ non standard function used:
+ cprintf
+ sys_gettime
+ keyboard stuffs
+**/
+
+/*
+ * Copyright (C) 2000 Paolo Gai
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+#include <sys/types.h>
+#include <pthread.h>
+
+#include <kernel/kern.h>
+
+pthread_key_t prova_key;
+
+pthread_once_t once = PTHREAD_ONCE_INIT;
+
+void once_init()
+{
+ cprintf("ONCE: (pid=%d)\n", exec_shadow);
+}
+
+void destr_key(void *arg)
+{
+ cprintf("J (pid=%d) destructor called with value %d\n", exec_shadow,(int)arg);
+ pthread_setspecific(prova_key,(void *)((int)arg/100));
+}
+
+void print_test()
+{
+ int val;
+
+ val = (int)pthread_getspecific(prova_key);
+ cprintf("J (pid=%d) printtest value=%d\n", exec_shadow, val);
+}
+
+void *J(void *arg)
+{
+ pthread_once(&once, once_init);
+ cprintf("J (pid=%d) starts and call setspecific\n", exec_shadow);
+ pthread_setspecific(prova_key,arg);
+ print_test();
+ cprintf("J (pid=%d) exits\n", exec_shadow);
+
+ return 0;
+}
+
+int main(int argc, char **argv)
+{
+ int err;
+ pthread_t j1, j2;
+
+ cprintf("main: creating prova_key\n");
+ pthread_key_create(&prova_key, destr_key);
+
+ cprintf("main: provakey =%d\n", prova_key);
+
+ cprintf("main: creating J1\n");
+ err = pthread_create(&j1, NULL, J, (void *)1414);
+ if (err) cprintf("Error creating J1\n");
+ cprintf("main: J1 has PID %d\n",j1);
+
+ cprintf("main: creating J2\n");
+ err = pthread_create(&j2, NULL, J, (void *)3141);
+ if (err) cprintf("Error creating J2\n");
+ cprintf("main: J2 has PID %d\n",j2);
+
+ cprintf("main: waiting 0.4 sec\n");
+ while (sys_gettime(NULL) < 400000);
+
+ cprintf("main: kill J1 and J2\n");
+ pthread_cancel(j1);
+ pthread_cancel(j2);
+
+ cprintf("main: ending...\n");
+
+ return 0;
+}
Index: demos/branches/xen/pse51/ptest3.c
===================================================================
--- demos/branches/xen/pse51/ptest3.c (nonexistent)
+++ demos/branches/xen/pse51/ptest3.c (revision 1684)
@@ -0,0 +1,213 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Paolo Gai <pj@gandalf.sssup.it>
+ * (see the web pages for full authors list)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/**
+ ------------
+ CVS : $Id: ptest3.c,v 1.4 2005-01-08 14:36:11 pj Exp $
+
+ File: $File$
+ Revision: $Revision: 1.4 $
+ Last update: $Date: 2005-01-08 14:36:11 $
+ ------------
+
+ Posix test 3:
+
+ timers...
+ it creates two periodic timers that queues signals, a periodic timer
+ that create tasks and an one-shot timer.
+
+ non standard function used:
+ cprintf
+ sys_gettime
+ keyboard stuffs
+
+**/
+
+/*
+ * Copyright (C) 2000 Paolo Gai
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+#include <sys/types.h>
+#include <pthread.h>
+#include <time.h>
+
+#include <kernel/kern.h>
+
+int count25 = 0, count26 = 0;
+
+void signal_handler(int signo, siginfo_t *info, void *extra)
+{
+ switch (signo) {
+ case 25:
+ count25++;
+ break;
+ case 26:
+ count26++;
+ break;
+ }
+
+ cprintf("Signal %d code=%s value=%d task=%d count25=%d count26=%d time=%ldusec\n",
+ info->si_signo,
+ (info->si_code == SI_TIMER) ? "Timer" : "Other",
+ info->si_value.sival_int,
+ info->si_task,
+ count25,
+ count26,
+ sys_gettime(NULL));
+}
+
+void task_timer(union sigval value)
+{
+ cprintf("task_timer: value = %d, time = %ldusec\n",
+ value.sival_int, sys_gettime(NULL));
+}
+
+int main(int argc, char **argv)
+{
+ int err;
+ timer_t timer1, timer2, timer3;
+ struct itimerspec timeout1, timeout2, timeout3, nulltimeout;
+ struct sigaction sig_act;
+ struct sigevent ev25, ev26, evtask;
+ pthread_attr_t task_attr;
+ struct sched_param task_param;
+
+ sig_act.sa_sigaction = (void *) signal_handler;
+ sig_act.sa_flags = SA_SIGINFO;
+ sigemptyset(&sig_act.sa_mask);
+
+ sigaction(25, &sig_act, NULL);
+ sigaction(26, &sig_act, NULL);
+
+ // set ev25, ev26, evtask
+ ev25.sigev_notify = SIGEV_SIGNAL;
+ ev25.sigev_signo = 25;
+ ev25.sigev_value.sival_int = 555;
+
+ ev26.sigev_notify = SIGEV_SIGNAL;
+ ev26.sigev_signo = 26;
+ ev26.sigev_value.sival_int = 666;
+
+ evtask.sigev_notify = SIGEV_THREAD;
+ evtask.sigev_value.sival_int = 777;
+ evtask.sigev_notify_function = task_timer;
+ evtask.sigev_notify_attributes = &task_attr;
+
+ pthread_attr_init(&task_attr);
+ pthread_attr_setdetachstate(&task_attr, PTHREAD_CREATE_DETACHED);
+ pthread_attr_setschedpolicy(&task_attr, SCHED_FIFO);
+ task_param.sched_priority = 10;
+ pthread_attr_setschedparam(&task_attr, &task_param);
+
+ // set timeout1, timeout2, nulltimeout
+ timeout1.it_interval.tv_sec = 0;
+ timeout1.it_interval.tv_nsec = 500000000;
+ timeout1.it_value.tv_sec = 3;
+ timeout1.it_value.tv_nsec = 0;
+
+ timeout2.it_interval.tv_sec = 0;
+ timeout2.it_interval.tv_nsec = 200000000;
+ timeout2.it_value.tv_sec = 7;
+ timeout2.it_value.tv_nsec = 0;
+
+ timeout3.it_interval.tv_sec = 0;
+ timeout3.it_interval.tv_nsec = 300000000;
+ timeout3.it_value.tv_sec = 5;
+ timeout3.it_value.tv_nsec = 0;
+
+ NULL_TIMESPEC(&nulltimeout.it_value);
+ NULL_TIMESPEC(&nulltimeout.it_interval);
+
+ // create the timers
+ err = timer_create(CLOCK_REALTIME, &ev25, &timer1);
+ if (err == -1) { cprintf("main: unable to create timer 1\n"); }
+
+ err = timer_create(CLOCK_REALTIME, &ev26, &timer2);
+ if (err == -1) { cprintf("main: unable to create timer 2\n"); }
+
+ err = timer_create(CLOCK_REALTIME, &evtask, &timer3);
+ if (err == -1) { cprintf("main: unable to create timer 3\n"); }
+
+ // arm the timers
+ err = timer_settime(timer1, TIMER_ABSTIME, &timeout1, NULL);
+ if (err == -1) { cprintf("main: unable to set timer 1\n"); }
+
+ err = timer_settime(timer2, 0, &timeout2, NULL);
+ if (err == -1) { cprintf("main: unable to set timer 2\n"); }
+
+ err = timer_settime(timer3, TIMER_ABSTIME, &timeout3, NULL);
+ if (err == -1) { cprintf("main: unable to set timer 3\n"); }
+
+ cprintf("main: waiting signals...\n");
+ while (sys_gettime(NULL) < 8500000) {
+ //kern_deliver_pending_signals();
+ }
+
+ cprintf("main: disarm the timer2\n");
+ err = timer_settime(timer2, 0, &nulltimeout, &timeout2);
+ if (err == -1) { cprintf("main: unable to disarm timer 2\n"); }
+
+ cprintf("main: timer2 disarmed, itvalue=%ld.%ld\n",
+ timeout2.it_value.tv_sec,timeout2.it_value.tv_nsec/1000);
+
+ while (sys_gettime(NULL) < 10000000) {
+ //kern_deliver_pending_signals();
+ }
+
+ cprintf("main: disarm the timer1\n");
+ err = timer_settime(timer1, TIMER_ABSTIME, &nulltimeout, &timeout1);
+ if (err == -1) { cprintf("main: unable to disarm timer 1\n"); }
+
+ cprintf("main: timer1 disarmed, itvalue=%ld.%ld\n",
+ timeout1.it_value.tv_sec,timeout1.it_value.tv_nsec/1000);
+
+ while (sys_gettime(NULL) < 12000000) {
+ //kern_deliver_pending_signals();
+ }
+
+ cprintf("main: arm timer1\n");
+ timeout1.it_interval.tv_sec = 0;
+ timeout1.it_interval.tv_nsec = 0;
+ timeout1.it_value.tv_sec = 13;
+ timeout1.it_value.tv_nsec = 0;
+ err = timer_settime(timer1, TIMER_ABSTIME, &timeout1, NULL);
+ if (err == -1) { cprintf("main: unable to arm timer 1\n"); }
+
+ while (sys_gettime(NULL) < 14000000) {
+ //kern_deliver_pending_signals();
+ }
+
+ cprintf("main: ending...\n");
+
+ return 0;
+}
Index: demos/branches/xen/pse51/ptest4.c
===================================================================
--- demos/branches/xen/pse51/ptest4.c (nonexistent)
+++ demos/branches/xen/pse51/ptest4.c (revision 1684)
@@ -0,0 +1,137 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Paolo Gai <pj@gandalf.sssup.it>
+ * (see the web pages for full authors list)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/**
+ ------------
+ CVS : $Id: ptest4.c,v 1.4 2005-01-08 14:36:11 pj Exp $
+
+ File: $File$
+ Revision: $Revision: 1.4 $
+ Last update: $Date: 2005-01-08 14:36:11 $
+ ------------
+
+ Posix test 4:
+
+ the main task create 3 tasks, J1, J2, J3
+ at t = 1 sec. it raise a signal to J1
+ at t = 2 sec. it kills J2
+
+ J1,J2,J3: it simply calls nanosleep
+
+ non standard function used:
+ cprintf
+ sys_gettime
+ keyboard stuffs
+
+**/
+
+/*
+ * Copyright (C) 2000 Paolo Gai
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+#include <sys/types.h>
+#include <pthread.h>
+#include <signal.h>
+#include <time.h>
+
+#include <kernel/kern.h>
+
+void uscitaJ(void *arg)
+{
+ cprintf("J: (pid=%d) AAAARRRRGGGHHH!!! killed by someone...\n", exec_shadow);
+}
+
+void *J(void *arg)
+{
+ struct timespec t1, t2;
+ int err;
+
+ cprintf("J (pid=%d) starts and call nanosleep\n",exec_shadow);
+
+ t1.tv_sec = 3;
+ t1.tv_nsec = 0;
+ NULL_TIMESPEC(&t2);
+ pthread_cleanup_push(uscitaJ,NULL);
+ err = nanosleep(&t1, &t2);
+ pthread_cleanup_pop(0);
+
+ cprintf("J (pid=%d) ending, nanosleep returns errno=%d, t2=%ld.%ld\n",
+ exec_shadow, err, t2.tv_sec, t2.tv_nsec/1000);
+
+ return 0;
+}
+
+void signal_handler(int signo, siginfo_t *info, void *extra)
+{
+ cprintf("SIGNAL HANDLER: pid=%d\n",exec_shadow);
+}
+
+
+int main(int argc, char **argv)
+{
+ int err;
+ pthread_t j1, j2, j3;
+ struct sigaction sig_act;
+
+ sig_act.sa_sigaction = (void *) signal_handler;
+ sig_act.sa_flags = SA_SIGINFO;
+ sigemptyset(&sig_act.sa_mask);
+
+ sigaction(31, &sig_act, NULL);
+
+ cprintf("main: creating J1\n");
+ err = pthread_create(&j1, NULL, J, NULL);
+ if (err) cprintf("Error creating J1\n");
+
+ cprintf("main: creating J2\n");
+ err = pthread_create(&j2, NULL, J, NULL);
+ if (err) cprintf("Error creating J2\n");
+
+ cprintf("main: creating J3\n");
+ err = pthread_create(&j3, NULL, J, NULL);
+ if (err) cprintf("Error creating J3\n");
+
+ cprintf("main: waiting 1 sec\n");
+ while (sys_gettime(NULL) < 1000000);
+
+ cprintf("main: pthread_kill on j1, then wait until t=2 sec \n");
+ pthread_kill(j1, 31);
+
+ while (sys_gettime(NULL) < 2000000);
+ cprintf("main: pthread_cancel(J2)\n");
+ pthread_cancel(j2);
+
+ cprintf("main: ending...\n");
+
+ return 0;
+}
Index: demos/branches/xen/pse51/ptest5.c
===================================================================
--- demos/branches/xen/pse51/ptest5.c (nonexistent)
+++ demos/branches/xen/pse51/ptest5.c (revision 1684)
@@ -0,0 +1,92 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Paolo Gai <pj@gandalf.sssup.it>
+ * (see the web pages for full authors list)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/**
+ ------------
+ CVS : $Id: ptest5.c,v 1.3 2005-01-08 14:36:11 pj Exp $
+
+ File: $File$
+ Revision: $Revision: 1.3 $
+ Last update: $Date: 2005-01-08 14:36:11 $
+ ------------
+
+ Posix test 5:
+ an alarm test
+
+ non standard function used:
+ cprintf
+ sys_gettime
+ keyboard stuffs
+
+**/
+
+/*
+ * Copyright (C) 2000 Paolo Gai
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+#include <sys/types.h>
+#include <pthread.h>
+#include <signal.h>
+#include <unistd.h>
+
+#include <kernel/kern.h>
+
+void signal_handler(int signo, siginfo_t *info, void *extra)
+{
+ cprintf("SIGNAL HANDLER: pid=%d\n",exec_shadow);
+}
+
+int main(int argc, char **argv)
+{
+ struct sigaction sig_act;
+
+ sig_act.sa_sigaction = (void *) signal_handler;
+ sig_act.sa_flags = SA_SIGINFO;
+ sigemptyset(&sig_act.sa_mask);
+
+ sigaction(SIGALRM, &sig_act, NULL);
+
+ cprintf("main: alarm(5), waiting t=2 sec\n");
+ alarm(5);
+
+ while (sys_gettime(NULL) < 2000000);
+
+ cprintf("main: alarm(3) return %d, waiting t=6 sec\n",alarm(3));
+
+ pause();
+// while (sys_gettime(NULL) < 6000000);
+
+ cprintf("main: ending...\n");
+
+ return 0;
+}
Index: demos/branches/xen/pse51/ptest6.c
===================================================================
--- demos/branches/xen/pse51/ptest6.c (nonexistent)
+++ demos/branches/xen/pse51/ptest6.c (revision 1684)
@@ -0,0 +1,286 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Paolo Gai <pj@gandalf.sssup.it>
+ * (see the web pages for full authors list)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/**
+ ------------
+ CVS : $Id: ptest6.c,v 1.3 2005-01-08 14:36:11 pj Exp $
+
+ File: $File$
+ Revision: $Revision: 1.3 $
+ Last update: $Date: 2005-01-08 14:36:11 $
+ ------------
+
+ Posix test 6:
+
+ message queues
+
+ main thread:
+ set a sigevent to sigev_thread on a mailbox (that creates thread 2)
+ creates thread 1
+ waits t=3.5 sec.
+ pthread_cancel(T4)
+
+ thread 1:
+ send a msg to the mailbox (the event fires and thread 2 is created)
+
+ thread 2:
+ receive the msg sent by thread 1
+ set the event to a signal
+ creates thread 3 and 4
+ waits t = 1 sec
+ send another msg
+
+ thread 3:
+ receive the msg sent by 2 (it blocks!)
+ waits t = 2 sec
+ send 5 msgs (with different priorities!!!
+
+ thread 4:
+ receives 5 msgs every 0.5 sec.
+ then receive another message that never will arrive...
+
+ non standard function used:
+ cprintf
+ sys_gettime
+ keyboard stuffs
+
+**/
+
+/*
+ * Copyright (C) 2000 Paolo Gai
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+#include <sys/types.h>
+#include <pthread.h>
+#include <mqueue.h>
+
+#include <kernel/kern.h>
+
+struct sigevent ev25, evtask;
+pthread_attr_t task_attr;
+struct sched_param task_param;
+mqd_t mq;
+pthread_t T1,T2,T3,T4,T5;
+
+#define MESSAGE_LENGTH 100
+
+void *t1(void *arg)
+{
+ cprintf("T1: started, sending a message\n");
+ if (mq_send(mq,"Donald Duck",12,1))
+ { cprintf("T1: mq_send returns errno %d\n",errno); return 0; }
+
+ cprintf("T1: ending...\n");
+ return 0;
+}
+
+void *t4(void *arg);
+void *t3(void *arg);
+
+void t2(union sigval value)
+{
+ ssize_t x;
+ char buf[MESSAGE_LENGTH];
+ int prio;
+
+ cprintf("T2: value = %d, receiving a message\n", value.sival_int);
+
+ x = mq_receive(mq,buf,MESSAGE_LENGTH,&prio);
+
+ cprintf("T2: received message: length=%ld, prio=%d, text=°%s°, notify...\n",
+ x,prio,buf);
+
+ if (mq_notify(mq, &ev25))
+ { cprintf("T2: mq_notify returns errno %d\n",errno); exit(1); }
+
+ cprintf("T2: waiting t = 1 sec.\n");
+ while (sys_gettime(NULL)<1000000);
+ cprintf("T2: 1 sec. reached, sending another message and creating T3 and T4, \n");
+
+ if (mq_send(mq,"Mickey Mouse",13,1))
+ { cprintf("T2: mq_send returns errno %d\n",errno); exit(1); }
+
+ pthread_create(&T3, NULL, t3, NULL);
+ pthread_create(&T4, NULL, t4, NULL);
+
+ cprintf("T2: ending...\n");
+}
+
+void *t3(void *arg)
+{
+ ssize_t x;
+ char buf[MESSAGE_LENGTH];
+ int prio;
+
+ cprintf("T3: waiting a message...\n");
+
+ x = mq_receive(mq,buf,MESSAGE_LENGTH,&prio);
+
+ // mickey mouse
+ cprintf("T3: received message: length=%ld, prio=%d, text=°%s°\n",
+ x,prio,buf);
+
+ cprintf("T3: waiting t = 1.5 sec.\n");
+ while (sys_gettime(NULL)<1500000);
+ cprintf("T3: 2 sec. reached, sending 5 messages\n");
+
+ if (mq_send(mq,"Goofy",6,1))
+ { cprintf("T3: mq_send1 returns errno %d\n",errno); exit(1); }
+ cprintf("Û");
+
+ if (mq_send(mq,"Minnie",7,1))
+ { cprintf("T3: mq_send2 returns errno %d\n",errno); exit(1); }
+ cprintf("Û");
+
+ if (mq_send(mq,"Pluto",6,2)) // NB: different priority!!!
+ { cprintf("T3: mq_send3 returns errno %d\n",errno); exit(1); }
+ cprintf("Û");
+
+ if (mq_send(mq,"Rocker Duck",12,2)) // NB: different priority!!!
+ { cprintf("T3: mq_send4 returns errno %d\n",errno); exit(1); }
+ cprintf("Û");
+
+ if (mq_send(mq,"Oncle Scroodge",15,2)) // NB: different priority!!!
+ { cprintf("T3: mq_send5 returns errno %d\n",errno); exit(1); }
+ cprintf("Û");
+
+ cprintf("T3: ending...\n");
+
+ return 0;
+}
+
+void t4exit(void *arg)
+{
+ cprintf("T4: AAAARRRRGGGHHH!!! killed by someone...\n");
+}
+
+void *t4(void *arg)
+{
+ ssize_t x;
+ char buf[MESSAGE_LENGTH];
+ int prio;
+
+ cprintf("T4: waiting t = 2.2 sec.\n");
+
+ while (sys_gettime(NULL)<2200000);
+ x = mq_receive(mq,buf,MESSAGE_LENGTH,&prio);
+ cprintf("T4: received message: length=%ld, prio=%d, text=°%s°\n",x,prio,buf);
+
+ while (sys_gettime(NULL)<2400000);
+ x = mq_receive(mq,buf,MESSAGE_LENGTH,&prio);
+ cprintf("T4: received message: length=%ld, prio=%d, text=°%s°\n",x,prio,buf);
+ while (sys_gettime(NULL)<2600000);
+
+ x = mq_receive(mq,buf,MESSAGE_LENGTH,&prio);
+ cprintf("T4: received message: length=%ld, prio=%d, text=°%s°\n",x,prio,buf);
+ while (sys_gettime(NULL)<2800000);
+
+ x = mq_receive(mq,buf,MESSAGE_LENGTH,&prio);
+ cprintf("T4: received message: length=%ld, prio=%d, text=°%s°\n",x,prio,buf);
+ while (sys_gettime(NULL)<3000000);
+
+ x = mq_receive(mq,buf,MESSAGE_LENGTH,&prio);
+ cprintf("T4: received message: length=%ld, prio=%d, text=°%s°\n",x,prio,buf);
+
+ pthread_cleanup_push(t4exit,NULL);
+ x = mq_receive(mq,buf,MESSAGE_LENGTH,&prio);
+ cprintf("T4: received message: length=%ld, prio=%d, text=°%s°\n",x,prio,buf);
+ pthread_cleanup_pop(0);
+
+ return 0;
+}
+
+void signal_handler(int signo, siginfo_t *info, void *extra)
+{
+ cprintf("Signal %d code=%s value=%d task=%d time=%ldusec\n",
+ info->si_signo,
+ (info->si_code == SI_TIMER) ? "Timer" : "Other",
+ info->si_value.sival_int,
+ info->si_task,
+ sys_gettime(NULL));
+}
+
+int main(int argc, char **argv)
+{
+// int err;
+ struct sigaction sig_act;
+ struct mq_attr attr;
+
+ sig_act.sa_sigaction = (void *) signal_handler;
+ sig_act.sa_flags = SA_SIGINFO;
+ sigemptyset(&sig_act.sa_mask);
+ sigaction(25, &sig_act, NULL);
+
+ // set ev25, evtask
+ ev25.sigev_notify = SIGEV_SIGNAL;
+ ev25.sigev_signo = 25;
+ ev25.sigev_value.sival_int = 555;
+
+ evtask.sigev_notify = SIGEV_THREAD;
+ evtask.sigev_value.sival_int = 777;
+ evtask.sigev_notify_function = t2;
+ evtask.sigev_notify_attributes = &task_attr;
+
+ // set pthread attributes
+ pthread_attr_init(&task_attr);
+ pthread_attr_setdetachstate(&task_attr, PTHREAD_CREATE_DETACHED);
+ pthread_attr_setschedpolicy(&task_attr, SCHED_FIFO);
+ task_param.sched_priority = 10;
+ pthread_attr_setschedparam(&task_attr, &task_param);
+
+ // set mqueue attributes
+ attr.mq_flags = 0;
+ attr.mq_maxmsg = 3;
+ attr.mq_msgsize = MESSAGE_LENGTH;
+
+ // create the message queue
+ if ((mq = mq_open("mq", O_CREAT|O_RDWR, 0, &attr)) == -1)
+ { cprintf("main: mq_open returns errno %d\n",errno); return 0; }
+
+ if (mq_notify(mq, &evtask))
+ { cprintf("main: mq_notify returns errno %d\n",errno); return 0; }
+
+ cprintf("main: created mq, creating T1...\n");
+
+ pthread_create(&T1, NULL, t1, NULL);
+
+ cprintf("main: waiting t= 3.5 sec., then kill T4...\n");
+
+ while (sys_gettime(NULL)<3500000);
+
+ pthread_cancel(T4);
+
+ cprintf("main: ending...\n");
+
+ return 0;
+}
Index: demos/branches/xen/pse51/makefile
===================================================================
--- demos/branches/xen/pse51/makefile (nonexistent)
+++ demos/branches/xen/pse51/makefile (revision 1684)
@@ -0,0 +1,26 @@
+#
+#
+#
+
+ifndef BASE
+BASE=../..
+endif
+include $(BASE)/config/config.mk
+
+PROGS+= ptest1 ptest2 ptest3 ptest4 ptest5 ptest6
+
+include $(BASE)/config/example.mk
+
+ptest1:
+ make -f $(SUBMAKE) APP=ptest1 INIT= OTHEROBJS="pinit.o" SHARKOPT=
+ptest2:
+ make -f $(SUBMAKE) APP=ptest2 INIT= OTHEROBJS="pinit.o" SHARKOPT=
+ptest3:
+ make -f $(SUBMAKE) APP=ptest3 INIT= OTHEROBJS="pinit.o" SHARKOPT=
+ptest4:
+ make -f $(SUBMAKE) APP=ptest4 INIT= OTHEROBJS="pinit.o" SHARKOPT=
+ptest5:
+ make -f $(SUBMAKE) APP=ptest5 INIT= OTHEROBJS="pinit.o" SHARKOPT=
+ptest6:
+ make -f $(SUBMAKE) APP=ptest6 INIT= OTHEROBJS="pinit.o" SHARKOPT=
+
Index: demos/branches/xen/helloworld/initfile.c
===================================================================
--- demos/branches/xen/helloworld/initfile.c (nonexistent)
+++ demos/branches/xen/helloworld/initfile.c (revision 1684)
@@ -0,0 +1,66 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Paolo Gai <pj@gandalf.sssup.it>
+ * (see the web pages for full authors list)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/*
+ * Copyright (C) 2000 Paolo Gai
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+#include "kernel/kern.h"
+#include "rr/rr/rr.h"
+#include "dummy/dummy/dummy.h"
+
+/*+ sysyem tick in us +*/
+#define TICK 300
+
+/*+ RR tick in us +*/
+#define RRTICK 10000
+
+TIME __kernel_register_levels__(void *arg)
+{
+ struct multiboot_info *mb = (struct multiboot_info *)arg;
+
+ RR_register_level(RRTICK, RR_MAIN_YES, mb);
+ dummy_register_level();
+
+ return TICK;
+}
+
+TASK __init__(void *arg)
+{
+ struct multiboot_info *mb = (struct multiboot_info *)arg;
+
+ __call_main__(mb);
+
+ return (void *)0;
+}
+
Index: demos/branches/xen/helloworld/hello.c
===================================================================
--- demos/branches/xen/helloworld/hello.c (nonexistent)
+++ demos/branches/xen/helloworld/hello.c (revision 1684)
@@ -0,0 +1,44 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Paolo Gai <pj@gandalf.sssup.it>
+ * (see the web pages for full authors list)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/*
+ * Copyright (C) 2000 Paolo Gai
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#include "kernel/kern.h"
+
+int main(int argc, char **argv)
+{
+ cprintf("Hello, world!\n");
+
+ return 0;
+}
Index: demos/branches/xen/helloworld/makefile
===================================================================
--- demos/branches/xen/helloworld/makefile (nonexistent)
+++ demos/branches/xen/helloworld/makefile (revision 1684)
@@ -0,0 +1,13 @@
+#
+
+ifndef BASE
+BASE=../..
+endif
+include $(BASE)/config/config.mk
+
+PROGS = hello
+
+include $(BASE)/config/example.mk
+
+hello:
+ make -f $(SUBMAKE) APP=hello INIT= OTHEROBJS="initfile.o" OTHERINCL= SHARKOPT=
Index: demos/branches/xen/dosfs/initfile.c
===================================================================
--- demos/branches/xen/dosfs/initfile.c (nonexistent)
+++ demos/branches/xen/dosfs/initfile.c (revision 1684)
@@ -0,0 +1,91 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Paolo Gai <pj@gandalf.sssup.it>
+ * (see the web pages for full authors list)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/**
+ ------------
+ CVS : $Id: initfile.c,v 1.2 2005-02-25 11:10:46 pj Exp $
+
+ File: $File$
+ Revision: $Revision: 1.2 $
+ Last update: $Date: 2005-02-25 11:10:46 $
+ ------------
+**/
+
+/*
+ * Copyright (C) 2000 Paolo Gai and Gabriele Bolognini
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+#include "kernel/kern.h"
+#include "rr/rr/rr.h"
+#include "dummy/dummy/dummy.h"
+
+/*+ sysyem tick in us +*/
+#define TICK 0
+
+/*+ RR tick in us +*/
+#define RRTICK 10000
+
+void read_myfile(void);
+
+TIME __kernel_register_levels__(void *arg)
+{
+ struct multiboot_info *mb = (struct multiboot_info *)arg;
+
+ RR_register_level(RRTICK, RR_MAIN_YES, mb);
+ dummy_register_level();
+
+ /* If you need to interact with the DOS Filesystem and you use
+ the X eXtender, this is the better place where you can use
+ the DOS_fXXX functions...
+
+ WARNING: You can call these functions only when you are in
+ real mode!!!
+
+ The system is in real mode:
+ - into __kernel_register_levels__()
+ - into sys_atrunlevel functions posted with RUNLEVEL_AFTER_EXIT
+ */
+ read_myfile();
+
+ return TICK;
+}
+
+TASK __init__(void *arg)
+{
+ struct multiboot_info *mb = (struct multiboot_info *)arg;
+
+ __call_main__(mb);
+
+ return (void *)0;
+}
+
Index: demos/branches/xen/dosfs/makefile
===================================================================
--- demos/branches/xen/dosfs/makefile (nonexistent)
+++ demos/branches/xen/dosfs/makefile (revision 1684)
@@ -0,0 +1,16 @@
+#
+#
+#
+
+ifndef BASE
+BASE=../..
+endif
+include $(BASE)/config/config.mk
+
+PROGS= dosfs
+
+include $(BASE)/config/example.mk
+
+dosfs:
+ make -f $(SUBMAKE) APP=dosfs INIT= OTHEROBJS="initfile.o" OTHERINCL= SHARKOPT=
+
Index: demos/branches/xen/dosfs/dosfs.c
===================================================================
--- demos/branches/xen/dosfs/dosfs.c (nonexistent)
+++ demos/branches/xen/dosfs/dosfs.c (revision 1684)
@@ -0,0 +1,174 @@
+/*
+ * Project: S.Ha.R.K.
+ *
+ * Coordinators:
+ * Giorgio Buttazzo <giorgio@sssup.it>
+ * Paolo Gai <pj@gandalf.sssup.it>
+ *
+ * Authors :
+ * Paolo Gai <pj@gandalf.sssup.it>
+ * (see the web pages for full authors list)
+ *
+ * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
+ *
+ * http://www.sssup.it
+ * http://retis.sssup.it
+ * http://shark.sssup.it
+ */
+
+/**
+ ------------
+ CVS : $Id: dosfs.c,v 1.1.1.1 2002-09-02 09:37:41 pj Exp $
+
+ File: $File$
+ Revision: $Revision: 1.1.1.1 $
+ Last update: $Date: 2002-09-02 09:37:41 $
+ ------------
+**/
+
+/*
+ * Copyright (C) 2000 Paolo Gai and Gabriele Bolognini
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+#include "kernel/kern.h"
+#include "string.h"
+#include "ll/i386/x-dos.h"
+
+
+/* This is the buffer used by read_myfile */
+char myfilebuf[1000];
+
+/* This is the number of bytes read by read_myfile */
+int myfilebuf_length;
+
+/* This function write myfile.out (up to 30 chars) */
+void write_myfile(void *arg);
+
+int main(int argc, char **argv)
+{
+ int x;
+
+ cprintf("\nBuffer contents:\n");
+
+ for (x=0; x<myfilebuf_length; x++)
+ cputc(myfilebuf[x]);
+
+ /*
+ WARNING: You can call these functions only when you are in
+ real mode!!!
+
+ The system is in real mode:
+ - into __kernel_register_levels__()
+ - into sys_atrunlevel functions posted with RUNLEVEL_AFTER_EXIT
+ */
+
+ if (myfilebuf_length)
+ sys_atrunlevel(write_myfile, NULL, RUNLEVEL_AFTER_EXIT);
+
+ return 0;
+ /*
+ * Since there is only one user task, the kernel will shut down after this
+ * task finishes...
+ */
+}
+
+/* This function read myfile.txt (up to 1000 chars) */
+void read_myfile(void)
+{
+ /* DOS file descriptor */
+ DOS_FILE *f;
+
+ /* Error code */
+ int err;
+
+ /* open the DOS file for reading (you can specify only "r" or "w") */
+ f = DOS_fopen("myfile.txt","r");
+
+ /* check for open errors */
+ if (!f) {
+ /* error!! */
+ err = DOS_error();
+
+ /* note that if you call DOS_error() here, it return 0!!! */
+ cprintf("Error %d opening myfile.txt...\n", err);
+ myfilebuf_length = 0;
+ return;
+ }
+
+ /* read up to 1000 chars */
+ myfilebuf_length = DOS_fread(&myfilebuf,1,1000,f);
+
+ /* check for errors */
+ err = DOS_error();
+
+ cprintf("Read %d bytes from myfile.txt...\n", myfilebuf_length);
+
+ if (err) {
+ cprintf("Error %d reading myfile.txt...\n", err);
+ myfilebuf_length = 0;
+ /* there is not return because I want to close the file! */
+ }
+
+ /* Close the file */
+ DOS_fclose(f);
+}
+
+/* This function write myfile.out (up to 30 chars) */
+void write_myfile(void *arg)
+{
+ DOS_FILE *f; /* DOS file descriptor */
+ int err; /* Error code */
+ int maxbytes;
+ int writtenbytes; /* number of files written */
+
+ /* open the DOS file for writing (you can specify only "r" or "w") */
+ f = DOS_fopen("myfile.out","w");
+
+ /* check for open errors */
+ if (!f) {
+ /* error!! */
+ err = DOS_error();
+
+ /* note that if you call DOS_error() here, it return 0!!! */
+ cprintf("Error %d opening myfile.out...\n", err);
+ return;
+ }
+
+ /* write up to 30 bytes */
+ if (myfilebuf_length > 30)
+ maxbytes = 30;
+ else
+ maxbytes = myfilebuf_length;
+
+ writtenbytes = DOS_fwrite(myfilebuf,1,maxbytes,f);
+
+ /* check for errors */
+ err = DOS_error();
+
+ cprintf("Written %d bytes into myfile.out...\n", writtenbytes);
+
+ if (err) {
+ cprintf("Error %d writing myfile.txt...\n", err);
+ /* there is not return because I want to close the file! */
+ }
+
+ /* Close the file */
+ DOS_fclose(f);
+}
+
+
Index: demos/branches/xen/dosfs/myfile.txt
===================================================================
--- demos/branches/xen/dosfs/myfile.txt (nonexistent)
+++ demos/branches/xen/dosfs/myfile.txt (revision 1684)
@@ -0,0 +1,3 @@
+0.2.4.6.8.0.2.4.6.8.0.2.4.6.8.0.2.4.6.8.
+This is the myfile.txt file...
+
Index: demos/branches/xen/dosfs/readme.txt
===================================================================
--- demos/branches/xen/dosfs/readme.txt (nonexistent)
+++ demos/branches/xen/dosfs/readme.txt (revision 1684)
@@ -0,0 +1,46 @@
+--------------------------------------
+DOS_fXXX Demo
+
+by
+
+Paolo Gai pj@sssup.it
+and
+Gabriele Bolognini gabrieleb@sssup.it
+2001
+
+--------------------------------------
+
+The DOS_fXXX functions provided into ll/i386/x-dos.h are a few
+shortcuts that can be used to call INT21's DOS calls.
+
+These functions can be used to read and write files before/after
+the kernel goes into i386 protected mode.
+
+THEY CANNOT BE USED IF YOU BOOT WITH GRUB.
+
+--------------------------------------
+
+The demo is composed by:
+
+MAKEFILE The makefile used to compile the application;
+ dosfs is the rule to compile the application
+README.TXT This file
+INITFILE.C The init file (only RR)
+DOSFS.C The DOS_fread and DOS_fwrite demo
+
+--------------------------------------
+
+The demo works as follows:
+- Into __kernel_register_levels__() the demo reads up to 1000 bytes from
+ myfile.txt
+- Then, into the main() function it prints the contents of the buffer at
+ screen
+- Finally, at the end of the system it writes a file called myfile.out
+ with up to 30 of the first bytes of the buffer
+
+The demo should work on any processor speed, and does not use keyboard or
+graphics.
+
+Bug: at the moment (01 Jun 2001) sometimes the demo hangs when using
+the one-shot timer.
+