From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 35C2DA0350; Wed, 24 Jun 2020 10:38:46 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id DCD431D92A; Wed, 24 Jun 2020 10:38:44 +0200 (CEST) Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on2047.outbound.protection.outlook.com [40.107.22.47]) by dpdk.org (Postfix) with ESMTP id 24A861D736 for ; Wed, 24 Jun 2020 10:38:43 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=hLbiYhwAwvVHc7jHFoaHuxjLzfBPjeMkcaiSmM7klpF5KibC3Cq2rQgXG4auVq9U/f/LsTfW8Wd4zTxxpJhaH8qL0ajQ+KuQLfe7c7J8sm2ntPIm3AVs7o1UdA1KrY+BmWG1Wu6uz4oLx4QWRAYi8Cuw/DACaSCM+M/exGluwcPVfJdlygNI7QT6vLXnYSfEl+S4L5G33cjiN5slSULC8r9AT5Ksd18oOXZlnU8jAiJhxi698liYwr4OKG/a+8jChBHNiseDSwHlLYLy9wKsSPkVrXTxzDxrfavMezSuFg5qMZ1h9XfG9sGsSZJTrgvC/Q0hLqLr7XuK15DZPg1szA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=aALYeLtKyHHvMo+hcw4qgE3i+6wrtHTwEEzayFNwZeI=; b=I48yY5sTjm9Cuy78x0s+8kxGQRSxDSD883fgYAWzJyfKwOyQxVUYppT7C3hSQ/Qi5n0jHNSYaeLQWYeN1DErnS8+FjKMb4CG9z0KckAbw9KU2s+sOVTtuh6mR0C7RP+K2kQK4Twp0i2GDoh0Z4EV7TISNLlz+KhKOJmHFYLymEhbEwheRcPQ521YXu0W/w7v/CXIGBvs5iHB7q7hD+rFY5RACsVU66JJPZ++VB4/TBlhChZQe0G4i7GkNSK87TWFPCpjz5NAV8foje1B2vihhkJGdFgom1aSGqJmCFlmassSw+v59q8IIfIffMyMGNzbvmVisCnL2HHoTYwVdTiq5A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mellanox.com; dmarc=pass action=none header.from=mellanox.com; dkim=pass header.d=mellanox.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=aALYeLtKyHHvMo+hcw4qgE3i+6wrtHTwEEzayFNwZeI=; b=exkyUaz3MT0p/LYCfbo3gE6nsIFJRkeQ9hrl6acsJJXy7d9XlK0ksInSG0gLUIUijXeZWo4W4ffs4ryvwBF53hFgWXijotUMXM3Gh8XqFxfr/9UaklHt6H3+wylTJMvDpsmz0IpRN3PEJBIAdpqzmG0phmeJZRsTiW/9rSceBlk= Received: from AM0PR0502MB4019.eurprd05.prod.outlook.com (2603:10a6:208:f::11) by AM4PR0501MB2722.eurprd05.prod.outlook.com (2603:10a6:200:5a::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3109.24; Wed, 24 Jun 2020 08:38:42 +0000 Received: from AM0PR0502MB4019.eurprd05.prod.outlook.com ([fe80::b189:d782:4c74:7998]) by AM0PR0502MB4019.eurprd05.prod.outlook.com ([fe80::b189:d782:4c74:7998%7]) with mapi id 15.20.3131.021; Wed, 24 Jun 2020 08:38:41 +0000 From: Matan Azrad To: Maxime Coquelin , Xiao Wang CC: "dev@dpdk.org" Thread-Topic: [PATCH v1 3/4] vhost: improve device ready definition Thread-Index: AQHWRY1+WLgdYR0e1E+Ph0x8zoCWqqjfjwYAgAA4hqCAAC+iAIACniawgAG2/YCAAAcQgIAAB3QAgAAM1OCAAC/AgIAACy5AgAAclQCAAAzpQIAAEnUAgAEB7XCAABMiAIAAIg9ggAArKoCAAAwJcIAACxKAgADwxbCAAByCAIAAFDag Date: Wed, 24 Jun 2020 08:38:41 +0000 Message-ID: References: <1592497686-433697-1-git-send-email-matan@mellanox.com> <62311463-2bc1-7f8b-1ec0-da31418e1d75@redhat.com> <6a2d8143-e48d-cdef-5b16-1c340d99b1ae@redhat.com> <3572c65c-394c-496f-483c-a57019550339@redhat.com> <7c6bd0b2-8657-3c34-ab1f-f397c39ea2ec@redhat.com> <0cde445d-7008-b4e0-9f3c-8e7d59f2751d@redhat.com> In-Reply-To: <0cde445d-7008-b4e0-9f3c-8e7d59f2751d@redhat.com> Accept-Language: en-US, he-IL Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: redhat.com; dkim=none (message not signed) header.d=none;redhat.com; dmarc=none action=none header.from=mellanox.com; x-originating-ip: [77.124.38.174] x-ms-publictraffictype: Email x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: 916da431-59d4-44cc-a98f-08d81819ffea x-ms-traffictypediagnostic: AM4PR0501MB2722: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:10000; x-forefront-prvs: 0444EB1997 x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: ME/TOt/+u+XFGj8Lve+hM/h1+0wOgJxhv92IYMSAZcCMEjehgTdnvU6avOr09rxjfjeLkBS1Q9nmbEtI0ge6HQ0GPy0WcgJtHxUPMudKzNSSbF7TbIJSYkoiFJKoqctzq737KksISbhGRkZOk1MoM8DaEbIwHc4xEkZiTcczSVtNJxJP49nO1mG8sWswHi+7Lu3SAXBW0mkGGGkK2w/t3jGp3B0moJDioNU4Ya71shfJrmy3YOjFqpTwcearfUZdLO1z6iut+ESFcHFYJFc4J2lutN4bH/Qy/s3eFLEr/+ZGf7FwMzmsb0QfBJYgHa3NAb1pUbfYFjLWeHHXIACNaQ== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM0PR0502MB4019.eurprd05.prod.outlook.com; PTR:; CAT:NONE; SFTY:; SFS:(4636009)(346002)(366004)(136003)(396003)(39860400002)(376002)(66446008)(66946007)(66476007)(64756008)(76116006)(66556008)(8936002)(8676002)(55016002)(53546011)(33656002)(478600001)(71200400001)(26005)(6506007)(7696005)(2906002)(186003)(4326008)(9686003)(316002)(86362001)(30864003)(110136005)(83380400001)(52536014)(5660300002); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata: XtsnsfJfB/17nO3htb88jdtGEz3H2RCXv9mJxmVTRkS9OyToZ/MegrKd344Qak2IvVy0YTYoa8M/U7hIT0eIgw4uCR9RpxQymwq5pQd5WcKu9k0aAFTw/0fDwjMH+6qEXgj6+PwY3xJA7BAEfX5q+jMAxeNN6OxD+s+hxABLQxEwlioCOC1VseRY8czMxad0hcbb2DFWQLCsddchCUAX1Td/o7KxUVNLc3Q+NGDhptb6EtHK3DoGn1/h3JDjpO9xPN8wYpWx8G2xwgaT0b4CNt/GOgZeg40gz+AR1yE4MCuOu//q3gxvosFHCoJQgiq74t5qqgM8XK1s79cC3JNysvAxbc2HmZtpJzqowjXjm86+zzeqLoeYiFHhrnE79hoWSgrkPkb8lTXBuAJuPT3/74RceXpQrd2cnOBb7F8JW6ZjUl7oQFE/60+OlIklkH2VAlYQx4lJQPVpcDZ0bJJwkErMxAyzfL8a8Rja4830wi7xjHBsLpErbcXKv6DSnLTM x-ms-exchange-transport-forked: True Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 916da431-59d4-44cc-a98f-08d81819ffea X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Jun 2020 08:38:41.8593 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: c7p1aCOtT4BOkY5JzBbOH6A/U7mI4nQ8Q6xmp4csanEOJvMyDzD3sICxidkeuMoVjlX8lgeWCzdHia5dcX8w8g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM4PR0501MB2722 Subject: Re: [dpdk-dev] [PATCH v1 3/4] vhost: improve device ready definition 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" DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogTWF4aW1lIENvcXVlbGlu IDxtYXhpbWUuY29xdWVsaW5AcmVkaGF0LmNvbT4NCj4gU2VudDogV2VkbmVzZGF5LCBKdW5lIDI0 LCAyMDIwIDEwOjIyIEFNDQo+IFRvOiBNYXRhbiBBenJhZCA8bWF0YW5AbWVsbGFub3guY29tPjsg WGlhbyBXYW5nDQo+IDx4aWFvLncud2FuZ0BpbnRlbC5jb20+DQo+IENjOiBkZXZAZHBkay5vcmcN Cj4gU3ViamVjdDogUmU6IFtQQVRDSCB2MSAzLzRdIHZob3N0OiBpbXByb3ZlIGRldmljZSByZWFk eSBkZWZpbml0aW9uDQo+IA0KPiBHb29kIG1vcm5pbmcgTWF0YW4sDQo+IA0KPiBPbiA2LzI0LzIw IDc6NTQgQU0sIE1hdGFuIEF6cmFkIHdyb3RlOg0KPiA+IEhvIE1heGltZQ0KPiA+DQo+ID4gR29v ZCBtb3JuaW5nDQo+ID4NCj4gPiBGcm9tOiBNYXhpbWUgQ29xdWVsaW46DQo+ID4+IE9uIDYvMjMv MjAgNDo1MiBQTSwgTWF0YW4gQXpyYWQgd3JvdGU6DQo+ID4+Pg0KPiA+Pj4NCj4gPj4+PiAtLS0t LU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+Pj4+IEZyb206IE1heGltZSBDb3F1ZWxpbiA8bWF4 aW1lLmNvcXVlbGluQHJlZGhhdC5jb20+DQo+ID4+Pj4gU2VudDogVHVlc2RheSwgSnVuZSAyMywg MjAyMCA0OjU2IFBNDQo+ID4+Pj4gVG86IE1hdGFuIEF6cmFkIDxtYXRhbkBtZWxsYW5veC5jb20+ OyBYaWFvIFdhbmcNCj4gPj4+PiA8eGlhby53LndhbmdAaW50ZWwuY29tPg0KPiA+Pj4+IENjOiBk ZXZAZHBkay5vcmcNCj4gPj4+PiBTdWJqZWN0OiBSZTogW1BBVENIIHYxIDMvNF0gdmhvc3Q6IGlt cHJvdmUgZGV2aWNlIHJlYWR5IGRlZmluaXRpb24NCj4gPj4+Pg0KPiA+Pj4+IEhpIE1hdGFuLA0K PiA+Pj4+DQo+ID4+Pj4gT24gNi8yMy8yMCAxOjUzIFBNLCBNYXRhbiBBenJhZCB3cm90ZToNCj4g Pj4+Pj4NCj4gPj4+Pj4NCj4gPj4+Pj4gRnJvbTogTWF4aW1lIENvcXVlbGluOg0KPiA+Pj4+Pj4g T24gNi8yMy8yMCAxMTowMiBBTSwgTWF0YW4gQXpyYWQgd3JvdGU6DQo+ID4+Pj4+Pj4NCj4gPj4+ Pj4+Pg0KPiA+Pj4+Pj4+IEZyb206IE1heGltZSBDb3F1ZWxpbjoNCj4gPj4+Pj4+Pj4gT24gNi8y Mi8yMCA1OjUxIFBNLCBNYXRhbiBBenJhZCB3cm90ZToNCj4gPj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+ Pg0KPiA+Pj4+Pj4+Pj4gRnJvbTogTWF4aW1lIENvcXVlbGluOg0KPiA+Pj4+Pj4+Pj4+IE9uIDYv MjIvMjAgMzo0MyBQTSwgTWF0YW4gQXpyYWQgd3JvdGU6DQo+ID4+Pj4+Pj4+Pj4+DQo+ID4+Pj4+ Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4+IEZyb206IE1heGltZSBDb3F1ZWxpbjoNCj4gPj4+Pj4+Pj4+ Pj4+IFNlbnQ6IE1vbmRheSwgSnVuZSAyMiwgMjAyMCAzOjMzIFBNDQo+ID4+Pj4+Pj4+Pj4+PiBU bzogTWF0YW4gQXpyYWQgPG1hdGFuQG1lbGxhbm94LmNvbT47IFhpYW8gV2FuZw0KPiA+Pj4+Pj4+ Pj4+Pj4gPHhpYW8udy53YW5nQGludGVsLmNvbT4NCj4gPj4+Pj4+Pj4+Pj4+IENjOiBkZXZAZHBk ay5vcmcNCj4gPj4+Pj4+Pj4+Pj4+IFN1YmplY3Q6IFJlOiBbUEFUQ0ggdjEgMy80XSB2aG9zdDog aW1wcm92ZSBkZXZpY2UgcmVhZHkNCj4gPj4+Pj4+Pj4+Pj4+IGRlZmluaXRpb24NCj4gPj4+Pj4+ Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+Pj4+IE9u IDYvMjIvMjAgMTI6MDYgUE0sIE1hdGFuIEF6cmFkIHdyb3RlOg0KPiA+Pj4+Pj4+Pj4+Pj4+DQo+ ID4+Pj4+Pj4+Pj4+Pj4gSGkgTWF4aW1lDQo+ID4+Pj4+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+Pj4+ PiBGcm9tOiBNYXhpbWUgQ29xdWVsaW4gPG1heGltZS5jb3F1ZWxpbkByZWRoYXQuY29tPg0KPiA+ Pj4+Pj4+Pj4+Pj4+PiBTZW50OiBNb25kYXksIEp1bmUgMjIsIDIwMjAgMTE6NTYgQU0NCj4gPj4+ Pj4+Pj4+Pj4+Pj4gVG86IE1hdGFuIEF6cmFkIDxtYXRhbkBtZWxsYW5veC5jb20+OyBYaWFvIFdh bmcNCj4gPj4+Pj4+Pj4+Pj4+Pj4gPHhpYW8udy53YW5nQGludGVsLmNvbT4NCj4gPj4+Pj4+Pj4+ Pj4+Pj4gQ2M6IGRldkBkcGRrLm9yZw0KPiA+Pj4+Pj4+Pj4+Pj4+PiBTdWJqZWN0OiBSZTogW1BB VENIIHYxIDMvNF0gdmhvc3Q6IGltcHJvdmUgZGV2aWNlIHJlYWR5DQo+ID4+Pj4+Pj4+Pj4+Pj4+ IGRlZmluaXRpb24NCj4gPj4+Pj4+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+Pj4+Pj4NCj4gPj4+Pj4+ Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+Pj4+Pj4gT24gNi8yMi8yMCAxMDo0MSBBTSwgTWF0YW4gQXpy YWQgd3JvdGU6DQo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4gVGhlIGlzc3VlIGlzIGlmIHlvdSBvbmx5IGNo ZWNrIHJlYWR5IHN0YXRlIG9ubHkgYmVmb3JlDQo+ID4+Pj4+Pj4+Pj4+Pj4+Pj4gYW5kIGFmdGVy IHRoZSBtZXNzYWdlIGFmZmVjdGluZyB0aGUgcmluZyBpcyBoYW5kbGVkLCBpdA0KPiA+Pj4+Pj4+ Pj4+Pj4+Pj4+IGNhbiBiZSByZWFkeSBhdCBib3RoIHN0YWdlcywgd2hpbGUgdGhlIHJpbmdzIGhh dmUNCj4gPj4+Pj4+Pj4+Pj4+Pj4+PiBjaGFuZ2VkIGFuZCBzdGF0ZSBjaGFuZ2UgY2FsbGJhY2sg c2hvdWxkDQo+ID4+Pj4+Pj4+Pj4+Pj4+IGhhdmUgYmVlbiBjYWxsZWQuDQo+ID4+Pj4+Pj4+Pj4+ Pj4+PiBCdXQgaW4gdGhpcyB2ZXJzaW9uIEkgY2hlY2tlZCB0d2ljZSwgYmVmb3JlIG1lc3NhZ2UN Cj4gPj4+Pj4+Pj4+Pj4+Pj4+IGhhbmRsZXIgYW5kIGFmdGVyDQo+ID4+Pj4+Pj4+Pj4+Pj4+IG1l c3NhZ2UgaGFuZGxlciwgc28gaXQgc2hvdWxkIGNhdGNoIGFueSB1cGRhdGUuDQo+ID4+Pj4+Pj4+ Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4+Pj4+IE5vLCB0aGlzIGlzIG5vdCBlbm91Z2gsIHdlIGhhdmUg dG8gY2hlY2sgYWxzbyBkdXJpbmcgc29tZQ0KPiA+Pj4+Pj4+Pj4+Pj4+PiBoYW5kbGVycywgc28g dGhhdCB0aGUgcmVhZHkgc3RhdGUgaXMgaW52YWxpZGF0ZWQgYmVjYXVzZQ0KPiA+Pj4+Pj4+Pj4+ Pj4+PiBzb21ldGltZXMgaXQgd2lsbCBiZSByZWFkeSBiZWZvcmUgYW5kIGFmdGVyIHRoZSBtZXNz YWdlDQo+ID4+Pj4+Pj4+Pj4+Pj4+IGhhbmRsZXIgYnV0DQo+ID4+Pj4+Pj4+IHdpdGggZGlmZmVy ZW50IHZhbHVlcy4NCj4gPj4+Pj4+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+Pj4+Pj4gVGhhdCdzIHdo YXQgSSBkaWQgaW4gbXkgZXhhbXBsZSBwYXRjaDoNCj4gPj4+Pj4+Pj4+Pj4+Pj4gQEAgLTE4NDcs MTUgKzE4OTIsMTYgQEANCj4gPj4gdmhvc3RfdXNlcl9zZXRfdnJpbmdfa2ljayhzdHJ1Y3QNCj4g Pj4+Pj4+Pj4+PiB2aXJ0aW9fbmV0DQo+ID4+Pj4+Pj4+Pj4+Pj4+ICoqcGRldiwgc3RydWN0IFZo b3N0VXNlck1zZyAqbXNnLA0KPiA+Pj4+Pj4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4+Pj4+PiAuLi4N Cj4gPj4+Pj4+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+Pj4+Pj4gICAgICAgICBpZiAodnEtPmtpY2tm ZCA+PSAwKQ0KPiA+Pj4+Pj4+Pj4+Pj4+PiAgICAgICAgICAgICAgICAgY2xvc2UodnEtPmtpY2tm ZCk7DQo+ID4+Pj4+Pj4+Pj4+Pj4+ICsNCj4gPj4+Pj4+Pj4+Pj4+Pj4gKyAgICAgICB2cS0+a2lj a2ZkID0gVklSVElPX1VOSU5JVElBTElaRURfRVZFTlRGRDsNCj4gPj4+Pj4+Pj4+Pj4+Pj4gKw0K PiA+Pj4+Pj4+Pj4+Pj4+PiArICAgICAgIHZob3N0X3VzZXJfdXBkYXRlX3ZyaW5nX3N0YXRlKGRl diwgZmlsZS5pbmRleCk7DQo+ID4+Pj4+Pj4+Pj4+Pj4+ICsNCj4gPj4+Pj4+Pj4+Pj4+Pj4gICAg ICAgICB2cS0+a2lja2ZkID0gZmlsZS5mZDsNCj4gPj4+Pj4+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+ Pj4+Pj4NCj4gPj4+Pj4+Pj4+Pj4+Pj4gV2l0aG91dCB0aGF0LCB0aGUgcmVhZHkgY2hlY2sgd2ls bCByZXR1cm4gcmVhZHkgYmVmb3JlDQo+ID4+Pj4+Pj4+Pj4+Pj4+IGFuZCBhZnRlciB0aGUga2lj a2ZkIGNoYW5nZWQgYW5kIHRoZSBkcml2ZXIgd29uJ3QgYmUNCj4gbm90aWZpZWQuDQo+ID4+Pj4+ Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+Pj4+PiBUaGUgZHJpdmVyIHdpbGwgYmUgbm90aWZpZWQgaW4g dGhlIG5leHQNCj4gPj4+Pj4+Pj4+Pj4+PiBWSE9TVF9VU0VSX1NFVF9WUklOR19FTkFCTEUNCj4g Pj4+Pj4+Pj4+Pj4+IG1lc3NhZ2UgYWNjb3JkaW5nIHRvIHYxLg0KPiA+Pj4+Pj4+Pj4+Pj4+DQo+ ID4+Pj4+Pj4+Pj4+Pj4gT25lIG9mIG91ciBhc3N1bXB0aW9uIHdlIGFncmVlZCBvbiBpbiB0aGUg ZGVzaWduIG1haWwgaXMNCj4gPj4+Pj4+Pj4+Pj4+PiB0aGF0IGl0IGRvZXNuJ3QNCj4gPj4+Pj4+ Pj4+Pj4+IG1ha2Ugc2Vuc2UgdGhhdCBRRU1VIHdpbGwgY2hhbmdlIHF1ZXVlIGNvbmZpZ3VyYXRp b24NCj4gPj4gd2l0aG91dA0KPiA+Pj4+Pj4+Pj4+Pj4gZW5hYmxpbmcgdGhlIHF1ZXVlIGFnYWlu Lg0KPiA+Pj4+Pj4+Pj4+Pj4+IEJlY2F1c2Ugb2YgdGhhdCB3ZSBkZWNpZGVkIHRvIGZvcmNlIGNh bGxpbmcgc3RhdGUgY2FsbGJhY2sNCj4gPj4+Pj4+Pj4+Pj4+PiBhZ2FpbiB3aGVuDQo+ID4+Pj4+ Pj4+Pj4+PiBRRU1VIHNlbmQgVkhPU1RfVVNFUl9TRVRfVlJJTkdfRU5BQkxFKDEpIG1lc3NhZ2UN Cj4gPj4gZXZlbg0KPiA+Pj4+IGlmDQo+ID4+Pj4+PiB0aGUNCj4gPj4+Pj4+Pj4+PiBxdWV1ZSBp cw0KPiA+Pj4+Pj4+Pj4+Pj4gYWxyZWFkeSByZWFkeS4NCj4gPj4+Pj4+Pj4+Pj4+PiBTbyB3aGVu IGRyaXZlci9hcHAgc2VlIHN0YXRlIGVuYWJsZS0+ZW5hYmxlLCBpdCBzaG91bGQNCj4gPj4+Pj4+ Pj4+Pj4+PiB0YWtlIGludG8gYWNjb3VudA0KPiA+Pj4+Pj4+Pj4+Pj4gdGhhdCB0aGUgcXVldWUg Y29uZmlndXJhdGlvbiB3YXMgcHJvYmFibHkgY2hhbmdlZC4NCj4gPj4+Pj4+Pj4+Pj4+Pg0KPiA+ Pj4+Pj4+Pj4+Pj4+IEkgdGhpbmsgdGhhdCB0aGlzIGFzc3VtcHRpb24gaXMgY29ycmVjdCBhY2Nv cmRpbmcgdG8gdGhlDQo+ID4+Pj4+Pj4+Pj4+Pj4gUUVNVQ0KPiA+Pj4+IGNvZGUuDQo+ID4+Pj4+ Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4+Pj4gWWVzLCB0aGlzIHdhcyBvdXIgaW5pdGlhbCBhc3N1bXB0 aW9uLg0KPiA+Pj4+Pj4+Pj4+Pj4gQnV0IG5vdyBsb29raW5nIGludG8gdGhlIGRldGFpbHMgb2Yg dGhlIGltcGxlbWVudGF0aW9uLCBJDQo+ID4+Pj4+Pj4+Pj4+PiBmaW5kIGl0IGlzIGV2ZW4gY2xl YW5lciAmIGNsZWFyZXIgbm90IHRvIGRvIHRoaXMgYXNzdW1wdGlvbi4NCj4gPj4+Pj4+Pj4+Pj4+ DQo+ID4+Pj4+Pj4+Pj4+Pj4gVGhhdCdzIHdoeSBJIHByZWZlciB0byBjb2xsZWN0IGFsbCB0aGUg cmVhZHkgY2hlY2tzDQo+ID4+Pj4+Pj4+Pj4+Pj4gY2FsbGJhY2tzIChxdWV1ZSBzdGF0ZSBhbmQN Cj4gPj4+Pj4+Pj4+Pj4+IGRldmljZSBuZXdcY29uZikgdG8gb25lIGZ1bmN0aW9uIHRoYXQgd2ls bCBiZSBjYWxsZWQgYWZ0ZXINCj4gPj4+Pj4+Pj4+Pj4+IHRoZSBtZXNzYWdlDQo+ID4+Pj4+Pj4+ Pj4+PiBoYW5kbGVyOg0KPiA+Pj4+Pj4+Pj4+Pj4+IFBzZXVkbzoNCj4gPj4+Pj4+Pj4+Pj4+PiAg dmhvc3RfdXNlcl91cGRhdGVfcmVhZHlfc3RhdHVzZXMoKSB7DQo+ID4+Pj4+Pj4+Pj4+Pj4gCXN3 aXRjaCAobXNnKToNCj4gPj4+Pj4+Pj4+Pj4+PiAJCWNhc2UgZW5hYmxlOg0KPiA+Pj4+Pj4+Pj4+ Pj4+IAkJCWlmKGVuYWJsZSBpcyAxKQ0KPiA+Pj4+Pj4+Pj4+Pj4+IAkJCQlmb3JjZSBxdWV1ZSBz dGF0ZSA9MS4NCj4gPj4+Pj4+Pj4+Pj4+PiAJCWNhc2UgY2FsbGZkDQo+ID4+Pj4+Pj4+Pj4+Pj4g CQljYXNlIGtpY2tmZA0KPiA+Pj4+Pj4+Pj4+Pj4+IAkJCQkuLi4uLg0KPiA+Pj4+Pj4+Pj4+Pj4+ IAkJQ2hlY2sgcXVldWUgYW5kIGRldmljZSByZWFkeSArIGNhbGwgY2FsbGJhY2tzDQo+IGlmDQo+ ID4+Pj4+PiBuZWVkZWQuLg0KPiA+Pj4+Pj4+Pj4+Pj4+IAkJRGVmYXVsdA0KPiA+Pj4+Pj4+Pj4+ Pj4+IAkJCVJldHVybjsNCj4gPj4+Pj4+Pj4+Pj4+PiB9DQo+ID4+Pj4+Pj4+Pj4+Pg0KPiA+Pj4+ Pj4+Pj4+Pj4gSSBmaW5kIGl0IG1vcmUgbmF0dXJhbCB0byAiaW52YWxpZGF0ZSIgcmVhZHkgc3Rh dGUgd2hlcmUgaXQNCj4gPj4+Pj4+Pj4+Pj4+IGlzIGhhbmRsZWQgKGFmdGVyIHZyaW5nX2ludmFs aWRhdGUoKSwgYmVmb3JlIHNldHRpbmcgbmV3IEZEDQo+ID4+Pj4+Pj4+Pj4+PiBmb3IgY2FsbCAm IGtpY2ssIC4uLikNCj4gPj4+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+Pj4gSSB0aGluayB0aGF0IGlm IHlvdSBnbyB3aXRoIHRoaXMgZGlyZWN0aW9uLCBpZiB0aGUgZmlyc3QNCj4gPj4+Pj4+Pj4+Pj4g cXVldWUgcGFpciBpcyBpbnZhbGlkYXRlZCwNCj4gPj4+Pj4+Pj4+PiB5b3UgbmVlZCB0byBub3Rp ZnkgYXBwXGRyaXZlciBhbHNvIGFib3V0IGRldmljZSByZWFkeSBjaGFuZ2UuDQo+ID4+Pj4+Pj4+ Pj4+IEFsc28gaXQgd2lsbCBjYXVzZSAyIG5vdGlmaWNhdGlvbnMgdG8gdGhlIGRyaXZlciBpbnN0 ZWFkIG9mDQo+ID4+Pj4+Pj4+Pj4+IG9uZSBpbiBjYXNlIG9mIEZEDQo+ID4+Pj4+Pj4+Pj4gY2hh bmdlLg0KPiA+Pj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4gWW91J2xsIGFsd2F5cyBlbmQtdXAgd2l0 aCB0d28gbm90aWZpY2F0aW9ucywgZWl0aGVyIFFlbXUgaGFzDQo+ID4+Pj4+Pj4+Pj4gc2VudCB0 aGUgZGlzYWJsZSBhbmQgc28geW91J2xsIGhhdmUgb25lIG5vdGlmaWNhdGlvbiBmb3IgdGhlDQo+ ID4+Pj4+Pj4+Pj4gZGlzYWJsZSBhbmQgb25lIGZvciB0aGUgZW5hYmxlLCBvciBpdCBkaWRuJ3Qg c2VudCB0aGUgZGlzYWJsZQ0KPiA+Pj4+Pj4+Pj4+IGFuZCBpdCB3aWxsIGhhcHBlbiBhdCBvbGQg dmFsdWUgaW52YWxpZGF0aW9uIHRpbWUgYW5kIGFmdGVyDQo+ID4+Pj4+Pj4+Pj4gbmV3IHZhbHVl IGlzIHRha2VuIGludG8NCj4gPj4+Pj4+IGFjY291bnQuDQo+ID4+Pj4+Pj4+Pj4NCj4gPj4+Pj4+ Pj4+DQo+ID4+Pj4+Pj4+PiBJIGRvbid0IHNlZSBpdCBpbiBjdXJyZW50IFFFTVUgYmVoYXZpb3Iu DQo+ID4+Pj4+Pj4+PiBXaGVuIHdvcmtpbmcgTVEgSSBzZWUgdGhhdCBzb21lIHZpcnRxcyBnZXQg Y29uZmlndXJhdGlvbg0KPiA+PiBtZXNzYWdlDQo+ID4+Pj4+Pj4+PiB3aGlsZQ0KPiA+Pj4+Pj4+ PiB0aGV5IGFyZSBpbiBlbmFibGVkIHN0YXRlLg0KPiA+Pj4+Pj4+Pj4gVGhlbiwgZW5hYmxlIG1l c3NhZ2UgaXMgc2VudCBhZ2FpbiBsYXRlci4NCj4gPj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4gSSBndWVz cyB5b3UgbWVhbiB0aGUgZmlyc3QgcXVldWUgcGFpcj8gQW5kIGl0IHdvdWxkIG5vdCBiZSBpbg0K PiA+Pj4+Pj4+PiByZWFkeSBzdGF0ZSBhcyBpdCB3b3VsZCBiZSB0aGUgaW5pdGlhbCBjb25maWd1 cmF0aW9uIG9mIHRoZSBxdWV1ZT8NCj4gPj4+Pj4+Pg0KPiA+Pj4+Pj4+IEV2ZW4gYWZ0ZXIgaW5p dGlhbGl6YXRpb24gd2hlbiBxdWV1ZSBpcyByZWFkeS4NCj4gPj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4N Cj4gPj4+Pj4+Pj4+Pj4gV2h5IG5vdCB0byB0YWtlIHRoaXMgY29ycmVjdCBhc3N1bXB0aW9uIGFu ZCB1cGRhdGUgcmVhZHkNCj4gPj4+Pj4+Pj4+Pj4gc3RhdGUgb25seSBpbiBvbmUNCj4gPj4+Pj4+ Pj4+PiBwb2ludCBpbiB0aGUgY29kZSBpbnN0ZWFkIG9mIGRvaW5nIGl0IGluIGFsbCB0aGUNCj4g Pj4+Pj4+Pj4+PiBjb25maWd1cmF0aW9uIGhhbmRsZXJzDQo+ID4+Pj4+Pj4+IGFyb3VuZD8NCj4g Pj4+Pj4+Pj4+Pj4gSU1PLCBJdCBpcyBjb3JyZWN0LCBsZXNzIGludHJ1c2l2ZSwgc2ltcGxlciwg Y2xlYXJlciBhbmQgY2xlYW5lci4NCj4gPj4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4+IEkganVzdCBs b29rZWQgY2xvc2VyIGF0IHRoZSBWaG9zdC11c2VyIHNwZWMsIGFuZCBJJ20gbm8gbW9yZQ0KPiA+ Pj4+Pj4+Pj4+IHNvIHN1cmUgdGhpcyBpcyBhIGNvcnJlY3QgYXNzdW1wdGlvbjoNCj4gPj4+Pj4+ Pj4+Pg0KPiA+Pj4+Pj4+Pj4+ICJXaGlsZSBwcm9jZXNzaW5nIHRoZSByaW5ncyAod2hldGhlciB0 aGV5IGFyZSBlbmFibGVkIG9yDQo+ID4+Pj4+Pj4+Pj4gbm90KSwgY2xpZW50IG11c3Qgc3VwcG9y dCBjaGFuZ2luZyBzb21lIGNvbmZpZ3VyYXRpb24gYXNwZWN0cw0KPiA+Pj4+Pj4+Pj4+IG9uIHRo ZQ0KPiA+PiBmbHkuIg0KPiA+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+IE9rLCB0aGlzIGRvZXNuJ3Qg ZXhwbGFpbiBob3cgY29uZmlndXJhdGlvbiBpcyBjaGFuZ2VkIG9uIHRoZSBmbHkuDQo+ID4+Pj4+ Pj4+DQo+ID4+Pj4+Pj4+IEkgYWdyZWUgaXQgbGFja3MgYSBiaXQgb2YgY2xhcml0eS4NCj4gPj4+ Pj4+Pj4NCj4gPj4+Pj4+Pj4+IEFzIEkgbWVudGlvbmVkLCBRRU1VIHNlbmRzIGVuYWJsZSBtZXNz YWdlIGFsd2F5cyBhZnRlcg0KPiA+Pj4+Pj4+Pj4gY29uZmlndXJhdGlvbg0KPiA+Pj4+Pj4+PiBt ZXNzYWdlLg0KPiA+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+PiBZZXMsIGJ1dCB3ZSBzaG91bGQgbm90IGRv IGFzc3VtcHRpb25zIG9uIGN1cnJlbnQgUWVtdSB2ZXJzaW9uDQo+ID4+Pj4+Pj4+IHdoZW4gcG9z c2libGUuIEJldHRlciB0byBiZSBzYWZlIGFuZCBmb2xsb3cgdGhlIHNwZWNpZmljYXRpb24sDQo+ ID4+Pj4+Pj4+IGl0IHdpbGwgYmUgbW9yZQ0KPiA+Pj4+Pj4gcm9idXN0Lg0KPiA+Pj4+Pj4+PiBU aGVyZSBpcyBhbHNvIHRoZSBWaXJ0aW8tdXNlciBQTUQgdG8gdGFrZSBpbnRvIGFjY291bnQgZm9y DQo+IGV4YW1wbGUuDQo+ID4+Pj4+Pj4NCj4gPj4+Pj4+PiBJIHVuZGVyc3RhbmQgeW91ciBwb2lu dCBoZXJlIGJ1dCBkbyB5b3UgcmVhbGx5IHdhbnQgdG8gYmUgcmVhZHkNCj4gPj4+Pj4+PiBmb3Ig YW55DQo+ID4+Pj4+PiBjb25maWd1cmF0aW9uIHVwZGF0ZSBpbiBydW4gdGltZT8NCj4gPj4+Pj4+ PiBXaGF0IGRvZXMgaXQgbWVhbj8gSG93IGRhdGF0cGF0aCBzaG91bGQgaGFuZGxlIGNvbmZpZ3Vy YXRpb24NCj4gPj4+Pj4+PiBmcm9tDQo+ID4+Pj4+PiBjb250cm9sIHRocmVhZCBpbiBydW4gdGlt ZSB3aGlsZSB0cmFmZmljIGlzIG9uPw0KPiA+Pj4+Pj4+IEZvciBleGFtcGxlLCBjaGFuZ2luZyBx dWV1ZSBzaXplIFwgYWRkcmVzc2VzIG11c3Qgc3RvcCB0cmFmZmljDQo+ID4+IGJlZm9yZS4uLg0K PiA+Pj4+Pj4+IEFsc28gY2hhbmdpbmcgRkRzIGlzIHZlcnkgc2Vuc2l0aXZlLg0KPiA+Pj4+Pj4+ DQo+ID4+Pj4+Pj4gSXQgZG9lc24ndCBtYWtlIHNlbnNlIHRvIG1lLg0KPiA+Pj4+Pj4+DQo+ID4+ Pj4+Pj4gQWxzbywgYWNjb3JkaW5nIHRvICJvbiB0aGUgZmx5IiBkaXJlY3Rpb24gd2Ugc2hvdWxk IG5vdCBkaXNhYmxlDQo+ID4+Pj4+Pj4gdGhlIHF1ZXVlDQo+ID4+Pj4+PiB1bmxlc3MgZW5hYmxl IG1lc3NhZ2UgaXMgY29taW5nIHRvIGRpc2FibGUgaXQuDQo+ID4+Pj4+DQo+ID4+Pj4+IE5vIHJl c3BvbnNlLCBzbyBsb29rcyBsaWtlIHlvdSBhZ3JlZSB0aGF0IGl0IGRvZXNuJ3QgbWFrZSBzZW5z ZS4NCj4gPj4+Pg0KPiA+Pj4+IE5vLCBteSByZXBseSB3YXMgZ2VuZXJhbCB0byBhbGwgeW91ciBj b21tZW50cy4NCj4gPj4+Pg0KPiA+Pj4+IFdpdGggU1cgYmFja2VuZCwgSSBhZ3JlZSB3ZSBkb24n dCBuZWVkIHRvIGRpc2FibGUgdGhlIHJpbmdzIGluIGNhc2UNCj4gPj4+PiBvZiBhc3luY2hyb25v dXMgY2hhbmdlcyB0byB0aGUgcmluZyBiZWNhdXNlIHdlIHByb3RlY3QgaXQgd2l0aCBhDQo+ID4+ Pj4gbG9jaywgc28gd2UgYXJlIHN1cmUgdGhlIHJpbmcgd29uJ3QgYmUgYWNjZXNzZWQgYnkgYW5v dGhlciB0aHJlYWQNCj4gPj4+PiB3aGlsZSBkb2luZyB0aGUgY2hhbmdlLg0KPiA+Pj4+DQo+ID4+ Pj4gRm9yIHZEUEEgY2FzZSB0aGF0J3MgbW9yZSBwcm9ibGVtYXRpYyBiZWNhdXNlIHdlIGhhdmUg bm8gc3VjaA0KPiA+Pj4+IGxvY2tpbmcgbWVjaGFuaXNtLg0KPiA+Pj4+DQo+ID4+Pj4gRm9yIGV4 YW1wbGUgbWVtb3J5IGhvdHBsdWcsIFFlbXUgZG9lcyBub3Qgc2VlbSB0byBkaXNhYmxlIHRoZQ0K PiA+PiBxdWV1ZXMNCj4gPj4+PiBzbyB3ZSBuZWVkIHRvIHN0b3AgdGhlIHZEUEEgZGV2aWNlIG9u ZSB3YXkgb3IgYW5vdGhlciBzbyB0aGF0IGl0DQo+ID4+Pj4gZG9lcyBub3QgcHJvY2VzcyB0aGUg cmluZ3Mgd2hpbGUgdGhlIFZob3N0IGxpYiByZW1hcHMgdGhlIG1lbW9yeQ0KPiBhcmVhcy4NCj4g Pj4+Pg0KPiA+Pj4+Pj4+IEluIGFkZGl0aW9uOg0KPiA+Pj4+Pj4+IERvIHlvdSByZWFsbHkgd2Fu dCB0byB0b2dnbGUgdkRQQSBkcml2ZXJzXGFwcCBmb3IgYW55DQo+ID4+Pj4+Pj4gY29uZmlndXJh dGlvbg0KPiA+Pj4+Pj4gbWVzc2FnZT8gSXQgbWF5IGNhdXNlIHF1ZXVlIHJlY3JlYXRpb24gZm9y IGVhY2ggb25lIChhdCBsZWFzdCBmb3INCj4gPj4gbWx4NSkuDQo+ID4+Pj4+Pg0KPiA+Pj4+Pj4g SSB3YW50IHRvIGhhdmUgc29tZXRoaW5nIHJvYnVzdCBhbmQgbWFpbnRhaW5hYmxlLg0KPiA+Pj4+ Pg0KPiA+Pj4+PiBNZSB0b28uDQo+ID4+Pj4+DQo+ID4+Pj4+PiBUaGVzZSBtZXNzYWdlcyBhcnJp dmluZyBhZnRlciBhIHF1ZXVlIGhhdmUgYmVlbiBjb25maWd1cmVkIG9uY2UNCj4gPj4+Pj4+IGFy ZSByYXJlIGV2ZW50cywgYnV0IHRoaXMgaXMgdXN1YWxseSB0aGUga2luZCBvZiB0aGluZ3MgdGhh dA0KPiA+Pj4+Pj4gY2F1c2UgbWFpbnRlbmFuY2UNCj4gPj4+PiBidXJkZW4uDQo+ID4+Pj4+DQo+ ID4+Pj4+IEluIGNhc2Ugb2YgZ3Vlc3QgcG9sbCBtb2RlICh0ZXN0cG1kIHZpcnRpbykgd2UgYWxs IHRoZSB0aW1lIGdldA0KPiA+Pj4+PiBjYWxsZmQNCj4gPj4gdHdpY2UuDQo+ID4+Pj4NCj4gPj4+ PiBSaWdodC4NCj4gPj4+Pg0KPiA+Pj4+Pj4gSWYgeW91IGxvb2sgYXQgbXkgZXhhbXBsZSBwYXRj aCwgeW91IHdpbGwgdW5kZXJzdGFuZCB0aGF0IHdpdGggbXkNCj4gPj4+Pj4+IHByb3Bvc2FsLCB0 aGVyZSB3b24ndCBiZSBhbnkgbW9yZSBzdGF0ZSBjaGFuZ2Ugbm90aWZpY2F0aW9uIHRoYW4NCj4g Pj4+Pj4+IHdpdGggeW91ciBwcm9wb3NhbCB3aGVuIFFlbXUgb3IgYW55IG90aGVyIFZob3N0LXVz ZXIgbWFzdGVyDQo+IHNlbmQNCj4gPj4+Pj4+IGEgZGlzYWJsZSByZXF1ZXN0IGJlZm9yZSBzZW5k aW5nIHRoZSByZXF1ZXN0IHRoYXQgaW1wYWN0IHRoZQ0KPiA+Pj4+Pj4gcXVldWUNCj4gPj4gc3Rh dGUuDQo+ID4+Pj4+DQo+ID4+Pj4+IHdlIGRpZG4ndCB0YWxrIGFib3V0IGRpc2FibGUgdGltZSAt IHRoaXMgb25lIGlzIHZlcnkgc2ltcGxlLg0KPiA+Pj4+Pg0KPiA+Pj4+PiBZZXMsIEluIGNhc2Ug dGhlIHF1ZXVlIGlzIGRpc2FibGVkIHlvdXIgcHJvcG9zYWwgZG9lc24ndCBzZW5kDQo+ID4+Pj4+ IGV4dHJhDQo+ID4+Pj4gbm90aWZpY2F0aW9uIGFzIG15Lg0KPiA+Pj4+PiBCdXQgaW4gY2FzZSB0 aGUgcXVldWUgaXMgcmVhZHksIHlvdXIgcHJvcG9zYWwgc2VuZCBleHRyYSBub3QgcmVhZHkNCj4g Pj4+PiBub3RpZmljYXRpb24gZm9yIGtpa2ZkLGNhbGxmZCxzZXRfdnJpbmdfYmFzZSBjb25maWd1 cmF0aW9ucy4NCj4gPj4+Pg0KPiA+Pj4+IEkgdGhpbmsgdGhpcyBpcyBuZWNlc3NhcnkgZm9yIHN5 bmNocm9uaXphdGlvbiB3aXRoIHRoZSBWaG9zdC11c2VyDQo+ID4+Pj4gbWFzdGVyIChpbiBjYXNl IHRoZSBtYXN0ZXIgYXNrcyBmb3IgdGhpcyBzeW5jaHJvbml6YXRpb24sIGxpa2UNCj4gPj4+PiBz ZXRfbWVtX3RhYmxlIGZvciBpbnN0YW5jZSB3aGVuIHJlcGx5LWFjayBpcyBlbmFibGVkKS4NCj4g Pj4+Pg0KPiA+Pj4+Pj4gSXQganVzdCBhZGRzIG1vcmUgcm9idXN0bmVzcyBpZiB0aGlzIHVubGlr ZWx5IGV2ZW50IGhhcHBlbnMsIGJ5DQo+ID4+Pj4+PiBpbnZhbGlkYXRpbmcgdGhlIHJpbmcgc3Rh dGUgdG8gbm90IHJlYWR5IGJlZm9yZSBkb2luZyB0aGUgYWN0dWFsDQo+ID4+Pj4+PiByaW5nDQo+ ID4+Pj4gY29uZmlndXJhdGlvbiBjaGFuZ2UuDQo+ID4+Pj4+PiBTbyB0aGF0IHRoaXMgY29uZmln IGNoYW5nZSBpcyBub3QgbWlzc2VkIGJ5IHRoZSB2RFBBIGRyaXZlciBvcg0KPiA+Pj4+Pj4gdGhl DQo+ID4+Pj4gYXBwbGljYXRpb24uDQo+ID4+Pj4+DQo+ID4+Pj4+IE9uZSBtb3JlIGlzc3VlIGhl cmUgaXMgdGhhdCB0aGVyZSBpcyBzb21lIHRpbWUgdGhhdCBkZXZpY2UgaXMNCj4gPj4+Pj4gcmVh ZHkgKGFscmVhZHkNCj4gPj4+PiBjb25maWd1cmVkKSBhbmQgdGhlIGZpcnN0IHZpdHRxLXBhaXIg aXMgbm90IHJlYWR5ICh5b3VyIGludmFsaWRhdGUNCj4gPj4+PiBwcm9wb3NhbCBmb3Igc2V0X3Zy aW5nX2Jhc2UpLg0KPiA+Pj4+DQo+ID4+Pj4NCj4gPj4+Pg0KPiA+Pj4+PiBJdCBkb2VzbuKAmXQg c2F2ZSB0aGUgY29uY2VwdCB0aGF0IGRldmljZSBpcyByZWFkeSBvbmx5IGluIGNhc2UgdGhlDQo+ ID4+Pj4+IGZpcnN0IHZpcnRxLQ0KPiA+Pj4+IHBhaXIgaXMgcmVhZHkuDQo+ID4+Pj4NCj4gPj4+ PiBJIHVuZGVyc3RhbmQgdGhlIHNwZWMgYXMgInRoZSBkZXZpY2UgaXMgcmVhZHkgYXMgc29vbiBh cyB0aGUgZmlyc3QNCj4gPj4+PiBxdWV1ZSBwYWlyIGlzIHJlYWR5IiwgYnV0IEkgbWlnaHQgYmUg d3JvbmcuDQo+ID4+Pj4NCj4gPj4+PiBEbyB5b3Ugc3VnZ2VzdCB0byBjYWxsIHRoZSBkZXZfY2xv c2UoKSB2RFBBIGNhbGxiYWNrIGFuZCB0aGUNCj4gPj4+PiBkZXN0cm95X2RldmljZSgpIGFwcGxp Y2F0aW9uIGNhbGxiYWNrIGFzIHNvb24gYXMgb25lIG9mIHRoZSByaW5nIG9mDQo+ID4+Pj4gdGhl IGZpcnN0IHF1ZXVlIHBhaXIgcmVjZWl2ZSBhIGRpc2FibGUgcmVxdWVzdCBvciwgd2l0aCBteSBw YXRjaCwNCj4gPj4+PiB3aGVuIG9uZSBvZiB0aGUgcmluZ3MgcmVjZWl2ZXMgYSByZXF1ZXN0IHRo YXQgY2hhbmdlcyB0aGUgcmluZyBzdGF0ZT8NCj4gPj4+DQo+ID4+PiBJIG1lYW5zLCB5b3VyIHBy b3Bvc2FsIGFjdHVhbGx5IG1heSBtYWtlIGZpcnN0IHZpcnRxLXBhaXIgcmVhZHkNCj4gPj4+IHN0 YXRlDQo+ID4+IGRpc2FibGVkIHdoZW4gZGV2aWNlIHJlYWR5Lg0KPiA+Pj4gU28sIHllcywgaXQg bGVhZHMgdG8gY2FsbCBkZXZpY2UgY2xvc2VcZGVzdHJveS4NCj4gPj4NCj4gPj4gTm8gaXQgZG9l c24ndCwgdGhlcmUgaXMgbm8gY2FsbCB0byAuZGV2X2Nsb3NlKCkvLmRlc3Ryb3lfZGV2aWNlKCkN Cj4gPj4gd2l0aCBteSBwYXRjaCBpZiBmaXJzdCBxdWV1ZSBwYWlyIGdldHMgZGlzYWJsZWQuDQo+ ID4+DQo+ID4+Pj4+IEkgd2lsbCBub3QgaW5zaXN0IGFueW1vcmUgb24gd2FpdGluZyBmb3IgZW5h YmxlIGZvciBub3RpZnlpbmcNCj4gPj4+Pj4gYWx0aG91Z2ggSSBub3QNCj4gPj4+PiBmYW4gd2l0 aCBpdC4NCj4gPj4+Pj4NCj4gPj4+Pj4gU28sIEkgc3VnZ2VzdCB0byBjcmVhdGUgMSBub3RpZmlj YXRpb24gZnVuY3Rpb24gdG8gYmUgY2FsbGVkIGFmdGVyDQo+ID4+Pj4+IG1lc3NhZ2UNCj4gPj4+ PiBoYW5kbGVyIGFuZCBiZWZvcmUgcmVwbHkuDQo+ID4+Pj4+IFRoaXMgZnVuY3Rpb24gaXMgdGhl IG9ubHkgb25lIHdoaWNoIG5vdGlmeSByZWFkeSBzdGF0ZXMgaW4gdGhlDQo+ID4+Pj4+IG5leHQN Cj4gPj4gb3B0aW9uczoNCj4gPj4+Pj4NCj4gPj4+Pj4gMS4gdmlydHEgcmVhZHkgc3RhdGUgaXMg Y2hhbmdlZCBpbiB0aGUgcXVldWUuDQo+ID4+Pj4+IDIuIHZpcnRxIHJlYWR5IHN0YXRlIHN0YXlz IG9uIGFmdGVyIGNvbmZpZ3VyYXRpb24gbWVzc2FnZSBoYW5kbGVyLg0KPiA+Pj4+PiAzLiBkZXZp Y2Ugc3RhdGUgd2lsbCBiZSBlbmFibGVkIHdoZW4gdGhlIGZpcnN0IHF1ZXVlIHBhaXIgaXMgcmVh ZHkuDQo+ID4+Pj4NCj4gPj4+PiBJSVVDLCBpdCB3aWxsIG5vdCBkaXNhYmxlIHRoZSBxdWV1ZXMg d2hlbiB0aGVyZSBpcyBhIHN0YXRlIGNoYW5nZSwNCj4gPj4+PiBpcyB0aGF0IGNvcnJlY3Q/IElm IHNvLCBJIHRoaW5rIGl0IGRvZXMgbm90IHdvcmsgd2l0aCBtZW1vcnkNCj4gPj4+PiBob3RwbHVn IGNhc2UgSSBtZW50aW9uZWQgZWFybGllci4NCj4gPj4+DQo+ID4+PiBJdCB3aWxsIGRvIGVuYWJs ZSBhZ2FpbiB3aGljaCBtZWFuIC0gc29tZXRoaW5nIHdhcyBtb2RpZmllZC4NCj4gPj4NCj4gPj4g T2ssIHRoYW5rcyBmb3IgdGhlIGNsYXJpZmljYXRpb24uDQo+ID4+DQo+ID4+IEkgdGhpbmsgaXQg aXMgbm90IGVub3VnaCBmb3IgdGhlIGV4YW1wbGVzIEkgZ2F2ZSBiZWxvdy4gRm9yDQo+ID4+IHNl dF9tZW1fdGFibGUsIHdlIG5lZWQgdG8gc3RvcCB0aGUgZGV2aWNlIGZyb20gcHJvY2Vzc2luZyB0 aGUgdnJpbmdzDQo+ID4+IGJlZm9yZSB0aGUgc2V0X21lbV90YWJsZSBoYW5kbGVyIGNhbGxzIHRo ZSBtdW5tYXAoKSwgYW5kIHJlLWVuYWJsZSBpdA0KPiA+PiBhZnRlciB0aGUNCj4gPj4gbW1hcCgp IChJIGRpZCB0aGF0IHdyb25nIGluIG15IGV4YW1wbGUgcGF0Y2gsIEkganVzdCBkaWQgdGhhdCBh ZnRlcg0KPiA+PiB0aGUgbXVubWFwL21tYXAgaGFwcGVuZWQsIHdoaWNoIGlzIHRvbyBsYXRlKS4N Cj4gPj4NCj4gPj4+PiBFdmVuIGZvciB0aGUgY2FsbGZkIGRvdWJsZSBjaGFuZ2UgaXQgY2FuIGJl IHByb2JsZW1hdGljIGFzDQo+ID4+Pj4gVmhvc3QtbGliIHdpbGwgY2xvc2UgdGhlIGZpcnN0IG9u ZSB3aGlsZSBpdCB3aWxsIHN0aWxsIGJlIHVzZWQgYnkNCj4gPj4+PiB0aGUgZHJpdmVyIChCdHcs IEkgc2VlIG15IGV4YW1wbGUgcGF0Y2ggaXMgYWxzbyBidWdneSBpbiB0aGlzDQo+ID4+Pj4gcmVn YXJkcywgaXQgc2hvdWxkIHJlc2V0IHRoZSBjYWxsX2ZkIHZhbHVlIGluIHRoZSB2aXJ0cXVldWUs IHRoZW4NCj4gPj4+PiBjYWxsDQo+ID4+Pj4gdmhvc3RfdXNlcl91cGRhdGVfdnJpbmdfc3RhdGUo KSBhbmQgZmluYWxseSBjbG9zZSB0aGUgRkQpLg0KPiA+Pj4NCj4gPj4+IFllcywgdGhpcyBvbmUg bGVhZHMgZm9yIGRpZmZlcmVudCBoYW5kbGUgZm9yIGVhY2ggbWVzc2FnZS4NCj4gPj4+DQo+ID4+ PiBNYXliZSBpdCBsZWFkcyBmb3IgbmV3IHF1ZXVlIG1vZGlmeSBvcGVyYXRpb24uDQo+ID4+PiBT bywgcXVldWUgZG9lc24ndCBzZW5kIHRoZSBzdGF0ZSAtIGp1c3QgZG9lcyBjb25maWd1cmF0aW9u IGNoYW5nZSBvbg0KPiA+Pj4gdGhlDQo+ID4+IGZseS4NCj4gPj4+DQo+ID4+PiBXaGF0IGRvIHlv dSB0aGluaz8NCj4gPj4NCj4gPj4gSSB0aGluayB0aGF0IGNvbmZpZ3VyYXRpb24gb24gdGhlIGZs eSBkb2Vzbid0IGZseS4NCj4gPj4gV2Ugd291bGQgYXQgbGVhc3QgbmVlZCB0byBzdG9wIHRoZSBk ZXZpY2UgZnJvbSBwcm9jZXNzaW5nIHRoZSByaW5ncw0KPiA+PiBmb3IgbWVtb3J5IGhvdHBsdWcg Y2FzZSwgc28gd2h5IG5vdCBqdXN0IHNlbmQgYSBkaXNhYmxlIG5vdGlmaWNhdGlvbj8NCj4gPg0K PiA+IFllcywgZHJpdmVyIG5lZWQgbm90aWZpY2F0aW9uIGhlcmUuDQo+ID4NCj4gPj4gQW5kIGZv ciB0aGUgZG91YmxlIGNhbGxmZCwgdGhhdCBkb2VzIG5vdCBsb29rIHJpZ2h0IHRvIG1lIG5vdCB0 bw0KPiA+PiByZXF1ZXN0IHRoZSBkcml2ZXIgdG8gc3RvcCB1c2luZyBpdCBiZWZvcmUgaXQgaXMg Y2xvc2VkLCBpc24ndCBpdD8NCj4gPg0KPiA+IFllcywgYW5kIHNvbWUgZHJpdmVycyAoaW5jbHVk ZSBtbHg1KSBtYXkgc3RvcCB0aGUgdHJhZmZpYyBpbiB0aGlzIGNhc2UgdG9vLg0KPiA+DQo+ID4g bW9kaWZ5XHVwZGF0ZSBvcGVyYXRpb24gd2lsbCBzb2x2ZSBhbGw6DQo+ID4NCj4gPiBGb3IgZXhh bXBsZToNCj4gPg0KPiA+IEluIG1lbW9yeSBob3RwbHVnOg0KPiA+IERvIG5ldyBtbWFwDQo+ID4g Q2FsbCBtb2RpZnkNCj4gPiBEbyBtdW5tdXAgZm9yIG9sZC4NCj4gPg0KPiA+IEluIGNhbGxmZFxr aWNrZmQgY2hhbmdlOg0KPiA+DQo+ID4gU2V0IG5ldyBGRC4NCj4gPiBDYWxsIG1vZGlmeS4NCj4g PiBDbG9zZSBvbGQgRkQuDQo+ID4NCj4gPiBNb2RpZnkgaXMgY2xlYXJlciwgc2F2ZSBjYWxscyBh bmQgZmFzdGVyIChkYXRhcGF0aCB3aWxsIGJhY2sgZmFzdGVyKS4NCj4gDQo+IEl0IHNob3VsZCB3 b3JrLCBidXQgdGhhdCBpcyBub3QgbGlnaHQgbW9kaWZpY2F0aW9ucyB0byBkbyBpbiBzZXRfbWVt X3RhYmxlDQo+IGhhbmRsZXIgKHRoZSBmdW5jdGlvbiBpcyBxdWl0ZSBjb21wbGV4IGFscmVhZHkg d2l0aCBwb3N0Y29weSBsaXZlLW1pZ3JhdGlvbg0KPiBzdXBwb3J0KS4NCj4gDQo+IFdpdGggYSBt b2RpZnkgY2FsbGJhY2ssIHdvbid0IHRoZSBkcml2ZXIgcGFydCBiZSBtb3JlIGNvbXBsZXg/IFNp bmNlIGl0DQo+IHdvdWxkIGhhdmUgdG8gY2hlY2sgd2hpY2ggc3RhdGUgaGFzIGNoYW5nZWQgaW4g dGhlIHJpbmcsIGFuZCBiYXNlZCBvbiB0aGF0DQo+IGRlY2lkZSB3aGV0aGVyIGl0IHNob3VsZCBz dG9wIHRoZSByaW5nIG9yIG5vdC4NCj4gDQo+IEFzIHlvdSBzYXlzIHRoYXQgaW4gY2FzZSBvZiBt ZW1vcnkgaG90cGx1ZyBhbmQgZG91YmxlIGNhbGxmZCwgdGhlIGRyaXZlciBtYXkNCj4gc3RvcCBw cm9jZXNzaW5nIHRoZSByaW5ncyBhbnl3YXksIHNvIHdvdWxkIGl0IGJlIHRoYXQgbXVjaCBmYXN0 ZXIgdGhhbg0KPiBkaXNhYmxpbmcvZW5hYmxpbmcgdGhlIHZyaW5nPw0KPiANCj4gVGhlc2UgZXZl bnRzIGhhdmluZyBhIHZlcnkgcmFyZSBvY2N1cnJlbmNlLCBkb2VzIGl0IHJlYWxseSBtYXR0ZXIg aWYgaXQgaXMgYSBiaXQNCj4gbG9uZ2VyPw0KDQoNCkp1c3QgdGhpbmtpbmcgYWdhaW4gYWJvdXQg bWVtb3J5IGhvdHBsdWc6DQoNCk1seDUgZHJpdmVyIGRldmljZSBuZWVkIHRvIGJlIHJlaW5pdGlh bGl6ZWQgaW4gdGhpcyBjYXNlIGJlY2F1c2UgdGhlIE5JQyBoYXMgbWVtb3J5IHRyYW5zbGF0aW9u IHdoaWNoIG11c3QgYmUgdXBkYXRlZCBiZWZvcmUgdGhlIHZpcnRxcyBjcmVhdGlvbi4NCg0KU28s IG1heWJlIHdlIG5lZWQgdG8gY2xvc2UgYW5kIGNvbmZpZyB0aGUgdkRQQSBkZXZpY2UgaW4gdGhp cyBjYXNlLg0KDQpAWGlhbyBXYW5nLCBjYW4geW91IGNvbW1lbnQgdGhlIElGQyBiZWhhdmlvciBo ZXJlLg0KDQpNYXRhbg0KDQoNCj4gVGhhbmtzLA0KPiBNYXhpbWUNCj4gDQo+ID4NCj4gPj4gIFRo YW5rcywNCj4gPj4gTWF4aW1lDQo+ID4+DQo+ID4+Pg0KPiA+Pj4+IFRoYW5rcywNCj4gPj4+PiBN YXhpbWUNCj4gPj4+Pj4NCj4gPj4+Pj4gTWF0YW4NCj4gPj4+Pj4NCj4gPj4+Pj4NCj4gPj4+Pj4N Cj4gPj4+Pj4+IE1heGltZQ0KPiA+Pj4+Pg0KPiA+Pj4NCj4gPg0KDQo=