From mboxrd@z Thu Jan 1 00:00:00 1970 From: Julien Grall Subject: Re: [PATCH v1 6/9] livepatch: Initial ARM64 support. Date: Wed, 17 Aug 2016 19:22:54 +0100 Message-ID: References: <1471216074-3007-1-git-send-email-konrad.wilk@oracle.com> <1471216074-3007-7-git-send-email-konrad.wilk@oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ba5US-0006uW-8F for xen-devel@lists.xenproject.org; Wed, 17 Aug 2016 18:23:00 +0000 In-Reply-To: <1471216074-3007-7-git-send-email-konrad.wilk@oracle.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Konrad Rzeszutek Wilk , xen-devel@lists.xenproject.org, konrad@kernel.org, ross.lagerwall@citrix.com Cc: Andrew Cooper , sstabellini@kernel.org List-Id: xen-devel@lists.xenproject.org SGkgS29ucmFkLAoKT24gMTUvMDgvMTYgMDA6MDcsIEtvbnJhZCBSemVzenV0ZWsgV2lsayB3cm90 ZToKClsuLi5dCgo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vYXJtNjQvbGl2ZXBhdGNoLmMg Yi94ZW4vYXJjaC9hcm0vYXJtNjQvbGl2ZXBhdGNoLmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+ IGluZGV4IDAwMDAwMDAuLmUzNDg5NDIKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIveGVuL2FyY2gv YXJtL2FybTY0L2xpdmVwYXRjaC5jCj4gQEAgLTAsMCArMSwyNDcgQEAKPiArLyoKPiArICogIENv cHlyaWdodCAoYykgMjAxNiBPcmFjbGUgYW5kL29yIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRz IHJlc2VydmVkLgo+ICsgKi8KPiArCj4gKyNpbmNsdWRlICIuLi9saXZlcGF0Y2guaCIKPiArI2lu Y2x1ZGUgPHhlbi9iaXRvcHMuaD4KPiArI2luY2x1ZGUgPHhlbi9lcnJuby5oPgo+ICsjaW5jbHVk ZSA8eGVuL2xpYi5oPgo+ICsjaW5jbHVkZSA8eGVuL2xpdmVwYXRjaF9lbGYuaD4KPiArI2luY2x1 ZGUgPHhlbi9saXZlcGF0Y2guaD4KPiArI2luY2x1ZGUgPHhlbi9tbS5oPgo+ICsjaW5jbHVkZSA8 eGVuL3ZtYXAuaD4KPiArCj4gKyNpbmNsdWRlIDxhc20vYml0b3BzLmg+Cj4gKyNpbmNsdWRlIDxh c20vYnl0ZW9yZGVyLmg+Cj4gKyNpbmNsdWRlIDxhc20vaW5zbi5oPgo+ICsKPiArdm9pZCBhcmNo X2xpdmVwYXRjaF9hcHBseV9qbXAoc3RydWN0IGxpdmVwYXRjaF9mdW5jICpmdW5jKQo+ICt7Cj4g KyAgICB1aW50MzJfdCBpbnNuOwo+ICsgICAgdWludDMyX3QgKm9sZF9wdHI7Cj4gKyAgICB1aW50 MzJfdCAqbmV3X3B0cjsKPiArCj4gKyAgICBCVUlMRF9CVUdfT04oUEFUQ0hfSU5TTl9TSVpFID4g c2l6ZW9mKGZ1bmMtPm9wYXF1ZSkpOwo+ICsgICAgQlVJTERfQlVHX09OKFBBVENIX0lOU05fU0la RSAhPSBzaXplb2YoaW5zbikpOwo+ICsKPiArICAgIEFTU0VSVCh2bWFwX29mX3hlbl90ZXh0KTsK PiArCj4gKyAgICAvKiBTYXZlIG9sZCBvbmUuICovCj4gKyAgICBvbGRfcHRyID0gZnVuYy0+b2xk X2FkZHI7Cj4gKyAgICBtZW1jcHkoZnVuYy0+b3BhcXVlLCBvbGRfcHRyLCBQQVRDSF9JTlNOX1NJ WkUpOwo+ICsKPiArICAgIGlmICggZnVuYy0+bmV3X3NpemUgKQo+ICsgICAgICAgIGluc24gPSBh YXJjaDY0X2luc25fZ2VuX2JyYW5jaF9pbW0oKHVuc2lnbmVkIGxvbmcpZnVuYy0+b2xkX2FkZHIs Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQg bG9uZylmdW5jLT5uZXdfYWRkciwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEFBUkNINjRfSU5TTl9CUkFOQ0hfTk9MSU5LKTsKClRoZSBmdW5jdGlvbiBhYXJj aDY0X2luc25fZ2VuX2JyYW5jaF9pbW0gd2lsbCBmYWlsIHRvIGNyZWF0ZSB0aGUgYnJhbmNoIApp ZiB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIG9sZF9hZGRyIGFuZCBuZXdfYWRkciBpcyBncmVhdGVy IHRoYW4gMTI4TUIuCgpJbiB0aGlzIGNhc2UsIHRoZSBmdW5jdGlvbiB3aWxsIHJldHVybiBBQVJD SDY0X0JSRUFLX0ZBVUxUIHdoaWNoIHdpbGwgCmNyYXNoIFhlbiB3aGVuIHRoZSBpbnN0cnVjdGlv biBpcyBleGVjdXRlZC4KCkkgY2Fubm90IGZpbmQgYW55IHNhbml0eSBjaGVjayBpbiB0aGUgaHlw ZXJ2aXNvciBjb2RlLiBTbyBhcmUgd2UgCnRydXN0aW5nIHRoZSBwYXlsb2FkPwoKPiArICAgIGVs c2UKPiArICAgICAgICBpbnNuID0gYWFyY2g2NF9pbnNuX2dlbl9ub3AoKTsKPiArCj4gKyAgICBu ZXdfcHRyID0gZnVuYy0+b2xkX2FkZHIgLSAodm9pZCAqKV9zdGFydCArIHZtYXBfb2ZfeGVuX3Rl eHQ7Cj4gKwo+ICsgICAgLyogUEFUQ0ghICovCj4gKyAgICAqKG5ld19wdHIpID0gY3B1X3RvX2xl MzIoaW5zbik7Cj4gKwo+ICsgICAgY2xlYW5fYW5kX2ludmFsaWRhdGVfZGNhY2hlX3ZhX3Jhbmdl KG5ld19wdHIsIHNpemVvZigqbmV3X3B0cikpOwo+ICt9Cj4gKwo+ICt2b2lkIGFyY2hfbGl2ZXBh dGNoX3JldmVydF9qbXAoY29uc3Qgc3RydWN0IGxpdmVwYXRjaF9mdW5jICpmdW5jKQo+ICt7Cj4g KyAgICB1aW50MzJfdCAqbmV3X3B0cjsKPiArICAgIHVpbnQzMl90IGluc247Cj4gKwo+ICsgICAg bWVtY3B5KCZpbnNuLCBmdW5jLT5vcGFxdWUsIFBBVENIX0lOU05fU0laRSk7Cj4gKwo+ICsgICAg bmV3X3B0ciA9ICh1aW50MzJfdCAqKWZ1bmMtPm9sZF9hZGRyIC0gKHUzMiAqKV9zdGFydCArIHZt YXBfb2ZfeGVuX3RleHQ7Cj4gKwo+ICsgICAgLyogUEFUQ0ghICovCj4gKyAgICAqKG5ld19wdHIp ID0gY3B1X3RvX2xlMzIoaW5zbik7Cj4gKwo+ICsgICAgY2xlYW5fYW5kX2ludmFsaWRhdGVfZGNh Y2hlX3ZhX3JhbmdlKG5ld19wdHIsIHNpemVvZigqbmV3X3B0cikpOwo+ICt9Cj4gKwo+ICtpbnQg YXJjaF9saXZlcGF0Y2hfdmVyaWZ5X2VsZihjb25zdCBzdHJ1Y3QgbGl2ZXBhdGNoX2VsZiAqZWxm KQo+ICt7Cj4gKyAgICBjb25zdCBFbGZfRWhkciAqaGRyID0gZWxmLT5oZHI7Cj4gKwo+ICsgICAg aWYgKCBoZHItPmVfbWFjaGluZSAhPSBFTV9BQVJDSDY0IHx8Cj4gKyAgICAgICAgIGhkci0+ZV9p ZGVudFtFSV9DTEFTU10gIT0gRUxGQ0xBU1M2NCApCj4gKyAgICB7Cj4gKyAgICAgICAgZHByaW50 ayhYRU5MT0dfRVJSLCBMSVZFUEFUQ0ggIiVzOiBVbnN1cHBvcnRlZCBFTEYgTWFjaGluZSB0eXBl IVxuIiwKPiArICAgICAgICAgICAgICAgIGVsZi0+bmFtZSk7Cj4gKyAgICAgICAgcmV0dXJuIC1F T1BOT1RTVVBQOwo+ICsgICAgfQo+ICsKPiArICAgIHJldHVybiAwOwo+ICt9Cj4gKwoKWy4uLl0K Cj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS9kb21haW4uYyBiL3hlbi9hcmNoL2FybS9kb21h aW4uYwo+IGluZGV4IDIwYmIyYmEuLjYwN2VlNTkgMTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gvYXJt L2RvbWFpbi5jCj4gKysrIGIveGVuL2FyY2gvYXJtL2RvbWFpbi5jCj4gQEAgLTEzLDYgKzEzLDcg QEAKPiAgI2luY2x1ZGUgPHhlbi9oeXBlcmNhbGwuaD4KPiAgI2luY2x1ZGUgPHhlbi9pbml0Lmg+ Cj4gICNpbmNsdWRlIDx4ZW4vbGliLmg+Cj4gKyNpbmNsdWRlIDx4ZW4vbGl2ZXBhdGNoLmg+Cj4g ICNpbmNsdWRlIDx4ZW4vc2NoZWQuaD4KPiAgI2luY2x1ZGUgPHhlbi9zb2Z0aXJxLmg+Cj4gICNp bmNsdWRlIDx4ZW4vd2FpdC5oPgo+IEBAIC01NSw2ICs1NiwxMSBAQCB2b2lkIGlkbGVfbG9vcCh2 b2lkKQo+Cj4gICAgICAgICAgZG9fdGFza2xldCgpOwo+ICAgICAgICAgIGRvX3NvZnRpcnEoKTsK PiArICAgICAgICAvKgo+ICsgICAgICAgICAqIFdlIE1VU1QgYmUgbGFzdCAob3IgYmVmb3JlIGRz Yiwgd2ZpKS4gT3RoZXJ3aXNlIGFmdGVyIHdlIGdldCB0aGUKPiArICAgICAgICAgKiBzb2Z0aXJx IHdlIHdvdWxkIGV4ZWN1dGUgZHNiLHdmaSAoYW5kIHNsZWVwKSBhbmQgbm90IHBhdGNoLgo+ICsg ICAgICAgICAqLwo+ICsgICAgICAgIGNoZWNrX2Zvcl9saXZlcGF0Y2hfd29yaygpOwo+ICAgICAg fQo+ICB9Cj4KPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL2xpdmVwYXRjaC5jIGIveGVuL2Fy Y2gvYXJtL2xpdmVwYXRjaC5jCj4gaW5kZXggMzA5MzU1NC4uMTlmNjAzMyAxMDA2NDQKPiAtLS0g YS94ZW4vYXJjaC9hcm0vbGl2ZXBhdGNoLmMKPiArKysgYi94ZW4vYXJjaC9hcm0vbGl2ZXBhdGNo LmMKPiBAQCAtMSw1NiArMSw5MyBAQAo+ICAvKgo+ICAgKiAgQ29weXJpZ2h0IChDKSAyMDE2IENp dHJpeCBTeXN0ZW1zIFImRCBMdGQuCj4gICAqLwo+ICsKClNwdXJpb3VzIGNoYW5nZT8KCj4gKyNp bmNsdWRlICJsaXZlcGF0Y2guaCIKPiAgI2luY2x1ZGUgPHhlbi9lcnJuby5oPgo+ICAjaW5jbHVk ZSA8eGVuL2luaXQuaD4KPiAgI2luY2x1ZGUgPHhlbi9saWIuaD4KPiAgI2luY2x1ZGUgPHhlbi9s aXZlcGF0Y2hfZWxmLmg+Cj4gICNpbmNsdWRlIDx4ZW4vbGl2ZXBhdGNoLmg+Cj4gKyNpbmNsdWRl IDx4ZW4vdm1hcC5oPgo+ICsKPiArI2luY2x1ZGUgPGFzbS9tbS5oPgo+Cj4gLS8qIE9uIEFSTTMy LDY0IGluc3RydWN0aW9ucyBhcmUgYWx3YXlzIDQgYnl0ZXMgbG9uZy4gKi8KPiAtI2RlZmluZSBQ QVRDSF9JTlNOX1NJWkUgNAoKUmF0aGVyIHRoYW4gbW92aW5nIGFnYWluIFBBVENIX0lOU05fU0la RSBpbiB0aGlzIHBhdGNoLiBDYW4geW91IGRpcmVjdGx5IAptb3ZlIGl0IGluIHBhdGNoIFsxXT8K Cj4gK3ZvaWQgKnZtYXBfb2ZfeGVuX3RleHQ7Cj4KPiAgaW50IGFyY2hfdmVyaWZ5X2luc25fbGVu Z3RoKHVuc2lnbmVkIGxvbmcgbGVuKQo+ICB7Cj4gICAgICByZXR1cm4gbGVuICE9IFBBVENIX0lO U05fU0laRTsKPiAgfQo+Cj4gLXZvaWQgYXJjaF9saXZlcGF0Y2hfcXVpZXNjZSh2b2lkKQo+ICtp bnQgYXJjaF9saXZlcGF0Y2hfcXVpZXNjZSh2b2lkKQoKSXQgd291bGQgaGF2ZSBiZWVuIG5pY2Ug dG8gbW92ZSB0aGUgcHJvdG90eXBlIGNoYW5nZSBvdXQgb2YgdGhpcyBwYXRjaCAKdG8ga2VlcCBp dCAic3RyYWlnaHQgZm9yd2FyZCIuCgo+ICB7Cj4gKyAgICBtZm5fdCB0ZXh0X21mbjsKPiArICAg IHVuc2lnbmVkIGludCB0ZXh0X29yZGVyOwo+ICsKPiArICAgIGlmICggdm1hcF9vZl94ZW5fdGV4 dCApCj4gKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4gKwo+ICsgICAgdGV4dF9tZm4gPSBfbWZu KHZpcnRfdG9fbWZuKF9zdGV4dCkpOwo+ICsgICAgdGV4dF9vcmRlciA9IGdldF9vcmRlcl9mcm9t X2J5dGVzKF9lbmQgLSBfc3RhcnQpOwoKSXQgaXMgYSBiaXQgb2RkIHRoYXQgeW91IHVzZSBfc3Rl eHQgYmVmb3JlIGFuZCB0aGUgX3N0YXJ0LiBCdXQgSSB3b24ndCAKY29tcGxhaW4gYXMgSSBkaWQg dGhlIHNhbWUgaW4gYWx0ZXJuYXRpdmVzLmMgOi8uCgpIb3dldmVyLCBJIHRoaW5rIGl0IHNob3Vs ZCBiZSBlbm91Z2ggdG8gcmVtYXAgX3N0ZXh0IC0+IF9ldGV4dC4gSSBoYWQgdG8gCm1hcCBhbGwg dGhlIFhlbiBiaW5hcnkgZm9yIHRoZSBhbHRlcm5hdGl2ZXMgYmVjYXVzZSB3ZSBtYXkgcGF0Y2gg dGhlIAppbml0IHRleHQuCgpJIGZvcmdvdCB0byBtZW50aW9uIGl0IGluIHRoZSBjb2RlLCBzbyBJ IHdpbGwgc2VuZCBhIHBhdGNoIHRvIHVwZGF0ZSBpdC4KCj4gKwo+ICsgICAgLyoKPiArICAgICAq IFRoZSB0ZXh0IHNlY3Rpb24gaXMgcmVhZC1vbmx5LiBTbyByZS1tYXAgWGVuIHRvIGJlIGFibGUg dG8gcGF0Y2gKPiArICAgICAqIHRoZSBjb2RlLgo+ICsgICAgICovCj4gKyAgICB2bWFwX29mX3hl bl90ZXh0ID0gX192bWFwKCZ0ZXh0X21mbiwgMSA8PCB0ZXh0X29yZGVyLCAxLCAxLCBQQUdFX0hZ UEVSVklTT1IsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZNQVBfREVGQVVMVCk7 Cj4gKwo+ICsgICAgaWYgKCAhdm1hcF9vZl94ZW5fdGV4dCApCj4gKyAgICB7Cj4gKyAgICAgICAg cHJpbnRrKFhFTkxPR19FUlIgTElWRVBBVENIICJGYWlsZWQgdG8gc2V0dXAgdm1hcCBvZiBoeXBl cnZpc29yISAob3JkZXI9JXUpXG4iLAo+ICsgICAgICAgICAgICAgICB0ZXh0X29yZGVyKTsKPiAr ICAgICAgICByZXR1cm4gLUVOT01FTTsKPiArICAgIH0KPiArICAgIHJldHVybiAwOwo+ICB9Cj4K PiAgdm9pZCBhcmNoX2xpdmVwYXRjaF9yZXZpdmUodm9pZCkKPiAgewo+ICsgICAgLyoKPiArICAg ICAqIE51a2UgdGhlIGluc3RydWN0aW9uIGNhY2hlLiBJdCBoYXMgYmVlbiBjbGVhbmVkIGJlZm9y ZSBpbgoKSSBndWVzcyB5b3Ugd2FudCB0byByZXBsYWNlICJJdCIgYnkgIkRhdGEgY2FjaGUiIG90 aGVyd2lzZSBpdCBkb2VzIG5vdCAKbWFrZSBtdWNoIHNlbnNlLgoKPiArICAgICAqIGFyY2hfbGl2 ZXBhdGNoX2FwcGx5X2ptcC4KCldoYXQgYWJvdXQgdGhlIHBheWxvYWQ/IEl0IG1heSBjb250YWlu IGluc3RydWN0aW9ucywgc28gd2UgbmVlZCB0byAKZW5zdXJlIHRoYXQgYWxsIHRoZSBkYXRhIHJl YWNoZWQgdGhlIG1lbW9yeS4KCj4gKyAgICAgKi8KPiArICAgIGludmFsaWRhdGVfaWNhY2hlKCk7 Cj4gKwo+ICsgICAgaWYgKCB2bWFwX29mX3hlbl90ZXh0ICkKPiArICAgICAgICB2dW5tYXAodm1h cF9vZl94ZW5fdGV4dCk7Cj4gKwo+ICsgICAgdm1hcF9vZl94ZW5fdGV4dCA9IE5VTEw7Cj4gKwo+ ICsgICAgLyoKPiArICAgICAqIE5lZWQgdG8gZmx1c2ggdGhlIGJyYW5jaCBwcmVkaWNhdG9yIGZv ciBBUk12NyBhcyBpdCBtYXkgYmUKCnMvcHJlZGljYXRvci9wcmVkaWN0b3IvCgo+ICsgICAgICog YXJjaGl0ZWN0dXJhbGx5IHZpc2libGUgdG8gdGhlIHNvZnR3YXJlIChzZWUgQjIuMi40IGluIEFS TSBEREkgMDQwNkMuYikuCj4gKyAgICAgKi8KPiArICAgIGZsdXNoX3hlbl90ZXh0X3RsYl9sb2Nh bCgpOwoKSSBhbSBhIGJpdCBjb25mdXNlZC4gSW4geW91ciBjb21tZW50IHlvdSBtZW50aW9uIHRo ZSBicmFuY2ggYnV0IGZsdXNoIAp0aGUgVExCcy4gVGhlIHR3byBhcmUgbm90IHJlbGF0ZWQuCgpI b3dldmVyLCBJIHdvdWxkIHByZWZlciB0aGUgYnJhbmNoIHByZWRpY3RvciB0byBiZSBmbHVzaGVk IGRpcmVjdGx5IGluIAppbnZhbGlkYXRlX2ljYWNoZSBieSBjYWxsaW5nIEJQSUFMTElTLiBUaGlz IGlzIGJlY2F1c2UgZmx1c2hpbmcgdGhlIApjYWNoZSBtZWFucyB0aGF0IHlvdSBsaWtlbHkgd2Fu dCB0byBmbHVzaCB0aGUgYnJhbmNoIHByZWRpY3RvciB0b28uCgo+ICB9Cj4KPiAgaW50IGFyY2hf bGl2ZXBhdGNoX3ZlcmlmeV9mdW5jKGNvbnN0IHN0cnVjdCBsaXZlcGF0Y2hfZnVuYyAqZnVuYykK PiAgewo+IC0gICAgcmV0dXJuIC1FTk9TWVM7Cj4gLX0KPiAtCj4gLXZvaWQgYXJjaF9saXZlcGF0 Y2hfYXBwbHlfam1wKHN0cnVjdCBsaXZlcGF0Y2hfZnVuYyAqZnVuYykKPiAtewo+IC19Cj4gKyAg ICBpZiAoIGZ1bmMtPm9sZF9zaXplIDwgUEFUQ0hfSU5TTl9TSVpFICkKPiArICAgICAgICByZXR1 cm4gLUVJTlZBTDsKPgo+IC12b2lkIGFyY2hfbGl2ZXBhdGNoX3JldmVydF9qbXAoY29uc3Qgc3Ry dWN0IGxpdmVwYXRjaF9mdW5jICpmdW5jKQo+IC17Cj4gKyAgICByZXR1cm4gMDsKPiAgfQo+Cj4g IHZvaWQgYXJjaF9saXZlcGF0Y2hfcG9zdF9hY3Rpb24odm9pZCkKPiAgewo+ICsgICAgLyogYXJj aF9saXZlcGF0Y2hfcmV2aXZlIGhhcyBudWtlZCB0aGUgaW5zdHJ1Y3Rpb24gY2FjaGUuICovCj4g IH0KPgo+ICB2b2lkIGFyY2hfbGl2ZXBhdGNoX21hc2sodm9pZCkKPiAgewo+ICsgICAgLyogTWFz ayBTeXN0ZW0gRXJyb3IgKFNFcnJvcikgKi8KPiArICAgIGxvY2FsX2Fib3J0X2Rpc2FibGUoKTsK PiAgfQo+Cj4gIHZvaWQgYXJjaF9saXZlcGF0Y2hfdW5tYXNrKHZvaWQpCj4gIHsKPiAtfQo+IC0K PiAtaW50IGFyY2hfbGl2ZXBhdGNoX3ZlcmlmeV9lbGYoY29uc3Qgc3RydWN0IGxpdmVwYXRjaF9l bGYgKmVsZikKPiAtewo+IC0gICAgcmV0dXJuIC1FTk9TWVM7Cj4gKyAgICBsb2NhbF9hYm9ydF9l bmFibGUoKTsKPiAgfQo+Cj4gIGludCBhcmNoX2xpdmVwYXRjaF9wZXJmb3JtX3JlbChzdHJ1Y3Qg bGl2ZXBhdGNoX2VsZiAqZWxmLAo+IEBAIC02MCwyMCArOTcsMzQgQEAgaW50IGFyY2hfbGl2ZXBh dGNoX3BlcmZvcm1fcmVsKHN0cnVjdCBsaXZlcGF0Y2hfZWxmICplbGYsCj4gICAgICByZXR1cm4g LUVOT1NZUzsKPiAgfQo+Cj4gLWludCBhcmNoX2xpdmVwYXRjaF9wZXJmb3JtX3JlbGEoc3RydWN0 IGxpdmVwYXRjaF9lbGYgKmVsZiwKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj b25zdCBzdHJ1Y3QgbGl2ZXBhdGNoX2VsZl9zZWMgKmJhc2UsCj4gLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGxpdmVwYXRjaF9lbGZfc2VjICpyZWxhKQo+IC17 Cj4gLSAgICByZXR1cm4gLUVOT1NZUzsKPiAtfQo+IC0KPiAgaW50IGFyY2hfbGl2ZXBhdGNoX3Nl Y3VyZShjb25zdCB2b2lkICp2YSwgdW5zaWduZWQgaW50IHBhZ2VzLCBlbnVtIHZhX3R5cGUgdHlw ZSkKPiAgewo+IC0gICAgcmV0dXJuIC1FTk9TWVM7Cj4gKyAgICB1bnNpZ25lZCBsb25nIHN0YXJ0 ID0gKHVuc2lnbmVkIGxvbmcpdmE7Cj4gKyAgICB1bnNpZ25lZCBpbnQgZmxhZ3M7Cj4gKwo+ICsg ICAgQVNTRVJUKHZhKTsKPiArICAgIEFTU0VSVChwYWdlcyk7Cj4gKwo+ICsgICAgaWYgKCB0eXBl ID09IExJVkVQQVRDSF9WQV9SWCApCj4gKyAgICAgICAgZmxhZ3MgPSBQVEVfUk87IC8qIFIgc2V0 LCBOWCBjbGVhciAqLwo+ICsgICAgZWxzZSBpZiAoIHR5cGUgPT0gTElWRVBBVENIX1ZBX1JXICkK PiArICAgICAgICBmbGFncyA9IFBURV9OWDsgLyogUiBjbGVhciwgTlggc2V0ICovCj4gKyAgICBl bHNlCj4gKyAgICAgICAgZmxhZ3MgPSBQVEVfTlggfCBQVEVfUk87IC8qIFIgc2V0LCBOWCBzZXQg Ki8KCnZhX3R5cGUgaXMgYW4gZW51bS4gU28gSSB3b3VsZCBwcmVmZXIgdG8gc2VlIGEgc3dpdGNo LiBTbyB3ZSBjYW4gY2F0Y2ggCm1vcmUgZWFzaWx5IGFueSBhZGRpdGlvbiBvZiBhIG5ldyBtZW1i ZXIuCgo+ICsKPiArICAgIG1vZGlmeV94ZW5fbWFwcGluZ3Moc3RhcnQsIHN0YXJ0ICsgcGFnZXMg KiBQQUdFX1NJWkUsIGZsYWdzKTsKPiArCj4gKyAgICByZXR1cm4gMDsKPiAgfQo+Cj4gIHZvaWQg X19pbml0IGFyY2hfbGl2ZXBhdGNoX2luaXQodm9pZCkKPiAgewo+ICsgICAgdm9pZCAqc3RhcnQs ICplbmQ7Cj4gKwo+ICsgICAgc3RhcnQgPSAodm9pZCAqKUxJVkVQQVRDSF9WTUFQOwo+ICsgICAg ZW5kID0gc3RhcnQgKyBNQigyKTsKCkNvdWxkIHlvdSBkZWZpbmUgdGhlIGluIGNvbmZpZy5oPyBT byBpbiB0aGUgZnV0dXJlIHdlIGNhbiByZXdvcmsgbW9yZSAKZWFzaWx5IHRoZSBtZW1vcnkgbGF5 b3V0LgoKPiArCj4gKyAgICB2bV9pbml0X3R5cGUoVk1BUF9YRU4sIHN0YXJ0LCBlbmQpOwo+ICB9 Cj4KPiAgLyoKPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL2xpdmVwYXRjaC5oIGIveGVuL2Fy Y2gvYXJtL2xpdmVwYXRjaC5oCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAw Li44YzhkNjI1Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL3hlbi9hcmNoL2FybS9saXZlcGF0Y2gu aAoKSSBhbSBub3Qgc3VyZSB3aHkgdGhpcyBoZWFkZXIgaXMgbGl2aW5nIGluIGFyY2gvYXJtLyBh bmQgbm90IAppbmNsdWRlL2FzbS1hcm0vCgo+IEBAIC0wLDAgKzEsMjggQEAKPiArLyoKPiArICog Q29weXJpZ2h0IChjKSAyMDE2IE9yYWNsZSBhbmQvb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdo dHMgcmVzZXJ2ZWQuCj4gKyAqCj4gKyAqLwo+ICsKPiArI2lmbmRlZiBfX1hFTl9BUk1fTElWRVBB VENIX0hfXwo+ICsjZGVmaW5lIF9fWEVOX0FSTV9MSVZFUEFUQ0hfSF9fCj4gKwo+ICsvKiBPbiBB Uk0zMiw2NCBpbnN0cnVjdGlvbnMgYXJlIGFsd2F5cyA0IGJ5dGVzIGxvbmcuICovCj4gKyNkZWZp bmUgUEFUQ0hfSU5TTl9TSVpFIDQKPiArCj4gKy8qCj4gKyAqIFRoZSB2YSBvZiB0aGUgaHlwZXJ2 aXNvciAudGV4dCByZWdpb24uIFdlIG5lZWQgdGhpcyBhcyB0aGUKPiArICogbm9ybWFsIHZhIGFy ZSB3cml0ZSBwcm90ZWN0ZWQuCj4gKyAqLwo+ICtleHRlcm4gdm9pZCAqdm1hcF9vZl94ZW5fdGV4 dDsKPiArCj4gKyNlbmRpZiAvKiBfX1hFTl9BUk1fTElWRVBBVENIX0hfXyAqLwo+ICsKPiArLyoK PiArICogTG9jYWwgdmFyaWFibGVzOgo+ICsgKiBtb2RlOiBDCj4gKyAqIGMtZmlsZS1zdHlsZTog IkJTRCIKPiArICogYy1iYXNpYy1vZmZzZXQ6IDQKPiArICogdGFiLXdpZHRoOiA0Cj4gKyAqIGlu ZGVudC10YWJzLW1vZGU6IG5pbAo+ICsgKiBFbmQ6Cj4gKyAqLwo+IGRpZmYgLS1naXQgYS94ZW4v YXJjaC94ODYvbGl2ZXBhdGNoLmMgYi94ZW4vYXJjaC94ODYvbGl2ZXBhdGNoLmMKPiBpbmRleCAw NmM2N2JjLi5lM2YzZjM3IDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9saXZlcGF0Y2guYwo+ ICsrKyBiL3hlbi9hcmNoL3g4Ni9saXZlcGF0Y2guYwo+IEBAIC0xNSwxMCArMTUsMTIgQEAKPgo+ ICAjZGVmaW5lIFBBVENIX0lOU05fU0laRSA1Cj4KPiAtdm9pZCBhcmNoX2xpdmVwYXRjaF9xdWll c2NlKHZvaWQpCj4gK2ludCBhcmNoX2xpdmVwYXRjaF9xdWllc2NlKHZvaWQpCj4gIHsKPiAgICAg IC8qIERpc2FibGUgV1AgdG8gYWxsb3cgY2hhbmdlcyB0byByZWFkLW9ubHkgcGFnZXMuICovCj4g ICAgICB3cml0ZV9jcjAocmVhZF9jcjAoKSAmIH5YODZfQ1IwX1dQKTsKPiArCj4gKyAgICByZXR1 cm4gMDsKPiAgfQo+Cj4gIHZvaWQgYXJjaF9saXZlcGF0Y2hfcmV2aXZlKHZvaWQpCj4gZGlmZiAt LWdpdCBhL3hlbi9jb21tb24vS2NvbmZpZyBiL3hlbi9jb21tb24vS2NvbmZpZwo+IGluZGV4IDUx YWZhMjQuLjJmYzc2YjYgMTAwNjQ0Cj4gLS0tIGEveGVuL2NvbW1vbi9LY29uZmlnCj4gKysrIGIv eGVuL2NvbW1vbi9LY29uZmlnCj4gQEAgLTIyMiw3ICsyMjIsNyBAQCBlbmRtZW51Cj4gIGNvbmZp ZyBMSVZFUEFUQ0gKPiAgCWJvb2wgIkxpdmUgcGF0Y2hpbmcgc3VwcG9ydCAoVEVDSCBQUkVWSUVX KSIKPiAgCWRlZmF1bHQgbgo+IC0JZGVwZW5kcyBvbiBYODYgJiYgSEFTX0JVSUxEX0lEID0gInki Cj4gKwlkZXBlbmRzIG9uIChYODYgfHwgQVJNXzY0KSAmJiBIQVNfQlVJTERfSUQgPSAieSIKPiAg CS0tLWhlbHAtLS0KPiAgCSAgQWxsb3dzIGEgcnVubmluZyBYZW4gaHlwZXJ2aXNvciB0byBiZSBk eW5hbWljYWxseSBwYXRjaGVkIHVzaW5nCj4gIAkgIGJpbmFyeSBwYXRjaGVzIHdpdGhvdXQgcmVi b290aW5nLiBUaGlzIGlzIHByaW1hcmlseSB1c2VkIHRvIGJpbmFyaWx5Cj4gZGlmZiAtLWdpdCBh L3hlbi9jb21tb24vbGl2ZXBhdGNoLmMgYi94ZW4vY29tbW9uL2xpdmVwYXRjaC5jCj4gaW5kZXgg OWM0NTI3MC4uYWY5NDQzZCAxMDA2NDQKPiAtLS0gYS94ZW4vY29tbW9uL2xpdmVwYXRjaC5jCj4g KysrIGIveGVuL2NvbW1vbi9saXZlcGF0Y2guYwo+IEBAIC02ODIsNyArNjgyLDcgQEAgc3RhdGlj IGludCBwcmVwYXJlX3BheWxvYWQoc3RydWN0IHBheWxvYWQgKnBheWxvYWQsCj4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoKnJlZ2lvbi0+ZnJhbWVbaV0uYnVncyk7 Cj4gICAgICB9Cj4KPiAtI2lmbmRlZiBDT05GSUdfQVJNCj4gKyNpZm5kZWYgQ09ORklHX0FSTV8z MgoKSSB3b3VsZCBwcmVmZXIgaWYgeW91IHVzZSBDT05GSUdfQUxURVJOQVRJVkUgcmF0aGVyIHRo YW4gQ09ORklHX0FSTV8zMi4KCj4gICAgICBzZWMgPSBsaXZlcGF0Y2hfZWxmX3NlY19ieV9uYW1l KGVsZiwgIi5hbHRpbnN0cnVjdGlvbnMiKTsKPiAgICAgIGlmICggc2VjICkKPiAgICAgIHsKPiBA QCAtNzExLDkgKzcxMSwxNSBAQCBzdGF0aWMgaW50IHByZXBhcmVfcGF5bG9hZChzdHJ1Y3QgcGF5 bG9hZCAqcGF5bG9hZCwKPiAgICAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+ICAgICAg ICAgICAgICB9Cj4gICAgICAgICAgfQo+ICsjaWZuZGVmIENPTkZJR19BUk0KPiAgICAgICAgICBh cHBseV9hbHRlcm5hdGl2ZXNfbm9jaGVjayhzdGFydCwgZW5kKTsKPiArI2Vsc2UKPiArICAgICAg ICBhcHBseV9hbHRlcm5hdGl2ZXMoc3RhcnQsIHNlYy0+c2VjLT5zaF9zaXplKTsKPiArI2VuZGlm Cj4gICAgICB9Cj4gKyNlbmRpZgo+Cj4gKyNpZm5kZWYgQ09ORklHX0FSTQo+ICAgICAgc2VjID0g bGl2ZXBhdGNoX2VsZl9zZWNfYnlfbmFtZShlbGYsICIuZXhfdGFibGUiKTsKPiAgICAgIGlmICgg c2VjICkKPiAgICAgIHsKCkFueSByZWFzb24gdG8gbm90IG1vdmUgLmV4X3RhYmxlIGluIGFuIHg4 NiBzcGVjaWZpYyBmaWxlPyBPciBtYXliZSB3ZSAKc2hvdWxkIGRlZmluZSBhIG5ldyBjb25maWcg b3B0aW9uIEhBVkVfQVJDSF9FWF9UQUJMRSB0byBhdm9pZCAKYXJjaGl0ZWN0dXJlIHNwZWNpZmlj IGNoZWNrIGluIHRoZSBjb21tb24gY29kZS4KCj4gQEAgLTEwODMsMTIgKzEwODksMTcgQEAgc3Rh dGljIGludCBsaXZlcGF0Y2hfbGlzdCh4ZW5fc3lzY3RsX2xpdmVwYXRjaF9saXN0X3QgKmxpc3Qp Cj4gIHN0YXRpYyBpbnQgYXBwbHlfcGF5bG9hZChzdHJ1Y3QgcGF5bG9hZCAqZGF0YSkKPiAgewo+ ICAgICAgdW5zaWduZWQgaW50IGk7Cj4gKyAgICBpbnQgcmM7Cj4KPiAgICAgIHByaW50ayhYRU5M T0dfSU5GTyBMSVZFUEFUQ0ggIiVzOiBBcHBseWluZyAldSBmdW5jdGlvbnNcbiIsCj4gICAgICAg ICAgICAgIGRhdGEtPm5hbWUsIGRhdGEtPm5mdW5jcyk7Cj4KPiAtICAgIGFyY2hfbGl2ZXBhdGNo X3F1aWVzY2UoKTsKPiAtCj4gKyAgICByYyA9IGFyY2hfbGl2ZXBhdGNoX3F1aWVzY2UoKTsKPiAr ICAgIGlmICggcmMgKQo+ICsgICAgewo+ICsgICAgICAgIHByaW50ayhYRU5MT0dfRVJSIExJVkVQ QVRDSCAiJXM6IHVuYWJsZSB0byBxdWllc2NlIVxuIiwgZGF0YS0+bmFtZSk7Cj4gKyAgICAgICAg cmV0dXJuIHJjOwo+ICsgICAgfQo+ICAgICAgLyoKPiAgICAgICAqIFNpbmNlIHdlIGFyZSBydW5u aW5nIHdpdGggSVJRcyBkaXNhYmxlZCBhbmQgdGhlIGhvb2tzIG1heSBjYWxsIGNvbW1vbgo+ICAg ICAgICogY29kZSAtIHdoaWNoIGV4cGVjdHMgdGhlIHNwaW5sb2NrcyB0byBydW4gd2l0aCBJUlFz IGVuYWJsZWQgLSB3ZSB0ZW1wb3Jhcmx5Cj4gQEAgLTExMTksMTAgKzExMzAsMTYgQEAgc3RhdGlj IGludCBhcHBseV9wYXlsb2FkKHN0cnVjdCBwYXlsb2FkICpkYXRhKQo+ICBzdGF0aWMgaW50IHJl dmVydF9wYXlsb2FkKHN0cnVjdCBwYXlsb2FkICpkYXRhKQo+ICB7Cj4gICAgICB1bnNpZ25lZCBp bnQgaTsKPiArICAgIGludCByYzsKPgo+ICAgICAgcHJpbnRrKFhFTkxPR19JTkZPIExJVkVQQVRD SCAiJXM6IFJldmVydGluZ1xuIiwgZGF0YS0+bmFtZSk7Cj4KPiAtICAgIGFyY2hfbGl2ZXBhdGNo X3F1aWVzY2UoKTsKPiArICAgIHJjID0gYXJjaF9saXZlcGF0Y2hfcXVpZXNjZSgpOwo+ICsgICAg aWYgKCByYyApCj4gKyAgICB7Cj4gKyAgICAgICAgcHJpbnRrKFhFTkxPR19FUlIgTElWRVBBVENI ICIlczogdW5hYmxlIHRvIHF1aWVzY2UhXG4iLCBkYXRhLT5uYW1lKTsKPiArICAgICAgICByZXR1 cm4gcmM7Cj4gKyAgICB9Cj4KPiAgICAgIGZvciAoIGkgPSAwOyBpIDwgZGF0YS0+bmZ1bmNzOyBp KysgKQo+ICAgICAgICAgIGFyY2hfbGl2ZXBhdGNoX3JldmVydF9qbXAoJmRhdGEtPmZ1bmNzW2ld KTsKPiBkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLWFybS9jb25maWcuaCBiL3hlbi9pbmNs dWRlL2FzbS1hcm0vY29uZmlnLmgKPiBpbmRleCBhOTZmODQ1Li44ZDg3NmY2IDEwMDY0NAo+IC0t LSBhL3hlbi9pbmNsdWRlL2FzbS1hcm0vY29uZmlnLmgKPiArKysgYi94ZW4vaW5jbHVkZS9hc20t YXJtL2NvbmZpZy5oCj4gQEAgLTgwLDkgKzgwLDEwIEBACj4gICAqICAgNE0gLSAgIDZNICAgRml4 bWFwOiBzcGVjaWFsLXB1cnBvc2UgNEsgbWFwcGluZyBzbG90cwo+ICAgKiAgIDZNIC0gICA4TSAg IEVhcmx5IGJvb3QgbWFwcGluZyBvZiBGRFQKPiAgICogICA4TSAtICAxME0gICBFYXJseSByZWxv Y2F0aW9uIGFkZHJlc3MgKHVzZWQgd2hlbiByZWxvY2F0aW5nIFhlbikKPiArICogICAgICAgICAg ICAgICBhbmQgbGF0ZXIgZm9yIGxpdmVwYXRjaCB2bWFwIChpZiBjb21waWxlZCBpbikKPiAgICoK PiAgICogQVJNMzIgbGF5b3V0Ogo+IC0gKiAgIDAgIC0gICA4TSAgIDxDT01NT04+Cj4gKyAqICAg MCAgLSAgMTBNICAgPENPTU1PTj4KCk1heSBJIGFzayB0byBoYXZlIHRoaXMgY2hhbmdlIGFuZCAu Li4KCj4gICAqCj4gICAqICAzMk0gLSAxMjhNICAgRnJhbWV0YWJsZTogMjQgYnl0ZXMgcGVyIHBh Z2UgZm9yIDE2R0Igb2YgUkFNCj4gICAqIDI1Nk0gLSAgIDFHICAgVk1BUDogaW9yZW1hcCBhbmQg ZWFybHlfaW9yZW1hcCB1c2UgdGhpcyB2aXJ0dWFsIGFkZHJlc3MKPiBAQCAtOTMsNyArOTQsNyBA QAo+ICAgKgo+ICAgKiBBUk02NCBsYXlvdXQ6Cj4gICAqIDB4MDAwMDAwMDAwMDAwMDAwMCAtIDB4 MDAwMDAwN2ZmZmZmZmZmZiAoNTEyR0IsIEwwIHNsb3QgWzBdKQo+IC0gKiAgIDAgIC0gICA4TSAg IDxDT01NT04+Cj4gKyAqICAgMCAgLSAgMTBNICAgPENPTU1PTj4KCnRoaXMgY2hhbmdlIGluIGEg c2VwYXJhdGUgcGF0Y2ggdG8ga2VlcCB0aGlzIHBhdGNoIGxpdmVwYXRjaCBvbmx5PwoKPiAgICoK PiAgICogICAxRyAtICAgMkcgICBWTUFQOiBpb3JlbWFwIGFuZCBlYXJseV9pb3JlbWFwCj4gICAq Cj4gQEAgLTExMyw2ICsxMTQsOSBAQAo+ICAjZGVmaW5lIEZJWE1BUF9BRERSKG4pICAgICAgICAo X0FUKHZhZGRyX3QsMHgwMDQwMDAwMCkgKyAobikgKiBQQUdFX1NJWkUpCj4gICNkZWZpbmUgQk9P VF9GRFRfVklSVF9TVEFSVCAgICBfQVQodmFkZHJfdCwweDAwNjAwMDAwKQo+ICAjZGVmaW5lIEJP T1RfUkVMT0NfVklSVF9TVEFSVCAgX0FUKHZhZGRyX3QsMHgwMDgwMDAwMCkKPiArI2lmZGVmIENP TkZJR19MSVZFUEFUQ0gKPiArI2RlZmluZSBMSVZFUEFUQ0hfVk1BUCAgICAgICAgIF9BVCh2YWRk cl90LDB4MDA4MDAwMDApCj4gKyNlbmRpZgo+Cj4gICNkZWZpbmUgSFlQRVJWSVNPUl9WSVJUX1NU QVJUICBYRU5fVklSVF9TVEFSVAo+Cj4gZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS1hcm0v Y3VycmVudC5oIGIveGVuL2luY2x1ZGUvYXNtLWFybS9jdXJyZW50LmgKPiBpbmRleCA2NWMwY2Rm Li5mNGZjZmQ2IDEwMDY0NAo+IC0tLSBhL3hlbi9pbmNsdWRlL2FzbS1hcm0vY3VycmVudC5oCj4g KysrIGIveGVuL2luY2x1ZGUvYXNtLWFybS9jdXJyZW50LmgKPiBAQCAtMzMsOCArMzMsMTUgQEAg c3RhdGljIGlubGluZSBzdHJ1Y3QgY3B1X2luZm8gKmdldF9jcHVfaW5mbyh2b2lkKQo+Cj4gICNk ZWZpbmUgZ3Vlc3RfY3B1X3VzZXJfcmVncygpICgmZ2V0X2NwdV9pbmZvKCktPmd1ZXN0X2NwdV91 c2VyX3JlZ3MpCj4KPiArI2lmZGVmIENPTkZJR19MSVZFUEFUQ0gKPiArI2RlZmluZSBzd2l0Y2hf c3RhY2tfYW5kX2p1bXAoc3RhY2ssIGZuKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAo+ICsgICAgYXNtIHZvbGF0aWxlICgibW92IHNwLCUwOyIgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAgICAgICAgICAgICJibCBjaGVja19mb3Jf bGl2ZXBhdGNoX3dvcms7IiAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICAgICAg ICAgICAgImIgIiBTVFIoZm4pIDogOiAiciIgKHN0YWNrKSA6ICJtZW1vcnkiICkKPiArI2Vsc2UK PiAgI2RlZmluZSBzd2l0Y2hfc3RhY2tfYW5kX2p1bXAoc3RhY2ssIGZuKSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXAo+ICAgICAgYXNtIHZvbGF0aWxlICgibW92IHNwLCUwOyBiICIg U1RSKGZuKSA6IDogInIiIChzdGFjaykgOiAibWVtb3J5IiApCj4gKyNlbmRpZgoKSSBoYXZlIGNv bW1lbnRlZCBvbiB0aGUgcHJldmlvdXMgdmVyc2lvbiBhYm91dCBzd2l0Y2hfc3RhY2tfYW5kX2p1 bXAgYSAKd2hpbGUgYWZ0ZXIgeW91IHNlbmQgdGhpcyBzZXJpZXMuIFNvIEkgd2lsbCBzcGFyZSB5 b3UgbmV3IGNvbW1lbnRzIGhlcmUgOikuCgo+ICAjZGVmaW5lIHJlc2V0X3N0YWNrX2FuZF9qdW1w KGZuKSBzd2l0Y2hfc3RhY2tfYW5kX2p1bXAoZ2V0X2NwdV9pbmZvKCksIGZuKQo+CgpbLi4uXQoK PiBkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUveGVuL2xpdmVwYXRjaC5oIGIveGVuL2luY2x1ZGUv eGVuL2xpdmVwYXRjaC5oCj4gaW5kZXggMmU2NDY4Ni4uNmYzMGMwZCAxMDA2NDQKPiAtLS0gYS94 ZW4vaW5jbHVkZS94ZW4vbGl2ZXBhdGNoLmgKPiArKysgYi94ZW4vaW5jbHVkZS94ZW4vbGl2ZXBh dGNoLmgKPiBAQCAtNzIsNyArNzIsNyBAQCBpbnQgYXJjaF9saXZlcGF0Y2hfdmVyaWZ5X2Z1bmMo Y29uc3Qgc3RydWN0IGxpdmVwYXRjaF9mdW5jICpmdW5jKTsKPiAgICogVGhlc2UgZnVuY3Rpb25z IGFyZSBjYWxsZWQgYXJvdW5kIHRoZSBjcml0aWNhbCByZWdpb24gcGF0Y2hpbmcgbGl2ZSBjb2Rl LAo+ICAgKiBmb3IgYW4gYXJjaGl0ZWN0dXJlIHRvIHRha2UgbWFrZSBhcHByb3ByYXRpZSBnbG9i YWwgc3RhdGUgYWRqdXN0bWVudHMuCj4gICAqLwo+IC12b2lkIGFyY2hfbGl2ZXBhdGNoX3F1aWVz Y2Uodm9pZCk7Cj4gK2ludCBhcmNoX2xpdmVwYXRjaF9xdWllc2NlKHZvaWQpOwo+ICB2b2lkIGFy Y2hfbGl2ZXBhdGNoX3Jldml2ZSh2b2lkKTsKPgo+ICB2b2lkIGFyY2hfbGl2ZXBhdGNoX2FwcGx5 X2ptcChzdHJ1Y3QgbGl2ZXBhdGNoX2Z1bmMgKmZ1bmMpOwo+CgpbMV0gCmh0dHBzOi8vbGlzdHMu eGVucHJvamVjdC5vcmcvYXJjaGl2ZXMvaHRtbC94ZW4tZGV2ZWwvMjAxNi0wOC9tc2cwMTgzMi5o dG1sCgotLSAKSnVsaWVuIEdyYWxsCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4u b3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK