From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="gK19i7CL" Received: from mgamail.intel.com (mgamail.intel.com [134.134.136.24]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3332C19B3; Wed, 13 Dec 2023 11:54:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1702497281; x=1734033281; h=message-id:date:mime-version:subject:to:cc:references: from:in-reply-to:content-transfer-encoding; bh=+nbyDHhgJ8++zxeQX/mgFJIqBXvnO0Gvfr2EtoiwJl0=; b=gK19i7CL2hq5/m+XZTo7SDNqKnZzffTMN6cTzkt6vbJJjNJlEOCzlRpx Gia0JQu+ZAg1RG9ZRqT/VzH6q6OC6CzVjjvnLsdspt5qt5EMZ9k7yy1VM U1rbplZlivT+GTh/U6TTmtCWzNGU6QD50jdNkriwL7T2yamlYItkemMj7 O0VJqNgPfaMu9xGm/8vr7+mxYyvM1549W0FwCsKC6oyP7PBr2mHXPQYg+ RN/X1yJ72ZAmJ6IymZwipPHv0kOyXg+hnKLuoPDSqssbuhJXrFjYQGFNv yxJnlFfcWbcz3/ZntoniO9Tb0ac8Ym3fjfxdUnxRkE1eb+rfrdjypFbiQ w==; X-IronPort-AV: E=McAfee;i="6600,9927,10923"; a="397802475" X-IronPort-AV: E=Sophos;i="6.04,273,1695711600"; d="scan'208";a="397802475" Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Dec 2023 11:54:40 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10923"; a="774065511" X-IronPort-AV: E=Sophos;i="6.04,273,1695711600"; d="scan'208";a="774065511" Received: from linux.intel.com ([10.54.29.200]) by orsmga002.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Dec 2023 11:54:40 -0800 Received: from [10.212.117.13] (kliang2-mobl1.ccr.corp.intel.com [10.212.117.13]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by linux.intel.com (Postfix) with ESMTPS id 92A81580DA9; Wed, 13 Dec 2023 11:54:37 -0800 (PST) Message-ID: Date: Wed, 13 Dec 2023 14:54:36 -0500 Precedence: bulk X-Mailing-List: linux-perf-users@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH V2 0/5] Clean up perf mem Content-Language: en-US To: Athira Rajeev , Arnaldo Carvalho de Melo , Ravi Bangoria Cc: Ian Rogers , Peter Zijlstra , Ingo Molnar , Namhyung Kim , Jiri Olsa , Adrian Hunter , john.g.garry@oracle.com, Will Deacon , James Clark , mike.leach@linaro.org, Leo Yan , yuhaixin.yhx@linux.alibaba.com, renyu.zj@linux.alibaba.com, Thomas Richter , LKML , linux-perf-users , linux-arm-kernel@lists.infradead.org References: <20231207192338.400336-1-kan.liang@linux.intel.com> From: "Liang, Kan" In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit On 2023-12-13 4:51 a.m., Athira Rajeev wrote: > > >> On 08-Dec-2023, at 2:01 AM, Arnaldo Carvalho de Melo wrote: >> >> Em Thu, Dec 07, 2023 at 11:23:33AM -0800, kan.liang@linux.intel.com escreveu: >>> From: Kan Liang >>> >>> Changes since V1: >>> - Fix strcmp of PMU name checking (Ravi) >>> - Fix "/," typo (Ian) >>> - Rename several functions with perf_pmu__mem_events prefix. (Ian) >>> - Fold the header removal patch into the patch where the cleanups made. >>> (Arnaldo) >>> - Add reviewed-by and tested-by from Ian and Ravi >> >> It would be good to have a Tested-by from people working in all the >> architectures affectes, like we got from Ravi for AMD, can we get those? >> >> I'm applying it locally for test building, will push to >> perf-tools-next/tmp.perf-tools-next for a while, so there is some time >> to test. >> >> ARM64 (Leo?) and ppc, for PPC... humm Ravi did it, who could test it now? > Hi Arnaldo, Ravi > > Looking into this for testing on powerpc. Will update back. > Thanks Athira. I've sent out the latest V3. Please give it a try. https://lore.kernel.org/lkml/20231213195154.1085945-1-kan.liang@linux.intel.com/ Thanks, Kan > Thanks > Athira >> >> - Arnaldo >> >>> As discussed in the below thread, the patch set is to clean up perf mem. >>> https://lore.kernel.org/lkml/afefab15-cffc-4345-9cf4-c6a4128d4d9c@linux.intel.com/ >>> >>> Introduce generic functions perf_mem_events__ptr(), >>> perf_mem_events__name() ,and is_mem_loads_aux_event() to replace the >>> ARCH specific ones. >>> Simplify the perf_mem_event__supported(). >>> >>> Only keeps the ARCH-specific perf_mem_events array in the corresponding >>> mem-events.c for each ARCH. >>> >>> There is no functional change. >>> >>> The patch set touches almost all the ARCHs, Intel, AMD, ARM, Power and >>> etc. But I can only test it on two Intel platforms. >>> Please give it try, if you have machines with other ARCHs. >>> >>> Here are the test results: >>> Intel hybrid machine: >>> >>> $perf mem record -e list >>> ldlat-loads : available >>> ldlat-stores : available >>> >>> $perf mem record -e ldlat-loads -v --ldlat 50 >>> calling: record -e cpu_atom/mem-loads,ldlat=50/P -e cpu_core/mem-loads,ldlat=50/P >>> >>> $perf mem record -v >>> calling: record -e cpu_atom/mem-loads,ldlat=30/P -e cpu_atom/mem-stores/P -e cpu_core/mem-loads,ldlat=30/P -e cpu_core/mem-stores/P >>> >>> $perf mem record -t store -v >>> calling: record -e cpu_atom/mem-stores/P -e cpu_core/mem-stores/P >>> >>> >>> Intel SPR: >>> $perf mem record -e list >>> ldlat-loads : available >>> ldlat-stores : available >>> >>> $perf mem record -e ldlat-loads -v --ldlat 50 >>> calling: record -e {cpu/mem-loads-aux/,cpu/mem-loads,ldlat=50/}:P >>> >>> $perf mem record -v >>> calling: record -e {cpu/mem-loads-aux/,cpu/mem-loads,ldlat=30/}:P -e cpu/mem-stores/P >>> >>> $perf mem record -t store -v >>> calling: record -e cpu/mem-stores/P >>> >>> Kan Liang (5): >>> perf mem: Add mem_events into the supported perf_pmu >>> perf mem: Clean up perf_mem_events__ptr() >>> perf mem: Clean up perf_mem_events__name() >>> perf mem: Clean up perf_mem_event__supported() >>> perf mem: Clean up is_mem_loads_aux_event() >>> >>> tools/perf/arch/arm64/util/mem-events.c | 36 +---- >>> tools/perf/arch/arm64/util/pmu.c | 6 + >>> tools/perf/arch/powerpc/util/mem-events.c | 13 +- >>> tools/perf/arch/powerpc/util/mem-events.h | 7 + >>> tools/perf/arch/powerpc/util/pmu.c | 11 ++ >>> tools/perf/arch/s390/util/pmu.c | 3 + >>> tools/perf/arch/x86/util/mem-events.c | 99 ++---------- >>> tools/perf/arch/x86/util/pmu.c | 11 ++ >>> tools/perf/builtin-c2c.c | 28 +++- >>> tools/perf/builtin-mem.c | 28 +++- >>> tools/perf/util/mem-events.c | 181 +++++++++++++--------- >>> tools/perf/util/mem-events.h | 15 +- >>> tools/perf/util/pmu.c | 4 +- >>> tools/perf/util/pmu.h | 7 + >>> 14 files changed, 233 insertions(+), 216 deletions(-) >>> create mode 100644 tools/perf/arch/powerpc/util/mem-events.h >>> create mode 100644 tools/perf/arch/powerpc/util/pmu.c >>> >>> -- >>> 2.35.1 >>> >> >> -- >> >> - Arnaldo > > > 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 05AE2C4332F for ; Wed, 13 Dec 2023 19:55:14 +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=qaidDIPuJjnme20QUcUPY6iLPXg5iPHuQVdtriTuwiM=; b=JMg10mzT0M4P1H JhVMMI7dMMC5pee/AWxhhkMe6+CpJpDcDaJ9n0rIiI5wA/Gj1okgsSiptvMNolniOMbQp7SZnA0WZ bSXsj74CoP1yZHxtTBcArJJgdbbIlTlJ7janZmUkG8+LlX2vYLJftjUqFRHAo89XgwzpNxXoOaFEw q6ynyqT+heTlzXt3ceopNVjHbUgwcm1ABWzOkLgyLXrkwmoru9Y2MVJDckS5yx1Gs2vn/FntQqVKl su0bGq8icNyrQQG1i7aOjP22+JLzGTu/dzGfOJKe0cM65n2i2KMFTZSLGu+Ovt0+H7DNXY8VsSPYp mdVcUNwZV65S8Si6l2Wg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1rDVJd-00FuL4-2s; Wed, 13 Dec 2023 19:54:45 +0000 Received: from mgamail.intel.com ([134.134.136.24]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1rDVJa-00FuJd-2m for linux-arm-kernel@lists.infradead.org; Wed, 13 Dec 2023 19:54:44 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1702497282; x=1734033282; h=message-id:date:mime-version:subject:to:cc:references: from:in-reply-to:content-transfer-encoding; bh=+nbyDHhgJ8++zxeQX/mgFJIqBXvnO0Gvfr2EtoiwJl0=; b=AcYYaSmULRrbVRUi59DohfFyrHlCRXjnIxygK8V5fifh127GM7qq/AUl 4B6RMi2PGMD0m+SpRfzEfA9BFTf38LFspAESAFp2/a2bI6QHgOI3DOOeZ VeOQ4PnSeiUfShlBwNXhN9EKyrRXb47w0WtncezPcuzqmPsrwZ0sDNADp mMIS+6GyuZPo5mhUOi9cXY23xgig+JA6KBGUgiYUieOpkSJJvZr8aoqe4 +09/zIdVLjHvHEoFXyCibEHeuwG28tMna9vb/Fx6cwPDgQz9SqX0RSknf Xm/yNqMJ0NsXgtMooqngGiW4XeVA3ht2VagZIaM96+nj8G/5fjd9zqx/O Q==; X-IronPort-AV: E=McAfee;i="6600,9927,10923"; a="397802480" X-IronPort-AV: E=Sophos;i="6.04,273,1695711600"; d="scan'208";a="397802480" Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Dec 2023 11:54:40 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10923"; a="774065511" X-IronPort-AV: E=Sophos;i="6.04,273,1695711600"; d="scan'208";a="774065511" Received: from linux.intel.com ([10.54.29.200]) by orsmga002.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Dec 2023 11:54:40 -0800 Received: from [10.212.117.13] (kliang2-mobl1.ccr.corp.intel.com [10.212.117.13]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by linux.intel.com (Postfix) with ESMTPS id 92A81580DA9; Wed, 13 Dec 2023 11:54:37 -0800 (PST) Message-ID: Date: Wed, 13 Dec 2023 14:54:36 -0500 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH V2 0/5] Clean up perf mem Content-Language: en-US To: Athira Rajeev , Arnaldo Carvalho de Melo , Ravi Bangoria Cc: Ian Rogers , Peter Zijlstra , Ingo Molnar , Namhyung Kim , Jiri Olsa , Adrian Hunter , john.g.garry@oracle.com, Will Deacon , James Clark , mike.leach@linaro.org, Leo Yan , yuhaixin.yhx@linux.alibaba.com, renyu.zj@linux.alibaba.com, Thomas Richter , LKML , linux-perf-users , linux-arm-kernel@lists.infradead.org References: <20231207192338.400336-1-kan.liang@linux.intel.com> From: "Liang, Kan" In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20231213_115442_943893_EA16BAFF X-CRM114-Status: GOOD ( 23.64 ) 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 CgpPbiAyMDIzLTEyLTEzIDQ6NTEgYS5tLiwgQXRoaXJhIFJhamVldiB3cm90ZToKPiAKPiAKPj4g T24gMDgtRGVjLTIwMjMsIGF0IDI6MDHigK9BTSwgQXJuYWxkbyBDYXJ2YWxobyBkZSBNZWxvIDxh Y21lQGtlcm5lbC5vcmc+IHdyb3RlOgo+Pgo+PiBFbSBUaHUsIERlYyAwNywgMjAyMyBhdCAxMToy MzozM0FNIC0wODAwLCBrYW4ubGlhbmdAbGludXguaW50ZWwuY29tIGVzY3JldmV1Ogo+Pj4gRnJv bTogS2FuIExpYW5nIDxrYW4ubGlhbmdAbGludXguaW50ZWwuY29tPgo+Pj4KPj4+IENoYW5nZXMg c2luY2UgVjE6Cj4+PiAtIEZpeCBzdHJjbXAgb2YgUE1VIG5hbWUgY2hlY2tpbmcgKFJhdmkpCj4+ PiAtIEZpeCAiLywiIHR5cG8gKElhbikKPj4+IC0gUmVuYW1lIHNldmVyYWwgZnVuY3Rpb25zIHdp dGggcGVyZl9wbXVfX21lbV9ldmVudHMgcHJlZml4LiAoSWFuKQo+Pj4gLSBGb2xkIHRoZSBoZWFk ZXIgcmVtb3ZhbCBwYXRjaCBpbnRvIHRoZSBwYXRjaCB3aGVyZSB0aGUgY2xlYW51cHMgbWFkZS4K Pj4+ICAoQXJuYWxkbykKPj4+IC0gQWRkIHJldmlld2VkLWJ5IGFuZCB0ZXN0ZWQtYnkgZnJvbSBJ YW4gYW5kIFJhdmkKPj4KPj4gSXQgd291bGQgYmUgZ29vZCB0byBoYXZlIGEgVGVzdGVkLWJ5IGZy b20gcGVvcGxlIHdvcmtpbmcgaW4gYWxsIHRoZQo+PiBhcmNoaXRlY3R1cmVzIGFmZmVjdGVzLCBs aWtlIHdlIGdvdCBmcm9tIFJhdmkgZm9yIEFNRCwgY2FuIHdlIGdldCB0aG9zZT8KPj4KPj4gSSdt IGFwcGx5aW5nIGl0IGxvY2FsbHkgZm9yIHRlc3QgYnVpbGRpbmcsIHdpbGwgcHVzaCB0bwo+PiBw ZXJmLXRvb2xzLW5leHQvdG1wLnBlcmYtdG9vbHMtbmV4dCBmb3IgYSB3aGlsZSwgc28gdGhlcmUg aXMgc29tZSB0aW1lCj4+IHRvIHRlc3QuCj4+Cj4+IEFSTTY0IChMZW8/KSBhbmQgcHBjLCBmb3Ig UFBDLi4uIGh1bW0gUmF2aSBkaWQgaXQsIHdobyBjb3VsZCB0ZXN0IGl0IG5vdz8KPiBIaSBBcm5h bGRvLCBSYXZpCj4gCj4gTG9va2luZyBpbnRvIHRoaXMgZm9yIHRlc3Rpbmcgb24gcG93ZXJwYy4g V2lsbCB1cGRhdGUgYmFjay4KPgoKVGhhbmtzIEF0aGlyYS4gSSd2ZSBzZW50IG91dCB0aGUgbGF0 ZXN0IFYzLiBQbGVhc2UgZ2l2ZSBpdCBhIHRyeS4KCmh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2xr bWwvMjAyMzEyMTMxOTUxNTQuMTA4NTk0NS0xLWthbi5saWFuZ0BsaW51eC5pbnRlbC5jb20vCgpU aGFua3MsCkthbgoKPiBUaGFua3MKPiBBdGhpcmEKPj4KPj4gLSBBcm5hbGRvCj4+Cj4+PiBBcyBk aXNjdXNzZWQgaW4gdGhlIGJlbG93IHRocmVhZCwgdGhlIHBhdGNoIHNldCBpcyB0byBjbGVhbiB1 cCBwZXJmIG1lbS4KPj4+IGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2xrbWwvYWZlZmFiMTUtY2Zm Yy00MzQ1LTljZjQtYzZhNDEyOGQ0ZDljQGxpbnV4LmludGVsLmNvbS8KPj4+Cj4+PiBJbnRyb2R1 Y2UgZ2VuZXJpYyBmdW5jdGlvbnMgcGVyZl9tZW1fZXZlbnRzX19wdHIoKSwKPj4+IHBlcmZfbWVt X2V2ZW50c19fbmFtZSgpICxhbmQgaXNfbWVtX2xvYWRzX2F1eF9ldmVudCgpIHRvIHJlcGxhY2Ug dGhlCj4+PiBBUkNIIHNwZWNpZmljIG9uZXMuCj4+PiBTaW1wbGlmeSB0aGUgcGVyZl9tZW1fZXZl bnRfX3N1cHBvcnRlZCgpLgo+Pj4KPj4+IE9ubHkga2VlcHMgdGhlIEFSQ0gtc3BlY2lmaWMgcGVy Zl9tZW1fZXZlbnRzIGFycmF5IGluIHRoZSBjb3JyZXNwb25kaW5nCj4+PiBtZW0tZXZlbnRzLmMg Zm9yIGVhY2ggQVJDSC4KPj4+Cj4+PiBUaGVyZSBpcyBubyBmdW5jdGlvbmFsIGNoYW5nZS4KPj4+ Cj4+PiBUaGUgcGF0Y2ggc2V0IHRvdWNoZXMgYWxtb3N0IGFsbCB0aGUgQVJDSHMsIEludGVsLCBB TUQsIEFSTSwgUG93ZXIgYW5kCj4+PiBldGMuIEJ1dCBJIGNhbiBvbmx5IHRlc3QgaXQgb24gdHdv IEludGVsIHBsYXRmb3Jtcy4KPj4+IFBsZWFzZSBnaXZlIGl0IHRyeSwgaWYgeW91IGhhdmUgbWFj aGluZXMgd2l0aCBvdGhlciBBUkNIcy4KPj4+Cj4+PiBIZXJlIGFyZSB0aGUgdGVzdCByZXN1bHRz Ogo+Pj4gSW50ZWwgaHlicmlkIG1hY2hpbmU6Cj4+Pgo+Pj4gJHBlcmYgbWVtIHJlY29yZCAtZSBs aXN0Cj4+PiBsZGxhdC1sb2FkcyAgOiBhdmFpbGFibGUKPj4+IGxkbGF0LXN0b3JlcyA6IGF2YWls YWJsZQo+Pj4KPj4+ICRwZXJmIG1lbSByZWNvcmQgLWUgbGRsYXQtbG9hZHMgLXYgLS1sZGxhdCA1 MAo+Pj4gY2FsbGluZzogcmVjb3JkIC1lIGNwdV9hdG9tL21lbS1sb2FkcyxsZGxhdD01MC9QIC1l IGNwdV9jb3JlL21lbS1sb2FkcyxsZGxhdD01MC9QCj4+Pgo+Pj4gJHBlcmYgbWVtIHJlY29yZCAt dgo+Pj4gY2FsbGluZzogcmVjb3JkIC1lIGNwdV9hdG9tL21lbS1sb2FkcyxsZGxhdD0zMC9QIC1l IGNwdV9hdG9tL21lbS1zdG9yZXMvUCAtZSBjcHVfY29yZS9tZW0tbG9hZHMsbGRsYXQ9MzAvUCAt ZSBjcHVfY29yZS9tZW0tc3RvcmVzL1AKPj4+Cj4+PiAkcGVyZiBtZW0gcmVjb3JkIC10IHN0b3Jl IC12Cj4+PiBjYWxsaW5nOiByZWNvcmQgLWUgY3B1X2F0b20vbWVtLXN0b3Jlcy9QIC1lIGNwdV9j b3JlL21lbS1zdG9yZXMvUAo+Pj4KPj4+Cj4+PiBJbnRlbCBTUFI6Cj4+PiAkcGVyZiBtZW0gcmVj b3JkIC1lIGxpc3QKPj4+IGxkbGF0LWxvYWRzICA6IGF2YWlsYWJsZQo+Pj4gbGRsYXQtc3RvcmVz IDogYXZhaWxhYmxlCj4+Pgo+Pj4gJHBlcmYgbWVtIHJlY29yZCAtZSBsZGxhdC1sb2FkcyAtdiAt LWxkbGF0IDUwCj4+PiBjYWxsaW5nOiByZWNvcmQgLWUge2NwdS9tZW0tbG9hZHMtYXV4LyxjcHUv bWVtLWxvYWRzLGxkbGF0PTUwL306UAo+Pj4KPj4+ICRwZXJmIG1lbSByZWNvcmQgLXYKPj4+IGNh bGxpbmc6IHJlY29yZCAtZSB7Y3B1L21lbS1sb2Fkcy1hdXgvLGNwdS9tZW0tbG9hZHMsbGRsYXQ9 MzAvfTpQIC1lIGNwdS9tZW0tc3RvcmVzL1AKPj4+Cj4+PiAkcGVyZiBtZW0gcmVjb3JkIC10IHN0 b3JlIC12Cj4+PiBjYWxsaW5nOiByZWNvcmQgLWUgY3B1L21lbS1zdG9yZXMvUAo+Pj4KPj4+IEth biBMaWFuZyAoNSk6Cj4+PiAgcGVyZiBtZW06IEFkZCBtZW1fZXZlbnRzIGludG8gdGhlIHN1cHBv cnRlZCBwZXJmX3BtdQo+Pj4gIHBlcmYgbWVtOiBDbGVhbiB1cCBwZXJmX21lbV9ldmVudHNfX3B0 cigpCj4+PiAgcGVyZiBtZW06IENsZWFuIHVwIHBlcmZfbWVtX2V2ZW50c19fbmFtZSgpCj4+PiAg cGVyZiBtZW06IENsZWFuIHVwIHBlcmZfbWVtX2V2ZW50X19zdXBwb3J0ZWQoKQo+Pj4gIHBlcmYg bWVtOiBDbGVhbiB1cCBpc19tZW1fbG9hZHNfYXV4X2V2ZW50KCkKPj4+Cj4+PiB0b29scy9wZXJm L2FyY2gvYXJtNjQvdXRpbC9tZW0tZXZlbnRzLmMgICB8ICAzNiArLS0tLQo+Pj4gdG9vbHMvcGVy Zi9hcmNoL2FybTY0L3V0aWwvcG11LmMgICAgICAgICAgfCAgIDYgKwo+Pj4gdG9vbHMvcGVyZi9h cmNoL3Bvd2VycGMvdXRpbC9tZW0tZXZlbnRzLmMgfCAgMTMgKy0KPj4+IHRvb2xzL3BlcmYvYXJj aC9wb3dlcnBjL3V0aWwvbWVtLWV2ZW50cy5oIHwgICA3ICsKPj4+IHRvb2xzL3BlcmYvYXJjaC9w b3dlcnBjL3V0aWwvcG11LmMgICAgICAgIHwgIDExICsrCj4+PiB0b29scy9wZXJmL2FyY2gvczM5 MC91dGlsL3BtdS5jICAgICAgICAgICB8ICAgMyArCj4+PiB0b29scy9wZXJmL2FyY2gveDg2L3V0 aWwvbWVtLWV2ZW50cy5jICAgICB8ICA5OSArKy0tLS0tLS0tLS0KPj4+IHRvb2xzL3BlcmYvYXJj aC94ODYvdXRpbC9wbXUuYyAgICAgICAgICAgIHwgIDExICsrCj4+PiB0b29scy9wZXJmL2J1aWx0 aW4tYzJjLmMgICAgICAgICAgICAgICAgICB8ICAyOCArKystCj4+PiB0b29scy9wZXJmL2J1aWx0 aW4tbWVtLmMgICAgICAgICAgICAgICAgICB8ICAyOCArKystCj4+PiB0b29scy9wZXJmL3V0aWwv bWVtLWV2ZW50cy5jICAgICAgICAgICAgICB8IDE4MSArKysrKysrKysrKysrLS0tLS0tLS0tCj4+ PiB0b29scy9wZXJmL3V0aWwvbWVtLWV2ZW50cy5oICAgICAgICAgICAgICB8ICAxNSArLQo+Pj4g dG9vbHMvcGVyZi91dGlsL3BtdS5jICAgICAgICAgICAgICAgICAgICAgfCAgIDQgKy0KPj4+IHRv b2xzL3BlcmYvdXRpbC9wbXUuaCAgICAgICAgICAgICAgICAgICAgIHwgICA3ICsKPj4+IDE0IGZp bGVzIGNoYW5nZWQsIDIzMyBpbnNlcnRpb25zKCspLCAyMTYgZGVsZXRpb25zKC0pCj4+PiBjcmVh dGUgbW9kZSAxMDA2NDQgdG9vbHMvcGVyZi9hcmNoL3Bvd2VycGMvdXRpbC9tZW0tZXZlbnRzLmgK Pj4+IGNyZWF0ZSBtb2RlIDEwMDY0NCB0b29scy9wZXJmL2FyY2gvcG93ZXJwYy91dGlsL3BtdS5j Cj4+Pgo+Pj4gLS0gCj4+PiAyLjM1LjEKPj4+Cj4+Cj4+IC0tIAo+Pgo+PiAtIEFybmFsZG8KPiAK PiAKPiAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxp bnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFk ZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4 LWFybS1rZXJuZWwK