From mboxrd@z Thu Jan 1 00:00:00 1970 From: Patrick Colp Subject: OCaml xenstored Date: Wed, 16 Jul 2008 11:25:05 -0700 Message-ID: <487E3D01.20601@cs.ubc.ca> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------030305000706090804030808" Return-path: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: xen-devel@lists.xensource.com List-Id: xen-devel@lists.xenproject.org This is a multi-part message in MIME format. --------------030305000706090804030808 Content-Type: text/plain; charset=ISO-8859-15; format=flowed Content-Transfer-Encoding: 7bit Hello all, About six weeks ago I posted about making changes to XenStore. I suggest a cleaned up XenStore protocol and said I would begin work on an OCaml version of the XenStore daemon. I have completed my first version of said OCaml XenStore daemon, which I've attached to this message. It contains the source files, Makefile, and a README. The core functionality of the original XenStore daemon is in place. Some of the trace file and logging stuff may not be quite fully implemented, but it does allow domains to be started, shutdown, and migrated. The code is ugly and all in one file. But this was my first time ever coding in OCaml as well. I'm currently working on cleaning up the code and moving it into modules (and the new code is starting to look *much* nicer than what I'm posting here). This next version should also include some enhancements to things like transactions and security. Please let me know of any problems/suggestions you have. Patrick --------------030305000706090804030808 Content-Type: application/x-bzip; name="xenstored-ocaml.tar.bz2" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="xenstored-ocaml.tar.bz2" QlpoNjFBWSZTWS4VlpwAvCj/hv91VVV///////////////8AAgCAIAhgbn4eNAAPJQpQErWk cfV9r59t3zyHezG+z7ZrqCvW3bvr11QBesbu+8950eHooLYU3XXNsSNj3GgUo+tKIKh6N7jh vtx9H0B75J88rbU+2Hs+uV585OzXWve532e+72vl1fbt7uV9uuRe8K+9y7X3vr3n227N3dvo d5MPMzG113ave9y9e2ltnO33t5MW1VS3txXs3qe7u10KQg1uPvePe9z31fQBXo0599XO49nq evG9319UX3ufPe9XvuYG9ijmu5viGeLubk1C+6dyqau7vs7p33g719leteyx7bduuI0DNy7W 7Ykb729XWXtYD3bcMgU6W3vHweX317773t7LNPdkKj4zw+9MrK12bsJFb727e7R3ydnPCU0Q gAECACNJpkwIpsmZJpgjKeUaT1PSaZAaaPU9IaAAlNAhBCCaaEwlPyU8qfkyp4oPaUyfqj0e qNMhtR6gAAAANACQSQhMRTTKj9Sep+qemUB+kmg9PSj1P1T1NAAANHpGT1AANAACTSSEJoQy aGiTyVPymU/VPaj0JjU1HqabUzUAGRk0GmmgNA0aBoIkiCaJhGmgiejKMTFPTTVNhpFPNGlH tNKbUPKPUeo9QAeieUGnpqAiREICSeBNNNEU/I0Rqep+qPSeoek0BoaaZMhp6QNAaAeoBof9 Q/d/y/f+L0huMQ//NQAmYqHiEU+KUHr+X5PdjiKjoB8ofL7m5Vsc8QyDFENIE1lLRIEEFJEC QVIg3pQQkURIRBASyoHuiB8/86aVPow/hZP/g6vJlHlsMUsCoooh/L0sMkUft6cjSYcjsIHB y55/Jf9n/X/t/w9mbd3x/Rh6JBYeKUQUigVbVCKKALIKskikFIsBQUlStQK7qyHgEEkzH+Gh qu58y2hXYmGrQQmYjWde05DZPABWpVagoSqgiLCsEEKyMFBiooW1BikWRtg0opBSCgIgg1gU BgMVrQisQT+qyhEUUZIKCyHk4z+Paga0C2o2zGEiIQ/KhRJFmCQ9xDYhiwVcbVr7qS47Npch s0VGaqImk/blzBsuyQ56CppmKNuYpDaWKrthux0xkKU3yQyRYzLRLJcjgrJ/If8XU+AinaPR m0A6xTfmbMYqggxTZoooMXQZnO/USpg2yAYjyoErAMrDTBxXsyVhlhR1LIWLW1y/zOGicqOF gVJiCkV2qVpUQSLNSqDt0CnuZYKJrc4GAsiCxBGcE+tEFWC2Q2fnSopCGaMTGf8NFd6atMpH RNhaOjK40yBqQYyoxkLCA2R2CgeTSWzzNbJ4FcZjmUZ0ZyKSUQT+L7l77D0X+bXSdytYXpaL T8IoKOastZCLJQx1dF1pwoKDyCkIQtdVYd3jQd2tWNyaqJSDZhzYeL2gdiDd50QThlFp+Jib pchIiu16JRUdUNNYqMUmsNZlM0aEybRQfmILB6Km4onIrET4w5LEyQEroqXtwcLEyrpxAtzJ WxKByS+fW+iAvrEBbMLNoEY2ewWMkaK0Eq21UxKiVMDdUE1+U1ogo9TCpqIza2COI+fw5h6/ LkdARDk1C/aMEbGWDkGmcb6DkaPEYTIJ/du6Sz2yBmts/UJsjjxLnkhmXGAoYigP5KSVUDGs iihRAohqpeszc0MCd7JWEFgRw2BjRZlLfKaz6nsPccGyzXGJVvS4KuArRUlo5TG2FdaCgrlc mUUSsYgwbRo1RSgLRVQVC4WLs1WGmCypVNTpbczMRDEuKIUcZiXJVy0pSkWAyItMY5Buy2W1 QKRMbjgqwVtdktiBgRkcZGhsmw7pWqFrtctpmGTArFVAZcxSZbdNdLYaQysqsSZIWOD6ngfY f838n0ee/xa+ef1u7cG/2ta8uh18mke5DMOmNwJMDvojGXZe72u9zu7vm7yd7Pbbb82VeHT2 +bw8NpNSdZPdk1J3k80jdtvuySSyPp5ct/OvhAPxiwdhD2sAiIsAUgCyQFgDaQNMRONZXjEF +xUg+P7P1vk3Pi1Btm83eoMc9WopY/3+k+nI218l+PbfQbJNgX3njRdUyzvdMhoRQhWCMlYK SFZEYBgrDECpKgYwRJllhaWxFArkWTRjThKkeP/PdonAG2fHRgT6+f0s4AMBdbRBGlEXzhFE FTfBDdgUCq2IwgQgqInuCACIGSKjBQBAgCDlAAQ6ogIa4ir1RROr9+7UFDpiihRBFNeilVB6 IK8oAX6JC9bDn20m3QzAlilQGLAAZAQAsigNERS4oCcPnPgJRJ18KbmP+qNOfVOAYrVj9RQt KjlYR4MJmjun2R++q3TEMuDaasJRoarSSFf3J/IC5F7DMYu7luo1H7T+hgCrvfkLc2k0aNbp ta2PbjyRB+H25b3S1Ih+EKLj+a4Sf3vVX1TJFXGnL+weo/rTcaUq5H+XzWUVaxqJdchJ8ZAU 8Y3+JzbyPkcO/O69PIdBZZ3Te+jQIwGZ78PBEJOR724guTOTGiE2hoHLxKFTWIEm6w3c3nvC RRjRCM/f63yjFqx2f3akoGmb4P7O6Vjh9w8f7STVm/oW7sOiw26dnnyn3rmabtqYiXi7/9eq 9971QDM/mGGgxkIDIyMhLUVgqoIgggojBBXVpb8slDBhfmMCaME05lhRxpgGIiKSrTcGEplU aDIRjkcTtMtdeMIxJhENvIpSvLIzCttjcWO4zCnSV0LNYVVjjSjtaOMwRdJjpDWKYuWjSytB xyORqsoYODMMF0ZpMQ1lloomJTKVV0UpkojUfr58UZwW0tDbpSpPFOEnRPa+Osy/r/zm3fsc JC1K4eE16akWemRUMjyuJ64/7rnk1aNEzOnWvo2G59XSPXG0WLY+Uj4VbJp+7FGNQed+pKE+ cOPvXD07YaOtFKonD+qDi91hunN8xe5k9aSApILJBViow/NGk99KjCddz2xiOnYScQh3zxlp vlcyJkyhrIoeqxwqM2ePlUSPJGsF15FN8uf0lannE8rXSjZzeVTTROvJ3v18g2MpV+vPqnsb NusErAwi/O3Xm01zOxNUzN8TsFk4gL8Djisrz+24kcsY1pkdBqR856ctlfNgfg7CENxekvlY UEi4Gqhj4XeZMRDMzSM9uF0UPfn31crqvCWAWyQkMcjSUHhqzlle84pRG8fx3ykezhIAkizV MOuZPJheJYyeEPJ+rnynPXkVQET+RpSY8Zhz3dkZBJAK4D3pCa9vZtO7TXuOF4lDb1ePWDhz DMyrsrjsDTS+Xh0dvjOfkPDiijnYyQ2ibTbDEosN1d1tCjNsfk7MZgGvApUkedBRkJKZX2Sk Cv1v8kfD3X3FwmP3c4X7xqYd/GS7TG4gemI+OqFD03B+P1If9op+Dq5jVuaKk7odcKF4fP0Y VE9azt4yqp5OmJFkvRxzck93jweTu91sCREp9ukLiJW8NOTz922EW+dTjL026s6VUz4leqzJ TIEb9K9JFyF2S3xnOWekn93C2rVTsxP1SMb3qVWT8lSpj0OltOH75/TjjCvabFm6nx3fD+97 n8NnPDb08ON3+yyH6PWagchzKZ1T+m53RSESLnE9/nUo9WnX6k+cxArR3+vVuu35hI69djRC vaXw5t2e+56LJmYOlxD0RqIkjlLgIHof/fiINsjm1PB35NjnVYxyIhL9GNS/y0GMIOjHpz8Y 3QSpMdZwZYuqixDQIYSdCd6J15BUrU1G1JQzqf2dPj8H8XX/39Vfor8f39aVc/jH0++k5mdd qffI+PwY2wkyQCYZIVAQRVO61Rg+kZUWRQWPttEyYUuAkIdwbTh8zZk8OOJ69evWLqOzxX45 LlVQzLmwbITYrcB6/0T/39G+gEkH0haWLZ9NstNE/jrPDc248OlYfKwvf736DymCLETFbaIm xtmJDKd3kDiYXpEqvFDYwtVU+LbvywU0NKCq92fLz+Il6PA+r0Gd5bdY33B3/qIOlzDmLLPf 6zZMy9T+baNCDfqdZZsca/bydNcmmSYWpn+m6EnE6B08aJDVJqSFPl26Zr8jl8V10z2MrMj5 vibSZehZFpv5mK8FdoEE7JNxFT4pu7901jH4AS6fMPAIMBiLCD6ZezTtwuZ3GtKq6LVXh356 tEZHf9IxfOduzdRZzkm/FVSTszckQkl/I7kiU1Il0O+M/qcuw2XKfCePv3fNUWisTi4xdW89 xgEiUT6l8VnWEhGITjQJ188feb9Ouso255lv1bWeh2tjhTLFehejQPqtzaAtgMYLbyRIqFJR A84TYZwnENJYkWWznaehDmA1baE2SXU14+P7kkYK0YSS8HfVJx2Oaq6rEuR1OodE+JptiW6W OjkTH7X7FLaNNEGjLsUg3ToLQhnQ3Wr+vinufPodNicbJoI37TOv3b4qsL7Z9k6FF7QRspMo nSeKeDA6lGFTTNGFTE9E1QGmW+K154NCRvTtDVjE5hJLTzdAYNsm3hLOiK36zkRXJBu7l0Uh 0bPu7RmRAy78LEph877nDD7wiPJalLer8F+NPiFFmCnecHP8k6EkdVx27Rtm40NxqAMoxQu8 p2Gcg7/NElbHEOCNHqJYrumdSYHM645YtfwvtQ5kxp9d0RfaaukayrLi/fx7KeO858tnP9rl EaE0slb8qSTO8nRib8bswvUk70xODsR43vNuNpzl91KmN1tTQava9cEsXsxHCZptuptql4D2 ZKcEhNn0NBCUO7J+R4frzWAcMukkCTmPbL5u5k9knXHENGuMxnq97tuXLMSnhsk1HaDExDtK 5gfyTenLGkB6OO0G3vzQ+gX1I3rzPmeAejQejMeEHMamuDmQQydTBcwgHZaGiwooojD+o4kn 5D7X8yftfb8qP00dVfP9Tg3zox5Oxk1YDuwJgI6/l23dXRFxWJ1q+EkPNFKPfflukpoQyPni UlwyfMU6aQ9qY52fp3OxNDwjXtAA4L00ww6SBxIVUMJi+k471/BrBLvLLYRlAc7iZC/eTQYQ BeXTQL4ZaBuQZAYyQSRWcMKRXr+XJ941x0oQ4YKCd0qH3cMMRRQ7PV1Oh4VBFVVZBiKDWgqv P0z+2HB+kyoa9RzhxWokiXZAejyw5umuSCQvWIop4u2wL3MbZbQtoW0LaFtClop1hS9sW0zE hcbgwRzA1aFtBQpaFaxQpaFTvyqGWhbd0znrAgkBimYLtvhNnaJJB8CukRDpdGdk5F99Y7wD vyd4Bf8T0K1qiwRxQ9xnpIB0Omg7TxLxO4kvm+H4JSaTnzeGpfMiUyffVUS4ZdnZbtCXfKEh Oz+jkMBLuYYO3sm3G7q59tMopcfBR1QTzp7bSup3nbdvxsvi871w0LU43xvjFSsTDr8+Py7a qdtQtbO6y81J8sTvK8cHuMTffKv9ShsvJtZK4TwlR4rqT5yfxd3e2l9j1WPD24T2xe8pKg0V oSSQklKUY5z4ab8Oi3eeShxKryMpO1XAJpZXLBVwUEJFHyWdgWRpXG268uM7M4Uicg8A2+hS ncrKfjunJDO6mA70R4PIcAr6SNmaE++OfGcwnAaW85OJV2tdlGjFWeefHHLapiSD3CMYezib QXkSQt2PBhlCuMS6xU9lW0M06GvB4L7shXfiPM6y6ZJ35xE2DHH+/llMJWe/Wk9Gos2qJanT EZj7/LZOt1lBrG/fZpFMhuqYVc7qQ5S7ojmkKditgmDfhy3V1z4Dxc8PJYd5mUyADBjtSEhk hIwbEsHY79t7OH0ox8N8GFbWPNXOMWPHZooYkEiDHtEtMm+h6+rskzQ8DFLLlGjFtjVSiL7G HDufn7q3WOh75BdPZrVnCr2uu5cKtDdfUW7wRBpLLbeRaluwe/sd3fY9cmCxJuTb/TncbbcO vPjkVlVewaz4Tdh1qrPi9HndS57KRzOBjCxa9ZkufAKh4dPmwU8x0TOs2K+ZSZr628kmhcmO pUz9iXxX0eg2NHn5nkbbb/HjXlyNvVwqqqqqqpJJJJJ18l2VOU7eKe6LJdkoJtR4COIWIfV3 s/GkcDle461wuag6ofBUOLGzK2cyWMo7SWlCW4Na1wMdDPzL0hIm0zpQX6YJZMplfwVRVun+ 2HO0PJc5Y7RRyiXU1vTf7FAeN4Obq4a6s8uGeEZvDPds2fRelihzM/mxGOzmPln6ec0PE1Pt vGt/PrpeL8zknbTbnzpp8Ri7W0Iq/ees8Z80adDBn0Jk/olq9umybJey+aoHxa3frt9Mzg9D /JbeFKxnZHGY/glu7CEkhHGrcXT4qc2gTdUt8Dz3MWWz2E5T7GbniQui2Io/pT6Sbds19DXl X9NVnGoi1yRuqi55+31Zyo79c8DPi6QETIWFX1tVFUX3+26C58vX415bZb6OjFVPTtgXAVb4 wEB4daKmp++M+ksfdJHjPQYhbOnBgh98Fqbj7CygqMyWIVuwSm1bK3m0ep3vXNZbTlPfG/ww DEOzBmYrTGCYbuTBHYI6eUPWnP2dr597tYwx232fhl1Sza6tJx0zmqkH8+FP5Jc77cSSYSbG Ppa/IpphyrdX/SP4Zo6PYhBjgepbK4t+LcQgvD/w4mGPmWVlM3T6c6m10VHdCEkjyqUx3d6I rselVCNti+DqHP69s9bdt6NbTVAKcma2GVIlrPeV5HNDPJLKfTHDx1d/l5qpcIZm50AWvuQd ENtXhZNuFdwFZpV0ii3Dg8GF/ZUef0UNUnfPpRQRZZlAtwxCCScqP0yJIv6doMsM/m2l2/qY gkeFMkhgCpmUkpI8x5U9dtmdpISYjyuJn1dpikv4n144vIvXN81FamXocffJF6s5xBoc7MpQ SJsHoPsDweGpNTe+c+oBPRBkQc4Chbbt+u51WN/dvc5aeMo449M5ND4452UCvS1SW/DyNl0W bQzSBr1LLyWaDb/u0ppZn7olPessmBt0bdjqqRyy1pxPXyitT7osRfN92OGbyhD4ofKpzfFV l84pBm1K5WPfze7bjnXQ63IjG+2UTP0TN33duTtu+YuO+Ta1gV6II+/6MM0gSg5SSSQ6FRM5 XJ7pYlBnKISHU+DhfOfF6jxrfNYYdPHm4ES20Y6GzJXr5U4jRrc4fF9q9LZK5BemtsrJlVTB GNg6Kwo5Dj6Tyqqp24ZfAXXd7uhZWvA5Y15hJz6L6s6h9c4iqIlrdT9LnaVVz2VZTbZxvFf5 GcR8cupKCjECKV+VVcDW9mrPuz4ELjSkPdOO8jcSL0q3bg1jqTv12OVyVqqGnOpM5rrv8rWg z8QTBBN9u5oagg9mxvufDv6yq5+GOFRZjMUdrNZg6SbQe7aolqqNndVxOiHoHAqk1mOddTS2 wjrVJ6TsbubpETQnu8U8L8avJOMKCabrhHp+zOm+b8n+q1nKcr347p4Zk4zbTrH0tA6vuDYj 16q/l6Mhmbme7uw23B5bPjzgFr5rzF5fCrK5txffnPqii6zHWkxLN7oG3dTO29elFzSbhOV9 2XLMuwqWuWWMp1SEdbeNw1nUlROrbh9pJJJaiQhAOwNk7tfIbxJpxRW7WSjbiaossWM6oGS3 8JOmHHVgJLkbCz3JSQtjs9BY+0PU8Y6PY1U4I1EzOXptsKlhKH64xSyebV2xX0608r4xnQMc dBt2PB2aaEfKMwkm9TiPF7bZ41xutXqzs1+drRoYNLm5z5lNPx6bc8DfgaC1WTMCQlsD71qV 1EeOceHJ9WpDs9gINwn83LNMVyyjlUPOIGbE5h3z9YeHsrHw2zVHRPuuIj4cYXoqvGNTFu0q nQ7O9cohpaqc6rnKsJfMeTvLOe8sITWOKLbtIvn1jFZ3pjOXG6Q6dEnfqft7rFci3Guq2oN0 YbimBdDnYI6kJs9nAtvLrIH3V/psPX7uNSyLI2svZoCCj9GrhjOvH2fN6PHu0mdlozpfC7wm fAXbuemn44x9SzOtYzMBVugScfEQoxnUykVGYMKj7XxxevoYZj+JMwM3Upa7eT9unbiY34Tl 9a6LfNYp9+2F4zCFPXGJyl10+Kl4C6J8V1b2uWvzjKxQ475fOiYTdnq7qno99VE/tRx2r1b5 mX2WjM9MOE8FxjGep62UaG1h2rJ3dfZRp8XPZF/jswO4wDVtpGhfbUUeT4yFnpK69mS2OYTm qXdvYuMMm6TBJqjTDbF2kRvgQpuJPsnHfbRjcySYxlm2DnKlI0HLS6Oy3KKoJRLDdz7T0UCy 5Ja8cJxc6sOgAytGamdJV43yaF2JqVubsnpK58f5uc3Su3WVa5lJFXRkTLacpDOrB+1Dblod DOpTvh9+NBcnT0t3ZuqRL7URVZZwPDUdqC2+Vk7ENDEloWRlT4uCIMiCntvYwW+14zQFcEPE 2UjnxdtzDSeqr8M3kmXVPit9hyqimXFMQk9lduHcgEBdW1CIk6SVt4rambpRuRYzYPWi3WUS sH60kQLKscxJWSL8e2qLp6X9Vu7kawlh+BJAhR0k0hKXd86fBgxbqx+3dDFEBJO4yQfqO2jG Cq7R7fYWez+ovfTLLJPxpJFIIgiSCAgMGAghBH+BJKoqP1FCjCQYDBGSDIgjP32Bf37/Aw89 H8ZlEBEgLBYqwYxSbcOM0JhCQmY3evzO9fz/afuPv7Cbff+39p8v51WL91P6Kv2T+3+crepR FcTySrFb7NwGTd+npgJ+b9PbKvgyHJN+fue/wmXZ4nVKq1xAQj40B/4JZfRkFatRh6iLJz/k +DfRVYzH8/ClkyrzviJeL3QfT9Gt3RxpcuLDPgwziGvNd2cKCY1W3j5+V/q3++xE2xDV17Q6 4m+CL7YgdpBB/iU/JFJDNv80H6wQohcNolQ7/ryUl6b+KcQyTL91B+SJN+LASd0DG3t7vj6C di8sCSo0Btgf2k9xz862qRSMDCBAKyQkP+UO2giCWFItQUpGMGSoCgfliwGH7afqJNhDZgUB hCsCKhBu0hB6Xv7ae1h6tPWZ9v7e1Y2M1ItbxszCxmFwVgMiA64ubWx1T87gm1KKsdjVMNOn kcrN9+HFA5DJVmryazAEYg8msHaliCLmzSGyGnSWcrUZgxZUUZcLEwoTpJBi3xioUu95cufh AFYiIs0yjIwFmt+RrjamqSgcuB4utOO+bpju0WQ0lZJgh/FuUh9n8t9EtQWIHeqCMARWKKUQ qD1ZUEQVYiIswH7GyMxogslFkYKRUP3EsEYxWEUkxACsKw/Sn4EA8WSHsfe3IBCwIwEQQQQ/ 1sLJypCyKMWxRJuySfWkDmw0qgRipkIqQRYVEEqBUBoQgJUVN8WyBNkakYCBsIJTFWEBiwIE VeExih2wAeX0juJ7/y/oVP5RTywd3DdaRjHwTeQLzK40tEIGhwj88PjyLQxCfF5gLJAJHx/D Hju2mQO0unG1IYIkPIvfZHxxkP4f8OFkDXpSgcUtEkaRGIxONyD74FpBP6+/y2PuiIJ8XSmB ALHR0vg3p8Hd/rm1PrFZ5vdYP8X8PkiJOvAd8O0qG4I31WmZxsME6tSCRaOAr+0VnGs95T8g RGPNEi8rQy35d+58j4b8P14l73otilCcfweG9eFcI7z/Q1xPV7xOy03XiNmjcgjI/45iPgny +lyhVwv07OdXBtWCJdGoxTbzq6R/bG60fQrq0E05jqRpCdpNexmIZqLnzliZQjjEHVfvdbN9 m7rZyfFgfHTtV8dY0z5rZ5WMBvKk22cJhCVJ8ogeZHzK+1X2h7RvU3q9Len/kW2Y997ZcUb4 7v90EbFZvlVZR9/VHlk7Uw5X4UGfl20uM+e9Gb4z63IpFLHkeUeJsbZJSRrZ+G6MaYTYp6KF eKPMrUldJ4Qkm/FD+rz/fBZu/bFS9D6kHOvjGIfl3dBsi8+EOytNaErZzRRJ3J0fkode24pO uV8o9MGkelRPEdI0tydPcUmhCc5Rdn2sVWF8M169bHoZww7J1RUIDtN8udpjkpyYF3V3SV2O B81w3sR6PFMsllx1LqPvmUKjkNu29tYxxvJtmIzG2MS/jPGrbh0wtM798z928FZVOsxsr07b nnXi8uc7VtC2yT6ZenLX2JyFPWYd+Zj1To47sXQ1ZLPC9bWziuHHH7aL6dnbHQf8uMsd5937 Z2iUa3zTPy9Xz9yz2yeIsd798Gt8xowrG9mDZvnnvG7uhknUnhynglWh0xN1akYS35n5cXzq dYC6JxkmLdHAr8zEVv573dPvaHUCiCN+c9pjim6THqtGIuGFycC7p/ud8Hd101WZ9DMS5et0 g14tQ0OvkWpPnTrxqUFcOHM6neB0Hw+A2HBilEnxLeMNeIPWupkdrjjVrm3898tHZxz0w+Ca OmJPCUXuJ+fj1gROdukVg+7iIDKDWuNddsrnR+gzDw/RSq0YieTy0ajw2zurNk78fm5TH2fl LjpVwSFDSo5IP0N/Fzs48E7auVKPPJ5Uv3QSSJ5Psiox03c+KK41ta0tvaHCZjeeG+WPV03K pl7396ynSmF4mP4NStsY3qFZm8K45qeMh8W+sfhJrLw/HHNUbR9O87j8b2vb8npuLATASBNg DT+MO+Av1RFP7IP1xVPx4UbcKFD7Yi/bEMoI/29VCKH8Ygh7uveD1dC9Xv+f9v1S4d/w4OTD dQ3SNg/Vifw+b9QwW2t++365j/QzT1yhY+MP8+N88/pNXvJ0bzBVJVvd8VPfWV4K6vhOpTHZ NwZ2aEeZ5fSvq6b4wPtMBbScpni5fJ5Om+uW0wo8oB7GMAkWRJBJ+8/3ykolJAOhH4tVgVB2 xn2UdmT4FRFtIp85a6Z+yLxR1xRQW8R07l7Ey/6L+VNOwrVn43xzWN1sPPlYWjcc5g8cDm+8 f+PE+0N7MhgCthA2Q7B940Azc32iwW7tz2kqfVqt/Au/vD+Fo2dzZrdcmERkAfjZrOdd5wgG kKybX0Q1m0SjWWLFliCWlqCEA6YgDimKEywRkgDku3Jb4liQdTAUmIai8uo7nffnwg5c2RuO 6EIcfN4WIqMDTkKtguGysG/EmBqWDEoMlhIwWMAkSMUm4N+JduGZhm9nx/IFpcwrjIITZH+b zISeMBjAvk4mHbY9y057xggjD0w9XKA8u46IPWBsmYjjpTjxgxkox1oxudm2W5oS0eQO24IH aQDSZkMWBOseBgNxdykDm55maIOt2EzNhowkhCEkYYJwvRoje/7OUngYkAtP0gfdhbx/r8rm KkmdsjMvroUJeHsxmWKxcXsaDoq/+Xj2XoqD+QHsApJGQA8YHyS/gp74XdPj10jqein6IZfu oQdI6oXjl9lNgP4B65QHze//v/P8oO7FCj+kPv2A1Ye1IHEq308plhKnOek4C1+yk2EXXE/3 Pa4rIf6APIoe1D7UmH9O/GSZChgJBGkhexLrDkDXgHTtVCOI/X1aNmWCoDSVCQ5Hu42x7frc idSNBAO1vNr0PqZSNGZ55B72oRjXarJje3yuXWumkrhUwd2YJtaftyeBuP+tN+vMKa5focYO oDkjXudtD9k3G+6BH4NiEHFu3i9wTqQoBPaIZu5gGEYE8AkEG1thUOtChyMAWLMDbVgVYf53 OqxnlgGPmB9s/SLdKBs9IfS45DAEE3xihB2Mu26w70lyM/+FpJEOllu3p34CSw9U7Ss+g6Xq 6ahz3fJ9dCufjhiIfGen7RNLSpcRrya1ZiBHRXhMWabHA9mi/MjwvcK0XOawAQmGsnldVJTB khqsIgBxeoIKgabH4+Idv3qDnAyQLinxYKTG+Q2rjfUqqdtJyz019UwCiEJIR1W673karnj2 3uQnZ0ig+EBJcK3khqZUhnTWdGPTq2uVVruWIYfHs3mxMxwsIO5AkMaWrdPLYD/FTDevGYb8 YNMH9MDmmkeebGD5ISI7NK/DhW+Eni+OgeHHF+5xA6vletCO8It0zzMsOXbKymeNXQs1J4TT TTgVT2pf3frodBMfxIfoF6IDr0Hl5Xza9w6UwOhISS6zB1tPEXc07+SGxjevGKIWEwYQQfxr SJRKE1i/24mF+t/r9b6XpvUP0cdCXxnyw253pUJrfxitNIUsoZt0h2SOSHSDwepFV35w9NO/ 65/yS8shZzDHr6S1SLb3ZifFDqN+Mxqm3WEktS70xxgq5vZ3M6XY9eio8JfW1l/pXOLhJBAg OKpMtiO5xEhzdhODxjjsIULy6RD5T4fDdlWpN5D0P094e7q0KbWFWNnDU3ao9Kc8U29qiF0J r1ZKyvv8JNnPvrr8b2oSV2JDa8Kvh38mFhuPn6cy8OvfPGF32lS+tJmFgxpyGZkR6tsTvn6s us0eSILXYnehm56Yn2esnT1APXPr930fD4pkGvNfWXvcX6EMYImSXRdIkdLse3z7rbropXc5 eoTeJb4cLEAe3nzgkrOL1LV8o7oeSD7Vja5ajKhCHquxnQoiFDu0TfNP3P8Wb0nvaH764Cd2 EF6jVz0Q9b/V8c2M2sBNPwkm9qvFlE+k7rg+5mGB2FICifKRJCEikn/SDSkIieBARpFkQQUk f48Ps++aNobsGh+8ww/dSEoJFFIxFBIyAwYCOqEoSMSCxRiIwBYDlsSMDegFBAWCxZFiJBSS SIKKCAiJJILhCxPQQR+I0fUFj9SHhzw1P3OEqEIpBSEkYIRQY0oqqssqpIUISA8IIFERcxUJ BqKIYJA8teE+/xEcOz0fF6cqWVv/H85WYS/fky8o3UQuQWcmDpAmzdQwWFPyhH5Ylv/fQnvP pIwX+a7IDkd4oGz9X6/UIdGrDUurQaXRD7v71TaiZm11jzi7YLqzLX+3thpt+sCTHAOnID1J qmAP+nLOP8t7xQnoaSLmtdsn/SH6CCMEYJ7wBqDAek9EBP9n94uinaqYaoLDg8dfccO53uOd QoQitAa1NuRPjrkyQP3ulDUYAcuZ0VvtG41tt9TtUaJilvRwqN+sDqjlj7rv9w5tccrVwlxj du8gBMi9nF84ZFttyieBA6psejnw51c6LeYn1vUVSdTKTx6/PkQEmEkIQpuMYzX96KiemxrX Wk20216ovBBhUKMLDpAvE+2/K7aAaJpCs2OWctAogu+VGSXXmd+Zr6U3bqec5sCxqKRR2D1n 0RYohKGu8nAAF34I69O3oCgwfDu75KSdqKiKMDmB0G/i2zYfGd8BB1J/ypixA3AzSRvIZg3b FgF0pBJE+ADu7Eg2vw4SYYgTpXoHVBnPpgnMdOwDfu7wRFFiIyImQPH15MA0BSgGiPYyz0dj PYHNm7ma/4NmL9WM0XF9+7ecB2NYBShqLA2OEBDl4gmA83ndh3cAHly6fgT0E7vAJ6w4Ao/y 0qLAYsVQERGKMjARiIgB0D3WeQHnPenmskfUB2YjSOX0fh/R5u73fafTEv2ROqr7Jqznue6t 6WXXFsStidV0lq16zXil7N2XhCF5TAkIztT4Hg+XpDyrOSYTzHoL9SfV9f5DUO98x4o7w92v we3AWRT+vnnOT/drcMRRSO2t81FxKidJIoBPvHqZ5FVI3+FWcjlxX4xwcMcU88NTrDdSgHj2 OQqXAfQxHP0+f2EKmVyskbN4u6QQQ+ekGOK3BslzBQ5kOFCZEO0cVDEQyS4OqIRgQAjpuhKC yhdcQKFi4O8ggGMF6iHD7/WWQf26uUYAduo7qnzljSGddfsP43TygHiF6gCGJHsejarg7g7I UhbHe3EJFaxz52PBOcAyD2QwHD77Y8l/MA3hmJEMGfiEJLNpGAZWnr6J2DMzSuIb4+rSMTZz /ySOBSR7QQN0+N0n8H8juf4qSC8Fqtrxbc7wiXXh75bjDJiGMWIZHuO4NSAHnifihoeg3gde rlNYM44A5cgHKZ5URVd4sMucchsF8hg/0pdMYBfxhrA1xVOXZ1h43LyIEkrwuPnwq2GFj6Dy NztiXjhLzCshDs6jh30dC77pwgyqmOneauIePow1hgGpZqjR14LxdQ+pHNYoCZmqAOsj5e+g TmgnKAp6OzD46v7z9ErCHQ5mM5c8xJzpYCSRQWESoWB0E/UzbWgxyyoiCIj4zwXwL625S0ld 113ZovPblx7vdWGBnhTtA3a64C/KtLSpwx5QHjR6mzKJxsUNtQDZLA3l8zKc4BMTAXGvh5tc z9Om9dTBdpFhYO2cIBRIRSoD4C/G9wHlA5zRN6/CocrgcY6YhSY8g7Q28E98iT1HtpKkUYhE YMGRSRZFiRBQizzfSp6tZkQhYz45mALJwS6aEmHXtkC+IHu3MVQinfsKkJVaXUGpzR7GlbiH z6FwCPeHgQ5+8i8ziYu/mtV3IbACmKLAcYAeeAPJ6Z11RPNV3VXycNjtY8t/r3KcoPdCQD7U fJB7n3pv1iEQAdCqQfyQ0xkTPCpWflwn9yTEx4IPu/Te3259rQ4/g3cZyD5/6aGQP5T9TCYJ hKKnfLSZNy47jKwQdWVFFt+LDFCSewQAh8H4PP80PgbqHevxgfO43T5AIDjBwWD7m5S6IasX GR+rMC5AHcGlEkhFkSyhDA10p7sl/CYr7sEdhwCxYB0kjJFwKKDh5zwF+h8X+N/CetTwYoj+ NPyil1Pe/Bwu8FnT+G/RftfQZy34LtvOLrjlUaF3AUF4HzqgfQYH2TO0TiiaTsgrJsfrDQxS YchibXBiJtM0kVR2NhF3hO8vonUJe0RKShIaORrokgQTfyC0o5VLKXgdSbO43mAyJqmSFgaf 0DgyOPIcFhAYDHKruygkjBgczlIHaIE3Ng4iM5AstbTgxFWRk51KNZMXemwMxLtDmlCapGLD fQFEUWLJFFEZFBSbaJYcdwyejvrvmZHB5oxMYGmrmsuMGkRmWGh4wwwkpHF1ZoYgUCG59Wkj sJk5GV0N0gmrRjGRgJJdKswywUBl00BINy83I7xy3JImRRg0XWyXKi7DK8kYVQVCR3uRYWwh wDWZJmlzoKkh0jpj4K9JMp1G4cDyYqCiVtWkpRnS7MK1jiCDg4pLCJldJWyry11WyMXVaLIf cElx2DmL08wSIyIb7Ab5PSwyMEzs7lVRZoQEJ4+gdTRoo30d401DppVAw9PTgLU8IGTR3D5P c1vGZChfVJIRnkOI7yGhRZopuRyOQTJaZg/JTktGPI8mrs4ckJAjzTDbVslBISG4iGb9QXIe 6LLYVxoo2zYOFs2+vGEkAe1WHI7N6pbLynJe56WDUtmJXEOofsYdDdmC22M2IQObZBJQEeZh logNwlGpDKBCKx5kyzaSJ+wcgyN+wrGm7ztNatu2djytTN+NVRFGWhpU2tRjtKLqoRl0c9Fi RSzLzNE8m8nI4b1kKaCMHBC5U6mt5n6p8ge1wp1QO+C5GqLlhEGAPtt2SqH8NaSFARVEZI7N ARFBm6Ep9RSFST/Mw5Qfl+g6b/sHwA6TxEqoIUQYpKppINcXVwwMPboL4PUc2CdgqPM61HkR TcFt35v8f8vxYXlfdVoeYguoVDyCv36bZeTbwgNQCliEQOR1tvGPXD9YD15NyAfdYHvQPrQM QriSACiqt5Fed6QdA2Afh9ch/z7tHjMEahvgN6EQKPz2AMbiQCQ4pt41JPfSa03ZWTcokK3A G8QhIJIqXknEA4oiaQB6Yov0toxE8+XgZlwiSKktRWHRcwELsCCZeiJIdcQ9BLgSRc6tr02r 62QSAIattQiRgo0e6kNmx+GKajJciAAG7fbh8stzFdybDjULdYJ115rXrIAeAhsI5kIm+N7C h2v6CKXdmabdDzuCdIr8ZVGt1+8hwRbcvdlaq502TcvMlnoOIHTBy3U/HYHAkCSSET1qD64g wyC8oKEQRBRhIxirEiCosiCEJnzB2YwTZ16sitzMWeMNOsuBEeketZt8CNsmOpQ62I3V4v0w d8HjDLvj0GWvsFhDyJyzBNu/RsWpUOO40XwAMQkgJ5zb7NodDLOJ9790L9cYn2V64eRjq+au TEfdB80mwTJt66JtPMXpupu3fQvRzG2IZ/YRrNoOsYYEUxrAyrgJ6qpAk6aCicmlmD86wAMB Ei3OmxQKWD4Rj9xwGk1jDFYOog1AkTHd9z/IMbYAPz9wxpBlDpkq3SSSQ2PF60NIppVoFsbJ oSSYJwverxQyO7ftffXxanGO2NcF2awLcAoQ5rSWFkIKbgZmH7xpGoubMocLNrD4yL6DMPX1 qnWG6XtQCPaM8FQhiOrAO+EAZJhluTxBoNMNyT41EJHIgCVAziBaI7gHEEiTvUYCe22GVQsX LYwMCV8JMZBoplhim+8gTA2FiqILCIaoGZi1n4Ho0yEAUpoOiKbrohyuuiTSuA00UlNILn0x NCAR3LCuINoUZ/sAvYbpEzTj5LLmwQ2wkxihyvQowBBYEJglZpmDRYAskFkV1YHk8ZQtwuqa ImANIJpFbIWkYyPqsLEjlr75LRESDIcmBqJusnndf4biBszMzE9hrE0DaPKiiyIXarmMgdoP esSkgZsOa3xAU0nZnyu27wBZ7BPESxhYIKgommpURLAWIsEBGKgxFiIyLJEZGWhAwwlVIIwm Qp/cc5QQnkfrG5gi59YXUU+X+1+vYMZ96bcUpbhHqpa5yDYZNJGs1dBk2RT4DjMBERGxAtzN knZqgigw0M4YbosU1E3G8Eqaw5GO1rwLeM0m6bqjK97GQu+w8rc0QIaM2WxqjJiIJsdRVpt0 yp5mGsxmNKiGVQ2Kqc5mINuMtJFtLLI6GrxYN8be/m68Eal2NsIhhU42qcoYY1vhmsWzKNYk QakXVprcWwysrEM6/w2YCh6ZugowVURZcARBTu5dTCobRjHZmHaa1NReHpkoq4OkVMWlSzeX Y4mos3Pj8LDIga23OW3UuCoyJsljTXogmDuSVWw7ibglAMkQBgQ8JhSRmBKHK4pNTiupCUso Kho2PMMmmBZDUyDDA4oqqKpqHlN4RCPvYjqmFa+ByRIjAbYxO0ooDFsfU49fVPUMgwV4qnWh BVJBUkED9OmwdffPw9vOHTC5kSE88rR4vOG05QCotRRKIB24BtUTNTvJ+eBaIeaIaAAZvRYs QMhVo/pEWkypVJ0dsnEveNGlTXiDxG1TDA2l2V9hAX34PWEh3E6fVR9eEylcmkjGBVNnnQ7j FFKUtWE82QtuYWCPzpYiIMQ0wKwrd4bFEkpgfq8GH1M0kHpfMzlJzLoUeNF6vHbdQd7JaFC9 XZmYzGd8IEb9JlQYLSaSxgv2f8ZoT6RTZwYB2qHUnZCBF6kGHjQMMpOloO5G71MWkq/J18PR +/w7O2qCQ5pV5aqkzy9UA27cxbhZ8L1SekU7NMhDcBBkZNmVkFiyIkUisVFU0vLRnc7drrg6 cVdD0OIFME0lRaYDW6lfgva1ogc4ropYa2md4O7MW0riNtyINYGe/E2e1azbpaRauU/0JyFs 0LhwDNDv5J0owkIkIkYwAIQQ03mW3EmuDqkRyrVcYfBxucLJqVp82XZndzTYYPbFqxbND5cb 60xhVttaaiOj2T5iRiC1LA6TC3cdIQZps4m8XoLurZInuhd8uSLOnG05sBbXxm4CFZh+mOIv v6y2njRtnbO/Tm/v54zNExoyOWc4O0BbJh8Ou0Q8TCYYcnvyc6wbTCEhMlvGX0dZ6s2MrJEC WJaYe2dwf+1I5LDEmlkRlFqnJAogazu6TOCEdeNh7jaabrKoShLlaXcNvHMJIc5eeE9pY3bv 5Z+eYGxy+eis12uudZkzPfHT+jW2/AkJCgTshJBcEGtocooczqsJmvuW6Hzzq3679q7YxsLd KknMPvmcmGfuFfGz3k2OuNdWyVsaLCRXBXs+Zpd2eTWDT2vck79r4lLN8i6xPwnI1Hi5nHUr Wz5i9CpWRT62UUzPDmhvFmBMkm7biEXrTQvYLiwsasMEYWNpMuhaDlQNXnQrFy7FrShG4m2S lpTRUP1WzHAWQGVaJd88pJW3G7KodxafKaSg3QOmbjLjy+OMBIGkzJUO7MyTI6pG+FXlfCxt 0UcsTC56adzYOs5ZMMY5KMZ1Qoc8yay0ZlJNOmDNGaB6t6h2l3lrhPSTTTkQXGYecQqmdm3q 1Nal+azqYFO8ELZ8xowV0636Ntc8xxybX1dSUxwTQ3tx4qJVmxZRC0ITLEQNAmHAlODC6GkI wk1S1kymjgDR1KMqUKXcnJch0dRgwJIjIkiYoTc0n2xiPggdBkLCbIsgShphkexKB2s/NAsS Cuh+NMdsC4LCaOvE1qOIfkxTIMzn9rr8Vxh5QANAcMnsB5dtenjPHNbY5spEl3PUpUlegQOy ITdTyXOvfZg6N7Xc3vYl+UOepN1XGx0XQ6HKYji42JOTGYG0xQM6Y45g3wxnhjfa7TJENRTe MEoLDe5hYZemJt8RocYOKApzM5W6CwY7VqLE4TZrBpDsjuA0NjrLB9pt6DX9Z9WpQHvHX8HR VPAp8deCrduJwSQguKDnn27DVjKABNAsASW9FIgIWEUMj8+hyBncvMbWyCXdViJEmaM7BqEL BzE+8A1tqaA9b17KWleIlcjm5yqB0mU+551kSk5qJ9+IlGogHpPudwwsse5kKyPrsSrW2mGT WSoYAYASScbyG2DmhzGCkT5WgNNszrCOOBVwIYzczXkwLJ5QPDro2VAPvfKT5GSE0wF6ZB+N 9L8mepYqILO/eHiGRJwPVOJJhiztwkklitMGsenVxogEJMzCiwiqIQelkN0EnYBTY4KBfV02 3IjC42HUJqAoBPs4XMVEupEPzRUChDxvnV1nqOahKjAPX7bWmYHaC0QRIVAqBCSancvMQAOP +GxkXT1HdlwkPXHqltqCi/JbEM8emkkJ1JSYkhIkf4QWtS+mlHDStNRxc98yevRnpc172wQx OdORz7HG4isyxpUqbnHV66upsG+hRRQZhvGBnLrm6pVMBge6YGdydN1jDPp25BaIYxcDs37T tKa++gcc+D4FTtCJYxOGAiNaUQtKOCe/YOIJiJpAqApcEMxAqMRKwgY5EBEJRmmBDEkYhGoD mID78A0gBmQNGnSIaZpHEFB2A8XkMl4kCgJEQQYSKKKsU1IMqqyG0GPf8sgbGyKirKccjCgH cEB7YHvPeCMjIwQEfxJJT7U5dSbr1JoA4PuwR6MiLnJPTGxjZH4CSitO/6bHYGiepAru8h6F bHltlPTSEuRIB0kAGQwEm0kGfIVLRhlj04ywImkNTikCsIgwgVJtfW3UKMAQrEYRBmIGEhy/ Pawgm4iJq0jacMQhQ5iKTQM7HsrGjOWZIwau6NQ33MmvAD3RtSlC0XLNAksq1YyYRTjt0okC GCt9lCDIDEGKaGmVC2AsCUiuyEAiof28fwZI+sJ0QjDgxDjJAPbAOo7SD9OrzZnyjCZNNd/p RaRIrYDGw40CtmMqEJImGNBiXaiw38K4lIGURHzgkUYtDISAkEGjGhASlgvPOIbisBINxO4w 0n9kSdQEEiw7D+bYotrkDsO4DiBM4I1193vl1wbotSVYyMWgTnXE6tZkeVXgCmGcF1wEpmqk 2wscKKdkMrCUoRJ0KAdJmuIN14i+TNfCZkF9gNrZFRiixylZFAKgVIYlQxmZQBYqiw+BJaSL DdISXLAC7pSAjAm8GISc/ia4ADnm6ooLDmhVBHnQoDI8EQWQDY9Xoaej6A+7OXAIMYQug2U7 1X0lqqqp+4hYyfS+8T+wJoGMNyyiLFEfal2t5TaGNUNPVtdlwgMjPOph1SYAD9r1zbfW6Qkw wFOVUfkFIkRiwGM5wGgpgUIovsllpSxey0ZFIoiIsUZHVJJZIKosBRkYoIDENMKIKFIJJVUE EZgMsO2BaDD83UwBhkFJ6J9n6cLd3ajeT5oSISSIJIhYIQP1WU5gc0LDpA0WGQ/OyKCrIjJF AWKpFAFkiycsFRH3UDcwYQp7V0KNNFKFOhyZBEjDuCZ+WCAmuSRgZSGsqxzmKg3L7DB4YAJo yIwjG2FETQiuTGLAkPouCH12rlx1AqjDvayNZAsObFgsUk+aKeuXEX7CSB9XWmgOie0NIhrO 7ipMblsy3s+NwT6NG2uWMBN12BKRJMNyhnFrKGFtCJSAk7nmgU+PPA3k0busNZrUzEeVFRUQ RQqSxBUY7BmxR1B+mmtwSDLNMcELFPVsaHBgbjLlxzWNLUQC5geaPq9PMfVBK7r+0lj4ppWc u9mIioHPojX23CLVxhQ9VBNCRiHg+vWZzba/7GxqtRlCQGM1MSkjTxDDpqLhyCxYFEu6CEkf VZEmZuxmLOjN3k7kDo/KH42Kwgw4vaTs9qQPWRTYrw2nA4dHS8jpzTOWnS6vFr8PIhwoQ9kG RWQR6R5VSndFZAFmIE+Jc7pc7T1ZxPnvpihXYAYiZ94ejnN7fuGyqPTGRSQeiCSJIsPMURjP NDzQ+LFPekCd57UKwWIwIiKKLILAUFYj7UNkmtQA4QC4A+i6sA9cQOUpeHvoDJzKoDGgrMmk LUPIPtNNPRHdHAGg93JTYD6ENE1hz+5Jqko9cC1inHJyXzUBvEKosliCxPD3Tz7opIoCJJri TzGB62iQqD175ecodVj9weC/d+SPsTG1vp0+OHEoSE0o1NeWffHDwx0ImzZq77gK68TYWVbx wg7uPACvdVD1wxOdKC7IdqDTSifDUgpShIc5bA/LaAsUC/EswDKawzQGpMGKjkCkSKRTyjDv AgQiSapEyMcE4S4jaZq1IZEYEgrYQoRiln/hKT2en9nUsknqQBSRYIxRERRkixBkgehCEUlY sRWLGCxBCQSAZqehgHEH1zyrykQpDhnb4FCBO7l2SxFGMiogxYikQRFBCbzmOBAbWOX17Ow6 0JcWkSJpLTYeQEKQOLIRR/JSoFAYQom24t1NkaCPfaiEieQ0wNQXMJBwcwxVG+8DvRUMQbt4 VOvE3FL5G6w49UCTIARnJVfZEIdPI9NZPMD3n2/Dbidr4XqYVcwTCygCGESUjqqN2TEQnpkK oiIZ5xYIjNITVtRJWn2cC7sYI+d27JcpDxO3gA7NwrmPUIotjIijG3WWkwkyDikb9Bq8LU0z nY9O2ArCKGUxb0NDW0SWjC4FEiNykQxIDW9OPTM89fBIBq4Xoa3LiG0ZNmwQYyiLBZIsIHe9 B8MlFjARYjWSxEiINoFkQrJMzJC0RSELFIxijyzfA6PfEJsBzEwT5CyYc9T3ie5hPvpiCCJH GLPsGfziaECRFz3E4U1vtVqo8eJ8hEiw20aEPReiBRL+BI3b8JqfUagtOHjCqSVa26MwhVcD HHGb603WoqIhIurKoPFMuti5j21fFoMjItI1hU3mohkIJcNXi6xopwhTCjSXZCxBNhpOD8Os DQm0bQW++AqhUyU5S1cUG9UsIlWF3UtkUOpOrsoPsJkhCdmV9ABoPdf+mr3k6zimYpbxkCIR AgyJJI/1V2k7AyMexI2laF9Ba4C1y1BkhGHzIH2fgP2/l9IYmfBI9DM2eR73oaN40mQh1u5o gEE5t7RLR5ONVGHgeP3/0rDHHywqrR8uHmvihDGYkSzBIxxh4j1eCNup8YGDuClO6BazFAYI mrXNUIaZGIZ2BioH1PqCcM+rx5FA+Unx+EMTUWDrr6D6z6EUWXi92An+OmCG46cysooOIB43 YbbDQlsE1AMFiwUspxQKxhKUsCurxJ36IDUUkAFnb8NozRNl2LcC5GxAkhCcBXKUERCLHOv4 QuvkA7eyvfYRFe0ItncjCuvdUq3ootvsFFss2euzmjgYBjl7Cfg1GkXUSTfJygVH4qN8LDDM 2la+PQJj1vVCEJ2wRahIrBFjESQWSotQFcusJl5+74DtImvxSawKDMdgQZIEjsK18K4xtA55 8WKjRqmfFS4CQELhYMpHgSJIsCC7zFyefns7Q8uz76ZPSPGINRkEkFJAHVDhyqDbw5gYiE0x tFlBCzf78B7xC+j4YYM0RKNOuszd7nQt5Dly5IgGIIlEAZAE7On6cWdxpDmmACKaFvmo9DZW noPGgonhZJkLpmmUS2qoLEFEFgYJZylv6+i/e32VNJRE0LrWbbYpN7YhUbRoexXSG1MVsM2d usbG29qrRmoQ4S3CQmjU5QS7TJLeHW8Q2dh1uL4jQQS8kBO2KpCpaJdoYHbKzJYmUYB7Za3n Q101ZJOJCoLBeVnCtzJiKuBQwEHJm70YxaThIpVswtjbvPBHMw2wUqcr0w2pDEWIiO14dsUJ aCmFVDNcrXjfCjbsUuQdC9JIsj5qvHzZ0kvPs1217hpDgYeEgzC7WDRhDK3WylCg2NA7QbbH tZQ6vVNp4XCs2o6FoUygoYGdy5cYvhAsqa4o+FhpDG0RABnp5Em9eR0dzrxS5Vqc3lq7pkZs w3w2OrQk684iqbECTBVQNCCIgm+tispkhqAkiTYBlmaBFUtsqyHsSmxwkBILiyMIbnA2Jlrn SojDReUQ7NxaxaKQm+7Rui4GAd9gk7sIjBsk3Exgm1krP9L+LYpszZW2itSgvipX5f7L2JwH IHt6zFoH2WkynURMvWCGQWEhBjstINZQlYmSAUkRBccywMJLASSCSyWQoEBCxu0iDcEC5AkQ DkgB0JV6HWlxYeKInsgcyTly3hPTEF/FfnuYuYZPDwt3Nk2AAoirCAkiBIMgqJyEAiloAdFY U6DkukmmHOYH31pqRISMDViaYEVxERIWkCEHTQSlIqgThCSm8BAth3ydGCiIHhEp208YYAMS KTtPZhgixYqMCMEGJiFERRYgnpyzXz/X+zvI6prjNw8NoFDjqoxqFQYVjKwhCBdIBzKeHUIm Ch6GTYngrFBE3HgejZ6ELv4E8vIh6yLAWCIsYhzREKUVviypI5aMlbSxlKjIKpQGtQZAkSG0 hiDU8iAFAoBRk9gMkNZNWkwFFAFAFWIgIQSKMFYCgqKbNxkCsVBQXVklLZKUsCG0gQGDFIKB ALBSKtCFtkACxUukpVT3BMNwLEiIRCIEJIgyKGBMbaa0YSHolQdgMVhFJONRteDFnQZ5QUGN tW1VUDkugufRdQ6gBDFpHC8kug/xoe+WO0rAvSx8vg2Ev03nwwfzxHCLhua0lpUwql1RzZlO uNo6eGON5HJkOWiwWBm1mJsguK8Rgsnxu/v54d2icgOTXzh489bhqOLdhiMDoaUCBBhCgBSI IFKANIxhfvmycWoxBkhl2lk0THBoRJBasmxghCGionqihIiPRAEkx1ZFo+Vvk8UR7xecGASS MVFggge3Ce/D9KYQGCCqIkjIhIhvRdf4w6tPqfdgdfEaEiUnGJ+LVrfPOfsyAyV1GyCSDFBI kAT64BIpJIEIqyKKSLoqh2QI0IBigJPuHT2znhDMGwqEUCNoFZFqQKgIyiAKVE0chMkJ7hWa SEEGCcsc07crUgBIVJkUj2RXLDE5Lipqfg0hiO4yQVT8UAkSRJAXUiQiQikEhFhGAnJbWZFv EUoWCHPyP0+XZHxcSK9lgIft8jgHaiBpHPnHJ6GggHBiFUOFmNW+xnmDer7w2CoNgTMFoMFu LnmbQDQIa9DD5sUxsk6UiV1Qjx7aURNcvMBIqnliYspESkk3QPbEITR1x1gAU5IK989YqRUT WdAA9KeaHyVuWJD2KFmRNjCGYu/d415joicydClHTPj7p4oz8KJPID9d+v68wDunCC8MfmHh sjNfPW/qQIR2shvG45CMg/BDA7GgPp+XEfiZw4VHoBnsIIHmfZ8KFakUAbW0IcAs96hPrxMj lj3OlWLWjT8MNsGK7dA+7uTXUNUibh3CWuocnkkOJF9ROMkPiANx1hgaZPx28pEz8lh7XQPw Sxir77Cg5co2JA5vI74KSAsjsN/l6E88T9kKCAwdyUu8J3SxgWDxY8oxa9y3KwkkExw77eEG 6mBQkAqmQCEXKFkNw6uRcvsUqT562vrZUu/kGvwPUP2g49aPsOGCIwooTw57eUielOi+le/M 6xo+1urzjvqpQaxYbuwwwsbD3hO2dnU5cbwz008wBDTtO5FN0KJD9PzybH4ztCz9mlgJBgdj Pne0OzuRY+P39SaSfIDRQOoeYqrFgqwshNjnFYwZEZGMGeugHSdV86Cijt6w3+7KnXmTn0ci ouGMA2LsBkQ8uiIwYtZ9+bJQMBjB16dttzQqyZ9RWXFX3iS9d2QpNIwcUBrvpRN5GpkGIMZD oDKgKBSnGxdSDoMcEdzeVmzI0Nnk8dGMY3M4KZx5vmoByGJoUUzGUqHYDKvoOhvMIYVrhIyM h2OJcth5iqTKJcyb6QjADUZoxSguEG6ZJR7zJUkMmfD0aH5CVBTLEA5WgZADnAkWMVA2dmVO VEhlFdYiQa+iP2Hu8Math9T4ilzBMJ7fDsXoSySUSKQjY2RF8vbk0ZaK7IbG2sgYhUsyT922 wgNRBLoanjOKd5UI+uB1R3+KpE9QTq6zrU+YYSEYt0A8NqGqz65zb/LjT0wkLV0WQLxLBAx2 fMUIKZBLpXQWdc167n20bXArp9NnONrHdYCeCDwA3zyhFSEHANh1FDSk1kKZBlPhCrBBePBp dPvTXZ8u+ipj6gCuY6yC5Kh5FZSHYJ1wtAC0E+KHHMA9BhAwQPQJRBYRT5JgwCRIhC0UhGEC gfocUAgjSnYBqNPmQ95AJIQhCRBjVaZrzCGaekxA1kUDEBU0BGIneI1MBcCBEhGAZAbIi5sg QIR7xPnVOwm8zMDUgDPNmJ97NA18GBFA6VibRsIL++CbwhMFTCRhCl5cmQJB2B3vL6NDcJtA hBSWQoWywqgCyIwpAQiUJdkAzD2zUkTN6E+ESfAK6Bmq6iiNSEd+ciFDJAO3qxw+6CJdxp+b TblLhRKrz0mpQkO7tN9E9QynJ3UzMiY7CA/KzFI8b3eqfV1DmLXTn5jSmpptNM2jnhYGymAy /GqoUMNI2vOLVIIybGEZsrRqkMIQbrlUURFqdPjXVbp1a2uOvXpNMcy8JuQwzjJMZEya2nio JZnRT3pH0e+t7dqSw44shP8tdldW1pmeG/V2zN8oGfOTJJN6qxy6SLM1BjBYng6PuqKZk7DI Yzh7xfZ+C9VI2Pc7Uk0YW6CIdrUPCftJZ0anN47ve5I004umMTLebhU3NGCGcXR0gJdraIVn ifLnoOHc3tLbWWacMh+WURZULDReJOUUERU2M5yu59CxZEbNMQs7J7tvqEoIsNMdCyW6N/OV oaPMbJYFlnU5Bo6DLa5WBR0BwCzdKY5io5jnB+yJKpDaYPDRQdQm8PLBAcqefdXC8wjJ27FG ULJkzTcFKU9wwMMCrcYI2GJZlIjZe+dGbiLkBh1R3DylBramqj7PV7vb7JeuI+CPCdcPIean OscqiZvLB3obIRy7N3qM7PsvkYN7RjIMR23sB4i9CwjM6KE0gUfPTI0mVPaiHBOlSHVHCGee pdzl7vlcYhKUqnau7RIMQD0cgnzhxZVQLCLlH6quKjBPBKDHrUsIxshD69IzHGuyD6rSMWHq SLot8SPBIbiDyIp8cLILHcFUEA6DoDdAbpdQ6m0/YgYEDiT07FEEC0hpe3VgV9hjaYw3oawj wDakEmZYKUxqLEcZIAtVwBhhN4eLuHPqKCQQE/Gw47ZSKG5yDRMQd0DufucWeacuRRnVo9mp sXMOLjNSyGpEVvlFwwIklLKox+FKSMDKVIixYiiBwrKCglkdyHxzOFnWBs5OOgENwBZhQExr yffe9SwXk44b4uYOE3HUxfG5CiSIGzHkQjYqZ4wt1UxjxwNC0iMrSmihGmQK+pi01QU2QwYb 7HlhufTa7zYpDuYvJE9VCVTZ7ODDoXZpnTFKYWw3TTHjy126hmuDa4MNWBWpdg2zBnS02yHF qnKlbxKlJRo4GFYvWx/U5VGuW1DcJBjNcQqCkUZsc+3amcGyVDMRsNI0ZCjRuwDZobAOxDnY pNtTaaodNrJFkxGMx1bN/oem/Ts5caNxshMdo9FRw1rLqBDnaBgDHRshrwm/SGzTO0CcrKa4 wRIcudhzd2AsO5CXpszEMoR72k7LdJOQ4wrCsGd8as0MLEjGAFJWKLGHWZpDGaE6bWGJJukn ZbkI5QxUsOxymI2TY1cvWSRPEw7Yt1qx8ORLgQgtNwtNIOJD5yXWbZnYEIQyEjLg0KcqtbXJ tS8nTmc7DQVDs5cRTEurZK0GFsfkLRmxt0qVPuuRwYAsAaBDSHEkCPCVcNPgIRxq2so5qd5N PCqlU2A2BRkOTbYsgHISqekYasVmgsEMmoBuyBJKCiImoULzYGrKIKQglA5TBlMETpSg2BsQ o5juYSCpISEiJAdNozw1NXAoSOgKD9iDQZEUyAuhrgwCQ1UtVErCpVDVl0/ccQGCRI4IWRjF m0Dcptt0qJNJgQIXpLpgHUHUPjYnRZN2pJoAGx6dUGJIT2XFTrHSM6EtAeLnu51CESZBB059 XFVH6hmIQlaN3Ui31yYMLZhKQpVlW0lRbqgSlpq5S3B1O6AsigHniJ+yCiF8yjCY69llGdVZ YA9e3FguL6tOucIdkOCaZndw3Qs4dSGIMgqogqISbWnbFBgNsIsBQKM9SBcCkCVJRKgO2SeZ Z2B4rhKZCLIMgpIiyL8Hn+mWI4700QkAICJEYTt8dpo+ps/Sn0IHVWid0n5znBGMEkIkSCwR TfaL0hziF0Qx9MdXm6zFT5/Xl87qfIpwMEigmz6RkE8V54VSXN7BpLBpO8jApRNA82kGqOFk TDWQ6UQhQPAgIQVGKkgm9LoUIa8FhDkED8/sNLSHBIjTQY7T5DRA4iIj2VpYCML81ko4UPPD y9e22+1ZAtz5zNuD3JHRsOaxEdG76npjsejvqQ7dEYpvYSVBoKKUhDBNkNSIbqpU+YHyJDyq f1y96RSQT7YDTIiZwp96vzIGoigB+qApGCfN7dObdgYylfmO4NNRzb+IGim79d8Bf0QkAB6t lWgyfIbwxDP3DIMe5PC04qYefD5YPsNq7Ru3owaJaUar5KtJ19dVY/CHF7TJgZ2h+KC9h0Yr vKD52b+xwQulo5O95ijx+GKI/moHNs7xpekeinaWAKoO5T2Pl+4/4hq3J3g1AqoFVKKg0RQI EFjAeY6QJUgH3RC83bOYPNTxAPRa/iR9IlTIWEiMEgpFYC+rTsieD6gMiOboEfRZpQ0gQIhC RCPV1F7M5tzqkQZbb3OEGMr1MiQ/QxYSGJEHifc9h8MDZABQKQisCFIubSjOIK1krzxA9rAv X0/DxYq3JaS+328qniSIdGg6xuCTfjvtgpDT85b3ssBgizCpZOPt1J2MPUzn2Uha9Ko8ogaP uX3Y+7C5alMlCDsTKihdfTQhSN9z0T6W+F72KMOXt8UetpIZjXvBY+B3zEDFYZG/kaTDAsEU +YpYYo10DeBuEnzgWbzf7qPdyPHuzGIqCKq5lkkkkkkkkkknl6vK02ImDDW1pLFJEZDYDYCm IJG2sjCMH5c4ij2+XNd6M3TsD8FJ5RA0AkN2dUF4lsz+il/osqHZAnVsOSKiqhF4eaYmMweY wwEcSfZ8SehiDxK83w3v4QovIzAvUMOuvgiEiPW0PtgfPrx5ZrSed3xed8M94dodLDuJqVEE wZt3/I+iLFhtpp6CWASYapo4A3ZrNI404EczMeG8/uIczswPdF0AX2ED8ANyRY7UHZw9/p8v kQR9Xod8E7gClGoEwD/mNBL8T1wh8XxE+vm+RQML83PfAxZ805ftcHIODXImRCbL0Q1Q2rHZ U1oTLUYoQIdO2FjEtIoZ4zmdXZILBGUOCaMvLYoP2ISGL/jMy789akutuCvW5m22ToxSLFix YsIsWLFixYsUixSPSF236czQbHHKE32DfivnNRwoxdd+rZtLy1I5Qf/xdyRThQkC4VlpwA== --------------030305000706090804030808 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel --------------030305000706090804030808--