From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from mx1.redhat.com ([209.132.183.28]) by bombadil.infradead.org with esmtps (Exim 4.92 #3 (Red Hat Linux)) id 1i14Sl-00074C-Ko for kexec@lists.infradead.org; Fri, 23 Aug 2019 07:58:26 +0000 Subject: Re: [PATCH 1/2] cleanup: move it back from util_lib/elf_info.c From: lijiang References: <20190815033756.15587-1-lijiang@redhat.com> <20190815033756.15587-2-lijiang@redhat.com> <20190822085105.yta4wozkfupvp2y3@verge.net.au> <84c25ea7-efe5-75fa-08d0-df68389c787b@redhat.com> Message-ID: <18beac3e-705a-bdac-924f-08d54092ef1d@redhat.com> Date: Fri, 23 Aug 2019 15:58:10 +0800 MIME-Version: 1.0 In-Reply-To: <84c25ea7-efe5-75fa-08d0-df68389c787b@redhat.com> Content-Language: en-US List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "kexec" Errors-To: kexec-bounces+dwmw2=infradead.org@lists.infradead.org To: Simon Horman Cc: kasong@redhat.com, piliu@redhat.com, bhsharma@redhat.com, kexec@lists.infradead.org, junw99@yahoo.com, bhe@redhat.com, dyoung@redhat.com 5ZyoIDIwMTnlubQwOOaciDIz5pelIDEzOjI0LCBsaWppYW5nIOWGmemBkzoKPiDlnKggMjAxOeW5 tDA45pyIMjLml6UgMTY6NTEsIFNpbW9uIEhvcm1hbiDlhpnpgZM6Cj4+IEhpIExpYW5ibywKPj4K Pj4gSSBsaWtlIHdoZXJlIHRoaXMgcGF0Y2ggaXMgZ29pbmcgYnV0IEkgd291bGQgbGlrZSB0byBy ZXF1ZXN0IGEgZmV3IGNoYW5nZXMuCj4+IFBsZWFzZSBzZWUgY29tbWVudHMgaW5saW5lLgo+Pgo+ IAo+IFRoYW5rcyBmb3IgeW91ciBjb21tZW50LCBTaW1vbi4KPiAKPj4gT24gVGh1LCBBdWcgMTUs IDIwMTkgYXQgMTE6Mzc6NTVBTSArMDgwMCwgTGlhbmJvIEppYW5nIHdyb3RlOgo+Pj4gU29tZSBj b2RlIHJlbGF0ZWQgdG8gdm1jb3JlLWRtZXNnLmMgaXMgcHV0IGludG8gdGhlIHV0aWxfbGliLCB3 aGljaAo+Pj4gaXMgbm90IHZlcnkgcmVhc29uYWJsZSwgc28gbGV0cyBtb3ZlIGl0IGJhY2sgYW5k IHRpZHkgdXAgdGhvc2UgY29kZS4KPj4+Cj4+PiBJbiBhZGRpdGlvbiwgdGhhdCB3aWxsIGFsc28g aGVscCB0byBsaW1pdCB0aGUgc2l6ZSBvZiB2bWNvcmUtZG1lc2cudHh0Lgo+Pj4KPj4+IFNpZ25l ZC1vZmYtYnk6IExpYW5ibyBKaWFuZyA8bGlqaWFuZ0ByZWRoYXQuY29tPgo+Pj4gLS0tCj4+PiAg a2V4ZWMvYXJjaC9hcm02NC9rZXhlYy1hcm02NC5jIHwgIDIgKy0KPj4+ICB1dGlsX2xpYi9lbGZf aW5mby5jICAgICAgICAgICAgfCA3MyArKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Cj4+PiAgdXRpbF9saWIvaW5jbHVkZS9lbGZfaW5mby5oICAgIHwgIDggKysrLQo+Pj4gIHZtY29y ZS1kbWVzZy92bWNvcmUtZG1lc2cuYyAgICB8IDQ0ICsrKysrKysrKysrKysrKysrLS0tCj4+PiAg NCBmaWxlcyBjaGFuZ2VkLCA2MSBpbnNlcnRpb25zKCspLCA2NiBkZWxldGlvbnMoLSkKPj4+Cj4+ PiBkaWZmIC0tZ2l0IGEva2V4ZWMvYXJjaC9hcm02NC9rZXhlYy1hcm02NC5jIGIva2V4ZWMvYXJj aC9hcm02NC9rZXhlYy1hcm02NC5jCj4+PiBpbmRleCBlYjNhM2EzNzMwN2MuLjZhZDNiMGExMzRi MyAxMDA2NDQKPj4+IC0tLSBhL2tleGVjL2FyY2gvYXJtNjQva2V4ZWMtYXJtNjQuYwo+Pj4gKysr IGIva2V4ZWMvYXJjaC9hcm02NC9rZXhlYy1hcm02NC5jCj4+PiBAQCAtODg5LDcgKzg4OSw3IEBA IGludCBnZXRfcGh5c19iYXNlX2Zyb21fcHRfbG9hZCh1bnNpZ25lZCBsb25nICpwaHlzX29mZnNl dCkKPj4+ICAJCXJldHVybiBFRkFJTEVEOwo+Pj4gIAl9Cj4+PiAgCj4+PiAtCXJlYWRfZWxmX2tj b3JlKGZkKTsKPj4+ICsJcmVhZF9lbGYoZmQpOwo+Pj4gIAo+Pj4gIAlmb3IgKGkgPSAwOyBnZXRf cHRfbG9hZChpLAo+Pj4gIAkJICAgICZwaHlzX3N0YXJ0LCBOVUxMLCAmdmlydF9zdGFydCwgTlVM TCk7Cj4+PiBkaWZmIC0tZ2l0IGEvdXRpbF9saWIvZWxmX2luZm8uYyBiL3V0aWxfbGliL2VsZl9p bmZvLmMKPj4+IGluZGV4IDkwYTNiMjE2NjJlNy4uMmYyNTRlOTcyNzIxIDEwMDY0NAo+Pj4gLS0t IGEvdXRpbF9saWIvZWxmX2luZm8uYwo+Pj4gKysrIGIvdXRpbF9saWIvZWxmX2luZm8uYwo+Pj4g QEAgLTIwLDcgKzIwLDYgQEAKPj4+ICAvKiBUaGUgMzJiaXQgYW5kIDY0Yml0IG5vdGUgaGVhZGVy cyBtYWtlIGl0IGNsZWFyIHdlIGRvbid0IGNhcmUgKi8KPj4+ICB0eXBlZGVmIEVsZjMyX05oZHIg RWxmX05oZHI7Cj4+PiAgCj4+PiAtc3RhdGljIGNvbnN0IGNoYXIgKmZuYW1lOwo+Pj4gIHN0YXRp YyBFbGY2NF9FaGRyIGVoZHI7Cj4+PiAgc3RhdGljIEVsZjY0X1BoZHIgKnBoZHI7Cj4+PiAgc3Rh dGljIGludCBudW1fcHRfbG9hZHM7Cj4+PiBAQCAtMTIwLDggKzExOSw4IEBAIHZvaWQgcmVhZF9l bGYzMihpbnQgZmQpCj4+PiAgCj4+PiAgCXJldCA9IHByZWFkKGZkLCAmZWhkcjMyLCBzaXplb2Yo ZWhkcjMyKSwgMCk7Cj4+PiAgCWlmIChyZXQgIT0gc2l6ZW9mKGVoZHIzMikpIHsKPj4+IC0JCWZw cmludGYoc3RkZXJyLCAiUmVhZCBvZiBFbGYgaGVhZGVyIGZyb20gJXMgZmFpbGVkOiAlc1xuIiwK Pj4+IC0JCQlmbmFtZSwgc3RyZXJyb3IoZXJybm8pKTsKPj4+ICsJCWZwcmludGYoc3RkZXJyLCAi UmVhZCBvZiBFbGYgaGVhZGVyIGZhaWxlZCBpbiAlczogJXNcbiIsCj4+PiArCQkJCV9fZnVuY19f LCBzdHJlcnJvcihlcnJubykpOwo+Pgo+PiBJJ20gbm90IHN1cmUgb2YgdGhlIG1lcml0IG9mIGNo YW5naW5nIHRoZSBsb2dpbmcgb3V0cHV0Lgo+IAo+IFRoZSB2YXJpYWJsZSAnZm5hbWUnIGlzIGRl ZmluZWQgdHdvIHR3aWNlLCB0aGUgZmlyc3QgZGVmaW5pdGlvbiBpcyBpbiB0aGUgdm1jb3JlLWRt ZXNnLmMsIGFuZCB0aGUKPiBzZWNvbmQgZGVmaW5pdGlvbiBpcyBpbiB0aGUgZWxmX2luZm8uYy4g VGhhdCBpcyBjb25mdXNlZCBhbHRob3VnaCBpdCdzIGEgc3RhdGljIHR5cGUsIGJlY2F1c2UgaSBk bwo+IG5vdCBzZWUgdGhlIHBsYWNlIHdoZXJlIHRoZSB2YWx1ZSBvZiB2YXJpYWJsZSAnZm5hbWUn IGlzIHNldCBpbiBlbGZfaW5mby5jLiBTbyBpIGd1ZXNzIHRoYXQgaXQgc2hvdWxkCj4gYmUgYSBz YW1lIHZhcmlhYmxlIHdpdGhpbiB0aGUgdm1jb3JlLWRtZXNnLmMgYW5kIGFsc28gbmVlZCB0byBj bGVhbiB1cC4KPiAKQlRXOiBpIGd1ZXNzIHRoZSBvcmlnaW5hbCBkZWZpbml0aW9uIG9mICdmbmFt ZScgc2hvdWxkIGxvb2sgbGlrZSB0aGlzOgoKZGlmZiAtLWdpdCBhL3V0aWxfbGliL2VsZl9pbmZv LmMgYi91dGlsX2xpYi9lbGZfaW5mby5jCmluZGV4IGQ5Mzk3ZWNkODYyNi4uNWQwZWZhYWZhYjUz IDEwMDY0NAotLS0gYS91dGlsX2xpYi9lbGZfaW5mby5jCisrKyBiL3V0aWxfbGliL2VsZl9pbmZv LmMKQEAgLTIwLDcgKzIwLDcgQEAKIC8qIFRoZSAzMmJpdCBhbmQgNjRiaXQgbm90ZSBoZWFkZXJz IG1ha2UgaXQgY2xlYXIgd2UgZG9uJ3QgY2FyZSAqLwogdHlwZWRlZiBFbGYzMl9OaGRyIEVsZl9O aGRyOwogCi1zdGF0aWMgY29uc3QgY2hhciAqZm5hbWU7Citjb25zdCBjaGFyICpmbmFtZTsKIHN0 YXRpYyBFbGY2NF9FaGRyIGVoZHI7CiBzdGF0aWMgRWxmNjRfUGhkciAqcGhkcjsKIHN0YXRpYyBp bnQgbnVtX3B0X2xvYWRzOwpkaWZmIC0tZ2l0IGEvdm1jb3JlLWRtZXNnL3ZtY29yZS1kbWVzZy5j IGIvdm1jb3JlLWRtZXNnL3ZtY29yZS1kbWVzZy5jCmluZGV4IDdhMzg2YjM4MDI5MS4uYmViYzM0 OGE2NTdlIDEwMDY0NAotLS0gYS92bWNvcmUtZG1lc2cvdm1jb3JlLWRtZXNnLmMKKysrIGIvdm1j b3JlLWRtZXNnL3ZtY29yZS1kbWVzZy5jCkBAIC0zLDcgKzMsNyBAQAogLyogVGhlIDMyYml0IGFu ZCA2NGJpdCBub3RlIGhlYWRlcnMgbWFrZSBpdCBjbGVhciB3ZSBkb24ndCBjYXJlICovCiB0eXBl ZGVmIEVsZjMyX05oZHIgRWxmX05oZHI7CiAKLXN0YXRpYyBjb25zdCBjaGFyICpmbmFtZTsKK2V4 dGVybiBjb25zdCBjaGFyICpmbmFtZTsKIAogaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2 KQogewoKPj4gQW5kIG1vcmVvdmVyIEkgZG9uJ3QgdGhpbmsgaXQgYmVsb25ncyBpbiB0aGlzIHBh dGNoCj4+IGFzIGl0IGRvZXNuJ3Qgc2VlbSByZWxhdGVkIHRvIHRoZSBvdGhlciBjaGFuZ2VzLgo+ Pgo+IAo+IEdvb2QgcXVlc3Rpb24uIEkgd2lsbCBjb25zaWRlciBob3cgdG8gY2xlYW4gdXAuIFBy b2JhYmx5LCBpdCBzaG91bGQgYmUgYSBzZXBhcmF0ZSBwYXRjaC4KPiAKPj4+ICAJCWV4aXQoMTAp Owo+Pj4gIAl9Cj4+PiAgCj4+PiBAQCAtMTkzLDggKzE5Miw4IEBAIHZvaWQgcmVhZF9lbGY2NChp bnQgZmQpCj4+PiAgCj4+PiAgCXJldCA9IHByZWFkKGZkLCAmZWhkcjY0LCBzaXplb2YoZWhkcjY0 KSwgMCk7Cj4+PiAgCWlmIChyZXQgPCAwIHx8IChzaXplX3QpcmV0ICE9IHNpemVvZihlaGRyKSkg ewo+Pj4gLQkJZnByaW50ZihzdGRlcnIsICJSZWFkIG9mIEVsZiBoZWFkZXIgZnJvbSAlcyBmYWls ZWQ6ICVzXG4iLAo+Pj4gLQkJCWZuYW1lLCBzdHJlcnJvcihlcnJubykpOwo+Pj4gKwkJZnByaW50 ZihzdGRlcnIsICJSZWFkIG9mIEVsZiBoZWFkZXIgZmFpbGVkIGluICVzOiAlc1xuIiwKPj4+ICsJ CQkJX19mdW5jX18sIHN0cmVycm9yKGVycm5vKSk7Cj4+PiAgCQlleGl0KDEwKTsKPj4+ICAJfQo+ Pj4gIAo+Pj4gQEAgLTUzMSwxOSArNTMwLDcgQEAgc3RhdGljIGludDMyX3QgcmVhZF9maWxlX3Mz MihpbnQgZmQsIHVpbnQ2NF90IGFkZHIpCj4+PiAgCXJldHVybiByZWFkX2ZpbGVfdTMyKGZkLCBh ZGRyKTsKPj4+ICB9Cj4+PiAgCj4+PiAtc3RhdGljIHZvaWQgd3JpdGVfdG9fc3Rkb3V0KGNoYXIg KmJ1ZiwgdW5zaWduZWQgaW50IG5yKQo+Pj4gLXsKPj4+IC0Jc3NpemVfdCByZXQ7Cj4+PiAtCj4+ PiAtCXJldCA9IHdyaXRlKFNURE9VVF9GSUxFTk8sIGJ1ZiwgbnIpOwo+Pj4gLQlpZiAocmV0ICE9 IG5yKSB7Cj4+PiAtCQlmcHJpbnRmKHN0ZGVyciwgIkZhaWxlZCB0byB3cml0ZSBvdXQgdGhlIGRt ZXNnIGxvZyBidWZmZXIhOiIKPj4+IC0JCQkiICVzXG4iLCBzdHJlcnJvcihlcnJubykpOwo+Pj4g LQkJZXhpdCg1NCk7Cj4+PiAtCX0KPj4+IC19Cj4+PiAtCj4+PiAtc3RhdGljIHZvaWQgZHVtcF9k bWVzZ19sZWdhY3koaW50IGZkKQo+Pj4gK3ZvaWQgZHVtcF9kbWVzZ19sZWdhY3koaW50IGZkLCBo YW5kbGVyX3QgaGFuZGxlcikKPj4+ICB7Cj4+PiAgCXVpbnQ2NF90IGxvZ19idWYsIGxvZ19idWZf b2Zmc2V0Owo+Pj4gIAl1bnNpZ25lZCBsb2dfZW5kLCBsb2dnZWRfY2hhcnMsIGxvZ19lbmRfd3Jh cHBlZDsKPj4+IEBAIC02MDQsNyArNTkxLDcgQEAgc3RhdGljIHZvaWQgZHVtcF9kbWVzZ19sZWdh Y3koaW50IGZkKQo+Pj4gIAkgKi8KPj4+ICAJbG9nZ2VkX2NoYXJzID0gbG9nX2VuZCA8IGxvZ19i dWZfbGVuID8gbG9nX2VuZCA6IGxvZ19idWZfbGVuOwo+Pj4gIAo+Pj4gLQl3cml0ZV90b19zdGRv dXQoYnVmICsgKGxvZ19idWZfbGVuIC0gbG9nZ2VkX2NoYXJzKSwgbG9nZ2VkX2NoYXJzKTsKPj4+ ICsJaGFuZGxlcihidWYgKyAobG9nX2J1Zl9sZW4gLSBsb2dnZWRfY2hhcnMpLCBsb2dnZWRfY2hh cnMpOwo+Pj4gIH0KPj4+ICAKPj4+ICBzdGF0aWMgaW5saW5lIHVpbnQxNl90IHN0cnVjdF92YWxf dTE2KGNoYXIgKnB0ciwgdW5zaWduZWQgaW50IG9mZnNldCkKPj4+IEBAIC02MjMsNyArNjEwLDcg QEAgc3RhdGljIGlubGluZSB1aW50NjRfdCBzdHJ1Y3RfdmFsX3U2NChjaGFyICpwdHIsIHVuc2ln bmVkIGludCBvZmZzZXQpCj4+PiAgfQo+Pj4gIAo+Pj4gIC8qIFJlYWQgaGVhZGVycyBvZiBsb2cg cmVjb3JkcyBhbmQgZHVtcCBhY2NvcmRpbmdseSAqLwo+Pj4gLXN0YXRpYyB2b2lkIGR1bXBfZG1l c2dfc3RydWN0dXJlZChpbnQgZmQpCj4+PiArdm9pZCBkdW1wX2RtZXNnX3N0cnVjdHVyZWQoaW50 IGZkLCBoYW5kbGVyX3QgaGFuZGxlcikKPj4+ICB7Cj4+PiAgI2RlZmluZSBPVVRfQlVGX1NJWkUJ NDA5Ngo+Pj4gIAl1aW50NjRfdCBsb2dfYnVmLCBsb2dfYnVmX29mZnNldCwgdHNfbnNlYzsKPj4+ IEBAIC03MzMsNyArNzIwLDcgQEAgc3RhdGljIHZvaWQgZHVtcF9kbWVzZ19zdHJ1Y3R1cmVkKGlu dCBmZCkKPj4+ICAJCQkJb3V0X2J1ZltsZW4rK10gPSBjOwo+Pj4gIAo+Pj4gIAkJCWlmIChsZW4g Pj0gT1VUX0JVRl9TSVpFIC0gNjQpIHsKPj4+IC0JCQkJd3JpdGVfdG9fc3Rkb3V0KG91dF9idWYs IGxlbik7Cj4+PiArCQkJCWhhbmRsZXIob3V0X2J1ZiwgbGVuKTsKPj4+ICAJCQkJbGVuID0gMDsK Pj4+ICAJCQl9Cj4+PiAgCQl9Cj4+PiBAQCAtNzUzLDI1ICs3NDAsMjQgQEAgc3RhdGljIHZvaWQg ZHVtcF9kbWVzZ19zdHJ1Y3R1cmVkKGludCBmZCkKPj4+ICAJfQo+Pj4gIAlmcmVlKGJ1Zik7Cj4+ PiAgCWlmIChsZW4pCj4+PiAtCQl3cml0ZV90b19zdGRvdXQob3V0X2J1ZiwgbGVuKTsKPj4+ICsJ CWhhbmRsZXIob3V0X2J1ZiwgbGVuKTsKPj4+ICB9Cj4+PiAgCj4+PiAtc3RhdGljIHZvaWQgZHVt cF9kbWVzZyhpbnQgZmQpCj4+PiAraW50IGNoZWNrX2xvZ19maXJzdF9pZHhfdmFkZHIodm9pZCkK Pj4+ICB7Cj4+PiAgCWlmIChsb2dfZmlyc3RfaWR4X3ZhZGRyKQo+Pj4gLQkJZHVtcF9kbWVzZ19z dHJ1Y3R1cmVkKGZkKTsKPj4+IC0JZWxzZQo+Pj4gLQkJZHVtcF9kbWVzZ19sZWdhY3koZmQpOwo+ Pj4gKwkJcmV0dXJuIDE7Cj4+PiArCj4+PiArCXJldHVybiAwOwo+Pj4gIH0KPj4+ICAKPj4+IC1z dGF0aWMgaW50IHJlYWRfZWxmKGludCBmZCkKPj4+ICtpbnQgcmVhZF9lbGYoaW50IGZkKQo+Pj4g IHsKPj4+ICAJaW50IHJldDsKPj4+ICAKPj4+ICAJcmV0ID0gcHJlYWQoZmQsIGVoZHIuZV9pZGVu dCwgRUlfTklERU5ULCAwKTsKPj4+ICAJaWYgKHJldCAhPSBFSV9OSURFTlQpIHsKPj4+IC0JCWZw cmludGYoc3RkZXJyLCAiUmVhZCBvZiBlX2lkZW50IGZyb20gJXMgZmFpbGVkOiAlc1xuIiwKPj4+ IC0JCQlmbmFtZSwgc3RyZXJyb3IoZXJybm8pKTsKPj4+ICsJCWZwcmludGYoc3RkZXJyLCAiUmVh ZCBvZiBlX2lkZW50IGZhaWxlZDogJXNcbiIsIHN0cmVycm9yKGVycm5vKSk7Cj4+PiAgCQlyZXR1 cm4gMzsKPj4+ICAJfQo+Pj4gIAlpZiAobWVtY21wKGVoZHIuZV9pZGVudCwgRUxGTUFHLCBTRUxG TUFHKSAhPSAwKSB7Cj4+PiBAQCAtODA4LDQwICs3OTQsMTMgQEAgc3RhdGljIGludCByZWFkX2Vs ZihpbnQgZmQpCj4+PiAgCXJldHVybiAwOwo+Pj4gIH0KPj4+ICAKPj4+IC1pbnQgcmVhZF9lbGZf dm1jb3JlKGludCBmZCkKPj4+IC17Cj4+PiAtCWludCByZXQ7Cj4+PiAtCj4+PiAtCXJldCA9IHJl YWRfZWxmKGZkKTsKPj4+IC0JaWYgKHJldCA+IDApIHsKPj4+IC0JCWZwcmludGYoc3RkZXJyLCAi VW5hYmxlIHRvIHJlYWQgRUxGIGluZm9ybWF0aW9uIgo+Pj4gLQkJCSIgZnJvbSB2bWNvcmVcbiIp Owo+Pj4gLQkJcmV0dXJuIHJldDsKPj4+IC0JfQo+Pj4gLQo+Pj4gLQlkdW1wX2RtZXNnKGZkKTsK Pj4+IC0KPj4+IC0JcmV0dXJuIDA7Cj4+PiAtfQo+Pj4gLQo+Pj4gLWludCByZWFkX2VsZl9rY29y ZShpbnQgZmQpCj4+PiAtewo+Pj4gLQlpbnQgcmV0Owo+Pj4gLQo+Pj4gLQlyZXQgPSByZWFkX2Vs ZihmZCk7Cj4+PiAtCWlmIChyZXQgIT0gMCkKPj4+IC0JCXJldHVybiByZXQ7Cj4+PiAtCj4+PiAt CXJldHVybiAwOwo+Pj4gLX0KPj4KPj4gSSB0aGluayB0aGF0IHJlbW92aW5nIHJlYWRfZWxmX2tj b3JlIGlzIG5vdCByZWxhdGVkIHRvIHRoZSByZXN0IG9mIHRoaXMKPj4gcGF0Y2ggYW5kIHNob3Vs ZCBiZSBpbiBhIHNlcGFyYXRlIHBhdGNoIC0gaXQgaXMgYSBuaWNlIGNsZWFudXAuCj4+Cj4gR29v ZCBpZGVhLCBpIHdpbGwgc3BsaXQgdGhlbSBpbnRvIGEgc2VwYXJhdGUgcGF0Y2guCj4gCj4+PiAt Cj4+PiAgaW50IHJlYWRfcGh5c19vZmZzZXRfZWxmX2tjb3JlKGludCBmZCwgdW5zaWduZWQgbG9u ZyAqcGh5c19vZmYpCj4+PiAgewo+Pj4gIAlpbnQgcmV0Owo+Pj4gIAo+Pj4gIAkqcGh5c19vZmYg PSBVSU5UNjRfTUFYOwo+Pj4gIAo+Pj4gLQlyZXQgPSByZWFkX2VsZl9rY29yZShmZCk7Cj4+PiAr CXJldCA9IHJlYWRfZWxmKGZkKTsKPj4+ICAJaWYgKCFyZXQpIHsKPj4+ICAJCS8qIElmIHdlIGhh dmUgYSB2YWxpZCAnUEhZU19PRkZTRVQnIGJ5IG5vdywKPj4+ICAJCSAqIHJldHVybiBpdCB0byB0 aGUgY2FsbGVyIG5vdy4KPj4+IGRpZmYgLS1naXQgYS91dGlsX2xpYi9pbmNsdWRlL2VsZl9pbmZv LmggYi91dGlsX2xpYi9pbmNsdWRlL2VsZl9pbmZvLmgKPj4+IGluZGV4IDFhNGRlYmQyZDRiYS4u OGVlN2QzZTI3NjNmIDEwMDY0NAo+Pj4gLS0tIGEvdXRpbF9saWIvaW5jbHVkZS9lbGZfaW5mby5o Cj4+PiArKysgYi91dGlsX2xpYi9pbmNsdWRlL2VsZl9pbmZvLmgKPj4+IEBAIC0yMywxMyArMjMs MTcgQEAKPj4+ICAjaW5jbHVkZSA8aW50dHlwZXMuaD4KPj4+ICAjaW5jbHVkZSA8Y3R5cGUuaD4K Pj4+ICAKPj4+ICt0eXBlZGVmIHZvaWQgKCpoYW5kbGVyX3QpKGNoYXIgKm1zZywgdW5zaWduZWQg aW50IGJ5dGVzKTsKPj4KPj4gSSB3b3VsZCBwcmVmZXIgaXQgaWYgd2UgZGlkIG5vdCBhZGQgbmV3 IHR5cGVkZWZzLgo+Pgo+IAo+IE9LLiBJJ20gY29uc2lkZXJpbmcgaG93IHRvIGhhbmRsZSBpdC4g QW55IHN1Z2dlc3Rpb25zPwo+IAo+Pj4gKwo+Pj4gIGludCBnZXRfcHRfbG9hZChpbnQgaWR4LAo+ Pj4gIAl1bnNpZ25lZCBsb25nIGxvbmcgKnBoeXNfc3RhcnQsCj4+PiAgCXVuc2lnbmVkIGxvbmcg bG9uZyAqcGh5c19lbmQsCj4+PiAgCXVuc2lnbmVkIGxvbmcgbG9uZyAqdmlydF9zdGFydCwKPj4+ ICAJdW5zaWduZWQgbG9uZyBsb25nICp2aXJ0X2VuZCk7Cj4+PiAgaW50IHJlYWRfcGh5c19vZmZz ZXRfZWxmX2tjb3JlKGludCBmZCwgdW5zaWduZWQgbG9uZyAqcGh5c19vZmYpOwo+Pj4gLWludCBy ZWFkX2VsZl9rY29yZShpbnQgZmQpOwo+Pj4gLWludCByZWFkX2VsZl92bWNvcmUoaW50IGZkKTsK Pj4+ICtpbnQgY2hlY2tfbG9nX2ZpcnN0X2lkeF92YWRkcih2b2lkKTsKPj4+ICt2b2lkIGR1bXBf ZG1lc2dfc3RydWN0dXJlZChpbnQgZmQsIGhhbmRsZXJfdCBoYW5kbGVyKTsKPj4+ICt2b2lkIGR1 bXBfZG1lc2dfbGVnYWN5KGludCBmZCwgaGFuZGxlcl90IGhhbmRsZXIpOwo+Pj4gK2ludCByZWFk X2VsZihpbnQgZmQpOwo+Pj4gIAo+Pj4gICNlbmRpZiAvKiBFTEZfSU5GT19IICovCj4+PiBkaWZm IC0tZ2l0IGEvdm1jb3JlLWRtZXNnL3ZtY29yZS1kbWVzZy5jIGIvdm1jb3JlLWRtZXNnL3ZtY29y ZS1kbWVzZy5jCj4+PiBpbmRleCA3YTM4NmIzODAyOTEuLmZmMGQ1NDBjOTEzMCAxMDA2NDQKPj4+ IC0tLSBhL3ZtY29yZS1kbWVzZy92bWNvcmUtZG1lc2cuYwo+Pj4gKysrIGIvdm1jb3JlLWRtZXNn L3ZtY29yZS1kbWVzZy5jCj4+PiBAQCAtMSwyMSArMSw1MyBAQAo+Pj4gICNpbmNsdWRlIDxlbGZf aW5mby5oPgo+Pj4gIAo+Pj4gLS8qIFRoZSAzMmJpdCBhbmQgNjRiaXQgbm90ZSBoZWFkZXJzIG1h a2UgaXQgY2xlYXIgd2UgZG9uJ3QgY2FyZSAqLwo+Pj4gLXR5cGVkZWYgRWxmMzJfTmhkciBFbGZf TmhkcjsKPj4+ICtzdGF0aWMgdm9pZCB3cml0ZV90b19zdGRvdXQoY2hhciAqYnVmLCB1bnNpZ25l ZCBpbnQgbnIpCj4+PiArewo+Pj4gKwlzc2l6ZV90IHJldDsKPj4+ICsKPj4+ICsJcmV0ID0gd3Jp dGUoU1RET1VUX0ZJTEVOTywgYnVmLCBucik7Cj4+PiArCWlmIChyZXQgIT0gbnIpIHsKPj4+ICsJ CWZwcmludGYoc3RkZXJyLCAiRmFpbGVkIHRvIHdyaXRlIG91dCB0aGUgZG1lc2cgbG9nIGJ1ZmZl ciE6Igo+Pj4gKwkJCQkiICVzXG4iLCBzdHJlcnJvcihlcnJubykpOwo+Pj4gKwkJZXhpdCg1NCk7 Cj4+PiArCX0KPj4+ICt9Cj4+PiArCj4+PiArc3RhdGljIHZvaWQgZHVtcF9kbWVzZyhpbnQgZmQs IGhhbmRsZXJfdCBoYW5kbGVyKQo+Pj4gK3sKPj4+ICsJaWYgKGNoZWNrX2xvZ19maXJzdF9pZHhf dmFkZHIoKSkKPj4+ICsJCWR1bXBfZG1lc2dfc3RydWN0dXJlZChmZCwgaGFuZGxlcik7Cj4+PiAr CWVsc2UKPj4+ICsJCWR1bXBfZG1lc2dfbGVnYWN5KGZkLCBoYW5kbGVyKTsKPj4+ICt9Cj4+Cj4+ IEkgdGhpbmsgdGhhdCBkdW1wX2RtZXNnKCkgY291bGQgc3RheSBpbiBrZXhlYy1hcm02NC5jLAo+ PiBpdCBkb2VzIG5vdCBzZWVtIHNwZWNpZmljIHRvIHZtY29yZSBoYW5kbGluZy4KPj4KPiAKPiBU aGUgZHVtcF9kbWVzZygpIHNob3VsZCBiZSBhIGNvbW1vbiBmdW5jdGlvbiwgbm90IG9ubHkgYXJt NjQgd2lsbCB1c2UgaXQsIGJ1dAo+IHg4NiA2NCB3aWxsIGFsc28gY2FsbCBpdC4gSXQgd291bGQg YmUgZ29vZCB0byBwdXQgdGhlIGR1bXBfZG1lc2coKSB0byBhIGNvbW1vbgo+IHBsYWNlLgo+IAo+ Pj4gLXN0YXRpYyBjb25zdCBjaGFyICpmbmFtZTsKPj4+ICtzdGF0aWMgaW50IHJlYWRfdm1jb3Jl X2RtZXNnKGludCBmZCkKPj4+ICt7Cj4+PiArICAgICAgICBpbnQgcmV0Owo+Pj4gKwo+Pj4gKyAg ICAgICAgcmV0ID0gcmVhZF9lbGYoZmQpOwo+Pj4gKyAgICAgICAgaWYgKHJldCA+IDApIHsKPj4+ ICsgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJVbmFibGUgdG8gcmVhZCBFTEYgaW5m b3JtYXRpb24iCj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgIiBmcm9tIHZtY29yZVxuIik7 Cj4+PiArICAgICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4+PiArICAgICAgICB9Cj4+PiArCj4+ PiArICAgICAgICBkdW1wX2RtZXNnKGZkLCB3cml0ZV90b19zdGRvdXQpOwo+Pj4gKwo+Pj4gKyAg ICAgICAgcmV0dXJuIDA7Cj4+PiArfQo+Pj4gIAo+Pj4gIGludCBtYWluKGludCBhcmdjLCBjaGFy ICoqYXJndikKPj4+ICB7Cj4+PiAgCXNzaXplX3QgcmV0Owo+Pj4gIAlpbnQgZmQ7Cj4+PiArCWNv bnN0IGNoYXIgKmZuYW1lOwo+Pj4gIAo+Pj4gIAlpZiAoYXJnYyAhPSAyKSB7Cj4+PiAgCQlmcHJp bnRmKHN0ZGVyciwgInVzYWdlOiAlcyA8a2VybmVsIGNvcmUgZmlsZT5cbiIsIGFyZ3ZbMF0pOwo+ Pj4gIAkJcmV0dXJuIDE7Cj4+PiAgCX0KPj4+IC0JZm5hbWUgPSBhcmd2WzFdOwo+Pj4gIAo+Pj4g KwlmbmFtZSA9IGFyZ3ZbMV07Cj4+PiAgCWZkID0gb3BlbihmbmFtZSwgT19SRE9OTFkpOwo+Pj4g IAlpZiAoZmQgPCAwKSB7Cj4+PiAgCQlmcHJpbnRmKHN0ZGVyciwgIkNhbm5vdCBvcGVuICVzOiAl c1xuIiwKPj4+IEBAIC0yMyw4ICs1NSw4IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJn dikKPj4+ICAJCXJldHVybiAyOwo+Pj4gIAl9Cj4+PiAgCj4+PiAtCXJldCA9IHJlYWRfZWxmX3Zt Y29yZShmZCk7Cj4+PiAtCQo+Pj4gKwlyZXQgPSByZWFkX3ZtY29yZV9kbWVzZyhmZCk7Cj4+PiAr Cj4+PiAgCWNsb3NlKGZkKTsKPj4+ICAKPj4+ICAJcmV0dXJuIHJldDsKPj4+IC0tIAo+Pj4gMi4x Ny4xCj4+Pgo+Pj4KPj4+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCj4+PiBrZXhlYyBtYWlsaW5nIGxpc3QKPj4+IGtleGVjQGxpc3RzLmluZnJhZGVhZC5v cmcKPj4+IGh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8va2V4ZWMK Pj4+CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwprZXhl YyBtYWlsaW5nIGxpc3QKa2V4ZWNAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5m cmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2tleGVjCg==