From nobody Fri Jul 28 14:42:43 2023 X-Original-To: freebsd-drivers@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4RC9Nn6XNpz4pv2C; Fri, 28 Jul 2023 14:43:21 +0000 (UTC) (envelope-from marietto2008@gmail.com) Received: from mail-ed1-x52a.google.com (mail-ed1-x52a.google.com [IPv6:2a00:1450:4864:20::52a]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "smtp.gmail.com", Issuer "GTS CA 1D4" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4RC9Nn1scBz3xNH; Fri, 28 Jul 2023 14:43:21 +0000 (UTC) (envelope-from marietto2008@gmail.com) Authentication-Results: mx1.freebsd.org; none Received: by mail-ed1-x52a.google.com with SMTP id 4fb4d7f45d1cf-51e28cac164so7191840a12.1; Fri, 28 Jul 2023 07:43:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1690555400; x=1691160200; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=DKPcqMI6DCvu5+/zuDepa6btNmhT9Ijom0fV3Eoc6bk=; b=gk1HR55rbyGtAur0c77e36hhFFKKoMJUxvksg7TKmlbJkJ802kuHQw1PmWyEU0V1bK SKpT0QYOUPOWOynWUbr/CVSBuWgel0cFJJnuIlPcrkGnLV4twdSMRBJV29F3J4ePovEG veGLpXeSKLnEIpXfhuN7tI6T0DecJYhhV1jE8dYq4pm60zxzU54q++xTwcCYG3kiuApn /i8CKlboVDpCmIsFH2vj7OaWzOIV4s8F3RJb72K0dA5PJzgT5b+CiQhwPJozujd1lFtY BAlpBOBC9HgLYKd3n7ala7PK0uuS2vUvG5d5cBrkOAd4fs1U/h+DPsFNQvWcTdg68q4V bCkQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1690555400; x=1691160200; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=DKPcqMI6DCvu5+/zuDepa6btNmhT9Ijom0fV3Eoc6bk=; b=fsCOzPowzAarw05NP/kIAD2WMPyMZZQLKqdwlQ/MEiXnjaK99metVG59mIAEPh/cYQ g+bcol2rC9NoAkCurWUmDxzS4BE25Uvkvf5AA0PpVSQ8oWwhnZl6gLVM3TzHd+1hRabL MrFh8sDymSi7cXmdWp5giHda76QLMDqQBj7o6tWlWtfZjhi6EiNMzAukFa/BZdVk0e6j ALpV3Nrj0TuzpbLGt97apysjhqz0hPVv9TVNztx5l2RXF43badS8ecY2Ouwo8gCnle4K 1UXGLi3+n5nLw8xP7pcQc33d/CUL+rJthGVCvzWsdBqNSCiEoH+JLDlIyBv8bHwJYjZH TkRw== X-Gm-Message-State: ABy/qLZPMLeTChCbQWy6ActZMbBF/eJpe9bTr6d7sAgyWWkHNvN/pSo9 dOF83XSs+jV9FPOXe9HWhDl4673W621LnSlHAPs= X-Google-Smtp-Source: APBJJlGzvQ0gyAixh18rpHL2/rk29Z0V/XjgyVMotFotMAWD7phqGL96OLppzDYG+yzvh9Tht6kTdcTgRzjLBDE/MAw= X-Received: by 2002:a17:907:7625:b0:989:450:e565 with SMTP id jy5-20020a170907762500b009890450e565mr2730009ejc.23.1690555399419; Fri, 28 Jul 2023 07:43:19 -0700 (PDT) List-Id: Writing device drivers for FreeBSD List-Archive: https://lists.freebsd.org/archives/freebsd-drivers List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-freebsd-drivers@freebsd.org MIME-Version: 1.0 References: <5b3e32fa-f5cf-b965-a3f6-2788a1c6ef37@FreeBSD.org> In-Reply-To: From: Mario Marietto Date: Fri, 28 Jul 2023 16:42:43 +0200 Message-ID: Subject: Re: Virtual GPU for FreeBSD as guest virtualized with qemu / kvm -- best alternative ? Cirrus ? To: Jake Freeland Cc: Ronald Klop , freebsd-x11@freebsd.org, FreeBSD virtualization , FreeBSD Mailing List , freebsd-hackers , freebsd-drivers@freebsd.org Content-Type: multipart/related; boundary="0000000000000e53c806018d1a9f" X-Rspamd-Queue-Id: 4RC9Nn1scBz3xNH X-Spamd-Bar: ---- X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[]; ASN(0.00)[asn:15169, ipnet:2a00:1450::/32, country:US] X-Rspamd-Pre-Result: action=no action; module=replies; Message is reply to one we originated --0000000000000e53c806018d1a9f Content-Type: multipart/alternative; boundary="0000000000000e53c606018d1a9e" --0000000000000e53c606018d1a9e Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable In the last few days I found something better than the simple -vga std. It is : -device vmware-svga,id=3Dvideo0,vgamem_mb=3D16,bus=3Dpcie.0,addr=3D0x1 qemu supports it and FreeBSD,too.... On Fri, Jul 28, 2023 at 4:33=E2=80=AFPM Jake Freeland wrote: > On Fri, Jul 28, 2023 at 9:27=E2=80=AFAM Mario Marietto > wrote: > >> Thanks. it does not work. This is the error I get : (on the attached >> picture,you can read "segmentation fault"... >> >> [image: unnamed.png] >> >> On Fri, Jul 28, 2023 at 4:18=E2=80=AFPM Ronald Klop = wrote: >> >>> On 7/23/23 16:27, Mario Marietto wrote: >>> > Hello to everyone. >>> > >>> > >>> > I would like to virtualize FreeBSD on Windows 11 with qemu-kvm (for >>> Windows). I've end up with the following parameters which are working : >>> > >>> > >>> > |I:\OS\qemu\Linux\qemu\qemu-system-x86_64w.exe -accel whpx -machine >>> q35 \ -cpu >>> Westmere,vendor=3DGenuineIntel,+pcid,+ssse3,+sse4.2,+popcnt,+avx,+aes,+= xsave,+xsaveopt,check >>> \ -m 8G -vga qxl -audiodev dsound,id=3Dsnd0 -device ich9-intel-hda -dev= ice \ >>> hda-duplex,audiodev=3Dsnd0 \ -hda >>> "I:\OS\ISO\FreeBSD\FreeBSD-13.2-RELEASE-amd64-disc1.iso" \ -hdb >>> "I:\OS\qemu\Linux\FreeBSD.img" -rtc base=3Dlocaltime \ -device >>> nec-usb-xhci,id=3Dxhci -device usb-tablet -device usb-kbd \ -global >>> nec-usb-xhci.msi=3Doff -smbios type=3D2 -nodefaults -netdev user,id=3Dn= et0 \ >>> -device virtio-net-pci,netdev=3Dnet0,id=3Dnet0,mac=3D52:54:00:11:22:33 = \ -device >>> ich9-ahci,id=3Dsata -bios "I:\OS\qemu\Linux\OSX-KVM-master\OVMF_combine= d.fd"| >>> > >>> > >>> > Now I'm trying to configure Xorg and the xfce4 desktop environment. >>> Since I'm using qemu,there are a lot of display devices available to >>> try,but I don't know which one is good for FreeBSD. In the website belo= w >>> there is a good list of all options available : >>> >> > I've found that `-vga std` with the xf86-video-vesa package works best. > > This combination only appears to support a maximum resolution of 1920x108= 0, > but I have not found anything better over the last few years. > > >> > >>> > >>> > https://www.kraxel.org/blog/2019/09/display-devices-in-qemu/ < >>> https://www.kraxel.org/blog/2019/09/display-devices-in-qemu/> >>> > >>> > >>> > On FreeBSD I have installed the package drm-kmod and it suggests to m= e >>> to add to the rc.conf file one of these parameters : >>> > >>> > >>> > 1. >>> > >>> > for amdgpu : kld_list=3D"amdgpu" >>> > >>> > 2. >>> > >>> > for intel : kld_list=3D"i915kms" >>> > >>> > 3. >>> > >>> > for radeonkms : kld_list=3D"radeonkms" >>> > >>> > >>> > qemu does not cover any of those. I don't know which option is decent >>> for my case. I would like to try with the cirrus display driver. Maybe = this >>> one : >>> > >>> > >>> > https://www.freshports.org/x11-drivers/xf86-video-cirrus/ < >>> https://www.freshports.org/x11-drivers/xf86-video-cirrus/> >>> > >>> > >>> > |So,I have installed this package : pkg install xf86-video-cirrus >>> > >>> > | >>> > >>> > I've rebooted and I have changed |-vga qxl to -vga cirrus| >>> > >>> > FreeBSD recognized it at 0:1:0 >>> > >>> > >>> > 2023-07-23 15_21_33-QEMU.png >>> > >>> > I have created xorg.conf with this content : >>> > >>> > |Section "Device" Identifier "Device0" Driver "cirrus" BusID >>> "PCI:0:1:0" Screen 0 EndSection| >>> > >>> > >>> > error : no screens found. >>> > This is the reason why it does not work : >>> > >>> > >>> > 2023-07-23 15 49 44.png >>> > >>> > but the module seems to be there : >>> > >>> > |cd /usr/local/lib/xorg/modules/drivers/ ls *cirrus_drv.so* ; >>> modesetting_drv.so ; scfb_drv.so ; vesa_drv.so ;| >>> > >>> > >>> > What should I do ? >>> > >>> > -- >>> > Mario. >>> >>> >>> A https://www.freshports.org/x11-drivers/xf86-video-qxl/ driver exists. >>> It didn't work on my qemu on Mac/ARM. Maybe it works for you. >>> >>> Ronald. >>> >>> >> >> -- >> Mario. >> > --=20 Mario. --0000000000000e53c606018d1a9e Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
In the last few days I found something better than th= e simple -vga std. It is :

-device vmware-svga,id=
=3Dvideo0,vgamem_mb=3D16,bus=3Dpcie.0,addr=3D0x1

qemu supports it and FreeBSD,too....

On Fri, Jul 28, 2023 at 4:33=E2=80=AFPM Jake Freeland <<= a href=3D"mailto:jake@technologyfriends.net">jake@technologyfriends.net= > wrote:
On Fri, Jul 28, 2023 at 9:27=E2=80=AFAM Mario= Marietto <m= arietto2008@gmail.com> wrote:
Thank= s. it does not work. This is the error I get : (on the attached picture,you= can read "segmentation fault"...



On Fri, Jul 28, 2023 at 4:18=E2=80=AFPM Ronald Klop <ronald@freebsd.org>= wrote:
On 7/23/= 23 16:27, Mario Marietto wrote:
> Hello to everyone.
>
>
> I would like to virtualize FreeBSD on Windows 11 with qemu-kvm (for Wi= ndows). I've end up with the following parameters which are working : >
>
> |I:\OS\qemu\Linux\qemu\qemu-system-x86_64w.exe -accel whpx -machine q3= 5 \ -cpu Westmere,vendor=3DGenuineIntel,+pcid,+ssse3,+sse4.2,+popcnt,+avx,+= aes,+xsave,+xsaveopt,check \ -m 8G -vga qxl -audiodev dsound,id=3Dsnd0 -dev= ice ich9-intel-hda -device \ hda-duplex,audiodev=3Dsnd0 \ -hda "I:\OS\= ISO\FreeBSD\FreeBSD-13.2-RELEASE-amd64-disc1.iso" \ -hdb "I:\OS\q= emu\Linux\FreeBSD.img" -rtc base=3Dlocaltime \ -device nec-usb-xhci,id= =3Dxhci -device usb-tablet -device usb-kbd \ -global nec-usb-xhci.msi=3Doff= -smbios type=3D2 -nodefaults -netdev user,id=3Dnet0 \ -device virtio-net-p= ci,netdev=3Dnet0,id=3Dnet0,mac=3D52:54:00:11:22:33 \ -device ich9-ahci,id= =3Dsata -bios "I:\OS\qemu\Linux\OSX-KVM-master\OVMF_combined.fd"|=
>
>
> Now I'm trying to configure Xorg and the xfce4 desktop environment= . Since I'm using qemu,there are a lot of display devices available to = try,but I don't know which one is good for FreeBSD. In the website belo= w there is a good list of all options available :

I've found that `-vga std` with the xf86-= video-vesa package works best.

This combination on= ly appears to support a maximum resolution of 1920x1080,
but I ha= ve not found anything better over the last few years.
=C2=A0
>
>
> https://www.kraxel.org/blog/2019/09= /display-devices-in-qemu/ <https:= //www.kraxel.org/blog/2019/09/display-devices-in-qemu/>
>
>
> On FreeBSD I have installed the package drm-kmod and it suggests to me= to add to the rc.conf file one of these parameters :
>
>
>=C2=A0 1.
>
>=C2=A0 =C2=A0 =C2=A0for amdgpu : kld_list=3D"amdgpu"
>
>=C2=A0 2.
>
>=C2=A0 =C2=A0 =C2=A0for intel : kld_list=3D"i915kms"
>
>=C2=A0 3.
>
>=C2=A0 =C2=A0 =C2=A0for radeonkms : kld_list=3D"radeonkms" >
>
> qemu does not cover any of those. I don't know which option is dec= ent for my case. I would like to try with the cirrus display driver. Maybe = this one :
>
>
> https://www.freshports.org/x11-drivers= /xf86-video-cirrus/ <https://www.fre= shports.org/x11-drivers/xf86-video-cirrus/>
>
>
> |So,I have installed this package : pkg install xf86-video-cirrus
>
> |
>
> I've rebooted and I have changed |-vga qxl to -vga cirrus|
>
> FreeBSD recognized it at 0:1:0
>
>
> 2023-07-23 15_21_33-QEMU.png
>
> I have created xorg.conf with this content :
>
> |Section "Device" Identifier "Device0" Driver &quo= t;cirrus" BusID "PCI:0:1:0" Screen 0 EndSection|
>
>
> error : no screens found.
> This is the reason why it does not work :
>
>
> 2023-07-23 15 49 44.png
>
> but the module seems to be there :
>
> |cd /usr/local/lib/xorg/modules/drivers/ ls *cirrus_drv.so* ; modesett= ing_drv.so ; scfb_drv.so ; vesa_drv.so ;|
>
>
> What should I do ?
>
> --
> Mario.


A https://www.freshports.org/x11-drivers/xf86-= video-qxl/ driver exists. It didn't work on my qemu on Mac/ARM. May= be it works for you.

Ronald.



--
Mario.


--
Mario.
--0000000000000e53c606018d1a9e-- --0000000000000e53c806018d1a9f Content-Type: image/png; name="unnamed.png" Content-Disposition: inline; filename="unnamed.png" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: ii_lkmodv4w0 iVBORw0KGgoAAAANSUhEUgAABPoAAAFaCAIAAAAIPKSyAAAAA3NCSVQICAjb4U/gAAAgAElEQVR4 nO3dUZajLLcA0Oq7ej4ZQ0buGGpG9yGr8+VPlACCHHHvp+4S8YioEBT/3G6339/fHzpYliWx9H6/ HxYJHO9q9f9q+1tK+QAAx/u/0QFclLYdV3a1+n+1/S2lfACAXm632+gQAAAAoDGjuwAAAExIdxcA AIAJ6e4CAAAwId1dAAAAJqS7CzDGsixvn+f5/AsA8bmeQ1i6uwAAAEzob3rx43epsR9F7BRDOtvm G41QkvP5/N30sAPa1tfwgsefdurg4zt78eZcih/OuI/74z/7zWh1czvvv6W7sGeXz35+XUd+e6DJ hlQJOJHU6G6oZzBCBUMEqgTA1ZRe+d0prsBRBhI2R3ef147hv2Dd7/dHMMuyDA+GIOLUTxjo7OMM X+N/LDpvW3Zn/LMe38dtffWenj/anx9AtbOX/0VoDwBp66O70a4dzzDO2+ihhyD1E4DejOuSoD0A bEm9uxvq2vEc4z2pUIV5QWcv/7PHz6rVUa/81c8+9HT2+Hs7e/mk418d4M3Z5dLGQHXj4ezlz8F2 Xs+Bfla6u8F7lR5pBoCrKb31ayoA8JMY3f16n8jpFX/+apuffnXp8K74VgBf55AsSpaff91a+Ur3 Nz99ReSfq+SUbdHMqKPKM3OVzKlK9x+FHse39GDl5J+/vwfPBHuAPXu0tbRf+ZdGWKdffU4kTuS/ R075xDkft9bNuac/f8IOdZad8fzSHvgaUpHhDU6gFd/dLZC49vW+LK7mP2SjiUUNy2fIbWZgeQ7Z ysDj2ySehpvm5/zl73qVsyhO/lfT+/zSHmhLJYeZfPnubsLVHitKTN+1JCeOLpqZM/Er5uo7TulV 9ijd37ryyd/ft8T54wCZ5T+wPNP5F9Wf9FYyUzY5vqUHq67+5O/vZJqPgx1c/sPjr9jf9BDW1vW/ TubjBqtpBp6PRZt45v8Y4N3a3BCZ8adPitU/djq/tAe2Vq/TuzyBgxndLbPVoX04cqNfF/XbdGk8 J/plZEh5DtzKkOPbMJ7mAVxc3fUtTvm7Xm39MWb+5/UshLeeT7qb1Pv6pj3QlqoO06gf3eXK3AbC GnJopm+RhKrwzYcy9qgII1T8q8bGdvbyiR9/Wmb893+TiSz/++5xzrr5TlGMpwgSuDLd3TJtn1iD tq5WOa+2v72VXt+uVv4eYuTVa4/39Y8N82+VFcCV1Xd3c278q+9yZKaPZvXG9rr08IhgL8330+k0 dHbY9e28Q3/HnCxF5RPw/C09vq/pHy/xnmto/f6/H4w4Y8UGmJ7R3QL37S8hDb9JA+zh+pZg6hoA OKnN7u7X9s3x8w1EaFIUzRwIwamx59J7aLT39e28Q7sPvSOvGFrsGU6xPUO7Py+zNI/ar4r6+TlV VbSDAsDKzMzBL9YBwwsYEkATrm+w6nXMf2uuZgCGS32IKNRVO1QwvH4pEaavDxF28OxDoyeKf8jh Pnv57BzafXib4vhIdfH//O/o9Nuis9hZ4SNcHoucLmBgp/XubrSrdr9v0Ke/CP/2x61L5MBS6r3p 0v2NVj6lhpTnQIl3NYtOjT3bapV/qxhmkr+/Ma9vpXpfr6IVRen5m7Pu1zTRCmGIrTZJuu109uub 9gBwUn9ut9vv7+/qsn6dzCIH93WfPjdXmn5rrcQLculM3pZ+vRbvLLGu5VOxv0UJElHlH6nMFTPV 5d+k/jSJp67+J9bdk/8B+7tzc21FO75NhvLyV0xEkkiZXqtt+q3A4py/X9eNUx+2lm6FVFoltnLu Gv/Zr29ztAfy0/duDwBHSj3MHOpk7hFMIs/VRaXpe+u90bOXT6mB5TlE6Vx0e45vzr73rj/Ryr+3 hrMJnqLoel+vohXCnrkkI5yPV3P265v2AHBit9ttdAi059WUtpTn3BxfYFaub8DFpUZ3AQAA4KR0 dyfkd9y2lOfcHF9gVq5vAH9HB0C9PVMH8Ul5zs3xBWbl+gawxejunNzb2lKec3N8gVm5vgFXZ6oq AAAA5mN0FwAAgAnp7gIAADAh3V0AAAAmpLsLAADAhHR3AYhoWZa3z6t8/gUA3C9I0N0FAABgQn/T ix+/i4z9aFunGNLZNt9ohJKchsLs5PN30MNOkLa+hhc8/rRTB3+8sxdXzq3q4Yz7uD/+Jsf37JUk YXXXdrZ/SotrT/FOfGgmk99+aLIhVYIiqdHdUM8AhAoG5uMUAyCt9E7hznIFjjLBbY7uPuvu8F9Q 7vf7I5hlWYYHA1OKc75DQ2cfB/ga/2PReduaO+M/+/Htbat8Hs2q1TZV/tME+QFUc3xPQfuB+NZH d6PV3WcY572pQ3xBzncAojGuS4L2A5Gl3t0NVXefY7wnFaowYaez1+ezx38Rq6NS+auffWjo7PH3 pnzS0uWzOsCbU6SljbHqxpvjS5Gd9wvmttLdDd6r9EgzAMCRSptemmpAEJuju1+vUzm94s9fDfPT ry4d3hXfCuDrHIZFyfLzr1srX/7+1s30WJr/1l9Kyyc/knT+pUrrT9f49xfpzqtEv/qZuUrm1KP7 j0KP49uj/ufv78Ez21fYE2Gr61Vp/cmPsE6/+plInMh/j5zyibO/x1xPtraYiPN1gDfCaft0xvM3 TnusNP1h7Yciwxv8zMR3dwskzr3ep+Vq/kM22nDTJ8p/SDzR4i81sH4O2crA49sknoabntLZy9P1 J2dR7/T9riek9T5/o7XHJj5/ocKX7+4mXO2xlue5t/XD2NZT1kUzTyZ+RVvW3rFJr7JH9f52yr/0 /aK6+N8mRXs9dgfv7874c9KXFunrWl8r2MD6mc6/6HxMbyUzZZPje0z9z9/f4JqPUx1cnsPjr9jf 9BDTzuvnap45T0sdc/3MzL/f9WQ1Teb1fFmWaCd+ZvzpQl79Y6fzN1p7LGz7IVPv8uSCjO6W2erQ Phy50a+L+m264f6Oyn9/JnVK44kWf6kh9XPgVoYc34bxNA9gMnXXqzjl6frzU35/ab6//a4n1/Es hLeeT7qb1Pt6OKo91ip9fibHUNVpqH50F2jFZT2sIYdGC2OP5kMNe1SEESr+VWNji18+CQeEfery +cmO//5vMpflf989zlk33ymK8RRBwli6u2XaPpEVX+/9vVp5ci5Xq5xX299Spderq5VntIcMD7h/ FaW/Wn3o7bXH+/rHhvm3ygoYq767m3OhX32XIDN9NKsX1telh0fUV+/9PaY8ozW/mJv6Nlynoa3D rv/nHZo7pvJXDP2tLm0VSVcVmyitP2+zVAz/Abo0/vv/frDjjCcOcADv7hZIXEmnbOb23t+rlSdw Xq5XCa/PkX4aElLX4xVwfwHYsjm6+/VHvuPfd4/QpFjdix4zTwbRe3+H5A+dqG9j9R4a7X29Ou/Q 7kPvyCuG/rYyOcX9pTT/PUO7P/9GSge2ZCrq/+dUVec9fYB+VkZ3g18sAoYXMKSuot3jAUZxvToX x2sab2Psb38EeEo9zBzqqhEqGGjr9cuHoD5UOPvQ6IniH1I/T1Q+Q+wc2n14m+L4SHXx//zv6PTb orPYeUKd7n5xuoCZwHp3N9pVo8f88m855/xx6xQdWEr9Nl23v/nx7C/PnGRbaUZdbZuUZ5CzMkfv UKMVRWl9G1L/GxZatPIvdeT1KoLe1584RXHM8Rp1fdNb2GoTptuuU9YH7QfI8ed2u/3+/q4u69fJ LHJwX/fpc3Ol6bfWSrxQlM7kbenXa8HOEmtbPp+r1JVnYt095fNWwun/1ula3yrqT1GCRFT5NT9z xUx1+Tc5H5vEM7b+F9Wf/BgSm+gq2vEqjaf6CtPqfNx/vzvX+bj/+rnn/pKja/5194utkEqr3FbO XeOPfD3M2dwc7Yf89KHuL0wg9TBzqMrUI5hEnquLStP3NvAd2tLyaZJ/6bbSaY4/ZGevb6Wu9o53 aX0bWP+bFF208i915PUqgt7Xn2iFcPb6H+3+dXYT1wftB/judruNDoH2oj3sFC0exlIf5ub4Ajy4 HsJwvrsLAADAhHR3JxTtd8Ro8TCW+jA3xxfgwfUQIvg7OgDq7Znqpodo8TCW+jA3xxfgwfUQIjO6 O6do19Zo8TCW+jA3xxfgwfUQxjNVFQAAAPMxugsAAMCEdHcBAACYkO4uAAAAE9LdBQAAYEK6uwAA AExIdxcAAIAJ/R0dQK7HJ7z7fb6sd/7X9Pnh9eAlvPWl+LZhx6lsx+wvAAAMYXSXXra6UmElAj7d vuS42v4CAHA1pxnd5Vye/aWzjBMmAn4sWpblLPuS42r7CwDABRndpaPT9ZdWAz7dXuS72v4CAHAp pxnd7d0E18QHAACYidFd+OJqL7JebX8BAJjVf6O7r7PF5s/XWjqza8VMsK+rZCbbsrp6k/xL9/fr 5jKVHql0nK9LK+rDZ7J02SYKp1X92T/zcKu+X2nhpLfee4pyAACYwMrobn57t3Rm14lngi3d334b bb7pIYemSf3ZXz5jq+Xx58vZT0MAAHj1/u5u/oS6pTO7Vs8Emx5gfEuWDjWxYmZDPzE+nL+/+ZtL OGZm3aIJlrcGh3PSf250Z/3ZXz6vOew/XqWFc/zMyW33FwAAhlt/dze/GV06s+tW+ofMjRY54Is4 pfvbe9PNy/Pgebwq6k+r9E9BPqR02MzJQfYXAAAaWpmZeab2rkb8fqcoun7jnA2zDetq+wsAwEW8 d3d7t3ebP4GZ3tbjHxM34nuX5wH1oWv+Fa5QbV5dbX8BALiOvd/dze+uPF8IXF2leVN7+kb8weXZ wwF93dJNTF9t3lxtfwEAuJS93d0iiSlw2o5SXqQRf1h59tB7Kq89ghddc1fbXwAALmJvd7e0oZw/ s3G1i/R1Hw4oz66GTOXVfJVTu9r+AgBwHeszMx/MuG5bV973na5WdFfbXwAALiVEd7cVfd3LWpYl 4KxXAADAQHu7u4l3R98WLf/kZ1IXSai+br8+WF15RusTVk8llZlJfv2sy3+PnGx7x3Pk/gIAwMH+ 3G6339/fn39t3KK+4tdm8Vtu6fRbm/5cq3pyo8wVE8nSQRbtbyK3TKXlWRRPRX343FZ69d7155j6 WSdnPu3e8Ry5vwAAcLxdo7vpBvHn0kT6KdvWA+dhWl0UrZCbzHOWWBS5fuZk2Dueq52PAABczu12 Gx3CFXnXFAAAoKuppqoCAACAB93dAYzrAgAA9PZ3dAAzMxUQAADAKEZ3x9DXBQAA6MtUVQAAAMzH 6C4AAAAT0t0FAABgQrq7AAAATEh3FwAAgAnp7gIAADAh3V0AAAAm9Hd0APCfZVne/jLZB4o/d/Ch 1W6W5n/29KW28t/aRLT4X7cS4dRQn1ulT9TMurVOVJ8BoCuju0SR0+A7tcQONtn30vzPnr5UaSbR 4o9GfW6bvpT6DAA5/txut9/f39FhcHXP9tOs4waJHWyy76X5nz19qdJMosX/meHYM0V97pE+Pcqa mX8ih37xA0BYRncJZPr20+oONtzr0vzPnr5UaVbR4o9GfW6bvpT6DABf6e4CAAAwIVNVwWBDXoQz RFPNi4tp6nNbvZ9dV58BmNt/3d30Pa/3zJOt8n/8PWet0nel6nQtn9JpOYviqUtf5DPz17+8baL0 +G5tojTlVvpWtrZ7TP08tYr633WjXRWdLIm10un3U5/rjNp3fV0Appf7MHPvmRsb5h/n/t27fErT zzEzZ/6mB5b/2Gx7uN/vJ+qNOF4/I87fE5XPWepz1x8CTnS8AKDa+8PMz9vq52DasixFMze+pT8m /ziTRu4sn5z06aGSneVZF3+R/MH2nKjyUzapn/u9RpgYEysaiC5Nnw6sU/p0VnuG6F/TN8lqdd2G xytf6clywPmb2KL6/MyqU31IZxW/PgPAYbLe3U3cDrdmbiy6IzbPf3hf96nJzJYDy7PJ8W0uvwB7 189qX/vtz41m/gzxmn4rw3Qkmem3Vt/6pSYzn+r4E1nl+xpn0fHaSlAUUhOHnb/q8+fm9teH6qHd WeszAFSYcKoqt+EKJyq0E4W6JXOM+rOHEOfhhYdEPF+by0MUPT3xlmBrddTnUdRnAPhqtu5utPt3 8ycGP/Pvl3lA0Y5vhaK25mojO9HGXV2abv5WP+yaP0CUoy7+Vs8Jp5+n3QosM1mnh4eDUJ9LcyuK p6LOqM8A8Gpvd/dq3a186dGAJg2FAwrf8W2rYlzlrfH6dQDtaw6lW1yVP6CXXj0n/VY8R9b//EdY V/8463mkPr+tnpN+YH1QnwG4oNlGd0NJNAv2/zT+9R2zPZnT1dlHRSI8DHlk/T/78ert7OUToT6/ qR7azRFnNwHgAHu7u26caXXvVu3MvyHHt7nSIn3ruQ1/hjBU3+CAGCLsZmTq87lcZDcB4Cn3u7s0 pMFxWdV9g/v9/ly3ydDlsiwV+egb8Ep9PpeL7CYAvNLd5eentrFIV59t8bY9hP3xQD71GQA43t7u buLd1Fa/2edvtFX+rXLeKoTSjeZMs7knq4r8z9I9HjXF0Zb8eLba4ukeQpPjWxRPhSbxfF3UL/+G 6ffIyXbI9VN9roin4aZPWp8BoJM/t9vt9/f352NujPR/X/+Y8Jq+ef6riYvaLkXxV6iIvyiY0lWK 4qkLqdrXw9f8+KbrT079LNWwPu8/X+riSTsynpyQQsXTdghxdVs797dJDOlg1OdE+s91M78V1Cme I+szAPSza3S37psNTfJvcq8dOM9T6aa3PgjRNZ7ex7e33vWn1MD6XHp8h5wabetn1/yHl2dOhtHq W+/8z16fm2y0YTzRrp8AUOl2u40OIaLjH9Y9y+PBAAAAp2CqKgAAACaku7vCKCsAAMDZ/R0dwEim 4gAAAJiV0d11+roAAADnZqoqAAAA5mN0FwAAgAnp7gIAADAh3V0AAAAmpLsLAADAhHR3AQAAmJDu LgAAABP6OzoA+M+yLG9/mewDyJ87+NBqN0vzP3v6Ulv5b20iWvyvW4lwaqjPbdOXmqM+A0BXRneJ ItF0m0NiB5vse2n+Z09fqjSTaPFHoz63TV9KfQaAHH9ut9vv7+/oMLi6Z/tp1nGDxA422ffS/M+e vlRpJtHi/8xw7JmiPrdNX2qm+gwAXRndJZDp20+rO9hwr0vzP3v6UqVZRYs/GvW5bfpS6jMAfKW7 CwAAwIRMVQWDDXkRzhBNtYbvTE5JfT4X9RmAuf3X3U3fw/bP3HhM/o+/56yVfv+t1dtxXcundFrO onjq0hf5zPz1L2+bKD2+W5soTbmVvpWt7R5TP0+tov533WiT9Pn5JE6Wr1tXnwO6VH0GgMPkPszc e+bGhvnHuR/3Lp/S9HPMzJm/6YHlPzbbHu73+4l6I0GO19jje/z5qz53EuR4nej4AsDT+8PMzxbA 52DasixFMze+pT8m/ziTRu4sn5z06aGSneVZF3+R/MH2nKjyUzapn/u9RpgYEysaiC5Nnw6sU/p0 VnuG6F/TN8lqdd3E8dqTPq30ZDng/E1sUX1+ZqU+A8BYWe/uJm5vWzM3Ft0Om+c/vK/71GRmy4Hl 2eT4NpdfgL3rZ7Wv/fbnRjN/hnhNv5VhOpLM9Furb/1Sk5lPdfyJrPJ9jbP0d7Qgv7sddv6qz5+b U58BIIIJp6pyP65wokI7UahbMtuOnz2EaI3ORDxfm/tDFD098ZZga/X96c9OfR5FfQaAr2br7ka7 Hzd/YvAz/36ZBxTt+FYoajuuNrITbdzVpenmb/XDrvkDejnq4m9S/9Nx6hukqc+luanPAHCkvd3d q3W38qVHA5o0HQ4ofMe3rYq241vj9esA2tccSre4Kn9AL716TvqteI6s//oGq9Tnt9Vz0qvPAHCk 2UZ3Q0k0s/aP+n59x2xP5nR19rZjhEbwkfW/dDfPfnxLnX1/1ee26QEglL3dXTfCtLp3q3bm35Dj 21xpkb61dHs/Hv9VhL7B0wEx6Bukqc8Nqc8A0Fzud3dpSAPisqr7Bvf7/bluk6GeZVkq8gnVNziA vkGa+nwu6jMAF6S7y89PbWORrj7b4m17CPvjgXzqMwBwvL3d3cS7qa1+s8/faKv8W+W8VQilG82Z ZnNPVhX5n6V7PGpKmC358Wy1xdM9hCbHtyieCk3i+bqoX/4N0++Rk+2Q66f6XBHP10X98g9SnwGg kz+32+339/fn3z3srfGx9d/XPya8pm+e/2riorZLUfwVKuIvCqZ0laJ46kKq9vXwNT++6fqTUz9L NazP+8+XunjSjownJ6RQ8bQdQlzd1s79bRJDOhj1uTp9tHgMiQNwFrtGd+u+2dAk/yb32oHzPDV5 h6rhi1gV+cdv7vSuP6UG1ufS4zvk1GhbP7vmP7w8czKMVt96568+HxZP/Is/APzndruNDiGi4x/W PcvjwQAAAKdgqioAAAAmpLu7wigrAADA2f0dHcBIpuIAAACYldHddfq6AAAA52aqKgAAAOZjdBcA AIAJ6e4CAAAwId1dAAAAJqS7CwAAwIR0dwEAAJiQ7i4AAAAT+ptevCzLz8ZHaB+L0l5XLE2fE8N+ W1H57u6rroegLv/eIR3js/odv0evMWRuPVrhR4vnU2mE8ffoGL2vz6X5S59epXc8AFAhNbqb00E9 TI9gEnmG2nempI5BQu/rc2n+0qf1jgcA6myO7j7vN+nfWUt/ha341fZ+vz+CWZal4Y++iR3ssTl4 lXl+HeARgPYlofS+PpfmL31a73gAoNr66G6ctvjDM4zmjfLVHQyy10xPTYOE3tfn0vylT+sdDwBU SD3MHOquEyoYhrvf76oEAACQsPIwc/DHGo95xklXCiCgIXcod4RqwVsUAExv893dgHf350u8AzWc 2fJtrfyUdfGU5v+Z/usUvkXTeFbkX5QsHdL+8qlQussV5ZmuJ03edVz9S6fySeQfLZ6vq+xM/3oE 99fqUTP97re1xd71nzrDb9kA4Lu7BXrPbFm66YYzW/ZulAxp9JyofEpFi6e3aPvbeybbJmtFm+l3 v2jVIMHbFj+nOl4ATOzLd3enl/9odNuZLb+OinwO5jSZ2TIRzFv6z219Laj00Mr+/F9X/NqQ6l0+ FUp3uag8e6s+XnWbeNW2/nSKp/R8r7s+5E8iGG2m3/1et5gon9IHNxoG1il9Oqui/a1Iv/r3nCMb 9ngBcDV7u7urd6bMJ1Fz0vdzf/m+0erSrbUSWeXnU6Q0/9Knvns/JT7wKfRTlE+paPH0Fm1/G57v ddeH/LWaXK8izKz7tZ9/3/he3defFUqj3XnoW8WTvn995l+aPu1rnEXHa388AJBw6dHd0l+dAca6 4HUpc0z7s8ebWPFrd6uHaPF8Vfe0S/4zCABwgL3d3WNGM/rp+vDqBYVqq03gauUZbX+jxdP7ilR6 0TvgIlnUd1rtNH4dYCxS/fB2/oBnjoEPn6fjzDxexz8MD8BlXXp0d0t61PfgYNJCxRMqmAlcrTyj 7W+0eCrk70Lpyx11L4OUqhgnfLt673k9vm6L6QzbxtPqYfVWVb30ePWOBwB+dHdppW7qHbZcrTyj 7W+0eA5Q+nLHYS+DnH2U72oP915kNwE4i83ubsBHiSI0MaOViXjmdrXyjLa/0eIp1eRlk8TDpQe8 DLJzKqnhNzJ9XQAYa+W7u8FvVw0fk4vQfwaIbOAEDdV93fv9/ly3yXW+7n6hrwsAw610d59C9QZD BQNAKJ99y7Y93v3xAADHW+/ujm0lfOrXbljdwZxpJz//XppVE6Xx9NhWaZoe6xblGaRW5ygNdchX VYLkGSGeaMcr//qw/JOZSWn6OkXxPP7x+b3Z0qhKr/9F8VRoEs8c6QGgwp/b7fb7+7u6bP9kLasf QshMnxnGHumQtj6QkL9KUfpH4rfG2dZ/9+f/Jr10a1t74qnIfytl3fSqq8FXl0+pnAy71rfEWjm7 mX+88h1Tf/rFc+T1IUfbeEqvh127eZ/5V5y/Xfe34n7Xu/zPnh4A6qQeZg51v+kRTCLPrQ8kFOXW uwDrvmnRY1v7txjh+EYz8J3JIds6Uf0Zkr5Uw+tV6fWw9yRVQ4ru7PGcPT0AVLrdbqNDuKIeDxsD AADwlBrdBQAAgJPS3R3AuC4AAEBvf0cHMDNTcQAAAIxidHcMfV0AAIC+TFUFAADAfIzuAgAAMCHd XQAAACakuwsAAMCEdHcBAACYkO4uAAAAE9LdBQAAYEJ/04uXZfnZ+EjsY1Ha64ql6XNiAAAAgFWp 0d2cDuphQgUDAABAcJuju8/uZXpYtXTQtWKQ9n6/P4JZlsUYLwAAADnWR3cz+7qHeYZhjBcAAIAc qYeZg/R1H0IFAwAAQHAr3d3gI6jBwwMAACCCzdHdgKOpAUMCAAAgJt/dBQAAYEK6uwAAAExo80NE mVbfpE08dVyaHgAAACoY3QUAAGBCe0d3SwdmDeQCAABwAKO7AAAATEh3FwAAgAltdndX55QaK2BI AAAAxLTS3Q3+em3w8AAAAIgg9TBzqNHUUMEAAAAQ3Hp39zmCGqST+QzD0C4AAAA5/txut9/f39Vl 6U5mTk/4dcXS9JlhAAAAwKfUw8yhupehggEAACC62+02OgQAAABozHd3AQAAmJDuLgAAABPS3QUA AGBCursAAABMSHcXAACACenuAgAAMCHdXQAAACakuwsAAMCEdHcBAACYkO4uAAAAE9LdBQAAYEJ/ n/9aluVr6vv93mSrj221ym0184dOmwAAACA4o7sAAABM6O/b/ycYDn3sQs5gNQAAALMyugsAAMCE dHcBAACYkO4uAAAAE3p/d7dI4v3Yz3eAPxN/nUK5KP9jbIW0FU9++tfZqnPWSs9uvbW0Xzx1jimf 0q30iCexOgAA0EOv0d3eM0UNmYkqsdHVRaXpvy7a6Zrx5KePVj4AAMAeu0Z300OLy7K8JsgfmazL v7dnr2ZroO8tntL0X9fa6Zrx5KePVj4AAMBO76O7y5rSTHs3/Qd2LVY3ff8nP33FVlbTJEaVD46n zjHx5KePVj4AAEC1XaO79BCt73T2eGL++BKtVAEAYD7v3d3SVviU70TUT34AAAkBSURBVOgm9H6C Olov6OzxxOzrAgAAB+g1M3MTofq69/v9+Q7n6tLVtbruwiOk1XeGh8RTIVo8AADANOq7u+lJevZ3 Y3rnX+HZ4/108LxZAAAApO19d/dqD4sm+t6rPd5TxD9QtHgAAIBp9Pru7qUMnyn6Oeac+YUnAACA 6enuwgB1n/gCAADy7e3u7mmy56wbp0uQ+ApxIsjEu76tdu05wJsztHtAPEVOEU+cSggAAOSrf3c3 PVNx3bqvXbXq/F/TN3y492s8b1vZUz49iCet9PgCAADB7Rrd3dMByFk3WgcjEc/qonT8x++deNJK jy8AABDa7XYbHQIAAAA0ZqoqAAAAJqS7CwAAwIR0dwEAAJiQ7i4AAAAT0t0FAABgQrq7AAAATEh3 FwAAgAnp7gIAADAh3V0AAAAmpLsLAADAhHR3AQAAmNDf9OJlWX5+fu73+9aitNcVS9PnxLDfVlSd NtfQnmLpWqR1AoaU6bUK9Yu/tHyOKc+vWznv+XWk3gerIv/zno+vPqvf8XtUcX0oKvxQR8r5Pkqo avDmstcfII7U6G5OB/UwPYJJ5Blq37m40tp4TO39uhXnFwNdqo5F2FnnOwAxbY7uPu9P6R/YSn9+ q/i57n6/P4JZlqXhr32JHeyxOWb1qCT92nPB+7pb54jzi4Ey718H6H196HR/LOV8ByCs9dHdOG2F h2cYzRsNqzsYZK/hpH3dJ+cXA12kpvW7P1ZH8vWPAHCY1MPMoe5SoYKhufv97hBvOeAZigqO18Sc j+fiYDET1x+grZWHmYf/Qpx2zDNRLrVEELCj2+T64PyCHmI+MxwwJACuY/Pd3YD3p+dLSqMktr71 wlL6zcattUq3Upeyx5TCFTNzFoWRXz6lJZleJeDpMFaQmdK71oeiePafuV9PhIrrT1H+RcnSIe0v nwqlu3zA9Tzf/uvz8PtjhdL6k34R+vN8b3X/3R9PhYr7UavrZ6vy39rW/utP2+v5180BZ+e7u200 aWc0bKwMaff0nplzYPmcrh15RqX1p3d9aFife9efs5/v0c6vaPFMqa7+DJkUMNqk003OrxPtb6ne 9wvgdL58d5dX6Z8Mdz5Flp7+p+hX29V48n/5rlM9M2fmzKW9y2crcSI9X+UXWmn92VkfPgcr8vNP 1Ieu52NR/aw+3/efj03Kp0LpLoc633tfn4/R73z/utZO0eJJ5Nnk/Oq9v72vP4kwGt4vgGnsHd1d 1jRMfwoNb3VNshrYTtrq0D50yr93Jmdsdw732rHMP+UTP4jkp68OdX88pfk3EfB835/JQNHiOYVj zvfMBD/JXlOi99UvnoYanl+n2N9Sve8XwBl5mBnoovrNK+B0jjnfo/VYosXT29X2F5jD3oeZz/5D finN9LSDnwBszvFtq+vDqxekfralPNvqfb5Hu2L0jida/YxW/gCZvLtbINq9J5T7v3lBV0vpFLdJ x/cY9+0pZKMdglDxhApmAsrzGKPO98d2V9/hTL8WG0SoYABOTXc3l6kOvko3a4L3eB1fIlM/21Ke RKZ+AjS02d0N2D+JcImPVibRnP3h1fgRBtHpaEYrf/HMbabyjHB/LBWt/MUDMKWVqaqCX2GPCW+O KaODCF6jKJL/oRFnEBxs1MU25vn+Nj9z+klmAGaVmpk51N0rVDCAUxKCKD0ZY/ZOAaCH9e7u6zf0 DgxmU/o9liY5f/3j10VD0u/RdluJTyw23FDv8glS4YPLvz60Or8OqFpN4umxrdI0PdYtyvNEJ9Ec 1+d+98dSvc/3Cs8B3pyh3SPP9xxNNlpa/p32NMJlIUIMwBB/brfb7+/v6rL9kyV8zoiYnz4zjD3S IX1u7usuvK3SNX3ODJOlH0LcWcKl5bm1VvW0mTvLp/R4ba3VsKJuhVRaRD3awV9PzFDn19sRT/93 f/5vmpyPdfUzP/+tlE2O787yKbWnb/M08PpQcbyKSq/HY71dz/c9Ab9uaM/HgVvFk6kinszEOasU nb9fNb/+HHZ/B+aQepg51Ml/8Lw4q4t6f2T4yAKPUJ4N828iVIWP72txtT2/PpeOrQ9tt56T254t nvF8722m63OEAu99vvd2rnj2Z3Xk+Ru8fgLzu91uo0PgO69apSkfXqkPAORwv4DppUZ3AQAA4KR0 d0/A745pyodX6gMAOdwv4Ar+jg6A/9RN9XQdyodX6gMAOdwv4MqM7p6Da3Ga8uGV+gBADvcLmJ+p qgAAAJiP0V0AAAAmpLsLAADAhHR3AQAAmJDuLgAAABPS3QUAAGBCursAAABM6G968ePD3KsfJUt/ s/vhdcXS9DkxAAAAwKrU6G5OB/UwoYIBAAAguM3R3Wf3Mj2sWjroWjFIe7/fH8Esy2KMFwAAgBzr o7uZfd3DPMMwxgsAAECO1MPMQfq6D6GCAQAAILiV7m7wEdTg4QEAABDB5uhuwNHUgCEBAAAQk+/u AgAAMCHdXQAAACa0+SGiTKtv0iaeOi5NDwAAABWM7gIAADChvaO7pQOzBnIBAAA4gNFdAAAAJqS7 CwAAwIQ2u7urc0qNFTAkAAAAYlrp7gZ/vTZ4eAAAAESQepg51GhqqGAAAAAIbr27+xxBDdLJfIZh aBcAAIAcf2632+/v7+qydCczpyf8umJp+swwAAAA4FPqYeZQ3ctQwQAAABDd7XYbHQIAAAA05ru7 AAAATEh3FwAAgAnp7gIAADAh3V0AAAAmpLsLAADAhHR3AQAAmJDuLgAAABPS3QUAAGBCursAAABM SHcXAACACenuAgAAMKG/6cXLsvz8/Nzv961Faa8rlqbPiQEAAABWpUZ3czqohwkVDAAAAMFtju4+ u5fpYdXSQdeKQdr7/f4IZlkWY7wAAADkWB/dzezrHuYZhjFeAAAAcqQeZg7S130IFQwAAADBrXR3 g4+gBg8PAACACDZHdwOOpgYMCQAAgJh8dxcAAIAJ6e4CAAAwoc0PEWVafZM28dRxaXoAAACoYHQX AACACe0d3S0dmDWQCwAAwAGM7gIAADAh3V0AAAAmtNndXZ1TaqyAIQEAABDTSnc3+Ou1wcMDAAAg gtTDzKFGU0MFAwAAQHD/D8mL+egiZtJsAAAAAElFTkSuQmCC --0000000000000e53c806018d1a9f--