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: Wed, 5 Sep 2018 13:04:48 -0700 Message-ID: <20180905200445.GD4186@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> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id 88D1A89C96 for ; Wed, 5 Sep 2018 20:01:59 +0000 (UTC) Content-Disposition: inline In-Reply-To: <1533071239-28815-16-git-send-email-manasi.d.navare@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 R2F1cmF2LAoKUGxlYXNlIGZpbmQgbXkgcmV2aWV3IGNvbW1lbnRzIGJlbG93LiBDYXVnaHQgdGhl bSB3aGVuIEkgdGVzdGVkCnlvdXIgcGF0Y2ggb24gRFNDIHNpbmsuCgpPbiBUdWUsIEp1bCAzMSwg MjAxOCBhdCAwMjowNzoxMVBNIC0wNzAwLCBNYW5hc2kgTmF2YXJlIHdyb3RlOgo+IEZyb206IEdh dXJhdiBLIFNpbmdoIDxnYXVyYXYuay5zaW5naEBpbnRlbC5jb20+Cj4gCj4gVGhpcyBwYXRjaGVz IGRvZXMgdGhlIGZvbGxvd2luZzoKPiAKPiAxLiBUaGlzIHBhdGNoIGRlZmluZXMgYWxsIHRoZSBE U0MgcGFyYW1ldGVycyBhcyBwZXIgdGhlIFZFU0EKPiBEU0Mgc3BlY2lmaWNhdGlvbi4gVGhlc2Ug YXJlIHN0b3JlZCBpbiB0aGUgZW5jb2RlciBhbmQgdXNlZAo+IHRvIGNvbXB1dGUgdGhlIFBQUyBw YXJhbWV0ZXJzIHRvIGJlIHNlbnQgdG8gdGhlIFNpbmsuCj4gMi4gQ29tcHV0ZSBhbGwgdGhlIERT QyBwYXJhbWV0ZXJzIHdoaWNoIGFyZSBkZXJpdmVkIGZyb20gRFNDCj4gc3RhdGUgb2YgaW50ZWxf Y3J0Y19zdGF0ZS4KPiAzLiBDb21wdXRlIGFsbCBwYXJhbWV0ZXJzIHRoYXQgYXJlIFZFU0EgRFND IHNwZWNpZmljCj4gCj4gVGhpcyBjb21wdXRhdGlvbiBoYXBwZW5zIGluIHRoZSBhdG9taWMgY2hl Y2sgcGhhc2UgZHVyaW5nCj4gY29tcHV0ZV9jb25maWcoKSB0byB2YWxpZGF0ZSBpZiBkaXNwbGF5 IHN0cmVhbSBjb21wcmVzc2lvbgo+IGNhbiBiZSBlbmFibGVkIGZvciB0aGUgcmVxdWVzdGVkIG1v ZGUuCj4gCj4gdjUgKEZyb20gTWFuYXNpKToKPiAqIEFkZCBsb2dpYyB0byBsaW1pdCB0aGUgbWF4 IGxpbmUgYnVmIGRlcHRoIGZvciBEU0MgMS4xIHRvIDEzCj4gYXMgcGVyIERTQyAxLjEgc3BlYwo+ ICogRml4IGRpbSBjaGVja3BhdGNoIHdhcm5pbmdzL2NoZWNrcwo+IAo+IHY0IChGcm9tIEdhdXJh dik6Cj4gKiBSZWJhc2Ugb24gbGF0ZXN0IGRybSB0aXAKPiAqIHJlbmFtZSB2YXJpYWJsZSBuYW1l KE1hbmFzaSkKPiAqIFBvcHVsYXRlIGxpbmVidWZfZGVwdGggdmFyaWFibGUoTWFuYXNpKQo+IAo+ IHYzIChGcm9tIEdhdXJhdik6Cj4gKiBSZWJhc2UgbXkgcHJldmlvdXMgcGF0Y2hlcyBvbiB0b3Ag b2YgTWFuYXNpJ3MgbGF0ZXN0IHBhdGNoCj4gc2VyaWVzCj4gKiBVc2luZyA+Pm4gcmF0aGVyIHRo YW4gLzJebiAoTWFuYXNpKQo+ICogQ2hhbmdlIHRoZSBjb21taXQgbWVzc2FnZSB0byBleHBsYWlu IHdoYXQgdGhlIHBhdGNoIGlzIGRvaW5nKEdhdXJhdikKPiAKPiBGaXhlZCByZXZpZXcgY29tbWVu dHMgZnJvbSBWaWxsZToKPiAqIERvbid0IHVzZSBtYWNybyBUV09TX0NPTVBMRU1FTlQKPiAqIE1l bnRpb24gaW4gY29tbWVudCBhYm91dCB0aGUgc291cmNlIG9mIFJDIHBhcmFtcwo+ICogUmV0dXJu IGRpcmVjdGx5IGZyb20gY2FzZSBzdGF0ZW1lbnRzCj4gKiBVc2luZyBzaW5nbGUgYXNzc2lnbm1l bnQgZm9yIGFzc2lnbmluZyByY19yYW5nZV9wYXJhbXMKPiAqIFVzaW5nIDw8biByYXRoZXIgdGhh biAqMl5uIGFuZCByZW1vdmluZyB0aGUgY29tbWVudHMKPiBhYm91dCB0aGUgZml4ZWQgcG9pbnQg bnVtYmVycwo+IAo+IHYyIChGcm9tIE1hbmFzaSk6Cj4gKiBVcGRhdGUgbG9naWMgZm9yIG1pbm9y IHZlcnNpb24gdG8gY29uc2lkZXIgdGhlIGRwY2QgdmFsdWUKPiBhbmQgd2hhdCBzdXBwb3J0ZWQg YnkgdGhlIEhXIHBsYXRmb3JtCj4gKiBVc2UgRFJNIERTQyBjb25maWcgc3RydWN0IGluc3RlYWQg b2YgaW50ZWxfZHAgc3RydWN0Cj4gKiBNb3ZlIHRoZSBEU0MgY29uc3RhbnRzIHRvIERSTSBEU0Mg aGVhZGVyIGZpbGUKPiAqIFVzZSB1MTYsIHU4IHdoZXJlIGJpZ2dlciBkYXRhIHR5cGVzIG5vdCBu ZWVkZWQKPiAqICogQ29tcHV0ZSB0aGUgRFNDIHBhcmFtZXRlcnMgYXMgcGFydCBvZiBEU0MgY29t cHV0ZSBjb25maWcKPiBzaW5jZSB0aGUgY29tcHV0YXRpb24gY2FuIGZhaWwgKE1hbmFzaSkKPiAK PiBDYzogSmFuaSBOaWt1bGEgPGphbmkubmlrdWxhQGxpbnV4LmludGVsLmNvbT4KPiBDYzogVmls bGUgU3lyamFsYSA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+Cj4gQ2M6IEFudXNoYSBT cml2YXRzYSA8YW51c2hhLnNyaXZhdHNhQGludGVsLmNvbT4KPiBDYzogR2F1cmF2IEsgU2luZ2gg PGdhdXJhdi5rLnNpbmdoQGludGVsLmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBHYXVyYXYgSyBTaW5n aCA8Z2F1cmF2Lmsuc2luZ2hAaW50ZWwuY29tPgo+IFNpZ25lZC1vZmYtYnk6IE1hbmFzaSBOYXZh cmUgPG1hbmFzaS5kLm5hdmFyZUBpbnRlbC5jb20+Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9p OTE1L01ha2VmaWxlICAgICB8ICAgMyArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k cC5jICAgfCAgIDcgKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCAgfCAgIDQg Kwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF92ZHNjLmMgfCA0NTUgKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysKPiAgaW5jbHVkZS9kcm0vZHJtX2RwX2hlbHBlci5o ICAgICAgIHwgICAzICsKPiAgaW5jbHVkZS9kcm0vZHJtX2RzYy5oICAgICAgICAgICAgIHwgICAy ICstCj4gIDYgZmlsZXMgY2hhbmdlZCwgNDcyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0p Cj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF92ZHNjLmMK PiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9NYWtlZmlsZQo+IGluZGV4IDU3OTRmMTAuLmRlYWYyZDQgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9NYWtlZmlsZQo+IEBAIC0xNTMsNyArMTUzLDggQEAgaTkxNS15ICs9IGR2b19jaDcw MTcubyBcCj4gIAkgIGludGVsX3Nkdm8ubyBcCj4gIAkgIGludGVsX3R2Lm8gXAo+ICAJICB2bHZf ZHNpLm8gXAo+IC0JICB2bHZfZHNpX3BsbC5vCj4gKwkgIHZsdl9kc2lfcGxsLm8gXAo+ICsJICBp bnRlbF92ZHNjLm8KPiAgCj4gICMgUG9zdC1tb3J0ZW0gZGVidWcgYW5kIEdQVSBoYW5nIHN0YXRl IGNhcHR1cmUKPiAgaTkxNS0kKENPTkZJR19EUk1fSTkxNV9DQVBUVVJFX0VSUk9SKSArPSBpOTE1 X2dwdV9lcnJvci5vCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rw LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4gaW5kZXggNzEzMmY1Mi4uZGMw YTNjMiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+IEBAIC0yMDQyLDYgKzIwNDIsMTMg QEAgc3RhdGljIGJvb2wgaW50ZWxfZHBfZHNjX2NvbXB1dGVfY29uZmlnKHN0cnVjdCBpbnRlbF9k cCAqaW50ZWxfZHAsCj4gIAkJCXJldHVybiBmYWxzZTsKPiAgCQl9Cj4gIAl9Cj4gKwlpZiAoaW50 ZWxfZHBfY29tcHV0ZV9kc2NfcGFyYW1zKGludGVsX2RwLCBwaXBlX2NvbmZpZykgPCAwKSB7Cj4g KwkJRFJNX0VSUk9SKCJDYW5ub3QgY29tcHV0ZSB2YWxpZCBEU0MgcGFyYW1ldGVycyBmb3IgSW5w dXQgQnBwID0gJWQiCj4gKwkJCSAgIkNvbXByZXNzZWQgQlBQID0gJWRcbiIsCj4gKwkJCSAgcGlw ZV9jb25maWctPnBpcGVfYnBwLAo+ICsJCQkgIHBpcGVfY29uZmlnLT5kc2NfcGFyYW1zLmNvbXBy ZXNzZWRfYnBwKTsKPiArCQlyZXR1cm4gZmFsc2U7Cj4gKwl9Cj4gIAlwaXBlX2NvbmZpZy0+ZHNj X3BhcmFtcy5jb21wcmVzc2lvbl9lbmFibGUgPSB0cnVlOwo+ICAJRFJNX0RFQlVHX0tNUygiRFAg RFNDIGNvbXB1dGVkIHdpdGggSW5wdXQgQnBwID0gJWQgIgo+ICAJCSAgICAgICJDb21wcmVzc2Vk IEJwcCA9ICVkIFNsaWNlIENvdW50ID0gJWRcbiIsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgK PiBpbmRleCBiN2MyNjUyLi4zM2NjNzc3IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgK PiBAQCAtMTc0OSw2ICsxNzQ5LDEwIEBAIHVpbnQxNl90IGludGVsX2RwX2RzY19nZXRfb3V0cHV0 X2JwcChpbnQgbGlua19jbG9jaywgdWludDhfdCBsYW5lX2NvdW50LAo+ICB1aW50OF90IGludGVs X2RwX2RzY19nZXRfc2xpY2VfY291bnQoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwgaW50IG1v ZGVfY2xvY2ssCj4gIAkJCQkgICAgIGludCBtb2RlX2hkaXNwbGF5KTsKPiAgCj4gKy8qIGludGVs X3Zkc2MuYyAqLwo+ICtpbnQgaW50ZWxfZHBfY29tcHV0ZV9kc2NfcGFyYW1zKHN0cnVjdCBpbnRl bF9kcCAqaW50ZWxfZHAsCj4gKwkJCQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25m aWcpOwo+ICsKPiAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgaW50ZWxfZHBfdW51c2VkX2xh bmVfbWFzayhpbnQgbGFuZV9jb3VudCkKPiAgewo+ICAJcmV0dXJuIH4oKDEgPDwgbGFuZV9jb3Vu dCkgLSAxKSAmIDB4ZjsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf dmRzYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdmRzYy5jCj4gbmV3IGZpbGUgbW9k ZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwLi5lY2QyNzBjCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Zkc2MuYwo+IEBAIC0wLDAgKzEsNDU1IEBACj4g Ky8qCj4gKyAqIENvcHlyaWdodCDCqSAyMDE4IEludGVsIENvcnBvcmF0aW9uCj4gKyAqCj4gKyAq IFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVy c29uIG9idGFpbmluZyBhCj4gKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRl ZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCj4gKyAqIHRvIGRlYWwgaW4g dGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0 YXRpb24KPiArICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxp c2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCj4gKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0 aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQo+ICsgKiBTb2Z0 d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25k aXRpb25zOgo+ICsgKgo+ICsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBw ZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0Cj4gKyAqIHBhcmFncmFwaCkgc2hh bGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0 aGUKPiArICogU29mdHdhcmUuCj4gKyAqCj4gKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAi QVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCj4gKyAqIElN UExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVS Q0hBTlRBQklMSVRZLAo+ICsgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQg Tk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKPiArICogVEhFIEFVVEhPUlMgT1Ig Q09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RI RVIKPiArICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9S VCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKPiArICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJ T04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUgo+ICsgKiBERUFMSU5HUyBJ TiBUSEUgU09GVFdBUkUuCj4gKyAqCj4gKyAqIEF1dGhvcjogR2F1cmF2IEsgU2luZ2ggPGdhdXJh di5rLnNpbmdoQGludGVsLmNvbT4KPiArICogICAgICAgICBNYW5hc2kgTmF2YXJlIDxtYW5hc2ku ZC5uYXZhcmVAaW50ZWwuY29tPgo+ICsgKi8KPiArCj4gKyNpbmNsdWRlIDxkcm0vZHJtUC5oPgo+ ICsjaW5jbHVkZSA8ZHJtL2k5MTVfZHJtLmg+Cj4gKyNpbmNsdWRlICJpOTE1X2Rydi5oIgo+ICsj aW5jbHVkZSAiaW50ZWxfZHJ2LmgiCj4gKwo+ICtlbnVtIFJPV19JTkRFWF9CUFAgewo+ICsJUk9X X0lOREVYXzZCUFAgPSAwLAo+ICsJUk9XX0lOREVYXzhCUFAsCj4gKwlST1dfSU5ERVhfMTBCUFAs Cj4gKwlST1dfSU5ERVhfMTJCUFAsCj4gKwlST1dfSU5ERVhfMTVCUFAsCj4gKwlNQVhfUk9XX0lO REVYCj4gK307Cj4gKwo+ICtlbnVtIENPTFVNTl9JTkRFWF9CUEMgewo+ICsJQ09MVU1OX0lOREVY XzhCUEMgPSAwLAo+ICsJQ09MVU1OX0lOREVYXzEwQlBDLAo+ICsJQ09MVU1OX0lOREVYXzEyQlBD LAo+ICsJQ09MVU1OX0lOREVYXzE0QlBDLAo+ICsJQ09MVU1OX0lOREVYXzE2QlBDLAo+ICsJTUFY X0NPTFVNTl9JTkRFWAo+ICt9Owo+ICsKPiArI2RlZmluZSBEU0NfU1VQUE9SVEVEX1ZFUlNJT05f TUlOCQkxCj4gKwo+ICsvKiBGcm9tIERTQ192MS4xMSBzcGVjLCByY19wYXJhbWV0ZXJfU2V0IHN5 bnRheCBlbGVtZW50IHR5cGljYWxseSBjb25zdGFudCAqLwo+ICtzdGF0aWMgdTE2IHJjX2J1Zl90 aHJlc2hbXSA9IHsKPiArCTg5NiwgMTc5MiwgMjY4OCwgMzU4NCwgNDQ4MCwgNTM3NiwgNjI3Miwg NjcyMCwgNzE2OCwgNzYxNiwKPiArCTc3NDQsIDc4NzIsIDgwMDAsIDgwNjQKPiArfTsKPiArCj4g K3N0cnVjdCByY19wYXJhbWV0ZXJzIHsKPiArCXUxNiBpbml0aWFsX3htaXRfZGVsYXk7Cj4gKwl1 OCBmaXJzdF9saW5lX2JwZ19vZmZzZXQ7Cj4gKwl1MTYgaW5pdGlhbF9vZmZzZXQ7Cj4gKwl1OCBm bGF0bmVzc19taW5fcXA7Cj4gKwl1OCBmbGF0bmVzc19tYXhfcXA7Cj4gKwl1OCByY19xdWFudF9p bmNyX2xpbWl0MDsKPiArCXU4IHJjX3F1YW50X2luY3JfbGltaXQxOwo+ICsJc3RydWN0IGRzY19y Y19yYW5nZV9wYXJhbWV0ZXJzIHJjX3JhbmdlX3BhcmFtc1tEU0NfTlVNX0JVRl9SQU5HRVNdOwo+ ICt9Owo+ICsKPiArLyoKPiArICogU2VsZWN0ZWQgUmF0ZSBDb250cm9sIFJlbGF0ZWQgUGFyYW1l dGVyIFJlY29tbWVuZGVkIFZhbHVlcwo+ICsgKiBmcm9tIERTQ192MS4xMSBzcGVjICYgQyBNb2Rl bCByZWxlYXNlOiBEU0NfbW9kZWxfMjAxNjEyMTIKPiArICovCj4gK3N0YXRpYyBzdHJ1Y3QgcmNf cGFyYW1ldGVycyByY19wYXJhbXNbXVtNQVhfQ09MVU1OX0lOREVYXSA9IHsKPiArewo+ICsJLyog NkJQUC84QlBDICovCj4gKwl7IDc2OCwgMTUsIDYxNDQsIDMsIDEzLCAxMSwgMTEsIHsKPiArCQl7 IDAsIDQsIDAgfSwgeyAxLCA2LCAtMiB9LCB7IDMsIDgsIC0yIH0sIHsgNCwgOCwgLTQgfSwKPiAr CQl7IDUsIDksIC02IH0sIHsgNSwgOSwgLTYgfSwgeyA2LCA5LCAtNiB9LCB7IDYsIDEwLCAtOCB9 LAo+ICsJCXsgNywgMTEsIC04IH0sIHsgOCwgMTIsIC0xMCB9LCB7IDksIDEyLCAtMTAgfSwgeyAx MCwgMTIsIC0xMiB9LAo+ICsJCXsgMTAsIDEyLCAtMTIgfSwgeyAxMSwgMTIsIC0xMiB9LCB7IDEz LCAxNCwgLTEyIH0KPiArCQl9Cj4gKwl9LAo+ICsJLyogNkJQUC8xMEJQQyAqLwo+ICsJeyA3Njgs IDE1LCA2MTQ0LCA3LCAxNywgMTUsIDE1LCB7Cj4gKwkJeyAwLCA4LCAwIH0sIHsgMywgMTAsIC0y IH0sIHsgNywgMTIsIC0yIH0sIHsgOCwgMTIsIC00IH0sCj4gKwkJeyA5LCAxMywgLTYgfSwgeyA5 LCAxMywgLTYgfSwgeyAxMCwgMTMsIC02IH0sIHsgMTAsIDE0LCAtOCB9LAo+ICsJCXsgMTEsIDE1 LCAtOCB9LCB7IDEyLCAxNiwgLTEwIH0sIHsgMTMsIDE2LCAtMTAgfSwKPiArCQl7IDE0LCAxNiwg LTEyIH0sIHsgMTQsIDE2LCAtMTIgfSwgeyAxNSwgMTYsIC0xMiB9LAo+ICsJCXsgMTcsIDE4LCAt MTIgfQo+ICsJCX0KPiArCX0sCj4gKwkvKiA2QlBQLzEyQlBDICovCj4gKwl7IDc2OCwgMTUsIDYx NDQsIDExLCAyMSwgMTksIDE5LCB7Cj4gKwkJeyAwLCAxMiwgMCB9LCB7IDUsIDE0LCAtMiB9LCB7 IDExLCAxNiwgLTIgfSwgeyAxMiwgMTYsIC00IH0sCj4gKwkJeyAxMywgMTcsIC02IH0sIHsgMTMs IDE3LCAtNiB9LCB7IDE0LCAxNywgLTYgfSwgeyAxNCwgMTgsIC04IH0sCj4gKwkJeyAxNSwgMTks IC04IH0sIHsgMTYsIDIwLCAtMTAgfSwgeyAxNywgMjAsIC0xMCB9LAo+ICsJCXsgMTgsIDIwLCAt MTIgfSwgeyAxOCwgMjAsIC0xMiB9LCB7IDE5LCAyMCwgLTEyIH0sCj4gKwkJeyAyMSwgMjIsIC0x MiB9Cj4gKwkJfQo+ICsJfSwKPiArCS8qIDZCUFAvMTRCUEMgKi8KPiArCXsgNzY4LCAxNSwgNjE0 NCwgMTUsIDI1LCAyMywgMjcsIHsKPiArCQl7IDAsIDE2LCAwIH0sIHsgNywgMTgsIC0yIH0sIHsg MTUsIDIwLCAtMiB9LCB7IDE2LCAyMCwgLTQgfSwKPiArCQl7IDE3LCAyMSwgLTYgfSwgeyAxNywg MjEsIC02IH0sIHsgMTgsIDIxLCAtNiB9LCB7IDE4LCAyMiwgLTggfSwKPiArCQl7IDE5LCAyMywg LTggfSwgeyAyMCwgMjQsIC0xMCB9LCB7IDIxLCAyNCwgLTEwIH0sCj4gKwkJeyAyMiwgMjQsIC0x MiB9LCB7IDIyLCAyNCwgLTEyIH0sIHsgMjMsIDI0LCAtMTIgfSwKPiArCQl7IDI1LCAyNiwgLTEy IH0KPiArCQl9Cj4gKwl9LAo+ICsJLyogNkJQUC8xNkJQQyAqLwo+ICsJeyA3NjgsIDE1LCA2MTQ0 LCAxOSwgMjksIDI3LCAyNywgewo+ICsJCXsgMCwgMjAsIDAgfSwgeyA5LCAyMiwgLTIgfSwgeyAx OSwgMjQsIC0yIH0sIHsgMjAsIDI0LCAtNCB9LAo+ICsJCXsgMjEsIDI1LCAtNiB9LCB7IDIxLCAy NSwgLTYgfSwgeyAyMiwgMjUsIC02IH0sIHsgMjIsIDI2LCAtOCB9LAo+ICsJCXsgMjMsIDI3LCAt OCB9LCB7IDI0LCAyOCwgLTEwIH0sIHsgMjUsIDI4LCAtMTAgfSwKPiArCQl7IDI2LCAyOCwgLTEy IH0sIHsgMjYsIDI4LCAtMTIgfSwgeyAyNywgMjgsIC0xMiB9LAo+ICsJCXsgMjksIDMwLCAtMTIg fQo+ICsJCX0KPiArCX0sCj4gK30sCj4gK3sKPiArCS8qIDhCUFAvOEJQQyAqLwo+ICsJeyA1MTIs IDEyLCA2MTQ0LCAzLCAxMiwgMTEsIDExLCB7Cj4gKwkJeyAwLCA0LCAyIH0sIHsgMCwgNCwgMCB9 LCB7IDEsIDUsIDAgfSwgeyAxLCA2LCAtMiB9LAo+ICsJCXsgMywgNywgLTQgfSwgeyAzLCA3LCAt NiB9LCB7IDMsIDcsIC04IH0sIHsgMywgOCwgLTggfSwKPiArCQl7IDMsIDksIC04IH0sIHsgMywg MTAsIC0xMCB9LCB7IDUsIDExLCAtMTAgfSwgeyA1LCAxMiwgLTEyIH0sCj4gKwkJeyA1LCAxMywg LTEyIH0sIHsgNywgMTMsIC0xMiB9LCB7IDEzLCAxNSwgLTEyIH0KPiArCQl9Cj4gKwl9LAo+ICsJ LyogOEJQUC8xMEJQQyAqLwo+ICsJeyA1MTIsIDEyLCA2MTQ0LCA3LCAxNiwgMTUsIDE1LCB7Cj4g KwkJeyAwLCA0LCAyIH0sIHsgNCwgOCwgMCB9LCB7IDUsIDksIDAgfSwgeyA1LCAxMCwgLTIgfSwK PiArCQl7IDcsIDExLCAtNCB9LCB7IDcsIDExLCAtNiB9LCB7IDcsIDExLCAtOCB9LCB7IDcsIDEy LCAtOCB9LAo+ICsJCXsgNywgMTMsIC04IH0sIHsgNywgMTQsIC0xMCB9LCB7IDksIDE1LCAtMTAg fSwgeyA5LCAxNiwgLTEyIH0sCj4gKwkJeyA5LCAxNywgLTEyIH0sIHsgMTEsIDE3LCAtMTIgfSwg eyAxNywgMTksIC0xMiB9Cj4gKwkJfQo+ICsJfSwKPiArCS8qIDhCUFAvMTJCUEMgKi8KPiArCXsg NTEyLCAxMiwgNjE0NCwgMTEsIDIwLCAxOSwgMTksIHsKPiArCQl7IDAsIDEyLCAyIH0sIHsgNCwg MTIsIDAgfSwgeyA5LCAxMywgMCB9LCB7IDksIDE0LCAtMiB9LAo+ICsJCXsgMTEsIDE1LCAtNCB9 LCB7IDExLCAxNSwgLTYgfSwgeyAxMSwgMTUsIC04IH0sIHsgMTEsIDE2LCAtOCB9LAo+ICsJCXsg MTEsIDE3LCAtOCB9LCB7IDExLCAxOCwgLTEwIH0sIHsgMTMsIDE5LCAtMTAgfSwKPiArCQl7IDEz LCAyMCwgLTEyIH0sIHsgMTMsIDIxLCAtMTIgfSwgeyAxNSwgMjEsIC0xMiB9LAo+ICsJCXsgMjEs IDIzLCAtMTIgfQo+ICsJCX0KPiArCX0sCj4gKwkvKiA4QlBQLzE0QlBDICovCj4gKwl7IDUxMiwg MTIsIDYxNDQsIDE1LCAyNCwgMjMsIDIzLCB7Cj4gKwkJeyAwLCAxMiwgMCB9LCB7IDUsIDEzLCAw IH0sIHsgMTEsIDE1LCAwIH0sIHsgMTIsIDE3LCAtMiB9LAo+ICsJCXsgMTUsIDE5LCAtNCB9LCB7 IDE1LCAxOSwgLTYgfSwgeyAxNSwgMTksIC04IH0sIHsgMTUsIDIwLCAtOCB9LAo+ICsJCXsgMTUs IDIxLCAtOCB9LCB7IDE1LCAyMiwgLTEwIH0sIHsgMTcsIDIyLCAtMTAgfSwKPiArCQl7IDE3LCAy MywgLTEyIH0sIHsgMTcsIDIzLCAtMTIgfSwgeyAyMSwgMjQsIC0xMiB9LAo+ICsJCXsgMjQsIDI1 LCAtMTIgfQo+ICsJCX0KPiArCX0sCj4gKwkvKiA4QlBQLzE2QlBDICovCj4gKwl7IDUxMiwgMTIs IDYxNDQsIDE5LCAyOCwgMjcsIDI3LCB7Cj4gKwkJeyAwLCAxMiwgMiB9LCB7IDYsIDE0LCAwIH0s IHsgMTMsIDE3LCAwIH0sIHsgMTUsIDIwLCAtMiB9LAo+ICsJCXsgMTksIDIzLCAtNCB9LCB7IDE5 LCAyMywgLTYgfSwgeyAxOSwgMjMsIC04IH0sIHsgMTksIDI0LCAtOCB9LAo+ICsJCXsgMTksIDI1 LCAtOCB9LCB7IDE5LCAyNiwgLTEwIH0sIHsgMjEsIDI2LCAtMTAgfSwKPiArCQl7IDIxLCAyNywg LTEyIH0sIHsgMjEsIDI3LCAtMTIgfSwgeyAyNSwgMjgsIC0xMiB9LAo+ICsJCXsgMjgsIDI5LCAt MTIgfQo+ICsJCX0KPiArCX0sCj4gK30sCj4gK3sKPiArCS8qIDEwQlBQLzhCUEMgKi8KPiArCXsg NDEwLCAxNSwgNTYzMiwgMywgMTIsIDExLCAxMSwgewo+ICsJCXsgMCwgMywgMiB9LCB7IDAsIDQs IDAgfSwgeyAxLCA1LCAwIH0sIHsgMiwgNiwgLTIgfSwKPiArCQl7IDMsIDcsIC00IH0sIHsgMywg NywgLTYgfSwgeyAzLCA3LCAtOCB9LCB7IDMsIDgsIC04IH0sCj4gKwkJeyAzLCA5LCAtOCB9LCB7 IDMsIDksIC0xMCB9LCB7IDUsIDEwLCAtMTAgfSwgeyA1LCAxMCwgLTEwIH0sCj4gKwkJeyA1LCAx MSwgLTEyIH0sIHsgNywgMTEsIC0xMiB9LCB7IDExLCAxMiwgLTEyIH0KPiArCQl9Cj4gKwl9LAo+ ICsJLyogMTBCUFAvMTBCUEMgKi8KPiArCXsgNDEwLCAxNSwgNTYzMiwgNywgMTYsIDE1LCAxNSwg ewo+ICsJCXsgMCwgNywgMiB9LCB7IDQsIDgsIDAgfSwgeyA1LCA5LCAwIH0sIHsgNiwgMTAsIC0y IH0sCj4gKwkJeyA3LCAxMSwgLTQgfSwgeyA3LCAxMSwgLTYgfSwgeyA3LCAxMSwgLTggfSwgeyA3 LCAxMiwgLTggfSwKPiArCQl7IDcsIDEzLCAtOCB9LCB7IDcsIDEzLCAtMTAgfSwgeyA5LCAxNCwg LTEwIH0sIHsgOSwgMTQsIC0xMCB9LAo+ICsJCXsgOSwgMTUsIC0xMiB9LCB7IDExLCAxNSwgLTEy IH0sIHsgMTUsIDE2LCAtMTIgfQo+ICsJCX0KPiArCX0sCj4gKwkvKiAxMEJQUC8xMkJQQyAqLwo+ ICsJeyA0MTAsIDE1LCA1NjMyLCAxMSwgMjAsIDE5LCAxOSwgewo+ICsJCXsgMCwgMTEsIDIgfSwg eyA0LCAxMiwgMCB9LCB7IDksIDEzLCAwIH0sIHsgMTAsIDE0LCAtMiB9LAo+ICsJCXsgMTEsIDE1 LCAtNCB9LCB7IDExLCAxNSwgLTYgfSwgeyAxMSwgMTUsIC04IH0sIHsgMTEsIDE2LCAtOCB9LAo+ ICsJCXsgMTEsIDE3LCAtOCB9LCB7IDExLCAxNywgLTEwIH0sIHsgMTMsIDE4LCAtMTAgfSwKPiAr CQl7IDEzLCAxOCwgLTEwIH0sIHsgMTMsIDE5LCAtMTIgfSwgeyAxNSwgMTksIC0xMiB9LAo+ICsJ CXsgMTksIDIwLCAtMTIgfQo+ICsJCX0KPiArCX0sCj4gKwkvKiAxMEJQUC8xNEJQQyAqLwo+ICsJ eyA0MTAsIDE1LCA1NjMyLCAxNSwgMjQsIDIzLCAyMywgewo+ICsJCXsgMCwgMTEsIDIgfSwgeyA1 LCAxMywgMCB9LCB7IDExLCAxNSwgMCB9LCB7IDEzLCAxOCwgLTIgfSwKPiArCQl7IDE1LCAxOSwg LTQgfSwgeyAxNSwgMTksIC02IH0sIHsgMTUsIDE5LCAtOCB9LCB7IDE1LCAyMCwgLTggfSwKPiAr CQl7IDE1LCAyMSwgLTggfSwgeyAxNSwgMjEsIC0xMCB9LCB7IDE3LCAyMiwgLTEwIH0sCj4gKwkJ eyAxNywgMjIsIC0xMCB9LCB7IDE3LCAyMywgLTEyIH0sIHsgMTksIDIzLCAtMTIgfSwKPiArCQl7 IDIzLCAyNCwgLTEyIH0KPiArCQl9Cj4gKwl9LAo+ICsJLyogMTBCUFAvMTZCUEMgKi8KPiArCXsg NDEwLCAxNSwgNTYzMiwgMTksIDI4LCAyNywgMjcsIHsKPiArCQl7IDAsIDExLCAyIH0sIHsgNiwg MTQsIDAgfSwgeyAxMywgMTcsIDAgfSwgeyAxNiwgMjAsIC0yIH0sCj4gKwkJeyAxOSwgMjMsIC00 IH0sIHsgMTksIDIzLCAtNiB9LCB7IDE5LCAyMywgLTggfSwgeyAxOSwgMjQsIC04IH0sCj4gKwkJ eyAxOSwgMjUsIC04IH0sIHsgMTksIDI1LCAtMTAgfSwgeyAyMSwgMjYsIC0xMCB9LAo+ICsJCXsg MjEsIDI2LCAtMTAgfSwgeyAyMSwgMjcsIC0xMiB9LCB7IDIzLCAyNywgLTEyIH0sCj4gKwkJeyAy NywgMjgsIC0xMiB9Cj4gKwkJfQo+ICsJfSwKPiArfSwKPiArewo+ICsJLyogMTJCUFAvOEJQQyAq Lwo+ICsJeyAzNDEsIDE1LCAyMDQ4LCAzLCAxMiwgMTEsIDExLCB7Cj4gKwkJeyAwLCAyLCAyIH0s IHsgMCwgNCwgMCB9LCB7IDEsIDUsIDAgfSwgeyAxLCA2LCAtMiB9LAo+ICsJCXsgMywgNywgLTQg fSwgeyAzLCA3LCAtNiB9LCB7IDMsIDcsIC04IH0sIHsgMywgOCwgLTggfSwKPiArCQl7IDMsIDks IC04IH0sIHsgMywgMTAsIC0xMCB9LCB7IDUsIDExLCAtMTAgfSwKPiArCQl7IDUsIDEyLCAtMTIg fSwgeyA1LCAxMywgLTEyIH0sIHsgNywgMTMsIC0xMiB9LCB7IDEzLCAxNSwgLTEyIH0KPiArCQl9 Cj4gKwl9LAo+ICsJLyogMTJCUFAvMTBCUEMgKi8KPiArCXsgMzQxLCAxNSwgMjA0OCwgNywgMTYs IDE1LCAxNSwgewo+ICsJCXsgMCwgMiwgMiB9LCB7IDIsIDUsIDAgfSwgeyAzLCA3LCAwIH0sIHsg NCwgOCwgLTIgfSwKPiArCQl7IDYsIDksIC00IH0sIHsgNywgMTAsIC02IH0sIHsgNywgMTEsIC04 IH0sIHsgNywgMTIsIC04IH0sCj4gKwkJeyA3LCAxMywgLTggfSwgeyA3LCAxNCwgLTEwIH0sIHsg OSwgMTUsIC0xMCB9LCB7IDksIDE2LCAtMTIgfSwKPiArCQl7IDksIDE3LCAtMTIgfSwgeyAxMSwg MTcsIC0xMiB9LCB7IDE3LCAxOSwgLTEyIH0KPiArCQl9Cj4gKwl9LAo+ICsJLyogMTJCUFAvMTJC UEMgKi8KPiArCXsgMzQxLCAxNSwgMjA0OCwgMTEsIDIwLCAxOSwgMTksIHsKPiArCQl7IDAsIDYs IDIgfSwgeyA0LCA5LCAwIH0sIHsgNywgMTEsIDAgfSwgeyA4LCAxMiwgLTIgfSwKPiArCQl7IDEw LCAxMywgLTQgfSwgeyAxMSwgMTQsIC02IH0sIHsgMTEsIDE1LCAtOCB9LCB7IDExLCAxNiwgLTgg fSwKPiArCQl7IDExLCAxNywgLTggfSwgeyAxMSwgMTgsIC0xMCB9LCB7IDEzLCAxOSwgLTEwIH0s Cj4gKwkJeyAxMywgMjAsIC0xMiB9LCB7IDEzLCAyMSwgLTEyIH0sIHsgMTUsIDIxLCAtMTIgfSwK PiArCQl7IDIxLCAyMywgLTEyIH0KPiArCQl9Cj4gKwl9LAo+ICsJLyogMTJCUFAvMTRCUEMgKi8K PiArCXsgMzQxLCAxNSwgMjA0OCwgMTUsIDI0LCAyMywgMjMsIHsKPiArCQl7IDAsIDYsIDIgfSwg eyA3LCAxMCwgMCB9LCB7IDksIDEzLCAwIH0sIHsgMTEsIDE2LCAtMiB9LAo+ICsJCXsgMTQsIDE3 LCAtNCB9LCB7IDE1LCAxOCwgLTYgfSwgeyAxNSwgMTksIC04IH0sIHsgMTUsIDIwLCAtOCB9LAo+ ICsJCXsgMTUsIDIwLCAtOCB9LCB7IDE1LCAyMSwgLTEwIH0sIHsgMTcsIDIxLCAtMTAgfSwKPiAr CQl7IDE3LCAyMSwgLTEyIH0sIHsgMTcsIDIxLCAtMTIgfSwgeyAxOSwgMjIsIC0xMiB9LAo+ICsJ CXsgMjIsIDIzLCAtMTIgfQo+ICsJCX0KPiArCX0sCj4gKwkvKiAxMkJQUC8xNkJQQyAqLwo+ICsJ eyAzNDEsIDE1LCAyMDQ4LCAxOSwgMjgsIDI3LCAyNywgewo+ICsJCXsgMCwgNiwgMiB9LCB7IDYs IDExLCAwIH0sIHsgMTEsIDE1LCAwIH0sIHsgMTQsIDE4LCAtMiB9LAo+ICsJCXsgMTgsIDIxLCAt NCB9LCB7IDE5LCAyMiwgLTYgfSwgeyAxOSwgMjMsIC04IH0sIHsgMTksIDI0LCAtOCB9LAo+ICsJ CXsgMTksIDI0LCAtOCB9LCB7IDE5LCAyNSwgLTEwIH0sIHsgMjEsIDI1LCAtMTAgfSwKPiArCQl7 IDIxLCAyNSwgLTEyIH0sIHsgMjEsIDI1LCAtMTIgfSwgeyAyMywgMjYsIC0xMiB9LAo+ICsJCXsg MjYsIDI3LCAtMTIgfQo+ICsJCX0KPiArCX0sCj4gK30sCj4gK3sKPiArCS8qIDE1QlBQLzhCUEMg Ki8KPiArCXsgMjczLCAxNSwgMjA0OCwgMywgMTIsIDExLCAxMSwgewo+ICsJCXsgMCwgMCwgMTAg fSwgeyAwLCAxLCA4IH0sIHsgMCwgMSwgNiB9LCB7IDAsIDIsIDQgfSwKPiArCQl7IDEsIDIsIDIg fSwgeyAxLCAzLCAwIH0sIHsgMSwgMywgLTIgfSwgeyAyLCA0LCAtNCB9LAo+ICsJCXsgMiwgNSwg LTYgfSwgeyAzLCA1LCAtOCB9LCB7IDQsIDYsIC0xMCB9LCB7IDQsIDcsIC0xMCB9LAo+ICsJCXsg NSwgNywgLTEyIH0sIHsgNywgOCwgLTEyIH0sIHsgOCwgOSwgLTEyIH0KPiArCQl9Cj4gKwl9LAo+ ICsJLyogMTVCUFAvMTBCUEMgKi8KPiArCXsgMjczLCAxNSwgMjA0OCwgNywgMTYsIDE1LCAxNSwg ewo+ICsJCXsgMCwgMiwgMTAgfSwgeyAyLCA1LCA4IH0sIHsgMywgNSwgNiB9LCB7IDQsIDYsIDQg fSwKPiArCQl7IDUsIDYsIDIgfSwgeyA1LCA3LCAwIH0sIHsgNSwgNywgLTIgfSwgeyA2LCA4LCAt NCB9LAo+ICsJCXsgNiwgOSwgLTYgfSwgeyA3LCA5LCAtOCB9LCB7IDgsIDEwLCAtMTAgfSwgeyA4 LCAxMSwgLTEwIH0sCj4gKwkJeyA5LCAxMSwgLTEyIH0sIHsgMTEsIDEyLCAtMTIgfSwgeyAxMiwg MTMsIC0xMiB9Cj4gKwkJfQo+ICsJfSwKPiArCS8qIDE1QlBQLzEyQlBDICovCj4gKwl7IDI3Mywg MTUsIDIwNDgsIDExLCAyMCwgMTksIDE5LCB7Cj4gKwkJeyAwLCA0LCAxMCB9LCB7IDIsIDcsIDgg fSwgeyA0LCA5LCA2IH0sIHsgNiwgMTEsIDQgfSwKPiArCQl7IDksIDExLCAyIH0sIHsgOSwgMTEs IDAgfSwgeyA5LCAxMiwgLTIgfSwgeyAxMCwgMTIsIC00IH0sCj4gKwkJeyAxMSwgMTMsIC02IH0s IHsgMTEsIDEzLCAtOCB9LCB7IDEyLCAxNCwgLTEwIH0sCj4gKwkJeyAxMywgMTUsIC0xMCB9LCB7 IDEzLCAxNSwgLTEyIH0sIHsgMTUsIDE2LCAtMTIgfSwKPiArCQl7IDE2LCAxNywgLTEyIH0KPiAr CQl9Cj4gKwl9LAo+ICsJLyogMTVCUFAvMTRCUEMgKi8KPiArCXsgMjczLCAxNSwgMjA0OCwgMTUs IDI0LCAyMywgMjMsIHsKPiArCQl7IDAsIDQsIDEwIH0sIHsgMywgOCwgOCB9LCB7IDYsIDExLCA2 IH0sIHsgOSwgMTQsIDQgfSwKPiArCQl7IDEzLCAxNSwgMiB9LCB7IDEzLCAxNSwgMCB9LCB7IDEz LCAxNiwgLTIgfSwgeyAxNCwgMTYsIC00IH0sCj4gKwkJeyAxNSwgMTcsIC02IH0sIHsgMTUsIDE3 LCAtOCB9LCB7IDE2LCAxOCwgLTEwIH0sCj4gKwkJeyAxNywgMTksIC0xMCB9LCB7IDE3LCAxOSwg LTEyIH0sIHsgMTksIDIwLCAtMTIgfSwKPiArCQl7IDIwLCAyMSwgLTEyIH0KPiArCQl9Cj4gKwl9 LAo+ICsJLyogMTVCUFAvMTZCUEMgKi8KPiArCXsgMjczLCAxNSwgMjA0OCwgMTksIDI4LCAyNywg MjcsIHsKPiArCQl7IDAsIDQsIDEwIH0sIHsgNCwgOSwgOCB9LCB7IDgsIDEzLCA2IH0sIHsgMTIs IDE3LCA0IH0sCj4gKwkJeyAxNywgMTksIDIgfSwgeyAxNywgMjAsIDAgfSwgeyAxNywgMjAsIC0y IH0sIHsgMTgsIDIwLCAtNCB9LAo+ICsJCXsgMTksIDIxLCAtNiB9LCB7IDE5LCAyMSwgLTggfSwg eyAyMCwgMjIsIC0xMCB9LAo+ICsJCXsgMjEsIDIzLCAtMTAgfSwgeyAyMSwgMjMsIC0xMiB9LCB7 IDIzLCAyNCwgLTEyIH0sCj4gKwkJeyAyNCwgMjUsIC0xMiB9Cj4gKwkJfQo+ICsJfQo+ICt9Cj4g K307Cj4gKwo+ICtzdGF0aWMgaW50IGdldF9yb3dfaW5kZXhfZm9yX3JjX3BhcmFtcyh1MTYgY29t cHJlc3NlZF9icHApCj4gK3sKPiArCXN3aXRjaCAoY29tcHJlc3NlZF9icHApIHsKPiArCWNhc2Ug NjoKPiArCQlyZXR1cm4gUk9XX0lOREVYXzZCUFA7Cj4gKwljYXNlIDg6Cj4gKwkJcmV0dXJuIFJP V19JTkRFWF84QlBQOwo+ICsJY2FzZSAxMDoKPiArCQlyZXR1cm4gUk9XX0lOREVYXzEwQlBQOwo+ ICsJY2FzZSAxMjoKPiArCQlyZXR1cm4gUk9XX0lOREVYXzEyQlBQOwo+ICsJY2FzZSAxNToKPiAr CQlyZXR1cm4gUk9XX0lOREVYXzE1QlBQOwo+ICsJZGVmYXVsdDoKPiArCQlyZXR1cm4gLUVJTlZB TDsKPiArCX0KPiArfQo+ICsKPiArc3RhdGljIGludCBnZXRfY29sdW1uX2luZGV4X2Zvcl9yY19w YXJhbXModTggYml0c19wZXJfY29tcG9uZW50KQo+ICt7Cj4gKwlzd2l0Y2ggKGJpdHNfcGVyX2Nv bXBvbmVudCkgewo+ICsJY2FzZSA4Ogo+ICsJCXJldHVybiBDT0xVTU5fSU5ERVhfOEJQQzsKPiAr CWNhc2UgMTA6Cj4gKwkJcmV0dXJuIENPTFVNTl9JTkRFWF8xMEJQQzsKPiArCWNhc2UgMTI6Cj4g KwkJcmV0dXJuIENPTFVNTl9JTkRFWF8xMkJQQzsKPiArCWNhc2UgMTQ6Cj4gKwkJcmV0dXJuIENP TFVNTl9JTkRFWF8xNEJQQzsKPiArCWNhc2UgMTY6Cj4gKwkJcmV0dXJuIENPTFVNTl9JTkRFWF8x NkJQQzsKPiArCWRlZmF1bHQ6Cj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwl9Cj4gK30KPiArCj4g K2ludCBpbnRlbF9kcF9jb21wdXRlX2RzY19wYXJhbXMoc3RydWN0IGludGVsX2RwICppbnRlbF9k cCwKPiArCQkJCQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcpCj4gK3sKPiAr CXN0cnVjdCBkcm1fZHNjX2NvbmZpZyAqdmRzY19jZmcgPSAmcGlwZV9jb25maWctPmRwX2RzY19j Zmc7Cj4gKwl1MTYgY29tcHJlc3NlZF9icHAgPSBwaXBlX2NvbmZpZy0+ZHNjX3BhcmFtcy5jb21w cmVzc2VkX2JwcDsKPiArCXU4IGkgPSAwOwo+ICsJdTggcm93X2luZGV4ID0gMDsKPiArCXU4IGNv bHVtbl9pbmRleCA9IDA7Cj4gKwl1OCBsaW5lX2J1Zl9kZXB0aCA9IDA7Cj4gKwo+ICsJdmRzY19j ZmctPnBpY193aWR0aCA9IHBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGUuY3J0Y19oZGlz cGxheTsKPiArCXZkc2NfY2ZnLT5waWNfaGVpZ2h0ID0gcGlwZV9jb25maWctPmJhc2UuYWRqdXN0 ZWRfbW9kZS5jcnRjX3ZkaXNwbGF5Owo+ICsJdmRzY19jZmctPnNsaWNlX3dpZHRoID0gRElWX1JP VU5EX1VQKHZkc2NfY2ZnLT5waWNfd2lkdGgsCj4gKwkJCQkJICAgICBwaXBlX2NvbmZpZy0+ZHNj X3BhcmFtcy5zbGljZV9jb3VudCk7Cj4gKwkvKgo+ICsJICogU2xpY2UgSGVpZ2h0IG9mIDggd29y a3MgZm9yIGFsbCBjdXJyZW50bHkgYXZhaWxhYmxlIHBhbmVscy4gU28gc3RhcnQKPiArCSAqIHdp dGggdGhhdCBpZiBwaWNfaGVpZ2h0IGlzIGFuIGludGVncmFsIG11bHRpcGxlIG9mIDguCj4gKwkg KiBFdmVudHVhbGx5IGFkZCBsb2dpYyB0byB0cnkgbXVsdGlwbGUgc2xpY2UgaGVpZ2h0cy4KPiAr CSAqLwo+ICsJaWYgKHZkc2NfY2ZnLT5waWNfaGVpZ2h0ICUgOCA9PSAwKQo+ICsJCXZkc2NfY2Zn LT5zbGljZV9oZWlnaHQgPSA4Owo+ICsJZWxzZSBpZiAodmRzY19jZmctPnBpY19oZWlnaHQgJSA0 ID09IDApCj4gKwkJdmRzY19jZmctPnNsaWNlX2hlaWdodCA9IDQ7Cj4gKwllbHNlCj4gKwkJdmRz Y19jZmctPnNsaWNlX2hlaWdodCA9IDI7Cj4gKwo+ICsJLyogVmFsdWVzIGZpbGxlZCBmcm9tIERT QyBTaW5rIERQQ0QgKi8KPiArCXZkc2NfY2ZnLT5kc2NfdmVyc2lvbl9tYWpvciA9IChpbnRlbF9k cC0+ZHNjX2RwY2RbRFBfRFNDX1JFViAtIERQX0RTQ19TVVBQT1JUXSAmCj4gKwkJCQkgICAgICAg RFBfRFNDX01BSk9SX01BU0spID4+IERQX0RTQ19NQUpPUl9TSElGVDsKPiArCXZkc2NfY2ZnLT5k c2NfdmVyc2lvbl9taW5vciA9IG1pbihEU0NfU1VQUE9SVEVEX1ZFUlNJT05fTUlOLAo+ICsJCQkJ CSAgKGludGVsX2RwLT5kc2NfZHBjZFtEUF9EU0NfUkVWIC0gRFBfRFNDX1NVUFBPUlRdICYKPiAr CQkJCQkgICBEUF9EU0NfTUlOT1JfTUFTSykgPj4gRFBfRFNDX01JTk9SX1NISUZUKTsKPiArCj4g Kwl2ZHNjX2NmZy0+Y29udmVydF9yZ2IgPSBpbnRlbF9kcC0+ZHNjX2RwY2RbRFBfRFNDX0RFQ19D T0xPUl9GT1JNQVRfQ0FQIC0gRFBfRFNDX1NVUFBPUlRdICYKPiArCQlEUF9EU0NfUkdCOwo+ICsK PiArCWxpbmVfYnVmX2RlcHRoID0gZHJtX2RwX2RzY19zaW5rX2xpbmVfYnVmX2RlcHRoKGludGVs X2RwLT5kc2NfZHBjZCk7CgpBZGQgYSBjaGVjayBmb3IgcmV0dXJuIHZhbHVlIG9mIDAKCj4gKwlp ZiAodmRzY19jZmctPmRzY192ZXJzaW9uX21pbm9yID09IDIpCj4gKwkJdmRzY19jZmctPmxpbmVf YnVmX2RlcHRoID0gKGxpbmVfYnVmX2RlcHRoID09IERTQ18xXzJfTUFYX0xJTkVCVUZfREVQVEhf QklUUykgPwo+ICsJCQlEU0NfMV8yX01BWF9MSU5FQlVGX0RFUFRIX1ZBTCA6IGxpbmVfYnVmX2Rl cHRoOwo+ICsJZWxzZQo+ICsJCXZkc2NfY2ZnLT5saW5lX2J1Zl9kZXB0aCA9IChsaW5lX2J1Zl9k ZXB0aCA+IERTQ18xXzFfTUFYX0xJTkVCVUZfREVQVEhfQklUUykgPwo+ICsJCQlEU0NfMV8xX01B WF9MSU5FQlVGX0RFUFRIX0JJVFMgOiBsaW5lX2J1Zl9kZXB0aDsKPiArCj4gKwkvKiBHZW4gMTEg ZG9lcyBub3Qgc3VwcG9ydCBZQ2JDciAqLwo+ICsJdmRzY19jZmctPmVuYWJsZTQyMiA9IGZhbHNl Owo+ICsJLyogR2VuIDExIGRvZXMgbm90IHN1cHBvcnQgVkJSICovCj4gKwl2ZHNjX2NmZy0+dmJy X2VuYWJsZSA9IGZhbHNlOwo+ICsJdmRzY19jZmctPmJsb2NrX3ByZWRfZW5hYmxlID0KPiArCQkJ aW50ZWxfZHAtPmRzY19kcGNkW0RQX0RTQ19CTEtfUFJFRElDVElPTl9TVVBQT1JUIC0gRFBfRFND X1NVUFBPUlRdICYKPiArCQlEUF9EU0NfQkxLX1BSRURJQ1RJT05fSVNfU1VQUE9SVEVEOwo+ICsK PiArCS8qIEdlbiAxMSBvbmx5IHN1cHBvcnRzIGludGVncmFsIHZhbHVlcyBvZiBicHAgKi8KPiAr CXZkc2NfY2ZnLT5iaXRzX3Blcl9waXhlbCA9IGNvbXByZXNzZWRfYnBwIDw8IDQ7Cj4gKwl2ZHNj X2NmZy0+Yml0c19wZXJfY29tcG9uZW50ID0gcGlwZV9jb25maWctPnBpcGVfYnBwIC8gMzsKPiAr Cj4gKwlmb3IgKGkgPSAwOyBpIDwgRFNDX05VTV9CVUZfUkFOR0VTIC0gMTsgaSsrKSB7Cj4gKwkJ LyoKPiArCQkgKiBzaXggMHMgYXJlIGFwcGVuZGVkIHRvIHRoZSBsc2Igb2YgZWFjaCB0aHJlc2hv bGQgdmFsdWUKPiArCQkgKiBpbnRlcm5hbGx5IGluIGgvdy4KPiArCQkgKiBPbmx5IDggYml0cyBh cmUgYWxsb3dlZCBmb3IgcHJvZ3JhbW1pbmcgUmNCdWZUaHJlc2hvbGQKPiArCQkgKi8KPiArCQl2 ZHNjX2NmZy0+cmNfYnVmX3RocmVzaFtpXSA9IHJjX2J1Zl90aHJlc2hbaV0gPj4gNjsKPiArCX0K PiArCj4gKwkvKgo+ICsJICogRm9yIDZicHAsIFJDIEJ1ZmZlciB0aHJlc2hvbGQgMTIgYW5kIDEz IG5lZWQgYSBkaWZmZXJlbnQgdmFsdWUKPiArCSAqIGFzIHBlciBDIE1vZGVsCj4gKwkgKi8KPiAr CWlmIChjb21wcmVzc2VkX2JwcCA9PSA2KSB7Cj4gKwkJdmRzY19jZmctPnJjX2J1Zl90aHJlc2hb MTJdID0gMHg3QzsKPiArCQl2ZHNjX2NmZy0+cmNfYnVmX3RocmVzaFsxM10gPSAweDdEOwo+ICsJ fQo+ICsKPiArCXJvd19pbmRleCA9IGdldF9yb3dfaW5kZXhfZm9yX3JjX3BhcmFtcyhjb21wcmVz c2VkX2JwcCk7Cj4gKwljb2x1bW5faW5kZXggPQo+ICsJCWdldF9jb2x1bW5faW5kZXhfZm9yX3Jj X3BhcmFtcyh2ZHNjX2NmZy0+Yml0c19wZXJfY29tcG9uZW50KTsKPiArCj4gKwlpZiAocm93X2lu ZGV4IDwgMCB8fCBjb2x1bW5faW5kZXggPCAwKQo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsKPiAr CXZkc2NfY2ZnLT5maXJzdF9saW5lX2JwZ19vZmZzZXQgPQo+ICsJCXJjX3BhcmFtc1tyb3dfaW5k ZXhdW2NvbHVtbl9pbmRleF0uZmlyc3RfbGluZV9icGdfb2Zmc2V0Owo+ICsJdmRzY19jZmctPmlu aXRpYWxfeG1pdF9kZWxheSA9Cj4gKwkJcmNfcGFyYW1zW3Jvd19pbmRleF1bY29sdW1uX2luZGV4 XS5pbml0aWFsX3htaXRfZGVsYXk7Cj4gKwl2ZHNjX2NmZy0+aW5pdGlhbF9vZmZzZXQgPQo+ICsJ CXJjX3BhcmFtc1tyb3dfaW5kZXhdW2NvbHVtbl9pbmRleF0uaW5pdGlhbF9vZmZzZXQ7Cj4gKwl2 ZHNjX2NmZy0+ZmxhdG5lc3NfbWluX3FwID0KPiArCQlyY19wYXJhbXNbcm93X2luZGV4XVtjb2x1 bW5faW5kZXhdLmZsYXRuZXNzX21pbl9xcDsKPiArCXZkc2NfY2ZnLT5mbGF0bmVzc19tYXhfcXAg PQo+ICsJCXJjX3BhcmFtc1tyb3dfaW5kZXhdW2NvbHVtbl9pbmRleF0uZmxhdG5lc3NfbWF4X3Fw Owo+ICsJdmRzY19jZmctPnJjX3F1YW50X2luY3JfbGltaXQwID0KPiArCQlyY19wYXJhbXNbcm93 X2luZGV4XVtjb2x1bW5faW5kZXhdLnJjX3F1YW50X2luY3JfbGltaXQwOwo+ICsJdmRzY19jZmct PnJjX3F1YW50X2luY3JfbGltaXQxID0KPiArCQlyY19wYXJhbXNbcm93X2luZGV4XVtjb2x1bW5f aW5kZXhdLnJjX3F1YW50X2luY3JfbGltaXQxOwo+ICsKPiArCWZvciAoaSA9IDA7IGkgPCBEU0Nf TlVNX0JVRl9SQU5HRVM7IGkrKykKPiArCQl2ZHNjX2NmZy0+cmNfcmFuZ2VfcGFyYW1zW2ldID0K PiArCQkJcmNfcGFyYW1zW3Jvd19pbmRleF1bY29sdW1uX2luZGV4XS5yY19yYW5nZV9wYXJhbXNb aV07Cj4gKwo+ICsJLyoKPiArCSAqIEJpdHNQZXJDb21wb25lbnQgdmFsdWUgZGV0ZXJtaW5lcyBt dXhfd29yZF9zaXplOgo+ICsJICogV2hlbiBCaXRzUGVyQ29tcG9uZW50IGlzIDEyYnBjLCBtdXhX b3JkU2l6ZSB3aWxsIGJlIGVxdWFsIHRvIDY0IGJpdHMKPiArCSAqIFdoZW4gQml0c1BlckNvbXBv bmVudCBpcyA4IG9yIDEwYnBjLCBtdXhXb3JkU2l6ZSB3aWxsIGJlIGVxdWFsIHRvCj4gKwkgKiA0 OCBiaXRzCj4gKwkgKi8KPiArCWlmICh2ZHNjX2NmZy0+Yml0c19wZXJfY29tcG9uZW50ID09IDgg fHwKPiArCSAgICB2ZHNjX2NmZy0+Yml0c19wZXJfY29tcG9uZW50ID09IDEwKQo+ICsJCXZkc2Nf Y2ZnLT5tdXhfd29yZF9zaXplID0gRFNDX01VWF9XT1JEX1NJWkVfOF8xMF9CUEM7Cj4gKwllbHNl IGlmICh2ZHNjX2NmZy0+Yml0c19wZXJfY29tcG9uZW50ID09IDEyKQo+ICsJCXZkc2NfY2ZnLT5t dXhfd29yZF9zaXplID0gRFNDX01VWF9XT1JEX1NJWkVfMTJfQlBDOwo+ICsKPiArCS8qIEluaXRp YWxTY2FsZVZhbHVlIGlzIGEgNiBiaXQgdmFsdWUgd2l0aCAzIGZyYWN0aW9uYWwgYml0cyAoVTMu MykgKi8KPiArCXZkc2NfY2ZnLT5pbml0aWFsX3NjYWxlX3ZhbHVlID0gKHZkc2NfY2ZnLT5yY19t b2RlbF9zaXplIDw8IDMpIC8KPiArCQkodmRzY19jZmctPnJjX21vZGVsX3NpemUgLSB2ZHNjX2Nm Zy0+aW5pdGlhbF9vZmZzZXQpOwoKICAgICAgICAgICAgICAgICAgICAgICAgXl5eXl52ZHNjX2Nm Zy0+cmNfbW9kZWxfc2l6ZSBpcyBvbmx5IGRlZmluZWQgYnV0IG5vdCBnZXR0aW5nIHNldCBhbnl3 aGVyZS4KSXQgc2hvdWxkIGJlIHNldCB0byBEU0NfUkNfTU9ERUxfU0laRV9DT05TVCBkZWZpbmVk IGluIGRybV9kc2MuaCBlbHNlIGl0IHJlc3VsdHMgaW50byBhbiBpbmNvcnJlY3QgZGVmYXVsdCB2 YWx1ZS4KCj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0v ZHJtX2RwX2hlbHBlci5oIGIvaW5jbHVkZS9kcm0vZHJtX2RwX2hlbHBlci5oCj4gaW5kZXggMGNm MjQwNy4uZjE3ODkzMyAxMDA2NDQKPiAtLS0gYS9pbmNsdWRlL2RybS9kcm1fZHBfaGVscGVyLmgK PiArKysgYi9pbmNsdWRlL2RybS9kcm1fZHBfaGVscGVyLmgKPiBAQCAtMTg2LDYgKzE4Niw5IEBA Cj4gIAo+ICAjZGVmaW5lIERQX0dVSUQJCQkJICAgIDB4MDMwICAgLyogMS4yICovCj4gIAo+ICsj ZGVmaW5lIERQX0RTQ19SQ19QSVhFTFNfUEVSX0dST1VQCQkzCj4gKyNkZWZpbmUgRFBfRFNDX1ND QUxFX0RFQ1JFTUVOVF9JTlRFUlZBTF9NQVgJNDA5NQoKVGhpcyBwYXRjaCBpbiBkcm0gc2hvdWxk IGJlIHNlbnQgYXMgYSBzZXBhcmF0ZSBwYXRjaCBvciBjb21iaW5lZCB3aXRoIHRoZSBwYXRjaAp3 aGVyZSB5b3UgYXJlIGRlZmluaW5nIERSTSBEU0MgcGFyYW1ldGVycyBhbmQgY29uc3RhbnRzLgoK TWFuYXNpCgo+ICsKPiAgI2RlZmluZSBEUF9EU0NfU1VQUE9SVCAgICAgICAgICAgICAgICAgICAg ICAweDA2MCAgIC8qIERQIDEuNCAqLwo+ICAjIGRlZmluZSBEUF9EU0NfREVDT01QUkVTU0lPTl9J U19TVVBQT1JURUQgICgxIDw8IDApCj4gIAo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1f ZHNjLmggYi9pbmNsdWRlL2RybS9kcm1fZHNjLmgKPiBpbmRleCA0Y2ZjZDAzLi43OTZjNzk4IDEw MDY0NAo+IC0tLSBhL2luY2x1ZGUvZHJtL2RybV9kc2MuaAo+ICsrKyBiL2luY2x1ZGUvZHJtL2Ry bV9kc2MuaAo+IEBAIC02Nyw3ICs2Nyw3IEBAIHN0cnVjdCBkc2NfcmNfcmFuZ2VfcGFyYW1ldGVy cyB7Cj4gIAkvKiBNYXggUXVhbnRpemF0aW9uIFBhcmFtZXRlcnMgYWxsb3dlZCBmb3IgdGhpcyBy YW5nZSAqLwo+ICAJdTggcmFuZ2VfbWF4X3FwOwo+ICAJLyogQml0cy9ncm91cCBvZmZzZXQgdG8g YXBwbHkgdG8gdGFyZ2V0IGZvciB0aGlzIGdyb3VwICovCj4gLQl1OCByYW5nZV9icGdfb2Zmc2V0 Owo+ICsJczggcmFuZ2VfYnBnX29mZnNldDsKPiAgfTsKPiAgCj4gIHN0cnVjdCBkcm1fZHNjX2Nv bmZpZyB7Cj4gLS0gCj4gMi43LjQKPiAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vaW50ZWwtZ2Z4Cg==