From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 3/4] drm/i915: Add format modifiers for Intel Date: Thu, 29 Jun 2017 22:59:17 +0300 Message-ID: <20170629195917.GH12629@intel.com> References: <20170623164544.7362-1-ben@bwidawsk.net> <20170623164544.7362-4-ben@bwidawsk.net> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20170623164544.7362-4-ben@bwidawsk.net> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Ben Widawsky Cc: Intel GFX , "Kristian H . Kristensen" , Daniel Stone , DRI Development List-Id: dri-devel@lists.freedesktop.org T24gRnJpLCBKdW4gMjMsIDIwMTcgYXQgMDk6NDU6NDNBTSAtMDcwMCwgQmVuIFdpZGF3c2t5IHdy b3RlOgo+IFRoaXMgd2FzIGJhc2VkIG9uIGEgcGF0Y2ggb3JpZ2luYWxseSBieSBLcmlzdGlhbi4g SXQgaGFzIGJlZW4gbW9kaWZpZWQKPiBwcmV0dHkgaGVhdmlseSB0byB1c2UgdGhlIG5ldyBjYWxs YmFja3MgZnJvbSB0aGUgcHJldmlvdXMgcGF0Y2guCj4gCj4gdjI6Cj4gICAtIEFkZCBMSU5FQVIg YW5kIFlmIG1vZGlmaWVycyB0byBsaXN0IChWaWxsZSkKPiAgIC0gQ29tYmluZSBpOHh4IGFuZCBp OTY1IGludG8gb25lIGxpc3Qgb2YgZm9ybWF0cyAoVmlsbGUpCj4gICAtIEFsbG93IDEwMTAxMDIg Zm9ybWF0cyBmb3IgWS9ZZiB0aWxlZCAoVmlsbGUpCj4gCj4gdjM6Cj4gICAtIEhhbmRsZSBjdXJz b3IgZm9ybWF0cyAoVmlsbGUpCj4gICAtIFB1dCBoYW5kbGluZyBmb3IgTElORUFSIGluIHRoZSBt b2Rfc3VwcG9ydCBmdW5jdGlvbnMgKFZpbGxlKQo+IAo+IHY0Ogo+ICAgLSBMaXN0IGVhY2ggbW9k aWZpZXIgZXhwbGljaXRseSBpbiBzdXBwb3J0ZWQgbW9kaWZpZXJzIChWaWxsZSkKPiAgIC0gSGFu ZGxlIHRoZSBDVVJTT1IgcGxhbmUgKFZpbGxlKQo+IAo+IHY1Ogo+ICAgLSBTcGxpdCBvdXQgY3Vy c29yIGFuZCBzcHJpdGUgaGFuZGxpbmcgKFZpbGxlKQo+IAo+IHY2Ogo+ICAgLSBBY3R1YWxseSB1 c2UgdGhlIHNwcml0ZSBmdW5jcyAoRW1pbCkKPiAgIC0gVXNlIHVucmVhY2hhYmxlIChFbWlsKQo+ IAo+IHY3Ogo+ICAgLSBPbmx5IGFsbG93IEludGVsIG1vZGlmaWVycyBhbmQgTElORUFSIChCZW4p Cj4gCj4gdjgKPiAgIC0gRml4IHNwaXRlIGFzc2VydCBpbnRyb2R1Y2VkIGluIHY2IChEYW5pZWwp Cj4gCj4gQ2M6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+ Cj4gQ2M6IEtyaXN0aWFuIEguIEtyaXN0ZW5zZW4gPGhvZWdzYmVyZ0BnbWFpbC5jb20+Cj4gQ2M6 IEVtaWwgVmVsaWtvdiA8ZW1pbC5sLnZlbGlrb3ZAZ21haWwuY29tPgo+IFNpZ25lZC1vZmYtYnk6 IEJlbiBXaWRhd3NreSA8YmVuQGJ3aWRhd3NrLm5ldD4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZGlzcGxheS5jIHwgMTM2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKy0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jICB8ICA4MiArKysr KysrKysrKysrKysrKysrKy0KPiAgMiBmaWxlcyBjaGFuZ2VkLCAyMTEgaW5zZXJ0aW9ucygrKSwg NyBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gaW5k ZXggN2Q1NWM1ZTNkZjI4Li44NzdhNTE1MTRjNjEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZGlzcGxheS5jCj4gQEAgLTcyLDYgKzcyLDEyIEBAIHN0YXRpYyBjb25zdCB1aW50MzJfdCBp OTY1X3ByaW1hcnlfZm9ybWF0c1tdID0gewo+ICAJRFJNX0ZPUk1BVF9YQkdSMjEwMTAxMCwKPiAg fTsKPiAgCj4gK3N0YXRpYyBjb25zdCB1aW50NjRfdCBpOXh4X2Zvcm1hdF9tb2RpZmllcnNbXSA9 IHsKPiArCUk5MTVfRk9STUFUX01PRF9YX1RJTEVELAo+ICsJRFJNX0ZPUk1BVF9NT0RfTElORUFS LAo+ICsJRFJNX0ZPUk1BVF9NT0RfSU5WQUxJRAo+ICt9Owo+ICsKPiAgc3RhdGljIGNvbnN0IHVp bnQzMl90IHNrbF9wcmltYXJ5X2Zvcm1hdHNbXSA9IHsKPiAgCURSTV9GT1JNQVRfQzgsCj4gIAlE Uk1fRk9STUFUX1JHQjU2NSwKPiBAQCAtODcsMTEgKzkzLDI0IEBAIHN0YXRpYyBjb25zdCB1aW50 MzJfdCBza2xfcHJpbWFyeV9mb3JtYXRzW10gPSB7Cj4gIAlEUk1fRk9STUFUX1ZZVVksCj4gIH07 Cj4gIAo+ICtzdGF0aWMgY29uc3QgdWludDY0X3Qgc2tsX2Zvcm1hdF9tb2RpZmllcnNbXSA9IHsK PiArCUk5MTVfRk9STUFUX01PRF9ZZl9USUxFRCwKPiArCUk5MTVfRk9STUFUX01PRF9ZX1RJTEVE LAo+ICsJSTkxNV9GT1JNQVRfTU9EX1hfVElMRUQsCj4gKwlEUk1fRk9STUFUX01PRF9MSU5FQVIs Cj4gKwlEUk1fRk9STUFUX01PRF9JTlZBTElECj4gK307Cj4gKwo+ICAvKiBDdXJzb3IgZm9ybWF0 cyAqLwo+ICBzdGF0aWMgY29uc3QgdWludDMyX3QgaW50ZWxfY3Vyc29yX2Zvcm1hdHNbXSA9IHsK PiAgCURSTV9GT1JNQVRfQVJHQjg4ODgsCj4gIH07Cj4gIAo+ICtzdGF0aWMgY29uc3QgdWludDY0 X3QgY3Vyc29yX2Zvcm1hdF9tb2RpZmllcnNbXSA9IHsKPiArCURSTV9GT1JNQVRfTU9EX0xJTkVB UiwKPiArCURSTV9GT1JNQVRfTU9EX0lOVkFMSUQKPiArfTsKPiArCj4gIHN0YXRpYyB2b2lkIGk5 eHhfY3J0Y19jbG9ja19nZXQoc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gIAkJCQlzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcpOwo+ICBzdGF0aWMgdm9pZCBpcm9ubGFrZV9w Y2hfY2xvY2tfZ2V0KHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+IEBAIC0xMzgxMCw2ICsxMzgy OSwxMDggQEAgdm9pZCBpbnRlbF9wbGFuZV9kZXN0cm95KHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5l KQo+ICAJa2ZyZWUodG9faW50ZWxfcGxhbmUocGxhbmUpKTsKPiAgfQo+ICAKPiArc3RhdGljIGJv b2wgaTh4eF9tb2Rfc3VwcG9ydGVkKHVpbnQzMl90IGZvcm1hdCwgdWludDY0X3QgbW9kaWZpZXIp Cj4gK3sKPiArCXN3aXRjaCAoZm9ybWF0KSB7Cj4gKwljYXNlIERSTV9GT1JNQVRfQzg6Cj4gKwlj YXNlIERSTV9GT1JNQVRfUkdCNTY1Ogo+ICsJY2FzZSBEUk1fRk9STUFUX1hSR0IxNTU1Ogo+ICsJ Y2FzZSBEUk1fRk9STUFUX1hSR0I4ODg4Ogo+ICsJCXJldHVybiBtb2RpZmllciA9PSBEUk1fRk9S TUFUX01PRF9MSU5FQVIgfHwKPiArCQkJbW9kaWZpZXIgPT0gSTkxNV9GT1JNQVRfTU9EX1hfVElM RUQ7Cj4gKwlkZWZhdWx0Ogo+ICsJCXJldHVybiBmYWxzZTsKPiArCX0KPiArfQo+ICsKPiArc3Rh dGljIGJvb2wgaTk2NV9tb2Rfc3VwcG9ydGVkKHVpbnQzMl90IGZvcm1hdCwgdWludDY0X3QgbW9k aWZpZXIpCj4gK3sKPiArCXN3aXRjaCAoZm9ybWF0KSB7Cj4gKwljYXNlIERSTV9GT1JNQVRfQzg6 Cj4gKwljYXNlIERSTV9GT1JNQVRfUkdCNTY1Ogo+ICsJY2FzZSBEUk1fRk9STUFUX1hSR0I4ODg4 Ogo+ICsJY2FzZSBEUk1fRk9STUFUX1hCR1I4ODg4Ogo+ICsJY2FzZSBEUk1fRk9STUFUX1hSR0Iy MTAxMDEwOgo+ICsJY2FzZSBEUk1fRk9STUFUX1hCR1IyMTAxMDEwOgo+ICsJCXJldHVybiBtb2Rp ZmllciA9PSBEUk1fRk9STUFUX01PRF9MSU5FQVIgfHwKPiArCQkJbW9kaWZpZXIgPT0gSTkxNV9G T1JNQVRfTU9EX1hfVElMRUQ7Cj4gKwlkZWZhdWx0Ogo+ICsJCXJldHVybiBmYWxzZTsKPiArCX0K PiArfQo+ICsKPiArc3RhdGljIGJvb2wgc2tsX21vZF9zdXBwb3J0ZWQodWludDMyX3QgZm9ybWF0 LCB1aW50NjRfdCBtb2RpZmllcikKPiArewo+ICsJc3dpdGNoIChmb3JtYXQpIHsKPiArCWNhc2Ug RFJNX0ZPUk1BVF9DODoKPiArCQlzd2l0Y2ggKG1vZGlmaWVyKSB7Cj4gKwkJY2FzZSBEUk1fRk9S TUFUX01PRF9MSU5FQVI6Cj4gKwkJY2FzZSBJOTE1X0ZPUk1BVF9NT0RfWF9USUxFRDoKPiArCQlj YXNlIEk5MTVfRk9STUFUX01PRF9ZX1RJTEVEOgo+ICsJCQlyZXR1cm4gdHJ1ZTsKPiArCQlkZWZh dWx0Ogo+ICsJCQlyZXR1cm4gZmFsc2U7Cj4gKwkJfQo+ICsJY2FzZSBEUk1fRk9STUFUX1JHQjU2 NToKPiArCWNhc2UgRFJNX0ZPUk1BVF9YUkdCODg4ODoKPiArCWNhc2UgRFJNX0ZPUk1BVF9YQkdS ODg4ODoKPiArCWNhc2UgRFJNX0ZPUk1BVF9BUkdCODg4ODoKPiArCWNhc2UgRFJNX0ZPUk1BVF9B QkdSODg4ODoKPiArCWNhc2UgRFJNX0ZPUk1BVF9YUkdCMjEwMTAxMDoKPiArCWNhc2UgRFJNX0ZP Uk1BVF9YQkdSMjEwMTAxMDoKPiArCWNhc2UgRFJNX0ZPUk1BVF9ZVVlWOgo+ICsJY2FzZSBEUk1f Rk9STUFUX1lWWVU6Cj4gKwljYXNlIERSTV9GT1JNQVRfVVlWWToKPiArCWNhc2UgRFJNX0ZPUk1B VF9WWVVZOgo+ICsJCS8qIEFsbCBpOTE1IG1vZGlmaWVycyBhcmUgZmluZSAqLwo+ICsJCXN3aXRj aCAobW9kaWZpZXIpIHsKPiArCQljYXNlIERSTV9GT1JNQVRfTU9EX0xJTkVBUjoKPiArCQljYXNl IEk5MTVfRk9STUFUX01PRF9YX1RJTEVEOgo+ICsJCWNhc2UgSTkxNV9GT1JNQVRfTU9EX1lfVElM RUQ6Cj4gKwkJY2FzZSBJOTE1X0ZPUk1BVF9NT0RfWWZfVElMRUQ6Cj4gKwkJCXJldHVybiB0cnVl Owo+ICsJCWRlZmF1bHQ6Cj4gKwkJCXJldHVybiBmYWxzZTsKPiArCQl9Cj4gKwlkZWZhdWx0Ogo+ ICsJCXJldHVybiBmYWxzZTsKPiArCX0KPiArfQoKSSB0aGluayBJIG1pZ2h0IGJpa2VzaGVkIHRo YXQgYXMgCgpza2xfbW9kX3N1cHBvcnRlZCgpCnsKCXN3aXRjaCAoZm9ybWF0KSB7CgljYXNlIERS TV9GT1JNQVRfWFJHQjg4ODg6CgljYXNlIERSTV9GT1JNQVRfWEJHUjg4ODg6CgljYXNlIERSTV9G T1JNQVRfQVJHQjg4ODg6CgljYXNlIERSTV9GT1JNQVRfQUJHUjg4ODg6CgljYXNlIERSTV9GT1JN QVRfUkdCNTY1OgoJY2FzZSBEUk1fRk9STUFUX1hSR0IyMTAxMDEwOgoJY2FzZSBEUk1fRk9STUFU X1hCR1IyMTAxMDEwOgoJY2FzZSBEUk1fRk9STUFUX1lVWVY6CgljYXNlIERSTV9GT1JNQVRfWVZZ VToKCWNhc2UgRFJNX0ZPUk1BVF9VWVZZOgoJY2FzZSBEUk1fRk9STUFUX1ZZVVk6CgkJaWYgKG1v ZGlmaWVyID09IEk5MTVfRk9STUFUX01PRF9ZZl9USUxFRCkKCQkJcmV0dXJuIHRydWU7CgkJLyog ZmFsbCB0aHJvdWdoICovCgljYXNlIERSTV9GT1JNQVRfQzg6CgkJaWYgKG1vZGlmaWVyID09IERS TV9GT1JNQVRfTU9EX0xJTkVBUiB8fAoJCSAgICBtb2RpZmllciA9PSBJOTE1X0ZPUk1BVF9NT0Rf WF9USUxFRCB8fAoJCSAgICBtb2RpZmllciA9PSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRCkKCQkJ cmV0dXJuIHRydWU7CgkJLyogZmFsbCB0aHJvdWdoICovCglkZWZhdWx0OgoJCXJldHVybiBmYWxz ZTsKCX0KfQoKVGhlIENDUyBtb2RpZmllcnMgc2hvdWxkIHRoZW4gc2xpZGUgaW4gdmVyeSBuZWF0 bHkgYWZ0ZXIgdGhlIDg4ODgKZm9ybWF0cy4KCj4gKwo+ICtzdGF0aWMgYm9vbCBpbnRlbF9wcmlt YXJ5X3BsYW5lX2Zvcm1hdF9tb2Rfc3VwcG9ydGVkKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ ICsJCQkJCQkgICAgIHVpbnQzMl90IGZvcm1hdCwKPiArCQkJCQkJICAgICB1aW50NjRfdCBtb2Rp ZmllcikKPiArewo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkx NShwbGFuZS0+ZGV2KTsKPiArCj4gKwlpZiAoV0FSTl9PTihtb2RpZmllciA9PSBEUk1fRk9STUFU X01PRF9JTlZBTElEKSkKPiArCQlyZXR1cm4gZmFsc2U7Cj4gKwo+ICsJaWYgKChtb2RpZmllciA+ PiA1NikgIT0gRFJNX0ZPUk1BVF9NT0RfVkVORE9SX0lOVEVMICYmCj4gKwkgICAgbW9kaWZpZXIg IT0gRFJNX0ZPUk1BVF9NT0RfTElORUFSKQo+ICsJCXJldHVybiBmYWxzZTsKPiArCj4gKwo+ICsJ aWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkKPiArCQlyZXR1cm4gc2tsX21vZF9zdXBwb3J0 ZWQoZm9ybWF0LCBtb2RpZmllcik7Cj4gKwllbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49 IDQpCj4gKwkJcmV0dXJuIGk5NjVfbW9kX3N1cHBvcnRlZChmb3JtYXQsIG1vZGlmaWVyKTsKPiAr CWVsc2UKPiArCQlyZXR1cm4gaTh4eF9tb2Rfc3VwcG9ydGVkKGZvcm1hdCwgbW9kaWZpZXIpOwo+ ICsKPiArCXVucmVhY2hhYmxlKCk7Cj4gK30KPiArCj4gK3N0YXRpYyBib29sIGludGVsX2N1cnNv cl9wbGFuZV9mb3JtYXRfbW9kX3N1cHBvcnRlZChzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiAr CQkJCQkJICAgIHVpbnQzMl90IGZvcm1hdCwKPiArCQkJCQkJICAgIHVpbnQ2NF90IG1vZGlmaWVy KQo+ICt7Cj4gKwlpZiAoV0FSTl9PTihtb2RpZmllciA9PSBEUk1fRk9STUFUX01PRF9JTlZBTElE KSkKPiArCQlyZXR1cm4gZmFsc2U7Cj4gKwo+ICsJcmV0dXJuIG1vZGlmaWVyID09IERSTV9GT1JN QVRfTU9EX0xJTkVBUiAmJiBmb3JtYXQgPT0gRFJNX0ZPUk1BVF9BUkdCODg4ODsKPiArfQo+ICsK PiAgY29uc3Qgc3RydWN0IGRybV9wbGFuZV9mdW5jcyBpbnRlbF9wbGFuZV9mdW5jcyA9IHsKClRo YXQgY2FuIGJlIG1hZGUgc3RhdGljIG5vdy4gQW5kIG1heWJlIHJlbmFtZSB0byBpbnRlbF9wcmlt YXJ5X3BsYW5lX2Z1bmNzLgoKPiAgCS51cGRhdGVfcGxhbmUgPSBkcm1fYXRvbWljX2hlbHBlcl91 cGRhdGVfcGxhbmUsCj4gIAkuZGlzYWJsZV9wbGFuZSA9IGRybV9hdG9taWNfaGVscGVyX2Rpc2Fi bGVfcGxhbmUsCj4gQEAgLTEzODE5LDYgKzEzOTQwLDcgQEAgY29uc3Qgc3RydWN0IGRybV9wbGFu ZV9mdW5jcyBpbnRlbF9wbGFuZV9mdW5jcyA9IHsKPiAgCS5hdG9taWNfc2V0X3Byb3BlcnR5ID0g aW50ZWxfcGxhbmVfYXRvbWljX3NldF9wcm9wZXJ0eSwKPiAgCS5hdG9taWNfZHVwbGljYXRlX3N0 YXRlID0gaW50ZWxfcGxhbmVfZHVwbGljYXRlX3N0YXRlLAo+ICAJLmF0b21pY19kZXN0cm95X3N0 YXRlID0gaW50ZWxfcGxhbmVfZGVzdHJveV9zdGF0ZSwKPiArCS5mb3JtYXRfbW9kX3N1cHBvcnRl ZCA9IGludGVsX3ByaW1hcnlfcGxhbmVfZm9ybWF0X21vZF9zdXBwb3J0ZWQsCj4gIH07Cj4gIAo+ ICBzdGF0aWMgaW50Cj4gQEAgLTEzOTU0LDYgKzE0MDc2LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVj dCBkcm1fcGxhbmVfZnVuY3MgaW50ZWxfY3Vyc29yX3BsYW5lX2Z1bmNzID0gewo+ICAJLmF0b21p Y19zZXRfcHJvcGVydHkgPSBpbnRlbF9wbGFuZV9hdG9taWNfc2V0X3Byb3BlcnR5LAo+ICAJLmF0 b21pY19kdXBsaWNhdGVfc3RhdGUgPSBpbnRlbF9wbGFuZV9kdXBsaWNhdGVfc3RhdGUsCj4gIAku YXRvbWljX2Rlc3Ryb3lfc3RhdGUgPSBpbnRlbF9wbGFuZV9kZXN0cm95X3N0YXRlLAo+ICsJLmZv cm1hdF9tb2Rfc3VwcG9ydGVkID0gaW50ZWxfY3Vyc29yX3BsYW5lX2Zvcm1hdF9tb2Rfc3VwcG9y dGVkLAo+ICB9Owo+ICAKPiAgc3RhdGljIHN0cnVjdCBpbnRlbF9wbGFuZSAqCj4gQEAgLTEzOTY0 LDYgKzE0MDg3LDcgQEAgaW50ZWxfcHJpbWFyeV9wbGFuZV9jcmVhdGUoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LCBlbnVtIHBpcGUgcGlwZSkKPiAgCWNvbnN0IHVpbnQzMl90ICpp bnRlbF9wcmltYXJ5X2Zvcm1hdHM7Cj4gIAl1bnNpZ25lZCBpbnQgc3VwcG9ydGVkX3JvdGF0aW9u czsKPiAgCXVuc2lnbmVkIGludCBudW1fZm9ybWF0czsKPiArCWNvbnN0IHVpbnQ2NF90ICppbnRl bF9mb3JtYXRfbW9kaWZpZXJzOwoKSnVzdCAnbW9kaWZpZXJzJyBvciAnZm9ybWF0X21vZGlmaWVy cycgc2VlbXMgc3VmZmljaWVudC4KCj4gIAlpbnQgcmV0Owo+ICAKPiAgCXByaW1hcnkgPSBremFs bG9jKHNpemVvZigqcHJpbWFyeSksIEdGUF9LRVJORUwpOwo+IEBAIC0xNDAwMiwxOCArMTQxMjYs MjEgQEAgaW50ZWxfcHJpbWFyeV9wbGFuZV9jcmVhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2LCBlbnVtIHBpcGUgcGlwZSkKPiAgCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49 IDkpIHsKPiAgCQlpbnRlbF9wcmltYXJ5X2Zvcm1hdHMgPSBza2xfcHJpbWFyeV9mb3JtYXRzOwo+ ICAJCW51bV9mb3JtYXRzID0gQVJSQVlfU0laRShza2xfcHJpbWFyeV9mb3JtYXRzKTsKPiArCQlp bnRlbF9mb3JtYXRfbW9kaWZpZXJzID0gc2tsX2Zvcm1hdF9tb2RpZmllcnM7Cj4gIAo+ICAJCXBy aW1hcnktPnVwZGF0ZV9wbGFuZSA9IHNreWxha2VfdXBkYXRlX3ByaW1hcnlfcGxhbmU7Cj4gIAkJ cHJpbWFyeS0+ZGlzYWJsZV9wbGFuZSA9IHNreWxha2VfZGlzYWJsZV9wcmltYXJ5X3BsYW5lOwo+ ICAJfSBlbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDQpIHsKPiAgCQlpbnRlbF9wcmlt YXJ5X2Zvcm1hdHMgPSBpOTY1X3ByaW1hcnlfZm9ybWF0czsKPiAgCQludW1fZm9ybWF0cyA9IEFS UkFZX1NJWkUoaTk2NV9wcmltYXJ5X2Zvcm1hdHMpOwo+ICsJCWludGVsX2Zvcm1hdF9tb2RpZmll cnMgPSBpOXh4X2Zvcm1hdF9tb2RpZmllcnM7Cj4gIAo+ICAJCXByaW1hcnktPnVwZGF0ZV9wbGFu ZSA9IGk5eHhfdXBkYXRlX3ByaW1hcnlfcGxhbmU7Cj4gIAkJcHJpbWFyeS0+ZGlzYWJsZV9wbGFu ZSA9IGk5eHhfZGlzYWJsZV9wcmltYXJ5X3BsYW5lOwo+ICAJfSBlbHNlIHsKPiAgCQlpbnRlbF9w cmltYXJ5X2Zvcm1hdHMgPSBpOHh4X3ByaW1hcnlfZm9ybWF0czsKPiAgCQludW1fZm9ybWF0cyA9 IEFSUkFZX1NJWkUoaTh4eF9wcmltYXJ5X2Zvcm1hdHMpOwo+ICsJCWludGVsX2Zvcm1hdF9tb2Rp ZmllcnMgPSBpOXh4X2Zvcm1hdF9tb2RpZmllcnM7Cj4gIAo+ICAJCXByaW1hcnktPnVwZGF0ZV9w bGFuZSA9IGk5eHhfdXBkYXRlX3ByaW1hcnlfcGxhbmU7Cj4gIAkJcHJpbWFyeS0+ZGlzYWJsZV9w bGFuZSA9IGk5eHhfZGlzYWJsZV9wcmltYXJ5X3BsYW5lOwo+IEBAIC0xNDAyMywyMSArMTQxNTAs MjEgQEAgaW50ZWxfcHJpbWFyeV9wbGFuZV9jcmVhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2LCBlbnVtIHBpcGUgcGlwZSkKPiAgCQlyZXQgPSBkcm1fdW5pdmVyc2FsX3BsYW5l X2luaXQoJmRldl9wcml2LT5kcm0sICZwcmltYXJ5LT5iYXNlLAo+ICAJCQkJCSAgICAgICAwLCAm aW50ZWxfcGxhbmVfZnVuY3MsCj4gIAkJCQkJICAgICAgIGludGVsX3ByaW1hcnlfZm9ybWF0cywg bnVtX2Zvcm1hdHMsCj4gLQkJCQkJICAgICAgIE5VTEwsCj4gKwkJCQkJICAgICAgIGludGVsX2Zv cm1hdF9tb2RpZmllcnMsCj4gIAkJCQkJICAgICAgIERSTV9QTEFORV9UWVBFX1BSSU1BUlksCj4g IAkJCQkJICAgICAgICJwbGFuZSAxJWMiLCBwaXBlX25hbWUocGlwZSkpOwo+ICAJZWxzZSBpZiAo SU5URUxfR0VOKGRldl9wcml2KSA+PSA1IHx8IElTX0c0WChkZXZfcHJpdikpCj4gIAkJcmV0ID0g ZHJtX3VuaXZlcnNhbF9wbGFuZV9pbml0KCZkZXZfcHJpdi0+ZHJtLCAmcHJpbWFyeS0+YmFzZSwK PiAgCQkJCQkgICAgICAgMCwgJmludGVsX3BsYW5lX2Z1bmNzLAo+ICAJCQkJCSAgICAgICBpbnRl bF9wcmltYXJ5X2Zvcm1hdHMsIG51bV9mb3JtYXRzLAo+IC0JCQkJCSAgICAgICBOVUxMLAo+ICsJ CQkJCSAgICAgICBpbnRlbF9mb3JtYXRfbW9kaWZpZXJzLAo+ICAJCQkJCSAgICAgICBEUk1fUExB TkVfVFlQRV9QUklNQVJZLAo+ICAJCQkJCSAgICAgICAicHJpbWFyeSAlYyIsIHBpcGVfbmFtZShw aXBlKSk7Cj4gIAllbHNlCj4gIAkJcmV0ID0gZHJtX3VuaXZlcnNhbF9wbGFuZV9pbml0KCZkZXZf cHJpdi0+ZHJtLCAmcHJpbWFyeS0+YmFzZSwKPiAgCQkJCQkgICAgICAgMCwgJmludGVsX3BsYW5l X2Z1bmNzLAo+ICAJCQkJCSAgICAgICBpbnRlbF9wcmltYXJ5X2Zvcm1hdHMsIG51bV9mb3JtYXRz LAo+IC0JCQkJCSAgICAgICBOVUxMLAo+ICsJCQkJCSAgICAgICBpbnRlbF9mb3JtYXRfbW9kaWZp ZXJzLAo+ICAJCQkJCSAgICAgICBEUk1fUExBTkVfVFlQRV9QUklNQVJZLAo+ICAJCQkJCSAgICAg ICAicGxhbmUgJWMiLCBwbGFuZV9uYW1lKHByaW1hcnktPnBsYW5lKSk7Cj4gIAlpZiAocmV0KQo+ IEBAIC0xNDEyMyw3ICsxNDI1MCw4IEBAIGludGVsX2N1cnNvcl9wbGFuZV9jcmVhdGUoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJCQkJICAgICAgIDAsICZpbnRlbF9jdXJz b3JfcGxhbmVfZnVuY3MsCj4gIAkJCQkgICAgICAgaW50ZWxfY3Vyc29yX2Zvcm1hdHMsCj4gIAkJ CQkgICAgICAgQVJSQVlfU0laRShpbnRlbF9jdXJzb3JfZm9ybWF0cyksCj4gLQkJCQkgICAgICAg TlVMTCwgRFJNX1BMQU5FX1RZUEVfQ1VSU09SLAo+ICsJCQkJICAgICAgIGN1cnNvcl9mb3JtYXRf bW9kaWZpZXJzLAo+ICsJCQkJICAgICAgIERSTV9QTEFORV9UWVBFX0NVUlNPUiwKPiAgCQkJCSAg ICAgICAiY3Vyc29yICVjIiwgcGlwZV9uYW1lKHBpcGUpKTsKPiAgCWlmIChyZXQpCj4gIAkJZ290 byBmYWlsOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jCj4gaW5kZXggMTViYjQzNzg3 ZWI1Li5lODA4MzRjYjFmNGMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfc3ByaXRlLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYwo+ IEBAIC0zMCw2ICszMCw3IEBACj4gICAqIHN1cHBvcnQuCj4gICAqLwo+ICAjaW5jbHVkZSA8ZHJt L2RybVAuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljX2hlbHBlci5oPgo+ICAjaW5jbHVk ZSA8ZHJtL2RybV9jcnRjLmg+Cj4gICNpbmNsdWRlIDxkcm0vZHJtX2ZvdXJjYy5oPgo+ICAjaW5j bHVkZSA8ZHJtL2RybV9yZWN0Lmg+Cj4gQEAgLTEwNDMsNiArMTA0NCwxMiBAQCBzdGF0aWMgY29u c3QgdWludDMyX3QgZzR4X3BsYW5lX2Zvcm1hdHNbXSA9IHsKPiAgCURSTV9GT1JNQVRfVllVWSwK PiAgfTsKPiAgCj4gK3N0YXRpYyBjb25zdCB1aW50NjRfdCBpOXh4X3BsYW5lX2Zvcm1hdF9tb2Rp ZmllcnNbXSA9IHsKPiArCUk5MTVfRk9STUFUX01PRF9YX1RJTEVELAo+ICsJRFJNX0ZPUk1BVF9N T0RfTElORUFSLAo+ICsJRFJNX0ZPUk1BVF9NT0RfSU5WQUxJRAo+ICt9Owo+ICsKPiAgc3RhdGlj IGNvbnN0IHVpbnQzMl90IHNuYl9wbGFuZV9mb3JtYXRzW10gPSB7Cj4gIAlEUk1fRk9STUFUX1hC R1I4ODg4LAo+ICAJRFJNX0ZPUk1BVF9YUkdCODg4OCwKPiBAQCAtMTA3OCw2ICsxMDg1LDY4IEBA IHN0YXRpYyB1aW50MzJfdCBza2xfcGxhbmVfZm9ybWF0c1tdID0gewo+ICAJRFJNX0ZPUk1BVF9W WVVZLAo+ICB9Owo+ICAKPiArc3RhdGljIGNvbnN0IHVpbnQ2NF90IHNrbF9wbGFuZV9mb3JtYXRf bW9kaWZpZXJzW10gPSB7Cj4gKwlJOTE1X0ZPUk1BVF9NT0RfWWZfVElMRUQsCj4gKwlJOTE1X0ZP Uk1BVF9NT0RfWV9USUxFRCwKPiArCUk5MTVfRk9STUFUX01PRF9YX1RJTEVELAo+ICsJRFJNX0ZP Uk1BVF9NT0RfTElORUFSLAo+ICsJRFJNX0ZPUk1BVF9NT0RfSU5WQUxJRAo+ICt9Owo+ICsKPiAr c3RhdGljIGJvb2wgaW50ZWxfc3ByaXRlX3BsYW5lX2Zvcm1hdF9tb2Rfc3VwcG9ydGVkKHN0cnVj dCBkcm1fcGxhbmUgKnBsYW5lLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdWludDMyX3QgZm9ybWF0LAo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3QgbW9kaWZpZXIpCj4gK3sK PiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUocGxhbmUtPmRl dik7Cj4gKwo+ICsJaWYgKFdBUk5fT04obW9kaWZpZXIgPT0gRFJNX0ZPUk1BVF9NT0RfSU5WQUxJ RCkpCj4gKwkJcmV0dXJuIGZhbHNlOwo+ICsKPiArCUJVR19PTihwbGFuZS0+dHlwZSAhPSBEUk1f UExBTkVfVFlQRV9PVkVSTEFZKTsKPiArCj4gKwlpZiAoKG1vZGlmaWVyID4+IDU2KSAhPSBEUk1f Rk9STUFUX01PRF9WRU5ET1JfSU5URUwgJiYKPiArCSAgICBtb2RpZmllciAhPSBEUk1fRk9STUFU X01PRF9MSU5FQVIpCj4gKwkJcmV0dXJuIGZhbHNlOwo+ICsKPiArCXN3aXRjaCAoZm9ybWF0KSB7 Cj4gKwkJY2FzZSBEUk1fRk9STUFUX1hCR1IyMTAxMDEwOgo+ICsJCWNhc2UgRFJNX0ZPUk1BVF9B QkdSMjEwMTAxMDoKPiArCQkJaWYgKElTX1ZBTExFWVZJRVcoZGV2X3ByaXYpIHx8IElTX0NIRVJS WVZJRVcoZGV2X3ByaXYpKQo+ICsJCQkJcmV0dXJuIHRydWU7Cj4gKwkJCWJyZWFrOwo+ICsJCWNh c2UgRFJNX0ZPUk1BVF9SR0I1NjU6Cj4gKwkJY2FzZSBEUk1fRk9STUFUX0FCR1I4ODg4Ogo+ICsJ CWNhc2UgRFJNX0ZPUk1BVF9BUkdCODg4ODoKPiArCQkJaWYgKElOVEVMX0dFTihkZXZfcHJpdikg Pj0gOSB8fCBJU19WQUxMRVlWSUVXKGRldl9wcml2KSB8fCBJU19DSEVSUllWSUVXKGRldl9wcml2 KSkKPiArCQkJCXJldHVybiB0cnVlOwo+ICsJCQlicmVhazsKPiArCQljYXNlIERSTV9GT1JNQVRf WEJHUjg4ODg6Cj4gKwkJCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDYpCj4gKwkJCQlyZXR1 cm4gdHJ1ZTsKPiArCQkJYnJlYWs7Cj4gKwkJY2FzZSBEUk1fRk9STUFUX1hSR0I4ODg4Ogo+ICsJ CWNhc2UgRFJNX0ZPUk1BVF9ZVVlWOgo+ICsJCWNhc2UgRFJNX0ZPUk1BVF9ZVllVOgo+ICsJCWNh c2UgRFJNX0ZPUk1BVF9VWVZZOgo+ICsJCWNhc2UgRFJNX0ZPUk1BVF9WWVVZOgo+ICsJCQlyZXR1 cm4gdHJ1ZTsKPiArCX0KPiArCj4gKwlyZXR1cm4gZmFsc2U7Cj4gK30KClRoaXMgbG9va3MgcXVp dGUgYWxpZW4gY29tcGFyZWQgdG8gdGhlIHByaW1hcnkgcGxhbmUgY29kZS4gUmF0aGVyCmhhcmQg dG8gcGFyc2UsIGFuZCBpdCBkb2Vzbid0IGFjdHVhbGx5IGNoZWNrIHRoZSBtb2RpZmllcnMgcGVy CmZvcm1hdCBsaWtlIHRoZSBwcmltYXJ5IHBsYW5lIGFuZCBjdXJzb3IgY29kZSBkb2VzLgoKU28g SSdkIHNwbGl0IGl0IHVwIGludG8gZzR4LHNuYix2bGIsc2tsIHZhcmlhbnRzIGp1c3QgbGlrZSB0 aGUKcHJpbWFyeSBwbGFuZSBjb2RlIGRvZXMuCgo+ICsKPiArY29uc3Qgc3RydWN0IGRybV9wbGFu ZV9mdW5jcyBpbnRlbF9zcHJpdGVfcGxhbmVfZnVuY3MgPSB7CgpzdGF0aWMKCj4gKyAgICAgICAg LnVwZGF0ZV9wbGFuZSA9IGRybV9hdG9taWNfaGVscGVyX3VwZGF0ZV9wbGFuZSwKPiArICAgICAg ICAuZGlzYWJsZV9wbGFuZSA9IGRybV9hdG9taWNfaGVscGVyX2Rpc2FibGVfcGxhbmUsCj4gKyAg ICAgICAgLmRlc3Ryb3kgPSBpbnRlbF9wbGFuZV9kZXN0cm95LAo+ICsgICAgICAgIC5zZXRfcHJv cGVydHkgPSBkcm1fYXRvbWljX2hlbHBlcl9wbGFuZV9zZXRfcHJvcGVydHksCj4gKyAgICAgICAg LmF0b21pY19nZXRfcHJvcGVydHkgPSBpbnRlbF9wbGFuZV9hdG9taWNfZ2V0X3Byb3BlcnR5LAo+ ICsgICAgICAgIC5hdG9taWNfc2V0X3Byb3BlcnR5ID0gaW50ZWxfcGxhbmVfYXRvbWljX3NldF9w cm9wZXJ0eSwKPiArICAgICAgICAuYXRvbWljX2R1cGxpY2F0ZV9zdGF0ZSA9IGludGVsX3BsYW5l X2R1cGxpY2F0ZV9zdGF0ZSwKPiArICAgICAgICAuYXRvbWljX2Rlc3Ryb3lfc3RhdGUgPSBpbnRl bF9wbGFuZV9kZXN0cm95X3N0YXRlLAo+ICsgICAgICAgIC5mb3JtYXRfbW9kX3N1cHBvcnRlZCA9 IGludGVsX3Nwcml0ZV9wbGFuZV9mb3JtYXRfbW9kX3N1cHBvcnRlZCwKPiArfTsKPiArCj4gIHN0 cnVjdCBpbnRlbF9wbGFuZSAqCj4gIGludGVsX3Nwcml0ZV9wbGFuZV9jcmVhdGUoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJCQkgIGVudW0gcGlwZSBwaXBlLCBpbnQgcGxh bmUpCj4gQEAgLTEwODYsNiArMTE1NSw3IEBAIGludGVsX3Nwcml0ZV9wbGFuZV9jcmVhdGUoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJc3RydWN0IGludGVsX3BsYW5lX3N0 YXRlICpzdGF0ZSA9IE5VTEw7Cj4gIAl1bnNpZ25lZCBsb25nIHBvc3NpYmxlX2NydGNzOwo+ICAJ Y29uc3QgdWludDMyX3QgKnBsYW5lX2Zvcm1hdHM7Cj4gKwljb25zdCB1aW50NjRfdCAqbW9kaWZp ZXJzOwo+ICAJdW5zaWduZWQgaW50IHN1cHBvcnRlZF9yb3RhdGlvbnM7Cj4gIAlpbnQgbnVtX3Bs YW5lX2Zvcm1hdHM7Cj4gIAlpbnQgcmV0Owo+IEBAIC0xMTEyLDYgKzExODIsNyBAQCBpbnRlbF9z cHJpdGVfcGxhbmVfY3JlYXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAg Cj4gIAkJcGxhbmVfZm9ybWF0cyA9IHNrbF9wbGFuZV9mb3JtYXRzOwo+ICAJCW51bV9wbGFuZV9m b3JtYXRzID0gQVJSQVlfU0laRShza2xfcGxhbmVfZm9ybWF0cyk7Cj4gKwkJbW9kaWZpZXJzID0g c2tsX3BsYW5lX2Zvcm1hdF9tb2RpZmllcnM7Cj4gIAl9IGVsc2UgaWYgKElTX1ZBTExFWVZJRVco ZGV2X3ByaXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKSB7Cj4gIAkJaW50ZWxfcGxhbmUt PmNhbl9zY2FsZSA9IGZhbHNlOwo+ICAJCWludGVsX3BsYW5lLT5tYXhfZG93bnNjYWxlID0gMTsK PiBAQCAtMTEyMSw2ICsxMTkyLDcgQEAgaW50ZWxfc3ByaXRlX3BsYW5lX2NyZWF0ZShzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAo+ICAJCXBsYW5lX2Zvcm1hdHMgPSB2bHZf cGxhbmVfZm9ybWF0czsKPiAgCQludW1fcGxhbmVfZm9ybWF0cyA9IEFSUkFZX1NJWkUodmx2X3Bs YW5lX2Zvcm1hdHMpOwo+ICsJCW1vZGlmaWVycyA9IGk5eHhfcGxhbmVfZm9ybWF0X21vZGlmaWVy czsKPiAgCX0gZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA3KSB7Cj4gIAkJaWYgKElT X0lWWUJSSURHRShkZXZfcHJpdikpIHsKPiAgCQkJaW50ZWxfcGxhbmUtPmNhbl9zY2FsZSA9IHRy dWU7Cj4gQEAgLTExMzUsNiArMTIwNyw3IEBAIGludGVsX3Nwcml0ZV9wbGFuZV9jcmVhdGUoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAKPiAgCQlwbGFuZV9mb3JtYXRzID0g c25iX3BsYW5lX2Zvcm1hdHM7Cj4gIAkJbnVtX3BsYW5lX2Zvcm1hdHMgPSBBUlJBWV9TSVpFKHNu Yl9wbGFuZV9mb3JtYXRzKTsKPiArCQltb2RpZmllcnMgPSBpOXh4X3BsYW5lX2Zvcm1hdF9tb2Rp ZmllcnM7Cj4gIAl9IGVsc2Ugewo+ICAJCWludGVsX3BsYW5lLT5jYW5fc2NhbGUgPSB0cnVlOwo+ ICAJCWludGVsX3BsYW5lLT5tYXhfZG93bnNjYWxlID0gMTY7Cj4gQEAgLTExNDIsNiArMTIxNSw3 IEBAIGludGVsX3Nwcml0ZV9wbGFuZV9jcmVhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LAo+ICAJCWludGVsX3BsYW5lLT51cGRhdGVfcGxhbmUgPSBnNHhfdXBkYXRlX3BsYW5l Owo+ICAJCWludGVsX3BsYW5lLT5kaXNhYmxlX3BsYW5lID0gZzR4X2Rpc2FibGVfcGxhbmU7Cj4g IAo+ICsJCW1vZGlmaWVycyA9IGk5eHhfcGxhbmVfZm9ybWF0X21vZGlmaWVyczsKPiAgCQlpZiAo SVNfR0VONihkZXZfcHJpdikpIHsKPiAgCQkJcGxhbmVfZm9ybWF0cyA9IHNuYl9wbGFuZV9mb3Jt YXRzOwo+ICAJCQludW1fcGxhbmVfZm9ybWF0cyA9IEFSUkFZX1NJWkUoc25iX3BsYW5lX2Zvcm1h dHMpOwo+IEBAIC0xMTc0LDE1ICsxMjQ4LDE3IEBAIGludGVsX3Nwcml0ZV9wbGFuZV9jcmVhdGUo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAKPiAgCWlmIChJTlRFTF9HRU4o ZGV2X3ByaXYpID49IDkpCj4gIAkJcmV0ID0gZHJtX3VuaXZlcnNhbF9wbGFuZV9pbml0KCZkZXZf cHJpdi0+ZHJtLCAmaW50ZWxfcGxhbmUtPmJhc2UsCj4gLQkJCQkJICAgICAgIHBvc3NpYmxlX2Ny dGNzLCAmaW50ZWxfcGxhbmVfZnVuY3MsCj4gKwkJCQkJICAgICAgIHBvc3NpYmxlX2NydGNzLCAm aW50ZWxfc3ByaXRlX3BsYW5lX2Z1bmNzLAo+ICAJCQkJCSAgICAgICBwbGFuZV9mb3JtYXRzLCBu dW1fcGxhbmVfZm9ybWF0cywKPiAtCQkJCQkgICAgICAgTlVMTCwgRFJNX1BMQU5FX1RZUEVfT1ZF UkxBWSwKPiArCQkJCQkgICAgICAgbW9kaWZpZXJzLAo+ICsJCQkJCSAgICAgICBEUk1fUExBTkVf VFlQRV9PVkVSTEFZLAo+ICAJCQkJCSAgICAgICAicGxhbmUgJWQlYyIsIHBsYW5lICsgMiwgcGlw ZV9uYW1lKHBpcGUpKTsKPiAgCWVsc2UKPiAgCQlyZXQgPSBkcm1fdW5pdmVyc2FsX3BsYW5lX2lu aXQoJmRldl9wcml2LT5kcm0sICZpbnRlbF9wbGFuZS0+YmFzZSwKPiAgCQkJCQkgICAgICAgcG9z c2libGVfY3J0Y3MsICZpbnRlbF9wbGFuZV9mdW5jcywKCnNwcml0ZV9wbGFuZV9mdW5jcwoKPiAg CQkJCQkgICAgICAgcGxhbmVfZm9ybWF0cywgbnVtX3BsYW5lX2Zvcm1hdHMsCj4gLQkJCQkJICAg ICAgIE5VTEwsIERSTV9QTEFORV9UWVBFX09WRVJMQVksCj4gKwkJCQkJICAgICAgIG1vZGlmaWVy cywKPiArCQkJCQkgICAgICAgRFJNX1BMQU5FX1RZUEVfT1ZFUkxBWSwKPiAgCQkJCQkgICAgICAg InNwcml0ZSAlYyIsIHNwcml0ZV9uYW1lKHBpcGUsIHBsYW5lKSk7Cj4gIAlpZiAocmV0KQo+ICAJ CWdvdG8gZmFpbDsKPiAtLSAKPiAyLjEzLjEKCi0tIApWaWxsZSBTeXJqw6Rsw6QKSW50ZWwgT1RD Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdm eCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=