From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-0.1 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FROM autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 24228 invoked from network); 18 Jun 2021 19:50:00 -0000 Received: from 1ess.inri.net (216.126.196.35) by inbox.vuxu.org with ESMTPUTF8; 18 Jun 2021 19:50:00 -0000 Received: from mail-qk1-f182.google.com ([209.85.222.182]) by 1ess; Fri Jun 18 15:44:58 -0400 2021 Received: by mail-qk1-f182.google.com with SMTP id j62so13644785qke.10 for <9front@9front.org>; Fri, 18 Jun 2021 12:44:54 -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; bh=MLzPE+1ajGyjHgAB1dZdifCIBzWg5Mo2cIpBcKtVNj8=; b=kAxGsAvEWRipAegftqjbx3QCyKZQw0K4WmptSzjV1QCfB+mc47MpfJxXPTPIJb6Fmi N8E8Yhpi9X9HrO1lE4NGOYzWAPYXguRXXQuSD2yQic5FxCeybDVllgCevNoKBl3HXagt RZ0FVRroksY3ww9u/I4GCkGrTWN8lic5Jhpxm3fLcMPvKJI10HZAQ7004FkQ4/u63prp wGByXFytgTRaaYJ/ByI3bFFUWus/mwittYjQDP623l99tgEBijxWO7QENTpw5AzI3g1G CoW3DKODvk3t8BKrYsQVuB74BedxGRTJjaGmAzEMMxQmC2rayUteTiJ0B3lvKrIYnwd6 g6kg== 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; bh=MLzPE+1ajGyjHgAB1dZdifCIBzWg5Mo2cIpBcKtVNj8=; b=ENeiZ71eUfoY6os4rVrBtX87B3qarSaprIt1Lag8uqb4w6SVln0MymVrDOME/e1sQx LVk7wx5Ob9S2JeQ+Gzefn9hC5ID3enj44p68VxFZ66mviTDZ4xUKkGtD+jDCnNGAlT1O D7F0Fja/qQ7fHUVzV6cnWTWM+frjNuxjD/vV5U8SCXhPE0fdQ+vp4odA/BAYlNjDF9uk YlYlJ+w7E48b1YjxGxRbL142Ec2zGeGCNh7pi8Z1pfHa0FL0XMaqrHQJBQMCd6LVFIqE mz49eE/uddJrBOnHzeVQ3aeVZcyLEMIm33FNQf4nKzLn2bcg4FKT4MY+lNbqpoFZT0Qg MhRA== X-Gm-Message-State: AOAM5311OhAxTSRdTCtDjElV2q+ivBKn/pG0L/L8xvv3F6O01PEO5HR/ Srz6phS49Ry9kAWGmHD/Pi11V41etd9cEsa441RvTDUOW1M= X-Google-Smtp-Source: ABdhPJzKEr6EtaBgT5mfUnwbTpEbrpNt77s7RtZ4qiCcDGsxTLLmtj3DvC1MuMCIgQ4b97HDb3clzt/Xhm7rj4CTmaE= X-Received: by 2002:a05:6830:1658:: with SMTP id h24mr1454796otr.149.1624043628916; Fri, 18 Jun 2021 12:13:48 -0700 (PDT) MIME-Version: 1.0 Received: by 2002:ac9:410a:0:0:0:0:0 with HTTP; Fri, 18 Jun 2021 12:13:48 -0700 (PDT) In-Reply-To: References: <1F0E89C0DA556E9265991DE6E86C77D4@felloff.net> From: kemal Date: Fri, 18 Jun 2021 19:13:48 +0000 Message-ID: To: 9front@9front.org Content-Type: multipart/mixed; boundary="0000000000009a5a8005c50f1f79" List-ID: <9front.9front.org> List-Help: X-Glyph: ➈ X-Bullshit: ISO-certified JSON base-scale STM-aware API Subject: Re: [9front] libsec: various tls changes Reply-To: 9front@9front.org Precedence: bulk --0000000000009a5a8005c50f1f79 Content-Type: text/plain; charset="UTF-8" fuck, somehow last 2 commits got into my git/export? here's an unfucked patchset: --0000000000009a5a8005c50f1f79 Content-Type: text/plain; charset="US-ASCII"; name="patchset.txt" Content-Disposition: attachment; filename="patchset.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: file0 RnJvbSBkZmMyMGIxMzVlY2FhYzNkMGFmMWEzNjkxOTcyNjRjYjY4MDY5MmU5CkZyb206IGtlbWFs IDxrZW1hbGluYW5jOEBnbWFpbC5jb20+CkRhdGU6IEZyaSwgMTggSnVuIDIwMjEgMTk6MTI6NDQg KzAwMDAKU3ViamVjdDogW1BBVENIXSBsaWJzZWM6IHZhcmlvdXMgY2hhbmdlcyB0byB0bHMKCgox LiBhZGQgdGhlIGN1cnZlIHgyNTUxOSB0byB0bHMsIGJvdGggY2xpZW50IGFuZCBzZXJ2ZXIuCml0 J3MgbW9yZSBmYXN0ZXIsIGltbXVuZSB0byB0aW1pbmcgYXR0YWNrcyBieSBkZXNpZ24sCmRvZXMg bm90IHJlcXVpcmUgdmVyaWZ5aW5nIGlmIHRoZSBwdWJsaWMga2V5IGlzIHZhbGlkLApldGMgZXRj LiBzZXJ2ZXItc2lkZSBoYXMgdG8gY2hlY2sgaWYgdGhlIGNsaWVudCBzdXBwb3J0cwp0aGUgY3Vy dmUsIHNvIGEgbmV3IGZ1bmN0aW9uIGhhcyBiZWVuIGludHJvZHVjZWQgdG8gcGFyc2UKdGhlIGNs aWVudCdzIGV4dGVuc2lvbnMuCgoyLiByZWplY3Qgd2VhayBkaGUgcHJpbWVzIHRoYXQgY2FuIGJl IGVhc2lseSBjcmFja2VkIHdpdGgKdGhlIG51bWJlciBmaWVsZCBzaWV2ZSBhbGdvcml0aG0uIHRo aXMgYXZvaWRzIGF0dGFja3MgbGlrZQpsb2dqYW0uCgozLiBzdG9wIHB1dHRpbmcgdW5peCB0aW1l IHRvIHRoZSBmaXJzdCA0IGJ5dGVzIG9mIGNsaWVudC8Kc2VydmVyIHJhbmRvbS4gaXQgY2FuIGFs bG93IGZpbmdlcnByaW50aW5nLCB0bHMgMS4zIGRvZXNuJ3QKcmVjb21tZW5kIGl0IGFueSBtb3Jl IGFuZCB0aGVyZSB3YXMgYSBkcmFmdCB0byBkZXByZWNhdGUKdGhpcyBiZWhhdmlvdXIgZWFybGll ci5bMV0KCjQuIHNpbXBseSBwcmYgY29kZSwgcmVtb3ZlIHVzZWxlc3MgY2lwaGVyIGVudW1zLgoK WzFdIGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvZHJhZnQtbWF0aGV3c29u LW5vLWdtdHVuaXh0aW1lLTAwCi0tLQpkaWZmIGIzMjE1YzgwNzU1NmNkYWFhMGY5NDlmMWZiM2Y5 N2M0ODRmZmQxZGEgZGZjMjBiMTM1ZWNhYWMzZDBhZjFhMzY5MTk3MjY0Y2I2ODA2OTJlOQotLS0g YS9zeXMvc3JjL2xpYnNlYy9wb3J0L3Rsc2hhbmQuYwlGcmkgSnVuIDE4IDAwOjEyOjI2IDIwMjEK KysrIGIvc3lzL3NyYy9saWJzZWMvcG9ydC90bHNoYW5kLmMJRnJpIEp1biAxOCAyMjoxMjo0NCAy MDIxCkBAIC02NiwxOCArNjYsMjAgQEAKIAlpbnQgcHNrbGVuOwogCWludCBjbGllbnRWZXJzOwkJ CS8vIHZlcnNpb24gaW4gQ2xpZW50SGVsbG8KIAl1Y2hhciBzZWNbTWFzdGVyU2VjcmV0U2l6ZV07 CS8vIG1hc3RlciBzZWNyZXQKLQl1Y2hhciBjcmFuZG9tW1JhbmRvbVNpemVdOwkvLyBjbGllbnQg cmFuZG9tCiAJdWNoYXIgc3JhbmRvbVtSYW5kb21TaXplXTsJLy8gc2VydmVyIHJhbmRvbQorCXVj aGFyIGNyYW5kb21bUmFuZG9tU2l6ZV07CS8vIGNsaWVudCByYW5kb20KIAorCU5hbWVkY3VydmUg Km5jOyAvLyBzZWxlY3RlZCBjdXJ2ZSBmb3IgRUNESEUKIAkvLyBkaWZmaWUgaGVsbG1hbiBzdGF0 ZQogCURIc3RhdGUgZGg7CiAJc3RydWN0IHsKIAkJRUNkb21haW4gZG9tOwogCQlFQ3ByaXYgUTsK IAl9IGVjOworCXVjaGFyIFhbMzJdOwogCiAJLy8gYnl0ZSBnZW5lcmF0aW9uIGFuZCBoYW5kc2hh a2UgY2hlY2tzdW0KLQl2b2lkICgqcHJmKSh1Y2hhciosIGludCwgdWNoYXIqLCBpbnQsIGNoYXIq LCB1Y2hhciosIGludCwgdWNoYXIqLCBpbnQpOworCXZvaWQgKCpwcmYpKHVjaGFyKiwgaW50LCB1 Y2hhciosIGludCwgY2hhciosIHVjaGFyKiwgaW50KTsKIAl2b2lkICgqc2V0RmluaXNoZWQpKFRs c1NlYyosIEhhbmRzaGFrZUhhc2gsIHVjaGFyKiwgaW50KTsKIAlpbnQgbmZpbjsKIH07CkBAIC0x MDcsNyArMTA5LDcgQEAKIAlpbnQgdGFnOwogCXVuaW9uIHsKIAkJc3RydWN0IHsKLQkJCWludCB2 ZXJzaW9uOworCQkJaW50CXZlcnNpb247CiAJCQl1Y2hhciAJcmFuZG9tW1JhbmRvbVNpemVdOwog CQkJQnl0ZXMqCXNpZDsKIAkJCUludHMqCWNpcGhlcnM7CkBAIC0xMTUsNyArMTE3LDcgQEAKIAkJ CUJ5dGVzKglleHRlbnNpb25zOwogCQl9IGNsaWVudEhlbGxvOwogCQlzdHJ1Y3QgewotCQkJaW50 IHZlcnNpb247CisJCQlpbnQJdmVyc2lvbjsKIAkJCXVjaGFyCXJhbmRvbVtSYW5kb21TaXplXTsK IAkJCUJ5dGVzKglzaWQ7CiAJCQlpbnQJY2lwaGVyOwpAQCAtMjE0LDc5ICsyMTYsMzYgQEAKIAog Ly8gY2lwaGVyIHN1aXRlcwogZW51bSB7Ci0JVExTX05VTExfV0lUSF9OVUxMX05VTEwJCQk9IDB4 MDAwMCwKLQlUTFNfUlNBX1dJVEhfTlVMTF9NRDUJCQk9IDB4MDAwMSwKLQlUTFNfUlNBX1dJVEhf TlVMTF9TSEEJCQk9IDB4MDAwMiwKLQlUTFNfUlNBX0VYUE9SVF9XSVRIX1JDNF80MF9NRDUJCT0g MHgwMDAzLAotCVRMU19SU0FfV0lUSF9SQzRfMTI4X01ENQkJPSAweDAwMDQsCi0JVExTX1JTQV9X SVRIX1JDNF8xMjhfU0hBCQk9IDB4MDAwNSwKLQlUTFNfUlNBX0VYUE9SVF9XSVRIX1JDMl9DQkNf NDBfTUQ1CT0gMFgwMDA2LAotCVRMU19SU0FfV0lUSF9JREVBX0NCQ19TSEEJCT0gMFgwMDA3LAot CVRMU19SU0FfRVhQT1JUX1dJVEhfREVTNDBfQ0JDX1NIQQk9IDBYMDAwOCwKLQlUTFNfUlNBX1dJ VEhfREVTX0NCQ19TSEEJCT0gMFgwMDA5LAogCVRMU19SU0FfV0lUSF8zREVTX0VERV9DQkNfU0hB CQk9IDBYMDAwQSwKLQlUTFNfREhfRFNTX0VYUE9SVF9XSVRIX0RFUzQwX0NCQ19TSEEJPSAwWDAw MEIsCi0JVExTX0RIX0RTU19XSVRIX0RFU19DQkNfU0hBCQk9IDBYMDAwQywKLQlUTFNfREhfRFNT X1dJVEhfM0RFU19FREVfQ0JDX1NIQQk9IDBYMDAwRCwKLQlUTFNfREhfUlNBX0VYUE9SVF9XSVRI X0RFUzQwX0NCQ19TSEEJPSAwWDAwMEUsCi0JVExTX0RIX1JTQV9XSVRIX0RFU19DQkNfU0hBCQk9 IDBYMDAwRiwKLQlUTFNfREhfUlNBX1dJVEhfM0RFU19FREVfQ0JDX1NIQQk9IDBYMDAxMCwKLQlU TFNfREhFX0RTU19FWFBPUlRfV0lUSF9ERVM0MF9DQkNfU0hBCT0gMFgwMDExLAotCVRMU19ESEVf RFNTX1dJVEhfREVTX0NCQ19TSEEJCT0gMFgwMDEyLAotCVRMU19ESEVfRFNTX1dJVEhfM0RFU19F REVfQ0JDX1NIQQk9IDBYMDAxMywJLy8gWlpaIG11c3QgYmUgaW1wbGVtZW50ZWQgZm9yIHRsczEu MCBjb21wbGlhbmNlCi0JVExTX0RIRV9SU0FfRVhQT1JUX1dJVEhfREVTNDBfQ0JDX1NIQQk9IDBY MDAxNCwKLQlUTFNfREhFX1JTQV9XSVRIX0RFU19DQkNfU0hBCQk9IDBYMDAxNSwKIAlUTFNfREhF X1JTQV9XSVRIXzNERVNfRURFX0NCQ19TSEEJPSAwWDAwMTYsCi0JVExTX0RIX2Fub25fRVhQT1JU X1dJVEhfUkM0XzQwX01ENQk9IDB4MDAxNywKLQlUTFNfREhfYW5vbl9XSVRIX1JDNF8xMjhfTUQ1 CQk9IDB4MDAxOCwKLQlUTFNfREhfYW5vbl9FWFBPUlRfV0lUSF9ERVM0MF9DQkNfU0hBCT0gMFgw MDE5LAotCVRMU19ESF9hbm9uX1dJVEhfREVTX0NCQ19TSEEJCT0gMFgwMDFBLAotCVRMU19ESF9h bm9uX1dJVEhfM0RFU19FREVfQ0JDX1NIQQk9IDBYMDAxQiwKLQlUTFNfUlNBX1dJVEhfQUVTXzEy OF9DQkNfU0hBCQk9IDBYMDAyRiwJLy8gYWVzLCBha2EgcmlqbmRhZWwgd2l0aCAxMjggYml0IGJs b2NrcwotCVRMU19ESF9EU1NfV0lUSF9BRVNfMTI4X0NCQ19TSEEJCT0gMFgwMDMwLAotCVRMU19E SF9SU0FfV0lUSF9BRVNfMTI4X0NCQ19TSEEJCT0gMFgwMDMxLAotCVRMU19ESEVfRFNTX1dJVEhf QUVTXzEyOF9DQkNfU0hBCT0gMFgwMDMyLAorCisJVExTX1JTQV9XSVRIX0FFU18xMjhfQ0JDX1NI QQkJPSAwWDAwMkYsCiAJVExTX0RIRV9SU0FfV0lUSF9BRVNfMTI4X0NCQ19TSEEJPSAwWDAwMzMs Ci0JVExTX0RIX2Fub25fV0lUSF9BRVNfMTI4X0NCQ19TSEEJPSAwWDAwMzQsCiAJVExTX1JTQV9X SVRIX0FFU18yNTZfQ0JDX1NIQQkJPSAwWDAwMzUsCi0JVExTX0RIX0RTU19XSVRIX0FFU18yNTZf Q0JDX1NIQQkJPSAwWDAwMzYsCi0JVExTX0RIX1JTQV9XSVRIX0FFU18yNTZfQ0JDX1NIQQkJPSAw WDAwMzcsCi0JVExTX0RIRV9EU1NfV0lUSF9BRVNfMjU2X0NCQ19TSEEJPSAwWDAwMzgsCiAJVExT X0RIRV9SU0FfV0lUSF9BRVNfMjU2X0NCQ19TSEEJPSAwWDAwMzksCi0JVExTX0RIX2Fub25fV0lU SF9BRVNfMjU2X0NCQ19TSEEJPSAwWDAwM0EsCiAJVExTX1JTQV9XSVRIX0FFU18xMjhfQ0JDX1NI QTI1NgkJPSAwWDAwM0MsCiAJVExTX1JTQV9XSVRIX0FFU18yNTZfQ0JDX1NIQTI1NgkJPSAwWDAw M0QsCiAJVExTX0RIRV9SU0FfV0lUSF9BRVNfMTI4X0NCQ19TSEEyNTYJPSAwWDAwNjcsCiAKIAlU TFNfUlNBX1dJVEhfQUVTXzEyOF9HQ01fU0hBMjU2CQk9IDB4MDA5QywKLQlUTFNfUlNBX1dJVEhf QUVTXzI1Nl9HQ01fU0hBMzg0CQk9IDB4MDA5RCwKIAlUTFNfREhFX1JTQV9XSVRIX0FFU18xMjhf R0NNX1NIQTI1Ngk9IDB4MDA5RSwKLQlUTFNfREhFX1JTQV9XSVRIX0FFU18yNTZfR0NNX1NIQTM4 NAk9IDB4MDA5RiwKLQlUTFNfREhfUlNBX1dJVEhfQUVTXzEyOF9HQ01fU0hBMjU2CT0gMHgwMEEw LAotCVRMU19ESF9SU0FfV0lUSF9BRVNfMjU2X0dDTV9TSEEzODQJPSAweDAwQTEsCi0JVExTX0RI RV9EU1NfV0lUSF9BRVNfMTI4X0dDTV9TSEEyNTYJPSAweDAwQTIsCi0JVExTX0RIRV9EU1NfV0lU SF9BRVNfMjU2X0dDTV9TSEEzODQJPSAweDAwQTMsCi0JVExTX0RIX0RTU19XSVRIX0FFU18xMjhf R0NNX1NIQTI1Ngk9IDB4MDBBNCwKLQlUTFNfREhfRFNTX1dJVEhfQUVTXzI1Nl9HQ01fU0hBMzg0 CT0gMHgwMEE1LAotCVRMU19ESF9hbm9uX1dJVEhfQUVTXzEyOF9HQ01fU0hBMjU2CT0gMHgwMEE2 LAotCVRMU19ESF9hbm9uX1dJVEhfQUVTXzI1Nl9HQ01fU0hBMzg0CT0gMHgwMEE3LAotCi0JVExT X0VDREhFX0VDRFNBX1dJVEhfQUVTXzEyOF9HQ01fU0hBMjU2ID0gMHhDMDJCLAotCVRMU19FQ0RI RV9SU0FfV0lUSF9BRVNfMTI4X0dDTV9TSEEyNTYJPSAweEMwMkYsCiAKIAlUTFNfRUNESEVfUlNB X1dJVEhfQUVTXzEyOF9DQkNfU0hBCT0gMHhDMDEzLAogCVRMU19FQ0RIRV9SU0FfV0lUSF9BRVNf MjU2X0NCQ19TSEEJPSAweEMwMTQsCi0JVExTX0VDREhFX1JTQV9XSVRIX0FFU18xMjhfQ0JDX1NI QTI1Ngk9IDB4QzAyNywKIAlUTFNfRUNESEVfRUNEU0FfV0lUSF9BRVNfMTI4X0NCQ19TSEEyNTYJ PSAweEMwMjMsCisJVExTX0VDREhFX1JTQV9XSVRIX0FFU18xMjhfQ0JDX1NIQTI1Ngk9IDB4QzAy NywKIAotCVRMU19FQ0RIRV9SU0FfV0lUSF9DSEFDSEEyMF9QT0xZMTMwNQk9IDB4Q0NBOCwKLQlU TFNfRUNESEVfRUNEU0FfV0lUSF9DSEFDSEEyMF9QT0xZMTMwNQk9IDB4Q0NBOSwKLQlUTFNfREhF X1JTQV9XSVRIX0NIQUNIQTIwX1BPTFkxMzA1CT0gMHhDQ0FBLAorCVRMU19FQ0RIRV9FQ0RTQV9X SVRIX0FFU18xMjhfR0NNX1NIQTI1NiA9IDB4QzAyQiwKKwlUTFNfRUNESEVfUlNBX1dJVEhfQUVT XzEyOF9HQ01fU0hBMjU2CT0gMHhDMDJGLAogCiAJR09PR0xFX0VDREhFX1JTQV9XSVRIX0NIQUNI QTIwX1BPTFkxMzA1CQk9IDB4Q0MxMywKIAlHT09HTEVfRUNESEVfRUNEU0FfV0lUSF9DSEFDSEEy MF9QT0xZMTMwNQk9IDB4Q0MxNCwKIAlHT09HTEVfREhFX1JTQV9XSVRIX0NIQUNIQTIwX1BPTFkx MzA1CQk9IDB4Q0MxNSwKIAorCVRMU19FQ0RIRV9SU0FfV0lUSF9DSEFDSEEyMF9QT0xZMTMwNQk9 IDB4Q0NBOCwKKwlUTFNfRUNESEVfRUNEU0FfV0lUSF9DSEFDSEEyMF9QT0xZMTMwNQk9IDB4Q0NB OSwKKwlUTFNfREhFX1JTQV9XSVRIX0NIQUNIQTIwX1BPTFkxMzA1CT0gMHhDQ0FBLAorCiAJVExT X1BTS19XSVRIX0NIQUNIQTIwX1BPTFkxMzA1CQk9IDB4Q0NBQiwKIAlUTFNfUFNLX1dJVEhfQUVT XzEyOF9DQkNfU0hBMjU2CQk9IDB4MDBBRSwKIAlUTFNfUFNLX1dJVEhfQUVTXzEyOF9DQkNfU0hB CQk9IDB4MDA4QywKQEAgLTMwMCw2ICsyNTksMjAgQEAKIAlDb21wcmVzc2lvbk1heAogfTsKIAor CisvLyBjdXJ2ZXMKK2VudW0geworCVgyNTUxOSA9IDB4MDAxZCwKK307CisKKy8vIGV4dGVuc2lv bnMKK2VudW0geworCUV4dHNuaSA9IDB4MDAwMCwKKwlFeHRlYyA9IDB4MDAwYSwKKwlFeHRlY3Ag PSAweDAwMGIsCisJRXh0c2lnYWxncyA9IDB4MDAwZCwKK307CisKIHN0YXRpYyBBbGdzIGNpcGhl ckFsZ3NbXSA9IHsKIAkvLyBFQ0RIRS1FQ0RTQQogCXsiY2Nwb2x5OTZfYWVhZCIsICJjbGVhciIs IDIqKDMyKzEyKSwgVExTX0VDREhFX0VDRFNBX1dJVEhfQ0hBQ0hBMjBfUE9MWTEzMDV9LApAQCAt MzQzLDYgKzMxNiw3IEBACiB9OwogCiBzdGF0aWMgTmFtZWRjdXJ2ZSBuYW1lZGN1cnZlc1tdID0g eworCVgyNTUxOSwgbmlsLAogCTB4MDAxNywgc2VjcDI1NnIxLAogCTB4MDAxOCwgc2VjcDM4NHIx LAogfTsKQEAgLTQwMiw3ICszNzYsNyBAQAogc3RhdGljIGludCBpc0VDRFNBKGludCB0bHNpZCk7 CiAKIHN0YXRpYyBpbnQgc2V0QWxncyhUbHNDb25uZWN0aW9uICpjLCBpbnQgYSk7Ci1zdGF0aWMg aW50IG9rQ2lwaGVyKEludHMgKmN2LCBpbnQgaXNwc2spOworc3RhdGljIGludCBva0NpcGhlcihJ bnRzICpjdiwgaW50IGlzcHNrLCBpbnQgY2FuZWMpOwogc3RhdGljIGludCBva0NvbXByZXNzaW9u KEJ5dGVzICpjdik7CiBzdGF0aWMgaW50IGluaXRDaXBoZXJzKHZvaWQpOwogc3RhdGljIEludHMq IG1ha2VjaXBoZXJzKGludCBpc3Bzayk7CkBAIC00MTMsNyArMzg3LDcgQEAKIAogc3RhdGljIHZv aWQJdGxzU2VjSW5pdHMoVGxzU2VjICpzZWMsIGludCBjdmVycywgdWNoYXIgKmNyYW5kb20pOwog c3RhdGljIGludAl0bHNTZWNSU0FzKFRsc1NlYyAqc2VjLCBCeXRlcyAqZXBtKTsKLXN0YXRpYyBC eXRlcyoJdGxzU2VjRUNESEVzMShUbHNTZWMgKnNlYywgTmFtZWRjdXJ2ZSAqbmMpOworc3RhdGlj IEJ5dGVzKgl0bHNTZWNFQ0RIRXMxKFRsc1NlYyAqc2VjKTsKIHN0YXRpYyBpbnQJdGxzU2VjRUNE SEVzMihUbHNTZWMgKnNlYywgQnl0ZXMgKlljKTsKIHN0YXRpYyB2b2lkCXRsc1NlY0luaXRjKFRs c1NlYyAqc2VjLCBpbnQgY3ZlcnMpOwogc3RhdGljIEJ5dGVzKgl0bHNTZWNSU0FjKFRsc1NlYyAq c2VjLCB1Y2hhciAqY2VydCwgaW50IG5jZXJ0KTsKQEAgLTQ1NCw2ICs0MjgsNyBAQAogewogCWNo YXIgYnVmWzhdOwogCWNoYXIgZG5hbWVbNjRdOworCXVjaGFyIHNlZWRbMipSYW5kb21TaXplXTsK IAlpbnQgbiwgZGF0YSwgY3RsLCBoYW5kOwogCVRsc0Nvbm5lY3Rpb24gKnRsczsKIApAQCAtNDk4 LDEzICs0NzMsMTUgQEAKIAljb25uLT5zZXNzaW9uSUQgPSBuaWw7CiAJaWYoY29ubi0+c2Vzc2lv bktleSAhPSBuaWwKIAkmJiBjb25uLT5zZXNzaW9uVHlwZSAhPSBuaWwKLQkmJiBzdHJjbXAoY29u bi0+c2Vzc2lvblR5cGUsICJ0dGxzIikgPT0gMCkKKwkmJiBzdHJjbXAoY29ubi0+c2Vzc2lvblR5 cGUsICJ0dGxzIikgPT0gMCl7CisJCW1lbW1vdmUoc2VlZCwgdGxzLT5zZWMtPmNyYW5kb20sIFJh bmRvbVNpemUpOworCQltZW1tb3ZlKHNlZWQrUmFuZG9tU2l6ZSwgdGxzLT5zZWMtPnNyYW5kb20s IFJhbmRvbVNpemUpOwogCQl0bHMtPnNlYy0+cHJmKAogCQkJY29ubi0+c2Vzc2lvbktleSwgY29u bi0+c2Vzc2lvbktleWxlbiwKIAkJCXRscy0+c2VjLT5zZWMsIE1hc3RlclNlY3JldFNpemUsCiAJ CQljb25uLT5zZXNzaW9uQ29uc3QsIAotCQkJdGxzLT5zZWMtPmNyYW5kb20sIFJhbmRvbVNpemUs Ci0JCQl0bHMtPnNlYy0+c3JhbmRvbSwgUmFuZG9tU2l6ZSk7CisJCQlzZWVkLCBzaXplb2Yoc2Vl ZCkpOworCX0KIAl0bHNDb25uZWN0aW9uRnJlZSh0bHMpOwogCWNsb3NlKGZkKTsKIAlyZXR1cm4g ZGF0YTsKQEAgLTUyNiw3ICs1MDMsNyBAQAogCQliID0gZXJlYWxsb2MoYiwgbSArIDIrMisyKzEr MituKTsKIAkJcCA9IGIgKyBtOwogCi0JCXB1dDE2KHAsIDApLCBwICs9IDI7CQkvKiBUeXBlOiBz ZXJ2ZXJfbmFtZSAqLworCQlwdXQxNihwLCBFeHRzbmkpLCBwICs9IDI7CS8qIFR5cGU6IHNlcnZl cl9uYW1lICovCiAJCXB1dDE2KHAsIDIrMSsyK24pLCBwICs9IDI7CS8qIExlbmd0aCAqLwogCQlw dXQxNihwLCAxKzIrbiksIHAgKz0gMjsJLyogU2VydmVyIE5hbWUgbGlzdCBsZW5ndGggKi8KIAkJ KnArKyA9IDA7CQkJLyogU2VydmVyIE5hbWUgVHlwZTogaG9zdF9uYW1lICovCkBAIC01MzUsMjYg KzUxMiwyNiBAQAogCQlwICs9IG47CiAJfQogCi0JLy8gRUNESEUKKwkvLyBFbGxpcHRpYyBDdXJ2 ZXMgKGFsc28gY2FsbGVkIFN1cHBvcnRlZCBHcm91cHMpCiAJaWYoUHJvdG9jb2xWZXJzaW9uID49 IFRMUzEwVmVyc2lvbil7CiAJCW0gPSBwIC0gYjsKIAkJYiA9IGVyZWFsbG9jKGIsIG0gKyAyKzIr MituZWxlbShuYW1lZGN1cnZlcykqMiArIDIrMisxK25lbGVtKHBvaW50Zm9ybWF0cykpOwogCQlw ID0gYiArIG07CiAKIAkJbiA9IG5lbGVtKG5hbWVkY3VydmVzKTsKLQkJcHV0MTYocCwgMHgwMDBh KSwgcCArPSAyOwkvKiBUeXBlOiBlbGxpcHRpY19jdXJ2ZXMgKi8KKwkJcHV0MTYocCwgRXh0ZWMp LCBwICs9IDI7CS8qIFR5cGU6IGVsbGlwdGljX2N1cnZlcyAvIHN1cHBvcnRlZF9ncm91cHMgKi8K IAkJcHV0MTYocCwgKG4rMSkqMiksIHAgKz0gMjsJLyogTGVuZ3RoICovCiAJCXB1dDE2KHAsIG4q MiksIHAgKz0gMjsJCS8qIEVsbGlwdGljIEN1cnZlcyBMZW5ndGggKi8KLQkJZm9yKGk9MDsgaSA8 IG47IGkrKyl7CQkvKiBFbGxpcHRpYyBjdXJ2ZXMgKi8KKwkJZm9yKGk9MDsgaSA8IG47IGkrKyl7 CQkvKiBFbGxpcHRpYyBDdXJ2ZXMgKi8KIAkJCXB1dDE2KHAsIG5hbWVkY3VydmVzW2ldLnRsc2lk KTsKIAkJCXAgKz0gMjsKIAkJfQogCiAJCW4gPSBuZWxlbShwb2ludGZvcm1hdHMpOwotCQlwdXQx NihwLCAweDAwMGIpLCBwICs9IDI7CS8qIFR5cGU6IGVjX3BvaW50X2Zvcm1hdHMgKi8KKwkJcHV0 MTYocCwgRXh0ZWNwKSwgcCArPSAyOwkvKiBUeXBlOiBlY19wb2ludF9mb3JtYXRzICovCiAJCXB1 dDE2KHAsIG4rMSksIHAgKz0gMjsJCS8qIExlbmd0aCAqLwogCQkqcCsrID0gbjsJCQkvKiBFQyBw b2ludCBmb3JtYXRzIExlbmd0aCAqLwotCQlmb3IoaT0wOyBpIDwgbjsgaSsrKQkJLyogRWxsaXB0 aWMgY3VydmVzIHBvaW50IGZvcm1hdHMgKi8KKwkJZm9yKGk9MDsgaSA8IG47IGkrKykJCS8qIEVD IHBvaW50IGZvcm1hdHMgKi8KIAkJCSpwKysgPSBwb2ludGZvcm1hdHNbaV07CiAJfQogCkBAIC01 NjYsNyArNTQzLDcgQEAKIAkJYiA9IGVyZWFsbG9jKGIsIG0gKyAyKzIrMituKjIpOwogCQlwID0g YiArIG07CiAKLQkJcHV0MTYocCwgMHgwMDBkKSwgcCArPSAyOworCQlwdXQxNihwLCBFeHRzaWdh bGdzKSwgcCArPSAyOwogCQlwdXQxNihwLCBuKjIgKyAyKSwgcCArPSAyOwogCQlwdXQxNihwLCBu KjIpLCBwICs9IDI7CiAJCWZvcihpPTA7IGkgPCBuOyBpKyspewpAQCAtNTg2LDYgKzU2Myw3IEBA CiB7CiAJY2hhciBidWZbOF07CiAJY2hhciBkbmFtZVs2NF07CisJdWNoYXIgc2VlZFsyKlJhbmRv bVNpemVdOwogCWludCBuLCBkYXRhLCBjdGwsIGhhbmQ7CiAJVGxzQ29ubmVjdGlvbiAqdGxzOwog CXVjaGFyICpleHQ7CkBAIC02NDEsMTMgKzYxOSwxNSBAQAogCWNvbm4tPnNlc3Npb25JRCA9IG5p bDsKIAlpZihjb25uLT5zZXNzaW9uS2V5ICE9IG5pbAogCSYmIGNvbm4tPnNlc3Npb25UeXBlICE9 IG5pbAotCSYmIHN0cmNtcChjb25uLT5zZXNzaW9uVHlwZSwgInR0bHMiKSA9PSAwKQorCSYmIHN0 cmNtcChjb25uLT5zZXNzaW9uVHlwZSwgInR0bHMiKSA9PSAwKXsKKwkJbWVtbW92ZShzZWVkLCB0 bHMtPnNlYy0+Y3JhbmRvbSwgUmFuZG9tU2l6ZSk7CisJCW1lbW1vdmUoc2VlZCtSYW5kb21TaXpl LCB0bHMtPnNlYy0+c3JhbmRvbSwgUmFuZG9tU2l6ZSk7CiAJCXRscy0+c2VjLT5wcmYoCiAJCQlj b25uLT5zZXNzaW9uS2V5LCBjb25uLT5zZXNzaW9uS2V5bGVuLAogCQkJdGxzLT5zZWMtPnNlYywg TWFzdGVyU2VjcmV0U2l6ZSwKIAkJCWNvbm4tPnNlc3Npb25Db25zdCwgCi0JCQl0bHMtPnNlYy0+ Y3JhbmRvbSwgUmFuZG9tU2l6ZSwKLQkJCXRscy0+c2VjLT5zcmFuZG9tLCBSYW5kb21TaXplKTsK KwkJCXNlZWQsIHNpemVvZihzZWVkKSk7CisJfQogCXRsc0Nvbm5lY3Rpb25GcmVlKHRscyk7CiAJ Y2xvc2UoZmQpOwogCXJldHVybiBkYXRhOwpAQCAtNjY1LDYgKzY0NSw1MyBAQAogCXJldHVybiBp OwogfQogCitzdGF0aWMgaW50CitjaGVja0NsaWVudEV4dGVuc2lvbnMoVGxzQ29ubmVjdGlvbiAq YywgQnl0ZXMgKmV4dCkKK3sKKwl1Y2hhciAqcCwgKmU7CisJaW50IGksIGosIG47CisKKwlwID0g ZXh0LT5kYXRhOworCWUgPSBwK2V4dC0+bGVuOworCXdoaWxlKHAgPCBlKXsKKwkJaWYoZS1wIDwg MikKKwkJCWdvdG8gU2hvcnQ7CisJCXN3aXRjaChnZXQxNihwKSl7CisJCWNhc2UgRXh0ZWM6CQor CQkJcCArPSAyOworCQkJbiA9IGdldDE2KHApOworCQkJaWYoZS1wIDwgbiB8fCBuIDwgMikKKwkJ CQlnb3RvIFNob3J0OworCQkJcCArPSAyOworCQkJbiA9IGdldDE2KHApOworCQkJcCArPSAyOwor CQkJaWYoZS1wIDwgbiB8fCBuICYgMSB8fCBuID09IDApCisJCQkJZ290byBTaG9ydDsKKwkJCWZv cihpID0gMDsgaSA8IG5lbGVtKG5hbWVkY3VydmVzKSAmJiBjLT5zZWMtPm5jID09IG5pbDsgaSsr KQorCQkJCWZvcihqID0gMDsgaiA8IG47IGogKz0gMikKKwkJCQkJaWYobmFtZWRjdXJ2ZXNbaV0u dGxzaWQgPT0gZ2V0MTYocCtqKSl7CisJCQkJCQljLT5zZWMtPm5jID0gJm5hbWVkY3VydmVzW2ld OworCQkJCQkJYnJlYWs7CisJCQkJCX0KKwkJCXAgKz0gbjsKKwkJCWJyZWFrOworCQlkZWZhdWx0 OgorCQkJcCArPSAyOworCQkJbiA9IGdldDE2KHApOworCQkJcCArPSAyOworCQkJaWYoZS1wIDwg bikKKwkJCQlnb3RvIFNob3J0OworCQkJcCArPSBuOworCQkJYnJlYWs7CisJCX0KKwl9CisKKwly ZXR1cm4gMDsKK1Nob3J0OgorCXRsc0Vycm9yKGMsIEVEZWNvZGVFcnJvciwgImNsaWVudGhlbGxv IGV4dGVuc2lvbnMgaGFzIGludmFsaWQgbGVuZ3RoIik7CisJcmV0dXJuIC0xOyAKK30gCisKIHN0 YXRpYyBUbHNDb25uZWN0aW9uICoKIHRsc1NlcnZlcjIoaW50IGN0bCwgaW50IGhhbmQsCiAJdWNo YXIgKmNlcnQsIGludCBjZXJ0bGVuLApAQCAtNzA4LDE5ICs3MzUsNiBAQAogCQl0bHNFcnJvcihj LCBFSW5hcHByb3ByaWF0ZUZhbGxiYWNrLCAiaW5hcHByb3ByaWF0ZSBmYWxsYmFjayIpOwogCQln b3RvIEVycjsKIAl9Ci0JY2lwaGVyID0gb2tDaXBoZXIobS51LmNsaWVudEhlbGxvLmNpcGhlcnMs IHBza2xlbiA+IDApOwotCWlmKGNpcGhlciA8IDAgfHwgIXNldEFsZ3MoYywgY2lwaGVyKSkgewot CQl0bHNFcnJvcihjLCBFSGFuZHNoYWtlRmFpbHVyZSwgIm5vIG1hdGNoaW5nIGNpcGhlciBzdWl0 ZSIpOwotCQlnb3RvIEVycjsKLQl9Ci0JY29tcHJlc3NvciA9IG9rQ29tcHJlc3Npb24obS51LmNs aWVudEhlbGxvLmNvbXByZXNzb3JzKTsKLQlpZihjb21wcmVzc29yIDwgMCkgewotCQl0bHNFcnJv cihjLCBFSGFuZHNoYWtlRmFpbHVyZSwgIm5vIG1hdGNoaW5nIGNvbXByZXNzb3IiKTsKLQkJZ290 byBFcnI7Ci0JfQotCWlmKHRyYWNlKQotCQl0cmFjZSgiICBjaXBoZXIgJXgsIGNvbXByZXNzb3Ig JXhcbiIsIGNpcGhlciwgY29tcHJlc3Nvcik7Ci0KIAl0bHNTZWNJbml0cyhjLT5zZWMsIG0udS5j bGllbnRIZWxsby52ZXJzaW9uLCBtLnUuY2xpZW50SGVsbG8ucmFuZG9tKTsKIAl0bHNTZWNWZXJz KGMtPnNlYywgYy0+dmVyc2lvbik7CiAJaWYocHNrbGVuID4gMCl7CkBAIC03NDAsNiArNzU0LDIw IEBACiAJCQlnb3RvIEVycjsKIAkJfQogCX0KKwlpZihjaGVja0NsaWVudEV4dGVuc2lvbnMoYywg bS51LmNsaWVudEhlbGxvLmV4dGVuc2lvbnMpIDwgMCkKKwkJZ290byBFcnI7CisJY2lwaGVyID0g b2tDaXBoZXIobS51LmNsaWVudEhlbGxvLmNpcGhlcnMsIHBza2xlbiA+IDAsIGMtPnNlYy0+bmMg IT0gbmlsKTsKKwlpZihjaXBoZXIgPCAwIHx8ICFzZXRBbGdzKGMsIGNpcGhlcikpIHsKKwkJdGxz RXJyb3IoYywgRUhhbmRzaGFrZUZhaWx1cmUsICJubyBtYXRjaGluZyBjaXBoZXIgc3VpdGUiKTsK KwkJZ290byBFcnI7CisJfQorCWNvbXByZXNzb3IgPSBva0NvbXByZXNzaW9uKG0udS5jbGllbnRI ZWxsby5jb21wcmVzc29ycyk7CisJaWYoY29tcHJlc3NvciA8IDApIHsKKwkJdGxzRXJyb3IoYywg RUhhbmRzaGFrZUZhaWx1cmUsICJubyBtYXRjaGluZyBjb21wcmVzc29yIik7CisJCWdvdG8gRXJy OworCX0KKwlpZih0cmFjZSkKKwkJdHJhY2UoIiAgY2lwaGVyICV4LCBjb21wcmVzc29yICV4XG4i LCBjaXBoZXIsIGNvbXByZXNzb3IpOwogCW1zZ0NsZWFyKCZtKTsKIAogCW0udGFnID0gSFNlcnZl ckhlbGxvOwpAQCAtNzY0LDExICs3OTIsOSBAQAogCX0KIAogCWlmKGlzRUNESEUoY2lwaGVyKSl7 Ci0JCU5hbWVkY3VydmUgKm5jID0gJm5hbWVkY3VydmVzWzBdOwkvKiBzZWNwMjU2cjEgKi8KLQog CQltLnRhZyA9IEhTZXJ2ZXJLZXlFeGNoYW5nZTsKLQkJbS51LnNlcnZlcktleUV4Y2hhbmdlLmN1 cnZlID0gbmMtPnRsc2lkOwotCQltLnUuc2VydmVyS2V5RXhjaGFuZ2UuZGhfcGFyYW1ldGVycyA9 IHRsc1NlY0VDREhFczEoYy0+c2VjLCBuYyk7CisJCW0udS5zZXJ2ZXJLZXlFeGNoYW5nZS5jdXJ2 ZSA9IGMtPnNlYy0+bmMtPnRsc2lkOworCQltLnUuc2VydmVyS2V5RXhjaGFuZ2UuZGhfcGFyYW1l dGVycyA9IHRsc1NlY0VDREhFczEoYy0+c2VjKTsKIAkJaWYobS51LnNlcnZlcktleUV4Y2hhbmdl LmRoX3BhcmFtZXRlcnMgPT0gbmlsKXsKIAkJCXRsc0Vycm9yKGMsIEVJbnRlcm5hbEVycm9yLCAi Y2FuJ3Qgc2V0IERIIHBhcmFtZXRlcnMiKTsKIAkJCWdvdG8gRXJyOwpAQCAtODg5LDcgKzkxNSw5 IEBACiAKIAlpZihwID09IG5pbCB8fCBnID09IG5pbCB8fCBZcyA9PSBuaWwpCiAJCXJldHVybiBu aWw7Ci0KKwkvLyByZWplY3QgZGggcHJpbWVzIHRoYXQgaXMgc3VzY2VwdGlibGUgdG8gbG9namFt CisJaWYocC0+bGVuIDw9IDEwMjQvOCkKKwkJcmV0dXJuIG5pbDsKIAlZYyA9IG5pbDsKIAlQID0g Ynl0ZXN0b21wKHApOwogCUcgPSBieXRlc3RvbXAoZyk7CkBAIC05MjAsNDkgKzk0OCw2NSBAQAog c3RhdGljIEJ5dGVzKgogdGxzU2VjRUNESEVjKFRsc1NlYyAqc2VjLCBpbnQgY3VydmUsIEJ5dGVz ICpZcykKIHsKKwlzdGF0aWMgY2hhciB6ZXJvWzMyXSA9IHswfTsKIAlFQ2RvbWFpbiAqZG9tID0g JnNlYy0+ZWMuZG9tOwogCUVDcHJpdiAqUSA9ICZzZWMtPmVjLlE7Ci0JTmFtZWRjdXJ2ZSAqbmM7 CiAJRUNwdWIgKnB1YjsKIAlFQ3BvaW50IEs7CisJTmFtZWRjdXJ2ZSAqbmM7CiAJQnl0ZXMgKllj OworCUJ5dGVzICpaOwogCWludCBuOwogCiAJaWYoWXMgPT0gbmlsKQogCQlyZXR1cm4gbmlsOwot CWZvcihuYyA9IG5hbWVkY3VydmVzOyBuYyAhPSAmbmFtZWRjdXJ2ZXNbbmVsZW0obmFtZWRjdXJ2 ZXMpXTsgbmMrKykKLQkJaWYobmMtPnRsc2lkID09IGN1cnZlKQotCQkJZ290byBGb3VuZDsKLQly ZXR1cm4gbmlsOwotCi1Gb3VuZDoKLQllY2RvbWluaXQoZG9tLCBuYy0+aW5pdCk7Ci0JcHViID0g ZWNkZWNvZGVwdWIoZG9tLCBZcy0+ZGF0YSwgWXMtPmxlbik7Ci0JaWYocHViID09IG5pbCkKLQkJ cmV0dXJuIG5pbDsKIAotCW1lbXNldChRLCAwLCBzaXplb2YoKlEpKTsKLQlRLT54ID0gbXBuZXco MCk7Ci0JUS0+eSA9IG1wbmV3KDApOwotCVEtPmQgPSBtcG5ldygwKTsKLQotCW1lbXNldCgmSywg MCwgc2l6ZW9mKEspKTsKLQlLLnggPSBtcG5ldygwKTsKLQlLLnkgPSBtcG5ldygwKTsKLQotCWVj Z2VuKGRvbSwgUSk7Ci0JZWNtdWwoZG9tLCBwdWIsIFEtPmQsICZLKTsKLQotCW4gPSAobXBzaWdu aWYoZG9tLT5wKSs3KS84OwotCXNldE1hc3RlclNlY3JldChzZWMsIG1wdG9ieXRlcyhLLngsIG4p KTsKLQlZYyA9IG5ld2J5dGVzKDEgKyAyKm4pOwotCVljLT5sZW4gPSBlY2VuY29kZXB1Yihkb20s IFEsIFljLT5kYXRhLCBZYy0+bGVuKTsKKwlpZihjdXJ2ZSA9PSBYMjU1MTkpeworCQlpZihZcy0+ bGVuICE9IDMyKQorCQkJcmV0dXJuIG5pbDsKKwkJWWMgPSBuZXdieXRlcygzMik7CisJCWN1cnZl MjU1MTlfZGhfbmV3KHNlYy0+WCwgWWMtPmRhdGEpOworCQlaID0gbmV3Ynl0ZXMoMzIpOworCQlj dXJ2ZTI1NTE5X2RoX2ZpbmlzaChzZWMtPlgsIFlzLT5kYXRhLCBaLT5kYXRhKTsKKwkJLy8gcmZj IHdhbnRzIHVzIHRvIHRlcm1pbmF0ZSB0aGUgY29ubmVjdGlvbiBpZgorCQkvLyBzaGFyZWQgc2Vj cmV0ID09IGFsbCB6ZXJvZXMuCisJCWlmKHRzbWVtY21wKFotPmRhdGEsIHplcm8sIFotPmxlbikg PT0gMCl7CisJCQlmcmVlYnl0ZXMoWWMpOworCQkJZnJlZWJ5dGVzKFopOworCQkJcmV0dXJuIG5p bDsKKwkJfQorCQlzZXRNYXN0ZXJTZWNyZXQoc2VjLCBaKTsKKwl9ZWxzZXsKKwkJZm9yKG5jID0g bmFtZWRjdXJ2ZXM7IG5jLT50bHNpZCAhPSBjdXJ2ZTsgbmMrKykKKwkJCWlmKG5jID09ICZuYW1l ZGN1cnZlc1tuZWxlbShuYW1lZGN1cnZlcyldKQorCQkJCXJldHVybiBuaWw7CisJCWVjZG9taW5p dChkb20sIG5jLT5pbml0KTsKKwkJcHViID0gZWNkZWNvZGVwdWIoZG9tLCBZcy0+ZGF0YSwgWXMt Pmxlbik7CisJCWlmKHB1YiA9PSBuaWwpCisJCQlyZXR1cm4gbmlsOwogCi0JbXBmcmVlKEsueCk7 Ci0JbXBmcmVlKEsueSk7CisJCW1lbXNldChRLCAwLCBzaXplb2YoKlEpKTsKKwkJUS0+eCA9IG1w bmV3KDApOworCQlRLT55ID0gbXBuZXcoMCk7CisJCVEtPmQgPSBtcG5ldygwKTsKKworCQltZW1z ZXQoJkssIDAsIHNpemVvZihLKSk7CisJCUsueCA9IG1wbmV3KDApOworCQlLLnkgPSBtcG5ldygw KTsKKworCQllY2dlbihkb20sIFEpOworCQllY211bChkb20sIHB1YiwgUS0+ZCwgJkspOworCisJ CW4gPSAobXBzaWduaWYoZG9tLT5wKSs3KS84OworCQlzZXRNYXN0ZXJTZWNyZXQoc2VjLCBtcHRv Ynl0ZXMoSy54LCBuKSk7CisJCVljID0gbmV3Ynl0ZXMoMSArIDIqbik7CisJCVljLT5sZW4gPSBl Y2VuY29kZXB1Yihkb20sIFEsIFljLT5kYXRhLCBZYy0+bGVuKTsKIAotCWVjcHViZnJlZShwdWIp OworCQltcGZyZWUoSy54KTsKKwkJbXBmcmVlKEsueSk7CiAKKwkJZWNwdWJmcmVlKHB1Yik7CisJ fQogCXJldHVybiBZYzsKIH0KIApAQCAtMTA0NSw3ICsxMDg5LDYgQEAKIAkJdGxzRXJyb3IoYywg RUlsbGVnYWxQYXJhbWV0ZXIsICJpbnZhbGlkIGNvbXByZXNzaW9uIik7CiAJCWdvdG8gRXJyOwog CX0KLQogCWRoeCA9IGlzREhFKGNpcGhlcikgfHwgaXNFQ0RIRShjaXBoZXIpOwogCWlmKCFtc2dS ZWN2KGMsICZtKSkKIAkJZ290byBFcnI7CkBAIC0yMTM2LDEzICsyMTc5LDE3IEBACiB9CiAKIHN0 YXRpYyBpbnQKLW9rQ2lwaGVyKEludHMgKmN2LCBpbnQgaXNwc2spCitva0NpcGhlcihJbnRzICpj diwgaW50IGlzcHNrLCBpbnQgY2FuZWMpCiB7CiAJaW50IGksIGM7CiAKIAlmb3IoaSA9IDA7IGkg PCBuZWxlbShjaXBoZXJBbGdzKTsgaSsrKSB7CiAJCWMgPSBjaXBoZXJBbGdzW2ldLnRsc2lkOwot CQlpZighY2lwaGVyQWxnc1tpXS5vayB8fCBpc0VDRFNBKGMpIHx8IGlzREhFKGMpIHx8IGlzUFNL KGMpICE9IGlzcHNrKQorCQlpZighY2lwaGVyQWxnc1tpXS5vayB8fCBpc0VDRFNBKGMpIHx8IGlz REhFKGMpKQorCQkJY29udGludWU7CisJCWlmKGlzUFNLKGMpICE9IGlzcHNrKQorCQkJY29udGlu dWU7CisJCWlmKGlzRUNESEUoYykgJiYgIWNhbmVjKQogCQkJY29udGludWU7CiAJCWlmKGxvb2t1 cGlkKGN2LCBjKSA+PSAwKQogCQkJcmV0dXJuIGM7CkBAIC0yMzEzLDExNCArMjM2MCw1NSBAQAog fQogCiBzdGF0aWMgdm9pZAotdGxzUG1kNSh1Y2hhciAqYnVmLCBpbnQgbmJ1ZiwgdWNoYXIgKmtl eSwgaW50IG5rZXksIHVjaGFyICpsYWJlbCwgaW50IG5sYWJlbCwgdWNoYXIgKnNlZWQwLCBpbnQg bnNlZWQwLCB1Y2hhciAqc2VlZDEsIGludCBuc2VlZDEpCi17Ci0JdWNoYXIgYWlbTUQ1ZGxlbl0s IHRtcFtNRDVkbGVuXTsKLQlpbnQgaSwgbjsKLQlNRDVzdGF0ZSAqczsKLQotCS8vIGdlbmVyYXRl IGExCi0JcyA9IGhtYWNfbWQ1KGxhYmVsLCBubGFiZWwsIGtleSwgbmtleSwgbmlsLCBuaWwpOwot CXMgPSBobWFjX21kNShzZWVkMCwgbnNlZWQwLCBrZXksIG5rZXksIG5pbCwgcyk7Ci0JaG1hY19t ZDUoc2VlZDEsIG5zZWVkMSwga2V5LCBua2V5LCBhaSwgcyk7Ci0KLQl3aGlsZShuYnVmID4gMCkg ewotCQlzID0gaG1hY19tZDUoYWksIE1ENWRsZW4sIGtleSwgbmtleSwgbmlsLCBuaWwpOwotCQlz ID0gaG1hY19tZDUobGFiZWwsIG5sYWJlbCwga2V5LCBua2V5LCBuaWwsIHMpOwotCQlzID0gaG1h Y19tZDUoc2VlZDAsIG5zZWVkMCwga2V5LCBua2V5LCBuaWwsIHMpOwotCQlobWFjX21kNShzZWVk MSwgbnNlZWQxLCBrZXksIG5rZXksIHRtcCwgcyk7Ci0JCW4gPSBNRDVkbGVuOwotCQlpZihuID4g bmJ1ZikKLQkJCW4gPSBuYnVmOwotCQlmb3IoaSA9IDA7IGkgPCBuOyBpKyspCi0JCQlidWZbaV0g Xj0gdG1wW2ldOwotCQlidWYgKz0gbjsKLQkJbmJ1ZiAtPSBuOwotCQlobWFjX21kNShhaSwgTUQ1 ZGxlbiwga2V5LCBua2V5LCB0bXAsIG5pbCk7Ci0JCW1lbW1vdmUoYWksIHRtcCwgTUQ1ZGxlbik7 Ci0JfQotfQotCi1zdGF0aWMgdm9pZAotdGxzUHNoYTEodWNoYXIgKmJ1ZiwgaW50IG5idWYsIHVj aGFyICprZXksIGludCBua2V5LCB1Y2hhciAqbGFiZWwsIGludCBubGFiZWwsIHVjaGFyICpzZWVk MCwgaW50IG5zZWVkMCwgdWNoYXIgKnNlZWQxLCBpbnQgbnNlZWQxKQotewotCXVjaGFyIGFpW1NI QTFkbGVuXSwgdG1wW1NIQTFkbGVuXTsKLQlpbnQgaSwgbjsKLQlTSEFzdGF0ZSAqczsKLQotCS8v IGdlbmVyYXRlIGExCi0JcyA9IGhtYWNfc2hhMShsYWJlbCwgbmxhYmVsLCBrZXksIG5rZXksIG5p bCwgbmlsKTsKLQlzID0gaG1hY19zaGExKHNlZWQwLCBuc2VlZDAsIGtleSwgbmtleSwgbmlsLCBz KTsKLQlobWFjX3NoYTEoc2VlZDEsIG5zZWVkMSwga2V5LCBua2V5LCBhaSwgcyk7Ci0KLQl3aGls ZShuYnVmID4gMCkgewotCQlzID0gaG1hY19zaGExKGFpLCBTSEExZGxlbiwga2V5LCBua2V5LCBu aWwsIG5pbCk7Ci0JCXMgPSBobWFjX3NoYTEobGFiZWwsIG5sYWJlbCwga2V5LCBua2V5LCBuaWws IHMpOwotCQlzID0gaG1hY19zaGExKHNlZWQwLCBuc2VlZDAsIGtleSwgbmtleSwgbmlsLCBzKTsK LQkJaG1hY19zaGExKHNlZWQxLCBuc2VlZDEsIGtleSwgbmtleSwgdG1wLCBzKTsKLQkJbiA9IFNI QTFkbGVuOwotCQlpZihuID4gbmJ1ZikKLQkJCW4gPSBuYnVmOwotCQlmb3IoaSA9IDA7IGkgPCBu OyBpKyspCi0JCQlidWZbaV0gXj0gdG1wW2ldOwotCQlidWYgKz0gbjsKLQkJbmJ1ZiAtPSBuOwot CQlobWFjX3NoYTEoYWksIFNIQTFkbGVuLCBrZXksIG5rZXksIHRtcCwgbmlsKTsKLQkJbWVtbW92 ZShhaSwgdG1wLCBTSEExZGxlbik7Ci0JfQotfQotCi1zdGF0aWMgdm9pZAotcF9zaGEyNTYodWNo YXIgKmJ1ZiwgaW50IG5idWYsIHVjaGFyICprZXksIGludCBua2V5LCB1Y2hhciAqbGFiZWwsIGlu dCBubGFiZWwsIHVjaGFyICpzZWVkLCBpbnQgbnNlZWQpCit0bHNQKHVjaGFyICpidWYsIGludCBu YnVmLCB1Y2hhciAqa2V5LCBpbnQgbmtleSwgdWNoYXIgKmxhYmVsLCBpbnQgbmxhYmVsLCB1Y2hh ciAqc2VlZCwgaW50IG5zZWVkLAorCURpZ2VzdFN0YXRlKiAoKngpKHVjaGFyKiwgdWxvbmcsIHVj aGFyKiwgdWxvbmcsIHVjaGFyKiwgRGlnZXN0U3RhdGUqKSwgaW50IHhsZW4pCiB7CiAJdWNoYXIg YWlbU0hBMl8yNTZkbGVuXSwgdG1wW1NIQTJfMjU2ZGxlbl07Ci0JU0hBc3RhdGUgKnM7CisJRGln ZXN0U3RhdGUgKnM7CiAJaW50IG47CiAKKwlhc3NlcnQoc2l6ZW9mKGFpKSA8PSB4bGVuICYmIHNp emVvZih0bXApIDw9IHhsZW4pOwogCS8vIGdlbmVyYXRlIGExCi0JcyA9IGhtYWNfc2hhMl8yNTYo bGFiZWwsIG5sYWJlbCwga2V5LCBua2V5LCBuaWwsIG5pbCk7Ci0JaG1hY19zaGEyXzI1NihzZWVk LCBuc2VlZCwga2V5LCBua2V5LCBhaSwgcyk7CisJcyA9IHgobGFiZWwsIG5sYWJlbCwga2V5LCBu a2V5LCBuaWwsIG5pbCk7CisJeChzZWVkLCBuc2VlZCwga2V5LCBua2V5LCBhaSwgcyk7CiAKIAl3 aGlsZShuYnVmID4gMCkgewotCQlzID0gaG1hY19zaGEyXzI1NihhaSwgU0hBMl8yNTZkbGVuLCBr ZXksIG5rZXksIG5pbCwgbmlsKTsKLQkJcyA9IGhtYWNfc2hhMl8yNTYobGFiZWwsIG5sYWJlbCwg a2V5LCBua2V5LCBuaWwsIHMpOwotCQlobWFjX3NoYTJfMjU2KHNlZWQsIG5zZWVkLCBrZXksIG5r ZXksIHRtcCwgcyk7Ci0JCW4gPSBTSEEyXzI1NmRsZW47CisJCXMgPSB4KGFpLCB4bGVuLCBrZXks IG5rZXksIG5pbCwgbmlsKTsKKwkJcyA9IHgobGFiZWwsIG5sYWJlbCwga2V5LCBua2V5LCBuaWws IHMpOworCQl4KHNlZWQsIG5zZWVkLCBrZXksIG5rZXksIHRtcCwgcyk7CisJCW4gPSB4bGVuOwog CQlpZihuID4gbmJ1ZikKIAkJCW4gPSBuYnVmOwogCQltZW1tb3ZlKGJ1ZiwgdG1wLCBuKTsKIAkJ YnVmICs9IG47CiAJCW5idWYgLT0gbjsKLQkJaG1hY19zaGEyXzI1NihhaSwgU0hBMl8yNTZkbGVu LCBrZXksIG5rZXksIHRtcCwgbmlsKTsKLQkJbWVtbW92ZShhaSwgdG1wLCBTSEEyXzI1NmRsZW4p OworCQl4KGFpLCB4bGVuLCBrZXksIG5rZXksIHRtcCwgbmlsKTsKKwkJbWVtbW92ZShhaSwgdG1w LCB4bGVuKTsKIAl9CiB9CiAKIC8vIGZpbGwgYnVmIHdpdGggbWQ1KGFyZ3MpXnNoYTEoYXJncykK IHN0YXRpYyB2b2lkCi10bHMxMFBSRih1Y2hhciAqYnVmLCBpbnQgbmJ1ZiwgdWNoYXIgKmtleSwg aW50IG5rZXksIGNoYXIgKmxhYmVsLCB1Y2hhciAqc2VlZDAsIGludCBuc2VlZDAsIHVjaGFyICpz ZWVkMSwgaW50IG5zZWVkMSkKK3RsczEwUFJGKHVjaGFyICpidWYsIGludCBuYnVmLCB1Y2hhciAq a2V5LCBpbnQgbmtleSwgY2hhciAqbGFiZWwsIHVjaGFyICpzZWVkLCBpbnQgbnNlZWQpCiB7CiAJ aW50IG5sYWJlbCA9IHN0cmxlbihsYWJlbCk7CiAJaW50IG4gPSAobmtleSArIDEpID4+IDE7CiAK LQltZW1zZXQoYnVmLCAwLCBuYnVmKTsKLQl0bHNQbWQ1KGJ1ZiwgbmJ1Ziwga2V5LCBuLCAodWNo YXIqKWxhYmVsLCBubGFiZWwsIHNlZWQwLCBuc2VlZDAsIHNlZWQxLCBuc2VlZDEpOwotCXRsc1Bz aGExKGJ1ZiwgbmJ1Ziwga2V5K25rZXktbiwgbiwgKHVjaGFyKilsYWJlbCwgbmxhYmVsLCBzZWVk MCwgbnNlZWQwLCBzZWVkMSwgbnNlZWQxKTsKKwl0bHNQKGJ1ZiwgbmJ1Ziwga2V5LCBuLCAodWNo YXIqKWxhYmVsLCBubGFiZWwsIHNlZWQsIG5zZWVkLAorCQlobWFjX21kNSwgTUQ1ZGxlbik7CisJ dGxzUChidWYsIG5idWYsIGtleStua2V5LW4sIG4sICh1Y2hhciopbGFiZWwsIG5sYWJlbCwgc2Vl ZCwgbnNlZWQsCisJCWhtYWNfc2hhMSwgU0hBMWRsZW4pOwogfQogCiBzdGF0aWMgdm9pZAotdGxz MTJQUkYodWNoYXIgKmJ1ZiwgaW50IG5idWYsIHVjaGFyICprZXksIGludCBua2V5LCBjaGFyICps YWJlbCwgdWNoYXIgKnNlZWQwLCBpbnQgbnNlZWQwLCB1Y2hhciAqc2VlZDEsIGludCBuc2VlZDEp Cit0bHMxMlBSRih1Y2hhciAqYnVmLCBpbnQgbmJ1ZiwgdWNoYXIgKmtleSwgaW50IG5rZXksIGNo YXIgKmxhYmVsLCB1Y2hhciAqc2VlZCwgaW50IG5zZWVkKQogewotCXVjaGFyIHNlZWRbMipSYW5k b21TaXplXTsKLQotCWFzc2VydChuc2VlZDArbnNlZWQxIDw9IHNpemVvZihzZWVkKSk7Ci0JbWVt bW92ZShzZWVkLCBzZWVkMCwgbnNlZWQwKTsKLQltZW1tb3ZlKHNlZWQrbnNlZWQwLCBzZWVkMSwg bnNlZWQxKTsKLQlwX3NoYTI1NihidWYsIG5idWYsIGtleSwgbmtleSwgKHVjaGFyKilsYWJlbCwg c3RybGVuKGxhYmVsKSwgc2VlZCwgbnNlZWQwK25zZWVkMSk7CisJdGxzUChidWYsIG5idWYsIGtl eSwgbmtleSwgKHVjaGFyKilsYWJlbCwgc3RybGVuKGxhYmVsKSwgc2VlZCwgbnNlZWQsCisJCWht YWNfc2hhMl8yNTYsIFNIQTJfMjU2ZGxlbik7CiB9CiAKIHN0YXRpYyB2b2lkCi1zc2xQUkYodWNo YXIgKmJ1ZiwgaW50IG5idWYsIHVjaGFyICprZXksIGludCBua2V5LCBjaGFyICpsYWJlbCwgdWNo YXIgKnNlZWQwLCBpbnQgbnNlZWQwLCB1Y2hhciAqc2VlZDEsIGludCBuc2VlZDEpCitzc2xQUkYo dWNoYXIgKmJ1ZiwgaW50IG5idWYsIHVjaGFyICprZXksIGludCBua2V5LCBjaGFyICpsYWJlbCwg dWNoYXIgKnNlZWQsIGludCBuc2VlZCkKIHsKIAl1Y2hhciBzaGExZGlnW1NIQTFkbGVuXSwgbWQ1 ZGlnW01ENWRsZW5dLCB0bXBbMjZdOwogCURpZ2VzdFN0YXRlICpzOwpAQCAtMjQzNSw4ICsyNDIz LDcgQEAKIAkJCXRtcFtpXSA9ICdBJyAtIDEgKyBsZW47CiAJCXMgPSBzaGExKHRtcCwgbGVuLCBu aWwsIG5pbCk7CiAJCXMgPSBzaGExKGtleSwgbmtleSwgbmlsLCBzKTsKLQkJcyA9IHNoYTEoc2Vl ZDAsIG5zZWVkMCwgbmlsLCBzKTsKLQkJc2hhMShzZWVkMSwgbnNlZWQxLCBzaGExZGlnLCBzKTsK KwkJc2hhMShzZWVkLCBuc2VlZCwgc2hhMWRpZywgcyk7CiAJCXMgPSBtZDUoa2V5LCBua2V5LCBu aWwsIG5pbCk7CiAJCW1kNShzaGExZGlnLCBTSEExZGxlbiwgbWQ1ZGlnLCBzKTsKIAkJbiA9IE1E NWRsZW47CkBAIC0yNDg2LDE4ICsyNDczLDE4IEBACiBzdGF0aWMgdm9pZAogdGxzMTBTZXRGaW5p c2hlZChUbHNTZWMgKnNlYywgSGFuZHNoYWtlSGFzaCBoc2gsIHVjaGFyICpmaW5pc2hlZCwgaW50 IGlzY2xpZW50KQogewotCXVjaGFyIGgwW01ENWRsZW5dLCBoMVtTSEExZGxlbl07CisJdWNoYXIg aFtNRDVkbGVuK1NIQTFkbGVuXTsKIAljaGFyICpsYWJlbDsKIAogCS8vIGdldCBjdXJyZW50IGhh c2ggdmFsdWUsIGJ1dCBhbGxvdyBmdXJ0aGVyIG1lc3NhZ2VzIHRvIGJlIGhhc2hlZCBpbgotCW1k NShuaWwsIDAsIGgwLCAmaHNoLm1kNSk7Ci0Jc2hhMShuaWwsIDAsIGgxLCAmaHNoLnNoYTEpOwor CW1kNShuaWwsIDAsIGgsICZoc2gubWQ1KTsKKwlzaGExKG5pbCwgMCwgaCtNRDVkbGVuLCAmaHNo LnNoYTEpOwogCiAJaWYoaXNjbGllbnQpCiAJCWxhYmVsID0gImNsaWVudCBmaW5pc2hlZCI7CiAJ ZWxzZQogCQlsYWJlbCA9ICJzZXJ2ZXIgZmluaXNoZWQiOwotCXRsczEwUFJGKGZpbmlzaGVkLCBU TFNGaW5pc2hlZExlbiwgc2VjLT5zZWMsIE1hc3RlclNlY3JldFNpemUsIGxhYmVsLCBoMCwgTUQ1 ZGxlbiwgaDEsIFNIQTFkbGVuKTsKKwl0bHMxMFBSRihmaW5pc2hlZCwgVExTRmluaXNoZWRMZW4s IHNlYy0+c2VjLCBNYXN0ZXJTZWNyZXRTaXplLCBsYWJlbCwgaCwgc2l6ZW9mKGgpKTsKIH0KIAog c3RhdGljIHZvaWQKQEAgLTI1MTMsNyArMjUwMCw3IEBACiAJCWxhYmVsID0gImNsaWVudCBmaW5p c2hlZCI7CiAJZWxzZQogCQlsYWJlbCA9ICJzZXJ2ZXIgZmluaXNoZWQiOwotCXBfc2hhMjU2KGZp bmlzaGVkLCBUTFNGaW5pc2hlZExlbiwgc2VjLT5zZWMsIE1hc3RlclNlY3JldFNpemUsICh1Y2hh ciopbGFiZWwsIHN0cmxlbihsYWJlbCksIHNlZWQsIFNIQTJfMjU2ZGxlbik7CisJdGxzMTJQUkYo ZmluaXNoZWQsIFRMU0ZpbmlzaGVkTGVuLCBzZWMtPnNlYywgTWFzdGVyU2VjcmV0U2l6ZSwgbGFi ZWwsIHNlZWQsIFNIQTJfMjU2ZGxlbik7CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC0yNTIzLDggKzI1 MTAsOSBAQAogCXNlYy0+Y2xpZW50VmVycyA9IGN2ZXJzOwogCW1lbW1vdmUoc2VjLT5jcmFuZG9t LCBjcmFuZG9tLCBSYW5kb21TaXplKTsKIAotCXB1dDMyKHNlYy0+c3JhbmRvbSwgdGltZShuaWwp KTsKLQlnZW5yYW5kb20oc2VjLT5zcmFuZG9tKzQsIFJhbmRvbVNpemUtNCk7CisJLy8gcHV0dGlu ZyB0aW1lKCkncyBvdXRwdXQgdG8gdGhlIGZpcnN0IDQgYnl0ZXMgaXMgbm8KKwkvLyBsb25nZXIg cmVjb21tZW5kZWQgYW5kIGlzIG5vdCB1c2VmdWwKKwlnZW5yYW5kb20oc2VjLT5zcmFuZG9tLCBS YW5kb21TaXplKTsKIH0KIAogc3RhdGljIGludApAQCAtMjU0OSw2MSArMjUzNyw4OCBAQAogfQog CiBzdGF0aWMgQnl0ZXMqCi10bHNTZWNFQ0RIRXMxKFRsc1NlYyAqc2VjLCBOYW1lZGN1cnZlICpu YykKK3Rsc1NlY0VDREhFczEoVGxzU2VjICpzZWMpCiB7CiAJRUNkb21haW4gKmRvbSA9ICZzZWMt PmVjLmRvbTsKIAlFQ3ByaXYgKlEgPSAmc2VjLT5lYy5ROwogCUJ5dGVzICpwYXI7CiAJaW50IG47 CiAKLQllY2RvbWluaXQoZG9tLCBuYy0+aW5pdCk7Ci0JbWVtc2V0KFEsIDAsIHNpemVvZigqUSkp OwotCVEtPnggPSBtcG5ldygwKTsKLQlRLT55ID0gbXBuZXcoMCk7Ci0JUS0+ZCA9IG1wbmV3KDAp OwotCWVjZ2VuKGRvbSwgUSk7Ci0JbiA9IDEgKyAyKigobXBzaWduaWYoZG9tLT5wKSs3KS84KTsK LQlwYXIgPSBuZXdieXRlcygxKzIrMStuKTsKLQlwYXItPmRhdGFbMF0gPSAzOwotCXB1dDE2KHBh ci0+ZGF0YSsxLCBuYy0+dGxzaWQpOwotCW4gPSBlY2VuY29kZXB1Yihkb20sIFEsIHBhci0+ZGF0 YSs0LCBwYXItPmxlbi00KTsKLQlwYXItPmRhdGFbM10gPSBuOwotCXBhci0+bGVuID0gMSsyKzEr bjsKLQorCWlmKHNlYy0+bmMgPT0gbmlsKQorCQlyZXR1cm4gbmlsOworCWlmKHNlYy0+bmMtPnRs c2lkID09IFgyNTUxOSl7CisJCXBhciA9IG5ld2J5dGVzKDErMisxKzMyKTsKKwkJcGFyLT5kYXRh WzBdID0gMzsKKwkJcHV0MTYocGFyLT5kYXRhKzEsIFgyNTUxOSk7CisJCXBhci0+ZGF0YVszXSA9 IDMyOworCQljdXJ2ZTI1NTE5X2RoX25ldyhzZWMtPlgsIHBhci0+ZGF0YSs0KTsKKwl9ZWxzZXsK KwkJZWNkb21pbml0KGRvbSwgc2VjLT5uYy0+aW5pdCk7CisJCW1lbXNldChRLCAwLCBzaXplb2Yo KlEpKTsKKwkJUS0+eCA9IG1wbmV3KDApOworCQlRLT55ID0gbXBuZXcoMCk7CisJCVEtPmQgPSBt cG5ldygwKTsKKwkJZWNnZW4oZG9tLCBRKTsKKwkJbiA9IDEgKyAyKigobXBzaWduaWYoZG9tLT5w KSs3KS84KTsKKwkJcGFyID0gbmV3Ynl0ZXMoMSsyKzErbik7CisJCXBhci0+ZGF0YVswXSA9IDM7 CisJCXB1dDE2KHBhci0+ZGF0YSsxLCBzZWMtPm5jLT50bHNpZCk7CisJCW4gPSBlY2VuY29kZXB1 Yihkb20sIFEsIHBhci0+ZGF0YSs0LCBwYXItPmxlbi00KTsKKwkJcGFyLT5kYXRhWzNdID0gbjsK KwkJcGFyLT5sZW4gPSAxKzIrMStuOworCX0KIAlyZXR1cm4gcGFyOwogfQogCiBzdGF0aWMgaW50 CiB0bHNTZWNFQ0RIRXMyKFRsc1NlYyAqc2VjLCBCeXRlcyAqWWMpCiB7CisJc3RhdGljIGNoYXIg emVyb1szMl0gPSB7MH07CiAJRUNkb21haW4gKmRvbSA9ICZzZWMtPmVjLmRvbTsKIAlFQ3ByaXYg KlEgPSAmc2VjLT5lYy5ROwogCUVDcG9pbnQgSzsKIAlFQ3B1YiAqWTsKKwlCeXRlcyAqWjsKIAog CWlmKFljID09IG5pbCl7CiAJCXdlcnJzdHIoIm5vIHB1YmxpYyBrZXkiKTsKIAkJcmV0dXJuIC0x OwogCX0KIAotCWlmKChZID0gZWNkZWNvZGVwdWIoZG9tLCBZYy0+ZGF0YSwgWWMtPmxlbikpID09 IG5pbCl7Ci0JCXdlcnJzdHIoImJhZCBwdWJsaWMga2V5Iik7Ci0JCXJldHVybiAtMTsKLQl9Ci0K LQltZW1zZXQoJkssIDAsIHNpemVvZihLKSk7Ci0JSy54ID0gbXBuZXcoMCk7Ci0JSy55ID0gbXBu ZXcoMCk7CisJaWYoc2VjLT5uYy0+dGxzaWQgPT0gWDI1NTE5KXsKKwkJaWYoWWMtPmxlbiAhPSAz Mil7CisJCQl3ZXJyc3RyKCJiYWQgcHVibGljIGtleSIpOworCQkJcmV0dXJuIC0xOworCQl9CisJ CVogPSBuZXdieXRlcygzMik7CisJCWN1cnZlMjU1MTlfZGhfZmluaXNoKHNlYy0+WCwgWWMtPmRh dGEsIFotPmRhdGEpOworCQkvLyByZmMgd2FudHMgdXMgdG8gdGVybWluYXRlIHRoZSBjb25uZWN0 aW9uIGlmCisJCS8vIHNoYXJlZCBzZWNyZXQgPT0gYWxsIHplcm9lcy4KKwkJaWYodHNtZW1jbXAo Wi0+ZGF0YSwgemVybywgWi0+bGVuKSA9PSAwKXsKKwkJCXdlcnJzdHIoInVubHVja3kgc2hhcmVk IGtleSIpOworCQkJZnJlZWJ5dGVzKFopOworCQkJcmV0dXJuIC0xOworCQl9CisJCXNldE1hc3Rl clNlY3JldChzZWMsIFopOworCX1lbHNleworCQlpZigoWSA9IGVjZGVjb2RlcHViKGRvbSwgWWMt PmRhdGEsIFljLT5sZW4pKSA9PSBuaWwpeworCQkJd2VycnN0cigiYmFkIHB1YmxpYyBrZXkiKTsK KwkJCXJldHVybiAtMTsKKwkJfQorCisJCW1lbXNldCgmSywgMCwgc2l6ZW9mKEspKTsKKwkJSy54 ID0gbXBuZXcoMCk7CisJCUsueSA9IG1wbmV3KDApOwogCi0JZWNtdWwoZG9tLCBZLCBRLT5kLCAm Syk7CisJCWVjbXVsKGRvbSwgWSwgUS0+ZCwgJkspOwogCi0Jc2V0TWFzdGVyU2VjcmV0KHNlYywg bXB0b2J5dGVzKEsueCwgKG1wc2lnbmlmKGRvbS0+cCkrNykvOCkpOworCQlzZXRNYXN0ZXJTZWNy ZXQoc2VjLCBtcHRvYnl0ZXMoSy54LCAobXBzaWduaWYoZG9tLT5wKSs3KS84KSk7CiAKLQltcGZy ZWUoSy54KTsKLQltcGZyZWUoSy55KTsKLQotCWVjcHViZnJlZShZKTsKKwkJbXBmcmVlKEsueCk7 CisJCW1wZnJlZShLLnkpOwogCisJCWVjcHViZnJlZShZKTsKKwl9CiAJcmV0dXJuIDA7CiB9CiAK QEAgLTI2MTIsOCArMjYyNyw4IEBACiB7CiAJbWVtc2V0KHNlYywgMCwgc2l6ZW9mKCpzZWMpKTsK IAlzZWMtPmNsaWVudFZlcnMgPSBjdmVyczsKLQlwdXQzMihzZWMtPmNyYW5kb20sIHRpbWUobmls KSk7Ci0JZ2VucmFuZG9tKHNlYy0+Y3JhbmRvbSs0LCBSYW5kb21TaXplLTQpOworCS8vIHNlZSB0 aGUgY29tbWVudCBvbiB0bHNTZWNJbml0cworCWdlbnJhbmRvbShzZWMtPmNyYW5kb20sIFJhbmRv bVNpemUpOwogfQogCiBzdGF0aWMgQnl0ZXMqCkBAIC0yNjcxLDEzICsyNjg2LDE1IEBACiBzdGF0 aWMgaW50CiBzZXRTZWNyZXRzKFRsc0Nvbm5lY3Rpb24gKmMsIGludCBpc2NsaWVudCkKIHsKLQl1 Y2hhciBrZFtNYXhLZXlEYXRhXTsKKwl1Y2hhciBrZFtNYXhLZXlEYXRhXSwgc2VlZFsyKlJhbmRv bVNpemVdOwogCWNoYXIgKnNlY3JldHM7CiAJaW50IHJ2OwogCiAJYXNzZXJ0KGMtPm5zZWNyZXQg PD0gc2l6ZW9mKGtkKSk7CiAJc2VjcmV0cyA9IGVtYWxsb2MoMipjLT5uc2VjcmV0KTsKIAorCW1l bW1vdmUoc2VlZCwgYy0+c2VjLT5zcmFuZG9tLCBSYW5kb21TaXplKTsKKwltZW1tb3ZlKHNlZWQr UmFuZG9tU2l6ZSwgYy0+c2VjLT5jcmFuZG9tLCBSYW5kb21TaXplKTsKIAkvKgogCSAqIGdlbmVy YXRlIHNlY3JldCBrZXlzIGZyb20gdGhlIG1hc3RlciBzZWNyZXQuCiAJICoKQEAgLTI2ODYsNyAr MjcwMyw3IEBACiAJICogYnV0IGl0J3MgYWxsIGdlbmVyYXRlZCB1c2luZyB0aGUgc2FtZSBmdW5j dGlvbi4KIAkgKi8KIAkoKmMtPnNlYy0+cHJmKShrZCwgYy0+bnNlY3JldCwgYy0+c2VjLT5zZWMs IE1hc3RlclNlY3JldFNpemUsICJrZXkgZXhwYW5zaW9uIiwKLQkJCWMtPnNlYy0+c3JhbmRvbSwg UmFuZG9tU2l6ZSwgYy0+c2VjLT5jcmFuZG9tLCBSYW5kb21TaXplKTsKKwkJCXNlZWQsIHNpemVv ZihzZWVkKSk7CiAKIAllbmM2NChzZWNyZXRzLCAyKmMtPm5zZWNyZXQsIGtkLCBjLT5uc2VjcmV0 KTsKIAltZW1zZXQoa2QsIDAsIGMtPm5zZWNyZXQpOwpAQCAtMjcwNSw2ICsyNzIyLDggQEAKIHN0 YXRpYyB2b2lkCiBzZXRNYXN0ZXJTZWNyZXQoVGxzU2VjICpzZWMsIEJ5dGVzICpwbSkKIHsKKwl1 Y2hhciBzZWVkWzIqUmFuZG9tU2l6ZV07CisKIAlpZihzZWMtPnBza2xlbiA+IDApewogCQlCeXRl cyAqb3BtID0gcG07CiAJCXVjaGFyICpwOwpAQCAtMjcyMSw4ICsyNzQwLDEwIEBACiAJCWZyZWVi eXRlcyhvcG0pOwogCX0KIAorCW1lbW1vdmUoc2VlZCwgc2VjLT5jcmFuZG9tLCBSYW5kb21TaXpl KTsKKwltZW1tb3ZlKHNlZWQrUmFuZG9tU2l6ZSwgc2VjLT5zcmFuZG9tLCBSYW5kb21TaXplKTsK IAkoKnNlYy0+cHJmKShzZWMtPnNlYywgTWFzdGVyU2VjcmV0U2l6ZSwgcG0tPmRhdGEsIHBtLT5s ZW4sICJtYXN0ZXIgc2VjcmV0IiwKLQkJCXNlYy0+Y3JhbmRvbSwgUmFuZG9tU2l6ZSwgc2VjLT5z cmFuZG9tLCBSYW5kb21TaXplKTsKKwkJCXNlZWQsIHNpemVvZihzZWVkKSk7CiAKIAltZW1zZXQo cG0tPmRhdGEsIDAsIHBtLT5sZW4pOwkKIAlmcmVlYnl0ZXMocG0pOwo= --0000000000009a5a8005c50f1f79--