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 X-Spam-Level: X-Spam-Status: No, score=-4.0 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0AC25C433DF for ; Tue, 4 Aug 2020 14:32:00 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id C3712208A9 for ; Tue, 4 Aug 2020 14:31:59 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="o6FNmhmi" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org C3712208A9 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=arm.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References:Message-ID: Subject:To:From:Date:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=g7sKlOSvK57sEaKbNXdLEIE3YITARvxzrf8+qMF4U9U=; b=o6FNmhmiLqw5c1jhCRzUf3mOJ 5iGamhhkNLXcRr+SQZ6s6v3BwHDFmkcZXs7tNGjWj7mKa3F/kDC3h4T7VEXAJn1bOeiwq3m7sLAa3 Qugf8NmiQ3MvROGg6R3AMdFj23xhZK3ln3jJseaomZNY/ng0qt1gXp0uz2l+TIEs5mWoIQDRzRMHw 7XyDbgg9HSnOjLVo2znO8z/3YMESpRnHMNTSl6FbeaqOhFXXCf+a2AWjueob7qLY6D4BafyqlA6Ns g4BwEo0LTNcdAcx+PegzGc9SMIuWho6oWcerb7uhvNUyzbLYP+Iiq4aibjiWNfIkmRcDxXqqjNqjl 8zMPmnaRQ==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1k2xxU-0006FU-8f; Tue, 04 Aug 2020 14:30:28 +0000 Received: from foss.arm.com ([217.140.110.172]) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1k2xxQ-0006EH-OR for linux-arm-kernel@lists.infradead.org; Tue, 04 Aug 2020 14:30:26 +0000 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 5E9A631B; Tue, 4 Aug 2020 07:30:23 -0700 (PDT) Received: from C02TD0UTHF1T.local (unknown [10.57.37.104]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 0DB4D3F718; Tue, 4 Aug 2020 07:30:20 -0700 (PDT) Date: Tue, 4 Aug 2020 15:30:18 +0100 From: Mark Rutland To: "Madhavan T. Venkataraman" Subject: Re: [PATCH v1 0/4] [RFC] Implement Trampoline File Descriptor Message-ID: <20200804143018.GB7440@C02TD0UTHF1T.local> References: <20200728131050.24443-1-madvenka@linux.microsoft.com> <20200731180955.GC67415@C02TD0UTHF1T.local> <6236adf7-4bed-534e-0956-fddab4fd96b6@linux.microsoft.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <6236adf7-4bed-534e-0956-fddab4fd96b6@linux.microsoft.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200804_103024_946037_0F99BAA4 X-CRM114-Status: GOOD ( 62.52 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: kernel-hardening@lists.openwall.com, linux-api@vger.kernel.org, x86@kernel.org, linux-kernel@vger.kernel.org, oleg@redhat.com, linux-security-module@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-integrity@vger.kernel.org, linux-arm-kernel@lists.infradead.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gTW9uLCBBdWcgMDMsIDIwMjAgYXQgMTE6NTc6NTdBTSAtMDUwMCwgTWFkaGF2YW4gVC4gVmVu a2F0YXJhbWFuIHdyb3RlOgo+IFJlc3BvbnNlcyBpbmxpbmUuLgo+IAo+IE9uIDcvMzEvMjAgMTow OSBQTSwgTWFyayBSdXRsYW5kIHdyb3RlOgo+ID4gSGksCj4gPgo+ID4gT24gVHVlLCBKdWwgMjgs IDIwMjAgYXQgMDg6MTA6NDZBTSAtMDUwMCwgbWFkdmVua2FAbGludXgubWljcm9zb2Z0LmNvbSB3 cm90ZToKPiA+PiBGcm9tOiAiTWFkaGF2YW4gVC4gVmVua2F0YXJhbWFuIiA8bWFkdmVua2FAbGlu dXgubWljcm9zb2Z0LmNvbT4KPiA+PiBUcmFtcG9saW5lIGNvZGUgaXMgcGxhY2VkIGVpdGhlciBp biBhIGRhdGEgcGFnZSBvciBpbiBhIHN0YWNrIHBhZ2UuIEluCj4gPj4gb3JkZXIgdG8gZXhlY3V0 ZSBhIHRyYW1wb2xpbmUsIHRoZSBwYWdlIGl0IHJlc2lkZXMgaW4gbmVlZHMgdG8gYmUgbWFwcGVk Cj4gPj4gd2l0aCBleGVjdXRlIHBlcm1pc3Npb25zLiBXcml0YWJsZSBwYWdlcyB3aXRoIGV4ZWN1 dGUgcGVybWlzc2lvbnMgcHJvdmlkZQo+ID4+IGFuIGF0dGFjayBzdXJmYWNlIGZvciBoYWNrZXJz LiBBdHRhY2tlcnMgY2FuIHVzZSB0aGlzIHRvIGluamVjdCBtYWxpY2lvdXMKPiA+PiBjb2RlLCBt b2RpZnkgZXhpc3RpbmcgY29kZSBvciBkbyBvdGhlciBoYXJtLgo+ID4gRm9yIHRoZSBwdXJwb3Nl IG9mIGJlbG93LCBJSVVDIHRoaXMgYXNzdW1lcyB0aGUgYWR2ZXJzYXJ5IGhhcyBhbgo+ID4gYXJi aXRyYXJ5IHdyaXRlLgo+ID4KPiA+PiBUbyBtaXRpZ2F0ZSB0aGlzLCBMU01zIHN1Y2ggYXMgU0VM aW51eCBtYXkgbm90IGFsbG93IHBhZ2VzIHRvIGhhdmUgYm90aAo+ID4+IHdyaXRlIGFuZCBleGVj dXRlIHBlcm1pc3Npb25zLiBUaGlzIHByZXZlbnRzIHRyYW1wb2xpbmVzIGZyb20gZXhlY3V0aW5n Cj4gPj4gYW5kIGJsb2NrcyBhcHBsaWNhdGlvbnMgdGhhdCB1c2UgdHJhbXBvbGluZXMuIFRvIGFs bG93IGdlbnVpbmUgYXBwbGljYXRpb25zCj4gPj4gdG8gcnVuLCBleGNlcHRpb25zIGhhdmUgdG8g YmUgbWFkZSBmb3IgdGhlbSAoYnkgc2V0dGluZyBleGVjbWVtLCBldGMpLgo+ID4+IEluIHRoaXMg Y2FzZSwgdGhlIGF0dGFjayBzdXJmYWNlIGlzIGp1c3QgdGhlIHBhZ2VzIG9mIHN1Y2ggYXBwbGlj YXRpb25zLgo+ID4+Cj4gPj4gQW4gYXBwbGljYXRpb24gdGhhdCBpcyBub3QgYWxsb3dlZCB0byBo YXZlIHdyaXRhYmxlIGV4ZWN1dGFibGUgcGFnZXMKPiA+PiBtYXkgdHJ5IHRvIGxvYWQgdHJhbXBv bGluZSBjb2RlIGludG8gYSBmaWxlIGFuZCBtYXAgdGhlIGZpbGUgd2l0aCBleGVjdXRlCj4gPj4g cGVybWlzc2lvbnMuIEluIHRoaXMgY2FzZSwgdGhlIGF0dGFjayBzdXJmYWNlIGlzIGp1c3QgdGhl IGJ1ZmZlciB0aGF0Cj4gPj4gY29udGFpbnMgdHJhbXBvbGluZSBjb2RlLiBIb3dldmVyLCBhIHN1 Y2Nlc3NmdWwgZXhwbG9pdCBtYXkgcHJvdmlkZSB0aGUKPiA+PiBoYWNrZXIgd2l0aCBtZWFucyB0 byBsb2FkIGhpcyBvd24gY29kZSBpbiBhIGZpbGUsIG1hcCBpdCBhbmQgZXhlY3V0ZSBpdC4KPiA+ IEl0J3Mgbm90IGNsZWFyIHRvIG1lIHdoYXQgcG93ZXIgdGhlIGFkdmVyc2FyeSBpcyBhc3N1bWVk IHRvIGhhdmUgaGVyZSwKPiA+IGFuZCBjb25zZXF1ZW50bHkgaXQncyBub3QgY2xlYXIgdG8gbWUg aG93IHRoZSBwcm9wb3NhbCBtaXRpZ2F0ZXMgdGhpcy4KPiA+Cj4gPiBGb3IgZXhhbXBsZSwgaWYg dGhlIGF0dGFjayBjYW4gY29udHJvbCB0aGUgYXJndW1lbnRzIHRvIHN5c2NhbGxzLCBhbmQKPiA+ IGhhcyBhbiBhcmJpdHJhcnkgd3JpdGUgYXMgYWJvdmUsIHdoYXQgcHJldmVudHMgdGhlbSBmcm9t IGNyZWF0aW5nIGEKPiA+IHRyYW1wZmQgb2YgdGhlaXIgb3duPwo+IAo+IFRoYXQgaXMgdGhlIHBv aW50LiBJZiBhIHByb2Nlc3MgaXMgYWxsb3dlZCB0byBoYXZlIHBhZ2VzIHRoYXQgYXJlIGJvdGgK PiB3cml0YWJsZSBhbmQgZXhlY3V0YWJsZSwgYSBoYWNrZXIgY2FuIGV4cGxvaXQgc29tZSB2dWxu ZXJhYmlsaXR5IHN1Y2gKPiBhcyBidWZmZXIgb3ZlcmZsb3cgdG8gd3JpdGUgaGlzIG93biBjb2Rl IGludG8gYSBwYWdlIGFuZCBzb21laG93Cj4gY29udHJpdmUgdG8gZXhlY3V0ZSB0aGF0LgoKSSB1 bmRlcnN0b29kIHRoYXQsIGFuZCB0aGF0IHdhcyBub3QgbXkgcXVlc3Rpb24uCgo+IFNvLCB0aGUg Y29udGV4dCBpcyAtIGlmIHNlY3VyaXR5IHNldHRpbmdzIGluIGEgc3lzdGVtIGRpc2FsbG93IGEg cGFnZSB0byBoYXZlCj4gYm90aCB3cml0ZSBhbmQgZXhlY3V0ZSBwZXJtaXNzaW9ucywgaG93IGRv IHlvdSBhbGxvdyB0aGUgZXhlY3V0aW9uIG9mCj4gZ2VudWluZSB0cmFtcG9saW5lcyB0aGF0IGFy ZSBydW50aW1lIGdlbmVyYXRlZCBhbmQgcGxhY2VkIGluIGEgZGF0YQo+IHBhZ2Ugb3IgYSBzdGFj ayBwYWdlPwoKVGhlcmUgYXJlIG9wdGlvbnMgdG9kYXksIGUuZy4KCmEpIElmIHRoZSByZXN0cmlj dGlvbiBpcyBvbmx5IHBlci1hbGlhcywgeW91IGNhbiBoYXZlIGRpc3RpbmN0IGFsaWFzZXMKICAg d2hlcmUgb25lIGlzIHdyaXRhYmxlIGFuZCBhbm90aGVyIGlzIGV4ZWN1dGFibGUsIGFuZCB5b3Ug Y2FuIG1ha2UgaXQKICAgaGFyZCB0byBmaW5kIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGUg dHdvLgoKYikgSWYgdGhlIHJlc3RyaWN0aW9uIGlzIG9ubHkgdGVtcG9yYWwsIHlvdSBjYW4gd3Jp dGUgaW5zdHJ1Y3Rpb25zIGludG8KICAgYW4gUlctIGJ1ZmZlciwgdHJhbnNpdGlvbiB0aGUgYnVm ZmVyIHRvIFItLSwgdmVyaWZ5IHRoZSBidWZmZXIKICAgY29udGVudHMsIHRoZW4gdHJhbnNpdGlv biBpdCB0byAtLVguCgpjKSBZb3UgY2FuIGhhdmUgdHdvIHByb2Nlc3NlcyBBIGFuZCBCIHdoZXJl IEEgZ2VuZXJhdGVzIGluc3RydWNpdG9ucyBpbnRvCiAgIGEgYnVmZmVyIHRoYXQgKG9ubHkpIEIg Y2FuIGV4ZWN1dGUgKHdoZXJlIEIgbWF5IGJlIHJlc3RyaWN0ZWQgZnJvbQogICBtYWtpbmcgc3lz Y2FsbHMgbGlrZSB3cml0ZSwgbXByb3RlY3QsIGV0YykuCgpJZiAoYXMgdGhpcyBzZXJpZXMgYXBw ZWFycyB0bykgeW91IGFzc3VtZSB0aGF0IGFuIGFkdmVyc2FyeSBjYW4ndApjb250cm9sIHRoZSBh cmd1bWVudHMgdHJhbXBmZF9jcmVhdGUoKSBhbmQgYW55IHN1Y2ggY2FsbCBpcyBsZWdpdGltYXRl LAp0aGVuIHNvbWV0aGluZyBsaWtlIChiKSBpcyBub3Qgd2Vha2VyIGFuZCBjYW4gYmUgbXVjaCBt b3JlIGdlbmVyYWwKd2l0aG91dCBtYW55IG9mIHRoZSBwb3RlbnRpYWwgQUJJIG9yIHBlcmZvcm1h bmNlIHByb2JsZW1zIG9mIHRyeWluZyB0bwpmaWRkbGUgd2l0aCBwcmVjZWR1cmUgY2FsbCBkZXRh aWxzIGluIHRoZSBrZXJuZWwuCgpJZiB0aGF0J3Mgbm90IGFuIGFzc3VtcHRpb24sIHRoZW4gSSdt IG1pc3NpbmcgaG93IHlvdSBleHBlY3QgdG8KZGV0ZXJtaW5lIHRoYXQgYSB0cmFtcGZkX2NyZWF0 ZSgpIGNhbGwgaXMgbGVnaXRpbWF0ZSwgYW5kIHdoeSB0aGF0IGNvdWxkCm5vdCBiZSBhcHBsaWVk IHRvIG90aGVyIGNhbGxzLgoKWy4uLl0KCj4gQ291bGQgbm90IGFncmVlIHdpdGggeW91IG1vcmUu Cj4gPgo+ID4gWy4uLl0KPiA+Cj4gPj4gVHJhbXBvbGluZSBGaWxlIERlc2NyaXB0b3IgKHRyYW1w ZmQpCj4gPj4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiA+Pgo+ID4+IEkgYW0gcHJvcG9z aW5nIGEga2VybmVsIEFQSSB1c2luZyBhbm9ueW1vdXMgZmlsZSBkZXNjcmlwdG9ycyB0aGF0Cj4g Pj4gY2FuIGJlIHVzZWQgdG8gY3JlYXRlIGFuZCBleGVjdXRlIHRyYW1wb2xpbmVzIHdpdGggdGhl IGhlbHAgb2YgdGhlCj4gPj4ga2VybmVsLiBJbiB0aGlzIHNvbHV0aW9uIGFsc28sIHRoZSBrZXJu ZWwgZG9lcyB0aGUgd29yayBvZiB0aGUgdHJhbXBvbGluZS4KPiA+IFdoYXQncyB0aGUgcmF0aW9u YWxlIGZvciB0aGUga2VybmVsIGVtdWxhdGluZyB0aGUgdHJhbXBvbGluZSBoZXJlPwo+ID4KPiA+ IEluIHRoZXIgY2FzZSBvZiBFTVVUUkFNUCB0aGlzIHdhcyBuZWNlc3NhcnkgdG8gd29yayB3aXRo IGV4aXN0aW5nCj4gPiBhcHBsaWNhdGlvbiBiaW5hcmllcyBhbmQga2VybmVsIEFCSXMgd2hpY2gg cGxhY2VkIGluc3RydWN0aW9ucyBvbnRvIHRoZQo+ID4gc3RhY2ssIGFuZCB0aGUgc3RhY2sgbmVl ZGVkIHRvIHJlbWFpbiBSVyBmb3Igb3RoZXIgcmVhc29ucy4gVGhhdAo+ID4gcmVzdHJpY3Rpb24g ZG9lc24ndCBhcHBseSBoZXJlLgo+IAo+IEluIGFkZGl0aW9uIHRvIHRoZSBzdGFjaywgRU1VVFJB TVAgYWxzbyBhbGxvd3MgdGhlIGVtdWxhdGlvbgo+IG9mIHRoZSBzYW1lIHdlbGwta25vd24gdHJh bXBvbGluZXMgcGxhY2VkIGluIGEgbm9uLXN0YWNrIGRhdGEgcGFnZS4KPiBGb3IgaW5zdGFuY2Us IGxpYmZmaSBjbG9zdXJlcyBlbWJlZCBhIHRyYW1wb2xpbmUgaW4gYSBjbG9zdXJlIHN0cnVjdHVy ZS4KPiBUaGF0IGdldHMgZXhlY3V0ZWQgd2hlbiB0aGUgY2FsbGVyIG9mIGxpYmZmaSBpbnZva2Vz IGl0Lgo+IAo+IFRoZSBnb2FsIG9mIEVNVVRSQU1QIGlzIHRvIGFsbG93IHNhZmUgdHJhbXBvbGlu ZXMgdG8gZXhlY3V0ZSB3aGVuCj4gc2VjdXJpdHkgc2V0dGluZ3MgZGlzYWxsb3cgdGhlaXIgZXhl Y3V0aW9uLiBNYWlubHksIGl0IHBlcm1pdHMgYXBwbGljYXRpb25zCj4gdGhhdCB1c2UgbGliZmZp IHRvIHJ1bi4gQSBsb3Qgb2YgYXBwbGljYXRpb25zIHVzZSBsaWJmZmkuCj4gCj4gVGhleSBjaG9z ZSB0aGUgZW11bGF0aW9uIG1ldGhvZCBzbyB0aGF0IG5vIGNoYW5nZXMgbmVlZCB0byBiZSBtYWRl Cj4gdG8gYXBwbGljYXRpb24gY29kZSB0byB1c2UgdGhlbS4gQnV0IHRoZSBFTVVUUkFNUCBpbXBs ZW1lbnRvcnMgbm90ZQo+IGluIHRoZWlyIGRlc2NyaXB0aW9uIHRoYXQgdGhlIHJlYWwgc29sdXRp b24gdG8gdGhlIHByb2JsZW0gaXMgYSBrZXJuZWwKPiBBUEkgdGhhdCBpcyBiYWNrZWQgYnkgYSBz YWZlIGNvZGUgZ2VuZXJhdG9yLgo+IAo+IHRyYW1wZCBpcyBhbiBhdHRlbXB0IHRvIGRlZmluZSBz dWNoIGFuIEFQSS4gVGhpcyBpcyBqdXN0IGEgc3RhcnRpbmcgcG9pbnQuCj4gSSByZWFsaXplIHRo YXQgd2UgbmVlZCB0byBoYXZlIGEgbG90IG9mIGRpc2N1c3Npb24gdG8gcmVmaW5lIHRoZSBhcHBy b2FjaC4KPiAKPiA+IEFzc3VtaW5nIHRyYW1wZmQgY3JlYXRpb24gaXMgc29tZWhvdyBhdXRoZW50 aWNhdGVkLCB0aGUgY29kZSBjb3VsZCBiZQo+ID4gcGxhY2VkIGluIGEgci14IHBhZ2UgKHdoaWNo IHRoZSBrZXJuZWwgY291bGQgcmVmdXNlIHRvIGFkZCB3cml0ZQo+ID4gcGVybWlzc2lvbiksIGlu IG9yZGVyIHRvIHByZXZlbnQgbW9kaWZpY2F0aW9uLiBJZiB0aGF0J3Mgc3VmZmljaWVudCwKPiA+ IGl0J3Mgbm90IG11Y2ggb2YgYSBsZWFwIHRvIGFsbG93IHVzZXJzcGFjZSB0byBnZW5lcmF0ZSB0 aGUgY29kZS4KPiAKPiBJSVVDLCB5b3UgYXJlIHN1Z2dlc3RpbmcgdGhhdCB0aGUgdXNlciBoYW5k cyB0aGUga2VybmVsIGEgY29kZSBmcmFnbWVudAo+IGFuZCByZXF1ZXN0cyBpdCB0byBiZSBwbGFj ZWQgaW4gYW4gci14IHBhZ2UsIGNvcnJlY3Q/IEhvd2V2ZXIsIHRoZQo+IGtlcm5lbCBjYW5ub3Qg dHJ1c3QgYW55IGNvZGUgZ2l2ZW4gdG8gaXQgYnkgdGhlIHVzZXIuIE5vciBjYW4gaXQgc2NhbiBh bnkKPiBwaWVjZSBvZiBjb2RlIGFuZCByZWxpYWJseSBkZWNpZGUgaWYgaXQgaXMgc2FmZSBvciBu b3QuCgpQZXIgdGhhdCBzYW1lIGxvZ2ljIHRoZSBrZXJuZWwgY2Fubm90IHRydXN0IHRyYW1wZmQg Y3JlYXRpb24gY2FsbHMgdG8gYmUKbGVnaXRpbWF0ZSBhcyB0aGUgYWR2ZXJzYXJ5IGNvdWxkIG1l c3Mgd2l0aCB0aGUgYXJndW1lbnRzLiBJdCBkb2Vzbid0Cm1hdHRlciBpZiB0aGUga2VybmVsJ3Mg Y29kZWdlbiBpcyB0cnVzdHdvcnRoeSBpZiBpdCdzIHBvdGVudGlhbGx5IGRyaXZlbgpieSBhbiBh ZHZlcnNhcnkuCgo+IFNvLCB0aGUgcHJvYmxlbSBvZiBleGVjdXRpbmcgZHluYW1pYyBjb2RlIHdo ZW4gc2VjdXJpdHkgc2V0dGluZ3MgYXJlCj4gcmVzdHJpY3RpdmUgY2Fubm90IGJlIHNvbHZlZCBp biB1c2VybGFuZC4gVGhlIG9ubHkgb3B0aW9uIEkgY2FuIHRoaW5rIG9mIGlzCj4gdG8gaGF2ZSB0 aGUga2VybmVsIHByb3ZpZGUgc3VwcG9ydCBmb3IgZHluYW1pYyBjb2RlLiBJdCBtdXN0IGhhdmUg b25lCj4gb3IgbW9yZSBzYWZlLCB0cnVzdGVkIGNvZGUgZ2VuZXJhdGlvbiBjb21wb25lbnRzIGFu ZCBhbiBBUEkgdG8gdXNlCj4gdGhlIGNvbXBvbmVudHMuCj4gCj4gTXkgZ29hbCBpcyB0byBpbnRy b2R1Y2UgYW4gQVBJIGFuZCBzdGFydCBvZmYgYnkgc3VwcG9ydGluZyBzaW1wbGUsIHJlZ3VsYXIK PiB0cmFtcG9saW5lcyB0aGF0IGFyZSB3aWRlbHkgdXNlZC4gVGhlbiwgZXZvbHZlIHRoZSBmZWF0 dXJlIG92ZXIgYSBwZXJpb2QKPiBvZiB0aW1lIHRvIGluY2x1ZGUgb3RoZXIgZm9ybXMgb2YgZHlu YW1pYyBjb2RlIHN1Y2ggYXMgSklUIGNvZGUuCgpJIHRoaW5rIHRoYXQgeW91J3JlIG1ha2luZyBh IGxlYXAgdG8gdGhpcyBhcHByb2FjaCB3aXRob3V0IHN1ZmZpY2llbnQKanVzdGlmaWNhdGlvbiB0 aGF0IGl0IGFjdHVhbGx5IHNvbHZlcyB0aGUgcHJvYmxlbSwgYW5kIEkgYmVsaWV2ZSB0aGF0CnRo ZXJlIHdpbGwgYmUgQUJJIGlzc3VlcyB3aXRoIHRoaXMgYXBwcm9hY2ggd2hpY2ggY2FuIGJlIHNp ZGVzdGVwcGVkIGJ5Cm90aGVyIHBvdGVudGlhbCBhcHByb2FjaGVzLgoKVGFraW5nIGEgc3RlcCBi YWNrLCBJIHRoaW5rIGl0J3MgbmVjZXNzYXJ5IHRvIGJldHRlciBkZXNjcmliZSB0aGUKcHJvYmxl bSBhbmQgY29uc3RyYWludHMgdGhhdCB5b3UgYmVsaWV2ZSBhcHBseSBiZWZvcmUgYXR0ZW1wdGlu ZyB0bwpqdXN0aWZ5IGFueSBwb3RlbnRpYWwgc29sdXRpb24uCgpbLi4uXQoKPiA+PiBUaGUga2Vy bmVsIGNyZWF0ZXMgdGhlIHRyYW1wb2xpbmUgbWFwcGluZyB3aXRob3V0IGFueSBwZXJtaXNzaW9u cy4gV2hlbgo+ID4+IHRoZSB0cmFtcG9saW5lIGlzIGV4ZWN1dGVkIGJ5IHVzZXIgY29kZSwgYSBw YWdlIGZhdWx0IGhhcHBlbnMgYW5kIHRoZQo+ID4+IGtlcm5lbCBnZXRzIGNvbnRyb2wuIFRoZSBr ZXJuZWwgcmVjb2duaXplcyB0aGF0IHRoaXMgaXMgYSB0cmFtcG9saW5lCj4gPj4gaW52b2NhdGlv bi4gSXQgc2V0cyB1cCB0aGUgdXNlciByZWdpc3RlcnMgYmFzZWQgb24gdGhlIHNwZWNpZmllZAo+ ID4+IHJlZ2lzdGVyIGNvbnRleHQsIGFuZC9vciBwdXNoZXMgdmFsdWVzIG9uIHRoZSB1c2VyIHN0 YWNrIGJhc2VkIG9uIHRoZQo+ID4+IHNwZWNpZmllZCBzdGFjayBjb250ZXh0LCBhbmQgc2V0cyB0 aGUgdXNlciBQQyB0byB0aGUgcmVxdWVzdGVkIHRhcmdldAo+ID4+IFBDLiBXaGVuIHRoZSBrZXJu ZWwgcmV0dXJucywgZXhlY3V0aW9uIGNvbnRpbnVlcyBhdCB0aGUgdGFyZ2V0IFBDLgo+ID4+IFNv LCB0aGUga2VybmVsIGRvZXMgdGhlIHdvcmsgb2YgdGhlIHRyYW1wb2xpbmUgb24gYmVoYWxmIG9m IHRoZQo+ID4+IGFwcGxpY2F0aW9uLgo+ID4+Cj4gPj4gSW4gdGhpcyBjYXNlLCB0aGUgYXR0YWNr IHN1cmZhY2UgaXMgdGhlIGNvbnRleHQgYnVmZmVyLiBBIGhhY2tlciBtYXkKPiA+PiBhdHRhY2sg YW4gYXBwbGljYXRpb24gd2l0aCBhIHZ1bG5lcmFiaWxpdHkgYW5kIG1heSBiZSBhYmxlIHRvIG1v ZGlmeSB0aGUKPiA+PiBjb250ZXh0IGJ1ZmZlci4gU28sIHdoZW4gdGhlIHJlZ2lzdGVyIG9yIHN0 YWNrIGNvbnRleHQgaXMgc2V0IGZvcgo+ID4+IGEgdHJhbXBvbGluZSwgdGhlIHZhbHVlcyBtYXkg aGF2ZSBiZWVuIHRhbXBlcmVkIHdpdGguIEZyb20gYW4gYXR0YWNrCj4gPj4gc3VyZmFjZSBwZXJz cGVjdGl2ZSwgdGhpcyBpcyBzaW1pbGFyIHRvIFRyYW1wb2xpbmUgRW11bGF0aW9uLiBCdXQKPiA+ PiB3aXRoIHRyYW1wZmQsIHVzZXIgY29kZSBjYW4gcmV0cmlldmUgYSB0cmFtcG9saW5lJ3MgY29u dGV4dCBmcm9tIHRoZQo+ID4+IGtlcm5lbCBhbmQgYWRkIGRlZmVuc2l2ZSBjaGVja3MgdG8gc2Vl IGlmIHRoZSBjb250ZXh0IGhhcyBiZWVuCj4gPj4gdGFtcGVyZWQgd2l0aC4KPiA+IENhbiB5b3Ug ZWxhYm9yYXRlIG9uIHRoaXM6IHdoYXQgc29ydCBvZiBjaGVja3Mgd291bGQgYmUgYXBwbGllZCwg YW5kCj4gPiBob3c/Cj4gCj4gU28sIGFuIGFwcGxpY2F0aW9uIHRoYXQgdXNlcyB0cmFtcGZkIHdv dWxkIGRvIHRoZSBmb2xsb3dpbmcgc3RlcHM6Cj4gCj4gMS4gQ3JlYXRlIGEgdHJhbXBvbGluZSBi eSBjYWxsaW5nIHRyYW1wZmRfY3JlYXRlKCkKPiAyLiBTZXQgdGhlIHJlZ2lzdGVyIGFuZC9vciBz dGFjayBjb250ZXh0cyBmb3IgdGhlIHRyYW1wb2xpbmUuCj4gMy4gbW1hcCgpIHRoZSB0cmFtcG9s aW5lIHRvIGdldCBhbiBhZGRyZXNzCj4gNC4gSW52b2tlIHRoZSB0cmFtcG9saW5lIHVzaW5nIHRo ZSBhZGRyZXNzCj4gCj4gTGV0IHVzIHNheSB0aGF0IHRoZSBhcHBsaWNhdGlvbiBoYXMgYSB2dWxu ZXJhYmlsaXR5IHN1Y2ggYXMgYnVmZmVyIG92ZXJmbG93Cj4gdGhhdCBhbGxvd3MgYSBoYWNrZXIg dG8gbW9kaWZ5IHRoZSBkYXRhIHRoYXQgaXMgdXNlZCB0byBkbyBzdGVwIDIuCj4gCj4gUG90ZW50 aWFsbHksIGEgaGFja2VyIGNvdWxkIG1vZGlmeSB0aGUgZm9sbG93aW5nIHRoaW5nczoKPiDCoMKg wqAgLSByZWdpc3RlciB2YWx1ZXMgc3BlY2lmaWVkIGluIHRoZSByZWdpc3RlciBjb250ZXh0Cj4g wqDCoMKgIC0gdmFsdWVzIHNwZWNpZmllZCBpbiB0aGUgc3RhY2sgY29udGV4dAo+IMKgwqDCoCAt IHRoZSB0YXJnZXQgUEMgc3BlY2lmaWVkIGluIHRoZSByZWdpc3RlciBjb250ZXh0Cj4gCj4gV2hl biB0aGUgdHJhbXBvbGluZSBpcyBpbnZva2VkIGluIHN0ZXAgNCwgdGhlIGtlcm5lbCB3aWxsIGdh aW4gY29udHJvbCwKPiBsb2FkIHRoZSByZWdpc3RlcnMsIHB1c2ggc3R1ZmYgb24gdGhlIHN0YWNr IGFuZCB0cmFuc2ZlciBjb250cm9sIHRvIHRoZSB0YXJnZXQKPiBQQy4gV2hhdGV2ZXIgdGhlIGhh Y2tlciBoYWQgbW9kaWZpZWQgaW4gc3RlcCAyIHdpbGwgdGFrZSBlZmZlY3QgaW4gc3RlcCA0Lgo+ IEhpcyB2YWx1ZXMgd2lsbCBnZXQgbG9hZGVkIGFuZCBoaXMgUEMgaXMgdGhlIG9uZSB0aGF0IHdp bGwgZ2V0IGNvbnRyb2wuCj4gCj4gQSBwYXJhbm9pZCBhcHBsaWNhdGlvbiBjb3VsZCBhZGQgYSBz dGVwIHRvIHRoaXMgc2VxdWVuY2UuIFNvLCB0aGUgc3RlcHMKPiB3b3VsZCBiZToKPiAKPiAxLiBD cmVhdGUgYSB0cmFtcG9saW5lIGJ5IGNhbGxpbmcgdHJhbXBmZF9jcmVhdGUoKQo+IDIuIFNldCB0 aGUgcmVnaXN0ZXIgYW5kL29yIHN0YWNrIGNvbnRleHRzIGZvciB0aGUgdHJhbXBvbGluZS4KPiAz LiBtbWFwKCkgdGhlIHRyYW1wb2xpbmUgdG8gZ2V0IGFuIGFkZHJlc3MKPiA0YS4gUmV0cmlldmUg dGhlIHJlZ2lzdGVyIGFuZCBzdGFjayBjb250ZXh0IGZvciB0aGUgdHJhbXBvbGluZSBmcm9tIHRo ZQo+IMKgwqDCoMKgwqAga2VybmVsIGFuZCBjaGVjayBpZiBhbnl0aGluZyBoYXMgYmVlbiBhbHRl cmVkLiBJZiB5ZXMsIGFib3J0Lgo+IDRiLiBJbnZva2UgdGhlIHRyYW1wb2xpbmUgdXNpbmcgdGhl IGFkZHJlc3MKCkFzIGFib3ZlLCB5b3UgY2FuIGFsc28gZG8gdGhpcyB3aGVuIHVzaW5nIG1wcm90 ZWN0IHRvZGF5LCB0cmFuc2l0aW9uaW5nCnRoZSBidWZmZXIgUldYIC0+IFItLSAtPiBSLVguIElm IHlvdSdyZSB3b3JyaWVkIGFib3V0IHN1YnNlcXVlbnQKbW9kaWZpY2F0aW9uIHZpYSBhbiBhbGlh cywgYSBzZWFsZWQgbWVtZmQgd291bGQgd29yayBhc3N1bWluZyB0aGF0IGNhbgpiZSBtYXBwZWQg Ui1YLgoKVGhpcyBhcHByb2FjaCBpcyBhcHBsaWNhYmxlIHRvIHRyYW1wZmQsIGJ1dCBpdCBpc24n dCBhIHNwZWNpZmljIGJlbmVmaXQKb2YgdHJhbXBmZC4KClsuLi5dIAoKPiA+PiAtIEluIHRoZSBm dXR1cmUsIGlmIHRoZSBrZXJuZWwgY2FuIGJlIGVuaGFuY2VkIHRvIHVzZSBhIHNhZmUgY29kZQo+ ID4+ICAgZ2VuZXJhdGlvbiBjb21wb25lbnQsIHRoYXQgY29kZSBjYW4gYmUgcGxhY2VkIGluIHRo ZSB0cmFtcG9saW5lIG1hcHBpbmcKPiA+PiAgIHBhZ2VzLiBUaGVuLCB0aGUgdHJhbXBvbGluZSBp bnZvY2F0aW9uIGRvZXMgbm90IGhhdmUgdG8gaW5jdXIgYSB0cmlwCj4gPj4gICBpbnRvIHRoZSBr ZXJuZWwuCj4gPj4KPiA+PiAtIEFsc28sIGlmIHRoZSBrZXJuZWwgY2FuIGJlIGVuaGFuY2VkIHRv IHVzZSBhIHNhZmUgY29kZSBnZW5lcmF0aW9uCj4gPj4gICBjb21wb25lbnQsIG90aGVyIGZvcm1z IG9mIGR5bmFtaWMgY29kZSBzdWNoIGFzIEpJVCBjb2RlIGNhbiBiZQo+ID4+ICAgYWRkcmVzc2Vk IGJ5IHRoZSB0cmFtcGZkIGZyYW1ld29yay4KPiA+IEkgZG9uJ3Qgc2VlIHdoeSBpdCdzIG5lY2Vz c2FyeSBmb3IgdGhlIGtlcm5lbCB0byBnZW5lcmF0ZSBjb2RlIGF0IGFsbC4KPiA+IElmIHRoZSB0 cmFtcGZkIGNyZWF0aW9uIHJlcXVlc3RzIGNhbiBiZSB0cnVzdGVkLCB3aGF0IHByZXZlbnRzIHRy dXN0aW5nCj4gPiBhIHNlYWxlZCBzZXQgb2YgaW5zdHJ1Y3Rpb25zIGdlbmVyYXRlZCBpbiB1c2Vy c3BhY2U/Cj4gCj4gTGV0IHVzIGNvbnNpZGVyIGEgc3lzdGVtIGluIHdoaWNoOgo+IMKgwqDCoCAt IGEgcHJvY2VzcyBpcyBub3QgcGVybWl0dGVkIHRvIGhhdmUgcGFnZXMgd2l0aCBib3RoIHdyaXRl IGFuZCBleGVjdXRlCj4gwqDCoMKgIC0gYSBwcm9jZXNzIGlzIG5vdCBwZXJtaXR0ZWQgdG8gbWFw IGFueSBmaWxlIGFzIGV4ZWN1dGFibGUgdW5sZXNzIGl0Cj4gwqDCoMKgwqDCoCBpcyBwcm9wZXJs eSBzaWduZWQuIEluIG90aGVyIHdvcmRzLCBjcnlwdG9ncmFwaGljYWxseSB2ZXJpZmllZC4KPiAK PiBUaGVuLCB0aGUgcHJvY2VzcyBjYW5ub3QgZXhlY3V0ZSBhbnkgY29kZSB0aGF0IGlzIHJ1bnRp bWUgZ2VuZXJhdGVkLgo+IFRoYXQgaW5jbHVkZXMgdHJhbXBvbGluZXMuIE9ubHkgdHJhbXBvbGlu ZSBjb2RlIHRoYXQgaXMgcGFydCBvZiBwcm9ncmFtCj4gdGV4dCBhdCBidWlsZCB0aW1lIHdvdWxk IGJlIHBlcm1pdHRlZCB0byBleGVjdXRlLgo+IAo+IEluIHRoaXMgc2NlbmFyaW8sIHRyYW1wZmQg cmVxdWVzdHMgYXJlIGNvbWluZyBmcm9tIHNpZ25lZCBjb2RlLiBTbywgdGhleQo+IGFyZSB0cnVz dGVkIGJ5IHRoZSBrZXJuZWwuIEJ1dCB0cmFtcG9saW5lIGNvZGUgY291bGQgYmUgZHluYW1pY2Fs bHkgZ2VuZXJhdGVkLgo+IFRoZSBrZXJuZWwgd2lsbCBub3QgdHJ1c3QgaXQuCgpJIHRoaW5rIHRo aXMgYSB2ZXJ5IGhhbmQtd2F2eSBhcmd1bWVudCwgYXMgaXQgc3VnZ2VzdHMgdGhhdCBnZW5lcmF0 ZWQKY29kZSBpcyBub3QgdHJ1c3RlZCwgYnV0IHdoYXQgaXMgZWZmZWN0aXZlbHkgYSBnZW5lcmF0 ZWQgYnl0ZWNvZGUgaXMuCgpJZiBjZXJ0YWluIGNvZGVnZW4gY2FuIGJlIHRydXN0ZWQsIHRoZW4g d2UgY2FuIGFkZCBtZWNoYW5pc21zIHRvIHBlcm1pdAp0aGUgcmVzdWx0cyBvZiB0aGlzIHRvIGJl IG1hcHBlZCByLXguIElmIHRoYXQgaXMgbm90IHBvc3NpYmxlLCB0aGVuIHRoZQpzYW1lIGFyZ3Vt ZW50IHNheXMgdGhhdCB0cmFtcGZkIHJlcXVlc3RzIGNhbm5vdCBiZSB0cnVzdGVkLgoKVGhhbmtz LApNYXJrLgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K bGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZy YWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGlu dXgtYXJtLWtlcm5lbAo=