qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: "Jim C. Brown" <jma5@umd.edu>
To: qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] vde-inject 0.0.1
Date: Thu, 9 Feb 2006 00:39:53 -0500	[thread overview]
Message-ID: <20060209053953.GA13800@jbrown.mylinuxbox.org> (raw)
In-Reply-To: <20060208231325.GA28610@jbrown.mylinuxbox.org>

[-- Attachment #1: Type: text/plain, Size: 918 bytes --]

Ok, I managed to fix my VDE issues and get this to work on eth0. Working sources
for vde-inject and vde_pcap_inject attached.

It will cause duplicate packets to occur, but otherwise appears stable.

You need libpcap installed. (According to my pcap.h, I have pcap 2.4 installed.)

Compile vde_pcap_inject with this command:

gcc -o vde_pcap_inject vde_pcap_inject.c -lpcap

Extract the bz2ball, cd into vde-inject and type 'make'. This will build the
module, which you can load via 'insmod vdeinject.ko'

Then load up the VDE network as so (running as root):

vde_switch -hub -daemon
chmod 666 /tmp/vde.ctl
./vde_pcap_inject eth0 /tmp/vde.ctl

This step will connect the VDE to eth0, creating a vmware like bridge.

You can now just run qemu apps with vdeq/vdeqemu normally, and they'll appear
to be running on your LAN.

-- 
Infinite complexity begets infinite beauty.
Infinite precision begets infinite perfection.

[-- Attachment #2: vde_pcap_inject.c --]
[-- Type: text/plain, Size: 5947 bytes --]

/* Copyright (C) 2005-2006 Jim Brown
 * Copyright (C) 2005 Henrik Nordstrom
 *
 * 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, USA.
 *
 * The VDE connection setup (open_vde) is loosely based on a similar
 * functions in vdeq.c by Renzo Davoli
 */

#include <sys/socket.h>
#include <netpacket/packet.h>
#include <net/ethernet.h>       /* the L2 protocols */
#include <sys/ioctl.h>
#include <fcntl.h>
#include <net/if.h>
#include <net/if_arp.h>
#include <sys/un.h>
#include <errno.h>
#include <signal.h>

#include <linux/if_tun.h>

#include <stdio.h>
#include <string.h>
#include <stdint.h>
#include <stdlib.h>

#include <pcap.h>

#define SWITCH_MAGIC 0xfeedface
#define BUFSIZE 2048
#define ETH_ALEN 6
#define PCAP_READ_TIMEOUT 1

enum request_type {
    REQ_NEW_CONTROL
};

struct request_v3 {
    uint32_t magic;
    uint32_t version;
    enum request_type type;
    struct sockaddr_un sock;
};

static int
open_vde(char *name, int intno, int group)
{
    int pid = getpid();
    struct request_v3 req;
    int fdctl;
    int fddata;
    struct sockaddr_un sock;

    if ((fdctl = socket(AF_UNIX, SOCK_STREAM, 0)) < 0) {
	perror("socket");
	exit(1);
    }
    sock.sun_family = AF_UNIX;
    snprintf(sock.sun_path, sizeof(sock.sun_path), "%s", name);
    if (connect(fdctl, (struct sockaddr *) &sock, sizeof(sock))) {
	perror("connect");
	exit(1);
    }
    memset(&req, 0, sizeof(req));
    req.magic = SWITCH_MAGIC;
    req.version = 3;
    // req.type = REQ_NEW_CONTROL + ((group > 0) ? ((geteuid() << 8) + group) << 8 : 0);
    // req.type = REQ_NEW_CONTROL + (port << 8);
    req.type = REQ_NEW_CONTROL + (10 << 8);
    req.sock.sun_family = AF_UNIX;
    sprintf(&req.sock.sun_path[1], "%5d-%2d", pid, intno);

    if ((fddata = socket(AF_UNIX, SOCK_DGRAM, 0)) < 0) {
	perror("socket");
	exit(1);
    }
    if (bind(fddata, (struct sockaddr *) &req.sock, sizeof(req.sock)) < 0) {
	perror("bind");
	exit(1);
    }
    if (send(fdctl, &req, sizeof(req), 0) < 0) {
	perror("send");
	exit(1);
    }
    if (recv(fdctl, &sock, sizeof(struct sockaddr_un), 0) < 0) {
	perror("recv");
	exit(1);
    }
    if (connect(fddata, (struct sockaddr *) &sock, sizeof(struct sockaddr_un)) < 0) {
	perror("connect");
	exit(1);
    }
    /* note: fdctl is intentionally leaked. Closed on exit by the OS. */
    return fddata;
}

void
set_nonblocking(int fd)
{
    int fl = fcntl(fd, F_GETFL);
    fcntl(fd, F_SETFL, (fl | O_NONBLOCK));
}

void
pcap_relay(u_char *args, const struct pcap_pkthdr *header, const u_char * packet)
{
    int * vde_socket = (int *)args;
    send(*vde_socket, packet, header->len, 0);
}

static void
wrap_dispatch(fd_set * rfd, pcap_t * handle, int vde_socket)
{
    int n;

    if (FD_ISSET(pcap_get_selectable_fd(handle), rfd)) {
	n = pcap_dispatch(handle, -1, pcap_relay, (u_char *)&vde_socket);
    }
}

int pcap_sendpacket(pcap_t * handle, const u_char * packet, int len, const char * dev)
{
   struct sockaddr_ll sa1;
   struct ifreq ifr;

   strncpy (ifr.ifr_name, dev, sizeof(ifr.ifr_name) - 1);
   ifr.ifr_name[sizeof(ifr.ifr_name)-1] = '\0';
   if (ioctl(pcap_fileno(handle), SIOCGIFINDEX, &ifr) == -1)
      return -1;

   memset(&sa1, 0, sizeof (sa1));
   sa1.sll_family = AF_PACKET;
   sa1.sll_ifindex = ifr.ifr_ifindex;
   sa1.sll_protocol = htons(ETH_P_ALL);

   if (sendto(pcap_fileno(handle), packet, len, 0, (struct sockaddr *)&sa1, sizeof(sa1)) == len)
   {
	return 0;
   }
   else
   {
	return -1;
   }
}

int vde_inject_fd = -1;

static void
relay(fd_set * rfd, int vde_socket, pcap_t * handle, const char * dev)
{
    int n;
    char packet[65536];
    union {
	struct sockaddr_ll ll;
	struct sockaddr_un un;
    } sa;
    socklen_t sa_len = sizeof(sa);

    if (FD_ISSET(vde_socket, rfd)) {
	n = recvfrom(vde_socket, packet, sizeof(packet), 0, (struct sockaddr *)&sa, &sa_len);
	if (n > 0)
	{
	    pcap_sendpacket(handle, packet, n, dev);
	    vde_inject_fd = open("/proc/vdeinject", O_WRONLY);
	    if (vde_inject_fd != -1)
	    {
	    	write(vde_inject_fd, packet, n);
	    	close(vde_inject_fd);
	    }
	}
	else if (n == 0)
	    exit(1);
	else if (errno != EINTR) {
	    perror("recv:");
	    exit(1);
	}
    }
}

pcap_t * a;
void handle_cl(int signal)
{       
        printf("Caught signal %d, cleaning up ...\n", signal);
        pcap_close(a);
        exit(0);
}

int
main(int argc, char **argv)
{
    int vde_socket;
    pcap_t * handle;
    char errbuf[PCAP_ERRBUF_SIZE];
    const u_char * packet;
    fd_set rfd;
    int fds;

    if (argc != 3) {
	printf("Usage: %s interface vde_socket\n", argv[0]);
	exit(1);
    }
    handle = pcap_open_live(argv[1], BUFSIZ, 1, PCAP_READ_TIMEOUT, errbuf);
    if (handle == NULL)
    {
    	printf("%s\n", errbuf);
	exit(1);
    }
    vde_socket = open_vde(argv[2], 0, 0);
    set_nonblocking(vde_socket);

    a = handle;
    signal(SIGINT, handle_cl);

    fds = pcap_get_selectable_fd(handle);
    if (vde_socket > fds)
	fds = vde_socket;
    fds += 1;
    FD_ZERO(&rfd);
    int i;
    for (;;) {
	int n;
	FD_SET(pcap_get_selectable_fd(handle), &rfd);
	FD_SET(vde_socket, &rfd);

	n = select(fds, &rfd, NULL, NULL, NULL);
	if (n > 0) {
	    wrap_dispatch(&rfd, handle, vde_socket);
	    relay(&rfd, vde_socket, handle, argv[1]);
	} else if (n < 0 && errno != EINTR) {
	    perror("select:");
	}
    }
}

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #3: vde-inject.tbz --]
[-- Type: text/plain; charset=unknown-8bit, Size: 13427 bytes --]

BZh91AY&SY_äéí\0`ºÿÿÿÿÿÿÿÿÿÿÿÿÿïÿÿÿÿÿþLWüL_LMôUá\ýyïà@\0ú/d²¬V®³¾]›Öbç&e\x1dW\x03\0\r\x14\0\0\0®çj\x1cÚµ”\0 éTb(\x11B9\r\0\r\x03S°
\0\x15UAQ(£E@(\0\x19QB\x02(SL¨RRD\x04RR)P\x12P
BH%#\x11 \x03\x10i
"€u \x1d±À1ð”&Bf‚i©´™\x18CQ™\r4È&Òb'‰´G© jm5=M¤ÑšM24ô4ÓI“LLM\x01é¨4ѧ¢10&	é\x18ÔÓCh\x06§ M\x02\x10$Ó$ÚQú§¨zžSCõFPh\04\0\0\0\x01 \r\x01 \0\0\0\0\0\0\0\0\0\0€\x03@4h\x06†š4d\x01“A \x1a\x1a4È\x19\0\0\x19\x064\0d\0\x1ah2\x1ad12\r4h\x01£@\x19\0\0I¤‘\x10&B`ƒJlOÒ˜Œ€õ\x06\x06Ôd\r\04õ\r\x01£@Ñ h\x06€È\0\x03@\0\0\0\0\0\x03!\x15OSÔ~¨\x1a\0\x06@\0\x03CA \0\0\0\0\x1a\x03@\f#!„\0\0\0\0\0\0\0\0\0\0\x12"\b\x04\x02\x1a\x13\x12a\x011\x11”Ÿ©èSòd›\x157¤µ5=GꞣFOIé¨4Ð0£@\0\0\0\x01¦€\x03@\0\x03A§?HX\x18Ô\x1c°.\x1fÀ6æÔÂ5E`”,—Ƥ l\x12½¢çg\0ùò†
ÅM"…ýøú«®lH¼ÊI,®G¤õž1ì|\x1c©‚™) \x02Š(§+Èâ^[¿;¸íÌ"t­ÐÍÏà÷Þ\x0f‘yü¹ž¯:á¼äסtDXf`‚±ô\x10€ê®˜)Žb¬s\x1dn$Ý\x06nNÃb챘¼Ÿ%:ê†ý\x04ñ	÷*\x04{ÓÃð<PlÁÌAŽ@R?îàŸ¡UI¼;Ïç¢]Ì¿bÖ§ä\x03ˆÔ\x19ЬH‰Q	Š?\x05!í¼c¦t@\x1aCÊïuÚíG—Áû}¯^[3;³§c…©èx\x1c\x13QÒɁŽnN…ò5{®\v»;õçŸìû|ß…ÝÝñ\x12¨\x17™üÁ^Ózÿ'LÍ\ax‡¤,ù‚״Š:\b'£ÏÛK{­Ûm‰Ì5I‘@@áòúìiB)¬\ÜOµûÅa\0ØÚügº\ûƒù\x06jƒ\x0f/_á‡\x18`€o±û3Ԕ׆yß\x19¢iÆNð.Rûý©:FK¯£=\vΣ¢ œÅ\x19DXyIÑ™=BôõŒ¡ÂK?Ú\x02bŸ\x1c~!G*
\bÊ‚/ Í<¡Ãò\x14\x1eé\x02aϺA\x11\x10dòʝÒÔ ˆÔ ‰[(R¢6ˆ5l\x01ie\x066Z«K-–Â\bˆ€dqY\x10@}s\x02\x19?q‘\0ÄîØAedeàê\x19ÔF?L\x05†i¤KlHø>ˆ>£Bü¿–\bŽ?ÖÑI\x7fáÈ#ó?\x1c)M#y†\x10qãP\x7fÊ…[@i¤\x06¹B\\x7fB\x177øý°ZQ;m\x048ýå—q\x12Ы6L\vV¤µi£ÇãÕ¬èSY•73Â\bã\r²€R0gÞd\x01Î\x02\0ðj\x1fm#~ûþm\x16YgÉÐ\x0e>\x13\b˜5ªTy¨’M6¶\x10ÃĘD´*!\x18Ï;ñúš—Ž"!칩àxÆ\fìP'c¤¡2d–\0\x1a\x18I\x181„%)d;xøXdti”\f-„-FXBXŒ•‚ \a`ož4`\x18ÁAë[wG€Š ;\x02	8 þ‡'(n“n¾\x01"áÌ…tA\x10ˆE'.Y\x1fEù'О¿ç‡mõÛ>°Í{3	Ë\x1ep§RFñˆO†øã\x11\x04\rÔ¶»ë|\fœñš¼\x04\x16\x10™äë Î^ÍòÒ³\x13Ò°¨$g\x0e\x14™–«\x01E0^[\vLn)Óös7š\x1f¿9ޱÒù!b»m\x01ýøÑTVGrÔ\x1eÁë\a­–\x0fØ,ïhŠ\x02\x04\ap´`h(Å5•Þ_	E†F¤ye\x01Ò¹H‹\x03\x064Ï醶àe7sò&Ü"‚‡jÀ÷A'øˆ\a„4î]4éBIï‰ó"b\x12)6\vÛÂB{\x0f?㆞fŽó÷ý\x7fmJMN¿gãËʾäå^[³dZ\x11+ØQÖ"ˆ\x1eY¥ø42ix±Œc\x18ê¿?¤\x11G\x1cx\r´4°9Þ 0„!
˜2\x15\x06O\x0e0–fGg\x05Ðh\b0²\0~\x107"\f"\x13"ò‘@DË\x0fÌ|d\x10á\x1e7«\x04>\x174<¿CËÖ;»½nƒW™ 4\x1d÷™<\vÜ÷xA询҄\r\x16Î"\aþ\x15\x04.ï\x11‘U<‘A\x16=ƒD/ÕûÇ×\x04¤Av˜Û\x03\x06’;\x03øgGûXW\x0en‘6KÀZ§‘\x19!‘ß±"N
•\v"!î\x14&èp=/záˆ~\aÞÉHô\x18B\x1a\x05¿ø^è• Ä\x1dÍ 4\x18MСß<Ã!ÿÌ<~ÿ6³@\aŠ{gÇ\x11\x14\x19÷Þ‡© 袠ªˆ|§6	ìyæ!é%㪮G„·³Ì\x12²\x04‡†½[{E/\x13–*\x1c¤GTcת›H'·	—p¬Jʱõ\x18ó•\x10úüHEÿ¶\x1fÙŸÇ-ÉŠš¸®0\x11û']öleíþk/ÌÍ!!Nö@à΃+vÙi˜@éë~‡R-âé_c¸RM¾‰Ö\x0f®§ŸÐSþWÒû<èÛyp¶\7›®R—ì
\a/NÐÙ/F›\x10ýJ–Ü\x11\x11\x03\x1eå\x11ñÕÄÀ"¢*h­¶
†\x1d¢{\x13Å\a}&½öŠQûoV5z‰³zºg)KL»]’£XX\x12õ§°Z§ÃŹg\x16—?;Æí\x11Õ\x11<pæÖ>R1\x1c©Z®,»‡„Ÿaœa,æÜ4šXE–²Ë\f³óù¯\x17Œ\x1f?ŒI-LçÐ\\x02À¿\x06\x06\v9\x16>‡-€õÜ&g^[ú*Ý™}\x11TØ"?$•ážx;ÕÝ9…`šž@y²^[v(YCM­6c‡îÅd5\x1e’\a8ƒ
¼CSîÊ\x7f¨ž|OaÖ±K%E@õrg`gb{]`\v\x03õN'A0ôÌ'\x13r‰MaO“\x12zsi®gÍ4ƒ\0i\x7fs$Ú‡Ü\x1a™¿ó`wæe®\a\x1f¯œ’&\x18œƒô‹ð\0\x12\x0f‘	 I#îÌH\x12ûãMˆÈ@ò¼ã+åhó\x03Ñ›ž„Ô=@„ødÞ\x1eŠÑH)\x0efQŠžÌkªSÚ¡$ú^«ô‡?¾ëZ\x05ÊfE\a×`曨÷p¾K\f\x1a\0ÕT¼¥˜]¢ˆlY6K\fÅ,òE‰}ÆuÙÐ×û¨$	MÀ¦q\®o\x0eˆšyII	\v3\x12”ˆ)½³ûŠy/w¼|\f\x18Úõw\x12|É\x1ePÙÀ>$‡<
\a>Í«É][“°j\x17'3Ê1x5dXD\x179Oüù_îï{{©\x1c[…2B|ôÏú[Øo·ÆõÔn紐³.L¤¾Ö«Ü¡/Ò]>e\x0fi3Ä18Ðú8ù¾?4?œùsúýmÕé…½‰µ\x11ümÖ¤sÏ—»EÖ.ŽHUí‚§=¥\x1cè¾72æöåê)’òáǏ-ò÷\x1e«>8¬=P\x10Û²|>y÷\x1c2_`ˁ»wCÝÈ\x1a^[\x1a;\x1a\x12\x02\x0eDtÏ\x1e\aíÓèz4zwŸ’¥Â†Ãþ$ã——!9á\x01ÝT\x18òÓ\x04ºäXähЃýï•"þÜ£m°Ÿ\x1fYogF{0Ð\x03ÏK‰CÓYnèP rdeïOcr–ø¡¬xˆ\x1e"\x10Ëº\f7g\¤³Î\x1d¹ú~§‘šÏ\x1ff´`úâ}–ÛlN0H‚°Q#\x11H¢D\x14A\x02#ç©VH,F(,Uˆ"0DH£\x12(Æ,H‰Û\x10¡\x05F\x04c\x14ˆ ‘\x16\x03\x04\bŒˆFADdF
1F9e\x11\x14@`Š+\x18\x02\fY\x04\x18Ec ‘\x10dRmâmÚàúCÉðf* ™Ëy¾Éä參`Ó.=±•öÔø\f‘R"ÕÆ™}ÆŸs\x1có\x17Ã?Œé[M”¬‹\x05\x15@½<k>Ÿ#ê­:å)ͧ{î!UkéSÓ\fÇ©\x154È\f‹Mjîiߍ²ú=ûaq	 Ñ\x12¯ztìäÕ«\x06•\M­XÙ+g\x0e\x15‚#a`Äâ\x11šŠh¿uÐYÑãBµTIG¯.1,\x19ÛcœU6mŠ\x1cõ…ÑÚ˜4ƒDw³Õ–Ó6ÕÍôoÀò
\x1fk×tH×4Mð:,\x15)”\x14BŸwá£\x01\x0eD\x05@yvêŠí\x02æóU#\f»UÚUoßGÅ\x02\x12\r	\x18ìè¥\x1aížÇ|XŠÐ”Y¥×½s\m×|†Ã­Ùzj‰i5‚täUh„YFŸ`©Û›-\x0f9åÎð;µ6\x108ŽSÑ\rín\x0eف«!Öüîöçv›êÇtF­Q”XML\x11¥\x12Œ»p”›Î)¹x$]\x05\x16Ï›¤e\x0f{7¿;Ó‰\x1cÚëNaˆÓnëVšr¼lb†è–uŠŸšo*(ˆ9¬ã=Ñ®>tŠhû^ýÐ\x0f\rŽ|D?OIkÈÞ\x04?Ž q\x0e\x14sÒ¨/wwR„¯z\x02ÚÃÊQ¿4ŽðõaeŬBã¹R\x02\x1e¢µ»\f¬%ŽÃkÔm5\vxJÅ\x12ý};®#•¤`œæÕ&
\aƒ\x01еmaß\x14\0\x04¤$&!$e;ë\x15×\x0f^[RÑÒdÛÔý™…\a« ÍFIJ7VB‰˜UÓ ªH
\x0fj¨\x15\b
\x16ER\Ъ\x10]6”\x0eýýuLF:W@¥2ÎÊŠÉS¹Öö‹Áݳ«ç\x06Ì…Ô\r³­ü®ˆÖ-Î\x14·
%G}S~cMŠ¥Œ\r\x194Â6Á\b\x04Ò²Þ^Á¹[\x18®²5†¤fPZÁ5ÝÂ,!\x12¸e°¥Ýr{ñ¡DÚ»Íë.\x18¯k\fîˆç’rcÁÞî\x11I\x14ël\a:<oK‘dl\v²£\x1a*”BîÎh®CåQIF¢«§7ª`0jB1T *Ž2ì^˹V²ú«+”®ÐÛÄh‹^[ÒŒ\x18ó4f\x14\x15–:nd\x18da1>„¥Òr\b‡«s4vev‚°EU–
‹£)\x1aò…É:ÖA4ÍÝ›³6q\x1d­u¨Q´ i噚të«ê¦ášù\x01\x06MTg\x04°úEbŒ<8qq€ƒ\x11Ú®jp©UXcuåØùy®ûÁ^`©\x17ŽhÜ'Jºâ÷*K÷KÔÄ70Hhñ(fDdAÓ¥TpF(\fMa¤Žm‘:x ‚hC:„
ñ¥:®*÷»cÁÃD„Õ…œ-¹©Øah\x10Ò‘d \x1d)ÉÊÍp\x02åYsÂò¨Y¶ÛV÷Ú\x12˜GÔlû%fèM(	°7UTë)¶"\viPÞÝ¥\x14‰žú¢¶ÔÃ_­«Íùp&\x11!EÍ\rRê&ì¤X£ 1ºµ÷³\x1aÕ\x02›cr2\x18¶kyØ\x1dªÕË ΂`4á\x1dó^[:»DÚ·¬5¤C‰»V\x10æºkÞ0Ènšƒ‹£fq’(êîvÀ;\\fÑûwźŠÕMö¾†,è\x12²£î¢
JË\r_+JÄc7â\x1f	­m«Ý©kJ\x10»ª]ÑAͰ%ÄfÕy‚] œ˜~,Ó{qZIz4*èË07\v.\x18\x13áÚ·-)§m•®8ET}¹.×~{•;«\x05Ë.3‘X{B\x17Mƒ \x10Œl	qQÊwê:L\x02yŽÏ\x0e…Z›Ó06˜Ï\x03\b.\aféy«W”"akÑÐ)\x06"Zp\x10“ÑêÉ©´;ƒ°H¼{\x12Uù¹Û\x04ï¸Ƹ³€ÖŽeË88l^ä^[Ö¼xã…'GÆ,ˆ2GMáv@•\x19Ø¿\b\x1c‹«\x13Z̦Üë7±§m®´©4ŒÌY–x¹RÙ„ˆf^[<ý¿¦,,j见]j—to]¯®ÂK`¾c=\x0f7)Ö׎ú£¹åÑ\x05“ÀÔ\x16"
zœ“Ö°ø€ÈÀó\0è?L¤¢\x01Ç“ÍæÎU~k’BBrŸ!‘\0¿Pg°d
§­žŒÿÈ„®eý9ÿ˜^½>cÕèÛ-2ÿ\x05q%s²'.¤>\x01bmw\rK£Ó¥êb£hÔD~¸ÇDR\vN\x1c¦€Î­|/b¡\x13žÖîÂ\x0fºË˜$$.ϸ\x1f1ùùkP¸Ì8åþ³t\vš–¶\x16\f\x18C5\x10D\x12î\x15úXÎÕ»cXÀl
(LIJúúÒŽ³è‰Lõ/×\x19a·m$e\7,F\x10¡~3\x14Òå\x05,YÖÛƒ>\x19\bg3ÀBb¸¡‘Y†ë„$2îÔ/ïn>’¾­i~[8žíHgn1ñfη£ê·™\x1akrŽØö÷zhS,UcOT§óJkjçÙi<\x1em}\x05òy­çz^\x15%¢|6çâÌŒšÏ¼S,¶_\x06_c8"/_\x14m‘x—¤¯©\x01\x03¶ˆË8\x12=M¼.•í7ÄgÝæ	\x12x\'ƒ{:[\vÙND‘GÏ<«W_ÈWïžg?”¾žaÌõBÑ80L™Jª¹\x1aÅMš fŠ!\¸a\x10't0\x1cy\b\f\b;|\x03¼HÔ\x18]\b.o\x03û(JFÓ\x06A8Åè@ئ!AȨÃ_„•¤Ê\,\bŠÙpJªYXÂõ’¦•;aÑB"YÜ‘çiDš2|1»ò†;21¯\x1aE\a·ÙUU H£b_äåÝéò›O—4ºúVoì\%*\x05R˜\x14Ä\a)Œ\0ʆÁ»Eä³ÕŒm¿\x15)zú›þc¯_Î0>OÕ×ë\x1a¯ÐßP¥I&m¼ ¿qRÅ ÚUÜêxŸPŠ&j\x06"iG\x1caÜŠ…\x01«(¬9$G)\x10QJ¥\x04††ã#æ.o33211<Š\x12ZóiÞ\±™õJš\x18\x05\x03S™Èex\x18\x152,n:\x1d†FǨÀÇS!šùoÝ‘…¬kZfS\x1eدaSB\x0eÓ§gw•Ët#°:\x14êÊnkÐ|
\x1cŠ^[Ž]I'q̱R0,r&¦\a*™\x15¦<ý(S\x03´í7T‚c[\x1dú\x16ªƒ\x0eéìàXí*p\x19àhAs#©Øy–48\x18\x1cÄ˝匸/¡Pêw\x1cÍk>\x04
Á̶YãÓ 3â7“­Ì\x15³‰Ýðfs*2¦:˜\x18ð>\x02O*pægö‡aä\f©žF˜A§i±[êÍor\x0e$\x19×\fgF_Ï\éðU\x1d©€{\x17²·Pllcm¶Æ8Hô\x06–&\v˜\x19[ó\x04E¾çâŒÁœKˆ÷›‚˜åé\x1cÁrÉ*\x16åFÆ\v‡YL{8ó<Ê\b\0Ã!0AŸ¥\x16E\x0eòNö|ô0\x13\x19î"\faàZ‰\x19$$-$­Šž¢„™ŒÂµªG”ÚK\x17‹U\eJE‚H
8(\x11F|abÅK\x15=$‰¼©\x1a]~¸Ï\a÷˜0õ\x11\x01\x15\f†c b\x1eàj¼\b‡¥¡3v\x04Í"…,\x02’
BÙÈÁŒc\v^[ƒZb3\x04… š0ßy"	MŠD\x106íhÁ0Dðo褨ÆlÄi†\x04ˆ®0ˆ\x1c5\a´j\x063¿"ˆÈ\x05\x05nd^	1’I2 cp¤ÈŠnd\x05\x10Ï\x01KÑe9Í‹”µ‚RœD¦\x1d¼8àSE\x1dd’H\x183\x12d(1”>\x12 \M.Iqä<\x150à0¦^[\x14(ι©DØÑO$¦‰‚nÉ\x18Ê”ëÀ¡QêT•%Í\v\x12_˜XÌ\x05Š\ÚA+,\x19!º”BR`‘öþñ_wwÌÄ/ ì!
\x01„\x12ÀóšÈxU$\x17i ìI\aó?Zˆ\fR1?¯Y®Ìë\x0f@êòrs+€P	iTnÕ\b%¢Æl\x04\x04€"O\x12H¢DáH„°D6ÄÓl4Q\x15fY\x03wœ\x18ÁU"Á—¥4ãÕD) ™‚\x02L=“l׃Ë\x15\0¨PÝC0YQ²\r‘!Ñ|1]u\x0få	qÔáúã?Œ1\x18-»‰>ùàfŽÿÚGce\x0eþgÎysê\x1dà0ÆU\x19å¾ èuÕ©Hg/
ª×""¹œÈ4°Ã`€€¨\aå…p\x060]ínÛhV˜­\r\x14±¦KZœE4\x13/X(eeÝ©l³zh³o\x16âa¥*öm¢5\x10ºtí¿S\x0e띇w³©¦[±Á#v£½žÂÌÏêýÉ1;\x0f®`…¼hYåɃî+üŽ`C\x03y€	°\vÀ6™¼Ó­\x11<J‘(æ«;Å—ø»müBÚ#/©³\fw\x10|¾è\x0f´33 „
ŒFþt8úãY¬ïæ!bnHäIUÁÀ<}SŽß0Ã\x1c\x16!\aîËs\x03‘¼Ü…¿v>y\x14g …]\x11-Ñ\x18uõkð†¦žFÐ\x1cŒŒ‰(z$

!~á¨,i\f\vè‹=l\x02œæI‚_\ahMƒ^j•MÁ´¼ÚjMÏJ6ü#F—é—¨+%17j—T\x17~6ÕL50JìHcãpÔ£éI%\r\x11R¼lGêb\x13=wÒ’ÊþùÀ9\x01|y‡zÞpçÀhÑ\x14f„\x7fxOá>êˆ\x1aC^[m…\x7fWês=EW\x02‡Ü9ž¸\x1dÍ‚€ÑÕ‰˜(ª"…uRépí\x02\x19iª\x19“µä‰Õ\x18äKføÇ¶ª;h/@oâ>{J\vÔËÜ<°áŒ¼\0:Ù \aV”Ði\x13Š@F\x03ên\x10•\x04¯\aØ6'¾5B‘Eš,\x035R´ÉØ
ƒ–\x1886•\b
oPqÅD,ˆa¸Ç\x01^[P¬.^!—Z\aü•Ôæk6³R\x1f¤ÅßR¦šFÅ—©GŽØ\v4Ó\x1e‘Ù+Ì\f\x06&0gòO\x03ûc,/ÞA¦¨ü†èz•}þ³±x\x1ezcâ+¤tÉ\x12kÜzÊ\fþù®é\x19Ï}«â¨\x01W³¹\x1cÚ\x15yBcÌ(5.\x01×/\x06¼SìŠQ8^àÔžÑÐóToì¥äŽ—å‘óSÒ—\x1a= bvï<ÅÓ"\x1az®<ÊRrfg`ŠtK+óÞÉ‚¹–×YÙ\x14C=Ù+¸ò<\x05«D–íE1‘°Ç-f­*;¸hQ`Oà\x19ø¿m—’xìJlÜ\x1fY}“âÞƒ\f.¶``\x18Ÿo¯AµX\0÷4\x0e\x14w3™&\x18AŒ.Ûc‡\x02‡©žÆ\x182•\x1ag\x1d)Ý'\x1el$1\x02‹1&\x02Ší…\x1c^ŽÍjÆ\x13=\x15ã

—¦\x0f×^\x13 oå‰Bý
š²¥NeNHÏÿS>c\x06Òö„@7Ü\x0fÔ?Sìf‡s/\x1cßA¥\Ohͬژ\x14\x1d…G休\aŠ}¶KÙ(•z˜hà¼\x18C\aqaC	\x0f\x15l¨ª˜†Ð\x1a´¿~qŸ£@?D›\x12¼99í7U\x19ß]Œ\f\x0e+ î\x0e¥L=÷Àݔ|\x1eÂ4¡¥†c Â\2*aL•\x17‰JÕ\vbqe• ^[0\x18ÛFi*
\x05ŠQeÙ‘èÂ\x13ó|O\x0f4,\x121A‚õ_xx&;4sŒÆ›o±’åá\x15ñ6\rH™,\x18|\x01\x0f_'UÀ_Œé"àŽÈ]‹c™‰§aô]\x12ÆÞ]$'Ç4S§Ô,oh»\x01z2\x06’l%â]àÚˆ¬ÈS!¹\x06¢ð•G\x11.qÒÝÙQð¶}çhúͽ¥·1,\x127\x16\x15)³JDÇ¿¾g°ã3ÚV.3\x15DQ\b"ÁÖ¡`„­„+°L±,<¨\x01¤!¡\x17xRÇœ,\x1c°âÀc;˜{ކÉcâfA“Ü>7Ø¡Vâ¯^„DøjHÀ2†¡²’a¢n\vÓ>Ê\x16ˆ/½«è¨Xf1\x0485ãq`ÆÓ^[|:)%\x1fI¸À\x06Òuÿ»MÃ3S؇¼¿¬\fEÀ0Ó¶ùfP-ls\x18íHüG¼óÜ\x179ó3éN\x1e'¾¿–l@¸\fíÆ\x05Ô÷\x10©\x02ÀÑl¼NLø êKײI5ˆa²ÔÕÀ᪀´˜PڝÁ\\x1d\x04D\0×ÍÖà)Ñ\x1eA„S/H\x1d0êŸÇ!+ìÚlà—\x03·Àf×"W¯äßOøK,Îãï,J-ÅíÄ^[”)ˆ¢\x0e**¿:yP¦pz\0ᢐíPí«$\b8J»Î˜`4Š\ag\x11ÔÞ¹ƒHˆª+¡PG—>!1Á=g<4põø\x06Ū´knNX\x1f;\x0e^ˆv!Éš\x03õ¶¾@ðA¸°ÆÆÛyêRò\x14\x17>\x02ü‘C^‡\x0e†ó%%ºßÅ\x18º¡U@6$xi	C
0LûuÔlhþ”\bð;Î;Íç\x0e®áø7Â\x0f\x1dëƒ*~ö\x14ŸŽ\x0fÐYîÞÖ£#@÷=H9\a¨\f  \x1fs(3\aQÆrÑŠõ\r"K=ž!k	ÙXïãI7ø\x101•\x1e8 |5'€(L‘BƐ-ƒ´i\b>ëVÙ¤q#¤8õµ#\a(ÃÖzþÈÖ§Ú8\x1d­&ÍL·0œ¯SóOYï±Rc¸·\`g\x0eZß\x0eøG¾¨@mp^\x02`‰ôÖïä^[d3Üӝ\x12´Gš—;§Š\vÚ«\x11Dƒs_žÒ!¡/m\v™q%¹RÅíxúÅ¡®Ap☽\x10Ìš	
\x1dZX&\x06ސ
\r–+\b3/23¼.‹°3BØØÕBx‹«-‘šBBºôÔ,ÐHÈM6††ÆØŽ\x04†eÈĨ\x18g&ŒcHmvîRDv9ÌÑ%“Xú\0v’j^[Á\0jjqƒL\x03\x02\x13`ši!÷lŒ6\x11¡³Œx²œ)¢\vZ„MÀ¢¼ç¸ŸÀf\x12pT—}$n4æRoG0)\x19
Ö܍½\x03™SŠïEw”¯ÀŒÕÂç\ak9$žñð1\x1a–…Ü·6y£öŸ»A\v\x06ŒÉ\bêƒ\x13âøëËùÛ¥Íñ^[É\x05ÕfAÈ`6½\x1aäž ´\x1d÷IHœE©‚=lSŽ
ìM ¡P\x061j§^[âF¥\x11€J
²ÿÕˆ\x14‘_Ü)2ÄêhuÜ\x1eÍ0'RÈ2öÓ¤	\x194À8@Ø\v ç\aÆ\x14‚\x06<É8^[\x14H¨À²©‘•\f\x05ì
©\b$\fQ94Y*\vÛnP•&Ç`ò°»\x1e¯ÑÂAn\x0fcR¥g°Jb(U!!AZ …ì\x05㘺Hü\x1cCÝm§EÁ2a-”ïh«’š
2`j\x0e\x0eµº
«\0\a\v¦§CÅÖÎíÖ.¶*™É\rëKQAj– y'0srÂŒ;Ì6K‰É(°Ö¢­\x1f\x15†ºµ\r\x14Ý2Þ¸¢È^[M1°ˆ$¶	‰®ï“mP€Øoªþ\x02¡î0\x16öƒtxH]c\x19‚1½9ÊP\fiK\x02\x0f& %¡wœ\bRé\x12H…ÓÔ(_#E\3/=T®\x14vbo´1\x16i\x190ýs\x03ïš\x18jÇ2´ÿ(¹~ð:\x10ﬥ§‹q”\x18`™×(\x042$4jÈ\rš„ØüóZ’ŠÏ\x02\x1c†óÇmh•7’a\vá©8ö¼G™šˆ7T
—ÈêÖ„4„ °D•»¤¸YÂBB;êÍ5\x14»ØC\x1dé¼p]«jÆ:j±Š¤\x11•º¥ž\r\a“ë¶ÅU᪠f¼ý¡rÞâ÷'æ D˜£°‚çìvãE¢f\x06\fÈ\x0663·B‡5ÙK\x03>\x1aˆîìHHX˜Œ:{\x15$ä¢\x18ÛAg£„\x06h„€\bÇ8\x02È€Ä\x1dO|ø÷žðöa\x19\x19¤’eòn°{\bàzN>ñ²É_Œ!?4‰ÄT¹‰)G±ñkûR¦–§¾!ö_2#ž‚:j»\x19Ä\x11Ž$\x05ª>‘q3<#\x05\v1ï
‹Dª•-l\x0e¤&8ËÉÂC—£AÆk›çƒ:x™\bц\x01j†e\x05+\x16ªàa\x06Q°\x02ûgÇäw-\x1c¹`6xîß·¯àì¾ë•º’“|/ie0€¦\x11\x15‚}× ®\fÆ/SÐÏ~e\x04Nx¥\x06CB\x05\0Yl3«ÔDå‘/—`îªV©ê\x01\x02_eÙõ\x01¼´£8½ÆŽw—¥\x04ajÒ쀖u\a½ª\fd¼\x10УaMf\0¸¦\x05V/¢öT\fôg)tLFÎ\x18E‘j\x10‚\x10ln\ÌUi\x1aœëdªÄ¶Ï;\vd¬„˜U\x03'kh9£n—ÉQz‘Œº‘ÂZᦐÁ›I\x16Q¬2%rEÈEu-dQN\b\aÉ…±¾X-#\x12¼"\x02D‘L"\x1c4ÁQDCm·¾a\x199t¦*LF\x032{¶’ô¸±eE!\x11wek)|DG\x04ël=\x1dtõ®2ØÀ­ÆÍ‚a\x11Ч	g5\x05ƉÑl\x18c­,ËÓæÞÃ.è%9\x11.\x1d\x10A$;\x14\x18X\x1d@iŠ
\0Ã\x02áÜɱ\x16ªËRÐE
Á\#‹ÌÕW1˜\v#a˜”$“"NF¤X`K\v½ \x04\x12,;‡p°±¸­ê'³úP\x17\x15\x06•\x107ä’HF¢\x13HI\x15\x19#¥\r‹\x147àaðÔ­ëLÙª ˜7˜ÆÛCOaq\x14\x18çލ¨d%g›Ñf\x1f;\x19$\r#Ðø`Ð\x13ýMâ„\x1dÜ´³((ØúAeœn\x18€OóÇšl\bM\x14®\a2h^[%\x02‹ªBo^[S“ÙН+±…ðT“\x05\rU>uÈL\x17ªÕ0eq\ò‡…æÖŒrŠV`œ[Š\x19SEq˜,K%Ì*Š’–ö\x05^ø„‰yP„\x01ƒb;¼³XPÏM˜HÐÀí(^”Õ‘s	\x1c\x10iB\x06’J¦\x1eÆ7É\x01®u\b\x10„\x13ç\x0e–œ\x06\x01#ŠÀîK¶kK0‘\0I\x04:\x037ÀÁŒ"’l3n} ál\x01¥÷M2Á\x05ˆÏÜ9Ö\x1d\x14V!KmP=5cª8\x19âoþM\x12¯Þ\x05Á\b;7\x1cD’â¶½_'ÝX
\x14"W\x1dñ½’2	$•]Ù›\x01°o@g¦\x1aC\x18ã\x1dƹFâ¹ÜÄb|ƒy¼Í\ae X¥¦\x16D-8\x05º¾€Ï,ŒiF<\E¦v\x16L«†\x1c\x1eTBÂ$j&T[\x17KÐß\x05¯Bß•Ì
\x1c°È¦6-\bn\x05P\x16IJ5BÖQ%üLj+…?2\x02æ.	Ú1WÉ (\TºLª\x06…àÖäsÂO›ý~ÞÍ\x11\0W|íÆvýÓ@·½CyUrˆ§<9g\x16­p†Î±\x13î\b1´#\x1eQz®Èf7óµ,í\`yžá•\x18Yc°l‘â(L\x15\fE\x036àä}ü	Cð\{˜Å\b\x1eA²Ä“5©\vã;WÍý!$O\x05éÞaeãý{¸_ AlÍĝ;Îix'É%ÈÀŒÕ*\x11ÛîP\x15\x02¿ƒ\fѨX÷16\x03æ~SRf‡Á\x1eo¼þôÏÑ|%±‡ßÉ1í0ÙÄù'\x12fÛdÁ4ŠT*\bÅ€,4†L\x10QÝpfÆÇl¥PZŸSËíÒìE~ÏqÀK$`[ëæ`Y2Í\x03^,úÌÛÅé àò&+S
yƒ'\x11"x²I	®PÝM÷)Öp–< .…@ 
’VW„‘¹ú\x15¹r‰CWhî\x13!èb@\fÒ\x16\x11ÀËê^´+.MÅÎ0\x18\x18–\x01ÔÁ¤\x7f`{Œ\x01ȡĒF'¼Š=ómbÒ\x02(’I\x14ˆÉ\x04\x14`‘\x18f\x12d^[\a “°Ï\b\x14Bo{‡2CH’d–_r0\f\0c\x04Ærõ•³V\x17Ù>-Æ&P-R\x02\x10` \a€ Ób\x10\x1eŰV‡D  u7N=m¦tùE\x16\x1e\x1a—2\x17gÚØø—¨$D\fÙ¥\fŠ,î+˜¡F6Ü-ÍHHM\x18G¤¦ÄáMˆd‡A’M¦å\a5!àb‚‹$K']›ÅÔ'¤H \x11I"†öÈi…d\x01d\x0e\x12bj a˜RpQó)I	¡-ÝÀ¢#\f5dÜèìm!œNI)¼Æ“,8¢‚Â
 ŒRNƒf^[†ü¥“€\x13\fÞ\a\x11œ\x1dÔw\a\x01\x18l3†HndÉ&Ã\bšœl\bµœ\x13ë\x06\…LœŒ¯`b\x17áéò\x18\x1a#©îG’£„\x1aù³ð’PB^#\x19\0ž
\x1cÏ:z\x14'Š‚\x18	Œa…ñˆ3ÔŃÃêía°}ÙÂ6Whll\x11\x14Q`\b (q7\rsHhåá\x03n^½L’“ÈdžÝ{«P§ƒ4\x11•1Få.’ˆoX˜pˆ9º¦M*5¾·ß£è\x10\vGóö­\x10}‹ŸÌ\x13\x02\x1f/·	\vR”hêÆR\râI\vqȺ\\0\b\v\r%BJ÷ž gÄV¾ÕNÎî©	\v\x11T\x15\x10@x*"\x1aÔ±8\x1e :&2\bÑÌNït]¦©X"wm\x1d!\x10ÛG»«è\x1fºÝÙÈf|\x05Òdx\b‘"F B^#I"ƒ\x16æ^[ø>¦“¢ö6o\x18Ë®]>Ͳg\x01®©ê<:Vós{7¢E;[‹;Œ³\x17.mLám¥–š(\fµ”Vzð>&¹®‹Ÿ‚I\x1eô `\x1aä\aËšºÙã\x04u\x18ó{Ê´¥TJ\x03\x14\b\x13õàU•…¼ï(U"€Æ\x11Db±U\x01bªÈ0E€¡\x15H‚7¸tvC\x0eÙJaàˆœ\x11\a\x03¿+\x16\b“B\a…Ê\x1d!\x11•öc\x18$‚‡a•\bÁäK\x11"\x03\x03hrÎáÃs)†”*íÞ\x18Øï\x0e5H\x15»O€©tD@±Æ\x13i¶Î]+XcTiAØ4JÔº\x03Òm¸\x03°Lß¶;`•ÒË\x19\x1f*VLÃ\x13&F@H\fÂCÔSVØÈ!\x10¤pLŠ´¥&3ŽAcÀ€âlá=Œ'p	Ä\rA"! ‰ "\x14ìõv¹Æ31,™V( ¢R\f‘ž\f\EN+ È‘ f(=¯7„P&T\x1dèýZ`êmb\x06\x17^ho:J3dGÝJ{Ñò\x1c§MN·_A26ÔcˆV
b\x19Þ¾q|=·»nØaÚ\x13\x10lO"šÈÍR6$]\x0fƒî\rxo\x15Ï2çží³3;jé:ï(k¸Àò×^[sC\x19’\x12\x13‰JÈw…ä.³€Ídªl%v12èÑ1ÐjÙ4ÎA:IÈusór\x05\x12"=
±ŽDžöoÌÁ+²^[c[uÅ\x1f`Ñ(o\x03€{AçËa+\x12¡“\x1eGø\x1f\x05D[žJ\x03<	*Œ2ƒÂB|×X0	ìX\x02É\x14"„\x11\x05\x02)\b AaÈDÝ\x12ǐgf”æ²™q‚Ðb+*]fBb1ìøt\x10äŽ\x1doRPÒ&‹‹â8ðY,Ë\vŒê­Pý\x1a'cp¦É–\0H\v†T ÝLT÷¿	׎›èÕ‰³/XSC"Ö©úgMÛ‘ípæ33«E0Öœ7va7´›±w& Ý1Ë
Éw¦¹\bK\raå0ÛE\x12óÓ4&\x0f\x02à”\fI\a2ã$bc<Ì&‚Å…C§{\fTŒ"Ìñ`7‘ë*µ_'2\f\x0e\x06¦¤š\x12`A™£@Ú²Úæ6\x0eÕÁª¥fŒ˜ø\r1Š\0Pm–lX§Æ4@hµ(ód\x1d¤\x17ÏBí9(øHdANòZ\f ‘ITªQbL,\x18@¿\bÏ1d\fG\x1a^[þÌ\0E\x02‚RÂÉ\rP‚F›62•˜Ã;JPŽÑŒcíP,\0b(]o”œÁ\v´‘\x1d…iÄ(Àq\x04·1\x1f8éL\vŒäf]lXeöAp$]~Ïí~ƒ]øäȦâ\x01ƒE\x18¶ïfMý+I±YtÆ­1´m1 ¸%¥\v™„©»SLFI¬.,p¦\ÌÛ\baRŒ\x16*ëÚIÇ j2\x1dtÝ›ˆ"%D
eU¥\bÄO°/ÛÀ÷Ñ\x1cɲ»Ú0	\x19²gG<c«9æ£p! \x15–HM+=\x03²D&\x02š,•„J˜m1lÁ\x14BéÔTÙÒ\b]q³Fg`ôF7Àk/w\x1c\v\x14±hþ	Úxþà_5…ùe\x18ØÕ\x14ÜhÑ$µBÈaAːQdX\0Ä'A\x05bª\x15<ƒ\x1e¢M‚Bkõ”\x01Tq(¬ŒC‰Ä?8f\x1fWÖe
\x06jÛ\x12âĽK2\x05Áö¼¾žX¯r“•N9^[\x03\x1e¬\x14
•‘V¸õ$9 HÄ6¡¨Ù”6Q²V#20*´²®†HÝC4`\x18\x10ÄՐÂO>mf\x06Ói–`C\x14QŒ\aÍ,\x03E@¸„
ð/\x16	]­ú¾‹\x13=\x04ž;\x0eÖ”uÊ\x18\x17G\x04Ý"ì \x15ø&Tï¾\x04˜‘vNÜÆÍoFÙ0Þ›0™hn%oˆUe{\x14É«\x14\x061›ØÔ}EùÃo£;ºöÔ˜XšbÈ\bD:(D\x13¥9'[Ë	7\x0eð\rÄö@
	\x1fG·3\x01h’[4ƐÚB1\x1a\f
Ÿ…1¤ÒD!\x01ME\x1d>„¾„yo©ÝBÂŨ\x15kÜ\x12,%\x06ɱó\ro€\v\x18e
âPDrP’[¹ßqÌ”Q\x03\x04ÐÐØ\fb\x13K‹\bC^[h^[27ÀK\x03ˆÐKâË>*\x129àþL¡}óuÈ.’H[¨-÷G=‘e€Á-âåõGÚwgj>š@\x1c8ä-*”\x06Ê–\x04´\x06‘8³±¸‹\x1f&Êzd®\x16‡§e\x06\x0e&Œ
Áz•¥lQbc
wyvÅÝ\rž)¹IÍØ›C›~’\x0f5K•¹^\x03ó\0,\x1a¦\x17¸Û\x1eA‰Ä™ï…\x03o¡\x02­ÚÄýbä\b\x0e‘ï"SF^[KHlä\x02}G6‚rðœáÖ<8\x1e´E„\x15‚ª²#$՝Xøï‚"(¸ìv\b¨\x18,ZÙ¡t\x12"‹=xtÔ¥–h²_J0UD«-›\x7f·h\x01Œ”ÕD…ó²7kÛ´|ÆðÐù9@ÃÂåÜ”\x17eBj\rP¿\x1e}ãb„T'\x12€Ïq+ä² ñrá…ØCgÈ\x1a\a&\x19-`ï8¦-ƒ-03ÝlE)\x11q\x12*"‡_SR\x18Ôª2F\0b" N¤T\x1d
´ŒO±\x10ŸX‘b­I7\fÚðì,–#,¦ê’2Á¿v»#æh0\v$îA\f{žA‹W•ü\x13‘ô³í˜…NÙe \x14\v!ÈŠ\x02Åž\x105Ó\x0f^[´Xs‡D·&™ÚÑ\x1e”QÈlv4'¹\x04X\b\x1a;\x0fL(\x17-‘‚B8\x16îK÷#GĤ†¯ò^[\f07ÀRҏ6S\x0f\x0e\x12½‹1Ðë	‰&\bå*b[`(\x16–«‰QÙ²b\x1aÊÊP´Q¬²¶‚¡ˆQ„Hˆ$­2•b«É×/\fÞlj@O\x14¤Ó&é:ã²l\b%p¨P³W©‹F6;%\x11üè…ä$–"r\fUÝq\x13W˜\x13\v?hNV\x1dò‹ÂŠA‰ ‘E@¢¬\x0eCgR\x12\x11š	¡Â\x14dY*^[\fÆ#
̦9ŒÒV\x18X^Øw\x03»Ôsaž›\x0eô
k‘¥Rîbå±C‹ ‚‰aï9ƒ\x01¡rC\x11ž( í/)øA\x19Ì[¡Cé
j7ü#qçç\x1c0c¸h»_M\x05eSÔVò·3 ÉE]WP$9\0”¤\x04B\x0f\x04†¡{\x02Ì\x06ÓA‹ñ
•ÀÃHŒf¡Ø5a\az9ûPŽß\x03!q\x16ó`\x02XlBP†1 U‘'@\x0f4’wC¢ÎÑ""\fU‚*¨Å"+\x10XYÓ!JÀè@ñ'/\x1e¾¡å… -ü½,]n9#Ðb q\x01ª*¨H˜†ÆâbKBL¹JËšë\x12†¶d.ÒÊè'\x13¶žÙ¼;Äìž\x1cE€(‚\x1c@äPf׃C”J\aß;÷›Ûmì~Èâ\d`æ_Ç?ÐM
é'RÅIh\x166RäˆPc{L…g¥k4c˜YL7ؽ\x14;7zc269¢3vvÆe,r…ƒY<5€¢ciÕ\aº†µ\x16ˆ¤ÔÙØË]C-F\fPaa˜! S\x0e®ôµVÄ%âÁ¬qT‘T›JÙ
3\x16Ó+1\x05\x16évet5º00…Ò¬¶,hKºÌ3Z!{¡Y×PÒ³[׋\fÊNL¡­¯ÞP¬\x10EÕdžFÆgçVåÈ¿™Ct¸‹[S‡«:õvÝ‘<AȲ8rJ\x0fß\x1e\x1c†·4p\x0e;%ãŠ*n\aSÔmɝŽÃ—&¢ƒ!\x14¤\x02bq¹•»M3Z3\x1dbi—,Ùé{©³	MÉ ”h,òbùÓ5 ­žì\x16%\x122¤ª&XÜsì$`Ã]7¦I‚À
QÎ-P|\x03S&*\!n1!Ê?z˜×À¯‰–FÚPÄX±OåS‹$ªânä·4C4$†Èi6•ù\x06g¬ÀXÀ\r„þäõžúÁÐM\x11Qbš×G 	AÀ·scm\x0eÔ\v\x1cÊ¡\x1c[hÀÆä”idá®" A#® G^[#\x13 ævª\bÐåp™f\x011,¸²-\x12à‡\x0eiAÔù\x11šò-¡s²rBÌ.\x11°oò+ X607 ¥\âT£:…D\vqô^[# êÏitû·æÍ÷?ô;ê"¬î\x7f\ahŧ\x03¡'xùx\x1c\x17\0¡pƒFw\x19ŸI\x0e\v\a\x10ý±ß6ï\b^[…íåCÎ\x06÷Uó
“%ÌL;ïP·©!B-Q/Bi$=« (ó\x15+&
µ^ZJ;ÅAuJ»¸AêÃ(T¡"ð¢­d­®Œ\x1d"*%Ô\x06hWË(\x034Ô<„r\x03;•Tˆ¹ˆ¥”I\x19/…¯ŠÂ¤+ÚT8ŒèˆEšY2\v¿Ù\x0fÑ?`ÀÀY1·¬fåé\x06'ÄP¥0vT ÙÌ¡¸±¾q¡q癉‚ÈÞIZ\x18{K\x150ÔÊâ\x11A•ÌÅœ†P\x12Šö\x1f1Qpaa\x18¦ØŒÑ¨Ñ’5NèùAŒð8\bÔðÐ.½NJðhàÄ\x17LFåœ)\x10\x11\x1eƒFªXË—\bmQM$.¥(i;Ê¢%\x04\x16*ˆTÇ“ßKÑÆÑ«‹ÐµÖ¥²A{°é`ª¬Bc^@L›\x17I$ÞD\bÈA\x10«Á£ß”ÞsC©¤ØIĝô\x16,€,;ì*@¨\x15’A@Y\b°\x05\x147Ó×o
,\x16[,á”\b›K8Sƒ1#®\’i\x04bÀ\x14å;Àñ;\x104ŽÉÊw‰f!ÈC\x17\bfh9PÀaT^[V\x12\x13‚Êë#!\x16ax;\x1c—Žqëï¹¾É[VÞW\x14S
©ÚÛ\f\x14¹†h±™LÛ2r‰b&ÚLh¦Z8»Z¸\x19Ædã@Ö*«\x16É\x15\x0e\a„f\x166Z¢!°Ù¶„pˆ@{˜Q€^[´55 ¨TÞ,ŠÚ\x18\vbMÅì\x10cÀY\x05g´Ö¸à\x02à†Yˆj¤%\x01¤ 1‘#S·‘-Ãr\rNŒ¹Z\r\x0eS¨óN“GTt"‘\x03i^[ܐ\fÌ\x146ûd%Pà.Fa\x01þ	"û'i\b\x15Ø\bàxƒ\x062Rsc\x0f\x1fôú ®@Äÿ6¤\x01\x0f‚E8	!\x01ö™Î\x17ÕWk‘©ê\f†’Äc\x1a\x0eó€ ©¾#\x05;\x19Oqá€\x1c\x04"Mèé×\x06˜Æ.ÀÞ5¿*‰œºä\x06€\x1fŠCϾ\x05\r/Ò|ÁŒÁlíG€\x1cLè[`›Ù~›M¤º1#yëÁ2àÒâL•\x0e\x16Žâó\x05ÍÇM›ïa\x0f,jJï\x188P\Ç›±¼°v ü¤+äx\x10ï\x0e>Ī$÷Ð\x10l‘!iH +$åê\x02\x02_\x15¹1~A\x10[\x12+\ai7P|[8s×äþŸ4\f\x1aý»>ëKâi}ï½ÌüAù•‘‹ë2\x06‚\x06¹vÂ$z5ð4¶”Dí\x1e#\x15\x17Ã(Ò¢=ê\x1eyÖ•4²$U\x06˜\f\x1a\x19(²øHXä\þÓô.
Ÿ=MJ\x11#',ÏÞ2\x17Ãéð”àÒÜ‹g¿)µî¢ì-~\x03>7¶\x06	ِ“\x18Q0Ÿ“#\x12¦\f•ð¤\x04\b³÷´°^[M\x1fbùÊ4`6‚\x1aP˜^[…e¸”‹4\x12’\x16D êĵ\x1a^[^[\x05Ì<!^[±\x16\r-ãâá¶$1¯®\x13È6	B\x01r;ÏÉ\x03\x16ÈK\x10Ç\x10¦#gs;\x06\x124^[ê@˜Àþh¸\x1fG_›ÁÆÄÖhÓí“÷\x03&·¹©-:åL]ªL}\x10a\x05Õ\x1d’´[Å•!(\x12–T\x152\x03ÔT\x12<È•zÐ5’¸ŠaÃ4ñG3‚oµ˜ò^&^[;pC\a˜Ò-Z¢0½]\²…/…íx\‚ã(\x11…	Lbƒ³èëú>tÇfð^\bß\ÍìÉ\x02òhm$y4”\f7\b;òIn9\x1a%A¡pAžþÐõ\x1e$š3R\x19ëH¨°\x05NÀŠ!\x02\x1aÔ껣Š8A?‰¯\x1a	~t…CÆ\x1cÚŸ9xC‡F)Æ$\x18`s¯\x12\x04‚œâ#Ÿ°½7c–‚Q$5\x03\x05!E;‘D¼$\vOª\x14íÎèˆ@ÐTM¹Ï\x1cû#„|([§`ºhÉI¸‚¡Ì\x16\a¼y$\x0f„¾,\x18£…qm‚§ª^
6ôØ›C–wÄ€vGÐp  âjK…cè\x14tˆW\x18º\\x14ñJ¦òŒ#\x06žðþåÂ\x1ei攂áQC|Uc\x18baMyda'>a‰\x05\x1cE\x14=²ÑÞ\x0eY8Ã\bœáB\x06”dð\x05O„ ç9¢’
|Ç$Ô\x10C`V\x18ˆ‘\x10\x11:çˆ%ž0Ðö…\x0e‚{cãÌÜCÆ=‘Î\x19á\x1f¶Y²\x01=¹\0ç)íÏq0\x05&\b\x1eàBOŸ\x10\x0få\x10ŸÔ$\x0fŽ?pöà\x1fh$žpœâhÿ\x17rE8P_äéí

  reply	other threads:[~2006-02-09  5:49 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-02-08 23:13 [Qemu-devel] vde-inject 0.0.0 Jim C. Brown
2006-02-09  5:39 ` Jim C. Brown [this message]
2006-02-09 18:23   ` Re: [Qemu-devel] vde-inject 0.0.1 Mulyadi Santosa
2006-02-10  5:34   ` Mulyadi Santosa
2006-02-10 17:09     ` Jim C. Brown

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20060209053953.GA13800@jbrown.mylinuxbox.org \
    --to=jma5@umd.edu \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).