From owner-freebsd-embedded@freebsd.org Tue Jul 30 12:43:59 2019 Return-Path: Delivered-To: freebsd-embedded@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 56683A2620 for ; Tue, 30 Jul 2019 12:43:59 +0000 (UTC) (envelope-from o.hartmann@walstatt.org) Received: from mailman.nyi.freebsd.org (unknown [127.0.1.3]) by mx1.freebsd.org (Postfix) with ESMTP id 0F62C981B4 for ; Tue, 30 Jul 2019 12:43:59 +0000 (UTC) (envelope-from o.hartmann@walstatt.org) Received: by mailman.nyi.freebsd.org (Postfix) id 0EF22A261D; Tue, 30 Jul 2019 12:43:59 +0000 (UTC) Delivered-To: embedded@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 0E8E6A261C; Tue, 30 Jul 2019 12:43:59 +0000 (UTC) (envelope-from o.hartmann@walstatt.org) Received: from mout.gmx.net (mout.gmx.net [212.227.17.20]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "mout.gmx.net", Issuer "TeleSec ServerPass Class 2 CA" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 2FD60981B2; Tue, 30 Jul 2019 12:43:57 +0000 (UTC) (envelope-from o.hartmann@walstatt.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1564490619; bh=z9jucbR+yOSfOujhO9PnQzhm31ZuTTsui9zqaGNJZMA=; h=X-UI-Sender-Class:Date:From:To:Cc:Subject:In-Reply-To:References; b=GfjSf89KnfLL1wdgNeE6SAImYbC+P2+1aYX9seIpuWUHlchsDPzpoqcjYZ3+smjrW w8OO8ebNmO0BETR5KK7lnwBm/z9+gx9IyJLUEAI52b3DE59fUUTPZoUhq+s4KLLu0o QllU/8ScQ0nUnYpgtobVr05cTST751ySbNYOcn9k= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from freyja ([46.88.81.15]) by mail.gmx.com (mrgmx105 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MPogF-1hg7Fg1BLP-00MwRs; Tue, 30 Jul 2019 14:43:39 +0200 Date: Tue, 30 Jul 2019 14:43:35 +0200 From: "O. Hartmann" To: Toomas Soome Cc: "O. Hartmann" , "freebsd-embedded@freebsd.org" , FreeBSD CURRENT Subject: Re: PCengines APU2C4, 12-STABLE: bootloader failure: Panic: free: guard2 fail @ 0x1000 + 2311663946 from Message-ID: <20190730144331.24f83e0c@freyja> In-Reply-To: <93EFC481-50A1-491C-87BB-12A35F3302EE@me.com> References: <20190724101132.5560377a@thor.intern.walstatt.dynvpn.de> <20190724120720.4382397c@thor.intern.walstatt.dynvpn.de> <20190724154901.0c114ebe@thor.intern.walstatt.dynvpn.de> <93EFC481-50A1-491C-87BB-12A35F3302EE@me.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:gH5J5OFgDIOn0c5ONXoL7YKMaNDuHHhZMdxkwGTwVLnwqSzVu++ no6PSYq1iuC8kQw6Zvauif8JrdlKIYBMj7wYBMvY8qQlg5eB7ViHBS5bIiDnfCJuZE6ei6T vriix+9jSsfyCdLwn1cv1krnSszEF5mR8E31oUjljvRtSaZdDTRP07HOj1BYZTk6au2ndCP 712v6ZueGWeKIyGTZtxjw== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:3KwtfWap57g=:i0/0/JHAmHsIIEFH1ALhkA tJj536pKdrPp74aZmhsD5ojlcVLV9qXlQQyJbD5HQFdUDZbIanXaqQWj2Z7O5LjbDUB39Cn/l Ew+sJLg/+8p6b5ZhA2PHYGS+q1Ic5jCwJI0un6FqSfrBHH4okPfMcf8sQuytG36MPL4wTeWAy jOfkeeUTbzsVBvDXIMaXaF9thW6OkcwMPpN9IIg2WKZoZBaCYW6rtSLLMYGooChehFuYKsZQM NnEZYIlQ+A+0GMCbV5ZdBt5QVf5fpNbtOcoTCkIHlEwNWYACOTARcYGaRl5A14AcVRgfsINaF e3dgvAEBU8wsAgYdY8FdyqYp3+EXJd6DdxL+ArH5KTtn71rtGnhTooGOruX6FzPe0P+yI3C8s M4dBLO0Ah24bmqK4YNy2mbN9R7cOGXjcWaPPWsrR2vkTaKIOSvULyJJARd0my8cBDu23pQTUi WTSrzhNcRsWaUk3J0m5TMv5N5tfgXB3CRfPHMDCbCimvo8lReG9Mj05V4tWiCNGJWh+UuYBaS l46Th7X4HKYCgwodzPbwrjND8hkgpnveXF+Q8qGup/iRiQErJSIfD2D/19K/v9CrCV9OS1TgY rEWX5bvk1/0XbJh+XAFUJVxHbE83OmB+2mDiqbGPvzFewmq6GzzxzfM9/Zl9pfXpgb+YEItkk dpkYaQtY7HCzUcA9U64VbO8QxDdfEzbR22701fhbROizwruwe8SWMtgYVb7CZQ7HTKWw93y6i khbKPXPw9fJhk9qME/0xElAQMvqjp3fDLIO4SsxBny+bc+FzsXDfJPR8E96pezU9WcmmaejtL UNyvC+Zj+IhKJ84JVKfVwdAeWnSdk1fLgZgOUlNy988fHRoMOjPx9E9G45vnqfEmSfru4MrAD j/Paj4tIl4Tk3pe746tlThoW9zuWaDYko6kxOnLR05CDjcEmDa5RNj7Tr4tCjYtZ3+lwD0Uox kHEH36xWtJ8sfSNYTW758Vcx3EEXg4GVFVONm2tyspU1aDS8BQ3qMG1BelyIqcjCEJNuIpt5x KUJQN0Obzea3jcAQjSKkfp+w2Qbetq+SOfKTJSuX8qCYyxMxC8LUrbLfm1uGG4J4VPJXBklQ5 h2JLHwrdNn4tKfq9/O99/dfk259zgf7oQ+m X-Rspamd-Queue-Id: 2FD60981B2 X-Spamd-Bar: --- Authentication-Results: mx1.freebsd.org; dkim=pass header.d=gmx.net header.s=badeba3b8450 header.b=GfjSf89K X-Spamd-Result: default: False [-3.77 / 15.00]; ARC_NA(0.00)[]; RCVD_VIA_SMTP_AUTH(0.00)[]; R_DKIM_ALLOW(-0.20)[gmx.net:s=badeba3b8450]; NEURAL_HAM_MEDIUM(-1.00)[-0.999,0]; FROM_HAS_DN(0.00)[]; RCPT_COUNT_THREE(0.00)[4]; RCVD_COUNT_TWO(0.00)[2]; IP_SCORE(-1.08)[ip: (-6.28), ipnet: 212.227.0.0/16(-1.45), asn: 8560(2.31), country: DE(-0.01)]; MIME_GOOD(-0.10)[text/plain]; DMARC_NA(0.00)[walstatt.org]; NEURAL_HAM_LONG(-1.00)[-1.000,0]; TO_MATCH_ENVRCPT_SOME(0.00)[]; TO_DN_ALL(0.00)[]; DKIM_TRACE(0.00)[gmx.net:+]; MX_GOOD(-0.01)[cached: mx01.gmx.net]; NEURAL_HAM_SHORT(-0.78)[-0.779,0]; R_SPF_NA(0.00)[]; FREEMAIL_TO(0.00)[me.com]; RCVD_IN_DNSWL_LOW(-0.10)[20.17.227.212.list.dnswl.org : 127.0.3.1]; RECEIVED_SPAMHAUS_PBL(0.00)[15.81.88.46.zen.spamhaus.org : 127.0.0.10]; MID_RHS_NOT_FQDN(0.50)[]; ASN(0.00)[asn:8560, ipnet:212.227.0.0/16, country:DE]; MIME_TRACE(0.00)[0:+]; RCVD_TLS_ALL(0.00)[]; FROM_EQ_ENVFROM(0.00)[] X-BeenThere: freebsd-embedded@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Dedicated and Embedded Systems List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 30 Jul 2019 12:43:59 -0000 On Wed, 24 Jul 2019 18:07:22 +0300 Toomas Soome wrote: > > On 24 Jul 2019, at 16:48, O. Hartmann wrote: > >=20 > > -----BEGIN PGP SIGNED MESSAGE----- > > Hash: SHA256 > >=20 > > Am Wed, 24 Jul 2019 12:06:53 +0200 > > "O. Hartmann" > > > schrieb:=20 > >> -----BEGIN PGP SIGNED MESSAGE----- > >> Hash: SHA256 > >>=20 > >> Am Wed, 24 Jul 2019 12:09:16 +0300 > >> Toomas Soome schrieb: > >> =20 > >>>> On 24 Jul 2019, at 11:11, O. Hartmann wrote: > >>>>=20 > >>>> -----BEGIN PGP SIGNED MESSAGE----- > >>>> Hash: SHA256 > >>>>=20 > >>>> Hallo, > >>>>=20 > >>>> on APU2C4 from PCengines with latest firmware apu2_v4.9.0.7.rom, Sea= BIOS > >>>> rel-1.12.1.3-0-g300e8b7, booting via legacy MBR FreeBSD 12-STABLE > >>>> r350274 (the same with r350115) fails to boot with an immediate load= er > >>>> error: > >>>>=20 > >>>> [...] > >>>> SeaBIOS (version rel-1.12.1.3-0-g300e8b7) > >>>>=20 > >>>> Press F10 key now for boot menu > >>>>=20 > >>>> Booting from Hard Disk... > >>>> / > >>>>=20 > >>>> onsoles: internal video/keyboard =20 > >>>> IOS drive C: is disk0=20 > >>>> IOS drive D: is disk1=20 > >>>> IOS 639kB/3404444kB available memory=20 > >>>>=20 > >>>> reeBSD/x86 bootstrap loader, Revision 1.1 =20 > >>>> Mon Apr 15 21:28:11 CEST 2019 root@thor)=20 > >>>> anic: free: guard2 fail @ 0x1000 + 2311663946 from > >>>> X=C3=A7u0=C3=A7}4=C3=A7l$=E2=99=A6=E2=94=9C=C3=AD@=E2=94=A4=E2=99=A0= :2106163957 -> Press a key on the console to reboot > >>>> <-- [=E2=80=A6] =20 > >>>=20 > >>>=20 > >>> This is definitely something =E2=80=9Cfunny=E2=80=9D, we are apparent= ly attempting to > >>> free pointer 0x1000 which is definitely wrong because our heap should= be > >>> just below 4GB line. Since we do get list of disks printed, also memo= ry > >>> and version, it means we get error from interpretator - it is possible > >>> the stack did clash with bss and hence the corruption. =20 > >>=20 > >> I realized that I have defined=20 > >>=20 > >> WITH_KERNEL_RETPOLINE=3DYES > >>=20 > >> and since I use to build NanoBSD with -DNO_CLEAN, I'm just now compili= ng a > >> clean NanoBSD with RETPOLINE mitigations disabled so far - trying to c= heck > >> whether either of the ways to build causes the issue. > >> =20 > >>>=20 > >>> You can try to press space on first spinner and enter alternate loade= r on > >>> boot: prompt. (enter ?/boot on boot: prompt to see the file list). = =20 > >>=20 > >> I try a soon as the build process has finished and if the problem is t= hen > >> still present. =20 > >=20 > >=20 > > With a fresh build and no RETPOLINE mitigation (neither kernel nor worl= d) > > the phenomenon as described above is still the same. I tried an alterna= tive > > loader as requested, but without success. When choosing loader_4th, I g= et > > this error: > >=20 > > [...] > > FreeBSD/x86 boot > > Default: 0:ad(0p3)/boot/loader > > boot: /boot/loader_4th/ > >=20 > > onsoles: internal video/keyboard > > IOS drive C: is disk0 > > IOS drive D: is disk1 > > IOS 639kB/3404444kB available memory > >=20 > > reeBSD/x86 bootstrap loader, Revision 1.1 > > Wed Jul 24 12:51:12 CEST 2019 root@thor) > > anic: No heap setup =20 > > -> Press a key on the console to reboot <=E2=80=94 =20 > > =20 >=20 > Now this is bad. if my math is correct, this system is supposed to have 3= GB > of RAM, so are there specific build exceptions in place? see > stand/i386/loader/main.c, function main, after call to bios_getmem(). >=20 > rgds, > toomas Hello Toomas, the PCengine APU2C4 is supposed to have 4GB of RAM - wouldn't have a 64bit system seen the whole range? On 32bit systems, there was a memory hole I as= sume for memory mapped I/O of several PCI devices. This is the first time I hav= e a look at the memory reported by the kernel and its confusing me a bit. I do not have any kind of specific build exceptions in place targetting the memory. Of course, for memory usage and image size optimizations I defined several WITHOUT_ and WITH_ tags for build and install - but they never caus= ed any trouble and have not been changed so far. >=20 > >=20 > > Loader loader_simp ends up in stuck console with no output: > >=20 > > [...] > > FreeBSD/x86 boot > > Default: 0:ad(0p3)/boot/loader > > boot: /boot/loader_4th/ > >=20 > > onsoles: internal video/keyboard > > IOS drive C: is disk0 > > IOS drive D: is disk1 > > IOS 639kB/3404444kB available memory > >=20 > > reeBSD/x86 bootstrap loader, Revision 1.1 > > Wed Jul 24 12:59:23 CEST 2019 root@thor) > > [...] > >=20 > > regards > > oh =20 > >> =20 > >>>=20 > >>> =20 > >>>>=20 > >>>>=20 > >>>>=20 > >>>>=20 > >>>> Booting 12.0-STABLE #78 r349288: Sat Jun 22 09:10:25 CEST 2019 amd64 > >>>> works fine with nothing changed except the OS version. > >>>>=20 > >>>>=20 > >>>> Booting 2.0-STABLE #78 r349288 works fine: > >>>>=20 > >>>> [...] > >>>> SeaBIOS (version rel-1.12.1.3-0-g300e8b7) > >>>>=20 > >>>> Press F10 key now for boot menu > >>>>=20 > >>>> Booting from Hard Disk... > >>>> | > >>>>=20 > >>>> onsoles: internal video/keyboard =20 > >>>> IOS drive C: is disk0=20 > >>>> IOS drive D: is disk1=20 > >>>> IOS 639kB/3404444kB available memory=20 > >>>>=20 > >>>> reeBSD/x86 bootstrap loader, Revision 1.1=20 > >>>> Mon Apr 15 21:28:11 CEST 2019 root@thor)=20 > >>>> oading /boot/defaults/loader.conf=20 > >>>> oading /boot/device.hints=20 > >>>> oading /boot/loader.conf=20 > >>>> oading /boot/loader.conf.local=20 > >>>> Loading kernel... > >>>> /boot/kernel/kernel text=3D0xb005e8 \ > >>>> [...] > >>>>=20 > >>>> In the message taken from the serial console the first column of > >>>> characters is lost due to an error in the output which seems FreeBSD > >>>> related.=20 > >>>=20 > >>> It certainly does look weird - sio_putc() is used in boot2 and it=E2= =80=99s > >>> implementation is using same principe as comc_putchat() in comconsole= .c > >>> (even if it is asm versus c code). Since the serial data is interpret= ed > >>> by terminal, it feels more about terminal emulator issue (line > >>> discipline, cabling, usb to serial dongle?) =20 > >>=20 > >> We use here a null modem cabling with an integrated USB-to-UART/TTL > >> converter, which is attached to a FreeBSD CURRENT (most recent) box: > >>=20 > >> [...] > >> ugen2.3: at usbus2 > >> uftdi0 on uhub4 > >> uftdi0: on usbus2 > >> [...] > >>=20 > >> it is a=20 > >> StarTech.com 1 Port USB Nullmodem RS232 Adapter Kabel (USB 2.0 FTDI > >> chipset). > >>=20 > >> Regards, > >> oh > >>=20 > >> =20 > >>>=20 > >>> rgds, > >>> toomas > >>>=20 > >>> =20 > >>>>=20 > >>>> The file /boot/loader.conf.local contains these lines in both, worki= ng > >>>> and non-working, scenario: > >>>>=20 > >>>> [...] > >>>> boot_serial=3D"YES" > >>>> # serial speed in bits/s > >>>> comconsole_speed=3D"115200" > >>>> console=3D"comconsole" > >>>>=20 > >>>> autoboot_delay=3D"0" > >>>>=20 > >>>> verbose_loading=3D"YES" > >>>> loader_logo=3D"orb" > >>>> beastie_disable=3D"YES" > >>>>=20 > >>>> ### Microcode > >>>> #cpu_microcode_load=3D"YES" # Set this to YES to load= and > >>>> apply a #cpu_microcode_name=3D"/boot/firmware/intel-ucode.bin" # Set= this > >>>> to the microcode #cpu_microcode_type=3D"cpu_microcode" # Requir= ed for > >>>> the kernel to find # the microcode update file. > >>>>=20 > >>>>=20 > >>>> # disable Process Table Isolation > >>>> #vm.pmap.pti=3D0 > >>>>=20 > >>>> kern.geom.label.gptid.enable=3D0 > >>>>=20 > >>>> # Limit the phys. memory > >>>> #hw.physmem=3D1073741824 # 1 G > >>>> #hw.physmem=3D536870912 # 512 MB > >>>> #hw.physmem=3D268435456 # 256 MB > >>>>=20 > >>>> # Da mehr als 1 igb NIC an Bord! Siehe man igb(4) > >>>> kern.ipc.nmbclusters=3D757350 > >>>> #kern.ipc.nmbjumbo9k=3D8192 > >>>>=20 > >>>> # NIC > >>>> #hw.em.max_interrupt_rate=3D32000 > >>>> hw.em.max_interrupt_rate=3D16000 > >>>>=20 > >>>> #If non-zero, enable EXPERIMENTAL feature to improve concurrent Fort= una > >>>> performance kern.random.fortuna.concurrent_read=3D"1" > >>>>=20 > >>>> # Forward Information Bases (FIBs) > >>>> net.fibs=3D10 > >>>> net.add_addr_allfibs=3D0 > >>>>=20 > >>>> [...] > >>>>=20 > >>>>=20 > >>>> Again, with the exact same setting 12-STABLE r349288 boots fine, > >>>> rr350274 doesn't. FreeBSD 12-STABLE r > >>>>=20 > >>>> Can someone please help? > >>>>=20 > >>>> Thanks in advance, oh =20 [...] From owner-freebsd-embedded@freebsd.org Tue Jul 30 14:02:11 2019 Return-Path: Delivered-To: freebsd-embedded@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 6326DA4398 for ; Tue, 30 Jul 2019 14:02:11 +0000 (UTC) (envelope-from tsoome@me.com) Received: from mailman.nyi.freebsd.org (mailman.nyi.freebsd.org [IPv6:2610:1c1:1:606c::50:13]) by mx1.freebsd.org (Postfix) with ESMTP id 46ED69AFC5 for ; Tue, 30 Jul 2019 14:02:11 +0000 (UTC) (envelope-from tsoome@me.com) Received: by mailman.nyi.freebsd.org (Postfix) id 4676DA4397; Tue, 30 Jul 2019 14:02:11 +0000 (UTC) Delivered-To: embedded@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 46341A4396 for ; Tue, 30 Jul 2019 14:02:11 +0000 (UTC) (envelope-from tsoome@me.com) Received: from mr85p00im-zteg06023901.me.com (mr85p00im-zteg06023901.me.com [17.58.23.192]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 1A5FB9AFC1 for ; Tue, 30 Jul 2019 14:02:11 +0000 (UTC) (envelope-from tsoome@me.com) Received: from nazgul.lan (148-52-235-80.sta.estpak.ee [80.235.52.148]) by mr85p00im-zteg06023901.me.com (Postfix) with ESMTPSA id A93DC9609C6; Tue, 30 Jul 2019 14:02:00 +0000 (UTC) Content-Type: text/plain; charset=utf-8 Mime-Version: 1.0 (Mac OS X Mail 12.4 \(3445.104.11\)) Subject: Re: PCengines APU2C4, 12-STABLE: bootloader failure: Panic: free: guard2 fail @ 0x1000 + 2311663946 from From: Toomas Soome In-Reply-To: <20190730144331.24f83e0c@freyja> Date: Tue, 30 Jul 2019 17:01:57 +0300 Cc: "O. Hartmann" , "freebsd-embedded@freebsd.org" , FreeBSD CURRENT Content-Transfer-Encoding: quoted-printable Message-Id: References: <20190724101132.5560377a@thor.intern.walstatt.dynvpn.de> <20190724120720.4382397c@thor.intern.walstatt.dynvpn.de> <20190724154901.0c114ebe@thor.intern.walstatt.dynvpn.de> <93EFC481-50A1-491C-87BB-12A35F3302EE@me.com> <20190730144331.24f83e0c@freyja> To: "O. Hartmann" X-Mailer: Apple Mail (2.3445.104.11) X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:, , definitions=2019-07-30_07:, , signatures=0 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0 malwarescore=0 phishscore=0 bulkscore=0 spamscore=0 clxscore=1011 mlxscore=0 mlxlogscore=999 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1812120000 definitions=main-1907300146 X-Rspamd-Queue-Id: 46ED69AFC5 X-Spamd-Bar: ------ X-Spamd-Result: default: False [-6.98 / 15.00]; NEURAL_HAM_MEDIUM(-1.00)[-1.000,0]; NEURAL_HAM_SHORT(-0.98)[-0.982,0]; REPLY(-4.00)[]; NEURAL_HAM_LONG(-1.00)[-1.000,0] X-BeenThere: freebsd-embedded@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Dedicated and Embedded Systems List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 30 Jul 2019 14:02:11 -0000 > On 30 Jul 2019, at 15:43, O. Hartmann wrote: >=20 > On Wed, 24 Jul 2019 18:07:22 +0300 > Toomas Soome wrote: >=20 >>> On 24 Jul 2019, at 16:48, O. Hartmann = wrote: >>>=20 >>> -----BEGIN PGP SIGNED MESSAGE----- >>> Hash: SHA256 >>>=20 >>> Am Wed, 24 Jul 2019 12:06:53 +0200 >>> "O. Hartmann" > >>> schrieb:=20 >>>> -----BEGIN PGP SIGNED MESSAGE----- >>>> Hash: SHA256 >>>>=20 >>>> Am Wed, 24 Jul 2019 12:09:16 +0300 >>>> Toomas Soome schrieb: >>>>=20 >>>>>> On 24 Jul 2019, at 11:11, O. Hartmann = wrote: >>>>>>=20 >>>>>> -----BEGIN PGP SIGNED MESSAGE----- >>>>>> Hash: SHA256 >>>>>>=20 >>>>>> Hallo, >>>>>>=20 >>>>>> on APU2C4 from PCengines with latest firmware apu2_v4.9.0.7.rom, = SeaBIOS >>>>>> rel-1.12.1.3-0-g300e8b7, booting via legacy MBR FreeBSD 12-STABLE >>>>>> r350274 (the same with r350115) fails to boot with an immediate = loader >>>>>> error: >>>>>>=20 >>>>>> [...] >>>>>> SeaBIOS (version rel-1.12.1.3-0-g300e8b7) >>>>>>=20 >>>>>> Press F10 key now for boot menu >>>>>>=20 >>>>>> Booting from Hard Disk... >>>>>> / >>>>>>=20 >>>>>> onsoles: internal video/keyboard =20 >>>>>> IOS drive C: is disk0=20 >>>>>> IOS drive D: is disk1=20 >>>>>> IOS 639kB/3404444kB available memory=20 >>>>>>=20 >>>>>> reeBSD/x86 bootstrap loader, Revision 1.1 =20 >>>>>> Mon Apr 15 21:28:11 CEST 2019 root@thor)=20 >>>>>> anic: free: guard2 fail @ 0x1000 + 2311663946 from >>>>>> X=C3=A7u0=C3=A7}4=C3=A7l$=E2=99=A6=E2=94=9C=C3=AD@=E2=94=A4=E2=99=A0= :2106163957 -> Press a key on the console to reboot >>>>>> <-- [=E2=80=A6] =20 >>>>>=20 >>>>>=20 >>>>> This is definitely something =E2=80=9Cfunny=E2=80=9D, we are = apparently attempting to >>>>> free pointer 0x1000 which is definitely wrong because our heap = should be >>>>> just below 4GB line. Since we do get list of disks printed, also = memory >>>>> and version, it means we get error from interpretator - it is = possible >>>>> the stack did clash with bss and hence the corruption. =20 >>>>=20 >>>> I realized that I have defined=20 >>>>=20 >>>> WITH_KERNEL_RETPOLINE=3DYES >>>>=20 >>>> and since I use to build NanoBSD with -DNO_CLEAN, I'm just now = compiling a >>>> clean NanoBSD with RETPOLINE mitigations disabled so far - trying = to check >>>> whether either of the ways to build causes the issue. >>>>=20 >>>>>=20 >>>>> You can try to press space on first spinner and enter alternate = loader on >>>>> boot: prompt. (enter ?/boot on boot: prompt to see the file list). = =20 >>>>=20 >>>> I try a soon as the build process has finished and if the problem = is then >>>> still present. =20 >>>=20 >>>=20 >>> With a fresh build and no RETPOLINE mitigation (neither kernel nor = world) >>> the phenomenon as described above is still the same. I tried an = alternative >>> loader as requested, but without success. When choosing loader_4th, = I get >>> this error: >>>=20 >>> [...] >>> FreeBSD/x86 boot >>> Default: 0:ad(0p3)/boot/loader >>> boot: /boot/loader_4th/ >>>=20 >>> onsoles: internal video/keyboard >>> IOS drive C: is disk0 >>> IOS drive D: is disk1 >>> IOS 639kB/3404444kB available memory >>>=20 >>> reeBSD/x86 bootstrap loader, Revision 1.1 >>> Wed Jul 24 12:51:12 CEST 2019 root@thor) >>> anic: No heap setup =20 >>> -> Press a key on the console to reboot <=E2=80=94 =20 >>>=20 >>=20 >> Now this is bad. if my math is correct, this system is supposed to = have 3GB >> of RAM, so are there specific build exceptions in place? see >> stand/i386/loader/main.c, function main, after call to bios_getmem(). >>=20 >> rgds, >> toomas >=20 >=20 > Hello Toomas, > the PCengine APU2C4 is supposed to have 4GB of RAM - wouldn't have a = 64bit > system seen the whole range? On 32bit systems, there was a memory hole = I assume > for memory mapped I/O of several PCI devices. This is the first time = I have a > look at the memory reported by the kernel and its confusing me a bit. >=20 The BIOS loader is only running in 32-bit protected mode, we switch to = 64-bit when we start the kernel. With UEFI we do have 32- and 64-bit = loaders, depending on firmware implementation (because we need to use = firmware provided functions), but even there there are buggy systems and = we keep memory usage below 4G line. > I do not have any kind of specific build exceptions in place = targetting the > memory. Of course, for memory usage and image size optimizations I = defined > several WITHOUT_ and WITH_ tags for build and install - but they never = caused > any trouble and have not been changed so far. Unfortunately the only way to identify what is the cause, is to start = inserting debug printf=E2=80=99s into the code paths and to see where we = get blown up. There can be several reasons, and the most common case = still is plain and simple buffer overruns=E2=80=A6 debugging this is = time consuming job. rgds, toomas >=20 >>=20 >>>=20 >>> Loader loader_simp ends up in stuck console with no output: >>>=20 >>> [...] >>> FreeBSD/x86 boot >>> Default: 0:ad(0p3)/boot/loader >>> boot: /boot/loader_4th/ >>>=20 >>> onsoles: internal video/keyboard >>> IOS drive C: is disk0 >>> IOS drive D: is disk1 >>> IOS 639kB/3404444kB available memory >>>=20 >>> reeBSD/x86 bootstrap loader, Revision 1.1 >>> Wed Jul 24 12:59:23 CEST 2019 root@thor) >>> [...] >>>=20 >>> regards >>> oh =20 >>>>=20 >>>>>=20 >>>>>=20 >>>>>>=20 >>>>>>=20 >>>>>>=20 >>>>>>=20 >>>>>> Booting 12.0-STABLE #78 r349288: Sat Jun 22 09:10:25 CEST 2019 = amd64 >>>>>> works fine with nothing changed except the OS version. >>>>>>=20 >>>>>>=20 >>>>>> Booting 2.0-STABLE #78 r349288 works fine: >>>>>>=20 >>>>>> [...] >>>>>> SeaBIOS (version rel-1.12.1.3-0-g300e8b7) >>>>>>=20 >>>>>> Press F10 key now for boot menu >>>>>>=20 >>>>>> Booting from Hard Disk... >>>>>> | >>>>>>=20 >>>>>> onsoles: internal video/keyboard =20 >>>>>> IOS drive C: is disk0=20 >>>>>> IOS drive D: is disk1=20 >>>>>> IOS 639kB/3404444kB available memory=20 >>>>>>=20 >>>>>> reeBSD/x86 bootstrap loader, Revision 1.1=20 >>>>>> Mon Apr 15 21:28:11 CEST 2019 root@thor)=20 >>>>>> oading /boot/defaults/loader.conf=20 >>>>>> oading /boot/device.hints=20 >>>>>> oading /boot/loader.conf=20 >>>>>> oading /boot/loader.conf.local=20 >>>>>> Loading kernel... >>>>>> /boot/kernel/kernel text=3D0xb005e8 \ >>>>>> [...] >>>>>>=20 >>>>>> In the message taken from the serial console the first column of >>>>>> characters is lost due to an error in the output which seems = FreeBSD >>>>>> related.=20 >>>>>=20 >>>>> It certainly does look weird - sio_putc() is used in boot2 and = it=E2=80=99s >>>>> implementation is using same principe as comc_putchat() in = comconsole.c >>>>> (even if it is asm versus c code). Since the serial data is = interpreted >>>>> by terminal, it feels more about terminal emulator issue (line >>>>> discipline, cabling, usb to serial dongle?) =20 >>>>=20 >>>> We use here a null modem cabling with an integrated USB-to-UART/TTL >>>> converter, which is attached to a FreeBSD CURRENT (most recent) = box: >>>>=20 >>>> [...] >>>> ugen2.3: at usbus2 >>>> uftdi0 on uhub4 >>>> uftdi0: on usbus2 >>>> [...] >>>>=20 >>>> it is a=20 >>>> StarTech.com 1 Port USB Nullmodem RS232 Adapter Kabel (USB 2.0 FTDI >>>> chipset). >>>>=20 >>>> Regards, >>>> oh >>>>=20 >>>>=20 >>>>>=20 >>>>> rgds, >>>>> toomas >>>>>=20 >>>>>=20 >>>>>>=20 >>>>>> The file /boot/loader.conf.local contains these lines in both, = working >>>>>> and non-working, scenario: >>>>>>=20 >>>>>> [...] >>>>>> boot_serial=3D"YES" >>>>>> # serial speed in bits/s >>>>>> comconsole_speed=3D"115200" >>>>>> console=3D"comconsole" >>>>>>=20 >>>>>> autoboot_delay=3D"0" >>>>>>=20 >>>>>> verbose_loading=3D"YES" >>>>>> loader_logo=3D"orb" >>>>>> beastie_disable=3D"YES" >>>>>>=20 >>>>>> ### Microcode >>>>>> #cpu_microcode_load=3D"YES" # Set this to YES to = load and >>>>>> apply a #cpu_microcode_name=3D"/boot/firmware/intel-ucode.bin" # = Set this >>>>>> to the microcode #cpu_microcode_type=3D"cpu_microcode" # = Required for >>>>>> the kernel to find # the microcode update file. >>>>>>=20 >>>>>>=20 >>>>>> # disable Process Table Isolation >>>>>> #vm.pmap.pti=3D0 >>>>>>=20 >>>>>> kern.geom.label.gptid.enable=3D0 >>>>>>=20 >>>>>> # Limit the phys. memory >>>>>> #hw.physmem=3D1073741824 # 1 G >>>>>> #hw.physmem=3D536870912 # 512 MB >>>>>> #hw.physmem=3D268435456 # 256 MB >>>>>>=20 >>>>>> # Da mehr als 1 igb NIC an Bord! Siehe man igb(4) >>>>>> kern.ipc.nmbclusters=3D757350 >>>>>> #kern.ipc.nmbjumbo9k=3D8192 >>>>>>=20 >>>>>> # NIC >>>>>> #hw.em.max_interrupt_rate=3D32000 >>>>>> hw.em.max_interrupt_rate=3D16000 >>>>>>=20 >>>>>> #If non-zero, enable EXPERIMENTAL feature to improve concurrent = Fortuna >>>>>> performance kern.random.fortuna.concurrent_read=3D"1" >>>>>>=20 >>>>>> # Forward Information Bases (FIBs) >>>>>> net.fibs=3D10 >>>>>> net.add_addr_allfibs=3D0 >>>>>>=20 >>>>>> [...] >>>>>>=20 >>>>>>=20 >>>>>> Again, with the exact same setting 12-STABLE r349288 boots fine, >>>>>> rr350274 doesn't. FreeBSD 12-STABLE r >>>>>>=20 >>>>>> Can someone please help? >>>>>>=20 >>>>>> Thanks in advance, oh =20 > [...] > _______________________________________________ > freebsd-current@freebsd.org mailing list > https://lists.freebsd.org/mailman/listinfo/freebsd-current > To unsubscribe, send any mail to = "freebsd-current-unsubscribe@freebsd.org" From owner-freebsd-embedded@freebsd.org Sat Aug 3 17:52:37 2019 Return-Path: Delivered-To: freebsd-embedded@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 0EEA0B64F6 for ; Sat, 3 Aug 2019 17:52:37 +0000 (UTC) (envelope-from o.hartmann@walstatt.org) Received: from mailman.nyi.freebsd.org (unknown [127.0.1.3]) by mx1.freebsd.org (Postfix) with ESMTP id 461BSh5HS9z4Vd4 for ; Sat, 3 Aug 2019 17:52:36 +0000 (UTC) (envelope-from o.hartmann@walstatt.org) Received: by mailman.nyi.freebsd.org (Postfix) id B391FB64F5; Sat, 3 Aug 2019 17:52:36 +0000 (UTC) Delivered-To: embedded@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id B3503B64F4 for ; Sat, 3 Aug 2019 17:52:36 +0000 (UTC) (envelope-from o.hartmann@walstatt.org) Received: from mout.gmx.net (mout.gmx.net [212.227.17.22]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "mout.gmx.net", Issuer "TeleSec ServerPass Class 2 CA" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 461BSg35QJz4Vd3 for ; Sat, 3 Aug 2019 17:52:34 +0000 (UTC) (envelope-from o.hartmann@walstatt.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1564854749; bh=VKcVusGhcpDte66JnwxMFY0zIHQYmFsLfmWRMtAvKEU=; h=X-UI-Sender-Class:Date:From:To:Cc:Subject:In-Reply-To:References; b=hzgJjw9LQRbzf82KSTcMuOreS4oA+o3KAeaSk9MXXYpJlt3pwRWihH7GoK3EojwjK wUWV9SxFjFgB66+GOfEoMO3I0w/7WNmzsIPG3maUx1WpR7Hw4w6CRMIru2lW0v24fe +39UTGy9q22QsV5GuURt/H5uHX7/R1cfzx7eHvJs= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from thor.intern.walstatt.dynvpn.de ([89.14.56.131]) by mail.gmx.com (mrgmx105 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MgNct-1iYozD0T0h-00hxZH; Sat, 03 Aug 2019 19:39:00 +0200 Date: Sat, 3 Aug 2019 19:38:26 +0200 From: "O. Hartmann" To: Toomas Soome Cc: "O. Hartmann" , "freebsd-embedded@freebsd.org" , FreeBSD CURRENT Subject: Re: PCengines APU2C4, 12-STABLE: bootloader failure: Panic: free: guard2 fail @ 0x1000 + 2311663946 from Message-ID: <20190803193853.6eea1b7c@thor.intern.walstatt.dynvpn.de> In-Reply-To: References: <20190724101132.5560377a@thor.intern.walstatt.dynvpn.de> <20190724120720.4382397c@thor.intern.walstatt.dynvpn.de> <20190724154901.0c114ebe@thor.intern.walstatt.dynvpn.de> <93EFC481-50A1-491C-87BB-12A35F3302EE@me.com> <20190730144331.24f83e0c@freyja> Organization: WALSTATT User-Agent: OutScare 3.1415926 X-Operating-System: ImNotAnOperatingSystem 3.141592527 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: base64 X-Provags-ID: V03:K1:ebc2NYlSbuHzLxAAys2X0mMqgI35E+lWJs0uCD7GUItYWu6b3Ax F/hh5wiJacuhH8R29MouBZPdw/0E2HGEsP1fZlwkTt/wQsxyO6+MzDyj1ogvO4SVrtEBTXw 3rguXte4VLKbTNTFcSiyxAqj9Rrft01ziaik3Opil2rRSKUEH5BmqALzk+tDMAz9KY48pOq 0RfW/Ev+9wVqpN1swj2Cg== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:oO+V02Cno8k=:iPe0D6XA7VkTKlPpldeCDy JKFWWYdxCoO5+KuvveUvd1GZXLXkJqzksEbleWnUUMbU7oZlVqUdYcjQORmxXnF2T+4St9exZ aXcq6CcapBQ9cBzc3aRYPXLfbRTQvP3jD+nZIloStzuy4yjRrpoHa6UILlgCtnr2QnmAiKocH MnoQ0ExjlrRhlL5M8zGBWtcts/6mT+efQwP3PHx/UmJz06T3Gfw0A3zPT0/WgLZ7FD4HpiZYF CE27n10CxzbhFkciC71fu5Lb2PXdleS+Tu6u7TvWBApKeQusivKa2JOV0fwdfmZgovCnTkfi1 UVNejl3Bz1asgdkgECvdb2ASrl7qvCT/PstKVRZY0fZVo88Ujw6Q1B7eVZtPi109RWaHhfA38 XATUuCNqS8v3g3tVSxnGTYIIGnvXplgamYo1CDZjHunUsrnV05ZPKTMF9LZRxbDPrEGwr/Ghu HEVVZG4FuLgxG49bA1NtU2+QW8n6GKg+RMIE8MWb/K090vQSQkNYDrV0qxhH4t+xpe0OJYaaH nVytKhbR9ZSU1KGk/betCT8UD+46+Jo07tgxLbxtgygoh+W3Wxpu6xngh/N2T/UjYe6DlXJS8 dUHtK7OG1RnPFEqcvQ8XuKBU9nnPkI/pBdUNFMD6Z9c9goiYJme7fu0mzLc9yKQJoDJJ2t/ZG PEWpT5vhxKCOpNFSF9d5GYEgAeAix3o0xFRbTJNTw1v7ZdUI6mtGRCbQ+XdMmVYULxwdNF8yu 2x2ckz7DrgEC/vA1GvVxeODR+edq8Jy3jzhvgfLHF7OJq98iUnvfycvlz01eent2dWz6It5jW b3LMTBEl/0knG72lElAhDdZlaL1jIWNnp94NE+hVD9EbCOShjAOyoPuxWoealm9zP4Anu/qkU B35YECJseC2TjD1PJEGQtmuOLVsWle/yhdU5s/ZNxGpEzDgG9MLIhoSJwTxwkcJK14swYoNXG rL0ZRwJvQSxUY5U4pIR4c+SzaiGAoGs0nAgSZ91BgurkVIgijoUUUbbM8AyfcND4wKF4dYNvK KnwN4cWxHKi/H+dojY3isKXA65vx4KL+HHwS9bH8RCz7WkPpAyke1qgb8qY64OkRUJxBg68Qn rpzTZSRmM95T9pukNnoNmBlNf9DhESp1k4SMawCPXCblulQNC8nSKoKx2VFLI//FnTqojZ50Z gZzjQ= X-Rspamd-Queue-Id: 461BSg35QJz4Vd3 X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org; dkim=pass header.d=gmx.net header.s=badeba3b8450 header.b=hzgJjw9L; dmarc=none; spf=none (mx1.freebsd.org: domain of o.hartmann@walstatt.org has no SPF policy when checking 212.227.17.22) smtp.mailfrom=o.hartmann@walstatt.org X-Spamd-Result: default: False [-2.26 / 15.00]; ARC_NA(0.00)[]; RCVD_VIA_SMTP_AUTH(0.00)[]; R_DKIM_ALLOW(-0.20)[gmx.net:s=badeba3b8450]; FROM_HAS_DN(0.00)[]; RCPT_COUNT_THREE(0.00)[4]; IP_SCORE(-1.02)[ip: (-5.94), ipnet: 212.227.0.0/16(-1.45), asn: 8560(2.30), country: DE(-0.01)]; MIME_GOOD(-0.10)[text/plain]; DMARC_NA(0.00)[walstatt.org]; HAS_ORG_HEADER(0.00)[]; TO_MATCH_ENVRCPT_SOME(0.00)[]; TO_DN_ALL(0.00)[]; DKIM_TRACE(0.00)[gmx.net:+]; MIME_BASE64_TEXT(0.10)[]; NEURAL_HAM_SHORT(-0.94)[-0.939,0]; R_SPF_NA(0.00)[]; FREEMAIL_TO(0.00)[me.com]; RCVD_IN_DNSWL_LOW(-0.10)[22.17.227.212.list.dnswl.org : 127.0.3.1]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+]; ASN(0.00)[asn:8560, ipnet:212.227.0.0/16, country:DE]; RCVD_COUNT_TWO(0.00)[2]; RCVD_TLS_ALL(0.00)[]; RECEIVED_SPAMHAUS_PBL(0.00)[131.56.14.89.khpj7ygk5idzvmvt5x4ziurxhy.zen.dq.spamhaus.net : 127.0.0.11] X-BeenThere: freebsd-embedded@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Dedicated and Embedded Systems List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 03 Aug 2019 17:52:37 -0000 LS0tLS1CRUdJTiBQR1AgU0lHTkVEIE1FU1NBR0UtLS0tLQ0KSGFzaDogU0hBMjU2DQoNCkFtIFR1 ZSwgMzAgSnVsIDIwMTkgMTc6MDE6NTcgKzAzMDANClRvb21hcyBTb29tZSA8dHNvb21lQG1lLmNv bT4gc2NocmllYjoNCg0KPiA+IE9uIDMwIEp1bCAyMDE5LCBhdCAxNTo0MywgTy4gSGFydG1hbm4g PG8uaGFydG1hbm5Ad2Fsc3RhdHQub3JnPiB3cm90ZToNCj4gPiANCj4gPiBPbiBXZWQsIDI0IEp1 bCAyMDE5IDE4OjA3OjIyICswMzAwDQo+ID4gVG9vbWFzIFNvb21lIDx0c29vbWVAbWUuY29tPiB3 cm90ZToNCj4gPiAgIA0KPiA+Pj4gT24gMjQgSnVsIDIwMTksIGF0IDE2OjQ4LCBPLiBIYXJ0bWFu biA8b2hhcnRtYW5uQHdhbHN0YXR0Lm9yZz4gd3JvdGU6DQo+ID4+PiANCj4gPj4+IC0tLS0tQkVH SU4gUEdQIFNJR05FRCBNRVNTQUdFLS0tLS0NCj4gPj4+IEhhc2g6IFNIQTI1Ng0KPiA+Pj4gDQo+ ID4+PiBBbSBXZWQsIDI0IEp1bCAyMDE5IDEyOjA2OjUzICswMjAwDQo+ID4+PiAiTy4gSGFydG1h bm4iIDxvLmhhcnRtYW5uQHdhbHN0YXR0Lm9yZyA8bWFpbHRvOm8uaGFydG1hbm5Ad2Fsc3RhdHQu b3JnPj4NCj4gPj4+IHNjaHJpZWI6ICAgDQo+ID4+Pj4gLS0tLS1CRUdJTiBQR1AgU0lHTkVEIE1F U1NBR0UtLS0tLQ0KPiA+Pj4+IEhhc2g6IFNIQTI1Ng0KPiA+Pj4+IA0KPiA+Pj4+IEFtIFdlZCwg MjQgSnVsIDIwMTkgMTI6MDk6MTYgKzAzMDANCj4gPj4+PiBUb29tYXMgU29vbWUgPHRzb29tZUBt ZS5jb20+IHNjaHJpZWI6DQo+ID4+Pj4gICANCj4gPj4+Pj4+IE9uIDI0IEp1bCAyMDE5LCBhdCAx MToxMSwgTy4gSGFydG1hbm4gPG9oYXJ0bWFubkB3YWxzdGF0dC5vcmc+IHdyb3RlOg0KPiA+Pj4+ Pj4gDQo+ID4+Pj4+PiAtLS0tLUJFR0lOIFBHUCBTSUdORUQgTUVTU0FHRS0tLS0tDQo+ID4+Pj4+ PiBIYXNoOiBTSEEyNTYNCj4gPj4+Pj4+IA0KPiA+Pj4+Pj4gSGFsbG8sDQo+ID4+Pj4+PiANCj4g Pj4+Pj4+IG9uIEFQVTJDNCBmcm9tIFBDZW5naW5lcyB3aXRoIGxhdGVzdCBmaXJtd2FyZSBhcHUy X3Y0LjkuMC43LnJvbSwgU2VhQklPUw0KPiA+Pj4+Pj4gcmVsLTEuMTIuMS4zLTAtZzMwMGU4Yjcs IGJvb3RpbmcgdmlhIGxlZ2FjeSBNQlIgRnJlZUJTRCAxMi1TVEFCTEUNCj4gPj4+Pj4+IHIzNTAy NzQgKHRoZSBzYW1lIHdpdGggcjM1MDExNSkgZmFpbHMgdG8gYm9vdCB3aXRoIGFuIGltbWVkaWF0 ZSBsb2FkZXINCj4gPj4+Pj4+IGVycm9yOg0KPiA+Pj4+Pj4gDQo+ID4+Pj4+PiBbLi4uXQ0KPiA+ Pj4+Pj4gU2VhQklPUyAodmVyc2lvbiByZWwtMS4xMi4xLjMtMC1nMzAwZThiNykNCj4gPj4+Pj4+ IA0KPiA+Pj4+Pj4gUHJlc3MgRjEwIGtleSBub3cgZm9yIGJvb3QgbWVudQ0KPiA+Pj4+Pj4gDQo+ ID4+Pj4+PiBCb290aW5nIGZyb20gSGFyZCBEaXNrLi4uDQo+ID4+Pj4+PiAvDQo+ID4+Pj4+PiAN Cj4gPj4+Pj4+IG9uc29sZXM6IGludGVybmFsIHZpZGVvL2tleWJvYXJkICAgDQo+ID4+Pj4+PiBJ T1MgZHJpdmUgQzogaXMgZGlzazAgDQo+ID4+Pj4+PiBJT1MgZHJpdmUgRDogaXMgZGlzazEgDQo+ ID4+Pj4+PiBJT1MgNjM5a0IvMzQwNDQ0NGtCIGF2YWlsYWJsZSBtZW1vcnkgDQo+ID4+Pj4+PiAN Cj4gPj4+Pj4+IHJlZUJTRC94ODYgYm9vdHN0cmFwIGxvYWRlciwgUmV2aXNpb24gMS4xICANCj4g Pj4+Pj4+IE1vbiBBcHIgMTUgMjE6Mjg6MTEgQ0VTVCAyMDE5IHJvb3RAdGhvcikgDQo+ID4+Pj4+ PiBhbmljOiBmcmVlOiBndWFyZDIgZmFpbCBAIDB4MTAwMCArIDIzMTE2NjM5NDYgZnJvbQ0KPiA+ Pj4+Pj4gWMOndTDDp300w6dsJOKZpuKUnMOtQOKUpOKZoDoyMTA2MTYzOTU3IC0+IFByZXNzIGEg a2V5IG9uIHRoZSBjb25zb2xlIHRvIHJlYm9vdA0KPiA+Pj4+Pj4gPC0tIFvigKZdICAgICAgICAN Cj4gPj4+Pj4gDQo+ID4+Pj4+IA0KPiA+Pj4+PiBUaGlzIGlzIGRlZmluaXRlbHkgc29tZXRoaW5n IOKAnGZ1bm554oCdLCB3ZSBhcmUgYXBwYXJlbnRseSBhdHRlbXB0aW5nIHRvDQo+ID4+Pj4+IGZy ZWUgcG9pbnRlciAweDEwMDAgd2hpY2ggaXMgZGVmaW5pdGVseSB3cm9uZyBiZWNhdXNlIG91ciBo ZWFwIHNob3VsZCBiZQ0KPiA+Pj4+PiBqdXN0IGJlbG93IDRHQiBsaW5lLiBTaW5jZSB3ZSBkbyBn ZXQgbGlzdCBvZiBkaXNrcyBwcmludGVkLCBhbHNvIG1lbW9yeQ0KPiA+Pj4+PiBhbmQgdmVyc2lv biwgaXQgbWVhbnMgd2UgZ2V0IGVycm9yIGZyb20gaW50ZXJwcmV0YXRvciAtIGl0IGlzIHBvc3Np YmxlDQo+ID4+Pj4+IHRoZSBzdGFjayBkaWQgY2xhc2ggd2l0aCBic3MgYW5kIGhlbmNlIHRoZSBj b3JydXB0aW9uLiAgICAgIA0KPiA+Pj4+IA0KPiA+Pj4+IEkgcmVhbGl6ZWQgdGhhdCBJIGhhdmUg ZGVmaW5lZCANCj4gPj4+PiANCj4gPj4+PiBXSVRIX0tFUk5FTF9SRVRQT0xJTkU9WUVTDQo+ID4+ Pj4gDQo+ID4+Pj4gYW5kIHNpbmNlIEkgdXNlIHRvIGJ1aWxkIE5hbm9CU0Qgd2l0aCAtRE5PX0NM RUFOLCBJJ20ganVzdCBub3cgY29tcGlsaW5nIGENCj4gPj4+PiBjbGVhbiBOYW5vQlNEIHdpdGgg UkVUUE9MSU5FIG1pdGlnYXRpb25zIGRpc2FibGVkIHNvIGZhciAtIHRyeWluZyB0byBjaGVjaw0K PiA+Pj4+IHdoZXRoZXIgZWl0aGVyIG9mIHRoZSB3YXlzIHRvIGJ1aWxkIGNhdXNlcyB0aGUgaXNz dWUuDQo+ID4+Pj4gICANCj4gPj4+Pj4gDQo+ID4+Pj4+IFlvdSBjYW4gdHJ5IHRvIHByZXNzIHNw YWNlIG9uIGZpcnN0IHNwaW5uZXIgYW5kIGVudGVyIGFsdGVybmF0ZSBsb2FkZXIgb24NCj4gPj4+ Pj4gYm9vdDogcHJvbXB0LiAoZW50ZXIgPy9ib290IG9uIGJvb3Q6IHByb21wdCB0byBzZWUgdGhl IGZpbGUgbGlzdCkuICAgICAgDQo+ID4+Pj4gDQo+ID4+Pj4gSSB0cnkgYSBzb29uIGFzIHRoZSBi dWlsZCBwcm9jZXNzIGhhcyBmaW5pc2hlZCBhbmQgaWYgdGhlIHByb2JsZW0gaXMgdGhlbg0KPiA+ Pj4+IHN0aWxsIHByZXNlbnQuICAgIA0KPiA+Pj4gDQo+ID4+PiANCj4gPj4+IFdpdGggYSBmcmVz aCBidWlsZCBhbmQgbm8gUkVUUE9MSU5FIG1pdGlnYXRpb24gKG5laXRoZXIga2VybmVsIG5vciB3 b3JsZCkNCj4gPj4+IHRoZSBwaGVub21lbm9uIGFzIGRlc2NyaWJlZCBhYm92ZSBpcyBzdGlsbCB0 aGUgc2FtZS4gSSB0cmllZCBhbiBhbHRlcm5hdGl2ZQ0KPiA+Pj4gbG9hZGVyIGFzIHJlcXVlc3Rl ZCwgYnV0IHdpdGhvdXQgc3VjY2Vzcy4gV2hlbiBjaG9vc2luZyBsb2FkZXJfNHRoLCBJIGdldA0K PiA+Pj4gdGhpcyBlcnJvcjoNCj4gPj4+IA0KPiA+Pj4gWy4uLl0NCj4gPj4+IEZyZWVCU0QveDg2 IGJvb3QNCj4gPj4+IERlZmF1bHQ6IDA6YWQoMHAzKS9ib290L2xvYWRlcg0KPiA+Pj4gYm9vdDog IC9ib290L2xvYWRlcl80dGgvDQo+ID4+PiANCj4gPj4+IG9uc29sZXM6IGludGVybmFsIHZpZGVv L2tleWJvYXJkDQo+ID4+PiBJT1MgZHJpdmUgQzogaXMgZGlzazANCj4gPj4+IElPUyBkcml2ZSBE OiBpcyBkaXNrMQ0KPiA+Pj4gSU9TIDYzOWtCLzM0MDQ0NDRrQiBhdmFpbGFibGUgbWVtb3J5DQo+ ID4+PiANCj4gPj4+IHJlZUJTRC94ODYgYm9vdHN0cmFwIGxvYWRlciwgUmV2aXNpb24gMS4xDQo+ ID4+PiBXZWQgSnVsIDI0IDEyOjUxOjEyIENFU1QgMjAxOSByb290QHRob3IpDQo+ID4+PiBhbmlj OiBObyBoZWFwIHNldHVwICAgIA0KPiA+Pj4gLT4gUHJlc3MgYSBrZXkgb24gdGhlIGNvbnNvbGUg dG8gcmVib290IDzigJQgICAgDQo+ID4+PiAgIA0KPiA+PiANCj4gPj4gTm93IHRoaXMgaXMgYmFk LiBpZiBteSBtYXRoIGlzIGNvcnJlY3QsIHRoaXMgc3lzdGVtIGlzIHN1cHBvc2VkIHRvIGhhdmUg M0dCDQo+ID4+IG9mIFJBTSwgc28gYXJlIHRoZXJlIHNwZWNpZmljIGJ1aWxkIGV4Y2VwdGlvbnMg aW4gcGxhY2U/IHNlZQ0KPiA+PiBzdGFuZC9pMzg2L2xvYWRlci9tYWluLmMsIGZ1bmN0aW9uIG1h aW4sIGFmdGVyIGNhbGwgdG8gYmlvc19nZXRtZW0oKS4NCj4gPj4gDQo+ID4+IHJnZHMsDQo+ID4+ IHRvb21hcyAgDQo+ID4gDQo+ID4gDQo+ID4gSGVsbG8gVG9vbWFzLA0KPiA+IHRoZSBQQ2VuZ2lu ZSBBUFUyQzQgaXMgc3VwcG9zZWQgdG8gaGF2ZSA0R0Igb2YgUkFNIC0gd291bGRuJ3QgaGF2ZSBh IDY0Yml0DQo+ID4gc3lzdGVtIHNlZW4gdGhlIHdob2xlIHJhbmdlPyBPbiAzMmJpdCBzeXN0ZW1z LCB0aGVyZSB3YXMgYSBtZW1vcnkgaG9sZSBJIGFzc3VtZQ0KPiA+IGZvciBtZW1vcnkgbWFwcGVk ICBJL08gb2Ygc2V2ZXJhbCBQQ0kgZGV2aWNlcy4gVGhpcyBpcyB0aGUgZmlyc3QgdGltZSBJIGhh dmUgYQ0KPiA+IGxvb2sgYXQgdGhlIG1lbW9yeSByZXBvcnRlZCBieSB0aGUga2VybmVsIGFuZCBp dHMgY29uZnVzaW5nIG1lIGEgYml0Lg0KPiA+ICAgDQo+IA0KPiBUaGUgQklPUyBsb2FkZXIgaXMg b25seSBydW5uaW5nIGluIDMyLWJpdCBwcm90ZWN0ZWQgbW9kZSwgd2Ugc3dpdGNoIHRvIDY0LWJp dCB3aGVuIHdlIHN0YXJ0DQo+IHRoZSBrZXJuZWwuIFdpdGggVUVGSSB3ZSBkbyBoYXZlIDMyLSBh bmQgNjQtYml0IGxvYWRlcnMsIGRlcGVuZGluZyBvbiBmaXJtd2FyZQ0KPiBpbXBsZW1lbnRhdGlv biAoYmVjYXVzZSB3ZSBuZWVkIHRvIHVzZSBmaXJtd2FyZSBwcm92aWRlZCBmdW5jdGlvbnMpLCBi dXQgZXZlbiB0aGVyZSB0aGVyZQ0KPiBhcmUgYnVnZ3kgc3lzdGVtcyBhbmQgd2Uga2VlcCBtZW1v cnkgdXNhZ2UgYmVsb3cgNEcgbGluZS4NCj4gDQo+ID4gSSBkbyBub3QgaGF2ZSBhbnkga2luZCBv ZiBzcGVjaWZpYyBidWlsZCBleGNlcHRpb25zIGluIHBsYWNlIHRhcmdldHRpbmcgdGhlDQo+ID4g bWVtb3J5LiBPZiBjb3Vyc2UsIGZvciBtZW1vcnkgdXNhZ2UgYW5kIGltYWdlIHNpemUgb3B0aW1p emF0aW9ucyBJIGRlZmluZWQNCj4gPiBzZXZlcmFsIFdJVEhPVVRfIGFuZCBXSVRIXyB0YWdzIGZv ciBidWlsZCBhbmQgaW5zdGFsbCAtIGJ1dCB0aGV5IG5ldmVyIGNhdXNlZA0KPiA+IGFueSB0cm91 YmxlIGFuZCBoYXZlIG5vdCBiZWVuIGNoYW5nZWQgc28gZmFyLiAgDQo+IA0KPiBVbmZvcnR1bmF0 ZWx5IHRoZSBvbmx5IHdheSB0byBpZGVudGlmeSB3aGF0IGlzIHRoZSBjYXVzZSwgaXMgdG8gc3Rh cnQgaW5zZXJ0aW5nIGRlYnVnDQo+IHByaW50ZuKAmXMgaW50byB0aGUgY29kZSBwYXRocyBhbmQg dG8gc2VlIHdoZXJlIHdlIGdldCBibG93biB1cC4gVGhlcmUgY2FuIGJlIHNldmVyYWwgcmVhc29u cywNCj4gYW5kIHRoZSBtb3N0IGNvbW1vbiBjYXNlIHN0aWxsIGlzIHBsYWluIGFuZCBzaW1wbGUg YnVmZmVyIG92ZXJydW5z4oCmIGRlYnVnZ2luZyB0aGlzIGlzIHRpbWUNCj4gY29uc3VtaW5nIGpv Yi4NCj4gDQo+IHJnZHMsDQo+IHRvb21hcw0KPiANCj4gDQo+ID4gICANCj4gPj4gICANCj4gPj4+ IA0KPiA+Pj4gTG9hZGVyIGxvYWRlcl9zaW1wIGVuZHMgdXAgaW4gc3R1Y2sgY29uc29sZSB3aXRo IG5vIG91dHB1dDoNCj4gPj4+IA0KPiA+Pj4gWy4uLl0NCj4gPj4+IEZyZWVCU0QveDg2IGJvb3QN Cj4gPj4+IERlZmF1bHQ6IDA6YWQoMHAzKS9ib290L2xvYWRlcg0KPiA+Pj4gYm9vdDogIC9ib290 L2xvYWRlcl80dGgvDQo+ID4+PiANCj4gPj4+IG9uc29sZXM6IGludGVybmFsIHZpZGVvL2tleWJv YXJkDQo+ID4+PiBJT1MgZHJpdmUgQzogaXMgZGlzazANCj4gPj4+IElPUyBkcml2ZSBEOiBpcyBk aXNrMQ0KPiA+Pj4gSU9TIDYzOWtCLzM0MDQ0NDRrQiBhdmFpbGFibGUgbWVtb3J5DQo+ID4+PiAN Cj4gPj4+IHJlZUJTRC94ODYgYm9vdHN0cmFwIGxvYWRlciwgUmV2aXNpb24gMS4xDQo+ID4+PiBX ZWQgSnVsIDI0IDEyOjU5OjIzIENFU1QgMjAxOSByb290QHRob3IpDQo+ID4+PiBbLi4uXQ0KPiA+ Pj4gDQo+ID4+PiByZWdhcmRzDQo+ID4+PiBvaCAgICANCj4gPj4+PiAgIA0KPiA+Pj4+PiANCj4g Pj4+Pj4gICANCj4gPj4+Pj4+IA0KPiA+Pj4+Pj4gDQo+ID4+Pj4+PiANCj4gPj4+Pj4+IA0KPiA+ Pj4+Pj4gQm9vdGluZyAxMi4wLVNUQUJMRSAjNzggcjM0OTI4ODogU2F0IEp1biAyMiAwOToxMDoy NSBDRVNUIDIwMTkgYW1kNjQNCj4gPj4+Pj4+IHdvcmtzIGZpbmUgd2l0aCBub3RoaW5nIGNoYW5n ZWQgZXhjZXB0IHRoZSBPUyB2ZXJzaW9uLg0KPiA+Pj4+Pj4gDQo+ID4+Pj4+PiANCj4gPj4+Pj4+ IEJvb3RpbmcgMi4wLVNUQUJMRSAjNzggcjM0OTI4OCB3b3JrcyBmaW5lOg0KPiA+Pj4+Pj4gDQo+ ID4+Pj4+PiBbLi4uXQ0KPiA+Pj4+Pj4gU2VhQklPUyAodmVyc2lvbiByZWwtMS4xMi4xLjMtMC1n MzAwZThiNykNCj4gPj4+Pj4+IA0KPiA+Pj4+Pj4gUHJlc3MgRjEwIGtleSBub3cgZm9yIGJvb3Qg bWVudQ0KPiA+Pj4+Pj4gDQo+ID4+Pj4+PiBCb290aW5nIGZyb20gSGFyZCBEaXNrLi4uDQo+ID4+ Pj4+PiB8DQo+ID4+Pj4+PiANCj4gPj4+Pj4+IG9uc29sZXM6IGludGVybmFsIHZpZGVvL2tleWJv YXJkICAgDQo+ID4+Pj4+PiBJT1MgZHJpdmUgQzogaXMgZGlzazAgDQo+ID4+Pj4+PiBJT1MgZHJp dmUgRDogaXMgZGlzazEgDQo+ID4+Pj4+PiBJT1MgNjM5a0IvMzQwNDQ0NGtCIGF2YWlsYWJsZSBt ZW1vcnkgDQo+ID4+Pj4+PiANCj4gPj4+Pj4+IHJlZUJTRC94ODYgYm9vdHN0cmFwIGxvYWRlciwg UmV2aXNpb24gMS4xIA0KPiA+Pj4+Pj4gTW9uIEFwciAxNSAyMToyODoxMSBDRVNUIDIwMTkgcm9v dEB0aG9yKSANCj4gPj4+Pj4+IG9hZGluZyAvYm9vdC9kZWZhdWx0cy9sb2FkZXIuY29uZiANCj4g Pj4+Pj4+IG9hZGluZyAvYm9vdC9kZXZpY2UuaGludHMgDQo+ID4+Pj4+PiBvYWRpbmcgL2Jvb3Qv bG9hZGVyLmNvbmYgDQo+ID4+Pj4+PiBvYWRpbmcgL2Jvb3QvbG9hZGVyLmNvbmYubG9jYWwgDQo+ ID4+Pj4+PiBMb2FkaW5nIGtlcm5lbC4uLg0KPiA+Pj4+Pj4gL2Jvb3Qva2VybmVsL2tlcm5lbCB0 ZXh0PTB4YjAwNWU4IFwNCj4gPj4+Pj4+IFsuLi5dDQo+ID4+Pj4+PiANCj4gPj4+Pj4+IEluIHRo ZSBtZXNzYWdlIHRha2VuIGZyb20gdGhlIHNlcmlhbCBjb25zb2xlIHRoZSBmaXJzdCBjb2x1bW4g b2YNCj4gPj4+Pj4+IGNoYXJhY3RlcnMgaXMgbG9zdCBkdWUgdG8gYW4gZXJyb3IgaW4gdGhlIG91 dHB1dCB3aGljaCBzZWVtcyBGcmVlQlNEDQo+ID4+Pj4+PiByZWxhdGVkLiAgIA0KPiA+Pj4+PiAN Cj4gPj4+Pj4gSXQgY2VydGFpbmx5IGRvZXMgbG9vayB3ZWlyZCAtIHNpb19wdXRjKCkgaXMgdXNl ZCBpbiBib290MiBhbmQgaXTigJlzDQo+ID4+Pj4+IGltcGxlbWVudGF0aW9uIGlzIHVzaW5nIHNh bWUgcHJpbmNpcGUgYXMgY29tY19wdXRjaGF0KCkgaW4gY29tY29uc29sZS5jDQo+ID4+Pj4+IChl dmVuIGlmIGl0IGlzIGFzbSB2ZXJzdXMgYyBjb2RlKS4gU2luY2UgdGhlIHNlcmlhbCBkYXRhIGlz IGludGVycHJldGVkDQo+ID4+Pj4+IGJ5IHRlcm1pbmFsLCBpdCBmZWVscyBtb3JlIGFib3V0IHRl cm1pbmFsIGVtdWxhdG9yIGlzc3VlIChsaW5lDQo+ID4+Pj4+IGRpc2NpcGxpbmUsIGNhYmxpbmcs IHVzYiB0byBzZXJpYWwgZG9uZ2xlPykgICAgICANCj4gPj4+PiANCj4gPj4+PiBXZSB1c2UgaGVy ZSBhIG51bGwgbW9kZW0gY2FibGluZyB3aXRoIGFuIGludGVncmF0ZWQgVVNCLXRvLVVBUlQvVFRM DQo+ID4+Pj4gY29udmVydGVyLCB3aGljaCBpcyBhdHRhY2hlZCB0byBhIEZyZWVCU0QgQ1VSUkVO VCAobW9zdCByZWNlbnQpIGJveDoNCj4gPj4+PiANCj4gPj4+PiBbLi4uXQ0KPiA+Pj4+IHVnZW4y LjM6IDxGVERJIEZUMjMyUiBVU0IgVUFSVD4gYXQgdXNidXMyDQo+ID4+Pj4gdWZ0ZGkwIG9uIHVo dWI0DQo+ID4+Pj4gdWZ0ZGkwOiA8RlQyMzJSIFVTQiBVQVJUPiBvbiB1c2J1czINCj4gPj4+PiBb Li4uXQ0KPiA+Pj4+IA0KPiA+Pj4+IGl0IGlzIGEgDQo+ID4+Pj4gU3RhclRlY2guY29tIDEgUG9y dCBVU0IgTnVsbG1vZGVtIFJTMjMyIEFkYXB0ZXIgS2FiZWwgKFVTQiAyLjAgRlRESQ0KPiA+Pj4+ IGNoaXBzZXQpLg0KPiA+Pj4+IA0KPiA+Pj4+IFJlZ2FyZHMsDQo+ID4+Pj4gb2gNCj4gPj4+PiAN Cj4gPj4+PiAgIA0KPiA+Pj4+PiANCj4gPj4+Pj4gcmdkcywNCj4gPj4+Pj4gdG9vbWFzDQo+ID4+ Pj4+IA0KPiA+Pj4+PiAgIA0KPiA+Pj4+Pj4gDQo+ID4+Pj4+PiBUaGUgZmlsZSAvYm9vdC9sb2Fk ZXIuY29uZi5sb2NhbCBjb250YWlucyB0aGVzZSBsaW5lcyBpbiBib3RoLCB3b3JraW5nDQo+ID4+ Pj4+PiBhbmQgbm9uLXdvcmtpbmcsIHNjZW5hcmlvOg0KPiA+Pj4+Pj4gDQo+ID4+Pj4+PiBbLi4u XQ0KPiA+Pj4+Pj4gYm9vdF9zZXJpYWw9IllFUyINCj4gPj4+Pj4+ICMgc2VyaWFsIHNwZWVkIGlu IGJpdHMvcw0KPiA+Pj4+Pj4gY29tY29uc29sZV9zcGVlZD0iMTE1MjAwIg0KPiA+Pj4+Pj4gY29u c29sZT0iY29tY29uc29sZSINCj4gPj4+Pj4+IA0KPiA+Pj4+Pj4gYXV0b2Jvb3RfZGVsYXk9IjAi DQo+ID4+Pj4+PiANCj4gPj4+Pj4+IHZlcmJvc2VfbG9hZGluZz0iWUVTIg0KPiA+Pj4+Pj4gbG9h ZGVyX2xvZ289Im9yYiINCj4gPj4+Pj4+IGJlYXN0aWVfZGlzYWJsZT0iWUVTIg0KPiA+Pj4+Pj4g DQo+ID4+Pj4+PiAjIyMgIE1pY3JvY29kZQ0KPiA+Pj4+Pj4gI2NwdV9taWNyb2NvZGVfbG9hZD0i WUVTIiAgICAgICAgICAgICAgICAjIFNldCB0aGlzIHRvIFlFUyB0byBsb2FkIGFuZA0KPiA+Pj4+ Pj4gYXBwbHkgYSAjY3B1X21pY3JvY29kZV9uYW1lPSIvYm9vdC9maXJtd2FyZS9pbnRlbC11Y29k ZS5iaW4iICMgU2V0IHRoaXMNCj4gPj4+Pj4+IHRvIHRoZSBtaWNyb2NvZGUgI2NwdV9taWNyb2Nv ZGVfdHlwZT0iY3B1X21pY3JvY29kZSIgICAgICAjIFJlcXVpcmVkIGZvcg0KPiA+Pj4+Pj4gdGhl IGtlcm5lbCB0byBmaW5kICMgdGhlIG1pY3JvY29kZSB1cGRhdGUgZmlsZS4NCj4gPj4+Pj4+IA0K PiA+Pj4+Pj4gDQo+ID4+Pj4+PiAjIGRpc2FibGUgUHJvY2VzcyBUYWJsZSBJc29sYXRpb24NCj4g Pj4+Pj4+ICN2bS5wbWFwLnB0aT0wDQo+ID4+Pj4+PiANCj4gPj4+Pj4+IGtlcm4uZ2VvbS5sYWJl bC5ncHRpZC5lbmFibGU9MA0KPiA+Pj4+Pj4gDQo+ID4+Pj4+PiAjIExpbWl0IHRoZSBwaHlzLiBt ZW1vcnkNCj4gPj4+Pj4+ICNody5waHlzbWVtPTEwNzM3NDE4MjQgICMgMSBHDQo+ID4+Pj4+PiAj aHcucGh5c21lbT01MzY4NzA5MTIgICAjIDUxMiBNQg0KPiA+Pj4+Pj4gI2h3LnBoeXNtZW09MjY4 NDM1NDU2ICAgIyAyNTYgTUINCj4gPj4+Pj4+IA0KPiA+Pj4+Pj4gIyBEYSBtZWhyIGFscyAxIGln YiBOSUMgYW4gQm9yZCEgU2llaGUgbWFuIGlnYig0KQ0KPiA+Pj4+Pj4ga2Vybi5pcGMubm1iY2x1 c3RlcnM9NzU3MzUwDQo+ID4+Pj4+PiAja2Vybi5pcGMubm1ianVtYm85az04MTkyDQo+ID4+Pj4+ PiANCj4gPj4+Pj4+ICMgTklDDQo+ID4+Pj4+PiAjaHcuZW0ubWF4X2ludGVycnVwdF9yYXRlPTMy MDAwDQo+ID4+Pj4+PiBody5lbS5tYXhfaW50ZXJydXB0X3JhdGU9MTYwMDANCj4gPj4+Pj4+IA0K PiA+Pj4+Pj4gI0lmIG5vbi16ZXJvLCBlbmFibGUgRVhQRVJJTUVOVEFMIGZlYXR1cmUgdG8gaW1w cm92ZSBjb25jdXJyZW50IEZvcnR1bmENCj4gPj4+Pj4+IHBlcmZvcm1hbmNlIGtlcm4ucmFuZG9t LmZvcnR1bmEuY29uY3VycmVudF9yZWFkPSIxIg0KPiA+Pj4+Pj4gDQo+ID4+Pj4+PiAjIEZvcndh cmQgSW5mb3JtYXRpb24gQmFzZXMgKEZJQnMpDQo+ID4+Pj4+PiBuZXQuZmlicz0xMA0KPiA+Pj4+ Pj4gbmV0LmFkZF9hZGRyX2FsbGZpYnM9MA0KPiA+Pj4+Pj4gDQo+ID4+Pj4+PiBbLi4uXQ0KPiA+ Pj4+Pj4gDQo+ID4+Pj4+PiANCj4gPj4+Pj4+IEFnYWluLCB3aXRoIHRoZSBleGFjdCBzYW1lIHNl dHRpbmcgMTItU1RBQkxFIHIzNDkyODggYm9vdHMgZmluZSwNCj4gPj4+Pj4+IHJyMzUwMjc0IGRv ZXNuJ3QuIEZyZWVCU0QgMTItU1RBQkxFIHINCj4gPj4+Pj4+IA0KPiA+Pj4+Pj4gQ2FuIHNvbWVv bmUgcGxlYXNlIGhlbHA/DQo+ID4+Pj4+PiANCj4gPj4+Pj4+IFRoYW5rcyBpbiBhZHZhbmNlLCBv aCAgICANCj4gPiBbLi4uXQ0KPiA+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fDQo+ID4gZnJlZWJzZC1jdXJyZW50QGZyZWVic2Qub3JnIG1haWxpbmcgbGlz dA0KPiA+IGh0dHBzOi8vbGlzdHMuZnJlZWJzZC5vcmcvbWFpbG1hbi9saXN0aW5mby9mcmVlYnNk LWN1cnJlbnQNCj4gPiBUbyB1bnN1YnNjcmliZSwgc2VuZCBhbnkgbWFpbCB0byAiZnJlZWJzZC1j dXJyZW50LXVuc3Vic2NyaWJlQGZyZWVic2Qub3JnIiAgDQo+IA0KDQpJIGZpbGVkIGEgUFIgb24g dGhpcy4NCg0Kb2gNCg0KLSAtLSANCk8uIEhhcnRtYW5uDQoNCkljaCB3aWRlcnNwcmVjaGUgZGVy IE51dHp1bmcgb2RlciDDnGJlcm1pdHRsdW5nIG1laW5lciBEYXRlbiBmw7xyDQpXZXJiZXp3ZWNr ZSBvZGVyIGbDvHIgZGllIE1hcmt0LSBvZGVyIE1laW51bmdzZm9yc2NodW5nICjCpyAyOCBBYnMu IDQgQkRTRykuDQotLS0tLUJFR0lOIFBHUCBTSUdOQVRVUkUtLS0tLQ0KDQppSFVFQVJZSUFCMFdJ UVN5OElCeEFQRGtxVkJhVEo0NE4xWlpQYmE1UndVQ1hVWEdyUUFLQ1JBNE4xWlpQYmE1DQpSMnNQ QVA5dDJKYU8rcGhnNjNHeVM2R2hhZm1sdUhsWXdCWDVrQm1oZExBbXN6MDNGUUQvWVhHaDRpWC9n MzBSDQorU1RpUHlnUVlKRGJRb3krZXQzVVlzc3FEalVLNmdVPQ0KPWM2U3QNCi0tLS0tRU5EIFBH UCBTSUdOQVRVUkUtLS0tLQ0K