Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753461AbeADPTr (ORCPT + 1 other); Thu, 4 Jan 2018 10:19:47 -0500 Received: from mga01.intel.com ([192.55.52.88]:1171 "EHLO mga01.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753237AbeADPTp (ORCPT ); Thu, 4 Jan 2018 10:19:45 -0500 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.45,507,1508828400"; d="scan'208";a="189641734" From: "Liang, Kan" To: Philippe Ombredanne CC: "acme@kernel.org" , "peterz@infradead.org" , "mingo@redhat.com" , "linux-kernel@vger.kernel.org" , "eranian@google.com" , "ak@linux.intel.com" , "jolsa@kernel.org" , "Williams, Dan J" Subject: RE: [PATCH V2] perf script: add script to profile and resolve physical mem type Thread-Topic: [PATCH V2] perf script: add script to profile and resolve physical mem type Thread-Index: AQHTTd4TIJZdwMdEMU6VrilGLG4DTqNjBB/QgABrgYCAAMe8UA== Date: Thu, 4 Jan 2018 15:19:41 +0000 Message-ID: <37D7C6CF3E00A74B8858931C1DB2F077537FDCA7@SHSMSX103.ccr.corp.intel.com> References: <1508969363-351481-1-git-send-email-kan.liang@intel.com> <37D7C6CF3E00A74B8858931C1DB2F077537FD81B@SHSMSX103.ccr.corp.intel.com> In-Reply-To: Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiZmM4NjgzNDEtODEzMy00ZjA5LWFmZGYtOGNiNDE5NDU1OTA0IiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX0lDIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE2LjUuOS4zIiwiVHJ1c3RlZExhYmVsSGFzaCI6Ik9SRGV4QzJlZWlDQ3huRTBJK1RRV29ab2t4cWpUeDVhWmVoS1RjS1NVSGs9In0= x-ctpclassification: CTP_IC dlp-product: dlpe-windows dlp-version: 11.0.0.116 dlp-reaction: no-action x-originating-ip: [10.239.127.40] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Return-Path: DQo+IERlYXIgS2FuLA0KPiANCj4gT24gV2VkLCBKYW4gMywgMjAxOCBhdCA5OjIwIFBNLCBMaWFu ZywgS2FuIDxrYW4ubGlhbmdAaW50ZWwuY29tPiB3cm90ZToNCj4gPiBIaSBTdGVwaGFuZSBhbmQg QW5kaSwNCj4gPg0KPiA+IENvdWxkIHlvdSBwbGVhc2UgcmV2aWV3IHRoZSBzY3JpcHQ/DQo+ID4N Cj4gPiBJZiBpdCdzIE9LIGZvciB5b3UsIGNvdWxkIHlvdSBwbGVhc2UgQWNrL1JldmlldyB0aGlz Pw0KPiA+DQo+ID4gVGhhbmtzLA0KPiA+IEthbg0KPiA+DQo+ID4+DQo+ID4+IEZyb206IEthbiBM aWFuZyA8S2FuLmxpYW5nQGludGVsLmNvbT4NCj4gPj4NCj4gPj4gVGhlcmUgY291bGQgYmUgZGlm ZmVyZW50IHR5cGVzIG9mIG1lbW9yeSBpbiB0aGUgc3lzdGVtLiBFLmcgbm9ybWFsDQo+ID4+IFN5 c3RlbSBNZW1vcnksIFBlcnNpc3RlbnQgTWVtb3J5LiBUbyB1bmRlcnN0YW5kIGhvdyB0aGUgd29y a2xvYWQNCj4gbWFwcw0KPiA+PiB0bw0KPiA+PiB0aG9zZSBtZW1vcmllcywgaXQncyBpbXBvcnRh bnQgdG8ga25vdyB0aGUgSS9PIHN0YXRpc3RpY3Mgb2YgdGhlbS4NCj4gPj4gUGVyZiBjYW4gY29s bGVjdCBwaHlzaWNhbCBhZGRyZXNzZXMsIGJ1dCB0aG9zZSBhcmUgcmF3IGRhdGEuDQo+ID4+IEl0 IHN0aWxsIG5lZWRzIGV4dHJhIHdvcmsgdG8gcmVzb2x2ZSB0aGUgcGh5c2ljYWwgYWRkcmVzc2Vz Lg0KPiA+PiBQcm92aWRlIGEgc2NyaXB0IHRvIGZhY2lsaXRhdGUgdGhlIHBoeXNpY2FsIGFkZHJl c3NlcyByZXNvbHZpbmcgYW5kDQo+ID4+IEkvTyBzdGF0aXN0aWNzLg0KPiA+Pg0KPiA+PiBQcm9m aWxlIHdpdGggTUVNX0lOU1RfUkVUSVJFRC5BTExfTE9BRFMgb3INCj4gPj4gTUVNX1VPUFNfUkVU SVJFRC5BTExfTE9BRFMNCj4gPj4gZXZlbnQgaWYgYW55IG9mIHRoZW0gaXMgYXZhaWxhYmxlLg0K PiA+PiBMb29rIHVwIHRoZSAvcHJvYy9pb21lbSBhbmQgcmVzb2x2ZSB0aGUgcGh5c2ljYWwgYWRk cmVzcy4NCj4gPj4gUHJvdmlkZSBtZW1vcnkgdHlwZSBzdW1tYXJ5Lg0KPiA+Pg0KPiA+PiBIZXJl IGlzIGFuIGV4YW1wbGUgb3V0cHV0Lg0KPiA+PiAgI3BlcmYgc2NyaXB0IHJlcG9ydCBtZW0tcGh5 cy1hZGRyDQo+ID4+IEV2ZW50OiBtZW1faW5zdF9yZXRpcmVkLmFsbF9sb2FkczpQDQo+ID4+IE1l bW9yeSB0eXBlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnQgICBwZXJj ZW50YWdlDQo+ID4+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIC0t LS0tLS0tLS0tICAtLS0tLS0tLS0tLQ0KPiA+PiBTeXN0ZW0gUkFNICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDc0ICAgICAgICA1My4yJQ0KPiA+PiBQZXJzaXN0ZW50IE1l bW9yeSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDU1ICAgICAgICAzOS42JQ0KPiA+ PiBOL0EgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwICAg ICAgICAgNy4yJQ0KPiA+Pg0KPiA+PiBTaWduZWQtb2ZmLWJ5OiBLYW4gTGlhbmcgPEthbi5saWFu Z0BpbnRlbC5jb20+DQo+ID4+IC0tLQ0KPiA+Pg0KPiA+PiBDaGFuZ2VzIHNpbmNlIFYxOg0KPiA+ PiAgLSBEbyBub3QgbWl4IERMQSBhbmQgTG9hZCBMYXRlbmN5LiBEbyBub3QgY29tcGFyZSB0aGUg bG9hZHMgYW5kIHN0b3Jlcy4NCj4gPj4gICAgT25seSBwcm9maWxlIHRoZSBsb2Fkcy4NCj4gPj4g IC0gVXNlIGV2ZW50IG5hbWUgdG8gcmVwbGFjZSB0aGUgUkFXIGV2ZW50DQo+ID4+DQo+ID4+ICB0 b29scy9wZXJmL3NjcmlwdHMvcHl0aG9uL2Jpbi9tZW0tcGh5cy1hZGRyLXJlY29yZCB8IDE5ICsr KysrDQo+ID4+ICB0b29scy9wZXJmL3NjcmlwdHMvcHl0aG9uL2Jpbi9tZW0tcGh5cy1hZGRyLXJl cG9ydCB8ICAzICsNCj4gPj4gIHRvb2xzL3BlcmYvc2NyaXB0cy9weXRob24vbWVtLXBoeXMtYWRk ci5weSAgICAgICAgIHwgOTcNCj4gPj4gKysrKysrKysrKysrKysrKysrKysrKw0KPiA+PiAgLi4u L3V0aWwvc2NyaXB0aW5nLWVuZ2luZXMvdHJhY2UtZXZlbnQtcHl0aG9uLmMgICAgfCAgMiArDQo+ ID4+ICA0IGZpbGVzIGNoYW5nZWQsIDEyMSBpbnNlcnRpb25zKCspDQo+ID4+ICBjcmVhdGUgbW9k ZSAxMDA2NDQgdG9vbHMvcGVyZi9zY3JpcHRzL3B5dGhvbi9iaW4vbWVtLXBoeXMtYWRkci0NCj4g cmVjb3JkDQo+ID4+ICBjcmVhdGUgbW9kZSAxMDA2NDQgdG9vbHMvcGVyZi9zY3JpcHRzL3B5dGhv bi9iaW4vbWVtLXBoeXMtYWRkci0NCj4gcmVwb3J0DQo+ID4+ICBjcmVhdGUgbW9kZSAxMDA2NDQg dG9vbHMvcGVyZi9zY3JpcHRzL3B5dGhvbi9tZW0tcGh5cy1hZGRyLnB5DQo+ID4+DQo+ID4+IGRp ZmYgLS1naXQgYS90b29scy9wZXJmL3NjcmlwdHMvcHl0aG9uL2Jpbi9tZW0tcGh5cy1hZGRyLXJl Y29yZA0KPiA+PiBiL3Rvb2xzL3BlcmYvc2NyaXB0cy9weXRob24vYmluL21lbS1waHlzLWFkZHIt cmVjb3JkDQo+ID4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4+IGluZGV4IDAwMDAwMDAuLjVh ODc1MTINCj4gPj4gLS0tIC9kZXYvbnVsbA0KPiA+PiArKysgYi90b29scy9wZXJmL3NjcmlwdHMv cHl0aG9uL2Jpbi9tZW0tcGh5cy1hZGRyLXJlY29yZA0KPiA+PiBAQCAtMCwwICsxLDE5IEBADQo+ ID4+ICsjIS9iaW4vYmFzaA0KPiA+PiArDQo+ID4+ICsjDQo+ID4+ICsjIFByb2ZpbGluZyBwaHlz aWNhbCBtZW1vcnkgYnkgYWxsIHJldGlyZWQgbG9hZCBpbnN0cnVjdGlvbnMvdW9wcyBldmVudA0K PiA+PiArIyBNRU1fSU5TVF9SRVRJUkVELkFMTF9MT0FEUyBvciBNRU1fVU9QU19SRVRJUkVELkFM TF9MT0FEUw0KPiA+PiArIw0KPiA+PiArDQo+ID4+ICtsb2FkPWBwZXJmIGxpc3QgfCBncmVwIG1l bV9pbnN0X3JldGlyZWQuYWxsX2xvYWRzYA0KPiA+PiAraWYgWyAteiAiJGxvYWQiIF07IHRoZW4N Cj4gPj4gKyAgICAgbG9hZD1gcGVyZiBsaXN0IHwgZ3JlcCBtZW1fdW9wc19yZXRpcmVkLmFsbF9s b2Fkc2ANCj4gPj4gK2ZpDQo+ID4+ICtpZiBbIC16ICIkbG9hZCIgXTsgdGhlbg0KPiA+PiArICAg ICBlY2hvICJUaGVyZSBpcyBubyBldmVudCB0byBjb3VudCBhbGwgcmV0aXJlZCBsb2FkIGluc3Ry dWN0aW9ucy91b3BzLiINCj4gPj4gKyAgICAgZXhpdCAxDQo+ID4+ICtmaQ0KPiA+PiArDQo+ID4+ ICthcmc9JChlY2hvICRsb2FkIHwgdHIgLWQgJyAnKQ0KPiA+PiArYXJnPSIkYXJnOlAiDQo+ID4+ ICtwZXJmIHJlY29yZCAtLXBoeXMtZGF0YSAtZSAkYXJnICRADQo+ID4+IGRpZmYgLS1naXQgYS90 b29scy9wZXJmL3NjcmlwdHMvcHl0aG9uL2Jpbi9tZW0tcGh5cy1hZGRyLXJlcG9ydA0KPiA+PiBi L3Rvb2xzL3BlcmYvc2NyaXB0cy9weXRob24vYmluL21lbS1waHlzLWFkZHItcmVwb3J0DQo+ID4+ IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4+IGluZGV4IDAwMDAwMDAuLjNmMmI4NDcNCj4gPj4g LS0tIC9kZXYvbnVsbA0KPiA+PiArKysgYi90b29scy9wZXJmL3NjcmlwdHMvcHl0aG9uL2Jpbi9t ZW0tcGh5cy1hZGRyLXJlcG9ydA0KPiA+PiBAQCAtMCwwICsxLDMgQEANCj4gPj4gKyMhL2Jpbi9i YXNoDQo+ID4+ICsjIGRlc2NyaXB0aW9uOiByZXNvbHZlIHBoeXNpY2FsIGFkZHJlc3Mgc2FtcGxl cw0KPiA+PiArcGVyZiBzY3JpcHQgJEAgLXMgIiRQRVJGX0VYRUNfUEFUSCIvc2NyaXB0cy9weXRo b24vbWVtLXBoeXMtDQo+IGFkZHIucHkNCj4gPj4gZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvc2Ny aXB0cy9weXRob24vbWVtLXBoeXMtYWRkci5weQ0KPiA+PiBiL3Rvb2xzL3BlcmYvc2NyaXB0cy9w eXRob24vbWVtLXBoeXMtYWRkci5weQ0KPiA+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+PiBp bmRleCAwMDAwMDAwLi4xZDFmNzU3DQo+ID4+IC0tLSAvZGV2L251bGwNCj4gPj4gKysrIGIvdG9v bHMvcGVyZi9zY3JpcHRzL3B5dGhvbi9tZW0tcGh5cy1hZGRyLnB5DQo+ID4+IEBAIC0wLDAgKzEs OTcgQEANCj4gPj4gKyMgbWVtLXBoeXMtYWRkci5weTogUmVzb2x2ZSBwaHlzaWNhbCBhZGRyZXNz IHNhbXBsZXMNCj4gPj4gKyMgQ29weXJpZ2h0IChjKSAyMDE3LCBJbnRlbCBDb3Jwb3JhdGlvbi4N Cj4gPj4gKyMNCj4gPj4gKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQNCj4gPj4gKyMgdW5kZXIgdGhlIHRlcm1z IGFuZCBjb25kaXRpb25zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwNCj4gPj4g KyMgdmVyc2lvbiAyLCBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bi4NCj4gPj4gKyMNCj4gPj4gKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVA0KPiA+PiArIyBBTlkgV0FSUkFOVFk7 IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZg0KPiA+PiBNRVJDSEFOVEFCSUxJ VFkgb3INCj4gPj4gKyMgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYw0KPiBMaWNlbnNlDQo+ID4+IGZvcg0KPiA+PiArIyBtb3JlIGRl dGFpbHMuDQo+IA0KPiBNYXkgYmUgeW91IGNvdWxkIGNvbnNpZGVyIHVzaW5nIGFuIFNQRFggdGFn IGluc3RlYWQgb2YgdGhpcyBmaW5lIGJ1dA0KPiBsb25nIGxlZ2FsZXNlPw0KPiBTZWUgVGhvbWFz IGRvYyBwYXRjaGVzIFsxXSBmb3IgZGV0YWlscw0KPiANCj4gWzFdIGh0dHBzOi8vbGttbC5vcmcv bGttbC8yMDE3LzEyLzI4LzMyMw0KPg0KDQpUaGFua3MgUGhpbGlwcGUuDQpJIHdpbGwgdXBkYXRl IHRoZSBsaWNlbnNlIGluIFYzLg0KDQogDQo+ID4+ICsNCj4gPj4gK2Zyb20gX19mdXR1cmVfXyBp bXBvcnQgZGl2aXNpb24NCj4gPj4gK2ltcG9ydCBvcw0KPiA+PiAraW1wb3J0IHN5cw0KPiA+PiAr aW1wb3J0IHN0cnVjdA0KPiA+PiAraW1wb3J0IHJlDQo+ID4+ICtpbXBvcnQgYmlzZWN0DQo+ID4+ ICtpbXBvcnQgY29sbGVjdGlvbnMNCj4gPj4gKw0KPiA+PiArc3lzLnBhdGguYXBwZW5kKG9zLmVu dmlyb25bJ1BFUkZfRVhFQ19QQVRIJ10gKyBcDQo+ID4+ICsgICAgICcvc2NyaXB0cy9weXRob24v UGVyZi1UcmFjZS1VdGlsL2xpYi9QZXJmL1RyYWNlJykNCj4gPj4gKw0KPiA+PiArc3lzdGVtX3Jh bSA9IFtdDQo+ID4+ICtwbWVtID0gW10NCj4gPj4gK2YgPSBOb25lDQo+ID4+ICtsb2FkX21lbV90 eXBlX2NudCA9IGNvbGxlY3Rpb25zLkNvdW50ZXIoKQ0KPiA+PiArZXZlbnRfbmFtZSA9IE5vbmUN Cj4gDQo+IG5pdC4gbWF5IGJlIGl0IGRvZXMgbm90IG1hdHRlciB0b28gbXVjaC4uLi4gYnV0IHVz aW5nIGdsb2JhbHMNCj4gdGhyb3VnaG91dCBhcyBvcHBvc2VkIHRvIHJldHVybiB2YWx1ZXMgbWFr ZXMgdGhlIHNjcmlwdCBoYXJkZXIgdG8gcmVhZA0KPiBJTUhPLg0KPg0KDQpUaGUgcHl0aG9uIHNj cmlwdCBpcyBlbWJlZGRlZCBpbnRvIEMgY29kZS4gSXQgaW1wbGVtZW50cyB0aGUgc3RhbmRhcmQN CmludGVyZmFjZXMuIEkgdGhpbmsgdGhlIGdsb2JhbHMgc2hvdWxkIGJlIGEgZ29vZCB3YXkgdG8g c2hhcmUgYmV0d2Vlbg0KZnVuY3Rpb25zIGFuZCBhbW9uZyBlYWNoIGNhbGxzLiBPdGhlcndpc2Us IGl0IGhhcyB0byBjaGFuZ2UgdGhlIGludGVyZmFjZXMsDQp3aGljaCB3aWxsIGltcGFjdCBvdGhl ciBleGlzdGluZyBzY3JpcHRzLg0KDQpUaGFua3MsDQpLYW4NCiANCj4gPj4gKw0KPiA+PiArZGVm IHBhcnNlX2lvbWVtKCk6DQo+ID4+ICsgICAgIGdsb2JhbCBmDQo+ID4+ICsgICAgIGYgPSBvcGVu KCcvcHJvYy9pb21lbScsICdyJykNCj4gPj4gKyAgICAgZm9yIGksIGogaW4gZW51bWVyYXRlKGYp Og0KPiA+PiArICAgICAgICAgICAgIG0gPSByZS5zcGxpdCgnLXw6JyxqLDIpDQo+ID4+ICsgICAg ICAgICAgICAgaWYgbVsyXS5zdHJpcCgpID09ICdTeXN0ZW0gUkFNJzoNCj4gPj4gKyAgICAgICAg ICAgICAgICAgICAgIHN5c3RlbV9yYW0uYXBwZW5kKGxvbmcobVswXSwgMTYpKQ0KPiA+PiArICAg ICAgICAgICAgICAgICAgICAgc3lzdGVtX3JhbS5hcHBlbmQobG9uZyhtWzFdLCAxNikpDQo+ID4+ ICsgICAgICAgICAgICAgaWYgbVsyXS5zdHJpcCgpID09ICdQZXJzaXN0ZW50IE1lbW9yeSc6DQo+ ID4+ICsgICAgICAgICAgICAgICAgICAgICBwbWVtLmFwcGVuZChsb25nKG1bMF0sIDE2KSkNCj4g Pj4gKyAgICAgICAgICAgICAgICAgICAgIHBtZW0uYXBwZW5kKGxvbmcobVsxXSwgMTYpKQ0KPiA+ PiArDQo+ID4+ICtkZWYgcHJpbnRfbWVtb3J5X3R5cGUoKToNCj4gPj4gKyAgICAgcHJpbnQgIkV2 ZW50OiAlcyIgJSAoZXZlbnRfbmFtZSkNCj4gPj4gKyAgICAgcHJpbnQgIiUtNDBzICAlMTBzICAl MTBzXG4iICUgKCJNZW1vcnkgdHlwZSIsICJjb3VudCIsDQo+ID4+ICJwZXJjZW50YWdlIiksDQo+ ID4+ICsgICAgIHByaW50ICIlLTQwcyAgJTEwcyAgJTEwc1xuIiAlICgiLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIsIFwNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAiLS0tLS0tLS0tLS0iLCAiLS0tLS0tLS0tLS0iKSwNCj4gPj4gKyAg ICAgdG90YWwgPSBzdW0obG9hZF9tZW1fdHlwZV9jbnQudmFsdWVzKCkpDQo+ID4+ICsgICAgIGZv ciBtZW1fdHlwZSwgY291bnQgaW4gc29ydGVkKGxvYWRfbWVtX3R5cGVfY250Lm1vc3RfY29tbW9u KCksDQo+ID4+IFwNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBr ZXkgPSBsYW1iZGEoaywgdik6ICh2LCBrKSwgcmV2ZXJzZSA9DQo+ID4+IFRydWUpOg0KPiA+PiAr ICAgICAgICAgICAgIHByaW50ICIlLTQwcyAgJTEwZCAgJTEwLjFmJSVcbiIgJSAobWVtX3R5cGUs IGNvdW50LCAxMDAgKg0KPiA+PiBjb3VudCAvIHRvdGFsKSwNCj4gPj4gKw0KPiA+PiArZGVmIHRy YWNlX2JlZ2luKCk6DQo+ID4+ICsgICAgIHBhcnNlX2lvbWVtKCkNCj4gPj4gKw0KPiA+PiArZGVm IHRyYWNlX2VuZCgpOg0KPiA+PiArICAgICBwcmludF9tZW1vcnlfdHlwZSgpDQo+ID4+ICsgICAg IGYuY2xvc2UoKQ0KPiA+PiArDQo+ID4+ICtkZWYgaXNfc3lzdGVtX3JhbShwaHlzX2FkZHIpOg0K PiA+PiArICAgICAjL3Byb2MvaW9tZW0gaXMgc29ydGVkDQo+ID4+ICsgICAgIHBvc2l0aW9uID0g YmlzZWN0LmJpc2VjdChzeXN0ZW1fcmFtLCBwaHlzX2FkZHIpDQo+ID4+ICsgICAgIGlmIHBvc2l0 aW9uICUgMiA9PSAwOg0KPiA+PiArICAgICAgICAgICAgIHJldHVybiBGYWxzZQ0KPiA+PiArICAg ICByZXR1cm4gVHJ1ZQ0KPiA+PiArDQo+ID4+ICtkZWYgaXNfcGVyc2lzdGVudF9tZW0ocGh5c19h ZGRyKToNCj4gPj4gKyAgICAgcG9zaXRpb24gPSBiaXNlY3QuYmlzZWN0KHBtZW0sIHBoeXNfYWRk cikNCj4gPj4gKyAgICAgaWYgcG9zaXRpb24gJSAyID09IDA6DQo+ID4+ICsgICAgICAgICAgICAg cmV0dXJuIEZhbHNlDQo+ID4+ICsgICAgIHJldHVybiBUcnVlDQo+ID4+ICsNCj4gPj4gK2RlZiBm aW5kX21lbW9yeV90eXBlKHBoeXNfYWRkcik6DQo+ID4+ICsgICAgIGlmIHBoeXNfYWRkciA9PSAw Og0KPiA+PiArICAgICAgICAgICAgIHJldHVybiAiTi9BIg0KPiA+PiArICAgICBpZiBpc19zeXN0 ZW1fcmFtKHBoeXNfYWRkcik6DQo+ID4+ICsgICAgICAgICAgICAgcmV0dXJuICJTeXN0ZW0gUkFN Ig0KPiA+PiArDQo+ID4+ICsgICAgIGlmIGlzX3BlcnNpc3RlbnRfbWVtKHBoeXNfYWRkcik6DQo+ ID4+ICsgICAgICAgICAgICAgcmV0dXJuICJQZXJzaXN0ZW50IE1lbW9yeSINCj4gPj4gKw0KPiA+ PiArICAgICAjc2xvdyBwYXRoLCBzZWFyY2ggYWxsDQo+ID4+ICsgICAgIGYuc2VlaygwLCAwKQ0K PiA+PiArICAgICBmb3IgaiBpbiBmOg0KPiA+PiArICAgICAgICAgICAgIG0gPSByZS5zcGxpdCgn LXw6JyxqLDIpDQo+ID4+ICsgICAgICAgICAgICAgaWYgbG9uZyhtWzBdLCAxNikgPD0gcGh5c19h ZGRyIDw9IGxvbmcobVsxXSwgMTYpOg0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgcmV0dXJu IG1bMl0NCj4gPj4gKyAgICAgcmV0dXJuICJOL0EiDQo+ID4+ICsNCj4gPj4gK2RlZiBwcm9jZXNz X2V2ZW50KHBhcmFtX2RpY3QpOg0KPiA+PiArICAgICBuYW1lICAgICAgID0gcGFyYW1fZGljdFsi ZXZfbmFtZSJdDQo+ID4+ICsgICAgIHNhbXBsZSAgICAgPSBwYXJhbV9kaWN0WyJzYW1wbGUiXQ0K PiA+PiArICAgICBwaHlzX2FkZHIgID0gc2FtcGxlWyJwaHlzX2FkZHIiXQ0KPiA+PiArDQo+ID4+ ICsgICAgIGdsb2JhbCBldmVudF9uYW1lDQo+ID4+ICsgICAgIGlmIGV2ZW50X25hbWUgPT0gTm9u ZToNCj4gPj4gKyAgICAgICAgICAgICBldmVudF9uYW1lID0gbmFtZQ0KPiA+PiArICAgICBsb2Fk X21lbV90eXBlX2NudFtmaW5kX21lbW9yeV90eXBlKHBoeXNfYWRkcildICs9IDENCj4gPj4gZGlm ZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdXRpbC9zY3JpcHRpbmctZW5naW5lcy90cmFjZS1ldmVudC1w eXRob24uYw0KPiA+PiBiL3Rvb2xzL3BlcmYvdXRpbC9zY3JpcHRpbmctZW5naW5lcy90cmFjZS1l dmVudC1weXRob24uYw0KPiA+PiBpbmRleCBjNzE4N2YwLi44Y2Q2MzE3IDEwMDY0NA0KPiA+PiAt LS0gYS90b29scy9wZXJmL3V0aWwvc2NyaXB0aW5nLWVuZ2luZXMvdHJhY2UtZXZlbnQtcHl0aG9u LmMNCj4gPj4gKysrIGIvdG9vbHMvcGVyZi91dGlsL3NjcmlwdGluZy1lbmdpbmVzL3RyYWNlLWV2 ZW50LXB5dGhvbi5jDQo+ID4+IEBAIC01MDAsNiArNTAwLDggQEAgc3RhdGljIFB5T2JqZWN0ICpn ZXRfcGVyZl9zYW1wbGVfZGljdChzdHJ1Y3QNCj4gPj4gcGVyZl9zYW1wbGUgKnNhbXBsZSwNCj4g Pj4gICAgICAgICAgICAgICAgICAgICAgIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZyhzYW1w bGUtPnRpbWUpKTsNCj4gPj4gICAgICAgcHlkaWN0X3NldF9pdGVtX3N0cmluZ19kZWNyZWYoZGlj dF9zYW1wbGUsICJwZXJpb2QiLA0KPiA+PiAgICAgICAgICAgICAgICAgICAgICAgUHlMb25nX0Zy b21VbnNpZ25lZExvbmdMb25nKHNhbXBsZS0+cGVyaW9kKSk7DQo+ID4+ICsgICAgIHB5ZGljdF9z ZXRfaXRlbV9zdHJpbmdfZGVjcmVmKGRpY3Rfc2FtcGxlLCAicGh5c19hZGRyIiwNCj4gPj4gKyAg ICAgICAgICAgICAgICAgICAgIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZyhzYW1wbGUtDQo+ ID4+ID5waHlzX2FkZHIpKTsNCj4gPj4gICAgICAgc2V0X3NhbXBsZV9yZWFkX2luX2RpY3QoZGlj dF9zYW1wbGUsIHNhbXBsZSwgZXZzZWwpOw0KPiA+PiAgICAgICBweWRpY3Rfc2V0X2l0ZW1fc3Ry aW5nX2RlY3JlZihkaWN0LCAic2FtcGxlIiwgZGljdF9zYW1wbGUpOw0KPiA+Pg0KPiA+PiAtLQ0K PiA+PiAyLjcuNA0KPiA+DQo+IA0KPiANCj4gLS0NCj4gQ29yZGlhbGx5DQo+IFBoaWxpcHBlIE9t YnJlZGFubmUNCg==