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 5963 invoked from network); 24 Oct 2021 09:07:25 -0000 Received: from 4ess.inri.net (216.126.196.42) by inbox.vuxu.org with ESMTPUTF8; 24 Oct 2021 09:07:25 -0000 Received: from mail-yb1-f173.google.com ([209.85.219.173]) by 4ess; Sat Oct 23 07:18:26 -0400 2021 Received: by mail-yb1-f173.google.com with SMTP id i84so12767024ybc.12 for <9front@9front.org>; Sat, 23 Oct 2021 04:18:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to; bh=uwrTYwchG1k+XJCfCPaPShh5tNK43dX2OOAIsAnNR+M=; b=QB3E1H6kr/cXCarLKnf8l2wMopvKq/AA0ZbUyi8jw1qRiIeSXBQCw2Y1cOm/NH2/LX mEmrhtkD1/Fa/XMI/ZSxUUWIawfim+ocmE+O9iNHEZwr+ec7B1cvVCByBGz+fVSH0e50 NZHqVz01j1ndUm3YQx4BgaeWX+a1TO/ZvadhhNhqL54lYTb3KroA+m1CrLIr/TFfSeJS yfyoDbetF0TSUvYGDpgL/prGb0K7rDv5OdvQ/IetL1qq4R2JOHC3r+Nw3p+3FztjUi/7 4t6E50z4UvFrQwV6XJ/z6gdzdlQoFornXatKq0+NBc+mBPV87ubnU7UUCPV+Mttnl5ZU oTVQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to; bh=uwrTYwchG1k+XJCfCPaPShh5tNK43dX2OOAIsAnNR+M=; b=jy3VbYn4R/FZludTe+HQpDbwojX4EN7B1sEhO8UbCMql9e6Hspt2byeNs1boYghBNK gL9lHWq7Q1Xbl3J7kmL9QU4dlGw0JtWfGJub6oDfTVS2MYfRJi+dJ/YDfbdGHxHVBfKo APDEJdE1O8n4CIR2KvRGyDJH1JNhvJ2sFnV758NW2mjDsLy9+7Viprco4mGvWq9x3p4k e3AkWucZwfYnTqEf1BG6wh1tQu159UWkHOGd+pnCUWzFGApWW44pDRDi34bQ+Lse2b6b HIMzeuBqM5cH+70hAaRvC6lXKJyYAdOjtUxRj4av1V54vJE//mUoAfrD6MJFzXGOEeJf FPXg== X-Gm-Message-State: AOAM5305kOdmHyplIKn7CD0ZyPdVMeYkPQHv9nyG7KdJY16PVA5wQNeW cRBlDcHq2wGeVsqRUJuPJwtXqRmO1G/AbITvb8PfO18YTzg= X-Google-Smtp-Source: ABdhPJzf4K3az7g+m0d1JZ3PBEIbs5XwNjRK4rri089hVJKXVf2FjyCDG2sEGxvrTnReN56R0D+WIdLjIDkPwf3DFeY= X-Received: by 2002:a25:107:: with SMTP id 7mr2256437ybb.103.1634987896246; Sat, 23 Oct 2021 04:18:16 -0700 (PDT) MIME-Version: 1.0 References: <7648813BD190663018940ABF1A7326C8@eigenstate.org> In-Reply-To: From: kemal Date: Sat, 23 Oct 2021 14:18:01 +0300 Message-ID: To: 9front@9front.org Content-Type: multipart/mixed; boundary="000000000000c4c41105cf0348e0" List-ID: <9front.9front.org> List-Help: X-Glyph: ➈ X-Bullshit: RESTful metadata Subject: Re: [9front] intent to delete: devssl, cpu, oexportfs, import Reply-To: 9front@9front.org Precedence: bulk --000000000000c4c41105cf0348e0 Content-Type: text/plain; charset="UTF-8" > i didn't test the diff throughly, so it might be buggy. i hope not. found one bug. - else if(isDHE(c->cipher) || c->version != SSL3Version) + else if(isDHE(c->cipher)) put16(p, n), p += 2; and - else if(isDHE(c->cipher) || c->version != SSL3Version) + else if(isDHE(c->cipher)) nn = get16(p), p += 2, n -= 2; else nn = n; it shouldn't check if we have a DHE cipher, we're already on SSL3+! new diff attached. --000000000000c4c41105cf0348e0 Content-Type: text/plain; charset="US-ASCII"; name="diff.txt" Content-Disposition: attachment; filename="diff.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kv3pkgm60 ZGlmZiBlNTRiNmM2Y2JkNGQ4MmQ3MGRkYjQ5MzJhZWFmYjBiMDI4Y2Q3MWY1IHVuY29tbWl0dGVk Ci0tLSBhLy9zeXMvbWFuLzIvcHVzaHRscworKysgYi8vc3lzL21hbi8yL3B1c2h0bHMKQEAgLTEs NiArMSw2IEBACiAuVEggUFVTSFRMUyAyCiAuU0ggTkFNRQotcHVzaHRscywgdGxzQ2xpZW50LCB0 bHNTZXJ2ZXIsIGluaXRUaHVtYnByaW50cywgZnJlZVRodW1icHJpbnRzLCBva1RodW1icHJpbnQs IG9rQ2VydGlmaWNhdGUsIHJlYWRjZXJ0LCByZWFkY2VydGNoYWluIFwtIGF0dGFjaCBUTFMxIG9y IFNTTDMgZW5jcnlwdGlvbiB0byBhIGNvbW11bmljYXRpb24gY2hhbm5lbAorcHVzaHRscywgdGxz Q2xpZW50LCB0bHNTZXJ2ZXIsIGluaXRUaHVtYnByaW50cywgZnJlZVRodW1icHJpbnRzLCBva1Ro dW1icHJpbnQsIG9rQ2VydGlmaWNhdGUsIHJlYWRjZXJ0LCByZWFkY2VydGNoYWluIFwtIGF0dGFj aCBUTFMgZW5jcnlwdGlvbiB0byBhIGNvbW11bmljYXRpb24gY2hhbm5lbAogLlNIIFNZTk9QU0lT CiAuQiAjaW5jbHVkZSA8dS5oPgogLmJyCkBAIC00NSw4ICs0NSw2IEBACiBhbmQgYSBoYW5kc2hh a2UgcHJvdG9jb2wsCiBkb2luZyBpbml0aWFsIGF1dGhlbnRpY2F0aW9uIGFuZCBzZWNyZXQgY3Jl YXRpb24gYXQKIHVzZXIgbGV2ZWwgYW5kIHRoZW4gc3RhcnRpbmcgYSBkYXRhIGNoYW5uZWwgaW4g dGhlIHJlY29yZCBwcm90b2NvbC4KLVRMUyBpcyBuZWFybHkgdGhlIHNhbWUgYXMgU1NMIDMuMCwg YW5kIHRoZSBzb2Z0d2FyZSBzaG91bGQgaW50ZXJvcGVyYXRlCi13aXRoIGltcGxlbWVudGF0aW9u cyBvZiBlaXRoZXIgc3RhbmRhcmQuCiAuUFAKIFRvIHVzZSBqdXN0IHRoZSByZWNvcmQgbGF5ZXIs IGFzIGRlc2NyaWJlZCBpbgogLklSIHRscyAoMyksCi0tLSBhLy9zeXMvbWFuLzMvdGxzCisrKyBi Ly9zeXMvbWFuLzMvdGxzCkBAIC0xLDYgKzEsNiBAQAogLlRIIFRMUyAzIAogLlNIIE5BTUUKLXRs cyBcLSBUTFMgYW5kIFNTTDMgcmVjb3JkIGxheWVyCit0bHMgXC0gVExTIHJlY29yZCBsYXllcgog LlNIIFNZTk9QU0lTCiAubmYKIC5CIGJpbmQgLWEgI2EgL25ldApAQCAtMTYsMTAgKzE2LDkgQEAK IC5CSSAvbmV0L3Rscy8gbiAvc3RhdHVzCiAuZmkKIC5TSCBERVNDUklQVElPTgotVGhlIFRMUyBk ZXZpY2UgaW1wbGVtZW50cyB0aGUgcmVjb3JkIGxheWVyIHByb3RvY29scwotb2YgVHJhbnNwb3J0 IExheWVyIFNlY3VyaXR5IHZlcnNpb24gMS4wLTEuMiBhbmQgU2VjdXJlIFNvY2tldHMgTGF5ZXIg dmVyc2lvbiAzLjAuCi1JdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIGhhbmRzaGFrZSBwcm90b2Nv bHMsIHdoaWNoIGFyZSByZXNwb25zaWJsZSBmb3IKLW11dHVhbCBhdXRoZW50aWNhdGlvbiBhbmQg a2V5IGV4Y2hhbmdlLgorVGhlIFRMUyBkZXZpY2UgaW1wbGVtZW50cyB0aGUgcmVjb3JkIGxheWVy IHByb3RvY29scyBvZiBUcmFuc3BvcnQgTGF5ZXIgU2VjdXJpdHkKK3ZlcnNpb24gMS4wLTEuMi4g SXQgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBoYW5kc2hha2UgcHJvdG9jb2xzLCB3aGljaCBhcmUg cmVzcG9uc2libGUKK2ZvciBtdXR1YWwgYXV0aGVudGljYXRpb24gYW5kIGtleSBleGNoYW5nZS4K IFRoZQogLkkgdGxzCiBkZXZpY2UgY2FuIGJlIHRob3VnaHQgb2YgYXMgZmlsdGVycyBwcm92aWRp bmcgb3B0aW9uYWwgZW5jcnlwdGlvbiBhbmQgYW50aS10YW1wZXJpbmcuCkBAIC01MywxMyArNTIs MTEgQEAKIC5JIHZlcnMKIGZvcm1hdCByZWNvcmRzLCBidXQgaW5jb21pbmcgbWVzc2FnZXMgb2Yg ZWl0aGVyIHZlcnNpb24gYXJlIGFjY2VwdGVkLgogVmFsaWQgdmVyc2lvbnMgYXJlCi0uQiAweDMw MAotZm9yIFNTTHYzLjAgYW5kCiAuQlIgMHgzMDEgLAogLkIgMHgzMDIKIGFuZAogLkIgMHgzMDMK LWZvciBUTFN2MS4wICh3aGljaCBjb3VsZCBiZSBrbm93biBhcyBTU0x2My4wMSksIFRMU3YxLjEg YW5kIFRMU3YxLjIuCitmb3IgVExTdjEuMCwgVExTdjEuMSBhbmQgVExTdjEuMi4KIFRoaXMgY29t bWFuZCBtdXN0IGJlIGlzc3VlZCBiZWZvcmUgYW55IG90aGVyIGNvbW1hbmQKIGFuZCBiZWZvcmUg cmVhZGluZyBvciB3cml0aW5nIGFueSBtZXNzYWdlczsKIGl0IG1heSBvbmx5IGJlIGV4ZWN1dGVk IG9uY2UuCkBAIC0xMjAsMTAgKzExNyw5IEBACiAuVFAKIC5CSSBhbGVydCBcIGFsZXJ0bm8KIFNl bmQgYW4gYWxlcnQgbWVzc2FnZS4KLS5JIEFsZXJ0bm8KLW1heSBiZSBhIHZhbGlkIGFsZXJ0IGNv ZGUgZm9yIGVpdGhlciBTU0x2My4wIG9yIFRMUywKLWFuZCBpcyBtYXBwZWQgdG8gYW4gYXBwcm9w cmlhdGUgY29kZSBmb3IgdGhlIHByb3RvY29sIGluIHVzZS4KLUlmIGl0IGlzIGEgZmF0YWwgYWxl cnQsIHRoZSBmaWx0ZXIgaXMgc2V0IGludG8gYW4gZXJyb3Igc3RhdGUuCitJZgorLkkgYWxlcnRu bworaXMgYSBmYXRhbCBhbGVydCwgdGhlIGZpbHRlciBpcyBzZXQgaW50byBhbiBlcnJvciBzdGF0 ZS4KIC5QUAogQXBwbGljYXRpb24gbWVzc2FnZXMgYW5kIGhhbmRzaGFrZSBtZXNzYWdlcyBhcmUg Y29tbXVuaWNhdGVkIHVzaW5nCiAuSSBkYXRhCi0tLSBhLy9zeXMvc3JjLzkvcG9ydC9kZXZ0bHMu YworKysgYi8vc3lzL3NyYy85L3BvcnQvZGV2dGxzLmMKQEAgLTEsNSArMSw1IEBACiAvKgotICog IGRldnRscyAtIHJlY29yZCBsYXllciBmb3IgdHJhbnNwb3J0IGxheWVyIHNlY3VyaXR5IDEuMiBh bmQgc2VjdXJlIHNvY2tldHMgbGF5ZXIgMy4wCisgKiAgZGV2dGxzIC0gcmVjb3JkIGxheWVyIGZv ciB0cmFuc3BvcnQgbGF5ZXIgc2VjdXJpdHkgMS4wLTEuMgogICovCiAjaW5jbHVkZQkidS5oIgog I2luY2x1ZGUJIi4uL3BvcnQvbGliLmgiCkBAIC0yNCwxMSArMjQsMTAgQEAKIAlNYXhNYWNMZW4J PSBTSEEyXzI1NmRsZW4sCiAKIAkvKiBwcm90b2NvbCB2ZXJzaW9ucyB3ZSBjYW4gYWNjZXB0ICov Ci0JU1NMM1ZlcnNpb24JPSAweDAzMDAsCiAJVExTMTBWZXJzaW9uCT0gMHgwMzAxLAogCVRMUzEx VmVyc2lvbgk9IDB4MDMwMiwKIAlUTFMxMlZlcnNpb24JPSAweDAzMDMsCi0JTWluUHJvdG9WZXJz aW9uCT0gMHgwMzAwLAkvKiBsaW1pdHMgb24gdmVyc2lvbiB3ZSBhY2NlcHQgKi8KKwlNaW5Qcm90 b1ZlcnNpb24JPSAweDAzMDEsCS8qIGxpbWl0cyBvbiB2ZXJzaW9uIHdlIGFjY2VwdCAqLwogCU1h eFByb3RvVmVyc2lvbgk9IDB4MDNmZiwKIAogCS8qIGNvbm5lY3Rpb24gc3RhdGVzICovCkBAIC00 Niw5ICs0NSw2IEBACiAJUkhhbmRzaGFrZSwKIAlSQXBwbGljYXRpb24sCiAKLQlTU0wyQ2xpZW50 SGVsbG8gPSAxLAotCUhTU0wyQ2xpZW50SGVsbG8gPSA5LCAgLyogbG9jYWwgY29udmVudGlvbjsg IHNlZSB0bHNoYW5kLmMgKi8KLQogCS8qIGFsZXJ0cyAqLwogCUVDbG9zZU5vdGlmeSAJCQk9IDAs CiAJRVVuZXhwZWN0ZWRNZXNzYWdlIAk9IDEwLApAQCAtNTcsNyArNTMsNiBAQAogCUVSZWNvcmRP dmVyZmxvdyAJCT0gMjIsCiAJRURlY29tcHJlc3Npb25GYWlsdXJlIAk9IDMwLAogCUVIYW5kc2hh a2VGYWlsdXJlIAkJPSA0MCwKLQlFTm9DZXJ0aWZpY2F0ZSAJCQk9IDQxLAogCUVCYWRDZXJ0aWZp Y2F0ZSAJCT0gNDIsCiAJRVVuc3VwcG9ydGVkQ2VydGlmaWNhdGUgCT0gNDMsCiAJRUNlcnRpZmlj YXRlUmV2b2tlZCAJCT0gNDQsCkBAIC04OSw3ICs4NCw2IEBACiAKIAlpbnQJCSgqZW5jKShTZWNy ZXQqLCB1Y2hhciosIGludCk7CiAJaW50CQkoKmRlYykoU2VjcmV0KiwgdWNoYXIqLCBpbnQpOwot CWludAkJKCp1bnBhZCkodWNoYXIqLCBpbnQsIGludCk7CiAJRGlnZXN0U3RhdGUqCSgqbWFjKSh1 Y2hhciosIHVsb25nLCB1Y2hhciosIHVsb25nLCB1Y2hhciosIERpZ2VzdFN0YXRlKik7CiAKIAlp bnQJCWJsb2NrOwkJLyogZW5jcnlwdGlvbiBibG9jayBsZW4sIDAgaWYgbm9uZSAqLwpAQCAtMTI1 LDEyICsxMTksNiBAQAogCWludAkJc3RhdGU7CiAJaW50CQlkZWJ1ZzsKIAotCS8qCi0JICogZnVu Y3Rpb24gdG8gZ2VucmF0ZSBhdXRoZW50aWNhdGVkIGRhdGEgYmxvYiBmb3IgZGlmZmVyZW50Ci0J ICogcHJvdG9jb2wgdmVyc2lvbnMKLQkgKi8KLQlpbnQJCSgqcGFja0FBRCkodTY0aW50LCB1Y2hh ciosIHVjaGFyKik7Ci0KIAkvKiBpbnB1dCBzaWRlIC0tIHByb3RlY3RlZCBieSBpbi5pbyAqLwog CU9uZVdheQkJaW47CiAJQmxvY2sJCSpwcm9jZXNzZWQ7CS8qIG5leHQgYnVuY2ggb2YgYXBwbGlj YXRpb24gZGF0YSAqLwpAQCAtMTUzLDM3ICsxNDEsMzQgQEAKIAogc3RydWN0IFRsc0VycnN7CiAJ aW50CWVycjsKLQlpbnQJc3NsZXJyOwotCWludAl0bHNlcnI7CiAJaW50CWZhdGFsOwogCWNoYXIJ Km1zZzsKIH07CiAKIHN0YXRpYyBUbHNFcnJzIHRsc2VycnNbXSA9IHsKLQl7RUNsb3NlTm90aWZ5 LAkJCUVDbG9zZU5vdGlmeSwJCQlFQ2xvc2VOb3RpZnksCQkJMCwgCSJjbG9zZSBub3RpZnkifSwK LQl7RVVuZXhwZWN0ZWRNZXNzYWdlLAlFVW5leHBlY3RlZE1lc3NhZ2UsCUVVbmV4cGVjdGVkTWVz c2FnZSwgCTEsICJ1bmV4cGVjdGVkIG1lc3NhZ2UifSwKLQl7RUJhZFJlY29yZE1hYywJCUVCYWRS ZWNvcmRNYWMsCQlFQmFkUmVjb3JkTWFjLCAJCTEsICJiYWQgcmVjb3JkIG1hYyJ9LAotCXtFRGVj cnlwdGlvbkZhaWxlZCwJCUVJbGxlZ2FsUGFyYW1ldGVyLAkJRURlY3J5cHRpb25GYWlsZWQsCQkx LCAiZGVjcnlwdGlvbiBmYWlsZWQifSwKLQl7RVJlY29yZE92ZXJmbG93LAkJRUlsbGVnYWxQYXJh bWV0ZXIsCQlFUmVjb3JkT3ZlcmZsb3csCQkxLCAicmVjb3JkIHRvbyBsb25nIn0sCi0Je0VEZWNv bXByZXNzaW9uRmFpbHVyZSwJRURlY29tcHJlc3Npb25GYWlsdXJlLAlFRGVjb21wcmVzc2lvbkZh aWx1cmUsCTEsICJkZWNvbXByZXNzaW9uIGZhaWxlZCJ9LAotCXtFSGFuZHNoYWtlRmFpbHVyZSwJ CUVIYW5kc2hha2VGYWlsdXJlLAkJRUhhbmRzaGFrZUZhaWx1cmUsCQkxLCAiY291bGQgbm90IG5l Z290aWF0ZSBhY2NlcHRhYmxlIHNlY3VyaXR5IHBhcmFtZXRlcnMifSwKLQl7RU5vQ2VydGlmaWNh dGUsCQlFTm9DZXJ0aWZpY2F0ZSwJCQlFQ2VydGlmaWNhdGVVbmtub3duLAkxLCAibm8gYXBwcm9w cmlhdGUgY2VydGlmaWNhdGUgYXZhaWxhYmxlIn0sCi0Je0VCYWRDZXJ0aWZpY2F0ZSwJCUVCYWRD ZXJ0aWZpY2F0ZSwJCUVCYWRDZXJ0aWZpY2F0ZSwJCTEsICJjb3JydXB0ZWQgb3IgaW52YWxpZCBj ZXJ0aWZpY2F0ZSJ9LAotCXtFVW5zdXBwb3J0ZWRDZXJ0aWZpY2F0ZSwJRVVuc3VwcG9ydGVkQ2Vy dGlmaWNhdGUsCUVVbnN1cHBvcnRlZENlcnRpZmljYXRlLAkxLCAidW5zdXBwb3J0ZWQgY2VydGlm aWNhdGUgdHlwZSJ9LAotCXtFQ2VydGlmaWNhdGVSZXZva2VkLAlFQ2VydGlmaWNhdGVSZXZva2Vk LAkJRUNlcnRpZmljYXRlUmV2b2tlZCwJCTEsICJyZXZva2VkIGNlcnRpZmljYXRlIn0sCi0Je0VD ZXJ0aWZpY2F0ZUV4cGlyZWQsCQlFQ2VydGlmaWNhdGVFeHBpcmVkLAkJRUNlcnRpZmljYXRlRXhw aXJlZCwJCTEsICJleHBpcmVkIGNlcnRpZmljYXRlIn0sCi0Je0VDZXJ0aWZpY2F0ZVVua25vd24s CUVDZXJ0aWZpY2F0ZVVua25vd24sCUVDZXJ0aWZpY2F0ZVVua25vd24sCTEsICJ1bmFjY2VwdGFi bGUgY2VydGlmaWNhdGUifSwKLQl7RUlsbGVnYWxQYXJhbWV0ZXIsCQlFSWxsZWdhbFBhcmFtZXRl ciwJCUVJbGxlZ2FsUGFyYW1ldGVyLAkJMSwgImlsbGVnYWwgcGFyYW1ldGVyIn0sCi0Je0VVbmtu b3duQ2EsCQkJRUhhbmRzaGFrZUZhaWx1cmUsCQlFVW5rbm93bkNhLAkJCTEsICJ1bmtub3duIGNl cnRpZmljYXRlIGF1dGhvcml0eSJ9LAotCXtFQWNjZXNzRGVuaWVkLAkJRUhhbmRzaGFrZUZhaWx1 cmUsCQlFQWNjZXNzRGVuaWVkLAkJMSwgImFjY2VzcyBkZW5pZWQifSwKLQl7RURlY29kZUVycm9y LAkJCUVJbGxlZ2FsUGFyYW1ldGVyLAkJRURlY29kZUVycm9yLAkJCTEsICJlcnJvciBkZWNvZGlu ZyBtZXNzYWdlIn0sCi0Je0VEZWNyeXB0RXJyb3IsCQkJRUlsbGVnYWxQYXJhbWV0ZXIsCQlFRGVj cnlwdEVycm9yLAkJCTEsICJlcnJvciBkZWNyeXB0aW5nIG1lc3NhZ2UifSwKLQl7RUV4cG9ydFJl c3RyaWN0aW9uLAkJRUhhbmRzaGFrZUZhaWx1cmUsCQlFRXhwb3J0UmVzdHJpY3Rpb24sCQkxLCAi ZXhwb3J0IHJlc3RyaWN0aW9uIHZpb2xhdGVkIn0sCi0Je0VQcm90b2NvbFZlcnNpb24sCQlFSWxs ZWdhbFBhcmFtZXRlciwJCUVQcm90b2NvbFZlcnNpb24sCQkxLCAicHJvdG9jb2wgdmVyc2lvbiBu b3Qgc3VwcG9ydGVkIn0sCi0Je0VJbnN1ZmZpY2llbnRTZWN1cml0eSwJRUhhbmRzaGFrZUZhaWx1 cmUsCQlFSW5zdWZmaWNpZW50U2VjdXJpdHksCTEsICJzdHJvbmdlciBzZWN1cml0eSByb3V0aW5l cyByZXF1aXJlZCJ9LAotCXtFSW50ZXJuYWxFcnJvciwJCQlFSGFuZHNoYWtlRmFpbHVyZSwJCUVJ bnRlcm5hbEVycm9yLAkJCTEsICJpbnRlcm5hbCBlcnJvciJ9LAotCXtFVXNlckNhbmNlbGVkLAkJ RUNsb3NlTm90aWZ5LAkJCUVVc2VyQ2FuY2VsZWQsCQkJMCwgImhhbmRzaGFrZSBjYW5jZWxlZCBi eSB1c2VyIn0sCi0Je0VOb1JlbmVnb3RpYXRpb24sCQlFVW5leHBlY3RlZE1lc3NhZ2UsCUVOb1Jl bmVnb3RpYXRpb24sCQkwLCAibm8gcmVuZWdvdGlhdGlvbiJ9LAorCXtFQ2xvc2VOb3RpZnksCQkJ MCwgImNsb3NlIG5vdGlmeSJ9LAorCXtFVW5leHBlY3RlZE1lc3NhZ2UsCQkxLCAidW5leHBlY3Rl ZCBtZXNzYWdlIn0sCisJe0VCYWRSZWNvcmRNYWMsCQkJMSwgImJhZCByZWNvcmQgbWFjIn0sCisJ e0VEZWNyeXB0aW9uRmFpbGVkLAkJMSwgImRlY3J5cHRpb24gZmFpbGVkIn0sCisJe0VSZWNvcmRP dmVyZmxvdywJCTEsICJyZWNvcmQgdG9vIGxvbmcifSwKKwl7RURlY29tcHJlc3Npb25GYWlsdXJl LAkJMSwgImRlY29tcHJlc3Npb24gZmFpbGVkIn0sCisJe0VIYW5kc2hha2VGYWlsdXJlLAkJMSwg ImNvdWxkIG5vdCBuZWdvdGlhdGUgYWNjZXB0YWJsZSBzZWN1cml0eSBwYXJhbWV0ZXJzIn0sCisJ e0VCYWRDZXJ0aWZpY2F0ZSwJCTEsICJjb3JydXB0ZWQgb3IgaW52YWxpZCBjZXJ0aWZpY2F0ZSJ9 LAorCXtFVW5zdXBwb3J0ZWRDZXJ0aWZpY2F0ZSwJMSwgInVuc3VwcG9ydGVkIGNlcnRpZmljYXRl IHR5cGUifSwKKwl7RUNlcnRpZmljYXRlUmV2b2tlZCwJCTEsICJyZXZva2VkIGNlcnRpZmljYXRl In0sCisJe0VDZXJ0aWZpY2F0ZUV4cGlyZWQsCQkxLCAiZXhwaXJlZCBjZXJ0aWZpY2F0ZSJ9LAor CXtFQ2VydGlmaWNhdGVVbmtub3duLAkJMSwgInVuYWNjZXB0YWJsZSBjZXJ0aWZpY2F0ZSJ9LAor CXtFSWxsZWdhbFBhcmFtZXRlciwJCTEsICJpbGxlZ2FsIHBhcmFtZXRlciJ9LAorCXtFVW5rbm93 bkNhLAkJCTEsICJ1bmtub3duIGNlcnRpZmljYXRlIGF1dGhvcml0eSJ9LAorCXtFQWNjZXNzRGVu aWVkLAkJCTEsICJhY2Nlc3MgZGVuaWVkIn0sCisJe0VEZWNvZGVFcnJvciwJCQkxLCAiZXJyb3Ig ZGVjb2RpbmcgbWVzc2FnZSJ9LAorCXtFRGVjcnlwdEVycm9yLAkJCTEsICJlcnJvciBkZWNyeXB0 aW5nIG1lc3NhZ2UifSwKKwl7RUV4cG9ydFJlc3RyaWN0aW9uLAkJMSwgImV4cG9ydCByZXN0cmlj dGlvbiB2aW9sYXRlZCJ9LAorCXtFUHJvdG9jb2xWZXJzaW9uLAkJMSwgInByb3RvY29sIHZlcnNp b24gbm90IHN1cHBvcnRlZCJ9LAorCXtFSW5zdWZmaWNpZW50U2VjdXJpdHksCQkxLCAic3Ryb25n ZXIgc2VjdXJpdHkgcm91dGluZXMgcmVxdWlyZWQifSwKKwl7RUludGVybmFsRXJyb3IsCQkxLCAi aW50ZXJuYWwgZXJyb3IifSwKKwl7RVVzZXJDYW5jZWxlZCwJCQkwLCAiaGFuZHNoYWtlIGNhbmNl bGVkIGJ5IHVzZXIifSwKKwl7RU5vUmVuZWdvdGlhdGlvbiwJCTAsICJubyByZW5lZ290aWF0aW9u In0sCiB9OwogCiBlbnVtCkBAIC0yMjcsMTEgKzIxMiw4IEBACiBzdGF0aWMgdm9pZAlhbGVydEhh bmQoVGxzUmVjKiwgY2hhciAqKTsKIHN0YXRpYyBUbHNSZWMJKm5ld3RscyhDaGFuICpjKTsKIHN0 YXRpYyBUbHNSZWMJKm1rdGxzcmVjKHZvaWQpOwotc3RhdGljIERpZ2VzdFN0YXRlKnNzbG1hY19t ZDUodWNoYXIgKnAsIHVsb25nIGxlbiwgdWNoYXIgKmtleSwgdWxvbmcga2xlbiwgdWNoYXIgKmRp Z2VzdCwgRGlnZXN0U3RhdGUgKnMpOwotc3RhdGljIERpZ2VzdFN0YXRlKnNzbG1hY19zaGExKHVj aGFyICpwLCB1bG9uZyBsZW4sIHVjaGFyICprZXksIHVsb25nIGtsZW4sIHVjaGFyICpkaWdlc3Qs IERpZ2VzdFN0YXRlICpzKTsKIHN0YXRpYyBEaWdlc3RTdGF0ZSpub21hYyh1Y2hhciAqcCwgdWxv bmcgbGVuLCB1Y2hhciAqa2V5LCB1bG9uZyBrbGVuLCB1Y2hhciAqZGlnZXN0LCBEaWdlc3RTdGF0 ZSAqcyk7Ci1zdGF0aWMgaW50CXNzbFBhY2tBQUQodTY0aW50LCB1Y2hhciosIHVjaGFyKik7Ci1z dGF0aWMgaW50CXRsc1BhY2tBQUQodTY0aW50LCB1Y2hhciosIHVjaGFyKik7CitzdGF0aWMgaW50 CXBhY2tBQUQodTY0aW50LCB1Y2hhciosIHVjaGFyKik7CiBzdGF0aWMgdm9pZAlwYWNrTWFjKFNl Y3JldCosIHVjaGFyKiwgaW50LCB1Y2hhciosIGludCwgdWNoYXIqKTsKIHN0YXRpYyB2b2lkCXB1 dDY0KHVjaGFyICpwLCB1NjRpbnQpOwogc3RhdGljIHZvaWQJcHV0MzIodWNoYXIgKnAsIHUzMmlu dCk7CkBAIC0yNTIsOCArMjM0LDcgQEAKIHN0YXRpYyBpbnQJYWVzZ2NtX2FlYWRfZW5jKFNlY3Jl dCAqc2VjLCB1Y2hhciAqYWFkLCBpbnQgYWFkbGVuLCB1Y2hhciAqcmVjaXYsIHVjaGFyICpkYXRh LCBpbnQgbGVuKTsKIHN0YXRpYyBpbnQJYWVzZ2NtX2FlYWRfZGVjKFNlY3JldCAqc2VjLCB1Y2hh ciAqYWFkLCBpbnQgYWFkbGVuLCB1Y2hhciAqcmVjaXYsIHVjaGFyICpkYXRhLCBpbnQgbGVuKTsK IHN0YXRpYyBpbnQJbm9lbmMoU2VjcmV0ICpzZWMsIHVjaGFyICpidWYsIGludCBuKTsKLXN0YXRp YyBpbnQJc3NsdW5wYWQodWNoYXIgKmJ1ZiwgaW50IG4sIGludCBibG9jayk7Ci1zdGF0aWMgaW50 CXRsc3VucGFkKHVjaGFyICpidWYsIGludCBuLCBpbnQgYmxvY2spOworc3RhdGljIGludAl1bnBh ZCh1Y2hhciAqYnVmLCBpbnQgbiwgaW50IGJsb2NrKTsKIHN0YXRpYyB2b2lkCWZyZWVTZWMoU2Vj cmV0ICpzZWMpOwogc3RhdGljIGNoYXIJKnRsc3N0YXRlKGludCBzKTsKIHN0YXRpYyB2b2lkCXBk dW1wKGludCwgdm9pZCosIGNoYXIqKTsKQEAgLTc0OSwyMCArNzMwLDEwIEBACiBpZih0ci0+ZGVi dWcpcHByaW50KCJjb25zdW1lZCAlZCBoZWFkZXJcbiIsIFJlY0hkckxlbik7CiAJbmNvbnN1bWVk ID0gUmVjSGRyTGVuOwogCi0JaWYoKHRyLT5oYW5kaW4gPT0gMCkgJiYgKGhlYWRlclswXSAmIDB4 ODApKXsKLQkJLyogQ29wZSB3aXRoIGFuIFNTTDMgQ2xpZW50SGVsbG8gZXhwcmVzc2VkIGluIFNT TDIgcmVjb3JkIGZvcm1hdC4KLQkJCVRoaXMgaXMgc2VudCBieSBzb21lIGNsaWVudHMgdGhhdCB3 ZSBtdXN0IGludGVyb3BlcmF0ZQotCQkJd2l0aCwgc3VjaCBhcyBKYXZhJ3MgSlNTRSBhbmQgTWlj cm9zb2Z0J3MgSW50ZXJuZXQgRXhwbG9yZXIuICovCi0JCWxlbiA9IChnZXQxNihoZWFkZXIpICYg fjB4ODAwMCkgLSAzOwotCQl0eXBlID0gaGVhZGVyWzJdOwotCQl2ZXIgPSBnZXQxNihoZWFkZXIg KyAzKTsKLQkJaWYodHlwZSAhPSBTU0wyQ2xpZW50SGVsbG8gfHwgbGVuIDwgMjIpCi0JCQlyY3ZF cnJvcih0ciwgRVByb3RvY29sVmVyc2lvbiwgImludmFsaWQgaW5pdGlhbCBTU0wyLWxpa2UgbWVz c2FnZSIpOwotCX1lbHNleyAgLyogbm9ybWFsIFNTTDMgcmVjb3JkIGZvcm1hdCAqLwotCQl0eXBl ID0gaGVhZGVyWzBdOwotCQl2ZXIgPSBnZXQxNihoZWFkZXIrMSk7Ci0JCWxlbiA9IGdldDE2KGhl YWRlciszKTsKLQl9CisJdHlwZSA9IGhlYWRlclswXTsKKwl2ZXIgPSBnZXQxNihoZWFkZXIrMSk7 CisJbGVuID0gZ2V0MTYoaGVhZGVyKzMpOworCiAJaWYodmVyICE9IHRyLT52ZXJzaW9uICYmICh0 ci0+dmVyc2V0IHx8IHZlciA8IE1pblByb3RvVmVyc2lvbiB8fCB2ZXIgPiBNYXhQcm90b1ZlcnNp b24pKQogCQlyY3ZFcnJvcih0ciwgRVByb3RvY29sVmVyc2lvbiwgImRldnRscyBleHBlY3RlZCB2 ZXI9JXglcywgc2F3IChsZW49JWQpIHR5cGU9JXggdmVyPSV4ICclLjEycyciLAogCQkJdHItPnZl cnNpb24sIHRyLT52ZXJzZXQ/Ii9zZXQiOiIiLCBsZW4sIHR5cGUsIHZlciwgKGNoYXIqKWhlYWRl cik7CkBAIC04MjMsNyArNzk0LDcgQEAKIAogCQkvKiB1cGRhdGUgbGVuZ3RoICovCiAJCXB1dDE2 KGhlYWRlciszLCBsZW4pOwotCQlhYWRsZW4gPSAoKnRyLT5wYWNrQUFEKShpbi0+c2VxKyssIGhl YWRlciwgYWFkKTsKKwkJYWFkbGVuID0gcGFja0FBRChpbi0+c2VxKyssIGhlYWRlciwgYWFkKTsK IAkJaWYoc2VjLT5hZWFkX2RlYyAhPSBuaWwpIHsKIAkJCWxlbiA9ICgqc2VjLT5hZWFkX2RlYyko c2VjLCBhYWQsIGFhZGxlbiwgcCAtIGl2bGVuLCBwLCB1bnBhZF9sZW4pOwogCQkJaWYobGVuIDwg MCkKQEAgLTkxNiw0MiArODg3LDEyIEBACiAJCQlkZWNoYW5kcSh0cik7CiAJCX1lbHNlewogCQkJ dW5sb2NrKCZ0ci0+aHFsb2NrKTsKLQkJCWlmKHRyLT52ZXJzZXQgJiYgdHItPnZlcnNpb24gIT0g U1NMM1ZlcnNpb24gJiYgIXdhc2Vycm9yKCkpeworCQkJaWYodHItPnZlcnNldCAmJiAhd2FzZXJy b3IoKSl7CiAJCQkJc2VuZEFsZXJ0KHRyLCBFTm9SZW5lZ290aWF0aW9uKTsKIAkJCQlwb3BlcnJv cigpOwogCQkJfQogCQl9CiAJCWJyZWFrOwotCWNhc2UgU1NMMkNsaWVudEhlbGxvOgotCQlsb2Nr KCZ0ci0+aHFsb2NrKTsKLQkJaWYodHItPmhhbmRxICE9IG5pbCl7Ci0JCQl0ci0+aHFyZWYrKzsK LQkJCXVubG9jaygmdHItPmhxbG9jayk7Ci0JCQlpZih3YXNlcnJvcigpKXsKLQkJCQlkZWNoYW5k cSh0cik7Ci0JCQkJbmV4dGVycm9yKCk7Ci0JCQl9Ci0JCQkvKiBQYXNzIHRoZSBTU0wyIGZvcm1h dCBkYXRhLCBzbyB0aGF0IHRoZSBoYW5kc2hha2UgY29kZSBjYW4gY29tcHV0ZQotCQkJCXRoZSBj b3JyZWN0IGNoZWNrc3Vtcy4gIEhTU0wyQ2xpZW50SGVsbG8gPSBIYW5kc2hha2VUeXBlIDkgaXMK LQkJCQl1bnVzZWQgaW4gUkZDMjI0Ni4gKi8KLQkJCWIgPSBwYWRibG9jayhiLCA4KTsKLQkJCWIt PnJwWzBdID0gUkhhbmRzaGFrZTsKLQkJCWItPnJwWzFdID0gSFNTTDJDbGllbnRIZWxsbzsKLQkJ CXB1dDI0KCZiLT5ycFsyXSwgbGVuKzMpOwotCQkJYi0+cnBbNV0gPSBTU0wyQ2xpZW50SGVsbG87 Ci0JCQlwdXQxNigmYi0+cnBbNl0sIHZlcik7Ci0JCQlxYndyaXRlKHRyLT5oYW5kcSwgYik7Ci0J CQliID0gbmlsOwotCQkJcG9wZXJyb3IoKTsKLQkJCWRlY2hhbmRxKHRyKTsKLQkJfWVsc2V7Ci0J CQl1bmxvY2soJnRyLT5ocWxvY2spOwotCQkJaWYodHItPnZlcnNldCAmJiB0ci0+dmVyc2lvbiAh PSBTU0wzVmVyc2lvbiAmJiAhd2FzZXJyb3IoKSl7Ci0JCQkJc2VuZEFsZXJ0KHRyLCBFTm9SZW5l Z290aWF0aW9uKTsKLQkJCQlwb3BlcnJvcigpOwotCQkJfQotCQl9Ci0JCWJyZWFrOwogCWNhc2Ug UkFwcGxpY2F0aW9uOgogCQlpZighdHItPm9wZW5lZCkKIAkJCXJjdkVycm9yKHRyLCBFVW5leHBl Y3RlZE1lc3NhZ2UsICJhcHBsaWNhdGlvbiBtZXNzYWdlIHJlY2VpdmVkIGJlZm9yZSBoYW5kc2hh a2UgY29tcGxldGVkIik7CkBAIC0xMzE0LDcgKzEyNTUsNyBAQAogCQlwdXQxNihwKzMsIG4pOwog CiAJCWlmKHNlYyAhPSBuaWwpewotCQkJYWFkbGVuID0gKCp0ci0+cGFja0FBRCkob3V0LT5zZXEr KywgcCwgYWFkKTsKKwkJCWFhZGxlbiA9IHBhY2tBQUQob3V0LT5zZXErKywgcCwgYWFkKTsKIAkJ CWlmKHNlYy0+YWVhZF9lbmMgIT0gbmlsKQogCQkJCW4gPSAoKnNlYy0+YWVhZF9lbmMpKHNlYywg YWFkLCBhYWRsZW4sIHAgKyBSZWNIZHJMZW4sIHAgKyBSZWNIZHJMZW4gKyBpdmxlbiwgbikgKyBp dmxlbjsKIAkJCWVsc2UgewpAQCAtMTM5MCw0MiArMTMzMSwzNCBAQAogewogCWNoYXIJKm5hbWU7 CiAJaW50CW1hY2xlbjsKLQl2b2lkCSgqaW5pdGtleSkoSGFzaGFsZyAqLCBpbnQsIFNlY3JldCAq LCB1Y2hhciopOworCXZvaWQJKCppbml0a2V5KShIYXNoYWxnICosIFNlY3JldCAqLCB1Y2hhciop OwogfTsKIAogc3RhdGljIHZvaWQKLWluaXRtZDVrZXkoSGFzaGFsZyAqaGEsIGludCB2ZXJzaW9u LCBTZWNyZXQgKnMsIHVjaGFyICpwKQoraW5pdG1kNWtleShIYXNoYWxnICpoYSwgU2VjcmV0ICpz LCB1Y2hhciAqcCkKIHsKIAlzLT5tYWNsZW4gPSBoYS0+bWFjbGVuOwotCWlmKHZlcnNpb24gPT0g U1NMM1ZlcnNpb24pCi0JCXMtPm1hYyA9IHNzbG1hY19tZDU7Ci0JZWxzZQotCQlzLT5tYWMgPSBo bWFjX21kNTsKKwlzLT5tYWMgPSBobWFjX21kNTsKIAltZW1tb3ZlKHMtPm1hY2tleSwgcCwgaGEt Pm1hY2xlbik7CiB9CiAKIHN0YXRpYyB2b2lkCi1pbml0Y2xlYXJtYWMoSGFzaGFsZyAqLCBpbnQs IFNlY3JldCAqcywgdWNoYXIgKikKK2luaXRjbGVhcm1hYyhIYXNoYWxnICosIFNlY3JldCAqcywg dWNoYXIgKikKIHsKIAlzLT5tYWMgPSBub21hYzsKIH0KIAogc3RhdGljIHZvaWQKLWluaXRzaGEx a2V5KEhhc2hhbGcgKmhhLCBpbnQgdmVyc2lvbiwgU2VjcmV0ICpzLCB1Y2hhciAqcCkKK2luaXRz aGExa2V5KEhhc2hhbGcgKmhhLCBTZWNyZXQgKnMsIHVjaGFyICpwKQogewogCXMtPm1hY2xlbiA9 IGhhLT5tYWNsZW47Ci0JaWYodmVyc2lvbiA9PSBTU0wzVmVyc2lvbikKLQkJcy0+bWFjID0gc3Ns bWFjX3NoYTE7Ci0JZWxzZQotCQlzLT5tYWMgPSBobWFjX3NoYTE7CisJcy0+bWFjID0gaG1hY19z aGExOwogCW1lbW1vdmUocy0+bWFja2V5LCBwLCBoYS0+bWFjbGVuKTsKIH0KIAogc3RhdGljIHZv aWQKLWluaXRzaGEyXzI1NmtleShIYXNoYWxnICpoYSwgaW50IHZlcnNpb24sIFNlY3JldCAqcywg dWNoYXIgKnApCitpbml0c2hhMl8yNTZrZXkoSGFzaGFsZyAqaGEsIFNlY3JldCAqcywgdWNoYXIg KnApCiB7Ci0JaWYodmVyc2lvbiA9PSBTU0wzVmVyc2lvbikKLQkJZXJyb3IoInNoYTI1NiBjYW5u b3QgYmUgdXNlZCB3aXRoIFNTTCIpOwogCXMtPm1hY2xlbiA9IGhhLT5tYWNsZW47CiAJcy0+bWFj ID0gaG1hY19zaGEyXzI1NjsKIAltZW1tb3ZlKHMtPm1hY2tleSwgcCwgaGEtPm1hY2xlbik7CkBA IC0xNjQxLDEwICsxNTc0LDYgQEAKIAkJbSA9IHN0cnRvbChjYi0+ZlsxXSwgbmlsLCAwKTsKIAkJ aWYobSA8IE1pblByb3RvVmVyc2lvbiB8fCBtID4gTWF4UHJvdG9WZXJzaW9uKQogCQkJZXJyb3Io InVuc3VwcG9ydGVkIHZlcnNpb24iKTsKLQkJaWYobSA9PSBTU0wzVmVyc2lvbikKLQkJCXRyLT5w YWNrQUFEID0gc3NsUGFja0FBRDsKLQkJZWxzZQotCQkJdHItPnBhY2tBQUQgPSB0bHNQYWNrQUFE OwogCQl0ci0+dmVyc2V0ID0gMTsKIAkJdHItPnZlcnNpb24gPSBtOwogCX1lbHNlIGlmKHN0cmNt cChjYi0+ZlswXSwgInNlY3JldCIpID09IDApewpAQCAtMTY4NSw4ICsxNjE0LDggQEAKIAkJaWYo IWhhLT5pbml0a2V5IHx8ICFlYS0+aW5pdGtleSkKIAkJCWVycm9yKCJtaXNpbXBsZW1lbnRlZCBz ZWNyZXQgYWxnb3JpdGhtIik7CiAKLQkJKCpoYS0+aW5pdGtleSkoaGEsIHRyLT52ZXJzaW9uLCB0 b3MsICZ4WzBdKTsKLQkJKCpoYS0+aW5pdGtleSkoaGEsIHRyLT52ZXJzaW9uLCB0b2MsICZ4W2hh LT5tYWNsZW5dKTsKKwkJKCpoYS0+aW5pdGtleSkoaGEsIHRvcywgJnhbMF0pOworCQkoKmhhLT5p bml0a2V5KShoYSwgdG9jLCAmeFtoYS0+bWFjbGVuXSk7CiAJCSgqZWEtPmluaXRrZXkpKGVhLCB0 b3MsICZ4WzIgKiBoYS0+bWFjbGVuXSwgJnhbMiAqIGhhLT5tYWNsZW4gKyAyICogZWEtPmtleWxl bl0pOwogCQkoKmVhLT5pbml0a2V5KShlYSwgdG9jLCAmeFsyICogaGEtPm1hY2xlbiArIGVhLT5r ZXlsZW5dLCAmeFsyICogaGEtPm1hY2xlbiArIDIgKiBlYS0+a2V5bGVuICsgZWEtPml2bGVuXSk7 CiAKQEAgLTE3MDEsMTMgKzE2MzAsNiBAQAogCQkJdHItPmluLm5ldyA9IHRvYzsKIAkJCXRyLT5v dXQubmV3ID0gdG9zOwogCQl9Ci0JCWlmKHRyLT52ZXJzaW9uID09IFNTTDNWZXJzaW9uKXsKLQkJ CXRvYy0+dW5wYWQgPSBzc2x1bnBhZDsKLQkJCXRvcy0+dW5wYWQgPSBzc2x1bnBhZDsKLQkJfWVs c2V7Ci0JCQl0b2MtPnVucGFkID0gdGxzdW5wYWQ7Ci0JCQl0b3MtPnVucGFkID0gdGxzdW5wYWQ7 Ci0JCX0KIAkJdG9jLT5lbmNhbGcgPSBlYS0+bmFtZTsKIAkJdG9jLT5oYXNoYWxnID0gaGEtPm5h bWU7CiAJCXRvcy0+ZW5jYWxnID0gZWEtPm5hbWU7CkBAIC0xODc5LDE3ICsxODAxLDEyIEBACiBp Zih0ci0+ZGVidWcpcHByaW50KCJzZW5kQWxlcnQgJWRcbiIsIGVycik7CiAJZmF0YWwgPSAxOwog CW1zZyA9ICJ0bHMgdW5rbm93biBhbGVydCI7Ci0JZm9yKGk9MDsgaSA8IG5lbGVtKHRsc2VycnMp OyBpKyspIHsKLQkJaWYodGxzZXJyc1tpXS5lcnIgPT0gZXJyKSB7CisJZm9yKGk9MDsgaSA8IG5l bGVtKHRsc2VycnMpOyBpKyspCisJCWlmKHRsc2VycnNbaV0uZXJyID09IGVycil7CiAJCQltc2cg PSB0bHNlcnJzW2ldLm1zZzsKLQkJCWlmKHRyLT52ZXJzaW9uID09IFNTTDNWZXJzaW9uKQotCQkJ CWVyciA9IHRsc2VycnNbaV0uc3NsZXJyOwotCQkJZWxzZQotCQkJCWVyciA9IHRsc2VycnNbaV0u dGxzZXJyOwogCQkJZmF0YWwgPSB0bHNlcnJzW2ldLmZhdGFsOwogCQkJYnJlYWs7CiAJCX0KLQl9 CiAKIAlpZighd2FzZXJyb3IoKSl7CiAJCWIgPSBhbGxvY2IoMik7CkBAIC0yMDYxLDcgKzE5Nzgs NyBAQAogfQogCiBzdGF0aWMgaW50Ci10bHN1bnBhZCh1Y2hhciAqYnVmLCBpbnQgbiwgaW50IGJs b2NrKQordW5wYWQodWNoYXIgKmJ1ZiwgaW50IG4sIGludCBibG9jaykKIHsKIAlpbnQgcGFkLCBu bjsKIApAQCAtMjA3NiwxOCArMTk5Myw2IEBACiB9CiAKIHN0YXRpYyBpbnQKLXNzbHVucGFkKHVj aGFyICpidWYsIGludCBuLCBpbnQgYmxvY2spCi17Ci0JaW50IHBhZCwgbm47Ci0KLQlwYWQgPSBi dWZbbiAtIDFdOwotCW5uID0gbiAtIDEgLSBwYWQ7Ci0JaWYobm4gPD0gMCB8fCBuICUgYmxvY2sp Ci0JCXJldHVybiAtMTsKLQlyZXR1cm4gbm47Ci19Ci0KLXN0YXRpYyBpbnQKIGJsb2NrcGFkKHVj aGFyICpidWYsIGludCBuLCBpbnQgYmxvY2spCiB7CiAJaW50IHBhZCwgbm47CkBAIC0yMTEyLDcg KzIwMTcsNyBAQAogZGVzM2RlYyhTZWNyZXQgKnNlYywgdWNoYXIgKmJ1ZiwgaW50IG4pCiB7CiAJ ZGVzM0NCQ2RlY3J5cHQoYnVmLCBuLCBzZWMtPmVuY2tleSk7Ci0JcmV0dXJuICgqc2VjLT51bnBh ZCkoYnVmLCBuLCA4KTsKKwlyZXR1cm4gdW5wYWQoYnVmLCBuLCA4KTsKIH0KIAogc3RhdGljIGlu dApAQCAtMjEyNyw3ICsyMDMyLDcgQEAKIGFlc2RlYyhTZWNyZXQgKnNlYywgdWNoYXIgKmJ1Ziwg aW50IG4pCiB7CiAJYWVzQ0JDZGVjcnlwdChidWYsIG4sIHNlYy0+ZW5ja2V5KTsKLQlyZXR1cm4g KCpzZWMtPnVucGFkKShidWYsIG4sIDE2KTsKKwlyZXR1cm4gdW5wYWQoYnVmLCBuLCAxNik7CiB9 CiAKIHN0YXRpYyB2b2lkCkBAIC0yMjEzLDcxICsyMTE4LDggQEAKIAlyZXR1cm4gbmlsOwogfQog Ci0vKgotICogc3NsbWFjOiBtYWMgY2FsY3VsYXRpb25zIGZvciBzc2wgMy4wIG9ubHk7IHRscyAx LjAgdXNlcyB0aGUgc3RhbmRhcmQgaG1hYy4KLSAqLwotc3RhdGljIERpZ2VzdFN0YXRlKgotc3Ns bWFjX3godWNoYXIgKnAsIHVsb25nIGxlbiwgdWNoYXIgKmtleSwgdWxvbmcga2xlbiwgdWNoYXIg KmRpZ2VzdCwgRGlnZXN0U3RhdGUgKnMsCi0JRGlnZXN0U3RhdGUqKCp4KSh1Y2hhciosIHVsb25n LCB1Y2hhciosIERpZ2VzdFN0YXRlKiksIGludCB4bGVuLCBpbnQgcGFkbGVuKQotewotCWludCBp OwotCXVjaGFyIHBhZFs0OF0sIGlubmVyZGlnZXN0WzIwXTsKLQotCWlmKHhsZW4gPiBzaXplb2Yo aW5uZXJkaWdlc3QpCi0JfHwgcGFkbGVuID4gc2l6ZW9mKHBhZCkpCi0JCXJldHVybiBuaWw7Ci0K LQlpZihrbGVuPjY0KQotCQlyZXR1cm4gbmlsOwotCi0JLyogZmlyc3QgdGltZSB0aHJvdWdoICov Ci0JaWYocyA9PSBuaWwpewotCQlmb3IoaT0wOyBpPHBhZGxlbjsgaSsrKQotCQkJcGFkW2ldID0g MHgzNjsKLQkJcyA9ICgqeCkoa2V5LCBrbGVuLCBuaWwsIG5pbCk7Ci0JCXMgPSAoKngpKHBhZCwg cGFkbGVuLCBuaWwsIHMpOwotCQlpZihzID09IG5pbCkKLQkJCXJldHVybiBuaWw7Ci0JfQotCi0J cyA9ICgqeCkocCwgbGVuLCBuaWwsIHMpOwotCWlmKGRpZ2VzdCA9PSBuaWwpCi0JCXJldHVybiBz OwotCi0JLyogbGFzdCB0aW1lIHRocm91Z2ggKi8KLQlmb3IoaT0wOyBpPHBhZGxlbjsgaSsrKQot CQlwYWRbaV0gPSAweDVjOwotCSgqeCkobmlsLCAwLCBpbm5lcmRpZ2VzdCwgcyk7Ci0JcyA9ICgq eCkoa2V5LCBrbGVuLCBuaWwsIG5pbCk7Ci0JcyA9ICgqeCkocGFkLCBwYWRsZW4sIG5pbCwgcyk7 Ci0JKCp4KShpbm5lcmRpZ2VzdCwgeGxlbiwgZGlnZXN0LCBzKTsKLQlyZXR1cm4gbmlsOwotfQot Ci1zdGF0aWMgRGlnZXN0U3RhdGUqCi1zc2xtYWNfc2hhMSh1Y2hhciAqcCwgdWxvbmcgbGVuLCB1 Y2hhciAqa2V5LCB1bG9uZyBrbGVuLCB1Y2hhciAqZGlnZXN0LCBEaWdlc3RTdGF0ZSAqcykKLXsK LQlyZXR1cm4gc3NsbWFjX3gocCwgbGVuLCBrZXksIGtsZW4sIGRpZ2VzdCwgcywgc2hhMSwgU0hB MWRsZW4sIDQwKTsKLX0KLQotc3RhdGljIERpZ2VzdFN0YXRlKgotc3NsbWFjX21kNSh1Y2hhciAq cCwgdWxvbmcgbGVuLCB1Y2hhciAqa2V5LCB1bG9uZyBrbGVuLCB1Y2hhciAqZGlnZXN0LCBEaWdl c3RTdGF0ZSAqcykKLXsKLQlyZXR1cm4gc3NsbWFjX3gocCwgbGVuLCBrZXksIGtsZW4sIGRpZ2Vz dCwgcywgbWQ1LCBNRDVkbGVuLCA0OCk7Ci19Ci0KIHN0YXRpYyBpbnQKLXNzbFBhY2tBQUQodTY0 aW50IHNlcSwgdWNoYXIgKmhkciwgdWNoYXIgKmFhZCkKLXsKLQlwdXQ2NChhYWQsIHNlcSk7Ci0J YWFkWzhdID0gaGRyWzBdOwotCWFhZFs5XSA9IGhkclszXTsKLQlhYWRbMTBdID0gaGRyWzRdOwot CXJldHVybiAxMTsKLX0KLQotc3RhdGljIGludAotdGxzUGFja0FBRCh1NjRpbnQgc2VxLCB1Y2hh ciAqaGRyLCB1Y2hhciAqYWFkKQorcGFja0FBRCh1NjRpbnQgc2VxLCB1Y2hhciAqaGRyLCB1Y2hh ciAqYWFkKQogewogCXB1dDY0KGFhZCwgc2VxKTsKIAlhYWRbOF0gPSBoZHJbMF07Ci0tLSBhLy9z eXMvc3JjL2xpYnNlYy9wb3J0L3Rsc2hhbmQuYworKysgYi8vc3lzL3NyYy9saWJzZWMvcG9ydC90 bHNoYW5kLmMKQEAgLTgsMTQgKzgsMTMgQEAKIC8vCQljbGllbnQvc2VydmVyIC0gbWFpbiBoYW5k c2hha2UgcHJvdG9jb2wgZGVmaW5pdGlvbgogLy8JCW1lc3NhZ2UgZnVuY3Rpb25zIC0gZm9ybWF0 aW5nIGhhbmRzaGFrZSBtZXNzYWdlcwogLy8JCWNpcGhlciBjaG9pY2VzIC0gY2F0YWxvZyBvZiBk aWdlc3QgYW5kIGVuY3J5cHQgYWxnb3JpdGhtcwotLy8JCXNlY3VyaXR5IGZ1bmN0aW9ucyAtIFBL Q1MjMSwgc3NsSE1BQywgc2Vzc2lvbiBrZXlnZW4KKy8vCQlzZWN1cml0eSBmdW5jdGlvbnMgLSBQ S0NTIzEsIHNlc3Npb24ga2V5Z2VuCiAvLwkJZ2VuZXJhbCB1dGlsaXR5IGZ1bmN0aW9ucyAtIG1h bGxvYywgc2VyaWFsaXphdGlvbgotLy8gVGhlIGhhbmRzaGFrZSBwcm90b2NvbCBidWlsZHMgb24g dGhlIFRMUy9TU0wzIHJlY29yZCBsYXllciBwcm90b2NvbCwKLS8vIHdoaWNoIGlzIGltcGxlbWVu dGVkIGluIGtlcm5lbCBkZXZpY2UgI2EuICBTZWUgYWxzbyAvbGliL3JmYy9yZmMyMjQ2LgorLy8g VGhlIGhhbmRzaGFrZSBwcm90b2NvbCBidWlsZHMgb24gdGhlIFRMUyByZWNvcmQgbGF5ZXIgcHJv dG9jb2wsCisvLyB3aGljaCBpcyBpbXBsZW1lbnRlZCBpbiBrZXJuZWwgZGV2aWNlICNhLiAgU2Vl IGFsc28gL2xpYi9yZmMvcmZjNTI0Ni4KIAogZW51bSB7Ci0JVExTRmluaXNoZWRMZW4gPSAxMiwK LQlTU0wzRmluaXNoZWRMZW4gPSBNRDVkbGVuK1NIQTFkbGVuLAorCUZpbmlzaGVkTGVuID0gMTIs CiAJTWF4S2V5RGF0YSA9IDE2MCwJLy8gYW1vdW50IG9mIHNlY3JldCB3ZSBtYXkgbmVlZAogCU1B WGRsZW4gPSBTSEEyXzUxMmRsZW4sCiAJUmFuZG9tU2l6ZSA9IDMyLApAQCAtNDcsMTEgKzQ2LDYg QEAKIAl2b2lkICgqaW5pdCkobXBpbnQgKnAsIG1waW50ICphLCBtcGludCAqYiwgbXBpbnQgKngs IG1waW50ICp5LCBtcGludCAqbiwgbXBpbnQgKmgpOwogfSBOYW1lZGN1cnZlOwogCi10eXBlZGVm IHN0cnVjdCBGaW5pc2hlZHsKLQl1Y2hhciB2ZXJpZnlbU1NMM0ZpbmlzaGVkTGVuXTsKLQlpbnQg bjsKLX0gRmluaXNoZWQ7Ci0KIHR5cGVkZWYgc3RydWN0IEhhbmRzaGFrZUhhc2ggewogCU1ENXN0 YXRlCW1kNTsKIAlTSEFzdGF0ZQlzaGExOwpAQCAtODEsNyArNzUsNiBAQAogCS8vIGJ5dGUgZ2Vu ZXJhdGlvbiBhbmQgaGFuZHNoYWtlIGNoZWNrc3VtCiAJdm9pZCAoKnByZikodWNoYXIqLCBpbnQs IHVjaGFyKiwgaW50LCBjaGFyKiwgdWNoYXIqLCBpbnQpOwogCXZvaWQgKCpzZXRGaW5pc2hlZCko VGxzU2VjKiwgSGFuZHNoYWtlSGFzaCwgdWNoYXIqLCBpbnQpOwotCWludCBuZmluOwogfTsKIAog dHlwZWRlZiBzdHJ1Y3QgVGxzQ29ubmVjdGlvbnsKQEAgLTk5LDcgKzkyLDcgQEAKIAogCS8vIGZv ciBmaW5pc2hlZCBtZXNzYWdlcwogCUhhbmRzaGFrZUhhc2gJaGFuZGhhc2g7Ci0JRmluaXNoZWQJ ZmluaXNoZWQ7CisJdWNoYXIJCWZpbmlzaGVkW0ZpbmlzaGVkTGVuXTsKIAogCXVjaGFyICpzZW5k cDsKIAl1Y2hhciBidWZbMTw8MTZdOwpAQCAtMTUyLDE4ICsxNDUsMTcgQEAKIAkJCWludCBzaWdh bGc7CiAJCQlCeXRlcyAqc2lnbmF0dXJlOwogCQl9IGNlcnRpZmljYXRlVmVyaWZ5OwkJCi0JCUZp bmlzaGVkIGZpbmlzaGVkOworCQl1Y2hhciBmaW5pc2hlZFtGaW5pc2hlZExlbl07CiAJfSB1Owog fSBNc2c7CiAKIAogZW51bSB7Ci0JU1NMM1ZlcnNpb24JPSAweDAzMDAsCiAJVExTMTBWZXJzaW9u CT0gMHgwMzAxLAogCVRMUzExVmVyc2lvbgk9IDB4MDMwMiwKIAlUTFMxMlZlcnNpb24JPSAweDAz MDMsCiAJUHJvdG9jb2xWZXJzaW9uCT0gVExTMTJWZXJzaW9uLAkvLyBtYXhpbXVtIHZlcnNpb24g d2Ugc3BlYWsKLQlNaW5Qcm90b1ZlcnNpb24JPSAweDAzMDAsCS8vIGxpbWl0cyBvbiB2ZXJzaW9u IHdlIGFjY2VwdAorCU1pblByb3RvVmVyc2lvbgk9IDB4MDMwMSwJLy8gbGltaXRzIG9uIHZlcnNp b24gd2UgYWNjZXB0CiAJTWF4UHJvdG9WZXJzaW9uCT0gMHgwM2ZmLAogfTsKIApAQCAtMTcyLDcg KzE2NCw2IEBACiAJSEhlbGxvUmVxdWVzdCwKIAlIQ2xpZW50SGVsbG8sCiAJSFNlcnZlckhlbGxv LAotCUhTU0wyQ2xpZW50SGVsbG8gPSA5LCAgLyogbG9jYWwgY29udmVudGlvbjsgIHNlZSBkZXZ0 bHMuYyAqLwogCUhDZXJ0aWZpY2F0ZSA9IDExLAogCUhTZXJ2ZXJLZXlFeGNoYW5nZSwKIAlIQ2Vy dGlmaWNhdGVSZXF1ZXN0LApAQCAtMTkyLDcgKzE4Myw2IEBACiAJRVJlY29yZE92ZXJmbG93ID0g MjIsCiAJRURlY29tcHJlc3Npb25GYWlsdXJlID0gMzAsCiAJRUhhbmRzaGFrZUZhaWx1cmUgPSA0 MCwKLQlFTm9DZXJ0aWZpY2F0ZSA9IDQxLAogCUVCYWRDZXJ0aWZpY2F0ZSA9IDQyLAogCUVVbnN1 cHBvcnRlZENlcnRpZmljYXRlID0gNDMsCiAJRUNlcnRpZmljYXRlUmV2b2tlZCA9IDQ0LApAQCAt MzY3LDcgKzM1Nyw2IEBACiAjcHJhZ21hCXZhcmFyZ2NrIGFyZ3Bvcwl0bHNFcnJvciAzCiBzdGF0 aWMgaW50IHNldFZlcnNpb24oVGxzQ29ubmVjdGlvbiAqYywgaW50IHZlcnNpb24pOwogc3RhdGlj IGludCBzZXRTZWNyZXRzKFRsc0Nvbm5lY3Rpb24gKmMsIGludCBpc2NsaWVudCk7Ci1zdGF0aWMg aW50IGZpbmlzaGVkTWF0Y2goVGxzQ29ubmVjdGlvbiAqYywgRmluaXNoZWQgKmYpOwogc3RhdGlj IHZvaWQgdGxzQ29ubmVjdGlvbkZyZWUoVGxzQ29ubmVjdGlvbiAqYyk7CiAKIHN0YXRpYyBpbnQg aXNESEUoaW50IHRsc2lkKTsKQEAgLTM5NCw3ICszODMsNiBAQAogc3RhdGljIEJ5dGVzKgl0bHNT ZWNESEVjKFRsc1NlYyAqc2VjLCBCeXRlcyAqcCwgQnl0ZXMgKmcsIEJ5dGVzICpZcyk7CiBzdGF0 aWMgQnl0ZXMqCXRsc1NlY0VDREhFYyhUbHNTZWMgKnNlYywgaW50IGN1cnZlLCBCeXRlcyAqWXMp Owogc3RhdGljIHZvaWQJdGxzU2VjVmVycyhUbHNTZWMgKnNlYywgaW50IHYpOwotc3RhdGljIGlu dAl0bHNTZWNGaW5pc2hlZChUbHNTZWMgKnNlYywgSGFuZHNoYWtlSGFzaCBoc2gsIHVjaGFyICpm aW4sIGludCBuZmluLCBpbnQgaXNjbGllbnQpOwogc3RhdGljIHZvaWQJc2V0TWFzdGVyU2VjcmV0 KFRsc1NlYyAqc2VjLCBCeXRlcyAqcG0pOwogc3RhdGljIGludAlkaWdlc3RESHBhcmFtcyhUbHNT ZWMgKnNlYywgQnl0ZXMgKnBhciwgdWNoYXIgZGlnZXN0W01BWGRsZW5dLCBpbnQgc2lnYWxnKTsK IHN0YXRpYyBjaGFyKgl2ZXJpZnlESHBhcmFtcyhUbHNTZWMgKnNlYywgQnl0ZXMgKnBhciwgQnl0 ZXMgKmNlcnQsIEJ5dGVzICpzaWcsIGludCBzaWdhbGcpOwpAQCAtNTExLDI4ICs0OTksMjYgQEAK IAl9CiAKIAkvLyBFbGxpcHRpYyBDdXJ2ZXMgKGFsc28gY2FsbGVkIFN1cHBvcnRlZCBHcm91cHMp Ci0JaWYoUHJvdG9jb2xWZXJzaW9uID49IFRMUzEwVmVyc2lvbil7Ci0JCW0gPSBwIC0gYjsKLQkJ YiA9IGVyZWFsbG9jKGIsIG0gKyAyKzIrMituZWxlbShuYW1lZGN1cnZlcykqMiArIDIrMisxK25l bGVtKHBvaW50Zm9ybWF0cykpOwotCQlwID0gYiArIG07CisJbSA9IHAgLSBiOworCWIgPSBlcmVh bGxvYyhiLCBtICsgMisyKzIrbmVsZW0obmFtZWRjdXJ2ZXMpKjIgKyAyKzIrMStuZWxlbShwb2lu dGZvcm1hdHMpKTsKKwlwID0gYiArIG07CiAKLQkJbiA9IG5lbGVtKG5hbWVkY3VydmVzKTsKLQkJ cHV0MTYocCwgRXh0ZWMpLCBwICs9IDI7CS8qIFR5cGU6IGVsbGlwdGljX2N1cnZlcyAvIHN1cHBv cnRlZF9ncm91cHMgKi8KLQkJcHV0MTYocCwgKG4rMSkqMiksIHAgKz0gMjsJLyogTGVuZ3RoICov Ci0JCXB1dDE2KHAsIG4qMiksIHAgKz0gMjsJCS8qIEVsbGlwdGljIEN1cnZlcyBMZW5ndGggKi8K LQkJZm9yKGk9MDsgaSA8IG47IGkrKyl7CQkvKiBFbGxpcHRpYyBDdXJ2ZXMgKi8KLQkJCXB1dDE2 KHAsIG5hbWVkY3VydmVzW2ldLnRsc2lkKTsKLQkJCXAgKz0gMjsKLQkJfQotCi0JCW4gPSBuZWxl bShwb2ludGZvcm1hdHMpOwotCQlwdXQxNihwLCBFeHRlY3ApLCBwICs9IDI7CS8qIFR5cGU6IGVj X3BvaW50X2Zvcm1hdHMgKi8KLQkJcHV0MTYocCwgbisxKSwgcCArPSAyOwkJLyogTGVuZ3RoICov Ci0JCSpwKysgPSBuOwkJCS8qIEVDIHBvaW50IGZvcm1hdHMgTGVuZ3RoICovCi0JCWZvcihpPTA7 IGkgPCBuOyBpKyspCQkvKiBFQyBwb2ludCBmb3JtYXRzICovCi0JCQkqcCsrID0gcG9pbnRmb3Jt YXRzW2ldOworCW4gPSBuZWxlbShuYW1lZGN1cnZlcyk7CisJcHV0MTYocCwgRXh0ZWMpLCBwICs9 IDI7CS8qIFR5cGU6IGVsbGlwdGljX2N1cnZlcyAvIHN1cHBvcnRlZF9ncm91cHMgKi8KKwlwdXQx NihwLCAobisxKSoyKSwgcCArPSAyOwkvKiBMZW5ndGggKi8KKwlwdXQxNihwLCBuKjIpLCBwICs9 IDI7CQkvKiBFbGxpcHRpYyBDdXJ2ZXMgTGVuZ3RoICovCisJZm9yKGk9MDsgaSA8IG47IGkrKyl7 CQkvKiBFbGxpcHRpYyBDdXJ2ZXMgKi8KKwkJcHV0MTYocCwgbmFtZWRjdXJ2ZXNbaV0udGxzaWQp OworCQlwICs9IDI7CiAJfQogCisJbiA9IG5lbGVtKHBvaW50Zm9ybWF0cyk7CisJcHV0MTYocCwg RXh0ZWNwKSwgcCArPSAyOwkvKiBUeXBlOiBlY19wb2ludF9mb3JtYXRzICovCisJcHV0MTYocCwg bisxKSwgcCArPSAyOwkJLyogTGVuZ3RoICovCisJKnArKyA9IG47CQkJLyogRUMgcG9pbnQgZm9y bWF0cyBMZW5ndGggKi8KKwlmb3IoaT0wOyBpIDwgbjsgaSsrKQkJLyogRUMgcG9pbnQgZm9ybWF0 cyAqLworCQkqcCsrID0gcG9pbnRmb3JtYXRzW2ldOworCiAJLy8gc2lnbmF0dXJlIGFsZ29yaXRo bXMKIAlpZihQcm90b2NvbFZlcnNpb24gPj0gVExTMTJWZXJzaW9uKXsKIAkJbiA9IG5lbGVtKHNp Z2FsZ3MpOwpAQCAtODQ5LDEwICs4MzUsNyBAQAogCX0KIAogCS8qIG5vIENlcnRpZmljYXRlVmVy aWZ5OyBza2lwIHRvIEZpbmlzaGVkICovCi0JaWYodGxzU2VjRmluaXNoZWQoYy0+c2VjLCBjLT5o YW5kaGFzaCwgYy0+ZmluaXNoZWQudmVyaWZ5LCBjLT5maW5pc2hlZC5uLCAxKSA8IDApewotCQl0 bHNFcnJvcihjLCBFSW50ZXJuYWxFcnJvciwgImNhbid0IHNldCBmaW5pc2hlZDogJXIiKTsKLQkJ Z290byBFcnI7Ci0JfQorCSgqYy0+c2VjLT5zZXRGaW5pc2hlZCkoYy0+c2VjLCBjLT5oYW5kaGFz aCwgYy0+ZmluaXNoZWQsIDEpOwogCWlmKCFtc2dSZWN2KGMsICZtKSkKIAkJZ290byBFcnI7CiAJ aWYobS50YWcgIT0gSEZpbmlzaGVkKSB7CkBAIC04NTksNyArODQyLDcgQEAKIAkJdGxzRXJyb3Io YywgRVVuZXhwZWN0ZWRNZXNzYWdlLCAiZXhwZWN0ZWQgYSBmaW5pc2hlZCIpOwogCQlnb3RvIEVy cjsKIAl9Ci0JaWYoIWZpbmlzaGVkTWF0Y2goYywgJm0udS5maW5pc2hlZCkpIHsKKwlpZih0c21l bWNtcChjLT5maW5pc2hlZCwgbS51LmZpbmlzaGVkLCBGaW5pc2hlZExlbikgIT0gMCkgewogCQl0 bHNFcnJvcihjLCBFSGFuZHNoYWtlRmFpbHVyZSwgImZpbmlzaGVkIHZlcmlmaWNhdGlvbiBmYWls ZWQiKTsKIAkJZ290byBFcnI7CiAJfQpAQCAtODcxLDEyICs4NTQsOSBAQAogCQlnb3RvIEVycjsK IAl9CiAKLQlpZih0bHNTZWNGaW5pc2hlZChjLT5zZWMsIGMtPmhhbmRoYXNoLCBjLT5maW5pc2hl ZC52ZXJpZnksIGMtPmZpbmlzaGVkLm4sIDApIDwgMCl7Ci0JCXRsc0Vycm9yKGMsIEVJbnRlcm5h bEVycm9yLCAiY2FuJ3Qgc2V0IGZpbmlzaGVkOiAlciIpOwotCQlnb3RvIEVycjsKLQl9CisJKCpj LT5zZWMtPnNldEZpbmlzaGVkKShjLT5zZWMsIGMtPmhhbmRoYXNoLCBjLT5maW5pc2hlZCwgMCk7 CiAJbS50YWcgPSBIRmluaXNoZWQ7Ci0JbS51LmZpbmlzaGVkID0gYy0+ZmluaXNoZWQ7CisJbWVt bW92ZShtLnUuZmluaXNoZWQsIGMtPmZpbmlzaGVkLCBGaW5pc2hlZExlbik7CiAJaWYoIW1zZ1Nl bmQoYywgJm0sIEFGbHVzaCkpCiAJCWdvdG8gRXJyOwogCWlmKHRyYWNlKQpAQCAtMTIyMCwyMSAr MTIwMCwxNSBAQAogCiAJLy8gQ2lwaGVyY2hhbmdlIG11c3Qgb2NjdXIgaW1tZWRpYXRlbHkgYmVm b3JlIEZpbmlzaGVkIHRvIGF2b2lkCiAJLy8gcG90ZW50aWFsIGhvbGU7ICBzZWUgc2VjdGlvbiA0 LjMgb2YgV2FnbmVyIFNjaG5laWVyIDE5OTYuCi0JaWYodGxzU2VjRmluaXNoZWQoYy0+c2VjLCBj LT5oYW5kaGFzaCwgYy0+ZmluaXNoZWQudmVyaWZ5LCBjLT5maW5pc2hlZC5uLCAxKSA8IDApewot CQl0bHNFcnJvcihjLCBFSW50ZXJuYWxFcnJvciwgImNhbid0IHNldCBmaW5pc2hlZCAxOiAlciIp OwotCQlnb3RvIEVycjsKLQl9CisJKCpjLT5zZWMtPnNldEZpbmlzaGVkKShjLT5zZWMsIGMtPmhh bmRoYXNoLCBjLT5maW5pc2hlZCwgMSk7CiAJbS50YWcgPSBIRmluaXNoZWQ7Ci0JbS51LmZpbmlz aGVkID0gYy0+ZmluaXNoZWQ7CisJbWVtbW92ZShtLnUuZmluaXNoZWQsIGMtPmZpbmlzaGVkLCBG aW5pc2hlZExlbik7CiAJaWYoIW1zZ1NlbmQoYywgJm0sIEFGbHVzaCkpIHsKIAkJdGxzRXJyb3Io YywgRUludGVybmFsRXJyb3IsICJjYW4ndCBmbHVzaCBhZnRlciBjbGllbnQgRmluaXNoZWQ6ICVy Iik7CiAJCWdvdG8gRXJyOwogCX0KIAotCWlmKHRsc1NlY0ZpbmlzaGVkKGMtPnNlYywgYy0+aGFu ZGhhc2gsIGMtPmZpbmlzaGVkLnZlcmlmeSwgYy0+ZmluaXNoZWQubiwgMCkgPCAwKXsKLQkJdGxz RXJyb3IoYywgRUludGVybmFsRXJyb3IsICJjYW4ndCBzZXQgZmluaXNoZWQgMDogJXIiKTsKLQkJ Z290byBFcnI7Ci0JfQorCSgqYy0+c2VjLT5zZXRGaW5pc2hlZCkoYy0+c2VjLCBjLT5oYW5kaGFz aCwgYy0+ZmluaXNoZWQsIDApOwogCWlmKCFtc2dSZWN2KGMsICZtKSkgewogCQl0bHNFcnJvcihj LCBFSW50ZXJuYWxFcnJvciwgImNhbid0IHJlYWQgc2VydmVyIEZpbmlzaGVkOiAlciIpOwogCQln b3RvIEVycjsKQEAgLTEyNDQsNyArMTIxOCw3IEBACiAJCWdvdG8gRXJyOwogCX0KIAotCWlmKCFm aW5pc2hlZE1hdGNoKGMsICZtLnUuZmluaXNoZWQpKSB7CisJaWYodHNtZW1jbXAoYy0+ZmluaXNo ZWQsIG0udS5maW5pc2hlZCwgRmluaXNoZWRMZW4pICE9IDApIHsKIAkJdGxzRXJyb3IoYywgRUhh bmRzaGFrZUZhaWx1cmUsICJmaW5pc2hlZCB2ZXJpZmljYXRpb24gZmFpbGVkIik7CiAJCWdvdG8g RXJyOwogCX0KQEAgLTE0MTgsMTYgKzEzOTIsMTYgQEAKIAkJCWdvdG8gT3ZlcmZsb3c7CiAJCWlm KGlzRUNESEUoYy0+Y2lwaGVyKSkKIAkJCSpwKysgPSBuOwotCQllbHNlIGlmKGlzREhFKGMtPmNp cGhlcikgfHwgYy0+dmVyc2lvbiAhPSBTU0wzVmVyc2lvbikKKwkJZWxzZQogCQkJcHV0MTYocCwg biksIHAgKz0gMjsKIAkJbWVtbW92ZShwLCBtLT51LmNsaWVudEtleUV4Y2hhbmdlLmtleS0+ZGF0 YSwgbik7CiAJCXAgKz0gbjsKIAkJYnJlYWs7CiAJY2FzZSBIRmluaXNoZWQ6Ci0JCWlmKHArbS0+ dS5maW5pc2hlZC5uID4gZSkKKwkJaWYocCtGaW5pc2hlZExlbiA+IGUpCiAJCQlnb3RvIE92ZXJm bG93OwotCQltZW1tb3ZlKHAsIG0tPnUuZmluaXNoZWQudmVyaWZ5LCBtLT51LmZpbmlzaGVkLm4p OwotCQlwICs9IG0tPnUuZmluaXNoZWQubjsKKwkJbWVtbW92ZShwLCBtLT51LmZpbmlzaGVkLCBG aW5pc2hlZExlbik7CisJCXAgKz0gRmluaXNoZWRMZW47CiAJCWJyZWFrOwogCX0KIApAQCAtMTQ5 NSw1MCArMTQ2OSw2IEBACiAJCX0KIAl9CiAKLQlpZih0eXBlID09IEhTU0wyQ2xpZW50SGVsbG8p ewotCQkvKiBDb3BlIHdpdGggYW4gU1NMMyBDbGllbnRIZWxsbyBleHByZXNzZWQgaW4gU1NMMiBy ZWNvcmQgZm9ybWF0LgotCQkJVGhpcyBpcyBzZW50IGJ5IHNvbWUgY2xpZW50cyB0aGF0IHdlIG11 c3QgaW50ZXJvcGVyYXRlCi0JCQl3aXRoLCBzdWNoIGFzIEphdmEncyBKU1NFIGFuZCBNaWNyb3Nv ZnQncyBJbnRlcm5ldCBFeHBsb3Jlci4gKi8KLQkJaW50IG5zaWQsIG5yYW5kb20sIG5jaXBoOwot Ci0JCXAgPSB0bHNSZWFkTihjLCBuKTsKLQkJaWYocCA9PSBuaWwpCi0JCQlyZXR1cm4gMDsKLQkJ bXNnSGFzaChjLCBwLCBuKTsKLQkJbS0+dGFnID0gSENsaWVudEhlbGxvOwotCQlpZihuIDwgMjIp Ci0JCQlnb3RvIFNob3J0OwotCQltLT51LmNsaWVudEhlbGxvLnZlcnNpb24gPSBnZXQxNihwKzEp OwotCQlwICs9IDM7Ci0JCW4gLT0gMzsKLQkJbm4gPSBnZXQxNihwKTsgLyogY2lwaGVyX3NwZWNf bGVuICovCi0JCW5zaWQgPSBnZXQxNihwICsgMik7Ci0JCW5yYW5kb20gPSBnZXQxNihwICsgNCk7 Ci0JCXAgKz0gNjsKLQkJbiAtPSA2OwotCQlpZihuc2lkICE9IDAgCS8qIG5vIHNpZCdzLCBzaW5j ZSBzaG91bGRuJ3QgcmVzdGFydCB1c2luZyBzc2wyIGhlYWRlciAqLwotCQl8fCBucmFuZG9tIDwg MTYgfHwgbm4gJSAzIHx8IG4gLSBucmFuZG9tIDwgbm4pCi0JCQlnb3RvIEVycjsKLQkJLyogaWdu b3JlIHNzbDIgY2lwaGVycyBhbmQgbG9vayBmb3IgezB4MDAsIHNzbDMgY2lwaGVyfSAqLwotCQlu Y2lwaCA9IDA7Ci0JCWZvcihpID0gMDsgaSA8IG5uOyBpICs9IDMpCi0JCQlpZihwW2ldID09IDAp Ci0JCQkJbmNpcGgrKzsKLQkJbS0+dS5jbGllbnRIZWxsby5jaXBoZXJzID0gbmV3aW50cyhuY2lw aCk7Ci0JCW5jaXBoID0gMDsKLQkJZm9yKGkgPSAwOyBpIDwgbm47IGkgKz0gMykKLQkJCWlmKHBb aV0gPT0gMCkKLQkJCQltLT51LmNsaWVudEhlbGxvLmNpcGhlcnMtPmRhdGFbbmNpcGgrK10gPSBn ZXQxNigmcFtpICsgMV0pOwotCQlwICs9IG5uOwotCQltLT51LmNsaWVudEhlbGxvLnNpZCA9IG1h a2VieXRlcyhuaWwsIDApOwotCQlpZihucmFuZG9tID4gUmFuZG9tU2l6ZSkKLQkJCW5yYW5kb20g PSBSYW5kb21TaXplOwotCQltZW1zZXQobS0+dS5jbGllbnRIZWxsby5yYW5kb20sIDAsIFJhbmRv bVNpemUgLSBucmFuZG9tKTsKLQkJbWVtbW92ZSgmbS0+dS5jbGllbnRIZWxsby5yYW5kb21bUmFu ZG9tU2l6ZSAtIG5yYW5kb21dLCBwLCBucmFuZG9tKTsKLQkJbS0+dS5jbGllbnRIZWxsby5jb21w cmVzc29ycyA9IG5ld2J5dGVzKDEpOwotCQltLT51LmNsaWVudEhlbGxvLmNvbXByZXNzb3JzLT5k YXRhWzBdID0gQ29tcHJlc3Npb25OdWxsOwotCQlnb3RvIE9rOwotCX0KIAltc2dIYXNoKGMsIHAs IDQpOwogCiAJcCA9IHRsc1JlYWROKGMsIG4pOwpAQCAtMTc5MCwxMCArMTcyMCw4IEBACiAJCQln b3RvIFNob3J0OwogCQlpZihpc0VDREhFKGMtPmNpcGhlcikpCiAJCQlubiA9ICpwKyssIG4tLTsK LQkJZWxzZSBpZihpc0RIRShjLT5jaXBoZXIpIHx8IGMtPnZlcnNpb24gIT0gU1NMM1ZlcnNpb24p Ci0JCQlubiA9IGdldDE2KHApLCBwICs9IDIsIG4gLT0gMjsKIAkJZWxzZQotCQkJbm4gPSBuOwor CQkJbm4gPSBnZXQxNihwKSwgcCArPSAyLCBuIC09IDI7CiAJCWlmKG4gPCBubikKIAkJCWdvdG8g U2hvcnQ7CiAJCW0tPnUuY2xpZW50S2V5RXhjaGFuZ2Uua2V5ID0gbWFrZWJ5dGVzKHAsIG5uKTsK QEAgLTE4MDAsMTcgKzE3MjgsMTYgQEAKIAkJbiAtPSBubjsKIAkJYnJlYWs7CiAJY2FzZSBIRmlu aXNoZWQ6Ci0JCW0tPnUuZmluaXNoZWQubiA9IGMtPmZpbmlzaGVkLm47Ci0JCWlmKG4gPCBtLT51 LmZpbmlzaGVkLm4pCisJCWlmKG4gPCBGaW5pc2hlZExlbikKIAkJCWdvdG8gU2hvcnQ7Ci0JCW1l bW1vdmUobS0+dS5maW5pc2hlZC52ZXJpZnksIHAsIG0tPnUuZmluaXNoZWQubik7Ci0JCW4gLT0g bS0+dS5maW5pc2hlZC5uOworCQltZW1tb3ZlKG0tPnUuZmluaXNoZWQsIHAsIEZpbmlzaGVkTGVu KTsKKwkJbiAtPSBGaW5pc2hlZExlbjsKIAkJYnJlYWs7CiAJfQogCiAJaWYobiAhPSAwICYmIHR5 cGUgIT0gSENsaWVudEhlbGxvICYmIHR5cGUgIT0gSFNlcnZlckhlbGxvKQogCQlnb3RvIFNob3J0 OwotT2s6CisKIAlpZihjLT50cmFjZSkKIAkJYy0+dHJhY2UoInJlY3YgJXMiLCBtc2dQcmludCgo Y2hhciopYy0+c2VuZHAsICZjLT5idWZbc2l6ZW9mKGMtPmJ1ZildIC0gYy0+c2VuZHAsIG0pKTsK IAlyZXR1cm4gMTsKQEAgLTIwMDAsOCArMTkyNyw4IEBACiAJCWJyZWFrOwogCWNhc2UgSEZpbmlz aGVkOgogCQlicyA9IHNlcHJpbnQoYnMsIGJlLCAiSEZpbmlzaGVkXG4iKTsKLQkJZm9yKGk9MDsg aTxtLT51LmZpbmlzaGVkLm47IGkrKykKLQkJCWJzID0gc2VwcmludChicywgYmUsICIlLjJ4Iiwg bS0+dS5maW5pc2hlZC52ZXJpZnlbaV0pOworCQlmb3IoaT0wOyBpPEZpbmlzaGVkTGVuOyBpKysp CisJCQlicyA9IHNlcHJpbnQoYnMsIGJlLCAiJS4yeCIsIG0tPnUuZmluaXNoZWRbaV0pOwogCQli cyA9IHNlcHJpbnQoYnMsIGJlLCAiXG4iKTsKIAkJYnJlYWs7CiAJfQpAQCAtMjAzNiwyMyArMTk2 MywxMSBAQAogCQlyZXR1cm4gLTE7CiAJaWYodmVyc2lvbiA+IGMtPnZlcnNpb24pCiAJCXZlcnNp b24gPSBjLT52ZXJzaW9uOwotCWlmKHZlcnNpb24gPT0gU1NMM1ZlcnNpb24pIHsKKwllbHNlCiAJ CWMtPnZlcnNpb24gPSB2ZXJzaW9uOwotCQljLT5maW5pc2hlZC5uID0gU1NMM0ZpbmlzaGVkTGVu OwotCX1lbHNlIHsKLQkJYy0+dmVyc2lvbiA9IHZlcnNpb247Ci0JCWMtPmZpbmlzaGVkLm4gPSBU TFNGaW5pc2hlZExlbjsKLQl9CiAJcmV0dXJuIGZwcmludChjLT5jdGwsICJ2ZXJzaW9uIDB4JXgi LCB2ZXJzaW9uKTsKIH0KIAotLy8gY29uZmlybSB0aGF0IHJlY2VpdmVkIEZpbmlzaGVkIG1lc3Nh Z2UgbWF0Y2hlcyB0aGUgZXhwZWN0ZWQgdmFsdWUKLXN0YXRpYyBpbnQKLWZpbmlzaGVkTWF0Y2go VGxzQ29ubmVjdGlvbiAqYywgRmluaXNoZWQgKmYpCi17Ci0JcmV0dXJuIHRzbWVtY21wKGYtPnZl cmlmeSwgYy0+ZmluaXNoZWQudmVyaWZ5LCBmLT5uKSA9PSAwOwotfQotCiAvLyBmcmVlIG1lbW9y eSBhc3NvY2lhdGVkIHdpdGggVGxzQ29ubmVjdGlvbiBzdHJ1Y3QKIC8vCQkoYnV0IGRvbid0IGNs b3NlIHRoZSBUTFMgY2hhbm5lbCBpdHNlbGYpCiBzdGF0aWMgdm9pZApAQCAtMjM5MCw2OCArMjMw NSw2IEBACiAJCWhtYWNfc2hhMl8yNTYsIFNIQTJfMjU2ZGxlbik7CiB9CiAKLXN0YXRpYyB2b2lk Ci1zc2xQUkYodWNoYXIgKmJ1ZiwgaW50IG5idWYsIHVjaGFyICprZXksIGludCBua2V5LCBjaGFy ICpsYWJlbCwgdWNoYXIgKnNlZWQsIGludCBuc2VlZCkKLXsKLQl1Y2hhciBzaGExZGlnW1NIQTFk bGVuXSwgbWQ1ZGlnW01ENWRsZW5dLCB0bXBbMjZdOwotCURpZ2VzdFN0YXRlICpzOwotCWludCBp LCBuLCBsZW47Ci0KLQlVU0VEKGxhYmVsKTsKLQlsZW4gPSAxOwotCXdoaWxlKG5idWYgPiAwKXsK LQkJaWYobGVuID4gMjYpCi0JCQlyZXR1cm47Ci0JCWZvcihpID0gMDsgaSA8IGxlbjsgaSsrKQot CQkJdG1wW2ldID0gJ0EnIC0gMSArIGxlbjsKLQkJcyA9IHNoYTEodG1wLCBsZW4sIG5pbCwgbmls KTsKLQkJcyA9IHNoYTEoa2V5LCBua2V5LCBuaWwsIHMpOwotCQlzaGExKHNlZWQsIG5zZWVkLCBz aGExZGlnLCBzKTsKLQkJcyA9IG1kNShrZXksIG5rZXksIG5pbCwgbmlsKTsKLQkJbWQ1KHNoYTFk aWcsIFNIQTFkbGVuLCBtZDVkaWcsIHMpOwotCQluID0gTUQ1ZGxlbjsKLQkJaWYobiA+IG5idWYp Ci0JCQluID0gbmJ1ZjsKLQkJbWVtbW92ZShidWYsIG1kNWRpZywgbik7Ci0JCWJ1ZiArPSBuOwot CQluYnVmIC09IG47Ci0JCWxlbisrOwotCX0KLX0KLQotc3RhdGljIHZvaWQKLXNzbFNldEZpbmlz aGVkKFRsc1NlYyAqc2VjLCBIYW5kc2hha2VIYXNoIGhzaCwgdWNoYXIgKmZpbmlzaGVkLCBpbnQg aXNjbGllbnQpCi17Ci0JRGlnZXN0U3RhdGUgKnM7Ci0JdWNoYXIgaDBbTUQ1ZGxlbl0sIGgxW1NI QTFkbGVuXSwgcGFkWzQ4XTsKLQljaGFyICpsYWJlbDsKLQotCWlmKGlzY2xpZW50KQotCQlsYWJl bCA9ICJDTE5UIjsKLQllbHNlCi0JCWxhYmVsID0gIlNSVlIiOwotCi0JbWQ1KCh1Y2hhciopbGFi ZWwsIDQsIG5pbCwgJmhzaC5tZDUpOwotCW1kNShzZWMtPnNlYywgTWFzdGVyU2VjcmV0U2l6ZSwg bmlsLCAmaHNoLm1kNSk7Ci0JbWVtc2V0KHBhZCwgMHgzNiwgNDgpOwotCW1kNShwYWQsIDQ4LCBu aWwsICZoc2gubWQ1KTsKLQltZDUobmlsLCAwLCBoMCwgJmhzaC5tZDUpOwotCW1lbXNldChwYWQs IDB4NUMsIDQ4KTsKLQlzID0gbWQ1KHNlYy0+c2VjLCBNYXN0ZXJTZWNyZXRTaXplLCBuaWwsIG5p bCk7Ci0JcyA9IG1kNShwYWQsIDQ4LCBuaWwsIHMpOwotCW1kNShoMCwgTUQ1ZGxlbiwgZmluaXNo ZWQsIHMpOwotCi0Jc2hhMSgodWNoYXIqKWxhYmVsLCA0LCBuaWwsICZoc2guc2hhMSk7Ci0Jc2hh MShzZWMtPnNlYywgTWFzdGVyU2VjcmV0U2l6ZSwgbmlsLCAmaHNoLnNoYTEpOwotCW1lbXNldChw YWQsIDB4MzYsIDQwKTsKLQlzaGExKHBhZCwgNDAsIG5pbCwgJmhzaC5zaGExKTsKLQlzaGExKG5p bCwgMCwgaDEsICZoc2guc2hhMSk7Ci0JbWVtc2V0KHBhZCwgMHg1QywgNDApOwotCXMgPSBzaGEx KHNlYy0+c2VjLCBNYXN0ZXJTZWNyZXRTaXplLCBuaWwsIG5pbCk7Ci0JcyA9IHNoYTEocGFkLCA0 MCwgbmlsLCBzKTsKLQlzaGExKGgxLCBTSEExZGxlbiwgZmluaXNoZWQgKyBNRDVkbGVuLCBzKTsK LX0KLQogLy8gZmlsbCAiZmluaXNoZWQiIGFyZyB3aXRoIG1kNShhcmdzKV5zaGExKGFyZ3MpCiBz dGF0aWMgdm9pZAogdGxzMTBTZXRGaW5pc2hlZChUbHNTZWMgKnNlYywgSGFuZHNoYWtlSGFzaCBo c2gsIHVjaGFyICpmaW5pc2hlZCwgaW50IGlzY2xpZW50KQpAQCAtMjQ2MCw2ICsyMzEzLDggQEAK IAljaGFyICpsYWJlbDsKIAogCS8vIGdldCBjdXJyZW50IGhhc2ggdmFsdWUsIGJ1dCBhbGxvdyBm dXJ0aGVyIG1lc3NhZ2VzIHRvIGJlIGhhc2hlZCBpbgorCWhzaC5tZDUubWFsbG9jZWQgPSAwOwor CWhzaC5zaGExLm1hbGxvY2VkID0gMDsKIAltZDUobmlsLCAwLCBoLCAmaHNoLm1kNSk7CiAJc2hh MShuaWwsIDAsIGgrTUQ1ZGxlbiwgJmhzaC5zaGExKTsKIApAQCAtMjQ2Nyw3ICsyMzIyLDcgQEAK IAkJbGFiZWwgPSAiY2xpZW50IGZpbmlzaGVkIjsKIAllbHNlCiAJCWxhYmVsID0gInNlcnZlciBm aW5pc2hlZCI7Ci0JdGxzMTBQUkYoZmluaXNoZWQsIFRMU0ZpbmlzaGVkTGVuLCBzZWMtPnNlYywg TWFzdGVyU2VjcmV0U2l6ZSwgbGFiZWwsIGgsIHNpemVvZihoKSk7CisJdGxzMTBQUkYoZmluaXNo ZWQsIEZpbmlzaGVkTGVuLCBzZWMtPnNlYywgTWFzdGVyU2VjcmV0U2l6ZSwgbGFiZWwsIGgsIHNp emVvZihoKSk7CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC0yNDc3LDYgKzIzMzIsNyBAQAogCWNoYXIg KmxhYmVsOwogCiAJLy8gZ2V0IGN1cnJlbnQgaGFzaCB2YWx1ZSwgYnV0IGFsbG93IGZ1cnRoZXIg bWVzc2FnZXMgdG8gYmUgaGFzaGVkIGluCisJaHNoLnNoYTJfMjU2Lm1hbGxvY2VkID0gMDsKIAlz aGEyXzI1NihuaWwsIDAsIHNlZWQsICZoc2guc2hhMl8yNTYpOwogCiAJaWYoaXNjbGllbnQpCkBA IC0yNDgzLDcgKzIzMzksNyBAQAogCQlsYWJlbCA9ICJjbGllbnQgZmluaXNoZWQiOwogCWVsc2UK IAkJbGFiZWwgPSAic2VydmVyIGZpbmlzaGVkIjsKLQl0bHMxMlBSRihmaW5pc2hlZCwgVExTRmlu aXNoZWRMZW4sIHNlYy0+c2VjLCBNYXN0ZXJTZWNyZXRTaXplLCBsYWJlbCwgc2VlZCwgU0hBMl8y NTZkbGVuKTsKKwl0bHMxMlBSRihmaW5pc2hlZCwgRmluaXNoZWRMZW4sIHNlYy0+c2VjLCBNYXN0 ZXJTZWNyZXRTaXplLCBsYWJlbCwgc2VlZCwgU0hBMl8yNTZkbGVuKTsKIH0KIAogc3RhdGljIHZv aWQKQEAgLTI2MzAsMzQgKzI0ODYsMTQgQEAKIAlyZXR1cm4gZXBtOwogfQogCi1zdGF0aWMgaW50 Ci10bHNTZWNGaW5pc2hlZChUbHNTZWMgKnNlYywgSGFuZHNoYWtlSGFzaCBoc2gsIHVjaGFyICpm aW4sIGludCBuZmluLCBpbnQgaXNjbGllbnQpCi17Ci0JaWYoc2VjLT5uZmluICE9IG5maW4pewot CQl3ZXJyc3RyKCJpbnZhbGlkIGZpbmlzaGVkIGV4Y2hhbmdlIik7Ci0JCXJldHVybiAtMTsKLQl9 Ci0JaHNoLm1kNS5tYWxsb2NlZCA9IDA7Ci0JaHNoLnNoYTEubWFsbG9jZWQgPSAwOwotCWhzaC5z aGEyXzI1Ni5tYWxsb2NlZCA9IDA7Ci0JKCpzZWMtPnNldEZpbmlzaGVkKShzZWMsIGhzaCwgZmlu LCBpc2NsaWVudCk7Ci0JcmV0dXJuIDA7Ci19Ci0KIHN0YXRpYyB2b2lkCiB0bHNTZWNWZXJzKFRs c1NlYyAqc2VjLCBpbnQgdikKIHsKLQlpZih2ID09IFNTTDNWZXJzaW9uKXsKLQkJc2VjLT5zZXRG aW5pc2hlZCA9IHNzbFNldEZpbmlzaGVkOwotCQlzZWMtPm5maW4gPSBTU0wzRmluaXNoZWRMZW47 Ci0JCXNlYy0+cHJmID0gc3NsUFJGOwotCX1lbHNlIGlmKHYgPCBUTFMxMlZlcnNpb24pIHsKKwlp Zih2IDwgVExTMTJWZXJzaW9uKXsKIAkJc2VjLT5zZXRGaW5pc2hlZCA9IHRsczEwU2V0RmluaXNo ZWQ7Ci0JCXNlYy0+bmZpbiA9IFRMU0ZpbmlzaGVkTGVuOwogCQlzZWMtPnByZiA9IHRsczEwUFJG OwotCX1lbHNlIHsKKwl9ZWxzZXsKIAkJc2VjLT5zZXRGaW5pc2hlZCA9IHRsczEyU2V0RmluaXNo ZWQ7Ci0JCXNlYy0+bmZpbiA9IFRMU0ZpbmlzaGVkTGVuOwogCQlzZWMtPnByZiA9IHRsczEyUFJG OwogCX0KIH0K --000000000000c4c41105cf0348e0--