From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:57616) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gZGw5-00071N-Nh for qemu-devel@nongnu.org; Tue, 18 Dec 2018 10:05:36 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gZGvy-0000Gb-8V for qemu-devel@nongnu.org; Tue, 18 Dec 2018 10:05:29 -0500 Received: from mail-eopbgr800109.outbound.protection.outlook.com ([40.107.80.109]:23071 helo=NAM03-DM3-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gZGvu-0000AP-KJ for qemu-devel@nongnu.org; Tue, 18 Dec 2018 10:05:21 -0500 From: Stefan Markovic Date: Tue, 18 Dec 2018 15:05:05 +0000 Message-ID: <3d59f696-be48-d274-0995-33836eca552a@wavecomp.com> References: <20181217200444.14812-1-aleksandar.markovic@rt-rk.com> <20181217200444.14812-6-aleksandar.markovic@rt-rk.com> In-Reply-To: <20181217200444.14812-6-aleksandar.markovic@rt-rk.com> Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-ID: <86BAB594DCA8CC47B43DA1D0EFADB86B@namprd22.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [Qemu-devel] [PATCH 5/6] target/mips: MXU: Add handlers for max/min instructions List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Aleksandar Markovic , "qemu-devel@nongnu.org" , "jancraig@amazon.com" , Aleksandar Markovic DQpPbiAxNy4xMi4xOC4gMjE6MDQsIEFsZWtzYW5kYXIgTWFya292aWMgd3JvdGU6DQo+IEZyb206 IEFsZWtzYW5kYXIgTWFya292aWMgPGFtYXJrb3ZpY0B3YXZlY29tcC5jb20+DQo+DQo+IEFkZCB0 cmFuc2xhdGlvbiBoYW5kbGVycyBmb3IgbWF4L21pbiBNWFUgaW5zdHJ1Y3Rpb25zLg0KPg0KPiBT aWduZWQtb2ZmLWJ5OiBBbGVrc2FuZGFyIE1hcmtvdmljIDxhbWFya292aWNAd2F2ZWNvbXAuY29t Pg0KPiAtLS0NCj4gICB0YXJnZXQvbWlwcy90cmFuc2xhdGUuYyB8IDM1NiArKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrLS0tDQo+ICAgMSBmaWxlIGNoYW5nZWQsIDMzNSBpbnNl cnRpb25zKCspLCAyMSBkZWxldGlvbnMoLSkNCg0KDQpSZXZpZXdlZC1ieTogU3RlZmFuIE1hcmtv dmljIDxzbWFya292aWNAd2F2ZWNvbXAuY29tPg0KDQoNCj4gZGlmZiAtLWdpdCBhL3RhcmdldC9t aXBzL3RyYW5zbGF0ZS5jIGIvdGFyZ2V0L21pcHMvdHJhbnNsYXRlLmMNCj4gaW5kZXggYzc0YTgz MWExNy4uMzM5ZGU4YzMyYiAxMDA2NDQNCj4gLS0tIGEvdGFyZ2V0L21pcHMvdHJhbnNsYXRlLmMN Cj4gKysrIGIvdGFyZ2V0L21pcHMvdHJhbnNsYXRlLmMNCj4gQEAgLTI0ODE1LDYgKzI0ODE1LDMz OCBAQCBzdGF0aWMgdm9pZCBnZW5fbXh1X1MzMlhPUihEaXNhc0NvbnRleHQgKmN0eCkNCj4gICB9 DQo+ICAgDQo+ICAgDQo+ICsvKg0KPiArICogICAgICAgICAgICAgICAgICAgTVhVIGluc3RydWN0 aW9uIGNhdGVnb3J5IG1heC9taW4NCj4gKyAqICAgICAgICAgICAgICAgICAgIH5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+DQo+ICsgKg0KPiArICogICAgICAgICAgICAgICAgICAgICBT MzJNQVggICAgIEQxNk1BWCAgICAgUThNQVgNCj4gKyAqICAgICAgICAgICAgICAgICAgICAgUzMy TUlOICAgICBEMTZNSU4gICAgIFE4TUlODQo+ICsgKi8NCj4gKw0KPiArLyoNCj4gKyAqICBTMzJN QVggWFJhLCBYUmIsIFhSYw0KPiArICogICAgVXBkYXRlIFhSYSB3aXRoIHRoZSBtYXhpbXVtIG9m IHNpZ25lZCAzMi1iaXQgaW50ZWdlcnMgY29udGFpbmVkDQo+ICsgKiAgICBpbiBYUmIgYW5kIFhS Yy4NCj4gKyAqDQo+ICsgKiAgUzMyTUlOIFhSYSwgWFJiLCBYUmMNCj4gKyAqICAgIFVwZGF0ZSBY UmEgd2l0aCB0aGUgbWluaW11bSBvZiBzaWduZWQgMzItYml0IGludGVnZXJzIGNvbnRhaW5lZA0K PiArICogICAgaW4gWFJiIGFuZCBYUmMuDQo+ICsgKg0KPiArICogICAxIDAgOSA4IDcgNiA1IDQg MyAyIDEgMCA5IDggNyA2IDUgNCAzIDIgMSAwIDkgOCA3IDYgNSA0IDMgMiAxIDANCj4gKyAqICAr LS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tKy0tLS0tLS0rLS0tLS0tLSstLS0tLS0tKy0tLS0t LS0tLS0tKw0KPiArICogIHwgIFNQRUNJQUwyIHwwIDAgMCAwIDB8IG9wYyB8ICBYUmMgIHwgIFhS YiAgfCAgWFJhICB8TVhVX19QT09MMDB8DQo+ICsgKiAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLSstLS0tLS0tKy0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLSsNCj4gKyAqLw0KPiArc3Rh dGljIHZvaWQgZ2VuX214dV9TMzJNQVhfUzMyTUlOKERpc2FzQ29udGV4dCAqY3R4KQ0KPiArew0K PiArICAgIHVpbnQzMl90IHBhZCwgb3BjLCBYUmMsIFhSYiwgWFJhOw0KPiArDQo+ICsgICAgcGFk ID0gZXh0cmFjdDMyKGN0eC0+b3Bjb2RlLCAyMSwgNSk7DQo+ICsgICAgb3BjID0gZXh0cmFjdDMy KGN0eC0+b3Bjb2RlLCAxOCwgMyk7DQo+ICsgICAgWFJjID0gZXh0cmFjdDMyKGN0eC0+b3Bjb2Rl LCAxNCwgNCk7DQo+ICsgICAgWFJiID0gZXh0cmFjdDMyKGN0eC0+b3Bjb2RlLCAxMCwgNCk7DQo+ ICsgICAgWFJhID0gZXh0cmFjdDMyKGN0eC0+b3Bjb2RlLCAgNiwgNCk7DQo+ICsNCj4gKyAgICBp ZiAodW5saWtlbHkocGFkICE9IDApKSB7DQo+ICsgICAgICAgIC8qIG9wY29kZSBwYWRkaW5nIGlu Y29ycmVjdCAtPiBkbyBub3RoaW5nICovDQo+ICsgICAgfSBlbHNlIGlmICh1bmxpa2VseShYUmEg PT0gMCkpIHsNCj4gKyAgICAgICAgLyogZGVzdGluYXRpb24gaXMgemVybyByZWdpc3RlciAtPiBk byBub3RoaW5nICovDQo+ICsgICAgfSBlbHNlIGlmICh1bmxpa2VseSgoWFJiID09IDApICYmIChY UmMgPT0gMCkpKSB7DQo+ICsgICAgICAgIC8qIGJvdGggb3BlcmFuZHMgemVybyByZWdpc3RlcnMg LT4ganVzdCBzZXQgZGVzdGluYXRpb24gdG8gemVybyAqLw0KPiArICAgICAgICB0Y2dfZ2VuX21v dmlfaTMyKG14dV9ncHJbWFJhIC0gMV0sIDApOw0KPiArICAgIH0gZWxzZSBpZiAodW5saWtlbHko KFhSYiA9PSAwKSB8fCAoWFJjID09IDApKSkgew0KPiArICAgICAgICAvKiBleGFjdGx5IG9uZSBv cGVyYW5kIGlzIHplcm8gcmVnaXN0ZXIgLSBmaW5kIHdoaWNoIG9uZSBpcyBub3QuLi4qLw0KPiAr ICAgICAgICB1aW50MzJfdCBYUnggPSBYUmIgPyBYUmIgOiBYUmM7DQo+ICsgICAgICAgIC8qIC4u LmFuZCBkbyBtYXgvbWluIG9wZXJhdGlvbiB3aXRoIG9uZSBvcGVyYW5kIDAgKi8NCj4gKyAgICAg ICAgaWYgKG9wYyA9PSBPUENfTVhVX1MzMk1BWCkgew0KPiArICAgICAgICAgICAgdGNnX2dlbl9z bWF4X2kzMihteHVfZ3ByW1hSYSAtIDFdLCBteHVfZ3ByW1hSeCAtIDFdLCAwKTsNCj4gKyAgICAg ICAgfSBlbHNlIHsNCj4gKyAgICAgICAgICAgIHRjZ19nZW5fc21pbl9pMzIobXh1X2dwcltYUmEg LSAxXSwgbXh1X2dwcltYUnggLSAxXSwgMCk7DQo+ICsgICAgICAgIH0NCj4gKyAgICB9IGVsc2Ug aWYgKHVubGlrZWx5KFhSYiA9PSBYUmMpKSB7DQo+ICsgICAgICAgIC8qIGJvdGggb3BlcmFuZHMg c2FtZSAtPiBqdXN0IHNldCBkZXN0aW5hdGlvbiB0byBvbmUgb2YgdGhlbSAqLw0KPiArICAgICAg ICB0Y2dfZ2VuX21vdl9pMzIobXh1X2dwcltYUmEgLSAxXSwgbXh1X2dwcltYUmIgLSAxXSk7DQo+ ICsgICAgfSBlbHNlIHsNCj4gKyAgICAgICAgLyogdGhlIG1vc3QgZ2VuZXJhbCBjYXNlICovDQo+ ICsgICAgICAgIGlmIChvcGMgPT0gT1BDX01YVV9TMzJNQVgpIHsNCj4gKyAgICAgICAgICAgIHRj Z19nZW5fc21heF9pMzIobXh1X2dwcltYUmEgLSAxXSwgbXh1X2dwcltYUmIgLSAxXSwNCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXh1X2dwcltYUmMg LSAxXSk7DQo+ICsgICAgICAgIH0gZWxzZSB7DQo+ICsgICAgICAgICAgICB0Y2dfZ2VuX3NtaW5f aTMyKG14dV9ncHJbWFJhIC0gMV0sIG14dV9ncHJbWFJiIC0gMV0sDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG14dV9ncHJbWFJjIC0gMV0pOw0KPiAr ICAgICAgICB9DQo+ICsgICAgfQ0KPiArfQ0KPiArDQo+ICsvKg0KPiArICogIEQxNk1BWA0KPiAr ICogICAgVXBkYXRlIFhSYSB3aXRoIHRoZSAxNi1iaXQtd2lzZSBtYXhpbXVtcyBvZiBzaWduZWQg aW50ZWdlcnMNCj4gKyAqICAgIGNvbnRhaW5lZCBpbiBYUmIgYW5kIFhSYy4NCj4gKyAqDQo+ICsg KiAgRDE2TUlODQo+ICsgKiAgICBVcGRhdGUgWFJhIHdpdGggdGhlIDE2LWJpdC13aXNlIG1pbmlt dW1zIG9mIHNpZ25lZCBpbnRlZ2Vycw0KPiArICogICAgY29udGFpbmVkIGluIFhSYiBhbmQgWFJj Lg0KPiArICoNCj4gKyAqICAgMSAwIDkgOCA3IDYgNSA0IDMgMiAxIDAgOSA4IDcgNiA1IDQgMyAy IDEgMCA5IDggNyA2IDUgNCAzIDIgMSAwDQo+ICsgKiAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLSstLS0tLS0tKy0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLSsNCj4gKyAqICB8ICBTUEVD SUFMMiB8MCAwIDAgMCAwfCBvcGMgfCAgWFJjICB8ICBYUmIgIHwgIFhSYSAgfE1YVV9fUE9PTDAw fA0KPiArICogICstLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0rLS0tLS0tLSstLS0tLS0tKy0t LS0tLS0rLS0tLS0tLS0tLS0rDQo+ICsgKi8NCj4gK3N0YXRpYyB2b2lkIGdlbl9teHVfRDE2TUFY X0QxNk1JTihEaXNhc0NvbnRleHQgKmN0eCkNCj4gK3sNCj4gKyAgICB1aW50MzJfdCBwYWQsIG9w YywgWFJjLCBYUmIsIFhSYTsNCj4gKw0KPiArICAgIHBhZCA9IGV4dHJhY3QzMihjdHgtPm9wY29k ZSwgMjEsIDUpOw0KPiArICAgIG9wYyA9IGV4dHJhY3QzMihjdHgtPm9wY29kZSwgMTgsIDMpOw0K PiArICAgIFhSYyA9IGV4dHJhY3QzMihjdHgtPm9wY29kZSwgMTQsIDQpOw0KPiArICAgIFhSYiA9 IGV4dHJhY3QzMihjdHgtPm9wY29kZSwgMTAsIDQpOw0KPiArICAgIFhSYSA9IGV4dHJhY3QzMihj dHgtPm9wY29kZSwgIDYsIDQpOw0KPiArDQo+ICsgICAgaWYgKHVubGlrZWx5KHBhZCAhPSAwKSkg ew0KPiArICAgICAgICAvKiBvcGNvZGUgcGFkZGluZyBpbmNvcnJlY3QgLT4gZG8gbm90aGluZyAq Lw0KPiArICAgIH0gZWxzZSBpZiAodW5saWtlbHkoWFJjID09IDApKSB7DQo+ICsgICAgICAgIC8q IGRlc3RpbmF0aW9uIGlzIHplcm8gcmVnaXN0ZXIgLT4gZG8gbm90aGluZyAqLw0KPiArICAgIH0g ZWxzZSBpZiAodW5saWtlbHkoKFhSYiA9PSAwKSAmJiAoWFJhID09IDApKSkgew0KPiArICAgICAg ICAvKiBib3RoIG9wZXJhbmRzIHplcm8gcmVnaXN0ZXJzIC0+IGp1c3Qgc2V0IGRlc3RpbmF0aW9u IHRvIHplcm8gKi8NCj4gKyAgICAgICAgdGNnX2dlbl9tb3ZpX2kzMihteHVfZ3ByW1hSYyAtIDFd LCAwKTsNCj4gKyAgICB9IGVsc2UgaWYgKHVubGlrZWx5KChYUmIgPT0gMCkgfHwgKFhSYSA9PSAw KSkpIHsNCj4gKyAgICAgICAgLyogZXhhY3RseSBvbmUgb3BlcmFuZCBpcyB6ZXJvIHJlZ2lzdGVy IC0gZmluZCB3aGljaCBvbmUgaXMgbm90Li4uKi8NCj4gKyAgICAgICAgdWludDMyX3QgWFJ4ID0g WFJiID8gWFJiIDogWFJjOw0KPiArICAgICAgICAvKiAuLi5hbmQgZG8gaGFsZi13b3JkLXdpc2Ug bWF4L21pbiB3aXRoIG9uZSBvcGVyYW5kIDAgKi8NCj4gKyAgICAgICAgVENHdl9pMzIgdDAgPSB0 Y2dfdGVtcF9uZXcoKTsNCj4gKyAgICAgICAgVENHdl9pMzIgdDEgPSB0Y2dfY29uc3RfaTMyKDAp Ow0KPiArDQo+ICsgICAgICAgIC8qIHRoZSBsZWZ0IGhhbGYtd29yZCBmaXJzdCAqLw0KPiArICAg ICAgICB0Y2dfZ2VuX2FuZGlfaTMyKHQwLCBteHVfZ3ByW1hSeCAtIDFdLCAweEZGRkYwMDAwKTsN Cj4gKyAgICAgICAgaWYgKG9wYyA9PSBPUENfTVhVX0QxNk1BWCkgew0KPiArICAgICAgICAgICAg dGNnX2dlbl9zbWF4X2kzMihteHVfZ3ByW1hSYSAtIDFdLCB0MCwgdDEpOw0KPiArICAgICAgICB9 IGVsc2Ugew0KPiArICAgICAgICAgICAgdGNnX2dlbl9zbWluX2kzMihteHVfZ3ByW1hSYSAtIDFd LCB0MCwgdDEpOw0KPiArICAgICAgICB9DQo+ICsNCj4gKyAgICAgICAgLyogdGhlIHJpZ2h0IGhh bGYtd29yZCAqLw0KPiArICAgICAgICB0Y2dfZ2VuX2FuZGlfaTMyKHQwLCBteHVfZ3ByW1hSeCAt IDFdLCAweDAwMDBGRkZGKTsNCj4gKyAgICAgICAgLyogbW92ZSBoYWxmLXdvcmRzIHRvIHRoZSBs ZWZ0bW9zdCBwb3NpdGlvbiAqLw0KPiArICAgICAgICB0Y2dfZ2VuX3NobGlfaTMyKHQwLCB0MCwg MTYpOw0KPiArICAgICAgICAvKiB0MCB3aWxsIGJlIG1heC9taW4gb2YgdDAgYW5kIHQxICovDQo+ ICsgICAgICAgIGlmIChvcGMgPT0gT1BDX01YVV9EMTZNQVgpIHsNCj4gKyAgICAgICAgICAgIHRj Z19nZW5fc21heF9pMzIodDAsIHQwLCB0MSk7DQo+ICsgICAgICAgIH0gZWxzZSB7DQo+ICsgICAg ICAgICAgICB0Y2dfZ2VuX3NtaW5faTMyKHQwLCB0MCwgdDEpOw0KPiArICAgICAgICB9DQo+ICsg ICAgICAgIC8qIHJldHVybiByZXN1bHRpbmcgaGFsZi13b3JkcyB0byBpdHMgb3JpZ2luYWwgcG9z aXRpb24gKi8NCj4gKyAgICAgICAgdGNnX2dlbl9zaHJpX2kzMih0MCwgdDAsIDE2KTsNCj4gKyAg ICAgICAgLyogZmluYWx5IHVwZGF0ZSB0aGUgZGVzdGluYXRpb24gKi8NCj4gKyAgICAgICAgdGNn X2dlbl9vcl9pMzIobXh1X2dwcltYUmEgLSAxXSwgbXh1X2dwcltYUmEgLSAxXSwgdDApOw0KPiAr DQo+ICsgICAgICAgIHRjZ190ZW1wX2ZyZWUodDEpOw0KPiArICAgICAgICB0Y2dfdGVtcF9mcmVl KHQwKTsNCj4gKyAgICB9IGVsc2UgaWYgKHVubGlrZWx5KFhSYiA9PSBYUmMpKSB7DQo+ICsgICAg ICAgIC8qIGJvdGggb3BlcmFuZHMgc2FtZSAtPiBqdXN0IHNldCBkZXN0aW5hdGlvbiB0byBvbmUg b2YgdGhlbSAqLw0KPiArICAgICAgICB0Y2dfZ2VuX21vdl9pMzIobXh1X2dwcltYUmEgLSAxXSwg bXh1X2dwcltYUmIgLSAxXSk7DQo+ICsgICAgfSBlbHNlIHsNCj4gKyAgICAgICAgLyogdGhlIG1v c3QgZ2VuZXJhbCBjYXNlICovDQo+ICsgICAgICAgIFRDR3ZfaTMyIHQwID0gdGNnX3RlbXBfbmV3 KCk7DQo+ICsgICAgICAgIFRDR3ZfaTMyIHQxID0gdGNnX3RlbXBfbmV3KCk7DQo+ICsNCj4gKyAg ICAgICAgLyogdGhlIGxlZnQgaGFsZi13b3JkIGZpcnN0ICovDQo+ICsgICAgICAgIHRjZ19nZW5f YW5kaV9pMzIodDAsIG14dV9ncHJbWFJiIC0gMV0sIDB4RkZGRjAwMDApOw0KPiArICAgICAgICB0 Y2dfZ2VuX2FuZGlfaTMyKHQxLCBteHVfZ3ByW1hSYyAtIDFdLCAweEZGRkYwMDAwKTsNCj4gKyAg ICAgICAgaWYgKG9wYyA9PSBPUENfTVhVX0QxNk1BWCkgew0KPiArICAgICAgICAgICAgdGNnX2dl bl9zbWF4X2kzMihteHVfZ3ByW1hSYSAtIDFdLCB0MCwgdDEpOw0KPiArICAgICAgICB9IGVsc2Ug ew0KPiArICAgICAgICAgICAgdGNnX2dlbl9zbWluX2kzMihteHVfZ3ByW1hSYSAtIDFdLCB0MCwg dDEpOw0KPiArICAgICAgICB9DQo+ICsNCj4gKyAgICAgICAgLyogdGhlIHJpZ2h0IGhhbGYtd29y ZCAqLw0KPiArICAgICAgICB0Y2dfZ2VuX2FuZGlfaTMyKHQwLCBteHVfZ3ByW1hSYiAtIDFdLCAw eDAwMDBGRkZGKTsNCj4gKyAgICAgICAgdGNnX2dlbl9hbmRpX2kzMih0MSwgbXh1X2dwcltYUmMg LSAxXSwgMHgwMDAwRkZGRik7DQo+ICsgICAgICAgIC8qIG1vdmUgaGFsZi13b3JkcyB0byB0aGUg bGVmdG1vc3QgcG9zaXRpb24gKi8NCj4gKyAgICAgICAgdGNnX2dlbl9zaGxpX2kzMih0MCwgdDAs IDE2KTsNCj4gKyAgICAgICAgdGNnX2dlbl9zaGxpX2kzMih0MSwgdDEsIDE2KTsNCj4gKyAgICAg ICAgLyogdDAgd2lsbCBiZSBtYXgvbWluIG9mIHQwIGFuZCB0MSAqLw0KPiArICAgICAgICBpZiAo b3BjID09IE9QQ19NWFVfRDE2TUFYKSB7DQo+ICsgICAgICAgICAgICB0Y2dfZ2VuX3NtYXhfaTMy KHQwLCB0MCwgdDEpOw0KPiArICAgICAgICB9IGVsc2Ugew0KPiArICAgICAgICAgICAgdGNnX2dl bl9zbWluX2kzMih0MCwgdDAsIHQxKTsNCj4gKyAgICAgICAgfQ0KPiArICAgICAgICAvKiByZXR1 cm4gcmVzdWx0aW5nIGhhbGYtd29yZHMgdG8gaXRzIG9yaWdpbmFsIHBvc2l0aW9uICovDQo+ICsg ICAgICAgIHRjZ19nZW5fc2hyaV9pMzIodDAsIHQwLCAxNik7DQo+ICsgICAgICAgIC8qIGZpbmFs eSB1cGRhdGUgdGhlIGRlc3RpbmF0aW9uICovDQo+ICsgICAgICAgIHRjZ19nZW5fb3JfaTMyKG14 dV9ncHJbWFJhIC0gMV0sIG14dV9ncHJbWFJhIC0gMV0sIHQwKTsNCj4gKw0KPiArICAgICAgICB0 Y2dfdGVtcF9mcmVlKHQxKTsNCj4gKyAgICAgICAgdGNnX3RlbXBfZnJlZSh0MCk7DQo+ICsgICAg fQ0KPiArfQ0KPiArDQo+ICsvKg0KPiArICogIFE4TUFYDQo+ICsgKiAgICBVcGRhdGUgWFJhIHdp dGggdGhlIDgtYml0LXdpc2UgbWF4aW11bXMgb2Ygc2lnbmVkIGludGVnZXJzDQo+ICsgKiAgICBj b250YWluZWQgaW4gWFJiIGFuZCBYUmMuDQo+ICsgKg0KPiArICogIFE4TUlODQo+ICsgKiAgICBV cGRhdGUgWFJhIHdpdGggdGhlIDgtYml0LXdpc2UgbWluaW11bXMgb2Ygc2lnbmVkIGludGVnZXJz DQo+ICsgKiAgICBjb250YWluZWQgaW4gWFJiIGFuZCBYUmMuDQo+ICsgKg0KPiArICogICAxIDAg OSA4IDcgNiA1IDQgMyAyIDEgMCA5IDggNyA2IDUgNCAzIDIgMSAwIDkgOCA3IDYgNSA0IDMgMiAx IDANCj4gKyAqICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tKy0tLS0tLS0rLS0tLS0tLSst LS0tLS0tKy0tLS0tLS0tLS0tKw0KPiArICogIHwgIFNQRUNJQUwyIHwwIDAgMCAwIDB8IG9wYyB8 ICBYUmMgIHwgIFhSYiAgfCAgWFJhICB8TVhVX19QT09MMDB8DQo+ICsgKiAgKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLSstLS0tLS0tKy0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLSsNCj4g KyAqLw0KPiArc3RhdGljIHZvaWQgZ2VuX214dV9ROE1BWF9ROE1JTihEaXNhc0NvbnRleHQgKmN0 eCkNCj4gK3sNCj4gKyAgICB1aW50MzJfdCBwYWQsIG9wYywgWFJjLCBYUmIsIFhSYTsNCj4gKw0K PiArICAgIHBhZCA9IGV4dHJhY3QzMihjdHgtPm9wY29kZSwgMjEsIDUpOw0KPiArICAgIG9wYyA9 IGV4dHJhY3QzMihjdHgtPm9wY29kZSwgMTgsIDMpOw0KPiArICAgIFhSYyA9IGV4dHJhY3QzMihj dHgtPm9wY29kZSwgMTQsIDQpOw0KPiArICAgIFhSYiA9IGV4dHJhY3QzMihjdHgtPm9wY29kZSwg MTAsIDQpOw0KPiArICAgIFhSYSA9IGV4dHJhY3QzMihjdHgtPm9wY29kZSwgIDYsIDQpOw0KPiAr DQo+ICsgICAgaWYgKHVubGlrZWx5KHBhZCAhPSAwKSkgew0KPiArICAgICAgICAvKiBvcGNvZGUg cGFkZGluZyBpbmNvcnJlY3QgLT4gZG8gbm90aGluZyAqLw0KPiArICAgIH0gZWxzZSBpZiAodW5s aWtlbHkoWFJhID09IDApKSB7DQo+ICsgICAgICAgIC8qIGRlc3RpbmF0aW9uIGlzIHplcm8gcmVn aXN0ZXIgLT4gZG8gbm90aGluZyAqLw0KPiArICAgIH0gZWxzZSBpZiAodW5saWtlbHkoKFhSYiA9 PSAwKSAmJiAoWFJjID09IDApKSkgew0KPiArICAgICAgICAvKiBib3RoIG9wZXJhbmRzIHplcm8g cmVnaXN0ZXJzIC0+IGp1c3Qgc2V0IGRlc3RpbmF0aW9uIHRvIHplcm8gKi8NCj4gKyAgICAgICAg dGNnX2dlbl9tb3ZpX2kzMihteHVfZ3ByW1hSYSAtIDFdLCAwKTsNCj4gKyAgICB9IGVsc2UgaWYg KHVubGlrZWx5KChYUmIgPT0gMCkgfHwgKFhSYyA9PSAwKSkpIHsNCj4gKyAgICAgICAgLyogZXhh Y3RseSBvbmUgb3BlcmFuZCBpcyB6ZXJvIHJlZ2lzdGVyIC0gbWFrZSBpdCBiZSB0aGUgZmlyc3Qu Li4qLw0KPiArICAgICAgICB1aW50MzJfdCBYUnggPSBYUmIgPyBYUmIgOiBYUmM7DQo+ICsgICAg ICAgIC8qIC4uLmFuZCBkbyBieXRlLXdpc2UgbWF4L21pbiB3aXRoIG9uZSBvcGVyYW5kIDAgKi8N Cj4gKyAgICAgICAgVENHdl9pMzIgdDAgPSB0Y2dfdGVtcF9uZXcoKTsNCj4gKyAgICAgICAgVENH dl9pMzIgdDEgPSB0Y2dfY29uc3RfaTMyKDApOw0KPiArDQo+ICsgICAgICAgIC8qIHRoZSBsZWZ0 bW9zdCBieXRlIChieXRlIDMpIGZpcnN0ICovDQo+ICsgICAgICAgIHRjZ19nZW5fYW5kaV9pMzIo dDAsIG14dV9ncHJbWFJ4IC0gMV0sIDB4RkYwMDAwMDApOw0KPiArICAgICAgICBpZiAob3BjID09 IE9QQ19NWFVfUThNQVgpIHsNCj4gKyAgICAgICAgICAgIHRjZ19nZW5fc21heF9pMzIobXh1X2dw cltYUmEgLSAxXSwgdDAsIHQxKTsNCj4gKyAgICAgICAgfSBlbHNlIHsNCj4gKyAgICAgICAgICAg IHRjZ19nZW5fc21pbl9pMzIobXh1X2dwcltYUmEgLSAxXSwgdDAsIHQxKTsNCj4gKyAgICAgICAg fQ0KPiArDQo+ICsgICAgICAgIC8qIGJ5dGUgMiAqLw0KPiArICAgICAgICB0Y2dfZ2VuX2FuZGlf aTMyKHQwLCBteHVfZ3ByW1hSeCAtIDFdLCAweDAwRkYwMDAwKTsNCj4gKyAgICAgICAgLyogbW92 ZSBoYWxmLXdvcmRzIHRvIHRoZSBsZWZ0bW9zdCBwb3NpdGlvbiAqLw0KPiArICAgICAgICB0Y2df Z2VuX3NobGlfaTMyKHQwLCB0MCwgOCk7DQo+ICsgICAgICAgIC8qIHQwIHdpbGwgYmUgbWF4L21p biBvZiB0MCBhbmQgdDEgKi8NCj4gKyAgICAgICAgaWYgKG9wYyA9PSBPUENfTVhVX1E4TUFYKSB7 DQo+ICsgICAgICAgICAgICB0Y2dfZ2VuX3NtYXhfaTMyKHQwLCB0MCwgdDEpOw0KPiArICAgICAg ICB9IGVsc2Ugew0KPiArICAgICAgICAgICAgdGNnX2dlbl9zbWluX2kzMih0MCwgdDAsIHQxKTsN Cj4gKyAgICAgICAgfQ0KPiArICAgICAgICAvKiByZXR1cm4gcmVzdWx0aW5nIGJ5dGUgdG8gaXRz IG9yaWdpbmFsIHBvc2l0aW9uICovDQo+ICsgICAgICAgIHRjZ19nZW5fc2hyaV9pMzIodDAsIHQw LCA4KTsNCj4gKyAgICAgICAgLyogZmluYWx5IHVwZGF0ZSB0aGUgZGVzdGluYXRpb24gKi8NCj4g KyAgICAgICAgdGNnX2dlbl9vcl9pMzIobXh1X2dwcltYUmEgLSAxXSwgbXh1X2dwcltYUmEgLSAx XSwgdDApOw0KPiArDQo+ICsgICAgICAgIC8qIGJ5dGUgMSAqLw0KPiArICAgICAgICB0Y2dfZ2Vu X2FuZGlfaTMyKHQwLCBteHVfZ3ByW1hSeCAtIDFdLCAweDAwMDBGRjAwKTsNCj4gKyAgICAgICAg LyogbW92ZSBoYWxmLXdvcmRzIHRvIHRoZSBsZWZ0bW9zdCBwb3NpdGlvbiAqLw0KPiArICAgICAg ICB0Y2dfZ2VuX3NobGlfaTMyKHQwLCB0MCwgMTYpOw0KPiArICAgICAgICAvKiB0MCB3aWxsIGJl IG1heC9taW4gb2YgdDAgYW5kIHQxICovDQo+ICsgICAgICAgIGlmIChvcGMgPT0gT1BDX01YVV9R OE1BWCkgew0KPiArICAgICAgICAgICAgdGNnX2dlbl9zbWF4X2kzMih0MCwgdDAsIHQxKTsNCj4g KyAgICAgICAgfSBlbHNlIHsNCj4gKyAgICAgICAgICAgIHRjZ19nZW5fc21pbl9pMzIodDAsIHQw LCB0MSk7DQo+ICsgICAgICAgIH0NCj4gKyAgICAgICAgLyogcmV0dXJuIHJlc3VsdGluZyBieXRl IHRvIGl0cyBvcmlnaW5hbCBwb3NpdGlvbiAqLw0KPiArICAgICAgICB0Y2dfZ2VuX3NocmlfaTMy KHQwLCB0MCwgMjQpOw0KPiArICAgICAgICAvKiBmaW5hbHkgdXBkYXRlIHRoZSBkZXN0aW5hdGlv biAqLw0KPiArICAgICAgICB0Y2dfZ2VuX29yX2kzMihteHVfZ3ByW1hSYSAtIDFdLCBteHVfZ3By W1hSYSAtIDFdLCB0MCk7DQo+ICsNCj4gKyAgICAgICAgLyogYnl0ZSAwICovDQo+ICsgICAgICAg IHRjZ19nZW5fYW5kaV9pMzIodDAsIG14dV9ncHJbWFJ4IC0gMV0sIDB4MDAwMDAwRkYpOw0KPiAr ICAgICAgICAvKiBtb3ZlIGhhbGYtd29yZHMgdG8gdGhlIGxlZnRtb3N0IHBvc2l0aW9uICovDQo+ ICsgICAgICAgIHRjZ19nZW5fc2hsaV9pMzIodDAsIHQwLCAyNCk7DQo+ICsgICAgICAgIC8qIHQw IHdpbGwgYmUgbWF4L21pbiBvZiB0MCBhbmQgdDEgKi8NCj4gKyAgICAgICAgaWYgKG9wYyA9PSBP UENfTVhVX1E4TUFYKSB7DQo+ICsgICAgICAgICAgICB0Y2dfZ2VuX3NtYXhfaTMyKHQwLCB0MCwg dDEpOw0KPiArICAgICAgICB9IGVsc2Ugew0KPiArICAgICAgICAgICAgdGNnX2dlbl9zbWluX2kz Mih0MCwgdDAsIHQxKTsNCj4gKyAgICAgICAgfQ0KPiArICAgICAgICAvKiByZXR1cm4gcmVzdWx0 aW5nIGJ5dGUgdG8gaXRzIG9yaWdpbmFsIHBvc2l0aW9uICovDQo+ICsgICAgICAgIHRjZ19nZW5f c2hyaV9pMzIodDAsIHQwLCA4KTsNCj4gKyAgICAgICAgLyogZmluYWx5IHVwZGF0ZSB0aGUgZGVz dGluYXRpb24gKi8NCj4gKyAgICAgICAgdGNnX2dlbl9vcl9pMzIobXh1X2dwcltYUmEgLSAxXSwg bXh1X2dwcltYUmEgLSAxXSwgdDApOw0KPiArDQo+ICsgICAgICAgIHRjZ190ZW1wX2ZyZWUodDEp Ow0KPiArICAgICAgICB0Y2dfdGVtcF9mcmVlKHQwKTsNCj4gKyAgICB9IGVsc2UgaWYgKHVubGlr ZWx5KFhSYiA9PSBYUmMpKSB7DQo+ICsgICAgICAgIC8qIGJvdGggb3BlcmFuZHMgc2FtZSAtPiBq dXN0IHNldCBkZXN0aW5hdGlvbiB0byBvbmUgb2YgdGhlbSAqLw0KPiArICAgICAgICB0Y2dfZ2Vu X21vdl9pMzIobXh1X2dwcltYUmEgLSAxXSwgbXh1X2dwcltYUmIgLSAxXSk7DQo+ICsgICAgfSBl bHNlIHsNCj4gKyAgICAgICAgLyogdGhlIG1vc3QgZ2VuZXJhbCBjYXNlICovDQo+ICsgICAgICAg IFRDR3ZfaTMyIHQwID0gdGNnX3RlbXBfbmV3KCk7DQo+ICsgICAgICAgIFRDR3ZfaTMyIHQxID0g dGNnX3RlbXBfbmV3KCk7DQo+ICsNCj4gKyAgICAgICAgLyogdGhlIGxlZnRtb3N0IGJ5dGUgKGJ5 dGUgMykgZmlyc3QgKi8NCj4gKyAgICAgICAgdGNnX2dlbl9hbmRpX2kzMih0MCwgbXh1X2dwcltY UmIgLSAxXSwgMHhGRjAwMDAwMCk7DQo+ICsgICAgICAgIHRjZ19nZW5fYW5kaV9pMzIodDEsIG14 dV9ncHJbWFJjIC0gMV0sIDB4RkYwMDAwMDApOw0KPiArICAgICAgICBpZiAob3BjID09IE9QQ19N WFVfUThNQVgpIHsNCj4gKyAgICAgICAgICAgIHRjZ19nZW5fc21heF9pMzIobXh1X2dwcltYUmEg LSAxXSwgdDAsIHQxKTsNCj4gKyAgICAgICAgfSBlbHNlIHsNCj4gKyAgICAgICAgICAgIHRjZ19n ZW5fc21pbl9pMzIobXh1X2dwcltYUmEgLSAxXSwgdDAsIHQxKTsNCj4gKyAgICAgICAgfQ0KPiAr DQo+ICsgICAgICAgIC8qIGJ5dGUgMiAqLw0KPiArICAgICAgICB0Y2dfZ2VuX2FuZGlfaTMyKHQw LCBteHVfZ3ByW1hSYiAtIDFdLCAweDAwRkYwMDAwKTsNCj4gKyAgICAgICAgdGNnX2dlbl9hbmRp X2kzMih0MSwgbXh1X2dwcltYUmMgLSAxXSwgMHgwMEZGMDAwMCk7DQo+ICsgICAgICAgIC8qIG1v dmUgaGFsZi13b3JkcyB0byB0aGUgbGVmdG1vc3QgcG9zaXRpb24gKi8NCj4gKyAgICAgICAgdGNn X2dlbl9zaGxpX2kzMih0MCwgdDAsIDgpOw0KPiArICAgICAgICB0Y2dfZ2VuX3NobGlfaTMyKHQx LCB0MSwgOCk7DQo+ICsgICAgICAgIC8qIHQwIHdpbGwgYmUgbWF4L21pbiBvZiB0MCBhbmQgdDEg Ki8NCj4gKyAgICAgICAgaWYgKG9wYyA9PSBPUENfTVhVX1E4TUFYKSB7DQo+ICsgICAgICAgICAg ICB0Y2dfZ2VuX3NtYXhfaTMyKHQwLCB0MCwgdDEpOw0KPiArICAgICAgICB9IGVsc2Ugew0KPiAr ICAgICAgICAgICAgdGNnX2dlbl9zbWluX2kzMih0MCwgdDAsIHQxKTsNCj4gKyAgICAgICAgfQ0K PiArICAgICAgICAvKiByZXR1cm4gcmVzdWx0aW5nIGJ5dGUgdG8gaXRzIG9yaWdpbmFsIHBvc2l0 aW9uICovDQo+ICsgICAgICAgIHRjZ19nZW5fc2hyaV9pMzIodDAsIHQwLCA4KTsNCj4gKyAgICAg ICAgLyogZmluYWx5IHVwZGF0ZSB0aGUgZGVzdGluYXRpb24gKi8NCj4gKyAgICAgICAgdGNnX2dl bl9vcl9pMzIobXh1X2dwcltYUmEgLSAxXSwgbXh1X2dwcltYUmEgLSAxXSwgdDApOw0KPiArDQo+ ICsgICAgICAgIC8qIGJ5dGUgMSAqLw0KPiArICAgICAgICB0Y2dfZ2VuX2FuZGlfaTMyKHQwLCBt eHVfZ3ByW1hSYiAtIDFdLCAweDAwMDBGRjAwKTsNCj4gKyAgICAgICAgdGNnX2dlbl9hbmRpX2kz Mih0MSwgbXh1X2dwcltYUmMgLSAxXSwgMHgwMDAwRkYwMCk7DQo+ICsgICAgICAgIC8qIG1vdmUg aGFsZi13b3JkcyB0byB0aGUgbGVmdG1vc3QgcG9zaXRpb24gKi8NCj4gKyAgICAgICAgdGNnX2dl bl9zaGxpX2kzMih0MCwgdDAsIDE2KTsNCj4gKyAgICAgICAgdGNnX2dlbl9zaGxpX2kzMih0MSwg dDEsIDE2KTsNCj4gKyAgICAgICAgLyogdDAgd2lsbCBiZSBtYXgvbWluIG9mIHQwIGFuZCB0MSAq Lw0KPiArICAgICAgICBpZiAob3BjID09IE9QQ19NWFVfUThNQVgpIHsNCj4gKyAgICAgICAgICAg IHRjZ19nZW5fc21heF9pMzIodDAsIHQwLCB0MSk7DQo+ICsgICAgICAgIH0gZWxzZSB7DQo+ICsg ICAgICAgICAgICB0Y2dfZ2VuX3NtaW5faTMyKHQwLCB0MCwgdDEpOw0KPiArICAgICAgICB9DQo+ ICsgICAgICAgIC8qIHJldHVybiByZXN1bHRpbmcgYnl0ZSB0byBpdHMgb3JpZ2luYWwgcG9zaXRp b24gKi8NCj4gKyAgICAgICAgdGNnX2dlbl9zaHJpX2kzMih0MCwgdDAsIDI0KTsNCj4gKyAgICAg ICAgLyogZmluYWx5IHVwZGF0ZSB0aGUgZGVzdGluYXRpb24gKi8NCj4gKyAgICAgICAgdGNnX2dl bl9vcl9pMzIobXh1X2dwcltYUmEgLSAxXSwgbXh1X2dwcltYUmEgLSAxXSwgdDApOw0KPiArDQo+ ICsgICAgICAgIC8qIGJ5dGUgMCAqLw0KPiArICAgICAgICB0Y2dfZ2VuX2FuZGlfaTMyKHQwLCBt eHVfZ3ByW1hSYiAtIDFdLCAweDAwMDAwMEZGKTsNCj4gKyAgICAgICAgdGNnX2dlbl9hbmRpX2kz Mih0MSwgbXh1X2dwcltYUmMgLSAxXSwgMHgwMDAwMDBGRik7DQo+ICsgICAgICAgIC8qIG1vdmUg aGFsZi13b3JkcyB0byB0aGUgbGVmdG1vc3QgcG9zaXRpb24gKi8NCj4gKyAgICAgICAgdGNnX2dl bl9zaGxpX2kzMih0MCwgdDAsIDI0KTsNCj4gKyAgICAgICAgdGNnX2dlbl9zaGxpX2kzMih0MSwg dDEsIDI0KTsNCj4gKyAgICAgICAgLyogdDAgd2lsbCBiZSBtYXgvbWluIG9mIHQwIGFuZCB0MSAq Lw0KPiArICAgICAgICBpZiAob3BjID09IE9QQ19NWFVfUThNQVgpIHsNCj4gKyAgICAgICAgICAg IHRjZ19nZW5fc21heF9pMzIodDAsIHQwLCB0MSk7DQo+ICsgICAgICAgIH0gZWxzZSB7DQo+ICsg ICAgICAgICAgICB0Y2dfZ2VuX3NtaW5faTMyKHQwLCB0MCwgdDEpOw0KPiArICAgICAgICB9DQo+ ICsgICAgICAgIC8qIHJldHVybiByZXN1bHRpbmcgYnl0ZSB0byBpdHMgb3JpZ2luYWwgcG9zaXRp b24gKi8NCj4gKyAgICAgICAgdGNnX2dlbl9zaHJpX2kzMih0MCwgdDAsIDgpOw0KPiArICAgICAg ICAvKiBmaW5hbHkgdXBkYXRlIHRoZSBkZXN0aW5hdGlvbiAqLw0KPiArICAgICAgICB0Y2dfZ2Vu X29yX2kzMihteHVfZ3ByW1hSYSAtIDFdLCBteHVfZ3ByW1hSYSAtIDFdLCB0MCk7DQo+ICsNCj4g KyAgICAgICAgdGNnX3RlbXBfZnJlZSh0MSk7DQo+ICsgICAgICAgIHRjZ190ZW1wX2ZyZWUodDAp Ow0KPiArICAgIH0NCj4gK30NCj4gKw0KPiArDQo+ICAgLyoNCj4gICAgKiBEZWNvZGluZyBlbmdp bmUgZm9yIE1YVQ0KPiAgICAqID09PT09PT09PT09PT09PT09PT09PT09DQo+IEBAIC0yNDgzNiwz NCArMjUxNjgsMTYgQEAgc3RhdGljIHZvaWQgZGVjb2RlX29wY19teHVfX3Bvb2wwMChDUFVNSVBT U3RhdGUgKmVudiwgRGlzYXNDb250ZXh0ICpjdHgpDQo+ICAgDQo+ICAgICAgIHN3aXRjaCAob3Bj b2RlKSB7DQo+ICAgICAgIGNhc2UgT1BDX01YVV9TMzJNQVg6DQo+IC0gICAgICAgIC8qIFRPRE86 IEltcGxlbWVudCBlbXVsYXRpb24gb2YgUzMyTUFYIGluc3RydWN0aW9uLiAqLw0KPiAtICAgICAg ICBNSVBTX0lOVkFMKCJPUENfTVhVX1MzMk1BWCIpOw0KPiAtICAgICAgICBnZW5lcmF0ZV9leGNl cHRpb25fZW5kKGN0eCwgRVhDUF9SSSk7DQo+IC0gICAgICAgIGJyZWFrOw0KPiAgICAgICBjYXNl IE9QQ19NWFVfUzMyTUlOOg0KPiAtICAgICAgICAvKiBUT0RPOiBJbXBsZW1lbnQgZW11bGF0aW9u IG9mIFMzMk1JTiBpbnN0cnVjdGlvbi4gKi8NCj4gLSAgICAgICAgTUlQU19JTlZBTCgiT1BDX01Y VV9TMzJNSU4iKTsNCj4gLSAgICAgICAgZ2VuZXJhdGVfZXhjZXB0aW9uX2VuZChjdHgsIEVYQ1Bf UkkpOw0KPiArICAgICAgICBnZW5fbXh1X1MzMk1BWF9TMzJNSU4oY3R4KTsNCj4gICAgICAgICAg IGJyZWFrOw0KPiAgICAgICBjYXNlIE9QQ19NWFVfRDE2TUFYOg0KPiAtICAgICAgICAvKiBUT0RP OiBJbXBsZW1lbnQgZW11bGF0aW9uIG9mIEQxNk1BWCBpbnN0cnVjdGlvbi4gKi8NCj4gLSAgICAg ICAgTUlQU19JTlZBTCgiT1BDX01YVV9EMTZNQVgiKTsNCj4gLSAgICAgICAgZ2VuZXJhdGVfZXhj ZXB0aW9uX2VuZChjdHgsIEVYQ1BfUkkpOw0KPiAtICAgICAgICBicmVhazsNCj4gICAgICAgY2Fz ZSBPUENfTVhVX0QxNk1JTjoNCj4gLSAgICAgICAgLyogVE9ETzogSW1wbGVtZW50IGVtdWxhdGlv biBvZiBEMTZNSU4gaW5zdHJ1Y3Rpb24uICovDQo+IC0gICAgICAgIE1JUFNfSU5WQUwoIk9QQ19N WFVfRDE2TUlOIik7DQo+IC0gICAgICAgIGdlbmVyYXRlX2V4Y2VwdGlvbl9lbmQoY3R4LCBFWENQ X1JJKTsNCj4gKyAgICAgICAgZ2VuX214dV9EMTZNQVhfRDE2TUlOKGN0eCk7DQo+ICAgICAgICAg ICBicmVhazsNCj4gICAgICAgY2FzZSBPUENfTVhVX1E4TUFYOg0KPiAtICAgICAgICAvKiBUT0RP OiBJbXBsZW1lbnQgZW11bGF0aW9uIG9mIFE4TUFYIGluc3RydWN0aW9uLiAqLw0KPiAtICAgICAg ICBNSVBTX0lOVkFMKCJPUENfTVhVX1E4TUFYIik7DQo+IC0gICAgICAgIGdlbmVyYXRlX2V4Y2Vw dGlvbl9lbmQoY3R4LCBFWENQX1JJKTsNCj4gLSAgICAgICAgYnJlYWs7DQo+ICAgICAgIGNhc2Ug T1BDX01YVV9ROE1JTjoNCj4gLSAgICAgICAgLyogVE9ETzogSW1wbGVtZW50IGVtdWxhdGlvbiBv ZiBROE1JTiBpbnN0cnVjdGlvbi4gKi8NCj4gLSAgICAgICAgTUlQU19JTlZBTCgiT1BDX01YVV9R OE1JTiIpOw0KPiAtICAgICAgICBnZW5lcmF0ZV9leGNlcHRpb25fZW5kKGN0eCwgRVhDUF9SSSk7 DQo+ICsgICAgICAgIGdlbl9teHVfUThNQVhfUThNSU4oY3R4KTsNCj4gICAgICAgICAgIGJyZWFr Ow0KPiAgICAgICBjYXNlIE9QQ19NWFVfUThTTFQ6DQo+ICAgICAgICAgICAvKiBUT0RPOiBJbXBs ZW1lbnQgZW11bGF0aW9uIG9mIFE4U0xUIGluc3RydWN0aW9uLiAqLw0K