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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5184BC433FE for ; Wed, 23 Nov 2022 14:28:06 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238476AbiKWO2E (ORCPT ); Wed, 23 Nov 2022 09:28:04 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48640 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238815AbiKWO1O (ORCPT ); Wed, 23 Nov 2022 09:27:14 -0500 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 35CC66B237; Wed, 23 Nov 2022 06:26:20 -0800 (PST) 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 65C1D1FB; Wed, 23 Nov 2022 06:26:26 -0800 (PST) Received: from [10.32.36.24] (e121896.Emea.Arm.com [10.32.36.24]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 01FFC3F73B; Wed, 23 Nov 2022 06:26:15 -0800 (PST) Message-ID: <279545ee-1758-c60d-fdc3-2b15bcc4be6d@arm.com> Date: Wed, 23 Nov 2022 14:26:14 +0000 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.2.2 Subject: Re: [External] : [RFC PATCH v2 1/6] perf vendor events arm64: Add topdown L1 metrics for neoverse-n2 Content-Language: en-US To: Jing Zhang , John Garry Cc: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Mark Rutland , Alexander Shishkin , Jiri Olsa , Namhyung Kim , Andrew Kilroy , Shuai Xue , Zhuo Song , linux-arm-kernel@lists.infradead.org, linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, Will Deacon , Mike Leach , Leo Yan , Ian Rogers , Nick Forrington References: <1667214694-89839-1-git-send-email-renyu.zj@linux.alibaba.com> <1668411720-3581-2-git-send-email-renyu.zj@linux.alibaba.com> <590ff032-d271-48ee-a4d8-141cc070c335@oracle.com> <75c4f0e6-3f28-a748-e891-7be6016ca28e@oracle.com> <57315669-e6e7-08b8-a252-bc35d4fecc01@arm.com> <180a34c2-f68d-6f4d-da74-7bbb80e9e65c@linux.alibaba.com> From: James Clark In-Reply-To: <180a34c2-f68d-6f4d-da74-7bbb80e9e65c@linux.alibaba.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-perf-users@vger.kernel.org On 22/11/2022 15:41, Jing Zhang wrote: > > > 在 2022/11/22 下午10:00, James Clark 写道: >> >> >> On 21/11/2022 17:55, John Garry wrote: >>> On 21/11/2022 15:17, Jing Zhang wrote: >>>> I'm sorry that I misunderstood the purpose of putting metric as >>>> arch_std_event at first, >>>> and now it works after the modification over your suggestion. >>>> >>>> But there are also a few questions: >>>> >>>> 1. The value of the slot in the topdownL1 is various in different >>>> architectures, for example, >>>> the slot is 5 on neoverse-n2. If I put topdownL1 metric as >>>> arch_std_event, then I need to >>>> specify the slot to 5 in n2. I can specify slot values in metric like >>>> below, but is there any >>>> other concise way to do this? >>>> >>>> diff --git >>>> a/tools/perf/pmu-events/arch/arm64/arm/neoverse-n2/metrics.json >>>> b/tools/perf/pmu-events/arch/arm64/arm/neoverse-n2/metrics.json >>>> index 8ff1dfe..b473baf 100644 >>>> --- a/tools/perf/pmu-events/arch/arm64/arm/neoverse-n2/metrics.json >>>> +++ b/tools/perf/pmu-events/arch/arm64/arm/neoverse-n2/metrics.json >>>> @@ -1,4 +1,23 @@ >>>> [ >>>> +       { >>>> +               "MetricExpr": "5", >>>> +               "PublicDescription": "A pipeline slot represents the >>>> hardware resources needed to process one uOp", >>>> +               "BriefDescription": "A pipeline slot represents the >>>> hardware resources needed to process one uOp", >>>> +               "MetricName": "slot" >>> >>> Ehhh....I'm not sure if that is a good idea. Ian or anyone else have an >>> opinion on this? It is possible to reuse metrics, so it should work, but... >>> >>> One problem is that "slot" would show up as a metric, which you would >>> not want. >>> >>> Alternatively I was going to suggest that you can overwrite specific std >>> arch event attributes. So for example of frontend_bound, you could have: >> >> I would agree with not having this and just hard coding the 5 wherever >> it's needed. Once we have a few different sets of metrics in place maybe >> we can start to look at deduplication, but for now I don't see the value. >> >>> >>> + b/tools/perf/pmu-events/arch/arm64/arm/neoverse-n2/metrics.json >>> @@ -0,0 +1,30 @@ >>> [ >>>     { >>>     "ArchStdEvent": "FRONTEND_BOUND", >>>         "MetricExpr": "(stall_slot_frontend - cpu_cycles) / (5 * >>> cpu_cycles)", >>>     }, >>> >>>> +       } >>>> +       { >>>> +               "ArchStdEvent": "FRONTEND_BOUND" >>>> +       }, >>>> +       { >>>> +               "ArchStdEvent": "BACKEND_BOUND" >>>> +       }, >>>> +       { >>>> +               "ArchStdEvent": "WASTED" >>>> +       }, >>>> +       { >>>> +               "ArchStdEvent": "RETIRING" >>>> +       }, >>>> >>>> >>>> 2. Should I add the topdownL1 metric to >>>> tools/perf/pmu-event/recommended.json, >>>> or create a new json file to place the general metric? >>> >>> It would not belong in recommended.json as that is specifically for >>> arch-recommended events. It would really just depend on where the value >>> comes from, i.e. arm arm or sbsa. >>> >> >> For what we're going to publish shortly we'll be generating a >> metrics.json file for each CPU. It will be autogenerated so I don't >> think duplication will be an issue and I'm expecting that there will be >> differences in the topdown metrics between CPUs anyway. So I would also >> vote to not put it in recommended.json >> > > I will create a new sbsa.json file in tools/perf/pmu-events/arch/arm64/ > to place metrics that may be common between some CPUs, just like arch_std_event. Because this would apply to all CPUs rather than just N2, I still think it's best to wait for our metrics repo to be published. Otherwise Arm will start publishing metrics with names and group names for all future CPUs that have different names to the common ones added as part of this change. It's something that we've been working on for quite a while and we've taken care to make sure that it applies to future products and is scalable. It would be easier to add these right now only for N2, and then afterwards we can start to look at what is common and could be factored out into the top level folder. > If the topdown metrics are different in other CPUs, we can overwrite the > metric expression. True, but with different group names and metric names and units it could get slightly complicated. > > For example: > > +++ b/tools/perf/pmu-events/arch/arm64/sbsa.json > @@ -0,0 +1,9 @@ > +[ > + { > + "MetricExpr": "stall_slot_frontend / (slot * cpu_cycles)", > + "PublicDescription": "Frontend bound L1 topdown metric", > + "BriefDescription": "Frontend bound L1 topdown metric", > + "MetricGroup": "TopDownL1", > + "MetricName": "FRONTEND_BOUND" > + } > +] > > + b/tools/perf/pmu-events/arch/arm64/arm/neoverse-n2/metrics.json > @@ -0,0 +1,30 @@ > +[ > + { > + "ArchStdEvent": "FRONTEND_BOUND", > + "MetricExpr": "(stall_slot_frontend - cpu_cycles) / (5 * cpu_cycles)", > + } > +] > With the auto generation of metrics file I don't really see too much benefit of doing it this way. You also run into the issue where if a platform happens to define all of the events required by a metric, will that metric appear automatically, even if it's not valid? > > In addition, I can also add TLB, Cache, Branch, InstructionMix, PEutilization > and other metric groups into sbsa.json, because they are also applicable to > neoverse-n1. Above metrics are described in the documentation of neoverse-n1: > https://developer.arm.com/documentation/PJDOC-466751330-547673/r4p1/ > > > Thanks, > Jing > > >>>> >>>> Looking forward to your reply. >>> 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 CEC24C4167D for ; Wed, 23 Nov 2022 14:27:55 +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=MSSeA386uTg15q1SL+lDV5/XJbpXjlx4ippQeYnwagM=; b=427lw3eSTz4nA1 ubwbCi898k22asa7g0GcH1t89uG9keK+R2HcmLcXXPF42OO7rIOspcviU//UAJHqmwJINWEcW4ePe Jv4ZwsV+I0Jv7PVieIWBcIgguNdxYKJrQVhPhRhC0sgI6e8774eiFmSmw16lqdHKq+a5BI37Y50V1 LurA0LfhXAVmRZ/zZjGnT6SjaunrXsTBIAkAZG6OUNa2HNXTSAt02J0lxYH75TsOcGZZdBuUqkVt9 U9wVOXhxkXxXXKVlCEcGZaqvYQuQJ0ls12Q893yMMIiS+zyCqmN0e+2vFij8xmVaFk1D7FWaRDhRb YFEjl3DyEWAib+YcdF6Q==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1oxqhn-0001Dw-0U; Wed, 23 Nov 2022 14:26:27 +0000 Received: from foss.arm.com ([217.140.110.172]) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1oxqhj-0001Bh-RK for linux-arm-kernel@lists.infradead.org; Wed, 23 Nov 2022 14:26:25 +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 65C1D1FB; Wed, 23 Nov 2022 06:26:26 -0800 (PST) Received: from [10.32.36.24] (e121896.Emea.Arm.com [10.32.36.24]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 01FFC3F73B; Wed, 23 Nov 2022 06:26:15 -0800 (PST) Message-ID: <279545ee-1758-c60d-fdc3-2b15bcc4be6d@arm.com> Date: Wed, 23 Nov 2022 14:26:14 +0000 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.2.2 Subject: Re: [External] : [RFC PATCH v2 1/6] perf vendor events arm64: Add topdown L1 metrics for neoverse-n2 Content-Language: en-US To: Jing Zhang , John Garry Cc: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Mark Rutland , Alexander Shishkin , Jiri Olsa , Namhyung Kim , Andrew Kilroy , Shuai Xue , Zhuo Song , linux-arm-kernel@lists.infradead.org, linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, Will Deacon , Mike Leach , Leo Yan , Ian Rogers , Nick Forrington References: <1667214694-89839-1-git-send-email-renyu.zj@linux.alibaba.com> <1668411720-3581-2-git-send-email-renyu.zj@linux.alibaba.com> <590ff032-d271-48ee-a4d8-141cc070c335@oracle.com> <75c4f0e6-3f28-a748-e891-7be6016ca28e@oracle.com> <57315669-e6e7-08b8-a252-bc35d4fecc01@arm.com> <180a34c2-f68d-6f4d-da74-7bbb80e9e65c@linux.alibaba.com> From: James Clark In-Reply-To: <180a34c2-f68d-6f4d-da74-7bbb80e9e65c@linux.alibaba.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20221123_062623_996326_6122F6DC X-CRM114-Status: GOOD ( 37.61 ) 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 CgpPbiAyMi8xMS8yMDIyIDE1OjQxLCBKaW5nIFpoYW5nIHdyb3RlOgo+IAo+IAo+IOWcqCAyMDIy LzExLzIyIOS4i+WNiDEwOjAwLCBKYW1lcyBDbGFyayDlhpnpgZM6Cj4+Cj4+Cj4+IE9uIDIxLzEx LzIwMjIgMTc6NTUsIEpvaG4gR2Fycnkgd3JvdGU6Cj4+PiBPbiAyMS8xMS8yMDIyIDE1OjE3LCBK aW5nIFpoYW5nIHdyb3RlOgo+Pj4+IEknbSBzb3JyeSB0aGF0IEkgbWlzdW5kZXJzdG9vZCB0aGUg cHVycG9zZSBvZiBwdXR0aW5nIG1ldHJpYyBhcwo+Pj4+IGFyY2hfc3RkX2V2ZW50IGF0IGZpcnN0 LAo+Pj4+IGFuZCBub3cgaXQgd29ya3MgYWZ0ZXIgdGhlIG1vZGlmaWNhdGlvbiBvdmVyIHlvdXIg c3VnZ2VzdGlvbi4KPj4+Pgo+Pj4+IEJ1dCB0aGVyZSBhcmUgYWxzbyBhIGZldyBxdWVzdGlvbnM6 Cj4+Pj4KPj4+PiAxLiBUaGUgdmFsdWUgb2YgdGhlIHNsb3QgaW4gdGhlIHRvcGRvd25MMSBpcyB2 YXJpb3VzIGluIGRpZmZlcmVudAo+Pj4+IGFyY2hpdGVjdHVyZXMsIGZvciBleGFtcGxlLAo+Pj4+ IHRoZSBzbG90IGlzIDUgb24gbmVvdmVyc2UtbjIuIElmIEkgcHV0IHRvcGRvd25MMSBtZXRyaWMg YXMKPj4+PiBhcmNoX3N0ZF9ldmVudCwgdGhlbiBJIG5lZWQgdG8KPj4+PiBzcGVjaWZ5IHRoZSBz bG90IHRvIDUgaW4gbjIuIEkgY2FuIHNwZWNpZnkgc2xvdCB2YWx1ZXMgaW4gbWV0cmljIGxpa2UK Pj4+PiBiZWxvdywgYnV0IGlzIHRoZXJlIGFueQo+Pj4+IG90aGVyIGNvbmNpc2Ugd2F5IHRvIGRv IHRoaXM/Cj4+Pj4KPj4+PiBkaWZmIC0tZ2l0Cj4+Pj4gYS90b29scy9wZXJmL3BtdS1ldmVudHMv YXJjaC9hcm02NC9hcm0vbmVvdmVyc2UtbjIvbWV0cmljcy5qc29uCj4+Pj4gYi90b29scy9wZXJm L3BtdS1ldmVudHMvYXJjaC9hcm02NC9hcm0vbmVvdmVyc2UtbjIvbWV0cmljcy5qc29uCj4+Pj4g aW5kZXggOGZmMWRmZS4uYjQ3M2JhZiAxMDA2NDQKPj4+PiAtLS0gYS90b29scy9wZXJmL3BtdS1l dmVudHMvYXJjaC9hcm02NC9hcm0vbmVvdmVyc2UtbjIvbWV0cmljcy5qc29uCj4+Pj4gKysrIGIv dG9vbHMvcGVyZi9wbXUtZXZlbnRzL2FyY2gvYXJtNjQvYXJtL25lb3ZlcnNlLW4yL21ldHJpY3Mu anNvbgo+Pj4+IEBAIC0xLDQgKzEsMjMgQEAKPj4+PiBbCj4+Pj4gK8KgwqDCoMKgwqDCoCB7Cj4+ Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgIk1ldHJpY0V4cHIiOiAiNSIsCj4+Pj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgIlB1YmxpY0Rlc2NyaXB0aW9uIjogIkEgcGlw ZWxpbmUgc2xvdCByZXByZXNlbnRzIHRoZQo+Pj4+IGhhcmR3YXJlIHJlc291cmNlcyBuZWVkZWQg dG8gcHJvY2VzcyBvbmUgdU9wIiwKPj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAi QnJpZWZEZXNjcmlwdGlvbiI6ICJBIHBpcGVsaW5lIHNsb3QgcmVwcmVzZW50cyB0aGUKPj4+PiBo YXJkd2FyZSByZXNvdXJjZXMgbmVlZGVkIHRvIHByb2Nlc3Mgb25lIHVPcCIsCj4+Pj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgIk1ldHJpY05hbWUiOiAic2xvdCIKPj4+Cj4+PiBFaGho Li4uLkknbSBub3Qgc3VyZSBpZiB0aGF0IGlzIGEgZ29vZCBpZGVhLiBJYW4gb3IgYW55b25lIGVs c2UgaGF2ZSBhbgo+Pj4gb3BpbmlvbiBvbiB0aGlzPyBJdCBpcyBwb3NzaWJsZSB0byByZXVzZSBt ZXRyaWNzLCBzbyBpdCBzaG91bGQgd29yaywgYnV0Li4uCj4+Pgo+Pj4gT25lIHByb2JsZW0gaXMg dGhhdCAic2xvdCIgd291bGQgc2hvdyB1cCBhcyBhIG1ldHJpYywgd2hpY2ggeW91IHdvdWxkCj4+ PiBub3Qgd2FudC4KPj4+Cj4+PiBBbHRlcm5hdGl2ZWx5IEkgd2FzIGdvaW5nIHRvIHN1Z2dlc3Qg dGhhdCB5b3UgY2FuIG92ZXJ3cml0ZSBzcGVjaWZpYyBzdGQKPj4+IGFyY2ggZXZlbnQgYXR0cmli dXRlcy4gU28gZm9yIGV4YW1wbGUgb2YgZnJvbnRlbmRfYm91bmQsIHlvdSBjb3VsZCBoYXZlOgo+ Pgo+PiBJIHdvdWxkIGFncmVlIHdpdGggbm90IGhhdmluZyB0aGlzIGFuZCBqdXN0IGhhcmQgY29k aW5nIHRoZSA1IHdoZXJldmVyCj4+IGl0J3MgbmVlZGVkLiBPbmNlIHdlIGhhdmUgYSBmZXcgZGlm ZmVyZW50IHNldHMgb2YgbWV0cmljcyBpbiBwbGFjZSBtYXliZQo+PiB3ZSBjYW4gc3RhcnQgdG8g bG9vayBhdCBkZWR1cGxpY2F0aW9uLCBidXQgZm9yIG5vdyBJIGRvbid0IHNlZSB0aGUgdmFsdWUu Cj4+Cj4+Pgo+Pj4gKyBiL3Rvb2xzL3BlcmYvcG11LWV2ZW50cy9hcmNoL2FybTY0L2FybS9uZW92 ZXJzZS1uMi9tZXRyaWNzLmpzb24KPj4+IEBAIC0wLDAgKzEsMzAgQEAKPj4+IFsKPj4+IMKgwqDC oCB7Cj4+PiDCoMKgwqDCoCJBcmNoU3RkRXZlbnQiOiAiRlJPTlRFTkRfQk9VTkQiLAo+Pj4gwqDC oMKgwqDCoMKgwqAgIk1ldHJpY0V4cHIiOiAiKHN0YWxsX3Nsb3RfZnJvbnRlbmQgLSBjcHVfY3lj bGVzKSAvICg1ICoKPj4+IGNwdV9jeWNsZXMpIiwKPj4+IMKgwqDCoCB9LAo+Pj4KPj4+PiArwqDC oMKgwqDCoMKgIH0KPj4+PiArwqDCoMKgwqDCoMKgIHsKPj4+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCAiQXJjaFN0ZEV2ZW50IjogIkZST05URU5EX0JPVU5EIgo+Pj4+ICvCoMKgwqDC oMKgwqAgfSwKPj4+PiArwqDCoMKgwqDCoMKgIHsKPj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCAiQXJjaFN0ZEV2ZW50IjogIkJBQ0tFTkRfQk9VTkQiCj4+Pj4gK8KgwqDCoMKgwqDC oCB9LAo+Pj4+ICvCoMKgwqDCoMKgwqAgewo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgICJBcmNoU3RkRXZlbnQiOiAiV0FTVEVEIgo+Pj4+ICvCoMKgwqDCoMKgwqAgfSwKPj4+PiAr wqDCoMKgwqDCoMKgIHsKPj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAiQXJjaFN0 ZEV2ZW50IjogIlJFVElSSU5HIgo+Pj4+ICvCoMKgwqDCoMKgwqAgfSwKPj4+Pgo+Pj4+Cj4+Pj4g Mi4gU2hvdWxkIEkgYWRkIHRoZSB0b3Bkb3duTDEgbWV0cmljIHRvCj4+Pj4gdG9vbHMvcGVyZi9w bXUtZXZlbnQvcmVjb21tZW5kZWQuanNvbiwKPj4+PiBvciBjcmVhdGUgYSBuZXcganNvbiBmaWxl IHRvIHBsYWNlIHRoZSBnZW5lcmFsIG1ldHJpYz8KPj4+Cj4+PiBJdCB3b3VsZCBub3QgYmVsb25n IGluIHJlY29tbWVuZGVkLmpzb24gYXMgdGhhdCBpcyBzcGVjaWZpY2FsbHkgZm9yCj4+PiBhcmNo LXJlY29tbWVuZGVkIGV2ZW50cy4gSXQgd291bGQgcmVhbGx5IGp1c3QgZGVwZW5kIG9uIHdoZXJl IHRoZSB2YWx1ZQo+Pj4gY29tZXMgZnJvbSwgaS5lLiBhcm0gYXJtIG9yIHNic2EuCj4+Pgo+Pgo+ PiBGb3Igd2hhdCB3ZSdyZSBnb2luZyB0byBwdWJsaXNoIHNob3J0bHkgd2UnbGwgYmUgZ2VuZXJh dGluZyBhCj4+IG1ldHJpY3MuanNvbiBmaWxlIGZvciBlYWNoIENQVS4gSXQgd2lsbCBiZSBhdXRv Z2VuZXJhdGVkIHNvIEkgZG9uJ3QKPj4gdGhpbmsgZHVwbGljYXRpb24gd2lsbCBiZSBhbiBpc3N1 ZSBhbmQgSSdtIGV4cGVjdGluZyB0aGF0IHRoZXJlIHdpbGwgYmUKPj4gZGlmZmVyZW5jZXMgaW4g dGhlIHRvcGRvd24gbWV0cmljcyBiZXR3ZWVuIENQVXMgYW55d2F5LiBTbyBJIHdvdWxkIGFsc28K Pj4gdm90ZSB0byBub3QgcHV0IGl0IGluIHJlY29tbWVuZGVkLmpzb24KPj4KPiAKPiBJIHdpbGwg Y3JlYXRlIGEgbmV3IHNic2EuanNvbiBmaWxlIGluIHRvb2xzL3BlcmYvcG11LWV2ZW50cy9hcmNo L2FybTY0Lwo+IHRvIHBsYWNlIG1ldHJpY3MgdGhhdCBtYXkgYmUgY29tbW9uIGJldHdlZW4gc29t ZSBDUFVzLCBqdXN0IGxpa2UgYXJjaF9zdGRfZXZlbnQuCgpCZWNhdXNlIHRoaXMgd291bGQgYXBw bHkgdG8gYWxsIENQVXMgcmF0aGVyIHRoYW4ganVzdCBOMiwgSSBzdGlsbCB0aGluawppdCdzIGJl c3QgdG8gd2FpdCBmb3Igb3VyIG1ldHJpY3MgcmVwbyB0byBiZSBwdWJsaXNoZWQuIE90aGVyd2lz ZSBBcm0Kd2lsbCBzdGFydCBwdWJsaXNoaW5nIG1ldHJpY3Mgd2l0aCBuYW1lcyBhbmQgZ3JvdXAg bmFtZXMgZm9yIGFsbCBmdXR1cmUKQ1BVcyB0aGF0IGhhdmUgZGlmZmVyZW50IG5hbWVzIHRvIHRo ZSBjb21tb24gb25lcyBhZGRlZCBhcyBwYXJ0IG9mIHRoaXMKY2hhbmdlLgoKSXQncyBzb21ldGhp bmcgdGhhdCB3ZSd2ZSBiZWVuIHdvcmtpbmcgb24gZm9yIHF1aXRlIGEgd2hpbGUgYW5kIHdlJ3Zl CnRha2VuIGNhcmUgdG8gbWFrZSBzdXJlIHRoYXQgaXQgYXBwbGllcyB0byBmdXR1cmUgcHJvZHVj dHMgYW5kIGlzIHNjYWxhYmxlLgoKSXQgd291bGQgYmUgZWFzaWVyIHRvIGFkZCB0aGVzZSByaWdo dCBub3cgb25seSBmb3IgTjIsIGFuZCB0aGVuCmFmdGVyd2FyZHMgd2UgY2FuIHN0YXJ0IHRvIGxv b2sgYXQgd2hhdCBpcyBjb21tb24gYW5kIGNvdWxkIGJlIGZhY3RvcmVkCm91dCBpbnRvIHRoZSB0 b3AgbGV2ZWwgZm9sZGVyLgoKPiBJZiB0aGUgdG9wZG93biBtZXRyaWNzIGFyZSBkaWZmZXJlbnQg aW4gb3RoZXIgQ1BVcywgd2UgY2FuIG92ZXJ3cml0ZSB0aGUKPiBtZXRyaWMgZXhwcmVzc2lvbi4K ClRydWUsIGJ1dCB3aXRoIGRpZmZlcmVudCBncm91cCBuYW1lcyBhbmQgbWV0cmljIG5hbWVzIGFu ZCB1bml0cyBpdCBjb3VsZApnZXQgc2xpZ2h0bHkgY29tcGxpY2F0ZWQuCgo+IAo+IEZvciBleGFt cGxlOgo+IAo+ICsrKyBiL3Rvb2xzL3BlcmYvcG11LWV2ZW50cy9hcmNoL2FybTY0L3Nic2EuanNv bgo+IEBAIC0wLDAgKzEsOSBAQAo+ICtbCj4gKyAgICB7Cj4gKyAgICAgICAgIk1ldHJpY0V4cHIi OiAic3RhbGxfc2xvdF9mcm9udGVuZCAvIChzbG90ICogY3B1X2N5Y2xlcykiLAo+ICsgICAgICAg ICJQdWJsaWNEZXNjcmlwdGlvbiI6ICJGcm9udGVuZCBib3VuZCBMMSB0b3Bkb3duIG1ldHJpYyIs Cj4gKyAgICAgICAgIkJyaWVmRGVzY3JpcHRpb24iOiAiRnJvbnRlbmQgYm91bmQgTDEgdG9wZG93 biBtZXRyaWMiLAo+ICsgICAgICAgICJNZXRyaWNHcm91cCI6ICJUb3BEb3duTDEiLAo+ICsgICAg ICAgICJNZXRyaWNOYW1lIjogIkZST05URU5EX0JPVU5EIgo+ICsgICAgfQo+ICtdCj4gCj4gKyBi L3Rvb2xzL3BlcmYvcG11LWV2ZW50cy9hcmNoL2FybTY0L2FybS9uZW92ZXJzZS1uMi9tZXRyaWNz Lmpzb24KPiBAQCAtMCwwICsxLDMwIEBACj4gK1sKPiArICAgewo+ICsgICAJIkFyY2hTdGRFdmVu dCI6ICJGUk9OVEVORF9CT1VORCIsCj4gKyAgICAgICAgIk1ldHJpY0V4cHIiOiAiKHN0YWxsX3Ns b3RfZnJvbnRlbmQgLSBjcHVfY3ljbGVzKSAvICg1ICogY3B1X2N5Y2xlcykiLAo+ICsgICB9Cj4g K10KPiAKCldpdGggdGhlIGF1dG8gZ2VuZXJhdGlvbiBvZiBtZXRyaWNzIGZpbGUgSSBkb24ndCBy ZWFsbHkgc2VlIHRvbyBtdWNoCmJlbmVmaXQgb2YgZG9pbmcgaXQgdGhpcyB3YXkuCgpZb3UgYWxz byBydW4gaW50byB0aGUgaXNzdWUgd2hlcmUgaWYgYSBwbGF0Zm9ybSBoYXBwZW5zIHRvIGRlZmlu ZSBhbGwgb2YKdGhlIGV2ZW50cyByZXF1aXJlZCBieSBhIG1ldHJpYywgd2lsbCB0aGF0IG1ldHJp YyBhcHBlYXIgYXV0b21hdGljYWxseSwKZXZlbiBpZiBpdCdzIG5vdCB2YWxpZD8KCj4gCj4gSW4g YWRkaXRpb24sIEkgY2FuIGFsc28gYWRkIFRMQiwgQ2FjaGUsIEJyYW5jaCwgSW5zdHJ1Y3Rpb25N aXgsIFBFdXRpbGl6YXRpb24KPiBhbmQgb3RoZXIgbWV0cmljIGdyb3VwcyBpbnRvIHNic2EuanNv biwgYmVjYXVzZSB0aGV5IGFyZSBhbHNvIGFwcGxpY2FibGUgdG8KPiBuZW92ZXJzZS1uMS4gQWJv dmUgbWV0cmljcyBhcmUgZGVzY3JpYmVkIGluIHRoZSBkb2N1bWVudGF0aW9uIG9mIG5lb3ZlcnNl LW4xOgo+IGh0dHBzOi8vZGV2ZWxvcGVyLmFybS5jb20vZG9jdW1lbnRhdGlvbi9QSkRPQy00NjY3 NTEzMzAtNTQ3NjczL3I0cDEvCj4gCj4gCj4gVGhhbmtzLAo+IEppbmcKPiAKPiAKPj4+Pgo+Pj4+ IExvb2tpbmcgZm9yd2FyZCB0byB5b3VyIHJlcGx5Lgo+Pj4KCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0 CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFk ZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK