From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM03-BY2-obe.outbound.protection.outlook.com (mail-by2nam03on0630.outbound.protection.outlook.com [IPv6:2a01:111:f400:fe4a::630]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id D225B818E8 for ; Mon, 9 Jan 2017 21:49:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector1-amd-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=G0wbRCUKX42cp2DV7I3upcooqY3TwpGLPjcH9sAuYsM=; b=0A8QVcI4fpUeZjfP3zaH8xUFDg7AsswGNcQd7Uytub7FZeFl9TGQ4xMc9VsGJySmNOqa9fpnPZ9VeTvRH3BAGwMN2xzeAWPuUE0pfRoXt/nqP2Blw1PHGx51na+0qz/cw6ylZDMkpIVOqVziCM35JX4mmpUlPakTjUaMTpqjOJI= Received: from DM5PR12MB1243.namprd12.prod.outlook.com (10.168.237.22) by BY2PR12MB0662.namprd12.prod.outlook.com (10.163.113.151) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.829.7; Tue, 10 Jan 2017 05:48:59 +0000 Received: from DM5PR12MB1243.namprd12.prod.outlook.com ([10.168.237.22]) by DM5PR12MB1243.namprd12.prod.outlook.com ([10.168.237.22]) with mapi id 15.01.0829.013; Tue, 10 Jan 2017 05:48:58 +0000 From: "Duran, Leo" To: "Gao, Liming" , "Justen, Jordan L" , 'Laszlo Ersek' , "edk2-devel@lists.01.org" CC: "Singh, Brijesh" , "Fan, Jeff" , "Kinney, Michael D" , "Ma, Maurice" , "Agyeman, Prince" , "Ni, Ruiyu" , "Steele, Kelly" , "Wei, David" , "Guo, Mang" Thread-Topic: [PATCH v3 0/4] BaseIoFifoLib Thread-Index: AQHSZ52cOmPc+CcC30G0SQfvf+/kGaEq9c2AgABWXgCAAEV48IAAnvoAgAERYuCAAjq6gIAAuKcQgAEBkgCAAAQp0A== Date: Tue, 10 Jan 2017 05:48:58 +0000 Message-ID: References: <1483652965-14357-1-git-send-email-leo.duran@amd.com> <4A89E2EF3DFEDB4C8BFDE51014F606A14D6CA2BD@shsmsx102.ccr.corp.intel.com> <9bf84287-cdec-b5c0-26c6-16f5cd1e453f@redhat.com> <148375017874.13659.3185969071926290103@jljusten-ivb> <4A89E2EF3DFEDB4C8BFDE51014F606A14D6CAC20@shsmsx102.ccr.corp.intel.com> <4A89E2EF3DFEDB4C8BFDE51014F606A14D6CB799@shsmsx102.ccr.corp.intel.com> In-Reply-To: <4A89E2EF3DFEDB4C8BFDE51014F606A14D6CB799@shsmsx102.ccr.corp.intel.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=leo.duran@amd.com; x-originating-ip: [2605:6000:e7c4:2000:349a:4d6c:af1b:6d9f] x-microsoft-exchange-diagnostics: 1; BY2PR12MB0662; 7:VjUY8VTw1XpjA49XLw4N9Mg+cDXNSNH/3rO2KOTjPlgcfL3QBfBA5xgTCSzMs0bIkBzcAynj6Tsw260oSCLt/GFg5x12zj6Rumk7HMkAep2RFOHoUhSEZDBaiPyiu02XC3/+S5TycMIGF942gUiSJyapl8DPOR2NhcOA+PkWq6GGu1+fDvtaFX4KIm7EBdiweIAswh+brODZGWgcs2i6iGU5XbD29fO+w4rfB8BTrJo6q6tyibHN1kTR7ScLEYYTtAkW/3zxVlAkthXqXK9JLVmtvIJEQOj5HUe+lEn5itTmp+DBh5Rwait36gHkzEp7oTrd4EFylMgiPC1Cp82KlNABwuwtLca3jqS0Hzj85D+5KoVGaaQ4DufShE1CQWg7JmrX3mUzndNHnNBJE4xPA94vxRCyBgf1S46mWQMSixOqZsXVY80aUPm2d01OL25jhGDAEnutOF3/QduSnechLA==; 20:d0aaodtTI1YkoRBAqh15EG99HF7zWyB3j3HB4pvwPMj6ydYAK2S2AGxSHvdcd5qieGQ0bKG7egpM0dMQe6zpg8eujmcQkQ8NfgUSedJY5qYeLX5s7qKj5mX+/2RaO9uPR862xEuf8WZlgJjOci60G0v48BwqjbbtOdbNVKKlVU0blN6+tCD599OXAroKPinyMzNh3wXPlTUcOvqyzFJC437uh/GRbSWj2dy1wsgl6vfEwuQL4/4rvcI7J0kqvS2s x-forefront-antispam-report: SFV:SKI; SCL:-1SFV:NSPM; SFS:(10009020)(6009001)(6029001)(7916002)(13464003)(189002)(24454002)(377424004)(377454003)(199003)(68736007)(77096006)(561944003)(6436002)(50986999)(5660300001)(6506006)(99286003)(2900100001)(38730400001)(97736004)(55016002)(101416001)(54906002)(25786008)(76176999)(105586002)(7696004)(106116001)(4326007)(54356999)(2501003)(229853002)(102836003)(6116002)(106356001)(2906002)(2950100002)(7416002)(33656002)(305945005)(189998001)(93886004)(92566002)(7736002)(81156014)(8676002)(81166006)(3660700001)(8936002)(86362001)(3280700002)(5001770100001)(74316002)(9686003)(122556002)(19627235001); DIR:OUT; SFP:1101; SCL:1; SRVR:BY2PR12MB0662; H:DM5PR12MB1243.namprd12.prod.outlook.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; x-ms-office365-filtering-correlation-id: 84b0d18a-bd95-461d-26c9-08d4391c5f49 x-microsoft-antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001);SRVR:BY2PR12MB0662; x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(767451399110)(162533806227266)(228905959029699); x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(6040375)(601004)(2401047)(5005006)(8121501046)(3002001)(10201501046)(6055026)(6041248)(20161123562025)(20161123555025)(20161123564025)(20161123560025)(6072148)(6042181); SRVR:BY2PR12MB0662; BCL:0; PCL:0; RULEID:; SRVR:BY2PR12MB0662; x-forefront-prvs: 01834E39B7 received-spf: None (protection.outlook.com: amd.com does not designate permitted sender hosts) spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-originalarrivaltime: 10 Jan 2017 05:48:58.4517 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY2PR12MB0662 Subject: Re: [PATCH v3 0/4] BaseIoFifoLib X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 10 Jan 2017 05:49:02 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 T0sgTGltaW5nLCBJIHRoaW5rIEkgdW5kZXJzdGFuZCBub3cuDQpUaGFua3MsDQpMZW8NCg0KPiAt LS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBHYW8sIExpbWluZyBbbWFpbHRvOmxp bWluZy5nYW9AaW50ZWwuY29tXQ0KPiBTZW50OiBNb25kYXksIEphbnVhcnkgMDksIDIwMTcgMTE6 MzQgUE0NCj4gVG86IER1cmFuLCBMZW8gPGxlby5kdXJhbkBhbWQuY29tPjsgSnVzdGVuLCBKb3Jk YW4gTA0KPiA8am9yZGFuLmwuanVzdGVuQGludGVsLmNvbT47ICdMYXN6bG8gRXJzZWsnIDxsZXJz ZWtAcmVkaGF0LmNvbT47IGVkazItDQo+IGRldmVsQGxpc3RzLjAxLm9yZw0KPiBDYzogU2luZ2gs IEJyaWplc2ggPGJyaWplc2guc2luZ2hAYW1kLmNvbT47IEZhbiwgSmVmZiA8amVmZi5mYW5AaW50 ZWwuY29tPjsNCj4gS2lubmV5LCBNaWNoYWVsIEQgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29t PjsgTWEsIE1hdXJpY2UNCj4gPG1hdXJpY2UubWFAaW50ZWwuY29tPjsgQWd5ZW1hbiwgUHJpbmNl IDxwcmluY2UuYWd5ZW1hbkBpbnRlbC5jb20+Ow0KPiBOaSwgUnVpeXUgPHJ1aXl1Lm5pQGludGVs LmNvbT47IFN0ZWVsZSwgS2VsbHkgPGtlbGx5LnN0ZWVsZUBpbnRlbC5jb20+OyBXZWksDQo+IERh dmlkIDxkYXZpZC53ZWlAaW50ZWwuY29tPjsgR3VvLCBNYW5nIDxtYW5nLmd1b0BpbnRlbC5jb20+ DQo+IFN1YmplY3Q6IFJFOiBbUEFUQ0ggdjMgMC80XSBCYXNlSW9GaWZvTGliDQo+IA0KPiBMZW86 DQo+ICAgSSBzdWdnZXN0IHRvIGFkZCBuZXcgSW9GaWZvIEFQSXMgaW50byBJb0xpYiBsaWJyYXJ5 IGNsYXNzLCBub3QgYWRkIElvRmlmb0xpYg0KPiBjbGFzcy4gQWZ0ZXIgYWRkIElvRmlmbyBBUElz IGludG8gSW9MaWIgbGlicmFyeSBjbGFzcywgd2UgaGF2ZSB0byB1cGRhdGUgYWxsIElvTGliDQo+ IGxpYnJhcnkgaW5zdGFuY2VzIHRvIGluY2x1ZGUgSW9GaWZvIEFQSSBpbXBsZW1lbnRhdGlvbi4g Rm9yIElBMzIgYW5kIFg2NCBhcmNoLA0KPiB5b3VyIHByb3Bvc2VkIGltcGxlbWVudGF0aW9uIHdp bGwgYmUgdXNlZC4gRm9yIG90aGVyIGFyY2gsIG5vcm1hbA0KPiBpbXBsZW1lbnRhdGlvbiAocmVh ZCBzYW1lIElPIHBvcnQgaW4gb25lIGxvb3ApIGNhbiBiZSB1c2VkLiBBbmQsIHlvdSBzYXkNCj4g eW91IHdhbnQgdG8gaW1wbGVtZW50IGFub3RoZXIgdmVyc2lvbiBJb0ZpZm8gQVBJcy4gSWYgaXQg aXMgcmVxdWVzdGVkLCAgSQ0KPiBzdWdnZXN0IHlvdSBhZGQgbmV3IElvTGliIGluc3RhbmNlLiBG b3IgSW9GaWZvIEFQSXMsIHlvdXIgcHJvdmlkZSBuZXcNCj4gaW1wbGVtZW50YXRpb24uIEZvciBv dGhlciBJbyBBUElzLCB5b3UgY2FuIGNvcHkgdGhlIGltcGxlbWVudGF0aW9uIGZyb20NCj4gQmFz ZUlvTGliSW50cmluc2ljIGxpYnJhcnkgaW5zdGFuY2UsIHRoZW4gbmV3IElvTGliIGluc3RhbmNl IGNhbiBwcm92aWRlIGZ1bGwgSU8NCj4gQVBJcy4gVGhhdCdzIG15IHByb3Bvc2FsIGZvciBJb0Zp Zm8gQVBJcy4NCj4gDQo+ICAgQmVzaWRlcywgSSByYWlzZSBvbmUgZ2VuZXJpYyBwcm9ibGVtLiBJ biBlZGsyIHByb2plY3QsIGV2ZXJ5IGxpYnJhcnkgaW5zdGFuY2UNCj4gbXVzdCBwcm92aWRlIHRo ZSBmdWxsIEFQSSBpbXBsZW1lbnRhdGlvbi4gSWYgb25lIGxpYnJhcnkgaW5zdGFuY2Ugb25seQ0K PiBvdmVycmlkZXMgc29tZSBBUEkgaW1wbGVtZW50YXRpb24sIGl0IHdpbGwgaGF2ZSB0byBjb3B5 IG90aGVyIEFQSQ0KPiBpbXBsZW1lbnRhdGlvbi4gSXQgd2lsbCBicmluZyB0aGUgZHVwbGljYXRl ZCBjb2RlIGluIHRoZSBkaWZmZXJlbnQgbGlicmFyeQ0KPiBpbnN0YW5jZS4gQ3VycmVudCBzaXgg SW8gbGlicmFyeSBpbnN0YW5jZXMgYXJlIGp1c3QgYSBjYXNlLiBJIHRoaW5rIHdlIGNhbiBmaWd1 cmUNCj4gb3V0IG5ldyBzb2x1dGlvbiB0byBzaGFyZSB0aGUgc2FtZSBsb2dpYyBiZXR3ZWVuIHRo ZSBkaWZmZXJlbnQgbGlicmFyeQ0KPiBpbnN0YW5jZS4gSWYgdGhpcyBzb2x1dGlvbiBpcyByZWFk eSwgeW91IGNhbiBlYXNpbHkgYWRkIG5ldyBJb0xpYiBsaWJyYXJ5IGluc3RhbmNlDQo+IHdpdGgg dGhlIG92ZXJyaWRlIEFQSXMgb25seS4gU28sIEkgc3VnZ2VzdCB5b3Ugc3VibWl0IG5ldyByZXF1 ZXN0IHRvIHN1cHBvcnQNCj4gdGhlIGxpYnJhcnkgaW5zdGFuY2UgaW5oZXJpdCBmcm9tIGFub3Ro ZXIgaW5zdGFuY2UuDQo+IA0KPiBUaGFua3MNCj4gTGltaW5nDQo+ID4tLS0tLU9yaWdpbmFsIE1l c3NhZ2UtLS0tLQ0KPiA+RnJvbTogRHVyYW4sIExlbyBbbWFpbHRvOmxlby5kdXJhbkBhbWQuY29t XQ0KPiA+U2VudDogTW9uZGF5LCBKYW51YXJ5IDA5LCAyMDE3IDEwOjIzIFBNDQo+ID5UbzogR2Fv LCBMaW1pbmcgPGxpbWluZy5nYW9AaW50ZWwuY29tPjsgSnVzdGVuLCBKb3JkYW4gTA0KPiA+PGpv cmRhbi5sLmp1c3RlbkBpbnRlbC5jb20+OyAnTGFzemxvIEVyc2VrJyA8bGVyc2VrQHJlZGhhdC5j b20+OyBlZGsyLQ0KPiA+ZGV2ZWxAbGlzdHMuMDEub3JnDQo+ID5DYzogU2luZ2gsIEJyaWplc2gg PGJyaWplc2guc2luZ2hAYW1kLmNvbT47IEZhbiwgSmVmZg0KPiA+PGplZmYuZmFuQGludGVsLmNv bT47IEtpbm5leSwgTWljaGFlbCBEIDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT47DQo+ID5N YSwgTWF1cmljZSA8bWF1cmljZS5tYUBpbnRlbC5jb20+OyBBZ3llbWFuLCBQcmluY2UNCj4gPjxw cmluY2UuYWd5ZW1hbkBpbnRlbC5jb20+OyBOaSwgUnVpeXUgPHJ1aXl1Lm5pQGludGVsLmNvbT47 IFN0ZWVsZSwNCj4gPktlbGx5IDxrZWxseS5zdGVlbGVAaW50ZWwuY29tPjsgV2VpLCBEYXZpZCA8 ZGF2aWQud2VpQGludGVsLmNvbT47IEd1bywNCj4gPk1hbmcgPG1hbmcuZ3VvQGludGVsLmNvbT4N Cj4gPlN1YmplY3Q6IFJFOiBbUEFUQ0ggdjMgMC80XSBCYXNlSW9GaWZvTGliDQo+ID4NCj4gPg0K PiA+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+PiBGcm9tOiBHYW8sIExpbWluZyBb bWFpbHRvOmxpbWluZy5nYW9AaW50ZWwuY29tXQ0KPiA+PiBTZW50OiBTdW5kYXksIEphbnVhcnkg MDgsIDIwMTcgOToxMSBQTQ0KPiA+PiBUbzogRHVyYW4sIExlbyA8bGVvLmR1cmFuQGFtZC5jb20+ OyBKdXN0ZW4sIEpvcmRhbiBMDQo+ID4+IDxqb3JkYW4ubC5qdXN0ZW5AaW50ZWwuY29tPjsgJ0xh c3psbyBFcnNlaycgPGxlcnNla0ByZWRoYXQuY29tPjsNCj4gPj4gZWRrMi0gZGV2ZWxAbGlzdHMu MDEub3JnDQo+ID4+IENjOiBTaW5naCwgQnJpamVzaCA8YnJpamVzaC5zaW5naEBhbWQuY29tPjsg RmFuLCBKZWZmDQo+ID4+IDxqZWZmLmZhbkBpbnRlbC5jb20+OyBLaW5uZXksIE1pY2hhZWwgRCA8 bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+Ow0KPiA+PiBNYSwgTWF1cmljZSA8bWF1cmljZS5t YUBpbnRlbC5jb20+OyBBZ3llbWFuLCBQcmluY2UNCj4gPj4gPHByaW5jZS5hZ3llbWFuQGludGVs LmNvbT47IE5pLCBSdWl5dSA8cnVpeXUubmlAaW50ZWwuY29tPjsgU3RlZWxlLA0KPiA+PiBLZWxs eSA8a2VsbHkuc3RlZWxlQGludGVsLmNvbT47IFdlaSwgRGF2aWQgPGRhdmlkLndlaUBpbnRlbC5j b20+Ow0KPiA+PiBHdW8sIE1hbmcgPG1hbmcuZ3VvQGludGVsLmNvbT4NCj4gPj4gU3ViamVjdDog UkU6IFtQQVRDSCB2MyAwLzRdIEJhc2VJb0ZpZm9MaWINCj4gPj4NCj4gPj4gTGVvOg0KPiA+PiAg IElvTGliIExpYnJhcnkgY2xhc3MgaXMgZGVzaWduZWQgZnJvbSB0aGUgZnVuY3Rpb25hbGl0eSwg bm90IGNvZGUNCj4gPj4gaW1wbGVtZW50YXRpb24uIFNvLCBtYW55IElPIG9wZXJhdGlvbnMgYXJl IGluY2x1ZGVkIGluIHRoaXMgbGlicmFyeQ0KPiA+PiBjbGFzcy4gSWYgZGV2ZWxvcGVycyB3YW50 IHRvIHVzZSBJTyBBUEksIHRoZXkgb25seSBuZWVkIHRvIGNoZWNrIElvTGliDQo+IGxpYnJhcnkg Y2xhc3MuDQo+ID4+IEFmdGVyIGFkZCBuZXcgQVBJcywgd2UgbmVlZCB0byB1cGRhdGUgYWxsIElv TGliIGxpYnJhcnkgaW5zdGFuY2VzIHRvDQo+ID4+IGltcGxlbWVudCB0aGVtLiBBbmQsIGlmIGFu eSBsaWJyYXJ5IEFQSSBpbXBsZW1lbnRhdGlvbiBoYXMgdGhlDQo+ID4+IGRpZmZlcmVudCB2ZXJz aW9uLCB0aGUgZnVsbCBsaWJyYXJ5IGluc3RhbmNlIHdpbGwgaGF2ZSB0byBiZSBjb3BpZWQNCj4g Pj4gdG8gYW5vdGhlciBpbnN0YW5jZS4gSSBrbm93IHlvdXIgY29uY2VybiBpcyB0byBkdXBsaWNh dGUgdGhlIGxpYnJhcnkNCj4gPj4gaW1wbGVtZW50YXRpb24uIEJ1dCwgSSB0aGluaw0KPiA+dGhp cw0KPiA+PiBpcyB0aGUgc2VwYXJhdGUgdG9waWMgdG8gb3B0aW1pemUgdGhlIGxpYnJhcnkgaW1w bGVtZW50YXRpb24gYW5kDQo+ID4+IHJldXNlIHRoZSBzYW1lIHNvdXJjZSBmaWxlLiBPdGhlciBs aWJyYXJ5IGluc3RhbmNlcyBtYXkgaGF2ZSB0aGUgc2FtZQ0KPiA+PiBpc3N1ZS4gU28sIEkgc3Vn Z2VzdCB5b3Ugc3VibWl0IGJ1Z3ppbGxhIGZvciB0aGlzIG9wdGltaXphdGlvbg0KPiA+PiByZXF1 ZXN0LiBXZSB3aWxsIGZpZ3VyZSBvdXQgdGhlIHNvbHV0aW9uIGFuZCByZXZpZXcgaXQgaW4gdGhp cyBtYWlsIGxpc3QuDQo+ID4+DQo+ID4+IFRoYW5rcw0KPiA+PiBMaW1pbmcNCj4gPltEdXJhbiwg TGVvXQ0KPiA+SGkgTGltaW5nLA0KPiA+DQo+ID5JJ20gbm90IHN1cmUgSSBmb2xsb3cgd2hhdCB5 b3UgbWVhbiBieSBhbiAnb3B0aW1pemF0aW9uIHJlcXVlc3QnLg0KPiA+QXQgcHJlc2VudCBJb0xJ YiBkb2VzICpub3QqIGluY2x1ZGUgdGhlIEZpZm8gcm91dGluZXMgdGhhdCBJJ3ZlDQo+ID5yZWZl cnJlZCB0bywgc28gSSdtIHNpbXBseSBwcm9wb3NpbmcgdG8gd3JhcCB0aGUgRmlmbyByb3V0aW5l cyBpbnRvIGluIGENCj4gbGlicmFyeS4NCj4gPk1vcmVvdmVyLCBhcyB5b3UganVzdCBzYWlkLCBJ 4oCZbSBhbHNvIHByb3Bvc2luZyBub3QgdXNpbmcgSW9MaWIgdG8gYXZvaWQNCj4gPmhhdmluZyB0 byBkdXBsaWNhdGUgYWxsIG9mIHRoZSBmdW5jdGlvbmFsaXR5IGluIElvTGliLg0KPiA+DQo+ID5D YW4geW91IHBsZWFzZSBnaXZlIG1lIGEgYml0IG1vcmUgZGV0YWlsIGFzIHRvIHdoYXQgdGhlICdv cHRpbWl6YXRpb24NCj4gcmVxdWVzdCcNCj4gPndvdWxkIGJlPw0KPiA+KGkuZS4sIHNob3VsZCB0 aGF0IHJlcXVlc3QgcmVhZCBleGFjdGx5IGFzIEkndmUgcHJvcG9zZWQgc28gZmFyLA0KPiA+cHJv cG9zaW5nIHRoZSBjcmVhdGlvbiBvZiBhbiBJb0ZpZm9MaWI/KSBJJ2xsIHN1Ym1pdCBCdWd6aWxs YSBvbmNlIEkNCj4gPmJldHRlciB1bmRlcnN0YW5kIHdoYXQgbmVlZHMgdG8gYmUgaW4gaXQuDQo+ ID4NCj4gPlRoYW5rcywNCj4gPkxlbw0KPiA+DQo+ID4NCj4gPg0KPiA+PiA+LS0tLS1PcmlnaW5h bCBNZXNzYWdlLS0tLS0NCj4gPj4gPkZyb206IER1cmFuLCBMZW8gW21haWx0bzpsZW8uZHVyYW5A YW1kLmNvbV0NCj4gPj4gPlNlbnQ6IFN1bmRheSwgSmFudWFyeSAwOCwgMjAxNyAxOjE3IEFNDQo+ ID4+ID5UbzogSnVzdGVuLCBKb3JkYW4gTCA8am9yZGFuLmwuanVzdGVuQGludGVsLmNvbT47ICdM YXN6bG8gRXJzZWsnDQo+ID4+ID48bGVyc2VrQHJlZGhhdC5jb20+OyBHYW8sIExpbWluZyA8bGlt aW5nLmdhb0BpbnRlbC5jb20+OyBlZGsyLQ0KPiA+PiA+ZGV2ZWxAbGlzdHMuMDEub3JnDQo+ID4+ ID5DYzogU2luZ2gsIEJyaWplc2ggPGJyaWplc2guc2luZ2hAYW1kLmNvbT47IEZhbiwgSmVmZg0K PiA+PiA+PGplZmYuZmFuQGludGVsLmNvbT47IEtpbm5leSwgTWljaGFlbCBEDQo+ID4+ID48bWlj aGFlbC5kLmtpbm5leUBpbnRlbC5jb20+OyBNYSwgTWF1cmljZSA8bWF1cmljZS5tYUBpbnRlbC5j b20+Ow0KPiA+PiA+QWd5ZW1hbiwgUHJpbmNlIDxwcmluY2UuYWd5ZW1hbkBpbnRlbC5jb20+OyBO aSwgUnVpeXUNCj4gPj4gPjxydWl5dS5uaUBpbnRlbC5jb20+OyBTdGVlbGUsIEtlbGx5IDxrZWxs eS5zdGVlbGVAaW50ZWwuY29tPjsgV2VpLA0KPiA+PiA+RGF2aWQgPGRhdmlkLndlaUBpbnRlbC5j b20+OyBHdW8sIE1hbmcgPG1hbmcuZ3VvQGludGVsLmNvbT4NCj4gPj4gPlN1YmplY3Q6IFJFOiBb UEFUQ0ggdjMgMC80XSBCYXNlSW9GaWZvTGliDQo+ID4+ID4NCj4gPj4gPkpvcmRhbiwgTGltaW5n LCBldCBhbCwNCj4gPj4gPg0KPiA+PiA+SXQgdHVybnMgb3V0IHRoYXQgdGhlIHJ1bnRpbWUgZW5h YmxlbWVudCBvZiBTRVYgZmVhdHVyZSB0aGF0IEkNCj4gPj4gPnJlZmVycmVkIHRvIGNhbiBiZSBk ZXRlY3RlZCBpbiBoYXJkd2FyZTsgc28gaW5zdGVhZCBvZiByZXF1aXJpbmcNCj4gPj4gPidkcml2 ZXInIGNvZGUgdG8gc2V0IGEgZHluYW1pYyBQQ0QsIHRoZSBvdmVycmlkZSBGaWZvIHJvdXRpbmVz IGNvdWxkDQo+ID4+ID5kbyBhIHJ1bnRpbWUgY2hlY2sgbGlrZSB0aGlzOg0KPiA+PiA+DQo+ID4+ ID4vLyBJbiBvdmVycmlkZSB2ZXJzaW9uIG9mIHRoZSBGaWZvIGxpYnJhcnkNCj4gPj4gPmZpZm9f Zm9vKCkNCj4gPj4gPnsNCj4gPj4gPglJZiAoU0VWX0VuYWJsZWQoKSkgew0KPiA+PiA+CQkvLyBk b24ndCB1c2UgUkVQIGlucy9vdXRzDQo+ID4+ID4JfSBlbHNlIHsNCj4gPj4gPgkJLy8gdXNlIFJF UCBpbnMvb3V0cw0KPiA+PiA+CX0NCj4gPj4gPn0NCj4gPj4gPkluIGVzc2VuY2Ugd2UgYWxyZWFk eSBoYXZlIGEgaGFyZHdhcmUtYmFzZWQgZHluYW1pYyBQQ0QsIHNvIHRoZSBpZGVhDQo+ID4+ID5p cyB0byBsZXZlcmFnZSBpdC4NCj4gPj4gPg0KPiA+PiA+QW5kIHNpbmNlIHdlJ3JlIGludGVyZXN0 ZWQgaW4gb3ZlcnJpZGluZyBqdXN0IHRoZSBGaWZvIHJvdXRpbmVzLCBpdA0KPiA+PiA+d291bGQg bWFrZSBiZXR0ZXIgc2Vuc2UgdG8ga2VlcCB0aGVtIGluIGEgc2VwYXJhdGUgbGlicmFyeSAoYXMN Cj4gPj4gPnByb3Bvc2VkDQo+ID5pbg0KPiA+PiB0aGUgcGF0Y2ggc2V0KS4NCj4gPj4gPkxlby4N Cj4gPj4gPg0KPiA+PiA+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+PiA+PiBGcm9t OiBKb3JkYW4gSnVzdGVuIFttYWlsdG86am9yZGFuLmwuanVzdGVuQGludGVsLmNvbV0NCj4gPj4g Pj4gU2VudDogRnJpZGF5LCBKYW51YXJ5IDA2LCAyMDE3IDY6NTAgUE0NCj4gPj4gPj4gVG86IER1 cmFuLCBMZW8gPGxlby5kdXJhbkBhbWQuY29tPjsgJ0xhc3psbyBFcnNlaycNCj4gPj4gPj4gPGxl cnNla0ByZWRoYXQuY29tPjsgR2FvLCBMaW1pbmcgPGxpbWluZy5nYW9AaW50ZWwuY29tPjsNCj4g Pj4gPj4gZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmcNCj4gPj4gPj4gQ2M6IFNpbmdoLCBCcmlqZXNo IDxicmlqZXNoLnNpbmdoQGFtZC5jb20+OyBGYW4sIEplZmYNCj4gPj4gPj4gPGplZmYuZmFuQGlu dGVsLmNvbT47IEtpbm5leSwgTWljaGFlbCBEDQo+ID4+ID4+IDxtaWNoYWVsLmQua2lubmV5QGlu dGVsLmNvbT47IE1hLCBNYXVyaWNlDQo+IDxtYXVyaWNlLm1hQGludGVsLmNvbT47DQo+ID4+ID4+ IEFneWVtYW4sIFByaW5jZSA8cHJpbmNlLmFneWVtYW5AaW50ZWwuY29tPjsgTmksIFJ1aXl1DQo+ ID4+ID4+IDxydWl5dS5uaUBpbnRlbC5jb20+OyBTdGVlbGUsIEtlbGx5IDxrZWxseS5zdGVlbGVA aW50ZWwuY29tPjsgV2VpLA0KPiA+PiA+PiBEYXZpZCA8ZGF2aWQud2VpQGludGVsLmNvbT47IEd1 bywgTWFuZyA8bWFuZy5ndW9AaW50ZWwuY29tPg0KPiA+PiA+PiBTdWJqZWN0OiBSRTogW1BBVENI IHYzIDAvNF0gQmFzZUlvRmlmb0xpYg0KPiA+PiA+Pg0KPiA+PiA+PiBPbiAyMDE3LTAxLTA2IDA3 OjIzOjQ3LCBEdXJhbiwgTGVvIHdyb3RlOg0KPiA+PiA+PiA+DQo+ID4+ID4+ID4NCj4gPj4gPj4g PiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4+ID4+ID4gPiBGcm9tOiBMYXN6bG8g RXJzZWsgW21haWx0bzpsZXJzZWtAcmVkaGF0LmNvbV0NCj4gPj4gPj4gPiA+IFNlbnQ6IEZyaWRh eSwgSmFudWFyeSAwNiwgMjAxNyA1OjEyIEFNDQo+ID4+ID4+ID4gPiBUbzogR2FvLCBMaW1pbmcg PGxpbWluZy5nYW9AaW50ZWwuY29tPjsgRHVyYW4sIExlbw0KPiA+PiA+PiA+ID4gPGxlby5kdXJh bkBhbWQuY29tPjsgZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmcNCj4gPj4gPj4gPiA+IDxlZGsyLWRl dmVsQG1sMDEuMDEub3JnPg0KPiA+PiA+PiA+ID4gQ2M6IFNpbmdoLCBCcmlqZXNoIDxicmlqZXNo LnNpbmdoQGFtZC5jb20+OyBKdXN0ZW4sIEpvcmRhbiBMDQo+ID4+ID4+ID4gPiA8am9yZGFuLmwu anVzdGVuQGludGVsLmNvbT47IEZhbiwgSmVmZiA8amVmZi5mYW5AaW50ZWwuY29tPjsNCj4gPj4g Pj4gPiA+IEtpbm5leSwgTWljaGFlbCBEIDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT47IE1h LCBNYXVyaWNlDQo+ID4+ID4+ID4gPiA8bWF1cmljZS5tYUBpbnRlbC5jb20+OyBBZ3llbWFuLCBQ cmluY2UNCj4gPj4gPj4gPHByaW5jZS5hZ3llbWFuQGludGVsLmNvbT47DQo+ID4+ID4+ID4gPiBO aSwgUnVpeXUgPHJ1aXl1Lm5pQGludGVsLmNvbT47IFN0ZWVsZSwgS2VsbHkNCj4gPj4gPj4gPiA+ IDxrZWxseS5zdGVlbGVAaW50ZWwuY29tPjsgV2VpLCBEYXZpZCA8ZGF2aWQud2VpQGludGVsLmNv bT47DQo+ID4+ID4+ID4gPiBHdW8sIE1hbmcgPG1hbmcuZ3VvQGludGVsLmNvbT4NCj4gPj4gPj4g PiA+IFN1YmplY3Q6IFJlOiBbUEFUQ0ggdjMgMC80XSBCYXNlSW9GaWZvTGliDQo+ID4+ID4+ID4g Pg0KPiA+PiA+PiA+ID4gT24gMDEvMDYvMTcgMDc6MDIsIEdhbywgTGltaW5nIHdyb3RlOg0KPiA+ PiA+PiA+ID4gPiBMZW86DQo+ID4+ID4+ID4gPiA+IEZpZm9JbyBpcyBvbmUgd2lkdGggdHlwZSBv ZiBFRklfQ1BVX0lPX1BST1RPQ09MX1dJRFRILiBTbywNCj4gPmhvdw0KPiA+PiA+PiA+ID4gPiBh Ym91dCBhZGQgbmV3IEFQSXMgaW50byBJb0xpYiB0b2dldGhlciB3aXRoIG90aGVyIElvIEFQSXM/ DQo+ID4+ID4+ID4gPiA+IElmIHNvLCBubyBuZXcgbGlicmFyeSBjbGFzcyBpcyByZXF1aXJlZC4g UGxhdGZvcm0gRFNDIGZpbGVzDQo+ID4+ID4+ID4gPiA+IGFyZSBub3QgcmVxdWlyZWQgdG8gYmUg Y2hhbmdlZC4NCj4gPj4gPj4gPiA+DQo+ID4+ID4+ID4gPiBCdXQgdGhlbiBhbGwgb2YgdGhlIElv TGliIGluc3RhbmNlcyB3aWxsIGhhdmUgdG8gYmUgZXh0ZW5kZWQgdG9vOg0KPiA+PiA+PiA+ID4N Cj4gPj4gPj4gPiA+IEludGVsRnJhbWV3b3JrUGtnL0xpYnJhcnkvRHhlSW9MaWJDcHVJby9EeGVJ b0xpYkNwdUlvLmluZg0KPiA+PiA+PiA+ID4gTWRlUGtnL0xpYnJhcnkvQmFzZUlvTGliSW50cmlu c2ljL0Jhc2VJb0xpYkludHJpbnNpYy5pbmYNCj4gPj4gPj4gPiA+IE1kZVBrZy9MaWJyYXJ5L0R4 ZUlvTGliQ3B1SW8yL0R4ZUlvTGliQ3B1SW8yLmluZg0KPiA+PiA+PiA+ID4gTWRlUGtnL0xpYnJh cnkvRHhlSW9MaWJFc2FsL0R4ZUlvTGliRXNhbC5pbmYNCj4gPj4gPj4gPiA+IE1kZVBrZy9MaWJy YXJ5L1BlaUlvTGliQ3B1SW8vUGVpSW9MaWJDcHVJby5pbmYNCj4gPj4gPj4gPiA+IE1kZVBrZy9M aWJyYXJ5L1NtbUlvTGliU21tQ3B1SW8yL1NtbUlvTGliU21tQ3B1SW8yLmluZg0KPiA+PiA+PiA+ ID4NCj4gPj4gPj4gPiA+IFRoYW5rcywNCj4gPj4gPj4gPiA+IExhc3psbw0KPiA+PiA+PiA+ID4N Cj4gPj4gPj4gPiBbRHVyYW4sIExlb10gQ29ycmVjdC4NCj4gPj4gPj4gPiBBcyBJIG1lbnRpb25l ZCwgb25lIG9mIHRoZSByZWFzb25zIGZvciB0aGUgbmV3IElvRmlmbyBsaWJyYXJ5IGlzDQo+ID4+ ID4+ID4gdG8gYmUgYWJsZSB0byBvdmVycmlkZSBpdCB3aXRob3V0IGhhdmluZyB0byBkdXBsaWNh dGUgdGhlIGNvbXBsZXRlDQo+IElvTGliLg0KPiA+PiA+PiA+DQo+ID4+ID4+DQo+ID4+ID4+IEkg YWdyZWUgd2l0aCBMaW1pbmcgYWJvdXQgYWRkaW5nIHRoZSBmdW5jdGlvbnMgdG8gSW9MaWIgaW5z dGVhZC4NCj4gPj4gPj4NCj4gPj4gPj4gUGVyaGFwcyBhIFBDRCBjb3VsZCBiZSBhZGRlZCB0byBj b250cm9sIGlmIHJlcCBpL28gaW5zdHJ1Y3Rpb25zDQo+ID4+ID4+IGFyZSB1c2VkLg0KPiA+PiA+ Pg0KPiA+PiA+PiAtSm9yZGFuDQo=