From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: References: <20190322092155.1656-1-chris@chris-wilson.co.uk> <20190322092155.1656-17-chris@chris-wilson.co.uk> From: Tvrtko Ursulin Message-ID: Date: Tue, 26 Mar 2019 15:44:35 +0000 MIME-Version: 1.0 In-Reply-To: <20190322092155.1656-17-chris@chris-wilson.co.uk> Content-Language: en-US Subject: Re: [igt-dev] [PATCH i-g-t 17/24] i915: Add gem_ctx_clone List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: Chris Wilson , intel-gfx@lists.freedesktop.org Cc: igt-dev@lists.freedesktop.org List-ID: Ck9uIDIyLzAzLzIwMTkgMDk6MjEsIENocmlzIFdpbHNvbiB3cm90ZToKPiBFeGVyY2lzZSBjbG9u aW5nIGNvbnRleHRzLCBhbiBleHRlbnNpb24gb2YgbWVyZWx5IGNyZWF0aW5nIG9uZS4KPiAKPiBT aWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KPiAt LS0KPiAgIHRlc3RzL01ha2VmaWxlLnNvdXJjZXMgICAgIHwgICAxICsKPiAgIHRlc3RzL2k5MTUv Z2VtX2N0eF9jbG9uZS5jIHwgNDIxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysKPiAgIHRlc3RzL21lc29uLmJ1aWxkICAgICAgICAgIHwgICAxICsKPiAgIDMgZmlsZXMgY2hh bmdlZCwgNDIzIGluc2VydGlvbnMoKykKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0cy9pOTE1 L2dlbV9jdHhfY2xvbmUuYwo+IAo+IGRpZmYgLS1naXQgYS90ZXN0cy9NYWtlZmlsZS5zb3VyY2Vz IGIvdGVzdHMvTWFrZWZpbGUuc291cmNlcwo+IGluZGV4IDgwOWIyNTYxMi4uMTJmNGJiZDc1IDEw MDY0NAo+IC0tLSBhL3Rlc3RzL01ha2VmaWxlLnNvdXJjZXMKPiArKysgYi90ZXN0cy9NYWtlZmls ZS5zb3VyY2VzCj4gQEAgLTIxLDYgKzIxLDcgQEAgVEVTVFNfcHJvZ3MgPSBcCj4gICAJZHJtX2lt cG9ydF9leHBvcnQgXAo+ICAgCWRybV9tbSBcCj4gICAJZHJtX3JlYWQgXAo+ICsJaTkxNS9nZW1f Y3R4X2Nsb25lIFwKPiAgIAlpOTE1L2dlbV92bV9jcmVhdGUgXAo+ICAgCWttc18zZCBcCj4gICAJ a21zX2FkZGZiX2Jhc2ljIFwKPiBkaWZmIC0tZ2l0IGEvdGVzdHMvaTkxNS9nZW1fY3R4X2Nsb25l LmMgYi90ZXN0cy9pOTE1L2dlbV9jdHhfY2xvbmUuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4g aW5kZXggMDAwMDAwMDAwLi43ZDgzYzYzNTAKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvdGVzdHMv aTkxNS9nZW1fY3R4X2Nsb25lLmMKPiBAQCAtMCwwICsxLDQyMSBAQAo+ICsvKgo+ICsgKiBDb3B5 cmlnaHQgwqkgMjAxOSBJbnRlbCBDb3Jwb3JhdGlvbgo+ICsgKgo+ICsgKiBQZXJtaXNzaW9uIGlz IGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcg YQo+ICsgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlv biBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAo+ICsgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3 aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCj4gKyAqIHRo ZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRl LCBzdWJsaWNlbnNlLAo+ICsgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBh bmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKPiArICogU29mdHdhcmUgaXMgZnVybmlz aGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKPiArICoK PiArICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3Rp Y2UgKGluY2x1ZGluZyB0aGUgbmV4dAo+ICsgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVk IGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCj4gKyAqIFNvZnR3 YXJlLgo+ICsgKgo+ICsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9V VCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgo+ICsgKiBJTVBMSUVELCBJTkNMVURJ TkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwK PiArICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVO VC4gIElOIE5PIEVWRU5UIFNIQUxMCj4gKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xE RVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCj4gKyAqIExJQUJJ TElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNF LCBBUklTSU5HCj4gKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNP RlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MKPiArICogSU4gVEhFIFNPRlRXQVJF Lgo+ICsgKi8KPiArCj4gKyNpbmNsdWRlICJpZ3QuaCIKPiArI2luY2x1ZGUgImk5MTUvZ2VtX3Zt LmgiCj4gKyNpbmNsdWRlICJpOTE1X2RybS5oIgo+ICsKPiArc3RhdGljIGludCBfX2NyZWF0ZV9l eHQoaW50IGk5MTUsIHN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9jcmVhdGVfZXh0ICphcmcp Cj4gK3sKPiArCWludCBlcnI7Cj4gKwo+ICsJZXJyID0gMDsKPiArCWlmIChpZ3RfaW9jdGwoaTkx NSwgRFJNX0lPQ1RMX0k5MTVfR0VNX0NPTlRFWFRfQ1JFQVRFX0VYVCwgYXJnKSkKPiArCQllcnIg PSAtZXJybm87Cj4gKwo+ICsJZXJybm8gPSAwOwo+ICsJcmV0dXJuIGVycjsKPiArfQo+ICsKPiAr c3RhdGljIGJvb2wgaGFzX2N0eF9jbG9uZShpbnQgaTkxNSkKPiArewo+ICsJc3RydWN0IGRybV9p OTE1X2dlbV9jb250ZXh0X2NyZWF0ZV9leHRfY2xvbmUgZXh0ID0gewo+ICsJCXsgLm5hbWUgPSBJ OTE1X0NPTlRFWFRfQ1JFQVRFX0VYVF9DTE9ORSB9LAo+ICsJCS5jbG9uZV9pZCA9IC0xLAo+ICsJ fTsKPiArCXN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9jcmVhdGVfZXh0IGNyZWF0ZSA9IHsK PiArCQkuZmxhZ3MgPSBJOTE1X0NPTlRFWFRfQ1JFQVRFX0ZMQUdTX1VTRV9FWFRFTlNJT05TLAo+ ICsJCS5leHRlbnNpb25zID0gdG9fdXNlcl9wb2ludGVyKCZleHQpLAo+ICsJfTsKPiArCXJldHVy biBfX2NyZWF0ZV9leHQoaTkxNSwgJmNyZWF0ZSkgPT0gLUVOT0VOVDsKPiArfQo+ICsKPiArc3Rh dGljIHZvaWQgaW52YWxpZF9jbG9uZShpbnQgaTkxNSkKPiArewo+ICsJc3RydWN0IGRybV9pOTE1 X2dlbV9jb250ZXh0X2NyZWF0ZV9leHRfY2xvbmUgZXh0ID0gewo+ICsJCXsgLm5hbWUgPSBJOTE1 X0NPTlRFWFRfQ1JFQVRFX0VYVF9DTE9ORSB9LAo+ICsJfTsKPiArCXN0cnVjdCBkcm1faTkxNV9n ZW1fY29udGV4dF9jcmVhdGVfZXh0IGNyZWF0ZSA9IHsKPiArCQkuZmxhZ3MgPSBJOTE1X0NPTlRF WFRfQ1JFQVRFX0ZMQUdTX1VTRV9FWFRFTlNJT05TLAo+ICsJCS5leHRlbnNpb25zID0gdG9fdXNl cl9wb2ludGVyKCZleHQpLAo+ICsJfTsKPiArCj4gKwlpZ3RfYXNzZXJ0X2VxKF9fY3JlYXRlX2V4 dChpOTE1LCAmY3JlYXRlKSwgMCk7Cj4gKwlnZW1fY29udGV4dF9kZXN0cm95KGk5MTUsIGNyZWF0 ZS5jdHhfaWQpOwo+ICsKPiArCWV4dC5mbGFncyA9IC0xOyAvKiBIb3BlZnVsbHkgd2Ugd29uJ3Qg cnVuIG91dCBvZiBmbGFncyAqLwo+ICsJaWd0X2Fzc2VydF9lcShfX2NyZWF0ZV9leHQoaTkxNSwg JmNyZWF0ZSksIC1FSU5WQUwpOwo+ICsJZXh0LmZsYWdzID0gMDsKPiArCj4gKwlleHQuYmFzZS5u ZXh0X2V4dGVuc2lvbiA9IC0xOwo+ICsJaWd0X2Fzc2VydF9lcShfX2NyZWF0ZV9leHQoaTkxNSwg JmNyZWF0ZSksIC1FRkFVTFQpOwo+ICsJZXh0LmJhc2UubmV4dF9leHRlbnNpb24gPSB0b191c2Vy X3BvaW50ZXIoJmV4dCk7Cj4gKwlpZ3RfYXNzZXJ0X2VxKF9fY3JlYXRlX2V4dChpOTE1LCAmY3Jl YXRlKSwgLUUyQklHKTsKPiArCWV4dC5iYXNlLm5leHRfZXh0ZW5zaW9uID0gMDsKPiArCj4gKwll eHQuY2xvbmVfaWQgPSAtMTsKPiArCWlndF9hc3NlcnRfZXEoX19jcmVhdGVfZXh0KGk5MTUsICZj cmVhdGUpLCAtRU5PRU5UKTsKPiArCWV4dC5jbG9uZV9pZCA9IDA7Cj4gK30KPiArCj4gK3N0YXRp YyB2b2lkIGNsb25lX2ZsYWdzKGludCBpOTE1KQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X2NvbnRleHRfY3JlYXRlX2V4dF9zZXRwYXJhbSBzZXQgPSB7Cj4gKwkJeyAubmFtZSA9IEk5MTVf Q09OVEVYVF9DUkVBVEVfRVhUX1NFVFBBUkFNIH0sCj4gKwkJeyAucGFyYW0gPSBJOTE1X0NPTlRF WFRfUEFSQU1fUkVDT1ZFUkFCTEUgfSwKPiArCX07Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2Nv bnRleHRfY3JlYXRlX2V4dF9jbG9uZSBleHQgPSB7Cj4gKwkJeyAubmFtZSA9IEk5MTVfQ09OVEVY VF9DUkVBVEVfRVhUX0NMT05FIH0sCj4gKwkJLmZsYWdzID0gSTkxNV9DT05URVhUX0NMT05FX0ZM QUdTLAo+ICsJfTsKPiArCXN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9jcmVhdGVfZXh0IGNy ZWF0ZSA9IHsKPiArCQkuZmxhZ3MgPSBJOTE1X0NPTlRFWFRfQ1JFQVRFX0ZMQUdTX1VTRV9FWFRF TlNJT05TLAo+ICsJCS5leHRlbnNpb25zID0gdG9fdXNlcl9wb2ludGVyKCZleHQpLAo+ICsJfTsK PiArCWludCBleHBlY3RlZDsKPiArCj4gKwlzZXQucGFyYW0udmFsdWUgPSAxOyAvKiBkZWZhdWx0 IGlzIHJlY292ZXJhYmxlICovCj4gKwlpZ3RfcmVxdWlyZShfX2dlbV9jb250ZXh0X3NldF9wYXJh bShpOTE1LCAmc2V0LnBhcmFtKSA9PSAwKTsKPiArCj4gKwlmb3IgKGludCBwYXNzID0gMDsgcGFz cyA8IDI7IHBhc3MrKykgeyAvKiBjbG9uaW5nIGRlZmF1bHQsIHRoZW4gY2hpbGQgKi8KPiArCQlp Z3RfZGVidWcoIkNsb25pbmcgJWRcbiIsIGV4dC5jbG9uZV9pZCk7Cj4gKwkJaWd0X2Fzc2VydF9l cShfX2NyZWF0ZV9leHQoaTkxNSwgJmNyZWF0ZSksIDApOwo+ICsKPiArCQlzZXQucGFyYW0uY3R4 X2lkID0gZXh0LmNsb25lX2lkOwo+ICsJCWdlbV9jb250ZXh0X2dldF9wYXJhbShpOTE1LCAmc2V0 LnBhcmFtKTsKPiArCQlleHBlY3RlZCA9IHNldC5wYXJhbS52YWx1ZTsKPiArCj4gKwkJc2V0LnBh cmFtLmN0eF9pZCA9IGNyZWF0ZS5jdHhfaWQ7Cj4gKwkJZ2VtX2NvbnRleHRfZ2V0X3BhcmFtKGk5 MTUsICZzZXQucGFyYW0pOwo+ICsKPiArCQlpZ3RfYXNzZXJ0X2VxX3U2NChzZXQucGFyYW0ucGFy YW0sCj4gKwkJCQkgIEk5MTVfQ09OVEVYVF9QQVJBTV9SRUNPVkVSQUJMRSk7Cj4gKwkJaWd0X2Fz c2VydF9lcSgoaW50KXNldC5wYXJhbS52YWx1ZSwgZXhwZWN0ZWQpOwo+ICsKPiArCQlnZW1fY29u dGV4dF9kZXN0cm95KGk5MTUsIGNyZWF0ZS5jdHhfaWQpOwo+ICsKPiArCQlleHBlY3RlZCA9IHNl dC5wYXJhbS52YWx1ZSA9IDA7Cj4gKwkJc2V0LnBhcmFtLmN0eF9pZCA9IGV4dC5jbG9uZV9pZDsK PiArCQlnZW1fY29udGV4dF9zZXRfcGFyYW0oaTkxNSwgJnNldC5wYXJhbSk7Cj4gKwo+ICsJCWln dF9hc3NlcnRfZXEoX19jcmVhdGVfZXh0KGk5MTUsICZjcmVhdGUpLCAwKTsKPiArCj4gKwkJc2V0 LnBhcmFtLmN0eF9pZCA9IGNyZWF0ZS5jdHhfaWQ7Cj4gKwkJZ2VtX2NvbnRleHRfZ2V0X3BhcmFt KGk5MTUsICZzZXQucGFyYW0pOwo+ICsKPiArCQlpZ3RfYXNzZXJ0X2VxX3U2NChzZXQucGFyYW0u cGFyYW0sCj4gKwkJCQkgIEk5MTVfQ09OVEVYVF9QQVJBTV9SRUNPVkVSQUJMRSk7Cj4gKwkJaWd0 X2Fzc2VydF9lcSgoaW50KXNldC5wYXJhbS52YWx1ZSwgZXhwZWN0ZWQpOwo+ICsKPiArCQlnZW1f Y29udGV4dF9kZXN0cm95KGk5MTUsIGNyZWF0ZS5jdHhfaWQpOwo+ICsKPiArCQkvKiBjbG9uZSBi dXQgdGhlbiByZXNldCBwcmlvcml0eSB0byBkZWZhdWx0ICovCj4gKwkJc2V0LnBhcmFtLmN0eF9p ZCA9IDA7Cj4gKwkJc2V0LnBhcmFtLnZhbHVlID0gMTsKPiArCQlleHQuYmFzZS5uZXh0X2V4dGVu c2lvbiA9IHRvX3VzZXJfcG9pbnRlcigmc2V0KTsKPiArCQlpZ3RfYXNzZXJ0X2VxKF9fY3JlYXRl X2V4dChpOTE1LCAmY3JlYXRlKSwgMCk7Cj4gKwkJZXh0LmJhc2UubmV4dF9leHRlbnNpb24gPSAw Owo+ICsKPiArCQlzZXQucGFyYW0uY3R4X2lkID0gY3JlYXRlLmN0eF9pZDsKPiArCQlnZW1fY29u dGV4dF9nZXRfcGFyYW0oaTkxNSwgJnNldC5wYXJhbSk7Cj4gKwkJaWd0X2Fzc2VydF9lcV91NjQo c2V0LnBhcmFtLnZhbHVlLCAxKTsKPiArCj4gKwkJc2V0LnBhcmFtLmN0eF9pZCA9IGV4dC5jbG9u ZV9pZDsKPiArCQlnZW1fY29udGV4dF9nZXRfcGFyYW0oaTkxNSwgJnNldC5wYXJhbSk7Cj4gKwkJ aWd0X2Fzc2VydF9lcV91NjQoc2V0LnBhcmFtLnZhbHVlLCAwKTsKPiArCj4gKwkJZ2VtX2NvbnRl eHRfZGVzdHJveShpOTE1LCBjcmVhdGUuY3R4X2lkKTsKPiArCQlleHQuY2xvbmVfaWQgPSBnZW1f Y29udGV4dF9jcmVhdGUoaTkxNSk7CgpJdCBpcyBxdWl0ZSBkaWZmaWN1bHQgdG8gZm9sbG93IHRo aXMgc2VxdWVuY2UgaW4gdGVybXMgb2Ygd2hhdHMgaXMgCmNsb25lZCwgc2V0LCBxdWVyaWVkLCBy ZS1zZXQgZXRjLiBJIHRoaW5rIGl0IG5lZWRzIGEgc3RlcC1ieS1zdGVwIApjb21tZW50YXJ5LgoK PiArCX0KPiArCj4gKwlnZW1fY29udGV4dF9kZXN0cm95KGk5MTUsIGV4dC5jbG9uZV9pZCk7Cj4g K30KPiArCj4gK3N0YXRpYyB2b2lkIGNsb25lX2VuZ2luZXMoaW50IGk5MTUpCj4gK3sKPiArCXN0 cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9jcmVhdGVfZXh0X3NldHBhcmFtIHNldCA9IHsKPiAr CQl7IC5uYW1lID0gSTkxNV9DT05URVhUX0NSRUFURV9FWFRfU0VUUEFSQU0gfSwKPiArCQl7IC5w YXJhbSA9IEk5MTVfQ09OVEVYVF9QQVJBTV9FTkdJTkVTIH0sCgpIbSBJIGRvbid0IHJlbWVtYmVy IHNlZWluZyB0aGUgZW5naW5lIG1hcCB0ZXN0IGluIHRoZSBzZXJpZXMgdG8gdGhpcyAKcG9pbnQu IFdoZXJlIGlzIGl0PwoKPiArCX07Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfY3Jl YXRlX2V4dF9jbG9uZSBleHQgPSB7Cj4gKwkJeyAubmFtZSA9IEk5MTVfQ09OVEVYVF9DUkVBVEVf RVhUX0NMT05FIH0sCj4gKwkJLmZsYWdzID0gSTkxNV9DT05URVhUX0NMT05FX0VOR0lORVMsCj4g Kwl9Owo+ICsJc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X2NyZWF0ZV9leHQgY3JlYXRlID0g ewo+ICsJCS5mbGFncyA9IEk5MTVfQ09OVEVYVF9DUkVBVEVfRkxBR1NfVVNFX0VYVEVOU0lPTlMs Cj4gKwkJLmV4dGVuc2lvbnMgPSB0b191c2VyX3BvaW50ZXIoJmV4dCksCj4gKwl9Owo+ICsJSTkx NV9ERUZJTkVfQ09OVEVYVF9QQVJBTV9FTkdJTkVTKGV4cGVjdGVkLCA2NCk7Cj4gKwlJOTE1X0RF RklORV9DT05URVhUX1BBUkFNX0VOR0lORVMoZW5naW5lcywgNjQpOwo+ICsJdWludDY0X3QgZXhf c2l6ZTsKPiArCj4gKwltZW1zZXQoJmV4cGVjdGVkLCAwLCBzaXplb2YoZXhwZWN0ZWQpKTsKPiAr CW1lbXNldCgmZW5naW5lcywgMCwgc2l6ZW9mKGVuZ2luZXMpKTsKPiArCj4gKwlpZ3RfcmVxdWly ZShfX2dlbV9jb250ZXh0X3NldF9wYXJhbShpOTE1LCAmc2V0LnBhcmFtKSA9PSAwKTsKPiArCj4g Kwlmb3IgKGludCBwYXNzID0gMDsgcGFzcyA8IDI7IHBhc3MrKykgeyAvKiBjbG9uaW5nIGRlZmF1 bHQsIHRoZW4gY2hpbGQgKi8KPiArCQlpZ3RfZGVidWcoIkNsb25pbmcgJWRcbiIsIGV4dC5jbG9u ZV9pZCk7Cj4gKwkJaWd0X2Fzc2VydF9lcShfX2NyZWF0ZV9leHQoaTkxNSwgJmNyZWF0ZSksIDAp Owo+ICsKPiArCQlzZXQucGFyYW0uY3R4X2lkID0gZXh0LmNsb25lX2lkOwo+ICsJCXNldC5wYXJh bS5zaXplID0gc2l6ZW9mKGV4cGVjdGVkKTsKPiArCQlzZXQucGFyYW0udmFsdWUgPSB0b191c2Vy X3BvaW50ZXIoJmV4cGVjdGVkKTsKPiArCQlnZW1fY29udGV4dF9nZXRfcGFyYW0oaTkxNSwgJnNl dC5wYXJhbSk7Cj4gKwkJZXhfc2l6ZSA9IHNldC5wYXJhbS5zaXplOwo+ICsKPiArCQlzZXQucGFy YW0uY3R4X2lkID0gY3JlYXRlLmN0eF9pZDsKPiArCQlzZXQucGFyYW0uc2l6ZSA9IHNpemVvZihl bmdpbmVzKTsKPiArCQlzZXQucGFyYW0udmFsdWUgPSB0b191c2VyX3BvaW50ZXIoJmVuZ2luZXMp Owo+ICsJCWdlbV9jb250ZXh0X2dldF9wYXJhbShpOTE1LCAmc2V0LnBhcmFtKTsKPiArCj4gKwkJ aWd0X2Fzc2VydF9lcV91NjQoc2V0LnBhcmFtLnBhcmFtLCBJOTE1X0NPTlRFWFRfUEFSQU1fRU5H SU5FUyk7Cj4gKwkJaWd0X2Fzc2VydF9lcV91NjQoc2V0LnBhcmFtLnNpemUsIGV4X3NpemUpOwo+ ICsJCWlndF9hc3NlcnQoIW1lbWNtcCgmZW5naW5lcywgJmV4cGVjdGVkLCBleF9zaXplKSk7Cj4g Kwo+ICsJCWdlbV9jb250ZXh0X2Rlc3Ryb3koaTkxNSwgY3JlYXRlLmN0eF9pZCk7Cj4gKwo+ICsJ CWV4cGVjdGVkLmNsYXNzX2luc3RhbmNlWzBdLmVuZ2luZV9jbGFzcyA9Cj4gKwkJCUk5MTVfRU5H SU5FX0NMQVNTX0lOVkFMSUQ7Cj4gKwkJZXhwZWN0ZWQuY2xhc3NfaW5zdGFuY2VbMF0uZW5naW5l X2luc3RhbmNlID0KPiArCQkJSTkxNV9FTkdJTkVfQ0xBU1NfSU5WQUxJRF9OT05FOwo+ICsJCWV4 X3NpemUgPSAoc2l6ZW9mKHN0cnVjdCBpOTE1X2NvbnRleHRfcGFyYW1fZW5naW5lcykgKwo+ICsJ CQkgICBzaXplb2YoZXhwZWN0ZWQuY2xhc3NfaW5zdGFuY2VbMF0pKTsKPiArCj4gKwkJc2V0LnBh cmFtLmN0eF9pZCA9IGV4dC5jbG9uZV9pZDsKPiArCQlzZXQucGFyYW0uc2l6ZSA9IGV4X3NpemU7 Cj4gKwkJc2V0LnBhcmFtLnZhbHVlID0gdG9fdXNlcl9wb2ludGVyKCZleHBlY3RlZCk7Cj4gKwkJ Z2VtX2NvbnRleHRfc2V0X3BhcmFtKGk5MTUsICZzZXQucGFyYW0pOwo+ICsKPiArCQlpZ3RfYXNz ZXJ0X2VxKF9fY3JlYXRlX2V4dChpOTE1LCAmY3JlYXRlKSwgMCk7Cj4gKwo+ICsJCXNldC5wYXJh bS5jdHhfaWQgPSBjcmVhdGUuY3R4X2lkOwo+ICsJCXNldC5wYXJhbS5zaXplID0gc2l6ZW9mKGVu Z2luZXMpOwo+ICsJCXNldC5wYXJhbS52YWx1ZSA9IHRvX3VzZXJfcG9pbnRlcigmZW5naW5lcyk7 Cj4gKwkJZ2VtX2NvbnRleHRfZ2V0X3BhcmFtKGk5MTUsICZzZXQucGFyYW0pOwo+ICsKPiArCQlp Z3RfYXNzZXJ0X2VxX3U2NChzZXQucGFyYW0uc2l6ZSwgZXhfc2l6ZSk7Cj4gKwkJaWd0X2Fzc2Vy dCghbWVtY21wKCZlbmdpbmVzLCAmZXhwZWN0ZWQsIGV4X3NpemUpKTsKPiArCj4gKwkJZ2VtX2Nv bnRleHRfZGVzdHJveShpOTE1LCBjcmVhdGUuY3R4X2lkKTsKPiArCj4gKwkJLyogY2xvbmUgYnV0 IHRoZW4gcmVzZXQgZW5naW5lcyB0byBkZWZhdWx0ICovCj4gKwkJc2V0LnBhcmFtLmN0eF9pZCA9 IDA7Cj4gKwkJc2V0LnBhcmFtLnNpemUgPSAwOwo+ICsJCXNldC5wYXJhbS52YWx1ZSA9IDA7Cj4g KwkJZXh0LmJhc2UubmV4dF9leHRlbnNpb24gPSB0b191c2VyX3BvaW50ZXIoJnNldCk7Cj4gKwo+ ICsJCWlndF9hc3NlcnRfZXEoX19jcmVhdGVfZXh0KGk5MTUsICZjcmVhdGUpLCAwKTsKPiArCQll eHQuYmFzZS5uZXh0X2V4dGVuc2lvbiA9IDA7Cj4gKwo+ICsJCXNldC5wYXJhbS5jdHhfaWQgPSBj cmVhdGUuY3R4X2lkOwo+ICsJCXNldC5wYXJhbS5zaXplID0gc2l6ZW9mKGVuZ2luZXMpOwo+ICsJ CXNldC5wYXJhbS52YWx1ZSA9IHRvX3VzZXJfcG9pbnRlcigmZW5naW5lcyk7Cj4gKwkJZ2VtX2Nv bnRleHRfZ2V0X3BhcmFtKGk5MTUsICZzZXQucGFyYW0pOwo+ICsJCWlndF9hc3NlcnRfZXFfdTY0 KHNldC5wYXJhbS5zaXplLCAwKTsKPiArCj4gKwkJZ2VtX2NvbnRleHRfZGVzdHJveShpOTE1LCBj cmVhdGUuY3R4X2lkKTsKPiArCj4gKwkJLyogQW5kIGNoZWNrIHdlIGlnbm9yZSB0aGUgZmxhZyAq Lwo+ICsJCWV4dC5mbGFncyA9IDA7Cj4gKwkJaWd0X2Fzc2VydF9lcShfX2NyZWF0ZV9leHQoaTkx NSwgJmNyZWF0ZSksIDApOwo+ICsJCWV4dC5mbGFncyA9IEk5MTVfQ09OVEVYVF9DTE9ORV9FTkdJ TkVTOwo+ICsKPiArCQlzZXQucGFyYW0uY3R4X2lkID0gY3JlYXRlLmN0eF9pZDsKPiArCQlzZXQu cGFyYW0uc2l6ZSA9IHNpemVvZihlbmdpbmVzKTsKPiArCQlzZXQucGFyYW0udmFsdWUgPSB0b191 c2VyX3BvaW50ZXIoJmVuZ2luZXMpOwo+ICsJCWdlbV9jb250ZXh0X2dldF9wYXJhbShpOTE1LCAm c2V0LnBhcmFtKTsKPiArCQlpZ3RfYXNzZXJ0X2VxX3U2NChzZXQucGFyYW0uc2l6ZSwgMCk7Cj4g Kwo+ICsJCWV4dC5jbG9uZV9pZCA9IGdlbV9jb250ZXh0X2NyZWF0ZShpOTE1KTsKPiArCX0KPiAr Cj4gKwlnZW1fY29udGV4dF9kZXN0cm95KGk5MTUsIGV4dC5jbG9uZV9pZCk7Cj4gK30KPiArCj4g K3N0YXRpYyB2b2lkIGNsb25lX3NjaGVkdWxlcihpbnQgaTkxNSkKPiArewo+ICsJc3RydWN0IGRy bV9pOTE1X2dlbV9jb250ZXh0X2NyZWF0ZV9leHRfc2V0cGFyYW0gc2V0ID0gewo+ICsJCXsgLm5h bWUgPSBJOTE1X0NPTlRFWFRfQ1JFQVRFX0VYVF9TRVRQQVJBTSB9LAo+ICsJCXsgLnBhcmFtID0g STkxNV9DT05URVhUX1BBUkFNX1BSSU9SSVRZIH0sCj4gKwl9Owo+ICsJc3RydWN0IGRybV9pOTE1 X2dlbV9jb250ZXh0X2NyZWF0ZV9leHRfY2xvbmUgZXh0ID0gewo+ICsJCXsgLm5hbWUgPSBJOTE1 X0NPTlRFWFRfQ1JFQVRFX0VYVF9DTE9ORSB9LAo+ICsJCS5mbGFncyA9IEk5MTVfQ09OVEVYVF9D TE9ORV9TQ0hFREFUVFIsCj4gKwl9Owo+ICsJc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X2Ny ZWF0ZV9leHQgY3JlYXRlID0gewo+ICsJCS5mbGFncyA9IEk5MTVfQ09OVEVYVF9DUkVBVEVfRkxB R1NfVVNFX0VYVEVOU0lPTlMsCj4gKwkJLmV4dGVuc2lvbnMgPSB0b191c2VyX3BvaW50ZXIoJmV4 dCksCj4gKwl9Owo+ICsJaW50IGV4cGVjdGVkOwo+ICsKPiArCWlndF9yZXF1aXJlKF9fZ2VtX2Nv bnRleHRfc2V0X3BhcmFtKGk5MTUsICZzZXQucGFyYW0pID09IDApOwo+ICsKPiArCWZvciAoaW50 IHBhc3MgPSAwOyBwYXNzIDwgMjsgcGFzcysrKSB7IC8qIGNsb25pbmcgZGVmYXVsdCwgdGhlbiBj aGlsZCAqLwo+ICsJCWlndF9kZWJ1ZygiQ2xvbmluZyAlZFxuIiwgZXh0LmNsb25lX2lkKTsKPiAr CQlpZ3RfYXNzZXJ0X2VxKF9fY3JlYXRlX2V4dChpOTE1LCAmY3JlYXRlKSwgMCk7Cj4gKwo+ICsJ CXNldC5wYXJhbS5jdHhfaWQgPSBleHQuY2xvbmVfaWQ7Cj4gKwkJZ2VtX2NvbnRleHRfZ2V0X3Bh cmFtKGk5MTUsICZzZXQucGFyYW0pOwo+ICsJCWV4cGVjdGVkID0gc2V0LnBhcmFtLnZhbHVlOwo+ ICsKPiArCQlzZXQucGFyYW0uY3R4X2lkID0gY3JlYXRlLmN0eF9pZDsKPiArCQlnZW1fY29udGV4 dF9nZXRfcGFyYW0oaTkxNSwgJnNldC5wYXJhbSk7Cj4gKwo+ICsJCWlndF9hc3NlcnRfZXFfdTY0 KHNldC5wYXJhbS5wYXJhbSwgSTkxNV9DT05URVhUX1BBUkFNX1BSSU9SSVRZKTsKPiArCQlpZ3Rf YXNzZXJ0X2VxKChpbnQpc2V0LnBhcmFtLnZhbHVlLCBleHBlY3RlZCk7Cj4gKwo+ICsJCWdlbV9j b250ZXh0X2Rlc3Ryb3koaTkxNSwgY3JlYXRlLmN0eF9pZCk7Cj4gKwo+ICsJCWV4cGVjdGVkID0g c2V0LnBhcmFtLnZhbHVlID0gMTsKPiArCQlzZXQucGFyYW0uY3R4X2lkID0gZXh0LmNsb25lX2lk Owo+ICsJCWdlbV9jb250ZXh0X3NldF9wYXJhbShpOTE1LCAmc2V0LnBhcmFtKTsKPiArCj4gKwkJ aWd0X2Fzc2VydF9lcShfX2NyZWF0ZV9leHQoaTkxNSwgJmNyZWF0ZSksIDApOwo+ICsKPiArCQlz ZXQucGFyYW0uY3R4X2lkID0gY3JlYXRlLmN0eF9pZDsKPiArCQlnZW1fY29udGV4dF9nZXRfcGFy YW0oaTkxNSwgJnNldC5wYXJhbSk7Cj4gKwo+ICsJCWlndF9hc3NlcnRfZXFfdTY0KHNldC5wYXJh bS5wYXJhbSwgSTkxNV9DT05URVhUX1BBUkFNX1BSSU9SSVRZKTsKPiArCQlpZ3RfYXNzZXJ0X2Vx KChpbnQpc2V0LnBhcmFtLnZhbHVlLCBleHBlY3RlZCk7Cj4gKwo+ICsJCWdlbV9jb250ZXh0X2Rl c3Ryb3koaTkxNSwgY3JlYXRlLmN0eF9pZCk7Cj4gKwo+ICsJCS8qIGNsb25lIGJ1dCB0aGVuIHJl c2V0IHByaW9yaXR5IHRvIGRlZmF1bHQgKi8KPiArCQlzZXQucGFyYW0uY3R4X2lkID0gMDsKPiAr CQlzZXQucGFyYW0udmFsdWUgPSAwOwo+ICsJCWV4dC5iYXNlLm5leHRfZXh0ZW5zaW9uID0gdG9f dXNlcl9wb2ludGVyKCZzZXQpOwo+ICsJCWlndF9hc3NlcnRfZXEoX19jcmVhdGVfZXh0KGk5MTUs ICZjcmVhdGUpLCAwKTsKPiArCQlleHQuYmFzZS5uZXh0X2V4dGVuc2lvbiA9IDA7Cj4gKwo+ICsJ CXNldC5wYXJhbS5jdHhfaWQgPSBjcmVhdGUuY3R4X2lkOwo+ICsJCWdlbV9jb250ZXh0X2dldF9w YXJhbShpOTE1LCAmc2V0LnBhcmFtKTsKPiArCQlpZ3RfYXNzZXJ0X2VxX3U2NChzZXQucGFyYW0u dmFsdWUsIDApOwo+ICsKPiArCQlzZXQucGFyYW0uY3R4X2lkID0gZXh0LmNsb25lX2lkOwo+ICsJ CWdlbV9jb250ZXh0X2dldF9wYXJhbShpOTE1LCAmc2V0LnBhcmFtKTsKPiArCQlpZ3RfYXNzZXJ0 X2VxX3U2NChzZXQucGFyYW0udmFsdWUsIDEpOwo+ICsKPiArCQlnZW1fY29udGV4dF9kZXN0cm95 KGk5MTUsIGNyZWF0ZS5jdHhfaWQpOwo+ICsJCWV4dC5jbG9uZV9pZCA9IGdlbV9jb250ZXh0X2Ny ZWF0ZShpOTE1KTsKPiArCX0KPiArCj4gKwlnZW1fY29udGV4dF9kZXN0cm95KGk5MTUsIGV4dC5j bG9uZV9pZCk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGNsb25lX3ZtKGludCBpOTE1KQo+ICt7 Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfY3JlYXRlX2V4dF9zZXRwYXJhbSBzZXQg PSB7Cj4gKwkJeyAubmFtZSA9IEk5MTVfQ09OVEVYVF9DUkVBVEVfRVhUX1NFVFBBUkFNIH0sCj4g KwkJeyAucGFyYW0gPSBJOTE1X0NPTlRFWFRfUEFSQU1fVk0gfSwKPiArCX07Cj4gKwlzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX2NvbnRleHRfY3JlYXRlX2V4dF9jbG9uZSBleHQgPSB7Cj4gKwkJeyAubmFt ZSA9IEk5MTVfQ09OVEVYVF9DUkVBVEVfRVhUX0NMT05FIH0sCj4gKwkJLmZsYWdzID0gSTkxNV9D T05URVhUX0NMT05FX1ZNLAo+ICsJfTsKPiArCXN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9j cmVhdGVfZXh0IGNyZWF0ZSA9IHsKPiArCQkuZmxhZ3MgPSBJOTE1X0NPTlRFWFRfQ1JFQVRFX0ZM QUdTX1VTRV9FWFRFTlNJT05TLAo+ICsJCS5leHRlbnNpb25zID0gdG9fdXNlcl9wb2ludGVyKCZl eHQpLAo+ICsJfTsKPiArCXVpbnQzMl90IHZtX2lkWzJdOwo+ICsJaW50IGV4cGVjdGVkOwo+ICsK PiArCWlndF9yZXF1aXJlKF9fZ2VtX2NvbnRleHRfc2V0X3BhcmFtKGk5MTUsICZzZXQucGFyYW0p ID09IC1FTk9FTlQpOwo+ICsKPiArCXNldC5wYXJhbS5jdHhfaWQgPSBnZW1fY29udGV4dF9jcmVh dGUoaTkxNSk7Cj4gKwlnZW1fY29udGV4dF9nZXRfcGFyYW0oaTkxNSwgJnNldC5wYXJhbSk7Cj4g Kwl2bV9pZFswXSA9IHNldC5wYXJhbS52YWx1ZTsKPiArCWdlbV9jb250ZXh0X2Rlc3Ryb3koaTkx NSwgc2V0LnBhcmFtLmN0eF9pZCk7CgpEbyB5b3UgaGF2ZSBpbiB0aGUgVk0gaW9jdGwgSUdULCBv ciB0aGUgY3R4IGdldC9zZXQgVk0sIGEgc3VidGVzdCB0aGF0IAp2ZXJpZmllcyBWTSBzdXJ2aXZl cyBjb250ZXh0IGRlc3Ryb3ksIGlmIGl0IHdhcyBleHBvcnRlZCBiZWZvcmUgdGhhdD8gSXQgCndv dWxkIG5lZWQgb25lIEkgdGhpbmsuCgpCdXQgaW4gdGhpcyBwYXJ0aWN1bGFyIG9uZSwgd2hhdCBp cyB0aGUgcmVhc29uIHlvdSBjcmVhdGUgb25lIFZNIAppbmRpcmVjdGx5IHZpYSBjb250ZXh0IGNy ZWF0ZSB3aGljaCBpcyBpbW1lZGlhdGVseSBkZXN0cm95ZWQ/IEV4YWN0bHkgdG8gCnRlc3QgdGhl IGFib3ZlIG1lbnRpb25lZD8KCj4gKwlzZXQucGFyYW0uY3R4X2lkID0gMDsKPiArCj4gKwl2bV9p ZFsxXSA9IGdlbV92bV9jcmVhdGUoaTkxNSk7Cj4gKwo+ICsJZm9yIChpbnQgcGFzcyA9IDA7IHBh c3MgPCAyOyBwYXNzKyspIHsgLyogY2xvbmluZyBkZWZhdWx0LCB0aGVuIGNoaWxkICovCj4gKwkJ aWd0X2RlYnVnKCJDbG9uaW5nICVkXG4iLCBleHQuY2xvbmVfaWQpOwo+ICsJCWlndF9hc3NlcnRf ZXEoX19jcmVhdGVfZXh0KGk5MTUsICZjcmVhdGUpLCAwKTsKPiArCj4gKwkJc2V0LnBhcmFtLmN0 eF9pZCA9IGV4dC5jbG9uZV9pZDsKPiArCQlnZW1fY29udGV4dF9nZXRfcGFyYW0oaTkxNSwgJnNl dC5wYXJhbSk7Cj4gKwkJZXhwZWN0ZWQgPSBzZXQucGFyYW0udmFsdWU7Cj4gKwo+ICsJCXNldC5w YXJhbS5jdHhfaWQgPSBjcmVhdGUuY3R4X2lkOwo+ICsJCWdlbV9jb250ZXh0X2dldF9wYXJhbShp OTE1LCAmc2V0LnBhcmFtKTsKPiArCj4gKwkJaWd0X2Fzc2VydF9lcV91NjQoc2V0LnBhcmFtLnBh cmFtLCBJOTE1X0NPTlRFWFRfUEFSQU1fVk0pOwo+ICsJCWlndF9hc3NlcnRfZXEoKGludClzZXQu cGFyYW0udmFsdWUsIGV4cGVjdGVkKTsKPiArCj4gKwkJZ2VtX2NvbnRleHRfZGVzdHJveShpOTE1 LCBjcmVhdGUuY3R4X2lkKTsKPiArCj4gKwkJZXhwZWN0ZWQgPSBzZXQucGFyYW0udmFsdWUgPSB2 bV9pZFswXTsKPiArCQlzZXQucGFyYW0uY3R4X2lkID0gZXh0LmNsb25lX2lkOwo+ICsJCWdlbV9j b250ZXh0X3NldF9wYXJhbShpOTE1LCAmc2V0LnBhcmFtKTsKPiArCj4gKwkJaWd0X2Fzc2VydF9l cShfX2NyZWF0ZV9leHQoaTkxNSwgJmNyZWF0ZSksIDApOwo+ICsKPiArCQlzZXQucGFyYW0uY3R4 X2lkID0gY3JlYXRlLmN0eF9pZDsKPiArCQlnZW1fY29udGV4dF9nZXRfcGFyYW0oaTkxNSwgJnNl dC5wYXJhbSk7Cj4gKwo+ICsJCWlndF9hc3NlcnRfZXFfdTY0KHNldC5wYXJhbS5wYXJhbSwgSTkx NV9DT05URVhUX1BBUkFNX1ZNKTsKPiArCQlpZ3RfYXNzZXJ0X2VxKChpbnQpc2V0LnBhcmFtLnZh bHVlLCBleHBlY3RlZCk7Cj4gKwo+ICsJCWdlbV9jb250ZXh0X2Rlc3Ryb3koaTkxNSwgY3JlYXRl LmN0eF9pZCk7Cj4gKwkJZXh0LmNsb25lX2lkID0gZ2VtX2NvbnRleHRfY3JlYXRlKGk5MTUpOwo+ ICsJfQoKdm1faWRbMV0gaXMgdW51c2VkLgoKPiArCj4gKwlnZW1fY29udGV4dF9kZXN0cm95KGk5 MTUsIGV4dC5jbG9uZV9pZCk7Cj4gKwo+ICsJZm9yIChpbnQgaSA9IDA7IGkgPCBBUlJBWV9TSVpF KHZtX2lkKTsgaSsrKQo+ICsJCWdlbV92bV9kZXN0cm95KGk5MTUsIHZtX2lkW2ldKTsKPiArfQo+ ICsKPiAraWd0X21haW4KPiArewo+ICsJaW50IGk5MTUgPSAtMTsKPiArCj4gKwlpZ3RfZml4dHVy ZSB7Cj4gKwkJaTkxNSA9IGRybV9vcGVuX2RyaXZlcihEUklWRVJfSU5URUwpOwo+ICsJCWlndF9y ZXF1aXJlX2dlbShpOTE1KTsKPiArCQlnZW1fcmVxdWlyZV9jb250ZXh0cyhpOTE1KTsKPiArCj4g KwkJaWd0X3JlcXVpcmUoaGFzX2N0eF9jbG9uZShpOTE1KSk7Cj4gKwl9Cj4gKwo+ICsJaWd0X3N1 YnRlc3QoImludmFsaWQiKQo+ICsJCWludmFsaWRfY2xvbmUoaTkxNSk7Cj4gKwo+ICsJaWd0X3N1 YnRlc3QoImVuZ2luZXMiKQo+ICsJCWNsb25lX2VuZ2luZXMoaTkxNSk7Cj4gKwo+ICsJaWd0X3N1 YnRlc3QoImZsYWdzIikKPiArCQljbG9uZV9mbGFncyhpOTE1KTsKPiArCj4gKwlpZ3Rfc3VidGVz dCgic2NoZWR1bGVyIikKPiArCQljbG9uZV9zY2hlZHVsZXIoaTkxNSk7Cj4gKwo+ICsJaWd0X3N1 YnRlc3QoInZtIikKPiArCQljbG9uZV92bShpOTE1KTsKPiArCj4gKwlpZ3RfZml4dHVyZSB7Cj4g KwkJY2xvc2UoaTkxNSk7Cj4gKwl9Cj4gK30KPiBkaWZmIC0tZ2l0IGEvdGVzdHMvbWVzb24uYnVp bGQgYi90ZXN0cy9tZXNvbi5idWlsZAo+IGluZGV4IDk0OWVlZmQ2Zi4uN2MxOTRjM2UzIDEwMDY0 NAo+IC0tLSBhL3Rlc3RzL21lc29uLmJ1aWxkCj4gKysrIGIvdGVzdHMvbWVzb24uYnVpbGQKPiBA QCAtMTA4LDYgKzEwOCw3IEBAIGk5MTVfcHJvZ3MgPSBbCj4gICAJJ2dlbV9jc19wcmVmZXRjaCcs Cj4gICAJJ2dlbV9jc190bGInLAo+ICAgCSdnZW1fY3R4X2JhZF9kZXN0cm95JywKPiArCSdnZW1f Y3R4X2Nsb25lJywKPiAgIAknZ2VtX2N0eF9jcmVhdGUnLAo+ICAgCSdnZW1fY3R4X2V4ZWMnLAo+ ICAgCSdnZW1fY3R4X2lzb2xhdGlvbicsCj4gCgpSZWdhcmRzLAoKVHZydGtvCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmlndC1kZXYgbWFpbGluZyBsaXN0 CmlndC1kZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vaWd0LWRldg==