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.6 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,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 4FFAAC4743C for ; Wed, 23 Jun 2021 10:01:46 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id 13D8B6112D for ; Wed, 23 Jun 2021 10:01:46 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 13D8B6112D Authentication-Results: mail.kernel.org; dmarc=fail (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=bombadil.20210309; h=Sender:Content-Type: Content-Transfer-Encoding:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:Date:Message-ID:From: References:CC:To:Subject:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=HXtP+ATMYWCY1/fPa/EevxCx+4vRbvu30iMVJ8NaJfk=; b=HBpbOI8e2Xfyvau0mA9SLxgIKe WLbJ5ffGGJl9Dj3ja4QWKXr2nHb3EigUM3PsrqjszBZO4sPOMqQyTK0T8AzHwCcgCA2ThcKzzyBZJ 3OsTm2Y6PXtKve7ZnzWbN8/Cd188ZTrynkjFnGGMVdGGa9okblDsN9QK9/E0cy+/DzEFNvQNNyPHm iF6bwAUU9VnDu5tn5+kbVkYYs97miYgWA8J5jmHZRVlfxjWkz9r0pzrjq880khm9gKnRAOTJcPDft Og2NAo2NY75ZaRcPU99y1cB6Nft+2pTMHlJXCLZd9QVlRi+biqfAscFrshfznKOSrtSf1nKDDpgIh WhQJEMLg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1lvzfP-00ADhN-9y; Wed, 23 Jun 2021 09:59:31 +0000 Received: from szxga01-in.huawei.com ([45.249.212.187]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1lvzfK-00ADgd-Ts for linux-arm-kernel@lists.infradead.org; Wed, 23 Jun 2021 09:59:29 +0000 Received: from dggemv703-chm.china.huawei.com (unknown [172.30.72.57]) by szxga01-in.huawei.com (SkyGuard) with ESMTP id 4G8zDj2lBzzZdGs; Wed, 23 Jun 2021 17:56:21 +0800 (CST) Received: from dggema757-chm.china.huawei.com (10.1.198.199) by dggemv703-chm.china.huawei.com (10.3.19.46) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id 15.1.2176.2; Wed, 23 Jun 2021 17:59:22 +0800 Received: from [127.0.0.1] (10.69.38.203) by dggema757-chm.china.huawei.com (10.1.198.199) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.2176.2; Wed, 23 Jun 2021 17:59:21 +0800 Subject: Re: [PATCH v6 2/2] drivers/perf: hisi: Add driver for HiSilicon PCIe PMU To: Will Deacon , Linuxarm CC: , , , , , References: <1622467951-32114-1-git-send-email-liuqi115@huawei.com> <1622467951-32114-3-git-send-email-liuqi115@huawei.com> <20210611162347.GA16284@willie-the-truck> <20210615093519.GB19878@willie-the-truck> <8e15e8d6-cfe8-0926-0ca1-b162302e52a5@huawei.com> <20210616134257.GA22905@willie-the-truck> <678f7d55-9408-f323-da53-b5afe2595271@huawei.com> <20210617175704.GF24813@willie-the-truck> <0e7f6601-0d18-18da-f19c-d71ce1bc15dc@huawei.com> <20210621175910.GC29713@willie-the-truck> From: "liuqi (BA)" Message-ID: Date: Wed, 23 Jun 2021 17:59:21 +0800 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:68.0) Gecko/20100101 Thunderbird/68.6.0 MIME-Version: 1.0 In-Reply-To: <20210621175910.GC29713@willie-the-truck> Content-Language: en-GB X-Originating-IP: [10.69.38.203] X-ClientProxiedBy: dggems703-chm.china.huawei.com (10.3.19.180) To dggema757-chm.china.huawei.com (10.1.198.199) X-CFilter-Loop: Reflected X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210623_025927_360240_BBECA3B4 X-CRM114-Status: GOOD ( 35.68 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org CgpPbiAyMDIxLzYvMjIgMTo1OSwgV2lsbCBEZWFjb24gd3JvdGU6Cj4gT24gRnJpLCBKdW4gMTgs IDIwMjEgYXQgMDU6MzI6NDdQTSArMDgwMCwgbGl1cWkgKEJBKSB3cm90ZToKPj4KPj4KPj4gT24g MjAyMS82LzE4IDE6NTcsIFdpbGwgRGVhY29uIHdyb3RlOgo+Pj4gT24gVGh1LCBKdW4gMTcsIDIw MjEgYXQgMDc6MDA6MjZQTSArMDgwMCwgbGl1cWkgKEJBKSB3cm90ZToKPj4+Pgo+Pj4+Cj4+Pj4g T24gMjAyMS82LzE2IDIxOjQyLCBXaWxsIERlYWNvbiB3cm90ZToKPj4+Pj4gSGksCj4+Pj4+Cj4+ Pj4+IE9uIFdlZCwgSnVuIDE2LCAyMDIxIGF0IDA5OjU0OjIzQU0gKzA4MDAsIGxpdXFpIChCQSkg d3JvdGU6Cj4+Pj4+PiBPbiAyMDIxLzYvMTUgMTc6MzUsIFdpbGwgRGVhY29uIHdyb3RlOgo+Pj4+ Pj4+IE9uIFR1ZSwgSnVuIDE1LCAyMDIxIGF0IDA0OjU3OjA5UE0gKzA4MDAsIGxpdXFpIChCQSkg d3JvdGU6Cj4+Pj4+Pj4+IE9uIDIwMjEvNi8xMiAwOjIzLCBXaWxsIERlYWNvbiB3cm90ZToKPj4+ Pj4+Pj4+IE9uIE1vbiwgTWF5IDMxLCAyMDIxIGF0IDA5OjMyOjMxUE0gKzA4MDAsIFFpIExpdSB3 cm90ZToKPj4+Pj4+Pj4+PiArCS8qIFByb2Nlc3MgZGF0YSB0byBzZXQgdW5pdCBvZiBsYXRlbmN5 IGFzICJ1cyIuICovCj4+Pj4+Pj4+Pj4gKwlpZiAoaXNfbGF0ZW5jeV9ldmVudChpZHgpKQo+Pj4+ Pj4+Pj4+ICsJCXJldHVybiBkaXY2NF91NjQoZGF0YSAqIHVzX3Blcl9jeWNsZSwgZGF0YV9leHQp Owo+Pj4+Pj4+Pj4+ICsKPj4+Pj4+Pj4+PiArCWlmIChpc19idXNfdXRpbF9ldmVudChpZHgpKQo+ Pj4+Pj4+Pj4+ICsJCXJldHVybiBkaXY2NF91NjQoZGF0YSAqIHVzX3Blcl9jeWNsZSwgZGF0YV9l eHQpOwo+Pj4+Pj4+Pj4+ICsKPj4+Pj4+Pj4+PiArCWlmIChpc19idWZfdXRpbF9ldmVudChpZHgp KQo+Pj4+Pj4+Pj4+ICsJCXJldHVybiBkaXY2NF91NjQoZGF0YSwgZGF0YV9leHQgKiB1c19wZXJf Y3ljbGUpOwo+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+IFdoeSBkbyB3ZSBuZWVkIHRvIGRvIGFsbCB0aGlz IGRpdmlzaW9uIGluIHRoZSBrZXJuZWw/IENhbid0IHdlIGp1c3QgZXhwb3NlCj4+Pj4+Pj4+PiB0 aGUgdW5kZXJseWluZyB2YWx1ZXMgYW5kIGxldCB1c2Vyc3BhY2UgZmlndXJlIG91dCB3aGF0IGl0 IHdhbnRzIHRvIGRvIHdpdGgKPj4+Pj4+Pj4+IHRoZSBudW1iZXJzPwo+Pj4+Pj4+Pj4KPj4+Pj4+ Pj4gT3VyIFBNVSBoYXJkd2FyZSBzdXBwb3J0IDggc2V0cyBvZiBjb3VudGVycyB0byBjb3VudCBi YW5kd2lkdGgsIGxhdGVuY3kgYW5kCj4+Pj4+Pj4+IHV0aWxpemF0aW9uIGV2ZW50cy4KPj4+Pj4+ Pj4KPj4+Pj4+Pj4gRm9yIGV4YW1wbGUsIHdoZW4gdXNlcnMgc2V0IGxhdGVuY3kgZXZlbnQsIGNv bW1vbiBjb3VudGVyIHdpbGwgY291bnQgZGVsYXkKPj4+Pj4+Pj4gY3ljbGVzLCBhbmQgZXh0ZXJu IGNvdW50ZXIgY291bnQgbnVtYmVyIG9mIFBDSWUgcGFja2V0cyBhdXRvbWF0aWNseS4gQW5kIHdl Cj4+Pj4+Pj4+IGRvIG5vdCBoYXZlIGEgZXZlbnQgbnVtYmVyIGZvciBjb3VudGluZyBudW1iZXIg b2YgUENJZSBwYWNrZXRzLgo+Pj4+Pj4+Pgo+Pj4+Pj4+PiBTbyB0aGlzIGRpdmlzaW9uIGNhbm5v dCBtb3ZlIHRvIHVzZXJzcGFjZSB0b29sLgo+Pj4+Pj4+Cj4+Pj4+Pj4gV2h5IGNhbid0IHlvdSBl eHBvc2UgdGhlIHBhY2tldCBjb3VudGVyIGFzIGFuIGV4dHJhIGV2ZW50IHRvIHVzZXJzcGFjZT8K Pj4+Pj4+Pgo+Pj4+Pj4gTWF5YmUgSSBkaWRu4oCZdCBleHByZXNzIGl0IGNsZWFybHkuCj4+Pj4+ Pgo+Pj4+Pj4gQXMgdGhlcmUgaXMgbm8gaGFyZHdhcmUgZXZlbnQgbnVtYmVyIGZvciBQQ0llIHBh Y2tldHMgY291bnRpbmcsIGV4dGVybgo+Pj4+Pj4gY291bnRlciBjb3VudCBwYWNrZXRzICphdXRv bWF0aWNseSogd2hlbiBsYXRlbmN5IGV2ZW50cyBpcyBzZWxlY3RlZCBieQo+Pj4+Pj4gdXNlcnMu Cj4+Pj4+Pgo+Pj4+Pj4gVGhpcyBtZWFucyB1c2VycyBjYW5ub3Qgc2V0ICJjb25maWc9MHhYWCIg dG8gc3RhcnQgcGFja2V0cyBjb3VudGluZyBldmVudC4KPj4+Pj4+IFNvIHdlIGNhbiBvbmx5IGdl dCB0aGUgdmFsdWUgb2YgY291bnRlciBhbmQgZXh0ZXJuIGNvdW50ZXIgaW4gZHJpdmVyIGFuZCBk bwo+Pj4+Pj4gdGhlIGRpdmlzaW9uLCB0aGVuIHBhc3MgdGhlIHJlc3VsdCB0byB1c2Vyc3BhY2Uu Cj4+Pj4+Cj4+Pj4+IEkgc3RpbGwgdGhpbmsgaXQgd291bGQgYmUgaWRlYWwgaWYgd2UgY291bGQg ZXhwb3NlIGJvdGggdmFsdWVzIHRvIHVzZXJzcGFjZQo+Pj4+PiByYXRoZXIgdGhhbiBjb21iaW5l IHRoZW0gc29tZWhvdy4gSG1tLiBBbnl3YXkuLi4KPj4+Pj4KPj4+Pj4gSSBzdHJ1Z2dsZWQgdG8g ZmlndXJlIG91dCBleGFjdGx5IHdoYXQncyBiZWluZyBjb3VudGVkIGZyb20gdGhlCj4+Pj4+IGRv Y3VtZW50YXRpb24gcGF0Y2ggKHBsZWFzZSB1cGRhdGUgdGhhdCkuIFBsZWFzZSBjYW4geW91IGV4 cGxhaW4gZXhhY3RseQo+Pj4+PiB3aGF0IGFwcGVhcnMgaW4gdGhlIEhJU0lfUENJRV9DTlQgYW5k IEhJU0lfUENJRV9FWFRfQ05UIHJlZ2lzdGVycyBmb3IgdGhlCj4+Pj4+IGRpZmZlcmVudCBtb2Rl cyBvZiBvcGVyYXRpb24/IFdpdGhvdXQgdGhhdCwgdGhlIHJhdGlvcyB5b3UndmUgY2hvc2VuIHRv Cj4+Pj4+IHJlcG9ydCBzZWVtIHJhdGhlciBhcmJpdHJhcnkuCj4+Pj4+Cj4+Pj4KPj4+PiBQQ0ll IFBNVSBldmVudHMgY2FuIGJlIGRldmlkZWQgaW50byAyIHR5cGVzOiBvbmUgdHlwZSBpcyBjb3Vu dGVkIGJ5Cj4+Pj4gSElTSV9QQ0lFX0NOVCwgdGhlIG90aGVyIHR5cGUgaXMgY291bnRlZCBieSBI SVNJX1BDSUVfRVhUX0NOVCBhbmQKPj4+PiBISVNJX1BDSUVfQ05ULCBpbmNsdWRpbmcgYmFuZHdp ZHRoIGV2ZW50cywgbGF0ZW5jeSBldmVudHMsIGJ1ZmZlcgo+Pj4+IHV0aWxpemF0aW9uIGFuZCBi dXMgdXRpbGl6YXRpb24uCj4+Pj4KPj4+PiBpZiB1c2VyIHNldHMgImV2ZW50PTB4MTAsIHN1YmV2 ZW50PTB4MDIiLCB0aGlzIG1lYW5zICJsYXRlbmN5IG9mIFJYIG1lbW9yeQo+Pj4+IHJlYWQiIGlz IHNlbGVjdGVkLiBISVNJX1BDSUVfQ05UIGNvdW50cyB0b3RhbCBkZWxheSBjeWNsZXMgYW5kCj4+ Pj4gSElTSV9QQ0lFX0VYVF9DTlQgY291bnRzIFBDSWUgcGFja2V0cyBudW1iZXIgYXQgdGhlIHNh bWUgdGltZS4gU28gUE1VIGRyaXZlcgo+Pj4+IGNvdWxkIG9idGFpbiBhdmVyYWdlIGxhdGVuY3kg YnkgY2FjdWxhdGluZzogSElTSV9QQ0lFX0NOVCAvCj4+Pj4gSElTSV9QQ0lFX0VYVF9DTlQuCj4+ Pj4KPj4+PiBpZiB1c2VycyBzZXRzICJldmVudD0weDA0LCBzdWJldmVudD0weDAxIiwgdGhpcyBt ZWFucyBiYW5kd2lkdGggb2YgUlggbWVtb3J5Cj4+Pj4gcmVhZCBpcyBzZWxlY3RlZC4gSElTSV9Q Q0lFX0NOVCBjb3VudHMgdG90YWwgcGFja2V0IGRhdGEgdm9sdW1lIGFuZAo+Pj4+IEhJU0lfUENJ RV9FWFRfQ05UIGNvdW50cyBjeWNsZXMsIHNvIFBNVSBkcml2ZXIgY291bGQgb2J0YWluIGF2ZXJh Z2UKPj4+PiBiYW5kd2lkdGggYnkgY2FjdWxhdGluZzogSElTSV9QQ0lFX0NOVCAvIEhJU0lfUENJ RV9FWFRfQ05ULgo+Pj4+Cj4+Pj4gVGhlIHNhbWUgbG9naWMgaXMgdXNlZCB3aGVuIGNhbGN1bGF0 aW5nIGJ1cyB1dGlsaXphdGlvbiBhbmQgYnVmZmVyCj4+Pj4gdXRpbGl6YXRpb24uIFNlZW1zIEkg c2hvdWxkIGFkZCB0aGlzIHBhcnQgaW4gRG9jdW1lbnQgcGF0Y2gsSSAnbGwgZG8gdGhpcyBpbgo+ Pj4+IG5leHQgdmVyc2lvbiwgdGhhbmtzLgo+Pj4+Cj4+Pj4+IEkgYWxzbyBjb3VsZG4ndCBmaWd1 cmUgb3V0IGhvdyB0aGUgbGF0ZW5jeSBldmVudCB3b3Jrcy4gRm9yIGV4YW1wbGUsIEkgd2FzCj4+ Pj4+IGFzc3VtaW5nIGl0IHdvdWxkIGJlIGEgZmlsdGVyIChhIGJpdCBsaWtlIHRoZSBsZW5ndGgp LCBzbyB5b3UgY291bGQgc2F5Cj4+Pj4+IHRoaW5ncyBsaWtlICJJJ20gb25seSBpbnRlcmVzdGVk IGluIHBhY2tldHMgd2l0aCBhIGxhdGVuY3kgaGlnaGVyIHRoYW4geCIKPj4+Pj4gYnV0IGl0IGRv ZXNuJ3QgbG9vayBsaWtlIGl0IHdvcmtzIHRoYXQgd2F5Lgo+Pj4+Pgo+Pj4+PiBUaGFua3MsCj4+ Pj4+Cj4+Pj4gbGF0ZW5jeSBpcyBub3QgYSBmaWx0ZXIsIFBDSWUgUE1VIGhhcyBhIGdyb3VwIG9m IGxhY3RlbmN5IGV2ZW50cywgdGhlaXIKPj4+PiBldmVudCBudW1iZXIgYXJlIHdpdGhpbiB0aGUg bGF0ZW5jeV9ldmVudHNfbGlzdCwgYW5kIHRoZSBhYm92ZSBleHBsYWlucyBob3cKPj4+PiBsYXRl bmN5IGV2ZW50cyB3b3JrLgo+Pj4+Cj4+Pj4gUE1VIGRyaXZlcnMgaGF2ZSBUTFAgbGVuZ3RoIGZp bHRlciBmb3IgYmFuZHdpZHRoIGV2ZW50cywgdXNlcnMgY291bGQgc2V0Cj4+Pj4gbGlrZSAiSSBv bmx5IGludGVyZXN0ZWQgaW4gYmFuZHdpZHRoIG9mIHBhY2tldHMgd2l0aCBUTFAgbGVuZ3RoIGJp Z2dlciB0aGFuCj4+Pj4geCIuCj4+Pgo+Pj4gVGhhbmtzIGZvciB0aGUgZXhwbGFuYXRpb25zLCBJ IHRoaW5rIEkgZ2V0IGl0IGEgYml0IGJldHRlciBub3cuIEJ1dCBJIHN0aWxsCj4+PiB0aGluayB3 ZSBzaG91bGQgYmUgZXhwb3NpbmcgYm90aCBvZiB0aGUgdmFsdWVzIHRvIHVzZXJzcGFjZSBpbnN0 ZWFkIG9mCj4+PiByZXBvcnRpbmcgdGhlIHJhdGlvIGZyb20gd2hpY2ggdGhlIGluZGl2aWR1YWwg Y291bnRlcnMgYXJlIHRoZW4KPj4+IHVucmVjb3ZlcmFibGUuCj4+Pgo+Pj4gSXQgd2lsbCBjb21w bGljYXRlIHRoZSBkcml2ZXIgc2xpZ2h0bHksIGJ1dCBjYW4gd2UgaW5zdGVhZCBleHBvc2UgdGhl Cj4+PiBldmVudHMgaW5kZXBlbmRlbnRseSBhbmQgdGhlbiBhbGxvd2luZyBzY2hlZHVsaW5nIHNv bWUgb2YgdGhlbSBpbiBncm91cHM/Cj4+Pgo+Pj4gVGhhdCB3YXkgd2UganVzdCB0cmVhdCBISVNJ X1BDSUVfQ05UIGFuZCBISVNJX1BDSUVfRVhUX0NOVCBhcyBzZXBhcmF0ZQo+Pj4gY291bnRlcnMs IGJ1dCB3aXRoIGEgc2NoZWR1bGluZyBjb25zdHJhaW50IHRoYXQgZXZlbnRzIGluIGEgcmVnaXN0 ZXIgcGFpcgo+Pj4gbXVzdCBiZSBpbiB0aGUgc2FtZSBncm91cC4KPj4+Cj4+PiBXaWxsCj4+Cj4+ IEhpIFdpbGwsCj4+Cj4+IEkgZ290IHdoYXQgeW91IG1lYW4sIHRyZWF0aW5nIEhJU0lfUENJRV9D TlQgYW5kIEhJU0lfUENJRV9FWFRfQ05UIGFzCj4+IHNlcGFyYXRlIGNvdW50ZXJzIGlzIGEgZ3Jl YXQgaWRlYSwgYnV0IGhlcmUgaXMgYSBoYXJkd2FyZSBsaW1pdGF0aW9uLgo+Pgo+PiBUaGUgYmVo YXZpb3Igb2YgSElTSV9QQ0lFX0VYVF9DTlQgaXMgY29udHJvbGxlZCBieSBoYXJkd2FyZSBsb2dp Y2FsLCBzbwo+PiBISVNJX1BDSUVfRVhUX0NOVCBvbmx5IHdvcmtzIHdoZW4gbGF0ZW5jeS9iYW5k d2lkdGgvLi4uIGV2ZW50cyBudW1iZXIgYXJlCj4+IHNldCBpbiBISVNJX1BDSUVfRVZFTlRfQ1RS TC4gU28gZHJpdmVyIGNhbm5vdCBzZXBhcmF0ZSB0aGlzIHR3byBjb3VudGVycywKPj4gdGhleSBt dXN0IHdvcmsgdG9nZXRoZXIgYmVjYXVzZSBvZiBoYXJkd2FyZSBsaW1pdGF0aW9uLgo+IAo+IFdo eSBjYW4ndCB5b3UgZXhwcmVzcyB0aGlzIGFzIGEgc2NoZWR1bGluZyBjb25zdHJhaW50IHdoZW4g YWRkaW5nIGEgbmV3Cj4gZXZlbnQgdGhvdWdoPyBJbiBvdGhlciB3b3JkczoKPiAKPiAgICAqIElm IHlvdSBvbmx5IGhhdmUgYSBsYXRlbmN5IGV2ZW50LCB0aGVuIHByb2dyYW0gdGhlIGxhdGVuY3kg Y291bnRlciBhbmQKPiAgICAgICJyZXNlcnZlIiBISVNJX1BDSUVfRVhUX0NOVAo+ICAgICogSWYg eW91IG9ubHkgaGF2ZSBhIHBhY2tldHMgZXZlbnQsIHRoZW4gcHJvZ3JhbSBISVNJX1BDSUVfRVhU X0NOVCBhbmQKPiAgICAgICJyZXNlcnZlIiBISVNJX1BDSUVfQ05UIHdpdGggYSBkdW1teSBsYXRl bmN5IGV2ZW50IHNvIHRoYXQgSElTSV9QQ0lFX0VYVF9DTlQKPiAgICAgIGFjdHVhbGx5IGNvdW50 cyBzb21ldGhpbmcKPiAgICAqIElmIHRoZSB1c2VyIHdhbnRzIHRvIGNvdW50IGJvdGggbGF0ZW5j eSBhbmQgcGFja2V0cywgdGhlbiB0aGV5IG5lZWQgdG8KPiAgICAgIGNyZWF0ZSB0d28gZXZlbnRz IGluIHRoZSBzYW1lIGdyb3VwLCBhdCB3aGljaCBwb2ludCB5b3UgY2FuIHByb2dyYW0KPiAgICAg IGJvdGggSElTSV9QQ0lFX0NOVCBhbmQgSElTSV9QQ0lFX0VYVF9DTlQgYW5kIHJldHVybiB0aGUg cmVzdWx0cyBpbiB0aGUKPiAgICAgIHR3byBldmVudHMKPiAKPiBXaWxsCj4gLgpIaSBXaWxsLAoK VGhhbmtzIGZvciB5b3VyIG9waW5pb24sIEknbGwgYWRkIGEgZ3JvdXAgb2YgZXZlbnRzIGZvciAK SElTSV9QQ0lFX0VYVF9DTlQsIGFuZCBleHBvcnQgZXh0X2RhdGEgdG8gdXNlcnNwYXNlLgoKSSds bCBzZW5kIGEgbmV3IHZlcnNpb24gbGF0dGVyLgoKUWkKPiAKCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlz dApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJh ZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==