Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1eyWFJ-0007gw-Kv for pgsql-hackers@arkaria.postgresql.org; Wed, 21 Mar 2018 05:25:10 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1eyWFI-0003ee-8V for pgsql-hackers@arkaria.postgresql.org; Wed, 21 Mar 2018 05:25:08 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1eyWFH-0003eO-No for pgsql-hackers@lists.postgresql.org; Wed, 21 Mar 2018 05:25:08 +0000 Received: from mail-wm0-x243.google.com ([2a00:1450:400c:c09::243]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1eyWF9-00039G-1j for pgsql-hackers@postgresql.org; Wed, 21 Mar 2018 05:25:06 +0000 Received: by mail-wm0-x243.google.com with SMTP id f125so7462168wme.4 for ; Tue, 20 Mar 2018 22:24:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=e76Ifp9GOkGxnCW0GYUnO9Y0HNFJLhNhBl5OrvbVkmI=; b=k2C7u149vgISRWmXa+fyyi7OMb5qXgRCX+8qgLGb9JEe/zj7WCDLI79x2mrbwaSVkY xNAQ56W2zgQNJyX+EAexUL4hw0Djmotey94vKPGzIuQliYNAsHjKJdTGK13BA+otUgsr 6JhhQN3vyLmRmceeb90+NJ3iejAZNs6c5799MDTugiNwCCuyEGjleovVLo3FwpDk+GjB WsVFqPe93heuSppzLuj7xGB0AgZlH+UFKGFQfSoB5ai2oEIU+lWu4S4of08huVA04H52 Ao4LPWKIRcFzyO53Defukajdslw33KaKsMsDoilMXY4NdgB+xI0C54m0CJWdeBtdyZr4 4s0w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=e76Ifp9GOkGxnCW0GYUnO9Y0HNFJLhNhBl5OrvbVkmI=; b=JmCD7X/ZUjN1uHwAdcut2p7ApeniXiMzHrOA/+kz6dg0U8Q2exkxjEUFtjl5Mwd15s 0NfXXC/m7FlKWmtRtHnVumr3cbAFz2l7bJVCvcMMBfIHgH0WHdADaHP8ZnVheAMvmpU0 NxUyGNhdLPNBcojM7dFuKcdORSBR/jYIeFsL0TJT9JttDhRFTal3tNAvyhgxw65d1qCZ TKSCSRyvDNOY6X195AVpRHT9dgW5eVB3BMuMVsKaSQM/zdNK2X9eKHOJBsEwg2JPTCok UH5p0GutlRy0RVgcWxwUFxjsBejas7FGJ3KdcWDjSEUAL1SD3b/GLdE1u40u2yUMRMP1 614w== X-Gm-Message-State: AElRT7FoPM0V0G5hT/aXO0FgdflYirbuC7wHYqWb5Jiyl/k5orp44gro XepOnDCunQausTgQY23mcFFt1Vuf7/j60ZX4Iyo= X-Google-Smtp-Source: AG47ELsJ/brJ2/epT1SgnIx8v+p6wrbidEQ/YB3JJbMpyxRxvj6GG1HZHH/kbVH6kDtnojUHan1LQtnJ6UvJX7qe6Jc= X-Received: by 10.28.74.130 with SMTP id n2mr1451222wmi.22.1521609897477; Tue, 20 Mar 2018 22:24:57 -0700 (PDT) MIME-Version: 1.0 Received: by 10.223.166.197 with HTTP; Tue, 20 Mar 2018 22:24:16 -0700 (PDT) In-Reply-To: References: <623395617.20171113141500@gf.microolap.com> From: Pavel Stehule Date: Wed, 21 Mar 2018 06:24:16 +0100 Message-ID: Subject: Re: [HACKERS] proposal: schema variables To: Pavel Luzanov Cc: "David G. Johnston" , Pavel Golub , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="94eb2c0759846d3e270567e569d5" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --94eb2c0759846d3e270567e569d5 Content-Type: multipart/alternative; boundary="94eb2c0759846d3e240567e569d3" --94eb2c0759846d3e240567e569d3 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 MjAxOC0wMy0yMCAxODozOCBHTVQrMDE6MDAgUGF2ZWwgU3RlaHVsZSA8cGF2ZWwuc3RlaHVsZUBn bWFpbC5jb20+Og0KDQo+IEhpDQo+DQo+IEkgYW0gc2VuZGluZyBuZXcgdXBkYXRlLiBUaGUgY29k ZSBpcyBsZXNzIHVnbHksIGFuZCB0aGUgY3VycmVudA0KPiBmdW5jdGlvbmFsaXR5IGlzICsvLSBm aW5hbCBmb3IgZmlyc3Qgc3RhZ2UuIEl0IHNob3VsZCBiZSBnb29kIGVub3VnaCBmb3INCj4gcGxh eWluZyBhbmQgdGVzdGluZyB0aGlzIGNvbmNlcHQuDQo+DQo+IFdoYXQgaXMgc3VwcG9ydGVkOg0K Pg0KPiAxLiBzY2FsYXIsIGNvbXBvc2l0ZSBhbmQgYXJyYXkgdmFyaWFibGVzDQo+IDIuIGNvbXBv c2l0ZSBjYW4gYmUgZGVmaW5lZCBvbiBwbGFjZSBvciBzb21lIGNvbXBvc2l0ZSB0eXBlIGNhbiBi ZSB1c2VkDQo+IDMuIHZhcmlhYmxlLCBvciBhbnkgZmllbGQgb2YgdmFyaWFibGUsIGNhbiBoYXZl IGRlZmluZWQgZGVmYXVsdCB2YWx1ZQ0KPiA0LiB2YXJpYWJsZSBpcyBkYXRhYmFzZSBvYmplY3Qg LSB0aGUgYWNjZXNzIHJpZ2h0cyBhcmUgcmVxdWlyZWQNCj4gNS4gdGhlIHZhbHVlcyBhcmUgc3Rv cmVkIGluIGJpbmFyeSBmb3JtIHdpdGggZGVmaW5lZCB0eXBtb2QNCj4NCj4gQW4gdXNhZ2UgaXMg dmVyeSBzaW1wbGU6DQo+DQo+IHBvc3RncmVzPSMgY3JlYXRlIHZhcmlhYmxlIGZvbyBhcyBudW1l cmljIGRlZmF1bHQgMDsNCj4gQ1JFQVRFIFZBUklBQkxFDQo+IHBvc3RncmVzPSMgc2VsZWN0IGZv bzsNCj4g4pSM4pSA4pSA4pSA4pSA4pSA4pSQDQo+IOKUgiBmb28g4pSCDQo+IOKVnuKVkOKVkOKV kOKVkOKVkOKVoQ0KPiDilIIgICAwIOKUgg0KPiDilJTilIDilIDilIDilIDilIDilJgNCj4gKDEg cm93KQ0KPg0KPiBwb3N0Z3Jlcz0jIGxldCBmb28gPSBwaSgpOw0KPiBMRVQNCj4gcG9zdGdyZXM9 IyBzZWxlY3QgZm9vOw0KPiDilIzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilJANCj4g4pSCICAgICAgIGZvbyAgICAgICAg4pSCDQo+IOKVnuKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVoQ0K PiDilIIgMy4xNDE1OTI2NTM1ODk3OSDilIINCj4g4pSU4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSYDQo+ICgxIHJvdykNCj4NCj4gcG9zdGdy ZXM9IyBjcmVhdGUgdmFyaWFibGUgYm9vIGFzICh4IG51bWVyaWMgZGVmYXVsdCAwLCB5IG51bWVy aWMgZGVmYXVsdA0KPiAwKTsNCj4gQ1JFQVRFIFZBUklBQkxFDQo+IHBvc3RncmVzPSMgbGV0IGJv by54ID0gMTAwOw0KPiBMRVQNCj4gcG9zdGdyZXM9IyBzZWxlY3QgYm9vOw0KPiDilIzilIDilIDi lIDilIDilIDilIDilIDilIDilIDilJANCj4g4pSCICAgYm9vICAg4pSCDQo+IOKVnuKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVoQ0KPiDilIIgKDEwMCwwKSDilIINCj4g4pSU4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSYDQo+ICgxIHJvdykNCj4NCj4gcG9zdGdyZXM9IyBzZWxlY3Qg Ym9vLng7DQo+IOKUjOKUgOKUgOKUgOKUgOKUgOKUkA0KPiDilIIgIHggIOKUgg0KPiDilZ7ilZDi lZDilZDilZDilZDilaENCj4g4pSCIDEwMCDilIINCj4g4pSU4pSA4pSA4pSA4pSA4pSA4pSYDQo+ ICgxIHJvdykNCj4NCj4gUGxlYXNlIHRyeSBpdC4NCj4NCg0Kc21hbGwgZml4IC0gc3VwcG9ydCBm b3IgU1FMIGZ1bmN0aW9ucw0KDQoNCj4NCj4gUmVnYXJkcw0KPg0KPiBQYXZlbA0KPg0K --94eb2c0759846d3e240567e569d3 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: base64 PGRpdiBkaXI9Imx0ciI+PGJyPjxkaXYgY2xhc3M9ImdtYWlsX2V4dHJhIj48YnI+PGRpdiBjbGFz cz0iZ21haWxfcXVvdGUiPjIwMTgtMDMtMjAgMTg6MzggR01UKzAxOjAwIFBhdmVsIFN0ZWh1bGUg PHNwYW4gZGlyPSJsdHIiPiZsdDs8YSBocmVmPSJtYWlsdG86cGF2ZWwuc3RlaHVsZUBnbWFpbC5j b20iIHRhcmdldD0iX2JsYW5rIj5wYXZlbC5zdGVodWxlQGdtYWlsLmNvbTwvYT4mZ3Q7PC9zcGFu Pjo8YnI+PGJsb2NrcXVvdGUgY2xhc3M9ImdtYWlsX3F1b3RlIiBzdHlsZT0ibWFyZ2luOjAgMCAw IC44ZXg7Ym9yZGVyLWxlZnQ6MXB4ICNjY2Mgc29saWQ7cGFkZGluZy1sZWZ0OjFleCI+PGRpdiBk aXI9Imx0ciI+PGRpdj48ZGl2PjxkaXY+PGRpdj48ZGl2PjxkaXY+PGRpdj5IaTxicj48YnI+PC9k aXY+SSBhbSBzZW5kaW5nIG5ldyB1cGRhdGUuIFRoZSBjb2RlIGlzIGxlc3MgdWdseSwgYW5kIHRo ZSBjdXJyZW50IGZ1bmN0aW9uYWxpdHkgaXMgKy8tIGZpbmFsIGZvciBmaXJzdCBzdGFnZS4gSXQg c2hvdWxkIGJlIGdvb2QgZW5vdWdoIGZvciBwbGF5aW5nIGFuZCB0ZXN0aW5nIHRoaXMgY29uY2Vw dC4gPGJyPjxicj48L2Rpdj5XaGF0IGlzIHN1cHBvcnRlZDo8YnI+PGJyPjwvZGl2PjEuIHNjYWxh ciwgY29tcG9zaXRlIGFuZCBhcnJheSB2YXJpYWJsZXM8YnI+PC9kaXY+Mi4gY29tcG9zaXRlIGNh biBiZSBkZWZpbmVkIG9uIHBsYWNlIG9yIHNvbWUgY29tcG9zaXRlIHR5cGUgY2FuIGJlIHVzZWQ8 YnI+PC9kaXY+My4gdmFyaWFibGUsIG9yIGFueSBmaWVsZCBvZiB2YXJpYWJsZSwgY2FuIGhhdmUg ZGVmaW5lZCBkZWZhdWx0IHZhbHVlPGJyPjwvZGl2PjQuIHZhcmlhYmxlIGlzIGRhdGFiYXNlIG9i amVjdCAtIHRoZSBhY2Nlc3MgcmlnaHRzIGFyZSByZXF1aXJlZDxicj48L2Rpdj48ZGl2PjUuIHRo ZSB2YWx1ZXMgYXJlIHN0b3JlZCBpbiBiaW5hcnkgZm9ybSB3aXRoIGRlZmluZWQgdHlwbW9kPGJy PjwvZGl2PjxkaXY+PGJyPjwvZGl2PkFuIHVzYWdlIGlzIHZlcnkgc2ltcGxlOjxicj48c3BhbiBz dHlsZT0iZm9udC1mYW1pbHk6bW9ub3NwYWNlLG1vbm9zcGFjZSI+PGJyPnBvc3RncmVzPSMgY3Jl YXRlIHZhcmlhYmxlIGZvbyBhcyBudW1lcmljIGRlZmF1bHQgMDs8YnI+Q1JFQVRFIFZBUklBQkxF PGJyPnBvc3RncmVzPSMgc2VsZWN0IGZvbzs8YnI+4pSM4pSA4pSA4pSA4pSA4pSA4pSQPGJyPuKU giBmb28g4pSCPGJyPuKVnuKVkOKVkOKVkOKVkOKVkOKVoTxicj7ilILCoMKgIDAg4pSCPGJyPuKU lOKUgOKUgOKUgOKUgOKUgOKUmDxicj4oMSByb3cpPGJyPjxicj5wb3N0Z3Jlcz0jIGxldCBmb28g PSBwaSgpOzxicj5MRVQgPGJyPnBvc3RncmVzPSMgc2VsZWN0IGZvbzs8YnI+4pSM4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSQPGJyPuKUgsKg wqDCoMKgwqDCoCBmb2/CoMKgwqDCoMKgwqDCoCDilII8YnI+4pWe4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWhPGJyPuKUgiAzLjE0MTU5MjY1 MzU4OTc5IOKUgjxicj7ilJTilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilJg8YnI+KDEgcm93KTwvc3Bhbj48YnI+PGJyPjxzcGFuIHN0eWxlPSJm b250LWZhbWlseTptb25vc3BhY2UsbW9ub3NwYWNlIj5wb3N0Z3Jlcz0jIGNyZWF0ZSB2YXJpYWJs ZSBib28gYXMgKHggbnVtZXJpYyBkZWZhdWx0IDAsIHkgbnVtZXJpYyBkZWZhdWx0IDApOzxicj5D UkVBVEUgVkFSSUFCTEU8YnI+cG9zdGdyZXM9IyBsZXQgYm9vLnggPSAxMDA7PGJyPkxFVCA8YnI+ cG9zdGdyZXM9IyBzZWxlY3QgYm9vOzxicj7ilIzilIDilIDilIDilIDilIDilIDilIDilIDilIDi lJA8YnI+4pSCwqDCoCBib2/CoMKgIOKUgjxicj7ilZ7ilZDilZDilZDilZDilZDilZDilZDilZDi lZDilaE8YnI+4pSCICgxMDAsMCkg4pSCPGJyPuKUlOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUmDxicj4oMSByb3cpPGJyPjxicj5wb3N0Z3Jlcz0jIHNlbGVjdCBib28ueDs8YnI+4pSM4pSA 4pSA4pSA4pSA4pSA4pSQPGJyPuKUgsKgIHjCoCDilII8YnI+4pWe4pWQ4pWQ4pWQ4pWQ4pWQ4pWh PGJyPuKUgiAxMDAg4pSCPGJyPuKUlOKUgOKUgOKUgOKUgOKUgOKUmDxicj4oMSByb3cpPC9zcGFu Pjxicj48YnI+PGRpdj48ZGl2PjxkaXY+UGxlYXNlIHRyeSBpdC4gPGJyPjwvZGl2PjwvZGl2Pjwv ZGl2PjwvZGl2PjwvYmxvY2txdW90ZT48ZGl2Pjxicj48L2Rpdj48ZGl2PnNtYWxsIGZpeCAtIHN1 cHBvcnQgZm9yIFNRTCBmdW5jdGlvbnM8YnI+PC9kaXY+PGRpdj7CoDwvZGl2PjxibG9ja3F1b3Rl IGNsYXNzPSJnbWFpbF9xdW90ZSIgc3R5bGU9Im1hcmdpbjowIDAgMCAuOGV4O2JvcmRlci1sZWZ0 OjFweCAjY2NjIHNvbGlkO3BhZGRpbmctbGVmdDoxZXgiPjxkaXYgZGlyPSJsdHIiPjxkaXY+PGRp dj48ZGl2Pjxicj48L2Rpdj48ZGl2PlJlZ2FyZHM8c3BhbiBjbGFzcz0iSE9FblpiIj48Zm9udCBj b2xvcj0iIzg4ODg4OCI+PGJyPjxicj48L2ZvbnQ+PC9zcGFuPjwvZGl2PjxzcGFuIGNsYXNzPSJI T0VuWmIiPjxmb250IGNvbG9yPSIjODg4ODg4Ij48ZGl2PlBhdmVsPGJyPjwvZGl2PjwvZm9udD48 L3NwYW4+PC9kaXY+PC9kaXY+PC9kaXY+DQo8L2Jsb2NrcXVvdGU+PC9kaXY+PGJyPjwvZGl2Pjwv ZGl2Pg0K --94eb2c0759846d3e240567e569d3-- --94eb2c0759846d3e270567e569d5 Content-Type: application/octet-stream; name=schema-variables-poc-180321-01-diff Content-Disposition: attachment; filename=schema-variables-poc-180321-01-diff Content-Transfer-Encoding: base64 X-Attachment-Id: f_jf0n7vpa2 ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sIGIvZG9jL3NyYy9zZ21sL2Nh dGFsb2dzLnNnbWwKaW5kZXggMzBlNjc0MTMwNS4uNGY0MTdmMTkxYSAxMDA2NDQKLS0tIGEvZG9j L3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwK QEAgLTE4MTMsNyArMTgxMyw4IEBAIFNDUkFNLVNIQS0yNTYkPHJlcGxhY2VhYmxlPiZsdDtpdGVy YXRpb24gY291bnQmZ3Q7PC9yZXBsYWNlYWJsZT46PHJlcGxhY2VhYmxlPiZsCiAgICAgICAgPGxp dGVyYWw+bTwvbGl0ZXJhbD4gPSBtYXRlcmlhbGl6ZWQgdmlldywKICAgICAgICA8bGl0ZXJhbD5j PC9saXRlcmFsPiA9IGNvbXBvc2l0ZSB0eXBlLAogICAgICAgIDxsaXRlcmFsPmY8L2xpdGVyYWw+ ID0gZm9yZWlnbiB0YWJsZSwKLSAgICAgICA8bGl0ZXJhbD5wPC9saXRlcmFsPiA9IHBhcnRpdGlv bmVkIHRhYmxlCisgICAgICAgPGxpdGVyYWw+cDwvbGl0ZXJhbD4gPSBwYXJ0aXRpb25lZCB0YWJs ZSwKKyAgICAgICA8bGl0ZXJhbD5WPC9saXRlcmFsPiA9IHNjaGVtYSB2YXJpYWJsZQogICAgICAg PC9lbnRyeT4KICAgICAgPC9yb3c+CiAKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9mdW5jLnNn bWwgYi9kb2Mvc3JjL3NnbWwvZnVuYy5zZ21sCmluZGV4IDJmNTlhZjI1YTYuLjI4OThjMTM1NzMg MTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9mdW5jLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2Z1 bmMuc2dtbApAQCAtMTU4MTIsNiArMTU4MTIsODMgQEAgU0VMRUNUICogRlJPTSBwZ19sc19kaXIo Jy4nKSBXSVRIIE9SRElOQUxJVFkgQVMgdChscyxuKTsKIAogIDwvc2VjdDE+CiAKKyA8c2VjdDEg aWQ9ImZ1bmN0aW9ucy1zY2hlbWF2YXIiPgorICA8dGl0bGU+U2NoZW1hIFZhcmlhYmxlIEZ1bmN0 aW9uczwvdGl0bGU+CisKKyAgPGluZGV4dGVybSB6b25lPSJmdW5jdGlvbnMtc2NoZW1hdmFyIj4K KyAgIDxwcmltYXJ5PlNjaGVtYSBWYXJpYWJsZSBGdW5jdGlvbnM8L3ByaW1hcnk+CisgICA8c2Vj b25kYXJ5PmZ1bmN0aW9uczwvc2Vjb25kYXJ5PgorICA8L2luZGV4dGVybT4KKworICA8aW5kZXh0 ZXJtPgorICAgPHByaW1hcnk+Z2V0X3NjaGVtYV92YXJpYWJsZTwvcHJpbWFyeT4KKyAgPC9pbmRl eHRlcm0+CisKKyAgPGluZGV4dGVybT4KKyAgIDxwcmltYXJ5PnNldF9zY2hlbWFfdmFyaWFibGU8 L3ByaW1hcnk+CisgIDwvaW5kZXh0ZXJtPgorCisgIDxwYXJhPgorICAgVGhlc2UgZnVuY3Rpb25z IGFsbG93IHJlYWRpbmcgYW5kIHdyaXRpbmcgc2NoZW1hIHZhcmlhYmxlcyB2YWx1ZXMuCisgICBJ ZiB0aGUgc2NoZW1hIHZhcmlhYmxlIHJlZmVyZW5jZWQgZG9lcyBub3QgZXhpc3QgKGNyZWF0ZWQg dXNpbmcgPHhyZWYgbGlua2VuZD0ic3FsLWNyZWF0ZXZhcmlhYmxlIi8+KQorICAgdGhlc2UgZnVu Y3Rpb25zIHdpbGwgKGRvIHNvbWV0aGluZy4uLikuCisgIDwvcGFyYT4KKworICA8dGFibGUgaWQ9 ImZ1bmN0aW9ucy1zY2hlbWF2YXItdGFiIj4KKyAgIDx0aXRsZT5GdW5jdGlvbnMgZm9yIGFjY2Vz cyB0byBzY2hlbWEgdmFyaWFibGVzPC90aXRsZT4KKyAgIDx0Z3JvdXAgY29scz0iNCI+CisgICAg PHRoZWFkPgorICAgICA8cm93PgorICAgICAgPGVudHJ5PkZ1bmN0aW9uPC9lbnRyeT4KKyAgICAg IDxlbnRyeT5Bcmd1bWVudCBUeXBlPC9lbnRyeT4KKyAgICAgIDxlbnRyeT5SZXR1cm4gVHlwZTwv ZW50cnk+CisgICAgICA8ZW50cnk+RGVzY3JpcHRpb248L2VudHJ5PgorICAgICA8L3Jvdz4KKyAg ICA8L3RoZWFkPgorICAgIDx0Ym9keT4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeT48bGl0ZXJh bD48ZnVuY3Rpb24+Z2V0X3NjaGVtYV92YXJpYWJsZSg8cGFyYW1ldGVyPnZhcmlhYmxlPC9wYXJh bWV0ZXI+LCA8cGFyYW1ldGVyPmV4cGVjdGVkIHR5cGU8L3BhcmFtZXRlcj4pPC9mdW5jdGlvbj48 L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT48dHlwZT5yZWdjbGFzczwvdHlwZT4sIDx0 eXBlPmFueWVsZW1lbnQ8L3R5cGU+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT48dHlwZT5hbnllbGVt ZW50PC90eXBlPjwvZW50cnk+CisgICAgICA8ZW50cnk+CisgICAgICAgUmV0dXJucyB2YWx1ZSBv ZiBzY2hlbWEgdmFyaWFibGUgY29udmVydGVkIHRvIGV4cGVjdGVkIHR5cGUuCisgICAgICA8L2Vu dHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5PjxsaXRlcmFsPjxm dW5jdGlvbj5zZXRfc2NoZW1hX3ZhcmlhYmxlKDxwYXJhbWV0ZXI+dmFyaWFibGU8L3BhcmFtZXRl cj4sIDxwYXJhbWV0ZXI+dmFsdWU8L3BhcmFtZXRlcj4pPC9mdW5jdGlvbj48L2xpdGVyYWw+PC9l bnRyeT4KKyAgICAgIDxlbnRyeT48dHlwZT5yZWdjbGFzczwvdHlwZT4sIDx0eXBlPmFueWVsZW1l bnQ8L3R5cGU+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT48dHlwZT52b2lkPC90eXBlPjwvZW50cnk+ CisgICAgICA8ZW50cnk+CisgICAgICAgU2V0cyB0aGUgdmFsdWUgb2Ygc2NoZW1hIHZhcmlhYmxl IHRvIHZhbHVlLCBhZnRlciBjb252ZXJ0aW5nIHRoZSBpbnB1dCB0byB0aGUgY29ycmVjdCB0eXBl LgorICAgICAgPC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICA8L3Rib2R5PgorICAgPC90Z3Jv dXA+CisgIDwvdGFibGU+CisgIDxwYXJhPgorICBBbiBleGFtcGxlOgorCis8cHJvZ3JhbWxpc3Rp bmc+CitDUkVBVEUgVEVNUCBWQVJJQUJMRSBmb28gQVMgbnVtZXJpYzsKK1NFTEVDVCBzZXRfc2No ZW1hX3ZhcmlhYmxlKCdmb28nLCAzNDUuNDQ1KTsKKyBzZXRfc2NoZW1hX3ZhcmlhYmxlIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBnZXRfc2NoZW1hX3Zhcmlh YmxlKCdmb28nLCBudWxsOjpudW1lcmljKTsKKworIGdldF9zY2hlbWFfdmFyaWFibGUgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAzNDUuNDQ1CisoMSByb3cpCis8L3Byb2dy YW1saXN0aW5nPgorICA8L3BhcmE+CisKKyA8L3NlY3QxPgorCiAgPHNlY3QxIGlkPSJmdW5jdGlv bnMtaW5mbyI+CiAgIDx0aXRsZT5TeXN0ZW0gSW5mb3JtYXRpb24gRnVuY3Rpb25zPC90aXRsZT4K IApkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9hbGxmaWxlcy5zZ21sIGIvZG9jL3NyYy9z Z21sL3JlZi9hbGxmaWxlcy5zZ21sCmluZGV4IDIyZTY4OTMyMTEuLjFkMzRmNzJiZGQgMTAwNjQ0 Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvYWxsZmlsZXMuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwv cmVmL2FsbGZpbGVzLnNnbWwKQEAgLTk5LDYgKzk5LDcgQEAgQ29tcGxldGUgbGlzdCBvZiB1c2Fi bGUgc2dtbCBzb3VyY2UgZmlsZXMgaW4gdGhpcyBkaXJlY3RvcnkuCiA8IUVOVElUWSBjcmVhdGVU eXBlICAgICAgICAgU1lTVEVNICJjcmVhdGVfdHlwZS5zZ21sIj4KIDwhRU5USVRZIGNyZWF0ZVVz ZXIgICAgICAgICBTWVNURU0gImNyZWF0ZV91c2VyLnNnbWwiPgogPCFFTlRJVFkgY3JlYXRlVXNl ck1hcHBpbmcgIFNZU1RFTSAiY3JlYXRlX3VzZXJfbWFwcGluZy5zZ21sIj4KKzwhRU5USVRZIGNy ZWF0ZVZhcmlhYmxlICAgICBTWVNURU0gImNyZWF0ZV92YXJpYWJsZS5zZ21sIj4KIDwhRU5USVRZ IGNyZWF0ZVZpZXcgICAgICAgICBTWVNURU0gImNyZWF0ZV92aWV3LnNnbWwiPgogPCFFTlRJVFkg ZGVhbGxvY2F0ZSAgICAgICAgIFNZU1RFTSAiZGVhbGxvY2F0ZS5zZ21sIj4KIDwhRU5USVRZIGRl Y2xhcmUgICAgICAgICAgICBTWVNURU0gImRlY2xhcmUuc2dtbCI+CkBAIC0xNDcsNiArMTQ4LDcg QEAgQ29tcGxldGUgbGlzdCBvZiB1c2FibGUgc2dtbCBzb3VyY2UgZmlsZXMgaW4gdGhpcyBkaXJl Y3RvcnkuCiA8IUVOVElUWSBkcm9wVHlwZSAgICAgICAgICAgU1lTVEVNICJkcm9wX3R5cGUuc2dt bCI+CiA8IUVOVElUWSBkcm9wVXNlciAgICAgICAgICAgU1lTVEVNICJkcm9wX3VzZXIuc2dtbCI+ CiA8IUVOVElUWSBkcm9wVXNlck1hcHBpbmcgICAgU1lTVEVNICJkcm9wX3VzZXJfbWFwcGluZy5z Z21sIj4KKzwhRU5USVRZIGRyb3BWYXJpYWJsZSAgICAgICBTWVNURU0gImRyb3BfdmFyaWFibGUu c2dtbCI+CiA8IUVOVElUWSBkcm9wVmlldyAgICAgICAgICAgU1lTVEVNICJkcm9wX3ZpZXcuc2dt bCI+CiA8IUVOVElUWSBlbmQgICAgICAgICAgICAgICAgU1lTVEVNICJlbmQuc2dtbCI+CiA8IUVO VElUWSBleGVjdXRlICAgICAgICAgICAgU1lTVEVNICJleGVjdXRlLnNnbWwiPgpAQCAtMTU1LDYg KzE1Nyw3IEBAIENvbXBsZXRlIGxpc3Qgb2YgdXNhYmxlIHNnbWwgc291cmNlIGZpbGVzIGluIHRo aXMgZGlyZWN0b3J5LgogPCFFTlRJVFkgZ3JhbnQgICAgICAgICAgICAgIFNZU1RFTSAiZ3JhbnQu c2dtbCI+CiA8IUVOVElUWSBpbXBvcnRGb3JlaWduU2NoZW1hIFNZU1RFTSAiaW1wb3J0X2ZvcmVp Z25fc2NoZW1hLnNnbWwiPgogPCFFTlRJVFkgaW5zZXJ0ICAgICAgICAgICAgIFNZU1RFTSAiaW5z ZXJ0LnNnbWwiPgorPCFFTlRJVFkgbGV0ICAgICAgICAgICAgICAgIFNZU1RFTSAibGV0LnNnbWwi PgogPCFFTlRJVFkgbGlzdGVuICAgICAgICAgICAgIFNZU1RFTSAibGlzdGVuLnNnbWwiPgogPCFF TlRJVFkgbG9hZCAgICAgICAgICAgICAgIFNZU1RFTSAibG9hZC5zZ21sIj4KIDwhRU5USVRZIGxv Y2sgICAgICAgICAgICAgICBTWVNURU0gImxvY2suc2dtbCI+CmRpZmYgLS1naXQgYS9kb2Mvc3Jj L3NnbWwvcmVmL2NyZWF0ZV92YXJpYWJsZS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVf dmFyaWFibGUuc2dtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4wMjA1 ZTQzNjVhCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdmFyaWFi bGUuc2dtbApAQCAtMCwwICsxLDE0OSBAQAorPCEtLQorZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVf dmFyaWFibGUuc2dtbAorUG9zdGdyZVNRTCBkb2N1bWVudGF0aW9uCistLT4KKworPHJlZmVudHJ5 IGlkPSJzcWwtY3JlYXRldmFyaWFibGUiPgorIDxpbmRleHRlcm0gem9uZT0ic3FsLWNyZWF0ZXZh cmlhYmxlIj4KKyAgPHByaW1hcnk+Q1JFQVRFIFZBUklBQkxFPC9wcmltYXJ5PgorIDwvaW5kZXh0 ZXJtPgorCisgPHJlZm1ldGE+CisgIDxyZWZlbnRyeXRpdGxlPkNSRUFURSBWQVJJQUJMRTwvcmVm ZW50cnl0aXRsZT4KKyAgPG1hbnZvbG51bT43PC9tYW52b2xudW0+CisgIDxyZWZtaXNjaW5mbz5T UUwgLSBMYW5ndWFnZSBTdGF0ZW1lbnRzPC9yZWZtaXNjaW5mbz4KKyA8L3JlZm1ldGE+CisKKyA8 cmVmbmFtZWRpdj4KKyAgPHJlZm5hbWU+Q1JFQVRFIFZBUklBQkxFPC9yZWZuYW1lPgorICA8cmVm cHVycG9zZT5kZWZpbmUgYSBuZXcgcGVybWlzc2lvbmVkIHR5cGVkIHNjaGVtYSB2YXJpYWJsZTwv cmVmcHVycG9zZT4KKyA8L3JlZm5hbWVkaXY+CisKKyA8cmVmc3lub3BzaXNkaXY+Cis8c3lub3Bz aXM+CitDUkVBVEUgVkFSSUFCTEUgWyBJRiBOT1QgRVhJU1RTIF0gPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBbIEFTIF0gPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPmRhdGFfdHlwZTwvcmVwbGFjZWFibGU+IF0KKzwvc3lub3BzaXM+CisgPC9y ZWZzeW5vcHNpc2Rpdj4KKyA8cmVmc2VjdDE+CisgIDx0aXRsZT5EZXNjcmlwdGlvbjwvdGl0bGU+ CisKKyAgPHBhcmE+CisgICA8Y29tbWFuZD5DUkVBVEUgVkFSSUFCTEU8L2NvbW1hbmQ+IGNyZWF0 ZXMgYSBuZXcgc2NoZW1hIHZhcmlhYmxlLgorICAgVGhlc2UgdmFyaWFibGVzIGFyZSBzY2FsYXIg dHlwZWQsIG5vbi10cmFuc2FjdGlvbmFsLCBhbmQsIGxpa2UgcmVsYXRpb25zLAorICAgZXhpc3Qg d2l0aGluIGEgc2NoZW1hIHdpdGggYWNjZXNzIGNvbnRyb2xsZWQgdmlhCisgICA8Y29tbWFuZD5H UkFOVDwvY29tbWFuZD4gYW5kIDxjb21tYW5kPlJFVk9LRTwvY29tbWFuZD4uCisgIDwvcGFyYT4K KworICA8cGFyYT4KKyAgIFRoZSB2YWx1ZSBvZiBhIHNjaGVtYSB2YXJpYWJsZSBpcyBzZXNzaW9u LWxvY2FsLiBSZXRyaWV2aW5nCisgICBhIHZhcmlhYmxlJ3MgdmFsdWUgd2lsbCByZXR1cm4gTlVM TCB1bmxlc3MgaXRzIHZhbHVlIGhhcyBiZWVuIHNldAorICAgdG8gc29tZXRoaW5nIGVsc2UgaW4g dGhlIGN1cnJlbnQgc2Vzc2lvbi4KKyAgPC9wYXJhPgorCisgIDxwYXJhPgorICAgUmV0cmlldmFs IGlzIGRvbmUgdmlhIHRoZSA8ZnVuY3Rpb24+Z2V0X3NjaGVtYV92YXJpYWJsZTwvZnVuY3Rpb24+ ZHVueHJpb24gb3IgdGhlIFNRTAorICAgY29tbWFuZCA8Y29tbWFuZD5TRUxFQ1Q8L2NvbW1hbmQ+ LiAgU2V0dGluZyBvZiB2YWx1ZXMgaXMgZG9uZSB2aWEgdGhlCisgICA8ZnVuY3Rpb24+c2V0X3Nj aGVtYV92YXJpYWJsZTwvZnVuY3Rpb24+IGZ1bmN0aW9uIG9yIHRoZSBTUUwgY29tbWFuZAorICAg PGNvbW1hbmQ+TEVUPC9jb21tYW5kPi4KKyAgIE5vdGFibHksIHdoaWxlIHNjaGVtYSB2YXJpYWJs ZXMgYXJlIGluIG1hbnkgd2F5cyBhIGtpbmQgb2YgdGFibGUgeW91IGNhbm5vdCB1c2UKKyAgIDxj b21tYW5kPlVQREFURTwvY29tbWFuZD4gb24gdGhlbS4KKyAgPC9wYXJhPgorCisgIDxwYXJhPgor ICAgRm9yIHB1cnBvc2VzIG9mIG5hbWUgdW5pcXVlbmVzcyByZWxhdGlvbi1saWtlIG9iamVjdHMg KGUuZy4sIHRhYmxlcywgaW5kZXhlcykKKyAgIHdpdGhpbiB0aGUgc2FtZSBzY2hlbWEgYXJlIGNv bnNpZGVyZWQuICBpLmUuLCB5b3UgY2Fubm90IGdpdmUgYSB0YWJsZSBhbmQgYQorICAgc2NoZW1h IHZhcmlhYmxlIHRoZSBzYW1lIG5hbWUuICBUaGlzIGlzIGEgY29uc2VxdWVuY2Ugb2YgdGhlbSBi ZWluZyB0cmVhdGVkCisgICBsaWtlIHJlbGF0aW9ucyBmb3IgcHVycG9zZXMgb2YgPGNvbW1hbmQ+ U0VMRUNUPC9jb21tYW5kPi4KKyAgPC9wYXJhPgorIDwvcmVmc2VjdDE+CisKKyA8cmVmc2VjdDE+ CisgIDx0aXRsZT5QYXJhbWV0ZXJzPC90aXRsZT4KKworICA8dmFyaWFibGVsaXN0PgorICAgPHZh cmxpc3RlbnRyeT4KKyAgICA8dGVybT48bGl0ZXJhbD5JRiBOT1QgRVhJU1RTPC9saXRlcmFsPjwv dGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgRG8gbm90IHRocm93IGFu IGVycm9yIGlmIHRoZSBuYW1lIGFscmVhZHkgZXhpc3RzLiBBIG5vdGljZSBpcyBpc3N1ZWQgaW4g dGhpcyBjYXNlLgorICAgICAgTm90ZSB0aGF0IHR5cGUgb2YgdGhlIHZhcmlhYmxlIGlzIG5vdCBj b25zaWRlcmVkLCBub3IgY291bGQgaXQgYmUgc2luY2UgdGhlIG5hbWVzcGFjZQorICAgICAgc2Vh cmNoZWQgY29udGFpbnMgbm9uLXZhcmlhYmxlIG9iamVjdHMuCisgICAgIDwvcGFyYT4KKyAgICA8 L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAg PHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPjwv dGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgVGhlIG5hbWUgKG9wdGlv bmFsbHkgc2NoZW1hLXF1YWxpZmllZCkgb2YgdGhlIHZhcmlhYmxlIHRvIGJlIGNyZWF0ZWQuCisg ICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2 YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmRh dGFfdHlwZTwvcmVwbGFjZWFibGU+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+ CisgICAgICBUaGUgbmFtZSAob3B0aW9uYWxseSBzY2hlbWEtcXVhbGlmaWVkKSBvZiB0aGUgZGF0 YSB0eXBlIG9mIHRoZSB2YXJpYWJsZSB0byBiZSBjcmVhdGVkLgorICAgICA8L3BhcmE+CisgICAg PC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorICA8L3ZhcmlhYmxlbGlzdD4KKyA8L3Jl ZnNlY3QxPgorCisgPHJlZnNlY3QxPgorICA8dGl0bGU+Tm90ZXM8L3RpdGxlPgorCisgIDxwYXJh PgorICAgVXNlIDxjb21tYW5kPkRST1AgVkFSSUFCTEU8L2NvbW1hbmQ+IHRvIHJlbW92ZSBhIHZh cmlhYmxlLgorICA8L3BhcmE+CisgPC9yZWZzZWN0MT4KKworIDxyZWZzZWN0MT4KKyAgPHRpdGxl PkV4YW1wbGVzPC90aXRsZT4KKworICA8cGFyYT4KKyAgIENyZWF0ZSBhbiBpbnRlZ2VyIHZhcmlh YmxlIDxsaXRlcmFsPnZhcjE8L2xpdGVyYWw+OgorPHByb2dyYW1saXN0aW5nPgorQ1JFQVRFIFZB UklBQkxFIHZhcjEgQVMgaW50ZWdlcjsKKzwvcHJvZ3JhbWxpc3Rpbmc+CisgIDwvcGFyYT4KKwor ICA8cGFyYT4KKyAgIFNldCB0aGlzIHZhcmlhYmxlJ3MgdmFsdWU7IHRoZW4gcmV0cmlldmUgaXQg Y29udmVydGVkIHRvIG51bWVyaWMuCis8cHJvZ3JhbWxpc3Rpbmc+CitDUkVBVEUgVkFSSUFCTEUK K3Bvc3RncmVzPSMgc2VsZWN0IHNldF9zY2hlbWFfdmFyaWFibGUoJ3ZhcjEnLCAxMCk7Cisgc2V0 X3NjaGVtYV92YXJpYWJsZSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitw b3N0Z3Jlcz0jIHNlbGVjdCBnZXRfc2NoZW1hX3ZhcmlhYmxlKCd2YXIxJywgbnVsbDo6bnVtZXJp Yyk7CisgZ2V0X3NjaGVtYV92YXJpYWJsZSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAg ICAgICAgICAgICAgMTAKKygxIHJvdykKKzwvcHJvZ3JhbWxpc3Rpbmc+CisgIDwvcGFyYT4KKyA8 L3JlZnNlY3QxPgorCisgPHJlZnNlY3QxPgorICA8dGl0bGU+Q29tcGF0aWJpbGl0eTwvdGl0bGU+ CisKKyAgPHBhcmE+CisgICA8Y29tbWFuZD5DUkVBVEUgVkFSSUFCTEU8L2NvbW1hbmQ+IGlzIGEg UG9zdGdyZVNRTCBmZWF0dXJlLgorICAgPCEtLSBUaGUgY2hvaWNlIG9mIHdvcmRpbmcgaGVyZSBz ZWVtcyB0byBiZSBsZWZ0IHRvIHBlcnNvbmFsIHByZWZlcmVuY2UuLi4gLS0+CisgIDwvcGFyYT4K KyA8L3JlZnNlY3QxPgorCisgPHJlZnNlY3QxPgorICA8dGl0bGU+U2VlIEFsc288L3RpdGxlPgor CisgIDxzaW1wbGVsaXN0IHR5cGU9ImlubGluZSI+CisgICA8bWVtYmVyPjx4cmVmIGxpbmtlbmQ9 InNxbC1kcm9wdmFyaWFibGUiLz48L21lbWJlcj4KKyAgPC9zaW1wbGVsaXN0PgorIDwvcmVmc2Vj dDE+CisKKzwvcmVmZW50cnk+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2Rpc2NhcmQu c2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvZGlzY2FyZC5zZ21sCmluZGV4IDZiOTA5YjcyMzIuLjM5 NTQ1M2JiYTAgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvZGlzY2FyZC5zZ21sCisrKyBi L2RvYy9zcmMvc2dtbC9yZWYvZGlzY2FyZC5zZ21sCkBAIC0yMSw3ICsyMSw3IEBAIFBvc3RncmVT UUwgZG9jdW1lbnRhdGlvbgogCiAgPHJlZnN5bm9wc2lzZGl2PgogPHN5bm9wc2lzPgotRElTQ0FS RCB7IEFMTCB8IFBMQU5TIHwgU0VRVUVOQ0VTIHwgVEVNUE9SQVJZIHwgVEVNUCB9CitESVNDQVJE IHsgQUxMIHwgUExBTlMgfCBTRVFVRU5DRVMgfCBURU1QT1JBUlkgfCBURU1QIHwgVkFSSUFCTEVT fQogPC9zeW5vcHNpcz4KICA8L3JlZnN5bm9wc2lzZGl2PgogCkBAIC03NSw2ICs3NSwxNiBAQCBE SVNDQVJEIHsgQUxMIHwgUExBTlMgfCBTRVFVRU5DRVMgfCBURU1QT1JBUlkgfCBURU1QIH0KICAg ICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgIDx2YXJsaXN0ZW50cnk+Cisg ICAgPHRlcm0+PGxpdGVyYWw+VkFSSUFCTEVTPC9saXRlcmFsPjwvdGVybT4KKyAgICA8bGlzdGl0 ZW0+CisgICAgIDxwYXJhPgorICAgICAgU2V0cyB0aGUgdmFsdWUgb2YgYWxsIHNjaGVtYSB2YXJp YWJsZXMgdG8gTlVMTC4KKyAgICAgIDwhLS0gV2hhdCBoYXBwZW5zIHRvIHRlbXBvcmFyeSBzY2hl bWEgdmFyaWFibGVzIC0tPgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFy bGlzdGVudHJ5PgorCiAgICA8dmFybGlzdGVudHJ5PgogICAgIDx0ZXJtPjxsaXRlcmFsPkFMTDwv bGl0ZXJhbD48L3Rlcm0+CiAgICAgPGxpc3RpdGVtPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21s L3JlZi9kcm9wX3ZhcmlhYmxlLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2Ryb3BfdmFyaWFibGUu c2dtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4wNjEzMGZkNTEwCi0t LSAvZGV2L251bGwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9kcm9wX3ZhcmlhYmxlLnNnbWwKQEAg LTAsMCArMSw5MiBAQAorPCEtLQorZG9jL3NyYy9zZ21sL3JlZi9kcm9wX3ZhcmlhYmxlLnNnbWwK K1Bvc3RncmVTUUwgZG9jdW1lbnRhdGlvbgorLS0+CisKKzxyZWZlbnRyeSBpZD0ic3FsLWRyb3B2 YXJpYWJsZSI+CisgPGluZGV4dGVybSB6b25lPSJzcWwtZHJvcHZhcmlhYmxlIj4KKyAgPHByaW1h cnk+RFJPUCBWQVJJQUJMRTwvcHJpbWFyeT4KKyA8L2luZGV4dGVybT4KKworIDxyZWZtZXRhPgor ICA8cmVmZW50cnl0aXRsZT5EUk9QIFZBUklBQkxFPC9yZWZlbnRyeXRpdGxlPgorICA8bWFudm9s bnVtPjc8L21hbnZvbG51bT4KKyAgPHJlZm1pc2NpbmZvPlNRTCAtIExhbmd1YWdlIFN0YXRlbWVu dHM8L3JlZm1pc2NpbmZvPgorIDwvcmVmbWV0YT4KKworIDxyZWZuYW1lZGl2PgorICA8cmVmbmFt ZT5EUk9QIFZBUklBQkxFPC9yZWZuYW1lPgorICA8cmVmcHVycG9zZT5yZW1vdmUgYSBzY2hlbWEg dmFyaWFibGU8L3JlZnB1cnBvc2U+CisgPC9yZWZuYW1lZGl2PgorCisgPHJlZnN5bm9wc2lzZGl2 PgorPHN5bm9wc2lzPgorRFJPUCBWQVJJQUJMRSBbIElGIEVYSVNUUyBdIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uXSBbIENBU0NBREUgfCBS RVNUUklDVCBdCis8L3N5bm9wc2lzPgorIDwvcmVmc3lub3BzaXNkaXY+CisKKyA8cmVmc2VjdDE+ CisgIDx0aXRsZT5EZXNjcmlwdGlvbjwvdGl0bGU+CisKKyAgPHBhcmE+CisgICA8Y29tbWFuZD5E Uk9QIFZBUklBQkxFPC9jb21tYW5kPiByZW1vdmVzIGEgc2NoZW1hIHZhcmlhYmxlLgorICAgQSB2 YXJpYWJsZSBjYW4gb25seSBiZSBkcm9wcGVkIGJ5IGl0cyBvd25lciBvciBhIHN1cGVydXNlci4K KyAgIDwhLS0gdGhpcyB3b3VsZCBzdWdnZXN0IHRoYXQgd2UgbmVlZCBhbiBhbHRlciB2YXJpYWJs ZSBvd25lciB0byBjb21tYW5kIC0tPgorICA8L3BhcmE+CisgPC9yZWZzZWN0MT4KKworIDxyZWZz ZWN0MT4KKyAgPHRpdGxlPlBhcmFtZXRlcnM8L3RpdGxlPgorCisgIDx2YXJpYWJsZWxpc3Q+Cisg ICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPjxsaXRlcmFsPklGIEVYSVNUUzwvbGl0ZXJhbD48 L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIERvIG5vdCB0aHJvdyBh biBlcnJvciBpZiB0aGUgdmFyaWFibGUgZG9lcyBub3QgZXhpc3QuIEEgbm90aWNlIGlzIGlzc3Vl ZAorICAgICAgaW4gdGhpcyBjYXNlLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAg IDwvdmFybGlzdGVudHJ5PgorCisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPjxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT48L3Rlcm0+CisgICAgPGxp c3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIFRoZSBuYW1lIChvcHRpb25hbGx5IHNjaGVtYS1x dWFsaWZpZWQpIG9mIGEgc2NoZW1hIHZhcmlhYmxlLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0 aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorICA8L3ZhcmlhYmxlbGlzdD4KKyA8L3JlZnNlY3Qx PgorCisgPHJlZnNlY3QxPgorICA8dGl0bGU+RXhhbXBsZXM8L3RpdGxlPgorCisgIDxwYXJhPgor ICAgVG8gcmVtb3ZlIHRoZSBzY2hlbWEgdmFyaWFibGUgPGxpdGVyYWw+dmFyMTwvbGl0ZXJhbD46 CisKKzxwcm9ncmFtbGlzdGluZz4KK0RST1AgVkFSSUFCTEUgdmFyMTsKKzwvcHJvZ3JhbWxpc3Rp bmc+PC9wYXJhPgorIDwvcmVmc2VjdDE+CisKKyA8cmVmc2VjdDE+CisgIDx0aXRsZT5Db21wYXRp YmlsaXR5PC90aXRsZT4KKworICA8cGFyYT4KKyAgIDxjb21tYW5kPkRST1AgVkFSSUFCTEU8L2Nv bW1hbmQ+IGlzIHByb3ByaWV0YXJ5IFBvc3RncmVTUUwgY29tbWFuZC4KKyAgIDwhLS0gY3JlYXRl IHZhcmlhYmxlIGlzIGEgIlBvc3RncmVTUUwgZmVhdHVyZSIsCisgICAgICAgIHRoaXMgaXMgYSAi cHJvcHJpZXRhcnkgUG9zdGdyZVNRTCBjb21tYW5kIiAuLi4gLS0+CisgIDwvcGFyYT4KKyA8L3Jl ZnNlY3QxPgorCisgPHJlZnNlY3QxPgorICA8dGl0bGU+U2VlIEFsc288L3RpdGxlPgorCisgIDxz aW1wbGVsaXN0IHR5cGU9ImlubGluZSI+CisgICA8bWVtYmVyPjx4cmVmIGxpbmtlbmQ9InNxbC1j cmVhdGV2YXJpYWJsZSIvPjwvbWVtYmVyPgorICA8L3NpbXBsZWxpc3Q+CisgPC9yZWZzZWN0MT4K KworPC9yZWZlbnRyeT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvZ3JhbnQuc2dtbCBi L2RvYy9zcmMvc2dtbC9yZWYvZ3JhbnQuc2dtbAppbmRleCBmZjY0YzdhM2JhLi4wMDYzNjRlYmU1 IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2dyYW50LnNnbWwKKysrIGIvZG9jL3NyYy9z Z21sL3JlZi9ncmFudC5zZ21sCkBAIC03OSw2ICs3OSwxMiBAQCBHUkFOVCB7IFVTQUdFIHwgQUxM IFsgUFJJVklMRUdFUyBdIH0KICAgICBPTiBUWVBFIDxyZXBsYWNlYWJsZT50eXBlX25hbWU8L3Jl cGxhY2VhYmxlPiBbLCAuLi5dCiAgICAgVE8gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PnJvbGVfc3BlY2lmaWNhdGlvbjwvcmVwbGFjZWFibGU+IFssIC4uLl0gWyBXSVRIIEdSQU5UIE9Q VElPTiBdCiAKK0dSQU5UIHsgeyBTRUxFQ1QgfCBVUERBVEUgfQorICAgIFssIC4uLl0gfCBBTEwg WyBQUklWSUxFR0VTIF0gfQorICAgIE9OIHsgVkFSSUFCTEUgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnZhcmlhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi5dCisgICAgICAgICB8 IEFMTCBWQVJJQUJMRVMgSU4gU0NIRU1BIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5z Y2hlbWFfbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLl0gfQorICAgIFRPIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5yb2xlX3NwZWNpZmljYXRpb248L3JlcGxhY2VhYmxlPiBbLCAuLi5d IFsgV0lUSCBHUkFOVCBPUFRJT04gXQorCiA8cGhyYXNlPndoZXJlIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5yb2xlX3NwZWNpZmljYXRpb248L3JlcGxhY2VhYmxlPiBjYW4gYmU6PC9w aHJhc2U+CiAKICAgICBbIEdST1VQIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJv bGVfbmFtZTwvcmVwbGFjZWFibGU+CkBAIC0xNjcsNiArMTczLDcgQEAgR1JBTlQgPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJvbGVfbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLl0gVE8g PHJlcGxhY2UKICAgIGZvcmVpZ24gc2VydmVycywKICAgIGxhcmdlIG9iamVjdHMsCiAgICBzY2hl bWFzLAorICAgc2NoZW1hIHZhcmlhYmxlcywKICAgIG9yIHRhYmxlc3BhY2VzLgogICAgRm9yIG90 aGVyIHR5cGVzIG9mIG9iamVjdHMsIHRoZSBkZWZhdWx0IHByaXZpbGVnZXMKICAgIGdyYW50ZWQg dG8gPGxpdGVyYWw+UFVCTElDPC9saXRlcmFsPiBhcmUgYXMgZm9sbG93czoKQEAgLTIwNCw2ICsy MTEsOCBAQCBHUkFOVCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cm9sZV9uYW1lPC9y ZXBsYWNlYWJsZT4gWywgLi4uXSBUTyA8cmVwbGFjZQogICAgICAgIEZvciBzZXF1ZW5jZXMsIHRo aXMgcHJpdmlsZWdlIGFsc28gYWxsb3dzIHRoZSB1c2Ugb2YgdGhlCiAgICAgICAgPGZ1bmN0aW9u PmN1cnJ2YWw8L2Z1bmN0aW9uPiBmdW5jdGlvbi4KICAgICAgICBGb3IgbGFyZ2Ugb2JqZWN0cywg dGhpcyBwcml2aWxlZ2UgYWxsb3dzIHRoZSBvYmplY3QgdG8gYmUgcmVhZC4KKyAgICAgICBGb3Ig c2NoZW1hIHZhcmlhYmxlcywgdGhpcyBwcml2aWxlZ2UgYWxsb3dzIHRoZSA8ZnVuY3Rpb24+Z2V0 X3NjaGVtYV92YXJpYWJsZTwvZnVuY3Rpb24+CisgICAgICAgdG8gcmVhZCB0aGUgdmFyaWFibGUn cyB2YWx1ZS4KICAgICAgIDwvcGFyYT4KICAgICAgPC9saXN0aXRlbT4KICAgICA8L3Zhcmxpc3Rl bnRyeT4KQEAgLTIzOSw2ICsyNDgsOSBAQCBHUkFOVCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+cm9sZV9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uXSBUTyA8cmVwbGFjZQogICAgICAg IDxmdW5jdGlvbj5zZXR2YWw8L2Z1bmN0aW9uPiBmdW5jdGlvbnMuCiAgICAgICAgRm9yIGxhcmdl IG9iamVjdHMsIHRoaXMgcHJpdmlsZWdlIGFsbG93cyB3cml0aW5nIG9yIHRydW5jYXRpbmcgdGhl CiAgICAgICAgb2JqZWN0LgorICAgICAgIEZvciBzY2hlbWEgdmFyaWFibGVzLCB0aGlzIHByaXZp bGVnZSBhbGxvd3MgPGNvbW1hbmQ+TEVUPC9jb21tYW5kPgorICAgICAgIGFuZCA8ZnVuY3Rpb24+ c2V0X3NjaGVtYV92YXJpYWJsZTwvZnVuY3Rpb24+IHRvIG1vZGlmeSB0aGUgc2NoZW1hIHZhcmlh YmxlJ3MKKyAgICAgICB2YWx1ZS4KICAgICAgIDwvcGFyYT4KICAgICAgPC9saXN0aXRlbT4KICAg ICA8L3Zhcmxpc3RlbnRyeT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvbGV0LnNnbWwg Yi9kb2Mvc3JjL3NnbWwvcmVmL2xldC5zZ21sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAuLmU4YmYzZjZkZDQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVm L2xldC5zZ21sCkBAIC0wLDAgKzEsOTAgQEAKKzwhLS0KK2RvYy9zcmMvc2dtbC9yZWYvbGV0LnNn bWwKK1Bvc3RncmVTUUwgZG9jdW1lbnRhdGlvbgorLS0+CisKKzxyZWZlbnRyeSBpZD0ic3FsLWxl dCI+CisgPGluZGV4dGVybSB6b25lPSJzcWwtbGV0Ij4KKyAgPHByaW1hcnk+TEVUPC9wcmltYXJ5 PgorIDwvaW5kZXh0ZXJtPgorCisgPHJlZm1ldGE+CisgIDxyZWZlbnRyeXRpdGxlPkxFVDwvcmVm ZW50cnl0aXRsZT4KKyAgPG1hbnZvbG51bT43PC9tYW52b2xudW0+CisgIDxyZWZtaXNjaW5mbz5T UUwgLSBMYW5ndWFnZSBTdGF0ZW1lbnRzPC9yZWZtaXNjaW5mbz4KKyA8L3JlZm1ldGE+CisKKyA8 cmVmbmFtZWRpdj4KKyAgPHJlZm5hbWU+TEVUPC9yZWZuYW1lPgorICA8cmVmcHVycG9zZT5jaGFu Z2UgYSBzY2hlbWEgdmFyaWFibGUncyB2YWx1ZTwvcmVmcHVycG9zZT4KKyA8L3JlZm5hbWVkaXY+ CisKKyA8cmVmc3lub3BzaXNkaXY+Cis8c3lub3BzaXM+CitMRVQgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnNjaGVtYV92YXJpYWJsZTwvcmVwbGFjZWFibGU+ID0gPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPnNxbF9leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4KKzwvc3lub3Bz aXM+CisgPC9yZWZzeW5vcHNpc2Rpdj4KKworIDxyZWZzZWN0MT4KKyAgPHRpdGxlPkRlc2NyaXB0 aW9uPC90aXRsZT4KKworICA8cGFyYT4KKyAgIFRoZSA8Y29tbWFuZD5MRVQ8L2NvbW1hbmQ+IGNv bW1hbmQgdXBkYXRlcyB0aGUgc3BlY2lmaWVkIHNjaGVtYSB2YXJpYWJsZScgdmFsdWUuCisgIDwv cGFyYT4KKworIDwvcmVmc2VjdDE+CisKKyA8cmVmc2VjdDE+CisgIDx0aXRsZT5QYXJhbWV0ZXJz PC90aXRsZT4KKworICA8dmFyaWFibGVsaXN0PgorICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVy bT48bGl0ZXJhbD5zY2hlbWFfdmFyaWFibGU8L2xpdGVyYWw+PC90ZXJtPgorICAgIDxsaXN0aXRl bT4KKyAgICAgPHBhcmE+CisgICAgICBUaGUgbmFtZSBvZiBzY2hlbWEgdmFyaWFibGUuCisgICAg IDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJs aXN0ZW50cnk+CisgICAgPHRlcm0+PGxpdGVyYWw+c3FsIGV4cHJlc3Npb248L2xpdGVyYWw+PC90 ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBBbiBTUUwgZXhwcmVzc2lv biwgdGhlIHJlc3VsdCBpcyBjYXN0IHRvIHRoZSBzY2hlbWEgdmFyaWFibGUncyB0eXBlLgorICAg ICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorICA8L3Zhcmlh YmxlbGlzdD4KKworICA8cGFyYT4KKyAgIEV4YW1wbGU6Cis8cHJvZ3JhbWxpc3Rpbmc+CitDUkVB VEUgVkFSSUFCTEUgbXl2YXIgQVMgaW50ZWdlcjsKK0xFVCBteXZhciA9IDEwOworTEVUIG15dmFy ID0gKFNFTEVDVCBzdW0odmFsKSBGUk9NIHRhYik7Cis8L3Byb2dyYW1saXN0aW5nPgorICA8L3Bh cmE+CisgPC9yZWZzZWN0MT4KKworIDxyZWZzZWN0MT4KKyAgPHRpdGxlPkNvbXBhdGliaWxpdHk8 L3RpdGxlPgorCisgIDxwYXJhPgorICAgPCEtLSB0aGlzIGZlZWxzIGxpa2UgaXQgbmVlZHMgdG8g YmUgbW9yZSBzcGVjaWZpYywKKyAgICAgICAgYnV0IEkgZG9uJ3Qga25vdyBlbm91Z2ggdG8gbWFr ZSBpdCBzbyAtLT4KKyAgIDxsaXRlcmFsPkxFVDwvbGl0ZXJhbD4gZXh0ZW5kcyBzeW50YXggZGVm aW5lZCBpbiB0aGUgU1FMCisgICBzdGFuZGFyZC4gVGhlIHN0YW5kYXJkIGtub3dzIDxsaXRlcmFs PlNFVDwvbGl0ZXJhbD4gY29tbWFuZCwKKyAgIHRoYXQgaXMgdXNlZCBmb3IgZGlmZmVyZW50IHB1 cnBvdXNlIGluIFBvc3RncmVTUUwuCisgIDwvcGFyYT4KKyA8L3JlZnNlY3QxPgorCisgPHJlZnNl Y3QxPgorICA8dGl0bGU+U2VlIEFsc288L3RpdGxlPgorCisgIDxzaW1wbGVsaXN0IHR5cGU9Imlu bGluZSI+CisgICA8bWVtYmVyPjx4cmVmIGxpbmtlbmQ9InNxbC1jcmVhdGV2YXJpYWJsZSIvPjwv bWVtYmVyPgorICAgPG1lbWJlcj48eHJlZiBsaW5rZW5kPSJzcWwtZHJvcHZhcmlhYmxlIi8+PC9t ZW1iZXI+CisgIDwvc2ltcGxlbGlzdD4KKyA8L3JlZnNlY3QxPgorPC9yZWZlbnRyeT4KZGlmZiAt LWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvcmV2b2tlLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL3Jl dm9rZS5zZ21sCmluZGV4IDcwMTgyMDJmMTQuLjczNzc4ZjAxZjkgMTAwNjQ0Ci0tLSBhL2RvYy9z cmMvc2dtbC9yZWYvcmV2b2tlLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9yZXZva2Uuc2dt bApAQCAtMTA4LDYgKzEwOCwxNCBAQCBSRVZPS0UgWyBHUkFOVCBPUFRJT04gRk9SIF0KIFJFVk9L RSBbIEFETUlOIE9QVElPTiBGT1IgXQogICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5yb2xlX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi5dIEZST00gPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnJvbGVfbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLl0KICAgICBbIENBU0NB REUgfCBSRVNUUklDVCBdCisKK1JFVk9LRSBbIEdSQU5UIE9QVElPTiBGT1IgXQorICAgIHsgeyBT RUxFQ1QgfCBVUERBVEUgfQorICAgIFssIC4uLl0gfCBBTEwgWyBQUklWSUxFR0VTIF0gfQorICAg IE9OIHsgVkFSSUFCTEUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnZhcmlhYmxlX25h bWU8L3JlcGxhY2VhYmxlPiBbLCAuLi5dCisgICAgICAgICB8IEFMTCBWQVJJQUJMRVMgSU4gU0NI RU1BIDxyZXBsYWNlYWJsZT5zY2hlbWFfbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLl0gfQorICAg IEZST00geyBbIEdST1VQIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJvbGVfbmFt ZTwvcmVwbGFjZWFibGU+IHwgUFVCTElDIH0gWywgLi4uXQorICAgIFsgQ0FTQ0FERSB8IFJFU1RS SUNUIF0KIDwvc3lub3BzaXM+CiAgPC9yZWZzeW5vcHNpc2Rpdj4KIApkaWZmIC0tZ2l0IGEvZG9j L3NyYy9zZ21sL3JlZmVyZW5jZS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZmVyZW5jZS5zZ21sCmlu ZGV4IGQyN2ZiNDE0ZjcuLmIzZjlmZmY1MTEgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWZl cmVuY2Uuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmZXJlbmNlLnNnbWwKQEAgLTEyNyw2ICsx MjcsNyBAQAogICAgJmNyZWF0ZVR5cGU7CiAgICAmY3JlYXRlVXNlcjsKICAgICZjcmVhdGVVc2Vy TWFwcGluZzsKKyAgICZjcmVhdGVWYXJpYWJsZTsKICAgICZjcmVhdGVWaWV3OwogICAgJmRlYWxs b2NhdGU7CiAgICAmZGVjbGFyZTsKQEAgLTE3NSw2ICsxNzYsNyBAQAogICAgJmRyb3BUeXBlOwog ICAgJmRyb3BVc2VyOwogICAgJmRyb3BVc2VyTWFwcGluZzsKKyAgICZkcm9wVmFyaWFibGU7CiAg ICAmZHJvcFZpZXc7CiAgICAmZW5kOwogICAgJmV4ZWN1dGU7CkBAIC0xODMsNiArMTg1LDcgQEAK ICAgICZncmFudDsKICAgICZpbXBvcnRGb3JlaWduU2NoZW1hOwogICAgJmluc2VydDsKKyAgICZs ZXQ7CiAgICAmbGlzdGVuOwogICAgJmxvYWQ7CiAgICAmbG9jazsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2NhdGFsb2cvYWNsY2hrLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2FjbGNoay5jCmlu ZGV4IDA2NDg1Mzk3OTYuLjZiZDA0MGI5M2MgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFs b2cvYWNsY2hrLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9hY2xjaGsuYwpAQCAtMjg0LDYg KzI4NCw5IEBAIHJlc3RyaWN0X2FuZF9jaGVja19ncmFudChib29sIGlzX2dyYW50LCBBY2xNb2Rl IGF2YWlsX2dvcHRpb25zLCBib29sIGFsbF9wcml2cywKIAkJY2FzZSBPQkpFQ1RfVFlQRToKIAkJ CXdob2xlX21hc2sgPSBBQ0xfQUxMX1JJR0hUU19UWVBFOwogCQkJYnJlYWs7CisJCWNhc2UgT0JK RUNUX1ZBUklBQkxFOgorCQkJd2hvbGVfbWFzayA9IEFDTF9BTExfUklHSFRTX1ZBUklBQkxFOwor CQkJYnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIG9iamVj dCB0eXBlOiAlZCIsIG9ianR5cGUpOwogCQkJLyogbm90IHJlYWNoZWQsIGJ1dCBrZWVwIGNvbXBp bGVyIHF1aWV0ICovCkBAIC01MDYsNiArNTA5LDEwIEBAIEV4ZWN1dGVHcmFudFN0bXQoR3JhbnRT dG10ICpzdG10KQogCQkJYWxsX3ByaXZpbGVnZXMgPSBBQ0xfQUxMX1JJR0hUU19GT1JFSUdOX1NF UlZFUjsKIAkJCWVycm9ybXNnID0gZ2V0dGV4dF9ub29wKCJpbnZhbGlkIHByaXZpbGVnZSB0eXBl ICVzIGZvciBmb3JlaWduIHNlcnZlciIpOwogCQkJYnJlYWs7CisJCWNhc2UgT0JKRUNUX1ZBUklB QkxFOgorCQkJYWxsX3ByaXZpbGVnZXMgPSBBQ0xfQUxMX1JJR0hUU19WQVJJQUJMRTsKKwkJCWVy cm9ybXNnID0gZ2V0dGV4dF9ub29wKCJpbnZhbGlkIHByaXZpbGVnZSB0eXBlICVzIGZvciBzY2hl bWEgdmFyaWFibGUiKTsKKwkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJZWxvZyhFUlJPUiwgInVu cmVjb2duaXplZCBHcmFudFN0bXQub2JqdHlwZTogJWQiLAogCQkJCSAoaW50KSBzdG10LT5vYmp0 eXBlKTsKQEAgLTU3Niw2ICs1ODMsNyBAQCBFeGVjR3JhbnRTdG10X29pZHMoSW50ZXJuYWxHcmFu dCAqaXN0bXQpCiAJewogCQljYXNlIE9CSkVDVF9UQUJMRToKIAkJY2FzZSBPQkpFQ1RfU0VRVUVO Q0U6CisJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgogCQkJRXhlY0dyYW50X1JlbGF0aW9uKGlzdG10 KTsKIAkJCWJyZWFrOwogCQljYXNlIE9CSkVDVF9EQVRBQkFTRToKQEAgLTY0NSw2ICs2NTMsNyBA QCBvYmplY3ROYW1lc1RvT2lkcyhPYmplY3RUeXBlIG9ianR5cGUsIExpc3QgKm9iam5hbWVzKQog CXsKIAkJY2FzZSBPQkpFQ1RfVEFCTEU6CiAJCWNhc2UgT0JKRUNUX1NFUVVFTkNFOgorCQljYXNl IE9CSkVDVF9WQVJJQUJMRToKIAkJCWZvcmVhY2goY2VsbCwgb2JqbmFtZXMpCiAJCQl7CiAJCQkJ UmFuZ2VWYXIgICAqcmVsdmFyID0gKFJhbmdlVmFyICopIGxmaXJzdChjZWxsKTsKQEAgLTEwMTcs NiArMTAyNiwxMCBAQCBFeGVjQWx0ZXJEZWZhdWx0UHJpdmlsZWdlc1N0bXQoUGFyc2VTdGF0ZSAq cHN0YXRlLCBBbHRlckRlZmF1bHRQcml2aWxlZ2VzU3RtdCAqcwogCQkJYWxsX3ByaXZpbGVnZXMg PSBBQ0xfQUxMX1JJR0hUU19TQ0hFTUE7CiAJCQllcnJvcm1zZyA9IGdldHRleHRfbm9vcCgiaW52 YWxpZCBwcml2aWxlZ2UgdHlwZSAlcyBmb3Igc2NoZW1hIik7CiAJCQlicmVhazsKKwkJY2FzZSBP QkpFQ1RfVkFSSUFCTEU6CisJCQlhbGxfcHJpdmlsZWdlcyA9IEFDTF9BTExfUklHSFRTX1ZBUklB QkxFOworCQkJZXJyb3Jtc2cgPSBnZXR0ZXh0X25vb3AoImludmFsaWQgcHJpdmlsZWdlIHR5cGUg JXMgZm9yIHNjaGVtYSB2YXJpYWJsZSIpOworCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQllbG9n KEVSUk9SLCAidW5yZWNvZ25pemVkIEdyYW50U3RtdC5vYmp0eXBlOiAlZCIsCiAJCQkJIChpbnQp IGFjdGlvbi0+b2JqdHlwZSk7CkBAIC0xMjE0LDYgKzEyMjcsMTIgQEAgU2V0RGVmYXVsdEFDTChJ bnRlcm5hbERlZmF1bHRBQ0wgKmlhY2xzKQogCQkJCXRoaXNfcHJpdmlsZWdlcyA9IEFDTF9BTExf UklHSFRTX1NDSEVNQTsKIAkJCWJyZWFrOwogCisJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgorCQkJ b2JqdHlwZSA9IERFRkFDTE9CSl9WQVJJQUJMRTsKKwkJCWlmIChpYWNscy0+YWxsX3ByaXZzICYm IHRoaXNfcHJpdmlsZWdlcyA9PSBBQ0xfTk9fUklHSFRTKQorCQkJCXRoaXNfcHJpdmlsZWdlcyA9 IEFDTF9BTExfUklHSFRTX1ZBUklBQkxFOworCQkJYnJlYWs7CisKIAkJZGVmYXVsdDoKIAkJCWVs b2coRVJST1IsICJ1bnJlY29nbml6ZWQgb2JqdHlwZTogJWQiLAogCQkJCSAoaW50KSBpYWNscy0+ b2JqdHlwZSk7CkBAIC0xNDQwLDYgKzE0NTksOSBAQCBSZW1vdmVSb2xlRnJvbU9iamVjdEFDTChP aWQgcm9sZWlkLCBPaWQgY2xhc3NpZCwgT2lkIG9iamlkKQogCQkJY2FzZSBERUZBQ0xPQkpfTkFN RVNQQUNFOgogCQkJCWlhY2xzLm9ianR5cGUgPSBPQkpFQ1RfU0NIRU1BOwogCQkJCWJyZWFrOwor CQkJY2FzZSBERUZBQ0xPQkpfVkFSSUFCTEU6CisJCQkJaWFjbHMub2JqdHlwZSA9IE9CSkVDVF9W QVJJQUJMRTsKKwkJCQlicmVhazsKIAkJCWRlZmF1bHQ6CiAJCQkJLyogU2hvdWxkbid0IGdldCBo ZXJlICovCiAJCQkJZWxvZyhFUlJPUiwgInVuZXhwZWN0ZWQgZGVmYXVsdCBBQ0wgdHlwZTogJWQi LApAQCAtMTYxMSw4ICsxNjMzLDkgQEAgZXhwYW5kX2FsbF9jb2xfcHJpdmlsZWdlcyhPaWQgdGFi bGVfb2lkLCBGb3JtX3BnX2NsYXNzIGNsYXNzRm9ybSwKIAkJaWYgKGN1cnJfYXR0ID09IE9iamVj dElkQXR0cmlidXRlTnVtYmVyICYmICFjbGFzc0Zvcm0tPnJlbGhhc29pZHMpCiAJCQljb250aW51 ZTsKIAotCQkvKiBWaWV3cyBkb24ndCBoYXZlIGFueSBzeXN0ZW0gY29sdW1ucyBhdCBhbGwgKi8K LQkJaWYgKGNsYXNzRm9ybS0+cmVsa2luZCA9PSBSRUxLSU5EX1ZJRVcgJiYgY3Vycl9hdHQgPCAw KQorCQkvKiBWaWV3cyBhbmQgdmFyaWFibGVzIGRvbid0IGhhdmUgYW55IHN5c3RlbSBjb2x1bW5z IGF0IGFsbCAqLworCQlpZiAoKGNsYXNzRm9ybS0+cmVsa2luZCA9PSBSRUxLSU5EX1ZJRVcgIHx8 IGNsYXNzRm9ybS0+cmVsa2luZCA9PSBSRUxLSU5EX1ZBUklBQkxFKSAmJgorCQkJY3Vycl9hdHQg PCAwKQogCQkJY29udGludWU7CiAKIAkJYXR0VHVwbGUgPSBTZWFyY2hTeXNDYWNoZTIoQVRUTlVN LApAQCAtMzQ1NSw2ICszNDc4LDkgQEAgYWNsY2hlY2tfZXJyb3IoQWNsUmVzdWx0IGFjbGVyciwg T2JqZWN0VHlwZSBvYmp0eXBlLAogCQkJCQljYXNlIE9CSkVDVF9UWVBFOgogCQkJCQkJbXNnID0g Z2V0dGV4dF9ub29wKCJwZXJtaXNzaW9uIGRlbmllZCBmb3IgdHlwZSAlcyIpOwogCQkJCQkJYnJl YWs7CisJCQkJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgorCQkJCQkJbXNnID0gZ2V0dGV4dF9ub29w KCJwZXJtaXNzaW9uIGRlbmllZCBmb3Igc2NoZW1hIHZhcmlhYmxlICVzIik7CisJCQkJCQlicmVh azsKIAkJCQkJY2FzZSBPQkpFQ1RfVklFVzoKIAkJCQkJCW1zZyA9IGdldHRleHRfbm9vcCgicGVy bWlzc2lvbiBkZW5pZWQgZm9yIHZpZXcgJXMiKTsKIAkJCQkJCWJyZWFrOwpAQCAtMzU2NSw2ICsz NTkxLDkgQEAgYWNsY2hlY2tfZXJyb3IoQWNsUmVzdWx0IGFjbGVyciwgT2JqZWN0VHlwZSBvYmp0 eXBlLAogCQkJCQljYXNlIE9CSkVDVF9UWVBFOgogCQkJCQkJbXNnID0gZ2V0dGV4dF9ub29wKCJt dXN0IGJlIG93bmVyIG9mIHR5cGUgJXMiKTsKIAkJCQkJCWJyZWFrOworCQkJCQljYXNlIE9CSkVD VF9WQVJJQUJMRToKKwkJCQkJCW1zZyA9IGdldHRleHRfbm9vcCgibXVzdCBiZSBvd25lciBvZiBz Y2hlbWEgdmFyaWFibGUgJXMiKTsKKwkJCQkJCWJyZWFrOwogCQkJCQljYXNlIE9CSkVDVF9WSUVX OgogCQkJCQkJbXNnID0gZ2V0dGV4dF9ub29wKCJtdXN0IGJlIG93bmVyIG9mIHZpZXcgJXMiKTsK IAkJCQkJCWJyZWFrOwpAQCAtMzY3OSw2ICszNzA4LDcgQEAgcGdfYWNsbWFzayhPYmplY3RUeXBl IG9ianR5cGUsIE9pZCB0YWJsZV9vaWQsIEF0dHJOdW1iZXIgYXR0bnVtLCBPaWQgcm9sZWlkLAog CQkJCXBnX2F0dHJpYnV0ZV9hY2xtYXNrKHRhYmxlX29pZCwgYXR0bnVtLCByb2xlaWQsIG1hc2ss IGhvdyk7CiAJCWNhc2UgT0JKRUNUX1RBQkxFOgogCQljYXNlIE9CSkVDVF9TRVFVRU5DRToKKwkJ Y2FzZSBPQkpFQ1RfVkFSSUFCTEU6CiAJCQlyZXR1cm4gcGdfY2xhc3NfYWNsbWFzayh0YWJsZV9v aWQsIHJvbGVpZCwgbWFzaywgaG93KTsKIAkJY2FzZSBPQkpFQ1RfREFUQUJBU0U6CiAJCQlyZXR1 cm4gcGdfZGF0YWJhc2VfYWNsbWFzayh0YWJsZV9vaWQsIHJvbGVpZCwgbWFzaywgaG93KTsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaGVhcC5jIGIvc3JjL2JhY2tlbmQvY2F0YWxv Zy9oZWFwLmMKaW5kZXggMDQ5NzMzMmU5ZC4uMTlmZjI2Mzg4NiAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvY2F0YWxvZy9oZWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9oZWFwLmMKQEAg LTI5MSw2ICsyOTEsNyBAQCBoZWFwX2NyZWF0ZShjb25zdCBjaGFyICpyZWxuYW1lLAogCXN3aXRj aCAocmVsa2luZCkKIAl7CiAJCWNhc2UgUkVMS0lORF9WSUVXOgorCQljYXNlIFJFTEtJTkRfVkFS SUFCTEU6CiAJCWNhc2UgUkVMS0lORF9DT01QT1NJVEVfVFlQRToKIAkJY2FzZSBSRUxLSU5EX0ZP UkVJR05fVEFCTEU6CiAJCWNhc2UgUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRToKQEAgLTQyOCw3 ICs0MjksOCBAQCBDaGVja0F0dHJpYnV0ZU5hbWVzVHlwZXMoVHVwbGVEZXNjIHR1cGRlc2MsIGNo YXIgcmVsa2luZCwKIAkgKiBTa2lwIHRoaXMgZm9yIGEgdmlldyBvciB0eXBlIHJlbGF0aW9uLCBz aW5jZSB0aG9zZSBkb24ndCBoYXZlIHN5c3RlbQogCSAqIGF0dHJpYnV0ZXMuCiAJICovCi0JaWYg KHJlbGtpbmQgIT0gUkVMS0lORF9WSUVXICYmIHJlbGtpbmQgIT0gUkVMS0lORF9DT01QT1NJVEVf VFlQRSkKKwlpZiAocmVsa2luZCAhPSBSRUxLSU5EX1ZJRVcgJiYgcmVsa2luZCAhPSBSRUxLSU5E X0NPTVBPU0lURV9UWVBFICYmCisJCXJlbGtpbmQgIT0gUkVMS0lORF9WQVJJQUJMRSkKIAl7CiAJ CWZvciAoaSA9IDA7IGkgPCBuYXR0czsgaSsrKQogCQl7CkBAIC03MTUsNyArNzE3LDggQEAgQWRk TmV3QXR0cmlidXRlVHVwbGVzKE9pZCBuZXdfcmVsX29pZCwKIAkgKiBhbGwgZm9yIGEgdmlldyBv ciB0eXBlIHJlbGF0aW9uLiAgV2UgZG9uJ3QgYm90aGVyIHdpdGggbWFraW5nIGRhdGF0eXBlCiAJ ICogZGVwZW5kZW5jaWVzIGhlcmUsIHNpbmNlIHByZXN1bWFibHkgYWxsIHRoZXNlIHR5cGVzIGFy ZSBwaW5uZWQuCiAJICovCi0JaWYgKHJlbGtpbmQgIT0gUkVMS0lORF9WSUVXICYmIHJlbGtpbmQg IT0gUkVMS0lORF9DT01QT1NJVEVfVFlQRSkKKwlpZiAocmVsa2luZCAhPSBSRUxLSU5EX1ZJRVcg JiYgcmVsa2luZCAhPSBSRUxLSU5EX0NPTVBPU0lURV9UWVBFICYmCisJCXJlbGtpbmQgIT0gUkVM S0lORF9WQVJJQUJMRSkKIAl7CiAJCWZvciAoaSA9IDA7IGkgPCAoaW50KSBsZW5ndGhvZihTeXNB dHQpOyBpKyspCiAJCXsKQEAgLTEwNjYsNyArMTA2OSw5IEBAIGhlYXBfY3JlYXRlX3dpdGhfY2F0 YWxvZyhjb25zdCBjaGFyICpyZWxuYW1lLAogCWlmIChleGlzdGluZ19yZWxpZCAhPSBJbnZhbGlk T2lkKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfRFVQTElDQVRFX1RB QkxFKSwKLQkJCQkgZXJybXNnKCJyZWxhdGlvbiBcIiVzXCIgYWxyZWFkeSBleGlzdHMiLCByZWxu YW1lKSkpOworCQkJCSBlcnJtc2coIiVzIFwiJXNcIiBhbHJlYWR5IGV4aXN0cyIsCisJCQkJCQly ZWxraW5kID09IFJFTEtJTkRfVkFSSUFCTEUgPyAidmFyaWFibGUiIDogInJlbGF0aW9uIiwKKwkJ CQkJCXJlbG5hbWUpKSk7CiAKIAkvKgogCSAqIFNpbmNlIHdlIGFyZSBnb2luZyB0byBjcmVhdGUg YSByb3d0eXBlIGFzIHdlbGwsIGFsc28gY2hlY2sgZm9yCkBAIC0xMTA3LDcgKzExMTIsNyBAQCBo ZWFwX2NyZWF0ZV93aXRoX2NhdGFsb2coY29uc3QgY2hhciAqcmVsbmFtZSwKIAkJCShyZWxraW5k ID09IFJFTEtJTkRfUkVMQVRJT04gfHwgcmVsa2luZCA9PSBSRUxLSU5EX1NFUVVFTkNFIHx8CiAJ CQkgcmVsa2luZCA9PSBSRUxLSU5EX1ZJRVcgfHwgcmVsa2luZCA9PSBSRUxLSU5EX01BVFZJRVcg fHwKIAkJCSByZWxraW5kID09IFJFTEtJTkRfQ09NUE9TSVRFX1RZUEUgfHwgcmVsa2luZCA9PSBS RUxLSU5EX0ZPUkVJR05fVEFCTEUgfHwKLQkJCSByZWxraW5kID09IFJFTEtJTkRfUEFSVElUSU9O RURfVEFCTEUpKQorCQkJIHJlbGtpbmQgPT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSB8fCBy ZWxraW5kID09IFJFTEtJTkRfVkFSSUFCTEUpKQogCQl7CiAJCQlpZiAoIU9pZElzVmFsaWQoYmlu YXJ5X3VwZ3JhZGVfbmV4dF9oZWFwX3BnX2NsYXNzX29pZCkpCiAJCQkJZXJlcG9ydChFUlJPUiwK QEAgLTExNDksNiArMTE1NCwxMCBAQCBoZWFwX2NyZWF0ZV93aXRoX2NhdGFsb2coY29uc3QgY2hh ciAqcmVsbmFtZSwKIAkJCQlyZWxhY2wgPSBnZXRfdXNlcl9kZWZhdWx0X2FjbChPQkpFQ1RfU0VR VUVOQ0UsIG93bmVyaWQsCiAJCQkJCQkJCQkJCSAgcmVsbmFtZXNwYWNlKTsKIAkJCQlicmVhazsK KwkJCWNhc2UgUkVMS0lORF9WQVJJQUJMRToKKwkJCQlyZWxhY2wgPSBnZXRfdXNlcl9kZWZhdWx0 X2FjbChPQkpFQ1RfVkFSSUFCTEUsIG93bmVyaWQsCisJCQkJCQkJCQkJCSAgcmVsbmFtZXNwYWNl KTsKKwkJCQlicmVhazsKIAkJCWRlZmF1bHQ6CiAJCQkJcmVsYWNsID0gTlVMTDsKIAkJCQlicmVh azsKQEAgLTExODAsMTQgKzExODksMTYgQEAgaGVhcF9jcmVhdGVfd2l0aF9jYXRhbG9nKGNvbnN0 IGNoYXIgKnJlbG5hbWUsCiAJICogRGVjaWRlIHdoZXRoZXIgdG8gY3JlYXRlIGFuIGFycmF5IHR5 cGUgb3ZlciB0aGUgcmVsYXRpb24ncyByb3d0eXBlLiBXZQogCSAqIGRvIG5vdCBjcmVhdGUgYW55 IGFycmF5IHR5cGVzIGZvciBzeXN0ZW0gY2F0YWxvZ3MgKGllLCB0aG9zZSBtYWRlCiAJICogZHVy aW5nIGluaXRkYikuIFdlIGRvIG5vdCBjcmVhdGUgdGhlbSB3aGVyZSB0aGUgdXNlIG9mIGEgcmVs YXRpb24gYXMKLQkgKiBzdWNoIGlzIGFuIGltcGxlbWVudGF0aW9uIGRldGFpbDogdG9hc3QgdGFi bGVzLCBzZXF1ZW5jZXMgYW5kIGluZGV4ZXMuCisJICogc3VjaCBpcyBhbiBpbXBsZW1lbnRhdGlv biBkZXRhaWw6IHRvYXN0IHRhYmxlcywgc2VxdWVuY2VzLCBpbmRleGVzIGFuZAorCSAqIHZhcmlh Ymxlcy4KIAkgKi8KIAlpZiAoSXNVbmRlclBvc3RtYXN0ZXIgJiYgKHJlbGtpbmQgPT0gUkVMS0lO RF9SRUxBVElPTiB8fAogCQkJCQkJCSAgcmVsa2luZCA9PSBSRUxLSU5EX1ZJRVcgfHwKIAkJCQkJ CQkgIHJlbGtpbmQgPT0gUkVMS0lORF9NQVRWSUVXIHx8CiAJCQkJCQkJICByZWxraW5kID09IFJF TEtJTkRfRk9SRUlHTl9UQUJMRSB8fAogCQkJCQkJCSAgcmVsa2luZCA9PSBSRUxLSU5EX0NPTVBP U0lURV9UWVBFIHx8Ci0JCQkJCQkJICByZWxraW5kID09IFJFTEtJTkRfUEFSVElUSU9ORURfVEFC TEUpKQorCQkJCQkJCSAgcmVsa2luZCA9PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFIHx8CisJ CQkJCQkJICByZWxraW5kID09IFJFTEtJTkRfVkFSSUFCTEUpKQogCQluZXdfYXJyYXlfb2lkID0g QXNzaWduVHlwZUFycmF5T2lkKCk7CiAKIAkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0 YWxvZy9vYmplY3RhZGRyZXNzLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL29iamVjdGFkZHJlc3Mu YwppbmRleCAxMTkyOTdiMzNhLi4zZDMwYTA1YzA0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9j YXRhbG9nL29iamVjdGFkZHJlc3MuYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL29iamVjdGFk ZHJlc3MuYwpAQCAtNTIwLDYgKzUyMCw5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2JqZWN0X3R5 cGVfbWFwCiAJewogCQkic2VxdWVuY2UiLCBPQkpFQ1RfU0VRVUVOQ0UKIAl9LAorCXsKKwkJInZh cmlhYmxlIiwgT0JKRUNUX1ZBUklBQkxFCisJfSwKIAl7CiAJCSJ0b2FzdCB0YWJsZSIsIC0xCiAJ fSwJCQkJCQkJLyogdW5tYXBwZWQgKi8KQEAgLTgyNCw2ICs4MjcsNyBAQCBnZXRfb2JqZWN0X2Fk ZHJlc3MoT2JqZWN0VHlwZSBvYmp0eXBlLCBOb2RlICpvYmplY3QsCiAJCQljYXNlIE9CSkVDVF9W SUVXOgogCQkJY2FzZSBPQkpFQ1RfTUFUVklFVzoKIAkJCWNhc2UgT0JKRUNUX0ZPUkVJR05fVEFC TEU6CisJCQljYXNlIE9CSkVDVF9WQVJJQUJMRToKIAkJCQlhZGRyZXNzID0KIAkJCQkJZ2V0X3Jl bGF0aW9uX2J5X3F1YWxpZmllZF9uYW1lKG9ianR5cGUsIGNhc3ROb2RlKExpc3QsIG9iamVjdCks CiAJCQkJCQkJCQkJCQkgICAmcmVsYXRpb24sIGxvY2ttb2RlLApAQCAtMTI2MCw2ICsxMjY0LDE0 IEBAIGdldF9yZWxhdGlvbl9ieV9xdWFsaWZpZWRfbmFtZShPYmplY3RUeXBlIG9ianR5cGUsIExp c3QgKm9iamVjdCwKIAkJCQkJCSBlcnJtc2coIlwiJXNcIiBpcyBub3QgYSBmb3JlaWduIHRhYmxl IiwKIAkJCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsYXRpb24pKSkpOwogCQkJYnJl YWs7CisJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgorCQkJaWYgKHJlbGF0aW9uLT5yZF9yZWwtPnJl bGtpbmQgIT0gUkVMS0lORF9WQVJJQUJMRSkKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVy cmNvZGUoRVJSQ09ERV9XUk9OR19PQkpFQ1RfVFlQRSksCisJCQkJCQkgZXJybXNnKCJcIiVzXCIg aXMgbm90IGEgc2NoZW1hIHZhcmlhYmxlIiwKKwkJCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5h bWUocmVsYXRpb24pKSkpOworCQkJYnJlYWs7CisKIAkJZGVmYXVsdDoKIAkJCWVsb2coRVJST1Is ICJ1bnJlY29nbml6ZWQgb2JqdHlwZTogJWQiLCAoaW50KSBvYmp0eXBlKTsKIAkJCWJyZWFrOwpA QCAtMTg0OSw2ICsxODYxLDggQEAgZ2V0X29iamVjdF9hZGRyZXNzX2RlZmFjbChMaXN0ICpvYmpl Y3QsIGJvb2wgbWlzc2luZ19vaykKIAkJY2FzZSBERUZBQ0xPQkpfTkFNRVNQQUNFOgogCQkJb2Jq dHlwZV9zdHIgPSAic2NoZW1hcyI7CiAJCQlicmVhazsKKwkJY2FzZSBERUZBQ0xPQkpfVkFSSUFC TEU6CisJCQlvYmp0eXBlX3N0ciA9ICJ2YXJpYWJsZXMiOwogCQlkZWZhdWx0OgogCQkJZXJlcG9y dChFUlJPUiwKIAkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSks CkBAIC0yMTExLDYgKzIxMjUsNyBAQCBwZ19nZXRfb2JqZWN0X2FkZHJlc3MoUEdfRlVOQ1RJT05f QVJHUykKIAl7CiAJCWNhc2UgT0JKRUNUX1RBQkxFOgogCQljYXNlIE9CSkVDVF9TRVFVRU5DRToK KwkJY2FzZSBPQkpFQ1RfVkFSSUFCTEU6CiAJCWNhc2UgT0JKRUNUX1ZJRVc6CiAJCWNhc2UgT0JK RUNUX01BVFZJRVc6CiAJCWNhc2UgT0JKRUNUX0lOREVYOgpAQCAtMjIzNSw2ICsyMjUwLDcgQEAg Y2hlY2tfb2JqZWN0X293bmVyc2hpcChPaWQgcm9sZWlkLCBPYmplY3RUeXBlIG9ianR5cGUsIE9i amVjdEFkZHJlc3MgYWRkcmVzcywKIAkJY2FzZSBPQkpFQ1RfSU5ERVg6CiAJCWNhc2UgT0JKRUNU X1NFUVVFTkNFOgogCQljYXNlIE9CSkVDVF9UQUJMRToKKwkJY2FzZSBPQkpFQ1RfVkFSSUFCTEU6 CiAJCWNhc2UgT0JKRUNUX1ZJRVc6CiAJCWNhc2UgT0JKRUNUX01BVFZJRVc6CiAJCWNhc2UgT0JK RUNUX0ZPUkVJR05fVEFCTEU6CkBAIC0zMzAyLDYgKzMzMTgsMTEgQEAgZ2V0T2JqZWN0RGVzY3Jp cHRpb24oY29uc3QgT2JqZWN0QWRkcmVzcyAqb2JqZWN0KQogCQkJCQkJCQkJCSBfKCJkZWZhdWx0 IHByaXZpbGVnZXMgb24gbmV3IHNjaGVtYXMgYmVsb25naW5nIHRvIHJvbGUgJXMiKSwKIAkJCQkJ CQkJCQkgR2V0VXNlck5hbWVGcm9tSWQoZGVmYWNsLT5kZWZhY2xyb2xlLCBmYWxzZSkpOwogCQkJ CQkJYnJlYWs7CisJCQkJCWNhc2UgREVGQUNMT0JKX1ZBUklBQkxFOgorCQkJCQkJYXBwZW5kU3Ry aW5nSW5mbygmYnVmZmVyLAorCQkJCQkJCQkJCSBfKCJkZWZhdWx0IHByaXZpbGVnZXMgb24gbmV3 IHNjaGVtYSB2YXJpYWJsZXMgYmVsb25naW5nIHRvIHJvbGUgJXMiKSwKKwkJCQkJCQkJCQkgR2V0 VXNlck5hbWVGcm9tSWQoZGVmYWNsLT5kZWZhY2xyb2xlLCBmYWxzZSkpOworCQkJCQkJYnJlYWs7 CiAJCQkJCWRlZmF1bHQ6CiAJCQkJCQkvKiBzaG91bGRuJ3QgZ2V0IGhlcmUgKi8KIAkJCQkJCWFw cGVuZFN0cmluZ0luZm8oJmJ1ZmZlciwKQEAgLTM1MDUsNiArMzUyNiwxMCBAQCBnZXRSZWxhdGlv bkRlc2NyaXB0aW9uKFN0cmluZ0luZm8gYnVmZmVyLCBPaWQgcmVsaWQpCiAJCQlhcHBlbmRTdHJp bmdJbmZvKGJ1ZmZlciwgXygic2VxdWVuY2UgJXMiKSwKIAkJCQkJCQkgcmVsbmFtZSk7CiAJCQli cmVhazsKKwkJY2FzZSBSRUxLSU5EX1ZBUklBQkxFOgorCQkJYXBwZW5kU3RyaW5nSW5mbyhidWZm ZXIsIF8oInZhcmlhYmxlICVzIiksCisJCQkJCQkJIHJlbG5hbWUpOworCQkJYnJlYWs7CiAJCWNh c2UgUkVMS0lORF9UT0FTVFZBTFVFOgogCQkJYXBwZW5kU3RyaW5nSW5mbyhidWZmZXIsIF8oInRv YXN0IHRhYmxlICVzIiksCiAJCQkJCQkJIHJlbG5hbWUpOwpAQCAtNDgzMyw2ICs0ODU4LDEwIEBA IGdldE9iamVjdElkZW50aXR5UGFydHMoY29uc3QgT2JqZWN0QWRkcmVzcyAqb2JqZWN0LAogCQkJ CQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmYnVmZmVyLAogCQkJCQkJCQkJCQkgICAiIG9uIHNj aGVtYXMiKTsKIAkJCQkJCWJyZWFrOworCQkJCQljYXNlIERFRkFDTE9CSl9WQVJJQUJMRToKKwkJ CQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmJ1ZmZlciwKKwkJCQkJCQkJCQkJICAgIiBvbiBz Y2hlbWEgdmFyaWFibGVzIik7CisJCQkJCQlicmVhazsKIAkJCQl9CiAKIAkJCQlpZiAob2JqbmFt ZSkKQEAgLTUxMjUsNiArNTE1NCw4IEBAIGdldF9yZWxraW5kX29ianR5cGUoY2hhciByZWxraW5k KQogCQkJcmV0dXJuIE9CSkVDVF9JTkRFWDsKIAkJY2FzZSBSRUxLSU5EX1NFUVVFTkNFOgogCQkJ cmV0dXJuIE9CSkVDVF9TRVFVRU5DRTsKKwkJY2FzZSBSRUxLSU5EX1ZBUklBQkxFOgorCQkJcmV0 dXJuIE9CSkVDVF9WQVJJQUJMRTsKIAkJY2FzZSBSRUxLSU5EX1ZJRVc6CiAJCQlyZXR1cm4gT0JK RUNUX1ZJRVc7CiAJCWNhc2UgUkVMS0lORF9NQVRWSUVXOgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvTWFrZWZpbGUgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9NYWtlZmlsZQppbmRl eCA0YTZjOTllMDkwLi41NzQ3MjcyYzlhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5k cy9NYWtlZmlsZQorKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9NYWtlZmlsZQpAQCAtMTgsNyAr MTgsNyBAQCBPQkpTID0gYW1jbWRzLm8gYWdncmVnYXRlY21kcy5vIGFsdGVyLm8gYW5hbHl6ZS5v IGFzeW5jLm8gY2x1c3Rlci5vIGNvbW1lbnQubyBcCiAJZXZlbnRfdHJpZ2dlci5vIGV4cGxhaW4u byBleHRlbnNpb24ubyBmb3JlaWduY21kcy5vIGZ1bmN0aW9uY21kcy5vIFwKIAlpbmRleGNtZHMu byBsb2NrY21kcy5vIG1hdHZpZXcubyBvcGVyYXRvcmNtZHMubyBvcGNsYXNzY21kcy5vIFwKIAlw b2xpY3kubyBwb3J0YWxjbWRzLm8gcHJlcGFyZS5vIHByb2NsYW5nLm8gcHVibGljYXRpb25jbWRz Lm8gXAotCXNjaGVtYWNtZHMubyBzZWNsYWJlbC5vIHNlcXVlbmNlLm8gc3RhdHNjbWRzLm8gc3Vi c2NyaXB0aW9uY21kcy5vIFwKKwlzY2hlbWFjbWRzLm8gc2NoZW1hdmFyLm8gc2VjbGFiZWwubyBz ZXF1ZW5jZS5vIHN0YXRzY21kcy5vIHN1YnNjcmlwdGlvbmNtZHMubyBcCiAJdGFibGVjbWRzLm8g dGFibGVzcGFjZS5vIHRyaWdnZXIubyB0c2VhcmNoY21kcy5vIHR5cGVjbWRzLm8gdXNlci5vIFwK IAl2YWN1dW0ubyB2YWN1dW1sYXp5Lm8gdmFyaWFibGUubyB2aWV3Lm8KIApkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvY29tbWFuZHMvYWx0ZXIuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FsdGVy LmMKaW5kZXggMGQ2Mzg2NmZiMC4uZTE3NGUyNDBiNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvYWx0ZXIuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9hbHRlci5jCkBAIC0z NDgsNiArMzQ4LDcgQEAgRXhlY1JlbmFtZVN0bXQoUmVuYW1lU3RtdCAqc3RtdCkKIAkJY2FzZSBP QkpFQ1RfTUFUVklFVzoKIAkJY2FzZSBPQkpFQ1RfSU5ERVg6CiAJCWNhc2UgT0JKRUNUX0ZPUkVJ R05fVEFCTEU6CisJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgogCQkJcmV0dXJuIFJlbmFtZVJlbGF0 aW9uKHN0bXQpOwogCiAJCWNhc2UgT0JKRUNUX0NPTFVNTjoKQEAgLTQ3OCw2ICs0NzksNyBAQCBF eGVjQWx0ZXJPYmplY3RTY2hlbWFTdG10KEFsdGVyT2JqZWN0U2NoZW1hU3RtdCAqc3RtdCwKIAkJ Y2FzZSBPQkpFQ1RfVEFCTEU6CiAJCWNhc2UgT0JKRUNUX1ZJRVc6CiAJCWNhc2UgT0JKRUNUX01B VFZJRVc6CisJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgogCQkJYWRkcmVzcyA9IEFsdGVyVGFibGVO YW1lc3BhY2Uoc3RtdCwKIAkJCQkJCQkJCQkgIG9sZFNjaGVtYUFkZHIgPyAmb2xkTnNwT2lkIDog TlVMTCk7CiAJCQlicmVhazsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvbW1l bnQuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvbW1lbnQuYwppbmRleCAyZjJlNjliNGE4Li5m NGEzY2FlNmI0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb21tZW50LmMKKysr IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29tbWVudC5jCkBAIC04Myw3ICs4Myw3IEBAIENvbW1l bnRPYmplY3QoQ29tbWVudFN0bXQgKnN0bXQpCiAKIAkJCS8qCiAJCQkgKiBBbGxvdyBjb21tZW50 cyBvbmx5IG9uIGNvbHVtbnMgb2YgdGFibGVzLCB2aWV3cywgbWF0ZXJpYWxpemVkCi0JCQkgKiB2 aWV3cywgY29tcG9zaXRlIHR5cGVzLCBhbmQgZm9yZWlnbiB0YWJsZXMgKHdoaWNoIGFyZSB0aGUg b25seQorCQkJICogdmlld3MsIGNvbXBvc2l0ZSB0eXBlcywgdmFyaWFibGVzIGFuZCBmb3JlaWdu IHRhYmxlcyAod2hpY2ggYXJlIHRoZSBvbmx5CiAJCQkgKiByZWxraW5kcyBmb3Igd2hpY2ggcGdf ZHVtcCB3aWxsIGR1bXAgcGVyLWNvbHVtbiBjb21tZW50cykuICBJbgogCQkJICogcGFydGljdWxh ciB3ZSB3aXNoIHRvIGRpc2FsbG93IGNvbW1lbnRzIG9uIGluZGV4IGNvbHVtbnMsCiAJCQkgKiBi ZWNhdXNlIHRoZSBuYW1pbmcgb2YgYW4gaW5kZXgncyBjb2x1bW5zIG1heSBjaGFuZ2UgYWNyb3Nz IFBHCkBAIC05NSwxMCArOTUsMTEgQEAgQ29tbWVudE9iamVjdChDb21tZW50U3RtdCAqc3RtdCkK IAkJCQlyZWxhdGlvbi0+cmRfcmVsLT5yZWxraW5kICE9IFJFTEtJTkRfTUFUVklFVyAmJgogCQkJ CXJlbGF0aW9uLT5yZF9yZWwtPnJlbGtpbmQgIT0gUkVMS0lORF9DT01QT1NJVEVfVFlQRSAmJgog CQkJCXJlbGF0aW9uLT5yZF9yZWwtPnJlbGtpbmQgIT0gUkVMS0lORF9GT1JFSUdOX1RBQkxFICYm Ci0JCQkJcmVsYXRpb24tPnJkX3JlbC0+cmVsa2luZCAhPSBSRUxLSU5EX1BBUlRJVElPTkVEX1RB QkxFKQorCQkJCXJlbGF0aW9uLT5yZF9yZWwtPnJlbGtpbmQgIT0gUkVMS0lORF9QQVJUSVRJT05F RF9UQUJMRSAmJgorCQkJCXJlbGF0aW9uLT5yZF9yZWwtPnJlbGtpbmQgIT0gUkVMS0lORF9WQVJJ QUJMRSkKIAkJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9XUk9OR19P QkpFQ1RfVFlQRSksCi0JCQkJCQkgZXJybXNnKCJcIiVzXCIgaXMgbm90IGEgdGFibGUsIHZpZXcs IG1hdGVyaWFsaXplZCB2aWV3LCBjb21wb3NpdGUgdHlwZSwgb3IgZm9yZWlnbiB0YWJsZSIsCisJ CQkJCQkgZXJybXNnKCJcIiVzXCIgaXMgbm90IGEgdGFibGUsIHZpZXcsIG1hdGVyaWFsaXplZCB2 aWV3LCBjb21wb3NpdGUgdHlwZSwgc2NoZW1hIHZhcmlhYmxlIG9yIGZvcmVpZ24gdGFibGUiLAog CQkJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWxhdGlvbikpKSk7CiAJCQlicmVhazsK IAkJZGVmYXVsdDoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHkuYyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL2NvcHkuYwppbmRleCBhNDI4NjFkYTBkLi4zYTFlZTYwMGYxIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5LmMKKysrIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvY29weS5jCkBAIC0xNDg0LDYgKzE0ODQsOSBAQCBCZWdpbkNvcHkoUGFyc2VTdGF0 ZSAqcHN0YXRlLAogCiAJCUFzc2VydChxdWVyeS0+dXRpbGl0eVN0bXQgPT0gTlVMTCk7CiAKKwkJ LyogRG9uJ3QgZXhwZWN0IExFVCBzdG10IGhlcmUsIGlzIG5vdCBwb3NzaWJsZSB0byBkbyB3cml0 ZSBpdCAqLworCQlBc3NlcnQocXVlcnktPmNvbW1hbmRUeXBlICE9IENNRF9MRVQpOworCiAJCS8q CiAJCSAqIFNpbWlsYXJseSB0aGUgZ3JhbW1hciBkb2Vzbid0IGVuZm9yY2UgdGhlIHByZXNlbmNl IG9mIGEgUkVUVVJOSU5HCiAJCSAqIGNsYXVzZSwgYnV0IHRoaXMgaXMgcmVxdWlyZWQgaGVyZS4K ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2Rpc2NhcmQuYyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL2Rpc2NhcmQuYwppbmRleCAwMWE5OTljMmFjLi43YWE3ZDgzNWY4IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9kaXNjYXJkLmMKKysrIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvZGlzY2FyZC5jCkBAIC0xOCw2ICsxOCw3IEBACiAjaW5jbHVkZSAiY29tbWFuZHMvYXN5 bmMuaCIKICNpbmNsdWRlICJjb21tYW5kcy9kaXNjYXJkLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMv cHJlcGFyZS5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3NjaGVtYXZhci5oIgogI2luY2x1ZGUgImNv bW1hbmRzL3NlcXVlbmNlLmgiCiAjaW5jbHVkZSAidXRpbHMvZ3VjLmgiCiAjaW5jbHVkZSAidXRp bHMvcG9ydGFsLmgiCkBAIC0yNSw3ICsyNiw3IEBACiBzdGF0aWMgdm9pZCBEaXNjYXJkQWxsKGJv b2wgaXNUb3BMZXZlbCk7CiAKIC8qCi0gKiBESVNDQVJEIHsgQUxMIHwgU0VRVUVOQ0VTIHwgVEVN UCB8IFBMQU5TIH0KKyAqIERJU0NBUkQgeyBBTEwgfCBTRVFVRU5DRVMgfCBURU1QIHwgUExBTlMg fCBWQVJJQUJMRVN9CiAgKi8KIHZvaWQKIERpc2NhcmRDb21tYW5kKERpc2NhcmRTdG10ICpzdG10 LCBib29sIGlzVG9wTGV2ZWwpCkBAIC00OCw2ICs0OSwxMCBAQCBEaXNjYXJkQ29tbWFuZChEaXNj YXJkU3RtdCAqc3RtdCwgYm9vbCBpc1RvcExldmVsKQogCQkJUmVzZXRUZW1wVGFibGVOYW1lc3Bh Y2UoKTsKIAkJCWJyZWFrOwogCisJCWNhc2UgRElTQ0FSRF9WQVJJQUJMRVM6CisJCQlSZXNldFNj aGVtYVZhcmlhYmxlc0NhY2hlKCk7CisJCQlicmVhazsKKwogCQlkZWZhdWx0OgogCQkJZWxvZyhF UlJPUiwgInVucmVjb2duaXplZCBESVNDQVJEIHRhcmdldDogJWQiLCBzdG10LT50YXJnZXQpOwog CX0KQEAgLTc1LDQgKzgwLDUgQEAgRGlzY2FyZEFsbChib29sIGlzVG9wTGV2ZWwpCiAJUmVzZXRQ bGFuQ2FjaGUoKTsKIAlSZXNldFRlbXBUYWJsZU5hbWVzcGFjZSgpOwogCVJlc2V0U2VxdWVuY2VD YWNoZXMoKTsKKwlSZXNldFNjaGVtYVZhcmlhYmxlc0NhY2hlKCk7CiB9CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9jb21tYW5kcy9ldmVudF90cmlnZ2VyLmMgYi9zcmMvYmFja2VuZC9jb21tYW5k cy9ldmVudF90cmlnZ2VyLmMKaW5kZXggNTQ5YzdlYTUxZC4uYzhlMmI4MjJlMSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXZlbnRfdHJpZ2dlci5jCisrKyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL2V2ZW50X3RyaWdnZXIuYwpAQCAtMTI2LDYgKzEyNiw3IEBAIHN0YXRpYyBldmVu dF90cmlnZ2VyX3N1cHBvcnRfZGF0YSBldmVudF90cmlnZ2VyX3N1cHBvcnRbXSA9IHsKIAl7IlRF WFQgU0VBUkNIIFRFTVBMQVRFIiwgdHJ1ZX0sCiAJeyJUWVBFIiwgdHJ1ZX0sCiAJeyJVU0VSIE1B UFBJTkciLCB0cnVlfSwKKwl7IlZBUklBQkxFIiwgdHJ1ZX0sCiAJeyJWSUVXIiwgdHJ1ZX0sCiAJ e05VTEwsIGZhbHNlfQogfTsKQEAgLTExMjQsNiArMTEyNSw3IEBAIEV2ZW50VHJpZ2dlclN1cHBv cnRzT2JqZWN0VHlwZShPYmplY3RUeXBlIG9idHlwZSkKIAkJY2FzZSBPQkpFQ1RfVFNURU1QTEFU RToKIAkJY2FzZSBPQkpFQ1RfVFlQRToKIAkJY2FzZSBPQkpFQ1RfVVNFUl9NQVBQSU5HOgorCQlj YXNlIE9CSkVDVF9WQVJJQUJMRToKIAkJY2FzZSBPQkpFQ1RfVklFVzoKIAkJCXJldHVybiB0cnVl OwogCkBAIC0yMjIyLDYgKzIyMjQsOCBAQCBzdHJpbmdpZnlfZ3JhbnRfb2JqdHlwZShPYmplY3RU eXBlIG9ianR5cGUpCiAJCQlyZXR1cm4gIlRBQkxFU1BBQ0UiOwogCQljYXNlIE9CSkVDVF9UWVBF OgogCQkJcmV0dXJuICJUWVBFIjsKKwkJY2FzZSBPQkpFQ1RfVkFSSUFCTEU6CisJCQlyZXR1cm4g IlZBUklBQkxFIjsKIAkJLyogdGhlc2UgY3VycmVudGx5IGFyZW4ndCB1c2VkICovCiAJCWNhc2Ug T0JKRUNUX0FDQ0VTU19NRVRIT0Q6CiAJCWNhc2UgT0JKRUNUX0FHR1JFR0FURToKQEAgLTIzMDQs NiArMjMwOCw4IEBAIHN0cmluZ2lmeV9hZGVmcHJpdnNfb2JqdHlwZShPYmplY3RUeXBlIG9ianR5 cGUpCiAJCQlyZXR1cm4gIlRBQkxFU1BBQ0VTIjsKIAkJY2FzZSBPQkpFQ1RfVFlQRToKIAkJCXJl dHVybiAiVFlQRVMiOworCQljYXNlIE9CSkVDVF9WQVJJQUJMRToKKwkJCXJldHVybiAiVkFSSUFC TEVTIjsKIAkJLyogdGhlc2UgY3VycmVudGx5IGFyZW4ndCB1c2VkICovCiAJCWNhc2UgT0JKRUNU X0FDQ0VTU19NRVRIT0Q6CiAJCWNhc2UgT0JKRUNUX0FHR1JFR0FURToKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxh aW4uYwppbmRleCBjMzhkMTc4Y2Q5Li5kZGZkNDI4Y2Q2IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9jb21tYW5kcy9leHBsYWluLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5j CkBAIC04ODcsNiArODg3LDkgQEAgRXhwbGFpbk5vZGUoUGxhblN0YXRlICpwbGFuc3RhdGUsIExp c3QgKmFuY2VzdG9ycywKIAkJCQljYXNlIENNRF9ERUxFVEU6CiAJCQkJCXBuYW1lID0gb3BlcmF0 aW9uID0gIkRlbGV0ZSI7CiAJCQkJCWJyZWFrOworCQkJCWNhc2UgQ01EX0xFVDoKKwkJCQkJcG5h bWUgPSBvcGVyYXRpb24gPSAiTGV0IjsKKwkJCQkJYnJlYWs7CiAJCQkJZGVmYXVsdDoKIAkJCQkJ cG5hbWUgPSAiPz8/IjsKIAkJCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21t YW5kcy9wcmVwYXJlLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMKaW5kZXggYjk0 NWIxNTU2YS4uYTY5NDcxZTkyNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJl cGFyZS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYwpAQCAtMTUxLDYgKzE1 MSw3IEBAIFByZXBhcmVRdWVyeShQcmVwYXJlU3RtdCAqc3RtdCwgY29uc3QgY2hhciAqcXVlcnlT dHJpbmcsCiAJCWNhc2UgQ01EX0lOU0VSVDoKIAkJY2FzZSBDTURfVVBEQVRFOgogCQljYXNlIENN RF9ERUxFVEU6CisJCWNhc2UgQ01EX0xFVDoKIAkJCS8qIE9LICovCiAJCQlicmVhazsKIAkJZGVm YXVsdDoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3NjaGVtYXZhci5jIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvc2NoZW1hdmFyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMC4uZWRmZTkxNGJkZAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3NjaGVtYXZhci5jCkBAIC0wLDAgKzEsMTI3OCBAQAorLyotLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgKgorICogc2NoZW1hdmFyLmMKKyAqCSAgUG9zdGdyZVNRTCBzZXNzaW9uIHZhcmlhYmxlIHN1 cHBvcnQgY29kZS4KKyAqCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAxOCwgUG9z dGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqIFBvcnRpb25zIENvcHlyaWdodCAo YykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhCisgKgorICoK KyAqIElERU5USUZJQ0FUSU9OCisgKgkgIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3NjaGVtYXZhci5j CisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKyNpbmNsdWRlICJwb3N0Z3Jlcy5oIgorI2lu Y2x1ZGUgIm1pc2NhZG1pbi5oIgorI2luY2x1ZGUgImZ1bmNhcGkuaCIKKworI2luY2x1ZGUgImFj Y2Vzcy9odHVwX2RldGFpbHMuaCIKKyNpbmNsdWRlICJhY2Nlc3MveGFjdC5oIgorI2luY2x1ZGUg ImNhdGFsb2cvb2JqZWN0YWRkcmVzcy5oIgorI2luY2x1ZGUgImNhdGFsb2cvbmFtZXNwYWNlLmgi CisjaW5jbHVkZSAiY2F0YWxvZy9wZ19jYXN0LmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19jbGFz cy5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgorI2luY2x1ZGUgImNvbW1hbmRzL2Rl ZnJlbS5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3RhYmxlY21kcy5oIgorI2luY2x1ZGUgImNvbW1h bmRzL3NjaGVtYXZhci5oIgorI2luY2x1ZGUgIm5vZGVzL21ha2VmdW5jcy5oIgorI2luY2x1ZGUg Im9wdGltaXplci9wbGFubmVyLmgiCisjaW5jbHVkZSAicGFyc2VyL3BhcnNlX2NvZXJjZS5oIgor I2luY2x1ZGUgInBhcnNlci9wYXJzZV90eXBlLmgiCisjaW5jbHVkZSAicmV3cml0ZS9yZXdyaXRl SGFuZGxlci5oIgorI2luY2x1ZGUgInV0aWxzL2FjbC5oIgorI2luY2x1ZGUgInV0aWxzL2J1aWx0 aW5zLmgiCisjaW5jbHVkZSAidXRpbHMvZGF0dW0uaCIKKyNpbmNsdWRlICJ1dGlscy9oc2VhcmNo LmgiCisjaW5jbHVkZSAidXRpbHMvaW52YWwuaCIKKyNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUu aCIKKyNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgorI2luY2x1ZGUgInV0aWxzL3N5c2NhY2hl LmgiCisjaW5jbHVkZSAidXRpbHMvdHlwY2FjaGUuaCIKKworLyoKKyAqIFRoaXMgc2NoZW1hIHZh cmlhYmxlIGNhY2hlIG1peGVzIHRoZSBjYWNoZSBhbmQgc3RvcmFnZXMgYmVoYXZlLiBUaGF0IGlz IG5vdAorICogY29ycmVjdCBhbmQgaXQgaXMgcHJvYmxlbWF0aWMsIHdoZW4gdmFyaWFibGUgaXMg cmVtb3ZlZC4gVGhlIG93biBzdG9yYWdlCisgKiBiYXNlZCBvbiBzdG9yYWdlIG1hbmFnZXIgY2Fu IGJlIGltcGxlbWVudGVkLCBSZWxGaWxlTm9kZSBjYW4gYmUgZGVmaW5lZCBhbmQKKyAqIG1lY2hh bmlzbSBiYXNlZCBvbiBQZW5kaW5nUmVsRGVsZXRlIHN0cnVjdCBjYW4gYmUgdXNlZC4gVGhpcyBp cyBhIGFyZ3VtZW50CisgKiBmb3IgaW1wbGVtZW50YXRpb24gc2NoZW1hIHZhcmlhYmxlcyBiYXNl ZCBvbiBwZ19jbGFzcy4KKyAqIEFsdGVybmF0aXZlIHNvbHV0aW9uIGNhbiBiZSBkZXRlY3Rpb24g b2Ygc2NoZW1hIGNoYW5nZXMgYW5kIHJlY2hlY2sgYXQgYW5kCisgKiBvZiB0cmFuc2FjdGlvbi4K KyAqLwordHlwZWRlZiBzdHJ1Y3QgU2NoZW1hVmFyRGF0YQoreworCU9pZAkJCXZhcmlkOwkJCS8q IHBnX2NsYXNzIE9JRCBvZiB0aGlzIHNlcXVlbmNlIChoYXNoIGtleSkgKi8KKwlPaWQJCQl0eXBp ZDsJCQkvKiBPSUQgb2YgdGhlIGRhdGEgdHlwZSAqLworCWludDMyCQl0eXBtb2Q7CisJaW50MTYJ CXR5cGxlbjsKKwlib29sCQl0eXBieXZhbDsKKwlib29sCQlpc251bGw7CisJYm9vbAkJZnJlZXZh bDsKKwlEYXR1bQkJdmFsdWU7CisJYm9vbAkJaXNfcm93dHlwZTsJCS8qIHRydWUgd2hlbiB2YXJp YWJsZSBpcyBjb21wb3NpdGUgKi8KK30gU2NoZW1hVmFyRGF0YTsKKwordHlwZWRlZiBTY2hlbWFW YXJEYXRhICpTY2hlbWFWYXI7CisKK3N0YXRpYyBIVEFCICpzY2hlbWF2YXJoYXNodGFiID0gTlVM TDsJCS8qIGhhc2ggdGFibGUgZm9yIHNlc3Npb24gdmFyaWFibGVzICovCitzdGF0aWMgTWVtb3J5 Q29udGV4dCBTY2hlbWFWYXJNZW1vcnlDb250ZXh0ID0gTlVMTDsKKworc3RhdGljIERhdHVtIGRh dHVtQ2FzdChEYXR1bSB2YWx1ZSwKKwkJCQkJCSAgT2lkIHRhcmdldF90eXBpZCwgaW50IHRhcmdl dF90eXBtb2QsCisJCQkJCQkgIE9pZCBzb3VyY2VfdHlwaWQsIGludCBzb3VyY2VfdHlwbW9kKTsK Kworc3RhdGljIGJvb2wJZmlyc3RfdGltZSA9IHRydWU7CitzdGF0aWMgYm9vbAljYWNoZV9pc192 YWxpZCA9IHRydWU7CisKK3N0YXRpYyB2b2lkIEludmFsaWRhdGVTY2hlbWFWYXJDYWNoZUNhbGxi YWNrKERhdHVtIGFyZywgaW50IGNhY2hlaWQsIHVpbnQzMiBoYXNodmFsdWUpOworc3RhdGljIHZv aWQgY3JlYXRlX3NjaGVtYXZhcl9oYXNodGFibGUodm9pZCk7CisKKy8qIGp1c3QgbWFyayBjYWNo ZSB0byByZWNoZWNrICovCitzdGF0aWMgdm9pZAorSW52YWxpZGF0ZVNjaGVtYVZhckNhY2hlQ2Fs bGJhY2soRGF0dW0gYXJnLCBpbnQgY2FjaGVpZCwgdWludDMyIGhhc2h2YWx1ZSkKK3sKKwkvKgor CSAqIGJlY2F1c2UgdGhpcyBjYWNoZSBob2xkcyB2YWx1ZXMgb2Ygc2NoZW1hIHZhcmlhYmxlcywg dGhlbgorCSAqIHRoZSBjb250ZW50IGNhbm5vdCBiZSByZW1vdmVkIGluIHRoaXMgbW9tZW10LiBX ZSBzaG91bGQgdG8KKwkgKiB3YWl0IG9uIHRyYW5zYWN0aW9uIGVuZC4KKwkgKi8KKwljYWNoZV9p c192YWxpZCA9IGZhbHNlOworfQorCisvKgorICogQ2FzdCBkYXR1bQorICovCitzdGF0aWMgRGF0 dW0KK2RhdHVtQ2FzdChEYXR1bSB2YWx1ZSwKKwkJICBPaWQgdGFyZ2V0X3R5cGlkLCBpbnQgdGFy Z2V0X3R5cG1vZCwKKwkJICBPaWQgc291cmNlX3R5cGlkLCBpbnQgc291cmNlX3R5cG1vZCkKK3sK KwlDb2VyY2lvblBhdGhUeXBlIGNwYXRodHlwZTsKKwlPaWQJCWNmdW5jaWQ7CisJRGF0dW0JcmVz dWx0ID0gKERhdHVtKSAwOworCWJvb2wJaXNfYmluYXJ5X2Nhc3QgPSBmYWxzZTsKKworCWlmICh0 YXJnZXRfdHlwaWQgIT0gc291cmNlX3R5cGlkKQorCXsKKwkJY3BhdGh0eXBlID0gZmluZF9jb2Vy Y2lvbl9wYXRod2F5KHRhcmdldF90eXBpZCwgc291cmNlX3R5cGlkLAorCQkJCQkJCQkJCQlDT0VS Q0lPTl9FWFBMSUNJVCwKKwkJCQkJCQkJCQkJJmNmdW5jaWQpOworCisJCWlmIChjcGF0aHR5cGUg PT0gQ09FUkNJT05fUEFUSF9OT05FKQorCQkJZWxvZyhFUlJPUiwgImNvdWxkIG5vdCBmaW5kIGNh c3QgZnJvbSAlcyB0byAlcyIsCisJCQkJCQlmb3JtYXRfdHlwZV9iZShzb3VyY2VfdHlwaWQpLAor CQkJCQkJZm9ybWF0X3R5cGVfYmUodGFyZ2V0X3R5cGlkKSk7CisKKwkJaWYgKGNwYXRodHlwZSA9 PSBDT0VSQ0lPTl9QQVRIX1JFTEFCRUxUWVBFKQorCQl7CisJCQlyZXN1bHQgPSB2YWx1ZTsKKwkJ CWlzX2JpbmFyeV9jYXN0ID0gdHJ1ZTsKKwkJfQorCQllbHNlIGlmIChjcGF0aHR5cGUgPT0gQ09F UkNJT05fUEFUSF9DT0VSQ0VWSUFJTykKKwkJeworCQkJT2lkCQlvdXRmdW5jOworCQkJT2lkCQlp bmZ1bmM7CisJCQlPaWQJCWlvcGFyYW07CisJCQlib29sCWlzVmFybGVuYTsKKwkJCWNoYXIJKnN0 cjsKKworCQkJZ2V0VHlwZU91dHB1dEluZm8oc291cmNlX3R5cGlkLCAmb3V0ZnVuYywgJmlzVmFy bGVuYSk7CisJCQlzdHIgPSBPaWRPdXRwdXRGdW5jdGlvbkNhbGwob3V0ZnVuYywgdmFsdWUpOwor CisJCQlnZXRUeXBlSW5wdXRJbmZvKHRhcmdldF90eXBpZCwgJmluZnVuYywgJmlvcGFyYW0pOwor CQkJcmVzdWx0ID0gT2lkSW5wdXRGdW5jdGlvbkNhbGwoaW5mdW5jLCBzdHIsIGlvcGFyYW0sIC0x KTsKKwkJfQorCQllbHNlIGlmIChjcGF0aHR5cGUgPT0gQ09FUkNJT05fUEFUSF9GVU5DKQorCQl7 CisJCQlyZXN1bHQgPSBPaWRGdW5jdGlvbkNhbGwzKGNmdW5jaWQsCisJCQkJCQkJdmFsdWUsCisJ CQkJCQkJSW50MzJHZXREYXR1bSh0YXJnZXRfdHlwbW9kKSwKKwkJCQkJCQlCb29sR2V0RGF0dW0o ZmFsc2UpKTsKKwkJfQorCX0KKwllbHNlCisJeworCQlyZXN1bHQgPSB2YWx1ZTsKKwkJaXNfYmlu YXJ5X2Nhc3QgPSB0cnVlOworCX0KKworCWlmICh0YXJnZXRfdHlwbW9kIDwgMSB8fCAodGFyZ2V0 X3R5cG1vZCA9PSBzb3VyY2VfdHlwbW9kICYmIGlzX2JpbmFyeV9jYXN0KSkKKwkJcmV0dXJuIHJl c3VsdDsKKworCWNwYXRodHlwZSA9IGZpbmRfdHlwbW9kX2NvZXJjaW9uX2Z1bmN0aW9uKHRhcmdl dF90eXBpZCwgJmNmdW5jaWQpOworCWlmIChjcGF0aHR5cGUgPT0gQ09FUkNJT05fUEFUSF9GVU5D KQorCXsKKwkJcmVzdWx0ID0gT2lkRnVuY3Rpb25DYWxsMyhjZnVuY2lkLAorCQkJCQkJCQkJCQly ZXN1bHQsCisJCQkJCQkJCQkJCUludDMyR2V0RGF0dW0odGFyZ2V0X3R5cG1vZCksCisJCQkJCQkJ CQkJCUJvb2xHZXREYXR1bShmYWxzZSkpOworCX0KKworCXJldHVybiByZXN1bHQ7Cit9CisKK3N0 YXRpYyBib29sCitzdl9nZXRfdHlwX3R5cG1vZChGb3JtX3BnX2NsYXNzIGNsYXNzZm9ybSwgT2lk ICp0eXAsIGludDMyICp0eXBtb2QpCit7CisJaWYgKGNsYXNzZm9ybS0+cmVsa2luZCAhPSBSRUxL SU5EX1ZBUklBQkxFKQorCQlyZXR1cm4gZmFsc2U7CisKKwlpZiAoY2xhc3Nmb3JtLT5yZWxvZnR5 cGUgIT0gSW52YWxpZE9pZCkKKwl7CisJCU9pZAkJdHlwb2lkID0gY2xhc3Nmb3JtLT5yZWxvZnR5 cGU7CisKKwkJaWYgKGdldF90eXB0eXBlKHR5cG9pZCkgPT0gVFlQVFlQRV9DT01QT1NJVEUpCisJ CXsKKwkJCSp0eXAgPSBjbGFzc2Zvcm0tPnJlbG9mdHlwZTsKKwkJCSp0eXBtb2QgPSAtMTsKKwkJ fQorCQllbHNlCisJCXsKKwkJCVR1cGxlRGVzYwl0dXBkZXNjOworCQkJUmVsYXRpb24JcmVsOwor CQkJRm9ybV9wZ19hdHRyaWJ1dGUgYXR0clN0cnVjdDsKKworCQkJLyogZmluZCBmaXJzdCBmaWVs ZCAqLworCQkJcmVsID0gcmVsYXRpb25fb3Blbih0eXBlaWRUeXBlUmVsaWQoY2xhc3Nmb3JtLT5y ZWx0eXBlKSwgQWNjZXNzU2hhcmVMb2NrKTsKKwkJCXR1cGRlc2MgPSBDcmVhdGVUdXBsZURlc2ND b3B5KFJlbGF0aW9uR2V0RGVzY3IocmVsKSk7CisKKwkJCWF0dHJTdHJ1Y3QgPSBUdXBsZURlc2NB dHRyKHR1cGRlc2MsIDApOworCisJCQkqdHlwID0gYXR0clN0cnVjdC0+YXR0dHlwaWQ7CisJCQkq dHlwbW9kID0gYXR0clN0cnVjdC0+YXR0dHlwbW9kOworCisJCQlGcmVlVHVwbGVEZXNjKHR1cGRl c2MpOworCQkJcmVsYXRpb25fY2xvc2UocmVsLCBBY2Nlc3NTaGFyZUxvY2spOworCQl9CisJfQor CWVsc2UKKwl7CisJCSp0eXAgPSBjbGFzc2Zvcm0tPnJlbHR5cGU7CisJCSp0eXBtb2QgPSAtMTsK Kwl9CisKKwlyZXR1cm4gdHJ1ZTsKK30KKwordm9pZAorc2NoZW1hdmFyX2dldF90eXBfdHlwbW9k KE9pZCB2YXJpZCwgT2lkICp0eXAsIGludDMyICp0eXBtb2QpCit7CisJSGVhcFR1cGxlCXRwOwor CUZvcm1fcGdfY2xhc3MJY2xhc3Nmb3JtOworCisJLyogbm93LCB0eXBlIGluZm8gZm9yIHNjaGVt YSB2YXJpYWJsZSBpcyBjb2xsZWN0ZWQgKi8KKwl0cCA9IFNlYXJjaFN5c0NhY2hlMShSRUxPSUQs IE9iamVjdElkR2V0RGF0dW0odmFyaWQpKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHApKQor CQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxkIGZvciB2YXJpYWJsZSAldSIsIHZhcmlk KTsKKworCWNsYXNzZm9ybSA9IChGb3JtX3BnX2NsYXNzKSBHRVRTVFJVQ1QodHApOworCisJaWYg KCFzdl9nZXRfdHlwX3R5cG1vZChjbGFzc2Zvcm0sIHR5cCwgdHlwbW9kKSkKKwkJZXJlcG9ydChF UlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1dST05HX09CSkVDVF9UWVBFKSwKKwkJCQkgZXJy bXNnKCJvYmplY3QgJXUgaXMgbm90IGEgc2NoZW1hIHZhcmlhYmxlIiwgdmFyaWQpKSk7CisKKwlS ZWxlYXNlU3lzQ2FjaGUodHApOworfQorCitib29sCitpc19zY2hlbWF2YXIoT2lkIHZhcmlkLCBi b29sICppc19yb3d0eXBlKQoreworCUhlYXBUdXBsZQl0cDsKKwlGb3JtX3BnX2NsYXNzCWNsYXNz Zm9ybTsKKwlib29sCQlyZXN1bHQ7CisJT2lkCQkJdHlwOworCWludDMyCQl0eXBtb2Q7CisKKwlp ZiAoIU9pZElzVmFsaWQodmFyaWQpKQorCQlyZXR1cm4gZmFsc2U7CisKKwkvKiBub3csIHR5cGUg aW5mbyBmb3Igc2NoZW1hIHZhcmlhYmxlIGlzIGNvbGxlY3RlZCAqLworCXRwID0gU2VhcmNoU3lz Q2FjaGUxKFJFTE9JRCwgT2JqZWN0SWRHZXREYXR1bSh2YXJpZCkpOworCWlmICghSGVhcFR1cGxl SXNWYWxpZCh0cCkpCisJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGQgZm9yIHZhcmlh YmxlICV1IiwgdmFyaWQpOworCisJY2xhc3Nmb3JtID0gKEZvcm1fcGdfY2xhc3MpIEdFVFNUUlVD VCh0cCk7CisKKwlyZXN1bHQgPSBzdl9nZXRfdHlwX3R5cG1vZChjbGFzc2Zvcm0sICZ0eXAsICZ0 eXBtb2QpOworCisJaWYgKHJlc3VsdCAmJiBpc19yb3d0eXBlKQorCQkqaXNfcm93dHlwZSA9IHR5 cGVfaXNfcm93dHlwZSh0eXApOworCisJUmVsZWFzZVN5c0NhY2hlKHRwKTsKKworCXJldHVybiBy ZXN1bHQ7Cit9CisKKworc3RhdGljIFNjaGVtYVZhcgorUHJlcGFyZVNjaGVtYVZhcihPaWQgdmFy aWQpCit7CisJU2NoZW1hVmFyCXZhcjsKKwlib29sCQlmb3VuZDsKKworCWlmIChzY2hlbWF2YXJo YXNodGFiID09IE5VTEwpCisJCWNyZWF0ZV9zY2hlbWF2YXJfaGFzaHRhYmxlKCk7CisKKwl2YXIg PSAoU2NoZW1hVmFyKSBoYXNoX3NlYXJjaChzY2hlbWF2YXJoYXNodGFiLCAmdmFyaWQsCisJCQkJ CQkJCQkJCSAgSEFTSF9FTlRFUiwgJmZvdW5kKTsKKwlpZiAoIWZvdW5kKQorCXsKKwkJUmVsYXRp b24JcmVsOworCQlUdXBsZURlc2MJZGVzYzsKKwkJaW50CQkJbmF0dHM7CisJCURhdHVtCSAgICp2 YWx1ZXM7CisJCWJvb2wJICAgKm51bGxzOworCQlFU3RhdGUJICAgKmVzdGF0ZSA9IE5VTEw7CisJ CU1lbW9yeUNvbnRleHQgb2xkY29udGV4dCA9IE5VTEw7CisJCWludAkJCW5ub3RudWxscyA9IDA7 CisJCWludAkJaTsKKworCQl2YXItPnZhcmlkID0gdmFyaWQ7CisKKwkJc2NoZW1hdmFyX2dldF90 eXBfdHlwbW9kKHZhcmlkLCAmdmFyLT50eXBpZCwgJnZhci0+dHlwbW9kKTsKKwkJZ2V0X3R5cGxl bmJ5dmFsKHZhci0+dHlwaWQsICZ2YXItPnR5cGxlbiwgJnZhci0+dHlwYnl2YWwpOworCisJCXZh ci0+aXNfcm93dHlwZSA9IHR5cGVfaXNfcm93dHlwZSh2YXItPnR5cGlkKTsKKworCQkvKiBwcmVw YXJlIGRlZmF1bHQgdmFsdWUgKi8KKwkJcmVsID0gcmVsYXRpb25fb3Blbih2YXJpZCwgQWNjZXNz U2hhcmVMb2NrKTsKKwkJZGVzYyA9IFJlbGF0aW9uR2V0RGVzY3IocmVsKTsKKwkJbmF0dHMgPSBk ZXNjLT5uYXR0czsKKworCQllc3RhdGUgPSBDcmVhdGVFeGVjdXRvclN0YXRlKCk7CisJCW9sZGNv bnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oZXN0YXRlLT5lc19xdWVyeV9jeHQpOworCisJ CXZhbHVlcyA9IChEYXR1bSAqKSBwYWxsb2MwKG5hdHRzICogc2l6ZW9mKERhdHVtKSk7CisJCW51 bGxzID0gKGJvb2wgKikgcGFsbG9jMChuYXR0cyAqIHNpemVvZihib29sKSk7CisKKwkJZm9yIChp ID0gMDsgaSA8IG5hdHRzOyBpKyspCisJCXsKKwkJCUV4cHIJICAgKmRlZmV4cHI7CisJCQlFeHBy U3RhdGUgICpkZWZleHByczsKKworCQkJaWYgKFR1cGxlRGVzY0F0dHIoZGVzYywgaSktPmF0dGlz ZHJvcHBlZCkKKwkJCXsKKwkJCQludWxsc1tpXSA9IHRydWU7CisJCQkJY29udGludWU7CisJCQl9 CisKKwkJCWRlZmV4cHIgPSAoRXhwciAqKSBidWlsZF9jb2x1bW5fZGVmYXVsdChyZWwsIGkgKyAx KTsKKwkJCWlmIChkZWZleHByICE9IE5VTEwpCisJCQl7CisJCQkJZGVmZXhwciA9IGV4cHJlc3Np b25fcGxhbm5lcihkZWZleHByKTsKKwkJCQlkZWZleHBycyA9IEV4ZWNJbml0RXhwcihkZWZleHBy LCBOVUxMKTsKKworCQkJCXZhbHVlc1tpXSA9IEV4ZWNFdmFsRXhwclN3aXRjaENvbnRleHQoZGVm ZXhwcnMsIEdldFBlclR1cGxlRXhwckNvbnRleHQoZXN0YXRlKSwgJm51bGxzW2ldKTsKKwkJCQlp ZiAoIW51bGxzW2ldKQorCQkJCQlubm90bnVsbHMrKzsKKwkJCX0KKwkJCWVsc2UKKwkJCQludWxs c1tpXSA9IHRydWU7CisJCX0KKworCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7 CisKKwkJaWYgKG5ub3RudWxscyA+IDApCisJCXsKKwkJCURhdHVtCQl2YWx1ZTsKKworCQkJaWYg KHZhci0+aXNfcm93dHlwZSkKKwkJCXsKKwkJCQlIZWFwVHVwbGUJdHVwbGU7CisKKwkJCQl0dXBs ZSA9IGhlYXBfZm9ybV90dXBsZShkZXNjLCB2YWx1ZXMsIG51bGxzKTsKKwkJCQl2YWx1ZSA9IEhl YXBUdXBsZUhlYWRlckdldERhdHVtKChIZWFwVHVwbGVIZWFkZXIpIHR1cGxlLT50X2RhdGEpOwor CQkJfQorCQkJZWxzZQorCQkJCXZhbHVlID0gdmFsdWVzWzBdOworCisJCQlNZW1vcnlDb250ZXh0 U3dpdGNoVG8oU2NoZW1hVmFyTWVtb3J5Q29udGV4dCk7CisJCQl2YXItPnZhbHVlID0gZGF0dW1D b3B5KHZhbHVlLCB2YXItPnR5cGJ5dmFsLCB2YXItPnR5cGxlbik7CisJCQl2YXItPmlzbnVsbCA9 IGZhbHNlOworCQkJdmFyLT5mcmVldmFsID0gdmFyLT52YWx1ZSAhPSB2YWx1ZXNbMF07CisKKwkJ TWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOworCQl9CisJCWVsc2UKKwkJeworCQkJ dmFyLT52YWx1ZSA9IChEYXR1bSkgMDsKKwkJCXZhci0+aXNudWxsID0gdHJ1ZTsKKwkJCXZhci0+ ZnJlZXZhbCA9IGZhbHNlOworCQl9CisKKwkJRnJlZUV4ZWN1dG9yU3RhdGUoZXN0YXRlKTsKKwkJ cmVsYXRpb25fY2xvc2UocmVsLCBBY2Nlc3NTaGFyZUxvY2spOworCX0KKworCXJldHVybiB2YXI7 Cit9CisKKy8qCisgKiBXYWl0IG9uIGNvbW1pdCBvciByb2xsYmFjayBhbmQgY2xlYW4gdmFsdWVz IHRoYXQgbWlzcyBlbnRyeSBpbiBzeXN0ZW0KKyAqIGNhdGFsb2cuIEl0IGlzIHRlbXBvcmFyeSBz b2x1dGlvbiAoYWx0aG91Z2ggaXQgaXMgd29ya2luZykuIFN0b3JhZ2UgbWFuYWdlcgorICogYmFz ZWQgc29sdXRpb24gd2lsbCBiZSBiZXR0ZXIsIGJ1dCBpdCBpcyBub3QgbmVjZXNzYXJ5IGZvciB0 aGlzIFBvQy4KKyAqCisgKiByZW1vdmVzIHVuY29tbWl0dGVkIG9yIGRyb3BwZWQgc2NoZW1hIHZh cmlhYmxlcywgc28gZXZlbnQgY2FuIGJlIGlnbm9yZWQuCisgKi8KK3N0YXRpYyB2b2lkCityZWNo ZWNrX3NjaGVtYV92YXJpYWJsZXMoWGFjdEV2ZW50IGV2ZW50LCB2b2lkICphcmcpCit7CisJSEFT SF9TRVFfU1RBVFVTIHN0YXR1czsKKwlTY2hlbWFWYXIJCXZhcjsKKworCWlmIChjYWNoZV9pc192 YWxpZCB8fCBzY2hlbWF2YXJoYXNodGFiID09IE5VTEwgfHwgIUlzVHJhbnNhY3Rpb25TdGF0ZSgp KQorCQlyZXR1cm47CisKKwloYXNoX3NlcV9pbml0KCZzdGF0dXMsIHNjaGVtYXZhcmhhc2h0YWIp OworCisJd2hpbGUgKCh2YXIgPSAoU2NoZW1hVmFyKSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykp ICE9IE5VTEwpCisJeworCQlIZWFwVHVwbGUJdHAgPSBJbnZhbGlkT2lkOworCisJCXRwID0gU2Vh cmNoU3lzQ2FjaGUxKFJFTE9JRCwgT2JqZWN0SWRHZXREYXR1bSh2YXItPnZhcmlkKSk7CisJCWlm ICghSGVhcFR1cGxlSXNWYWxpZCh0cCkpCisJCXsKKwkJCWVsb2coREVCVUcxLCAidmFyaWFibGUg JWQgaXMgcmVtb3ZlZCBmcm9tIGNhY2hlIiwgdmFyLT52YXJpZCk7CisKKwkJCWlmICh2YXItPmZy ZWV2YWwpCisJCQl7CisJCQkJcGZyZWUoRGF0dW1HZXRQb2ludGVyKHZhci0+dmFsdWUpKTsKKwkJ CQl2YXItPmZyZWV2YWwgPSBmYWxzZTsKKwkJCX0KKworCQkJaWYgKGhhc2hfc2VhcmNoKHNjaGVt YXZhcmhhc2h0YWIsCisJCQkJCQkJCSh2b2lkICopICZ2YXItPnZhcmlkLAorCQkJCQkJCQlIQVNI X1JFTU9WRSwKKwkJCQkJCQkJTlVMTCkgPT0gTlVMTCkKKwkJCQllbG9nKEVSUk9SLCAiaGFzaCB0 YWJsZSBjb3JydXB0ZWQiKTsKKwkJfQorCQllbHNlCisJCQlSZWxlYXNlU3lzQ2FjaGUodHApOwor CX0KKwljYWNoZV9pc192YWxpZCA9IHRydWU7Cit9CisKKy8qCisgKiBEZWZpbmVTZXNzaW9uVmFy aWFibGUKKyAqCQkJCUNyZWF0ZXMgYSBuZXcgdmFyaWFibGUgcmVsYXRlZCByZWxhdGlvbgorICov CitPYmplY3RBZGRyZXNzCitEZWZpbmVTY2hlbWFWYXJpYWJsZShQYXJzZVN0YXRlICpwc3RhdGUs IENyZWF0ZVNjaGVtYVZhclN0bXQgKnZhcikKK3sKKwlDcmVhdGVTdG10ICpzdG10ID0gbWFrZU5v ZGUoQ3JlYXRlU3RtdCk7CisJT2lkCQkJdHlwb2lkOworCU9pZAkJCXZhcm9pZDsKKwlPYmplY3RB ZGRyZXNzIGFkZHJlc3M7CisJYm9vbAkJY3JlYXRlX2Nhc3Q7CisKKwkvKgorCSAqIElmIGlmX25v dF9leGlzdHMgd2FzIGdpdmVuIGFuZCBhIHJlbGF0aW9uIHdpdGggdGhlIHNhbWUgbmFtZSBhbHJl YWR5CisJICogZXhpc3RzLCBiYWlsIG91dC4gKE5vdGU6IHdlIG5lZWRuJ3QgY2hlY2sgdGhpcyB3 aGVuIG5vdCBpZl9ub3RfZXhpc3RzLAorCSAqIGJlY2F1c2UgRGVmaW5lUmVsYXRpb24gd2lsbCBj b21wbGFpbiBhbnl3YXkuKQorCSAqLworCWlmICh2YXItPmlmX25vdF9leGlzdHMpCisJeworCQlS YW5nZVZhckdldEFuZENoZWNrQ3JlYXRpb25OYW1lc3BhY2UodmFyLT52YXJpYWJsZSwgTm9Mb2Nr LCAmdmFyb2lkKTsKKwkJaWYgKE9pZElzVmFsaWQodmFyb2lkKSkKKwkJeworCQkJZXJlcG9ydChO T1RJQ0UsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfRFVQTElDQVRFX1RBQkxFKSwKKwkJCQkJIGVy cm1zZygidmFyaWFibGUgXCIlc1wiIGFscmVhZHkgZXhpc3RzLCBza2lwcGluZyIsCisJCQkJCQkJ dmFyLT52YXJpYWJsZS0+cmVsbmFtZSkpKTsKKwkJCXJldHVybiBJbnZhbGlkT2JqZWN0QWRkcmVz czsKKwkJfQorCX0KKworCS8qCisJICogVmFyaWFibGUgY2FuIGJlIGRlZmluZWQgYnkgdHlwZSAo c2NhbGFyLCBjb21wb3NpdGUpIG9yIGJ5CisJICogZmllbGQgbGlzdC4gV2hlbiBpcyBkZWZpbmVk IGJ5IGZpZWxkIGxpc3QsIHdlIHNob3VsZCB0byBjcmVhdGUKKwkgKiBuZXcgdHlwZSByZWxhdGVk IHRvIHRoaXMgdmFyaWFibGUuCisJICovCisJaWYgKHZhci0+dHlwZU5hbWUgIT0gTlVMTCkKKwl7 CisJCU9pZAkJdHlwcmVsaWQ7CisKKwkJQXNzZXJ0KHZhci0+ZmllbGRzID09IE5JTCk7CisKKwkJ dHlwb2lkID0gTG9va3VwVHlwZU5hbWVPaWQocHN0YXRlLCB2YXItPnR5cGVOYW1lLCBmYWxzZSk7 CisKKwkJaWYgKGdldF90eXB0eXBlKHR5cG9pZCkgPT0gVFlQVFlQRV9QU0VVRE8pCisJCQllcmVw b3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFUWVBFX01JU01BVENIKSwKKwkJ CQkJIGVycm1zZygidmFyaWFibGUgY2Fubm90IGJlICVzIiwKKwkJCQkJCQlmb3JtYXRfdHlwZV9i ZSh2YXJvaWQpKSkpOworCisJCXR5cHJlbGlkID0gdHlwZWlkVHlwZVJlbGlkKHR5cG9pZCk7CisK KwkJaWYgKCFPaWRJc1ZhbGlkKHR5cHJlbGlkKSkKKwkJeworCQkJLyoKKwkJCSAqIHdoZW4gdmFy aWFibGUgdHlwZSBpcyBub3QgY29tcG9zaXRlIHR5cGUsIHdlIHNob3VsZCB0byBjcmVhdGUKKwkJ CSAqIGF1eCBjb21wb3NpdGUgdHlwZS4KKwkJCSAqLworCQkJQ29sdW1uRGVmICpjb2xkZWYgPSBt YWtlTm9kZShDb2x1bW5EZWYpOworCisJCQljb2xkZWYtPmluaGNvdW50ID0gMDsKKwkJCWNvbGRl Zi0+aXNfbG9jYWwgPSB0cnVlOworCQkJY29sZGVmLT5pc19ub3RfbnVsbCA9IGZhbHNlOworCQkJ Y29sZGVmLT5pc19mcm9tX3R5cGUgPSBmYWxzZTsKKwkJCWNvbGRlZi0+c3RvcmFnZSA9IDA7CisJ CQljb2xkZWYtPnJhd19kZWZhdWx0ID0gdmFyLT5kZWZleHByOworCQkJY29sZGVmLT5jb29rZWRf ZGVmYXVsdCA9IE5VTEw7CisJCQljb2xkZWYtPmNvbGxDbGF1c2UgPSBOVUxMOworCQkJY29sZGVm LT5jb2xsT2lkID0gSW52YWxpZE9pZDsKKwkJCWNvbGRlZi0+Y29uc3RyYWludHMgPSBOSUw7CisJ CQljb2xkZWYtPmxvY2F0aW9uID0gLTE7CisKKwkJCS8qIFVzZSBpbXBsaXQgbmFtZSBzYW1lIGxp a2UgdmFyaWFibGUgbmFtZSAqLworCQkJY29sZGVmLT5jb2xuYW1lID0gdmFyLT52YXJpYWJsZS0+ cmVsbmFtZTsKKwkJCWNvbGRlZi0+dHlwZU5hbWUgPSB2YXItPnR5cGVOYW1lOworCisJCQlzdG10 LT50YWJsZUVsdHMgPSBsYXBwZW5kKHN0bXQtPnRhYmxlRWx0cywgY29sZGVmKTsKKworCQkJY3Jl YXRlX2Nhc3QgPSBmYWxzZTsKKwkJfQorCQllbHNlCisJCXsKKwkJCVR1cGxlRGVzYwl0dXBkZXNj OworCQkJUmVsYXRpb24JcmVsOworCQkJaW50CQkJaTsKKworCQkJcmVsID0gcmVsYXRpb25fb3Bl bih0eXByZWxpZCwgQWNjZXNzU2hhcmVMb2NrKTsKKwkJCXR1cGRlc2MgPSBDcmVhdGVUdXBsZURl c2NDb3B5KFJlbGF0aW9uR2V0RGVzY3IocmVsKSk7CisKKwkJCWZvciAoaSA9IDA7IGkgPCB0dXBk ZXNjLT5uYXR0czsgaSsrKQorCQkJeworCQkJCUZvcm1fcGdfYXR0cmlidXRlIGF0dHJTdHJ1Y3Qg PSBUdXBsZURlc2NBdHRyKHR1cGRlc2MsIGkpOworCisJCQkJaWYgKCFhdHRyU3RydWN0LT5hdHRp c2Ryb3BwZWQpCisJCQkJeworCQkJCQlDb2x1bW5EZWYgKmNvbGRlZiA9IG1ha2VOb2RlKENvbHVt bkRlZik7CisKKwkJCQkJY29sZGVmLT5pbmhjb3VudCA9IDA7CisJCQkJCWNvbGRlZi0+aXNfbG9j YWwgPSB0cnVlOworCQkJCQljb2xkZWYtPmlzX25vdF9udWxsID0gZmFsc2U7CisJCQkJCWNvbGRl Zi0+aXNfZnJvbV90eXBlID0gZmFsc2U7CisJCQkJCWNvbGRlZi0+c3RvcmFnZSA9IDA7CisJCQkJ CWNvbGRlZi0+cmF3X2RlZmF1bHQgPSBOVUxMOworCQkJCQljb2xkZWYtPmNvb2tlZF9kZWZhdWx0 ID0gTlVMTDsKKwkJCQkJY29sZGVmLT5jb2xsQ2xhdXNlID0gTlVMTDsKKwkJCQkJY29sZGVmLT5j b2xsT2lkID0gSW52YWxpZE9pZDsKKwkJCQkJY29sZGVmLT5jb25zdHJhaW50cyA9IE5JTDsKKwkJ CQkJY29sZGVmLT5sb2NhdGlvbiA9IC0xOworCisJCQkJCWNvbGRlZi0+Y29sbmFtZSA9IHBzdHJk dXAoTmFtZVN0cihhdHRyU3RydWN0LT5hdHRuYW1lKSk7CisJCQkJCWNvbGRlZi0+dHlwZU5hbWUg PSBtYWtlVHlwZU5hbWVGcm9tT2lkKGF0dHJTdHJ1Y3QtPmF0dHR5cGlkLAorCQkJCQkJCQkJCQkJ CQkgICBhdHRyU3RydWN0LT5hdHR0eXBtb2QpOworCisJCQkJCXN0bXQtPnRhYmxlRWx0cyA9IGxh cHBlbmQoc3RtdC0+dGFibGVFbHRzLCBjb2xkZWYpOworCQkJCX0KKwkJCX0KKworCQkJRnJlZVR1 cGxlRGVzYyh0dXBkZXNjKTsKKwkJCXJlbGF0aW9uX2Nsb3NlKHJlbCwgQWNjZXNzU2hhcmVMb2Nr KTsKKworCQkJY3JlYXRlX2Nhc3QgPSB0cnVlOworCQl9CisJfQorCWVsc2UKKwl7CisJCUFzc2Vy dCh2YXItPnR5cGVOYW1lID09IE5VTEwpOworCQlBc3NlcnQodmFyLT5maWVsZHMgIT0gTklMKTsK KworCQlzdG10LT50YWJsZUVsdHMgPSB2YXItPmZpZWxkczsKKworCQljcmVhdGVfY2FzdCA9IGZh bHNlOworCX0KKworCXN0bXQtPnJlbGF0aW9uID0gdmFyLT52YXJpYWJsZTsKKwlzdG10LT5pbmhS ZWxhdGlvbnMgPSBOSUw7CisJc3RtdC0+Y29uc3RyYWludHMgPSBOSUw7CisJc3RtdC0+b3B0aW9u cyA9IE5JTDsKKwlzdG10LT5vbmNvbW1pdCA9IE9OQ09NTUlUX05PT1A7CisJc3RtdC0+dGFibGVz cGFjZW5hbWUgPSBOVUxMOworCXN0bXQtPmlmX25vdF9leGlzdHMgPSB2YXItPmlmX25vdF9leGlz dHM7CisKKwkvKgorCSAqIFNjaGVtYSB2YXJpYWJsZXMgdXNlcyByZWx0eXBlIGFuZCByZWxvZnR5 cGUgZmllbGRzLiBUaGUgcmVsdHlwZSBpcworCSAqIGNvbXBvc2l0ZSBhbHdheXMgZm9yIHNjYWxh ciBhbmQgbm9uIHNjYWxhciB2YXJpYWJsZXMuIEl0IGlzIHVzZWQgd2hlbgorCSAqIHdlIG5lZWQg YSB2YXJpYWJsZSdzIHR1cGxlIGRlc2NyaXByaW9uLiBXaGVuIHZhcmlhYmxlIHR5cGUgaXMgY29t cG9zaXRlLAorCSAqIHRoZW4gaXMgcmVmZXJlbmNlZCB3aXRob3V0IGNoYW5nZS4gU2NhbGFyIHZh cmlhYmxlIFYgaXMgdHJhbnNsYXRlZCB0bworCSAqIGNvbXBvc2l0ZSB0eXBlICh2X25hbWUgdl90 eXBlKS4KKwkgKiBUaGUgcmVsdHlwZSBpcyBhbHdheXMgY29tcG9zaXRlIC0gc2VlIGNhdGFsb2cv aGVhcC5jIEFkZE5ld1JlbGF0aW9uVHlwZSwKKwkgKiBidXQgZm9yIHNjaGVtYSB2YXJpYWJsZXMg YmFzZWQgb24gc29tZSB0eXBlIGlzIHRoaXMgYmVoYXZlIHVud2FudGVkLgorCSAqIHZhcmlhYmxl IHR5cGUgaXMgbm90IGNvbXBhdGlibGUgd2l0aCBiYXNlIHR5cGUuIFNvIGluIHRoaXMgY2FzZSBp cyBiZXR0ZXIKKwkgKiBkZWZpbmUgcmVsdHlwZSBhcyBkb21haW4gb2YgYmFzZSB0eXBlLiBCdXQg dGhpcyBjaGFuZ2UgYnJlYWsgY29uc2lzdGVuY3kKKwkgKiBvZiByZWx0eXBlIC0gc28gSSBjaGFu Z2VkIG5vdGhpbmcgYW5kIGltcGxpY2l0bHkgZ2VuZXJhdGUgbmVjZXNzYXJ5IGNhc3RzLgorCSAq LworCXN0bXQtPm9mVHlwZW5hbWUgPSB2YXItPnR5cGVOYW1lOworCisJYWRkcmVzcyA9IERlZmlu ZVJlbGF0aW9uKHN0bXQsIFJFTEtJTkRfVkFSSUFCTEUsIEludmFsaWRPaWQsIE5VTEwsIE5VTEwp OworCUFzc2VydChhZGRyZXNzLm9iamVjdElkICE9IEludmFsaWRPaWQpOworCisJaWYgKGNyZWF0 ZV9jYXN0KQorCXsKKwkJT2JqZWN0QWRkcmVzcyBjMSwgYzIsIHJlZmVyZW5jZWRfdDEsIHJlZmVy ZW5jZWRfdDI7CisJCVR5cGVOYW1lICp0MSA9IHZhci0+dHlwZU5hbWU7CisJCVR5cGVOYW1lICp0 MiA9IG1ha2VUeXBlTmFtZUZyb21PaWQoZ2V0X3JlbF90eXBlX2lkKGFkZHJlc3Mub2JqZWN0SWQp LCAtMSk7CisKKwkJLyoKKwkJICogVGhpcyBpcyB1Z2x5IHBhcnQgLSBidXQgSSBzaG91bGQgdG8g dGVhY2ggUG9zdGdyZXMsIHNvIHQxIGFuZCB0MiB0eXBlcworCQkgKiBhcmUgY2FzdGFibGUuIFVu Zm9ydHVuYXRlbGx5LCBDcmVhdGVDYXN0IGNhbm5vdCB0byBjaGFuZ2UgZGVwZW5kZW5jeSwKKwkJ ICogc28gZnJlc2ggZGVwZW5kZW5jeSBzaG91bGQgYmUgcmVtb3ZlZCBhbmQgcmVjcmVhdGVkIHdp dGggREVQRU5ERU5DWV9BVVRPCisJCSAqIGZsYWcuIEluIHRoaXMgY2FzZSwgd2UgYXJlIHN1cmUg c28gYm90aCB0eXBlcyBhcmUgY29tcG9zaXRlLCBzbyBtYXliZSBsZXNzCisJCSAqIHVnbHkgY2Fu IGJlIHVzZSByZWx0eXBlIGFzIGRvbWFpbiB0eXBlIG9mIGJhc2UgdHlwZSBpbnN0ZWFkIGNvcHku CisJCSAqLworCQlDcmVhdGVDYXN0U3RtdCAqbiA9IG1ha2VOb2RlKENyZWF0ZUNhc3RTdG10KTsK KworCQluLT5zb3VyY2V0eXBlID0gdDE7CisJCW4tPnRhcmdldHR5cGUgPSB0MjsKKwkJbi0+ZnVu YyA9IE5VTEw7CisJCW4tPmNvbnRleHQgPSBDT0VSQ0lPTl9JTVBMSUNJVDsKKwkJbi0+aW5vdXQg PSB0cnVlOworCisJCWMxID0gQ3JlYXRlQ2FzdChuKTsKKworCQluLT5zb3VyY2V0eXBlID0gdDI7 CisJCW4tPnRhcmdldHR5cGUgPSB0MTsKKworCQljMiA9IENyZWF0ZUNhc3Qobik7CisKKwkJZGVs ZXRlRGVwZW5kZW5jeVJlY29yZHNGb3IoQ2FzdFJlbGF0aW9uSWQsIGMxLm9iamVjdElkLCBmYWxz ZSk7CisJCWRlbGV0ZURlcGVuZGVuY3lSZWNvcmRzRm9yKENhc3RSZWxhdGlvbklkLCBjMi5vYmpl Y3RJZCwgZmFsc2UpOworCisJCXJlZmVyZW5jZWRfdDEuY2xhc3NJZCA9IFR5cGVSZWxhdGlvbklk OworCQlyZWZlcmVuY2VkX3QxLm9iamVjdElkID0gZ2V0X3JlbF90eXBlX2lkKGFkZHJlc3Mub2Jq ZWN0SWQpOworCQlyZWZlcmVuY2VkX3QxLm9iamVjdFN1YklkID0gMDsKKworCQlyZWZlcmVuY2Vk X3QyLmNsYXNzSWQgPSBUeXBlUmVsYXRpb25JZDsKKwkJcmVmZXJlbmNlZF90Mi5vYmplY3RJZCA9 IExvb2t1cFR5cGVOYW1lT2lkKHBzdGF0ZSwgdmFyLT50eXBlTmFtZSwgZmFsc2UpOworCQlyZWZl cmVuY2VkX3QyLm9iamVjdFN1YklkID0gMDsKKworCQlyZWNvcmREZXBlbmRlbmN5T24oJmMxLCAm cmVmZXJlbmNlZF90MSwgREVQRU5ERU5DWV9BVVRPKTsKKwkJcmVjb3JkRGVwZW5kZW5jeU9uKCZj MSwgJnJlZmVyZW5jZWRfdDIsIERFUEVOREVOQ1lfQVVUTyk7CisJCXJlY29yZERlcGVuZGVuY3lP bigmYzIsICZyZWZlcmVuY2VkX3QxLCBERVBFTkRFTkNZX0FVVE8pOworCQlyZWNvcmREZXBlbmRl bmN5T24oJmMyLCAmcmVmZXJlbmNlZF90MiwgREVQRU5ERU5DWV9BVVRPKTsKKwl9CisKKwlyZXR1 cm4gYWRkcmVzczsKK30KKworLyoKKyAqIEltcGxlbWVudGF0aW9uIG9mIHNjaGVtYXZhciBjYWNo ZS4gSXQgaXMgcXVlc3Rpb24gaWYgaXQgc2hvdWxkIGJlIGluIHRoaXMgcGxhY2UsIG9yCisgKiBp dCBzaG91bGQgYmUgc3RvcmFnZSByZWxhdGVkIG9yIGNhY2hlIHJlbGF0ZWQgcGxhY2U/IEJ1dCBm b3IgdGhpcyBtb21lbnQgKFBvQykgaXQKKyAqIGNhbiBiZSBoZXJlLiBDYWNoZSBpcyBpbXBsZW1l bnRlZCBhcyBoYXNoIHRhYmxlIHdpdGggb3duIG1lbW9yeSBjb250ZXh0LgorICovCisKKy8qCisg KiBDcmVhdGUgdGhlIGhhc2ggdGFibGUgZm9yIHN0b3Jpbmcgc2NoZW1hIHZhcmlhYmxlcworICov CitzdGF0aWMgdm9pZAorY3JlYXRlX3NjaGVtYXZhcl9oYXNodGFibGUodm9pZCkKK3sKKwlIQVNI Q1RMCQljdGw7CisKKwkvKiBzZXQgY2FsbGJhY2tzICovCisJaWYgKGZpcnN0X3RpbWUpCisJewor CisJCUNhY2hlUmVnaXN0ZXJTeXNjYWNoZUNhbGxiYWNrKFJFTE9JRCwKKwkJCQkJCQkJCSAgSW52 YWxpZGF0ZVNjaGVtYVZhckNhY2hlQ2FsbGJhY2ssCisJCQkJCQkJCQkgIChEYXR1bSkgMCk7CisJ CVJlZ2lzdGVyWGFjdENhbGxiYWNrKHJlY2hlY2tfc2NoZW1hX3ZhcmlhYmxlcywgTlVMTCk7CisK KwkJZmlyc3RfdGltZSA9IGZhbHNlOworCX0KKworCS8qIG5lZWRzIG93biBsb25nIGxpZmUgbWVt b3J5IGNvbnRleHQgKi8KKwlpZiAoU2NoZW1hVmFyTWVtb3J5Q29udGV4dCA9PSBOVUxMKQorCXsK KwkJU2NoZW1hVmFyTWVtb3J5Q29udGV4dCA9IEFsbG9jU2V0Q29udGV4dENyZWF0ZShUb3BNZW1v cnlDb250ZXh0LAorCQkJCQkJCQkJCQkJCQkJInNjaGVtYSB2YXJpYWJsZXMiLAorCQkJCQkJCQkJ CQkJCQkJQUxMT0NTRVRfU1RBUlRfU01BTExfU0laRVMpOworCX0KKworCW1lbXNldCgmY3RsLCAw LCBzaXplb2YoY3RsKSk7CisJY3RsLmtleXNpemUgPSBzaXplb2YoT2lkKTsKKwljdGwuZW50cnlz aXplID0gc2l6ZW9mKFNjaGVtYVZhckRhdGEpOworCWN0bC5oY3h0ID0gU2NoZW1hVmFyTWVtb3J5 Q29udGV4dDsKKworCXNjaGVtYXZhcmhhc2h0YWIgPSBoYXNoX2NyZWF0ZSgiU2NoZW1hIHZhcmlh YmxlcyIsIDY0LCAmY3RsLAorCQkJCQkJCQkJCUhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBIQVNI X0NPTlRFWFQpOworCWNhY2hlX2lzX3ZhbGlkID0gdHJ1ZTsKK30KKworLyoKKyAqIEZhc3QgZHJv cCBjb21wbGV0ZSBjb250ZW50IG9mIHNjaGVtYSB2YXJpYWJsZXMKKyAqLwordm9pZAorUmVzZXRT Y2hlbWFWYXJpYWJsZXNDYWNoZSh2b2lkKQoreworCWlmIChzY2hlbWF2YXJoYXNodGFiKQorCXsK KwkJaGFzaF9kZXN0cm95KHNjaGVtYXZhcmhhc2h0YWIpOworCQlzY2hlbWF2YXJoYXNodGFiID0g TlVMTDsKKwl9CisKKwlpZiAoU2NoZW1hVmFyTWVtb3J5Q29udGV4dCAhPSBOVUxMKQorCXsKKwkJ TWVtb3J5Q29udGV4dFJlc2V0KFNjaGVtYVZhck1lbW9yeUNvbnRleHQpOworCX0KK30KKworLyoK KyAqIENvcHkgZGF0dW0gdmFsdWUgdG8gc2NoZW1hIHZhcmlhYmxlcyBjYWNoZSBwbGFjZQorICov CitzdGF0aWMgdm9pZAorU2V0VmFsdWUoU2NoZW1hVmFyIHZhciwKKwkJIERhdHVtIHZhbHVlLCBi b29sIGlzTnVsbCwKKwkJIE9pZCB0eXBpZCwgaW50MzIgdHlwbW9kKQoreworCS8qIHJlbGVhc2Ug cHJldmlvdXNseSBzdG9yZWQgdmFsdWUgKi8KKwlpZiAodmFyLT5mcmVldmFsKQorCXsKKwkJcGZy ZWUoRGF0dW1HZXRQb2ludGVyKHZhci0+dmFsdWUpKTsKKwkJdmFyLT5mcmVldmFsID0gZmFsc2U7 CisJfQorCisJaWYgKCFpc051bGwpCisJeworCQlNZW1vcnlDb250ZXh0IG9sZGN4dDsKKworCQkv KgorCQkgKiBjYXN0IHRoZSB2YWx1ZSBpZiBjb252ZXJzaW9uIGlzIG5lY2Vzc2FyeS4KKwkJICog RXhwZWN0aW5nOiBjdXJyZW50IGNvbnRleHQgaXMgc2hvcnQgY29udGV4dC4KKwkJICoKKwkJICog UVVFU1RJT046IGhvdyBtdWNoIHNob3VsZCBiZSB0aGlzIGNhc3QgdG9sZXJhbnQvc3RyaWN0Pwor CQkgKi8KKwkJaWYgKHZhci0+dHlwaWQgIT0gdHlwaWQgfHwgdmFyLT50eXBtb2QgIT0gdHlwbW9k KQorCQl7CisJCQl2YWx1ZSA9IGRhdHVtQ2FzdCh2YWx1ZSwKKwkJCQkJCQkJdmFyLT50eXBpZCwg dmFyLT50eXBtb2QsCisJCQkJCQkJCXR5cGlkLCB0eXBtb2QpOworCQl9CisKKwkJdmFyLT5pc251 bGwgPSBmYWxzZTsKKworCQlvbGRjeHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oU2NoZW1hVmFy TWVtb3J5Q29udGV4dCk7CisKKwkJdmFyLT52YWx1ZSA9IGRhdHVtQ29weSh2YWx1ZSwgdmFyLT50 eXBieXZhbCwgdmFyLT50eXBsZW4pOworCQlpZiAodmFyLT52YWx1ZSAhPSB2YWx1ZSkKKwkJCXZh ci0+ZnJlZXZhbCA9IHRydWU7CisKKwkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN4dCk7CisJ fQorCWVsc2UKKwl7CisJCXZhci0+dmFsdWUgPSAoRGF0dW0pIDA7CisJCXZhci0+aXNudWxsID0g dHJ1ZTsKKwl9Cit9CisKKy8qCisgKiBSZXR1cm5zIHZhcmlhYmxlIG5hbWUKKyAqLworY2hhciAq CitnZXRfc2NoZW1hdmFyX25hbWUoT2lkIHZhcmlkKQoreworCUhlYXBUdXBsZQkJcmVsVHVwOwor CUZvcm1fcGdfY2xhc3MJcmVsRm9ybTsKKwljaGFyCSAgICpuc3BuYW1lOworCWNoYXIJICAgKnJl bG5hbWU7CisKKwlyZWxUdXAgPSBTZWFyY2hTeXNDYWNoZTEoUkVMT0lELAorCQkJCQkJCSAgT2Jq ZWN0SWRHZXREYXR1bSh2YXJpZCkpOworCWlmICghSGVhcFR1cGxlSXNWYWxpZChyZWxUdXApKQor CQkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHNjaGVtYSB2YXJpYWJsZSAl dSIsIHZhcmlkKTsKKwlyZWxGb3JtID0gKEZvcm1fcGdfY2xhc3MpIEdFVFNUUlVDVChyZWxUdXAp OworCisJLyogUXVhbGlmeSB0aGUgbmFtZSBpZiBub3QgdmlzaWJsZSBpbiBzZWFyY2ggcGF0aCAq LworCWlmIChSZWxhdGlvbklzVmlzaWJsZSh2YXJpZCkpCisJCW5zcG5hbWUgPSBOVUxMOworCWVs c2UKKwkJbnNwbmFtZSA9IGdldF9uYW1lc3BhY2VfbmFtZShyZWxGb3JtLT5yZWxuYW1lc3BhY2Up OworCisJcmVsbmFtZSA9IHF1b3RlX3F1YWxpZmllZF9pZGVudGlmaWVyKG5zcG5hbWUsIE5hbWVT dHIocmVsRm9ybS0+cmVsbmFtZSkpOworCisJUmVsZWFzZVN5c0NhY2hlKHJlbFR1cCk7CisKKwly ZXR1cm4gcmVsbmFtZTsKK30KKworLyoKKyAqIEFjY2VzcyBmdW5jdGlvbnMgdG8gc2NoZW1hIHZh cmlhYmxlcy4KKyAqLwordm9pZAorU2V0U2NoZW1hVmFyaWFibGUoT2lkIHZhcmlkLCBEYXR1bSB2 YWx1ZSwgYm9vbCBpc051bGwsIE9pZCB0eXBpZCwgaW50MzIgdHlwbW9kKQoreworCVNjaGVtYVZh cgl2YXI7CisKKwl2YXIgPSBQcmVwYXJlU2NoZW1hVmFyKHZhcmlkKTsKKwlTZXRWYWx1ZSh2YXIs IHZhbHVlLCBpc051bGwsIHR5cGlkLCB0eXBtb2QpOworfQorCisvKgorICogU2VjdXJpemVkIHZl cnNpb25zIFNldFNjaGVtYVZhcmlhYmxlCisgKi8KK3ZvaWQKK1NldFNjaGVtYVZhcmlhYmxlU2Vj dXJlKE9pZCB2YXJpZCwgRGF0dW0gdmFsdWUsIGJvb2wgaXNOdWxsLCBPaWQgdHlwaWQsIGludDMy IHR5cG1vZCkKK3sKKwlBY2xSZXN1bHQJCWFjbHJlc3VsdDsKKworCS8qIENoZWNrIHBlcm1pc3Np b25zICovCisJYWNscmVzdWx0ID0gcGdfY2xhc3NfYWNsY2hlY2sodmFyaWQsIEdldFVzZXJJZCgp LCBBQ0xfVVBEQVRFKTsKKwlpZiAoYWNscmVzdWx0ICE9IEFDTENIRUNLX09LKQorCQlhY2xjaGVj a19lcnJvcihhY2xyZXN1bHQsIE9CSkVDVF9WQVJJQUJMRSwgZ2V0X3NjaGVtYXZhcl9uYW1lKHZh cmlkKSk7CisKKwlTZXRTY2hlbWFWYXJpYWJsZSh2YXJpZCwgdmFsdWUsIGlzTnVsbCwgdHlwaWQs IHR5cG1vZCk7Cit9CisKK0RhdHVtCitHZXRTY2hlbWFWYXJpYWJsZShPaWQgdmFyaWQsIGJvb2wg KmlzTnVsbCwKKwkJCQkJCU9pZCB0eXBpZCwgaW50MzIgdHlwbW9kLAorCQkJCQkJaW50MTYgdHlw bGVuLCBib29sIHR5cGJ5dmFsKQoreworCVNjaGVtYVZhcgl2YXI7CisJRGF0dW0JCXJlc3VsdCA9 IChEYXR1bSkgMDsKKworCXZhciA9IFByZXBhcmVTY2hlbWFWYXIodmFyaWQpOworCisJaWYgKCF2 YXItPmlzbnVsbCkKKwl7CisJCXJlc3VsdCA9IGRhdHVtQ2FzdCh2YXItPnZhbHVlLCB0eXBpZCwg dHlwbW9kLAorCQkJCQkJCQl2YXItPnR5cGlkLCB2YXItPnR5cG1vZCk7CisJCSppc051bGwgPSBm YWxzZTsKKworCQlpZiAocmVzdWx0ID09IHZhci0+dmFsdWUpCisJCQlyZXN1bHQgPSBkYXR1bUNv cHkocmVzdWx0LCB0eXBieXZhbCwgdHlwbGVuKTsKKwl9CisJZWxzZQorCQkqaXNOdWxsID0gdHJ1 ZTsKKworCXJldHVybiByZXN1bHQ7Cit9CisKKy8qCisgKiBTZWN1cml6ZWQgdmVyc2lvbiBvZiBH ZXRTY2hlbWFWYXJpYWJsZQorICovCitEYXR1bQorR2V0U2NoZW1hVmFyaWFibGVTZWN1cmUoT2lk IHZhcmlkLCBib29sICppc051bGwsCisJCQkJCQlPaWQgdHlwaWQsIGludDMyIHR5cG1vZCwKKwkJ CQkJCWludDE2IHR5cGxlbiwgYm9vbCB0eXBieXZhbCkKK3sKKwlBY2xSZXN1bHQgYWNscmVzdWx0 OworCisJLyogQ2hlY2sgcGVybWlzc2lvbnMgKi8KKwlhY2xyZXN1bHQgPSBwZ19jbGFzc19hY2xj aGVjayh2YXJpZCwgR2V0VXNlcklkKCksIEFDTF9TRUxFQ1QpOworCWlmIChhY2xyZXN1bHQgIT0g QUNMQ0hFQ0tfT0spCisJCWFjbGNoZWNrX2Vycm9yKGFjbHJlc3VsdCwgT0JKRUNUX1ZBUklBQkxF LCBnZXRfc2NoZW1hdmFyX25hbWUodmFyaWQpKTsKKworCXJldHVybiBHZXRTY2hlbWFWYXJpYWJs ZSh2YXJpZCwgaXNOdWxsLCB0eXBpZCwgdHlwbW9kLCB0eXBsZW4sIHR5cGJ5dmFsKTsKK30KKwor LyoKKyAqIFYxIGZ1bmN0aW9uIEFQSQorICoKKyAqIHZvaWQgc2V0X3NjaGVtYV92YXJpYWJsZSh2 YXIgcmVnY2xhc3MsIHZhbHVlIGFueWVsZW1lbnQpOworICogYW55ZWxlbWVudCBnZXRfc2NoZW1h X3ZhcmlhYmxlKHZhciByZWdjbGFzcywgZXhwZWN0ZWRfdHlwZSBhbnllbGVtZW50KQorICoKKyAq LworRGF0dW0KK3NldF9zY2hlbWFfdmFyaWFibGUoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlPaWQJ CXZhcmlkOworCURhdHVtCXZhbHVlOworCWJvb2wJaXNOdWxsOworCU9pZAkJdHlwaWQ7CisJaW50 MTYJdHlwbGVuOworCWJvb2wJdHlwYnl2YWw7CisKKwlpZiAoUEdfQVJHSVNOVUxMKDApKQorCQll cmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfTlVMTF9WQUxVRV9OT1RfQUxMT1dF RCksCisJCQkJIGVycm1zZygibnVsbCB2YWx1ZSBub3QgYWxsb3dlZCBmb3IgdmFyaWFibGUgaWRl bnRpdHkiKSkpOworCisJdmFyaWQgPSBQR19HRVRBUkdfT0lEKDApOworCisJaWYgKCFQR19BUkdJ U05VTEwoMSkpCisJeworCQl2YWx1ZSA9IFBHX0dFVEFSR19EQVRVTSgxKTsKKwkJaXNOdWxsID0g ZmFsc2U7CisJfQorCWVsc2UKKwl7CisJCXZhbHVlID0gKERhdHVtKSAwOworCQlpc051bGwgPSB0 cnVlOworCX0KKworCXR5cGlkID0gZ2V0X2ZuX2V4cHJfYXJndHlwZShmY2luZm8tPmZsaW5mbywg MSk7CisJaWYgKHR5cGlkID09IEludmFsaWRPaWQpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVy cmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJIGVycm1zZygiY291 bGQgbm90IGRldGVybWluZSBpbnB1dCBkYXRhIHR5cGUiKSkpOworCisJZ2V0X3R5cGxlbmJ5dmFs KHR5cGlkLCAmdHlwbGVuLCAmdHlwYnl2YWwpOworCVNldFNjaGVtYVZhcmlhYmxlU2VjdXJlKHZh cmlkLCB2YWx1ZSwgaXNOdWxsLCB0eXBpZCwgLTEpOworCisJUEdfUkVUVVJOX1ZPSUQoKTsKK30K KworRGF0dW0KK2dldF9zY2hlbWFfdmFyaWFibGUoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlPaWQJ CXZhcmlkOworCU9pZAkJdHlwaWQ7CisJaW50MTYJdHlwbGVuOworCWJvb2wJdHlwYnl2YWw7CisJ Ym9vbAlpc051bGw7CisJRGF0dW0JcmVzdWx0OworCisJaWYgKFBHX0FSR0lTTlVMTCgwKSkKKwkJ ZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX05VTExfVkFMVUVfTk9UX0FMTE9X RUQpLAorCQkJCSBlcnJtc2coIm51bGwgdmFsdWUgbm90IGFsbG93ZWQgZm9yIHZhcmlhYmxlIGlk ZW50aXR5IikpKTsKKworCXZhcmlkID0gUEdfR0VUQVJHX09JRCgwKTsKKworCXR5cGlkID0gZ2V0 X2ZuX2V4cHJfYXJndHlwZShmY2luZm8tPmZsaW5mbywgMSk7CisJaWYgKHR5cGlkID09IEludmFs aWRPaWQpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BB UkFNRVRFUl9WQUxVRSksCisJCQkJIGVycm1zZygiY291bGQgbm90IGRldGVybWluZSBpbnB1dCBk YXRhIHR5cGUiKSkpOworCisJZ2V0X3R5cGxlbmJ5dmFsKHR5cGlkLCAmdHlwbGVuLCAmdHlwYnl2 YWwpOworCXJlc3VsdCA9IEdldFNjaGVtYVZhcmlhYmxlU2VjdXJlKHZhcmlkLCAmaXNOdWxsLCB0 eXBpZCwgLTEsIHR5cGxlbiwgdHlwYnl2YWwpOworCisJaWYgKGlzTnVsbCkKKwkJUEdfUkVUVVJO X05VTEwoKTsKKwllbHNlCisJCVBHX1JFVFVSTl9EQVRVTShyZXN1bHQpOworfQorCisvKgorICog QWNjZXNzIGZ1bmN0aW9ucyB0byBmaWVsZHMgb2YgY29tcG9zaXRlIHZhcmlhYmxlcworICovCit2 b2lkCitTZXRTY2hlbWFWYXJpYWJsZUZpZWxkKE9pZCB2YXJpZCwgY29uc3QgY2hhciAqZmllbGRu YW1lLAorCQkJCQkJRGF0dW0gdmFsdWUsIGJvb2wgaXNOdWxsLAorCQkJCQkJT2lkIHR5cGlkLCBp bnQzMiB0eXBtb2QpCit7CisKKwlTY2hlbWFWYXIJdmFyOworCVR1cGxlRGVzYwl0dXBEZXNjOwor CUZvcm1fcGdfYXR0cmlidXRlCXNhdHRyID0gTlVMTDsKKwlEYXR1bQkgICAqdmFsdWVzOworCWJv b2wJICAgKm51bGxzOworCWludAkJCW5hdHRzOworCUhlYXBUdXBsZQkJdHVwbGU7CisJaW50CQkJ aTsKKworCXZhciA9IFByZXBhcmVTY2hlbWFWYXIodmFyaWQpOworCisJaWYgKCF2YXItPmlzX3Jv d3R5cGUpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9XUk9OR19PQkpF Q1RfVFlQRSksCisJCQkJIGVycm1zZygidGhlIHZhcmlhYmxlIFwiJXNcIiBpcyBub3Qgb2Ygcm93 IHR5cGUiLAorCQkJCQkJICBnZXRfc2NoZW1hdmFyX25hbWUodmFyaWQpKSkpOworCisJdHVwRGVz YyA9IGxvb2t1cF9yb3d0eXBlX3R1cGRlc2ModmFyLT50eXBpZCwgdmFyLT50eXBtb2QpOworCW5h dHRzID0gdHVwRGVzYy0+bmF0dHM7CisKKwkvKgorCSAqIFdlIHNob3VsZCB0byBjaGVjayBjb3Jy ZWN0IGZpZWxkIG5hbWUsIGFsdGhvdWdoIHJlc3VsdCBjYW4gYmUgTlVMTCwKKwkgKiBhbmQgdGhp cyBpbmZvcm1hdGlvbiB3aWxsIG5vdCBiZSB1c2VkLgorCSAqLworCWZvciAoaSA9IDA7IGkgPCBu YXR0czsgaSsrKQorCXsKKwkJaWYgKG5hbWVzdHJjbXAoJihUdXBsZURlc2NBdHRyKHR1cERlc2Ms IGkpLT5hdHRuYW1lKSwgZmllbGRuYW1lKSA9PSAwICYmCisJCQkhVHVwbGVEZXNjQXR0cih0dXBE ZXNjLCBpKS0+YXR0aXNkcm9wcGVkKQorCQl7CisJCQlzYXR0ciA9IFR1cGxlRGVzY0F0dHIodHVw RGVzYywgaSk7CisJCQlicmVhazsKKwkJfQorCX0KKworCWlmIChzYXR0ciA9PSBOVUxMKQorCQll cmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVEX0NPTFVNTiksCisJ CQkJIGVycm1zZygidGhlIHZhcmlhYmxlIFwiJXNcIiBoYXMgbm90IGZpZWxkIFwiJXNcIiIsCisJ CQkJCQkJZ2V0X3NjaGVtYXZhcl9uYW1lKHZhcmlkKSwKKwkJCQkJCQlmaWVsZG5hbWUpKSk7CisK KwkvKiBsZWF2ZSwgd2hlbiB3ZSBkb24ndCBuZWVkIHRvIGNoYW5nZSBjb21wb3NpdGUgKi8KKwlp ZiAodmFyLT5pc251bGwgJiYgaXNOdWxsKQorCXsKKwkJRnJlZVR1cGxlRGVzYyh0dXBEZXNjKTsK KwkJcmV0dXJuOworCX0KKworCXZhbHVlcyA9IChEYXR1bSAqKSBwYWxsb2MwKG5hdHRzICogc2l6 ZW9mKERhdHVtKSk7CisJbnVsbHMgPSAoYm9vbCAqKSBwYWxsb2MwKG5hdHRzICogc2l6ZW9mKGJv b2wpKTsKKworCWlmICghdmFyLT5pc251bGwpCisJeworCQlIZWFwVHVwbGVIZWFkZXIgcmVjID0g RGF0dW1HZXRIZWFwVHVwbGVIZWFkZXIodmFyLT52YWx1ZSk7CisJCUhlYXBUdXBsZURhdGEJdHVw OworCisJCS8qIEJ1aWxkIGEgdGVtcG9yYXJ5IEhlYXBUdXBsZSBjb250cm9sIHN0cnVjdHVyZSAq LworCQl0dXAudF9sZW4gPSBIZWFwVHVwbGVIZWFkZXJHZXREYXR1bUxlbmd0aChyZWMpOworCQlJ dGVtUG9pbnRlclNldEludmFsaWQoJih0dXAudF9zZWxmKSk7CisJCXR1cC50X3RhYmxlT2lkID0g SW52YWxpZE9pZDsKKwkJdHVwLnRfZGF0YSA9IHJlYzsKKworCQloZWFwX2RlZm9ybV90dXBsZSgm dHVwLCB0dXBEZXNjLCB2YWx1ZXMsIG51bGxzKTsKKwl9CisJZWxzZQorCXsKKwkJZm9yIChpID0g MDsgaSA8IG5hdHRzOyBpKyspCisJCQludWxsc1tpXSA9IHRydWU7CisJfQorCisJaWYgKCFpc051 bGwpCisJeworCQl2YWx1ZXNbc2F0dHItPmF0dG51bSAtIDFdID0gZGF0dW1DYXN0KHZhbHVlLAor CQkJCQkJCQkJCSAgc2F0dHItPmF0dHR5cGlkLCBzYXR0ci0+YXR0dHlwbW9kLAorCQkJCQkJCQkJ CSAgdHlwaWQsIHR5cG1vZCk7CisJCW51bGxzW3NhdHRyLT5hdHRudW0gLSAxXSA9IGZhbHNlOwor CX0KKwllbHNlCisJeworCQl2YWx1ZXNbc2F0dHItPmF0dG51bSAtIDFdID0gKERhdHVtKSAwOwor CQludWxsc1tzYXR0ci0+YXR0bnVtIC0gMV0gPSB0cnVlOworCX0KKworCXR1cGxlID0gaGVhcF9m b3JtX3R1cGxlKHR1cERlc2MsIHZhbHVlcywgbnVsbHMpOworCVNldFZhbHVlKHZhciwKKwkJCSAg SGVhcFR1cGxlSGVhZGVyR2V0RGF0dW0oKEhlYXBUdXBsZUhlYWRlcikgdHVwbGUtPnRfZGF0YSks CisJCQkgIGZhbHNlLAorCQkJICB2YXItPnR5cGlkLCB2YXItPnR5cG1vZCk7CisKKwloZWFwX2Zy ZWV0dXBsZSh0dXBsZSk7CisJUmVsZWFzZVR1cGxlRGVzYyh0dXBEZXNjKTsKK30KKworRGF0dW0K K0dldFNjaGVtYVZhcmlhYmxlRmllbGQoT2lkIHZhcmlkLCBjb25zdCBjaGFyICpmaWVsZG5hbWUs CisJCQkJCQlib29sICppc051bGwsCisJCQkJCQlPaWQgdHlwaWQsIGludDMyIHR5cG1vZCwKKwkJ CQkJCWludDE2IHR5cGxlbiwgYm9vbCB0eXBieXZhbCkKK3sKKwlEYXR1bQkJcmVzdWx0ID0gKERh dHVtKSAwOworCURhdHVtCQl2YWx1ZSA9IChEYXR1bSkgMDsKKwlUdXBsZURlc2MJCXR1cERlc2M7 CisJRm9ybV9wZ19hdHRyaWJ1dGUJc2F0dHIgPSBOVUxMOworCVNjaGVtYVZhcgkJdmFyOworCWlu dAkJCWk7CisKKwlBc3NlcnQodmFyaWQgIT0gSW52YWxpZE9pZCk7CisKKwl2YXIgPSBQcmVwYXJl U2NoZW1hVmFyKHZhcmlkKTsKKworCWlmICghdmFyLT5pc19yb3d0eXBlKQorCQllcmVwb3J0KEVS Uk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfV1JPTkdfT0JKRUNUX1RZUEUpLAorCQkJCSBlcnJt c2coInRoZSB2YXJpYWJsZSBcIiVzXCIgaXMgbm90IG9mIHJvdyB0eXBlIiwKKwkJCQkJCSAgZ2V0 X3NjaGVtYXZhcl9uYW1lKHZhcmlkKSkpKTsKKworCXR1cERlc2MgPSBsb29rdXBfcm93dHlwZV90 dXBkZXNjKHZhci0+dHlwaWQsIHZhci0+dHlwbW9kKTsKKworCS8qCisJICogV2Ugc2hvdWxkIHRv IGNoZWNrIGNvcnJlY3QgZmllbGQgbmFtZSwgYWx0aG91Z2ggcmVzdWx0IGNhbiBiZSBOVUxMLAor CSAqIGFuZCB0aGlzIGluZm9ybWF0aW9uIHdpbGwgbm90IGJlIHVzZWQuCisJICovCisJZm9yIChp ID0gMDsgaSA8IHR1cERlc2MtPm5hdHRzOyBpKyspCisJeworCQlpZiAobmFtZXN0cmNtcCgmKFR1 cGxlRGVzY0F0dHIodHVwRGVzYywgaSktPmF0dG5hbWUpLCBmaWVsZG5hbWUpID09IDAgJiYKKwkJ CSFUdXBsZURlc2NBdHRyKHR1cERlc2MsIGkpLT5hdHRpc2Ryb3BwZWQpCisJCXsKKwkJCXNhdHRy ID0gVHVwbGVEZXNjQXR0cih0dXBEZXNjLCBpKTsKKwkJCWJyZWFrOworCQl9CisJfQorCisJaWYg KHNhdHRyID09IE5VTEwpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9V TkRFRklORURfQ09MVU1OKSwKKwkJCQkgZXJybXNnKCJ0aGUgdmFyaWFibGUgXCIlc1wiIGhhcyBu b3QgZmllbGQgXCIlc1wiIiwKKwkJCQkJCQlnZXRfc2NoZW1hdmFyX25hbWUodmFyaWQpLAorCQkJ CQkJCWZpZWxkbmFtZSkpKTsKKworCS8qCisJICogVGhlb3JldGljYWxseSwgd2UgY2hlY2sgYSBw b3NzaWJpbGl0eSB0byBjYXN0IHRvIHRhcmdldCB0eXBlIGV2ZXJ5dGltZSwKKwkgKiBidXQgY2Fu IGJlIGlnbm9yZWQsIHdoZW4gcmVzdWx0IHdpbGwgYmUgbnVsbC4KKwkgKi8KKwlpZiAoIXZhci0+ aXNudWxsKQorCXsKKwkJSGVhcFR1cGxlSGVhZGVyCXR1cGxlOworCQlIZWFwVHVwbGVEYXRhCXRt cHR1cDsKKworCQl0dXBsZSA9IERhdHVtR2V0SGVhcFR1cGxlSGVhZGVyKHZhci0+dmFsdWUpOwor CisJCS8qCisJCSAqIGhlYXBfZ2V0YXR0ciBuZWVkcyBhIEhlYXBUdXBsZSBub3QgYSBiYXJlIEhl YXBUdXBsZUhlYWRlci4gIFdlIHNldCBhbGwKKwkJICogdGhlIGZpZWxkcyBpbiB0aGUgc3RydWN0 IGp1c3QgaW4gY2FzZSB1c2VyIHRyaWVzIHRvIGluc3BlY3Qgc3lzdGVtCisJCSAqIGNvbHVtbnMu CisJCSAqLworCQl0bXB0dXAudF9sZW4gPSBIZWFwVHVwbGVIZWFkZXJHZXREYXR1bUxlbmd0aCh0 dXBsZSk7CisJCUl0ZW1Qb2ludGVyU2V0SW52YWxpZCgmKHRtcHR1cC50X3NlbGYpKTsKKwkJdG1w dHVwLnRfdGFibGVPaWQgPSBJbnZhbGlkT2lkOworCQl0bXB0dXAudF9kYXRhID0gdHVwbGU7CisK KwkJdmFsdWUgPSBoZWFwX2dldGF0dHIoJnRtcHR1cCwKKwkJCQkJCQkgIHNhdHRyLT5hdHRudW0s CisJCQkJCQkJICB0dXBEZXNjLAorCQkJCQkJCSAgaXNOdWxsKTsKKworCQlpZiAoISppc051bGwp CisJCXsKKwkJCXJlc3VsdCA9IGRhdHVtQ2FzdCh2YWx1ZSwgdHlwaWQsIHR5cG1vZCwKKwkJCQkJ CQkJc2F0dHItPmF0dHR5cGlkLCBzYXR0ci0+YXR0dHlwbW9kKTsKKworCQkJaWYgKHJlc3VsdCA9 PSB2YWx1ZSkKKwkJCQlyZXN1bHQgPSBkYXR1bUNvcHkocmVzdWx0LCB0eXBieXZhbCwgdHlwbGVu KTsKKwkJfQorCX0KKworCVJlbGVhc2VUdXBsZURlc2ModHVwRGVzYyk7CisKKwlyZXR1cm4gcmVz dWx0OworfQorCit2b2lkCitTZXRTY2hlbWFWYXJpYWJsZUZpZWxkU2VjdXJlKE9pZCB2YXJpZCwg Y29uc3QgY2hhciAqZmllbGRuYW1lLAorCQkJCQkJRGF0dW0gdmFsdWUsIGJvb2wgaXNOdWxsLAor CQkJCQkJT2lkIHR5cGlkLCBpbnQzMiB0eXBtb2QpCit7CisJQWNsUmVzdWx0CQlhY2xyZXN1bHQ7 CisKKwkvKiBDaGVjayBwZXJtaXNzaW9ucyAqLworCWFjbHJlc3VsdCA9IHBnX2NsYXNzX2FjbGNo ZWNrKHZhcmlkLCBHZXRVc2VySWQoKSwgQUNMX1VQREFURSk7CisJaWYgKGFjbHJlc3VsdCAhPSBB Q0xDSEVDS19PSykKKwkJYWNsY2hlY2tfZXJyb3IoYWNscmVzdWx0LCBPQkpFQ1RfVkFSSUFCTEUs IGdldF9zY2hlbWF2YXJfbmFtZSh2YXJpZCkpOworCisJU2V0U2NoZW1hVmFyaWFibGVGaWVsZCh2 YXJpZCwgZmllbGRuYW1lLCB2YWx1ZSwgaXNOdWxsLCB0eXBpZCwgdHlwbW9kKTsKK30KKworRGF0 dW0KK0dldFNjaGVtYVZhcmlhYmxlRmllbGRTZWN1cmUoT2lkIHZhcmlkLCBjb25zdCBjaGFyICpm aWVsZG5hbWUsCisJCQkJCQlib29sICppc051bGwsCisJCQkJCQlPaWQgdHlwaWQsIGludDMyIHR5 cG1vZCwKKwkJCQkJCWludDE2IHR5cGxlbiwgYm9vbCB0eXBieXZhbCkKK3sKKwlBY2xSZXN1bHQg YWNscmVzdWx0OworCisJLyoKKwkgKiBUaGVyZSBhcmUgbm90IGFueSBzcGVjaWFsIGFjY2VzcyB0 byBmaWVsZHMuIEp1c3QgY2hlY2sgYQorCSAqIGFjY2VzcyB0byB2YXJpYWJsZS4KKwkgKi8KKwlh Y2xyZXN1bHQgPSBwZ19jbGFzc19hY2xjaGVjayh2YXJpZCwgR2V0VXNlcklkKCksIEFDTF9TRUxF Q1QpOworCWlmIChhY2xyZXN1bHQgIT0gQUNMQ0hFQ0tfT0spCisJCWFjbGNoZWNrX2Vycm9yKGFj bHJlc3VsdCwgT0JKRUNUX1ZBUklBQkxFLCBnZXRfc2NoZW1hdmFyX25hbWUodmFyaWQpKTsKKwor CXJldHVybiBHZXRTY2hlbWFWYXJpYWJsZUZpZWxkKHZhcmlkLCBmaWVsZG5hbWUsIGlzTnVsbCwg dHlwaWQsIHR5cG1vZCwgdHlwbGVuLCB0eXBieXZhbCk7Cit9CisKK0RhdHVtCitzZXRfc2NoZW1h X3ZhcmlhYmxlX2ZpZWxkKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJT2lkCQl2YXJpZDsKKwlEYXR1 bQl2YWx1ZTsKKwlib29sCWlzTnVsbDsKKwlPaWQJCXR5cGlkOworCWludDE2CXR5cGxlbjsKKwli b29sCXR5cGJ5dmFsOworCWNvbnN0IGNoYXIgICAqZmllbGRuYW1lOworCisJaWYgKFBHX0FSR0lT TlVMTCgwKSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX05VTExfVkFM VUVfTk9UX0FMTE9XRUQpLAorCQkJCSBlcnJtc2coIm51bGwgdmFsdWUgbm90IGFsbG93ZWQgZm9y IHZhcmlhYmxlIGlkZW50aXR5IikpKTsKKworCXZhcmlkID0gUEdfR0VUQVJHX09JRCgwKTsKKwor CWlmIChQR19BUkdJU05VTEwoMSkpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJS Q09ERV9OVUxMX1ZBTFVFX05PVF9BTExPV0VEKSwKKwkJCQkgZXJybXNnKCJudWxsIHZhbHVlIG5v dCBhbGxvd2VkIGZvciBmaWVsZCBuYW1lIikpKTsKKworCWZpZWxkbmFtZSA9IE5hbWVTdHIoKlBH X0dFVEFSR19OQU1FKDEpKTsKKworCWlmICghUEdfQVJHSVNOVUxMKDIpKQorCXsKKwkJdmFsdWUg PSBQR19HRVRBUkdfREFUVU0oMik7CisJCWlzTnVsbCA9IGZhbHNlOworCX0KKwllbHNlCisJewor CQl2YWx1ZSA9IChEYXR1bSkgMDsKKwkJaXNOdWxsID0gdHJ1ZTsKKwl9CisKKwl0eXBpZCA9IGdl dF9mbl9leHByX2FyZ3R5cGUoZmNpbmZvLT5mbGluZm8sIDIpOworCWlmICh0eXBpZCA9PSBJbnZh bGlkT2lkKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9Q QVJBTUVURVJfVkFMVUUpLAorCQkJCSBlcnJtc2coImNvdWxkIG5vdCBkZXRlcm1pbmUgaW5wdXQg ZGF0YSB0eXBlIikpKTsKKworCWdldF90eXBsZW5ieXZhbCh0eXBpZCwgJnR5cGxlbiwgJnR5cGJ5 dmFsKTsKKwlTZXRTY2hlbWFWYXJpYWJsZUZpZWxkU2VjdXJlKHZhcmlkLCBmaWVsZG5hbWUsIHZh bHVlLCBpc051bGwsIHR5cGlkLCAtMSk7CisKKwlQR19SRVRVUk5fVk9JRCgpOworfQorCitEYXR1 bQorZ2V0X3NjaGVtYV92YXJpYWJsZV9maWVsZChQR19GVU5DVElPTl9BUkdTKQoreworCU9pZAkJ dmFyaWQ7CisJT2lkCQl0eXBpZDsKKwlpbnQxNgl0eXBsZW47CisJYm9vbAl0eXBieXZhbDsKKwli b29sCWlzTnVsbDsKKwlEYXR1bQlyZXN1bHQ7CisJY29uc3QgY2hhciAgICpmaWVsZG5hbWU7CisK KwlpZiAoUEdfQVJHSVNOVUxMKDApKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVS UkNPREVfTlVMTF9WQUxVRV9OT1RfQUxMT1dFRCksCisJCQkJIGVycm1zZygibnVsbCB2YWx1ZSBu b3QgYWxsb3dlZCBmb3IgdmFyaWFibGUgaWRlbnRpdHkiKSkpOworCisJdmFyaWQgPSBQR19HRVRB UkdfT0lEKDApOworCisJaWYgKFBHX0FSR0lTTlVMTCgxKSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJ CQkoZXJyY29kZShFUlJDT0RFX05VTExfVkFMVUVfTk9UX0FMTE9XRUQpLAorCQkJCSBlcnJtc2co Im51bGwgdmFsdWUgbm90IGFsbG93ZWQgZm9yIGZpZWxkIG5hbWUiKSkpOworCisJZmllbGRuYW1l ID0gTmFtZVN0cigqUEdfR0VUQVJHX05BTUUoMSkpOworCisJdHlwaWQgPSBnZXRfZm5fZXhwcl9h cmd0eXBlKGZjaW5mby0+ZmxpbmZvLCAyKTsKKwlpZiAodHlwaWQgPT0gSW52YWxpZE9pZCkKKwkJ ZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZB TFVFKSwKKwkJCQkgZXJybXNnKCJjb3VsZCBub3QgZGV0ZXJtaW5lIGlucHV0IGRhdGEgdHlwZSIp KSk7CisKKwlnZXRfdHlwbGVuYnl2YWwodHlwaWQsICZ0eXBsZW4sICZ0eXBieXZhbCk7CisJcmVz dWx0ID0gR2V0U2NoZW1hVmFyaWFibGVGaWVsZFNlY3VyZSh2YXJpZCwgZmllbGRuYW1lLCAmaXNO dWxsLCB0eXBpZCwgLTEsIHR5cGxlbiwgdHlwYnl2YWwpOworCisJaWYgKGlzTnVsbCkKKwkJUEdf UkVUVVJOX05VTEwoKTsKKwllbHNlCisJCVBHX1JFVFVSTl9EQVRVTShyZXN1bHQpOworCisJUEdf UkVUVVJOX05VTEwoKTsKK30KKworLyoKKyAqIFJlc3VsdHM6CisgKj0KKyAKKzEuIFRoZSBzY2hl bWEgdmFyaWFibGVzIGFyZSBzaW1pbGFyIHRvIHRlbXBvcmFyeSB0YWJsZXMgLSBidXQgdGhlIGRh dGEgYXJlIG5vdCBzYXZlZAorICAgaW4gOEtCIGJsb2Nrcywgc28gbmV3IHN0b3JhZ2UgYW5kIHNv bWUgc2ltcGxlIHN0b3JhZ2UgbWFuYWdlciBzaG91bGQgYmUgY3JlYXRlZC4gV2UKKyAgIHdvdWxk IG5vdCB0byB1c2UgbG9jYWwgYnVmZmVyIGR1ZSBhbGxvY2F0aW9uIDhLQiBhcyBtaW5pbXVuLCBj cmVhdGluZyB0ZW1wIGZpbGUuCisKKzIuIFdlIHNob3VsZCB0byB3b3JrIHdpdGggdHlwbW9kLCBz byBwZ19hdHRyaWJ1dGUgZW50cnkgc2hvdWxkIGJlIGNyZWF0ZWQgYW55dGltZS4KKworMy4gQSBy aXNrIG9mIGNvbGxpc2lvbnMgb2YgdmFyaWFibGUgYW5kIHRhYmxlIG5hbWUgd2lsbCBiZSByZWR1 Y2VkLCB3aGVuIHZhcmlhYmxlcworICAgYW5kIHRhYmxlcyBjYW5ub3QgdG8gaGF2ZSBzYW1lIG5h bWUuCisKKzQuIElmIHNjaGVtYSB2YXJpYWJsZXMgYXJlIHBnX2NsYXNzIGJhc2VkLCB0aGVuIHNv bWUgY3VycmVudCBzeW50YXggaGFzIHNlbnNlCisKKyAgICBXZSBjYW4gc3VwcG9ydCBVUERBVEUg YW5kIFNFTEVDVCBjb21tYW5kcyBvbiB2YXJpYWJsZXMuCisKKyAgICBwb3NzaWJsZSBzeW50YXhl czoKKworICAgICAgICAtLSB0aGVyZSBjYW4gYmUgYSBhbmFsb2d5IHdpdGggcmVjb3JkIGZ1bmN0 aW9ucworICAgICAgICBTRUxFQ1QgdmFybmFtZTsKKyAgICAgICAgU0VMRUNUIHZhcm5hbWUuZmll bGQ7CisgICAgICAgIFNFTEVDVCB2YXJuYW1lIEZST00gdmFybmFtZTsgLS0gd2hlbiB2YXIgaXMg c2NhbGFyLCB0aGVuIHZhcm5hbWUgaW4gdGFyZ2V0IGxpc3QgaXMgc2NhbGFyCisKKyAgICAgICAg VVBEQVRFIHZhcm5hbWUgU0VUIHZhcm5hbWUgPSAxMDsgLS0gc2NhbGFyIHZlcnNpb24KKyAgICAg ICAgVVBEQVRFIHZhcm5hbWUgU0VUIHZhcm5hbWUgPSAoeCx5LHopIC0tIGNvbXBvc2l0ZSB2ZXJz aW9uCisgICAgICAgIFVQREFURSB2YXJuYW1lIFNFVCB2YXJuYW1lLmZpZWxkMSA9IHgsIHZhcm5h bWUuZmllbGQyID0geSwgLi4KKworICAgICAgICBMRVQgdmFybmFtZSA9IGV4cHI7CisgICAgICAg IExFVCB2YXJuYW1lLmZpZWxkMSA9IGV4cHI7CisgICAgICAgIExFVCB2YXJuYW1lID0gKHgsIHks IHopOyAtLSBjb21wb3NpdGUgdmVyc2lvbgorCisgICBQb3NzaWJsZQorICAgCisgICAgICAgIExF VCB2YXJuYW1lKGEsYikgPSAoc2VsZWN0ICgxMCwgMjApIEZST00gLi4uICkKKworCis1LiBMRVQg Y21kIGNhbiBiZSBpbXBsZW1lbnRlZCBhcyBDTUQgKGxpa2UgSU5TRVJULCBVUERBVEUsIERFTEVU RSkgb3IgVXRpbGl0eSAobGlrZQorICAgQ3JlYXRlVGFibGVBc1NlbGVjdCkuIFByZWZlciBmaXJz dCBvcHRpb24sIGJlY2F1c2UgdGhlcmUgY2FuIGJlIHByZXBhcmVkLCBjYW4gYmUKKyAgIHVzZWQg dG9nZXRoZXIgd2l0aCBFWFBMQUlOLCBldGMuCisKKyAgIEV4cGVjdGVkIGZvcm06CisgICAgIExF VCBmb28gPSAoU0VMRUNUIGlkIEZST00gYm9vIFdIRVJFIHNvbWUgPSAnaGVsbG8nKTsKKworICAg c28gcG9zc2liaWxpdHkgdG8gcnVuIEVYUExBSU4gTEVUIC4uIGhhcyBnb29kIGVub3VnaCBiZW5l Zml0CisKKzYuIFdoYXQgc2hvdWxkIGJlIG1lY2hhbmlzbSBvZiBjb21wYXRpYmlsaXR5IGJldHdl ZW4gYmFzZSB0eXBlIGFuZCB2YXJpYWJsZSB0eXBlPworCisgICAgIENSRUFURSBWQVJJQUJMRSB4 eCBBUyBCVAorCisgICBFeGFtcGxlOiBDUkVBVEUgVFlQRSBjdCBBUyAoeCBpbnQsIGludCk7IENS RUFURSBWQVJJQUJMRSB2YXIgQVMgY3Q7CisgICB2YXIgdHlwZSAoaW1wbGljaXRseSBjcmVhdGVk KSBzaG91bGQgYmUgY29tcGF0aWJsZSB3aXRoIGN0IHR5cGUsIGJlY2F1c2Ugd2Ugd2FudAorCisg ICAgIExFVCB2YXIgPSAoMTAsMjApOjp2YXI7IExFVCB2YXIgPSAoMTAsMjApOjpjdDsKKworNy4g V2hlbiBMRVQgY29tbWFuZCBhbGxvd3MgdG8gc3BlY2lmeSB0YXJnZXQgZmllbGQsIHRoZW4gdGhl cmUgaXMgcG9zc2libGUgY29sbGlzaW9uCisgICBJMS5JMiBjYW4gYmUgc2NoZW1hLnZhcmlhYmxl LCBidXQgc2hvdWxkIGJlIHZhcmlhYmxlLmZpZWxkIHRvby4gSXQgc2hvdWxkIGJlIHRlc3RlZAor ICAgYW5kIGlmIGJvdGggdmFyaWFudHMgYXJlIHBvc3NpYmxlLCB0aGVuIGV4Y2VwdGlvbiBzaG91 bGQgYmUgcmFpc2VkLiBMRVQgdmFyLmZpZWxkID0gZXhwcgorICAgaXMgYSBhbmFsb2d5IHRvIFVQ REFURSB2YXIgU0VUIGZpZWxkID0gZXhwci4KKworCisqLwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m IGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKaW5kZXggOGY4M2FhNDY3NS4uMWZhZDE1NjU3 OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKKysrIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKQEAgLTI3Miw2ICsyNzIsMTIgQEAgc3RhdGlj IGNvbnN0IHN0cnVjdCBkcm9wbXNnc3RyaW5ncyBkcm9wbXNnc3RyaW5nYXJyYXlbXSA9IHsKIAkJ Z2V0dGV4dF9ub29wKCJpbmRleCBcIiVzXCIgZG9lcyBub3QgZXhpc3QsIHNraXBwaW5nIiksCiAJ CWdldHRleHRfbm9vcCgiXCIlc1wiIGlzIG5vdCBhbiBpbmRleCIpLAogCWdldHRleHRfbm9vcCgi VXNlIERST1AgSU5ERVggdG8gcmVtb3ZlIGFuIGluZGV4LiIpfSwKKwl7UkVMS0lORF9WQVJJQUJM RSwKKwkJRVJSQ09ERV9VTkRFRklORURfVEFCTEUsCisJCWdldHRleHRfbm9vcCgic2NoZW1hIHZh cmlhYmxlIFwiJXNcIiBkb2VzIG5vdCBleGlzdCIpLAorCQlnZXR0ZXh0X25vb3AoInNjaGVtYSB2 YXJpYWJsZSBcIiVzXCIgZG9lcyBub3QgZXhpc3QsIHNraXBwaW5nIiksCisJCWdldHRleHRfbm9v cCgiXCIlc1wiIGlzIG5vdCBhIHNjaGVtYSB2YXJpYWJsZSIpLAorCWdldHRleHRfbm9vcCgiVXNl IERST1AgVkFSSUFCTEUgdG8gcmVtb3ZlIGEgdmFyaWFibGUuIil9LAogCXsnXDAnLCAwLCBOVUxM LCBOVUxMLCBOVUxMLCBOVUxMfQogfTsKIApAQCAtMTAwNTYsNiArMTAwNjIsNyBAQCBBVEV4ZWND aGFuZ2VPd25lcihPaWQgcmVsYXRpb25PaWQsIE9pZCBuZXdPd25lcklkLCBib29sIHJlY3Vyc2lu ZywgTE9DS01PREUgbG9jawogCQljYXNlIFJFTEtJTkRfTUFUVklFVzoKIAkJY2FzZSBSRUxLSU5E X0ZPUkVJR05fVEFCTEU6CiAJCWNhc2UgUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRToKKwkJY2Fz ZSBSRUxLSU5EX1ZBUklBQkxFOgogCQkJLyogb2sgdG8gY2hhbmdlIG93bmVyICovCiAJCQlicmVh azsKIAkJY2FzZSBSRUxLSU5EX0lOREVYOgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY0V4cHIuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHByLmMKaW5kZXggZGI1 ZmNhZmJmZS4uNWRkOThkOGRlNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhl Y0V4cHIuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwci5jCkBAIC0zMyw2ICsz Myw3IEBACiAjaW5jbHVkZSAiYWNjZXNzL25idHJlZS5oIgogI2luY2x1ZGUgImNhdGFsb2cvb2Jq ZWN0YWNjZXNzLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190eXBlLmgiCisjaW5jbHVkZSAiY29t bWFuZHMvc2NoZW1hdmFyLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY0V4cHIuaCIKICNpbmNs dWRlICJleGVjdXRvci9ub2RlU3VicGxhbi5oIgogI2luY2x1ZGUgImZ1bmNhcGkuaCIKQEAgLTcy Myw2ICs3MjQsNyBAQCBFeGVjSW5pdEV4cHJSZWMoRXhwciAqbm9kZSwgRXhwclN0YXRlICpzdGF0 ZSwKIAkJCXsKIAkJCQlQYXJhbQkgICAqcGFyYW0gPSAoUGFyYW0gKikgbm9kZTsKIAkJCQlQYXJh bUxpc3RJbmZvIHBhcmFtczsKKwkJCQlBY2xSZXN1bHQJYWNscmVzdWx0OwogCiAJCQkJc3dpdGNo IChwYXJhbS0+cGFyYW1raW5kKQogCQkJCXsKQEAgLTczMCw2ICs3MzIsMjMgQEAgRXhlY0luaXRF eHByUmVjKEV4cHIgKm5vZGUsIEV4cHJTdGF0ZSAqc3RhdGUsCiAJCQkJCQlzY3JhdGNoLm9wY29k ZSA9IEVFT1BfUEFSQU1fRVhFQzsKIAkJCQkJCXNjcmF0Y2guZC5wYXJhbS5wYXJhbWlkID0gcGFy YW0tPnBhcmFtaWQ7CiAJCQkJCQlzY3JhdGNoLmQucGFyYW0ucGFyYW10eXBlID0gcGFyYW0tPnBh cmFtdHlwZTsKKwkJCQkJCUV4cHJFdmFsUHVzaFN0ZXAoc3RhdGUsICZzY3JhdGNoKTsKKwkJCQkJ CWJyZWFrOworCQkJCQljYXNlIFBBUkFNX1NDSEVNQV9WQVJJQUJMRToKKwkJCQkJCS8qIENoZWNr IHBlcm1pc3Npb24gdG8gcmVhZCBzY2hlbWEgdmFyaWFibGUgKi8KKwkJCQkJCWFjbHJlc3VsdCA9 IHBnX2NsYXNzX2FjbGNoZWNrKHBhcmFtLT5wYXJhbWlkLCBHZXRVc2VySWQoKSwgQUNMX1NFTEVD VCk7CisJCQkJCQlpZiAoYWNscmVzdWx0ICE9IEFDTENIRUNLX09LKQorCQkJCQkJCWFjbGNoZWNr X2Vycm9yKGFjbHJlc3VsdCwgT0JKRUNUX1ZBUklBQkxFLCBnZXRfc2NoZW1hdmFyX25hbWUocGFy YW0tPnBhcmFtaWQpKTsKKworCQkJCQkJc2NyYXRjaC5vcGNvZGUgPSBFRU9QX1BBUkFNX1NDSEVN QV9WQVJJQUJMRTsKKwkJCQkJCXNjcmF0Y2guZC5wYXJhbS5wYXJhbWlkID0gcGFyYW0tPnBhcmFt aWQ7CisJCQkJCQlzY3JhdGNoLmQucGFyYW0ucGFyYW10eXBlID0gcGFyYW0tPnBhcmFtdHlwZTsK KwkJCQkJCXNjcmF0Y2guZC5wYXJhbS5wYXJhbXR5cG1vZCA9IHBhcmFtLT5wYXJhbXR5cG1vZDsK KworCQkJCQkJZ2V0X3R5cGxlbmJ5dmFsKHBhcmFtLT5wYXJhbXR5cGUsCisJCQkJCQkJCQkJCQkm c2NyYXRjaC5kLnBhcmFtLnBhcmFtdHlwbGVuLAorCQkJCQkJCQkJCQkJJnNjcmF0Y2guZC5wYXJh bS5wYXJhbXR5cGJ5dmFsKTsKKwogCQkJCQkJRXhwckV2YWxQdXNoU3RlcChzdGF0ZSwgJnNjcmF0 Y2gpOwogCQkJCQkJYnJlYWs7CiAJCQkJCWNhc2UgUEFSQU1fRVhURVJOOgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHJJbnRlcnAuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL2V4ZWNFeHBySW50ZXJwLmMKaW5kZXggNzcxYjdlMzk0NS4uNjQyOTRlNGFjNCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHJJbnRlcnAuYworKysgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9leGVjRXhwckludGVycC5jCkBAIC01OSw2ICs1OSw3IEBACiAjaW5jbHVk ZSAiYWNjZXNzL3R1cHRvYXN0ZXIuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKICNp bmNsdWRlICJjb21tYW5kcy9zZXF1ZW5jZS5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3NjaGVtYXZh ci5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWNFeHByLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3Iv bm9kZVN1YnBsYW4uaCIKICNpbmNsdWRlICJmdW5jYXBpLmgiCkBAIC0zNTEsNiArMzUyLDcgQEAg RXhlY0ludGVycEV4cHIoRXhwclN0YXRlICpzdGF0ZSwgRXhwckNvbnRleHQgKmVjb250ZXh0LCBi b29sICppc251bGwpCiAJCSYmQ0FTRV9FRU9QX1BBUkFNX0VYRUMsCiAJCSYmQ0FTRV9FRU9QX1BB UkFNX0VYVEVSTiwKIAkJJiZDQVNFX0VFT1BfUEFSQU1fQ0FMTEJBQ0ssCisJCSYmQ0FTRV9FRU9Q X1BBUkFNX1NDSEVNQV9WQVJJQUJMRSwKIAkJJiZDQVNFX0VFT1BfQ0FTRV9URVNUVkFMLAogCQkm JkNBU0VfRUVPUF9NQUtFX1JFQURPTkxZLAogCQkmJkNBU0VfRUVPUF9JT0NPRVJDRSwKQEAgLTEw MzMsNiArMTAzNSwyMyBAQCBFeGVjSW50ZXJwRXhwcihFeHByU3RhdGUgKnN0YXRlLCBFeHByQ29u dGV4dCAqZWNvbnRleHQsIGJvb2wgKmlzbnVsbCkKIAkJCUVFT19ORVhUKCk7CiAJCX0KIAorCQlF RU9fQ0FTRShFRU9QX1BBUkFNX1NDSEVNQV9WQVJJQUJMRSkKKwkJeworCQkJRGF0dW0JZDsKKwkJ CWJvb2wJaXNudWxsOworCisJCQlkID0gR2V0U2NoZW1hVmFyaWFibGUob3AtPmQucGFyYW0ucGFy YW1pZCwgJmlzbnVsbCwKKwkJCQkJCQkJCQkJCQkgIG9wLT5kLnBhcmFtLnBhcmFtdHlwZSwKKwkJ CQkJCQkJCQkJCQkgIC0xLAorCQkJCQkJCQkJCQkJCSAgb3AtPmQucGFyYW0ucGFyYW10eXBsZW4s CisJCQkJCQkJCQkJCQkJICBvcC0+ZC5wYXJhbS5wYXJhbXR5cGJ5dmFsKTsKKworCQkJKm9wLT5y ZXN2YWx1ZSA9IGQ7CisJCQkqb3AtPnJlc251bGwgPSBpc251bGw7CisKKwkJCUVFT19ORVhUKCk7 CisJCX0KKwogCQlFRU9fQ0FTRShFRU9QX1BBUkFNX0NBTExCQUNLKQogCQl7CiAJCQkvKiBhbGxv dyBhbiBleHRlbnNpb24gbW9kdWxlIHRvIHN1cHBseSBhIFBBUkFNX0VYVEVSTiB2YWx1ZSAqLwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNNYWluLmMKaW5kZXggOTFiYTkzOWJkYy4uNzIzMmNmYWRmOCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYworKysgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9leGVjTWFpbi5jCkBAIC0yMTAsNiArMjEwLDcgQEAgc3RhbmRhcmRfRXhlY3V0b3JT dGFydChRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncykKIAlzd2l0Y2ggKHF1ZXJ5RGVz Yy0+b3BlcmF0aW9uKQogCXsKIAkJY2FzZSBDTURfU0VMRUNUOgorCQljYXNlIENNRF9MRVQ6CiAK IAkJCS8qCiAJCQkgKiBTRUxFQ1QgRk9SIFtLRVldIFVQREFURS9TSEFSRSBhbmQgbW9kaWZ5aW5n IENURXMgbmVlZCB0byBtYXJrCkBAIC03NjksNyArNzcwLDggQEAgRXhlY0NoZWNrWGFjdFJlYWRP bmx5KFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCkKIAogCS8qCiAJICogRmFpbCBpZiB3cml0ZSBw ZXJtaXNzaW9ucyBhcmUgcmVxdWVzdGVkIGluIHBhcmFsbGVsIG1vZGUgZm9yIHRhYmxlCi0JICog KHRlbXAgb3Igbm9uLXRlbXApLCBvdGhlcndpc2UgZmFpbCBmb3IgYW55IG5vbi10ZW1wIHRhYmxl LgorCSAqICh0ZW1wIG9yIG5vbi10ZW1wKSwgb3RoZXJ3aXNlIGZhaWwgZm9yIGFueSBub24tdGVt cCB0YWJsZS4gQWxsb3cgdG8KKwkgKiBtb2RpZnkgY29udGVudCBvZiBzY2hlbWEgdmFyaWFibGVz LgogCSAqLwogCWZvcmVhY2gobCwgcGxhbm5lZHN0bXQtPnJ0YWJsZSkKIAl7CkBAIC03ODQsNiAr Nzg2LDkgQEAgRXhlY0NoZWNrWGFjdFJlYWRPbmx5KFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCkK IAkJaWYgKGlzVGVtcE5hbWVzcGFjZShnZXRfcmVsX25hbWVzcGFjZShydGUtPnJlbGlkKSkpCiAJ CQljb250aW51ZTsKIAorCQlpZiAocnRlLT5yZWxraW5kID09IFJFTEtJTkRfVkFSSUFCTEUpCisJ CQljb250aW51ZTsKKwogCQlQcmV2ZW50Q29tbWFuZElmUmVhZE9ubHkoQ3JlYXRlQ29tbWFuZFRh ZygoTm9kZSAqKSBwbGFubmVkc3RtdCkpOwogCX0KIApAQCAtMTExOSw2ICsxMTI0LDE0IEBAIENo ZWNrVmFsaWRSZXN1bHRSZWwoUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywgQ21kVHlwZSBv cGVyYXRpb24pCiAJCQkJCSBlcnJtc2coImNhbm5vdCBjaGFuZ2UgVE9BU1QgcmVsYXRpb24gXCIl c1wiIiwKIAkJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZXN1bHRSZWwpKSkpOwogCQkJ YnJlYWs7CisJCWNhc2UgUkVMS0lORF9WQVJJQUJMRToKKwkJCS8qIG9ubHkgTEVUIGNvbW1hbmQg Y2FuIGNoYW5nZSBhIHZhcmlhYmxlICovCisJCQlpZiAob3BlcmF0aW9uICE9IENNRF9MRVQpCisJ CQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfV1JPTkdfT0JKRUNUX1RZ UEUpLAorCQkJCQkJIGVycm1zZygiY2Fubm90IGNoYW5nZSBzY2hlbWEgdmFyaWFibGUgXCIlc1wi IiwKKwkJCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVzdWx0UmVsKSkpKTsKKwkJCWJy ZWFrOwogCQljYXNlIFJFTEtJTkRfVklFVzoKIAogCQkJLyoKQEAgLTEyODYsNiArMTI5OSwxMyBA QCBDaGVja1ZhbGlkUm93TWFya1JlbChSZWxhdGlvbiByZWwsIFJvd01hcmtUeXBlIG1hcmtUeXBl KQogCQkJCQkJIGVycm1zZygiY2Fubm90IGxvY2sgcm93cyBpbiBmb3JlaWduIHRhYmxlIFwiJXNc IiIsCiAJCQkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCkpKSk7CiAJCQlicmVhazsK KwkJY2FzZSBSRUxLSU5EX1ZBUklBQkxFOgorCQkJLyogTXVzdCBkaXNhbGxvdyB0aGlzIGJlY2F1 c2Ugd2UgdGhlcmUgYXJlIG5vdCByb3dzICovCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJy Y29kZShFUlJDT0RFX1dST05HX09CSkVDVF9UWVBFKSwKKwkJCQkJIGVycm1zZygiY2Fubm90IGxv Y2sgcm93cyBpbiBzY2hlbWEgdmFyaWFibGUgXCIlc1wiIiwKKwkJCQkJCQlSZWxhdGlvbkdldFJl bGF0aW9uTmFtZShyZWwpKSkpOworCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQllcmVwb3J0KEVS Uk9SLAogCQkJCQkoZXJyY29kZShFUlJDT0RFX1dST05HX09CSkVDVF9UWVBFKSwKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMKaW5kZXggNGZhMmQ3MjY1Zi4uYmNjNDExMzk0MyAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMKKysrIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMKQEAgLTM5LDYgKzM5LDcgQEAK IAogI2luY2x1ZGUgImFjY2Vzcy9odHVwX2RldGFpbHMuaCIKICNpbmNsdWRlICJhY2Nlc3MveGFj dC5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3NjaGVtYXZhci5oIgogI2luY2x1ZGUgImNvbW1hbmRz L3RyaWdnZXIuaCIKICNpbmNsdWRlICJleGVjdXRvci9leGVjUGFydGl0aW9uLmgiCiAjaW5jbHVk ZSAiZXhlY3V0b3IvZXhlY3V0b3IuaCIKQEAgLTczLDYgKzc0LDcgQEAgc3RhdGljIHZvaWQgRXhl Y1NldHVwQ2hpbGRQYXJlbnRNYXBGb3JTdWJwbGFuKE1vZGlmeVRhYmxlU3RhdGUgKm10c3RhdGUp Owogc3RhdGljIFR1cGxlQ29udmVyc2lvbk1hcCAqdHVwY29udl9tYXBfZm9yX3N1YnBsYW4oTW9k aWZ5VGFibGVTdGF0ZSAqbm9kZSwKIAkJCQkJCWludCB3aGljaHBsYW4pOwogCisKIC8qCiAgKiBW ZXJpZnkgdGhhdCB0aGUgdHVwbGVzIHRvIGJlIHByb2R1Y2VkIGJ5IElOU0VSVCBvciBVUERBVEUg bWF0Y2ggdGhlCiAgKiB0YXJnZXQgcmVsYXRpb24ncyByb3d0eXBlCkBAIC0xNDgzLDYgKzE0ODUs NzIgQEAgRXhlY09uQ29uZmxpY3RVcGRhdGUoTW9kaWZ5VGFibGVTdGF0ZSAqbXRzdGF0ZSwKIAly ZXR1cm4gdHJ1ZTsKIH0KIAorLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoJCUV4ZWNMZXQKKyAqCisgKgkJRm9yIExF VCwgd2UgaGF2ZSB0byB1cGRhdGUgdGFyZ2V0IHZhcmlhYmxlLAorICogICAgICBSZXR1cm5zIE5V TEwsIHRoZXJlIGFyZSBub3QgUkVUVVJOSU5HIGNsYXVzZS4KKyAqIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworc3Rh dGljIFR1cGxlVGFibGVTbG90ICoKK0V4ZWNMZXQoTW9kaWZ5VGFibGVTdGF0ZSAqbXRzdGF0ZSwK KwkJICAgVHVwbGVUYWJsZVNsb3QgKnNsb3QsCisJCSAgIEVTdGF0ZSAqZXN0YXRlLAorCQkgICBi b29sIGNhblNldFRhZykKK3sKKwlSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvOworCVJlbGF0 aW9uCXJlc3VsdFJlbGF0aW9uRGVzYzsKKwlUdXBsZURlc2MJdHVwZGVzYzsKKwlib29sCQlpc251 bGwgPSB0cnVlOworCURhdHVtCQl2YWx1ZTsKKwlGb3JtX3BnX2F0dHJpYnV0ZSBhdHRyID0gTlVM TDsKKwlPaWQJCQl2YXJpZDsKKworCWlmIChzbG90ICE9IE5VTEwgJiYgIXNsb3QtPnR0c19pc2Vt cHR5KQorCXsKKwkJdHVwZGVzYyA9IHNsb3QtPnR0c190dXBsZURlc2NyaXB0b3I7CisKKwkJQXNz ZXJ0KHR1cGRlc2MgIT0gTlVMTCk7CisKKwkJLyogc2hvdWxkIGJlIGNoZWNrZWQgYmVmb3JlICov CisJCWlmICh0dXBkZXNjLT5uYXR0cyAhPSAxKQorCQkJZWxvZyhFUlJPUiwgInVuZXhwZWN0ZWQg bnVtYmVyIG9mIGF0dHJpYnV0ZXMiKTsKKworCQlhdHRyID0gVHVwbGVEZXNjQXR0cih0dXBkZXNj LCAwKTsKKworCQlpZiAoIXNsb3QtPnR0c19pc251bGxbMF0pCisJCXsKKwkJCWlzbnVsbCA9IGZh bHNlOworCQkJdmFsdWUgPSBzbG90LT50dHNfdmFsdWVzWzBdOworCQl9CisJfQorCisJLyoKKwkg KiBOb3csIGVzX3Jlc3VsdF9yZWxhdGlvbl9pbmZvIGlzIGVtcHR5LCBidXQgY2FuIGJlIGluaXRp YWxpemVkCisJICogdG8gc3RydWN0dXJlIG9mIHVzZWQgc2NoZW1hIHZhcmlhYmxlLgorCSAqLwor CXJlc3VsdFJlbEluZm8gPSBlc3RhdGUtPmVzX3Jlc3VsdF9yZWxhdGlvbl9pbmZvOworCXJlc3Vs dFJlbGF0aW9uRGVzYyA9IHJlc3VsdFJlbEluZm8tPnJpX1JlbGF0aW9uRGVzYzsKKwl2YXJpZCA9 IHJlc3VsdFJlbGF0aW9uRGVzYy0+cmRfaWQ7CisKKwlpZiAoIWlzbnVsbCkKKwl7CisJCS8qIGV4 cGVjdGluZyBzbyB2YXJpYWJsZSBhbmQgZXhwcmVzc2lvbiBhcmUgZXF1YWwgKi8KKwkJU2V0U2No ZW1hVmFyaWFibGUodmFyaWQsIHZhbHVlLCBpc251bGwsIGF0dHItPmF0dHR5cGlkLCAtMSk7CisJ fQorCWVsc2UKKwl7CisJCVNldFNjaGVtYVZhcmlhYmxlKHZhcmlkLCAoRGF0dW0pIDAsIHRydWUs IEludmFsaWRPaWQsIC0xKTsKKwl9CisKKwlpZiAoY2FuU2V0VGFnKQorCXsKKwkJQXNzZXJ0KGVz dGF0ZS0+ZXNfcHJvY2Vzc2VkID09IDApOworCQkoZXN0YXRlLT5lc19wcm9jZXNzZWQpKys7CisJ fQorCisJcmV0dXJuIE5VTEw7Cit9CiAKIC8qCiAgKiBQcm9jZXNzIEJFRk9SRSBFQUNIIFNUQVRF TUVOVCB0cmlnZ2VycwpAQCAtMTUxNSw2ICsxNTgzLDkgQEAgZmlyZUJTVHJpZ2dlcnMoTW9kaWZ5 VGFibGVTdGF0ZSAqbm9kZSkKIAkJY2FzZSBDTURfREVMRVRFOgogCQkJRXhlY0JTRGVsZXRlVHJp Z2dlcnMobm9kZS0+cHMuc3RhdGUsIHJlc3VsdFJlbEluZm8pOwogCQkJYnJlYWs7CisJCWNhc2Ug Q01EX0xFVDoKKwkJCS8qIHRoZXJlIGFyZSBubyB0cmlnZ2VyICovCisJCQlicmVhazsKIAkJZGVm YXVsdDoKIAkJCWVsb2coRVJST1IsICJ1bmtub3duIG9wZXJhdGlvbiIpOwogCQkJYnJlYWs7CkBA IC0xNTcwLDYgKzE2NDEsOSBAQCBmaXJlQVNUcmlnZ2VycyhNb2RpZnlUYWJsZVN0YXRlICpub2Rl KQogCQkJRXhlY0FTRGVsZXRlVHJpZ2dlcnMobm9kZS0+cHMuc3RhdGUsIHJlc3VsdFJlbEluZm8s CiAJCQkJCQkJCSBub2RlLT5tdF90cmFuc2l0aW9uX2NhcHR1cmUpOwogCQkJYnJlYWs7CisJCWNh c2UgQ01EX0xFVDoKKwkJCS8qIHZhcmlhYmxlcyBoYXMgbm90IHRyaWdnZXJzICovCisJCQlicmVh azsKIAkJZGVmYXVsdDoKIAkJCWVsb2coRVJST1IsICJ1bmtub3duIG9wZXJhdGlvbiIpOwogCQkJ YnJlYWs7CkBAIC0yMDg0LDYgKzIxNTgsOSBAQCBFeGVjTW9kaWZ5VGFibGUoUGxhblN0YXRlICpw c3RhdGUpCiAJCQkJCQkJCSAgJm5vZGUtPm10X2VwcXN0YXRlLCBlc3RhdGUsCiAJCQkJCQkJCSAg TlVMTCwgdHJ1ZSwgbm9kZS0+Y2FuU2V0VGFnKTsKIAkJCQlicmVhazsKKwkJCWNhc2UgQ01EX0xF VDoKKwkJCQlzbG90ID0gRXhlY0xldChub2RlLCBzbG90LCBlc3RhdGUsIG5vZGUtPmNhblNldFRh Zyk7CisJCQkJYnJlYWs7CiAJCQlkZWZhdWx0OgogCQkJCWVsb2coRVJST1IsICJ1bmtub3duIG9w ZXJhdGlvbiIpOwogCQkJCWJyZWFrOwpAQCAtMjQ2OSw2ICsyNTQ2LDcgQEAgRXhlY0luaXRNb2Rp ZnlUYWJsZShNb2RpZnlUYWJsZSAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJ CQkJYnJlYWs7CiAJCQljYXNlIENNRF9VUERBVEU6CiAJCQljYXNlIENNRF9ERUxFVEU6CisJCQlj YXNlIENNRF9MRVQ6CiAJCQkJanVua19maWx0ZXJfbmVlZGVkID0gdHJ1ZTsKIAkJCQlicmVhazsK IAkJCWRlZmF1bHQ6CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9zcGkuYyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL3NwaS5jCmluZGV4IDlmYzQ0MzFiODAuLjMxMGJjM2YyYzcgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL3NwaS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL3NwaS5jCkBAIC0yNDA0LDYgKzI0MDQsOSBAQCBfU1BJX3BxdWVyeShRdWVyeURlc2Mg KnF1ZXJ5RGVzYywgYm9vbCBmaXJlX3RyaWdnZXJzLCB1aW50NjQgdGNvdW50KQogCQkJZWxzZQog CQkJCXJlcyA9IFNQSV9PS19VUERBVEU7CiAJCQlicmVhazsKKwkJY2FzZSBDTURfTEVUOgorCQkJ cmVzID0gU1BJX09LX1VUSUxJVFk7CisJCQlicmVhazsKIAkJZGVmYXVsdDoKIAkJCXJldHVybiBT UElfRVJST1JfT1BVTktOT1dOOwogCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL2Nv cHlmdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvY29weWZ1bmNzLmMKaW5kZXggM2FkNGRhNjRh YS4uNTJiOTAyNTA2NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvY29weWZ1bmNzLmMK KysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvY29weWZ1bmNzLmMKQEAgLTMwNjYsNiArMzA2NiwxOCBA QCBfY29weVNlbGVjdFN0bXQoY29uc3QgU2VsZWN0U3RtdCAqZnJvbSkKIAlyZXR1cm4gbmV3bm9k ZTsKIH0KIAorc3RhdGljIExldFN0bXQgKgorX2NvcHlMZXRTdG10KGNvbnN0IExldFN0bXQgKmZy b20pCit7CisJTGV0U3RtdCAqbmV3bm9kZSA9IG1ha2VOb2RlKExldFN0bXQpOworCisJQ09QWV9O T0RFX0ZJRUxEKHRhcmdldCk7CisJQ09QWV9OT0RFX0ZJRUxEKHNlbGVjdFN0bXQpOworCUNPUFlf TE9DQVRJT05fRklFTEQobG9jYXRpb24pOworCisJcmV0dXJuIG5ld25vZGU7Cit9CisKIHN0YXRp YyBTZXRPcGVyYXRpb25TdG10ICoKIF9jb3B5U2V0T3BlcmF0aW9uU3RtdChjb25zdCBTZXRPcGVy YXRpb25TdG10ICpmcm9tKQogewpAQCAtNTEwNCw2ICs1MTE2LDkgQEAgY29weU9iamVjdEltcGwo Y29uc3Qgdm9pZCAqZnJvbSkKIAkJY2FzZSBUX1NlbGVjdFN0bXQ6CiAJCQlyZXR2YWwgPSBfY29w eVNlbGVjdFN0bXQoZnJvbSk7CiAJCQlicmVhazsKKwkJY2FzZSBUX0xldFN0bXQ6CisJCQlyZXR2 YWwgPSBfY29weUxldFN0bXQoZnJvbSk7CisJCQlicmVhazsKIAkJY2FzZSBUX1NldE9wZXJhdGlv blN0bXQ6CiAJCQlyZXR2YWwgPSBfY29weVNldE9wZXJhdGlvblN0bXQoZnJvbSk7CiAJCQlicmVh azsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL2VxdWFsZnVuY3MuYyBiL3NyYy9iYWNr ZW5kL25vZGVzL2VxdWFsZnVuY3MuYwppbmRleCA3NjViMWJlNzRiLi41OWM5ZmNiNGJjIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9lcXVhbGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQv bm9kZXMvZXF1YWxmdW5jcy5jCkBAIC0xMDY3LDYgKzEwNjcsMTYgQEAgX2VxdWFsU2VsZWN0U3Rt dChjb25zdCBTZWxlY3RTdG10ICphLCBjb25zdCBTZWxlY3RTdG10ICpiKQogCXJldHVybiB0cnVl OwogfQogCitzdGF0aWMgYm9vbAorX2VxdWFsTGV0U3RtdChjb25zdCBMZXRTdG10ICphLCBjb25z dCBMZXRTdG10ICpiKQoreworCUNPTVBBUkVfTk9ERV9GSUVMRCh0YXJnZXQpOworCUNPTVBBUkVf Tk9ERV9GSUVMRChzZWxlY3RTdG10KTsKKwlDT01QQVJFX0xPQ0FUSU9OX0ZJRUxEKGxvY2F0aW9u KTsKKworCXJldHVybiB0cnVlOworfQorCiBzdGF0aWMgYm9vbAogX2VxdWFsU2V0T3BlcmF0aW9u U3RtdChjb25zdCBTZXRPcGVyYXRpb25TdG10ICphLCBjb25zdCBTZXRPcGVyYXRpb25TdG10ICpi KQogewpAQCAtMzIzNiw2ICszMjQ2LDkgQEAgZXF1YWwoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9p ZCAqYikKIAkJY2FzZSBUX1NlbGVjdFN0bXQ6CiAJCQlyZXR2YWwgPSBfZXF1YWxTZWxlY3RTdG10 KGEsIGIpOwogCQkJYnJlYWs7CisJCWNhc2UgVF9MZXRTdG10OgorCQkJcmV0dmFsID0gX2VxdWFs TGV0U3RtdChhLCBiKTsKKwkJCWJyZWFrOwogCQljYXNlIFRfU2V0T3BlcmF0aW9uU3RtdDoKIAkJ CXJldHZhbCA9IF9lcXVhbFNldE9wZXJhdGlvblN0bXQoYSwgYik7CiAJCQlicmVhazsKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMv bm9kZUZ1bmNzLmMKaW5kZXggNmM3NmM0MWViZS4uN2I4MTc3ODJhMCAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1 bmNzLmMKQEAgLTM0NDQsNiArMzQ0NCwxNiBAQCByYXdfZXhwcmVzc2lvbl90cmVlX3dhbGtlcihO b2RlICpub2RlLAogCQkJCQlyZXR1cm4gdHJ1ZTsKIAkJCX0KIAkJCWJyZWFrOworCQljYXNlIFRf TGV0U3RtdDoKKwkJCXsKKwkJCQlMZXRTdG10ICpzdG10ID0gKExldFN0bXQgKikgbm9kZTsKKwor CQkJCWlmICh3YWxrZXIoc3RtdC0+dGFyZ2V0LCBjb250ZXh0KSkKKwkJCQkJcmV0dXJuIHRydWU7 CisJCQkJaWYgKHdhbGtlcihzdG10LT5zZWxlY3RTdG10LCBjb250ZXh0KSkKKwkJCQkJcmV0dXJu IHRydWU7CisJCQl9CisJCQlicmVhazsKIAkJY2FzZSBUX0FfRXhwcjoKIAkJCXsKIAkJCQlBX0V4 cHIJICAgKmV4cHIgPSAoQV9FeHByICopIG5vZGU7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9v cHRpbWl6ZXIvdXRpbC9jbGF1c2VzLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9jbGF1 c2VzLmMKaW5kZXggOTNlNTY1OGEzNS4uMWY2NTVhZjZjMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvb3B0aW1pemVyL3V0aWwvY2xhdXNlcy5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91 dGlsL2NsYXVzZXMuYwpAQCAtMTI1MSwxMiArMTI1MSwxNSBAQCBtYXhfcGFyYWxsZWxfaGF6YXJk X3dhbGtlcihOb2RlICpub2RlLCBtYXhfcGFyYWxsZWxfaGF6YXJkX2NvbnRleHQgKmNvbnRleHQp CiAJICogUEFSQU1fRVhFQyBQYXJhbXMgbGlzdGVkIGluIHNhZmVfcGFyYW1faWRzLCBtZWFuaW5n IHRoZXkgY291bGQgYmUKIAkgKiBlaXRoZXIgZ2VuZXJhdGVkIHdpdGhpbiB0aGUgd29ya2VyIG9y IGNhbiBiZSBjb21wdXRlZCBpbiBtYXN0ZXIgYW5kCiAJICogdGhlbiB0aGVpciB2YWx1ZSBjYW4g YmUgcGFzc2VkIHRvIHRoZSB3b3JrZXIuCisJICogUEFSQU1fU0NIRU1BX1ZBUklBQkxFIHBhcmFt cyBhcmUgbmV3ZXIgY2hhbmdlZCBieSB3b3JrZXJzLCBzbyB0aGV5IGNhbiBiZQorCSAqIHNhZmUu CiAJICovCiAJZWxzZSBpZiAoSXNBKG5vZGUsIFBhcmFtKSkKIAl7CiAJCVBhcmFtCSAgICpwYXJh bSA9IChQYXJhbSAqKSBub2RlOwogCi0JCWlmIChwYXJhbS0+cGFyYW1raW5kID09IFBBUkFNX0VY VEVSTikKKwkJaWYgKHBhcmFtLT5wYXJhbWtpbmQgPT0gUEFSQU1fRVhURVJOIHx8CisJCQlwYXJh bS0+cGFyYW1raW5kID09IFBBUkFNX1NDSEVNQV9WQVJJQUJMRSkKIAkJCXJldHVybiBmYWxzZTsK IAogCQlpZiAocGFyYW0tPnBhcmFta2luZCAhPSBQQVJBTV9FWEVDIHx8CkBAIC00Nzk1LDcgKzQ3 OTgsNyBAQCBzdWJzdGl0dXRlX2FjdHVhbF9wYXJhbWV0ZXJzX211dGF0b3IoTm9kZSAqbm9kZSwK IHsKIAlpZiAobm9kZSA9PSBOVUxMKQogCQlyZXR1cm4gTlVMTDsKLQlpZiAoSXNBKG5vZGUsIFBh cmFtKSkKKwlpZiAoSXNBKG5vZGUsIFBhcmFtKSAmJiAoKFBhcmFtICopIG5vZGUpLT5wYXJhbWtp bmQgIT0gUEFSQU1fU0NIRU1BX1ZBUklBQkxFKQogCXsKIAkJUGFyYW0JICAgKnBhcmFtID0gKFBh cmFtICopIG5vZGU7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9hbmFseXplLmMg Yi9zcmMvYmFja2VuZC9wYXJzZXIvYW5hbHl6ZS5jCmluZGV4IGNmMWEzNGU0MWEuLmYwZWExYTUx MWMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9hbmFseXplLmMKKysrIGIvc3JjL2Jh Y2tlbmQvcGFyc2VyL2FuYWx5emUuYwpAQCAtMjQsNiArMjQsNyBAQAogCiAjaW5jbHVkZSAicG9z dGdyZXMuaCIKIAorI2luY2x1ZGUgImFjY2Vzcy9oZWFwYW0uaCIKICNpbmNsdWRlICJhY2Nlc3Mv c3lzYXR0ci5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgogI2luY2x1ZGUgIm1pc2Nh ZG1pbi5oIgpAQCAtNDIsOCArNDMsMTIgQEAKICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfcGFyYW0u aCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfcmVsYXRpb24uaCIKICNpbmNsdWRlICJwYXJzZXIv cGFyc2VfdGFyZ2V0LmgiCisjaW5jbHVkZSAicGFyc2VyL3BhcnNlX3R5cGUuaCIKICNpbmNsdWRl ICJwYXJzZXIvcGFyc2V0cmVlLmgiCiAjaW5jbHVkZSAicmV3cml0ZS9yZXdyaXRlTWFuaXAuaCIK KyNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgorI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5o IgorI2luY2x1ZGUgInV0aWxzL3R5cGNhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsLmgiCiAK IApAQCAtNTYsNiArNjEsNyBAQCBzdGF0aWMgUXVlcnkgKnRyYW5zZm9ybUluc2VydFN0bXQoUGFy c2VTdGF0ZSAqcHN0YXRlLCBJbnNlcnRTdG10ICpzdG10KTsKIHN0YXRpYyBMaXN0ICp0cmFuc2Zv cm1JbnNlcnRSb3coUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpleHBybGlzdCwKIAkJCQkgICBM aXN0ICpzdG10Y29scywgTGlzdCAqaWNvbHVtbnMsIExpc3QgKmF0dHJub3MsCiAJCQkJICAgYm9v bCBzdHJpcF9pbmRpcmVjdGlvbik7CitzdGF0aWMgUXVlcnkgKnRyYW5zZm9ybUxldFN0bXQoUGFy c2VTdGF0ZSAqcHN0YXRlLCBMZXRTdG10ICpzdG10KTsKIHN0YXRpYyBPbkNvbmZsaWN0RXhwciAq dHJhbnNmb3JtT25Db25mbGljdENsYXVzZShQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkgIE9u Q29uZmxpY3RDbGF1c2UgKm9uQ29uZmxpY3RDbGF1c2UpOwogc3RhdGljIGludAljb3VudF9yb3dl eHByX2NvbHVtbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpleHByKTsKQEAgLTI2Nyw2ICsy NzMsNyBAQCB0cmFuc2Zvcm1TdG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqcGFyc2VUcmVl KQogCQljYXNlIFRfSW5zZXJ0U3RtdDoKIAkJY2FzZSBUX1VwZGF0ZVN0bXQ6CiAJCWNhc2UgVF9E ZWxldGVTdG10OgorCQljYXNlIFRfTGV0U3RtdDoKIAkJCSh2b2lkKSB0ZXN0X3Jhd19leHByZXNz aW9uX2NvdmVyYWdlKHBhcnNlVHJlZSwgTlVMTCk7CiAJCQlicmVhazsKIAkJZGVmYXVsdDoKQEAg LTMwNCw2ICszMTEsMTAgQEAgdHJhbnNmb3JtU3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUg KnBhcnNlVHJlZSkKIAkJCX0KIAkJCWJyZWFrOwogCisJCWNhc2UgVF9MZXRTdG10OgorCQkJcmVz dWx0ID0gdHJhbnNmb3JtTGV0U3RtdChwc3RhdGUsIChMZXRTdG10ICopIHBhcnNlVHJlZSk7CisJ CQlicmVhazsKKwogCQkJLyoKIAkJCSAqIFNwZWNpYWwgY2FzZXMKIAkJCSAqLwpAQCAtMzY3LDYg KzM3OCw3IEBAIGFuYWx5emVfcmVxdWlyZXNfc25hcHNob3QoUmF3U3RtdCAqcGFyc2VUcmVlKQog CQljYXNlIFRfRGVsZXRlU3RtdDoKIAkJY2FzZSBUX1VwZGF0ZVN0bXQ6CiAJCWNhc2UgVF9TZWxl Y3RTdG10OgorCQljYXNlIFRfTGV0U3RtdDoKIAkJCXJlc3VsdCA9IHRydWU7CiAJCQlicmVhazsK IApAQCAtMTU0OCw2ICsxNTYwLDM1NCBAQCB0cmFuc2Zvcm1WYWx1ZXNDbGF1c2UoUGFyc2VTdGF0 ZSAqcHN0YXRlLCBTZWxlY3RTdG10ICpzdG10KQogCXJldHVybiBxcnk7CiB9CiAKKy8qCisgKiB0 cmFuc2Zvcm1MZXRTdG10IC0KKyAqCSAgdHJhbnNmb3JtIGFuIExldCBTdGF0ZW1lbnQKKyAqLwor c3RhdGljIFF1ZXJ5ICoKK3RyYW5zZm9ybUxldFN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBMZXRT dG10ICpzdG10KQoreworCVF1ZXJ5CSAgICpxcnkgPSBtYWtlTm9kZShRdWVyeSk7CisJTGlzdAkg ICAqZXhwckxpc3QgPSBOSUw7CisJTGlzdAkgICAqZXhwckxpc3RDb2VyID0gTklMOworCUxpc3QJ ICAgKnN1Yl9ydGFibGU7CisJTGlzdAkgICAqc3ViX25hbWVzcGFjZTsKKwlSYW5nZVRibEVudHJ5 ICpydGU7CisJUmFuZ2VUYmxSZWYgKnJ0cjsKKwlMaXN0Q2VsbCAgICpsYzsKKwlBY2xNb2RlCQl0 YXJnZXRQZXJtczsKKwlQYXJzZVN0YXRlICpzdWJfcHN0YXRlOworCVF1ZXJ5CSAgICpzZWxlY3RR dWVyeTsKKwlpbnQJCQlpID0gMDsKKworCVJhbmdlVmFyICAgKnJ2YXI7CisJY2hhcgkgICAqc3Ry MSA9IE5VTEw7CisJY2hhcgkgICAqc3RyMiA9IE5VTEw7CisJY2hhcgkgICAqc3RyMyA9IE5VTEw7 CisJY2hhcgkgICAqZmllbGRuYW1lOworCWludAkJCWZpZWxkbmFtZV9wb3M7CisJTGlzdAkgICAq aW5kaXJlY3Rpb24gPSBOSUw7CisJaW50CQkJaW5kaXJlY3Rpb25fcG9zID0gLTE7CisKKwlSZWxh dGlvbglyZDsKKwlPaWQJCQl2YXJ0eXBpZCA9IEludmFsaWRPaWQ7CisJaW50MzIJCXZhcnR5cG1v ZCA9IC0xOworCU9pZAkJCXZhcmlkOworCisJUGFyc2VFeHByS2luZCBzdl9leHByX2tpbmQ7CisK Kwlzdl9leHByX2tpbmQgPSBwc3RhdGUtPnBfZXhwcl9raW5kOworCXBzdGF0ZS0+cF9leHByX2tp bmQgPSBFWFBSX0tJTkRfVVBEQVRFX1RBUkdFVDsKKworCS8qIFRoZXJlIGNhbid0IGJlIGFueSBv dXRlciBXSVRIIHRvIHdvcnJ5IGFib3V0ICovCisJQXNzZXJ0KHBzdGF0ZS0+cF9jdGVuYW1lc3Bh Y2UgPT0gTklMKTsKKworCXFyeS0+Y29tbWFuZFR5cGUgPSBDTURfTEVUOworCXBzdGF0ZS0+cF9p c19sZXQgPSB0cnVlOworCisJc3dpdGNoIChsaXN0X2xlbmd0aChzdG10LT50YXJnZXQpKQorCXsK KwkJY2FzZSAxOgorCQkJeworCQkJCU5vZGUJKmZpZWxkMSA9IChOb2RlICopIGxpbml0aWFsKHN0 bXQtPnRhcmdldCk7CisKKwkJCQlBc3NlcnQoSXNBKGZpZWxkMSwgU3RyaW5nKSk7CisJCQkJc3Ry MiA9IHN0clZhbChmaWVsZDEpOworCQkJfQorCQkJYnJlYWs7CisJCWNhc2UgMjoKKwkJCXsKKwkJ CQlOb2RlCSpmaWVsZDEgPSAoTm9kZSAqKSBsaW5pdGlhbChzdG10LT50YXJnZXQpOworCQkJCU5v ZGUJKmZpZWxkMiA9IChOb2RlICopIGxzZWNvbmQoc3RtdC0+dGFyZ2V0KTsKKworCQkJCUFzc2Vy dChJc0EoZmllbGQxLCBTdHJpbmcpKTsKKworCQkJCWlmIChJc0EoZmllbGQyLCBTdHJpbmcpKQor CQkJCXsKKwkJCQkJc3RyMSA9IHN0clZhbChmaWVsZDEpOworCQkJCQlzdHIyID0gc3RyVmFsKGZp ZWxkMik7CisJCQkJfQorCQkJCWVsc2UKKwkJCQl7CisJCQkJCXN0cjIgPSBzdHJWYWwoZmllbGQx KTsKKwkJCQkJaW5kaXJlY3Rpb25fcG9zID0gMjsKKwkJCQl9CisJCQl9CisJCQlicmVhazsKKwkJ Y2FzZSAzOgorCQkJeworCQkJCU5vZGUJKmZpZWxkMSA9IChOb2RlICopIGxpbml0aWFsKHN0bXQt PnRhcmdldCk7CisJCQkJTm9kZQkqZmllbGQyID0gKE5vZGUgKikgbHNlY29uZChzdG10LT50YXJn ZXQpOworCQkJCU5vZGUJKmZpZWxkMyA9IChOb2RlICopIGx0aGlyZChzdG10LT50YXJnZXQpOwor CisJCQkJQXNzZXJ0KElzQShmaWVsZDEsIFN0cmluZykpOworCisJCQkJaWYgKCFJc0EoZmllbGQy LCBTdHJpbmcpKQorCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9T WU5UQVhfRVJST1IpLAorCQkJCQkJIGVycm1zZygiYnJva2VuIHNjaGVtYSB2YXJpYWJsZSBpZGVu dGlmaWVyIiksCisJCQkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIHN0bXQtPmxvY2F0 aW9uKSkpOworCisJCQkJaWYgKElzQShmaWVsZDIsIFN0cmluZykgJiYgSXNBKGZpZWxkMywgU3Ry aW5nKSkKKwkJCQl7CisJCQkJCXN0cjEgPSBzdHJWYWwoZmllbGQxKTsKKwkJCQkJc3RyMiA9IHN0 clZhbChmaWVsZDIpOworCQkJCQlzdHIzID0gc3RyVmFsKGZpZWxkMyk7CisJCQkJfQorCQkJCWVs c2UKKwkJCQl7CisJCQkJCXN0cjEgPSBzdHJWYWwoZmllbGQxKTsKKwkJCQkJc3RyMiA9IHN0clZh bChmaWVsZDIpOworCQkJCQlpbmRpcmVjdGlvbl9wb3MgPSAzOworCQkJCX0KKwkJCX0KKwkJCWJy ZWFrOworCQljYXNlIDQ6CisJCQl7CisJCQkJTm9kZQkqZmllbGQxID0gKE5vZGUgKikgbGluaXRp YWwoc3RtdC0+dGFyZ2V0KTsKKwkJCQlOb2RlCSpmaWVsZDIgPSAoTm9kZSAqKSBsc2Vjb25kKHN0 bXQtPnRhcmdldCk7CisJCQkJTm9kZQkqZmllbGQzID0gKE5vZGUgKikgbHRoaXJkKHN0bXQtPnRh cmdldCk7CisJCQkJTm9kZQkqZmllbGQ0ID0gKE5vZGUgKikgbGZvdXJ0aChzdG10LT50YXJnZXQp OworCisJCQkJQXNzZXJ0KElzQShmaWVsZDEsIFN0cmluZykpOworCisJCQkJaWYgKElzQShmaWVs ZDIsIFN0cmluZykgJiYgSXNBKGZpZWxkMywgU3RyaW5nKSAmJiAhSXNBKGZpZWxkNCwgU3RyaW5n KSkKKwkJCQl7CisJCQkJCXN0cjEgPSBzdHJWYWwoZmllbGQxKTsKKwkJCQkJc3RyMiA9IHN0clZh bChmaWVsZDIpOworCQkJCQlzdHIzID0gc3RyVmFsKGZpZWxkMyk7CisJCQkJCWluZGlyZWN0aW9u X3BvcyA9IDQ7CisJCQkJfQorCQkJCWVsc2UKKwkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShl cnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJCSBlcnJtc2coImJyb2tlbiBzY2hl bWEgdmFyaWFibGUgaWRlbnRpZmllciIpLAorCQkJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0 YXRlLCBzdG10LT5sb2NhdGlvbikpKTsKKwkJCX0KKwkJCWJyZWFrOworCisKKwkJZGVmYXVsdDoK KwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwK KwkJCQkJIGVycm1zZygiaW1wcm9wZXIgcXVhbGlmaWVkIG5hbWUiKSwKKwkJCQkJCSBwYXJzZXJf ZXJycG9zaXRpb24ocHN0YXRlLCBzdG10LT5sb2NhdGlvbikpKTsKKwl9CisKKwlydmFyID0gbWFr ZVJhbmdlVmFyRm9yVGFyZ2V0T2ZTY2hlbWFWYXJpYWJsZShwc3RhdGUsIHN0cjEsIHN0cjIsIHN0 cjMsCisJCQkJCQkJCQkJCQkgIHN0bXQtPmxvY2F0aW9uLCAmZmllbGRuYW1lLAorCQkJCQkJCQkJ CQkJICAmZmllbGRuYW1lX3BvcywgZmFsc2UpOworCisJLyoKKwkgKiBJZiBhIG5vbi1uaWwgcmFu Z2V0YWJsZS9uYW1lc3BhY2Ugd2FzIHBhc3NlZCBpbiwgYW5kIHdlIGFyZSBkb2luZworCSAqIElO U0VSVC9TRUxFQ1QsIGFycmFuZ2UgdG8gcGFzcyB0aGUgcmFuZ2V0YWJsZS9uYW1lc3BhY2UgZG93 biB0byB0aGUKKwkgKiBTRUxFQ1QuICBUaGlzIGNhbiBvbmx5IGhhcHBlbiBpZiB3ZSBhcmUgaW5z aWRlIGEgQ1JFQVRFIFJVTEUsIGFuZCBpbgorCSAqIHRoYXQgY2FzZSB3ZSB3YW50IHRoZSBydWxl J3MgT0xEIGFuZCBORVcgcnRhYmxlIGVudHJpZXMgdG8gYXBwZWFyIGFzCisJICogcGFydCBvZiB0 aGUgU0VMRUNUJ3MgcnRhYmxlLCBub3QgYXMgb3V0ZXIgcmVmZXJlbmNlcyBmb3IgaXQuICAoS2x1 Z2UhKQorCSAqIFRoZSBTRUxFQ1QncyBqb2lubGlzdCBpcyBub3QgYWZmZWN0ZWQgaG93ZXZlci4g IFdlIG11c3QgZG8gdGhpcyBiZWZvcmUKKwkgKiBhZGRpbmcgdGhlIHRhcmdldCB0YWJsZSB0byB0 aGUgSU5TRVJUJ3MgcnRhYmxlLgorCSAqLworCXN1Yl9ydGFibGUgPSBwc3RhdGUtPnBfcnRhYmxl OworCXBzdGF0ZS0+cF9ydGFibGUgPSBOSUw7CisJc3ViX25hbWVzcGFjZSA9IHBzdGF0ZS0+cF9u YW1lc3BhY2U7CisJcHN0YXRlLT5wX25hbWVzcGFjZSA9IE5JTDsKKworCXRhcmdldFBlcm1zID0g QUNMX1VQREFURTsKKwlxcnktPnJlc3VsdFJlbGF0aW9uID0gc2V0VGFyZ2V0VGFibGUocHN0YXRl LCBydmFyLAorCQkJCQkJCQkJCSBmYWxzZSwgZmFsc2UsIHRhcmdldFBlcm1zKTsKKworCXJkID0g cHN0YXRlLT5wX3RhcmdldF9yZWxhdGlvbjsKKworCXZhcnR5cGlkID0gcmQtPnJkX3JlbC0+cmVs b2Z0eXBlOworCXZhcmlkID0gcmQtPnJkX2lkOworCisJaWYgKHZhcnR5cGlkICE9IEludmFsaWRP aWQpCisJeworCQlpZiAoZ2V0X3R5cHR5cGUodmFydHlwaWQpICE9IFRZUFRZUEVfQ09NUE9TSVRF KQorCQl7CisJCQlUdXBsZURlc2MJdHVwZGVzYzsKKwkJCVJlbGF0aW9uCXJlbDsKKwkJCUZvcm1f cGdfYXR0cmlidXRlIGF0dHJTdHJ1Y3Q7CisKKwkJCS8qIGZpbmQgZmlyc3QgZmllbGQgKi8KKwkJ CXJlbCA9IHJlbGF0aW9uX29wZW4odHlwZWlkVHlwZVJlbGlkKHJkLT5yZF9yZWwtPnJlbHR5cGUp LCBBY2Nlc3NTaGFyZUxvY2spOworCQkJdHVwZGVzYyA9IENyZWF0ZVR1cGxlRGVzY0NvcHkoUmVs YXRpb25HZXREZXNjcihyZWwpKTsKKworCQkJYXR0clN0cnVjdCA9IFR1cGxlRGVzY0F0dHIodHVw ZGVzYywgMCk7CisKKwkJCXZhcnR5cGlkID0gYXR0clN0cnVjdC0+YXR0dHlwaWQ7CisJCQl2YXJ0 eXBtb2QgPSBhdHRyU3RydWN0LT5hdHR0eXBtb2Q7CisKKwkJCUZyZWVUdXBsZURlc2ModHVwZGVz Yyk7CisJCQlyZWxhdGlvbl9jbG9zZShyZWwsIEFjY2Vzc1NoYXJlTG9jayk7CisJCX0KKwkJZWxz ZQorCQl7CisJCQl2YXJ0eXBpZCA9IHJkLT5yZF9yZWwtPnJlbG9mdHlwZTsKKwkJCXZhcnR5cG1v ZCA9IC0xOworCQl9CisJfQorCWVsc2UKKwl7CisJCXZhcnR5cGlkID0gcmQtPnJkX3JlbC0+cmVs dHlwZTsKKwkJdmFydHlwbW9kID0gLTE7CisJfQorCisJaWYgKGZpZWxkbmFtZSAhPSBOVUxMKQor CQlpbmRpcmVjdGlvbiA9IGxpc3RfY29weV90YWlsKHN0bXQtPnRhcmdldCwgZmllbGRuYW1lX3Bv cyAtIDEpOworCWVsc2UgaWYgKGluZGlyZWN0aW9uX3BvcyA+PSAyKQorCQlpbmRpcmVjdGlvbiA9 IGxpc3RfY29weV90YWlsKHN0bXQtPnRhcmdldCwgaW5kaXJlY3Rpb25fcG9zIC0gMSk7CisKKwkv KgorCSAqIFdlIG1ha2UgdGhlIHN1Yi1wc3RhdGUgYSBjaGlsZCBvZiB0aGUgb3V0ZXIgcHN0YXRl IHNvIHRoYXQgaXQgY2FuCisJICogc2VlIGFueSBQYXJhbSBkZWZpbml0aW9ucyBzdXBwbGllZCBm cm9tIGFib3ZlLiAgU2luY2UgdGhlIG91dGVyCisJICogcHN0YXRlJ3MgcnRhYmxlIGFuZCBuYW1l c3BhY2UgYXJlIHByZXNlbnRseSBlbXB0eSwgdGhlcmUgYXJlIG5vCisJICogc2lkZS1lZmZlY3Rz IG9mIGV4cG9zaW5nIG5hbWVzIHRoZSBzdWItU0VMRUNUIHNob3VsZG4ndCBiZSBhYmxlIHRvCisJ ICogc2VlLgorCSAqLworCXN1Yl9wc3RhdGUgPSBtYWtlX3BhcnNlc3RhdGUocHN0YXRlKTsKKwor CS8qCisJICogUHJvY2VzcyB0aGUgc291cmNlIFNFTEVDVC4KKwkgKgorCSAqIEl0IGlzIGltcG9y dGFudCB0aGF0IHRoaXMgYmUgaGFuZGxlZCBqdXN0IGxpa2UgYSBzdGFuZGFsb25lIFNFTEVDVDsK KwkgKiBvdGhlcndpc2UgdGhlIGJlaGF2aW9yIG9mIFNFTEVDVCB3aXRoaW4gSU5TRVJUIG1pZ2h0 IGJlIGRpZmZlcmVudAorCSAqIGZyb20gYSBzdGFuZC1hbG9uZSBTRUxFQ1QuIChJbmRlZWQsIFBv c3RncmVzIHVwIHRocm91Z2ggNi41IGhhZAorCSAqIGJ1Z3Mgb2YganVzdCB0aGF0IG5hdHVyZS4u LikKKwkgKgorCSAqIFRoZSBzb2xlIGV4Y2VwdGlvbiBpcyB0aGF0IHdlIHByZXZlbnQgcmVzb2x2 aW5nIHVua25vd24tdHlwZQorCSAqIG91dHB1dHMgYXMgVEVYVC4gIFRoaXMgZG9lcyBub3QgY2hh bmdlIHRoZSBzZW1hbnRpY3Mgc2luY2UgaWYgdGhlCisJICogY29sdW1uIHR5cGUgbWF0dGVycyBz ZW1hbnRpY2FsbHksIGl0IHdvdWxkIGhhdmUgYmVlbiByZXNvbHZlZCB0bworCSAqIHNvbWV0aGlu ZyBlbHNlIGFueXdheS4gIERvaW5nIHRoaXMgbGV0cyB1cyByZXNvbHZlIHN1Y2ggb3V0cHV0cyBh cworCSAqIHRoZSB0YXJnZXQgY29sdW1uJ3MgdHlwZSwgd2hpY2ggd2UgaGFuZGxlIGJlbG93Lgor CSAqLworCXN1Yl9wc3RhdGUtPnBfcnRhYmxlID0gc3ViX3J0YWJsZTsKKwlzdWJfcHN0YXRlLT5w X2pvaW5leHBycyA9IE5JTDsJLyogc3ViX3J0YWJsZSBoYXMgbm8gam9pbnMgKi8KKwlzdWJfcHN0 YXRlLT5wX25hbWVzcGFjZSA9IHN1Yl9uYW1lc3BhY2U7CisJc3ViX3BzdGF0ZS0+cF9yZXNvbHZl X3Vua25vd25zID0gZmFsc2U7CisKKwlzZWxlY3RRdWVyeSA9IHRyYW5zZm9ybVN0bXQoc3ViX3Bz dGF0ZSwgc3RtdC0+c2VsZWN0U3RtdCk7CisKKwlmcmVlX3BhcnNlc3RhdGUoc3ViX3BzdGF0ZSk7 CisKKwkvKiBUaGUgZ3JhbW1hciBzaG91bGQgaGF2ZSBwcm9kdWNlZCBhIFNFTEVDVCAqLworCWlm ICghSXNBKHNlbGVjdFF1ZXJ5LCBRdWVyeSkgfHwKKwkJc2VsZWN0UXVlcnktPmNvbW1hbmRUeXBl ICE9IENNRF9TRUxFQ1QpCisJCWVsb2coRVJST1IsICJ1bmV4cGVjdGVkIG5vbi1TRUxFQ1QgY29t bWFuZCBpbiBMRVQgLi4uIFNFTEVDVCIpOworCisJLyoKKwkgKiBNYWtlIHRoZSBzb3VyY2UgYmUg YSBzdWJxdWVyeSBpbiB0aGUgTEVUJ3MgcmFuZ2V0YWJsZSwgYW5kIGFkZAorCSAqIGl0IHRvIHRo ZSBMRVQncyBqb2lubGlzdC4KKwkgKi8KKwlydGUgPSBhZGRSYW5nZVRhYmxlRW50cnlGb3JTdWJx dWVyeShwc3RhdGUsCisJCQkJCQkJCQkJc2VsZWN0UXVlcnksCisJCQkJCQkJCQkJbWFrZUFsaWFz KCIqU0VMRUNUKiIsIE5JTCksCisJCQkJCQkJCQkJZmFsc2UsCisJCQkJCQkJCQkJZmFsc2UpOwor CXJ0ciA9IG1ha2VOb2RlKFJhbmdlVGJsUmVmKTsKKwkvKiBhc3N1bWUgbmV3IHJ0ZSBpcyBhdCBl bmQgKi8KKwlydHItPnJ0aW5kZXggPSBsaXN0X2xlbmd0aChwc3RhdGUtPnBfcnRhYmxlKTsKKwlB c3NlcnQocnRlID09IHJ0X2ZldGNoKHJ0ci0+cnRpbmRleCwgcHN0YXRlLT5wX3J0YWJsZSkpOwor CXBzdGF0ZS0+cF9qb2lubGlzdCA9IGxhcHBlbmQocHN0YXRlLT5wX2pvaW5saXN0LCBydHIpOwor CisJLyotLS0tLS0tLS0tCisJICogR2VuZXJhdGUgYW4gZXhwcmVzc2lvbiBsaXN0IGZvciB0aGUg TEVUIHRoYXQgc2VsZWN0cyBhbGwgdGhlCisJICogbm9uLXJlc2p1bmsgY29sdW1ucyBmcm9tIHRo ZSBzdWJxdWVyeS4gCisJICotLS0tLS0tLS0tCisJICovCisKKwlleHByTGlzdCA9IE5JTDsKKwlm b3JlYWNoKGxjLCBzZWxlY3RRdWVyeS0+dGFyZ2V0TGlzdCkKKwl7CisJCVRhcmdldEVudHJ5ICp0 bGUgPSAoVGFyZ2V0RW50cnkgKikgbGZpcnN0KGxjKTsKKworCQlpZiAodGxlLT5yZXNqdW5rKQor CQkJY29udGludWU7CisKKwkJZXhwckxpc3QgPSBsYXBwZW5kKGV4cHJMaXN0LCB0bGUtPmV4cHIp OworCX0KKworCS8qCisJICogQmVjYXVzZSBkb2Vzbid0IHN1cHBvcnQgcGF0dGVybiBtYXRjaGlu ZywgZG9uJ3QgYWxsb3cgbXVsdGljb2x1bW4gcmVzdWx0CisJICovCisJaWYgKGxpc3RfbGVuZ3Ro KGV4cHJMaXN0KSAhPSAxKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVf U1lOVEFYX0VSUk9SKSwKKwkJCQkgZXJybXNnKCJleHByZXNzaW9uIGlzIG5vdCBzY2FsYXIgdmFs dWUiKSwKKwkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwKKwkJCQkJCQkJCWV4cHJMb2Nh dGlvbigoTm9kZSAqKSBleHByTGlzdCkpKSk7CisKKwlleHByTGlzdENvZXIgPSBOSUw7CisJZm9y ZWFjaChsYywgZXhwckxpc3QpCisJeworCQlOb2RlCSAgICpvcmlnX2V4cHIgPSAoTm9kZSopIGxm aXJzdChsYyk7CisJCU9pZAkJCWV4cHJ0eXBpZCA9IGV4cHJUeXBlKChOb2RlICopIG9yaWdfZXhw cik7CisJCUV4cHIJICAgKmV4cHIgPSBOVUxMOworCQlQYXJhbSAqcGFyYW0gPSBtYWtlTm9kZShQ YXJhbSk7CisKKwkJcGFyYW0tPnBhcmFta2luZCA9IFBBUkFNX1NDSEVNQV9WQVJJQUJMRTsKKwkJ cGFyYW0tPnBhcmFtaWQgPSB2YXJpZDsKKwkJcGFyYW0tPnBhcmFtdHlwZSA9IHZhcnR5cGlkOwor CQlwYXJhbS0+cGFyYW10eXBtb2QgPSB2YXJ0eXBtb2Q7CisKKwkJZXhwciA9IChFeHByICopCisJ CQl0cmFuc2Zvcm1Bc3NpZ25tZW50SW5kaXJlY3Rpb24ocHN0YXRlLAorCQkJCQkJCQkJCQkoTm9k ZSAqKSBwYXJhbSwKKwkJCQkJCQkJCQkJZmllbGRuYW1lLAorCQkJCQkJCQkJCQlmYWxzZSwKKwkJ CQkJCQkJCQkJdmFydHlwaWQsCisJCQkJCQkJCQkJCXZhcnR5cG1vZCwKKwkJCQkJCQkJCQkJSW52 YWxpZE9pZCwKKwkJCQkJCQkJCQkJbGlzdF9oZWFkKGluZGlyZWN0aW9uKSwKKwkJCQkJCQkJCQkJ KE5vZGUgKikgb3JpZ19leHByLAorCQkJCQkJCQkJCQktMSk7CisKKwkJaWYgKGV4cHIgPT0gTlVM TCkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfREFUQVRZUEVfTUlT TUFUQ0gpLAorCQkJCQkgZXJybXNnKCJ2YXJpYWJsZSBcIiVzXCIgaXMgb2YgdHlwZSAlcyIKKwkJ CQkJCQkgICIgYnV0IGV4cHJlc3Npb24gaXMgb2YgdHlwZSAlcyIsCisJCQkJCQkJUmVsYXRpb25H ZXRSZWxhdGlvbk5hbWUocmQpLAorCQkJCQkJCWZvcm1hdF90eXBlX2JlKHZhcnR5cGlkKSwKKwkJ CQkJCQlmb3JtYXRfdHlwZV9iZShleHBydHlwaWQpKSwKKwkJCQkgZXJyaGludCgiWW91IHdpbGwg bmVlZCB0byByZXdyaXRlIG9yIGNhc3QgdGhlIGV4cHJlc3Npb24uIiksCisJCQkJIHBhcnNlcl9l cnJwb3NpdGlvbihwc3RhdGUsIGV4cHJMb2NhdGlvbigoTm9kZSAqKSBvcmlnX2V4cHIpKSkpOwor CisJCWV4cHJMaXN0Q29lciA9IGxhcHBlbmQoZXhwckxpc3RDb2VyLCBleHByKTsKKwl9CisKKwkv KgorCSAqIEdlbmVyYXRlIHF1ZXJ5J3MgdGFyZ2V0IGxpc3QgdXNpbmcgdGhlIGNvbXB1dGVkIGxp c3Qgb2YgZXhwcmVzc2lvbnMuCisJICogQWxzbywgbWFyayBhbGwgdGhlIHRhcmdldCBjb2x1bW5z IGFzIG5lZWRpbmcgaW5zZXJ0IHBlcm1pc3Npb25zLgorCSAqLworCXJ0ZSA9IHBzdGF0ZS0+cF90 YXJnZXRfcmFuZ2V0YmxlbnRyeTsKKwlxcnktPnRhcmdldExpc3QgPSBOSUw7CisJZm9yZWFjaChs YywgZXhwckxpc3RDb2VyKQorCXsKKwkJRXhwcgkgICAqZXhwciA9IChFeHByICopIGxmaXJzdChs Yyk7CisJCVRhcmdldEVudHJ5ICp0bGU7CisKKwkJdGxlID0gbWFrZVRhcmdldEVudHJ5KGV4cHIs CisJCQkJCQkJICBpICsgMSwKKwkJCQkJCQkgIEZpZ3VyZUNvbG5hbWUoKE5vZGUgKilleHByKSwK KwkJCQkJCQkgIGZhbHNlKTsKKwkJcXJ5LT50YXJnZXRMaXN0ID0gbGFwcGVuZChxcnktPnRhcmdl dExpc3QsIHRsZSk7CisJfQorCisJLyogZG9uZSBidWlsZGluZyB0aGUgcmFuZ2UgdGFibGUgYW5k IGpvaW50cmVlICovCisJcXJ5LT5ydGFibGUgPSBwc3RhdGUtPnBfcnRhYmxlOworCXFyeS0+am9p bnRyZWUgPSBtYWtlRnJvbUV4cHIocHN0YXRlLT5wX2pvaW5saXN0LCBOVUxMKTsKKworCXFyeS0+ aGFzVGFyZ2V0U1JGcyA9IHBzdGF0ZS0+cF9oYXNUYXJnZXRTUkZzOworCXFyeS0+aGFzU3ViTGlu a3MgPSBwc3RhdGUtPnBfaGFzU3ViTGlua3M7CisKKwlhc3NpZ25fcXVlcnlfY29sbGF0aW9ucyhw c3RhdGUsIHFyeSk7CisKKwlwc3RhdGUtPnBfZXhwcl9raW5kID0gc3ZfZXhwcl9raW5kOworCisJ cmV0dXJuIHFyeTsKK30KKwogLyoKICAqIHRyYW5zZm9ybVNldE9wZXJhdGlvblN0bXQgLQogICoJ ICB0cmFuc2Zvcm1zIGEgc2V0LW9wZXJhdGlvbnMgdHJlZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvcGFyc2VyL2dyYW0ueSBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKaW5kZXggY2Q1YmEy ZDRkOC4uNzM3MWIxZGZhYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQor KysgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CkBAIC0xNTcsNiArMTU3LDggQEAgc3RhdGlj IFJvbGVTcGVjICptYWtlUm9sZVNwZWMoUm9sZVNwZWNUeXBlIHR5cGUsIGludCBsb2NhdGlvbik7 CiBzdGF0aWMgdm9pZCBjaGVja19xdWFsaWZpZWRfbmFtZShMaXN0ICpuYW1lcywgY29yZV95eXNj YW5fdCB5eXNjYW5uZXIpOwogc3RhdGljIExpc3QgKmNoZWNrX2Z1bmNfbmFtZShMaXN0ICpuYW1l cywgY29yZV95eXNjYW5fdCB5eXNjYW5uZXIpOwogc3RhdGljIExpc3QgKmNoZWNrX2luZGlyZWN0 aW9uKExpc3QgKmluZGlyZWN0aW9uLCBjb3JlX3l5c2Nhbl90IHl5c2Nhbm5lcik7CitzdGF0aWMg TGlzdCAqY2hlY2tfaW5kaXJlY3Rpb25fbGV0KExpc3QgKmluZGlyZWN0aW9uLCBjb3JlX3l5c2Nh bl90IHl5c2Nhbm5lcik7CisKIHN0YXRpYyBMaXN0ICpleHRyYWN0QXJnVHlwZXMoTGlzdCAqcGFy YW1ldGVycyk7CiBzdGF0aWMgTGlzdCAqZXh0cmFjdEFnZ3JBcmdUeXBlcyhMaXN0ICphZ2dyYXJn cyk7CiBzdGF0aWMgTGlzdCAqbWFrZU9yZGVyZWRTZXRBcmdzKExpc3QgKmRpcmVjdGFyZ3MsIExp c3QgKm9yZGVyZWRhcmdzLApAQCAtMjU3LDggKzI1OSw4IEBAIHN0YXRpYyBOb2RlICptYWtlUmVj dXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVy eSk7CiAJCUNvbnN0cmFpbnRzU2V0U3RtdCBDb3B5U3RtdCBDcmVhdGVBc1N0bXQgQ3JlYXRlQ2Fz dFN0bXQKIAkJQ3JlYXRlRG9tYWluU3RtdCBDcmVhdGVFeHRlbnNpb25TdG10IENyZWF0ZUdyb3Vw U3RtdCBDcmVhdGVPcENsYXNzU3RtdAogCQlDcmVhdGVPcEZhbWlseVN0bXQgQWx0ZXJPcEZhbWls eVN0bXQgQ3JlYXRlUExhbmdTdG10Ci0JCUNyZWF0ZVNjaGVtYVN0bXQgQ3JlYXRlU2VxU3RtdCBD cmVhdGVTdG10IENyZWF0ZVN0YXRzU3RtdCBDcmVhdGVUYWJsZVNwYWNlU3RtdAotCQlDcmVhdGVG ZHdTdG10IENyZWF0ZUZvcmVpZ25TZXJ2ZXJTdG10IENyZWF0ZUZvcmVpZ25UYWJsZVN0bXQKKwkJ Q3JlYXRlU2NoZW1hU3RtdCBDcmVhdGVTY2hlbWFWYXJTdG10IENyZWF0ZVNlcVN0bXQgQ3JlYXRl U3RtdCBDcmVhdGVTdGF0c1N0bXQKKwkJQ3JlYXRlVGFibGVTcGFjZVN0bXQgQ3JlYXRlRmR3U3Rt dCBDcmVhdGVGb3JlaWduU2VydmVyU3RtdCBDcmVhdGVGb3JlaWduVGFibGVTdG10CiAJCUNyZWF0 ZUFzc2VydFN0bXQgQ3JlYXRlVHJhbnNmb3JtU3RtdCBDcmVhdGVUcmlnU3RtdCBDcmVhdGVFdmVu dFRyaWdTdG10CiAJCUNyZWF0ZVVzZXJTdG10IENyZWF0ZVVzZXJNYXBwaW5nU3RtdCBDcmVhdGVS b2xlU3RtdCBDcmVhdGVQb2xpY3lTdG10CiAJCUNyZWF0ZWRiU3RtdCBEZWNsYXJlQ3Vyc29yU3Rt dCBEZWZpbmVTdG10IERlbGV0ZVN0bXQgRGlzY2FyZFN0bXQgRG9TdG10CkBAIC0yNjgsNyArMjcw LDcgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUs IExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAkJRHJvcFRyYW5zZm9ybVN0bXQKIAkJRHJv cFVzZXJNYXBwaW5nU3RtdCBFeHBsYWluU3RtdCBGZXRjaFN0bXQKIAkJR3JhbnRTdG10IEdyYW50 Um9sZVN0bXQgSW1wb3J0Rm9yZWlnblNjaGVtYVN0bXQgSW5kZXhTdG10IEluc2VydFN0bXQKLQkJ TGlzdGVuU3RtdCBMb2FkU3RtdCBMb2NrU3RtdCBOb3RpZnlTdG10IEV4cGxhaW5hYmxlU3RtdCBQ cmVwYXJhYmxlU3RtdAorCQlMZXRTdG10IExpc3RlblN0bXQgTG9hZFN0bXQgTG9ja1N0bXQgTm90 aWZ5U3RtdCBFeHBsYWluYWJsZVN0bXQgUHJlcGFyYWJsZVN0bXQKIAkJQ3JlYXRlRnVuY3Rpb25T dG10IEFsdGVyRnVuY3Rpb25TdG10IFJlaW5kZXhTdG10IFJlbW92ZUFnZ3JTdG10CiAJCVJlbW92 ZUZ1bmNTdG10IFJlbW92ZU9wZXJTdG10IFJlbmFtZVN0bXQgUmV2b2tlU3RtdCBSZXZva2VSb2xl U3RtdAogCQlSdWxlQWN0aW9uU3RtdCBSdWxlQWN0aW9uU3RtdE9yRW1wdHkgUnVsZVN0bXQKQEAg LTU4Myw2ICs1ODUsOSBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hh ciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogJXR5cGUgPG5vZGU+CQlw YXJ0Ym91bmRfZGF0dW0gUGFydGl0aW9uUmFuZ2VEYXR1bQogJXR5cGUgPGxpc3Q+CQloYXNoX3Bh cnRib3VuZCBwYXJ0Ym91bmRfZGF0dW1fbGlzdCByYW5nZV9kYXR1bV9saXN0CiAldHlwZSA8ZGVm ZWx0PgkJaGFzaF9wYXJ0Ym91bmRfZWxlbQorJXR5cGUgPGxpc3Q+CWZpZWxkTGlzdAorJXR5cGUg PG5vZGU+CWZpZWxkRGVmIG9wdFNjaGVtYVZhckRlZkV4cHIKKyV0eXBlIDxsaXN0PglzY2hlbWF2 YXJfbmFtZQogCiAvKgogICogTm9uLWtleXdvcmQgdG9rZW4gdHlwZXMuICBUaGVzZSBhcmUgaGFy ZC13aXJlZCBpbnRvIHRoZSAiZmxleCIgbGV4ZXIuCkBAIC02NDgsNyArNjUzLDcgQEAgc3RhdGlj IE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFz ZXMsIE5vZGUgKnF1ZXJ5KTsKIAlLRVkKIAogCUxBQkVMIExBTkdVQUdFIExBUkdFX1AgTEFTVF9Q IExBVEVSQUxfUAotCUxFQURJTkcgTEVBS1BST09GIExFQVNUIExFRlQgTEVWRUwgTElLRSBMSU1J VCBMSVNURU4gTE9BRCBMT0NBTAorCUxFQURJTkcgTEVBS1BST09GIExFQVNUIExFRlQgTEVUIExF VkVMIExJS0UgTElNSVQgTElTVEVOIExPQUQgTE9DQUwKIAlMT0NBTFRJTUUgTE9DQUxUSU1FU1RB TVAgTE9DQVRJT04gTE9DS19QIExPQ0tFRCBMT0dHRUQKIAogCU1BUFBJTkcgTUFUQ0ggTUFURVJJ QUxJWkVEIE1BWFZBTFVFIE1FVEhPRCBNSU5VVEVfUCBNSU5WQUxVRSBNT0RFIE1PTlRIX1AgTU9W RQpAQCAtNjg2LDggKzY5MSw4IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVj dChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJVU5CT1VOREVE IFVOQ09NTUlUVEVEIFVORU5DUllQVEVEIFVOSU9OIFVOSVFVRSBVTktOT1dOIFVOTElTVEVOIFVO TE9HR0VECiAJVU5USUwgVVBEQVRFIFVTRVIgVVNJTkcKIAotCVZBQ1VVTSBWQUxJRCBWQUxJREFU RSBWQUxJREFUT1IgVkFMVUVfUCBWQUxVRVMgVkFSQ0hBUiBWQVJJQURJQyBWQVJZSU5HCi0JVkVS Qk9TRSBWRVJTSU9OX1AgVklFVyBWSUVXUyBWT0xBVElMRQorCVZBQ1VVTSBWQUxJRCBWQUxJREFU RSBWQUxJREFUT1IgVkFMVUVfUCBWQUxVRVMgVkFSQ0hBUiBWQVJJQUJMRSBWQVJJQUJMRVMKKwlW QVJJQURJQyBWQVJZSU5HIFZFUkJPU0UgVkVSU0lPTl9QIFZJRVcgVklFV1MgVk9MQVRJTEUKIAog CVdIRU4gV0hFUkUgV0hJVEVTUEFDRV9QIFdJTkRPVyBXSVRIIFdJVEhJTiBXSVRIT1VUIFdPUksg V1JBUFBFUiBXUklURQogCkBAIC04NzgsNiArODgzLDcgQEAgc3RtdCA6CiAJCQl8IENyZWF0ZVBM YW5nU3RtdAogCQkJfCBDcmVhdGVTY2hlbWFTdG10CiAJCQl8IENyZWF0ZVNlcVN0bXQKKwkJCXwg Q3JlYXRlU2NoZW1hVmFyU3RtdAogCQkJfCBDcmVhdGVTdG10CiAJCQl8IENyZWF0ZVN1YnNjcmlw dGlvblN0bXQKIAkJCXwgQ3JlYXRlU3RhdHNTdG10CkBAIC05MTksNiArOTI1LDcgQEAgc3RtdCA6 CiAJCQl8IExpc3RlblN0bXQKIAkJCXwgUmVmcmVzaE1hdFZpZXdTdG10CiAJCQl8IExvYWRTdG10 CisJCQl8IExldFN0bXQKIAkJCXwgTG9ja1N0bXQKIAkJCXwgTm90aWZ5U3RtdAogCQkJfCBQcmVw YXJlU3RtdApAQCAtMTM3OSw2ICsxMzg2LDcgQEAgc2NoZW1hX3N0bXQ6CiAJCQlDcmVhdGVTdG10 CiAJCQl8IEluZGV4U3RtdAogCQkJfCBDcmVhdGVTZXFTdG10CisJCQl8IENyZWF0ZVNjaGVtYVZh clN0bXQKIAkJCXwgQ3JlYXRlVHJpZ1N0bXQKIAkJCXwgR3JhbnRTdG10CiAJCQl8IFZpZXdTdG10 CkBAIC0xODA3LDcgKzE4MTUsMTIgQEAgRGlzY2FyZFN0bXQ6CiAJCQkJCW4tPnRhcmdldCA9IERJ U0NBUkRfU0VRVUVOQ0VTOwogCQkJCQkkJCA9IChOb2RlICopIG47CiAJCQkJfQotCisJCQl8IERJ U0NBUkQgVkFSSUFCTEVTCisJCQkJeworCQkJCQlEaXNjYXJkU3RtdCAqbiA9IG1ha2VOb2RlKERp c2NhcmRTdG10KTsKKwkJCQkJbi0+dGFyZ2V0ID0gRElTQ0FSRF9WQVJJQUJMRVM7CisJCQkJCSQk ID0gKE5vZGUgKikgbjsKKwkJCQl9CiAJCTsKIAogCkBAIC0yMDAzLDYgKzIwMTYsMjQgQEAgQWx0 ZXJUYWJsZVN0bXQ6CiAJCQkJCW4tPm5vd2FpdCA9ICQxNDsKIAkJCQkJJCQgPSAoTm9kZSAqKW47 CiAJCQkJfQorCQl8CUFMVEVSIFZBUklBQkxFIHF1YWxpZmllZF9uYW1lIGFsdGVyX3RhYmxlX2Nt ZHMKKwkJCQl7CisJCQkJCUFsdGVyVGFibGVTdG10ICpuID0gbWFrZU5vZGUoQWx0ZXJUYWJsZVN0 bXQpOworCQkJCQluLT5yZWxhdGlvbiA9ICQzOworCQkJCQluLT5jbWRzID0gJDQ7CisJCQkJCW4t PnJlbGtpbmQgPSBPQkpFQ1RfVkFSSUFCTEU7CisJCQkJCW4tPm1pc3Npbmdfb2sgPSBmYWxzZTsK KwkJCQkJJCQgPSAoTm9kZSAqKW47CisJCQkJfQorCQl8CUFMVEVSIFZBUklBQkxFIElGX1AgRVhJ U1RTIHF1YWxpZmllZF9uYW1lIGFsdGVyX3RhYmxlX2NtZHMKKwkJCQl7CisJCQkJCUFsdGVyVGFi bGVTdG10ICpuID0gbWFrZU5vZGUoQWx0ZXJUYWJsZVN0bXQpOworCQkJCQluLT5yZWxhdGlvbiA9 ICQ1OworCQkJCQluLT5jbWRzID0gJDY7CisJCQkJCW4tPnJlbGtpbmQgPSBPQkpFQ1RfVkFSSUFC TEU7CisJCQkJCW4tPm1pc3Npbmdfb2sgPSB0cnVlOworCQkJCQkkJCA9IChOb2RlICopbjsKKwkJ CQl9CiAJCTsKIAogYWx0ZXJfdGFibGVfY21kczoKQEAgLTQyNzUsNiArNDMwNiw4NiBAQCBOdW1l cmljT25seV9saXN0OglOdW1lcmljT25seQkJCQkJCXsgJCQgPSBsaXN0X21ha2UxKCQxKTsgfQog CQkJCXwgTnVtZXJpY09ubHlfbGlzdCAnLCcgTnVtZXJpY09ubHkJeyAkJCA9IGxhcHBlbmQoJDEs ICQzKTsgfQogCQk7CiAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqCQlRVUVSWSA6Cisg KgkJCQlDUkVBVEUgVkFSSUFCTEUgc2VxbmFtZSBbQVNdIHR5cGUKKyAqCisgKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKiovCisKK0NyZWF0ZVNjaGVtYVZhclN0bXQ6CisJCQlDUkVBVEUgT3B0VGVtcCBWQVJJ QUJMRSBxdWFsaWZpZWRfbmFtZSBvcHRfYXMgVHlwZW5hbWUgb3B0U2NoZW1hVmFyRGVmRXhwcgor CQkJCXsKKwkJCQkJQ3JlYXRlU2NoZW1hVmFyU3RtdCAqbiA9IG1ha2VOb2RlKENyZWF0ZVNjaGVt YVZhclN0bXQpOworCQkJCQkkNC0+cmVscGVyc2lzdGVuY2UgPSAkMjsKKwkJCQkJbi0+dmFyaWFi bGUgPSAkNDsKKwkJCQkJbi0+dHlwZU5hbWUgPSAkNjsKKwkJCQkJbi0+ZGVmZXhwciA9ICQ3Owor CQkJCQluLT5maWVsZHMgPSBOVUxMOworCQkJCQluLT5pZl9ub3RfZXhpc3RzID0gZmFsc2U7CisJ CQkJCSQkID0gKE5vZGUgKiluOworCQkJCX0KKwkJCXwgQ1JFQVRFIE9wdFRlbXAgVkFSSUFCTEUg SUZfUCBOT1QgRVhJU1RTIHF1YWxpZmllZF9uYW1lIG9wdF9hcyBUeXBlbmFtZSBvcHRTY2hlbWFW YXJEZWZFeHByCisJCQkJeworCQkJCQlDcmVhdGVTY2hlbWFWYXJTdG10ICpuID0gbWFrZU5vZGUo Q3JlYXRlU2NoZW1hVmFyU3RtdCk7CisJCQkJCSQ3LT5yZWxwZXJzaXN0ZW5jZSA9ICQyOworCQkJ CQluLT52YXJpYWJsZSA9ICQ3OworCQkJCQluLT50eXBlTmFtZSA9ICQ5OworCQkJCQluLT5kZWZl eHByID0gJDEwOworCQkJCQluLT5maWVsZHMgPSBOVUxMOworCQkJCQluLT5pZl9ub3RfZXhpc3Rz ID0gdHJ1ZTsKKwkJCQkJJCQgPSAoTm9kZSAqKW47CisJCQkJfQorCQkJfCBDUkVBVEUgT3B0VGVt cCBWQVJJQUJMRSBxdWFsaWZpZWRfbmFtZSBvcHRfYXMgJygnIGZpZWxkTGlzdCAnKScKKwkJCQl7 CisJCQkJCUNyZWF0ZVNjaGVtYVZhclN0bXQgKm4gPSBtYWtlTm9kZShDcmVhdGVTY2hlbWFWYXJT dG10KTsKKwkJCQkJJDQtPnJlbHBlcnNpc3RlbmNlID0gJDI7CisJCQkJCW4tPnZhcmlhYmxlID0g JDQ7CisJCQkJCW4tPnR5cGVOYW1lID0gTlVMTDsKKwkJCQkJbi0+ZmllbGRzID0gJDc7CisJCQkJ CW4tPmlmX25vdF9leGlzdHMgPSBmYWxzZTsKKwkJCQkJJCQgPSAoTm9kZSAqKW47CisJCQkJfQor CQkJfCBDUkVBVEUgT3B0VGVtcCBWQVJJQUJMRSBJRl9QIE5PVCBFWElTVFMgcXVhbGlmaWVkX25h bWUgb3B0X2FzICcoJyBmaWVsZExpc3QgJyknCisJCQkJeworCQkJCQlDcmVhdGVTY2hlbWFWYXJT dG10ICpuID0gbWFrZU5vZGUoQ3JlYXRlU2NoZW1hVmFyU3RtdCk7CisJCQkJCSQ3LT5yZWxwZXJz aXN0ZW5jZSA9ICQyOworCQkJCQluLT52YXJpYWJsZSA9ICQ3OworCQkJCQluLT50eXBlTmFtZSA9 IE5VTEw7CisJCQkJCW4tPmZpZWxkcyA9ICQxMDsKKwkJCQkJbi0+aWZfbm90X2V4aXN0cyA9IHRy dWU7CisJCQkJCSQkID0gKE5vZGUgKiluOworCQkJCX0KKwkJOworCitvcHRTY2hlbWFWYXJEZWZF eHByOiBERUZBVUxUIGJfZXhwcgkJCQkJeyAkJCA9ICQyOyB9CisJCQl8IC8qIEVNUFRZICovCQkJ CQkJCXsgJCQgPSBOVUxMOyB9CisJCTsKKworZmllbGRMaXN0OgorCQkJZmllbGREZWYJCQkJCQkJ CXsgJCQgPSBsaXN0X21ha2UxKCQxKTsgfQorCQkJfCBmaWVsZExpc3QgJywnIGZpZWxkRGVmCQkJ CXsgJCQgPSBsYXBwZW5kKCQxLCAkMyk7IH0KKwkJOworCitmaWVsZERlZjoJQ29sSWQgVHlwZW5h bWUgb3B0U2NoZW1hVmFyRGVmRXhwcgorCQkJCXsKKwkJCQkJQ29sdW1uRGVmICpuID0gbWFrZU5v ZGUoQ29sdW1uRGVmKTsKKwkJCQkJbi0+Y29sbmFtZSA9ICQxOworCQkJCQluLT50eXBlTmFtZSA9 ICQyOworCQkJCQluLT5pbmhjb3VudCA9IDA7CisJCQkJCW4tPmlzX2xvY2FsID0gdHJ1ZTsKKwkJ CQkJbi0+aXNfbm90X251bGwgPSBmYWxzZTsKKwkJCQkJbi0+aXNfZnJvbV90eXBlID0gZmFsc2U7 CisJCQkJCW4tPmlzX2Zyb21fcGFyZW50ID0gZmFsc2U7CisJCQkJCW4tPnN0b3JhZ2UgPSAwOwor CQkJCQluLT5yYXdfZGVmYXVsdCA9ICQzOworCQkJCQluLT5jb29rZWRfZGVmYXVsdCA9IE5VTEw7 CisJCQkJCW4tPmNvbGxPaWQgPSBJbnZhbGlkT2lkOworCQkJCQluLT5sb2NhdGlvbiA9IEAxOwor CQkJCQkkJCA9IChOb2RlICopbjsKKwkJCQl9CisJCTsKKwogLyoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq CiAgKgogICoJCVFVRVJJRVMgOgpAQCAtNjMyMyw2ICs2NDM0LDcgQEAgZHJvcF90eXBlX2FueV9u YW1lOgogCQkJfCBURVhUX1AgU0VBUkNIIERJQ1RJT05BUlkJCQkJeyAkJCA9IE9CSkVDVF9UU0RJ Q1RJT05BUlk7IH0KIAkJCXwgVEVYVF9QIFNFQVJDSCBURU1QTEFURQkJCQl7ICQkID0gT0JKRUNU X1RTVEVNUExBVEU7IH0KIAkJCXwgVEVYVF9QIFNFQVJDSCBDT05GSUdVUkFUSU9OCQkJeyAkJCA9 IE9CSkVDVF9UU0NPTkZJR1VSQVRJT047IH0KKwkJCXwgVkFSSUFCTEUJCQkJCQkJCXsgJCQgPSBP QkpFQ1RfVkFSSUFCTEU7IH0KIAkJOwogCiAvKiBvYmplY3QgdHlwZXMgdGFraW5nIG5hbWVfbGlz dCAqLwpAQCAtNjU5Miw2ICs2NzA0LDcgQEAgY29tbWVudF90eXBlX2FueV9uYW1lOgogCQkJfCBU RVhUX1AgU0VBUkNIIERJQ1RJT05BUlkJCQl7ICQkID0gT0JKRUNUX1RTRElDVElPTkFSWTsgfQog CQkJfCBURVhUX1AgU0VBUkNIIFBBUlNFUgkJCQl7ICQkID0gT0JKRUNUX1RTUEFSU0VSOyB9CiAJ CQl8IFRFWFRfUCBTRUFSQ0ggVEVNUExBVEUJCQl7ICQkID0gT0JKRUNUX1RTVEVNUExBVEU7IH0K KwkJCXwgVkFSSUFCTEUJCQkJCQkJeyAkJCA9IE9CSkVDVF9WQVJJQUJMRTsgfQogCQk7CiAKIC8q IG9iamVjdCB0eXBlcyB0YWtpbmcgbmFtZSAqLwpAQCAtNjczMCw2ICs2ODQzLDcgQEAgc2VjdXJp dHlfbGFiZWxfdHlwZV9hbnlfbmFtZToKIAkJCXwgVEFCTEUJCQkJCQkJCXsgJCQgPSBPQkpFQ1Rf VEFCTEU7IH0KIAkJCXwgVklFVwkJCQkJCQkJeyAkJCA9IE9CSkVDVF9WSUVXOyB9CiAJCQl8IE1B VEVSSUFMSVpFRCBWSUVXCQkJCQl7ICQkID0gT0JKRUNUX01BVFZJRVc7IH0KKwkJCXwgVkFSSUFC TEUJCQkJCQkJeyAkJCA9IE9CSkVDVF9WQVJJQUJMRTsgfQogCQk7CiAKIC8qIG9iamVjdCB0eXBl cyB0YWtpbmcgbmFtZSAqLwpAQCAtNzA1NSw2ICs3MTY5LDE0IEBAIHByaXZpbGVnZV90YXJnZXQ6 CiAJCQkJCW4tPm9ianMgPSAkMjsKIAkJCQkJJCQgPSBuOwogCQkJCX0KKwkJCXwgVkFSSUFCTEUg cXVhbGlmaWVkX25hbWVfbGlzdAorCQkJCXsKKwkJCQkJUHJpdlRhcmdldCAqbiA9IChQcml2VGFy Z2V0ICopIHBhbGxvYyhzaXplb2YoUHJpdlRhcmdldCkpOworCQkJCQluLT50YXJndHlwZSA9IEFD TF9UQVJHRVRfT0JKRUNUOworCQkJCQluLT5vYmp0eXBlID0gT0JKRUNUX1ZBUklBQkxFOworCQkJ CQluLT5vYmpzID0gJDI7CisJCQkJCSQkID0gbjsKKwkJCQl9CiAJCQl8IEZPUkVJR04gREFUQV9Q IFdSQVBQRVIgbmFtZV9saXN0CiAJCQkJewogCQkJCQlQcml2VGFyZ2V0ICpuID0gKFByaXZUYXJn ZXQgKikgcGFsbG9jKHNpemVvZihQcml2VGFyZ2V0KSk7CkBAIC03MTY3LDYgKzcyODksMTQgQEAg cHJpdmlsZWdlX3RhcmdldDoKIAkJCQkJbi0+b2JqcyA9ICQ1OwogCQkJCQkkJCA9IG47CiAJCQkJ fQorCQkJfCBBTEwgVkFSSUFCTEVTIElOX1AgU0NIRU1BIG5hbWVfbGlzdAorCQkJCXsKKwkJCQkJ UHJpdlRhcmdldCAqbiA9IChQcml2VGFyZ2V0ICopIHBhbGxvYyhzaXplb2YoUHJpdlRhcmdldCkp OworCQkJCQluLT50YXJndHlwZSA9IEFDTF9UQVJHRVRfQUxMX0lOX1NDSEVNQTsKKwkJCQkJbi0+ b2JqdHlwZSA9IE9CSkVDVF9WQVJJQUJMRTsKKwkJCQkJbi0+b2JqcyA9ICQ1OworCQkJCQkkJCA9 IG47CisJCQkJfQogCQkJfCBBTEwgRlVOQ1RJT05TIElOX1AgU0NIRU1BIG5hbWVfbGlzdAogCQkJ CXsKIAkJCQkJUHJpdlRhcmdldCAqbiA9IChQcml2VGFyZ2V0ICopIHBhbGxvYyhzaXplb2YoUHJp dlRhcmdldCkpOwpAQCAtNzM0OSw2ICs3NDc5LDcgQEAgZGVmYWNsX3ByaXZpbGVnZV90YXJnZXQ6 CiAJCQl8IEZVTkNUSU9OUwkJeyAkJCA9IE9CSkVDVF9GVU5DVElPTjsgfQogCQkJfCBST1VUSU5F UwkJeyAkJCA9IE9CSkVDVF9GVU5DVElPTjsgfQogCQkJfCBTRVFVRU5DRVMJCXsgJCQgPSBPQkpF Q1RfU0VRVUVOQ0U7IH0KKwkJCXwgVkFSSUFCTEVTCQl7ICQkID0gT0JKRUNUX1ZBUklBQkxFOyB9 CiAJCQl8IFRZUEVTX1AJCXsgJCQgPSBPQkpFQ1RfVFlQRTsgfQogCQkJfCBTQ0hFTUFTCQl7ICQk ID0gT0JKRUNUX1NDSEVNQTsgfQogCQk7CkBAIC04OTM3LDYgKzkwNjgsMjYgQEAgUmVuYW1lU3Rt dDogQUxURVIgQUdHUkVHQVRFIGFnZ3JlZ2F0ZV93aXRoX2FyZ3R5cGVzIFJFTkFNRSBUTyBuYW1l CiAJCQkJCW4tPm1pc3Npbmdfb2sgPSBmYWxzZTsKIAkJCQkJJCQgPSAoTm9kZSAqKW47CiAJCQkJ fQorCQkJfCBBTFRFUiBWQVJJQUJMRSBxdWFsaWZpZWRfbmFtZSBSRU5BTUUgVE8gbmFtZQorCQkJ CXsKKwkJCQkJUmVuYW1lU3RtdCAqbiA9IG1ha2VOb2RlKFJlbmFtZVN0bXQpOworCQkJCQluLT5y ZW5hbWVUeXBlID0gT0JKRUNUX1ZBUklBQkxFOworCQkJCQluLT5yZWxhdGlvbiA9ICQzOworCQkJ CQluLT5zdWJuYW1lID0gTlVMTDsKKwkJCQkJbi0+bmV3bmFtZSA9ICQ2OworCQkJCQluLT5taXNz aW5nX29rID0gZmFsc2U7CisJCQkJCSQkID0gKE5vZGUgKiluOworCQkJCX0KKwkJCXwgQUxURVIg VkFSSUFCTEUgSUZfUCBFWElTVFMgcXVhbGlmaWVkX25hbWUgUkVOQU1FIFRPIG5hbWUKKwkJCQl7 CisJCQkJCVJlbmFtZVN0bXQgKm4gPSBtYWtlTm9kZShSZW5hbWVTdG10KTsKKwkJCQkJbi0+cmVu YW1lVHlwZSA9IE9CSkVDVF9WQVJJQUJMRTsKKwkJCQkJbi0+cmVsYXRpb24gPSAkNTsKKwkJCQkJ bi0+c3VibmFtZSA9IE5VTEw7CisJCQkJCW4tPm5ld25hbWUgPSAkODsKKwkJCQkJbi0+bWlzc2lu Z19vayA9IHRydWU7CisJCQkJCSQkID0gKE5vZGUgKiluOworCQkJCX0KIAkJOwogCiBvcHRfY29s dW1uOiBDT0xVTU4JCQkJCQkJCQl7ICQkID0gQ09MVU1OOyB9CkBAIC0xMDY2NCw3ICsxMDgxNSw4 IEBAIEV4cGxhaW5hYmxlU3RtdDoKIAkJCXwgQ3JlYXRlQXNTdG10CiAJCQl8IENyZWF0ZU1hdFZp ZXdTdG10CiAJCQl8IFJlZnJlc2hNYXRWaWV3U3RtdAotCQkJfCBFeGVjdXRlU3RtdAkJCQkJLyog YnkgZGVmYXVsdCBhbGwgYXJlICQkPSQxICovCisJCQl8IEV4ZWN1dGVTdG10CisJCQl8IExldFN0 bXQJCQkJCS8qIGJ5IGRlZmF1bHQgYWxsIGFyZSAkJD0kMSAqLwogCQk7CiAKIGV4cGxhaW5fb3B0 aW9uX2xpc3Q6CkBAIC0xMDcyMSw3ICsxMDg3Myw4IEBAIFByZXBhcmFibGVTdG10OgogCQkJU2Vs ZWN0U3RtdAogCQkJfCBJbnNlcnRTdG10CiAJCQl8IFVwZGF0ZVN0bXQKLQkJCXwgRGVsZXRlU3Rt dAkJCQkJLyogYnkgZGVmYXVsdCBhbGwgYXJlICQkPSQxICovCisJCQl8IERlbGV0ZVN0bXQKKwkJ CXwgTGV0U3RtdAkJCQkJLyogYnkgZGVmYXVsdCBhbGwgYXJlICQkPSQxICovCiAJCTsKIAogLyoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqCkBAIC0xMTEyMCw2ICsxMTI3Myw1MCBAQCBvcHRfaG9sZDogLyog RU1QVFkgKi8JCQkJCQl7ICQkID0gMDsgfQogCQkJfCBXSVRIT1VUIEhPTEQJCQkJCXsgJCQgPSAw OyB9CiAJCTsKIAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICoJCVFVRVJZOgorICoJCQkJ TEVUIFNUQVRFTUVOVFMKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitMZXRTdG10OglMRVQg c2NoZW1hdmFyX25hbWUgJz0nIGFfZXhwcgorCQkJCXsKKwkJCQkJTGV0U3RtdCAqbiA9IG1ha2VO b2RlKExldFN0bXQpOworCQkJCQlTZWxlY3RTdG10ICpzZWxlY3QgPSBtYWtlTm9kZShTZWxlY3RT dG10KTsKKwkJCQkJUmVzVGFyZ2V0CSpyZXMgPSBtYWtlTm9kZShSZXNUYXJnZXQpOworCisJCQkJ CXJlcy0+bmFtZSA9IE5VTEw7CisJCQkJCXJlcy0+aW5kaXJlY3Rpb24gPSBOSUw7CisJCQkJCXJl cy0+dmFsID0gKE5vZGUgKikgJDQ7CisJCQkJCXJlcy0+bG9jYXRpb24gPSBANDsKKwkJCQkJc2Vs ZWN0LT50YXJnZXRMaXN0ID0gbGlzdF9tYWtlMShyZXMpOworCQkJCQluLT50YXJnZXQgPSAkMjsK KwkJCQkJbi0+c2VsZWN0U3RtdCA9IChOb2RlICopIHNlbGVjdDsKKwkJCQkJbi0+bG9jYXRpb24g PSBAMjsKKworCQkJCQkkJCA9IChOb2RlICopIG47CisJCQkJfQorCQk7CisKK3NjaGVtYXZhcl9u YW1lOgorCQkJQ29sSWQKKwkJCQl7CisJCQkJCSQkID0gbGlzdF9tYWtlMShtYWtlU3RyaW5nKCQx KSk7CisJCQkJfQorCQkJfCBDb2xJZCBpbmRpcmVjdGlvbgorCQkJCXsKKwkJCQkJY2hlY2tfaW5k aXJlY3Rpb25fbGV0KCQyLCB5eXNjYW5uZXIpOworCQkJCQlpZiAobGlzdF9sZW5ndGgoJDIpID4g MykKKwkJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFY X0VSUk9SKSwKKwkJCQkJCQkJIGVycm1zZygiaW1wcm9wZXIgcXVhbGlmaWVkIG5hbWUiKSwKKwkJ CQkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihAMSkpKTsKKworCQkJCQkkJCA9IGxjb25zKG1ha2VT dHJpbmcoJDEpLCAkMik7CisJCQkJCSQkID0gbGlzdF91bmlvbigkJCwgJDIpOworCQkJCX0KKwkJ OworCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCiAgKgkJUVVFUlk6CkBAIC0xNTA3OCw2ICsx NTI3NSw3IEBAIHVucmVzZXJ2ZWRfa2V5d29yZDoKIAkJCXwgTEFSR0VfUAogCQkJfCBMQVNUX1AK IAkJCXwgTEVBS1BST09GCisJCQl8IExFVAogCQkJfCBMRVZFTAogCQkJfCBMSVNURU4KIAkJCXwg TE9BRApAQCAtMTUyMjYsNiArMTU0MjQsOCBAQCB1bnJlc2VydmVkX2tleXdvcmQ6CiAJCQl8IFZB TElEQVRFCiAJCQl8IFZBTElEQVRPUgogCQkJfCBWQUxVRV9QCisJCQl8IFZBUklBQkxFCisJCQl8 IFZBUklBQkxFUwogCQkJfCBWQVJZSU5HCiAJCQl8IFZFUlNJT05fUAogCQkJfCBWSUVXCkBAIC0x NTY5MCw2ICsxNTg5MCwyNSBAQCBjaGVja19mdW5jX25hbWUoTGlzdCAqbmFtZXMsIGNvcmVfeXlz Y2FuX3QgeXlzY2FubmVyKQogICogV2Ugb25seSBhbGxvdyAnKicgYXQgdGhlIGVuZCBvZiB0aGUg bGlzdCwgYnV0IGl0J3MgaGFyZCB0byBlbmZvcmNlIHRoYXQKICAqIGluIHRoZSBncmFtbWFyLCBz byBkbyBpdCBoZXJlLgogICovCitzdGF0aWMgTGlzdCAqCitjaGVja19pbmRpcmVjdGlvbl9sZXQo TGlzdCAqaW5kaXJlY3Rpb24sIGNvcmVfeXlzY2FuX3QgeXlzY2FubmVyKQoreworCUxpc3RDZWxs ICpsOworCisJZm9yZWFjaChsLCBpbmRpcmVjdGlvbikKKwl7CisJCWlmIChJc0EobGZpcnN0KGwp LCBBX1N0YXIpKQorCQkJcGFyc2VyX3l5ZXJyb3IoInN5bnRheCBlcnJvciIpOworCisJCWlmIChJ c0EobGZpcnN0KGwpLCBBX0luZGljZXMpKQorCQl7CisJCQlpZiAobG5leHQobCkgIT0gTlVMTCkK KwkJCQlwYXJzZXJfeXllcnJvcigiaW1wcm9wZXIgdXNlIG9mIFtdIik7CisJCX0KKwl9CisJcmV0 dXJuIGluZGlyZWN0aW9uOworfQorCiBzdGF0aWMgTGlzdCAqCiBjaGVja19pbmRpcmVjdGlvbihM aXN0ICppbmRpcmVjdGlvbiwgY29yZV95eXNjYW5fdCB5eXNjYW5uZXIpCiB7CkBAIC0xNTcwNiw2 ICsxNTkyNSw3IEBAIGNoZWNrX2luZGlyZWN0aW9uKExpc3QgKmluZGlyZWN0aW9uLCBjb3JlX3l5 c2Nhbl90IHl5c2Nhbm5lcikKIAlyZXR1cm4gaW5kaXJlY3Rpb247CiB9CiAKKwogLyogZXh0cmFj dEFyZ1R5cGVzKCkKICAqIEdpdmVuIGEgbGlzdCBvZiBGdW5jdGlvblBhcmFtZXRlciBub2Rlcywg ZXh0cmFjdCBhIGxpc3Qgb2YganVzdCB0aGUKICAqIGFyZ3VtZW50IHR5cGVzIChUeXBlTmFtZXMp IGZvciBpbnB1dCBwYXJhbWV0ZXJzIG9ubHkuICBUaGlzIGlzIHdoYXQKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vf ZXhwci5jCmluZGV4IDM4NWU1NGE5YjYuLjhmNmUyOGRhOGYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3BhcnNlci9wYXJzZV9leHByLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4 cHIuYwpAQCAtMzcxLDcgKzM3MSw3IEBAIHRyYW5zZm9ybUV4cHJSZWN1cnNlKFBhcnNlU3RhdGUg KnBzdGF0ZSwgTm9kZSAqZXhwcikKIAogCQlkZWZhdWx0OgogCQkJLyogc2hvdWxkIG5vdCByZWFj aCBoZXJlICovCi0JCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIG5vZGUgdHlwZTogJWQiLCAo aW50KSBub2RlVGFnKGV4cHIpKTsKKwkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgbm9kZSB0 eXBlOiAlZCAlZCIsIChpbnQpIG5vZGVUYWcoZXhwciksIFRfQ29uc3QpOwogCQkJcmVzdWx0ID0g TlVMTDsJCS8qIGtlZXAgY29tcGlsZXIgcXVpZXQgKi8KIAkJCWJyZWFrOwogCX0KQEAgLTUwOSw2 ICs1MDksNyBAQCBzdGF0aWMgTm9kZSAqCiB0cmFuc2Zvcm1Db2x1bW5SZWYoUGFyc2VTdGF0ZSAq cHN0YXRlLCBDb2x1bW5SZWYgKmNyZWYpCiB7CiAJTm9kZQkgICAqbm9kZSA9IE5VTEw7CisJTm9k ZQkgICAqdmFyaWFibGUgPSBOVUxMOwogCWNoYXIJICAgKm5zcG5hbWUgPSBOVUxMOwogCWNoYXIJ ICAgKnJlbG5hbWUgPSBOVUxMOwogCWNoYXIJICAgKmNvbG5hbWUgPSBOVUxMOwpAQCAtNzQ5LDYg Kzc1MCwxMzMgQEAgdHJhbnNmb3JtQ29sdW1uUmVmKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ29sdW1u UmVmICpjcmVmKQogCQkJYnJlYWs7CiAJfQogCisJLyoKKwkgKiBUcnkgdG8gaWRlbnRpZnkgY29s dW1uIHJlZiBhcyB2YXJpYWJsZS4gUG9zc2libGUgdmFyaWFudHMgYXJlCisJICoKKwkgKiBBIC4u IHZhcmlhYmxlIG5hbWUKKwkgKiBBLkIgLi4gcXVhbGlmaWVkIHZhcmlhYmxlIG5hbWUKKwkgKiBB LkIgLi4gdmFyaWFibGUuZmllbGQKKwkgKiBBLkIuQyAuLiBzY2hlbWEudmFyaWFibGUuZmllbGQK KwkgKiBBLkIuQy5EIC4uIGNhdGFsb2d1ZS5zY2hlbWEudmFyaWFibGUuZmllbGQKKwkgKi8KKwlz d2l0Y2ggKGxpc3RfbGVuZ3RoKGNyZWYtPmZpZWxkcykpCisJeworCQljYXNlIDE6CisJCQl7CisJ CQkJTm9kZQkgICAqZmllbGQxID0gKE5vZGUgKikgbGluaXRpYWwoY3JlZi0+ZmllbGRzKTsKKwor CQkJCWlmIChJc0EoZmllbGQxLCBTdHJpbmcpKQorCQkJCXsKKwkJCQkJY2hhciAqdmFybmFtZSAg PSBzdHJWYWwoZmllbGQxKTsKKworCQkJCQkvKiBUcnkgdG8gaWRlbnRpZnkgYXMgYW4gdW5xdWFs aWZpZWQgY29sdW1uICovCisJCQkJCXZhcmlhYmxlID0gdG9TY2hlbWFWYXJpYWJsZShwc3RhdGUs CisJCQkJCQkJCQkJCQkJTlVMTCwgdmFybmFtZSwgTlVMTCwKKwkJCQkJCQkJCQkJCQljcmVmLT5s b2NhdGlvbik7CisJCQkJfQorCQkJCWJyZWFrOworCQkJfQorCQljYXNlIDI6CisJCQl7CisJCQkJ Tm9kZQkgICAqZmllbGQxID0gKE5vZGUgKikgbGluaXRpYWwoY3JlZi0+ZmllbGRzKTsKKwkJCQlO b2RlCSAgICpmaWVsZDIgPSAoTm9kZSAqKSBsc2Vjb25kKGNyZWYtPmZpZWxkcyk7CisKKwkJCQlp ZiAoSXNBKGZpZWxkMSwgU3RyaW5nKSAmJiBJc0EoZmllbGQyLCBTdHJpbmcpKQorCQkJCXsKKwkJ CQkJY2hhciAqbnNwbmFtZSA9IHN0clZhbChmaWVsZDEpOworCQkJCQljaGFyICp2YXJuYW1lID0g c3RyVmFsKGZpZWxkMik7CisKKwkJCQkJLyogVHJ5IHRvIGlkZW50aWZ5IGFzIGFuIHVucXVhbGlm aWVkIGNvbHVtbiAqLworCQkJCQl2YXJpYWJsZSA9IHRvU2NoZW1hVmFyaWFibGUocHN0YXRlLAor CQkJCQkJCQkJCQkJCW5zcG5hbWUsIHZhcm5hbWUsIE5VTEwsCisJCQkJCQkJCQkJCQkJY3JlZi0+ bG9jYXRpb24pOworCQkJCX0KKwkJCQlicmVhazsKKwkJCX0KKwkJY2FzZSAzOgorCQkJeworCQkJ CU5vZGUJICAgKmZpZWxkMSA9IChOb2RlICopIGxpbml0aWFsKGNyZWYtPmZpZWxkcyk7CisJCQkJ Tm9kZQkgICAqZmllbGQyID0gKE5vZGUgKikgbHNlY29uZChjcmVmLT5maWVsZHMpOworCQkJCU5v ZGUJICAgKmZpZWxkMyA9IChOb2RlICopIGx0aGlyZChjcmVmLT5maWVsZHMpOworCisJCQkJaWYg KElzQShmaWVsZDEsIFN0cmluZykgJiYgSXNBKGZpZWxkMiwgU3RyaW5nKSAmJiBJc0EoZmllbGQy LCBTdHJpbmcpKQorCQkJCXsKKwkJCQkJY2hhciAqbnNwbmFtZSA9IHN0clZhbChmaWVsZDEpOwor CQkJCQljaGFyICp2YXJuYW1lID0gc3RyVmFsKGZpZWxkMik7CisJCQkJCWNoYXIgKmZpZWxkbmFt ZSA9IHN0clZhbChmaWVsZDMpOworCisJCQkJCS8qIFRyeSB0byBpZGVudGlmeSBhcyBhbiB1bnF1 YWxpZmllZCBjb2x1bW4gKi8KKwkJCQkJdmFyaWFibGUgPSB0b1NjaGVtYVZhcmlhYmxlKHBzdGF0 ZSwKKwkJCQkJCQkJCQkJCQluc3BuYW1lLCB2YXJuYW1lLCBmaWVsZG5hbWUsCisJCQkJCQkJCQkJ CQkJY3JlZi0+bG9jYXRpb24pOworCQkJCX0KKwkJCQlicmVhazsKKwkJCX0KKwkJY2FzZSA0Ogor CQkJeworCQkJCU5vZGUJICAgKmZpZWxkMSA9IChOb2RlICopIGxpbml0aWFsKGNyZWYtPmZpZWxk cyk7CisJCQkJTm9kZQkgICAqZmllbGQyID0gKE5vZGUgKikgbHNlY29uZChjcmVmLT5maWVsZHMp OworCQkJCU5vZGUJICAgKmZpZWxkMyA9IChOb2RlICopIGx0aGlyZChjcmVmLT5maWVsZHMpOwor CQkJCU5vZGUJICAgKmZpZWxkNCA9IChOb2RlICopIGxmb3VydGgoY3JlZi0+ZmllbGRzKTsKKwkJ CQljaGFyCSAgICpjYXRuYW1lOworCisJCQkJQXNzZXJ0KElzQShmaWVsZDEsIFN0cmluZykpOwor CQkJCWNhdG5hbWUgPSBzdHJWYWwoZmllbGQxKTsKKworCQkJCS8qCisJCQkJICogV2UgY2hlY2sg dGhlIGNhdGFsb2cgbmFtZSBhbmQgdGhlbiBpZ25vcmUgaXQuCisJCQkJICovCisJCQkJaWYgKHN0 cmNtcChjYXRuYW1lLCBnZXRfZGF0YWJhc2VfbmFtZShNeURhdGFiYXNlSWQpKSAhPSAwKQorCQkJ CXsKKwkJCQkJY3JlcnIgPSBDUkVSUl9XUk9OR19EQjsKKwkJCQkJYnJlYWs7CisJCQkJfQorCisJ CQkJaWYgKElzQShmaWVsZDEsIFN0cmluZykgJiYgSXNBKGZpZWxkMiwgU3RyaW5nKSAmJiBJc0Eo ZmllbGQyLCBTdHJpbmcpKQorCQkJCXsKKwkJCQkJY2hhciAqbnNwbmFtZSA9IHN0clZhbChmaWVs ZDIpOworCQkJCQljaGFyICp2YXJuYW1lID0gc3RyVmFsKGZpZWxkMyk7CisJCQkJCWNoYXIgKmZp ZWxkbmFtZSA9IHN0clZhbChmaWVsZDQpOworCisJCQkJCS8qIFRyeSB0byBpZGVudGlmeSBhcyBh biB1bnF1YWxpZmllZCBjb2x1bW4gKi8KKwkJCQkJdmFyaWFibGUgPSB0b1NjaGVtYVZhcmlhYmxl KHBzdGF0ZSwKKwkJCQkJCQkJCQkJCQluc3BuYW1lLCB2YXJuYW1lLCBmaWVsZG5hbWUsCisJCQkJ CQkJCQkJCQkJY3JlZi0+bG9jYXRpb24pOworCQkJCX0KKwkJCQlicmVhazsKKwkJCX0KKwkJZGVm YXVsdDoKKworCQkJLyoKKwkJCSAqIFRoZXJlIGNhbiBiZSBhbm90aGVyIHZhcmlhbnRzLCBtb3Jl IHdoZW4gY29tcG9zaXRlIHZhcmlhYmxlcworCQkJICogd2lsbCBiZSBzdXBwb3J0ZWQuIEN1cnJl bnRseSBvbmx5IHNjYWxhcnMgYXJlIHN1cHBvcnRlZCwgc28KKwkJCSAqIHRoZXJlIGFyZSBub3Qg bmVjZXNzYXJ5IHRvIHNvbHZlIG90aGVyIHF1ZXN0aW9ucy4KKwkJCSAqCisJCQkgKiBkbyBub3Ro aW5nCisJCQkgKi8KKwkJCWNyZXJyID0gQ1JFUlJfVE9PX01BTlk7IC8qIHRvbyBtYW55IGRvdHRl ZCBuYW1lcyAqLworCQkJYnJlYWs7CisJfQorCisJaWYgKHZhcmlhYmxlICE9IE5VTEwpCisJewor CQkvKgorCQkgKiBXaGVuIHdlIGFsbG93IHZhcmlhYmxlcyBpbiBGUk9NIGNsYXVzZSwgdGhlbiBo ZXJlIGNhbiBiZSBjaGVjaywKKwkJICogaWYgdmFyaWFibGUgYW5kIG5vZGUgYXJlIHNhbWUuIE9y IGJldHRlciwgd2hlbiBub2RlIHdpbGwgYmUKKwkJICogcmVmZXJlbmNlZCB0byB2YXJpYWJsZSwg dGhlbiB0b1NjaGVtYVZhcmlhYmxlIHdpbGwgbm90IGJlIGNhbGxlZC4KKwkJICogQnV0IG5vdywg d2UgZG9uJ3QgYWxsb3cgc2NoZW1hIHZhcmlhYmxlIGluIEZST00gY2xhdXNlLCBzbyB0aGUKKwkJ ICogY29uZmxpY3QgaXMgbm90IHBvc3NpYmxlLgorCQkgKi8KKwkJaWYgKG5vZGUgIT0gTlVMTCkK KwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfQU1CSUdVT1VTX0NPTFVN TiksCisJCQkJCSBlcnJtc2coImNvbHVtbiByZWZlcmVuY2UgXCIlc1wiIGlzIGFtYmlndW91cyIs CisJCQkJCQkJTmFtZUxpc3RUb1N0cmluZyhjcmVmLT5maWVsZHMpKSwKKwkJCQkJIHBhcnNlcl9l cnJwb3NpdGlvbihwc3RhdGUsIGNyZWYtPmxvY2F0aW9uKSkpOworCisJCW5vZGUgPSB2YXJpYWJs ZTsKKwl9CisKIAkvKgogCSAqIE5vdyBnaXZlIHRoZSBQb3N0UGFyc2VDb2x1bW5SZWZIb29rLCBp ZiBhbnksIGEgY2hhbmNlLiAgV2UgcGFzcyB0aGUKIAkgKiB0cmFuc2xhdGlvbi1zby1mYXIgc28g dGhhdCBpdCBjYW4gdGhyb3cgYW4gZXJyb3IgaWYgaXQgd2lzaGVzIGluIHRoZQpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3JlbGF0aW9uLmMgYi9zcmMvYmFja2VuZC9wYXJz ZXIvcGFyc2VfcmVsYXRpb24uYwppbmRleCAwNTNhZTAyYzlmLi43MGE0NmUyN2YzIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfcmVsYXRpb24uYworKysgYi9zcmMvYmFja2Vu ZC9wYXJzZXIvcGFyc2VfcmVsYXRpb24uYwpAQCAtMjEsNiArMjEsNyBAQAogI2luY2x1ZGUgImNh dGFsb2cvaGVhcC5oIgogI2luY2x1ZGUgImNhdGFsb2cvbmFtZXNwYWNlLmgiCiAjaW5jbHVkZSAi Y2F0YWxvZy9wZ190eXBlLmgiCisjaW5jbHVkZSAiY29tbWFuZHMvc2NoZW1hdmFyLmgiCiAjaW5j bHVkZSAiZnVuY2FwaS5oIgogI2luY2x1ZGUgIm5vZGVzL21ha2VmdW5jcy5oIgogI2luY2x1ZGUg Im5vZGVzL25vZGVGdW5jcy5oIgpAQCAtMzIsNiArMzMsNyBAQAogI2luY2x1ZGUgInV0aWxzL2xz eXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3JlbC5oIgogI2luY2x1ZGUgInV0aWxzL3N5c2Nh Y2hlLmgiCisjaW5jbHVkZSAidXRpbHMvdHlwY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy92YXJs ZW5hLmgiCiAKIApAQCAtMTE1MCw2ICsxMTUyLDcgQEAgcGFyc2VyT3BlblRhYmxlKFBhcnNlU3Rh dGUgKnBzdGF0ZSwgY29uc3QgUmFuZ2VWYXIgKnJlbGF0aW9uLCBpbnQgbG9ja21vZGUpCiAKIAlz ZXR1cF9wYXJzZXJfZXJycG9zaXRpb25fY2FsbGJhY2soJnBjYnN0YXRlLCBwc3RhdGUsIHJlbGF0 aW9uLT5sb2NhdGlvbik7CiAJcmVsID0gaGVhcF9vcGVucnZfZXh0ZW5kZWQocmVsYXRpb24sIGxv Y2ttb2RlLCB0cnVlKTsKKwogCWlmIChyZWwgPT0gTlVMTCkKIAl7CiAJCWlmIChyZWxhdGlvbi0+ c2NoZW1hbmFtZSkKQEAgLTExODAsNiArMTE4MywyNCBAQCBwYXJzZXJPcGVuVGFibGUoUGFyc2VT dGF0ZSAqcHN0YXRlLCBjb25zdCBSYW5nZVZhciAqcmVsYXRpb24sIGludCBsb2NrbW9kZSkKIAkJ CQkJCQkJcmVsYXRpb24tPnJlbG5hbWUpKSk7CiAJCX0KIAl9CisKKwkvKgorCSAqIFJFTEtJTkRf VkFSSUFCTEUgY2FuIGJlIHVzZWQgb25seSBpbiBMRVQgY29tbWFuZC4KKwkgKiBQcm9iYWJseSB0 aGlzIGNoZWNrIGNhbiBiZSBkb25lIGVsc2V3aGVyZSwgYnV0IGhlcmUgSQorCSAqIGhhdmUgYSB1 c2VkIHJlbGF0aW9uIGFuZCBwYXJzZSBzdGF0ZSB0b2dldGhlciBmaXJzdCB0aW1lLgorCSAqLwor CWlmIChyZWwtPnJkX3JlbC0+cmVsa2luZCA9PSBSRUxLSU5EX1ZBUklBQkxFICYmICFwc3RhdGUt PnBfaXNfbGV0KQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfV1JPTkdf T0JKRUNUX1RZUEUpLAorCQkJCSBlcnJtc2coIlwiJXNcIiBpcyBhbiBzY2hlbWEgdmFyaWFibGUi LAorCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSkpKTsKKworCWlmIChwc3RhdGUt PnBfaXNfbGV0ICYmIHJlbC0+cmRfcmVsLT5yZWxraW5kICE9IFJFTEtJTkRfVkFSSUFCTEUpCisJ CWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9XUk9OR19PQkpFQ1RfVFlQRSks CisJCQkJIGVycm1zZygiXCIlc1wiIGlzIG5vdCBhbiBzY2hlbWEgdmFyaWFibGUiLAorCQkJCQkJ UmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSkpKTsKKwogCWNhbmNlbF9wYXJzZXJfZXJycG9z aXRpb25fY2FsbGJhY2soJnBjYnN0YXRlKTsKIAlyZXR1cm4gcmVsOwogfQpAQCAtMzM2MCwzICsz MzgxLDE2MCBAQCBpc1F1ZXJ5VXNpbmdUZW1wUmVsYXRpb25fd2Fsa2VyKE5vZGUgKm5vZGUsIHZv aWQgKmNvbnRleHQpCiAJCQkJCQkJCSAgaXNRdWVyeVVzaW5nVGVtcFJlbGF0aW9uX3dhbGtlciwK IAkJCQkJCQkJICBjb250ZXh0KTsKIH0KKworUmFuZ2VWYXIgKgorbWFrZVJhbmdlVmFyRm9yVGFy Z2V0T2ZTY2hlbWFWYXJpYWJsZShQYXJzZVN0YXRlICpwc3RhdGUsCisJCQkJCQkJCQkgIGNoYXIg KmZpZWxkMSwgY2hhciAqZmllbGQyLCBjaGFyICpmaWVsZDMsCisJCQkJCQkJCQkgIGludCBsb2Nh dGlvbiwgY2hhciAqKmZpZWxkbmFtZSwgaW50ICpmaWVsZG5hbWVfcG9zLCBib29sIG5vZXJyb3Ip Cit7CisJUmFuZ2VWYXIJKnJ2MTsKKwlPaWQJCQl2YXJpZDE7CisJYm9vbAkJaXNfcm93dHlwZTE7 CisKKwlydjEgPSBtYWtlUmFuZ2VWYXIoZmllbGQxLCBmaWVsZDIsIGxvY2F0aW9uKTsKKwl2YXJp ZDEgPSBSYW5nZVZhckdldFJlbGlkKHJ2MSwgTm9Mb2NrLCB0cnVlKTsKKwl2YXJpZDEgPSBpc19z Y2hlbWF2YXIodmFyaWQxLCAmaXNfcm93dHlwZTEpID8gdmFyaWQxIDogSW52YWxpZE9pZDsKKwor CWlmIChmaWVsZDEgIT0gTlVMTCAmJiBmaWVsZDMgPT0gTlVMTCkKKwl7CisJCVJhbmdlVmFyICAg KnJ2MjsKKwkJYm9vbAlpc19yb3d0eXBlMjsKKwkJT2lkCQl2YXJpZDI7CisKKwkJcnYyID0gbWFr ZVJhbmdlVmFyKE5VTEwsIGZpZWxkMSwgbG9jYXRpb24pOworCQl2YXJpZDIgPSBSYW5nZVZhckdl dFJlbGlkKHJ2MiwgTm9Mb2NrLCB0cnVlKTsKKworCQkvKiB2YXJpZDIgaGFzIHNlbnNlIG9ubHkg YXMgcm93IHR5cGUgdmFyaWFibGUgKi8KKwkJdmFyaWQyID0gaXNfc2NoZW1hdmFyKHZhcmlkMiwg JmlzX3Jvd3R5cGUyKSA/IHZhcmlkMiA6IEludmFsaWRPaWQ7CisJCXZhcmlkMiA9IGlzX3Jvd3R5 cGUyID8gdmFyaWQyIDogSW52YWxpZE9pZDsKKworCQlpZiAoT2lkSXNWYWxpZCh2YXJpZDEpICYm IE9pZElzVmFsaWQodmFyaWQyKSkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVS UkNPREVfQU1CSUdVT1VTX0NPTFVNTiksCisJCQkgZXJybXNnKCJ2YXJpYWJsZSByZWZlcmVuY2Ug XCIlc1wiLlwiJXNcIiBpcyBhbWJpZ3VvdXMiLCBmaWVsZDEsIGZpZWxkMiksCisJCQkJCSBwYXJz ZXJfZXJycG9zaXRpb24ocHN0YXRlLCBsb2NhdGlvbikpKTsKKworCQlpZiAoT2lkSXNWYWxpZCh2 YXJpZDIpKQorCQl7CisJCQkqZmllbGRuYW1lID0gZmllbGQyOworCQkJKmZpZWxkbmFtZV9wb3Mg PSAyOworCQkJcmV0dXJuIHJ2MjsKKwkJfQorCX0KKworCWlmICghT2lkSXNWYWxpZCh2YXJpZDEp KQorCXsKKwkJaWYgKCFub2Vycm9yKQorCQl7CisJCQlpZiAoZmllbGQxICE9IE5VTEwpCisJCQkJ ZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVEX1RBQkxFKSwK KwkJCQkJCSBlcnJtc2coInNjaGVtYSB2YXJpYWJsZSBcIiVzLiVzXCIgZG9lc24ndCBleGlzdHMi LCBmaWVsZDEsIGZpZWxkMiksCisJCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgbG9j YXRpb24pKSk7CisJCQllbHNlCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVS UkNPREVfVU5ERUZJTkVEX1RBQkxFKSwKKwkJCQkJCSBlcnJtc2coInNjaGVtYSB2YXJpYWJsZSBc IiVzXCIgZG9lc24ndCBleGlzdHMiLCBmaWVsZDIpLAorCQkJCQkJIHBhcnNlcl9lcnJwb3NpdGlv bihwc3RhdGUsIGxvY2F0aW9uKSkpOworCQl9CisKKwkJcmV0dXJuIE5VTEw7CisJfQorCisJKmZp ZWxkbmFtZSA9IGZpZWxkMzsKKwkqZmllbGRuYW1lX3BvcyA9IDM7CisKKwlpZiAoZmllbGQzICE9 IE5VTEwgJiYgIWlzX3Jvd3R5cGUxKQorCXsKKwkJaWYgKCFub2Vycm9yKQorCQl7CisJCQlpZiAo ZmllbGQxICE9IE5VTEwpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNP REVfV1JPTkdfT0JKRUNUX1RZUEUpLAorCQkJCQkJIGVycm1zZygidmFyaWFibGUgXCIlcy4lc1wi IGlzIG5vdCByb3cgdHlwZSIsIGZpZWxkMSwgZmllbGQyKSwKKwkJCQkJCQkgcGFyc2VyX2VycnBv c2l0aW9uKHBzdGF0ZSwgbG9jYXRpb24pKSk7CisJCQllbHNlCisJCQkJZXJlcG9ydChFUlJPUiwK KwkJCQkJCShlcnJjb2RlKEVSUkNPREVfV1JPTkdfT0JKRUNUX1RZUEUpLAorCQkJCQkJIGVycm1z ZygidmFyaWFibGUgXCIlc1wiIGlzIG5vdCByb3cgdHlwZSIsIGZpZWxkMiksCisJCQkJCQkgcGFy c2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgbG9jYXRpb24pKSk7CisJCX0KKworCQlyZXR1cm4gTlVM TDsKKwl9CisKKwlyZXR1cm4gcnYxOworfQorCisvKgorICogVHJ5IHRvIHJlcGxhY2UgQ29sdW1u UmVmIGJ5IFBhcmFtIHJlbGF0ZWQgdG8gdmFyaWFibGUKKyAqCisgKi8KK05vZGUgKgordG9TY2hl bWFWYXJpYWJsZShQYXJzZVN0YXRlICpwc3RhdGUsIGNoYXIgKm5zcG5hbWUsIGNoYXIgKnZhcm5h bWUsIGNoYXIgKmZpZWxkbmFtZSwgaW50IGxvY2F0aW9uKQoreworCWNoYXIJICAgKnVzZWRfZmll bGRuYW1lOworCVJhbmdlVmFyICAgKnJ2OworCU9pZAkJCXZhcmlkOworCWludAkJCWZpZWxkbmFt ZV9wb3M7CisJT2lkCQkJdmFydHlwOworCWludDMyCQl2YXJ0eXBtb2Q7CisJUGFyYW0JICAgKnBh cmFtOworCisJcnYgPSBtYWtlUmFuZ2VWYXJGb3JUYXJnZXRPZlNjaGVtYVZhcmlhYmxlKHBzdGF0 ZSwKKwkJCQkJCQkJCQkJICAgbnNwbmFtZSwgdmFybmFtZSwgZmllbGRuYW1lLCBsb2NhdGlvbiwK KwkJCQkJCQkJCQkJICAgJnVzZWRfZmllbGRuYW1lLCAmZmllbGRuYW1lX3BvcywgdHJ1ZSk7CisK KwlpZiAocnYgPT0gTlVMTCkKKwkJcmV0dXJuIE5VTEw7CisKKwl2YXJpZCA9IFJhbmdlVmFyR2V0 UmVsaWQocnYsIE5vTG9jaywgdHJ1ZSk7CisJaWYgKCFPaWRJc1ZhbGlkKHZhcmlkKSkKKwkJcmV0 dXJuIE5VTEw7CisKKwlwYXJhbSA9IG1ha2VOb2RlKFBhcmFtKTsKKworCXNjaGVtYXZhcl9nZXRf dHlwX3R5cG1vZCh2YXJpZCwgJnZhcnR5cCwgJnZhcnR5cG1vZCk7CisKKwlwYXJhbS0+cGFyYW1r aW5kID0gUEFSQU1fU0NIRU1BX1ZBUklBQkxFOworCXBhcmFtLT5wYXJhbWlkID0gdmFyaWQ7CisJ cGFyYW0tPnBhcmFtdHlwZSA9IHZhcnR5cDsKKwlwYXJhbS0+cGFyYW10eXBtb2QgPSB2YXJ0eXBt b2Q7CisKKwlpZiAodXNlZF9maWVsZG5hbWUgIT0gTlVMTCkKKwl7CisJCVR1cGxlRGVzYwkJdHVw ZGVzYzsKKwkJaW50CQlpOworCisJCXR1cGRlc2MgPSBsb29rdXBfcm93dHlwZV90dXBkZXNjKHBh cmFtLT5wYXJhbXR5cGUsIHBhcmFtLT5wYXJhbXR5cG1vZCk7CisKKwkJZm9yIChpID0gMDsgaSA8 IHR1cGRlc2MtPm5hdHRzOyBpKyspCisJCXsKKwkJCUZvcm1fcGdfYXR0cmlidXRlIGF0dCA9IFR1 cGxlRGVzY0F0dHIodHVwZGVzYywgaSk7CisKKwkJCWlmIChzdHJjbXAodXNlZF9maWVsZG5hbWUs IE5hbWVTdHIoYXR0LT5hdHRuYW1lKSkgPT0gMCAmJgorCQkJCSFhdHQtPmF0dGlzZHJvcHBlZCkK KwkJCXsKKwkJCQkvKiBTdWNjZXNzLCBzbyBnZW5lcmF0ZSBhIEZpZWxkU2VsZWN0IGV4cHJlc3Np b24gKi8KKwkJCQlGaWVsZFNlbGVjdCAqZnNlbGVjdCA9IG1ha2VOb2RlKEZpZWxkU2VsZWN0KTsK KworCQkJCWZzZWxlY3QtPmFyZyA9IChFeHByICopIHBhcmFtOworCQkJCWZzZWxlY3QtPmZpZWxk bnVtID0gaSArIDE7CisJCQkJZnNlbGVjdC0+cmVzdWx0dHlwZSA9IGF0dC0+YXR0dHlwaWQ7CisJ CQkJZnNlbGVjdC0+cmVzdWx0dHlwbW9kID0gYXR0LT5hdHR0eXBtb2Q7CisJCQkJLyogc2F2ZSBh dHRyaWJ1dGUncyBjb2xsYXRpb24gZm9yIHBhcnNlX2NvbGxhdGUuYyAqLworCQkJCWZzZWxlY3Qt PnJlc3VsdGNvbGxpZCA9IGF0dC0+YXR0Y29sbGF0aW9uOworCisJCQkJUmVsZWFzZVR1cGxlRGVz Yyh0dXBkZXNjKTsKKwkJCQlyZXR1cm4gKE5vZGUgKikgZnNlbGVjdDsKKwkJCX0KKwkJfQorCisJ CWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9VTkRFRklORURfQ09MVU1OKSwK KwkJIGVycm1zZygiY291bGQgbm90IGlkZW50aWZ5IGNvbHVtbiBcIiVzXCIgaW4gdmFyaWFibGUi LCB1c2VkX2ZpZWxkbmFtZSksCisJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGxvY2F0 aW9uKSkpOworCX0KKworCXJldHVybiAoTm9kZSAqKSBwYXJhbTsKK30KZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3BhcnNlci9wYXJzZV90YXJnZXQuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJz ZV90YXJnZXQuYwppbmRleCBlYTIwOWNkYWI2Li40Y2YxYjkxMGRhIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9wYXJzZXIvcGFyc2VfdGFyZ2V0LmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3Bh cnNlX3RhcmdldC5jCkBAIC0zNSwxNiArMzUsNiBAQAogCiBzdGF0aWMgdm9pZCBtYXJrVGFyZ2V0 TGlzdE9yaWdpbihQYXJzZVN0YXRlICpwc3RhdGUsIFRhcmdldEVudHJ5ICp0bGUsCiAJCQkJCSBW YXIgKnZhciwgaW50IGxldmVsc3VwKTsKLXN0YXRpYyBOb2RlICp0cmFuc2Zvcm1Bc3NpZ25tZW50 SW5kaXJlY3Rpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLAotCQkJCQkJCSAgIE5vZGUgKmJhc2Vub2Rl LAotCQkJCQkJCSAgIGNvbnN0IGNoYXIgKnRhcmdldE5hbWUsCi0JCQkJCQkJICAgYm9vbCB0YXJn ZXRJc0FycmF5LAotCQkJCQkJCSAgIE9pZCB0YXJnZXRUeXBlSWQsCi0JCQkJCQkJICAgaW50MzIg dGFyZ2V0VHlwTW9kLAotCQkJCQkJCSAgIE9pZCB0YXJnZXRDb2xsYXRpb24sCi0JCQkJCQkJICAg TGlzdENlbGwgKmluZGlyZWN0aW9uLAotCQkJCQkJCSAgIE5vZGUgKnJocywKLQkJCQkJCQkgICBp bnQgbG9jYXRpb24pOwogc3RhdGljIE5vZGUgKnRyYW5zZm9ybUFzc2lnbm1lbnRTdWJzY3JpcHRz KFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJCQkgIE5vZGUgKmJhc2Vub2RlLAogCQkJCQkJCSAg Y29uc3QgY2hhciAqdGFyZ2V0TmFtZSwKQEAgLTU5Niw3ICs1ODYsNiBAQCB0cmFuc2Zvcm1Bc3Np Z25lZEV4cHIoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCXJldHVybiBleHByOwogfQogCi0KIC8qCiAg KiB1cGRhdGVUYXJnZXRMaXN0RW50cnkoKQogICoJVGhpcyBpcyB1c2VkIGluIFVQREFURSBzdGF0 ZW1lbnRzIChhbmQgT04gQ09ORkxJQ1QgRE8gVVBEQVRFKQpAQCAtNjcyLDcgKzY2MSw3IEBAIHVw ZGF0ZVRhcmdldExpc3RFbnRyeShQYXJzZVN0YXRlICpwc3RhdGUsCiAgKiBtaWdodCB3YW50IHRv IGRlY29yYXRlIGluZGlyZWN0aW9uIGNlbGxzIHdpdGggdGhlaXIgb3duIGxvY2F0aW9uIGluZm8s CiAgKiBpbiB3aGljaCBjYXNlIHRoZSBsb2NhdGlvbiBhcmd1bWVudCBjb3VsZCBwcm9iYWJseSBi ZSBkcm9wcGVkLikKICAqLwotc3RhdGljIE5vZGUgKgorTm9kZSAqCiB0cmFuc2Zvcm1Bc3NpZ25t ZW50SW5kaXJlY3Rpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkJCSAgIE5vZGUgKmJhc2Vu b2RlLAogCQkJCQkJCSAgIGNvbnN0IGNoYXIgKnRhcmdldE5hbWUsCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNl X3V0aWxjbWQuYwppbmRleCAwZmQxNGY0M2M2Li4zYTBiMDcxZjVmIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9w YXJzZV91dGlsY21kLmMKQEAgLTEwOCw2ICsxMDgsNyBAQCB0eXBlZGVmIHN0cnVjdAogCUxpc3QJ ICAgKnZpZXdzOwkJCS8qIENSRUFURSBWSUVXIGl0ZW1zICovCiAJTGlzdAkgICAqaW5kZXhlczsJ CS8qIENSRUFURSBJTkRFWCBpdGVtcyAqLwogCUxpc3QJICAgKnRyaWdnZXJzOwkJLyogQ1JFQVRF IFRSSUdHRVIgaXRlbXMgKi8KKwlMaXN0CSAgICp2YXJpYWJsZXM7CQkvKiBDUkVBVEUgVkFSSUFC TEUgaXRlbXMgKi8KIAlMaXN0CSAgICpncmFudHM7CQkJLyogR1JBTlQgaXRlbXMgKi8KIH0gQ3Jl YXRlU2NoZW1hU3RtdENvbnRleHQ7CiAKQEAgLTMzMDksNiArMzMxMCw3IEBAIHRyYW5zZm9ybUNy ZWF0ZVNjaGVtYVN0bXQoQ3JlYXRlU2NoZW1hU3RtdCAqc3RtdCkKIAljeHQudmlld3MgPSBOSUw7 CiAJY3h0LmluZGV4ZXMgPSBOSUw7CiAJY3h0LnRyaWdnZXJzID0gTklMOworCWN4dC52YXJpYWJs ZXMgPSBOSUw7CiAJY3h0LmdyYW50cyA9IE5JTDsKIAogCS8qCkBAIC0zMzc0LDYgKzMzNzYsMTQg QEAgdHJhbnNmb3JtQ3JlYXRlU2NoZW1hU3RtdChDcmVhdGVTY2hlbWFTdG10ICpzdG10KQogCQkJ CX0KIAkJCQlicmVhazsKIAorCQkJY2FzZSBUX0NyZWF0ZVNjaGVtYVZhclN0bXQ6CisJCQkJewor CQkJCQlDcmVhdGVTY2hlbWFWYXJTdG10ICplbHAgPSAoQ3JlYXRlU2NoZW1hVmFyU3RtdCAqKSBl bGVtZW50OworCisJCQkJCXNldFNjaGVtYU5hbWUoY3h0LnNjaGVtYW5hbWUsICZlbHAtPnZhcmlh YmxlLT5zY2hlbWFuYW1lKTsKKwkJCQkJY3h0LnZhcmlhYmxlcyA9IGxhcHBlbmQoY3h0LnZhcmlh YmxlcywgZWxlbWVudCk7CisJCQkJfQorCiAJCQljYXNlIFRfR3JhbnRTdG10OgogCQkJCWN4dC5n cmFudHMgPSBsYXBwZW5kKGN4dC5ncmFudHMsIGVsZW1lbnQpOwogCQkJCWJyZWFrOwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvcmV3cml0ZS9yZXdyaXRlSGFuZGxlci5jIGIvc3JjL2JhY2tlbmQv cmV3cml0ZS9yZXdyaXRlSGFuZGxlci5jCmluZGV4IDY2MjUzZmMzZDMuLjQ3YTliMjExZDggMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Jld3JpdGUvcmV3cml0ZUhhbmRsZXIuYworKysgYi9zcmMv YmFja2VuZC9yZXdyaXRlL3Jld3JpdGVIYW5kbGVyLmMKQEAgLTMzMzcsNyArMzMzNyw3IEBAIFJl d3JpdGVRdWVyeShRdWVyeSAqcGFyc2V0cmVlLCBMaXN0ICpyZXdyaXRlX2V2ZW50cykKIAkJCQkJ CQkJCXJ0X2VudHJ5X3JlbGF0aW9uLAogCQkJCQkJCQkJcGFyc2V0cmVlLT5yZXN1bHRSZWxhdGlv biwgTlVMTCk7CiAJCX0KLQkJZWxzZSBpZiAoZXZlbnQgPT0gQ01EX0RFTEVURSkKKwkJZWxzZSBp ZiAoZXZlbnQgPT0gQ01EX0RFTEVURSB8fCBldmVudCA9PSBDTURfTEVUKQogCQl7CiAJCQkvKiBO b3RoaW5nIHRvIGRvIGhlcmUgKi8KIAkJfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdGNvcC9w cXVlcnkuYyBiL3NyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5LmMKaW5kZXggNjZjYzVjMzVjNi4uMzRk ZGI3OWEzZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdGNvcC9wcXVlcnkuYworKysgYi9zcmMv YmFja2VuZC90Y29wL3BxdWVyeS5jCkBAIC0xOTMsNiArMTkzLDEwIEBAIFByb2Nlc3NRdWVyeShQ bGFubmVkU3RtdCAqcGxhbiwKIAkJCQkJCSAiREVMRVRFICIgVUlOVDY0X0ZPUk1BVCwKIAkJCQkJ CSBxdWVyeURlc2MtPmVzdGF0ZS0+ZXNfcHJvY2Vzc2VkKTsKIAkJCQlicmVhazsKKwkJCWNhc2Ug Q01EX0xFVDoKKwkJCQlzbnByaW50Zihjb21wbGV0aW9uVGFnLCBDT01QTEVUSU9OX1RBR19CVUZT SVpFLAorCQkJCQkJICJMRVQgIik7CisJCQkJYnJlYWs7CiAJCQlkZWZhdWx0OgogCQkJCXN0cmNw eShjb21wbGV0aW9uVGFnLCAiPz8/Iik7CiAJCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC90Y29wL3V0aWxpdHkuYyBiL3NyYy9iYWNrZW5kL3Rjb3AvdXRpbGl0eS5jCmluZGV4IGVk NTU1MjFhMGMuLjFlYTFkNmNkMjcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Rjb3AvdXRpbGl0 eS5jCisrKyBiL3NyYy9iYWNrZW5kL3Rjb3AvdXRpbGl0eS5jCkBAIC00Nyw2ICs0Nyw3IEBACiAj aW5jbHVkZSAiY29tbWFuZHMvcHJvY2xhbmcuaCIKICNpbmNsdWRlICJjb21tYW5kcy9wdWJsaWNh dGlvbmNtZHMuaCIKICNpbmNsdWRlICJjb21tYW5kcy9zY2hlbWFjbWRzLmgiCisjaW5jbHVkZSAi Y29tbWFuZHMvc2NoZW1hdmFyLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvc2VjbGFiZWwuaCIKICNp bmNsdWRlICJjb21tYW5kcy9zZXF1ZW5jZS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3N1YnNjcmlw dGlvbmNtZHMuaCIKQEAgLTExMiw2ICsxMTMsNyBAQCBDb21tYW5kSXNSZWFkT25seShQbGFubmVk U3RtdCAqcHN0bXQpCiAJCWNhc2UgQ01EX0RFTEVURToKIAkJCXJldHVybiBmYWxzZTsKIAkJY2Fz ZSBDTURfVVRJTElUWToKKwkJY2FzZSBDTURfTEVUOgogCQkJLyogRm9yIG5vdywgdHJlYXQgYWxs IHV0aWxpdHkgY29tbWFuZHMgYXMgcmVhZC93cml0ZSAqLwogCQkJcmV0dXJuIGZhbHNlOwogCQlk ZWZhdWx0OgpAQCAtMTc3LDYgKzE3OSw3IEBAIGNoZWNrX3hhY3RfcmVhZG9ubHkoTm9kZSAqcGFy c2V0cmVlKQogCQljYXNlIFRfQ3JlYXRlU2NoZW1hU3RtdDoKIAkJY2FzZSBUX0NyZWF0ZVNlcVN0 bXQ6CiAJCWNhc2UgVF9DcmVhdGVTdG10OgorCQljYXNlIFRfQ3JlYXRlU2NoZW1hVmFyU3RtdDoK IAkJY2FzZSBUX0NyZWF0ZVRhYmxlQXNTdG10OgogCQljYXNlIFRfUmVmcmVzaE1hdFZpZXdTdG10 OgogCQljYXNlIFRfQ3JlYXRlVGFibGVTcGFjZVN0bXQ6CkBAIC0xNDYwLDYgKzE0NjMsMTAgQEAg UHJvY2Vzc1V0aWxpdHlTbG93KFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQlhZGRyZXNzID0gQWx0 ZXJTZXF1ZW5jZShwc3RhdGUsIChBbHRlclNlcVN0bXQgKikgcGFyc2V0cmVlKTsKIAkJCQlicmVh azsKIAorCQkJY2FzZSBUX0NyZWF0ZVNjaGVtYVZhclN0bXQ6CisJCQkJYWRkcmVzcyA9IERlZmlu ZVNjaGVtYVZhcmlhYmxlKHBzdGF0ZSwgKENyZWF0ZVNjaGVtYVZhclN0bXQgKikgcGFyc2V0cmVl KTsKKwkJCQlicmVhazsKKwogCQkJY2FzZSBUX0NyZWF0ZVRhYmxlQXNTdG10OgogCQkJCWFkZHJl c3MgPSBFeGVjQ3JlYXRlVGFibGVBcygoQ3JlYXRlVGFibGVBc1N0bXQgKikgcGFyc2V0cmVlLAog CQkJCQkJCQkJCQlxdWVyeVN0cmluZywgcGFyYW1zLCBxdWVyeUVudiwKQEAgLTIwMzIsNiArMjAz OSw5IEBAIEFsdGVyT2JqZWN0VHlwZUNvbW1hbmRUYWcoT2JqZWN0VHlwZSBvYmp0eXBlKQogCQlj YXNlIE9CSkVDVF9TVEFUSVNUSUNfRVhUOgogCQkJdGFnID0gIkFMVEVSIFNUQVRJU1RJQ1MiOwog CQkJYnJlYWs7CisJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgorCQkJdGFnID0gIkFMVEVSIFZBUklB QkxFIjsKKwkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJdGFnID0gIj8/PyI7CiAJCQlicmVhazsK QEAgLTIwODEsNiArMjA5MSwxMCBAQCBDcmVhdGVDb21tYW5kVGFnKE5vZGUgKnBhcnNldHJlZSkK IAkJCXRhZyA9ICJTRUxFQ1QiOwogCQkJYnJlYWs7CiAKKwkJY2FzZSBUX0xldFN0bXQ6CisJCQl0 YWcgPSAiTEVUIjsKKwkJCWJyZWFrOworCiAJCQkvKiB1dGlsaXR5IHN0YXRlbWVudHMgLS0tIHNh bWUgd2hldGhlciByYXcgb3IgY29va2VkICovCiAJCWNhc2UgVF9UcmFuc2FjdGlvblN0bXQ6CiAJ CQl7CkBAIC0yMjQ1LDYgKzIyNTksOSBAQCBDcmVhdGVDb21tYW5kVGFnKE5vZGUgKnBhcnNldHJl ZSkKIAkJCQljYXNlIE9CSkVDVF9JTkRFWDoKIAkJCQkJdGFnID0gIkRST1AgSU5ERVgiOwogCQkJ CQlicmVhazsKKwkJCQljYXNlIE9CSkVDVF9WQVJJQUJMRToKKwkJCQkJdGFnID0gIkRST1AgVkFS SUFCTEUiOworCQkJCQlicmVhazsKIAkJCQljYXNlIE9CSkVDVF9UWVBFOgogCQkJCQl0YWcgPSAi RFJPUCBUWVBFIjsKIAkJCQkJYnJlYWs7CkBAIC0yNDk5LDYgKzI1MTYsMTAgQEAgQ3JlYXRlQ29t bWFuZFRhZyhOb2RlICpwYXJzZXRyZWUpCiAJCQl0YWcgPSAiQUxURVIgU0VRVUVOQ0UiOwogCQkJ YnJlYWs7CiAKKwkJY2FzZSBUX0NyZWF0ZVNjaGVtYVZhclN0bXQ6CisJCQl0YWcgPSAiQ1JFQVRF IFZBUklBQkxFIjsKKwkJCWJyZWFrOworCiAJCWNhc2UgVF9Eb1N0bXQ6CiAJCQl0YWcgPSAiRE8i OwogCQkJYnJlYWs7CkBAIC0yNjE2LDYgKzI2MzcsOSBAQCBDcmVhdGVDb21tYW5kVGFnKE5vZGUg KnBhcnNldHJlZSkKIAkJCQljYXNlIERJU0NBUkRfU0VRVUVOQ0VTOgogCQkJCQl0YWcgPSAiRElT Q0FSRCBTRVFVRU5DRVMiOwogCQkJCQlicmVhazsKKwkJCQljYXNlIERJU0NBUkRfVkFSSUFCTEVT OgorCQkJCQl0YWcgPSAiRElTQ0FSRCBWQVJJQUJMRVMiOworCQkJCQlicmVhazsKIAkJCQlkZWZh dWx0OgogCQkJCQl0YWcgPSAiPz8/IjsKIAkJCX0KQEAgLTI4MjAsNiArMjg0NCw5IEBAIENyZWF0 ZUNvbW1hbmRUYWcoTm9kZSAqcGFyc2V0cmVlKQogCQkJCQljYXNlIENNRF9ERUxFVEU6CiAJCQkJ CQl0YWcgPSAiREVMRVRFIjsKIAkJCQkJCWJyZWFrOworCQkJCQljYXNlIENNRF9MRVQ6CisJCQkJ CQl0YWcgPSAiTEVUIjsKKwkJCQkJCWJyZWFrOwogCQkJCQljYXNlIENNRF9VVElMSVRZOgogCQkJ CQkJdGFnID0gQ3JlYXRlQ29tbWFuZFRhZyhzdG10LT51dGlsaXR5U3RtdCk7CiAJCQkJCQlicmVh azsKQEAgLTI5MzgsNiArMjk2NSwxMCBAQCBHZXRDb21tYW5kTG9nTGV2ZWwoTm9kZSAqcGFyc2V0 cmVlKQogCQkJCWxldiA9IExPR1NUTVRfQUxMOwogCQkJYnJlYWs7CiAKKwkJY2FzZSBUX0xldFN0 bXQ6CisJCQlsZXYgPSBMT0dTVE1UX0FMTDsKKwkJCWJyZWFrOworCiAJCQkvKiB1dGlsaXR5IHN0 YXRlbWVudHMgLS0tIHNhbWUgd2hldGhlciByYXcgb3IgY29va2VkICovCiAJCWNhc2UgVF9UcmFu c2FjdGlvblN0bXQ6CiAJCQlsZXYgPSBMT0dTVE1UX0FMTDsKQEAgLTMzOTEsNiArMzQyMiw3IEBA IEdldENvbW1hbmRMb2dMZXZlbChOb2RlICpwYXJzZXRyZWUpCiAJCQkJc3dpdGNoIChzdG10LT5j b21tYW5kVHlwZSkKIAkJCQl7CiAJCQkJCWNhc2UgQ01EX1NFTEVDVDoKKwkJCQkJY2FzZSBDTURf TEVUOgogCQkJCQkJbGV2ID0gTE9HU1RNVF9BTEw7CiAJCQkJCQlicmVhazsKIApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2FjbC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2Fj bC5jCmluZGV4IDBjZmMyOTdiNjUuLmZjZDY5NTgzNmEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9hY2wuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvYWNsLmMKQEAgLTgw OCw2ICs4MDgsMTAgQEAgYWNsZGVmYXVsdChPYmplY3RUeXBlIG9ianR5cGUsIE9pZCBvd25lcklk KQogCQkJd29ybGRfZGVmYXVsdCA9IEFDTF9VU0FHRTsKIAkJCW93bmVyX2RlZmF1bHQgPSBBQ0xf QUxMX1JJR0hUU19UWVBFOwogCQkJYnJlYWs7CisJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgorCQkJ d29ybGRfZGVmYXVsdCA9IEFDTF9OT19SSUdIVFM7CisJCQlvd25lcl9kZWZhdWx0ID0gQUNMX0FM TF9SSUdIVFNfVkFSSUFCTEU7CisJCQlicmVhazsKIAkJZGVmYXVsdDoKIAkJCWVsb2coRVJST1Is ICJ1bnJlY29nbml6ZWQgb2JqdHlwZTogJWQiLCAoaW50KSBvYmp0eXBlKTsKIAkJCXdvcmxkX2Rl ZmF1bHQgPSBBQ0xfTk9fUklHSFRTOwkvKiBrZWVwIGNvbXBpbGVyIHF1aWV0ICovCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMgYi9zcmMvYmFja2VuZC91dGls cy9hZHQvcnVsZXV0aWxzLmMKaW5kZXggMmNkNTRlYzMzZi4uYzEwMjQxNGIxZiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9ydWxldXRpbHMuYwpAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgImNhdGFsb2cv cGdfdHlwZS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2RlZnJlbS5oIgogI2luY2x1ZGUgImNvbW1h bmRzL3RhYmxlc3BhY2UuaCIKKyNpbmNsdWRlICJjb21tYW5kcy9zY2hlbWF2YXIuaCIKICNpbmNs dWRlICJjb21tb24va2V5d29yZHMuaCIKICNpbmNsdWRlICJleGVjdXRvci9zcGkuaCIKICNpbmNs dWRlICJmdW5jYXBpLmgiCkBAIC0zODEsNiArMzgyLDcgQEAgc3RhdGljIHZvaWQgZ2V0X3VwZGF0 ZV9xdWVyeV90YXJnZXRsaXN0X2RlZihRdWVyeSAqcXVlcnksIExpc3QgKnRhcmdldExpc3QsCiAJ CQkJCQkJCWRlcGFyc2VfY29udGV4dCAqY29udGV4dCwKIAkJCQkJCQkJUmFuZ2VUYmxFbnRyeSAq cnRlKTsKIHN0YXRpYyB2b2lkIGdldF9kZWxldGVfcXVlcnlfZGVmKFF1ZXJ5ICpxdWVyeSwgZGVw YXJzZV9jb250ZXh0ICpjb250ZXh0KTsKK3N0YXRpYyB2b2lkIGdldF9sZXRfcXVlcnlfZGVmKFF1 ZXJ5ICpxdWVyeSwgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0KTsKIHN0YXRpYyB2b2lkIGdldF91 dGlsaXR5X3F1ZXJ5X2RlZihRdWVyeSAqcXVlcnksIGRlcGFyc2VfY29udGV4dCAqY29udGV4dCk7 CiBzdGF0aWMgdm9pZCBnZXRfYmFzaWNfc2VsZWN0X3F1ZXJ5KFF1ZXJ5ICpxdWVyeSwgZGVwYXJz ZV9jb250ZXh0ICpjb250ZXh0LAogCQkJCQkgICBUdXBsZURlc2MgcmVzdWx0RGVzYyk7CkBAIC00 OTUzLDYgKzQ5NTUsMTAgQEAgZ2V0X3F1ZXJ5X2RlZihRdWVyeSAqcXVlcnksIFN0cmluZ0luZm8g YnVmLCBMaXN0ICpwYXJlbnRuYW1lc3BhY2UsCiAJCQlnZXRfZGVsZXRlX3F1ZXJ5X2RlZihxdWVy eSwgJmNvbnRleHQpOwogCQkJYnJlYWs7CiAKKwkJY2FzZSBDTURfTEVUOgorCQkJZ2V0X2xldF9x dWVyeV9kZWYocXVlcnksICZjb250ZXh0KTsKKwkJCWJyZWFrOworCiAJCWNhc2UgQ01EX05PVEhJ Tkc6CiAJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgIk5PVEhJTkciKTsKIAkJCWJyZWFr OwpAQCAtNjE3MCw2ICs2MTc2LDU4IEBAIGdldF9pbnNlcnRfcXVlcnlfZGVmKFF1ZXJ5ICpxdWVy eSwgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0KQogCX0KIH0KIAorLyogLS0tLS0tLS0tLQorICog Z2V0X2xldF9xdWVyeV9kZWYJCQktIFBhcnNlIGJhY2sgYW4gTEVUIHBhcnNldHJlZQorICogLS0t LS0tLS0tLQorICovCitzdGF0aWMgdm9pZAorZ2V0X2xldF9xdWVyeV9kZWYoUXVlcnkgKnF1ZXJ5 LCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQpCit7CisJU3RyaW5nSW5mbwlidWYgPSBjb250ZXh0 LT5idWY7CisJUmFuZ2VUYmxFbnRyeSAqc2VsZWN0X3J0ZSA9IE5VTEw7CisJUmFuZ2VUYmxFbnRy eSAqcnRlOworCUxpc3RDZWxsICAgKmw7CisKKwkvKgorCSAqIElmIGl0J3MgYW4gSU5TRVJUIC4u LiBTRUxFQ1Qgb3IgbXVsdGktcm93IFZBTFVFUywgdGhlcmUgd2lsbCBiZSBhCisJICogc2luZ2xl IFJURSBmb3IgdGhlIFNFTEVDVCBvciBWQUxVRVMuICBQbGFpbiBWQUxVRVMgaGFzIG5laXRoZXIu CisJICovCisJZm9yZWFjaChsLCBxdWVyeS0+cnRhYmxlKQorCXsKKwkJcnRlID0gKFJhbmdlVGJs RW50cnkgKikgbGZpcnN0KGwpOworCisJCWlmIChydGUtPnJ0ZWtpbmQgPT0gUlRFX1NVQlFVRVJZ KQorCQl7CisJCQlpZiAoc2VsZWN0X3J0ZSkKKwkJCQllbG9nKEVSUk9SLCAidG9vIG1hbnkgc3Vi cXVlcnkgUlRFcyBpbiBJTlNFUlQiKTsKKwkJCXNlbGVjdF9ydGUgPSBydGU7CisJCX0KKwl9CisK KwkvKgorCSAqIFN0YXJ0IHRoZSBxdWVyeSB3aXRoIElOU0VSVCBJTlRPIHJlbG5hbWUKKwkgKi8K KwlydGUgPSBydF9mZXRjaChxdWVyeS0+cmVzdWx0UmVsYXRpb24sIHF1ZXJ5LT5ydGFibGUpOwor CUFzc2VydChydGUtPnJ0ZWtpbmQgPT0gUlRFX1JFTEFUSU9OKTsKKworCWlmIChQUkVUVFlfSU5E RU5UKGNvbnRleHQpKQorCXsKKwkJY29udGV4dC0+aW5kZW50TGV2ZWwgKz0gUFJFVFRZSU5ERU5U X1NURDsKKwkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoYnVmLCAnICcpOworCX0KKwlhcHBlbmRTdHJp bmdJbmZvKGJ1ZiwgIkxFVCAlcyAiLAorCQkJCQkgZ2VuZXJhdGVfcmVsYXRpb25fbmFtZShydGUt PnJlbGlkLCBOSUwpKTsKKworCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAiID0gIik7CisKKwlpZiAo c2VsZWN0X3J0ZSkKKwl7CisJCS8qIEFkZCB0aGUgU0VMRUNUICovCisJCWdldF9xdWVyeV9kZWYo c2VsZWN0X3J0ZS0+c3VicXVlcnksIGJ1ZiwgTklMLCBOVUxMLAorCQkJCQkgIGNvbnRleHQtPnBy ZXR0eUZsYWdzLCBjb250ZXh0LT53cmFwQ29sdW1uLAorCQkJCQkgIGNvbnRleHQtPmluZGVudExl dmVsKTsKKwl9Cit9CiAKIC8qIC0tLS0tLS0tLS0KICAqIGdldF91cGRhdGVfcXVlcnlfZGVmCQkJ LSBQYXJzZSBiYWNrIGFuIFVQREFURSBwYXJzZXRyZWUKQEAgLTcyNDUsNiArNzMwMywxMyBAQCBn ZXRfcGFyYW1ldGVyKFBhcmFtICpwYXJhbSwgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0KQogCWRl cGFyc2VfbmFtZXNwYWNlICpkcG5zOwogCUxpc3RDZWxsICAgKmFuY2VzdG9yX2NlbGw7CiAKKwlp ZiAocGFyYW0tPnBhcmFta2luZCA9PSBQQVJBTV9TQ0hFTUFfVkFSSUFCTEUpCisJeworCQlhcHBl bmRTdHJpbmdJbmZvKGNvbnRleHQtPmJ1ZiwgIiVzIiwgZ2V0X3NjaGVtYXZhcl9uYW1lKHBhcmFt LT5wYXJhbWlkKSk7CisKKwkJcmV0dXJuOworCX0KKwogCS8qCiAJICogSWYgaXQncyBhIFBBUkFN X0VYRUMgcGFyYW1ldGVyLCB0cnkgdG8gbG9jYXRlIHRoZSBleHByZXNzaW9uIGZyb20gd2hpY2gK IAkgKiB0aGUgcGFyYW1ldGVyIHdhcyBjb21wdXRlZC4gIE5vdGUgdGhhdCBmYWlsaW5nIHRvIGZp bmQgYSByZWZlcmVudCBpc24ndApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL2NvbW1vbi5j IGIvc3JjL2Jpbi9wZ19kdW1wL2NvbW1vbi5jCmluZGV4IDBhNzU4ZjE0YmYuLjk5MjdmZjZkZjUg MTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9jb21tb24uYworKysgYi9zcmMvYmluL3BnX2R1 bXAvY29tbW9uLmMKQEAgLTMyNiw3ICszMjYsOCBAQCBmbGFnSW5oVGFibGVzKEFyY2hpdmUgKmZv dXQsIFRhYmxlSW5mbyAqdGJsaW5mbywgaW50IG51bVRhYmxlcywKIAkJLyogU29tZSBraW5kcyBu ZXZlciBoYXZlIHBhcmVudHMgKi8KIAkJaWYgKHRibGluZm9baV0ucmVsa2luZCA9PSBSRUxLSU5E X1NFUVVFTkNFIHx8CiAJCQl0YmxpbmZvW2ldLnJlbGtpbmQgPT0gUkVMS0lORF9WSUVXIHx8Ci0J CQl0YmxpbmZvW2ldLnJlbGtpbmQgPT0gUkVMS0lORF9NQVRWSUVXKQorCQkJdGJsaW5mb1tpXS5y ZWxraW5kID09IFJFTEtJTkRfTUFUVklFVyB8fAorCQkJdGJsaW5mb1tpXS5yZWxraW5kID09IFJF TEtJTkRfVkFSSUFCTEUpCiAJCQljb250aW51ZTsKIAogCQkvKgpAQCAtNDc1LDcgKzQ3Niw4IEBA IGZsYWdJbmhBdHRycyhEdW1wT3B0aW9ucyAqZG9wdCwgVGFibGVJbmZvICp0YmxpbmZvLCBpbnQg bnVtVGFibGVzKQogCQkvKiBTb21lIGtpbmRzIG5ldmVyIGhhdmUgcGFyZW50cyAqLwogCQlpZiAo dGJpbmZvLT5yZWxraW5kID09IFJFTEtJTkRfU0VRVUVOQ0UgfHwKIAkJCXRiaW5mby0+cmVsa2lu ZCA9PSBSRUxLSU5EX1ZJRVcgfHwKLQkJCXRiaW5mby0+cmVsa2luZCA9PSBSRUxLSU5EX01BVFZJ RVcpCisJCQl0YmluZm8tPnJlbGtpbmQgPT0gUkVMS0lORF9NQVRWSUVXIHx8CisJCQl0YmluZm8t PnJlbGtpbmQgPT0gUkVMS0lORF9WQVJJQUJMRSkKIAkJCWNvbnRpbnVlOwogCiAJCS8qIERvbid0 IGJvdGhlciBjb21wdXRpbmcgYW55dGhpbmcgZm9yIG5vbi10YXJnZXQgdGFibGVzLCBlaXRoZXIg Ki8KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfYXJjaGl2ZXIuYyBiL3Ny Yy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfYXJjaGl2ZXIuYwppbmRleCA4M2M5NzZlYWY3Li43MGIz ZGE5YzkzIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2FyY2hpdmVyLmMK KysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9hcmNoaXZlci5jCkBAIC0zNDgwLDcgKzM0 ODAsOCBAQCBfZ2V0T2JqZWN0RGVzY3JpcHRpb24oUFFFeHBCdWZmZXIgYnVmLCBUb2NFbnRyeSAq dGUsIEFyY2hpdmVIYW5kbGUgKkFIKQogCQlzdHJjbXAodHlwZSwgIlNFUlZFUiIpID09IDAgfHwK IAkJc3RyY21wKHR5cGUsICJQVUJMSUNBVElPTiIpID09IDAgfHwKIAkJc3RyY21wKHR5cGUsICJT VUJTQ1JJUFRJT04iKSA9PSAwIHx8Ci0JCXN0cmNtcCh0eXBlLCAiVVNFUiBNQVBQSU5HIikgPT0g MCkKKwkJc3RyY21wKHR5cGUsICJVU0VSIE1BUFBJTkciKSA9PSAwIHx8CisJCXN0cmNtcCh0eXBl LCAiVkFSSUFCTEUiKSA9PSAwKQogCXsKIAkJYXBwZW5kUFFFeHBCdWZmZXIoYnVmLCAiJXMgIiwg dHlwZSk7CiAJCWlmICh0ZS0+bmFtZXNwYWNlICYmICp0ZS0+bmFtZXNwYWNlKQpAQCAtMzY2MSw2 ICszNjYyLDcgQEAgX3ByaW50VG9jRW50cnkoQXJjaGl2ZUhhbmRsZSAqQUgsIFRvY0VudHJ5ICp0 ZSwgYm9vbCBpc0RhdGEpCiAJCQlzdHJjbXAodGUtPmRlc2MsICJUQUJMRSIpID09IDAgfHwKIAkJ CXN0cmNtcCh0ZS0+ZGVzYywgIlRZUEUiKSA9PSAwIHx8CiAJCQlzdHJjbXAodGUtPmRlc2MsICJW SUVXIikgPT0gMCB8fAorCQkJc3RyY21wKHRlLT5kZXNjLCAiVkFSSUFCTEUiKSA9PSAwIHx8CiAJ CQlzdHJjbXAodGUtPmRlc2MsICJNQVRFUklBTElaRUQgVklFVyIpID09IDAgfHwKIAkJCXN0cmNt cCh0ZS0+ZGVzYywgIlNFUVVFTkNFIikgPT0gMCB8fAogCQkJc3RyY21wKHRlLT5kZXNjLCAiRk9S RUlHTiBUQUJMRSIpID09IDAgfHwKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1w LmMgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCmluZGV4IDU2NmNiZjJjZGEuLjgyZjhjMTg5 ZjggMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKKysrIGIvc3JjL2Jpbi9w Z19kdW1wL3BnX2R1bXAuYwpAQCAtMTMyNSwxMCArMTMyNSwxMSBAQCBleHBhbmRfdGFibGVfbmFt ZV9wYXR0ZXJucyhBcmNoaXZlICpmb3V0LAogCQkJCQkJICAiXG4gICAgIExFRlQgSk9JTiBwZ19j YXRhbG9nLnBnX25hbWVzcGFjZSBuIgogCQkJCQkJICAiXG4gICAgIE9OIG4ub2lkIE9QRVJBVE9S KHBnX2NhdGFsb2cuPSkgYy5yZWxuYW1lc3BhY2UiCiAJCQkJCQkgICJcbldIRVJFIGMucmVsa2lu ZCBPUEVSQVRPUihwZ19jYXRhbG9nLj0pIEFOWSIKLQkJCQkJCSAgIlxuICAgIChhcnJheVsnJWMn LCAnJWMnLCAnJWMnLCAnJWMnLCAnJWMnLCAnJWMnXSlcbiIsCisJCQkJCQkgICJcbiAgICAoYXJy YXlbJyVjJywgJyVjJywgJyVjJywgJyVjJywgJyVjJywgJyVjLCAlYyddKVxuIiwKIAkJCQkJCSAg UkVMS0lORF9SRUxBVElPTiwgUkVMS0lORF9TRVFVRU5DRSwgUkVMS0lORF9WSUVXLAogCQkJCQkJ ICBSRUxLSU5EX01BVFZJRVcsIFJFTEtJTkRfRk9SRUlHTl9UQUJMRSwKLQkJCQkJCSAgUkVMS0lO RF9QQVJUSVRJT05FRF9UQUJMRSk7CisJCQkJCQkgIFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUs CisJCQkJCQkgIFJFTEtJTkRfVkFSSUFCTEUpOwogCQlwcm9jZXNzU1FMTmFtZVBhdHRlcm4oR2V0 Q29ubmVjdGlvbihmb3V0KSwgcXVlcnksIGNlbGwtPnZhbCwgdHJ1ZSwKIAkJCQkJCQkgIGZhbHNl LCAibi5uc3BuYW1lIiwgImMucmVsbmFtZSIsIE5VTEwsCiAJCQkJCQkJICAicGdfY2F0YWxvZy5w Z190YWJsZV9pc192aXNpYmxlKGMub2lkKSIpOwpAQCAtMjI1Niw2ICsyMjU3LDEwIEBAIG1ha2VU YWJsZURhdGFJbmZvKER1bXBPcHRpb25zICpkb3B0LCBUYWJsZUluZm8gKnRiaW5mbywgYm9vbCBv aWRzKQogCQlkb3B0LT5ub191bmxvZ2dlZF90YWJsZV9kYXRhKQogCQlyZXR1cm47CiAKKwkvKiBE b24ndCBkdW1wIGRhdGEgb2YgdmFyaWFibGVzICovCisJaWYgKHRiaW5mby0+cmVsa2luZCA9PSBS RUxLSU5EX1ZBUklBQkxFKQorCQlyZXR1cm47CisKIAkvKiBDaGVjayB0aGF0IHRoZSBkYXRhIGlz IG5vdCBleHBsaWNpdGx5IGV4Y2x1ZGVkICovCiAJaWYgKHNpbXBsZV9vaWRfbGlzdF9tZW1iZXIo JnRhYmxlZGF0YV9leGNsdWRlX29pZHMsCiAJCQkJCQkJICAgdGJpbmZvLT5kb2JqLmNhdElkLm9p ZCkpCkBAIC0yNDc3LDkgKzI0ODIsMTAgQEAgZ3Vlc3NDb25zdHJhaW50SW5oZXJpdGFuY2UoVGFi bGVJbmZvICp0YmxpbmZvLCBpbnQgbnVtVGFibGVzKQogCQlUYWJsZUluZm8gKipwYXJlbnRzOwog CQlUYWJsZUluZm8gICpwYXJlbnQ7CiAKLQkJLyogU2VxdWVuY2VzIGFuZCB2aWV3cyBuZXZlciBo YXZlIHBhcmVudHMgKi8KKwkJLyogU2VxdWVuY2VzLCB2YXJpYWJsZXMgYW5kIHZpZXdzIG5ldmVy IGhhdmUgcGFyZW50cyAqLwogCQlpZiAodGJpbmZvLT5yZWxraW5kID09IFJFTEtJTkRfU0VRVUVO Q0UgfHwKLQkJCXRiaW5mby0+cmVsa2luZCA9PSBSRUxLSU5EX1ZJRVcpCisJCQl0YmluZm8tPnJl bGtpbmQgPT0gUkVMS0lORF9WSUVXIHx8CisJCQl0YmluZm8tPnJlbGtpbmQgPT0gUkVMS0lORF9W QVJJQUJMRSkKIAkJCWNvbnRpbnVlOwogCiAJCS8qIERvbid0IGJvdGhlciBjb21wdXRpbmcgYW55 dGhpbmcgZm9yIG5vbi10YXJnZXQgdGFibGVzLCBlaXRoZXIgKi8KQEAgLTU5NjgsNyArNTk3NCw3 IEBAIGdldFRhYmxlcyhBcmNoaXZlICpmb3V0LCBpbnQgKm51bVRhYmxlcykKIAkJCQkJCSAgIihj Lm9pZCA9IHBpcC5vYmpvaWQgIgogCQkJCQkJICAiQU5EIHBpcC5jbGFzc29pZCA9ICdwZ19jbGFz cyc6OnJlZ2NsYXNzICIKIAkJCQkJCSAgIkFORCBwaXAub2Jqc3ViaWQgPSAwKSAiCi0JCQkJCQkg ICJXSEVSRSBjLnJlbGtpbmQgaW4gKCclYycsICclYycsICclYycsICclYycsICclYycsICclYycs ICclYycpICIKKwkJCQkJCSAgIldIRVJFIGMucmVsa2luZCBpbiAoJyVjJywgJyVjJywgJyVjJywg JyVjJywgJyVjJywgJyVjJywgJyVjJywgJyVjJykgIgogCQkJCQkJICAiT1JERVIgQlkgYy5vaWQi LAogCQkJCQkJICBhY2xfc3VicXVlcnktPmRhdGEsCiAJCQkJCQkgIHJhY2xfc3VicXVlcnktPmRh dGEsCkBAIC01OTg3LDcgKzU5OTMsOCBAQCBnZXRUYWJsZXMoQXJjaGl2ZSAqZm91dCwgaW50ICpu dW1UYWJsZXMpCiAJCQkJCQkgIFJFTEtJTkRfUkVMQVRJT04sIFJFTEtJTkRfU0VRVUVOQ0UsCiAJ CQkJCQkgIFJFTEtJTkRfVklFVywgUkVMS0lORF9DT01QT1NJVEVfVFlQRSwKIAkJCQkJCSAgUkVM S0lORF9NQVRWSUVXLCBSRUxLSU5EX0ZPUkVJR05fVEFCTEUsCi0JCQkJCQkgIFJFTEtJTkRfUEFS VElUSU9ORURfVEFCTEUpOworCQkJCQkJICBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFLAorCQkJ CQkJICBSRUxLSU5EX1ZBUklBQkxFKTsKIAogCQlkZXN0cm95UFFFeHBCdWZmZXIoYWNsX3N1YnF1 ZXJ5KTsKIAkJZGVzdHJveVBRRXhwQnVmZmVyKHJhY2xfc3VicXVlcnkpOwpAQCAtMTUzNzAsNiAr MTUzNzcsMTEgQEAgZHVtcFRhYmxlU2NoZW1hKEFyY2hpdmUgKmZvdXQsIFRhYmxlSW5mbyAqdGJp bmZvKQogCQkJCXNydm5hbWUgPSBOVUxMOwogCQkJCWZ0b3B0aW9ucyA9IE5VTEw7CiAJCQkJYnJl YWs7CisJCQljYXNlIFJFTEtJTkRfVkFSSUFCTEU6CisJCQkJcmVsdHlwZW5hbWUgPSAiVkFSSUFC TEUiOworCQkJCXNydm5hbWUgPSBOVUxMOworCQkJCWZ0b3B0aW9ucyA9IE5VTEw7CisJCQkJYnJl YWs7CiAJCQlkZWZhdWx0OgogCQkJCXJlbHR5cGVuYW1lID0gIlRBQkxFIjsKIAkJCQlzcnZuYW1l ID0gTlVMTDsKQEAgLTE1MzkxLDEyICsxNTQwMywyOCBAQCBkdW1wVGFibGVTY2hlbWEoQXJjaGl2 ZSAqZm91dCwgVGFibGVJbmZvICp0YmluZm8pCiAJCQkJCQkgIHJlbHR5cGVuYW1lLAogCQkJCQkJ ICBxdWFscmVsbmFtZSk7CiAKKwkJLyoKKwkJICogQmluYXJ5IHVwZ3JhZGUgb2YgdmFyaWFibGVz IHNob3VsZCB0byBiZSBmaXhlZCB3aXRoIHN1cHBvcnQKKwkJICogY29tcG9zaXRlIHR5cGVzLCBh bmQgc2hvdWxkIGJlIHRlc3RlZCBUb0RvCisJCSAqLworCQlpZiAodGJpbmZvLT5yZWxraW5kID09 IFJFTEtJTkRfVkFSSUFCTEUpCisJCXsKKwkJCQlhcHBlbmRQUUV4cEJ1ZmZlcihxLCAiIEFTIik7 CisJCQkJaWYgKHRiaW5mby0+cmVsb2Z0eXBlICE9IE5VTEwpCisJCQkJCWFwcGVuZFBRRXhwQnVm ZmVyKHEsICIgJXMiLAorCQkJCQkJCQkJICB0YmluZm8tPmF0dHR5cG5hbWVzWzBdKTsKKwkJCQlp ZiAodGJpbmZvLT5hdHRyZGVmc1swXSAhPSBOVUxMICYmIHRiaW5mby0+YXR0cmRlZnNbMF0tPmFk ZWZfZXhwciAhPSBOVUxMKQorCQkJCQlhcHBlbmRQUUV4cEJ1ZmZlcihxLCAiIERFRkFVTFQgJXMi LAorCQkJCQkJCQkJICB0YmluZm8tPmF0dHJkZWZzW2pdLT5hZGVmX2V4cHIpOworCQl9CisKIAkJ LyoKIAkJICogQXR0YWNoIHRvIHR5cGUsIGlmIHJlbG9mdHlwZTsgZXhjZXB0IGluIGNhc2Ugb2Yg YSBiaW5hcnkgdXBncmFkZSwKIAkJICogd2UgZHVtcCB0aGUgdGFibGUgbm9ybWFsbHkgYW5kIGF0 dGFjaCBpdCB0byB0aGUgdHlwZSBhZnRlcndhcmQuCiAJCSAqLwotCQlpZiAodGJpbmZvLT5yZWxv ZnR5cGUgJiYgIWRvcHQtPmJpbmFyeV91cGdyYWRlKQotCQkJYXBwZW5kUFFFeHBCdWZmZXIocSwg IiBPRiAlcyIsIHRiaW5mby0+cmVsb2Z0eXBlKTsKKwkJZWxzZSBpZiAodGJpbmZvLT5yZWxvZnR5 cGUgJiYgIWRvcHQtPmJpbmFyeV91cGdyYWRlKQorCQkJYXBwZW5kUFFFeHBCdWZmZXIocSwgIiBP RiAlcyIsCisJCQkJCQkJICB0YmluZm8tPnJlbG9mdHlwZSk7CiAKIAkJLyoKIAkJICogSWYgdGhl IHRhYmxlIGlzIGEgcGFydGl0aW9uLCBkdW1wIGl0IGFzIHN1Y2g7IGV4Y2VwdCBpbiB0aGUgY2Fz ZSBvZgpAQCAtMTU0MTksNyArMTU0NDcsOCBAQCBkdW1wVGFibGVTY2hlbWEoQXJjaGl2ZSAqZm91 dCwgVGFibGVJbmZvICp0YmluZm8pCiAJCQkJCQkJICBmbXRRdWFsaWZpZWREdW1wYWJsZShwYXJl bnRSZWwpKTsKIAkJfQogCi0JCWlmICh0YmluZm8tPnJlbGtpbmQgIT0gUkVMS0lORF9NQVRWSUVX KQorCQlpZiAodGJpbmZvLT5yZWxraW5kICE9IFJFTEtJTkRfTUFUVklFVyAmJgorCQkJISh0Ymlu Zm8tPnJlbGtpbmQgPT0gUkVMS0lORF9WQVJJQUJMRSAmJiB0YmluZm8tPnJlbG9mdHlwZSAhPSBO VUxMKSkKIAkJewogCQkJLyogRHVtcCB0aGUgYXR0cmlidXRlcyAqLwogCQkJYWN0dWFsX2F0dHMg PSAwOwpAQCAtMTU1NDUsNyArMTU1NzQsOCBAQCBkdW1wVGFibGVTY2hlbWEoQXJjaGl2ZSAqZm91 dCwgVGFibGVJbmZvICp0YmluZm8pCiAJCQkJICogV2UgbXVzdCBoYXZlIGEgcGFyZW50aGVzaXpl ZCBhdHRyaWJ1dGUgbGlzdCwgZXZlbiB0aG91Z2gKIAkJCQkgKiBlbXB0eSwgd2hlbiBub3QgdXNp bmcgdGhlIE9GIFRZUEUgb3IgUEFSVElUSU9OIE9GIHN5bnRheC4KIAkJCQkgKi8KLQkJCQlhcHBl bmRQUUV4cEJ1ZmZlclN0cihxLCAiIChcbikiKTsKKwkJCQlpZiAodGJpbmZvLT5yZWxraW5kICE9 IFJFTEtJTkRfVkFSSUFCTEUpCisJCQkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHEsICIgKFxuKSIp OwogCQkJfQogCiAJCQlpZiAodGJpbmZvLT5pc3BhcnRpdGlvbiAmJiAhZG9wdC0+YmluYXJ5X3Vw Z3JhZGUpCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oIGIvc3JjL2Jpbi9w Z19kdW1wL3BnX2R1bXAuaAppbmRleCBhNGQ2ZDkyNmE4Li40M2MyZjY2MmYxIDEwMDY0NAotLS0g YS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1w LmgKQEAgLTg0LDcgKzg0LDcgQEAgdHlwZWRlZiBlbnVtCiAJRE9fUE9MSUNZLAogCURPX1BVQkxJ Q0FUSU9OLAogCURPX1BVQkxJQ0FUSU9OX1JFTCwKLQlET19TVUJTQ1JJUFRJT04KKwlET19TVUJT Q1JJUFRJT04sCiB9IER1bXBhYmxlT2JqZWN0VHlwZTsKIAogLyogY29tcG9uZW50IHR5cGVzIG9m IGFuIG9iamVjdCB3aGljaCBjYW4gYmUgc2VsZWN0ZWQgZm9yIGR1bXBpbmcgKi8KZGlmZiAtLWdp dCBhL3NyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsIGIvc3JjL2Jpbi9wZ19kdW1wL3Qv MDAyX3BnX2R1bXAucGwKaW5kZXggMWJlYTZhZTgxZC4uNzdiMTYyYjM0YiAxMDA2NDQKLS0tIGEv c3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3Qv MDAyX3BnX2R1bXAucGwKQEAgLTU0MDYsNiArNTQwNiw3NSBAQCBxci9DUkVBVEUgVFJBTlNGT1JN IEZPUiBpbnRlZ2VyIExBTkdVQUdFIHNxbCBcKEZST00gU1FMIFdJVEggRlVOQ1RJT04gcGdfY2F0 YWxvZwogCQkJcm9sZSAgICAgICAgICAgICAgICAgICAgID0+IDEsCiAJCQlzZWN0aW9uX3Bvc3Rf ZGF0YSAgICAgICAgPT4gMSwgfSwgfSwKIAorCSdDUkVBVEUgVkFSSUFCTEUgdGVzdF92YXJpYWJs ZScgPT4geworCQlhbGxfcnVucyAgICAgPT4gMSwKKwkJY2F0Y2hfYWxsICAgID0+ICdDUkVBVEUg Li4uIGNvbW1hbmRzJywKKwkJY3JlYXRlX29yZGVyID0+IDYxLAorCQljcmVhdGVfc3FsICAgPT4g J0NSRUFURSBWQVJJQUJMRSBkdW1wX3Rlc3QudmFyaWFibGUgQVMgaW50ZWdlcjsnLAorCQlyZWdl eHAgPT4gcXIvXgorCQkJXFFDUkVBVEUgVkFSSUFCTEUgZHVtcF90ZXN0LnZhcmlhYmxlIEFTIGlu dGVnZXI7XEUveG0sCisJCWxpa2UgPT4geworCQkJYmluYXJ5X3VwZ3JhZGUgICAgICAgICAgPT4g MSwKKwkJCWNsZWFuICAgICAgICAgICAgICAgICAgID0+IDEsCisJCQljbGVhbl9pZl9leGlzdHMg ICAgICAgICA9PiAxLAorCQkJY3JlYXRlZGIgICAgICAgICAgICAgICAgPT4gMSwKKwkJCWRlZmF1 bHRzICAgICAgICAgICAgICAgID0+IDEsCisJCQlleGNsdWRlX3Rlc3RfdGFibGUgICAgICA9PiAx LAorCQkJZXhjbHVkZV90ZXN0X3RhYmxlX2RhdGEgPT4gMSwKKwkJCW5vX2Jsb2JzICAgICAgICAg ICAgICAgID0+IDEsCisJCQlub19wcml2cyAgICAgICAgICAgICAgICA9PiAxLAorCQkJbm9fb3du ZXIgICAgICAgICAgICAgICAgPT4gMSwKKwkJCW9ubHlfZHVtcF90ZXN0X3NjaGVtYSAgID0+IDEs CisJCQlwZ19kdW1wYWxsX2RicHJpdnMgICAgICA9PiAxLAorCQkJc2NoZW1hX29ubHkgICAgICAg ICAgICAgPT4gMSwKKwkJCXNlY3Rpb25fcHJlX2RhdGEgICAgICAgID0+IDEsCisJCQl0ZXN0X3Nj aGVtYV9wbHVzX2Jsb2JzICA9PiAxLAorCQkJd2l0aF9vaWRzICAgICAgICAgICAgICAgPT4gMSwg fSwKKwkJdW5saWtlID0+IHsKKwkJCWV4Y2x1ZGVfZHVtcF90ZXN0X3NjaGVtYSA9PiAxLAorCQkJ b25seV9kdW1wX3Rlc3RfdGFibGUgICAgID0+IDEsCisJCQlwZ19kdW1wYWxsX2dsb2JhbHMgICAg ICAgPT4gMSwKKwkJCXBnX2R1bXBhbGxfZ2xvYmFsc19jbGVhbiA9PiAxLAorCQkJcm9sZSAgICAg ICAgICAgICAgICAgICAgID0+IDEsCisJCQlzZWN0aW9uX3Bvc3RfZGF0YSAgICAgICAgPT4gMSwg fSwgfSwKKworCSdDUkVBVEUgVkFSSUFCTEUgdGVzdF92YXJpYWJsZSB3aXRoIGZpZWxkIGxpc3Qn ID0+IHsKKwkJYWxsX3J1bnMgICAgID0+IDEsCisJCWNhdGNoX2FsbCAgICA9PiAnQ1JFQVRFIC4u LiBjb21tYW5kcycsCisJCWNyZWF0ZV9vcmRlciA9PiA2MSwKKwkJY3JlYXRlX3NxbCAgID0+ICdD UkVBVEUgVkFSSUFCTEUgZHVtcF90ZXN0LnZhcmlhYmxlMSBBUyAoYSBpbnQsIGIgbnVtZXJpYygx MCwyKSk7JywKKwkJcmVnZXhwID0+IHFyL14KKwkJCVxRQ1JFQVRFIFZBUklBQkxFIGR1bXBfdGVz dC52YXJpYWJsZTEgQVMgKFxFCisJCQlcblxzK1xRYSBpbnRlZ2VyLFxFCisJCQlcblxzK1xRYiBu dW1lcmljKDEwLDIpXEUKKwkJCVxuXCk7CisJCQkveG0sCisJCWxpa2UgPT4geworCQkJYmluYXJ5 X3VwZ3JhZGUgICAgICAgICAgPT4gMSwKKwkJCWNsZWFuICAgICAgICAgICAgICAgICAgID0+IDEs CisJCQljbGVhbl9pZl9leGlzdHMgICAgICAgICA9PiAxLAorCQkJY3JlYXRlZGIgICAgICAgICAg ICAgICAgPT4gMSwKKwkJCWRlZmF1bHRzICAgICAgICAgICAgICAgID0+IDEsCisJCQlleGNsdWRl X3Rlc3RfdGFibGUgICAgICA9PiAxLAorCQkJZXhjbHVkZV90ZXN0X3RhYmxlX2RhdGEgPT4gMSwK KwkJCW5vX2Jsb2JzICAgICAgICAgICAgICAgID0+IDEsCisJCQlub19wcml2cyAgICAgICAgICAg ICAgICA9PiAxLAorCQkJbm9fb3duZXIgICAgICAgICAgICAgICAgPT4gMSwKKwkJCW9ubHlfZHVt cF90ZXN0X3NjaGVtYSAgID0+IDEsCisJCQlwZ19kdW1wYWxsX2RicHJpdnMgICAgICA9PiAxLAor CQkJc2NoZW1hX29ubHkgICAgICAgICAgICAgPT4gMSwKKwkJCXNlY3Rpb25fcHJlX2RhdGEgICAg ICAgID0+IDEsCisJCQl0ZXN0X3NjaGVtYV9wbHVzX2Jsb2JzICA9PiAxLAorCQkJd2l0aF9vaWRz ICAgICAgICAgICAgICAgPT4gMSwgfSwKKwkJdW5saWtlID0+IHsKKwkJCWV4Y2x1ZGVfZHVtcF90 ZXN0X3NjaGVtYSA9PiAxLAorCQkJb25seV9kdW1wX3Rlc3RfdGFibGUgICAgID0+IDEsCisJCQlw Z19kdW1wYWxsX2dsb2JhbHMgICAgICAgPT4gMSwKKwkJCXBnX2R1bXBhbGxfZ2xvYmFsc19jbGVh biA9PiAxLAorCQkJcm9sZSAgICAgICAgICAgICAgICAgICAgID0+IDEsCisJCQlzZWN0aW9uX3Bv c3RfZGF0YSAgICAgICAgPT4gMSwgfSwgfSwKKworCiAJJ0FMVEVSIFZJRVcgdGVzdF92aWV3IFNF VCBERUZBVUxUJyA9PiB7CiAJCWFsbF9ydW5zICAgICA9PiAxLAogCQljYXRjaF9hbGwgICAgPT4g J0NSRUFURSAuLi4gY29tbWFuZHMnLApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL2NvbW1hbmQu YyBiL3NyYy9iaW4vcHNxbC9jb21tYW5kLmMKaW5kZXggMzU2MDMxODc0OS4uYWQwMDMwYzBkZCAx MDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL2NvbW1hbmQuYworKysgYi9zcmMvYmluL3BzcWwvY29t bWFuZC5jCkBAIC03OTQsNiArNzk0LDcgQEAgZXhlY19jb21tYW5kX2QoUHNxbFNjYW5TdGF0ZSBz Y2FuX3N0YXRlLCBib29sIGFjdGl2ZV9icmFuY2gsIGNvbnN0IGNoYXIgKmNtZCkKIAkJCWNhc2Ug J2knOgogCQkJY2FzZSAncyc6CiAJCQljYXNlICdFJzoKKwkJCWNhc2UgJ1YnOgogCQkJCXN1Y2Nl c3MgPSBsaXN0VGFibGVzKCZjbWRbMV0sIHBhdHRlcm4sIHNob3dfdmVyYm9zZSwgc2hvd19zeXN0 ZW0pOwogCQkJCWJyZWFrOwogCQkJY2FzZSAncic6CmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwv ZGVzY3JpYmUuYyBiL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCmluZGV4IDBjM2JlMWY1MDQuLmEx MjJmNmZjYjYgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCisrKyBiL3NyYy9i aW4vcHNxbC9kZXNjcmliZS5jCkBAIC0xODI4LDYgKzE4MjgsMTAgQEAgZGVzY3JpYmVPbmVUYWJs ZURldGFpbHMoY29uc3QgY2hhciAqc2NoZW1hbmFtZSwKIAkJCXByaW50ZlBRRXhwQnVmZmVyKCZ0 aXRsZSwgXygiRm9yZWlnbiB0YWJsZSBcIiVzLiVzXCIiKSwKIAkJCQkJCQkgIHNjaGVtYW5hbWUs IHJlbGF0aW9ubmFtZSk7CiAJCQlicmVhazsKKwkJY2FzZSBSRUxLSU5EX1ZBUklBQkxFOgorCQkJ cHJpbnRmUFFFeHBCdWZmZXIoJnRpdGxlLCBfKCJzY2hlbWEgdmFyaWFibGUgXCIlcy4lc1wiIiks CisJCQkJCQkJICBzY2hlbWFuYW1lLCByZWxhdGlvbm5hbWUpOworCQkJYnJlYWs7CiAJCWNhc2Ug UkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRToKIAkJCWlmICh0YWJsZWluZm8ucmVscGVyc2lzdGVu Y2UgPT0gJ3UnKQogCQkJCXByaW50ZlBRRXhwQnVmZmVyKCZ0aXRsZSwgXygiVW5sb2dnZWQgdGFi bGUgXCIlcy4lc1wiIiksCkBAIC0zNDAxLDYgKzM0MDUsNyBAQCBsaXN0RGJSb2xlU2V0dGluZ3Mo Y29uc3QgY2hhciAqcGF0dGVybiwgY29uc3QgY2hhciAqcGF0dGVybjIpCiAgKiBtIC0gbWF0ZXJp YWxpemVkIHZpZXdzCiAgKiBzIC0gc2VxdWVuY2VzCiAgKiBFIC0gZm9yZWlnbiB0YWJsZSAoTm90 ZTogZGlmZmVyZW50IGZyb20gJ2YnLCB0aGUgcmVsa2luZCB2YWx1ZSkKKyAqIFYgLSBzY2hlbWEg dmFyaWFibGUKICAqIChhbnkgb3JkZXIgb2YgdGhlIGFib3ZlIGlzIGZpbmUpCiAgKi8KIGJvb2wK QEAgLTM0MTIsNiArMzQxNyw3IEBAIGxpc3RUYWJsZXMoY29uc3QgY2hhciAqdGFidHlwZXMsIGNv bnN0IGNoYXIgKnBhdHRlcm4sIGJvb2wgdmVyYm9zZSwgYm9vbCBzaG93U3lzCiAJYm9vbAkJc2hv d01hdFZpZXdzID0gc3RyY2hyKHRhYnR5cGVzLCAnbScpICE9IE5VTEw7CiAJYm9vbAkJc2hvd1Nl cSA9IHN0cmNocih0YWJ0eXBlcywgJ3MnKSAhPSBOVUxMOwogCWJvb2wJCXNob3dGb3JlaWduID0g c3RyY2hyKHRhYnR5cGVzLCAnRScpICE9IE5VTEw7CisJYm9vbAkJc2hvd1ZhcmlhYmxlcyA9IHN0 cmNocih0YWJ0eXBlcywgJ1YnKSAhPSBOVUxMOwogCiAJUFFFeHBCdWZmZXJEYXRhIGJ1ZjsKIAlQ R3Jlc3VsdCAgICpyZXM7CkBAIC0zNDE5LDggKzM0MjUsOCBAQCBsaXN0VGFibGVzKGNvbnN0IGNo YXIgKnRhYnR5cGVzLCBjb25zdCBjaGFyICpwYXR0ZXJuLCBib29sIHZlcmJvc2UsIGJvb2wgc2hv d1N5cwogCXN0YXRpYyBjb25zdCBib29sIHRyYW5zbGF0ZV9jb2x1bW5zW10gPSB7ZmFsc2UsIGZh bHNlLCB0cnVlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZX07CiAKIAkvKiBJZiB0YWJ0eXBl cyBpcyBlbXB0eSwgd2UgZGVmYXVsdCB0byBcZHR2bXNFIChidXQgc2VlIGFsc28gY29tbWFuZC5j KSAqLwotCWlmICghKHNob3dUYWJsZXMgfHwgc2hvd0luZGV4ZXMgfHwgc2hvd1ZpZXdzIHx8IHNo b3dNYXRWaWV3cyB8fCBzaG93U2VxIHx8IHNob3dGb3JlaWduKSkKLQkJc2hvd1RhYmxlcyA9IHNo b3dWaWV3cyA9IHNob3dNYXRWaWV3cyA9IHNob3dTZXEgPSBzaG93Rm9yZWlnbiA9IHRydWU7CisJ aWYgKCEoc2hvd1RhYmxlcyB8fCBzaG93SW5kZXhlcyB8fCBzaG93Vmlld3MgfHwgc2hvd01hdFZp ZXdzIHx8IHNob3dTZXEgfHwgc2hvd0ZvcmVpZ24gfHwgc2hvd1ZhcmlhYmxlcykpCisJCXNob3dU YWJsZXMgPSBzaG93Vmlld3MgPSBzaG93TWF0Vmlld3MgPSBzaG93U2VxID0gc2hvd0ZvcmVpZ24g PSBzaG93VmFyaWFibGVzID0gdHJ1ZTsKIAogCWluaXRQUUV4cEJ1ZmZlcigmYnVmKTsKIApAQCAt MzQ0MSw2ICszNDQ3LDcgQEAgbGlzdFRhYmxlcyhjb25zdCBjaGFyICp0YWJ0eXBlcywgY29uc3Qg Y2hhciAqcGF0dGVybiwgYm9vbCB2ZXJib3NlLCBib29sIHNob3dTeXMKIAkJCQkJICAiIFdIRU4g IiBDcHBBc1N0cmluZzIoUkVMS0lORF9GT1JFSUdOX1RBQkxFKSAiIFRIRU4gJyVzJyIKIAkJCQkJ ICAiIFdIRU4gIiBDcHBBc1N0cmluZzIoUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSkgIiBUSEVO ICclcyciCiAJCQkJCSAgIiBXSEVOICIgQ3BwQXNTdHJpbmcyKFJFTEtJTkRfUEFSVElUSU9ORURf SU5ERVgpICIgVEhFTiAnJXMnIgorCQkJCQkgICIgV0hFTiAiIENwcEFzU3RyaW5nMihSRUxLSU5E X1ZBUklBQkxFKSAiIFRIRU4gJyVzJyIKIAkJCQkJICAiIEVORCBhcyBcIiVzXCIsXG4iCiAJCQkJ CSAgIiAgcGdfY2F0YWxvZy5wZ19nZXRfdXNlcmJ5aWQoYy5yZWxvd25lcikgYXMgXCIlc1wiIiwK IAkJCQkJICBnZXR0ZXh0X25vb3AoIlNjaGVtYSIpLApAQCAtMzQ1NCw2ICszNDYxLDcgQEAgbGlz dFRhYmxlcyhjb25zdCBjaGFyICp0YWJ0eXBlcywgY29uc3QgY2hhciAqcGF0dGVybiwgYm9vbCB2 ZXJib3NlLCBib29sIHNob3dTeXMKIAkJCQkJICBnZXR0ZXh0X25vb3AoImZvcmVpZ24gdGFibGUi KSwKIAkJCQkJICBnZXR0ZXh0X25vb3AoInRhYmxlIiksCS8qIHBhcnRpdGlvbmVkIHRhYmxlICov CiAJCQkJCSAgZ2V0dGV4dF9ub29wKCJpbmRleCIpLAkvKiBwYXJ0aXRpb25lZCBpbmRleCAqLwor CQkJCQkgIGdldHRleHRfbm9vcCgic2NoZW1hIHZhcmlhYmxlIiksCiAJCQkJCSAgZ2V0dGV4dF9u b29wKCJUeXBlIiksCiAJCQkJCSAgZ2V0dGV4dF9ub29wKCJPd25lciIpKTsKIApAQCAtMzUwNyw2 ICszNTE1LDggQEAgbGlzdFRhYmxlcyhjb25zdCBjaGFyICp0YWJ0eXBlcywgY29uc3QgY2hhciAq cGF0dGVybiwgYm9vbCB2ZXJib3NlLCBib29sIHNob3dTeXMKIAkJYXBwZW5kUFFFeHBCdWZmZXJT dHIoJmJ1ZiwgIidzJywiKTsgLyogd2FzIFJFTEtJTkRfU1BFQ0lBTCAqLwogCWlmIChzaG93Rm9y ZWlnbikKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmJ1ZiwgQ3BwQXNTdHJpbmcyKFJFTEtJTkRf Rk9SRUlHTl9UQUJMRSkgIiwiKTsKKwlpZiAoc2hvd1ZhcmlhYmxlcykKKwkJYXBwZW5kUFFFeHBC dWZmZXJTdHIoJmJ1ZiwgQ3BwQXNTdHJpbmcyKFJFTEtJTkRfVkFSSUFCTEUpICIsIik7CiAKIAlh cHBlbmRQUUV4cEJ1ZmZlclN0cigmYnVmLCAiJyciKTsJLyogZHVtbXkgKi8KIAlhcHBlbmRQUUV4 cEJ1ZmZlclN0cigmYnVmLCAiKVxuIik7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvZGVzY3Jp YmUuaCBiL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5oCmluZGV4IGE0Y2M1ZWZhZTAuLmM1ZjEwN2Q4 MTQgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5oCisrKyBiL3NyYy9iaW4vcHNx bC9kZXNjcmliZS5oCkBAIC02MCw3ICs2MCw3IEBAIGV4dGVybiBib29sIGxpc3RUU1RlbXBsYXRl cyhjb25zdCBjaGFyICpwYXR0ZXJuLCBib29sIHZlcmJvc2UpOwogLyogXGwgKi8KIGV4dGVybiBi b29sIGxpc3RBbGxEYnMoY29uc3QgY2hhciAqcGF0dGVybiwgYm9vbCB2ZXJib3NlKTsKIAotLyog XGR0LCBcZGksIFxkcywgXGRTLCBldGMuICovCisvKiBcZHQsIFxkaSwgXGRzLCBcZFMsIFxkdmFy IGV0Yy4gKi8KIGV4dGVybiBib29sIGxpc3RUYWJsZXMoY29uc3QgY2hhciAqdGFidHlwZXMsIGNv bnN0IGNoYXIgKnBhdHRlcm4sIGJvb2wgdmVyYm9zZSwgYm9vbCBzaG93U3lzdGVtKTsKIAogLyog XGREICovCmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvaGVscC5jIGIvc3JjL2Jpbi9wc3FsL2hl bHAuYwppbmRleCA3MDJlNzQyYWY0Li4yZGE1MGY3MjkwIDEwMDY0NAotLS0gYS9zcmMvYmluL3Bz cWwvaGVscC5jCisrKyBiL3NyYy9iaW4vcHNxbC9oZWxwLmMKQEAgLTE2Nyw3ICsxNjcsNyBAQCBz bGFzaFVzYWdlKHVuc2lnbmVkIHNob3J0IGludCBwYWdlcikKIAkgKiBVc2UgInBzcWwgLS1oZWxw PWNvbW1hbmRzIHwgd2MiIHRvIGNvdW50IGNvcnJlY3RseS4gIEl0J3Mgb2theSB0byBjb3VudAog CSAqIHRoZSBVU0VfUkVBRExJTkUgbGluZSBldmVuIGluIGJ1aWxkcyB3aXRob3V0IHRoYXQuCiAJ ICovCi0Jb3V0cHV0ID0gUGFnZU91dHB1dCgxMjUsIHBhZ2VyID8gJihwc2V0LnBvcHQudG9wdCkg OiBOVUxMKTsKKwlvdXRwdXQgPSBQYWdlT3V0cHV0KDEyNiwgcGFnZXIgPyAmKHBzZXQucG9wdC50 b3B0KSA6IE5VTEwpOwogCiAJZnByaW50ZihvdXRwdXQsIF8oIkdlbmVyYWxcbiIpKTsKIAlmcHJp bnRmKG91dHB1dCwgXygiICBcXGNvcHlyaWdodCAgICAgICAgICAgICBzaG93IFBvc3RncmVTUUwg dXNhZ2UgYW5kIGRpc3RyaWJ1dGlvbiB0ZXJtc1xuIikpOwpAQCAtMjU3LDYgKzI1Nyw3IEBAIHNs YXNoVXNhZ2UodW5zaWduZWQgc2hvcnQgaW50IHBhZ2VyKQogCWZwcmludGYob3V0cHV0LCBfKCIg IFxcZFRbUytdIFtQQVRURVJOXSAgICAgIGxpc3QgZGF0YSB0eXBlc1xuIikpOwogCWZwcmludGYo b3V0cHV0LCBfKCIgIFxcZHVbUytdIFtQQVRURVJOXSAgICAgIGxpc3Qgcm9sZXNcbiIpKTsKIAlm cHJpbnRmKG91dHB1dCwgXygiICBcXGR2W1MrXSBbUEFUVEVSTl0gICAgICBsaXN0IHZpZXdzXG4i KSk7CisJZnByaW50ZihvdXRwdXQsIF8oIiAgXFxkVltTK10gW1BBVFRFUk5dICAgICAgbGlzdCBz Y2hlbWEgdmFyaWFibGVzXG4iKSk7CiAJZnByaW50ZihvdXRwdXQsIF8oIiAgXFxkeFsrXSAgW1BB VFRFUk5dICAgICAgbGlzdCBleHRlbnNpb25zXG4iKSk7CiAJZnByaW50ZihvdXRwdXQsIF8oIiAg XFxkeSAgICAgW1BBVFRFUk5dICAgICAgbGlzdCBldmVudCB0cmlnZ2Vyc1xuIikpOwogCWZwcmlu dGYob3V0cHV0LCBfKCIgIFxcbFsrXSAgIFtQQVRURVJOXSAgICAgIGxpc3QgZGF0YWJhc2VzXG4i KSk7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmMgYi9zcmMvYmluL3Bz cWwvdGFiLWNvbXBsZXRlLmMKaW5kZXggMDhkOGVmMDlhNC4uZGZkNDk2NmUyZCAxMDA2NDQKLS0t IGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5jCisrKyBiL3NyYy9iaW4vcHNxbC90YWItY29t cGxldGUuYwpAQCAtODA1LDYgKzgwNSwyMiBAQCBzdGF0aWMgY29uc3QgU2NoZW1hUXVlcnkgUXVl cnlfZm9yX2xpc3Rfb2Zfc3RhdGlzdGljcyA9IHsKIAlOVUxMCiB9OwogCitzdGF0aWMgY29uc3Qg U2NoZW1hUXVlcnkgUXVlcnlfZm9yX2xpc3Rfb2ZfdmFyaWFibGVzID0geworCS8qIG1pbl9zZXJ2 ZXJfdmVyc2lvbiAqLworCTAsCisJLyogY2F0bmFtZSAqLworCSJwZ19jYXRhbG9nLnBnX2NsYXNz IGMiLAorCS8qIHNlbGNvbmRpdGlvbiAqLworCSJjLnJlbGtpbmQgSU4gKCdWJykiLAorCS8qIHZp c2NvbmRpdGlvbiAqLworCSJwZ19jYXRhbG9nLnBnX3RhYmxlX2lzX3Zpc2libGUoYy5vaWQpIiwK KwkvKiBuYW1lc3BhY2UgKi8KKwkiYy5yZWxuYW1lc3BhY2UiLAorCS8qIHJlc3VsdCAqLworCSJw Z19jYXRhbG9nLnF1b3RlX2lkZW50KGMucmVsbmFtZSkiLAorCS8qIHF1YWxyZXN1bHQgKi8KKwlO VUxMCit9OwogCiAvKgogICogUXVlcmllcyB0byBnZXQgbGlzdHMgb2YgbmFtZXMgb2YgdmFyaW91 cyBraW5kcyBvZiB0aGluZ3MsIHBvc3NpYmx5CkBAIC0xMjQ5LDYgKzEyNjUsNyBAQCBzdGF0aWMg Y29uc3QgcGdzcWxfdGhpbmdfdCB3b3Jkc19hZnRlcl9jcmVhdGVbXSA9IHsKIAkJCQkJCQkJCQkJ CQkJCQkJICogVEFCTEUgLi4uICovCiAJeyJVU0VSIiwgUXVlcnlfZm9yX2xpc3Rfb2Zfcm9sZXMg IiBVTklPTiBTRUxFQ1QgJ01BUFBJTkcgRk9SJyJ9LAogCXsiVVNFUiBNQVBQSU5HIEZPUiIsIE5V TEwsIE5VTEwsIE5VTEx9LAorCXsiVkFSSUFCTEUiLCBOVUxMLCAmUXVlcnlfZm9yX2xpc3Rfb2Zf dmFyaWFibGVzfSwKIAl7IlZJRVciLCBOVUxMLCBOVUxMLCAmUXVlcnlfZm9yX2xpc3Rfb2Zfdmll d3N9LAogCXtOVUxMfQkJCQkJCS8qIGVuZCBvZiBsaXN0ICovCiB9OwpAQCAtMTYwNCw3ICsxNjIx LDcgQEAgcHNxbF9jb21wbGV0aW9uKGNvbnN0IGNoYXIgKnRleHQsIGludCBzdGFydCwgaW50IGVu ZCkKIAkJIkFCT1JUIiwgIkFMVEVSIiwgIkFOQUxZWkUiLCAiQkVHSU4iLCAiQ0FMTCIsICJDSEVD S1BPSU5UIiwgIkNMT1NFIiwgIkNMVVNURVIiLAogCQkiQ09NTUVOVCIsICJDT01NSVQiLCAiQ09Q WSIsICJDUkVBVEUiLCAiREVBTExPQ0FURSIsICJERUNMQVJFIiwKIAkJIkRFTEVURSBGUk9NIiwg IkRJU0NBUkQiLCAiRE8iLCAiRFJPUCIsICJFTkQiLCAiRVhFQ1VURSIsICJFWFBMQUlOIiwKLQkJ IkZFVENIIiwgIkdSQU5UIiwgIklNUE9SVCIsICJJTlNFUlQiLCAiTElTVEVOIiwgIkxPQUQiLCAi TE9DSyIsCisJCSJGRVRDSCIsICJHUkFOVCIsICJJTVBPUlQiLCAiSU5TRVJUIiwgIkxFVCIsICJM SVNURU4iLCAiTE9BRCIsICJMT0NLIiwKIAkJIk1PVkUiLCAiTk9USUZZIiwgIlBSRVBBUkUiLAog CQkiUkVBU1NJR04iLCAiUkVGUkVTSCBNQVRFUklBTElaRUQgVklFVyIsICJSRUlOREVYIiwgIlJF TEVBU0UiLAogCQkiUkVTRVQiLCAiUkVWT0tFIiwgIlJPTExCQUNLIiwKQEAgLTE2MjMsNyArMTY0 MCw3IEBAIHBzcWxfY29tcGxldGlvbihjb25zdCBjaGFyICp0ZXh0LCBpbnQgc3RhcnQsIGludCBl bmQpCiAJCSJcXGRGIiwgIlxcZEZkIiwgIlxcZEZwIiwgIlxcZEZ0IiwgIlxcZGciLCAiXFxkaSIs ICJcXGRsIiwgIlxcZEwiLAogCQkiXFxkbSIsICJcXGRuIiwgIlxcZG8iLCAiXFxkTyIsICJcXGRw IiwKIAkJIlxcZHJkcyIsICJcXGRScyIsICJcXGRScCIsICJcXGRzIiwgIlxcZFMiLAotCQkiXFxk dCIsICJcXGRUIiwgIlxcZHYiLCAiXFxkdSIsICJcXGR4IiwgIlxcZHkiLAorCQkiXFxkdCIsICJc XGRUIiwgIlxcZHYiLCAiXFxkdSIsICJcXGR4IiwgIlxcZHkiLCAiXFxkdmFyIiwKIAkJIlxcZSIs ICJcXGVjaG8iLCAiXFxlZiIsICJcXGVsaWYiLCAiXFxlbHNlIiwgIlxcZW5jb2RpbmciLAogCQki XFxlbmRpZiIsICJcXGVycnZlcmJvc2UiLCAiXFxldiIsCiAJCSJcXGYiLApAQCAtMjgzNCw2ICsy ODUxLDE0IEBAIHBzcWxfY29tcGxldGlvbihjb25zdCBjaGFyICp0ZXh0LCBpbnQgc3RhcnQsIGlu dCBlbmQpCiAJZWxzZSBpZiAoTWF0Y2hlczQoIkNSRUFURSIsICJST0xFfFVTRVJ8R1JPVVAiLCBN YXRjaEFueSwgIklOIikpCiAJCUNPTVBMRVRFX1dJVEhfTElTVDIoIkdST1VQIiwgIlJPTEUiKTsK IAorLyogQ1JFQVRFIFZBUklBQkxFIC0tLSBpcyBhbGxvd2VkIGluc2lkZSBDUkVBVEUgU0NIRU1B LCBzbyB1c2UgVGFpbE1hdGNoZXMgKi8KKwkvKiBDb21wbGV0ZSBDUkVBVEUgVkFSSUFCTEUgPG5h bWU+IHdpdGggQVMgKi8KKwllbHNlIGlmIChUYWlsTWF0Y2hlczMoIkNSRUFURSIsICJWQVJJQUJM RSIsIE1hdGNoQW55KSkKKwkJQ09NUExFVEVfV0lUSF9DT05TVCgiQVMiKTsKKwkvKiBDb21wbGV0 ZSBDUkVBVEUgVkFSSUFCTEUgPG5hbWU+IHdpdGggQVMgdHlwZXMqLworCWVsc2UgaWYgKFRhaWxN YXRjaGVzNCgiQ1JFQVRFIiwgIlZBUklBQkxFIiwgTWF0Y2hBbnksICJBUyIpKQorCQlDT01QTEVU RV9XSVRIX1NDSEVNQV9RVUVSWShRdWVyeV9mb3JfbGlzdF9vZl9kYXRhdHlwZXMsIE5VTEwpOwor CiAvKiBDUkVBVEUgVklFVyAtLS0gaXMgYWxsb3dlZCBpbnNpZGUgQ1JFQVRFIFNDSEVNQSwgc28g dXNlIFRhaWxNYXRjaGVzICovCiAJLyogQ29tcGxldGUgQ1JFQVRFIFZJRVcgPG5hbWU+IHdpdGgg QVMgKi8KIAllbHNlIGlmIChUYWlsTWF0Y2hlczMoIkNSRUFURSIsICJWSUVXIiwgTWF0Y2hBbnkp KQpAQCAtMjk4OSw2ICszMDE0LDEyIEBAIHBzcWxfY29tcGxldGlvbihjb25zdCBjaGFyICp0ZXh0 LCBpbnQgc3RhcnQsIGludCBlbmQpCiAJZWxzZSBpZiAoTWF0Y2hlczUoIkRST1AiLCAiUlVMRSIs IE1hdGNoQW55LCAiT04iLCBNYXRjaEFueSkpCiAJCUNPTVBMRVRFX1dJVEhfTElTVDIoIkNBU0NB REUiLCAiUkVTVFJJQ1QiKTsKIAorCS8qIERST1AgVkFSSUFCTEUgKi8KKwllbHNlIGlmIChNYXRj aGVzMigiRFJPUCIsICJWQVJJQUJMRSIpKQorCQlDT01QTEVURV9XSVRIX1NDSEVNQV9RVUVSWShR dWVyeV9mb3JfbGlzdF9vZl92YXJpYWJsZXMsIE5VTEwpOworCWVsc2UgaWYgKE1hdGNoZXMzKCJE Uk9QIiwgIlZBUklBQkxFIiwgTWF0Y2hBbnkpKQorCQlDT01QTEVURV9XSVRIX0xJU1QyKCJDQVND QURFIiwgIlJFU1RSSUNUIik7CisKIC8qIEVYRUNVVEUgKi8KIAllbHNlIGlmIChNYXRjaGVzMSgi RVhFQ1VURSIpKQogCQlDT01QTEVURV9XSVRIX1FVRVJZKFF1ZXJ5X2Zvcl9saXN0X29mX3ByZXBh cmVkX3N0YXRlbWVudHMpOwpAQCAtMjk5OSwxNCArMzAzMCwxNCBAQCBwc3FsX2NvbXBsZXRpb24o Y29uc3QgY2hhciAqdGV4dCwgaW50IHN0YXJ0LCBpbnQgZW5kKQogCSAqIENvbXBsZXRlIEVYUExB SU4gW0FOQUxZWkVdIFtWRVJCT1NFXSB3aXRoIGxpc3Qgb2YgRVhQTEFJTi1hYmxlIGNvbW1hbmRz CiAJICovCiAJZWxzZSBpZiAoTWF0Y2hlczEoIkVYUExBSU4iKSkKLQkJQ09NUExFVEVfV0lUSF9M SVNUNygiU0VMRUNUIiwgIklOU0VSVCIsICJERUxFVEUiLCAiVVBEQVRFIiwgIkRFQ0xBUkUiLAot CQkJCQkJCSJBTkFMWVpFIiwgIlZFUkJPU0UiKTsKKwkJQ09NUExFVEVfV0lUSF9MSVNUOCgiU0VM RUNUIiwgIklOU0VSVCIsICJERUxFVEUiLCAiVVBEQVRFIiwgIkRFQ0xBUkUiLAorCQkJCQkJCSJB TkFMWVpFIiwgIlZFUkJPU0UiLCAiTEVUIik7CiAJZWxzZSBpZiAoTWF0Y2hlczIoIkVYUExBSU4i LCAiQU5BTFlaRSIpKQotCQlDT01QTEVURV9XSVRIX0xJU1Q2KCJTRUxFQ1QiLCAiSU5TRVJUIiwg IkRFTEVURSIsICJVUERBVEUiLCAiREVDTEFSRSIsCi0JCQkJCQkJIlZFUkJPU0UiKTsKKwkJQ09N UExFVEVfV0lUSF9MSVNUNygiU0VMRUNUIiwgIklOU0VSVCIsICJERUxFVEUiLCAiVVBEQVRFIiwg IkRFQ0xBUkUiLAorCQkJCQkJCSJWRVJCT1NFIiwgIkxFVCIpOwogCWVsc2UgaWYgKE1hdGNoZXMy KCJFWFBMQUlOIiwgIlZFUkJPU0UiKSB8fAogCQkJIE1hdGNoZXMzKCJFWFBMQUlOIiwgIkFOQUxZ WkUiLCAiVkVSQk9TRSIpKQotCQlDT01QTEVURV9XSVRIX0xJU1Q1KCJTRUxFQ1QiLCAiSU5TRVJU IiwgIkRFTEVURSIsICJVUERBVEUiLCAiREVDTEFSRSIpOworCQlDT01QTEVURV9XSVRIX0xJU1Q2 KCJTRUxFQ1QiLCAiSU5TRVJUIiwgIkRFTEVURSIsICJVUERBVEUiLCAiREVDTEFSRSIsICJMRVQi KTsKIAogLyogRkVUQ0ggJiYgTU9WRSAqLwogCS8qIENvbXBsZXRlIEZFVENIIHdpdGggb25lIG9m IEZPUldBUkQsIEJBQ0tXQVJELCBSRUxBVElWRSAqLwpAQCAtMzExNSw2ICszMTQ2LDcgQEAgcHNx bF9jb21wbGV0aW9uKGNvbnN0IGNoYXIgKnRleHQsIGludCBzdGFydCwgaW50IGVuZCkKIAkJCQkJ CQkJCSAgICIgVU5JT04gU0VMRUNUICdBTEwgUk9VVElORVMgSU4gU0NIRU1BJyIKIAkJCQkJCQkJ CSAgICIgVU5JT04gU0VMRUNUICdBTEwgU0VRVUVOQ0VTIElOIFNDSEVNQSciCiAJCQkJCQkJCQkg ICAiIFVOSU9OIFNFTEVDVCAnQUxMIFRBQkxFUyBJTiBTQ0hFTUEnIgorCQkJCQkJCQkJICAgIiBV TklPTiBTRUxFQ1QgJ0FMTCBWQVJJQUJMRVMgSU4gU0NIRU1BJyIKIAkJCQkJCQkJCSAgICIgVU5J T04gU0VMRUNUICdEQVRBQkFTRSciCiAJCQkJCQkJCQkgICAiIFVOSU9OIFNFTEVDVCAnRE9NQUlO JyIKIAkJCQkJCQkJCSAgICIgVU5JT04gU0VMRUNUICdGT1JFSUdOIERBVEEgV1JBUFBFUiciCkBA IC0zMTI4LDE0ICszMTYwLDE2IEBAIHBzcWxfY29tcGxldGlvbihjb25zdCBjaGFyICp0ZXh0LCBp bnQgc3RhcnQsIGludCBlbmQpCiAJCQkJCQkJCQkgICAiIFVOSU9OIFNFTEVDVCAnU0VRVUVOQ0Un IgogCQkJCQkJCQkJICAgIiBVTklPTiBTRUxFQ1QgJ1RBQkxFJyIKIAkJCQkJCQkJCSAgICIgVU5J T04gU0VMRUNUICdUQUJMRVNQQUNFJyIKLQkJCQkJCQkJCSAgICIgVU5JT04gU0VMRUNUICdUWVBF JyIpOworCQkJCQkJCQkJICAgIiBVTklPTiBTRUxFQ1QgJ1RZUEUnIgorCQkJCQkJCQkJICAgIiBV TklPTiBTRUxFQ1QgJ1ZBUklBQkxFJyIpOwogCX0KIAllbHNlIGlmIChUYWlsTWF0Y2hlczQoIkdS QU5UfFJFVk9LRSIsIE1hdGNoQW55LCAiT04iLCAiQUxMIikpCi0JCUNPTVBMRVRFX1dJVEhfTElT VDUoIkZVTkNUSU9OUyBJTiBTQ0hFTUEiLAorCQlDT01QTEVURV9XSVRIX0xJU1Q2KCJGVU5DVElP TlMgSU4gU0NIRU1BIiwKIAkJCQkJCQkiUFJPQ0VEVVJFUyBJTiBTQ0hFTUEiLAogCQkJCQkJCSJS T1VUSU5FUyBJTiBTQ0hFTUEiLAogCQkJCQkJCSJTRVFVRU5DRVMgSU4gU0NIRU1BIiwKLQkJCQkJ CQkiVEFCTEVTIElOIFNDSEVNQSIpOworCQkJCQkJCSJUQUJMRVMgSU4gU0NIRU1BIiwKKwkJCQkJ CQkiVkFSSUFCTEVTIElOIFNDSEVNQSIpOwogCWVsc2UgaWYgKFRhaWxNYXRjaGVzNCgiR1JBTlR8 UkVWT0tFIiwgTWF0Y2hBbnksICJPTiIsICJGT1JFSUdOIikpCiAJCUNPTVBMRVRFX1dJVEhfTElT VDIoIkRBVEEgV1JBUFBFUiIsICJTRVJWRVIiKTsKIApAQCAtMzE2NSw2ICszMTk5LDggQEAgcHNx bF9jb21wbGV0aW9uKGNvbnN0IGNoYXIgKnRleHQsIGludCBzdGFydCwgaW50IGVuZCkKIAkJCUNP TVBMRVRFX1dJVEhfU0NIRU1BX1FVRVJZKFF1ZXJ5X2Zvcl9saXN0X29mX3NlcXVlbmNlcywgTlVM TCk7CiAJCWVsc2UgaWYgKFRhaWxNYXRjaGVzMSgiVEFCTEUiKSkKIAkJCUNPTVBMRVRFX1dJVEhf U0NIRU1BX1FVRVJZKFF1ZXJ5X2Zvcl9saXN0X29mX3Rzdm1mLCBOVUxMKTsKKwkJZWxzZSBpZiAo VGFpbE1hdGNoZXMxKCJWQVJJQUJMRSIpKQorCQkJQ09NUExFVEVfV0lUSF9TQ0hFTUFfUVVFUlko UXVlcnlfZm9yX2xpc3Rfb2ZfdmFyaWFibGVzLCBOVUxMKTsKIAkJZWxzZSBpZiAoVGFpbE1hdGNo ZXMxKCJUQUJMRVNQQUNFIikpCiAJCQlDT01QTEVURV9XSVRIX1FVRVJZKFF1ZXJ5X2Zvcl9saXN0 X29mX3RhYmxlc3BhY2VzKTsKIAkJZWxzZSBpZiAoVGFpbE1hdGNoZXMxKCJUWVBFIikpCkBAIC0z MzIxLDcgKzMzNTcsNyBAQCBwc3FsX2NvbXBsZXRpb24oY29uc3QgY2hhciAqdGV4dCwgaW50IHN0 YXJ0LCBpbnQgZW5kKQogCiAvKiBQUkVQQVJFIHh4IEFTICovCiAJZWxzZSBpZiAoTWF0Y2hlczMo IlBSRVBBUkUiLCBNYXRjaEFueSwgIkFTIikpCi0JCUNPTVBMRVRFX1dJVEhfTElTVDQoIlNFTEVD VCIsICJVUERBVEUiLCAiSU5TRVJUIiwgIkRFTEVURSBGUk9NIik7CisJCUNPTVBMRVRFX1dJVEhf TElTVDUoIlNFTEVDVCIsICJVUERBVEUiLCAiSU5TRVJUIiwgIkRFTEVURSBGUk9NIiwgIkxFVCIp OwogCiAvKgogICogUFJFUEFSRSBUUkFOU0FDVElPTiBpcyBtaXNzaW5nIG9uIHB1cnBvc2UuIEl0 J3MgaW50ZW5kZWQgZm9yIHRyYW5zYWN0aW9uCkBAIC0zNTQwLDYgKzM1NzYsMTQgQEAgcHNxbF9j b21wbGV0aW9uKGNvbnN0IGNoYXIgKnRleHQsIGludCBzdGFydCwgaW50IGVuZCkKIAllbHNlIGlm IChUYWlsTWF0Y2hlczQoIlVQREFURSIsIE1hdGNoQW55LCAiU0VUIiwgTWF0Y2hBbnkpKQogCQlD T01QTEVURV9XSVRIX0NPTlNUKCI9Iik7CiAKKy8qIExFVCAtLS0gY2FuIGJlIGluc2lkZSBFWFBM QUlOLCBQUkVQQVJFIGV0YyAqLworCS8qIElmIHByZXYuIHdvcmQgaXMgTEVUIHN1Z2dlc3QgYSBs aXN0IG9mIHZhcmlhYmxlcyAqLworCWVsc2UgaWYgKFRhaWxNYXRjaGVzMSgiTEVUIikpCisJCUNP TVBMRVRFX1dJVEhfU0NIRU1BX1FVRVJZKFF1ZXJ5X2Zvcl9saXN0X29mX3ZhcmlhYmxlcywgTlVM TCk7CisJLyogQ29tcGxldGUgTEVUIDx2YXJpYWJsZT4gd2l0aCAiPSIgKi8KKwllbHNlIGlmIChU YWlsTWF0Y2hlczIoIkxFVCIsIE1hdGNoQW55KSkKKwkJQ09NUExFVEVfV0lUSF9DT05TVCgiPSIp OworCiAvKiBVU0VSIE1BUFBJTkcgKi8KIAllbHNlIGlmIChNYXRjaGVzMygiQUxURVJ8Q1JFQVRF fERST1AiLCAiVVNFUiIsICJNQVBQSU5HIikpCiAJCUNPTVBMRVRFX1dJVEhfQ09OU1QoIkZPUiIp OwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19jbGFzcy5oIGIvc3JjL2luY2x1 ZGUvY2F0YWxvZy9wZ19jbGFzcy5oCmluZGV4IDdmYzM1NWFjYjguLjAyZWJjZTZiNWYgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfY2xhc3MuaAorKysgYi9zcmMvaW5jbHVkZS9j YXRhbG9nL3BnX2NsYXNzLmgKQEAgLTE2NSw2ICsxNjUsNyBAQCBERVNDUigiIik7CiAjZGVmaW5l CQkgIFJFTEtJTkRfRk9SRUlHTl9UQUJMRSAgICdmJwkvKiBmb3JlaWduIHRhYmxlICovCiAjZGVm aW5lCQkgIFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUgJ3AnIC8qIHBhcnRpdGlvbmVkIHRhYmxl ICovCiAjZGVmaW5lCQkgIFJFTEtJTkRfUEFSVElUSU9ORURfSU5ERVggJ0knIC8qIHBhcnRpdGlv bmVkIGluZGV4ICovCisjZGVmaW5lCQkgIFJFTEtJTkRfVkFSSUFCTEUJCSAgJ1YnCS8qIHNjaGVt YSB2YXJpYWJsZSAqLwogCiAjZGVmaW5lCQkgIFJFTFBFUlNJU1RFTkNFX1BFUk1BTkVOVAkncCcg LyogcmVndWxhciB0YWJsZSAqLwogI2RlZmluZQkJICBSRUxQRVJTSVNURU5DRV9VTkxPR0dFRAkn dScgLyogdW5sb2dnZWQgcGVybWFuZW50IHRhYmxlICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9jYXRhbG9nL3BnX2RlZmF1bHRfYWNsLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2RlZmF1 bHRfYWNsLmgKaW5kZXggMTFiMzA2MDM3ZC4uMTMyMzJkN2E0MyAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvY2F0YWxvZy9wZ19kZWZhdWx0X2FjbC5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cv cGdfZGVmYXVsdF9hY2wuaApAQCAtNzEsNSArNzEsNiBAQCB0eXBlZGVmIEZvcm1EYXRhX3BnX2Rl ZmF1bHRfYWNsICpGb3JtX3BnX2RlZmF1bHRfYWNsOwogI2RlZmluZSBERUZBQ0xPQkpfRlVOQ1RJ T04JCSdmJyAvKiBmdW5jdGlvbiAqLwogI2RlZmluZSBERUZBQ0xPQkpfVFlQRQkJCSdUJyAvKiB0 eXBlICovCiAjZGVmaW5lIERFRkFDTE9CSl9OQU1FU1BBQ0UJCSduJyAvKiBuYW1lc3BhY2UgKi8K KyNkZWZpbmUgREVGQUNMT0JKX1ZBUklBQkxFCQknVicgLyogdmFyaWFibGUgKi8KIAogI2VuZGlm CQkJCQkJCS8qIFBHX0RFRkFVTFRfQUNMX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2Nh dGFsb2cvcGdfcHJvYy5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmgKaW5kZXggMGZk YjQyZjYzOS4uYWFkMDlhZjNjNCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19w cm9jLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmgKQEAgLTU1NzMsNiArNTU3 MywxNiBAQCBERVNDUigibGlzdCBvZiBmaWxlcyBpbiB0aGUgV0FMIGRpcmVjdG9yeSIpOwogREFU QShpbnNlcnQgT0lEID0gNTAyOCAoIHNhdGlzZmllc19oYXNoX3BhcnRpdGlvbiBQR05TUCBQR1VJ RCAxMiAxIDAgMjI3NiAwIGYgZiBmIGYgZiBpIHMgNCAwIDE2ICIyNiAyMyAyMyAyMjc2IiBfbnVs bF8gIntpLGksaSx2fSIgX251bGxfIF9udWxsXyBfbnVsbF8gc2F0aXNmaWVzX2hhc2hfcGFydGl0 aW9uIF9udWxsXyBfbnVsbF8gX251bGxfICkpOwogREVTQ1IoImhhc2ggcGFydGl0aW9uIENIRUNL IGNvbnN0cmFpbnQiKTsKIAorLyogc2NoZW1hIHZhcmlhYmxlcyBmdW5jdGlvbiBpbnRlcmZhY2Ug Ki8KK0RBVEEoaW5zZXJ0IE9JRCA9IDYxMjIgKCBnZXRfc2NoZW1hX3ZhcmlhYmxlIFBHTlNQIFBH VUlEIDEyIDEgMCAwIDAgZiBmIGYgZiBmIHYgciAyIDAgMjI4MyAiMjIwNSAyMjgzIiBfbnVsbF8g X251bGxfIF9udWxsXyBfbnVsbF8gX251bGxfIGdldF9zY2hlbWFfdmFyaWFibGUgX251bGxfIF9u dWxsXyBfbnVsbF8gKSk7CitERVNDUigicmV0dXJucyB2YWx1ZSBvZiBzY2hlbWEgdmFyaWFibGUi KTsKK0RBVEEoaW5zZXJ0IE9JRCA9IDYxMjMgKCBzZXRfc2NoZW1hX3ZhcmlhYmxlIFBHTlNQIFBH VUlEIDEyIDEgMCAwIDAgZiBmIGYgZiBmIHYgciAyIDAgMjI3OCAiMjIwNSAyMjgzIiBfbnVsbF8g X251bGxfIF9udWxsXyBfbnVsbF8gX251bGxfIHNldF9zY2hlbWFfdmFyaWFibGUgX251bGxfIF9u dWxsXyBfbnVsbF8gKSk7CitERVNDUigic2V0IHZhbHVlIG9mIHNjaGVtYSB2YXJpYWJsZSIpOwor REFUQShpbnNlcnQgT0lEID0gNjEyNCAoIGdldF9zY2hlbWFfdmFyaWFibGUgUEdOU1AgUEdVSUQg MTIgMSAwIDAgMCBmIGYgZiBmIGYgdiByIDMgMCAyMjgzICIyMjA1IDE5IDIyODMiIF9udWxsXyBf bnVsbF8gX251bGxfIF9udWxsXyBfbnVsbF8gZ2V0X3NjaGVtYV92YXJpYWJsZV9maWVsZCBfbnVs bF8gX251bGxfIF9udWxsXyApKTsKK0RFU0NSKCJyZXR1cm5zIHZhbHVlIGZpZWxkIG9mIHNjaGVt YSB2YXJpYWJsZSBvZiBjb21wb3NpdGUgdHlwZSIpOworREFUQShpbnNlcnQgT0lEID0gNjEyNSAo IHNldF9zY2hlbWFfdmFyaWFibGUgUEdOU1AgUEdVSUQgMTIgMSAwIDAgMCBmIGYgZiBmIGYgdiBy IDMgMCAyMjc4ICIyMjA1IDE5IDIyODMiIF9udWxsXyBfbnVsbF8gX251bGxfIF9udWxsXyBfbnVs bF8gc2V0X3NjaGVtYV92YXJpYWJsZV9maWVsZCBfbnVsbF8gX251bGxfIF9udWxsXyApKTsKK0RF U0NSKCJzZXQgdmFsdWUgb2YgZmllbGQgb2Ygc2NoZW1hIHZhcmlhYmxlIG9mIGNvbXBvc2l0ZSB0 eXBlIik7CisKIC8qCiAgKiBTeW1ib2xpYyB2YWx1ZXMgZm9yIHByb2tpbmQgY29sdW1uCiAgKi8K ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3NjaGVtYXZhci5oIGIvc3JjL2luY2x1 ZGUvY29tbWFuZHMvc2NoZW1hdmFyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMC4uZmNkNTE2ZDE5MgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRz L3NjaGVtYXZhci5oCkBAIC0wLDAgKzEsMzkgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAq IHNjaGVtYXZhci5oCisgKgkgIHByb3RvdHlwZXMgZm9yIHNjaGVtYXZhci5jLgorICoKKyAqIFBv cnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0yMDE4LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9w bWVudCBHcm91cAorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk0LCBSZWdlbnRzIG9mIHRo ZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEKKyAqCisgKiBzcmMvaW5jbHVkZS9jb21tYW5kcy9z Y2hlbWF2YXIuaAorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisjaWZuZGVmIFNDSEVNQVZB Ul9ICisjZGVmaW5lIFNDSEVNQVZBUl9ICisKKyNpbmNsdWRlICJjYXRhbG9nL29iamVjdGFkZHJl c3MuaCIKKyNpbmNsdWRlICJub2Rlcy9wYXJzZW5vZGVzLmgiCisjaW5jbHVkZSAicGFyc2VyL3Bh cnNlX25vZGUuaCIKKworZXh0ZXJuIE9iamVjdEFkZHJlc3MgRGVmaW5lU2NoZW1hVmFyaWFibGUo UGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVTY2hlbWFWYXJTdG10ICp2YXIpOworCitleHRlcm4g dm9pZCBSZXNldFNjaGVtYVZhcmlhYmxlc0NhY2hlKHZvaWQpOworCitleHRlcm4gY2hhciAqZ2V0 X3NjaGVtYXZhcl9uYW1lKE9pZCB2YXJpZCk7CisKK2V4dGVybiB2b2lkIFNldFNjaGVtYVZhcmlh YmxlKE9pZCB2YXJpZCwgRGF0dW0gdmFsdWUsIGJvb2wgaXNOdWxsLCBPaWQgdHlwaWQsIGludDMy IHR5cG1vZCk7CitleHRlcm4gRGF0dW0gR2V0U2NoZW1hVmFyaWFibGUoT2lkIHZhcmlkLCBib29s ICppc051bGwsIE9pZCB0eXBpZCwgaW50MzIgdHlwbW9kLCAgaW50MTYgdHlwbGVuLCBib29sIHR5 cGJ5dmFsKTsKK2V4dGVybiB2b2lkIFNldFNjaGVtYVZhcmlhYmxlU2VjdXJlKE9pZCB2YXJpZCwg RGF0dW0gdmFsdWUsIGJvb2wgaXNOdWxsLCBPaWQgdHlwaWQsIGludDMyIHR5cG1vZCk7CitleHRl cm4gRGF0dW0gR2V0U2NoZW1hVmFyaWFibGVTZWN1cmUoT2lkIHZhcmlkLCBib29sICppc051bGws IE9pZCB0eXBpZCwgaW50MzIgdHlwbW9kLCBpbnQxNiB0eXBsZW4sIGJvb2wgdHlwYnl2YWwpOwor CitleHRlcm4gdm9pZCBTZXRTY2hlbWFWYXJpYWJsZUZpZWxkKE9pZCB2YXJpZCwgY29uc3QgY2hh ciAqZmllbGRuYW1lLCBEYXR1bSB2YWx1ZSwgYm9vbCBpc051bGwsIE9pZCB0eXBpZCwgaW50MzIg dHlwbW9kKTsKK2V4dGVybiBEYXR1bSBHZXRTY2hlbWFWYXJpYWJsZUZpZWxkKE9pZCB2YXJpZCwg Y29uc3QgY2hhciAqZmllbGRuYW1lLCBib29sICppc051bGwsIE9pZCB0eXBpZCwgaW50MzIgdHlw bW9kLCBpbnQxNiB0eXBsZW4sIGJvb2wgdHlwYnl2YWwpOworZXh0ZXJuIHZvaWQgU2V0U2NoZW1h VmFyaWFibGVGaWVsZFNlY3VyZShPaWQgdmFyaWQsIGNvbnN0IGNoYXIgKmZpZWxkbmFtZSwgRGF0 dW0gdmFsdWUsIGJvb2wgaXNOdWxsLCBPaWQgdHlwaWQsIGludDMyIHR5cG1vZCk7CitleHRlcm4g RGF0dW0gR2V0U2NoZW1hVmFyaWFibGVGaWVsZFNlY3VyZShPaWQgdmFyaWQsIGNvbnN0IGNoYXIg KmZpZWxkbmFtZSwgYm9vbCAqaXNOdWxsLCBPaWQgdHlwaWQsIGludDMyIHR5cG1vZCwgaW50MTYg dHlwbGVuLCBib29sIHR5cGJ5dmFsKTsKKworZXh0ZXJuIHZvaWQgc2NoZW1hdmFyX2dldF90eXBf dHlwbW9kKE9pZCB2YXJpZCwgT2lkICp0eXAsIGludDMyICp0eXBtb2QpOworZXh0ZXJuIGJvb2wg aXNfc2NoZW1hdmFyKE9pZCB2YXJpZCwgYm9vbCAqaXNfcm93dHlwZSk7CisKKyNlbmRpZgpcIE5v IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9y L2V4ZWNFeHByLmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjRXhwci5oCmluZGV4IDBjYWI0 MzFmNjUuLjNiNDNiYTQ4ZTYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNF eHByLmgKKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY0V4cHIuaApAQCAtMTM4LDYgKzEz OCw3IEBAIHR5cGVkZWYgZW51bSBFeHByRXZhbE9wCiAJRUVPUF9QQVJBTV9FWEVDLAogCUVFT1Bf UEFSQU1fRVhURVJOLAogCUVFT1BfUEFSQU1fQ0FMTEJBQ0ssCisJRUVPUF9QQVJBTV9TQ0hFTUFf VkFSSUFCTEUsCiAKIAkvKiByZXR1cm4gQ2FzZVRlc3RFeHByIHZhbHVlICovCiAJRUVPUF9DQVNF X1RFU1RWQUwsCkBAIC0zNDMsMTEgKzM0NCwxNCBAQCB0eXBlZGVmIHN0cnVjdCBFeHByRXZhbFN0 ZXAKIAkJCVR1cGxlRGVzYwlhcmdkZXNjOwogCQl9CQkJbnVsbHRlc3Rfcm93OwogCi0JCS8qIGZv ciBFRU9QX1BBUkFNX0VYRUMvRVhURVJOICovCisJCS8qIGZvciBFRU9QX1BBUkFNX0VYRUMvRVhU RVJOL1ZBUklBQkxFICovCiAJCXN0cnVjdAogCQl7Ci0JCQlpbnQJCQlwYXJhbWlkOwkvKiBudW1l cmljIElEIGZvciBwYXJhbWV0ZXIgKi8KLQkJCU9pZAkJCXBhcmFtdHlwZTsJLyogT0lEIG9mIHBh cmFtZXRlcidzIGRhdGF0eXBlICovCisJCQlpbnQJCQlwYXJhbWlkOwkJLyogbnVtZXJpYyBJRCBm b3IgcGFyYW1ldGVyICovCisJCQlPaWQJCQlwYXJhbXR5cGU7CQkvKiBPSUQgb2YgcGFyYW1ldGVy J3MgZGF0YXR5cGUgKi8KKwkJCWludDMyCQlwYXJhbXR5cG1vZDsJLyogdHlwbW9kIG9mIHBhcmFt IChub3QgdXNlZCB5ZXQpICovCisJCQlpbnQxNgkJcGFyYW10eXBsZW47CS8qIGV4cGVjdGVkIGxl bmd0aCAqLworCQkJYm9vbAkJcGFyYW10eXBieXZhbDsJLyogaXMgcGFzc2VkIGJ5IHZhbHVlICov CiAJCX0JCQlwYXJhbTsKIAogCQkvKiBmb3IgRUVPUF9QQVJBTV9DQUxMQkFDSyAqLwpkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL25vZGVz LmgKaW5kZXggNzRiMDk0YTljMy4uMmY0OTg2MDk5ZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv bm9kZXMvbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9ub2Rlcy5oCkBAIC0zNDQsNiAr MzQ0LDcgQEAgdHlwZWRlZiBlbnVtIE5vZGVUYWcKIAlUX0NyZWF0ZVRhYmxlQXNTdG10LAogCVRf Q3JlYXRlU2VxU3RtdCwKIAlUX0FsdGVyU2VxU3RtdCwKKwlUX0NyZWF0ZVNjaGVtYVZhclN0bXQs CiAJVF9WYXJpYWJsZVNldFN0bXQsCiAJVF9WYXJpYWJsZVNob3dTdG10LAogCVRfRGlzY2FyZFN0 bXQsCkBAIC00MTUsNiArNDE2LDcgQEAgdHlwZWRlZiBlbnVtIE5vZGVUYWcKIAlUX0NyZWF0ZVN0 YXRzU3RtdCwKIAlUX0FsdGVyQ29sbGF0aW9uU3RtdCwKIAlUX0NhbGxTdG10LAorCVRfTGV0U3Rt dCwKIAogCS8qCiAJICogVEFHUyBGT1IgUEFSU0UgVFJFRSBOT0RFUyAocGFyc2Vub2Rlcy5oKQpA QCAtNjU3LDYgKzY1OSw3IEBAIHR5cGVkZWYgZW51bSBDbWRUeXBlCiAJQ01EX1VQREFURSwJCQkJ CS8qIHVwZGF0ZSBzdG10ICovCiAJQ01EX0lOU0VSVCwJCQkJCS8qIGluc2VydCBzdG10ICovCiAJ Q01EX0RFTEVURSwKKwlDTURfTEVULAogCUNNRF9VVElMSVRZLAkJCQkvKiBjbWRzIGxpa2UgY3Jl YXRlLCBkZXN0cm95LCBjb3B5LCB2YWN1dW0sCiAJCQkJCQkJCSAqIGV0Yy4gKi8KIAlDTURfTk9U SElORwkJCQkJLyogZHVtbXkgY29tbWFuZCBmb3IgaW5zdGVhZCBub3RoaW5nIHJ1bGVzCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rl cy9wYXJzZW5vZGVzLmgKaW5kZXggOTIwODJiM2E3YS4uMmQ4ZmVkOGQ1NyAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3Bh cnNlbm9kZXMuaApAQCAtMTUwMyw2ICsxNTAzLDE1IEBAIHR5cGVkZWYgc3RydWN0IFVwZGF0ZVN0 bXQKIAlXaXRoQ2xhdXNlICp3aXRoQ2xhdXNlOwkJLyogV0lUSCBjbGF1c2UgKi8KIH0gVXBkYXRl U3RtdDsKIAordHlwZWRlZiBzdHJ1Y3QgTGV0U3RtdAoreworCU5vZGVUYWcJCXR5cGU7CisJTGlz dAkgICp0YXJnZXQ7CQkJLyogbGlzdCBvZiBmaWVsZHMgICovCisJTm9kZQkgICAqc2VsZWN0U3Rt dDsJCS8qIHRoZSBzb3VyY2UgU0VMRUNUL1ZBTFVFUywgb3IgTlVMTCAqLworCWludAkJCWxvY2F0 aW9uOworfSBMZXRTdG10OworCisKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqCQlTZWxl Y3QgU3RhdGVtZW50CiAgKgpAQCAtMTY4MCw2ICsxNjg5LDcgQEAgdHlwZWRlZiBlbnVtIE9iamVj dFR5cGUKIAlPQkpFQ1RfVFNURU1QTEFURSwKIAlPQkpFQ1RfVFlQRSwKIAlPQkpFQ1RfVVNFUl9N QVBQSU5HLAorCU9CSkVDVF9WQVJJQUJMRSwKIAlPQkpFQ1RfVklFVwogfSBPYmplY3RUeXBlOwog CkBAIC0yNDkyLDYgKzI1MDIsMjAgQEAgdHlwZWRlZiBzdHJ1Y3QgQWx0ZXJTZXFTdG10CiAJYm9v bAkJbWlzc2luZ19vazsJCS8qIHNraXAgZXJyb3IgaWYgYSByb2xlIGlzIG1pc3Npbmc/ICovCiB9 IEFsdGVyU2VxU3RtdDsKIAorLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoJCUNyZWF0ZSBW QVJJQUJMRSBTdGF0ZW1lbnQKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLwordHlwZWRl ZiBzdHJ1Y3QgQ3JlYXRlU2NoZW1hVmFyU3RtdAoreworCU5vZGVUYWcJCXR5cGU7CisJUmFuZ2VW YXIgICAqdmFyaWFibGU7CQkvKiB0aGUgdmFyaWFibGUgdG8gY3JlYXRlICovCisJVHlwZU5hbWUg ICAqdHlwZU5hbWU7CQkvKiB0aGUgc2NhbGFyIHZhcmlhYmxlIHR5cGUgKi8KKwlOb2RlCSAgICpk ZWZleHByOwkJLyogZGVmYXVsdCBleHByZXNzaW9uICovCisJTGlzdAkgICAqZmllbGRzOwkJCS8q IHRoZSBmaWVsZHMgb2YgY29tcG9zaXRlIHZhcmlhYmxlIHR5cGUgKi8KKwlib29sCQlpZl9ub3Rf ZXhpc3RzOwkvKiBqdXN0IGRvIG5vdGhpbmcgaWYgaXQgYWxyZWFkeSBleGlzdHM/ICovCit9IENy ZWF0ZVNjaGVtYVZhclN0bXQ7CisKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqCQlDcmVh dGUge0FnZ3JlZ2F0ZXxPcGVyYXRvcnxUeXBlfSBTdGF0ZW1lbnQKICAqIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KQEAgLTMyMjQsNyArMzI0OCw4IEBAIHR5cGVkZWYgZW51bSBEaXNjYXJkTW9kZQog CURJU0NBUkRfQUxMLAogCURJU0NBUkRfUExBTlMsCiAJRElTQ0FSRF9TRVFVRU5DRVMsCi0JRElT Q0FSRF9URU1QCisJRElTQ0FSRF9URU1QLAorCURJU0NBUkRfVkFSSUFCTEVTCiB9IERpc2NhcmRN b2RlOwogCiB0eXBlZGVmIHN0cnVjdCBEaXNjYXJkU3RtdApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvbm9kZXMvcHJpbW5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wcmltbm9kZXMuaAppbmRl eCAxYjRiMGQ3NWFmLi5iMzY2NDcxOTQwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9w cmltbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wcmltbm9kZXMuaApAQCAtMjI5LDEz ICsyMjksMTcgQEAgdHlwZWRlZiBzdHJ1Y3QgQ29uc3QKICAqCQkJCW9mIHRoZSBgcGFyYW1pZCcg ZmllbGQgY29udGFpbiB0aGUgU3ViTGluaydzIHN1YkxpbmtJZCwgYW5kCiAgKgkJCQl0aGUgbG93 LW9yZGVyIDE2IGJpdHMgY29udGFpbiB0aGUgY29sdW1uIG51bWJlci4gIChUaGlzIHR5cGUKICAq CQkJCW9mIFBhcmFtIGlzIGFsc28gY29udmVydGVkIHRvIFBBUkFNX0VYRUMgZHVyaW5nIHBsYW5u aW5nLikKKyAqCisgKgkJUEFSQU1fU0NIRU1BX1ZBUklBQkxFOiAgVGhlIHBhcmFtZXRlciBpcyBh IGFjY2VzcyB0byBzY2hlbWEgdmFyaWFibGUKKyAqCQkJCXBhcmFtaWQgaG9sZHMgdmFyaWQuCiAg Ki8KIHR5cGVkZWYgZW51bSBQYXJhbUtpbmQKIHsKIAlQQVJBTV9FWFRFUk4sCiAJUEFSQU1fRVhF QywKIAlQQVJBTV9TVUJMSU5LLAotCVBBUkFNX01VTFRJRVhQUgorCVBBUkFNX01VTFRJRVhQUiwK KwlQQVJBTV9TQ0hFTUFfVkFSSUFCTEUKIH0gUGFyYW1LaW5kOwogCiB0eXBlZGVmIHN0cnVjdCBQ YXJhbQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oIGIvc3JjL2luY2x1 ZGUvcGFyc2VyL2t3bGlzdC5oCmluZGV4IGNmMzIxOTdiYzMuLmRiMTFlMDg3YzEgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaAorKysgYi9zcmMvaW5jbHVkZS9wYXJzZXIv a3dsaXN0LmgKQEAgLTIzMCw2ICsyMzAsNyBAQCBQR19LRVlXT1JEKCJsZWFkaW5nIiwgTEVBRElO RywgUkVTRVJWRURfS0VZV09SRCkKIFBHX0tFWVdPUkQoImxlYWtwcm9vZiIsIExFQUtQUk9PRiwg VU5SRVNFUlZFRF9LRVlXT1JEKQogUEdfS0VZV09SRCgibGVhc3QiLCBMRUFTVCwgQ09MX05BTUVf S0VZV09SRCkKIFBHX0tFWVdPUkQoImxlZnQiLCBMRUZULCBUWVBFX0ZVTkNfTkFNRV9LRVlXT1JE KQorUEdfS0VZV09SRCgibGV0IiwgTEVULCBVTlJFU0VSVkVEX0tFWVdPUkQpCiBQR19LRVlXT1JE KCJsZXZlbCIsIExFVkVMLCBVTlJFU0VSVkVEX0tFWVdPUkQpCiBQR19LRVlXT1JEKCJsaWtlIiwg TElLRSwgVFlQRV9GVU5DX05BTUVfS0VZV09SRCkKIFBHX0tFWVdPUkQoImxpbWl0IiwgTElNSVQs IFJFU0VSVkVEX0tFWVdPUkQpCkBAIC00MzMsNiArNDM0LDggQEAgUEdfS0VZV09SRCgidmFsaWRh dG9yIiwgVkFMSURBVE9SLCBVTlJFU0VSVkVEX0tFWVdPUkQpCiBQR19LRVlXT1JEKCJ2YWx1ZSIs IFZBTFVFX1AsIFVOUkVTRVJWRURfS0VZV09SRCkKIFBHX0tFWVdPUkQoInZhbHVlcyIsIFZBTFVF UywgQ09MX05BTUVfS0VZV09SRCkKIFBHX0tFWVdPUkQoInZhcmNoYXIiLCBWQVJDSEFSLCBDT0xf TkFNRV9LRVlXT1JEKQorUEdfS0VZV09SRCgidmFyaWFibGUiLCBWQVJJQUJMRSwgVU5SRVNFUlZF RF9LRVlXT1JEKQorUEdfS0VZV09SRCgidmFyaWFibGVzIiwgVkFSSUFCTEVTLCBVTlJFU0VSVkVE X0tFWVdPUkQpCiBQR19LRVlXT1JEKCJ2YXJpYWRpYyIsIFZBUklBRElDLCBSRVNFUlZFRF9LRVlX T1JEKQogUEdfS0VZV09SRCgidmFyeWluZyIsIFZBUllJTkcsIFVOUkVTRVJWRURfS0VZV09SRCkK IFBHX0tFWVdPUkQoInZlcmJvc2UiLCBWRVJCT1NFLCBUWVBFX0ZVTkNfTkFNRV9LRVlXT1JEKQpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUuaCBiL3NyYy9pbmNsdWRl L3BhcnNlci9wYXJzZV9ub2RlLmgKaW5kZXggMDIzMDU0MzgxMC4uZDI1YzA2MTA4OCAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUuaAorKysgYi9zcmMvaW5jbHVkZS9w YXJzZXIvcGFyc2Vfbm9kZS5oCkBAIC0xMzUsNiArMTM1LDggQEAgdHlwZWRlZiBOb2RlICooKkNv ZXJjZVBhcmFtSG9vaykgKFBhcnNlU3RhdGUgKnBzdGF0ZSwgUGFyYW0gKnBhcmFtLAogICogdG8g cHJvY2VzcyB0aGVtIGxpa2UgVVBEQVRFLiAgKE5vdGUgdGhpcyBjYW4gY2hhbmdlIGludHJhLXN0 YXRlbWVudCwgZm9yCiAgKiBjYXNlcyBsaWtlIElOU0VSVCBPTiBDT05GTElDVCBVUERBVEUuKQog ICoKKyAqIHBfaXNfbGV0OiB0cnVlIHRvIHByb2Nlc3MgYXNzaWdubWVudCBleHByZXNzaW9ucyBs aWtlIExFVC4KKyAqCiAgKiBwX3dpbmRvd2RlZnM6IGxpc3Qgb2YgV2luZG93RGVmcyByZXByZXNl bnRpbmcgV0lORE9XIGFuZCBPVkVSIGNsYXVzZXMuCiAgKiBXZSBjb2xsZWN0IHRoZXNlIHdoaWxl IHRyYW5zZm9ybWluZyBleHByZXNzaW9ucyBhbmQgdGhlbiB0cmFuc2Zvcm0gdGhlbQogICogYWZ0 ZXJ3YXJkcyAoc28gdGhhdCBhbnkgcmVzanVuayB0bGlzdCBpdGVtcyBuZWVkZWQgZm9yIHRoZSBz b3J0L2dyb3VwCkBAIC0xODQsNiArMTg2LDcgQEAgc3RydWN0IFBhcnNlU3RhdGUKIAlSZWxhdGlv bglwX3RhcmdldF9yZWxhdGlvbjsJLyogSU5TRVJUL1VQREFURS9ERUxFVEUgdGFyZ2V0IHJlbCAq LwogCVJhbmdlVGJsRW50cnkgKnBfdGFyZ2V0X3JhbmdldGJsZW50cnk7CS8qIHRhcmdldCByZWwn cyBSVEUgKi8KIAlib29sCQlwX2lzX2luc2VydDsJLyogcHJvY2VzcyBhc3NpZ25tZW50IGxpa2Ug SU5TRVJUIG5vdCBVUERBVEUgKi8KKwlib29sCQlwX2lzX2xldDsJCS8qIHByb2Nlc3MgYXNzaWdu bWVudCBMRVQgc3RtdCAqLwogCUxpc3QJICAgKnBfd2luZG93ZGVmczsJLyogcmF3IHJlcHJlc2Vu dGF0aW9ucyBvZiB3aW5kb3cgY2xhdXNlcyAqLwogCVBhcnNlRXhwcktpbmQgcF9leHByX2tpbmQ7 CS8qIHdoYXQga2luZCBvZiBleHByZXNzaW9uIHdlJ3JlIHBhcnNpbmcgKi8KIAlpbnQJCQlwX25l eHRfcmVzbm87CS8qIG5leHQgdGFyZ2V0bGlzdCByZXNubyB0byBhc3NpZ24gKi8KZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9yZWxhdGlvbi5oIGIvc3JjL2luY2x1ZGUvcGFy c2VyL3BhcnNlX3JlbGF0aW9uLmgKaW5kZXggYjk3OTJhY2RhZS4uYzg5NDE0N2QwNiAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX3JlbGF0aW9uLmgKKysrIGIvc3JjL2luY2x1 ZGUvcGFyc2VyL3BhcnNlX3JlbGF0aW9uLmgKQEAgLTEyOSw0ICsxMjksMTAgQEAgZXh0ZXJuIE9p ZAlhdHRudW1UeXBlSWQoUmVsYXRpb24gcmQsIGludCBhdHRpZCk7CiBleHRlcm4gT2lkCWF0dG51 bUNvbGxhdGlvbklkKFJlbGF0aW9uIHJkLCBpbnQgYXR0aWQpOwogZXh0ZXJuIGJvb2wgaXNRdWVy eVVzaW5nVGVtcFJlbGF0aW9uKFF1ZXJ5ICpxdWVyeSk7CiAKK2V4dGVybiBSYW5nZVZhciAqbWFr ZVJhbmdlVmFyRm9yVGFyZ2V0T2ZTY2hlbWFWYXJpYWJsZShQYXJzZVN0YXRlICpwc3RhdGUsCisJ CQkJICBjaGFyICpmaWVsZDEsIGNoYXIgKmZpZWxkMiwgY2hhciAqZmllbGQzLAorCQkJCSAgaW50 IGxvY2F0aW9uLCBjaGFyICoqZmllbGRuYW1lLCBpbnQgKmZpZWxkbmFtZV9wb3MsIGJvb2wgbm9l cnJvcik7CisKK2V4dGVybiBOb2RlICp0b1NjaGVtYVZhcmlhYmxlKFBhcnNlU3RhdGUgKnBzdGF0 ZSwgY2hhciAqbnNwbmFtZSwgY2hhciAqdmFybmFtZSwgY2hhciAqZmllbGRuYW1lLCBpbnQgbG9j YXRpb24pOworCiAjZW5kaWYJCQkJCQkJLyogUEFSU0VfUkVMQVRJT05fSCAqLwpkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX3RhcmdldC5oIGIvc3JjL2luY2x1ZGUvcGFyc2Vy L3BhcnNlX3RhcmdldC5oCmluZGV4IGVjNmUwYzEwMmYuLjcyZWIzY2Q3YjYgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV90YXJnZXQuaAorKysgYi9zcmMvaW5jbHVkZS9wYXJz ZXIvcGFyc2VfdGFyZ2V0LmgKQEAgLTQzLDQgKzQzLDE2IEBAIGV4dGVybiBUdXBsZURlc2MgZXhw YW5kUmVjb3JkVmFyaWFibGUoUGFyc2VTdGF0ZSAqcHN0YXRlLCBWYXIgKnZhciwKIGV4dGVybiBj aGFyICpGaWd1cmVDb2xuYW1lKE5vZGUgKm5vZGUpOwogZXh0ZXJuIGNoYXIgKkZpZ3VyZUluZGV4 Q29sbmFtZShOb2RlICpub2RlKTsKIAorZXh0ZXJuIE5vZGUgKnRyYW5zZm9ybUFzc2lnbm1lbnRJ bmRpcmVjdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsCisJCQkJCQkJICAgTm9kZSAqYmFzZW5vZGUs CisJCQkJCQkJICAgY29uc3QgY2hhciAqdGFyZ2V0TmFtZSwKKwkJCQkJCQkgICBib29sIHRhcmdl dElzQXJyYXksCisJCQkJCQkJICAgT2lkIHRhcmdldFR5cGVJZCwKKwkJCQkJCQkgICBpbnQzMiB0 YXJnZXRUeXBNb2QsCisJCQkJCQkJICAgT2lkIHRhcmdldENvbGxhdGlvbiwKKwkJCQkJCQkgICBM aXN0Q2VsbCAqaW5kaXJlY3Rpb24sCisJCQkJCQkJICAgTm9kZSAqcmhzLAorCQkJCQkJCSAgIGlu dCBsb2NhdGlvbik7CisKKwogI2VuZGlmCQkJCQkJCS8qIFBBUlNFX1RBUkdFVF9IICovCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9hY2wuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL2FjbC5o CmluZGV4IGY0ZDRiZThkMGQuLmQwNzM3YTllNGIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0 aWxzL2FjbC5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL2FjbC5oCkBAIC0xNjYsNiArMTY2LDcg QEAgdHlwZWRlZiBBcnJheVR5cGUgQWNsOwogI2RlZmluZSBBQ0xfQUxMX1JJR0hUU19TQ0hFTUEJ CShBQ0xfVVNBR0V8QUNMX0NSRUFURSkKICNkZWZpbmUgQUNMX0FMTF9SSUdIVFNfVEFCTEVTUEFD RQkoQUNMX0NSRUFURSkKICNkZWZpbmUgQUNMX0FMTF9SSUdIVFNfVFlQRQkJCShBQ0xfVVNBR0Up CisjZGVmaW5lIEFDTF9BTExfUklHSFRTX1ZBUklBQkxFCQkoQUNMX1NFTEVDVHxBQ0xfVVBEQVRF KQogCiAvKiBvcGVyYXRpb24gY29kZXMgZm9yIHBnXypfYWNsbWFzayAqLwogdHlwZWRlZiBlbnVt CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3NjaGVtYV92YXJpYWJsZXMu b3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zY2hlbWFfdmFyaWFibGVzLm91dApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5hYjFkM2FjNjZkCi0tLSAvZGV2L251 bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zY2hlbWFfdmFyaWFibGVzLm91dApA QCAtMCwwICsxLDQ1NiBAQAorQ1JFQVRFIFZBUklBQkxFIHZhcjEgQVMgaW50ZWdlcjsKK0NSRUFU RSBURU1QIFZBUklBQkxFIHZhcjIgQVMgdGV4dDsKK0RST1AgVkFSSUFCTEUgdmFyMSwgdmFyMjsK Ky0tIGZ1bmN0aW9uYWwgaW50ZXJmYWNlCitDUkVBVEUgVkFSSUFCTEUgdmFyMSBBUyBudW1lcmlj OworU0VMRUNUIHNldF9zY2hlbWFfdmFyaWFibGUoJ3ZhcjEnLCAzMzMpOworIHNldF9zY2hlbWFf dmFyaWFibGUgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIGdl dF9zY2hlbWFfdmFyaWFibGUoJ3ZhcjEnLCBudWxsOjpudW1lcmljKTsKKyBnZXRfc2NoZW1hX3Zh cmlhYmxlIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgIDMzMworKDEg cm93KQorCitTRUxFQ1Qgc2V0X3NjaGVtYV92YXJpYWJsZSgndmFyMScsIDMzMzo6aW50ZWdlcik7 Cisgc2V0X3NjaGVtYV92YXJpYWJsZSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93 KQorCitTRUxFQ1QgZ2V0X3NjaGVtYV92YXJpYWJsZSgndmFyMScsIG51bGw6Om51bWVyaWMpOwor IGdldF9zY2hlbWFfdmFyaWFibGUgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAg ICAgICAgMzMzCisoMSByb3cpCisKK1NFTEVDVCBzZXRfc2NoZW1hX3ZhcmlhYmxlKCd2YXIxJywg JzMzMy41NSc6OnRleHQpOworIHNldF9zY2hlbWFfdmFyaWFibGUgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIGdldF9zY2hlbWFfdmFyaWFibGUoJ3ZhcjEnLCBu dWxsOjpudW1lcmljKTsKKyBnZXRfc2NoZW1hX3ZhcmlhYmxlIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgICAgICAgICAgICAgIDMzMy41NQorKDEgcm93KQorCitTRUxFQ1QgZ2V0X3NjaGVtYV92 YXJpYWJsZSgndmFyMScsIG51bGw6OmludCk7CisgZ2V0X3NjaGVtYV92YXJpYWJsZSAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAzMzQKKygxIHJvdykKKworU0VMRUNU IGdldF9zY2hlbWFfdmFyaWFibGUoJ3ZhcjEnLCBudWxsOjp0ZXh0KTsKKyBnZXRfc2NoZW1hX3Zh cmlhYmxlIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgMzMzLjU1CisoMSByb3cpCisKKy0tIGFj Y2VzcyByaWdodHMgdGVzdAorQ1JFQVRFIFJPTEUgdmFyX3Rlc3Rfcm9sZTsKK1NFVCBST0xFIFRP IHZhcl90ZXN0X3JvbGU7CistLSBzaG91bGQgdG8gZmFpbAorU0VMRUNUIHNldF9zY2hlbWFfdmFy aWFibGUoJ3ZhcjEnLCAnMTAwMCc6OnRleHQpOworRVJST1I6ICBwZXJtaXNzaW9uIGRlbmllZCBm b3Igc2NoZW1hIHZhcmlhYmxlIHZhcjEKK1NFTEVDVCBnZXRfc2NoZW1hX3ZhcmlhYmxlKCd2YXIx JywgbnVsbDo6bnVtZXJpYyk7CitFUlJPUjogIHBlcm1pc3Npb24gZGVuaWVkIGZvciBzY2hlbWEg dmFyaWFibGUgdmFyMQorU0VUIFJPTEUgVE8gREVGQVVMVDsKK0dSQU5UIFNFTEVDVCBPTiBWQVJJ QUJMRSB2YXIxIFRPIHZhcl90ZXN0X3JvbGU7CitTRVQgUk9MRSBUTyB2YXJfdGVzdF9yb2xlOwor LS0gc2hvdWxkIHRvIGZhaWwKK1NFTEVDVCBzZXRfc2NoZW1hX3ZhcmlhYmxlKCd2YXIxJywgJzEw MDAnOjp0ZXh0KTsKK0VSUk9SOiAgcGVybWlzc2lvbiBkZW5pZWQgZm9yIHNjaGVtYSB2YXJpYWJs ZSB2YXIxCistLSBzaG91bGQgdG8gd29yaworU0VMRUNUIGdldF9zY2hlbWFfdmFyaWFibGUoJ3Zh cjEnLCBudWxsOjpudW1lcmljKTsKKyBnZXRfc2NoZW1hX3ZhcmlhYmxlIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgICAgICAgICAgICAgIDMzMy41NQorKDEgcm93KQorCitTRVQgUk9MRSBUTyBE RUZBVUxUOworR1JBTlQgVVBEQVRFIE9OIFZBUklBQkxFIHZhcjEgVE8gdmFyX3Rlc3Rfcm9sZTsK K1NFVCBST0xFIFRPIHZhcl90ZXN0X3JvbGU7CistLSBzaG91bGQgdG8gd29yaworU0VMRUNUIHNl dF9zY2hlbWFfdmFyaWFibGUoJ3ZhcjEnLCAnMTAwMCc6OnRleHQpOworIHNldF9zY2hlbWFfdmFy aWFibGUgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIGdldF9z Y2hlbWFfdmFyaWFibGUoJ3ZhcjEnLCBudWxsOjpudW1lcmljKTsKKyBnZXRfc2NoZW1hX3Zhcmlh YmxlIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgMTAwMAorKDEgcm93 KQorCitTRVQgUk9MRSBUTyBERUZBVUxUOworUkVWT0tFIEFMTCBPTiBWQVJJQUJMRSB2YXIxIEZS T00gdmFyX3Rlc3Rfcm9sZTsKK0NSRUFURSBWQVJJQUJMRSB2YXIgQVMgaW50ZWdlcjsKK1NFTEVD VCBzZXRfc2NoZW1hX3ZhcmlhYmxlKCdwdWJsaWMudmFyJywgMTIzNCk7Cisgc2V0X3NjaGVtYV92 YXJpYWJsZSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgcHVi bGljLnZhcjsKKyB2YXIgIAorLS0tLS0tCisgMTIzNAorKDEgcm93KQorCitETyAkJAorQkVHSU4K KyAgUkFJU0UgTk9USUNFICdwdWJsaWMudmFyIGlzID0gJScsIHB1YmxpYy52YXI7CitFTkQ7Cisk JDsKK05PVElDRTogIHB1YmxpYy52YXIgaXMgPSAxMjM0CitDUkVBVEUgT1IgUkVQTEFDRSBGVU5D VElPTiBzZWN1cmVfdmFyKCkKK1JFVFVSTlMgaW50IEFTICQkCisgIFNFTEVDVCBwdWJsaWMudmFy OworJCQgTEFOR1VBR0Ugc3FsIFNFQ1VSSVRZIERFRklORVI7CitTRUxFQ1Qgc2VjdXJlX3Zhcigp OworIHNlY3VyZV92YXIgCistLS0tLS0tLS0tLS0KKyAgICAgICAxMjM0CisoMSByb3cpCisKK1NF VCBST0xFIFRPIHZhcl90ZXN0X3JvbGU7CistLSBzaG91bGQgdG8gZmFpbAorU0VMRUNUIHB1Ymxp Yy52YXI7CitFUlJPUjogIHBlcm1pc3Npb24gZGVuaWVkIGZvciBzY2hlbWEgdmFyaWFibGUgdmFy CistLSBzaG91bGQgdG8gd29yazsKK1NFTEVDVCBzZWN1cmVfdmFyKCk7Cisgc2VjdXJlX3ZhciAK Ky0tLS0tLS0tLS0tLQorICAgICAgIDEyMzQKKygxIHJvdykKKworU0VUIFJPTEUgVE8gREVGQVVM VDsKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUICogRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoMSwxMDApIGcodikgV0hFUkUgdiA9IHZhcjsKKyAgICAgICAgICAgICAgICAgIFFVRVJZ IFBMQU4gICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIEZ1bmN0aW9uIFNjYW4gb24gcGdfY2F0YWxvZy5nZW5lcmF0ZV9z ZXJpZXMgZworICAgT3V0cHV0OiB2CisgICBGdW5jdGlvbiBDYWxsOiBnZW5lcmF0ZV9zZXJpZXMo MSwgMTAwKQorICAgRmlsdGVyOiAoZy52ID0gdmFyKQorKDQgcm93cykKKworQ1JFQVRFIFZJRVcg c2NoZW1hX3Zhcl92aWV3IEFTIFNFTEVDVCB2YXI7CitTRUxFQ1QgKiBGUk9NIHNjaGVtYV92YXJf dmlldzsKKyB2YXIgIAorLS0tLS0tCisgMTIzNAorKDEgcm93KQorCitcYyAtCistLSBzaG91bGQg dG8gd29yayBzdGlsbCwgYnV0IHZhciB3aWxsIGJlIGVtcHR5CitTRUxFQ1QgKiBGUk9NIHNjaGVt YV92YXJfdmlldzsKKyB2YXIgCistLS0tLQorICAgIAorKDEgcm93KQorCitMRVQgdmFyMSA9IHBp KCk7CitTRUxFQ1QgdmFyMTsKKyAgICAgICB2YXIxICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t CisgMy4xNDE1OTI2NTM1ODk3OQorKDEgcm93KQorCistLSB3ZSBjYW4gbG9vayBvbiBleGVjdXRp b24gcGxhbgorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBMRVQgdmFyMSA9IHBpKCk7Cisg ICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgTGV0IG9uIHB1YmxpYy52YXIxCisgICAtPiAgUmVzdWx0CisgICAgICAg ICBPdXRwdXQ6IDMuMTQxNTkyNjUzNTg5NzkKKygzIHJvd3MpCisKKy0tIExFVCBjYW4gYmUgcHJl cGFyZWQKK1BSRVBBUkUgdmFyX3BwKGludCwgbnVtZXJpYykgQVMgTEVUIHZhcjEgPSAkMSArICQy OworRVhFQ1VURSB2YXJfcHAoMTAwLCAxLjIzNDU2KTsKK1NFTEVDVCB2YXIxOworICAgdmFyMSAg ICAKKy0tLS0tLS0tLS0tCisgMTAxLjIzNDU2CisoMSByb3cpCisKK0NSRUFURSBWQVJJQUJMRSB2 YXIzIEFTIGludDsKK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIGluYyhpbnQpCitSRVRVUk5T IGludCBBUyAkJAorQkVHSU4KKyAgTEVUIHB1YmxpYy52YXIzID0gQ09BTEVTQ0UocHVibGljLnZh cjMgKyAkMSwgJDEpOworICBSRVRVUk4gdmFyMzsKK0VORDsKKyQkIExBTkdVQUdFIHBscGdzcWw7 CitTRUxFQ1QgaW5jKDEpOworIGluYyAKKy0tLS0tCisgICAxCisoMSByb3cpCisKK1NFTEVDVCBp bmMoMSk7CisgaW5jIAorLS0tLS0KKyAgIDIKKygxIHJvdykKKworU0VMRUNUIGluYygxKTsKKyBp bmMgCistLS0tLQorICAgMworKDEgcm93KQorCitTRUxFQ1QgaW5jKDEpIEZST00gZ2VuZXJhdGVf c2VyaWVzKDEsMTApOworIGluYyAKKy0tLS0tCisgICA0CisgICA1CisgICA2CisgICA3CisgICA4 CisgICA5CisgIDEwCisgIDExCisgIDEyCisgIDEzCisoMTAgcm93cykKKworU0VUIFJPTEUgVE8g dmFyX3Rlc3Rfcm9sZTsKKy0tIHNob3VsZCB0byBmYWlsCitMRVQgdmFyMyA9IDA7CitFUlJPUjog IHBlcm1pc3Npb24gZGVuaWVkIGZvciBzY2hlbWEgdmFyaWFibGUgdmFyMworU0VUIFJPTEUgVE8g REVGQVVMVDsKK0RST1AgVklFVyBzY2hlbWFfdmFyX3ZpZXc7CitEUk9QIFZBUklBQkxFIHZhciBD QVNDQURFOworRFJPUCBWQVJJQUJMRSB2YXIxIENBU0NBREU7CitEUk9QIFZBUklBQkxFIHZhcjMg Q0FTQ0FERTsKKy0tIGNvbXBvc2l0ZSB2YXJpYWJsZXMKK0NSRUFURSBUWVBFIHN2X3h5eiBBUyAo eCBpbnQsIHkgaW50LCB6IG51bWVyaWMoMTAsMikpOworQ1JFQVRFIFZBUklBQkxFIHYxIEFTIHN2 X3h5ejsKK0NSRUFURSBWQVJJQUJMRSB2MiBBUyAoeCBpbnQsIHkgaW50LCB6IG51bWVyaWMoMTAs MikpOworXGQgdjEKK3NjaGVtYSB2YXJpYWJsZSAicHVibGljLnYxIgorIENvbHVtbiB8ICAgICBU eXBlICAgICAgCistLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0KKyB4ICAgICAgfCBpbnRlZ2VyCisg eSAgICAgIHwgaW50ZWdlcgorIHogICAgICB8IG51bWVyaWMoMTAsMikKKworXGQgdjIKK3NjaGVt YSB2YXJpYWJsZSAicHVibGljLnYyIgorIENvbHVtbiB8ICAgICBUeXBlICAgICAgCistLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0KKyB4ICAgICAgfCBpbnRlZ2VyCisgeSAgICAgIHwgaW50ZWdlcgor IHogICAgICB8IG51bWVyaWMoMTAsMikKKworLS0gZXhwbGljaXQgY2FzdGluZyBpcyBuZWNlc3Nh cnkKK0xFVCB2MSA9ICgxLDIsMy4xNCk6OnN2X3h5ejsKK0xFVCB2MiA9ICgxMCwyMCwzLjE0KjEw KTo6djI7CistLSBzaG91bGQgdG8gd29yayB0b28gLSB0aGVyZSBhcmUgcHJlcGFyZWQgY2FzdHMK K0xFVCB2MSA9ICgxLDIsMy4xNCk6OnYxOworU0VMRUNUIHYxOworICAgICB2MSAgICAgCistLS0t LS0tLS0tLS0KKyAoMSwyLDMuMTQpCisoMSByb3cpCisKK1NFTEVDVCB2MjsKKyAgICAgIHYyICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tCisgKDEwLDIwLDMxLjQwKQorKDEgcm93KQorCitTRUxFQ1Qg KHYxKS4qOworIHggfCB5IHwgIHogICAKKy0tLSstLS0rLS0tLS0tCisgMSB8IDIgfCAzLjE0Ciso MSByb3cpCisKK1NFTEVDVCAodjIpLio7CisgeCAgfCB5ICB8ICAgeiAgIAorLS0tLSstLS0tKy0t LS0tLS0KKyAxMCB8IDIwIHwgMzEuNDAKKygxIHJvdykKKworU0VMRUNUIGdldF9zY2hlbWFfdmFy aWFibGUoJ3YxJywgJ3onLCBudWxsOjpkb3VibGUgcHJlY2lzaW9uKTsKKyBnZXRfc2NoZW1hX3Zh cmlhYmxlIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgMy4xNAorKDEg cm93KQorCitTRUxFQ1QgZ2V0X3NjaGVtYV92YXJpYWJsZSgndjInLCAneicsIG51bGw6OmRvdWJs ZSBwcmVjaXNpb24pOworIGdldF9zY2hlbWFfdmFyaWFibGUgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAgICAgICAgICAgICAgICAzMS40CisoMSByb3cpCisKKy0tIHNob3VsZCB0byBmYWlsCitT RUxFQ1QgZ2V0X3NjaGVtYV92YXJpYWJsZSgndjEnLCAndycsIG51bGw6OmRvdWJsZSBwcmVjaXNp b24pOworRVJST1I6ICB0aGUgdmFyaWFibGUgInYxIiBoYXMgbm90IGZpZWxkICJ3IgorU0VMRUNU IGdldF9zY2hlbWFfdmFyaWFibGUoJ3YyJywgJ3cnLCBudWxsOjpkb3VibGUgcHJlY2lzaW9uKTsK K0VSUk9SOiAgdGhlIHZhcmlhYmxlICJ2MiIgaGFzIG5vdCBmaWVsZCAidyIKK0NSRUFURSBWQVJJ QUJMRSB2MyBBUyBpbnRlZ2VyOworU0VMRUNUIGdldF9zY2hlbWFfdmFyaWFibGUoJ3YzJywgJ3cn LCBudWxsOjpkb3VibGUgcHJlY2lzaW9uKTsKK0VSUk9SOiAgdGhlIHZhcmlhYmxlICJ2MyIgaXMg bm90IG9mIHJvdyB0eXBlCitTRUxFQ1Qgc2V0X3NjaGVtYV92YXJpYWJsZSgndjEnLCAneicsIDMu MTQgKiAyKTsKKyBzZXRfc2NoZW1hX3ZhcmlhYmxlIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg CisoMSByb3cpCisKK1NFTEVDVCB2MTsKKyAgICAgdjEgICAgIAorLS0tLS0tLS0tLS0tCisgKDEs Miw2LjI4KQorKDEgcm93KQorCitTRUxFQ1Qgc2V0X3NjaGVtYV92YXJpYWJsZSgndjEnLCAneics IG51bGw6OmRvdWJsZSBwcmVjaXNpb24pOworIHNldF9zY2hlbWFfdmFyaWFibGUgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIHYxOworICAgdjEgICAKKy0tLS0t LS0tCisgKDEsMiwpCisoMSByb3cpCisKK1NFTEVDVCBzZXRfc2NoZW1hX3ZhcmlhYmxlKCd2MScs ICd6JywgMy4zMzMzOjpkb3VibGUgcHJlY2lzaW9uKTsKKyBzZXRfc2NoZW1hX3ZhcmlhYmxlIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBzZXRfc2NoZW1hX3Zh cmlhYmxlKCd2MScsICd4JywgMTAwMDAuMjIpOworIHNldF9zY2hlbWFfdmFyaWFibGUgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIHYxOworICAgICAgIHYxICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLQorICgxMDAwMCwyLDMuMzMpCisoMSByb3cpCisKK1NFTEVD VCB2MS54ICsgdjEuejsKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyAxMDAwMy4zMworKDEgcm93 KQorCitTRUxFQ1QgdjIueCArIHYyLno7CisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisgICAgNDEu NDAKKygxIHJvdykKKworLS0gYWNjZXNzIHRvIGNvbXBvc2l0ZSBmaWVsZHMgc2hvdWxkIGJlIHNh ZmUgdG9vCistLSBzaG91bGQgdG8gZmFpbAorU0VUIFJPTEUgVE8gdmFyX3Rlc3Rfcm9sZTsKK1NF TEVDVCB2Mi54OworRVJST1I6ICBwZXJtaXNzaW9uIGRlbmllZCBmb3Igc2NoZW1hIHZhcmlhYmxl IHYyCitTRVQgUk9MRSBUTyBERUZBVUxUOworRFJPUCBWQVJJQUJMRSB2MTsKK0RST1AgVkFSSUFC TEUgdjI7CitEUk9QIFZBUklBQkxFIHYzOworRFJPUCBST0xFIHZhcl90ZXN0X3JvbGU7CistLSBz Y2FsYXIgdmFyaWFibGVzIHNob3VsZCBub3QgYmUgaW4gY29uZmxpY3Qgd2l0aCBxdWFsaWZpZWQg Y29sdW1uCitDUkVBVEUgVkFSSUFCTEUgdmFyeCBBUyB0ZXh0OworU0VMRUNUIHZhcngucmVsbmFt ZSBGUk9NIHBnX2NsYXNzIHZhcnggV0hFUkUgdmFyeC5yZWxuYW1lID0gJ3BnX2NsYXNzJzsKKyBy ZWxuYW1lICAKKy0tLS0tLS0tLS0KKyBwZ19jbGFzcworKDEgcm93KQorCistLSBzaG91bGQgdG8g ZmFpbAorU0VMRUNUIHZhcngueHh4OworRVJST1I6ICBtaXNzaW5nIEZST00tY2xhdXNlIGVudHJ5 IGZvciB0YWJsZSAidmFyeCIKK0xJTkUgMTogU0VMRUNUIHZhcngueHh4OworICAgICAgICAgICAg ICAgXgorLS0gdmFyaWFibGVzIGNhbiBiZSB1cGRhdGVkIHVuZGVyIFJPIHRyYW5zYWN0aW9uCitC RUdJTjsKK1NFVCBUUkFOU0FDVElPTiBSRUFEIE9OTFk7CitMRVQgdmFyeCA9ICdoZWxsbyc7CitD T01NSVQ7CitTRUxFQ1QgdmFyeDsKKyB2YXJ4ICAKKy0tLS0tLS0KKyBoZWxsbworKDEgcm93KQor CitEUk9QIFZBUklBQkxFIHZhcng7CitDUkVBVEUgVkFSSUFCTEUgdjEgQVMgKGEgaW50LCBiIG51 bWVyaWMsIGMgdGV4dCk7CitMRVQgdjEgPSAoMSwgcGkoKSwgJ2hlbGxvJyk7CitTRUxFQ1QgdjE7 CisgICAgICAgICAgICAgdjEgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgKDEsMy4xNDE1OTI2NTM1ODk3OSxoZWxsbykKKygxIHJvdykKKworTEVUIHYxLmIgPSAx MC4yMjIyOworU0VMRUNUIHYxOworICAgICAgICB2MSAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLQorICgxLDEwLjIyMjIsaGVsbG8pCisoMSByb3cpCisKKy0tIHNob3VsZCB0byBmYWlsCitM RVQgdjEueCA9IDEwOworRVJST1I6ICBjYW5ub3QgYXNzaWduIHRvIGZpZWxkICJ4IiBvZiBjb2x1 bW4gIngiIGJlY2F1c2UgdGhlcmUgaXMgbm8gc3VjaCBjb2x1bW4gaW4gZGF0YSB0eXBlIHYxCitE Uk9QIFZBUklBQkxFIHYxOworLS0gYXJyYXlzIGFyZSBzdXBwb3J0ZWQKK0NSRUFURSBWQVJJQUJM RSB2YTEgQVMgbnVtZXJpY1tdOworTEVUIHZhMSA9IEFSUkFZWzEuMSwyLjFdOworTEVUIHZhMVsx XSA9IDEwLjE7CitTRUxFQ1QgdmExOworICAgIHZhMSAgICAgCistLS0tLS0tLS0tLS0KKyB7MTAu MSwyLjF9CisoMSByb3cpCisKK0NSRUFURSBWQVJJQUJMRSB2YTIgQVMgKGEgbnVtZXJpYywgYiBu dW1lcmljW10pOworTEVUIHZhMiA9ICgxMC4xLCBBUlJBWVswLjAsIDAuMF0pOworTEVUIHZhMi5h ID0gMTAuMjsKK1NFTEVDVCB2YTI7CisgICAgICAgIHZhMiAgICAgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAoMTAuMiwiezAuMCwwLjB9IikKKygxIHJvdykKKworTEVUIHZhMi5iWzFdID0g MTAuMzsKK1NFTEVDVCB2YTI7CisgICAgICAgICB2YTIgICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLQorICgxMC4yLCJ7MTAuMywwLjB9IikKKygxIHJvdykKKworRFJPUCBWQVJJQUJMRSB2 YTE7CitEUk9QIFZBUklBQkxFIHZhMjsKKy0tIGRlZmF1bHQgdmFsdWVzCitDUkVBVEUgVkFSSUFC TEUgdjEgQVMgbnVtZXJpYyBERUZBVUxUIHBpKCk7CitMRVQgdjEgPSB2MSAqIDI7CitTRUxFQ1Qg djE7CisgICAgICAgIHYxICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLQorIDYuMjgzMTg1MzA3 MTc5NTgKKygxIHJvdykKKworQ1JFQVRFIFZBUklBQkxFIHYyIEFTIChhIG51bWVyaWMsIGIgdGV4 dCBERUZBVUxUICdoZWxsbycpOworTEVUIHB1YmxpYy52Mi5hID0gcGkoKTsKK1NFTEVDVCB2MjsK KyAgICAgICAgICAgIHYyICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor ICgzLjE0MTU5MjY1MzU4OTc5LGhlbGxvKQorKDEgcm93KQorCitEUk9QIFZBUklBQkxFIHYxOwor RFJPUCBWQVJJQUJMRSB2MjsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxf c2NoZWR1bGUgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCmluZGV4IGFkOTQz NGZiODcuLjMzZmU3ZWU0NzYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxf c2NoZWR1bGUKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQpAQCAtMTEx LDcgKzExMSw3IEBAIHRlc3Q6IHNlbGVjdF92aWV3cyBwb3J0YWxzX3AyIGZvcmVpZ25fa2V5IGNs dXN0ZXIgZGVwZW5kZW5jeSBndWMgYml0bWFwb3BzIGNvbWJvCiAjIE5COiB0ZW1wLnNxbCBkb2Vz IGEgcmVjb25uZWN0IHdoaWNoIHRyYW5zaWVudGx5IHVzZXMgMiBjb25uZWN0aW9ucywKICMgc28g a2VlcCB0aGlzIHBhcmFsbGVsIGdyb3VwIHRvIGF0IG1vc3QgMTkgdGVzdHMKICMgLS0tLS0tLS0t LQotdGVzdDogcGxhbmNhY2hlIGxpbWl0IHBscGdzcWwgY29weTIgdGVtcCBkb21haW4gcmFuZ2Vm dW5jcyBwcmVwYXJlIHdpdGhvdXRfb2lkIGNvbnZlcnNpb24gdHJ1bmNhdGUgYWx0ZXJfdGFibGUg c2VxdWVuY2UgcG9seW1vcnBoaXNtIHJvd3R5cGVzIHJldHVybmluZyBsYXJnZW9iamVjdCB3aXRo IHhtbAordGVzdDogcGxhbmNhY2hlIGxpbWl0IHBscGdzcWwgY29weTIgdGVtcCBkb21haW4gcmFu Z2VmdW5jcyBwcmVwYXJlIHdpdGhvdXRfb2lkIGNvbnZlcnNpb24gdHJ1bmNhdGUgYWx0ZXJfdGFi bGUgc2VxdWVuY2UgcG9seW1vcnBoaXNtIHJvd3R5cGVzIHJldHVybmluZyBsYXJnZW9iamVjdCB3 aXRoIHhtbCBzY2hlbWFfdmFyaWFibGVzCiAKICMgLS0tLS0tLS0tLQogIyBBbm90aGVyIGdyb3Vw IG9mIHBhcmFsbGVsIHRlc3RzCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NlcmlhbF9z Y2hlZHVsZSBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc2VyaWFsX3NjaGVkdWxlCmluZGV4IDI3Y2Q0OTg0 NWUuLjIyYzRjYWM3Y2UgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc2VyaWFsX3NjaGVk dWxlCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc2VyaWFsX3NjaGVkdWxlCkBAIC0xODcsMyArMTg3 LDQgQEAgdGVzdDogaGFzaF9wYXJ0CiB0ZXN0OiBpbmRleGluZwogdGVzdDogZXZlbnRfdHJpZ2dl cgogdGVzdDogc3RhdHMKK3Rlc3Q6IHNjaGVtYV92YXJpYWJsZXMKZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL3NjaGVtYV92YXJpYWJsZXMuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9z cWwvc2NoZW1hX3ZhcmlhYmxlcy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMC4uMjdiYmQxZmRjMwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L3NjaGVtYV92YXJpYWJsZXMuc3FsCkBAIC0wLDAgKzEsMjUxIEBACitDUkVBVEUgVkFSSUFCTEUg dmFyMSBBUyBpbnRlZ2VyOworQ1JFQVRFIFRFTVAgVkFSSUFCTEUgdmFyMiBBUyB0ZXh0OworCitE Uk9QIFZBUklBQkxFIHZhcjEsIHZhcjI7CisKKy0tIGZ1bmN0aW9uYWwgaW50ZXJmYWNlCitDUkVB VEUgVkFSSUFCTEUgdmFyMSBBUyBudW1lcmljOworU0VMRUNUIHNldF9zY2hlbWFfdmFyaWFibGUo J3ZhcjEnLCAzMzMpOworU0VMRUNUIGdldF9zY2hlbWFfdmFyaWFibGUoJ3ZhcjEnLCBudWxsOjpu dW1lcmljKTsKKworU0VMRUNUIHNldF9zY2hlbWFfdmFyaWFibGUoJ3ZhcjEnLCAzMzM6OmludGVn ZXIpOworU0VMRUNUIGdldF9zY2hlbWFfdmFyaWFibGUoJ3ZhcjEnLCBudWxsOjpudW1lcmljKTsK KworU0VMRUNUIHNldF9zY2hlbWFfdmFyaWFibGUoJ3ZhcjEnLCAnMzMzLjU1Jzo6dGV4dCk7CitT RUxFQ1QgZ2V0X3NjaGVtYV92YXJpYWJsZSgndmFyMScsIG51bGw6Om51bWVyaWMpOworU0VMRUNU IGdldF9zY2hlbWFfdmFyaWFibGUoJ3ZhcjEnLCBudWxsOjppbnQpOworU0VMRUNUIGdldF9zY2hl bWFfdmFyaWFibGUoJ3ZhcjEnLCBudWxsOjp0ZXh0KTsKKworLS0gYWNjZXNzIHJpZ2h0cyB0ZXN0 CisKK0NSRUFURSBST0xFIHZhcl90ZXN0X3JvbGU7CisKK1NFVCBST0xFIFRPIHZhcl90ZXN0X3Jv bGU7CisKKy0tIHNob3VsZCB0byBmYWlsCitTRUxFQ1Qgc2V0X3NjaGVtYV92YXJpYWJsZSgndmFy MScsICcxMDAwJzo6dGV4dCk7CitTRUxFQ1QgZ2V0X3NjaGVtYV92YXJpYWJsZSgndmFyMScsIG51 bGw6Om51bWVyaWMpOworCitTRVQgUk9MRSBUTyBERUZBVUxUOworCitHUkFOVCBTRUxFQ1QgT04g VkFSSUFCTEUgdmFyMSBUTyB2YXJfdGVzdF9yb2xlOworCitTRVQgUk9MRSBUTyB2YXJfdGVzdF9y b2xlOworLS0gc2hvdWxkIHRvIGZhaWwKK1NFTEVDVCBzZXRfc2NoZW1hX3ZhcmlhYmxlKCd2YXIx JywgJzEwMDAnOjp0ZXh0KTsKKy0tIHNob3VsZCB0byB3b3JrCitTRUxFQ1QgZ2V0X3NjaGVtYV92 YXJpYWJsZSgndmFyMScsIG51bGw6Om51bWVyaWMpOworCitTRVQgUk9MRSBUTyBERUZBVUxUOwor CitHUkFOVCBVUERBVEUgT04gVkFSSUFCTEUgdmFyMSBUTyB2YXJfdGVzdF9yb2xlOworCitTRVQg Uk9MRSBUTyB2YXJfdGVzdF9yb2xlOworCistLSBzaG91bGQgdG8gd29yaworU0VMRUNUIHNldF9z Y2hlbWFfdmFyaWFibGUoJ3ZhcjEnLCAnMTAwMCc6OnRleHQpOworU0VMRUNUIGdldF9zY2hlbWFf dmFyaWFibGUoJ3ZhcjEnLCBudWxsOjpudW1lcmljKTsKKworU0VUIFJPTEUgVE8gREVGQVVMVDsK KworUkVWT0tFIEFMTCBPTiBWQVJJQUJMRSB2YXIxIEZST00gdmFyX3Rlc3Rfcm9sZTsKKworQ1JF QVRFIFZBUklBQkxFIHZhciBBUyBpbnRlZ2VyOworCitTRUxFQ1Qgc2V0X3NjaGVtYV92YXJpYWJs ZSgncHVibGljLnZhcicsIDEyMzQpOworCitTRUxFQ1QgcHVibGljLnZhcjsKKworRE8gJCQKK0JF R0lOCisgIFJBSVNFIE5PVElDRSAncHVibGljLnZhciBpcyA9ICUnLCBwdWJsaWMudmFyOworRU5E OworJCQ7CisKK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIHNlY3VyZV92YXIoKQorUkVUVVJO UyBpbnQgQVMgJCQKKyAgU0VMRUNUIHB1YmxpYy52YXI7CiskJCBMQU5HVUFHRSBzcWwgU0VDVVJJ VFkgREVGSU5FUjsKKworU0VMRUNUIHNlY3VyZV92YXIoKTsKKworU0VUIFJPTEUgVE8gdmFyX3Rl c3Rfcm9sZTsKKworLS0gc2hvdWxkIHRvIGZhaWwKK1NFTEVDVCBwdWJsaWMudmFyOworCistLSBz aG91bGQgdG8gd29yazsKK1NFTEVDVCBzZWN1cmVfdmFyKCk7CisKK1NFVCBST0xFIFRPIERFRkFV TFQ7CisKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUICogRlJPTSBnZW5lcmF0 ZV9zZXJpZXMoMSwxMDApIGcodikgV0hFUkUgdiA9IHZhcjsKKworQ1JFQVRFIFZJRVcgc2NoZW1h X3Zhcl92aWV3IEFTIFNFTEVDVCB2YXI7CisKK1NFTEVDVCAqIEZST00gc2NoZW1hX3Zhcl92aWV3 OworCitcYyAtCisKKy0tIHNob3VsZCB0byB3b3JrIHN0aWxsLCBidXQgdmFyIHdpbGwgYmUgZW1w dHkKK1NFTEVDVCAqIEZST00gc2NoZW1hX3Zhcl92aWV3OworCitMRVQgdmFyMSA9IHBpKCk7CisK K1NFTEVDVCB2YXIxOworCistLSB3ZSBjYW4gbG9vayBvbiBleGVjdXRpb24gcGxhbgorRVhQTEFJ TiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBMRVQgdmFyMSA9IHBpKCk7CisKKy0tIExFVCBjYW4gYmUg cHJlcGFyZWQKK1BSRVBBUkUgdmFyX3BwKGludCwgbnVtZXJpYykgQVMgTEVUIHZhcjEgPSAkMSAr ICQyOworCitFWEVDVVRFIHZhcl9wcCgxMDAsIDEuMjM0NTYpOworCitTRUxFQ1QgdmFyMTsKKwor Q1JFQVRFIFZBUklBQkxFIHZhcjMgQVMgaW50OworCitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElP TiBpbmMoaW50KQorUkVUVVJOUyBpbnQgQVMgJCQKK0JFR0lOCisgIExFVCBwdWJsaWMudmFyMyA9 IENPQUxFU0NFKHB1YmxpYy52YXIzICsgJDEsICQxKTsKKyAgUkVUVVJOIHZhcjM7CitFTkQ7Cisk JCBMQU5HVUFHRSBwbHBnc3FsOworCitTRUxFQ1QgaW5jKDEpOworU0VMRUNUIGluYygxKTsKK1NF TEVDVCBpbmMoMSk7CisKK1NFTEVDVCBpbmMoMSkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMCk7 CisKK1NFVCBST0xFIFRPIHZhcl90ZXN0X3JvbGU7CisKKy0tIHNob3VsZCB0byBmYWlsCitMRVQg dmFyMyA9IDA7CisKK1NFVCBST0xFIFRPIERFRkFVTFQ7CisKK0RST1AgVklFVyBzY2hlbWFfdmFy X3ZpZXc7CisKK0RST1AgVkFSSUFCTEUgdmFyIENBU0NBREU7CitEUk9QIFZBUklBQkxFIHZhcjEg Q0FTQ0FERTsKK0RST1AgVkFSSUFCTEUgdmFyMyBDQVNDQURFOworCistLSBjb21wb3NpdGUgdmFy aWFibGVzCisKK0NSRUFURSBUWVBFIHN2X3h5eiBBUyAoeCBpbnQsIHkgaW50LCB6IG51bWVyaWMo MTAsMikpOworCitDUkVBVEUgVkFSSUFCTEUgdjEgQVMgc3ZfeHl6OworQ1JFQVRFIFZBUklBQkxF IHYyIEFTICh4IGludCwgeSBpbnQsIHogbnVtZXJpYygxMCwyKSk7CisKK1xkIHYxCitcZCB2Mgor CistLSBleHBsaWNpdCBjYXN0aW5nIGlzIG5lY2Vzc2FyeQorTEVUIHYxID0gKDEsMiwzLjE0KTo6 c3ZfeHl6OworTEVUIHYyID0gKDEwLDIwLDMuMTQqMTApOjp2MjsKKworLS0gc2hvdWxkIHRvIHdv cmsgdG9vIC0gdGhlcmUgYXJlIHByZXBhcmVkIGNhc3RzCitMRVQgdjEgPSAoMSwyLDMuMTQpOjp2 MTsKKworU0VMRUNUIHYxOworU0VMRUNUIHYyOworU0VMRUNUICh2MSkuKjsKK1NFTEVDVCAodjIp Lio7CisKK1NFTEVDVCBnZXRfc2NoZW1hX3ZhcmlhYmxlKCd2MScsICd6JywgbnVsbDo6ZG91Ymxl IHByZWNpc2lvbik7CitTRUxFQ1QgZ2V0X3NjaGVtYV92YXJpYWJsZSgndjInLCAneicsIG51bGw6 OmRvdWJsZSBwcmVjaXNpb24pOworCistLSBzaG91bGQgdG8gZmFpbAorU0VMRUNUIGdldF9zY2hl bWFfdmFyaWFibGUoJ3YxJywgJ3cnLCBudWxsOjpkb3VibGUgcHJlY2lzaW9uKTsKK1NFTEVDVCBn ZXRfc2NoZW1hX3ZhcmlhYmxlKCd2MicsICd3JywgbnVsbDo6ZG91YmxlIHByZWNpc2lvbik7CisK K0NSRUFURSBWQVJJQUJMRSB2MyBBUyBpbnRlZ2VyOworU0VMRUNUIGdldF9zY2hlbWFfdmFyaWFi bGUoJ3YzJywgJ3cnLCBudWxsOjpkb3VibGUgcHJlY2lzaW9uKTsKKworU0VMRUNUIHNldF9zY2hl bWFfdmFyaWFibGUoJ3YxJywgJ3onLCAzLjE0ICogMik7CitTRUxFQ1QgdjE7CitTRUxFQ1Qgc2V0 X3NjaGVtYV92YXJpYWJsZSgndjEnLCAneicsIG51bGw6OmRvdWJsZSBwcmVjaXNpb24pOworU0VM RUNUIHYxOworU0VMRUNUIHNldF9zY2hlbWFfdmFyaWFibGUoJ3YxJywgJ3onLCAzLjMzMzM6OmRv dWJsZSBwcmVjaXNpb24pOworU0VMRUNUIHNldF9zY2hlbWFfdmFyaWFibGUoJ3YxJywgJ3gnLCAx MDAwMC4yMik7CitTRUxFQ1QgdjE7CisKK1NFTEVDVCB2MS54ICsgdjEuejsKK1NFTEVDVCB2Mi54 ICsgdjIuejsKKworLS0gYWNjZXNzIHRvIGNvbXBvc2l0ZSBmaWVsZHMgc2hvdWxkIGJlIHNhZmUg dG9vCistLSBzaG91bGQgdG8gZmFpbAorU0VUIFJPTEUgVE8gdmFyX3Rlc3Rfcm9sZTsKKworU0VM RUNUIHYyLng7CisKK1NFVCBST0xFIFRPIERFRkFVTFQ7CisKKworRFJPUCBWQVJJQUJMRSB2MTsK K0RST1AgVkFSSUFCTEUgdjI7CitEUk9QIFZBUklBQkxFIHYzOworCitEUk9QIFJPTEUgdmFyX3Rl c3Rfcm9sZTsKKworLS0gc2NhbGFyIHZhcmlhYmxlcyBzaG91bGQgbm90IGJlIGluIGNvbmZsaWN0 IHdpdGggcXVhbGlmaWVkIGNvbHVtbgorQ1JFQVRFIFZBUklBQkxFIHZhcnggQVMgdGV4dDsKK1NF TEVDVCB2YXJ4LnJlbG5hbWUgRlJPTSBwZ19jbGFzcyB2YXJ4IFdIRVJFIHZhcngucmVsbmFtZSA9 ICdwZ19jbGFzcyc7CisKKy0tIHNob3VsZCB0byBmYWlsCitTRUxFQ1QgdmFyeC54eHg7CisKKwor LS0gdmFyaWFibGVzIGNhbiBiZSB1cGRhdGVkIHVuZGVyIFJPIHRyYW5zYWN0aW9uCisKK0JFR0lO OworU0VUIFRSQU5TQUNUSU9OIFJFQUQgT05MWTsKK0xFVCB2YXJ4ID0gJ2hlbGxvJzsKK0NPTU1J VDsKKworU0VMRUNUIHZhcng7CisKK0RST1AgVkFSSUFCTEUgdmFyeDsKKworQ1JFQVRFIFZBUklB QkxFIHYxIEFTIChhIGludCwgYiBudW1lcmljLCBjIHRleHQpOworTEVUIHYxID0gKDEsIHBpKCks ICdoZWxsbycpOworU0VMRUNUIHYxOworTEVUIHYxLmIgPSAxMC4yMjIyOworU0VMRUNUIHYxOwor CistLSBzaG91bGQgdG8gZmFpbAorTEVUIHYxLnggPSAxMDsKKworRFJPUCBWQVJJQUJMRSB2MTsK KworLS0gYXJyYXlzIGFyZSBzdXBwb3J0ZWQKK0NSRUFURSBWQVJJQUJMRSB2YTEgQVMgbnVtZXJp Y1tdOworTEVUIHZhMSA9IEFSUkFZWzEuMSwyLjFdOworTEVUIHZhMVsxXSA9IDEwLjE7CitTRUxF Q1QgdmExOworCitDUkVBVEUgVkFSSUFCTEUgdmEyIEFTIChhIG51bWVyaWMsIGIgbnVtZXJpY1td KTsKK0xFVCB2YTIgPSAoMTAuMSwgQVJSQVlbMC4wLCAwLjBdKTsKK0xFVCB2YTIuYSA9IDEwLjI7 CitTRUxFQ1QgdmEyOworTEVUIHZhMi5iWzFdID0gMTAuMzsKK1NFTEVDVCB2YTI7CisKK0RST1Ag VkFSSUFCTEUgdmExOworRFJPUCBWQVJJQUJMRSB2YTI7CisKKy0tIGRlZmF1bHQgdmFsdWVzCitD UkVBVEUgVkFSSUFCTEUgdjEgQVMgbnVtZXJpYyBERUZBVUxUIHBpKCk7CitMRVQgdjEgPSB2MSAq IDI7CitTRUxFQ1QgdjE7CisKK0NSRUFURSBWQVJJQUJMRSB2MiBBUyAoYSBudW1lcmljLCBiIHRl eHQgREVGQVVMVCAnaGVsbG8nKTsKK0xFVCBwdWJsaWMudjIuYSA9IHBpKCk7CitTRUxFQ1QgdjI7 CisKK0RST1AgVkFSSUFCTEUgdjE7CitEUk9QIFZBUklBQkxFIHYyOworCmRpZmYgLS1naXQgYS9z cmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCBiL3NyYy90b29scy9wZ2luZGVudC90eXBl ZGVmcy5saXN0CmluZGV4IGQ0NzY1Y2UzYjAuLmIwNDA0YzIxYTUgMTAwNjQ0Ci0tLSBhL3NyYy90 b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CisrKyBiL3NyYy90b29scy9wZ2luZGVudC90eXBl ZGVmcy5saXN0CkBAIC00MjMsNiArNDIzLDcgQEAgQ3JlYXRlUmVwbGljYXRpb25TbG90Q21kCiBD cmVhdGVSb2xlU3RtdAogQ3JlYXRlU2NoZW1hU3RtdAogQ3JlYXRlU2NoZW1hU3RtdENvbnRleHQK K0NyZWF0ZVNjaGVtYVZhclN0bXQKIENyZWF0ZVNlcVN0bXQKIENyZWF0ZVN0YXRzU3RtdAogQ3Jl YXRlU3RtdAo= --94eb2c0759846d3e270567e569d5--