From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH v2 2/2] drm/selftest: Add drm damage helper selftest Date: Fri, 19 Oct 2018 11:28:53 +0200 Message-ID: References: <20181016204609.1555-1-drawat@vmware.com> <20181016204609.1555-2-drawat@vmware.com> <20181017064034.GG31561@phenom.ffwll.local> <20181019092129.GA1828@e114479-lin.cambridge.arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-qt1-x844.google.com (mail-qt1-x844.google.com [IPv6:2607:f8b0:4864:20::844]) by gabe.freedesktop.org (Postfix) with ESMTPS id 4FE3A6E2B2 for ; Fri, 19 Oct 2018 09:29:06 +0000 (UTC) Received: by mail-qt1-x844.google.com with SMTP id l41-v6so37493649qtl.8 for ; Fri, 19 Oct 2018 02:29:06 -0700 (PDT) In-Reply-To: <20181019092129.GA1828@e114479-lin.cambridge.arm.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Alexandru-Cosmin Gheorghe Cc: nd , Deepak Singh Rawat , VMware Graphics , dri-devel List-Id: dri-devel@lists.freedesktop.org T24gRnJpLCBPY3QgMTksIDIwMTggYXQgMTE6MjEgQU0gQWxleGFuZHJ1LUNvc21pbiBHaGVvcmdo ZQo8QWxleGFuZHJ1LUNvc21pbi5HaGVvcmdoZUBhcm0uY29tPiB3cm90ZToKPgo+IEhpIERlZXBh aywKPgo+IFNvbWV0aGluZyB0byBjb25zaWRlciwgd2l0aCB0aGlzIGFwcHJvYWNoIHdlIGtpbmQg b2YgYnJlYWsgdGhlCj4gZm9sbG93aW5nIGJlaGF2aW91cjoKPiAiT25seSB0ZXN0cyBlbmFibGVk IGFzIG1vZHVsZSBwYXJhbWV0ZXJzIGFyZSBydW4sIGlmIG5vIHRlc3QgaXMKPiBleHBsaWNpdGx5 IGVuYWJsZWQgdGhlbiBhbGwgb2YgdGhlbSBhcmUgcnVuIgo+Cj4gV2hhdCBJIHRoaW5rIHdlIHNo b3VsZCBkbyBpcyBoYXZlIGp1c3Qgb25lIGhlYWRlciB3aGVyZSB3ZSBwdXQgdGhlCj4gc2VsZnRl c3QoY2hlY2tfcGxhbmVfc3RhdGUsIGlndF9jaGVja19wbGFuZV9zdGF0ZWEpCj4gLi4uCj4gc2Vs ZnRlc3QoZGFtYWdlX2l0ZXJfbm9fZGFtYWdlLCBpZ3RfZGFtYWdlX2l0ZXJfbm9fZGFtYWdlKQo+ IC4uLgo+IGNhbGwgaXQgZHJtX21vZGVzZXRfc2VsZnRlc3RzLmgKPgo+IEFuZCBzZXBhcmF0ZSBq dXN0IHRoZSBpbXBsZW1lbnRhdGlvbnMgaW4gZGlmZmVyZW50IHNvdXJjZSBmaWxlcy4KPgo+IFRo ZW4gd2UgY291bGQgY2FsbCBydW5fc2VsZnRlc3RzIGp1c3Qgb25jZSBmcm9tIHRlc3RfZHJtX21v ZGVzZXRfaW5pdC4KPgo+IERvZXMgdGhpcyBtYWtlcyBzZW5zZSB0byB5b3U/CgpBY2ssIEkgZm9y Z290IHRvIGNhcmVmdWxseSBjaGVjayB0aGF0LiBXZSBjYW4gaGF2ZSBvbmx5IG9uZSBoZWFkZXIK ZmlsZSBlbnVtZXJhdGUgYWxsIHRoZSBzZWxmdGVzdHMgZm9yIGFsbCB0aGUgc291cmNlIGZpbGVz LiBXZSBjYW4Kc3RpbGwgaGF2ZSBvdGhlciBoZWFkZXJzIG9mIGNvdXJzZSBmb3Igb3RoZXIgc3R1 ZmYgd2UncmUgc2hhcmluZyAobGlrZQptYWNyb3Mgb3IgaGVscGVyIGZ1bmN0aW9ucykuCi1EYW5p ZWwKCj4KPiBUaGFuayB5b3UsCj4gQWxleCBHaGVvcmdoZQo+Cj4gT24gVGh1LCBPY3QgMTgsIDIw MTggYXQgMDE6MzI6MDNQTSArMDAwMCwgRGVlcGFrIFNpbmdoIFJhd2F0IHdyb3RlOgo+ID4gPiBP biBUdWUsIE9jdCAxNiwgMjAxOCBhdCAwMTo0NjowOVBNIC0wNzAwLCBEZWVwYWsgUmF3YXQgd3Jv dGU6Cj4gPiA+ID4gU2VsZnRlc3QgZm9yIGRybSBkYW1hZ2UgaGVscGVyIGl0ZXJhdG9yIGZ1bmN0 aW9ucy4KPiA+ID4gPgo+ID4gPiA+IENjOiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVyQGZm d2xsLmNoPgo+ID4gPiA+IENjOiBhbGV4YW5kcnUtY29zbWluLmdoZW9yZ2hlQGFybS5jb20KPiA+ ID4gPiBTaWduZWQtb2ZmLWJ5OiBEZWVwYWsgUmF3YXQgPGRyYXdhdEB2bXdhcmUuY29tPgo+ID4g PiA+IFJldmlld2VkLWJ5OiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVyQGZmd2xsLmNoPgo+ ID4gPiA+IFJldmlld2VkLWJ5OiBUaG9tYXMgSGVsbHN0cm9tIDx0aGVsbHN0cm9tQHZtd2FyZS5j b20+Cj4gPiA+Cj4gPiA+IEkgZ3Vlc3MgdGhpcyBuZWVkcyB5b3VyIGVudGlyZSBkYW1hZ2Ugc2Vy aWVzIHRvIG1ha2Ugc2Vuc2UsIHJpZ2h0Pwo+ID4KPiA+IEFoIHllcyBzb3JyeS4gQWx0aG91Z2gg dGhpcyBwYXRjaCBpcyBzYW1lIGFzIHdoYXQgSSBzZW50IGVhcmxpZXIKPiA+IGV4Y2VwdCBsaW5r aW5nIHdpdGggdGVzdC1kcm1fbW9kZXNldC5rbwo+ID4KPiA+ID4KPiA+ID4gQW5vdGhlciBxdWVz dGlvbjogRG9lcyBhbnlvbmUgZnJvbSB2bXdnZnggd2FudCBkcm0tbWlzYyBjb21taXQgcmlnaHRz IGZvcgo+ID4gPiBwdXNoaW5nIHN0dWZmIGxpa2UgdGhpcz8KPiA+Cj4gPiBIaSBEYW5pZWwsIFRo YW5rcyBmb3IgdGhlIHN1Z2dlc3Rpb24uIEkgYW0gbm90IHN1cmUgYWJvdXQgZWxpZ2liaWxpdHkg Y3JpdGVyaWEgZm9yCj4gPiBjb21taXQgcmlnaHRzIGJ1dCBJIHRoaW5rIEkgd2lsbCB3YWl0IHVu dGlsIGRybS1taWNzIGlzIG1vdmVkIHRvIGdpdGxhYiBhbmQgSSBoYXZlCj4gPiBtb3JlIGV4cGVy aWVuY2Ugd29ya2luZyB3aXRoIG9wZW4tc291cmNlLiBCZXNpZGUgbWUgVGhvbWFzIHdvcmtzIG9u Cj4gPiB2bXdnZngsIEkgYW0gbm90IHN1cmUgaWYgaGUgYWxyZWFkeSBoYXZlIGNvbW1pdCByaWdo dHMuCj4gPgo+ID4gPiAtRGFuaWVsCj4gPiA+ID4gLS0tCj4gPiA+ID4gIGRyaXZlcnMvZ3B1L2Ry bS9zZWxmdGVzdHMvTWFrZWZpbGUgICAgICAgICAgICB8ICAgMyArLQo+ID4gPiA+ICAuLi4vc2Vs ZnRlc3RzL2RybV9kYW1hZ2VfaGVscGVyX3NlbGZ0ZXN0cy5oICAgfCAgMjIgKwo+ID4gPiA+ICAu Li4vZHJtL3NlbGZ0ZXN0cy90ZXN0LWRybV9kYW1hZ2VfaGVscGVyLmMgICAgfCA4MjggKysrKysr KysrKysrKysrKysrCj4gPiA+ID4gIC4uLi9kcm0vc2VsZnRlc3RzL3Rlc3QtZHJtX21vZGVzZXRf Y29tbW9uLmMgICB8ICAxMCArLQo+ID4gPiA+ICAuLi4vZHJtL3NlbGZ0ZXN0cy90ZXN0LWRybV9t b2Rlc2V0X2NvbW1vbi5oICAgfCAgIDEgKwo+ID4gPiA+ICA1IGZpbGVzIGNoYW5nZWQsIDg2MiBp bnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQo+ID4gPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQK PiA+ID4gZHJpdmVycy9ncHUvZHJtL3NlbGZ0ZXN0cy9kcm1fZGFtYWdlX2hlbHBlcl9zZWxmdGVz dHMuaAo+ID4gPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL3NlbGZ0ZXN0 cy90ZXN0LWRybV9kYW1hZ2VfaGVscGVyLmMKPiA+ID4gPgo+ID4gPiA+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vc2VsZnRlc3RzL01ha2VmaWxlCj4gPiA+IGIvZHJpdmVycy9ncHUvZHJt L3NlbGZ0ZXN0cy9NYWtlZmlsZQo+ID4gPiA+IGluZGV4IDdlNjU4MTkyMWRhMC4uYzZlNjNlZDEy ZjAyIDEwMDY0NAo+ID4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9zZWxmdGVzdHMvTWFrZWZp bGUKPiA+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vc2VsZnRlc3RzL01ha2VmaWxlCj4gPiA+ ID4gQEAgLTEsMyArMSw0IEBACj4gPiA+ID4gLXRlc3QtZHJtX21vZGVzZXQteSA6PSB0ZXN0LWRy bV9tb2Rlc2V0X2NvbW1vbi5vIHRlc3QtCj4gPiA+IGRybV9wbGFuZV9oZWxwZXIubwo+ID4gPiA+ ICt0ZXN0LWRybV9tb2Rlc2V0LXkgOj0gdGVzdC1kcm1fbW9kZXNldF9jb21tb24ubyB0ZXN0LQo+ ID4gPiBkcm1fcGxhbmVfaGVscGVyLm8gXAo+ID4gPiA+ICsgICAgICAgICAgICAgICB0ZXN0LWRy bV9kYW1hZ2VfaGVscGVyLm8KPiA+ID4gPgo+ID4gPiA+ICBvYmotJChDT05GSUdfRFJNX0RFQlVH X1NFTEZURVNUKSArPSB0ZXN0LWRybV9tbS5vIHRlc3QtCj4gPiA+IGRybV9tb2Rlc2V0Lm8KPiA+ ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3NlbGZ0ZXN0cy9kcm1fZGFtYWdlX2hl bHBlcl9zZWxmdGVzdHMuaAo+ID4gPiBiL2RyaXZlcnMvZ3B1L2RybS9zZWxmdGVzdHMvZHJtX2Rh bWFnZV9oZWxwZXJfc2VsZnRlc3RzLmgKPiA+ID4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+ID4g PiA+IGluZGV4IDAwMDAwMDAwMDAwMC4uM2ExY2JlMDViZWYwCj4gPiA+ID4gLS0tIC9kZXYvbnVs bAo+ID4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9zZWxmdGVzdHMvZHJtX2RhbWFnZV9oZWxw ZXJfc2VsZnRlc3RzLmgKPiA+ID4gPiBAQCAtMCwwICsxLDIyIEBACj4gPiA+ID4gKy8qIFNQRFgt TGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wICovCj4gPiA+ID4gK3NlbGZ0ZXN0KGRhbWFnZV9p dGVyX25vX2RhbWFnZSwgaWd0X2RhbWFnZV9pdGVyX25vX2RhbWFnZSkKPiA+ID4gPiArc2VsZnRl c3QoZGFtYWdlX2l0ZXJfbm9fZGFtYWdlX2ZyYWN0aW9uYWxfc3JjLAo+ID4gPiBpZ3RfZGFtYWdl X2l0ZXJfbm9fZGFtYWdlX2ZyYWN0aW9uYWxfc3JjKQo+ID4gPiA+ICtzZWxmdGVzdChkYW1hZ2Vf aXRlcl9ub19kYW1hZ2Vfc3JjX21vdmVkLAo+ID4gPiBpZ3RfZGFtYWdlX2l0ZXJfbm9fZGFtYWdl X3NyY19tb3ZlZCkKPiA+ID4gPiArc2VsZnRlc3QoZGFtYWdlX2l0ZXJfbm9fZGFtYWdlX2ZyYWN0 aW9uYWxfc3JjX21vdmVkLAo+ID4gPiBpZ3RfZGFtYWdlX2l0ZXJfbm9fZGFtYWdlX2ZyYWN0aW9u YWxfc3JjX21vdmVkKQo+ID4gPiA+ICtzZWxmdGVzdChkYW1hZ2VfaXRlcl9ub19kYW1hZ2Vfbm90 X3Zpc2libGUsCj4gPiA+IGlndF9kYW1hZ2VfaXRlcl9ub19kYW1hZ2Vfbm90X3Zpc2libGUpCj4g PiA+ID4gK3NlbGZ0ZXN0KGRhbWFnZV9pdGVyX25vX2RhbWFnZV9ub19jcnRjLAo+ID4gPiBpZ3Rf ZGFtYWdlX2l0ZXJfbm9fZGFtYWdlX25vX2NydGMpCj4gPiA+ID4gK3NlbGZ0ZXN0KGRhbWFnZV9p dGVyX25vX2RhbWFnZV9ub19mYiwKPiA+ID4gaWd0X2RhbWFnZV9pdGVyX25vX2RhbWFnZV9ub19m YikKPiA+ID4gPiArc2VsZnRlc3QoZGFtYWdlX2l0ZXJfc2ltcGxlX2RhbWFnZSwgaWd0X2RhbWFn ZV9pdGVyX3NpbXBsZV9kYW1hZ2UpCj4gPiA+ID4gK3NlbGZ0ZXN0KGRhbWFnZV9pdGVyX3Npbmds ZV9kYW1hZ2UsIGlndF9kYW1hZ2VfaXRlcl9zaW5nbGVfZGFtYWdlKQo+ID4gPiA+ICtzZWxmdGVz dChkYW1hZ2VfaXRlcl9zaW5nbGVfZGFtYWdlX2ludGVyc2VjdF9zcmMsCj4gPiA+IGlndF9kYW1h Z2VfaXRlcl9zaW5nbGVfZGFtYWdlX2ludGVyc2VjdF9zcmMpCj4gPiA+ID4gK3NlbGZ0ZXN0KGRh bWFnZV9pdGVyX3NpbmdsZV9kYW1hZ2Vfb3V0c2lkZV9zcmMsCj4gPiA+IGlndF9kYW1hZ2VfaXRl cl9zaW5nbGVfZGFtYWdlX291dHNpZGVfc3JjKQo+ID4gPiA+ICtzZWxmdGVzdChkYW1hZ2VfaXRl cl9zaW5nbGVfZGFtYWdlX2ZyYWN0aW9uYWxfc3JjLAo+ID4gPiBpZ3RfZGFtYWdlX2l0ZXJfc2lu Z2xlX2RhbWFnZV9mcmFjdGlvbmFsX3NyYykKPiA+ID4gPiArc2VsZnRlc3QoZGFtYWdlX2l0ZXJf c2luZ2xlX2RhbWFnZV9pbnRlcnNlY3RfZnJhY3Rpb25hbF9zcmMsCj4gPiA+IGlndF9kYW1hZ2Vf aXRlcl9zaW5nbGVfZGFtYWdlX2ludGVyc2VjdF9mcmFjdGlvbmFsX3NyYykKPiA+ID4gPiArc2Vs ZnRlc3QoZGFtYWdlX2l0ZXJfc2luZ2xlX2RhbWFnZV9vdXRzaWRlX2ZyYWN0aW9uYWxfc3JjLAo+ ID4gPiBpZ3RfZGFtYWdlX2l0ZXJfc2luZ2xlX2RhbWFnZV9vdXRzaWRlX2ZyYWN0aW9uYWxfc3Jj KQo+ID4gPiA+ICtzZWxmdGVzdChkYW1hZ2VfaXRlcl9zaW5nbGVfZGFtYWdlX3NyY19tb3ZlZCwK PiA+ID4gaWd0X2RhbWFnZV9pdGVyX3NpbmdsZV9kYW1hZ2Vfc3JjX21vdmVkKQo+ID4gPiA+ICtz ZWxmdGVzdChkYW1hZ2VfaXRlcl9zaW5nbGVfZGFtYWdlX2ZyYWN0aW9uYWxfc3JjX21vdmVkLAo+ ID4gPiBpZ3RfZGFtYWdlX2l0ZXJfc2luZ2xlX2RhbWFnZV9mcmFjdGlvbmFsX3NyY19tb3ZlZCkK PiA+ID4gPiArc2VsZnRlc3QoZGFtYWdlX2l0ZXJfZGFtYWdlLCBpZ3RfZGFtYWdlX2l0ZXJfZGFt YWdlKQo+ID4gPiA+ICtzZWxmdGVzdChkYW1hZ2VfaXRlcl9kYW1hZ2Vfb25lX2ludGVyc2VjdCwK PiA+ID4gaWd0X2RhbWFnZV9pdGVyX2RhbWFnZV9vbmVfaW50ZXJzZWN0KQo+ID4gPiA+ICtzZWxm dGVzdChkYW1hZ2VfaXRlcl9kYW1hZ2Vfb25lX291dHNpZGUsCj4gPiA+IGlndF9kYW1hZ2VfaXRl cl9kYW1hZ2Vfb25lX291dHNpZGUpCj4gPiA+ID4gK3NlbGZ0ZXN0KGRhbWFnZV9pdGVyX2RhbWFn ZV9zcmNfbW92ZWQsCj4gPiA+IGlndF9kYW1hZ2VfaXRlcl9kYW1hZ2Vfc3JjX21vdmVkKQo+ID4g PiA+ICtzZWxmdGVzdChkYW1hZ2VfaXRlcl9kYW1hZ2Vfbm90X3Zpc2libGUsCj4gPiA+IGlndF9k YW1hZ2VfaXRlcl9kYW1hZ2Vfbm90X3Zpc2libGUpCj4gPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9zZWxmdGVzdHMvdGVzdC1kcm1fZGFtYWdlX2hlbHBlci5jCj4gPiA+IGIvZHJp dmVycy9ncHUvZHJtL3NlbGZ0ZXN0cy90ZXN0LWRybV9kYW1hZ2VfaGVscGVyLmMKPiA+ID4gPiBu ZXcgZmlsZSBtb2RlIDEwMDY0NAo+ID4gPiA+IGluZGV4IDAwMDAwMDAwMDAwMC4uOWNlYzc3Nzhl NWIyCj4gPiA+ID4gLS0tIC9kZXYvbnVsbAo+ID4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9z ZWxmdGVzdHMvdGVzdC1kcm1fZGFtYWdlX2hlbHBlci5jCj4gPiA+ID4gQEAgLTAsMCArMSw4Mjgg QEAKPiA+ID4gPiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKPiA+ID4gPiAr LyoKPiA+ID4gPiArICogVGVzdCBjYXNlIGZvciBkcm1fZGFtYWdlX2hlbHBlciBmdW5jdGlvbnMK PiA+ID4gPiArICovCj4gPiA+ID4gKwo+ID4gPiA+ICsjZGVmaW5lIHByX2ZtdChmbXQpICJkcm1f ZGFtYWdlX2hlbHBlcjogIiBmbXQKPiA+ID4gPiArCj4gPiA+ID4gKyNpbmNsdWRlIDxkcm0vZHJt X2RhbWFnZV9oZWxwZXIuaD4KPiA+ID4gPiArCj4gPiA+ID4gKyNpbmNsdWRlICJ0ZXN0LWRybV9t b2Rlc2V0X2NvbW1vbi5oIgo+ID4gPiA+ICsKPiA+ID4gPiArI2RlZmluZSBURVNUUyAiZHJtX2Rh bWFnZV9oZWxwZXJfc2VsZnRlc3RzLmgiCj4gPiA+ID4gKyNpbmNsdWRlICJkcm1fc2VsZnRlc3Qu aCIKPiA+ID4gPiArCj4gPiA+ID4gK3N0YXRpYyB2b2lkIHNldF9wbGFuZV9zcmMoc3RydWN0IGRy bV9wbGFuZV9zdGF0ZSAqc3RhdGUsIGludCB4MSwgaW50IHkxLCBpbnQgeDIsCj4gPiA+ID4gKyAg ICAgICAgICAgICAgICAgICBpbnQgeTIpCj4gPiA+ID4gK3sKPiA+ID4gPiArIHN0YXRlLT5zcmMu eDEgPSB4MTsKPiA+ID4gPiArIHN0YXRlLT5zcmMueTEgPSB5MTsKPiA+ID4gPiArIHN0YXRlLT5z cmMueDIgPSB4MjsKPiA+ID4gPiArIHN0YXRlLT5zcmMueTIgPSB5MjsKPiA+ID4gPiArfQo+ID4g PiA+ICsKPiA+ID4gPiArc3RhdGljIHZvaWQgc2V0X2RhbWFnZV9jbGlwKHN0cnVjdCBkcm1fbW9k ZV9yZWN0ICpyLCBpbnQgeDEsIGludCB5MSwgaW50IHgyLAo+ID4gPiA+ICsgICAgICAgICAgICAg ICAgICAgICBpbnQgeTIpCj4gPiA+ID4gK3sKPiA+ID4gPiArIHItPngxID0geDE7Cj4gPiA+ID4g KyByLT55MSA9IHkxOwo+ID4gPiA+ICsgci0+eDIgPSB4MjsKPiA+ID4gPiArIHItPnkyID0geTI7 Cj4gPiA+ID4gK30KPiA+ID4gPiArCj4gPiA+ID4gK3N0YXRpYyB2b2lkIHNldF9kYW1hZ2VfYmxv YihzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgKmRhbWFnZV9ibG9iLAo+ID4gPiA+ICsgICAgICAg ICAgICAgICAgICAgICBzdHJ1Y3QgZHJtX21vZGVfcmVjdCAqciwgdWludDMyX3Qgc2l6ZSkKPiA+ ID4gPiArewo+ID4gPiA+ICsgZGFtYWdlX2Jsb2ItPmxlbmd0aCA9IHNpemU7Cj4gPiA+ID4gKyBk YW1hZ2VfYmxvYi0+ZGF0YSA9IHI7Cj4gPiA+ID4gK30KPiA+ID4gPiArCj4gPiA+ID4gK3N0YXRp YyB2b2lkIHNldF9wbGFuZV9kYW1hZ2Uoc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqc3RhdGUsCj4g PiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgKmRh bWFnZV9ibG9iKQo+ID4gPiA+ICt7Cj4gPiA+ID4gKyBzdGF0ZS0+ZmJfZGFtYWdlX2NsaXBzID0g ZGFtYWdlX2Jsb2I7Cj4gPiA+ID4gK30KPiA+ID4gPiArCj4gPiA+ID4gK3N0YXRpYyBib29sIGNo ZWNrX2RhbWFnZV9jbGlwKHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnN0YXRlLCBzdHJ1Y3QKPiA+ ID4gZHJtX3JlY3QgKnIsCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgaW50IHgxLCBp bnQgeTEsIGludCB4MiwgaW50IHkyKQo+ID4gPiA+ICt7Cj4gPiA+ID4gKyAvKgo+ID4gPiA+ICsg ICogUm91bmQgZG93biB4MS95MSBhbmQgcm91bmQgdXAgeDIveTIuIFRoaXMgaXMgYmVjYXVzZSBk YW1hZ2UgaXMgbm90Cj4gPiA+IGluCj4gPiA+ID4gKyAgKiAxNi4xNiBmaXhlZCBwb2ludCBzbyB0 byBjYXRjaCBhbGwgcGl4ZWxzLgo+ID4gPiA+ICsgICovCj4gPiA+ID4gKyBpbnQgc3JjX3gxID0g c3RhdGUtPnNyYy54MSA+PiAxNjsKPiA+ID4gPiArIGludCBzcmNfeTEgPSBzdGF0ZS0+c3JjLnkx ID4+IDE2Owo+ID4gPiA+ICsgaW50IHNyY194MiA9IChzdGF0ZS0+c3JjLngyID4+IDE2KSArICEh KHN0YXRlLT5zcmMueDIgJiAweEZGRkYpOwo+ID4gPiA+ICsgaW50IHNyY195MiA9IChzdGF0ZS0+ c3JjLnkyID4+IDE2KSArICEhKHN0YXRlLT5zcmMueTIgJiAweEZGRkYpOwo+ID4gPiA+ICsKPiA+ ID4gPiArIGlmICh4MSA+PSB4MiB8fCB5MSA+PSB5Mikgewo+ID4gPiA+ICsgICAgICAgICBwcl9l cnIoIkNhbm5vdCBoYXZlIGRhbWFnZSBjbGlwIHdpdGggbm8gZGltZW50aW9uLlxuIik7Cj4gPiA+ ID4gKyAgICAgICAgIHJldHVybiBmYWxzZTsKPiA+ID4gPiArIH0KPiA+ID4gPiArCj4gPiA+ID4g KyBpZiAoeDEgPCBzcmNfeDEgfHwgeTEgPCBzcmNfeTEgfHwgeDIgPiBzcmNfeDIgfHwgeTIgPiBz cmNfeTIpIHsKPiA+ID4gPiArICAgICAgICAgcHJfZXJyKCJEYW1hZ2UgY2Fubm90IGJlIG91dHNp ZGUgcm91bmRlZCBwbGFuZSBzcmMuXG4iKTsKPiA+ID4gPiArICAgICAgICAgcmV0dXJuIGZhbHNl Owo+ID4gPiA+ICsgfQo+ID4gPiA+ICsKPiA+ID4gPiArIGlmIChyLT54MSAhPSB4MSB8fCByLT55 MSAhPSB5MSB8fCByLT54MiAhPSB4MiB8fCByLT55MiAhPSB5Mikgewo+ID4gPiA+ICsgICAgICAg ICBwcl9lcnIoIkRhbWFnZSA9ICVkICVkICVkICVkXG4iLCByLT54MSwgci0+eTEsIHItPngyLCBy LT55Mik7Cj4gPiA+ID4gKyAgICAgICAgIHJldHVybiBmYWxzZTsKPiA+ID4gPiArIH0KPiA+ID4g PiArCj4gPiA+ID4gKyByZXR1cm4gdHJ1ZTsKPiA+ID4gPiArfQo+ID4gPiA+ICsKPiA+ID4gPiAr c3RhdGljIGludCBpZ3RfZGFtYWdlX2l0ZXJfbm9fZGFtYWdlKHZvaWQgKmlnbm9yZWQpCj4gPiA+ ID4gK3sKPiA+ID4gPiArIHN0cnVjdCBkcm1fYXRvbWljX2hlbHBlcl9kYW1hZ2VfaXRlciBpdGVy Owo+ID4gPiA+ICsgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSBvbGRfc3RhdGU7Cj4gPiA+ID4gKyBz dHJ1Y3QgZHJtX3JlY3QgY2xpcDsKPiA+ID4gPiArIHVpbnQzMl90IG51bV9oaXRzID0gMDsKPiA+ ID4gPiArCj4gPiA+ID4gKyBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyIGZiID0gewo+ID4gPiA+ICsg ICAgICAgICAud2lkdGggPSAyMDQ4LAo+ID4gPiA+ICsgICAgICAgICAuaGVpZ2h0ID0gMjA0OAo+ ID4gPiA+ICsgfTsKPiA+ID4gPiArCj4gPiA+ID4gKyBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlIHN0 YXRlID0gewo+ID4gPiA+ICsgICAgICAgICAuY3J0YyA9IFpFUk9fU0laRV9QVFIsCj4gPiA+ID4g KyAgICAgICAgIC5mYiA9ICZmYiwKPiA+ID4gPiArICAgICAgICAgLnZpc2libGUgPSB0cnVlLAo+ ID4gPiA+ICsgfTsKPiA+ID4gPiArCj4gPiA+ID4gKyAvKiBQbGFuZSBzcmMgc2FtZSBhcyBmYiBz aXplLiAqLwo+ID4gPiA+ICsgc2V0X3BsYW5lX3NyYygmb2xkX3N0YXRlLCAwLCAwLCBmYi53aWR0 aCA8PCAxNiwgZmIuaGVpZ2h0IDw8IDE2KTsKPiA+ID4gPiArIHNldF9wbGFuZV9zcmMoJnN0YXRl LCAwLCAwLCBmYi53aWR0aCA8PCAxNiwgZmIuaGVpZ2h0IDw8IDE2KTsKPiA+ID4gPiArIGRybV9h dG9taWNfaGVscGVyX2RhbWFnZV9pdGVyX2luaXQoJml0ZXIsICZvbGRfc3RhdGUsICZzdGF0ZSk7 Cj4gPiA+ID4gKyBkcm1fYXRvbWljX2Zvcl9lYWNoX3BsYW5lX2RhbWFnZSgmaXRlciwgJmNsaXAp Cj4gPiA+ID4gKyAgICAgICAgIG51bV9oaXRzKys7Cj4gPiA+ID4gKwo+ID4gPiA+ICsgRkFJTChu dW1faGl0cyAhPSAxLCAiU2hvdWxkIHJldHVybiBwbGFuZSBzcmMgYXMgZGFtYWdlLiIpOwo+ID4g PiA+ICsgRkFJTF9PTighY2hlY2tfZGFtYWdlX2NsaXAoJnN0YXRlLCAmY2xpcCwgMCwgMCwgMjA0 OCwgMjA0OCkpOwo+ID4gPiA+ICsKPiA+ID4gPiArIHJldHVybiAwOwo+ID4gPiA+ICt9Cj4gPiA+ ID4gKwo+ID4gPiA+ICtzdGF0aWMgaW50IGlndF9kYW1hZ2VfaXRlcl9ub19kYW1hZ2VfZnJhY3Rp b25hbF9zcmModm9pZCAqaWdub3JlZCkKPiA+ID4gPiArewo+ID4gPiA+ICsgc3RydWN0IGRybV9h dG9taWNfaGVscGVyX2RhbWFnZV9pdGVyIGl0ZXI7Cj4gPiA+ID4gKyBzdHJ1Y3QgZHJtX3BsYW5l X3N0YXRlIG9sZF9zdGF0ZTsKPiA+ID4gPiArIHN0cnVjdCBkcm1fcmVjdCBjbGlwOwo+ID4gPiA+ ICsgdWludDMyX3QgbnVtX2hpdHMgPSAwOwo+ID4gPiA+ICsKPiA+ID4gPiArIHN0cnVjdCBkcm1f ZnJhbWVidWZmZXIgZmIgPSB7Cj4gPiA+ID4gKyAgICAgICAgIC53aWR0aCA9IDIwNDgsCj4gPiA+ ID4gKyAgICAgICAgIC5oZWlnaHQgPSAyMDQ4Cj4gPiA+ID4gKyB9Owo+ID4gPiA+ICsKPiA+ID4g PiArIHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgc3RhdGUgPSB7Cj4gPiA+ID4gKyAgICAgICAgIC5j cnRjID0gWkVST19TSVpFX1BUUiwKPiA+ID4gPiArICAgICAgICAgLmZiID0gJmZiLAo+ID4gPiA+ ICsgICAgICAgICAudmlzaWJsZSA9IHRydWUsCj4gPiA+ID4gKyB9Owo+ID4gPiA+ICsKPiA+ID4g PiArIC8qIFBsYW5lIHNyYyBoYXMgZnJhY3Rpb25hbCBwYXJ0LiAqLwo+ID4gPiA+ICsgc2V0X3Bs YW5lX3NyYygmb2xkX3N0YXRlLCAweDNmZmZlLCAweDNmZmZlLAo+ID4gPiA+ICsgICAgICAgICAg ICAgICAweDNmZmZlICsgKDEwMjQgPDwgMTYpLCAweDNmZmZlICsgKDc2OCA8PCAxNikpOwo+ID4g PiA+ICsgc2V0X3BsYW5lX3NyYygmc3RhdGUsIDB4M2ZmZmUsIDB4M2ZmZmUsCj4gPiA+ID4gKyAg ICAgICAgICAgICAgIDB4M2ZmZmUgKyAoMTAyNCA8PCAxNiksIDB4M2ZmZmUgKyAoNzY4IDw8IDE2 KSk7Cj4gPiA+ID4gKyBkcm1fYXRvbWljX2hlbHBlcl9kYW1hZ2VfaXRlcl9pbml0KCZpdGVyLCAm b2xkX3N0YXRlLCAmc3RhdGUpOwo+ID4gPiA+ICsgZHJtX2F0b21pY19mb3JfZWFjaF9wbGFuZV9k YW1hZ2UoJml0ZXIsICZjbGlwKQo+ID4gPiA+ICsgICAgICAgICBudW1faGl0cysrOwo+ID4gPiA+ ICsKPiA+ID4gPiArIEZBSUwobnVtX2hpdHMgIT0gMSwgIlNob3VsZCByZXR1cm4gcm91bmRlZCBv ZmYgcGxhbmUgc3JjIGFzIGRhbWFnZS4iKTsKPiA+ID4gPiArIEZBSUxfT04oIWNoZWNrX2RhbWFn ZV9jbGlwKCZzdGF0ZSwgJmNsaXAsIDMsIDMsIDEwMjgsIDc3MikpOwo+ID4gPiA+ICsKPiA+ID4g PiArIHJldHVybiAwOwo+ID4gPiA+ICt9Cj4gPiA+ID4gKwo+ID4gPiA+ICtzdGF0aWMgaW50IGln dF9kYW1hZ2VfaXRlcl9ub19kYW1hZ2Vfc3JjX21vdmVkKHZvaWQgKmlnbm9yZWQpCj4gPiA+ID4g K3sKPiA+ID4gPiArIHN0cnVjdCBkcm1fYXRvbWljX2hlbHBlcl9kYW1hZ2VfaXRlciBpdGVyOwo+ ID4gPiA+ICsgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSBvbGRfc3RhdGU7Cj4gPiA+ID4gKyBzdHJ1 Y3QgZHJtX3JlY3QgY2xpcDsKPiA+ID4gPiArIHVpbnQzMl90IG51bV9oaXRzID0gMDsKPiA+ID4g PiArCj4gPiA+ID4gKyBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyIGZiID0gewo+ID4gPiA+ICsgICAg ICAgICAud2lkdGggPSAyMDQ4LAo+ID4gPiA+ICsgICAgICAgICAuaGVpZ2h0ID0gMjA0OAo+ID4g PiA+ICsgfTsKPiA+ID4gPiArCj4gPiA+ID4gKyBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlIHN0YXRl ID0gewo+ID4gPiA+ICsgICAgICAgICAuY3J0YyA9IFpFUk9fU0laRV9QVFIsCj4gPiA+ID4gKyAg ICAgICAgIC5mYiA9ICZmYiwKPiA+ID4gPiArICAgICAgICAgLnZpc2libGUgPSB0cnVlLAo+ID4g PiA+ICsgfTsKPiA+ID4gPiArCj4gPiA+ID4gKyAvKiBQbGFuZSBzcmMgbW92ZWQgc2luY2Ugb2xk IHBsYW5lIHN0YXRlLiAqLwo+ID4gPiA+ICsgc2V0X3BsYW5lX3NyYygmb2xkX3N0YXRlLCAwLCAw LCAxMDI0IDw8IDE2LCA3NjggPDwgMTYpOwo+ID4gPiA+ICsgc2V0X3BsYW5lX3NyYygmc3RhdGUs IDEwIDw8IDE2LCAxMCA8PCAxNiwKPiA+ID4gPiArICAgICAgICAgICAgICAgKDEwICsgMTAyNCkg PDwgMTYsICgxMCArIDc2OCkgPDwgMTYpOwo+ID4gPiA+ICsgZHJtX2F0b21pY19oZWxwZXJfZGFt YWdlX2l0ZXJfaW5pdCgmaXRlciwgJm9sZF9zdGF0ZSwgJnN0YXRlKTsKPiA+ID4gPiArIGRybV9h dG9taWNfZm9yX2VhY2hfcGxhbmVfZGFtYWdlKCZpdGVyLCAmY2xpcCkKPiA+ID4gPiArICAgICAg ICAgbnVtX2hpdHMrKzsKPiA+ID4gPiArCj4gPiA+ID4gKyBGQUlMKG51bV9oaXRzICE9IDEsICJT aG91bGQgcmV0dXJuIHBsYW5lIHNyYyBhcyBkYW1hZ2UuIik7Cj4gPiA+ID4gKyBGQUlMX09OKCFj aGVja19kYW1hZ2VfY2xpcCgmc3RhdGUsICZjbGlwLCAxMCwgMTAsIDEwMzQsIDc3OCkpOwo+ID4g PiA+ICsKPiA+ID4gPiArIHJldHVybiAwOwo+ID4gPiA+ICt9Cj4gPiA+ID4gKwo+ID4gPiA+ICtz dGF0aWMgaW50IGlndF9kYW1hZ2VfaXRlcl9ub19kYW1hZ2VfZnJhY3Rpb25hbF9zcmNfbW92ZWQo dm9pZCAqaWdub3JlZCkKPiA+ID4gPiArewo+ID4gPiA+ICsgc3RydWN0IGRybV9hdG9taWNfaGVs cGVyX2RhbWFnZV9pdGVyIGl0ZXI7Cj4gPiA+ID4gKyBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlIG9s ZF9zdGF0ZTsKPiA+ID4gPiArIHN0cnVjdCBkcm1fcmVjdCBjbGlwOwo+ID4gPiA+ICsgdWludDMy X3QgbnVtX2hpdHMgPSAwOwo+ID4gPiA+ICsKPiA+ID4gPiArIHN0cnVjdCBkcm1fZnJhbWVidWZm ZXIgZmIgPSB7Cj4gPiA+ID4gKyAgICAgICAgIC53aWR0aCA9IDIwNDgsCj4gPiA+ID4gKyAgICAg ICAgIC5oZWlnaHQgPSAyMDQ4Cj4gPiA+ID4gKyB9Owo+ID4gPiA+ICsKPiA+ID4gPiArIHN0cnVj dCBkcm1fcGxhbmVfc3RhdGUgc3RhdGUgPSB7Cj4gPiA+ID4gKyAgICAgICAgIC5jcnRjID0gWkVS T19TSVpFX1BUUiwKPiA+ID4gPiArICAgICAgICAgLmZiID0gJmZiLAo+ID4gPiA+ICsgICAgICAg ICAudmlzaWJsZSA9IHRydWUsCj4gPiA+ID4gKyB9Owo+ID4gPiA+ICsKPiA+ID4gPiArIC8qIFBs YW5lIHNyYyBoYXMgZnJhY3Rpb25hbCBwYXJ0IGFuZCBpdCBtb3ZlZCBzaW5jZSBvbGQgcGxhbmUg c3RhdGUuICovCj4gPiA+ID4gKyBzZXRfcGxhbmVfc3JjKCZvbGRfc3RhdGUsIDB4M2ZmZmUsIDB4 M2ZmZmUsCj4gPiA+ID4gKyAgICAgICAgICAgICAgIDB4M2ZmZmUgKyAoMTAyNCA8PCAxNiksIDB4 M2ZmZmUgKyAoNzY4IDw8IDE2KSk7Cj4gPiA+ID4gKyBzZXRfcGxhbmVfc3JjKCZzdGF0ZSwgMHg0 MDAwMiwgMHg0MDAwMiwKPiA+ID4gPiArICAgICAgICAgICAgICAgMHg0MDAwMiArICgxMDI0IDw8 IDE2KSwgMHg0MDAwMiArICg3NjggPDwgMTYpKTsKPiA+ID4gPiArIGRybV9hdG9taWNfaGVscGVy X2RhbWFnZV9pdGVyX2luaXQoJml0ZXIsICZvbGRfc3RhdGUsICZzdGF0ZSk7Cj4gPiA+ID4gKyBk cm1fYXRvbWljX2Zvcl9lYWNoX3BsYW5lX2RhbWFnZSgmaXRlciwgJmNsaXApCj4gPiA+ID4gKyAg ICAgICAgIG51bV9oaXRzKys7Cj4gPiA+ID4gKwo+ID4gPiA+ICsgRkFJTChudW1faGl0cyAhPSAx LCAiU2hvdWxkIHJldHVybiBwbGFuZSBzcmMgYXMgZGFtYWdlLiIpOwo+ID4gPiA+ICsgRkFJTF9P TighY2hlY2tfZGFtYWdlX2NsaXAoJnN0YXRlLCAmY2xpcCwgNCwgNCwgMTAyOSwgNzczKSk7Cj4g PiA+ID4gKwo+ID4gPiA+ICsgcmV0dXJuIDA7Cj4gPiA+ID4gK30KPiA+ID4gPiArCj4gPiA+ID4g K3N0YXRpYyBpbnQgaWd0X2RhbWFnZV9pdGVyX25vX2RhbWFnZV9ub3RfdmlzaWJsZSh2b2lkICpp Z25vcmVkKQo+ID4gPiA+ICt7Cj4gPiA+ID4gKyBzdHJ1Y3QgZHJtX2F0b21pY19oZWxwZXJfZGFt YWdlX2l0ZXIgaXRlcjsKPiA+ID4gPiArIHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgb2xkX3N0YXRl Owo+ID4gPiA+ICsgc3RydWN0IGRybV9yZWN0IGNsaXA7Cj4gPiA+ID4gKyB1aW50MzJfdCBudW1f aGl0cyA9IDA7Cj4gPiA+ID4gKwo+ID4gPiA+ICsgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciBmYiA9 IHsKPiA+ID4gPiArICAgICAgICAgLndpZHRoID0gMjA0OCwKPiA+ID4gPiArICAgICAgICAgLmhl aWdodCA9IDIwNDgKPiA+ID4gPiArIH07Cj4gPiA+ID4gKwo+ID4gPiA+ICsgc3RydWN0IGRybV9w bGFuZV9zdGF0ZSBzdGF0ZSA9IHsKPiA+ID4gPiArICAgICAgICAgLmNydGMgPSBaRVJPX1NJWkVf UFRSLAo+ID4gPiA+ICsgICAgICAgICAuZmIgPSAmZmIsCj4gPiA+ID4gKyAgICAgICAgIC52aXNp YmxlID0gZmFsc2UsCj4gPiA+ID4gKyB9Owo+ID4gPiA+ICsKPiA+ID4gPiArIHNldF9wbGFuZV9z cmMoJm9sZF9zdGF0ZSwgMCwgMCwgMTAyNCA8PCAxNiwgNzY4IDw8IDE2KTsKPiA+ID4gPiArIHNl dF9wbGFuZV9zcmMoJnN0YXRlLCAwLCAwLCAxMDI0IDw8IDE2LCA3NjggPDwgMTYpOwo+ID4gPiA+ ICsgZHJtX2F0b21pY19oZWxwZXJfZGFtYWdlX2l0ZXJfaW5pdCgmaXRlciwgJm9sZF9zdGF0ZSwg JnN0YXRlKTsKPiA+ID4gPiArIGRybV9hdG9taWNfZm9yX2VhY2hfcGxhbmVfZGFtYWdlKCZpdGVy LCAmY2xpcCkKPiA+ID4gPiArICAgICAgICAgbnVtX2hpdHMrKzsKPiA+ID4gPiArCj4gPiA+ID4g KyBGQUlMKG51bV9oaXRzICE9IDAsICJTaG91bGQgaGF2ZSBubyBkYW1hZ2UuIik7Cj4gPiA+ID4g Kwo+ID4gPiA+ICsgcmV0dXJuIDA7Cj4gPiA+ID4gK30KPiA+ID4gPiArCj4gPiA+ID4gK3N0YXRp YyBpbnQgaWd0X2RhbWFnZV9pdGVyX25vX2RhbWFnZV9ub19jcnRjKHZvaWQgKmlnbm9yZWQpCj4g PiA+ID4gK3sKPiA+ID4gPiArIHN0cnVjdCBkcm1fYXRvbWljX2hlbHBlcl9kYW1hZ2VfaXRlciBp dGVyOwo+ID4gPiA+ICsgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSBvbGRfc3RhdGU7Cj4gPiA+ID4g KyBzdHJ1Y3QgZHJtX3JlY3QgY2xpcDsKPiA+ID4gPiArIHVpbnQzMl90IG51bV9oaXRzID0gMDsK PiA+ID4gPiArCj4gPiA+ID4gKyBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyIGZiID0gewo+ID4gPiA+ ICsgICAgICAgICAud2lkdGggPSAyMDQ4LAo+ID4gPiA+ICsgICAgICAgICAuaGVpZ2h0ID0gMjA0 OAo+ID4gPiA+ICsgfTsKPiA+ID4gPiArCj4gPiA+ID4gKyBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRl IHN0YXRlID0gewo+ID4gPiA+ICsgICAgICAgICAuY3J0YyA9IDAsCj4gPiA+ID4gKyAgICAgICAg IC5mYiA9ICZmYiwKPiA+ID4gPiArIH07Cj4gPiA+ID4gKwo+ID4gPiA+ICsgc2V0X3BsYW5lX3Ny Yygmb2xkX3N0YXRlLCAwLCAwLCAxMDI0IDw8IDE2LCA3NjggPDwgMTYpOwo+ID4gPiA+ICsgc2V0 X3BsYW5lX3NyYygmc3RhdGUsIDAsIDAsIDEwMjQgPDwgMTYsIDc2OCA8PCAxNik7Cj4gPiA+ID4g KyBkcm1fYXRvbWljX2hlbHBlcl9kYW1hZ2VfaXRlcl9pbml0KCZpdGVyLCAmb2xkX3N0YXRlLCAm c3RhdGUpOwo+ID4gPiA+ICsgZHJtX2F0b21pY19mb3JfZWFjaF9wbGFuZV9kYW1hZ2UoJml0ZXIs ICZjbGlwKQo+ID4gPiA+ICsgICAgICAgICBudW1faGl0cysrOwo+ID4gPiA+ICsKPiA+ID4gPiAr IEZBSUwobnVtX2hpdHMgIT0gMCwgIlNob3VsZCBoYXZlIG5vIGRhbWFnZS4iKTsKPiA+ID4gPiAr Cj4gPiA+ID4gKyByZXR1cm4gMDsKPiA+ID4gPiArfQo+ID4gPiA+ICsKPiA+ID4gPiArc3RhdGlj IGludCBpZ3RfZGFtYWdlX2l0ZXJfbm9fZGFtYWdlX25vX2ZiKHZvaWQgKmlnbm9yZWQpCj4gPiA+ ID4gK3sKPiA+ID4gPiArIHN0cnVjdCBkcm1fYXRvbWljX2hlbHBlcl9kYW1hZ2VfaXRlciBpdGVy Owo+ID4gPiA+ICsgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSBvbGRfc3RhdGU7Cj4gPiA+ID4gKyBz dHJ1Y3QgZHJtX3JlY3QgY2xpcDsKPiA+ID4gPiArIHVpbnQzMl90IG51bV9oaXRzID0gMDsKPiA+ ID4gPiArCj4gPiA+ID4gKyBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlIHN0YXRlID0gewo+ID4gPiA+ ICsgICAgICAgICAuY3J0YyA9IFpFUk9fU0laRV9QVFIsCj4gPiA+ID4gKyAgICAgICAgIC5mYiA9 IDAsCj4gPiA+ID4gKyB9Owo+ID4gPiA+ICsKPiA+ID4gPiArIHNldF9wbGFuZV9zcmMoJm9sZF9z dGF0ZSwgMCwgMCwgMTAyNCA8PCAxNiwgNzY4IDw8IDE2KTsKPiA+ID4gPiArIHNldF9wbGFuZV9z cmMoJnN0YXRlLCAwLCAwLCAxMDI0IDw8IDE2LCA3NjggPDwgMTYpOwo+ID4gPiA+ICsgZHJtX2F0 b21pY19oZWxwZXJfZGFtYWdlX2l0ZXJfaW5pdCgmaXRlciwgJm9sZF9zdGF0ZSwgJnN0YXRlKTsK PiA+ID4gPiArIGRybV9hdG9taWNfZm9yX2VhY2hfcGxhbmVfZGFtYWdlKCZpdGVyLCAmY2xpcCkK PiA+ID4gPiArICAgICAgICAgbnVtX2hpdHMrKzsKPiA+ID4gPiArCj4gPiA+ID4gKyBGQUlMKG51 bV9oaXRzICE9IDAsICJTaG91bGQgaGF2ZSBubyBkYW1hZ2UuIik7Cj4gPiA+ID4gKwo+ID4gPiA+ ICsgcmV0dXJuIDA7Cj4gPiA+ID4gK30KPiA+ID4gPiArCj4gPiA+ID4gK3N0YXRpYyBpbnQgaWd0 X2RhbWFnZV9pdGVyX3NpbXBsZV9kYW1hZ2Uodm9pZCAqaWdub3JlZCkKPiA+ID4gPiArewo+ID4g PiA+ICsgc3RydWN0IGRybV9hdG9taWNfaGVscGVyX2RhbWFnZV9pdGVyIGl0ZXI7Cj4gPiA+ID4g KyBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlIG9sZF9zdGF0ZTsKPiA+ID4gPiArIHN0cnVjdCBkcm1f cHJvcGVydHlfYmxvYiBkYW1hZ2VfYmxvYjsKPiA+ID4gPiArIHN0cnVjdCBkcm1fbW9kZV9yZWN0 IGRhbWFnZTsKPiA+ID4gPiArIHN0cnVjdCBkcm1fcmVjdCBjbGlwOwo+ID4gPiA+ICsgdWludDMy X3QgbnVtX2hpdHMgPSAwOwo+ID4gPiA+ICsKPiA+ID4gPiArIHN0cnVjdCBkcm1fZnJhbWVidWZm ZXIgZmIgPSB7Cj4gPiA+ID4gKyAgICAgICAgIC53aWR0aCA9IDIwNDgsCj4gPiA+ID4gKyAgICAg ICAgIC5oZWlnaHQgPSAyMDQ4Cj4gPiA+ID4gKyB9Owo+ID4gPiA+ICsKPiA+ID4gPiArIHN0cnVj dCBkcm1fcGxhbmVfc3RhdGUgc3RhdGUgPSB7Cj4gPiA+ID4gKyAgICAgICAgIC5jcnRjID0gWkVS T19TSVpFX1BUUiwKPiA+ID4gPiArICAgICAgICAgLmZiID0gJmZiLAo+ID4gPiA+ICsgICAgICAg ICAudmlzaWJsZSA9IHRydWUsCj4gPiA+ID4gKyB9Owo+ID4gPiA+ICsKPiA+ID4gPiArIHNldF9w bGFuZV9zcmMoJm9sZF9zdGF0ZSwgMCwgMCwgMTAyNCA8PCAxNiwgNzY4IDw8IDE2KTsKPiA+ID4g PiArIHNldF9wbGFuZV9zcmMoJnN0YXRlLCAwLCAwLCAxMDI0IDw8IDE2LCA3NjggPDwgMTYpOwo+ ID4gPiA+ICsgLyogRGFtYWdlIHNldCB0byBwbGFuZSBzcmMgKi8KPiA+ID4gPiArIHNldF9kYW1h Z2VfY2xpcCgmZGFtYWdlLCAwLCAwLCAxMDI0LCA3NjgpOwo+ID4gPiA+ICsgc2V0X2RhbWFnZV9i bG9iKCZkYW1hZ2VfYmxvYiwgJmRhbWFnZSwgc2l6ZW9mKGRhbWFnZSkpOwo+ID4gPiA+ICsgc2V0 X3BsYW5lX2RhbWFnZSgmc3RhdGUsICZkYW1hZ2VfYmxvYik7Cj4gPiA+ID4gKyBkcm1fYXRvbWlj X2hlbHBlcl9kYW1hZ2VfaXRlcl9pbml0KCZpdGVyLCAmb2xkX3N0YXRlLCAmc3RhdGUpOwo+ID4g PiA+ICsgZHJtX2F0b21pY19mb3JfZWFjaF9wbGFuZV9kYW1hZ2UoJml0ZXIsICZjbGlwKQo+ID4g PiA+ICsgICAgICAgICBudW1faGl0cysrOwo+ID4gPiA+ICsKPiA+ID4gPiArIEZBSUwobnVtX2hp dHMgIT0gMSwgIlNob3VsZCByZXR1cm4gZGFtYWdlIHdoZW4gc2V0LiIpOwo+ID4gPiA+ICsgRkFJ TF9PTighY2hlY2tfZGFtYWdlX2NsaXAoJnN0YXRlLCAmY2xpcCwgMCwgMCwgMTAyNCwgNzY4KSk7 Cj4gPiA+ID4gKwo+ID4gPiA+ICsgcmV0dXJuIDA7Cj4gPiA+ID4gK30KPiA+ID4gPiArCj4gPiA+ ID4gK3N0YXRpYyBpbnQgaWd0X2RhbWFnZV9pdGVyX3NpbmdsZV9kYW1hZ2Uodm9pZCAqaWdub3Jl ZCkKPiA+ID4gPiArewo+ID4gPiA+ICsgc3RydWN0IGRybV9hdG9taWNfaGVscGVyX2RhbWFnZV9p dGVyIGl0ZXI7Cj4gPiA+ID4gKyBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlIG9sZF9zdGF0ZTsKPiA+ ID4gPiArIHN0cnVjdCBkcm1fcHJvcGVydHlfYmxvYiBkYW1hZ2VfYmxvYjsKPiA+ID4gPiArIHN0 cnVjdCBkcm1fbW9kZV9yZWN0IGRhbWFnZTsKPiA+ID4gPiArIHN0cnVjdCBkcm1fcmVjdCBjbGlw Owo+ID4gPiA+ICsgdWludDMyX3QgbnVtX2hpdHMgPSAwOwo+ID4gPiA+ICsKPiA+ID4gPiArIHN0 cnVjdCBkcm1fZnJhbWVidWZmZXIgZmIgPSB7Cj4gPiA+ID4gKyAgICAgICAgIC53aWR0aCA9IDIw NDgsCj4gPiA+ID4gKyAgICAgICAgIC5oZWlnaHQgPSAyMDQ4Cj4gPiA+ID4gKyB9Owo+ID4gPiA+ ICsKPiA+ID4gPiArIHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgc3RhdGUgPSB7Cj4gPiA+ID4gKyAg ICAgICAgIC5jcnRjID0gWkVST19TSVpFX1BUUiwKPiA+ID4gPiArICAgICAgICAgLmZiID0gJmZi LAo+ID4gPiA+ICsgICAgICAgICAudmlzaWJsZSA9IHRydWUsCj4gPiA+ID4gKyB9Owo+ID4gPiA+ ICsKPiA+ID4gPiArIHNldF9wbGFuZV9zcmMoJm9sZF9zdGF0ZSwgMCwgMCwgMTAyNCA8PCAxNiwg NzY4IDw8IDE2KTsKPiA+ID4gPiArIHNldF9wbGFuZV9zcmMoJnN0YXRlLCAwLCAwLCAxMDI0IDw8 IDE2LCA3NjggPDwgMTYpOwo+ID4gPiA+ICsgc2V0X2RhbWFnZV9jbGlwKCZkYW1hZ2UsIDI1Niwg MTkyLCA3NjgsIDU3Nik7Cj4gPiA+ID4gKyBzZXRfZGFtYWdlX2Jsb2IoJmRhbWFnZV9ibG9iLCAm ZGFtYWdlLCBzaXplb2YoZGFtYWdlKSk7Cj4gPiA+ID4gKyBzZXRfcGxhbmVfZGFtYWdlKCZzdGF0 ZSwgJmRhbWFnZV9ibG9iKTsKPiA+ID4gPiArIGRybV9hdG9taWNfaGVscGVyX2RhbWFnZV9pdGVy X2luaXQoJml0ZXIsICZvbGRfc3RhdGUsICZzdGF0ZSk7Cj4gPiA+ID4gKyBkcm1fYXRvbWljX2Zv cl9lYWNoX3BsYW5lX2RhbWFnZSgmaXRlciwgJmNsaXApCj4gPiA+ID4gKyAgICAgICAgIG51bV9o aXRzKys7Cj4gPiA+ID4gKwo+ID4gPiA+ICsgRkFJTChudW1faGl0cyAhPSAxLCAiU2hvdWxkIHJl dHVybiBkYW1hZ2Ugd2hlbiBzZXQuIik7Cj4gPiA+ID4gKyBGQUlMX09OKCFjaGVja19kYW1hZ2Vf Y2xpcCgmc3RhdGUsICZjbGlwLCAyNTYsIDE5MiwgNzY4LCA1NzYpKTsKPiA+ID4gPiArCj4gPiA+ ID4gKyByZXR1cm4gMDsKPiA+ID4gPiArfQo+ID4gPiA+ICsKPiA+ID4gPiArc3RhdGljIGludCBp Z3RfZGFtYWdlX2l0ZXJfc2luZ2xlX2RhbWFnZV9pbnRlcnNlY3Rfc3JjKHZvaWQgKmlnbm9yZWQp Cj4gPiA+ID4gK3sKPiA+ID4gPiArIHN0cnVjdCBkcm1fYXRvbWljX2hlbHBlcl9kYW1hZ2VfaXRl ciBpdGVyOwo+ID4gPiA+ICsgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSBvbGRfc3RhdGU7Cj4gPiA+ ID4gKyBzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgZGFtYWdlX2Jsb2I7Cj4gPiA+ID4gKyBzdHJ1 Y3QgZHJtX21vZGVfcmVjdCBkYW1hZ2U7Cj4gPiA+ID4gKyBzdHJ1Y3QgZHJtX3JlY3QgY2xpcDsK PiA+ID4gPiArIHVpbnQzMl90IG51bV9oaXRzID0gMDsKPiA+ID4gPiArCj4gPiA+ID4gKyBzdHJ1 Y3QgZHJtX2ZyYW1lYnVmZmVyIGZiID0gewo+ID4gPiA+ICsgICAgICAgICAud2lkdGggPSAyMDQ4 LAo+ID4gPiA+ICsgICAgICAgICAuaGVpZ2h0ID0gMjA0OAo+ID4gPiA+ICsgfTsKPiA+ID4gPiAr Cj4gPiA+ID4gKyBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlIHN0YXRlID0gewo+ID4gPiA+ICsgICAg ICAgICAuY3J0YyA9IFpFUk9fU0laRV9QVFIsCj4gPiA+ID4gKyAgICAgICAgIC5mYiA9ICZmYiwK PiA+ID4gPiArICAgICAgICAgLnZpc2libGUgPSB0cnVlLAo+ID4gPiA+ICsgfTsKPiA+ID4gPiAr Cj4gPiA+ID4gKyBzZXRfcGxhbmVfc3JjKCZvbGRfc3RhdGUsIDAsIDAsIDEwMjQgPDwgMTYsIDc2 OCA8PCAxNik7Cj4gPiA+ID4gKyBzZXRfcGxhbmVfc3JjKCZzdGF0ZSwgMCwgMCwgMTAyNCA8PCAx NiwgNzY4IDw8IDE2KTsKPiA+ID4gPiArIC8qIERhbWFnZSBpbnRlcnNlY3Qgd2l0aCBwbGFuZSBz cmMuICovCj4gPiA+ID4gKyBzZXRfZGFtYWdlX2NsaXAoJmRhbWFnZSwgMjU2LCAxOTIsIDEzNjAs IDc2OCk7Cj4gPiA+ID4gKyBzZXRfZGFtYWdlX2Jsb2IoJmRhbWFnZV9ibG9iLCAmZGFtYWdlLCBz aXplb2YoZGFtYWdlKSk7Cj4gPiA+ID4gKyBzZXRfcGxhbmVfZGFtYWdlKCZzdGF0ZSwgJmRhbWFn ZV9ibG9iKTsKPiA+ID4gPiArIGRybV9hdG9taWNfaGVscGVyX2RhbWFnZV9pdGVyX2luaXQoJml0 ZXIsICZvbGRfc3RhdGUsICZzdGF0ZSk7Cj4gPiA+ID4gKyBkcm1fYXRvbWljX2Zvcl9lYWNoX3Bs YW5lX2RhbWFnZSgmaXRlciwgJmNsaXApCj4gPiA+ID4gKyAgICAgICAgIG51bV9oaXRzKys7Cj4g PiA+ID4gKwo+ID4gPiA+ICsgRkFJTChudW1faGl0cyAhPSAxLCAiU2hvdWxkIHJldHVybiBkYW1h Z2UgY2xpcHBlZCB0byBzcmMuIik7Cj4gPiA+ID4gKyBGQUlMX09OKCFjaGVja19kYW1hZ2VfY2xp cCgmc3RhdGUsICZjbGlwLCAyNTYsIDE5MiwgMTAyNCwgNzY4KSk7Cj4gPiA+ID4gKwo+ID4gPiA+ ICsgcmV0dXJuIDA7Cj4gPiA+ID4gK30KPiA+ID4gPiArCj4gPiA+ID4gK3N0YXRpYyBpbnQgaWd0 X2RhbWFnZV9pdGVyX3NpbmdsZV9kYW1hZ2Vfb3V0c2lkZV9zcmModm9pZCAqaWdub3JlZCkKPiA+ ID4gPiArewo+ID4gPiA+ICsgc3RydWN0IGRybV9hdG9taWNfaGVscGVyX2RhbWFnZV9pdGVyIGl0 ZXI7Cj4gPiA+ID4gKyBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlIG9sZF9zdGF0ZTsKPiA+ID4gPiAr IHN0cnVjdCBkcm1fcHJvcGVydHlfYmxvYiBkYW1hZ2VfYmxvYjsKPiA+ID4gPiArIHN0cnVjdCBk cm1fbW9kZV9yZWN0IGRhbWFnZTsKPiA+ID4gPiArIHN0cnVjdCBkcm1fcmVjdCBjbGlwOwo+ID4g PiA+ICsgdWludDMyX3QgbnVtX2hpdHMgPSAwOwo+ID4gPiA+ICsKPiA+ID4gPiArIHN0cnVjdCBk cm1fZnJhbWVidWZmZXIgZmIgPSB7Cj4gPiA+ID4gKyAgICAgICAgIC53aWR0aCA9IDIwNDgsCj4g PiA+ID4gKyAgICAgICAgIC5oZWlnaHQgPSAyMDQ4Cj4gPiA+ID4gKyB9Owo+ID4gPiA+ICsKPiA+ ID4gPiArIHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgc3RhdGUgPSB7Cj4gPiA+ID4gKyAgICAgICAg IC5jcnRjID0gWkVST19TSVpFX1BUUiwKPiA+ID4gPiArICAgICAgICAgLmZiID0gJmZiLAo+ID4g PiA+ICsgICAgICAgICAudmlzaWJsZSA9IHRydWUsCj4gPiA+ID4gKyB9Owo+ID4gPiA+ICsKPiA+ ID4gPiArIHNldF9wbGFuZV9zcmMoJm9sZF9zdGF0ZSwgMCwgMCwgMTAyNCA8PCAxNiwgNzY4IDw8 IDE2KTsKPiA+ID4gPiArIHNldF9wbGFuZV9zcmMoJnN0YXRlLCAwLCAwLCAxMDI0IDw8IDE2LCA3 NjggPDwgMTYpOwo+ID4gPiA+ICsgLyogRGFtYWdlIGNsaXAgb3V0c2lkZSBwbGFuZSBzcmMgKi8K PiA+ID4gPiArIHNldF9kYW1hZ2VfY2xpcCgmZGFtYWdlLCAxMzYwLCAxMzYwLCAxMzgwLCAxMzgw KTsKPiA+ID4gPiArIHNldF9kYW1hZ2VfYmxvYigmZGFtYWdlX2Jsb2IsICZkYW1hZ2UsIHNpemVv ZihkYW1hZ2UpKTsKPiA+ID4gPiArIHNldF9wbGFuZV9kYW1hZ2UoJnN0YXRlLCAmZGFtYWdlX2Js b2IpOwo+ID4gPiA+ICsgZHJtX2F0b21pY19oZWxwZXJfZGFtYWdlX2l0ZXJfaW5pdCgmaXRlciwg Jm9sZF9zdGF0ZSwgJnN0YXRlKTsKPiA+ID4gPiArIGRybV9hdG9taWNfZm9yX2VhY2hfcGxhbmVf ZGFtYWdlKCZpdGVyLCAmY2xpcCkKPiA+ID4gPiArICAgICAgICAgbnVtX2hpdHMrKzsKPiA+ID4g PiArCj4gPiA+ID4gKyBGQUlMKG51bV9oaXRzICE9IDAsICJTaG91bGQgaGF2ZSBubyBkYW1hZ2Uu Iik7Cj4gPiA+ID4gKwo+ID4gPiA+ICsgcmV0dXJuIDA7Cj4gPiA+ID4gK30KPiA+ID4gPiArCj4g PiA+ID4gK3N0YXRpYyBpbnQgaWd0X2RhbWFnZV9pdGVyX3NpbmdsZV9kYW1hZ2VfZnJhY3Rpb25h bF9zcmModm9pZCAqaWdub3JlZCkKPiA+ID4gPiArewo+ID4gPiA+ICsgc3RydWN0IGRybV9hdG9t aWNfaGVscGVyX2RhbWFnZV9pdGVyIGl0ZXI7Cj4gPiA+ID4gKyBzdHJ1Y3QgZHJtX3BsYW5lX3N0 YXRlIG9sZF9zdGF0ZTsKPiA+ID4gPiArIHN0cnVjdCBkcm1fcHJvcGVydHlfYmxvYiBkYW1hZ2Vf YmxvYjsKPiA+ID4gPiArIHN0cnVjdCBkcm1fbW9kZV9yZWN0IGRhbWFnZTsKPiA+ID4gPiArIHN0 cnVjdCBkcm1fcmVjdCBjbGlwOwo+ID4gPiA+ICsgdWludDMyX3QgbnVtX2hpdHMgPSAwOwo+ID4g PiA+ICsKPiA+ID4gPiArIHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgZmIgPSB7Cj4gPiA+ID4gKyAg ICAgICAgIC53aWR0aCA9IDIwNDgsCj4gPiA+ID4gKyAgICAgICAgIC5oZWlnaHQgPSAyMDQ4Cj4g PiA+ID4gKyB9Owo+ID4gPiA+ICsKPiA+ID4gPiArIHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgc3Rh dGUgPSB7Cj4gPiA+ID4gKyAgICAgICAgIC5jcnRjID0gWkVST19TSVpFX1BUUiwKPiA+ID4gPiAr ICAgICAgICAgLmZiID0gJmZiLAo+ID4gPiA+ICsgICAgICAgICAudmlzaWJsZSA9IHRydWUsCj4g PiA+ID4gKyB9Owo+ID4gPiA+ICsKPiA+ID4gPiArIC8qIFBsYW5lIHNyYyBoYXMgZnJhY3Rpb25h bCBwYXJ0LiAqLwo+ID4gPiA+ICsgc2V0X3BsYW5lX3NyYygmb2xkX3N0YXRlLCAweDQwMDAyLCAw eDQwMDAyLAo+ID4gPiA+ICsgICAgICAgICAgICAgICAweDQwMDAyICsgKDEwMjQgPDwgMTYpLCAw eDQwMDAyICsgKDc2OCA8PCAxNikpOwo+ID4gPiA+ICsgc2V0X3BsYW5lX3NyYygmc3RhdGUsIDB4 NDAwMDIsIDB4NDAwMDIsCj4gPiA+ID4gKyAgICAgICAgICAgICAgIDB4NDAwMDIgKyAoMTAyNCA8 PCAxNiksIDB4NDAwMDIgKyAoNzY4IDw8IDE2KSk7Cj4gPiA+ID4gKyBzZXRfZGFtYWdlX2NsaXAo JmRhbWFnZSwgMTAsIDEwLCAyNTYsIDMzMCk7Cj4gPiA+ID4gKyBzZXRfZGFtYWdlX2Jsb2IoJmRh bWFnZV9ibG9iLCAmZGFtYWdlLCBzaXplb2YoZGFtYWdlKSk7Cj4gPiA+ID4gKyBzZXRfcGxhbmVf ZGFtYWdlKCZzdGF0ZSwgJmRhbWFnZV9ibG9iKTsKPiA+ID4gPiArIGRybV9hdG9taWNfaGVscGVy X2RhbWFnZV9pdGVyX2luaXQoJml0ZXIsICZvbGRfc3RhdGUsICZzdGF0ZSk7Cj4gPiA+ID4gKyBk cm1fYXRvbWljX2Zvcl9lYWNoX3BsYW5lX2RhbWFnZSgmaXRlciwgJmNsaXApCj4gPiA+ID4gKyAg ICAgICAgIG51bV9oaXRzKys7Cj4gPiA+ID4gKwo+ID4gPiA+ICsgRkFJTChudW1faGl0cyAhPSAx LCAiU2hvdWxkIHJldHVybiBkYW1hZ2Ugd2hlbiBzZXQuIik7Cj4gPiA+ID4gKyBGQUlMX09OKCFj aGVja19kYW1hZ2VfY2xpcCgmc3RhdGUsICZjbGlwLCAxMCwgMTAsIDI1NiwgMzMwKSk7Cj4gPiA+ ID4gKwo+ID4gPiA+ICsgcmV0dXJuIDA7Cj4gPiA+ID4gK30KPiA+ID4gPiArCj4gPiA+ID4gK3N0 YXRpYyBpbnQgaWd0X2RhbWFnZV9pdGVyX3NpbmdsZV9kYW1hZ2VfaW50ZXJzZWN0X2ZyYWN0aW9u YWxfc3JjKHZvaWQKPiA+ID4gKmlnbm9yZWQpCj4gPiA+ID4gK3sKPiA+ID4gPiArIHN0cnVjdCBk cm1fYXRvbWljX2hlbHBlcl9kYW1hZ2VfaXRlciBpdGVyOwo+ID4gPiA+ICsgc3RydWN0IGRybV9w bGFuZV9zdGF0ZSBvbGRfc3RhdGU7Cj4gPiA+ID4gKyBzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2Ig ZGFtYWdlX2Jsb2I7Cj4gPiA+ID4gKyBzdHJ1Y3QgZHJtX21vZGVfcmVjdCBkYW1hZ2U7Cj4gPiA+ ID4gKyBzdHJ1Y3QgZHJtX3JlY3QgY2xpcDsKPiA+ID4gPiArIHVpbnQzMl90IG51bV9oaXRzID0g MDsKPiA+ID4gPiArCj4gPiA+ID4gKyBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyIGZiID0gewo+ID4g PiA+ICsgICAgICAgICAud2lkdGggPSAyMDQ4LAo+ID4gPiA+ICsgICAgICAgICAuaGVpZ2h0ID0g MjA0OAo+ID4gPiA+ICsgfTsKPiA+ID4gPiArCj4gPiA+ID4gKyBzdHJ1Y3QgZHJtX3BsYW5lX3N0 YXRlIHN0YXRlID0gewo+ID4gPiA+ICsgICAgICAgICAuY3J0YyA9IFpFUk9fU0laRV9QVFIsCj4g PiA+ID4gKyAgICAgICAgIC5mYiA9ICZmYiwKPiA+ID4gPiArICAgICAgICAgLnZpc2libGUgPSB0 cnVlLAo+ID4gPiA+ICsgfTsKPiA+ID4gPiArCj4gPiA+ID4gKyAvKiBQbGFuZSBzcmMgaGFzIGZy YWN0aW9uYWwgcGFydC4gKi8KPiA+ID4gPiArIHNldF9wbGFuZV9zcmMoJm9sZF9zdGF0ZSwgMHg0 MDAwMiwgMHg0MDAwMiwKPiA+ID4gPiArICAgICAgICAgICAgICAgMHg0MDAwMiArICgxMDI0IDw8 IDE2KSwgMHg0MDAwMiArICg3NjggPDwgMTYpKTsKPiA+ID4gPiArIHNldF9wbGFuZV9zcmMoJnN0 YXRlLCAweDQwMDAyLCAweDQwMDAyLAo+ID4gPiA+ICsgICAgICAgICAgICAgICAweDQwMDAyICsg KDEwMjQgPDwgMTYpLCAweDQwMDAyICsgKDc2OCA8PCAxNikpOwo+ID4gPiA+ICsgLyogRGFtYWdl IGludGVyc2VjdCB3aXRoIHBsYW5lIHNyYy4gKi8KPiA+ID4gPiArIHNldF9kYW1hZ2VfY2xpcCgm ZGFtYWdlLCAxMCwgMSwgMTM2MCwgMzMwKTsKPiA+ID4gPiArIHNldF9kYW1hZ2VfYmxvYigmZGFt YWdlX2Jsb2IsICZkYW1hZ2UsIHNpemVvZihkYW1hZ2UpKTsKPiA+ID4gPiArIHNldF9wbGFuZV9k YW1hZ2UoJnN0YXRlLCAmZGFtYWdlX2Jsb2IpOwo+ID4gPiA+ICsgZHJtX2F0b21pY19oZWxwZXJf ZGFtYWdlX2l0ZXJfaW5pdCgmaXRlciwgJm9sZF9zdGF0ZSwgJnN0YXRlKTsKPiA+ID4gPiArIGRy bV9hdG9taWNfZm9yX2VhY2hfcGxhbmVfZGFtYWdlKCZpdGVyLCAmY2xpcCkKPiA+ID4gPiArICAg ICAgICAgbnVtX2hpdHMrKzsKPiA+ID4gPiArCj4gPiA+ID4gKyBGQUlMKG51bV9oaXRzICE9IDEs ICJTaG91bGQgcmV0dXJuIGRhbWFnZSBjbGlwcGVkIHRvIHJvdW5kZWQgb2ZmIHNyYy4iKTsKPiA+ ID4gPiArIEZBSUxfT04oIWNoZWNrX2RhbWFnZV9jbGlwKCZzdGF0ZSwgJmNsaXAsIDEwLCA0LCAx MDI5LCAzMzApKTsKPiA+ID4gPiArCj4gPiA+ID4gKyByZXR1cm4gMDsKPiA+ID4gPiArfQo+ID4g PiA+ICsKPiA+ID4gPiArc3RhdGljIGludCBpZ3RfZGFtYWdlX2l0ZXJfc2luZ2xlX2RhbWFnZV9v dXRzaWRlX2ZyYWN0aW9uYWxfc3JjKHZvaWQKPiA+ID4gKmlnbm9yZWQpCj4gPiA+ID4gK3sKPiA+ ID4gPiArIHN0cnVjdCBkcm1fYXRvbWljX2hlbHBlcl9kYW1hZ2VfaXRlciBpdGVyOwo+ID4gPiA+ ICsgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSBvbGRfc3RhdGU7Cj4gPiA+ID4gKyBzdHJ1Y3QgZHJt X3Byb3BlcnR5X2Jsb2IgZGFtYWdlX2Jsb2I7Cj4gPiA+ID4gKyBzdHJ1Y3QgZHJtX21vZGVfcmVj dCBkYW1hZ2U7Cj4gPiA+ID4gKyBzdHJ1Y3QgZHJtX3JlY3QgY2xpcDsKPiA+ID4gPiArIHVpbnQz Ml90IG51bV9oaXRzID0gMDsKPiA+ID4gPiArCj4gPiA+ID4gKyBzdHJ1Y3QgZHJtX2ZyYW1lYnVm ZmVyIGZiID0gewo+ID4gPiA+ICsgICAgICAgICAud2lkdGggPSAyMDQ4LAo+ID4gPiA+ICsgICAg ICAgICAuaGVpZ2h0ID0gMjA0OAo+ID4gPiA+ICsgfTsKPiA+ID4gPiArCj4gPiA+ID4gKyBzdHJ1 Y3QgZHJtX3BsYW5lX3N0YXRlIHN0YXRlID0gewo+ID4gPiA+ICsgICAgICAgICAuY3J0YyA9IFpF Uk9fU0laRV9QVFIsCj4gPiA+ID4gKyAgICAgICAgIC5mYiA9ICZmYiwKPiA+ID4gPiArICAgICAg ICAgLnZpc2libGUgPSB0cnVlLAo+ID4gPiA+ICsgfTsKPiA+ID4gPiArCj4gPiA+ID4gKyAvKiBQ bGFuZSBzcmMgaGFzIGZyYWN0aW9uYWwgcGFydC4gKi8KPiA+ID4gPiArIHNldF9wbGFuZV9zcmMo Jm9sZF9zdGF0ZSwgMHg0MDAwMiwgMHg0MDAwMiwKPiA+ID4gPiArICAgICAgICAgICAgICAgMHg0 MDAwMiArICgxMDI0IDw8IDE2KSwgMHg0MDAwMiArICg3NjggPDwgMTYpKTsKPiA+ID4gPiArIHNl dF9wbGFuZV9zcmMoJnN0YXRlLCAweDQwMDAyLCAweDQwMDAyLAo+ID4gPiA+ICsgICAgICAgICAg ICAgICAweDQwMDAyICsgKDEwMjQgPDwgMTYpLCAweDQwMDAyICsgKDc2OCA8PCAxNikpOwo+ID4g PiA+ICsgLyogRGFtYWdlIGNsaXAgb3V0c2lkZSBwbGFuZSBzcmMgKi8KPiA+ID4gPiArIHNldF9k YW1hZ2VfY2xpcCgmZGFtYWdlLCAxMzYwLCAxMzYwLCAxMzgwLCAxMzgwKTsKPiA+ID4gPiArIHNl dF9kYW1hZ2VfYmxvYigmZGFtYWdlX2Jsb2IsICZkYW1hZ2UsIHNpemVvZihkYW1hZ2UpKTsKPiA+ ID4gPiArIHNldF9wbGFuZV9kYW1hZ2UoJnN0YXRlLCAmZGFtYWdlX2Jsb2IpOwo+ID4gPiA+ICsg ZHJtX2F0b21pY19oZWxwZXJfZGFtYWdlX2l0ZXJfaW5pdCgmaXRlciwgJm9sZF9zdGF0ZSwgJnN0 YXRlKTsKPiA+ID4gPiArIGRybV9hdG9taWNfZm9yX2VhY2hfcGxhbmVfZGFtYWdlKCZpdGVyLCAm Y2xpcCkKPiA+ID4gPiArICAgICAgICAgbnVtX2hpdHMrKzsKPiA+ID4gPiArCj4gPiA+ID4gKyBG QUlMKG51bV9oaXRzICE9IDAsICJTaG91bGQgaGF2ZSBubyBkYW1hZ2UuIik7Cj4gPiA+ID4gKwo+ ID4gPiA+ICsgcmV0dXJuIDA7Cj4gPiA+ID4gK30KPiA+ID4gPiArCj4gPiA+ID4gK3N0YXRpYyBp bnQgaWd0X2RhbWFnZV9pdGVyX3NpbmdsZV9kYW1hZ2Vfc3JjX21vdmVkKHZvaWQgKmlnbm9yZWQp Cj4gPiA+ID4gK3sKPiA+ID4gPiArIHN0cnVjdCBkcm1fYXRvbWljX2hlbHBlcl9kYW1hZ2VfaXRl ciBpdGVyOwo+ID4gPiA+ICsgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSBvbGRfc3RhdGU7Cj4gPiA+ ID4gKyBzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgZGFtYWdlX2Jsb2I7Cj4gPiA+ID4gKyBzdHJ1 Y3QgZHJtX21vZGVfcmVjdCBkYW1hZ2U7Cj4gPiA+ID4gKyBzdHJ1Y3QgZHJtX3JlY3QgY2xpcDsK PiA+ID4gPiArIHVpbnQzMl90IG51bV9oaXRzID0gMDsKPiA+ID4gPiArCj4gPiA+ID4gKyBzdHJ1 Y3QgZHJtX2ZyYW1lYnVmZmVyIGZiID0gewo+ID4gPiA+ICsgICAgICAgICAud2lkdGggPSAyMDQ4 LAo+ID4gPiA+ICsgICAgICAgICAuaGVpZ2h0ID0gMjA0OAo+ID4gPiA+ICsgfTsKPiA+ID4gPiAr Cj4gPiA+ID4gKyBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlIHN0YXRlID0gewo+ID4gPiA+ICsgICAg ICAgICAuY3J0YyA9IFpFUk9fU0laRV9QVFIsCj4gPiA+ID4gKyAgICAgICAgIC5mYiA9ICZmYiwK PiA+ID4gPiArICAgICAgICAgLnZpc2libGUgPSB0cnVlLAo+ID4gPiA+ICsgfTsKPiA+ID4gPiAr Cj4gPiA+ID4gKyAvKiBQbGFuZSBzcmMgbW92ZWQgc2luY2Ugb2xkIHBsYW5lIHN0YXRlLiAqLwo+ ID4gPiA+ICsgc2V0X3BsYW5lX3NyYygmb2xkX3N0YXRlLCAwLCAwLCAxMDI0IDw8IDE2LCA3Njgg PDwgMTYpOwo+ID4gPiA+ICsgc2V0X3BsYW5lX3NyYygmc3RhdGUsIDEwIDw8IDE2LCAxMCA8PCAx NiwKPiA+ID4gPiArICAgICAgICAgICAgICAgKDEwICsgMTAyNCkgPDwgMTYsICgxMCArIDc2OCkg PDwgMTYpOwo+ID4gPiA+ICsgc2V0X2RhbWFnZV9jbGlwKCZkYW1hZ2UsIDIwLCAzMCwgMjU2LCAy NTYpOwo+ID4gPiA+ICsgc2V0X2RhbWFnZV9ibG9iKCZkYW1hZ2VfYmxvYiwgJmRhbWFnZSwgc2l6 ZW9mKGRhbWFnZSkpOwo+ID4gPiA+ICsgc2V0X3BsYW5lX2RhbWFnZSgmc3RhdGUsICZkYW1hZ2Vf YmxvYik7Cj4gPiA+ID4gKyBkcm1fYXRvbWljX2hlbHBlcl9kYW1hZ2VfaXRlcl9pbml0KCZpdGVy LCAmb2xkX3N0YXRlLCAmc3RhdGUpOwo+ID4gPiA+ICsgZHJtX2F0b21pY19mb3JfZWFjaF9wbGFu ZV9kYW1hZ2UoJml0ZXIsICZjbGlwKQo+ID4gPiA+ICsgICAgICAgICBudW1faGl0cysrOwo+ID4g PiA+ICsKPiA+ID4gPiArIEZBSUwobnVtX2hpdHMgIT0gMSwgIlNob3VsZCByZXR1cm4gcGxhbmUg c3JjIGFzIGRhbWFnZS4iKTsKPiA+ID4gPiArIEZBSUxfT04oIWNoZWNrX2RhbWFnZV9jbGlwKCZz dGF0ZSwgJmNsaXAsIDEwLCAxMCwgMTAzNCwgNzc4KSk7Cj4gPiA+ID4gKwo+ID4gPiA+ICsgcmV0 dXJuIDA7Cj4gPiA+ID4gK30KPiA+ID4gPiArCj4gPiA+ID4gK3N0YXRpYyBpbnQgaWd0X2RhbWFn ZV9pdGVyX3NpbmdsZV9kYW1hZ2VfZnJhY3Rpb25hbF9zcmNfbW92ZWQodm9pZAo+ID4gPiAqaWdu b3JlZCkKPiA+ID4gPiArewo+ID4gPiA+ICsgc3RydWN0IGRybV9hdG9taWNfaGVscGVyX2RhbWFn ZV9pdGVyIGl0ZXI7Cj4gPiA+ID4gKyBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlIG9sZF9zdGF0ZTsK PiA+ID4gPiArIHN0cnVjdCBkcm1fcHJvcGVydHlfYmxvYiBkYW1hZ2VfYmxvYjsKPiA+ID4gPiAr IHN0cnVjdCBkcm1fbW9kZV9yZWN0IGRhbWFnZTsKPiA+ID4gPiArIHN0cnVjdCBkcm1fcmVjdCBj bGlwOwo+ID4gPiA+ICsgdWludDMyX3QgbnVtX2hpdHMgPSAwOwo+ID4gPiA+ICsKPiA+ID4gPiAr IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgZmIgPSB7Cj4gPiA+ID4gKyAgICAgICAgIC53aWR0aCA9 IDIwNDgsCj4gPiA+ID4gKyAgICAgICAgIC5oZWlnaHQgPSAyMDQ4Cj4gPiA+ID4gKyB9Owo+ID4g PiA+ICsKPiA+ID4gPiArIHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgc3RhdGUgPSB7Cj4gPiA+ID4g KyAgICAgICAgIC5jcnRjID0gWkVST19TSVpFX1BUUiwKPiA+ID4gPiArICAgICAgICAgLmZiID0g JmZiLAo+ID4gPiA+ICsgICAgICAgICAudmlzaWJsZSA9IHRydWUsCj4gPiA+ID4gKyB9Owo+ID4g PiA+ICsKPiA+ID4gPiArIC8qIFBsYW5lIHNyYyB3aXRoIGZyYWN0aW9uYWwgcGFydCBtb3ZlZCBz aW5jZSBvbGQgcGxhbmUgc3RhdGUuICovCj4gPiA+ID4gKyBzZXRfcGxhbmVfc3JjKCZvbGRfc3Rh dGUsIDB4M2ZmZmUsIDB4M2ZmZmUsCj4gPiA+ID4gKyAgICAgICAgICAgICAgIDB4M2ZmZmUgKyAo MTAyNCA8PCAxNiksIDB4M2ZmZmUgKyAoNzY4IDw8IDE2KSk7Cj4gPiA+ID4gKyBzZXRfcGxhbmVf c3JjKCZzdGF0ZSwgMHg0MDAwMiwgMHg0MDAwMiwKPiA+ID4gPiArICAgICAgICAgICAgICAgMHg0 MDAwMiArICgxMDI0IDw8IDE2KSwgMHg0MDAwMiArICg3NjggPDwgMTYpKTsKPiA+ID4gPiArIC8q IERhbWFnZSBpbnRlcnNlY3Qgd2l0aCBwbGFuZSBzcmMuICovCj4gPiA+ID4gKyBzZXRfZGFtYWdl X2NsaXAoJmRhbWFnZSwgMjAsIDMwLCAxMzYwLCAyNTYpOwo+ID4gPiA+ICsgc2V0X2RhbWFnZV9i bG9iKCZkYW1hZ2VfYmxvYiwgJmRhbWFnZSwgc2l6ZW9mKGRhbWFnZSkpOwo+ID4gPiA+ICsgc2V0 X3BsYW5lX2RhbWFnZSgmc3RhdGUsICZkYW1hZ2VfYmxvYik7Cj4gPiA+ID4gKyBkcm1fYXRvbWlj X2hlbHBlcl9kYW1hZ2VfaXRlcl9pbml0KCZpdGVyLCAmb2xkX3N0YXRlLCAmc3RhdGUpOwo+ID4g PiA+ICsgZHJtX2F0b21pY19mb3JfZWFjaF9wbGFuZV9kYW1hZ2UoJml0ZXIsICZjbGlwKQo+ID4g PiA+ICsgICAgICAgICBudW1faGl0cysrOwo+ID4gPiA+ICsKPiA+ID4gPiArIEZBSUwobnVtX2hp dHMgIT0gMSwgIlNob3VsZCByZXR1cm4gcm91bmRlZCBvZmYgcGxhbmUgc3JjIGFzIGRhbWFnZS4i KTsKPiA+ID4gPiArIEZBSUxfT04oIWNoZWNrX2RhbWFnZV9jbGlwKCZzdGF0ZSwgJmNsaXAsIDQs IDQsIDEwMjksIDc3MykpOwo+ID4gPiA+ICsKPiA+ID4gPiArIHJldHVybiAwOwo+ID4gPiA+ICt9 Cj4gPiA+ID4gKwo+ID4gPiA+ICtzdGF0aWMgaW50IGlndF9kYW1hZ2VfaXRlcl9kYW1hZ2Uodm9p ZCAqaWdub3JlZCkKPiA+ID4gPiArewo+ID4gPiA+ICsgc3RydWN0IGRybV9hdG9taWNfaGVscGVy X2RhbWFnZV9pdGVyIGl0ZXI7Cj4gPiA+ID4gKyBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlIG9sZF9z dGF0ZTsKPiA+ID4gPiArIHN0cnVjdCBkcm1fcHJvcGVydHlfYmxvYiBkYW1hZ2VfYmxvYjsKPiA+ ID4gPiArIHN0cnVjdCBkcm1fbW9kZV9yZWN0IGRhbWFnZVsyXTsKPiA+ID4gPiArIHN0cnVjdCBk cm1fcmVjdCBjbGlwOwo+ID4gPiA+ICsgdWludDMyX3QgbnVtX2hpdHMgPSAwOwo+ID4gPiA+ICsK PiA+ID4gPiArIHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgZmIgPSB7Cj4gPiA+ID4gKyAgICAgICAg IC53aWR0aCA9IDIwNDgsCj4gPiA+ID4gKyAgICAgICAgIC5oZWlnaHQgPSAyMDQ4Cj4gPiA+ID4g KyB9Owo+ID4gPiA+ICsKPiA+ID4gPiArIHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgc3RhdGUgPSB7 Cj4gPiA+ID4gKyAgICAgICAgIC5jcnRjID0gWkVST19TSVpFX1BUUiwKPiA+ID4gPiArICAgICAg ICAgLmZiID0gJmZiLAo+ID4gPiA+ICsgICAgICAgICAudmlzaWJsZSA9IHRydWUsCj4gPiA+ID4g KyB9Owo+ID4gPiA+ICsKPiA+ID4gPiArIHNldF9wbGFuZV9zcmMoJm9sZF9zdGF0ZSwgMCwgMCwg MTAyNCA8PCAxNiwgNzY4IDw8IDE2KTsKPiA+ID4gPiArIHNldF9wbGFuZV9zcmMoJnN0YXRlLCAw LCAwLCAxMDI0IDw8IDE2LCA3NjggPDwgMTYpOwo+ID4gPiA+ICsgLyogMiBkYW1hZ2UgY2xpcHMu ICovCj4gPiA+ID4gKyBzZXRfZGFtYWdlX2NsaXAoJmRhbWFnZVswXSwgMjAsIDMwLCAyMDAsIDE4 MCk7Cj4gPiA+ID4gKyBzZXRfZGFtYWdlX2NsaXAoJmRhbWFnZVsxXSwgMjQwLCAyMDAsIDI4MCwg MjUwKTsKPiA+ID4gPiArIHNldF9kYW1hZ2VfYmxvYigmZGFtYWdlX2Jsb2IsICZkYW1hZ2VbMF0s IHNpemVvZihkYW1hZ2UpKTsKPiA+ID4gPiArIHNldF9wbGFuZV9kYW1hZ2UoJnN0YXRlLCAmZGFt YWdlX2Jsb2IpOwo+ID4gPiA+ICsgZHJtX2F0b21pY19oZWxwZXJfZGFtYWdlX2l0ZXJfaW5pdCgm aXRlciwgJm9sZF9zdGF0ZSwgJnN0YXRlKTsKPiA+ID4gPiArIGRybV9hdG9taWNfZm9yX2VhY2hf cGxhbmVfZGFtYWdlKCZpdGVyLCAmY2xpcCkgewo+ID4gPiA+ICsgICAgICAgICBpZiAobnVtX2hp dHMgPT0gMCkKPiA+ID4gPiArICAgICAgICAgICAgICAgICBGQUlMX09OKCFjaGVja19kYW1hZ2Vf Y2xpcCgmc3RhdGUsICZjbGlwLCAyMCwgMzAsCj4gPiA+IDIwMCwgMTgwKSk7Cj4gPiA+ID4gKyAg ICAgICAgIGlmIChudW1faGl0cyA9PSAxKQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgIEZBSUxf T04oIWNoZWNrX2RhbWFnZV9jbGlwKCZzdGF0ZSwgJmNsaXAsIDI0MCwgMjAwLAo+ID4gPiAyODAs IDI1MCkpOwo+ID4gPiA+ICsgICAgICAgICBudW1faGl0cysrOwo+ID4gPiA+ICsgfQo+ID4gPiA+ ICsKPiA+ID4gPiArIEZBSUwobnVtX2hpdHMgIT0gMiwgIlNob3VsZCByZXR1cm4gZGFtYWdlIHdo ZW4gc2V0LiIpOwo+ID4gPiA+ICsKPiA+ID4gPiArIHJldHVybiAwOwo+ID4gPiA+ICt9Cj4gPiA+ ID4gKwo+ID4gPiA+ICtzdGF0aWMgaW50IGlndF9kYW1hZ2VfaXRlcl9kYW1hZ2Vfb25lX2ludGVy c2VjdCh2b2lkICppZ25vcmVkKQo+ID4gPiA+ICt7Cj4gPiA+ID4gKyBzdHJ1Y3QgZHJtX2F0b21p Y19oZWxwZXJfZGFtYWdlX2l0ZXIgaXRlcjsKPiA+ID4gPiArIHN0cnVjdCBkcm1fcGxhbmVfc3Rh dGUgb2xkX3N0YXRlOwo+ID4gPiA+ICsgc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iIGRhbWFnZV9i bG9iOwo+ID4gPiA+ICsgc3RydWN0IGRybV9tb2RlX3JlY3QgZGFtYWdlWzJdOwo+ID4gPiA+ICsg c3RydWN0IGRybV9yZWN0IGNsaXA7Cj4gPiA+ID4gKyB1aW50MzJfdCBudW1faGl0cyA9IDA7Cj4g PiA+ID4gKwo+ID4gPiA+ICsgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciBmYiA9IHsKPiA+ID4gPiAr ICAgICAgICAgLndpZHRoID0gMjA0OCwKPiA+ID4gPiArICAgICAgICAgLmhlaWdodCA9IDIwNDgK PiA+ID4gPiArIH07Cj4gPiA+ID4gKwo+ID4gPiA+ICsgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSBz dGF0ZSA9IHsKPiA+ID4gPiArICAgICAgICAgLmNydGMgPSBaRVJPX1NJWkVfUFRSLAo+ID4gPiA+ ICsgICAgICAgICAuZmIgPSAmZmIsCj4gPiA+ID4gKyAgICAgICAgIC52aXNpYmxlID0gdHJ1ZSwK PiA+ID4gPiArIH07Cj4gPiA+ID4gKwo+ID4gPiA+ICsgc2V0X3BsYW5lX3NyYygmb2xkX3N0YXRl LCAweDQwMDAyLCAweDQwMDAyLAo+ID4gPiA+ICsgICAgICAgICAgICAgICAweDQwMDAyICsgKDEw MjQgPDwgMTYpLCAweDQwMDAyICsgKDc2OCA8PCAxNikpOwo+ID4gPiA+ICsgc2V0X3BsYW5lX3Ny Yygmc3RhdGUsIDB4NDAwMDIsIDB4NDAwMDIsCj4gPiA+ID4gKyAgICAgICAgICAgICAgIDB4NDAw MDIgKyAoMTAyNCA8PCAxNiksIDB4NDAwMDIgKyAoNzY4IDw8IDE2KSk7Cj4gPiA+ID4gKyAvKiAy IGRhbWFnZSBjbGlwcywgb25lIGludGVyc2VjdCBwbGFuZSBzcmMuICovCj4gPiA+ID4gKyBzZXRf ZGFtYWdlX2NsaXAoJmRhbWFnZVswXSwgMjAsIDMwLCAyMDAsIDE4MCk7Cj4gPiA+ID4gKyBzZXRf ZGFtYWdlX2NsaXAoJmRhbWFnZVsxXSwgMiwgMiwgMTM2MCwgMTM2MCk7Cj4gPiA+ID4gKyBzZXRf ZGFtYWdlX2Jsb2IoJmRhbWFnZV9ibG9iLCAmZGFtYWdlWzBdLCBzaXplb2YoZGFtYWdlKSk7Cj4g PiA+ID4gKyBzZXRfcGxhbmVfZGFtYWdlKCZzdGF0ZSwgJmRhbWFnZV9ibG9iKTsKPiA+ID4gPiAr IGRybV9hdG9taWNfaGVscGVyX2RhbWFnZV9pdGVyX2luaXQoJml0ZXIsICZvbGRfc3RhdGUsICZz dGF0ZSk7Cj4gPiA+ID4gKyBkcm1fYXRvbWljX2Zvcl9lYWNoX3BsYW5lX2RhbWFnZSgmaXRlciwg JmNsaXApIHsKPiA+ID4gPiArICAgICAgICAgaWYgKG51bV9oaXRzID09IDApCj4gPiA+ID4gKyAg ICAgICAgICAgICAgICAgRkFJTF9PTighY2hlY2tfZGFtYWdlX2NsaXAoJnN0YXRlLCAmY2xpcCwg MjAsIDMwLAo+ID4gPiAyMDAsIDE4MCkpOwo+ID4gPiA+ICsgICAgICAgICBpZiAobnVtX2hpdHMg PT0gMSkKPiA+ID4gPiArICAgICAgICAgICAgICAgICBGQUlMX09OKCFjaGVja19kYW1hZ2VfY2xp cCgmc3RhdGUsICZjbGlwLCA0LCA0LCAxMDI5LAo+ID4gPiA3NzMpKTsKPiA+ID4gPiArICAgICAg ICAgbnVtX2hpdHMrKzsKPiA+ID4gPiArIH0KPiA+ID4gPiArCj4gPiA+ID4gKyBGQUlMKG51bV9o aXRzICE9IDIsICJTaG91bGQgcmV0dXJuIGRhbWFnZSB3aGVuIHNldC4iKTsKPiA+ID4gPiArCj4g PiA+ID4gKyByZXR1cm4gMDsKPiA+ID4gPiArfQo+ID4gPiA+ICsKPiA+ID4gPiArc3RhdGljIGlu dCBpZ3RfZGFtYWdlX2l0ZXJfZGFtYWdlX29uZV9vdXRzaWRlKHZvaWQgKmlnbm9yZWQpCj4gPiA+ ID4gK3sKPiA+ID4gPiArIHN0cnVjdCBkcm1fYXRvbWljX2hlbHBlcl9kYW1hZ2VfaXRlciBpdGVy Owo+ID4gPiA+ICsgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSBvbGRfc3RhdGU7Cj4gPiA+ID4gKyBz dHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgZGFtYWdlX2Jsb2I7Cj4gPiA+ID4gKyBzdHJ1Y3QgZHJt X21vZGVfcmVjdCBkYW1hZ2VbMl07Cj4gPiA+ID4gKyBzdHJ1Y3QgZHJtX3JlY3QgY2xpcDsKPiA+ ID4gPiArIHVpbnQzMl90IG51bV9oaXRzID0gMDsKPiA+ID4gPiArCj4gPiA+ID4gKyBzdHJ1Y3Qg ZHJtX2ZyYW1lYnVmZmVyIGZiID0gewo+ID4gPiA+ICsgICAgICAgICAud2lkdGggPSAyMDQ4LAo+ ID4gPiA+ICsgICAgICAgICAuaGVpZ2h0ID0gMjA0OAo+ID4gPiA+ICsgfTsKPiA+ID4gPiArCj4g PiA+ID4gKyBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlIHN0YXRlID0gewo+ID4gPiA+ICsgICAgICAg ICAuY3J0YyA9IFpFUk9fU0laRV9QVFIsCj4gPiA+ID4gKyAgICAgICAgIC5mYiA9ICZmYiwKPiA+ ID4gPiArICAgICAgICAgLnZpc2libGUgPSB0cnVlLAo+ID4gPiA+ICsgfTsKPiA+ID4gPiArCj4g PiA+ID4gKyBzZXRfcGxhbmVfc3JjKCZvbGRfc3RhdGUsIDAsIDAsIDEwMjQgPDwgMTYsIDc2OCA8 PCAxNik7Cj4gPiA+ID4gKyBzZXRfcGxhbmVfc3JjKCZzdGF0ZSwgMCwgMCwgMTAyNCA8PCAxNiwg NzY4IDw8IDE2KTsKPiA+ID4gPiArIC8qIDIgZGFtYWdlIGNsaXBzLCBvbmUgb3V0c2lkZSBwbGFu ZSBzcmMuICovCj4gPiA+ID4gKyBzZXRfZGFtYWdlX2NsaXAoJmRhbWFnZVswXSwgMTM2MCwgMTM2 MCwgMTM4MCwgMTM4MCk7Cj4gPiA+ID4gKyBzZXRfZGFtYWdlX2NsaXAoJmRhbWFnZVsxXSwgMjQw LCAyMDAsIDI4MCwgMjUwKTsKPiA+ID4gPiArIHNldF9kYW1hZ2VfYmxvYigmZGFtYWdlX2Jsb2Is ICZkYW1hZ2VbMF0sIHNpemVvZihkYW1hZ2UpKTsKPiA+ID4gPiArIHNldF9wbGFuZV9kYW1hZ2Uo JnN0YXRlLCAmZGFtYWdlX2Jsb2IpOwo+ID4gPiA+ICsgZHJtX2F0b21pY19oZWxwZXJfZGFtYWdl X2l0ZXJfaW5pdCgmaXRlciwgJm9sZF9zdGF0ZSwgJnN0YXRlKTsKPiA+ID4gPiArIGRybV9hdG9t aWNfZm9yX2VhY2hfcGxhbmVfZGFtYWdlKCZpdGVyLCAmY2xpcCkKPiA+ID4gPiArICAgICAgICAg bnVtX2hpdHMrKzsKPiA+ID4gPiArCj4gPiA+ID4gKyBGQUlMKG51bV9oaXRzICE9IDEsICJTaG91 bGQgcmV0dXJuIGRhbWFnZSB3aGVuIHNldC4iKTsKPiA+ID4gPiArIEZBSUxfT04oIWNoZWNrX2Rh bWFnZV9jbGlwKCZzdGF0ZSwgJmNsaXAsIDI0MCwgMjAwLCAyODAsIDI1MCkpOwo+ID4gPiA+ICsK PiA+ID4gPiArIHJldHVybiAwOwo+ID4gPiA+ICt9Cj4gPiA+ID4gKwo+ID4gPiA+ICtzdGF0aWMg aW50IGlndF9kYW1hZ2VfaXRlcl9kYW1hZ2Vfc3JjX21vdmVkKHZvaWQgKmlnbm9yZWQpCj4gPiA+ ID4gK3sKPiA+ID4gPiArIHN0cnVjdCBkcm1fYXRvbWljX2hlbHBlcl9kYW1hZ2VfaXRlciBpdGVy Owo+ID4gPiA+ICsgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSBvbGRfc3RhdGU7Cj4gPiA+ID4gKyBz dHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgZGFtYWdlX2Jsb2I7Cj4gPiA+ID4gKyBzdHJ1Y3QgZHJt X21vZGVfcmVjdCBkYW1hZ2VbMl07Cj4gPiA+ID4gKyBzdHJ1Y3QgZHJtX3JlY3QgY2xpcDsKPiA+ ID4gPiArIHVpbnQzMl90IG51bV9oaXRzID0gMDsKPiA+ID4gPiArCj4gPiA+ID4gKyBzdHJ1Y3Qg ZHJtX2ZyYW1lYnVmZmVyIGZiID0gewo+ID4gPiA+ICsgICAgICAgICAud2lkdGggPSAyMDQ4LAo+ ID4gPiA+ICsgICAgICAgICAuaGVpZ2h0ID0gMjA0OAo+ID4gPiA+ICsgfTsKPiA+ID4gPiArCj4g PiA+ID4gKyBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlIHN0YXRlID0gewo+ID4gPiA+ICsgICAgICAg ICAuY3J0YyA9IFpFUk9fU0laRV9QVFIsCj4gPiA+ID4gKyAgICAgICAgIC5mYiA9ICZmYiwKPiA+ ID4gPiArICAgICAgICAgLnZpc2libGUgPSB0cnVlLAo+ID4gPiA+ICsgfTsKPiA+ID4gPiArCj4g PiA+ID4gKyBzZXRfcGxhbmVfc3JjKCZvbGRfc3RhdGUsIDB4NDAwMDIsIDB4NDAwMDIsCj4gPiA+ ID4gKyAgICAgICAgICAgICAgIDB4NDAwMDIgKyAoMTAyNCA8PCAxNiksIDB4NDAwMDIgKyAoNzY4 IDw8IDE2KSk7Cj4gPiA+ID4gKyBzZXRfcGxhbmVfc3JjKCZzdGF0ZSwgMHgzZmZmZSwgMHgzZmZm ZSwKPiA+ID4gPiArICAgICAgICAgICAgICAgMHgzZmZmZSArICgxMDI0IDw8IDE2KSwgMHgzZmZm ZSArICg3NjggPDwgMTYpKTsKPiA+ID4gPiArIC8qIDIgZGFtYWdlIGNsaXBzLCBvbmUgb3V0c2lk ZSBwbGFuZSBzcmMuICovCj4gPiA+ID4gKyBzZXRfZGFtYWdlX2NsaXAoJmRhbWFnZVswXSwgMTM2 MCwgMTM2MCwgMTM4MCwgMTM4MCk7Cj4gPiA+ID4gKyBzZXRfZGFtYWdlX2NsaXAoJmRhbWFnZVsx XSwgMjQwLCAyMDAsIDI4MCwgMjUwKTsKPiA+ID4gPiArIHNldF9kYW1hZ2VfYmxvYigmZGFtYWdl X2Jsb2IsICZkYW1hZ2VbMF0sIHNpemVvZihkYW1hZ2UpKTsKPiA+ID4gPiArIHNldF9wbGFuZV9k YW1hZ2UoJnN0YXRlLCAmZGFtYWdlX2Jsb2IpOwo+ID4gPiA+ICsgZHJtX2F0b21pY19oZWxwZXJf ZGFtYWdlX2l0ZXJfaW5pdCgmaXRlciwgJm9sZF9zdGF0ZSwgJnN0YXRlKTsKPiA+ID4gPiArIGRy bV9hdG9taWNfZm9yX2VhY2hfcGxhbmVfZGFtYWdlKCZpdGVyLCAmY2xpcCkKPiA+ID4gPiArICAg ICAgICAgbnVtX2hpdHMrKzsKPiA+ID4gPiArCj4gPiA+ID4gKyBGQUlMKG51bV9oaXRzICE9IDEs ICJTaG91bGQgcmV0dXJuIHJvdW5kIG9mZiBwbGFuZSBzcmMgYXMgZGFtYWdlLiIpOwo+ID4gPiA+ ICsgRkFJTF9PTighY2hlY2tfZGFtYWdlX2NsaXAoJnN0YXRlLCAmY2xpcCwgMywgMywgMTAyOCwg NzcyKSk7Cj4gPiA+ID4gKwo+ID4gPiA+ICsgcmV0dXJuIDA7Cj4gPiA+ID4gK30KPiA+ID4gPiAr Cj4gPiA+ID4gK3N0YXRpYyBpbnQgaWd0X2RhbWFnZV9pdGVyX2RhbWFnZV9ub3RfdmlzaWJsZSh2 b2lkICppZ25vcmVkKQo+ID4gPiA+ICt7Cj4gPiA+ID4gKyBzdHJ1Y3QgZHJtX2F0b21pY19oZWxw ZXJfZGFtYWdlX2l0ZXIgaXRlcjsKPiA+ID4gPiArIHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgb2xk X3N0YXRlOwo+ID4gPiA+ICsgc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iIGRhbWFnZV9ibG9iOwo+ ID4gPiA+ICsgc3RydWN0IGRybV9tb2RlX3JlY3QgZGFtYWdlWzJdOwo+ID4gPiA+ICsgc3RydWN0 IGRybV9yZWN0IGNsaXA7Cj4gPiA+ID4gKyB1aW50MzJfdCBudW1faGl0cyA9IDA7Cj4gPiA+ID4g Kwo+ID4gPiA+ICsgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciBmYiA9IHsKPiA+ID4gPiArICAgICAg ICAgLndpZHRoID0gMjA0OCwKPiA+ID4gPiArICAgICAgICAgLmhlaWdodCA9IDIwNDgKPiA+ID4g PiArIH07Cj4gPiA+ID4gKwo+ID4gPiA+ICsgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSBzdGF0ZSA9 IHsKPiA+ID4gPiArICAgICAgICAgLmNydGMgPSBaRVJPX1NJWkVfUFRSLAo+ID4gPiA+ICsgICAg ICAgICAuZmIgPSAmZmIsCj4gPiA+ID4gKyAgICAgICAgIC52aXNpYmxlID0gZmFsc2UsCj4gPiA+ ID4gKyB9Owo+ID4gPiA+ICsKPiA+ID4gPiArIHNldF9wbGFuZV9zcmMoJm9sZF9zdGF0ZSwgMHg0 MDAwMiwgMHg0MDAwMiwKPiA+ID4gPiArICAgICAgICAgICAgICAgMHg0MDAwMiArICgxMDI0IDw8 IDE2KSwgMHg0MDAwMiArICg3NjggPDwgMTYpKTsKPiA+ID4gPiArIHNldF9wbGFuZV9zcmMoJnN0 YXRlLCAweDNmZmZlLCAweDNmZmZlLAo+ID4gPiA+ICsgICAgICAgICAgICAgICAweDNmZmZlICsg KDEwMjQgPDwgMTYpLCAweDNmZmZlICsgKDc2OCA8PCAxNikpOwo+ID4gPiA+ICsgLyogMiBkYW1h Z2UgY2xpcHMsIG9uZSBvdXRzaWRlIHBsYW5lIHNyYy4gKi8KPiA+ID4gPiArIHNldF9kYW1hZ2Vf Y2xpcCgmZGFtYWdlWzBdLCAxMzYwLCAxMzYwLCAxMzgwLCAxMzgwKTsKPiA+ID4gPiArIHNldF9k YW1hZ2VfY2xpcCgmZGFtYWdlWzFdLCAyNDAsIDIwMCwgMjgwLCAyNTApOwo+ID4gPiA+ICsgc2V0 X2RhbWFnZV9ibG9iKCZkYW1hZ2VfYmxvYiwgJmRhbWFnZVswXSwgc2l6ZW9mKGRhbWFnZSkpOwo+ ID4gPiA+ICsgc2V0X3BsYW5lX2RhbWFnZSgmc3RhdGUsICZkYW1hZ2VfYmxvYik7Cj4gPiA+ID4g KyBkcm1fYXRvbWljX2hlbHBlcl9kYW1hZ2VfaXRlcl9pbml0KCZpdGVyLCAmb2xkX3N0YXRlLCAm c3RhdGUpOwo+ID4gPiA+ICsgZHJtX2F0b21pY19mb3JfZWFjaF9wbGFuZV9kYW1hZ2UoJml0ZXIs ICZjbGlwKQo+ID4gPiA+ICsgICAgICAgICBudW1faGl0cysrOwo+ID4gPiA+ICsKPiA+ID4gPiAr IEZBSUwobnVtX2hpdHMgIT0gMCwgIlNob3VsZCBub3QgcmV0dXJuIGFueSBkYW1hZ2UuIik7Cj4g PiA+ID4gKwo+ID4gPiA+ICsgcmV0dXJuIDA7Cj4gPiA+ID4gK30KPiA+ID4gPiArCj4gPiA+ID4g KyNpbmNsdWRlICJkcm1fc2VsZnRlc3QuYyIKPiA+ID4gPiArCj4gPiA+ID4gKy8qKgo+ID4gPiA+ ICsgKiB0ZXN0X2RybV9kYW1hZ2VfaGVscGVyIC0gUnVuIGRybSBkYW1hZ2UgaGVscGVyIHNlbGZ0 ZXN0cy4KPiA+ID4gPiArICovCj4gPiA+ID4gK2ludCB0ZXN0X2RybV9kYW1hZ2VfaGVscGVyKHZv aWQpCj4gPiA+ID4gK3sKPiA+ID4gPiArIGludCBlcnI7Cj4gPiA+ID4gKwo+ID4gPiA+ICsgZXJy ID0gcnVuX3NlbGZ0ZXN0cyhzZWxmdGVzdHMsIEFSUkFZX1NJWkUoc2VsZnRlc3RzKSwgTlVMTCk7 Cj4gPiA+ID4gKwo+ID4gPiA+ICsgcmV0dXJuIGVyciA+IDAgPyAwIDogZXJyOwo+ID4gPiA+ICt9 Cj4gPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9zZWxmdGVzdHMvdGVzdC1kcm1f bW9kZXNldF9jb21tb24uYwo+ID4gPiBiL2RyaXZlcnMvZ3B1L2RybS9zZWxmdGVzdHMvdGVzdC1k cm1fbW9kZXNldF9jb21tb24uYwo+ID4gPiA+IGluZGV4IGZhZDUyMDkwNDNmMS4uNDNhOWFiNTIy YTY2IDEwMDY0NAo+ID4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9zZWxmdGVzdHMvdGVzdC1k cm1fbW9kZXNldF9jb21tb24uYwo+ID4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9zZWxmdGVz dHMvdGVzdC1kcm1fbW9kZXNldF9jb21tb24uYwo+ID4gPiA+IEBAIC05LDcgKzksMTUgQEAKPiA+ ID4gPgo+ID4gPiA+ICBzdGF0aWMgaW50IF9faW5pdCB0ZXN0X2RybV9tb2Rlc2V0X2luaXQodm9p ZCkKPiA+ID4gPiAgewo+ID4gPiA+IC0gcmV0dXJuIHRlc3RfZHJtX3BsYW5lX2hlbHBlcigpOwo+ ID4gPiA+ICsgaW50IHJldCA9IDAsIGVycjsKPiA+ID4gPiArCj4gPiA+ID4gKyBpZiAoKGVyciA9 IHRlc3RfZHJtX3BsYW5lX2hlbHBlcigpKSkKPiA+ID4gPiArICAgICAgICAgcmV0ID0gZXJyOwo+ ID4gPiA+ICsKPiA+ID4gPiArIGlmICgoZXJyID0gdGVzdF9kcm1fZGFtYWdlX2hlbHBlcigpKSkK PiA+ID4gPiArICAgICAgICAgcmV0ID0gZXJyOwo+ID4gPiA+ICsKPiA+ID4gPiArIHJldHVybiBy ZXQ7Cj4gPiA+ID4gIH0KPiA+ID4gPgo+ID4gPiA+ICBzdGF0aWMgdm9pZCBfX2V4aXQgdGVzdF9k cm1fbW9kZXNldF9leGl0KHZvaWQpCj4gPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9zZWxmdGVzdHMvdGVzdC1kcm1fbW9kZXNldF9jb21tb24uaAo+ID4gPiBiL2RyaXZlcnMvZ3B1 L2RybS9zZWxmdGVzdHMvdGVzdC1kcm1fbW9kZXNldF9jb21tb24uaAo+ID4gPiA+IGluZGV4IGJk ZWJhMjY0NjYxZi4uNWZhOGZiMDdlMGU5IDEwMDY0NAo+ID4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9zZWxmdGVzdHMvdGVzdC1kcm1fbW9kZXNldF9jb21tb24uaAo+ID4gPiA+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9zZWxmdGVzdHMvdGVzdC1kcm1fbW9kZXNldF9jb21tb24uaAo+ID4gPiA+ IEBAIC0xNCw1ICsxNCw2IEBACj4gPiA+ID4gICNkZWZpbmUgRkFJTF9PTih4KSBGQUlMKCh4KSwg IiVzIiwgIkZBSUxfT04oIiBfX3N0cmluZ2lmeSh4KSAiKVxuIikKPiA+ID4gPgo+ID4gPiA+ICBp bnQgdGVzdF9kcm1fcGxhbmVfaGVscGVyKHZvaWQpOwo+ID4gPiA+ICtpbnQgdGVzdF9kcm1fZGFt YWdlX2hlbHBlcih2b2lkKTsKPiA+ID4gPgo+ID4gPiA+ICAjZW5kaWYKPiA+ID4gPiAtLQo+ID4g PiA+IDIuMTcuMQo+ID4gPiA+Cj4gPiA+Cj4gPiA+IC0tCj4gPiA+IERhbmllbCBWZXR0ZXIKPiA+ ID4gU29mdHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCj4gPiA+IGh0dHBzOi8vbmEw MS5zYWZlbGlua3MucHJvdGVjdGlvbi5vdXRsb29rLmNvbS8/dXJsPWh0dHAlM0ElMkYlMkZibG9n LmZmd2xsLgo+ID4gPiBjaCZhbXA7ZGF0YT0wMiU3QzAxJTdDZHJhd2F0JTQwdm13YXJlLmNvbSU3 QzI2ZmZjNGI0ZWQwYjRkYTE3ZGEKPiA+ID4gNTA4ZDYzM2ZiNzNhNCU3Q2IzOTEzOGNhM2NlZTRi NGFhNGQ2Y2Q4M2Q5ZGQ2MmYwJTdDMSU3QzAlN0M2MzY3NQo+ID4gPiAzNTUyNDIwOTQyNjMyJmFt cDtzZGF0YT1ycTY4YzJkT3NzU05wMkIxZ0M2dmVyRFlvSXRtNm1TR1BTNG9Jd0p6SmEKPiA+ID4g YyUzRCZhbXA7cmVzZXJ2ZWQ9MAo+ID4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KPiA+IGRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKPiA+IGRyaS1kZXZlbEBs aXN0cy5mcmVlZGVza3RvcC5vcmcKPiA+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCj4KPiAtLQo+IENoZWVycywKPiBBbGV4IEcKCgoKLS0g CkRhbmllbCBWZXR0ZXIKU29mdHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCis0MSAo MCkgNzkgMzY1IDU3IDQ4IC0gaHR0cDovL2Jsb2cuZmZ3bGwuY2gKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmkt ZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==