From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH v7 13/19] drm/i915/dp: Configure i915 Picture parameter Set registers during DSC enabling Date: Fri, 2 Nov 2018 19:52:53 +0200 Message-ID: <20181102175253.GY9144@intel.com> References: <20181102064659.8991-1-manasi.d.navare@intel.com> <20181102064659.8991-14-manasi.d.navare@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20181102064659.8991-14-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: Manasi Navare Cc: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gVGh1LCBOb3YgMDEsIDIwMTggYXQgMTE6NDY6NTNQTSAtMDcwMCwgTWFuYXNpIE5hdmFyZSB3 cm90ZToKPiBBZnRlciBlbmNvZGVyLT5wcmVfZW5hYmxlKCkgaG9vaywgYWZ0ZXIgbGluayB0cmFp bmluZyBzZXF1ZW5jZSBpcwo+IGNvbXBsZXRlZCwgUFBTIHJlZ2lzdGVycyBmb3IgRFNDIGVuY29k ZXIgYXJlIGNvbmZpZ3VyZWQgdXNpbmcgdGhlCj4gRFNDIHN0YXRlIHBhcmFtZXRlcnMgaW4gaW50 ZWxfY3J0Y19zdGF0ZSBhcyBwYXJ0IG9mIERTQyBlbmFibGluZwo+IHJvdXRpbmUgaW4gdGhlIHNv dXJjZS4gRFNDIGVuYWJsaW5nIHJvdXRpbmUgaXMgY2FsbGVkIGFmdGVyCj4gZW5jb2Rlci0+cHJl X2VuYWJsZSgpIGJlZm9yZSBlbmJhbGluZyB0aGUgcGlwZSBhbmQgYWZ0ZXIKPiBjb21wcmVzc2lv biBpcyBlbmFibGVkIG9uIHRoZSBzaW5rLgo+IAo+IHY1Ogo+ICogbWFrZSBjcnRjX3N0YXRlIGNv bnN0IChWaWxsZSkKPiB2NDoKPiAqIFVzZSBjcHVfdHJhbnNjb2RlciBpbnN0ZWFkIG9mIGVuY29k ZXItPnR5cGUgZm9yIHVzaW5nIEVEUCB0cmFuc2NvZGVyCj4gRFNDIHJlZ2lzdGVycyhWaWxsZSkK PiAqIEtlZXAgYWxsIFBTUyByZWdzIHRvZ2V0aGVyIChBbnVzaGEpCj4gCj4gdjM6Cj4gKiBDb25m aWd1cmUgUGljX3dpZHRoLzIgZm9yIGVhY2ggVkRTQyBlbmdpbmUgd2hlbiB0d28gVkRTQyBlbmdp bmVzIHBlciBwaXBlCj4gYXJlIHVzZWQgKE1hbmFzaSkKPiAqIEFkZCBEU0Mgc2xpY2Vfcm93X3Bl cl9mcmFtZSBpbiBQUFMxNiAoTWFuYXNpKQo+IAo+IHYyOgo+ICogRW5hYmxlIFBHMiBwb3dlciB3 ZWxsIGZvciBWRFNDIG9uIGVEUAo+IAo+IENjOiBKYW5pIE5pa3VsYSA8amFuaS5uaWt1bGFAbGlu dXguaW50ZWwuY29tPgo+IENjOiBWaWxsZSBTeXJqYWxhIDx2aWxsZS5zeXJqYWxhQGxpbnV4Lmlu dGVsLmNvbT4KPiBDYzogQW51c2hhIFNyaXZhdHNhIDxhbnVzaGEuc3JpdmF0c2FAaW50ZWwuY29t Pgo+IFNpZ25lZC1vZmYtYnk6IE1hbmFzaSBOYXZhcmUgPG1hbmFzaS5kLm5hdmFyZUBpbnRlbC5j b20+Cj4gUmV2aWV3ZWQtYnk6IEFudXNoYSBTcml2YXRzYSA8YW51c2hhLnNyaXZhdHNhQGludGVs LmNvbT4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgIHwgICAy ICsKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIHwgICA2ICsKPiAgZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdmRzYy5jICAgIHwgNDE5ICsrKysrKysrKysrKysrKysr KysrKysrKysrKwo+ICAzIGZpbGVzIGNoYW5nZWQsIDQyNyBpbnNlcnRpb25zKCspCj4gCj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2Rydi5oCj4gaW5kZXggZDc3OTdhNDFjNjQ4Li5mMzQ3ZDBkN2I5ZWIgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBAQCAtMzQ4NSw2ICszNDg1LDggQEAgZXh0ZXJu IHZvaWQgaW50ZWxfcnBzX21hcmtfaW50ZXJhY3RpdmUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg Kmk5MTUsCj4gIAkJCQkgICAgICAgYm9vbCBpbnRlcmFjdGl2ZSk7Cj4gIGV4dGVybiBib29sIGlu dGVsX3NldF9tZW1vcnlfY3hzcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4g IAkJCQkgIGJvb2wgZW5hYmxlKTsKPiArZXh0ZXJuIHZvaWQgaW50ZWxfZHNjX2VuYWJsZShzdHJ1 Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiArCQkJICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSk7Cj4gIAo+ICBpbnQgaTkxNV9yZWdfcmVhZF9pb2N0bChz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAo+ICAJCQlzdHJ1Y3QgZHJtX2ZpbGUg KmZpbGUpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5 LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiBpbmRleCA0NzdlNTNj MzczNTMuLjJlOTZlMjAwNDgzMSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kaXNwbGF5LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5 LmMKPiBAQCAtNTQxNyw2ICs1NDE3LDEyIEBAIHN0YXRpYyB2b2lkIGludGVsX2VuY29kZXJzX3By ZV9lbmFibGUoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICAKPiAgCQlpZiAoZW5jb2Rlci0+cHJl X2VuYWJsZSkKPiAgCQkJZW5jb2Rlci0+cHJlX2VuYWJsZShlbmNvZGVyLCBjcnRjX3N0YXRlLCBj b25uX3N0YXRlKTsKPiArCj4gKwkJLyoKPiArCQkgKiBFbmFibGUgYW5kIENvbmZpZ3VyZSBEaXNw bGF5IFN0cmVhbSBDb21wcmVzc2lvbiBpbiB0aGUgc291cmNlCj4gKwkJICogaWYgZW5hYmxlZCBp biBpbnRlbF9jcnRjX3N0YXRlLgo+ICsJCSAqLwo+ICsJCWludGVsX2RzY19lbmFibGUoZW5jb2Rl ciwgY3J0Y19zdGF0ZSk7CgpEaWRuJ3QgSSBhc2sgZm9yIHRoaXMgdG8gYmUgbW92ZWQgaW50byB0 aGUgcHJlX2VuYWJsZSBob29rPwpXZSBkZWZpbml0ZWx5IGRvbid0IHdhbnQgaXQgaGVyZSBhcyBp dCB3b3VsZCBiZSBhIHZlcnkgc3VwcmlzaW5nIHBsYWNlCmZvciBzdHVmZiBsaWtlIHRoaXMuCgo+ ICAJfQo+ICB9Cj4gIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF92 ZHNjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF92ZHNjLmMKPiBpbmRleCBiOTNjYjMy MDI2ZmEuLjlmODBhODZmOTVkZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF92ZHNjLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF92ZHNjLmMKPiBA QCAtNTgwLDMgKzU4MCw0MjIgQEAgaW50IGludGVsX2RwX2NvbXB1dGVfZHNjX3BhcmFtcyhzdHJ1 Y3QgaW50ZWxfZHAgKmludGVsX2RwLAo+ICAKPiAgCXJldHVybiAwOwo+ICB9Cj4gKwo+ICtzdGF0 aWMgdm9pZCBpbnRlbF9jb25maWd1cmVfcHBzX2Zvcl9kc2NfZW5jb2RlcihzdHJ1Y3QgaW50ZWxf ZW5jb2RlciAqZW5jb2RlciwKPiArCQkJCQkJY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUg KmNydGNfc3RhdGUpCj4gK3sKPiArCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxf Y3J0YyhjcnRjX3N0YXRlLT5iYXNlLmNydGMpOwo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7Cj4gKwljb25zdCBzdHJ1Y3Qg ZHJtX2RzY19jb25maWcgKnZkc2NfY2ZnID0gJmNydGNfc3RhdGUtPmRwX2RzY19jZmc7Cj4gKwll bnVtIHBpcGUgcGlwZSA9IGNydGMtPnBpcGU7Cj4gKwllbnVtIHRyYW5zY29kZXIgY3B1X3RyYW5z Y29kZXIgPSBjcnRjX3N0YXRlLT5jcHVfdHJhbnNjb2RlcjsKPiArCXUzMiBwcHNfdmFsID0gMDsK PiArCXUzMiByY19idWZfdGhyZXNoX2R3b3JkWzRdOwo+ICsJdTMyIHJjX3JhbmdlX3BhcmFtc19k d29yZFs4XTsKPiArCXU4IG51bV92ZHNjX2luc3RhbmNlcyA9IChjcnRjX3N0YXRlLT5kc2NfcGFy YW1zLmRzY19zcGxpdCkgPyAyIDogMTsKPiArCWludCBpID0gMDsKPiArCj4gKwkvKiBQb3B1bGF0 ZSBQSUNUVVJFX1BBUkFNRVRFUl9TRVRfMCByZWdpc3RlcnMgKi8KPiArCXBwc192YWwgPSBEU0Nf VkVSX01BSiB8IHZkc2NfY2ZnLT5kc2NfdmVyc2lvbl9taW5vciA8PAo+ICsJCURTQ19WRVJfTUlO X1NISUZUIHwKPiArCQl2ZHNjX2NmZy0+Yml0c19wZXJfY29tcG9uZW50IDw8IERTQ19CUENfU0hJ RlQgfAo+ICsJCXZkc2NfY2ZnLT5saW5lX2J1Zl9kZXB0aCA8PCBEU0NfTElORV9CVUZfREVQVEhf U0hJRlQ7Cj4gKwlpZiAodmRzY19jZmctPmJsb2NrX3ByZWRfZW5hYmxlKQo+ICsJCXBwc192YWwg fD0gRFNDX0JMT0NLX1BSRURJQ1RJT047Cj4gKwllbHNlCj4gKwkJcHBzX3ZhbCAmPSB+RFNDX0JM T0NLX1BSRURJQ1RJT047Cj4gKwlpZiAodmRzY19jZmctPmNvbnZlcnRfcmdiKQo+ICsJCXBwc192 YWwgfD0gRFNDX0NPTE9SX1NQQUNFX0NPTlZFUlNJT047Cj4gKwllbHNlCj4gKwkJcHBzX3ZhbCAm PSB+RFNDX0NPTE9SX1NQQUNFX0NPTlZFUlNJT047Cj4gKwlpZiAodmRzY19jZmctPmVuYWJsZTQy MikKPiArCQlwcHNfdmFsIHw9IERTQ180MjJfRU5BQkxFOwo+ICsJZWxzZQo+ICsJCXBwc192YWwg Jj0gfkRTQ180MjJfRU5BQkxFOwo+ICsJaWYgKHZkc2NfY2ZnLT52YnJfZW5hYmxlKQo+ICsJCXBw c192YWwgfD0gRFNDX1ZCUl9FTkFCTEU7Cj4gKwllbHNlCj4gKwkJcHBzX3ZhbCAmPSB+RFNDX1ZC Ul9FTkFCTEU7Cj4gKwo+ICsJRFJNX0lORk8oIlBQUzAgPSAweCUwOHhcbiIsIHBwc192YWwpOwo+ ICsJIGlmIChjcHVfdHJhbnNjb2RlciA9PSBUUkFOU0NPREVSX0VEUCkgewo+ICsJCUk5MTVfV1JJ VEUoRFNDQV9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfMCwgcHBzX3ZhbCk7Cj4gKwkJLyoKPiArCQkg KiBJZiAyIFZEU0MgaW5zdGFuY2VzIGFyZSBuZWVkZWQsIGNvbmZpZ3VyZSBQUFMgZm9yIHNlY29u ZAo+ICsJCSAqIFZEU0MKPiArCQkgKi8KPiArCQlpZiAoY3J0Y19zdGF0ZS0+ZHNjX3BhcmFtcy5k c2Nfc3BsaXQpCj4gKwkJCUk5MTVfV1JJVEUoRFNDQ19QSUNUVVJFX1BBUkFNRVRFUl9TRVRfMCwg cHBzX3ZhbCk7Cj4gKwl9IGVsc2Ugewo+ICsJCUk5MTVfV1JJVEUoSUNMX0RTQzBfUElDVFVSRV9Q QVJBTUVURVJfU0VUXzAocGlwZSksIHBwc192YWwpOwo+ICsJCWlmIChjcnRjX3N0YXRlLT5kc2Nf cGFyYW1zLmRzY19zcGxpdCkKPiArCQkJSTkxNV9XUklURShJQ0xfRFNDMV9QSUNUVVJFX1BBUkFN RVRFUl9TRVRfMChwaXBlKSwKPiArCQkJCSAgIHBwc192YWwpOwo+ICsJfQo+ICsKPiArCS8qIFBv cHVsYXRlIFBJQ1RVUkVfUEFSQU1FVEVSX1NFVF8xIHJlZ2lzdGVycyAqLwo+ICsJcHBzX3ZhbCA9 IDA7Cj4gKwlwcHNfdmFsIHw9IERTQ19CUFAodmRzY19jZmctPmJpdHNfcGVyX3BpeGVsKTsKPiAr CURSTV9JTkZPKCJQUFMxID0gMHglMDh4XG4iLCBwcHNfdmFsKTsKPiArCWlmIChjcHVfdHJhbnNj b2RlciA9PSBUUkFOU0NPREVSX0VEUCkgewo+ICsJCUk5MTVfV1JJVEUoRFNDQV9QSUNUVVJFX1BB UkFNRVRFUl9TRVRfMSwgcHBzX3ZhbCk7Cj4gKwkJLyoKPiArCQkgKiBJZiAyIFZEU0MgaW5zdGFu Y2VzIGFyZSBuZWVkZWQsIGNvbmZpZ3VyZSBQUFMgZm9yIHNlY29uZAo+ICsJCSAqIFZEU0MKPiAr CQkgKi8KPiArCQlpZiAoY3J0Y19zdGF0ZS0+ZHNjX3BhcmFtcy5kc2Nfc3BsaXQpCj4gKwkJCUk5 MTVfV1JJVEUoRFNDQ19QSUNUVVJFX1BBUkFNRVRFUl9TRVRfMSwgcHBzX3ZhbCk7Cj4gKwl9IGVs c2Ugewo+ICsJCUk5MTVfV1JJVEUoSUNMX0RTQzBfUElDVFVSRV9QQVJBTUVURVJfU0VUXzEocGlw ZSksIHBwc192YWwpOwo+ICsJCWlmIChjcnRjX3N0YXRlLT5kc2NfcGFyYW1zLmRzY19zcGxpdCkK PiArCQkJSTkxNV9XUklURShJQ0xfRFNDMV9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfMShwaXBlKSwK PiArCQkJCSAgIHBwc192YWwpOwo+ICsJfQo+ICsKPiArCS8qIFBvcHVsYXRlIFBJQ1RVUkVfUEFS QU1FVEVSX1NFVF8yIHJlZ2lzdGVycyAqLwo+ICsJcHBzX3ZhbCA9IDA7Cj4gKwlwcHNfdmFsIHw9 IERTQ19QSUNfSEVJR0hUKHZkc2NfY2ZnLT5waWNfaGVpZ2h0KSB8Cj4gKwkJRFNDX1BJQ19XSURU SCh2ZHNjX2NmZy0+cGljX3dpZHRoIC8gbnVtX3Zkc2NfaW5zdGFuY2VzKTsKPiArCURSTV9JTkZP KCJQUFMyID0gMHglMDh4XG4iLCBwcHNfdmFsKTsKPiArCWlmIChlbmNvZGVyLT50eXBlID09IElO VEVMX09VVFBVVF9FRFApIHsKPiArCQlJOTE1X1dSSVRFKERTQ0FfUElDVFVSRV9QQVJBTUVURVJf U0VUXzIsIHBwc192YWwpOwo+ICsJCS8qCj4gKwkJICogSWYgMiBWRFNDIGluc3RhbmNlcyBhcmUg bmVlZGVkLCBjb25maWd1cmUgUFBTIGZvciBzZWNvbmQKPiArCQkgKiBWRFNDCj4gKwkJICovCj4g KwkJaWYgKGNydGNfc3RhdGUtPmRzY19wYXJhbXMuZHNjX3NwbGl0KQo+ICsJCQlJOTE1X1dSSVRF KERTQ0NfUElDVFVSRV9QQVJBTUVURVJfU0VUXzIsIHBwc192YWwpOwo+ICsJfSBlbHNlIHsKPiAr CQlJOTE1X1dSSVRFKElDTF9EU0MwX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF8yKHBpcGUpLCBwcHNf dmFsKTsKPiArCQlpZiAoY3J0Y19zdGF0ZS0+ZHNjX3BhcmFtcy5kc2Nfc3BsaXQpCj4gKwkJCUk5 MTVfV1JJVEUoSUNMX0RTQzFfUElDVFVSRV9QQVJBTUVURVJfU0VUXzIocGlwZSksCj4gKwkJCQkg ICBwcHNfdmFsKTsKPiArCX0KPiArCj4gKwkvKiBQb3B1bGF0ZSBQSUNUVVJFX1BBUkFNRVRFUl9T RVRfMyByZWdpc3RlcnMgKi8KPiArCXBwc192YWwgPSAwOwo+ICsJcHBzX3ZhbCB8PSBEU0NfU0xJ Q0VfSEVJR0hUKHZkc2NfY2ZnLT5zbGljZV9oZWlnaHQpIHwKPiArCQlEU0NfU0xJQ0VfV0lEVEgo dmRzY19jZmctPnNsaWNlX3dpZHRoKTsKPiArCURSTV9JTkZPKCJQUFMzID0gMHglMDh4XG4iLCBw cHNfdmFsKTsKPiArCWlmIChjcHVfdHJhbnNjb2RlciA9PSBUUkFOU0NPREVSX0VEUCkgewo+ICsJ CUk5MTVfV1JJVEUoRFNDQV9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfMywgcHBzX3ZhbCk7Cj4gKwkJ LyoKPiArCQkgKiBJZiAyIFZEU0MgaW5zdGFuY2VzIGFyZSBuZWVkZWQsIGNvbmZpZ3VyZSBQUFMg Zm9yIHNlY29uZAo+ICsJCSAqIFZEU0MKPiArCQkgKi8KPiArCQlpZiAoY3J0Y19zdGF0ZS0+ZHNj X3BhcmFtcy5kc2Nfc3BsaXQpCj4gKwkJCUk5MTVfV1JJVEUoRFNDQ19QSUNUVVJFX1BBUkFNRVRF Ul9TRVRfMywgcHBzX3ZhbCk7Cj4gKwl9IGVsc2Ugewo+ICsJCUk5MTVfV1JJVEUoSUNMX0RTQzBf UElDVFVSRV9QQVJBTUVURVJfU0VUXzMocGlwZSksIHBwc192YWwpOwo+ICsJCWlmIChjcnRjX3N0 YXRlLT5kc2NfcGFyYW1zLmRzY19zcGxpdCkKPiArCQkJSTkxNV9XUklURShJQ0xfRFNDMV9QSUNU VVJFX1BBUkFNRVRFUl9TRVRfMyhwaXBlKSwKPiArCQkJCSAgIHBwc192YWwpOwo+ICsJfQo+ICsK PiArCS8qIFBvcHVsYXRlIFBJQ1RVUkVfUEFSQU1FVEVSX1NFVF80IHJlZ2lzdGVycyAqLwo+ICsJ cHBzX3ZhbCA9IDA7Cj4gKwlwcHNfdmFsIHw9IERTQ19JTklUSUFMX1hNSVRfREVMQVkodmRzY19j ZmctPmluaXRpYWxfeG1pdF9kZWxheSkgfAo+ICsJCURTQ19JTklUSUFMX0RFQ19ERUxBWSh2ZHNj X2NmZy0+aW5pdGlhbF9kZWNfZGVsYXkpOwo+ICsJRFJNX0lORk8oIlBQUzQgPSAweCUwOHhcbiIs IHBwc192YWwpOwo+ICsJaWYgKGNwdV90cmFuc2NvZGVyID09IFRSQU5TQ09ERVJfRURQKSB7Cj4g KwkJSTkxNV9XUklURShEU0NBX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF80LCBwcHNfdmFsKTsKPiAr CQkvKgo+ICsJCSAqIElmIDIgVkRTQyBpbnN0YW5jZXMgYXJlIG5lZWRlZCwgY29uZmlndXJlIFBQ UyBmb3Igc2Vjb25kCj4gKwkJICogVkRTQwo+ICsJCSAqLwo+ICsJCWlmIChjcnRjX3N0YXRlLT5k c2NfcGFyYW1zLmRzY19zcGxpdCkKPiArCQkJSTkxNV9XUklURShEU0NDX1BJQ1RVUkVfUEFSQU1F VEVSX1NFVF80LCBwcHNfdmFsKTsKPiArCX0gZWxzZSB7Cj4gKwkJSTkxNV9XUklURShJQ0xfRFND MF9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfNChwaXBlKSwgcHBzX3ZhbCk7Cj4gKwkJaWYgKGNydGNf c3RhdGUtPmRzY19wYXJhbXMuZHNjX3NwbGl0KQo+ICsJCQlJOTE1X1dSSVRFKElDTF9EU0MxX1BJ Q1RVUkVfUEFSQU1FVEVSX1NFVF80KHBpcGUpLAo+ICsJCQkJICAgcHBzX3ZhbCk7Cj4gKwl9Cj4g Kwo+ICsJLyogUG9wdWxhdGUgUElDVFVSRV9QQVJBTUVURVJfU0VUXzUgcmVnaXN0ZXJzICovCj4g KwlwcHNfdmFsID0gMDsKPiArCXBwc192YWwgfD0gRFNDX1NDQUxFX0lOQ19JTlQodmRzY19jZmct PnNjYWxlX2luY3JlbWVudF9pbnRlcnZhbCkgfAo+ICsJCURTQ19TQ0FMRV9ERUNfSU5UKHZkc2Nf Y2ZnLT5zY2FsZV9kZWNyZW1lbnRfaW50ZXJ2YWwpOwo+ICsJRFJNX0lORk8oIlBQUzUgPSAweCUw OHhcbiIsIHBwc192YWwpOwo+ICsJaWYgKGNwdV90cmFuc2NvZGVyID09IFRSQU5TQ09ERVJfRURQ KSB7Cj4gKwkJSTkxNV9XUklURShEU0NBX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF81LCBwcHNfdmFs KTsKPiArCQkvKgo+ICsJCSAqIElmIDIgVkRTQyBpbnN0YW5jZXMgYXJlIG5lZWRlZCwgY29uZmln dXJlIFBQUyBmb3Igc2Vjb25kCj4gKwkJICogVkRTQwo+ICsJCSAqLwo+ICsJCWlmIChjcnRjX3N0 YXRlLT5kc2NfcGFyYW1zLmRzY19zcGxpdCkKPiArCQkJSTkxNV9XUklURShEU0NDX1BJQ1RVUkVf UEFSQU1FVEVSX1NFVF81LCBwcHNfdmFsKTsKPiArCX0gZWxzZSB7Cj4gKwkJSTkxNV9XUklURShJ Q0xfRFNDMF9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfNShwaXBlKSwgcHBzX3ZhbCk7Cj4gKwkJaWYg KGNydGNfc3RhdGUtPmRzY19wYXJhbXMuZHNjX3NwbGl0KQo+ICsJCQlJOTE1X1dSSVRFKElDTF9E U0MxX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF81KHBpcGUpLAo+ICsJCQkJICAgcHBzX3ZhbCk7Cj4g Kwl9Cj4gKwo+ICsJLyogUG9wdWxhdGUgUElDVFVSRV9QQVJBTUVURVJfU0VUXzYgcmVnaXN0ZXJz ICovCj4gKwlwcHNfdmFsID0gMDsKPiArCXBwc192YWwgfD0gRFNDX0lOSVRJQUxfU0NBTEVfVkFM VUUodmRzY19jZmctPmluaXRpYWxfc2NhbGVfdmFsdWUpIHwKPiArCQlEU0NfRklSU1RfTElORV9C UEdfT0ZGU0VUKHZkc2NfY2ZnLT5maXJzdF9saW5lX2JwZ19vZmZzZXQpIHwKPiArCQlEU0NfRkxB VE5FU1NfTUlOX1FQKHZkc2NfY2ZnLT5mbGF0bmVzc19taW5fcXApIHwKPiArCQlEU0NfRkxBVE5F U1NfTUFYX1FQKHZkc2NfY2ZnLT5mbGF0bmVzc19tYXhfcXApOwo+ICsJRFJNX0lORk8oIlBQUzYg PSAweCUwOHhcbiIsIHBwc192YWwpOwo+ICsJaWYgKGNwdV90cmFuc2NvZGVyID09IFRSQU5TQ09E RVJfRURQKSB7Cj4gKwkJSTkxNV9XUklURShEU0NBX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF82LCBw cHNfdmFsKTsKPiArCQkvKgo+ICsJCSAqIElmIDIgVkRTQyBpbnN0YW5jZXMgYXJlIG5lZWRlZCwg Y29uZmlndXJlIFBQUyBmb3Igc2Vjb25kCj4gKwkJICogVkRTQwo+ICsJCSAqLwo+ICsJCWlmIChj cnRjX3N0YXRlLT5kc2NfcGFyYW1zLmRzY19zcGxpdCkKPiArCQkJSTkxNV9XUklURShEU0NDX1BJ Q1RVUkVfUEFSQU1FVEVSX1NFVF82LCBwcHNfdmFsKTsKPiArCX0gZWxzZSB7Cj4gKwkJSTkxNV9X UklURShJQ0xfRFNDMF9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfNihwaXBlKSwgcHBzX3ZhbCk7Cj4g KwkJaWYgKGNydGNfc3RhdGUtPmRzY19wYXJhbXMuZHNjX3NwbGl0KQo+ICsJCQlJOTE1X1dSSVRF KElDTF9EU0MxX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF82KHBpcGUpLAo+ICsJCQkJICAgcHBzX3Zh bCk7Cj4gKwl9Cj4gKwo+ICsJLyogUG9wdWxhdGUgUElDVFVSRV9QQVJBTUVURVJfU0VUXzcgcmVn aXN0ZXJzICovCj4gKwlwcHNfdmFsID0gMDsKPiArCXBwc192YWwgfD0gRFNDX1NMSUNFX0JQR19P RkZTRVQodmRzY19jZmctPnNsaWNlX2JwZ19vZmZzZXQpIHwKPiArCQlEU0NfTkZMX0JQR19PRkZT RVQodmRzY19jZmctPm5mbF9icGdfb2Zmc2V0KTsKPiArCURSTV9JTkZPKCJQUFM3ID0gMHglMDh4 XG4iLCBwcHNfdmFsKTsKPiArCWlmIChjcHVfdHJhbnNjb2RlciA9PSBUUkFOU0NPREVSX0VEUCkg ewo+ICsJCUk5MTVfV1JJVEUoRFNDQV9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfNywgcHBzX3ZhbCk7 Cj4gKwkJLyoKPiArCQkgKiBJZiAyIFZEU0MgaW5zdGFuY2VzIGFyZSBuZWVkZWQsIGNvbmZpZ3Vy ZSBQUFMgZm9yIHNlY29uZAo+ICsJCSAqIFZEU0MKPiArCQkgKi8KPiArCQlpZiAoY3J0Y19zdGF0 ZS0+ZHNjX3BhcmFtcy5kc2Nfc3BsaXQpCj4gKwkJCUk5MTVfV1JJVEUoRFNDQ19QSUNUVVJFX1BB UkFNRVRFUl9TRVRfNywgcHBzX3ZhbCk7Cj4gKwl9IGVsc2Ugewo+ICsJCUk5MTVfV1JJVEUoSUNM X0RTQzBfUElDVFVSRV9QQVJBTUVURVJfU0VUXzcocGlwZSksIHBwc192YWwpOwo+ICsJCWlmIChj cnRjX3N0YXRlLT5kc2NfcGFyYW1zLmRzY19zcGxpdCkKPiArCQkJSTkxNV9XUklURShJQ0xfRFND MV9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfNyhwaXBlKSwKPiArCQkJCSAgIHBwc192YWwpOwo+ICsJ fQo+ICsKPiArCS8qIFBvcHVsYXRlIFBJQ1RVUkVfUEFSQU1FVEVSX1NFVF84IHJlZ2lzdGVycyAq Lwo+ICsJcHBzX3ZhbCA9IDA7Cj4gKwlwcHNfdmFsIHw9IERTQ19GSU5BTF9PRkZTRVQodmRzY19j ZmctPmZpbmFsX29mZnNldCkgfAo+ICsJCURTQ19JTklUSUFMX09GRlNFVCh2ZHNjX2NmZy0+aW5p dGlhbF9vZmZzZXQpOwo+ICsJRFJNX0lORk8oIlBQUzggPSAweCUwOHhcbiIsIHBwc192YWwpOwo+ ICsJaWYgKGNwdV90cmFuc2NvZGVyID09IFRSQU5TQ09ERVJfRURQKSB7Cj4gKwkJSTkxNV9XUklU RShEU0NBX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF84LCBwcHNfdmFsKTsKPiArCQkvKgo+ICsJCSAq IElmIDIgVkRTQyBpbnN0YW5jZXMgYXJlIG5lZWRlZCwgY29uZmlndXJlIFBQUyBmb3Igc2Vjb25k Cj4gKwkJICogVkRTQwo+ICsJCSAqLwo+ICsJCWlmIChjcnRjX3N0YXRlLT5kc2NfcGFyYW1zLmRz Y19zcGxpdCkKPiArCQkJSTkxNV9XUklURShEU0NDX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF84LCBw cHNfdmFsKTsKPiArCX0gZWxzZSB7Cj4gKwkJSTkxNV9XUklURShJQ0xfRFNDMF9QSUNUVVJFX1BB UkFNRVRFUl9TRVRfOChwaXBlKSwgcHBzX3ZhbCk7Cj4gKwkJaWYgKGNydGNfc3RhdGUtPmRzY19w YXJhbXMuZHNjX3NwbGl0KQo+ICsJCQlJOTE1X1dSSVRFKElDTF9EU0MxX1BJQ1RVUkVfUEFSQU1F VEVSX1NFVF84KHBpcGUpLAo+ICsJCQkJICAgcHBzX3ZhbCk7Cj4gKwl9Cj4gKwo+ICsJLyogUG9w dWxhdGUgUElDVFVSRV9QQVJBTUVURVJfU0VUXzkgcmVnaXN0ZXJzICovCj4gKwlwcHNfdmFsID0g MDsKPiArCXBwc192YWwgfD0gRFNDX1JDX01PREVMX1NJWkUoRFNDX1JDX01PREVMX1NJWkVfQ09O U1QpIHwKPiArCQlEU0NfUkNfRURHRV9GQUNUT1IoRFNDX1JDX0VER0VfRkFDVE9SX0NPTlNUKTsK PiArCURSTV9JTkZPKCJQUFM5ID0gMHglMDh4XG4iLCBwcHNfdmFsKTsKPiArCWlmIChjcHVfdHJh bnNjb2RlciA9PSBUUkFOU0NPREVSX0VEUCkgewo+ICsJCUk5MTVfV1JJVEUoRFNDQV9QSUNUVVJF X1BBUkFNRVRFUl9TRVRfOSwgcHBzX3ZhbCk7Cj4gKwkJLyoKPiArCQkgKiBJZiAyIFZEU0MgaW5z dGFuY2VzIGFyZSBuZWVkZWQsIGNvbmZpZ3VyZSBQUFMgZm9yIHNlY29uZAo+ICsJCSAqIFZEU0MK PiArCQkgKi8KPiArCQlpZiAoY3J0Y19zdGF0ZS0+ZHNjX3BhcmFtcy5kc2Nfc3BsaXQpCj4gKwkJ CUk5MTVfV1JJVEUoRFNDQ19QSUNUVVJFX1BBUkFNRVRFUl9TRVRfOSwgcHBzX3ZhbCk7Cj4gKwl9 IGVsc2Ugewo+ICsJCUk5MTVfV1JJVEUoSUNMX0RTQzBfUElDVFVSRV9QQVJBTUVURVJfU0VUXzko cGlwZSksIHBwc192YWwpOwo+ICsJCWlmIChjcnRjX3N0YXRlLT5kc2NfcGFyYW1zLmRzY19zcGxp dCkKPiArCQkJSTkxNV9XUklURShJQ0xfRFNDMV9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfOShwaXBl KSwKPiArCQkJCSAgIHBwc192YWwpOwo+ICsJfQo+ICsKPiArCS8qIFBvcHVsYXRlIFBJQ1RVUkVf UEFSQU1FVEVSX1NFVF8xMCByZWdpc3RlcnMgKi8KPiArCXBwc192YWwgPSAwOwo+ICsJcHBzX3Zh bCB8PSBEU0NfUkNfUVVBTlRfSU5DX0xJTUlUMCh2ZHNjX2NmZy0+cmNfcXVhbnRfaW5jcl9saW1p dDApIHwKPiArCQlEU0NfUkNfUVVBTlRfSU5DX0xJTUlUMSh2ZHNjX2NmZy0+cmNfcXVhbnRfaW5j cl9saW1pdDEpIHwKPiArCQlEU0NfUkNfVEFSR0VUX09GRl9ISUdIKERTQ19SQ19UR1RfT0ZGU0VU X0hJX0NPTlNUKSB8Cj4gKwkJRFNDX1JDX1RBUkdFVF9PRkZfTE9XKERTQ19SQ19UR1RfT0ZGU0VU X0xPX0NPTlNUKTsKPiArCURSTV9JTkZPKCJQUFMxMCA9IDB4JTA4eFxuIiwgcHBzX3ZhbCk7Cj4g KwlpZiAoY3B1X3RyYW5zY29kZXIgPT0gVFJBTlNDT0RFUl9FRFApIHsKPiArCQlJOTE1X1dSSVRF KERTQ0FfUElDVFVSRV9QQVJBTUVURVJfU0VUXzEwLCBwcHNfdmFsKTsKPiArCQkvKgo+ICsJCSAq IElmIDIgVkRTQyBpbnN0YW5jZXMgYXJlIG5lZWRlZCwgY29uZmlndXJlIFBQUyBmb3Igc2Vjb25k Cj4gKwkJICogVkRTQwo+ICsJCSAqLwo+ICsJCWlmIChjcnRjX3N0YXRlLT5kc2NfcGFyYW1zLmRz Y19zcGxpdCkKPiArCQkJSTkxNV9XUklURShEU0NDX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF8xMCwg cHBzX3ZhbCk7Cj4gKwl9IGVsc2Ugewo+ICsJCUk5MTVfV1JJVEUoSUNMX0RTQzBfUElDVFVSRV9Q QVJBTUVURVJfU0VUXzEwKHBpcGUpLCBwcHNfdmFsKTsKPiArCQlpZiAoY3J0Y19zdGF0ZS0+ZHNj X3BhcmFtcy5kc2Nfc3BsaXQpCj4gKwkJCUk5MTVfV1JJVEUoSUNMX0RTQzFfUElDVFVSRV9QQVJB TUVURVJfU0VUXzEwKHBpcGUpLAo+ICsJCQkJICAgcHBzX3ZhbCk7Cj4gKwl9Cj4gKwo+ICsJLyog UG9wdWxhdGUgUGljdHVyZSBwYXJhbWV0ZXIgc2V0IDE2ICovCj4gKwlwcHNfdmFsID0gMDsKPiAr CXBwc192YWwgfD0gRFNDX1NMSUNFX0NIVU5LX1NJWkUodmRzY19jZmctPnNsaWNlX2NodW5rX3Np emUpIHwKPiArCQlEU0NfU0xJQ0VfUEVSX0xJTkUoKHZkc2NfY2ZnLT5waWNfd2lkdGggLyBudW1f dmRzY19pbnN0YW5jZXMpIC8KPiArCQkJCSAgIHZkc2NfY2ZnLT5zbGljZV93aWR0aCkgfAo+ICsJ CURTQ19TTElDRV9ST1dfUEVSX0ZSQU1FKHZkc2NfY2ZnLT5waWNfaGVpZ2h0IC8KPiArCQkJCQl2 ZHNjX2NmZy0+c2xpY2VfaGVpZ2h0KTsKPiArCURSTV9JTkZPKCJQUFMxNiA9IDB4JTA4eFxuIiwg cHBzX3ZhbCk7Cj4gKwlpZiAoY3B1X3RyYW5zY29kZXIgPT0gVFJBTlNDT0RFUl9FRFApIHsKPiAr CQlJOTE1X1dSSVRFKERTQ0FfUElDVFVSRV9QQVJBTUVURVJfU0VUXzE2LCBwcHNfdmFsKTsKPiAr CQkvKgo+ICsJCSAqIElmIDIgVkRTQyBpbnN0YW5jZXMgYXJlIG5lZWRlZCwgY29uZmlndXJlIFBQ UyBmb3Igc2Vjb25kCj4gKwkJICogVkRTQwo+ICsJCSAqLwo+ICsJCWlmIChjcnRjX3N0YXRlLT5k c2NfcGFyYW1zLmRzY19zcGxpdCkKPiArCQkJSTkxNV9XUklURShEU0NDX1BJQ1RVUkVfUEFSQU1F VEVSX1NFVF8xNiwgcHBzX3ZhbCk7Cj4gKwl9IGVsc2Ugewo+ICsJCUk5MTVfV1JJVEUoSUNMX0RT QzBfUElDVFVSRV9QQVJBTUVURVJfU0VUXzE2KHBpcGUpLCBwcHNfdmFsKTsKPiArCQlpZiAoY3J0 Y19zdGF0ZS0+ZHNjX3BhcmFtcy5kc2Nfc3BsaXQpCj4gKwkJCUk5MTVfV1JJVEUoSUNMX0RTQzFf UElDVFVSRV9QQVJBTUVURVJfU0VUXzE2KHBpcGUpLAo+ICsJCQkJICAgcHBzX3ZhbCk7Cj4gKwl9 Cj4gKwo+ICsJLyogUG9wdWxhdGUgdGhlIFJDX0JVRl9USFJFU0ggcmVnaXN0ZXJzICovCj4gKwlt ZW1zZXQocmNfYnVmX3RocmVzaF9kd29yZCwgMCwgc2l6ZW9mKHJjX2J1Zl90aHJlc2hfZHdvcmQp KTsKPiArCWZvciAoaSA9IDA7IGkgPCBEU0NfTlVNX0JVRl9SQU5HRVMgLSAxOyBpKyspIHsKPiAr CQlyY19idWZfdGhyZXNoX2R3b3JkW2kvNF0gfD0gKHUzMikodmRzY19jZmctPnJjX2J1Zl90aHJl c2hbaV0gPDwKPiArCQkJCQkJICBCSVRTX1BFUl9CWVRFICogKGkgJSA0KSk7Cj4gKwkJRFJNX0lO Rk8oIiBSQ19CVUZfVEhSRVNIJWQgPSAweCUwOHhcbiIsIGksCj4gKwkJCSByY19idWZfdGhyZXNo X2R3b3JkW2kvNF0pOwo+ICsJfQo+ICsJaWYgKGNwdV90cmFuc2NvZGVyID09IFRSQU5TQ09ERVJf RURQKSB7Cj4gKwkJSTkxNV9XUklURShEU0NBX1JDX0JVRl9USFJFU0hfMCwgcmNfYnVmX3RocmVz aF9kd29yZFswXSk7Cj4gKwkJSTkxNV9XUklURShEU0NBX1JDX0JVRl9USFJFU0hfMF9VRFcsIHJj X2J1Zl90aHJlc2hfZHdvcmRbMV0pOwo+ICsJCUk5MTVfV1JJVEUoRFNDQV9SQ19CVUZfVEhSRVNI XzEsIHJjX2J1Zl90aHJlc2hfZHdvcmRbMl0pOwo+ICsJCUk5MTVfV1JJVEUoRFNDQV9SQ19CVUZf VEhSRVNIXzFfVURXLCByY19idWZfdGhyZXNoX2R3b3JkWzNdKTsKPiArCQlpZiAoY3J0Y19zdGF0 ZS0+ZHNjX3BhcmFtcy5kc2Nfc3BsaXQpIHsKPiArCQkJSTkxNV9XUklURShEU0NDX1JDX0JVRl9U SFJFU0hfMCwKPiArCQkJCSAgIHJjX2J1Zl90aHJlc2hfZHdvcmRbMF0pOwo+ICsJCQlJOTE1X1dS SVRFKERTQ0NfUkNfQlVGX1RIUkVTSF8wX1VEVywKPiArCQkJCSAgIHJjX2J1Zl90aHJlc2hfZHdv cmRbMV0pOwo+ICsJCQlJOTE1X1dSSVRFKERTQ0NfUkNfQlVGX1RIUkVTSF8xLAo+ICsJCQkJICAg cmNfYnVmX3RocmVzaF9kd29yZFsyXSk7Cj4gKwkJCUk5MTVfV1JJVEUoRFNDQ19SQ19CVUZfVEhS RVNIXzFfVURXLAo+ICsJCQkJICAgcmNfYnVmX3RocmVzaF9kd29yZFszXSk7Cj4gKwkJfQo+ICsJ fSBlbHNlIHsKPiArCQlJOTE1X1dSSVRFKElDTF9EU0MwX1JDX0JVRl9USFJFU0hfMChwaXBlKSwK PiArCQkJICAgcmNfYnVmX3RocmVzaF9kd29yZFswXSk7Cj4gKwkJSTkxNV9XUklURShJQ0xfRFND MF9SQ19CVUZfVEhSRVNIXzBfVURXKHBpcGUpLAo+ICsJCQkgICByY19idWZfdGhyZXNoX2R3b3Jk WzFdKTsKPiArCQlJOTE1X1dSSVRFKElDTF9EU0MwX1JDX0JVRl9USFJFU0hfMShwaXBlKSwKPiAr CQkJICAgcmNfYnVmX3RocmVzaF9kd29yZFsyXSk7Cj4gKwkJSTkxNV9XUklURShJQ0xfRFNDMF9S Q19CVUZfVEhSRVNIXzFfVURXKHBpcGUpLAo+ICsJCQkgICByY19idWZfdGhyZXNoX2R3b3JkWzNd KTsKPiArCQlpZiAoY3J0Y19zdGF0ZS0+ZHNjX3BhcmFtcy5kc2Nfc3BsaXQpIHsKPiArCQkJSTkx NV9XUklURShJQ0xfRFNDMV9SQ19CVUZfVEhSRVNIXzAocGlwZSksCj4gKwkJCQkgICByY19idWZf dGhyZXNoX2R3b3JkWzBdKTsKPiArCQkJSTkxNV9XUklURShJQ0xfRFNDMV9SQ19CVUZfVEhSRVNI XzBfVURXKHBpcGUpLAo+ICsJCQkJICAgcmNfYnVmX3RocmVzaF9kd29yZFsxXSk7Cj4gKwkJCUk5 MTVfV1JJVEUoSUNMX0RTQzFfUkNfQlVGX1RIUkVTSF8xKHBpcGUpLAo+ICsJCQkJICAgcmNfYnVm X3RocmVzaF9kd29yZFsyXSk7Cj4gKwkJCUk5MTVfV1JJVEUoSUNMX0RTQzFfUkNfQlVGX1RIUkVT SF8xX1VEVyhwaXBlKSwKPiArCQkJCSAgIHJjX2J1Zl90aHJlc2hfZHdvcmRbM10pOwo+ICsJCX0K PiArCX0KPiArCj4gKwkvKiBQb3B1bGF0ZSB0aGUgUkNfUkFOR0VfUEFSQU1FVEVSUyByZWdpc3Rl cnMgKi8KPiArCW1lbXNldChyY19yYW5nZV9wYXJhbXNfZHdvcmQsIDAsIHNpemVvZihyY19yYW5n ZV9wYXJhbXNfZHdvcmQpKTsKPiArCWZvciAoaSA9IDA7IGkgPCBEU0NfTlVNX0JVRl9SQU5HRVM7 IGkrKykgewo+ICsJCXJjX3JhbmdlX3BhcmFtc19kd29yZFtpLzJdIHw9ICh1MzIpKCgodmRzY19j ZmctPnJjX3JhbmdlX3BhcmFtc1tpXS5yYW5nZV9icGdfb2Zmc2V0IDw8Cj4gKwkJCQkJCSAgICAg IFJDX0JQR19PRkZTRVRfU0hJRlQpIHwKPiArCQkJCQkJICAgICAodmRzY19jZmctPnJjX3Jhbmdl X3BhcmFtc1tpXS5yYW5nZV9tYXhfcXAgPDwKPiArCQkJCQkJICAgICAgUkNfTUFYX1FQX1NISUZU KSB8Cj4gKwkJCQkJCSAgICAgKHZkc2NfY2ZnLT5yY19yYW5nZV9wYXJhbXNbaV0ucmFuZ2VfbWlu X3FwIDw8Cj4gKwkJCQkJCSAgICAgIFJDX01JTl9RUF9TSElGVCkpIDw8IDE2ICogKGkgJSAyKSk7 Cj4gKwkJRFJNX0lORk8oIiBSQ19SQU5HRV9QQVJBTV8lZCA9IDB4JTA4eFxuIiwgaSwKPiArCQkJ IHJjX3JhbmdlX3BhcmFtc19kd29yZFtpLzJdKTsKPiArCX0KPiArCWlmIChjcHVfdHJhbnNjb2Rl ciA9PSBUUkFOU0NPREVSX0VEUCkgewo+ICsJCUk5MTVfV1JJVEUoRFNDQV9SQ19SQU5HRV9QQVJB TUVURVJTXzAsCj4gKwkJCSAgIHJjX3JhbmdlX3BhcmFtc19kd29yZFswXSk7Cj4gKwkJSTkxNV9X UklURShEU0NBX1JDX1JBTkdFX1BBUkFNRVRFUlNfMF9VRFcsCj4gKwkJCSAgIHJjX3JhbmdlX3Bh cmFtc19kd29yZFsxXSk7Cj4gKwkJSTkxNV9XUklURShEU0NBX1JDX1JBTkdFX1BBUkFNRVRFUlNf MSwKPiArCQkJICAgcmNfcmFuZ2VfcGFyYW1zX2R3b3JkWzJdKTsKPiArCQlJOTE1X1dSSVRFKERT Q0FfUkNfUkFOR0VfUEFSQU1FVEVSU18xX1VEVywKPiArCQkJICAgcmNfcmFuZ2VfcGFyYW1zX2R3 b3JkWzNdKTsKPiArCQlJOTE1X1dSSVRFKERTQ0FfUkNfUkFOR0VfUEFSQU1FVEVSU18yLAo+ICsJ CQkgICByY19yYW5nZV9wYXJhbXNfZHdvcmRbNF0pOwo+ICsJCUk5MTVfV1JJVEUoRFNDQV9SQ19S QU5HRV9QQVJBTUVURVJTXzJfVURXLAo+ICsJCQkgICByY19yYW5nZV9wYXJhbXNfZHdvcmRbNV0p Owo+ICsJCUk5MTVfV1JJVEUoRFNDQV9SQ19SQU5HRV9QQVJBTUVURVJTXzMsCj4gKwkJCSAgIHJj X3JhbmdlX3BhcmFtc19kd29yZFs2XSk7Cj4gKwkJSTkxNV9XUklURShEU0NBX1JDX1JBTkdFX1BB UkFNRVRFUlNfM19VRFcsCj4gKwkJCSAgIHJjX3JhbmdlX3BhcmFtc19kd29yZFs3XSk7Cj4gKwkJ aWYgKGNydGNfc3RhdGUtPmRzY19wYXJhbXMuZHNjX3NwbGl0KSB7Cj4gKwkJCUk5MTVfV1JJVEUo RFNDQ19SQ19SQU5HRV9QQVJBTUVURVJTXzAsCj4gKwkJCQkgICByY19yYW5nZV9wYXJhbXNfZHdv cmRbMF0pOwo+ICsJCQlJOTE1X1dSSVRFKERTQ0NfUkNfUkFOR0VfUEFSQU1FVEVSU18wX1VEVywK PiArCQkJCSAgIHJjX3JhbmdlX3BhcmFtc19kd29yZFsxXSk7Cj4gKwkJCUk5MTVfV1JJVEUoRFND Q19SQ19SQU5HRV9QQVJBTUVURVJTXzEsCj4gKwkJCQkgICByY19yYW5nZV9wYXJhbXNfZHdvcmRb Ml0pOwo+ICsJCQlJOTE1X1dSSVRFKERTQ0NfUkNfUkFOR0VfUEFSQU1FVEVSU18xX1VEVywKPiAr CQkJCSAgIHJjX3JhbmdlX3BhcmFtc19kd29yZFszXSk7Cj4gKwkJCUk5MTVfV1JJVEUoRFNDQ19S Q19SQU5HRV9QQVJBTUVURVJTXzIsCj4gKwkJCQkgICByY19yYW5nZV9wYXJhbXNfZHdvcmRbNF0p Owo+ICsJCQlJOTE1X1dSSVRFKERTQ0NfUkNfUkFOR0VfUEFSQU1FVEVSU18yX1VEVywKPiArCQkJ CSAgIHJjX3JhbmdlX3BhcmFtc19kd29yZFs1XSk7Cj4gKwkJCUk5MTVfV1JJVEUoRFNDQ19SQ19S QU5HRV9QQVJBTUVURVJTXzMsCj4gKwkJCQkgICByY19yYW5nZV9wYXJhbXNfZHdvcmRbNl0pOwo+ ICsJCQlJOTE1X1dSSVRFKERTQ0NfUkNfUkFOR0VfUEFSQU1FVEVSU18zX1VEVywKPiArCQkJCSAg IHJjX3JhbmdlX3BhcmFtc19kd29yZFs3XSk7Cj4gKwkJfQo+ICsJfSBlbHNlIHsKPiArCQlJOTE1 X1dSSVRFKElDTF9EU0MwX1JDX1JBTkdFX1BBUkFNRVRFUlNfMChwaXBlKSwKPiArCQkJICAgcmNf cmFuZ2VfcGFyYW1zX2R3b3JkWzBdKTsKPiArCQlJOTE1X1dSSVRFKElDTF9EU0MwX1JDX1JBTkdF X1BBUkFNRVRFUlNfMF9VRFcocGlwZSksCj4gKwkJCSAgIHJjX3JhbmdlX3BhcmFtc19kd29yZFsx XSk7Cj4gKwkJSTkxNV9XUklURShJQ0xfRFNDMF9SQ19SQU5HRV9QQVJBTUVURVJTXzEocGlwZSks Cj4gKwkJCSAgIHJjX3JhbmdlX3BhcmFtc19kd29yZFsyXSk7Cj4gKwkJSTkxNV9XUklURShJQ0xf RFNDMF9SQ19SQU5HRV9QQVJBTUVURVJTXzFfVURXKHBpcGUpLAo+ICsJCQkgICByY19yYW5nZV9w YXJhbXNfZHdvcmRbM10pOwo+ICsJCUk5MTVfV1JJVEUoSUNMX0RTQzBfUkNfUkFOR0VfUEFSQU1F VEVSU18yKHBpcGUpLAo+ICsJCQkgICByY19yYW5nZV9wYXJhbXNfZHdvcmRbNF0pOwo+ICsJCUk5 MTVfV1JJVEUoSUNMX0RTQzBfUkNfUkFOR0VfUEFSQU1FVEVSU18yX1VEVyhwaXBlKSwKPiArCQkJ ICAgcmNfcmFuZ2VfcGFyYW1zX2R3b3JkWzVdKTsKPiArCQlJOTE1X1dSSVRFKElDTF9EU0MwX1JD X1JBTkdFX1BBUkFNRVRFUlNfMyhwaXBlKSwKPiArCQkJICAgcmNfcmFuZ2VfcGFyYW1zX2R3b3Jk WzZdKTsKPiArCQlJOTE1X1dSSVRFKElDTF9EU0MwX1JDX1JBTkdFX1BBUkFNRVRFUlNfM19VRFco cGlwZSksCj4gKwkJCSAgIHJjX3JhbmdlX3BhcmFtc19kd29yZFs3XSk7Cj4gKwkJaWYgKGNydGNf c3RhdGUtPmRzY19wYXJhbXMuZHNjX3NwbGl0KSB7Cj4gKwkJCUk5MTVfV1JJVEUoSUNMX0RTQzFf UkNfUkFOR0VfUEFSQU1FVEVSU18wKHBpcGUpLAo+ICsJCQkJICAgcmNfcmFuZ2VfcGFyYW1zX2R3 b3JkWzBdKTsKPiArCQkJSTkxNV9XUklURShJQ0xfRFNDMV9SQ19SQU5HRV9QQVJBTUVURVJTXzBf VURXKHBpcGUpLAo+ICsJCQkJICAgcmNfcmFuZ2VfcGFyYW1zX2R3b3JkWzFdKTsKPiArCQkJSTkx NV9XUklURShJQ0xfRFNDMV9SQ19SQU5HRV9QQVJBTUVURVJTXzEocGlwZSksCj4gKwkJCQkgICBy Y19yYW5nZV9wYXJhbXNfZHdvcmRbMl0pOwo+ICsJCQlJOTE1X1dSSVRFKElDTF9EU0MxX1JDX1JB TkdFX1BBUkFNRVRFUlNfMV9VRFcocGlwZSksCj4gKwkJCQkgICByY19yYW5nZV9wYXJhbXNfZHdv cmRbM10pOwo+ICsJCQlJOTE1X1dSSVRFKElDTF9EU0MxX1JDX1JBTkdFX1BBUkFNRVRFUlNfMihw aXBlKSwKPiArCQkJCSAgIHJjX3JhbmdlX3BhcmFtc19kd29yZFs0XSk7Cj4gKwkJCUk5MTVfV1JJ VEUoSUNMX0RTQzFfUkNfUkFOR0VfUEFSQU1FVEVSU18yX1VEVyhwaXBlKSwKPiArCQkJCSAgIHJj X3JhbmdlX3BhcmFtc19kd29yZFs1XSk7Cj4gKwkJCUk5MTVfV1JJVEUoSUNMX0RTQzFfUkNfUkFO R0VfUEFSQU1FVEVSU18zKHBpcGUpLAo+ICsJCQkJICAgcmNfcmFuZ2VfcGFyYW1zX2R3b3JkWzZd KTsKPiArCQkJSTkxNV9XUklURShJQ0xfRFNDMV9SQ19SQU5HRV9QQVJBTUVURVJTXzNfVURXKHBp cGUpLAo+ICsJCQkJICAgcmNfcmFuZ2VfcGFyYW1zX2R3b3JkWzddKTsKPiArCQl9Cj4gKwl9Cj4g K30KPiArCj4gK3ZvaWQgaW50ZWxfZHNjX2VuYWJsZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5j b2RlciwKPiArCQkgICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0 ZSkKPiArewo+ICsKPiArCWlmICghY3J0Y19zdGF0ZS0+ZHNjX3BhcmFtcy5jb21wcmVzc2lvbl9l bmFibGUpCj4gKwkJcmV0dXJuOwo+ICsKPiArCWludGVsX2NvbmZpZ3VyZV9wcHNfZm9yX2RzY19l bmNvZGVyKGVuY29kZXIsIGNydGNfc3RhdGUpOwo+ICsKPiArCXJldHVybjsKPiArfQo+IC0tIAo+ IDIuMTguMAoKLS0gClZpbGxlIFN5cmrDpGzDpApJbnRlbApfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdm eEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9pbnRlbC1nZngK