From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from f745.i.mail.ru (f745.i.mail.ru [128.140.172.165]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dev.tarantool.org (Postfix) with ESMTPS id 0C9AF430407 for ; Mon, 17 Aug 2020 18:51:01 +0300 (MSK) From: =?UTF-8?B?U2VyZ2UgUGV0cmVua28=?= MIME-Version: 1.0 Date: Mon, 17 Aug 2020 18:51:00 +0300 Reply-To: =?UTF-8?B?U2VyZ2UgUGV0cmVua28=?= Message-ID: <1597679460.185815010@f745.i.mail.ru> Content-Type: multipart/alternative; boundary="--ALT--54a6E9c9e81EF5244Fb6704aA481730d1597679460" In-Reply-To: References: <20200813221757.GB2074@grain> Subject: Re: [Tarantool-patches] =?utf-8?q?=5BPATCH_1/1=5D_xrow=3A_introduce_s?= =?utf-8?q?truct_synchro=5Frequest?= List-Id: Tarantool development patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: =?UTF-8?B?VmxhZGlzbGF2IFNocGlsZXZveQ==?= Cc: tarantool-patches@dev.tarantool.org ----ALT--54a6E9c9e81EF5244Fb6704aA481730d1597679460 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: base64 CsKgCkhpISBUaGFua3MgZm9yIHRoZSBwYXRjaCEKCkxHVE0uCsKgCsKgCsKgCsKgIAo+0KHRg9Cx 0LHQvtGC0LAsIDE1INCw0LLQs9GD0YHRgtCwIDIwMjAsIDE2OjI0ICswMzowMCDQvtGCIFZsYWRp c2xhdiBTaHBpbGV2b3kgPHYuc2hwaWxldm95QHRhcmFudG9vbC5vcmc+Ogo+wqAKPkhpISBUaGFu a3MgZm9yIHRoZSByZXZpZXchCj4KPk9uIDE0LjA4LjIwMjAgMDA6MTcsIEN5cmlsbCBHb3JjdW5v diB3cm90ZToKPj4gT24gVGh1LCBBdWcgMTMsIDIwMjAgYXQgMTE6NTg6MjBQTSArMDIwMCwgVmxh ZGlzbGF2IFNocGlsZXZveSB3cm90ZToKPj4gLi4uCj4+PiArdHhuX2xpbWJvX3dyaXRlX3N5bmNo cm8oc3RydWN0IHR4bl9saW1ibyAqbGltYm8sIHVpbnQzMl90IHR5cGUsIGludDY0X3QgbHNuKQo+ Pj4gewo+Pj4gYXNzZXJ0KGxzbiA+IDApOwo+Pj4KPj4+ICsgc3RydWN0IHN5bmNocm9fcmVxdWVz dCByZXE7Cj4+PiArIHJlcS50eXBlID0gdHlwZTsKPj4+ICsgcmVxLnJlcGxpY2FfaWQgPSBsaW1i by0+aW5zdGFuY2VfaWQ7Cj4+PiArIHJlcS5sc24gPSBsc247Cj4+PiArCj4+Cj4+IFZsYWQsIHdo aWxlIHlvdSdyZSBhdCB0aGlzIGNvZGUsIGNvdWxkIHdlIHBsZWFzZSB1c2UgZGVzaWduYXRlZAo+ PiBpbml0aWFsaXphdGlvbiBmcm9tIHRoZSB2ZXJ5IGJlZ2lubmluZywgaWUKPj4KPj4gc3RydWN0 IHN5bmNocm9fcmVxdWVzdCByZXEgPSB7Cj4+IC50eXBlID0gdHlwZSwKPj4gLnJlcGxpY2FfaWQg PSBsaW1iby0+aW5zdGFuY2VfaWQsCj4+IC5sc24gPSBsc24sCj4+IH07Cj4+Cj4+ICh0aGUgYWxp Z25tZW50IGlzIHVwIHRvIHlvdSB0aG91Z2gpLiBTdWNoIGluaXRpYWxpemF0aW9uIHdvbid0Cj4+ IGFsbG93IGEgYnVnIHRvIGhhcHBlbiB3aGVuIHdlIGdldCBhIHN0cnVjdHVyZSBleHRlbnNpb24g YW5kCj4+IG90aGVyIG5vbiB1cGRhdGVkIGZpZWxkcyB3aWxsIGJlIHplcm9pZmllZC4KPk9rLCBk b25lOgo+Cj49PT09PT09PT09PT09PT09PT09PQo+QEAgLTI3NywxMCArMjc3LDExIEBAIHR4bl9s aW1ib193cml0ZV9zeW5jaHJvKHN0cnVjdCB0eG5fbGltYm8gKmxpbWJvLCB1aW50MzJfdCB0eXBl LCBpbnQ2NF90IGxzbikKPsKgewo+wqAgYXNzZXJ0KGxzbiA+IDApOwo+wqAKPi0gc3RydWN0IHN5 bmNocm9fcmVxdWVzdCByZXE7Cj4tIHJlcS50eXBlID0gdHlwZTsKPi0gcmVxLnJlcGxpY2FfaWQg PSBsaW1iby0+aW5zdGFuY2VfaWQ7Cj4tIHJlcS5sc24gPSBsc247Cj4rIHN0cnVjdCBzeW5jaHJv X3JlcXVlc3QgcmVxID0gewo+KyAudHlwZSA9IHR5cGUsCj4rIC5yZXBsaWNhX2lkID0gbGltYm8t Pmluc3RhbmNlX2lkLAo+KyAubHNuID0gbHNuLAo+KyB9Owo+wqAKPj09PT09PT09PT09PT09PT09 PT09Cj4KPk5ldyBjb21wbGV0ZSBwYXRjaDoKPgo+PT09PT09PT09PT09PT09PT09PT0KPmRpZmYg LS1naXQgYS9zcmMvYm94L2FwcGxpZXIuY2MgYi9zcmMvYm94L2FwcGxpZXIuY2MKPmluZGV4IGE5 NTNkMjkzZS4uOThmYjg3Mzc1IDEwMDY0NAo+LS0tIGEvc3JjL2JveC9hcHBsaWVyLmNjCj4rKysg Yi9zcmMvYm94L2FwcGxpZXIuY2MKPkBAIC0yNzUsMjYgKzI3NSwxNCBAQCBwcm9jZXNzX25vcChz dHJ1Y3QgcmVxdWVzdCAqcmVxdWVzdCkKPsKgwqAqIG9yIHJvbGxiYWNrIHNvbWUgb2YgaXRzIGVu dHJpZXMuCj7CoMKgKi8KPsKgc3RhdGljIGludAo+LXByb2Nlc3NfY29uZmlybV9yb2xsYmFjayhz dHJ1Y3QgcmVxdWVzdCAqcmVxdWVzdCwgYm9vbCBpc19jb25maXJtKQo+K3Byb2Nlc3Nfc3luY2hy b19yb3coc3RydWN0IHJlcXVlc3QgKnJlcXVlc3QpCj7CoHsKPsKgIGFzc2VydChpcHJvdG9fdHlw ZV9pc19zeW5jaHJvX3JlcXVlc3QocmVxdWVzdC0+aGVhZGVyLT50eXBlKSk7Cj4tIHVpbnQzMl90 IHJlcGxpY2FfaWQ7Cj7CoCBzdHJ1Y3QgdHhuICp0eG4gPSBpbl90eG4oKTsKPi0gaW50NjRfdCBs c24gPSAwOwo+wqAKPi0gaW50IHJlcyA9IDA7Cj4tIGlmIChpc19jb25maXJtKQo+LSByZXMgPSB4 cm93X2RlY29kZV9jb25maXJtKHJlcXVlc3QtPmhlYWRlciwgJnJlcGxpY2FfaWQsICZsc24pOwo+ LSBlbHNlCj4tIHJlcyA9IHhyb3dfZGVjb2RlX3JvbGxiYWNrKHJlcXVlc3QtPmhlYWRlciwgJnJl cGxpY2FfaWQsICZsc24pOwo+LSBpZiAocmVzID09IC0xKQo+LSByZXR1cm4gLTE7Cj4tCj4tIGlm IChyZXBsaWNhX2lkICE9IHR4bl9saW1iby5pbnN0YW5jZV9pZCkgewo+LSBkaWFnX3NldChDbGll bnRFcnJvciwgRVJfU1lOQ19NQVNURVJfTUlTTUFUQ0gsIHJlcGxpY2FfaWQsCj4tIHR4bl9saW1i by5pbnN0YW5jZV9pZCk7Cj4rIHN0cnVjdCBzeW5jaHJvX3JlcXVlc3Qgc3luX3JlcTsKPisgaWYg KHhyb3dfZGVjb2RlX3N5bmNocm8ocmVxdWVzdC0+aGVhZGVyLCAmc3luX3JlcSkgIT0gMCkKPsKg IHJldHVybiAtMTsKPi0gfQo+wqAgYXNzZXJ0KHR4bi0+bl9hcHBsaWVyX3Jvd3MgPT0gMCk7Cj7C oCAvKgo+wqAgKiBUaGlzIGlzIG5vdCByZWFsbHkgYSB0cmFuc2FjdGlvbi4gSXQganVzdCB1c2Vz IHR4biBBUEkKPkBAIC0zMDYsMTYgKzI5NCw5IEBAIHByb2Nlc3NfY29uZmlybV9yb2xsYmFjayhz dHJ1Y3QgcmVxdWVzdCAqcmVxdWVzdCwgYm9vbCBpc19jb25maXJtKQo+wqAKPsKgIGlmICh0eG5f YmVnaW5fc3RtdCh0eG4sIE5VTEwpICE9IDApCj7CoCByZXR1cm4gLTE7Cj4tCj4tIGlmICh0eG5f Y29tbWl0X3N0bXQodHhuLCByZXF1ZXN0KSA9PSAwKSB7Cj4tIGlmIChpc19jb25maXJtKQo+LSB0 eG5fbGltYm9fcmVhZF9jb25maXJtKCZ0eG5fbGltYm8sIGxzbik7Cj4tIGVsc2UKPi0gdHhuX2xp bWJvX3JlYWRfcm9sbGJhY2soJnR4bl9saW1ibywgbHNuKTsKPi0gcmV0dXJuIDA7Cj4tIH0gZWxz ZSB7Cj4rIGlmICh0eG5fY29tbWl0X3N0bXQodHhuLCByZXF1ZXN0KSAhPSAwKQo+wqAgcmV0dXJu IC0xOwo+LSB9Cj4rIHJldHVybiB0eG5fbGltYm9fcHJvY2VzcygmdHhuX2xpbWJvLCAmc3luX3Jl cSk7Cj7CoH0KPsKgCj7CoHN0YXRpYyBpbnQKPkBAIC0zMjQsOCArMzA1LDcgQEAgYXBwbHlfcm93 KHN0cnVjdCB4cm93X2hlYWRlciAqcm93KQo+wqAgc3RydWN0IHJlcXVlc3QgcmVxdWVzdDsKPsKg IGlmIChpcHJvdG9fdHlwZV9pc19zeW5jaHJvX3JlcXVlc3Qocm93LT50eXBlKSkgewo+wqAgcmVx dWVzdC5oZWFkZXIgPSByb3c7Cj4tIHJldHVybiBwcm9jZXNzX2NvbmZpcm1fcm9sbGJhY2soJnJl cXVlc3QsCj4tIHJvdy0+dHlwZSA9PSBJUFJPVE9fQ09ORklSTSk7Cj4rIHJldHVybiBwcm9jZXNz X3N5bmNocm9fcm93KCZyZXF1ZXN0KTsKPsKgIH0KPsKgIGlmICh4cm93X2RlY29kZV9kbWwocm93 LCAmcmVxdWVzdCwgZG1sX3JlcXVlc3Rfa2V5X21hcChyb3ctPnR5cGUpKSAhPSAwKQo+wqAgcmV0 dXJuIC0xOwo+ZGlmZiAtLWdpdCBhL3NyYy9ib3gvYm94LmNjIGIvc3JjL2JveC9ib3guY2MKPmlu ZGV4IDgzZWVmNWQ5OC4uOGU4MTFlOWMxIDEwMDY0NAo+LS0tIGEvc3JjL2JveC9ib3guY2MKPisr KyBiL3NyYy9ib3gvYm94LmNjCj5AQCAtMzY3LDIyICszNjcsMTEgQEAgYXBwbHlfd2FsX3Jvdyhz dHJ1Y3QgeHN0cmVhbSAqc3RyZWFtLCBzdHJ1Y3QgeHJvd19oZWFkZXIgKnJvdykKPsKgewo+wqAg c3RydWN0IHJlcXVlc3QgcmVxdWVzdDsKPsKgIGlmIChpcHJvdG9fdHlwZV9pc19zeW5jaHJvX3Jl cXVlc3Qocm93LT50eXBlKSkgewo+LSB1aW50MzJfdCByZXBsaWNhX2lkOwo+LSBpbnQ2NF90IGxz bjsKPi0gc3dpdGNoKHJvdy0+dHlwZSkgewo+LSBjYXNlIElQUk9UT19DT05GSVJNOgo+LSBpZiAo eHJvd19kZWNvZGVfY29uZmlybShyb3csICZyZXBsaWNhX2lkLCAmbHNuKSA8IDApCj4tIGRpYWdf cmFpc2UoKTsKPi0gYXNzZXJ0KHR4bl9saW1iby5pbnN0YW5jZV9pZCA9PSByZXBsaWNhX2lkKTsK Pi0gdHhuX2xpbWJvX3JlYWRfY29uZmlybSgmdHhuX2xpbWJvLCBsc24pOwo+LSBicmVhazsKPi0g Y2FzZSBJUFJPVE9fUk9MTEJBQ0s6Cj4tIGlmICh4cm93X2RlY29kZV9yb2xsYmFjayhyb3csICZy ZXBsaWNhX2lkLCAmbHNuKSA8IDApCj4tIGRpYWdfcmFpc2UoKTsKPi0gYXNzZXJ0KHR4bl9saW1i by5pbnN0YW5jZV9pZCA9PSByZXBsaWNhX2lkKTsKPi0gdHhuX2xpbWJvX3JlYWRfcm9sbGJhY2so JnR4bl9saW1ibywgbHNuKTsKPi0gYnJlYWs7Cj4tIH0KPisgc3RydWN0IHN5bmNocm9fcmVxdWVz dCBzeW5fcmVxOwo+KyBpZiAoeHJvd19kZWNvZGVfc3luY2hybyhyb3csICZzeW5fcmVxKSAhPSAw KQo+KyBkaWFnX3JhaXNlKCk7Cj4rIGlmICh0eG5fbGltYm9fcHJvY2VzcygmdHhuX2xpbWJvLCAm c3luX3JlcSkgIT0gMCkKPisgZGlhZ19yYWlzZSgpOwo+wqAgcmV0dXJuOwo+wqAgfQo+wqAgeHJv d19kZWNvZGVfZG1sX3hjKHJvdywgJnJlcXVlc3QsIGRtbF9yZXF1ZXN0X2tleV9tYXAocm93LT50 eXBlKSk7Cj5kaWZmIC0tZ2l0IGEvc3JjL2JveC90eG5fbGltYm8uYyBiL3NyYy9ib3gvdHhuX2xp bWJvLmMKPmluZGV4IGEyMDQzYzE3YS4uYzZhNGU1ZWZjIDEwMDY0NAo+LS0tIGEvc3JjL2JveC90 eG5fbGltYm8uYwo+KysrIGIvc3JjL2JveC90eG5fbGltYm8uYwo+QEAgLTMxLDYgKzMxLDcgQEAK PsKgI2luY2x1ZGUgInR4bi5oIgo+wqAjaW5jbHVkZSAidHhuX2xpbWJvLmgiCj7CoCNpbmNsdWRl ICJyZXBsaWNhdGlvbi5oIgo+KyNpbmNsdWRlICJpcHJvdG9fY29uc3RhbnRzLmgiCj7CoAo+wqBz dHJ1Y3QgdHhuX2xpbWJvIHR4bl9saW1ibzsKPsKgCj5AQCAtMjcyLDExICsyNzMsMTYgQEAgY29t cGxldGU6Cj7CoH0KPsKgCj7CoHN0YXRpYyB2b2lkCj4tdHhuX2xpbWJvX3dyaXRlX2NvbmZpcm1f cm9sbGJhY2soc3RydWN0IHR4bl9saW1ibyAqbGltYm8sIGludDY0X3QgbHNuLAo+LSBib29sIGlz X2NvbmZpcm0pCj4rdHhuX2xpbWJvX3dyaXRlX3N5bmNocm8oc3RydWN0IHR4bl9saW1ibyAqbGlt Ym8sIHVpbnQzMl90IHR5cGUsIGludDY0X3QgbHNuKQo+wqB7Cj7CoCBhc3NlcnQobHNuID4gMCk7 Cj7CoAo+KyBzdHJ1Y3Qgc3luY2hyb19yZXF1ZXN0IHJlcSA9IHsKPisgLnR5cGUgPSB0eXBlLAo+ KyAucmVwbGljYV9pZCA9IGxpbWJvLT5pbnN0YW5jZV9pZCwKPisgLmxzbiA9IGxzbiwKPisgfTsK PisKPsKgIHN0cnVjdCB4cm93X2hlYWRlciByb3c7Cj7CoCBzdHJ1Y3QgcmVxdWVzdCByZXF1ZXN0 ID0gewo+wqAgLmhlYWRlciA9ICZyb3csCj5AQCAtMjg2LDE5ICsyOTIsNyBAQCB0eG5fbGltYm9f d3JpdGVfY29uZmlybV9yb2xsYmFjayhzdHJ1Y3QgdHhuX2xpbWJvICpsaW1ibywgaW50NjRfdCBs c24sCj7CoCBpZiAodHhuID09IE5VTEwpCj7CoCBnb3RvIHJvbGxiYWNrOwo+wqAKPi0gaW50IHJl cyA9IDA7Cj4tIGlmIChpc19jb25maXJtKSB7Cj4tIHJlcyA9IHhyb3dfZW5jb2RlX2NvbmZpcm0o JnJvdywgJnR4bi0+cmVnaW9uLAo+LSBsaW1iby0+aW5zdGFuY2VfaWQsIGxzbik7Cj4tIH0gZWxz ZSB7Cj4tIC8qCj4tICogVGhpcyBMU04gaXMgdGhlIGZpcnN0IHRvIGJlIHJvbGxlZCBiYWNrLCBz bwo+LSAqIHRoZSBsYXN0ICJzYWZlIiBsc24gaXMgbHNuIC0gMS4KPi0gKi8KPi0gcmVzID0geHJv d19lbmNvZGVfcm9sbGJhY2soJnJvdywgJnR4bi0+cmVnaW9uLAo+LSBsaW1iby0+aW5zdGFuY2Vf aWQsIGxzbik7Cj4tIH0KPi0gaWYgKHJlcyA9PSAtMSkKPisgaWYgKHhyb3dfZW5jb2RlX3N5bmNo cm8oJnJvdywgJnR4bi0+cmVnaW9uLCAmcmVxKSAhPSAwKQo+wqAgZ290byByb2xsYmFjazsKPsKg IC8qCj7CoCAqIFRoaXMgaXMgbm90IHJlYWxseSBhIHRyYW5zYWN0aW9uLiBJdCBqdXN0IHVzZXMg dHhuIEFQSQo+QEAgLTMyNSw3ICszMTksNyBAQCByb2xsYmFjazoKPsKgICogcHJvYmxlbXMgYXJl IGZpeGVkLiBPciByZXRyeSBhdXRvbWF0aWNhbGx5IHdpdGggc29tZSBwZXJpb2QuCj7CoCAqLwo+ wqAgcGFuaWMoIkNvdWxkIG5vdCB3cml0ZSBhIHN5bmNocm8gcmVxdWVzdCB0byBXQUw6IGxzbiA9 ICVsbGQsIHR5cGUgPSAiCj4tICIlc1xuIiwgbHNuLCBpc19jb25maXJtID8gIkNPTkZJUk0iIDog IlJPTExCQUNLIik7Cj4rICIlc1xuIiwgbHNuLCBpcHJvdG9fdHlwZV9uYW1lKHR5cGUpKTsKPsKg fQo+wqAKPsKgLyoqCj5AQCAtMzM4LDEwICszMzIsMTEgQEAgdHhuX2xpbWJvX3dyaXRlX2NvbmZp cm0oc3RydWN0IHR4bl9saW1ibyAqbGltYm8sIGludDY0X3QgbHNuKQo+wqAgYXNzZXJ0KGxzbiA+ IGxpbWJvLT5jb25maXJtZWRfbHNuKTsKPsKgIGFzc2VydCghbGltYm8tPmlzX2luX3JvbGxiYWNr KTsKPsKgIGxpbWJvLT5jb25maXJtZWRfbHNuID0gbHNuOwo+LSB0eG5fbGltYm9fd3JpdGVfY29u ZmlybV9yb2xsYmFjayhsaW1ibywgbHNuLCB0cnVlKTsKPisgdHhuX2xpbWJvX3dyaXRlX3N5bmNo cm8obGltYm8sIElQUk9UT19DT05GSVJNLCBsc24pOwo+wqB9Cj7CoAo+LXZvaWQKPisvKiogQ29u ZmlybSBhbGwgdGhlIGVudHJpZXMgPD0gQGEgbHNuLiAqLwo+K3N0YXRpYyB2b2lkCj7CoHR4bl9s aW1ib19yZWFkX2NvbmZpcm0oc3RydWN0IHR4bl9saW1ibyAqbGltYm8sIGludDY0X3QgbHNuKQo+ wqB7Cj7CoCBhc3NlcnQobGltYm8tPmluc3RhbmNlX2lkICE9IFJFUExJQ0FfSURfTklMKTsKPkBA IC0zOTAsMTEgKzM4NSwxMiBAQCB0eG5fbGltYm9fd3JpdGVfcm9sbGJhY2soc3RydWN0IHR4bl9s aW1ibyAqbGltYm8sIGludDY0X3QgbHNuKQo+wqAgYXNzZXJ0KGxzbiA+IGxpbWJvLT5jb25maXJt ZWRfbHNuKTsKPsKgIGFzc2VydCghbGltYm8tPmlzX2luX3JvbGxiYWNrKTsKPsKgIGxpbWJvLT5p c19pbl9yb2xsYmFjayA9IHRydWU7Cj4tIHR4bl9saW1ib193cml0ZV9jb25maXJtX3JvbGxiYWNr KGxpbWJvLCBsc24sIGZhbHNlKTsKPisgdHhuX2xpbWJvX3dyaXRlX3N5bmNocm8obGltYm8sIElQ Uk9UT19ST0xMQkFDSywgbHNuKTsKPsKgIGxpbWJvLT5pc19pbl9yb2xsYmFjayA9IGZhbHNlOwo+ wqB9Cj7CoAo+LXZvaWQKPisvKiogUm9sbGJhY2sgYWxsIHRoZSBlbnRyaWVzID49IEBhIGxzbi4g Ki8KPitzdGF0aWMgdm9pZAo+wqB0eG5fbGltYm9fcmVhZF9yb2xsYmFjayhzdHJ1Y3QgdHhuX2xp bWJvICpsaW1ibywgaW50NjRfdCBsc24pCj7CoHsKPsKgIGFzc2VydChsaW1iby0+aW5zdGFuY2Vf aWQgIT0gUkVQTElDQV9JRF9OSUwpOwo+QEAgLTU3Nyw2ICs1NzMsMjcgQEAgY29tcGxldGU6Cj7C oCByZXR1cm4gMDsKPsKgfQo+wqAKPitpbnQKPit0eG5fbGltYm9fcHJvY2VzcyhzdHJ1Y3QgdHhu X2xpbWJvICpsaW1ibywgY29uc3Qgc3RydWN0IHN5bmNocm9fcmVxdWVzdCAqcmVxKQo+K3sKPisg aWYgKHJlcS0+cmVwbGljYV9pZCAhPSBsaW1iby0+aW5zdGFuY2VfaWQpIHsKPisgZGlhZ19zZXQo Q2xpZW50RXJyb3IsIEVSX1NZTkNfTUFTVEVSX01JU01BVENILCByZXEtPnJlcGxpY2FfaWQsCj4r IGxpbWJvLT5pbnN0YW5jZV9pZCk7Cj4rIHJldHVybiAtMTsKPisgfQo+KyBzd2l0Y2ggKHJlcS0+ dHlwZSkgewo+KyBjYXNlIElQUk9UT19DT05GSVJNOgo+KyB0eG5fbGltYm9fcmVhZF9jb25maXJt KGxpbWJvLCByZXEtPmxzbik7Cj4rIGJyZWFrOwo+KyBjYXNlIElQUk9UT19ST0xMQkFDSzoKPisg dHhuX2xpbWJvX3JlYWRfcm9sbGJhY2sobGltYm8sIHJlcS0+bHNuKTsKPisgYnJlYWs7Cj4rIGRl ZmF1bHQ6Cj4rIHVucmVhY2hhYmxlKCk7Cj4rIH0KPisgcmV0dXJuIDA7Cj4rfQo+Kwo+wqB2b2lk Cj7CoHR4bl9saW1ib19mb3JjZV9lbXB0eShzdHJ1Y3QgdHhuX2xpbWJvICpsaW1ibywgaW50NjRf dCBjb25maXJtX2xzbikKPsKgewo+ZGlmZiAtLWdpdCBhL3NyYy9ib3gvdHhuX2xpbWJvLmggYi9z cmMvYm94L3R4bl9saW1iby5oCj5pbmRleCAwNGVlN2VhNWMuLmVhZjY2Mjk4NyAxMDA2NDQKPi0t LSBhL3NyYy9ib3gvdHhuX2xpbWJvLmgKPisrKyBiL3NyYy9ib3gvdHhuX2xpbWJvLmgKPkBAIC0z OSw2ICszOSw3IEBAIGV4dGVybiAiQyIgewo+wqAjZW5kaWYgLyogZGVmaW5lZChfX2NwbHVzcGx1 cykgKi8KPsKgCj7CoHN0cnVjdCB0eG47Cj4rc3RydWN0IHN5bmNocm9fcmVxdWVzdDsKPsKgCj7C oC8qKgo+wqDCoCogVHJhbnNhY3Rpb24gYW5kIGl0cyBxdW9ydW0gbWV0YWRhdGEsIHRvIGJlIHN0 b3JlZCBpbiBsaW1iby4KPkBAIC0yNDUsMTcgKzI0Niw5IEBAIHR4bl9saW1ib19hY2soc3RydWN0 IHR4bl9saW1ibyAqbGltYm8sIHVpbnQzMl90IHJlcGxpY2FfaWQsIGludDY0X3QgbHNuKTsKPsKg aW50Cj7CoHR4bl9saW1ib193YWl0X2NvbXBsZXRlKHN0cnVjdCB0eG5fbGltYm8gKmxpbWJvLCBz dHJ1Y3QgdHhuX2xpbWJvX2VudHJ5ICplbnRyeSk7Cj7CoAo+LS8qKgo+LSAqIENvbmZpcm0gYWxs IHRoZSBlbnRyaWVzIHVwIHRvIHRoZSBnaXZlbiBtYXN0ZXIncyBMU04uCj4tICovCj4tdm9pZAo+ LXR4bl9saW1ib19yZWFkX2NvbmZpcm0oc3RydWN0IHR4bl9saW1ibyAqbGltYm8sIGludDY0X3Qg bHNuKTsKPi0KPi0vKioKPi0gKiBSb2xsYmFjayBhbGwgdGhlIGVudHJpZXMgc3RhcnRpbmcgd2l0 aCBnaXZlbiBtYXN0ZXIncyBMU04uCj4tICovCj4tdm9pZAo+LXR4bl9saW1ib19yZWFkX3JvbGxi YWNrKHN0cnVjdCB0eG5fbGltYm8gKmxpbWJvLCBpbnQ2NF90IGxzbik7Cj4rLyoqIEV4ZWN1dGUg YSBzeW5jaHJvbm91cyByZXBsaWNhdGlvbiByZXF1ZXN0LiAqLwo+K2ludAo+K3R4bl9saW1ib19w cm9jZXNzKHN0cnVjdCB0eG5fbGltYm8gKmxpbWJvLCBjb25zdCBzdHJ1Y3Qgc3luY2hyb19yZXF1 ZXN0ICpyZXEpOwo+wqAKPsKgLyoqCj7CoMKgKiBXYWl0aW5nIGZvciBjb25maXJtYXRpb24gb2Yg YWxsICJzeW5jIiB0cmFuc2FjdGlvbnMKPmRpZmYgLS1naXQgYS9zcmMvYm94L3hyb3cuYyBiL3Ny Yy9ib3gveHJvdy5jCj5pbmRleCAwYzc5N2E5ZDUuLmJmMTc0YzcwMSAxMDA2NDQKPi0tLSBhL3Ny Yy9ib3gveHJvdy5jCj4rKysgYi9zcmMvYm94L3hyb3cuYwo+QEAgLTg5MywxMyArODkzLDEzIEBA IHhyb3dfZW5jb2RlX2RtbChjb25zdCBzdHJ1Y3QgcmVxdWVzdCAqcmVxdWVzdCwgc3RydWN0IHJl Z2lvbiAqcmVnaW9uLAo+wqAgcmV0dXJuIGlvdmNudDsKPsKgfQo+wqAKPi1zdGF0aWMgaW50Cj4t eHJvd19lbmNvZGVfY29uZmlybV9yb2xsYmFjayhzdHJ1Y3QgeHJvd19oZWFkZXIgKnJvdywgc3Ry dWN0IHJlZ2lvbiAqcmVnaW9uLAo+LSB1aW50MzJfdCByZXBsaWNhX2lkLCBpbnQ2NF90IGxzbiwg aW50IHR5cGUpCj4raW50Cj4reHJvd19lbmNvZGVfc3luY2hybyhzdHJ1Y3QgeHJvd19oZWFkZXIg KnJvdywgc3RydWN0IHJlZ2lvbiAqcmVnaW9uLAo+KyBjb25zdCBzdHJ1Y3Qgc3luY2hyb19yZXF1 ZXN0ICpyZXEpCj7CoHsKPsKgIHNpemVfdCBsZW4gPSBtcF9zaXplb2ZfbWFwKDIpICsgbXBfc2l6 ZW9mX3VpbnQoSVBST1RPX1JFUExJQ0FfSUQpICsKPi0gbXBfc2l6ZW9mX3VpbnQocmVwbGljYV9p ZCkgKyBtcF9zaXplb2ZfdWludChJUFJPVE9fTFNOKSArCj4tIG1wX3NpemVvZl91aW50KGxzbik7 Cj4rIG1wX3NpemVvZl91aW50KHJlcS0+cmVwbGljYV9pZCkgKwo+KyBtcF9zaXplb2ZfdWludChJ UFJPVE9fTFNOKSArIG1wX3NpemVvZl91aW50KHJlcS0+bHNuKTsKPsKgIGNoYXIgKmJ1ZiA9IChj aGFyICopcmVnaW9uX2FsbG9jKHJlZ2lvbiwgbGVuKTsKPsKgIGlmIChidWYgPT0gTlVMTCkgewo+ wqAgZGlhZ19zZXQoT3V0T2ZNZW1vcnksIGxlbiwgInJlZ2lvbl9hbGxvYyIsICJidWYiKTsKPkBA IC05MDksOSArOTA5LDkgQEAgeHJvd19lbmNvZGVfY29uZmlybV9yb2xsYmFjayhzdHJ1Y3QgeHJv d19oZWFkZXIgKnJvdywgc3RydWN0IHJlZ2lvbiAqcmVnaW9uLAo+wqAKPsKgIHBvcyA9IG1wX2Vu Y29kZV9tYXAocG9zLCAyKTsKPsKgIHBvcyA9IG1wX2VuY29kZV91aW50KHBvcywgSVBST1RPX1JF UExJQ0FfSUQpOwo+LSBwb3MgPSBtcF9lbmNvZGVfdWludChwb3MsIHJlcGxpY2FfaWQpOwo+KyBw b3MgPSBtcF9lbmNvZGVfdWludChwb3MsIHJlcS0+cmVwbGljYV9pZCk7Cj7CoCBwb3MgPSBtcF9l bmNvZGVfdWludChwb3MsIElQUk9UT19MU04pOwo+LSBwb3MgPSBtcF9lbmNvZGVfdWludChwb3Ms IGxzbik7Cj4rIHBvcyA9IG1wX2VuY29kZV91aW50KHBvcywgcmVxLT5sc24pOwo+wqAKPsKgIG1l bXNldChyb3csIDAsIHNpemVvZigqcm93KSk7Cj7CoAo+QEAgLTkxOSwzMCArOTE5LDEzIEBAIHhy b3dfZW5jb2RlX2NvbmZpcm1fcm9sbGJhY2soc3RydWN0IHhyb3dfaGVhZGVyICpyb3csIHN0cnVj dCByZWdpb24gKnJlZ2lvbiwKPsKgIHJvdy0+Ym9keVswXS5pb3ZfbGVuID0gbGVuOwo+wqAgcm93 LT5ib2R5Y250ID0gMTsKPsKgCj4tIHJvdy0+dHlwZSA9IHR5cGU7Cj4rIHJvdy0+dHlwZSA9IHJl cS0+dHlwZTsKPsKgCj7CoCByZXR1cm4gMDsKPsKgfQo+wqAKPsKgaW50Cj4teHJvd19lbmNvZGVf Y29uZmlybShzdHJ1Y3QgeHJvd19oZWFkZXIgKnJvdywgc3RydWN0IHJlZ2lvbiAqcmVnaW9uLAo+ LSB1aW50MzJfdCByZXBsaWNhX2lkLCBpbnQ2NF90IGxzbikKPi17Cj4tIHJldHVybiB4cm93X2Vu Y29kZV9jb25maXJtX3JvbGxiYWNrKHJvdywgcmVnaW9uLCByZXBsaWNhX2lkLCBsc24sCj4tIElQ Uk9UT19DT05GSVJNKTsKPi19Cj4tCj4taW50Cj4teHJvd19lbmNvZGVfcm9sbGJhY2soc3RydWN0 IHhyb3dfaGVhZGVyICpyb3csIHN0cnVjdCByZWdpb24gKnJlZ2lvbiwKPi0gdWludDMyX3QgcmVw bGljYV9pZCwgaW50NjRfdCBsc24pCj4tewo+LSByZXR1cm4geHJvd19lbmNvZGVfY29uZmlybV9y b2xsYmFjayhyb3csIHJlZ2lvbiwgcmVwbGljYV9pZCwgbHNuLAo+LSBJUFJPVE9fUk9MTEJBQ0sp Owo+LX0KPi0KPi1zdGF0aWMgaW50Cj4teHJvd19kZWNvZGVfY29uZmlybV9yb2xsYmFjayhzdHJ1 Y3QgeHJvd19oZWFkZXIgKnJvdywgdWludDMyX3QgKnJlcGxpY2FfaWQsCj4tIGludDY0X3QgKmxz bikKPit4cm93X2RlY29kZV9zeW5jaHJvKGNvbnN0IHN0cnVjdCB4cm93X2hlYWRlciAqcm93LCBz dHJ1Y3Qgc3luY2hyb19yZXF1ZXN0ICpyZXEpCj7CoHsKPsKgIGlmIChyb3ctPmJvZHljbnQgPT0g MCkgewo+wqAgZGlhZ19zZXQoQ2xpZW50RXJyb3IsIEVSX0lOVkFMSURfTVNHUEFDSywgInJlcXVl c3QgYm9keSIpOwo+QEAgLTk2MCw2ICs5NDMsNyBAQCB4cm93X2RlY29kZV9jb25maXJtX3JvbGxi YWNrKHN0cnVjdCB4cm93X2hlYWRlciAqcm93LCB1aW50MzJfdCAqcmVwbGljYV9pZCwKPsKgIHJl dHVybiAtMTsKPsKgIH0KPsKgCj4rIG1lbXNldChyZXEsIDAsIHNpemVvZigqcmVxKSk7Cj7CoCBk ID0gZGF0YTsKPsKgIHVpbnQzMl90IG1hcF9zaXplID0gbXBfZGVjb2RlX21hcCgmZCk7Cj7CoCBm b3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgbWFwX3NpemU7IGkrKykgewo+QEAgLTk3NywzMCArOTYx LDE5IEBAIHhyb3dfZGVjb2RlX2NvbmZpcm1fcm9sbGJhY2soc3RydWN0IHhyb3dfaGVhZGVyICpy b3csIHVpbnQzMl90ICpyZXBsaWNhX2lkLAo+wqAgfQo+wqAgc3dpdGNoIChrZXkpIHsKPsKgIGNh c2UgSVBST1RPX1JFUExJQ0FfSUQ6Cj4tICpyZXBsaWNhX2lkID0gbXBfZGVjb2RlX3VpbnQoJmQp Owo+KyByZXEtPnJlcGxpY2FfaWQgPSBtcF9kZWNvZGVfdWludCgmZCk7Cj7CoCBicmVhazsKPsKg IGNhc2UgSVBST1RPX0xTTjoKPi0gKmxzbiA9IG1wX2RlY29kZV91aW50KCZkKTsKPisgcmVxLT5s c24gPSBtcF9kZWNvZGVfdWludCgmZCk7Cj7CoCBicmVhazsKPsKgIGRlZmF1bHQ6Cj7CoCBtcF9u ZXh0KCZkKTsKPsKgIH0KPsKgIH0KPisgcmVxLT50eXBlID0gcm93LT50eXBlOwo+wqAgcmV0dXJu IDA7Cj7CoH0KPsKgCj4taW50Cj4teHJvd19kZWNvZGVfY29uZmlybShzdHJ1Y3QgeHJvd19oZWFk ZXIgKnJvdywgdWludDMyX3QgKnJlcGxpY2FfaWQsIGludDY0X3QgKmxzbikKPi17Cj4tIHJldHVy biB4cm93X2RlY29kZV9jb25maXJtX3JvbGxiYWNrKHJvdywgcmVwbGljYV9pZCwgbHNuKTsKPi19 Cj4tCj4taW50Cj4teHJvd19kZWNvZGVfcm9sbGJhY2soc3RydWN0IHhyb3dfaGVhZGVyICpyb3cs IHVpbnQzMl90ICpyZXBsaWNhX2lkLCBpbnQ2NF90ICpsc24pCj4tewo+LSByZXR1cm4geHJvd19k ZWNvZGVfY29uZmlybV9yb2xsYmFjayhyb3csIHJlcGxpY2FfaWQsIGxzbik7Cj4tfQo+LQo+wqBp bnQKPsKgeHJvd190b19pb3ZlYyhjb25zdCBzdHJ1Y3QgeHJvd19oZWFkZXIgKnJvdywgc3RydWN0 IGlvdmVjICpvdXQpCj7CoHsKPmRpZmYgLS1naXQgYS9zcmMvYm94L3hyb3cuaCBiL3NyYy9ib3gv eHJvdy5oCj5pbmRleCBlMjFlZGU1YTMuLjAyZGNhNzRlNSAxMDA2NDQKPi0tLSBhL3NyYy9ib3gv eHJvdy5oCj4rKysgYi9zcmMvYm94L3hyb3cuaAo+QEAgLTIxNiw1NCArMjE2LDUxIEBAIHhyb3df ZW5jb2RlX2RtbChjb25zdCBzdHJ1Y3QgcmVxdWVzdCAqcmVxdWVzdCwgc3RydWN0IHJlZ2lvbiAq cmVnaW9uLAo+wqAgc3RydWN0IGlvdmVjICppb3YpOwo+wqAKPsKgLyoqCj4tICogRW5jb2RlIHRo ZSBDT05GSVJNIHRvIHJvdyBib2R5IGFuZCBzZXQgcm93IHR5cGUgdG8KPi0gKiBJUFJPVE9fQ09O RklSTS4KPi0gKiBAcGFyYW0gcm93IHhyb3cgaGVhZGVyLgo+LSAqIEBwYXJhbSByZWdpb24gUmVn aW9uIHRvIHVzZSB0byBlbmNvZGUgdGhlIGNvbmZpcm1hdGlvbiBib2R5Lgo+LSAqIEBwYXJhbSBy ZXBsaWNhX2lkIG1hc3RlcidzIGluc3RhbmNlIGlkLgo+LSAqIEBwYXJhbSBsc24gbGFzdCBjb25m aXJtZWQgbHNuLgo+LSAqIEByZXR2YWwgLTEgb24gZXJyb3IuCj4tICogQHJldHZhbCAwIHN1Y2Nl c3MuCj4rICogU3luY2hyb25vdXMgcmVwbGljYXRpb24gcmVxdWVzdCAtIGNvbmZpcm1hdGlvbiBv ciByb2xsYmFjayBvZgo+KyAqIHBlbmRpbmcgc3luY2hyb25vdXMgdHJhbnNhY3Rpb25zLgo+wqDC oCovCj4taW50Cj4teHJvd19lbmNvZGVfY29uZmlybShzdHJ1Y3QgeHJvd19oZWFkZXIgKnJvdywg c3RydWN0IHJlZ2lvbiAqcmVnaW9uLAo+LSB1aW50MzJfdCByZXBsaWNhX2lkLCBpbnQ2NF90IGxz bik7Cj4rc3RydWN0IHN5bmNocm9fcmVxdWVzdCB7Cj4rIC8qKiBPcGVyYXRpb24gdHlwZSAtIElQ Uk9UT19ST0xMQkFDSyBvciBJUFJPVE9fQ09ORklSTS4gKi8KPisgdWludDMyX3QgdHlwZTsKPisg LyoqCj4rICogSUQgb2YgdGhlIGluc3RhbmNlIG93bmluZyB0aGUgcGVuZGluZyB0cmFuc2FjdGlv bnMuCj4rICogTm90ZSwgaXQgbWF5IGJlIG5vdCB0aGUgc2FtZSBpbnN0YW5jZSwgd2hvIGNyZWF0 ZWQgdGhpcwo+KyAqIHJlcXVlc3QuIEFuIGluc3RhbmNlIGNhbiBtYWtlIGFuIG9wZXJhdGlvbiBv biBmb3JlaWduCj4rICogc3luY2hyb25vdXMgdHJhbnNhY3Rpb25zIGluIGNhc2UgYSBuZXcgbWFz dGVyIHRyaWVzIHRvCj4rICogZmluaXNoIHRyYW5zYWN0aW9ucyBvZiBhbiBvbGQgbWFzdGVyLgo+ KyAqLwo+KyB1aW50MzJfdCByZXBsaWNhX2lkOwo+KyAvKioKPisgKiBPcGVyYXRpb24gTFNOLgo+ KyAqIEluIGNhc2Ugb2YgQ09ORklSTSBpdCBtZWFucyAnY29uZmlybSBhbGwKPisgKiB0cmFuc2Fj dGlvbnMgd2l0aCBsc24gPD0gdGhpcyB2YWx1ZScuCj4rICogSW4gY2FzZSBvZiBST0xMQkFDSyBp dCBtZWFucyAncm9sbGJhY2sgYWxsIHRyYW5zYWN0aW9ucwo+KyAqIHdpdGggbHNuID49IHRoaXMg dmFsdWUnLgo+KyAqLwo+KyBpbnQ2NF90IGxzbjsKPit9Owo+wqAKPsKgLyoqCj4tICogRGVjb2Rl IHRoZSBDT05GSVJNIHJlcXVlc3QgYm9keS4KPisgKiBFbmNvZGUgc3luY2hyb25vdXMgcmVwbGlj YXRpb24gcmVxdWVzdC4KPsKgwqAqIEBwYXJhbSByb3cgeHJvdyBoZWFkZXIuCj4tICogQHBhcmFt W291dF0gcmVwbGljYV9pZCBtYXN0ZXIncyBpbnN0YW5jZSBpZC4KPi0gKiBAcGFyYW1bb3V0XSBs c24gbGFzdCBjb25maXJtZWQgbHNuLgo+KyAqIEBwYXJhbSByZWdpb24gUmVnaW9uIHRvIHVzZSB0 byBlbmNvZGUgdGhlIGNvbmZpcm1hdGlvbiBib2R5Lgo+KyAqIEBwYXJhbSByZXEgUmVxdWVzdCBw YXJhbWV0ZXJzLgo+wqDCoCogQHJldHZhbCAtMSBvbiBlcnJvci4KPsKgwqAqIEByZXR2YWwgMCBz dWNjZXNzLgo+wqDCoCovCj7CoGludAo+LXhyb3dfZGVjb2RlX2NvbmZpcm0oc3RydWN0IHhyb3df aGVhZGVyICpyb3csIHVpbnQzMl90ICpyZXBsaWNhX2lkLCBpbnQ2NF90ICpsc24pOwo+LQo+LS8q Kgo+LSAqIEVuY29kZSB0aGUgUk9MTEJBQ0sgcm93IGJvZHkgYW5kIHNldCByb3cgdHlwZSB0bwo+ LSAqIElQUk9UT19ST0xMQkFDSy4KPi0gKiBAcGFyYW0gcm93IHhyb3cgaGVhZGVyLgo+LSAqIEBw YXJhbSByZWdpb24gUmVnaW9uIHRvIHVzZSB0byBlbmNvZGUgdGhlIHJvbGxiYWNrIGJvZHkuCj4t ICogQHBhcmFtIHJlcGxpY2FfaWQgbWFzdGVyJ3MgaW5zdGFuY2UgaWQuCj4tICogQHBhcmFtIGxz biBsc24gdG8gcm9sbGJhY2sgZnJvbSwgaW5jbHVkaW5nIGl0Lgo+LSAqIEByZXR2YWwgLTEgb24g ZXJyb3IuCj4tICogQHJldHZhbCAwIHN1Y2Nlc3MuCj4tICovCj4taW50Cj4teHJvd19lbmNvZGVf cm9sbGJhY2soc3RydWN0IHhyb3dfaGVhZGVyICpyb3csIHN0cnVjdCByZWdpb24gKnJlZ2lvbiwK Pi0gdWludDMyX3QgcmVwbGljYV9pZCwgaW50NjRfdCBsc24pOwo+K3hyb3dfZW5jb2RlX3N5bmNo cm8oc3RydWN0IHhyb3dfaGVhZGVyICpyb3csIHN0cnVjdCByZWdpb24gKnJlZ2lvbiwKPisgY29u c3Qgc3RydWN0IHN5bmNocm9fcmVxdWVzdCAqcmVxKTsKPsKgCj7CoC8qKgo+LSAqIERlY29kZSB0 aGUgUk9MTEJBQ0sgcm93IGJvZHkuCj4rICogRGVjb2RlIHN5bmNocm9ub3VzIHJlcGxpY2F0aW9u IHJlcXVlc3QuCj7CoMKgKiBAcGFyYW0gcm93IHhyb3cgaGVhZGVyLgo+LSAqIEBwYXJhbVtvdXRd IHJlcGxpY2FfaWQgbWFzdGVyJ3MgaW5zdGFuY2UgaWQuCj4tICogQHBhcmFtW291dF0gbHNuIGxz biB0byByb2xsYmFjayBmcm9tLCBpbmNsdWRpbmcgaXQuCj4rICogQHBhcmFtW291dF0gcmVxIFJl cXVlc3QgcGFyYW1ldGVycy4KPsKgwqAqIEByZXR2YWwgLTEgb24gZXJyb3IuCj7CoMKgKiBAcmV0 dmFsIDAgc3VjY2Vzcy4KPsKgwqAqLwo+wqBpbnQKPi14cm93X2RlY29kZV9yb2xsYmFjayhzdHJ1 Y3QgeHJvd19oZWFkZXIgKnJvdywgdWludDMyX3QgKnJlcGxpY2FfaWQsIGludDY0X3QgKmxzbik7 Cj4reHJvd19kZWNvZGVfc3luY2hybyhjb25zdCBzdHJ1Y3QgeHJvd19oZWFkZXIgKnJvdywgc3Ry dWN0IHN5bmNocm9fcmVxdWVzdCAqcmVxKTsKPsKgCj7CoC8qKgo+wqDCoCogQ0FMTC9FVkFMIHJl cXVlc3QuCj7CoArCoAotLQpTZXJnZcKgUGV0cmVua28= ----ALT--54a6E9c9e81EF5244Fb6704aA481730d1597679460 Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: base64 CjxIVE1MPjxCT0RZPjxkaXY+Jm5ic3A7PC9kaXY+PGRpdj5IaSEgVGhhbmtzIGZvciB0aGUgcGF0 Y2ghPGJyPjxicj5MR1RNLjwvZGl2PjxkaXY+Jm5ic3A7PC9kaXY+PGRpdj4mbmJzcDs8L2Rpdj48 ZGl2PiZuYnNwOzwvZGl2PjxkaXY+Jm5ic3A7PC9kaXY+PGJsb2NrcXVvdGUgc3R5bGU9ImJvcmRl ci1sZWZ0OjFweCBzb2xpZCAjMDg1N0E2OyBtYXJnaW46MTBweDsgcGFkZGluZzowIDAgMCAxMHB4 OyI+0KHRg9Cx0LHQvtGC0LAsIDE1INCw0LLQs9GD0YHRgtCwIDIwMjAsIDE2OjI0ICswMzowMCDQ vtGCIFZsYWRpc2xhdiBTaHBpbGV2b3kgJmx0O3Yuc2hwaWxldm95QHRhcmFudG9vbC5vcmcmZ3Q7 Ojxicj4mbmJzcDs8ZGl2IGlkPSIiPjxkaXYgY2xhc3M9ImpzLWhlbHBlciBqcy1yZWFkbXNnLW1z ZyI+PHN0eWxlIHR5cGU9InRleHQvY3NzIj48L3N0eWxlPjxkaXY+PGRpdiBpZD0ic3R5bGVfMTU5 NzQ5Nzg1MzEwMDk0MDA5MzNfQk9EWSI+SGkhIFRoYW5rcyBmb3IgdGhlIHJldmlldyE8YnI+PGJy Pk9uIDE0LjA4LjIwMjAgMDA6MTcsIEN5cmlsbCBHb3JjdW5vdiB3cm90ZTo8ZGl2IGNsYXNzPSJt YWlsLXF1b3RlLWNvbGxhcHNlIj4mZ3Q7IE9uIFRodSwgQXVnIDEzLCAyMDIwIGF0IDExOjU4OjIw UE0gKzAyMDAsIFZsYWRpc2xhdiBTaHBpbGV2b3kgd3JvdGU6PGJyPiZndDsgLi4uPGJyPiZndDsm Z3Q7ICt0eG5fbGltYm9fd3JpdGVfc3luY2hybyhzdHJ1Y3QgdHhuX2xpbWJvICpsaW1ibywgdWlu dDMyX3QgdHlwZSwgaW50NjRfdCBsc24pPGJyPiZndDsmZ3Q7IHs8YnI+Jmd0OyZndDsgYXNzZXJ0 KGxzbiAmZ3Q7IDApOzxicj4mZ3Q7Jmd0Ozxicj4mZ3Q7Jmd0OyArIHN0cnVjdCBzeW5jaHJvX3Jl cXVlc3QgcmVxOzxicj4mZ3Q7Jmd0OyArIHJlcS50eXBlID0gdHlwZTs8YnI+Jmd0OyZndDsgKyBy ZXEucmVwbGljYV9pZCA9IGxpbWJvLSZndDtpbnN0YW5jZV9pZDs8YnI+Jmd0OyZndDsgKyByZXEu bHNuID0gbHNuOzxicj4mZ3Q7Jmd0OyArPGJyPiZndDs8YnI+Jmd0OyBWbGFkLCB3aGlsZSB5b3Un cmUgYXQgdGhpcyBjb2RlLCBjb3VsZCB3ZSBwbGVhc2UgdXNlIGRlc2lnbmF0ZWQ8YnI+Jmd0OyBp bml0aWFsaXphdGlvbiBmcm9tIHRoZSB2ZXJ5IGJlZ2lubmluZywgaWU8YnI+Jmd0Ozxicj4mZ3Q7 IHN0cnVjdCBzeW5jaHJvX3JlcXVlc3QgcmVxID0gezxicj4mZ3Q7IC50eXBlID0gdHlwZSw8YnI+ Jmd0OyAucmVwbGljYV9pZCA9IGxpbWJvLSZndDtpbnN0YW5jZV9pZCw8YnI+Jmd0OyAubHNuID0g bHNuLDxicj4mZ3Q7IH07PGJyPiZndDs8YnI+Jmd0OyAodGhlIGFsaWdubWVudCBpcyB1cCB0byB5 b3UgdGhvdWdoKS4gU3VjaCBpbml0aWFsaXphdGlvbiB3b24ndDxicj4mZ3Q7IGFsbG93IGEgYnVn IHRvIGhhcHBlbiB3aGVuIHdlIGdldCBhIHN0cnVjdHVyZSBleHRlbnNpb24gYW5kPGJyPiZndDsg b3RoZXIgbm9uIHVwZGF0ZWQgZmllbGRzIHdpbGwgYmUgemVyb2lmaWVkLjwvZGl2Pjxicj5Paywg ZG9uZTo8YnI+PGJyPj09PT09PT09PT09PT09PT09PT09PGJyPkBAIC0yNzcsMTAgKzI3NywxMSBA QCB0eG5fbGltYm9fd3JpdGVfc3luY2hybyhzdHJ1Y3QgdHhuX2xpbWJvICpsaW1ibywgdWludDMy X3QgdHlwZSwgaW50NjRfdCBsc24pPGJyPiZuYnNwO3s8YnI+Jm5ic3A7IGFzc2VydChsc24gJmd0 OyAwKTs8YnI+Jm5ic3A7PGJyPi0gc3RydWN0IHN5bmNocm9fcmVxdWVzdCByZXE7PGJyPi0gcmVx LnR5cGUgPSB0eXBlOzxicj4tIHJlcS5yZXBsaWNhX2lkID0gbGltYm8tJmd0O2luc3RhbmNlX2lk Ozxicj4tIHJlcS5sc24gPSBsc247PGJyPisgc3RydWN0IHN5bmNocm9fcmVxdWVzdCByZXEgPSB7 PGJyPisgLnR5cGUgPSB0eXBlLDxicj4rIC5yZXBsaWNhX2lkID0gbGltYm8tJmd0O2luc3RhbmNl X2lkLDxicj4rIC5sc24gPSBsc24sPGJyPisgfTs8YnI+Jm5ic3A7PGJyPj09PT09PT09PT09PT09 PT09PT09PGJyPjxicj5OZXcgY29tcGxldGUgcGF0Y2g6PGJyPjxicj49PT09PT09PT09PT09PT09 PT09PTxicj5kaWZmIC0tZ2l0IGEvc3JjL2JveC9hcHBsaWVyLmNjIGIvc3JjL2JveC9hcHBsaWVy LmNjPGJyPmluZGV4IGE5NTNkMjkzZS4uOThmYjg3Mzc1IDEwMDY0NDxicj4tLS0gYS9zcmMvYm94 L2FwcGxpZXIuY2M8YnI+KysrIGIvc3JjL2JveC9hcHBsaWVyLmNjPGJyPkBAIC0yNzUsMjYgKzI3 NSwxNCBAQCBwcm9jZXNzX25vcChzdHJ1Y3QgcmVxdWVzdCAqcmVxdWVzdCk8YnI+Jm5ic3A7Jm5i c3A7KiBvciByb2xsYmFjayBzb21lIG9mIGl0cyBlbnRyaWVzLjxicj4mbmJzcDsmbmJzcDsqLzxi cj4mbmJzcDtzdGF0aWMgaW50PGJyPi1wcm9jZXNzX2NvbmZpcm1fcm9sbGJhY2soc3RydWN0IHJl cXVlc3QgKnJlcXVlc3QsIGJvb2wgaXNfY29uZmlybSk8YnI+K3Byb2Nlc3Nfc3luY2hyb19yb3co c3RydWN0IHJlcXVlc3QgKnJlcXVlc3QpPGJyPiZuYnNwO3s8YnI+Jm5ic3A7IGFzc2VydChpcHJv dG9fdHlwZV9pc19zeW5jaHJvX3JlcXVlc3QocmVxdWVzdC0mZ3Q7aGVhZGVyLSZndDt0eXBlKSk7 PGJyPi0gdWludDMyX3QgcmVwbGljYV9pZDs8YnI+Jm5ic3A7IHN0cnVjdCB0eG4gKnR4biA9IGlu X3R4bigpOzxicj4tIGludDY0X3QgbHNuID0gMDs8YnI+Jm5ic3A7PGJyPi0gaW50IHJlcyA9IDA7 PGJyPi0gaWYgKGlzX2NvbmZpcm0pPGJyPi0gcmVzID0geHJvd19kZWNvZGVfY29uZmlybShyZXF1 ZXN0LSZndDtoZWFkZXIsICZhbXA7cmVwbGljYV9pZCwgJmFtcDtsc24pOzxicj4tIGVsc2U8YnI+ LSByZXMgPSB4cm93X2RlY29kZV9yb2xsYmFjayhyZXF1ZXN0LSZndDtoZWFkZXIsICZhbXA7cmVw bGljYV9pZCwgJmFtcDtsc24pOzxicj4tIGlmIChyZXMgPT0gLTEpPGJyPi0gcmV0dXJuIC0xOzxi cj4tPGJyPi0gaWYgKHJlcGxpY2FfaWQgIT0gdHhuX2xpbWJvLmluc3RhbmNlX2lkKSB7PGJyPi0g ZGlhZ19zZXQoQ2xpZW50RXJyb3IsIEVSX1NZTkNfTUFTVEVSX01JU01BVENILCByZXBsaWNhX2lk LDxicj4tIHR4bl9saW1iby5pbnN0YW5jZV9pZCk7PGJyPisgc3RydWN0IHN5bmNocm9fcmVxdWVz dCBzeW5fcmVxOzxicj4rIGlmICh4cm93X2RlY29kZV9zeW5jaHJvKHJlcXVlc3QtJmd0O2hlYWRl ciwgJmFtcDtzeW5fcmVxKSAhPSAwKTxicj4mbmJzcDsgcmV0dXJuIC0xOzxicj4tIH08YnI+Jm5i c3A7IGFzc2VydCh0eG4tJmd0O25fYXBwbGllcl9yb3dzID09IDApOzxicj4mbmJzcDsgLyo8YnI+ Jm5ic3A7ICogVGhpcyBpcyBub3QgcmVhbGx5IGEgdHJhbnNhY3Rpb24uIEl0IGp1c3QgdXNlcyB0 eG4gQVBJPGJyPkBAIC0zMDYsMTYgKzI5NCw5IEBAIHByb2Nlc3NfY29uZmlybV9yb2xsYmFjayhz dHJ1Y3QgcmVxdWVzdCAqcmVxdWVzdCwgYm9vbCBpc19jb25maXJtKTxicj4mbmJzcDs8YnI+Jm5i c3A7IGlmICh0eG5fYmVnaW5fc3RtdCh0eG4sIE5VTEwpICE9IDApPGJyPiZuYnNwOyByZXR1cm4g LTE7PGJyPi08YnI+LSBpZiAodHhuX2NvbW1pdF9zdG10KHR4biwgcmVxdWVzdCkgPT0gMCkgezxi cj4tIGlmIChpc19jb25maXJtKTxicj4tIHR4bl9saW1ib19yZWFkX2NvbmZpcm0oJmFtcDt0eG5f bGltYm8sIGxzbik7PGJyPi0gZWxzZTxicj4tIHR4bl9saW1ib19yZWFkX3JvbGxiYWNrKCZhbXA7 dHhuX2xpbWJvLCBsc24pOzxicj4tIHJldHVybiAwOzxicj4tIH0gZWxzZSB7PGJyPisgaWYgKHR4 bl9jb21taXRfc3RtdCh0eG4sIHJlcXVlc3QpICE9IDApPGJyPiZuYnNwOyByZXR1cm4gLTE7PGJy Pi0gfTxicj4rIHJldHVybiB0eG5fbGltYm9fcHJvY2VzcygmYW1wO3R4bl9saW1ibywgJmFtcDtz eW5fcmVxKTs8YnI+Jm5ic3A7fTxicj4mbmJzcDs8YnI+Jm5ic3A7c3RhdGljIGludDxicj5AQCAt MzI0LDggKzMwNSw3IEBAIGFwcGx5X3JvdyhzdHJ1Y3QgeHJvd19oZWFkZXIgKnJvdyk8YnI+Jm5i c3A7IHN0cnVjdCByZXF1ZXN0IHJlcXVlc3Q7PGJyPiZuYnNwOyBpZiAoaXByb3RvX3R5cGVfaXNf c3luY2hyb19yZXF1ZXN0KHJvdy0mZ3Q7dHlwZSkpIHs8YnI+Jm5ic3A7IHJlcXVlc3QuaGVhZGVy ID0gcm93Ozxicj4tIHJldHVybiBwcm9jZXNzX2NvbmZpcm1fcm9sbGJhY2soJmFtcDtyZXF1ZXN0 LDxicj4tIHJvdy0mZ3Q7dHlwZSA9PSBJUFJPVE9fQ09ORklSTSk7PGJyPisgcmV0dXJuIHByb2Nl c3Nfc3luY2hyb19yb3coJmFtcDtyZXF1ZXN0KTs8YnI+Jm5ic3A7IH08YnI+Jm5ic3A7IGlmICh4 cm93X2RlY29kZV9kbWwocm93LCAmYW1wO3JlcXVlc3QsIGRtbF9yZXF1ZXN0X2tleV9tYXAocm93 LSZndDt0eXBlKSkgIT0gMCk8YnI+Jm5ic3A7IHJldHVybiAtMTs8YnI+ZGlmZiAtLWdpdCBhL3Ny Yy9ib3gvYm94LmNjIGIvc3JjL2JveC9ib3guY2M8YnI+aW5kZXggODNlZWY1ZDk4Li44ZTgxMWU5 YzEgMTAwNjQ0PGJyPi0tLSBhL3NyYy9ib3gvYm94LmNjPGJyPisrKyBiL3NyYy9ib3gvYm94LmNj PGJyPkBAIC0zNjcsMjIgKzM2NywxMSBAQCBhcHBseV93YWxfcm93KHN0cnVjdCB4c3RyZWFtICpz dHJlYW0sIHN0cnVjdCB4cm93X2hlYWRlciAqcm93KTxicj4mbmJzcDt7PGJyPiZuYnNwOyBzdHJ1 Y3QgcmVxdWVzdCByZXF1ZXN0Ozxicj4mbmJzcDsgaWYgKGlwcm90b190eXBlX2lzX3N5bmNocm9f cmVxdWVzdChyb3ctJmd0O3R5cGUpKSB7PGJyPi0gdWludDMyX3QgcmVwbGljYV9pZDs8YnI+LSBp bnQ2NF90IGxzbjs8YnI+LSBzd2l0Y2gocm93LSZndDt0eXBlKSB7PGJyPi0gY2FzZSBJUFJPVE9f Q09ORklSTTo8YnI+LSBpZiAoeHJvd19kZWNvZGVfY29uZmlybShyb3csICZhbXA7cmVwbGljYV9p ZCwgJmFtcDtsc24pICZsdDsgMCk8YnI+LSBkaWFnX3JhaXNlKCk7PGJyPi0gYXNzZXJ0KHR4bl9s aW1iby5pbnN0YW5jZV9pZCA9PSByZXBsaWNhX2lkKTs8YnI+LSB0eG5fbGltYm9fcmVhZF9jb25m aXJtKCZhbXA7dHhuX2xpbWJvLCBsc24pOzxicj4tIGJyZWFrOzxicj4tIGNhc2UgSVBST1RPX1JP TExCQUNLOjxicj4tIGlmICh4cm93X2RlY29kZV9yb2xsYmFjayhyb3csICZhbXA7cmVwbGljYV9p ZCwgJmFtcDtsc24pICZsdDsgMCk8YnI+LSBkaWFnX3JhaXNlKCk7PGJyPi0gYXNzZXJ0KHR4bl9s aW1iby5pbnN0YW5jZV9pZCA9PSByZXBsaWNhX2lkKTs8YnI+LSB0eG5fbGltYm9fcmVhZF9yb2xs YmFjaygmYW1wO3R4bl9saW1ibywgbHNuKTs8YnI+LSBicmVhazs8YnI+LSB9PGJyPisgc3RydWN0 IHN5bmNocm9fcmVxdWVzdCBzeW5fcmVxOzxicj4rIGlmICh4cm93X2RlY29kZV9zeW5jaHJvKHJv dywgJmFtcDtzeW5fcmVxKSAhPSAwKTxicj4rIGRpYWdfcmFpc2UoKTs8YnI+KyBpZiAodHhuX2xp bWJvX3Byb2Nlc3MoJmFtcDt0eG5fbGltYm8sICZhbXA7c3luX3JlcSkgIT0gMCk8YnI+KyBkaWFn X3JhaXNlKCk7PGJyPiZuYnNwOyByZXR1cm47PGJyPiZuYnNwOyB9PGJyPiZuYnNwOyB4cm93X2Rl Y29kZV9kbWxfeGMocm93LCAmYW1wO3JlcXVlc3QsIGRtbF9yZXF1ZXN0X2tleV9tYXAocm93LSZn dDt0eXBlKSk7PGJyPmRpZmYgLS1naXQgYS9zcmMvYm94L3R4bl9saW1iby5jIGIvc3JjL2JveC90 eG5fbGltYm8uYzxicj5pbmRleCBhMjA0M2MxN2EuLmM2YTRlNWVmYyAxMDA2NDQ8YnI+LS0tIGEv c3JjL2JveC90eG5fbGltYm8uYzxicj4rKysgYi9zcmMvYm94L3R4bl9saW1iby5jPGJyPkBAIC0z MSw2ICszMSw3IEBAPGJyPiZuYnNwOyNpbmNsdWRlICJ0eG4uaCI8YnI+Jm5ic3A7I2luY2x1ZGUg InR4bl9saW1iby5oIjxicj4mbmJzcDsjaW5jbHVkZSAicmVwbGljYXRpb24uaCI8YnI+KyNpbmNs dWRlICJpcHJvdG9fY29uc3RhbnRzLmgiPGJyPiZuYnNwOzxicj4mbmJzcDtzdHJ1Y3QgdHhuX2xp bWJvIHR4bl9saW1ibzs8YnI+Jm5ic3A7PGJyPkBAIC0yNzIsMTEgKzI3MywxNiBAQCBjb21wbGV0 ZTo8YnI+Jm5ic3A7fTxicj4mbmJzcDs8YnI+Jm5ic3A7c3RhdGljIHZvaWQ8YnI+LXR4bl9saW1i b193cml0ZV9jb25maXJtX3JvbGxiYWNrKHN0cnVjdCB0eG5fbGltYm8gKmxpbWJvLCBpbnQ2NF90 IGxzbiw8YnI+LSBib29sIGlzX2NvbmZpcm0pPGJyPit0eG5fbGltYm9fd3JpdGVfc3luY2hybyhz dHJ1Y3QgdHhuX2xpbWJvICpsaW1ibywgdWludDMyX3QgdHlwZSwgaW50NjRfdCBsc24pPGJyPiZu YnNwO3s8YnI+Jm5ic3A7IGFzc2VydChsc24gJmd0OyAwKTs8YnI+Jm5ic3A7PGJyPisgc3RydWN0 IHN5bmNocm9fcmVxdWVzdCByZXEgPSB7PGJyPisgLnR5cGUgPSB0eXBlLDxicj4rIC5yZXBsaWNh X2lkID0gbGltYm8tJmd0O2luc3RhbmNlX2lkLDxicj4rIC5sc24gPSBsc24sPGJyPisgfTs8YnI+ Kzxicj4mbmJzcDsgc3RydWN0IHhyb3dfaGVhZGVyIHJvdzs8YnI+Jm5ic3A7IHN0cnVjdCByZXF1 ZXN0IHJlcXVlc3QgPSB7PGJyPiZuYnNwOyAuaGVhZGVyID0gJmFtcDtyb3csPGJyPkBAIC0yODYs MTkgKzI5Miw3IEBAIHR4bl9saW1ib193cml0ZV9jb25maXJtX3JvbGxiYWNrKHN0cnVjdCB0eG5f bGltYm8gKmxpbWJvLCBpbnQ2NF90IGxzbiw8YnI+Jm5ic3A7IGlmICh0eG4gPT0gTlVMTCk8YnI+ Jm5ic3A7IGdvdG8gcm9sbGJhY2s7PGJyPiZuYnNwOzxicj4tIGludCByZXMgPSAwOzxicj4tIGlm IChpc19jb25maXJtKSB7PGJyPi0gcmVzID0geHJvd19lbmNvZGVfY29uZmlybSgmYW1wO3Jvdywg JmFtcDt0eG4tJmd0O3JlZ2lvbiw8YnI+LSBsaW1iby0mZ3Q7aW5zdGFuY2VfaWQsIGxzbik7PGJy Pi0gfSBlbHNlIHs8YnI+LSAvKjxicj4tICogVGhpcyBMU04gaXMgdGhlIGZpcnN0IHRvIGJlIHJv bGxlZCBiYWNrLCBzbzxicj4tICogdGhlIGxhc3QgInNhZmUiIGxzbiBpcyBsc24gLSAxLjxicj4t ICovPGJyPi0gcmVzID0geHJvd19lbmNvZGVfcm9sbGJhY2soJmFtcDtyb3csICZhbXA7dHhuLSZn dDtyZWdpb24sPGJyPi0gbGltYm8tJmd0O2luc3RhbmNlX2lkLCBsc24pOzxicj4tIH08YnI+LSBp ZiAocmVzID09IC0xKTxicj4rIGlmICh4cm93X2VuY29kZV9zeW5jaHJvKCZhbXA7cm93LCAmYW1w O3R4bi0mZ3Q7cmVnaW9uLCAmYW1wO3JlcSkgIT0gMCk8YnI+Jm5ic3A7IGdvdG8gcm9sbGJhY2s7 PGJyPiZuYnNwOyAvKjxicj4mbmJzcDsgKiBUaGlzIGlzIG5vdCByZWFsbHkgYSB0cmFuc2FjdGlv bi4gSXQganVzdCB1c2VzIHR4biBBUEk8YnI+QEAgLTMyNSw3ICszMTksNyBAQCByb2xsYmFjazo8 YnI+Jm5ic3A7ICogcHJvYmxlbXMgYXJlIGZpeGVkLiBPciByZXRyeSBhdXRvbWF0aWNhbGx5IHdp dGggc29tZSBwZXJpb2QuPGJyPiZuYnNwOyAqLzxicj4mbmJzcDsgcGFuaWMoIkNvdWxkIG5vdCB3 cml0ZSBhIHN5bmNocm8gcmVxdWVzdCB0byBXQUw6IGxzbiA9ICVsbGQsIHR5cGUgPSAiPGJyPi0g IiVzXG4iLCBsc24sIGlzX2NvbmZpcm0gPyAiQ09ORklSTSIgOiAiUk9MTEJBQ0siKTs8YnI+KyAi JXNcbiIsIGxzbiwgaXByb3RvX3R5cGVfbmFtZSh0eXBlKSk7PGJyPiZuYnNwO308YnI+Jm5ic3A7 PGJyPiZuYnNwOy8qKjxicj5AQCAtMzM4LDEwICszMzIsMTEgQEAgdHhuX2xpbWJvX3dyaXRlX2Nv bmZpcm0oc3RydWN0IHR4bl9saW1ibyAqbGltYm8sIGludDY0X3QgbHNuKTxicj4mbmJzcDsgYXNz ZXJ0KGxzbiAmZ3Q7IGxpbWJvLSZndDtjb25maXJtZWRfbHNuKTs8YnI+Jm5ic3A7IGFzc2VydCgh bGltYm8tJmd0O2lzX2luX3JvbGxiYWNrKTs8YnI+Jm5ic3A7IGxpbWJvLSZndDtjb25maXJtZWRf bHNuID0gbHNuOzxicj4tIHR4bl9saW1ib193cml0ZV9jb25maXJtX3JvbGxiYWNrKGxpbWJvLCBs c24sIHRydWUpOzxicj4rIHR4bl9saW1ib193cml0ZV9zeW5jaHJvKGxpbWJvLCBJUFJPVE9fQ09O RklSTSwgbHNuKTs8YnI+Jm5ic3A7fTxicj4mbmJzcDs8YnI+LXZvaWQ8YnI+Ky8qKiBDb25maXJt IGFsbCB0aGUgZW50cmllcyAmbHQ7PSBAYSBsc24uICovPGJyPitzdGF0aWMgdm9pZDxicj4mbmJz cDt0eG5fbGltYm9fcmVhZF9jb25maXJtKHN0cnVjdCB0eG5fbGltYm8gKmxpbWJvLCBpbnQ2NF90 IGxzbik8YnI+Jm5ic3A7ezxicj4mbmJzcDsgYXNzZXJ0KGxpbWJvLSZndDtpbnN0YW5jZV9pZCAh PSBSRVBMSUNBX0lEX05JTCk7PGJyPkBAIC0zOTAsMTEgKzM4NSwxMiBAQCB0eG5fbGltYm9fd3Jp dGVfcm9sbGJhY2soc3RydWN0IHR4bl9saW1ibyAqbGltYm8sIGludDY0X3QgbHNuKTxicj4mbmJz cDsgYXNzZXJ0KGxzbiAmZ3Q7IGxpbWJvLSZndDtjb25maXJtZWRfbHNuKTs8YnI+Jm5ic3A7IGFz c2VydCghbGltYm8tJmd0O2lzX2luX3JvbGxiYWNrKTs8YnI+Jm5ic3A7IGxpbWJvLSZndDtpc19p bl9yb2xsYmFjayA9IHRydWU7PGJyPi0gdHhuX2xpbWJvX3dyaXRlX2NvbmZpcm1fcm9sbGJhY2so bGltYm8sIGxzbiwgZmFsc2UpOzxicj4rIHR4bl9saW1ib193cml0ZV9zeW5jaHJvKGxpbWJvLCBJ UFJPVE9fUk9MTEJBQ0ssIGxzbik7PGJyPiZuYnNwOyBsaW1iby0mZ3Q7aXNfaW5fcm9sbGJhY2sg PSBmYWxzZTs8YnI+Jm5ic3A7fTxicj4mbmJzcDs8YnI+LXZvaWQ8YnI+Ky8qKiBSb2xsYmFjayBh bGwgdGhlIGVudHJpZXMgJmd0Oz0gQGEgbHNuLiAqLzxicj4rc3RhdGljIHZvaWQ8YnI+Jm5ic3A7 dHhuX2xpbWJvX3JlYWRfcm9sbGJhY2soc3RydWN0IHR4bl9saW1ibyAqbGltYm8sIGludDY0X3Qg bHNuKTxicj4mbmJzcDt7PGJyPiZuYnNwOyBhc3NlcnQobGltYm8tJmd0O2luc3RhbmNlX2lkICE9 IFJFUExJQ0FfSURfTklMKTs8YnI+QEAgLTU3Nyw2ICs1NzMsMjcgQEAgY29tcGxldGU6PGJyPiZu YnNwOyByZXR1cm4gMDs8YnI+Jm5ic3A7fTxicj4mbmJzcDs8YnI+K2ludDxicj4rdHhuX2xpbWJv X3Byb2Nlc3Moc3RydWN0IHR4bl9saW1ibyAqbGltYm8sIGNvbnN0IHN0cnVjdCBzeW5jaHJvX3Jl cXVlc3QgKnJlcSk8YnI+K3s8YnI+KyBpZiAocmVxLSZndDtyZXBsaWNhX2lkICE9IGxpbWJvLSZn dDtpbnN0YW5jZV9pZCkgezxicj4rIGRpYWdfc2V0KENsaWVudEVycm9yLCBFUl9TWU5DX01BU1RF Ul9NSVNNQVRDSCwgcmVxLSZndDtyZXBsaWNhX2lkLDxicj4rIGxpbWJvLSZndDtpbnN0YW5jZV9p ZCk7PGJyPisgcmV0dXJuIC0xOzxicj4rIH08YnI+KyBzd2l0Y2ggKHJlcS0mZ3Q7dHlwZSkgezxi cj4rIGNhc2UgSVBST1RPX0NPTkZJUk06PGJyPisgdHhuX2xpbWJvX3JlYWRfY29uZmlybShsaW1i bywgcmVxLSZndDtsc24pOzxicj4rIGJyZWFrOzxicj4rIGNhc2UgSVBST1RPX1JPTExCQUNLOjxi cj4rIHR4bl9saW1ib19yZWFkX3JvbGxiYWNrKGxpbWJvLCByZXEtJmd0O2xzbik7PGJyPisgYnJl YWs7PGJyPisgZGVmYXVsdDo8YnI+KyB1bnJlYWNoYWJsZSgpOzxicj4rIH08YnI+KyByZXR1cm4g MDs8YnI+K308YnI+Kzxicj4mbmJzcDt2b2lkPGJyPiZuYnNwO3R4bl9saW1ib19mb3JjZV9lbXB0 eShzdHJ1Y3QgdHhuX2xpbWJvICpsaW1ibywgaW50NjRfdCBjb25maXJtX2xzbik8YnI+Jm5ic3A7 ezxicj5kaWZmIC0tZ2l0IGEvc3JjL2JveC90eG5fbGltYm8uaCBiL3NyYy9ib3gvdHhuX2xpbWJv Lmg8YnI+aW5kZXggMDRlZTdlYTVjLi5lYWY2NjI5ODcgMTAwNjQ0PGJyPi0tLSBhL3NyYy9ib3gv dHhuX2xpbWJvLmg8YnI+KysrIGIvc3JjL2JveC90eG5fbGltYm8uaDxicj5AQCAtMzksNiArMzks NyBAQCBleHRlcm4gIkMiIHs8YnI+Jm5ic3A7I2VuZGlmIC8qIGRlZmluZWQoX19jcGx1c3BsdXMp ICovPGJyPiZuYnNwOzxicj4mbmJzcDtzdHJ1Y3QgdHhuOzxicj4rc3RydWN0IHN5bmNocm9fcmVx dWVzdDs8YnI+Jm5ic3A7PGJyPiZuYnNwOy8qKjxicj4mbmJzcDsmbmJzcDsqIFRyYW5zYWN0aW9u IGFuZCBpdHMgcXVvcnVtIG1ldGFkYXRhLCB0byBiZSBzdG9yZWQgaW4gbGltYm8uPGJyPkBAIC0y NDUsMTcgKzI0Niw5IEBAIHR4bl9saW1ib19hY2soc3RydWN0IHR4bl9saW1ibyAqbGltYm8sIHVp bnQzMl90IHJlcGxpY2FfaWQsIGludDY0X3QgbHNuKTs8YnI+Jm5ic3A7aW50PGJyPiZuYnNwO3R4 bl9saW1ib193YWl0X2NvbXBsZXRlKHN0cnVjdCB0eG5fbGltYm8gKmxpbWJvLCBzdHJ1Y3QgdHhu X2xpbWJvX2VudHJ5ICplbnRyeSk7PGJyPiZuYnNwOzxicj4tLyoqPGJyPi0gKiBDb25maXJtIGFs bCB0aGUgZW50cmllcyB1cCB0byB0aGUgZ2l2ZW4gbWFzdGVyJ3MgTFNOLjxicj4tICovPGJyPi12 b2lkPGJyPi10eG5fbGltYm9fcmVhZF9jb25maXJtKHN0cnVjdCB0eG5fbGltYm8gKmxpbWJvLCBp bnQ2NF90IGxzbik7PGJyPi08YnI+LS8qKjxicj4tICogUm9sbGJhY2sgYWxsIHRoZSBlbnRyaWVz IHN0YXJ0aW5nIHdpdGggZ2l2ZW4gbWFzdGVyJ3MgTFNOLjxicj4tICovPGJyPi12b2lkPGJyPi10 eG5fbGltYm9fcmVhZF9yb2xsYmFjayhzdHJ1Y3QgdHhuX2xpbWJvICpsaW1ibywgaW50NjRfdCBs c24pOzxicj4rLyoqIEV4ZWN1dGUgYSBzeW5jaHJvbm91cyByZXBsaWNhdGlvbiByZXF1ZXN0LiAq Lzxicj4raW50PGJyPit0eG5fbGltYm9fcHJvY2VzcyhzdHJ1Y3QgdHhuX2xpbWJvICpsaW1ibywg Y29uc3Qgc3RydWN0IHN5bmNocm9fcmVxdWVzdCAqcmVxKTs8YnI+Jm5ic3A7PGJyPiZuYnNwOy8q Kjxicj4mbmJzcDsmbmJzcDsqIFdhaXRpbmcgZm9yIGNvbmZpcm1hdGlvbiBvZiBhbGwgInN5bmMi IHRyYW5zYWN0aW9uczxicj5kaWZmIC0tZ2l0IGEvc3JjL2JveC94cm93LmMgYi9zcmMvYm94L3hy b3cuYzxicj5pbmRleCAwYzc5N2E5ZDUuLmJmMTc0YzcwMSAxMDA2NDQ8YnI+LS0tIGEvc3JjL2Jv eC94cm93LmM8YnI+KysrIGIvc3JjL2JveC94cm93LmM8YnI+QEAgLTg5MywxMyArODkzLDEzIEBA IHhyb3dfZW5jb2RlX2RtbChjb25zdCBzdHJ1Y3QgcmVxdWVzdCAqcmVxdWVzdCwgc3RydWN0IHJl Z2lvbiAqcmVnaW9uLDxicj4mbmJzcDsgcmV0dXJuIGlvdmNudDs8YnI+Jm5ic3A7fTxicj4mbmJz cDs8YnI+LXN0YXRpYyBpbnQ8YnI+LXhyb3dfZW5jb2RlX2NvbmZpcm1fcm9sbGJhY2soc3RydWN0 IHhyb3dfaGVhZGVyICpyb3csIHN0cnVjdCByZWdpb24gKnJlZ2lvbiw8YnI+LSB1aW50MzJfdCBy ZXBsaWNhX2lkLCBpbnQ2NF90IGxzbiwgaW50IHR5cGUpPGJyPitpbnQ8YnI+K3hyb3dfZW5jb2Rl X3N5bmNocm8oc3RydWN0IHhyb3dfaGVhZGVyICpyb3csIHN0cnVjdCByZWdpb24gKnJlZ2lvbiw8 YnI+KyBjb25zdCBzdHJ1Y3Qgc3luY2hyb19yZXF1ZXN0ICpyZXEpPGJyPiZuYnNwO3s8YnI+Jm5i c3A7IHNpemVfdCBsZW4gPSBtcF9zaXplb2ZfbWFwKDIpICsgbXBfc2l6ZW9mX3VpbnQoSVBST1RP X1JFUExJQ0FfSUQpICs8YnI+LSBtcF9zaXplb2ZfdWludChyZXBsaWNhX2lkKSArIG1wX3NpemVv Zl91aW50KElQUk9UT19MU04pICs8YnI+LSBtcF9zaXplb2ZfdWludChsc24pOzxicj4rIG1wX3Np emVvZl91aW50KHJlcS0mZ3Q7cmVwbGljYV9pZCkgKzxicj4rIG1wX3NpemVvZl91aW50KElQUk9U T19MU04pICsgbXBfc2l6ZW9mX3VpbnQocmVxLSZndDtsc24pOzxicj4mbmJzcDsgY2hhciAqYnVm ID0gKGNoYXIgKilyZWdpb25fYWxsb2MocmVnaW9uLCBsZW4pOzxicj4mbmJzcDsgaWYgKGJ1ZiA9 PSBOVUxMKSB7PGJyPiZuYnNwOyBkaWFnX3NldChPdXRPZk1lbW9yeSwgbGVuLCAicmVnaW9uX2Fs bG9jIiwgImJ1ZiIpOzxicj5AQCAtOTA5LDkgKzkwOSw5IEBAIHhyb3dfZW5jb2RlX2NvbmZpcm1f cm9sbGJhY2soc3RydWN0IHhyb3dfaGVhZGVyICpyb3csIHN0cnVjdCByZWdpb24gKnJlZ2lvbiw8 YnI+Jm5ic3A7PGJyPiZuYnNwOyBwb3MgPSBtcF9lbmNvZGVfbWFwKHBvcywgMik7PGJyPiZuYnNw OyBwb3MgPSBtcF9lbmNvZGVfdWludChwb3MsIElQUk9UT19SRVBMSUNBX0lEKTs8YnI+LSBwb3Mg PSBtcF9lbmNvZGVfdWludChwb3MsIHJlcGxpY2FfaWQpOzxicj4rIHBvcyA9IG1wX2VuY29kZV91 aW50KHBvcywgcmVxLSZndDtyZXBsaWNhX2lkKTs8YnI+Jm5ic3A7IHBvcyA9IG1wX2VuY29kZV91 aW50KHBvcywgSVBST1RPX0xTTik7PGJyPi0gcG9zID0gbXBfZW5jb2RlX3VpbnQocG9zLCBsc24p Ozxicj4rIHBvcyA9IG1wX2VuY29kZV91aW50KHBvcywgcmVxLSZndDtsc24pOzxicj4mbmJzcDs8 YnI+Jm5ic3A7IG1lbXNldChyb3csIDAsIHNpemVvZigqcm93KSk7PGJyPiZuYnNwOzxicj5AQCAt OTE5LDMwICs5MTksMTMgQEAgeHJvd19lbmNvZGVfY29uZmlybV9yb2xsYmFjayhzdHJ1Y3QgeHJv d19oZWFkZXIgKnJvdywgc3RydWN0IHJlZ2lvbiAqcmVnaW9uLDxicj4mbmJzcDsgcm93LSZndDti b2R5WzBdLmlvdl9sZW4gPSBsZW47PGJyPiZuYnNwOyByb3ctJmd0O2JvZHljbnQgPSAxOzxicj4m bmJzcDs8YnI+LSByb3ctJmd0O3R5cGUgPSB0eXBlOzxicj4rIHJvdy0mZ3Q7dHlwZSA9IHJlcS0m Z3Q7dHlwZTs8YnI+Jm5ic3A7PGJyPiZuYnNwOyByZXR1cm4gMDs8YnI+Jm5ic3A7fTxicj4mbmJz cDs8YnI+Jm5ic3A7aW50PGJyPi14cm93X2VuY29kZV9jb25maXJtKHN0cnVjdCB4cm93X2hlYWRl ciAqcm93LCBzdHJ1Y3QgcmVnaW9uICpyZWdpb24sPGJyPi0gdWludDMyX3QgcmVwbGljYV9pZCwg aW50NjRfdCBsc24pPGJyPi17PGJyPi0gcmV0dXJuIHhyb3dfZW5jb2RlX2NvbmZpcm1fcm9sbGJh Y2socm93LCByZWdpb24sIHJlcGxpY2FfaWQsIGxzbiw8YnI+LSBJUFJPVE9fQ09ORklSTSk7PGJy Pi19PGJyPi08YnI+LWludDxicj4teHJvd19lbmNvZGVfcm9sbGJhY2soc3RydWN0IHhyb3dfaGVh ZGVyICpyb3csIHN0cnVjdCByZWdpb24gKnJlZ2lvbiw8YnI+LSB1aW50MzJfdCByZXBsaWNhX2lk LCBpbnQ2NF90IGxzbik8YnI+LXs8YnI+LSByZXR1cm4geHJvd19lbmNvZGVfY29uZmlybV9yb2xs YmFjayhyb3csIHJlZ2lvbiwgcmVwbGljYV9pZCwgbHNuLDxicj4tIElQUk9UT19ST0xMQkFDSyk7 PGJyPi19PGJyPi08YnI+LXN0YXRpYyBpbnQ8YnI+LXhyb3dfZGVjb2RlX2NvbmZpcm1fcm9sbGJh Y2soc3RydWN0IHhyb3dfaGVhZGVyICpyb3csIHVpbnQzMl90ICpyZXBsaWNhX2lkLDxicj4tIGlu dDY0X3QgKmxzbik8YnI+K3hyb3dfZGVjb2RlX3N5bmNocm8oY29uc3Qgc3RydWN0IHhyb3dfaGVh ZGVyICpyb3csIHN0cnVjdCBzeW5jaHJvX3JlcXVlc3QgKnJlcSk8YnI+Jm5ic3A7ezxicj4mbmJz cDsgaWYgKHJvdy0mZ3Q7Ym9keWNudCA9PSAwKSB7PGJyPiZuYnNwOyBkaWFnX3NldChDbGllbnRF cnJvciwgRVJfSU5WQUxJRF9NU0dQQUNLLCAicmVxdWVzdCBib2R5Iik7PGJyPkBAIC05NjAsNiAr OTQzLDcgQEAgeHJvd19kZWNvZGVfY29uZmlybV9yb2xsYmFjayhzdHJ1Y3QgeHJvd19oZWFkZXIg KnJvdywgdWludDMyX3QgKnJlcGxpY2FfaWQsPGJyPiZuYnNwOyByZXR1cm4gLTE7PGJyPiZuYnNw OyB9PGJyPiZuYnNwOzxicj4rIG1lbXNldChyZXEsIDAsIHNpemVvZigqcmVxKSk7PGJyPiZuYnNw OyBkID0gZGF0YTs8YnI+Jm5ic3A7IHVpbnQzMl90IG1hcF9zaXplID0gbXBfZGVjb2RlX21hcCgm YW1wO2QpOzxicj4mbmJzcDsgZm9yICh1aW50MzJfdCBpID0gMDsgaSAmbHQ7IG1hcF9zaXplOyBp KyspIHs8YnI+QEAgLTk3NywzMCArOTYxLDE5IEBAIHhyb3dfZGVjb2RlX2NvbmZpcm1fcm9sbGJh Y2soc3RydWN0IHhyb3dfaGVhZGVyICpyb3csIHVpbnQzMl90ICpyZXBsaWNhX2lkLDxicj4mbmJz cDsgfTxicj4mbmJzcDsgc3dpdGNoIChrZXkpIHs8YnI+Jm5ic3A7IGNhc2UgSVBST1RPX1JFUExJ Q0FfSUQ6PGJyPi0gKnJlcGxpY2FfaWQgPSBtcF9kZWNvZGVfdWludCgmYW1wO2QpOzxicj4rIHJl cS0mZ3Q7cmVwbGljYV9pZCA9IG1wX2RlY29kZV91aW50KCZhbXA7ZCk7PGJyPiZuYnNwOyBicmVh azs8YnI+Jm5ic3A7IGNhc2UgSVBST1RPX0xTTjo8YnI+LSAqbHNuID0gbXBfZGVjb2RlX3VpbnQo JmFtcDtkKTs8YnI+KyByZXEtJmd0O2xzbiA9IG1wX2RlY29kZV91aW50KCZhbXA7ZCk7PGJyPiZu YnNwOyBicmVhazs8YnI+Jm5ic3A7IGRlZmF1bHQ6PGJyPiZuYnNwOyBtcF9uZXh0KCZhbXA7ZCk7 PGJyPiZuYnNwOyB9PGJyPiZuYnNwOyB9PGJyPisgcmVxLSZndDt0eXBlID0gcm93LSZndDt0eXBl Ozxicj4mbmJzcDsgcmV0dXJuIDA7PGJyPiZuYnNwO308YnI+Jm5ic3A7PGJyPi1pbnQ8YnI+LXhy b3dfZGVjb2RlX2NvbmZpcm0oc3RydWN0IHhyb3dfaGVhZGVyICpyb3csIHVpbnQzMl90ICpyZXBs aWNhX2lkLCBpbnQ2NF90ICpsc24pPGJyPi17PGJyPi0gcmV0dXJuIHhyb3dfZGVjb2RlX2NvbmZp cm1fcm9sbGJhY2socm93LCByZXBsaWNhX2lkLCBsc24pOzxicj4tfTxicj4tPGJyPi1pbnQ8YnI+ LXhyb3dfZGVjb2RlX3JvbGxiYWNrKHN0cnVjdCB4cm93X2hlYWRlciAqcm93LCB1aW50MzJfdCAq cmVwbGljYV9pZCwgaW50NjRfdCAqbHNuKTxicj4tezxicj4tIHJldHVybiB4cm93X2RlY29kZV9j b25maXJtX3JvbGxiYWNrKHJvdywgcmVwbGljYV9pZCwgbHNuKTs8YnI+LX08YnI+LTxicj4mbmJz cDtpbnQ8YnI+Jm5ic3A7eHJvd190b19pb3ZlYyhjb25zdCBzdHJ1Y3QgeHJvd19oZWFkZXIgKnJv dywgc3RydWN0IGlvdmVjICpvdXQpPGJyPiZuYnNwO3s8YnI+ZGlmZiAtLWdpdCBhL3NyYy9ib3gv eHJvdy5oIGIvc3JjL2JveC94cm93Lmg8YnI+aW5kZXggZTIxZWRlNWEzLi4wMmRjYTc0ZTUgMTAw NjQ0PGJyPi0tLSBhL3NyYy9ib3gveHJvdy5oPGJyPisrKyBiL3NyYy9ib3gveHJvdy5oPGJyPkBA IC0yMTYsNTQgKzIxNiw1MSBAQCB4cm93X2VuY29kZV9kbWwoY29uc3Qgc3RydWN0IHJlcXVlc3Qg KnJlcXVlc3QsIHN0cnVjdCByZWdpb24gKnJlZ2lvbiw8YnI+Jm5ic3A7IHN0cnVjdCBpb3ZlYyAq aW92KTs8YnI+Jm5ic3A7PGJyPiZuYnNwOy8qKjxicj4tICogRW5jb2RlIHRoZSBDT05GSVJNIHRv IHJvdyBib2R5IGFuZCBzZXQgcm93IHR5cGUgdG88YnI+LSAqIElQUk9UT19DT05GSVJNLjxicj4t ICogQHBhcmFtIHJvdyB4cm93IGhlYWRlci48YnI+LSAqIEBwYXJhbSByZWdpb24gUmVnaW9uIHRv IHVzZSB0byBlbmNvZGUgdGhlIGNvbmZpcm1hdGlvbiBib2R5Ljxicj4tICogQHBhcmFtIHJlcGxp Y2FfaWQgbWFzdGVyJ3MgaW5zdGFuY2UgaWQuPGJyPi0gKiBAcGFyYW0gbHNuIGxhc3QgY29uZmly bWVkIGxzbi48YnI+LSAqIEByZXR2YWwgLTEgb24gZXJyb3IuPGJyPi0gKiBAcmV0dmFsIDAgc3Vj Y2Vzcy48YnI+KyAqIFN5bmNocm9ub3VzIHJlcGxpY2F0aW9uIHJlcXVlc3QgLSBjb25maXJtYXRp b24gb3Igcm9sbGJhY2sgb2Y8YnI+KyAqIHBlbmRpbmcgc3luY2hyb25vdXMgdHJhbnNhY3Rpb25z Ljxicj4mbmJzcDsmbmJzcDsqLzxicj4taW50PGJyPi14cm93X2VuY29kZV9jb25maXJtKHN0cnVj dCB4cm93X2hlYWRlciAqcm93LCBzdHJ1Y3QgcmVnaW9uICpyZWdpb24sPGJyPi0gdWludDMyX3Qg cmVwbGljYV9pZCwgaW50NjRfdCBsc24pOzxicj4rc3RydWN0IHN5bmNocm9fcmVxdWVzdCB7PGJy PisgLyoqIE9wZXJhdGlvbiB0eXBlIC0gSVBST1RPX1JPTExCQUNLIG9yIElQUk9UT19DT05GSVJN LiAqLzxicj4rIHVpbnQzMl90IHR5cGU7PGJyPisgLyoqPGJyPisgKiBJRCBvZiB0aGUgaW5zdGFu Y2Ugb3duaW5nIHRoZSBwZW5kaW5nIHRyYW5zYWN0aW9ucy48YnI+KyAqIE5vdGUsIGl0IG1heSBi ZSBub3QgdGhlIHNhbWUgaW5zdGFuY2UsIHdobyBjcmVhdGVkIHRoaXM8YnI+KyAqIHJlcXVlc3Qu IEFuIGluc3RhbmNlIGNhbiBtYWtlIGFuIG9wZXJhdGlvbiBvbiBmb3JlaWduPGJyPisgKiBzeW5j aHJvbm91cyB0cmFuc2FjdGlvbnMgaW4gY2FzZSBhIG5ldyBtYXN0ZXIgdHJpZXMgdG88YnI+KyAq IGZpbmlzaCB0cmFuc2FjdGlvbnMgb2YgYW4gb2xkIG1hc3Rlci48YnI+KyAqLzxicj4rIHVpbnQz Ml90IHJlcGxpY2FfaWQ7PGJyPisgLyoqPGJyPisgKiBPcGVyYXRpb24gTFNOLjxicj4rICogSW4g Y2FzZSBvZiBDT05GSVJNIGl0IG1lYW5zICdjb25maXJtIGFsbDxicj4rICogdHJhbnNhY3Rpb25z IHdpdGggbHNuICZsdDs9IHRoaXMgdmFsdWUnLjxicj4rICogSW4gY2FzZSBvZiBST0xMQkFDSyBp dCBtZWFucyAncm9sbGJhY2sgYWxsIHRyYW5zYWN0aW9uczxicj4rICogd2l0aCBsc24gJmd0Oz0g dGhpcyB2YWx1ZScuPGJyPisgKi88YnI+KyBpbnQ2NF90IGxzbjs8YnI+K307PGJyPiZuYnNwOzxi cj4mbmJzcDsvKio8YnI+LSAqIERlY29kZSB0aGUgQ09ORklSTSByZXF1ZXN0IGJvZHkuPGJyPisg KiBFbmNvZGUgc3luY2hyb25vdXMgcmVwbGljYXRpb24gcmVxdWVzdC48YnI+Jm5ic3A7Jm5ic3A7 KiBAcGFyYW0gcm93IHhyb3cgaGVhZGVyLjxicj4tICogQHBhcmFtW291dF0gcmVwbGljYV9pZCBt YXN0ZXIncyBpbnN0YW5jZSBpZC48YnI+LSAqIEBwYXJhbVtvdXRdIGxzbiBsYXN0IGNvbmZpcm1l ZCBsc24uPGJyPisgKiBAcGFyYW0gcmVnaW9uIFJlZ2lvbiB0byB1c2UgdG8gZW5jb2RlIHRoZSBj b25maXJtYXRpb24gYm9keS48YnI+KyAqIEBwYXJhbSByZXEgUmVxdWVzdCBwYXJhbWV0ZXJzLjxi cj4mbmJzcDsmbmJzcDsqIEByZXR2YWwgLTEgb24gZXJyb3IuPGJyPiZuYnNwOyZuYnNwOyogQHJl dHZhbCAwIHN1Y2Nlc3MuPGJyPiZuYnNwOyZuYnNwOyovPGJyPiZuYnNwO2ludDxicj4teHJvd19k ZWNvZGVfY29uZmlybShzdHJ1Y3QgeHJvd19oZWFkZXIgKnJvdywgdWludDMyX3QgKnJlcGxpY2Ff aWQsIGludDY0X3QgKmxzbik7PGJyPi08YnI+LS8qKjxicj4tICogRW5jb2RlIHRoZSBST0xMQkFD SyByb3cgYm9keSBhbmQgc2V0IHJvdyB0eXBlIHRvPGJyPi0gKiBJUFJPVE9fUk9MTEJBQ0suPGJy Pi0gKiBAcGFyYW0gcm93IHhyb3cgaGVhZGVyLjxicj4tICogQHBhcmFtIHJlZ2lvbiBSZWdpb24g dG8gdXNlIHRvIGVuY29kZSB0aGUgcm9sbGJhY2sgYm9keS48YnI+LSAqIEBwYXJhbSByZXBsaWNh X2lkIG1hc3RlcidzIGluc3RhbmNlIGlkLjxicj4tICogQHBhcmFtIGxzbiBsc24gdG8gcm9sbGJh Y2sgZnJvbSwgaW5jbHVkaW5nIGl0Ljxicj4tICogQHJldHZhbCAtMSBvbiBlcnJvci48YnI+LSAq IEByZXR2YWwgMCBzdWNjZXNzLjxicj4tICovPGJyPi1pbnQ8YnI+LXhyb3dfZW5jb2RlX3JvbGxi YWNrKHN0cnVjdCB4cm93X2hlYWRlciAqcm93LCBzdHJ1Y3QgcmVnaW9uICpyZWdpb24sPGJyPi0g dWludDMyX3QgcmVwbGljYV9pZCwgaW50NjRfdCBsc24pOzxicj4reHJvd19lbmNvZGVfc3luY2hy byhzdHJ1Y3QgeHJvd19oZWFkZXIgKnJvdywgc3RydWN0IHJlZ2lvbiAqcmVnaW9uLDxicj4rIGNv bnN0IHN0cnVjdCBzeW5jaHJvX3JlcXVlc3QgKnJlcSk7PGJyPiZuYnNwOzxicj4mbmJzcDsvKio8 YnI+LSAqIERlY29kZSB0aGUgUk9MTEJBQ0sgcm93IGJvZHkuPGJyPisgKiBEZWNvZGUgc3luY2hy b25vdXMgcmVwbGljYXRpb24gcmVxdWVzdC48YnI+Jm5ic3A7Jm5ic3A7KiBAcGFyYW0gcm93IHhy b3cgaGVhZGVyLjxicj4tICogQHBhcmFtW291dF0gcmVwbGljYV9pZCBtYXN0ZXIncyBpbnN0YW5j ZSBpZC48YnI+LSAqIEBwYXJhbVtvdXRdIGxzbiBsc24gdG8gcm9sbGJhY2sgZnJvbSwgaW5jbHVk aW5nIGl0Ljxicj4rICogQHBhcmFtW291dF0gcmVxIFJlcXVlc3QgcGFyYW1ldGVycy48YnI+Jm5i c3A7Jm5ic3A7KiBAcmV0dmFsIC0xIG9uIGVycm9yLjxicj4mbmJzcDsmbmJzcDsqIEByZXR2YWwg MCBzdWNjZXNzLjxicj4mbmJzcDsmbmJzcDsqLzxicj4mbmJzcDtpbnQ8YnI+LXhyb3dfZGVjb2Rl X3JvbGxiYWNrKHN0cnVjdCB4cm93X2hlYWRlciAqcm93LCB1aW50MzJfdCAqcmVwbGljYV9pZCwg aW50NjRfdCAqbHNuKTs8YnI+K3hyb3dfZGVjb2RlX3N5bmNocm8oY29uc3Qgc3RydWN0IHhyb3df aGVhZGVyICpyb3csIHN0cnVjdCBzeW5jaHJvX3JlcXVlc3QgKnJlcSk7PGJyPiZuYnNwOzxicj4m bmJzcDsvKio8YnI+Jm5ic3A7Jm5ic3A7KiBDQUxML0VWQUwgcmVxdWVzdC48YnI+Jm5ic3A7PC9k aXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9ibG9ja3F1b3RlPjxkaXY+Jm5ic3A7PC9kaXY+PGRpdj4t LTxicj5TZXJnZSZuYnNwO1BldHJlbmtvPC9kaXY+PC9CT0RZPjwvSFRNTD4K ----ALT--54a6E9c9e81EF5244Fb6704aA481730d1597679460--