From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 13/15] drm/i915/tv: Generate better pipe timings for TV encoder Date: Tue, 22 Jan 2019 19:34:55 +0200 Message-ID: <20190122173455.GY20097@intel.com> References: <20181112170000.27531-1-ville.syrjala@linux.intel.com> <20181112170000.27531-15-ville.syrjala@linux.intel.com> <20190122172224.GP5527@ideak-desk.fi.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: <20190122172224.GP5527@ideak-desk.fi.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Imre Deak Cc: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gVHVlLCBKYW4gMjIsIDIwMTkgYXQgMDc6MjI6MjRQTSArMDIwMCwgSW1yZSBEZWFrIHdyb3Rl Ogo+IE9uIE1vbiwgTm92IDEyLCAyMDE4IGF0IDA2OjU5OjU4UE0gKzAyMDAsIFZpbGxlIFN5cmph bGEgd3JvdGU6Cj4gPiBGcm9tOiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXgu aW50ZWwuY29tPgo+ID4gCj4gPiBUbyBtYWtlIHZibGFuayB0aW1lc3RhbXBzIHdvcmsgYmV0dGVy IHdpdGggdGhlIFRWIGVuY29kZXIgbGV0J3MKPiA+IHNjYWxlIHRoZSBwaXBlIHRpbWluZ3Mgc3Vj aCB0aGF0IHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGUKPiA+IFRWIGFjdGl2ZSBhbmQgVFYg YmxhbmtpbmcgcGVyaW9kcyBpcyBtaXJyb3JlZCBpbiB0aGUKPiA+IGNvcnJlc3BvbmRpbmcgcGlw ZSB0aW1pbmdzLgo+ID4gCj4gPiBOb3RlIHRoYXQgaW4gcmVhbGl0eSB0aGUgcGlwZSBydW5zIGF0 IGEgZmFzdGVyIHNwZWVkIGR1cmluZyB0aGUKPiA+IFRWIHZibGFuaywgYW5kIGNvcnJlc3BvbmRp Z2x5IHRoZXJlIGFyZSBwZXJpb2RzIHdoZW4gdGhlIHBpcGUKPiA+IGlzIGVuaXRyZWx5IHN0b3Bw ZWQuIFdlIHByZXRlbmQgdGhhdCB0aGlzIGlzbid0IHRoZSBjYXNlIGFuZAo+ID4gYXMgc3VjaCB3 ZSBpbmN1ciBzb21lIGVycm9yIGluIHRoZSB2YmxhbmsgdGltZXN0YW1wcyBkdXJpbmcKPiA+IHRo ZSBUViB2YmxhbmsuIEZ1cnRoZXIgZXhwbGFuYXRpb24gb2YgdGhlIGlzc3VlcyBpbiBhIGJpZwo+ ID4gY29tbWVudCBpbiB0aGUgY29kZS4KPiA+IAo+ID4gVGhpcyBtYWtlcyB0aGUgdmJsYW5rIHRp bWVzdGFtcHMgZ29vZCBlbm91Z2ggdG8gbWFrZQo+ID4gaTk2NWdtICh3aGljaCBkb2Vzbid0IGhh dmUgYSB3b3JraW5nIGZyYW1lIGNvdW50ZXIgd2l0aAo+ID4gdGhlIFRWIGVuY29kZXIpIHJlcG9y dCBjb3JyZWN0IGZyYW1lIG51bWJlcnMuIFByZXZpb3VzbHkKPiA+IHlvdSBjb3VsZCBnZXQgYWxs IGtpbmRzIG9mIG5vbnNlbnNlIHdoaWNoIHJlc3VsdGVkIGluCj4gPiBlZy4gZ2x4Z2VhcnMgcmVw b3J0aW5nIHRoYXQgaXQncyBydW5uaW5nIGF0IHR3aWNlIHRoZQo+ID4gYWN0dWFsIGZyYW1lcmF0 ZSBpbiBtb3N0IGNhc2VzLgo+ID4gCj4gPiBTaWduZWQtb2ZmLWJ5OiBWaWxsZSBTeXJqw6Rsw6Qg PHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgo+ID4gLS0tCj4gPiAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9yZWcuaCB8ICAgMSArCj4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfdHYuYyB8IDMyMiArKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLQo+ID4gIDIgZmls ZXMgY2hhbmdlZCwgMjc4IGluc2VydGlvbnMoKyksIDQ1IGRlbGV0aW9ucygtKQo+ID4gCj4gPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfcmVnLmgKPiA+IGluZGV4IGZlNGI5MTNlNDZhYy4uMTA4MTNhZTdiZWU3 IDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+ID4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+ID4gQEAgLTQ4NDgsNiArNDg0OCw3 IEBAIGVudW0gewo+ID4gICMgZGVmaW5lIFRWX09WRVJTQU1QTEVfTk9ORQkJKDIgPDwgMTgpCj4g PiAgLyogU2VsZWN0cyA4eCBvdmVyc2FtcGxpbmcgKi8KPiA+ICAjIGRlZmluZSBUVl9PVkVSU0FN UExFXzhYCQkoMyA8PCAxOCkKPiA+ICsjIGRlZmluZSBUVl9PVkVSU0FNUExFX01BU0sJCSgzIDw8 IDE4KQo+ID4gIC8qIFNlbGVjdHMgcHJvZ3Jlc3NpdmUgbW9kZSByYXRoZXIgdGhhbiBpbnRlcmxh Y2VkICovCj4gPiAgIyBkZWZpbmUgVFZfUFJPR1JFU1NJVkUJCQkoMSA8PCAxNykKPiA+ICAvKiBT ZXRzIHRoZSBjb2xvcmJ1cnN0IHRvIFBBTCBtb2RlLiAgUmVxdWlyZWQgZm9yIG5vbi1NIFBBTCBt b2Rlcy4gKi8KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF90di5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdHYuYwo+ID4gaW5kZXggMjE2NTI1ZGQxNDRh Li43NTEyNmZjZTY1NWQgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF90di5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF90di5jCj4gPiBAQCAt MzQwLDcgKzM0MCw2IEBAIHN0cnVjdCB0dl9tb2RlIHsKPiA+ICAJY29uc3Qgc3RydWN0IHZpZGVv X2xldmVscyAqY29tcG9zaXRlX2xldmVscywgKnN2aWRlb19sZXZlbHM7Cj4gPiAgCWNvbnN0IHN0 cnVjdCBjb2xvcl9jb252ZXJzaW9uICpjb21wb3NpdGVfY29sb3IsICpzdmlkZW9fY29sb3I7Cj4g PiAgCWNvbnN0IHUzMiAqZmlsdGVyX3RhYmxlOwo+ID4gLQl1MTYgbWF4X3NyY3c7Cj4gPiAgfTsK PiA+ICAKPiA+ICAKPiA+IEBAIC03MjksNyArNzI4LDYgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCB0 dl9tb2RlIHR2X21vZGVzW10gPSB7Cj4gPiAgCQkuYnVyc3RfZW5hICAgICAgPSBmYWxzZSwKPiA+ ICAKPiA+ICAJCS5maWx0ZXJfdGFibGUgPSBmaWx0ZXJfdGFibGUsCj4gPiAtCQkubWF4X3NyY3cg PSA4MDAKPiA+ICAJfSwKPiA+ICAJewo+ID4gIAkJLm5hbWUgICAgICAgPSAiMTA4MGlANTBIeiIs Cj4gPiBAQCAtOTQ3LDEzICs5NDUsMTgzIEBAIGludGVsX3R2X21vZGVfdmRpc3BsYXkoY29uc3Qg c3RydWN0IHR2X21vZGUgKnR2X21vZGUpCj4gPiAgCQlyZXR1cm4gMiAqICh0dl9tb2RlLT5uYnJf ZW5kICsgMSk7Cj4gPiAgfQo+ID4gIAo+ID4gK3N0YXRpYyB2b2lkCj4gPiAraW50ZWxfdHZfbW9k ZV90b19tb2RlKHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlLAo+ID4gKwkJICAgICAgY29u c3Qgc3RydWN0IHR2X21vZGUgKnR2X21vZGUpCj4gPiArewo+ID4gKwltb2RlLT5jbG9jayA9IHR2 X21vZGUtPmNsb2NrIC8KPiA+ICsJCSh0dl9tb2RlLT5vdmVyc2FtcGxlID4+ICF0dl9tb2RlLT5w cm9ncmVzc2l2ZSk7Cj4gPiArCj4gPiArCS8qCj4gPiArCSAqIHR2X21vZGUgaG9yaXpvbnRhbCB0 aW1pbmdzOgo+ID4gKwkgKgo+ID4gKwkgKiBoc3luY19lbmQKPiA+ICsJICogICAgfCBoYmxhbmtf ZW5kCj4gPiArCSAqICAgIHwgICAgfCBoYmxhbmtfc3RhcnQKPiA+ICsJICogICAgfCAgICB8ICAg ICAgIHwgaHRvdGFsCj4gPiArCSAqICAgIHwgICAgIF9fX19fX18gICAgfAo+ID4gKwkgKiAgICAg X19fXy8gICAgICAgXF9fXwo+ID4gKwkgKiBcX18vICAgICAgICAgICAgICAgIFwKPiA+ICsJICov Cj4gPiArCW1vZGUtPmhkaXNwbGF5ID0KPiA+ICsJCXR2X21vZGUtPmhibGFua19zdGFydCAtIHR2 X21vZGUtPmhibGFua19lbmQ7Cj4gPiArCW1vZGUtPmhzeW5jX3N0YXJ0ID0gbW9kZS0+aGRpc3Bs YXkgKwo+ID4gKwkJdHZfbW9kZS0+aHRvdGFsIC0gdHZfbW9kZS0+aGJsYW5rX3N0YXJ0Owo+ID4g Kwltb2RlLT5oc3luY19lbmQgPSBtb2RlLT5oc3luY19zdGFydCArCj4gPiArCQl0dl9tb2RlLT5o c3luY19lbmQ7Cj4gPiArCW1vZGUtPmh0b3RhbCA9IHR2X21vZGUtPmh0b3RhbCArIDE7Cj4gPiAr Cj4gPiArCS8qCj4gPiArCSAqIHR2X21vZGUgdmVydGljYWwgdGltaW5nczoKPiA+ICsJICoKPiA+ ICsJICogdnN5bmNfc3RhcnQKPiA+ICsJICogICAgfCB2c3luY19lbmQKPiA+ICsJICogICAgfCAg fCB2aV9lbmQgbmJyX2VuZAo+ID4gKwkgKiAgICB8ICB8ICAgIHwgICAgICAgfAo+ID4gKwkgKiAg ICB8ICB8ICAgICBfX19fX19fCj4gPiArCSAqIFxfXyAgICBfX19fLyAgICAgICBcCj4gPiArCSAq ICAgIFxfXy8KPiA+ICsJICovCj4gPiArCW1vZGUtPnZkaXNwbGF5ID0gaW50ZWxfdHZfbW9kZV92 ZGlzcGxheSh0dl9tb2RlKTsKPiA+ICsJaWYgKHR2X21vZGUtPnByb2dyZXNzaXZlKSB7Cj4gPiAr CQltb2RlLT52c3luY19zdGFydCA9IG1vZGUtPnZkaXNwbGF5ICsKPiA+ICsJCQl0dl9tb2RlLT52 c3luY19zdGFydF9mMSArIDE7Cj4gPiArCQltb2RlLT52c3luY19lbmQgPSBtb2RlLT52c3luY19z dGFydCArCj4gPiArCQkJdHZfbW9kZS0+dnN5bmNfbGVuOwo+ID4gKwkJbW9kZS0+dnRvdGFsID0g bW9kZS0+dmRpc3BsYXkgKwo+ID4gKwkJCXR2X21vZGUtPnZpX2VuZF9mMSArIDE7Cj4gPiArCX0g ZWxzZSB7Cj4gPiArCQltb2RlLT52c3luY19zdGFydCA9IG1vZGUtPnZkaXNwbGF5ICsKPiA+ICsJ CQl0dl9tb2RlLT52c3luY19zdGFydF9mMSArIDEgKwo+ID4gKwkJCXR2X21vZGUtPnZzeW5jX3N0 YXJ0X2YyICsgMTsKPiA+ICsJCW1vZGUtPnZzeW5jX2VuZCA9IG1vZGUtPnZzeW5jX3N0YXJ0ICsK PiA+ICsJCQkyICogdHZfbW9kZS0+dnN5bmNfbGVuOwo+ID4gKwkJbW9kZS0+dnRvdGFsID0gbW9k ZS0+dmRpc3BsYXkgKwo+ID4gKwkJCXR2X21vZGUtPnZpX2VuZF9mMSArIDEgKwo+ID4gKwkJCXR2 X21vZGUtPnZpX2VuZF9mMiArIDE7Cj4gPiArCX0KPiA+ICsKPiA+ICsJLyogVFYgaGFzIGl0J3Mg b3duIG5vdGlvbiBvZiBzeW5jIGFuZCBvdGhlciBtb2RlIGZsYWdzLCBzbyBjbGVhciB0aGVtLiAq Lwo+ID4gKwltb2RlLT5mbGFncyA9IDA7Cj4gPiArCj4gPiArCW1vZGUtPnZyZWZyZXNoID0gMDsK PiAKPiBSZWR1bmRhbnQgbGluZS4KCmRybV9tb2RlX3ZyZWZyZXNoKCkgd29uJ3QgcmVjb21wdXRl IHRoZSB2YWx1ZSBpZiBpdCdzIGFscmVhZHkKc2V0LiBTbyB1bmxlc3Mgd2UgY2xlYXIgaXQgZmly c3QgdGhpcyB3b3VsZCBlZmZlY3RpdmVseSBiZWNvbWUKJ21vZGUtPnZyZWZyZXNoID0gbW9kZS0+ dnJlZnJlc2gnLgoKVGhlIHdob2xlIG1vZGUtPnZyZWZlc2ggc3RvcnkgaXMgYSBiaXQgc2FkLCBh bmQgc29tZW9uZSBzaG91bGQKcmVhbGx5IHJld29yayBob3cgaXQgYWxsIHdvcmtzLgoKPiAKPiA+ ICsJbW9kZS0+dnJlZnJlc2ggPSBkcm1fbW9kZV92cmVmcmVzaChtb2RlKTsKPiA+ICsKPiA+ICsJ c25wcmludGYobW9kZS0+bmFtZSwgc2l6ZW9mKG1vZGUtPm5hbWUpLAo+ID4gKwkJICIlZHglZCVj ICglcykiLAo+ID4gKwkJIG1vZGUtPmhkaXNwbGF5LCBtb2RlLT52ZGlzcGxheSwKPiA+ICsJCSB0 dl9tb2RlLT5wcm9ncmVzc2l2ZSA/ICdwJyA6ICdpJywKPiA+ICsJCSB0dl9tb2RlLT5uYW1lKTsK PiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIHZvaWQgaW50ZWxfdHZfc2NhbGVfbW9kZV9ob3Jpeihz dHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSwKPiA+ICsJCQkJICAgICAgaW50IGhkaXNwbGF5 LCBpbnQgbGVmdF9tYXJnaW4sCj4gPiArCQkJCSAgICAgIGludCByaWdodF9tYXJnaW4pCj4gPiAr ewo+ID4gKwlpbnQgaHN5bmNfc3RhcnQgPSBtb2RlLT5oc3luY19zdGFydCAtIG1vZGUtPmhkaXNw bGF5ICsgcmlnaHRfbWFyZ2luOwo+ID4gKwlpbnQgaHN5bmNfZW5kID0gbW9kZS0+aHN5bmNfZW5k IC0gbW9kZS0+aGRpc3BsYXkgKyByaWdodF9tYXJnaW47Cj4gPiArCWludCBuZXdfaHRvdGFsID0g bW9kZS0+aHRvdGFsICogaGRpc3BsYXkgLwo+ID4gKwkJKG1vZGUtPmhkaXNwbGF5IC0gbGVmdF9t YXJnaW4gLSByaWdodF9tYXJnaW4pOwo+ID4gKwo+ID4gKwltb2RlLT5jbG9jayA9IG1vZGUtPmNs b2NrICogbmV3X2h0b3RhbCAvIG1vZGUtPmh0b3RhbDsKPiA+ICsKPiA+ICsJbW9kZS0+aGRpc3Bs YXkgPSBoZGlzcGxheTsKPiA+ICsJbW9kZS0+aHN5bmNfc3RhcnQgPSBoZGlzcGxheSArIGhzeW5j X3N0YXJ0ICogbmV3X2h0b3RhbCAvIG1vZGUtPmh0b3RhbDsKPiA+ICsJbW9kZS0+aHN5bmNfZW5k ID0gaGRpc3BsYXkgKyBoc3luY19lbmQgKiBuZXdfaHRvdGFsIC8gbW9kZS0+aHRvdGFsOwo+ID4g Kwltb2RlLT5odG90YWwgPSBuZXdfaHRvdGFsOwo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgdm9p ZCBpbnRlbF90dl9zY2FsZV9tb2RlX3ZlcnQoc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUs Cj4gPiArCQkJCSAgICAgaW50IHZkaXNwbGF5LCBpbnQgdG9wX21hcmdpbiwKPiA+ICsJCQkJICAg ICBpbnQgYm90dG9tX21hcmdpbikKPiA+ICt7Cj4gPiArCWludCB2c3luY19zdGFydCA9IG1vZGUt PnZzeW5jX3N0YXJ0IC0gbW9kZS0+dmRpc3BsYXkgKyBib3R0b21fbWFyZ2luOwo+ID4gKwlpbnQg dnN5bmNfZW5kID0gbW9kZS0+dnN5bmNfZW5kIC0gbW9kZS0+dmRpc3BsYXkgKyBib3R0b21fbWFy Z2luOwo+ID4gKwlpbnQgbmV3X3Z0b3RhbCA9IG1vZGUtPnZ0b3RhbCAqIHZkaXNwbGF5IC8KPiA+ ICsJCShtb2RlLT52ZGlzcGxheSAtIHRvcF9tYXJnaW4gLSBib3R0b21fbWFyZ2luKTsKPiA+ICsK PiA+ICsJbW9kZS0+Y2xvY2sgPSBtb2RlLT5jbG9jayAqIG5ld192dG90YWwgLyBtb2RlLT52dG90 YWw7Cj4gPiArCj4gPiArCW1vZGUtPnZkaXNwbGF5ID0gdmRpc3BsYXk7Cj4gPiArCW1vZGUtPnZz eW5jX3N0YXJ0ID0gdmRpc3BsYXkgKyB2c3luY19zdGFydCAqIG5ld192dG90YWwgLyBtb2RlLT52 dG90YWw7Cj4gPiArCW1vZGUtPnZzeW5jX2VuZCA9IHZkaXNwbGF5ICsgdnN5bmNfZW5kICogbmV3 X3Z0b3RhbCAvIG1vZGUtPnZ0b3RhbDsKPiA+ICsJbW9kZS0+dnRvdGFsID0gbmV3X3Z0b3RhbDsK PiA+ICt9Cj4gPiArCj4gPiAgc3RhdGljIHZvaWQKPiA+ICBpbnRlbF90dl9nZXRfY29uZmlnKHN0 cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ID4gIAkJICAgIHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpwaXBlX2NvbmZpZykKPiA+ICB7Cj4gPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5kZXYpOwo+ID4gKwlzdHJ1Y3QgZHJt X2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9Cj4gPiArCQkmcGlwZV9jb25maWctPmJhc2Uu YWRqdXN0ZWRfbW9kZTsKPiA+ICsJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgbW9kZSA9IHt9Owo+ ID4gKwl1MzIgdHZfY3RsLCBoY3RsMSwgaGN0bDMsIHZjdGwxLCB2Y3RsMiwgdG1wOwo+ID4gKwlz dHJ1Y3QgdHZfbW9kZSB0dl9tb2RlID0ge307Cj4gPiArCWludCBoZGlzcGxheSA9IGFkanVzdGVk X21vZGUtPmNydGNfaGRpc3BsYXk7Cj4gPiArCWludCB2ZGlzcGxheSA9IGFkanVzdGVkX21vZGUt PmNydGNfdmRpc3BsYXk7Cj4gPiArCWludCB4c2l6ZSwgeXNpemUsIHhwb3MsIHlwb3M7Cj4gPiAr Cj4gPiAgCXBpcGVfY29uZmlnLT5vdXRwdXRfdHlwZXMgfD0gQklUKElOVEVMX09VVFBVVF9UVk9V VCk7Cj4gPiAgCj4gPiAtCXBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGUuY3J0Y19jbG9j ayA9IHBpcGVfY29uZmlnLT5wb3J0X2Nsb2NrOwo+ID4gKwl0dl9jdGwgPSBJOTE1X1JFQUQoVFZf Q1RMKTsKPiA+ICsJaGN0bDEgPSBJOTE1X1JFQUQoVFZfSF9DVExfMSk7Cj4gPiArCWhjdGwzID0g STkxNV9SRUFEKFRWX0hfQ1RMXzMpOwo+ID4gKwl2Y3RsMSA9IEk5MTVfUkVBRChUVl9WX0NUTF8x KTsKPiA+ICsJdmN0bDIgPSBJOTE1X1JFQUQoVFZfVl9DVExfMik7Cj4gPiArCj4gPiArCXR2X21v ZGUuaHRvdGFsID0gKGhjdGwxICYgVFZfSFRPVEFMX01BU0spID4+IFRWX0hUT1RBTF9TSElGVDsK PiA+ICsJdHZfbW9kZS5oc3luY19lbmQgPSAoaGN0bDEgJiBUVl9IU1lOQ19FTkRfTUFTSykgPj4g VFZfSFNZTkNfRU5EX1NISUZUOwo+ID4gKwo+ID4gKwl0dl9tb2RlLmhibGFua19zdGFydCA9ICho Y3RsMyAmIFRWX0hCTEFOS19TVEFSVF9NQVNLKSA+PiBUVl9IQkxBTktfU1RBUlRfU0hJRlQ7Cj4g PiArCXR2X21vZGUuaGJsYW5rX2VuZCA9IChoY3RsMyAmIFRWX0hTWU5DX0VORF9NQVNLKSA+PiBU Vl9IQkxBTktfRU5EX1NISUZUOwo+ID4gKwo+ID4gKwl0dl9tb2RlLm5icl9lbmQgPSAodmN0bDEg JiBUVl9OQlJfRU5EX01BU0spID4+IFRWX05CUl9FTkRfU0hJRlQ7Cj4gPiArCXR2X21vZGUudmlf ZW5kX2YxID0gKHZjdGwxICYgVFZfVklfRU5EX0YxX01BU0spID4+IFRWX1ZJX0VORF9GMV9TSElG VDsKPiA+ICsJdHZfbW9kZS52aV9lbmRfZjIgPSAodmN0bDEgJiBUVl9WSV9FTkRfRjJfTUFTSykg Pj4gVFZfVklfRU5EX0YyX1NISUZUOwo+ID4gKwo+ID4gKwl0dl9tb2RlLnZzeW5jX2xlbiA9ICh2 Y3RsMiAmIFRWX1ZTWU5DX0xFTl9NQVNLKSA+PiBUVl9WU1lOQ19MRU5fU0hJRlQ7Cj4gPiArCXR2 X21vZGUudnN5bmNfc3RhcnRfZjEgPSAodmN0bDIgJiBUVl9WU1lOQ19TVEFSVF9GMV9NQVNLKSA+ PiBUVl9WU1lOQ19TVEFSVF9GMV9TSElGVDsKPiA+ICsJdHZfbW9kZS52c3luY19zdGFydF9mMiA9 ICh2Y3RsMiAmIFRWX1ZTWU5DX1NUQVJUX0YyX01BU0spID4+IFRWX1ZTWU5DX1NUQVJUX0YyX1NI SUZUOwo+ID4gKwo+ID4gKwl0dl9tb2RlLmNsb2NrID0gcGlwZV9jb25maWctPnBvcnRfY2xvY2s7 Cj4gPiArCj4gPiArCXR2X21vZGUucHJvZ3Jlc3NpdmUgPSB0dl9jdGwgJiBUVl9QUk9HUkVTU0lW RTsKPiA+ICsKPiA+ICsJc3dpdGNoICh0dl9jdGwgJiBUVl9PVkVSU0FNUExFX01BU0spIHsKPiA+ ICsJY2FzZSBUVl9PVkVSU0FNUExFXzhYOgo+ID4gKwkJdHZfbW9kZS5vdmVyc2FtcGxlID0gODsK PiA+ICsJCWJyZWFrOwo+ID4gKwljYXNlIFRWX09WRVJTQU1QTEVfNFg6Cj4gPiArCQl0dl9tb2Rl Lm92ZXJzYW1wbGUgPSA0Owo+ID4gKwkJYnJlYWs7Cj4gPiArCWNhc2UgVFZfT1ZFUlNBTVBMRV8y WDoKPiA+ICsJCXR2X21vZGUub3ZlcnNhbXBsZSA9IDI7Cj4gPiArCQlicmVhazsKPiA+ICsJZGVm YXVsdDoKPiA+ICsJCXR2X21vZGUub3ZlcnNhbXBsZSA9IDE7Cj4gPiArCQlicmVhazsKPiA+ICsJ fQo+ID4gKwo+ID4gKwl0bXAgPSBJOTE1X1JFQUQoVFZfV0lOX1BPUyk7Cj4gPiArCXhwb3MgPSB0 bXAgPj4gMTY7Cj4gPiArCXlwb3MgPSB0bXAgJiAweGZmZmY7Cj4gPiArCj4gPiArCXRtcCA9IEk5 MTVfUkVBRChUVl9XSU5fU0laRSk7Cj4gPiArCXhzaXplID0gdG1wID4+IDE2Owo+ID4gKwl5c2l6 ZSA9IHRtcCAmIDB4ZmZmZjsKPiA+ICsKPiA+ICsJaW50ZWxfdHZfbW9kZV90b19tb2RlKCZtb2Rl LCAmdHZfbW9kZSk7Cj4gPiArCj4gPiArCURSTV9ERUJVR19LTVMoIlRWIG1vZGU6XG4iKTsKPiA+ ICsJZHJtX21vZGVfZGVidWdfcHJpbnRtb2RlbGluZSgmbW9kZSk7Cj4gPiArCj4gPiArCWludGVs X3R2X3NjYWxlX21vZGVfaG9yaXooJm1vZGUsIGhkaXNwbGF5LAo+ID4gKwkJCQkgIHhwb3MsIG1v ZGUuaGRpc3BsYXkgLSB4c2l6ZSAtIHhwb3MpOwo+ID4gKwlpbnRlbF90dl9zY2FsZV9tb2RlX3Zl cnQoJm1vZGUsIHZkaXNwbGF5LAo+ID4gKwkJCQkgeXBvcywgbW9kZS52ZGlzcGxheSAtIHlzaXpl IC0geXBvcyk7Cj4gPiArCj4gPiArCWFkanVzdGVkX21vZGUtPmNydGNfY2xvY2sgPSBtb2RlLmNs b2NrOwo+ID4gIH0KPiA+ICAKPiA+ICBzdGF0aWMgYm9vbAo+ID4gQEAgLTk2NCw2ICsxMTMyLDgg QEAgaW50ZWxfdHZfY29tcHV0ZV9jb25maWcoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIs Cj4gPiAgCWNvbnN0IHN0cnVjdCB0dl9tb2RlICp0dl9tb2RlID0gaW50ZWxfdHZfbW9kZV9maW5k KGNvbm5fc3RhdGUpOwo+ID4gIAlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9k ZSA9Cj4gPiAgCQkmcGlwZV9jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZTsKPiA+ICsJaW50IGhk aXNwbGF5ID0gYWRqdXN0ZWRfbW9kZS0+Y3J0Y19oZGlzcGxheTsKPiA+ICsJaW50IHZkaXNwbGF5 ID0gYWRqdXN0ZWRfbW9kZS0+Y3J0Y192ZGlzcGxheTsKPiA+ICAKPiA+ICAJaWYgKCF0dl9tb2Rl KQo+ID4gIAkJcmV0dXJuIGZhbHNlOwo+ID4gQEAgLTk3MiwxNyArMTE0Miw5MCBAQCBpbnRlbF90 dl9jb21wdXRlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiA+ICAJCXJl dHVybiBmYWxzZTsKPiA+ICAKPiA+ICAJcGlwZV9jb25maWctPm91dHB1dF9mb3JtYXQgPSBJTlRF TF9PVVRQVVRfRk9STUFUX1JHQjsKPiA+IC0JYWRqdXN0ZWRfbW9kZS0+Y3J0Y19jbG9jayA9IHR2 X21vZGUtPmNsb2NrOwo+ID4gKwo+ID4gIAlEUk1fREVCVUdfS01TKCJmb3JjaW5nIGJwYyB0byA4 IGZvciBUVlxuIik7Cj4gPiAgCXBpcGVfY29uZmlnLT5waXBlX2JwcCA9IDgqMzsKPiA+ICAKPiA+ IC0JLyogVFYgaGFzIGl0J3Mgb3duIG5vdGlvbiBvZiBzeW5jIGFuZCBvdGhlciBtb2RlIGZsYWdz LCBzbyBjbGVhciB0aGVtLiAqLwo+ID4gLQlhZGp1c3RlZF9tb2RlLT5mbGFncyA9IDA7Cj4gPiAr CXBpcGVfY29uZmlnLT5wb3J0X2Nsb2NrID0gdHZfbW9kZS0+Y2xvY2s7Cj4gPiArCj4gPiArCWlu dGVsX3R2X21vZGVfdG9fbW9kZShhZGp1c3RlZF9tb2RlLCB0dl9tb2RlKTsKPiA+ICsKPiA+ICsJ RFJNX0RFQlVHX0tNUygiVFYgbW9kZTpcbiIpOwo+ID4gKwlkcm1fbW9kZV9kZWJ1Z19wcmludG1v ZGVsaW5lKGFkanVzdGVkX21vZGUpOwo+ID4gIAo+ID4gIAkvKgo+ID4gLQkgKiBGSVhNRTogV2Ug ZG9uJ3QgY2hlY2sgd2hldGhlciB0aGUgaW5wdXQgbW9kZSBpcyBhY3R1YWxseSB3aGF0IHdlIHdh bnQKPiA+IC0JICogb3Igd2hldGhlciB1c2Vyc3BhY2UgaXMgZG9pbmcgc29tZXRoaW5nIHN0dXBp ZC4KPiA+ICsJICogVGhlIHBpcGUgc2NhbmxpbmUgY291bnRlciBiZWhhdmlvdXIgbG9va3MgYXMg Zm9sbG93cyB3aGVuCj4gPiArCSAqIHVzaW5nIHRoZSBUViBlbmNvZGVyOgo+ID4gKwkgKgo+ID4g KwkgKiB0aW1lIC0+Cj4gPiArCSAqCj4gPiArCSAqIGRzbD12dG90YWwtMSAgICAgICB8ICAgICAg ICAgICAgIHwKPiA+ICsJICogICAgICAgICAgICAgICAgICAgfHwgICAgICAgICAgICB8fAo+ID4g KwkgKiAgICAgICAgICAgICAgIF9fX3wgfCAgICAgICAgX19ffCB8Cj4gPiArCSAqICAgICAgICAg ICAgICAvICAgICB8ICAgICAgIC8gICAgIHwKPiA+ICsJICogICAgICAgICAgICAgLyAgICAgIHwg ICAgICAvICAgICAgfAo+ID4gKwkgKiBkc2w9MCAgIF9fXy8gICAgICAgfF9fX19fLyAgICAgICB8 Cj4gPiArCSAqICAgICAgICB8IHwgfCAgfCAgfCB8Cj4gPiArCSAqICAgICAgICAgXiBeIF4gICBe IF4KPiA+ICsJICogICAgICAgICB8IHwgfCAgIHwgcGlwZSB2YmxhbmsvZmlyc3QgcGFydCBvZiB0 diB2YmxhbmsKPiA+ICsJICogICAgICAgICB8IHwgfCAgIGJvdHRvbSBtYXJnaW4KPiA+ICsJICog ICAgICAgICB8IHwgYWN0aXZlCj4gPiArCSAqICAgICAgICAgfCB0b3AgbWFyZ2luCj4gPiArCSAq ICAgICAgICAgcmVtYWluZGVyIG9mIHR2IHZibGFuawo+ID4gKwkgKgo+ID4gKwkgKiBXaGVuIHRo ZSBUViBlbmNvZGVyIGlzIHVzZWQgdGhlIHBpcGUgd2FudHMgdG8gcnVuIGZhc3Rlcgo+ID4gKwkg KiB0aGFuIGV4cGVjdGVkIHJhdGUuIER1cmluZyB0aGUgYWN0aXZlIHBvcnRpb24gdGhlIFRWCj4g PiArCSAqIGVuY29kZXIgc3RhbGxzIHRoZSBwaXBlIGV2ZXJ5IGZldyBsaW5lcyB0byBrZWVwIGl0 IGluCj4gPiArCSAqIGNoZWNrLiBXaGVuIHRoZSBUViBlbmNvZGVyIHJlYWNoZXMgdGhlIGJvdHRv bSBtYXJnaW4gdGhlCj4gPiArCSAqIHBpcGUgc2ltcGx5IHN0b3BzLiBPbmNlIHdlIHJlYWNoIHRo ZSBUViB2YmxhbmsgdGhlIHBpcGUgaXMKPiA+ICsJICogbm8gbG9uZ2VyIHN0YWxsZWQgYW5kIGl0 IHJ1bnMgYXQgdGhlIG1heCByYXRlIChhcHBhcmVudGx5Cj4gPiArCSAqIG92ZXJzYW1wbGUgY2xv Y2sgb24gZ2VuMywgY2RjbGsgb24gZ2VuNCkuIE9uY2UgdGhlIHBpcGUKPiA+ICsJICogcmVhY2hl cyB0aGUgcGlwZSB2dG90YWwgdGhlIHBpcGUgc3RvcHMgZm9yIHRoZSByZW1haW5kZXIKPiA+ICsJ ICogb2YgdGhlIFRWIHZibGFuay90b3AgbWFyZ2luLiBUaGUgcGlwZSBzdGFydHMgdXAgYWdhaW4g d2hlbgo+ID4gKwkgKiB0aGUgVFYgZW5jb2RlciBleGl0cyB0aGUgdG9wIG1hcmdpbi4KPiA+ICsJ ICoKPiA+ICsJICogVG8gYXZvaWQgaHVnZSBoYXNzbGVzIGZvciB2YmxhbmsgdGltZXN0YW1waW5n IHdlIHNjYWxlCj4gPiArCSAqIHRoZSBwaXBlIHRpbWluZ3MgYXMgaWYgdGhlIHBpcGUgYWx3YXlz IHJ1bnMgYXQgdGhlIGF2ZXJhZ2UKPiA+ICsJICogcmF0ZSBpdCBtYWludGFpbnMgZHVyaW5nIHRo ZSBhY3RpdmUgcGVyaW9kLiBUaGlzIGFsc28KPiA+ICsJICogZ2l2ZXMgdXMgYSByZWFzb25hYmxl IGd1ZXNzdGltYXRlIGFzIHRvIHRoZSBwaXhlbCByYXRlLgo+ID4gKwkgKiBEdWUgdG8gdGhlIHZh cmlhdGlvbiBpbiB0aGUgYWN0dWFsIHBpcGUgc3BlZWQgdGhlIHNjYW5saW5lCj4gPiArCSAqIGNv dW50ZXIgd2lsbCBnaXZlIHVzIHNsaWdodGx5IGVycm9uZW91cyByZXN1bHRzIGR1cmluZyB0aGUK PiA+ICsJICogVFYgdmJsYW5rL21hcmdpbnMuIEJ1dCBzaW5jZSB2dG90YWwgd2FzIHNlbGVjdGVk IHN1Y2ggdGhhdAo+ID4gKwkgKiBpdCBtYXRjaGVzIHRoZSBhdmVyYWdlIHJhdGUgb2YgdGhlIHBp cGUgZHVyaW5nIHRoZSBhY3RpdmUKPiA+ICsJICogcG9ydGlvbiB0aGUgZXJyb3Igc2hvdWxkbid0 IGNhdXNlIGFueSBzZXJpb3VzIGdyaWVmIHRvCj4gPiArCSAqIHZibGFuayB0aW1lc3RhbXBzLgo+ IAo+IE5pY2UgcmV2LiBlbmdpbmcgYW5kIGRlc2NyaXB0aW9uLiBXYXMgdGhpbmtpbmcgZm9yIGEg d2hpbGUgd2hhdCBpcyB0aGUKPiBtYXggZXJyb3IgdGhlIGlzc3N1ZSB5b3UgZm91bmQgYWRkcyB3 cnQuIHRoZSBhY3R1YWwgdmJsYW5rIHRpbWVzdGFtcCwKPiBhZnRlciB5b3VyIGNoYW5nZS4gQUZB SVUgaXQncyB0aGUgZHVyYXRpb24gb2YgdGhlIGZsYXRzIGluIHRoZSBjdXJ2ZSwKPiB0aGF0IGlz Cj4gbWF4X2Vycj0rKGJvdHRvbSBtYXJnaW4rcmVtYWluZGVyIG9mIHR2IHZibGFuayt0b3AgbWFy Z2luKS4KPiAKPiBSZXZpZXdlZC1ieTogSW1yZSBEZWFrIDxpbXJlLmRlYWtAaW50ZWwuY29tPgo+ IAo+ID4gKwkgKgo+ID4gKwkgKiBGb3IgcG9zdGVyaXR5IGhlcmUgaXMgdGhlIGVtcGlyaWNhbGx5 IGRlcml2ZWQgZm9ybXVsYQo+ID4gKwkgKiB0aGF0IGdpdmVzIHVzIHRoZSBtYXhpbXVtIGxlbmd0 aCBvZiB0aGUgcGlwZSB2YmxhbmsKPiA+ICsJICogd2UgY2FuIHVzZSB3aXRob3V0IGNhdXNpbmcg ZGlzcGxheSBjb3JydXB0aW9uLiBGb2xsb3dpbmcKPiA+ICsJICogdGhpcyB3b3VsZCBhbGxvdyB1 cyB0byBoYXZlIGEgdGlja2luZyBzY2FubGluZSBjb3VudGVyCj4gPiArCSAqIGV2ZXJ5d2hlcmUg ZXhjZXB0IGR1cmluZyB0aGUgYm90dG9tIG1hcmdpbiAodGhlcmUgdGhlCj4gPiArCSAqIHBpcGUg YWx3YXlzIHN0b3BzKS4gSWUuIHRoaXMgd291bGQgZWxpbWluYXRlIHRoZSBzZWNvbmQKPiA+ICsJ ICogZmxhdCBwb3J0aW9uIG9mIHRoZSBhYm92ZSBncmFwaC4gSG93ZXZlciB0aGlzIHdvdWxkIGFs c28KPiA+ICsJICogY29tcGxpY2F0ZSB2YmxhbmsgdGltZXN0YW1waW5nIGFzIHRoZSBwaXBlIHZ0 b3RhbCB3b3VsZAo+ID4gKwkgKiBubyBsb25nZXIgbWF0Y2ggdGhlIGF2ZXJhZ2UgcmF0ZSB0aGUg cGlwZSBydW5zIGF0IGR1cmluZwo+ID4gKwkgKiB0aGUgYWN0aXZlIHBvcnRpb24uIEhlbmNlIGZv bGxvd2luZyB0aGlzIGZvcm11bGEgc2VlbXMKPiA+ICsJICogbW9yZSB0cm91YmxlIHRoYXQgaXQn cyB3b3J0aC4KPiA+ICsJICoKPiA+ICsJICogaWYgKElTX0dFTjQoZGV2X3ByaXYpKSB7Cj4gPiAr CSAqCW51bSA9IGNkY2xrICogKHR2X21vZGUtPm92ZXJzYW1wbGUgPj4gIXR2X21vZGUtPnByb2dy ZXNzaXZlKTsKPiA+ICsJICoJZGVuID0gdHZfbW9kZS0+Y2xvY2s7Cj4gPiArCSAqIH0gZWxzZSB7 Cj4gPiArCSAqCW51bSA9IHR2X21vZGUtPm92ZXJzYW1wbGUgPj4gIXR2X21vZGUtPnByb2dyZXNz aXZlOwo+ID4gKwkgKglkZW4gPSAxOwo+ID4gKwkgKiB9Cj4gPiArCSAqIG1heF9waXBlX3ZibGFu a19sZW4gfj0KPiA+ICsJICoJKG51bSAqIHR2X2h0b3RhbCAqICh0dl92YmxhbmtfbGVuICsgdG9w X21hcmdpbikpIC8KPiA+ICsJICoJKGRlbiAqIHBpcGVfaHRvdGFsKTsKPiA+ICAJICovCj4gPiAr CWludGVsX3R2X3NjYWxlX21vZGVfaG9yaXooYWRqdXN0ZWRfbW9kZSwgaGRpc3BsYXksCj4gPiAr CQkJCSAgY29ubl9zdGF0ZS0+dHYubWFyZ2lucy5sZWZ0LAo+ID4gKwkJCQkgIGNvbm5fc3RhdGUt PnR2Lm1hcmdpbnMucmlnaHQpOwo+ID4gKwlpbnRlbF90dl9zY2FsZV9tb2RlX3ZlcnQoYWRqdXN0 ZWRfbW9kZSwgdmRpc3BsYXksCj4gPiArCQkJCSBjb25uX3N0YXRlLT50di5tYXJnaW5zLnRvcCwK PiA+ICsJCQkJIGNvbm5fc3RhdGUtPnR2Lm1hcmdpbnMuYm90dG9tKTsKPiA+ICsJZHJtX21vZGVf c2V0X2NydGNpbmZvKGFkanVzdGVkX21vZGUsIDApOwo+ID4gKwlhZGp1c3RlZF9tb2RlLT5uYW1l WzBdID0gJ1wwJzsKPiA+ICAKPiA+ICAJcmV0dXJuIHRydWU7Cj4gPiAgfQo+ID4gQEAgLTE0MTEs NTIgKzE2NTQsNDEgQEAgaW50ZWxfdHZfc2V0X21vZGVfdHlwZShzdHJ1Y3QgZHJtX2Rpc3BsYXlf bW9kZSAqbW9kZSwKPiA+ICBzdGF0aWMgaW50Cj4gPiAgaW50ZWxfdHZfZ2V0X21vZGVzKHN0cnVj dCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpCj4gPiAgewo+ID4gLQlzdHJ1Y3QgZHJtX2Rpc3Bs YXlfbW9kZSAqbW9kZV9wdHI7Cj4gPiAgCWNvbnN0IHN0cnVjdCB0dl9tb2RlICp0dl9tb2RlID0g aW50ZWxfdHZfbW9kZV9maW5kKGNvbm5lY3Rvci0+c3RhdGUpOwo+ID4gLQlpbnQgaiwgY291bnQg PSAwOwo+ID4gLQl1NjQgdG1wOwo+ID4gKwlpbnQgaSwgY291bnQgPSAwOwo+ID4gIAo+ID4gLQlm b3IgKGogPSAwOyBqIDwgQVJSQVlfU0laRShpbnB1dF9yZXNfdGFibGUpOwo+ID4gLQkgICAgIGor Kykgewo+ID4gLQkJY29uc3Qgc3RydWN0IGlucHV0X3JlcyAqaW5wdXQgPSAmaW5wdXRfcmVzX3Rh YmxlW2pdOwo+ID4gLQkJdW5zaWduZWQgaW50IGhhY3RpdmVfcyA9IGlucHV0LT53Owo+ID4gLQkJ dW5zaWduZWQgaW50IHZhY3RpdmVfcyA9IGlucHV0LT5oOwo+ID4gLQo+ID4gLQkJaWYgKHR2X21v ZGUtPm1heF9zcmN3ICYmIGlucHV0LT53ID4gdHZfbW9kZS0+bWF4X3NyY3cpCj4gPiAtCQkJY29u dGludWU7Cj4gPiArCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGlucHV0X3Jlc190YWJsZSk7 IGkrKykgewo+ID4gKwkJY29uc3Qgc3RydWN0IGlucHV0X3JlcyAqaW5wdXQgPSAmaW5wdXRfcmVz X3RhYmxlW2ldOwo+ID4gKwkJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGU7Cj4gPiAgCj4g PiAtCQlpZiAoaW5wdXQtPncgPiAxMDI0ICYmICghdHZfbW9kZS0+cHJvZ3Jlc3NpdmUKPiA+IC0J CQkJCSYmICF0dl9tb2RlLT5jb21wb25lbnRfb25seSkpCj4gPiArCQlpZiAoaW5wdXQtPncgPiAx MDI0ICYmCj4gPiArCQkgICAgIXR2X21vZGUtPnByb2dyZXNzaXZlICYmCj4gPiArCQkgICAgIXR2 X21vZGUtPmNvbXBvbmVudF9vbmx5KQo+ID4gIAkJCWNvbnRpbnVlOwo+ID4gIAo+ID4gLQkJbW9k ZV9wdHIgPSBkcm1fbW9kZV9jcmVhdGUoY29ubmVjdG9yLT5kZXYpOwo+ID4gLQkJaWYgKCFtb2Rl X3B0cikKPiA+ICsJCW1vZGUgPSBkcm1fbW9kZV9jcmVhdGUoY29ubmVjdG9yLT5kZXYpOwo+ID4g KwkJaWYgKCFtb2RlKQo+ID4gIAkJCWNvbnRpbnVlOwo+ID4gIAo+ID4gLQkJbW9kZV9wdHItPmhk aXNwbGF5ID0gaGFjdGl2ZV9zOwo+ID4gLQkJbW9kZV9wdHItPmhzeW5jX3N0YXJ0ID0gaGFjdGl2 ZV9zICsgMTsKPiA+IC0JCW1vZGVfcHRyLT5oc3luY19lbmQgPSBoYWN0aXZlX3MgKyA2NDsKPiA+ IC0JCWlmIChtb2RlX3B0ci0+aHN5bmNfZW5kIDw9IG1vZGVfcHRyLT5oc3luY19zdGFydCkKPiA+ IC0JCQltb2RlX3B0ci0+aHN5bmNfZW5kID0gbW9kZV9wdHItPmhzeW5jX3N0YXJ0ICsgMTsKPiA+ IC0JCW1vZGVfcHRyLT5odG90YWwgPSBoYWN0aXZlX3MgKyA5NjsKPiA+IC0KPiA+IC0JCW1vZGVf cHRyLT52ZGlzcGxheSA9IHZhY3RpdmVfczsKPiA+IC0JCW1vZGVfcHRyLT52c3luY19zdGFydCA9 IHZhY3RpdmVfcyArIDE7Cj4gPiAtCQltb2RlX3B0ci0+dnN5bmNfZW5kID0gdmFjdGl2ZV9zICsg MzI7Cj4gPiAtCQlpZiAobW9kZV9wdHItPnZzeW5jX2VuZCA8PSBtb2RlX3B0ci0+dnN5bmNfc3Rh cnQpCj4gPiAtCQkJbW9kZV9wdHItPnZzeW5jX2VuZCA9IG1vZGVfcHRyLT52c3luY19zdGFydCAg KyAxOwo+ID4gLQkJbW9kZV9wdHItPnZ0b3RhbCA9IHZhY3RpdmVfcyArIDMzOwo+ID4gLQo+ID4g LQkJdG1wID0gbXVsX3UzMl91MzIodHZfbW9kZS0+cmVmcmVzaCwgbW9kZV9wdHItPnZ0b3RhbCk7 Cj4gPiAtCQl0bXAgKj0gbW9kZV9wdHItPmh0b3RhbDsKPiA+IC0JCXRtcCA9IGRpdl91NjQodG1w LCAxMDAwMDAwKTsKPiA+IC0JCW1vZGVfcHRyLT5jbG9jayA9IChpbnQpIHRtcDsKPiA+IC0KPiA+ IC0JCWludGVsX3R2X3NldF9tb2RlX3R5cGUobW9kZV9wdHIsIHR2X21vZGUpOwo+ID4gKwkJLyoK PiA+ICsJCSAqIFdlIHRha2UgdGhlIFRWIG1vZGUgYW5kIHNjYWxlIGl0IHRvIGxvb2sKPiA+ICsJ CSAqIGxpa2UgaXQgaGFkIHRoZSBleHBlY3RlZCBoL3ZkaXNwbGF5LiBUaGlzCj4gPiArCQkgKiBw cm92aWRlcyB0aGUgbW9zdCBpbmZvcm1hdGlvbiB0byB1c2Vyc3BhY2UKPiA+ICsJCSAqIGFib3V0 IHRoZSBhY3R1YWwgdGltaW5ncyBvZiB0aGUgbW9kZS4gV2UKPiA+ICsJCSAqIGRvIGlnbm9yZSB0 aGUgbWFyZ2lucyB0aG91Z2guCj4gPiArCQkgKi8KPiA+ICsJCWludGVsX3R2X21vZGVfdG9fbW9k ZShtb2RlLCB0dl9tb2RlKTsKPiA+ICsJCWlmIChjb3VudCA9PSAwKSB7Cj4gPiArCQkJRFJNX0RF QlVHX0tNUygiVFYgbW9kZTpcbiIpOwo+ID4gKwkJCWRybV9tb2RlX2RlYnVnX3ByaW50bW9kZWxp bmUobW9kZSk7Cj4gPiArCQl9Cj4gPiArCQlpbnRlbF90dl9zY2FsZV9tb2RlX2hvcml6KG1vZGUs IGlucHV0LT53LCAwLCAwKTsKPiA+ICsJCWludGVsX3R2X3NjYWxlX21vZGVfdmVydChtb2RlLCBp bnB1dC0+aCwgMCwgMCk7Cj4gPiArCQlpbnRlbF90dl9zZXRfbW9kZV90eXBlKG1vZGUsIHR2X21v ZGUpOwo+ID4gIAo+ID4gLQkJZHJtX21vZGVfc2V0X25hbWUobW9kZV9wdHIpOwo+ID4gKwkJZHJt X21vZGVfc2V0X25hbWUobW9kZSk7Cj4gPiAgCj4gPiAtCQlkcm1fbW9kZV9wcm9iZWRfYWRkKGNv bm5lY3RvciwgbW9kZV9wdHIpOwo+ID4gKwkJZHJtX21vZGVfcHJvYmVkX2FkZChjb25uZWN0b3Is IG1vZGUpOwo+ID4gIAkJY291bnQrKzsKPiA+ICAJfQo+ID4gIAo+ID4gLS0gCj4gPiAyLjE4LjEK PiA+IAo+ID4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K PiA+IGRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKPiA+IGRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKPiA+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v ZHJpLWRldmVsCgotLSAKVmlsbGUgU3lyasOkbMOkCkludGVsCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwt Z2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=