From mboxrd@z Thu Jan 1 00:00:00 1970 From: Manasi Navare Subject: Re: [PATCH v2 15/23] drm/i915/dsc: Define & Compute VESA DSC params Date: Thu, 6 Sep 2018 19:14:15 -0700 Message-ID: <20180907021415.GG4186@intel.com> References: <1533071239-28815-1-git-send-email-manasi.d.navare@intel.com> <1533071239-28815-16-git-send-email-manasi.d.navare@intel.com> <20180905200445.GD4186@intel.com> <20180905203335.GE4186@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id 763D76E7CE for ; Fri, 7 Sep 2018 02:11:29 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20180905203335.GE4186@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org RmV3IG1vcmUgY29tbWVudHMgaGVyZSByZWdhcmRpbmcgdGhlIGZpeGVzIHJlcXVpcmVkIGZvciBm aXhpbmcKYWxsIHRoZSBzZWVuIGNvcnJ1cHRpb24uCgpJIGhhdmUgbWFkZSB0aGVzZSBmaXhlcyBh bmQgd2lsbCBhZGQgdGhlbWluIHRoZSBuZXh0IHJldmlzaW9uIHN1Ym1pc3Npb24uCgpPbiBXZWQs IFNlcCAwNSwgMjAxOCBhdCAwMTozMzozNVBNIC0wNzAwLCBNYW5hc2kgTmF2YXJlIHdyb3RlOgo+ IE9uZSBtb3JlIGZpeCBiZWxvdyB3aGljaCB3YXMgdGhlIGNhdXNlIG9mIGFsbCB0aGUgYXJ0aWZh Y3RzCj4gCj4gT24gV2VkLCBTZXAgMDUsIDIwMTggYXQgMDE6MDQ6NDhQTSAtMDcwMCwgTWFuYXNp IE5hdmFyZSB3cm90ZToKPiA+IEdhdXJhdiwKPiA+IAo+ID4gUGxlYXNlIGZpbmQgbXkgcmV2aWV3 IGNvbW1lbnRzIGJlbG93LiBDYXVnaHQgdGhlbSB3aGVuIEkgdGVzdGVkCj4gPiB5b3VyIHBhdGNo IG9uIERTQyBzaW5rLgo+ID4gCj4gPiBPbiBUdWUsIEp1bCAzMSwgMjAxOCBhdCAwMjowNzoxMVBN IC0wNzAwLCBNYW5hc2kgTmF2YXJlIHdyb3RlOgo+ID4gPiBGcm9tOiBHYXVyYXYgSyBTaW5naCA8 Z2F1cmF2Lmsuc2luZ2hAaW50ZWwuY29tPgo+ID4gPiAKPiA+ID4gVGhpcyBwYXRjaGVzIGRvZXMg dGhlIGZvbGxvd2luZzoKPiA+ID4gCj4gPiA+IDEuIFRoaXMgcGF0Y2ggZGVmaW5lcyBhbGwgdGhl IERTQyBwYXJhbWV0ZXJzIGFzIHBlciB0aGUgVkVTQQo+ID4gPiBEU0Mgc3BlY2lmaWNhdGlvbi4g VGhlc2UgYXJlIHN0b3JlZCBpbiB0aGUgZW5jb2RlciBhbmQgdXNlZAo+ID4gPiB0byBjb21wdXRl IHRoZSBQUFMgcGFyYW1ldGVycyB0byBiZSBzZW50IHRvIHRoZSBTaW5rLgo+ID4gPiAyLiBDb21w dXRlIGFsbCB0aGUgRFNDIHBhcmFtZXRlcnMgd2hpY2ggYXJlIGRlcml2ZWQgZnJvbSBEU0MKPiA+ ID4gc3RhdGUgb2YgaW50ZWxfY3J0Y19zdGF0ZS4KPiA+ID4gMy4gQ29tcHV0ZSBhbGwgcGFyYW1l dGVycyB0aGF0IGFyZSBWRVNBIERTQyBzcGVjaWZpYwo+ID4gPiAKPiA+ID4gVGhpcyBjb21wdXRh dGlvbiBoYXBwZW5zIGluIHRoZSBhdG9taWMgY2hlY2sgcGhhc2UgZHVyaW5nCj4gPiA+IGNvbXB1 dGVfY29uZmlnKCkgdG8gdmFsaWRhdGUgaWYgZGlzcGxheSBzdHJlYW0gY29tcHJlc3Npb24KPiA+ ID4gY2FuIGJlIGVuYWJsZWQgZm9yIHRoZSByZXF1ZXN0ZWQgbW9kZS4KPiA+ID4gCj4gPiA+IHY1 IChGcm9tIE1hbmFzaSk6Cj4gPiA+ICogQWRkIGxvZ2ljIHRvIGxpbWl0IHRoZSBtYXggbGluZSBi dWYgZGVwdGggZm9yIERTQyAxLjEgdG8gMTMKPiA+ID4gYXMgcGVyIERTQyAxLjEgc3BlYwo+ID4g PiAqIEZpeCBkaW0gY2hlY2twYXRjaCB3YXJuaW5ncy9jaGVja3MKPiA+ID4gCj4gPiA+IHY0IChG cm9tIEdhdXJhdik6Cj4gPiA+ICogUmViYXNlIG9uIGxhdGVzdCBkcm0gdGlwCj4gPiA+ICogcmVu YW1lIHZhcmlhYmxlIG5hbWUoTWFuYXNpKQo+ID4gPiAqIFBvcHVsYXRlIGxpbmVidWZfZGVwdGgg dmFyaWFibGUoTWFuYXNpKQo+ID4gPiAKPiA+ID4gdjMgKEZyb20gR2F1cmF2KToKPiA+ID4gKiBS ZWJhc2UgbXkgcHJldmlvdXMgcGF0Y2hlcyBvbiB0b3Agb2YgTWFuYXNpJ3MgbGF0ZXN0IHBhdGNo Cj4gPiA+IHNlcmllcwo+ID4gPiAqIFVzaW5nID4+biByYXRoZXIgdGhhbiAvMl5uIChNYW5hc2kp Cj4gPiA+ICogQ2hhbmdlIHRoZSBjb21taXQgbWVzc2FnZSB0byBleHBsYWluIHdoYXQgdGhlIHBh dGNoIGlzIGRvaW5nKEdhdXJhdikKPiA+ID4gCj4gPiA+IEZpeGVkIHJldmlldyBjb21tZW50cyBm cm9tIFZpbGxlOgo+ID4gPiAqIERvbid0IHVzZSBtYWNybyBUV09TX0NPTVBMRU1FTlQKPiA+ID4g KiBNZW50aW9uIGluIGNvbW1lbnQgYWJvdXQgdGhlIHNvdXJjZSBvZiBSQyBwYXJhbXMKPiA+ID4g KiBSZXR1cm4gZGlyZWN0bHkgZnJvbSBjYXNlIHN0YXRlbWVudHMKPiA+ID4gKiBVc2luZyBzaW5n bGUgYXNzc2lnbm1lbnQgZm9yIGFzc2lnbmluZyByY19yYW5nZV9wYXJhbXMKPiA+ID4gKiBVc2lu ZyA8PG4gcmF0aGVyIHRoYW4gKjJebiBhbmQgcmVtb3ZpbmcgdGhlIGNvbW1lbnRzCj4gPiA+IGFi b3V0IHRoZSBmaXhlZCBwb2ludCBudW1iZXJzCj4gPiA+IAo+ID4gPiB2MiAoRnJvbSBNYW5hc2kp Ogo+ID4gPiAqIFVwZGF0ZSBsb2dpYyBmb3IgbWlub3IgdmVyc2lvbiB0byBjb25zaWRlciB0aGUg ZHBjZCB2YWx1ZQo+ID4gPiBhbmQgd2hhdCBzdXBwb3J0ZWQgYnkgdGhlIEhXIHBsYXRmb3JtCj4g PiA+ICogVXNlIERSTSBEU0MgY29uZmlnIHN0cnVjdCBpbnN0ZWFkIG9mIGludGVsX2RwIHN0cnVj dAo+ID4gPiAqIE1vdmUgdGhlIERTQyBjb25zdGFudHMgdG8gRFJNIERTQyBoZWFkZXIgZmlsZQo+ ID4gPiAqIFVzZSB1MTYsIHU4IHdoZXJlIGJpZ2dlciBkYXRhIHR5cGVzIG5vdCBuZWVkZWQKPiA+ ID4gKiAqIENvbXB1dGUgdGhlIERTQyBwYXJhbWV0ZXJzIGFzIHBhcnQgb2YgRFNDIGNvbXB1dGUg Y29uZmlnCj4gPiA+IHNpbmNlIHRoZSBjb21wdXRhdGlvbiBjYW4gZmFpbCAoTWFuYXNpKQo+ID4g PiAKPiA+ID4gQ2M6IEphbmkgTmlrdWxhIDxqYW5pLm5pa3VsYUBsaW51eC5pbnRlbC5jb20+Cj4g PiA+IENjOiBWaWxsZSBTeXJqYWxhIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KPiA+ ID4gQ2M6IEFudXNoYSBTcml2YXRzYSA8YW51c2hhLnNyaXZhdHNhQGludGVsLmNvbT4KPiA+ID4g Q2M6IEdhdXJhdiBLIFNpbmdoIDxnYXVyYXYuay5zaW5naEBpbnRlbC5jb20+Cj4gPiA+IFNpZ25l ZC1vZmYtYnk6IEdhdXJhdiBLIFNpbmdoIDxnYXVyYXYuay5zaW5naEBpbnRlbC5jb20+Cj4gPiA+ IFNpZ25lZC1vZmYtYnk6IE1hbmFzaSBOYXZhcmUgPG1hbmFzaS5kLm5hdmFyZUBpbnRlbC5jb20+ Cj4gPiA+IC0tLQo+ID4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUgICAgIHwgICAz ICstCj4gPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jICAgfCAgIDcgKwo+ID4g PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggIHwgICA0ICsKPiA+ID4gIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3Zkc2MuYyB8IDQ1NSArKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKwo+ID4gPiAgaW5jbHVkZS9kcm0vZHJtX2RwX2hlbHBlci5oICAgICAg IHwgICAzICsKPiA+ID4gIGluY2x1ZGUvZHJtL2RybV9kc2MuaCAgICAgICAgICAgICB8ICAgMiAr LQo+ID4gPiAgNiBmaWxlcyBjaGFuZ2VkLCA0NzIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMo LSkKPiA+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF92 ZHNjLmMKPiA+ID4gCj4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtl ZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCj4gPiA+IGluZGV4IDU3OTRmMTAu LmRlYWYyZDQgMTAwNjQ0Cj4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxl Cj4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCj4gPiA+IEBAIC0xNTMs NyArMTUzLDggQEAgaTkxNS15ICs9IGR2b19jaDcwMTcubyBcCj4gPiA+ICAJICBpbnRlbF9zZHZv Lm8gXAo+ID4gPiAgCSAgaW50ZWxfdHYubyBcCj4gPiA+ICAJICB2bHZfZHNpLm8gXAo+ID4gPiAt CSAgdmx2X2RzaV9wbGwubwo+ID4gPiArCSAgdmx2X2RzaV9wbGwubyBcCj4gPiA+ICsJICBpbnRl bF92ZHNjLm8KPiA+ID4gIAo+ID4gPiAgIyBQb3N0LW1vcnRlbSBkZWJ1ZyBhbmQgR1BVIGhhbmcg c3RhdGUgY2FwdHVyZQo+ID4gPiAgaTkxNS0kKENPTkZJR19EUk1fSTkxNV9DQVBUVVJFX0VSUk9S KSArPSBpOTE1X2dwdV9lcnJvci5vCj4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kcC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+ID4gPiBp bmRleCA3MTMyZjUyLi5kYzBhM2MyIDEwMDY0NAo+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kcC5jCj4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rw LmMKPiA+ID4gQEAgLTIwNDIsNiArMjA0MiwxMyBAQCBzdGF0aWMgYm9vbCBpbnRlbF9kcF9kc2Nf Y29tcHV0ZV9jb25maWcoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKPiA+ID4gIAkJCXJldHVy biBmYWxzZTsKPiA+ID4gIAkJfQo+ID4gPiAgCX0KPiA+ID4gKwlpZiAoaW50ZWxfZHBfY29tcHV0 ZV9kc2NfcGFyYW1zKGludGVsX2RwLCBwaXBlX2NvbmZpZykgPCAwKSB7Cj4gPiA+ICsJCURSTV9F UlJPUigiQ2Fubm90IGNvbXB1dGUgdmFsaWQgRFNDIHBhcmFtZXRlcnMgZm9yIElucHV0IEJwcCA9 ICVkIgo+ID4gPiArCQkJICAiQ29tcHJlc3NlZCBCUFAgPSAlZFxuIiwKPiA+ID4gKwkJCSAgcGlw ZV9jb25maWctPnBpcGVfYnBwLAo+ID4gPiArCQkJICBwaXBlX2NvbmZpZy0+ZHNjX3BhcmFtcy5j b21wcmVzc2VkX2JwcCk7Cj4gPiA+ICsJCXJldHVybiBmYWxzZTsKPiA+ID4gKwl9Cj4gPiA+ICAJ cGlwZV9jb25maWctPmRzY19wYXJhbXMuY29tcHJlc3Npb25fZW5hYmxlID0gdHJ1ZTsKPiA+ID4g IAlEUk1fREVCVUdfS01TKCJEUCBEU0MgY29tcHV0ZWQgd2l0aCBJbnB1dCBCcHAgPSAlZCAiCj4g PiA+ICAJCSAgICAgICJDb21wcmVzc2VkIEJwcCA9ICVkIFNsaWNlIENvdW50ID0gJWRcbiIsCj4g PiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gPiA+IGluZGV4IGI3YzI2NTIuLjMzY2M3Nzcg MTAwNjQ0Cj4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gPiA+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gPiA+IEBAIC0xNzQ5LDYg KzE3NDksMTAgQEAgdWludDE2X3QgaW50ZWxfZHBfZHNjX2dldF9vdXRwdXRfYnBwKGludCBsaW5r X2Nsb2NrLCB1aW50OF90IGxhbmVfY291bnQsCj4gPiA+ICB1aW50OF90IGludGVsX2RwX2RzY19n ZXRfc2xpY2VfY291bnQoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwgaW50IG1vZGVfY2xvY2ss Cj4gPiA+ICAJCQkJICAgICBpbnQgbW9kZV9oZGlzcGxheSk7Cj4gPiA+ICAKPiA+ID4gKy8qIGlu dGVsX3Zkc2MuYyAqLwo+ID4gPiAraW50IGludGVsX2RwX2NvbXB1dGVfZHNjX3BhcmFtcyhzdHJ1 Y3QgaW50ZWxfZHAgKmludGVsX2RwLAo+ID4gPiArCQkJCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpwaXBlX2NvbmZpZyk7Cj4gPiA+ICsKPiA+ID4gIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50 IGludGVsX2RwX3VudXNlZF9sYW5lX21hc2soaW50IGxhbmVfY291bnQpCj4gPiA+ICB7Cj4gPiA+ ICAJcmV0dXJuIH4oKDEgPDwgbGFuZV9jb3VudCkgLSAxKSAmIDB4ZjsKPiA+ID4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Zkc2MuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3Zkc2MuYwo+ID4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+ID4gPiBpbmRleCAw MDAwMDAwLi5lY2QyNzBjCj4gPiA+IC0tLSAvZGV2L251bGwKPiA+ID4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfdmRzYy5jCj4gPiA+IEBAIC0wLDAgKzEsNDU1IEBACj4gPiA+ICsv Kgo+ID4gPiArICogQ29weXJpZ2h0IMKpIDIwMTggSW50ZWwgQ29ycG9yYXRpb24KPiA+ID4gKyAq Cj4gPiA+ICsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwg dG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQo+ID4gPiArICogY29weSBvZiB0aGlzIHNvZnR3YXJl IGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKPiA+ ID4gKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1 ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KPiA+ID4gKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5 LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAo+ID4gPiAr ICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJz b25zIHRvIHdob20gdGhlCj4gPiA+ICsgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28s IHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgo+ID4gPiArICoKPiA+ID4gKyAq IFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChp bmNsdWRpbmcgdGhlIG5leHQKPiA+ID4gKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQg aW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKPiA+ID4gKyAqIFNv ZnR3YXJlLgo+ID4gPiArICoKPiA+ID4gKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMg SVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCj4gPiA+ICsgKiBJ TVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1F UkNIQU5UQUJJTElUWSwKPiA+ID4gKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF IEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAo+ID4gPiArICogVEhFIEFV VEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFH RVMgT1IgT1RIRVIKPiA+ID4gKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0Yg Q09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCj4gPiA+ICsgKiBGUk9NLCBPVVQg T0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVS Cj4gPiA+ICsgKiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCj4gPiA+ICsgKgo+ID4gPiArICog QXV0aG9yOiBHYXVyYXYgSyBTaW5naCA8Z2F1cmF2Lmsuc2luZ2hAaW50ZWwuY29tPgo+ID4gPiAr ICogICAgICAgICBNYW5hc2kgTmF2YXJlIDxtYW5hc2kuZC5uYXZhcmVAaW50ZWwuY29tPgo+ID4g PiArICovCj4gPiA+ICsKPiA+ID4gKyNpbmNsdWRlIDxkcm0vZHJtUC5oPgo+ID4gPiArI2luY2x1 ZGUgPGRybS9pOTE1X2RybS5oPgo+ID4gPiArI2luY2x1ZGUgImk5MTVfZHJ2LmgiCj4gPiA+ICsj aW5jbHVkZSAiaW50ZWxfZHJ2LmgiCj4gPiA+ICsKPiA+ID4gK2VudW0gUk9XX0lOREVYX0JQUCB7 Cj4gPiA+ICsJUk9XX0lOREVYXzZCUFAgPSAwLAo+ID4gPiArCVJPV19JTkRFWF84QlBQLAo+ID4g PiArCVJPV19JTkRFWF8xMEJQUCwKPiA+ID4gKwlST1dfSU5ERVhfMTJCUFAsCj4gPiA+ICsJUk9X X0lOREVYXzE1QlBQLAo+ID4gPiArCU1BWF9ST1dfSU5ERVgKPiA+ID4gK307Cj4gPiA+ICsKPiA+ ID4gK2VudW0gQ09MVU1OX0lOREVYX0JQQyB7Cj4gPiA+ICsJQ09MVU1OX0lOREVYXzhCUEMgPSAw LAo+ID4gPiArCUNPTFVNTl9JTkRFWF8xMEJQQywKPiA+ID4gKwlDT0xVTU5fSU5ERVhfMTJCUEMs Cj4gPiA+ICsJQ09MVU1OX0lOREVYXzE0QlBDLAo+ID4gPiArCUNPTFVNTl9JTkRFWF8xNkJQQywK PiA+ID4gKwlNQVhfQ09MVU1OX0lOREVYCj4gPiA+ICt9Owo+ID4gPiArCj4gPiA+ICsjZGVmaW5l IERTQ19TVVBQT1JURURfVkVSU0lPTl9NSU4JCTEKPiA+ID4gKwo+ID4gPiArLyogRnJvbSBEU0Nf djEuMTEgc3BlYywgcmNfcGFyYW1ldGVyX1NldCBzeW50YXggZWxlbWVudCB0eXBpY2FsbHkgY29u c3RhbnQgKi8KPiA+ID4gK3N0YXRpYyB1MTYgcmNfYnVmX3RocmVzaFtdID0gewo+ID4gPiArCTg5 NiwgMTc5MiwgMjY4OCwgMzU4NCwgNDQ4MCwgNTM3NiwgNjI3MiwgNjcyMCwgNzE2OCwgNzYxNiwK PiA+ID4gKwk3NzQ0LCA3ODcyLCA4MDAwLCA4MDY0Cj4gPiA+ICt9Owo+ID4gPiArCj4gPiA+ICtz dHJ1Y3QgcmNfcGFyYW1ldGVycyB7Cj4gPiA+ICsJdTE2IGluaXRpYWxfeG1pdF9kZWxheTsKPiA+ ID4gKwl1OCBmaXJzdF9saW5lX2JwZ19vZmZzZXQ7Cj4gPiA+ICsJdTE2IGluaXRpYWxfb2Zmc2V0 Owo+ID4gPiArCXU4IGZsYXRuZXNzX21pbl9xcDsKPiA+ID4gKwl1OCBmbGF0bmVzc19tYXhfcXA7 Cj4gPiA+ICsJdTggcmNfcXVhbnRfaW5jcl9saW1pdDA7Cj4gPiA+ICsJdTggcmNfcXVhbnRfaW5j cl9saW1pdDE7Cj4gPiA+ICsJc3RydWN0IGRzY19yY19yYW5nZV9wYXJhbWV0ZXJzIHJjX3Jhbmdl X3BhcmFtc1tEU0NfTlVNX0JVRl9SQU5HRVNdOwo+ID4gPiArfTsKPiA+ID4gKwo+ID4gPiArLyoK PiA+ID4gKyAqIFNlbGVjdGVkIFJhdGUgQ29udHJvbCBSZWxhdGVkIFBhcmFtZXRlciBSZWNvbW1l bmRlZCBWYWx1ZXMKPiA+ID4gKyAqIGZyb20gRFNDX3YxLjExIHNwZWMgJiBDIE1vZGVsIHJlbGVh c2U6IERTQ19tb2RlbF8yMDE2MTIxMgo+ID4gPiArICovCj4gPiA+ICtzdGF0aWMgc3RydWN0IHJj X3BhcmFtZXRlcnMgcmNfcGFyYW1zW11bTUFYX0NPTFVNTl9JTkRFWF0gPSB7Cj4gPiA+ICt7Cj4g PiA+ICsJLyogNkJQUC84QlBDICovCj4gPiA+ICsJeyA3NjgsIDE1LCA2MTQ0LCAzLCAxMywgMTEs IDExLCB7Cj4gPiA+ICsJCXsgMCwgNCwgMCB9LCB7IDEsIDYsIC0yIH0sIHsgMywgOCwgLTIgfSwg eyA0LCA4LCAtNCB9LAo+ID4gPiArCQl7IDUsIDksIC02IH0sIHsgNSwgOSwgLTYgfSwgeyA2LCA5 LCAtNiB9LCB7IDYsIDEwLCAtOCB9LAo+ID4gPiArCQl7IDcsIDExLCAtOCB9LCB7IDgsIDEyLCAt MTAgfSwgeyA5LCAxMiwgLTEwIH0sIHsgMTAsIDEyLCAtMTIgfSwKPiA+ID4gKwkJeyAxMCwgMTIs IC0xMiB9LCB7IDExLCAxMiwgLTEyIH0sIHsgMTMsIDE0LCAtMTIgfQo+ID4gPiArCQl9Cj4gPiA+ ICsJfSwKPiA+ID4gKwkvKiA2QlBQLzEwQlBDICovCj4gPiA+ICsJeyA3NjgsIDE1LCA2MTQ0LCA3 LCAxNywgMTUsIDE1LCB7Cj4gPiA+ICsJCXsgMCwgOCwgMCB9LCB7IDMsIDEwLCAtMiB9LCB7IDcs IDEyLCAtMiB9LCB7IDgsIDEyLCAtNCB9LAo+ID4gPiArCQl7IDksIDEzLCAtNiB9LCB7IDksIDEz LCAtNiB9LCB7IDEwLCAxMywgLTYgfSwgeyAxMCwgMTQsIC04IH0sCj4gPiA+ICsJCXsgMTEsIDE1 LCAtOCB9LCB7IDEyLCAxNiwgLTEwIH0sIHsgMTMsIDE2LCAtMTAgfSwKPiA+ID4gKwkJeyAxNCwg MTYsIC0xMiB9LCB7IDE0LCAxNiwgLTEyIH0sIHsgMTUsIDE2LCAtMTIgfSwKPiA+ID4gKwkJeyAx NywgMTgsIC0xMiB9Cj4gPiA+ICsJCX0KPiA+ID4gKwl9LAo+ID4gPiArCS8qIDZCUFAvMTJCUEMg Ki8KPiA+ID4gKwl7IDc2OCwgMTUsIDYxNDQsIDExLCAyMSwgMTksIDE5LCB7Cj4gPiA+ICsJCXsg MCwgMTIsIDAgfSwgeyA1LCAxNCwgLTIgfSwgeyAxMSwgMTYsIC0yIH0sIHsgMTIsIDE2LCAtNCB9 LAo+ID4gPiArCQl7IDEzLCAxNywgLTYgfSwgeyAxMywgMTcsIC02IH0sIHsgMTQsIDE3LCAtNiB9 LCB7IDE0LCAxOCwgLTggfSwKPiA+ID4gKwkJeyAxNSwgMTksIC04IH0sIHsgMTYsIDIwLCAtMTAg fSwgeyAxNywgMjAsIC0xMCB9LAo+ID4gPiArCQl7IDE4LCAyMCwgLTEyIH0sIHsgMTgsIDIwLCAt MTIgfSwgeyAxOSwgMjAsIC0xMiB9LAo+ID4gPiArCQl7IDIxLCAyMiwgLTEyIH0KPiA+ID4gKwkJ fQo+ID4gPiArCX0sCj4gPiA+ICsJLyogNkJQUC8xNEJQQyAqLwo+ID4gPiArCXsgNzY4LCAxNSwg NjE0NCwgMTUsIDI1LCAyMywgMjcsIHsKPiA+ID4gKwkJeyAwLCAxNiwgMCB9LCB7IDcsIDE4LCAt MiB9LCB7IDE1LCAyMCwgLTIgfSwgeyAxNiwgMjAsIC00IH0sCj4gPiA+ICsJCXsgMTcsIDIxLCAt NiB9LCB7IDE3LCAyMSwgLTYgfSwgeyAxOCwgMjEsIC02IH0sIHsgMTgsIDIyLCAtOCB9LAo+ID4g PiArCQl7IDE5LCAyMywgLTggfSwgeyAyMCwgMjQsIC0xMCB9LCB7IDIxLCAyNCwgLTEwIH0sCj4g PiA+ICsJCXsgMjIsIDI0LCAtMTIgfSwgeyAyMiwgMjQsIC0xMiB9LCB7IDIzLCAyNCwgLTEyIH0s Cj4gPiA+ICsJCXsgMjUsIDI2LCAtMTIgfQo+ID4gPiArCQl9Cj4gPiA+ICsJfSwKPiA+ID4gKwkv KiA2QlBQLzE2QlBDICovCj4gPiA+ICsJeyA3NjgsIDE1LCA2MTQ0LCAxOSwgMjksIDI3LCAyNywg ewo+ID4gPiArCQl7IDAsIDIwLCAwIH0sIHsgOSwgMjIsIC0yIH0sIHsgMTksIDI0LCAtMiB9LCB7 IDIwLCAyNCwgLTQgfSwKPiA+ID4gKwkJeyAyMSwgMjUsIC02IH0sIHsgMjEsIDI1LCAtNiB9LCB7 IDIyLCAyNSwgLTYgfSwgeyAyMiwgMjYsIC04IH0sCj4gPiA+ICsJCXsgMjMsIDI3LCAtOCB9LCB7 IDI0LCAyOCwgLTEwIH0sIHsgMjUsIDI4LCAtMTAgfSwKPiA+ID4gKwkJeyAyNiwgMjgsIC0xMiB9 LCB7IDI2LCAyOCwgLTEyIH0sIHsgMjcsIDI4LCAtMTIgfSwKPiA+ID4gKwkJeyAyOSwgMzAsIC0x MiB9Cj4gPiA+ICsJCX0KPiA+ID4gKwl9LAo+ID4gPiArfSwKPiA+ID4gK3sKPiA+ID4gKwkvKiA4 QlBQLzhCUEMgKi8KPiA+ID4gKwl7IDUxMiwgMTIsIDYxNDQsIDMsIDEyLCAxMSwgMTEsIHsKPiA+ ID4gKwkJeyAwLCA0LCAyIH0sIHsgMCwgNCwgMCB9LCB7IDEsIDUsIDAgfSwgeyAxLCA2LCAtMiB9 LAo+ID4gPiArCQl7IDMsIDcsIC00IH0sIHsgMywgNywgLTYgfSwgeyAzLCA3LCAtOCB9LCB7IDMs IDgsIC04IH0sCj4gPiA+ICsJCXsgMywgOSwgLTggfSwgeyAzLCAxMCwgLTEwIH0sIHsgNSwgMTEs IC0xMCB9LCB7IDUsIDEyLCAtMTIgfSwKPiA+ID4gKwkJeyA1LCAxMywgLTEyIH0sIHsgNywgMTMs IC0xMiB9LCB7IDEzLCAxNSwgLTEyIH0KPiA+ID4gKwkJfQo+ID4gPiArCX0sCj4gPiA+ICsJLyog OEJQUC8xMEJQQyAqLwo+ID4gPiArCXsgNTEyLCAxMiwgNjE0NCwgNywgMTYsIDE1LCAxNSwgewo+ ID4gPiArCQl7IDAsIDQsIDIgfSwgeyA0LCA4LCAwIH0sIHsgNSwgOSwgMCB9LCB7IDUsIDEwLCAt MiB9LAo+ID4gPiArCQl7IDcsIDExLCAtNCB9LCB7IDcsIDExLCAtNiB9LCB7IDcsIDExLCAtOCB9 LCB7IDcsIDEyLCAtOCB9LAo+ID4gPiArCQl7IDcsIDEzLCAtOCB9LCB7IDcsIDE0LCAtMTAgfSwg eyA5LCAxNSwgLTEwIH0sIHsgOSwgMTYsIC0xMiB9LAo+ID4gPiArCQl7IDksIDE3LCAtMTIgfSwg eyAxMSwgMTcsIC0xMiB9LCB7IDE3LCAxOSwgLTEyIH0KPiA+ID4gKwkJfQo+ID4gPiArCX0sCj4g PiA+ICsJLyogOEJQUC8xMkJQQyAqLwo+ID4gPiArCXsgNTEyLCAxMiwgNjE0NCwgMTEsIDIwLCAx OSwgMTksIHsKPiA+ID4gKwkJeyAwLCAxMiwgMiB9LCB7IDQsIDEyLCAwIH0sIHsgOSwgMTMsIDAg fSwgeyA5LCAxNCwgLTIgfSwKPiA+ID4gKwkJeyAxMSwgMTUsIC00IH0sIHsgMTEsIDE1LCAtNiB9 LCB7IDExLCAxNSwgLTggfSwgeyAxMSwgMTYsIC04IH0sCj4gPiA+ICsJCXsgMTEsIDE3LCAtOCB9 LCB7IDExLCAxOCwgLTEwIH0sIHsgMTMsIDE5LCAtMTAgfSwKPiA+ID4gKwkJeyAxMywgMjAsIC0x MiB9LCB7IDEzLCAyMSwgLTEyIH0sIHsgMTUsIDIxLCAtMTIgfSwKPiA+ID4gKwkJeyAyMSwgMjMs IC0xMiB9Cj4gPiA+ICsJCX0KPiA+ID4gKwl9LAo+ID4gPiArCS8qIDhCUFAvMTRCUEMgKi8KPiA+ ID4gKwl7IDUxMiwgMTIsIDYxNDQsIDE1LCAyNCwgMjMsIDIzLCB7Cj4gPiA+ICsJCXsgMCwgMTIs IDAgfSwgeyA1LCAxMywgMCB9LCB7IDExLCAxNSwgMCB9LCB7IDEyLCAxNywgLTIgfSwKPiA+ID4g KwkJeyAxNSwgMTksIC00IH0sIHsgMTUsIDE5LCAtNiB9LCB7IDE1LCAxOSwgLTggfSwgeyAxNSwg MjAsIC04IH0sCj4gPiA+ICsJCXsgMTUsIDIxLCAtOCB9LCB7IDE1LCAyMiwgLTEwIH0sIHsgMTcs IDIyLCAtMTAgfSwKPiA+ID4gKwkJeyAxNywgMjMsIC0xMiB9LCB7IDE3LCAyMywgLTEyIH0sIHsg MjEsIDI0LCAtMTIgfSwKPiA+ID4gKwkJeyAyNCwgMjUsIC0xMiB9Cj4gPiA+ICsJCX0KPiA+ID4g Kwl9LAo+ID4gPiArCS8qIDhCUFAvMTZCUEMgKi8KPiA+ID4gKwl7IDUxMiwgMTIsIDYxNDQsIDE5 LCAyOCwgMjcsIDI3LCB7Cj4gPiA+ICsJCXsgMCwgMTIsIDIgfSwgeyA2LCAxNCwgMCB9LCB7IDEz LCAxNywgMCB9LCB7IDE1LCAyMCwgLTIgfSwKPiA+ID4gKwkJeyAxOSwgMjMsIC00IH0sIHsgMTks IDIzLCAtNiB9LCB7IDE5LCAyMywgLTggfSwgeyAxOSwgMjQsIC04IH0sCj4gPiA+ICsJCXsgMTks IDI1LCAtOCB9LCB7IDE5LCAyNiwgLTEwIH0sIHsgMjEsIDI2LCAtMTAgfSwKPiA+ID4gKwkJeyAy MSwgMjcsIC0xMiB9LCB7IDIxLCAyNywgLTEyIH0sIHsgMjUsIDI4LCAtMTIgfSwKPiA+ID4gKwkJ eyAyOCwgMjksIC0xMiB9Cj4gPiA+ICsJCX0KPiA+ID4gKwl9LAo+ID4gPiArfSwKPiA+ID4gK3sK PiA+ID4gKwkvKiAxMEJQUC84QlBDICovCj4gPiA+ICsJeyA0MTAsIDE1LCA1NjMyLCAzLCAxMiwg MTEsIDExLCB7Cj4gPiA+ICsJCXsgMCwgMywgMiB9LCB7IDAsIDQsIDAgfSwgeyAxLCA1LCAwIH0s IHsgMiwgNiwgLTIgfSwKPiA+ID4gKwkJeyAzLCA3LCAtNCB9LCB7IDMsIDcsIC02IH0sIHsgMywg NywgLTggfSwgeyAzLCA4LCAtOCB9LAo+ID4gPiArCQl7IDMsIDksIC04IH0sIHsgMywgOSwgLTEw IH0sIHsgNSwgMTAsIC0xMCB9LCB7IDUsIDEwLCAtMTAgfSwKPiA+ID4gKwkJeyA1LCAxMSwgLTEy IH0sIHsgNywgMTEsIC0xMiB9LCB7IDExLCAxMiwgLTEyIH0KPiA+ID4gKwkJfQo+ID4gPiArCX0s Cj4gPiA+ICsJLyogMTBCUFAvMTBCUEMgKi8KPiA+ID4gKwl7IDQxMCwgMTUsIDU2MzIsIDcsIDE2 LCAxNSwgMTUsIHsKPiA+ID4gKwkJeyAwLCA3LCAyIH0sIHsgNCwgOCwgMCB9LCB7IDUsIDksIDAg fSwgeyA2LCAxMCwgLTIgfSwKPiA+ID4gKwkJeyA3LCAxMSwgLTQgfSwgeyA3LCAxMSwgLTYgfSwg eyA3LCAxMSwgLTggfSwgeyA3LCAxMiwgLTggfSwKPiA+ID4gKwkJeyA3LCAxMywgLTggfSwgeyA3 LCAxMywgLTEwIH0sIHsgOSwgMTQsIC0xMCB9LCB7IDksIDE0LCAtMTAgfSwKPiA+ID4gKwkJeyA5 LCAxNSwgLTEyIH0sIHsgMTEsIDE1LCAtMTIgfSwgeyAxNSwgMTYsIC0xMiB9Cj4gPiA+ICsJCX0K PiA+ID4gKwl9LAo+ID4gPiArCS8qIDEwQlBQLzEyQlBDICovCj4gPiA+ICsJeyA0MTAsIDE1LCA1 NjMyLCAxMSwgMjAsIDE5LCAxOSwgewo+ID4gPiArCQl7IDAsIDExLCAyIH0sIHsgNCwgMTIsIDAg fSwgeyA5LCAxMywgMCB9LCB7IDEwLCAxNCwgLTIgfSwKPiA+ID4gKwkJeyAxMSwgMTUsIC00IH0s IHsgMTEsIDE1LCAtNiB9LCB7IDExLCAxNSwgLTggfSwgeyAxMSwgMTYsIC04IH0sCj4gPiA+ICsJ CXsgMTEsIDE3LCAtOCB9LCB7IDExLCAxNywgLTEwIH0sIHsgMTMsIDE4LCAtMTAgfSwKPiA+ID4g KwkJeyAxMywgMTgsIC0xMCB9LCB7IDEzLCAxOSwgLTEyIH0sIHsgMTUsIDE5LCAtMTIgfSwKPiA+ ID4gKwkJeyAxOSwgMjAsIC0xMiB9Cj4gPiA+ICsJCX0KPiA+ID4gKwl9LAo+ID4gPiArCS8qIDEw QlBQLzE0QlBDICovCj4gPiA+ICsJeyA0MTAsIDE1LCA1NjMyLCAxNSwgMjQsIDIzLCAyMywgewo+ ID4gPiArCQl7IDAsIDExLCAyIH0sIHsgNSwgMTMsIDAgfSwgeyAxMSwgMTUsIDAgfSwgeyAxMywg MTgsIC0yIH0sCj4gPiA+ICsJCXsgMTUsIDE5LCAtNCB9LCB7IDE1LCAxOSwgLTYgfSwgeyAxNSwg MTksIC04IH0sIHsgMTUsIDIwLCAtOCB9LAo+ID4gPiArCQl7IDE1LCAyMSwgLTggfSwgeyAxNSwg MjEsIC0xMCB9LCB7IDE3LCAyMiwgLTEwIH0sCj4gPiA+ICsJCXsgMTcsIDIyLCAtMTAgfSwgeyAx NywgMjMsIC0xMiB9LCB7IDE5LCAyMywgLTEyIH0sCj4gPiA+ICsJCXsgMjMsIDI0LCAtMTIgfQo+ ID4gPiArCQl9Cj4gPiA+ICsJfSwKPiA+ID4gKwkvKiAxMEJQUC8xNkJQQyAqLwo+ID4gPiArCXsg NDEwLCAxNSwgNTYzMiwgMTksIDI4LCAyNywgMjcsIHsKPiA+ID4gKwkJeyAwLCAxMSwgMiB9LCB7 IDYsIDE0LCAwIH0sIHsgMTMsIDE3LCAwIH0sIHsgMTYsIDIwLCAtMiB9LAo+ID4gPiArCQl7IDE5 LCAyMywgLTQgfSwgeyAxOSwgMjMsIC02IH0sIHsgMTksIDIzLCAtOCB9LCB7IDE5LCAyNCwgLTgg fSwKPiA+ID4gKwkJeyAxOSwgMjUsIC04IH0sIHsgMTksIDI1LCAtMTAgfSwgeyAyMSwgMjYsIC0x MCB9LAo+ID4gPiArCQl7IDIxLCAyNiwgLTEwIH0sIHsgMjEsIDI3LCAtMTIgfSwgeyAyMywgMjcs IC0xMiB9LAo+ID4gPiArCQl7IDI3LCAyOCwgLTEyIH0KPiA+ID4gKwkJfQo+ID4gPiArCX0sCj4g PiA+ICt9LAo+ID4gPiArewo+ID4gPiArCS8qIDEyQlBQLzhCUEMgKi8KPiA+ID4gKwl7IDM0MSwg MTUsIDIwNDgsIDMsIDEyLCAxMSwgMTEsIHsKPiA+ID4gKwkJeyAwLCAyLCAyIH0sIHsgMCwgNCwg MCB9LCB7IDEsIDUsIDAgfSwgeyAxLCA2LCAtMiB9LAo+ID4gPiArCQl7IDMsIDcsIC00IH0sIHsg MywgNywgLTYgfSwgeyAzLCA3LCAtOCB9LCB7IDMsIDgsIC04IH0sCj4gPiA+ICsJCXsgMywgOSwg LTggfSwgeyAzLCAxMCwgLTEwIH0sIHsgNSwgMTEsIC0xMCB9LAo+ID4gPiArCQl7IDUsIDEyLCAt MTIgfSwgeyA1LCAxMywgLTEyIH0sIHsgNywgMTMsIC0xMiB9LCB7IDEzLCAxNSwgLTEyIH0KPiA+ ID4gKwkJfQo+ID4gPiArCX0sCj4gPiA+ICsJLyogMTJCUFAvMTBCUEMgKi8KPiA+ID4gKwl7IDM0 MSwgMTUsIDIwNDgsIDcsIDE2LCAxNSwgMTUsIHsKPiA+ID4gKwkJeyAwLCAyLCAyIH0sIHsgMiwg NSwgMCB9LCB7IDMsIDcsIDAgfSwgeyA0LCA4LCAtMiB9LAo+ID4gPiArCQl7IDYsIDksIC00IH0s IHsgNywgMTAsIC02IH0sIHsgNywgMTEsIC04IH0sIHsgNywgMTIsIC04IH0sCj4gPiA+ICsJCXsg NywgMTMsIC04IH0sIHsgNywgMTQsIC0xMCB9LCB7IDksIDE1LCAtMTAgfSwgeyA5LCAxNiwgLTEy IH0sCj4gPiA+ICsJCXsgOSwgMTcsIC0xMiB9LCB7IDExLCAxNywgLTEyIH0sIHsgMTcsIDE5LCAt MTIgfQo+ID4gPiArCQl9Cj4gPiA+ICsJfSwKPiA+ID4gKwkvKiAxMkJQUC8xMkJQQyAqLwo+ID4g PiArCXsgMzQxLCAxNSwgMjA0OCwgMTEsIDIwLCAxOSwgMTksIHsKPiA+ID4gKwkJeyAwLCA2LCAy IH0sIHsgNCwgOSwgMCB9LCB7IDcsIDExLCAwIH0sIHsgOCwgMTIsIC0yIH0sCj4gPiA+ICsJCXsg MTAsIDEzLCAtNCB9LCB7IDExLCAxNCwgLTYgfSwgeyAxMSwgMTUsIC04IH0sIHsgMTEsIDE2LCAt OCB9LAo+ID4gPiArCQl7IDExLCAxNywgLTggfSwgeyAxMSwgMTgsIC0xMCB9LCB7IDEzLCAxOSwg LTEwIH0sCj4gPiA+ICsJCXsgMTMsIDIwLCAtMTIgfSwgeyAxMywgMjEsIC0xMiB9LCB7IDE1LCAy MSwgLTEyIH0sCj4gPiA+ICsJCXsgMjEsIDIzLCAtMTIgfQo+ID4gPiArCQl9Cj4gPiA+ICsJfSwK PiA+ID4gKwkvKiAxMkJQUC8xNEJQQyAqLwo+ID4gPiArCXsgMzQxLCAxNSwgMjA0OCwgMTUsIDI0 LCAyMywgMjMsIHsKPiA+ID4gKwkJeyAwLCA2LCAyIH0sIHsgNywgMTAsIDAgfSwgeyA5LCAxMywg MCB9LCB7IDExLCAxNiwgLTIgfSwKPiA+ID4gKwkJeyAxNCwgMTcsIC00IH0sIHsgMTUsIDE4LCAt NiB9LCB7IDE1LCAxOSwgLTggfSwgeyAxNSwgMjAsIC04IH0sCj4gPiA+ICsJCXsgMTUsIDIwLCAt OCB9LCB7IDE1LCAyMSwgLTEwIH0sIHsgMTcsIDIxLCAtMTAgfSwKPiA+ID4gKwkJeyAxNywgMjEs IC0xMiB9LCB7IDE3LCAyMSwgLTEyIH0sIHsgMTksIDIyLCAtMTIgfSwKPiA+ID4gKwkJeyAyMiwg MjMsIC0xMiB9Cj4gPiA+ICsJCX0KPiA+ID4gKwl9LAo+ID4gPiArCS8qIDEyQlBQLzE2QlBDICov Cj4gPiA+ICsJeyAzNDEsIDE1LCAyMDQ4LCAxOSwgMjgsIDI3LCAyNywgewo+ID4gPiArCQl7IDAs IDYsIDIgfSwgeyA2LCAxMSwgMCB9LCB7IDExLCAxNSwgMCB9LCB7IDE0LCAxOCwgLTIgfSwKPiA+ ID4gKwkJeyAxOCwgMjEsIC00IH0sIHsgMTksIDIyLCAtNiB9LCB7IDE5LCAyMywgLTggfSwgeyAx OSwgMjQsIC04IH0sCj4gPiA+ICsJCXsgMTksIDI0LCAtOCB9LCB7IDE5LCAyNSwgLTEwIH0sIHsg MjEsIDI1LCAtMTAgfSwKPiA+ID4gKwkJeyAyMSwgMjUsIC0xMiB9LCB7IDIxLCAyNSwgLTEyIH0s IHsgMjMsIDI2LCAtMTIgfSwKPiA+ID4gKwkJeyAyNiwgMjcsIC0xMiB9Cj4gPiA+ICsJCX0KPiA+ ID4gKwl9LAo+ID4gPiArfSwKPiA+ID4gK3sKPiA+ID4gKwkvKiAxNUJQUC84QlBDICovCj4gPiA+ ICsJeyAyNzMsIDE1LCAyMDQ4LCAzLCAxMiwgMTEsIDExLCB7Cj4gPiA+ICsJCXsgMCwgMCwgMTAg fSwgeyAwLCAxLCA4IH0sIHsgMCwgMSwgNiB9LCB7IDAsIDIsIDQgfSwKPiA+ID4gKwkJeyAxLCAy LCAyIH0sIHsgMSwgMywgMCB9LCB7IDEsIDMsIC0yIH0sIHsgMiwgNCwgLTQgfSwKPiA+ID4gKwkJ eyAyLCA1LCAtNiB9LCB7IDMsIDUsIC04IH0sIHsgNCwgNiwgLTEwIH0sIHsgNCwgNywgLTEwIH0s Cj4gPiA+ICsJCXsgNSwgNywgLTEyIH0sIHsgNywgOCwgLTEyIH0sIHsgOCwgOSwgLTEyIH0KPiA+ ID4gKwkJfQo+ID4gPiArCX0sCj4gPiA+ICsJLyogMTVCUFAvMTBCUEMgKi8KPiA+ID4gKwl7IDI3 MywgMTUsIDIwNDgsIDcsIDE2LCAxNSwgMTUsIHsKPiA+ID4gKwkJeyAwLCAyLCAxMCB9LCB7IDIs IDUsIDggfSwgeyAzLCA1LCA2IH0sIHsgNCwgNiwgNCB9LAo+ID4gPiArCQl7IDUsIDYsIDIgfSwg eyA1LCA3LCAwIH0sIHsgNSwgNywgLTIgfSwgeyA2LCA4LCAtNCB9LAo+ID4gPiArCQl7IDYsIDks IC02IH0sIHsgNywgOSwgLTggfSwgeyA4LCAxMCwgLTEwIH0sIHsgOCwgMTEsIC0xMCB9LAo+ID4g PiArCQl7IDksIDExLCAtMTIgfSwgeyAxMSwgMTIsIC0xMiB9LCB7IDEyLCAxMywgLTEyIH0KPiA+ ID4gKwkJfQo+ID4gPiArCX0sCj4gPiA+ICsJLyogMTVCUFAvMTJCUEMgKi8KPiA+ID4gKwl7IDI3 MywgMTUsIDIwNDgsIDExLCAyMCwgMTksIDE5LCB7Cj4gPiA+ICsJCXsgMCwgNCwgMTAgfSwgeyAy LCA3LCA4IH0sIHsgNCwgOSwgNiB9LCB7IDYsIDExLCA0IH0sCj4gPiA+ICsJCXsgOSwgMTEsIDIg fSwgeyA5LCAxMSwgMCB9LCB7IDksIDEyLCAtMiB9LCB7IDEwLCAxMiwgLTQgfSwKPiA+ID4gKwkJ eyAxMSwgMTMsIC02IH0sIHsgMTEsIDEzLCAtOCB9LCB7IDEyLCAxNCwgLTEwIH0sCj4gPiA+ICsJ CXsgMTMsIDE1LCAtMTAgfSwgeyAxMywgMTUsIC0xMiB9LCB7IDE1LCAxNiwgLTEyIH0sCj4gPiA+ ICsJCXsgMTYsIDE3LCAtMTIgfQo+ID4gPiArCQl9Cj4gPiA+ICsJfSwKPiA+ID4gKwkvKiAxNUJQ UC8xNEJQQyAqLwo+ID4gPiArCXsgMjczLCAxNSwgMjA0OCwgMTUsIDI0LCAyMywgMjMsIHsKPiA+ ID4gKwkJeyAwLCA0LCAxMCB9LCB7IDMsIDgsIDggfSwgeyA2LCAxMSwgNiB9LCB7IDksIDE0LCA0 IH0sCj4gPiA+ICsJCXsgMTMsIDE1LCAyIH0sIHsgMTMsIDE1LCAwIH0sIHsgMTMsIDE2LCAtMiB9 LCB7IDE0LCAxNiwgLTQgfSwKPiA+ID4gKwkJeyAxNSwgMTcsIC02IH0sIHsgMTUsIDE3LCAtOCB9 LCB7IDE2LCAxOCwgLTEwIH0sCj4gPiA+ICsJCXsgMTcsIDE5LCAtMTAgfSwgeyAxNywgMTksIC0x MiB9LCB7IDE5LCAyMCwgLTEyIH0sCj4gPiA+ICsJCXsgMjAsIDIxLCAtMTIgfQo+ID4gPiArCQl9 Cj4gPiA+ICsJfSwKPiA+ID4gKwkvKiAxNUJQUC8xNkJQQyAqLwo+ID4gPiArCXsgMjczLCAxNSwg MjA0OCwgMTksIDI4LCAyNywgMjcsIHsKPiA+ID4gKwkJeyAwLCA0LCAxMCB9LCB7IDQsIDksIDgg fSwgeyA4LCAxMywgNiB9LCB7IDEyLCAxNywgNCB9LAo+ID4gPiArCQl7IDE3LCAxOSwgMiB9LCB7 IDE3LCAyMCwgMCB9LCB7IDE3LCAyMCwgLTIgfSwgeyAxOCwgMjAsIC00IH0sCj4gPiA+ICsJCXsg MTksIDIxLCAtNiB9LCB7IDE5LCAyMSwgLTggfSwgeyAyMCwgMjIsIC0xMCB9LAo+ID4gPiArCQl7 IDIxLCAyMywgLTEwIH0sIHsgMjEsIDIzLCAtMTIgfSwgeyAyMywgMjQsIC0xMiB9LAo+ID4gPiAr CQl7IDI0LCAyNSwgLTEyIH0KPiA+ID4gKwkJfQo+ID4gPiArCX0KPiA+ID4gK30KPiA+ID4gK307 Cj4gPiA+ICsKPiA+ID4gK3N0YXRpYyBpbnQgZ2V0X3Jvd19pbmRleF9mb3JfcmNfcGFyYW1zKHUx NiBjb21wcmVzc2VkX2JwcCkKPiA+ID4gK3sKPiA+ID4gKwlzd2l0Y2ggKGNvbXByZXNzZWRfYnBw KSB7Cj4gPiA+ICsJY2FzZSA2Ogo+ID4gPiArCQlyZXR1cm4gUk9XX0lOREVYXzZCUFA7Cj4gPiA+ ICsJY2FzZSA4Ogo+ID4gPiArCQlyZXR1cm4gUk9XX0lOREVYXzhCUFA7Cj4gPiA+ICsJY2FzZSAx MDoKPiA+ID4gKwkJcmV0dXJuIFJPV19JTkRFWF8xMEJQUDsKPiA+ID4gKwljYXNlIDEyOgo+ID4g PiArCQlyZXR1cm4gUk9XX0lOREVYXzEyQlBQOwo+ID4gPiArCWNhc2UgMTU6Cj4gPiA+ICsJCXJl dHVybiBST1dfSU5ERVhfMTVCUFA7Cj4gPiA+ICsJZGVmYXVsdDoKPiA+ID4gKwkJcmV0dXJuIC1F SU5WQUw7Cj4gPiA+ICsJfQo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICtzdGF0aWMgaW50IGdldF9j b2x1bW5faW5kZXhfZm9yX3JjX3BhcmFtcyh1OCBiaXRzX3Blcl9jb21wb25lbnQpCj4gPiA+ICt7 Cj4gPiA+ICsJc3dpdGNoIChiaXRzX3Blcl9jb21wb25lbnQpIHsKPiA+ID4gKwljYXNlIDg6Cj4g PiA+ICsJCXJldHVybiBDT0xVTU5fSU5ERVhfOEJQQzsKPiA+ID4gKwljYXNlIDEwOgo+ID4gPiAr CQlyZXR1cm4gQ09MVU1OX0lOREVYXzEwQlBDOwo+ID4gPiArCWNhc2UgMTI6Cj4gPiA+ICsJCXJl dHVybiBDT0xVTU5fSU5ERVhfMTJCUEM7Cj4gPiA+ICsJY2FzZSAxNDoKPiA+ID4gKwkJcmV0dXJu IENPTFVNTl9JTkRFWF8xNEJQQzsKPiA+ID4gKwljYXNlIDE2Ogo+ID4gPiArCQlyZXR1cm4gQ09M VU1OX0lOREVYXzE2QlBDOwo+ID4gPiArCWRlZmF1bHQ6Cj4gPiA+ICsJCXJldHVybiAtRUlOVkFM Owo+ID4gPiArCX0KPiA+ID4gK30KPiA+ID4gKwo+ID4gPiAraW50IGludGVsX2RwX2NvbXB1dGVf ZHNjX3BhcmFtcyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAo+ID4gPiArCQkJCQlzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcpCj4gPiA+ICt7Cj4gPiA+ICsJc3RydWN0IGRy bV9kc2NfY29uZmlnICp2ZHNjX2NmZyA9ICZwaXBlX2NvbmZpZy0+ZHBfZHNjX2NmZzsKPiA+ID4g Kwl1MTYgY29tcHJlc3NlZF9icHAgPSBwaXBlX2NvbmZpZy0+ZHNjX3BhcmFtcy5jb21wcmVzc2Vk X2JwcDsKPiA+ID4gKwl1OCBpID0gMDsKPiA+ID4gKwl1OCByb3dfaW5kZXggPSAwOwo+ID4gPiAr CXU4IGNvbHVtbl9pbmRleCA9IDA7Cj4gPiA+ICsJdTggbGluZV9idWZfZGVwdGggPSAwOwo+ID4g PiArCj4gPiA+ICsJdmRzY19jZmctPnBpY193aWR0aCA9IHBpcGVfY29uZmlnLT5iYXNlLmFkanVz dGVkX21vZGUuY3J0Y19oZGlzcGxheTsKPiA+ID4gKwl2ZHNjX2NmZy0+cGljX2hlaWdodCA9IHBp cGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGUuY3J0Y192ZGlzcGxheTsKPiA+ID4gKwl2ZHNj X2NmZy0+c2xpY2Vfd2lkdGggPSBESVZfUk9VTkRfVVAodmRzY19jZmctPnBpY193aWR0aCwKPiA+ ID4gKwkJCQkJICAgICBwaXBlX2NvbmZpZy0+ZHNjX3BhcmFtcy5zbGljZV9jb3VudCk7Cj4gPiA+ ICsJLyoKPiA+ID4gKwkgKiBTbGljZSBIZWlnaHQgb2YgOCB3b3JrcyBmb3IgYWxsIGN1cnJlbnRs eSBhdmFpbGFibGUgcGFuZWxzLiBTbyBzdGFydAo+ID4gPiArCSAqIHdpdGggdGhhdCBpZiBwaWNf aGVpZ2h0IGlzIGFuIGludGVncmFsIG11bHRpcGxlIG9mIDguCj4gPiA+ICsJICogRXZlbnR1YWxs eSBhZGQgbG9naWMgdG8gdHJ5IG11bHRpcGxlIHNsaWNlIGhlaWdodHMuCj4gPiA+ICsJICovCj4g PiA+ICsJaWYgKHZkc2NfY2ZnLT5waWNfaGVpZ2h0ICUgOCA9PSAwKQo+ID4gPiArCQl2ZHNjX2Nm Zy0+c2xpY2VfaGVpZ2h0ID0gODsKPiA+ID4gKwllbHNlIGlmICh2ZHNjX2NmZy0+cGljX2hlaWdo dCAlIDQgPT0gMCkKPiA+ID4gKwkJdmRzY19jZmctPnNsaWNlX2hlaWdodCA9IDQ7Cj4gPiA+ICsJ ZWxzZQo+ID4gPiArCQl2ZHNjX2NmZy0+c2xpY2VfaGVpZ2h0ID0gMjsKPiA+ID4gKwo+ID4gPiAr CS8qIFZhbHVlcyBmaWxsZWQgZnJvbSBEU0MgU2luayBEUENEICovCj4gPiA+ICsJdmRzY19jZmct PmRzY192ZXJzaW9uX21ham9yID0gKGludGVsX2RwLT5kc2NfZHBjZFtEUF9EU0NfUkVWIC0gRFBf RFNDX1NVUFBPUlRdICYKPiA+ID4gKwkJCQkgICAgICAgRFBfRFNDX01BSk9SX01BU0spID4+IERQ X0RTQ19NQUpPUl9TSElGVDsKPiA+ID4gKwl2ZHNjX2NmZy0+ZHNjX3ZlcnNpb25fbWlub3IgPSBt aW4oRFNDX1NVUFBPUlRFRF9WRVJTSU9OX01JTiwKPiA+ID4gKwkJCQkJICAoaW50ZWxfZHAtPmRz Y19kcGNkW0RQX0RTQ19SRVYgLSBEUF9EU0NfU1VQUE9SVF0gJgo+ID4gPiArCQkJCQkgICBEUF9E U0NfTUlOT1JfTUFTSykgPj4gRFBfRFNDX01JTk9SX1NISUZUKTsKPiA+ID4gKwo+ID4gPiArCXZk c2NfY2ZnLT5jb252ZXJ0X3JnYiA9IGludGVsX2RwLT5kc2NfZHBjZFtEUF9EU0NfREVDX0NPTE9S X0ZPUk1BVF9DQVAgLSBEUF9EU0NfU1VQUE9SVF0gJgo+ID4gPiArCQlEUF9EU0NfUkdCOwo+ID4g PiArCj4gPiA+ICsJbGluZV9idWZfZGVwdGggPSBkcm1fZHBfZHNjX3NpbmtfbGluZV9idWZfZGVw dGgoaW50ZWxfZHAtPmRzY19kcGNkKTsKPiA+IAo+ID4gQWRkIGEgY2hlY2sgZm9yIHJldHVybiB2 YWx1ZSBvZiAwCj4gPiAKPiA+ID4gKwlpZiAodmRzY19jZmctPmRzY192ZXJzaW9uX21pbm9yID09 IDIpCj4gPiA+ICsJCXZkc2NfY2ZnLT5saW5lX2J1Zl9kZXB0aCA9IChsaW5lX2J1Zl9kZXB0aCA9 PSBEU0NfMV8yX01BWF9MSU5FQlVGX0RFUFRIX0JJVFMpID8KPiA+ID4gKwkJCURTQ18xXzJfTUFY X0xJTkVCVUZfREVQVEhfVkFMIDogbGluZV9idWZfZGVwdGg7Cj4gPiA+ICsJZWxzZQo+ID4gPiAr CQl2ZHNjX2NmZy0+bGluZV9idWZfZGVwdGggPSAobGluZV9idWZfZGVwdGggPiBEU0NfMV8xX01B WF9MSU5FQlVGX0RFUFRIX0JJVFMpID8KPiA+ID4gKwkJCURTQ18xXzFfTUFYX0xJTkVCVUZfREVQ VEhfQklUUyA6IGxpbmVfYnVmX2RlcHRoOwo+ID4gPiArCj4gPiA+ICsJLyogR2VuIDExIGRvZXMg bm90IHN1cHBvcnQgWUNiQ3IgKi8KPiA+ID4gKwl2ZHNjX2NmZy0+ZW5hYmxlNDIyID0gZmFsc2U7 Cj4gPiA+ICsJLyogR2VuIDExIGRvZXMgbm90IHN1cHBvcnQgVkJSICovCj4gPiA+ICsJdmRzY19j ZmctPnZicl9lbmFibGUgPSBmYWxzZTsKPiA+ID4gKwl2ZHNjX2NmZy0+YmxvY2tfcHJlZF9lbmFi bGUgPQo+ID4gPiArCQkJaW50ZWxfZHAtPmRzY19kcGNkW0RQX0RTQ19CTEtfUFJFRElDVElPTl9T VVBQT1JUIC0gRFBfRFNDX1NVUFBPUlRdICYKPiA+ID4gKwkJRFBfRFNDX0JMS19QUkVESUNUSU9O X0lTX1NVUFBPUlRFRDsKPiA+ID4gKwo+ID4gPiArCS8qIEdlbiAxMSBvbmx5IHN1cHBvcnRzIGlu dGVncmFsIHZhbHVlcyBvZiBicHAgKi8KPiA+ID4gKwl2ZHNjX2NmZy0+Yml0c19wZXJfcGl4ZWwg PSBjb21wcmVzc2VkX2JwcCA8PCA0Owo+ID4gPiArCXZkc2NfY2ZnLT5iaXRzX3Blcl9jb21wb25l bnQgPSBwaXBlX2NvbmZpZy0+cGlwZV9icHAgLyAzOwo+ID4gPiArCj4gPiA+ICsJZm9yIChpID0g MDsgaSA8IERTQ19OVU1fQlVGX1JBTkdFUyAtIDE7IGkrKykgewo+ID4gPiArCQkvKgo+ID4gPiAr CQkgKiBzaXggMHMgYXJlIGFwcGVuZGVkIHRvIHRoZSBsc2Igb2YgZWFjaCB0aHJlc2hvbGQgdmFs dWUKPiA+ID4gKwkJICogaW50ZXJuYWxseSBpbiBoL3cuCj4gPiA+ICsJCSAqIE9ubHkgOCBiaXRz IGFyZSBhbGxvd2VkIGZvciBwcm9ncmFtbWluZyBSY0J1ZlRocmVzaG9sZAo+ID4gPiArCQkgKi8K PiA+ID4gKwkJdmRzY19jZmctPnJjX2J1Zl90aHJlc2hbaV0gPSByY19idWZfdGhyZXNoW2ldID4+ IDY7Cj4gPiA+ICsJfQo+ID4gPiArCj4gPiA+ICsJLyoKPiA+ID4gKwkgKiBGb3IgNmJwcCwgUkMg QnVmZmVyIHRocmVzaG9sZCAxMiBhbmQgMTMgbmVlZCBhIGRpZmZlcmVudCB2YWx1ZQo+ID4gPiAr CSAqIGFzIHBlciBDIE1vZGVsCj4gPiA+ICsJICovCj4gPiA+ICsJaWYgKGNvbXByZXNzZWRfYnBw ID09IDYpIHsKPiA+ID4gKwkJdmRzY19jZmctPnJjX2J1Zl90aHJlc2hbMTJdID0gMHg3QzsKPiA+ ID4gKwkJdmRzY19jZmctPnJjX2J1Zl90aHJlc2hbMTNdID0gMHg3RDsKPiA+ID4gKwl9Cj4gPiA+ ICsKPiA+ID4gKwlyb3dfaW5kZXggPSBnZXRfcm93X2luZGV4X2Zvcl9yY19wYXJhbXMoY29tcHJl c3NlZF9icHApOwo+ID4gPiArCWNvbHVtbl9pbmRleCA9Cj4gPiA+ICsJCWdldF9jb2x1bW5faW5k ZXhfZm9yX3JjX3BhcmFtcyh2ZHNjX2NmZy0+Yml0c19wZXJfY29tcG9uZW50KTsKPiA+ID4gKwo+ ID4gPiArCWlmIChyb3dfaW5kZXggPCAwIHx8IGNvbHVtbl9pbmRleCA8IDApCj4gPiA+ICsJCXJl dHVybiAtRUlOVkFMOwo+ID4gPiArCj4gPiA+ICsJdmRzY19jZmctPmZpcnN0X2xpbmVfYnBnX29m ZnNldCA9Cj4gPiA+ICsJCXJjX3BhcmFtc1tyb3dfaW5kZXhdW2NvbHVtbl9pbmRleF0uZmlyc3Rf bGluZV9icGdfb2Zmc2V0Owo+ID4gPiArCXZkc2NfY2ZnLT5pbml0aWFsX3htaXRfZGVsYXkgPQo+ ID4gPiArCQlyY19wYXJhbXNbcm93X2luZGV4XVtjb2x1bW5faW5kZXhdLmluaXRpYWxfeG1pdF9k ZWxheTsKPiA+ID4gKwl2ZHNjX2NmZy0+aW5pdGlhbF9vZmZzZXQgPQo+ID4gPiArCQlyY19wYXJh bXNbcm93X2luZGV4XVtjb2x1bW5faW5kZXhdLmluaXRpYWxfb2Zmc2V0Owo+ID4gPiArCXZkc2Nf Y2ZnLT5mbGF0bmVzc19taW5fcXAgPQo+ID4gPiArCQlyY19wYXJhbXNbcm93X2luZGV4XVtjb2x1 bW5faW5kZXhdLmZsYXRuZXNzX21pbl9xcDsKPiA+ID4gKwl2ZHNjX2NmZy0+ZmxhdG5lc3NfbWF4 X3FwID0KPiA+ID4gKwkJcmNfcGFyYW1zW3Jvd19pbmRleF1bY29sdW1uX2luZGV4XS5mbGF0bmVz c19tYXhfcXA7Cj4gPiA+ICsJdmRzY19jZmctPnJjX3F1YW50X2luY3JfbGltaXQwID0KPiA+ID4g KwkJcmNfcGFyYW1zW3Jvd19pbmRleF1bY29sdW1uX2luZGV4XS5yY19xdWFudF9pbmNyX2xpbWl0 MDsKPiA+ID4gKwl2ZHNjX2NmZy0+cmNfcXVhbnRfaW5jcl9saW1pdDEgPQo+ID4gPiArCQlyY19w YXJhbXNbcm93X2luZGV4XVtjb2x1bW5faW5kZXhdLnJjX3F1YW50X2luY3JfbGltaXQxOwo+ID4g PiArCj4gPiA+ICsJZm9yIChpID0gMDsgaSA8IERTQ19OVU1fQlVGX1JBTkdFUzsgaSsrKQo+ID4g PiArCQl2ZHNjX2NmZy0+cmNfcmFuZ2VfcGFyYW1zW2ldID0KPiA+ID4gKwkJCXJjX3BhcmFtc1ty b3dfaW5kZXhdW2NvbHVtbl9pbmRleF0ucmNfcmFuZ2VfcGFyYW1zW2ldOwoKSGVyZSB0aGUgcmFu Z2VfYnBnX29mZnNldCBpcyBhIDIncyBjb21wbGltZW50IDYgYml0IHZhbHVlIHNvIGluIG9yZGVy IHRvIGdldCB0aGUgY29ycmVjdAp2YWx1ZSAsIHdlIG5lZWQgdG8gbWFzayBpdCB3aXRoIDB4M2Yg dG8gZ2V0IG9ubHkgNiBiaXRzLgpZb3UgZm9yZ290IHRoaXMgbWFzayBmcm9tIHlvdXIgaW5pdGlh bCBwYXRjaCBoZXJlIGFmdGVyIHRoZSB2YWx1ZXMgd2VyZSBkZWZpbmVkIGFzIG5lZ2F0aXZlIHZh bHVlcwpkaXJlY3RseS4KRm9yIEVnOiAtMiB3aWxsIHJlc3VsdCBpbnRvIDExMTExMTAxIGJpbmFy eSBidXQgd2Ugc2hvdWxkIHVzZSBvbmx5IDYgbHNiIGJpdHMgb3RoZXJ3aXNlCnRoZSByZW1haW5k ZXIgMiBiaXRzIGludGVyZmVyZSB3aXRoIHRoZSBvdGhlciBmaWVsZHMgaW4gcmNfcmFuZ2VfcGFy YW1zLgoKSSBhbSBjaGFuZ2luZyBpdCBhcyBiZWxvdzoKCnZkc2NfY2ZnLT5yY19yYW5nZV9wYXJh bXNbaV0ucmFuZ2VfYnBnX29mZnNldCA9IHJjX3BhcmFtc1tyb3dfaW5kZXhdW2NvbHVtbl9pbmRl eF0ucmNfcmFuZ2VfcGFyYW1zW2ldLnJhbmdlX2JwZ19vZmZzZXQgJgpEU0NfUkFOR0VfQlBHX09G RlNFVF9NQVNLOwoKd2hlcmUgdGhlIG1hc2sgaXMgZGVmaW5lZCB0byAweDNmIGluIHRoZSBEUk0g cGF0Y2ggdGhhdCBhZGRzIERTQyBjYXBhYmlsaXRpZXMuCgpNYW5hc2kKCgoKPiA+ID4gKwo+ID4g PiArCS8qCj4gPiA+ICsJICogQml0c1BlckNvbXBvbmVudCB2YWx1ZSBkZXRlcm1pbmVzIG11eF93 b3JkX3NpemU6Cj4gPiA+ICsJICogV2hlbiBCaXRzUGVyQ29tcG9uZW50IGlzIDEyYnBjLCBtdXhX b3JkU2l6ZSB3aWxsIGJlIGVxdWFsIHRvIDY0IGJpdHMKPiA+ID4gKwkgKiBXaGVuIEJpdHNQZXJD b21wb25lbnQgaXMgOCBvciAxMGJwYywgbXV4V29yZFNpemUgd2lsbCBiZSBlcXVhbCB0bwo+ID4g PiArCSAqIDQ4IGJpdHMKPiA+ID4gKwkgKi8KPiA+ID4gKwlpZiAodmRzY19jZmctPmJpdHNfcGVy X2NvbXBvbmVudCA9PSA4IHx8Cj4gPiA+ICsJICAgIHZkc2NfY2ZnLT5iaXRzX3Blcl9jb21wb25l bnQgPT0gMTApCj4gPiA+ICsJCXZkc2NfY2ZnLT5tdXhfd29yZF9zaXplID0gRFNDX01VWF9XT1JE X1NJWkVfOF8xMF9CUEM7Cj4gPiA+ICsJZWxzZSBpZiAodmRzY19jZmctPmJpdHNfcGVyX2NvbXBv bmVudCA9PSAxMikKPiA+ID4gKwkJdmRzY19jZmctPm11eF93b3JkX3NpemUgPSBEU0NfTVVYX1dP UkRfU0laRV8xMl9CUEM7Cj4gPiA+ICsKPiA+ID4gKwkvKiBJbml0aWFsU2NhbGVWYWx1ZSBpcyBh IDYgYml0IHZhbHVlIHdpdGggMyBmcmFjdGlvbmFsIGJpdHMgKFUzLjMpICovCj4gPiA+ICsJdmRz Y19jZmctPmluaXRpYWxfc2NhbGVfdmFsdWUgPSAodmRzY19jZmctPnJjX21vZGVsX3NpemUgPDwg MykgLwo+ID4gPiArCQkodmRzY19jZmctPnJjX21vZGVsX3NpemUgLSB2ZHNjX2NmZy0+aW5pdGlh bF9vZmZzZXQpOwo+ID4gCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICBeXl5eXnZkc2NfY2Zn LT5yY19tb2RlbF9zaXplIGlzIG9ubHkgZGVmaW5lZCBidXQgbm90IGdldHRpbmcgc2V0IGFueXdo ZXJlLgo+ID4gSXQgc2hvdWxkIGJlIHNldCB0byBEU0NfUkNfTU9ERUxfU0laRV9DT05TVCBkZWZp bmVkIGluIGRybV9kc2MuaCBlbHNlIGl0IHJlc3VsdHMgaW50byBhbiBpbmNvcnJlY3QgZGVmYXVs dCB2YWx1ZS4KPiA+IAo+ID4gPiArCj4gPiA+ICsJcmV0dXJuIDA7Cj4gPiA+ICt9Cj4gPiA+IGRp ZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fZHBfaGVscGVyLmggYi9pbmNsdWRlL2RybS9kcm1f ZHBfaGVscGVyLmgKPiA+ID4gaW5kZXggMGNmMjQwNy4uZjE3ODkzMyAxMDA2NDQKPiA+ID4gLS0t IGEvaW5jbHVkZS9kcm0vZHJtX2RwX2hlbHBlci5oCj4gPiA+ICsrKyBiL2luY2x1ZGUvZHJtL2Ry bV9kcF9oZWxwZXIuaAo+ID4gPiBAQCAtMTg2LDYgKzE4Niw5IEBACj4gPiA+ICAKPiA+ID4gICNk ZWZpbmUgRFBfR1VJRAkJCQkgICAgMHgwMzAgICAvKiAxLjIgKi8KPiA+ID4gIAo+ID4gPiArI2Rl ZmluZSBEUF9EU0NfUkNfUElYRUxTX1BFUl9HUk9VUAkJMwo+ID4gPiArI2RlZmluZSBEUF9EU0Nf U0NBTEVfREVDUkVNRU5UX0lOVEVSVkFMX01BWAk0MDk1Cj4gPiAKPiA+IFRoaXMgcGF0Y2ggaW4g ZHJtIHNob3VsZCBiZSBzZW50IGFzIGEgc2VwYXJhdGUgcGF0Y2ggb3IgY29tYmluZWQgd2l0aCB0 aGUgcGF0Y2gKPiA+IHdoZXJlIHlvdSBhcmUgZGVmaW5pbmcgRFJNIERTQyBwYXJhbWV0ZXJzIGFu ZCBjb25zdGFudHMuCj4gPiAKPiA+IE1hbmFzaQo+ID4gCj4gPiA+ICsKPiA+ID4gICNkZWZpbmUg RFBfRFNDX1NVUFBPUlQgICAgICAgICAgICAgICAgICAgICAgMHgwNjAgICAvKiBEUCAxLjQgKi8K PiA+ID4gICMgZGVmaW5lIERQX0RTQ19ERUNPTVBSRVNTSU9OX0lTX1NVUFBPUlRFRCAgKDEgPDwg MCkKPiA+ID4gIAo+ID4gPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX2RzYy5oIGIvaW5j bHVkZS9kcm0vZHJtX2RzYy5oCj4gPiA+IGluZGV4IDRjZmNkMDMuLjc5NmM3OTggMTAwNjQ0Cj4g PiA+IC0tLSBhL2luY2x1ZGUvZHJtL2RybV9kc2MuaAo+ID4gPiArKysgYi9pbmNsdWRlL2RybS9k cm1fZHNjLmgKPiA+ID4gQEAgLTY3LDcgKzY3LDcgQEAgc3RydWN0IGRzY19yY19yYW5nZV9wYXJh bWV0ZXJzIHsKPiA+ID4gIAkvKiBNYXggUXVhbnRpemF0aW9uIFBhcmFtZXRlcnMgYWxsb3dlZCBm b3IgdGhpcyByYW5nZSAqLwo+ID4gPiAgCXU4IHJhbmdlX21heF9xcDsKPiA+ID4gIAkvKiBCaXRz L2dyb3VwIG9mZnNldCB0byBhcHBseSB0byB0YXJnZXQgZm9yIHRoaXMgZ3JvdXAgKi8KPiA+ID4g LQl1OCByYW5nZV9icGdfb2Zmc2V0Owo+ID4gPiArCXM4IHJhbmdlX2JwZ19vZmZzZXQ7Cj4gCj4g VGhpcyBjYW5ub3QgYmUgc2lnbmVkIGludCBzaW5jZSB0aGUgUFBTIHZhbHVlIGV4cGVjdHMgaXQg dG8gYmUgMnMgY29tcGxlbWVudAo+IGFuZCBzdG9yZWQgYXMgYW4gdW5zaWduZWQgdmFsdWUuIEl0 IG5lZWRzIHRvIHN0YXkgYXMgdTgKPiAKPiBNYW5hc2kKPiAKPiA+ID4gIH07Cj4gPiA+ICAKPiA+ ID4gIHN0cnVjdCBkcm1fZHNjX2NvbmZpZyB7Cj4gPiA+IC0tIAo+ID4gPiAyLjcuNAo+ID4gPiAK PiA+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gPiBJ bnRlbC1nZnggbWFpbGluZyBsaXN0Cj4gPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cj4gPiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVs LWdmeAo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4g SW50ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcK PiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdm eApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1n ZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK