From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matthew Brost Subject: Re: [PATCH 20/27] drm/i915: Remove logical HW ID Date: Wed, 25 Sep 2019 11:23:47 -0700 Message-ID: <20190925182347.GA72488@sdutt> References: <20190925100137.17956-1-chris@chris-wilson.co.uk> <20190925100137.17956-21-chris@chris-wilson.co.uk> <063d6c67-0efb-89c6-4726-6006e64eb088@linux.intel.com> <38a95bd7-ee56-ac2c-f130-e6f29e72cbe1@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id 5F1556ED88 for ; Wed, 25 Sep 2019 18:29:26 +0000 (UTC) Content-Disposition: inline In-Reply-To: <38a95bd7-ee56-ac2c-f130-e6f29e72cbe1@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Daniele Ceraolo Spurio Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCBTZXAgMjUsIDIwMTkgYXQgMTA6NTk6MzJBTSAtMDcwMCwgRGFuaWVsZSBDZXJhb2xv IFNwdXJpbyB3cm90ZToKPisgTWF0dAo+CgpJJ3ZlIHJldmlld2VkIHRoaXMgcGF0Y2ggYW5kIHRo aXMgYWZmZWN0cyBzb21lIG9mIHRoZSB3b3JrIEknbSBkb2luZyBvbiB0aGUgbmV3Ckd1QyBpbnRl cmZhY2UuIEZvciB0aGUgbmV3IEd1QyBpbnRlcmZhY2UgSSBoYXZlIHR3byBwYXRjaGVzIHRoYXQg cmV3b3JrIHRoZSBIVwpJRCBhc3NpZ25tZW50LgoKVGhlIGZpcnN0IHBhdGNoIG1vdmVzIG93bmVy c2hpcCBvZiB0aGUgSFcgSUQgZnJvbSBpOTE1X2dlbV9jb250ZXh0IHRvCmludGVsX2NvbnRleHQg YXMgdGhlIG5ldyBHdUMgaGFzIDEgdG8gMSBtYXBwaW5nIGJldHdlZW5zIEhXIElEcyBhbmQgTFJD cy4KClRoZSBzZWNvbmQgcGF0Y2ggY2hhbmdlcyB0aGUgYWxsb2NhdGlvbiBhbGdvcml0aG0gdG8g dXNlIGEgYml0bWFwIHJhdGhlciB0aGFuCmlkYSBhcyBjb250aWd1b3VzIEhXIElEcyBhcmUgcmVx dWlyZWQgZm9yIG11bHRpLWxyYyB0byB3b3JrIHdpdGggdGhlIG5ldyBHdUMuCgpBbGwgb2YgdGhp cyBiZWluZyBzYWlkLCBJIGRvbid0IHRoaW5rIGFueXRoaW5nIGluIHRoaXMgcGF0Y2ggd2lsbCBi YWRseSBicmVhawp3aGF0IEkgaGF2ZSBmb3IgdGhlIG5ldyBHdUMuIEF0IG1vc3QgaXQgd2lsbCBi ZSBtaW5vciByZWZhY3RvciBvbmNlIHRoZSBuZXcgR3VDCnBhdGNoZXMgYXJlIHJlYmFzZWQgb24g dG9wIG9mIHRoZXNlIHBhdGNoZXMuCgotTWF0dAoKPk9uIDkvMjUvMTkgNTo0MSBBTSwgVHZydGtv IFVyc3VsaW4gd3JvdGU6Cj4+WysgRGFuaWVsZSwgSSB0aGluayBoZSBtaWdodCB3YW50IHRvIGhh dmUgYSBsb29rIGF0IHRoaXMuXQo+Pgo+Pk9uIDI1LzA5LzIwMTkgMTE6MDEsIENocmlzIFdpbHNv biB3cm90ZToKPj4+V2l0aCB0aGUgaW50cm9kdWN0aW9uIG9mIGN0eC0+ZW5naW5lc1tdIHdlIGFs bG93IG11bHRpcGxlIGxvZ2ljYWwKPj4+Y29udGV4dHMgdG8gYmUgdXNlZCBvbiB0aGUgc2FtZSBl bmdpbmUgKGUuZy4gd2l0aCB2aXJ0dWFsIGVuZ2luZXMpLiBFYWNoCj4+PmxvZ2ljYWwgY29udGV4 dCByZXF1aXJlcyBhIHVuaXF1ZSB0YWcgaW4gb3JkZXIgZm9yIGNvbnRleHQtc3dpdGNoaW5nIHRv Cj4+Pm9jY3VyIGNvcnJlY3RseSBiZXR3ZWVuIHRoZW0uCj4+Pgo+Pj5XZSBvbmx5IG5lZWQgdG8g a2VlcCBhIHVuaXF1ZSB0YWcgZm9yIHRoZSBhY3RpdmUgbGlmZXRpbWUgb2YgdGhlCj4+PmNvbnRl eHQsIGFuZCBmb3IgYXMgbG9uZyBhcyB3ZSBuZWVkIHRvIGlkZW50aWZ5IHRoYXQgY29udGV4dC4g VGhlIEhXCj4+PnVzZXMgdGhlIHRhZyB0byBkZXRlcm1pbmUgaWYgaXQgc2hvdWxkIHVzZSBhIGxp dGUtcmVzdG9yZSAod2h5IG5vdCB0aGUKPj4+TFJDQT8pIGFuZCBwYXNzZXMgdGhlIHRhZyBiYWNr IGZvciB2YXJpb3VzIHN0YXR1cyBpZGVudGlmaWVzLiBUaGUgb25seQo+Pj5zdGF0dXMgd2UgbmVl ZCB0byB0cmFjayBpcyBmb3IgT0EsIHNvIHdoZW4gdXNpbmcgcGVyZiwgd2UgYXNzaWduIHRoZQo+ Pj5zcGVjaWZpYyBjb250ZXh0IGEgdW5pcXVlIHRhZy4KPj4+Cj4+PkZpeGVzOiA5NzZiNTVmMGUx ZGIgKCJkcm0vaTkxNTogQWxsb3cgYSBjb250ZXh0IHRvIGRlZmluZSBpdHMgc2V0IAo+Pj5vZiBl bmdpbmVzIikKPj4KPj5GaXhlcz8gV2h5Pwo+Pgo+Pj5TaWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxz b24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KPj4+LS0tCj4+PsKgIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2dlbS9pOTE1X2dlbV9jb250ZXh0LmPCoMKgIHwgMTQ3IC0tLS0tLS0tLS0tLS0tLS0t LQo+Pj7CoCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fY29udGV4dC5owqDCoCB8 wqAgMTUgLS0KPj4+wqAgLi4uL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fY29udGV4dF90eXBl cy5oIHzCoCAxOCAtLS0KPj4+wqAgLi4uL2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1f Y29udGV4dC5jIHzCoCAxMyArLQo+Pj7CoCAuLi4vZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMv bW9ja19jb250ZXh0LmMgfMKgwqAgOCAtCj4+PsKgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2lu dGVsX2NvbnRleHRfdHlwZXMuaCB8wqDCoCAxICsKPj4+wqAgZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3QvaW50ZWxfZW5naW5lX3R5cGVzLmjCoCB8wqDCoCA0ICstCj4+PsKgIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d0L2ludGVsX2xyYy5jwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgIDI5ICsrLS0KPj4+ wqAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2t2bWd0LmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCB8wqAgMTcgLS0KPj4+wqAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmPC oMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoCAzIC0KPj4+wqAgZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9ncHVfZXJyb3IuY8KgwqDCoMKgwqDCoMKgwqAgfMKgwqAgNyArLQo+Pj7CoCBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5owqDCoMKgwqDCoMKgwqDCoCB8wqDCoCAxIC0K Pj4+wqAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wZXJmLmPCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCB8wqAgMjUgKystCj4+PsKgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdHJhY2Uu aMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqAgMzggKystLS0KPj4+wqAgLi4uL2dwdS9kcm0v aTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1fZXZpY3QuY8KgwqAgfMKgwqAgNCArLQo+Pj7CoCBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV92bWEuY8KgwqDCoMKgIHzCoMKgIDIgKy0K Pj4+wqAgMTYgZmlsZXMgY2hhbmdlZCwgNDggaW5zZXJ0aW9ucygrKSwgMjg0IGRlbGV0aW9ucygt KQo+Pj4KPj4+ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9j b250ZXh0LmMgCj4+PmIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2NvbnRleHQu Ywo+Pj5pbmRleCBlODMyMjM4YTcyZTUuLjRlNTliODA5ZDkwMSAxMDA2NDQKPj4+LS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2NvbnRleHQuYwo+Pj4rKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fY29udGV4dC5jCj4+PkBAIC0xNjgsOTcgKzE2OCw2 IEBAIGxvb2t1cF91c2VyX2VuZ2luZShzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAo+Pj7C oMKgwqDCoMKgIHJldHVybiBpOTE1X2dlbV9jb250ZXh0X2dldF9lbmdpbmUoY3R4LCBpZHgpOwo+ Pj7CoCB9Cj4+Pi1zdGF0aWMgaW5saW5lIGludCBuZXdfaHdfaWQoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmk5MTUsIGdmcF90IGdmcCkKPj4+LXsKPj4+LcKgwqDCoCB1bnNpZ25lZCBpbnQgbWF4 Owo+Pj4tCj4+Pi3CoMKgwqAgbG9ja2RlcF9hc3NlcnRfaGVsZCgmaTkxNS0+Y29udGV4dHMubXV0 ZXgpOwo+Pj4tCj4+Pi3CoMKgwqAgaWYgKElOVEVMX0dFTihpOTE1KSA+PSAxMikKPj4+LcKgwqDC oMKgwqDCoMKgIG1heCA9IEdFTjEyX01BWF9DT05URVhUX0hXX0lEOwo+Pj4twqDCoMKgIGVsc2Ug aWYgKElOVEVMX0dFTihpOTE1KSA+PSAxMSkKPj4+LcKgwqDCoMKgwqDCoMKgIG1heCA9IEdFTjEx X01BWF9DT05URVhUX0hXX0lEOwo+Pj4twqDCoMKgIGVsc2UgaWYgKFVTRVNfR1VDX1NVQk1JU1NJ T04oaTkxNSkpCj4+Pi3CoMKgwqDCoMKgwqDCoCAvKgo+Pj4twqDCoMKgwqDCoMKgwqDCoCAqIFdo ZW4gdXNpbmcgR3VDIGluIHByb3h5IHN1Ym1pc3Npb24sIEd1QyBjb25zdW1lcyB0aGUKPj4+LcKg wqDCoMKgwqDCoMKgwqAgKiBoaWdoZXN0IGJpdCBpbiB0aGUgY29udGV4dCBpZCB0byBpbmRpY2F0 ZSBwcm94eSBzdWJtaXNzaW9uLgo+Pj4twqDCoMKgwqDCoMKgwqDCoCAqLwo+Pj4twqDCoMKgwqDC oMKgwqAgbWF4ID0gTUFYX0dVQ19DT05URVhUX0hXX0lEOwo+Pj4twqDCoMKgIGVsc2UKPj4+LcKg wqDCoMKgwqDCoMKgIG1heCA9IE1BWF9DT05URVhUX0hXX0lEOwo+Pj4tCj4+Pi3CoMKgwqAgcmV0 dXJuIGlkYV9zaW1wbGVfZ2V0KCZpOTE1LT5jb250ZXh0cy5od19pZGEsIDAsIG1heCwgZ2ZwKTsK Pj4+LX0KPj4+LQo+Pj4tc3RhdGljIGludCBzdGVhbF9od19pZChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqaTkxNSkKPj4+LXsKPj4+LcKgwqDCoCBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4 LCAqY247Cj4+Pi3CoMKgwqAgTElTVF9IRUFEKHBpbm5lZCk7Cj4+Pi3CoMKgwqAgaW50IGlkID0g LUVOT1NQQzsKPj4+LQo+Pj4twqDCoMKgIGxvY2tkZXBfYXNzZXJ0X2hlbGQoJmk5MTUtPmNvbnRl eHRzLm11dGV4KTsKPj4+LQo+Pj4twqDCoMKgIGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShjdHgs IGNuLAo+Pj4twqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgJmk5MTUtPmNvbnRleHRz Lmh3X2lkX2xpc3QsIGh3X2lkX2xpbmspIHsKPj4+LcKgwqDCoMKgwqDCoMKgIGlmIChhdG9taWNf cmVhZCgmY3R4LT5od19pZF9waW5fY291bnQpKSB7Cj4+Pi3CoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGxpc3RfbW92ZV90YWlsKCZjdHgtPmh3X2lkX2xpbmssICZwaW5uZWQpOwo+Pj4twqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBjb250aW51ZTsKPj4+LcKgwqDCoMKgwqDCoMKgIH0KPj4+LQo+Pj4twqDC oMKgwqDCoMKgwqAgR0VNX0JVR19PTighY3R4LT5od19pZCk7IC8qIHBlcm1hLXBpbm5lZCBrZXJu ZWwgY29udGV4dCAqLwo+Pj4twqDCoMKgwqDCoMKgwqAgbGlzdF9kZWxfaW5pdCgmY3R4LT5od19p ZF9saW5rKTsKPj4+LcKgwqDCoMKgwqDCoMKgIGlkID0gY3R4LT5od19pZDsKPj4+LcKgwqDCoMKg wqDCoMKgIGJyZWFrOwo+Pj4twqDCoMKgIH0KPj4+LQo+Pj4twqDCoMKgIC8qCj4+Pi3CoMKgwqDC oCAqIFJlbWVtYmVyIGhvdyBmYXIgd2UgZ290IHVwIG9uIHRoZSBsYXN0IHJlcG9zc2VzaW9uIHNj YW4sIHNvIHRoZQo+Pj4twqDCoMKgwqAgKiBsaXN0IGlzIGtlcHQgaW4gYSAibGVhc3QgcmVjZW50 bHkgc2Nhbm5lZCIgb3JkZXIuCj4+Pi3CoMKgwqDCoCAqLwo+Pj4twqDCoMKgIGxpc3Rfc3BsaWNl X3RhaWwoJnBpbm5lZCwgJmk5MTUtPmNvbnRleHRzLmh3X2lkX2xpc3QpOwo+Pj4twqDCoMKgIHJl dHVybiBpZDsKPj4+LX0KPj4+LQo+Pj4tc3RhdGljIGludCBhc3NpZ25faHdfaWQoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmk5MTUsIHVuc2lnbmVkIAo+Pj5pbnQgKm91dCkKPj4+LXsKPj4+LcKg wqDCoCBpbnQgcmV0Owo+Pj4tCj4+Pi3CoMKgwqAgbG9ja2RlcF9hc3NlcnRfaGVsZCgmaTkxNS0+ Y29udGV4dHMubXV0ZXgpOwo+Pj4tCj4+Pi3CoMKgwqAgLyoKPj4+LcKgwqDCoMKgICogV2UgcHJl ZmVyIHRvIHN0ZWFsL3N0YWxsIG91cnNlbHZlcyBhbmQgb3VyIHVzZXJzIG92ZXIgdGhhdCBvZiB0 aGUKPj4+LcKgwqDCoMKgICogZW50aXJlIHN5c3RlbS4gVGhhdCBtYXkgYmUgYSBsaXR0bGUgdW5m YWlyIHRvIG91ciB1c2VycywgYW5kCj4+Pi3CoMKgwqDCoCAqIGV2ZW4gaHVydCBoaWdoIHByaW9y aXR5IGNsaWVudHMuIFRoZSBjaG9pY2UgaXMgd2hldGhlciB0byBvb21raWxsCj4+Pi3CoMKgwqDC oCAqIHNvbWV0aGluZyBlbHNlLCBvciBzdGVhbCBhIGNvbnRleHQgaWQuCj4+Pi3CoMKgwqDCoCAq Lwo+Pj4twqDCoMKgIHJldCA9IG5ld19od19pZChpOTE1LCBHRlBfS0VSTkVMIHwgX19HRlBfUkVU UllfTUFZRkFJTCB8IAo+Pj5fX0dGUF9OT1dBUk4pOwo+Pj4twqDCoMKgIGlmICh1bmxpa2VseShy ZXQgPCAwKSkgewo+Pj4twqDCoMKgwqDCoMKgwqAgcmV0ID0gc3RlYWxfaHdfaWQoaTkxNSk7Cj4+ Pi3CoMKgwqDCoMKgwqDCoCBpZiAocmV0IDwgMCkgLyogb25jZSBhZ2FpbiBmb3IgdGhlIGNvcnJl Y3QgZXJybm8gY29kZSAqLwo+Pj4twqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXQgPSBuZXdfaHdf aWQoaTkxNSwgR0ZQX0tFUk5FTCk7Cj4+Pi3CoMKgwqDCoMKgwqDCoCBpZiAocmV0IDwgMCkKPj4+ LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIHJldDsKPj4+LcKgwqDCoCB9Cj4+Pi0KPj4+ LcKgwqDCoCAqb3V0ID0gcmV0Owo+Pj4twqDCoMKgIHJldHVybiAwOwo+Pj4tfQo+Pj4tCj4+Pi1z dGF0aWMgdm9pZCByZWxlYXNlX2h3X2lkKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgpCj4+ Pi17Cj4+Pi3CoMKgwqAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBjdHgtPmk5MTU7 Cj4+Pi0KPj4+LcKgwqDCoCBpZiAobGlzdF9lbXB0eSgmY3R4LT5od19pZF9saW5rKSkKPj4+LcKg wqDCoMKgwqDCoMKgIHJldHVybjsKPj4+LQo+Pj4twqDCoMKgIG11dGV4X2xvY2soJmk5MTUtPmNv bnRleHRzLm11dGV4KTsKPj4+LcKgwqDCoCBpZiAoIWxpc3RfZW1wdHkoJmN0eC0+aHdfaWRfbGlu aykpIHsKPj4+LcKgwqDCoMKgwqDCoMKgIGlkYV9zaW1wbGVfcmVtb3ZlKCZpOTE1LT5jb250ZXh0 cy5od19pZGEsIGN0eC0+aHdfaWQpOwo+Pj4twqDCoMKgwqDCoMKgwqAgbGlzdF9kZWxfaW5pdCgm Y3R4LT5od19pZF9saW5rKTsKPj4+LcKgwqDCoCB9Cj4+Pi3CoMKgwqAgbXV0ZXhfdW5sb2NrKCZp OTE1LT5jb250ZXh0cy5tdXRleCk7Cj4+Pi19Cj4+Pi0KPj4+wqAgc3RhdGljIHZvaWQgX19mcmVl X2VuZ2luZXMoc3RydWN0IGk5MTVfZ2VtX2VuZ2luZXMgKmUsIHVuc2lnbmVkIAo+Pj5pbnQgY291 bnQpCj4+PsKgIHsKPj4+wqDCoMKgwqDCoCB3aGlsZSAoY291bnQtLSkgewo+Pj5AQCAtMzEzLDgg KzIyMiw2IEBAIHN0YXRpYyB2b2lkIGk5MTVfZ2VtX2NvbnRleHRfZnJlZShzdHJ1Y3QgCj4+Pmk5 MTVfZ2VtX2NvbnRleHQgKmN0eCkKPj4+wqDCoMKgwqDCoCBsb2NrZGVwX2Fzc2VydF9oZWxkKCZj dHgtPmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+Pj7CoMKgwqDCoMKgIEdFTV9CVUdfT04oIWk5 MTVfZ2VtX2NvbnRleHRfaXNfY2xvc2VkKGN0eCkpOwo+Pj4twqDCoMKgIHJlbGVhc2VfaHdfaWQo Y3R4KTsKPj4+LQo+Pj7CoMKgwqDCoMKgIGZyZWVfZW5naW5lcyhyY3VfYWNjZXNzX3BvaW50ZXIo Y3R4LT5lbmdpbmVzKSk7Cj4+PsKgwqDCoMKgwqAgbXV0ZXhfZGVzdHJveSgmY3R4LT5lbmdpbmVz X211dGV4KTsKPj4+QEAgLTQ1OSwxMiArMzY2LDYgQEAgc3RhdGljIHZvaWQgY29udGV4dF9jbG9z ZShzdHJ1Y3QgCj4+Pmk5MTVfZ2VtX2NvbnRleHQgKmN0eCkKPj4+wqDCoMKgwqDCoCBjdHgtPmZp bGVfcHJpdiA9IEVSUl9QVFIoLUVCQURGKTsKPj4+LcKgwqDCoCAvKgo+Pj4twqDCoMKgwqAgKiBU aGlzIGNvbnRleHQgd2lsbCBuZXZlciBhZ2FpbiBiZSBhc3NpbmdlZCB0byBIVywgc28gd2UgY2Fu Cj4+Pi3CoMKgwqDCoCAqIHJldXNlIGl0cyBJRCBmb3IgdGhlIG5leHQgY29udGV4dC4KPj4+LcKg wqDCoMKgICovCj4+Pi3CoMKgwqAgcmVsZWFzZV9od19pZChjdHgpOwo+Pj4tCj4+PsKgwqDCoMKg wqAgLyoKPj4+wqDCoMKgwqDCoMKgICogVGhlIExVVCB1c2VzIHRoZSBWTUEgYXMgYSBiYWNrcG9p bnRlciB0byB1bnJlZiB0aGUgb2JqZWN0LAo+Pj7CoMKgwqDCoMKgwqAgKiBzbyB3ZSBuZWVkIHRv IGNsZWFyIHRoZSBMVVQgYmVmb3JlIHdlIGNsb3NlIGFsbCB0aGUgVk1BIChpbnNpZGUKPj4+QEAg LTUwNyw3ICs0MDgsNiBAQCBfX2NyZWF0ZV9jb250ZXh0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICppOTE1KQo+Pj7CoMKgwqDCoMKgIFJDVV9JTklUX1BPSU5URVIoY3R4LT5lbmdpbmVzLCBlKTsK Pj4+wqDCoMKgwqDCoCBJTklUX1JBRElYX1RSRUUoJmN0eC0+aGFuZGxlc192bWEsIEdGUF9LRVJO RUwpOwo+Pj4twqDCoMKgIElOSVRfTElTVF9IRUFEKCZjdHgtPmh3X2lkX2xpbmspOwo+Pj7CoMKg wqDCoMKgIC8qIE5COiBNYXJrIGFsbCBzbGljZXMgYXMgbmVlZGluZyBhIHJlbWFwIHNvIHRoYXQg d2hlbiB0aGUgCj4+PmNvbnRleHQgZmlyc3QKPj4+wqDCoMKgwqDCoMKgICogbG9hZHMgaXQgd2ls bCByZXN0b3JlIHdoYXRldmVyIHJlbWFwIHN0YXRlIGFscmVhZHkgCj4+PmV4aXN0cy4gSWYgdGhl cmUKPj4+QEAgLTY3NiwxOCArNTc2LDExIEBAIHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICoKPj4+ wqAgaTkxNV9nZW1fY29udGV4dF9jcmVhdGVfa2VybmVsKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICppOTE1LCBpbnQgcHJpbykKPj4+wqAgewo+Pj7CoMKgwqDCoMKgIHN0cnVjdCBpOTE1X2dlbV9j b250ZXh0ICpjdHg7Cj4+Pi3CoMKgwqAgaW50IGVycjsKPj4+wqDCoMKgwqDCoCBjdHggPSBpOTE1 X2dlbV9jcmVhdGVfY29udGV4dChpOTE1LCAwKTsKPj4+wqDCoMKgwqDCoCBpZiAoSVNfRVJSKGN0 eCkpCj4+PsKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gY3R4Owo+Pj4twqDCoMKgIGVyciA9IGk5 MTVfZ2VtX2NvbnRleHRfcGluX2h3X2lkKGN0eCk7Cj4+Pi3CoMKgwqAgaWYgKGVycikgewo+Pj4t wqDCoMKgwqDCoMKgwqAgZGVzdHJveV9rZXJuZWxfY29udGV4dCgmY3R4KTsKPj4+LcKgwqDCoMKg wqDCoMKgIHJldHVybiBFUlJfUFRSKGVycik7Cj4+Pi3CoMKgwqAgfQo+Pj4tCj4+PsKgwqDCoMKg wqAgaTkxNV9nZW1fY29udGV4dF9jbGVhcl9iYW5uYWJsZShjdHgpOwo+Pj7CoMKgwqDCoMKgIGk5 MTVfZ2VtX2NvbnRleHRfc2V0X3BlcnNpc3RlbmNlKGN0eCk7Cj4+PsKgwqDCoMKgwqAgY3R4LT5z Y2hlZC5wcmlvcml0eSA9IEk5MTVfVVNFUl9QUklPUklUWShwcmlvKTsKPj4+QEAgLTcyNywxNSAr NjIwLDYgQEAgaW50IGk5MTVfZ2VtX2NvbnRleHRzX2luaXQoc3RydWN0IAo+Pj5kcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdikKPj4+wqDCoMKgwqDCoMKgwqDCoMKgIERSTV9FUlJPUigiRmFpbGVk IHRvIGNyZWF0ZSBkZWZhdWx0IGdsb2JhbCBjb250ZXh0XG4iKTsKPj4+wqDCoMKgwqDCoMKgwqDC oMKgIHJldHVybiBQVFJfRVJSKGN0eCk7Cj4+PsKgwqDCoMKgwqAgfQo+Pj4twqDCoMKgIC8qCj4+ Pi3CoMKgwqDCoCAqIEZvciBlYXN5IHJlY29nbmlzYWJsaXR5LCB3ZSB3YW50IHRoZSBrZXJuZWwg Y29udGV4dCB0byBiZSAKPj4+MCBhbmQgdGhlbgo+Pj4twqDCoMKgwqAgKiBhbGwgdXNlciBjb250 ZXh0cyB3aWxsIGhhdmUgbm9uLXplcm8gaHdfaWQuIEtlcm5lbCBjb250ZXh0cyBhcmUKPj4+LcKg wqDCoMKgICogcGVybWFuZW50bHkgcGlubmVkLCBzbyB0aGF0IHdlIG5ldmVyIHN1ZmZlciBhIHN0 YWxsIGFuZCBjYW4KPj4+LcKgwqDCoMKgICogdXNlIHRoZW0gZnJvbSBhbnkgYWxsb2NhdGlvbiBj b250ZXh0IChlLmcuIGZvciBldmljdGluZyBvdGhlcgo+Pj4twqDCoMKgwqAgKiBjb250ZXh0cyBh bmQgZnJvbSBpbnNpZGUgdGhlIHNocmlua2VyKS4KPj4+LcKgwqDCoMKgICovCj4+Pi3CoMKgwqAg R0VNX0JVR19PTihjdHgtPmh3X2lkKTsKPj4+LcKgwqDCoCBHRU1fQlVHX09OKCFhdG9taWNfcmVh ZCgmY3R4LT5od19pZF9waW5fY291bnQpKTsKPj4+wqDCoMKgwqDCoCBkZXZfcHJpdi0+a2VybmVs X2NvbnRleHQgPSBjdHg7Cj4+PsKgwqDCoMKgwqAgRFJNX0RFQlVHX0RSSVZFUigiJXMgY29udGV4 dCBzdXBwb3J0IGluaXRpYWxpemVkXG4iLAo+Pj5AQCAtNzQ5LDEwICs2MzMsNiBAQCB2b2lkIGk5 MTVfZ2VtX2NvbnRleHRzX2Zpbmkoc3RydWN0IAo+Pj5kcm1faTkxNV9wcml2YXRlICppOTE1KQo+ Pj7CoMKgwqDCoMKgIGxvY2tkZXBfYXNzZXJ0X2hlbGQoJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgp Owo+Pj7CoMKgwqDCoMKgIGRlc3Ryb3lfa2VybmVsX2NvbnRleHQoJmk5MTUtPmtlcm5lbF9jb250 ZXh0KTsKPj4+LQo+Pj4twqDCoMKgIC8qIE11c3QgZnJlZSBhbGwgZGVmZXJyZWQgY29udGV4dHMg KHZpYSBmbHVzaF93b3JrcXVldWUpIGZpcnN0ICovCj4+Pi3CoMKgwqAgR0VNX0JVR19PTighbGlz dF9lbXB0eSgmaTkxNS0+Y29udGV4dHMuaHdfaWRfbGlzdCkpOwo+Pj4twqDCoMKgIGlkYV9kZXN0 cm95KCZpOTE1LT5jb250ZXh0cy5od19pZGEpOwo+Pj7CoCB9Cj4+PsKgIHN0YXRpYyBpbnQgY29u dGV4dF9pZHJfY2xlYW51cChpbnQgaWQsIHZvaWQgKnAsIHZvaWQgKmRhdGEpCj4+PkBAIC0yNDM4 LDMzICsyMzE4LDYgQEAgaW50IAo+Pj5pOTE1X2dlbV9jb250ZXh0X3Jlc2V0X3N0YXRzX2lvY3Rs KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4+PsKgwqDCoMKgwqAgcmV0dXJuIHJldDsKPj4+wqAg fQo+Pj4taW50IF9faTkxNV9nZW1fY29udGV4dF9waW5faHdfaWQoc3RydWN0IGk5MTVfZ2VtX2Nv bnRleHQgKmN0eCkKPj4+LXsKPj4+LcKgwqDCoCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkx NSA9IGN0eC0+aTkxNTsKPj4+LcKgwqDCoCBpbnQgZXJyID0gMDsKPj4+LQo+Pj4twqDCoMKgIG11 dGV4X2xvY2soJmk5MTUtPmNvbnRleHRzLm11dGV4KTsKPj4+LQo+Pj4twqDCoMKgIEdFTV9CVUdf T04oaTkxNV9nZW1fY29udGV4dF9pc19jbG9zZWQoY3R4KSk7Cj4+Pi0KPj4+LcKgwqDCoCBpZiAo bGlzdF9lbXB0eSgmY3R4LT5od19pZF9saW5rKSkgewo+Pj4twqDCoMKgwqDCoMKgwqAgR0VNX0JV R19PTihhdG9taWNfcmVhZCgmY3R4LT5od19pZF9waW5fY291bnQpKTsKPj4+LQo+Pj4twqDCoMKg wqDCoMKgwqAgZXJyID0gYXNzaWduX2h3X2lkKGk5MTUsICZjdHgtPmh3X2lkKTsKPj4+LcKgwqDC oMKgwqDCoMKgIGlmIChlcnIpCj4+Pi3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGdvdG8gb3V0X3Vu bG9jazsKPj4+LQo+Pj4twqDCoMKgwqDCoMKgwqAgbGlzdF9hZGRfdGFpbCgmY3R4LT5od19pZF9s aW5rLCAmaTkxNS0+Y29udGV4dHMuaHdfaWRfbGlzdCk7Cj4+Pi3CoMKgwqAgfQo+Pj4tCj4+Pi3C oMKgwqAgR0VNX0JVR19PTihhdG9taWNfcmVhZCgmY3R4LT5od19pZF9waW5fY291bnQpID09IH4w dSk7Cj4+Pi3CoMKgwqAgYXRvbWljX2luYygmY3R4LT5od19pZF9waW5fY291bnQpOwo+Pj4tCj4+ Pi1vdXRfdW5sb2NrOgo+Pj4twqDCoMKgIG11dGV4X3VubG9jaygmaTkxNS0+Y29udGV4dHMubXV0 ZXgpOwo+Pj4twqDCoMKgIHJldHVybiBlcnI7Cj4+Pi19Cj4+Pi0KPj4+wqAgLyogR0VNIGNvbnRl eHQtZW5naW5lcyBpdGVyYXRvcjogZm9yX2VhY2hfZ2VtX2VuZ2luZSgpICovCj4+PsKgIHN0cnVj dCBpbnRlbF9jb250ZXh0ICoKPj4+wqAgaTkxNV9nZW1fZW5naW5lc19pdGVyX25leHQoc3RydWN0 IGk5MTVfZ2VtX2VuZ2luZXNfaXRlciAqaXQpCj4+PmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9nZW0vaTkxNV9nZW1fY29udGV4dC5oIAo+Pj5iL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2dlbS9pOTE1X2dlbV9jb250ZXh0LmgKPj4+aW5kZXggZTBmNWI2YzZhMzMxLi4xYjBkZjUzNDM2 Y2YgMTAwNjQ0Cj4+Pi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9jb250 ZXh0LmgKPj4+KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2NvbnRleHQu aAo+Pj5AQCAtMTI3LDIxICsxMjcsNiBAQCBpOTE1X2dlbV9jb250ZXh0X2NsZWFyX3VzZXJfZW5n aW5lcyhzdHJ1Y3QgCj4+Pmk5MTVfZ2VtX2NvbnRleHQgKmN0eCkKPj4+wqDCoMKgwqDCoCBjbGVh cl9iaXQoQ09OVEVYVF9VU0VSX0VOR0lORVMsICZjdHgtPmZsYWdzKTsKPj4+wqAgfQo+Pj4taW50 IF9faTkxNV9nZW1fY29udGV4dF9waW5faHdfaWQoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0 eCk7Cj4+Pi1zdGF0aWMgaW5saW5lIGludCBpOTE1X2dlbV9jb250ZXh0X3Bpbl9od19pZChzdHJ1 Y3QgCj4+Pmk5MTVfZ2VtX2NvbnRleHQgKmN0eCkKPj4+LXsKPj4+LcKgwqDCoCBpZiAoYXRvbWlj X2luY19ub3RfemVybygmY3R4LT5od19pZF9waW5fY291bnQpKQo+Pj4twqDCoMKgwqDCoMKgwqAg cmV0dXJuIDA7Cj4+Pi0KPj4+LcKgwqDCoCByZXR1cm4gX19pOTE1X2dlbV9jb250ZXh0X3Bpbl9o d19pZChjdHgpOwo+Pj4tfQo+Pj4tCj4+Pi1zdGF0aWMgaW5saW5lIHZvaWQgaTkxNV9nZW1fY29u dGV4dF91bnBpbl9od19pZChzdHJ1Y3QgCj4+Pmk5MTVfZ2VtX2NvbnRleHQgKmN0eCkKPj4+LXsK Pj4+LcKgwqDCoCBHRU1fQlVHX09OKGF0b21pY19yZWFkKCZjdHgtPmh3X2lkX3Bpbl9jb3VudCkg PT0gMHUpOwo+Pj4twqDCoMKgIGF0b21pY19kZWMoJmN0eC0+aHdfaWRfcGluX2NvdW50KTsKPj4+ LX0KPj4+LQo+Pj7CoCBzdGF0aWMgaW5saW5lIGJvb2wgaTkxNV9nZW1fY29udGV4dF9pc19rZXJu ZWwoc3RydWN0IAo+Pj5pOTE1X2dlbV9jb250ZXh0ICpjdHgpCj4+PsKgIHsKPj4+wqDCoMKgwqDC oCByZXR1cm4gIWN0eC0+ZmlsZV9wcml2Owo+Pj5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ2VtL2k5MTVfZ2VtX2NvbnRleHRfdHlwZXMuaCAKPj4+Yi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9nZW0vaTkxNV9nZW1fY29udGV4dF90eXBlcy5oCj4+PmluZGV4IGRhZjFlYTUwNzVhNi4u NjQxOWRhN2M5ZjkwIDEwMDY0NAo+Pj4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkx NV9nZW1fY29udGV4dF90eXBlcy5oCj4+PisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9p OTE1X2dlbV9jb250ZXh0X3R5cGVzLmgKPj4+QEAgLTE0OCwyNCArMTQ4LDYgQEAgc3RydWN0IGk5 MTVfZ2VtX2NvbnRleHQgewo+Pj7CoCAjZGVmaW5lIENPTlRFWFRfRk9SQ0VfU0lOR0xFX1NVQk1J U1NJT07CoMKgwqAgMgo+Pj7CoCAjZGVmaW5lIENPTlRFWFRfVVNFUl9FTkdJTkVTwqDCoMKgwqDC oMKgwqAgMwo+Pj4twqDCoMKgIC8qKgo+Pj4twqDCoMKgwqAgKiBAaHdfaWQ6IC0gdW5pcXVlIGlk ZW50aWZpZXIgZm9yIHRoZSBjb250ZXh0Cj4+Pi3CoMKgwqDCoCAqCj4+Pi3CoMKgwqDCoCAqIFRo ZSBoYXJkd2FyZSBuZWVkcyB0byB1bmlxdWVseSBpZGVudGlmeSB0aGUgY29udGV4dCBmb3IgYSBm ZXcKPj4+LcKgwqDCoMKgICogZnVuY3Rpb25zIGxpa2UgZmF1bHQgcmVwb3J0aW5nLCBQQVNJRCwg c2NoZWR1bGluZy4gVGhlCj4+Pi3CoMKgwqDCoCAqICZkcm1faTkxNV9wcml2YXRlLmNvbnRleHRf aHdfaWRhIGlzIHVzZWQgdG8gYXNzaWduIGEgdW5xaXVlCj4+Pi3CoMKgwqDCoCAqIGlkIGZvciB0 aGUgbGlmZXRpbWUgb2YgdGhlIGNvbnRleHQuCj4+Pi3CoMKgwqDCoCAqCj4+Pi3CoMKgwqDCoCAq IEBod19pZF9waW5fY291bnQ6IC0gbnVtYmVyIG9mIHRpbWVzIHRoaXMgY29udGV4dCBoYWQgYmVl biBwaW5uZWQKPj4+LcKgwqDCoMKgICogZm9yIHVzZSAoc2hvdWxkIGJlLCBhdCBtb3N0LCBvbmNl IHBlciBlbmdpbmUpLgo+Pj4twqDCoMKgwqAgKgo+Pj4twqDCoMKgwqAgKiBAaHdfaWRfbGluazog LSBhbGwgY29udGV4dHMgd2l0aCBhbiBhc3NpZ25lZCBpZCBhcmUgdHJhY2tlZAo+Pj4twqDCoMKg wqAgKiBmb3IgcG9zc2libGUgcmVwb3NzZXNzaW9uLgo+Pj4twqDCoMKgwqAgKi8KPj4+LcKgwqDC oCB1bnNpZ25lZCBpbnQgaHdfaWQ7Cj4+Pi3CoMKgwqAgYXRvbWljX3QgaHdfaWRfcGluX2NvdW50 Owo+Pj4twqDCoMKgIHN0cnVjdCBsaXN0X2hlYWQgaHdfaWRfbGluazsKPj4+LQo+Pj7CoMKgwqDC oMKgIHN0cnVjdCBtdXRleCBtdXRleDsKPj4+wqDCoMKgwqDCoCBzdHJ1Y3QgaTkxNV9zY2hlZF9h dHRyIHNjaGVkOwo+Pj5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0 ZXN0cy9pOTE1X2dlbV9jb250ZXh0LmMgCj4+PmIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3Nl bGZ0ZXN0cy9pOTE1X2dlbV9jb250ZXh0LmMKPj4+aW5kZXggYjM5MjI0ZWQzODE3Li5hOGE5Mjkz ZjRhYzYgMTAwNjQ0Cj4+Pi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMv aTkxNV9nZW1fY29udGV4dC5jCj4+PisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxm dGVzdHMvaTkxNV9nZW1fY29udGV4dC5jCj4+PkBAIC00NDYsOSArNDQ2LDkgQEAgc3RhdGljIGlu dCBpZ3RfY3R4X2V4ZWModm9pZCAqYXJnKQo+Pj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBl cnIgPSBncHVfZmlsbChjZSwgb2JqLCBkdyk7Cj4+PsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGlmIChlcnIpIHsKPj4+LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwcl9lcnIoIkZh aWxlZCB0byBmaWxsIGR3b3JkICVsdSBbJWx1LyVsdV0gd2l0aCAKPj4+Z3B1ICglcykgaW4gY3R4 ICV1IFtmdWxsLXBwZ3R0PyAlc10sIGVycj0lZFxuIiwKPj4+K8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBwcl9lcnIoIkZhaWxlZCB0byBmaWxsIGR3b3JkICVsdSBbJWx1LyVsdV0gd2l0 aCAKPj4+Z3B1ICglcykgW2Z1bGwtcHBndHQ/ICVzXSwgZXJyPSVkXG4iLAo+Pj7CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbmR3b3JkcywgZHcsIG1heF9k d29yZHMob2JqKSwKPj4+LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGVuZ2luZS0+bmFtZSwgY3R4LT5od19pZCwKPj4+K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIGVuZ2luZS0+bmFtZSwKPj4+wqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHllc25vKCEhY3R4LT52bSksIGVycik7Cj4+ PsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaW50ZWxfY29udGV4dF9wdXQoY2Up Owo+Pj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGtlcm5lbF9jb250ZXh0X2Ns b3NlKGN0eCk7Cj4+PkBAIC01ODQsOSArNTg0LDkgQEAgc3RhdGljIGludCBpZ3Rfc2hhcmVkX2N0 eF9leGVjKHZvaWQgKmFyZykKPj4+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZXJyID0gZ3B1 X2ZpbGwoY2UsIG9iaiwgZHcpOwo+Pj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoZXJy KSB7Cj4+Pi3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcHJfZXJyKCJGYWlsZWQgdG8g ZmlsbCBkd29yZCAlbHUgWyVsdS8lbHVdIHdpdGggCj4+PmdwdSAoJXMpIGluIGN0eCAldSBbZnVs bC1wcGd0dD8gJXNdLCBlcnI9JWRcbiIsCj4+PivCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgcHJfZXJyKCJGYWlsZWQgdG8gZmlsbCBkd29yZCAlbHUgWyVsdS8lbHVdIHdpdGggCj4+Pmdw dSAoJXMpIFtmdWxsLXBwZ3R0PyAlc10sIGVycj0lZFxuIiwKPj4+wqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG5kd29yZHMsIGR3LCBtYXhfZHdvcmRzKG9i aiksCj4+Pi3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBlbmdp bmUtPm5hbWUsIGN0eC0+aHdfaWQsCj4+PivCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBlbmdpbmUtPm5hbWUsCj4+PsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB5ZXNubyghIWN0eC0+dm0pLCBlcnIpOwo+Pj7CoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGludGVsX2NvbnRleHRfcHV0KGNlKTsKPj4+wqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBrZXJuZWxfY29udGV4dF9jbG9zZShjdHgp Owo+Pj5AQCAtMTE2OCwxMCArMTE2OCw5IEBAIHN0YXRpYyBpbnQgaWd0X2N0eF9yZWFkb25seSh2 b2lkICphcmcpCj4+PsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGVyciA9IGdwdV9maWxsKGNl LCBvYmosIGR3KTsKPj4+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKGVycikgewo+Pj4t wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHByX2VycigiRmFpbGVkIHRvIGZpbGwgZHdv cmQgJWx1IFslbHUvJWx1XSB3aXRoIAo+Pj5ncHUgKCVzKSBpbiBjdHggJXUgW2Z1bGwtcHBndHQ/ ICVzXSwgZXJyPSVkXG4iLAo+Pj4rwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHByX2Vy cigiRmFpbGVkIHRvIGZpbGwgZHdvcmQgJWx1IFslbHUvJWx1XSB3aXRoIAo+Pj5ncHUgKCVzKSBb ZnVsbC1wcGd0dD8gJXNdLCBlcnI9JWRcbiIsCj4+PsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBuZHdvcmRzLCBkdywgbWF4X2R3b3JkcyhvYmopLAo+Pj4t wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY2UtPmVuZ2luZS0+ bmFtZSwgY3R4LT5od19pZCwKPj4+LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHllc25vKCEhY3R4LT52bSksIGVycik7Cj4+PivCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjZS0+ZW5naW5lLT5uYW1lLCB5ZXNubyghIWN0eC0+ dm0pLCBlcnIpOwo+Pj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGk5MTVfZ2Vt X2NvbnRleHRfdW5sb2NrX2VuZ2luZXMoY3R4KTsKPj4+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBnb3RvIG91dF91bmxvY2s7Cj4+PsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IH0KPj4+ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvbW9j a19jb250ZXh0LmMgCj4+PmIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9tb2Nr X2NvbnRleHQuYwo+Pj5pbmRleCAwZDFhMjc1ZWMzMTYuLmViYzQ2ZjA5ODU2MSAxMDA2NDQKPj4+ LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9tb2NrX2NvbnRleHQuYwo+ Pj4rKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vc2VsZnRlc3RzL21vY2tfY29udGV4dC5j Cj4+PkBAIC0xMyw3ICsxMyw2IEBAIG1vY2tfY29udGV4dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqaTkxNSwKPj4+wqAgewo+Pj7CoMKgwqDCoMKgIHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpj dHg7Cj4+PsKgwqDCoMKgwqAgc3RydWN0IGk5MTVfZ2VtX2VuZ2luZXMgKmU7Cj4+Pi3CoMKgwqAg aW50IHJldDsKPj4+wqDCoMKgwqDCoCBjdHggPSBremFsbG9jKHNpemVvZigqY3R4KSwgR0ZQX0tF Uk5FTCk7Cj4+PsKgwqDCoMKgwqAgaWYgKCFjdHgpCj4+PkBAIC0zMiwxMyArMzEsOCBAQCBtb2Nr X2NvbnRleHQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4+PsKgwqDCoMKgwqAgUkNV X0lOSVRfUE9JTlRFUihjdHgtPmVuZ2luZXMsIGUpOwo+Pj7CoMKgwqDCoMKgIElOSVRfUkFESVhf VFJFRSgmY3R4LT5oYW5kbGVzX3ZtYSwgR0ZQX0tFUk5FTCk7Cj4+Pi3CoMKgwqAgSU5JVF9MSVNU X0hFQUQoJmN0eC0+aHdfaWRfbGluayk7Cj4+PsKgwqDCoMKgwqAgbXV0ZXhfaW5pdCgmY3R4LT5t dXRleCk7Cj4+Pi3CoMKgwqAgcmV0ID0gaTkxNV9nZW1fY29udGV4dF9waW5faHdfaWQoY3R4KTsK Pj4+LcKgwqDCoCBpZiAocmV0IDwgMCkKPj4+LcKgwqDCoMKgwqDCoMKgIGdvdG8gZXJyX2VuZ2lu ZXM7Cj4+Pi0KPj4+wqDCoMKgwqDCoCBpZiAobmFtZSkgewo+Pj7CoMKgwqDCoMKgwqDCoMKgwqAg c3RydWN0IGk5MTVfcHBndHQgKnBwZ3R0Owo+Pj5AQCAtNTYsOCArNTAsNiBAQCBtb2NrX2NvbnRl eHQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4+PsKgwqDCoMKgwqAgcmV0dXJuIGN0 eDsKPj4+LWVycl9lbmdpbmVzOgo+Pj4twqDCoMKgIGZyZWVfZW5naW5lcyhyY3VfYWNjZXNzX3Bv aW50ZXIoY3R4LT5lbmdpbmVzKSk7Cj4+PsKgIGVycl9mcmVlOgo+Pj7CoMKgwqDCoMKgIGtmcmVl KGN0eCk7Cj4+PsKgwqDCoMKgwqAgcmV0dXJuIE5VTEw7Cj4+PmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9jb250ZXh0X3R5cGVzLmggCj4+PmIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3QvaW50ZWxfY29udGV4dF90eXBlcy5oCj4+PmluZGV4IGJmOWNlZGZjY2JmMC4u Njk1OWIwNWFlNWY4IDEwMDY0NAo+Pj4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRl bF9jb250ZXh0X3R5cGVzLmgKPj4+KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxf Y29udGV4dF90eXBlcy5oCj4+PkBAIC01OCw2ICs1OCw3IEBAIHN0cnVjdCBpbnRlbF9jb250ZXh0 IHsKPj4+wqDCoMKgwqDCoCB1MzIgKmxyY19yZWdfc3RhdGU7Cj4+PsKgwqDCoMKgwqAgdTY0IGxy Y19kZXNjOwo+Pj4rwqDCoMKgIHUzMiB0YWc7IC8qIGNvb2tpZSBwYXNzZWQgdG8gSFcgdG8gdHJh Y2sgdGhpcyBjb250ZXh0IG9uIAo+Pj5zdWJtaXNzaW9uICovCj4+PsKgwqDCoMKgwqAgdW5zaWdu ZWQgaW50IGFjdGl2ZV9jb3VudDsgLyogcHJvdGVjdGVkIGJ5IHRpbWVsaW5lLT5tdXRleCAqLwo+ Pj5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3R5cGVz LmggCj4+PmIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3R5cGVzLmgKPj4+ aW5kZXggZGE0YjQ1YWE4NGIxLi43YmNlMTc2ZTY5NmMgMTAwNjQ0Cj4+Pi0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV90eXBlcy5oCj4+PisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV90eXBlcy5oCj4+PkBAIC0yOTYsMTAgKzI5NiwxMiBA QCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzIHsKPj4+wqDCoMKgwqDCoCB1OCB1YWJpX2NsYXNzOwo+ Pj7CoMKgwqDCoMKgIHU4IHVhYmlfaW5zdGFuY2U7Cj4+PivCoMKgwqAgdTMyIHVhYmlfY2FwYWJp bGl0aWVzOwo+Pj7CoMKgwqDCoMKgIHUzMiBjb250ZXh0X3NpemU7Cj4+PsKgwqDCoMKgwqAgdTMy IG1taW9fYmFzZTsKPj4+LcKgwqDCoCB1MzIgdWFiaV9jYXBhYmlsaXRpZXM7Cj4+PivCoMKgwqAg dW5zaWduZWQgaW50IGNvbnRleHRfdGFnOwo+Pj4rI2RlZmluZSBOVU1fQ09OVEVYVF9UQUcgKDI1 NikKPj4KPj5BRkFJQ1QgdGhpcyBkZWZpbmUgbm93IGRlZmluZXMgaG93IGRlZXAgRUxTUCB3ZSBj YW4gaGF2ZSBiZWZvcmUgd2UgCj4+c3RhcnQgZ2V0dGluZyBoYXJkIHRvIGRlYnVnIHByb2JsZW1z LiBHdUMgYW5nbGUgbmVlZHMgY29uc2lkZXJpbmcgCj4+aGVyZS4KPj4KPj5DYW4gd2UgYWRkIHNv bWUgYXNzZXJ0cyBzb21ld2hlcmUgdG8gZXhwcmVzcyB0aGUgcmVsYXRpb25zaGlwPwo+Pgo+PkFu ZCBhIGNvbW1lbnQgaGVyZSBleHBsYWluaW5nIHRoaXMsIG9yIHdpdGggdGhlIGFzc2VydC4KPj4K Pj4+wqDCoMKgwqDCoCBzdHJ1Y3QgcmJfbm9kZSB1YWJpX25vZGU7Cj4+PmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9scmMuYyAKPj4+Yi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9ndC9pbnRlbF9scmMuYwo+Pj5pbmRleCAwZWEyZjRkN2RjNDMuLmFmNzliOGQ3MDgwMCAx MDA2NDQKPj4+LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbHJjLmMKPj4+Kysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbHJjLmMKPj4+QEAgLTQzMywxMiArNDMz LDggQEAgYXNzZXJ0X3ByaW9yaXR5X3F1ZXVlKGNvbnN0IHN0cnVjdCAKPj4+aTkxNV9yZXF1ZXN0 ICpwcmV2LAo+Pj7CoCBzdGF0aWMgdTY0Cj4+PsKgIGxyY19kZXNjcmlwdG9yKHN0cnVjdCBpbnRl bF9jb250ZXh0ICpjZSwgc3RydWN0IGludGVsX2VuZ2luZV9jcyAKPj4+KmVuZ2luZSkKPj4+wqAg ewo+Pj4twqDCoMKgIHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHggPSBjZS0+Z2VtX2NvbnRl eHQ7Cj4+PsKgwqDCoMKgwqAgdTY0IGRlc2M7Cj4+Pi3CoMKgwqAgQlVJTERfQlVHX09OKE1BWF9D T05URVhUX0hXX0lEID4gKEJJVChHRU44X0NUWF9JRF9XSURUSCkpKTsKPj4+LcKgwqDCoCBCVUlM RF9CVUdfT04oR0VOMTFfTUFYX0NPTlRFWFRfSFdfSUQgPiAKPj4+KEJJVChHRU4xMV9TV19DVFhf SURfV0lEVEgpKSk7Cj4+Pi0KPj4+wqDCoMKgwqDCoCBkZXNjID0gSU5URUxfTEVHQUNZXzMyQl9D T05URVhUOwo+Pj7CoMKgwqDCoMKgIGlmIChpOTE1X3ZtX2lzXzRsdmwoY2UtPnZtKSkKPj4+wqDC oMKgwqDCoMKgwqDCoMKgIGRlc2MgPSBJTlRFTF9MRUdBQ1lfNjRCX0NPTlRFWFQ7Cj4+PkBAIC00 NTYsMjAgKzQ1MiwxMSBAQCBscmNfZGVzY3JpcHRvcihzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2Us IAo+Pj5zdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4+PsKgwqDCoMKgwqDCoCAqIGFu eXRoaW5nIGJlbG93Lgo+Pj7CoMKgwqDCoMKgwqAgKi8KPj4+wqDCoMKgwqDCoCBpZiAoSU5URUxf R0VOKGVuZ2luZS0+aTkxNSkgPj0gMTEpIHsKPj4+LcKgwqDCoMKgwqDCoMKgIEdFTV9CVUdfT04o Y3R4LT5od19pZCA+PSBCSVQoR0VOMTFfU1dfQ1RYX0lEX1dJRFRIKSk7Cj4+Pi3CoMKgwqDCoMKg wqDCoCBkZXNjIHw9ICh1NjQpY3R4LT5od19pZCA8PCBHRU4xMV9TV19DVFhfSURfU0hJRlQ7Cj4+ Pi3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCAvKiBiaXRzIDM3LTQ3ICovCj4+Pi0KPj4+wqDCoMKgwqDCoMKgwqDCoMKgIGRlc2Mg fD0gKHU2NCllbmdpbmUtPmluc3RhbmNlIDw8IEdFTjExX0VOR0lORV9JTlNUQU5DRV9TSElGVDsK Pj4+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIC8qIGJpdHMgNDgtNTMgKi8KPj4+LcKgwqDCoMKgwqDCoMKgIC8qIFRPRE86 IGRlY2lkZSB3aGF0IHRvIGRvIHdpdGggU1cgY291bnRlciAoYml0cyA1NS02MCkgKi8KPj4+LQo+ Pj7CoMKgwqDCoMKgwqDCoMKgwqAgZGVzYyB8PSAodTY0KWVuZ2luZS0+Y2xhc3MgPDwgR0VOMTFf RU5HSU5FX0NMQVNTX1NISUZUOwo+Pj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLyogYml0cyA2MS02MyAqLwo+Pj4twqDC oMKgIH0gZWxzZSB7Cj4+Pi3CoMKgwqDCoMKgwqDCoCBHRU1fQlVHX09OKGN0eC0+aHdfaWQgPj0g QklUKEdFTjhfQ1RYX0lEX1dJRFRIKSk7Cj4+Pi3CoMKgwqDCoMKgwqDCoCBkZXNjIHw9ICh1NjQp Y3R4LT5od19pZCA8PCBHRU44X0NUWF9JRF9TSElGVDvCoMKgwqAgLyogYml0cyAKPj4+MzItNTIg Ki8KPj4+wqDCoMKgwqDCoCB9Cj4+PsKgwqDCoMKgwqAgcmV0dXJuIGRlc2M7Cj4+PkBAIC05Nzgs NiArOTY1LDE1IEBAIF9fZXhlY2xpc3RzX3NjaGVkdWxlX2luKHN0cnVjdCBpOTE1X3JlcXVlc3Qg KnJxKQo+Pj7CoMKgwqDCoMKgIGludGVsX2NvbnRleHRfZ2V0KGNlKTsKPj4+K8KgwqDCoCBpZiAo Y2UtPnRhZykgewo+Pj4rwqDCoMKgwqDCoMKgwqAgY2UtPmxyY19kZXNjIHw9ICh1NjQpY2UtPnRh ZyA8PCAzMjsKPj4+K8KgwqDCoCB9IGVsc2Ugewo+Pj4rwqDCoMKgwqDCoMKgwqAgY2UtPmxyY19k ZXNjICY9IH5HRU5NQVNLX1VMTCg0NywgMzcpOwo+Pj4rwqDCoMKgwqDCoMKgwqAgY2UtPmxyY19k ZXNjIHw9Cj4+PivCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICh1NjQpKGVuZ2luZS0+Y29udGV4dF90 YWcrKyAlIE5VTV9DT05URVhUX1RBRykgPDwKPj4+K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgR0VO MTFfU1dfQ1RYX0lEX1NISUZUOwo+Pj4rwqDCoMKgIH0KPj4KPj5TbyBodyBpZCBpcyB2YWxpZCBv bmx5IHdoaWxlIGNvbnRleHQgaXMgaW4gRUxTUCBhbmQgaXQgY2hhbmdlcyB3aXRoIAo+PmV2ZXJ5 IHN1Ym1pc3Npb24gZXhjZXB0IGluIHRoZSBPQSBjYXNlPwo+Pgo+PlNoaWZ0cyBhbmQgbWFza3Mg bG9vayBkb2RneS4gRm9yID49IGdlbjExIHRoZSBjdXJyZW50IGNvZGUgaGFzIHRoZSAKPj5od19p ZCBpbiBbMzcsIDQyXSwgb3RoZXJ3aXNlIFszMiwgNTJdLiBUaGlzIHBhdGNoIGRvZXMgbm90IHNl ZW0gdG8gCj4+aGFuZGxlIHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIGdlbnMuCj4+Cj4+PisKPj4+ wqDCoMKgwqDCoCBpbnRlbF9ndF9wbV9nZXQoZW5naW5lLT5ndCk7Cj4+PsKgwqDCoMKgwqAgZXhl Y2xpc3RzX2NvbnRleHRfc3RhdHVzX2NoYW5nZShycSwgSU5URUxfQ09OVEVYVF9TQ0hFRFVMRV9J Tik7Cj4+PsKgwqDCoMKgwqAgaW50ZWxfZW5naW5lX2NvbnRleHRfaW4oZW5naW5lKTsKPj4+QEAg LTIyMjQsNyArMjIyMCw2IEBAIHN0YXRpYyB2b2lkIGV4ZWNsaXN0c19jb250ZXh0X3VucGluKHN0 cnVjdCAKPj4+aW50ZWxfY29udGV4dCAqY2UpCj4+PsKgwqDCoMKgwqAgY2hlY2tfcmVkem9uZSgo dm9pZCAqKWNlLT5scmNfcmVnX3N0YXRlIC0gTFJDX1NUQVRFX1BOICogUEFHRV9TSVpFLAo+Pj7C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY2UtPmVuZ2luZSk7Cj4+Pi3CoMKgwqAgaTkx NV9nZW1fY29udGV4dF91bnBpbl9od19pZChjZS0+Z2VtX2NvbnRleHQpOwo+Pj7CoMKgwqDCoMKg IGk5MTVfZ2VtX29iamVjdF91bnBpbl9tYXAoY2UtPnN0YXRlLT5vYmopOwo+Pj7CoMKgwqDCoMKg IGludGVsX3JpbmdfcmVzZXQoY2UtPnJpbmcsIGNlLT5yaW5nLT50YWlsKTsKPj4+wqAgfQo+Pj5A QCAtMjI3NCwxOCArMjI2OSwxMiBAQCBfX2V4ZWNsaXN0c19jb250ZXh0X3BpbihzdHJ1Y3QgaW50 ZWxfY29udGV4dCAqY2UsCj4+PsKgwqDCoMKgwqDCoMKgwqDCoCBnb3RvIHVucGluX2FjdGl2ZTsK Pj4+wqDCoMKgwqDCoCB9Cj4+Pi3CoMKgwqAgcmV0ID0gaTkxNV9nZW1fY29udGV4dF9waW5faHdf aWQoY2UtPmdlbV9jb250ZXh0KTsKPj4+LcKgwqDCoCBpZiAocmV0KQo+Pj4twqDCoMKgwqDCoMKg wqAgZ290byB1bnBpbl9tYXA7Cj4+Pi0KPj4+wqDCoMKgwqDCoCBjZS0+bHJjX2Rlc2MgPSBscmNf ZGVzY3JpcHRvcihjZSwgZW5naW5lKTsKPj4+wqDCoMKgwqDCoCBjZS0+bHJjX3JlZ19zdGF0ZSA9 IHZhZGRyICsgTFJDX1NUQVRFX1BOICogUEFHRV9TSVpFOwo+Pj7CoMKgwqDCoMKgIF9fZXhlY2xp c3RzX3VwZGF0ZV9yZWdfc3RhdGUoY2UsIGVuZ2luZSk7Cj4+PsKgwqDCoMKgwqAgcmV0dXJuIDA7 Cj4+Pi11bnBpbl9tYXA6Cj4+Pi3CoMKgwqAgaTkxNV9nZW1fb2JqZWN0X3VucGluX21hcChjZS0+ c3RhdGUtPm9iaik7Cj4+PsKgIHVucGluX2FjdGl2ZToKPj4+wqDCoMKgwqDCoCBpbnRlbF9jb250 ZXh0X2FjdGl2ZV9yZWxlYXNlKGNlKTsKPj4+wqAgZXJyOgo+Pj5kaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3Z0L2t2bWd0LmMgCj4+PmIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0 L2t2bWd0LmMKPj4+aW5kZXggMzQzZDc5YzFjYjdlLi4wNGE1YTBkOTA4MjMgMTAwNjQ0Cj4+Pi0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9rdm1ndC5jCj4+PisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2d2dC9rdm1ndC5jCj4+PkBAIC0xNTY0LDI3ICsxNTY0LDEwIEBAIHZncHVfaWRf c2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCAKPj4+ZGV2aWNlX2F0dHJpYnV0ZSAqYXR0 ciwKPj4+wqDCoMKgwqDCoCByZXR1cm4gc3ByaW50ZihidWYsICJcbiIpOwo+Pj7CoCB9Cj4+Pi1z dGF0aWMgc3NpemVfdAo+Pj4taHdfaWRfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBk ZXZpY2VfYXR0cmlidXRlICphdHRyLAo+Pj4twqDCoMKgwqDCoMKgIGNoYXIgKmJ1ZikKPj4+LXsK Pj4+LcKgwqDCoCBzdHJ1Y3QgbWRldl9kZXZpY2UgKm1kZXYgPSBtZGV2X2Zyb21fZGV2KGRldik7 Cj4+Pi0KPj4+LcKgwqDCoCBpZiAobWRldikgewo+Pj4twqDCoMKgwqDCoMKgwqAgc3RydWN0IGlu dGVsX3ZncHUgKnZncHUgPSAoc3RydWN0IGludGVsX3ZncHUgKikKPj4+LcKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgbWRldl9nZXRfZHJ2ZGF0YShtZGV2KTsKPj4+LcKgwqDCoMKgwqDCoMKgIHJldHVy biBzcHJpbnRmKGJ1ZiwgIiV1XG4iLAo+Pj4twqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHZncHUtPnN1Ym1pc3Npb24uc2hhZG93WzBdLT5nZW1fY29udGV4dC0+aHdfaWQpOwo+ Pj4twqDCoMKgIH0KPj4+LcKgwqDCoCByZXR1cm4gc3ByaW50ZihidWYsICJcbiIpOwo+Pj4tfQo+ Pj4tCj4+PsKgIHN0YXRpYyBERVZJQ0VfQVRUUl9STyh2Z3B1X2lkKTsKPj4+LXN0YXRpYyBERVZJ Q0VfQVRUUl9STyhod19pZCk7Cj4+PsKgIHN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICppbnRlbF92 Z3B1X2F0dHJzW10gPSB7Cj4+PsKgwqDCoMKgwqAgJmRldl9hdHRyX3ZncHVfaWQuYXR0ciwKPj4+ LcKgwqDCoCAmZGV2X2F0dHJfaHdfaWQuYXR0ciwKPj4+wqDCoMKgwqDCoCBOVUxMCj4+PsKgIH07 Cj4+PmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyAKPj4+ Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+Pj5pbmRleCBmZDQxNTA1ZDUy ZWMuLjhjYWFhNDQ2NDkwZiAxMDA2NDQKPj4+LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kZWJ1Z2ZzLmMKPj4+KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMK Pj4+QEAgLTE1MDQsOSArMTUwNCw2IEBAIHN0YXRpYyBpbnQgaTkxNV9jb250ZXh0X3N0YXR1cyhz dHJ1Y3QgCj4+PnNlcV9maWxlICptLCB2b2lkICp1bnVzZWQpCj4+PsKgwqDCoMKgwqDCoMKgwqDC oCBzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2U7Cj4+PsKgwqDCoMKgwqDCoMKgwqDCoCBzZXFfcHV0 cyhtLCAiSFcgY29udGV4dCAiKTsKPj4+LcKgwqDCoMKgwqDCoMKgIGlmICghbGlzdF9lbXB0eSgm Y3R4LT5od19pZF9saW5rKSkKPj4+LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc2VxX3ByaW50Ziht LCAiJXggW3BpbiAldV0iLCBjdHgtPmh3X2lkLAo+Pj4twqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIGF0b21pY19yZWFkKCZjdHgtPmh3X2lkX3Bpbl9jb3VudCkpOwo+Pj7CoMKg wqDCoMKgwqDCoMKgwqAgaWYgKGN0eC0+cGlkKSB7Cj4+PsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzazsKPj4+ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMgCj4+PmIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9ncHVfZXJyb3IuYwo+Pj5pbmRleCBhODZkMjhiZGE2ZGQuLjQ3MjM5ZGY2NTNmMiAxMDA2NDQK Pj4+LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYwo+Pj4rKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jCj4+PkBAIC00NzEsOSArNDcxLDkg QEAgc3RhdGljIHZvaWQgZXJyb3JfcHJpbnRfY29udGV4dChzdHJ1Y3QgCj4+PmRybV9pOTE1X2Vy cm9yX3N0YXRlX2J1ZiAqbSwKPj4+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBj b25zdCBjaGFyICpoZWFkZXIsCj4+PsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg Y29uc3Qgc3RydWN0IGRybV9pOTE1X2Vycm9yX2NvbnRleHQgKmN0eCkKPj4+wqAgewo+Pj4twqDC oMKgIGVycl9wcmludGYobSwgIiVzJXNbJWRdIGh3X2lkICVkLCBwcmlvICVkLCBndWlsdHkgJWQg YWN0aXZlICVkXG4iLAo+Pj4twqDCoMKgwqDCoMKgwqDCoMKgwqAgaGVhZGVyLCBjdHgtPmNvbW0s IGN0eC0+cGlkLCBjdHgtPmh3X2lkLAo+Pj4twqDCoMKgwqDCoMKgwqDCoMKgwqAgY3R4LT5zY2hl ZF9hdHRyLnByaW9yaXR5LCBjdHgtPmd1aWx0eSwgY3R4LT5hY3RpdmUpOwo+Pj4rwqDCoMKgIGVy cl9wcmludGYobSwgIiVzJXNbJWRdIHByaW8gJWQsIGd1aWx0eSAlZCBhY3RpdmUgJWRcbiIsCj4+ PivCoMKgwqDCoMKgwqDCoMKgwqDCoCBoZWFkZXIsIGN0eC0+Y29tbSwgY3R4LT5waWQsIGN0eC0+ c2NoZWRfYXR0ci5wcmlvcml0eSwKPj4+K8KgwqDCoMKgwqDCoMKgwqDCoMKgIGN0eC0+Z3VpbHR5 LCBjdHgtPmFjdGl2ZSk7Cj4+PsKgIH0KPj4+wqAgc3RhdGljIHZvaWQgZXJyb3JfcHJpbnRfZW5n aW5lKHN0cnVjdCBkcm1faTkxNV9lcnJvcl9zdGF0ZV9idWYgKm0sCj4+PkBAIC0xMjYyLDcgKzEy NjIsNiBAQCBzdGF0aWMgYm9vbCByZWNvcmRfY29udGV4dChzdHJ1Y3QgCj4+PmRybV9pOTE1X2Vy cm9yX2NvbnRleHQgKmUsCj4+PsKgwqDCoMKgwqDCoMKgwqDCoCByY3VfcmVhZF91bmxvY2soKTsK Pj4+wqDCoMKgwqDCoCB9Cj4+Pi3CoMKgwqAgZS0+aHdfaWQgPSBjdHgtPmh3X2lkOwo+Pj7CoMKg wqDCoMKgIGUtPnNjaGVkX2F0dHIgPSBjdHgtPnNjaGVkOwo+Pj7CoMKgwqDCoMKgIGUtPmd1aWx0 eSA9IGF0b21pY19yZWFkKCZjdHgtPmd1aWx0eV9jb3VudCk7Cj4+PsKgwqDCoMKgwqAgZS0+YWN0 aXZlID0gYXRvbWljX3JlYWQoJmN0eC0+YWN0aXZlX2NvdW50KTsKPj4+ZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmggCj4+PmIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9ncHVfZXJyb3IuaAo+Pj5pbmRleCBjYWFlZDUwOTNkOTUuLjRkYzM2ZDZlZTNh MiAxMDA2NDQKPj4+LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuaAo+ Pj4rKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5oCj4+PkBAIC0xMTcs NyArMTE3LDYgQEAgc3RydWN0IGk5MTVfZ3B1X3N0YXRlIHsKPj4+wqDCoMKgwqDCoMKgwqDCoMKg IHN0cnVjdCBkcm1faTkxNV9lcnJvcl9jb250ZXh0IHsKPj4+wqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgY2hhciBjb21tW1RBU0tfQ09NTV9MRU5dOwo+Pj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBwaWRfdCBwaWQ7Cj4+Pi3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiBod19pZDsKPj4+ wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaW50IGFjdGl2ZTsKPj4+wqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgaW50IGd1aWx0eTsKPj4+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3Ry dWN0IGk5MTVfc2NoZWRfYXR0ciBzY2hlZF9hdHRyOwo+Pj5kaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9wZXJmLmMgCj4+PmIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9w ZXJmLmMKPj4+aW5kZXggODAwNTU1MDFlY2NiLi5kMzZiYTI0OGQ0MzggMTAwNjQ0Cj4+Pi0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGVyZi5jCj4+PisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfcGVyZi5jCj4+PkBAIC0xMjgzLDIyICsxMjgzLDE1IEBAIHN0YXRpYyBpbnQg b2FfZ2V0X3JlbmRlcl9jdHhfaWQoc3RydWN0IAo+Pj5pOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0p Cj4+PsKgwqDCoMKgwqDCoMKgwqDCoCB9IGVsc2Ugewo+Pj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBzdHJlYW0tPnNwZWNpZmljX2N0eF9pZF9tYXNrID0KPj4+wqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCAoMVUgPDwgR0VOOF9DVFhfSURfV0lEVEgpIC0gMTsKPj4+LcKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgc3RyZWFtLT5zcGVjaWZpY19jdHhfaWQgPQo+Pj4twqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHVwcGVyXzMyX2JpdHMoY2UtPmxyY19kZXNjKTsKPj4+LcKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RyZWFtLT5zcGVjaWZpY19jdHhfaWQgJj0KPj4+LcKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJlYW0tPnNwZWNpZmljX2N0eF9pZF9tYXNrOwo+ Pj4rwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJlYW0tPnNwZWNpZmljX2N0eF9pZCA9IHN0cmVh bS0+c3BlY2lmaWNfY3R4X2lkX21hc2s7Cj4+PsKgwqDCoMKgwqDCoMKgwqDCoCB9Cj4+PsKgwqDC oMKgwqDCoMKgwqDCoCBicmVhazsKPj4+wqDCoMKgwqDCoCBjYXNlIDExOgo+Pj7CoMKgwqDCoMKg IGNhc2UgMTI6IHsKPj4+wqDCoMKgwqDCoMKgwqDCoMKgIHN0cmVhbS0+c3BlY2lmaWNfY3R4X2lk X21hc2sgPQo+Pj4twqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAoKDFVIDw8IEdFTjExX1NXX0NUWF9J RF9XSURUSCkgLSAxKSA8PCAKPj4+KEdFTjExX1NXX0NUWF9JRF9TSElGVCAtIDMyKSB8Cj4+Pi3C oMKgwqDCoMKgwqDCoMKgwqDCoMKgICgoMVUgPDwgR0VOMTFfRU5HSU5FX0lOU1RBTkNFX1dJRFRI KSAtIDEpIDw8IAo+Pj4oR0VOMTFfRU5HSU5FX0lOU1RBTkNFX1NISUZUIC0gMzIpIHwKPj4+LcKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgKCgxIDw8IEdFTjExX0VOR0lORV9DTEFTU19XSURUSCkgLSAx KSA8PCAKPj4+KEdFTjExX0VOR0lORV9DTEFTU19TSElGVCAtIDMyKTsKPj4+LcKgwqDCoMKgwqDC oMKgIHN0cmVhbS0+c3BlY2lmaWNfY3R4X2lkID0gdXBwZXJfMzJfYml0cyhjZS0+bHJjX2Rlc2Mp Owo+Pj4twqDCoMKgwqDCoMKgwqAgc3RyZWFtLT5zcGVjaWZpY19jdHhfaWQgJj0KPj4+LcKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgc3RyZWFtLT5zcGVjaWZpY19jdHhfaWRfbWFzazsKPj4+K8KgwqDC oMKgwqDCoMKgwqDCoMKgwqAgKCgxVSA8PCBHRU4xMV9TV19DVFhfSURfV0lEVEgpIC0gMSkgPDwg Cj4+PihHRU4xMV9TV19DVFhfSURfU0hJRlQgLSAzMik7Cj4+PivCoMKgwqDCoMKgwqDCoCBzdHJl YW0tPnNwZWNpZmljX2N0eF9pZCA9IHN0cmVhbS0+c3BlY2lmaWNfY3R4X2lkX21hc2s7Cj4+PsKg wqDCoMKgwqDCoMKgwqDCoCBicmVhazsKPj4+wqDCoMKgwqDCoCB9Cj4+PkBAIC0xMzA2LDYgKzEy OTksOCBAQCBzdGF0aWMgaW50IG9hX2dldF9yZW5kZXJfY3R4X2lkKHN0cnVjdCAKPj4+aTkxNV9w ZXJmX3N0cmVhbSAqc3RyZWFtKQo+Pj7CoMKgwqDCoMKgwqDCoMKgwqAgTUlTU0lOR19DQVNFKElO VEVMX0dFTihpOTE1KSk7Cj4+PsKgwqDCoMKgwqAgfQo+Pj4rwqDCoMKgIGNlLT50YWcgPSBzdHJl YW0tPnNwZWNpZmljX2N0eF9pZF9tYXNrOwo+Pj4rCj4+PsKgwqDCoMKgwqAgRFJNX0RFQlVHX0RS SVZFUigiZmlsdGVyaW5nIG9uIGN0eF9pZD0weCV4IGN0eF9pZF9tYXNrPTB4JXhcbiIsCj4+PsKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RyZWFtLT5zcGVjaWZpY19jdHhfaWQsCj4+PsKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RyZWFtLT5zcGVjaWZpY19jdHhfaWRfbWFzayk7 Cj4+PkBAIC0xMzI0LDEyICsxMzE5LDE0IEBAIHN0YXRpYyB2b2lkIG9hX3B1dF9yZW5kZXJfY3R4 X2lkKHN0cnVjdCAKPj4+aTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtKQo+Pj7CoCB7Cj4+PsKgwqDC oMKgwqAgc3RydWN0IGludGVsX2NvbnRleHQgKmNlOwo+Pj4twqDCoMKgIHN0cmVhbS0+c3BlY2lm aWNfY3R4X2lkID0gSU5WQUxJRF9DVFhfSUQ7Cj4+Pi3CoMKgwqAgc3RyZWFtLT5zcGVjaWZpY19j dHhfaWRfbWFzayA9IDA7Cj4+Pi0KPj4+wqDCoMKgwqDCoCBjZSA9IGZldGNoX2FuZF96ZXJvKCZz dHJlYW0tPnBpbm5lZF9jdHgpOwo+Pj4twqDCoMKgIGlmIChjZSkKPj4+K8KgwqDCoCBpZiAoY2Up IHsKPj4+K8KgwqDCoMKgwqDCoMKgIGNlLT50YWcgPSAwOwo+Pj7CoMKgwqDCoMKgwqDCoMKgwqAg aW50ZWxfY29udGV4dF91bnBpbihjZSk7Cj4+PivCoMKgwqAgfQo+Pj4rCj4+PivCoMKgwqAgc3Ry ZWFtLT5zcGVjaWZpY19jdHhfaWQgPSBJTlZBTElEX0NUWF9JRDsKPj4+K8KgwqDCoCBzdHJlYW0t PnNwZWNpZmljX2N0eF9pZF9tYXNrID0gMDsKPj4KPj5PQSBodW5rcyBsb29rcyBkb2RneSBhcyB3 ZWxsLiBjZS0+dGFnIGlzIHNldCB0byAKPj5zdHJlYW0tPnNwZWNpZmljX2N0eF9pZF9tYXNrIHdo aWxlIEkgdGhpbmsgaXQgc2hvdWxkIGJlIGlkLiAKPj5GdXJ0aGVybW9yZSBpZCBpcyBhc3NpZ25l ZCBmcm9tIG1hc2sgd2hpY2ggaXMgZml4ZWQgYW5kIG5vdCB1bmlxdWUgCj4+Zm9yIGRpZmZlcmVu dCBjb250ZXh0cy4KPj4KPj4+wqAgfQo+Pj7CoCBzdGF0aWMgdm9pZAo+Pj5kaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV90cmFjZS5oIAo+Pj5iL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfdHJhY2UuaAo+Pj5pbmRleCAyNGYyOTQ0ZGEwOWQuLjFmMmNmNmNmYWZiNSAxMDA2 NDQKPj4+LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV90cmFjZS5oCj4+PisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdHJhY2UuaAo+Pj5AQCAtNjY1LDcgKzY2NSw2IEBAIFRS QUNFX0VWRU5UKGk5MTVfcmVxdWVzdF9xdWV1ZSwKPj4+wqDCoMKgwqDCoMKgwqDCoMKgIFRQX1NU UlVDVF9fZW50cnkoCj4+PsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBfX2Zp ZWxkKHUzMiwgZGV2KQo+Pj4twqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgX19maWVs ZCh1MzIsIGh3X2lkKQo+Pj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgX19m aWVsZCh1NjQsIGN0eCkKPj4+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIF9f ZmllbGQodTE2LCBjbGFzcykKPj4+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IF9fZmllbGQodTE2LCBpbnN0YW5jZSkKPj4+QEAgLTY3NSw3ICs2NzQsNiBAQCBUUkFDRV9FVkVO VChpOTE1X3JlcXVlc3RfcXVldWUsCj4+PsKgwqDCoMKgwqDCoMKgwqDCoCBUUF9mYXN0X2Fzc2ln bigKPj4+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgX19lbnRyeS0+ZGV2ID0gcnEt Pmk5MTUtPmRybS5wcmltYXJ5LT5pbmRleDsKPj4+LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgX19lbnRyeS0+aHdfaWQgPSBycS0+Z2VtX2NvbnRleHQtPmh3X2lkOwo+Pj7CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBfX2VudHJ5LT5jbGFzcyA9IHJxLT5lbmdpbmUtPnVhYmlf Y2xhc3M7Cj4+PsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIF9fZW50cnktPmluc3Rh bmNlID0gcnEtPmVuZ2luZS0+dWFiaV9pbnN0YW5jZTsKPj4+wqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgX19lbnRyeS0+Y3R4ID0gcnEtPmZlbmNlLmNvbnRleHQ7Cj4+PkBAIC02ODMs MTAgKzY4MSw5IEBAIFRSQUNFX0VWRU5UKGk5MTVfcmVxdWVzdF9xdWV1ZSwKPj4+wqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgX19lbnRyeS0+ZmxhZ3MgPSBmbGFnczsKPj4+wqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKSwKPj4+LcKgwqDCoMKgwqDCoMKgIFRQX3ByaW50 aygiZGV2PSV1LCBlbmdpbmU9JXU6JXUsIGh3X2lkPSV1LCBjdHg9JWxsdSwgCj4+PnNlcW5vPSV1 LCBmbGFncz0weCV4IiwKPj4+K8KgwqDCoMKgwqDCoMKgIFRQX3ByaW50aygiZGV2PSV1LCBlbmdp bmU9JXU6JXUsIGN0eD0lbGx1LCBzZXFubz0ldSwgCj4+PmZsYWdzPTB4JXgiLAo+Pj7CoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgX19lbnRyeS0+ZGV2LCBfX2VudHJ5LT5jbGFzcywgX19l bnRyeS0+aW5zdGFuY2UsCj4+Pi3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBfX2VudHJ5LT5o d19pZCwgX19lbnRyeS0+Y3R4LCBfX2VudHJ5LT5zZXFubywKPj4+LcKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIF9fZW50cnktPmZsYWdzKQo+Pj4rwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg X19lbnRyeS0+Y3R4LCBfX2VudHJ5LT5zZXFubywgX19lbnRyeS0+ZmxhZ3MpCj4+PsKgICk7Cj4+ PsKgIERFQ0xBUkVfRVZFTlRfQ0xBU1MoaTkxNV9yZXF1ZXN0LAo+Pj5AQCAtNjk1LDcgKzY5Miw2 IEBAIERFQ0xBUkVfRVZFTlRfQ0xBU1MoaTkxNV9yZXF1ZXN0LAo+Pj7CoMKgwqDCoMKgwqDCoMKg wqAgVFBfU1RSVUNUX19lbnRyeSgKPj4+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIF9fZmllbGQodTMyLCBkZXYpCj4+Pi3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBfX2ZpZWxkKHUzMiwgaHdfaWQpCj4+PsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBfX2ZpZWxkKHU2NCwgY3R4KQo+Pj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgX19maWVsZCh1MTYsIGNsYXNzKQo+Pj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgX19maWVsZCh1MTYsIGluc3RhbmNlKQo+Pj5AQCAtNzA0LDE2ICs3MDAsMTUgQEAg REVDTEFSRV9FVkVOVF9DTEFTUyhpOTE1X3JlcXVlc3QsCj4+PsKgwqDCoMKgwqDCoMKgwqDCoCBU UF9mYXN0X2Fzc2lnbigKPj4+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgX19lbnRy eS0+ZGV2ID0gcnEtPmk5MTUtPmRybS5wcmltYXJ5LT5pbmRleDsKPj4+LcKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgX19lbnRyeS0+aHdfaWQgPSBycS0+Z2VtX2NvbnRleHQtPmh3X2lkOwo+ Pj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBfX2VudHJ5LT5jbGFzcyA9IHJxLT5l bmdpbmUtPnVhYmlfY2xhc3M7Cj4+PsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIF9f ZW50cnktPmluc3RhbmNlID0gcnEtPmVuZ2luZS0+dWFiaV9pbnN0YW5jZTsKPj4+wqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgX19lbnRyeS0+Y3R4ID0gcnEtPmZlbmNlLmNvbnRleHQ7 Cj4+PsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIF9fZW50cnktPnNlcW5vID0gcnEt PmZlbmNlLnNlcW5vOwo+Pj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCApLAo+Pj4t wqDCoMKgwqDCoMKgwqAgVFBfcHJpbnRrKCJkZXY9JXUsIGVuZ2luZT0ldToldSwgaHdfaWQ9JXUs IGN0eD0lbGx1LCBzZXFubz0ldSIsCj4+PivCoMKgwqDCoMKgwqDCoCBUUF9wcmludGsoImRldj0l dSwgZW5naW5lPSV1OiV1LCBjdHg9JWxsdSwgc2Vxbm89JXUiLAo+Pj7CoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgX19lbnRyeS0+ZGV2LCBfX2VudHJ5LT5jbGFzcywgX19lbnRyeS0+aW5z dGFuY2UsCj4+Pi3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBfX2VudHJ5LT5od19pZCwgX19l bnRyeS0+Y3R4LCBfX2VudHJ5LT5zZXFubykKPj4+K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IF9fZW50cnktPmN0eCwgX19lbnRyeS0+c2Vxbm8pCj4+PsKgICk7Cj4+PsKgIERFRklORV9FVkVO VChpOTE1X3JlcXVlc3QsIGk5MTVfcmVxdWVzdF9hZGQsCj4+PkBAIC03MzgsNyArNzMzLDYgQEAg VFJBQ0VfRVZFTlQoaTkxNV9yZXF1ZXN0X2luLAo+Pj7CoMKgwqDCoMKgwqDCoMKgwqAgVFBfU1RS VUNUX19lbnRyeSgKPj4+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIF9fZmll bGQodTMyLCBkZXYpCj4+Pi3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBfX2ZpZWxk KHUzMiwgaHdfaWQpCj4+PsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBfX2Zp ZWxkKHU2NCwgY3R4KQo+Pj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgX19m aWVsZCh1MTYsIGNsYXNzKQo+Pj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg X19maWVsZCh1MTYsIGluc3RhbmNlKQo+Pj5AQCAtNzQ5LDcgKzc0Myw2IEBAIFRSQUNFX0VWRU5U KGk5MTVfcmVxdWVzdF9pbiwKPj4+wqDCoMKgwqDCoMKgwqDCoMKgIFRQX2Zhc3RfYXNzaWduKAo+ Pj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBfX2VudHJ5LT5kZXYgPSBycS0+aTkx NS0+ZHJtLnByaW1hcnktPmluZGV4Owo+Pj4twqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBf X2VudHJ5LT5od19pZCA9IHJxLT5nZW1fY29udGV4dC0+aHdfaWQ7Cj4+PsKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIF9fZW50cnktPmNsYXNzID0gcnEtPmVuZ2luZS0+dWFiaV9jbGFz czsKPj4+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgX19lbnRyeS0+aW5zdGFuY2Ug PSBycS0+ZW5naW5lLT51YWJpX2luc3RhbmNlOwo+Pj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBfX2VudHJ5LT5jdHggPSBycS0+ZmVuY2UuY29udGV4dDsKPj4+QEAgLTc1OCw5ICs3 NTEsOSBAQCBUUkFDRV9FVkVOVChpOTE1X3JlcXVlc3RfaW4sCj4+PsKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIF9fZW50cnktPnBvcnQgPSBwb3J0Owo+Pj7CoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCApLAo+Pj4twqDCoMKgwqDCoMKgwqAgVFBfcHJpbnRrKCJkZXY9JXUs IGVuZ2luZT0ldToldSwgaHdfaWQ9JXUsIGN0eD0lbGx1LCAKPj4+c2Vxbm89JXUsIHByaW89JXUs IHBvcnQ9JXUiLAo+Pj4rwqDCoMKgwqDCoMKgwqAgVFBfcHJpbnRrKCJkZXY9JXUsIGVuZ2luZT0l dToldSwgY3R4PSVsbHUsIHNlcW5vPSV1LCAKPj4+cHJpbz0ldSwgcG9ydD0ldSIsCj4+PsKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBfX2VudHJ5LT5kZXYsIF9fZW50cnktPmNsYXNzLCBf X2VudHJ5LT5pbnN0YW5jZSwKPj4+LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIF9fZW50cnkt Pmh3X2lkLCBfX2VudHJ5LT5jdHgsIF9fZW50cnktPnNlcW5vLAo+Pj4rwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgX19lbnRyeS0+Y3R4LCBfX2VudHJ5LT5zZXFubywKPj4+wqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIF9fZW50cnktPnByaW8sIF9fZW50cnktPnBvcnQpCj4+PsKgICk7 Cj4+PkBAIC03NzAsNyArNzYzLDYgQEAgVFJBQ0VfRVZFTlQoaTkxNV9yZXF1ZXN0X291dCwKPj4+ wqDCoMKgwqDCoMKgwqDCoMKgIFRQX1NUUlVDVF9fZW50cnkoCj4+PsKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBfX2ZpZWxkKHUzMiwgZGV2KQo+Pj4twqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgX19maWVsZCh1MzIsIGh3X2lkKQo+Pj7CoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgX19maWVsZCh1NjQsIGN0eCkKPj4+wqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIF9fZmllbGQodTE2LCBjbGFzcykKPj4+wqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIF9fZmllbGQodTE2LCBpbnN0YW5jZSkKPj4+QEAgLTc4 MCw3ICs3NzIsNiBAQCBUUkFDRV9FVkVOVChpOTE1X3JlcXVlc3Rfb3V0LAo+Pj7CoMKgwqDCoMKg wqDCoMKgwqAgVFBfZmFzdF9hc3NpZ24oCj4+PsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIF9fZW50cnktPmRldiA9IHJxLT5pOTE1LT5kcm0ucHJpbWFyeS0+aW5kZXg7Cj4+Pi3CoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIF9fZW50cnktPmh3X2lkID0gcnEtPmdlbV9jb250ZXh0 LT5od19pZDsKPj4+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgX19lbnRyeS0+Y2xh c3MgPSBycS0+ZW5naW5lLT51YWJpX2NsYXNzOwo+Pj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBfX2VudHJ5LT5pbnN0YW5jZSA9IHJxLT5lbmdpbmUtPnVhYmlfaW5zdGFuY2U7Cj4+ PsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIF9fZW50cnktPmN0eCA9IHJxLT5mZW5j ZS5jb250ZXh0Owo+Pj5AQCAtNzg4LDEwICs3NzksOSBAQCBUUkFDRV9FVkVOVChpOTE1X3JlcXVl c3Rfb3V0LAo+Pj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBfX2VudHJ5LT5jb21w bGV0ZWQgPSBpOTE1X3JlcXVlc3RfY29tcGxldGVkKHJxKTsKPj4+wqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgKSwKPj4+LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgVFBfcHJpbnRrKCJk ZXY9JXUsIGVuZ2luZT0ldToldSwgaHdfaWQ9JXUsIGN0eD0lbGx1LCAKPj4+c2Vxbm89JXUsIGNv bXBsZXRlZD89JXUiLAo+Pj4rwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBUUF9wcmludGsoImRldj0l dSwgZW5naW5lPSV1OiV1LCBjdHg9JWxsdSwgc2Vxbm89JXUsIAo+Pj5jb21wbGV0ZWQ/PSV1IiwK Pj4+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgX19lbnRyeS0+ZGV2LCBf X2VudHJ5LT5jbGFzcywgX19lbnRyeS0+aW5zdGFuY2UsCj4+Pi3CoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIF9fZW50cnktPmh3X2lkLCBfX2VudHJ5LT5jdHgsIF9fZW50cnktPnNl cW5vLAo+Pj4twqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBfX2VudHJ5LT5jb21w bGV0ZWQpCj4+PivCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIF9fZW50cnktPmN0 eCwgX19lbnRyeS0+c2Vxbm8sIF9fZW50cnktPmNvbXBsZXRlZCkKPj4+wqAgKTsKPj4+wqAgI2Vs c2UKPj4+QEAgLTgyOSw3ICs4MTksNiBAQCBUUkFDRV9FVkVOVChpOTE1X3JlcXVlc3Rfd2FpdF9i ZWdpbiwKPj4+wqDCoMKgwqDCoMKgwqDCoMKgIFRQX1NUUlVDVF9fZW50cnkoCj4+PsKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBfX2ZpZWxkKHUzMiwgZGV2KQo+Pj4twqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgX19maWVsZCh1MzIsIGh3X2lkKQo+Pj7CoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgX19maWVsZCh1NjQsIGN0eCkKPj4+wqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIF9fZmllbGQodTE2LCBjbGFzcykKPj4+wqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIF9fZmllbGQodTE2LCBpbnN0YW5jZSkK Pj4+QEAgLTg0NSw3ICs4MzQsNiBAQCBUUkFDRV9FVkVOVChpOTE1X3JlcXVlc3Rfd2FpdF9iZWdp biwKPj4+wqDCoMKgwqDCoMKgwqDCoMKgwqAgKi8KPj4+wqDCoMKgwqDCoMKgwqDCoMKgIFRQX2Zh c3RfYXNzaWduKAo+Pj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBfX2VudHJ5LT5k ZXYgPSBycS0+aTkxNS0+ZHJtLnByaW1hcnktPmluZGV4Owo+Pj4twqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBfX2VudHJ5LT5od19pZCA9IHJxLT5nZW1fY29udGV4dC0+aHdfaWQ7Cj4+PsKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIF9fZW50cnktPmNsYXNzID0gcnEtPmVuZ2lu ZS0+dWFiaV9jbGFzczsKPj4+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgX19lbnRy eS0+aW5zdGFuY2UgPSBycS0+ZW5naW5lLT51YWJpX2luc3RhbmNlOwo+Pj7CoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBfX2VudHJ5LT5jdHggPSBycS0+ZmVuY2UuY29udGV4dDsKPj4+ QEAgLTg1Myw5ICs4NDEsOSBAQCBUUkFDRV9FVkVOVChpOTE1X3JlcXVlc3Rfd2FpdF9iZWdpbiwK Pj4+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgX19lbnRyeS0+ZmxhZ3MgPSBmbGFn czsKPj4+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKSwKPj4+LcKgwqDCoMKgwqDC oMKgIFRQX3ByaW50aygiZGV2PSV1LCBlbmdpbmU9JXU6JXUsIGh3X2lkPSV1LCBjdHg9JWxsdSwg Cj4+PnNlcW5vPSV1LCBmbGFncz0weCV4IiwKPj4+K8KgwqDCoMKgwqDCoMKgIFRQX3ByaW50aygi ZGV2PSV1LCBlbmdpbmU9JXU6JXUsIGN0eD0lbGx1LCBzZXFubz0ldSwgCj4+PmZsYWdzPTB4JXgi LAo+Pj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgX19lbnRyeS0+ZGV2LCBfX2VudHJ5 LT5jbGFzcywgX19lbnRyeS0+aW5zdGFuY2UsCj4+Pi3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBfX2VudHJ5LT5od19pZCwgX19lbnRyeS0+Y3R4LCBfX2VudHJ5LT5zZXFubywKPj4+K8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIF9fZW50cnktPmN0eCwgX19lbnRyeS0+c2Vxbm8sCj4+PsKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBfX2VudHJ5LT5mbGFncykKPj4+wqAgKTsKPj4+ QEAgLTk1OCwxOSArOTQ2LDE3IEBAIERFQ0xBUkVfRVZFTlRfQ0xBU1MoaTkxNV9jb250ZXh0LAo+ Pj7CoMKgwqDCoMKgIFRQX1NUUlVDVF9fZW50cnkoCj4+PsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIF9fZmllbGQodTMyLCBkZXYpCj4+PsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIF9fZmll bGQoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKiwgY3R4KQo+Pj4twqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBfX2ZpZWxkKHUzMiwgaHdfaWQpCj4+PsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIF9f ZmllbGQoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqLCB2bSkKPj4+wqDCoMKgwqDCoCApLAo+ Pj7CoMKgwqDCoMKgIFRQX2Zhc3RfYXNzaWduKAo+Pj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBfX2VudHJ5LT5kZXYgPSBjdHgtPmk5MTUtPmRybS5wcmltYXJ5LT5pbmRleDsKPj4+wqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgX19lbnRyeS0+Y3R4ID0gY3R4Owo+Pj4twqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBfX2VudHJ5LT5od19pZCA9IGN0eC0+aHdfaWQ7Cj4+PsKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIF9fZW50cnktPnZtID0gY3R4LT52bTsKPj4+wqDCoMKgwqDCoCApLAo+Pj4t wqDCoMKgIFRQX3ByaW50aygiZGV2PSV1LCBjdHg9JXAsIGN0eF92bT0lcCwgaHdfaWQ9JXUiLAo+ Pj4twqDCoMKgwqDCoMKgwqDCoMKgIF9fZW50cnktPmRldiwgX19lbnRyeS0+Y3R4LCBfX2VudHJ5 LT52bSwgX19lbnRyeS0+aHdfaWQpCj4+PivCoMKgwqAgVFBfcHJpbnRrKCJkZXY9JXUsIGN0eD0l cCwgY3R4X3ZtPSVwIiwKPj4+K8KgwqDCoMKgwqDCoMKgwqDCoCBfX2VudHJ5LT5kZXYsIF9fZW50 cnktPmN0eCwgX19lbnRyeS0+dm0pCj4+PsKgICkKPj4+wqAgREVGSU5FX0VWRU5UKGk5MTVfY29u dGV4dCwgaTkxNV9jb250ZXh0X2NyZWF0ZSwKPj4+ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9ldmljdC5jIAo+Pj5iL2RyaXZlcnMvZ3B1L2RybS9p OTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9ldmljdC5jCj4+PmluZGV4IDUyZDJkZjg0MzE0OC4uZjM5 ZjAyODJlNzhjIDEwMDY0NAo+Pj4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMv aTkxNV9nZW1fZXZpY3QuYwo+Pj4rKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMv aTkxNV9nZW1fZXZpY3QuYwo+Pj5AQCAtNDkxLDggKzQ5MSw4IEBAIHN0YXRpYyBpbnQgaWd0X2V2 aWN0X2NvbnRleHRzKHZvaWQgKmFyZykKPj4+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYg KElTX0VSUihycSkpIHsKPj4+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvKiBX aGVuIGZ1bGwsIGZhaWxfaWZfYnVzeSB3aWxsIHRyaWdnZXIgRUJVU1kgKi8KPj4+wqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoUFRSX0VSUihycSkgIT0gLUVCVVNZKSB7Cj4+ Pi3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwcl9lcnIoIlVuZXhwZWN0 ZWQgZXJyb3IgZnJvbSByZXF1ZXN0IGFsbG9jIAo+Pj4oY3R4IGh3IGlkICV1LCBvbiAlcyk6ICVk XG4iLAo+Pj4twqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBjdHgtPmh3X2lkLCBlbmdpbmUtPm5hbWUsCj4+PivCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBwcl9lcnIoIlVuZXhwZWN0ZWQgZXJyb3IgZnJvbSByZXF1ZXN0IGFs bG9jIAo+Pj4ob24gJXMpOiAlZFxuIiwKPj4+K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZW5naW5lLT5uYW1lLAo+Pj7CoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAoaW50KVBUUl9FUlIocnEp KTsKPj4+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGVyciA9IFBU Ul9FUlIocnEpOwo+Pj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0KPj4+ZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3ZtYS5jIAo+Pj5i L2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3ZtYS5jCj4+PmluZGV4IDFjOWRi MDhmN2MyOC4uYWMxZmY1NThlYjkwIDEwMDY0NAo+Pj4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9zZWxmdGVzdHMvaTkxNV92bWEuYwo+Pj4rKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxm dGVzdHMvaTkxNV92bWEuYwo+Pj5AQCAtMTcwLDcgKzE3MCw3IEBAIHN0YXRpYyBpbnQgaWd0X3Zt YV9jcmVhdGUodm9pZCAqYXJnKQo+Pj7CoMKgwqDCoMKgwqDCoMKgwqAgfQo+Pj7CoMKgwqDCoMKg wqDCoMKgwqAgbmMgPSAwOwo+Pj4twqDCoMKgwqDCoMKgwqAgZm9yX2VhY2hfcHJpbWVfbnVtYmVy KG51bV9jdHgsIE1BWF9DT05URVhUX0hXX0lEKSB7Cj4+PivCoMKgwqDCoMKgwqDCoCBmb3JfZWFj aF9wcmltZV9udW1iZXIobnVtX2N0eCwgMiAqIE5VTV9DT05URVhUX1RBRykgewo+Pj7CoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBmb3IgKDsgbmMgPCBudW1fY3R4OyBuYysrKSB7Cj4+PsKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY3R4ID0gbW9ja19jb250ZXh0KGk5MTUsICJt b2NrIik7Cj4+PsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKCFjdHgpCj4+ Pgo+Pgo+PlVubGVzcyBJIGFtIG1pc3Npbmcgc29tZXRoaW5nIEkgc2VlIHRoaXMgcGF0Y2ggYXMg c2ltcGxpZmljYXRpb24gYW5kIAo+Pm5vdCBhIGZpeC4gSWYgd2UgY2FuIGdldCBhd2F5IHdpdGgg aXQgaW4gdGhlIEd1QyB3b3JsZCB0aGVuIGl0J3MgCj4+cXVpdGUgYSBiaWcgc2ltcGxpZmljYXRp b24gc28gaXQncyBmaW5lIGJ5IG1lLgo+Cj5UaGUgR3VDIHdpbGwgcmVxdWlyZSBhIGZpeGVkIElE IHBlciBpbnRlbF9jb250ZXh0IGZvciB0aGUgd2hvbGUgdGltZSAKPnRoZSBjb250ZXh0IGlzIGlu IHVzZS9waW5uZWQuIFRoZSBHVUMgSURzIGFyZSBhIGdsb2JhbCBsaXN0IChpLmUuIGFsbCAKPmVu Z2luZXMgc2hhcmUgaXQpIHdpdGggNjRrIGVudHJpZXMsIHNvIHRoZSBsb2dpYyB0byBhc3NpZ24g dGhlbSBpcyAKPmdvaW5nIHRvIGJlIGEgYml0IGRpZmZlcmVudCBhbmQgbW9zdCBsaWtlbHkgY29u ZmluZWQgdG8gdGhlIGd1YyAKPmNvbnRleHRfcGluL3VucGluIGNhbGxiYWNrcywgYnV0IHdlIG1p Z2h0IGJyaW5nIGJhY2sgc29tZSBvZiB0aGUgCj5sb3ctbGV2ZWwgSUQgbWFuYWdlbWVudCBsb2dp YyB0aGF0IGhhcyBiZWVuIHJlbW92ZWQgaW4gdGhpcyBwYXRjaC4KPgo+QW4gSUQgYXQgdGhlIGdl bV9jb250ZXh0IGxldmVsIGRlZmluaXRlbHkgZG9lc24ndCBoZWxwIG9uIHRoZSBndWMgc2lkZSwg c286Cj4KPkFja2VkLWJ5OiBEYW5pZWxlIENlcmFvbG8gU3B1cmlvIDxkYW5pZWxlLmNlcmFvbG9z cHVyaW9AaW50ZWwuY29tPgo+Cj5EYW5pZWxlCj4KPj4KPj5SZWdhcmRzLAo+Pgo+PlR2cnRrbwpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZngg bWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0 cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZng=