From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 2/2] i-g-t: Adding display NV12 testcase Date: Thu, 7 May 2015 08:48:36 +0200 Message-ID: <20150507064836.GQ30184@phenom.ffwll.local> References: <1430536299-17547-1-git-send-email-chandra.konduru@intel.com> <1430536299-17547-3-git-send-email-chandra.konduru@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wi0-f169.google.com (mail-wi0-f169.google.com [209.85.212.169]) by gabe.freedesktop.org (Postfix) with ESMTP id 422296E790 for ; Wed, 6 May 2015 23:46:17 -0700 (PDT) Received: by wiun10 with SMTP id n10so47711628wiu.1 for ; Wed, 06 May 2015 23:46:16 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1430536299-17547-3-git-send-email-chandra.konduru@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chandra Konduru Cc: intel-gfx@lists.freedesktop.org, thomas.wood@intel.com List-Id: intel-gfx@lists.freedesktop.org T24gRnJpLCBNYXkgMDEsIDIwMTUgYXQgMDg6MTE6MzlQTSAtMDcwMCwgQ2hhbmRyYSBLb25kdXJ1 IHdyb3RlOgo+IEZyb206IGNoYW5kcmEga29uZHVydSA8Y2hhbmRyYS5rb25kdXJ1QGludGVsLmNv bT4KPiAKPiBUaGlzIHBhdGNoIGFkZHMga21zX252MTIgdGVzdCBjYXNlLiBJdCBjb3ZlcnMgdGVz dGluZyBOVjEyIGluCj4gYWxsIHN1cHBvcnRlZCBsaW5lYXIvdGlsZS1YL3RpbGUtWS90aWxlLVlm IHRpbGUgZm9ybWF0cyBpbgo+IDAgYW5kIDE4MCBvcmllbnRhdGlvbnMuIEZvciBlYWNoIHRpbGlu ZyBmb3JtYXQsIGl0IHRlc3RzCj4gdmFyaW91cyBjb21iaW5hdGlvbnMgb2YgcGxhbmVzIGFuZCBz Y2FsaW5nLgo+IAo+IEl0IGhhcyBzb21lIHZlcnkgcHJlbGltaW5hcnkgY3JjIHN1cHBvcnQgYW5k IGl0IGlzIGJpdCBmbGFreS4KPiBUaG91Z2ggSSBoYXZlIHNlZW4gb25jZS1pbi1hLXdoaWxlIGNy YyBjaGVjayBmYWlsdXJlcywgbW9zdCBvZiB0aGUKPiB0aW1lIHRoZXkgcGFzcywgc28gZW5hYmxl ZCBieS1kZWZhdWx0LiBJZiB0aGV5IGNhdXNlIGhlYWRhY2hlcwo+IHRoZXkgY2FuIGJlIGRpc2Fi bGVkIGFzIG5lZWRlZC4KClNwb3JhZGljIGNyYyBmYWlsdXJlcyBhcmUgcHJvYmFibHkgd2F0ZXJt YXJrIGlzc3Vlcy4gSGF2ZSB5b3Ugc2Vlbgp1bmRlcnJ1bnMgcmVwb3J0ZWQ/Ci1EYW5pZWwKCj4g Cj4gU2lnbmVkLW9mZi1ieTogY2hhbmRyYSBrb25kdXJ1IDxjaGFuZHJhLmtvbmR1cnVAaW50ZWwu Y29tPgo+IC0tLQo+ICB0ZXN0cy8uZ2l0aWdub3JlICAgICAgIHwgICAxICsKPiAgdGVzdHMvQW5k cm9pZC5tayAgICAgICB8ICAgMSArCj4gIHRlc3RzL01ha2VmaWxlLnNvdXJjZXMgfCAgIDEgKwo+ ICB0ZXN0cy9rbXNfbnYxMi5jICAgICAgIHwgNTI5ICsrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysKPiAgNCBmaWxlcyBjaGFuZ2VkLCA1MzIgaW5zZXJ0aW9u cygrKQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdHMva21zX252MTIuYwo+IAo+IGRpZmYgLS1n aXQgYS90ZXN0cy8uZ2l0aWdub3JlIGIvdGVzdHMvLmdpdGlnbm9yZQo+IGluZGV4IDc5NmUzMzAu LjM1YzBlNmUgMTAwNjQ0Cj4gLS0tIGEvdGVzdHMvLmdpdGlnbm9yZQo+ICsrKyBiL3Rlc3RzLy5n aXRpZ25vcmUKPiBAQCAtMTQ3LDYgKzE0Nyw3IEBAIGttc192YmxhbmsKPiAga21zX2NydGNfYmFj a2dyb3VuZF9jb2xvcgo+ICBrbXNfcGxhbmVfc2NhbGluZwo+ICBrbXNfcGFuZWxfZml0dGluZwo+ ICtrbXNfbnYxMgo+ICBwbV9scHNwCj4gIHBtX3JjNl9yZXNpZGVuY3kKPiAgcG1fcnBtCj4gZGlm ZiAtLWdpdCBhL3Rlc3RzL0FuZHJvaWQubWsgYi90ZXN0cy9BbmRyb2lkLm1rCj4gaW5kZXggZmFj OTkzMS4uYzBjNjM4MyAxMDA2NDQKPiAtLS0gYS90ZXN0cy9BbmRyb2lkLm1rCj4gKysrIGIvdGVz dHMvQW5kcm9pZC5tawo+IEBAIC04MSw2ICs4MSw3IEBAIGVsc2UKPiAgICAgIGttc19wd3JpdGVf Y3JjIFwKPiAgICAgIGttc19waXBlX2JfY19pdmIgXAo+ICAgICAga21zX2xlZ2FjeV9jb2xvcmtl eQo+ICsJa21zX252MTIgXAo+ICAgICAgSUdUX0xPQ0FMX0NGTEFHUyArPSAtREFORFJPSURfSEFT X0NBSVJPPTAKPiAgZW5kaWYKPiAgCj4gZGlmZiAtLWdpdCBhL3Rlc3RzL01ha2VmaWxlLnNvdXJj ZXMgYi90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzCj4gaW5kZXggNGNiYzUwZC4uYjY4MjI0ZSAxMDA2 NDQKPiAtLS0gYS90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzCj4gKysrIGIvdGVzdHMvTWFrZWZpbGUu c291cmNlcwo+IEBAIC03OCw2ICs3OCw3IEBAIFRFU1RTX3Byb2dzX00gPSBcCj4gIAlrbXNfY3J0 Y19iYWNrZ3JvdW5kX2NvbG9yIFwKPiAgCWttc19wbGFuZV9zY2FsaW5nIFwKPiAgCWttc19wYW5l bF9maXR0aW5nIFwKPiArCWttc19udjEyIFwKPiAgCXBtX2xwc3AgXAo+ICAJcG1fcnBtIFwKPiAg CXBtX3JwcyBcCj4gZGlmZiAtLWdpdCBhL3Rlc3RzL2ttc19udjEyLmMgYi90ZXN0cy9rbXNfbnYx Mi5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwLi5lODhjOTM0Cj4gLS0t IC9kZXYvbnVsbAo+ICsrKyBiL3Rlc3RzL2ttc19udjEyLmMKPiBAQCAtMCwwICsxLDUyOSBAQAo+ ICsvKgo+ICsgKiBDb3B5cmlnaHQgwqkgMjAxMywyMDE0IEludGVsIENvcnBvcmF0aW9uCj4gKyAq Cj4gKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBh bnkgcGVyc29uIG9idGFpbmluZyBhCj4gKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNz b2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCj4gKyAqIHRvIGRl YWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0 IGxpbWl0YXRpb24KPiArICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2Us IHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCj4gKyAqIGFuZC9vciBzZWxsIGNvcGll cyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQo+ICsg KiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2lu ZyBjb25kaXRpb25zOgo+ICsgKgo+ICsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQg dGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0Cj4gKyAqIHBhcmFncmFw aCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9u cyBvZiB0aGUKPiArICogU29mdHdhcmUuCj4gKyAqCj4gKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9W SURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCj4g KyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMg T0YgTUVSQ0hBTlRBQklMSVRZLAo+ICsgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKPiArICogVEhFIEFVVEhP UlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMg T1IgT1RIRVIKPiArICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFD VCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKPiArICogRlJPTSwgT1VUIE9GIE9SIElOIENP Tk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUwo+ ICsgKiBJTiBUSEUgU09GVFdBUkUuCj4gKyAqCj4gKyAqLwo+ICsKPiArI2luY2x1ZGUgPG1hdGgu aD4KPiArI2luY2x1ZGUgPGZjbnRsLmg+Cj4gKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgo+ICsKPiAr I2luY2x1ZGUgImRybXRlc3QuaCIKPiArI2luY2x1ZGUgImlndF9kZWJ1Z2ZzLmgiCj4gKyNpbmNs dWRlICJpZ3Rfa21zLmgiCj4gKyNpbmNsdWRlICJpZ3RfY29yZS5oIgo+ICsjaW5jbHVkZSAiaW50 ZWxfY2hpcHNldC5oIgo+ICsjaW5jbHVkZSAiaW9jdGxfd3JhcHBlcnMuaCIKPiArCj4gK0lHVF9U RVNUX0RFU0NSSVBUSU9OKCJUZXN0IGRpc3BsYXkgTlYxMiBzdXBwb3J0Iik7Cj4gKwo+ICt1aW50 MzJfdCBkZXZpZDsKPiArdHlwZWRlZiBzdHJ1Y3Qgewo+ICsJaW50IGRybV9mZDsKPiArCWlndF9k aXNwbGF5X3QgZGlzcGxheTsKPiArCWlndF9jcmNfdCBjcmMxOwo+ICsJaWd0X2NyY190IGNyYzI7 Cj4gKwlpZ3RfcGlwZV9jcmNfdCAqcGlwZV9jcmM7Cj4gKwlpbnQgbnVtX3NjYWxlcnM7Cj4gKwo+ ICsJc3RydWN0IGlndF9mYiBmYjE7Cj4gKwlzdHJ1Y3QgaWd0X2ZiIGZiMV9udjEyOwo+ICsJc3Ry dWN0IGlndF9mYiBmYjI7Cj4gKwlzdHJ1Y3QgaWd0X2ZiIGZiMl9udjEyOwo+ICsJc3RydWN0IGln dF9mYiBmYjM7Cj4gKwlzdHJ1Y3QgaWd0X2ZiIGZiM19udjEyOwo+ICsJaW50IGZiX2lkMTsKPiAr CWludCBmYl9pZDFfbnYxMjsKPiArCWludCBmYl9pZDI7Cj4gKwlpbnQgZmJfaWQyX252MTI7Cj4g KwlpbnQgZmJfaWQzOwo+ICsJaW50IGZiX2lkM19udjEyOwo+ICsKPiArCWlndF9wbGFuZV90ICpw bGFuZTE7Cj4gKwlpZ3RfcGxhbmVfdCAqcGxhbmUyOwo+ICsJaWd0X3BsYW5lX3QgKnBsYW5lMzsK PiArCj4gKwl1aW50NjRfdCB0aWxlZDsKPiArCWludCByb3RhdGlvbjsKPiArCWludCBjcmM7Cj4g K30gZGF0YV90Owo+ICsKPiArI2RlZmluZSBJTUdfRklMRSAgIjEwODBwLWxlZnQucG5nIgo+ICsj ZGVmaW5lIFNPTElEX0NPTE9SICAgICAgMHhGRkZGRkYgICAgICAgLyogQkdSIDhicGMgKi8KPiAr Cj4gK3N0YXRpYyB2b2lkCj4gK3BhaW50X3BhdHRlcm4oZGF0YV90ICpkLCBzdHJ1Y3QgaWd0X2Zi ICpmYiwgdWludDE2X3QgdywgdWludDE2X3QgaCkKPiArewo+ICsJY2Fpcm9fdCAqY3I7Cj4gKwo+ ICsJY3IgPSBpZ3RfZ2V0X2NhaXJvX2N0eChkLT5kcm1fZmQsIGZiKTsKPiArCWlndF9wYWludF90 ZXN0X3BhdHRlcm4oY3IsIHcsIGgpOwo+ICsJY2Fpcm9fZGVzdHJveShjcik7Cj4gK30KPiArCj4g K3N0YXRpYyB2b2lkCj4gK3BhaW50X2ltYWdlKGRhdGFfdCAqZCwgc3RydWN0IGlndF9mYiAqZmIs IHVpbnQxNl90IHcsIHVpbnQxNl90IGgpCj4gK3sKPiArCWNhaXJvX3QgKmNyOwo+ICsKPiArCWNy ID0gaWd0X2dldF9jYWlyb19jdHgoZC0+ZHJtX2ZkLCBmYik7Cj4gKwlpZ3RfcGFpbnRfaW1hZ2Uo Y3IsIElNR19GSUxFLCAwLCAwLCB3LCBoKTsKPiArCWNhaXJvX2Rlc3Ryb3koY3IpOwo+ICt9Cj4g Kwo+ICtzdGF0aWMgdm9pZAo+ICtwYWludF9zb2xpZF9jb2xvcihkYXRhX3QgKmQsIHN0cnVjdCBp Z3RfZmIgKmZiLCB1aW50MTZfdCB3LCB1aW50MTZfdCBoLAo+ICsJdWludDMyX3QgY29sb3IpCj4g K3sKPiArCWNhaXJvX3QgKmNyOwo+ICsJZG91YmxlIHIsIGcsIGI7Cj4gKwo+ICsJY3IgPSBpZ3Rf Z2V0X2NhaXJvX2N0eChkLT5kcm1fZmQsIGZiKTsKPiArCj4gKwkvKiBQYWludCB3aXRoIHNvbGlk IGNvbG9yICovCj4gKwlyID0gKGRvdWJsZSkgKGNvbG9yICYgMHhGRikgLyAyNTUuMDsKPiArCWcg PSAoZG91YmxlKSAoKGNvbG9yICYgMHhGRjAwKSA+PiA4KSAvIDI1NS4wOwo+ICsJYiA9IChkb3Vi bGUpICgoY29sb3IgJiAweEZGMDAwMCkgPj4gMTYpIC8gMjU1LjA7Cj4gKwlpZ3RfcGFpbnRfY29s b3IoY3IsIDAsIDAsIHcsIGgsIHIsIGcsIGIpOwo+ICsKPiArCWNhaXJvX2Rlc3Ryb3koY3IpOwo+ ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBwcmVwYXJlX2NydGMoZGF0YV90ICpkYXRhLCBpZ3Rfb3V0 cHV0X3QgKm91dHB1dCwgZW51bSBwaXBlIHBpcGUsCj4gKwkJCWlndF9wbGFuZV90ICpwbGFuZSwg ZHJtTW9kZU1vZGVJbmZvICptb2RlLCBlbnVtIGlndF9jb21taXRfc3R5bGUgcykKPiArewo+ICsJ aWd0X2Rpc3BsYXlfdCAqZGlzcGxheSA9ICZkYXRhLT5kaXNwbGF5Owo+ICsKPiArCWlndF9vdXRw dXRfc2V0X3BpcGUob3V0cHV0LCBwaXBlKTsKPiArCj4gKwkvKiBjcmVhdGUgdGhlIHBpcGVfY3Jj IG9iamVjdCBmb3IgdGhpcyBwaXBlICovCj4gKwlpZ3RfcGlwZV9jcmNfZnJlZShkYXRhLT5waXBl X2NyYyk7Cj4gKwlkYXRhLT5waXBlX2NyYyA9IGlndF9waXBlX2NyY19uZXcocGlwZSwgSU5URUxf UElQRV9DUkNfU09VUkNFX0FVVE8pOwo+ICsKPiArCS8qIGJlZm9yZSBhbGxvY2F0aW5nLCBmcmVl IGlmIGFueSBvbGRlciBmYiAqLwo+ICsJaWYgKGRhdGEtPmZiX2lkMSkgewo+ICsJCWlndF9yZW1v dmVfZmIoZGF0YS0+ZHJtX2ZkLCAmZGF0YS0+ZmIxKTsKPiArCQlkYXRhLT5mYl9pZDEgPSAwOwo+ ICsJfQo+ICsKPiArCS8qIGFsbG9jYXRlIGZiIGZvciBwbGFuZSAxICovCj4gKwlkYXRhLT5mYl9p ZDEgPSBpZ3RfY3JlYXRlX2ZiKGRhdGEtPmRybV9mZCwKPiArCQkJbW9kZS0+aGRpc3BsYXksIG1v ZGUtPnZkaXNwbGF5LAo+ICsJCQlEUk1fRk9STUFUX1hSR0I4ODg4LAo+ICsJCQlMT0NBTF9JOTE1 X0ZPUk1BVF9NT0RfWF9USUxFRCwgLyogdGlsZWQgKi8KPiArCQkJJmRhdGEtPmZiMSk7Cj4gKwlp Z3RfYXNzZXJ0KGRhdGEtPmZiX2lkMSk7Cj4gKwo+ICsJcGFpbnRfcGF0dGVybihkYXRhLCAmZGF0 YS0+ZmIxLCBtb2RlLT5oZGlzcGxheSwgbW9kZS0+dmRpc3BsYXkpOwo+ICsKPiArCS8qCj4gKwkg KiBXZSBhbHdheXMgc2V0IHRoZSBwcmltYXJ5IHBsYW5lIHRvIGFjdHVhbGx5IGVuYWJsZSB0aGUg cGlwZSBhcwo+ICsJICogdGhlcmUncyBubyB3YXkgKHRoYXQgd29ya3MpIHRvIGxpZ2h0IHVwIGEg cGlwZSB3aXRoIG9ubHkgYSBzcHJpdGUKPiArCSAqIHBsYW5lIGVuYWJsZWQgYXQgdGhlIG1vbWVu dC4KPiArCSAqLwo+ICsJaWYgKCFwbGFuZS0+aXNfcHJpbWFyeSkgewo+ICsJCWlndF9wbGFuZV90 ICpwcmltYXJ5Owo+ICsKPiArCQlwcmltYXJ5ID0gaWd0X291dHB1dF9nZXRfcGxhbmUob3V0cHV0 LCBJR1RfUExBTkVfUFJJTUFSWSk7Cj4gKwkJaWd0X3BsYW5lX3NldF9mYihwcmltYXJ5LCAmZGF0 YS0+ZmIxKTsKPiArCX0KPiArCj4gKwlpZ3RfcGxhbmVfc2V0X2ZiKHBsYW5lLCAmZGF0YS0+ZmIx KTsKPiArCWlmIChzID09IENPTU1JVF9MRUdBQ1kpIHsKPiArCQlpbnQgcmV0Owo+ICsJCXJldCA9 IGRybU1vZGVTZXRDcnRjKGRhdGEtPmRybV9mZCwKPiArCQkJCW91dHB1dC0+Y29uZmlnLmNydGMt PmNydGNfaWQsCj4gKwkJCQlkYXRhLT5mYl9pZDEsCj4gKwkJCQlwbGFuZS0+cGFuX3gsIHBsYW5l LT5wYW5feSwKPiArCQkJCSZvdXRwdXQtPmlkLAo+ICsJCQkJMSwKPiArCQkJCW1vZGUpOwo+ICsJ CWlndF9hc3NlcnQocmV0ID09IDApOwo+ICsJfSBlbHNlIHsKPiArCQlpZ3RfZGlzcGxheV9jb21t aXQyKGRpc3BsYXksIHMpOwo+ICsJfQo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBjbGVhbnVwX2Ny dGMoZGF0YV90ICpkYXRhLCBpZ3Rfb3V0cHV0X3QgKm91dHB1dCwgaWd0X3BsYW5lX3QgKnBsYW5l KQo+ICt7Cj4gKwlpZ3RfZGlzcGxheV90ICpkaXNwbGF5ID0gJmRhdGEtPmRpc3BsYXk7Cj4gKwo+ ICsJaWd0X3BpcGVfY3JjX2ZyZWUoZGF0YS0+cGlwZV9jcmMpOwo+ICsJZGF0YS0+cGlwZV9jcmMg PSBOVUxMOwo+ICsKPiArCWlmIChkYXRhLT5mYl9pZDEpIHsKPiArCQlpZ3RfcmVtb3ZlX2ZiKGRh dGEtPmRybV9mZCwgJmRhdGEtPmZiMSk7Cj4gKwkJZGF0YS0+ZmJfaWQxID0gMDsKPiArCX0KPiAr CWlmIChkYXRhLT5mYl9pZDIpIHsKPiArCQlpZ3RfcmVtb3ZlX2ZiKGRhdGEtPmRybV9mZCwgJmRh dGEtPmZiMik7Cj4gKwkJZGF0YS0+ZmJfaWQyID0gMDsKPiArCX0KPiArCWlmIChkYXRhLT5mYl9p ZDMpIHsKPiArCQlpZ3RfcmVtb3ZlX2ZiKGRhdGEtPmRybV9mZCwgJmRhdGEtPmZiMyk7Cj4gKwkJ ZGF0YS0+ZmJfaWQzID0gMDsKPiArCX0KPiArCj4gKwlpZiAoZGF0YS0+ZmJfaWQxX252MTIpIHsK PiArCQlpZ3RfcmVtb3ZlX2ZiKGRhdGEtPmRybV9mZCwgJmRhdGEtPmZiMV9udjEyKTsKPiArCQlk YXRhLT5mYl9pZDFfbnYxMiA9IDA7Cj4gKwl9Cj4gKwo+ICsJaWYgKGRhdGEtPmZiX2lkMl9udjEy KSB7Cj4gKwkJaWd0X3JlbW92ZV9mYihkYXRhLT5kcm1fZmQsICZkYXRhLT5mYjJfbnYxMik7Cj4g KwkJZGF0YS0+ZmJfaWQyX252MTIgPSAwOwo+ICsJfQo+ICsKPiArCWlmIChkYXRhLT5mYl9pZDNf bnYxMikgewo+ICsJCWlndF9yZW1vdmVfZmIoZGF0YS0+ZHJtX2ZkLCAmZGF0YS0+ZmIzX252MTIp Owo+ICsJCWRhdGEtPmZiX2lkM19udjEyID0gMDsKPiArCX0KPiArCj4gKwlpZiAoIXBsYW5lLT5p c19wcmltYXJ5KSB7Cj4gKwkJaWd0X3BsYW5lX3QgKnByaW1hcnk7Cj4gKwo+ICsJCXByaW1hcnkg PSBpZ3Rfb3V0cHV0X2dldF9wbGFuZShvdXRwdXQsIElHVF9QTEFORV9QUklNQVJZKTsKPiArCQlp Z3RfcGxhbmVfc2V0X2ZiKHByaW1hcnksIE5VTEwpOwo+ICsJfQo+ICsKPiArCWlndF9wbGFuZV9z ZXRfZmIocGxhbmUsIE5VTEwpOwo+ICsJaWd0X291dHB1dF9zZXRfcGlwZShvdXRwdXQsIFBJUEVf QU5ZKTsKPiArCj4gKwlpZ3RfZGlzcGxheV9jb21taXQyKGRpc3BsYXksIENPTU1JVF9VTklWRVJT QUwpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCB0ZXN0X252MTJfcGxhbmUoZGF0YV90ICpkKQo+ ICt7Cj4gKwlpZ3RfZGlzcGxheV90ICpkaXNwbGF5ID0gJmQtPmRpc3BsYXk7Cj4gKwlpZ3Rfb3V0 cHV0X3QgKm91dHB1dDsKPiArCWVudW0gcGlwZSBwaXBlOwo+ICsJaW50IHZhbGlkX3Rlc3RzID0g MDsKPiArCWludCBpbWdfd2lkdGg7Cj4gKwlpbnQgaW1nX2hlaWdodDsKPiArCj4gKwlpZ3RfcmVx dWlyZShkLT5kaXNwbGF5Lmhhc191bml2ZXJzYWxfcGxhbmVzKTsKPiArCWlndF9yZXF1aXJlKGQt Pm51bV9zY2FsZXJzKTsKPiArCj4gKwlmb3JfZWFjaF9jb25uZWN0ZWRfb3V0cHV0KGRpc3BsYXks IG91dHB1dCkgewo+ICsJCWRybU1vZGVNb2RlSW5mbyAqbW9kZTsKPiArCQltb2RlID0gaWd0X291 dHB1dF9nZXRfbW9kZShvdXRwdXQpOwo+ICsJCXBpcGUgPSBvdXRwdXQtPmNvbmZpZy5waXBlOwo+ ICsKPiArCQlpZ3Rfb3V0cHV0X3NldF9waXBlKG91dHB1dCwgcGlwZSk7Cj4gKwo+ICsJCS8qIGdl dCBwbGFuZXMgKi8KPiArCQlkLT5wbGFuZTEgPSBpZ3Rfb3V0cHV0X2dldF9wbGFuZShvdXRwdXQs IElHVF9QTEFORV9QUklNQVJZKTsKPiArCQlkLT5wbGFuZTIgPSBpZ3Rfb3V0cHV0X2dldF9wbGFu ZShvdXRwdXQsIElHVF9QTEFORV8yKTsKPiArCQlkLT5wbGFuZTMgPSBpZ3Rfb3V0cHV0X2dldF9w bGFuZShvdXRwdXQsIElHVF9QTEFORV8zKTsKPiArCj4gKwkJLyogc2V0IHJlcXVpcmVkIHJvdGF0 aW9uICovCj4gKwkJaWd0X3BsYW5lX3NldF9yb3RhdGlvbihkLT5wbGFuZTEsIGQtPnJvdGF0aW9u KTsKPiArCQlpZ3RfcGxhbmVfc2V0X3JvdGF0aW9uKGQtPnBsYW5lMiwgZC0+cm90YXRpb24pOwo+ ICsJCWlndF9wbGFuZV9zZXRfcm90YXRpb24oZC0+cGxhbmUzLCBkLT5yb3RhdGlvbik7Cj4gKwo+ ICsJCS8qIFNldCB1cCBkaXNwbGF5IHdpdGggcGxhbmUgMSAqLwo+ICsJCXByZXBhcmVfY3J0Yyhk LCBvdXRwdXQsIHBpcGUsIGQtPnBsYW5lMSwgbW9kZSwgQ09NTUlUX0xFR0FDWSk7Cj4gKwo+ICsJ CS8qIGFsbG9jYXRlIGZiMiwgZmIyX252MTIsIGZiMV9udjEyIHdpdGggaW1hZ2Ugc2l6ZSAqLwo+ ICsJCWlndF9nZXRfaW1hZ2Vfc2l6ZShJTUdfRklMRSwgJmltZ193aWR0aCwgJmltZ19oZWlnaHQp Owo+ICsKPiArCQkvKiBmYjIgaXMgaW4gUkdCIGZvcm1hdCAqLwo+ICsJCWQtPmZiX2lkMiA9IGln dF9jcmVhdGVfZmIoZC0+ZHJtX2ZkLAo+ICsJCQkJaW1nX3dpZHRoLCBpbWdfaGVpZ2h0LAo+ICsJ CQkJRFJNX0ZPUk1BVF9YUkdCODg4OCwKPiArCQkJCWQtPnRpbGVkLCAvKiB0aWxlZCAqLwo+ICsJ CQkJJmQtPmZiMik7Cj4gKwkJaWd0X2Fzc2VydChkLT5mYl9pZDIpOwo+ICsKPiArCQkvKiBmYjFf bnYxMiBpcyBpbiBOVjEyIGZvcm1hdCAqLwo+ICsJCWQtPmZiX2lkMV9udjEyID0gaWd0X2NyZWF0 ZV9mYihkLT5kcm1fZmQsCj4gKwkJCQlpbWdfd2lkdGgsIGltZ19oZWlnaHQsCj4gKwkJCQlEUk1f Rk9STUFUX05WMTIsCj4gKwkJCQlkLT50aWxlZCwgLyogdGlsZWQgKi8KPiArCQkJCSZkLT5mYjFf bnYxMik7Cj4gKwkJaWd0X2Fzc2VydChkLT5mYl9pZDFfbnYxMik7Cj4gKwo+ICsJCS8qIGZiMl9u djEyIGlzIGluIE5WMTIgZm9ybWF0ICovCj4gKwkJZC0+ZmJfaWQyX252MTIgPSBpZ3RfY3JlYXRl X2ZiKGQtPmRybV9mZCwKPiArCQkJCWltZ193aWR0aCwgaW1nX2hlaWdodCwKPiArCQkJCURSTV9G T1JNQVRfTlYxMiwKPiArCQkJCWQtPnRpbGVkLAo+ICsJCQkJJmQtPmZiMl9udjEyKTsKPiArCQlp Z3RfYXNzZXJ0KGQtPmZiX2lkMl9udjEyKTsKPiArCj4gKwkJLyogZmIzIGlzIGluIFJHQiAqLwo+ ICsJCWQtPmZiX2lkMyA9IGlndF9jcmVhdGVfZmIoZC0+ZHJtX2ZkLAo+ICsJCQkJbW9kZS0+aGRp c3BsYXksIG1vZGUtPnZkaXNwbGF5LAo+ICsJCQkJRFJNX0ZPUk1BVF9BUkdCODg4OCwKPiArCQkJ CWQtPnRpbGVkLCAvKiB0aWxlZCAqLwo+ICsJCQkJJmQtPmZiMyk7Cj4gKwkJaWd0X2Fzc2VydChk LT5mYl9pZDMpOwo+ICsKPiArCQlpZiAoZC0+Y3JjKSB7Cj4gKwkJCS8qCj4gKwkJCSAqIENSQyB0 ZXN0Ogo+ICsJCQkgKiAxc3QgQ1JDOiBwbGFuZSAxOiBSR0IgRlMsIHBsYW5lIDI6IFJHQiAxOXgx MCAgLS0+IENSQzEKPiArCQkJICogMm5kIENSQzogcGxhbmUgMTogUkdCIEZTLCBwbGFuZSAyOiBO VjEyIDE5eDEwIC0tPiBDUkMyCj4gKwkJCSAqIG1ha2Ugc3VyZSBDUkMxID09IENSQzIKPiArCQkJ ICoKPiArCQkJICogRm9yIENSQ3MgdG8gd29yaywgY2Fubm90IHVzZSBhbnkgaW1hZ2UvZGF0YSBi ZWNhdXNlCj4gKwkJCSAqIGNocm9tZS11cHNhbXBsaW5nIGNhbiBmYWlsIENSQyBjb21wYXJpc29u Lgo+ICsJCQkgKiBUaG91Z2ggaXQgaXMgYSB2ZXJ5IGJhc2ljLCBzb2xpZCBjb2xvciBpcyBleHBl Y3RlZCB0byB3b3JrCj4gKwkJCSAqLwo+ICsJCQlwYWludF9zb2xpZF9jb2xvcihkLCAmZC0+ZmIy LCBkLT5mYjIud2lkdGgsIGQtPmZiMi5oZWlnaHQsCj4gKwkJCQlTT0xJRF9DT0xPUik7Cj4gKwo+ ICsJCQkvKiBTZXR1cCB0byBjYXB0dXJlIENSQzEgd2hlbiBwbGFuZSAyIGlzIGluIFJHQiBtb2Rl ICovCj4gKwkJCWlndF9wbGFuZV9zZXRfZmIoZC0+cGxhbmUyLCAmZC0+ZmIyKTsKPiArCQkJaWd0 X2ZiX3NldF9wb3NpdGlvbigmZC0+ZmIyLCBkLT5wbGFuZTIsIDAsIDApOwo+ICsJCQlpZ3RfZmJf c2V0X3NpemUoJmQtPmZiMiwgZC0+cGxhbmUyLCBkLT5mYjIud2lkdGgsIGQtPmZiMi5oZWlnaHQp Owo+ICsJCQlpZ3RfcGxhbmVfc2V0X3Bvc2l0aW9uKGQtPnBsYW5lMiwgMCwgMCk7Cj4gKwkJCWln dF9wbGFuZV9zZXRfc2l6ZShkLT5wbGFuZTIsIGQtPmZiMi53aWR0aCwgZC0+ZmIyLmhlaWdodCk7 Cj4gKwkJCWlndF9kaXNwbGF5X2NvbW1pdDIoZGlzcGxheSwgQ09NTUlUX1VOSVZFUlNBTCk7Cj4g KwkJCWlndF9waXBlX2NyY19jb2xsZWN0X2NyYyhkLT5waXBlX2NyYywgJmQtPmNyYzEpOwo+ICsK PiArCQkJLyogU2V0dXAgdG8gY2FwdHVyZSBDUkMyIHdoZW4gcGxhbmUgMiBpcyBpbiBOVjEyIG1v ZGUgKi8KPiArCQkJaWd0X2ZiX2NzY194cmdiX3RvX252MTIoZC0+ZHJtX2ZkLCAmZC0+ZmIyX252 MTIsICZkLT5mYjIpOwo+ICsJCQlpZ3RfcGxhbmVfc2V0X2ZiKGQtPnBsYW5lMiwgJmQtPmZiMl9u djEyKTsKPiArCQkJaWd0X2ZiX3NldF9wb3NpdGlvbigmZC0+ZmIyX252MTIsIGQtPnBsYW5lMiwg MCwgMCk7Cj4gKwkJCWlndF9mYl9zZXRfc2l6ZSgmZC0+ZmIyX252MTIsIGQtPnBsYW5lMiwgZC0+ ZmIyX252MTIud2lkdGgsCj4gKwkJCQlkLT5mYjJfbnYxMi5oZWlnaHQpOwo+ICsJCQlpZ3RfcGxh bmVfc2V0X3Bvc2l0aW9uKGQtPnBsYW5lMiwgMCwgMCk7Cj4gKwkJCWlndF9wbGFuZV9zZXRfc2l6 ZShkLT5wbGFuZTIsIGQtPmZiMl9udjEyLndpZHRoLGQtPmZiMl9udjEyLmhlaWdodCk7Cj4gKwkJ CWlndF9kaXNwbGF5X2NvbW1pdDIoZGlzcGxheSwgQ09NTUlUX1VOSVZFUlNBTCk7Cj4gKwkJCWln dF9waXBlX2NyY19jb2xsZWN0X2NyYyhkLT5waXBlX2NyYywgJmQtPmNyYzIpOwo+ICsKPiArCQkJ aWd0X2Fzc2VydF9jcmNfZXF1YWwoJmQtPmNyYzEsICZkLT5jcmMyKTsKPiArCQl9Cj4gKwo+ICsJ CS8qCj4gKwkJICogTm9uLUNSQyB0ZXN0czoKPiArCQkgKiBNaW1pY2luZyBzb21lIG5vdCBleGFj dGx5IGJ1dCBjbG9zZXIgdG8gc29tZSByZWFsIHVzYWdlCj4gKwkJICovCj4gKwo+ICsJCS8qIHNl dCB1cCBkYXRhIGZvciBmYjI6IGJvdGggZmIxX252MTIsIGZiMl9udjEyIHVzZXMgdGhpcyAqLwo+ ICsJCXBhaW50X2ltYWdlKGQsICZkLT5mYjIsIGltZ193aWR0aCwgaW1nX2hlaWdodCk7Cj4gKwo+ ICsJCS8qIHNldCB1cCBkYXRhIGluIGZiMV9udjEyOiBmYjIgUkdCLT4gZmIxX252MTIgKi8KPiAr CQlpZ3RfZmJfY3NjX3hyZ2JfdG9fbnYxMihkLT5kcm1fZmQsICZkLT5mYjFfbnYxMiwgJmQtPmZi Mik7Cj4gKwo+ICsJCS8qIHNldCB1cCBkYXRhIGluIGZiMl9udjEyOiBmYjIgUkdCLT4gZmIyX252 MTIgKi8KPiArCQlpZ3RfZmJfY3NjX3hyZ2JfdG9fbnYxMihkLT5kcm1fZmQsICZkLT5mYjJfbnYx MiwgJmQtPmZiMik7Cj4gKwo+ICsJCS8qIHNldCB1cCBkYXRhIGluIGZiMyAqLwo+ICsJCXBhaW50 X3BhdHRlcm4oZCwgJmQtPmZiMywgZC0+ZmIzLndpZHRoLCBkLT5mYjMuaGVpZ2h0KTsKPiArCj4g KwkJLyogU2V0IHVwIGZiMl9udjEyLT5wbGFuZTIgbWFwcGluZy4gKi8KPiArCQlpZ3RfcGxhbmVf c2V0X2ZiKGQtPnBsYW5lMiwgJmQtPmZiMl9udjEyKTsKPiArCQkvKiAybmQgcGxhbmUgbnYxMiB3 aW5kb3dlZCAtIG5vIHNjYWxpbmcgKi8KPiArCQlpZ3RfZmJfc2V0X3Bvc2l0aW9uKCZkLT5mYjJf bnYxMiwgZC0+cGxhbmUyLCAwLCAwKTsKPiArCQlpZ3RfZmJfc2V0X3NpemUoJmQtPmZiMl9udjEy LCBkLT5wbGFuZTIsIGQtPmZiMl9udjEyLndpZHRoLAo+ICsJCQlkLT5mYjJfbnYxMi5oZWlnaHQp Owo+ICsJCWlndF9wbGFuZV9zZXRfcG9zaXRpb24oZC0+cGxhbmUyLCAwLCAwKTsKPiArCQlpZ3Rf cGxhbmVfc2V0X3NpemUoZC0+cGxhbmUyLCBkLT5mYjJfbnYxMi53aWR0aCwgZC0+ZmIyX252MTIu aGVpZ2h0KTsKPiArCQlpZ3RfZGlzcGxheV9jb21taXQyKGRpc3BsYXksIENPTU1JVF9VTklWRVJT QUwpOwo+ICsKPiArCQkvKiBDaGFuZ2UgcHJpbWFyeSBwbGFuZSB0byBudjEyIGZ1bGwgc2NyZWVu OiBzY2FsaW5nICsgTlYxMiAqLwo+ICsJCWlndF9wbGFuZV9zZXRfZmIoZC0+cGxhbmUxLCAmZC0+ ZmIxX252MTIpOwo+ICsJCWlndF9mYl9zZXRfcG9zaXRpb24oJmQtPmZiMV9udjEyLCBkLT5wbGFu ZTEsIDAsIDApOwo+ICsJCWlndF9mYl9zZXRfc2l6ZSgmZC0+ZmIxX252MTIsIGQtPnBsYW5lMSwg ZC0+ZmIxX252MTIud2lkdGgsCj4gKwkJCWQtPmZiMV9udjEyLmhlaWdodCk7Cj4gKwkJaWd0X3Bs YW5lX3NldF9wb3NpdGlvbihkLT5wbGFuZTEsIDAsIDApOwo+ICsJCWlndF9wbGFuZV9zZXRfc2l6 ZShkLT5wbGFuZTEsIG1vZGUtPmhkaXNwbGF5LCBtb2RlLT52ZGlzcGxheSk7Cj4gKwkJaWd0X2Rp c3BsYXlfY29tbWl0MihkaXNwbGF5LCBDT01NSVRfVU5JVkVSU0FMKTsKPiArCj4gKwkJLyogU2V0 IHVwIGZiMy0+cGxhbmUzIG1hcHBpbmcuICovCj4gKwkJaWd0X3BsYW5lX3NldF9mYihkLT5wbGFu ZTMsICZkLT5mYjMpOwo+ICsKPiArCQkvKiAzcmQgcGxhbmUgZnVsbCBzY3JlZW4gLSBubyBzY2Fs aW5nLiAqLwo+ICsJCWlndF9mYl9zZXRfcG9zaXRpb24oJmQtPmZiMywgZC0+cGxhbmUzLCAwLCAw KTsKPiArCQlpZ3RfZmJfc2V0X3NpemUoJmQtPmZiMywgZC0+cGxhbmUzLCBkLT5mYjMud2lkdGgs IGQtPmZiMy5oZWlnaHQpOwo+ICsJCWlndF9wbGFuZV9zZXRfcG9zaXRpb24oZC0+cGxhbmUzLCAw LCAwKTsKPiArCQlpZ3RfcGxhbmVfc2V0X3NpemUoZC0+cGxhbmUzLCBkLT5mYjMud2lkdGgsIGQt PmZiMy5oZWlnaHQpOwo+ICsJCWlndF9kaXNwbGF5X2NvbW1pdDIoZGlzcGxheSwgQ09NTUlUX1VO SVZFUlNBTCk7Cj4gKwo+ICsJCS8qIDJuZCBwbGFuZSBudjEyIHVwIHNjYWxpbmcgKi8KPiArCQlp Z3RfZmJfc2V0X3Bvc2l0aW9uKCZkLT5mYjJfbnYxMiwgZC0+cGxhbmUyLCAwLCAwKTsKPiArCQlp Z3RfZmJfc2V0X3NpemUoJmQtPmZiMl9udjEyLCBkLT5wbGFuZTIsIGQtPmZiMl9udjEyLndpZHRo LAo+ICsJCQlkLT5mYjJfbnYxMi5oZWlnaHQpOwo+ICsJCWlndF9wbGFuZV9zZXRfcG9zaXRpb24o ZC0+cGxhbmUyLCAxMDAsIDEwMCk7Cj4gKwkJaWd0X3BsYW5lX3NldF9zaXplKGQtPnBsYW5lMiwg bW9kZS0+aGRpc3BsYXktMjAwLCBtb2RlLT52ZGlzcGxheS0yMDApOwo+ICsJCWlndF9kaXNwbGF5 X2NvbW1pdDIoZGlzcGxheSwgQ09NTUlUX1VOSVZFUlNBTCk7Cj4gKwo+ICsJCS8qIDJuZCBwbGFu ZSBudjEyIGRvd24gc2NhbGluZyAqLwo+ICsJCWlndF9mYl9zZXRfcG9zaXRpb24oJmQtPmZiMl9u djEyLCBkLT5wbGFuZTIsIDAsIDApOwo+ICsJCWlndF9mYl9zZXRfc2l6ZSgmZC0+ZmIyX252MTIs IGQtPnBsYW5lMiwgZC0+ZmIyX252MTIud2lkdGgsCj4gKwkJCWQtPmZiMl9udjEyLmhlaWdodCk7 Cj4gKwkJaWd0X3BsYW5lX3NldF9wb3NpdGlvbihkLT5wbGFuZTIsIDEwMjQsIDApOwo+ICsJCWln dF9wbGFuZV9zZXRfc2l6ZShkLT5wbGFuZTIsIGQtPmZiMl9udjEyLndpZHRoICogMi8zLAo+ICsJ CQlkLT5mYjJfbnYxMi5oZWlnaHQgKiAyLzMpOwo+ICsJCWlndF9kaXNwbGF5X2NvbW1pdDIoZGlz cGxheSwgQ09NTUlUX1VOSVZFUlNBTCk7Cj4gKwo+ICsJCS8qIEJhY2sgdG8gc2luZ2xlIHBsYW5l IG1vZGUgIC0gcmdiICYgbm8gc2NhbGluZyAqLwo+ICsJCWlndF9wbGFuZV9zZXRfZmIoZC0+cGxh bmUxLCAmZC0+ZmIxKTsKPiArCQlpZ3RfcGxhbmVfc2V0X2ZiKGQtPnBsYW5lMiwgTlVMTCk7Cj4g KwkJaWd0X3BsYW5lX3NldF9mYihkLT5wbGFuZTMsIE5VTEwpOwo+ICsJCWlndF9mYl9zZXRfcG9z aXRpb24oJmQtPmZiMSwgZC0+cGxhbmUxLCAwLCAwKTsKPiArCQlpZ3RfZmJfc2V0X3NpemUoJmQt PmZiMSwgZC0+cGxhbmUxLCBtb2RlLT5oZGlzcGxheSwgbW9kZS0+dmRpc3BsYXkpOwo+ICsJCWln dF9wbGFuZV9zZXRfcG9zaXRpb24oZC0+cGxhbmUxLCAwLCAwKTsKPiArCQlpZ3RfcGxhbmVfc2V0 X3NpemUoZC0+cGxhbmUxLCBtb2RlLT5oZGlzcGxheSwgbW9kZS0+dmRpc3BsYXkpOwo+ICsJCWln dF9kaXNwbGF5X2NvbW1pdDIoZGlzcGxheSwgQ09NTUlUX1VOSVZFUlNBTCk7Cj4gKwo+ICsJCS8q IHNpbmdsZSBwbGFuZSBtb2RlICAtIHJnYiAmIHNjYWxpbmcgKi8KPiArCQlpZ3RfcGxhbmVfc2V0 X2ZiKGQtPnBsYW5lMSwgJmQtPmZiMSk7Cj4gKwkJaWd0X2ZiX3NldF9wb3NpdGlvbigmZC0+ZmIx LCBkLT5wbGFuZTEsIDAsIDApOwo+ICsJCWlndF9mYl9zZXRfc2l6ZSgmZC0+ZmIxLCBkLT5wbGFu ZTEsIGQtPmZiMS53aWR0aC8yLCBkLT5mYjEuaGVpZ2h0LzIpOwo+ICsJCWlndF9wbGFuZV9zZXRf cG9zaXRpb24oZC0+cGxhbmUxLCAwLCAwKTsKPiArCQlpZ3RfcGxhbmVfc2V0X3NpemUoZC0+cGxh bmUxLCBtb2RlLT5oZGlzcGxheSwgbW9kZS0+dmRpc3BsYXkpOwo+ICsJCWlndF9kaXNwbGF5X2Nv bW1pdDIoZGlzcGxheSwgQ09NTUlUX1VOSVZFUlNBTCk7Cj4gKwo+ICsJCS8qIHNpbmdsZSBwbGFu ZSBtb2RlICAtIG52MTIgJiBzY2FsaW5nICovCj4gKwkJaWd0X3BsYW5lX3NldF9mYihkLT5wbGFu ZTEsICZkLT5mYjFfbnYxMik7Cj4gKwkJaWd0X2ZiX3NldF9wb3NpdGlvbigmZC0+ZmIxX252MTIs IGQtPnBsYW5lMSwgMCwgMCk7Cj4gKwkJaWd0X2ZiX3NldF9zaXplKCZkLT5mYjFfbnYxMiwgZC0+ cGxhbmUxLCBkLT5mYjFfbnYxMi53aWR0aCwKPiArCQkJZC0+ZmIxX252MTIuaGVpZ2h0KTsKPiAr CQlpZ3RfcGxhbmVfc2V0X3Bvc2l0aW9uKGQtPnBsYW5lMSwgMCwgMCk7Cj4gKwkJaWd0X3BsYW5l X3NldF9zaXplKGQtPnBsYW5lMSwgbW9kZS0+aGRpc3BsYXksIG1vZGUtPnZkaXNwbGF5KTsKPiAr CQlpZ3RfZGlzcGxheV9jb21taXQyKGRpc3BsYXksIENPTU1JVF9VTklWRVJTQUwpOwo+ICsKPiAr CQl2YWxpZF90ZXN0cysrOwo+ICsKPiArCQljbGVhbnVwX2NydGMoZCwgb3V0cHV0LCBkLT5wbGFu ZTEpOwo+ICsJfQo+ICsJaWd0X3JlcXVpcmVfZih2YWxpZF90ZXN0cywgIm5vIHZhbGlkIGNydGMv Y29ubmVjdG9yIGNvbWJpbmF0aW9ucyBmb3VuZFxuIik7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lk IHRlc3RfbnYxMl91bnN1cHBvcnRlZF9wbGFuZShkYXRhX3QgKmQpCj4gK3sKPiArCWlndF9kaXNw bGF5X3QgKmRpc3BsYXkgPSAmZC0+ZGlzcGxheTsKPiArCWlndF9vdXRwdXRfdCAqb3V0cHV0Owo+ ICsJZW51bSBwaXBlIHBpcGU7Cj4gKwlpbnQgdmFsaWRfdGVzdHMgPSAwOwo+ICsKPiArCWlndF9y ZXF1aXJlKGQtPmRpc3BsYXkuaGFzX3VuaXZlcnNhbF9wbGFuZXMpOwo+ICsJaWd0X3JlcXVpcmUo ZC0+bnVtX3NjYWxlcnMpOwo+ICsKPiArCWZvcl9lYWNoX2Nvbm5lY3RlZF9vdXRwdXQoZGlzcGxh eSwgb3V0cHV0KSB7Cj4gKwkJZHJtTW9kZU1vZGVJbmZvICptb2RlOwo+ICsJCW1vZGUgPSBpZ3Rf b3V0cHV0X2dldF9tb2RlKG91dHB1dCk7Cj4gKwkJcGlwZSA9IG91dHB1dC0+Y29uZmlnLnBpcGU7 Cj4gKwo+ICsJCWlndF9vdXRwdXRfc2V0X3BpcGUob3V0cHV0LCBwaXBlKTsKPiArCj4gKwkJLyog U2V0IHVwIGRpc3BsYXkgd2l0aCBwbGFuZSAxICovCj4gKwkJZC0+cGxhbmUxID0gaWd0X291dHB1 dF9nZXRfcGxhbmUob3V0cHV0LCBJR1RfUExBTkVfUFJJTUFSWSk7Cj4gKwkJcHJlcGFyZV9jcnRj KGQsIG91dHB1dCwgcGlwZSwgZC0+cGxhbmUxLCBtb2RlLCBDT01NSVRfTEVHQUNZKTsKPiArCj4g KwkJZC0+ZmJfaWQzX252MTIgPSBpZ3RfY3JlYXRlX2ZiKGQtPmRybV9mZCwKPiArCQkJCTE5MjAs IDEwODAsCj4gKwkJCQlEUk1fRk9STUFUX05WMTIsCj4gKwkJCQlkLT50aWxlZCwKPiArCQkJCSZk LT5mYjNfbnYxMik7Cj4gKwkJaWd0X2Fzc2VydChkLT5mYl9pZDNfbnYxMik7Cj4gKwo+ICsJCS8q IFNldCB1cCBmYjNfbnYxMi0+cGxhbmUzIG1hcHBpbmcuICovCj4gKwkJZC0+cGxhbmUyID0gaWd0 X291dHB1dF9nZXRfcGxhbmUob3V0cHV0LCBJR1RfUExBTkVfMyk7Cj4gKwkJaWd0X3BsYW5lX3Nl dF9mYihkLT5wbGFuZTMsICZkLT5mYjNfbnYxMik7Cj4gKwo+ICsJCS8qIDNyZCBwbGFuZSBudjEy IHdpbmRvd2VkIC0gbm8gc2NhbGluZyAqLwo+ICsJCWlndF9mYl9zZXRfcG9zaXRpb24oJmQtPmZi M19udjEyLCBkLT5wbGFuZTMsIDAsIDApOwo+ICsJCWlndF9mYl9zZXRfc2l6ZSgmZC0+ZmIzX252 MTIsIGQtPnBsYW5lMywgZC0+ZmIzX252MTIud2lkdGgsCj4gKwkJCWQtPmZiM19udjEyLmhlaWdo dCk7Cj4gKwkJaWd0X3BsYW5lX3NldF9wb3NpdGlvbihkLT5wbGFuZTMsIDAsIDApOwo+ICsJCWln dF9wbGFuZV9zZXRfc2l6ZShkLT5wbGFuZTMsIGQtPmZiM19udjEyLndpZHRoLCBkLT5mYjNfbnYx Mi5oZWlnaHQpOwo+ICsKPiArCQkvKiBTaG91bGQgZmFpbCBiZWNhdXNlIE5WMTIgaXMgbm90IHN1 cHBvcnRlZCBvbiBwbGFuZSAzICovCj4gKwkJaWd0X2Fzc2VydChpZ3RfZGlzcGxheV90cnlfY29t bWl0MihkaXNwbGF5LCBDT01NSVRfVU5JVkVSU0FMKQo+ICsJCQk9PSAtRUlOVkFMKTsKPiArCj4g KwkJdmFsaWRfdGVzdHMrKzsKPiArCj4gKwkJaWd0X3BsYW5lX3NldF9mYihkLT5wbGFuZTMsIE5V TEwpOwo+ICsJCWNsZWFudXBfY3J0YyhkLCBvdXRwdXQsIGQtPnBsYW5lMSk7Cj4gKwl9Cj4gKwlp Z3RfcmVxdWlyZV9mKHZhbGlkX3Rlc3RzLCAibm8gdmFsaWQgY3J0Yy9jb25uZWN0b3IgY29tYmlu YXRpb25zIGZvdW5kXG4iKTsKPiArfQo+ICsKPiAraWd0X21haW4KPiArewo+ICsJZGF0YV90IGRh dGEgPSB7fTsKPiArCj4gKwlpZ3Rfc2tpcF9vbl9zaW11bGF0aW9uKCk7Cj4gKwo+ICsJaWd0X2Zp eHR1cmUgewo+ICsJCWRhdGEuZHJtX2ZkID0gZHJtX29wZW5fYW55KCk7Cj4gKwo+ICsJCWttc3Rl c3Rfc2V0X3Z0X2dyYXBoaWNzX21vZGUoKTsKPiArCj4gKwkJaWd0X3JlcXVpcmVfcGlwZV9jcmMo KTsKPiArCj4gKwkJaWd0X2Rpc3BsYXlfaW5pdCgmZGF0YS5kaXNwbGF5LCBkYXRhLmRybV9mZCk7 Cj4gKwl9Cj4gKwlkZXZpZCA9IGludGVsX2dldF9kcm1fZGV2aWQoZGF0YS5kcm1fZmQpOwo+ICsK PiArCWRhdGEubnVtX3NjYWxlcnMgPSBpbnRlbF9nZW4oZGV2aWQpID49IDkgPyAyIDogMDsKPiAr Cj4gKwlkYXRhLmNyYyA9IDE7Cj4gKwlkYXRhLnJvdGF0aW9uID0gSUdUX1JPVEFUSU9OXzA7Cj4g KwlpZ3Rfc3VidGVzdF9mKCJudjEyLXBsYW5lLWxpbmVhciIpIHsKPiArCQlkYXRhLnRpbGVkID0g TE9DQUxfRFJNX0ZPUk1BVF9NT0RfTk9ORTsKPiArCQl0ZXN0X252MTJfcGxhbmUoJmRhdGEpOwo+ ICsJfQo+ICsJaWd0X3N1YnRlc3RfZigibnYxMi1wbGFuZS10aWxlLXgiKSB7Cj4gKwkJZGF0YS50 aWxlZCA9IExPQ0FMX0k5MTVfRk9STUFUX01PRF9YX1RJTEVEOwo+ICsJCXRlc3RfbnYxMl9wbGFu ZSgmZGF0YSk7Cj4gKwl9Cj4gKwlpZ3Rfc3VidGVzdF9mKCJudjEyLXBsYW5lLXRpbGUteSIpIHsK PiArCQlkYXRhLnRpbGVkID0gTE9DQUxfSTkxNV9GT1JNQVRfTU9EX1lfVElMRUQ7Cj4gKwkJdGVz dF9udjEyX3BsYW5lKCZkYXRhKTsKPiArCX0KPiArCWlndF9zdWJ0ZXN0X2YoIm52MTItcGxhbmUt dGlsZS15ZiIpIHsKPiArCQlkYXRhLnRpbGVkID0gTE9DQUxfSTkxNV9GT1JNQVRfTU9EX1lmX1RJ TEVEOwo+ICsJCXRlc3RfbnYxMl9wbGFuZSgmZGF0YSk7Cj4gKwl9Cj4gKwo+ICsJZGF0YS5yb3Rh dGlvbiA9IElHVF9ST1RBVElPTl8xODA7Cj4gKwlpZ3Rfc3VidGVzdF9mKCJudjEyLXBsYW5lLWxp bmVhci1yb3QtMTgwIikgewo+ICsJCWRhdGEudGlsZWQgPSBMT0NBTF9EUk1fRk9STUFUX01PRF9O T05FOwo+ICsJCXRlc3RfbnYxMl9wbGFuZSgmZGF0YSk7Cj4gKwl9Cj4gKwlpZ3Rfc3VidGVzdF9m KCJudjEyLXBsYW5lLXRpbGUteC1yb3QtMTgwIikgewo+ICsJCWRhdGEudGlsZWQgPSBMT0NBTF9J OTE1X0ZPUk1BVF9NT0RfWF9USUxFRDsKPiArCQl0ZXN0X252MTJfcGxhbmUoJmRhdGEpOwo+ICsJ fQo+ICsJaWd0X3N1YnRlc3RfZigibnYxMi1wbGFuZS10aWxlLXktcm90LTE4MCIpIHsKPiArCQlk YXRhLnRpbGVkID0gTE9DQUxfSTkxNV9GT1JNQVRfTU9EX1lfVElMRUQ7Cj4gKwkJdGVzdF9udjEy X3BsYW5lKCZkYXRhKTsKPiArCX0KPiArCWlndF9zdWJ0ZXN0X2YoIm52MTItcGxhbmUtdGlsZS15 Zi1yb3QtMTgwIikgewo+ICsJCWRhdGEudGlsZWQgPSBMT0NBTF9JOTE1X0ZPUk1BVF9NT0RfWWZf VElMRUQ7Cj4gKwkJdGVzdF9udjEyX3BsYW5lKCZkYXRhKTsKPiArCX0KPiArCj4gKwlpZ3Rfc3Vi dGVzdF9mKCJudjEyLW9uLXVuc3VwcG9ydGVkLXBsYW5lIikgewo+ICsJCWRhdGEudGlsZWQgPSBM T0NBTF9EUk1fRk9STUFUX01PRF9OT05FOwo+ICsJCXRlc3RfbnYxMl91bnN1cHBvcnRlZF9wbGFu ZSgmZGF0YSk7Cj4gKwl9Cj4gKwo+ICsJaWd0X2ZpeHR1cmUgewo+ICsJCWlndF9kaXNwbGF5X2Zp bmkoJmRhdGEuZGlzcGxheSk7Cj4gKwl9Cj4gK30KPiAtLSAKPiAxLjkuMQo+IAo+IF9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gSW50ZWwtZ2Z4IG1haWxp bmcgbGlzdAo+IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiBodHRwOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4CgotLSAKRGFuaWVsIFZl dHRlcgpTb2Z0d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24KaHR0cDovL2Jsb2cuZmZ3 bGwuY2gKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50 ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK