From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from localhost (localhost [127.0.0.1]) by turing.freelists.org (Avenir Technologies Mail Multiplex) with ESMTP id C454823BF7 for ; Wed, 28 Mar 2018 04:06:12 -0400 (EDT) Received: from turing.freelists.org ([127.0.0.1]) by localhost (turing.freelists.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Gpaqjij0FlWn for ; Wed, 28 Mar 2018 04:06:12 -0400 (EDT) Received: from f506.i.mail.ru (f506.i.mail.ru [217.69.138.173]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by turing.freelists.org (Avenir Technologies Mail Multiplex) with ESMTPS id 5E7D720EE5 for ; Wed, 28 Mar 2018 04:06:12 -0400 (EDT) Received: by f506.i.mail.ru with local (envelope-from ) id 1f165y-0004mm-Rt for tarantool-patches@freelists.org; Wed, 28 Mar 2018 11:06:11 +0300 From: =?UTF-8?B?SWx5YSBNYXJrb3Y=?= Subject: [tarantool-patches] =?UTF-8?B?RndkOiBbcGF0Y2hlc10gW2xvZyAyLzJdIHNheTogRml4IGxvZ19yb3RhdGU=?= MIME-Version: 1.0 Date: Wed, 28 Mar 2018 11:06:10 +0300 Message-ID: <1522224370.984371501@f506.i.mail.ru> Content-Type: multipart/alternative; boundary="--ALT--VDIVRr9ERxT0tYoSBbivR06hfLgQcbYy1522224370" Sender: tarantool-patches-bounce@freelists.org Errors-to: tarantool-patches-bounce@freelists.org Reply-To: tarantool-patches@freelists.org List-help: List-unsubscribe: List-software: Ecartis version 1.0.0 List-Id: tarantool-patches List-subscribe: List-owner: List-post: List-archive: To: tarantool-patches@freelists.org ----ALT--VDIVRr9ERxT0tYoSBbivR06hfLgQcbYy1522224370 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: base64 CgoKLS0tLS0tLS0g0J/QtdGA0LXRgdGL0LvQsNC10LzQvtC1INGB0L7QvtCx0YnQtdC90LjQtSAt LS0tLS0tLQrQntGCINC60L7Qs9C+OiBJbHlhIE1hcmtvdiA8aW1hcmtvdkB0YXJhbnRvb2wub3Jn PgrQmtC+0LzRgzogZ2Vvcmd5QHRhcmFudG9vbC5vcmcK0JrQvtC/0LjRjzogcGF0Y2hlc0B0YXJh bnRvb2wub3JnCtCU0LDRgtCwOiDQktGC0L7RgNC90LjQuiwgMjcg0LzQsNGA0YLQsCAyMDE4LCAx NzowOSArMDM6MDAK0KLQtdC80LA6IFtwYXRjaGVzXSBbbG9nIDIvMl0gc2F5OiBGaXggbG9nX3Jv dGF0ZQoKKiBSZWZhY3RvciB0ZXN0cy4KKiBBZGQgZXZfYXN5bmMgYW5kIGZpYmVyX2NvbmQgZm9y IHRocmVhZC1zYWZlIGxvZ19yb3RhdGUgdXNhZ2UuCgpGb2xsb3cgdXAgIzMwMTUKLS0tCsKgc3Jj L2Vycmluai5oICAgICAgICAgICB8ICAgMSArCsKgc3JjL3NheS5jICAgICAgICAgICAgICB8ICAz MSArKysrKysrKysrKysrLQrCoHNyYy9zYXkuaCAgICAgICAgICAgICAgfCAgMTMgKysrKysrCsKg dGVzdC9ib3gvZXJyaW5qLnJlc3VsdCB8ICAgMiArCsKgdGVzdC91bml0L3NheS5jICAgICAgICB8 IDEwNyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tCsKg NSBmaWxlcyBjaGFuZ2VkLCAxMjAgaW5zZXJ0aW9ucygrKSwgMzQgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvc3JjL2Vycmluai5oIGIvc3JjL2Vycmluai5oCmluZGV4IGE1NDE3YmEuLjZhNWJh MzMgMTAwNjQ0Ci0tLSBhL3NyYy9lcnJpbmouaAorKysgYi9zcmMvZXJyaW5qLmgKQEAgLTEwOCw2 ICsxMDgsNyBAQCBzdHJ1Y3QgZXJyaW5qIHsKwqAJXyhFUlJJTkpfVllfREVMQVlfUEtfTE9PS1VQ LCBFUlJJTkpfQk9PTCwgey5icGFyYW0gPSBmYWxzZX0pIFwKwqAJXyhFUlJJTkpfVllfUlVOX1dS SVRFX1NUTVRfVElNRU9VVCwgRVJSSU5KX0RPVUJMRSwgey5kcGFyYW0gPSAwfSkgXArCoAlfKEVS UklOSl9JUFJPVE9fVFhfREVMQVksIEVSUklOSl9CT09MLCB7LmJwYXJhbSA9IGZhbHNlfSkgXAor CV8oRVJSSU5KX0xPR19ST1RBVEUsIEVSUklOSl9CT09MLCB7LmJwYXJhbSA9IGZhbHNlfSkgXArC oArCoEVOVU0wKGVycmlual9pZCwgRVJSSU5KX0xJU1QpOwrCoGV4dGVybiBzdHJ1Y3QgZXJyaW5q IGVycmluanNbXTsKZGlmZiAtLWdpdCBhL3NyYy9zYXkuYyBiL3NyYy9zYXkuYwppbmRleCBiOTI1 MTRkLi4yZDkzNTdhIDEwMDY0NAotLS0gYS9zcmMvc2F5LmMKKysrIGIvc3JjL3NheS5jCkBAIC0z MCw2ICszMCw3IEBACsKgwqAqLwrCoCNpbmNsdWRlICJzYXkuaCIKwqAjaW5jbHVkZSAiZmliZXIu aCIKKyNpbmNsdWRlICJlcnJpbmouaCIKwqAKwqAjaW5jbHVkZSA8ZXJybm8uaD4KwqAjaW5jbHVk ZSA8c3RkYXJnLmg+CkBAIC0yMzksOSArMjQwLDExIEBAIHdyaXRlX3RvX3N5c2xvZyhzdHJ1Y3Qg bG9nICpsb2csIGludCB0b3RhbCk7CsKgc3RhdGljIGludArCoGxvZ19yb3RhdGUoc3RydWN0IGxv ZyAqbG9nKQrCoHsKLQlpZiAobG9nLT50eXBlICE9IFNBWV9MT0dHRVJfRklMRSkgeworCWlmIChw bV9hdG9taWNfbG9hZCgmbG9nLT50eXBlKSAhPSBTQVlfTE9HR0VSX0ZJTEUpCsKgCQlyZXR1cm4g MDsKLQl9CisKKwlFUlJPUl9JTkpFQ1QoRVJSSU5KX0xPR19ST1RBVEUsIHsgdXNsZWVwKDEwKTsg fSk7CisKwqAJaW50IGZkID0gb3Blbihsb2ctPnBhdGgsIE9fV1JPTkxZIHwgT19BUFBFTkQgfCBP X0NSRUFULArCoAkJICAgICAgU19JUlVTUiB8IFNfSVdVU1IgfCBTX0lSR1JQKTsKwqAJaWYgKGZk IDwgMCkgewpAQCAtMjgyLDYgKzI4NSw3IEBAIGxvZ19yb3RhdGUoc3RydWN0IGxvZyAqbG9nKQrC oHN0cnVjdCByb3RhdGVfdGFzayB7CsKgCXN0cnVjdCBjb2lvX3Rhc2sgYmFzZTsKwqAJc3RydWN0 IGxvZyAqbG9nOworCXN0cnVjdCBldl9sb29wICpsb29wOwrCoH07CsKgCsKgc3RhdGljIGludApA QCAtMjkxLDYgKzI5NSw3IEBAIGxvZ3JvdGF0ZV9jYihzdHJ1Y3QgY29pb190YXNrICpwdHIpCsKg CWlmIChsb2dfcm90YXRlKHRhc2stPmxvZykgPCAwKSB7CsKgCQlkaWFnX2xvZygpOwrCoAl9CisJ ZXZfYXN5bmNfc2VuZCh0YXNrLT5sb29wLCAmdGFzay0+bG9nLT5sb2dfYXN5bmMpOwrCoAlyZXR1 cm4gMDsKwqB9CsKgCkBAIC0zMDMsNiArMzA4LDE2IEBAIGxvZ3JvdGF0ZV9jbGVhbnVwX2NiKHN0 cnVjdCBjb2lvX3Rhc2sgKnB0cikKwqAJcmV0dXJuIDA7CsKgfQrCoAorc3RhdGljIHZvaWQKK2xv Z19yb3RhdGVfYXN5bmNfY2Ioc3RydWN0IGV2X2xvb3AgKmxvb3AsIHN0cnVjdCBldl9hc3luYyAq d2F0Y2hlciwgaW50IGV2ZW50cykKK3sKKwkodm9pZClsb29wOworCSh2b2lkKWV2ZW50czsKKwlz dHJ1Y3QgbG9nICpsb2cgPSBjb250YWluZXJfb2Yod2F0Y2hlciwgc3RydWN0IGxvZywgbG9nX2Fz eW5jKTsKKwlsb2ctPnJvdGF0aW5nX3RocmVhZHMtLTsKKwlmaWJlcl9jb25kX3NpZ25hbCgmbG9n LT5yb3RhdGVfY29uZCk7Cit9CisKwqB2b2lkCsKgc2F5X2xvZ3JvdGF0ZShzdHJ1Y3QgZXZfbG9v cCAqbG9vcCwgc3RydWN0IGV2X3NpZ25hbCAqdywgaW50IHJldmVudHMpCsKgewpAQCAtMzIwLDgg KzMzNSwxMSBAQCBzYXlfbG9ncm90YXRlKHN0cnVjdCBldl9sb29wICpsb29wLCBzdHJ1Y3QgZXZf c2lnbmFsICp3LCBpbnQgcmV2ZW50cykKwqAJCQlkaWFnX2xvZygpOwrCoAkJCWNvbnRpbnVlOwrC oAkJfQorCQlldl9hc3luY19zdGFydChsb29wKCksICZsb2ctPmxvZ19hc3luYyk7CisJCWxvZy0+ cm90YXRpbmdfdGhyZWFkcysrOwrCoAkJY29pb190YXNrX2NyZWF0ZSgmdGFzay0+YmFzZSwgbG9n cm90YXRlX2NiLCBsb2dyb3RhdGVfY2xlYW51cF9jYik7CsKgCQl0YXNrLT5sb2cgPSBsb2c7CisJ CXRhc2stPmxvb3AgPSBsb29wKCk7CsKgCQljb2lvX3Rhc2tfcG9zdCgmdGFzay0+YmFzZSwgMCk7 CsKgCX0KwqAJZXJybm8gPSBzYXZlZF9lcnJubzsKQEAgLTUwMiw2ICs1MjAsOSBAQCBsb2dfY3Jl YXRlKHN0cnVjdCBsb2cgKmxvZywgY29uc3QgY2hhciAqaW5pdF9zdHIsIGJvb2wgbm9uYmxvY2sp CsKgCWxvZy0+Zm9ybWF0X2Z1bmMgPSBOVUxMOwrCoAlsb2ctPmxldmVsID0gU19JTkZPOwrCoAls b2ctPm5vbmJsb2NrID0gbm9uYmxvY2s7CisJbG9nLT5yb3RhdGluZ190aHJlYWRzID0gMDsKKwlm aWJlcl9jb25kX2NyZWF0ZSgmbG9nLT5yb3RhdGVfY29uZCk7CisJZXZfYXN5bmNfaW5pdCgmbG9n LT5sb2dfYXN5bmMsIGxvZ19yb3RhdGVfYXN5bmNfY2IpOwrCoAlzZXR2YnVmKHN0ZGVyciwgTlVM TCwgX0lPTkJGLCAwKTsKwqAKwqAJaWYgKGluaXRfc3RyICE9IE5VTEwpIHsKQEAgLTEwMTYsMTAg KzEwMzcsMTYgQEAgdm9pZArCoGxvZ19kZXN0cm95KHN0cnVjdCBsb2cgKmxvZykKwqB7CsKgCWFz c2VydChsb2cgIT0gTlVMTCk7CisJd2hpbGUobG9nLT5yb3RhdGluZ190aHJlYWRzID4gMCkKKwkJ ZmliZXJfY29uZF93YWl0KCZsb2ctPnJvdGF0ZV9jb25kKTsKKwlwbV9hdG9taWNfc3RvcmUoJmxv Zy0+dHlwZSwgU0FZX0xPR0dFUl9CT09UKTsKKwrCoAlpZiAobG9nLT5mZCAhPSAtMSkKwqAJCWNs b3NlKGxvZy0+ZmQpOwrCoAlmcmVlKGxvZy0+c3lzbG9nX2lkZW50KTsKwqAJcmxpc3RfZGVsX2Vu dHJ5KGxvZywgaW5fbG9nX2xpc3QpOworCWV2X2FzeW5jX3N0b3AobG9vcCgpLCAmbG9nLT5sb2df YXN5bmMpOworCWZpYmVyX2NvbmRfZGVzdHJveSgmbG9nLT5yb3RhdGVfY29uZCk7CsKgfQrCoArC oHN0YXRpYyBpbmxpbmUgaW50CmRpZmYgLS1naXQgYS9zcmMvc2F5LmggYi9zcmMvc2F5LmgKaW5k ZXggNDZlNjk3Ni4uYzA1ZWM3NCAxMDA2NDQKLS0tIGEvc3JjL3NheS5oCisrKyBiL3NyYy9zYXku aApAQCAtMzYsNyArMzYsOSBAQArCoCNpbmNsdWRlIDxzdGRhcmcuaD4KwqAjaW5jbHVkZSA8ZXJy bm8uaD4KwqAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+IC8qIHBpZF90ICovCisjaW5jbHVkZSA8dGFy YW50b29sX2V2Lmg+CsKgI2luY2x1ZGUgInNtYWxsL3JsaXN0LmgiCisjaW5jbHVkZSAiZmliZXJf Y29uZC5oIgrCoArCoCNpZiBkZWZpbmVkKF9fY3BsdXNwbHVzKQrCoGV4dGVybiAiQyIgewpAQCAt MTE5LDYgKzEyMSwxNyBAQCBzdHJ1Y3QgbG9nIHsKwqAJcGlkX3QgcGlkOwrCoAkvKiBBcHBsaWNh dGlvbiBpZGVudGlmaWVyIHVzZWQgdG8gZ3JvdXAgc3lzbG9nIG1lc3NhZ2VzLiAqLwrCoAljaGFy ICpzeXNsb2dfaWRlbnQ7CisJLyoqCisJICogVXNlZCB0byB3YWtlIHVwIHRoZSBtYWluIGxvZ2dl ciB0aHJlYWQgZnJvbSBhIGVpbyB0aHJlYWQuCisJICovCisJZXZfYXN5bmMgbG9nX2FzeW5jOwor CS8qKgorCSAqIENvbmRpdGlvbmFsIHZhcmlhYmxlIHNlY3VyaW5nIHZhcmlhYmxlIGJlbG93CisJ ICogZnJvbSBjb25jdXJyZW50IHVzYWdlLgorCSAqLworCXN0cnVjdCBmaWJlcl9jb25kIHJvdGF0 ZV9jb25kOworCS8qKiBDb3VudGVyIGlkZW50aWZ5aW5nIG51bWJlciBvZiB0aHJlYWRzIGV4ZWN1 dGluZyBsb2dfcm90YXRlLiAqLworCWludCByb3RhdGluZ190aHJlYWRzOwrCoAlzdHJ1Y3Qgcmxp c3QgaW5fbG9nX2xpc3Q7CsKgfTsKwqAKZGlmZiAtLWdpdCBhL3Rlc3QvYm94L2Vycmluai5yZXN1 bHQgYi90ZXN0L2JveC9lcnJpbmoucmVzdWx0CmluZGV4IGNkMGMzNWMuLjFjYjVjMjMgMTAwNjQ0 Ci0tLSBhL3Rlc3QvYm94L2Vycmluai5yZXN1bHQKKysrIGIvdGVzdC9ib3gvZXJyaW5qLnJlc3Vs dApAQCAtNjAsNiArNjAsOCBAQCBlcnJpbmouaW5mbygpCsKgwqDCoMKgwqBzdGF0ZTogZmFsc2UK wqDCoMKgRVJSSU5KX1dBTF9ST1RBVEU6CsKgwqDCoMKgwqBzdGF0ZTogZmFsc2UKKyAgRVJSSU5K X0xPR19ST1RBVEU6CisgICAgc3RhdGU6IGZhbHNlCsKgwqDCoEVSUklOSl9WWV9QT0lOVF9JVEVS X1dBSVQ6CsKgwqDCoMKgwqBzdGF0ZTogZmFsc2UKwqDCoMKgRVJSSU5KX1JFTEFZX0VYSVRfREVM QVk6CmRpZmYgLS1naXQgYS90ZXN0L3VuaXQvc2F5LmMgYi90ZXN0L3VuaXQvc2F5LmMKaW5kZXgg OGM5OTZiYS4uMGZmZDI2NyAxMDA2NDQKLS0tIGEvdGVzdC91bml0L3NheS5jCisrKyBiL3Rlc3Qv dW5pdC9zYXkuYwpAQCAtNCw2ICs0LDggQEAKwqAjaW5jbHVkZSAidW5pdC5oIgrCoCNpbmNsdWRl ICJzYXkuaCIKwqAjaW5jbHVkZSA8cHRocmVhZC5oPgorI2luY2x1ZGUgPGVycmluai5oPgorI2lu Y2x1ZGUgPGNvaW9fdGFzay5oPgrCoArCoGludArCoHBhcnNlX2xvZ2dlcl90eXBlKGNvbnN0IGNo YXIgKmlucHV0KQpAQCAtNjcsMjggKzY5LDM0IEBAIHB0aHJlYWRfY29uZF90IGNvbmRfc3luYyA9 IFBUSFJFQURfQ09ORF9JTklUSUFMSVpFUjsKwqAKwqBib29sIGlzX3JhaXNlZCA9IGZhbHNlOwrC oGludCBjcmVhdGVkX2xvZ3MgPSAwOworY29uc3QgY2hhciAqdG1wX2RpcjsKKworc3RydWN0IGNy ZWF0ZV9sb2cgeworCXN0cnVjdCBsb2cgbG9nZ2VyOworCWludCBpZDsKK307CsKgCsKgc3RhdGlj IHZvaWQgKgrCoGR1bW15X2xvZyh2b2lkICphcmcpCsKgewotCWNvbnN0IGNoYXIgKnRtcF9kaXIg PSAoY29uc3QgY2hhciAqKSBhcmc7CisJc3RydWN0IGNyZWF0ZV9sb2cgKmNyZWF0ZV9sb2cgPSAo c3RydWN0IGNyZWF0ZV9sb2cgKikgYXJnOworCsKgCWNoYXIgdG1wX2ZpbGVuYW1lWzMwXTsKLQlz cHJpbnRmKHRtcF9maWxlbmFtZSwgIiVzLyVpLmxvZyIsIHRtcF9kaXIsIChpbnQpIHB0aHJlYWRf c2VsZigpKTsKLQlwdGhyZWFkX211dGV4X2xvY2soJm11dGV4KTsKLQlzdHJ1Y3QgbG9nIHRlc3Rf bG9nOwotCWxvZ19jcmVhdGUoJnRlc3RfbG9nLCB0bXBfZmlsZW5hbWUsIGZhbHNlKTsKLQkvLyBz aWduYWwgdGhhdCBsb2cgaXMgY3JlYXRlZAorCXNwcmludGYodG1wX2ZpbGVuYW1lLCAiJXMvJWku bG9nIiwgdG1wX2RpciwgY3JlYXRlX2xvZy0+aWQpOworCXR0X3B0aHJlYWRfbXV0ZXhfbG9jaygm bXV0ZXgpOworCWxvZ19jcmVhdGUoJmNyZWF0ZV9sb2ctPmxvZ2dlciwgdG1wX2ZpbGVuYW1lLCBm YWxzZSk7CisKKwkvKiBzaWduYWwgdGhhdCBsb2cgaXMgY3JlYXRlZCAqLwrCoAljcmVhdGVkX2xv Z3MrKzsKLQlwdGhyZWFkX2NvbmRfc2lnbmFsKCZjb25kX3N5bmMpOworCXR0X3B0aHJlYWRfY29u ZF9zaWduYWwoJmNvbmRfc3luYyk7CsKgCi0JLy8gd2FpdCB1bnRpbCByb3RhdGUgc2lnbmFsIGlz IHJhaXNlZAorCS8qIHdhaXQgdW50aWwgcm90YXRlIHNpZ25hbCBpcyByYWlzZWQgKi8KwqAJd2hp bGUgKCFpc19yYWlzZWQpCi0JCXB0aHJlYWRfY29uZF93YWl0KCZjb25kLCAmbXV0ZXgpOwotCi0J bG9nX2Rlc3Ryb3koJnRlc3RfbG9nKTsKKwkJdHRfcHRocmVhZF9jb25kX3dhaXQoJmNvbmQsICZt dXRleCk7CsKgCWNyZWF0ZWRfbG9ncy0tOwotCXB0aHJlYWRfY29uZF9zaWduYWwoJmNvbmRfc3lu Yyk7Ci0JcHRocmVhZF9tdXRleF91bmxvY2soJm11dGV4KTsKKwlpZiAoY3JlYXRlZF9sb2dzID09 IDApCisJCXB0aHJlYWRfY29uZF9zaWduYWwoJmNvbmRfc3luYyk7CisJdHRfcHRocmVhZF9tdXRl eF91bmxvY2soJm11dGV4KTsKwqAJcmV0dXJuIE5VTEw7CsKgfQrCoApAQCAtOTYsMjYgKzEwNCw1 NCBAQCBzdGF0aWMgdm9pZArCoHRlc3RfbG9nX3JvdGF0ZSgpCsKgewrCoAljaGFyIHRlbXBsYXRl W10gPSAiL3RtcC90bXBkaXIuWFhYWFhYIjsKLQljb25zdCBjaGFyICp0bXBfZGlyID0gbWtkdGVt cCh0ZW1wbGF0ZSk7CisJdG1wX2RpciA9IG1rZHRlbXAodGVtcGxhdGUpOworCWNvbnN0IGludCBO VU1CRVJfTE9HR0VSUyA9IDEwOworCXN0cnVjdCBjcmVhdGVfbG9nICpsb2dnZXJzID0gKHN0cnVj dCBjcmVhdGVfbG9nICopIGNhbGxvYyhOVU1CRVJfTE9HR0VSUywKKwkJCQkJCSAgc2l6ZW9mKHN0 cnVjdCBjcmVhdGVfbG9nKSk7CisJaWYgKGxvZ2dlcnMgPT0gTlVMTCkgeworCQlyZXR1cm47CisJ fQrCoAlpbnQgcnVubmluZyA9IDA7Ci0JZm9yIChpbnQgaSA9IDA7IGkgPCAxMDsgaSsrKSB7CisJ Zm9yIChpbnQgaSA9IDA7IGkgPCBOVU1CRVJfTE9HR0VSUzsgaSsrKSB7CsKgCQlwdGhyZWFkX3Qg dGhyZWFkOwotCQlpZiAocHRocmVhZF9jcmVhdGUoJnRocmVhZCwgTlVMTCwgZHVtbXlfbG9nLCAo dm9pZCAqKSB0bXBfZGlyKSA+PSAwKQorCQlsb2dnZXJzW2ldLmlkID0gaTsKKwkJaWYgKHR0X3B0 aHJlYWRfY3JlYXRlKCZ0aHJlYWQsIE5VTEwsIGR1bW15X2xvZywKKwkJCQkgICAodm9pZCAqKSAm bG9nZ2Vyc1tpXSkgPj0gMCkKwqAJCQlydW5uaW5nKys7CsKgCX0KLQlwdGhyZWFkX211dGV4X2xv Y2soJm11dGV4KTsKLQkvLyB3YWl0IGxvZ2dlcnMgYXJlIGNyZWF0ZWQKLQl3aGlsZSAoY3JlYXRl ZF9sb2dzIDwgcnVubmluZykgewotCQlwdGhyZWFkX2NvbmRfd2FpdCgmY29uZF9zeW5jLCAmbXV0 ZXgpOworCXR0X3B0aHJlYWRfbXV0ZXhfbG9jaygmbXV0ZXgpOworCS8qIHdhaXQgbG9nZ2VycyBh cmUgY3JlYXRlZCAqLworCXdoaWxlIChjcmVhdGVkX2xvZ3MgPCBydW5uaW5nKQorCQl0dF9wdGhy ZWFkX2NvbmRfd2FpdCgmY29uZF9zeW5jLCAmbXV0ZXgpOworCXR0X3B0aHJlYWRfbXV0ZXhfdW5s b2NrKCZtdXRleCk7CisJc2F5X2xvZ3JvdGF0ZShOVUxMLCBOVUxMLCAwKTsKKworCWZvciAoaW50 IGkgPSAwOyBpIDwgY3JlYXRlZF9sb2dzOyBpKyspIHsKKwkJbG9nX2Rlc3Ryb3koJmxvZ2dlcnNb aV0ubG9nZ2VyKTsKwqAJfQotCXJhaXNlKFNJR0hVUCk7CisJbWVtc2V0KGxvZ2dlcnMsICcjJywg TlVNQkVSX0xPR0dFUlMgKiBzaXplb2Yoc3RydWN0IGNyZWF0ZV9sb2cpKTsKKwlmcmVlKGxvZ2dl cnMpOworCsKgCWlzX3JhaXNlZCA9IHRydWU7Ci0JcHRocmVhZF9jb25kX2Jyb2FkY2FzdCgmY29u ZCk7CisJdHRfcHRocmVhZF9jb25kX2Jyb2FkY2FzdCgmY29uZCk7CsKgCi0JLy8gd2FpdCB1bnRp bCBsb2dnZXJzIGFyZSBjbG9zZWQKLQl3aGlsZShjcmVhdGVkX2xvZ3MgIT0gMCkKLQkJcHRocmVh ZF9jb25kX3dhaXQoJmNvbmRfc3luYywgJm11dGV4KTsKLQlwdGhyZWFkX211dGV4X3VubG9jaygm bXV0ZXgpOworCXR0X3B0aHJlYWRfbXV0ZXhfbG9jaygmbXV0ZXgpOworCS8qIHdhaXQgdGhyZWFk cyBhcmUgZmluaXNoZWQgKi8KKwl3aGlsZSAoY3JlYXRlZF9sb2dzID4gMCkKKwkJdHRfcHRocmVh ZF9jb25kX3dhaXQoJmNvbmRfc3luYywgJm11dGV4KTsKKwl0dF9wdGhyZWFkX211dGV4X3VubG9j aygmbXV0ZXgpOworfQorCitzdGF0aWMgaW50CittYWluX2YodmFfbGlzdCBhcCkKK3sKKwlzdHJ1 Y3QgZXJyaW5qICppbmogPSBlcnJpbmpfYnlfbmFtZSgiRVJSSU5KX0xPR19ST1RBVEUiKTsKKwlp bmotPmJwYXJhbSA9IHRydWU7CisJLyogdGVzdCBvbiBsb2dfcm90YXRlIHNpZ25hbCBoYW5kbGlu ZyAqLworCXRlc3RfbG9nX3JvdGF0ZSgpOworCWluai0+YnBhcmFtID0gZmFsc2U7CisJZXZfYnJl YWsobG9vcCgpLCBFVkJSRUFLX0FMTCk7CisJcmV0dXJuIDA7CsKgfQrCoArCoGludCBtYWluKCkK QEAgLTE4NywxMSArMjIzLDE4IEBAIGludCBtYWluKCkKwqAJfQrCoAlsb2dfZGVzdHJveSgmdGVz dF9sb2cpOwrCoAotCS8vIHRlc3Qgb24gbG9nX3JvdGF0ZSBzaWduYWwgaGFuZGxpbmcKLQlzdHJ1 Y3QgZXZfc2lnbmFsIGV2X3NpZzsKLQlldl9zaWduYWxfaW5pdCgmZXZfc2lnLCBzYXlfbG9ncm90 YXRlLCBTSUdIVVApOwotCWV2X3NpZ25hbF9zdGFydChsb29wKCksICZldl9zaWcpOwotCXRlc3Rf bG9nX3JvdGF0ZSgpOwotCWV2X3NpZ25hbF9zdG9wKGxvb3AoKSwgJmV2X3NpZyk7CisJY29pb19p bml0KCk7CisJY29pb19lbmFibGUoKTsKKworCXN0cnVjdCBmaWJlciAqdGVzdCA9IGZpYmVyX25l dygibG9nZ2VycyIsIG1haW5fZik7CisJaWYgKHRlc3QgPT0gTlVMTCkgeworCQlkaWFnX2xvZygp OworCQlyZXR1cm4gY2hlY2tfcGxhbigpOworCX0KKwlmaWJlcl93YWtldXAodGVzdCk7CisJZXZf cnVuKGxvb3AoKSwgMCk7CisKKwlmaWJlcl9mcmVlKCk7CisJbWVtb3J5X2ZyZWUoKTsKwqAJcmV0 dXJuIGNoZWNrX3BsYW4oKTsKwqB9Ci0tIAoyLjcuNAoKCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi0tIApUaGFu ayB5b3UsCklseWEgTWFya292Cg== ----ALT--VDIVRr9ERxT0tYoSBbivR06hfLgQcbYy1522224370 Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: base64 CjxIVE1MPjxCT0RZPjxicj48YnI+PGJyPi0tLS0tLS0tINCf0LXRgNC10YHRi9C70LDQtdC80L7Q tSDRgdC+0L7QsdGJ0LXQvdC40LUgLS0tLS0tLS08YnI+CtCe0YIg0LrQvtCz0L46IElseWEgTWFy a292ICZsdDtpbWFya292QHRhcmFudG9vbC5vcmcmZ3Q7PGJyPgrQmtC+0LzRgzogZ2Vvcmd5QHRh cmFudG9vbC5vcmc8YnI+CtCa0L7Qv9C40Y86IHBhdGNoZXNAdGFyYW50b29sLm9yZzxicj4K0JTQ sNGC0LA6INCS0YLQvtGA0L3QuNC6LCAyNyDQvNCw0YDRgtCwIDIwMTgsIDE3OjA5ICswMzowMDxi cj4K0KLQtdC80LA6IFtwYXRjaGVzXSBbbG9nIDIvMl0gc2F5OiBGaXggbG9nX3JvdGF0ZTxicj4K PGJyPgoKCjxkaXYgY2xhc3M9ImpzLWhlbHBlciBqcy1yZWFkbXNnLW1zZyI+Cgk8c3R5bGUgdHlw ZT0idGV4dC9jc3MiPjwvc3R5bGU+CiAJPGRpdj4KCQk8YmFzZSB0YXJnZXQ9Il9zZWxmIiBocmVm PSJodHRwczovL2UubWFpbC5ydS8iPgoJCQogICAgICAgICAgICA8ZGl2IGlkPSJzdHlsZV8xNTIy MTU5NzU0MDAwMDAwMDA3N19CT0RZIj4qIFJlZmFjdG9yIHRlc3RzLjxicj4KKiBBZGQgZXZfYXN5 bmMgYW5kIGZpYmVyX2NvbmQgZm9yIHRocmVhZC1zYWZlIGxvZ19yb3RhdGUgdXNhZ2UuPGJyPgo8 YnI+CkZvbGxvdyB1cCAjMzAxNTxicj4KLS0tPGJyPgombmJzcDtzcmMvZXJyaW5qLmggICAgICAg ICAgIHwgICAxICs8YnI+CiZuYnNwO3NyYy9zYXkuYyAgICAgICAgICAgICAgfCAgMzEgKysrKysr KysrKysrKy08YnI+CiZuYnNwO3NyYy9zYXkuaCAgICAgICAgICAgICAgfCAgMTMgKysrKysrPGJy PgombmJzcDt0ZXN0L2JveC9lcnJpbmoucmVzdWx0IHwgICAyICs8YnI+CiZuYnNwO3Rlc3QvdW5p dC9zYXkuYyAgICAgICAgfCAxMDcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0t LS0tLS0tLS0tLS0tLTxicj4KJm5ic3A7NSBmaWxlcyBjaGFuZ2VkLCAxMjAgaW5zZXJ0aW9ucygr KSwgMzQgZGVsZXRpb25zKC0pPGJyPgo8YnI+CmRpZmYgLS1naXQgYS9zcmMvZXJyaW5qLmggYi9z cmMvZXJyaW5qLmg8YnI+CmluZGV4IGE1NDE3YmEuLjZhNWJhMzMgMTAwNjQ0PGJyPgotLS0gYS9z cmMvZXJyaW5qLmg8YnI+CisrKyBiL3NyYy9lcnJpbmouaDxicj4KQEAgLTEwOCw2ICsxMDgsNyBA QCBzdHJ1Y3QgZXJyaW5qIHs8YnI+CiZuYnNwOwlfKEVSUklOSl9WWV9ERUxBWV9QS19MT09LVVAs IEVSUklOSl9CT09MLCB7LmJwYXJhbSA9IGZhbHNlfSkgXDxicj4KJm5ic3A7CV8oRVJSSU5KX1ZZ X1JVTl9XUklURV9TVE1UX1RJTUVPVVQsIEVSUklOSl9ET1VCTEUsIHsuZHBhcmFtID0gMH0pIFw8 YnI+CiZuYnNwOwlfKEVSUklOSl9JUFJPVE9fVFhfREVMQVksIEVSUklOSl9CT09MLCB7LmJwYXJh bSA9IGZhbHNlfSkgXDxicj4KKwlfKEVSUklOSl9MT0dfUk9UQVRFLCBFUlJJTkpfQk9PTCwgey5i cGFyYW0gPSBmYWxzZX0pIFw8YnI+CiZuYnNwOzxicj4KJm5ic3A7RU5VTTAoZXJyaW5qX2lkLCBF UlJJTkpfTElTVCk7PGJyPgombmJzcDtleHRlcm4gc3RydWN0IGVycmluaiBlcnJpbmpzW107PGJy PgpkaWZmIC0tZ2l0IGEvc3JjL3NheS5jIGIvc3JjL3NheS5jPGJyPgppbmRleCBiOTI1MTRkLi4y ZDkzNTdhIDEwMDY0NDxicj4KLS0tIGEvc3JjL3NheS5jPGJyPgorKysgYi9zcmMvc2F5LmM8YnI+ CkBAIC0zMCw2ICszMCw3IEBAPGJyPgombmJzcDsmbmJzcDsqLzxicj4KJm5ic3A7I2luY2x1ZGUg InNheS5oIjxicj4KJm5ic3A7I2luY2x1ZGUgImZpYmVyLmgiPGJyPgorI2luY2x1ZGUgImVycmlu ai5oIjxicj4KJm5ic3A7PGJyPgombmJzcDsjaW5jbHVkZSAmbHQ7ZXJybm8uaCZndDs8YnI+CiZu YnNwOyNpbmNsdWRlICZsdDtzdGRhcmcuaCZndDs8YnI+CkBAIC0yMzksOSArMjQwLDExIEBAIHdy aXRlX3RvX3N5c2xvZyhzdHJ1Y3QgbG9nICpsb2csIGludCB0b3RhbCk7PGJyPgombmJzcDtzdGF0 aWMgaW50PGJyPgombmJzcDtsb2dfcm90YXRlKHN0cnVjdCBsb2cgKmxvZyk8YnI+CiZuYnNwO3s8 YnI+Ci0JaWYgKGxvZy0mZ3Q7dHlwZSAhPSBTQVlfTE9HR0VSX0ZJTEUpIHs8YnI+CisJaWYgKHBt X2F0b21pY19sb2FkKCZhbXA7bG9nLSZndDt0eXBlKSAhPSBTQVlfTE9HR0VSX0ZJTEUpPGJyPgom bmJzcDsJCXJldHVybiAwOzxicj4KLQl9PGJyPgorPGJyPgorCUVSUk9SX0lOSkVDVChFUlJJTkpf TE9HX1JPVEFURSwgeyB1c2xlZXAoMTApOyB9KTs8YnI+Cis8YnI+CiZuYnNwOwlpbnQgZmQgPSBv cGVuKGxvZy0mZ3Q7cGF0aCwgT19XUk9OTFkgfCBPX0FQUEVORCB8IE9fQ1JFQVQsPGJyPgombmJz cDsJCSAgICAgIFNfSVJVU1IgfCBTX0lXVVNSIHwgU19JUkdSUCk7PGJyPgombmJzcDsJaWYgKGZk ICZsdDsgMCkgezxicj4KQEAgLTI4Miw2ICsyODUsNyBAQCBsb2dfcm90YXRlKHN0cnVjdCBsb2cg KmxvZyk8YnI+CiZuYnNwO3N0cnVjdCByb3RhdGVfdGFzayB7PGJyPgombmJzcDsJc3RydWN0IGNv aW9fdGFzayBiYXNlOzxicj4KJm5ic3A7CXN0cnVjdCBsb2cgKmxvZzs8YnI+CisJc3RydWN0IGV2 X2xvb3AgKmxvb3A7PGJyPgombmJzcDt9Ozxicj4KJm5ic3A7PGJyPgombmJzcDtzdGF0aWMgaW50 PGJyPgpAQCAtMjkxLDYgKzI5NSw3IEBAIGxvZ3JvdGF0ZV9jYihzdHJ1Y3QgY29pb190YXNrICpw dHIpPGJyPgombmJzcDsJaWYgKGxvZ19yb3RhdGUodGFzay0mZ3Q7bG9nKSAmbHQ7IDApIHs8YnI+ CiZuYnNwOwkJZGlhZ19sb2coKTs8YnI+CiZuYnNwOwl9PGJyPgorCWV2X2FzeW5jX3NlbmQodGFz ay0mZ3Q7bG9vcCwgJmFtcDt0YXNrLSZndDtsb2ctJmd0O2xvZ19hc3luYyk7PGJyPgombmJzcDsJ cmV0dXJuIDA7PGJyPgombmJzcDt9PGJyPgombmJzcDs8YnI+CkBAIC0zMDMsNiArMzA4LDE2IEBA IGxvZ3JvdGF0ZV9jbGVhbnVwX2NiKHN0cnVjdCBjb2lvX3Rhc2sgKnB0cik8YnI+CiZuYnNwOwly ZXR1cm4gMDs8YnI+CiZuYnNwO308YnI+CiZuYnNwOzxicj4KK3N0YXRpYyB2b2lkPGJyPgorbG9n X3JvdGF0ZV9hc3luY19jYihzdHJ1Y3QgZXZfbG9vcCAqbG9vcCwgc3RydWN0IGV2X2FzeW5jICp3 YXRjaGVyLCBpbnQgZXZlbnRzKTxicj4KK3s8YnI+CisJKHZvaWQpbG9vcDs8YnI+CisJKHZvaWQp ZXZlbnRzOzxicj4KKwlzdHJ1Y3QgbG9nICpsb2cgPSBjb250YWluZXJfb2Yod2F0Y2hlciwgc3Ry dWN0IGxvZywgbG9nX2FzeW5jKTs8YnI+CisJbG9nLSZndDtyb3RhdGluZ190aHJlYWRzLS07PGJy PgorCWZpYmVyX2NvbmRfc2lnbmFsKCZhbXA7bG9nLSZndDtyb3RhdGVfY29uZCk7PGJyPgorfTxi cj4KKzxicj4KJm5ic3A7dm9pZDxicj4KJm5ic3A7c2F5X2xvZ3JvdGF0ZShzdHJ1Y3QgZXZfbG9v cCAqbG9vcCwgc3RydWN0IGV2X3NpZ25hbCAqdywgaW50IHJldmVudHMpPGJyPgombmJzcDt7PGJy PgpAQCAtMzIwLDggKzMzNSwxMSBAQCBzYXlfbG9ncm90YXRlKHN0cnVjdCBldl9sb29wICpsb29w LCBzdHJ1Y3QgZXZfc2lnbmFsICp3LCBpbnQgcmV2ZW50cyk8YnI+CiZuYnNwOwkJCWRpYWdfbG9n KCk7PGJyPgombmJzcDsJCQljb250aW51ZTs8YnI+CiZuYnNwOwkJfTxicj4KKwkJZXZfYXN5bmNf c3RhcnQobG9vcCgpLCAmYW1wO2xvZy0mZ3Q7bG9nX2FzeW5jKTs8YnI+CisJCWxvZy0mZ3Q7cm90 YXRpbmdfdGhyZWFkcysrOzxicj4KJm5ic3A7CQljb2lvX3Rhc2tfY3JlYXRlKCZhbXA7dGFzay0m Z3Q7YmFzZSwgbG9ncm90YXRlX2NiLCBsb2dyb3RhdGVfY2xlYW51cF9jYik7PGJyPgombmJzcDsJ CXRhc2stJmd0O2xvZyA9IGxvZzs8YnI+CisJCXRhc2stJmd0O2xvb3AgPSBsb29wKCk7PGJyPgom bmJzcDsJCWNvaW9fdGFza19wb3N0KCZhbXA7dGFzay0mZ3Q7YmFzZSwgMCk7PGJyPgombmJzcDsJ fTxicj4KJm5ic3A7CWVycm5vID0gc2F2ZWRfZXJybm87PGJyPgpAQCAtNTAyLDYgKzUyMCw5IEBA IGxvZ19jcmVhdGUoc3RydWN0IGxvZyAqbG9nLCBjb25zdCBjaGFyICppbml0X3N0ciwgYm9vbCBu b25ibG9jayk8YnI+CiZuYnNwOwlsb2ctJmd0O2Zvcm1hdF9mdW5jID0gTlVMTDs8YnI+CiZuYnNw Owlsb2ctJmd0O2xldmVsID0gU19JTkZPOzxicj4KJm5ic3A7CWxvZy0mZ3Q7bm9uYmxvY2sgPSBu b25ibG9jazs8YnI+CisJbG9nLSZndDtyb3RhdGluZ190aHJlYWRzID0gMDs8YnI+CisJZmliZXJf Y29uZF9jcmVhdGUoJmFtcDtsb2ctJmd0O3JvdGF0ZV9jb25kKTs8YnI+CisJZXZfYXN5bmNfaW5p dCgmYW1wO2xvZy0mZ3Q7bG9nX2FzeW5jLCBsb2dfcm90YXRlX2FzeW5jX2NiKTs8YnI+CiZuYnNw OwlzZXR2YnVmKHN0ZGVyciwgTlVMTCwgX0lPTkJGLCAwKTs8YnI+CiZuYnNwOzxicj4KJm5ic3A7 CWlmIChpbml0X3N0ciAhPSBOVUxMKSB7PGJyPgpAQCAtMTAxNiwxMCArMTAzNywxNiBAQCB2b2lk PGJyPgombmJzcDtsb2dfZGVzdHJveShzdHJ1Y3QgbG9nICpsb2cpPGJyPgombmJzcDt7PGJyPgom bmJzcDsJYXNzZXJ0KGxvZyAhPSBOVUxMKTs8YnI+CisJd2hpbGUobG9nLSZndDtyb3RhdGluZ190 aHJlYWRzICZndDsgMCk8YnI+CisJCWZpYmVyX2NvbmRfd2FpdCgmYW1wO2xvZy0mZ3Q7cm90YXRl X2NvbmQpOzxicj4KKwlwbV9hdG9taWNfc3RvcmUoJmFtcDtsb2ctJmd0O3R5cGUsIFNBWV9MT0dH RVJfQk9PVCk7PGJyPgorPGJyPgombmJzcDsJaWYgKGxvZy0mZ3Q7ZmQgIT0gLTEpPGJyPgombmJz cDsJCWNsb3NlKGxvZy0mZ3Q7ZmQpOzxicj4KJm5ic3A7CWZyZWUobG9nLSZndDtzeXNsb2dfaWRl bnQpOzxicj4KJm5ic3A7CXJsaXN0X2RlbF9lbnRyeShsb2csIGluX2xvZ19saXN0KTs8YnI+CisJ ZXZfYXN5bmNfc3RvcChsb29wKCksICZhbXA7bG9nLSZndDtsb2dfYXN5bmMpOzxicj4KKwlmaWJl cl9jb25kX2Rlc3Ryb3koJmFtcDtsb2ctJmd0O3JvdGF0ZV9jb25kKTs8YnI+CiZuYnNwO308YnI+ CiZuYnNwOzxicj4KJm5ic3A7c3RhdGljIGlubGluZSBpbnQ8YnI+CmRpZmYgLS1naXQgYS9zcmMv c2F5LmggYi9zcmMvc2F5Lmg8YnI+CmluZGV4IDQ2ZTY5NzYuLmMwNWVjNzQgMTAwNjQ0PGJyPgot LS0gYS9zcmMvc2F5Lmg8YnI+CisrKyBiL3NyYy9zYXkuaDxicj4KQEAgLTM2LDcgKzM2LDkgQEA8 YnI+CiZuYnNwOyNpbmNsdWRlICZsdDtzdGRhcmcuaCZndDs8YnI+CiZuYnNwOyNpbmNsdWRlICZs dDtlcnJuby5oJmd0Ozxicj4KJm5ic3A7I2luY2x1ZGUgJmx0O3N5cy90eXBlcy5oJmd0OyAvKiBw aWRfdCAqLzxicj4KKyNpbmNsdWRlICZsdDt0YXJhbnRvb2xfZXYuaCZndDs8YnI+CiZuYnNwOyNp bmNsdWRlICJzbWFsbC9ybGlzdC5oIjxicj4KKyNpbmNsdWRlICJmaWJlcl9jb25kLmgiPGJyPgom bmJzcDs8YnI+CiZuYnNwOyNpZiBkZWZpbmVkKF9fY3BsdXNwbHVzKTxicj4KJm5ic3A7ZXh0ZXJu ICJDIiB7PGJyPgpAQCAtMTE5LDYgKzEyMSwxNyBAQCBzdHJ1Y3QgbG9nIHs8YnI+CiZuYnNwOwlw aWRfdCBwaWQ7PGJyPgombmJzcDsJLyogQXBwbGljYXRpb24gaWRlbnRpZmllciB1c2VkIHRvIGdy b3VwIHN5c2xvZyBtZXNzYWdlcy4gKi88YnI+CiZuYnNwOwljaGFyICpzeXNsb2dfaWRlbnQ7PGJy PgorCS8qKjxicj4KKwkgKiBVc2VkIHRvIHdha2UgdXAgdGhlIG1haW4gbG9nZ2VyIHRocmVhZCBm cm9tIGEgZWlvIHRocmVhZC48YnI+CisJICovPGJyPgorCWV2X2FzeW5jIGxvZ19hc3luYzs8YnI+ CisJLyoqPGJyPgorCSAqIENvbmRpdGlvbmFsIHZhcmlhYmxlIHNlY3VyaW5nIHZhcmlhYmxlIGJl bG93PGJyPgorCSAqIGZyb20gY29uY3VycmVudCB1c2FnZS48YnI+CisJICovPGJyPgorCXN0cnVj dCBmaWJlcl9jb25kIHJvdGF0ZV9jb25kOzxicj4KKwkvKiogQ291bnRlciBpZGVudGlmeWluZyBu dW1iZXIgb2YgdGhyZWFkcyBleGVjdXRpbmcgbG9nX3JvdGF0ZS4gKi88YnI+CisJaW50IHJvdGF0 aW5nX3RocmVhZHM7PGJyPgombmJzcDsJc3RydWN0IHJsaXN0IGluX2xvZ19saXN0Ozxicj4KJm5i c3A7fTs8YnI+CiZuYnNwOzxicj4KZGlmZiAtLWdpdCBhL3Rlc3QvYm94L2Vycmluai5yZXN1bHQg Yi90ZXN0L2JveC9lcnJpbmoucmVzdWx0PGJyPgppbmRleCBjZDBjMzVjLi4xY2I1YzIzIDEwMDY0 NDxicj4KLS0tIGEvdGVzdC9ib3gvZXJyaW5qLnJlc3VsdDxicj4KKysrIGIvdGVzdC9ib3gvZXJy aW5qLnJlc3VsdDxicj4KQEAgLTYwLDYgKzYwLDggQEAgZXJyaW5qLmluZm8oKTxicj4KJm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7c3RhdGU6IGZhbHNlPGJyPgombmJzcDsmbmJzcDsmbmJz cDtFUlJJTkpfV0FMX1JPVEFURTo8YnI+CiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO3N0 YXRlOiBmYWxzZTxicj4KKyAgRVJSSU5KX0xPR19ST1RBVEU6PGJyPgorICAgIHN0YXRlOiBmYWxz ZTxicj4KJm5ic3A7Jm5ic3A7Jm5ic3A7RVJSSU5KX1ZZX1BPSU5UX0lURVJfV0FJVDo8YnI+CiZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO3N0YXRlOiBmYWxzZTxicj4KJm5ic3A7Jm5ic3A7 Jm5ic3A7RVJSSU5KX1JFTEFZX0VYSVRfREVMQVk6PGJyPgpkaWZmIC0tZ2l0IGEvdGVzdC91bml0 L3NheS5jIGIvdGVzdC91bml0L3NheS5jPGJyPgppbmRleCA4Yzk5NmJhLi4wZmZkMjY3IDEwMDY0 NDxicj4KLS0tIGEvdGVzdC91bml0L3NheS5jPGJyPgorKysgYi90ZXN0L3VuaXQvc2F5LmM8YnI+ CkBAIC00LDYgKzQsOCBAQDxicj4KJm5ic3A7I2luY2x1ZGUgInVuaXQuaCI8YnI+CiZuYnNwOyNp bmNsdWRlICJzYXkuaCI8YnI+CiZuYnNwOyNpbmNsdWRlICZsdDtwdGhyZWFkLmgmZ3Q7PGJyPgor I2luY2x1ZGUgJmx0O2Vycmluai5oJmd0Ozxicj4KKyNpbmNsdWRlICZsdDtjb2lvX3Rhc2suaCZn dDs8YnI+CiZuYnNwOzxicj4KJm5ic3A7aW50PGJyPgombmJzcDtwYXJzZV9sb2dnZXJfdHlwZShj b25zdCBjaGFyICppbnB1dCk8YnI+CkBAIC02NywyOCArNjksMzQgQEAgcHRocmVhZF9jb25kX3Qg Y29uZF9zeW5jID0gUFRIUkVBRF9DT05EX0lOSVRJQUxJWkVSOzxicj4KJm5ic3A7PGJyPgombmJz cDtib29sIGlzX3JhaXNlZCA9IGZhbHNlOzxicj4KJm5ic3A7aW50IGNyZWF0ZWRfbG9ncyA9IDA7 PGJyPgorY29uc3QgY2hhciAqdG1wX2Rpcjs8YnI+Cis8YnI+CitzdHJ1Y3QgY3JlYXRlX2xvZyB7 PGJyPgorCXN0cnVjdCBsb2cgbG9nZ2VyOzxicj4KKwlpbnQgaWQ7PGJyPgorfTs8YnI+CiZuYnNw Ozxicj4KJm5ic3A7c3RhdGljIHZvaWQgKjxicj4KJm5ic3A7ZHVtbXlfbG9nKHZvaWQgKmFyZyk8 YnI+CiZuYnNwO3s8YnI+Ci0JY29uc3QgY2hhciAqdG1wX2RpciA9IChjb25zdCBjaGFyICopIGFy Zzs8YnI+CisJc3RydWN0IGNyZWF0ZV9sb2cgKmNyZWF0ZV9sb2cgPSAoc3RydWN0IGNyZWF0ZV9s b2cgKikgYXJnOzxicj4KKzxicj4KJm5ic3A7CWNoYXIgdG1wX2ZpbGVuYW1lWzMwXTs8YnI+Ci0J c3ByaW50Zih0bXBfZmlsZW5hbWUsICIlcy8laS5sb2ciLCB0bXBfZGlyLCAoaW50KSBwdGhyZWFk X3NlbGYoKSk7PGJyPgotCXB0aHJlYWRfbXV0ZXhfbG9jaygmYW1wO211dGV4KTs8YnI+Ci0Jc3Ry dWN0IGxvZyB0ZXN0X2xvZzs8YnI+Ci0JbG9nX2NyZWF0ZSgmYW1wO3Rlc3RfbG9nLCB0bXBfZmls ZW5hbWUsIGZhbHNlKTs8YnI+Ci0JLy8gc2lnbmFsIHRoYXQgbG9nIGlzIGNyZWF0ZWQ8YnI+CisJ c3ByaW50Zih0bXBfZmlsZW5hbWUsICIlcy8laS5sb2ciLCB0bXBfZGlyLCBjcmVhdGVfbG9nLSZn dDtpZCk7PGJyPgorCXR0X3B0aHJlYWRfbXV0ZXhfbG9jaygmYW1wO211dGV4KTs8YnI+CisJbG9n X2NyZWF0ZSgmYW1wO2NyZWF0ZV9sb2ctJmd0O2xvZ2dlciwgdG1wX2ZpbGVuYW1lLCBmYWxzZSk7 PGJyPgorPGJyPgorCS8qIHNpZ25hbCB0aGF0IGxvZyBpcyBjcmVhdGVkICovPGJyPgombmJzcDsJ Y3JlYXRlZF9sb2dzKys7PGJyPgotCXB0aHJlYWRfY29uZF9zaWduYWwoJmFtcDtjb25kX3N5bmMp Ozxicj4KKwl0dF9wdGhyZWFkX2NvbmRfc2lnbmFsKCZhbXA7Y29uZF9zeW5jKTs8YnI+CiZuYnNw Ozxicj4KLQkvLyB3YWl0IHVudGlsIHJvdGF0ZSBzaWduYWwgaXMgcmFpc2VkPGJyPgorCS8qIHdh aXQgdW50aWwgcm90YXRlIHNpZ25hbCBpcyByYWlzZWQgKi88YnI+CiZuYnNwOwl3aGlsZSAoIWlz X3JhaXNlZCk8YnI+Ci0JCXB0aHJlYWRfY29uZF93YWl0KCZhbXA7Y29uZCwgJmFtcDttdXRleCk7 PGJyPgotPGJyPgotCWxvZ19kZXN0cm95KCZhbXA7dGVzdF9sb2cpOzxicj4KKwkJdHRfcHRocmVh ZF9jb25kX3dhaXQoJmFtcDtjb25kLCAmYW1wO211dGV4KTs8YnI+CiZuYnNwOwljcmVhdGVkX2xv Z3MtLTs8YnI+Ci0JcHRocmVhZF9jb25kX3NpZ25hbCgmYW1wO2NvbmRfc3luYyk7PGJyPgotCXB0 aHJlYWRfbXV0ZXhfdW5sb2NrKCZhbXA7bXV0ZXgpOzxicj4KKwlpZiAoY3JlYXRlZF9sb2dzID09 IDApPGJyPgorCQlwdGhyZWFkX2NvbmRfc2lnbmFsKCZhbXA7Y29uZF9zeW5jKTs8YnI+CisJdHRf cHRocmVhZF9tdXRleF91bmxvY2soJmFtcDttdXRleCk7PGJyPgombmJzcDsJcmV0dXJuIE5VTEw7 PGJyPgombmJzcDt9PGJyPgombmJzcDs8YnI+CkBAIC05NiwyNiArMTA0LDU0IEBAIHN0YXRpYyB2 b2lkPGJyPgombmJzcDt0ZXN0X2xvZ19yb3RhdGUoKTxicj4KJm5ic3A7ezxicj4KJm5ic3A7CWNo YXIgdGVtcGxhdGVbXSA9ICIvdG1wL3RtcGRpci5YWFhYWFgiOzxicj4KLQljb25zdCBjaGFyICp0 bXBfZGlyID0gbWtkdGVtcCh0ZW1wbGF0ZSk7PGJyPgorCXRtcF9kaXIgPSBta2R0ZW1wKHRlbXBs YXRlKTs8YnI+CisJY29uc3QgaW50IE5VTUJFUl9MT0dHRVJTID0gMTA7PGJyPgorCXN0cnVjdCBj cmVhdGVfbG9nICpsb2dnZXJzID0gKHN0cnVjdCBjcmVhdGVfbG9nICopIGNhbGxvYyhOVU1CRVJf TE9HR0VSUyw8YnI+CisJCQkJCQkgIHNpemVvZihzdHJ1Y3QgY3JlYXRlX2xvZykpOzxicj4KKwlp ZiAobG9nZ2VycyA9PSBOVUxMKSB7PGJyPgorCQlyZXR1cm47PGJyPgorCX08YnI+CiZuYnNwOwlp bnQgcnVubmluZyA9IDA7PGJyPgotCWZvciAoaW50IGkgPSAwOyBpICZsdDsgMTA7IGkrKykgezxi cj4KKwlmb3IgKGludCBpID0gMDsgaSAmbHQ7IE5VTUJFUl9MT0dHRVJTOyBpKyspIHs8YnI+CiZu YnNwOwkJcHRocmVhZF90IHRocmVhZDs8YnI+Ci0JCWlmIChwdGhyZWFkX2NyZWF0ZSgmYW1wO3Ro cmVhZCwgTlVMTCwgZHVtbXlfbG9nLCAodm9pZCAqKSB0bXBfZGlyKSAmZ3Q7PSAwKTxicj4KKwkJ bG9nZ2Vyc1tpXS5pZCA9IGk7PGJyPgorCQlpZiAodHRfcHRocmVhZF9jcmVhdGUoJmFtcDt0aHJl YWQsIE5VTEwsIGR1bW15X2xvZyw8YnI+CisJCQkJICAgKHZvaWQgKikgJmFtcDtsb2dnZXJzW2ld KSAmZ3Q7PSAwKTxicj4KJm5ic3A7CQkJcnVubmluZysrOzxicj4KJm5ic3A7CX08YnI+Ci0JcHRo cmVhZF9tdXRleF9sb2NrKCZhbXA7bXV0ZXgpOzxicj4KLQkvLyB3YWl0IGxvZ2dlcnMgYXJlIGNy ZWF0ZWQ8YnI+Ci0Jd2hpbGUgKGNyZWF0ZWRfbG9ncyAmbHQ7IHJ1bm5pbmcpIHs8YnI+Ci0JCXB0 aHJlYWRfY29uZF93YWl0KCZhbXA7Y29uZF9zeW5jLCAmYW1wO211dGV4KTs8YnI+CisJdHRfcHRo cmVhZF9tdXRleF9sb2NrKCZhbXA7bXV0ZXgpOzxicj4KKwkvKiB3YWl0IGxvZ2dlcnMgYXJlIGNy ZWF0ZWQgKi88YnI+CisJd2hpbGUgKGNyZWF0ZWRfbG9ncyAmbHQ7IHJ1bm5pbmcpPGJyPgorCQl0 dF9wdGhyZWFkX2NvbmRfd2FpdCgmYW1wO2NvbmRfc3luYywgJmFtcDttdXRleCk7PGJyPgorCXR0 X3B0aHJlYWRfbXV0ZXhfdW5sb2NrKCZhbXA7bXV0ZXgpOzxicj4KKwlzYXlfbG9ncm90YXRlKE5V TEwsIE5VTEwsIDApOzxicj4KKzxicj4KKwlmb3IgKGludCBpID0gMDsgaSAmbHQ7IGNyZWF0ZWRf bG9nczsgaSsrKSB7PGJyPgorCQlsb2dfZGVzdHJveSgmYW1wO2xvZ2dlcnNbaV0ubG9nZ2VyKTs8 YnI+CiZuYnNwOwl9PGJyPgotCXJhaXNlKFNJR0hVUCk7PGJyPgorCW1lbXNldChsb2dnZXJzLCAn IycsIE5VTUJFUl9MT0dHRVJTICogc2l6ZW9mKHN0cnVjdCBjcmVhdGVfbG9nKSk7PGJyPgorCWZy ZWUobG9nZ2Vycyk7PGJyPgorPGJyPgombmJzcDsJaXNfcmFpc2VkID0gdHJ1ZTs8YnI+Ci0JcHRo cmVhZF9jb25kX2Jyb2FkY2FzdCgmYW1wO2NvbmQpOzxicj4KKwl0dF9wdGhyZWFkX2NvbmRfYnJv YWRjYXN0KCZhbXA7Y29uZCk7PGJyPgombmJzcDs8YnI+Ci0JLy8gd2FpdCB1bnRpbCBsb2dnZXJz IGFyZSBjbG9zZWQ8YnI+Ci0Jd2hpbGUoY3JlYXRlZF9sb2dzICE9IDApPGJyPgotCQlwdGhyZWFk X2NvbmRfd2FpdCgmYW1wO2NvbmRfc3luYywgJmFtcDttdXRleCk7PGJyPgotCXB0aHJlYWRfbXV0 ZXhfdW5sb2NrKCZhbXA7bXV0ZXgpOzxicj4KKwl0dF9wdGhyZWFkX211dGV4X2xvY2soJmFtcDtt dXRleCk7PGJyPgorCS8qIHdhaXQgdGhyZWFkcyBhcmUgZmluaXNoZWQgKi88YnI+CisJd2hpbGUg KGNyZWF0ZWRfbG9ncyAmZ3Q7IDApPGJyPgorCQl0dF9wdGhyZWFkX2NvbmRfd2FpdCgmYW1wO2Nv bmRfc3luYywgJmFtcDttdXRleCk7PGJyPgorCXR0X3B0aHJlYWRfbXV0ZXhfdW5sb2NrKCZhbXA7 bXV0ZXgpOzxicj4KK308YnI+Cis8YnI+CitzdGF0aWMgaW50PGJyPgorbWFpbl9mKHZhX2xpc3Qg YXApPGJyPgorezxicj4KKwlzdHJ1Y3QgZXJyaW5qICppbmogPSBlcnJpbmpfYnlfbmFtZSgiRVJS SU5KX0xPR19ST1RBVEUiKTs8YnI+CisJaW5qLSZndDticGFyYW0gPSB0cnVlOzxicj4KKwkvKiB0 ZXN0IG9uIGxvZ19yb3RhdGUgc2lnbmFsIGhhbmRsaW5nICovPGJyPgorCXRlc3RfbG9nX3JvdGF0 ZSgpOzxicj4KKwlpbmotJmd0O2JwYXJhbSA9IGZhbHNlOzxicj4KKwlldl9icmVhayhsb29wKCks IEVWQlJFQUtfQUxMKTs8YnI+CisJcmV0dXJuIDA7PGJyPgombmJzcDt9PGJyPgombmJzcDs8YnI+ CiZuYnNwO2ludCBtYWluKCk8YnI+CkBAIC0xODcsMTEgKzIyMywxOCBAQCBpbnQgbWFpbigpPGJy PgombmJzcDsJfTxicj4KJm5ic3A7CWxvZ19kZXN0cm95KCZhbXA7dGVzdF9sb2cpOzxicj4KJm5i c3A7PGJyPgotCS8vIHRlc3Qgb24gbG9nX3JvdGF0ZSBzaWduYWwgaGFuZGxpbmc8YnI+Ci0Jc3Ry dWN0IGV2X3NpZ25hbCBldl9zaWc7PGJyPgotCWV2X3NpZ25hbF9pbml0KCZhbXA7ZXZfc2lnLCBz YXlfbG9ncm90YXRlLCBTSUdIVVApOzxicj4KLQlldl9zaWduYWxfc3RhcnQobG9vcCgpLCAmYW1w O2V2X3NpZyk7PGJyPgotCXRlc3RfbG9nX3JvdGF0ZSgpOzxicj4KLQlldl9zaWduYWxfc3RvcChs b29wKCksICZhbXA7ZXZfc2lnKTs8YnI+CisJY29pb19pbml0KCk7PGJyPgorCWNvaW9fZW5hYmxl KCk7PGJyPgorPGJyPgorCXN0cnVjdCBmaWJlciAqdGVzdCA9IGZpYmVyX25ldygibG9nZ2VycyIs IG1haW5fZik7PGJyPgorCWlmICh0ZXN0ID09IE5VTEwpIHs8YnI+CisJCWRpYWdfbG9nKCk7PGJy PgorCQlyZXR1cm4gY2hlY2tfcGxhbigpOzxicj4KKwl9PGJyPgorCWZpYmVyX3dha2V1cCh0ZXN0 KTs8YnI+CisJZXZfcnVuKGxvb3AoKSwgMCk7PGJyPgorPGJyPgorCWZpYmVyX2ZyZWUoKTs8YnI+ CisJbWVtb3J5X2ZyZWUoKTs8YnI+CiZuYnNwOwlyZXR1cm4gY2hlY2tfcGxhbigpOzxicj4KJm5i c3A7fTxicj4KLS0gPGJyPgoyLjcuNDxicj4KPGJyPgo8L2Rpdj4KICAgICAgICAgICAgCiAgICAg ICAgCgkJPGJhc2UgdGFyZ2V0PSJfc2VsZiIgaHJlZj0iaHR0cHM6Ly9lLm1haWwucnUvIj4KCTwv ZGl2PgoKCQo8L2Rpdj4KCgoKPGJyPjxocj4KPGJyPi0tIDxicj5UaGFuayB5b3UsPGJyPklseWEg TWFya292PGJyPjwvQk9EWT48L0hUTUw+Cg== ----ALT--VDIVRr9ERxT0tYoSBbivR06hfLgQcbYy1522224370--