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=-6.0 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, HK_RANDOM_FROM,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE, SPF_PASS autolearn=ham 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 C753BC49ED8 for ; Tue, 10 Sep 2019 15:19:04 +0000 (UTC) Received: from dpdk.org (dpdk.org [92.243.14.124]) by mail.kernel.org (Postfix) with ESMTP id 213932168B for ; Tue, 10 Sep 2019 15:19:04 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 213932168B Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=intel.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=dev-bounces@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 658C41EF49; Tue, 10 Sep 2019 17:19:03 +0200 (CEST) Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by dpdk.org (Postfix) with ESMTP id 60DFB1EF45 for ; Tue, 10 Sep 2019 17:19:01 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by orsmga101.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 10 Sep 2019 08:19:00 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.64,489,1559545200"; d="scan'208";a="184197612" Received: from fmsmsx104.amr.corp.intel.com ([10.18.124.202]) by fmsmga008.fm.intel.com with ESMTP; 10 Sep 2019 08:18:59 -0700 Received: from fmsmsx123.amr.corp.intel.com (10.18.125.38) by fmsmsx104.amr.corp.intel.com (10.18.124.202) with Microsoft SMTP Server (TLS) id 14.3.439.0; Tue, 10 Sep 2019 08:18:43 -0700 Received: from shsmsx103.ccr.corp.intel.com (10.239.4.69) by fmsmsx123.amr.corp.intel.com (10.18.125.38) with Microsoft SMTP Server (TLS) id 14.3.439.0; Tue, 10 Sep 2019 08:18:43 -0700 Received: from shsmsx102.ccr.corp.intel.com ([169.254.2.113]) by SHSMSX103.ccr.corp.intel.com ([169.254.4.140]) with mapi id 14.03.0439.000; Tue, 10 Sep 2019 23:18:41 +0800 From: "Wang, Haiyue" To: "Yigit, Ferruh" , "Richardson, Bruce" CC: Ray Kinsella , "dev@dpdk.org" , "Sun, Chenmin" Thread-Topic: [dpdk-dev] [RFC v2 1/3] ethdev: add the API for getting trace information Thread-Index: AQHVUYTDT/0YGy+MOU67JpkccwCfnab35B0AgACeXoCAJdFBAIABT/vQgAM1LQCAABWGAIAAAtKAgAAHf4CAAYRhMP//tyMAgACHaSD//4uOAIAA2KQA//+IywAAEUPtsA== Date: Tue, 10 Sep 2019 15:18:41 +0000 Message-ID: References: <1565665572-65495-1-git-send-email-haiyue.wang@intel.com> <1565665572-65495-2-git-send-email-haiyue.wang@intel.com> <20190812202436.662e6ca8@hermes.lan> <75f88e4b-97ca-7e1f-1385-8e69f659be7f@intel.com> <20190909124038.GA1889@bricha3-MOBL.ger.corp.intel.com> <8268b844-2815-5e0d-87cf-c6e9ca5c9f34@intel.com> <4672dfa1-a553-28fc-686e-1e14186a040a@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: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiMThhMzhlMTEtNDM0OS00MjI4LWIxZjUtZjgxMTgwN2E1MjY4IiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoiWFA2SUlTR2JWa3VQbDdOMVdaZENRN1UydFZQZE96bGFLSEYyajRLQ0xvend0Q0NsdmVDTVh5V3pDU3M5MCs4SyJ9 x-ctpclassification: CTP_NT dlp-product: dlpe-windows dlp-version: 11.2.0.6 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 Subject: Re: [dpdk-dev] [RFC v2 1/3] ethdev: add the API for getting trace information X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBZaWdpdCwgRmVycnVoDQo+IFNl bnQ6IFR1ZXNkYXksIFNlcHRlbWJlciAxMCwgMjAxOSAyMzowMw0KPiBUbzogV2FuZywgSGFpeXVl IDxoYWl5dWUud2FuZ0BpbnRlbC5jb20+OyBSaWNoYXJkc29uLCBCcnVjZSA8YnJ1Y2UucmljaGFy ZHNvbkBpbnRlbC5jb20+DQo+IENjOiBSYXkgS2luc2VsbGEgPG1kckBhc2hyb2UuZXU+OyBkZXZA ZHBkay5vcmc7IFN1biwgQ2hlbm1pbiA8Y2hlbm1pbi5zdW5AaW50ZWwuY29tPg0KPiBTdWJqZWN0 OiBSZTogW2RwZGstZGV2XSBbUkZDIHYyIDEvM10gZXRoZGV2OiBhZGQgdGhlIEFQSSBmb3IgZ2V0 dGluZyB0cmFjZSBpbmZvcm1hdGlvbg0KPiANCj4gT24gOS8xMC8yMDE5IDM6MTkgUE0sIFdhbmcs IEhhaXl1ZSB3cm90ZToNCj4gPj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPj4gRnJv bTogWWlnaXQsIEZlcnJ1aA0KPiA+PiBTZW50OiBUdWVzZGF5LCBTZXB0ZW1iZXIgMTAsIDIwMTkg MTc6MTUNCj4gPj4gVG86IFdhbmcsIEhhaXl1ZSA8aGFpeXVlLndhbmdAaW50ZWwuY29tPjsgUmlj aGFyZHNvbiwgQnJ1Y2UgPGJydWNlLnJpY2hhcmRzb25AaW50ZWwuY29tPg0KPiA+PiBDYzogUmF5 IEtpbnNlbGxhIDxtZHJAYXNocm9lLmV1PjsgZGV2QGRwZGsub3JnOyBTdW4sIENoZW5taW4gPGNo ZW5taW4uc3VuQGludGVsLmNvbT4NCj4gPj4gU3ViamVjdDogUmU6IFtkcGRrLWRldl0gW1JGQyB2 MiAxLzNdIGV0aGRldjogYWRkIHRoZSBBUEkgZm9yIGdldHRpbmcgdHJhY2UgaW5mb3JtYXRpb24N Cj4gPj4NCj4gPj4gT24gOS8xMC8yMDE5IDk6MzcgQU0sIFdhbmcsIEhhaXl1ZSB3cm90ZToNCj4g Pj4+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+Pj4+IEZyb206IFlpZ2l0LCBGZXJy dWgNCj4gPj4+PiBTZW50OiBUdWVzZGF5LCBTZXB0ZW1iZXIgMTAsIDIwMTkgMTY6MDcNCj4gPj4+ PiBUbzogV2FuZywgSGFpeXVlIDxoYWl5dWUud2FuZ0BpbnRlbC5jb20+OyBSaWNoYXJkc29uLCBC cnVjZSA8YnJ1Y2UucmljaGFyZHNvbkBpbnRlbC5jb20+DQo+ID4+Pj4gQ2M6IFJheSBLaW5zZWxs YSA8bWRyQGFzaHJvZS5ldT47IGRldkBkcGRrLm9yZzsgU3VuLCBDaGVubWluIDxjaGVubWluLnN1 bkBpbnRlbC5jb20+DQo+ID4+Pj4gU3ViamVjdDogUmU6IFtkcGRrLWRldl0gW1JGQyB2MiAxLzNd IGV0aGRldjogYWRkIHRoZSBBUEkgZm9yIGdldHRpbmcgdHJhY2UgaW5mb3JtYXRpb24NCj4gPj4+ Pg0KPiA+Pj4+IE9uIDkvMTAvMjAxOSA1OjM2IEFNLCBXYW5nLCBIYWl5dWUgd3JvdGU6DQo+ID4+ Pj4+IFRoYW5rcyBGZXJydWgsIEJydWNlLg0KPiA+Pj4+Pg0KPiA+Pj4+Pj4gLS0tLS1PcmlnaW5h bCBNZXNzYWdlLS0tLS0NCj4gPj4+Pj4+IEZyb206IFlpZ2l0LCBGZXJydWgNCj4gPj4+Pj4+IFNl bnQ6IE1vbmRheSwgU2VwdGVtYmVyIDksIDIwMTkgMjE6MTgNCj4gPj4+Pj4+IFRvOiBSaWNoYXJk c29uLCBCcnVjZSA8YnJ1Y2UucmljaGFyZHNvbkBpbnRlbC5jb20+DQo+ID4+Pj4+PiBDYzogV2Fu ZywgSGFpeXVlIDxoYWl5dWUud2FuZ0BpbnRlbC5jb20+OyBSYXkgS2luc2VsbGEgPG1kckBhc2hy b2UuZXU+OyBkZXZAZHBkay5vcmc7IFN1biwNCj4gPj4gQ2hlbm1pbg0KPiA+Pj4+Pj4gPGNoZW5t aW4uc3VuQGludGVsLmNvbT4NCj4gPj4+Pj4+IFN1YmplY3Q6IFJlOiBbZHBkay1kZXZdIFtSRkMg djIgMS8zXSBldGhkZXY6IGFkZCB0aGUgQVBJIGZvciBnZXR0aW5nIHRyYWNlIGluZm9ybWF0aW9u DQo+ID4+Pj4+Pg0KPiA+Pj4+Pj4gT24gOS85LzIwMTkgMTo1MCBQTSwgRmVycnVoIFlpZ2l0IHdy b3RlOg0KPiA+Pj4+Pj4+IE9uIDkvOS8yMDE5IDE6NDAgUE0sIEJydWNlIFJpY2hhcmRzb24gd3Jv dGU6DQo+ID4+Pj4+Pj4+IE9uIE1vbiwgU2VwIDA5LCAyMDE5IGF0IDEyOjIzOjM2UE0gKzAxMDAs IEZlcnJ1aCBZaWdpdCB3cm90ZToNCj4gPj4+Pj4+Pj4+IE9uIDkvNy8yMDE5IDM6NDIgQU0sIFdh bmcsIEhhaXl1ZSB3cm90ZToNCj4gPj4+Pj4+Pj4+Pj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0t LS0NCj4gPj4+Pj4+Pj4+Pj4gRnJvbTogWWlnaXQsIEZlcnJ1aA0KPiA+Pj4+Pj4+Pj4+PiBTZW50 OiBGcmlkYXksIFNlcHRlbWJlciA2LCAyMDE5IDIyOjIyDQo+ID4+Pj4+Pj4+Pj4+IFRvOiBSYXkg S2luc2VsbGEgPG1kckBhc2hyb2UuZXU+OyBXYW5nLCBIYWl5dWUgPGhhaXl1ZS53YW5nQGludGVs LmNvbT4NCj4gPj4+Pj4+Pj4+Pj4gQ2M6IGRldkBkcGRrLm9yZw0KPiA+Pj4+Pj4+Pj4+PiBTdWJq ZWN0OiBSZTogW2RwZGstZGV2XSBbUkZDIHYyIDEvM10gZXRoZGV2OiBhZGQgdGhlIEFQSSBmb3Ig Z2V0dGluZyB0cmFjZSBpbmZvcm1hdGlvbg0KPiA+Pj4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4+PiBP biA4LzEzLzIwMTkgMTo1MSBQTSwgUmF5IEtpbnNlbGxhIHdyb3RlOg0KPiA+Pj4+Pj4+Pj4+Pj4N Cj4gPj4+Pj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4+PiBPbiAxMy8wOC8yMDE5IDA0OjI0LCBTdGVw aGVuIEhlbW1pbmdlciB3cm90ZToNCj4gPj4+Pj4+Pj4+Pj4+PiBPbiBUdWUsIDEzIEF1ZyAyMDE5 IDExOjA2OjEwICswODAwDQo+ID4+Pj4+Pj4+Pj4+Pj4gSGFpeXVlIFdhbmcgPGhhaXl1ZS53YW5n QGludGVsLmNvbT4gd3JvdGU6DQo+ID4+Pj4+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+Pj4+Pj4gRW5o YW5jZSB0aGUgUE1EIHRvIHN1cHBvcnQgcmV0cmlldmluZyB0cmFjZSBpbmZvcm1hdGlvbiBsaWtl DQo+ID4+Pj4+Pj4+Pj4+Pj4+IFJ4L1R4IGJ1cnN0IHNlbGVjdGlvbiBldGMuDQo+ID4+Pj4+Pj4+ Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4+Pj4+IFNpZ25lZC1vZmYtYnk6IEhhaXl1ZSBXYW5nIDxoYWl5 dWUud2FuZ0BpbnRlbC5jb20+DQo+ID4+Pj4+Pj4+Pj4+Pj4+IC0tLQ0KPiA+Pj4+Pj4+Pj4+Pj4+ PiAgbGliL2xpYnJ0ZV9ldGhkZXYvcnRlX2V0aGRldi5jICAgICAgfCAxOCArKysrKysrKysrKysr KysrKysNCj4gPj4+Pj4+Pj4+Pj4+Pj4gIGxpYi9saWJydGVfZXRoZGV2L3J0ZV9ldGhkZXYuaCAg ICAgIHwgIDkgKysrKysrKysrDQo+ID4+Pj4+Pj4+Pj4+Pj4+ICBsaWIvbGlicnRlX2V0aGRldi9y dGVfZXRoZGV2X2NvcmUuaCB8ICA0ICsrKysNCj4gPj4+Pj4+Pj4+Pj4+Pj4gIDMgZmlsZXMgY2hh bmdlZCwgMzEgaW5zZXJ0aW9ucygrKQ0KPiA+Pj4+Pj4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4+Pj4+ PiBkaWZmIC0tZ2l0IGEvbGliL2xpYnJ0ZV9ldGhkZXYvcnRlX2V0aGRldi5jIGIvbGliL2xpYnJ0 ZV9ldGhkZXYvcnRlX2V0aGRldi5jDQo+ID4+Pj4+Pj4+Pj4+Pj4+IGluZGV4IDE3ZDE4M2UuLjYw OThmYWQgMTAwNjQ0DQo+ID4+Pj4+Pj4+Pj4+Pj4+IC0tLSBhL2xpYi9saWJydGVfZXRoZGV2L3J0 ZV9ldGhkZXYuYw0KPiA+Pj4+Pj4+Pj4+Pj4+PiArKysgYi9saWIvbGlicnRlX2V0aGRldi9ydGVf ZXRoZGV2LmMNCj4gPj4+Pj4+Pj4+Pj4+Pj4gQEAgLTQwODMsNiArNDA4MywyNCBAQCBydGVfZXRo X3R4X3F1ZXVlX2luZm9fZ2V0KHVpbnQxNl90IHBvcnRfaWQsIHVpbnQxNl90IHF1ZXVlX2lkLA0K PiA+Pj4+Pj4+Pj4+Pj4+PiAgfQ0KPiA+Pj4+Pj4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4+Pj4+PiAg aW50DQo+ID4+Pj4+Pj4+Pj4+Pj4+ICtydGVfZXRoX3RyYWNlX2luZm9fZ2V0KHVpbnQxNl90IHBv cnRfaWQsIHVpbnQxNl90IHF1ZXVlX2lkLA0KPiA+Pj4+Pj4+Pj4+Pj4+PiArCQkgICAgICAgZW51 bSBydGVfZXRoX3RyYWNlIHR5cGUsIGNoYXIgKmJ1ZiwgaW50IHN6KQ0KPiA+Pj4+Pj4+Pj4+Pg0K PiA+Pj4+Pj4+Pj4+PiBCZXR0ZXIgdG8gdXNlIHN0cnVjdCBhcyBhcmd1bWVudCBpbnN0ZWFkIG9m IGluZGl2aWR1YWwgdmFyaWFibGVzIGJlY2F1c2UgaXQgaXMNCj4gPj4+Pj4+Pj4+Pj4gZWFzaWVy IHRvIGV4dGVuZCB0aGUgc3RydWN0IGxhdGVyIGlmIG5lZWRlZC4NCj4gPj4+Pj4+Pj4+Pj4NCj4g Pj4+Pj4+Pj4+Pj4+Pj4gK3sNCj4gPj4+Pj4+Pj4+Pj4+Pj4gKwlzdHJ1Y3QgcnRlX2V0aF9kZXYg KmRldjsNCj4gPj4+Pj4+Pj4+Pj4+Pj4gKw0KPiA+Pj4+Pj4+Pj4+Pj4+PiArCVJURV9FVEhfVkFM SURfUE9SVElEX09SX0VSUl9SRVQocG9ydF9pZCwgLUVOT0RFVik7DQo+ID4+Pj4+Pj4+Pj4+Pj4+ ICsNCj4gPj4+Pj4+Pj4+Pj4+Pj4gKwlpZiAoYnVmID09IE5VTEwpDQo+ID4+Pj4+Pj4+Pj4+Pj4+ ICsJCXJldHVybiAtRUlOVkFMOw0KPiA+Pj4+Pj4+Pj4+Pj4+PiArDQo+ID4+Pj4+Pj4+Pj4+Pj4+ ICsJZGV2ID0gJnJ0ZV9ldGhfZGV2aWNlc1twb3J0X2lkXTsNCj4gPj4+Pj4+Pj4+Pj4+Pj4gKw0K PiA+Pj4+Pj4+Pj4+Pj4+PiArCVJURV9GVU5DX1BUUl9PUl9FUlJfUkVUKCpkZXYtPmRldl9vcHMt PnRyYWNlX2luZm9fZ2V0LCAtRU5PVFNVUCk7DQo+ID4+Pj4+Pj4+Pj4+Pj4+ICsNCj4gPj4+Pj4+ Pj4+Pj4+Pj4gKwlyZXR1cm4gZGV2LT5kZXZfb3BzLT50cmFjZV9pbmZvX2dldChkZXYsIHF1ZXVl X2lkLCB0eXBlLCBidWYsIHN6KTsNCj4gPj4+Pj4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4+Pj4+IFdo YXQgaWYgcXVldWVpZCBpcyBvdXQgb2YgYm91bmRzPw0KPiA+Pj4+Pj4+Pj4+Pj4+DQo+ID4+Pj4+ Pj4+Pj4+Pj4gVGhlIGJpZ2dlciBwcm9ibGVtIGlzIHRoYXQgdGhpcyBpbmZvcm1hdGlvbiBpcyBs aWtlIGEgbG9nIG1lc3NhZ2UNCj4gPj4+Pj4+Pj4+Pj4+PiBhbmQgdW5zdHJ1Y3R1cmVkLCB3aGlj aCBtYWtlcyBpdCBkZXZpY2Ugc3BlY2lmaWMgYW5kIHVzZWxlc3MgZm9yIGF1dG9tYXRpb24uDQo+ ID4+Pj4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4+Pj4gSU1ITyAtIHRoaXMgaXMgbXVjaCBiZXR0ZXIg aW1wbGVtZW50ZWQgYXMgYSBjYXBhYmlsaXR5IGJpdGZpZWxkLCB0aGF0DQo+ID4+Pj4+Pj4+Pj4+ PiBjYW4gYmUgcXVlcmllZC4NCj4gPj4+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+Pj4gKzEgdG8gcmV0 dXJuIHRoZSBkYXRhcGF0aCBjYXBhYmlsaXR5IGFzIGJpdGZpZWxkLg0KPiA+Pj4+Pj4+Pj4+Pg0K PiA+Pj4+Pj4+Pj4+PiBBbHNvICsxIHRvIGhhdmUgYSBuZXcgQVBJLA0KPiA+Pj4+Pj4+Pj4+PiAt IEkgYW0gbm90IHN1cmUgYWJvdXQgdGhlIEFQSSBuYW1lLCAncnRlX2V0aF90cmFjZV9pbmZvX2dl dCgpJywgY2FuIHdlIGZpbmQNCj4gPj4+Pj4+Pj4+Pj4gc29tZXRoaW5nIGJldHRlciBpbnN0ZWFk IG9mICd0cmFjZScgdGhlcmUuDQo+ID4+Pj4+Pj4+Pj4+IC0gSSB0aGluayB3ZSBzaG91bGQgbGlt aXQgdGhpcyBBUEkgb25seSB0byBnZXQgY3VycmVudCBkYXRhcGF0aCBjb25maWd1cmF0aW9uLA0K PiA+Pj4+Pj4+Pj4+PiBmb3IgY2xhcml0eSBvZiB0aGUgQVBJIGRvbid0IHJldHVybiBjYXBhYmls aXR5IG9yIG5vdCBkYXRhcGF0aCByZWxhdGVkIGNvbmZpZy4NCj4gPj4+Pj4+Pj4+Pj4NCj4gPj4+ Pj4+Pj4+Pj4gQWxzbyB0aGlzIGluZm9ybWF0aW9uIG5vdCBhbHdheXMgc3VwcG9ydGVkIGluIHF1 ZXVlIGxldmVsLCB3aGF0IGRvIHlvdSB0aGluaw0KPiA+Pj4+Pj4+Pj4+PiBoYXZpbmcgYWJpbGl0 eSB0byBnZXQgdGhpcyBpbmZvcm1hdGlvbiBpbiBwb3J0IGxldmVsLA0KPiA+Pj4+Pj4+Pj4+PiBs aWtlIHRoaXMgQVBJIGNhbiByZXR1cm4gYSBzdHJ1Y3QsIHdoaWNoIG1heSBoYXZlIGEgZmllbGQg dGhhdCBzYXlzIGlmIHRoZQ0KPiA+Pj4+Pj4+Pj4+PiBvdXRwdXQgaXMgZm9yIHF1ZXVlIG9yIHBv cnQsIG9yIHRoaXMgY2FuIGJlIGFub3RoZXIgYml0ZmllbGQsIHdoYXQgZG8geW91IHRoaW5rPw0K PiA+Pj4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4gI2RlZmluZSBSWF9TQ0FM QVIJKDFVTEwgPCAwKQ0KPiA+Pj4+Pj4+Pj4+ICNkZWZpbmUgUlhfVkVDVE9SX0FWWDIgIC4uLg0K PiA+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+IFdoYXQgYWJvdXQgaGF2aW5nIFJYX1ZFQ1RPUiB2YWx1 ZSwgbGF0ZXIgYW5vdGhlciBiaXQgZ3JvdXAgZm9yIHRoZSBkZXRhaWxzIG9mDQo+ID4+Pj4+Pj4+ PiB0aGUgdmVjdG9yaXphdGlvbjoNCj4gPj4+Pj4+Pj4+IFNTRQ0KPiA+Pj4+Pj4+Pj4gQVZYMg0K PiA+Pj4+Pj4+Pj4gQVZYNTEyDQo+ID4+Pj4+Pj4+PiBORU9ODQo+ID4+Pj4+Pj4+PiBBTFRJVkVD DQo+ID4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4gU2luY2UgYWJvdmUgb3B0aW9ucyBjYW4gZXhpc3Qg dG9nZXRoZXIsIHdoYXQgYWJvdXQgdXNpbmcgdmFsdWVzIGZvciB0aGVtIGluc3RlYWQNCj4gPj4+ Pj4+Pj4+IG9mIGJpdGZpZWxkcz8gUmVzZXJ2aW5nIDQgYml0cywgMl40ID0gMTYsIGNhbiBiZSBl bm91Z2ggSSB0aGluayBmb3IgbG9uZyB0ZXJtLg0KPiA+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4gUmF0 aGVyIHRoYW4gaGF2aW5nIG5hbWVkIHZlY3RvciB0eXBlcywgd2UganVzdCBuZWVkIHRvIHdvcnJ5 IGFib3V0IHRoZSBvbmVzDQo+ID4+Pj4+Pj4+IGZvciB0aGUgY3VycmVudCBhcmNoaXRlY3R1cmUu IFRoZXJlZm9yZSBJJ2Qgc3VnZ2VzdCBqdXN0IHVzaW5nIHZlY3Rvcg0KPiA+Pj4+Pj4+PiB3aWR0 aHMsIG9uZSBiaXQgZWFjaCBmb3IgMTZCLCAzMkIgYW5kIDY0QiB2ZWN0b3Igc3VwcG9ydC4gRm9y IHN1cHBvcnRpbmcNCj4gPj4+Pj4+Pj4gbXVsdGlwbGUgdmFsdWVzLCAxNiBjb21iaW5hdGlvbnMg aXMgbm90IGVub3VnaCBmb3IgYWxsIHRoZSBwb3NzaWJpbGl0aWVzLg0KPiA+Pj4+Pj4+Pg0KPiA+ Pj4+Pj4+DQo+ID4+Pj4+DQo+ID4+Pj4+IGVudW0gcnRlX2V0aF9idXJzdF9tb2RlX29wdGlvbiB7 DQo+ID4+Pj4+IAlCVVJTVF9TQ0FMQVIgPSAoMSA8PCAwKSwNCj4gPj4+Pj4gCUJVUlNUX1ZFQ1RP UiA9ICgxIDw8IDEpLA0KPiA+Pj4+Pg0KPiA+Pj4+PiAJQlVSU1RfVkVDVE9SX01PREVfTUFTSyA9 ICgweDNGIDw8IDIpLA0KPiA+Pj4+PiAJQlVSU1RfQUxUSVZFQyAgICAgICAgICA9ICgxIDw8IDIp LA0KPiA+Pj4+PiAJQlVSU1RfTkVPTiAgICAgICAgICAgICA9ICgyIDw8IDIpLA0KPiA+Pj4+PiAJ QlVSU1RfU1NFICAgICAgICAgICAgICA9ICgzIDw8IDIpLA0KPiA+Pj4+PiAJQlVSU1RfQVZYMiAg ICAgICAgICAgICA9ICg0IDw8IDIpLA0KPiA+Pj4+PiAJQlVSU1RfQVZYNTEyICAgICAgICAgICA9 ICg1IDw8IDIpLA0KPiA+Pj4+DQo+ID4+Pj4gRG8gd2UgbmVlZCB0byBoYXZlIGJpdGZpZWxkcyBm b3IgdGhpcywgSSB3YXMgc3VnZ2VzdGluZyByZXNlcnZlIDQgYml0cywgYml0IDItNQ0KPiA+Pj4+ IChpbmNsdXNpdmUpIGFuZCB1c2UgdGhlaXIgdmFsdWU6DQo+ID4+Pj4NCj4gPj4+PiBCVVJTVF9W RUNUT1JfTU9ERV9JRFggID0gMg0KPiA+Pj4+IEJVUlNUX1ZFQ1RPUl9NT0RFX1NJWkUgPSA0DQo+ ID4+Pj4gQlVSU1RfVkVDVE9SX01PREVfTUFTSyA9DQo+ID4+Pj4gCSgoMSA8PCBCVVJTVF9WRUNU T1JfTU9ERV9TSVpFKSAtIDEpIDw8IEJVUlNUX1ZFQ1RPUl9NT0RFX0lEWA0KPiA+Pj4+DQo+ID4+ Pj4gdmVjdG9yX21vZGUgPSAob3B0aW9ucyAmIEJVUlNUX1ZFQ1RPUl9NT0RFX01BU0spID4+IEJV UlNUX1ZFQ1RPUl9NT0RFX0lEWA0KPiA+Pj4+DQo+ID4+Pj4gaWYgKHZlY3Rvcl9tb2RlID09IDAp IC8vIEJVUlNUX1NTRQ0KPiA+Pj4+IGlmICh2ZWN0b3JfbW9kZSA9PSAxKSAvLyBCVVJTVF9BVlgy DQo+ID4+Pj4gaWYgKHZlY3Rvcl9tb2RlID09IDIpIC8vIEJVUlNUX0FWWDUxMg0KPiA+Pj4+IGlm ICh2ZWN0b3JfbW9kZSA9PSAzKSAvLyBCVVJTVF9ORU9ODQo+ID4+PiB9DQo+ID4+Pg0KPiA+Pg0K PiA+PiBJIGNhbiBzZWUgaG93IHlvdSBpbnRlbmRlZCB1c2UgaXQsIG9ubHkgdGhleSBkb24ndCBu ZWVkIHRvIGJlIGJpdGZpZWxkIGFuZCB1c2luZw0KPiA+PiB3aXRoIHZhbHVlIHNhdmVzIGJpdHMu DQo+ID4+IEFsc28gSSB0aGluayBnb29kIHRvIHJlc2VydmUgc29tZSBiaXRzIGZvciBmdXR1cmUg bW9kZXMuDQo+ID4+DQo+ID4NCj4gPiBJIHRoaW5rIEkgdW5kZXJzdGFuZCB5b3VyICd2YWx1ZSBz YXZlcyBiaXRzJyBjb25jZXJuIG5vdzoNCj4gPg0KPiA+IFdoYXQgeW91IG1lbnRpb25lZCB2YWx1 ZSBzdWNoIGFzIDEsIDIsIDMgaGFzIGJlZW4gKnNoaWZ0ZWQqIGFzIG5ldyBvcHRpb25zOiAoMSA8 PCAyKSwNCj4gPiAoMiA8PCAyKSwgKDMgPDwgMikuIFRoZSAqc2hpZnRlZCogdmFsdWUgc2VlbXMg YmUgZWFzaWx5IGZvciB1c2luZywgbGlrZSwgeW91IGRvbid0DQo+ID4gbmVlZCB0byByZS1kZWZp bmUgYW5vdGhlciBlbnVtIGxpa2UgZW51bSAuLi52ZWN0b3JfbW9kZSB7IFNTRSwgQVZYMiB9IGZv ciBhY2Nlc3NpbmcuDQo+ID4gQW5kIHdlIGNhbiBleHRyYWN0IHRoZSB2ZWN0b3IgbW9kZSBlYXN5 OiBvcHRpb25zICYgQlVSU1RfVkVDVE9SX01PREVfTUFTSywgbm8gbmVlZCB0bw0KPiA+IHNoaWZ0 IHJpZ2h0IGFnYWluIGZvciBnZXR0aW5nIHRoZSBwdXJlIG51bWJlci4gQW5kIGZvciBkaXNwbGF5 aW5nIG5hbWUsIGl0IGFsc28gc2hvdWxkDQo+ID4gYmUgY29uc2lzdGVudDoNCj4gPiAJLi4uDQo+ ID4gCWNhc2UgUlRFX0VUSF9CVVJTVF9WRUNUT1I6IHJldHVybiAiVmVjdG9yIjsNCj4gPiAJY2Fz ZSBSVEVfRVRIX0JVUlNUX0FMVElWRUM6IHJldHVybiAiQWx0aVZlYyI7DQo+ID4gCWNhc2UgUlRF X0VUSF9CVVJTVF9ORU9OOiByZXR1cm4gIk5lb24iOw0KPiA+DQo+IA0KPiBZZXAsIHRoaXMgaXMg d2hhdCBJIHdhcyBzdWdnZXN0aW5nLCBhZ3JlZSB0aGF0IGJpdHdpc2UgaXMgYSBsaXR0bGUgZWFz aWVyLCBhbmQNCj4gc3BlY2lhbGx5IGFmdGVyIGhhdmluZyBzZXBhcmF0ZSBSeC9UeCBBUElzIHRo ZXJlIGFyZSBlbm91Z2ggcm9vbSBpbiB0aGUNCj4gdmFyaWFibGUsIHNvIG9rIHdpdGggeW91ciBz dWdnZXN0aW9uLg0KPiBCdXQgcGxlYXNlIHJlc2VydmUgc29tZSBhZGRpdGlvbmFsIHJvb20gZnV0 dXJlIHZlY3RvcmlzYXRpb24gbW9kZXMsIEkgd291bGQgc2F5DQo+IG92ZXJhbGwgMTQgd291bGQg YmUgZ29vZCwgc28gZmlyc3Qgd29yZCBjYW4gYmUgZm9yIG1vZGVzLg0KDQpHb3QgaXQsIHdpbGwg Y2hhbmdlIDQgYml0cyBmb3IgdmVjdG9yIG1vZGUgZm9yIHNhdmluZyB0aGUgYml0IHNwYWNlLg0K