From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5624FC433EF for ; Wed, 1 Dec 2021 08:15:33 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1347881AbhLAISw (ORCPT ); Wed, 1 Dec 2021 03:18:52 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44836 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235464AbhLAISu (ORCPT ); Wed, 1 Dec 2021 03:18:50 -0500 Received: from mail-yb1-xb30.google.com (mail-yb1-xb30.google.com [IPv6:2607:f8b0:4864:20::b30]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 891D3C061574 for ; Wed, 1 Dec 2021 00:15:30 -0800 (PST) Received: by mail-yb1-xb30.google.com with SMTP id 131so60941260ybc.7 for ; Wed, 01 Dec 2021 00:15:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=atishpatra.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=S57qk9mhuZ/g9C5aLfnY7NgUAbFruX4cbQRxWnSY0Qo=; b=XKaXoRWEyNhdWcptCHCbe1Spt26+vDVf1FRuDp6eCHOdfmu+9NfsdK19MZysgHysat FuoQsKIVoJu5/71JQz1zAbE3LZ171iidsMuZ143uv15CMWnSzmhQSEuKwtumvWAnPzGT EQCnziTHV4t1dWnhAfScQXbrXgydtQ595KkeA= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=S57qk9mhuZ/g9C5aLfnY7NgUAbFruX4cbQRxWnSY0Qo=; b=qCPVdWaYvwmeFpVjSumOZSYgfVqhwTbRc9hdO7IQrBbPgUjLr1XgIqp7Ee4SH44lJC cO4d9A+/zVJuFTaqllSTXazgxndoDwbMDoXTrMncxQVkMaLJc2udhGnlVx6mhNy68jZd D5lUjtZ9h8Rt+6CXhXWCkDvNdi/t+9qbGNFY4WltFC3ACg9lbVdU3/TmHxvgSnblJiPX IpGbAHYpcu+bVWd39U1ySNIm/SYortLFmNTMRiMZaVCVYDHkoqfIscrCB0EFdKBdMsZ/ kPVvkseY5S5p0SC7Z6KTSK1M2NtvM18wOb3GrLIGvGUG03bBUwjOewNQU4q35/D6WJnD rrDQ== X-Gm-Message-State: AOAM530/jljAcl745Td6nKDlgf1KENQ/K0q9ne0wz5JMIF/YxINgp7ci n/4sWTM6sHgSCpGxoT4foC9nPiPJIGJaJRzhnhZijY0oewjYe4s= X-Google-Smtp-Source: ABdhPJz0cVhVudhWNrU98JYmr+mF04YoMJevZYn10+Y2LsG+oJ4QsaHVeibE2VrPporEVQwWPzEoFn1u2qQhqFG8Trw= X-Received: by 2002:a25:4d8:: with SMTP id 207mr5311533ybe.320.1638346529662; Wed, 01 Dec 2021 00:15:29 -0800 (PST) MIME-Version: 1.0 References: <20211129014007.286478-1-wefu@redhat.com> <1909580.k68io2XIxi@diego> <2728314.U2HhIfhhqV@diego> <03B8F784-4AF3-425D-99B6-F753F7970273@jrtc27.com> <1d035613-390c-32c2-aa92-cc0f7797488d@irq.a4lg.com> In-Reply-To: <1d035613-390c-32c2-aa92-cc0f7797488d@irq.a4lg.com> From: Atish Patra Date: Wed, 1 Dec 2021 00:15:18 -0800 Message-ID: Subject: Re: [PATCH V4 1/2] dt-bindings: riscv: add MMU Standard Extensions support for Svpbmt To: Tsukasa OI Cc: Jessica Clarke , Philipp Tomsich , =?UTF-8?Q?Heiko_St=C3=BCbner?= , linux-riscv , Wei Fu , "linux-kernel@vger.kernel.org List" , taiten.peng@canonical.com, Aniket Ponkshe , Gordan Markus , Guo Ren , Arnd Bergmann , Chen-Yu Tsai , Maxime Ripard , Dan Lustig , Greg Favor , Andrea Mondelli , Jonathan Behrens , Xinhaoqu , Bill Huffman , Nick Kossifidis , Allen Baum , Josh Scheid , Richard Trauben , Anup Patel , Rob Herring , Anup Patel , atishp04@gmail.com, Palmer Dabbelt , Guo Ren , =?UTF-8?Q?Christoph_M=C3=BCllner?= , Christoph Hellwig , liush , Wei Wu , Drew Fustini , Heinrich Schuchardt Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Nov 30, 2021 at 7:06 PM Tsukasa OI w= rote: > > On 2021/12/01 10:21, Atish Patra wrote: > > On Tue, Nov 30, 2021 at 8:13 AM Jessica Clarke wrot= e: > >> > >> On 30 Nov 2021, at 15:01, Philipp Tomsich w= rote: > >>> > >>> We did touch on this in our coordination call a few weeks ago: the > >>> grouping under mmu and the bool-entries were chosen because of their > >>> similarity to other extensions (i.e. for Zb[abcs] there could/should > >>> be a bool-entry under each cpu-node =E2=80=94 for some Zv* entries a = subnode > >>> might be needed with further parameters). > >>> > >>> The string-based approach (as in the originally proposed "mmu-type=3D= ") > >>> would like not scale with the proliferation of small & modular > >>> extensions. > >> > >> I don=E2=80=99t see why the Sv* extensions need to be under an mmu nod= e then, > >> unless the intent is that every extension be grouped under a sub-node > >> (which doesn=E2=80=99t seem viable due to extensions like Zbk*, unless= you > >> group by Ss, Sv and Z)? > >> > > > > It shouldn't be. All the ISA extensions (i.e. standard, supervisor & hy= pervisor) > > with prefix S,Z,H should be kept separate in a separate node for easy > > parsing. > > "Easy parsing" is not quite convincing. The device tree need to carry a very long "riscv,isa" string. The parser need to parse that string in memory as well. > > There's a reason other than that I made RFC PATCH to parse > multi-letter extensions: > > v1: > v2: > It's on my todo list to review the series. I think we can work together to propose a better framework for riscv isa extensions. > (note: those patches will break RISC-V KVM because of possible ISA > Manual inconsistency and discussion/resolution needed) > > (...continued below...) > > > > > "riscv,isa" dt property will not scale at all. Just look at the few > > extensions that were ratified this year > > and Linux kernel needs to support them. > > > > "Sscofpmf", "Svpbmt", "Zicbom" > > > >> Also, what is going to happen to the current riscv,isa? Will that > >> continue to exist and duplicate the info, or will kernels be required > >> to reconstruct the string themselves if they want to display it to > >> users? > >> Sorry. I missed this question earlier. See my answer below. > > > > This is my personal preference: > > riscv,isa will continue to base Standard ISA extensions that have > > single letter extensions. > > > > This new DT node will encode all the non-single letter extensions. > > I am not sure if it should include some provisions for custom > > extensions starting with X because > > that will be platform specific. > > > > Again, this is just my personal preference. I will try to send a patch > > soon so that we can initiate a broader > > discussion of the scheme and agree/disagree on something. > > For supervisor-only extensions like "Svpbmt", new DT node would be a > reasonable solution (and I would not directly object about that node). > > However, there's many multi-letter extensions that are useful for > user mode. Because "riscv,isa" is exposed via sysfs and procfs > (/proc/cpuinfo), it can be really helpful to have multi-letter Irrespective of the method chosen to parse the device tree in kernel, we need to provide the extension information to the userspace. This is what I have in mind. An individual row with comma separated extension names for each type of extensions (Ss, Sv, Sh) after the base extension (rv64imafdc) in /proc/cpuinfo output. I am open to other ideas as well. isa rv64imafdc isa-ext-Sv Svpbmt isa-ext-Ss Sscofpmf isa-ext-Sh isa-ext-Z Zicbom We can even explicitly name the extensions after isa-ext. However, it may be necessary and too long. I guess you prefer to directly print the entire "riscv,isa" string in "isa" row in /proc/cpuinfo output. It is probably okay with the current number of extensions available today. However, it will become so long string in the future that it has to be broken into multiple lines. > extensions. Also, current version of Spike, a RISC-V ISA Simulator > puts all multi-letter extensions in "riscv,isa" and I thought this is > intended. > > My preference: > (1) Allow having multi-letter extensions and versions in "riscv,isa" > (2) Adding new DT node for supervisor-related extensions would be > reasonable (but I don't strongly agree/disagree). > > Thanks, > Tsukasa > > > > > > > > >> As a FreeBSD developer I=E2=80=99m obviously not a part of many of the= se > >> discussions, but what the Linux community imposes as the device tree > >> bindings has a real impact on us. > >> > >> Jess > >> > >>> On Tue, 30 Nov 2021 at 14:59, Jessica Clarke wrot= e: > >>>> > >>>> On 30 Nov 2021, at 13:27, Heiko St=C3=BCbner wrote= : > >>>>> > >>>>> Hi, > >>>>> > >>>>> Am Dienstag, 30. November 2021, 14:17:41 CET schrieb Jessica Clarke= : > >>>>>> On 30 Nov 2021, at 12:07, Heiko St=C3=BCbner wro= te: > >>>>>>> > >>>>>>> Am Montag, 29. November 2021, 13:06:23 CET schrieb Heiko St=C3=BC= bner: > >>>>>>>> Am Montag, 29. November 2021, 09:54:39 CET schrieb Heinrich Schu= chardt: > >>>>>>>>> On 11/29/21 02:40, wefu@redhat.com wrote: > >>>>>>>>>> From: Wei Fu > >>>>>>>>>> > >>>>>>>>>> Previous patch has added svpbmt in arch/riscv and add "riscv,s= vpmbt" > >>>>>>>>>> in the DT mmu node. Update dt-bindings related property here. > >>>>>>>>>> > >>>>>>>>>> Signed-off-by: Wei Fu > >>>>>>>>>> Co-developed-by: Guo Ren > >>>>>>>>>> Signed-off-by: Guo Ren > >>>>>>>>>> Cc: Anup Patel > >>>>>>>>>> Cc: Palmer Dabbelt > >>>>>>>>>> Cc: Rob Herring > >>>>>>>>>> --- > >>>>>>>>>> Documentation/devicetree/bindings/riscv/cpus.yaml | 10 +++++++= +++ > >>>>>>>>>> 1 file changed, 10 insertions(+) > >>>>>>>>>> > >>>>>>>>>> diff --git a/Documentation/devicetree/bindings/riscv/cpus.yaml= b/Documentation/devicetree/bindings/riscv/cpus.yaml > >>>>>>>>>> index aa5fb64d57eb..9ff9cbdd8a85 100644 > >>>>>>>>>> --- a/Documentation/devicetree/bindings/riscv/cpus.yaml > >>>>>>>>>> +++ b/Documentation/devicetree/bindings/riscv/cpus.yaml > >>>>>>>>>> @@ -63,6 +63,16 @@ properties: > >>>>>>>>>> - riscv,sv48 > >>>>>>>>>> - riscv,none > >>>>>>>>>> > >>>>>>>>>> + mmu: > >>>>>>>>> > >>>>>>>>> Shouldn't we keep the items be in alphabetic order, i.e. mmu be= fore > >>>>>>>>> mmu-type? > >>>>>>>>> > >>>>>>>>>> + description: > >>>>>>>>>> + Describes the CPU's MMU Standard Extensions support. > >>>>>>>>>> + These values originate from the RISC-V Privileged > >>>>>>>>>> + Specification document, available from > >>>>>>>>>> + https://riscv.org/specifications/ > >>>>>>>>>> + $ref: '/schemas/types.yaml#/definitions/string' > >>>>>>>>>> + enum: > >>>>>>>>>> + - riscv,svpmbt > >>>>>>>>> > >>>>>>>>> The privileged specification has multiple MMU related extension= s: > >>>>>>>>> Svnapot, Svpbmt, Svinval. Shall they all be modeled in this enu= m? > >>>>>>>> > >>>>>>>> I remember in some earlier version some way back there was the > >>>>>>>> suggestion of using a sub-node instead and then adding boolean > >>>>>>>> properties for the supported extensions. > >>>>>>>> > >>>>>>>> Aka something like > >>>>>>>> mmu { > >>>>>>>> riscv,svpbmt; > >>>>>>>> }; > >>>>>>> > >>>>>>> For the record, I'm talking about the mail from september > >>>>>>> https://lore.kernel.org/linux-riscv/CAAeLtUChjjzG+P8yg45GLZMJy5UR= 2K5RRBoLFVZhtOaZ5pPtEA@mail.gmail.com/ > >>>>>>> > >>>>>>> So having a sub-node would make adding future extensions > >>>>>>> way nicer. > >>>>>> > >>>>>> Svpbmt is just an ISA extension, and should be treated like any ot= her. > >>>>>> Let=E2=80=99s not invent two different ways of representing that i= n the device > >>>>>> tree. > >>>>> > >>>>> Heinrich asked how the other extensions should be handled > >>>>> (Svnapot, Svpbmt, Svinval), so what do you suggest to do with these= ? > >>>> > >>>> Whatever is done for Zb[abcs], Zk*, Zv*, Zicbo*, etc. There may not = be > >>>> a concrete plan for that yet, but that means you should speak with t= he > >>>> people involved with such extensions and come up with something > >>>> appropriate together. > >>>> > >>>> Jess > >>>> > >> > >> > >> _______________________________________________ > >> linux-riscv mailing list > >> linux-riscv@lists.infradead.org > >> http://lists.infradead.org/mailman/listinfo/linux-riscv > > > > > > > > -- > > Regards, > > Atish > > > > _______________________________________________ > > linux-riscv mailing list > > linux-riscv@lists.infradead.org > > http://lists.infradead.org/mailman/listinfo/linux-riscv > > --=20 Regards, Atish From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 91A6AC433F5 for ; Wed, 1 Dec 2021 08:15:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:Cc:To:Subject:Message-ID:Date:From: In-Reply-To:References:MIME-Version:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=7CSYomKp96wWutqbFKRTZCKGEgwrPu6EDQnGAfg9uSA=; b=DWeKY7JQxQwC+M N0awfieg7zm7VtNYiwICDEwTpt2dWBvt9A1eyOppFFwddfe5czieZsYi1osn7oMddtTq5cdLX0/0C QWlS1Dl/GHWWBS6ap/bAcxiGC6WIu6K2H/LO0eqKZpfsJho9MmQ5mAPtQmpxIpLP68oLwacHb4Tsk Gh1KU1jTAgpcbQVOqty9h5TBi0gimVWQSwMJrikqieH1G2U1/6h2qDHG2bGOWM6faYiOpasAiPyB2 Cpz6JN+oAUsoGerBLE+aSR0MPDCXkv/AfcuvKQ/NBrTXsVyqOg2FXavGY1O/92ul+IeqilFXH1Cgt Mei13hia8LY0aIJxLqzg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1msKm6-007n4a-Hl; Wed, 01 Dec 2021 08:15:34 +0000 Received: from mail-yb1-xb36.google.com ([2607:f8b0:4864:20::b36]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1msKm3-007n3i-2c for linux-riscv@lists.infradead.org; Wed, 01 Dec 2021 08:15:33 +0000 Received: by mail-yb1-xb36.google.com with SMTP id g17so60833364ybe.13 for ; Wed, 01 Dec 2021 00:15:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=atishpatra.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=S57qk9mhuZ/g9C5aLfnY7NgUAbFruX4cbQRxWnSY0Qo=; b=XKaXoRWEyNhdWcptCHCbe1Spt26+vDVf1FRuDp6eCHOdfmu+9NfsdK19MZysgHysat FuoQsKIVoJu5/71JQz1zAbE3LZ171iidsMuZ143uv15CMWnSzmhQSEuKwtumvWAnPzGT EQCnziTHV4t1dWnhAfScQXbrXgydtQ595KkeA= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=S57qk9mhuZ/g9C5aLfnY7NgUAbFruX4cbQRxWnSY0Qo=; b=wnIJL0agr0QbNlInOq6h7/fxby1tiqvlFjCadX1GpeiifMdtOpztRfe99BfUhAUxJN 5kv3Efteb/wOHIxv92JVjpLzHCv4jHfA5byi35A1EEePS+paAYOcLKzHzya2HCJ/iPSw e6wkEXUj2BpagOu+Py0SZ289iifi8LwIZDJlRbNXfJAwBPlGUb/Y2DqYbHE/mpi/DNbx HO39m8KCHnOCkormYHOcfb/tD3l1Qm2OQuNncyyUDnCmdyV6kJcYUk1lIhRAnzQjcwvy xE2idotFNNm5oFFMedjE12EOrQgRV9B0NqBKUI2n+0zJqFiOylXaNjnjTso2uZTKudF7 Z2GQ== X-Gm-Message-State: AOAM5316FkC774JLDLHRSkphLwob3MHOuvFYaT/9F5MJFB4jd3UBpUk7 M+sjcAts/PXY0GKUMqhh08lTmjUyE91gberQJ4KQ X-Google-Smtp-Source: ABdhPJz0cVhVudhWNrU98JYmr+mF04YoMJevZYn10+Y2LsG+oJ4QsaHVeibE2VrPporEVQwWPzEoFn1u2qQhqFG8Trw= X-Received: by 2002:a25:4d8:: with SMTP id 207mr5311533ybe.320.1638346529662; Wed, 01 Dec 2021 00:15:29 -0800 (PST) MIME-Version: 1.0 References: <20211129014007.286478-1-wefu@redhat.com> <1909580.k68io2XIxi@diego> <2728314.U2HhIfhhqV@diego> <03B8F784-4AF3-425D-99B6-F753F7970273@jrtc27.com> <1d035613-390c-32c2-aa92-cc0f7797488d@irq.a4lg.com> In-Reply-To: <1d035613-390c-32c2-aa92-cc0f7797488d@irq.a4lg.com> From: Atish Patra Date: Wed, 1 Dec 2021 00:15:18 -0800 Message-ID: Subject: Re: [PATCH V4 1/2] dt-bindings: riscv: add MMU Standard Extensions support for Svpbmt To: Tsukasa OI Cc: Jessica Clarke , Philipp Tomsich , =?UTF-8?Q?Heiko_St=C3=BCbner?= , linux-riscv , Wei Fu , "linux-kernel@vger.kernel.org List" , taiten.peng@canonical.com, Aniket Ponkshe , Gordan Markus , Guo Ren , Arnd Bergmann , Chen-Yu Tsai , Maxime Ripard , Dan Lustig , Greg Favor , Andrea Mondelli , Jonathan Behrens , Xinhaoqu , Bill Huffman , Nick Kossifidis , Allen Baum , Josh Scheid , Richard Trauben , Anup Patel , Rob Herring , Anup Patel , atishp04@gmail.com, Palmer Dabbelt , Guo Ren , =?UTF-8?Q?Christoph_M=C3=BCllner?= , Christoph Hellwig , liush , Wei Wu , Drew Fustini , Heinrich Schuchardt X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20211201_001531_221826_DE765855 X-CRM114-Status: GOOD ( 52.20 ) X-BeenThere: linux-riscv@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org T24gVHVlLCBOb3YgMzAsIDIwMjEgYXQgNzowNiBQTSBUc3VrYXNhIE9JIDxyZXNlYXJjaF90cmFz aW9AaXJxLmE0bGcuY29tPiB3cm90ZToKPgo+IE9uIDIwMjEvMTIvMDEgMTA6MjEsIEF0aXNoIFBh dHJhIHdyb3RlOgo+ID4gT24gVHVlLCBOb3YgMzAsIDIwMjEgYXQgODoxMyBBTSBKZXNzaWNhIENs YXJrZSA8anJ0YzI3QGpydGMyNy5jb20+IHdyb3RlOgo+ID4+Cj4gPj4gT24gMzAgTm92IDIwMjEs IGF0IDE1OjAxLCBQaGlsaXBwIFRvbXNpY2ggPHBoaWxpcHAudG9tc2ljaEB2cnVsbC5ldT4gd3Jv dGU6Cj4gPj4+Cj4gPj4+IFdlIGRpZCB0b3VjaCBvbiB0aGlzIGluIG91ciBjb29yZGluYXRpb24g Y2FsbCBhIGZldyB3ZWVrcyBhZ286IHRoZQo+ID4+PiBncm91cGluZyB1bmRlciBtbXUgYW5kIHRo ZSBib29sLWVudHJpZXMgd2VyZSBjaG9zZW4gYmVjYXVzZSBvZiB0aGVpcgo+ID4+PiBzaW1pbGFy aXR5IHRvIG90aGVyIGV4dGVuc2lvbnMgKGkuZS4gZm9yIFpiW2FiY3NdIHRoZXJlIGNvdWxkL3No b3VsZAo+ID4+PiBiZSBhIGJvb2wtZW50cnkgdW5kZXIgZWFjaCBjcHUtbm9kZSDigJQgZm9yIHNv bWUgWnYqIGVudHJpZXMgYSBzdWJub2RlCj4gPj4+IG1pZ2h0IGJlIG5lZWRlZCB3aXRoIGZ1cnRo ZXIgcGFyYW1ldGVycykuCj4gPj4+Cj4gPj4+IFRoZSBzdHJpbmctYmFzZWQgYXBwcm9hY2ggKGFz IGluIHRoZSBvcmlnaW5hbGx5IHByb3Bvc2VkICJtbXUtdHlwZT0iKQo+ID4+PiB3b3VsZCBsaWtl IG5vdCBzY2FsZSB3aXRoIHRoZSBwcm9saWZlcmF0aW9uIG9mIHNtYWxsICYgbW9kdWxhcgo+ID4+ PiBleHRlbnNpb25zLgo+ID4+Cj4gPj4gSSBkb27igJl0IHNlZSB3aHkgdGhlIFN2KiBleHRlbnNp b25zIG5lZWQgdG8gYmUgdW5kZXIgYW4gbW11IG5vZGUgdGhlbiwKPiA+PiB1bmxlc3MgdGhlIGlu dGVudCBpcyB0aGF0IGV2ZXJ5IGV4dGVuc2lvbiBiZSBncm91cGVkIHVuZGVyIGEgc3ViLW5vZGUK PiA+PiAod2hpY2ggZG9lc27igJl0IHNlZW0gdmlhYmxlIGR1ZSB0byBleHRlbnNpb25zIGxpa2Ug WmJrKiwgdW5sZXNzIHlvdQo+ID4+IGdyb3VwIGJ5IFNzLCBTdiBhbmQgWik/Cj4gPj4KPiA+Cj4g PiBJdCBzaG91bGRuJ3QgYmUuIEFsbCB0aGUgSVNBIGV4dGVuc2lvbnMgKGkuZS4gc3RhbmRhcmQs IHN1cGVydmlzb3IgJiBoeXBlcnZpc29yKQo+ID4gd2l0aCBwcmVmaXggUyxaLEggc2hvdWxkIGJl IGtlcHQgc2VwYXJhdGUgaW4gYSBzZXBhcmF0ZSBub2RlIGZvciBlYXN5Cj4gPiBwYXJzaW5nLgo+ Cj4gIkVhc3kgcGFyc2luZyIgaXMgbm90IHF1aXRlIGNvbnZpbmNpbmcuCgpUaGUgZGV2aWNlIHRy ZWUgbmVlZCB0byBjYXJyeSBhIHZlcnkgbG9uZyAicmlzY3YsaXNhIiBzdHJpbmcuIFRoZQpwYXJz ZXIgbmVlZCB0byBwYXJzZQp0aGF0IHN0cmluZyBpbiBtZW1vcnkgYXMgd2VsbC4KCj4KPiBUaGVy ZSdzIGEgcmVhc29uIG90aGVyIHRoYW4gdGhhdCBJIG1hZGUgUkZDIFBBVENIIHRvIHBhcnNlCj4g bXVsdGktbGV0dGVyIGV4dGVuc2lvbnM6Cj4KPiB2MTogPGh0dHA6Ly9saXN0cy5pbmZyYWRlYWQu b3JnL3BpcGVybWFpbC9saW51eC1yaXNjdi8yMDIxLU5vdmVtYmVyLzAxMDI1Mi5odG1sPgo+IHYy OiA8aHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvcGlwZXJtYWlsL2xpbnV4LXJpc2N2LzIwMjEt Tm92ZW1iZXIvMDEwMzUwLmh0bWw+Cj4KCkl0J3Mgb24gbXkgdG9kbyBsaXN0IHRvIHJldmlldyB0 aGUgc2VyaWVzLiBJIHRoaW5rIHdlIGNhbiB3b3JrCnRvZ2V0aGVyIHRvIHByb3Bvc2UgYSBiZXR0 ZXIgZnJhbWV3b3JrIGZvciByaXNjdiBpc2EgZXh0ZW5zaW9ucy4KCj4gKG5vdGU6IHRob3NlIHBh dGNoZXMgd2lsbCBicmVhayBSSVNDLVYgS1ZNIGJlY2F1c2Ugb2YgcG9zc2libGUgSVNBCj4gICAg ICAgIE1hbnVhbCBpbmNvbnNpc3RlbmN5IGFuZCBkaXNjdXNzaW9uL3Jlc29sdXRpb24gbmVlZGVk KQo+Cj4gKC4uLmNvbnRpbnVlZCBiZWxvdy4uLikKPgo+ID4KPiA+ICJyaXNjdixpc2EiIGR0IHBy b3BlcnR5IHdpbGwgbm90IHNjYWxlIGF0IGFsbC4gSnVzdCBsb29rIGF0IHRoZSBmZXcKPiA+IGV4 dGVuc2lvbnMgdGhhdCB3ZXJlIHJhdGlmaWVkIHRoaXMgeWVhcgo+ID4gYW5kIExpbnV4IGtlcm5l bCBuZWVkcyB0byBzdXBwb3J0IHRoZW0uCj4gPgo+ID4gIlNzY29mcG1mIiwgIlN2cGJtdCIsICJa aWNib20iCj4gPgo+ID4+IEFsc28sIHdoYXQgaXMgZ29pbmcgdG8gaGFwcGVuIHRvIHRoZSBjdXJy ZW50IHJpc2N2LGlzYT8gV2lsbCB0aGF0Cj4gPj4gY29udGludWUgdG8gZXhpc3QgYW5kIGR1cGxp Y2F0ZSB0aGUgaW5mbywgb3Igd2lsbCBrZXJuZWxzIGJlIHJlcXVpcmVkCj4gPj4gdG8gcmVjb25z dHJ1Y3QgdGhlIHN0cmluZyB0aGVtc2VsdmVzIGlmIHRoZXkgd2FudCB0byBkaXNwbGF5IGl0IHRv Cj4gPj4gdXNlcnM/Cj4gPj4KClNvcnJ5LiBJIG1pc3NlZCB0aGlzIHF1ZXN0aW9uIGVhcmxpZXIu IFNlZSBteSBhbnN3ZXIgYmVsb3cuCgo+ID4KPiA+IFRoaXMgaXMgbXkgcGVyc29uYWwgcHJlZmVy ZW5jZToKPiA+IHJpc2N2LGlzYSB3aWxsIGNvbnRpbnVlIHRvIGJhc2UgU3RhbmRhcmQgSVNBIGV4 dGVuc2lvbnMgdGhhdCBoYXZlCj4gPiBzaW5nbGUgbGV0dGVyIGV4dGVuc2lvbnMuCj4gPgo+ID4g VGhpcyBuZXcgRFQgbm9kZSB3aWxsIGVuY29kZSBhbGwgdGhlIG5vbi1zaW5nbGUgbGV0dGVyIGV4 dGVuc2lvbnMuCj4gPiBJIGFtIG5vdCBzdXJlIGlmIGl0IHNob3VsZCBpbmNsdWRlIHNvbWUgcHJv dmlzaW9ucyBmb3IgY3VzdG9tCj4gPiBleHRlbnNpb25zIHN0YXJ0aW5nIHdpdGggWCBiZWNhdXNl Cj4gPiB0aGF0IHdpbGwgYmUgcGxhdGZvcm0gc3BlY2lmaWMuCj4gPgo+ID4gQWdhaW4sIHRoaXMg aXMganVzdCBteSBwZXJzb25hbCBwcmVmZXJlbmNlLiBJIHdpbGwgdHJ5IHRvIHNlbmQgYSBwYXRj aAo+ID4gc29vbiBzbyB0aGF0IHdlIGNhbiBpbml0aWF0ZSBhIGJyb2FkZXIKPiA+IGRpc2N1c3Np b24gb2YgdGhlIHNjaGVtZSBhbmQgYWdyZWUvZGlzYWdyZWUgb24gc29tZXRoaW5nLgo+Cj4gRm9y IHN1cGVydmlzb3Itb25seSBleHRlbnNpb25zIGxpa2UgIlN2cGJtdCIsIG5ldyBEVCBub2RlIHdv dWxkIGJlIGEKPiByZWFzb25hYmxlIHNvbHV0aW9uIChhbmQgSSB3b3VsZCBub3QgZGlyZWN0bHkg b2JqZWN0IGFib3V0IHRoYXQgbm9kZSkuCj4KPiBIb3dldmVyLCB0aGVyZSdzIG1hbnkgbXVsdGkt bGV0dGVyIGV4dGVuc2lvbnMgdGhhdCBhcmUgdXNlZnVsIGZvcgo+IHVzZXIgbW9kZS4gIEJlY2F1 c2UgInJpc2N2LGlzYSIgaXMgZXhwb3NlZCB2aWEgc3lzZnMgYW5kIHByb2Nmcwo+ICgvcHJvYy9j cHVpbmZvKSwgaXQgY2FuIGJlIHJlYWxseSBoZWxwZnVsIHRvIGhhdmUgbXVsdGktbGV0dGVyCgpJ cnJlc3BlY3RpdmUgb2YgdGhlIG1ldGhvZCBjaG9zZW4gdG8gcGFyc2UgdGhlIGRldmljZSB0cmVl IGluIGtlcm5lbCwKd2UgbmVlZCB0byBwcm92aWRlIHRoZSBleHRlbnNpb24gaW5mb3JtYXRpb24g dG8gdGhlIHVzZXJzcGFjZS4KClRoaXMgaXMgd2hhdCBJIGhhdmUgaW4gbWluZC4gQW4gaW5kaXZp ZHVhbCByb3cgd2l0aCBjb21tYSBzZXBhcmF0ZWQKZXh0ZW5zaW9uIG5hbWVzIGZvciBlYWNoIHR5 cGUgb2YgZXh0ZW5zaW9ucyAoU3MsIFN2LCBTaCkKYWZ0ZXIgdGhlIGJhc2UgZXh0ZW5zaW9uIChy djY0aW1hZmRjKSBpbiAvcHJvYy9jcHVpbmZvIG91dHB1dC4gSSBhbQpvcGVuIHRvIG90aGVyIGlk ZWFzIGFzIHdlbGwuCgppc2EgICBydjY0aW1hZmRjCmlzYS1leHQtU3YgU3ZwYm10CmlzYS1leHQt U3MgU3Njb2ZwbWYKaXNhLWV4dC1TaCA8aHlwZXJ2aXNvciByZWxhdGVkIGV4dGVuc2lvbnM+Cmlz YS1leHQtWiAgIFppY2JvbQoKV2UgY2FuIGV2ZW4gZXhwbGljaXRseSBuYW1lIHRoZSBleHRlbnNp b25zIGFmdGVyIGlzYS1leHQuIEhvd2V2ZXIsIGl0Cm1heSBiZSBuZWNlc3NhcnkgYW5kIHRvbyBs b25nLgoKSSBndWVzcyB5b3UgcHJlZmVyIHRvIGRpcmVjdGx5IHByaW50IHRoZSBlbnRpcmUgInJp c2N2LGlzYSIgc3RyaW5nIGluCiJpc2EiIHJvdyBpbiAvcHJvYy9jcHVpbmZvIG91dHB1dC4KSXQg aXMgcHJvYmFibHkgb2theSB3aXRoIHRoZSBjdXJyZW50IG51bWJlciBvZiBleHRlbnNpb25zIGF2 YWlsYWJsZQp0b2RheS4gSG93ZXZlciwgaXQgd2lsbCBiZWNvbWUgc28gbG9uZyBzdHJpbmcKaW4g dGhlIGZ1dHVyZSB0aGF0IGl0IGhhcyB0byBiZSBicm9rZW4gaW50byBtdWx0aXBsZSBsaW5lcy4K Cj4gZXh0ZW5zaW9ucy4gIEFsc28sIGN1cnJlbnQgdmVyc2lvbiBvZiBTcGlrZSwgYSBSSVNDLVYg SVNBIFNpbXVsYXRvcgo+IHB1dHMgYWxsIG11bHRpLWxldHRlciBleHRlbnNpb25zIGluICJyaXNj dixpc2EiIGFuZCBJIHRob3VnaHQgdGhpcyBpcwo+IGludGVuZGVkLgo+Cj4gTXkgcHJlZmVyZW5j ZToKPiAoMSkgQWxsb3cgaGF2aW5nIG11bHRpLWxldHRlciBleHRlbnNpb25zIGFuZCB2ZXJzaW9u cyBpbiAicmlzY3YsaXNhIgo+ICgyKSBBZGRpbmcgbmV3IERUIG5vZGUgZm9yIHN1cGVydmlzb3It cmVsYXRlZCBleHRlbnNpb25zIHdvdWxkIGJlCj4gICAgIHJlYXNvbmFibGUgKGJ1dCBJIGRvbid0 IHN0cm9uZ2x5IGFncmVlL2Rpc2FncmVlKS4KPgo+IFRoYW5rcywKPiBUc3VrYXNhCj4KPiA+Cj4g Pgo+ID4KPiA+PiBBcyBhIEZyZWVCU0QgZGV2ZWxvcGVyIEnigJltIG9idmlvdXNseSBub3QgYSBw YXJ0IG9mIG1hbnkgb2YgdGhlc2UKPiA+PiBkaXNjdXNzaW9ucywgYnV0IHdoYXQgdGhlIExpbnV4 IGNvbW11bml0eSBpbXBvc2VzIGFzIHRoZSBkZXZpY2UgdHJlZQo+ID4+IGJpbmRpbmdzIGhhcyBh IHJlYWwgaW1wYWN0IG9uIHVzLgo+ID4+Cj4gPj4gSmVzcwo+ID4+Cj4gPj4+IE9uIFR1ZSwgMzAg Tm92IDIwMjEgYXQgMTQ6NTksIEplc3NpY2EgQ2xhcmtlIDxqcnRjMjdAanJ0YzI3LmNvbT4gd3Jv dGU6Cj4gPj4+Pgo+ID4+Pj4gT24gMzAgTm92IDIwMjEsIGF0IDEzOjI3LCBIZWlrbyBTdMO8Ym5l ciA8aGVpa29Ac250ZWNoLmRlPiB3cm90ZToKPiA+Pj4+Pgo+ID4+Pj4+IEhpLAo+ID4+Pj4+Cj4g Pj4+Pj4gQW0gRGllbnN0YWcsIDMwLiBOb3ZlbWJlciAyMDIxLCAxNDoxNzo0MSBDRVQgc2Nocmll YiBKZXNzaWNhIENsYXJrZToKPiA+Pj4+Pj4gT24gMzAgTm92IDIwMjEsIGF0IDEyOjA3LCBIZWlr byBTdMO8Ym5lciA8aGVpa29Ac250ZWNoLmRlPiB3cm90ZToKPiA+Pj4+Pj4+Cj4gPj4+Pj4+PiBB bSBNb250YWcsIDI5LiBOb3ZlbWJlciAyMDIxLCAxMzowNjoyMyBDRVQgc2NocmllYiBIZWlrbyBT dMO8Ym5lcjoKPiA+Pj4+Pj4+PiBBbSBNb250YWcsIDI5LiBOb3ZlbWJlciAyMDIxLCAwOTo1NDoz OSBDRVQgc2NocmllYiBIZWlucmljaCBTY2h1Y2hhcmR0Ogo+ID4+Pj4+Pj4+PiBPbiAxMS8yOS8y MSAwMjo0MCwgd2VmdUByZWRoYXQuY29tIHdyb3RlOgo+ID4+Pj4+Pj4+Pj4gRnJvbTogV2VpIEZ1 IDx3ZWZ1QHJlZGhhdC5jb20+Cj4gPj4+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+Pj4gUHJldmlvdXMgcGF0 Y2ggaGFzIGFkZGVkIHN2cGJtdCBpbiBhcmNoL3Jpc2N2IGFuZCBhZGQgInJpc2N2LHN2cG1idCIK PiA+Pj4+Pj4+Pj4+IGluIHRoZSBEVCBtbXUgbm9kZS4gVXBkYXRlIGR0LWJpbmRpbmdzIHJlbGF0 ZWQgcHJvcGVydHkgaGVyZS4KPiA+Pj4+Pj4+Pj4+Cj4gPj4+Pj4+Pj4+PiBTaWduZWQtb2ZmLWJ5 OiBXZWkgRnUgPHdlZnVAcmVkaGF0LmNvbT4KPiA+Pj4+Pj4+Pj4+IENvLWRldmVsb3BlZC1ieTog R3VvIFJlbiA8Z3VvcmVuQGtlcm5lbC5vcmc+Cj4gPj4+Pj4+Pj4+PiBTaWduZWQtb2ZmLWJ5OiBH dW8gUmVuIDxndW9yZW5Aa2VybmVsLm9yZz4KPiA+Pj4+Pj4+Pj4+IENjOiBBbnVwIFBhdGVsIDxh bnVwQGJyYWluZmF1bHQub3JnPgo+ID4+Pj4+Pj4+Pj4gQ2M6IFBhbG1lciBEYWJiZWx0IDxwYWxt ZXJAZGFiYmVsdC5jb20+Cj4gPj4+Pj4+Pj4+PiBDYzogUm9iIEhlcnJpbmcgPHJvYmgrZHRAa2Vy bmVsLm9yZz4KPiA+Pj4+Pj4+Pj4+IC0tLQo+ID4+Pj4+Pj4+Pj4gRG9jdW1lbnRhdGlvbi9kZXZp Y2V0cmVlL2JpbmRpbmdzL3Jpc2N2L2NwdXMueWFtbCB8IDEwICsrKysrKysrKysKPiA+Pj4+Pj4+ Pj4+IDEgZmlsZSBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspCj4gPj4+Pj4+Pj4+Pgo+ID4+Pj4+ Pj4+Pj4gZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9yaXNj di9jcHVzLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcmlzY3YvY3B1 cy55YW1sCj4gPj4+Pj4+Pj4+PiBpbmRleCBhYTVmYjY0ZDU3ZWIuLjlmZjljYmRkOGE4NSAxMDA2 NDQKPiA+Pj4+Pj4+Pj4+IC0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9y aXNjdi9jcHVzLnlhbWwKPiA+Pj4+Pj4+Pj4+ICsrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJl ZS9iaW5kaW5ncy9yaXNjdi9jcHVzLnlhbWwKPiA+Pj4+Pj4+Pj4+IEBAIC02Myw2ICs2MywxNiBA QCBwcm9wZXJ0aWVzOgo+ID4+Pj4+Pj4+Pj4gICAgICAtIHJpc2N2LHN2NDgKPiA+Pj4+Pj4+Pj4+ ICAgICAgLSByaXNjdixub25lCj4gPj4+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+Pj4gKyAgbW11Ogo+ID4+ Pj4+Pj4+Pgo+ID4+Pj4+Pj4+PiBTaG91bGRuJ3Qgd2Uga2VlcCB0aGUgaXRlbXMgYmUgaW4gYWxw aGFiZXRpYyBvcmRlciwgaS5lLiBtbXUgYmVmb3JlCj4gPj4+Pj4+Pj4+IG1tdS10eXBlPwo+ID4+ Pj4+Pj4+Pgo+ID4+Pj4+Pj4+Pj4gKyAgICBkZXNjcmlwdGlvbjoKPiA+Pj4+Pj4+Pj4+ICsgICAg ICBEZXNjcmliZXMgdGhlIENQVSdzIE1NVSBTdGFuZGFyZCBFeHRlbnNpb25zIHN1cHBvcnQuCj4g Pj4+Pj4+Pj4+PiArICAgICAgVGhlc2UgdmFsdWVzIG9yaWdpbmF0ZSBmcm9tIHRoZSBSSVNDLVYg UHJpdmlsZWdlZAo+ID4+Pj4+Pj4+Pj4gKyAgICAgIFNwZWNpZmljYXRpb24gZG9jdW1lbnQsIGF2 YWlsYWJsZSBmcm9tCj4gPj4+Pj4+Pj4+PiArICAgICAgaHR0cHM6Ly9yaXNjdi5vcmcvc3BlY2lm aWNhdGlvbnMvCj4gPj4+Pj4+Pj4+PiArICAgICRyZWY6ICcvc2NoZW1hcy90eXBlcy55YW1sIy9k ZWZpbml0aW9ucy9zdHJpbmcnCj4gPj4+Pj4+Pj4+PiArICAgIGVudW06Cj4gPj4+Pj4+Pj4+PiAr ICAgICAgLSByaXNjdixzdnBtYnQKPiA+Pj4+Pj4+Pj4KPiA+Pj4+Pj4+Pj4gVGhlIHByaXZpbGVn ZWQgc3BlY2lmaWNhdGlvbiBoYXMgbXVsdGlwbGUgTU1VIHJlbGF0ZWQgZXh0ZW5zaW9uczoKPiA+ Pj4+Pj4+Pj4gU3ZuYXBvdCwgU3ZwYm10LCBTdmludmFsLiBTaGFsbCB0aGV5IGFsbCBiZSBtb2Rl bGVkIGluIHRoaXMgZW51bT8KPiA+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+IEkgcmVtZW1iZXIgaW4gc29t ZSBlYXJsaWVyIHZlcnNpb24gc29tZSB3YXkgYmFjayB0aGVyZSB3YXMgdGhlCj4gPj4+Pj4+Pj4g c3VnZ2VzdGlvbiBvZiB1c2luZyBhIHN1Yi1ub2RlIGluc3RlYWQgYW5kIHRoZW4gYWRkaW5nIGJv b2xlYW4KPiA+Pj4+Pj4+PiBwcm9wZXJ0aWVzIGZvciB0aGUgc3VwcG9ydGVkIGV4dGVuc2lvbnMu Cj4gPj4+Pj4+Pj4KPiA+Pj4+Pj4+PiBBa2Egc29tZXRoaW5nIGxpa2UKPiA+Pj4+Pj4+PiAgIG1t dSB7Cj4gPj4+Pj4+Pj4gICAgICAgICAgIHJpc2N2LHN2cGJtdDsKPiA+Pj4+Pj4+PiAgIH07Cj4g Pj4+Pj4+Pgo+ID4+Pj4+Pj4gRm9yIHRoZSByZWNvcmQsIEknbSB0YWxraW5nIGFib3V0IHRoZSBt YWlsIGZyb20gc2VwdGVtYmVyCj4gPj4+Pj4+PiBodHRwczovL2xvcmUua2VybmVsLm9yZy9saW51 eC1yaXNjdi9DQUFlTHRVQ2hqanpHK1A4eWc0NUdMWk1KeTVVUjJLNVJSQm9MRlZaaHRPYVo1cFB0 RUFAbWFpbC5nbWFpbC5jb20vCj4gPj4+Pj4+Pgo+ID4+Pj4+Pj4gU28gaGF2aW5nIGEgc3ViLW5v ZGUgd291bGQgbWFrZSBhZGRpbmcgZnV0dXJlIGV4dGVuc2lvbnMKPiA+Pj4+Pj4+IHdheSBuaWNl ci4KPiA+Pj4+Pj4KPiA+Pj4+Pj4gU3ZwYm10IGlzIGp1c3QgYW4gSVNBIGV4dGVuc2lvbiwgYW5k IHNob3VsZCBiZSB0cmVhdGVkIGxpa2UgYW55IG90aGVyLgo+ID4+Pj4+PiBMZXTigJlzIG5vdCBp bnZlbnQgdHdvIGRpZmZlcmVudCB3YXlzIG9mIHJlcHJlc2VudGluZyB0aGF0IGluIHRoZSBkZXZp Y2UKPiA+Pj4+Pj4gdHJlZS4KPiA+Pj4+Pgo+ID4+Pj4+IEhlaW5yaWNoIGFza2VkIGhvdyB0aGUg b3RoZXIgZXh0ZW5zaW9ucyBzaG91bGQgYmUgaGFuZGxlZAo+ID4+Pj4+IChTdm5hcG90LCBTdnBi bXQsIFN2aW52YWwpLCBzbyB3aGF0IGRvIHlvdSBzdWdnZXN0IHRvIGRvIHdpdGggdGhlc2U/Cj4g Pj4+Pgo+ID4+Pj4gV2hhdGV2ZXIgaXMgZG9uZSBmb3IgWmJbYWJjc10sIFprKiwgWnYqLCBaaWNi byosIGV0Yy4gVGhlcmUgbWF5IG5vdCBiZQo+ID4+Pj4gYSBjb25jcmV0ZSBwbGFuIGZvciB0aGF0 IHlldCwgYnV0IHRoYXQgbWVhbnMgeW91IHNob3VsZCBzcGVhayB3aXRoIHRoZQo+ID4+Pj4gcGVv cGxlIGludm9sdmVkIHdpdGggc3VjaCBleHRlbnNpb25zIGFuZCBjb21lIHVwIHdpdGggc29tZXRo aW5nCj4gPj4+PiBhcHByb3ByaWF0ZSB0b2dldGhlci4KPiA+Pj4+Cj4gPj4+PiBKZXNzCj4gPj4+ Pgo+ID4+Cj4gPj4KPiA+PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwo+ID4+IGxpbnV4LXJpc2N2IG1haWxpbmcgbGlzdAo+ID4+IGxpbnV4LXJpc2N2QGxp c3RzLmluZnJhZGVhZC5vcmcKPiA+PiBodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2xpbnV4LXJpc2N2Cj4gPgo+ID4KPiA+Cj4gPiAtLQo+ID4gUmVnYXJkcywKPiA+ IEF0aXNoCj4gPgo+ID4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KPiA+IGxpbnV4LXJpc2N2IG1haWxpbmcgbGlzdAo+ID4gbGludXgtcmlzY3ZAbGlzdHMu aW5mcmFkZWFkLm9yZwo+ID4gaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0 aW5mby9saW51eC1yaXNjdgo+ID4KCgoKLS0gClJlZ2FyZHMsCkF0aXNoCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1yaXNjdiBtYWlsaW5nIGxp c3QKbGludXgtcmlzY3ZAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFk Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LXJpc2N2Cg==