From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from f191.i.mail.ru (f191.i.mail.ru [128.140.171.156]) (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 500AC469719 for ; Fri, 14 Feb 2020 01:04:00 +0300 (MSK) From: =?UTF-8?B?U2VyZ2V5IFBldHJlbmtv?= MIME-Version: 1.0 Date: Fri, 14 Feb 2020 01:03:59 +0300 Reply-To: =?UTF-8?B?U2VyZ2V5IFBldHJlbmtv?= Message-ID: <1581631439.134350666@f191.i.mail.ru> Content-Type: multipart/alternative; boundary="--ALT--7CnTWH2OvCXYlIvLJYvuzRtOvbPLKfo61581631439" In-Reply-To: <20200213065849.GA18311@atlas> References: <20200213064730.GA17713@atlas> <20200213065849.GA18311@atlas> Subject: Re: [Tarantool-patches] =?utf-8?q?=5BPATCH_1/2=5D_replication=3A_corr?= =?utf-8?q?ectly_check_for_rows_to_skip_in_applier?= List-Id: Tarantool development patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: =?UTF-8?B?S29uc3RhbnRpbiBPc2lwb3Y=?= Cc: tarantool-patches@dev.tarantool.org, v.shpilevoy@tarantool.org ----ALT--7CnTWH2OvCXYlIvLJYvuzRtOvbPLKfo61581631439 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: base64 CgoKPtCn0LXRgtCy0LXRgNCzLCAxMyDRhNC10LLRgNCw0LvRjyAyMDIwLCA5OjU4ICswMzowMCDQ vtGCIEtvbnN0YW50aW4gT3NpcG92IDxrb3N0amEub3NpcG92QGdtYWlsLmNvbT46Cj4KPiogS29u c3RhbnRpbiBPc2lwb3YgPCBrb3N0amEub3NpcG92QGdtYWlsLmNvbSA+IFsyMC8wMi8xMyAwOTo0 N106Cj4KPkZyb20gcmVsYXkuY2M6Cj4KPsKgwqDCoMKgwqDCoMKgwqAvKiAKPsKgwqDCoMKgwqDC oMKgwqDCoCogV2UncmUgZmVlZGluZyBhIFdBTCwgdGh1cyByZXNwb25kaW5nIHRvIEZJTkFMIEpP SU4gb3IgU1VCU0NSSUJFIAo+wqDCoMKgwqDCoMKgwqDCoMKgKiByZXF1ZXN0LiBJZiB0aGlzIGlz IEZJTkFMIEpPSU4gKGkuZS4gcmVsYXktPnJlcGxpY2EgaXMgTlVMTCksIAo+wqDCoMKgwqDCoMKg wqDCoMKgKiB3ZSBtdXN0IHJlbGF5IGFsbCByb3dzLCBldmVuIHRob3NlIG9yaWdpbmF0aW5nIGZy b20gdGhlIHJlcGxpY2EgCj7CoMKgwqDCoMKgwqDCoMKgwqAqIGl0c2VsZiAodGhlcmUgbWF5IGJl IHN1Y2ggcm93cyBpZiB0aGlzIGlzIHJlYm9vdHN0cmFwKS4gSWYgdGhpcyAKPsKgwqDCoMKgwqDC oMKgwqDCoCogU1VCU0NSSUJFLCBvbmx5IHNlbmQgYSByb3cgaWYgaXQgaXMgbm90IGZyb20gdGhl IHNhbWUgcmVwbGljYSAKPsKgwqDCoMKgwqDCoMKgwqDCoCogKGkuZS4gZG9uJ3Qgc2VuZCByZXBs aWNhJ3Mgb3duIHJvd3MgYmFjaykgb3IgaWYgdGhpcyByb3cgaXMgCj7CoMKgwqDCoMKgwqDCoMKg wqAqIG1pc3Npbmcgb24gdGhlIG90aGVyIHNpZGUgKGkuZS4gaW4gY2FzZSBvZiBzdWRkZW4gcG93 ZXItbG9zcywgCj7CoMKgwqDCoMKgwqDCoMKgwqAqIGRhdGEgd2FzIG5vdCB3cml0dGVuIHRvIFdB TCwgc28gcmVtb3RlIG1hc3RlciBjYW4ndCByZWNvdmVyIAo+wqDCoMKgwqDCoMKgwqDCoMKgKiBp dCkuIEluIHRoZSBsYXR0ZXIgY2FzZSBwYWNrZXQncyBMU04gaXMgbGVzcyB0aGFuIG9yIGVxdWFs IHRvIAo+wqDCoMKgwqDCoMKgwqDCoMKgKiBsb2NhbCBtYXN0ZXIncyBMU04gYXQgdGhlIG1vbWVu dCBpdCByZWNlaXZlZCAnU1VCU0NSSUJFJyByZXF1ZXN0LiAKPsKgwqDCoMKgwqDCoMKgwqDCoCov IAo+wqDCoMKgwqDCoMKgwqDCoGlmIChyZWxheS0+cmVwbGljYSA9PSBOVUxMIHx8IAo+wqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgcGFja2V0LT5yZXBsaWNhX2lkICE9IHJlbGF5LT5yZXBsaWNhLT5p ZCB8fCAKPsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHBhY2tldC0+bHNuIDw9IHZjbG9ja19nZXQo JnJlbGF5LT5sb2NhbF92Y2xvY2tfYXRfc3Vic2NyaWJlLCAKPsKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBw YWNrZXQtPnJlcGxpY2FfaWQpKSB7IAo+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBz dHJ1Y3QgZXJyaW5qICppbmogPSBlcnJpbmooRVJSSU5KX1JFTEFZX0JSRUFLX0xTTiwgCj7CoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgRVJSSU5KX0lOVCk7IAo+wqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBpZiAoaW5qICE9IE5VTEwgJiYgcGFja2V0LT5sc24gPT0gaW5qLT5p cGFyYW0pIHsgCj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBwYWNrZXQtPmxzbiA9IGluai0+aXBhcmFtIC0gMTsgCj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzYXlfd2FybigiaW5qZWN0ZWQgYnJva2VuIGxzbjog JWxsZCIsIAo+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgKGxvbmcgbG9uZykgcGFja2V0LT5sc24pOyAKPsKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgfSAKPsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg cmVsYXlfc2VuZChyZWxheSwgcGFja2V0KTsgCj7CoMKgwqDCoMKgwqDCoMKgfSAKPn0gCj4KPgo+ QXMgeW91IGNhbiBzZWUgd2UgbmV2ZXIgc2VuZCBvdXIgb3duIHJvd3MgYmFjaywgYXMgbG9uZyBh cyAKPnRoZXkgYXJlIGdyZWF0ZXIgdGhhbiByZWxheS0+bG9jYWxfdmNsb2NrX2F0X3N1YnNjcmli ZS4KVHJ1ZS4gRmlyc3Qgb2YgYWxsLCBsb2NhbF92Y2xvY2tfYXRfc3Vic2NyaWJlIHdhcyB1cGRh dGVkIGxhdGVyIHRoYW4KaXQgc2hvdWxkJ3ZlIGJlZW4uIEkgZGVzY3JpYmUgaXQgaW4gbW9yZSBk ZXRhaWwgaW4gb25lIG9mIHRoZSBjb21taXRzLgoKPgo+Cj5TbyB3aGF0IGV4YWN0bHkgZG9lcyBn byB3cm9uZyBoZXJlPyAKPgo+SXMgdGhlIGJ1ZyB0cmlnZ2VyZWQgZHVyaW5nIGluaXRpYWwgcmVw bGljYXRpb24gY29uZmlndXJhdGlvbiwgb3IKPmR1cmluZyBhIHJlY29uZmlndXJhdGlvbj8KQm90 aCBkdXJpbmcgcmVjb25maWd1cmF0aW9uLCByZXN1YnNjcmliaW5nIGluIGNhc2UgYSByZW1vdGUg aW5zdGFuY2UKZGllcyBhbmQgcmVzdGFydHMuCj4KPgo+SSBzdXNwZWN0IHRoZSBpc3N1ZSBpcyB0 aGF0IGF0IHJlY29uZmlndXJhdGlvbiB3ZSBzZW5kCj5sb2NhbF92Y2xvY2tfYXRfc3Vic2NyaWJl LCBidXQga2VlcCBjaGFuZ2luZyBpdC4gClllcAoKPgo+VGhlIGZpeCB0aGVuIHdvdWxkIGJlIHRv IG1ha2Ugc3VyZSB0aGUgbG9jYWwgY29tcG9uZW50IGluCj5sb2NhbF92Y2xvY2tfYXRfc3Vic2Ny aWJlIGlzIHNldCB0byBpbmZpbml0eSBkdXJpbmcKPnJlY29uZmlndXJhdGlvbgo+Cj4KPj4gKiBz ZXJnZXBldHJlbmtvIDwgc2VyZ2VwZXRyZW5rb0B0YXJhbnRvb2wub3JnID4gWzIwLzAyLzEzIDA5 OjM0XToKPj4gPiBGaXggcmVwbGljYXNldC5hcHBsaWVyLnZjbG9jayBpbml0aWFsaXphdGlvbiBp c3N1ZXM6IGl0IHdhc24ndAo+PiA+IGluaXRpYWxpemVkIGF0IGFsbCBwcmV2aW91c2x5Lgo+PiAK Pj4gSW4gdGhlIG5leHQgbGluZSB5b3Ugc2F5IHRoYXQgeW91IHJlbW92ZSB0aGUgaW5pdGlhbGl6 YXRpb24uIFdoYXQKPj4gZG8geW91IG1lYW4gaGVyZT8KPj4gCj4+ID4gTW9yZW92ZXIsIHRoZXJl IGlzIG5vIHZhbGlkIHBvaW50IGluIGNvZGUKPj4gPiB0byBpbml0aWFsaXplIGl0LCBzaW5jZSBp dCBtYXkgZ2V0IHN0YWxlIHJpZ2h0IGF3YXkgaWYgbmV3IGVudHJpZXMgYXJlCj4+ID4gd3JpdHRl biB0byBXQUwuCj4+IAo+PiBXZWxsLCBpdCByZWZsZWN0cyB0aGUgc3RhdGUgb2YgdGhlIHdhbCAq YXMgc2VlbiBieSogdGhlIHNldCBvZgo+PiBhcHBsaWVycy4gVGhpcyBpcyBzdGF0ZWQgaW4gdGhl IGNvbW1lbnQuIFNvIGl0IGRvZXNuJ3QgaGF2ZSB0bwo+PiByZWZsZWN0IGxvY2FsIGNoYW5nZXMu IAo+PiAKPj4gPiBTbywgY2hlY2sgZm9yIGJvdGggYXBwbGllciBhbmQgcmVwbGljYXNldCB2Y2xv Y2tzLgo+PiA+IFRoZSBncmVhdGVyIG9uZSBwcm90ZWN0cyB0aGUgaW5zdGFuY2UgZnJvbSBhcHBs eWluZyB0aGUgcm93cyBpdCBoYXMKPj4gPiBhbHJlYWR5IGFwcGxpZWQgb3IgaGFzIGFscmVhZHkg c2NoZWR1bGVkIHRvIHdyaXRlLgo+PiA+IEFsc28gcmVtb3ZlIGFuIHVubmVjZXNzYXJ5IGFwbGll ciB2Y2xvY2sgaW5pdGlhbGl6YXRpb24gZnJvbQo+PiA+IHJlcGxpY2F0aW9uX2luaXQoKS4KPj4g Cj4+IEZpcnN0IG9mIGFsbCwgdGhlIHJhY2UgeW91IGRlc2NyaWJlIGFwcGxpZXMgdG8KPj4gbG9j YWwgY2hhbmdlcyBvbmx5LiBZZXQgeW91IGFkZCB0aGUgY2hlY2sgZm9yIGFsbCByZXBsaWNhIGlk cy4gCj4+IFRoaXMgZnVydGhlciBvYmxpdGVyYXRlcyB0aGlzIHBpZWNlIG9mIGNvZGUuCj4+IAo+ PiBTZWNvbmQsIHRoZSBjb3JlIG9mIHRoZSBpc3N1ZSBpcyBhICJob2xlIiBpbiB2Y2xvY2sgcHJv dGVjdGlvbgo+PiBlbmZvcmNlZCBieSBsYXRjaF9sb2NrL2xhdGNoX3VubG9jay4gQmFzaWNhbGx5 IHRoZSBhc3N1bXB0aW9uIHRoYXQKPj4gbGF0Y2hfbG9jay9sYXRjaF91bmxvY2sgaGFzIGlzIHRo YXQgd2hpbGUgYSBsYXRjaCBpcyBsb2NrZWQsIG5vCj4+IHNvdXJjZSBjYW4gYXBwbHkgYSB0cmFu c2FjdGlvbiB1bmRlciB0aGlzIHJlcGxpY2EgaWQuIFRoaXMsIGlzCj4+IHZpb2xhdGVkIGJ5IHRo ZSBsb2NhbCBXQUwuCj4+IAo+PiBXZSB1c2VkIHRvIHNraXAgYWxsIGNoYW5nZXMgYnkgbG9jYWwg dmNsb2NrIGlkIGJlZm9yZSBpbiBhcHBsaWVyLgo+PiAKPj4gTGF0ZXIgaXQgd2FzIGNoYW5nZWQg dG8gYmUgYWJsZSB0byBnZXQteW91ci1vd24gbG9ncyBvbiByZWNvdmVyeSwKPj4gZS5nLiBpZiBz b21lIHJlcGxpY2EgaGFzIHRoZW0gLCBhbmQgdGhlIGxvY2FsIG5vZGUgbG9zdCBhIHBpZWNlIG9m Cj4+IHdhbC4KPj4gCj4+IEl0IHdpbGwgdGFrZSBtZSBhIHdoaWxlIHRvIGZpbmQgdGhpcyBjb21t aXQgYW5kIHRpY2tldCwgYnV0IHRoaXMKPj4gaXMgdGhlIGNvbW1pdCBhbmQgdGlja2V0IHdoaWNo IGludHJvZHVjZWQgdGhlIHJlZ3Jlc3Npb24uCj4+IAo+PiBUaGUgcHJvcGVyIGZpeCBpcyB0byBv bmx5IGFwcGx5IGxvY2FsIGNoYW5nZXMgcmVjZWl2ZWQgZnJvbQo+PiByZW1vdGVzIGluIG9ycGhh biBtb2RlLCBhbmQgYmVnaW4gc2tpcHBpbmcgdGhlbSB3aGVuIGVudGVyaW5nCj4+IHJlYWQtd3Jp dGUgbW9kZS4KPj4gCj4+ID4gQ2xvc2VzICM0NzM5Cj4+ID4gLS0tCj4+ID4gIHNyYy9ib3gvYXBw bGllci5jYyAgICAgfCAxNCArKysrKysrKysrKystLQo+PiA+ICBzcmMvYm94L3JlcGxpY2F0aW9u LmNjIHwgIDEgLQo+PiA+ICAyIGZpbGVzIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKyksIDMgZGVs ZXRpb25zKC0pCj4+ID4gCj4+ID4gZGlmZiAtLWdpdCBhL3NyYy9ib3gvYXBwbGllci5jYyBiL3Ny Yy9ib3gvYXBwbGllci5jYwo+PiA+IGluZGV4IGFlM2QyODFhNS4uYWNiMjZiN2UyIDEwMDY0NAo+ PiA+IC0tLSBhL3NyYy9ib3gvYXBwbGllci5jYwo+PiA+ICsrKyBiL3NyYy9ib3gvYXBwbGllci5j Ywo+PiA+IEBAIC03MzEsOCArNzMxLDE4IEBAIGFwcGxpZXJfYXBwbHlfdHgoc3RydWN0IHN0YWls cSAqcm93cykKPj4gPiAgCXN0cnVjdCBsYXRjaCAqbGF0Y2ggPSAocmVwbGljYSA/ICZyZXBsaWNh LT5vcmRlcl9sYXRjaCA6Cj4+ID4gIAkJCSAgICAgICAmcmVwbGljYXNldC5hcHBsaWVyLm9yZGVy X2xhdGNoKTsKPj4gPiAgCWxhdGNoX2xvY2sobGF0Y2gpOwo+PiA+IC0JaWYgKHZjbG9ja19nZXQo JnJlcGxpY2FzZXQuYXBwbGllci52Y2xvY2ssCj4+ID4gLQkJICAgICAgIGZpcnN0X3Jvdy0+cmVw bGljYV9pZCkgPj0gZmlyc3Rfcm93LT5sc24pIHsKPj4gPiArCS8qCj4+ID4gKwkgKiBXZSBjYW5u b3QgdGVsbCB3aGljaCB2Y2xvY2sgaXMgZ3JlYXRlci4gVGhlcmUgaXMgbm8KPj4gPiArCSAqIHBy b3BlciBwbGFjZSB0byBpbml0aWFsaXplIGFwcGxpZXIgdmNsb2NrLCBzaW5jZSBpdAo+PiA+ICsJ ICogbWF5IGdldCBzdGFsZSByaWdodCBhd2F5IGlmIHdlIHdyaXRlIHNvbWV0aGluZyB0byBXQUwK Pj4gPiArCSAqIGFuZCBpdCBnZXRzIHJlcGxpY2F0ZWQgYW5kIHRoZW4gYXJyaXZlcyBiYWNrIGZy b20gdGhlCj4+ID4gKwkgKiByZXBsaWNhLiBTbyBjaGVjayBhZ2FpbnN0IGJvdGggdmNsb2Nrcy4g UmVwbGljYXNldAo+PiA+ICsJICogdmNsb2NrIHdpbGwgZ3VhcmQgdXMgZnJvbSBjb3JuZXIgY2Fz ZXMgbGlrZSB0aGUgb25lCj4+ID4gKwkgKiBhYm92ZS4KPj4gPiArCSAqLwo+PiA+ICsJaWYgKE1B WCh2Y2xvY2tfZ2V0KCZyZXBsaWNhc2V0LmFwcGxpZXIudmNsb2NrLCBmaXJzdF9yb3ctPnJlcGxp Y2FfaWQpLAo+PiA+ICsJCXZjbG9ja19nZXQoJnJlcGxpY2FzZXQudmNsb2NrLCBmaXJzdF9yb3ct PnJlcGxpY2FfaWQpKSA+PQo+PiA+ICsJICAgIGZpcnN0X3Jvdy0+bHNuKSB7Cj4+ID4gIAkJbGF0 Y2hfdW5sb2NrKGxhdGNoKTsKPj4gPiAgCQlyZXR1cm4gMDsKPj4gPiAgCX0KPj4gPiBkaWZmIC0t Z2l0IGEvc3JjL2JveC9yZXBsaWNhdGlvbi5jYyBiL3NyYy9ib3gvcmVwbGljYXRpb24uY2MKPj4g PiBpbmRleCBlN2JmYTIyYWIuLjdiMDQ1NzNhNCAxMDA2NDQKPj4gPiAtLS0gYS9zcmMvYm94L3Jl cGxpY2F0aW9uLmNjCj4+ID4gKysrIGIvc3JjL2JveC9yZXBsaWNhdGlvbi5jYwo+PiA+IEBAIC05 Myw3ICs5Myw2IEBAIHJlcGxpY2F0aW9uX2luaXQodm9pZCkKPj4gPiAgCWxhdGNoX2NyZWF0ZSgm cmVwbGljYXNldC5hcHBsaWVyLm9yZGVyX2xhdGNoKTsKPj4gPiAKPj4gPiAgCXZjbG9ja19jcmVh dGUoJnJlcGxpY2FzZXQuYXBwbGllci52Y2xvY2spOwo+PiA+IC0JdmNsb2NrX2NvcHkoJnJlcGxp Y2FzZXQuYXBwbGllci52Y2xvY2ssICZyZXBsaWNhc2V0LnZjbG9jayk7Cj4+ID4gIAlybGlzdF9j cmVhdGUoJnJlcGxpY2FzZXQuYXBwbGllci5vbl9yb2xsYmFjayk7Cj4+ID4gIAlybGlzdF9jcmVh dGUoJnJlcGxpY2FzZXQuYXBwbGllci5vbl9jb21taXQpOwo+PiA+IAo+PiA+IC0tIAo+PiA+IDIu MjAuMSAoQXBwbGUgR2l0LTExNykKPj4gCj4+IC0tIAo+PiBLb25zdGFudGluIE9zaXBvdiwgTW9z Y293LCBSdXNzaWEKPgo+LS0gCj5Lb25zdGFudGluIE9zaXBvdiwgTW9zY293LCBSdXNzaWEKCgot LSAKU2VyZ2V5IFBldHJlbmtvCg== ----ALT--7CnTWH2OvCXYlIvLJYvuzRtOvbPLKfo61581631439 Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: base64 CjxIVE1MPjxCT0RZPjxicj48YnI+PGJyPjxibG9ja3F1b3RlIHN0eWxlPSJib3JkZXItbGVmdDox cHggc29saWQgIzA4NTdBNjsgbWFyZ2luOjEwcHg7IHBhZGRpbmc6MCAwIDAgMTBweDsiPgoJ0KfQ tdGC0LLQtdGA0LMsIDEzINGE0LXQstGA0LDQu9GPIDIwMjAsIDk6NTggKzAzOjAwINC+0YIgS29u c3RhbnRpbiBPc2lwb3YgJmx0O2tvc3RqYS5vc2lwb3ZAZ21haWwuY29tJmd0Ozo8YnI+PGJyPjxk aXYgaWQ9IiI+PGRpdiBjbGFzcz0ianMtaGVscGVyIGpzLXJlYWRtc2ctbXNnIj48ZGl2PjxkaXYg aWQ9InN0eWxlXzE1ODE1NzcxMzMwNzEyMDI2NTU1X0JPRFkiPiogS29uc3RhbnRpbiBPc2lwb3Yg Jmx0OzxhIGhyZWY9Im1haWx0bzprb3N0amEub3NpcG92QGdtYWlsLmNvbSI+a29zdGphLm9zaXBv dkBnbWFpbC5jb208L2E+Jmd0OyBbMjAvMDIvMTMgMDk6NDddOjxicj48YnI+CkZyb20gcmVsYXku Y2M6PGJyPjxicj4KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7LyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgPGJyPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsqIFdlJ3JlIGZlZWRpbmcgYSBXQUwsIHRodXMgcmVzcG9uZGlu ZyB0byBGSU5BTCBKT0lOIG9yIFNVQlNDUklCRSAgICAgIDxicj4KJm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7KiByZXF1ZXN0LiBJZiB0aGlzIGlz IEZJTkFMIEpPSU4gKGkuZS4gcmVsYXktJmd0O3JlcGxpY2EgaXMgTlVMTCksICAgICAgICA8YnI+ CiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyog d2UgbXVzdCByZWxheSBhbGwgcm93cywgZXZlbiB0aG9zZSBvcmlnaW5hdGluZyBmcm9tIHRoZSBy ZXBsaWNhICAgICAgPGJyPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsqIGl0c2VsZiAodGhlcmUgbWF5IGJlIHN1Y2ggcm93cyBpZiB0aGlzIGlz IHJlYm9vdHN0cmFwKS4gSWYgdGhpcyAgICAgIDxicj4KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7KiBTVUJTQ1JJQkUsIG9ubHkgc2VuZCBhIHJv dyBpZiBpdCBpcyBub3QgZnJvbSB0aGUgc2FtZSByZXBsaWNhICAgICAgICA8YnI+CiZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyogKGkuZS4gZG9u J3Qgc2VuZCByZXBsaWNhJ3Mgb3duIHJvd3MgYmFjaykgb3IgaWYgdGhpcyByb3cgaXMgICAgICAg ICAgPGJyPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsqIG1pc3Npbmcgb24gdGhlIG90aGVyIHNpZGUgKGkuZS4gaW4gY2FzZSBvZiBzdWRkZW4g cG93ZXItbG9zcywgICAgICAgIDxicj4KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7KiBkYXRhIHdhcyBub3Qgd3JpdHRlbiB0byBXQUwsIHNvIHJl bW90ZSBtYXN0ZXIgY2FuJ3QgcmVjb3ZlciAgICAgICAgICA8YnI+CiZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyogaXQpLiBJbiB0aGUgbGF0dGVy IGNhc2UgcGFja2V0J3MgTFNOIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byAgICAgICAgPGJyPgom bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsqIGxv Y2FsIG1hc3RlcidzIExTTiBhdCB0aGUgbW9tZW50IGl0IHJlY2VpdmVkICdTVUJTQ1JJQkUnIHJl cXVlc3QuICAgIDxicj4KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Ki8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICA8YnI+CiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwO2lmIChyZWxheS0mZ3Q7cmVwbGljYSA9PSBOVUxMIHx8ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxicj4KJm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7cGFja2V0LSZndDtyZXBsaWNhX2lkICE9IHJlbGF5LSZndDtyZXBsaWNhLSZndDtpZCB8fCAg ICAgICAgICAgICAgICAgICAgICAgICA8YnI+CiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO3BhY2tldC0mZ3Q7bHNu ICZsdDs9IHZjbG9ja19nZXQoJmFtcDtyZWxheS0mZ3Q7bG9jYWxfdmNsb2NrX2F0X3N1YnNjcmli ZSwgICAgICAgIDxicj4KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7cGFja2V0LSZndDtyZXBsaWNhX2lkKSkgeyAgICAgICAgICAgICAgICAg ICAgPGJyPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtzdHJ1Y3QgZXJy aW5qICppbmogPSBlcnJpbmooRVJSSU5KX1JFTEFZX0JSRUFLX0xTTiwgICAgICAgICAgICAgPGJy PgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtFUlJJTkpfSU5UKTsgICAgICAg ICAgICAgICAgICAgICAgICA8YnI+CiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwO2lmIChpbmogIT0gTlVMTCAmYW1wOyZhbXA7IHBhY2tldC0mZ3Q7bHNuID09IGluai0mZ3Q7 aXBhcmFtKSB7ICAgICAgICAgICAgICAgIDxicj4KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7cGFja2V0LSZndDtsc24gPSBpbmotJmd0O2lwYXJhbSAtIDE7ICAgICAgICAgICAgICAgICAg ICAgICAgICA8YnI+CiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO3NheV93YXJuKCJpbmpl Y3RlZCBicm9rZW4gbHNuOiAlbGxkIiwgICAgICAgICAgICAgICAgICAgPGJyPgombmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsobG9uZyBsb25nKSBwYWNrZXQtJmd0O2xzbik7ICAgICAgICAgICAg ICAgICAgICAgIDxicj4KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7fSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDxicj4KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7cmVsYXlfc2Vu ZChyZWxheSwgcGFja2V0KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxi cj4KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7fSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgPGJyPgp9ICAgICAgICAgICAgICAgICA8YnI+PGJyPjxicj4KQXMgeW91IGNhbiBz ZWUgd2UgbmV2ZXIgc2VuZCBvdXIgb3duIHJvd3MgYmFjaywgYXMgbG9uZyBhcyA8YnI+CnRoZXkg YXJlIGdyZWF0ZXIgdGhhbiByZWxheS0mZ3Q7bG9jYWxfdmNsb2NrX2F0X3N1YnNjcmliZS48L2Rp dj48L2Rpdj48L2Rpdj48L2Rpdj48L2Jsb2NrcXVvdGU+PGJyPlRydWUuIEZpcnN0IG9mIGFsbCwg bG9jYWxfdmNsb2NrX2F0X3N1YnNjcmliZSB3YXMgdXBkYXRlZCBsYXRlciB0aGFuPGJyPml0IHNo b3VsZCd2ZSBiZWVuLiBJIGRlc2NyaWJlIGl0IGluIG1vcmUgZGV0YWlsIGluIG9uZSBvZiB0aGUg Y29tbWl0cy48YnI+PGJyPjxibG9ja3F1b3RlIHN0eWxlPSJib3JkZXItbGVmdDoxcHggc29saWQg IzA4NTdBNjsgbWFyZ2luOjEwcHg7IHBhZGRpbmc6MCAwIDAgMTBweDsiPjxkaXYgaWQ9IiI+PGRp diBjbGFzcz0ianMtaGVscGVyIGpzLXJlYWRtc2ctbXNnIj48ZGl2PjxkaXYgaWQ9InN0eWxlXzE1 ODE1NzcxMzMwNzEyMDI2NTU1X0JPRFkiPjxicj48YnI+ClNvIHdoYXQgZXhhY3RseSBkb2VzIGdv IHdyb25nIGhlcmU/IDxicj48YnI+CklzIHRoZSBidWcgdHJpZ2dlcmVkIGR1cmluZyBpbml0aWFs IHJlcGxpY2F0aW9uIGNvbmZpZ3VyYXRpb24sIG9yPGJyPgpkdXJpbmcgYSByZWNvbmZpZ3VyYXRp b24/PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9ibG9ja3F1b3RlPjxicj5Cb3RoIGR1cmluZyBy ZWNvbmZpZ3VyYXRpb24sIHJlc3Vic2NyaWJpbmcgaW4gY2FzZSBhIHJlbW90ZSBpbnN0YW5jZTxi cj5kaWVzIGFuZCByZXN0YXJ0cy48YnI+PGJsb2NrcXVvdGUgc3R5bGU9ImJvcmRlci1sZWZ0OjFw eCBzb2xpZCAjMDg1N0E2OyBtYXJnaW46MTBweDsgcGFkZGluZzowIDAgMCAxMHB4OyI+PGRpdiBp ZD0iIj48ZGl2IGNsYXNzPSJqcy1oZWxwZXIganMtcmVhZG1zZy1tc2ciPjxkaXY+PGRpdiBpZD0i c3R5bGVfMTU4MTU3NzEzMzA3MTIwMjY1NTVfQk9EWSI+PGJyPjxicj4KSSBzdXNwZWN0IHRoZSBp c3N1ZSBpcyB0aGF0IGF0IHJlY29uZmlndXJhdGlvbiB3ZSBzZW5kPGJyPgpsb2NhbF92Y2xvY2tf YXRfc3Vic2NyaWJlLCBidXQga2VlcCBjaGFuZ2luZyBpdC48L2Rpdj48L2Rpdj48L2Rpdj48L2Rp dj48L2Jsb2NrcXVvdGU+WWVwPGJyPjxicj48YmxvY2txdW90ZSBzdHlsZT0iYm9yZGVyLWxlZnQ6 MXB4IHNvbGlkICMwODU3QTY7IG1hcmdpbjoxMHB4OyBwYWRkaW5nOjAgMCAwIDEwcHg7Ij48ZGl2 IGlkPSIiPjxkaXYgY2xhc3M9ImpzLWhlbHBlciBqcy1yZWFkbXNnLW1zZyI+PGRpdj48ZGl2IGlk PSJzdHlsZV8xNTgxNTc3MTMzMDcxMjAyNjU1NV9CT0RZIj48YnI+ClRoZSBmaXggdGhlbiB3b3Vs ZCBiZSB0byBtYWtlIHN1cmUgdGhlIGxvY2FsIGNvbXBvbmVudCBpbjxicj4KbG9jYWxfdmNsb2Nr X2F0X3N1YnNjcmliZSBpcyBzZXQgdG8gaW5maW5pdHkgZHVyaW5nPGJyPgpyZWNvbmZpZ3VyYXRp b248L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Jsb2NrcXVvdGU+PGJsb2NrcXVvdGUgc3R5bGU9 ImJvcmRlci1sZWZ0OjFweCBzb2xpZCAjMDg1N0E2OyBtYXJnaW46MTBweDsgcGFkZGluZzowIDAg MCAxMHB4OyI+PGRpdiBpZD0iIj48ZGl2IGNsYXNzPSJqcy1oZWxwZXIganMtcmVhZG1zZy1tc2ci PjxkaXY+PGRpdiBpZD0ic3R5bGVfMTU4MTU3NzEzMzA3MTIwMjY1NTVfQk9EWSI+PGJyPjxicj48 ZGl2IGNsYXNzPSJtYWlsLXF1b3RlLWNvbGxhcHNlIj4mZ3Q7ICogc2VyZ2VwZXRyZW5rbyAmbHQ7 PGEgaHJlZj0ibWFpbHRvOnNlcmdlcGV0cmVua29AdGFyYW50b29sLm9yZyI+c2VyZ2VwZXRyZW5r b0B0YXJhbnRvb2wub3JnPC9hPiZndDsgWzIwLzAyLzEzIDA5OjM0XTo8YnI+CiZndDsgJmd0OyBG aXggcmVwbGljYXNldC5hcHBsaWVyLnZjbG9jayBpbml0aWFsaXphdGlvbiBpc3N1ZXM6IGl0IHdh c24ndDxicj4KJmd0OyAmZ3Q7IGluaXRpYWxpemVkIGF0IGFsbCBwcmV2aW91c2x5Ljxicj4KJmd0 OyA8YnI+CiZndDsgSW4gdGhlIG5leHQgbGluZSB5b3Ugc2F5IHRoYXQgeW91IHJlbW92ZSB0aGUg aW5pdGlhbGl6YXRpb24uIFdoYXQ8YnI+CiZndDsgZG8geW91IG1lYW4gaGVyZT88YnI+CiZndDsg PGJyPgomZ3Q7ICZndDsgTW9yZW92ZXIsIHRoZXJlIGlzIG5vIHZhbGlkIHBvaW50IGluIGNvZGU8 YnI+CiZndDsgJmd0OyB0byBpbml0aWFsaXplIGl0LCBzaW5jZSBpdCBtYXkgZ2V0IHN0YWxlIHJp Z2h0IGF3YXkgaWYgbmV3IGVudHJpZXMgYXJlPGJyPgomZ3Q7ICZndDsgd3JpdHRlbiB0byBXQUwu PGJyPgomZ3Q7IDxicj4KJmd0OyBXZWxsLCBpdCByZWZsZWN0cyB0aGUgc3RhdGUgb2YgdGhlIHdh bCAqYXMgc2VlbiBieSogdGhlIHNldCBvZjxicj4KJmd0OyBhcHBsaWVycy4gVGhpcyBpcyBzdGF0 ZWQgaW4gdGhlIGNvbW1lbnQuIFNvIGl0IGRvZXNuJ3QgaGF2ZSB0bzxicj4KJmd0OyByZWZsZWN0 IGxvY2FsIGNoYW5nZXMuIDxicj4KJmd0OyA8YnI+CiZndDsgJmd0OyBTbywgY2hlY2sgZm9yIGJv dGggYXBwbGllciBhbmQgcmVwbGljYXNldCB2Y2xvY2tzLjxicj4KJmd0OyAmZ3Q7IFRoZSBncmVh dGVyIG9uZSBwcm90ZWN0cyB0aGUgaW5zdGFuY2UgZnJvbSBhcHBseWluZyB0aGUgcm93cyBpdCBo YXM8YnI+CiZndDsgJmd0OyBhbHJlYWR5IGFwcGxpZWQgb3IgaGFzIGFscmVhZHkgc2NoZWR1bGVk IHRvIHdyaXRlLjxicj4KJmd0OyAmZ3Q7IEFsc28gcmVtb3ZlIGFuIHVubmVjZXNzYXJ5IGFwbGll ciB2Y2xvY2sgaW5pdGlhbGl6YXRpb24gZnJvbTxicj4KJmd0OyAmZ3Q7IHJlcGxpY2F0aW9uX2lu aXQoKS48YnI+CiZndDsgPGJyPgomZ3Q7IEZpcnN0IG9mIGFsbCwgdGhlIHJhY2UgeW91IGRlc2Ny aWJlIGFwcGxpZXMgdG88YnI+CiZndDsgbG9jYWwgY2hhbmdlcyBvbmx5LiBZZXQgeW91IGFkZCB0 aGUgY2hlY2sgZm9yIGFsbCByZXBsaWNhIGlkcy4gPGJyPgomZ3Q7IFRoaXMgZnVydGhlciBvYmxp dGVyYXRlcyB0aGlzIHBpZWNlIG9mIGNvZGUuPGJyPgomZ3Q7IDxicj4KJmd0OyBTZWNvbmQsIHRo ZSBjb3JlIG9mIHRoZSBpc3N1ZSBpcyBhICJob2xlIiBpbiB2Y2xvY2sgcHJvdGVjdGlvbjxicj4K Jmd0OyBlbmZvcmNlZCBieSBsYXRjaF9sb2NrL2xhdGNoX3VubG9jay4gQmFzaWNhbGx5IHRoZSBh c3N1bXB0aW9uIHRoYXQ8YnI+CiZndDsgbGF0Y2hfbG9jay9sYXRjaF91bmxvY2sgaGFzIGlzIHRo YXQgd2hpbGUgYSBsYXRjaCBpcyBsb2NrZWQsIG5vPGJyPgomZ3Q7IHNvdXJjZSBjYW4gYXBwbHkg YSB0cmFuc2FjdGlvbiB1bmRlciB0aGlzIHJlcGxpY2EgaWQuIFRoaXMsIGlzPGJyPgomZ3Q7IHZp b2xhdGVkIGJ5IHRoZSBsb2NhbCBXQUwuPGJyPgomZ3Q7IDxicj4KJmd0OyBXZSB1c2VkIHRvIHNr aXAgYWxsIGNoYW5nZXMgYnkgbG9jYWwgdmNsb2NrIGlkIGJlZm9yZSBpbiBhcHBsaWVyLjxicj4K Jmd0OyA8YnI+CiZndDsgTGF0ZXIgaXQgd2FzIGNoYW5nZWQgdG8gYmUgYWJsZSB0byBnZXQteW91 ci1vd24gbG9ncyBvbiByZWNvdmVyeSw8YnI+CiZndDsgZS5nLiBpZiBzb21lIHJlcGxpY2EgaGFz IHRoZW0gLCBhbmQgdGhlIGxvY2FsIG5vZGUgbG9zdCBhIHBpZWNlIG9mPGJyPgomZ3Q7IHdhbC48 YnI+CiZndDsgPGJyPgomZ3Q7IEl0IHdpbGwgdGFrZSBtZSBhIHdoaWxlIHRvIGZpbmQgdGhpcyBj b21taXQgYW5kIHRpY2tldCwgYnV0IHRoaXM8YnI+CiZndDsgaXMgdGhlIGNvbW1pdCBhbmQgdGlj a2V0IHdoaWNoIGludHJvZHVjZWQgdGhlIHJlZ3Jlc3Npb24uPGJyPgomZ3Q7IDxicj4KJmd0OyBU aGUgcHJvcGVyIGZpeCBpcyB0byBvbmx5IGFwcGx5IGxvY2FsIGNoYW5nZXMgcmVjZWl2ZWQgZnJv bTxicj4KJmd0OyByZW1vdGVzIGluIG9ycGhhbiBtb2RlLCBhbmQgYmVnaW4gc2tpcHBpbmcgdGhl bSB3aGVuIGVudGVyaW5nPGJyPgomZ3Q7IHJlYWQtd3JpdGUgbW9kZS48YnI+CiZndDsgPGJyPgom Z3Q7ICZndDsgQ2xvc2VzICM0NzM5PGJyPgomZ3Q7ICZndDsgLS0tPGJyPgomZ3Q7ICZndDsgIHNy Yy9ib3gvYXBwbGllci5jYyAgICAgfCAxNCArKysrKysrKysrKystLTxicj4KJmd0OyAmZ3Q7ICBz cmMvYm94L3JlcGxpY2F0aW9uLmNjIHwgIDEgLTxicj4KJmd0OyAmZ3Q7ICAyIGZpbGVzIGNoYW5n ZWQsIDEyIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pPGJyPgomZ3Q7ICZndDsgPGJyPgom Z3Q7ICZndDsgZGlmZiAtLWdpdCBhL3NyYy9ib3gvYXBwbGllci5jYyBiL3NyYy9ib3gvYXBwbGll ci5jYzxicj4KJmd0OyAmZ3Q7IGluZGV4IGFlM2QyODFhNS4uYWNiMjZiN2UyIDEwMDY0NDxicj4K Jmd0OyAmZ3Q7IC0tLSBhL3NyYy9ib3gvYXBwbGllci5jYzxicj4KJmd0OyAmZ3Q7ICsrKyBiL3Ny Yy9ib3gvYXBwbGllci5jYzxicj4KJmd0OyAmZ3Q7IEBAIC03MzEsOCArNzMxLDE4IEBAIGFwcGxp ZXJfYXBwbHlfdHgoc3RydWN0IHN0YWlscSAqcm93cyk8YnI+CiZndDsgJmd0OyAgCXN0cnVjdCBs YXRjaCAqbGF0Y2ggPSAocmVwbGljYSA/ICZhbXA7cmVwbGljYS0mZ3Q7b3JkZXJfbGF0Y2ggOjxi cj4KJmd0OyAmZ3Q7ICAJCQkgICAgICAgJmFtcDtyZXBsaWNhc2V0LmFwcGxpZXIub3JkZXJfbGF0 Y2gpOzxicj4KJmd0OyAmZ3Q7ICAJbGF0Y2hfbG9jayhsYXRjaCk7PGJyPgomZ3Q7ICZndDsgLQlp ZiAodmNsb2NrX2dldCgmYW1wO3JlcGxpY2FzZXQuYXBwbGllci52Y2xvY2ssPGJyPgomZ3Q7ICZn dDsgLQkJICAgICAgIGZpcnN0X3Jvdy0mZ3Q7cmVwbGljYV9pZCkgJmd0Oz0gZmlyc3Rfcm93LSZn dDtsc24pIHs8YnI+CiZndDsgJmd0OyArCS8qPGJyPgomZ3Q7ICZndDsgKwkgKiBXZSBjYW5ub3Qg dGVsbCB3aGljaCB2Y2xvY2sgaXMgZ3JlYXRlci4gVGhlcmUgaXMgbm88YnI+CiZndDsgJmd0OyAr CSAqIHByb3BlciBwbGFjZSB0byBpbml0aWFsaXplIGFwcGxpZXIgdmNsb2NrLCBzaW5jZSBpdDxi cj4KJmd0OyAmZ3Q7ICsJICogbWF5IGdldCBzdGFsZSByaWdodCBhd2F5IGlmIHdlIHdyaXRlIHNv bWV0aGluZyB0byBXQUw8YnI+CiZndDsgJmd0OyArCSAqIGFuZCBpdCBnZXRzIHJlcGxpY2F0ZWQg YW5kIHRoZW4gYXJyaXZlcyBiYWNrIGZyb20gdGhlPGJyPgomZ3Q7ICZndDsgKwkgKiByZXBsaWNh LiBTbyBjaGVjayBhZ2FpbnN0IGJvdGggdmNsb2Nrcy4gUmVwbGljYXNldDxicj4KJmd0OyAmZ3Q7 ICsJICogdmNsb2NrIHdpbGwgZ3VhcmQgdXMgZnJvbSBjb3JuZXIgY2FzZXMgbGlrZSB0aGUgb25l PGJyPgomZ3Q7ICZndDsgKwkgKiBhYm92ZS48YnI+CiZndDsgJmd0OyArCSAqLzxicj4KJmd0OyAm Z3Q7ICsJaWYgKE1BWCh2Y2xvY2tfZ2V0KCZhbXA7cmVwbGljYXNldC5hcHBsaWVyLnZjbG9jaywg Zmlyc3Rfcm93LSZndDtyZXBsaWNhX2lkKSw8YnI+CiZndDsgJmd0OyArCQl2Y2xvY2tfZ2V0KCZh bXA7cmVwbGljYXNldC52Y2xvY2ssIGZpcnN0X3Jvdy0mZ3Q7cmVwbGljYV9pZCkpICZndDs9PGJy PgomZ3Q7ICZndDsgKwkgICAgZmlyc3Rfcm93LSZndDtsc24pIHs8YnI+CiZndDsgJmd0OyAgCQls YXRjaF91bmxvY2sobGF0Y2gpOzxicj4KJmd0OyAmZ3Q7ICAJCXJldHVybiAwOzxicj4KJmd0OyAm Z3Q7ICAJfTxicj4KJmd0OyAmZ3Q7IGRpZmYgLS1naXQgYS9zcmMvYm94L3JlcGxpY2F0aW9uLmNj IGIvc3JjL2JveC9yZXBsaWNhdGlvbi5jYzxicj4KJmd0OyAmZ3Q7IGluZGV4IGU3YmZhMjJhYi4u N2IwNDU3M2E0IDEwMDY0NDxicj4KJmd0OyAmZ3Q7IC0tLSBhL3NyYy9ib3gvcmVwbGljYXRpb24u Y2M8YnI+CiZndDsgJmd0OyArKysgYi9zcmMvYm94L3JlcGxpY2F0aW9uLmNjPGJyPgomZ3Q7ICZn dDsgQEAgLTkzLDcgKzkzLDYgQEAgcmVwbGljYXRpb25faW5pdCh2b2lkKTxicj4KJmd0OyAmZ3Q7 ICAJbGF0Y2hfY3JlYXRlKCZhbXA7cmVwbGljYXNldC5hcHBsaWVyLm9yZGVyX2xhdGNoKTs8YnI+ CiZndDsgJmd0OyAgPGJyPgomZ3Q7ICZndDsgIAl2Y2xvY2tfY3JlYXRlKCZhbXA7cmVwbGljYXNl dC5hcHBsaWVyLnZjbG9jayk7PGJyPgomZ3Q7ICZndDsgLQl2Y2xvY2tfY29weSgmYW1wO3JlcGxp Y2FzZXQuYXBwbGllci52Y2xvY2ssICZhbXA7cmVwbGljYXNldC52Y2xvY2spOzxicj4KJmd0OyAm Z3Q7ICAJcmxpc3RfY3JlYXRlKCZhbXA7cmVwbGljYXNldC5hcHBsaWVyLm9uX3JvbGxiYWNrKTs8 YnI+CiZndDsgJmd0OyAgCXJsaXN0X2NyZWF0ZSgmYW1wO3JlcGxpY2FzZXQuYXBwbGllci5vbl9j b21taXQpOzxicj4KJmd0OyAmZ3Q7ICA8YnI+CiZndDsgJmd0OyAtLSA8YnI+CiZndDsgJmd0OyAy LjIwLjEgKEFwcGxlIEdpdC0xMTcpPGJyPgomZ3Q7IDxicj4KJmd0OyAtLSA8YnI+CiZndDsgS29u c3RhbnRpbiBPc2lwb3YsIE1vc2NvdywgUnVzc2lhPGJyPjwvZGl2Pjxicj4KLS0gPGJyPgpLb25z dGFudGluIE9zaXBvdiwgTW9zY293LCBSdXNzaWE8YnI+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+ PC9ibG9ja3F1b3RlPgo8YnI+Cjxicj4tLSA8YnI+U2VyZ2V5IFBldHJlbmtvPGJyPjwvQk9EWT48 L0hUTUw+Cg== ----ALT--7CnTWH2OvCXYlIvLJYvuzRtOvbPLKfo61581631439--