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 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 smtp.lore.kernel.org (Postfix) with ESMTPS id 83531C7EE23 for ; Mon, 29 May 2023 06:34:03 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:From:References:Cc:To: Subject:MIME-Version:Date:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=ZddTHFaRchlxbvTm5RnkRq/YqgB7RZPq3FAQt7l8vEQ=; b=B6ZvYy4OASevdm m1Xp4nPhyywhVpntoRfBcDud+OW5D4SuWLyLCZ4XF4v4OvjQuqLzHFv79JE828pO5HUSPz5qf7QjK vgIT49ih44BnAuUREfIhc4Z3VBs0uOIQjjkyNgq4q1n6BxEi26tqbUzwrg7rKXIdmCtVIPAP3is/4 ZI7yo3AN+TjuMwcK9JlEus7VPhMXrByJLbDCGXXq3bCrP9i5EkEUvufl9IEeA7m5cjxStdOF/NcgG oguH1eWyD5CCwlNZ7sLSEWYNYijIdxHoHF4qnT9iAKl7bjpNRm46pEvDx3+WlSIHk7GDluVahB31S zH5VQTk6X69YeB0+nHPQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1q3WRh-009P9O-1e; Mon, 29 May 2023 06:33:33 +0000 Received: from out30-101.freemail.mail.aliyun.com ([115.124.30.101]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1q3WRe-009P7i-0e for linux-arm-kernel@lists.infradead.org; Mon, 29 May 2023 06:33:32 +0000 X-Alimail-AntiSpam: AC=PASS;BC=-1|-1;BR=01201311R171e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=ay29a033018045192;MF=xueshuai@linux.alibaba.com;NM=1;PH=DS;RN=14;SR=0;TI=SMTPD_---0Vjgj2wz_1685342001; Received: from 30.240.113.228(mailfrom:xueshuai@linux.alibaba.com fp:SMTPD_---0Vjgj2wz_1685342001) by smtp.aliyun-inc.com; Mon, 29 May 2023 14:33:22 +0800 Message-ID: <1a1af428-0794-514d-1d79-52e3796a0707@linux.alibaba.com> Date: Mon, 29 May 2023 14:33:20 +0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.10.1 Subject: Re: [PATCH v5 3/4] drivers/perf: add DesignWare PCIe PMU driver Content-Language: en-US To: Baolin Wang , chengyou@linux.alibaba.com, kaishen@linux.alibaba.com, helgaas@kernel.org, yangyicong@huawei.com, will@kernel.org, Jonathan.Cameron@huawei.com, robin.murphy@arm.com Cc: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-pci@vger.kernel.org, rdunlap@infradead.org, mark.rutland@arm.com, zhuo.song@linux.alibaba.com References: <20220917121036.14864-1-xueshuai@linux.alibaba.com> <20230522035428.69441-4-xueshuai@linux.alibaba.com> <505a5d3a-c970-8d15-ea60-444a3630c199@linux.alibaba.com> From: Shuai Xue In-Reply-To: <505a5d3a-c970-8d15-ea60-444a3630c199@linux.alibaba.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230528_233330_455566_A875869A X-CRM114-Status: GOOD ( 21.29 ) 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-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 CgpPbiAyMDIzLzUvMjkgMTQ6MTMsIEJhb2xpbiBXYW5nIHdyb3RlOgo+IAo+IAo+IE9uIDUvMjIv MjAyMyAxMTo1NCBBTSwgU2h1YWkgWHVlIHdyb3RlOgo+PiBUaGlzIGNvbW1pdCBhZGRzIHRoZSBQ Q0llIFBlcmZvcm1hbmNlIE1vbml0b3JpbmcgVW5pdCAoUE1VKSBkcml2ZXIgc3VwcG9ydAo+PiBm b3IgVC1IZWFkIFlpdGlhbiBTb0MgY2hpcC4gWWl0aWFuIGlzIGJhc2VkIG9uIHRoZSBTeW5vcHN5 cyBQQ0kgRXhwcmVzcwo+PiBDb3JlIGNvbnRyb2xsZXIgSVAgd2hpY2ggcHJvdmlkZXMgc3RhdGlz dGljcyBmZWF0dXJlLiBUaGUgUE1VIGlzIG5vdCBhIFBDSWUKPj4gUm9vdCBDb21wbGV4IGludGVn cmF0ZWQgRW5kIFBvaW50KFJDaUVQKSBkZXZpY2UgYnV0IG9ubHkgcmVnaXN0ZXIgY291bnRlcnMK Pj4gcHJvdmlkZWQgYnkgZWFjaCBQQ0llIFJvb3QgUG9ydC4KPj4KPj4gVG8gZmFjaWxpdGF0ZSBj b2xsZWN0aW9uIG9mIHN0YXRpc3RpY3MgdGhlIGNvbnRyb2xsZXIgcHJvdmlkZXMgdGhlCj4+IGZv bGxvd2luZyB0d28gZmVhdHVyZXMgZm9yIGVhY2ggUm9vdCBQb3J0Ogo+Pgo+PiAtIFRpbWUgQmFz ZWQgQW5hbHlzaXMgKFJYL1RYIGRhdGEgdGhyb3VnaHB1dCBhbmQgdGltZSBzcGVudCBpbiBlYWNo Cj4+IMKgwqAgbG93LXBvd2VyIExUU1NNIHN0YXRlKQo+PiAtIEV2ZW50IGNvdW50ZXJzIChFcnJv ciBhbmQgTm9uLUVycm9yIGZvciBsYW5lcykKPj4KPj4gTm90ZSwgb25seSBvbmUgY291bnRlciBm b3IgZWFjaCB0eXBlIGFuZCBkb2VzIG5vdCBvdmVyZmxvdyBpbnRlcnJ1cHQuCj4+Cj4+IFRoaXMg ZHJpdmVyIGFkZHMgUE1VIGRldmljZXMgZm9yIGVhY2ggUENJZSBSb290IFBvcnQuIEFuZCB0aGUg UE1VIGRldmljZSBpcwo+PiBuYW1lZCBiYXNlZCB0aGUgQkRGIG9mIFJvb3QgUG9ydC4gRm9yIGV4 YW1wbGUsCj4+Cj4+IMKgwqDCoMKgIDMwOjAzLjAgUENJIGJyaWRnZTogRGV2aWNlIDFkZWQ6ODAw MCAocmV2IDAxKQo+Pgo+PiB0aGUgUE1VIGRldmljZSBuYW1lIGZvciB0aGlzIFJvb3QgUG9ydCBp cyBkd2Nfcm9vdHBvcnRfMzAxOC4KPj4KPj4gRXhhbXBsZSB1c2FnZSBvZiBjb3VudGluZyBQQ0ll IFJYIFRMUCBkYXRhIHBheWxvYWQgKFVuaXRzIG9mIDE2IGJ5dGVzKTo6Cj4+Cj4+IMKgwqDCoMKg ICQjIHBlcmYgc3RhdCAtYSAtZSBkd2Nfcm9vdHBvcnRfMzAxOC9SeF9QQ0llX1RMUF9EYXRhX1Bh eWxvYWQvCj4+Cj4+IGF2ZXJhZ2UgUlggYmFuZHdpZHRoIGNhbiBiZSBjYWxjdWxhdGVkIGxpa2Ug dGhpczoKPj4KPj4gwqDCoMKgwqAgUENJZSBUWCBCYW5kd2lkdGggPSBQQ0lFX1RYX0RBVEEgKiAx NkIgLyBNZWFzdXJlX1RpbWVfV2luZG93Cj4+Cj4+IFNpZ25lZC1vZmYtYnk6IFNodWFpIFh1ZSA8 eHVlc2h1YWlAbGludXguYWxpYmFiYS5jb20+Cj4+IFJlcG9ydGVkLWJ5OiBrZXJuZWwgdGVzdCBy b2JvdCA8bGtwQGludGVsLmNvbT4KPj4gTGluazogaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvb2Ut a2J1aWxkLWFsbC8yMDIzMDUxNzA2MzkuWFUzZGpGWlgtbGtwQGludGVsLmNvbS8KPj4gLS0tCj4g Cj4gW3NuaXBdCj4gCj4+ICtzdGF0aWMgaW50IGR3Y19wY2llX3BtdV9yZW1vdmUoc3RydWN0IHBs YXRmb3JtX2RldmljZSAqcGRldikKPj4gK3sKPj4gK8KgwqDCoCBzdHJ1Y3QgZHdjX3BjaWVfcG11 X3ByaXYgKnByaXYgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTsKPj4gK8KgwqDCoCBzdHJ1 Y3QgZHdjX3BjaWVfcG11ICpwY2llX3BtdTsKPj4gKwo+PiArwqDCoMKgIGxpc3RfZm9yX2VhY2hf ZW50cnkocGNpZV9wbXUsICZwcml2LT5wbXVfbm9kZXMsIHBtdV9ub2RlKSB7Cj4+ICvCoMKgwqDC oMKgwqDCoCBjcHVocF9zdGF0ZV9yZW1vdmVfaW5zdGFuY2UoZHdjX3BjaWVfcG11X2hwX3N0YXRl LAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAmcGNp ZV9wbXUtPmNwdWhwX25vZGUpOwo+PiArwqDCoMKgwqDCoMKgwqAgcGVyZl9wbXVfdW5yZWdpc3Rl cigmcGNpZV9wbXUtPnBtdSk7Cj4+ICvCoMKgwqAgfQo+PiArCj4+ICvCoMKgwqAgcmV0dXJuIDA7 Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBpbnQgZHdjX3BjaWVfcG11X3Byb2JlKHN0cnVjdCBwbGF0 Zm9ybV9kZXZpY2UgKnBkZXYpCj4+ICt7Cj4+ICvCoMKgwqAgc3RydWN0IGR3Y19wY2llX3BtdV9w cml2ICpwcml2Owo+PiArCj4+ICvCoMKgwqAgcHJpdiA9IGRldm1fa3phbGxvYygmcGRldi0+ZGV2 LCBzaXplb2YoKnByaXYpLCBHRlBfS0VSTkVMKTsKPj4gK8KgwqDCoCBpZiAoIXByaXYpCj4+ICvC oMKgwqDCoMKgwqDCoCByZXR1cm4gLUVOT01FTTsKPj4gKwo+PiArwqDCoMKgIHByaXYtPmRldiA9 ICZwZGV2LT5kZXY7Cj4+ICvCoMKgwqAgcGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgcHJpdik7 Cj4+ICsKPj4gK8KgwqDCoCAvKiBJZiBvbmUgUE1VIHJlZ2lzdHJhdGlvbiBmYWlscywgcmVtb3Zl IGFsbC4gKi8KPj4gK8KgwqDCoCBpZiAoX19kd2NfcGNpZV9wbXVfcHJvYmUocHJpdikpCj4+ICvC oMKgwqDCoMKgwqDCoCBkd2NfcGNpZV9wbXVfcmVtb3ZlKHBkZXYpOwo+IAo+IEluIHRoaXMgY2Fz ZSwgeW91IHNob3VsZCByZXR1cm4gZXJyb3IgZnJvbSBfX2R3Y19wY2llX3BtdV9wcm9iZSgpIGlu c3RlYWQgb2YgcmV0dXJuaW5nIDAsIHRvIHJlbGVhc2UgdGhlIHJlcXVlc3RlZCByZXNvdXJjZXMg b2YgdGhlIFBNVSBkZWl2Y2UuCgpZb3UgYXJlIHJpZ2h0LCB3aWxsIGZpeCBpdCBpbiBuZXh0IHZl cnNpb24uCgo+IAo+PiArCj4+ICvCoMKgwqAgcmV0dXJuIDA7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRp YyB2b2lkIGR3Y19wY2llX3BtdV9taWdyYXRlKHN0cnVjdCBkd2NfcGNpZV9wbXUgKnBjaWVfcG11 LCB1bnNpZ25lZCBpbnQgY3B1KQo+PiArewo+PiArwqDCoMKgIC8qIFRoaXMgUE1VIGRvZXMgTk9U IHN1cHBvcnQgaW50ZXJydXB0LCBqdXN0IG1pZ3JhdGUgY29udGV4dC4gKi8KPj4gK8KgwqDCoCBw ZXJmX3BtdV9taWdyYXRlX2NvbnRleHQoJnBjaWVfcG11LT5wbXUsIHBjaWVfcG11LT5vbmNwdSwg Y3B1KTsKPj4gK8KgwqDCoCBwY2llX3BtdS0+b25jcHUgPSBjcHU7Cj4+ICt9Cj4+ICsKPj4gK3N0 YXRpYyBpbnQgZHdjX3BjaWVfcG11X29ubGluZV9jcHUodW5zaWduZWQgaW50IGNwdSwgc3RydWN0 IGhsaXN0X25vZGUgKmNwdWhwX25vZGUpCj4+ICt7Cj4+ICvCoMKgwqAgc3RydWN0IGR3Y19wY2ll X3BtdSAqcGNpZV9wbXU7Cj4+ICvCoMKgwqAgc3RydWN0IHBjaV9kZXYgKnBkZXY7Cj4+ICvCoMKg wqAgaW50IG5vZGU7Cj4+ICsKPj4gK8KgwqDCoCBwY2llX3BtdSA9IGhsaXN0X2VudHJ5X3NhZmUo Y3B1aHBfbm9kZSwgc3RydWN0IGR3Y19wY2llX3BtdSwgY3B1aHBfbm9kZSk7Cj4+ICvCoMKgwqAg cGRldiA9IHBjaWVfcG11LT5wZGV2Owo+PiArwqDCoMKgIG5vZGUgPSBkZXZfdG9fbm9kZSgmcGRl di0+ZGV2KTsKPj4gKwo+PiArwqDCoMKgIGlmIChub2RlICE9IE5VTUFfTk9fTk9ERSAmJiBjcHVf dG9fbm9kZShwY2llX3BtdS0+b25jcHUpICE9IG5vZGUgJiYKPj4gK8KgwqDCoMKgwqDCoMKgIGNw dV90b19ub2RlKGNwdSkgPT0gbm9kZSkKPj4gK8KgwqDCoMKgwqDCoMKgIGR3Y19wY2llX3BtdV9t aWdyYXRlKHBjaWVfcG11LCBjcHUpOwo+PiArCj4+ICvCoMKgwqAgcmV0dXJuIDA7Cj4+ICt9Cj4+ ICsKPj4gK3N0YXRpYyBpbnQgZHdjX3BjaWVfcG11X29mZmxpbmVfY3B1KHVuc2lnbmVkIGludCBj cHUsIHN0cnVjdCBobGlzdF9ub2RlICpjcHVocF9ub2RlKQo+PiArewo+PiArwqDCoMKgIHN0cnVj dCBkd2NfcGNpZV9wbXUgKnBjaWVfcG11Owo+PiArwqDCoMKgIHN0cnVjdCBwY2lfZGV2ICpwZGV2 Owo+PiArwqDCoMKgIGludCBub2RlOwo+PiArwqDCoMKgIGNwdW1hc2tfdCBtYXNrOwo+PiArwqDC oMKgIHVuc2lnbmVkIGludCB0YXJnZXQ7Cj4+ICsKPj4gK8KgwqDCoCBwY2llX3BtdSA9IGhsaXN0 X2VudHJ5X3NhZmUoY3B1aHBfbm9kZSwgc3RydWN0IGR3Y19wY2llX3BtdSwgY3B1aHBfbm9kZSk7 Cj4+ICvCoMKgwqAgaWYgKGNwdSAhPSBwY2llX3BtdS0+b25jcHUpCj4+ICvCoMKgwqDCoMKgwqDC oCByZXR1cm4gMDsKPj4gKwo+PiArwqDCoMKgIHBkZXYgPSBwY2llX3BtdS0+cGRldjsKPj4gK8Kg wqDCoCBub2RlID0gZGV2X3RvX25vZGUoJnBkZXYtPmRldik7Cj4+ICvCoMKgwqAgaWYgKGNwdW1h c2tfYW5kKCZtYXNrLCBjcHVtYXNrX29mX25vZGUobm9kZSksIGNwdV9vbmxpbmVfbWFzaykgJiYK Pj4gK8KgwqDCoMKgwqDCoMKgIGNwdW1hc2tfYW5kbm90KCZtYXNrLCAmbWFzaywgY3B1bWFza19v ZihjcHUpKSkKPj4gK8KgwqDCoMKgwqDCoMKgIHRhcmdldCA9IGNwdW1hc2tfYW55KCZtYXNrKTsK Pj4gK8KgwqDCoCBlbHNlCj4+ICvCoMKgwqDCoMKgwqDCoCB0YXJnZXQgPSBjcHVtYXNrX2FueV9i dXQoY3B1X29ubGluZV9tYXNrLCBjcHUpOwo+PiArwqDCoMKgIGlmICh0YXJnZXQgPCBucl9jcHVf aWRzKQo+PiArwqDCoMKgwqDCoMKgwqAgZHdjX3BjaWVfcG11X21pZ3JhdGUocGNpZV9wbXUsIHRh cmdldCk7Cj4+ICsKPj4gK8KgwqDCoCByZXR1cm4gMDsKPj4gK30KPj4gKwo+PiArc3RhdGljIHN0 cnVjdCBwbGF0Zm9ybV9kcml2ZXIgZHdjX3BjaWVfcG11X2RyaXZlciA9IHsKPj4gK8KgwqDCoCAu cHJvYmUgPSBkd2NfcGNpZV9wbXVfcHJvYmUsCj4+ICvCoMKgwqAgLnJlbW92ZSA9IGR3Y19wY2ll X3BtdV9yZW1vdmUsCj4+ICvCoMKgwqAgLmRyaXZlciA9IHsubmFtZSA9ICJkd2NfcGNpZV9wbXUi LH0sCj4+ICt9Owo+PiArCj4+ICtzdGF0aWMgaW50IF9faW5pdCBkd2NfcGNpZV9wbXVfaW5pdCh2 b2lkKQo+PiArewo+PiArwqDCoMKgIGludCByZXQ7Cj4+ICsKPj4gK8KgwqDCoCByZXQgPSBjcHVo cF9zZXR1cF9zdGF0ZV9tdWx0aShDUFVIUF9BUF9PTkxJTkVfRFlOLAo+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICJwZXJmL2R3Y19wY2llX3BtdTpvbmxpbmUi LAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGR3Y19wY2ll X3BtdV9vbmxpbmVfY3B1LAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIGR3Y19wY2llX3BtdV9vZmZsaW5lX2NwdSk7Cj4+ICvCoMKgwqAgaWYgKHJldCA8IDAp Cj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gcmV0Owo+PiArCj4+ICvCoMKgwqAgZHdjX3BjaWVf cG11X2hwX3N0YXRlID0gcmV0Owo+PiArCj4+ICvCoMKgwqAgcmV0ID0gcGxhdGZvcm1fZHJpdmVy X3JlZ2lzdGVyKCZkd2NfcGNpZV9wbXVfZHJpdmVyKTsKPj4gK8KgwqDCoCBpZiAocmV0KSB7Cj4+ ICvCoMKgwqDCoMKgwqDCoCBjcHVocF9yZW1vdmVfbXVsdGlfc3RhdGUoZHdjX3BjaWVfcG11X2hw X3N0YXRlKTsKPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiByZXQ7Cj4+ICvCoMKgwqAgfQo+PiAr Cj4+ICvCoMKgwqAgZHdjX3BjaWVfcG11X2RldiA9IHBsYXRmb3JtX2RldmljZV9yZWdpc3Rlcl9z aW1wbGUoCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgImR3Y19wY2llX3BtdSIs IFBMQVRGT1JNX0RFVklEX05PTkUsIE5VTEwsIDApOwo+PiArwqDCoMKgIGlmIChJU19FUlIoZHdj X3BjaWVfcG11X2RldikpIHsKPj4gK8KgwqDCoMKgwqDCoMKgIHBsYXRmb3JtX2RyaXZlcl91bnJl Z2lzdGVyKCZkd2NfcGNpZV9wbXVfZHJpdmVyKTsKPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiBQ VFJfRVJSKGR3Y19wY2llX3BtdV9kZXYpOwo+PiArwqDCoMKgIH0KPj4gKwo+PiArwqDCoMKgIHJl dHVybiAwOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgdm9pZCBfX2V4aXQgZHdjX3BjaWVfcG11X2V4 aXQodm9pZCkKPj4gK3sKPj4gK8KgwqDCoCBwbGF0Zm9ybV9kZXZpY2VfdW5yZWdpc3Rlcihkd2Nf cGNpZV9wbXVfZGV2KTsKPj4gK8KgwqDCoCBwbGF0Zm9ybV9kcml2ZXJfdW5yZWdpc3RlcigmZHdj X3BjaWVfcG11X2RyaXZlcik7Cj4gCj4gWW91IHNob3VsZCBhbHNvIGNhbGwgJ2NwdWhwX3JlbW92 ZV9tdWx0aV9zdGF0ZSgpJyB3aGVuIGV4aXRpbmcgdGhlIGRyaXZlci4KCkdvb2QgY2F0Y2gsIHdp bGwgYWRkIGl0IGluIG5leHQgdmVyc2lvbi4KCgo+IAo+IFdpdGggYWJvdmUgaXNzdWVzIGZpeGVk LCB5b3UgY2FuIGFkZDoKPiBSZXZpZXdlZC1ieTogQmFvbGluIFdhbmcgPGJhb2xpbi53YW5nQGxp bnV4LmFsaWJhYmEuY29tPgoKVGhhbmsgeW91IDopCgpCZXN0IFJlZ2FyZHMsClNodWFpCgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2Vy bmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0 cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVs Cg==