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=-5.3 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 3CA20C2D0A3 for ; Mon, 9 Nov 2020 03:49:29 +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 30E8222242 for ; Mon, 9 Nov 2020 03:49:28 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="MmDJdbaq" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 30E8222242 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=huawei.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=b7yTcFaRSkS4cnx2YllWYyohI13r5CL37S2S69RyOKY=; b=MmDJdbaq9HJbGqpz+4PuvjtaJ aIhI9lVLDVz++JMAeNDdGvBOavMI5Gcab/kBR5+lxIF5oZFkbZgexrnOEYU9eJ2Fa0u2m/n39hB/7 JiSSwi3znhDBmVSPTuKiDhEe1cWE86eLdO5jHv0P2PQiOUSkzJdb6AEqVvJZvWiRqgQ4ISZyM2oO4 6UpPD/OlhbpbAqWZzc5/UNs3vvU7fr0SiWEObvriyo+dI+hQgDNFGIP3h9YKA8Ga/i4L4WRxCitWF T3jVeQsLZakCwF1rQH7Fkk49sOthnQr6jYhMWYrjOUV3XgIZZKjRHKAs069sym8APjDGvXxREhIOy r8VPYZf+A==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kby63-0002XW-3M; Mon, 09 Nov 2020 03:43:59 +0000 Received: from szxga06-in.huawei.com ([45.249.212.32]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kby5z-0002WL-Qj for linux-arm-kernel@lists.infradead.org; Mon, 09 Nov 2020 03:43:57 +0000 Received: from DGGEMS402-HUB.china.huawei.com (unknown [172.30.72.60]) by szxga06-in.huawei.com (SkyGuard) with ESMTP id 4CTxfr6rqszhjFf; Mon, 9 Nov 2020 11:43:32 +0800 (CST) Received: from [10.110.54.32] (10.110.54.32) by DGGEMS402-HUB.china.huawei.com (10.3.19.202) with Microsoft SMTP Server id 14.3.487.0; Mon, 9 Nov 2020 11:43:36 +0800 Subject: Re: [PATCH 0/1] arm64: Accelerate Adler32 using arm64 SVE instructions. To: Dave Martin References: <20201103121506.1533-1-liqiang64@huawei.com> <20201105165301.GH6882@arm.com> From: Li Qiang Message-ID: Date: Mon, 9 Nov 2020 11:43:35 +0800 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.4.0 MIME-Version: 1.0 In-Reply-To: <20201105165301.GH6882@arm.com> X-Originating-IP: [10.110.54.32] X-CFilter-Loop: Reflected X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20201108_224356_361402_0EDACA79 X-CRM114-Status: GOOD ( 35.44 ) 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: alexandre.torgue@st.com, catalin.marinas@arm.com, linux-crypto@vger.kernel.org, mcoquelin.stm32@gmail.com, will@kernel.org, davem@davemloft.net, linux-arm-kernel@lists.infradead.org, herbert@gondor.apana.org.au 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 SGkgRGF2ZSwKCkkgY2FyZWZ1bGx5IHJlYWQgdGhlIGlkZWFzIHlvdSBwcm92aWRlZCBhbmQgdGhl IHNhbXBsZSBjb2RlIHlvdSBnYXZlIG1lLjopCgrlnKggMjAyMC8xMS82IDA6NTMsIERhdmUgTWFy dGluIOWGmemBkzoKPiBPbiBUdWUsIE5vdiAwMywgMjAyMCBhdCAwODoxNTowNVBNICswODAwLCBs MDAzNzQzMzQgd3JvdGU6Cj4+IEZyb206IGxpcWlhbmcgPGxpcWlhbmc2NEBodWF3ZWkuY29tPgo+ Pgo+PiBEZWFyIGFsbCwKPj4KPj4gVGhhbmsgeW91IGZvciB0YWtpbmcgdGhlIHByZWNpb3VzIHRp bWUgdG8gcmVhZCB0aGlzIGVtYWlsIQo+Pgo+PiBMZXQgbWUgaW50cm9kdWNlIHRoZSBpbXBsZW1l bnRhdGlvbiBpZGVhcyBvZiBteSBjb2RlIGhlcmUuCj4+Cj4+IEluIHRoZSBwcm9jZXNzIG9mIHVz aW5nIHRoZSBjb21wcmVzc2lvbiBsaWJyYXJ5IGxpYnosIEkgZm91bmQgdGhhdCB0aGUgYWRsZXIz Mgo+PiBjaGVja3N1bSBhbHdheXMgb2NjdXBpZXMgYSBoaWdoZXIgaG90IHNwb3QsIHNvIEkgcGFp ZCBhdHRlbnRpb24gdG8gdGhpcyBhbGdvcml0aG0uCj4+IEFmdGVyIGdldHRpbmcgaW4gdG91Y2gg d2l0aCB0aGUgU1ZFIGluc3RydWN0aW9uIHNldCBvZiBhcm12OCwgSSByZWFsaXplZCB0aGF0Cj4+ IFNWRSBjYW4gZWZmZWN0aXZlbHkgYWNjZWxlcmF0ZSBhZGxlcjMyLCBzbyBJIG1hZGUgc29tZSBh dHRlbXB0cyBhbmQgZ290IGNvcnJlY3QKPj4gYW5kIGJldHRlciBwZXJmb3JtYW5jZSByZXN1bHRz LiBJIHZlcnkgbXVjaCBob3BlIHRoYXQgdGhpcyBtb2RpZmljYXRpb24gY2FuIGJlCj4+IGFwcGxp ZWQgdG8gdGhlIGtlcm5lbC4KPj4KPj4gQmVsb3cgaXMgbXkgYW5hbHlzaXMgcHJvY2VzczoKPj4K Pj4gQWRsZXIzMiBhbGdvcml0aG0KPj4gPT09PT09PT09PT09PT09PT0KPj4KPj4gUmVmZXJlbmNl OiBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BZGxlci0zMgo+Pgo+PiBBc3N1bWUgdGhh dCB0aGUgYnVmIG9mIHRoZSBBZGxlcjMyIGNoZWNrc3VtIHRvIGJlIGNhbGN1bGF0ZWQgaXMgRCBh bmQgdGhlIGxlbmd0aCBpcyBuOgo+Pgo+PiAgICAgICAgIEEgPSAxICsgRDEgKyBEMiArIC4uLiAr IERuIChtb2QgNjU1MjEpCj4+Cj4+ICAgICAgICAgQiA9ICgxICsgRDEpICsgKDEgKyBEMSArIEQy KSArIC4uLiArICgxICsgRDEgKyBEMiArIC4uLiArIERuKSAobW9kIDY1NTIxKQo+PiAgICAgICAg ICAgPSBuw5dEMSArIChu4oiSMSnDl0QyICsgKG7iiJIyKcOXRDMgKyAuLi4gKyBEbiArIG4gKG1v ZCA2NTUyMSkKPj4KPj4gICAgICAgICBBZGxlci0zMihEKSA9IEIgw5cgNjU1MzYgKyBBCj4+Cj4+ IEluIEMsIGFuIGluZWZmaWNpZW50IGJ1dCBzdHJhaWdodGZvcndhcmQgaW1wbGVtZW50YXRpb24g aXM6Cj4+Cj4+ICAgICAgICAgY29uc3QgdWludDMyX3QgTU9EX0FETEVSID0gNjU1MjE7Cj4+Cj4+ ICAgICAgICAgdWludDMyX3QgYWRsZXIzMih1bnNpZ25lZCBjaGFyICpkYXRhLCBzaXplX3QgbGVu KQo+PiAgICAgICAgIHsKPj4gICAgICAgICAgICAgICAgIHVpbnQzMl90IGEgPSAxLCBiID0gMDsK Pj4gICAgICAgICAgICAgICAgIHNpemVfdCBpbmRleDsKPj4KPj4gICAgICAgICAgICAgICAgIC8v IFByb2Nlc3MgZWFjaCBieXRlIG9mIHRoZSBkYXRhIGluIG9yZGVyCj4+ICAgICAgICAgICAgICAg ICBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBsZW47ICsraW5kZXgpCj4+ICAgICAgICAgICAgICAg ICB7Cj4+ICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSAoYSArIGRhdGFbaW5kZXhdKSAlIE1P RF9BRExFUjsKPj4gICAgICAgICAgICAgICAgICAgICAgICAgYiA9IChiICsgYSkgJSBNT0RfQURM RVI7Cj4+ICAgICAgICAgICAgICAgICB9Cj4+Cj4+ICAgICAgICAgICAgICAgICByZXR1cm4gKGIg PDwgMTYpIHwgYTsKPj4gICAgICAgICB9Cj4+Cj4+IFNWRSB2ZWN0b3IgbWV0aG9kCj4+ID09PT09 PT09PT09PT09PT09Cj4+Cj4+IFN0ZXAgMS4gRGV0ZXJtaW5lIHRoZSBibG9jayBzaXplOgo+PiAg ICAgICAgIFVzZSBhZGR2bCBpbnN0cnVjdGlvbiB0byBnZXQgU1ZFIGJpdCB3aWR0aC4KPj4gICAg ICAgICBBc3N1bWluZyB0aGUgU1ZFIGJpdCB3aWR0aCBpcyB4IGhlcmUuCj4+Cj4+IFN0ZXAgMi4g U3RhcnQgdG8gY2FsY3VsYXRlIHRoZSBmaXJzdCBibG9jazoKPj4gICAgICAgICBUaGUgY2FsY3Vs YXRpb24gZm9ybXVsYSBpczoKPj4gICAgICAgICAgICAgICAgIEExID0gMSArIEQxICsgRDIgKyAu Li4gKyBEeCAobW9kIDY1NTIxKQo+PiAgICAgICAgICAgICAgICAgQjEgPSB4KkQxICsgKHgtMSkq RDIgKyAuLi4gKyBEeCArIHggKG1vZCA2NTUyMSkKPj4KPj4gU3RlcCAzLiBDYWxjdWxhdGUgdGhl IGZvbGxvdyBibG9jazoKPj4gICAgICAgICBUaGUgY2FsY3VsYXRpb24gZm9ybXVsYSBvZiBBMiBp cyB2ZXJ5IHNpbXBsZSwganVzdCBhZGQgdXA6Cj4+ICAgICAgICAgICAgICAgICBBMiA9IEExICsg RHgrMSArIER4KzIgKyAuLi4gKyBEMnggKG1vZCA2NTUyMSkKPj4KPj4gICAgICAgICBUaGUgY2Fs Y3VsYXRpb24gZm9ybXVsYSBvZiBCMiBpcyBtb3JlIGNvbXBsaWNhdGVkLCBiZWNhdXNlCj4+ICAg ICAgICAgdGhlIHJlc3VsdCBpcyByZWxhdGVkIHRvIHRoZSBsZW5ndGggb2YgYnVmLiBXaGVuIGNh bGN1bGF0aW5nCj4+ICAgICAgICAgdGhlIEIxIGJsb2NrLCBpdCBpcyBhY3R1YWxseSBhc3N1bWVk IHRoYXQgdGhlIGxlbmd0aCBpcyB0aGUKPj4gICAgICAgICBibG9jayBsZW5ndGggeC4gTm93IHdo ZW4gY2FsY3VsYXRpbmcgQjIsIHRoZSBsZW5ndGggaXMgZXhwYW5kZWQKPj4gICAgICAgICB0byAy eCwgc28gQjIgYmVjb21lczoKPj4gICAgICAgICAgICAgICAgIEIyID0gMngqRDEgKyAoMngtMSkq RDIgICAgICAgICAgICAgKyAuLi4gKyAoeCsxKSpEeCArIHgqRCh4KzEpICsgLi4uICsgRDJ4ICsg MngKPj4gICAgICAgICAgICAgICAgICAgID0geCpEMSArIHgqRDEgKyB4KkQyICsgKHgtMSkqRDIg KyAuLi4gKyB4KkR4ICsgRHggKyB4KjEgKyB4ICsgW3gqRCh4KzEpICsgKHgtMSkqRCh4KzIpICsg Li4uICsgRDJ4XQo+PiAgICAgICAgICAgICAgICAgICAgICBeXl5eICAgfn5+fiAgIF5eXl4gICB+ fn5+fn5+fiAgICAgICAgIF5eXl4gICB+fiAgIF5eXiAgIH4gICArKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrCj4+ICAgICAgICAgVGhyb3VnaCB0aGUgYWJvdmUgcG9seW5vbWlh bCB0cmFuc2Zvcm1hdGlvbjoKPj4gICAgICAgICAgICAgICAgIFN5bWJvbCAiXiIgcmVwcmVzZW50 cyB0aGUgPHggKiBBMT47Cj4+ICAgICAgICAgICAgICAgICBTeW1ib2wgIn4iIHJlcHJlc2VudHMg dGhlIDxCMT47Cj4+ICAgICAgICAgICAgICAgICBTeW1ib2wgIisiIHJlcHJlc2VudHMgdGhlIG5l eHQgYmxvY2suCj4+Cj4+ICAgICAgICAgU28gd2UgY2FuIGdldCB0aGUgbWV0aG9kIG9mIGNhbGN1 bGF0aW5nIHRoZSBuZXh0IGJsb2NrIGZyb20KPj4gICAgICAgICB0aGUgcHJldmlvdXMgYmxvY2so QXNzdW1lIHRoYXQgdGhlIGZpcnN0IGJ5dGUgbnVtYmVyIG9mIHRoZQo+PiAgICAgICAgIG5ldyBi bG9jayBzdGFydHMgZnJvbSAxKToKPj4gICAgICAgICAgICAgICAgIEFuKzEgPSBBbiArIEQxICsg RDIgKyAuLi4gKyBEeCAobW9kIDY1NTIxKQo+PiAgICAgICAgICAgICAgICAgQm4rMSA9IEJuICsg eCpBbiArIHgqRDEgKyAoeC0xKSpEMiArIC4uLiArIER4IChtb2QgNjU1MjEpCj4gCj4gUHV0dGlu ZyBhc2lkZSBwZW9wbGUncyBjb25jZXJucyBmb3IgdGhlIG1vbWVudCwgSSB0aGluayB0aGlzIG1h eSBiZQo+IGZvcm11bGF0ZWQgaW4gYSBzbGlnaHRseSBtb3JlIGNvbnZlbmllbnQgd2F5Ogo+IAo+ IElmCj4gCVgwLCBYMSwgLi4uIGFyZSB0aGUgZGF0YSBieXRlcwo+IAlBbiBpcyAxICsgU3VtIFtp PTAgLi4gbi0xXSBYaQo+IAlCbiBpcyBuICsgU3VtIFtpPTAgLi4gbi0xXSAobi1pKVhpCj4gCQk9 IFN1bSBbaT0xIC4uIG5dIEFpCgpZZXMsIHRoaXMgY2FuIGJlIGNhbGN1bGF0ZWQgZnJvbSB0aGUg b3JpZ2luYWwgZXhwcmVzc2lvbi4KCj4gCj4gKGkuZS4sIEFuLCBCbiBhcmUgdGhlIGFjY3VtdWxh dGlvbnMgZm9yIHRoZSBmaXJzdCBuIGJ5dGVzIGhlcmUsIG5vdCB0aGUKPiBmaXJzdCBuIGJsb2Nr cykKPiAKPiB0aGVuCj4gCj4gCUFbbit2XSAtIEFuID0gU3VtW2k9biAuLiBuK3YtMV0gWGkKPiAK PiAJQltuK3ZdIC0gQm4gPSB2ICsgKFN1bSBbaT0wIC4uIG4rdi0xXSAobit2LWkpIFhpKQo+IAkJ CS0gU3VtIFtpPTAgLi4gbi0xXSAobi1pKVhpCj4gCj4gCQk9IHYgKyAoU3VtIFtpPW4gLi4gbit2 LTFdIChuK3YtaSkgWGkpCj4gCQkJKyAoU3VtIFtpPTAgLi4gbi0xXSAobit2LWkpIFhpKQo+IAkJ CS0gU3VtIFtpPTAgLi4gbi0xXSAobi1pKVhpCj4gCj4gCQk9IHYgKyAoU3VtIFtpPW4gLi4gbit2 LTFdIChuK3YtaSkgWGkpCj4gCQkJKyBTdW0gW2k9MCAuLiBuLTFdICgobit2LWkpIC0gKG4taSkp IFhpCj4gCj4gCQk9IHYgKyAoU3VtIFtpPW4gLi4gbit2LTFdIChuK3YtaSkgWGkpCj4gCQkJKyB2 U3VtIFtpPTAgLi4gbi0xXSBYaQo+IAo+IAkJPSB2ICsgdihBbiAtIDEpICsgU3VtIFtpPW4gLi4g bit2LTFdIChuK3YtaSkgWGkKPiAKPiAJCT0gdkFuICsgU3VtIFtpPW4gLi4gbit2LTFdIChuK3Yt aSkgWGkKPiAKPiAJCT0gdkFuICsgdlN1bSBbaT1uIC4uIG4rdi0xXSBYaQo+IAkJCSsgU3VtIFtp PW4gLi4gbit2LTFdIChuLWkpIFhpCj4gCj4gCQk9IHZBbiArIHZTdW0gW2k9biAuLiBuK3YtMV0g WGkKPiAJCQkrIFN1bSBbaT1uIC4uIG4rdi0xXSAobi1pKSBYaQo+IAo+IAkJPSB2QVtuK3ZdICsg U3VtIFtpPW4gLi4gbit2LTFdIChuLWkpIFhpCj4gCj4gTGV0IGogPSBpIC0gbjsgdGhlbjoKPiAK PiAJQltuK3ZdIC0gQm4gPSB2QVtuK3ZdIC0gU3VtIFtqPTAgLi4gdi0xXSBqIFhbaituXQo+IAo+ IFdoaWNoIGdpdmVzIHVzIGEgbXVsdGlwbGllciBqIHRoYXQgaW5jcmVhc2VzIHdpdGggdGhlIFhb XSBpbmRleC4KCk15IG9yaWdpbmFsIGFwcHJvYWNoIGlzIHRvIG11bHRpcGx5IHRoZSBieXRlIHNl cXVlbmNlIHdpdGggdGhlICoqZGVjcmVhc2luZyoqCnNlcXVlbmNlLiBJIHRoaW5rIHRoZSBpbmNy ZWFzaW5nIHNlcXVlbmNlIGhlcmUgaXMgbW9yZSBmcmllbmRseSB0byB0aGUgdHJhaWxpbmcKYnl0 ZXMgb2YgdGhlIGxvb3AuOi0pCgo+IAo+IAo+IEkgdGhpbmsgdGhpcyBnaXZlcyBhIGNvcmUgbG9v cCBhbG9uZyB0aGUgZm9sbG93aW5nIGxpbmVzLiAgSSBkb24ndCBrbm93Cj4gd2hldGhlciB0aGlz IGlzIGNvcnJlY3QsIG9yIHdoZXRoZXIgaXQgd29ya3MgLS0gYnV0IGZlZWwgZnJlZSB0byB0YWtl Cj4gaWRlYXMgZnJvbSBpdCBpZiBpdCBoZWxwcy4KPiAKPiBBY2N1bXVsYXRvcnMgYXJlIDMyIGJp dHMuICBUaGlzIHByb3ZpZGVzIGZvciBhIGZhaXIgbnVtYmVyIG9mIGl0ZXJhdGlvbnMKPiB3aXRo b3V0IG92ZXJmbG93LCBidXQgbGFyZ2UgaW5wdXQgZGF0YSB3aWxsIHN0aWxsIHJlcXVpcmUgc3Bs aXR0aW5nIGludG8KPiBjaHVua3MsIHdpdGggbW9kdWxvIHJlZHVjdGlvbiBzdGVwcyBpbiBiZXR3 ZWVuLiAgVGhlcmUgYXJlIHJhdGhlciBhIGxvdAo+IG9mIHNlcmlhbCBkZXBlbmRlbmNpZXMgaW4g dGhlIGNvcmUgbG9vcCwgYnV0IHNpbmNlIHRoZSBvcGVyYXRpb25zCj4gaW52b2x2ZWQgYXJlIHJl bGF0aXZlbHkgY2hlYXAsIHRoaXMgaXMgcHJvYmFibHkgbm90IGEgc2lnbmlmaWNhbnQgaXNzdWUK PiBpbiBwcmFjdGljZTogdGhlIGxvYWQtdG8tdXNlIGRlcGVuZGVuY3kgaXMgcHJvYmFibHkgdGhl IGJpZ2dlciBjb25jZXJuLgo+IFBpcGVsaW5lZCBsb29wIHVucm9sbGluZyBjb3VsZCBhZGRyZXNz IHRoZXNlIGlmIG5lY2Vzc2FyeS4KPiAKPiBUaGUgaG9yaXpvbnRhbCByZWR1Y3Rpb25zIChVQURE Vikgc3RpbGwgcHJvYmFibHkgZG9uJ3QgbmVlZCB0byBiZSBkb25lCj4gdW50aWwgYWZ0ZXIgdGhl IGxhc3QgY2h1bmsuCj4gCj4gCj4gQmV3YXJlOiBJIHdhc24ndCBjYXJlZnVsIHdpdGggdGhlIGlu aXRpYWwgdmFsdWVzIGZvciBCbiAvIEFuLCBzbyBzb21lCj4gYWRkaXRpb25hbCBhZGp1c3RtZW50 cyBtaWdodCBiZSBuZWVkZWQuLi4KPiAKPiAtLTg8LS0KPiAKPiAJcHRydWUgICBwUC5zCj4gCXB0 cnVlICAgcEEucwo+IAo+IAltb3YgICAgIHpBLnMsICMwICAgICAgICAgICAgICAgIC8vIGFjY3Vt dWxhdG9yIGZvciBBbgo+IAltb3YgICAgIHpCLnMsICMwICAgICAgICAgICAgICAgIC8vIGFjY3Vt dWxhdG9yIGZvciBCbgo+IAlpbmRleCAgIHpKLnMsICMwLCAjMSAgICAgICAgICAgIC8vIHpKLnMg PSBbMCwgMSwgLi4gVi0xXQo+IAo+IAltb3YgICAgIHpWLnMsICMwCj4gCWluY3cgICAgelYucyAg ICAgICAgICAgICAgICAgICAgLy8gelYucyA9IFtWLCBWLCAuLiBWXQoKV2hlbiBJIGFjdHVhbGx5 IHRlc3RlZCB0aGlzIGNvZGUsIEkgZm91bmQgdGhhdCB0aGUgYnl0ZSBsZW5ndGggb2YgdGhlCnRl c3QgbXVzdCBiZSBlcXVhbCB0byB0aGUgdmVjdG9yIGxlbmd0aCBkaXZpZGVkIGJ5IDQgKHRoYXQg aXMsIGFuIGludGVnZXIKbXVsdGlwbGUgb2YgdGhlIG51bWJlciBvZiB3b3JkcyBpbiB0aGUgU1ZF KSBhbmQgdGhlIHJlc3VsdCBpcyBjb3JyZWN0LgoKQW5kIEkgdGhpbmsgb25lIG9mIHRoZSByZWFz b25zIGlzIHRoYXQgdGhlIHZhbHVlIHN0b3JlZCBpbiB6Vi5zIG5lZWRzIHRvIGJlCmNoYW5nZWQg aW4gdGhlIGxhc3QgY3ljbGUuIEl0IHNob3VsZCBiZSBjaGFuZ2VkIHRvIHRoZSBhY3R1YWwgbnVt YmVyIG9mCmJ5dGVzIHJlbWFpbmluZyBpbiB0aGUgbGFzdCBjeWNsZS4gOikKCj4gCj4gLy8gd2hl cmUgViBpcyBudW1iZXIgb2YgZWxlbWVudHMgcGVyIGJsb2NrCj4gLy8gICAgICA9IHRoZSBudW1i ZXIgb2YgMzItYml0IGVsZW1lbnRzIHRoYXQgZml0IGluIGEgWi1yZWdpc3Rlcgo+IAo+IAlhZGQg ICAgIHhMaW1pdCwgeFgsIHhMZW4KPiAJYiAgICAgICBzdGFydAo+IAo+IGxvb3A6ICAgCj4gCWxk MWIgICAgelgucywgcFAveiwgW3hYXQo+IAlpbmN3ICAgIHhYCgpJbiBvcmRlciB0byB2ZXJpZnkg bXkgY29uamVjdHVyZSwgSSBhZGRlZCBhIGJpdCBvZiBjb2RlIHRvIGhlcmUsIHdoaWNoIGlzIHRv CnN1YnRyYWN0IHRoZSBjb3JyZXNwb25kaW5nIHZhbHVlIGZyb20gelYgaW4gdGhlIGxhc3QgbG9v cC4gQnV0IGl0IGlzIGNvcnJlY3QKb25seSB3aGVuIHRoZSBudW1iZXIgb2YgYnl0ZXMgaXMgbGVz cyB0aGFuIG9uZSBjeWNsZS4gVGVzdCBjYXNlcyB0aGF0IGV4Y2VlZApvbmUgY29tcGxldGUgY3lj bGUgd2lsbCBhbHNvIGZhaWwuCgpTbyBJIGd1ZXNzIGJlZm9yZSBjYWxjdWxhdGluZyB0aGUgbGFz dCBjeWNsZSwgekEgc2hvdWxkIGJlIHN1bW1lZCBmaXJzdCwKYmVjYXVzZSBiZWZvcmUgdGhlIGVu ZCBvZiB0aGUgY3ljbGUsIHpBIGFuZCB6QiBhcmUgc2NhdHRlcmVkIGluIHRoZSBlbGVtZW50cwpv ZiB0aGUgdmVjdG9yLCBpZiB0aGUgbGFzdCBjeWNsZSBjYWxjdWxhdGVzIHpCLCBvbmx5IHBhcnQg b2YgekEgaXMgc3VtbWVkCiggQmVjYXVzZSBwUC9tIGRvZXMgbm90IGNvdW50IGluYWN0aXZlIGVs ZW1lbnRzKSwgaXQgc2hvdWxkIGJlIGluY29tcGxldGUuCgpUaGlzIGlzIGp1c3QgbXkgZ3Vlc3Mg YW5kIGhhcyBub3QgeWV0IGJlZW4gdmVyaWZpZWQuOikKCj4gCj4gCWFkZCAgICAgekEucywgcFAv bSwgekEucywgelgucyAgICAgICAgLy8gekEucyArPSB6WC5zCj4gCj4gCW1zYiAgICAgelgucywg cFAvbSwgekoucywgekIucyAgICAgICAgLy8gelgucyA6PSB6Qi5zIC0gelgucyAqIHpKLnMKPiAK PiAJbW92cHJmeCB6QiwgekEKPiAJbWFkICAgICB6Qi5zLCBwUC9tLCB6Vi5zLCB6WC5zICAgICAg ICAvLyB6Qi5zIDo9IHpYLnMgKyB6QS5zICogVgo+IHN0YXJ0OiAgCj4gCXdoaWxlbG8gcFAucywg eFgsIHhMaW1pdAo+IAliLmZpcnN0IGxvb3AKPiAKPiAvLyBDb2xsZWN0IHRoZSBwYXJ0aWFsIHN1 bXMgdG9nZXRoZXI6Cj4gCj4gCXVhZGR2ICAgZDAsIHBBLCB6MC5zCj4gCXVhZGR2ICAgZDEsIHBB LCB6MS5zCj4gCj4gLy8gRmluYWxseSwgYWRkIDEgdG8gZDAsIGFuZCB4TGVuIHRvIGQxLCBhbmQg ZG8gbW9kdWxvIHJlZHVjdGlvbi4KPiAKPiAtLT44LS0KPiAKPiBbLi4uXQo+IAo+IENoZWVycwo+ IC0tLURhdmUKPiAuCj4gCgpUaGUgY29kZSB5b3Ugc2VudCBtZSBwcm92aWRlcyBhIGNvcnJlY3Qg d2F5IHRvIGRlYWwgd2l0aCB0cmFpbGluZyBieXRlcywKSSBuZWVkIHRvIHNwZW5kIHNvbWUgbW9y ZSB0aW1lIHRvIGRlYnVnIHRoZSBwcm9ibGVtIGVuY291bnRlcmVkIGFib3ZlLgpUaGFuayB5b3Uh CgpDaGVlcnMuXl9eCgotLSAKQmVzdCByZWdhcmRzLApMaSBRaWFuZwoKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5n IGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5p bmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=