From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail.irisgmbh.de (mail.irisgmbh.de [81.169.172.79]) by mx.groups.io with SMTP id smtpd.web08.9081.1623857192519965838 for ; Wed, 16 Jun 2021 08:26:33 -0700 Authentication-Results: mx.groups.io; dkim=missing; spf=none, err=SPF record not found (domain: iris-sensing.com, ip: 81.169.172.79, mailfrom: jasper.orschulko@iris-sensing.com) Received: from localhost (localhost [127.0.0.1]) by mail.irisgmbh.de (Postfix) with ESMTP id 9FA2E31E032E; Wed, 16 Jun 2021 17:26:30 +0200 (CEST) X-Virus-Scanned: amavisd-new at irisgmbh.de Received: from mail.irisgmbh.de ([127.0.0.1]) by localhost (s15324379.rootmaster.info [127.0.0.1]) (amavisd-new, port 10027) with ESMTP; Wed, 16 Jun 2021 17:26:30 +0200 (CEST) Received: from ERDE.irisgmbh.local (unknown [213.61.209.158]) by mail.irisgmbh.de (Postfix) with ESMTPS id 7524631E02E8; Wed, 16 Jun 2021 17:26:30 +0200 (CEST) Received: from ERDE.irisgmbh.local ([172.30.10.11]) by ERDE.irisgmbh.local ([172.30.10.11]) with mapi id 14.03.0513.000; Wed, 16 Jun 2021 17:26:29 +0200 From: "Jasper Orschulko" To: "steve@sakoman.com" CC: "openembedded-core@lists.openembedded.org" Subject: Re: [OE-core][dunfell][PATCH] expat: fix CVE-2013-0340 Thread-Topic: [OE-core][dunfell][PATCH] expat: fix CVE-2013-0340 Thread-Index: AQHXYr4X6VpgCZmqTk+AGKWQhl9RtasWljoAgAAGFoCAAARqgA== Date: Wed, 16 Jun 2021 15:26:28 +0000 Message-ID: <7d201ea3e77f26f52a13a813113739b8d963d0cf.camel@iris-sensing.com> References: <168917379DAE252D.8130@lists.openembedded.org> <2c3d063872f3f664011cbbfbbe3679d52b49ff5d.camel@iris-sensing.com> In-Reply-To: Accept-Language: en-US, de-DE X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [172.30.10.1] MIME-Version: 1.0 Content-Language: de-DE Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 LS0tLS1CRUdJTiBQR1AgU0lHTkVEIE1FU1NBR0UtLS0tLQ0KSGFzaDogU0hBMjU2DQoNClAuUy46 IEkgd2FzIGxvb2tpbmcNCmF0wqBodHRwczovL3d3dy5vcGVuZW1iZWRkZWQub3JnL3dpa2kvQ29t bWl0X1BhdGNoX01lc3NhZ2VfR3VpZGVsaW5lcyNFeGFtcGxlOl9DVkVfcGF0Y2hfaGVhZGVyDQph bmQgdGhpcyBwYWdlIGFzIGZhciBhcyBJIGNhbiB0ZWxsIG9ubHkgbWVudGlvbnMgdGhlIHBhdGNo IGhlYWRlcg0KY29udmVudGlvbiwgbm90IHRoZSBmaWxlIG5hbWUgaXRzZWxmLiBNYXliZSB0aGlz IG5lZWRzIGFuIHVwZGF0ZT8gOikNCiANCi0gLS0gDQpXaXRoIGJlc3QgcmVnYXJkcw0KDQpKYXNw ZXIgT3JzY2h1bGtvDQpEZXZPcHMgRW5naW5lZXINCg0KVGVsLiArNDkgMzAgNTggNTggMTQgMjY1 DQpGYXggKzQ5IDMwIDU4IDU4IDE0IDk5OQ0KSmFzcGVyLk9yc2NodWxrb0BpcmlzLXNlbnNpbmcu Y29tDQoNCuKAoiDigKIg4oCiIOKAoiDigKIg4oCiIOKAoiDigKIg4oCiIOKAoiDigKIg4oCiIOKA oiDigKIg4oCiIOKAoiDigKIg4oCiIOKAoiDigKIg4oCiIOKAoiDigKIg4oCiIOKAoiDigKINCg0K aXJpcy1HbWJIDQppbmZyYXJlZCAmIGludGVsbGlnZW50IHNlbnNvcnMNCk9zdGVuZHN0cmHDn2Ug MS0xNCB8IDEyNDU5IEJlcmxpbg0KDQpodHRwczovL2lyaXMtc2Vuc2luZy5jb20vDQoNCg0KDQoN Ck9uIFdlZCwgMjAyMS0wNi0xNiBhdCAwNTowOSAtMTAwMCwgU3RldmUgU2Frb21hbiB3cm90ZToN Cj4gT24gV2VkLCBKdW4gMTYsIDIwMjEgYXQgNDo0OSBBTSBKYXNwZXIgT3JzY2h1bGtvDQo+IDxK YXNwZXIuT3JzY2h1bGtvQGlyaXMtc2Vuc2luZy5jb20+IHdyb3RlOg0KPiA+IA0KPiA+IC0tLS0t QkVHSU4gUEdQIFNJR05FRCBNRVNTQUdFLS0tLS0NCj4gPiBIYXNoOiBTSEEyNTYNCj4gPiANCj4g PiBQLlMuOiBJIGFtIG5vdCB0b28gZmFtaWxpYXIgd2l0aCBleHBhdCwgdGhpcyBwYXJ0aWN1bGFy IENWRSwgbm90IHdpdGgNCj4gPiB0aGUgcHJhY3Rpc2Ugb2YgYmFja3BvcnRpbmcgc2VjdXJpdHkg cGF0Y2hlcywgc28gc29tZW9uZShUTSkgc2hvdWxkDQo+ID4gZGVmaW5pdGVseSB0YWtlIGEgY2xv c2VyIGxvb2sgYXQgdGhpcyBmaXJzdC4NCj4gDQo+IFdpbGwgZG8hDQo+IA0KPiBBIGZldyBpbml0 aWFsIGNvbW1lbnRzOg0KPiANCj4gMS4gUGxlYXNlIGRvbid0IFBHUCBzaWduIHBhdGNoIGVtYWls cyA6LSkNCj4gMi4gQ2hhbmdlIHRoZSBwYXRjaCBmaWxlIG5hbWUgdG8gQ1ZFLTIwMTMtMDM0MC5w YXRjaA0KPiANCj4gT3RoZXIgdGhhbiB0aGF0IGl0IGxvb2tzIE9LIGF0IGZpcnN0IGdsYW5jZS4N Cj4gDQo+IEZvciByZWZlcmVuY2UgdGhlIHBhdGNoIHJlcXVpcmVtZW50cyBmb3IgQ1ZFJ3MgYXJl IG91dGxpbmVkIGF0Og0KPiANCj4gaHR0cHM6Ly93aWtpLnlvY3RvcHJvamVjdC5vcmcvd2lraS9T ZWN1cml0eQ0KPiANCj4gaW4gdGhlICJQYXRjaCBuYW1lIGNvbnZlbnRpb24gYW5kIGNvbW1pdCBt ZXNzYWdlIiBzZWN0aW9uLg0KPiANCj4gVGhhbmtzIGZvciBoZWxwaW5nIHdpdGggQ1ZFcyENCj4g DQo+IFN0ZXZlDQo+IA0KPiANCj4gDQo+IA0KPiA+IFdpdGggYmVzdCByZWdhcmRzDQo+ID4gDQo+ ID4gSmFzcGVyIE9yc2NodWxrbw0KPiA+IERldk9wcyBFbmdpbmVlcg0KPiA+IA0KPiA+IFRlbC4g KzQ5IDMwIDU4IDU4IDE0IDI2NQ0KPiA+IEZheCArNDkgMzAgNTggNTggMTQgOTk5DQo+ID4gSmFz cGVyLk9yc2NodWxrb0BpcmlzLXNlbnNpbmcuY29tDQo+ID4gDQo+ID4g4oCiIOKAoiDigKIg4oCi IOKAoiDigKIg4oCiIOKAoiDigKIg4oCiIOKAoiDigKIg4oCiIOKAoiDigKIg4oCiIOKAoiDigKIg 4oCiIOKAoiDigKIg4oCiIOKAoiDigKIg4oCiIOKAog0KPiA+IA0KPiA+IGlyaXMtR21iSA0KPiA+ IGluZnJhcmVkICYgaW50ZWxsaWdlbnQgc2Vuc29ycw0KPiA+IE9zdGVuZHN0cmHDn2UgMS0xNCB8 IDEyNDU5IEJlcmxpbg0KPiA+IA0KPiA+IGh0dHBzOi8vaXJpcy1zZW5zaW5nLmNvbS8NCj4gPiAN Cj4gPiANCj4gPiANCj4gPiANCj4gPiBPbiBXZWQsIDIwMjEtMDYtMTYgYXQgMTQ6NDQgKzAwMDAs IEphc3BlciBPcnNjaHVsa28gd3JvdGU6DQo+ID4gPiBleHBhdCA8IDQuMCBpcyB2dWxuZXJhYmxl IHRvIGJpbGxpb24gbGF1Z2hzIGF0dGFja3MgKHNlZQ0KPiA+ID4gW2h0dHBzOi8vZ2l0aHViLmNv bS9saWJleHBhdC9saWJleHBhdC9pc3N1ZXMvMzRdKS4gVGhpcyBwYXRjaA0KPiA+ID4gYmFja3Bv cnRzDQo+ID4gPiB0aGUgY29tbWl0cyBiMWQwMzk2MDdkM2Q4YTA0MmJmMDQ2NmJmY2MxYzBmMTA0 ZTM1M2M4DQo+ID4gPiBhbmQgNjA5NTlmMmI0OTE4NzYxOTk4NzlkOTdjOGVkOTU2ZWFiYjBjMmU3 MyBmcm9tIHVwc3RyZWFtLg0KPiA+ID4gDQo+ID4gPiBBZGRpdGlvbmFsbHksIHRoZSBTUkNfVVJJ IGhhZCB0byBiZSBhZGp1c3RlZCBkdWUgdG8gcmVuYW1pbmcgb2YgdGhlDQo+ID4gPiBzb3VyY2Ug YXJjaGl2ZQ0KPiA+ID4gDQo+ID4gPiBTaWduZWQtb2ZmLWJ5OiBKYXNwZXIgT3JzY2h1bGtvIDxK YXNwZXIuT3JzY2h1bGtvQGlyaXMtc2Vuc2luZy5jb20+DQo+ID4gPiAtLS0NCj4gPiA+IMKgLi4u ZXhwYXQtQmFja3BvcnQtZml4LWZvci1DVkUtMjAxMy0wMzQwLnBhdGNoIHwgMTc1OA0KPiA+ID4g KysrKysrKysrKysrKysrKysNCj4gPiA+IMKgbWV0YS9yZWNpcGVzLWNvcmUvZXhwYXQvZXhwYXRf Mi4yLjkuYmLCoMKgwqDCoMKgwqDCoCB8wqDCoMKgIDMgKy0NCj4gPiA+IMKgMiBmaWxlcyBjaGFu Z2VkLCAxNzYwIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkNCj4gPiA+IMKgY3JlYXRlIG1v ZGUgMTAwNjQ0IG1ldGEvcmVjaXBlcy1jb3JlL2V4cGF0L2V4cGF0LzAwMDEtZXhwYXQtDQo+ID4g PiBCYWNrcG9ydC0NCj4gPiA+IGZpeC1mb3ItQ1ZFLTIwMTMtMDM0MC5wYXRjaA0KPiA+ID4gDQo+ ID4gPiBkaWZmIC0tZ2l0IGEvbWV0YS9yZWNpcGVzLWNvcmUvZXhwYXQvZXhwYXQvMDAwMS1leHBh dC1CYWNrcG9ydC1maXgtDQo+ID4gPiBmb3ItDQo+ID4gPiBDVkUtMjAxMy0wMzQwLnBhdGNoIGIv bWV0YS9yZWNpcGVzLWNvcmUvZXhwYXQvZXhwYXQvMDAwMS1leHBhdC0NCj4gPiA+IEJhY2twb3J0 LWZpeC1mb3ItQ1ZFLTIwMTMtMDM0MC5wYXRjaA0KPiA+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQN Cj4gPiA+IGluZGV4IDAwMDAwMDAwMDAuLmIyY2EwNjZkOTYNCj4gPiA+IC0tLSAvZGV2L251bGwN Cj4gPiA+ICsrKyBiL21ldGEvcmVjaXBlcy1jb3JlL2V4cGF0L2V4cGF0LzAwMDEtZXhwYXQtQmFj a3BvcnQtZml4LWZvci0NCj4gPiA+IENWRS0NCj4gPiA+IDIwMTMtMDM0MC5wYXRjaA0KPiA+ID4g QEAgLTAsMCArMSwxNzU4IEBADQo+ID4gPiArRnJvbSA2ZjY4ZWIwNDM5ZjNjMTgwN2ExNDNmZjhj ODk3MmU3NGQ0MDRkOGYwIE1vbiBTZXAgMTcgMDA6MDA6MDANCj4gPiA+IDIwMDENCj4gPiA+ICtG cm9tOiBTZWJhc3RpYW4gUGlwcGluZyA8c2ViYXN0aWFuQHBpcHBpbmcub3JnPg0KPiA+ID4gK0Rh dGU6IE1vbiwgMTkgQXByIDIwMjEgMjE6NDI6NTEgKzAyMDANCj4gPiA+ICtTdWJqZWN0OiBbUEFU Q0hdIGV4cGF0OiBCYWNrcG9ydCBmaXggZm9yIENWRS0yMDEzLTAzNDANCj4gPiA+ICsNCj4gPiA+ ICtJc3N1ZTogaHR0cHM6Ly9naXRodWIuY29tL2xpYmV4cGF0L2xpYmV4cGF0L2lzc3Vlcy8zNA0K PiA+ID4gKw0KPiA+ID4gK1RoaXMgcGF0Y2ggY2hlcnJ5LXBpY2tzIHRoZSBmb2xsb3dpbmcgY29t bWl0cyBmcm9tIHVwc3RyZWFtDQo+ID4gPiByZWxlYXNlDQo+ID4gPiArMi40LjAgb250byAyLjIu OToNCj4gPiA+ICsNCj4gPiA+ICstIGIxZDAzOTYwN2QzZDhhMDQyYmYwNDY2YmZjYzFjMGYxMDRl MzUzYzgNCj4gPiA+ICstIDYwOTU5ZjJiNDkxODc2MTk5ODc5ZDk3YzhlZDk1NmVhYmIwYzJlNzMN Cj4gPiA+ICsNCj4gPiA+ICtVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0DQo+ID4gPiArQ1ZFOiBD VkUtMjAxMy0wMzQwDQo+ID4gPiArU2lnbmVkLW9mZi1ieTogSmFzcGVyIE9yc2NodWxrbw0KPiA+ ID4gPEphc3Blci5PcnNjaHVsa29AaXJpcy1zZW5zaW5nLmNvbT4NCj4gPiA+ICstLS0NCj4gPiA+ ICsgZXhwYXQvbGliL2V4cGF0LmjCoMKgwqDCoMKgwqAgfMKgwqAgMjEgKy0NCj4gPiA+ICsgZXhw YXQvbGliL2ludGVybmFsLmjCoMKgwqAgfMKgwqAgMzAgKw0KPiA+ID4gKyBleHBhdC9saWIvbGli ZXhwYXQuZGVmwqAgfMKgwqDCoCAzICsNCj4gPiA+ICsgZXhwYXQvbGliL2xpYmV4cGF0dy5kZWYg fMKgwqDCoCAzICsNCj4gPiA+ICsgZXhwYXQvbGliL3htbHBhcnNlLmPCoMKgwqAgfCAxMTQ3DQo+ ID4gPiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQ0KPiA+ID4gLQ0KPiA+ ID4gKyA1IGZpbGVzIGNoYW5nZWQsIDExNDMgaW5zZXJ0aW9ucygrKSwgNjEgZGVsZXRpb25zKC0p DQo+ID4gPiArDQo+ID4gPiArZGlmZiAtLWdpdCBhL2V4cGF0L2xpYi9leHBhdC5oIGIvZXhwYXQv bGliL2V4cGF0LmgNCj4gPiA+ICtpbmRleCA0OGE2ZTJhMy4uNzk2MDg2YzIgMTAwNjQ0DQo+ID4g PiArLS0tIGEvZXhwYXQvbGliL2V4cGF0LmgNCj4gPiA+ICsrKysgYi9leHBhdC9saWIvZXhwYXQu aA0KPiA+ID4gK0BAIC0xMTUsNyArMTE1LDkgQEAgZW51bSBYTUxfRXJyb3Igew0KPiA+ID4gK8Kg wqAgWE1MX0VSUk9SX1JFU0VSVkVEX1BSRUZJWF9YTUxOUywNCj4gPiA+ICvCoMKgIFhNTF9FUlJP Ul9SRVNFUlZFRF9OQU1FU1BBQ0VfVVJJLA0KPiA+ID4gK8KgwqAgLyogQWRkZWQgaW4gMi4yLjEu ICovDQo+ID4gPiArLcKgIFhNTF9FUlJPUl9JTlZBTElEX0FSR1VNRU5UDQo+ID4gPiArK8KgIFhN TF9FUlJPUl9JTlZBTElEX0FSR1VNRU5ULA0KPiA+ID4gKyvCoCAvKiBCYWNrcG9ydGVkIGZyb20g Mi40LjAuICovDQo+ID4gPiArK8KgIFhNTF9FUlJPUl9BTVBMSUZJQ0FUSU9OX0xJTUlUX0JSRUFD SA0KPiA+ID4gKyB9Ow0KPiA+ID4gKw0KPiA+ID4gKyBlbnVtIFhNTF9Db250ZW50X1R5cGUgew0K PiA+ID4gK0BAIC05OTcsNyArOTk5LDEwIEBAIGVudW0gWE1MX0ZlYXR1cmVFbnVtIHsNCj4gPiA+ ICvCoMKgIFhNTF9GRUFUVVJFX1NJWkVPRl9YTUxfTENIQVIsDQo+ID4gPiArwqDCoCBYTUxfRkVB VFVSRV9OUywNCj4gPiA+ICvCoMKgIFhNTF9GRUFUVVJFX0xBUkdFX1NJWkUsDQo+ID4gPiArLcKg IFhNTF9GRUFUVVJFX0FUVFJfSU5GTw0KPiA+ID4gKyvCoCBYTUxfRkVBVFVSRV9BVFRSX0lORk8s DQo+ID4gPiArK8KgIC8qIEFkZGVkIGluIEV4cGF0IDIuNC4wLiAqLw0KPiA+ID4gKysNCj4gPiA+ IFhNTF9GRUFUVVJFX0JJTExJT05fTEFVR0hTX0FUVEFDS19QUk9URUNUSU9OX01BWElNVU1fQU1Q TElGSUNBVElPTl8NCj4gPiA+IERFDQo+ID4gPiBGQQ0KPiA+ID4gVUxULA0KPiA+ID4gKysNCj4g PiA+IFhNTF9GRUFUVVJFX0JJTExJT05fTEFVR0hTX0FUVEFDS19QUk9URUNUSU9OX0FDVElWQVRJ T05fVEhSRVNIT0xEX0QNCj4gPiA+IEVGDQo+ID4gPiBBVQ0KPiA+ID4gTFQNCj4gPiA+ICvCoMKg IC8qIEFkZGl0aW9uYWwgZmVhdHVyZXMgbXVzdCBiZSBhZGRlZCB0byB0aGUgZW5kIG9mIHRoaXMg ZW51bS4NCj4gPiA+ICovDQo+ID4gPiArIH07DQo+ID4gPiArDQo+ID4gPiArQEAgLTEwMTAsNiAr MTAxNSwxOCBAQCB0eXBlZGVmIHN0cnVjdCB7DQo+ID4gPiArIFhNTFBBUlNFQVBJKGNvbnN0IFhN TF9GZWF0dXJlICopDQo+ID4gPiArIFhNTF9HZXRGZWF0dXJlTGlzdCh2b2lkKTsNCj4gPiA+ICsN Cj4gPiA+ICsrI2lmZGVmIFhNTF9EVEQNCj4gPiA+ICsrLyogQmFja3BvcnRlZCBmcm9tIEV4cGF0 IDIuNC4wLiAqLw0KPiA+ID4gKytYTUxQQVJTRUFQSShYTUxfQm9vbCkNCj4gPiA+ICsrWE1MX1Nl dEJpbGxpb25MYXVnaHNBdHRhY2tQcm90ZWN0aW9uTWF4aW11bUFtcGxpZmljYXRpb24oDQo+ID4g PiArK8KgwqDCoCBYTUxfUGFyc2VyIHBhcnNlciwgZmxvYXQgbWF4aW11bUFtcGxpZmljYXRpb25G YWN0b3IpOw0KPiA+ID4gKysNCj4gPiA+ICsrLyogQmFja3BvcnRlZCBmcm9tIEV4cGF0IDIuNC4w LiAqLw0KPiA+ID4gKytYTUxQQVJTRUFQSShYTUxfQm9vbCkNCj4gPiA+ICsrWE1MX1NldEJpbGxp b25MYXVnaHNBdHRhY2tQcm90ZWN0aW9uQWN0aXZhdGlvblRocmVzaG9sZCgNCj4gPiA+ICsrwqDC oMKgIFhNTF9QYXJzZXIgcGFyc2VyLCB1bnNpZ25lZCBsb25nIGxvbmcNCj4gPiA+IGFjdGl2YXRp b25UaHJlc2hvbGRCeXRlcyk7DQo+ID4gPiArKyNlbmRpZg0KPiA+ID4gKysNCj4gPiA+ICsgLyog RXhwYXQgZm9sbG93cyB0aGUgc2VtYW50aWMgdmVyc2lvbmluZyBjb252ZW50aW9uLg0KPiA+ID4g K8KgwqDCoCBTZWUgaHR0cDovL3NlbXZlci5vcmcuDQo+ID4gPiArICovDQo+ID4gPiArZGlmZiAt LWdpdCBhL2V4cGF0L2xpYi9pbnRlcm5hbC5oIGIvZXhwYXQvbGliL2ludGVybmFsLmgNCj4gPiA+ ICtpbmRleCA2MDkxM2RhYi4uZDhiMzFmYTIgMTAwNjQ0DQo+ID4gPiArLS0tIGEvZXhwYXQvbGli L2ludGVybmFsLmgNCj4gPiA+ICsrKysgYi9leHBhdC9saWIvaW50ZXJuYWwuaA0KPiA+ID4gK0BA IC0xMDEsMTAgKzEwMSw0MCBAQA0KPiA+ID4gKyAjwqAgZW5kaWYNCj4gPiA+ICsgI2VuZGlmDQo+ ID4gPiArDQo+ID4gPiArKyNpbmNsdWRlIDxsaW1pdHMuaD4gLy8gVUxPTkdfTUFYDQo+ID4gPiAr Kw0KPiA+ID4gKysjaWYgZGVmaW5lZChfV0lOMzIpICYmICEgZGVmaW5lZChfX1VTRV9NSU5HV19B TlNJX1NURElPKQ0KPiA+ID4gKysjwqAgZGVmaW5lIEVYUEFUX0ZNVF9VTEwobWlkcGFydCkgIiUi IG1pZHBhcnQgIkk2NHUiDQo+ID4gPiArKyPCoCBpZiBkZWZpbmVkKF9XSU42NCkgLy8gTm90ZTog bW9kaWZpZXIgInRkIiBkb2VzIG5vdCB3b3JrIGZvcg0KPiA+ID4gTWluR1cNCj4gPiA+ICsrI8Kg wqDCoCBkZWZpbmUgRVhQQVRfRk1UX1BUUkRJRkZfVChtaWRwYXJ0KSAiJSIgbWlkcGFydCAiSTY0 ZCINCj4gPiA+ICsrI8KgIGVsc2UNCj4gPiA+ICsrI8KgwqDCoCBkZWZpbmUgRVhQQVRfRk1UX1BU UkRJRkZfVChtaWRwYXJ0KSAiJSIgbWlkcGFydCAiZCINCj4gPiA+ICsrI8KgIGVuZGlmDQo+ID4g PiArKyNlbHNlDQo+ID4gPiArKyPCoCBkZWZpbmUgRVhQQVRfRk1UX1VMTChtaWRwYXJ0KSAiJSIg bWlkcGFydCAibGx1Ig0KPiA+ID4gKysjwqAgaWYgISBkZWZpbmVkKFVMT05HX01BWCkNCj4gPiA+ ICsrI8KgwqDCoCBlcnJvciBDb21waWxlciBkaWQgbm90IGRlZmluZSBVTE9OR19NQVggZm9yIHVz DQo+ID4gPiArKyPCoCBlbGlmIFVMT05HX01BWCA9PSAxODQ0Njc0NDA3MzcwOTU1MTYxNXUgLy8g Ml42NC0xDQo+ID4gPiArKyPCoMKgwqAgZGVmaW5lIEVYUEFUX0ZNVF9QVFJESUZGX1QobWlkcGFy dCkgIiUiIG1pZHBhcnQgImxkIg0KPiA+ID4gKysjwqAgZWxzZQ0KPiA+ID4gKysjwqDCoMKgIGRl ZmluZSBFWFBBVF9GTVRfUFRSRElGRl9UKG1pZHBhcnQpICIlIiBtaWRwYXJ0ICJkIg0KPiA+ID4g KysjwqAgZW5kaWYNCj4gPiA+ICsrI2VuZGlmDQo+ID4gPiArKw0KPiA+ID4gKyAjaWZuZGVmIFVO VVNFRF9QDQo+ID4gPiArICPCoCBkZWZpbmUgVU5VU0VEX1AocCkgKHZvaWQpcA0KPiA+ID4gKyAj ZW5kaWYNCj4gPiA+ICsNCj4gPiA+ICsrLyogTk9URSBCRUdJTiBJZiB5b3UgZXZlciBwYXRjaCB0 aGVzZSBkZWZhdWx0cyB0byBncmVhdGVyIHZhbHVlcw0KPiA+ID4gKyvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBmb3Igbm9uLWF0dGFjayBYTUwgcGF5bG9hZCBpbiB5b3VyIGVudmlyb25tZW50 LA0KPiA+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwbGVhc2UgZmlsZSBhIGJ1ZyBy ZXBvcnQgd2l0aCBsaWJleHBhdC7CoCBUaGFuayB5b3UhDQo+ID4gPiArKyovDQo+ID4gPiArKyNk ZWZpbmUNCj4gPiA+IFwNCj4gPiA+ICsrwqAgMTAwLjBmDQo+ID4gPiArKyNkZWZpbmUNCj4gPiA+ IFwNCj4gPiA+ICsrwqAgODM4ODYwOCAvLyA4IE1pQiwgMl4yMw0KPiA+ID4gKysvKiBOT1RFIEVO RCAqLw0KPiA+ID4gKysNCj4gPiA+ICsgI2lmZGVmIF9fY3BsdXNwbHVzDQo+ID4gPiArIGV4dGVy biAiQyIgew0KPiA+ID4gKyAjZW5kaWYNCj4gPiA+ICtkaWZmIC0tZ2l0IGEvZXhwYXQvbGliL2xp YmV4cGF0LmRlZiBiL2V4cGF0L2xpYi9saWJleHBhdC5kZWYNCj4gPiA+ICtpbmRleCAxNmZhZjU5 NS4uYjVlNTlkOGQgMTAwNjQ0DQo+ID4gPiArLS0tIGEvZXhwYXQvbGliL2xpYmV4cGF0LmRlZg0K PiA+ID4gKysrKyBiL2V4cGF0L2xpYi9saWJleHBhdC5kZWYNCj4gPiA+ICtAQCAtNzYsMyArNzYs NiBAQCBFWFBPUlRTDQo+ID4gPiArwqDCoCBYTUxfU2V0SGFzaFNhbHQgQDY3DQo+ID4gPiArIDsg YWRkZWQgd2l0aCB2ZXJzaW9uIDIuMi41DQo+ID4gPiArwqDCoCBfSU5URVJOQUxfdHJpbV90b19j b21wbGV0ZV91dGY4X2NoYXJhY3RlcnMgQDY4DQo+ID4gPiArKzsgYmFja3BvcnRlZCBmcm9tIHZl cnNpb24gMi40LjANCj4gPiA+ICsrwqAgWE1MX1NldEJpbGxpb25MYXVnaHNBdHRhY2tQcm90ZWN0 aW9uQWN0aXZhdGlvblRocmVzaG9sZCBANjkNCj4gPiA+ICsrwqAgWE1MX1NldEJpbGxpb25MYXVn aHNBdHRhY2tQcm90ZWN0aW9uTWF4aW11bUFtcGxpZmljYXRpb24gQDcwDQo+ID4gPiArZGlmZiAt LWdpdCBhL2V4cGF0L2xpYi9saWJleHBhdHcuZGVmIGIvZXhwYXQvbGliL2xpYmV4cGF0dy5kZWYN Cj4gPiA+ICtpbmRleCAxNmZhZjU5NS4uZWJkNzc3MDcgMTAwNjQ0DQo+ID4gPiArLS0tIGEvZXhw YXQvbGliL2xpYmV4cGF0dy5kZWYNCj4gPiA+ICsrKysgYi9leHBhdC9saWIvbGliZXhwYXR3LmRl Zg0KPiA+ID4gK0BAIC03NiwzICs3Niw2IEBAIEVYUE9SVFMNCj4gPiA+ICvCoMKgIFhNTF9TZXRI YXNoU2FsdCBANjcNCj4gPiA+ICsgOyBhZGRlZCB3aXRoIHZlcnNpb24gMi4yLjUNCj4gPiA+ICvC oMKgIF9JTlRFUk5BTF90cmltX3RvX2NvbXBsZXRlX3V0ZjhfY2hhcmFjdGVycyBANjgNCj4gPiA+ ICsrOyBiYWNrcG9ydGVkIGZyb20gdmVyc2lvbiAyLjQuMA0KPiA+ID4gKyvCoCBYTUxfU2V0Qmls bGlvbkxhdWdoc0F0dGFja1Byb3RlY3Rpb25BY3RpdmF0aW9uVGhyZXNob2xkIEA2OQ0KPiA+ID4g KyvCoCBYTUxfU2V0QmlsbGlvbkxhdWdoc0F0dGFja1Byb3RlY3Rpb25NYXhpbXVtQW1wbGlmaWNh dGlvbiBANw0KPiA+ID4gK2RpZmYgLS1naXQgYS9leHBhdC9saWIveG1scGFyc2UuYyBiL2V4cGF0 L2xpYi94bWxwYXJzZS5jDQo+ID4gPiAraW5kZXggM2FhZjM1YjkuLmZkY2M3Mjk2IDEwMDY0NA0K PiA+ID4gKy0tLSBhL2V4cGF0L2xpYi94bWxwYXJzZS5jDQo+ID4gPiArKysrIGIvZXhwYXQvbGli L3htbHBhcnNlLmMNCj4gPiA+ICtAQCAtNDcsNiArNDcsOCBAQA0KPiA+ID4gKyAjaW5jbHVkZSA8 bGltaXRzLmg+IC8qIFVJTlRfTUFYICovDQo+ID4gPiArICNpbmNsdWRlIDxzdGRpby5oPsKgIC8q IGZwcmludGYgKi8NCj4gPiA+ICsgI2luY2x1ZGUgPHN0ZGxpYi5oPiAvKiBnZXRlbnYsIHJhbmRf cyAqLw0KPiA+ID4gKysjaW5jbHVkZSA8c3RkaW50Lmg+IC8qIHVpbnRwdHJfdCAqLw0KPiA+ID4g KysjaW5jbHVkZSA8bWF0aC5oPsKgwqAgLyogaXNuYW4gKi8NCj4gPiA+ICsNCj4gPiA+ICsgI2lm ZGVmIF9XSU4zMg0KPiA+ID4gKyAjwqAgZGVmaW5lIGdldHBpZCBHZXRDdXJyZW50UHJvY2Vzc0lk DQo+ID4gPiArQEAgLTM3Myw2ICszNzUsMzEgQEAgdHlwZWRlZiBzdHJ1Y3Qgb3Blbl9pbnRlcm5h bF9lbnRpdHkgew0KPiA+ID4gK8KgwqAgWE1MX0Jvb2wgYmV0d2VlbkRlY2w7IC8qIFdGQzogUEUg QmV0d2VlbiBEZWNsYXJhdGlvbnMgKi8NCj4gPiA+ICsgfSBPUEVOX0lOVEVSTkFMX0VOVElUWTsN Cj4gPiA+ICsNCj4gPiA+ICsrZW51bSBYTUxfQWNjb3VudCB7DQo+ID4gPiArK8KgIFhNTF9BQ0NP VU5UX0RJUkVDVCzCoMKgwqDCoMKgwqDCoMKgwqDCoCAvKiBieXRlcyBkaXJlY3RseSBwYXNzZWQg dG8gdGhlDQo+ID4gPiBFeHBhdA0KPiA+ID4gcGFyc2VyICovDQo+ID4gPiArK8KgIFhNTF9BQ0NP VU5UX0VOVElUWV9FWFBBTlNJT04sIC8qIGludGVybWVkaWF0ZSBieXRlcyBwcm9kdWNlZA0KPiA+ ID4gZHVyaW5nDQo+ID4gPiBlbnRpdHkNCj4gPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZXhwYW5zaW9uICov DQo+ID4gPiArK8KgIFhNTF9BQ0NPVU5UX05PTkXCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAv KiBpLmUuIGRvIG5vdCBhY2NvdW50LCB3YXMNCj4gPiA+IGFjY291bnRlZA0KPiA+ID4gYWxyZWFk eSAqLw0KPiA+ID4gKyt9Ow0KPiA+ID4gKysNCj4gPiA+ICsrI2lmZGVmIFhNTF9EVEQNCj4gPiA+ ICsrdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgWG1sQmlnQ291bnQ7DQo+ID4gPiArK3R5cGVk ZWYgc3RydWN0IGFjY291bnRpbmcgew0KPiA+ID4gKyvCoCBYbWxCaWdDb3VudCBjb3VudEJ5dGVz RGlyZWN0Ow0KPiA+ID4gKyvCoCBYbWxCaWdDb3VudCBjb3VudEJ5dGVzSW5kaXJlY3Q7DQo+ID4g PiArK8KgIGludCBkZWJ1Z0xldmVsOw0KPiA+ID4gKyvCoCBmbG9hdCBtYXhpbXVtQW1wbGlmaWNh dGlvbkZhY3RvcjsgLy8gPj0xLjANCj4gPiA+ICsrwqAgdW5zaWduZWQgbG9uZyBsb25nIGFjdGl2 YXRpb25UaHJlc2hvbGRCeXRlczsNCj4gPiA+ICsrfSBBQ0NPVU5USU5HOw0KPiA+ID4gKysNCj4g PiA+ICsrdHlwZWRlZiBzdHJ1Y3QgZW50aXR5X3N0YXRzIHsNCj4gPiA+ICsrwqAgdW5zaWduZWQg aW50IGNvdW50RXZlck9wZW5lZDsNCj4gPiA+ICsrwqAgdW5zaWduZWQgaW50IGN1cnJlbnREZXB0 aDsNCj4gPiA+ICsrwqAgdW5zaWduZWQgaW50IG1heGltdW1EZXB0aFNlZW47DQo+ID4gPiArK8Kg IGludCBkZWJ1Z0xldmVsOw0KPiA+ID4gKyt9IEVOVElUWV9TVEFUUzsNCj4gPiA+ICsrI2VuZGlm IC8qIFhNTF9EVEQgKi8NCj4gPiA+ICsrDQo+ID4gPiArIHR5cGVkZWYgZW51bSBYTUxfRXJyb3Ig UFRSQ0FMTCBQcm9jZXNzb3IoWE1MX1BhcnNlciBwYXJzZXIsIGNvbnN0DQo+ID4gPiBjaGFyICpz dGFydCwNCj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnN0IGNoYXIgKmVuZCwg Y29uc3QNCj4gPiA+IGNoYXINCj4gPiA+ICoqZW5kUHRyKTsNCj4gPiA+ICsNCj4gPiA+ICtAQCAt NDAzLDE2ICs0MzAsMTggQEAgc3RhdGljIGVudW0gWE1MX0Vycm9yDQo+ID4gPiBpbml0aWFsaXpl RW5jb2RpbmcoWE1MX1BhcnNlciBwYXJzZXIpOw0KPiA+ID4gKyBzdGF0aWMgZW51bSBYTUxfRXJy b3IgZG9Qcm9sb2coWE1MX1BhcnNlciBwYXJzZXIsIGNvbnN0IEVOQ09ESU5HDQo+ID4gPiAqZW5j LA0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGNvbnN0IGNoYXIgKnMsIGNvbnN0IGNoYXIgKmVuZCwNCj4gPiA+IGlu dA0KPiA+ID4gdG9rLA0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnN0IGNoYXIgKm5leHQsIGNvbnN0IGNoYXIN Cj4gPiA+ICoqbmV4dFB0ciwNCj4gPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFhNTF9Cb29sIGhhdmVNb3JlLCBYTUxfQm9v bA0KPiA+ID4gYWxsb3dDbG9zaW5nRG9jdHlwZSk7DQo+ID4gPiArK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBYTUxfQm9vbCBoYXZl TW9yZSwgWE1MX0Jvb2wNCj4gPiA+IGFsbG93Q2xvc2luZ0RvY3R5cGUsDQo+ID4gPiArK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBl bnVtIFhNTF9BY2NvdW50IGFjY291bnQpOw0KPiA+ID4gKyBzdGF0aWMgZW51bSBYTUxfRXJyb3Ig cHJvY2Vzc0ludGVybmFsRW50aXR5KFhNTF9QYXJzZXIgcGFyc2VyLA0KPiA+ID4gRU5USVRZDQo+ ID4gPiAqZW50aXR5LA0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgWE1M X0Jvb2wNCj4gPiA+IGJldHdlZW5EZWNsKTsNCj4gPiA+ICsgc3RhdGljIGVudW0gWE1MX0Vycm9y IGRvQ29udGVudChYTUxfUGFyc2VyIHBhcnNlciwgaW50DQo+ID4gPiBzdGFydFRhZ0xldmVsLA0K PiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgY29uc3QgRU5DT0RJTkcgKmVuYywgY29uc3QgY2hhcg0KPiA+ID4gKnN0 YXJ0LA0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgY29uc3QgY2hhciAqZW5kLCBjb25zdCBjaGFyDQo+ID4gPiAq KmVuZFB0ciwNCj4gPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgWE1MX0Jvb2wgaGF2ZU1vcmUpOw0KPiA+ID4gKyvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBYTUxfQm9vbCBoYXZlTW9yZSwgZW51bQ0KPiA+ID4gWE1MX0FjY291bnQNCj4gPiA+IGFjY291 bnQpOw0KPiA+ID4gKyBzdGF0aWMgZW51bSBYTUxfRXJyb3IgZG9DZGF0YVNlY3Rpb24oWE1MX1Bh cnNlciBwYXJzZXIsIGNvbnN0DQo+ID4gPiBFTkNPRElORyAqLA0KPiA+ID4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIGNvbnN0IGNoYXIgKipzdGFydFB0ciwgY29uc3QNCj4gPiA+IGNoYXIgKmVuZCwNCj4g PiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnN0IGNoYXIgKipuZXh0UHRyLA0KPiA+ID4gWE1MX0Jv b2wNCj4gPiA+IGhhdmVNb3JlKTsNCj4gPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnN0IGNoYXIg KipuZXh0UHRyLA0KPiA+ID4gWE1MX0Jvb2wNCj4gPiA+IGhhdmVNb3JlLA0KPiA+ID4gKyvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgZW51bSBYTUxfQWNjb3VudCBhY2NvdW50KTsNCj4gPiA+ICsgI2lmZGVmIFhN TF9EVEQNCj4gPiA+ICsgc3RhdGljIGVudW0gWE1MX0Vycm9yIGRvSWdub3JlU2VjdGlvbihYTUxf UGFyc2VyIHBhcnNlciwgY29uc3QNCj4gPiA+IEVOQ09ESU5HICosDQo+ID4gPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBjb25zdCBjaGFyICoqc3RhcnRQdHIsDQo+ID4gPiBjb25zdA0KPiA+ID4gY2hh ciAqZW5kLA0KPiA+ID4gK0BAIC00MjIsNyArNDUxLDggQEAgc3RhdGljIGVudW0gWE1MX0Vycm9y DQo+ID4gPiBkb0lnbm9yZVNlY3Rpb24oWE1MX1BhcnNlcg0KPiA+ID4gcGFyc2VyLCBjb25zdCBF TkNPRElORyAqLA0KPiA+ID4gKyBzdGF0aWMgdm9pZCBmcmVlQmluZGluZ3MoWE1MX1BhcnNlciBw YXJzZXIsIEJJTkRJTkcgKmJpbmRpbmdzKTsNCj4gPiA+ICsgc3RhdGljIGVudW0gWE1MX0Vycm9y IHN0b3JlQXR0cyhYTUxfUGFyc2VyIHBhcnNlciwgY29uc3QgRU5DT0RJTkcNCj4gPiA+ICosDQo+ ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBjb25zdCBjaGFyICpzLCBUQUdfTkFNRQ0KPiA+ID4gKnRhZ05hbWVQdHIs DQo+ID4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIEJJTkRJTkcgKipiaW5kaW5nc1B0cik7DQo+ID4gPiArK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEJJ TkRJTkcgKipiaW5kaW5nc1B0ciwNCj4gPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZW51bSBYTUxfQWNjb3VudCBhY2Nv dW50KTsNCj4gPiA+ICsgc3RhdGljIGVudW0gWE1MX0Vycm9yIGFkZEJpbmRpbmcoWE1MX1BhcnNl ciBwYXJzZXIsIFBSRUZJWA0KPiA+ID4gKnByZWZpeCwNCj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29uc3Qg QVRUUklCVVRFX0lEICphdHRJZCwgY29uc3QNCj4gPiA+IFhNTF9DaGFyICp1cmksDQo+ID4gPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIEJJTkRJTkcgKipiaW5kaW5nc1B0cik7DQo+ID4gPiArQEAgLTQzMSwxNSArNDYx LDE4IEBAIHN0YXRpYyBpbnQgZGVmaW5lQXR0cmlidXRlKEVMRU1FTlRfVFlQRQ0KPiA+ID4gKnR5 cGUsDQo+ID4gPiBBVFRSSUJVVEVfSUQgKiwgWE1MX0Jvb2wgaXNDZGF0YSwNCj4gPiA+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgWE1MX1Bh cnNlciBwYXJzZXIpOw0KPiA+ID4gKyBzdGF0aWMgZW51bSBYTUxfRXJyb3Igc3RvcmVBdHRyaWJ1 dGVWYWx1ZShYTUxfUGFyc2VyIHBhcnNlciwNCj4gPiA+IGNvbnN0DQo+ID4gPiBFTkNPRElORyAq LA0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBYTUxfQm9vbCBpc0NkYXRhLCBj b25zdA0KPiA+ID4gY2hhciAqLA0KPiA+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNv bnN0IGNoYXIgKiwNCj4gPiA+IFNUUklOR19QT09MDQo+ID4gPiAqKTsNCj4gPiA+ICsrwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBjb25zdCBjaGFyICosDQo+ID4gPiBTVFJJTkdfUE9PTA0KPiA+ ID4gKiwNCj4gPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBlbnVtIFhNTF9BY2NvdW50 DQo+ID4gPiBhY2NvdW50KTsNCj4gPiA+ICsgc3RhdGljIGVudW0gWE1MX0Vycm9yIGFwcGVuZEF0 dHJpYnV0ZVZhbHVlKFhNTF9QYXJzZXIgcGFyc2VyLA0KPiA+ID4gY29uc3QNCj4gPiA+IEVOQ09E SU5HICosDQo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgWE1MX0Jvb2wgaXND ZGF0YSwNCj4gPiA+IGNvbnN0DQo+ID4gPiBjaGFyICosDQo+ID4gPiArLcKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBjb25zdCBjaGFyICosDQo+ID4gPiBTVFJJTkdfUE9PTA0KPiA+ID4gKik7 DQo+ID4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb25zdCBjaGFyICosDQo+ID4g PiBTVFJJTkdfUE9PTA0KPiA+ID4gKiwNCj4gPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGVudW0gWE1MX0FjY291bnQNCj4gPiA+IGFjY291bnQpOw0KPiA+ID4gKyBzdGF0aWMgQVRU UklCVVRFX0lEICpnZXRBdHRyaWJ1dGVJZChYTUxfUGFyc2VyIHBhcnNlciwgY29uc3QNCj4gPiA+ IEVOQ09ESU5HDQo+ID4gPiAqZW5jLA0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb25zdCBjaGFy ICpzdGFydCwgY29uc3QgY2hhcg0KPiA+ID4gKmVuZCk7DQo+ID4gPiArIHN0YXRpYyBpbnQgc2V0 RWxlbWVudFR5cGVQcmVmaXgoWE1MX1BhcnNlciBwYXJzZXIsIEVMRU1FTlRfVFlQRQ0KPiA+ID4g Kik7DQo+ID4gPiArIHN0YXRpYyBlbnVtIFhNTF9FcnJvciBzdG9yZUVudGl0eVZhbHVlKFhNTF9Q YXJzZXIgcGFyc2VyLCBjb25zdA0KPiA+ID4gRU5DT0RJTkcgKmVuYywNCj4gPiA+ICstwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBjb25zdCBjaGFyICpzdGFydCwgY29uc3QNCj4gPiA+IGNoYXINCj4gPiA+ ICplbmQpOw0KPiA+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnN0IGNoYXIgKnN0YXJ0LCBj b25zdA0KPiA+ID4gY2hhcg0KPiA+ID4gKmVuZCwNCj4gPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBlbnVtIFhNTF9BY2NvdW50IGFjY291bnQpOw0KPiA+ID4gKyBzdGF0aWMgaW50IHJlcG9ydFBy b2Nlc3NpbmdJbnN0cnVjdGlvbihYTUxfUGFyc2VyIHBhcnNlciwgY29uc3QNCj4gPiA+IEVOQ09E SU5HICplbmMsDQo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnN0IGNoYXIgKnN0YXJ0 LCBjb25zdA0KPiA+ID4gY2hhcg0KPiA+ID4gKmVuZCk7DQo+ID4gPiArIHN0YXRpYyBpbnQgcmVw b3J0Q29tbWVudChYTUxfUGFyc2VyIHBhcnNlciwgY29uc3QgRU5DT0RJTkcgKmVuYywNCj4gPiA+ ICtAQCAtNTAzLDYgKzUzNiwzNSBAQCBzdGF0aWMgWE1MX1BhcnNlciBwYXJzZXJDcmVhdGUoY29u c3QgWE1MX0NoYXINCj4gPiA+ICplbmNvZGluZ05hbWUsDQo+ID4gPiArDQo+ID4gPiArIHN0YXRp YyB2b2lkIHBhcnNlckluaXQoWE1MX1BhcnNlciBwYXJzZXIsIGNvbnN0IFhNTF9DaGFyDQo+ID4g PiAqZW5jb2RpbmdOYW1lKTsNCj4gPiA+ICsNCj4gPiA+ICsrI2lmZGVmIFhNTF9EVEQNCj4gPiA+ ICsrc3RhdGljIGZsb2F0IGFjY291bnRpbmdHZXRDdXJyZW50QW1wbGlmaWNhdGlvbihYTUxfUGFy c2VyDQo+ID4gPiByb290UGFyc2VyKTsNCj4gPiA+ICsrc3RhdGljIHZvaWQgYWNjb3VudGluZ1Jl cG9ydFN0YXRzKFhNTF9QYXJzZXIgb3JpZ2luUGFyc2VyLCBjb25zdA0KPiA+ID4gY2hhcg0KPiA+ ID4gKmVwaWxvZyk7DQo+ID4gPiArK3N0YXRpYyB2b2lkIGFjY291bnRpbmdPbkFib3J0KFhNTF9Q YXJzZXIgb3JpZ2luUGFyc2VyKTsNCj4gPiA+ICsrc3RhdGljIHZvaWQgYWNjb3VudGluZ1JlcG9y dERpZmYoWE1MX1BhcnNlciByb290UGFyc2VyLA0KPiA+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHVuc2lnbmVkIGlu dA0KPiA+ID4gbGV2ZWxzQXdheUZyb21Sb290UGFyc2VyLA0KPiA+ID4gKyvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnN0 IGNoYXIgKmJlZm9yZSwgY29uc3QgY2hhcg0KPiA+ID4gKmFmdGVyLA0KPiA+ID4gKyvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHB0cmRpZmZfdCBieXRlc01vcmUsIGludA0KPiA+ID4gc291cmNlX2xpbmUsDQo+ID4gPiArK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgZW51bSBYTUxfQWNjb3VudCBhY2NvdW50KTsNCj4gPiA+ICsrc3RhdGljIFhNTF9Cb29s IGFjY291bnRpbmdEaWZmVG9sZXJhdGVkKFhNTF9QYXJzZXIgb3JpZ2luUGFyc2VyLA0KPiA+ID4g aW50DQo+ID4gPiB0b2ssDQo+ID4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb25zdCBjaGFy ICpiZWZvcmUsIGNvbnN0DQo+ID4gPiBjaGFyICphZnRlciwNCj4gPiA+ICsrwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGludCBzb3VyY2VfbGluZSwNCj4gPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGVudW0gWE1MX0FjY291bnQNCj4gPiA+IGFjY291bnQpOw0KPiA+ID4gKysNCj4gPiA+ICsrc3Rh dGljIHZvaWQgZW50aXR5VHJhY2tpbmdSZXBvcnRTdGF0cyhYTUxfUGFyc2VyIHBhcnNlciwgRU5U SVRZDQo+ID4gPiAqZW50aXR5LA0KPiA+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb25zdCBjaGFy ICphY3Rpb24sIGludA0KPiA+ID4gc291cmNlTGluZSk7DQo+ID4gPiArK3N0YXRpYyB2b2lkIGVu dGl0eVRyYWNraW5nT25PcGVuKFhNTF9QYXJzZXIgcGFyc2VyLCBFTlRJVFkNCj4gPiA+ICplbnRp dHksDQo+ID4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgaW50IHNvdXJjZUxpbmUpOw0KPiA+ID4gKytzdGF0aWMgdm9p ZCBlbnRpdHlUcmFja2luZ09uQ2xvc2UoWE1MX1BhcnNlciBwYXJzZXIsIEVOVElUWQ0KPiA+ID4g KmVudGl0eSwNCj4gPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGludCBzb3VyY2VMaW5lKTsNCj4gPiA+ICsrDQo+ ID4gPiArK3N0YXRpYyBYTUxfUGFyc2VyIGdldFJvb3RQYXJzZXJPZihYTUxfUGFyc2VyIHBhcnNl ciwNCj4gPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHVuc2lnbmVkIGludCAqb3V0TGV2ZWxEaWZmKTsNCj4gPiA+ ICsrc3RhdGljIGNvbnN0IGNoYXIgKnVuc2lnbmVkQ2hhclRvUHJpbnRhYmxlKHVuc2lnbmVkIGNo YXIgYyk7DQo+ID4gPiArKyNlbmRpZiAvKiBYTUxfRFREICovDQo+ID4gPiArKw0KPiA+ID4gKytz dGF0aWMgdW5zaWduZWQgbG9uZyBnZXREZWJ1Z0xldmVsKGNvbnN0IGNoYXIgKnZhcmlhYmxlTmFt ZSwNCj4gPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdW5zaWduZWQgbG9uZw0KPiA+ID4gZGVmYXVsdERlYnVn TGV2ZWwpOw0KPiA+ID4gKysNCj4gPiA+ICsgI2RlZmluZSBwb29sU3RhcnQocG9vbCkgKChwb29s KS0+c3RhcnQpDQo+ID4gPiArICNkZWZpbmUgcG9vbEVuZChwb29sKSAoKHBvb2wpLT5wdHIpDQo+ ID4gPiArICNkZWZpbmUgcG9vbExlbmd0aChwb29sKSAoKHBvb2wpLT5wdHIgLSAocG9vbCktPnN0 YXJ0KQ0KPiA+ID4gK0BAIC02MTYsNiArNjc4LDEwIEBAIHN0cnVjdCBYTUxfUGFyc2VyU3RydWN0 IHsNCj4gPiA+ICvCoMKgIGVudW0gWE1MX1BhcmFtRW50aXR5UGFyc2luZyBtX3BhcmFtRW50aXR5 UGFyc2luZzsNCj4gPiA+ICsgI2VuZGlmDQo+ID4gPiArwqDCoCB1bnNpZ25lZCBsb25nIG1faGFz aF9zZWNyZXRfc2FsdDsNCj4gPiA+ICsrI2lmZGVmIFhNTF9EVEQNCj4gPiA+ICsrwqAgQUNDT1VO VElORyBtX2FjY291bnRpbmc7DQo+ID4gPiArK8KgIEVOVElUWV9TVEFUUyBtX2VudGl0eV9zdGF0 czsNCj4gPiA+ICsrI2VuZGlmDQo+ID4gPiArIH07DQo+ID4gPiArDQo+ID4gPiArICNkZWZpbmUg TUFMTE9DKHBhcnNlciwgcykgKHBhcnNlci0+bV9tZW0ubWFsbG9jX2ZjbigocykpKQ0KPiA+ID4g K0BAIC0xMDU1LDYgKzExMjEsMTggQEAgcGFyc2VySW5pdChYTUxfUGFyc2VyIHBhcnNlciwgY29u c3QNCj4gPiA+IFhNTF9DaGFyDQo+ID4gPiAqZW5jb2RpbmdOYW1lKSB7DQo+ID4gPiArwqDCoCBw YXJzZXItPm1fcGFyYW1FbnRpdHlQYXJzaW5nID0gWE1MX1BBUkFNX0VOVElUWV9QQVJTSU5HX05F VkVSOw0KPiA+ID4gKyAjZW5kaWYNCj4gPiA+ICvCoMKgIHBhcnNlci0+bV9oYXNoX3NlY3JldF9z YWx0ID0gMDsNCj4gPiA+ICsrDQo+ID4gPiArKyNpZmRlZiBYTUxfRFREDQo+ID4gPiArK8KgIG1l bXNldCgmcGFyc2VyLT5tX2FjY291bnRpbmcsIDAsIHNpemVvZihBQ0NPVU5USU5HKSk7DQo+ID4g PiArK8KgIHBhcnNlci0+bV9hY2NvdW50aW5nLmRlYnVnTGV2ZWwgPQ0KPiA+ID4gZ2V0RGVidWdM ZXZlbCgiRVhQQVRfQUNDT1VOVElOR19ERUJVRyIsIDB1KTsNCj4gPiA+ICsrwqAgcGFyc2VyLT5t X2FjY291bnRpbmcubWF4aW11bUFtcGxpZmljYXRpb25GYWN0b3INCj4gPiA+ICsrwqDCoMKgwqDC oCA9DQo+ID4gPiBFWFBBVF9CSUxMSU9OX0xBVUdIU19BVFRBQ0tfUFJPVEVDVElPTl9NQVhJTVVN X0FNUExJRklDQVRJT05fREVGQVVMDQo+ID4gPiBUOw0KPiA+ID4gKyvCoCBwYXJzZXItPm1fYWNj b3VudGluZy5hY3RpdmF0aW9uVGhyZXNob2xkQnl0ZXMNCj4gPiA+ICsrwqDCoMKgwqDCoCA9DQo+ ID4gPiBFWFBBVF9CSUxMSU9OX0xBVUdIU19BVFRBQ0tfUFJPVEVDVElPTl9BQ1RJVkFUSU9OX1RI UkVTSE9MRF9ERUZBVUxUDQo+ID4gPiA7DQo+ID4gPiArKw0KPiA+ID4gKyvCoCBtZW1zZXQoJnBh cnNlci0+bV9lbnRpdHlfc3RhdHMsIDAsIHNpemVvZihFTlRJVFlfU1RBVFMpKTsNCj4gPiA+ICsr wqAgcGFyc2VyLT5tX2VudGl0eV9zdGF0cy5kZWJ1Z0xldmVsID0NCj4gPiA+IGdldERlYnVnTGV2 ZWwoIkVYUEFUX0VOVElUWV9ERUJVRyIsIDB1KTsNCj4gPiA+ICsrI2VuZGlmDQo+ID4gPiArIH0N Cj4gPiA+ICsNCj4gPiA+ICsgLyogbW92ZXMgbGlzdCBvZiBiaW5kaW5ncyB0byBtX2ZyZWVCaW5k aW5nTGlzdCAqLw0KPiA+ID4gK0BAIC0yMzE4LDYgKzIzOTYsMTAgQEAgWE1MX0Vycm9yU3RyaW5n KGVudW0gWE1MX0Vycm9yIGNvZGUpIHsNCj4gPiA+ICvCoMKgIC8qIEFkZGVkIGluIDIuMi41LiAq Lw0KPiA+ID4gK8KgwqAgY2FzZSBYTUxfRVJST1JfSU5WQUxJRF9BUkdVTUVOVDogLyogQ29uc3Rh bnQgYWRkZWQgaW4gMi4yLjEsDQo+ID4gPiBhbHJlYWR5ICovDQo+ID4gPiArwqDCoMKgwqAgcmV0 dXJuIFhNTF9MKCJpbnZhbGlkIGFyZ3VtZW50Iik7DQo+ID4gPiArK8KgIC8qIEJhY2twb3J0ZWQg ZnJvbSAyLjQuMC4gKi8NCj4gPiA+ICsrwqAgY2FzZSBYTUxfRVJST1JfQU1QTElGSUNBVElPTl9M SU1JVF9CUkVBQ0g6DQo+ID4gPiArK8KgwqDCoCByZXR1cm4gWE1MX0woDQo+ID4gPiArK8KgwqDC oMKgwqDCoMKgICJsaW1pdCBvbiBpbnB1dCBhbXBsaWZpY2F0aW9uIGZhY3RvciAoZnJvbSBEVEQg YW5kDQo+ID4gPiBlbnRpdGllcykNCj4gPiA+IGJyZWFjaGVkIik7DQo+ID4gPiArwqDCoCB9DQo+ ID4gPiArwqDCoCByZXR1cm4gTlVMTDsNCj4gPiA+ICsgfQ0KPiA+ID4gK0BAIC0yMzU0LDQxICsy NDM2LDc1IEBAIFhNTF9FeHBhdFZlcnNpb25JbmZvKHZvaWQpIHsNCj4gPiA+ICsNCj4gPiA+ICsg Y29uc3QgWE1MX0ZlYXR1cmUgKlhNTENBTEwNCj4gPiA+ICsgWE1MX0dldEZlYXR1cmVMaXN0KHZv aWQpIHsNCj4gPiA+ICstwqAgc3RhdGljIGNvbnN0IFhNTF9GZWF0dXJlIGZlYXR1cmVzW10NCj4g PiA+ICstwqDCoMKgwqDCoCA9IHt7WE1MX0ZFQVRVUkVfU0laRU9GX1hNTF9DSEFSLCBYTUxfTCgi c2l6ZW9mKFhNTF9DaGFyKSIpLA0KPiA+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqAgc2l6ZW9mKFhN TF9DaGFyKX0sDQo+ID4gPiArLcKgwqDCoMKgwqDCoMKgwqAge1hNTF9GRUFUVVJFX1NJWkVPRl9Y TUxfTENIQVIsDQo+ID4gPiBYTUxfTCgic2l6ZW9mKFhNTF9MQ2hhcikiKSwNCj4gPiA+ICstwqDC oMKgwqDCoMKgwqDCoMKgIHNpemVvZihYTUxfTENoYXIpfSwNCj4gPiA+ICsrwqAgc3RhdGljIGNv bnN0IFhNTF9GZWF0dXJlIGZlYXR1cmVzW10gPSB7DQo+ID4gPiArK8KgwqDCoMKgwqAge1hNTF9G RUFUVVJFX1NJWkVPRl9YTUxfQ0hBUiwgWE1MX0woInNpemVvZihYTUxfQ2hhcikiKSwNCj4gPiA+ ICsrwqDCoMKgwqDCoMKgIHNpemVvZihYTUxfQ2hhcil9LA0KPiA+ID4gKyvCoMKgwqDCoMKgIHtY TUxfRkVBVFVSRV9TSVpFT0ZfWE1MX0xDSEFSLCBYTUxfTCgic2l6ZW9mKFhNTF9MQ2hhcikiKSwN Cj4gPiA+ICsrwqDCoMKgwqDCoMKgIHNpemVvZihYTUxfTENoYXIpfSwNCj4gPiA+ICsgI2lmZGVm IFhNTF9VTklDT0RFDQo+ID4gPiArLcKgwqDCoMKgwqDCoMKgwqAge1hNTF9GRUFUVVJFX1VOSUNP REUsIFhNTF9MKCJYTUxfVU5JQ09ERSIpLCAwfSwNCj4gPiA+ICsrwqDCoMKgwqDCoCB7WE1MX0ZF QVRVUkVfVU5JQ09ERSwgWE1MX0woIlhNTF9VTklDT0RFIiksIDB9LA0KPiA+ID4gKyAjZW5kaWYN Cj4gPiA+ICsgI2lmZGVmIFhNTF9VTklDT0RFX1dDSEFSX1QNCj4gPiA+ICstwqDCoMKgwqDCoMKg wqDCoCB7WE1MX0ZFQVRVUkVfVU5JQ09ERV9XQ0hBUl9ULA0KPiA+ID4gWE1MX0woIlhNTF9VTklD T0RFX1dDSEFSX1QiKSwNCj4gPiA+IDB9LA0KPiA+ID4gKyvCoMKgwqDCoMKgIHtYTUxfRkVBVFVS RV9VTklDT0RFX1dDSEFSX1QsIFhNTF9MKCJYTUxfVU5JQ09ERV9XQ0hBUl9UIiksDQo+ID4gPiAw fSwNCj4gPiA+ICsgI2VuZGlmDQo+ID4gPiArICNpZmRlZiBYTUxfRFREDQo+ID4gPiArLcKgwqDC oMKgwqDCoMKgwqAge1hNTF9GRUFUVVJFX0RURCwgWE1MX0woIlhNTF9EVEQiKSwgMH0sDQo+ID4g PiArK8KgwqDCoMKgwqAge1hNTF9GRUFUVVJFX0RURCwgWE1MX0woIlhNTF9EVEQiKSwgMH0sDQo+ ID4gPiArICNlbmRpZg0KPiA+ID4gKyAjaWZkZWYgWE1MX0NPTlRFWFRfQllURVMNCj4gPiA+ICst wqDCoMKgwqDCoMKgwqDCoCB7WE1MX0ZFQVRVUkVfQ09OVEVYVF9CWVRFUywgWE1MX0woIlhNTF9D T05URVhUX0JZVEVTIiksDQo+ID4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoCBYTUxfQ09OVEVYVF9C WVRFU30sDQo+ID4gPiArK8KgwqDCoMKgwqAge1hNTF9GRUFUVVJFX0NPTlRFWFRfQllURVMsIFhN TF9MKCJYTUxfQ09OVEVYVF9CWVRFUyIpLA0KPiA+ID4gKyvCoMKgwqDCoMKgwqAgWE1MX0NPTlRF WFRfQllURVN9LA0KPiA+ID4gKyAjZW5kaWYNCj4gPiA+ICsgI2lmZGVmIFhNTF9NSU5fU0laRQ0K PiA+ID4gKy3CoMKgwqDCoMKgwqDCoMKgIHtYTUxfRkVBVFVSRV9NSU5fU0laRSwgWE1MX0woIlhN TF9NSU5fU0laRSIpLCAwfSwNCj4gPiA+ICsrwqDCoMKgwqDCoCB7WE1MX0ZFQVRVUkVfTUlOX1NJ WkUsIFhNTF9MKCJYTUxfTUlOX1NJWkUiKSwgMH0sDQo+ID4gPiArICNlbmRpZg0KPiA+ID4gKyAj aWZkZWYgWE1MX05TDQo+ID4gPiArLcKgwqDCoMKgwqDCoMKgwqAge1hNTF9GRUFUVVJFX05TLCBY TUxfTCgiWE1MX05TIiksIDB9LA0KPiA+ID4gKyvCoMKgwqDCoMKgIHtYTUxfRkVBVFVSRV9OUywg WE1MX0woIlhNTF9OUyIpLCAwfSwNCj4gPiA+ICsgI2VuZGlmDQo+ID4gPiArICNpZmRlZiBYTUxf TEFSR0VfU0laRQ0KPiA+ID4gKy3CoMKgwqDCoMKgwqDCoMKgIHtYTUxfRkVBVFVSRV9MQVJHRV9T SVpFLCBYTUxfTCgiWE1MX0xBUkdFX1NJWkUiKSwgMH0sDQo+ID4gPiArK8KgwqDCoMKgwqAge1hN TF9GRUFUVVJFX0xBUkdFX1NJWkUsIFhNTF9MKCJYTUxfTEFSR0VfU0laRSIpLCAwfSwNCj4gPiA+ ICsgI2VuZGlmDQo+ID4gPiArICNpZmRlZiBYTUxfQVRUUl9JTkZPDQo+ID4gPiArLcKgwqDCoMKg wqDCoMKgwqAge1hNTF9GRUFUVVJFX0FUVFJfSU5GTywgWE1MX0woIlhNTF9BVFRSX0lORk8iKSwg MH0sDQo+ID4gPiArK8KgwqDCoMKgwqAge1hNTF9GRUFUVVJFX0FUVFJfSU5GTywgWE1MX0woIlhN TF9BVFRSX0lORk8iKSwgMH0sDQo+ID4gPiArICNlbmRpZg0KPiA+ID4gKy3CoMKgwqDCoMKgwqDC oMKgIHtYTUxfRkVBVFVSRV9FTkQsIE5VTEwsIDB9fTsNCj4gPiA+ICsrI2lmZGVmIFhNTF9EVEQN Cj4gPiA+ICsrwqDCoMKgwqDCoCAvKiBBZGRlZCBpbiBFeHBhdCAyLjQuMC4gKi8NCj4gPiA+ICsr DQo+ID4gPiB7WE1MX0ZFQVRVUkVfQklMTElPTl9MQVVHSFNfQVRUQUNLX1BST1RFQ1RJT05fTUFY SU1VTV9BTVBMSUZJQ0FUSU9ODQo+ID4gPiBfRA0KPiA+ID4gRUYNCj4gPiA+IEFVTFQsDQo+ID4g PiArK8KgwqDCoMKgwqDCoCBYTUxfTCgiWE1MX0JMQVBfTUFYX0FNUCIpLA0KPiA+ID4gKyvCoMKg wqDCoMKgwqAgKGxvbmcgaW50KQ0KPiA+ID4gKysNCj4gPiA+IEVYUEFUX0JJTExJT05fTEFVR0hT X0FUVEFDS19QUk9URUNUSU9OX01BWElNVU1fQU1QTElGSUNBVElPTl9ERUZBVUwNCj4gPiA+IFR9 DQo+ID4gPiAsDQo+ID4gPiArKw0KPiA+ID4ge1hNTF9GRUFUVVJFX0JJTExJT05fTEFVR0hTX0FU VEFDS19QUk9URUNUSU9OX0FDVElWQVRJT05fVEhSRVNIT0xEXw0KPiA+ID4gREUNCj4gPiA+IEZB DQo+ID4gPiBVTFQsDQo+ID4gPiArK8KgwqDCoMKgwqDCoCBYTUxfTCgiWE1MX0JMQVBfQUNUX1RI UkVTIiksDQo+ID4gPiArKw0KPiA+ID4gRVhQQVRfQklMTElPTl9MQVVHSFNfQVRUQUNLX1BST1RF Q1RJT05fQUNUSVZBVElPTl9USFJFU0hPTERfREVGQVVMVA0KPiA+ID4gfSwNCj4gPiA+ICsrI2Vu ZGlmDQo+ID4gPiArK8KgwqDCoMKgwqAge1hNTF9GRUFUVVJFX0VORCwgTlVMTCwgMH19Ow0KPiA+ ID4gKw0KPiA+ID4gK8KgwqAgcmV0dXJuIGZlYXR1cmVzOw0KPiA+ID4gKyB9DQo+ID4gPiArDQo+ ID4gPiArKyNpZmRlZiBYTUxfRFREDQo+ID4gPiArK1hNTF9Cb29sIFhNTENBTEwNCj4gPiA+ICsr WE1MX1NldEJpbGxpb25MYXVnaHNBdHRhY2tQcm90ZWN0aW9uTWF4aW11bUFtcGxpZmljYXRpb24o DQo+ID4gPiArK8KgwqDCoCBYTUxfUGFyc2VyIHBhcnNlciwgZmxvYXQgbWF4aW11bUFtcGxpZmlj YXRpb25GYWN0b3IpIHsNCj4gPiA+ICsrwqAgaWYgKChwYXJzZXIgPT0gTlVMTCkgfHwgKHBhcnNl ci0+bV9wYXJlbnRQYXJzZXIgIT0gTlVMTCkNCj4gPiA+ICsrwqDCoMKgwqDCoCB8fCBpc25hbiht YXhpbXVtQW1wbGlmaWNhdGlvbkZhY3RvcikNCj4gPiA+ICsrwqDCoMKgwqDCoCB8fCAobWF4aW11 bUFtcGxpZmljYXRpb25GYWN0b3IgPCAxLjBmKSkgew0KPiA+ID4gKyvCoMKgwqAgcmV0dXJuIFhN TF9GQUxTRTsNCj4gPiA+ICsrwqAgfQ0KPiA+ID4gKyvCoCBwYXJzZXItPm1fYWNjb3VudGluZy5t YXhpbXVtQW1wbGlmaWNhdGlvbkZhY3RvciA9DQo+ID4gPiBtYXhpbXVtQW1wbGlmaWNhdGlvbkZh Y3RvcjsNCj4gPiA+ICsrwqAgcmV0dXJuIFhNTF9UUlVFOw0KPiA+ID4gKyt9DQo+ID4gPiArKw0K PiA+ID4gKytYTUxfQm9vbCBYTUxDQUxMDQo+ID4gPiArK1hNTF9TZXRCaWxsaW9uTGF1Z2hzQXR0 YWNrUHJvdGVjdGlvbkFjdGl2YXRpb25UaHJlc2hvbGQoDQo+ID4gPiArK8KgwqDCoCBYTUxfUGFy c2VyIHBhcnNlciwgdW5zaWduZWQgbG9uZyBsb25nDQo+ID4gPiBhY3RpdmF0aW9uVGhyZXNob2xk Qnl0ZXMpDQo+ID4gPiB7DQo+ID4gPiArK8KgIGlmICgocGFyc2VyID09IE5VTEwpIHx8IChwYXJz ZXItPm1fcGFyZW50UGFyc2VyICE9IE5VTEwpKSB7DQo+ID4gPiArK8KgwqDCoCByZXR1cm4gWE1M X0ZBTFNFOw0KPiA+ID4gKyvCoCB9DQo+ID4gPiArK8KgIHBhcnNlci0+bV9hY2NvdW50aW5nLmFj dGl2YXRpb25UaHJlc2hvbGRCeXRlcyA9DQo+ID4gPiBhY3RpdmF0aW9uVGhyZXNob2xkQnl0ZXM7 DQo+ID4gPiArK8KgIHJldHVybiBYTUxfVFJVRTsNCj4gPiA+ICsrfQ0KPiA+ID4gKysjZW5kaWYg LyogWE1MX0RURCAqLw0KPiA+ID4gKysNCj4gPiA+ICsgLyogSW5pdGlhbGx5IHRhZy0+cmF3TmFt ZSBhbHdheXMgcG9pbnRzIGludG8gdGhlIHBhcnNlIGJ1ZmZlcjsNCj4gPiA+ICvCoMKgwqAgZm9y IHRob3NlIFRBRyBpbnN0YW5jZXMgb3BlbmVkIHdoaWxlIHRoZSBjdXJyZW50IHBhcnNlIGJ1ZmZl cg0KPiA+ID4gd2FzDQo+ID4gPiArwqDCoMKgIHByb2Nlc3NlZCwgYW5kIG5vdCB5ZXQgY2xvc2Vk LCB3ZSBuZWVkIHRvIHN0b3JlIHRhZy0+cmF3TmFtZQ0KPiA+ID4gaW4NCj4gPiA+IGENCj4gPiA+ IG1vcmUNCj4gPiA+ICtAQCAtMjQ0MSw5ICsyNTU3LDkgQEAgc3RvcmVSYXdOYW1lcyhYTUxfUGFy c2VyIHBhcnNlcikgew0KPiA+ID4gKyBzdGF0aWMgZW51bSBYTUxfRXJyb3IgUFRSQ0FMTA0KPiA+ ID4gKyBjb250ZW50UHJvY2Vzc29yKFhNTF9QYXJzZXIgcGFyc2VyLCBjb25zdCBjaGFyICpzdGFy dCwgY29uc3QgY2hhcg0KPiA+ID4gKmVuZCwNCj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIGNvbnN0IGNoYXIgKiplbmRQdHIpIHsNCj4gPiA+ICstwqAgZW51bSBYTUxf RXJyb3IgcmVzdWx0DQo+ID4gPiArLcKgwqDCoMKgwqAgPSBkb0NvbnRlbnQocGFyc2VyLCAwLCBw YXJzZXItPm1fZW5jb2RpbmcsIHN0YXJ0LCBlbmQsDQo+ID4gPiBlbmRQdHIsDQo+ID4gPiArLcKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKFhNTF9Cb29sKSEgcGFyc2VyLQ0KPiA+ ID4gPm1fcGFyc2luZ1N0YXR1cy5maW5hbEJ1ZmZlcik7DQo+ID4gPiArK8KgIGVudW0gWE1MX0Vy cm9yIHJlc3VsdCA9IGRvQ29udGVudCgNCj4gPiA+ICsrwqDCoMKgwqDCoCBwYXJzZXIsIDAsIHBh cnNlci0+bV9lbmNvZGluZywgc3RhcnQsIGVuZCwgZW5kUHRyLA0KPiA+ID4gKyvCoMKgwqDCoMKg IChYTUxfQm9vbCkhIHBhcnNlci0+bV9wYXJzaW5nU3RhdHVzLmZpbmFsQnVmZmVyLA0KPiA+ID4g WE1MX0FDQ09VTlRfRElSRUNUKTsNCj4gPiA+ICvCoMKgIGlmIChyZXN1bHQgPT0gWE1MX0VSUk9S X05PTkUpIHsNCj4gPiA+ICvCoMKgwqDCoCBpZiAoISBzdG9yZVJhd05hbWVzKHBhcnNlcikpDQo+ ID4gPiArwqDCoMKgwqDCoMKgIHJldHVybiBYTUxfRVJST1JfTk9fTUVNT1JZOw0KPiA+ID4gK0BA IC0yNDY4LDYgKzI1ODQsMTQgQEAgZXh0ZXJuYWxFbnRpdHlJbml0UHJvY2Vzc29yMihYTUxfUGFy c2VyDQo+ID4gPiBwYXJzZXIsDQo+ID4gPiBjb25zdCBjaGFyICpzdGFydCwNCj4gPiA+ICvCoMKg IGludCB0b2sgPSBYbWxDb250ZW50VG9rKHBhcnNlci0+bV9lbmNvZGluZywgc3RhcnQsIGVuZCwg Jm5leHQpOw0KPiA+ID4gK8KgwqAgc3dpdGNoICh0b2spIHsNCj4gPiA+ICvCoMKgIGNhc2UgWE1M X1RPS19CT006DQo+ID4gPiArKyNpZmRlZiBYTUxfRFREDQo+ID4gPiArK8KgwqDCoCBpZiAoISBh Y2NvdW50aW5nRGlmZlRvbGVyYXRlZChwYXJzZXIsIHRvaywgc3RhcnQsIG5leHQsDQo+ID4gPiBf X0xJTkVfXywNCj4gPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFhNTF9BQ0NPVU5UX0RJUkVDVCkpIHsNCj4gPiA+ ICsrwqDCoMKgwqDCoCBhY2NvdW50aW5nT25BYm9ydChwYXJzZXIpOw0KPiA+ID4gKyvCoMKgwqDC oMKgIHJldHVybiBYTUxfRVJST1JfQU1QTElGSUNBVElPTl9MSU1JVF9CUkVBQ0g7DQo+ID4gPiAr K8KgwqDCoCB9DQo+ID4gPiArKyNlbmRpZiAvKiBYTUxfRFREICovDQo+ID4gPiArKw0KPiA+ID4g K8KgwqDCoMKgIC8qIElmIHdlIGFyZSBhdCB0aGUgZW5kIG9mIHRoZSBidWZmZXIsIHRoaXMgd291 bGQgY2F1c2UgdGhlDQo+ID4gPiBuZXh0DQo+ID4gPiBzdGFnZSwNCj4gPiA+ICvCoMKgwqDCoMKg wqDCoCBpLmUuIGV4dGVybmFsRW50aXR5SW5pdFByb2Nlc3NvcjMsIHRvIHBhc3MgY29udHJvbA0K PiA+ID4gZGlyZWN0bHkNCj4gPiA+IHRvDQo+ID4gPiArwqDCoMKgwqDCoMKgwqAgZG9Db250ZW50 IChieSBkZXRlY3RpbmcgWE1MX1RPS19OT05FKSB3aXRob3V0IHByb2Nlc3NpbmcNCj4gPiA+IGFu eQ0KPiA+ID4geG1sIHRleHQNCj4gPiA+ICtAQCAtMjUwNSw2ICsyNjI5LDEwIEBAIGV4dGVybmFs RW50aXR5SW5pdFByb2Nlc3NvcjMoWE1MX1BhcnNlcg0KPiA+ID4gcGFyc2VyLA0KPiA+ID4gY29u c3QgY2hhciAqc3RhcnQsDQo+ID4gPiArwqDCoCBjb25zdCBjaGFyICpuZXh0ID0gc3RhcnQ7IC8q IFhtbENvbnRlbnRUb2sgZG9lc24ndCBhbHdheXMgc2V0DQo+ID4gPiB0aGUNCj4gPiA+IGxhc3Qg YXJnICovDQo+ID4gPiArwqDCoCBwYXJzZXItPm1fZXZlbnRQdHIgPSBzdGFydDsNCj4gPiA+ICvC oMKgIHRvayA9IFhtbENvbnRlbnRUb2socGFyc2VyLT5tX2VuY29kaW5nLCBzdGFydCwgZW5kLCAm bmV4dCk7DQo+ID4gPiArK8KgIC8qIE5vdGU6IFRoZXNlIGJ5dGVzIGFyZSBhY2NvdW50ZWQgbGF0 ZXIgaW46DQo+ID4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgIC0gcHJvY2Vzc1htbERlY2wNCj4g PiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqAgLSBleHRlcm5hbEVudGl0eUNvbnRlbnRQcm9jZXNz b3INCj4gPiA+ICsrwqAgKi8NCj4gPiA+ICvCoMKgIHBhcnNlci0+bV9ldmVudEVuZFB0ciA9IG5l eHQ7DQo+ID4gPiArDQo+ID4gPiArwqDCoCBzd2l0Y2ggKHRvaykgew0KPiA+ID4gK0BAIC0yNTQ2 LDcgKzI2NzQsOCBAQCBleHRlcm5hbEVudGl0eUNvbnRlbnRQcm9jZXNzb3IoWE1MX1BhcnNlcg0K PiA+ID4gcGFyc2VyLCBjb25zdCBjaGFyICpzdGFydCwNCj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb25zdCBjaGFy ICplbmQsIGNvbnN0IGNoYXINCj4gPiA+ICoqZW5kUHRyKQ0KPiA+ID4gew0KPiA+ID4gK8KgwqAg ZW51bSBYTUxfRXJyb3IgcmVzdWx0DQo+ID4gPiArwqDCoMKgwqDCoMKgID0gZG9Db250ZW50KHBh cnNlciwgMSwgcGFyc2VyLT5tX2VuY29kaW5nLCBzdGFydCwgZW5kLA0KPiA+ID4gZW5kUHRyLA0K PiA+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIChYTUxfQm9vbCkhIHBh cnNlci0NCj4gPiA+ID5tX3BhcnNpbmdTdGF0dXMuZmluYWxCdWZmZXIpOw0KPiA+ID4gKyvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIChYTUxfQm9vbCkhIHBhcnNlci0NCj4gPiA+ ID5tX3BhcnNpbmdTdGF0dXMuZmluYWxCdWZmZXIsDQo+ID4gPiArK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgWE1MX0FDQ09VTlRfRU5USVRZX0VYUEFOU0lPTik7DQo+ID4gPiAr wqDCoCBpZiAocmVzdWx0ID09IFhNTF9FUlJPUl9OT05FKSB7DQo+ID4gPiArwqDCoMKgwqAgaWYg KCEgc3RvcmVSYXdOYW1lcyhwYXJzZXIpKQ0KPiA+ID4gK8KgwqDCoMKgwqDCoCByZXR1cm4gWE1M X0VSUk9SX05PX01FTU9SWTsNCj4gPiA+ICtAQCAtMjU1Nyw3ICsyNjg2LDcgQEAgZXh0ZXJuYWxF bnRpdHlDb250ZW50UHJvY2Vzc29yKFhNTF9QYXJzZXINCj4gPiA+IHBhcnNlciwgY29uc3QgY2hh ciAqc3RhcnQsDQo+ID4gPiArIHN0YXRpYyBlbnVtIFhNTF9FcnJvcg0KPiA+ID4gKyBkb0NvbnRl bnQoWE1MX1BhcnNlciBwYXJzZXIsIGludCBzdGFydFRhZ0xldmVsLCBjb25zdCBFTkNPRElORw0K PiA+ID4gKmVuYywNCj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb25zdCBjaGFyICpzLCBj b25zdCBjaGFyICplbmQsIGNvbnN0IGNoYXIgKipuZXh0UHRyLA0KPiA+ID4gKy3CoMKgwqDCoMKg wqDCoMKgwqAgWE1MX0Jvb2wgaGF2ZU1vcmUpIHsNCj4gPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKg IFhNTF9Cb29sIGhhdmVNb3JlLCBlbnVtIFhNTF9BY2NvdW50IGFjY291bnQpIHsNCj4gPiA+ICvC oMKgIC8qIHNhdmUgb25lIGxldmVsIG9mIGluZGlyZWN0aW9uICovDQo+ID4gPiArwqDCoCBEVEQg KmNvbnN0IGR0ZCA9IHBhcnNlci0+bV9kdGQ7DQo+ID4gPiArDQo+ID4gPiArQEAgLTI1NzUsNiAr MjcwNCwxNyBAQCBkb0NvbnRlbnQoWE1MX1BhcnNlciBwYXJzZXIsIGludA0KPiA+ID4gc3RhcnRU YWdMZXZlbCwNCj4gPiA+IGNvbnN0IEVOQ09ESU5HICplbmMsDQo+ID4gPiArwqDCoCBmb3IgKDs7 KSB7DQo+ID4gPiArwqDCoMKgwqAgY29uc3QgY2hhciAqbmV4dCA9IHM7IC8qIFhtbENvbnRlbnRU b2sgZG9lc24ndCBhbHdheXMgc2V0IHRoZQ0KPiA+ID4gbGFzdCBhcmcgKi8NCj4gPiA+ICvCoMKg wqDCoCBpbnQgdG9rID0gWG1sQ29udGVudFRvayhlbmMsIHMsIGVuZCwgJm5leHQpOw0KPiA+ID4g KysjaWZkZWYgWE1MX0RURA0KPiA+ID4gKyvCoMKgwqAgY29uc3QgY2hhciAqYWNjb3VudEFmdGVy DQo+ID4gPiArK8KgwqDCoMKgwqDCoMKgID0gKCh0b2sgPT0gWE1MX1RPS19UUkFJTElOR19SU1FC KSB8fCAodG9rID09DQo+ID4gPiBYTUxfVE9LX1RSQUlMSU5HX0NSKSkNCj4gPiA+ICsrwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgPyAoaGF2ZU1vcmUgPyBzIC8qIGkuZS4gMCBieXRlcyAqLyA6 IGVuZCkNCj4gPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgOiBuZXh0Ow0KPiA+ID4g KyvCoMKgwqAgaWYgKCEgYWNjb3VudGluZ0RpZmZUb2xlcmF0ZWQocGFyc2VyLCB0b2ssIHMsIGFj Y291bnRBZnRlciwNCj4gPiA+IF9fTElORV9fLA0KPiA+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYWNjb3VudCkp IHsNCj4gPiA+ICsrwqDCoMKgwqDCoCBhY2NvdW50aW5nT25BYm9ydChwYXJzZXIpOw0KPiA+ID4g KyvCoMKgwqDCoMKgIHJldHVybiBYTUxfRVJST1JfQU1QTElGSUNBVElPTl9MSU1JVF9CUkVBQ0g7 DQo+ID4gPiArK8KgwqDCoCB9DQo+ID4gPiArKyNlbmRpZg0KPiA+ID4gK8KgwqDCoMKgICpldmVu dEVuZFBQID0gbmV4dDsNCj4gPiA+ICvCoMKgwqDCoCBzd2l0Y2ggKHRvaykgew0KPiA+ID4gK8Kg wqDCoMKgIGNhc2UgWE1MX1RPS19UUkFJTElOR19DUjoNCj4gPiA+ICtAQCAtMjYzMCw2ICsyNzcw LDE0IEBAIGRvQ29udGVudChYTUxfUGFyc2VyIHBhcnNlciwgaW50DQo+ID4gPiBzdGFydFRhZ0xl dmVsLA0KPiA+ID4gY29uc3QgRU5DT0RJTkcgKmVuYywNCj4gPiA+ICvCoMKgwqDCoMKgwqAgWE1M X0NoYXIgY2ggPSAoWE1MX0NoYXIpWG1sUHJlZGVmaW5lZEVudGl0eU5hbWUoDQo+ID4gPiArwqDC oMKgwqDCoMKgwqDCoMKgwqAgZW5jLCBzICsgZW5jLT5taW5CeXRlc1BlckNoYXIsIG5leHQgLSBl bmMtDQo+ID4gPiA+IG1pbkJ5dGVzUGVyQ2hhcik7DQo+ID4gPiArwqDCoMKgwqDCoMKgIGlmIChj aCkgew0KPiA+ID4gKysjaWZkZWYgWE1MX0RURA0KPiA+ID4gKyvCoMKgwqDCoMKgwqDCoCAvKiBO T1RFOiBXZSBhcmUgcmVwbGFjaW5nIDQtNiBjaGFyYWN0ZXJzIG9yaWdpbmFsIGlucHV0DQo+ID4g PiBmb3INCj4gPiA+IDENCj4gPiA+IGNoYXJhY3Rlcg0KPiA+ID4gKyvCoMKgwqDCoMKgwqDCoMKg ICrCoMKgwqDCoMKgwqAgc28gdGhlcmUgaXMgbm8gYW1wbGlmaWNhdGlvbiBhbmQgaGVuY2UgcmVj b3JkaW5nDQo+ID4gPiB3aXRob3V0DQo+ID4gPiArK8KgwqDCoMKgwqDCoMKgwqAgKsKgwqDCoMKg wqDCoCBwcm90ZWN0aW9uLiAqLw0KPiA+ID4gKyvCoMKgwqDCoMKgwqDCoCBhY2NvdW50aW5nRGlm ZlRvbGVyYXRlZChwYXJzZXIsIHRvaywgKGNoYXIgKikmY2gsDQo+ID4gPiArK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICgoY2hh ciAqKSZjaCkgKyBzaXplb2YoWE1MX0NoYXIpLA0KPiA+ID4gX19MSU5FX18sDQo+ID4gPiArK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIFhNTF9BQ0NPVU5UX0VOVElUWV9FWFBBTlNJT04pOw0KPiA+ID4gKysjZW5kaWYgLyogWE1M X0RURCAqLw0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqAgaWYgKHBhcnNlci0+bV9jaGFyYWN0ZXJE YXRhSGFuZGxlcikNCj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBwYXJzZXItPm1fY2hhcmFj dGVyRGF0YUhhbmRsZXIocGFyc2VyLT5tX2hhbmRsZXJBcmcsDQo+ID4gPiAmY2gsDQo+ID4gPiAx KTsNCj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgIGVsc2UgaWYgKHBhcnNlci0+bV9kZWZhdWx0SGFu ZGxlcikNCj4gPiA+ICtAQCAtMjc0OCw3ICsyODk2LDggQEAgZG9Db250ZW50KFhNTF9QYXJzZXIg cGFyc2VyLCBpbnQNCj4gPiA+IHN0YXJ0VGFnTGV2ZWwsDQo+ID4gPiBjb25zdCBFTkNPRElORyAq ZW5jLA0KPiA+ID4gK8KgwqDCoMKgwqDCoCB9DQo+ID4gPiArwqDCoMKgwqDCoMKgIHRhZy0+bmFt ZS5zdHIgPSAoWE1MX0NoYXIgKil0YWctPmJ1ZjsNCj4gPiA+ICvCoMKgwqDCoMKgwqAgKnRvUHRy ID0gWE1MX1QoJ1wwJyk7DQo+ID4gPiArLcKgwqDCoMKgwqAgcmVzdWx0ID0gc3RvcmVBdHRzKHBh cnNlciwgZW5jLCBzLCAmKHRhZy0+bmFtZSksICYodGFnLQ0KPiA+ID4gPiBiaW5kaW5ncykpOw0K PiA+ID4gKyvCoMKgwqDCoMKgIHJlc3VsdA0KPiA+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqAgPSBz dG9yZUF0dHMocGFyc2VyLCBlbmMsIHMsICYodGFnLT5uYW1lKSwgJih0YWctDQo+ID4gPiA+IGJp bmRpbmdzKSwNCj4gPiA+IGFjY291bnQpOw0KPiA+ID4gK8KgwqDCoMKgwqDCoCBpZiAocmVzdWx0 KQ0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIHJlc3VsdDsNCj4gPiA+ICvCoMKgwqDC oMKgwqAgaWYgKHBhcnNlci0+bV9zdGFydEVsZW1lbnRIYW5kbGVyKQ0KPiA+ID4gK0BAIC0yNzcy LDcgKzI5MjEsOCBAQCBkb0NvbnRlbnQoWE1MX1BhcnNlciBwYXJzZXIsIGludA0KPiA+ID4gc3Rh cnRUYWdMZXZlbCwNCj4gPiA+IGNvbnN0IEVOQ09ESU5HICplbmMsDQo+ID4gPiArwqDCoMKgwqDC oMKgIGlmICghIG5hbWUuc3RyKQ0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIFhNTF9F UlJPUl9OT19NRU1PUlk7DQo+ID4gPiArwqDCoMKgwqDCoMKgIHBvb2xGaW5pc2goJnBhcnNlci0+ bV90ZW1wUG9vbCk7DQo+ID4gPiArLcKgwqDCoMKgwqAgcmVzdWx0ID0gc3RvcmVBdHRzKHBhcnNl ciwgZW5jLCBzLCAmbmFtZSwgJmJpbmRpbmdzKTsNCj4gPiA+ICsrwqDCoMKgwqDCoCByZXN1bHQg PSBzdG9yZUF0dHMocGFyc2VyLCBlbmMsIHMsICZuYW1lLCAmYmluZGluZ3MsDQo+ID4gPiArK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBYTUxfQUNDT1VO VF9OT05FIC8qIHRva2VuIHNwYW5zIHdob2xlDQo+ID4gPiBzdGFydA0KPiA+ID4gdGFnICovKTsN Cj4gPiA+ICvCoMKgwqDCoMKgwqAgaWYgKHJlc3VsdCAhPSBYTUxfRVJST1JfTk9ORSkgew0KPiA+ ID4gK8KgwqDCoMKgwqDCoMKgwqAgZnJlZUJpbmRpbmdzKHBhcnNlciwgYmluZGluZ3MpOw0KPiA+ ID4gK8KgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIHJlc3VsdDsNCj4gPiA+ICtAQCAtMjkwNyw3ICsz MDU3LDggQEAgZG9Db250ZW50KFhNTF9QYXJzZXIgcGFyc2VyLCBpbnQNCj4gPiA+IHN0YXJ0VGFn TGV2ZWwsDQo+ID4gPiBjb25zdCBFTkNPRElORyAqZW5jLA0KPiA+ID4gK8KgwqDCoMKgwqDCoCAv KiBFTkQgZGlzYWJsZWQgY29kZSAqLw0KPiA+ID4gK8KgwqDCoMKgwqDCoCBlbHNlIGlmIChwYXJz ZXItPm1fZGVmYXVsdEhhbmRsZXIpDQo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoCByZXBvcnREZWZh dWx0KHBhcnNlciwgZW5jLCBzLCBuZXh0KTsNCj4gPiA+ICstwqDCoMKgwqDCoCByZXN1bHQgPSBk b0NkYXRhU2VjdGlvbihwYXJzZXIsIGVuYywgJm5leHQsIGVuZCwgbmV4dFB0ciwNCj4gPiA+IGhh dmVNb3JlKTsNCj4gPiA+ICsrwqDCoMKgwqDCoCByZXN1bHQNCj4gPiA+ICsrwqDCoMKgwqDCoMKg wqDCoMKgID0gZG9DZGF0YVNlY3Rpb24ocGFyc2VyLCBlbmMsICZuZXh0LCBlbmQsIG5leHRQdHIs DQo+ID4gPiBoYXZlTW9yZSwgYWNjb3VudCk7DQo+ID4gPiArwqDCoMKgwqDCoMKgIGlmIChyZXN1 bHQgIT0gWE1MX0VSUk9SX05PTkUpDQo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gcmVz dWx0Ow0KPiA+ID4gK8KgwqDCoMKgwqDCoCBlbHNlIGlmICghIG5leHQpIHsNCj4gPiA+ICtAQCAt MzAzNiw3ICszMTg3LDggQEAgZnJlZUJpbmRpbmdzKFhNTF9QYXJzZXIgcGFyc2VyLCBCSU5ESU5H DQo+ID4gPiAqYmluZGluZ3MpIHsNCj4gPiA+ICsgKi8NCj4gPiA+ICsgc3RhdGljIGVudW0gWE1M X0Vycm9yDQo+ID4gPiArIHN0b3JlQXR0cyhYTUxfUGFyc2VyIHBhcnNlciwgY29uc3QgRU5DT0RJ TkcgKmVuYywgY29uc3QgY2hhcg0KPiA+ID4gKmF0dFN0ciwNCj4gPiA+ICstwqDCoMKgwqDCoMKg wqDCoMKgIFRBR19OQU1FICp0YWdOYW1lUHRyLCBCSU5ESU5HICoqYmluZGluZ3NQdHIpIHsNCj4g PiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgIFRBR19OQU1FICp0YWdOYW1lUHRyLCBCSU5ESU5HICoq YmluZGluZ3NQdHIsDQo+ID4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoCBlbnVtIFhNTF9BY2NvdW50 IGFjY291bnQpIHsNCj4gPiA+ICvCoMKgIERURCAqY29uc3QgZHRkID0gcGFyc2VyLT5tX2R0ZDsg Lyogc2F2ZSBvbmUgbGV2ZWwgb2YNCj4gPiA+IGluZGlyZWN0aW9uDQo+ID4gPiAqLw0KPiA+ID4g K8KgwqAgRUxFTUVOVF9UWVBFICplbGVtZW50VHlwZTsNCj4gPiA+ICvCoMKgIGludCBuRGVmYXVs dEF0dHM7DQo+ID4gPiArQEAgLTMxNDYsNyArMzI5OCw3IEBAIHN0b3JlQXR0cyhYTUxfUGFyc2Vy IHBhcnNlciwgY29uc3QgRU5DT0RJTkcNCj4gPiA+ICplbmMsIGNvbnN0IGNoYXIgKmF0dFN0ciwN Cj4gPiA+ICvCoMKgwqDCoMKgwqAgLyogbm9ybWFsaXplIHRoZSBhdHRyaWJ1dGUgdmFsdWUgKi8N Cj4gPiA+ICvCoMKgwqDCoMKgwqAgcmVzdWx0ID0gc3RvcmVBdHRyaWJ1dGVWYWx1ZSgNCj4gPiA+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBwYXJzZXIsIGVuYywgaXNDZGF0YSwgcGFyc2VyLT5tX2F0 dHNbaV0udmFsdWVQdHIsDQo+ID4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoCBwYXJzZXItPm1fYXR0 c1tpXS52YWx1ZUVuZCwgJnBhcnNlci0+bV90ZW1wUG9vbCk7DQo+ID4gPiArK8KgwqDCoMKgwqDC oMKgwqDCoCBwYXJzZXItPm1fYXR0c1tpXS52YWx1ZUVuZCwgJnBhcnNlci0+bV90ZW1wUG9vbCwN Cj4gPiA+IGFjY291bnQpOw0KPiA+ID4gK8KgwqDCoMKgwqDCoCBpZiAocmVzdWx0KQ0KPiA+ID4g K8KgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIHJlc3VsdDsNCj4gPiA+ICvCoMKgwqDCoMKgwqAgYXBw QXR0c1thdHRJbmRleF0gPSBwb29sU3RhcnQoJnBhcnNlci0+bV90ZW1wUG9vbCk7DQo+ID4gPiAr QEAgLTM1MzUsOSArMzY4Nyw5IEBAIGFkZEJpbmRpbmcoWE1MX1BhcnNlciBwYXJzZXIsIFBSRUZJ WA0KPiA+ID4gKnByZWZpeCwNCj4gPiA+IGNvbnN0IEFUVFJJQlVURV9JRCAqYXR0SWQsDQo+ID4g PiArIHN0YXRpYyBlbnVtIFhNTF9FcnJvciBQVFJDQUxMDQo+ID4gPiArIGNkYXRhU2VjdGlvblBy b2Nlc3NvcihYTUxfUGFyc2VyIHBhcnNlciwgY29uc3QgY2hhciAqc3RhcnQsIGNvbnN0DQo+ID4g PiBjaGFyICplbmQsDQo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgY29uc3QgY2hhciAqKmVuZFB0cikgew0KPiA+ID4gKy3CoCBlbnVtIFhNTF9FcnJv ciByZXN1bHQNCj4gPiA+ICstwqDCoMKgwqDCoCA9IGRvQ2RhdGFTZWN0aW9uKHBhcnNlciwgcGFy c2VyLT5tX2VuY29kaW5nLCAmc3RhcnQsIGVuZCwNCj4gPiA+IGVuZFB0ciwNCj4gPiA+ICstwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKFhNTF9Cb29sKSEgcGFy c2VyLQ0KPiA+ID4gPiBtX3BhcnNpbmdTdGF0dXMuZmluYWxCdWZmZXIpOw0KPiA+ID4gKyvCoCBl bnVtIFhNTF9FcnJvciByZXN1bHQgPSBkb0NkYXRhU2VjdGlvbigNCj4gPiA+ICsrwqDCoMKgwqDC oCBwYXJzZXIsIHBhcnNlci0+bV9lbmNvZGluZywgJnN0YXJ0LCBlbmQsIGVuZFB0ciwNCj4gPiA+ ICsrwqDCoMKgwqDCoCAoWE1MX0Jvb2wpISBwYXJzZXItPm1fcGFyc2luZ1N0YXR1cy5maW5hbEJ1 ZmZlciwNCj4gPiA+IFhNTF9BQ0NPVU5UX0RJUkVDVCk7DQo+ID4gPiArwqDCoCBpZiAocmVzdWx0 ICE9IFhNTF9FUlJPUl9OT05FKQ0KPiA+ID4gK8KgwqDCoMKgIHJldHVybiByZXN1bHQ7DQo+ID4g PiArwqDCoCBpZiAoc3RhcnQpIHsNCj4gPiA+ICtAQCAtMzU1Nyw3ICszNzA5LDggQEAgY2RhdGFT ZWN0aW9uUHJvY2Vzc29yKFhNTF9QYXJzZXIgcGFyc2VyLA0KPiA+ID4gY29uc3QNCj4gPiA+IGNo YXIgKnN0YXJ0LCBjb25zdCBjaGFyICplbmQsDQo+ID4gPiArICovDQo+ID4gPiArIHN0YXRpYyBl bnVtIFhNTF9FcnJvcg0KPiA+ID4gKyBkb0NkYXRhU2VjdGlvbihYTUxfUGFyc2VyIHBhcnNlciwg Y29uc3QgRU5DT0RJTkcgKmVuYywgY29uc3QgY2hhcg0KPiA+ID4gKipzdGFydFB0ciwNCj4gPiA+ ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb25zdCBjaGFyICplbmQsIGNvbnN0IGNo YXIgKipuZXh0UHRyLCBYTUxfQm9vbA0KPiA+ID4gaGF2ZU1vcmUpIHsNCj4gPiA+ICsrwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb25zdCBjaGFyICplbmQsIGNvbnN0IGNoYXIgKipuZXh0 UHRyLCBYTUxfQm9vbA0KPiA+ID4gaGF2ZU1vcmUsDQo+ID4gPiArK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgZW51bSBYTUxfQWNjb3VudCBhY2NvdW50KSB7DQo+ID4gPiArwqDCoCBjb25z dCBjaGFyICpzID0gKnN0YXJ0UHRyOw0KPiA+ID4gK8KgwqAgY29uc3QgY2hhciAqKmV2ZW50UFA7 DQo+ID4gPiArwqDCoCBjb25zdCBjaGFyICoqZXZlbnRFbmRQUDsNCj4gPiA+ICtAQCAtMzU3NSw2 ICszNzI4LDE0IEBAIGRvQ2RhdGFTZWN0aW9uKFhNTF9QYXJzZXIgcGFyc2VyLCBjb25zdA0KPiA+ ID4gRU5DT0RJTkcgKmVuYywgY29uc3QgY2hhciAqKnN0YXJ0UHRyLA0KPiA+ID4gK8KgwqAgZm9y ICg7Oykgew0KPiA+ID4gK8KgwqDCoMKgIGNvbnN0IGNoYXIgKm5leHQ7DQo+ID4gPiArwqDCoMKg wqAgaW50IHRvayA9IFhtbENkYXRhU2VjdGlvblRvayhlbmMsIHMsIGVuZCwgJm5leHQpOw0KPiA+ ID4gKysjaWZkZWYgWE1MX0RURA0KPiA+ID4gKyvCoMKgwqAgaWYgKCEgYWNjb3VudGluZ0RpZmZU b2xlcmF0ZWQocGFyc2VyLCB0b2ssIHMsIG5leHQsIF9fTElORV9fLA0KPiA+ID4gYWNjb3VudCkp IHsNCj4gPiA+ICsrwqDCoMKgwqDCoCBhY2NvdW50aW5nT25BYm9ydChwYXJzZXIpOw0KPiA+ID4g KyvCoMKgwqDCoMKgIHJldHVybiBYTUxfRVJST1JfQU1QTElGSUNBVElPTl9MSU1JVF9CUkVBQ0g7 DQo+ID4gPiArK8KgwqDCoCB9DQo+ID4gPiArKyNlbHNlDQo+ID4gPiArK8KgwqDCoCBVTlVTRURf UChhY2NvdW50KTsNCj4gPiA+ICsrI2VuZGlmDQo+ID4gPiArwqDCoMKgwqAgKmV2ZW50RW5kUFAg PSBuZXh0Ow0KPiA+ID4gK8KgwqDCoMKgIHN3aXRjaCAodG9rKSB7DQo+ID4gPiArwqDCoMKgwqAg Y2FzZSBYTUxfVE9LX0NEQVRBX1NFQ1RfQ0xPU0U6DQo+ID4gPiArQEAgLTM3MTksNiArMzg4MCwx MyBAQCBkb0lnbm9yZVNlY3Rpb24oWE1MX1BhcnNlciBwYXJzZXIsIGNvbnN0DQo+ID4gPiBFTkNP RElORyAqZW5jLCBjb25zdCBjaGFyICoqc3RhcnRQdHIsDQo+ID4gPiArwqDCoCAqZXZlbnRQUCA9 IHM7DQo+ID4gPiArwqDCoCAqc3RhcnRQdHIgPSBOVUxMOw0KPiA+ID4gK8KgwqAgdG9rID0gWG1s SWdub3JlU2VjdGlvblRvayhlbmMsIHMsIGVuZCwgJm5leHQpOw0KPiA+ID4gKysjwqAgaWZkZWYg WE1MX0RURA0KPiA+ID4gKyvCoCBpZiAoISBhY2NvdW50aW5nRGlmZlRvbGVyYXRlZChwYXJzZXIs IHRvaywgcywgbmV4dCwgX19MSU5FX18sDQo+ID4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFhNTF9BQ0NPVU5UX0RJUkVD VCkpIHsNCj4gPiA+ICsrwqDCoMKgIGFjY291bnRpbmdPbkFib3J0KHBhcnNlcik7DQo+ID4gPiAr K8KgwqDCoCByZXR1cm4gWE1MX0VSUk9SX0FNUExJRklDQVRJT05fTElNSVRfQlJFQUNIOw0KPiA+ ID4gKyvCoCB9DQo+ID4gPiArKyPCoCBlbmRpZg0KPiA+ID4gK8KgwqAgKmV2ZW50RW5kUFAgPSBu ZXh0Ow0KPiA+ID4gK8KgwqAgc3dpdGNoICh0b2spIHsNCj4gPiA+ICvCoMKgIGNhc2UgWE1MX1RP S19JR05PUkVfU0VDVDoNCj4gPiA+ICtAQCAtMzgwMyw2ICszOTcxLDE1IEBAIHByb2Nlc3NYbWxE ZWNsKFhNTF9QYXJzZXIgcGFyc2VyLCBpbnQNCj4gPiA+IGlzR2VuZXJhbFRleHRFbnRpdHksIGNv bnN0IGNoYXIgKnMsDQo+ID4gPiArwqDCoCBjb25zdCBjaGFyICp2ZXJzaW9uZW5kOw0KPiA+ID4g K8KgwqAgY29uc3QgWE1MX0NoYXIgKnN0b3JlZHZlcnNpb24gPSBOVUxMOw0KPiA+ID4gK8KgwqAg aW50IHN0YW5kYWxvbmUgPSAtMTsNCj4gPiA+ICsrDQo+ID4gPiArKyNpZmRlZiBYTUxfRFREDQo+ ID4gPiArK8KgIGlmICghIGFjY291bnRpbmdEaWZmVG9sZXJhdGVkKHBhcnNlciwgWE1MX1RPS19Y TUxfREVDTCwgcywNCj4gPiA+IG5leHQsDQo+ID4gPiBfX0xJTkVfXywNCj4gPiA+ICsrwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg WE1MX0FDQ09VTlRfRElSRUNUKSkgew0KPiA+ID4gKyvCoMKgwqAgYWNjb3VudGluZ09uQWJvcnQo cGFyc2VyKTsNCj4gPiA+ICsrwqDCoMKgIHJldHVybiBYTUxfRVJST1JfQU1QTElGSUNBVElPTl9M SU1JVF9CUkVBQ0g7DQo+ID4gPiArK8KgIH0NCj4gPiA+ICsrI2VuZGlmDQo+ID4gPiArKw0KPiA+ ID4gK8KgwqAgaWYgKCEgKHBhcnNlci0+bV9ucyA/IFhtbFBhcnNlWG1sRGVjbE5TIDogWG1sUGFy c2VYbWxEZWNsKSgNCj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBpc0dlbmVyYWxUZXh0RW50 aXR5LCBwYXJzZXItPm1fZW5jb2RpbmcsIHMsIG5leHQsDQo+ID4gPiAmcGFyc2VyLQ0KPiA+ID4g PiBtX2V2ZW50UHRyLA0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgICZ2ZXJzaW9uLCAmdmVy c2lvbmVuZCwgJmVuY29kaW5nTmFtZSwgJm5ld0VuY29kaW5nLA0KPiA+ID4gJnN0YW5kYWxvbmUp KSB7DQo+ID4gPiArQEAgLTM5NTIsNiArNDEyOSwxMCBAQCBlbnRpdHlWYWx1ZUluaXRQcm9jZXNz b3IoWE1MX1BhcnNlciBwYXJzZXIsDQo+ID4gPiBjb25zdCBjaGFyICpzLCBjb25zdCBjaGFyICpl bmQsDQo+ID4gPiArDQo+ID4gPiArwqDCoCBmb3IgKDs7KSB7DQo+ID4gPiArwqDCoMKgwqAgdG9r ID0gWG1sUHJvbG9nVG9rKHBhcnNlci0+bV9lbmNvZGluZywgc3RhcnQsIGVuZCwgJm5leHQpOw0K PiA+ID4gKyvCoMKgwqAgLyogTm90ZTogRXhjZXB0IGZvciBYTUxfVE9LX0JPTSBiZWxvdywgdGhl c2UgYnl0ZXMgYXJlDQo+ID4gPiBhY2NvdW50ZWQNCj4gPiA+IGxhdGVyIGluOg0KPiA+ID4gKyvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLSBzdG9yZUVudGl0eVZhbHVlDQo+ID4gPiArK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCAtIHByb2Nlc3NYbWxEZWNsDQo+ID4gPiArK8KgwqDCoCAqLw0K PiA+ID4gK8KgwqDCoMKgIHBhcnNlci0+bV9ldmVudEVuZFB0ciA9IG5leHQ7DQo+ID4gPiArwqDC oMKgwqAgaWYgKHRvayA8PSAwKSB7DQo+ID4gPiArwqDCoMKgwqDCoMKgIGlmICghIHBhcnNlci0+ bV9wYXJzaW5nU3RhdHVzLmZpbmFsQnVmZmVyICYmIHRvayAhPQ0KPiA+ID4gWE1MX1RPS19JTlZB TElEKSB7DQo+ID4gPiArQEAgLTM5NzAsNyArNDE1MSw4IEBAIGVudGl0eVZhbHVlSW5pdFByb2Nl c3NvcihYTUxfUGFyc2VyIHBhcnNlciwNCj4gPiA+IGNvbnN0IGNoYXIgKnMsIGNvbnN0IGNoYXIg KmVuZCwNCj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgIGJyZWFrOw0KPiA+ID4gK8KgwqDCoMKgwqDC oCB9DQo+ID4gPiArwqDCoMKgwqDCoMKgIC8qIGZvdW5kIGVuZCBvZiBlbnRpdHkgdmFsdWUgLSBj YW4gc3RvcmUgaXQgbm93ICovDQo+ID4gPiArLcKgwqDCoMKgwqAgcmV0dXJuIHN0b3JlRW50aXR5 VmFsdWUocGFyc2VyLCBwYXJzZXItPm1fZW5jb2RpbmcsIHMsDQo+ID4gPiBlbmQpOw0KPiA+ID4g KyvCoMKgwqDCoMKgIHJldHVybiBzdG9yZUVudGl0eVZhbHVlKHBhcnNlciwgcGFyc2VyLT5tX2Vu Y29kaW5nLCBzLCBlbmQsDQo+ID4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgWE1MX0FDQ09VTlRfRElSRUNUKTsNCj4gPiA+ICvC oMKgwqDCoCB9IGVsc2UgaWYgKHRvayA9PSBYTUxfVE9LX1hNTF9ERUNMKSB7DQo+ID4gPiArwqDC oMKgwqDCoMKgIGVudW0gWE1MX0Vycm9yIHJlc3VsdDsNCj4gPiA+ICvCoMKgwqDCoMKgwqAgcmVz dWx0ID0gcHJvY2Vzc1htbERlY2wocGFyc2VyLCAwLCBzdGFydCwgbmV4dCk7DQo+ID4gPiArQEAg LTM5OTcsNiArNDE3OSwxNCBAQCBlbnRpdHlWYWx1ZUluaXRQcm9jZXNzb3IoWE1MX1BhcnNlciBw YXJzZXIsDQo+ID4gPiBjb25zdCBjaGFyICpzLCBjb25zdCBjaGFyICplbmQsDQo+ID4gPiArwqDC oMKgwqAgKi8NCj4gPiA+ICvCoMKgwqDCoCBlbHNlIGlmICh0b2sgPT0gWE1MX1RPS19CT00gJiYg bmV4dCA9PSBlbmQNCj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAmJiAhIHBhcnNl ci0+bV9wYXJzaW5nU3RhdHVzLmZpbmFsQnVmZmVyKSB7DQo+ID4gPiArKyPCoCBpZmRlZiBYTUxf RFREDQo+ID4gPiArK8KgwqDCoMKgwqAgaWYgKCEgYWNjb3VudGluZ0RpZmZUb2xlcmF0ZWQocGFy c2VyLCB0b2ssIHMsIG5leHQsDQo+ID4gPiBfX0xJTkVfXywNCj4gPiA+ICsrwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBYTUxfQUNDT1VOVF9ESVJFQ1QpKSB7DQo+ID4gPiArK8KgwqDCoMKgwqDCoMKgIGFjY291bnRp bmdPbkFib3J0KHBhcnNlcik7DQo+ID4gPiArK8KgwqDCoMKgwqDCoMKgIHJldHVybiBYTUxfRVJS T1JfQU1QTElGSUNBVElPTl9MSU1JVF9CUkVBQ0g7DQo+ID4gPiArK8KgwqDCoMKgwqAgfQ0KPiA+ ID4gKysjwqAgZW5kaWYNCj4gPiA+ICsrDQo+ID4gPiArwqDCoMKgwqDCoMKgICpuZXh0UHRyID0g bmV4dDsNCj4gPiA+ICvCoMKgwqDCoMKgwqAgcmV0dXJuIFhNTF9FUlJPUl9OT05FOw0KPiA+ID4g K8KgwqDCoMKgIH0NCj4gPiA+ICtAQCAtNDAzOSwxNiArNDIyOSwyNCBAQCBleHRlcm5hbFBhckVu dFByb2Nlc3NvcihYTUxfUGFyc2VyIHBhcnNlciwNCj4gPiA+IGNvbnN0IGNoYXIgKnMsIGNvbnN0 IGNoYXIgKmVuZCwNCj4gPiA+ICvCoMKgIH0NCj4gPiA+ICvCoMKgIC8qIFRoaXMgd291bGQgY2F1 c2UgdGhlIG5leHQgc3RhZ2UsIGkuZS4gZG9Qcm9sb2cgdG8gYmUgcGFzc2VkDQo+ID4gPiBYTUxf VE9LX0JPTS4NCj4gPiA+ICvCoMKgwqDCoMKgIEhvd2V2ZXIsIHdoZW4gcGFyc2luZyBhbiBleHRl cm5hbCBzdWJzZXQsIGRvUHJvbG9nIHdpbGwgbm90DQo+ID4gPiBhY2NlcHQgYSBCT00NCj4gPiA+ ICstwqDCoMKgwqAgYXMgdmFsaWQsIGFuZCByZXBvcnQgYSBzeW50YXggZXJyb3IsIHNvIHdlIGhh dmUgdG8gc2tpcCB0aGUNCj4gPiA+IEJPTQ0KPiA+ID4gKyvCoMKgwqDCoCBhcyB2YWxpZCwgYW5k IHJlcG9ydCBhIHN5bnRheCBlcnJvciwgc28gd2UgaGF2ZSB0byBza2lwIHRoZQ0KPiA+ID4gQk9N LA0KPiA+ID4gYW5kDQo+ID4gPiArK8KgwqDCoMKgIGFjY291bnQgZm9yIHRoZSBCT00gYnl0ZXMu DQo+ID4gPiArwqDCoCAqLw0KPiA+ID4gK8KgwqAgZWxzZSBpZiAodG9rID09IFhNTF9UT0tfQk9N KSB7DQo+ID4gPiArK8KgwqDCoCBpZiAoISBhY2NvdW50aW5nRGlmZlRvbGVyYXRlZChwYXJzZXIs IHRvaywgcywgbmV4dCwgX19MSU5FX18sDQo+ID4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBYTUxfQUNDT1VOVF9E SVJFQ1QpKSB7DQo+ID4gPiArK8KgwqDCoMKgwqAgYWNjb3VudGluZ09uQWJvcnQocGFyc2VyKTsN Cj4gPiA+ICsrwqDCoMKgwqDCoCByZXR1cm4gWE1MX0VSUk9SX0FNUExJRklDQVRJT05fTElNSVRf QlJFQUNIOw0KPiA+ID4gKyvCoMKgwqAgfQ0KPiA+ID4gKysNCj4gPiA+ICvCoMKgwqDCoCBzID0g bmV4dDsNCj4gPiA+ICvCoMKgwqDCoCB0b2sgPSBYbWxQcm9sb2dUb2socGFyc2VyLT5tX2VuY29k aW5nLCBzLCBlbmQsICZuZXh0KTsNCj4gPiA+ICvCoMKgIH0NCj4gPiA+ICsNCj4gPiA+ICvCoMKg IHBhcnNlci0+bV9wcm9jZXNzb3IgPSBwcm9sb2dQcm9jZXNzb3I7DQo+ID4gPiArwqDCoCByZXR1 cm4gZG9Qcm9sb2cocGFyc2VyLCBwYXJzZXItPm1fZW5jb2RpbmcsIHMsIGVuZCwgdG9rLCBuZXh0 LA0KPiA+ID4gbmV4dFB0ciwNCj4gPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCAoWE1MX0Jvb2wpISBwYXJzZXItDQo+ID4gPiA+bV9wYXJzaW5nU3RhdHVzLmZpbmFsQnVm ZmVyLA0KPiA+ID4gWE1MX1RSVUUpOw0KPiA+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIChYTUxfQm9vbCkhIHBhcnNlci0NCj4gPiA+ID5tX3BhcnNpbmdTdGF0dXMuZmlu YWxCdWZmZXIsDQo+ID4gPiBYTUxfVFJVRSwNCj4gPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBYTUxfQUNDT1VOVF9ESVJFQ1QpOw0KPiA+ID4gKyB9DQo+ID4gPiArDQo+ ID4gPiArIHN0YXRpYyBlbnVtIFhNTF9FcnJvciBQVFJDQUxMDQo+ID4gPiArQEAgLTQwNjEsNiAr NDI1OSw5IEBAIGVudGl0eVZhbHVlUHJvY2Vzc29yKFhNTF9QYXJzZXIgcGFyc2VyLA0KPiA+ID4g Y29uc3QNCj4gPiA+IGNoYXIgKnMsIGNvbnN0IGNoYXIgKmVuZCwNCj4gPiA+ICsNCj4gPiA+ICvC oMKgIGZvciAoOzspIHsNCj4gPiA+ICvCoMKgwqDCoCB0b2sgPSBYbWxQcm9sb2dUb2soZW5jLCBz dGFydCwgZW5kLCAmbmV4dCk7DQo+ID4gPiArK8KgwqDCoCAvKiBOb3RlOiBUaGVzZSBieXRlcyBh cmUgYWNjb3VudGVkIGxhdGVyIGluOg0KPiA+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg LSBzdG9yZUVudGl0eVZhbHVlDQo+ID4gPiArK8KgwqDCoCAqLw0KPiA+ID4gK8KgwqDCoMKgIGlm ICh0b2sgPD0gMCkgew0KPiA+ID4gK8KgwqDCoMKgwqDCoCBpZiAoISBwYXJzZXItPm1fcGFyc2lu Z1N0YXR1cy5maW5hbEJ1ZmZlciAmJiB0b2sgIT0NCj4gPiA+IFhNTF9UT0tfSU5WQUxJRCkgew0K PiA+ID4gK8KgwqDCoMKgwqDCoMKgwqAgKm5leHRQdHIgPSBzOw0KPiA+ID4gK0BAIC00MDc4LDcg KzQyNzksNyBAQCBlbnRpdHlWYWx1ZVByb2Nlc3NvcihYTUxfUGFyc2VyIHBhcnNlciwNCj4gPiA+ IGNvbnN0DQo+ID4gPiBjaGFyICpzLCBjb25zdCBjaGFyICplbmQsDQo+ID4gPiArwqDCoMKgwqDC oMKgwqDCoCBicmVhazsNCj4gPiA+ICvCoMKgwqDCoMKgwqAgfQ0KPiA+ID4gK8KgwqDCoMKgwqDC oCAvKiBmb3VuZCBlbmQgb2YgZW50aXR5IHZhbHVlIC0gY2FuIHN0b3JlIGl0IG5vdyAqLw0KPiA+ ID4gKy3CoMKgwqDCoMKgIHJldHVybiBzdG9yZUVudGl0eVZhbHVlKHBhcnNlciwgZW5jLCBzLCBl bmQpOw0KPiA+ID4gKyvCoMKgwqDCoMKgIHJldHVybiBzdG9yZUVudGl0eVZhbHVlKHBhcnNlciwg ZW5jLCBzLCBlbmQsDQo+ID4gPiBYTUxfQUNDT1VOVF9ESVJFQ1QpOw0KPiA+ID4gK8KgwqDCoMKg IH0NCj4gPiA+ICvCoMKgwqDCoCBzdGFydCA9IG5leHQ7DQo+ID4gPiArwqDCoCB9DQo+ID4gPiAr QEAgLTQwOTIsMTMgKzQyOTMsMTQgQEAgcHJvbG9nUHJvY2Vzc29yKFhNTF9QYXJzZXIgcGFyc2Vy LCBjb25zdA0KPiA+ID4gY2hhcg0KPiA+ID4gKnMsIGNvbnN0IGNoYXIgKmVuZCwNCj4gPiA+ICvC oMKgIGNvbnN0IGNoYXIgKm5leHQgPSBzOw0KPiA+ID4gK8KgwqAgaW50IHRvayA9IFhtbFByb2xv Z1RvayhwYXJzZXItPm1fZW5jb2RpbmcsIHMsIGVuZCwgJm5leHQpOw0KPiA+ID4gK8KgwqAgcmV0 dXJuIGRvUHJvbG9nKHBhcnNlciwgcGFyc2VyLT5tX2VuY29kaW5nLCBzLCBlbmQsIHRvaywgbmV4 dCwNCj4gPiA+IG5leHRQdHIsDQo+ID4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgKFhNTF9Cb29sKSEgcGFyc2VyLQ0KPiA+ID4gPm1fcGFyc2luZ1N0YXR1cy5maW5hbEJ1 ZmZlciwNCj4gPiA+IFhNTF9UUlVFKTsNCj4gPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCAoWE1MX0Jvb2wpISBwYXJzZXItDQo+ID4gPiA+bV9wYXJzaW5nU3RhdHVzLmZp bmFsQnVmZmVyLA0KPiA+ID4gWE1MX1RSVUUsDQo+ID4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgWE1MX0FDQ09VTlRfRElSRUNUKTsNCj4gPiA+ICsgfQ0KPiA+ID4gKw0K PiA+ID4gKyBzdGF0aWMgZW51bSBYTUxfRXJyb3INCj4gPiA+ICsgZG9Qcm9sb2coWE1MX1BhcnNl ciBwYXJzZXIsIGNvbnN0IEVOQ09ESU5HICplbmMsIGNvbnN0IGNoYXIgKnMsDQo+ID4gPiBjb25z dA0KPiA+ID4gY2hhciAqZW5kLA0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoCBpbnQgdG9rLCBj b25zdCBjaGFyICpuZXh0LCBjb25zdCBjaGFyICoqbmV4dFB0ciwNCj4gPiA+IFhNTF9Cb29sDQo+ ID4gPiBoYXZlTW9yZSwNCj4gPiA+ICstwqDCoMKgwqDCoMKgwqDCoCBYTUxfQm9vbCBhbGxvd0Ns b3NpbmdEb2N0eXBlKSB7DQo+ID4gPiArK8KgwqDCoMKgwqDCoMKgwqAgWE1MX0Jvb2wgYWxsb3dD bG9zaW5nRG9jdHlwZSwgZW51bSBYTUxfQWNjb3VudCBhY2NvdW50KQ0KPiA+ID4gew0KPiA+ID4g KyAjaWZkZWYgWE1MX0RURA0KPiA+ID4gK8KgwqAgc3RhdGljIGNvbnN0IFhNTF9DaGFyIGV4dGVy bmFsU3Vic2V0TmFtZVtdID0ge0FTQ0lJX0hBU0gsDQo+ID4gPiAnXDAnfTsNCj4gPiA+ICsgI2Vu ZGlmIC8qIFhNTF9EVEQgKi8NCj4gPiA+ICtAQCAtNDEyNSw2ICs0MzI3LDEwIEBAIGRvUHJvbG9n KFhNTF9QYXJzZXIgcGFyc2VyLCBjb25zdCBFTkNPRElORw0KPiA+ID4gKmVuYywgY29uc3QgY2hh ciAqcywgY29uc3QgY2hhciAqZW5kLA0KPiA+ID4gK8KgwqAgc3RhdGljIGNvbnN0IFhNTF9DaGFy IGVudW1WYWx1ZVNlcFtdID0ge0FTQ0lJX1BJUEUsICdcMCd9Ow0KPiA+ID4gK8KgwqAgc3RhdGlj IGNvbnN0IFhNTF9DaGFyIGVudW1WYWx1ZVN0YXJ0W10gPSB7QVNDSUlfTFBBUkVOLCAnXDAnfTsN Cj4gPiA+ICsNCj4gPiA+ICsrI2lmbmRlZiBYTUxfRFREDQo+ID4gPiArK8KgIFVOVVNFRF9QKGFj Y291bnQpOw0KPiA+ID4gKysjZW5kaWYNCj4gPiA+ICsrDQo+ID4gPiArwqDCoCAvKiBzYXZlIG9u ZSBsZXZlbCBvZiBpbmRpcmVjdGlvbiAqLw0KPiA+ID4gK8KgwqAgRFREICpjb25zdCBkdGQgPSBw YXJzZXItPm1fZHRkOw0KPiA+ID4gKw0KPiA+ID4gK0BAIC00MTg5LDYgKzQzOTUsMTkgQEAgZG9Q cm9sb2coWE1MX1BhcnNlciBwYXJzZXIsIGNvbnN0IEVOQ09ESU5HDQo+ID4gPiAqZW5jLCBjb25z dCBjaGFyICpzLCBjb25zdCBjaGFyICplbmQsDQo+ID4gPiArwqDCoMKgwqDCoMKgIH0NCj4gPiA+ ICvCoMKgwqDCoCB9DQo+ID4gPiArwqDCoMKgwqAgcm9sZSA9IFhtbFRva2VuUm9sZSgmcGFyc2Vy LT5tX3Byb2xvZ1N0YXRlLCB0b2ssIHMsIG5leHQsDQo+ID4gPiBlbmMpOw0KPiA+ID4gKysjaWZk ZWYgWE1MX0RURA0KPiA+ID4gKyvCoMKgwqAgc3dpdGNoIChyb2xlKSB7DQo+ID4gPiArK8KgwqDC oCBjYXNlIFhNTF9ST0xFX0lOU1RBTkNFX1NUQVJUOiAvLyBieXRlcyBhY2NvdW50ZWQgaW4NCj4g PiA+IGNvbnRlbnRQcm9jZXNzb3INCj4gPiA+ICsrwqDCoMKgIGNhc2UgWE1MX1JPTEVfWE1MX0RF Q0w6wqDCoMKgwqDCoMKgIC8vIGJ5dGVzIGFjY291bnRlZCBpbg0KPiA+ID4gcHJvY2Vzc1htbERl Y2wNCj4gPiA+ICsrwqDCoMKgIGNhc2UgWE1MX1JPTEVfVEVYVF9ERUNMOsKgwqDCoMKgwqAgLy8g Ynl0ZXMgYWNjb3VudGVkIGluDQo+ID4gPiBwcm9jZXNzWG1sRGVjbA0KPiA+ID4gKyvCoMKgwqDC oMKgIGJyZWFrOw0KPiA+ID4gKyvCoMKgwqAgZGVmYXVsdDoNCj4gPiA+ICsrwqDCoMKgwqDCoCBp ZiAoISBhY2NvdW50aW5nRGlmZlRvbGVyYXRlZChwYXJzZXIsIHRvaywgcywgbmV4dCwNCj4gPiA+ IF9fTElORV9fLA0KPiA+ID4gYWNjb3VudCkpIHsNCj4gPiA+ICsrwqDCoMKgwqDCoMKgwqAgYWNj b3VudGluZ09uQWJvcnQocGFyc2VyKTsNCj4gPiA+ICsrwqDCoMKgwqDCoMKgwqAgcmV0dXJuIFhN TF9FUlJPUl9BTVBMSUZJQ0FUSU9OX0xJTUlUX0JSRUFDSDsNCj4gPiA+ICsrwqDCoMKgwqDCoCB9 DQo+ID4gPiArK8KgwqDCoCB9DQo+ID4gPiArKyNlbmRpZg0KPiA+ID4gK8KgwqDCoMKgIHN3aXRj aCAocm9sZSkgew0KPiA+ID4gK8KgwqDCoMKgIGNhc2UgWE1MX1JPTEVfWE1MX0RFQ0w6IHsNCj4g PiA+ICvCoMKgwqDCoMKgwqAgZW51bSBYTUxfRXJyb3IgcmVzdWx0ID0gcHJvY2Vzc1htbERlY2wo cGFyc2VyLCAwLCBzLCBuZXh0KTsNCj4gPiA+ICtAQCAtNDQ2NCw3ICs0NjgzLDggQEAgZG9Qcm9s b2coWE1MX1BhcnNlciBwYXJzZXIsIGNvbnN0IEVOQ09ESU5HDQo+ID4gPiAqZW5jLA0KPiA+ID4g Y29uc3QgY2hhciAqcywgY29uc3QgY2hhciAqZW5kLA0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqAg Y29uc3QgWE1MX0NoYXIgKmF0dFZhbDsNCj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgIGVudW0gWE1M X0Vycm9yIHJlc3VsdCA9IHN0b3JlQXR0cmlidXRlVmFsdWUoDQo+ID4gPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHBhcnNlciwgZW5jLCBwYXJzZXItPm1fZGVjbEF0dHJpYnV0ZUlzQ2RhdGEs DQo+ID4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcyArIGVuYy0+bWluQnl0ZXNQZXJDaGFy LCBuZXh0IC0gZW5jLQ0KPiA+ID4gPm1pbkJ5dGVzUGVyQ2hhciwNCj4gPiA+ICZkdGQtPnBvb2wp Ow0KPiA+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHMgKyBlbmMtPm1pbkJ5dGVzUGVyQ2hh ciwgbmV4dCAtIGVuYy0NCj4gPiA+ID5taW5CeXRlc1BlckNoYXIsDQo+ID4gPiAmZHRkLT5wb29s LA0KPiA+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFhNTF9BQ0NPVU5UX05PTkUpOw0KPiA+ ID4gK8KgwqDCoMKgwqDCoMKgwqAgaWYgKHJlc3VsdCkNCj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoCByZXR1cm4gcmVzdWx0Ow0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqAgYXR0VmFsID0gcG9v bFN0YXJ0KCZkdGQtPnBvb2wpOw0KPiA+ID4gK0BAIC00NDk3LDggKzQ3MTcsOSBAQCBkb1Byb2xv ZyhYTUxfUGFyc2VyIHBhcnNlciwgY29uc3QgRU5DT0RJTkcNCj4gPiA+ICplbmMsDQo+ID4gPiBj b25zdCBjaGFyICpzLCBjb25zdCBjaGFyICplbmQsDQo+ID4gPiArwqDCoMKgwqDCoMKgIGJyZWFr Ow0KPiA+ID4gK8KgwqDCoMKgIGNhc2UgWE1MX1JPTEVfRU5USVRZX1ZBTFVFOg0KPiA+ID4gK8Kg wqDCoMKgwqDCoCBpZiAoZHRkLT5rZWVwUHJvY2Vzc2luZykgew0KPiA+ID4gKy3CoMKgwqDCoMKg wqDCoCBlbnVtIFhNTF9FcnJvciByZXN1bHQgPSBzdG9yZUVudGl0eVZhbHVlKA0KPiA+ID4gKy3C oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHBhcnNlciwgZW5jLCBzICsgZW5jLT5taW5CeXRlc1BlckNo YXIsIG5leHQgLSBlbmMtDQo+ID4gPiA+IG1pbkJ5dGVzUGVyQ2hhcik7DQo+ID4gPiArK8KgwqDC oMKgwqDCoMKgIGVudW0gWE1MX0Vycm9yIHJlc3VsdA0KPiA+ID4gKyvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgID0gc3RvcmVFbnRpdHlWYWx1ZShwYXJzZXIsIGVuYywgcyArIGVuYy0NCj4gPiA+ID4g bWluQnl0ZXNQZXJDaGFyLA0KPiA+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbmV4dCAtIGVuYy0+bWluQnl0ZXNQZXJDaGFy LA0KPiA+ID4gWE1MX0FDQ09VTlRfTk9ORSk7DQo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoCBpZiAo cGFyc2VyLT5tX2RlY2xFbnRpdHkpIHsNCj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBwYXJz ZXItPm1fZGVjbEVudGl0eS0+dGV4dFB0ciA9IHBvb2xTdGFydCgmZHRkLQ0KPiA+ID4gPiBlbnRp dHlWYWx1ZVBvb2wpOw0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIHBhcnNlci0+bV9kZWNs RW50aXR5LT50ZXh0TGVuDQo+ID4gPiArQEAgLTQ4ODgsMTIgKzUxMDksMTUgQEAgZG9Qcm9sb2co WE1MX1BhcnNlciBwYXJzZXIsIGNvbnN0IEVOQ09ESU5HDQo+ID4gPiAqZW5jLCBjb25zdCBjaGFy ICpzLCBjb25zdCBjaGFyICplbmQsDQo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoCBpZiAocGFyc2Vy LT5tX2V4dGVybmFsRW50aXR5UmVmSGFuZGxlcikgew0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgIGR0ZC0+cGFyYW1FbnRpdHlSZWFkID0gWE1MX0ZBTFNFOw0KPiA+ID4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgIGVudGl0eS0+b3BlbiA9IFhNTF9UUlVFOw0KPiA+ID4gKyvCoMKgwqDCoMKgwqDC oMKgwqAgZW50aXR5VHJhY2tpbmdPbk9wZW4ocGFyc2VyLCBlbnRpdHksIF9fTElORV9fKTsNCj4g PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoISBwYXJzZXItPm1fZXh0ZXJuYWxFbnRpdHlS ZWZIYW5kbGVyKA0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBw YXJzZXItPm1fZXh0ZXJuYWxFbnRpdHlSZWZIYW5kbGVyQXJnLCAwLA0KPiA+ID4gZW50aXR5LQ0K PiA+ID4gPiBiYXNlLA0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBlbnRpdHktPnN5c3RlbUlkLCBlbnRpdHktPnB1YmxpY0lkKSkgew0KPiA+ID4gKyvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGVudGl0eVRyYWNraW5nT25DbG9zZShwYXJzZXIsIGVudGl0eSwgX19M SU5FX18pOw0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBlbnRpdHktPm9wZW4gPSBY TUxfRkFMU0U7DQo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiBYTUxfRVJS T1JfRVhURVJOQUxfRU5USVRZX0hBTkRMSU5HOw0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg IH0NCj4gPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgIGVudGl0eVRyYWNraW5nT25DbG9zZShwYXJz ZXIsIGVudGl0eSwgX19MSU5FX18pOw0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIGVudGl0 eS0+b3BlbiA9IFhNTF9GQUxTRTsNCj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBoYW5kbGVE ZWZhdWx0ID0gWE1MX0ZBTFNFOw0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIGlmICghIGR0 ZC0+cGFyYW1FbnRpdHlSZWFkKSB7DQo+ID4gPiArQEAgLTUwOTEsNiArNTMxNSwxMyBAQCBlcGls b2dQcm9jZXNzb3IoWE1MX1BhcnNlciBwYXJzZXIsIGNvbnN0DQo+ID4gPiBjaGFyDQo+ID4gPiAq cywgY29uc3QgY2hhciAqZW5kLA0KPiA+ID4gK8KgwqAgZm9yICg7Oykgew0KPiA+ID4gK8KgwqDC oMKgIGNvbnN0IGNoYXIgKm5leHQgPSBOVUxMOw0KPiA+ID4gK8KgwqDCoMKgIGludCB0b2sgPSBY bWxQcm9sb2dUb2socGFyc2VyLT5tX2VuY29kaW5nLCBzLCBlbmQsICZuZXh0KTsNCj4gPiA+ICsr I2lmZGVmIFhNTF9EVEQNCj4gPiA+ICsrwqDCoMKgIGlmICghIGFjY291bnRpbmdEaWZmVG9sZXJh dGVkKHBhcnNlciwgdG9rLCBzLCBuZXh0LCBfX0xJTkVfXywNCj4gPiA+ICsrwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFhN TF9BQ0NPVU5UX0RJUkVDVCkpIHsNCj4gPiA+ICsrwqDCoMKgwqDCoCBhY2NvdW50aW5nT25BYm9y dChwYXJzZXIpOw0KPiA+ID4gKyvCoMKgwqDCoMKgIHJldHVybiBYTUxfRVJST1JfQU1QTElGSUNB VElPTl9MSU1JVF9CUkVBQ0g7DQo+ID4gPiArK8KgwqDCoCB9DQo+ID4gPiArKyNlbmRpZg0KPiA+ ID4gK8KgwqDCoMKgIHBhcnNlci0+bV9ldmVudEVuZFB0ciA9IG5leHQ7DQo+ID4gPiArwqDCoMKg wqAgc3dpdGNoICh0b2spIHsNCj4gPiA+ICvCoMKgwqDCoCAvKiByZXBvcnQgcGFydGlhbCBsaW5l YnJlYWsgLSBpdCBtaWdodCBiZSB0aGUgbGFzdCB0b2tlbiAqLw0KPiA+ID4gK0BAIC01MTY0LDYg KzUzOTUsOSBAQCBwcm9jZXNzSW50ZXJuYWxFbnRpdHkoWE1MX1BhcnNlciBwYXJzZXIsDQo+ID4g PiBFTlRJVFkNCj4gPiA+ICplbnRpdHksIFhNTF9Cb29sIGJldHdlZW5EZWNsKSB7DQo+ID4gPiAr wqDCoMKgwqDCoMKgIHJldHVybiBYTUxfRVJST1JfTk9fTUVNT1JZOw0KPiA+ID4gK8KgwqAgfQ0K PiA+ID4gK8KgwqAgZW50aXR5LT5vcGVuID0gWE1MX1RSVUU7DQo+ID4gPiArKyNpZmRlZiBYTUxf RFREDQo+ID4gPiArK8KgIGVudGl0eVRyYWNraW5nT25PcGVuKHBhcnNlciwgZW50aXR5LCBfX0xJ TkVfXyk7DQo+ID4gPiArKyNlbmRpZg0KPiA+ID4gK8KgwqAgZW50aXR5LT5wcm9jZXNzZWQgPSAw Ow0KPiA+ID4gK8KgwqAgb3BlbkVudGl0eS0+bmV4dCA9IHBhcnNlci0+bV9vcGVuSW50ZXJuYWxF bnRpdGllczsNCj4gPiA+ICvCoMKgIHBhcnNlci0+bV9vcGVuSW50ZXJuYWxFbnRpdGllcyA9IG9w ZW5FbnRpdHk7DQo+ID4gPiArQEAgLTUxODIsMTcgKzU0MTYsMjIgQEAgcHJvY2Vzc0ludGVybmFs RW50aXR5KFhNTF9QYXJzZXIgcGFyc2VyLA0KPiA+ID4gRU5USVRZICplbnRpdHksIFhNTF9Cb29s IGJldHdlZW5EZWNsKSB7DQo+ID4gPiArwqDCoMKgwqAgaW50IHRvaw0KPiA+ID4gK8KgwqDCoMKg wqDCoMKgwqAgPSBYbWxQcm9sb2dUb2socGFyc2VyLT5tX2ludGVybmFsRW5jb2RpbmcsIHRleHRT dGFydCwNCj4gPiA+IHRleHRFbmQsICZuZXh0KTsNCj4gPiA+ICvCoMKgwqDCoCByZXN1bHQgPSBk b1Byb2xvZyhwYXJzZXIsIHBhcnNlci0+bV9pbnRlcm5hbEVuY29kaW5nLA0KPiA+ID4gdGV4dFN0 YXJ0LA0KPiA+ID4gdGV4dEVuZCwNCj4gPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHRvaywgbmV4dCwgJm5leHQsIFhNTF9GQUxTRSwgWE1MX0ZBTFNFKTsN Cj4gPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHRvaywg bmV4dCwgJm5leHQsIFhNTF9GQUxTRSwgWE1MX0ZBTFNFLA0KPiA+ID4gKyvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgWE1MX0FDQ09VTlRfRU5USVRZX0VYUEFOU0lP Tik7DQo+ID4gPiArwqDCoCB9IGVsc2UNCj4gPiA+ICsgI2VuZGlmIC8qIFhNTF9EVEQgKi8NCj4g PiA+ICvCoMKgwqDCoCByZXN1bHQgPSBkb0NvbnRlbnQocGFyc2VyLCBwYXJzZXItPm1fdGFnTGV2 ZWwsIHBhcnNlci0NCj4gPiA+ID4gbV9pbnRlcm5hbEVuY29kaW5nLA0KPiA+ID4gKy3CoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB0ZXh0U3RhcnQsIHRleHRFbmQs ICZuZXh0LCBYTUxfRkFMU0UpOw0KPiA+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCB0ZXh0U3RhcnQsIHRleHRFbmQsICZuZXh0LCBYTUxfRkFMU0UsDQo+ ID4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFhNTF9B Q0NPVU5UX0VOVElUWV9FWFBBTlNJT04pOw0KPiA+ID4gKw0KPiA+ID4gK8KgwqAgaWYgKHJlc3Vs dCA9PSBYTUxfRVJST1JfTk9ORSkgew0KPiA+ID4gK8KgwqDCoMKgIGlmICh0ZXh0RW5kICE9IG5l eHQgJiYgcGFyc2VyLT5tX3BhcnNpbmdTdGF0dXMucGFyc2luZyA9PQ0KPiA+ID4gWE1MX1NVU1BF TkRFRCkgew0KPiA+ID4gK8KgwqDCoMKgwqDCoCBlbnRpdHktPnByb2Nlc3NlZCA9IChpbnQpKG5l eHQgLSB0ZXh0U3RhcnQpOw0KPiA+ID4gK8KgwqDCoMKgwqDCoCBwYXJzZXItPm1fcHJvY2Vzc29y ID0gaW50ZXJuYWxFbnRpdHlQcm9jZXNzb3I7DQo+ID4gPiArwqDCoMKgwqAgfSBlbHNlIHsNCj4g PiA+ICsrI2lmZGVmIFhNTF9EVEQNCj4gPiA+ICsrwqDCoMKgwqDCoCBlbnRpdHlUcmFja2luZ09u Q2xvc2UocGFyc2VyLCBlbnRpdHksIF9fTElORV9fKTsNCj4gPiA+ICsrI2VuZGlmIC8qIFhNTF9E VEQgKi8NCj4gPiA+ICvCoMKgwqDCoMKgwqAgZW50aXR5LT5vcGVuID0gWE1MX0ZBTFNFOw0KPiA+ ID4gK8KgwqDCoMKgwqDCoCBwYXJzZXItPm1fb3BlbkludGVybmFsRW50aXRpZXMgPSBvcGVuRW50 aXR5LT5uZXh0Ow0KPiA+ID4gK8KgwqDCoMKgwqDCoCAvKiBwdXQgb3BlbkVudGl0eSBiYWNrIGlu IGxpc3Qgb2YgZnJlZSBpbnN0YW5jZXMgKi8NCj4gPiA+ICtAQCAtNTIyNSwxMiArNTQ2NCwxMyBA QCBpbnRlcm5hbEVudGl0eVByb2Nlc3NvcihYTUxfUGFyc2VyIHBhcnNlciwNCj4gPiA+IGNvbnN0 IGNoYXIgKnMsIGNvbnN0IGNoYXIgKmVuZCwNCj4gPiA+ICvCoMKgwqDCoCBpbnQgdG9rDQo+ID4g PiArwqDCoMKgwqDCoMKgwqDCoCA9IFhtbFByb2xvZ1RvayhwYXJzZXItPm1faW50ZXJuYWxFbmNv ZGluZywgdGV4dFN0YXJ0LA0KPiA+ID4gdGV4dEVuZCwgJm5leHQpOw0KPiA+ID4gK8KgwqDCoMKg IHJlc3VsdCA9IGRvUHJvbG9nKHBhcnNlciwgcGFyc2VyLT5tX2ludGVybmFsRW5jb2RpbmcsDQo+ ID4gPiB0ZXh0U3RhcnQsDQo+ID4gPiB0ZXh0RW5kLA0KPiA+ID4gKy3CoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdG9rLCBuZXh0LCAmbmV4dCwgWE1MX0ZBTFNFLCBY TUxfVFJVRSk7DQo+ID4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCB0b2ssIG5leHQsICZuZXh0LCBYTUxfRkFMU0UsIFhNTF9UUlVFLA0KPiA+ID4gKyvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgWE1MX0FDQ09VTlRfRU5USVRZ X0VYUEFOU0lPTik7DQo+ID4gPiArwqDCoCB9IGVsc2UNCj4gPiA+ICsgI2VuZGlmIC8qIFhNTF9E VEQgKi8NCj4gPiA+ICvCoMKgwqDCoCByZXN1bHQgPSBkb0NvbnRlbnQocGFyc2VyLCBvcGVuRW50 aXR5LT5zdGFydFRhZ0xldmVsLA0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgcGFyc2VyLT5tX2ludGVybmFsRW5jb2RpbmcsIHRleHRTdGFydCwN Cj4gPiA+IHRleHRFbmQsICZuZXh0LA0KPiA+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBYTUxfRkFMU0UpOw0KPiA+ID4gKyvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBYTUxfRkFMU0UsIFhNTF9BQ0NPVU5UX0VOVElU WV9FWFBBTlNJT04pOw0KPiA+ID4gKw0KPiA+ID4gK8KgwqAgaWYgKHJlc3VsdCAhPSBYTUxfRVJS T1JfTk9ORSkNCj4gPiA+ICvCoMKgwqDCoCByZXR1cm4gcmVzdWx0Ow0KPiA+ID4gK0BAIC01MjM5 LDYgKzU0NzksOSBAQCBpbnRlcm5hbEVudGl0eVByb2Nlc3NvcihYTUxfUGFyc2VyIHBhcnNlciwN Cj4gPiA+IGNvbnN0DQo+ID4gPiBjaGFyICpzLCBjb25zdCBjaGFyICplbmQsDQo+ID4gPiArwqDC oMKgwqAgZW50aXR5LT5wcm9jZXNzZWQgPSAoaW50KShuZXh0IC0gKGNoYXIgKillbnRpdHktPnRl eHRQdHIpOw0KPiA+ID4gK8KgwqDCoMKgIHJldHVybiByZXN1bHQ7DQo+ID4gPiArwqDCoCB9IGVs c2Ugew0KPiA+ID4gKysjaWZkZWYgWE1MX0RURA0KPiA+ID4gKyvCoMKgwqAgZW50aXR5VHJhY2tp bmdPbkNsb3NlKHBhcnNlciwgZW50aXR5LCBfX0xJTkVfXyk7DQo+ID4gPiArKyNlbmRpZg0KPiA+ ID4gK8KgwqDCoMKgIGVudGl0eS0+b3BlbiA9IFhNTF9GQUxTRTsNCj4gPiA+ICvCoMKgwqDCoCBw YXJzZXItPm1fb3BlbkludGVybmFsRW50aXRpZXMgPSBvcGVuRW50aXR5LT5uZXh0Ow0KPiA+ID4g K8KgwqDCoMKgIC8qIHB1dCBvcGVuRW50aXR5IGJhY2sgaW4gbGlzdCBvZiBmcmVlIGluc3RhbmNl cyAqLw0KPiA+ID4gK0BAIC01MjUyLDcgKzU0OTUsOCBAQCBpbnRlcm5hbEVudGl0eVByb2Nlc3Nv cihYTUxfUGFyc2VyIHBhcnNlciwNCj4gPiA+IGNvbnN0DQo+ID4gPiBjaGFyICpzLCBjb25zdCBj aGFyICplbmQsDQo+ID4gPiArwqDCoMKgwqAgcGFyc2VyLT5tX3Byb2Nlc3NvciA9IHByb2xvZ1By b2Nlc3NvcjsNCj4gPiA+ICvCoMKgwqDCoCB0b2sgPSBYbWxQcm9sb2dUb2socGFyc2VyLT5tX2Vu Y29kaW5nLCBzLCBlbmQsICZuZXh0KTsNCj4gPiA+ICvCoMKgwqDCoCByZXR1cm4gZG9Qcm9sb2co cGFyc2VyLCBwYXJzZXItPm1fZW5jb2RpbmcsIHMsIGVuZCwgdG9rLA0KPiA+ID4gbmV4dCwNCj4g PiA+IG5leHRQdHIsDQo+ID4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIChYTUxfQm9vbCkhIHBhcnNlci0NCj4gPiA+ID4gbV9wYXJzaW5nU3RhdHVzLmZpbmFsQnVm ZmVyLA0KPiA+ID4gWE1MX1RSVUUpOw0KPiA+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCAoWE1MX0Jvb2wpISBwYXJzZXItDQo+ID4gPiA+IG1fcGFyc2luZ1N0YXR1 cy5maW5hbEJ1ZmZlciwNCj4gPiA+IFhNTF9UUlVFLA0KPiA+ID4gKyvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBYTUxfQUNDT1VOVF9ESVJFQ1QpOw0KPiA+ID4gK8KgwqAg fSBlbHNlDQo+ID4gPiArICNlbmRpZiAvKiBYTUxfRFREICovDQo+ID4gPiArwqDCoCB7DQo+ID4g PiArQEAgLTUyNjAsNyArNTUwNCw4IEBAIGludGVybmFsRW50aXR5UHJvY2Vzc29yKFhNTF9QYXJz ZXIgcGFyc2VyLA0KPiA+ID4gY29uc3QNCj4gPiA+IGNoYXIgKnMsIGNvbnN0IGNoYXIgKmVuZCwN Cj4gPiA+ICvCoMKgwqDCoCAvKiBzZWUgZXh0ZXJuYWxFbnRpdHlDb250ZW50UHJvY2Vzc29yIHZz IGNvbnRlbnRQcm9jZXNzb3IgKi8NCj4gPiA+ICvCoMKgwqDCoCByZXR1cm4gZG9Db250ZW50KHBh cnNlciwgcGFyc2VyLT5tX3BhcmVudFBhcnNlciA/IDEgOiAwLA0KPiA+ID4gcGFyc2VyLQ0KPiA+ ID4gPiBtX2VuY29kaW5nLA0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBzLCBlbmQsIG5leHRQdHIsDQo+ID4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgKFhNTF9Cb29sKSEgcGFyc2VyLQ0KPiA+ID4gPiBtX3BhcnNp bmdTdGF0dXMuZmluYWxCdWZmZXIpOw0KPiA+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIChYTUxfQm9vbCkhIHBhcnNlci0NCj4gPiA+ID4gbV9wYXJzaW5nU3Rh dHVzLmZpbmFsQnVmZmVyLA0KPiA+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIFhNTF9BQ0NPVU5UX0RJUkVDVCk7DQo+ID4gPiArwqDCoCB9DQo+ID4gPiArIH0N Cj4gPiA+ICsNCj4gPiA+ICtAQCAtNTI3NSw5ICs1NTIwLDEwIEBAIGVycm9yUHJvY2Vzc29yKFhN TF9QYXJzZXIgcGFyc2VyLCBjb25zdA0KPiA+ID4gY2hhcg0KPiA+ID4gKnMsIGNvbnN0IGNoYXIg KmVuZCwNCj4gPiA+ICsNCj4gPiA+ICsgc3RhdGljIGVudW0gWE1MX0Vycm9yDQo+ID4gPiArIHN0 b3JlQXR0cmlidXRlVmFsdWUoWE1MX1BhcnNlciBwYXJzZXIsIGNvbnN0IEVOQ09ESU5HICplbmMs DQo+ID4gPiBYTUxfQm9vbA0KPiA+ID4gaXNDZGF0YSwNCj4gPiA+ICstwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29uc3QgY2hhciAqcHRyLCBjb25zdCBjaGFyICplbmQs IFNUUklOR19QT09MDQo+ID4gPiAqcG9vbCkgew0KPiA+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBjb25zdCBjaGFyICpwdHIsIGNvbnN0IGNoYXIgKmVuZCwgU1RS SU5HX1BPT0wNCj4gPiA+ICpwb29sLA0KPiA+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBlbnVtIFhNTF9BY2NvdW50IGFjY291bnQpIHsNCj4gPiA+ICvCoMKgIGVu dW0gWE1MX0Vycm9yIHJlc3VsdA0KPiA+ID4gKy3CoMKgwqDCoMKgID0gYXBwZW5kQXR0cmlidXRl VmFsdWUocGFyc2VyLCBlbmMsIGlzQ2RhdGEsIHB0ciwgZW5kLA0KPiA+ID4gcG9vbCk7DQo+ID4g PiArK8KgwqDCoMKgwqAgPSBhcHBlbmRBdHRyaWJ1dGVWYWx1ZShwYXJzZXIsIGVuYywgaXNDZGF0 YSwgcHRyLCBlbmQsDQo+ID4gPiBwb29sLA0KPiA+ID4gYWNjb3VudCk7DQo+ID4gPiArwqDCoCBp ZiAocmVzdWx0KQ0KPiA+ID4gK8KgwqDCoMKgIHJldHVybiByZXN1bHQ7DQo+ID4gPiArwqDCoCBp ZiAoISBpc0NkYXRhICYmIHBvb2xMZW5ndGgocG9vbCkgJiYgcG9vbExhc3RDaGFyKHBvb2wpID09 DQo+ID4gPiAweDIwKQ0KPiA+ID4gK0BAIC01Mjg5LDExICs1NTM1LDIyIEBAIHN0b3JlQXR0cmli dXRlVmFsdWUoWE1MX1BhcnNlciBwYXJzZXIsDQo+ID4gPiBjb25zdA0KPiA+ID4gRU5DT0RJTkcg KmVuYywgWE1MX0Jvb2wgaXNDZGF0YSwNCj4gPiA+ICsNCj4gPiA+ICsgc3RhdGljIGVudW0gWE1M X0Vycm9yDQo+ID4gPiArIGFwcGVuZEF0dHJpYnV0ZVZhbHVlKFhNTF9QYXJzZXIgcGFyc2VyLCBj b25zdCBFTkNPRElORyAqZW5jLA0KPiA+ID4gWE1MX0Jvb2wNCj4gPiA+IGlzQ2RhdGEsDQo+ID4g PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29uc3QgY2hhciAq cHRyLCBjb25zdCBjaGFyICplbmQsDQo+ID4gPiBTVFJJTkdfUE9PTA0KPiA+ID4gKnBvb2wpIHsN Cj4gPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb25zdCBj aGFyICpwdHIsIGNvbnN0IGNoYXIgKmVuZCwNCj4gPiA+IFNUUklOR19QT09MDQo+ID4gPiAqcG9v bCwNCj4gPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBlbnVt IFhNTF9BY2NvdW50IGFjY291bnQpIHsNCj4gPiA+ICvCoMKgIERURCAqY29uc3QgZHRkID0gcGFy c2VyLT5tX2R0ZDsgLyogc2F2ZSBvbmUgbGV2ZWwgb2YNCj4gPiA+IGluZGlyZWN0aW9uDQo+ID4g PiAqLw0KPiA+ID4gKysjaWZuZGVmIFhNTF9EVEQNCj4gPiA+ICsrwqAgVU5VU0VEX1AoYWNjb3Vu dCk7DQo+ID4gPiArKyNlbmRpZg0KPiA+ID4gKysNCj4gPiA+ICvCoMKgIGZvciAoOzspIHsNCj4g PiA+ICvCoMKgwqDCoCBjb25zdCBjaGFyICpuZXh0Ow0KPiA+ID4gK8KgwqDCoMKgIGludCB0b2sg PSBYbWxBdHRyaWJ1dGVWYWx1ZVRvayhlbmMsIHB0ciwgZW5kLCAmbmV4dCk7DQo+ID4gPiArKyNp ZmRlZiBYTUxfRFREDQo+ID4gPiArK8KgwqDCoCBpZiAoISBhY2NvdW50aW5nRGlmZlRvbGVyYXRl ZChwYXJzZXIsIHRvaywgcHRyLCBuZXh0LA0KPiA+ID4gX19MSU5FX18sDQo+ID4gPiBhY2NvdW50 KSkgew0KPiA+ID4gKyvCoMKgwqDCoMKgIGFjY291bnRpbmdPbkFib3J0KHBhcnNlcik7DQo+ID4g PiArK8KgwqDCoMKgwqAgcmV0dXJuIFhNTF9FUlJPUl9BTVBMSUZJQ0FUSU9OX0xJTUlUX0JSRUFD SDsNCj4gPiA+ICsrwqDCoMKgIH0NCj4gPiA+ICsrI2VuZGlmDQo+ID4gPiArwqDCoMKgwqAgc3dp dGNoICh0b2spIHsNCj4gPiA+ICvCoMKgwqDCoCBjYXNlIFhNTF9UT0tfTk9ORToNCj4gPiA+ICvC oMKgwqDCoMKgwqAgcmV0dXJuIFhNTF9FUlJPUl9OT05FOw0KPiA+ID4gK0BAIC01MzUzLDYgKzU2 MTAsMTQgQEAgYXBwZW5kQXR0cmlidXRlVmFsdWUoWE1MX1BhcnNlciBwYXJzZXIsDQo+ID4gPiBj b25zdA0KPiA+ID4gRU5DT0RJTkcgKmVuYywgWE1MX0Jvb2wgaXNDZGF0YSwNCj4gPiA+ICvCoMKg wqDCoMKgwqAgWE1MX0NoYXIgY2ggPSAoWE1MX0NoYXIpWG1sUHJlZGVmaW5lZEVudGl0eU5hbWUo DQo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgZW5jLCBwdHIgKyBlbmMtPm1pbkJ5dGVzUGVy Q2hhciwgbmV4dCAtIGVuYy0NCj4gPiA+ID4gbWluQnl0ZXNQZXJDaGFyKTsNCj4gPiA+ICvCoMKg wqDCoMKgwqAgaWYgKGNoKSB7DQo+ID4gPiArKyNpZmRlZiBYTUxfRFREDQo+ID4gPiArK8KgwqDC oMKgwqDCoMKgIC8qIE5PVEU6IFdlIGFyZSByZXBsYWNpbmcgNC02IGNoYXJhY3RlcnMgb3JpZ2lu YWwgaW5wdXQNCj4gPiA+IGZvcg0KPiA+ID4gMQ0KPiA+ID4gY2hhcmFjdGVyDQo+ID4gPiArK8Kg wqDCoMKgwqDCoMKgwqAgKsKgwqDCoMKgwqDCoCBzbyB0aGVyZSBpcyBubyBhbXBsaWZpY2F0aW9u IGFuZCBoZW5jZSByZWNvcmRpbmcNCj4gPiA+IHdpdGhvdXQNCj4gPiA+ICsrwqDCoMKgwqDCoMKg wqDCoCAqwqDCoMKgwqDCoMKgIHByb3RlY3Rpb24uICovDQo+ID4gPiArK8KgwqDCoMKgwqDCoMKg IGFjY291bnRpbmdEaWZmVG9sZXJhdGVkKHBhcnNlciwgdG9rLCAoY2hhciAqKSZjaCwNCj4gPiA+ ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgKChjaGFyICopJmNoKSArIHNpemVvZihYTUxfQ2hhciksDQo+ID4gPiBfX0xJTkVf XywNCj4gPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgWE1MX0FDQ09VTlRfRU5USVRZX0VYUEFOU0lPTik7DQo+ID4gPiAr KyNlbmRpZiAvKiBYTUxfRFREICovDQo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoCBpZiAoISBwb29s QXBwZW5kQ2hhcihwb29sLCBjaCkpDQo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJu IFhNTF9FUlJPUl9OT19NRU1PUlk7DQo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoCBicmVhazsNCj4g PiA+ICtAQCAtNTQzMCw5ICs1Njk1LDE2IEBAIGFwcGVuZEF0dHJpYnV0ZVZhbHVlKFhNTF9QYXJz ZXIgcGFyc2VyLA0KPiA+ID4gY29uc3QNCj4gPiA+IEVOQ09ESU5HICplbmMsIFhNTF9Cb29sIGlz Q2RhdGEsDQo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoCBlbnVtIFhNTF9FcnJvciByZXN1bHQ7DQo+ ID4gPiArwqDCoMKgwqDCoMKgwqDCoCBjb25zdCBYTUxfQ2hhciAqdGV4dEVuZCA9IGVudGl0eS0+ dGV4dFB0ciArIGVudGl0eS0NCj4gPiA+ID4gdGV4dExlbjsNCj4gPiA+ICvCoMKgwqDCoMKgwqDC oMKgIGVudGl0eS0+b3BlbiA9IFhNTF9UUlVFOw0KPiA+ID4gKysjaWZkZWYgWE1MX0RURA0KPiA+ ID4gKyvCoMKgwqDCoMKgwqDCoCBlbnRpdHlUcmFja2luZ09uT3BlbihwYXJzZXIsIGVudGl0eSwg X19MSU5FX18pOw0KPiA+ID4gKysjZW5kaWYNCj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgIHJlc3Vs dCA9IGFwcGVuZEF0dHJpYnV0ZVZhbHVlKHBhcnNlciwgcGFyc2VyLQ0KPiA+ID4gPiBtX2ludGVy bmFsRW5jb2RpbmcsDQo+ID4gPiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlzQ2RhdGEsIChjaGFyICop ZW50aXR5LQ0KPiA+ID4gPiB0ZXh0UHRyLA0KPiA+ID4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAoY2hh ciAqKXRleHRFbmQsIHBvb2wpOw0KPiA+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpc0NkYXRhLCAo Y29uc3QgY2hhcg0KPiA+ID4gKillbnRpdHktDQo+ID4gPiA+IHRleHRQdHIsDQo+ID4gPiArK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIChjb25zdCBjaGFyICopdGV4dEVuZCwNCj4gPiA+IHBvb2wsDQo+ID4g PiArKw0KPiA+ID4gWE1MX0FDQ09VTlRfRU5USVRZX0VYUEFOU0lPTik7DQo+ID4gPiArKyNpZmRl ZiBYTUxfRFREDQo+ID4gPiArK8KgwqDCoMKgwqDCoMKgIGVudGl0eVRyYWNraW5nT25DbG9zZShw YXJzZXIsIGVudGl0eSwgX19MSU5FX18pOw0KPiA+ID4gKysjZW5kaWYNCj4gPiA+ICvCoMKgwqDC oMKgwqDCoMKgIGVudGl0eS0+b3BlbiA9IFhNTF9GQUxTRTsNCj4gPiA+ICvCoMKgwqDCoMKgwqDC oMKgIGlmIChyZXN1bHQpDQo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIHJlc3Vs dDsNCj4gPiA+ICtAQCAtNTQ2MiwxMyArNTczNCwxNiBAQCBhcHBlbmRBdHRyaWJ1dGVWYWx1ZShY TUxfUGFyc2VyIHBhcnNlciwNCj4gPiA+IGNvbnN0DQo+ID4gPiBFTkNPRElORyAqZW5jLCBYTUxf Qm9vbCBpc0NkYXRhLA0KPiA+ID4gKw0KPiA+ID4gKyBzdGF0aWMgZW51bSBYTUxfRXJyb3INCj4g PiA+ICsgc3RvcmVFbnRpdHlWYWx1ZShYTUxfUGFyc2VyIHBhcnNlciwgY29uc3QgRU5DT0RJTkcg KmVuYywNCj4gPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29uc3QgY2hh ciAqZW50aXR5VGV4dFB0ciwgY29uc3QgY2hhcg0KPiA+ID4gKmVudGl0eVRleHRFbmQpIHsNCj4g PiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29uc3QgY2hhciAqZW50aXR5 VGV4dFB0ciwgY29uc3QgY2hhcg0KPiA+ID4gKmVudGl0eVRleHRFbmQsDQo+ID4gPiArK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGVudW0gWE1MX0FjY291bnQgYWNjb3VudCkgew0K PiA+ID4gK8KgwqAgRFREICpjb25zdCBkdGQgPSBwYXJzZXItPm1fZHRkOyAvKiBzYXZlIG9uZSBs ZXZlbCBvZg0KPiA+ID4gaW5kaXJlY3Rpb24NCj4gPiA+ICovDQo+ID4gPiArwqDCoCBTVFJJTkdf UE9PTCAqcG9vbCA9ICYoZHRkLT5lbnRpdHlWYWx1ZVBvb2wpOw0KPiA+ID4gK8KgwqAgZW51bSBY TUxfRXJyb3IgcmVzdWx0ID0gWE1MX0VSUk9SX05PTkU7DQo+ID4gPiArICNpZmRlZiBYTUxfRFRE DQo+ID4gPiArwqDCoCBpbnQgb2xkSW5FbnRpdHlWYWx1ZSA9IHBhcnNlci0+bV9wcm9sb2dTdGF0 ZS5pbkVudGl0eVZhbHVlOw0KPiA+ID4gK8KgwqAgcGFyc2VyLT5tX3Byb2xvZ1N0YXRlLmluRW50 aXR5VmFsdWUgPSAxOw0KPiA+ID4gKysjZWxzZQ0KPiA+ID4gKyvCoCBVTlVTRURfUChhY2NvdW50 KTsNCj4gPiA+ICsgI2VuZGlmIC8qIFhNTF9EVEQgKi8NCj4gPiA+ICvCoMKgIC8qIG5ldmVyIHJl dHVybiBOdWxsIGZvciB0aGUgdmFsdWUgYXJndW1lbnQgaW4NCj4gPiA+IEVudGl0eURlY2xIYW5k bGVyLA0KPiA+ID4gK8KgwqDCoMKgwqAgc2luY2UgdGhpcyB3b3VsZCBpbmRpY2F0ZSBhbiBleHRl cm5hbCBlbnRpdHk7IHRoZXJlZm9yZSB3ZQ0KPiA+ID4gK0BAIC01NDgxLDYgKzU3NTYsMTYgQEAg c3RvcmVFbnRpdHlWYWx1ZShYTUxfUGFyc2VyIHBhcnNlciwgY29uc3QNCj4gPiA+IEVOQ09ESU5H ICplbmMsDQo+ID4gPiArwqDCoCBmb3IgKDs7KSB7DQo+ID4gPiArwqDCoMKgwqAgY29uc3QgY2hh ciAqbmV4dDsNCj4gPiA+ICvCoMKgwqDCoCBpbnQgdG9rID0gWG1sRW50aXR5VmFsdWVUb2soZW5j LCBlbnRpdHlUZXh0UHRyLA0KPiA+ID4gZW50aXR5VGV4dEVuZCwNCj4gPiA+ICZuZXh0KTsNCj4g PiA+ICsrDQo+ID4gPiArKyNpZmRlZiBYTUxfRFREDQo+ID4gPiArK8KgwqDCoCBpZiAoISBhY2Nv dW50aW5nRGlmZlRvbGVyYXRlZChwYXJzZXIsIHRvaywgZW50aXR5VGV4dFB0ciwNCj4gPiA+IG5l eHQsDQo+ID4gPiBfX0xJTkVfXywNCj4gPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGFjY291bnQpKSB7DQo+ID4g PiArK8KgwqDCoMKgwqAgYWNjb3VudGluZ09uQWJvcnQocGFyc2VyKTsNCj4gPiA+ICsrwqDCoMKg wqDCoCByZXN1bHQgPSBYTUxfRVJST1JfQU1QTElGSUNBVElPTl9MSU1JVF9CUkVBQ0g7DQo+ID4g PiArK8KgwqDCoMKgwqAgZ290byBlbmRFbnRpdHlWYWx1ZTsNCj4gPiA+ICsrwqDCoMKgIH0NCj4g PiA+ICsrI2VuZGlmDQo+ID4gPiArKw0KPiA+ID4gK8KgwqDCoMKgIHN3aXRjaCAodG9rKSB7DQo+ ID4gPiArwqDCoMKgwqAgY2FzZSBYTUxfVE9LX1BBUkFNX0VOVElUWV9SRUY6DQo+ID4gPiArICNp ZmRlZiBYTUxfRFREDQo+ID4gPiArQEAgLTU1MTYsMTMgKzU4MDEsMTYgQEAgc3RvcmVFbnRpdHlW YWx1ZShYTUxfUGFyc2VyIHBhcnNlciwgY29uc3QNCj4gPiA+IEVOQ09ESU5HICplbmMsDQo+ID4g PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKHBhcnNlci0+bV9leHRlcm5hbEVudGl0eVJlZkhh bmRsZXIpIHsNCj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZHRkLT5wYXJhbUVudGl0 eVJlYWQgPSBYTUxfRkFMU0U7DQo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGVudGl0 eS0+b3BlbiA9IFhNTF9UUlVFOw0KPiA+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGVudGl0 eVRyYWNraW5nT25PcGVuKHBhcnNlciwgZW50aXR5LCBfX0xJTkVfXyk7DQo+ID4gPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIGlmICghIHBhcnNlci0+bV9leHRlcm5hbEVudGl0eVJlZkhhbmRs ZXIoDQo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwYXJz ZXItPm1fZXh0ZXJuYWxFbnRpdHlSZWZIYW5kbGVyQXJnLCAwLA0KPiA+ID4gZW50aXR5LQ0KPiA+ ID4gPiBiYXNlLA0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgZW50aXR5LT5zeXN0ZW1JZCwgZW50aXR5LT5wdWJsaWNJZCkpIHsNCj4gPiA+ICsrwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgZW50aXR5VHJhY2tpbmdPbkNsb3NlKHBhcnNlciwgZW50aXR5 LCBfX0xJTkVfXyk7DQo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBlbnRpdHkt Pm9wZW4gPSBYTUxfRkFMU0U7DQo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBy ZXN1bHQgPSBYTUxfRVJST1JfRVhURVJOQUxfRU5USVRZX0hBTkRMSU5HOw0KPiA+ID4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZ290byBlbmRFbnRpdHlWYWx1ZTsNCj4gPiA+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgfQ0KPiA+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGVu dGl0eVRyYWNraW5nT25DbG9zZShwYXJzZXIsIGVudGl0eSwgX19MSU5FX18pOw0KPiA+ID4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBlbnRpdHktPm9wZW4gPSBYTUxfRkFMU0U7DQo+ID4gPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmICghIGR0ZC0+cGFyYW1FbnRpdHlSZWFkKQ0KPiA+ ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZHRkLT5rZWVwUHJvY2Vzc2luZyA9IGR0 ZC0+c3RhbmRhbG9uZTsNCj4gPiA+ICtAQCAtNTUzMCw5ICs1ODE4LDEyIEBAIHN0b3JlRW50aXR5 VmFsdWUoWE1MX1BhcnNlciBwYXJzZXIsIGNvbnN0DQo+ID4gPiBFTkNPRElORyAqZW5jLA0KPiA+ ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkdGQtPmtlZXBQcm9jZXNzaW5nID0gZHRkLT5z dGFuZGFsb25lOw0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqAgfSBlbHNlIHsNCj4gPiA+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoCBlbnRpdHktPm9wZW4gPSBYTUxfVFJVRTsNCj4gPiA+ICsrwqDCoMKg wqDCoMKgwqDCoMKgIGVudGl0eVRyYWNraW5nT25PcGVuKHBhcnNlciwgZW50aXR5LCBfX0xJTkVf Xyk7DQo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmVzdWx0ID0gc3RvcmVFbnRpdHlWYWx1 ZSgNCj4gPiA+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcGFyc2VyLCBwYXJzZXItPm1f aW50ZXJuYWxFbmNvZGluZywgKGNoYXIgKillbnRpdHktDQo+ID4gPiA+IHRleHRQdHIsDQo+ID4g PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIChjaGFyICopKGVudGl0eS0+dGV4dFB0ciAr IGVudGl0eS0+dGV4dExlbikpOw0KPiA+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBw YXJzZXIsIHBhcnNlci0+bV9pbnRlcm5hbEVuY29kaW5nLCAoY29uc3QgY2hhcg0KPiA+ID4gKill bnRpdHktPnRleHRQdHIsDQo+ID4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIChjb25z dCBjaGFyICopKGVudGl0eS0+dGV4dFB0ciArIGVudGl0eS0+dGV4dExlbiksDQo+ID4gPiArK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFhNTF9BQ0NPVU5UX0VOVElUWV9FWFBBTlNJT04pOw0K PiA+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqAgZW50aXR5VHJhY2tpbmdPbkNsb3NlKHBhcnNlciwg ZW50aXR5LCBfX0xJTkVfXyk7DQo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgZW50aXR5LT5v cGVuID0gWE1MX0ZBTFNFOw0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChyZXN1bHQp DQo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGdvdG8gZW5kRW50aXR5VmFsdWU7DQo+ ID4gPiArQEAgLTY4OTMsMyArNzE4NCw3NDEgQEAgY29weVN0cmluZyhjb25zdCBYTUxfQ2hhciAq cywgY29uc3QNCj4gPiA+IFhNTF9NZW1vcnlfSGFuZGxpbmdfU3VpdGUgKm1lbXN1aXRlKSB7DQo+ ID4gPiArwqDCoCBtZW1jcHkocmVzdWx0LCBzLCBjaGFyc1JlcXVpcmVkICogc2l6ZW9mKFhNTF9D aGFyKSk7DQo+ID4gPiArwqDCoCByZXR1cm4gcmVzdWx0Ow0KPiA+ID4gKyB9DQo+ID4gPiArKw0K PiA+ID4gKysjaWZkZWYgWE1MX0RURA0KPiA+ID4gKysNCj4gPiA+ICsrc3RhdGljIGZsb2F0DQo+ ID4gPiArK2FjY291bnRpbmdHZXRDdXJyZW50QW1wbGlmaWNhdGlvbihYTUxfUGFyc2VyIHJvb3RQ YXJzZXIpIHsNCj4gPiA+ICsrwqAgY29uc3QgWG1sQmlnQ291bnQgY291bnRCeXRlc091dHB1dA0K PiA+ID4gKyvCoMKgwqDCoMKgID0gcm9vdFBhcnNlci0+bV9hY2NvdW50aW5nLmNvdW50Qnl0ZXNE aXJlY3QNCj4gPiA+ICsrwqDCoMKgwqDCoMKgwqAgKyByb290UGFyc2VyLT5tX2FjY291bnRpbmcu Y291bnRCeXRlc0luZGlyZWN0Ow0KPiA+ID4gKyvCoCBjb25zdCBmbG9hdCBhbXBsaWZpY2F0aW9u RmFjdG9yDQo+ID4gPiArK8KgwqDCoMKgwqAgPSByb290UGFyc2VyLT5tX2FjY291bnRpbmcuY291 bnRCeXRlc0RpcmVjdA0KPiA+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgID8gKGNvdW50Qnl0 ZXNPdXRwdXQNCj4gPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvIChmbG9hdCko cm9vdFBhcnNlci0NCj4gPiA+ID4gbV9hY2NvdW50aW5nLmNvdW50Qnl0ZXNEaXJlY3QpKQ0KPiA+ ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDogMS4wZjsNCj4gPiA+ICsrwqAgYXNzZXJ0KCEg cm9vdFBhcnNlci0+bV9wYXJlbnRQYXJzZXIpOw0KPiA+ID4gKyvCoCByZXR1cm4gYW1wbGlmaWNh dGlvbkZhY3RvcjsNCj4gPiA+ICsrfQ0KPiA+ID4gKysNCj4gPiA+ICsrc3RhdGljIHZvaWQNCj4g PiA+ICsrYWNjb3VudGluZ1JlcG9ydFN0YXRzKFhNTF9QYXJzZXIgb3JpZ2luUGFyc2VyLCBjb25z dCBjaGFyDQo+ID4gPiAqZXBpbG9nKQ0KPiA+ID4gew0KPiA+ID4gKyvCoCBjb25zdCBYTUxfUGFy c2VyIHJvb3RQYXJzZXIgPSBnZXRSb290UGFyc2VyT2Yob3JpZ2luUGFyc2VyLA0KPiA+ID4gTlVM TCk7DQo+ID4gPiArK8KgIGFzc2VydCghIHJvb3RQYXJzZXItPm1fcGFyZW50UGFyc2VyKTsNCj4g PiA+ICsrDQo+ID4gPiArK8KgIGlmIChyb290UGFyc2VyLT5tX2FjY291bnRpbmcuZGVidWdMZXZl bCA8IDEpIHsNCj4gPiA+ICsrwqDCoMKgIHJldHVybjsNCj4gPiA+ICsrwqAgfQ0KPiA+ID4gKysN Cj4gPiA+ICsrwqAgY29uc3QgZmxvYXQgYW1wbGlmaWNhdGlvbkZhY3Rvcg0KPiA+ID4gKyvCoMKg wqDCoMKgID0gYWNjb3VudGluZ0dldEN1cnJlbnRBbXBsaWZpY2F0aW9uKHJvb3RQYXJzZXIpOw0K PiA+ID4gKyvCoCBmcHJpbnRmKHN0ZGVyciwNCj4gPiA+ICsrwqDCoMKgwqDCoMKgwqDCoMKgICJl eHBhdDogQWNjb3VudGluZyglcCk6IERpcmVjdCAiIEVYUEFUX0ZNVF9VTEwoDQo+ID4gPiArK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICIxMCIpICIsIGluZGlyZWN0ICIgRVhQQVRfRk1UX1VM TCgiMTAiKSAiLA0KPiA+ID4gYW1wbGlmaWNhdGlvbiAlOC4yZiVzIiwNCj4gPiA+ICsrwqDCoMKg wqDCoMKgwqDCoMKgICh2b2lkICopcm9vdFBhcnNlciwgcm9vdFBhcnNlci0NCj4gPiA+ID4gbV9h Y2NvdW50aW5nLmNvdW50Qnl0ZXNEaXJlY3QsDQo+ID4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoCBy b290UGFyc2VyLT5tX2FjY291bnRpbmcuY291bnRCeXRlc0luZGlyZWN0LA0KPiA+ID4gKyvCoMKg wqDCoMKgwqDCoMKgwqAgKGRvdWJsZSlhbXBsaWZpY2F0aW9uRmFjdG9yLCBlcGlsb2cpOw0KPiA+ ID4gKyt9DQo+ID4gPiArKw0KPiA+ID4gKytzdGF0aWMgdm9pZA0KPiA+ID4gKythY2NvdW50aW5n T25BYm9ydChYTUxfUGFyc2VyIG9yaWdpblBhcnNlcikgew0KPiA+ID4gKyvCoCBhY2NvdW50aW5n UmVwb3J0U3RhdHMob3JpZ2luUGFyc2VyLCAiIEFCT1JUSU5HXG4iKTsNCj4gPiA+ICsrfQ0KPiA+ ID4gKysNCj4gPiA+ICsrc3RhdGljIHZvaWQNCj4gPiA+ICsrYWNjb3VudGluZ1JlcG9ydERpZmYo WE1MX1BhcnNlciByb290UGFyc2VyLA0KPiA+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHVuc2lnbmVkIGludCBsZXZlbHNBd2F5RnJvbVJvb3RQYXJzZXIsIGNv bnN0DQo+ID4gPiBjaGFyICpiZWZvcmUsDQo+ID4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgY29uc3QgY2hhciAqYWZ0ZXIsIHB0cmRpZmZfdCBieXRlc01vcmUs IGludA0KPiA+ID4gc291cmNlX2xpbmUsDQo+ID4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgZW51bSBYTUxfQWNjb3VudCBhY2NvdW50KSB7DQo+ID4gPiArK8Kg IGFzc2VydCghIHJvb3RQYXJzZXItPm1fcGFyZW50UGFyc2VyKTsNCj4gPiA+ICsrDQo+ID4gPiAr K8KgIGZwcmludGYoc3RkZXJyLA0KPiA+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqAgIiAoKyIgRVhQ QVRfRk1UX1BUUkRJRkZfVCgiNiIpICIgYnl0ZXMgJXN8JWQsDQo+ID4gPiB4bWxwYXJzZS5jOiVk KSAlKnNcIiIsDQo+ID4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoCBieXRlc01vcmUsIChhY2NvdW50 ID09IFhNTF9BQ0NPVU5UX0RJUkVDVCkgPyAiRElSIiA6DQo+ID4gPiAiRVhQIiwNCj4gPiA+ICsr wqDCoMKgwqDCoMKgwqDCoMKgIGxldmVsc0F3YXlGcm9tUm9vdFBhcnNlciwgc291cmNlX2xpbmUs IDEwLCAiIik7DQo+ID4gPiArKw0KPiA+ID4gKyvCoCBjb25zdCBjaGFyIGVsbGlwaXNbXSA9ICJb Li5dIjsNCj4gPiA+ICsrwqAgY29uc3Qgc2l6ZV90IGVsbGlwc2lzTGVuZ3RoID0gc2l6ZW9mKGVs bGlwaXMpIC8qIGJlY2F1c2UNCj4gPiA+IGNvbXBpbGUtDQo+ID4gPiB0aW1lICovIC0gMTsNCj4g PiA+ICsrwqAgY29uc3QgdW5zaWduZWQgaW50IGNvbnRleHRMZW5ndGggPSAxMDsNCj4gPiA+ICsr DQo+ID4gPiArK8KgIC8qIE5vdGU6IFBlcmZvcm1hbmNlIGlzIG9mIG5vIGNvbmNlcm4gaGVyZSAq Lw0KPiA+ID4gKyvCoCBjb25zdCBjaGFyICp3YWxrZXIgPSBiZWZvcmU7DQo+ID4gPiArK8KgIGlm ICgocm9vdFBhcnNlci0+bV9hY2NvdW50aW5nLmRlYnVnTGV2ZWwgPj0gMykNCj4gPiA+ICsrwqDC oMKgwqDCoCB8fCAoYWZ0ZXIgLSBiZWZvcmUpDQo+ID4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCA8PSAocHRyZGlmZl90KShjb250ZXh0TGVuZ3RoICsgZWxsaXBzaXNMZW5ndGggKw0KPiA+ ID4gY29udGV4dExlbmd0aCkpIHsNCj4gPiA+ICsrwqDCoMKgIGZvciAoOyB3YWxrZXIgPCBhZnRl cjsgd2Fsa2VyKyspIHsNCj4gPiA+ICsrwqDCoMKgwqDCoCBmcHJpbnRmKHN0ZGVyciwgIiVzIiwg dW5zaWduZWRDaGFyVG9QcmludGFibGUod2Fsa2VyWzBdKSk7DQo+ID4gPiArK8KgwqDCoCB9DQo+ ID4gPiArK8KgIH0gZWxzZSB7DQo+ID4gPiArK8KgwqDCoCBmb3IgKDsgd2Fsa2VyIDwgYmVmb3Jl ICsgY29udGV4dExlbmd0aDsgd2Fsa2VyKyspIHsNCj4gPiA+ICsrwqDCoMKgwqDCoCBmcHJpbnRm KHN0ZGVyciwgIiVzIiwgdW5zaWduZWRDaGFyVG9QcmludGFibGUod2Fsa2VyWzBdKSk7DQo+ID4g PiArK8KgwqDCoCB9DQo+ID4gPiArK8KgwqDCoCBmcHJpbnRmKHN0ZGVyciwgZWxsaXBpcyk7DQo+ ID4gPiArK8KgwqDCoCB3YWxrZXIgPSBhZnRlciAtIGNvbnRleHRMZW5ndGg7DQo+ID4gPiArK8Kg wqDCoCBmb3IgKDsgd2Fsa2VyIDwgYWZ0ZXI7IHdhbGtlcisrKSB7DQo+ID4gPiArK8KgwqDCoMKg wqAgZnByaW50ZihzdGRlcnIsICIlcyIsIHVuc2lnbmVkQ2hhclRvUHJpbnRhYmxlKHdhbGtlclsw XSkpOw0KPiA+ID4gKyvCoMKgwqAgfQ0KPiA+ID4gKyvCoCB9DQo+ID4gPiArK8KgIGZwcmludGYo c3RkZXJyLCAiXCJcbiIpOw0KPiA+ID4gKyt9DQo+ID4gPiArKw0KPiA+ID4gKytzdGF0aWMgWE1M X0Jvb2wNCj4gPiA+ICsrYWNjb3VudGluZ0RpZmZUb2xlcmF0ZWQoWE1MX1BhcnNlciBvcmlnaW5Q YXJzZXIsIGludCB0b2ssIGNvbnN0DQo+ID4gPiBjaGFyDQo+ID4gPiAqYmVmb3JlLA0KPiA+ID4g KyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnN0IGNo YXIgKmFmdGVyLCBpbnQgc291cmNlX2xpbmUsDQo+ID4gPiArK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZW51bSBYTUxfQWNjb3VudCBhY2NvdW50KSB7DQo+ ID4gPiArK8KgIC8qIE5vdGU6IFdlIG5lZWQgdG8gY2hlY2sgdGhlIHRva2VuIHR5cGUgKmZpcnN0 KiB0byBiZSBzdXJlDQo+ID4gPiB0aGF0DQo+ID4gPiArK8KgwqAgKsKgwqDCoMKgwqDCoCB3ZSBj YW4gZXZlbiBhY2Nlc3MgdmFyaWFibGUgPGFmdGVyPiwgc2FmZWx5Lg0KPiA+ID4gKyvCoMKgICrC oMKgwqDCoMKgwqAgRS5nLiBmb3IgWE1MX1RPS19OT05FIDxhZnRlcj4gbWF5IGhvbGQgYW4gaW52 YWxpZA0KPiA+ID4gcG9pbnRlci4NCj4gPiA+ICovDQo+ID4gPiArK8KgIHN3aXRjaCAodG9rKSB7 DQo+ID4gPiArK8KgIGNhc2UgWE1MX1RPS19JTlZBTElEOg0KPiA+ID4gKyvCoCBjYXNlIFhNTF9U T0tfUEFSVElBTDoNCj4gPiA+ICsrwqAgY2FzZSBYTUxfVE9LX1BBUlRJQUxfQ0hBUjoNCj4gPiA+ ICsrwqAgY2FzZSBYTUxfVE9LX05PTkU6DQo+ID4gPiArK8KgwqDCoCByZXR1cm4gWE1MX1RSVUU7 DQo+ID4gPiArK8KgIH0NCj4gPiA+ICsrDQo+ID4gPiArK8KgIGlmIChhY2NvdW50ID09IFhNTF9B Q0NPVU5UX05PTkUpDQo+ID4gPiArK8KgwqDCoCByZXR1cm4gWE1MX1RSVUU7IC8qIGJlY2F1c2Ug dGhlc2UgYnl0ZXMgaGF2ZSBiZWVuIGFjY291bnRlZA0KPiA+ID4gZm9yLA0KPiA+ID4gYWxyZWFk eSAqLw0KPiA+ID4gKysNCj4gPiA+ICsrwqAgdW5zaWduZWQgaW50IGxldmVsc0F3YXlGcm9tUm9v dFBhcnNlcjsNCj4gPiA+ICsrwqAgY29uc3QgWE1MX1BhcnNlciByb290UGFyc2VyDQo+ID4gPiAr K8KgwqDCoMKgwqAgPSBnZXRSb290UGFyc2VyT2Yob3JpZ2luUGFyc2VyLCAmbGV2ZWxzQXdheUZy b21Sb290UGFyc2VyKTsNCj4gPiA+ICsrwqAgYXNzZXJ0KCEgcm9vdFBhcnNlci0+bV9wYXJlbnRQ YXJzZXIpOw0KPiA+ID4gKysNCj4gPiA+ICsrwqAgY29uc3QgaW50IGlzRGlyZWN0DQo+ID4gPiAr K8KgwqDCoMKgwqAgPSAoYWNjb3VudCA9PSBYTUxfQUNDT1VOVF9ESVJFQ1QpICYmIChvcmlnaW5Q YXJzZXIgPT0NCj4gPiA+IHJvb3RQYXJzZXIpOw0KPiA+ID4gKyvCoCBjb25zdCBwdHJkaWZmX3Qg Ynl0ZXNNb3JlID0gYWZ0ZXIgLSBiZWZvcmU7DQo+ID4gPiArKw0KPiA+ID4gKyvCoCBYbWxCaWdD b3VudCAqY29uc3QgYWRkaXRpb25UYXJnZXQNCj4gPiA+ICsrwqDCoMKgwqDCoCA9IGlzRGlyZWN0 ID8gJnJvb3RQYXJzZXItPm1fYWNjb3VudGluZy5jb3VudEJ5dGVzRGlyZWN0DQo+ID4gPiArK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDogJnJvb3RQYXJzZXItPm1fYWNjb3VudGlu Zy5jb3VudEJ5dGVzSW5kaXJlY3Q7DQo+ID4gPiArKw0KPiA+ID4gKyvCoCAvKiBEZXRlY3QgYW5k IGF2b2lkIGludGVnZXIgb3ZlcmZsb3cgKi8NCj4gPiA+ICsrwqAgaWYgKCphZGRpdGlvblRhcmdl dCA+IChYbWxCaWdDb3VudCkoLTEpIC0NCj4gPiA+IChYbWxCaWdDb3VudClieXRlc01vcmUpDQo+ ID4gPiArK8KgwqDCoCByZXR1cm4gWE1MX0ZBTFNFOw0KPiA+ID4gKyvCoCAqYWRkaXRpb25UYXJn ZXQgKz0gYnl0ZXNNb3JlOw0KPiA+ID4gKysNCj4gPiA+ICsrwqAgY29uc3QgWG1sQmlnQ291bnQg Y291bnRCeXRlc091dHB1dA0KPiA+ID4gKyvCoMKgwqDCoMKgID0gcm9vdFBhcnNlci0+bV9hY2Nv dW50aW5nLmNvdW50Qnl0ZXNEaXJlY3QNCj4gPiA+ICsrwqDCoMKgwqDCoMKgwqAgKyByb290UGFy c2VyLT5tX2FjY291bnRpbmcuY291bnRCeXRlc0luZGlyZWN0Ow0KPiA+ID4gKyvCoCBjb25zdCBm bG9hdCBhbXBsaWZpY2F0aW9uRmFjdG9yDQo+ID4gPiArK8KgwqDCoMKgwqAgPSBhY2NvdW50aW5n R2V0Q3VycmVudEFtcGxpZmljYXRpb24ocm9vdFBhcnNlcik7DQo+ID4gPiArK8KgIGNvbnN0IFhN TF9Cb29sIHRvbGVyYXRlZA0KPiA+ID4gKyvCoMKgwqDCoMKgID0gKGNvdW50Qnl0ZXNPdXRwdXQg PCByb290UGFyc2VyLQ0KPiA+ID4gPiBtX2FjY291bnRpbmcuYWN0aXZhdGlvblRocmVzaG9sZEJ5 dGVzKQ0KPiA+ID4gKyvCoMKgwqDCoMKgwqDCoCB8fCAoYW1wbGlmaWNhdGlvbkZhY3Rvcg0KPiA+ ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDw9IHJvb3RQYXJzZXItDQo+ID4gPiA+IG1fYWNj b3VudGluZy5tYXhpbXVtQW1wbGlmaWNhdGlvbkZhY3Rvcik7DQo+ID4gPiArKw0KPiA+ID4gKyvC oCBpZiAocm9vdFBhcnNlci0+bV9hY2NvdW50aW5nLmRlYnVnTGV2ZWwgPj0gMikgew0KPiA+ID4g KyvCoMKgwqAgYWNjb3VudGluZ1JlcG9ydFN0YXRzKHJvb3RQYXJzZXIsICIiKTsNCj4gPiA+ICsr wqDCoMKgIGFjY291bnRpbmdSZXBvcnREaWZmKHJvb3RQYXJzZXIsIGxldmVsc0F3YXlGcm9tUm9v dFBhcnNlciwNCj4gPiA+IGJlZm9yZSwgYWZ0ZXIsDQo+ID4gPiArK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBieXRlc01vcmUsIHNvdXJjZV9saW5lLCBh Y2NvdW50KTsNCj4gPiA+ICsrwqAgfQ0KPiA+ID4gKysNCj4gPiA+ICsrwqAgcmV0dXJuIHRvbGVy YXRlZDsNCj4gPiA+ICsrfQ0KPiA+ID4gKysNCj4gPiA+ICsrc3RhdGljIHZvaWQNCj4gPiA+ICsr ZW50aXR5VHJhY2tpbmdSZXBvcnRTdGF0cyhYTUxfUGFyc2VyIHJvb3RQYXJzZXIsIEVOVElUWSAq ZW50aXR5LA0KPiA+ID4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBjb25zdCBjaGFyICphY3Rpb24sIGludCBzb3VyY2VMaW5lKSB7DQo+ID4gPiAr K8KgIGFzc2VydCghIHJvb3RQYXJzZXItPm1fcGFyZW50UGFyc2VyKTsNCj4gPiA+ICsrwqAgaWYg KHJvb3RQYXJzZXItPm1fZW50aXR5X3N0YXRzLmRlYnVnTGV2ZWwgPCAxKQ0KPiA+ID4gKyvCoMKg wqAgcmV0dXJuOw0KPiA+ID4gKysNCj4gPiA+ICsrI8KgIGlmIGRlZmluZWQoWE1MX1VOSUNPREUp DQo+ID4gPiArK8KgIGNvbnN0IGNoYXIgKmNvbnN0IGVudGl0eU5hbWUgPSAiWy4uXSI7DQo+ID4g PiArKyPCoCBlbHNlDQo+ID4gPiArK8KgIGNvbnN0IGNoYXIgKmNvbnN0IGVudGl0eU5hbWUgPSBl bnRpdHktPm5hbWU7DQo+ID4gPiArKyPCoCBlbmRpZg0KPiA+ID4gKysNCj4gPiA+ICsrwqAgZnBy aW50ZigNCj4gPiA+ICsrwqDCoMKgwqDCoCBzdGRlcnIsDQo+ID4gPiArK8KgwqDCoMKgwqAgImV4 cGF0OiBFbnRpdGllcyglcCk6IENvdW50ICU5ZCwgZGVwdGggJTJkLyUyZCAlKnMlcyVzOyAlcw0K PiA+ID4gbGVuZ3RoICVkICh4bWxwYXJzZS5jOiVkKVxuIiwNCj4gPiA+ICsrwqDCoMKgwqDCoCAo dm9pZCAqKXJvb3RQYXJzZXIsIHJvb3RQYXJzZXItDQo+ID4gPiA+IG1fZW50aXR5X3N0YXRzLmNv dW50RXZlck9wZW5lZCwNCj4gPiA+ICsrwqDCoMKgwqDCoCByb290UGFyc2VyLT5tX2VudGl0eV9z dGF0cy5jdXJyZW50RGVwdGgsDQo+ID4gPiArK8KgwqDCoMKgwqAgcm9vdFBhcnNlci0+bV9lbnRp dHlfc3RhdHMubWF4aW11bURlcHRoU2VlbiwNCj4gPiA+ICsrwqDCoMKgwqDCoCAocm9vdFBhcnNl ci0+bV9lbnRpdHlfc3RhdHMuY3VycmVudERlcHRoIC0gMSkgKiAyLCAiIiwNCj4gPiA+ICsrwqDC oMKgwqDCoCBlbnRpdHktPmlzX3BhcmFtID8gIiUiIDogIiYiLCBlbnRpdHlOYW1lLCBhY3Rpb24s IGVudGl0eS0NCj4gPiA+ID4gdGV4dExlbiwNCj4gPiA+ICsrwqDCoMKgwqDCoCBzb3VyY2VMaW5l KTsNCj4gPiA+ICsrfQ0KPiA+ID4gKysNCj4gPiA+ICsrc3RhdGljIHZvaWQNCj4gPiA+ICsrZW50 aXR5VHJhY2tpbmdPbk9wZW4oWE1MX1BhcnNlciBvcmlnaW5QYXJzZXIsIEVOVElUWSAqZW50aXR5 LCBpbnQNCj4gPiA+IHNvdXJjZUxpbmUpIHsNCj4gPiA+ICsrwqAgY29uc3QgWE1MX1BhcnNlciBy b290UGFyc2VyID0gZ2V0Um9vdFBhcnNlck9mKG9yaWdpblBhcnNlciwNCj4gPiA+IE5VTEwpOw0K PiA+ID4gKyvCoCBhc3NlcnQoISByb290UGFyc2VyLT5tX3BhcmVudFBhcnNlcik7DQo+ID4gPiAr Kw0KPiA+ID4gKyvCoCByb290UGFyc2VyLT5tX2VudGl0eV9zdGF0cy5jb3VudEV2ZXJPcGVuZWQr KzsNCj4gPiA+ICsrwqAgcm9vdFBhcnNlci0+bV9lbnRpdHlfc3RhdHMuY3VycmVudERlcHRoKys7 DQo+ID4gPiArK8KgIGlmIChyb290UGFyc2VyLT5tX2VudGl0eV9zdGF0cy5jdXJyZW50RGVwdGgN Cj4gPiA+ICsrwqDCoMKgwqDCoCA+IHJvb3RQYXJzZXItPm1fZW50aXR5X3N0YXRzLm1heGltdW1E ZXB0aFNlZW4pIHsNCj4gPiA+ICsrwqDCoMKgIHJvb3RQYXJzZXItPm1fZW50aXR5X3N0YXRzLm1h eGltdW1EZXB0aFNlZW4rKzsNCj4gPiA+ICsrwqAgfQ0KPiA+ID4gKysNCj4gPiA+ICsrwqAgZW50 aXR5VHJhY2tpbmdSZXBvcnRTdGF0cyhyb290UGFyc2VyLCBlbnRpdHksICJPUEVOICIsDQo+ID4g PiBzb3VyY2VMaW5lKTsNCj4gPiA+ICsrfQ0KPiA+ID4gKysNCj4gPiA+ICsrc3RhdGljIHZvaWQN Cj4gPiA+ICsrZW50aXR5VHJhY2tpbmdPbkNsb3NlKFhNTF9QYXJzZXIgb3JpZ2luUGFyc2VyLCBF TlRJVFkgKmVudGl0eSwNCj4gPiA+IGludA0KPiA+ID4gc291cmNlTGluZSkgew0KPiA+ID4gKyvC oCBjb25zdCBYTUxfUGFyc2VyIHJvb3RQYXJzZXIgPSBnZXRSb290UGFyc2VyT2Yob3JpZ2luUGFy c2VyLA0KPiA+ID4gTlVMTCk7DQo+ID4gPiArK8KgIGFzc2VydCghIHJvb3RQYXJzZXItPm1fcGFy ZW50UGFyc2VyKTsNCj4gPiA+ICsrDQo+ID4gPiArK8KgIGVudGl0eVRyYWNraW5nUmVwb3J0U3Rh dHMocm9vdFBhcnNlciwgZW50aXR5LCAiQ0xPU0UiLA0KPiA+ID4gc291cmNlTGluZSk7DQo+ID4g PiArK8KgIHJvb3RQYXJzZXItPm1fZW50aXR5X3N0YXRzLmN1cnJlbnREZXB0aC0tOw0KPiA+ID4g Kyt9DQo+ID4gPiArKw0KPiA+ID4gKytzdGF0aWMgWE1MX1BhcnNlcg0KPiA+ID4gKytnZXRSb290 UGFyc2VyT2YoWE1MX1BhcnNlciBwYXJzZXIsIHVuc2lnbmVkIGludCAqb3V0TGV2ZWxEaWZmKSB7 DQo+ID4gPiArK8KgIFhNTF9QYXJzZXIgcm9vdFBhcnNlciA9IHBhcnNlcjsNCj4gPiA+ICsrwqAg dW5zaWduZWQgaW50IHN0ZXBzVGFrZW5VcHdhcmRzID0gMDsNCj4gPiA+ICsrwqAgd2hpbGUgKHJv b3RQYXJzZXItPm1fcGFyZW50UGFyc2VyKSB7DQo+ID4gPiArK8KgwqDCoCByb290UGFyc2VyID0g cm9vdFBhcnNlci0+bV9wYXJlbnRQYXJzZXI7DQo+ID4gPiArK8KgwqDCoCBzdGVwc1Rha2VuVXB3 YXJkcysrOw0KPiA+ID4gKyvCoCB9DQo+ID4gPiArK8KgIGFzc2VydCghIHJvb3RQYXJzZXItPm1f cGFyZW50UGFyc2VyKTsNCj4gPiA+ICsrwqAgaWYgKG91dExldmVsRGlmZiAhPSBOVUxMKSB7DQo+ ID4gPiArK8KgwqDCoCAqb3V0TGV2ZWxEaWZmID0gc3RlcHNUYWtlblVwd2FyZHM7DQo+ID4gPiAr K8KgIH0NCj4gPiA+ICsrwqAgcmV0dXJuIHJvb3RQYXJzZXI7DQo+ID4gPiArK30NCj4gPiA+ICsr DQo+ID4gPiArK3N0YXRpYyBjb25zdCBjaGFyICoNCj4gPiA+ICsrdW5zaWduZWRDaGFyVG9Qcmlu dGFibGUodW5zaWduZWQgY2hhciBjKSB7DQo+ID4gPiArK8KgIHN3aXRjaCAoYykgew0KPiA+ID4g KyvCoCBjYXNlIDA6DQo+ID4gPiArK8KgwqDCoCByZXR1cm4gIlxcMCI7DQo+ID4gPiArK8KgIGNh c2UgMToNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiXFx4MSI7DQo+ID4gPiArK8KgIGNhc2UgMjoN Cj4gPiA+ICsrwqDCoMKgIHJldHVybiAiXFx4MiI7DQo+ID4gPiArK8KgIGNhc2UgMzoNCj4gPiA+ ICsrwqDCoMKgIHJldHVybiAiXFx4MyI7DQo+ID4gPiArK8KgIGNhc2UgNDoNCj4gPiA+ICsrwqDC oMKgIHJldHVybiAiXFx4NCI7DQo+ID4gPiArK8KgIGNhc2UgNToNCj4gPiA+ICsrwqDCoMKgIHJl dHVybiAiXFx4NSI7DQo+ID4gPiArK8KgIGNhc2UgNjoNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAi XFx4NiI7DQo+ID4gPiArK8KgIGNhc2UgNzoNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiXFx4NyI7 DQo+ID4gPiArK8KgIGNhc2UgODoNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiXFx4OCI7DQo+ID4g PiArK8KgIGNhc2UgOToNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiXFx0IjsNCj4gPiA+ICsrwqAg Y2FzZSAxMDoNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiXFxuIjsNCj4gPiA+ICsrwqAgY2FzZSAx MToNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiXFx4QiI7DQo+ID4gPiArK8KgIGNhc2UgMTI6DQo+ ID4gPiArK8KgwqDCoCByZXR1cm4gIlxceEMiOw0KPiA+ID4gKyvCoCBjYXNlIDEzOg0KPiA+ID4g KyvCoMKgwqAgcmV0dXJuICJcXHIiOw0KPiA+ID4gKyvCoCBjYXNlIDE0Og0KPiA+ID4gKyvCoMKg wqAgcmV0dXJuICJcXHhFIjsNCj4gPiA+ICsrwqAgY2FzZSAxNToNCj4gPiA+ICsrwqDCoMKgIHJl dHVybiAiXFx4RiI7DQo+ID4gPiArK8KgIGNhc2UgMTY6DQo+ID4gPiArK8KgwqDCoCByZXR1cm4g IlxceDEwIjsNCj4gPiA+ICsrwqAgY2FzZSAxNzoNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiXFx4 MTEiOw0KPiA+ID4gKyvCoCBjYXNlIDE4Og0KPiA+ID4gKyvCoMKgwqAgcmV0dXJuICJcXHgxMiI7 DQo+ID4gPiArK8KgIGNhc2UgMTk6DQo+ID4gPiArK8KgwqDCoCByZXR1cm4gIlxceDEzIjsNCj4g PiA+ICsrwqAgY2FzZSAyMDoNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiXFx4MTQiOw0KPiA+ID4g KyvCoCBjYXNlIDIxOg0KPiA+ID4gKyvCoMKgwqAgcmV0dXJuICJcXHgxNSI7DQo+ID4gPiArK8Kg IGNhc2UgMjI6DQo+ID4gPiArK8KgwqDCoCByZXR1cm4gIlxceDE2IjsNCj4gPiA+ICsrwqAgY2Fz ZSAyMzoNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiXFx4MTciOw0KPiA+ID4gKyvCoCBjYXNlIDI0 Og0KPiA+ID4gKyvCoMKgwqAgcmV0dXJuICJcXHgxOCI7DQo+ID4gPiArK8KgIGNhc2UgMjU6DQo+ ID4gPiArK8KgwqDCoCByZXR1cm4gIlxceDE5IjsNCj4gPiA+ICsrwqAgY2FzZSAyNjoNCj4gPiA+ ICsrwqDCoMKgIHJldHVybiAiXFx4MUEiOw0KPiA+ID4gKyvCoCBjYXNlIDI3Og0KPiA+ID4gKyvC oMKgwqAgcmV0dXJuICJcXHgxQiI7DQo+ID4gPiArK8KgIGNhc2UgMjg6DQo+ID4gPiArK8KgwqDC oCByZXR1cm4gIlxceDFDIjsNCj4gPiA+ICsrwqAgY2FzZSAyOToNCj4gPiA+ICsrwqDCoMKgIHJl dHVybiAiXFx4MUQiOw0KPiA+ID4gKyvCoCBjYXNlIDMwOg0KPiA+ID4gKyvCoMKgwqAgcmV0dXJu ICJcXHgxRSI7DQo+ID4gPiArK8KgIGNhc2UgMzE6DQo+ID4gPiArK8KgwqDCoCByZXR1cm4gIlxc eDFGIjsNCj4gPiA+ICsrwqAgY2FzZSAzMjoNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiICI7DQo+ ID4gPiArK8KgIGNhc2UgMzM6DQo+ID4gPiArK8KgwqDCoCByZXR1cm4gIiEiOw0KPiA+ID4gKyvC oCBjYXNlIDM0Og0KPiA+ID4gKyvCoMKgwqAgcmV0dXJuICJcXFwiIjsNCj4gPiA+ICsrwqAgY2Fz ZSAzNToNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiIyI7DQo+ID4gPiArK8KgIGNhc2UgMzY6DQo+ ID4gPiArK8KgwqDCoCByZXR1cm4gIiQiOw0KPiA+ID4gKyvCoCBjYXNlIDM3Og0KPiA+ID4gKyvC oMKgwqAgcmV0dXJuICIlIjsNCj4gPiA+ICsrwqAgY2FzZSAzODoNCj4gPiA+ICsrwqDCoMKgIHJl dHVybiAiJiI7DQo+ID4gPiArK8KgIGNhc2UgMzk6DQo+ID4gPiArK8KgwqDCoCByZXR1cm4gIici Ow0KPiA+ID4gKyvCoCBjYXNlIDQwOg0KPiA+ID4gKyvCoMKgwqAgcmV0dXJuICIoIjsNCj4gPiA+ ICsrwqAgY2FzZSA0MToNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiKSI7DQo+ID4gPiArK8KgIGNh c2UgNDI6DQo+ID4gPiArK8KgwqDCoCByZXR1cm4gIioiOw0KPiA+ID4gKyvCoCBjYXNlIDQzOg0K PiA+ID4gKyvCoMKgwqAgcmV0dXJuICIrIjsNCj4gPiA+ICsrwqAgY2FzZSA0NDoNCj4gPiA+ICsr wqDCoMKgIHJldHVybiAiLCI7DQo+ID4gPiArK8KgIGNhc2UgNDU6DQo+ID4gPiArK8KgwqDCoCBy ZXR1cm4gIi0iOw0KPiA+ID4gKyvCoCBjYXNlIDQ2Og0KPiA+ID4gKyvCoMKgwqAgcmV0dXJuICIu IjsNCj4gPiA+ICsrwqAgY2FzZSA0NzoNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiLyI7DQo+ID4g PiArK8KgIGNhc2UgNDg6DQo+ID4gPiArK8KgwqDCoCByZXR1cm4gIjAiOw0KPiA+ID4gKyvCoCBj YXNlIDQ5Og0KPiA+ID4gKyvCoMKgwqAgcmV0dXJuICIxIjsNCj4gPiA+ICsrwqAgY2FzZSA1MDoN Cj4gPiA+ICsrwqDCoMKgIHJldHVybiAiMiI7DQo+ID4gPiArK8KgIGNhc2UgNTE6DQo+ID4gPiAr K8KgwqDCoCByZXR1cm4gIjMiOw0KPiA+ID4gKyvCoCBjYXNlIDUyOg0KPiA+ID4gKyvCoMKgwqAg cmV0dXJuICI0IjsNCj4gPiA+ICsrwqAgY2FzZSA1MzoNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAi NSI7DQo+ID4gPiArK8KgIGNhc2UgNTQ6DQo+ID4gPiArK8KgwqDCoCByZXR1cm4gIjYiOw0KPiA+ ID4gKyvCoCBjYXNlIDU1Og0KPiA+ID4gKyvCoMKgwqAgcmV0dXJuICI3IjsNCj4gPiA+ICsrwqAg Y2FzZSA1NjoNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiOCI7DQo+ID4gPiArK8KgIGNhc2UgNTc6 DQo+ID4gPiArK8KgwqDCoCByZXR1cm4gIjkiOw0KPiA+ID4gKyvCoCBjYXNlIDU4Og0KPiA+ID4g KyvCoMKgwqAgcmV0dXJuICI6IjsNCj4gPiA+ICsrwqAgY2FzZSA1OToNCj4gPiA+ICsrwqDCoMKg IHJldHVybiAiOyI7DQo+ID4gPiArK8KgIGNhc2UgNjA6DQo+ID4gPiArK8KgwqDCoCByZXR1cm4g IjwiOw0KPiA+ID4gKyvCoCBjYXNlIDYxOg0KPiA+ID4gKyvCoMKgwqAgcmV0dXJuICI9IjsNCj4g PiA+ICsrwqAgY2FzZSA2MjoNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiPiI7DQo+ID4gPiArK8Kg IGNhc2UgNjM6DQo+ID4gPiArK8KgwqDCoCByZXR1cm4gIj8iOw0KPiA+ID4gKyvCoCBjYXNlIDY0 Og0KPiA+ID4gKyvCoMKgwqAgcmV0dXJuICJAIjsNCj4gPiA+ICsrwqAgY2FzZSA2NToNCj4gPiA+ ICsrwqDCoMKgIHJldHVybiAiQSI7DQo+ID4gPiArK8KgIGNhc2UgNjY6DQo+ID4gPiArK8KgwqDC oCByZXR1cm4gIkIiOw0KPiA+ID4gKyvCoCBjYXNlIDY3Og0KPiA+ID4gKyvCoMKgwqAgcmV0dXJu ICJDIjsNCj4gPiA+ICsrwqAgY2FzZSA2ODoNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiRCI7DQo+ ID4gPiArK8KgIGNhc2UgNjk6DQo+ID4gPiArK8KgwqDCoCByZXR1cm4gIkUiOw0KPiA+ID4gKyvC oCBjYXNlIDcwOg0KPiA+ID4gKyvCoMKgwqAgcmV0dXJuICJGIjsNCj4gPiA+ICsrwqAgY2FzZSA3 MToNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiRyI7DQo+ID4gPiArK8KgIGNhc2UgNzI6DQo+ID4g PiArK8KgwqDCoCByZXR1cm4gIkgiOw0KPiA+ID4gKyvCoCBjYXNlIDczOg0KPiA+ID4gKyvCoMKg wqAgcmV0dXJuICJJIjsNCj4gPiA+ICsrwqAgY2FzZSA3NDoNCj4gPiA+ICsrwqDCoMKgIHJldHVy biAiSiI7DQo+ID4gPiArK8KgIGNhc2UgNzU6DQo+ID4gPiArK8KgwqDCoCByZXR1cm4gIksiOw0K PiA+ID4gKyvCoCBjYXNlIDc2Og0KPiA+ID4gKyvCoMKgwqAgcmV0dXJuICJMIjsNCj4gPiA+ICsr wqAgY2FzZSA3NzoNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiTSI7DQo+ID4gPiArK8KgIGNhc2Ug Nzg6DQo+ID4gPiArK8KgwqDCoCByZXR1cm4gIk4iOw0KPiA+ID4gKyvCoCBjYXNlIDc5Og0KPiA+ ID4gKyvCoMKgwqAgcmV0dXJuICJPIjsNCj4gPiA+ICsrwqAgY2FzZSA4MDoNCj4gPiA+ICsrwqDC oMKgIHJldHVybiAiUCI7DQo+ID4gPiArK8KgIGNhc2UgODE6DQo+ID4gPiArK8KgwqDCoCByZXR1 cm4gIlEiOw0KPiA+ID4gKyvCoCBjYXNlIDgyOg0KPiA+ID4gKyvCoMKgwqAgcmV0dXJuICJSIjsN Cj4gPiA+ICsrwqAgY2FzZSA4MzoNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiUyI7DQo+ID4gPiAr K8KgIGNhc2UgODQ6DQo+ID4gPiArK8KgwqDCoCByZXR1cm4gIlQiOw0KPiA+ID4gKyvCoCBjYXNl IDg1Og0KPiA+ID4gKyvCoMKgwqAgcmV0dXJuICJVIjsNCj4gPiA+ICsrwqAgY2FzZSA4NjoNCj4g PiA+ICsrwqDCoMKgIHJldHVybiAiViI7DQo+ID4gPiArK8KgIGNhc2UgODc6DQo+ID4gPiArK8Kg wqDCoCByZXR1cm4gIlciOw0KPiA+ID4gKyvCoCBjYXNlIDg4Og0KPiA+ID4gKyvCoMKgwqAgcmV0 dXJuICJYIjsNCj4gPiA+ICsrwqAgY2FzZSA4OToNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiWSI7 DQo+ID4gPiArK8KgIGNhc2UgOTA6DQo+ID4gPiArK8KgwqDCoCByZXR1cm4gIloiOw0KPiA+ID4g KyvCoCBjYXNlIDkxOg0KPiA+ID4gKyvCoMKgwqAgcmV0dXJuICJbIjsNCj4gPiA+ICsrwqAgY2Fz ZSA5MjoNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiXFxcXCI7DQo+ID4gPiArK8KgIGNhc2UgOTM6 DQo+ID4gPiArK8KgwqDCoCByZXR1cm4gIl0iOw0KPiA+ID4gKyvCoCBjYXNlIDk0Og0KPiA+ID4g KyvCoMKgwqAgcmV0dXJuICJeIjsNCj4gPiA+ICsrwqAgY2FzZSA5NToNCj4gPiA+ICsrwqDCoMKg IHJldHVybiAiXyI7DQo+ID4gPiArK8KgIGNhc2UgOTY6DQo+ID4gPiArK8KgwqDCoCByZXR1cm4g ImAiOw0KPiA+ID4gKyvCoCBjYXNlIDk3Og0KPiA+ID4gKyvCoMKgwqAgcmV0dXJuICJhIjsNCj4g PiA+ICsrwqAgY2FzZSA5ODoNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiYiI7DQo+ID4gPiArK8Kg IGNhc2UgOTk6DQo+ID4gPiArK8KgwqDCoCByZXR1cm4gImMiOw0KPiA+ID4gKyvCoCBjYXNlIDEw MDoNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiZCI7DQo+ID4gPiArK8KgIGNhc2UgMTAxOg0KPiA+ ID4gKyvCoMKgwqAgcmV0dXJuICJlIjsNCj4gPiA+ICsrwqAgY2FzZSAxMDI6DQo+ID4gPiArK8Kg wqDCoCByZXR1cm4gImYiOw0KPiA+ID4gKyvCoCBjYXNlIDEwMzoNCj4gPiA+ICsrwqDCoMKgIHJl dHVybiAiZyI7DQo+ID4gPiArK8KgIGNhc2UgMTA0Og0KPiA+ID4gKyvCoMKgwqAgcmV0dXJuICJo IjsNCj4gPiA+ICsrwqAgY2FzZSAxMDU6DQo+ID4gPiArK8KgwqDCoCByZXR1cm4gImkiOw0KPiA+ ID4gKyvCoCBjYXNlIDEwNjoNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiaiI7DQo+ID4gPiArK8Kg IGNhc2UgMTA3Og0KPiA+ID4gKyvCoMKgwqAgcmV0dXJuICJrIjsNCj4gPiA+ICsrwqAgY2FzZSAx MDg6DQo+ID4gPiArK8KgwqDCoCByZXR1cm4gImwiOw0KPiA+ID4gKyvCoCBjYXNlIDEwOToNCj4g PiA+ICsrwqDCoMKgIHJldHVybiAibSI7DQo+ID4gPiArK8KgIGNhc2UgMTEwOg0KPiA+ID4gKyvC oMKgwqAgcmV0dXJuICJuIjsNCj4gPiA+ICsrwqAgY2FzZSAxMTE6DQo+ID4gPiArK8KgwqDCoCBy ZXR1cm4gIm8iOw0KPiA+ID4gKyvCoCBjYXNlIDExMjoNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAi cCI7DQo+ID4gPiArK8KgIGNhc2UgMTEzOg0KPiA+ID4gKyvCoMKgwqAgcmV0dXJuICJxIjsNCj4g PiA+ICsrwqAgY2FzZSAxMTQ6DQo+ID4gPiArK8KgwqDCoCByZXR1cm4gInIiOw0KPiA+ID4gKyvC oCBjYXNlIDExNToNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAicyI7DQo+ID4gPiArK8KgIGNhc2Ug MTE2Og0KPiA+ID4gKyvCoMKgwqAgcmV0dXJuICJ0IjsNCj4gPiA+ICsrwqAgY2FzZSAxMTc6DQo+ ID4gPiArK8KgwqDCoCByZXR1cm4gInUiOw0KPiA+ID4gKyvCoCBjYXNlIDExODoNCj4gPiA+ICsr wqDCoMKgIHJldHVybiAidiI7DQo+ID4gPiArK8KgIGNhc2UgMTE5Og0KPiA+ID4gKyvCoMKgwqAg cmV0dXJuICJ3IjsNCj4gPiA+ICsrwqAgY2FzZSAxMjA6DQo+ID4gPiArK8KgwqDCoCByZXR1cm4g IngiOw0KPiA+ID4gKyvCoCBjYXNlIDEyMToNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAieSI7DQo+ ID4gPiArK8KgIGNhc2UgMTIyOg0KPiA+ID4gKyvCoMKgwqAgcmV0dXJuICJ6IjsNCj4gPiA+ICsr wqAgY2FzZSAxMjM6DQo+ID4gPiArK8KgwqDCoCByZXR1cm4gInsiOw0KPiA+ID4gKyvCoCBjYXNl IDEyNDoNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAifCI7DQo+ID4gPiArK8KgIGNhc2UgMTI1Og0K PiA+ID4gKyvCoMKgwqAgcmV0dXJuICJ9IjsNCj4gPiA+ICsrwqAgY2FzZSAxMjY6DQo+ID4gPiAr K8KgwqDCoCByZXR1cm4gIn4iOw0KPiA+ID4gKyvCoCBjYXNlIDEyNzoNCj4gPiA+ICsrwqDCoMKg IHJldHVybiAiXFx4N0YiOw0KPiA+ID4gKyvCoCBjYXNlIDEyODoNCj4gPiA+ICsrwqDCoMKgIHJl dHVybiAiXFx4ODAiOw0KPiA+ID4gKyvCoCBjYXNlIDEyOToNCj4gPiA+ICsrwqDCoMKgIHJldHVy biAiXFx4ODEiOw0KPiA+ID4gKyvCoCBjYXNlIDEzMDoNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAi XFx4ODIiOw0KPiA+ID4gKyvCoCBjYXNlIDEzMToNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiXFx4 ODMiOw0KPiA+ID4gKyvCoCBjYXNlIDEzMjoNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiXFx4ODQi Ow0KPiA+ID4gKyvCoCBjYXNlIDEzMzoNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiXFx4ODUiOw0K PiA+ID4gKyvCoCBjYXNlIDEzNDoNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiXFx4ODYiOw0KPiA+ ID4gKyvCoCBjYXNlIDEzNToNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiXFx4ODciOw0KPiA+ID4g KyvCoCBjYXNlIDEzNjoNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiXFx4ODgiOw0KPiA+ID4gKyvC oCBjYXNlIDEzNzoNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiXFx4ODkiOw0KPiA+ID4gKyvCoCBj YXNlIDEzODoNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiXFx4OEEiOw0KPiA+ID4gKyvCoCBjYXNl IDEzOToNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiXFx4OEIiOw0KPiA+ID4gKyvCoCBjYXNlIDE0 MDoNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiXFx4OEMiOw0KPiA+ID4gKyvCoCBjYXNlIDE0MToN Cj4gPiA+ICsrwqDCoMKgIHJldHVybiAiXFx4OEQiOw0KPiA+ID4gKyvCoCBjYXNlIDE0MjoNCj4g PiA+ICsrwqDCoMKgIHJldHVybiAiXFx4OEUiOw0KPiA+ID4gKyvCoCBjYXNlIDE0MzoNCj4gPiA+ ICsrwqDCoMKgIHJldHVybiAiXFx4OEYiOw0KPiA+ID4gKyvCoCBjYXNlIDE0NDoNCj4gPiA+ICsr wqDCoMKgIHJldHVybiAiXFx4OTAiOw0KPiA+ID4gKyvCoCBjYXNlIDE0NToNCj4gPiA+ICsrwqDC oMKgIHJldHVybiAiXFx4OTEiOw0KPiA+ID4gKyvCoCBjYXNlIDE0NjoNCj4gPiA+ICsrwqDCoMKg IHJldHVybiAiXFx4OTIiOw0KPiA+ID4gKyvCoCBjYXNlIDE0NzoNCj4gPiA+ICsrwqDCoMKgIHJl dHVybiAiXFx4OTMiOw0KPiA+ID4gKyvCoCBjYXNlIDE0ODoNCj4gPiA+ICsrwqDCoMKgIHJldHVy biAiXFx4OTQiOw0KPiA+ID4gKyvCoCBjYXNlIDE0OToNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAi XFx4OTUiOw0KPiA+ID4gKyvCoCBjYXNlIDE1MDoNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiXFx4 OTYiOw0KPiA+ID4gKyvCoCBjYXNlIDE1MToNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiXFx4OTci Ow0KPiA+ID4gKyvCoCBjYXNlIDE1MjoNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiXFx4OTgiOw0K PiA+ID4gKyvCoCBjYXNlIDE1MzoNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiXFx4OTkiOw0KPiA+ ID4gKyvCoCBjYXNlIDE1NDoNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiXFx4OUEiOw0KPiA+ID4g KyvCoCBjYXNlIDE1NToNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiXFx4OUIiOw0KPiA+ID4gKyvC oCBjYXNlIDE1NjoNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiXFx4OUMiOw0KPiA+ID4gKyvCoCBj YXNlIDE1NzoNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiXFx4OUQiOw0KPiA+ID4gKyvCoCBjYXNl IDE1ODoNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiXFx4OUUiOw0KPiA+ID4gKyvCoCBjYXNlIDE1 OToNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiXFx4OUYiOw0KPiA+ID4gKyvCoCBjYXNlIDE2MDoN Cj4gPiA+ICsrwqDCoMKgIHJldHVybiAiXFx4QTAiOw0KPiA+ID4gKyvCoCBjYXNlIDE2MToNCj4g PiA+ICsrwqDCoMKgIHJldHVybiAiXFx4QTEiOw0KPiA+ID4gKyvCoCBjYXNlIDE2MjoNCj4gPiA+ ICsrwqDCoMKgIHJldHVybiAiXFx4QTIiOw0KPiA+ID4gKyvCoCBjYXNlIDE2MzoNCj4gPiA+ICsr wqDCoMKgIHJldHVybiAiXFx4QTMiOw0KPiA+ID4gKyvCoCBjYXNlIDE2NDoNCj4gPiA+ICsrwqDC oMKgIHJldHVybiAiXFx4QTQiOw0KPiA+ID4gKyvCoCBjYXNlIDE2NToNCj4gPiA+ICsrwqDCoMKg IHJldHVybiAiXFx4QTUiOw0KPiA+ID4gKyvCoCBjYXNlIDE2NjoNCj4gPiA+ICsrwqDCoMKgIHJl dHVybiAiXFx4QTYiOw0KPiA+ID4gKyvCoCBjYXNlIDE2NzoNCj4gPiA+ICsrwqDCoMKgIHJldHVy biAiXFx4QTciOw0KPiA+ID4gKyvCoCBjYXNlIDE2ODoNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAi XFx4QTgiOw0KPiA+ID4gKyvCoCBjYXNlIDE2OToNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiXFx4 QTkiOw0KPiA+ID4gKyvCoCBjYXNlIDE3MDoNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiXFx4QUEi Ow0KPiA+ID4gKyvCoCBjYXNlIDE3MToNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiXFx4QUIiOw0K PiA+ID4gKyvCoCBjYXNlIDE3MjoNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiXFx4QUMiOw0KPiA+ ID4gKyvCoCBjYXNlIDE3MzoNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiXFx4QUQiOw0KPiA+ID4g KyvCoCBjYXNlIDE3NDoNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiXFx4QUUiOw0KPiA+ID4gKyvC oCBjYXNlIDE3NToNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiXFx4QUYiOw0KPiA+ID4gKyvCoCBj YXNlIDE3NjoNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiXFx4QjAiOw0KPiA+ID4gKyvCoCBjYXNl IDE3NzoNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiXFx4QjEiOw0KPiA+ID4gKyvCoCBjYXNlIDE3 ODoNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiXFx4QjIiOw0KPiA+ID4gKyvCoCBjYXNlIDE3OToN Cj4gPiA+ICsrwqDCoMKgIHJldHVybiAiXFx4QjMiOw0KPiA+ID4gKyvCoCBjYXNlIDE4MDoNCj4g PiA+ICsrwqDCoMKgIHJldHVybiAiXFx4QjQiOw0KPiA+ID4gKyvCoCBjYXNlIDE4MToNCj4gPiA+ ICsrwqDCoMKgIHJldHVybiAiXFx4QjUiOw0KPiA+ID4gKyvCoCBjYXNlIDE4MjoNCj4gPiA+ICsr wqDCoMKgIHJldHVybiAiXFx4QjYiOw0KPiA+ID4gKyvCoCBjYXNlIDE4MzoNCj4gPiA+ICsrwqDC oMKgIHJldHVybiAiXFx4QjciOw0KPiA+ID4gKyvCoCBjYXNlIDE4NDoNCj4gPiA+ICsrwqDCoMKg IHJldHVybiAiXFx4QjgiOw0KPiA+ID4gKyvCoCBjYXNlIDE4NToNCj4gPiA+ICsrwqDCoMKgIHJl dHVybiAiXFx4QjkiOw0KPiA+ID4gKyvCoCBjYXNlIDE4NjoNCj4gPiA+ICsrwqDCoMKgIHJldHVy biAiXFx4QkEiOw0KPiA+ID4gKyvCoCBjYXNlIDE4NzoNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAi XFx4QkIiOw0KPiA+ID4gKyvCoCBjYXNlIDE4ODoNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiXFx4 QkMiOw0KPiA+ID4gKyvCoCBjYXNlIDE4OToNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiXFx4QkQi Ow0KPiA+ID4gKyvCoCBjYXNlIDE5MDoNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiXFx4QkUiOw0K PiA+ID4gKyvCoCBjYXNlIDE5MToNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiXFx4QkYiOw0KPiA+ ID4gKyvCoCBjYXNlIDE5MjoNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiXFx4QzAiOw0KPiA+ID4g KyvCoCBjYXNlIDE5MzoNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiXFx4QzEiOw0KPiA+ID4gKyvC oCBjYXNlIDE5NDoNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiXFx4QzIiOw0KPiA+ID4gKyvCoCBj YXNlIDE5NToNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiXFx4QzMiOw0KPiA+ID4gKyvCoCBjYXNl IDE5NjoNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiXFx4QzQiOw0KPiA+ID4gKyvCoCBjYXNlIDE5 NzoNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiXFx4QzUiOw0KPiA+ID4gKyvCoCBjYXNlIDE5ODoN Cj4gPiA+ICsrwqDCoMKgIHJldHVybiAiXFx4QzYiOw0KPiA+ID4gKyvCoCBjYXNlIDE5OToNCj4g PiA+ICsrwqDCoMKgIHJldHVybiAiXFx4QzciOw0KPiA+ID4gKyvCoCBjYXNlIDIwMDoNCj4gPiA+ ICsrwqDCoMKgIHJldHVybiAiXFx4QzgiOw0KPiA+ID4gKyvCoCBjYXNlIDIwMToNCj4gPiA+ICsr wqDCoMKgIHJldHVybiAiXFx4QzkiOw0KPiA+ID4gKyvCoCBjYXNlIDIwMjoNCj4gPiA+ICsrwqDC oMKgIHJldHVybiAiXFx4Q0EiOw0KPiA+ID4gKyvCoCBjYXNlIDIwMzoNCj4gPiA+ICsrwqDCoMKg IHJldHVybiAiXFx4Q0IiOw0KPiA+ID4gKyvCoCBjYXNlIDIwNDoNCj4gPiA+ICsrwqDCoMKgIHJl dHVybiAiXFx4Q0MiOw0KPiA+ID4gKyvCoCBjYXNlIDIwNToNCj4gPiA+ICsrwqDCoMKgIHJldHVy biAiXFx4Q0QiOw0KPiA+ID4gKyvCoCBjYXNlIDIwNjoNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAi XFx4Q0UiOw0KPiA+ID4gKyvCoCBjYXNlIDIwNzoNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiXFx4 Q0YiOw0KPiA+ID4gKyvCoCBjYXNlIDIwODoNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiXFx4RDAi Ow0KPiA+ID4gKyvCoCBjYXNlIDIwOToNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiXFx4RDEiOw0K PiA+ID4gKyvCoCBjYXNlIDIxMDoNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiXFx4RDIiOw0KPiA+ ID4gKyvCoCBjYXNlIDIxMToNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiXFx4RDMiOw0KPiA+ID4g KyvCoCBjYXNlIDIxMjoNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiXFx4RDQiOw0KPiA+ID4gKyvC oCBjYXNlIDIxMzoNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiXFx4RDUiOw0KPiA+ID4gKyvCoCBj YXNlIDIxNDoNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiXFx4RDYiOw0KPiA+ID4gKyvCoCBjYXNl IDIxNToNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiXFx4RDciOw0KPiA+ID4gKyvCoCBjYXNlIDIx NjoNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiXFx4RDgiOw0KPiA+ID4gKyvCoCBjYXNlIDIxNzoN Cj4gPiA+ICsrwqDCoMKgIHJldHVybiAiXFx4RDkiOw0KPiA+ID4gKyvCoCBjYXNlIDIxODoNCj4g PiA+ICsrwqDCoMKgIHJldHVybiAiXFx4REEiOw0KPiA+ID4gKyvCoCBjYXNlIDIxOToNCj4gPiA+ ICsrwqDCoMKgIHJldHVybiAiXFx4REIiOw0KPiA+ID4gKyvCoCBjYXNlIDIyMDoNCj4gPiA+ICsr wqDCoMKgIHJldHVybiAiXFx4REMiOw0KPiA+ID4gKyvCoCBjYXNlIDIyMToNCj4gPiA+ICsrwqDC oMKgIHJldHVybiAiXFx4REQiOw0KPiA+ID4gKyvCoCBjYXNlIDIyMjoNCj4gPiA+ICsrwqDCoMKg IHJldHVybiAiXFx4REUiOw0KPiA+ID4gKyvCoCBjYXNlIDIyMzoNCj4gPiA+ICsrwqDCoMKgIHJl dHVybiAiXFx4REYiOw0KPiA+ID4gKyvCoCBjYXNlIDIyNDoNCj4gPiA+ICsrwqDCoMKgIHJldHVy biAiXFx4RTAiOw0KPiA+ID4gKyvCoCBjYXNlIDIyNToNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAi XFx4RTEiOw0KPiA+ID4gKyvCoCBjYXNlIDIyNjoNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiXFx4 RTIiOw0KPiA+ID4gKyvCoCBjYXNlIDIyNzoNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiXFx4RTMi Ow0KPiA+ID4gKyvCoCBjYXNlIDIyODoNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiXFx4RTQiOw0K PiA+ID4gKyvCoCBjYXNlIDIyOToNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiXFx4RTUiOw0KPiA+ ID4gKyvCoCBjYXNlIDIzMDoNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiXFx4RTYiOw0KPiA+ID4g KyvCoCBjYXNlIDIzMToNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiXFx4RTciOw0KPiA+ID4gKyvC oCBjYXNlIDIzMjoNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiXFx4RTgiOw0KPiA+ID4gKyvCoCBj YXNlIDIzMzoNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiXFx4RTkiOw0KPiA+ID4gKyvCoCBjYXNl IDIzNDoNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiXFx4RUEiOw0KPiA+ID4gKyvCoCBjYXNlIDIz NToNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiXFx4RUIiOw0KPiA+ID4gKyvCoCBjYXNlIDIzNjoN Cj4gPiA+ICsrwqDCoMKgIHJldHVybiAiXFx4RUMiOw0KPiA+ID4gKyvCoCBjYXNlIDIzNzoNCj4g PiA+ICsrwqDCoMKgIHJldHVybiAiXFx4RUQiOw0KPiA+ID4gKyvCoCBjYXNlIDIzODoNCj4gPiA+ ICsrwqDCoMKgIHJldHVybiAiXFx4RUUiOw0KPiA+ID4gKyvCoCBjYXNlIDIzOToNCj4gPiA+ICsr wqDCoMKgIHJldHVybiAiXFx4RUYiOw0KPiA+ID4gKyvCoCBjYXNlIDI0MDoNCj4gPiA+ICsrwqDC oMKgIHJldHVybiAiXFx4RjAiOw0KPiA+ID4gKyvCoCBjYXNlIDI0MToNCj4gPiA+ICsrwqDCoMKg IHJldHVybiAiXFx4RjEiOw0KPiA+ID4gKyvCoCBjYXNlIDI0MjoNCj4gPiA+ICsrwqDCoMKgIHJl dHVybiAiXFx4RjIiOw0KPiA+ID4gKyvCoCBjYXNlIDI0MzoNCj4gPiA+ICsrwqDCoMKgIHJldHVy biAiXFx4RjMiOw0KPiA+ID4gKyvCoCBjYXNlIDI0NDoNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAi XFx4RjQiOw0KPiA+ID4gKyvCoCBjYXNlIDI0NToNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiXFx4 RjUiOw0KPiA+ID4gKyvCoCBjYXNlIDI0NjoNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiXFx4RjYi Ow0KPiA+ID4gKyvCoCBjYXNlIDI0NzoNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiXFx4RjciOw0K PiA+ID4gKyvCoCBjYXNlIDI0ODoNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiXFx4RjgiOw0KPiA+ ID4gKyvCoCBjYXNlIDI0OToNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiXFx4RjkiOw0KPiA+ID4g KyvCoCBjYXNlIDI1MDoNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiXFx4RkEiOw0KPiA+ID4gKyvC oCBjYXNlIDI1MToNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiXFx4RkIiOw0KPiA+ID4gKyvCoCBj YXNlIDI1MjoNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiXFx4RkMiOw0KPiA+ID4gKyvCoCBjYXNl IDI1MzoNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiXFx4RkQiOw0KPiA+ID4gKyvCoCBjYXNlIDI1 NDoNCj4gPiA+ICsrwqDCoMKgIHJldHVybiAiXFx4RkUiOw0KPiA+ID4gKyvCoCBjYXNlIDI1NToN Cj4gPiA+ICsrwqDCoMKgIHJldHVybiAiXFx4RkYiOw0KPiA+ID4gKyvCoCBkZWZhdWx0Og0KPiA+ ID4gKyvCoMKgwqAgYXNzZXJ0KDApOyAvKiBuZXZlciBnZXRzIGhlcmUgKi8NCj4gPiA+ICsrwqDC oMKgIHJldHVybiAiZGVhZCBjb2RlIjsNCj4gPiA+ICsrwqAgfQ0KPiA+ID4gKyvCoCBhc3NlcnQo MCk7IC8qIG5ldmVyIGdldHMgaGVyZSAqLw0KPiA+ID4gKyt9DQo+ID4gPiArKw0KPiA+ID4gKysj ZW5kaWYgLyogWE1MX0RURCAqLw0KPiA+ID4gKysNCj4gPiA+ICsrc3RhdGljIHVuc2lnbmVkIGxv bmcNCj4gPiA+ICsrZ2V0RGVidWdMZXZlbChjb25zdCBjaGFyICp2YXJpYWJsZU5hbWUsIHVuc2ln bmVkIGxvbmcNCj4gPiA+IGRlZmF1bHREZWJ1Z0xldmVsKSB7DQo+ID4gPiArK8KgIGNvbnN0IGNo YXIgKmNvbnN0IHZhbHVlT3JOdWxsID0gZ2V0ZW52KHZhcmlhYmxlTmFtZSk7DQo+ID4gPiArK8Kg IGlmICh2YWx1ZU9yTnVsbCA9PSBOVUxMKSB7DQo+ID4gPiArK8KgwqDCoCByZXR1cm4gZGVmYXVs dERlYnVnTGV2ZWw7DQo+ID4gPiArK8KgIH0NCj4gPiA+ICsrwqAgY29uc3QgY2hhciAqY29uc3Qg dmFsdWUgPSB2YWx1ZU9yTnVsbDsNCj4gPiA+ICsrDQo+ID4gPiArK8KgIGVycm5vID0gMDsNCj4g PiA+ICsrwqAgY2hhciAqYWZ0ZXJWYWx1ZSA9IChjaGFyICopdmFsdWU7DQo+ID4gPiArK8KgIHVu c2lnbmVkIGxvbmcgZGVidWdMZXZlbCA9IHN0cnRvdWwodmFsdWUsICZhZnRlclZhbHVlLCAxMCk7 DQo+ID4gPiArK8KgIGlmICgoZXJybm8gIT0gMCkgfHwgKGFmdGVyVmFsdWVbMF0gIT0gJ1wwJykp IHsNCj4gPiA+ICsrwqDCoMKgIGVycm5vID0gMDsNCj4gPiA+ICsrwqDCoMKgIHJldHVybiBkZWZh dWx0RGVidWdMZXZlbDsNCj4gPiA+ICsrwqAgfQ0KPiA+ID4gKysNCj4gPiA+ICsrwqAgcmV0dXJu IGRlYnVnTGV2ZWw7DQo+ID4gPiArK30NCj4gPiA+ICstLQ0KPiA+ID4gKzIuMzIuMA0KPiA+ID4g Kw0KPiA+ID4gZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1jb3JlL2V4cGF0L2V4cGF0XzIuMi45 LmJiIGIvbWV0YS9yZWNpcGVzLQ0KPiA+ID4gY29yZS9leHBhdC9leHBhdF8yLjIuOS5iYg0KPiA+ ID4gaW5kZXggOGYzZGI0MTM1Mi4uM2FmNDU3YjJhZiAxMDA2NDQNCj4gPiA+IC0tLSBhL21ldGEv cmVjaXBlcy1jb3JlL2V4cGF0L2V4cGF0XzIuMi45LmJiDQo+ID4gPiArKysgYi9tZXRhL3JlY2lw ZXMtY29yZS9leHBhdC9leHBhdF8yLjIuOS5iYg0KPiA+ID4gQEAgLTYsOCArNiw5IEBAIExJQ0VO U0UgPSAiTUlUIg0KPiA+ID4gDQo+ID4gPiDCoExJQ19GSUxFU19DSEtTVU0gPQ0KPiA+ID4gImZp bGU6Ly9DT1BZSU5HO21kNT01Yjg2MjBkOThlNDk3NzJkOTVmYzFkMjkxYzI2YWE3OSINCj4gPiA+ IA0KPiA+ID4gLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L2V4cGF0L2V4cGF0LSR7 UFZ9LnRhci5iejIgXA0KPiA+ID4gK1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L2V4 cGF0L2V4cGF0LSR7UFZ9LVJFTkFNRUQtDQo+ID4gPiBWVUxORVJBQkxFLQ0KPiA+ID4gUExFQVNF LVVTRS0yLjQuMS1JTlNURUFELnRhci5iejIgXA0KPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBmaWxlOi8vbGlidG9vbC10YWcucGF0Y2jCoFwNCj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oA0KPiA+ID4gZmlsZTovLzAwMDEtZXhwYXQtQmFja3BvcnQtZml4LWZvci1DVkUtMjAxMy0wMzQw LnBhdGNowqBcDQo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqAgIg0KPiA+ID4gDQo+ID4gPiDCoFNS Q19VUklbbWQ1c3VtXSA9ICI4NzVhMmMyZmYzZThlYjllNWE1Y2Q2MmRiMjAzM2FiNSINCj4gPiA+ IA0KPiA+ID4gDQo+ID4gPiANCj4gPiAtLS0tLUJFR0lOIFBHUCBTSUdOQVRVUkUtLS0tLQ0KPiA+ IA0KPiA+IGlRRXpCQUVCQ0FBZEZpRUU0V3lQTUlDNUFwNCtPb28xWWdxZXcwN1ZNTlVGQW1ES0R5 Z0FDZ2tRWWdxZXcwN1YNCj4gPiBNTlZwSEFnQWp4RGlISiswWmwreHhCUktrRDNFM2JHbEtsd3Nu NE1PbFAxSFdONXpqQ29tdUFkbnlRd3ZUbUFqDQo+ID4gMkhSRHhHVVEvWm5YVWxTRGJOekhTZ3JH MklEYTFkbEJXR1JBU1JYM1l4SVhUSjFVTDVMV0h1cHJETDJQM3hOcA0KPiA+IFhNYUFlWDJhODZn SktEQkE3L1hYa3JiVnVDYWZqR1o2cjArdXJ2Y3FwSkZPMUZSMVFiMGFrbEFlL3BFVnRFWVMNCj4g PiBYY04ydFdmcWVPeTlIQk92TElCZkZ3a1JFMDdvQmZyMGVXeEt6RUNPcTFNUE9VWXI5ay9FNEx3 cUdFV2NyT3JxDQo+ID4gckpNMlUwN0VzdTBOa1FRU1BaWFArTlRZTzl2NXp0WmpDTHpPYjBlSTd0 R2JkdVczYXk3Zk9sYXdmUDhmZ2lPTg0KPiA+IFlWTU96Y3ZBOURGT0s3WjN1cjNuQ0w3TVduTjNP QT09DQo+ID4gPUpGWlkNCj4gPiAtLS0tLUVORCBQR1AgU0lHTkFUVVJFLS0tLS0NCj4gPiANCj4g PiANCj4gPiANCi0tLS0tQkVHSU4gUEdQIFNJR05BVFVSRS0tLS0tDQoNCmlRRXpCQUVCQ0FBZEZp RUU0V3lQTUlDNUFwNCtPb28xWWdxZXcwN1ZNTlVGQW1ES0YvY0FDZ2tRWWdxZXcwN1YNCk1OWHZj UWYvWUFFbTZwTzhkalB6Ym1MVjNIeEhQZlpwTzR3dlZXMjlLKzNBeTJSR3NGNHBXcThNdmdVUE9T Y2gNCmx5bHp2a2M3d3MwZlBvalo0c3VFbkg5c0VZem50dUF6UEgyaHdPNS9xU0RmSXV1VVdJZDVy RGpIWGNMeTR6aUsNCjh4NTJGMTB4YlBPOGxCMU43cndiTHFTdllDdmJRY0FmeCttWkQ4Q0x3THAw cE1FV1g3a3NEenpMYzY2cFNvd0gNCng1anpGcTFER1lqRDBML1FnVlVseUdjOVR3TWVJN1dxUXRD bzN6TGtYSG1ScG9nTjlySk01Z3hJTHBsT21vMTINCmhDVlFkQ3dYTC9oK3Y4S1BDd1UwSURENjdz WUgrWmtqQ0RuczUyL1dYU3BaTXkweHlDbWhGWUpoS01uS0R5TXgNCjF5Uzhyb2VCd3dNY2JrZVZF eDJaMDVna1JQRjladz09DQo9Q2pMYQ0KLS0tLS1FTkQgUEdQIFNJR05BVFVSRS0tLS0tDQo=