From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtpbgeu2.qq.com (smtpbgeu2.qq.com [18.194.254.142]) by sourceware.org (Postfix) with ESMTPS id 5F1E43858C39 for ; Fri, 14 Oct 2022 07:20:56 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 5F1E43858C39 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=rivai.ai Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=rivai.ai X-QQ-mid: bizesmtp62t1665732043tl2a3lcp Received: from LAPTOP-EPITNQBU ( [58.60.1.3]) by bizesmtp.qq.com (ESMTP) with id ; Fri, 14 Oct 2022 15:20:42 +0800 (CST) X-QQ-SSF: 01400000000000D0K000000A0000000 X-QQ-FEAT: wQhSUB2dfbZCmuTkKonwR27qfPqX9u6LnEioN6cqDHZ1t8m2Z3gPa7c0zx+m6 LDSmBWV4Kk1Fe0ESG1iCyOgnkeENsHfer2hKIbi1gnOyhUoBl4ZQN1b7GebNTjTJ3eX36O6 GxAS98b/WfAHlre8NpODnqzUh76hAJSG9UmIitNkugZN3x9BagQo/SGetu7/vr6shCLn3HD icyfZlMVKp0iAqEgudDaFYDlbulFeFmkZteI0Tbo2B2OcRXLcQYDh6WQhECmYevmzIVITnO 1nKWSux8aEXoPSqZNt6uBsCKdqZRG3HacT4Sln7yfM/jtT7B9PZ/L179s6JX0bGagX+gt5d cUhIs1LGIFxsmK5pm6gdeW2VOujO6a4cMs6JJjD9o4DapLeTZaEmwoe5CmoTR2c4k4/VuJA a9U7Dd1NWaU= X-QQ-GoodBg: 2 Date: Fri, 14 Oct 2022 15:20:42 +0800 From: "juzhe.zhong@rivai.ai" To: rguenther , richard.sandiford Cc: ams , gcc-patches Subject: Re: Re: [PATCH][RFT] Vectorization of first-order recurrences References: <20221010110339.E9E2513479@imap2.suse-dmz.suse.de>, <49b46c57-70b6-d9c0-a267-5e2f8315382b@codesourcery.com>, , , <271ron87-q0o2-5pr5-8s65-1682p750o0@fhfr.qr> X-Priority: 3 X-GUID: 5BAD63B1-E676-44CB-9A43-3C1D7A0D4646 X-Has-Attach: no X-Mailer: Foxmail 7.2.16.188[cn] Mime-Version: 1.0 Message-ID: <893310B321D48E22+2022101415204217129134@rivai.ai> Content-Type: multipart/alternative; boundary="----=_001_NextPart006720684280_=----" X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:rivai.ai:qybglogicsvr:qybglogicsvr7 X-Spam-Status: No, score=-10.6 required=5.0 tests=BAYES_00,GIT_PATCH_0,HTML_MESSAGE,KAM_DMARC_STATUS,RCVD_IN_BARRACUDACENTRAL,RCVD_IN_DNSWL_NONE,SCC_5_SHORT_WORD_LINES,SPF_PASS,TXREP,T_SPF_HELO_TEMPERROR autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: This is a multi-part message in MIME format. ------=_001_NextPart006720684280_=---- Content-Type: text/plain; charset="ISO-8859-1" Content-Transfer-Encoding: base64 TEdUTS4NCg0KDQoNCmp1emhlLnpob25nQHJpdmFpLmFpDQogDQpGcm9tOiBS aWNoYXJkIEJpZW5lcg0KRGF0ZTogMjAyMi0xMC0xNCAxNTowNw0KVG86IFJp Y2hhcmQgU2FuZGlmb3JkDQpDQzogQW5kcmV3IFN0dWJiczsgZ2NjLXBhdGNo ZXM7IGp1emhlLnpob25nDQpTdWJqZWN0OiBSZTogW1BBVENIXVtSRlRdIFZl Y3Rvcml6YXRpb24gb2YgZmlyc3Qtb3JkZXIgcmVjdXJyZW5jZXMNCk9uIFR1 ZSwgMTEgT2N0IDIwMjIsIFJpY2hhcmQgU2FuZGlmb3JkIHdyb3RlOg0KIA0K PiBSaWNoYXJkIEJpZW5lciA8cmd1ZW50aGVyQHN1c2UuZGU+IHdyaXRlczoN Cj4gPiBPbiBNb24sIDEwIE9jdCAyMDIyLCBBbmRyZXcgU3R1YmJzIHdyb3Rl Og0KPiA+PiBPbiAxMC8xMC8yMDIyIDEyOjAzLCBSaWNoYXJkIEJpZW5lciB3 cm90ZToNCj4gPj4gPiBUaGUgZm9sbG93aW5nIHBpY2tzIHVwIHRoZSBwcm90 b3R5cGUgYnkgSnUtWmhlIFpob25nIGZvciB2ZWN0b3JpemluZw0KPiA+PiA+ IGZpcnN0IG9yZGVyIHJlY3VycmVuY2VzLiAgVGhhdCBzb2x2ZXMgdHdvIFRT VkMgbWlzc2VkIG9wdGltaXphdGlvbiBQUnMuDQo+ID4+ID4gDQo+ID4+ID4g VGhlcmUncyBhIG5ldyBzY2FsYXIgY3ljbGUgZGVmIGtpbmQsIHZlY3RfZmly c3Rfb3JkZXJfcmVjdXJyZW5jZQ0KPiA+PiA+IGFuZCBpdCdzIGhhbmRsaW5n IG9mIHRoZSBiYWNrZWRnZSB2YWx1ZSB2ZWN0b3JpemF0aW9uIGlzIGNvbXBs aWNhdGVkDQo+ID4+ID4gYnkgdGhlIGZhY3QgdGhhdCB0aGUgdmVjdG9yaXpl ZCB2YWx1ZSBpc24ndCB0aGUgUEhJIGJ1dCBpbnN0ZWFkDQo+ID4+ID4gYSAo c2VyaWVzIG9mKSBwZXJtdXRlKHMpIHNoaWZ0aW5nIGluIHRoZSByZWN1cnJp bmcgdmFsdWUgZnJvbSB0aGUNCj4gPj4gPiBwcmV2aW91cyBpdGVyYXRpb24u ICBJJ3ZlIGltcGxlbWVudGVkIHRoaXMgYnkgY3JlYXRpbmcgYm90aCB0aGUN Cj4gPj4gPiBzaW5nbGUgdmVjdG9yaXplZCBQSEkgYW5kIHRoZSBzZXJpZXMg b2YgcGVybXV0ZXMgd2hlbiB2ZWN0b3JpemluZw0KPiA+PiA+IHRoZSBzY2Fs YXIgUEhJIGJ1dCBsZWF2ZSB0aGUgYmFja2VkZ2UgdmFsdWVzIGluIGJvdGgg dW5hc3NpZ25lZC4NCj4gPj4gPiBUaGUgYmFja2VkZ2UgdmFsdWVzIGFyZSAo Zm9yIHRoZSB0ZXN0Y2FzZXMpIGNvbXB1dGVkIGJ5IGEgbG9hZA0KPiA+PiA+ IHdoaWNoIGlzIGFsc28gdGhlIHBsYWNlIGFmdGVyIHdoaWNoIHRoZSBwZXJt dXRlcyBhcmUgaW5zZXJ0ZWQuDQo+ID4+ID4gVGhhdCBwbGFjZW1lbnQgYWxz byByZXN0cmljdHMgdGhlIGNhc2VzIHdlIGNhbiBoYW5kbGUgKHdpdGhvdXQN Cj4gPj4gPiByZXNvcnRpbmcgdG8gY29kZSBtb3Rpb24pLg0KPiA+PiA+IA0K PiA+PiA+IEkgYWRkZWQgYm90aCBjb3N0aW5nIGFuZCBTTFAgaGFuZGxpbmcg dGhvdWdoIFNMUCBoYW5kbGluZyBpcw0KPiA+PiA+IHJlc3RyaWN0ZWQgdG8g dGhlIGNhc2Ugd2hlcmUgYSBzaW5nbGUgdmVjdG9yaXplZCBQSEkgaXMgZW5v dWdoLg0KPiA+PiA+IA0KPiA+PiA+IE1pc3NpbmcgaXMgZXBpbG9ndWUgaGFu ZGxpbmcgLSB3aGlsZSBwcm9sb2d1ZSBwZWVsaW5nIHdvdWxkDQo+ID4+ID4g YmUgaGFuZGxlZCB0cmFuc3BhcmVudGx5IGJ5IGFkanVzdGluZyBpdl9waGlf cCB0aGUgZXBpbG9ndWUNCj4gPj4gPiBjYXNlIGRvZXNuJ3Qgd29yayB3aXRo IGp1c3QgaW5zZXJ0aW5nIGEgc2NhbGFyIExDIFBISSBzaW5jZQ0KPiA+PiA+ IHRoYXQgYSkga2VlcHMgdGhlIHNjYWxhciBsb2FkIGxpdmUgYW5kIGIpIHRo YXQgbG9hZHMgaXMgdGhlDQo+ID4+ID4gd3Jvbmcgb25lLCBpdCBoYXMgdG8g YmUgdGhlIGxhc3QsIG11Y2ggbGlrZSB3aGVuIHdlJ2QgdmVjdG9yaXplDQo+ ID4+ID4gdGhlIExDIFBISSBhcyBsaXZlIG9wZXJhdGlvbi4gIFVuZm9ydHVu YXRlbHkgTElWRQ0KPiA+PiA+IGNvbXB1dGUvYW5hbHlzaXMgaGFwcGVucyB0 b28gZWFybHkgYmVmb3JlIHdlIGRlY2lkZSBvbg0KPiA+PiA+IHBlZWxpbmcu ICBXaGVuIHVzaW5nIGZ1bGx5IG1hc2tlZCBsb29wIHZlY3Rvcml6YXRpb24g dGhlDQo+ID4+ID4gdmVjdC1yZWN1cnItNi5jIHdvcmtzIGFzIGV4cGVjdGVk IHRob3VnaC4NCj4gPj4gPiANCj4gPj4gPiBJIGhhdmUgdGVzdGVkIHRoaXMg b24geDg2XzY0IGZvciBub3csIGJ1dCBzaW5jZSBlcGlsb2d1ZQ0KPiA+PiA+ IGhhbmRsaW5nIGlzIG1pc3NpbmcgdGhlcmUncyBwcm9iYWJseSBubyBwcmFj dGljYWwgY2FzZXMuDQo+ID4+ID4gTXkgcHJvdG90eXBlIFdISUxFX1VMVCBB Vlg1MTIgcGF0Y2ggY2FuIGhhbmRsZSB2ZWN0LXJlY3Vyci02LmMNCj4gPj4g PiBqdXN0IGZpbmUgYnV0IEkgZGlkbid0IGZlZWwgbGlrZSBydW5uaW5nIFNQ RUMgd2l0aGluIFNERSBub3INCj4gPj4gPiBpcyB0aGUgV0hJTEVfVUxUIHBh dGNoIGNvbXBsZXRlIGVub3VnaC4gIEJ1aWxkcyBvZiBTUEVDIDJrNw0KPiA+ PiA+IHdpdGggZnVsbHkgbWFza2VkIGxvb3BzIHN1Y2NlZWQgKG1pbnVzIHRo cmVlIGNhc2VzIG9mDQo+ID4+ID4gUFIxMDcwOTYsIGNhdXNlZCBieSBteSBX SElMRV9VTFQgcHJvdG90eXBlKS4NCj4gPj4gPiANCj4gPj4gPiBCb290c3Ry YXBwZWQgYW5kIHRlc3RlZCBvbiB4ODZfNjQtdW5rbm93bi1saW51eC1nbnUu DQo+ID4+ID4gDQo+ID4+ID4gVGVzdGluZyB3aXRoIFNWRSwgR0NOIG9yIFJW ViBhcHByZWNpYXRlZCwgaWRlYXMgaG93IHRvIGNsZWFubHkNCj4gPj4gPiBo YW5kbGUgZXBpbG9ndWVzIHdlbGNvbWUuDQo+ID4+IA0KPiA+PiBUaGUgdGVz dGNhc2VzIGFsbCBwcm9kdWNlIGNvcnJlY3QgY29kZSBvbiBHQ04gYW5kIHBh c3MgdGhlIGV4ZWN1dGlvbiB0ZXN0cy4NCj4gPj4gDQo+ID4+IFRoZSBjb2Rl IGlzbid0IHRlcnJpYmx5IG9wdGltYWwgYmVjYXVzZSB3ZSBkb24ndCBoYXZl IGEgdHdvLWlucHV0IHBlcm11dGF0aW9uDQo+ID4+IGluc3RydWN0aW9uLCBz byB3ZSBwZXJtdXRlIGVhY2ggaGFsZiBzZXBhcmF0ZWx5IGFuZCB2ZWNfbWVy Z2UgdGhlIHJlc3VsdHMuIEluDQo+ID4+IHRoaXMgY2FzZSB0aGUgZmlyc3Qg dmVjdG9yIGlzIGFsd2F5cyBhIG5vLW9wIHBlcm11dGF0aW9uIHNvIHRoYXQn cyB3YXN0ZWQNCj4gPj4gY3ljbGVzLiBXZSdkIHJlYWxseSB3YW50IGEgdmVj dG9yIHJvdGF0ZSBhbmQgd3JpdGUtbGFuZSAob3IgdGhlIG90aGVyIHdheQ0K PiA+PiBhcm91bmQpLiBJIHRoaW5rIHRoZSBzcGVjaWFsLWNhc2UgcGVybXV0 YXRpb25zIGNhbiBiZSByZWNvZ25pc2VkIGFuZCBjb2RlZA0KPiA+PiBpbnRv IHRoZSBiYWNrZW5kLCBidXQgSSBkb24ndCBrbm93IGlmIHdlIGNhbiBlYXNp bHkgdGVsbCB0aGF0IHRoZSBmaXJzdCB2ZWN0b3INCj4gPj4gaXMganVzdCBh IGJ1bmNoIG9mIGR1cGxpY2F0ZXMsIHdoZW4gaXQncyBub3QgY29uc3RhbnQu DQo+ID4NCj4gPiBJdCdzIG5vdCBhY3R1YWxseSBhIGJ1bmNoIG9mIGR1cGxp Y2F0ZXMgaW4gYWxsIGJ1dCB0aGUgZmlyc3QgaXRlcmF0aW9uLg0KPiA+IEJ1 dCB3aGF0IHlvdSBjYW4gcmVjb2duaXplIGlzIHRoYXQgd2UncmUgb25seSB1 c2luZyBsYW5lIE4gLSAxIG9mIHRoZQ0KPiA+IGZpcnN0IHZlY3Rvciwgc28g eW91IGNvdWxkIG1vZGVsIHRoZSBwZXJtdXRlIGFzIGV4dHJhY3QgbGFzdA0K PiA+ICsgc2hpZnQgaW4gc2NhbGFyICh0aGUgZXh0cmFjdGVkIGxhbmUpLiAg SUlSQyBWTEEgdmVjdG9yIHRhcmdldHMgdXN1YWxseQ0KPiA+IGhhdmUgc29t ZXRoaW5nIGxpa2Ugc2hpZnQgdGhlIHZlY3RvciBhbmQgc2V0IHRoZSBsb3cg bGFuZSBmcm9tIGENCj4gPiBzY2FsYXI/DQo+IA0KPiBZZWFoLg0KPiANCj4g PiBUaGUgZXh0cmFjdCBsYW5lIE4gLSAxIG1pZ2h0IGJlIG1vcmUgZGlmZmlj dWx0IGJ1dCB0aGVuDQo+ID4gYSByb3RhdGUgcGx1cyBleHRyYWN0aW5nIGxh bmUgMCBtaWdodCB3b3JrIGFzIHdlbGwuDQo+IA0KPiBJIGd1ZXNzIGZvciBT VkUgd2Ugc2hvdWxkIHByb2JhYmx5IHVzZSBTUExJQ0UsIHdoaWNoIGpvaW5z IHR3byB2ZWN0b3JzDQo+IGFuZCB1c2VzIGEgcHJlZGljYXRlIHRvIHNlbGVj dCB0aGUgZmlyc3QgZWxlbWVudCB0aGF0IHNob3VsZCBiZSBleHRyYWN0ZWQu DQo+IA0KPiBVbmZvcnR1bmF0ZWx5IHdlIGRvbid0IGhhdmUgYSB3YXkgb2Yg cmVwcmVzZW50aW5nICJsYXN0IGJpdCBzZXQsIGFsbCBvdGhlcg0KPiBiaXRz IGNsZWFyIiBhcyBhIGNvbnN0YW50IHRob3VnaCwgc28gSSBndWVzcyBpdCds bCBoYXZlIHRvIGJlIGhpZGRlbg0KPiBiZWhpbmQgdW5zcGVjcy4NCj4gDQo+ IEkgbWVhbnQgdG8gc3RhcnQgU1ZFIHRlc3RzIHJ1bm5pbmcgb25jZSBJJ2Qg ZmluaXNoZWQgZm9yIHRoZSBkYXkgeWVzdGVyZGF5LA0KPiBidXQgZm9yZ290 LCBzb3JyeS4gIFdpbGwgdHJ5IHRvIHRlc3QgdG9kYXkuDQo+IA0KPiBPbiB0 aGUgcGF0Y2g6DQo+IA0KPiArICAvKiBUaGlzIGlzIHRoZSBzZWNvbmQgcGhh c2Ugb2YgdmVjdG9yaXppbmcgZmlyc3Qtb3JkZXIgcmVjZWN1cnJlbmNlcy4g QW4NCj4gKyAgICAgb3ZlcnZpZXcgb2YgdGhlIHRyYW5zZm9ybWF0aW9uIGlz IGRlc2NyaWJlZCBiZWxvdy4gU3VwcG9zZSB3ZSBoYXZlIHRoZQ0KPiArICAg ICBmb2xsb3dpbmcgbG9vcC4NCj4gKw0KPiArICAgICBpbnQzMl90IHQgPSAw Ow0KPiArICAgICBmb3IgKGludCBpID0gMDsgaSA8IG47ICsraSkNCj4gKyAg ICAgICB7DQo+ICsgYltpXSA9IGFbaV0gLSB0Ow0KPiArIHQgPSBhW2ldOw0K PiArICAgICAgfQ0KPiArDQo+ICsgICAgVGhlcmUgaXMgYSBmaXJzdC1vcmRl ciByZWN1cnJlbmNlIG9uICJhIi4gRm9yIHRoaXMgbG9vcCwgdGhlIHNob3J0 aGFuZA0KPiArICAgIHNjYWxhciBJUiBsb29rcyBsaWtlOg0KPiArDQo+ICsg ICAgc2NhbGFyLnByZWhlYWRlcjoNCj4gKyAgICAgIGluaXQgPSBhWy0xXQ0K PiArICAgICAgYnIgbG9vcC5ib2R5DQo+ICsNCj4gKyAgICBzY2FsYXIuYm9k eToNCj4gKyAgICAgIGkgPSBQSEkgPDAoc2NhbGFyLnByZWhlYWRlciksIGkr MShzY2FsYXIuYm9keSk+DQo+ICsgICAgICBfMiA9IFBISSA8KGluaXQoc2Nh bGFyLnByZWhlYWRlciksIDxfMShzY2FsYXIuYm9keSk+DQo+ICsgICAgICBf MSA9IGFbaV0NCj4gKyAgICAgIGJbaV0gPSBfMSAtIF8yDQo+ICsgICAgICBi ciBjb25kLCBzY2FsYXIuYm9keSwgLi4uDQo+ICsNCj4gKyAgICBJbiB0aGlz IGV4YW1wbGUsIF8yIGlzIGEgcmVjdXJyZW5jZSBiZWNhdXNlIGl0J3MgdmFs dWUgZGVwZW5kcyBvbiB0aGUNCj4gKyAgICBwcmV2aW91cyBpdGVyYXRpb24u IEluIHRoZSBmaXJzdCBwaGFzZSBvZiB2ZWN0b3JpemF0aW9uLCB3ZSBjcmVh dGVkIGENCj4gKyAgICB0ZW1wb3JhcnkgdmFsdWUgZm9yIF8yLiBXZSBub3cg Y29tcGxldGUgdGhlIHZlY3Rvcml6YXRpb24gYW5kIHByb2R1Y2UgdGhlDQo+ ICsgICAgc2hvcnRoYW5kIHZlY3RvciBJUiBzaG93biBiZWxvdyAoVkYgPSA0 KS4NCj4gKw0KPiArICAgIHZlY3Rvci5wcmVoZWFkZXI6DQo+ICsgICAgICB2 ZWN0X2luaXQgPSB2ZWN0X2NzdCguLi4sIC4uLiwgLi4uLCBhWy0xXSkNCj4g KyAgICAgIGJyIHZlY3Rvci5ib2R5DQo+ICsNCj4gKyAgICB2ZWN0b3IuYm9k eQ0KPiArICAgICAgaSA9IFBISSA8MCh2ZWN0b3IucHJlaGVhZGVyKSwgaSs0 KHZlY3Rvci5ib2R5KT4NCj4gKyAgICAgIHZlY3RfMSA9IFBISSA8dmVjdF9p bml0KHZlY3Rvci5wcmVoZWFkZXIpLCB2Mih2ZWN0b3IuYm9keSk+DQo+ICsg ICAgICB2ZWN0XzIgPSBhW2ksIGkrMSwgaSsyLCBpKzNdOw0KPiArICAgICAg dmVjdF8zID0gdmVjdG9yKHZlY3RfMSgzKSwgdmVjdF8yKDAsIDEsIDIpKQ0K PiArICAgICAgYltpLCBpKzEsIGkrMiwgaSszXSA9IHZlY3RfMiAtIHZlY3Rf Mw0KPiArICAgICAgYnIgY29uZCwgdmVjdG9yLmJvZHksIG1pZGRsZS5ibG9j aw0KPiArDQo+ICsgICAgbWlkZGxlLmJsb2NrOg0KPiArICAgICAgeCA9IHZl Y3RfMigzKQ0KPiArICAgICAgYnIgc2NhbGFyLnByZWhlYWRlcg0KPiArDQo+ ICsgICAgc2NhbGFyLnBoOg0KPiArICAgICAgc19pbml0ID0gUEhJIDx4KG1p ZGRsZS5ibG9jayksIGFbLTFdLCBvdGhlcndpc2U+DQo+ICsgICAgICBiciBz Y2FsYXIuYm9keQ0KPiArDQo+ICsgICAgQWZ0ZXIgZXhlY3V0aW9uIGNvbXBs ZXRlcyB0aGUgdmVjdG9yIGxvb3AsIHdlIGV4dHJhY3QgdGhlIG5leHQgdmFs dWUgb2YNCj4gKyAgICB0aGUgcmVjdXJyZW5jZSAoeCkgdG8gdXNlIGFzIHRo ZSBpbml0aWFsIHZhbHVlIGluIHRoZSBzY2FsYXIgbG9vcC4gICovDQo+IA0K PiBMb29rcyBsaWtlIGFbLTFdIHNob3VsZCBiZSB6ZXJvIGluIHRoZSBleGFt cGxlIChvciB0IHNob3VsZCBiZSBpbml0aWFsaXNlZA0KPiB0byBhWy0xXSku DQogDQpJbmRlZWQuICBJJ3ZlIHByb21vdGVkIHRoZSBjb21tZW50IHRvIGZ1 bmN0aW9uIGxldmVsIGFuZCBhZGp1c3RlZCBpdA0KdG8gcmVmbGVjdCB3aGF0 IGlzIGRvbmUgbm93IChJJ3ZlIG1pc3NlZCB0byB1cGRhdGUgaXQgZnJvbSBK dS1aaGVzDQpwcm90b3R5cGUpLiAgSSBoYXZlIGFsc28gYXBwbGllZCB5b3Vy IGNvcnJlY3RuZXNzIGZpeC4NCiANClJlLWJvb3RzdHJhcCBhbmQgcmVndGVz dCBydW5uaW5nIG9uIHg4Nl82NC11bmtub3duLWxpbnV4LWdudS4NCiANCk9L IChnaXZlbiBsaW1pdGVkIHg4NiB0ZXN0IHF1YWxpdHkpPw0KIA0KVGhhbmtz LA0KUmljaGFyZC4NCiANCkZyb20gMDU0YmIwMDdiMDkzMzQ0MDJmMDE4YTRi MmI2NWFlZjE1MGNkODE4MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDENCkZy b206IFJpY2hhcmQgQmllbmVyIDxyZ3VlbnRoZXJAc3VzZS5kZT4NCkRhdGU6 IFRodSwgNiBPY3QgMjAyMiAxMzo1NjowOSArMDIwMA0KU3ViamVjdDogW1BB VENIXSBWZWN0b3JpemF0aW9uIG9mIGZpcnN0LW9yZGVyIHJlY3VycmVuY2Vz DQpUbzogZ2NjLXBhdGNoZXNAZ2NjLmdudS5vcmcNCiANClRoZSBmb2xsb3dp bmcgcGlja3MgdXAgdGhlIHByb3RvdHlwZSBieSBKdS1aaGUgWmhvbmcgZm9y IHZlY3Rvcml6aW5nDQpmaXJzdCBvcmRlciByZWN1cnJlbmNlcy4gIFRoYXQg c29sdmVzIHR3byBUU1ZDIG1pc3NlZCBvcHRpbWl6YXRpb24gUFJzLg0KIA0K VGhlcmUncyBhIG5ldyBzY2FsYXIgY3ljbGUgZGVmIGtpbmQsIHZlY3RfZmly c3Rfb3JkZXJfcmVjdXJyZW5jZQ0KYW5kIGl0J3MgaGFuZGxpbmcgb2YgdGhl IGJhY2tlZGdlIHZhbHVlIHZlY3Rvcml6YXRpb24gaXMgY29tcGxpY2F0ZWQN CmJ5IHRoZSBmYWN0IHRoYXQgdGhlIHZlY3Rvcml6ZWQgdmFsdWUgaXNuJ3Qg dGhlIFBISSBidXQgaW5zdGVhZA0KYSAoc2VyaWVzIG9mKSBwZXJtdXRlKHMp IHNoaWZ0aW5nIGluIHRoZSByZWN1cnJpbmcgdmFsdWUgZnJvbSB0aGUNCnBy ZXZpb3VzIGl0ZXJhdGlvbi4gIEkndmUgaW1wbGVtZW50ZWQgdGhpcyBieSBj cmVhdGluZyBib3RoIHRoZQ0Kc2luZ2xlIHZlY3Rvcml6ZWQgUEhJIGFuZCB0 aGUgc2VyaWVzIG9mIHBlcm11dGVzIHdoZW4gdmVjdG9yaXppbmcNCnRoZSBz Y2FsYXIgUEhJIGJ1dCBsZWF2ZSB0aGUgYmFja2VkZ2UgdmFsdWVzIGluIGJv dGggdW5hc3NpZ25lZC4NClRoZSBiYWNrZWRnZSB2YWx1ZXMgYXJlIChmb3Ig dGhlIHRlc3RjYXNlcykgY29tcHV0ZWQgYnkgYSBsb2FkDQp3aGljaCBpcyBh bHNvIHRoZSBwbGFjZSBhZnRlciB3aGljaCB0aGUgcGVybXV0ZXMgYXJlIGlu c2VydGVkLg0KVGhhdCBwbGFjZW1lbnQgYWxzbyByZXN0cmljdHMgdGhlIGNh c2VzIHdlIGNhbiBoYW5kbGUgKHdpdGhvdXQNCnJlc29ydGluZyB0byBjb2Rl IG1vdGlvbikuDQogDQpJIGFkZGVkIGJvdGggY29zdGluZyBhbmQgU0xQIGhh bmRsaW5nIHRob3VnaCBTTFAgaGFuZGxpbmcgaXMNCnJlc3RyaWN0ZWQgdG8g dGhlIGNhc2Ugd2hlcmUgYSBzaW5nbGUgdmVjdG9yaXplZCBQSEkgaXMgZW5v dWdoLg0KIA0KTWlzc2luZyBpcyBlcGlsb2d1ZSBoYW5kbGluZyAtIHdoaWxl IHByb2xvZ3VlIHBlZWxpbmcgd291bGQNCmJlIGhhbmRsZWQgdHJhbnNwYXJl bnRseSBieSBhZGp1c3RpbmcgaXZfcGhpX3AgdGhlIGVwaWxvZ3VlDQpjYXNl IGRvZXNuJ3Qgd29yayB3aXRoIGp1c3QgaW5zZXJ0aW5nIGEgc2NhbGFyIExD IFBISSBzaW5jZQ0KdGhhdCBhKSBrZWVwcyB0aGUgc2NhbGFyIGxvYWQgbGl2 ZSBhbmQgYikgdGhhdCBsb2FkcyBpcyB0aGUNCndyb25nIG9uZSwgaXQgaGFz IHRvIGJlIHRoZSBsYXN0LCBtdWNoIGxpa2Ugd2hlbiB3ZSdkIHZlY3Rvcml6 ZQ0KdGhlIExDIFBISSBhcyBsaXZlIG9wZXJhdGlvbi4gIFVuZm9ydHVuYXRl bHkgTElWRQ0KY29tcHV0ZS9hbmFseXNpcyBoYXBwZW5zIHRvbyBlYXJseSBi ZWZvcmUgd2UgZGVjaWRlIG9uDQpwZWVsaW5nLiAgV2hlbiB1c2luZyBmdWxs eSBtYXNrZWQgbG9vcCB2ZWN0b3JpemF0aW9uIHRoZQ0KdmVjdC1yZWN1cnIt Ni5jIHdvcmtzIGFzIGV4cGVjdGVkIHRob3VnaC4NCiANCkkgaGF2ZSB0ZXN0 ZWQgdGhpcyBvbiB4ODZfNjQgZm9yIG5vdywgYnV0IHNpbmNlIGVwaWxvZ3Vl DQpoYW5kbGluZyBpcyBtaXNzaW5nIHRoZXJlJ3MgcHJvYmFibHkgbm8gcHJh Y3RpY2FsIGNhc2VzLg0KTXkgcHJvdG90eXBlIFdISUxFX1VMVCBBVlg1MTIg cGF0Y2ggY2FuIGhhbmRsZSB2ZWN0LXJlY3Vyci02LmMNCmp1c3QgZmluZSBi dXQgSSBkaWRuJ3QgZmVlbCBsaWtlIHJ1bm5pbmcgU1BFQyB3aXRoaW4gU0RF IG5vcg0KaXMgdGhlIFdISUxFX1VMVCBwYXRjaCBjb21wbGV0ZSBlbm91Z2gu DQogDQpQUiB0cmVlLW9wdGltaXphdGlvbi85OTQwOQ0KUFIgdHJlZS1vcHRp bWl6YXRpb24vOTkzOTQNCiogdHJlZS12ZWN0b3JpemVyLmggKHZlY3RfZGVm X3R5cGU6OnZlY3RfZmlyc3Rfb3JkZXJfcmVjdXJyZW5jZSk6IEFkZC4NCihz dG10X3ZlY19pbmZvX3R5cGU6OnJlY3Vycl9pbmZvX3R5cGUpOiBMaWtld2lz ZS4NCih2ZWN0b3JpemFibGVfcmVjdXJyKTogTmV3IGZ1bmN0aW9uLg0KKiB0 cmVlLXZlY3QtbG9vcC5jYyAodmVjdF9waGlfZmlyc3Rfb3JkZXJfcmVjdXJy ZW5jZV9wKTogTmV3DQpmdW5jdGlvbi4NCih2ZWN0X2FuYWx5emVfc2NhbGFy X2N5Y2xlc18xKTogTG9vayBmb3IgZmlyc3Qgb3JkZXINCnJlY3VycmVuY2Vz Lg0KKHZlY3RfYW5hbHl6ZV9sb29wX29wZXJhdGlvbnMpOiBIYW5kbGUgdGhl bS4NCih2ZWN0X3RyYW5zZm9ybV9sb29wKTogTGlrZXdpc2UuDQoodmVjdG9y aXphYmxlX3JlY3Vycik6IE5ldyBmdW5jdGlvbi4NCihtYXliZV9zZXRfdmVj dG9yaXplZF9iYWNrZWRnZV92YWx1ZSk6IEhhbmRsZSB0aGUgYmFja2VkZ2Ug dmFsdWUNCnNldHRpbmcgaW4gdGhlIGZpcnN0IG9yZGVyIHJlY3VycmVuY2Ug UEhJIGFuZCB0aGUgcGVybXV0ZXMuDQoqIHRyZWUtdmVjdC1zdG10cy5jYyAo dmVjdF9hbmFseXplX3N0bXQpOiBIYW5kbGUgZmlyc3Qgb3JkZXINCnJlY3Vy cmVuY2VzLg0KKHZlY3RfdHJhbnNmb3JtX3N0bXQpOiBMaWtld2lzZS4NCih2 ZWN0X2lzX3NpbXBsZV91c2UpOiBMaWtld2lzZS4NCih2ZWN0X2lzX3NpbXBs ZV91c2UpOiBMaWtld2lzZS4NCiogdHJlZS12ZWN0LXNscC5jYyAodmVjdF9n ZXRfYW5kX2NoZWNrX3NscF9kZWZzKTogTGlrZXdpc2UuDQoodmVjdF9idWls ZF9zbHBfdHJlZV8yKTogTGlrZXdpc2UuDQoodmVjdF9zY2hlZHVsZV9zY2Mp OiBIYW5kbGUgdGhlIGJhY2tlZGdlIHZhbHVlIHNldHRpbmcgaW4gdGhlDQpm aXJzdCBvcmRlciByZWN1cnJlbmNlIFBISSBhbmQgdGhlIHBlcm11dGVzLg0K IA0KKiBnY2MuZGcvdmVjdC92ZWN0LXJlY3Vyci0xLmM6IE5ldyB0ZXN0Y2Fz ZS4NCiogZ2NjLmRnL3ZlY3QvdmVjdC1yZWN1cnItMi5jOiBMaWtld2lzZS4N CiogZ2NjLmRnL3ZlY3QvdmVjdC1yZWN1cnItMy5jOiBMaWtld2lzZS4NCiog Z2NjLmRnL3ZlY3QvdmVjdC1yZWN1cnItNC5jOiBMaWtld2lzZS4NCiogZ2Nj LmRnL3ZlY3QvdmVjdC1yZWN1cnItNS5jOiBMaWtld2lzZS4NCiogZ2NjLmRn L3ZlY3QvdmVjdC1yZWN1cnItNi5jOiBMaWtld2lzZS4NCiogZ2NjLmRnL3Zl Y3QvdHN2Yy92ZWN0LXRzdmMtczI1Mi5jOiBVbi1YRkFJTC4NCiogZ2NjLmRn L3ZlY3QvdHN2Yy92ZWN0LXRzdmMtczI1NC5jOiBMaWtld2lzZS4NCiogZ2Nj LmRnL3ZlY3QvdHN2Yy92ZWN0LXRzdmMtczI5MS5jOiBMaWtld2lzZS4NCiAN CkNvLWF1dGhvcmVkLWJ5OiBKdS1aaGUgWmhvbmcgPGp1emhlLnpob25nQHJp dmFpLmFpPg0KLS0tDQouLi4vZ2NjLmRnL3ZlY3QvdHN2Yy92ZWN0LXRzdmMt czI1Mi5jICAgICAgICAgfCAgIDIgKy0NCi4uLi9nY2MuZGcvdmVjdC90c3Zj L3ZlY3QtdHN2Yy1zMjU0LmMgICAgICAgICB8ICAgMiArLQ0KLi4uL2djYy5k Zy92ZWN0L3RzdmMvdmVjdC10c3ZjLXMyOTEuYyAgICAgICAgIHwgICAyICst DQpnY2MvdGVzdHN1aXRlL2djYy5kZy92ZWN0L3ZlY3QtcmVjdXJyLTEuYyAg ICAgfCAgMzggKysrDQpnY2MvdGVzdHN1aXRlL2djYy5kZy92ZWN0L3ZlY3Qt cmVjdXJyLTIuYyAgICAgfCAgMzkgKysrDQpnY2MvdGVzdHN1aXRlL2djYy5k Zy92ZWN0L3ZlY3QtcmVjdXJyLTMuYyAgICAgfCAgMzkgKysrDQpnY2MvdGVz dHN1aXRlL2djYy5kZy92ZWN0L3ZlY3QtcmVjdXJyLTQuYyAgICAgfCAgNDIg KysrDQpnY2MvdGVzdHN1aXRlL2djYy5kZy92ZWN0L3ZlY3QtcmVjdXJyLTUu YyAgICAgfCAgNDMgKysrDQpnY2MvdGVzdHN1aXRlL2djYy5kZy92ZWN0L3Zl Y3QtcmVjdXJyLTYuYyAgICAgfCAgMzkgKysrDQpnY2MvdHJlZS12ZWN0LWxv b3AuY2MgICAgICAgICAgICAgICAgICAgICAgICAgfCAyODEgKysrKysrKysr KysrKysrKy0tDQpnY2MvdHJlZS12ZWN0LXNscC5jYyAgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgMzggKystDQpnY2MvdHJlZS12ZWN0LXN0bXRzLmNj ICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTcgKy0NCmdjYy90cmVlLXZl Y3Rvcml6ZXIuaCAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNCArDQox MyBmaWxlcyBjaGFuZ2VkLCA1NTggaW5zZXJ0aW9ucygrKSwgMjggZGVsZXRp b25zKC0pDQpjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2Mu ZGcvdmVjdC92ZWN0LXJlY3Vyci0xLmMNCmNyZWF0ZSBtb2RlIDEwMDY0NCBn Y2MvdGVzdHN1aXRlL2djYy5kZy92ZWN0L3ZlY3QtcmVjdXJyLTIuYw0KY3Jl YXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLmRnL3ZlY3QvdmVj dC1yZWN1cnItMy5jDQpjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0 ZS9nY2MuZGcvdmVjdC92ZWN0LXJlY3Vyci00LmMNCmNyZWF0ZSBtb2RlIDEw MDY0NCBnY2MvdGVzdHN1aXRlL2djYy5kZy92ZWN0L3ZlY3QtcmVjdXJyLTUu Yw0KY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLmRnL3Zl Y3QvdmVjdC1yZWN1cnItNi5jDQogDQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3Rz dWl0ZS9nY2MuZGcvdmVjdC90c3ZjL3ZlY3QtdHN2Yy1zMjUyLmMgYi9nY2Mv dGVzdHN1aXRlL2djYy5kZy92ZWN0L3RzdmMvdmVjdC10c3ZjLXMyNTIuYw0K aW5kZXggZjEzMDJiNjBhZTUuLjgzZWFhN2E4ZmY1IDEwMDY0NA0KLS0tIGEv Z2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdmVjdC90c3ZjL3ZlY3QtdHN2Yy1zMjUy LmMNCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ZlY3QvdHN2Yy92ZWN0 LXRzdmMtczI1Mi5jDQpAQCAtNDAsNCArNDAsNCBAQCBpbnQgbWFpbiAoaW50 IGFyZ2MsIGNoYXIgKiphcmd2KQ0KICAgcmV0dXJuIDA7DQp9DQotLyogeyBk Zy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wICJ2ZWN0b3JpemVkIDEgbG9vcHMi ICJ2ZWN0IiB7IHhmYWlsICotKi0qIH0gfSB9ICovDQorLyogeyBkZy1maW5h bCB7IHNjYW4tdHJlZS1kdW1wICJ2ZWN0b3JpemVkIDEgbG9vcHMiICJ2ZWN0 IiB9IH0gKi8NCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy92 ZWN0L3RzdmMvdmVjdC10c3ZjLXMyNTQuYyBiL2djYy90ZXN0c3VpdGUvZ2Nj LmRnL3ZlY3QvdHN2Yy92ZWN0LXRzdmMtczI1NC5jDQppbmRleCBiZGM4YTAx ZTJhNS4uMDZlOWIwYTg0OWQgMTAwNjQ0DQotLS0gYS9nY2MvdGVzdHN1aXRl L2djYy5kZy92ZWN0L3RzdmMvdmVjdC10c3ZjLXMyNTQuYw0KKysrIGIvZ2Nj L3Rlc3RzdWl0ZS9nY2MuZGcvdmVjdC90c3ZjL3ZlY3QtdHN2Yy1zMjU0LmMN CkBAIC0zOSw0ICszOSw0IEBAIGludCBtYWluIChpbnQgYXJnYywgY2hhciAq KmFyZ3YpDQogICByZXR1cm4gMDsNCn0NCi0vKiB7IGRnLWZpbmFsIHsgc2Nh bi10cmVlLWR1bXAgInZlY3Rvcml6ZWQgMSBsb29wcyIgInZlY3QiIHsgeGZh aWwgKi0qLSogfSB9IH0gKi8NCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVl LWR1bXAgInZlY3Rvcml6ZWQgMSBsb29wcyIgInZlY3QiIH0gfSAqLw0KZGlm ZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ZlY3QvdHN2Yy92ZWN0 LXRzdmMtczI5MS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdmVjdC90c3Zj L3ZlY3QtdHN2Yy1zMjkxLmMNCmluZGV4IDBiNDc0YzJlODFhLi45MWNkYzEy MTA5NSAxMDA2NDQNCi0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ZlY3Qv dHN2Yy92ZWN0LXRzdmMtczI5MS5jDQorKysgYi9nY2MvdGVzdHN1aXRlL2dj Yy5kZy92ZWN0L3RzdmMvdmVjdC10c3ZjLXMyOTEuYw0KQEAgLTM5LDQgKzM5 LDQgQEAgaW50IG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikNCiAgIHJl dHVybiAwOw0KfQ0KLS8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAi dmVjdG9yaXplZCAxIGxvb3BzIiAidmVjdCIgeyB4ZmFpbCAqLSotKiB9IH0g fSAqLw0KKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAidmVjdG9y aXplZCAxIGxvb3BzIiAidmVjdCIgfSB9ICovDQpkaWZmIC0tZ2l0IGEvZ2Nj L3Rlc3RzdWl0ZS9nY2MuZGcvdmVjdC92ZWN0LXJlY3Vyci0xLmMgYi9nY2Mv dGVzdHN1aXRlL2djYy5kZy92ZWN0L3ZlY3QtcmVjdXJyLTEuYw0KbmV3IGZp bGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAwLi42ZWI1OWZkZjg1 NA0KLS0tIC9kZXYvbnVsbA0KKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcv dmVjdC92ZWN0LXJlY3Vyci0xLmMNCkBAIC0wLDAgKzEsMzggQEANCisvKiB7 IGRnLWRvIHJ1biB9ICovDQorLyogeyBkZy1yZXF1aXJlLWVmZmVjdGl2ZS10 YXJnZXQgdmVjdF9pbnQgfSAqLw0KKw0KKyNpbmNsdWRlICJ0cmVlLXZlY3Qu aCINCisNCit2b2lkIF9fYXR0cmlidXRlX18oKG5vaXBhKSkNCitmb28gKGlu dCAqIF9fcmVzdHJpY3RfXyBhLCBpbnQgKiBfX3Jlc3RyaWN0X18gYiwgaW50 ICogX19yZXN0cmljdF9fIGMpDQorew0KKyAgaW50IHQgPSAqYzsNCisgIGZv ciAoaW50IGkgPSAwOyBpIDwgNjQ7ICsraSkNCisgICAgew0KKyAgICAgIGJb aV0gPSBhW2ldIC0gdDsNCisgICAgICB0ID0gYVtpXTsNCisgICAgfQ0KK30N CisNCitpbnQgYVs2NF0sIGJbNjRdOw0KKw0KK2ludA0KK21haW4gKCkNCit7 DQorICBjaGVja192ZWN0ICgpOw0KKyAgZm9yIChpbnQgaSA9IDA7IGkgPCA2 NDsgKytpKQ0KKyAgICB7DQorICAgICAgYVtpXSA9IGk7DQorICAgICAgX19h c21fXyB2b2xhdGlsZSAoIiIgOjo6ICJtZW1vcnkiKTsNCisgICAgfQ0KKyAg aW50IGMgPSA3Ow0KKyAgZm9vIChhLCBiLCAmYyk7DQorICBmb3IgKGludCBp ID0gMTsgaSA8IDY0OyArK2kpDQorICAgIGlmIChiW2ldICE9IGFbaV0gLSBh W2ktMV0pDQorICAgICAgYWJvcnQgKCk7DQorICBpZiAoYlswXSAhPSAtNykN CisgICAgYWJvcnQgKCk7DQorICByZXR1cm4gMDsNCit9DQorDQorLyogeyBk Zy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wICJ2ZWN0b3JpemVkIDEgbG9vcHMg aW4gZnVuY3Rpb24iICJ2ZWN0IiB9IH0gKi8NCmRpZmYgLS1naXQgYS9nY2Mv dGVzdHN1aXRlL2djYy5kZy92ZWN0L3ZlY3QtcmVjdXJyLTIuYyBiL2djYy90 ZXN0c3VpdGUvZ2NjLmRnL3ZlY3QvdmVjdC1yZWN1cnItMi5jDQpuZXcgZmls ZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMDAuLjk3ZWZhYWEzOGJj DQotLS0gL2Rldi9udWxsDQorKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy92 ZWN0L3ZlY3QtcmVjdXJyLTIuYw0KQEAgLTAsMCArMSwzOSBAQA0KKy8qIHsg ZGctZG8gcnVuIH0gKi8NCisvKiB7IGRnLXJlcXVpcmUtZWZmZWN0aXZlLXRh cmdldCB2ZWN0X2ludCB9ICovDQorDQorI2luY2x1ZGUgInRyZWUtdmVjdC5o Ig0KKw0KK3ZvaWQgX19hdHRyaWJ1dGVfXygobm9pcGEpKQ0KK2ZvbyAoaW50 ICogX19yZXN0cmljdF9fIGEsIHNob3J0ICogX19yZXN0cmljdF9fIGIsIGlu dCAqIF9fcmVzdHJpY3RfXyBjKQ0KK3sNCisgIGludCB0ID0gKmM7DQorICBm b3IgKGludCBpID0gMDsgaSA8IDY0OyArK2kpDQorICAgIHsNCisgICAgICBi W2ldID0gYVtpXSAtIHQ7DQorICAgICAgdCA9IGFbaV07DQorICAgIH0NCit9 DQorDQoraW50IGFbNjRdOw0KK3Nob3J0IGJbNjRdOw0KKw0KK2ludA0KK21h aW4gKCkNCit7DQorICBjaGVja192ZWN0ICgpOw0KKyAgZm9yIChpbnQgaSA9 IDA7IGkgPCA2NDsgKytpKQ0KKyAgICB7DQorICAgICAgYVtpXSA9IGk7DQor ICAgICAgX19hc21fXyB2b2xhdGlsZSAoIiIgOjo6ICJtZW1vcnkiKTsNCisg ICAgfQ0KKyAgaW50IGMgPSA3Ow0KKyAgZm9vIChhLCBiLCAmYyk7DQorICBm b3IgKGludCBpID0gMTsgaSA8IDY0OyArK2kpDQorICAgIGlmIChiW2ldICE9 IGFbaV0gLSBhW2ktMV0pDQorICAgICAgYWJvcnQgKCk7DQorICBpZiAoYlsw XSAhPSAtNykNCisgICAgYWJvcnQgKCk7DQorICByZXR1cm4gMDsNCit9DQor DQorLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wICJ2ZWN0b3JpemVk IDEgbG9vcHMgaW4gZnVuY3Rpb24iICJ2ZWN0IiB9IH0gKi8NCmRpZmYgLS1n aXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy92ZWN0L3ZlY3QtcmVjdXJyLTMu YyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ZlY3QvdmVjdC1yZWN1cnItMy5j DQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMDAuLjYy MWE1ZDhhMjU3DQotLS0gL2Rldi9udWxsDQorKysgYi9nY2MvdGVzdHN1aXRl L2djYy5kZy92ZWN0L3ZlY3QtcmVjdXJyLTMuYw0KQEAgLTAsMCArMSwzOSBA QA0KKy8qIHsgZGctZG8gcnVuIH0gKi8NCisvKiB7IGRnLXJlcXVpcmUtZWZm ZWN0aXZlLXRhcmdldCB2ZWN0X2ludCB9ICovDQorDQorI2luY2x1ZGUgInRy ZWUtdmVjdC5oIg0KKw0KK3ZvaWQgX19hdHRyaWJ1dGVfXygobm9pcGEpKQ0K K2ZvbyAoaW50ICogX19yZXN0cmljdF9fIGEsIHNpZ25lZCBjaGFyICogX19y ZXN0cmljdF9fIGIsIGludCAqIF9fcmVzdHJpY3RfXyBjKQ0KK3sNCisgIGlu dCB0ID0gKmM7DQorICBmb3IgKGludCBpID0gMDsgaSA8IDY0OyArK2kpDQor ICAgIHsNCisgICAgICBiW2ldID0gYVtpXSAtIHQ7DQorICAgICAgdCA9IGFb aV07DQorICAgIH0NCit9DQorDQoraW50IGFbNjRdOw0KK3NpZ25lZCBjaGFy IGJbNjRdOw0KKw0KK2ludA0KK21haW4gKCkNCit7DQorICBjaGVja192ZWN0 ICgpOw0KKyAgZm9yIChpbnQgaSA9IDA7IGkgPCA2NDsgKytpKQ0KKyAgICB7 DQorICAgICAgYVtpXSA9IGk7DQorICAgICAgX19hc21fXyB2b2xhdGlsZSAo IiIgOjo6ICJtZW1vcnkiKTsNCisgICAgfQ0KKyAgaW50IGMgPSA3Ow0KKyAg Zm9vIChhLCBiLCAmYyk7DQorICBmb3IgKGludCBpID0gMTsgaSA8IDY0OyAr K2kpDQorICAgIGlmIChiW2ldICE9IGFbaV0gLSBhW2ktMV0pDQorICAgICAg YWJvcnQgKCk7DQorICBpZiAoYlswXSAhPSAtNykNCisgICAgYWJvcnQgKCk7 DQorICByZXR1cm4gMDsNCit9DQorDQorLyogeyBkZy1maW5hbCB7IHNjYW4t dHJlZS1kdW1wICJ2ZWN0b3JpemVkIDEgbG9vcHMgaW4gZnVuY3Rpb24iICJ2 ZWN0IiB9IH0gKi8NCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5k Zy92ZWN0L3ZlY3QtcmVjdXJyLTQuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRn L3ZlY3QvdmVjdC1yZWN1cnItNC5jDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0K aW5kZXggMDAwMDAwMDAwMDAuLmY2ZGJjNDk0YTYyDQotLS0gL2Rldi9udWxs DQorKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy92ZWN0L3ZlY3QtcmVjdXJy LTQuYw0KQEAgLTAsMCArMSw0MiBAQA0KKy8qIHsgZGctZG8gcnVuIH0gKi8N CisvKiB7IGRnLXJlcXVpcmUtZWZmZWN0aXZlLXRhcmdldCB2ZWN0X2ludCB9 ICovDQorDQorI2luY2x1ZGUgInRyZWUtdmVjdC5oIg0KKw0KK3ZvaWQgX19h dHRyaWJ1dGVfXygobm9pcGEpKQ0KK2ZvbyAoaW50ICogX19yZXN0cmljdF9f IGEsIGludCAqIF9fcmVzdHJpY3RfXyBiLCBpbnQgKiBfX3Jlc3RyaWN0X18g YykNCit7DQorICBpbnQgdDEgPSAqYzsNCisgIGludCB0MiA9ICpjOw0KKyAg Zm9yIChpbnQgaSA9IDA7IGkgPCA2NDsgaSs9MikNCisgICAgew0KKyAgICAg IGJbaV0gPSBhW2ldIC0gdDE7DQorICAgICAgdDEgPSBhW2ldOw0KKyAgICAg IGJbaSsxXSA9IGFbaSsxXSAtIHQyOw0KKyAgICAgIHQyID0gYVtpKzFdOw0K KyAgICB9DQorfQ0KKw0KK2ludCBhWzY0XSwgYls2NF07DQorDQoraW50DQor bWFpbiAoKQ0KK3sNCisgIGNoZWNrX3ZlY3QgKCk7DQorICBmb3IgKGludCBp ID0gMDsgaSA8IDY0OyArK2kpDQorICAgIHsNCisgICAgICBhW2ldID0gaTsN CisgICAgICBfX2FzbV9fIHZvbGF0aWxlICgiIiA6OjogIm1lbW9yeSIpOw0K KyAgICB9DQorICBpbnQgYyA9IDc7DQorICBmb28gKGEsIGIsICZjKTsNCisg IGZvciAoaW50IGkgPSAyOyBpIDwgNjQ7IGkrPTIpDQorICAgIGlmIChiW2ld ICE9IGFbaV0gLSBhW2ktMl0NCisgfHwgYltpKzFdICE9IGFbaSsxXSAtIGFb aS0xXSkNCisgICAgICBhYm9ydCAoKTsNCisgIGlmIChiWzBdICE9IC03IHx8 IGJbMV0gIT0gLTYpDQorICAgIGFib3J0ICgpOw0KKyAgcmV0dXJuIDA7DQor fQ0KKw0KKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAidmVjdG9y aXplZCAxIGxvb3BzIGluIGZ1bmN0aW9uIiAidmVjdCIgfSB9ICovDQpkaWZm IC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdmVjdC92ZWN0LXJlY3Vy ci01LmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy92ZWN0L3ZlY3QtcmVjdXJy LTUuYw0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAw Li4xOWM1NmRmOWU4Mw0KLS0tIC9kZXYvbnVsbA0KKysrIGIvZ2NjL3Rlc3Rz dWl0ZS9nY2MuZGcvdmVjdC92ZWN0LXJlY3Vyci01LmMNCkBAIC0wLDAgKzEs NDMgQEANCisvKiB7IGRnLWRvIHJ1biB9ICovDQorLyogeyBkZy1yZXF1aXJl LWVmZmVjdGl2ZS10YXJnZXQgdmVjdF9pbnQgfSAqLw0KKw0KKyNpbmNsdWRl ICJ0cmVlLXZlY3QuaCINCisNCit2b2lkIF9fYXR0cmlidXRlX18oKG5vaXBh KSkNCitmb28gKGludCAqIF9fcmVzdHJpY3RfXyBhLCBzaG9ydCAqIF9fcmVz dHJpY3RfXyBiLCBpbnQgKiBfX3Jlc3RyaWN0X18gYykNCit7DQorICBpbnQg dDEgPSAqYzsNCisgIGludCB0MiA9ICpjOw0KKyAgZm9yIChpbnQgaSA9IDA7 IGkgPCA2NDsgaSs9MikNCisgICAgew0KKyAgICAgIGJbaV0gPSBhW2ldIC0g dDE7DQorICAgICAgdDEgPSBhW2ldOw0KKyAgICAgIGJbaSsxXSA9IGFbaSsx XSAtIHQyOw0KKyAgICAgIHQyID0gYVtpKzFdOw0KKyAgICB9DQorfQ0KKw0K K2ludCBhWzY0XTsNCitzaG9ydCBiWzY0XTsNCisNCitpbnQNCittYWluICgp DQorew0KKyAgY2hlY2tfdmVjdCAoKTsNCisgIGZvciAoaW50IGkgPSAwOyBp IDwgNjQ7ICsraSkNCisgICAgew0KKyAgICAgIGFbaV0gPSBpOw0KKyAgICAg IF9fYXNtX18gdm9sYXRpbGUgKCIiIDo6OiAibWVtb3J5Iik7DQorICAgIH0N CisgIGludCBjID0gNzsNCisgIGZvbyAoYSwgYiwgJmMpOw0KKyAgZm9yIChp bnQgaSA9IDI7IGkgPCA2NDsgaSs9MikNCisgICAgaWYgKGJbaV0gIT0gYVtp XSAtIGFbaS0yXQ0KKyB8fCBiW2krMV0gIT0gYVtpKzFdIC0gYVtpLTFdKQ0K KyAgICAgIGFib3J0ICgpOw0KKyAgaWYgKGJbMF0gIT0gLTcgfHwgYlsxXSAh PSAtNikNCisgICAgYWJvcnQgKCk7DQorICByZXR1cm4gMDsNCit9DQorDQor LyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wICJ2ZWN0b3JpemVkIDEg bG9vcHMgaW4gZnVuY3Rpb24iICJ2ZWN0IiB9IH0gKi8NCmRpZmYgLS1naXQg YS9nY2MvdGVzdHN1aXRlL2djYy5kZy92ZWN0L3ZlY3QtcmVjdXJyLTYuYyBi L2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ZlY3QvdmVjdC1yZWN1cnItNi5jDQpu ZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMDAuLmU3NzEy NjgwODUzDQotLS0gL2Rldi9udWxsDQorKysgYi9nY2MvdGVzdHN1aXRlL2dj Yy5kZy92ZWN0L3ZlY3QtcmVjdXJyLTYuYw0KQEAgLTAsMCArMSwzOSBAQA0K Ky8qIHsgZGctZG8gcnVuIH0gKi8NCisvKiB7IGRnLXJlcXVpcmUtZWZmZWN0 aXZlLXRhcmdldCB2ZWN0X2ludCB9ICovDQorDQorI2luY2x1ZGUgInRyZWUt dmVjdC5oIg0KKw0KK3ZvaWQgX19hdHRyaWJ1dGVfXygobm9pcGEpKQ0KK2Zv byAoaW50ICogX19yZXN0cmljdF9fIGEsIGludCAqIF9fcmVzdHJpY3RfXyBi LCBpbnQgKiBfX3Jlc3RyaWN0X18gYywgaW50IG4pDQorew0KKyAgaW50IHQg PSAqYzsNCisgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgKytpKQ0KKyAgICB7 DQorICAgICAgYltpXSA9IGFbaV0gLSB0Ow0KKyAgICAgIHQgPSBhW2ldOw0K KyAgICB9DQorfQ0KKw0KK2ludCBhWzY0XSwgYls2NF07DQorDQoraW50DQor bWFpbiAoKQ0KK3sNCisgIGNoZWNrX3ZlY3QgKCk7DQorICBmb3IgKGludCBp ID0gMDsgaSA8IDY0OyArK2kpDQorICAgIHsNCisgICAgICBhW2ldID0gaTsN CisgICAgICBfX2FzbV9fIHZvbGF0aWxlICgiIiA6OjogIm1lbW9yeSIpOw0K KyAgICB9DQorICBpbnQgYyA9IDc7DQorICBmb28gKGEsIGIsICZjLCA2Myk7 DQorICBmb3IgKGludCBpID0gMTsgaSA8IDYzOyArK2kpDQorICAgIGlmIChi W2ldICE9IGFbaV0gLSBhW2ktMV0pDQorICAgICAgYWJvcnQgKCk7DQorICBp ZiAoYlswXSAhPSAtNykNCisgICAgYWJvcnQgKCk7DQorICByZXR1cm4gMDsN Cit9DQorDQorLyogPz8/ICBXZSBtaXNzIGVwaWxvZ3VlIGhhbmRsaW5nIGZv ciBmaXJzdCBvcmRlciByZWN1cnJlbmNlcy4gICovDQorLyogeyBkZy1maW5h bCB7IHNjYW4tdHJlZS1kdW1wICJ2ZWN0b3JpemVkIDEgbG9vcHMgaW4gZnVu Y3Rpb24iICJ2ZWN0IiB7IHRhcmdldCB2ZWN0X2Z1bGx5X21hc2tlZCB9IH0g fSAqLw0KZGlmZiAtLWdpdCBhL2djYy90cmVlLXZlY3QtbG9vcC5jYyBiL2dj Yy90cmVlLXZlY3QtbG9vcC5jYw0KaW5kZXggOThhOTQzZDhhNGIuLjYzZTg2 NTQwZDEyIDEwMDY0NA0KLS0tIGEvZ2NjL3RyZWUtdmVjdC1sb29wLmNjDQor KysgYi9nY2MvdHJlZS12ZWN0LWxvb3AuY2MNCkBAIC01MjksNiArNTI5LDQ1 IEBAIHZlY3RfaW5uZXJfcGhpX2luX2RvdWJsZV9yZWR1Y3Rpb25fcCAobG9v cF92ZWNfaW5mbyBsb29wX3ZpbmZvLCBncGhpICpwaGkpDQogICByZXR1cm4g ZmFsc2U7DQp9DQorLyogUmV0dXJucyB0cnVlIGlmIFBoaSBpcyBhIGZpcnN0 LW9yZGVyIHJlY3VycmVuY2UuIEEgZmlyc3Qtb3JkZXINCisgICByZWN1cnJl bmNlIGlzIGEgbm9uLXJlZHVjdGlvbiByZWN1cnJlbmNlIHJlbGF0aW9uIGlu IHdoaWNoIHRoZSB2YWx1ZSBvZg0KKyAgIHRoZSByZWN1cnJlbmNlIGluIHRo ZSBjdXJyZW50IGxvb3AgaXRlcmF0aW9uIGVxdWFscyBhIHZhbHVlIGRlZmlu ZWQgaW4NCisgICB0aGUgcHJldmlvdXMgaXRlcmF0aW9uLiAgKi8NCisNCitz dGF0aWMgYm9vbA0KK3ZlY3RfcGhpX2ZpcnN0X29yZGVyX3JlY3VycmVuY2Vf cCAobG9vcF92ZWNfaW5mbyBsb29wX3ZpbmZvLCBjbGFzcyBsb29wICpsb29w LA0KKyAgICBncGhpICpwaGkpDQorew0KKyAgLyogRW5zdXJlIHRoZSBsb29w IGxhdGNoIGRlZmluaXRpb24gaXMgZnJvbSB3aXRoaW4gdGhlIGxvb3AuICAq Lw0KKyAgZWRnZSBsYXRjaCA9IGxvb3BfbGF0Y2hfZWRnZSAobG9vcCk7DQor ICB0cmVlIGxkZWYgPSBQSElfQVJHX0RFRl9GUk9NX0VER0UgKHBoaSwgbGF0 Y2gpOw0KKyAgaWYgKFRSRUVfQ09ERSAobGRlZikgIT0gU1NBX05BTUUNCisg ICAgICB8fCBTU0FfTkFNRV9JU19ERUZBVUxUX0RFRiAobGRlZikNCisgICAg ICB8fCAhZmxvd19iYl9pbnNpZGVfbG9vcF9wIChsb29wLCBnaW1wbGVfYmIg KFNTQV9OQU1FX0RFRl9TVE1UIChsZGVmKSkpKQ0KKyAgICByZXR1cm4gZmFs c2U7DQorDQorICB0cmVlIGRlZiA9IGdpbXBsZV9waGlfcmVzdWx0IChwaGkp Ow0KKw0KKyAgLyogRW5zdXJlIGV2ZXJ5IHVzZV9zdG10IG9mIHRoZSBwaGkg bm9kZSBpcyBkb21pbmF0ZWQgYnkgdGhlIGxhdGNoDQorICAgICBkZWZpbml0 aW9uLiAgKi8NCisgIGltbV91c2VfaXRlcmF0b3IgaW1tX2l0ZXI7DQorICB1 c2Vfb3BlcmFuZF9wIHVzZV9wOw0KKyAgRk9SX0VBQ0hfSU1NX1VTRV9GQVNU ICh1c2VfcCwgaW1tX2l0ZXIsIGRlZikNCisgICAgaWYgKCFpc19naW1wbGVf ZGVidWcgKFVTRV9TVE1UICh1c2VfcCkpDQorICYmIChTU0FfTkFNRV9ERUZf U1RNVCAobGRlZikgPT0gVVNFX1NUTVQgKHVzZV9wKQ0KKyAgICAgfHwgIXZl Y3Rfc3RtdF9kb21pbmF0ZXNfc3RtdF9wIChTU0FfTkFNRV9ERUZfU1RNVCAo bGRlZiksDQorICAgICBVU0VfU1RNVCAodXNlX3ApKSkpDQorICAgICAgcmV0 dXJuIGZhbHNlOw0KKw0KKyAgLyogRmlyc3Qtb3JkZXIgcmVjdXJyZW5jZSBh dXRvdmVjdG9yaXphdGlvbiBuZWVkcyBzaHVmZmxlIHZlY3Rvci4gICovDQor ICB0cmVlIHNjYWxhcl90eXBlID0gVFJFRV9UWVBFIChkZWYpOw0KKyAgdHJl ZSB2ZWN0eXBlID0gZ2V0X3ZlY3R5cGVfZm9yX3NjYWxhcl90eXBlIChsb29w X3ZpbmZvLCBzY2FsYXJfdHlwZSk7DQorICBpZiAoIXZlY3R5cGUpDQorICAg IHJldHVybiBmYWxzZTsNCisNCisgIHJldHVybiB0cnVlOw0KK30NCisNCi8q IEZ1bmN0aW9uIHZlY3RfYW5hbHl6ZV9zY2FsYXJfY3ljbGVzXzEuDQogICAg RXhhbWluZSB0aGUgY3Jvc3MgaXRlcmF0aW9uIGRlZi11c2UgY3ljbGVzIG9m IHNjYWxhciB2YXJpYWJsZXMNCkBAIC02NjYsNiArNzA1LDggQEAgdmVjdF9h bmFseXplX3NjYWxhcl9jeWNsZXNfMSAobG9vcF92ZWNfaW5mbyBsb29wX3Zp bmZvLCBjbGFzcyBsb29wICpsb29wLA0KICAgICAgICAgICAgICAgICB9DQog ICAgICAgICAgICAgfQ0KICAgICAgICAgfQ0KKyAgICAgIGVsc2UgaWYgKHZl Y3RfcGhpX2ZpcnN0X29yZGVyX3JlY3VycmVuY2VfcCAobG9vcF92aW5mbywg bG9vcCwgcGhpKSkNCisgU1RNVF9WSU5GT19ERUZfVFlQRSAoc3RtdF92aW5m bykgPSB2ZWN0X2ZpcnN0X29yZGVyX3JlY3VycmVuY2U7DQogICAgICAgZWxz ZQ0KICAgICAgICAgaWYgKGR1bXBfZW5hYmxlZF9wICgpKQ0KICAgICAgICAg ICBkdW1wX3ByaW50Zl9sb2MgKE1TR19NSVNTRURfT1BUSU1JWkFUSU9OLCB2 ZWN0X2xvY2F0aW9uLA0KQEAgLTE4MTAsNyArMTg1MSw4IEBAIHZlY3RfYW5h bHl6ZV9sb29wX29wZXJhdGlvbnMgKGxvb3BfdmVjX2luZm8gbG9vcF92aW5m bykNCiAgICAgICAgICAgaWYgKChTVE1UX1ZJTkZPX1JFTEVWQU5UIChzdG10 X2luZm8pID09IHZlY3RfdXNlZF9pbl9zY29wZQ0KICAgICAgICAgICAgICAg IHx8IFNUTVRfVklORk9fTElWRV9QIChzdG10X2luZm8pKQ0KLSAgICAgICAg ICAgICAgJiYgU1RNVF9WSU5GT19ERUZfVFlQRSAoc3RtdF9pbmZvKSAhPSB2 ZWN0X2luZHVjdGlvbl9kZWYpDQorICAgICAgICYmIFNUTVRfVklORk9fREVG X1RZUEUgKHN0bXRfaW5mbykgIT0gdmVjdF9pbmR1Y3Rpb25fZGVmDQorICAg ICAgICYmIFNUTVRfVklORk9fREVGX1RZUEUgKHN0bXRfaW5mbykgIT0gdmVj dF9maXJzdF9vcmRlcl9yZWN1cnJlbmNlKQ0KICAgIC8qIEEgc2NhbGFyLWRl cGVuZGVuY2UgY3ljbGUgdGhhdCB3ZSBkb24ndCBzdXBwb3J0LiAgKi8NCiAg ICByZXR1cm4gb3B0X3Jlc3VsdDo6ZmFpbHVyZV9hdCAocGhpLA0KICAgIm5v dCB2ZWN0b3JpemVkOiINCkBAIC0xODMxLDYgKzE4NzMsMTEgQEAgdmVjdF9h bmFseXplX2xvb3Bfb3BlcmF0aW9ucyAobG9vcF92ZWNfaW5mbyBsb29wX3Zp bmZvKQ0KICAgICAgICYmICEgUFVSRV9TTFBfU1RNVCAoc3RtdF9pbmZvKSkN Cm9rID0gdmVjdG9yaXphYmxlX3JlZHVjdGlvbiAobG9vcF92aW5mbywNCiAg ICAgc3RtdF9pbmZvLCBOVUxMLCBOVUxMLCAmY29zdF92ZWMpOw0KKyAgICAg ICBlbHNlIGlmICgoU1RNVF9WSU5GT19ERUZfVFlQRSAoc3RtdF9pbmZvKQ0K KyA9PSB2ZWN0X2ZpcnN0X29yZGVyX3JlY3VycmVuY2UpDQorICAgICAgICAm JiAhIFBVUkVfU0xQX1NUTVQgKHN0bXRfaW5mbykpDQorIG9rID0gdmVjdG9y aXphYmxlX3JlY3VyciAobG9vcF92aW5mbywgc3RtdF9pbmZvLCBOVUxMLCBO VUxMLA0KKyAgICAmY29zdF92ZWMpOw0KICAgICAgICAgICAgIH0NCiAgLyog U0xQIFBISXMgYXJlIHRlc3RlZCBieSB2ZWN0X3NscF9hbmFseXplX25vZGVf b3BlcmF0aW9ucy4gICovDQpAQCAtODI5MCw2ICs4MzM3LDE3OCBAQCB2ZWN0 b3JpemFibGVfcGhpICh2ZWNfaW5mbyAqLA0KICAgcmV0dXJuIHRydWU7DQp9 DQorLyogVmVjdG9yaXplcyBmaXJzdCBvcmRlciByZWN1cnJlbmNlcy4gIEFu IG92ZXJ2aWV3IG9mIHRoZSB0cmFuc2Zvcm1hdGlvbg0KKyAgIGlzIGRlc2Ny aWJlZCBiZWxvdy4gU3VwcG9zZSB3ZSBoYXZlIHRoZSBmb2xsb3dpbmcgbG9v cC4NCisNCisgICAgIGludCB0ID0gMDsNCisgICAgIGZvciAoaW50IGkgPSAw OyBpIDwgbjsgKytpKQ0KKyAgICAgICB7DQorIGJbaV0gPSBhW2ldIC0gdDsN CisgdCA9IGFbaV07DQorICAgICAgIH0NCisNCisgICBUaGVyZSBpcyBhIGZp cnN0LW9yZGVyIHJlY3VycmVuY2Ugb24gJ2EnLiBGb3IgdGhpcyBsb29wLCB0 aGUgc2NhbGFyIElSDQorICAgbG9va3MgKHNpbXBsaWZpZWQpIGxpa2U6DQor DQorICAgIHNjYWxhci5wcmVoZWFkZXI6DQorICAgICAgaW5pdCA9IDA7DQor DQorICAgIHNjYWxhci5ib2R5Og0KKyAgICAgIGkgPSBQSEkgPDAoc2NhbGFy LnByZWhlYWRlciksIGkrMShzY2FsYXIuYm9keSk+DQorICAgICAgXzIgPSBQ SEkgPChpbml0KHNjYWxhci5wcmVoZWFkZXIpLCA8XzEoc2NhbGFyLmJvZHkp Pg0KKyAgICAgIF8xID0gYVtpXQ0KKyAgICAgIGJbaV0gPSBfMSAtIF8yDQor ICAgICAgaWYgKGkgPCBuKSBnb3RvIHNjYWxhci5ib2R5DQorDQorICAgSW4g dGhpcyBleGFtcGxlLCBfMiBpcyBhIHJlY3VycmVuY2UgYmVjYXVzZSBpdCdz IHZhbHVlIGRlcGVuZHMgb24gdGhlDQorICAgcHJldmlvdXMgaXRlcmF0aW9u LiAgV2UgdmVjdG9yaXplIHRoaXMgYXMgKFZGID0gNCkNCisNCisgICAgdmVj dG9yLnByZWhlYWRlcjoNCisgICAgICB2ZWN0X2luaXQgPSB2ZWN0X2NzdCgu Li4sIC4uLiwgLi4uLCAwKQ0KKw0KKyAgICB2ZWN0b3IuYm9keQ0KKyAgICAg IGkgPSBQSEkgPDAodmVjdG9yLnByZWhlYWRlciksIGkrNCh2ZWN0b3IuYm9k eSk+DQorICAgICAgdmVjdF8xID0gUEhJIDx2ZWN0X2luaXQodmVjdG9yLnBy ZWhlYWRlciksIHYyKHZlY3Rvci5ib2R5KT4NCisgICAgICB2ZWN0XzIgPSBh W2ksIGkrMSwgaSsyLCBpKzNdOw0KKyAgICAgIHZlY3RfMyA9IHZlY19wZXJt ICh2ZWN0XzEsIHZlY3RfMiwgeyAzLCA0LCA1LCA2IH0pDQorICAgICAgYltp LCBpKzEsIGkrMiwgaSszXSA9IHZlY3RfMiAtIHZlY3RfMw0KKyAgICAgIGlm ICguLikgZ290byB2ZWN0b3IuYm9keQ0KKw0KKyAgIEluIHRoaXMgZnVuY3Rp b24sIHZlY3Rvcml6YWJsZV9yZWN1cnIsIHdlIGNvZGUgZ2VuZXJhdGUgYm90 aCB0aGUNCisgICB2ZWN0b3IgUEhJIG5vZGUgYW5kIHRoZSBwZXJtdXRlIHNp bmNlIHRob3NlIHRvZ2V0aGVyIGNvbXB1dGUgdGhlDQorICAgdmVjdG9yaXpl ZCB2YWx1ZSBvZiB0aGUgc2NhbGFyIFBISS4gIFdlIGRvIG5vdCB5ZXQgaGF2 ZSB0aGUNCisgICBiYWNrZWRnZSB2YWx1ZSB0byBmaWxsIGluIHRoZXJlIG5v ciBpbnRvIHRoZSB2ZWNfcGVybS4gIFRob3NlDQorICAgYXJlIGZpbGxlZCBp biBtYXliZV9zZXRfdmVjdG9yaXplZF9iYWNrZWRnZV92YWx1ZSBhbmQNCisg ICB2ZWN0X3NjaGVkdWxlX3NjYy4NCisNCisgICBUT0RPOiAgU2luY2UgdGhl IHNjYWxhciBsb29wIGRvZXMgbm90IGhhdmUgYSB1c2Ugb2YgdGhlIHJlY3Vy cmVuY2UNCisgICBvdXRzaWRlIG9mIHRoZSBsb29wIHRoZSBuYXR1cmFsIHdh eSB0byBpbXBsZW1lbnQgcGVlbGluZyB2aWENCisgICB2ZWN0b3JpemluZyB0 aGUgbGl2ZSB2YWx1ZSBkb2Vzbid0IHdvcmsuICBGb3Igbm93IHBlZWxpbmcg b2YgbG9vcHMNCisgICB3aXRoIGEgcmVjdXJyZW5jZSBpcyBub3QgaW1wbGVt ZW50ZWQuICBGb3IgU0xQIHRoZSBzdXBwb3J0ZWQgY2FzZXMNCisgICBhcmUg cmVzdHJpY3RlZCB0byB0aG9zZSByZXF1aXJpbmcgYSBzaW5nbGUgdmVjdG9y IHJlY3VycmVuY2UgUEhJLiAgKi8NCisNCitib29sDQordmVjdG9yaXphYmxl X3JlY3VyciAobG9vcF92ZWNfaW5mbyBsb29wX3ZpbmZvLCBzdG10X3ZlY19p bmZvIHN0bXRfaW5mbywNCisgICAgICBnaW1wbGUgKip2ZWNfc3RtdCwgc2xw X3RyZWUgc2xwX25vZGUsDQorICAgICAgc3RtdF92ZWN0b3JfZm9yX2Nvc3Qg KmNvc3RfdmVjKQ0KK3sNCisgIGlmICghbG9vcF92aW5mbyB8fCAhaXNfYTxn cGhpICo+IChzdG10X2luZm8tPnN0bXQpKQ0KKyAgICByZXR1cm4gZmFsc2U7 DQorDQorICBncGhpICpwaGkgPSBhc19hPGdwaGkgKj4gKHN0bXRfaW5mby0+ c3RtdCk7DQorDQorICAvKiBTbyBmYXIgd2Ugb25seSBzdXBwb3J0IGZpcnN0 LW9yZGVyIHJlY3VycmVuY2UgYXV0by12ZWN0b3JpemF0aW9uLiAgKi8NCisg IGlmIChTVE1UX1ZJTkZPX0RFRl9UWVBFIChzdG10X2luZm8pICE9IHZlY3Rf Zmlyc3Rfb3JkZXJfcmVjdXJyZW5jZSkNCisgICAgcmV0dXJuIGZhbHNlOw0K Kw0KKyAgdHJlZSB2ZWN0eXBlID0gU1RNVF9WSU5GT19WRUNUWVBFIChzdG10 X2luZm8pOw0KKyAgdW5zaWduZWQgbmNvcGllczsNCisgIGlmIChzbHBfbm9k ZSkNCisgICAgbmNvcGllcyA9IFNMUF9UUkVFX05VTUJFUl9PRl9WRUNfU1RN VFMgKHNscF9ub2RlKTsNCisgIGVsc2UNCisgICAgbmNvcGllcyA9IHZlY3Rf Z2V0X251bV9jb3BpZXMgKGxvb3BfdmluZm8sIHZlY3R5cGUpOw0KKyAgcG9s eV9pbnQ2NCBudW5pdHMgPSBUWVBFX1ZFQ1RPUl9TVUJQQVJUUyAodmVjdHlw ZSk7DQorICB1bnNpZ25lZCBkaXN0ID0gc2xwX25vZGUgPyBTTFBfVFJFRV9M QU5FUyAoc2xwX25vZGUpIDogMTsNCisgIC8qIFdlIG5lZWQgdG8gYmUgYWJs ZSB0byBtYWtlIHByb2dyZXNzIHdpdGggYSBzaW5nbGUgdmVjdG9yLiAgKi8N CisgIGlmIChtYXliZV9ndCAoZGlzdCAqIDIsIG51bml0cykpDQorICAgIHsN CisgICAgICBpZiAoZHVtcF9lbmFibGVkX3AgKCkpDQorIGR1bXBfcHJpbnRm X2xvYyAoTVNHX01JU1NFRF9PUFRJTUlaQVRJT04sIHZlY3RfbG9jYXRpb24s DQorICJmaXJzdCBvcmRlciByZWN1cnJlbmNlIGV4Y2VlZHMgaGFsZiBvZiAi DQorICJhIHZlY3RvclxuIik7DQorICAgICAgcmV0dXJuIGZhbHNlOw0KKyAg ICB9DQorDQorICAvKiBGaXJzdC1vcmRlciByZWN1cnJlbmNlIGF1dG92ZWN0 b3JpemF0aW9uIG5lZWRzIHRvIGhhbmRsZSBwZXJtdXRhdGlvbg0KKyAgICAg d2l0aCBpbmRpY2VzID0gW251bml0cy0xLCBudW5pdHMsIG51bml0cysxLCAu Li5dLiAgKi8NCisgIHZlY19wZXJtX2J1aWxkZXIgc2VsIChudW5pdHMsIDEs IDMpOw0KKyAgZm9yIChpbnQgaSA9IDA7IGkgPCAzOyArK2kpDQorICAgIHNl bC5xdWlja19wdXNoIChudW5pdHMgLSBkaXN0ICsgaSk7DQorICB2ZWNfcGVy bV9pbmRpY2VzIGluZGljZXMgKHNlbCwgMiwgbnVuaXRzKTsNCisNCisgIGlm ICghdmVjX3N0bXQpIC8qIHRyYW5zZm9ybWF0aW9uIG5vdCByZXF1aXJlZC4g ICovDQorICAgIHsNCisgICAgICBpZiAoIWNhbl92ZWNfcGVybV9jb25zdF9w IChUWVBFX01PREUgKHZlY3R5cGUpLCBUWVBFX01PREUgKHZlY3R5cGUpLA0K KyBpbmRpY2VzKSkNCisgcmV0dXJuIGZhbHNlOw0KKw0KKyAgICAgIGlmIChz bHBfbm9kZSkNCisgew0KKyAgIC8qIFdlIGV2ZW50dWFsbHkgbmVlZCB0byBz ZXQgYSB2ZWN0b3IgdHlwZSBvbiBpbnZhcmlhbnQNCisgICAgICBhcmd1bWVu dHMuICAqLw0KKyAgIHVuc2lnbmVkIGo7DQorICAgc2xwX3RyZWUgY2hpbGQ7 DQorICAgRk9SX0VBQ0hfVkVDX0VMVCAoU0xQX1RSRUVfQ0hJTERSRU4gKHNs cF9ub2RlKSwgaiwgY2hpbGQpDQorICAgICBpZiAoIXZlY3RfbWF5YmVfdXBk YXRlX3NscF9vcF92ZWN0eXBlDQorICAgKGNoaWxkLCBTTFBfVFJFRV9WRUNU WVBFIChzbHBfbm9kZSkpKQ0KKyAgICAgICB7DQorIGlmIChkdW1wX2VuYWJs ZWRfcCAoKSkNCisgICBkdW1wX3ByaW50Zl9sb2MgKE1TR19NSVNTRURfT1BU SU1JWkFUSU9OLCB2ZWN0X2xvY2F0aW9uLA0KKyAgICAiaW5jb21wYXRpYmxl IHZlY3RvciB0eXBlcyBmb3IgIg0KKyAgICAiaW52YXJpYW50c1xuIik7DQor IHJldHVybiBmYWxzZTsNCisgICAgICAgfQ0KKyB9DQorICAgICAgLyogVGhl IHJlY3VycmVuY2UgY29zdHMgdGhlIGluaXRpYWxpemF0aW9uIHZlY3RvciBh bmQgb25lIHBlcm11dGUNCisgZm9yIGVhY2ggY29weS4gICovDQorICAgICAg dW5zaWduZWQgcHJvbG9ndWVfY29zdCA9IHJlY29yZF9zdG10X2Nvc3QgKGNv c3RfdmVjLCAxLCBzY2FsYXJfdG9fdmVjLA0KKyBzdG10X2luZm8sIDAsIHZl Y3RfcHJvbG9ndWUpOw0KKyAgICAgIHVuc2lnbmVkIGluc2lkZV9jb3N0ID0g cmVjb3JkX3N0bXRfY29zdCAoY29zdF92ZWMsIG5jb3BpZXMsIHZlY3Rvcl9z dG10LA0KKyAgICAgICAgc3RtdF9pbmZvLCAwLCB2ZWN0X2JvZHkpOw0KKyAg ICAgIGlmIChkdW1wX2VuYWJsZWRfcCAoKSkNCisgZHVtcF9wcmludGZfbG9j IChNU0dfTk9URSwgdmVjdF9sb2NhdGlvbiwNCisgInZlY3Rvcml6YWJsZV9y ZWN1cnI6IGluc2lkZV9jb3N0ID0gJWQsICINCisgInByb2xvZ3VlX2Nvc3Qg PSAlZCAuXG4iLCBpbnNpZGVfY29zdCwNCisgcHJvbG9ndWVfY29zdCk7DQor DQorICAgICAgU1RNVF9WSU5GT19UWVBFIChzdG10X2luZm8pID0gcmVjdXJy X2luZm9fdHlwZTsNCisgICAgICByZXR1cm4gdHJ1ZTsNCisgICAgfQ0KKw0K KyAgZWRnZSBwZSA9IGxvb3BfcHJlaGVhZGVyX2VkZ2UgKExPT1BfVklORk9f TE9PUCAobG9vcF92aW5mbykpOw0KKyAgYmFzaWNfYmxvY2sgYmIgPSBnaW1w bGVfYmIgKHBoaSk7DQorICB0cmVlIHByZWhlYWRlciA9IFBISV9BUkdfREVG X0ZST01fRURHRSAocGhpLCBwZSk7DQorICB0cmVlIHZlY19pbml0ID0gYnVp bGRfdmVjdG9yX2Zyb21fdmFsICh2ZWN0eXBlLCBwcmVoZWFkZXIpOw0KKyAg dmVjX2luaXQgPSB2ZWN0X2luaXRfdmVjdG9yIChsb29wX3ZpbmZvLCBzdG10 X2luZm8sIHZlY19pbml0LCB2ZWN0eXBlLCBOVUxMKTsNCisNCisgIC8qIENy ZWF0ZSB0aGUgdmVjdG9yaXplZCBmaXJzdC1vcmRlciBQSEkgbm9kZS4gICov DQorICB0cmVlIHZlY19kZXN0ID0gdmVjdF9nZXRfbmV3X3ZlY3RfdmFyICh2 ZWN0eXBlLA0KKyB2ZWN0X3NpbXBsZV92YXIsICJ2ZWNfcmVjdXJfIik7DQor ICBncGhpICpuZXdfcGhpID0gY3JlYXRlX3BoaV9ub2RlICh2ZWNfZGVzdCwg YmIpOw0KKyAgYWRkX3BoaV9hcmcgKG5ld19waGksIHZlY19pbml0LCBwZSwg VU5LTk9XTl9MT0NBVElPTik7DQorDQorICAvKiBJbnNlcnQgc2h1ZmZsZXMg dGhlIGZpcnN0LW9yZGVyIHJlY3VycmVuY2UgYXV0b3ZlY3Rvcml6YXRpb24u DQorICAgICAgIHJlc3VsdCA9IFZFQ19QRVJNIDx2ZWNfcmVjdXIsIHZlY3Rf MSwgaW5kZXhbbnVuaXRzLTEsIG51bml0cywgLi4uXT4uICAqLw0KKyAgdHJl ZSBwZXJtID0gdmVjdF9nZW5fcGVybV9tYXNrX2NoZWNrZWQgKHZlY3R5cGUs IGluZGljZXMpOw0KKw0KKyAgLyogSW5zZXJ0IHRoZSByZXF1aXJlZCBwZXJt dXRlIGFmdGVyIHRoZSBsYXRjaCBkZWZpbml0aW9uLiAgVGhlDQorICAgICBz ZWNvbmQgYW5kIGxhdGVyIG9wZXJhbmRzIGFyZSB0ZW50YXRpdmUgYW5kIHdp bGwgYmUgdXBkYXRlZCB3aGVuIHdlIGhhdmUNCisgICAgIHZlY3Rvcml6ZWQg dGhlIGxhdGNoIGRlZmluaXRpb24uICAqLw0KKyAgZWRnZSBsZSA9IGxvb3Bf bGF0Y2hfZWRnZSAoTE9PUF9WSU5GT19MT09QIChsb29wX3ZpbmZvKSk7DQor ICBnaW1wbGVfc3RtdF9pdGVyYXRvciBnc2kyDQorICAgID0gZ3NpX2Zvcl9z dG10IChTU0FfTkFNRV9ERUZfU1RNVCAoUEhJX0FSR19ERUZfRlJPTV9FREdF IChwaGksIGxlKSkpOw0KKyAgZ3NpX25leHQgKCZnc2kyKTsNCisNCisgIGZv ciAodW5zaWduZWQgaSA9IDA7IGkgPCBuY29waWVzOyArK2kpDQorICAgIHsN CisgICAgICB2ZWNfZGVzdCA9IG1ha2Vfc3NhX25hbWUgKHZlY3R5cGUpOw0K KyAgICAgIGdhc3NpZ24gKnZwZXJtDQorICAgPSBnaW1wbGVfYnVpbGRfYXNz aWduICh2ZWNfZGVzdCwgVkVDX1BFUk1fRVhQUiwNCisgaSA9PSAwID8gZ2lt cGxlX3BoaV9yZXN1bHQgKG5ld19waGkpIDogTlVMTCwNCisgTlVMTCwgcGVy bSk7DQorICAgICAgdmVjdF9maW5pc2hfc3RtdF9nZW5lcmF0aW9uIChsb29w X3ZpbmZvLCBzdG10X2luZm8sIHZwZXJtLCAmZ3NpMik7DQorDQorICAgICAg aWYgKHNscF9ub2RlKQ0KKyBTTFBfVFJFRV9WRUNfU1RNVFMgKHNscF9ub2Rl KS5xdWlja19wdXNoICh2cGVybSk7DQorICAgICAgZWxzZQ0KKyBTVE1UX1ZJ TkZPX1ZFQ19TVE1UUyAoc3RtdF9pbmZvKS5zYWZlX3B1c2ggKHZwZXJtKTsN CisgICAgfQ0KKw0KKyAgaWYgKCFzbHBfbm9kZSkNCisgICAgKnZlY19zdG10 ID0gU1RNVF9WSU5GT19WRUNfU1RNVFMgKHN0bXRfaW5mbylbMF07DQorICBy ZXR1cm4gdHJ1ZTsNCit9DQorDQovKiBSZXR1cm4gdHJ1ZSBpZiBWRUNUWVBF IHJlcHJlc2VudHMgYSB2ZWN0b3IgdGhhdCByZXF1aXJlcyBsb3dlcmluZw0K ICAgIGJ5IHRoZSB2ZWN0b3IgbG93ZXJpbmcgcGFzcy4gICovDQpAQCAtMTAy NDIsMjcgKzEwNDYxLDUzIEBAIG1heWJlX3NldF92ZWN0b3JpemVkX2JhY2tl ZGdlX3ZhbHVlIChsb29wX3ZlY19pbmZvIGxvb3BfdmluZm8sDQogICBpbW1f dXNlX2l0ZXJhdG9yIGl0ZXI7DQogICB1c2Vfb3BlcmFuZF9wIHVzZV9wOw0K ICAgRk9SX0VBQ0hfSU1NX1VTRV9GQVNUICh1c2VfcCwgaXRlciwgZGVmKQ0K LSAgICBpZiAoZ3BoaSAqcGhpID0gZHluX2Nhc3QgPGdwaGkgKj4gKFVTRV9T VE1UICh1c2VfcCkpKQ0KLSAgICAgIGlmIChnaW1wbGVfYmIgKHBoaSktPmxv b3BfZmF0aGVyLT5oZWFkZXIgPT0gZ2ltcGxlX2JiIChwaGkpDQotICAgJiYg KHBoaV9pbmZvID0gbG9vcF92aW5mby0+bG9va3VwX3N0bXQgKHBoaSkpDQot ICAgJiYgU1RNVF9WSU5GT19SRUxFVkFOVF9QIChwaGlfaW5mbykNCi0gICAm JiBWRUNUT1JJWkFCTEVfQ1lDTEVfREVGIChTVE1UX1ZJTkZPX0RFRl9UWVBF IChwaGlfaW5mbykpDQorICAgIHsNCisgICAgICBncGhpICpwaGkgPSBkeW5f Y2FzdCA8Z3BoaSAqPiAoVVNFX1NUTVQgKHVzZV9wKSk7DQorICAgICAgaWYg KCFwaGkpDQorIGNvbnRpbnVlOw0KKyAgICAgIGlmICghKGdpbXBsZV9iYiAo cGhpKS0+bG9vcF9mYXRoZXItPmhlYWRlciA9PSBnaW1wbGVfYmIgKHBoaSkN CisgICAgICYmIChwaGlfaW5mbyA9IGxvb3BfdmluZm8tPmxvb2t1cF9zdG10 IChwaGkpKQ0KKyAgICAgJiYgU1RNVF9WSU5GT19SRUxFVkFOVF9QIChwaGlf aW5mbykpKQ0KKyBjb250aW51ZTsNCisgICAgICBsb29wX3AgbG9vcCA9IGdp bXBsZV9iYiAocGhpKS0+bG9vcF9mYXRoZXI7DQorICAgICAgZWRnZSBlID0g bG9vcF9sYXRjaF9lZGdlIChsb29wKTsNCisgICAgICBpZiAoUEhJX0FSR19E RUZfRlJPTV9FREdFIChwaGksIGUpICE9IGRlZikNCisgY29udGludWU7DQor DQorICAgICAgaWYgKFZFQ1RPUklaQUJMRV9DWUNMRV9ERUYgKFNUTVRfVklO Rk9fREVGX1RZUEUgKHBoaV9pbmZvKSkNCiAgJiYgU1RNVF9WSU5GT19SRURV Q19UWVBFIChwaGlfaW5mbykgIT0gRk9MRF9MRUZUX1JFRFVDVElPTg0KICAm JiBTVE1UX1ZJTkZPX1JFRFVDX1RZUEUgKHBoaV9pbmZvKSAhPSBFWFRSQUNU X0xBU1RfUkVEVUNUSU9OKQ0Kew0KLSAgIGxvb3BfcCBsb29wID0gZ2ltcGxl X2JiIChwaGkpLT5sb29wX2ZhdGhlcjsNCi0gICBlZGdlIGUgPSBsb29wX2xh dGNoX2VkZ2UgKGxvb3ApOw0KLSAgIGlmIChQSElfQVJHX0RFRl9GUk9NX0VE R0UgKHBoaSwgZSkgPT0gZGVmKQ0KKyAgIHZlYzxnaW1wbGUgKj4gJnBoaV9k ZWZzID0gU1RNVF9WSU5GT19WRUNfU1RNVFMgKHBoaV9pbmZvKTsNCisgICB2 ZWM8Z2ltcGxlICo+ICZsYXRjaF9kZWZzID0gU1RNVF9WSU5GT19WRUNfU1RN VFMgKGRlZl9zdG10X2luZm8pOw0KKyAgIGdjY19hc3NlcnQgKHBoaV9kZWZz Lmxlbmd0aCAoKSA9PSBsYXRjaF9kZWZzLmxlbmd0aCAoKSk7DQorICAgZm9y ICh1bnNpZ25lZCBpID0gMDsgaSA8IHBoaV9kZWZzLmxlbmd0aCAoKTsgKytp KQ0KKyAgICAgYWRkX3BoaV9hcmcgKGFzX2EgPGdwaGkgKj4gKHBoaV9kZWZz W2ldKSwNCisgZ2ltcGxlX2dldF9saHMgKGxhdGNoX2RlZnNbaV0pLCBlLA0K KyBnaW1wbGVfcGhpX2FyZ19sb2NhdGlvbiAocGhpLCBlLT5kZXN0X2lkeCkp Ow0KKyB9DQorICAgICAgZWxzZSBpZiAoU1RNVF9WSU5GT19ERUZfVFlQRSAo cGhpX2luZm8pID09IHZlY3RfZmlyc3Rfb3JkZXJfcmVjdXJyZW5jZSkNCisg ew0KKyAgIC8qIEZvciBmaXJzdCBvcmRlciByZWN1cnJlbmNlcyB3ZSBoYXZl IHRvIHVwZGF0ZSBib3RoIHVzZXMgb2YNCisgICAgICB0aGUgbGF0Y2ggZGVm aW5pdGlvbiwgdGhlIG9uZSBpbiB0aGUgUEhJIG5vZGUgYW5kIHRoZSBvbmUN CisgICAgICBpbiB0aGUgZ2VuZXJhdGVkIFZFQ19QRVJNX0VYUFIuICAqLw0K KyAgIHZlYzxnaW1wbGUgKj4gJnBoaV9kZWZzID0gU1RNVF9WSU5GT19WRUNf U1RNVFMgKHBoaV9pbmZvKTsNCisgICB2ZWM8Z2ltcGxlICo+ICZsYXRjaF9k ZWZzID0gU1RNVF9WSU5GT19WRUNfU1RNVFMgKGRlZl9zdG10X2luZm8pOw0K KyAgIGdjY19hc3NlcnQgKHBoaV9kZWZzLmxlbmd0aCAoKSA9PSBsYXRjaF9k ZWZzLmxlbmd0aCAoKSk7DQorICAgdHJlZSBwaGlkZWYgPSBnaW1wbGVfYXNz aWduX3JoczEgKHBoaV9kZWZzWzBdKTsNCisgICBncGhpICp2cGhpID0gYXNf YSA8Z3BoaSAqPiAoU1NBX05BTUVfREVGX1NUTVQgKHBoaWRlZikpOw0KKyAg IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwaGlfZGVmcy5sZW5ndGggKCk7 ICsraSkNCiAgICB7DQotICAgICAgIHZlYzxnaW1wbGUgKj4gJnBoaV9kZWZz ID0gU1RNVF9WSU5GT19WRUNfU1RNVFMgKHBoaV9pbmZvKTsNCi0gICAgICAg dmVjPGdpbXBsZSAqPiAmbGF0Y2hfZGVmcyA9IFNUTVRfVklORk9fVkVDX1NU TVRTIChkZWZfc3RtdF9pbmZvKTsNCi0gICAgICAgZ2NjX2Fzc2VydCAocGhp X2RlZnMubGVuZ3RoICgpID09IGxhdGNoX2RlZnMubGVuZ3RoICgpKTsNCi0g ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBoaV9kZWZzLmxlbmd0 aCAoKTsgKytpKQ0KLSBhZGRfcGhpX2FyZyAoYXNfYSA8Z3BoaSAqPiAocGhp X2RlZnNbaV0pLA0KLSAgICAgIGdpbXBsZV9nZXRfbGhzIChsYXRjaF9kZWZz W2ldKSwgZSwNCi0gICAgICBnaW1wbGVfcGhpX2FyZ19sb2NhdGlvbiAocGhp LCBlLT5kZXN0X2lkeCkpOw0KKyAgICAgICBnYXNzaWduICpwZXJtID0gYXNf YSA8Z2Fzc2lnbiAqPiAocGhpX2RlZnNbaV0pOw0KKyAgICAgICBpZiAoaSA+ IDApDQorIGdpbXBsZV9hc3NpZ25fc2V0X3JoczEgKHBlcm0sIGdpbXBsZV9n ZXRfbGhzIChsYXRjaF9kZWZzW2ktMV0pKTsNCisgICAgICAgZ2ltcGxlX2Fz c2lnbl9zZXRfcmhzMiAocGVybSwgZ2ltcGxlX2dldF9saHMgKGxhdGNoX2Rl ZnNbaV0pKTsNCisgICAgICAgdXBkYXRlX3N0bXQgKHBlcm0pOw0KICAgIH0N CisgICBhZGRfcGhpX2FyZyAodnBoaSwgZ2ltcGxlX2dldF9saHMgKGxhdGNo X2RlZnMubGFzdCAoKSksIGUsDQorICAgICAgICBnaW1wbGVfcGhpX2FyZ19s b2NhdGlvbiAocGhpLCBlLT5kZXN0X2lkeCkpOw0KfQ0KKyAgICB9DQp9DQov KiBWZWN0b3JpemUgU1RNVF9JTkZPIGlmIHJlbGV2YW50LCBpbnNlcnRpbmcg YW55IG5ldyBpbnN0cnVjdGlvbnMgYmVmb3JlIEdTSS4NCkBAIC0xMDY3MSw2 ICsxMDkxNiw3IEBAIHZlY3RfdHJhbnNmb3JtX2xvb3AgKGxvb3BfdmVjX2lu Zm8gbG9vcF92aW5mbywgZ2ltcGxlICpsb29wX3ZlY3Rvcml6ZWRfY2FsbCkN CiAgICAgICB8fCBTVE1UX1ZJTkZPX0RFRl9UWVBFIChzdG10X2luZm8pID09 IHZlY3RfcmVkdWN0aW9uX2RlZg0KICAgICAgIHx8IFNUTVRfVklORk9fREVG X1RZUEUgKHN0bXRfaW5mbykgPT0gdmVjdF9kb3VibGVfcmVkdWN0aW9uX2Rl Zg0KICAgICAgIHx8IFNUTVRfVklORk9fREVGX1RZUEUgKHN0bXRfaW5mbykg PT0gdmVjdF9uZXN0ZWRfY3ljbGUNCisgICAgICAgIHx8IFNUTVRfVklORk9f REVGX1RZUEUgKHN0bXRfaW5mbykgPT0gdmVjdF9maXJzdF9vcmRlcl9yZWN1 cnJlbmNlDQogICAgICAgfHwgU1RNVF9WSU5GT19ERUZfVFlQRSAoc3RtdF9p bmZvKSA9PSB2ZWN0X2ludGVybmFsX2RlZikNCiAgICAgICYmICEgUFVSRV9T TFBfU1RNVCAoc3RtdF9pbmZvKSkNCiAgICB7DQpAQCAtMTA2OTYsNyArMTA5 NDIsOCBAQCB2ZWN0X3RyYW5zZm9ybV9sb29wIChsb29wX3ZlY19pbmZvIGxv b3BfdmluZm8sIGdpbXBsZSAqbG9vcF92ZWN0b3JpemVkX2NhbGwpDQogICAg ICAgfHwgU1RNVF9WSU5GT19ERUZfVFlQRSAoc3RtdF9pbmZvKSA9PSB2ZWN0 X3JlZHVjdGlvbl9kZWYNCiAgICAgICB8fCBTVE1UX1ZJTkZPX0RFRl9UWVBF IChzdG10X2luZm8pID09IHZlY3RfZG91YmxlX3JlZHVjdGlvbl9kZWYNCiAg ICAgICB8fCBTVE1UX1ZJTkZPX0RFRl9UWVBFIChzdG10X2luZm8pID09IHZl Y3RfbmVzdGVkX2N5Y2xlDQotICAgICAgICB8fCBTVE1UX1ZJTkZPX0RFRl9U WVBFIChzdG10X2luZm8pID09IHZlY3RfaW50ZXJuYWxfZGVmKQ0KKyAgICAg ICAgfHwgU1RNVF9WSU5GT19ERUZfVFlQRSAoc3RtdF9pbmZvKSA9PSB2ZWN0 X2ludGVybmFsX2RlZg0KKyAgICAgICAgfHwgU1RNVF9WSU5GT19ERUZfVFlQ RSAoc3RtdF9pbmZvKSA9PSB2ZWN0X2ZpcnN0X29yZGVyX3JlY3VycmVuY2Up DQogICAgICAmJiAhIFBVUkVfU0xQX1NUTVQgKHN0bXRfaW5mbykpDQogICAg bWF5YmVfc2V0X3ZlY3Rvcml6ZWRfYmFja2VkZ2VfdmFsdWUgKGxvb3Bfdmlu Zm8sIHN0bXRfaW5mbyk7DQp9DQpkaWZmIC0tZ2l0IGEvZ2NjL3RyZWUtdmVj dC1zbHAuY2MgYi9nY2MvdHJlZS12ZWN0LXNscC5jYw0KaW5kZXggMjI5ZjI2 NjNlYmMuLmNlYTVkNTBkYTkyIDEwMDY0NA0KLS0tIGEvZ2NjL3RyZWUtdmVj dC1zbHAuY2MNCisrKyBiL2djYy90cmVlLXZlY3Qtc2xwLmNjDQpAQCAtNjkz LDYgKzY5Myw3IEBAIHZlY3RfZ2V0X2FuZF9jaGVja19zbHBfZGVmcyAodmVj X2luZm8gKnZpbmZvLCB1bnNpZ25lZCBjaGFyIHN3YXAsDQogICAgY2FzZSB2 ZWN0X3JlZHVjdGlvbl9kZWY6DQogICAgY2FzZSB2ZWN0X2luZHVjdGlvbl9k ZWY6DQogICAgY2FzZSB2ZWN0X25lc3RlZF9jeWNsZToNCisgICAgIGNhc2Ug dmVjdF9maXJzdF9vcmRlcl9yZWN1cnJlbmNlOg0KICAgICAgYnJlYWs7DQog ICAgZGVmYXVsdDoNCkBAIC0xNzMyLDcgKzE3MzMsOCBAQCB2ZWN0X2J1aWxk X3NscF90cmVlXzIgKHZlY19pbmZvICp2aW5mbywgc2xwX3RyZWUgbm9kZSwN CiAgfQ0KZWxzZSBpZiAoZGVmX3R5cGUgPT0gdmVjdF9yZWR1Y3Rpb25fZGVm DQp8fCBkZWZfdHlwZSA9PSB2ZWN0X2RvdWJsZV9yZWR1Y3Rpb25fZGVmDQot IHx8IGRlZl90eXBlID09IHZlY3RfbmVzdGVkX2N5Y2xlKQ0KKyB8fCBkZWZf dHlwZSA9PSB2ZWN0X25lc3RlZF9jeWNsZQ0KKyB8fCBkZWZfdHlwZSA9PSB2 ZWN0X2ZpcnN0X29yZGVyX3JlY3VycmVuY2UpDQogIHsNCiAgICAvKiBFbHNl IGRlZiB0eXBlcyBoYXZlIHRvIG1hdGNoLiAgKi8NCiAgICBzdG10X3ZlY19p bmZvIG90aGVyX2luZm87DQpAQCAtMTc0Niw3ICsxNzQ4LDggQEAgdmVjdF9i dWlsZF9zbHBfdHJlZV8yICh2ZWNfaW5mbyAqdmluZm8sIHNscF90cmVlIG5v ZGUsDQogICAgICB9DQogICAgY2xhc3MgbG9vcCAqbG9vcCA9IExPT1BfVklO Rk9fTE9PUCAobG9vcF92aW5mbyk7DQogICAgLyogUmVkdWN0aW9uIGluaXRp YWwgdmFsdWVzIGFyZSBub3QgZXhwbGljaXRlbHkgcmVwcmVzZW50ZWQuICAq Lw0KLSAgICAgaWYgKCFuZXN0ZWRfaW5fdmVjdF9sb29wX3AgKGxvb3AsIHN0 bXRfaW5mbykpDQorICAgICBpZiAoZGVmX3R5cGUgIT0gdmVjdF9maXJzdF9v cmRlcl9yZWN1cnJlbmNlDQorICYmICFuZXN0ZWRfaW5fdmVjdF9sb29wX3Ag KGxvb3AsIHN0bXRfaW5mbykpDQogICAgICBza2lwX2FyZ3NbbG9vcF9wcmVo ZWFkZXJfZWRnZSAobG9vcCktPmRlc3RfaWR4XSA9IHRydWU7DQogICAgLyog UmVkdWN0aW9uIGNoYWluIGJhY2tlZGdlIGRlZnMgYXJlIGZpbGxlZCBtYW51 YWxseS4NCiAgICAgICA/Pz8gIE5lZWQgYSBiZXR0ZXIgd2F5IHRvIGlkZW50 aWZ5IGEgU0xQIHJlZHVjdGlvbiBjaGFpbiBQSEkuDQpAQCAtOTE4NywxMSAr OTE5MCwzNCBAQCB2ZWN0X3NjaGVkdWxlX3NjYyAodmVjX2luZm8gKnZpbmZv LCBzbHBfdHJlZSBub2RlLCBzbHBfaW5zdGFuY2UgaW5zdGFuY2UsDQogIGNo aWxkID0gU0xQX1RSRUVfQ0hJTERSRU4gKHBoaV9ub2RlKVtkZXN0X2lkeF07 DQogIGlmICghY2hpbGQgfHwgU0xQX1RSRUVfREVGX1RZUEUgKGNoaWxkKSAh PSB2ZWN0X2ludGVybmFsX2RlZikNCiAgICBjb250aW51ZTsNCisgICB1bnNp Z25lZCBuID0gU0xQX1RSRUVfVkVDX1NUTVRTIChwaGlfbm9kZSkubGVuZ3Ro ICgpOw0KICAvKiBTaW1wbHkgZmlsbCBhbGwgYXJncy4gICovDQotICAgZm9y ICh1bnNpZ25lZCBpID0gMDsgaSA8IFNMUF9UUkVFX1ZFQ19TVE1UUyAocGhp X25vZGUpLmxlbmd0aCAoKTsgKytpKQ0KLSAgICAgYWRkX3BoaV9hcmcgKGFz X2EgPGdwaGkgKj4gKFNMUF9UUkVFX1ZFQ19TVE1UUyAocGhpX25vZGUpW2ld KSwNCi0gdmVjdF9nZXRfc2xwX3ZlY3RfZGVmIChjaGlsZCwgaSksDQotIGUs IGdpbXBsZV9waGlfYXJnX2xvY2F0aW9uIChwaGksIGRlc3RfaWR4KSk7DQor ICAgaWYgKFNUTVRfVklORk9fREVGX1RZUEUgKFNMUF9UUkVFX1JFUFJFU0VO VEFUSVZFIChwaGlfbm9kZSkpDQorICAgICAgICE9IHZlY3RfZmlyc3Rfb3Jk ZXJfcmVjdXJyZW5jZSkNCisgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg PCBuOyArK2kpDQorICAgICAgIGFkZF9waGlfYXJnIChhc19hIDxncGhpICo+ IChTTFBfVFJFRV9WRUNfU1RNVFMgKHBoaV9ub2RlKVtpXSksDQorICAgIHZl Y3RfZ2V0X3NscF92ZWN0X2RlZiAoY2hpbGQsIGkpLA0KKyAgICBlLCBnaW1w bGVfcGhpX2FyZ19sb2NhdGlvbiAocGhpLCBkZXN0X2lkeCkpOw0KKyAgIGVs c2UNCisgICAgIHsNCisgICAgICAgLyogVW5sZXNzIGl0IGlzIGEgZmlyc3Qg b3JkZXIgcmVjdXJyZW5jZSB3aGljaCBuZWVkcw0KKyBhcmdzIGZpbGxlZCBp biBmb3IgYm90aCB0aGUgUEhJIG5vZGUgYW5kIHRoZSBwZXJtdXRlcy4gICov DQorICAgICAgIGdpbXBsZSAqcGVybSA9IFNMUF9UUkVFX1ZFQ19TVE1UUyAo cGhpX25vZGUpWzBdOw0KKyAgICAgICBnaW1wbGUgKnJwaGkgPSBTU0FfTkFN RV9ERUZfU1RNVCAoZ2ltcGxlX2Fzc2lnbl9yaHMxIChwZXJtKSk7DQorICAg ICAgIGFkZF9waGlfYXJnIChhc19hIDxncGhpICo+IChycGhpKSwNCisgICAg dmVjdF9nZXRfc2xwX3ZlY3RfZGVmIChjaGlsZCwgbiAtIDEpLA0KKyAgICBl LCBnaW1wbGVfcGhpX2FyZ19sb2NhdGlvbiAocGhpLCBkZXN0X2lkeCkpOw0K KyAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbjsgKytpKQ0KKyB7 DQorICAgZ2ltcGxlICpwZXJtID0gU0xQX1RSRUVfVkVDX1NUTVRTIChwaGlf bm9kZSlbaV07DQorICAgaWYgKGkgPiAwKQ0KKyAgICAgZ2ltcGxlX2Fzc2ln bl9zZXRfcmhzMSAocGVybSwNCisgICAgIHZlY3RfZ2V0X3NscF92ZWN0X2Rl ZiAoY2hpbGQsIGkgLSAxKSk7DQorICAgZ2ltcGxlX2Fzc2lnbl9zZXRfcmhz MiAocGVybSwNCisgICB2ZWN0X2dldF9zbHBfdmVjdF9kZWYgKGNoaWxkLCBp KSk7DQorICAgdXBkYXRlX3N0bXQgKHBlcm0pOw0KKyB9DQorICAgICB9DQp9 DQogICAgIH0NCn0NCmRpZmYgLS1naXQgYS9nY2MvdHJlZS12ZWN0LXN0bXRz LmNjIGIvZ2NjL3RyZWUtdmVjdC1zdG10cy5jYw0KaW5kZXggYzhkMWVmYzQ1 ZTUuLjRlMGQ3NWUwZDc1IDEwMDY0NA0KLS0tIGEvZ2NjL3RyZWUtdmVjdC1z dG10cy5jYw0KKysrIGIvZ2NjL3RyZWUtdmVjdC1zdG10cy5jYw0KQEAgLTEx MTc2LDYgKzExMTc2LDcgQEAgdmVjdF9hbmFseXplX3N0bXQgKHZlY19pbmZv ICp2aW5mbywNCiAgICAgICAgICBicmVhazsNCiAgICAgICBjYXNlIHZlY3Rf aW5kdWN0aW9uX2RlZjoNCisgICAgICBjYXNlIHZlY3RfZmlyc3Rfb3JkZXJf cmVjdXJyZW5jZToNCmdjY19hc3NlcnQgKCFiYl92aW5mbyk7DQpicmVhazsN CkBAIC0xMTIzNCw3ICsxMTIzNSw5IEBAIHZlY3RfYW5hbHl6ZV9zdG10ICh2 ZWNfaW5mbyAqdmluZm8sDQogIHx8IHZlY3Rvcml6YWJsZV9jb21wYXJpc29u ICh2aW5mbywgc3RtdF9pbmZvLCBOVUxMLCBOVUxMLCBub2RlLA0KICAgICAg Y29zdF92ZWMpDQogIHx8IHZlY3Rvcml6YWJsZV9sY19waGkgKGFzX2EgPGxv b3BfdmVjX2luZm8+ICh2aW5mbyksDQotICAgc3RtdF9pbmZvLCBOVUxMLCBu b2RlKSk7DQorICAgc3RtdF9pbmZvLCBOVUxMLCBub2RlKQ0KKyAgIHx8IHZl Y3Rvcml6YWJsZV9yZWN1cnIgKGFzX2EgPGxvb3BfdmVjX2luZm8+ICh2aW5m byksDQorICAgIHN0bXRfaW5mbywgTlVMTCwgbm9kZSwgY29zdF92ZWMpKTsN CiAgIGVsc2UNCiAgICAgew0KICAgICAgIGlmIChiYl92aW5mbykNCkBAIC0x MTQwNCw2ICsxMTQwNywxMiBAQCB2ZWN0X3RyYW5zZm9ybV9zdG10ICh2ZWNf aW5mbyAqdmluZm8sDQogICAgICAgZ2NjX2Fzc2VydCAoZG9uZSk7DQogICAg ICAgYnJlYWs7DQorICAgIGNhc2UgcmVjdXJyX2luZm9fdHlwZToNCisgICAg ICBkb25lID0gdmVjdG9yaXphYmxlX3JlY3VyciAoYXNfYSA8bG9vcF92ZWNf aW5mbz4gKHZpbmZvKSwNCisgICBzdG10X2luZm8sICZ2ZWNfc3RtdCwgc2xw X25vZGUsIE5VTEwpOw0KKyAgICAgIGdjY19hc3NlcnQgKGRvbmUpOw0KKyAg ICAgIGJyZWFrOw0KKw0KICAgICBjYXNlIHBoaV9pbmZvX3R5cGU6DQogICAg ICAgZG9uZSA9IHZlY3Rvcml6YWJsZV9waGkgKHZpbmZvLCBzdG10X2luZm8s ICZ2ZWNfc3RtdCwgc2xwX25vZGUsIE5VTEwpOw0KICAgICAgIGdjY19hc3Nl cnQgKGRvbmUpOw0KQEAgLTExODA0LDYgKzExODEzLDkgQEAgdmVjdF9pc19z aW1wbGVfdXNlICh0cmVlIG9wZXJhbmQsIHZlY19pbmZvICp2aW5mbywgZW51 bSB2ZWN0X2RlZl90eXBlICpkdCwNCmNhc2UgdmVjdF9uZXN0ZWRfY3ljbGU6 DQogIGR1bXBfcHJpbnRmIChNU0dfTk9URSwgIm5lc3RlZCBjeWNsZVxuIik7 DQogIGJyZWFrOw0KKyBjYXNlIHZlY3RfZmlyc3Rfb3JkZXJfcmVjdXJyZW5j ZToNCisgICBkdW1wX3ByaW50ZiAoTVNHX05PVEUsICJmaXJzdCBvcmRlciBy ZWN1cnJlbmNlXG4iKTsNCisgICBicmVhazsNCmNhc2UgdmVjdF91bmtub3du X2RlZl90eXBlOg0KICBkdW1wX3ByaW50ZiAoTVNHX05PVEUsICJ1bmtub3du XG4iKTsNCiAgYnJlYWs7DQpAQCAtMTE4NTIsNyArMTE4NjQsOCBAQCB2ZWN0 X2lzX3NpbXBsZV91c2UgKHRyZWUgb3BlcmFuZCwgdmVjX2luZm8gKnZpbmZv LCBlbnVtIHZlY3RfZGVmX3R5cGUgKmR0LA0KICAgICAgIHx8ICpkdCA9PSB2 ZWN0X2luZHVjdGlvbl9kZWYNCiAgICAgICB8fCAqZHQgPT0gdmVjdF9yZWR1 Y3Rpb25fZGVmDQogICAgICAgfHwgKmR0ID09IHZlY3RfZG91YmxlX3JlZHVj dGlvbl9kZWYNCi0gICAgICB8fCAqZHQgPT0gdmVjdF9uZXN0ZWRfY3ljbGUp DQorICAgICAgfHwgKmR0ID09IHZlY3RfbmVzdGVkX2N5Y2xlDQorICAgICAg fHwgKmR0ID09IHZlY3RfZmlyc3Rfb3JkZXJfcmVjdXJyZW5jZSkNCiAgICAg ew0KICAgICAgICp2ZWN0eXBlID0gU1RNVF9WSU5GT19WRUNUWVBFIChkZWZf c3RtdF9pbmZvKTsNCiAgICAgICBnY2NfYXNzZXJ0ICgqdmVjdHlwZSAhPSBO VUxMX1RSRUUpOw0KZGlmZiAtLWdpdCBhL2djYy90cmVlLXZlY3Rvcml6ZXIu aCBiL2djYy90cmVlLXZlY3Rvcml6ZXIuaA0KaW5kZXggNDg3MGM3NTQ0OTku LjAxNjk2MWRhODUxIDEwMDY0NA0KLS0tIGEvZ2NjL3RyZWUtdmVjdG9yaXpl ci5oDQorKysgYi9nY2MvdHJlZS12ZWN0b3JpemVyLmgNCkBAIC02NSw2ICs2 NSw3IEBAIGVudW0gdmVjdF9kZWZfdHlwZSB7DQogICB2ZWN0X3JlZHVjdGlv bl9kZWYsDQogICB2ZWN0X2RvdWJsZV9yZWR1Y3Rpb25fZGVmLA0KICAgdmVj dF9uZXN0ZWRfY3ljbGUsDQorICB2ZWN0X2ZpcnN0X29yZGVyX3JlY3VycmVu Y2UsDQogICB2ZWN0X3Vua25vd25fZGVmX3R5cGUNCn07DQpAQCAtMTAyNyw2 ICsxMDI4LDcgQEAgZW51bSBzdG10X3ZlY19pbmZvX3R5cGUgew0KICAgY3lj bGVfcGhpX2luZm9fdHlwZSwNCiAgIGxjX3BoaV9pbmZvX3R5cGUsDQogICBw aGlfaW5mb190eXBlLA0KKyAgcmVjdXJyX2luZm9fdHlwZSwNCiAgIGxvb3Bf ZXhpdF9jdHJsX3ZlY19pbmZvX3R5cGUNCn07DQpAQCAtMjMzMSw2ICsyMzMz LDggQEAgZXh0ZXJuIGJvb2wgdmVjdG9yaXphYmxlX2xjX3BoaSAobG9vcF92 ZWNfaW5mbywgc3RtdF92ZWNfaW5mbywNCmdpbXBsZSAqKiwgc2xwX3RyZWUp Ow0KZXh0ZXJuIGJvb2wgdmVjdG9yaXphYmxlX3BoaSAodmVjX2luZm8gKiwg c3RtdF92ZWNfaW5mbywgZ2ltcGxlICoqLCBzbHBfdHJlZSwNCiAgICAgIHN0 bXRfdmVjdG9yX2Zvcl9jb3N0ICopOw0KK2V4dGVybiBib29sIHZlY3Rvcml6 YWJsZV9yZWN1cnIgKGxvb3BfdmVjX2luZm8sIHN0bXRfdmVjX2luZm8sDQor ICAgZ2ltcGxlICoqLCBzbHBfdHJlZSwgc3RtdF92ZWN0b3JfZm9yX2Nvc3Qg Kik7DQpleHRlcm4gYm9vbCB2ZWN0X2VtdWxhdGVkX3ZlY3Rvcl9wICh0cmVl KTsNCmV4dGVybiBib29sIHZlY3RfY2FuX3ZlY3Rvcml6ZV93aXRob3V0X3Np bWRfcCAodHJlZV9jb2RlKTsNCmV4dGVybiBib29sIHZlY3RfY2FuX3ZlY3Rv cml6ZV93aXRob3V0X3NpbWRfcCAoY29kZV9oZWxwZXIpOw0KLS0gDQoyLjM1 LjMNCiANCiANCg== ------=_001_NextPart006720684280_=------