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=-7.0 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_SANE_1 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 81218C433E0 for ; Mon, 3 Aug 2020 16:59:27 +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 4367620A8B for ; Mon, 3 Aug 2020 16:59:27 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="MHtomCgE"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=linux.microsoft.com header.i=@linux.microsoft.com header.b="AEHkwZqw" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 4367620A8B Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linux.microsoft.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:Date:Message-ID:From: References:To:Subject:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=cyAozqeIVCSlFblawXh1e7yTbLsxjQdBDABfpUHH/tE=; b=MHtomCgESwHRMdlb4NzBsxeUT 2RoH3l9+WcZUdUyERbnKMoY3jWt6dbcWPSXWcHIpE9OjsATIpO8U9ameqyQ96MCoNONSw7x5uq1jF 0ASvl5HVaebFW3b7MPohKh56Q8lOWESEKDbGLIOD0PigayFRMI5X4CZlqqmynqcN9K0ARjgb68pUc I87QgORzD9eGYKLT5ran9+XlOnyKnSjCp9yGUIfQ5VKtEj0ITnoTBR0x3+e5UfoM0dEJ3Z4qSMB9v MJzJMjyFtf1w8Xpk5p71Y6XNmImZ74+XbgSzwCY4ITR/whx0NTQleaWk3ZFeNgeNdSzV33CjRq708 zUnWRhtgQ==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1k2dmm-0003nc-Go; Mon, 03 Aug 2020 16:58:04 +0000 Received: from linux.microsoft.com ([13.77.154.182]) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1k2dmj-0003mm-8Y for linux-arm-kernel@lists.infradead.org; Mon, 03 Aug 2020 16:58:02 +0000 Received: from [192.168.254.32] (unknown [47.187.206.220]) by linux.microsoft.com (Postfix) with ESMTPSA id B467120B4908; Mon, 3 Aug 2020 09:57:58 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.11.0 linux.microsoft.com B467120B4908 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.microsoft.com; s=default; t=1596473879; bh=/Go4zDYeTSuk4ndgu/MFpJIHKPIA61513wAH+zPQLoI=; h=Subject:To:Cc:References:From:Date:In-Reply-To:From; b=AEHkwZqwS8l770QsNs1X/AW1JIln6ecQ6zphLAP5to5/s35qA3/J5LEbv6frVRUUF MHxTURiYIgHfk2JxoDpbifS5VeL98OH4Nf74SvuznSa1gdrWSWukAFBDwb8hz1JjEQ hZaM11haDW8Rx5erWwK/c0VofTMWwP0O5L7cEKXQ= Subject: Re: [PATCH v1 0/4] [RFC] Implement Trampoline File Descriptor To: Mark Rutland References: <20200728131050.24443-1-madvenka@linux.microsoft.com> <20200731180955.GC67415@C02TD0UTHF1T.local> From: "Madhavan T. Venkataraman" Message-ID: <6236adf7-4bed-534e-0956-fddab4fd96b6@linux.microsoft.com> Date: Mon, 3 Aug 2020 11:57:57 -0500 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0 MIME-Version: 1.0 In-Reply-To: <20200731180955.GC67415@C02TD0UTHF1T.local> Content-Language: en-US X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200803_125801_479170_B7FD268B X-CRM114-Status: GOOD ( 56.69 ) 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 UmVzcG9uc2VzIGlubGluZS4uCgpPbiA3LzMxLzIwIDE6MDkgUE0sIE1hcmsgUnV0bGFuZCB3cm90 ZToKPiBIaSwKPgo+IE9uIFR1ZSwgSnVsIDI4LCAyMDIwIGF0IDA4OjEwOjQ2QU0gLTA1MDAsIG1h ZHZlbmthQGxpbnV4Lm1pY3Jvc29mdC5jb20gd3JvdGU6Cj4+IEZyb206ICJNYWRoYXZhbiBULiBW ZW5rYXRhcmFtYW4iIDxtYWR2ZW5rYUBsaW51eC5taWNyb3NvZnQuY29tPgo+PiBUcmFtcG9saW5l IGNvZGUgaXMgcGxhY2VkIGVpdGhlciBpbiBhIGRhdGEgcGFnZSBvciBpbiBhIHN0YWNrIHBhZ2Uu IEluCj4+IG9yZGVyIHRvIGV4ZWN1dGUgYSB0cmFtcG9saW5lLCB0aGUgcGFnZSBpdCByZXNpZGVz IGluIG5lZWRzIHRvIGJlIG1hcHBlZAo+PiB3aXRoIGV4ZWN1dGUgcGVybWlzc2lvbnMuIFdyaXRh YmxlIHBhZ2VzIHdpdGggZXhlY3V0ZSBwZXJtaXNzaW9ucyBwcm92aWRlCj4+IGFuIGF0dGFjayBz dXJmYWNlIGZvciBoYWNrZXJzLiBBdHRhY2tlcnMgY2FuIHVzZSB0aGlzIHRvIGluamVjdCBtYWxp Y2lvdXMKPj4gY29kZSwgbW9kaWZ5IGV4aXN0aW5nIGNvZGUgb3IgZG8gb3RoZXIgaGFybS4KPiBG b3IgdGhlIHB1cnBvc2Ugb2YgYmVsb3csIElJVUMgdGhpcyBhc3N1bWVzIHRoZSBhZHZlcnNhcnkg aGFzIGFuCj4gYXJiaXRyYXJ5IHdyaXRlLgo+Cj4+IFRvIG1pdGlnYXRlIHRoaXMsIExTTXMgc3Vj aCBhcyBTRUxpbnV4IG1heSBub3QgYWxsb3cgcGFnZXMgdG8gaGF2ZSBib3RoCj4+IHdyaXRlIGFu ZCBleGVjdXRlIHBlcm1pc3Npb25zLiBUaGlzIHByZXZlbnRzIHRyYW1wb2xpbmVzIGZyb20gZXhl Y3V0aW5nCj4+IGFuZCBibG9ja3MgYXBwbGljYXRpb25zIHRoYXQgdXNlIHRyYW1wb2xpbmVzLiBU byBhbGxvdyBnZW51aW5lIGFwcGxpY2F0aW9ucwo+PiB0byBydW4sIGV4Y2VwdGlvbnMgaGF2ZSB0 byBiZSBtYWRlIGZvciB0aGVtIChieSBzZXR0aW5nIGV4ZWNtZW0sIGV0YykuCj4+IEluIHRoaXMg Y2FzZSwgdGhlIGF0dGFjayBzdXJmYWNlIGlzIGp1c3QgdGhlIHBhZ2VzIG9mIHN1Y2ggYXBwbGlj YXRpb25zLgo+Pgo+PiBBbiBhcHBsaWNhdGlvbiB0aGF0IGlzIG5vdCBhbGxvd2VkIHRvIGhhdmUg d3JpdGFibGUgZXhlY3V0YWJsZSBwYWdlcwo+PiBtYXkgdHJ5IHRvIGxvYWQgdHJhbXBvbGluZSBj b2RlIGludG8gYSBmaWxlIGFuZCBtYXAgdGhlIGZpbGUgd2l0aCBleGVjdXRlCj4+IHBlcm1pc3Np b25zLiBJbiB0aGlzIGNhc2UsIHRoZSBhdHRhY2sgc3VyZmFjZSBpcyBqdXN0IHRoZSBidWZmZXIg dGhhdAo+PiBjb250YWlucyB0cmFtcG9saW5lIGNvZGUuIEhvd2V2ZXIsIGEgc3VjY2Vzc2Z1bCBl eHBsb2l0IG1heSBwcm92aWRlIHRoZQo+PiBoYWNrZXIgd2l0aCBtZWFucyB0byBsb2FkIGhpcyBv d24gY29kZSBpbiBhIGZpbGUsIG1hcCBpdCBhbmQgZXhlY3V0ZSBpdC4KPiBJdCdzIG5vdCBjbGVh ciB0byBtZSB3aGF0IHBvd2VyIHRoZSBhZHZlcnNhcnkgaXMgYXNzdW1lZCB0byBoYXZlIGhlcmUs Cj4gYW5kIGNvbnNlcXVlbnRseSBpdCdzIG5vdCBjbGVhciB0byBtZSBob3cgdGhlIHByb3Bvc2Fs IG1pdGlnYXRlcyB0aGlzLgo+Cj4gRm9yIGV4YW1wbGUsIGlmIHRoZSBhdHRhY2sgY2FuIGNvbnRy b2wgdGhlIGFyZ3VtZW50cyB0byBzeXNjYWxscywgYW5kCj4gaGFzIGFuIGFyYml0cmFyeSB3cml0 ZSBhcyBhYm92ZSwgd2hhdCBwcmV2ZW50cyB0aGVtIGZyb20gY3JlYXRpbmcgYQo+IHRyYW1wZmQg b2YgdGhlaXIgb3duPwoKVGhhdCBpcyB0aGUgcG9pbnQuIElmIGEgcHJvY2VzcyBpcyBhbGxvd2Vk IHRvIGhhdmUgcGFnZXMgdGhhdCBhcmUgYm90aAp3cml0YWJsZSBhbmQgZXhlY3V0YWJsZSwgYSBo YWNrZXIgY2FuIGV4cGxvaXQgc29tZSB2dWxuZXJhYmlsaXR5IHN1Y2gKYXMgYnVmZmVyIG92ZXJm bG93IHRvIHdyaXRlIGhpcyBvd24gY29kZSBpbnRvIGEgcGFnZSBhbmQgc29tZWhvdwpjb250cml2 ZSB0byBleGVjdXRlIHRoYXQuCgpTbywgdGhlIGNvbnRleHQgaXMgLSBpZiBzZWN1cml0eSBzZXR0 aW5ncyBpbiBhIHN5c3RlbSBkaXNhbGxvdyBhIHBhZ2UgdG8gaGF2ZQpib3RoIHdyaXRlIGFuZCBl eGVjdXRlIHBlcm1pc3Npb25zLCBob3cgZG8geW91IGFsbG93IHRoZSBleGVjdXRpb24gb2YKZ2Vu dWluZSB0cmFtcG9saW5lcyB0aGF0IGFyZSBydW50aW1lIGdlbmVyYXRlZCBhbmQgcGxhY2VkIGlu IGEgZGF0YQpwYWdlIG9yIGEgc3RhY2sgcGFnZT8KCnRyYW1wZmQgdHJpZXMgdG8gYWRkcmVzcyB0 aGF0LiBTbywgdHJhbXBmZCBpcyBub3QgYSBtZWFzdXJlIHRoYXQgaW5jcmVhc2VzCnRoZSBzZWN1 cml0eSBvZiBhIHN5c3RlbSBvciBtaXRpZ2F0ZXMgYSBzZWN1cml0eSBwcm9ibGVtLiBJdCBpcyBh IGZyYW1ld29yawp0byBhbGxvdyBzYWZlIGZvcm1zIG9mIGR5bmFtaWMgY29kZSB0byBleGVjdXRl IHdoZW4gc2VjdXJpdHkgc2V0dGluZ3MKd2lsbCBibG9jayB0aGVtIG90aGVyd2lzZS4KCj4KPiBb Li4uXQo+Cj4+IEdDQyBoYXMgdHJhZGl0aW9uYWxseSB1c2VkIHRyYW1wb2xpbmVzIGZvciBpbXBs ZW1lbnRpbmcgbmVzdGVkCj4+IGZ1bmN0aW9ucy4gVGhlIHRyYW1wb2xpbmUgaXMgcGxhY2VkIG9u IHRoZSB1c2VyIHN0YWNrLiBTbywgdGhlIHN0YWNrCj4+IG5lZWRzIHRvIGJlIGV4ZWN1dGFibGUu Cj4gSUlVQyBnZW5lcmFsbHkgbmVzdGVkIGZ1bmN0aW9ucyBhcmUgYXZvaWRlZCB0aGVzZSBkYXlz LCBzcGVjaWZpY2FsbHkgdG8KPiBwcmV2ZW50IHRoZSBjcmVhdGlvbiBvZiBnYWRnZXRzIG9uIHRo ZSBzdGFjay4gU28gSSBkb24ndCB0aGluayB0aG9zZSBhcmUKPiByZWxldmFudCBhcyBhIGNhc2Vk IHRvIGNhcmUgYWJvdXQuIEFwcGxpY2F0aW9ucyB1c2luZyB0aGVtIHNob3VsZCBtb3ZlCj4gdG8g bm90IHVzaW5nIHRoZW0sIGFuZCB3b3VsZCBiZSBtb3JlIHNlY3VyZSBnZW5lcmFsbHkgZm9yIGRv aW5nIHNvLgoKQ291bGQgbm90IGFncmVlIHdpdGggeW91IG1vcmUuCj4KPiBbLi4uXQo+Cj4+IFRy YW1wb2xpbmUgRmlsZSBEZXNjcmlwdG9yICh0cmFtcGZkKQo+PiAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQo+Pgo+PiBJIGFtIHByb3Bvc2luZyBhIGtlcm5lbCBBUEkgdXNpbmcgYW5vbnltb3Vz IGZpbGUgZGVzY3JpcHRvcnMgdGhhdAo+PiBjYW4gYmUgdXNlZCB0byBjcmVhdGUgYW5kIGV4ZWN1 dGUgdHJhbXBvbGluZXMgd2l0aCB0aGUgaGVscCBvZiB0aGUKPj4ga2VybmVsLiBJbiB0aGlzIHNv bHV0aW9uIGFsc28sIHRoZSBrZXJuZWwgZG9lcyB0aGUgd29yayBvZiB0aGUgdHJhbXBvbGluZS4K PiBXaGF0J3MgdGhlIHJhdGlvbmFsZSBmb3IgdGhlIGtlcm5lbCBlbXVsYXRpbmcgdGhlIHRyYW1w b2xpbmUgaGVyZT8KPgo+IEluIHRoZXIgY2FzZSBvZiBFTVVUUkFNUCB0aGlzIHdhcyBuZWNlc3Nh cnkgdG8gd29yayB3aXRoIGV4aXN0aW5nCj4gYXBwbGljYXRpb24gYmluYXJpZXMgYW5kIGtlcm5l bCBBQklzIHdoaWNoIHBsYWNlZCBpbnN0cnVjdGlvbnMgb250byB0aGUKPiBzdGFjaywgYW5kIHRo ZSBzdGFjayBuZWVkZWQgdG8gcmVtYWluIFJXIGZvciBvdGhlciByZWFzb25zLiBUaGF0Cj4gcmVz dHJpY3Rpb24gZG9lc24ndCBhcHBseSBoZXJlLgoKSW4gYWRkaXRpb24gdG8gdGhlIHN0YWNrLCBF TVVUUkFNUCBhbHNvIGFsbG93cyB0aGUgZW11bGF0aW9uCm9mIHRoZSBzYW1lIHdlbGwta25vd24g dHJhbXBvbGluZXMgcGxhY2VkIGluIGEgbm9uLXN0YWNrIGRhdGEgcGFnZS4KRm9yIGluc3RhbmNl LCBsaWJmZmkgY2xvc3VyZXMgZW1iZWQgYSB0cmFtcG9saW5lIGluIGEgY2xvc3VyZSBzdHJ1Y3R1 cmUuClRoYXQgZ2V0cyBleGVjdXRlZCB3aGVuIHRoZSBjYWxsZXIgb2YgbGliZmZpIGludm9rZXMg aXQuCgpUaGUgZ29hbCBvZiBFTVVUUkFNUCBpcyB0byBhbGxvdyBzYWZlIHRyYW1wb2xpbmVzIHRv IGV4ZWN1dGUgd2hlbgpzZWN1cml0eSBzZXR0aW5ncyBkaXNhbGxvdyB0aGVpciBleGVjdXRpb24u IE1haW5seSwgaXQgcGVybWl0cyBhcHBsaWNhdGlvbnMKdGhhdCB1c2UgbGliZmZpIHRvIHJ1bi4g QSBsb3Qgb2YgYXBwbGljYXRpb25zIHVzZSBsaWJmZmkuCgpUaGV5IGNob3NlIHRoZSBlbXVsYXRp b24gbWV0aG9kIHNvIHRoYXQgbm8gY2hhbmdlcyBuZWVkIHRvIGJlIG1hZGUKdG8gYXBwbGljYXRp b24gY29kZSB0byB1c2UgdGhlbS4gQnV0IHRoZSBFTVVUUkFNUCBpbXBsZW1lbnRvcnMgbm90ZQpp biB0aGVpciBkZXNjcmlwdGlvbiB0aGF0IHRoZSByZWFsIHNvbHV0aW9uIHRvIHRoZSBwcm9ibGVt IGlzIGEga2VybmVsCkFQSSB0aGF0IGlzIGJhY2tlZCBieSBhIHNhZmUgY29kZSBnZW5lcmF0b3Iu Cgp0cmFtcGQgaXMgYW4gYXR0ZW1wdCB0byBkZWZpbmUgc3VjaCBhbiBBUEkuIFRoaXMgaXMganVz dCBhIHN0YXJ0aW5nIHBvaW50LgpJIHJlYWxpemUgdGhhdCB3ZSBuZWVkIHRvIGhhdmUgYSBsb3Qg b2YgZGlzY3Vzc2lvbiB0byByZWZpbmUgdGhlIGFwcHJvYWNoLgoKPiBBc3N1bWluZyB0cmFtcGZk IGNyZWF0aW9uIGlzIHNvbWVob3cgYXV0aGVudGljYXRlZCwgdGhlIGNvZGUgY291bGQgYmUKPiBw bGFjZWQgaW4gYSByLXggcGFnZSAod2hpY2ggdGhlIGtlcm5lbCBjb3VsZCByZWZ1c2UgdG8gYWRk IHdyaXRlCj4gcGVybWlzc2lvbiksIGluIG9yZGVyIHRvIHByZXZlbnQgbW9kaWZpY2F0aW9uLiBJ ZiB0aGF0J3Mgc3VmZmljaWVudCwKPiBpdCdzIG5vdCBtdWNoIG9mIGEgbGVhcCB0byBhbGxvdyB1 c2Vyc3BhY2UgdG8gZ2VuZXJhdGUgdGhlIGNvZGUuCgpJSVVDLCB5b3UgYXJlIHN1Z2dlc3Rpbmcg dGhhdCB0aGUgdXNlciBoYW5kcyB0aGUga2VybmVsIGEgY29kZSBmcmFnbWVudAphbmQgcmVxdWVz dHMgaXQgdG8gYmUgcGxhY2VkIGluIGFuIHIteCBwYWdlLCBjb3JyZWN0PyBIb3dldmVyLCB0aGUK a2VybmVsIGNhbm5vdCB0cnVzdCBhbnkgY29kZSBnaXZlbiB0byBpdCBieSB0aGUgdXNlci4gTm9y IGNhbiBpdCBzY2FuIGFueQpwaWVjZSBvZiBjb2RlIGFuZCByZWxpYWJseSBkZWNpZGUgaWYgaXQg aXMgc2FmZSBvciBub3QuCgpTbywgdGhlIHByb2JsZW0gb2YgZXhlY3V0aW5nIGR5bmFtaWMgY29k ZSB3aGVuIHNlY3VyaXR5IHNldHRpbmdzIGFyZQpyZXN0cmljdGl2ZSBjYW5ub3QgYmUgc29sdmVk IGluIHVzZXJsYW5kLiBUaGUgb25seSBvcHRpb24gSSBjYW4gdGhpbmsgb2YgaXMKdG8gaGF2ZSB0 aGUga2VybmVsIHByb3ZpZGUgc3VwcG9ydCBmb3IgZHluYW1pYyBjb2RlLiBJdCBtdXN0IGhhdmUg b25lCm9yIG1vcmUgc2FmZSwgdHJ1c3RlZCBjb2RlIGdlbmVyYXRpb24gY29tcG9uZW50cyBhbmQg YW4gQVBJIHRvIHVzZQp0aGUgY29tcG9uZW50cy4KCk15IGdvYWwgaXMgdG8gaW50cm9kdWNlIGFu IEFQSSBhbmQgc3RhcnQgb2ZmIGJ5IHN1cHBvcnRpbmcgc2ltcGxlLCByZWd1bGFyCnRyYW1wb2xp bmVzIHRoYXQgYXJlIHdpZGVseSB1c2VkLiBUaGVuLCBldm9sdmUgdGhlIGZlYXR1cmUgb3ZlciBh IHBlcmlvZApvZiB0aW1lIHRvIGluY2x1ZGUgb3RoZXIgZm9ybXMgb2YgZHluYW1pYyBjb2RlIHN1 Y2ggYXMgSklUIGNvZGUuCgo+PiBUaGUga2VybmVsIGNyZWF0ZXMgdGhlIHRyYW1wb2xpbmUgbWFw cGluZyB3aXRob3V0IGFueSBwZXJtaXNzaW9ucy4gV2hlbgo+PiB0aGUgdHJhbXBvbGluZSBpcyBl eGVjdXRlZCBieSB1c2VyIGNvZGUsIGEgcGFnZSBmYXVsdCBoYXBwZW5zIGFuZCB0aGUKPj4ga2Vy bmVsIGdldHMgY29udHJvbC4gVGhlIGtlcm5lbCByZWNvZ25pemVzIHRoYXQgdGhpcyBpcyBhIHRy YW1wb2xpbmUKPj4gaW52b2NhdGlvbi4gSXQgc2V0cyB1cCB0aGUgdXNlciByZWdpc3RlcnMgYmFz ZWQgb24gdGhlIHNwZWNpZmllZAo+PiByZWdpc3RlciBjb250ZXh0LCBhbmQvb3IgcHVzaGVzIHZh bHVlcyBvbiB0aGUgdXNlciBzdGFjayBiYXNlZCBvbiB0aGUKPj4gc3BlY2lmaWVkIHN0YWNrIGNv bnRleHQsIGFuZCBzZXRzIHRoZSB1c2VyIFBDIHRvIHRoZSByZXF1ZXN0ZWQgdGFyZ2V0Cj4+IFBD LiBXaGVuIHRoZSBrZXJuZWwgcmV0dXJucywgZXhlY3V0aW9uIGNvbnRpbnVlcyBhdCB0aGUgdGFy Z2V0IFBDLgo+PiBTbywgdGhlIGtlcm5lbCBkb2VzIHRoZSB3b3JrIG9mIHRoZSB0cmFtcG9saW5l IG9uIGJlaGFsZiBvZiB0aGUKPj4gYXBwbGljYXRpb24uCj4+Cj4+IEluIHRoaXMgY2FzZSwgdGhl IGF0dGFjayBzdXJmYWNlIGlzIHRoZSBjb250ZXh0IGJ1ZmZlci4gQSBoYWNrZXIgbWF5Cj4+IGF0 dGFjayBhbiBhcHBsaWNhdGlvbiB3aXRoIGEgdnVsbmVyYWJpbGl0eSBhbmQgbWF5IGJlIGFibGUg dG8gbW9kaWZ5IHRoZQo+PiBjb250ZXh0IGJ1ZmZlci4gU28sIHdoZW4gdGhlIHJlZ2lzdGVyIG9y IHN0YWNrIGNvbnRleHQgaXMgc2V0IGZvcgo+PiBhIHRyYW1wb2xpbmUsIHRoZSB2YWx1ZXMgbWF5 IGhhdmUgYmVlbiB0YW1wZXJlZCB3aXRoLiBGcm9tIGFuIGF0dGFjawo+PiBzdXJmYWNlIHBlcnNw ZWN0aXZlLCB0aGlzIGlzIHNpbWlsYXIgdG8gVHJhbXBvbGluZSBFbXVsYXRpb24uIEJ1dAo+PiB3 aXRoIHRyYW1wZmQsIHVzZXIgY29kZSBjYW4gcmV0cmlldmUgYSB0cmFtcG9saW5lJ3MgY29udGV4 dCBmcm9tIHRoZQo+PiBrZXJuZWwgYW5kIGFkZCBkZWZlbnNpdmUgY2hlY2tzIHRvIHNlZSBpZiB0 aGUgY29udGV4dCBoYXMgYmVlbgo+PiB0YW1wZXJlZCB3aXRoLgo+IENhbiB5b3UgZWxhYm9yYXRl IG9uIHRoaXM6IHdoYXQgc29ydCBvZiBjaGVja3Mgd291bGQgYmUgYXBwbGllZCwgYW5kCj4gaG93 PwoKU28sIGFuIGFwcGxpY2F0aW9uIHRoYXQgdXNlcyB0cmFtcGZkIHdvdWxkIGRvIHRoZSBmb2xs b3dpbmcgc3RlcHM6CgoxLiBDcmVhdGUgYSB0cmFtcG9saW5lIGJ5IGNhbGxpbmcgdHJhbXBmZF9j cmVhdGUoKQoyLiBTZXQgdGhlIHJlZ2lzdGVyIGFuZC9vciBzdGFjayBjb250ZXh0cyBmb3IgdGhl IHRyYW1wb2xpbmUuCjMuIG1tYXAoKSB0aGUgdHJhbXBvbGluZSB0byBnZXQgYW4gYWRkcmVzcwo0 LiBJbnZva2UgdGhlIHRyYW1wb2xpbmUgdXNpbmcgdGhlIGFkZHJlc3MKCkxldCB1cyBzYXkgdGhh dCB0aGUgYXBwbGljYXRpb24gaGFzIGEgdnVsbmVyYWJpbGl0eSBzdWNoIGFzIGJ1ZmZlciBvdmVy Zmxvdwp0aGF0IGFsbG93cyBhIGhhY2tlciB0byBtb2RpZnkgdGhlIGRhdGEgdGhhdCBpcyB1c2Vk IHRvIGRvIHN0ZXAgMi4KClBvdGVudGlhbGx5LCBhIGhhY2tlciBjb3VsZCBtb2RpZnkgdGhlIGZv bGxvd2luZyB0aGluZ3M6CsKgwqDCoCAtIHJlZ2lzdGVyIHZhbHVlcyBzcGVjaWZpZWQgaW4gdGhl IHJlZ2lzdGVyIGNvbnRleHQKwqDCoMKgIC0gdmFsdWVzIHNwZWNpZmllZCBpbiB0aGUgc3RhY2sg Y29udGV4dArCoMKgwqAgLSB0aGUgdGFyZ2V0IFBDIHNwZWNpZmllZCBpbiB0aGUgcmVnaXN0ZXIg Y29udGV4dAoKV2hlbiB0aGUgdHJhbXBvbGluZSBpcyBpbnZva2VkIGluIHN0ZXAgNCwgdGhlIGtl cm5lbCB3aWxsIGdhaW4gY29udHJvbCwKbG9hZCB0aGUgcmVnaXN0ZXJzLCBwdXNoIHN0dWZmIG9u IHRoZSBzdGFjayBhbmQgdHJhbnNmZXIgY29udHJvbCB0byB0aGUgdGFyZ2V0ClBDLiBXaGF0ZXZl ciB0aGUgaGFja2VyIGhhZCBtb2RpZmllZCBpbiBzdGVwIDIgd2lsbCB0YWtlIGVmZmVjdCBpbiBz dGVwIDQuCkhpcyB2YWx1ZXMgd2lsbCBnZXQgbG9hZGVkIGFuZCBoaXMgUEMgaXMgdGhlIG9uZSB0 aGF0IHdpbGwgZ2V0IGNvbnRyb2wuCgpBIHBhcmFub2lkIGFwcGxpY2F0aW9uIGNvdWxkIGFkZCBh IHN0ZXAgdG8gdGhpcyBzZXF1ZW5jZS4gU28sIHRoZSBzdGVwcwp3b3VsZCBiZToKCjEuIENyZWF0 ZSBhIHRyYW1wb2xpbmUgYnkgY2FsbGluZyB0cmFtcGZkX2NyZWF0ZSgpCjIuIFNldCB0aGUgcmVn aXN0ZXIgYW5kL29yIHN0YWNrIGNvbnRleHRzIGZvciB0aGUgdHJhbXBvbGluZS4KMy4gbW1hcCgp IHRoZSB0cmFtcG9saW5lIHRvIGdldCBhbiBhZGRyZXNzCjRhLiBSZXRyaWV2ZSB0aGUgcmVnaXN0 ZXIgYW5kIHN0YWNrIGNvbnRleHQgZm9yIHRoZSB0cmFtcG9saW5lIGZyb20gdGhlCsKgwqDCoMKg wqAga2VybmVsIGFuZCBjaGVjayBpZiBhbnl0aGluZyBoYXMgYmVlbiBhbHRlcmVkLiBJZiB5ZXMs IGFib3J0Lgo0Yi4gSW52b2tlIHRoZSB0cmFtcG9saW5lIHVzaW5nIHRoZSBhZGRyZXNzCgpUaGUg Y2hlY2sgdGhhdCBJIG1lbnRpb25lZCB3aWxsIGJlIGluIHN0ZXAgNGEuIE5vdywgdGhlIGhhY2tl ciBoYXMgdG8KaGFjayBib3RoIHN0ZXAgMiBhbmQgc3RlcCA0YSB0byBsZXQgaGlzIHN0dWZmIHRh a2UgZWZmZWN0LiBUaGF0IGlzIGZhcgpsZXNzIGxpa2VseSB0byBzdWNjZWVkIGJlY2F1c2UgdGhl cmUgbmVlZHMgdG8gZXhpc3QgYSB2dWxuZXJhYmlsaXR5IGluCmJvdGggcGxhY2VzLgoKPiBXaHkg aXMgdGhpcyBub3QgcG9zc2libGUgaW4gYSByLXggdXNlciBwYWdlPwoKVGhpcyBpcyBhbnN3ZXJl ZCBhYm92ZS4KPgo+IFsuLi5dCj4KPj4gLSB0cmFtcGZkIHByb3ZpZGVzIGEgYmFzaWMgZnJhbWV3 b3JrLiBJbiB0aGUgZnV0dXJlLCBuZXcgdHJhbXBvbGluZSB0eXBlcwo+PiAgIGNhbiBiZSBpbXBs ZW1lbnRlZCwgbmV3IGNvbnRleHRzIGNhbiBiZSBkZWZpbmVkLCBhbmQgYWRkaXRpb25hbCBydWxl cwo+PiAgIGNhbiBiZSBpbXBsZW1lbnRlZCBmb3Igc2VjdXJpdHkgcHVycG9zZXMuCj4gPkZyb20g YSBrZXJuZWwgZGV2ZWxvcGVyIHBlcnNwZWN0aXZlLCB0aGlzIHJlYWRzIGFzICJ0aGlzIEFCSSB3 aWxsIGJlY29tZQo+IG1vcmUgY29tcGxleCIsIHdoaWNoIEkgdGhpbmsgaXMgd29ycmlzb21lLgoK SSBoZWFyIHlvdS4gTXkgZ29hbCBmcm9tIHRoZSBiZWdpbm5pbmcgaXMgdG8gbm90IGhhdmUgdGhl IGtlcm5lbCBkZWFsCndpdGggQUJJIGlzc3Vlcy4gQUJJIGhhbmRsaW5nIGlzIGJlc3QgbGVmdCB0 byB1c2VybGFuZCAoZXhjZXB0IGluIGNhc2VzCmxpa2Ugc2lnbmFsIGhhbmRsZXJzIHdoZXJlIHRo ZSBrZXJuZWwgZG9lcyBoYXZlIHRvIGRlYWwgd2l0aCBpdCkuCgpJbiB0aGUgbGliZmZpIGNoYW5n ZXMsIHRoaXMgaXMgY2VydGFpbmx5IHRydWUuIFRoZSBrZXJuZWwgb25seSBoZWxwcyB3aXRoCnRo ZSB0cmFtcG9saW5lIHRoYXQgcGFzc2VzIGNvbnRyb2wgdG8gdGhlIEFCSSBoYW5kbGVyLiBUaGUg QUJJIGhhbmRsZXIKaXRzZWxmIGlzIHBhcnQgb2YgbGliZmZpLgoKPiBJJ20gYWxzbyB3b3JyaWVk IHRoYXQgdGhpcyBpcyBsaWFibGUgdG8gaGF2ZSBuYXN0eSBpbnRlcmFjdGlvbiB3aXRoIEhXCj4g Q0ZJIG1lY2hhbmlzbXMgKGUuZy4gUEFDK0JUSSBvbiBhcm02NCkgZWl0aGVyIG5vdyBvciBpbiBm dXR1cmUsIGFuZCB0aGF0Cj4gd2UgYmFrZSBpbmNvbXBhdGliaWxpdHkgaW50byBBQkkuCgpJIHdp bGwgc3R1ZHkgQ0ZJIGFuZCB0aGVuIGFuc3dlciB0aGlzIHF1ZXN0aW9uLiBTbywgYmVhciB3aXRo IG1lLgo+PiAtIEZvciBpbnN0YW5jZSwgdHJhbXBmZCBkZWZpbmVzIGFuICJBbGxvd2VkIFBDcyIg Y29udGV4dCBpbiB0aGlzIGluaXRpYWwKPj4gICB3b3JrLiBBcyBhbiBleGFtcGxlLCBsaWJmZmkg Y2FuIGNyZWF0ZSBhIHJlYWQtb25seSBhcnJheSBvZiBhbGwgQUJJCj4+ICAgaGFuZGxlcnMgZm9y IGFuIGFyY2hpdGVjdHVyZSBhdCBidWlsZCB0aW1lLiBUaGlzIGFycmF5IGNhbiBiZSB1c2VkIHRv Cj4+ICAgc2V0IHRoZSBsaXN0IG9mIGFsbG93ZWQgUENzIGZvciBhIHRyYW1wb2xpbmUuIFRoaXMg d2lsbCBtZWFuIHRoYXQgYSBoYWNrZXIKPj4gICBjYW5ub3QgaGFjayB0aGUgUEMgcGFydCBvZiB0 aGUgcmVnaXN0ZXIgY29udGV4dCBhbmQgbWFrZSBpdCBwb2ludCB0bwo+PiAgIGFyYml0cmFyeSBs b2NhdGlvbnMuCj4gSSdtIG5vdCBleGFjdGx5IHN1cmUgd2hhdCdzIG1lYW50IGhlcmUuIERvIHlv dSBtZWFuIHRoYXQgdGhpcyBwcmV2ZW50cwo+IHVzZXJzcGFjZSBmcm9tIGJyYW5jaGluZyBpbnRv IHRoZSBtaWRkbGUgb2YgYSB0cmFtcG9saW5lLCBvciB0aGF0IHRoZQo+IHRyYW1wZmQgY29kZSBw cmV2ZW50cyB3aGVyZSB0aGUgdHJhbXBvbGluZSBpdHNlbGYgY2FuIGJyYW5jaCB0bz8KPgo+IEJv dGggeDg2IGFuZCBhcm02NCBoYXZlIHVwY29taW5nIEhXIENGSSAoQ0VUIGFuZCBCVEkpIHRvIGRl YWwgd2l0aCB0aGUKPiBmb3JtZXIsIGFuZCBJIGJlbGlldmUgdGhlIGxhdHRlciBjYW4gYWxzbyBi ZSBpbXBsZW1lbnRlZCBpbiB1c2Vyc3BhY2UKPiB3aXRoIGRlZmVuc2l2ZSBjaGVja3MgaW4gdGhl IHRyYW1wb2xpbmVzLCBwcm92aWRlZCB0aGF0IHRoZXkgYXJlCj4gcHJvdGVjdGVkIHJlYWQtb25s eS4KClNvLCBJIG1lbnRpb25lZCBiZWZvcmUgdGhhdCBhIGhhY2tlciBjYW4gcG90ZW50aWFsbHkg YWx0ZXIgdGhlIHRhcmdldApQQyB0aGF0IGEgdHJhbXBvbGluZSBmaW5hbGx5IGp1bXBzIHRvLgoK SWYgYSBwcm9jZXNzIHdlcmUgYWxsb3dlZCB0byBoYXZlIHBhZ2VzIHdpdGggYm90aCB3cml0ZSBh bmQgZXhlY3V0ZQpwZXJtaXNzaW9ucywgYSBoYWNrZXIgY291bGQgbG9hZCBoaXMgb3duIGNvZGUg aW4gb25lIG9mIHRob3NlIHBhZ2VzIGFuZApwb2ludCB0aGUgUEMgdG8gdGhhdC4KCkluIHRoZSBj b250ZXh0IG9mIHRyYW1wZmQsIHdlIGFyZSB0YWxraW5nIGFib3V0IHRoZSBjYXNlIHdoZXJlIGEg cHJvY2VzcyBpcwpub3QgcGVybWl0dGVkIHRvIGhhdmUgYm90aCB3cml0ZSBhbmQgZXhlY3V0ZSBw ZXJtaXNzaW9ucy4gSW4gdGhpcyBjYXNlLAp0aGUgaGFja2VyIGNhbm5vdCBsb2FkIGhpcyBvd24g Y29kZSBhbnl3aGVyZSBhbmQgaG9wZSB0byBleGVjdXRlIGl0LgpCdXQgYSBoYWNrZXIgY2FuIHBv aW50IHRoZSBQQyB0byBzb21lIGFyYml0cmFyeSBwbGFjZSBzdWNoIGFzIHJldHVybgpmcm9tIGds aWJjLgoKPgo+PiAtIEFuIFNFTGludXggc2V0dGluZyBjYWxsZWQgImV4ZWN0cmFtcCIgY2FuIGJl IGltcGxlbWVudGVkIGFsb25nIHRoZQo+PiAgIGxpbmVzIG9mICJleGVjbWVtIiwgImV4ZWNzdGFj ayIgYW5kICJleGVjaGVhcCIgdG8gc2VsZWN0aXZlbHkgYWxsb3cgdGhlCj4+ICAgdXNlIG9mIHRy YW1wb2xpbmVzIG9uIGEgcGVyIGFwcGxpY2F0aW9uIGJhc2lzLgo+Pgo+PiAtIFVzZXIgY29kZSBj YW4gYWRkIGRlZmVuc2l2ZSBjaGVja3MgaW4gdGhlIGNvZGUgYmVmb3JlIGludm9raW5nIGEKPj4g ICB0cmFtcG9saW5lIHRvIG1ha2Ugc3VyZSB0aGF0IGEgaGFja2VyIGhhcyBub3QgbW9kaWZpZWQg dGhlIGNvbnRleHQgZGF0YS4KPj4gICBJdCBjYW4gZG8gdGhpcyBieSBnZXR0aW5nIHRoZSB0cmFt cG9saW5lIGNvbnRleHQgZnJvbSB0aGUga2VybmVsIGFuZAo+PiAgIGRvdWJsZSBjaGVja2luZyBp dC4KPiBBcyBhYm92ZSwgd2l0aG91dCBleGFtcGxlcyBpdCdzIG5vdCBjbGVhciB0byBtZSB3aGF0 IHNvcnQgb2YgY2hhY2tzIGFyZQo+IHBvc3NpYmxlIG5vciB3aGVyZSB0aGV5IHdvdWlsZCBuZWVk IHRvIGJlIG1hZGUuIFNvIGl0J3MgZGlmZmljdWx0IHRvIHNlZQo+IHdoZXRoZXIgdGhhdCdzIGFj dHVhbGx5IHBvc3NpYmxlIG9yIHN1YmplY3QgdG8gVE9DVFRPVSByYWNlcyBhbmQKPiBzaW1pbGFy LgoKSSBoYXZlIGV4cGxhaW5lZCB0aGlzIGFib3ZlLiBJZiB0aGVyZSBhcmUgYW55IGZ1cnRoZXIg cXVlc3Rpb25zIG9uIHRoYXQsCnBsZWFzZSBsZXQgbWUga25vdy4KCj4KPj4gLSBJbiB0aGUgZnV0 dXJlLCBpZiB0aGUga2VybmVsIGNhbiBiZSBlbmhhbmNlZCB0byB1c2UgYSBzYWZlIGNvZGUKPj4g ICBnZW5lcmF0aW9uIGNvbXBvbmVudCwgdGhhdCBjb2RlIGNhbiBiZSBwbGFjZWQgaW4gdGhlIHRy YW1wb2xpbmUgbWFwcGluZwo+PiAgIHBhZ2VzLiBUaGVuLCB0aGUgdHJhbXBvbGluZSBpbnZvY2F0 aW9uIGRvZXMgbm90IGhhdmUgdG8gaW5jdXIgYSB0cmlwCj4+ICAgaW50byB0aGUga2VybmVsLgo+ Pgo+PiAtIEFsc28sIGlmIHRoZSBrZXJuZWwgY2FuIGJlIGVuaGFuY2VkIHRvIHVzZSBhIHNhZmUg Y29kZSBnZW5lcmF0aW9uCj4+ICAgY29tcG9uZW50LCBvdGhlciBmb3JtcyBvZiBkeW5hbWljIGNv ZGUgc3VjaCBhcyBKSVQgY29kZSBjYW4gYmUKPj4gICBhZGRyZXNzZWQgYnkgdGhlIHRyYW1wZmQg ZnJhbWV3b3JrLgo+IEkgZG9uJ3Qgc2VlIHdoeSBpdCdzIG5lY2Vzc2FyeSBmb3IgdGhlIGtlcm5l bCB0byBnZW5lcmF0ZSBjb2RlIGF0IGFsbC4KPiBJZiB0aGUgdHJhbXBmZCBjcmVhdGlvbiByZXF1 ZXN0cyBjYW4gYmUgdHJ1c3RlZCwgd2hhdCBwcmV2ZW50cyB0cnVzdGluZwo+IGEgc2VhbGVkIHNl dCBvZiBpbnN0cnVjdGlvbnMgZ2VuZXJhdGVkIGluIHVzZXJzcGFjZT8KCkxldCB1cyBjb25zaWRl ciBhIHN5c3RlbSBpbiB3aGljaDoKwqDCoMKgIC0gYSBwcm9jZXNzIGlzIG5vdCBwZXJtaXR0ZWQg dG8gaGF2ZSBwYWdlcyB3aXRoIGJvdGggd3JpdGUgYW5kIGV4ZWN1dGUKwqDCoMKgIC0gYSBwcm9j ZXNzIGlzIG5vdCBwZXJtaXR0ZWQgdG8gbWFwIGFueSBmaWxlIGFzIGV4ZWN1dGFibGUgdW5sZXNz IGl0CsKgwqDCoMKgwqAgaXMgcHJvcGVybHkgc2lnbmVkLiBJbiBvdGhlciB3b3JkcywgY3J5cHRv Z3JhcGhpY2FsbHkgdmVyaWZpZWQuCgpUaGVuLCB0aGUgcHJvY2VzcyBjYW5ub3QgZXhlY3V0ZSBh bnkgY29kZSB0aGF0IGlzIHJ1bnRpbWUgZ2VuZXJhdGVkLgpUaGF0IGluY2x1ZGVzIHRyYW1wb2xp bmVzLiBPbmx5IHRyYW1wb2xpbmUgY29kZSB0aGF0IGlzIHBhcnQgb2YgcHJvZ3JhbQp0ZXh0IGF0 IGJ1aWxkIHRpbWUgd291bGQgYmUgcGVybWl0dGVkIHRvIGV4ZWN1dGUuCgpJbiB0aGlzIHNjZW5h cmlvLCB0cmFtcGZkIHJlcXVlc3RzIGFyZSBjb21pbmcgZnJvbSBzaWduZWQgY29kZS4gU28sIHRo ZXkKYXJlIHRydXN0ZWQgYnkgdGhlIGtlcm5lbC4gQnV0IHRyYW1wb2xpbmUgY29kZSBjb3VsZCBi ZSBkeW5hbWljYWxseSBnZW5lcmF0ZWQuClRoZSBrZXJuZWwgd2lsbCBub3QgdHJ1c3QgaXQuCgo+ PiAtIFRyYW1wb2xpbmVzIGNhbiBiZSBzaGFyZWQgYWNyb3NzIHByb2Nlc3NlcyB3aGljaCBjYW4g Z2l2ZSByaXNlIHRvCj4+ICAgaW50ZXJlc3RpbmcgdXNlcyBpbiB0aGUgZnV0dXJlLgo+IFRoaXMg c291bmRzIGxpa2UgdGhlIHVzZS1jYXNlIG9mIGEgc2VhbGVkIG1lbWZkLiBJcyBhIHNlYWxlZCBl eGVjdXRhYmxlCj4gbWVtZmQgbm90IHN1ZmZpY2llbnQ/CgpJIHdpbGwgYW5zd2VyIHRoaXMgaW4g YSBzZXBhcmF0ZSBlbWFpbC4KClRoYW5rcy4KCk1hZGhhdmFuCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlz dApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJh ZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==