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 lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (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 33362C54E5D for ; Tue, 19 Mar 2024 13:18:52 +0000 (UTC) Received: from list by lists.xenproject.org with outflank-mailman.695369.1085048 (Exim 4.92) (envelope-from ) id 1rmZMO-0005Gj-Um; Tue, 19 Mar 2024 13:18:32 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 695369.1085048; Tue, 19 Mar 2024 13:18:32 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1rmZMO-0005Gc-Ru; Tue, 19 Mar 2024 13:18:32 +0000 Received: by outflank-mailman (input) for mailman id 695369; Tue, 19 Mar 2024 13:18:31 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1rmZMN-0005DG-5Y for xen-devel@lists.xenproject.org; Tue, 19 Mar 2024 13:18:31 +0000 Received: from mail-qv1-xf32.google.com (mail-qv1-xf32.google.com [2607:f8b0:4864:20::f32]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 2cbf5615-e5f3-11ee-a1ee-f123f15fe8a2; Tue, 19 Mar 2024 14:18:29 +0100 (CET) Received: by mail-qv1-xf32.google.com with SMTP id 6a1803df08f44-69145fc4265so38007266d6.1 for ; Tue, 19 Mar 2024 06:18:29 -0700 (PDT) Received: from localhost ([85.31.135.62]) by smtp.gmail.com with ESMTPSA id cz8-20020a056214088800b00691663dbd4csm5984370qvb.78.2024.03.19.06.18.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 19 Mar 2024 06:18:27 -0700 (PDT) X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 2cbf5615-e5f3-11ee-a1ee-f123f15fe8a2 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=citrix.com; s=google; t=1710854308; x=1711459108; darn=lists.xenproject.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=eEZL8Wp7PtGZZCztHBKQg2DIByzevBllOdV4RD3XbXA=; b=QuoEsKSq/14CIeCbGnzE/8S+H9zGJIaEALQOtABrEHoYqCTiFVVzMZtoBT7IeH82QU 496o+gtF1jUp+qfHcARRj7dF5arSw5/IqNigODynrOEYA4esMG4m/pwTICxKLT6c8h1u q62EG+ZslwYDkXs57bcCoSPW+E6M91ZeMBhFc= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710854308; x=1711459108; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=eEZL8Wp7PtGZZCztHBKQg2DIByzevBllOdV4RD3XbXA=; b=B83oHzndhJbS+6BMdzMwn+56Vv7NrPxlYlL+xrUJ5zFrczcq/XDF4s5wEBXBICs2UC gkIab4+ZPtvUusIurgZpXaKHECbTYkecLUNqILfivMOEtAg4urlkmqfp5+FmNCc/5Udm /YPsNtT06d4GppQyZBcY0zBPXN5+j/yfGJOj12+9x0x6/9xZLP3+M+4dTGt+sFk7YUWe u/x/VaTahUmzZsNJbNdhbvUD5+NGjPuyNp2ndASZ+UgfseYqi0QXYFWGYY1bybS2nFtm s3IwNHsZ2m9uCXec9daUW5jqgiQL4pprHQfVp+8kiwzWYQru5mRdUS0wUmsPQsUrr/uM qXew== X-Forwarded-Encrypted: i=1; AJvYcCVKWms+wQ52ibn92FKoqY1duULDWT7ztCrJsUC3svGmTGTnEghr4Vrlm7VW09fLEv9CS5vNL+t1jzBUotONtCakA4/UUDYnGJGoGUCklDs= X-Gm-Message-State: AOJu0Yy8o823hbtUYeuhDV8/ZcwpqXXFMAuTXou8GwOy0uJ8IC+lSVpl 1gOzOcCs5KdUSJY4dME24ZTErSiJOyJ35vjiDVa6u8wlcfKzzz9nUGicsgygQ7U= X-Google-Smtp-Source: AGHT+IHSRYQ/BxWWIyxOaaI9zA/WImLgEQdIFCzGFXrRn7xOf6XttcNfvOdEZOc/Xl3c1FD9rTWCdg== X-Received: by 2002:ad4:58a4:0:b0:691:698e:9299 with SMTP id ea4-20020ad458a4000000b00691698e9299mr1938874qvb.61.1710854307946; Tue, 19 Mar 2024 06:18:27 -0700 (PDT) Date: Tue, 19 Mar 2024 14:18:25 +0100 From: Roger Pau =?utf-8?B?TW9ubsOp?= To: Ross Lagerwall Cc: grub-devel@gnu.org, xen-devel@lists.xenproject.org, Andrew Cooper , Daniel Kiper Subject: Re: [PATCH 1/7] multiboot2: Add load type header and support for the PE binary type Message-ID: References: <20240313150748.791236-1-ross.lagerwall@citrix.com> <20240313150748.791236-2-ross.lagerwall@citrix.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <20240313150748.791236-2-ross.lagerwall@citrix.com> On Wed, Mar 13, 2024 at 03:07:42PM +0000, Ross Lagerwall wrote: > Currently, multiboot2-compatible bootloaders can load ELF binaries and > a.out binaries. The presence of the address header tag determines > how the bootloader tries to interpret the binary (a.out if the address > tag is present else ELF). > > Add a new load type header tag that explicitly states the type of the > binary. Bootloaders should use the binary type specified in the load > type tag. If the load type tag is not present, the bootloader should > fall back to the previous heuristics. > > In addition to the existing address and ELF load types, specify a new > optional PE binary load type. This new type is a useful addition since > PE binaries can be signed and verified (i.e. used with Secure Boot). > > Signed-off-by: Ross Lagerwall > --- > doc/multiboot.texi | 39 ++++++++++++++++++++++++++++++++++----- > doc/multiboot2.h | 13 +++++++++++++ > 2 files changed, 47 insertions(+), 5 deletions(-) > > diff --git a/doc/multiboot.texi b/doc/multiboot.texi > index df8a0d056e76..d12719c744eb 100644 > --- a/doc/multiboot.texi > +++ b/doc/multiboot.texi > @@ -511,11 +511,12 @@ assumes that no bss segment is present. > > Note: This information does not need to be provided if the kernel image > is in @sc{elf} format, but it must be provided if the image is in a.out > -format or in some other format. When the address tag is present it must > -be used in order to load the image, regardless of whether an @sc{elf} > -header is also present. Compliant boot loaders must be able to load > -images that are either in @sc{elf} format or contain the address tag > -embedded in the Multiboot2 header. > +format or in some other format. If the load type tag is not specified > +and the address tag is present it must be used in order to load the > +image, regardless of whether an @sc{elf} header is also present. > +Compliant boot loaders must be able to load images that are either in > +@sc{elf} format or contain the address tag embedded in the Multiboot2 > +header. > > @subsection The entry address tag of Multiboot2 header > > @@ -732,6 +733,34 @@ and @samp{2} means load image at highest possible address but not > higher than max_addr. > @end table > > +@node Load type tag > +@subsection Load type tag > + > +@example > +@group > + +-------------------+ > +u16 | type = 11 | > +u16 | flags | > +u32 | size = 12 | > +u32 | load_type | > + +-------------------+ > +@end group > +@end example > + > +This tag indicates the type of the payload and how the boot loader > +should load it. > + > +The meaning of each field is as follows: > + > +@table @code > +@item load_type > +Recognized load types are @samp{0} for address (i.e. load a.out using > +the address tag), @samp{1} for ELF, and @samp{2} for PE. Compliant > +bootloaders should implement support for a.out and ELF as a minimum. If > +this tag is not specified, the boot loader should attempt to load the > +payload using the information specified in the address tag if present, > +else it should load the payload as an ELF binary. @end table I wonder if it would be simpler to use the following order instead: 1. Address tag 2. Load type tag 3. ELF header It's pointless to add a Loader type tag with load_type == 0, as that's already mandated by the Address tag. IOW: signaling the use of the Address tag here is kind of pointless, if the fields in the Address tag are set, that's the only signaling required for the data in the Address tag to be used. Or are we attempting to support images that set Address tag and Load type tag != 0 in order to use the Address tag when the loader doesn't recognize the Load type tag, and otherwise use a different format? Would it be sensible for multiboot2 to use PE in preference to ELF if present on the image? (without requiring any signaling). I would think this could be troublesome if kernels are so far expecting the ELF header to be used with multiboot2, even if they also expose a PE header. Thanks, Roger. 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) (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 5F482C54E60 for ; Tue, 19 Mar 2024 13:19:03 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rmZMQ-0003Wi-FL; Tue, 19 Mar 2024 09:18:34 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rmZMO-0003WI-2v for grub-devel@gnu.org; Tue, 19 Mar 2024 09:18:32 -0400 Received: from mail-qv1-xf2d.google.com ([2607:f8b0:4864:20::f2d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rmZML-0007FR-EM for grub-devel@gnu.org; Tue, 19 Mar 2024 09:18:31 -0400 Received: by mail-qv1-xf2d.google.com with SMTP id 6a1803df08f44-6962a97752eso9119636d6.2 for ; Tue, 19 Mar 2024 06:18:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=citrix.com; s=google; t=1710854308; x=1711459108; darn=gnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=eEZL8Wp7PtGZZCztHBKQg2DIByzevBllOdV4RD3XbXA=; b=j/I/wA8if5gy30B84ofxSgx2xBbETuuapw9zWiHFt1SmxDJsf2ZxoTKJN6CP5Cbi59 PaEvnQlrVjdHKpe5aSokqAvvJH4r2krJe/36bGORkhxmMSWEGUO63i0c9J7SDmlkc/pG hVHo+LQDRX1s7IG7dHEuNAnhI3/VCHVQwmpL4= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710854308; x=1711459108; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=eEZL8Wp7PtGZZCztHBKQg2DIByzevBllOdV4RD3XbXA=; b=EPjrd7qsFhRC+czFHdIZJ5filQDeUPo51rl69mQQSIl2c3ELfo/lYm/zJjMp9hsVOX b9lpxBJN641azkCuqXMarzZMIpV4Kg7XByLTTh5k0V1w7VbdBJ79NyZ4d8T3Xa7PzcpL W9F37AldH5xw9lXQsHPPxZ7nSzFSCtk83IPJ8h4B5sTjf0VA+A8QeEOFyIH1XSlkqJ/3 /HWGnGYNmUaUTNsDoUH3zolkbkyHFXp9XAWvIdSKBrgovmSRmIfYXeVxnQWEM9YHlrlq /LlVOqgFNHpYctWDdasiXTWpN6bB1V0yBh462AkFxANeo+mf6OpQhQv5uL1TyTNdJpCh 0m1g== X-Gm-Message-State: AOJu0Yy5IQtrVSfoJyD3czVWBF6V41QUkE/Nfd3sl98mXz8KZX34Jm9E HfFIK0wiknqImZfCQVwH2jwzhMYptObrHhu8EPwZ7PW5f0P0vQP9B4WRYojnTRE= X-Google-Smtp-Source: AGHT+IHSRYQ/BxWWIyxOaaI9zA/WImLgEQdIFCzGFXrRn7xOf6XttcNfvOdEZOc/Xl3c1FD9rTWCdg== X-Received: by 2002:ad4:58a4:0:b0:691:698e:9299 with SMTP id ea4-20020ad458a4000000b00691698e9299mr1938874qvb.61.1710854307946; Tue, 19 Mar 2024 06:18:27 -0700 (PDT) Received: from localhost ([85.31.135.62]) by smtp.gmail.com with ESMTPSA id cz8-20020a056214088800b00691663dbd4csm5984370qvb.78.2024.03.19.06.18.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 19 Mar 2024 06:18:27 -0700 (PDT) Date: Tue, 19 Mar 2024 14:18:25 +0100 To: Ross Lagerwall Subject: Re: [PATCH 1/7] multiboot2: Add load type header and support for the PE binary type Message-ID: References: <20240313150748.791236-1-ross.lagerwall@citrix.com> <20240313150748.791236-2-ross.lagerwall@citrix.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20240313150748.791236-2-ross.lagerwall@citrix.com> Received-SPF: pass client-ip=2607:f8b0:4864:20::f2d; envelope-from=roger.pau@cloud.com; helo=mail-qv1-xf2d.google.com X-Spam_score_int: -21 X-Spam_score: -2.2 X-Spam_bar: -- X-Spam_report: (-2.2 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.422, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: grub-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: The development of GNU GRUB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: =?utf-8?q?Roger_Pau_Monn=C3=A9_via_Grub-devel?= Reply-To: The development of GNU GRUB Cc: Roger Pau =?utf-8?B?TW9ubsOp?= , grub-devel@gnu.org, xen-devel@lists.xenproject.org, Andrew Cooper , Daniel Kiper Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: grub-devel-bounces+grub-devel=archiver.kernel.org@gnu.org Sender: grub-devel-bounces+grub-devel=archiver.kernel.org@gnu.org T24gV2VkLCBNYXIgMTMsIDIwMjQgYXQgMDM6MDc6NDJQTSArMDAwMCwgUm9zcyBMYWdlcndhbGwg d3JvdGU6Cj4gQ3VycmVudGx5LCBtdWx0aWJvb3QyLWNvbXBhdGlibGUgYm9vdGxvYWRlcnMgY2Fu IGxvYWQgRUxGIGJpbmFyaWVzIGFuZAo+IGEub3V0IGJpbmFyaWVzLiBUaGUgcHJlc2VuY2Ugb2Yg dGhlIGFkZHJlc3MgaGVhZGVyIHRhZyBkZXRlcm1pbmVzCj4gaG93IHRoZSBib290bG9hZGVyIHRy aWVzIHRvIGludGVycHJldCB0aGUgYmluYXJ5IChhLm91dCBpZiB0aGUgYWRkcmVzcwo+IHRhZyBp cyBwcmVzZW50IGVsc2UgRUxGKS4KPiAKPiBBZGQgYSBuZXcgbG9hZCB0eXBlIGhlYWRlciB0YWcg dGhhdCBleHBsaWNpdGx5IHN0YXRlcyB0aGUgdHlwZSBvZiB0aGUKPiBiaW5hcnkuIEJvb3Rsb2Fk ZXJzIHNob3VsZCB1c2UgdGhlIGJpbmFyeSB0eXBlIHNwZWNpZmllZCBpbiB0aGUgbG9hZAo+IHR5 cGUgdGFnLiBJZiB0aGUgbG9hZCB0eXBlIHRhZyBpcyBub3QgcHJlc2VudCwgdGhlIGJvb3Rsb2Fk ZXIgc2hvdWxkCj4gZmFsbCBiYWNrIHRvIHRoZSBwcmV2aW91cyBoZXVyaXN0aWNzLgo+IAo+IElu IGFkZGl0aW9uIHRvIHRoZSBleGlzdGluZyBhZGRyZXNzIGFuZCBFTEYgbG9hZCB0eXBlcywgc3Bl Y2lmeSBhIG5ldwo+IG9wdGlvbmFsIFBFIGJpbmFyeSBsb2FkIHR5cGUuIFRoaXMgbmV3IHR5cGUg aXMgYSB1c2VmdWwgYWRkaXRpb24gc2luY2UKPiBQRSBiaW5hcmllcyBjYW4gYmUgc2lnbmVkIGFu ZCB2ZXJpZmllZCAoaS5lLiB1c2VkIHdpdGggU2VjdXJlIEJvb3QpLgo+IAo+IFNpZ25lZC1vZmYt Ynk6IFJvc3MgTGFnZXJ3YWxsIDxyb3NzLmxhZ2Vyd2FsbEBjaXRyaXguY29tPgo+IC0tLQo+ICBk b2MvbXVsdGlib290LnRleGkgfCAzOSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr LS0tLS0KPiAgZG9jL211bHRpYm9vdDIuaCAgIHwgMTMgKysrKysrKysrKysrKwo+ICAyIGZpbGVz IGNoYW5nZWQsIDQ3IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdp dCBhL2RvYy9tdWx0aWJvb3QudGV4aSBiL2RvYy9tdWx0aWJvb3QudGV4aQo+IGluZGV4IGRmOGEw ZDA1NmU3Ni4uZDEyNzE5Yzc0NGViIDEwMDY0NAo+IC0tLSBhL2RvYy9tdWx0aWJvb3QudGV4aQo+ ICsrKyBiL2RvYy9tdWx0aWJvb3QudGV4aQo+IEBAIC01MTEsMTEgKzUxMSwxMiBAQCBhc3N1bWVz IHRoYXQgbm8gYnNzIHNlZ21lbnQgaXMgcHJlc2VudC4KPiAgCj4gIE5vdGU6IFRoaXMgaW5mb3Jt YXRpb24gZG9lcyBub3QgbmVlZCB0byBiZSBwcm92aWRlZCBpZiB0aGUga2VybmVsIGltYWdlCj4g IGlzIGluIEBzY3tlbGZ9IGZvcm1hdCwgYnV0IGl0IG11c3QgYmUgcHJvdmlkZWQgaWYgdGhlIGlt YWdlIGlzIGluIGEub3V0Cj4gLWZvcm1hdCBvciBpbiBzb21lIG90aGVyIGZvcm1hdC4gV2hlbiB0 aGUgYWRkcmVzcyB0YWcgaXMgcHJlc2VudCBpdCBtdXN0Cj4gLWJlIHVzZWQgaW4gb3JkZXIgdG8g bG9hZCB0aGUgaW1hZ2UsIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBhbiBAc2N7ZWxmfQo+IC1oZWFk ZXIgaXMgYWxzbyBwcmVzZW50LiBDb21wbGlhbnQgYm9vdCBsb2FkZXJzIG11c3QgYmUgYWJsZSB0 byBsb2FkCj4gLWltYWdlcyB0aGF0IGFyZSBlaXRoZXIgaW4gQHNje2VsZn0gZm9ybWF0IG9yIGNv bnRhaW4gdGhlIGFkZHJlc3MgdGFnCj4gLWVtYmVkZGVkIGluIHRoZSBNdWx0aWJvb3QyIGhlYWRl ci4KPiArZm9ybWF0IG9yIGluIHNvbWUgb3RoZXIgZm9ybWF0LiBJZiB0aGUgbG9hZCB0eXBlIHRh ZyBpcyBub3Qgc3BlY2lmaWVkCj4gK2FuZCB0aGUgYWRkcmVzcyB0YWcgaXMgcHJlc2VudCBpdCBt dXN0IGJlIHVzZWQgaW4gb3JkZXIgdG8gbG9hZCB0aGUKPiAraW1hZ2UsIHJlZ2FyZGxlc3Mgb2Yg d2hldGhlciBhbiBAc2N7ZWxmfSBoZWFkZXIgaXMgYWxzbyBwcmVzZW50Lgo+ICtDb21wbGlhbnQg Ym9vdCBsb2FkZXJzIG11c3QgYmUgYWJsZSB0byBsb2FkIGltYWdlcyB0aGF0IGFyZSBlaXRoZXIg aW4KPiArQHNje2VsZn0gZm9ybWF0IG9yIGNvbnRhaW4gdGhlIGFkZHJlc3MgdGFnIGVtYmVkZGVk IGluIHRoZSBNdWx0aWJvb3QyCj4gK2hlYWRlci4KPiAgCj4gIEBzdWJzZWN0aW9uIFRoZSBlbnRy eSBhZGRyZXNzIHRhZyBvZiBNdWx0aWJvb3QyIGhlYWRlcgo+ICAKPiBAQCAtNzMyLDYgKzczMywz NCBAQCBhbmQgQHNhbXB7Mn0gbWVhbnMgbG9hZCBpbWFnZSBhdCBoaWdoZXN0IHBvc3NpYmxlIGFk ZHJlc3MgYnV0IG5vdAo+ICBoaWdoZXIgdGhhbiBtYXhfYWRkci4KPiAgQGVuZCB0YWJsZQo+ICAK PiArQG5vZGUgTG9hZCB0eXBlIHRhZwo+ICtAc3Vic2VjdGlvbiBMb2FkIHR5cGUgdGFnCj4gKwo+ ICtAZXhhbXBsZQo+ICtAZ3JvdXAKPiArICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLSsKPiAr dTE2ICAgICB8IHR5cGUgPSAxMSAgICAgICAgIHwKPiArdTE2ICAgICB8IGZsYWdzICAgICAgICAg ICAgIHwKPiArdTMyICAgICB8IHNpemUgPSAxMiAgICAgICAgIHwKPiArdTMyICAgICB8IGxvYWRf dHlwZSAgICAgICAgIHwKPiArICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLSsKPiArQGVuZCBn cm91cAo+ICtAZW5kIGV4YW1wbGUKPiArCj4gK1RoaXMgdGFnIGluZGljYXRlcyB0aGUgdHlwZSBv ZiB0aGUgcGF5bG9hZCBhbmQgaG93IHRoZSBib290IGxvYWRlcgo+ICtzaG91bGQgbG9hZCBpdC4K PiArCj4gK1RoZSBtZWFuaW5nIG9mIGVhY2ggZmllbGQgaXMgYXMgZm9sbG93czoKPiArCj4gK0B0 YWJsZSBAY29kZQo+ICtAaXRlbSBsb2FkX3R5cGUKPiArUmVjb2duaXplZCBsb2FkIHR5cGVzIGFy ZSBAc2FtcHswfSBmb3IgYWRkcmVzcyAoaS5lLiBsb2FkIGEub3V0IHVzaW5nCj4gK3RoZSBhZGRy ZXNzIHRhZyksIEBzYW1wezF9IGZvciBFTEYsIGFuZCBAc2FtcHsyfSBmb3IgUEUuIENvbXBsaWFu dAo+ICtib290bG9hZGVycyBzaG91bGQgaW1wbGVtZW50IHN1cHBvcnQgZm9yIGEub3V0IGFuZCBF TEYgYXMgYSBtaW5pbXVtLiAgSWYKPiArdGhpcyB0YWcgaXMgbm90IHNwZWNpZmllZCwgdGhlIGJv b3QgbG9hZGVyIHNob3VsZCBhdHRlbXB0IHRvIGxvYWQgdGhlCj4gK3BheWxvYWQgdXNpbmcgdGhl IGluZm9ybWF0aW9uIHNwZWNpZmllZCBpbiB0aGUgYWRkcmVzcyB0YWcgaWYgcHJlc2VudCwKPiAr ZWxzZSBpdCBzaG91bGQgbG9hZCB0aGUgcGF5bG9hZCBhcyBhbiBFTEYgYmluYXJ5LiAgQGVuZCB0 YWJsZQoKSSB3b25kZXIgaWYgaXQgd291bGQgYmUgc2ltcGxlciB0byB1c2UgdGhlIGZvbGxvd2lu ZyBvcmRlciBpbnN0ZWFkOgoKMS4gQWRkcmVzcyB0YWcKMi4gTG9hZCB0eXBlIHRhZwozLiBFTEYg aGVhZGVyCgpJdCdzIHBvaW50bGVzcyB0byBhZGQgYSBMb2FkZXIgdHlwZSB0YWcgd2l0aCBsb2Fk X3R5cGUgPT0gMCwgYXMgdGhhdCdzCmFscmVhZHkgbWFuZGF0ZWQgYnkgdGhlIEFkZHJlc3MgdGFn LiAgSU9XOiBzaWduYWxpbmcgdGhlIHVzZSBvZiB0aGUKQWRkcmVzcyB0YWcgaGVyZSBpcyBraW5k IG9mIHBvaW50bGVzcywgaWYgdGhlIGZpZWxkcyBpbiB0aGUgQWRkcmVzcwp0YWcgYXJlIHNldCwg dGhhdCdzIHRoZSBvbmx5IHNpZ25hbGluZyByZXF1aXJlZCBmb3IgdGhlIGRhdGEgaW4gdGhlCkFk ZHJlc3MgdGFnIHRvIGJlIHVzZWQuCgpPciBhcmUgd2UgYXR0ZW1wdGluZyB0byBzdXBwb3J0IGlt YWdlcyB0aGF0IHNldCBBZGRyZXNzIHRhZyBhbmQgTG9hZAp0eXBlIHRhZyAhPSAwIGluIG9yZGVy IHRvIHVzZSB0aGUgQWRkcmVzcyB0YWcgd2hlbiB0aGUgbG9hZGVyIGRvZXNuJ3QKcmVjb2duaXpl IHRoZSBMb2FkIHR5cGUgdGFnLCBhbmQgb3RoZXJ3aXNlIHVzZSBhIGRpZmZlcmVudCBmb3JtYXQ/ CgpXb3VsZCBpdCBiZSBzZW5zaWJsZSBmb3IgbXVsdGlib290MiB0byB1c2UgUEUgaW4gcHJlZmVy ZW5jZSB0byBFTEYgaWYKcHJlc2VudCBvbiB0aGUgaW1hZ2U/ICAod2l0aG91dCByZXF1aXJpbmcg YW55IHNpZ25hbGluZykuICBJIHdvdWxkCnRoaW5rIHRoaXMgY291bGQgYmUgdHJvdWJsZXNvbWUg aWYga2VybmVscyBhcmUgc28gZmFyIGV4cGVjdGluZyB0aGUKRUxGIGhlYWRlciB0byBiZSB1c2Vk IHdpdGggbXVsdGlib290MiwgZXZlbiBpZiB0aGV5IGFsc28gZXhwb3NlIGEgUEUKaGVhZGVyLgoK VGhhbmtzLCBSb2dlci4KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCkdydWItZGV2ZWwgbWFpbGluZyBsaXN0CkdydWItZGV2ZWxAZ251Lm9yZwpodHRwczov L2xpc3RzLmdudS5vcmcvbWFpbG1hbi9saXN0aW5mby9ncnViLWRldmVsCg==