Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vfakK-003AIR-1E for pgsql-hackers@arkaria.postgresql.org; Tue, 13 Jan 2026 09:31:30 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vfakJ-003qfj-1X for pgsql-hackers@arkaria.postgresql.org; Tue, 13 Jan 2026 09:31:27 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vfakI-003qfb-2Y for pgsql-hackers@lists.postgresql.org; Tue, 13 Jan 2026 09:31:27 +0000 Received: from mail-ej1-x636.google.com ([2a00:1450:4864:20::636]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vfakF-000Bkw-1N for pgsql-hackers@lists.postgresql.org; Tue, 13 Jan 2026 09:31:26 +0000 Received: by mail-ej1-x636.google.com with SMTP id a640c23a62f3a-b8722834679so236509766b.0 for ; Tue, 13 Jan 2026 01:31:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jeltef.nl; s=google; t=1768296680; x=1768901480; darn=lists.postgresql.org; h=in-reply-to:references:from:to:subject:cc:message-id:date :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=+alwU6suJmbA1Y1k0O5tCUnPmfS+y7S28HgzWdaiSXc=; b=j4u853kjnU5apVFI0e3tbaiw19wy9APguerCGN5L1kQEP5L91x75Nft4cjjUSozlrn Ezqh+qrPvOHV9igIO4/aYk0FwkVYwZ+4TLob7mMtqavx/62lxuOZBaj5jDsXClTYt1m4 aNAOqsVy9iEMX1FqGnRIhRmGSVbbycKldXGA3jgoPen3zlIhBCtvILtVp6doQ0YBDrBM 2hOyhcJ/DSpyHnLz09v3rRXyaI0Cwy85fXrWhuBj2y09RAYi6JRW+Krb/xFagQ1t9Gk1 OMbGB9hCankkl2F+ahq6/u6sQf/zjQYK15i7G5iiMyD/g1i63Tu7lb0Vk9g9D9Hic9ZW WoVQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768296680; x=1768901480; h=in-reply-to:references:from:to:subject:cc:message-id:date :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=+alwU6suJmbA1Y1k0O5tCUnPmfS+y7S28HgzWdaiSXc=; b=JUKswf6Gje2ocZtlelA5YSuCtZ+pv5IgoL2yi4J0CEDDw/Al+J21y/n1pjd1CBZuF/ crexEhZ0vyIdQySuYK17Yq58Zar8uuT+upGbVs4Ka6gLGv2dEVRfX9pU0grtNgfTF9ys BXgvZuacbZGxmIXGzG5+1gJivB4hRUrqf6lFkoktoX5HFJL40hoYBUGieednEaMBAHkK Hy7ida9D/urs/1OWDJUz7kOvq7FSYnS/keOBnBp9LqVewq3adqp1MEkFKxSgwU6pdXrQ iJ12HcrWexGd4BFMS2H4AB/9Il/Sbs93cxoxrKr9a08w0gDO+GDaDHKMqzcaIwbY8ODL JuSQ== X-Forwarded-Encrypted: i=1; AJvYcCUTyYy60K9oRvF8yEl6rZLzv0RpuVdzjDVdjvkf31NV8Phjc1ptpxm0jG0u+CJ0A55d7L4cUTycow+XL3k9@lists.postgresql.org X-Gm-Message-State: AOJu0Yz9ucVr0I+V0hSYXLdj26gc0dnIU7BzcNvYCLeKhgYdKVAFsBEX QbzeoO/KZ9nekhUQpQ0dgsXMaJKRWfPTl+tT6dk8Md7NPRGEpJTd72FBBTkuo/VwEJI= X-Gm-Gg: AY/fxX4Nl1b/iVyKAz4fP1KTqAG5/V+NGWPOjPtEjSUJq+VC5dCzNRs6H8Zz5QJYbeW 7lNET6ZoWi/zlHS0a21rqXWdp1qJWcfgzO7D4jhZ17FV+7DIGTXdpEuGWeqBCe9kWEHE7lp0Paa zKTvexyZwl/pZS/vGkY8pUBKNWvJMA+1nyDrlFUd1DQuYmR/MgUK8AiE1uupYNhUTcBN6dV5rR1 nqIZJiu2QRHZ83KTbJgQfDD5IXyXu3ZWrLbIGRmt+c1hvWbM5C+oiXjIAgmQEGQLkuxH6tkMS+i 7MVr2bvexnuCK71x8IIQx00cR1+lbYibrrYLgSgkVTcoKTDkGzBvekx2E4OA+oIVDMLapzhRkzn XN6v8F4gbD2G5uR7vufM2Vun/VPWOcWb2EWSVJE0PC5/Znmu20L5Z1QsUSWPjrPdB9OMc9TLUSM wyYJxokEf6L2dASxlCJpf+Z1xCo/8gqyVTYtFeZdlkDfuqFluD X-Google-Smtp-Source: AGHT+IHPVIbQ48I6O+5OhRPbkE9otyTw/5kDF1aD72oQMw/wyx4ydYplxcYLBOGXup/DbCIEiTmvHw== X-Received: by 2002:a17:907:a4a:b0:b7c:e320:5228 with SMTP id a640c23a62f3a-b84451bf352mr1875948566b.22.1768296679880; Tue, 13 Jan 2026 01:31:19 -0800 (PST) Received: from localhost (037153217001.static.ipv4.heldenvannu.net. [37.153.217.1]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b86fc303d7esm966253066b.2.2026.01.13.01.31.18 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 13 Jan 2026 01:31:18 -0800 (PST) Content-Type: multipart/mixed; boundary=b61100c90bc4723abf16aa8e9e972a6bf2b76b698cfd62dcd856536e7901 Mime-Version: 1.0 Date: Tue, 13 Jan 2026 10:31:18 +0100 Message-Id: Cc: "Thomas Munro" , Subject: Re: Safer hash table initialization macro To: "Bertrand Drouvot" From: "Jelte Fennema-Nio" X-Mailer: aerc 0.20.1-31-gf6db7c329ce0 References: In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --b61100c90bc4723abf16aa8e9e972a6bf2b76b698cfd62dcd856536e7901 Content-Type: multipart/alternative; boundary=6090e27e465c739ce541d6cdd80da170d82a91b5920bc3f4b0ff7b283dce --6090e27e465c739ce541d6cdd80da170d82a91b5920bc3f4b0ff7b283dce Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Content-Type: text/plain; charset=UTF-8; format=Flowed On Tue Jan 13, 2026 at 8:27 AM CET, Bertrand Drouvot wrote: > I've probably a too paranoid concern: what if someone use char[N] to stor= e > binary stuff with embedded null? That would detect it as string and then > make use of strncmp() and then would provide incorrect result. > > While the risk is probably very low, I think it is there. Added a warning in the comment for these macros. For non of our usages this was the case (i.e. the char arrays were all storing null terminated strings). So I'm not too worried about this being a problem in practice. Especially because in most cases there will be no null byte in the key, and instead you'll start reading out of bounds, which will cause problems pretty much immediately during development. > =3D=3D=3D 2 > > The patch introduces foreach_hash() but the foreach_hash_with_hash_value(= ) > counterpart seems missing. It could be used in TypeCacheTypCallback() and > InvalidateAttoptCacheCallback(). > > I think that we could add it or make the new hash_seq_new() accept an ext= ra > hashvalue parameter? (when set to 0 would call hash_seq_init() and > hash_seq_init_with_hash_value() otherwise? I'm not sure it's worth adding that macro. Given there's only two usages of this function inside our codebase, and I don't expect extensions to use this low level one. Especially, because to make this macro nice to use in the two cases that it would apply to we'd have to make it treat 0 as a special value. > Some minor comments: fixed all of these. Finally, I converted the last couple of hash_seq_init stragglers (some I had missed/were added) and others needed the now newly added foreach_hash_reset macro to be converted. --6090e27e465c739ce541d6cdd80da170d82a91b5920bc3f4b0ff7b283dce-- --b61100c90bc4723abf16aa8e9e972a6bf2b76b698cfd62dcd856536e7901 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v5-0001-Add-hash_make-macros.patch Content-Type: text/x-patch; charset=utf-8; name=v5-0001-Add-hash_make-macros.patch RnJvbSBiNzMyMDkzMmJmZTQ3MzM3OWJjMmFmYmJiMjY1MjcyZjI0NjljZDM2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBUaHUsIDQgRGVjIDIwMjUgMTU6MzU6MDggKzAxMDAKU3ViamVjdDogW1BBVENIIHY1 IDEvNV0gQWRkIGhhc2hfbWFrZSBtYWNyb3MKClRoaXMgYWRkcyBhIGJ1bmNoIG9mIGhhc2hfbWFr ZSogYW5kIHNobWVtX2hhc2hfbWFrZSogbWFjcm9zIHRvIG1ha2UgaXQKZWFzaWVyIGFuZCBsZXNz IGVycm9yIHByb25lIHRvIGNyZWF0ZSBIVEFCcy4gVGhlc2UgbWFjcm9zIGFyZQppbXBsZW1lbnRl ZCBhcyB3cmFwcGVycyBhcm91bmQgdGhlIGFscmVhZHkgZXhpc3RpbmcgaGFzaF9jcmVhdGUKZnVu Y3Rpb24uIFVzaW5nIHRoZSBuZXcgbWFjcm9zIGlzIHByZWZlcnJlZCwgZHVlIHRvIHRoZSBhZGRp dGlvbmFsCmNvbXBpbGUgdGltZSBjaGVja3MgdGhhdCB0aGV5IGJyaW5nLgoKQ28tQXV0aG9yZWQt Qnk6IEJlcnRyYW5kIERyb3V2b3QgPGJlcnRyYW5kZHJvdXZvdC5wZ0BnbWFpbC5jb20+Ci0tLQog c3JjL2JhY2tlbmQvdXRpbHMvaGFzaC9keW5haGFzaC5jIHwgMTA5ICsrKysrKysrKysrKysrKysr KysrCiBzcmMvaW5jbHVkZS9jLmggICAgICAgICAgICAgICAgICAgfCAgMzIgKysrKysrCiBzcmMv aW5jbHVkZS9zdG9yYWdlL3NobWVtLmggICAgICAgfCAgMzIgKysrKysrCiBzcmMvaW5jbHVkZS91 dGlscy9oc2VhcmNoLmggICAgICAgfCAxNjUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKyst CiBzcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCAgfCAgIDEgKwogNSBmaWxlcyBjaGFu Z2VkLCAzMzQgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC91dGlscy9oYXNoL2R5bmFoYXNoLmMgYi9zcmMvYmFja2VuZC91dGlscy9oYXNoL2R5 bmFoYXNoLmMKaW5kZXggMTFmNTc3OGViYTEuLmMwZmFhYWY2MWRhIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC91dGlscy9oYXNoL2R5bmFoYXNoLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvaGFz aC9keW5haGFzaC5jCkBAIC02MzEsNiArNjMxLDExNSBAQCBoYXNoX2NyZWF0ZShjb25zdCBjaGFy ICp0YWJuYW1lLCBpbnQ2NCBuZWxlbSwgY29uc3QgSEFTSENUTCAqaW5mbywgaW50IGZsYWdzKQog CXJldHVybiBoYXNocDsKIH0KIAorLyoKKyAqIGhhc2hfb3B0c19pbml0IC0tIGluaXRpYWxpemUg SEFTSENUTCBhbmQgZmxhZ3MgZnJvbSBIQVNIT1BUUworICoKKyAqIFRoaXMgcHJvY2Vzc2VzIEhB U0hPUFRTIGZpZWxkcyBpbnRvIEhBU0hDVEwgYW5kIGZsYWdzLiBJdCdzIHVzZWQgYnkgY29kZQor ICogdGhhdCBuZWVkcyB0byBjYWxsIHRoZSBsb3ctbGV2ZWwgaGFzaF9jcmVhdGUgZnVuY3Rpb24u CisgKi8KK3ZvaWQKK2hhc2hfb3B0c19pbml0KEhBU0hDVEwgKmN0bCwgaW50ICpmbGFncywKKwkJ CSAgIFNpemUga2V5c2l6ZSwgU2l6ZSBlbnRyeXNpemUsIGJvb2wgc3RyaW5nX2tleSwKKwkJCSAg IGNvbnN0IEhBU0hPUFRTICpvcHRzKQoreworCU1lbVNldChjdGwsIDAsIHNpemVvZigqY3RsKSk7 CisJY3RsLT5rZXlzaXplID0ga2V5c2l6ZTsKKwljdGwtPmVudHJ5c2l6ZSA9IGVudHJ5c2l6ZTsK KworCSpmbGFncyA9IEhBU0hfRUxFTTsKKworCWlmIChvcHRzICE9IE5VTEwgJiYgb3B0cy0+aGFz aCAhPSBOVUxMKQorCXsKKwkJLyogZm9yY2VfYmxvYnMgb25seSBhZmZlY3RzIGRlZmF1bHQgaGFz aCBzZWxlY3Rpb24sIG5vdCBjdXN0b20gaGFzaCAqLworCQlBc3NlcnQoIW9wdHMtPmZvcmNlX2Js b2JzKTsKKwkJY3RsLT5oYXNoID0gb3B0cy0+aGFzaDsKKwkJKmZsYWdzIHw9IEhBU0hfRlVOQ1RJ T047CisJfQorCWVsc2UgaWYgKG9wdHMgIT0gTlVMTCAmJiBvcHRzLT5mb3JjZV9ibG9icykKKwl7 CisJCSpmbGFncyB8PSBIQVNIX0JMT0JTOworCX0KKwllbHNlCisJeworCQkqZmxhZ3MgfD0gc3Ry aW5nX2tleSA/IEhBU0hfU1RSSU5HUyA6IEhBU0hfQkxPQlM7CisJfQorCisJaWYgKG9wdHMgIT0g TlVMTCAmJiBvcHRzLT5tYXRjaCAhPSBOVUxMKQorCXsKKwkJY3RsLT5tYXRjaCA9IG9wdHMtPm1h dGNoOworCQkqZmxhZ3MgfD0gSEFTSF9DT01QQVJFOworCX0KKworCWlmIChvcHRzICE9IE5VTEwg JiYgb3B0cy0+a2V5Y29weSAhPSBOVUxMKQorCXsKKwkJY3RsLT5rZXljb3B5ID0gb3B0cy0+a2V5 Y29weTsKKwkJKmZsYWdzIHw9IEhBU0hfS0VZQ09QWTsKKwl9CisKKwlpZiAob3B0cyAhPSBOVUxM ICYmIG9wdHMtPmFsbG9jICE9IE5VTEwpCisJeworCQljdGwtPmFsbG9jID0gb3B0cy0+YWxsb2M7 CisJCSpmbGFncyB8PSBIQVNIX0FMTE9DOworCX0KKworCWlmIChvcHRzICE9IE5VTEwgJiYgb3B0 cy0+bnVtX3BhcnRpdGlvbnMgPiAwKQorCXsKKwkJY3RsLT5udW1fcGFydGl0aW9ucyA9IG9wdHMt Pm51bV9wYXJ0aXRpb25zOworCQkqZmxhZ3MgfD0gSEFTSF9QQVJUSVRJT047CisJfQorCisJaWYg KG9wdHMgIT0gTlVMTCAmJiBvcHRzLT5maXhlZF9zaXplKQorCQkqZmxhZ3MgfD0gSEFTSF9GSVhF RF9TSVpFOworfQorCisvKgorICogaGFzaF9tYWtlX2ltcGwgLS0gc2ltcGxpZmllZCBoYXNoIHRh YmxlIGNyZWF0aW9uCisgKgorICogVGhpcyBpcyB0aGUgaW1wbGVtZW50YXRpb24gZnVuY3Rpb24g Zm9yIHRoZSBoYXNoX21ha2UoKSBhbmQgaGFzaF9tYWtlX2V4dCgpCisgKiBtYWNyb3MuIEl0IGNy ZWF0ZXMgYSBoYXNoIHRhYmxlIHdpdGggc2Vuc2libGUgZGVmYXVsdHMuCisgKgorICogSWYgc3Ry aW5nX2tleSBpcyB0cnVlLCB0aGUga2V5IGlzIHRyZWF0ZWQgYXMgYSBudWxsLXRlcm1pbmF0ZWQg c3RyaW5nCisgKiAodXNlcyBIQVNIX1NUUklOR1MpLiBPdGhlcndpc2UsIHRoZSBrZXkgaXMgdHJl YXRlZCBhcyBhIGJpbmFyeSBibG9iCisgKiAodXNlcyBIQVNIX0JMT0JTKS4KKyAqCisgKiBQYXNz IE5VTEwgZm9yIG9wdHMgdG8gdXNlIGFsbCBkZWZhdWx0cy4KKyAqLworSFRBQiAqCitoYXNoX21h a2VfaW1wbChjb25zdCBjaGFyICp0YWJuYW1lLCBpbnQ2NCBuZWxlbSwKKwkJCSAgIFNpemUga2V5 c2l6ZSwgU2l6ZSBlbnRyeXNpemUsCisJCQkgICBib29sIHN0cmluZ19rZXksCisJCQkgICBjb25z dCBIQVNIT1BUUyAqb3B0cywKKwkJCSAgIE1lbW9yeUNvbnRleHQgbWN4dCkKK3sKKwlIQVNIQ1RM CQljdGw7CisJaW50CQkJZmxhZ3M7CisKKwloYXNoX29wdHNfaW5pdCgmY3RsLCAmZmxhZ3MsIGtl eXNpemUsIGVudHJ5c2l6ZSwgc3RyaW5nX2tleSwgb3B0cyk7CisKKwljdGwuaGN4dCA9IG1jeHQ7 CisJZmxhZ3MgfD0gSEFTSF9DT05URVhUOworCisJcmV0dXJuIGhhc2hfY3JlYXRlKHRhYm5hbWUs IG5lbGVtLCAmY3RsLCBmbGFncyk7Cit9CisKKy8qCisgKiBoYXNoX21ha2VfZm5faW1wbCAtLSBj cmVhdGUgYSBoYXNoIHRhYmxlIHdpdGggY3VzdG9tIGZ1bmN0aW9ucworICovCitIVEFCICoKK2hh c2hfbWFrZV9mbl9pbXBsKGNvbnN0IGNoYXIgKnRhYm5hbWUsIGludDY0IG5lbGVtLAorCQkJCSAg U2l6ZSBrZXlzaXplLCBTaXplIGVudHJ5c2l6ZSwgYm9vbCBzdHJpbmdfa2V5LAorCQkJCSAgSGFz aFZhbHVlRnVuYyBoYXNoZm4sIEhhc2hDb21wYXJlRnVuYyBtYXRjaGZuLAorCQkJCSAgTWVtb3J5 Q29udGV4dCBtY3h0KQoreworCUhBU0hPUFRTCW9wdHMgPSB7CisJCS5oYXNoID0gaGFzaGZuLAor CQkubWF0Y2ggPSBtYXRjaGZuCisJfTsKKworCXJldHVybiBoYXNoX21ha2VfaW1wbCh0YWJuYW1l LCBuZWxlbSwga2V5c2l6ZSwgZW50cnlzaXplLAorCQkJCQkJICBzdHJpbmdfa2V5LCAmb3B0cywg bWN4dCk7Cit9CisKIC8qCiAgKiBTZXQgZGVmYXVsdCBIQVNISERSIHBhcmFtZXRlcnMuCiAgKi8K ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2MuaCBiL3NyYy9pbmNsdWRlL2MuaAppbmRleCAzMzVh ZjMzNTJkMS4uYzY1MGE3Nzk1YjMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2MuaAorKysgYi9z cmMvaW5jbHVkZS9jLmgKQEAgLTgyLDYgKzgyLDEyIEBACiAjZW5kaWYKICNpZmRlZiBFTkFCTEVf TkxTCiAjaW5jbHVkZSA8bGliaW50bC5oPgorI2VuZGlmCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4 dGVybiAiQysrIgoreworI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgorfQogI2VuZGlmCiAKICAvKiBQ dWxsIGluIGZ1bmRhbWVudGFsIHN5bWJvbHMgdGhhdCB3ZSBhbHNvIGV4cG9zZSB0byBhcHBsaWNh dGlvbnMgKi8KQEAgLTM3Myw2ICszNzksMzIgQEAKICNkZWZpbmUgSEFWRV9QR19JTlRFR0VSX0NP TlNUQU5UX1AKICNlbmRpZgogCisvKgorICogcGdfZXhwcl9oYXNfdHlwZV9wKGV4cHIsIHR5cGUp IC0gQ2hlY2sgaWYgYW4gZXhwcmVzc2lvbiBoYXMgYSBzcGVjaWZpYyB0eXBlLgorICoKKyAqIFNp bWlsYXIgdG8gcGdfaXNfc2FtZSwgYnV0IHRha2VzIGFuIGV4cHJlc3Npb24gaW5zdGVhZCBvZiBh IHR5cGUgYXMgdGhlCisgKiBmaXJzdCBhcmd1bWVudC4gVGhpcyBpcyB1c2VmdWwgd2hlbiB5b3Ug aGF2ZSBhbiBleHByZXNzaW9uIGFuZCB3YW50IHRvCisgKiBjaGVjayBpdHMgdHlwZSB3aXRob3V0 IG5lZWRpbmcgdHlwZW9mL2RlY2x0eXBlLgorICovCisjaWYgZGVmaW5lZChfX2NwbHVzcGx1cykK KyNkZWZpbmUgcGdfZXhwcl9oYXNfdHlwZV9wKGV4cHIsIHR5cGUpIChzdGQ6OmlzX3NhbWU8ZGVj bHR5cGUoZXhwciksIHR5cGU+Ojp2YWx1ZSkKKyNlbHNlCisjZGVmaW5lIHBnX2V4cHJfaGFzX3R5 cGVfcChleHByLCB0eXBlKSBcCisJX0dlbmVyaWMoKGV4cHIpLCB0eXBlOiAxLCBkZWZhdWx0OiAw KQorI2VuZGlmCisKKy8qCisgKiBwZ19udWxscHRyX29mKHR5cGUpIC0gQ3JlYXRlIGEgbnVsbCBw b2ludGVyIG9mIHRoZSBnaXZlbiB0eXBlLgorICoKKyAqIEluIEMsICh0eXBlICopIE5VTEwgd29y a3MgZm9yIGFsbCB0eXBlcy4gSW4gQysrLCB0aGlzIHN5bnRheCBmYWlscyBmb3IgdHlwZXMKKyAq IGNvbnRhaW5pbmcgYnJhY2tldHMgKGxpa2UgY2hhcls2NF0pLCBzbyB3ZSB1c2Ugc3RkOjphZGRf cG9pbnRlcl90IGluc3RlYWQuCisgKi8KKyNpZiBkZWZpbmVkKF9fY3BsdXNwbHVzKQorI2RlZmlu ZSBwZ19udWxscHRyX29mKHR5cGUpIChzdGF0aWNfY2FzdDxzdGQ6OmFkZF9wb2ludGVyX3Q8dHlw ZT4+KG51bGxwdHIpKQorI2Vsc2UKKyNkZWZpbmUgcGdfbnVsbHB0cl9vZih0eXBlKSAoKHR5cGUg KikgTlVMTCkKKyNlbmRpZgorCiAvKgogICogcGdfYXNzdW1lKGV4cHIpIHN0YXRlcyB0aGF0IHdl IGFzc3VtZSBgZXhwcmAgdG8gZXZhbHVhdGUgdG8gdHJ1ZS4gSW4gYXNzZXJ0CiAgKiBlbmFibGVk IGJ1aWxkcyBwZ19hc3N1bWUoKSBpcyB0dXJuZWQgaW50byBhbiBhc3NlcnRpb24sIGluIG9wdGlt aXplZCBidWlsZHMKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc2htZW0uaCBiL3Ny Yy9pbmNsdWRlL3N0b3JhZ2Uvc2htZW0uaAppbmRleCBlNzFhNTFkZmU4NC4uMmEyZDI0Y2NmNjAg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc2htZW0uaAorKysgYi9zcmMvaW5jbHVk ZS9zdG9yYWdlL3NobWVtLmgKQEAgLTQzLDYgKzQzLDM4IEBAIGV4dGVybiBTaXplIG11bF9zaXpl KFNpemUgczEsIFNpemUgczIpOwogCiBleHRlcm4gUEdETExJTVBPUlQgU2l6ZSBwZ19nZXRfc2ht ZW1fcGFnZXNpemUodm9pZCk7CiAKKy8qCisgKiBTaW1wbGlmaWVkIHNoYXJlZCBtZW1vcnkgaGFz aCB0YWJsZSBjcmVhdGlvbiBBUEkKKyAqCisgKiBUaGVzZSBtYWNyb3MgcHJvdmlkZSBhIHNpbXBs ZXIgd2F5IHRvIGNyZWF0ZSBzaGFyZWQgbWVtb3J5IGhhc2ggdGFibGVzIGJ5OgorICogLSBBdXRv bWF0aWNhbGx5IGRldGVybWluaW5nIGtleXNpemUgYW5kIGVudHJ5c2l6ZSBmcm9tIHR5cGUgaW5m b3JtYXRpb24KKyAqIC0gQXV0b21hdGljYWxseSBjaG9vc2luZyBIQVNIX1NUUklOR1MgdnMgSEFT SF9CTE9CUyBiYXNlZCBvbiBrZXkgdHlwZQorICogLSBFbGltaW5hdGluZyB0aGUgbmVlZCBmb3Ig ZXhwbGljaXQgSEFTSENUTCBhbmQgZmxhZ3MgaW4gY29tbW9uIGNhc2VzCisgKgorICogVXNhZ2U6 CisgKiAgIEhUQUIgKmhhc2ggPSBzaG1lbV9oYXNoX21ha2UoTXlFbnRyeSwga2V5ZmllbGQsICJN eSBoYXNoIiwgNjQsIDEyOCk7CisgKgorICogRm9yIG1vcmUgb3B0aW9ucyAocGFydGl0aW9uaW5n LCBmaXhlZCBzaXplLCBjdXN0b20gaGFzaCk6CisgKiAgIEhBU0hPUFRTIG9wdHMgPSB7Lm51bV9w YXJ0aXRpb25zID0gMTYsIC5maXhlZF9zaXplID0gdHJ1ZX07CisgKiAgIEhUQUIgKmhhc2ggPSBz aG1lbV9oYXNoX21ha2VfZXh0KE15RW50cnksIGtleWZpZWxkLCAiTXkgaGFzaCIsIDY0LCAxMjgs ICZvcHRzKTsKKyAqLworI2RlZmluZSBzaG1lbV9oYXNoX21ha2UoZW50cnl0eXBlLCBrZXltZW1i ZXIsIHRhYm5hbWUsIGluaXRfc2l6ZSwgbWF4X3NpemUpIFwKKwlzaG1lbV9oYXNoX21ha2VfZXh0 KGVudHJ5dHlwZSwga2V5bWVtYmVyLCB0YWJuYW1lLCBpbml0X3NpemUsIG1heF9zaXplLCBOVUxM KQorCisjZGVmaW5lIHNobWVtX2hhc2hfbWFrZV9leHQoZW50cnl0eXBlLCBrZXltZW1iZXIsIHRh Ym5hbWUsIGluaXRfc2l6ZSwgbWF4X3NpemUsIG9wdHMpIFwKKwkoU3RhdGljQXNzZXJ0RXhwcihv ZmZzZXRvZihlbnRyeXR5cGUsIGtleW1lbWJlcikgPT0gMCwgXAorCQkJCQkJICNrZXltZW1iZXIg IiBtdXN0IGJlIGZpcnN0IG1lbWJlciBpbiAiICNlbnRyeXR5cGUpLCBcCisJc2htZW1faGFzaF9t YWtlX2ltcGwoIFwKKwkJKHRhYm5hbWUpLCAoaW5pdF9zaXplKSwgKG1heF9zaXplKSwgXAorCQlz aXplb2YoKChlbnRyeXR5cGUgKikwKS0+a2V5bWVtYmVyKSwgXAorCQlzaXplb2YoZW50cnl0eXBl KSwgXAorCQlIQVNIX0tFWV9BU19TVFJJTkcoZW50cnl0eXBlLCBrZXltZW1iZXIpLCBcCisJCShv cHRzKSkpCisKK2V4dGVybiBIVEFCICpzaG1lbV9oYXNoX21ha2VfaW1wbChjb25zdCBjaGFyICpu YW1lLCBpbnQ2NCBpbml0X3NpemUsIGludDY0IG1heF9zaXplLAorCQkJCQkJCQkgIFNpemUga2V5 c2l6ZSwgU2l6ZSBlbnRyeXNpemUsIGJvb2wgc3RyaW5nX2tleSwKKwkJCQkJCQkJICBjb25zdCBI QVNIT1BUUyAqb3B0cyk7CisKIC8qIGlwY2kuYyAqLwogZXh0ZXJuIHZvaWQgUmVxdWVzdEFkZGlu U2htZW1TcGFjZShTaXplIHNpemUpOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9o c2VhcmNoLmggYi9zcmMvaW5jbHVkZS91dGlscy9oc2VhcmNoLmgKaW5kZXggY2RjNTMwZmI3MzIu LmE5ZGZmMGZjMGRjIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9oc2VhcmNoLmgKKysr IGIvc3JjL2luY2x1ZGUvdXRpbHMvaHNlYXJjaC5oCkBAIC0xNSw2ICsxNSw5IEBACiAjZGVmaW5l IEhTRUFSQ0hfSAogCiAKKy8qIEhhc2ggdGFibGUgY29udHJvbCBzdHJ1Y3QgaXMgYW4gb3BhcXVl IHR5cGUga25vd24gb25seSB3aXRoaW4gZHluYWhhc2guYyAqLwordHlwZWRlZiBzdHJ1Y3QgSFRB QiBIVEFCOworCiAvKgogICogSGFzaCBmdW5jdGlvbnMgbXVzdCBoYXZlIHRoaXMgc2lnbmF0dXJl LgogICovCkBAIC00Myw2ICs0NiwxNTUgQEAgdHlwZWRlZiB2b2lkICooKkhhc2hDb3B5RnVuYykg KHZvaWQgKmRlc3QsIGNvbnN0IHZvaWQgKnNyYywgU2l6ZSBrZXlzaXplKTsKICAqLwogdHlwZWRl ZiB2b2lkICooKkhhc2hBbGxvY0Z1bmMpIChTaXplIHJlcXVlc3QpOwogCisvKgorICogSGFzaCBv cHRpb25zIGZvciBoYXNoX21ha2VfZXh0IGFuZCBzaG1lbV9oYXNoX21ha2VfZXh0IG1hY3Jvcy4K KyAqIENvbnRhaW5zIGxlc3MgY29tbW9ubHkgbmVlZGVkIG9wdGlvbnMgdGhhdCBhcmVuJ3QgY292 ZXJlZCBieSB0aGUgYmFzaWMgbWFjcm9zLgorICogQWxsIGZpZWxkcyBkZWZhdWx0IHRvIE5VTEwv MC9mYWxzZSB3aGVuIHplcm8taW5pdGlhbGl6ZWQuCisgKi8KK3R5cGVkZWYgc3RydWN0IEhBU0hP UFRTCit7CisJSGFzaFZhbHVlRnVuYyBoYXNoOwkJCS8qIGN1c3RvbSBoYXNoIGZ1bmN0aW9uIChO VUxMIGZvciBkZWZhdWx0KSAqLworCUhhc2hDb21wYXJlRnVuYyBtYXRjaDsJCS8qIGN1c3RvbSBj b21wYXJpc29uIGZ1bmN0aW9uIChOVUxMIGZvcgorCQkJCQkJCQkgKiBkZWZhdWx0KSAqLworCUhh c2hDb3B5RnVuYyBrZXljb3B5OwkJLyogY3VzdG9tIGtleSBjb3B5IGZ1bmN0aW9uIChOVUxMIGZv ciBkZWZhdWx0KSAqLworCUhhc2hBbGxvY0Z1bmMgYWxsb2M7CQkvKiBjdXN0b20gYWxsb2NhdG9y IChOVUxMIGZvciBkZWZhdWx0KSAqLworCWludDY0CQludW1fcGFydGl0aW9uczsgLyogcGFydGl0 aW9uIGNvdW50ICgwIGZvciBub25lKSAqLworCWJvb2wJCWZpeGVkX3NpemU7CQkvKiBpZiB0cnVl LCBoYXNoIHRhYmxlIGNhbm5vdCBncm93ICovCisJYm9vbAkJZm9yY2VfYmxvYnM7CS8qIGlmIHRy dWUsIHVzZSBIQVNIX0JMT0JTIGV2ZW4gZm9yIHN0cmluZworCQkJCQkJCQkgKiB0eXBlcyAqLwor fSBIQVNIT1BUUzsKKworLyoKKyAqIEhlbHBlcnMgdG8gZGV0ZWN0IGlmIGEgdHlwZSBzaG91bGQg YmUgaGFzaGVkIGFzIGEgc3RyaW5nLgorICoKKyAqIFN0cmluZyB0eXBlcyBpbmNsdWRlOiBjaGFy IGFycmF5cyBhbmQgTmFtZURhdGEuCisgKiBFdmVyeXRoaW5nIGVsc2UgaXMgdHJlYXRlZCBhcyBh IGJpbmFyeSBibG9iIChIQVNIX0JMT0JTKS4KKyAqLworI2RlZmluZSBIQVNIX1BUUl9BU19TVFJJ TkcocHRyLCBzaXplKSBcCisJKHBnX2V4cHJfaGFzX3R5cGVfcCgocHRyKSwgY2hhcigqKVtzaXpl XSkgfHwgcGdfZXhwcl9oYXNfdHlwZV9wKChwdHIpLCBOYW1lRGF0YSAqKSkKKyNkZWZpbmUgSEFT SF9LRVlfQVNfU1RSSU5HKGVudHJ5dHlwZSwga2V5bWVtYmVyKSBcCisJSEFTSF9QVFJfQVNfU1RS SU5HKCYoKGVudHJ5dHlwZSAqKTApLT5rZXltZW1iZXIsIFwKKwkJCQkJICAgc2l6ZW9mKCgoZW50 cnl0eXBlICopMCktPmtleW1lbWJlcikpCisjZGVmaW5lIEhBU0hfVFlQRV9BU19TVFJJTkcodHlw ZSkgXAorCUhBU0hfUFRSX0FTX1NUUklORyhwZ19udWxscHRyX29mKHR5cGUpLCBzaXplb2YodHlw ZSkpCisKKy8qCisgKiBDcmVhdGUgYSBoYXNoIHRhYmxlIHdpdGggbWluaW1hbCBib2lsZXJwbGF0 ZS4KKyAqCisgKiBUaGlzIGlzIHRoZSBzaW1wbGVzdCB3YXkgdG8gY3JlYXRlIGEgaGFzaCB0YWJs ZS4gSXQ6CisgKiAtIERlcml2ZXMga2V5c2l6ZSBmcm9tIHRoZSBrZXltZW1iZXIncyBhY3R1YWwg dHlwZQorICogLSBEZXJpdmVzIGVudHJ5c2l6ZSBmcm9tIHRoZSBlbnRyeXR5cGUKKyAqIC0gQXV0 b21hdGljYWxseSBjaG9vc2VzIEhBU0hfU1RSSU5HUyBvciBIQVNIX0JMT0JTIGJhc2VkIG9uIGtl eSB0eXBlIChjaGFyIGFycmF5cyBhbmQgTmFtZURhdGEgYXJlIHRyZWF0ZWQgYXMgc3RyaW5ncykK KyAqIC0gVXNlcyBDdXJyZW50TWVtb3J5Q29udGV4dCAobm90IFRvcE1lbW9yeUNvbnRleHQpCisg KiAtIFZhbGlkYXRlcyB0aGF0IGtleW1lbWJlciBpcyBhdCBvZmZzZXQgMAorICoKKyAqIFdBUk5J Tkc6IElmIHlvdSB1c2UgY2hhcltOXSB0byBzdG9yZSBiaW5hcnkgZGF0YSB0aGF0IGlzIG5vdCBu dWxsLXRlcm1pbmF0ZWQsCisgKiB0aGUgYXV0b21hdGljIGRldGVjdGlvbiB3aWxsIGluY29ycmVj dGx5IHRyZWF0IGl0IGFzIGEgc3RyaW5nIGFuZCB1c2Ugc3RyaW5nCisgKiBjb21wYXJpc29uLiBJ biBzdWNoIGNhc2VzLCB1c2UgaGFzaF9tYWtlX2V4dCgpIHdpdGggLmZvcmNlX2Jsb2JzID0gdHJ1 ZSB0bworICogb3ZlcnJpZGUgdGhlIGF1dG9tYXRpYyBkZXRlY3Rpb24uCisgKgorICogVXNhZ2U6 CisgKiAgIHR5cGVkZWYgc3RydWN0IHsgT2lkIG9pZDsgY2hhciAqZGF0YTsgfSBNeUVudHJ5Owor ICogICBIVEFCICpoID0gaGFzaF9tYWtlKE15RW50cnksIG9pZCwgIm15IHRhYmxlIiwgNjQpOwor ICovCisjZGVmaW5lIGhhc2hfbWFrZShlbnRyeXR5cGUsIGtleW1lbWJlciwgdGFibmFtZSwgbmVs ZW0pIFwKKwloYXNoX21ha2VfY3h0KGVudHJ5dHlwZSwga2V5bWVtYmVyLCB0YWJuYW1lLCBuZWxl bSwgQ3VycmVudE1lbW9yeUNvbnRleHQpCisKKy8qCisgKiBMaWtlIGhhc2hfbWFrZSwgYnV0IGFs bG93cyBzcGVjaWZ5aW5nIGEgbWVtb3J5IGNvbnRleHQuCisgKi8KKyNkZWZpbmUgaGFzaF9tYWtl X2N4dChlbnRyeXR5cGUsIGtleW1lbWJlciwgdGFibmFtZSwgbmVsZW0sIG1jeHQpIFwKKwloYXNo X21ha2VfZXh0X2N4dChlbnRyeXR5cGUsIGtleW1lbWJlciwgdGFibmFtZSwgbmVsZW0sIE5VTEws IG1jeHQpCisKKy8qCisgKiBIYXNoIHRhYmxlIHdpdGggY3VzdG9tIGhhc2ggYW5kL29yIG1hdGNo IGZ1bmN0aW9ucy4KKyAqCisgKiBMaWtlIGhhc2hfbWFrZSwgYnV0IGFjY2VwdHMgY3VzdG9tIGhh c2ggYW5kIG1hdGNoIGZ1bmN0aW9uIHBvaW50ZXJzLgorICogUGFzcyBOVUxMIGZvciBoYXNoZm4g dG8gdXNlIHRoZSBkZWZhdWx0IGhhc2ggKGJhc2VkIG9uIGtleSB0eXBlKSwKKyAqIG9yIE5VTEwg Zm9yIG1hdGNoZm4gdG8gdXNlIHRoZSBkZWZhdWx0IG1lbWNtcC1iYXNlZCBjb21wYXJpc29uLgor ICovCisjZGVmaW5lIGhhc2hfbWFrZV9mbihlbnRyeXR5cGUsIGtleW1lbWJlciwgdGFibmFtZSwg bmVsZW0sIGhhc2hmbiwgbWF0Y2hmbikgXAorCWhhc2hfbWFrZV9mbl9jeHQoZW50cnl0eXBlLCBr ZXltZW1iZXIsIHRhYm5hbWUsIG5lbGVtLCBoYXNoZm4sIG1hdGNoZm4sIFwKKwkJCQkJIEN1cnJl bnRNZW1vcnlDb250ZXh0KQorI2RlZmluZSBoYXNoX21ha2VfZm5fY3h0KGVudHJ5dHlwZSwga2V5 bWVtYmVyLCB0YWJuYW1lLCBuZWxlbSwgaGFzaGZuLCBtYXRjaGZuLCBtY3h0KSBcCisJKFN0YXRp Y0Fzc2VydEV4cHIob2Zmc2V0b2YoZW50cnl0eXBlLCBrZXltZW1iZXIpID09IDAsIFwKKwkJCQkJ ICAja2V5bWVtYmVyICIgbXVzdCBiZSBmaXJzdCBtZW1iZXIgaW4gIiAjZW50cnl0eXBlKSwgXAor CSBoYXNoX21ha2VfZm5faW1wbCgodGFibmFtZSksIChuZWxlbSksIFwKKwkJCQkJICAgc2l6ZW9m KCgoZW50cnl0eXBlICopMCktPmtleW1lbWJlciksIFwKKwkJCQkJICAgc2l6ZW9mKGVudHJ5dHlw ZSksIFwKKwkJCQkJICAgSEFTSF9LRVlfQVNfU1RSSU5HKGVudHJ5dHlwZSwga2V5bWVtYmVyKSwg XAorCQkJCQkgICAoaGFzaGZuKSwgKG1hdGNoZm4pLCAobWN4dCkpKQorCisvKgorICogSGFzaCB0 YWJsZSB3aXRoIGV4dGVuZGVkIG9wdGlvbnMgdmlhIEhBU0hPUFRTIHN0cnVjdC4KKyAqCisgKiBM aWtlIGhhc2hfbWFrZSwgYnV0IGFjY2VwdHMgYWRkaXRpb25hbCBvcHRpb25zIHZpYSBIQVNIT1BU UyBzdHJ1Y3QgcG9pbnRlci4KKyAqIFBhc3MgTlVMTCBmb3Igb3B0cyB0byB1c2UgYWxsIGRlZmF1 bHRzLgorICoKKyAqIEV4YW1wbGUgdXNhZ2U6CisgKiAgIEhBU0hPUFRTIG9wdHMgPSB7MH07Cisg KiAgIG9wdHMuaGFzaCA9IG15X2hhc2hfZnVuYzsKKyAqICAgb3B0cy5udW1fcGFydGl0aW9ucyA9 IDE2OworICogICBIVEFCICpoID0gaGFzaF9tYWtlX2V4dChNeUVudHJ5LCBrZXksICJteSB0YWJs ZSIsIDY0LCAmb3B0cyk7CisgKi8KKyNkZWZpbmUgaGFzaF9tYWtlX2V4dChlbnRyeXR5cGUsIGtl eW1lbWJlciwgdGFibmFtZSwgbmVsZW0sIG9wdHMpIFwKKwloYXNoX21ha2VfZXh0X2N4dChlbnRy eXR5cGUsIGtleW1lbWJlciwgdGFibmFtZSwgbmVsZW0sIG9wdHMsIEN1cnJlbnRNZW1vcnlDb250 ZXh0KQorCisjZGVmaW5lIGhhc2hfbWFrZV9leHRfY3h0KGVudHJ5dHlwZSwga2V5bWVtYmVyLCB0 YWJuYW1lLCBuZWxlbSwgb3B0cywgbWN4dCkgXAorCShTdGF0aWNBc3NlcnRFeHByKG9mZnNldG9m KGVudHJ5dHlwZSwga2V5bWVtYmVyKSA9PSAwLCBcCisJCQkJCQkgI2tleW1lbWJlciAiIG11c3Qg YmUgZmlyc3QgbWVtYmVyIGluICIgI2VudHJ5dHlwZSksIFwKKwloYXNoX21ha2VfaW1wbCggXAor CQkodGFibmFtZSksIChuZWxlbSksIFwKKwkJc2l6ZW9mKCgoZW50cnl0eXBlICopMCktPmtleW1l bWJlciksIFwKKwkJc2l6ZW9mKGVudHJ5dHlwZSksIFwKKwkJSEFTSF9LRVlfQVNfU1RSSU5HKGVu dHJ5dHlwZSwga2V5bWVtYmVyKSwgXAorCQkob3B0cyksIFwKKwkJKG1jeHQpKSkKKworCisvKgor ICogQ3JlYXRlIGEgaGFzaCBzZXQgd2hlcmUgdGhlIGVudGlyZSBlbnRyeSBpcyB0aGUga2V5LiBU aGlzIGlzCisgKiBsaWtlIGhhc2hfbWFrZSwgYnV0IHdoZXJlIHRoZSBrZXkgaXMgYWxzbyB0aGUg ZW50cnkuCisgKi8KKyNkZWZpbmUgaGFzaHNldF9tYWtlKGVudHJ5dHlwZSwgdGFibmFtZSwgbmVs ZW0pIFwKKwloYXNoc2V0X21ha2VfY3h0KGVudHJ5dHlwZSwgdGFibmFtZSwgbmVsZW0sIEN1cnJl bnRNZW1vcnlDb250ZXh0KQorI2RlZmluZSBoYXNoc2V0X21ha2VfY3h0KGVudHJ5dHlwZSwgdGFi bmFtZSwgbmVsZW0sIG1jeHQpIFwKKwloYXNoc2V0X21ha2VfZXh0X2N4dChlbnRyeXR5cGUsIHRh Ym5hbWUsIG5lbGVtLCBOVUxMLCBtY3h0KQorI2RlZmluZSBoYXNoc2V0X21ha2VfZm4oZW50cnl0 eXBlLCB0YWJuYW1lLCBuZWxlbSwgaGFzaGZuLCBtYXRjaGZuKSBcCisJaGFzaHNldF9tYWtlX2Zu X2N4dChlbnRyeXR5cGUsIHRhYm5hbWUsIG5lbGVtLCBoYXNoZm4sIG1hdGNoZm4sIFwKKwkJCQkJ CQlDdXJyZW50TWVtb3J5Q29udGV4dCkKKyNkZWZpbmUgaGFzaHNldF9tYWtlX2ZuX2N4dChlbnRy eXR5cGUsIHRhYm5hbWUsIG5lbGVtLCBoYXNoZm4sIG1hdGNoZm4sIG1jeHQpIFwKKwloYXNoX21h a2VfZm5faW1wbCgodGFibmFtZSksIChuZWxlbSksIHNpemVvZihlbnRyeXR5cGUpLCBzaXplb2Yo ZW50cnl0eXBlKSwgXAorCQkJCQkJIEhBU0hfVFlQRV9BU19TVFJJTkcoZW50cnl0eXBlKSwgKGhh c2hmbiksIChtYXRjaGZuKSwgXAorCQkJCQkJIG1jeHQpCisjZGVmaW5lIGhhc2hzZXRfbWFrZV9l eHQoZW50cnl0eXBlLCB0YWJuYW1lLCBuZWxlbSwgb3B0cykgXAorCWhhc2hzZXRfbWFrZV9leHRf Y3h0KGVudHJ5dHlwZSwgdGFibmFtZSwgbmVsZW0sIG9wdHMsIFwKKwkJCQkJCQlDdXJyZW50TWVt b3J5Q29udGV4dCkKKyNkZWZpbmUgaGFzaHNldF9tYWtlX2V4dF9jeHQoZW50cnl0eXBlLCB0YWJu YW1lLCBuZWxlbSwgb3B0cywgbWN4dCkgXAorCWhhc2hfbWFrZV9pbXBsKCh0YWJuYW1lKSwgKG5l bGVtKSwgc2l6ZW9mKGVudHJ5dHlwZSksIHNpemVvZihlbnRyeXR5cGUpLCBcCisJCQkJICAgSEFT SF9UWVBFX0FTX1NUUklORyhlbnRyeXR5cGUpLCBvcHRzLCAobWN4dCkpCisKKy8qCisgKiBJbXBs ZW1lbnRhdGlvbiBmdW5jdGlvbiBmb3IgaGFzaF9tYWtlIG1hY3Jvcy4gTm90IG1lYW50IHRvIGJl IGNhbGxlZAorICogZGlyZWN0bHkuCisgKgorICogSWYgc3RyaW5nX2tleSBpcyB0cnVlLCB0aGUg a2V5IGlzIHRyZWF0ZWQgYXMgYSBudWxsLXRlcm1pbmF0ZWQgc3RyaW5nLgorICogUGFzcyBOVUxM IGZvciBvcHRzIHRvIHVzZSBhbGwgZGVmYXVsdHMuCisgKi8KK2V4dGVybiBIVEFCICpoYXNoX21h a2VfaW1wbChjb25zdCBjaGFyICp0YWJuYW1lLCBpbnQ2NCBuZWxlbSwKKwkJCQkJCQlTaXplIGtl eXNpemUsIFNpemUgZW50cnlzaXplLAorCQkJCQkJCWJvb2wgc3RyaW5nX2tleSwKKwkJCQkJCQlj b25zdCBIQVNIT1BUUyAqb3B0cywKKwkJCQkJCQlNZW1vcnlDb250ZXh0IG1jeHQpOworCisvKgor ICogSW1wbGVtZW50YXRpb24gZnVuY3Rpb24gZm9yIGhhc2hfbWFrZV9mbiBtYWNyb3MuCisgKi8K K2V4dGVybiBIVEFCICpoYXNoX21ha2VfZm5faW1wbChjb25zdCBjaGFyICp0YWJuYW1lLCBpbnQ2 NCBuZWxlbSwKKwkJCQkJCQkgICBTaXplIGtleXNpemUsIFNpemUgZW50cnlzaXplLCBib29sIHN0 cmluZ19rZXksCisJCQkJCQkJICAgSGFzaFZhbHVlRnVuYyBoYXNoZm4sIEhhc2hDb21wYXJlRnVu YyBtYXRjaGZuLAorCQkJCQkJCSAgIE1lbW9yeUNvbnRleHQgbWN4dCk7CisKIC8qCiAgKiBIQVNI RUxFTUVOVCBpcyB0aGUgcHJpdmF0ZSBwYXJ0IG9mIGEgaGFzaHRhYmxlIGVudHJ5LiAgVGhlIGNh bGxlcidzIGRhdGEKICAqIGZvbGxvd3MgdGhlIEhBU0hFTEVNRU5UIHN0cnVjdHVyZSAob24gYSBN QVhBTElHTidkIGJvdW5kYXJ5KS4gIFRoZSBoYXNoIGtleQpAQCAtNTcsMTEgKzIwOSwxMSBAQCB0 eXBlZGVmIHN0cnVjdCBIQVNIRUxFTUVOVAogLyogSGFzaCB0YWJsZSBoZWFkZXIgc3RydWN0IGlz IGFuIG9wYXF1ZSB0eXBlIGtub3duIG9ubHkgd2l0aGluIGR5bmFoYXNoLmMgKi8KIHR5cGVkZWYg c3RydWN0IEhBU0hIRFIgSEFTSEhEUjsKIAotLyogSGFzaCB0YWJsZSBjb250cm9sIHN0cnVjdCBp cyBhbiBvcGFxdWUgdHlwZSBrbm93biBvbmx5IHdpdGhpbiBkeW5haGFzaC5jICovCi10eXBlZGVm IHN0cnVjdCBIVEFCIEhUQUI7Ci0KLS8qIFBhcmFtZXRlciBkYXRhIHN0cnVjdHVyZSBmb3IgaGFz aF9jcmVhdGUgKi8KLS8qIE9ubHkgdGhvc2UgZmllbGRzIGluZGljYXRlZCBieSBoYXNoX2ZsYWdz IG5lZWQgYmUgc2V0ICovCisvKgorICogUGFyYW1ldGVyIGRhdGEgc3RydWN0dXJlIGZvciBoYXNo X2NyZWF0ZSAod2hpY2ggaXMgdGhlIGxvdy1sZXZlbCBtZXRob2Qgb2YKKyAqIGluaXRpYWxpemlu ZyBoYXNoIHRhYmxlcywgaGFzaF9tYWtlIG1hY3JvcyBhcmUgcHJlZmVycmVkKQorICogT25seSB0 aG9zZSBmaWVsZHMgaW5kaWNhdGVkIGJ5IGhhc2hfZmxhZ3MgbmVlZCBiZSBzZXQKKyAqLwogdHlw ZWRlZiBzdHJ1Y3QgSEFTSENUTAogewogCS8qIFVzZWQgaWYgSEFTSF9QQVJUSVRJT04gZmxhZyBp cyBzZXQ6ICovCkBAIC0xMzEsNiArMjgzLDkgQEAgdHlwZWRlZiBzdHJ1Y3QKICAqLwogZXh0ZXJu IEhUQUIgKmhhc2hfY3JlYXRlKGNvbnN0IGNoYXIgKnRhYm5hbWUsIGludDY0IG5lbGVtLAogCQkJ CQkJIGNvbnN0IEhBU0hDVEwgKmluZm8sIGludCBmbGFncyk7CitleHRlcm4gdm9pZCBoYXNoX29w dHNfaW5pdChIQVNIQ1RMICpjdGwsIGludCAqZmxhZ3MsCisJCQkJCQkgICBTaXplIGtleXNpemUs IFNpemUgZW50cnlzaXplLCBib29sIHN0cmluZ19rZXksCisJCQkJCQkgICBjb25zdCBIQVNIT1BU UyAqb3B0cyk7CiBleHRlcm4gdm9pZCBoYXNoX2Rlc3Ryb3koSFRBQiAqaGFzaHApOwogZXh0ZXJu IHZvaWQgaGFzaF9zdGF0cyhjb25zdCBjaGFyICpjYWxsZXIsIEhUQUIgKmhhc2hwKTsKIGV4dGVy biB2b2lkICpoYXNoX3NlYXJjaChIVEFCICpoYXNocCwgY29uc3Qgdm9pZCAqa2V5UHRyLCBIQVNI QUNUSU9OIGFjdGlvbiwKZGlmZiAtLWdpdCBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5s aXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXggMDllN2YxZDQyMGUu LmY3ZmI4NGUxODUzIDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlz dAorKysgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAtMTE1NSw2ICsxMTU1 LDcgQEAgSEFTSEJVQ0tFVAogSEFTSENUTAogSEFTSEVMRU1FTlQKIEhBU0hIRFIKK0hBU0hPUFRT CiBIQVNIU0VHTUVOVAogSEFTSF9TRVFfU1RBVFVTCiBIRQoKYmFzZS1jb21taXQ6IGU1YTVlMGE5 MDc1MGQ2NjVjYWI0MTczMjJiOWY4NWM4MDY0MzBkODUKLS0gCjIuNTIuMAoK --b61100c90bc4723abf16aa8e9e972a6bf2b76b698cfd62dcd856536e7901 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v5-0002-Add-foreach_hash-macro.patch Content-Type: text/x-patch; charset=utf-8; name=v5-0002-Add-foreach_hash-macro.patch RnJvbSBlOTZhZDVkNzAyMzFiMmNhMmFlNzMzZTI5OGNmOWI2NmU4ODc2ZGYzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBUaHUsIDQgRGVjIDIwMjUgMTU6Mzk6MDAgKzAxMDAKU3ViamVjdDogW1BBVENIIHY1 IDIvNV0gQWRkIGZvcmVhY2hfaGFzaCBtYWNybwoKRm9yIGxpc3RzIHdlJ3ZlIGhhZCBhIG5ldyBm b3JlYWNoIHN0eWxlIG1hY3JvcyBzaW5jZSAxNGRkMGYyN2Q3LiBUaGlzCmFkZHMgYSBzaW1pbGFy IG1hY3JvIGZvciBoYXNoIHRhYmxlcy4gVGhpcyBuZXcgZm9yZWFjaF9oYXNoIG1hY3JvIG1ha2Vz Cml0ZXJhdGluZyBvdmVyIHRoZSBpdGVtcyBpbiBhbiBIVEFCIGFzIHNpbXBsZSBhcyBpdGVyYXRp bmcgb3ZlciB0aGUKaXRlbXMgaW4gYSBMaXN0LiBUaGUgb25seSBhZGRpdGlvbmFsIHRoaW5nIHRv IGtlZXAgaW4gbWluZCBpcyB0aGF0IHdoZW4KZXhpdGluZyB0aGUgbG9vcCBlYXJseSB5b3UgbmVl ZCB0byBjYWxsIGZvcmVhY2hfaGFzaF90ZXJtLgotLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2hhc2gv ZHluYWhhc2guYyB8IDE1ICsrKysrKysrLQogc3JjL2luY2x1ZGUvdXRpbHMvaHNlYXJjaC5oICAg ICAgIHwgNTYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogMiBmaWxlcyBjaGFuZ2Vk LCA3MCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvdXRpbHMvaGFzaC9keW5haGFzaC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvaGFzaC9keW5haGFz aC5jCmluZGV4IGMwZmFhYWY2MWRhLi4yOWZjOGY0NjBiYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvdXRpbHMvaGFzaC9keW5haGFzaC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2hhc2gvZHlu YWhhc2guYwpAQCAtMTQ2Miw3ICsxNDYyLDcgQEAgaGFzaF9nZXRfbnVtX2VudHJpZXMoSFRBQiAq aGFzaHApCiB9CiAKIC8qCi0gKiBoYXNoX3NlcV9pbml0L19zZWFyY2gvX3Rlcm0KKyAqIGhhc2hf c2VxX2luaXQvX25ldy9fc2VhcmNoL190ZXJtCiAgKgkJCVNlcXVlbnRpYWxseSBzZWFyY2ggdGhy b3VnaCBoYXNoIHRhYmxlIGFuZCByZXR1cm4KICAqCQkJYWxsIHRoZSBlbGVtZW50cyBvbmUgYnkg b25lLCByZXR1cm4gTlVMTCB3aGVuIG5vIG1vcmUuCiAgKgpAQCAtMTQ5Niw2ICsxNDk2LDE5IEBA IGhhc2hfc2VxX2luaXQoSEFTSF9TRVFfU1RBVFVTICpzdGF0dXMsIEhUQUIgKmhhc2hwKQogCQly ZWdpc3Rlcl9zZXFfc2NhbihoYXNocCk7CiB9CiAKKy8qCisgKiBTYW1lIGFzIGhhc2hfc2VxX2lu aXQoKSwgYnV0IHJldHVybnMgdGhlIHN0YXR1cyBzdHJ1Y3QgaW5zdGVhZCBvZiB0YWtpbmcgYQor ICogcG9pbnRlci4KKyAqLworSEFTSF9TRVFfU1RBVFVTCitoYXNoX3NlcV9uZXcoSFRBQiAqaGFz aHApCit7CisJSEFTSF9TRVFfU1RBVFVTIHN0YXR1czsKKworCWhhc2hfc2VxX2luaXQoJnN0YXR1 cywgaGFzaHApOworCXJldHVybiBzdGF0dXM7Cit9CisKIC8qCiAgKiBTYW1lIGFzIGFib3ZlIGJ1 dCBzY2FuIGJ5IHRoZSBnaXZlbiBoYXNoIHZhbHVlLgogICogU2VlIGFsc28gaGFzaF9zZXFfc2Vh cmNoKCkuCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9oc2VhcmNoLmggYi9zcmMvaW5j bHVkZS91dGlscy9oc2VhcmNoLmgKaW5kZXggYTlkZmYwZmMwZGMuLjE5ZDBkYmZkMWM1IDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9oc2VhcmNoLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRp bHMvaHNlYXJjaC5oCkBAIC0yNzgsNiArMjc4LDYxIEBAIHR5cGVkZWYgc3RydWN0CiAJdWludDMy CQloYXNodmFsdWU7CQkvKiBoYXNodmFsdWUgdG8gc3RhcnQgc2Vxc2NhbiBvdmVyIGhhc2ggKi8K IH0gSEFTSF9TRVFfU1RBVFVTOwogCisvKgorICogZm9yZWFjaF9oYXNoIC0gaXRlcmF0ZSBvdmVy IGFsbCBlbnRyaWVzIGluIGEgaGFzaCB0YWJsZQorICoKKyAqIFRoaXMgbWFjcm8gc2ltcGxpZmll cyBoYXNoIHRhYmxlIGl0ZXJhdGlvbiBieSBjb21iaW5pbmcgaGFzaF9zZXFfaW5pdAorICogYW5k IGhhc2hfc2VxX3NlYXJjaCBpbnRvIGEgc2luZ2xlIGZvci1sb29wIGNvbnN0cnVjdC4KKyAqCisg KiBVc2FnZToKKyAqICAgZm9yZWFjaF9oYXNoKE15RW50cnksIGVudHJ5LCBteV9oYXNodGFibGUp CisgKiAgIHsKKyAqICAgICAgIC8vIHVzZSBlbnRyeQorICogICB9CisgKgorICogVGhpcyByZXBs YWNlcyB0aGUgbW9yZSB2ZXJib3NlIHBhdHRlcm46CisgKiAgIEhBU0hfU0VRX1NUQVRVUyBzdGF0 dXM7CisgKiAgIE15RW50cnkgKmVudHJ5OworICogICBoYXNoX3NlcV9pbml0KCZzdGF0dXMsIG15 X2hhc2h0YWJsZSk7CisgKiAgIHdoaWxlICgoZW50cnkgPSAoTXlFbnRyeSAqKSBoYXNoX3NlcV9z ZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisgKiAgIHsKKyAqICAgICAgIC8vIHVzZSBlbnRyeQor ICogICB9CisgKgorICogRm9yIGVhcmx5IHRlcm1pbmF0aW9uLCB1c2UgZm9yZWFjaF9oYXNoX3Rl cm0oKSBiZWZvcmUgYnJlYWs6CisgKiAgIGZvcmVhY2hfaGFzaChNeUVudHJ5LCBlbnRyeSwgbXlf aGFzaHRhYmxlKQorICogICB7CisgKiAgICAgICBpZiAoZm91bmRfaXQpCisgKiAgICAgICB7Cisg KiAgICAgICAgICAgZm9yZWFjaF9oYXNoX3Rlcm0oZW50cnkpOworICogICAgICAgICAgIGJyZWFr OworICogICAgICAgfQorICogICB9CisgKi8KKyNkZWZpbmUgZm9yZWFjaF9oYXNoKHR5cGUsIHZh ciwgaHRhYikgXAorCWZvciAodHlwZSAqdmFyID0gTlVMTCwgKnZhciMjX19vdXRlcmxvb3AgPSAo dHlwZSAqKSAxOyBcCisJCSB2YXIjI19fb3V0ZXJsb29wOyBcCisJCSB2YXIjI19fb3V0ZXJsb29w ID0gMCkgXAorCQlmb3IgKEhBU0hfU0VRX1NUQVRVUyB2YXIjI19fc3RhdHVzID0gaGFzaF9zZXFf bmV3KGh0YWIpOyBcCisJCQkgKHZhciA9ICh0eXBlICopIGhhc2hfc2VxX3NlYXJjaCgmdmFyIyNf X3N0YXR1cykpICE9IE5VTEw7ICkKKworLyoKKyAqIGZvcmVhY2hfaGFzaF90ZXJtIC0gdGVybWlu YXRlIGEgZm9yZWFjaF9oYXNoIGxvb3AgZWFybHkKKyAqCisgKiBDYWxsIHRoaXMgYmVmb3JlICdi cmVhaycgdG8gcHJvcGVybHkgY2xlYW4gdXAgdGhlIGhhc2ggc2Nhbi4KKyAqLworI2RlZmluZSBm b3JlYWNoX2hhc2hfdGVybSh2YXIpIGhhc2hfc2VxX3Rlcm0oJnZhciMjX19zdGF0dXMpCisKKy8q CisgKiBmb3JlYWNoX2hhc2hfcmVzdGFydCAtIHJlc3RhcnQgaXRlcmF0aW9uIGZyb20gdGhlIGJl Z2lubmluZworICoKKyAqIFVzZSB3aGVuIG1vZGlmaWNhdGlvbnMgZHVyaW5nIGl0ZXJhdGlvbiBt YXkgaGF2ZSBpbnZhbGlkYXRlZCB0aGUgc2Nhbi4KKyAqIFRoZSBuZXh0IGl0ZXJhdGlvbiB3aWxs IHN0YXJ0IGZyb20gdGhlIGZpcnN0IGVudHJ5IGFnYWluLgorICovCisjZGVmaW5lIGZvcmVhY2hf aGFzaF9yZXN0YXJ0KHZhciwgaHRhYikgXAorCShoYXNoX3NlcV90ZXJtKCZ2YXIjI19fc3RhdHVz KSwgXAorCSBoYXNoX3NlcV9pbml0KCZ2YXIjI19fc3RhdHVzLCBodGFiKSkKKwogLyoKICAqIHBy b3RvdHlwZXMgZm9yIGZ1bmN0aW9ucyBpbiBkeW5haGFzaC5jCiAgKi8KQEAgLTI5OCw2ICszNTMs NyBAQCBleHRlcm4gYm9vbCBoYXNoX3VwZGF0ZV9oYXNoX2tleShIVEFCICpoYXNocCwgdm9pZCAq ZXhpc3RpbmdFbnRyeSwKIAkJCQkJCQkJIGNvbnN0IHZvaWQgKm5ld0tleVB0cik7CiBleHRlcm4g aW50NjQgaGFzaF9nZXRfbnVtX2VudHJpZXMoSFRBQiAqaGFzaHApOwogZXh0ZXJuIHZvaWQgaGFz aF9zZXFfaW5pdChIQVNIX1NFUV9TVEFUVVMgKnN0YXR1cywgSFRBQiAqaGFzaHApOworZXh0ZXJu IEhBU0hfU0VRX1NUQVRVUyBoYXNoX3NlcV9uZXcoSFRBQiAqaGFzaHApOwogZXh0ZXJuIHZvaWQg aGFzaF9zZXFfaW5pdF93aXRoX2hhc2hfdmFsdWUoSEFTSF9TRVFfU1RBVFVTICpzdGF0dXMsCiAJ CQkJCQkJCQkJICBIVEFCICpoYXNocCwKIAkJCQkJCQkJCQkgIHVpbnQzMiBoYXNodmFsdWUpOwot LSAKMi41Mi4wCgo= --b61100c90bc4723abf16aa8e9e972a6bf2b76b698cfd62dcd856536e7901 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v5-0003-Use-hash_make-macros-throughout-the-codebase.patch Content-Type: text/x-patch; charset=utf-8; name=v5-0003-Use-hash_make-macros-throughout-the-codebase.patch RnJvbSAzNGJhYzE5NDcyMjIwOTRmMTgxYWFjNGRhZDMyNTQ1YmM0MzE5ZDFjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBUaHUsIDQgRGVjIDIwMjUgMTU6MzY6MTkgKzAxMDAKU3ViamVjdDogW1BBVENIIHY1 IDMvNV0gVXNlIGhhc2hfbWFrZSBtYWNyb3MgdGhyb3VnaG91dCB0aGUgY29kZWJhc2UKClRoaXMg c2hvd3MgaG93IG91ciBjb2RlIGJhc2UgbG9va3Mgd2hlbiB1c2luZyB0aGUgbmV3IEFQSXMuIFRo aXMgaGFzCnNvbWUgdHlwZXNhZmV0eSwgcmVhZGFiaWxpdHkgYW5kIG1haW50YW5hYmlsaXR5IGJl bmVmaXRzLCBidXQgaXQgYWxzbwppbnRyb2R1Y2VzIHNvbWUgYmFja3BhdGNoaW5nIHByb2JsZW1z LiBUaGVzZSBiYWNrcGF0Y2hpbmcgcHJvYmxlbXMKY2Fubm90IGJlIHJlc29sdmVkIGJ5IGJhY2tw b3J0aW5nIHRoZSBuZXcgaGFzaF9tYWtlIG1hY3JvcywgYmVjYXVzZSBzb21lCm9mIHRoZW0gcmVx dWlyZSBDMTEgKHdoaWNoIHdlIG9ubHkgcmVxdWlyZSBvbiBtYXN0ZXIgZm9yIG5vdykuIEkgdGhp bmsKaXQncyB1bmxpa2VseSB0aGF0IHdlJ2xsIG5lZWQgdG8gYmFja3BhdGNoIHRoaW5ncyBpbiBj b2RlIHRoYXQgY3JlYXRlcwpoYXNodGFibGVzIHRob3VnaCwgc28gaXQgY291bGQgc3RpbGwgYmUg d29ydGggaXQgdG8gZG8gdGhpcyBjb21wbGV0ZQpyZWZhY3Rvci4KCkF0IHRoZSB2ZXJ5IGxlYXN0 IHdlIHNob3VsZCBjaG9vc2UgYSBmZXcgcGxhY2VzIHdoZXJlIHdlIHVzZSB0aGUgbmV3Cm1hY3Jv cyB0byBtYWtlIHN1cmUgdGhleSBoYXZlIGNvdmVyYWdlLgotLS0KIGNvbnRyaWIvZGJsaW5rL2Ri bGluay5jICAgICAgICAgICAgICAgICAgICAgICB8IDEwICstLQogLi4uL3BnX3N0YXRfc3RhdGVt ZW50cy9wZ19zdGF0X3N0YXRlbWVudHMuYyAgIHwgMTAgKy0tCiBjb250cmliL3BnX3RyZ20vdHJn bV9yZWdleHAuYyAgICAgICAgICAgICAgICAgfCAgOSArLS0KIGNvbnRyaWIvcG9zdGdyZXNfZmR3 L2Nvbm5lY3Rpb24uYyAgICAgICAgICAgICB8IDEwICstLQogY29udHJpYi9wb3N0Z3Jlc19mZHcv c2hpcHBhYmxlLmMgICAgICAgICAgICAgIHwgMTAgKystCiBjb250cmliL3RhYmxlZnVuYy90YWJs ZWZ1bmMuYyAgICAgICAgICAgICAgICAgfCAxNyArKy0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2Nv bW1vbi9oZWFwdHVwbGUuYyAgICAgICAgIHwgMTMgKy0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2dp c3QvZ2lzdGJ1aWxkLmMgICAgICAgICAgIHwgMTEgKy0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2dp c3QvZ2lzdGJ1aWxkYnVmZmVycy5jICAgIHwgMTAgKy0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGFz aC9oYXNocGFnZS5jICAgICAgICAgICAgfCAxMyArLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC9yZXdyaXRlaGVhcC5jICAgICAgICAgfCAzOSArKysrLS0tLS0tLQogc3JjL2JhY2tlbmQvYWNj ZXNzL3RyYW5zYW0veGxvZ3ByZWZldGNoZXIuYyAgIHwgIDggKy0tCiBzcmMvYmFja2VuZC9hY2Nl c3MvdHJhbnNhbS94bG9ndXRpbHMuYyAgICAgICAgfCAxMyArKy0tCiBzcmMvYmFja2VuZC9jYXRh bG9nL3BnX2VudW0uYyAgICAgICAgICAgICAgICAgfCAyNCArKy0tLS0tCiBzcmMvYmFja2VuZC9j YXRhbG9nL3BnX2luaGVyaXRzLmMgICAgICAgICAgICAgfCAxMSArLS0tCiBzcmMvYmFja2VuZC9j YXRhbG9nL3N0b3JhZ2UuYyAgICAgICAgICAgICAgICAgfCAyMSArKy0tLS0KIHNyYy9iYWNrZW5k L2NvbW1hbmRzL2FzeW5jLmMgICAgICAgICAgICAgICAgICB8IDE0ICsrLS0KIHNyYy9iYWNrZW5k L2NvbW1hbmRzL3ByZXBhcmUuYyAgICAgICAgICAgICAgICB8IDEyICstLS0KIHNyYy9iYWNrZW5k L2NvbW1hbmRzL3NlcXVlbmNlLmMgICAgICAgICAgICAgICB8IDEwICstLQogc3JjL2JhY2tlbmQv Y29tbWFuZHMvdGFibGVjbWRzLmMgICAgICAgICAgICAgIHwgMTYgKy0tLS0KIHNyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jICAgICAgICB8IDEwICstLQogc3JjL2JhY2tlbmQv bm9kZXMvZXh0ZW5zaWJsZS5jICAgICAgICAgICAgICAgIHwgMTAgKy0tCiBzcmMvYmFja2VuZC9v cHRpbWl6ZXIvdXRpbC9wbGFuY2F0LmMgICAgICAgICAgfCAxNyArKy0tLQogc3JjL2JhY2tlbmQv b3B0aW1pemVyL3V0aWwvcHJlZHRlc3QuYyAgICAgICAgIHwgIDkgKy0tCiBzcmMvYmFja2VuZC9v cHRpbWl6ZXIvdXRpbC9yZWxub2RlLmMgICAgICAgICAgfCAxMyArLS0tCiBzcmMvYmFja2VuZC9w YXJzZXIvcGFyc2Vfb3Blci5jICAgICAgICAgICAgICAgfCAxMCArKy0KIHNyYy9iYWNrZW5kL3Bh cnRpdGlvbmluZy9wYXJ0ZGVzYy5jICAgICAgICAgICB8ICA5ICstLQogc3JjL2JhY2tlbmQvcG9z dG1hc3Rlci9hdXRvdmFjdXVtLmMgICAgICAgICAgIHwgMjIgKystLS0tLQogc3JjL2JhY2tlbmQv cG9zdG1hc3Rlci9jaGVja3BvaW50ZXIuYyAgICAgICAgIHwgMTIgKy0tLQogLi4uL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jIHwgMTMgKy0tLQogc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC9yZWxhdGlvbi5jICAgIHwgMjIgKystLS0tLQogLi4uL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jICAgICAgIHwgMjkgKystLS0tLS0KIHNyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMgICB8IDEwICsrLQogc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYyAgIHwgMTEgKy0tLQogc3JjL2Jh Y2tlbmQvc3RvcmFnZS9idWZmZXIvYnVmX3RhYmxlLmMgICAgICAgIHwgMTUgKystLS0KIHNyYy9i YWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1nci5jICAgICAgICAgICB8IDExICsrLS0KIHNyYy9i YWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2xvY2FsYnVmLmMgICAgICAgICB8IDExICstLS0KIHNyYy9i YWNrZW5kL3N0b3JhZ2UvZmlsZS9yZWluaXQuYyAgICAgICAgICAgICB8ICA4ICstLQogc3JjL2Jh Y2tlbmQvc3RvcmFnZS9pcGMvc2htZW0uYyAgICAgICAgICAgICAgIHwgMzMgKysrKysrKy0tLQog c3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5jICAgICAgICAgICAgIHwgMjAgKystLS0t CiBzcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbG9jay5jICAgICAgICAgICAgICAgfCA1NSArKysr Ky0tLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbHdsb2NrLmMgICAgICAgICAg ICAgfCAgOCArLS0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcmVkaWNhdGUuYyAgICAgICAg ICB8IDY2ICsrKysrKysrLS0tLS0tLS0tLS0KIHNyYy9iYWNrZW5kL3N0b3JhZ2Uvc21nci9zbWdy LmMgICAgICAgICAgICAgICB8IDEwICsrLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9zeW5jL3N5bmMu YyAgICAgICAgICAgICAgIHwgMTEgKy0tLQogc3JjL2JhY2tlbmQvdHNlYXJjaC90c190eXBhbmFs eXplLmMgICAgICAgICAgIHwgMTMgKy0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2Fp dF9ldmVudC5jICAgICAgIHwgMjMgKysrLS0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2FycmF5 X3R5cGFuYWx5emUuYyAgICAgIHwgMjMgKystLS0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pz b24uYyAgICAgICAgICAgICAgICAgIHwgMTUgKy0tLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9q c29uZnVuY3MuYyAgICAgICAgICAgICB8IDIwICsrLS0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L21jeHRmdW5jcy5jICAgICAgICAgICAgIHwgMTEgKy0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L3JpX3RyaWdnZXJzLmMgICAgICAgICAgIHwgMjkgKysrKy0tLS0KIHNyYy9iYWNrZW5kL3V0aWxz L2FkdC9ydWxldXRpbHMuYyAgICAgICAgICAgICB8IDIzICsrLS0tLS0KIHNyYy9iYWNrZW5kL3V0 aWxzL2NhY2hlL2F0dG9wdGNhY2hlLmMgICAgICAgICB8IDE2ICsrLS0tCiBzcmMvYmFja2VuZC91 dGlscy9jYWNoZS9ldnRjYWNoZS5jICAgICAgICAgICAgfCAgOSArLS0KIHNyYy9iYWNrZW5kL3V0 aWxzL2NhY2hlL2Z1bmNjYWNoZS5jICAgICAgICAgICB8IDE0ICsrLS0KIHNyYy9iYWNrZW5kL3V0 aWxzL2NhY2hlL3JlbGNhY2hlLmMgICAgICAgICAgICB8IDE5ICsrLS0tLQogc3JjL2JhY2tlbmQv dXRpbHMvY2FjaGUvcmVsZmlsZW51bWJlcm1hcC5jICAgIHwgIDkgKy0tCiBzcmMvYmFja2VuZC91 dGlscy9jYWNoZS9zcGNjYWNoZS5jICAgICAgICAgICAgfCAgOSArLS0KIHNyYy9iYWNrZW5kL3V0 aWxzL2NhY2hlL3RzX2NhY2hlLmMgICAgICAgICAgICB8IDI3ICsrKy0tLS0tCiBzcmMvYmFja2Vu ZC91dGlscy9jYWNoZS90eXBjYWNoZS5jICAgICAgICAgICAgfCAzMyArKysrLS0tLS0tCiBzcmMv YmFja2VuZC91dGlscy9mbWdyL2RmbWdyLmMgICAgICAgICAgICAgICAgfCAxMiArKy0tCiBzcmMv YmFja2VuZC91dGlscy9mbWdyL2ZtZ3IuYyAgICAgICAgICAgICAgICAgfCAxMSArLS0tCiBzcmMv YmFja2VuZC91dGlscy9taXNjL2d1Yy5jICAgICAgICAgICAgICAgICAgfCAxNCArKy0tCiBzcmMv YmFja2VuZC91dGlscy9taXNjL2luamVjdGlvbl9wb2ludC5jICAgICAgfCAxNCArKy0tCiBzcmMv YmFja2VuZC91dGlscy9tbWdyL3BvcnRhbG1lbS5jICAgICAgICAgICAgfCAxMCArLS0KIHNyYy9i YWNrZW5kL3V0aWxzL3RpbWUvY29tYm9jaWQuYyAgICAgICAgICAgICB8IDEzICstLS0KIHNyYy9w bC9wbHBlcmwvcGxwZXJsLmMgICAgICAgICAgICAgICAgICAgICAgICB8IDMyICsrKy0tLS0tLQog c3JjL3BsL3BscGdzcWwvc3JjL3BsX2V4ZWMuYyAgICAgICAgICAgICAgICAgIHwgMzIgKysrKy0t LS0tCiBzcmMvcGwvcGxweXRob24vcGxweV9wbHB5bW9kdWxlLmMgICAgICAgICAgICAgfCAgOSAr Ky0KIHNyYy9wbC9wbHB5dGhvbi9wbHB5X3Byb2NlZHVyZS5jICAgICAgICAgICAgICB8ICA5ICst LQogc3JjL3BsL3RjbC9wbHRjbC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTkgKyst LS0tCiBzcmMvdGltZXpvbmUvcGd0ei5jICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxMiAr LS0tCiA3MyBmaWxlcyBjaGFuZ2VkLCAzNzEgaW5zZXJ0aW9ucygrKSwgODM1IGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvZGJsaW5rL2RibGluay5jIGIvY29udHJpYi9kYmxpbmsv ZGJsaW5rLmMKaW5kZXggOGNiMzE2NjQ5NWMuLjE5MjQxOGRmNGFmIDEwMDY0NAotLS0gYS9jb250 cmliL2RibGluay9kYmxpbmsuYworKysgYi9jb250cmliL2RibGluay9kYmxpbmsuYwpAQCAtMjU0 MCwxMyArMjU0MCw5IEBAIGdldENvbm5lY3Rpb25CeU5hbWUoY29uc3QgY2hhciAqbmFtZSkKIHN0 YXRpYyBIVEFCICoKIGNyZWF0ZUNvbm5IYXNoKHZvaWQpCiB7Ci0JSEFTSENUTAkJY3RsOwotCi0J Y3RsLmtleXNpemUgPSBOQU1FREFUQUxFTjsKLQljdGwuZW50cnlzaXplID0gc2l6ZW9mKHJlbW90 ZUNvbm5IYXNoRW50KTsKLQotCXJldHVybiBoYXNoX2NyZWF0ZSgiUmVtb3RlIENvbiBoYXNoIiwg TlVNQ09OTiwgJmN0bCwKLQkJCQkJICAgSEFTSF9FTEVNIHwgSEFTSF9TVFJJTkdTKTsKKwlyZXR1 cm4gaGFzaF9tYWtlX2N4dChyZW1vdGVDb25uSGFzaEVudCwgbmFtZSwKKwkJCQkJCSAiUmVtb3Rl IENvbiBoYXNoIiwgTlVNQ09OTiwKKwkJCQkJCSBUb3BNZW1vcnlDb250ZXh0KTsKIH0KIAogc3Rh dGljIHJlbW90ZUNvbm4gKgpkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMv cGdfc3RhdF9zdGF0ZW1lbnRzLmMgYi9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9wZ19zdGF0 X3N0YXRlbWVudHMuYwppbmRleCBhZGM0OTNlOTg1MC4uNDcyMjdmODU3MjEgMTAwNjQ0Ci0tLSBh L2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3BnX3N0YXRfc3RhdGVtZW50cy5jCisrKyBiL2Nv bnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3BnX3N0YXRfc3RhdGVtZW50cy5jCkBAIC01MTcsNyAr NTE3LDYgQEAgc3RhdGljIHZvaWQKIHBnc3Nfc2htZW1fc3RhcnR1cCh2b2lkKQogewogCWJvb2wJ CWZvdW5kOwotCUhBU0hDVEwJCWluZm87CiAJRklMRQkgICAqZmlsZSA9IE5VTEw7CiAJRklMRQkg ICAqcWZpbGUgPSBOVUxMOwogCXVpbnQzMgkJaGVhZGVyOwpAQCAtNTU3LDEyICs1NTYsOSBAQCBw Z3NzX3NobWVtX3N0YXJ0dXAodm9pZCkKIAkJcGdzcy0+c3RhdHMuc3RhdHNfcmVzZXQgPSBHZXRD dXJyZW50VGltZXN0YW1wKCk7CiAJfQogCi0JaW5mby5rZXlzaXplID0gc2l6ZW9mKHBnc3NIYXNo S2V5KTsKLQlpbmZvLmVudHJ5c2l6ZSA9IHNpemVvZihwZ3NzRW50cnkpOwotCXBnc3NfaGFzaCA9 IFNobWVtSW5pdEhhc2goInBnX3N0YXRfc3RhdGVtZW50cyBoYXNoIiwKLQkJCQkJCQkgIHBnc3Nf bWF4LCBwZ3NzX21heCwKLQkJCQkJCQkgICZpbmZvLAotCQkJCQkJCSAgSEFTSF9FTEVNIHwgSEFT SF9CTE9CUyk7CisJcGdzc19oYXNoID0gc2htZW1faGFzaF9tYWtlKHBnc3NFbnRyeSwga2V5LAor CQkJCQkJCQkicGdfc3RhdF9zdGF0ZW1lbnRzIGhhc2giLAorCQkJCQkJCQlwZ3NzX21heCwgcGdz c19tYXgpOwogCiAJTFdMb2NrUmVsZWFzZShBZGRpblNobWVtSW5pdExvY2spOwogCmRpZmYgLS1n aXQgYS9jb250cmliL3BnX3RyZ20vdHJnbV9yZWdleHAuYyBiL2NvbnRyaWIvcGdfdHJnbS90cmdt X3JlZ2V4cC5jCmluZGV4IDFkMWI1ZmUzMDRkLi5lY2Q0ZDY3Nzk0OCAxMDA2NDQKLS0tIGEvY29u dHJpYi9wZ190cmdtL3RyZ21fcmVnZXhwLmMKKysrIGIvY29udHJpYi9wZ190cmdtL3RyZ21fcmVn ZXhwLmMKQEAgLTg5Myw3ICs4OTMsNiBAQCBjb252ZXJ0UGdXY2hhcihwZ193Y2hhciBjLCB0cmdt X21iX2NoYXIgKnJlc3VsdCkKIHN0YXRpYyB2b2lkCiB0cmFuc2Zvcm1HcmFwaChUcmdtTkZBICp0 cmdtTkZBKQogewotCUhBU0hDVEwJCWhhc2hDdGw7CiAJVHJnbVN0YXRlS2V5IGluaXRrZXk7CiAJ VHJnbVN0YXRlICAqaW5pdHN0YXRlOwogCUxpc3RDZWxsICAgKmxjOwpAQCAtOTA1LDEzICs5MDQs NyBAQCB0cmFuc2Zvcm1HcmFwaChUcmdtTkZBICp0cmdtTkZBKQogCXRyZ21ORkEtPm92ZXJmbG93 ZWQgPSBmYWxzZTsKIAogCS8qIENyZWF0ZSBoYXNodGFibGUgZm9yIHN0YXRlcyAqLwotCWhhc2hD dGwua2V5c2l6ZSA9IHNpemVvZihUcmdtU3RhdGVLZXkpOwotCWhhc2hDdGwuZW50cnlzaXplID0g c2l6ZW9mKFRyZ21TdGF0ZSk7Ci0JaGFzaEN0bC5oY3h0ID0gQ3VycmVudE1lbW9yeUNvbnRleHQ7 Ci0JdHJnbU5GQS0+c3RhdGVzID0gaGFzaF9jcmVhdGUoIlRyaWdyYW0gTkZBIiwKLQkJCQkJCQkJ ICAxMDI0LAotCQkJCQkJCQkgICZoYXNoQ3RsLAotCQkJCQkJCQkgIEhBU0hfRUxFTSB8IEhBU0hf QkxPQlMgfCBIQVNIX0NPTlRFWFQpOworCXRyZ21ORkEtPnN0YXRlcyA9IGhhc2hfbWFrZShUcmdt U3RhdGUsIHN0YXRlS2V5LCAiVHJpZ3JhbSBORkEiLCAxMDI0KTsKIAl0cmdtTkZBLT5uc3RhdGVz ID0gMDsKIAogCS8qIENyZWF0ZSBpbml0aWFsIHN0YXRlOiBhbWJpZ3VvdXMgcHJlZml4LCBORkEn cyBpbml0aWFsIHN0YXRlICovCmRpZmYgLS1naXQgYS9jb250cmliL3Bvc3RncmVzX2Zkdy9jb25u ZWN0aW9uLmMgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9jb25uZWN0aW9uLmMKaW5kZXggNDg3YTFh MjMxNzAuLjVjNzdjOWVjZGU1IDEwMDY0NAotLS0gYS9jb250cmliL3Bvc3RncmVzX2Zkdy9jb25u ZWN0aW9uLmMKKysrIGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvY29ubmVjdGlvbi5jCkBAIC0yMTQs MTcgKzIxNCwxMyBAQCBHZXRDb25uZWN0aW9uKFVzZXJNYXBwaW5nICp1c2VyLCBib29sIHdpbGxf cHJlcF9zdG10LCBQZ0Zkd0Nvbm5TdGF0ZSAqKnN0YXRlKQogCS8qIEZpcnN0IHRpbWUgdGhyb3Vn aCwgaW5pdGlhbGl6ZSBjb25uZWN0aW9uIGNhY2hlIGhhc2h0YWJsZSAqLwogCWlmIChDb25uZWN0 aW9uSGFzaCA9PSBOVUxMKQogCXsKLQkJSEFTSENUTAkJY3RsOwotCiAJCWlmIChwZ2Zkd193ZV9n ZXRfcmVzdWx0ID09IDApCiAJCQlwZ2Zkd193ZV9nZXRfcmVzdWx0ID0KIAkJCQlXYWl0RXZlbnRF eHRlbnNpb25OZXcoIlBvc3RncmVzRmR3R2V0UmVzdWx0Iik7CiAKLQkJY3RsLmtleXNpemUgPSBz aXplb2YoQ29ubkNhY2hlS2V5KTsKLQkJY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihDb25uQ2FjaGVF bnRyeSk7Ci0JCUNvbm5lY3Rpb25IYXNoID0gaGFzaF9jcmVhdGUoInBvc3RncmVzX2ZkdyBjb25u ZWN0aW9ucyIsIDgsCi0JCQkJCQkJCQkgJmN0bCwKLQkJCQkJCQkJCSBIQVNIX0VMRU0gfCBIQVNI X0JMT0JTKTsKKwkJQ29ubmVjdGlvbkhhc2ggPSBoYXNoX21ha2VfY3h0KENvbm5DYWNoZUVudHJ5 LCBrZXksCisJCQkJCQkJCQkgICAicG9zdGdyZXNfZmR3IGNvbm5lY3Rpb25zIiwgOCwKKwkJCQkJ CQkJCSAgIFRvcE1lbW9yeUNvbnRleHQpOwogCiAJCS8qCiAJCSAqIFJlZ2lzdGVyIHNvbWUgY2Fs bGJhY2sgZnVuY3Rpb25zIHRoYXQgbWFuYWdlIGNvbm5lY3Rpb24gY2xlYW51cC4KZGlmZiAtLWdp dCBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3NoaXBwYWJsZS5jIGIvY29udHJpYi9wb3N0Z3Jlc19m ZHcvc2hpcHBhYmxlLmMKaW5kZXggZDMyZDNkMGU0NjEuLmVjMTg1MjQ5MGUwIDEwMDY0NAotLS0g YS9jb250cmliL3Bvc3RncmVzX2Zkdy9zaGlwcGFibGUuYworKysgYi9jb250cmliL3Bvc3RncmVz X2Zkdy9zaGlwcGFibGUuYwpAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgInBvc3RncmVzX2Zk dy5oIgogI2luY2x1ZGUgInV0aWxzL2hzZWFyY2guaCIKICNpbmNsdWRlICJ1dGlscy9pbnZhbC5o IgorI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUu aCIKIAogLyogSGFzaCB0YWJsZSBmb3IgY2FjaGluZyB0aGUgcmVzdWx0cyBvZiBzaGlwcGFiaWxp dHkgbG9va3VwcyAqLwpAQCAtOTAsMTMgKzkxLDEwIEBAIEludmFsaWRhdGVTaGlwcGFibGVDYWNo ZUNhbGxiYWNrKERhdHVtIGFyZywgaW50IGNhY2hlaWQsIHVpbnQzMiBoYXNodmFsdWUpCiBzdGF0 aWMgdm9pZAogSW5pdGlhbGl6ZVNoaXBwYWJsZUNhY2hlKHZvaWQpCiB7Ci0JSEFTSENUTAkJY3Rs OwotCiAJLyogQ3JlYXRlIHRoZSBoYXNoIHRhYmxlLiAqLwotCWN0bC5rZXlzaXplID0gc2l6ZW9m KFNoaXBwYWJsZUNhY2hlS2V5KTsKLQljdGwuZW50cnlzaXplID0gc2l6ZW9mKFNoaXBwYWJsZUNh Y2hlRW50cnkpOwotCVNoaXBwYWJsZUNhY2hlSGFzaCA9Ci0JCWhhc2hfY3JlYXRlKCJTaGlwcGFi aWxpdHkgY2FjaGUiLCAyNTYsICZjdGwsIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMpOworCVNoaXBw YWJsZUNhY2hlSGFzaCA9IGhhc2hfbWFrZV9jeHQoU2hpcHBhYmxlQ2FjaGVFbnRyeSwga2V5LAor CQkJCQkJCQkJICAgIlNoaXBwYWJpbGl0eSBjYWNoZSIsIDI1NiwKKwkJCQkJCQkJCSAgIFRvcE1l bW9yeUNvbnRleHQpOwogCiAJLyogU2V0IHVwIGludmFsaWRhdGlvbiBjYWxsYmFjayBvbiBwZ19m b3JlaWduX3NlcnZlci4gKi8KIAlDYWNoZVJlZ2lzdGVyU3lzY2FjaGVDYWxsYmFjayhGT1JFSUdO U0VSVkVST0lELApkaWZmIC0tZ2l0IGEvY29udHJpYi90YWJsZWZ1bmMvdGFibGVmdW5jLmMgYi9j b250cmliL3RhYmxlZnVuYy90YWJsZWZ1bmMuYwppbmRleCBjYTI0MzRjNmUxOS4uNDI2ZjRiMjM2 YTIgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvdGFibGVmdW5jL3RhYmxlZnVuYy5jCisrKyBiL2NvbnRy aWIvdGFibGVmdW5jL3RhYmxlZnVuYy5jCkBAIC03MDUsMjQgKzcwNSwxNyBAQCBzdGF0aWMgSFRB QiAqCiBsb2FkX2NhdGVnb3JpZXNfaGFzaChjaGFyICpjYXRzX3NxbCwgTWVtb3J5Q29udGV4dCBw ZXJfcXVlcnlfY3R4KQogewogCUhUQUIJICAgKmNyb3NzdGFiX2hhc2g7Ci0JSEFTSENUTAkJY3Rs OwogCWludAkJCXJldDsKIAl1aW50NjQJCXByb2M7CiAJTWVtb3J5Q29udGV4dCBTUEljb250ZXh0 OwogCi0JLyogaW5pdGlhbGl6ZSB0aGUgY2F0ZWdvcnkgaGFzaCB0YWJsZSAqLwotCWN0bC5rZXlz aXplID0gTUFYX0NBVE5BTUVfTEVOOwotCWN0bC5lbnRyeXNpemUgPSBzaXplb2YoY3Jvc3N0YWJf SGFzaEVudCk7Ci0JY3RsLmhjeHQgPSBwZXJfcXVlcnlfY3R4OwotCiAJLyoKLQkgKiB1c2UgSU5J VF9DQVRTLCBkZWZpbmVkIGFib3ZlIGFzIGEgZ3Vlc3Mgb2YgaG93IG1hbnkgaGFzaCB0YWJsZSBl bnRyaWVzCi0JICogdG8gY3JlYXRlLCBpbml0aWFsbHkKKwkgKiBJbml0aWFsaXplIHRoZSBjYXRl Z29yeSBoYXNoIHRhYmxlLiBVc2UgSU5JVF9DQVRTLCBkZWZpbmVkIGFib3ZlIGFzIGEKKwkgKiBn dWVzcyBvZiBob3cgbWFueSBoYXNoIHRhYmxlIGVudHJpZXMgdG8gY3JlYXRlLCBpbml0aWFsbHku CiAJICovCi0JY3Jvc3N0YWJfaGFzaCA9IGhhc2hfY3JlYXRlKCJjcm9zc3RhYiBoYXNoIiwKLQkJ CQkJCQkJSU5JVF9DQVRTLAotCQkJCQkJCQkmY3RsLAotCQkJCQkJCQlIQVNIX0VMRU0gfCBIQVNI X1NUUklOR1MgfCBIQVNIX0NPTlRFWFQpOworCWNyb3NzdGFiX2hhc2ggPSBoYXNoX21ha2VfY3h0 KGNyb3NzdGFiX0hhc2hFbnQsIGludGVybmFsX2NhdG5hbWUsCisJCQkJCQkJCSAgImNyb3NzdGFi IGhhc2giLCBJTklUX0NBVFMsCisJCQkJCQkJCSAgcGVyX3F1ZXJ5X2N0eCk7CiAKIAkvKiBDb25u ZWN0IHRvIFNQSSBtYW5hZ2VyICovCiAJU1BJX2Nvbm5lY3QoKTsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9jb21tb24vaGVhcHR1cGxlLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvY29t bW9uL2hlYXB0dXBsZS5jCmluZGV4IDYxMzY3YjMyMzVhLi40OTc4NzdkNjY3ZiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi9oZWFwdHVwbGUuYworKysgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvY29tbW9uL2hlYXB0dXBsZS5jCkBAIC0xMjUsMTggKzEyNSw5IEBAIG1pc3Npbmdf bWF0Y2goY29uc3Qgdm9pZCAqa2V5MSwgY29uc3Qgdm9pZCAqa2V5MiwgU2l6ZSBrZXlzaXplKQog c3RhdGljIHZvaWQKIGluaXRfbWlzc2luZ19jYWNoZSh2b2lkKQogewotCUhBU0hDVEwJCWhhc2hf Y3RsOwotCi0JaGFzaF9jdGwua2V5c2l6ZSA9IHNpemVvZihtaXNzaW5nX2NhY2hlX2tleSk7Ci0J aGFzaF9jdGwuZW50cnlzaXplID0gc2l6ZW9mKG1pc3NpbmdfY2FjaGVfa2V5KTsKLQloYXNoX2N0 bC5oY3h0ID0gVG9wTWVtb3J5Q29udGV4dDsKLQloYXNoX2N0bC5oYXNoID0gbWlzc2luZ19oYXNo OwotCWhhc2hfY3RsLm1hdGNoID0gbWlzc2luZ19tYXRjaDsKIAltaXNzaW5nX2NhY2hlID0KLQkJ aGFzaF9jcmVhdGUoIk1pc3NpbmcgVmFsdWVzIENhY2hlIiwKLQkJCQkJMzIsCi0JCQkJCSZoYXNo X2N0bCwKLQkJCQkJSEFTSF9FTEVNIHwgSEFTSF9DT05URVhUIHwgSEFTSF9GVU5DVElPTiB8IEhB U0hfQ09NUEFSRSk7CisJCWhhc2hzZXRfbWFrZV9mbl9jeHQobWlzc2luZ19jYWNoZV9rZXksICJN aXNzaW5nIFZhbHVlcyBDYWNoZSIsIDMyLAorCQkJCQkJCW1pc3NpbmdfaGFzaCwgbWlzc2luZ19t YXRjaCwgVG9wTWVtb3J5Q29udGV4dCk7CiB9CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3RidWlsZC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dp c3QvZ2lzdGJ1aWxkLmMKaW5kZXggN2Y1N2M3ODdmNGMuLjA5ZjExYzQ1OWQ3IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0YnVpbGQuYworKysgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvZ2lzdC9naXN0YnVpbGQuYwpAQCAtMTUxNSwxNSArMTUxNSw4IEBAIHR5cGVkZWYgc3Ry dWN0CiBzdGF0aWMgdm9pZAogZ2lzdEluaXRQYXJlbnRNYXAoR0lTVEJ1aWxkU3RhdGUgKmJ1aWxk c3RhdGUpCiB7Ci0JSEFTSENUTAkJaGFzaEN0bDsKLQotCWhhc2hDdGwua2V5c2l6ZSA9IHNpemVv ZihCbG9ja051bWJlcik7Ci0JaGFzaEN0bC5lbnRyeXNpemUgPSBzaXplb2YoUGFyZW50TWFwRW50 cnkpOwotCWhhc2hDdGwuaGN4dCA9IEN1cnJlbnRNZW1vcnlDb250ZXh0OwotCWJ1aWxkc3RhdGUt PnBhcmVudE1hcCA9IGhhc2hfY3JlYXRlKCJnaXN0YnVpbGQgcGFyZW50IG1hcCIsCi0JCQkJCQkJ CQkJMTAyNCwKLQkJCQkJCQkJCQkmaGFzaEN0bCwKLQkJCQkJCQkJCQlIQVNIX0VMRU0gfCBIQVNI X0JMT0JTIHwgSEFTSF9DT05URVhUKTsKKwlidWlsZHN0YXRlLT5wYXJlbnRNYXAgPSBoYXNoX21h a2UoUGFyZW50TWFwRW50cnksIGNoaWxkYmxrbm8sCisJCQkJCQkJCQkgICJnaXN0YnVpbGQgcGFy ZW50IG1hcCIsIDEwMjQpOwogfQogCiBzdGF0aWMgdm9pZApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvYWNjZXNzL2dpc3QvZ2lzdGJ1aWxkYnVmZmVycy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dp c3QvZ2lzdGJ1aWxkYnVmZmVycy5jCmluZGV4IDMyMTNjZjQ1YWE2Li4wMjlhZjg1NDJmOSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdGJ1aWxkYnVmZmVycy5jCisrKyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3RidWlsZGJ1ZmZlcnMuYwpAQCAtNDQsNyArNDQs NiBAQCBHSVNUQnVpbGRCdWZmZXJzICoKIGdpc3RJbml0QnVpbGRCdWZmZXJzKGludCBwYWdlc1Bl ckJ1ZmZlciwgaW50IGxldmVsU3RlcCwgaW50IG1heExldmVsKQogewogCUdJU1RCdWlsZEJ1ZmZl cnMgKmdmYmI7Ci0JSEFTSENUTAkJaGFzaEN0bDsKIAogCWdmYmIgPSBwYWxsb2Nfb2JqZWN0KEdJ U1RCdWlsZEJ1ZmZlcnMpOwogCWdmYmItPnBhZ2VzUGVyQnVmZmVyID0gcGFnZXNQZXJCdWZmZXI7 CkBAIC03MiwxMyArNzEsOCBAQCBnaXN0SW5pdEJ1aWxkQnVmZmVycyhpbnQgcGFnZXNQZXJCdWZm ZXIsIGludCBsZXZlbFN0ZXAsIGludCBtYXhMZXZlbCkKIAkgKiBub2RlQnVmZmVyc1RhYiBoYXNo IGlzIGFzc29jaWF0aW9uIGJldHdlZW4gaW5kZXggYmxvY2tzIGFuZCBpdCdzCiAJICogYnVmZmVy cy4KIAkgKi8KLQloYXNoQ3RsLmtleXNpemUgPSBzaXplb2YoQmxvY2tOdW1iZXIpOwotCWhhc2hD dGwuZW50cnlzaXplID0gc2l6ZW9mKEdJU1ROb2RlQnVmZmVyKTsKLQloYXNoQ3RsLmhjeHQgPSBD dXJyZW50TWVtb3J5Q29udGV4dDsKLQlnZmJiLT5ub2RlQnVmZmVyc1RhYiA9IGhhc2hfY3JlYXRl KCJnaXN0YnVpbGRidWZmZXJzIiwKLQkJCQkJCQkJCSAgIDEwMjQsCi0JCQkJCQkJCQkgICAmaGFz aEN0bCwKLQkJCQkJCQkJCSAgIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBIQVNIX0NPTlRFWFQp OworCWdmYmItPm5vZGVCdWZmZXJzVGFiID0gaGFzaF9tYWtlKEdJU1ROb2RlQnVmZmVyLCBub2Rl QmxvY2tudW0sCisJCQkJCQkJCQkgImdpc3RidWlsZGJ1ZmZlcnMiLCAxMDI0KTsKIAogCWdmYmIt PmJ1ZmZlckVtcHR5aW5nUXVldWUgPSBOSUw7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oYXNoL2hhc2hwYWdlLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNocGFnZS5j CmluZGV4IDhlMjIwYTNhZTE2Li45OWViMjkxZTgzMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv YWNjZXNzL2hhc2gvaGFzaHBhZ2UuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNo cGFnZS5jCkBAIC0xMzU2LDcgKzEzNTYsNiBAQCB2b2lkCiBfaGFzaF9maW5pc2hfc3BsaXQoUmVs YXRpb24gcmVsLCBCdWZmZXIgbWV0YWJ1ZiwgQnVmZmVyIG9idWYsIEJ1Y2tldCBvYnVja2V0LAog CQkJCSAgIHVpbnQzMiBtYXhidWNrZXQsIHVpbnQzMiBoaWdobWFzaywgdWludDMyIGxvd21hc2sp CiB7Ci0JSEFTSENUTAkJaGFzaF9jdGw7CiAJSFRBQgkgICAqdGlkaHRhYjsKIAlCdWZmZXIJCWJ1 Y2tldF9uYnVmID0gSW52YWxpZEJ1ZmZlcjsKIAlCdWZmZXIJCW5idWY7CkBAIC0xMzY3LDE2ICsx MzY2LDggQEAgX2hhc2hfZmluaXNoX3NwbGl0KFJlbGF0aW9uIHJlbCwgQnVmZmVyIG1ldGFidWYs IEJ1ZmZlciBvYnVmLCBCdWNrZXQgb2J1Y2tldCwKIAlCdWNrZXQJCW5idWNrZXQ7CiAJYm9vbAkJ Zm91bmQ7CiAKLQkvKiBJbml0aWFsaXplIGhhc2ggdGFibGVzIHVzZWQgdG8gdHJhY2sgVElEcyAq LwotCWhhc2hfY3RsLmtleXNpemUgPSBzaXplb2YoSXRlbVBvaW50ZXJEYXRhKTsKLQloYXNoX2N0 bC5lbnRyeXNpemUgPSBzaXplb2YoSXRlbVBvaW50ZXJEYXRhKTsKLQloYXNoX2N0bC5oY3h0ID0g Q3VycmVudE1lbW9yeUNvbnRleHQ7Ci0KLQl0aWRodGFiID0KLQkJaGFzaF9jcmVhdGUoImJ1Y2tl dCBjdGlkcyIsCi0JCQkJCTI1NiwJCS8qIGFyYml0cmFyeSBpbml0aWFsIHNpemUgKi8KLQkJCQkJ Jmhhc2hfY3RsLAotCQkJCQlIQVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwgSEFTSF9DT05URVhUKTsK KwkvKiBJbml0aWFsaXplIGhhc2ggdGFibGVzIHVzZWQgdG8gdHJhY2sgVElEcyAod2l0aCBhcmJp dHJhcnkgaW5pdGlhbCBzaXplKSAqLworCXRpZGh0YWIgPSBoYXNoc2V0X21ha2UoSXRlbVBvaW50 ZXJEYXRhLCAiYnVja2V0IGN0aWRzIiwgMjU2KTsKIAogCWJ1Y2tldF9uYmxrbm8gPSBuYmxrbm8g PSBfaGFzaF9nZXRfbmV3YmxvY2tfZnJvbV9vbGRidWNrZXQocmVsLCBvYnVja2V0KTsKIApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcmV3cml0ZWhlYXAuYyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL3Jld3JpdGVoZWFwLmMKaW5kZXggYmFlM2EyZGE3N2EuLjM2ODc3NGI1 MjcwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9yZXdyaXRlaGVhcC5jCisr KyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Jld3JpdGVoZWFwLmMKQEAgLTIzNyw3ICsyMzcs NiBAQCBiZWdpbl9oZWFwX3Jld3JpdGUoUmVsYXRpb24gb2xkX2hlYXAsIFJlbGF0aW9uIG5ld19o ZWFwLCBUcmFuc2FjdGlvbklkIG9sZGVzdF94bQogCVJld3JpdGVTdGF0ZSBzdGF0ZTsKIAlNZW1v cnlDb250ZXh0IHJ3X2N4dDsKIAlNZW1vcnlDb250ZXh0IG9sZF9jeHQ7Ci0JSEFTSENUTAkJaGFz aF9jdGw7CiAKIAkvKgogCSAqIFRvIGVhc2UgY2xlYW51cCwgbWFrZSBhIHNlcGFyYXRlIGNvbnRl eHQgdGhhdCB3aWxsIGNvbnRhaW4gdGhlCkBAIC0yNjIsMjQgKzI2MSwxOSBAQCBiZWdpbl9oZWFw X3Jld3JpdGUoUmVsYXRpb24gb2xkX2hlYXAsIFJlbGF0aW9uIG5ld19oZWFwLCBUcmFuc2FjdGlv bklkIG9sZGVzdF94bQogCXN0YXRlLT5yc19jeHQgPSByd19jeHQ7CiAJc3RhdGUtPnJzX2J1bGtz dGF0ZSA9IHNtZ3JfYnVsa19zdGFydF9yZWwobmV3X2hlYXAsIE1BSU5fRk9SS05VTSk7CiAKLQkv KiBJbml0aWFsaXplIGhhc2ggdGFibGVzIHVzZWQgdG8gdHJhY2sgdXBkYXRlIGNoYWlucyAqLwot CWhhc2hfY3RsLmtleXNpemUgPSBzaXplb2YoVGlkSGFzaEtleSk7Ci0JaGFzaF9jdGwuZW50cnlz aXplID0gc2l6ZW9mKFVucmVzb2x2ZWRUdXBEYXRhKTsKLQloYXNoX2N0bC5oY3h0ID0gc3RhdGUt PnJzX2N4dDsKLQorCS8qCisJICogSW5pdGlhbGl6ZSBoYXNoIHRhYmxlcyB1c2VkIHRvIHRyYWNr IHVwZGF0ZSBjaGFpbnMgKHdpdGggYXJiaXRyYXJ5CisJICogaW5pdGlhbCBzaXplcykKKwkgKi8K IAlzdGF0ZS0+cnNfdW5yZXNvbHZlZF90dXBzID0KLQkJaGFzaF9jcmVhdGUoIlJld3JpdGUgLyBV bnJlc29sdmVkIGN0aWRzIiwKLQkJCQkJMTI4LAkJLyogYXJiaXRyYXJ5IGluaXRpYWwgc2l6ZSAq LwotCQkJCQkmaGFzaF9jdGwsCi0JCQkJCUhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBIQVNIX0NP TlRFWFQpOwotCi0JaGFzaF9jdGwuZW50cnlzaXplID0gc2l6ZW9mKE9sZFRvTmV3TWFwcGluZ0Rh dGEpOworCQloYXNoX21ha2VfY3h0KFVucmVzb2x2ZWRUdXBEYXRhLCBrZXksCisJCQkJCSAgIlJl d3JpdGUgLyBVbnJlc29sdmVkIGN0aWRzIiwgMTI4LAorCQkJCQkgIHN0YXRlLT5yc19jeHQpOwog CiAJc3RhdGUtPnJzX29sZF9uZXdfdGlkX21hcCA9Ci0JCWhhc2hfY3JlYXRlKCJSZXdyaXRlIC8g T2xkIHRvIG5ldyB0aWQgbWFwIiwKLQkJCQkJMTI4LAkJLyogYXJiaXRyYXJ5IGluaXRpYWwgc2l6 ZSAqLwotCQkJCQkmaGFzaF9jdGwsCi0JCQkJCUhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBIQVNI X0NPTlRFWFQpOworCQloYXNoX21ha2VfY3h0KE9sZFRvTmV3TWFwcGluZ0RhdGEsIGtleSwKKwkJ CQkJICAiUmV3cml0ZSAvIE9sZCB0byBuZXcgdGlkIG1hcCIsIDEyOCwKKwkJCQkJICBzdGF0ZS0+ cnNfY3h0KTsKIAogCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRfY3h0KTsKIApAQCAtNzU3LDcg Kzc1MSw2IEBAIHJhd19oZWFwX2luc2VydChSZXdyaXRlU3RhdGUgc3RhdGUsIEhlYXBUdXBsZSB0 dXApCiBzdGF0aWMgdm9pZAogbG9naWNhbF9iZWdpbl9oZWFwX3Jld3JpdGUoUmV3cml0ZVN0YXRl IHN0YXRlKQogewotCUhBU0hDVEwJCWhhc2hfY3RsOwogCVRyYW5zYWN0aW9uSWQgbG9naWNhbF94 bWluOwogCiAJLyoKQEAgLTc4OCwxNSArNzgxLDExIEBAIGxvZ2ljYWxfYmVnaW5faGVhcF9yZXdy aXRlKFJld3JpdGVTdGF0ZSBzdGF0ZSkKIAlzdGF0ZS0+cnNfYmVnaW5fbHNuID0gR2V0WExvZ0lu c2VydFJlY1B0cigpOwogCXN0YXRlLT5yc19udW1fcmV3cml0ZV9tYXBwaW5ncyA9IDA7CiAKLQlo YXNoX2N0bC5rZXlzaXplID0gc2l6ZW9mKFRyYW5zYWN0aW9uSWQpOwotCWhhc2hfY3RsLmVudHJ5 c2l6ZSA9IHNpemVvZihSZXdyaXRlTWFwcGluZ0ZpbGUpOwotCWhhc2hfY3RsLmhjeHQgPSBzdGF0 ZS0+cnNfY3h0OwotCiAJc3RhdGUtPnJzX2xvZ2ljYWxfbWFwcGluZ3MgPQotCQloYXNoX2NyZWF0 ZSgiTG9naWNhbCByZXdyaXRlIG1hcHBpbmciLAotCQkJCQkxMjgsCQkvKiBhcmJpdHJhcnkgaW5p dGlhbCBzaXplICovCi0JCQkJCSZoYXNoX2N0bCwKLQkJCQkJSEFTSF9FTEVNIHwgSEFTSF9CTE9C UyB8IEhBU0hfQ09OVEVYVCk7CisJCWhhc2hfbWFrZV9jeHQoUmV3cml0ZU1hcHBpbmdGaWxlLCB4 aWQsCisJCQkJCSAgIkxvZ2ljYWwgcmV3cml0ZSBtYXBwaW5nIiwKKwkJCQkJICAxMjgsCQkvKiBh cmJpdHJhcnkgaW5pdGlhbCBzaXplICovCisJCQkJCSAgc3RhdGUtPnJzX2N4dCk7CiB9CiAKIC8q CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ncHJlZmV0Y2hlci5j IGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3ByZWZldGNoZXIuYwppbmRleCAzYzNm MDY3YWFmYi4uMDJlNDE3ODBkZDkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFu c2FtL3hsb2dwcmVmZXRjaGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxv Z3ByZWZldGNoZXIuYwpAQCAtMzYyLDE1ICszNjIsMTMgQEAgWExvZ1ByZWZldGNoZXIgKgogWExv Z1ByZWZldGNoZXJBbGxvY2F0ZShYTG9nUmVhZGVyU3RhdGUgKnJlYWRlcikKIHsKIAlYTG9nUHJl ZmV0Y2hlciAqcHJlZmV0Y2hlcjsKLQlIQVNIQ1RMCQljdGw7CiAKIAlwcmVmZXRjaGVyID0gcGFs bG9jMF9vYmplY3QoWExvZ1ByZWZldGNoZXIpOwogCXByZWZldGNoZXItPnJlYWRlciA9IHJlYWRl cjsKIAotCWN0bC5rZXlzaXplID0gc2l6ZW9mKFJlbEZpbGVMb2NhdG9yKTsKLQljdGwuZW50cnlz aXplID0gc2l6ZW9mKFhMb2dQcmVmZXRjaGVyRmlsdGVyKTsKLQlwcmVmZXRjaGVyLT5maWx0ZXJf dGFibGUgPSBoYXNoX2NyZWF0ZSgiWExvZ1ByZWZldGNoZXJGaWx0ZXJUYWJsZSIsIDEwMjQsCi0J CQkJCQkJCQkJICAgJmN0bCwgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyk7CisJcHJlZmV0Y2hlci0+ ZmlsdGVyX3RhYmxlID0gaGFzaF9tYWtlX2N4dChYTG9nUHJlZmV0Y2hlckZpbHRlciwgcmxvY2F0 b3IsCisJCQkJCQkJCQkJCSAiWExvZ1ByZWZldGNoZXJGaWx0ZXJUYWJsZSIsIDEwMjQsCisJCQkJ CQkJCQkJCSBUb3BNZW1vcnlDb250ZXh0KTsKIAlkbGlzdF9pbml0KCZwcmVmZXRjaGVyLT5maWx0 ZXJfcXVldWUpOwogCiAJU2hhcmVkU3RhdHMtPndhbF9kaXN0YW5jZSA9IDA7CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ndXRpbHMuYyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy90cmFuc2FtL3hsb2d1dGlscy5jCmluZGV4IDVmYmUzOTEzM2I4Li5kMTFlNDJjOTQ5MCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3V0aWxzLmMKKysrIGIv c3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3V0aWxzLmMKQEAgLTI3LDYgKzI3LDcgQEAK ICNpbmNsdWRlICJzdG9yYWdlL2ZkLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zbWdyLmgiCiAjaW5j bHVkZSAidXRpbHMvaHNlYXJjaC5oIgorI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAjaW5j bHVkZSAidXRpbHMvcmVsLmgiCiAKIApAQCAtMTMxLDE1ICsxMzIsOSBAQCBsb2dfaW52YWxpZF9w YWdlKFJlbEZpbGVMb2NhdG9yIGxvY2F0b3IsIEZvcmtOdW1iZXIgZm9ya25vLCBCbG9ja051bWJl ciBibGtubywKIAlpZiAoaW52YWxpZF9wYWdlX3RhYiA9PSBOVUxMKQogCXsKIAkJLyogY3JlYXRl IGhhc2ggdGFibGUgd2hlbiBmaXJzdCBuZWVkZWQgKi8KLQkJSEFTSENUTAkJY3RsOwotCi0JCWN0 bC5rZXlzaXplID0gc2l6ZW9mKHhsX2ludmFsaWRfcGFnZV9rZXkpOwotCQljdGwuZW50cnlzaXpl ID0gc2l6ZW9mKHhsX2ludmFsaWRfcGFnZSk7Ci0KLQkJaW52YWxpZF9wYWdlX3RhYiA9IGhhc2hf Y3JlYXRlKCJYTE9HIGludmFsaWQtcGFnZSB0YWJsZSIsCi0JCQkJCQkJCQkgICAxMDAsCi0JCQkJ CQkJCQkgICAmY3RsLAotCQkJCQkJCQkJICAgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyk7CisJCWlu dmFsaWRfcGFnZV90YWIgPSBoYXNoX21ha2VfY3h0KHhsX2ludmFsaWRfcGFnZSwga2V5LAorCQkJ CQkJCQkJCSAiWExPRyBpbnZhbGlkLXBhZ2UgdGFibGUiLCAxMDAsCisJCQkJCQkJCQkJIFRvcE1l bW9yeUNvbnRleHQpOwogCX0KIAogCS8qIHdlIGN1cnJlbnRseSBhc3N1bWUgeGxfaW52YWxpZF9w YWdlX2tleSBjb250YWlucyBubyBwYWRkaW5nICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9j YXRhbG9nL3BnX2VudW0uYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfZW51bS5jCmluZGV4IDMz YTQ2MTQ4NGQ0Li44NmM4YmFkYTU1NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9w Z19lbnVtLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19lbnVtLmMKQEAgLTI2NywxNSAr MjY3LDkgQEAgRW51bVZhbHVlc0RlbGV0ZShPaWQgZW51bVR5cGVPaWQpCiBzdGF0aWMgdm9pZAog aW5pdF91bmNvbW1pdHRlZF9lbnVtX3R5cGVzKHZvaWQpCiB7Ci0JSEFTSENUTAkJaGFzaF9jdGw7 Ci0KLQloYXNoX2N0bC5rZXlzaXplID0gc2l6ZW9mKE9pZCk7Ci0JaGFzaF9jdGwuZW50cnlzaXpl ID0gc2l6ZW9mKE9pZCk7Ci0JaGFzaF9jdGwuaGN4dCA9IFRvcFRyYW5zYWN0aW9uQ29udGV4dDsK LQl1bmNvbW1pdHRlZF9lbnVtX3R5cGVzID0gaGFzaF9jcmVhdGUoIlVuY29tbWl0dGVkIGVudW0g dHlwZXMiLAotCQkJCQkJCQkJCSAzMiwKLQkJCQkJCQkJCQkgJmhhc2hfY3RsLAotCQkJCQkJCQkJ CSBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwgSEFTSF9DT05URVhUKTsKKwl1bmNvbW1pdHRlZF9l bnVtX3R5cGVzID0gaGFzaHNldF9tYWtlX2N4dChPaWQsCisJCQkJCQkJCQkJCSAgIlVuY29tbWl0 dGVkIGVudW0gdHlwZXMiLCAzMiwKKwkJCQkJCQkJCQkJICBUb3BUcmFuc2FjdGlvbkNvbnRleHQp OwogfQogCiAvKgpAQCAtMjg0LDE1ICsyNzgsOSBAQCBpbml0X3VuY29tbWl0dGVkX2VudW1fdHlw ZXModm9pZCkKIHN0YXRpYyB2b2lkCiBpbml0X3VuY29tbWl0dGVkX2VudW1fdmFsdWVzKHZvaWQp CiB7Ci0JSEFTSENUTAkJaGFzaF9jdGw7Ci0KLQloYXNoX2N0bC5rZXlzaXplID0gc2l6ZW9mKE9p ZCk7Ci0JaGFzaF9jdGwuZW50cnlzaXplID0gc2l6ZW9mKE9pZCk7Ci0JaGFzaF9jdGwuaGN4dCA9 IFRvcFRyYW5zYWN0aW9uQ29udGV4dDsKLQl1bmNvbW1pdHRlZF9lbnVtX3ZhbHVlcyA9IGhhc2hf Y3JlYXRlKCJVbmNvbW1pdHRlZCBlbnVtIHZhbHVlcyIsCi0JCQkJCQkJCQkJICAzMiwKLQkJCQkJ CQkJCQkgICZoYXNoX2N0bCwKLQkJCQkJCQkJCQkgIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBI QVNIX0NPTlRFWFQpOworCXVuY29tbWl0dGVkX2VudW1fdmFsdWVzID0gaGFzaHNldF9tYWtlX2N4 dChPaWQsCisJCQkJCQkJCQkJCSAgICJVbmNvbW1pdHRlZCBlbnVtIHZhbHVlcyIsIDMyLAorCQkJ CQkJCQkJCQkgICBUb3BUcmFuc2FjdGlvbkNvbnRleHQpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19pbmhlcml0cy5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9w Z19pbmhlcml0cy5jCmluZGV4IGNlZjgwNjMzMTU3Li41Mzc3NjliMzlhZSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19pbmhlcml0cy5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFs b2cvcGdfaW5oZXJpdHMuYwpAQCAtMjU2LDE5ICsyNTYsMTIgQEAgZmluZF9hbGxfaW5oZXJpdG9y cyhPaWQgcGFyZW50cmVsSWQsIExPQ0tNT0RFIGxvY2ttb2RlLCBMaXN0ICoqbnVtcGFyZW50cykK IHsKIAkvKiBoYXNoIHRhYmxlIGZvciBPKDEpIHJlbF9vaWQgLT4gcmVsX251bXBhcmVudHMgY2Vs bCBsb29rdXAgKi8KIAlIVEFCCSAgICpzZWVuX3JlbHM7Ci0JSEFTSENUTAkJY3RsOwogCUxpc3QJ ICAgKnJlbHNfbGlzdCwKIAkJCSAgICpyZWxfbnVtcGFyZW50czsKIAlMaXN0Q2VsbCAgICpsOwog Ci0JY3RsLmtleXNpemUgPSBzaXplb2YoT2lkKTsKLQljdGwuZW50cnlzaXplID0gc2l6ZW9mKFNl ZW5SZWxzRW50cnkpOwotCWN0bC5oY3h0ID0gQ3VycmVudE1lbW9yeUNvbnRleHQ7Ci0KLQlzZWVu X3JlbHMgPSBoYXNoX2NyZWF0ZSgiZmluZF9hbGxfaW5oZXJpdG9ycyB0ZW1wb3JhcnkgdGFibGUi LAotCQkJCQkJCTMyLCAvKiBzdGFydCBzbWFsbCBhbmQgZXh0ZW5kICovCi0JCQkJCQkJJmN0bCwK LQkJCQkJCQlIQVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwgSEFTSF9DT05URVhUKTsKKwlzZWVuX3Jl bHMgPSBoYXNoX21ha2UoU2VlblJlbHNFbnRyeSwgcmVsX2lkLAorCQkJCQkJICAiZmluZF9hbGxf aW5oZXJpdG9ycyB0ZW1wb3JhcnkgdGFibGUiLCAzMik7CiAKIAkvKgogCSAqIFdlIGJ1aWxkIGEg bGlzdCBzdGFydGluZyB3aXRoIHRoZSBnaXZlbiByZWwgYW5kIGFkZGluZyBhbGwgZGlyZWN0IGFu ZApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zdG9yYWdlLmMgYi9zcmMvYmFja2Vu ZC9jYXRhbG9nL3N0b3JhZ2UuYwppbmRleCBlNDQzYTQ5OTNjNS4uZGIzZTA4MzE5YjUgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3RvcmFnZS5jCisrKyBiL3NyYy9iYWNrZW5kL2Nh dGFsb2cvc3RvcmFnZS5jCkBAIC05MCwxNSArOTAsOSBAQCBBZGRQZW5kaW5nU3luYyhjb25zdCBS ZWxGaWxlTG9jYXRvciAqcmxvY2F0b3IpCiAKIAkvKiBjcmVhdGUgdGhlIGhhc2ggaWYgbm90IHll dCAqLwogCWlmICghcGVuZGluZ1N5bmNIYXNoKQotCXsKLQkJSEFTSENUTAkJY3RsOwotCi0JCWN0 bC5rZXlzaXplID0gc2l6ZW9mKFJlbEZpbGVMb2NhdG9yKTsKLQkJY3RsLmVudHJ5c2l6ZSA9IHNp emVvZihQZW5kaW5nUmVsU3luYyk7Ci0JCWN0bC5oY3h0ID0gVG9wVHJhbnNhY3Rpb25Db250ZXh0 OwotCQlwZW5kaW5nU3luY0hhc2ggPSBoYXNoX2NyZWF0ZSgicGVuZGluZyBzeW5jIGhhc2giLCAx NiwgJmN0bCwKLQkJCQkJCQkJCSAgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhBU0hfQ09OVEVY VCk7Ci0JfQorCQlwZW5kaW5nU3luY0hhc2ggPSBoYXNoX21ha2VfY3h0KFBlbmRpbmdSZWxTeW5j LCBybG9jYXRvciwKKwkJCQkJCQkJCQkicGVuZGluZyBzeW5jIGhhc2giLCAxNiwKKwkJCQkJCQkJ CQlUb3BUcmFuc2FjdGlvbkNvbnRleHQpOwogCiAJcGVuZGluZyA9IGhhc2hfc2VhcmNoKHBlbmRp bmdTeW5jSGFzaCwgcmxvY2F0b3IsIEhBU0hfRU5URVIsICZmb3VuZCk7CiAJQXNzZXJ0KCFmb3Vu ZCk7CkBAIC02MDAsNyArNTk0LDYgQEAgdm9pZAogU2VyaWFsaXplUGVuZGluZ1N5bmNzKFNpemUg bWF4U2l6ZSwgY2hhciAqc3RhcnRBZGRyZXNzKQogewogCUhUQUIJICAgKnRtcGhhc2g7Ci0JSEFT SENUTAkJY3RsOwogCUhBU0hfU0VRX1NUQVRVUyBzY2FuOwogCVBlbmRpbmdSZWxTeW5jICpzeW5j OwogCVBlbmRpbmdSZWxEZWxldGUgKmRlbGV0ZTsKQEAgLTYxMSwxMiArNjA0LDggQEAgU2VyaWFs aXplUGVuZGluZ1N5bmNzKFNpemUgbWF4U2l6ZSwgY2hhciAqc3RhcnRBZGRyZXNzKQogCQlnb3Rv IHRlcm1pbmF0ZTsKIAogCS8qIENyZWF0ZSB0ZW1wb3JhcnkgaGFzaCB0byBjb2xsZWN0IGFjdGl2 ZSByZWxmaWxlbG9jYXRvcnMgKi8KLQljdGwua2V5c2l6ZSA9IHNpemVvZihSZWxGaWxlTG9jYXRv cik7Ci0JY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihSZWxGaWxlTG9jYXRvcik7Ci0JY3RsLmhjeHQg PSBDdXJyZW50TWVtb3J5Q29udGV4dDsKLQl0bXBoYXNoID0gaGFzaF9jcmVhdGUoInRtcCByZWxm aWxlbG9jYXRvcnMiLAotCQkJCQkJICBoYXNoX2dldF9udW1fZW50cmllcyhwZW5kaW5nU3luY0hh c2gpLCAmY3RsLAotCQkJCQkJICBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwgSEFTSF9DT05URVhU KTsKKwl0bXBoYXNoID0gaGFzaHNldF9tYWtlKFJlbEZpbGVMb2NhdG9yLCAidG1wIHJlbGZpbGVs b2NhdG9ycyIsCisJCQkJCQkgICBoYXNoX2dldF9udW1fZW50cmllcyhwZW5kaW5nU3luY0hhc2gp KTsKIAogCS8qIGNvbGxlY3QgYWxsIHJsb2NhdG9yIGZyb20gcGVuZGluZyBzeW5jcyAqLwogCWhh c2hfc2VxX2luaXQoJnNjYW4sIHBlbmRpbmdTeW5jSGFzaCk7CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9jb21tYW5kcy9hc3luYy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvYXN5bmMuYwppbmRl eCA0MGM0MmY1NzJlZC4uODE5YzMxMDdiYTAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1h bmRzL2FzeW5jLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvYXN5bmMuYwpAQCAtMjQxNCwy MCArMjQxNCwxNCBAQCBBZGRFdmVudFRvUGVuZGluZ05vdGlmaWVzKE5vdGlmaWNhdGlvbiAqbikK IAlpZiAobGlzdF9sZW5ndGgocGVuZGluZ05vdGlmaWVzLT5ldmVudHMpID49IE1JTl9IQVNIQUJM RV9OT1RJRklFUyAmJgogCQlwZW5kaW5nTm90aWZpZXMtPmhhc2h0YWIgPT0gTlVMTCkKIAl7Ci0J CUhBU0hDVEwJCWhhc2hfY3RsOwogCQlMaXN0Q2VsbCAgICpsOwogCiAJCS8qIENyZWF0ZSB0aGUg aGFzaCB0YWJsZSAqLwotCQloYXNoX2N0bC5rZXlzaXplID0gc2l6ZW9mKE5vdGlmaWNhdGlvbiAq KTsKLQkJaGFzaF9jdGwuZW50cnlzaXplID0gc2l6ZW9mKHN0cnVjdCBOb3RpZmljYXRpb25IYXNo KTsKLQkJaGFzaF9jdGwuaGFzaCA9IG5vdGlmaWNhdGlvbl9oYXNoOwotCQloYXNoX2N0bC5tYXRj aCA9IG5vdGlmaWNhdGlvbl9tYXRjaDsKLQkJaGFzaF9jdGwuaGN4dCA9IEN1clRyYW5zYWN0aW9u Q29udGV4dDsKIAkJcGVuZGluZ05vdGlmaWVzLT5oYXNodGFiID0KLQkJCWhhc2hfY3JlYXRlKCJQ ZW5kaW5nIE5vdGlmaWVzIiwKLQkJCQkJCTI1NkwsCi0JCQkJCQkmaGFzaF9jdGwsCi0JCQkJCQlI QVNIX0VMRU0gfCBIQVNIX0ZVTkNUSU9OIHwgSEFTSF9DT01QQVJFIHwgSEFTSF9DT05URVhUKTsK KwkJCWhhc2hfbWFrZV9mbl9jeHQoc3RydWN0IE5vdGlmaWNhdGlvbkhhc2gsIGV2ZW50LAorCQkJ CQkJCSAiUGVuZGluZyBOb3RpZmllcyIsIDI1NiwKKwkJCQkJCQkgbm90aWZpY2F0aW9uX2hhc2gs IG5vdGlmaWNhdGlvbl9tYXRjaCwKKwkJCQkJCQkgQ3VyVHJhbnNhY3Rpb25Db250ZXh0KTsKIAog CQkvKiBJbnNlcnQgYWxsIHRoZSBhbHJlYWR5LWV4aXN0aW5nIGV2ZW50cyAqLwogCQlmb3JlYWNo KGwsIHBlbmRpbmdOb3RpZmllcy0+ZXZlbnRzKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29t bWFuZHMvcHJlcGFyZS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jCmluZGV4IDVi ODZhNzI3NTg3Li5lYjFhN2VjZmViYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMv cHJlcGFyZS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYwpAQCAtMzcxLDE1 ICszNzEsOSBAQCBFdmFsdWF0ZVBhcmFtcyhQYXJzZVN0YXRlICpwc3RhdGUsIFByZXBhcmVkU3Rh dGVtZW50ICpwc3RtdCwgTGlzdCAqcGFyYW1zLAogc3RhdGljIHZvaWQKIEluaXRRdWVyeUhhc2hU YWJsZSh2b2lkKQogewotCUhBU0hDVEwJCWhhc2hfY3RsOwotCi0JaGFzaF9jdGwua2V5c2l6ZSA9 IE5BTUVEQVRBTEVOOwotCWhhc2hfY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihQcmVwYXJlZFN0YXRl bWVudCk7Ci0KLQlwcmVwYXJlZF9xdWVyaWVzID0gaGFzaF9jcmVhdGUoIlByZXBhcmVkIFF1ZXJp ZXMiLAotCQkJCQkJCQkgICAzMiwKLQkJCQkJCQkJICAgJmhhc2hfY3RsLAotCQkJCQkJCQkgICBI QVNIX0VMRU0gfCBIQVNIX1NUUklOR1MpOworCXByZXBhcmVkX3F1ZXJpZXMgPSBoYXNoX21ha2Vf Y3h0KFByZXBhcmVkU3RhdGVtZW50LCBzdG10X25hbWUsCisJCQkJCQkJCQkgIlByZXBhcmVkIFF1 ZXJpZXMiLCAzMiwKKwkJCQkJCQkJCSBUb3BNZW1vcnlDb250ZXh0KTsKIH0KIAogLyoKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3NlcXVlbmNlLmMgYi9zcmMvYmFja2VuZC9jb21t YW5kcy9zZXF1ZW5jZS5jCmluZGV4IGUxYjgwOGJiYjYwLi41YTI2ODNjMDczNSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvc2VxdWVuY2UuYworKysgYi9zcmMvYmFja2VuZC9jb21t YW5kcy9zZXF1ZW5jZS5jCkBAIC0xMTEzLDEzICsxMTEzLDkgQEAgbG9ja19hbmRfb3Blbl9zZXF1 ZW5jZShTZXFUYWJsZSBzZXEpCiBzdGF0aWMgdm9pZAogY3JlYXRlX3NlcV9oYXNodGFibGUodm9p ZCkKIHsKLQlIQVNIQ1RMCQljdGw7Ci0KLQljdGwua2V5c2l6ZSA9IHNpemVvZihPaWQpOwotCWN0 bC5lbnRyeXNpemUgPSBzaXplb2YoU2VxVGFibGVEYXRhKTsKLQotCXNlcWhhc2h0YWIgPSBoYXNo X2NyZWF0ZSgiU2VxdWVuY2UgdmFsdWVzIiwgMTYsICZjdGwsCi0JCQkJCQkJIEhBU0hfRUxFTSB8 IEhBU0hfQkxPQlMpOworCXNlcWhhc2h0YWIgPSBoYXNoX21ha2VfY3h0KFNlcVRhYmxlRGF0YSwg cmVsaWQsCisJCQkJCQkJICAgIlNlcXVlbmNlIHZhbHVlcyIsIDE2LAorCQkJCQkJCSAgIFRvcE1l bW9yeUNvbnRleHQpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMv dGFibGVjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwppbmRleCBmOTc2 YzBlNWM3ZS4uNDBhMzk5ODllYWEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3Rh YmxlY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCkBAIC0yMTYw LDE5ICsyMTYwLDkgQEAgRXhlY3V0ZVRydW5jYXRlR3V0cyhMaXN0ICpleHBsaWNpdF9yZWxzLAog CiAJCQkvKiBGaXJzdCB0aW1lIHRocm91Z2gsIGluaXRpYWxpemUgaGFzaHRhYmxlIGZvciBmb3Jl aWduIHRhYmxlcyAqLwogCQkJaWYgKCFmdF9odGFiKQotCQkJewotCQkJCUhBU0hDVEwJCWhjdGw7 Ci0KLQkJCQltZW1zZXQoJmhjdGwsIDAsIHNpemVvZihIQVNIQ1RMKSk7Ci0JCQkJaGN0bC5rZXlz aXplID0gc2l6ZW9mKE9pZCk7Ci0JCQkJaGN0bC5lbnRyeXNpemUgPSBzaXplb2YoRm9yZWlnblRy dW5jYXRlSW5mbyk7Ci0JCQkJaGN0bC5oY3h0ID0gQ3VycmVudE1lbW9yeUNvbnRleHQ7Ci0KLQkJ CQlmdF9odGFiID0gaGFzaF9jcmVhdGUoIlRSVU5DQVRFIGZvciBGb3JlaWduIFRhYmxlcyIsCi0J CQkJCQkJCQkgIDMyLAkvKiBzdGFydCBzbWFsbCBhbmQgZXh0ZW5kICovCi0JCQkJCQkJCQkgICZo Y3RsLAotCQkJCQkJCQkJICBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwgSEFTSF9DT05URVhUKTsK LQkJCX0KKwkJCQlmdF9odGFiID0gaGFzaF9tYWtlKEZvcmVpZ25UcnVuY2F0ZUluZm8sIHNlcnZl cmlkLAorCQkJCQkJCQkJIlRSVU5DQVRFIGZvciBGb3JlaWduIFRhYmxlcyIsCisJCQkJCQkJCQkz Mik7CS8qIHN0YXJ0IHNtYWxsIGFuZCBleHRlbmQgKi8KIAogCQkJLyogRmluZCBvciBjcmVhdGUg Y2FjaGVkIGVudHJ5IGZvciB0aGUgZm9yZWlnbiB0YWJsZSAqLwogCQkJZnRfaW5mbyA9IGhhc2hf c2VhcmNoKGZ0X2h0YWIsICZzZXJ2ZXJpZCwgSEFTSF9FTlRFUiwgJmZvdW5kKTsKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMKaW5kZXggNDZmZjZkYTgyODkuLjYzMzZhOTJiMjQ4 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYworKysg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYwpAQCAtNTEzMSwxNSArNTEz MSw5IEBAIEV4ZWNJbml0TW9kaWZ5VGFibGUoTW9kaWZ5VGFibGUgKm5vZGUsIEVTdGF0ZSAqZXN0 YXRlLCBpbnQgZWZsYWdzKQogI2VuZGlmCiAJaWYgKG5yZWxzID49IE1UX05SRUxTX0hBU0gpCiAJ ewotCQlIQVNIQ1RMCQloYXNoX2N0bDsKLQotCQloYXNoX2N0bC5rZXlzaXplID0gc2l6ZW9mKE9p ZCk7Ci0JCWhhc2hfY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihNVFRhcmdldFJlbExvb2t1cCk7Ci0J CWhhc2hfY3RsLmhjeHQgPSBDdXJyZW50TWVtb3J5Q29udGV4dDsKIAkJbXRzdGF0ZS0+bXRfcmVz dWx0T2lkSGFzaCA9Ci0JCQloYXNoX2NyZWF0ZSgiTW9kaWZ5VGFibGUgdGFyZ2V0IGhhc2giLAot CQkJCQkJbnJlbHMsICZoYXNoX2N0bCwKLQkJCQkJCUhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBI QVNIX0NPTlRFWFQpOworCQkJaGFzaF9tYWtlKE1UVGFyZ2V0UmVsTG9va3VwLCByZWxhdGlvbk9p ZCwKKwkJCQkJICAiTW9kaWZ5VGFibGUgdGFyZ2V0IGhhc2giLCBucmVscyk7CiAJCWZvciAoaSA9 IDA7IGkgPCBucmVsczsgaSsrKQogCQl7CiAJCQlPaWQJCQloYXNoa2V5OwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvbm9kZXMvZXh0ZW5zaWJsZS5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvZXh0ZW5z aWJsZS5jCmluZGV4IDBkNDNkNjZjMWNkLi5iZjBiOTRkM2M3MiAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvbm9kZXMvZXh0ZW5zaWJsZS5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL2V4dGVuc2li bGUuYwpAQCAtMjIsNiArMjIsNyBAQAogCiAjaW5jbHVkZSAibm9kZXMvZXh0ZW5zaWJsZS5oIgog I2luY2x1ZGUgInV0aWxzL2hzZWFyY2guaCIKKyNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgog CiBzdGF0aWMgSFRBQiAqZXh0ZW5zaWJsZV9ub2RlX21ldGhvZHMgPSBOVUxMOwogc3RhdGljIEhU QUIgKmN1c3RvbV9zY2FuX21ldGhvZHMgPSBOVUxMOwpAQCAtNDUsMTMgKzQ2LDggQEAgUmVnaXN0 ZXJFeHRlbnNpYmxlTm9kZUVudHJ5KEhUQUIgKipwX2h0YWJsZSwgY29uc3QgY2hhciAqaHRhYmxl X2xhYmVsLAogCiAJaWYgKCpwX2h0YWJsZSA9PSBOVUxMKQogCXsKLQkJSEFTSENUTAkJY3RsOwot Ci0JCWN0bC5rZXlzaXplID0gRVhUTk9ERU5BTUVfTUFYX0xFTjsKLQkJY3RsLmVudHJ5c2l6ZSA9 IHNpemVvZihFeHRlbnNpYmxlTm9kZUVudHJ5KTsKLQotCQkqcF9odGFibGUgPSBoYXNoX2NyZWF0 ZShodGFibGVfbGFiZWwsIDEwMCwgJmN0bCwKLQkJCQkJCQkJSEFTSF9FTEVNIHwgSEFTSF9TVFJJ TkdTKTsKKwkJKnBfaHRhYmxlID0gaGFzaF9tYWtlX2N4dChFeHRlbnNpYmxlTm9kZUVudHJ5LCBl eHRub2RlbmFtZSwKKwkJCQkJCQkJICBodGFibGVfbGFiZWwsIDEwMCwgVG9wTWVtb3J5Q29udGV4 dCk7CiAJfQogCiAJaWYgKHN0cmxlbihleHRub2RlbmFtZSkgPj0gRVhUTk9ERU5BTUVfTUFYX0xF TikKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3BsYW5jYXQuYyBiL3Ny Yy9iYWNrZW5kL29wdGltaXplci91dGlsL3BsYW5jYXQuYwppbmRleCBhOTBlMWM5ZWU2Yi4uZmZh ODljYjMzNjQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3BsYW5jYXQu YworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wbGFuY2F0LmMKQEAgLTcxMywxOSAr NzEzLDEwIEBAIGdldF9yZWxhdGlvbl9ub3RudWxsYXR0cyhQbGFubmVySW5mbyAqcm9vdCwgUmVs YXRpb24gcmVsYXRpb24pCiAJLyogY3JlYXRlIHRoZSBoYXNoIHRhYmxlIGlmIGl0IGhhc24ndCBi ZWVuIGNyZWF0ZWQgeWV0ICovCiAJaWYgKHJvb3QtPmdsb2ItPnJlbF9ub3RudWxsYXR0c19oYXNo ID09IE5VTEwpCiAJewotCQlIVEFCCSAgICpoYXNodGFiOwotCQlIQVNIQ1RMCQloYXNoX2N0bDsK LQotCQloYXNoX2N0bC5rZXlzaXplID0gc2l6ZW9mKE9pZCk7Ci0JCWhhc2hfY3RsLmVudHJ5c2l6 ZSA9IHNpemVvZihOb3RudWxsSGFzaEVudHJ5KTsKLQkJaGFzaF9jdGwuaGN4dCA9IEN1cnJlbnRN ZW1vcnlDb250ZXh0OwotCi0JCWhhc2h0YWIgPSBoYXNoX2NyZWF0ZSgiUmVsYXRpb24gTk9UIE5V TEwgYXR0bnVtcyIsCi0JCQkJCQkJICA2NEwsCS8qIGFyYml0cmFyeSBpbml0aWFsIHNpemUgKi8K LQkJCQkJCQkgICZoYXNoX2N0bCwKLQkJCQkJCQkgIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBI QVNIX0NPTlRFWFQpOwotCi0JCXJvb3QtPmdsb2ItPnJlbF9ub3RudWxsYXR0c19oYXNoID0gaGFz aHRhYjsKKwkJcm9vdC0+Z2xvYi0+cmVsX25vdG51bGxhdHRzX2hhc2ggPQorCQkJaGFzaF9tYWtl KE5vdG51bGxIYXNoRW50cnksIHJlbGlkLAorCQkJCQkgICJSZWxhdGlvbiBOT1QgTlVMTCBhdHRu dW1zIiwKKwkJCQkJICA2NEwpOwkJLyogYXJiaXRyYXJ5IGluaXRpYWwgc2l6ZSAqLwogCX0KIAog CS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wcmVkdGVzdC5jIGIv c3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcHJlZHRlc3QuYwppbmRleCAyNjg1OGQxZDJiMC4u M2JmNWU3YWM4YmIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3ByZWR0 ZXN0LmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcHJlZHRlc3QuYwpAQCAtMjEx NywxMiArMjExNyw5IEBAIGxvb2t1cF9wcm9vZl9jYWNoZShPaWQgcHJlZF9vcCwgT2lkIGNsYXVz ZV9vcCwgYm9vbCByZWZ1dGVfaXQpCiAJaWYgKE9wclByb29mQ2FjaGVIYXNoID09IE5VTEwpCiAJ ewogCQkvKiBGaXJzdCB0aW1lIHRocm91Z2g6IGluaXRpYWxpemUgdGhlIGhhc2ggdGFibGUgKi8K LQkJSEFTSENUTAkJY3RsOwotCi0JCWN0bC5rZXlzaXplID0gc2l6ZW9mKE9wclByb29mQ2FjaGVL ZXkpOwotCQljdGwuZW50cnlzaXplID0gc2l6ZW9mKE9wclByb29mQ2FjaGVFbnRyeSk7Ci0JCU9w clByb29mQ2FjaGVIYXNoID0gaGFzaF9jcmVhdGUoIkJ0cmVlIHByb29mIGxvb2t1cCBjYWNoZSIs IDI1NiwKLQkJCQkJCQkJCQkmY3RsLCBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTKTsKKwkJT3ByUHJv b2ZDYWNoZUhhc2ggPSBoYXNoX21ha2VfY3h0KE9wclByb29mQ2FjaGVFbnRyeSwga2V5LAorCQkJ CQkJCQkJCSAgIkJ0cmVlIHByb29mIGxvb2t1cCBjYWNoZSIsIDI1NiwKKwkJCQkJCQkJCQkgIFRv cE1lbW9yeUNvbnRleHQpOwogCiAJCS8qIEFycmFuZ2UgdG8gZmx1c2ggY2FjaGUgb24gcGdfYW1v cCBjaGFuZ2VzICovCiAJCUNhY2hlUmVnaXN0ZXJTeXNjYWNoZUNhbGxiYWNrKEFNT1BPUElELApk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcmVsbm9kZS5jIGIvc3JjL2Jh Y2tlbmQvb3B0aW1pemVyL3V0aWwvcmVsbm9kZS5jCmluZGV4IGY1NzYzMWU4NzZmLi5hOTA3ZjFk MDI4ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcmVsbm9kZS5jCisr KyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3JlbG5vZGUuYwpAQCAtNjAxLDE5ICs2MDEs MTIgQEAgc3RhdGljIHZvaWQKIGJ1aWxkX2pvaW5fcmVsX2hhc2goUGxhbm5lckluZm8gKnJvb3Qp CiB7CiAJSFRBQgkgICAqaGFzaHRhYjsKLQlIQVNIQ1RMCQloYXNoX2N0bDsKIAlMaXN0Q2VsbCAg ICpsOwogCiAJLyogQ3JlYXRlIHRoZSBoYXNoIHRhYmxlICovCi0JaGFzaF9jdGwua2V5c2l6ZSA9 IHNpemVvZihSZWxpZHMpOwotCWhhc2hfY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihKb2luSGFzaEVu dHJ5KTsKLQloYXNoX2N0bC5oYXNoID0gYml0bWFwX2hhc2g7Ci0JaGFzaF9jdGwubWF0Y2ggPSBi aXRtYXBfbWF0Y2g7Ci0JaGFzaF9jdGwuaGN4dCA9IEN1cnJlbnRNZW1vcnlDb250ZXh0OwotCWhh c2h0YWIgPSBoYXNoX2NyZWF0ZSgiSm9pblJlbEhhc2hUYWJsZSIsCi0JCQkJCQkgIDI1NkwsCi0J CQkJCQkgICZoYXNoX2N0bCwKLQkJCQkJCSAgSEFTSF9FTEVNIHwgSEFTSF9GVU5DVElPTiB8IEhB U0hfQ09NUEFSRSB8IEhBU0hfQ09OVEVYVCk7CisJaGFzaHRhYiA9IGhhc2hfbWFrZV9mbihKb2lu SGFzaEVudHJ5LCBqb2luX3JlbGlkcywKKwkJCQkJCSAgICJKb2luUmVsSGFzaFRhYmxlIiwgMjU2 LAorCQkJCQkJICAgYml0bWFwX2hhc2gsIGJpdG1hcF9tYXRjaCk7CiAKIAkvKiBJbnNlcnQgYWxs IHRoZSBhbHJlYWR5LWV4aXN0aW5nIGpvaW5yZWxzICovCiAJZm9yZWFjaChsLCByb290LT5qb2lu X3JlbF9saXN0KQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX29wZXIuYyBi L3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9vcGVyLmMKaW5kZXggNzY4ZTRjZmY5YzUuLmQzNmU3 YWQzMDMwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vfb3Blci5jCisrKyBi L3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9vcGVyLmMKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNs dWRlICJ1dGlscy9idWlsdGlucy5oIgogI2luY2x1ZGUgInV0aWxzL2ludmFsLmgiCiAjaW5jbHVk ZSAidXRpbHMvbHN5c2NhY2hlLmgiCisjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKICNpbmNs dWRlICJ1dGlscy9zeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3R5cGNhY2hlLmgiCiAKQEAg LTEwMjgsMTIgKzEwMjksOSBAQCBmaW5kX29wZXJfY2FjaGVfZW50cnkoT3ByQ2FjaGVLZXkgKmtl eSkKIAlpZiAoT3ByQ2FjaGVIYXNoID09IE5VTEwpCiAJewogCQkvKiBGaXJzdCB0aW1lIHRocm91 Z2g6IGluaXRpYWxpemUgdGhlIGhhc2ggdGFibGUgKi8KLQkJSEFTSENUTAkJY3RsOwotCi0JCWN0 bC5rZXlzaXplID0gc2l6ZW9mKE9wckNhY2hlS2V5KTsKLQkJY3RsLmVudHJ5c2l6ZSA9IHNpemVv ZihPcHJDYWNoZUVudHJ5KTsKLQkJT3ByQ2FjaGVIYXNoID0gaGFzaF9jcmVhdGUoIk9wZXJhdG9y IGxvb2t1cCBjYWNoZSIsIDI1NiwKLQkJCQkJCQkJICAgJmN0bCwgSEFTSF9FTEVNIHwgSEFTSF9C TE9CUyk7CisJCU9wckNhY2hlSGFzaCA9IGhhc2hfbWFrZV9jeHQoT3ByQ2FjaGVFbnRyeSwga2V5 LAorCQkJCQkJCQkJICJPcGVyYXRvciBsb29rdXAgY2FjaGUiLCAyNTYsCisJCQkJCQkJCQkgVG9w TWVtb3J5Q29udGV4dCk7CiAKIAkJLyogQXJyYW5nZSB0byBmbHVzaCBjYWNoZSBvbiBwZ19vcGVy YXRvciBhbmQgcGdfY2FzdCBjaGFuZ2VzICovCiAJCUNhY2hlUmVnaXN0ZXJTeXNjYWNoZUNhbGxi YWNrKE9QRVJOQU1FTlNQLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3Bh cnRkZXNjLmMgYi9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydGRlc2MuYwppbmRleCBjM2Qy NzVmODcyNi4uZGIyNmU0YTgyYjYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmlu Zy9wYXJ0ZGVzYy5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0ZGVzYy5jCkBA IC00MjQsMTcgKzQyNCwxMiBAQCBDcmVhdGVQYXJ0aXRpb25EaXJlY3RvcnkoTWVtb3J5Q29udGV4 dCBtY3h0LCBib29sIG9taXRfZGV0YWNoZWQpCiB7CiAJTWVtb3J5Q29udGV4dCBvbGRjb250ZXh0 ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKG1jeHQpOwogCVBhcnRpdGlvbkRpcmVjdG9yeSBwZGly OwotCUhBU0hDVEwJCWN0bDsKIAogCXBkaXIgPSBwYWxsb2Nfb2JqZWN0KFBhcnRpdGlvbkRpcmVj dG9yeURhdGEpOwogCXBkaXItPnBkaXJfbWN4dCA9IG1jeHQ7CiAKLQljdGwua2V5c2l6ZSA9IHNp emVvZihPaWQpOwotCWN0bC5lbnRyeXNpemUgPSBzaXplb2YoUGFydGl0aW9uRGlyZWN0b3J5RW50 cnkpOwotCWN0bC5oY3h0ID0gbWN4dDsKLQotCXBkaXItPnBkaXJfaGFzaCA9IGhhc2hfY3JlYXRl KCJwYXJ0aXRpb24gZGlyZWN0b3J5IiwgMjU2LCAmY3RsLAotCQkJCQkJCQkgIEhBU0hfRUxFTSB8 IEhBU0hfQkxPQlMgfCBIQVNIX0NPTlRFWFQpOworCXBkaXItPnBkaXJfaGFzaCA9IGhhc2hfbWFr ZV9jeHQoUGFydGl0aW9uRGlyZWN0b3J5RW50cnksIHJlbG9pZCwKKwkJCQkJCQkJCSJwYXJ0aXRp b24gZGlyZWN0b3J5IiwgMjU2LCBtY3h0KTsKIAlwZGlyLT5vbWl0X2RldGFjaGVkID0gb21pdF9k ZXRhY2hlZDsKIAogCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5jIGIvc3JjL2JhY2tlbmQvcG9z dG1hc3Rlci9hdXRvdmFjdXVtLmMKaW5kZXggM2U1MDdkMjNjYzkuLmY4Zjg1OTUxNzQxIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYworKysgYi9zcmMvYmFj a2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYwpAQCAtOTA3LDcgKzkwNyw2IEBAIHJlYnVpbGRf ZGF0YWJhc2VfbGlzdChPaWQgbmV3ZGIpCiAJTWVtb3J5Q29udGV4dCBuZXdjeHQ7CiAJTWVtb3J5 Q29udGV4dCBvbGRjeHQ7CiAJTWVtb3J5Q29udGV4dCB0bXBjeHQ7Ci0JSEFTSENUTAkJaGN0bDsK IAlpbnQJCQlzY29yZTsKIAlpbnQJCQluZWxlbXM7CiAJSFRBQgkgICAqZGJoYXNoOwpAQCAtOTM3 LDEyICs5MzYsMTAgQEAgcmVidWlsZF9kYXRhYmFzZV9saXN0KE9pZCBuZXdkYikKIAkgKiBzY29y ZSwgYW5kIGZpbmFsbHkgcHV0IHRoZSBhcnJheSBlbGVtZW50cyBpbnRvIHRoZSBuZXcgZG91Ymx5 IGxpbmtlZAogCSAqIGxpc3QuCiAJICovCi0JaGN0bC5rZXlzaXplID0gc2l6ZW9mKE9pZCk7Ci0J aGN0bC5lbnRyeXNpemUgPSBzaXplb2YoYXZsX2RiYXNlKTsKLQloY3RsLmhjeHQgPSB0bXBjeHQ7 Ci0JZGJoYXNoID0gaGFzaF9jcmVhdGUoImF1dG92YWN1dW0gZGIgaGFzaCIsIDIwLCAmaGN0bCwJ LyogbWFnaWMgbnVtYmVyIGhlcmUKLQkJCQkJCQkJCQkJCQkJCSAqIEZJWE1FICovCi0JCQkJCQkg SEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhBU0hfQ09OVEVYVCk7CisJZGJoYXNoID0gaGFzaF9t YWtlX2N4dChhdmxfZGJhc2UsIGFkbF9kYXRpZCwKKwkJCQkJCSAgICJhdXRvdmFjdXVtIGRiIGhh c2giLAorCQkJCQkJICAgMjAsCS8qIG1hZ2ljIG51bWJlciBoZXJlIEZJWE1FICovCisJCQkJCQkg ICB0bXBjeHQpOwogCiAJLyogc3RhcnQgYnkgaW5zZXJ0aW5nIHRoZSBuZXcgZGF0YWJhc2UgKi8K IAlzY29yZSA9IDA7CkBAIC0xOTA0LDcgKzE5MDEsNiBAQCBkb19hdXRvdmFjdXVtKHZvaWQpCiAJ Rm9ybV9wZ19kYXRhYmFzZSBkYkZvcm07CiAJTGlzdAkgICAqdGFibGVfb2lkcyA9IE5JTDsKIAlM aXN0CSAgICpvcnBoYW5fb2lkcyA9IE5JTDsKLQlIQVNIQ1RMCQljdGw7CiAJSFRBQgkgICAqdGFi bGVfdG9hc3RfbWFwOwogCUxpc3RDZWxsICAgKnZvbGF0aWxlIGNlbGw7CiAJQnVmZmVyQWNjZXNz U3RyYXRlZ3kgYnN0cmF0ZWd5OwpAQCAtMTk3NywxMyArMTk3Myw5IEBAIGRvX2F1dG92YWN1dW0o dm9pZCkKIAlwZ19jbGFzc19kZXNjID0gQ3JlYXRlVHVwbGVEZXNjQ29weShSZWxhdGlvbkdldERl c2NyKGNsYXNzUmVsKSk7CiAKIAkvKiBjcmVhdGUgaGFzaCB0YWJsZSBmb3IgdG9hc3QgPC0+IG1h aW4gcmVsaWQgbWFwcGluZyAqLwotCWN0bC5rZXlzaXplID0gc2l6ZW9mKE9pZCk7Ci0JY3RsLmVu dHJ5c2l6ZSA9IHNpemVvZihhdl9yZWxhdGlvbik7Ci0KLQl0YWJsZV90b2FzdF9tYXAgPSBoYXNo X2NyZWF0ZSgiVE9BU1QgdG8gbWFpbiByZWxpZCBtYXAiLAotCQkJCQkJCQkgIDEwMCwKLQkJCQkJ CQkJICAmY3RsLAotCQkJCQkJCQkgIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMpOworCXRhYmxlX3Rv YXN0X21hcCA9IGhhc2hfbWFrZV9jeHQoYXZfcmVsYXRpb24sIGFyX3RvYXN0cmVsaWQsCisJCQkJ CQkJCQkiVE9BU1QgdG8gbWFpbiByZWxpZCBtYXAiLCAxMDAsCisJCQkJCQkJCQlUb3BNZW1vcnlD b250ZXh0KTsKIAogCS8qCiAJICogU2NhbiBwZ19jbGFzcyB0byBkZXRlcm1pbmUgd2hpY2ggdGFi bGVzIHRvIHZhY3V1bS4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvY2hlY2tw b2ludGVyLmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2NoZWNrcG9pbnRlci5jCmluZGV4IDY0 ODJjMjFiOGY5Li4yNDI1OWVkNWU0MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rl ci9jaGVja3BvaW50ZXIuYworKysgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2NoZWNrcG9pbnRl ci5jCkBAIC0xMzA5LDcgKzEzMDksNiBAQCBDb21wYWN0Q2hlY2twb2ludGVyUmVxdWVzdFF1ZXVl KHZvaWQpCiAJaW50CQkJbnVtX3JlcXVlc3RzOwogCWludAkJCXJlYWRfaWR4LAogCQkJCXdyaXRl X2lkeDsKLQlIQVNIQ1RMCQljdGw7CiAJSFRBQgkgICAqaHRhYjsKIAlib29sCSAgICpza2lwX3Ns b3Q7CiAKQEAgLTEzMjksMTQgKzEzMjgsOSBAQCBDb21wYWN0Q2hlY2twb2ludGVyUmVxdWVzdFF1 ZXVlKHZvaWQpCiAJaGVhZCA9IENoZWNrcG9pbnRlclNobWVtLT5oZWFkOwogCiAJLyogSW5pdGlh bGl6ZSB0ZW1wb3JhcnkgaGFzaCB0YWJsZSAqLwotCWN0bC5rZXlzaXplID0gc2l6ZW9mKENoZWNr cG9pbnRlclJlcXVlc3QpOwotCWN0bC5lbnRyeXNpemUgPSBzaXplb2Yoc3RydWN0IENoZWNrcG9p bnRlclNsb3RNYXBwaW5nKTsKLQljdGwuaGN4dCA9IEN1cnJlbnRNZW1vcnlDb250ZXh0OwotCi0J aHRhYiA9IGhhc2hfY3JlYXRlKCJDb21wYWN0Q2hlY2twb2ludGVyUmVxdWVzdFF1ZXVlIiwKLQkJ CQkJICAgQ2hlY2twb2ludGVyU2htZW0tPm51bV9yZXF1ZXN0cywKLQkJCQkJICAgJmN0bCwKLQkJ CQkJICAgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhBU0hfQ09OVEVYVCk7CisJaHRhYiA9IGhh c2hfbWFrZShzdHJ1Y3QgQ2hlY2twb2ludGVyU2xvdE1hcHBpbmcsIHJlcXVlc3QsCisJCQkJCSAi Q29tcGFjdENoZWNrcG9pbnRlclJlcXVlc3RRdWV1ZSIsCisJCQkJCSBDaGVja3BvaW50ZXJTaG1l bS0+bnVtX3JlcXVlc3RzKTsKIAogCS8qCiAJICogVGhlIGJhc2ljIGlkZWEgaGVyZSBpcyB0aGF0 IGEgcmVxdWVzdCBjYW4gYmUgc2tpcHBlZCBpZiBpdCdzIGZvbGxvd2VkCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYyBiL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jCmluZGV4 IDVlYmQyMzUzZmVkLi5lN2U5OWE2ZWNlYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMKQEAgLTQ4NCwxNiArNDg0LDkg QEAgcGFfYWxsb2NhdGVfd29ya2VyKFRyYW5zYWN0aW9uSWQgeGlkKQogCS8qIEZpcnN0IHRpbWUg dGhyb3VnaCwgaW5pdGlhbGl6ZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgc3RhdGUgaGFzaHRhYmxl LiAqLwogCWlmICghUGFyYWxsZWxBcHBseVR4bkhhc2gpCiAJewotCQlIQVNIQ1RMCQljdGw7Ci0K LQkJTWVtU2V0KCZjdGwsIDAsIHNpemVvZihjdGwpKTsKLQkJY3RsLmtleXNpemUgPSBzaXplb2Yo VHJhbnNhY3Rpb25JZCk7Ci0JCWN0bC5lbnRyeXNpemUgPSBzaXplb2YoUGFyYWxsZWxBcHBseVdv cmtlckVudHJ5KTsKLQkJY3RsLmhjeHQgPSBBcHBseUNvbnRleHQ7Ci0KLQkJUGFyYWxsZWxBcHBs eVR4bkhhc2ggPSBoYXNoX2NyZWF0ZSgibG9naWNhbCByZXBsaWNhdGlvbiBwYXJhbGxlbCBhcHBs eSB3b3JrZXJzIGhhc2giLAotCQkJCQkJCQkJCSAgIDE2LCAmY3RsLAotCQkJCQkJCQkJCSAgIEhB U0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBIQVNIX0NPTlRFWFQpOworCQlQYXJhbGxlbEFwcGx5VHhu SGFzaCA9IGhhc2hfbWFrZV9jeHQoUGFyYWxsZWxBcHBseVdvcmtlckVudHJ5LCB4aWQsCisJCQkJ CQkJCQkJCSAibG9naWNhbCByZXBsaWNhdGlvbiBwYXJhbGxlbCBhcHBseSB3b3JrZXJzIGhhc2gi LAorCQkJCQkJCQkJCQkgMTYsIEFwcGx5Q29udGV4dCk7CiAJfQogCiAJLyogQ3JlYXRlIGFuIGVu dHJ5IGZvciB0aGUgcmVxdWVzdGVkIHRyYW5zYWN0aW9uLiAqLwpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZWxhdGlvbi5jIGIvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC9yZWxhdGlvbi5jCmluZGV4IDJkZjkxMDM3OGRjLi4wOTk1MDFhZDU5MyAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZWxhdGlvbi5jCisr KyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVsYXRpb24uYwpAQCAtMTA0LDgg KzEwNCw2IEBAIGxvZ2ljYWxyZXBfcmVsbWFwX2ludmFsaWRhdGVfY2IoRGF0dW0gYXJnLCBPaWQg cmVsb2lkKQogc3RhdGljIHZvaWQKIGxvZ2ljYWxyZXBfcmVsbWFwX2luaXQodm9pZCkKIHsKLQlI QVNIQ1RMCQljdGw7Ci0KIAlpZiAoIUxvZ2ljYWxSZXBSZWxNYXBDb250ZXh0KQogCQlMb2dpY2Fs UmVwUmVsTWFwQ29udGV4dCA9CiAJCQlBbGxvY1NldENvbnRleHRDcmVhdGUoQ2FjaGVNZW1vcnlD b250ZXh0LApAQCAtMTEzLDEyICsxMTEsOSBAQCBsb2dpY2FscmVwX3JlbG1hcF9pbml0KHZvaWQp CiAJCQkJCQkJCSAgQUxMT0NTRVRfREVGQVVMVF9TSVpFUyk7CiAKIAkvKiBJbml0aWFsaXplIHRo ZSByZWxhdGlvbiBoYXNoIHRhYmxlLiAqLwotCWN0bC5rZXlzaXplID0gc2l6ZW9mKExvZ2ljYWxS ZXBSZWxJZCk7Ci0JY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihMb2dpY2FsUmVwUmVsTWFwRW50cnkp OwotCWN0bC5oY3h0ID0gTG9naWNhbFJlcFJlbE1hcENvbnRleHQ7Ci0KLQlMb2dpY2FsUmVwUmVs TWFwID0gaGFzaF9jcmVhdGUoImxvZ2ljYWxyZXAgcmVsYXRpb24gbWFwIGNhY2hlIiwgMTI4LCAm Y3RsLAotCQkJCQkJCQkgICBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwgSEFTSF9DT05URVhUKTsK KwlMb2dpY2FsUmVwUmVsTWFwID0gaGFzaF9tYWtlX2N4dChMb2dpY2FsUmVwUmVsTWFwRW50cnks IHJlbW90ZXJlbC5yZW1vdGVpZCwKKwkJCQkJCQkJCSAibG9naWNhbHJlcCByZWxhdGlvbiBtYXAg Y2FjaGUiLCAxMjgsCisJCQkJCQkJCQkgTG9naWNhbFJlcFJlbE1hcENvbnRleHQpOwogCiAJLyog V2F0Y2ggZm9yIGludmFsaWRhdGlvbiBldmVudHMuICovCiAJQ2FjaGVSZWdpc3RlclJlbGNhY2hl Q2FsbGJhY2sobG9naWNhbHJlcF9yZWxtYXBfaW52YWxpZGF0ZV9jYiwKQEAgLTYxMCw4ICs2MDUs NiBAQCBsb2dpY2FscmVwX3BhcnRtYXBfcmVzZXRfcmVsbWFwKExvZ2ljYWxSZXBSZWxhdGlvbiAq cmVtb3RlcmVsKQogc3RhdGljIHZvaWQKIGxvZ2ljYWxyZXBfcGFydG1hcF9pbml0KHZvaWQpCiB7 Ci0JSEFTSENUTAkJY3RsOwotCiAJaWYgKCFMb2dpY2FsUmVwUGFydE1hcENvbnRleHQpCiAJCUxv Z2ljYWxSZXBQYXJ0TWFwQ29udGV4dCA9CiAJCQlBbGxvY1NldENvbnRleHRDcmVhdGUoQ2FjaGVN ZW1vcnlDb250ZXh0LApAQCAtNjE5LDEyICs2MTIsOSBAQCBsb2dpY2FscmVwX3BhcnRtYXBfaW5p dCh2b2lkKQogCQkJCQkJCQkgIEFMTE9DU0VUX0RFRkFVTFRfU0laRVMpOwogCiAJLyogSW5pdGlh bGl6ZSB0aGUgcmVsYXRpb24gaGFzaCB0YWJsZS4gKi8KLQljdGwua2V5c2l6ZSA9IHNpemVvZihP aWQpOwkvKiBwYXJ0aXRpb24gT0lEICovCi0JY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihMb2dpY2Fs UmVwUGFydE1hcEVudHJ5KTsKLQljdGwuaGN4dCA9IExvZ2ljYWxSZXBQYXJ0TWFwQ29udGV4dDsK LQotCUxvZ2ljYWxSZXBQYXJ0TWFwID0gaGFzaF9jcmVhdGUoImxvZ2ljYWxyZXAgcGFydGl0aW9u IG1hcCBjYWNoZSIsIDY0LCAmY3RsLAotCQkJCQkJCQkJSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8 IEhBU0hfQ09OVEVYVCk7CisJTG9naWNhbFJlcFBhcnRNYXAgPSBoYXNoX21ha2VfY3h0KExvZ2lj YWxSZXBQYXJ0TWFwRW50cnksIHBhcnRvaWQsCisJCQkJCQkJCQkgICJsb2dpY2FscmVwIHBhcnRp dGlvbiBtYXAgY2FjaGUiLCA2NCwKKwkJCQkJCQkJCSAgTG9naWNhbFJlcFBhcnRNYXBDb250ZXh0 KTsKIAogCS8qIFdhdGNoIGZvciBpbnZhbGlkYXRpb24gZXZlbnRzLiAqLwogCUNhY2hlUmVnaXN0 ZXJSZWxjYWNoZUNhbGxiYWNrKGxvZ2ljYWxyZXBfcGFydG1hcF9pbnZhbGlkYXRlX2NiLApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZW9yZGVyYnVmZmVyLmMg Yi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Jlb3JkZXJidWZmZXIuYwppbmRleCBh MDI5M2Y2ZWM3Yy4uZmE5M2ExYmJkZTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jCkBAIC0zMjQsNyArMzI0LDYgQEAgUmVvcmRlckJ1ZmZl ciAqCiBSZW9yZGVyQnVmZmVyQWxsb2NhdGUodm9pZCkKIHsKIAlSZW9yZGVyQnVmZmVyICpidWZm ZXI7Ci0JSEFTSENUTAkJaGFzaF9jdGw7CiAJTWVtb3J5Q29udGV4dCBuZXdfY3R4OwogCiAJQXNz ZXJ0KE15UmVwbGljYXRpb25TbG90ICE9IE5VTEwpOwpAQCAtMzM3LDggKzMzNiw2IEBAIFJlb3Jk ZXJCdWZmZXJBbGxvY2F0ZSh2b2lkKQogCWJ1ZmZlciA9CiAJCShSZW9yZGVyQnVmZmVyICopIE1l bW9yeUNvbnRleHRBbGxvYyhuZXdfY3R4LCBzaXplb2YoUmVvcmRlckJ1ZmZlcikpOwogCi0JbWVt c2V0KCZoYXNoX2N0bCwgMCwgc2l6ZW9mKGhhc2hfY3RsKSk7Ci0KIAlidWZmZXItPmNvbnRleHQg PSBuZXdfY3R4OwogCiAJYnVmZmVyLT5jaGFuZ2VfY29udGV4dCA9IFNsYWJDb250ZXh0Q3JlYXRl KG5ld19jdHgsCkBAIC0zNjcsMTIgKzM2NCw4IEBAIFJlb3JkZXJCdWZmZXJBbGxvY2F0ZSh2b2lk KQogCQkJCQkJCQkJCQkJICBTTEFCX0RFRkFVTFRfQkxPQ0tfU0laRSwKIAkJCQkJCQkJCQkJCSAg U0xBQl9ERUZBVUxUX0JMT0NLX1NJWkUpOwogCi0JaGFzaF9jdGwua2V5c2l6ZSA9IHNpemVvZihU cmFuc2FjdGlvbklkKTsKLQloYXNoX2N0bC5lbnRyeXNpemUgPSBzaXplb2YoUmVvcmRlckJ1ZmZl clRYTkJ5SWRFbnQpOwotCWhhc2hfY3RsLmhjeHQgPSBidWZmZXItPmNvbnRleHQ7Ci0KLQlidWZm ZXItPmJ5X3R4biA9IGhhc2hfY3JlYXRlKCJSZW9yZGVyQnVmZmVyQnlYaWQiLCAxMDAwLCAmaGFz aF9jdGwsCi0JCQkJCQkJCSBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwgSEFTSF9DT05URVhUKTsK KwlidWZmZXItPmJ5X3R4biA9IGhhc2hfbWFrZV9jeHQoUmVvcmRlckJ1ZmZlclRYTkJ5SWRFbnQs IHhpZCwKKwkJCQkJCQkJICAgIlJlb3JkZXJCdWZmZXJCeVhpZCIsIDEwMDAsIGJ1ZmZlci0+Y29u dGV4dCk7CiAKIAlidWZmZXItPmJ5X3R4bl9sYXN0X3hpZCA9IEludmFsaWRUcmFuc2FjdGlvbklk OwogCWJ1ZmZlci0+YnlfdHhuX2xhc3RfdHhuID0gTlVMTDsKQEAgLTE4MzYsMjIgKzE4MjksMTcg QEAgc3RhdGljIHZvaWQKIFJlb3JkZXJCdWZmZXJCdWlsZFR1cGxlQ2lkSGFzaChSZW9yZGVyQnVm ZmVyICpyYiwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuKQogewogCWRsaXN0X2l0ZXIJaXRlcjsKLQlI QVNIQ1RMCQloYXNoX2N0bDsKIAogCWlmICghcmJ0eG5faGFzX2NhdGFsb2dfY2hhbmdlcyh0eG4p IHx8IGRsaXN0X2lzX2VtcHR5KCZ0eG4tPnR1cGxlY2lkcykpCiAJCXJldHVybjsKIAotCWhhc2hf Y3RsLmtleXNpemUgPSBzaXplb2YoUmVvcmRlckJ1ZmZlclR1cGxlQ2lkS2V5KTsKLQloYXNoX2N0 bC5lbnRyeXNpemUgPSBzaXplb2YoUmVvcmRlckJ1ZmZlclR1cGxlQ2lkRW50KTsKLQloYXNoX2N0 bC5oY3h0ID0gcmItPmNvbnRleHQ7Ci0KIAkvKgogCSAqIGNyZWF0ZSB0aGUgaGFzaCB3aXRoIHRo ZSBleGFjdCBudW1iZXIgb2YgdG8tYmUtc3RvcmVkIHR1cGxlY2lkcyBmcm9tCiAJICogdGhlIHN0 YXJ0CiAJICovCiAJdHhuLT50dXBsZWNpZF9oYXNoID0KLQkJaGFzaF9jcmVhdGUoIlJlb3JkZXJC dWZmZXJUdXBsZUNpZCIsIHR4bi0+bnR1cGxlY2lkcywgJmhhc2hfY3RsLAotCQkJCQlIQVNIX0VM RU0gfCBIQVNIX0JMT0JTIHwgSEFTSF9DT05URVhUKTsKKwkJaGFzaF9tYWtlX2N4dChSZW9yZGVy QnVmZmVyVHVwbGVDaWRFbnQsIGtleSwKKwkJCQkJICAiUmVvcmRlckJ1ZmZlclR1cGxlQ2lkIiwg dHhuLT5udHVwbGVjaWRzLCByYi0+Y29udGV4dCk7CiAKIAlkbGlzdF9mb3JlYWNoKGl0ZXIsICZ0 eG4tPnR1cGxlY2lkcykKIAl7CkBAIC00OTc0LDE1ICs0OTYyLDEwIEBAIFN0YXJ0dXBSZW9yZGVy QnVmZmVyKHZvaWQpCiBzdGF0aWMgdm9pZAogUmVvcmRlckJ1ZmZlclRvYXN0SW5pdEhhc2goUmVv cmRlckJ1ZmZlciAqcmIsIFJlb3JkZXJCdWZmZXJUWE4gKnR4bikKIHsKLQlIQVNIQ1RMCQloYXNo X2N0bDsKLQogCUFzc2VydCh0eG4tPnRvYXN0X2hhc2ggPT0gTlVMTCk7CiAKLQloYXNoX2N0bC5r ZXlzaXplID0gc2l6ZW9mKE9pZCk7Ci0JaGFzaF9jdGwuZW50cnlzaXplID0gc2l6ZW9mKFJlb3Jk ZXJCdWZmZXJUb2FzdEVudCk7Ci0JaGFzaF9jdGwuaGN4dCA9IHJiLT5jb250ZXh0OwotCXR4bi0+ dG9hc3RfaGFzaCA9IGhhc2hfY3JlYXRlKCJSZW9yZGVyQnVmZmVyVG9hc3RIYXNoIiwgNSwgJmhh c2hfY3RsLAotCQkJCQkJCQkgIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBIQVNIX0NPTlRFWFQp OworCXR4bi0+dG9hc3RfaGFzaCA9IGhhc2hfbWFrZV9jeHQoUmVvcmRlckJ1ZmZlclRvYXN0RW50 LCBjaHVua19pZCwKKwkJCQkJCQkJCSJSZW9yZGVyQnVmZmVyVG9hc3RIYXNoIiwgNSwgcmItPmNv bnRleHQpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC90YWJsZXN5bmMuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVz eW5jLmMKaW5kZXggNjdlNTc1MjAzODYuLjMxMjczYWQ5ZjU4IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jCisrKyBiL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMKQEAgLTExNyw2ICsxMTcsNyBAQAogI2luY2x1 ZGUgInV0aWxzL2FycmF5LmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRl ICJ1dGlscy9sc3lzY2FjaGUuaCIKKyNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgogI2luY2x1 ZGUgInV0aWxzL3Jscy5oIgogI2luY2x1ZGUgInV0aWxzL3NuYXBtZ3IuaCIKICNpbmNsdWRlICJ1 dGlscy9zeXNjYWNoZS5oIgpAQCAtMzkwLDEyICszOTEsOSBAQCBQcm9jZXNzU3luY2luZ1RhYmxl c0ZvckFwcGx5KFhMb2dSZWNQdHIgY3VycmVudF9sc24pCiAJICovCiAJaWYgKHRhYmxlX3N0YXRl c19ub3RfcmVhZHkgIT0gTklMICYmICFsYXN0X3N0YXJ0X3RpbWVzKQogCXsKLQkJSEFTSENUTAkJ Y3RsOwotCi0JCWN0bC5rZXlzaXplID0gc2l6ZW9mKE9pZCk7Ci0JCWN0bC5lbnRyeXNpemUgPSBz aXplb2Yoc3RydWN0IHRhYmxlc3luY19zdGFydF90aW1lX21hcHBpbmcpOwotCQlsYXN0X3N0YXJ0 X3RpbWVzID0gaGFzaF9jcmVhdGUoIkxvZ2ljYWwgcmVwbGljYXRpb24gdGFibGUgc3luYyB3b3Jr ZXIgc3RhcnQgdGltZXMiLAotCQkJCQkJCQkJICAgMjU2LCAmY3RsLCBIQVNIX0VMRU0gfCBIQVNI X0JMT0JTKTsKKwkJbGFzdF9zdGFydF90aW1lcyA9IGhhc2hfbWFrZV9jeHQoc3RydWN0IHRhYmxl c3luY19zdGFydF90aW1lX21hcHBpbmcsIHJlbGlkLAorCQkJCQkJCQkJCSAiTG9naWNhbCByZXBs aWNhdGlvbiB0YWJsZSBzeW5jIHdvcmtlciBzdGFydCB0aW1lcyIsCisJCQkJCQkJCQkJIDI1Niwg VG9wTWVtb3J5Q29udGV4dCk7CiAJfQogCiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9w Z291dHB1dC9wZ291dHB1dC5jCmluZGV4IDllZTg5NDllMDQwLi4wZGNmYmZkZDYwOSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYworKysgYi9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jCkBAIC0xOTczLDcgKzE5 NzMsNiBAQCBwZ291dHB1dF9zdHJlYW1fcHJlcGFyZV90eG4oTG9naWNhbERlY29kaW5nQ29udGV4 dCAqY3R4LAogc3RhdGljIHZvaWQKIGluaXRfcmVsX3N5bmNfY2FjaGUoTWVtb3J5Q29udGV4dCBj YWNoZWN0eCkKIHsKLQlIQVNIQ1RMCQljdGw7CiAJc3RhdGljIGJvb2wgcmVsYXRpb25fY2FsbGJh Y2tzX3JlZ2lzdGVyZWQgPSBmYWxzZTsKIAogCS8qIE5vdGhpbmcgdG8gZG8gaWYgaGFzaCB0YWJs ZSBhbHJlYWR5IGV4aXN0cyAqLwpAQCAtMTk4MSwxMyArMTk4MCw5IEBAIGluaXRfcmVsX3N5bmNf Y2FjaGUoTWVtb3J5Q29udGV4dCBjYWNoZWN0eCkKIAkJcmV0dXJuOwogCiAJLyogTWFrZSBhIG5l dyBoYXNoIHRhYmxlIGZvciB0aGUgY2FjaGUgKi8KLQljdGwua2V5c2l6ZSA9IHNpemVvZihPaWQp OwotCWN0bC5lbnRyeXNpemUgPSBzaXplb2YoUmVsYXRpb25TeW5jRW50cnkpOwotCWN0bC5oY3h0 ID0gY2FjaGVjdHg7Ci0KLQlSZWxhdGlvblN5bmNDYWNoZSA9IGhhc2hfY3JlYXRlKCJsb2dpY2Fs IHJlcGxpY2F0aW9uIG91dHB1dCByZWxhdGlvbiBjYWNoZSIsCi0JCQkJCQkJCQkxMjgsICZjdGws Ci0JCQkJCQkJCQlIQVNIX0VMRU0gfCBIQVNIX0NPTlRFWFQgfCBIQVNIX0JMT0JTKTsKKwlSZWxh dGlvblN5bmNDYWNoZSA9IGhhc2hfbWFrZV9jeHQoUmVsYXRpb25TeW5jRW50cnksIHJlbGlkLAor CQkJCQkJCQkJICAibG9naWNhbCByZXBsaWNhdGlvbiBvdXRwdXQgcmVsYXRpb24gY2FjaGUiLAor CQkJCQkJCQkJICAxMjgsIGNhY2hlY3R4KTsKIAogCUFzc2VydChSZWxhdGlvblN5bmNDYWNoZSAh PSBOVUxMKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvYnVmX3Rh YmxlLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZfdGFibGUuYwppbmRleCAyM2Q4 NWZkMzJlMi4uOTU2NTM5NDRhOWQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVm ZmVyL2J1Zl90YWJsZS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zl90YWJs ZS5jCkBAIC01MCwxOSArNTAsMTYgQEAgQnVmVGFibGVTaG1lbVNpemUoaW50IHNpemUpCiB2b2lk CiBJbml0QnVmVGFibGUoaW50IHNpemUpCiB7Ci0JSEFTSENUTAkJaW5mbzsKKwlIQVNIT1BUUwlv cHRzID0gezB9OwogCiAJLyogYXNzdW1lIG5vIGxvY2tpbmcgaXMgbmVlZGVkIHlldCAqLwogCiAJ LyogQnVmZmVyVGFnIG1hcHMgdG8gQnVmZmVyICovCi0JaW5mby5rZXlzaXplID0gc2l6ZW9mKEJ1 ZmZlclRhZyk7Ci0JaW5mby5lbnRyeXNpemUgPSBzaXplb2YoQnVmZmVyTG9va3VwRW50KTsKLQlp bmZvLm51bV9wYXJ0aXRpb25zID0gTlVNX0JVRkZFUl9QQVJUSVRJT05TOwotCi0JU2hhcmVkQnVm SGFzaCA9IFNobWVtSW5pdEhhc2goIlNoYXJlZCBCdWZmZXIgTG9va3VwIFRhYmxlIiwKLQkJCQkJ CQkJICBzaXplLCBzaXplLAotCQkJCQkJCQkgICZpbmZvLAotCQkJCQkJCQkgIEhBU0hfRUxFTSB8 IEhBU0hfQkxPQlMgfCBIQVNIX1BBUlRJVElPTiB8IEhBU0hfRklYRURfU0laRSk7CisJb3B0cy5u dW1fcGFydGl0aW9ucyA9IE5VTV9CVUZGRVJfUEFSVElUSU9OUzsKKwlvcHRzLmZpeGVkX3NpemUg PSB0cnVlOworCVNoYXJlZEJ1Zkhhc2ggPSBzaG1lbV9oYXNoX21ha2VfZXh0KEJ1ZmZlckxvb2t1 cEVudCwga2V5LAorCQkJCQkJCQkJCSJTaGFyZWQgQnVmZmVyIExvb2t1cCBUYWJsZSIsCisJCQkJ CQkJCQkJc2l6ZSwgc2l6ZSwgJm9wdHMpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvc3RvcmFnZS9idWZmZXIvYnVmbWdyLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9i dWZtZ3IuYwppbmRleCBhMDM2YzJhYTI3NS4uYTk0Y2M4OTY1NGUgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1nci5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2Uv YnVmZmVyL2J1Zm1nci5jCkBAIC02Miw2ICs2Miw3IEBACiAjaW5jbHVkZSAic3RvcmFnZS9zbWdy LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zdGFuZGJ5LmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtZGVi dWcuaCIKKyNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgogI2luY2x1ZGUgInV0aWxzL3BzX3N0 YXR1cy5oIgogI2luY2x1ZGUgInV0aWxzL3JlbC5oIgogI2luY2x1ZGUgInV0aWxzL3Jlc293bmVy LmgiCkBAIC00MTAwLDggKzQxMDEsNiBAQCBBdEVPWGFjdF9CdWZmZXJzKGJvb2wgaXNDb21taXQp CiB2b2lkCiBJbml0QnVmZmVyTWFuYWdlckFjY2Vzcyh2b2lkKQogewotCUhBU0hDVEwJCWhhc2hf Y3RsOwotCiAJLyoKIAkgKiBBbiBhZHZpc29yeSBsaW1pdCBvbiB0aGUgbnVtYmVyIG9mIHBpbnMg ZWFjaCBiYWNrZW5kIHNob3VsZCBob2xkLCBiYXNlZAogCSAqIG9uIHNoYXJlZF9idWZmZXJzIGFu ZCB0aGUgbWF4aW11bSBudW1iZXIgb2YgY29ubmVjdGlvbnMgcG9zc2libGUuCkBAIC00MTE0LDEx ICs0MTEzLDkgQEAgSW5pdEJ1ZmZlck1hbmFnZXJBY2Nlc3Modm9pZCkKIAltZW1zZXQoJlByaXZh dGVSZWZDb3VudEFycmF5LCAwLCBzaXplb2YoUHJpdmF0ZVJlZkNvdW50QXJyYXkpKTsKIAltZW1z ZXQoJlByaXZhdGVSZWZDb3VudEFycmF5S2V5cywgMCwgc2l6ZW9mKFByaXZhdGVSZWZDb3VudEFy cmF5S2V5cykpOwogCi0JaGFzaF9jdGwua2V5c2l6ZSA9IHNpemVvZihCdWZmZXIpOwotCWhhc2hf Y3RsLmVudHJ5c2l6ZSA9IHNpemVvZihQcml2YXRlUmVmQ291bnRFbnRyeSk7Ci0KLQlQcml2YXRl UmVmQ291bnRIYXNoID0gaGFzaF9jcmVhdGUoIlByaXZhdGVSZWZDb3VudCIsIDEwMCwgJmhhc2hf Y3RsLAotCQkJCQkJCQkJICBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTKTsKKwlQcml2YXRlUmVmQ291 bnRIYXNoID0gaGFzaF9tYWtlX2N4dChQcml2YXRlUmVmQ291bnRFbnRyeSwgYnVmZmVyLAorCQkJ CQkJCQkJCSJQcml2YXRlUmVmQ291bnQiLCAxMDAsCisJCQkJCQkJCQkJVG9wTWVtb3J5Q29udGV4 dCk7CiAKIAkvKgogCSAqIEF0UHJvY0V4aXRfQnVmZmVycyBuZWVkcyBMV0xvY2sgYWNjZXNzLCBh bmQgdGhlcmVieSBoYXMgdG8gYmUgY2FsbGVkIGF0CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9z dG9yYWdlL2J1ZmZlci9sb2NhbGJ1Zi5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvbG9j YWxidWYuYwppbmRleCBmNmUyYjFhYTI4OC4uNTFmNjU4ZGZjZjYgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2xvY2FsYnVmLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFn ZS9idWZmZXIvbG9jYWxidWYuYwpAQCAtNzI4LDcgKzcyOCw2IEBAIHN0YXRpYyB2b2lkCiBJbml0 TG9jYWxCdWZmZXJzKHZvaWQpCiB7CiAJaW50CQkJbmJ1ZnMgPSBudW1fdGVtcF9idWZmZXJzOwot CUhBU0hDVEwJCWluZm87CiAJaW50CQkJaTsKIAogCS8qCkBAIC03NzksMTMgKzc3OCw5IEBAIElu aXRMb2NhbEJ1ZmZlcnModm9pZCkKIAl9CiAKIAkvKiBDcmVhdGUgdGhlIGxvb2t1cCBoYXNoIHRh YmxlICovCi0JaW5mby5rZXlzaXplID0gc2l6ZW9mKEJ1ZmZlclRhZyk7Ci0JaW5mby5lbnRyeXNp emUgPSBzaXplb2YoTG9jYWxCdWZmZXJMb29rdXBFbnQpOwotCi0JTG9jYWxCdWZIYXNoID0gaGFz aF9jcmVhdGUoIkxvY2FsIEJ1ZmZlciBMb29rdXAgVGFibGUiLAotCQkJCQkJCSAgIG5idWZzLAot CQkJCQkJCSAgICZpbmZvLAotCQkJCQkJCSAgIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMpOworCUxv Y2FsQnVmSGFzaCA9IGhhc2hfbWFrZV9jeHQoTG9jYWxCdWZmZXJMb29rdXBFbnQsIGtleSwKKwkJ CQkJCQkJICJMb2NhbCBCdWZmZXIgTG9va3VwIFRhYmxlIiwgbmJ1ZnMsCisJCQkJCQkJCSBUb3BN ZW1vcnlDb250ZXh0KTsKIAogCWlmICghTG9jYWxCdWZIYXNoKQogCQllbG9nKEVSUk9SLCAiY291 bGQgbm90IGluaXRpYWxpemUgbG9jYWwgYnVmZmVyIGhhc2ggdGFibGUiKTsKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3N0b3JhZ2UvZmlsZS9yZWluaXQuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2Uv ZmlsZS9yZWluaXQuYwppbmRleCAyNWZhMjE1MTMwOS4uMjZlODEwZTZiNTAgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3N0b3JhZ2UvZmlsZS9yZWluaXQuYworKysgYi9zcmMvYmFja2VuZC9zdG9y YWdlL2ZpbGUvcmVpbml0LmMKQEAgLTE3NSw3ICsxNzUsNiBAQCBSZXNldFVubG9nZ2VkUmVsYXRp b25zSW5EYnNwYWNlRGlyKGNvbnN0IGNoYXIgKmRic3BhY2VkaXJuYW1lLCBpbnQgb3ApCiAJaWYg KChvcCAmIFVOTE9HR0VEX1JFTEFUSU9OX0NMRUFOVVApICE9IDApCiAJewogCQlIVEFCCSAgICpo YXNoOwotCQlIQVNIQ1RMCQljdGw7CiAKIAkJLyoKIAkJICogSXQncyBwb3NzaWJsZSB0aGF0IHNv bWVvbmUgY291bGQgY3JlYXRlIGEgdG9uIG9mIHVubG9nZ2VkIHJlbGF0aW9ucwpAQCAtMTg0LDEx ICsxODMsOCBAQCBSZXNldFVubG9nZ2VkUmVsYXRpb25zSW5EYnNwYWNlRGlyKGNvbnN0IGNoYXIg KmRic3BhY2VkaXJuYW1lLCBpbnQgb3ApCiAJCSAqIG5lZWQgdG8gYmUgcmVzZXQuICBPdGhlcndp c2UsIHRoaXMgY2xlYW51cCBvcGVyYXRpb24gd291bGQgYmUKIAkJICogTyhuXjIpLgogCQkgKi8K LQkJY3RsLmtleXNpemUgPSBzaXplb2YoT2lkKTsKLQkJY3RsLmVudHJ5c2l6ZSA9IHNpemVvZih1 bmxvZ2dlZF9yZWxhdGlvbl9lbnRyeSk7Ci0JCWN0bC5oY3h0ID0gQ3VycmVudE1lbW9yeUNvbnRl eHQ7Ci0JCWhhc2ggPSBoYXNoX2NyZWF0ZSgidW5sb2dnZWQgcmVsYXRpb24gT0lEcyIsIDMyLCAm Y3RsLAotCQkJCQkJICAgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhBU0hfQ09OVEVYVCk7CisJ CWhhc2ggPSBoYXNoX21ha2UodW5sb2dnZWRfcmVsYXRpb25fZW50cnksIHJlbG51bWJlciwKKwkJ CQkJCSAidW5sb2dnZWQgcmVsYXRpb24gT0lEcyIsIDMyKTsKIAogCQkvKiBTY2FuIHRoZSBkaXJl Y3RvcnkuICovCiAJCWRic3BhY2VfZGlyID0gQWxsb2NhdGVEaXIoZGJzcGFjZWRpcm5hbWUpOwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2htZW0uYyBiL3NyYy9iYWNrZW5k L3N0b3JhZ2UvaXBjL3NobWVtLmMKaW5kZXggZDJmNDcxMGYxNDEuLmI2YThkMWVjNzc2IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaG1lbS5jCisrKyBiL3NyYy9iYWNrZW5k L3N0b3JhZ2UvaXBjL3NobWVtLmMKQEAgLTI4NCw4ICsyODQsNiBAQCBTaG1lbUFkZHJJc1ZhbGlk KGNvbnN0IHZvaWQgKmFkZHIpCiB2b2lkCiBJbml0U2htZW1JbmRleCh2b2lkKQogewotCUhBU0hD VEwJCWluZm87Ci0KIAkvKgogCSAqIENyZWF0ZSB0aGUgc2hhcmVkIG1lbW9yeSBzaG1lbSBpbmRl eC4KIAkgKgpAQCAtMjk0LDEzICsyOTIsOCBAQCBJbml0U2htZW1JbmRleCh2b2lkKQogCSAqIGlu aXRpYWxpemluZyB0aGUgU2htZW1JbmRleCBpdHNlbGYuICBUaGUgc3BlY2lhbCAiU2htZW1JbmRl eCIgaGFzaAogCSAqIHRhYmxlIG5hbWUgd2lsbCB0ZWxsIFNobWVtSW5pdFN0cnVjdCB0byBmYWtl IGl0LgogCSAqLwotCWluZm8ua2V5c2l6ZSA9IFNITUVNX0lOREVYX0tFWVNJWkU7Ci0JaW5mby5l bnRyeXNpemUgPSBzaXplb2YoU2htZW1JbmRleEVudCk7Ci0KLQlTaG1lbUluZGV4ID0gU2htZW1J bml0SGFzaCgiU2htZW1JbmRleCIsCi0JCQkJCQkJICAgU0hNRU1fSU5ERVhfU0laRSwgU0hNRU1f SU5ERVhfU0laRSwKLQkJCQkJCQkgICAmaW5mbywKLQkJCQkJCQkgICBIQVNIX0VMRU0gfCBIQVNI X1NUUklOR1MpOworCVNobWVtSW5kZXggPSBzaG1lbV9oYXNoX21ha2UoU2htZW1JbmRleEVudCwg a2V5LCAiU2htZW1JbmRleCIsCisJCQkJCQkJCSBTSE1FTV9JTkRFWF9TSVpFLCBTSE1FTV9JTkRF WF9TSVpFKTsKIH0KIAogLyoKQEAgLTM2OSw2ICszNjIsMjggQEAgU2htZW1Jbml0SGFzaChjb25z dCBjaGFyICpuYW1lLAkJLyogdGFibGUgc3RyaW5nIG5hbWUgZm9yIHNobWVtIGluZGV4ICovCiAJ cmV0dXJuIGhhc2hfY3JlYXRlKG5hbWUsIGluaXRfc2l6ZSwgaW5mb1AsIGhhc2hfZmxhZ3MpOwog fQogCisvKgorICogSW1wbGVtZW50YXRpb24gZnVuY3Rpb24gZm9yIHNobWVtX2hhc2hfbWFrZSBt YWNyb3MuCisgKgorICogQ3JlYXRlcyBhIHNoYXJlZCBtZW1vcnkgaGFzaCB0YWJsZSB3aXRoIHNp bXBsaWZpZWQgcGFyYW1ldGVycy4KKyAqIFBhc3MgTlVMTCBmb3Igb3B0cyB0byB1c2UgYWxsIGRl ZmF1bHRzLgorICovCitIVEFCICoKK3NobWVtX2hhc2hfbWFrZV9pbXBsKGNvbnN0IGNoYXIgKm5h bWUsIGludDY0IGluaXRfc2l6ZSwgaW50NjQgbWF4X3NpemUsCisJCQkJCSBTaXplIGtleXNpemUs IFNpemUgZW50cnlzaXplLCBib29sIHN0cmluZ19rZXksCisJCQkJCSBjb25zdCBIQVNIT1BUUyAq b3B0cykKK3sKKwlIQVNIQ1RMCQljdGw7CisJaW50CQkJZmxhZ3M7CisKKwkvKiBTaGFyZWQgbWVt b3J5IGhhc2ggdGFibGVzIHVzZSBTaG1lbUFsbG9jTm9FcnJvciwgbm90IGEgY3VzdG9tIGFsbG9j YXRvciAqLworCUFzc2VydChvcHRzID09IE5VTEwgfHwgb3B0cy0+YWxsb2MgPT0gTlVMTCk7CisK KwloYXNoX29wdHNfaW5pdCgmY3RsLCAmZmxhZ3MsIGtleXNpemUsIGVudHJ5c2l6ZSwgc3RyaW5n X2tleSwgb3B0cyk7CisKKwlyZXR1cm4gU2htZW1Jbml0SGFzaChuYW1lLCBpbml0X3NpemUsIG1h eF9zaXplLCAmY3RsLCBmbGFncyk7Cit9CisKIC8qCiAgKiBTaG1lbUluaXRTdHJ1Y3QgLS0gQ3Jl YXRlL2F0dGFjaCB0byBhIHN0cnVjdHVyZSBpbiBzaGFyZWQgbWVtb3J5LgogICoKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnkuYyBiL3NyYy9iYWNrZW5kL3N0b3Jh Z2UvaXBjL3N0YW5kYnkuYwppbmRleCBhZmZmYWI3NzEwNi4uN2E5NmUzZTIwMzkgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnkuYworKysgYi9zcmMvYmFja2VuZC9z dG9yYWdlL2lwYy9zdGFuZGJ5LmMKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJzdG9yYWdl L3N0YW5kYnkuaCIKICNpbmNsdWRlICJ1dGlscy9oc2VhcmNoLmgiCiAjaW5jbHVkZSAidXRpbHMv aW5qZWN0aW9uX3BvaW50LmgiCisjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKICNpbmNsdWRl ICJ1dGlscy9wc19zdGF0dXMuaCIKICNpbmNsdWRlICJ1dGlscy90aW1lb3V0LmgiCiAjaW5jbHVk ZSAidXRpbHMvdGltZXN0YW1wLmgiCkBAIC05NSw3ICs5Niw2IEBAIHZvaWQKIEluaXRSZWNvdmVy eVRyYW5zYWN0aW9uRW52aXJvbm1lbnQodm9pZCkKIHsKIAlWaXJ0dWFsVHJhbnNhY3Rpb25JZCB2 eGlkOwotCUhBU0hDVEwJCWhhc2hfY3RsOwogCiAJQXNzZXJ0KFJlY292ZXJ5TG9ja0hhc2ggPT0g TlVMTCk7CS8qIGRvbid0IHJ1biB0aGlzIHR3aWNlICovCiAKQEAgLTEwMywxOCArMTAzLDEyIEBA IEluaXRSZWNvdmVyeVRyYW5zYWN0aW9uRW52aXJvbm1lbnQodm9pZCkKIAkgKiBJbml0aWFsaXpl IHRoZSBoYXNoIHRhYmxlcyBmb3IgdHJhY2tpbmcgdGhlIGxvY2tzIGhlbGQgYnkgZWFjaAogCSAq IHRyYW5zYWN0aW9uLgogCSAqLwotCWhhc2hfY3RsLmtleXNpemUgPSBzaXplb2YoeGxfc3RhbmRi eV9sb2NrKTsKLQloYXNoX2N0bC5lbnRyeXNpemUgPSBzaXplb2YoUmVjb3ZlcnlMb2NrRW50cnkp OwotCVJlY292ZXJ5TG9ja0hhc2ggPSBoYXNoX2NyZWF0ZSgiUmVjb3ZlcnlMb2NrSGFzaCIsCi0J CQkJCQkJCSAgIDY0LAotCQkJCQkJCQkgICAmaGFzaF9jdGwsCi0JCQkJCQkJCSAgIEhBU0hfRUxF TSB8IEhBU0hfQkxPQlMpOwotCWhhc2hfY3RsLmtleXNpemUgPSBzaXplb2YoVHJhbnNhY3Rpb25J ZCk7Ci0JaGFzaF9jdGwuZW50cnlzaXplID0gc2l6ZW9mKFJlY292ZXJ5TG9ja1hpZEVudHJ5KTsK LQlSZWNvdmVyeUxvY2tYaWRIYXNoID0gaGFzaF9jcmVhdGUoIlJlY292ZXJ5TG9ja1hpZEhhc2gi LAotCQkJCQkJCQkJICA2NCwKLQkJCQkJCQkJCSAgJmhhc2hfY3RsLAotCQkJCQkJCQkJICBIQVNI X0VMRU0gfCBIQVNIX0JMT0JTKTsKKwlSZWNvdmVyeUxvY2tIYXNoID0gaGFzaF9tYWtlX2N4dChS ZWNvdmVyeUxvY2tFbnRyeSwga2V5LAorCQkJCQkJCQkJICJSZWNvdmVyeUxvY2tIYXNoIiwgNjQs CisJCQkJCQkJCQkgVG9wTWVtb3J5Q29udGV4dCk7CisJUmVjb3ZlcnlMb2NrWGlkSGFzaCA9IGhh c2hfbWFrZV9jeHQoUmVjb3ZlcnlMb2NrWGlkRW50cnksIHhpZCwKKwkJCQkJCQkJCQkiUmVjb3Zl cnlMb2NrWGlkSGFzaCIsIDY0LAorCQkJCQkJCQkJCVRvcE1lbW9yeUNvbnRleHQpOwogCiAJLyoK IAkgKiBJbml0aWFsaXplIHNoYXJlZCBpbnZhbGlkYXRpb24gbWFuYWdlbWVudCBmb3IgU3RhcnR1 cCBwcm9jZXNzLCBiZWluZwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2xv Y2suYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sb2NrLmMKaW5kZXggN2YwY2Q3ODRmNzku LjNmMjBjODU4ODFhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbG9jay5j CisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sb2NrLmMKQEAgLTQ0Myw3ICs0NDMsNyBA QCBzdGF0aWMgdm9pZCBHZXRTaW5nbGVQcm9jQmxvY2tlclN0YXR1c0RhdGEoUEdQUk9DICpibG9j a2VkX3Byb2MsCiB2b2lkCiBMb2NrTWFuYWdlclNobWVtSW5pdCh2b2lkKQogewotCUhBU0hDVEwJ CWluZm87CisJSEFTSE9QVFMJb3B0czsKIAlpbnQ2NAkJaW5pdF90YWJsZV9zaXplLAogCQkJCW1h eF90YWJsZV9zaXplOwogCWJvb2wJCWZvdW5kOwpAQCAtNDU5LDE1ICs0NTksMTEgQEAgTG9ja01h bmFnZXJTaG1lbUluaXQodm9pZCkKIAkgKiBBbGxvY2F0ZSBoYXNoIHRhYmxlIGZvciBMT0NLIHN0 cnVjdHMuICBUaGlzIHN0b3JlcyBwZXItbG9ja2VkLW9iamVjdAogCSAqIGluZm9ybWF0aW9uLgog CSAqLwotCWluZm8ua2V5c2l6ZSA9IHNpemVvZihMT0NLVEFHKTsKLQlpbmZvLmVudHJ5c2l6ZSA9 IHNpemVvZihMT0NLKTsKLQlpbmZvLm51bV9wYXJ0aXRpb25zID0gTlVNX0xPQ0tfUEFSVElUSU9O UzsKLQotCUxvY2tNZXRob2RMb2NrSGFzaCA9IFNobWVtSW5pdEhhc2goIkxPQ0sgaGFzaCIsCi0J CQkJCQkJCQkgICBpbml0X3RhYmxlX3NpemUsCi0JCQkJCQkJCQkgICBtYXhfdGFibGVfc2l6ZSwK LQkJCQkJCQkJCSAgICZpbmZvLAotCQkJCQkJCQkJICAgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8 IEhBU0hfUEFSVElUSU9OKTsKKwlNZW1TZXQoJm9wdHMsIDAsIHNpemVvZihvcHRzKSk7CisJb3B0 cy5udW1fcGFydGl0aW9ucyA9IE5VTV9MT0NLX1BBUlRJVElPTlM7CisJTG9ja01ldGhvZExvY2tI YXNoID0gc2htZW1faGFzaF9tYWtlX2V4dChMT0NLLCB0YWcsICJMT0NLIGhhc2giLAorCQkJCQkJ CQkJCQkgaW5pdF90YWJsZV9zaXplLCBtYXhfdGFibGVfc2l6ZSwKKwkJCQkJCQkJCQkJICZvcHRz KTsKIAogCS8qIEFzc3VtZSBhbiBhdmVyYWdlIG9mIDIgaG9sZGVycyBwZXIgbG9jayAqLwogCW1h eF90YWJsZV9zaXplICo9IDI7CkBAIC00NzcsMTYgKzQ3MywxMiBAQCBMb2NrTWFuYWdlclNobWVt SW5pdCh2b2lkKQogCSAqIEFsbG9jYXRlIGhhc2ggdGFibGUgZm9yIFBST0NMT0NLIHN0cnVjdHMu ICBUaGlzIHN0b3JlcwogCSAqIHBlci1sb2NrLXBlci1ob2xkZXIgaW5mb3JtYXRpb24uCiAJICov Ci0JaW5mby5rZXlzaXplID0gc2l6ZW9mKFBST0NMT0NLVEFHKTsKLQlpbmZvLmVudHJ5c2l6ZSA9 IHNpemVvZihQUk9DTE9DSyk7Ci0JaW5mby5oYXNoID0gcHJvY2xvY2tfaGFzaDsKLQlpbmZvLm51 bV9wYXJ0aXRpb25zID0gTlVNX0xPQ0tfUEFSVElUSU9OUzsKLQotCUxvY2tNZXRob2RQcm9jTG9j a0hhc2ggPSBTaG1lbUluaXRIYXNoKCJQUk9DTE9DSyBoYXNoIiwKLQkJCQkJCQkJCQkgICBpbml0 X3RhYmxlX3NpemUsCi0JCQkJCQkJCQkJICAgbWF4X3RhYmxlX3NpemUsCi0JCQkJCQkJCQkJICAg JmluZm8sCi0JCQkJCQkJCQkJICAgSEFTSF9FTEVNIHwgSEFTSF9GVU5DVElPTiB8IEhBU0hfUEFS VElUSU9OKTsKKwlNZW1TZXQoJm9wdHMsIDAsIHNpemVvZihvcHRzKSk7CisJb3B0cy5oYXNoID0g cHJvY2xvY2tfaGFzaDsKKwlvcHRzLm51bV9wYXJ0aXRpb25zID0gTlVNX0xPQ0tfUEFSVElUSU9O UzsKKwlMb2NrTWV0aG9kUHJvY0xvY2tIYXNoID0gc2htZW1faGFzaF9tYWtlX2V4dChQUk9DTE9D SywgdGFnLCAiUFJPQ0xPQ0sgaGFzaCIsCisJCQkJCQkJCQkJCQkgaW5pdF90YWJsZV9zaXplLCBt YXhfdGFibGVfc2l6ZSwKKwkJCQkJCQkJCQkJCSAmb3B0cyk7CiAKIAkvKgogCSAqIEFsbG9jYXRl IGZhc3QtcGF0aCBzdHJ1Y3R1cmVzLgpAQCAtNTA4LDE1ICs1MDAsOSBAQCBJbml0TG9ja01hbmFn ZXJBY2Nlc3Modm9pZCkKIAkgKiBBbGxvY2F0ZSBub24tc2hhcmVkIGhhc2ggdGFibGUgZm9yIExP Q0FMTE9DSyBzdHJ1Y3RzLiAgVGhpcyBzdG9yZXMgbG9jawogCSAqIGNvdW50cyBhbmQgcmVzb3Vy Y2Ugb3duZXIgaW5mb3JtYXRpb24uCiAJICovCi0JSEFTSENUTAkJaW5mbzsKLQotCWluZm8ua2V5 c2l6ZSA9IHNpemVvZihMT0NBTExPQ0tUQUcpOwotCWluZm8uZW50cnlzaXplID0gc2l6ZW9mKExP Q0FMTE9DSyk7Ci0KLQlMb2NrTWV0aG9kTG9jYWxIYXNoID0gaGFzaF9jcmVhdGUoIkxPQ0FMTE9D SyBoYXNoIiwKLQkJCQkJCQkJCSAgMTYsCi0JCQkJCQkJCQkgICZpbmZvLAotCQkJCQkJCQkJICBI QVNIX0VMRU0gfCBIQVNIX0JMT0JTKTsKKwlMb2NrTWV0aG9kTG9jYWxIYXNoID0gaGFzaF9tYWtl X2N4dChMT0NBTExPQ0ssIHRhZywKKwkJCQkJCQkJCQkiTE9DQUxMT0NLIGhhc2giLCAxNiwKKwkJ CQkJCQkJCQlUb3BNZW1vcnlDb250ZXh0KTsKIH0KIAogCkBAIC0zMzk0LDIwICszMzgwLDEzIEBA IENoZWNrRm9yU2Vzc2lvbkFuZFhhY3RMb2Nrcyh2b2lkKQogCQlib29sCQl4YWN0TG9jazsJLyog aXMgYW55IGxvY2ttb2RlIGhlbGQgYXQgeGFjdCBsZXZlbD8gKi8KIAl9IFBlckxvY2tUYWdFbnRy eTsKIAotCUhBU0hDVEwJCWhhc2hfY3RsOwogCUhUQUIJICAgKmxvY2todGFiOwogCUhBU0hfU0VR X1NUQVRVUyBzdGF0dXM7CiAJTE9DQUxMT0NLICAqbG9jYWxsb2NrOwogCiAJLyogQ3JlYXRlIGEg bG9jYWwgaGFzaCB0YWJsZSBrZXllZCBieSBMT0NLVEFHIG9ubHkgKi8KLQloYXNoX2N0bC5rZXlz aXplID0gc2l6ZW9mKExPQ0tUQUcpOwotCWhhc2hfY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihQZXJM b2NrVGFnRW50cnkpOwotCWhhc2hfY3RsLmhjeHQgPSBDdXJyZW50TWVtb3J5Q29udGV4dDsKLQot CWxvY2todGFiID0gaGFzaF9jcmVhdGUoIkNoZWNrRm9yU2Vzc2lvbkFuZFhhY3RMb2NrcyB0YWJs ZSIsCi0JCQkJCQkgICAyNTYsIC8qIGFyYml0cmFyeSBpbml0aWFsIHNpemUgKi8KLQkJCQkJCSAg ICZoYXNoX2N0bCwKLQkJCQkJCSAgIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBIQVNIX0NPTlRF WFQpOworCWxvY2todGFiID0gaGFzaF9tYWtlKFBlckxvY2tUYWdFbnRyeSwgbG9jaywKKwkJCQkJ CSAiQ2hlY2tGb3JTZXNzaW9uQW5kWGFjdExvY2tzIHRhYmxlIiwgMjU2KTsKIAogCS8qIFNjYW4g bG9jYWwgbG9jayB0YWJsZSB0byBmaW5kIGVudHJpZXMgZm9yIGVhY2ggTE9DS1RBRyAqLwogCWhh c2hfc2VxX2luaXQoJnN0YXR1cywgTG9ja01ldGhvZExvY2FsSGFzaCk7CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbHdsb2NrLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2xt Z3IvbHdsb2NrLmMKaW5kZXggNmE5Zjg2ZDUwMjUuLjBhZmM3Y2FlZWVlIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbHdsb2NrLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFn ZS9sbWdyL2x3bG9jay5jCkBAIC0yODUsNyArMjg1LDYgQEAgc3RhdGljIGx3bG9ja19zdGF0cyAq IGdldF9sd2xvY2tfc3RhdHNfZW50cnkoTFdMb2NrICpsb2NrKTsKIHN0YXRpYyB2b2lkCiBpbml0 X2x3bG9ja19zdGF0cyh2b2lkKQogewotCUhBU0hDVEwJCWN0bDsKIAlzdGF0aWMgTWVtb3J5Q29u dGV4dCBsd2xvY2tfc3RhdHNfY3h0ID0gTlVMTDsKIAlzdGF0aWMgYm9vbCBleGl0X3JlZ2lzdGVy ZWQgPSBmYWxzZTsKIApAQCAtMzA1LDExICszMDQsOCBAQCBpbml0X2x3bG9ja19zdGF0cyh2b2lk KQogCQkJCQkJCQkJCQkgQUxMT0NTRVRfREVGQVVMVF9TSVpFUyk7CiAJTWVtb3J5Q29udGV4dEFs bG93SW5Dcml0aWNhbFNlY3Rpb24obHdsb2NrX3N0YXRzX2N4dCwgdHJ1ZSk7CiAKLQljdGwua2V5 c2l6ZSA9IHNpemVvZihsd2xvY2tfc3RhdHNfa2V5KTsKLQljdGwuZW50cnlzaXplID0gc2l6ZW9m KGx3bG9ja19zdGF0cyk7Ci0JY3RsLmhjeHQgPSBsd2xvY2tfc3RhdHNfY3h0OwotCWx3bG9ja19z dGF0c19odGFiID0gaGFzaF9jcmVhdGUoImx3bG9jayBzdGF0cyIsIDE2Mzg0LCAmY3RsLAotCQkJ CQkJCQkJSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhBU0hfQ09OVEVYVCk7CisJbHdsb2NrX3N0 YXRzX2h0YWIgPSBoYXNoX21ha2VfY3h0KGx3bG9ja19zdGF0cywga2V5LAorCQkJCQkJCQkJICAi bHdsb2NrIHN0YXRzIiwgMTYzODQsIGx3bG9ja19zdGF0c19jeHQpOwogCWlmICghZXhpdF9yZWdp c3RlcmVkKQogCXsKIAkJb25fc2htZW1fZXhpdChwcmludF9sd2xvY2tfc3RhdHMsIDApOwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3ByZWRpY2F0ZS5jIGIvc3JjL2JhY2tl bmQvc3RvcmFnZS9sbWdyL3ByZWRpY2F0ZS5jCmluZGV4IGZlNzVlYWQzNTAxLi45ZjM3NzliOWFl YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3ByZWRpY2F0ZS5jCisrKyBi L3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcmVkaWNhdGUuYwpAQCAtMjEyLDYgKzIxMiw3IEBA CiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jYXJyYXku aCIKICNpbmNsdWRlICJ1dGlscy9ndWNfaG9va3MuaCIKKyNpbmNsdWRlICJ1dGlscy9tZW11dGls cy5oIgogI2luY2x1ZGUgInV0aWxzL3JlbC5oIgogI2luY2x1ZGUgInV0aWxzL3NuYXBtZ3IuaCIK IApAQCAtMTE0NCw3ICsxMTQ1LDcgQEAgQ2hlY2tQb2ludFByZWRpY2F0ZSh2b2lkKQogdm9pZAog UHJlZGljYXRlTG9ja1NobWVtSW5pdCh2b2lkKQogewotCUhBU0hDVEwJCWluZm87CisJSEFTSE9Q VFMJb3B0czsKIAlpbnQ2NAkJbWF4X3RhYmxlX3NpemU7CiAJU2l6ZQkJcmVxdWVzdFNpemU7CiAJ Ym9vbAkJZm91bmQ7CkBAIC0xMTYzLDE2ICsxMTY0LDEzIEBAIFByZWRpY2F0ZUxvY2tTaG1lbUlu aXQodm9pZCkKIAkgKiBBbGxvY2F0ZSBoYXNoIHRhYmxlIGZvciBQUkVESUNBVEVMT0NLVEFSR0VU IHN0cnVjdHMuICBUaGlzIHN0b3JlcwogCSAqIHBlci1wcmVkaWNhdGUtbG9jay10YXJnZXQgaW5m b3JtYXRpb24uCiAJICovCi0JaW5mby5rZXlzaXplID0gc2l6ZW9mKFBSRURJQ0FURUxPQ0tUQVJH RVRUQUcpOwotCWluZm8uZW50cnlzaXplID0gc2l6ZW9mKFBSRURJQ0FURUxPQ0tUQVJHRVQpOwot CWluZm8ubnVtX3BhcnRpdGlvbnMgPSBOVU1fUFJFRElDQVRFTE9DS19QQVJUSVRJT05TOwotCi0J UHJlZGljYXRlTG9ja1RhcmdldEhhc2ggPSBTaG1lbUluaXRIYXNoKCJQUkVESUNBVEVMT0NLVEFS R0VUIGhhc2giLAotCQkJCQkJCQkJCQltYXhfdGFibGVfc2l6ZSwKLQkJCQkJCQkJCQkJbWF4X3Rh YmxlX3NpemUsCi0JCQkJCQkJCQkJCSZpbmZvLAotCQkJCQkJCQkJCQlIQVNIX0VMRU0gfCBIQVNI X0JMT0JTIHwKLQkJCQkJCQkJCQkJSEFTSF9QQVJUSVRJT04gfCBIQVNIX0ZJWEVEX1NJWkUpOwor CU1lbVNldCgmb3B0cywgMCwgc2l6ZW9mKG9wdHMpKTsKKwlvcHRzLm51bV9wYXJ0aXRpb25zID0g TlVNX1BSRURJQ0FURUxPQ0tfUEFSVElUSU9OUzsKKwlvcHRzLmZpeGVkX3NpemUgPSB0cnVlOwor CVByZWRpY2F0ZUxvY2tUYXJnZXRIYXNoID0gc2htZW1faGFzaF9tYWtlX2V4dChQUkVESUNBVEVM T0NLVEFSR0VULCB0YWcsCisJCQkJCQkJCQkJCQkgICJQUkVESUNBVEVMT0NLVEFSR0VUIGhhc2gi LAorCQkJCQkJCQkJCQkJICBtYXhfdGFibGVfc2l6ZSwgbWF4X3RhYmxlX3NpemUsCisJCQkJCQkJ CQkJCQkgICZvcHRzKTsKIAogCS8qCiAJICogUmVzZXJ2ZSBhIGR1bW15IGVudHJ5IGluIHRoZSBo YXNoIHRhYmxlOyB3ZSB1c2UgaXQgdG8gbWFrZSBzdXJlIHRoZXJlJ3MKQEAgLTExOTUsMjAgKzEx OTMsMTcgQEAgUHJlZGljYXRlTG9ja1NobWVtSW5pdCh2b2lkKQogCSAqIEFsbG9jYXRlIGhhc2gg dGFibGUgZm9yIFBSRURJQ0FURUxPQ0sgc3RydWN0cy4gIFRoaXMgc3RvcmVzIHBlcgogCSAqIHhh Y3QtbG9jay1vZi1hLXRhcmdldCBpbmZvcm1hdGlvbi4KIAkgKi8KLQlpbmZvLmtleXNpemUgPSBz aXplb2YoUFJFRElDQVRFTE9DS1RBRyk7Ci0JaW5mby5lbnRyeXNpemUgPSBzaXplb2YoUFJFRElD QVRFTE9DSyk7Ci0JaW5mby5oYXNoID0gcHJlZGljYXRlbG9ja19oYXNoOwotCWluZm8ubnVtX3Bh cnRpdGlvbnMgPSBOVU1fUFJFRElDQVRFTE9DS19QQVJUSVRJT05TOwotCiAJLyogQXNzdW1lIGFu IGF2ZXJhZ2Ugb2YgMiB4YWN0cyBwZXIgdGFyZ2V0ICovCiAJbWF4X3RhYmxlX3NpemUgKj0gMjsK IAotCVByZWRpY2F0ZUxvY2tIYXNoID0gU2htZW1Jbml0SGFzaCgiUFJFRElDQVRFTE9DSyBoYXNo IiwKLQkJCQkJCQkJCSAgbWF4X3RhYmxlX3NpemUsCi0JCQkJCQkJCQkgIG1heF90YWJsZV9zaXpl LAotCQkJCQkJCQkJICAmaW5mbywKLQkJCQkJCQkJCSAgSEFTSF9FTEVNIHwgSEFTSF9GVU5DVElP TiB8Ci0JCQkJCQkJCQkgIEhBU0hfUEFSVElUSU9OIHwgSEFTSF9GSVhFRF9TSVpFKTsKKwlNZW1T ZXQoJm9wdHMsIDAsIHNpemVvZihvcHRzKSk7CisJb3B0cy5oYXNoID0gcHJlZGljYXRlbG9ja19o YXNoOworCW9wdHMubnVtX3BhcnRpdGlvbnMgPSBOVU1fUFJFRElDQVRFTE9DS19QQVJUSVRJT05T OworCW9wdHMuZml4ZWRfc2l6ZSA9IHRydWU7CisJUHJlZGljYXRlTG9ja0hhc2ggPSBzaG1lbV9o YXNoX21ha2VfZXh0KFBSRURJQ0FURUxPQ0ssIHRhZywKKwkJCQkJCQkJCQkJIlBSRURJQ0FURUxP Q0sgaGFzaCIsCisJCQkJCQkJCQkJCW1heF90YWJsZV9zaXplLCBtYXhfdGFibGVfc2l6ZSwKKwkJ CQkJCQkJCQkJJm9wdHMpOwogCiAJLyoKIAkgKiBDb21wdXRlIHNpemUgZm9yIHNlcmlhbGl6YWJs ZSB0cmFuc2FjdGlvbiBoYXNodGFibGUuIE5vdGUgdGhlc2UKQEAgLTEyODIsMTUgKzEyNzcsMTIg QEAgUHJlZGljYXRlTG9ja1NobWVtSW5pdCh2b2lkKQogCSAqIEFsbG9jYXRlIGhhc2ggdGFibGUg Zm9yIFNFUklBTElaQUJMRVhJRCBzdHJ1Y3RzLiAgVGhpcyBzdG9yZXMgcGVyLXhpZAogCSAqIGlu Zm9ybWF0aW9uIGZvciBzZXJpYWxpemFibGUgdHJhbnNhY3Rpb25zIHdoaWNoIGhhdmUgYWNjZXNz ZWQgZGF0YS4KIAkgKi8KLQlpbmZvLmtleXNpemUgPSBzaXplb2YoU0VSSUFMSVpBQkxFWElEVEFH KTsKLQlpbmZvLmVudHJ5c2l6ZSA9IHNpemVvZihTRVJJQUxJWkFCTEVYSUQpOwotCi0JU2VyaWFs aXphYmxlWGlkSGFzaCA9IFNobWVtSW5pdEhhc2goIlNFUklBTElaQUJMRVhJRCBoYXNoIiwKLQkJ CQkJCQkJCQltYXhfdGFibGVfc2l6ZSwKLQkJCQkJCQkJCQltYXhfdGFibGVfc2l6ZSwKLQkJCQkJ CQkJCQkmaW5mbywKLQkJCQkJCQkJCQlIQVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwKLQkJCQkJCQkJ CQlIQVNIX0ZJWEVEX1NJWkUpOworCU1lbVNldCgmb3B0cywgMCwgc2l6ZW9mKG9wdHMpKTsKKwlv cHRzLmZpeGVkX3NpemUgPSB0cnVlOworCVNlcmlhbGl6YWJsZVhpZEhhc2ggPSBzaG1lbV9oYXNo X21ha2VfZXh0KFNFUklBTElaQUJMRVhJRCwgdGFnLAorCQkJCQkJCQkJCQkgICJTRVJJQUxJWkFC TEVYSUQgaGFzaCIsCisJCQkJCQkJCQkJCSAgbWF4X3RhYmxlX3NpemUsIG1heF90YWJsZV9zaXpl LAorCQkJCQkJCQkJCQkgICZvcHRzKTsKIAogCS8qCiAJICogQWxsb2NhdGUgc3BhY2UgZm9yIHRy YWNraW5nIHJ3LWNvbmZsaWN0cyBpbiBsaXN0cyBhdHRhY2hlZCB0byB0aGUKQEAgLTE5MzcsMTYg KzE5MjksMTIgQEAgR2V0U2VyaWFsaXphYmxlVHJhbnNhY3Rpb25TbmFwc2hvdEludChTbmFwc2hv dCBzbmFwc2hvdCwKIHN0YXRpYyB2b2lkCiBDcmVhdGVMb2NhbFByZWRpY2F0ZUxvY2tIYXNoKHZv aWQpCiB7Ci0JSEFTSENUTAkJaGFzaF9jdGw7Ci0KIAkvKiBJbml0aWFsaXplIHRoZSBiYWNrZW5k LWxvY2FsIGhhc2ggdGFibGUgb2YgcGFyZW50IGxvY2tzICovCiAJQXNzZXJ0KExvY2FsUHJlZGlj YXRlTG9ja0hhc2ggPT0gTlVMTCk7Ci0JaGFzaF9jdGwua2V5c2l6ZSA9IHNpemVvZihQUkVESUNB VEVMT0NLVEFSR0VUVEFHKTsKLQloYXNoX2N0bC5lbnRyeXNpemUgPSBzaXplb2YoTE9DQUxQUkVE SUNBVEVMT0NLKTsKLQlMb2NhbFByZWRpY2F0ZUxvY2tIYXNoID0gaGFzaF9jcmVhdGUoIkxvY2Fs IHByZWRpY2F0ZSBsb2NrIiwKLQkJCQkJCQkJCQkgbWF4X3ByZWRpY2F0ZV9sb2Nrc19wZXJfeGFj dCwKLQkJCQkJCQkJCQkgJmhhc2hfY3RsLAotCQkJCQkJCQkJCSBIQVNIX0VMRU0gfCBIQVNIX0JM T0JTKTsKKwlMb2NhbFByZWRpY2F0ZUxvY2tIYXNoID0gaGFzaF9tYWtlX2N4dChMT0NBTFBSRURJ Q0FURUxPQ0ssIHRhZywKKwkJCQkJCQkJCQkgICAiTG9jYWwgcHJlZGljYXRlIGxvY2siLAorCQkJ CQkJCQkJCSAgIG1heF9wcmVkaWNhdGVfbG9ja3NfcGVyX3hhY3QsCisJCQkJCQkJCQkJICAgVG9w TWVtb3J5Q29udGV4dCk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdl L3NtZ3Ivc21nci5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9zbWdyL3NtZ3IuYwppbmRleCA4OTQz NTI4ZmUxYy4uNjgwZGE1MDQ4ZmQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2Uvc21n ci9zbWdyLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9zbWdyL3NtZ3IuYwpAQCAtNzMsNiAr NzMsNyBAQAogI2luY2x1ZGUgInN0b3JhZ2Uvc21nci5oIgogI2luY2x1ZGUgInV0aWxzL2hzZWFy Y2guaCIKICNpbmNsdWRlICJ1dGlscy9pbnZhbC5oIgorI2luY2x1ZGUgInV0aWxzL21lbXV0aWxz LmgiCiAKIAogLyoKQEAgLTI1MCwxMiArMjUxLDkgQEAgc21ncm9wZW4oUmVsRmlsZUxvY2F0b3Ig cmxvY2F0b3IsIFByb2NOdW1iZXIgYmFja2VuZCkKIAlpZiAoU01nclJlbGF0aW9uSGFzaCA9PSBO VUxMKQogCXsKIAkJLyogRmlyc3QgdGltZSB0aHJvdWdoOiBpbml0aWFsaXplIHRoZSBoYXNoIHRh YmxlICovCi0JCUhBU0hDVEwJCWN0bDsKLQotCQljdGwua2V5c2l6ZSA9IHNpemVvZihSZWxGaWxl TG9jYXRvckJhY2tlbmQpOwotCQljdGwuZW50cnlzaXplID0gc2l6ZW9mKFNNZ3JSZWxhdGlvbkRh dGEpOwotCQlTTWdyUmVsYXRpb25IYXNoID0gaGFzaF9jcmVhdGUoInNtZ3IgcmVsYXRpb24gdGFi bGUiLCA0MDAsCi0JCQkJCQkJCQkgICAmY3RsLCBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTKTsKKwkJ U01nclJlbGF0aW9uSGFzaCA9IGhhc2hfbWFrZV9jeHQoU01nclJlbGF0aW9uRGF0YSwgc21ncl9y bG9jYXRvciwKKwkJCQkJCQkJCQkgInNtZ3IgcmVsYXRpb24gdGFibGUiLCA0MDAsCisJCQkJCQkJ CQkJIFRvcE1lbW9yeUNvbnRleHQpOwogCQlkbGlzdF9pbml0KCZ1bnBpbm5lZF9yZWxucyk7CiAJ fQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL3N5bmMvc3luYy5jIGIvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9zeW5jL3N5bmMuYwppbmRleCBiMWFjY2M2OGI5NS4uMDFhY2IzMGYxYmIg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2Uvc3luYy9zeW5jLmMKKysrIGIvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9zeW5jL3N5bmMuYwpAQCAtMTMwLDggKzEzMCw2IEBAIEluaXRTeW5jKHZv aWQpCiAJICovCiAJaWYgKCFJc1VuZGVyUG9zdG1hc3RlciB8fCBBbUNoZWNrcG9pbnRlclByb2Nl c3MoKSkKIAl7Ci0JCUhBU0hDVEwJCWhhc2hfY3RsOwotCiAJCS8qCiAJCSAqIFhYWDogVGhlIGNo ZWNrcG9pbnRlciBuZWVkcyB0byBhZGQgZW50cmllcyB0byB0aGUgcGVuZGluZyBvcHMgdGFibGUK IAkJICogd2hlbiBhYnNvcmJpbmcgZnN5bmMgcmVxdWVzdHMuICBUaGF0IGlzIGRvbmUgd2l0aGlu IGEgY3JpdGljYWwKQEAgLTE0NiwxMyArMTQ0LDggQEAgSW5pdFN5bmModm9pZCkKIAkJCQkJCQkJ CQkJICBBTExPQ1NFVF9ERUZBVUxUX1NJWkVTKTsKIAkJTWVtb3J5Q29udGV4dEFsbG93SW5Dcml0 aWNhbFNlY3Rpb24ocGVuZGluZ09wc0N4dCwgdHJ1ZSk7CiAKLQkJaGFzaF9jdGwua2V5c2l6ZSA9 IHNpemVvZihGaWxlVGFnKTsKLQkJaGFzaF9jdGwuZW50cnlzaXplID0gc2l6ZW9mKFBlbmRpbmdG c3luY0VudHJ5KTsKLQkJaGFzaF9jdGwuaGN4dCA9IHBlbmRpbmdPcHNDeHQ7Ci0JCXBlbmRpbmdP cHMgPSBoYXNoX2NyZWF0ZSgiUGVuZGluZyBPcHMgVGFibGUiLAotCQkJCQkJCQkgMTAwTCwKLQkJ CQkJCQkJICZoYXNoX2N0bCwKLQkJCQkJCQkJIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBIQVNI X0NPTlRFWFQpOworCQlwZW5kaW5nT3BzID0gaGFzaF9tYWtlX2N4dChQZW5kaW5nRnN5bmNFbnRy eSwgdGFnLAorCQkJCQkJCQkgICAiUGVuZGluZyBPcHMgVGFibGUiLCAxMDBMLCBwZW5kaW5nT3Bz Q3h0KTsKIAkJcGVuZGluZ1VubGlua3MgPSBOSUw7CiAJfQogfQpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvdHNlYXJjaC90c190eXBhbmFseXplLmMgYi9zcmMvYmFja2VuZC90c2VhcmNoL3RzX3R5 cGFuYWx5emUuYwppbmRleCAwYzUxM2Q2OTRlNy4uYzJmM2I2MzI2NWQgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3RzZWFyY2gvdHNfdHlwYW5hbHl6ZS5jCisrKyBiL3NyYy9iYWNrZW5kL3RzZWFy Y2gvdHNfdHlwYW5hbHl6ZS5jCkBAIC0xNDksNyArMTQ5LDYgQEAgY29tcHV0ZV90c3ZlY3Rvcl9z dGF0cyhWYWNBdHRyU3RhdHMgKnN0YXRzLAogCiAJLyogVGhpcyBpcyBEIGZyb20gdGhlIExDIGFs Z29yaXRobS4gKi8KIAlIVEFCCSAgICpsZXhlbWVzX3RhYjsKLQlIQVNIQ1RMCQloYXNoX2N0bDsK IAlIQVNIX1NFUV9TVEFUVVMgc2Nhbl9zdGF0dXM7CiAKIAkvKiBUaGlzIGlzIHRoZSBjdXJyZW50 IGJ1Y2tldCBudW1iZXIgZnJvbSB0aGUgTEMgYWxnb3JpdGhtICovCkBAIC0xODAsMTUgKzE3OSw5 IEBAIGNvbXB1dGVfdHN2ZWN0b3Jfc3RhdHMoVmFjQXR0clN0YXRzICpzdGF0cywKIAkgKiB3b3Jy eSBhYm91dCBvdmVyZmxvd2luZyB0aGUgaW5pdGlhbCBzaXplLiBBbHNvIHdlIGRvbid0IG5lZWQg dG8gcGF5IGFueQogCSAqIGF0dGVudGlvbiB0byBsb2NraW5nIGFuZCBtZW1vcnkgbWFuYWdlbWVu dC4KIAkgKi8KLQloYXNoX2N0bC5rZXlzaXplID0gc2l6ZW9mKExleGVtZUhhc2hLZXkpOwotCWhh c2hfY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihUcmFja0l0ZW0pOwotCWhhc2hfY3RsLmhhc2ggPSBs ZXhlbWVfaGFzaDsKLQloYXNoX2N0bC5tYXRjaCA9IGxleGVtZV9tYXRjaDsKLQloYXNoX2N0bC5o Y3h0ID0gQ3VycmVudE1lbW9yeUNvbnRleHQ7Ci0JbGV4ZW1lc190YWIgPSBoYXNoX2NyZWF0ZSgi QW5hbHl6ZWQgbGV4ZW1lcyB0YWJsZSIsCi0JCQkJCQkJICBudW1fbWNlbGVtLAotCQkJCQkJCSAg Jmhhc2hfY3RsLAotCQkJCQkJCSAgSEFTSF9FTEVNIHwgSEFTSF9GVU5DVElPTiB8IEhBU0hfQ09N UEFSRSB8IEhBU0hfQ09OVEVYVCk7CisJbGV4ZW1lc190YWIgPSBoYXNoX21ha2VfZm4oVHJhY2tJ dGVtLCBrZXksCisJCQkJCQkJICAgIkFuYWx5emVkIGxleGVtZXMgdGFibGUiLCBudW1fbWNlbGVt LAorCQkJCQkJCSAgIGxleGVtZV9oYXNoLCBsZXhlbWVfbWF0Y2gpOwogCiAJLyogSW5pdGlhbGl6 ZSBjb3VudGVycy4gKi8KIAliX2N1cnJlbnQgPSAxOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv dXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkv d2FpdF9ldmVudC5jCmluZGV4IGU0ZjJjNDQwMjU3Li5lNWFjOTU2ZGFmMCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudC5jCisrKyBiL3NyYy9iYWNrZW5k L3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYwpAQCAtMTE5LDcgKzExOSw2IEBAIHZvaWQKIFdh aXRFdmVudEN1c3RvbVNobWVtSW5pdCh2b2lkKQogewogCWJvb2wJCWZvdW5kOwotCUhBU0hDVEwJ CWluZm87CiAKIAlXYWl0RXZlbnRDdXN0b21Db3VudGVyID0gKFdhaXRFdmVudEN1c3RvbUNvdW50 ZXJEYXRhICopCiAJCVNobWVtSW5pdFN0cnVjdCgiV2FpdEV2ZW50Q3VzdG9tQ291bnRlckRhdGEi LApAQCAtMTMzLDI0ICsxMzIsMTggQEAgV2FpdEV2ZW50Q3VzdG9tU2htZW1Jbml0KHZvaWQpCiAJ fQogCiAJLyogaW5pdGlhbGl6ZSBvciBhdHRhY2ggdGhlIGhhc2ggdGFibGVzIHRvIHN0b3JlIGN1 c3RvbSB3YWl0IGV2ZW50cyAqLwotCWluZm8ua2V5c2l6ZSA9IHNpemVvZih1aW50MzIpOwotCWlu Zm8uZW50cnlzaXplID0gc2l6ZW9mKFdhaXRFdmVudEN1c3RvbUVudHJ5QnlJbmZvKTsKIAlXYWl0 RXZlbnRDdXN0b21IYXNoQnlJbmZvID0KLQkJU2htZW1Jbml0SGFzaCgiV2FpdEV2ZW50Q3VzdG9t IGhhc2ggYnkgd2FpdCBldmVudCBpbmZvcm1hdGlvbiIsCi0JCQkJCSAgV0FJVF9FVkVOVF9DVVNU T01fSEFTSF9JTklUX1NJWkUsCi0JCQkJCSAgV0FJVF9FVkVOVF9DVVNUT01fSEFTSF9NQVhfU0la RSwKLQkJCQkJICAmaW5mbywKLQkJCQkJICBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTKTsKKwkJc2ht ZW1faGFzaF9tYWtlKFdhaXRFdmVudEN1c3RvbUVudHJ5QnlJbmZvLCB3YWl0X2V2ZW50X2luZm8s CisJCQkJCQkiV2FpdEV2ZW50Q3VzdG9tIGhhc2ggYnkgd2FpdCBldmVudCBpbmZvcm1hdGlvbiIs CisJCQkJCQlXQUlUX0VWRU5UX0NVU1RPTV9IQVNIX0lOSVRfU0laRSwKKwkJCQkJCVdBSVRfRVZF TlRfQ1VTVE9NX0hBU0hfTUFYX1NJWkUpOwogCiAJLyoga2V5IGlzIGEgTlVMTC10ZXJtaW5hdGVk IHN0cmluZyAqLwotCWluZm8ua2V5c2l6ZSA9IHNpemVvZihjaGFyW05BTUVEQVRBTEVOXSk7Ci0J aW5mby5lbnRyeXNpemUgPSBzaXplb2YoV2FpdEV2ZW50Q3VzdG9tRW50cnlCeU5hbWUpOwogCVdh aXRFdmVudEN1c3RvbUhhc2hCeU5hbWUgPQotCQlTaG1lbUluaXRIYXNoKCJXYWl0RXZlbnRDdXN0 b20gaGFzaCBieSBuYW1lIiwKLQkJCQkJICBXQUlUX0VWRU5UX0NVU1RPTV9IQVNIX0lOSVRfU0la RSwKLQkJCQkJICBXQUlUX0VWRU5UX0NVU1RPTV9IQVNIX01BWF9TSVpFLAotCQkJCQkgICZpbmZv LAotCQkJCQkgIEhBU0hfRUxFTSB8IEhBU0hfU1RSSU5HUyk7CisJCXNobWVtX2hhc2hfbWFrZShX YWl0RXZlbnRDdXN0b21FbnRyeUJ5TmFtZSwgd2FpdF9ldmVudF9uYW1lLAorCQkJCQkJIldhaXRF dmVudEN1c3RvbSBoYXNoIGJ5IG5hbWUiLAorCQkJCQkJV0FJVF9FVkVOVF9DVVNUT01fSEFTSF9J TklUX1NJWkUsCisJCQkJCQlXQUlUX0VWRU5UX0NVU1RPTV9IQVNIX01BWF9TSVpFKTsKIH0KIAog LyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9hcnJheV90eXBhbmFseXplLmMg Yi9zcmMvYmFja2VuZC91dGlscy9hZHQvYXJyYXlfdHlwYW5hbHl6ZS5jCmluZGV4IDdiYjAwMGRk YmQzLi5iZGM3ZTIyMzdmNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2FycmF5 X3R5cGFuYWx5emUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvYXJyYXlfdHlwYW5hbHl6 ZS5jCkBAIC0yMjMsNyArMjIzLDYgQEAgY29tcHV0ZV9hcnJheV9zdGF0cyhWYWNBdHRyU3RhdHMg KnN0YXRzLCBBbmFseXplQXR0ckZldGNoRnVuYyBmZXRjaGZ1bmMsCiAKIAkvKiBUaGlzIGlzIEQg ZnJvbSB0aGUgTEMgYWxnb3JpdGhtLiAqLwogCUhUQUIJICAgKmVsZW1lbnRzX3RhYjsKLQlIQVNI Q1RMCQllbGVtX2hhc2hfY3RsOwogCUhBU0hfU0VRX1NUQVRVUyBzY2FuX3N0YXR1czsKIAogCS8q IFRoaXMgaXMgdGhlIGN1cnJlbnQgYnVja2V0IG51bWJlciBmcm9tIHRoZSBMQyBhbGdvcml0aG0g Ki8KQEAgLTIzNiw3ICsyMzUsNiBAQCBjb21wdXRlX2FycmF5X3N0YXRzKFZhY0F0dHJTdGF0cyAq c3RhdHMsIEFuYWx5emVBdHRyRmV0Y2hGdW5jIGZldGNoZnVuYywKIAlUcmFja0l0ZW0gICppdGVt OwogCWludAkJCXNsb3RfaWR4OwogCUhUQUIJICAgKmNvdW50X3RhYjsKLQlIQVNIQ1RMCQljb3Vu dF9oYXNoX2N0bDsKIAlERUNvdW50SXRlbSAqY291bnRfaXRlbTsKIAogCWV4dHJhX2RhdGEgPSAo QXJyYXlBbmFseXplRXh0cmFEYXRhICopIHN0YXRzLT5leHRyYV9kYXRhOwpAQCAtMjc2LDI0ICsy NzQsMTMgQEAgY29tcHV0ZV9hcnJheV9zdGF0cyhWYWNBdHRyU3RhdHMgKnN0YXRzLCBBbmFseXpl QXR0ckZldGNoRnVuYyBmZXRjaGZ1bmMsCiAJICogd29ycnkgYWJvdXQgb3ZlcmZsb3dpbmcgdGhl IGluaXRpYWwgc2l6ZS4gQWxzbyB3ZSBkb24ndCBuZWVkIHRvIHBheSBhbnkKIAkgKiBhdHRlbnRp b24gdG8gbG9ja2luZyBhbmQgbWVtb3J5IG1hbmFnZW1lbnQuCiAJICovCi0JZWxlbV9oYXNoX2N0 bC5rZXlzaXplID0gc2l6ZW9mKERhdHVtKTsKLQllbGVtX2hhc2hfY3RsLmVudHJ5c2l6ZSA9IHNp emVvZihUcmFja0l0ZW0pOwotCWVsZW1faGFzaF9jdGwuaGFzaCA9IGVsZW1lbnRfaGFzaDsKLQll bGVtX2hhc2hfY3RsLm1hdGNoID0gZWxlbWVudF9tYXRjaDsKLQllbGVtX2hhc2hfY3RsLmhjeHQg PSBDdXJyZW50TWVtb3J5Q29udGV4dDsKLQllbGVtZW50c190YWIgPSBoYXNoX2NyZWF0ZSgiQW5h bHl6ZWQgZWxlbWVudHMgdGFibGUiLAotCQkJCQkJCSAgIG51bV9tY2VsZW0sCi0JCQkJCQkJICAg JmVsZW1faGFzaF9jdGwsCi0JCQkJCQkJICAgSEFTSF9FTEVNIHwgSEFTSF9GVU5DVElPTiB8IEhB U0hfQ09NUEFSRSB8IEhBU0hfQ09OVEVYVCk7CisJZWxlbWVudHNfdGFiID0gaGFzaF9tYWtlX2Zu KFRyYWNrSXRlbSwga2V5LAorCQkJCQkJCQkiQW5hbHl6ZWQgZWxlbWVudHMgdGFibGUiLCBudW1f bWNlbGVtLAorCQkJCQkJCQllbGVtZW50X2hhc2gsIGVsZW1lbnRfbWF0Y2gpOwogCiAJLyogaGFz aHRhYmxlIGZvciBhcnJheSBkaXN0aW5jdCBlbGVtZW50cyBjb3VudHMgKi8KLQljb3VudF9oYXNo X2N0bC5rZXlzaXplID0gc2l6ZW9mKGludCk7Ci0JY291bnRfaGFzaF9jdGwuZW50cnlzaXplID0g c2l6ZW9mKERFQ291bnRJdGVtKTsKLQljb3VudF9oYXNoX2N0bC5oY3h0ID0gQ3VycmVudE1lbW9y eUNvbnRleHQ7Ci0JY291bnRfdGFiID0gaGFzaF9jcmVhdGUoIkFycmF5IGRpc3RpbmN0IGVsZW1l bnQgY291bnQgdGFibGUiLAotCQkJCQkJCTY0LAotCQkJCQkJCSZjb3VudF9oYXNoX2N0bCwKLQkJ CQkJCQlIQVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwgSEFTSF9DT05URVhUKTsKKwljb3VudF90YWIg PSBoYXNoX21ha2UoREVDb3VudEl0ZW0sIGNvdW50LAorCQkJCQkJICAiQXJyYXkgZGlzdGluY3Qg ZWxlbWVudCBjb3VudCB0YWJsZSIsIDY0KTsKIAogCS8qIEluaXRpYWxpemUgY291bnRlcnMuICov CiAJYl9jdXJyZW50ID0gMTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29u LmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbi5jCmluZGV4IDc4ZTg0NzI3ZmRjLi4wOGIw MmNjMGY1MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb24uYworKysgYi9z cmMvYmFja2VuZC91dGlscy9hZHQvanNvbi5jCkBAIC05MzMsMTkgKzkzMyw4IEBAIGpzb25fdW5p cXVlX2hhc2hfbWF0Y2goY29uc3Qgdm9pZCAqa2V5MSwgY29uc3Qgdm9pZCAqa2V5MiwgU2l6ZSBr ZXlzaXplKQogc3RhdGljIHZvaWQKIGpzb25fdW5pcXVlX2NoZWNrX2luaXQoSnNvblVuaXF1ZUNo ZWNrU3RhdGUgKmN4dCkKIHsKLQlIQVNIQ1RMCQljdGw7Ci0KLQltZW1zZXQoJmN0bCwgMCwgc2l6 ZW9mKGN0bCkpOwotCWN0bC5rZXlzaXplID0gc2l6ZW9mKEpzb25VbmlxdWVIYXNoRW50cnkpOwot CWN0bC5lbnRyeXNpemUgPSBzaXplb2YoSnNvblVuaXF1ZUhhc2hFbnRyeSk7Ci0JY3RsLmhjeHQg PSBDdXJyZW50TWVtb3J5Q29udGV4dDsKLQljdGwuaGFzaCA9IGpzb25fdW5pcXVlX2hhc2g7Ci0J Y3RsLm1hdGNoID0ganNvbl91bmlxdWVfaGFzaF9tYXRjaDsKLQotCSpjeHQgPSBoYXNoX2NyZWF0 ZSgianNvbiBvYmplY3QgaGFzaHRhYmxlIiwKLQkJCQkJICAgMzIsCi0JCQkJCSAgICZjdGwsCi0J CQkJCSAgIEhBU0hfRUxFTSB8IEhBU0hfQ09OVEVYVCB8IEhBU0hfRlVOQ1RJT04gfCBIQVNIX0NP TVBBUkUpOworCSpjeHQgPSBoYXNoc2V0X21ha2VfZm4oSnNvblVuaXF1ZUhhc2hFbnRyeSwgImpz b24gb2JqZWN0IGhhc2h0YWJsZSIsIDMyLAorCQkJCQkJICAganNvbl91bmlxdWVfaGFzaCwganNv bl91bmlxdWVfaGFzaF9tYXRjaCk7CiB9CiAKIHN0YXRpYyB2b2lkCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC91dGlscy9hZHQvanNvbmZ1bmNzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvanNv bmZ1bmNzLmMKaW5kZXggZjJmMWY1OTAxM2EuLjdkM2YxYTBmMTU5IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC91dGlscy9hZHQvanNvbmZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L2pzb25mdW5jcy5jCkBAIC0zODA4LDE4ICszODA4LDEyIEBAIHN0YXRpYyBIVEFCICoKIGdldF9q c29uX29iamVjdF9hc19oYXNoKGNvbnN0IGNoYXIgKmpzb24sIGludCBsZW4sIGNvbnN0IGNoYXIg KmZ1bmNuYW1lLAogCQkJCQkJTm9kZSAqZXNjb250ZXh0KQogewotCUhBU0hDVEwJCWN0bDsKIAlI VEFCCSAgICp0YWI7CiAJSkhhc2hTdGF0ZSAqc3RhdGU7CiAJSnNvblNlbUFjdGlvbiAqc2VtOwog Ci0JY3RsLmtleXNpemUgPSBOQU1FREFUQUxFTjsKLQljdGwuZW50cnlzaXplID0gc2l6ZW9mKEpz b25IYXNoRW50cnkpOwotCWN0bC5oY3h0ID0gQ3VycmVudE1lbW9yeUNvbnRleHQ7Ci0JdGFiID0g aGFzaF9jcmVhdGUoImpzb24gb2JqZWN0IGhhc2h0YWJsZSIsCi0JCQkJCSAgMTAwLAotCQkJCQkg ICZjdGwsCi0JCQkJCSAgSEFTSF9FTEVNIHwgSEFTSF9TVFJJTkdTIHwgSEFTSF9DT05URVhUKTsK Kwl0YWIgPSBoYXNoX21ha2UoSnNvbkhhc2hFbnRyeSwgZm5hbWUsCisJCQkJCSJqc29uIG9iamVj dCBoYXNodGFibGUiLCAxMDApOwogCiAJc3RhdGUgPSBwYWxsb2MwX29iamVjdChKSGFzaFN0YXRl KTsKIAlzZW0gPSBwYWxsb2MwX29iamVjdChKc29uU2VtQWN0aW9uKTsKQEAgLTQyMTMsNyArNDIw Nyw2IEBAIHBvcHVsYXRlX3JlY29yZHNldF9vYmplY3Rfc3RhcnQodm9pZCAqc3RhdGUpCiB7CiAJ UG9wdWxhdGVSZWNvcmRzZXRTdGF0ZSAqX3N0YXRlID0gKFBvcHVsYXRlUmVjb3Jkc2V0U3RhdGUg Kikgc3RhdGU7CiAJaW50CQkJbGV4X2xldmVsID0gX3N0YXRlLT5sZXgtPmxleF9sZXZlbDsKLQlI QVNIQ1RMCQljdGw7CiAKIAkvKiBSZWplY3Qgb2JqZWN0IGF0IHRvcCBsZXZlbDogd2UgbXVzdCBo YXZlIGFuIGFycmF5IGF0IGxldmVsIDAgKi8KIAlpZiAobGV4X2xldmVsID09IDApCkBAIC00MjI3 LDEzICs0MjIwLDggQEAgcG9wdWxhdGVfcmVjb3Jkc2V0X29iamVjdF9zdGFydCh2b2lkICpzdGF0 ZSkKIAkJcmV0dXJuIEpTT05fU1VDQ0VTUzsKIAogCS8qIE9iamVjdCBhdCBsZXZlbCAxOiBzZXQg dXAgYSBuZXcgaGFzaCB0YWJsZSBmb3IgdGhpcyBvYmplY3QgKi8KLQljdGwua2V5c2l6ZSA9IE5B TUVEQVRBTEVOOwotCWN0bC5lbnRyeXNpemUgPSBzaXplb2YoSnNvbkhhc2hFbnRyeSk7Ci0JY3Rs LmhjeHQgPSBDdXJyZW50TWVtb3J5Q29udGV4dDsKLQlfc3RhdGUtPmpzb25faGFzaCA9IGhhc2hf Y3JlYXRlKCJqc29uIG9iamVjdCBoYXNodGFibGUiLAotCQkJCQkJCQkJMTAwLAotCQkJCQkJCQkJ JmN0bCwKLQkJCQkJCQkJCUhBU0hfRUxFTSB8IEhBU0hfU1RSSU5HUyB8IEhBU0hfQ09OVEVYVCk7 CisJX3N0YXRlLT5qc29uX2hhc2ggPSBoYXNoX21ha2UoSnNvbkhhc2hFbnRyeSwgZm5hbWUsCisJ CQkJCQkJCSAgImpzb24gb2JqZWN0IGhhc2h0YWJsZSIsIDEwMCk7CiAKIAlyZXR1cm4gSlNPTl9T VUNDRVNTOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L21jeHRmdW5jcy5j IGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L21jeHRmdW5jcy5jCmluZGV4IDEyYjhkNGNlZmFmLi42 OTQyNTJjZmVkNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L21jeHRmdW5jcy5j CisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9tY3h0ZnVuY3MuYwpAQCAtMTg1LDE3ICsxODUs MTAgQEAgcGdfZ2V0X2JhY2tlbmRfbWVtb3J5X2NvbnRleHRzKFBHX0ZVTkNUSU9OX0FSR1MpCiAJ UmV0dXJuU2V0SW5mbyAqcnNpbmZvID0gKFJldHVyblNldEluZm8gKikgZmNpbmZvLT5yZXN1bHRp bmZvOwogCWludAkJCWNvbnRleHRfaWQ7CiAJTGlzdAkgICAqY29udGV4dHM7Ci0JSEFTSENUTAkJ Y3RsOwogCUhUQUIJICAgKmNvbnRleHRfaWRfbG9va3VwOwogCi0JY3RsLmtleXNpemUgPSBzaXpl b2YoTWVtb3J5Q29udGV4dCk7Ci0JY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihNZW1vcnlDb250ZXh0 SWQpOwotCWN0bC5oY3h0ID0gQ3VycmVudE1lbW9yeUNvbnRleHQ7Ci0KLQljb250ZXh0X2lkX2xv b2t1cCA9IGhhc2hfY3JlYXRlKCJwZ19nZXRfYmFja2VuZF9tZW1vcnlfY29udGV4dHMiLAotCQkJ CQkJCQkJMjU2LAotCQkJCQkJCQkJJmN0bCwKLQkJCQkJCQkJCUhBU0hfRUxFTSB8IEhBU0hfQkxP QlMgfCBIQVNIX0NPTlRFWFQpOworCWNvbnRleHRfaWRfbG9va3VwID0gaGFzaF9tYWtlKE1lbW9y eUNvbnRleHRJZCwgY29udGV4dCwKKwkJCQkJCQkJICAicGdfZ2V0X2JhY2tlbmRfbWVtb3J5X2Nv bnRleHRzIiwgMjU2KTsKIAogCUluaXRNYXRlcmlhbGl6ZWRTUkYoZmNpbmZvLCAwKTsKIApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JpX3RyaWdnZXJzLmMgYi9zcmMvYmFja2Vu ZC91dGlscy9hZHQvcmlfdHJpZ2dlcnMuYwppbmRleCBiYmFkZWNlZjVmOS4uNTMzNGM5ZGQ3NTMg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yaV90cmlnZ2Vycy5jCisrKyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL2FkdC9yaV90cmlnZ2Vycy5jCkBAIC0yODU5LDMwICsyODU5LDI1IEBA IHJpX051bGxDaGVjayhUdXBsZURlc2MgdHVwRGVzYywKIHN0YXRpYyB2b2lkCiByaV9Jbml0SGFz aFRhYmxlcyh2b2lkKQogewotCUhBU0hDVEwJCWN0bDsKLQotCWN0bC5rZXlzaXplID0gc2l6ZW9m KE9pZCk7Ci0JY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihSSV9Db25zdHJhaW50SW5mbyk7Ci0Jcmlf Y29uc3RyYWludF9jYWNoZSA9IGhhc2hfY3JlYXRlKCJSSSBjb25zdHJhaW50IGNhY2hlIiwKLQkJ CQkJCQkJCSAgUklfSU5JVF9DT05TVFJBSU5USEFTSFNJWkUsCi0JCQkJCQkJCQkgICZjdGwsIEhB U0hfRUxFTSB8IEhBU0hfQkxPQlMpOworCXJpX2NvbnN0cmFpbnRfY2FjaGUgPSBoYXNoX21ha2Vf Y3h0KFJJX0NvbnN0cmFpbnRJbmZvLCBjb25zdHJhaW50X2lkLAorCQkJCQkJCQkJCSJSSSBjb25z dHJhaW50IGNhY2hlIiwKKwkJCQkJCQkJCQlSSV9JTklUX0NPTlNUUkFJTlRIQVNIU0laRSwKKwkJ CQkJCQkJCQlUb3BNZW1vcnlDb250ZXh0KTsKIAogCS8qIEFycmFuZ2UgdG8gZmx1c2ggY2FjaGUg b24gcGdfY29uc3RyYWludCBjaGFuZ2VzICovCiAJQ2FjaGVSZWdpc3RlclN5c2NhY2hlQ2FsbGJh Y2soQ09OU1RST0lELAogCQkJCQkJCQkgIEludmFsaWRhdGVDb25zdHJhaW50Q2FjaGVDYWxsQmFj aywKIAkJCQkJCQkJICAoRGF0dW0pIDApOwogCi0JY3RsLmtleXNpemUgPSBzaXplb2YoUklfUXVl cnlLZXkpOwotCWN0bC5lbnRyeXNpemUgPSBzaXplb2YoUklfUXVlcnlIYXNoRW50cnkpOwotCXJp X3F1ZXJ5X2NhY2hlID0gaGFzaF9jcmVhdGUoIlJJIHF1ZXJ5IGNhY2hlIiwKLQkJCQkJCQkJIFJJ X0lOSVRfUVVFUllIQVNIU0laRSwKLQkJCQkJCQkJICZjdGwsIEhBU0hfRUxFTSB8IEhBU0hfQkxP QlMpOwotCi0JY3RsLmtleXNpemUgPSBzaXplb2YoUklfQ29tcGFyZUtleSk7Ci0JY3RsLmVudHJ5 c2l6ZSA9IHNpemVvZihSSV9Db21wYXJlSGFzaEVudHJ5KTsKLQlyaV9jb21wYXJlX2NhY2hlID0g aGFzaF9jcmVhdGUoIlJJIGNvbXBhcmUgY2FjaGUiLAorCXJpX3F1ZXJ5X2NhY2hlID0gaGFzaF9t YWtlX2N4dChSSV9RdWVyeUhhc2hFbnRyeSwga2V5LAorCQkJCQkJCQkgICAiUkkgcXVlcnkgY2Fj aGUiLAogCQkJCQkJCQkgICBSSV9JTklUX1FVRVJZSEFTSFNJWkUsCi0JCQkJCQkJCSAgICZjdGws IEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMpOworCQkJCQkJCQkgICBUb3BNZW1vcnlDb250ZXh0KTsK KworCXJpX2NvbXBhcmVfY2FjaGUgPSBoYXNoX21ha2VfY3h0KFJJX0NvbXBhcmVIYXNoRW50cnks IGtleSwKKwkJCQkJCQkJCSAiUkkgY29tcGFyZSBjYWNoZSIsCisJCQkJCQkJCQkgUklfSU5JVF9R VUVSWUhBU0hTSVpFLAorCQkJCQkJCQkJIFRvcE1lbW9yeUNvbnRleHQpOwogfQogCiAKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYyBiL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9ydWxldXRpbHMuYwppbmRleCAwMzNiNjI1ZjNmYy4uMGNmMTAyMGI0ZGEgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYworKysgYi9zcmMvYmFja2Vu ZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKQEAgLTM4ODcsNyArMzg4Nyw2IEBAIHN0YXRpYyB2b2lk CiBzZXRfcnRhYmxlX25hbWVzKGRlcGFyc2VfbmFtZXNwYWNlICpkcG5zLCBMaXN0ICpwYXJlbnRf bmFtZXNwYWNlcywKIAkJCQkgQml0bWFwc2V0ICpyZWxzX3VzZWQpCiB7Ci0JSEFTSENUTAkJaGFz aF9jdGw7CiAJSFRBQgkgICAqbmFtZXNfaGFzaDsKIAlOYW1lSGFzaEVudHJ5ICpoZW50cnk7CiAJ Ym9vbAkJZm91bmQ7CkBAIC0zOTAzLDEzICszOTAyLDkgQEAgc2V0X3J0YWJsZV9uYW1lcyhkZXBh cnNlX25hbWVzcGFjZSAqZHBucywgTGlzdCAqcGFyZW50X25hbWVzcGFjZXMsCiAJICogV2UgdXNl IGEgaGFzaCB0YWJsZSB0byBob2xkIGtub3duIG5hbWVzLCBzbyB0aGF0IHRoaXMgcHJvY2VzcyBp cyBPKE4pCiAJICogbm90IE8oTl4yKSBmb3IgTiBuYW1lcy4KIAkgKi8KLQloYXNoX2N0bC5rZXlz aXplID0gTkFNRURBVEFMRU47Ci0JaGFzaF9jdGwuZW50cnlzaXplID0gc2l6ZW9mKE5hbWVIYXNo RW50cnkpOwotCWhhc2hfY3RsLmhjeHQgPSBDdXJyZW50TWVtb3J5Q29udGV4dDsKLQluYW1lc19o YXNoID0gaGFzaF9jcmVhdGUoInNldF9ydGFibGVfbmFtZXMgbmFtZXMiLAotCQkJCQkJCSBsaXN0 X2xlbmd0aChkcG5zLT5ydGFibGUpLAotCQkJCQkJCSAmaGFzaF9jdGwsCi0JCQkJCQkJIEhBU0hf RUxFTSB8IEhBU0hfU1RSSU5HUyB8IEhBU0hfQ09OVEVYVCk7CisJbmFtZXNfaGFzaCA9IGhhc2hf bWFrZShOYW1lSGFzaEVudHJ5LCBuYW1lLAorCQkJCQkJICAgInNldF9ydGFibGVfbmFtZXMgbmFt ZXMiLAorCQkJCQkJICAgbGlzdF9sZW5ndGgoZHBucy0+cnRhYmxlKSk7CiAKIAkvKiBQcmVsb2Fk IHRoZSBoYXNoIHRhYmxlIHdpdGggbmFtZXMgYXBwZWFyaW5nIGluIHBhcmVudF9uYW1lc3BhY2Vz ICovCiAJZm9yZWFjaChsYywgcGFyZW50X25hbWVzcGFjZXMpCkBAIC00OTgwLDcgKzQ5NzUsNiBA QCBleHBhbmRfY29sbmFtZXNfYXJyYXlfdG8oZGVwYXJzZV9jb2x1bW5zICpjb2xpbmZvLCBpbnQg bikKIHN0YXRpYyB2b2lkCiBidWlsZF9jb2xpbmZvX25hbWVzX2hhc2goZGVwYXJzZV9jb2x1bW5z ICpjb2xpbmZvKQogewotCUhBU0hDVEwJCWhhc2hfY3RsOwogCWludAkJCWk7CiAJTGlzdENlbGwg ICAqbGM7CiAKQEAgLTQ5OTYsMTMgKzQ5OTAsMTAgQEAgYnVpbGRfY29saW5mb19uYW1lc19oYXNo KGRlcGFyc2VfY29sdW1ucyAqY29saW5mbykKIAkgKiBTZXQgdXAgdGhlIGhhc2ggdGFibGUuICBU aGUgZW50cmllcyBhcmUganVzdCBzdHJpbmdzIHdpdGggbm8gb3RoZXIKIAkgKiBwYXlsb2FkLgog CSAqLwotCWhhc2hfY3RsLmtleXNpemUgPSBOQU1FREFUQUxFTjsKLQloYXNoX2N0bC5lbnRyeXNp emUgPSBOQU1FREFUQUxFTjsKLQloYXNoX2N0bC5oY3h0ID0gQ3VycmVudE1lbW9yeUNvbnRleHQ7 Ci0JY29saW5mby0+bmFtZXNfaGFzaCA9IGhhc2hfY3JlYXRlKCJkZXBhcnNlX2NvbHVtbnMgbmFt ZXMiLAotCQkJCQkJCQkJICBjb2xpbmZvLT5udW1fY29scyArIGNvbGluZm8tPm51bV9uZXdfY29s cywKLQkJCQkJCQkJCSAgJmhhc2hfY3RsLAotCQkJCQkJCQkJICBIQVNIX0VMRU0gfCBIQVNIX1NU UklOR1MgfCBIQVNIX0NPTlRFWFQpOworCWNvbGluZm8tPm5hbWVzX2hhc2ggPQorCQloYXNoc2V0 X21ha2VfY3h0KE5hbWVEYXRhLCAiZGVwYXJzZV9jb2x1bW5zIG5hbWVzIiwKKwkJCQkJCSBjb2xp bmZvLT5udW1fY29scyArIGNvbGluZm8tPm51bV9uZXdfY29scywKKwkJCQkJCSBDdXJyZW50TWVt b3J5Q29udGV4dCk7CiAKIAkvKgogCSAqIFByZWxvYWQgdGhlIGhhc2ggdGFibGUgd2l0aCBhbnkg bmFtZXMgYWxyZWFkeSBwcmVzZW50ICh0aGVzZSB3b3VsZCBoYXZlCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC91dGlscy9jYWNoZS9hdHRvcHRjYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2Fj aGUvYXR0b3B0Y2FjaGUuYwppbmRleCA3MmVkYzhmNjY1Yi4uNzcxYmY3N2ZhNzUgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2F0dG9wdGNhY2hlLmMKKysrIGIvc3JjL2JhY2tl bmQvdXRpbHMvY2FjaGUvYXR0b3B0Y2FjaGUuYwpAQCAtMjEsNiArMjEsNyBAQAogI2luY2x1ZGUg InV0aWxzL2NhdGNhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvaHNlYXJjaC5oIgogI2luY2x1ZGUg InV0aWxzL2ludmFsLmgiCisjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKICNpbmNsdWRlICJ1 dGlscy9zeXNjYWNoZS5oIgogI2luY2x1ZGUgInZhcmF0dC5oIgogCkBAIC05NiwyMiArOTcsMTUg QEAgcmVsYXR0X2NhY2hlX3N5c2hhc2goY29uc3Qgdm9pZCAqa2V5LCBTaXplIGtleXNpemUpCiBz dGF0aWMgdm9pZAogSW5pdGlhbGl6ZUF0dG9wdENhY2hlKHZvaWQpCiB7Ci0JSEFTSENUTAkJY3Rs OwotCi0JLyogSW5pdGlhbGl6ZSB0aGUgaGFzaCB0YWJsZS4gKi8KLQljdGwua2V5c2l6ZSA9IHNp emVvZihBdHRvcHRDYWNoZUtleSk7Ci0JY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihBdHRvcHRDYWNo ZUVudHJ5KTsKLQogCS8qCiAJICogQXR0b3B0Q2FjaGVFbnRyeSB0YWtlcyBoYXNoIHZhbHVlIGZy b20gdGhlIHN5c3RlbSBjYWNoZS4gRm9yCiAJICogQXR0b3B0Q2FjaGVIYXNoIHdlIHVzZSB0aGUg c2FtZSBoYXNoIGluIG9yZGVyIHRvIHNwZWVkdXAgc2VhcmNoIGJ5IGhhc2gKIAkgKiB2YWx1ZS4g VGhpcyBpcyB1c2VkIGJ5IGhhc2hfc2VxX2luaXRfd2l0aF9oYXNoX3ZhbHVlKCkuCiAJICovCi0J Y3RsLmhhc2ggPSByZWxhdHRfY2FjaGVfc3lzaGFzaDsKLQotCUF0dG9wdENhY2hlSGFzaCA9Ci0J CWhhc2hfY3JlYXRlKCJBdHRvcHQgY2FjaGUiLCAyNTYsICZjdGwsCi0JCQkJCUhBU0hfRUxFTSB8 IEhBU0hfRlVOQ1RJT04pOworCUF0dG9wdENhY2hlSGFzaCA9IGhhc2hfbWFrZV9mbl9jeHQoQXR0 b3B0Q2FjaGVFbnRyeSwga2V5LAorCQkJCQkJCQkJICAgIkF0dG9wdCBjYWNoZSIsIDI1NiwKKwkJ CQkJCQkJCSAgIHJlbGF0dF9jYWNoZV9zeXNoYXNoLCBOVUxMLAorCQkJCQkJCQkJICAgVG9wTWVt b3J5Q29udGV4dCk7CiAKIAkvKiBNYWtlIHN1cmUgd2UndmUgaW5pdGlhbGl6ZWQgQ2FjaGVNZW1v cnlDb250ZXh0LiAqLwogCWlmICghQ2FjaGVNZW1vcnlDb250ZXh0KQpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvdXRpbHMvY2FjaGUvZXZ0Y2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hl L2V2dGNhY2hlLmMKaW5kZXggMmI0NDUzZTU0YTcuLjY1MmY2ZjI1YmUzIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC91dGlscy9jYWNoZS9ldnRjYWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxz L2NhY2hlL2V2dGNhY2hlLmMKQEAgLTc2LDcgKzc2LDYgQEAgRXZlbnRDYWNoZUxvb2t1cChFdmVu dFRyaWdnZXJFdmVudCBldmVudCkKIHN0YXRpYyB2b2lkCiBCdWlsZEV2ZW50VHJpZ2dlckNhY2hl KHZvaWQpCiB7Ci0JSEFTSENUTAkJY3RsOwogCUhUQUIJICAgKmNhY2hlOwogCVJlbGF0aW9uCXJl bDsKIAlSZWxhdGlvbglpcmVsOwpAQCAtMTEzLDExICsxMTIsOSBAQCBCdWlsZEV2ZW50VHJpZ2dl ckNhY2hlKHZvaWQpCiAJRXZlbnRUcmlnZ2VyQ2FjaGVTdGF0ZSA9IEVUQ1NfUkVCVUlMRF9TVEFS VEVEOwogCiAJLyogQ3JlYXRlIG5ldyBoYXNoIHRhYmxlLiAqLwotCWN0bC5rZXlzaXplID0gc2l6 ZW9mKEV2ZW50VHJpZ2dlckV2ZW50KTsKLQljdGwuZW50cnlzaXplID0gc2l6ZW9mKEV2ZW50VHJp Z2dlckNhY2hlRW50cnkpOwotCWN0bC5oY3h0ID0gRXZlbnRUcmlnZ2VyQ2FjaGVDb250ZXh0Owot CWNhY2hlID0gaGFzaF9jcmVhdGUoIkV2ZW50VHJpZ2dlckNhY2hlSGFzaCIsIDMyLCAmY3RsLAot CQkJCQkJSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhBU0hfQ09OVEVYVCk7CisJY2FjaGUgPSBo YXNoX21ha2VfY3h0KEV2ZW50VHJpZ2dlckNhY2hlRW50cnksIGV2ZW50LAorCQkJCQkJICAiRXZl bnRUcmlnZ2VyQ2FjaGVIYXNoIiwgMzIsCisJCQkJCQkgIEV2ZW50VHJpZ2dlckNhY2hlQ29udGV4 dCk7CiAKIAkvKgogCSAqIFByZXBhcmUgdG8gc2NhbiBwZ19ldmVudF90cmlnZ2VyIGluIG5hbWUg b3JkZXIuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9mdW5jY2FjaGUuYyBi L3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2Z1bmNjYWNoZS5jCmluZGV4IDcwMWMyOTRiODhkLi5i ZWY5MzhjMzdjMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvZnVuY2NhY2hl LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvZnVuY2NhY2hlLmMKQEAgLTU4LDE5ICs1 OCwxMyBAQCBzdGF0aWMgaW50CWNmdW5jX21hdGNoKGNvbnN0IHZvaWQgKmtleTEsIGNvbnN0IHZv aWQgKmtleTIsIFNpemUga2V5c2l6ZSk7CiBzdGF0aWMgdm9pZAogY2Z1bmNfaGFzaHRhYmxlX2lu aXQodm9pZCkKIHsKLQlIQVNIQ1RMCQljdGw7Ci0KIAkvKiBkb24ndCBhbGxvdyBkb3VibGUtaW5p dGlhbGl6YXRpb24gKi8KIAlBc3NlcnQoY2Z1bmNfaGFzaHRhYmxlID09IE5VTEwpOwogCi0JY3Rs LmtleXNpemUgPSBzaXplb2YoQ2FjaGVkRnVuY3Rpb25IYXNoS2V5KTsKLQljdGwuZW50cnlzaXpl ID0gc2l6ZW9mKENhY2hlZEZ1bmN0aW9uSGFzaEVudHJ5KTsKLQljdGwuaGFzaCA9IGNmdW5jX2hh c2g7Ci0JY3RsLm1hdGNoID0gY2Z1bmNfbWF0Y2g7Ci0JY2Z1bmNfaGFzaHRhYmxlID0gaGFzaF9j cmVhdGUoIkNhY2hlZCBmdW5jdGlvbiBoYXNoIiwKLQkJCQkJCQkJICBGVU5DU19QRVJfVVNFUiwK LQkJCQkJCQkJICAmY3RsLAotCQkJCQkJCQkgIEhBU0hfRUxFTSB8IEhBU0hfRlVOQ1RJT04gfCBI QVNIX0NPTVBBUkUpOworCWNmdW5jX2hhc2h0YWJsZSA9IGhhc2hfbWFrZV9mbl9jeHQoQ2FjaGVk RnVuY3Rpb25IYXNoRW50cnksIGtleSwKKwkJCQkJCQkJCSAgICJDYWNoZWQgZnVuY3Rpb24gaGFz aCIsIEZVTkNTX1BFUl9VU0VSLAorCQkJCQkJCQkJICAgY2Z1bmNfaGFzaCwgY2Z1bmNfbWF0Y2gs CisJCQkJCQkJCQkgICBUb3BNZW1vcnlDb250ZXh0KTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNo ZS9yZWxjYWNoZS5jCmluZGV4IDZiNjM0YzlmZmYxLi5jMTViMTI3YmRiZiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGls cy9jYWNoZS9yZWxjYWNoZS5jCkBAIC0xNjcyLDE3ICsxNjcyLDE0IEBAIExvb2t1cE9wY2xhc3NJ bmZvKE9pZCBvcGVyYXRvckNsYXNzT2lkLAogCiAJaWYgKE9wQ2xhc3NDYWNoZSA9PSBOVUxMKQog CXsKLQkJLyogRmlyc3QgdGltZSB0aHJvdWdoOiBpbml0aWFsaXplIHRoZSBvcGNsYXNzIGNhY2hl ICovCi0JCUhBU0hDVEwJCWN0bDsKLQogCQkvKiBBbHNvIG1ha2Ugc3VyZSBDYWNoZU1lbW9yeUNv bnRleHQgZXhpc3RzICovCiAJCWlmICghQ2FjaGVNZW1vcnlDb250ZXh0KQogCQkJQ3JlYXRlQ2Fj aGVNZW1vcnlDb250ZXh0KCk7CiAKLQkJY3RsLmtleXNpemUgPSBzaXplb2YoT2lkKTsKLQkJY3Rs LmVudHJ5c2l6ZSA9IHNpemVvZihPcENsYXNzQ2FjaGVFbnQpOwotCQlPcENsYXNzQ2FjaGUgPSBo YXNoX2NyZWF0ZSgiT3BlcmF0b3IgY2xhc3MgY2FjaGUiLCA2NCwKLQkJCQkJCQkJICAgJmN0bCwg SEFTSF9FTEVNIHwgSEFTSF9CTE9CUyk7CisJCS8qIEZpcnN0IHRpbWUgdGhyb3VnaDogaW5pdGlh bGl6ZSB0aGUgb3BjbGFzcyBjYWNoZSAqLworCQlPcENsYXNzQ2FjaGUgPSBoYXNoX21ha2VfY3h0 KE9wQ2xhc3NDYWNoZUVudCwgb3BjbGFzc29pZCwKKwkJCQkJCQkJCSAiT3BlcmF0b3IgY2xhc3Mg Y2FjaGUiLCA2NCwKKwkJCQkJCQkJCSBUb3BNZW1vcnlDb250ZXh0KTsKIAl9CiAKIAlvcGNlbnRy eSA9IChPcENsYXNzQ2FjaGVFbnQgKikgaGFzaF9zZWFyY2goT3BDbGFzc0NhY2hlLApAQCAtMzk5 Niw3ICszOTkzLDYgQEAgUmVsYXRpb25Bc3N1bWVOZXdSZWxmaWxlbG9jYXRvcihSZWxhdGlvbiBy ZWxhdGlvbikKIHZvaWQKIFJlbGF0aW9uQ2FjaGVJbml0aWFsaXplKHZvaWQpCiB7Ci0JSEFTSENU TAkJY3RsOwogCWludAkJCWFsbG9jc2l6ZTsKIAogCS8qCkBAIC00MDA4LDEwICs0MDA0LDkgQEAg UmVsYXRpb25DYWNoZUluaXRpYWxpemUodm9pZCkKIAkvKgogCSAqIGNyZWF0ZSBoYXNodGFibGUg dGhhdCBpbmRleGVzIHRoZSByZWxjYWNoZQogCSAqLwotCWN0bC5rZXlzaXplID0gc2l6ZW9mKE9p ZCk7Ci0JY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihSZWxJZENhY2hlRW50KTsKLQlSZWxhdGlvbklk Q2FjaGUgPSBoYXNoX2NyZWF0ZSgiUmVsY2FjaGUgYnkgT0lEIiwgSU5JVFJFTENBQ0hFU0laRSwK LQkJCQkJCQkJICAmY3RsLCBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTKTsKKwlSZWxhdGlvbklkQ2Fj aGUgPSBoYXNoX21ha2VfY3h0KFJlbElkQ2FjaGVFbnQsIHJlbG9pZCwKKwkJCQkJCQkJCSJSZWxj YWNoZSBieSBPSUQiLCBJTklUUkVMQ0FDSEVTSVpFLAorCQkJCQkJCQkJVG9wTWVtb3J5Q29udGV4 dCk7CiAKIAkvKgogCSAqIHJlc2VydmUgZW5vdWdoIGluX3Byb2dyZXNzX2xpc3Qgc2xvdHMgZm9y IG1hbnkgY2FzZXMKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGZpbGVu dW1iZXJtYXAuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGZpbGVudW1iZXJtYXAuYwpp bmRleCA2Zjk3MGZhZmEwNS4uMDliMDVkZWM5ZDAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0 aWxzL2NhY2hlL3JlbGZpbGVudW1iZXJtYXAuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNo ZS9yZWxmaWxlbnVtYmVybWFwLmMKQEAgLTg1LDcgKzg1LDYgQEAgUmVsZmlsZW51bWJlck1hcElu dmFsaWRhdGVDYWxsYmFjayhEYXR1bSBhcmcsIE9pZCByZWxpZCkKIHN0YXRpYyB2b2lkCiBJbml0 aWFsaXplUmVsZmlsZW51bWJlck1hcCh2b2lkKQogewotCUhBU0hDVEwJCWN0bDsKIAlpbnQJCQlp OwogCiAJLyogTWFrZSBzdXJlIHdlJ3ZlIGluaXRpYWxpemVkIENhY2hlTWVtb3J5Q29udGV4dC4g Ki8KQEAgLTExMywxMyArMTEyLDkgQEAgSW5pdGlhbGl6ZVJlbGZpbGVudW1iZXJNYXAodm9pZCkK IAkgKiBpbml0aWFsaXplZCB3aGVuIGZtZ3JfaW5mb19jeHQoKSBhYm92ZSBFUlJPUnMgb3V0IHdp dGggYW4gb3V0IG9mIG1lbW9yeQogCSAqIGVycm9yLgogCSAqLwotCWN0bC5rZXlzaXplID0gc2l6 ZW9mKFJlbGZpbGVudW1iZXJNYXBLZXkpOwotCWN0bC5lbnRyeXNpemUgPSBzaXplb2YoUmVsZmls ZW51bWJlck1hcEVudHJ5KTsKLQljdGwuaGN4dCA9IENhY2hlTWVtb3J5Q29udGV4dDsKLQogCVJl bGZpbGVudW1iZXJNYXBIYXNoID0KLQkJaGFzaF9jcmVhdGUoIlJlbGZpbGVudW1iZXJNYXAgY2Fj aGUiLCA2NCwgJmN0bCwKLQkJCQkJSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhBU0hfQ09OVEVY VCk7CisJCWhhc2hfbWFrZV9jeHQoUmVsZmlsZW51bWJlck1hcEVudHJ5LCBrZXksCisJCQkJCSAg IlJlbGZpbGVudW1iZXJNYXAgY2FjaGUiLCA2NCwgQ2FjaGVNZW1vcnlDb250ZXh0KTsKIAogCS8q IFdhdGNoIGZvciBpbnZhbGlkYXRpb24gZXZlbnRzLiAqLwogCUNhY2hlUmVnaXN0ZXJSZWxjYWNo ZUNhbGxiYWNrKFJlbGZpbGVudW1iZXJNYXBJbnZhbGlkYXRlQ2FsbGJhY2ssCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9zcGNjYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMv Y2FjaGUvc3BjY2FjaGUuYwppbmRleCA4ZjFhNWU2OTU5NS4uYmYwMDdkNjlhZDQgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3NwY2NhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQv dXRpbHMvY2FjaGUvc3BjY2FjaGUuYwpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgInV0aWxz L2NhdGNhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvaHNlYXJjaC5oIgogI2luY2x1ZGUgInV0aWxz L2ludmFsLmgiCisjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKICNpbmNsdWRlICJ1dGlscy9z cGNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCiAjaW5jbHVkZSAidmFyYXR0 LmgiCkBAIC03NywxNCArNzgsMTAgQEAgSW52YWxpZGF0ZVRhYmxlU3BhY2VDYWNoZUNhbGxiYWNr KERhdHVtIGFyZywgaW50IGNhY2hlaWQsIHVpbnQzMiBoYXNodmFsdWUpCiBzdGF0aWMgdm9pZAog SW5pdGlhbGl6ZVRhYmxlU3BhY2VDYWNoZSh2b2lkKQogewotCUhBU0hDVEwJCWN0bDsKLQogCS8q IEluaXRpYWxpemUgdGhlIGhhc2ggdGFibGUuICovCi0JY3RsLmtleXNpemUgPSBzaXplb2YoT2lk KTsKLQljdGwuZW50cnlzaXplID0gc2l6ZW9mKFRhYmxlU3BhY2VDYWNoZUVudHJ5KTsKIAlUYWJs ZVNwYWNlQ2FjaGVIYXNoID0KLQkJaGFzaF9jcmVhdGUoIlRhYmxlU3BhY2UgY2FjaGUiLCAxNiwg JmN0bCwKLQkJCQkJSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyk7CisJCWhhc2hfbWFrZV9jeHQoVGFi bGVTcGFjZUNhY2hlRW50cnksIG9pZCwKKwkJCQkJICAiVGFibGVTcGFjZSBjYWNoZSIsIDE2LCBU b3BNZW1vcnlDb250ZXh0KTsKIAogCS8qIE1ha2Ugc3VyZSB3ZSd2ZSBpbml0aWFsaXplZCBDYWNo ZU1lbW9yeUNvbnRleHQuICovCiAJaWYgKCFDYWNoZU1lbW9yeUNvbnRleHQpCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS90c19jYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMv Y2FjaGUvdHNfY2FjaGUuYwppbmRleCA3MWU0OWIyYjkxOS4uZTlhZTRhNWYwOTMgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3RzX2NhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQv dXRpbHMvY2FjaGUvdHNfY2FjaGUuYwpAQCAtMTE3LDEyICsxMTcsOSBAQCBsb29rdXBfdHNfcGFy c2VyX2NhY2hlKE9pZCBwcnNJZCkKIAlpZiAoVFNQYXJzZXJDYWNoZUhhc2ggPT0gTlVMTCkKIAl7 CiAJCS8qIEZpcnN0IHRpbWUgdGhyb3VnaDogaW5pdGlhbGl6ZSB0aGUgaGFzaCB0YWJsZSAqLwot CQlIQVNIQ1RMCQljdGw7Ci0KLQkJY3RsLmtleXNpemUgPSBzaXplb2YoT2lkKTsKLQkJY3RsLmVu dHJ5c2l6ZSA9IHNpemVvZihUU1BhcnNlckNhY2hlRW50cnkpOwotCQlUU1BhcnNlckNhY2hlSGFz aCA9IGhhc2hfY3JlYXRlKCJUc2VhcmNoIHBhcnNlciBjYWNoZSIsIDQsCi0JCQkJCQkJCQkJJmN0 bCwgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyk7CisJCVRTUGFyc2VyQ2FjaGVIYXNoID0gaGFzaF9t YWtlX2N4dChUU1BhcnNlckNhY2hlRW50cnksIHByc0lkLAorCQkJCQkJCQkJCSAgIlRzZWFyY2gg cGFyc2VyIGNhY2hlIiwgNCwKKwkJCQkJCQkJCQkgIFRvcE1lbW9yeUNvbnRleHQpOwogCQkvKiBG bHVzaCBjYWNoZSBvbiBwZ190c19wYXJzZXIgY2hhbmdlcyAqLwogCQlDYWNoZVJlZ2lzdGVyU3lz Y2FjaGVDYWxsYmFjayhUU1BBUlNFUk9JRCwgSW52YWxpZGF0ZVRTQ2FjaGVDYWxsQmFjaywKIAkJ CQkJCQkJCSAgUG9pbnRlckdldERhdHVtKFRTUGFyc2VyQ2FjaGVIYXNoKSk7CkBAIC0yMTIsMTIg KzIwOSw5IEBAIGxvb2t1cF90c19kaWN0aW9uYXJ5X2NhY2hlKE9pZCBkaWN0SWQpCiAJaWYgKFRT RGljdGlvbmFyeUNhY2hlSGFzaCA9PSBOVUxMKQogCXsKIAkJLyogRmlyc3QgdGltZSB0aHJvdWdo OiBpbml0aWFsaXplIHRoZSBoYXNoIHRhYmxlICovCi0JCUhBU0hDVEwJCWN0bDsKLQotCQljdGwu a2V5c2l6ZSA9IHNpemVvZihPaWQpOwotCQljdGwuZW50cnlzaXplID0gc2l6ZW9mKFRTRGljdGlv bmFyeUNhY2hlRW50cnkpOwotCQlUU0RpY3Rpb25hcnlDYWNoZUhhc2ggPSBoYXNoX2NyZWF0ZSgi VHNlYXJjaCBkaWN0aW9uYXJ5IGNhY2hlIiwgOCwKLQkJCQkJCQkJCQkJJmN0bCwgSEFTSF9FTEVN IHwgSEFTSF9CTE9CUyk7CisJCVRTRGljdGlvbmFyeUNhY2hlSGFzaCA9IGhhc2hfbWFrZV9jeHQo VFNEaWN0aW9uYXJ5Q2FjaGVFbnRyeSwgZGljdElkLAorCQkJCQkJCQkJCQkgICJUc2VhcmNoIGRp Y3Rpb25hcnkgY2FjaGUiLCA4LAorCQkJCQkJCQkJCQkgIFRvcE1lbW9yeUNvbnRleHQpOwogCQkv KiBGbHVzaCBjYWNoZSBvbiBwZ190c19kaWN0IGFuZCBwZ190c190ZW1wbGF0ZSBjaGFuZ2VzICov CiAJCUNhY2hlUmVnaXN0ZXJTeXNjYWNoZUNhbGxiYWNrKFRTRElDVE9JRCwgSW52YWxpZGF0ZVRT Q2FjaGVDYWxsQmFjaywKIAkJCQkJCQkJCSAgUG9pbnRlckdldERhdHVtKFRTRGljdGlvbmFyeUNh Y2hlSGFzaCkpOwpAQCAtMzYzLDEyICszNTcsOSBAQCBsb29rdXBfdHNfZGljdGlvbmFyeV9jYWNo ZShPaWQgZGljdElkKQogc3RhdGljIHZvaWQKIGluaXRfdHNfY29uZmlnX2NhY2hlKHZvaWQpCiB7 Ci0JSEFTSENUTAkJY3RsOwotCi0JY3RsLmtleXNpemUgPSBzaXplb2YoT2lkKTsKLQljdGwuZW50 cnlzaXplID0gc2l6ZW9mKFRTQ29uZmlnQ2FjaGVFbnRyeSk7Ci0JVFNDb25maWdDYWNoZUhhc2gg PSBoYXNoX2NyZWF0ZSgiVHNlYXJjaCBjb25maWd1cmF0aW9uIGNhY2hlIiwgMTYsCi0JCQkJCQkJ CQkmY3RsLCBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTKTsKKwlUU0NvbmZpZ0NhY2hlSGFzaCA9IGhh c2hfbWFrZV9jeHQoVFNDb25maWdDYWNoZUVudHJ5LCBjZmdJZCwKKwkJCQkJCQkJCSAgIlRzZWFy Y2ggY29uZmlndXJhdGlvbiBjYWNoZSIsIDE2LAorCQkJCQkJCQkJICBUb3BNZW1vcnlDb250ZXh0 KTsKIAkvKiBGbHVzaCBjYWNoZSBvbiBwZ190c19jb25maWcgYW5kIHBnX3RzX2NvbmZpZ19tYXAg Y2hhbmdlcyAqLwogCUNhY2hlUmVnaXN0ZXJTeXNjYWNoZUNhbGxiYWNrKFRTQ09ORklHT0lELCBJ bnZhbGlkYXRlVFNDYWNoZUNhbGxCYWNrLAogCQkJCQkJCQkgIFBvaW50ZXJHZXREYXR1bShUU0Nv bmZpZ0NhY2hlSGFzaCkpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvdHlw Y2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3R5cGNhY2hlLmMKaW5kZXggOTZiYmQ2 NGRlMmMuLjU1ZmY5NjllMDlmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS90 eXBjYWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3R5cGNhY2hlLmMKQEAgLTM5 MiwyOCArMzkyLDIzIEBAIGxvb2t1cF90eXBlX2NhY2hlKE9pZCB0eXBlX2lkLCBpbnQgZmxhZ3Mp CiAJaWYgKFR5cGVDYWNoZUhhc2ggPT0gTlVMTCkKIAl7CiAJCS8qIEZpcnN0IHRpbWUgdGhyb3Vn aDogaW5pdGlhbGl6ZSB0aGUgaGFzaCB0YWJsZSAqLwotCQlIQVNIQ1RMCQljdGw7CiAJCWludAkJ CWFsbG9jc2l6ZTsKIAotCQljdGwua2V5c2l6ZSA9IHNpemVvZihPaWQpOwotCQljdGwuZW50cnlz aXplID0gc2l6ZW9mKFR5cGVDYWNoZUVudHJ5KTsKLQogCQkvKgogCQkgKiBUeXBlQ2FjaGVFbnRy eSB0YWtlcyBoYXNoIHZhbHVlIGZyb20gdGhlIHN5c3RlbSBjYWNoZS4gRm9yCiAJCSAqIFR5cGVD YWNoZUhhc2ggd2UgdXNlIHRoZSBzYW1lIGhhc2ggaW4gb3JkZXIgdG8gc3BlZWR1cCBzZWFyY2gg YnkKIAkJICogaGFzaCB2YWx1ZS4gVGhpcyBpcyB1c2VkIGJ5IGhhc2hfc2VxX2luaXRfd2l0aF9o YXNoX3ZhbHVlKCkuCiAJCSAqLwotCQljdGwuaGFzaCA9IHR5cGVfY2FjaGVfc3lzaGFzaDsKLQot CQlUeXBlQ2FjaGVIYXNoID0gaGFzaF9jcmVhdGUoIlR5cGUgaW5mb3JtYXRpb24gY2FjaGUiLCA2 NCwKLQkJCQkJCQkJCSZjdGwsIEhBU0hfRUxFTSB8IEhBU0hfRlVOQ1RJT04pOworCQlUeXBlQ2Fj aGVIYXNoID0gaGFzaF9tYWtlX2ZuX2N4dChUeXBlQ2FjaGVFbnRyeSwgdHlwZV9pZCwKKwkJCQkJ CQkJCQkgIlR5cGUgaW5mb3JtYXRpb24gY2FjaGUiLCA2NCwKKwkJCQkJCQkJCQkgdHlwZV9jYWNo ZV9zeXNoYXNoLCBOVUxMLAorCQkJCQkJCQkJCSBUb3BNZW1vcnlDb250ZXh0KTsKIAogCQlBc3Nl cnQoUmVsSWRUb1R5cGVJZENhY2hlSGFzaCA9PSBOVUxMKTsKIAotCQljdGwua2V5c2l6ZSA9IHNp emVvZihPaWQpOwotCQljdGwuZW50cnlzaXplID0gc2l6ZW9mKFJlbElkVG9UeXBlSWRDYWNoZUVu dHJ5KTsKLQkJUmVsSWRUb1R5cGVJZENhY2hlSGFzaCA9IGhhc2hfY3JlYXRlKCJNYXAgZnJvbSBy ZWxpZCB0byBPSUQgb2YgY2FjaGVkIGNvbXBvc2l0ZSB0eXBlIiwgNjQsCi0JCQkJCQkJCQkJCSAm Y3RsLCBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTKTsKKwkJUmVsSWRUb1R5cGVJZENhY2hlSGFzaCA9 IGhhc2hfbWFrZV9jeHQoUmVsSWRUb1R5cGVJZENhY2hlRW50cnksIHJlbGlkLAorCQkJCQkJCQkJ CQkgICAiTWFwIGZyb20gcmVsaWQgdG8gT0lEIG9mIGNhY2hlZCBjb21wb3NpdGUgdHlwZSIsCisJ CQkJCQkJCQkJCSAgIDY0LCBUb3BNZW1vcnlDb250ZXh0KTsKIAogCQkvKiBBbHNvIHNldCB1cCBj YWxsYmFja3MgZm9yIFNJIGludmFsaWRhdGlvbnMgKi8KIAkJQ2FjaGVSZWdpc3RlclJlbGNhY2hl Q2FsbGJhY2soVHlwZUNhY2hlUmVsQ2FsbGJhY2ssIChEYXR1bSkgMCk7CkBAIC0yMDUwLDE1ICsy MDQ1LDExIEBAIGFzc2lnbl9yZWNvcmRfdHlwZV90eXBtb2QoVHVwbGVEZXNjIHR1cERlc2MpCiAJ aWYgKFJlY29yZENhY2hlSGFzaCA9PSBOVUxMKQogCXsKIAkJLyogRmlyc3QgdGltZSB0aHJvdWdo OiBpbml0aWFsaXplIHRoZSBoYXNoIHRhYmxlICovCi0JCUhBU0hDVEwJCWN0bDsKLQotCQljdGwu a2V5c2l6ZSA9IHNpemVvZihUdXBsZURlc2MpOwkvKiBqdXN0IHRoZSBwb2ludGVyICovCi0JCWN0 bC5lbnRyeXNpemUgPSBzaXplb2YoUmVjb3JkQ2FjaGVFbnRyeSk7Ci0JCWN0bC5oYXNoID0gcmVj b3JkX3R5cGVfdHlwbW9kX2hhc2g7Ci0JCWN0bC5tYXRjaCA9IHJlY29yZF90eXBlX3R5cG1vZF9j b21wYXJlOwotCQlSZWNvcmRDYWNoZUhhc2ggPSBoYXNoX2NyZWF0ZSgiUmVjb3JkIGluZm9ybWF0 aW9uIGNhY2hlIiwgNjQsCi0JCQkJCQkJCQkgICZjdGwsCi0JCQkJCQkJCQkgIEhBU0hfRUxFTSB8 IEhBU0hfRlVOQ1RJT04gfCBIQVNIX0NPTVBBUkUpOworCQlSZWNvcmRDYWNoZUhhc2ggPSBoYXNo X21ha2VfZm5fY3h0KFJlY29yZENhY2hlRW50cnksIHR1cGRlc2MsCisJCQkJCQkJCQkJICAgIlJl Y29yZCBpbmZvcm1hdGlvbiBjYWNoZSIsIDY0LAorCQkJCQkJCQkJCSAgIHJlY29yZF90eXBlX3R5 cG1vZF9oYXNoLAorCQkJCQkJCQkJCSAgIHJlY29yZF90eXBlX3R5cG1vZF9jb21wYXJlLAorCQkJ CQkJCQkJCSAgIFRvcE1lbW9yeUNvbnRleHQpOwogCiAJCS8qIEFsc28gbWFrZSBzdXJlIENhY2hl TWVtb3J5Q29udGV4dCBleGlzdHMgKi8KIAkJaWYgKCFDYWNoZU1lbW9yeUNvbnRleHQpCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9mbWdyL2RmbWdyLmMgYi9zcmMvYmFja2VuZC91dGls cy9mbWdyL2RmbWdyLmMKaW5kZXggZTYzNmNjODFjZjguLjVkOTk0NjdlMmJkIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC91dGlscy9mbWdyL2RmbWdyLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMv Zm1nci9kZm1nci5jCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAic3RvcmFnZS9mZC5oIgog I2luY2x1ZGUgInN0b3JhZ2Uvc2htZW0uaCIKICNpbmNsdWRlICJ1dGlscy9oc2VhcmNoLmgiCisj aW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKIAogCiAvKiBzaWduYXR1cmUgZm9yIFBvc3RncmVT UUwtc3BlY2lmaWMgbGlicmFyeSBpbml0IGZ1bmN0aW9uICovCkBAIC02NzEsMTQgKzY3Miw5IEBA IGZpbmRfcmVuZGV6dm91c192YXJpYWJsZShjb25zdCBjaGFyICp2YXJOYW1lKQogCS8qIENyZWF0 ZSBhIGhhc2h0YWJsZSBpZiB3ZSBoYXZlbid0IGFscmVhZHkgZG9uZSBzbyBpbiB0aGlzIHByb2Nl c3MgKi8KIAlpZiAocmVuZGV6dm91c0hhc2ggPT0gTlVMTCkKIAl7Ci0JCUhBU0hDVEwJCWN0bDsK LQotCQljdGwua2V5c2l6ZSA9IE5BTUVEQVRBTEVOOwotCQljdGwuZW50cnlzaXplID0gc2l6ZW9m KHJlbmRlenZvdXNIYXNoRW50cnkpOwotCQlyZW5kZXp2b3VzSGFzaCA9IGhhc2hfY3JlYXRlKCJS ZW5kZXp2b3VzIHZhcmlhYmxlIGhhc2giLAotCQkJCQkJCQkJIDE2LAotCQkJCQkJCQkJICZjdGws Ci0JCQkJCQkJCQkgSEFTSF9FTEVNIHwgSEFTSF9TVFJJTkdTKTsKKwkJcmVuZGV6dm91c0hhc2gg PSBoYXNoX21ha2VfY3h0KHJlbmRlenZvdXNIYXNoRW50cnksIHZhck5hbWUsCisJCQkJCQkJCQkg ICAiUmVuZGV6dm91cyB2YXJpYWJsZSBoYXNoIiwgMTYsCisJCQkJCQkJCQkgICBUb3BNZW1vcnlD b250ZXh0KTsKIAl9CiAKIAkvKiBGaW5kIG9yIGNyZWF0ZSB0aGUgaGFzaHRhYmxlIGVudHJ5IGZv ciB0aGlzIHZhck5hbWUgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2ZtZ3IvZm1n ci5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvZm1nci9mbWdyLmMKaW5kZXggMDU5ODRlN2VmMjYuLmRl Yjg1NTExYWQ1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9mbWdyL2ZtZ3IuYworKysg Yi9zcmMvYmFja2VuZC91dGlscy9mbWdyL2ZtZ3IuYwpAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1 ZGUgInV0aWxzL2ZtZ3J0YWIuaCIKICNpbmNsdWRlICJ1dGlscy9ndWMuaCIKICNpbmNsdWRlICJ1 dGlscy9sc3lzY2FjaGUuaCIKKyNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgogI2luY2x1ZGUg InV0aWxzL3N5c2NhY2hlLmgiCiAKIC8qCkBAIC01NDcsMTQgKzU0OCw4IEBAIHJlY29yZF9DX2Z1 bmMoSGVhcFR1cGxlIHByb2NlZHVyZVR1cGxlLAogCS8qIENyZWF0ZSB0aGUgaGFzaCB0YWJsZSBp ZiBpdCBkb2Vzbid0IGV4aXN0IHlldCAqLwogCWlmIChDRnVuY0hhc2ggPT0gTlVMTCkKIAl7Ci0J CUhBU0hDVEwJCWhhc2hfY3RsOwotCi0JCWhhc2hfY3RsLmtleXNpemUgPSBzaXplb2YoT2lkKTsK LQkJaGFzaF9jdGwuZW50cnlzaXplID0gc2l6ZW9mKENGdW5jSGFzaFRhYkVudHJ5KTsKLQkJQ0Z1 bmNIYXNoID0gaGFzaF9jcmVhdGUoIkNGdW5jSGFzaCIsCi0JCQkJCQkJCTEwMCwKLQkJCQkJCQkJ Jmhhc2hfY3RsLAotCQkJCQkJCQlIQVNIX0VMRU0gfCBIQVNIX0JMT0JTKTsKKwkJQ0Z1bmNIYXNo ID0gaGFzaF9tYWtlX2N4dChDRnVuY0hhc2hUYWJFbnRyeSwgZm5fb2lkLAorCQkJCQkJCQkgICJD RnVuY0hhc2giLCAxMDAsIFRvcE1lbW9yeUNvbnRleHQpOwogCX0KIAogCWVudHJ5ID0gKENGdW5j SGFzaFRhYkVudHJ5ICopCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Yy5j IGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMuYwppbmRleCBhZTlkNWYzZmI3MC4uNjE4ZDAx MDBkMzggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMKKysrIGIvc3Jj L2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMuYwpAQCAtODcxLDcgKzg3MSw2IEBAIGJ1aWxkX2d1Y192 YXJpYWJsZXModm9pZCkKIHsKIAlpbnQJCQlzaXplX3ZhcnM7CiAJaW50CQkJbnVtX3ZhcnMgPSAw OwotCUhBU0hDVEwJCWhhc2hfY3RsOwogCUdVQ0hhc2hFbnRyeSAqaGVudHJ5OwogCWJvb2wJCWZv dW5kOwogCkBAIC04OTQsMTUgKzg5MywxMCBAQCBidWlsZF9ndWNfdmFyaWFibGVzKHZvaWQpCiAJ ICovCiAJc2l6ZV92YXJzID0gbnVtX3ZhcnMgKyBudW1fdmFycyAvIDQ7CiAKLQloYXNoX2N0bC5r ZXlzaXplID0gc2l6ZW9mKGNoYXIgKik7Ci0JaGFzaF9jdGwuZW50cnlzaXplID0gc2l6ZW9mKEdV Q0hhc2hFbnRyeSk7Ci0JaGFzaF9jdGwuaGFzaCA9IGd1Y19uYW1lX2hhc2g7Ci0JaGFzaF9jdGwu bWF0Y2ggPSBndWNfbmFtZV9tYXRjaDsKLQloYXNoX2N0bC5oY3h0ID0gR1VDTWVtb3J5Q29udGV4 dDsKLQlndWNfaGFzaHRhYiA9IGhhc2hfY3JlYXRlKCJHVUMgaGFzaCB0YWJsZSIsCi0JCQkJCQkJ ICBzaXplX3ZhcnMsCi0JCQkJCQkJICAmaGFzaF9jdGwsCi0JCQkJCQkJICBIQVNIX0VMRU0gfCBI QVNIX0ZVTkNUSU9OIHwgSEFTSF9DT01QQVJFIHwgSEFTSF9DT05URVhUKTsKKwlndWNfaGFzaHRh YiA9IGhhc2hfbWFrZV9mbl9jeHQoR1VDSGFzaEVudHJ5LCBndWNuYW1lLAorCQkJCQkJCQkgICAi R1VDIGhhc2ggdGFibGUiLCBzaXplX3ZhcnMsCisJCQkJCQkJCSAgIGd1Y19uYW1lX2hhc2gsIGd1 Y19uYW1lX21hdGNoLAorCQkJCQkJCQkgICBHVUNNZW1vcnlDb250ZXh0KTsKIAogCWZvciAoaW50 IGkgPSAwOyBDb25maWd1cmVOYW1lc1tpXS5uYW1lOyBpKyspCiAJewpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvdXRpbHMvbWlzYy9pbmplY3Rpb25fcG9pbnQuYyBiL3NyYy9iYWNrZW5kL3V0aWxz L21pc2MvaW5qZWN0aW9uX3BvaW50LmMKaW5kZXggYzA2YjBlOWI4MDAuLmE2Y2I0NjQwMmFhIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2luamVjdGlvbl9wb2ludC5jCisrKyBi L3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvaW5qZWN0aW9uX3BvaW50LmMKQEAgLTEyNywxNiArMTI3 LDEwIEBAIGluamVjdGlvbl9wb2ludF9jYWNoZV9hZGQoY29uc3QgY2hhciAqbmFtZSwKIAkvKiBJ ZiBmaXJzdCB0aW1lLCBpbml0aWFsaXplICovCiAJaWYgKEluamVjdGlvblBvaW50Q2FjaGUgPT0g TlVMTCkKIAl7Ci0JCUhBU0hDVEwJCWhhc2hfY3RsOwotCi0JCWhhc2hfY3RsLmtleXNpemUgPSBz aXplb2YoY2hhcltJTkpfTkFNRV9NQVhMRU5dKTsKLQkJaGFzaF9jdGwuZW50cnlzaXplID0gc2l6 ZW9mKEluamVjdGlvblBvaW50Q2FjaGVFbnRyeSk7Ci0JCWhhc2hfY3RsLmhjeHQgPSBUb3BNZW1v cnlDb250ZXh0OwotCi0JCUluamVjdGlvblBvaW50Q2FjaGUgPSBoYXNoX2NyZWF0ZSgiSW5qZWN0 aW9uUG9pbnQgY2FjaGUgaGFzaCIsCi0JCQkJCQkJCQkJICBNQVhfSU5KRUNUSU9OX1BPSU5UUywK LQkJCQkJCQkJCQkgICZoYXNoX2N0bCwKLQkJCQkJCQkJCQkgIEhBU0hfRUxFTSB8IEhBU0hfU1RS SU5HUyB8IEhBU0hfQ09OVEVYVCk7CisJCUluamVjdGlvblBvaW50Q2FjaGUgPSBoYXNoX21ha2Vf Y3h0KEluamVjdGlvblBvaW50Q2FjaGVFbnRyeSwgbmFtZSwKKwkJCQkJCQkJCQkJIkluamVjdGlv blBvaW50IGNhY2hlIGhhc2giLAorCQkJCQkJCQkJCQlNQVhfSU5KRUNUSU9OX1BPSU5UUywKKwkJ CQkJCQkJCQkJVG9wTWVtb3J5Q29udGV4dCk7CiAJfQogCiAJZW50cnkgPSAoSW5qZWN0aW9uUG9p bnRDYWNoZUVudHJ5ICopCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9tbWdyL3BvcnRh bG1lbS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9wb3J0YWxtZW0uYwppbmRleCA0ZmE0ZDQz MjAyMS4uMGExMDgyZjQ4NDUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvcG9y dGFsbWVtLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9wb3J0YWxtZW0uYwpAQCAtMTAz LDIzICsxMDMsMTkgQEAgc3RhdGljIE1lbW9yeUNvbnRleHQgVG9wUG9ydGFsQ29udGV4dCA9IE5V TEw7CiB2b2lkCiBFbmFibGVQb3J0YWxNYW5hZ2VyKHZvaWQpCiB7Ci0JSEFTSENUTAkJY3RsOwot CiAJQXNzZXJ0KFRvcFBvcnRhbENvbnRleHQgPT0gTlVMTCk7CiAKIAlUb3BQb3J0YWxDb250ZXh0 ID0gQWxsb2NTZXRDb250ZXh0Q3JlYXRlKFRvcE1lbW9yeUNvbnRleHQsCiAJCQkJCQkJCQkJCSAi VG9wUG9ydGFsQ29udGV4dCIsCiAJCQkJCQkJCQkJCSBBTExPQ1NFVF9ERUZBVUxUX1NJWkVTKTsK IAotCWN0bC5rZXlzaXplID0gTUFYX1BPUlRBTE5BTUVfTEVOOwotCWN0bC5lbnRyeXNpemUgPSBz aXplb2YoUG9ydGFsSGFzaEVudCk7Ci0KIAkvKgogCSAqIHVzZSBQT1JUQUxTX1BFUl9VU0VSIGFz IGEgZ3Vlc3Mgb2YgaG93IG1hbnkgaGFzaCB0YWJsZSBlbnRyaWVzIHRvCiAJICogY3JlYXRlLCBp bml0aWFsbHkKIAkgKi8KLQlQb3J0YWxIYXNoVGFibGUgPSBoYXNoX2NyZWF0ZSgiUG9ydGFsIGhh c2giLCBQT1JUQUxTX1BFUl9VU0VSLAotCQkJCQkJCQkgICZjdGwsIEhBU0hfRUxFTSB8IEhBU0hf U1RSSU5HUyk7CisJUG9ydGFsSGFzaFRhYmxlID0gaGFzaF9tYWtlX2N4dChQb3J0YWxIYXNoRW50 LCBwb3J0YWxuYW1lLAorCQkJCQkJCQkJIlBvcnRhbCBoYXNoIiwgUE9SVEFMU19QRVJfVVNFUiwK KwkJCQkJCQkJCVRvcE1lbW9yeUNvbnRleHQpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvdXRpbHMvdGltZS9jb21ib2NpZC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvdGltZS9jb21i b2NpZC5jCmluZGV4IDYxNGI3YzEwMDZiLi40YzMxNjc1NTM1YSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvdXRpbHMvdGltZS9jb21ib2NpZC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL3RpbWUv Y29tYm9jaWQuYwpAQCAtMjE0LDggKzIxNCw2IEBAIEdldENvbWJvQ29tbWFuZElkKENvbW1hbmRJ ZCBjbWluLCBDb21tYW5kSWQgY21heCkKIAkgKi8KIAlpZiAoY29tYm9IYXNoID09IE5VTEwpCiAJ ewotCQlIQVNIQ1RMCQloYXNoX2N0bDsKLQogCQkvKiBNYWtlIGFycmF5IGZpcnN0OyBleGlzdGVu Y2Ugb2YgaGFzaCB0YWJsZSBhc3NlcnRzIGFycmF5IGV4aXN0cyAqLwogCQljb21ib0NpZHMgPSAo Q29tYm9DaWRLZXlEYXRhICopCiAJCQlNZW1vcnlDb250ZXh0QWxsb2MoVG9wVHJhbnNhY3Rpb25D b250ZXh0LApAQCAtMjIzLDE0ICsyMjEsOSBAQCBHZXRDb21ib0NvbW1hbmRJZChDb21tYW5kSWQg Y21pbiwgQ29tbWFuZElkIGNtYXgpCiAJCXNpemVDb21ib0NpZHMgPSBDQ0lEX0FSUkFZX1NJWkU7 CiAJCXVzZWRDb21ib0NpZHMgPSAwOwogCi0JCWhhc2hfY3RsLmtleXNpemUgPSBzaXplb2YoQ29t Ym9DaWRLZXlEYXRhKTsKLQkJaGFzaF9jdGwuZW50cnlzaXplID0gc2l6ZW9mKENvbWJvQ2lkRW50 cnlEYXRhKTsKLQkJaGFzaF9jdGwuaGN4dCA9IFRvcFRyYW5zYWN0aW9uQ29udGV4dDsKLQotCQlj b21ib0hhc2ggPSBoYXNoX2NyZWF0ZSgiQ29tYm8gQ0lEcyIsCi0JCQkJCQkJCUNDSURfSEFTSF9T SVpFLAotCQkJCQkJCQkmaGFzaF9jdGwsCi0JCQkJCQkJCUhBU0hfRUxFTSB8IEhBU0hfQkxPQlMg fCBIQVNIX0NPTlRFWFQpOworCQljb21ib0hhc2ggPSBoYXNoX21ha2VfY3h0KENvbWJvQ2lkRW50 cnlEYXRhLCBrZXksCisJCQkJCQkJCSAgIkNvbWJvIENJRHMiLCBDQ0lEX0hBU0hfU0laRSwKKwkJ CQkJCQkJICBUb3BUcmFuc2FjdGlvbkNvbnRleHQpOwogCX0KIAogCS8qCmRpZmYgLS1naXQgYS9z cmMvcGwvcGxwZXJsL3BscGVybC5jIGIvc3JjL3BsL3BscGVybC9wbHBlcmwuYwppbmRleCAwMmVj ZWQzYjJjNS4uNDkwNDRiYzgwOGIgMTAwNjQ0Ci0tLSBhL3NyYy9wbC9wbHBlcmwvcGxwZXJsLmMK KysrIGIvc3JjL3BsL3BscGVybC9wbHBlcmwuYwpAQCAtMzkwLDcgKzM5MCw2IEBAIF9QR19pbml0 KHZvaWQpCiAJICogInBscGVybC51c2Vfc3RyaWN0IgogCSAqLwogCXN0YXRpYyBib29sIGluaXRl ZCA9IGZhbHNlOwotCUhBU0hDVEwJCWhhc2hfY3RsOwogCiAJaWYgKGluaXRlZCkKIAkJcmV0dXJu OwpAQCAtNDYwLDE5ICs0NTksMTMgQEAgX1BHX2luaXQodm9pZCkKIAkvKgogCSAqIENyZWF0ZSBo YXNoIHRhYmxlcy4KIAkgKi8KLQloYXNoX2N0bC5rZXlzaXplID0gc2l6ZW9mKE9pZCk7Ci0JaGFz aF9jdGwuZW50cnlzaXplID0gc2l6ZW9mKHBscGVybF9pbnRlcnBfZGVzYyk7Ci0JcGxwZXJsX2lu dGVycF9oYXNoID0gaGFzaF9jcmVhdGUoIlBML1BlcmwgaW50ZXJwcmV0ZXJzIiwKLQkJCQkJCQkJ CSA4LAotCQkJCQkJCQkJICZoYXNoX2N0bCwKLQkJCQkJCQkJCSBIQVNIX0VMRU0gfCBIQVNIX0JM T0JTKTsKLQotCWhhc2hfY3RsLmtleXNpemUgPSBzaXplb2YocGxwZXJsX3Byb2Nfa2V5KTsKLQlo YXNoX2N0bC5lbnRyeXNpemUgPSBzaXplb2YocGxwZXJsX3Byb2NfcHRyKTsKLQlwbHBlcmxfcHJv Y19oYXNoID0gaGFzaF9jcmVhdGUoIlBML1BlcmwgcHJvY2VkdXJlcyIsCi0JCQkJCQkJCSAgIDMy LAotCQkJCQkJCQkgICAmaGFzaF9jdGwsCi0JCQkJCQkJCSAgIEhBU0hfRUxFTSB8IEhBU0hfQkxP QlMpOworCXBscGVybF9pbnRlcnBfaGFzaCA9IGhhc2hfbWFrZV9jeHQocGxwZXJsX2ludGVycF9k ZXNjLCB1c2VyX2lkLAorCQkJCQkJCQkJICAgIlBML1BlcmwgaW50ZXJwcmV0ZXJzIiwgOCwKKwkJ CQkJCQkJCSAgIFRvcE1lbW9yeUNvbnRleHQpOworCisJcGxwZXJsX3Byb2NfaGFzaCA9IGhhc2hf bWFrZV9jeHQocGxwZXJsX3Byb2NfcHRyLCBwcm9jX2tleSwKKwkJCQkJCQkJCSAiUEwvUGVybCBw cm9jZWR1cmVzIiwgMzIsCisJCQkJCQkJCQkgVG9wTWVtb3J5Q29udGV4dCk7CiAKIAkvKgogCSAq IFNhdmUgdGhlIGRlZmF1bHQgb3BtYXNrLgpAQCAtNTc4LDE0ICs1NzEsOSBAQCBzZWxlY3RfcGVy bF9jb250ZXh0KGJvb2wgdHJ1c3RlZCkKIAkvKiBNYWtlIHN1cmUgd2UgaGF2ZSBhIHF1ZXJ5X2hh c2ggZm9yIHRoaXMgaW50ZXJwcmV0ZXIgKi8KIAlpZiAoaW50ZXJwX2Rlc2MtPnF1ZXJ5X2hhc2gg PT0gTlVMTCkKIAl7Ci0JCUhBU0hDVEwJCWhhc2hfY3RsOwotCi0JCWhhc2hfY3RsLmtleXNpemUg PSBOQU1FREFUQUxFTjsKLQkJaGFzaF9jdGwuZW50cnlzaXplID0gc2l6ZW9mKHBscGVybF9xdWVy eV9lbnRyeSk7Ci0JCWludGVycF9kZXNjLT5xdWVyeV9oYXNoID0gaGFzaF9jcmVhdGUoIlBML1Bl cmwgcXVlcmllcyIsCi0JCQkJCQkJCQkJCSAgMzIsCi0JCQkJCQkJCQkJCSAgJmhhc2hfY3RsLAot CQkJCQkJCQkJCQkgIEhBU0hfRUxFTSB8IEhBU0hfU1RSSU5HUyk7CisJCWludGVycF9kZXNjLT5x dWVyeV9oYXNoID0gaGFzaF9tYWtlX2N4dChwbHBlcmxfcXVlcnlfZW50cnksIHF1ZXJ5X25hbWUs CisJCQkJCQkJCQkJCQkiUEwvUGVybCBxdWVyaWVzIiwgMzIsCisJCQkJCQkJCQkJCQlUb3BNZW1v cnlDb250ZXh0KTsKIAl9CiAKIAkvKgpkaWZmIC0tZ2l0IGEvc3JjL3BsL3BscGdzcWwvc3JjL3Bs X2V4ZWMuYyBiL3NyYy9wbC9wbHBnc3FsL3NyYy9wbF9leGVjLmMKaW5kZXggNzUzMjUxMTdlYzku LmZiYjg4YWZmYTE1IDEwMDY0NAotLS0gYS9zcmMvcGwvcGxwZ3NxbC9zcmMvcGxfZXhlYy5jCisr KyBiL3NyYy9wbC9wbHBnc3FsL3NyYy9wbF9leGVjLmMKQEAgLTM5OTUsOCArMzk5NSw2IEBAIHBs cGdzcWxfZXN0YXRlX3NldHVwKFBMcGdTUUxfZXhlY3N0YXRlICplc3RhdGUsCiAJCQkJCSBFU3Rh dGUgKnNpbXBsZV9ldmFsX2VzdGF0ZSwKIAkJCQkJIFJlc291cmNlT3duZXIgc2ltcGxlX2V2YWxf cmVzb3duZXIpCiB7Ci0JSEFTSENUTAkJY3RsOwotCiAJLyogdGhpcyBsaW5rIHdpbGwgYmUgcmVz dG9yZWQgYXQgZXhpdCBmcm9tIHBscGdzcWxfY2FsbF9oYW5kbGVyICovCiAJZnVuYy0+Y3VyX2Vz dGF0ZSA9IGVzdGF0ZTsKIApAQCAtNDA1MSwxMiArNDA0OSwxMCBAQCBwbHBnc3FsX2VzdGF0ZV9z ZXR1cChQTHBnU1FMX2V4ZWNzdGF0ZSAqZXN0YXRlLAogCS8qIENyZWF0ZSB0aGUgc2Vzc2lvbi13 aWRlIGNhc3QtZXhwcmVzc2lvbiBoYXNoIGlmIHdlIGRpZG4ndCBhbHJlYWR5ICovCiAJaWYgKGNh c3RfZXhwcl9oYXNoID09IE5VTEwpCiAJewotCQljdGwua2V5c2l6ZSA9IHNpemVvZihwbHBnc3Fs X0Nhc3RIYXNoS2V5KTsKLQkJY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihwbHBnc3FsX0Nhc3RFeHBy SGFzaEVudHJ5KTsKLQkJY2FzdF9leHByX2hhc2ggPSBoYXNoX2NyZWF0ZSgiUExwZ1NRTCBjYXN0 IGV4cHJlc3Npb25zIiwKLQkJCQkJCQkJCSAxNiwJLyogc3RhcnQgc21hbGwgYW5kIGV4dGVuZCAq LwotCQkJCQkJCQkJICZjdGwsCi0JCQkJCQkJCQkgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyk7CisJ CWNhc3RfZXhwcl9oYXNoID0gaGFzaF9tYWtlX2N4dChwbHBnc3FsX0Nhc3RFeHBySGFzaEVudHJ5 LCBrZXksCisJCQkJCQkJCQkgICAiUExwZ1NRTCBjYXN0IGV4cHJlc3Npb25zIiwKKwkJCQkJCQkJ CSAgIDE2LAkvKiBzdGFydCBzbWFsbCBhbmQgZXh0ZW5kICovCisJCQkJCQkJCQkgICBUb3BNZW1v cnlDb250ZXh0KTsKIAl9CiAKIAkvKiBzZXQgdXAgZm9yIHVzZSBvZiBhcHByb3ByaWF0ZSBzaW1w bGUtZXhwcmVzc2lvbiBFU3RhdGUgYW5kIGNhc3QgaGFzaCAqLwpAQCAtNDA2NCwxMyArNDA2MCw5 IEBAIHBscGdzcWxfZXN0YXRlX3NldHVwKFBMcGdTUUxfZXhlY3N0YXRlICplc3RhdGUsCiAJewog CQllc3RhdGUtPnNpbXBsZV9ldmFsX2VzdGF0ZSA9IHNpbXBsZV9ldmFsX2VzdGF0ZTsKIAkJLyog UHJpdmF0ZSBjYXN0IGhhc2gganVzdCBsaXZlcyBpbiBmdW5jdGlvbidzIG1haW4gY29udGV4dCAq LwotCQljdGwua2V5c2l6ZSA9IHNpemVvZihwbHBnc3FsX0Nhc3RIYXNoS2V5KTsKLQkJY3RsLmVu dHJ5c2l6ZSA9IHNpemVvZihwbHBnc3FsX0Nhc3RIYXNoRW50cnkpOwotCQljdGwuaGN4dCA9IEN1 cnJlbnRNZW1vcnlDb250ZXh0OwotCQllc3RhdGUtPmNhc3RfaGFzaCA9IGhhc2hfY3JlYXRlKCJQ THBnU1FMIHByaXZhdGUgY2FzdCBjYWNoZSIsCi0JCQkJCQkJCQkJMTYsIC8qIHN0YXJ0IHNtYWxs IGFuZCBleHRlbmQgKi8KLQkJCQkJCQkJCQkmY3RsLAotCQkJCQkJCQkJCUhBU0hfRUxFTSB8IEhB U0hfQkxPQlMgfCBIQVNIX0NPTlRFWFQpOworCQllc3RhdGUtPmNhc3RfaGFzaCA9IGhhc2hfbWFr ZShwbHBnc3FsX0Nhc3RIYXNoRW50cnksIGtleSwKKwkJCQkJCQkJCSAgIlBMcGdTUUwgcHJpdmF0 ZSBjYXN0IGNhY2hlIiwKKwkJCQkJCQkJCSAgMTYpOwkvKiBzdGFydCBzbWFsbCBhbmQgZXh0ZW5k ICovCiAJfQogCWVsc2UKIAl7CkBAIC00MDc4LDEyICs0MDcwLDEwIEBAIHBscGdzcWxfZXN0YXRl X3NldHVwKFBMcGdTUUxfZXhlY3N0YXRlICplc3RhdGUsCiAJCS8qIENyZWF0ZSB0aGUgc2Vzc2lv bi13aWRlIGNhc3QtaW5mbyBoYXNoIHRhYmxlIGlmIHdlIGRpZG4ndCBhbHJlYWR5ICovCiAJCWlm IChzaGFyZWRfY2FzdF9oYXNoID09IE5VTEwpCiAJCXsKLQkJCWN0bC5rZXlzaXplID0gc2l6ZW9m KHBscGdzcWxfQ2FzdEhhc2hLZXkpOwotCQkJY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihwbHBnc3Fs X0Nhc3RIYXNoRW50cnkpOwotCQkJc2hhcmVkX2Nhc3RfaGFzaCA9IGhhc2hfY3JlYXRlKCJQTHBn U1FMIGNhc3QgY2FjaGUiLAotCQkJCQkJCQkJCSAgIDE2LAkvKiBzdGFydCBzbWFsbCBhbmQgZXh0 ZW5kICovCi0JCQkJCQkJCQkJICAgJmN0bCwKLQkJCQkJCQkJCQkgICBIQVNIX0VMRU0gfCBIQVNI X0JMT0JTKTsKKwkJCXNoYXJlZF9jYXN0X2hhc2ggPSBoYXNoX21ha2VfY3h0KHBscGdzcWxfQ2Fz dEhhc2hFbnRyeSwga2V5LAorCQkJCQkJCQkJCQkgIlBMcGdTUUwgY2FzdCBjYWNoZSIsCisJCQkJ CQkJCQkJCSAxNiwJLyogc3RhcnQgc21hbGwgYW5kIGV4dGVuZCAqLworCQkJCQkJCQkJCQkgVG9w TWVtb3J5Q29udGV4dCk7CiAJCX0KIAkJZXN0YXRlLT5jYXN0X2hhc2ggPSBzaGFyZWRfY2FzdF9o YXNoOwogCX0KZGlmZiAtLWdpdCBhL3NyYy9wbC9wbHB5dGhvbi9wbHB5X3BscHltb2R1bGUuYyBi L3NyYy9wbC9wbHB5dGhvbi9wbHB5X3BscHltb2R1bGUuYwppbmRleCA4OTkzMTYxMmM1Yi4uYjI2 OGIzODBjZDUgMTAwNjQ0Ci0tLSBhL3NyYy9wbC9wbHB5dGhvbi9wbHB5X3BscHltb2R1bGUuYwor KysgYi9zcmMvcGwvcGxweXRob24vcGxweV9wbHB5bW9kdWxlLmMKQEAgLTE2LDYgKzE2LDcgQEAK ICNpbmNsdWRlICJwbHB5X3N1YnhhY3RvYmplY3QuaCIKICNpbmNsdWRlICJwbHB5X3V0aWwuaCIK ICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgorI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgi CiAKIEhUQUIJICAgKlBMeV9zcGlfZXhjZXB0aW9ucyA9IE5VTEw7CiAKQEAgLTE3Miw3ICsxNzMs NiBAQCBzdGF0aWMgdm9pZAogUEx5X2FkZF9leGNlcHRpb25zKFB5T2JqZWN0ICpwbHB5KQogewog CVB5T2JqZWN0ICAgKmV4Y21vZDsKLQlIQVNIQ1RMCQloYXNoX2N0bDsKIAogCWV4Y21vZCA9IFB5 TW9kdWxlX0NyZWF0ZSgmUEx5X2V4Y19tb2R1bGUpOwogCWlmIChleGNtb2QgPT0gTlVMTCkKQEAg LTE5MywxMCArMTkzLDkgQEAgUEx5X2FkZF9leGNlcHRpb25zKFB5T2JqZWN0ICpwbHB5KQogCVBM eV9leGNfc3BpX2Vycm9yID0gUEx5X2NyZWF0ZV9leGNlcHRpb24oInBscHkuU1BJRXJyb3IiLCBO VUxMLCBOVUxMLAogCQkJCQkJCQkJCQkgIlNQSUVycm9yIiwgcGxweSk7CiAKLQloYXNoX2N0bC5r ZXlzaXplID0gc2l6ZW9mKGludCk7Ci0JaGFzaF9jdGwuZW50cnlzaXplID0gc2l6ZW9mKFBMeUV4 Y2VwdGlvbkVudHJ5KTsKLQlQTHlfc3BpX2V4Y2VwdGlvbnMgPSBoYXNoX2NyZWF0ZSgiUEwvUHl0 aG9uIFNQSSBleGNlcHRpb25zIiwgMjU2LAotCQkJCQkJCQkJICZoYXNoX2N0bCwgSEFTSF9FTEVN IHwgSEFTSF9CTE9CUyk7CisJUEx5X3NwaV9leGNlcHRpb25zID0gaGFzaF9tYWtlX2N4dChQTHlF eGNlcHRpb25FbnRyeSwgc3Fsc3RhdGUsCisJCQkJCQkJCQkgICAiUEwvUHl0aG9uIFNQSSBleGNl cHRpb25zIiwgMjU2LAorCQkJCQkJCQkJICAgVG9wTWVtb3J5Q29udGV4dCk7CiAKIAlQTHlfZ2Vu ZXJhdGVfc3BpX2V4Y2VwdGlvbnMoZXhjbW9kLCBQTHlfZXhjX3NwaV9lcnJvcik7CiB9CmRpZmYg LS1naXQgYS9zcmMvcGwvcGxweXRob24vcGxweV9wcm9jZWR1cmUuYyBiL3NyYy9wbC9wbHB5dGhv bi9wbHB5X3Byb2NlZHVyZS5jCmluZGV4IDc1MGJhNTg2ZTBjLi5mYzcyOGY3YWI4YSAxMDA2NDQK LS0tIGEvc3JjL3BsL3BscHl0aG9uL3BscHlfcHJvY2VkdXJlLmMKKysrIGIvc3JjL3BsL3BscHl0 aG9uL3BscHlfcHJvY2VkdXJlLmMKQEAgLTI5LDEyICsyOSw5IEBAIHN0YXRpYyBjaGFyICpQTHlf cHJvY2VkdXJlX211bmdlX3NvdXJjZShjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICpzcmMp Owogdm9pZAogaW5pdF9wcm9jZWR1cmVfY2FjaGVzKHZvaWQpCiB7Ci0JSEFTSENUTAkJaGFzaF9j dGw7Ci0KLQloYXNoX2N0bC5rZXlzaXplID0gc2l6ZW9mKFBMeVByb2NlZHVyZUtleSk7Ci0JaGFz aF9jdGwuZW50cnlzaXplID0gc2l6ZW9mKFBMeVByb2NlZHVyZUVudHJ5KTsKLQlQTHlfcHJvY2Vk dXJlX2NhY2hlID0gaGFzaF9jcmVhdGUoIlBML1B5dGhvbiBwcm9jZWR1cmVzIiwgMzIsICZoYXNo X2N0bCwKLQkJCQkJCQkJCSAgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyk7CisJUEx5X3Byb2NlZHVy ZV9jYWNoZSA9IGhhc2hfbWFrZV9jeHQoUEx5UHJvY2VkdXJlRW50cnksIGtleSwKKwkJCQkJCQkJ CQkiUEwvUHl0aG9uIHByb2NlZHVyZXMiLCAzMiwKKwkJCQkJCQkJCQlUb3BNZW1vcnlDb250ZXh0 KTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9wbC90Y2wvcGx0Y2wuYyBiL3NyYy9wbC90Y2wv cGx0Y2wuYwppbmRleCAxODc2OThjY2RkMi4uNzA3MDA1MTQ2M2QgMTAwNjQ0Ci0tLSBhL3NyYy9w bC90Y2wvcGx0Y2wuYworKysgYi9zcmMvcGwvdGNsL3BsdGNsLmMKQEAgLTQwOCw3ICs0MDgsNiBA QCB2b2lkCiBfUEdfaW5pdCh2b2lkKQogewogCVRjbF9Ob3RpZmllclByb2NzIG5vdGlmaWVyOwot CUhBU0hDVEwJCWhhc2hfY3RsOwogCiAJLyogQmUgc3VyZSB3ZSBkbyBpbml0aWFsaXphdGlvbiBv bmx5IG9uY2UgKHNob3VsZCBiZSByZWR1bmRhbnQgbm93KSAqLwogCWlmIChwbHRjbF9wbV9pbml0 X2RvbmUpCkBAIC00NDYsMjIgKzQ0NSwxNiBAQCBfUEdfaW5pdCh2b2lkKQogCS8qKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIAkgKiBD cmVhdGUgdGhlIGhhc2ggdGFibGUgZm9yIHdvcmtpbmcgaW50ZXJwcmV0ZXJzCiAJICoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQlo YXNoX2N0bC5rZXlzaXplID0gc2l6ZW9mKE9pZCk7Ci0JaGFzaF9jdGwuZW50cnlzaXplID0gc2l6 ZW9mKHBsdGNsX2ludGVycF9kZXNjKTsKLQlwbHRjbF9pbnRlcnBfaHRhYiA9IGhhc2hfY3JlYXRl KCJQTC9UY2wgaW50ZXJwcmV0ZXJzIiwKLQkJCQkJCQkJCTgsCi0JCQkJCQkJCQkmaGFzaF9jdGws Ci0JCQkJCQkJCQlIQVNIX0VMRU0gfCBIQVNIX0JMT0JTKTsKKwlwbHRjbF9pbnRlcnBfaHRhYiA9 IGhhc2hfbWFrZV9jeHQocGx0Y2xfaW50ZXJwX2Rlc2MsIHVzZXJfaWQsCisJCQkJCQkJCQkgICJQ TC9UY2wgaW50ZXJwcmV0ZXJzIiwgOCwKKwkJCQkJCQkJCSAgVG9wTWVtb3J5Q29udGV4dCk7CiAK IAkvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqCiAJICogQ3JlYXRlIHRoZSBoYXNoIHRhYmxlIGZvciBmdW5jdGlvbiBsb29rdXAKIAkg KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqLwotCWhhc2hfY3RsLmtleXNpemUgPSBzaXplb2YocGx0Y2xfcHJvY19rZXkpOwotCWhhc2hf Y3RsLmVudHJ5c2l6ZSA9IHNpemVvZihwbHRjbF9wcm9jX3B0cik7Ci0JcGx0Y2xfcHJvY19odGFi ID0gaGFzaF9jcmVhdGUoIlBML1RjbCBmdW5jdGlvbnMiLAotCQkJCQkJCQkgIDEwMCwKLQkJCQkJ CQkJICAmaGFzaF9jdGwsCi0JCQkJCQkJCSAgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyk7CisJcGx0 Y2xfcHJvY19odGFiID0gaGFzaF9tYWtlX2N4dChwbHRjbF9wcm9jX3B0ciwgcHJvY19rZXksCisJ CQkJCQkJCQkiUEwvVGNsIGZ1bmN0aW9ucyIsIDEwMCwKKwkJCQkJCQkJCVRvcE1lbW9yeUNvbnRl eHQpOwogCiAJLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKgogCSAqIERlZmluZSBQTC9UY2wncyBjdXN0b20gR1VDcwpkaWZmIC0tZ2l0 IGEvc3JjL3RpbWV6b25lL3BndHouYyBiL3NyYy90aW1lem9uZS9wZ3R6LmMKaW5kZXggZWFjOTg4 YzIxZTcuLmM2OGRlOTNiNTM1IDEwMDY0NAotLS0gYS9zcmMvdGltZXpvbmUvcGd0ei5jCisrKyBi L3NyYy90aW1lem9uZS9wZ3R6LmMKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJwZ3R6Lmgi CiAjaW5jbHVkZSAic3RvcmFnZS9mZC5oIgogI2luY2x1ZGUgInV0aWxzL2hzZWFyY2guaCIKKyNp bmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgogCiAKIC8qIEN1cnJlbnQgc2Vzc2lvbiB0aW1lem9u ZSAoY29udHJvbGxlZCBieSBUaW1lWm9uZSBHVUMpICovCkBAIC0yMDEsMTUgKzIwMiw4IEBAIHN0 YXRpYyBIVEFCICp0aW1lem9uZV9jYWNoZSA9IE5VTEw7CiBzdGF0aWMgYm9vbAogaW5pdF90aW1l em9uZV9oYXNodGFibGUodm9pZCkKIHsKLQlIQVNIQ1RMCQloYXNoX2N0bDsKLQotCWhhc2hfY3Rs LmtleXNpemUgPSBUWl9TVFJMRU5fTUFYICsgMTsKLQloYXNoX2N0bC5lbnRyeXNpemUgPSBzaXpl b2YocGdfdHpfY2FjaGUpOwotCi0JdGltZXpvbmVfY2FjaGUgPSBoYXNoX2NyZWF0ZSgiVGltZXpv bmVzIiwKLQkJCQkJCQkJIDQsCi0JCQkJCQkJCSAmaGFzaF9jdGwsCi0JCQkJCQkJCSBIQVNIX0VM RU0gfCBIQVNIX1NUUklOR1MpOworCXRpbWV6b25lX2NhY2hlID0gaGFzaF9tYWtlX2N4dChwZ190 el9jYWNoZSwgdHpuYW1ldXBwZXIsCisJCQkJCQkJCSAgICJUaW1lem9uZXMiLCA0LCBUb3BNZW1v cnlDb250ZXh0KTsKIAlpZiAoIXRpbWV6b25lX2NhY2hlKQogCQlyZXR1cm4gZmFsc2U7CiAKLS0g CjIuNTIuMAoK --b61100c90bc4723abf16aa8e9e972a6bf2b76b698cfd62dcd856536e7901 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v5-0004-Use-foreach_hash-macro-throughout-the-codebase.patch Content-Type: text/x-patch; charset=utf-8; name=v5-0004-Use-foreach_hash-macro-throughout-the-codebase.patch RnJvbSAyNTYzMDA5N2IyM2RhN2I1MzY1MTFjYmU3N2M0MzExMmFkNzUwODFiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBUaHUsIDQgRGVjIDIwMjUgMTU6Mzk6MDkgKzAxMDAKU3ViamVjdDogW1BBVENIIHY1 IDQvNV0gVXNlIGZvcmVhY2hfaGFzaCBtYWNybyB0aHJvdWdob3V0IHRoZSBjb2RlYmFzZQoKVGhp cyBzdGFydHMgdXNpbmcgdGhlIG5ldyBmb3JlYWNoX2hhc2ggbWFjcm8gdGhyb3VnaG91dCB0aGUg Y29kZWJhc2UuClRoaXMgbWFrZXMgY29kZSBlYXNpZXIgdG8gcmVhZCwgYnV0IG9idmlvdXNseSBk b2VzIGludHJvZHVjZQpiYWNrcGF0Y2hpbmcgcHJvYmxlbXMuIFdlIGNhbiBjaG9vc2Ugbm90IHRv IGRvIHRoaXMgcmVmYWN0b3IgdG8gYXZvaWQKdGhhdC4gT3Igd2UgY291bGQgaW5zdGVhZCBjaG9v c2UgdG8gZG8gdGhlIHJlZmFjdG9yIGFuZCB0aGVuIGJhY2twYXRjaAp0aGVzZSBuZXcgbWFjcm9z IHNvIHRoZXkgY2FuIGJlIHVzZWQgaW4gYmFja3BhdGNoZWQgY29kZS4KCkF0IHRoZSB2ZXJ5IGxl YXN0IHdlIHNob3VsZCBjaG9vc2UgYSBmZXcgcGxhY2VzIHdoZXJlIHdlIHVzZSB0aGUgbmV3Cm1h Y3JvcyB0byBtYWtlIHN1cmUgdGhleSBoYXZlIGNvdmVyYWdlLgotLS0KIGNvbnRyaWIvZGJsaW5r L2RibGluay5jICAgICAgICAgICAgICAgICAgICAgICB8ICA1ICstCiAuLi4vcGdfc3RhdF9zdGF0 ZW1lbnRzL3BnX3N0YXRfc3RhdGVtZW50cy5jICAgfCAzOSArKystLS0tLS0KIGNvbnRyaWIvcGdf dHJnbS90cmdtX3JlZ2V4cC5jICAgICAgICAgICAgICAgICB8IDE4ICstLS0KIGNvbnRyaWIvcG9z dGdyZXNfZmR3L2Nvbm5lY3Rpb24uYyAgICAgICAgICAgICB8IDI2ICsrLS0tLQogY29udHJpYi9w b3N0Z3Jlc19mZHcvc2hpcHBhYmxlLmMgICAgICAgICAgICAgIHwgIDYgKy0KIHNyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL3Jld3JpdGVoZWFwLmMgICAgICAgICB8IDE4ICstLS0KIHNyYy9iYWNrZW5k L2FjY2Vzcy90cmFuc2FtL3hsb2d1dGlscy5jICAgICAgICB8IDIwICstLS0tCiBzcmMvYmFja2Vu ZC9jYXRhbG9nL3BnX2VudW0uYyAgICAgICAgICAgICAgICAgfCAxNiArKy0tCiBzcmMvYmFja2Vu ZC9jYXRhbG9nL3N0b3JhZ2UuYyAgICAgICAgICAgICAgICAgfCAxOCArKy0tCiBzcmMvYmFja2Vu ZC9jb21tYW5kcy9wcmVwYXJlLmMgICAgICAgICAgICAgICAgfCAxMiArLS0KIHNyYy9iYWNrZW5k L2NvbW1hbmRzL3RhYmxlY21kcy5jICAgICAgICAgICAgICB8ICA3ICstCiBzcmMvYmFja2VuZC9v cHRpbWl6ZXIvdXRpbC9wcmVkdGVzdC5jICAgICAgICAgfCAgNyArLQogc3JjL2JhY2tlbmQvcGFy c2VyL3BhcnNlX29wZXIuYyAgICAgICAgICAgICAgIHwgIDcgKy0KIHNyYy9iYWNrZW5kL3BhcnRp dGlvbmluZy9wYXJ0ZGVzYy5jICAgICAgICAgICB8ICA2ICstCiBzcmMvYmFja2VuZC9wb3N0bWFz dGVyL2F1dG92YWN1dW0uYyAgICAgICAgICAgfCAgNyArLQogc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC9yZWxhdGlvbi5jICAgIHwgMzcgKystLS0tLS0KIC4uLi9yZXBsaWNhdGlvbi9s b2dpY2FsL3Jlb3JkZXJidWZmZXIuYyAgICAgICB8IDEyICstLQogc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYyAgIHwgMjQgKystLS0tCiBzcmMvYmFja2VuZC9zdG9y YWdlL2J1ZmZlci9idWZtZ3IuYyAgICAgICAgICAgfCAxMCArLS0KIHNyYy9iYWNrZW5kL3N0b3Jh Z2UvaXBjL3NobWVtLmMgICAgICAgICAgICAgICB8IDEyICstLQogc3JjL2JhY2tlbmQvc3RvcmFn ZS9pcGMvc3RhbmRieS5jICAgICAgICAgICAgIHwgMTIgKy0tCiBzcmMvYmFja2VuZC9zdG9yYWdl L2xtZ3IvbG9jay5jICAgICAgICAgICAgICAgfCA2NyArKystLS0tLS0tLS0tLS0KIHNyYy9iYWNr ZW5kL3N0b3JhZ2UvbG1nci9sd2xvY2suYyAgICAgICAgICAgICB8ICA3ICstCiBzcmMvYmFja2Vu ZC9zdG9yYWdlL2xtZ3IvcHJlZGljYXRlLmMgICAgICAgICAgfCAxOCArLS0tCiBzcmMvYmFja2Vu ZC9zdG9yYWdlL3NtZ3Ivc21nci5jICAgICAgICAgICAgICAgfCAgNyArLQogc3JjL2JhY2tlbmQv c3RvcmFnZS9zeW5jL3N5bmMuYyAgICAgICAgICAgICAgIHwgMTMgKy0tCiBzcmMvYmFja2VuZC90 c2VhcmNoL3RzX3R5cGFuYWx5emUuYyAgICAgICAgICAgfCAxMSArLS0KIHNyYy9iYWNrZW5kL3V0 aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYyAgICAgICB8ICA2ICstCiBzcmMvYmFja2VuZC91dGls cy9hZHQvYXJyYXlfdHlwYW5hbHl6ZS5jICAgICAgfCAxNyArKy0tCiBzcmMvYmFja2VuZC91dGls cy9jYWNoZS9yZWxjYWNoZS5jICAgICAgICAgICAgfCA1MyArKysrLS0tLS0tLS0KIHNyYy9iYWNr ZW5kL3V0aWxzL2NhY2hlL3JlbGZpbGVudW1iZXJtYXAuYyAgICB8ICA2ICstCiBzcmMvYmFja2Vu ZC91dGlscy9jYWNoZS9zcGNjYWNoZS5jICAgICAgICAgICAgfCAgNiArLQogc3JjL2JhY2tlbmQv dXRpbHMvY2FjaGUvdHNfY2FjaGUuYyAgICAgICAgICAgIHwgIDUgKy0KIHNyYy9iYWNrZW5kL3V0 aWxzL2NhY2hlL3R5cGNhY2hlLmMgICAgICAgICAgICB8IDExICstLQogc3JjL2JhY2tlbmQvdXRp bHMvbWlzYy9ndWMuYyAgICAgICAgICAgICAgICAgIHwgMzAgKystLS0tLQogc3JjL2JhY2tlbmQv dXRpbHMvbW1nci9wb3J0YWxtZW0uYyAgICAgICAgICAgIHwgODUgKysrLS0tLS0tLS0tLS0tLS0t LQogc3JjL3BsL3BscGVybC9wbHBlcmwuYyAgICAgICAgICAgICAgICAgICAgICAgIHwgIDYgKy0K IDM3IGZpbGVzIGNoYW5nZWQsIDE0MSBpbnNlcnRpb25zKCspLCA1MjYgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvY29udHJpYi9kYmxpbmsvZGJsaW5rLmMgYi9jb250cmliL2RibGluay9kYmxp bmsuYwppbmRleCAxOTI0MThkZjRhZi4uNDNkNjFjOWNmNjUgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIv ZGJsaW5rL2RibGluay5jCisrKyBiL2NvbnRyaWIvZGJsaW5rL2RibGluay5jCkBAIC0xMjc1LDE0 ICsxMjc1LDExIEBAIFBHX0ZVTkNUSU9OX0lORk9fVjEoZGJsaW5rX2dldF9jb25uZWN0aW9ucyk7 CiBEYXR1bQogZGJsaW5rX2dldF9jb25uZWN0aW9ucyhQR19GVU5DVElPTl9BUkdTKQogewotCUhB U0hfU0VRX1NUQVRVUyBzdGF0dXM7Ci0JcmVtb3RlQ29ubkhhc2hFbnQgKmhlbnRyeTsKIAlBcnJh eUJ1aWxkU3RhdGUgKmFzdGF0ZSA9IE5VTEw7CiAKIAlpZiAocmVtb3RlQ29ubkhhc2gpCiAJewot CQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIHJlbW90ZUNvbm5IYXNoKTsKLQkJd2hpbGUgKChoZW50 cnkgPSAocmVtb3RlQ29ubkhhc2hFbnQgKikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBO VUxMKQorCQlmb3JlYWNoX2hhc2gocmVtb3RlQ29ubkhhc2hFbnQsIGhlbnRyeSwgcmVtb3RlQ29u bkhhc2gpCiAJCXsKIAkJCS8qIGlnbm9yZSBpdCBpZiBpdCdzIG5vdCBhbiBvcGVuIGNvbm5lY3Rp b24gKi8KIAkJCWlmIChoZW50cnktPnJjb25uLmNvbm4gPT0gTlVMTCkKZGlmZiAtLWdpdCBhL2Nv bnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3BnX3N0YXRfc3RhdGVtZW50cy5jIGIvY29udHJpYi9w Z19zdGF0X3N0YXRlbWVudHMvcGdfc3RhdF9zdGF0ZW1lbnRzLmMKaW5kZXggNDcyMjdmODU3MjEu LjQwMjhhMjI5NTNlIDEwMDY0NAotLS0gYS9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9wZ19z dGF0X3N0YXRlbWVudHMuYworKysgYi9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9wZ19zdGF0 X3N0YXRlbWVudHMuYwpAQCAtNzQxLDkgKzc0MSw3IEBAIHBnc3Nfc2htZW1fc2h1dGRvd24oaW50 IGNvZGUsIERhdHVtIGFyZykKIAlGSUxFCSAgICpmaWxlOwogCWNoYXIJICAgKnFidWZmZXIgPSBO VUxMOwogCVNpemUJCXFidWZmZXJfc2l6ZSA9IDA7Ci0JSEFTSF9TRVFfU1RBVFVTIGhhc2hfc2Vx OwogCWludDMyCQludW1fZW50cmllczsKLQlwZ3NzRW50cnkgICplbnRyeTsKIAogCS8qIERvbid0 IHRyeSB0byBkdW1wIGR1cmluZyBhIGNyYXNoLiAqLwogCWlmIChjb2RlKQpAQCAtNzc3LDggKzc3 NSw3IEBAIHBnc3Nfc2htZW1fc2h1dGRvd24oaW50IGNvZGUsIERhdHVtIGFyZykKIAkgKiBXaGVu IHNlcmlhbGl6aW5nIHRvIGRpc2ssIHdlIHN0b3JlIHF1ZXJ5IHRleHRzIGltbWVkaWF0ZWx5IGFm dGVyIHRoZWlyCiAJICogZW50cnkgZGF0YS4gIEFueSBvcnBoYW5lZCBxdWVyeSB0ZXh0cyBhcmUg dGhlcmVieSBleGNsdWRlZC4KIAkgKi8KLQloYXNoX3NlcV9pbml0KCZoYXNoX3NlcSwgcGdzc19o YXNoKTsKLQl3aGlsZSAoKGVudHJ5ID0gaGFzaF9zZXFfc2VhcmNoKCZoYXNoX3NlcSkpICE9IE5V TEwpCisJZm9yZWFjaF9oYXNoKHBnc3NFbnRyeSwgZW50cnksIHBnc3NfaGFzaCkKIAl7CiAJCWlu dAkJCWxlbiA9IGVudHJ5LT5xdWVyeV9sZW47CiAJCWNoYXIJICAgKnFzdHIgPSBxdGV4dF9mZXRj aChlbnRyeS0+cXVlcnlfb2Zmc2V0LCBsZW4sCkBAIC03OTAsOCArNzg3LDggQEAgcGdzc19zaG1l bV9zaHV0ZG93bihpbnQgY29kZSwgRGF0dW0gYXJnKQogCQlpZiAoZndyaXRlKGVudHJ5LCBzaXpl b2YocGdzc0VudHJ5KSwgMSwgZmlsZSkgIT0gMSB8fAogCQkJZndyaXRlKHFzdHIsIDEsIGxlbiAr IDEsIGZpbGUpICE9IGxlbiArIDEpCiAJCXsKLQkJCS8qIG5vdGU6IHdlIGFzc3VtZSBoYXNoX3Nl cV90ZXJtIHdvbid0IGNoYW5nZSBlcnJubyAqLwotCQkJaGFzaF9zZXFfdGVybSgmaGFzaF9zZXEp OworCQkJLyogbm90ZTogd2UgYXNzdW1lIGZvcmVhY2hfaGFzaF90ZXJtIHdvbid0IGNoYW5nZSBl cnJubyAqLworCQkJZm9yZWFjaF9oYXNoX3Rlcm0oZW50cnkpOwogCQkJZ290byBlcnJvcjsKIAkJ fQogCX0KQEAgLTE2OTUsOCArMTY5Miw2IEBAIHBnX3N0YXRfc3RhdGVtZW50c19pbnRlcm5hbChG dW5jdGlvbkNhbGxJbmZvIGZjaW5mbywKIAlTaXplCQlxYnVmZmVyX3NpemUgPSAwOwogCVNpemUJ CWV4dGVudCA9IDA7CiAJaW50CQkJZ2NfY291bnQgPSAwOwotCUhBU0hfU0VRX1NUQVRVUyBoYXNo X3NlcTsKLQlwZ3NzRW50cnkgICplbnRyeTsKIAogCS8qCiAJICogU3VwZXJ1c2VycyBvciByb2xl cyB3aXRoIHRoZSBwcml2aWxlZ2VzIG9mIHBnX3JlYWRfYWxsX3N0YXRzIG1lbWJlcnMKQEAgLTE4 MjUsOCArMTgyMCw3IEBAIHBnX3N0YXRfc3RhdGVtZW50c19pbnRlcm5hbChGdW5jdGlvbkNhbGxJ bmZvIGZjaW5mbywKIAkJfQogCX0KIAotCWhhc2hfc2VxX2luaXQoJmhhc2hfc2VxLCBwZ3NzX2hh c2gpOwotCXdoaWxlICgoZW50cnkgPSBoYXNoX3NlcV9zZWFyY2goJmhhc2hfc2VxKSkgIT0gTlVM TCkKKwlmb3JlYWNoX2hhc2gocGdzc0VudHJ5LCBlbnRyeSwgcGdzc19oYXNoKQogCXsKIAkJRGF0 dW0JCXZhbHVlc1tQR19TVEFUX1NUQVRFTUVOVFNfQ09MU107CiAJCWJvb2wJCW51bGxzW1BHX1NU QVRfU1RBVEVNRU5UU19DT0xTXTsKQEAgLTIxNzAsOSArMjE2NCw3IEBAIGVudHJ5X2NtcChjb25z dCB2b2lkICpsaHMsIGNvbnN0IHZvaWQgKnJocykKIHN0YXRpYyB2b2lkCiBlbnRyeV9kZWFsbG9j KHZvaWQpCiB7Ci0JSEFTSF9TRVFfU1RBVFVTIGhhc2hfc2VxOwogCXBnc3NFbnRyeSAqKmVudHJp ZXM7Ci0JcGdzc0VudHJ5ICAqZW50cnk7CiAJaW50CQkJbnZpY3RpbXM7CiAJaW50CQkJaTsKIAlT aXplCQl0b3R0ZXh0bGVuOwpAQCAtMjE5Niw4ICsyMTg4LDcgQEAgZW50cnlfZGVhbGxvYyh2b2lk KQogCXRvdHRleHRsZW4gPSAwOwogCW52YWxpZHRleHRzID0gMDsKIAotCWhhc2hfc2VxX2luaXQo Jmhhc2hfc2VxLCBwZ3NzX2hhc2gpOwotCXdoaWxlICgoZW50cnkgPSBoYXNoX3NlcV9zZWFyY2go Jmhhc2hfc2VxKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2gocGdzc0VudHJ5LCBlbnRyeSwgcGdz c19oYXNoKQogCXsKIAkJZW50cmllc1tpKytdID0gZW50cnk7CiAJCS8qICJTdGlja3kiIGVudHJp ZXMgZ2V0IGEgZGlmZmVyZW50IHVzYWdlIGRlY2F5IHJhdGUuICovCkBAIC0yNTA5LDggKzI1MDAs NiBAQCBnY19xdGV4dHModm9pZCkKIAljaGFyCSAgICpxYnVmZmVyOwogCVNpemUJCXFidWZmZXJf c2l6ZTsKIAlGSUxFCSAgICpxZmlsZSA9IE5VTEw7Ci0JSEFTSF9TRVFfU1RBVFVTIGhhc2hfc2Vx OwotCXBnc3NFbnRyeSAgKmVudHJ5OwogCVNpemUJCWV4dGVudDsKIAlpbnQJCQluZW50cmllczsK IApAQCAtMjU1Miw4ICsyNTQxLDcgQEAgZ2NfcXRleHRzKHZvaWQpCiAJZXh0ZW50ID0gMDsKIAlu ZW50cmllcyA9IDA7CiAKLQloYXNoX3NlcV9pbml0KCZoYXNoX3NlcSwgcGdzc19oYXNoKTsKLQl3 aGlsZSAoKGVudHJ5ID0gaGFzaF9zZXFfc2VhcmNoKCZoYXNoX3NlcSkpICE9IE5VTEwpCisJZm9y ZWFjaF9oYXNoKHBnc3NFbnRyeSwgZW50cnksIHBnc3NfaGFzaCkKIAl7CiAJCWludAkJCXF1ZXJ5 X2xlbiA9IGVudHJ5LT5xdWVyeV9sZW47CiAJCWNoYXIJICAgKnFyeSA9IHF0ZXh0X2ZldGNoKGVu dHJ5LT5xdWVyeV9vZmZzZXQsCkBAIC0yNTc2LDcgKzI1NjQsNyBAQCBnY19xdGV4dHModm9pZCkK IAkJCQkJKGVycmNvZGVfZm9yX2ZpbGVfYWNjZXNzKCksCiAJCQkJCSBlcnJtc2coImNvdWxkIG5v dCB3cml0ZSBmaWxlIFwiJXNcIjogJW0iLAogCQkJCQkJCVBHU1NfVEVYVF9GSUxFKSkpOwotCQkJ aGFzaF9zZXFfdGVybSgmaGFzaF9zZXEpOworCQkJZm9yZWFjaF9oYXNoX3Rlcm0oZW50cnkpOwog CQkJZ290byBnY19mYWlsOwogCQl9CiAKQEAgLTI2NDMsOCArMjYzMSw3IEBAIGdjX2ZhaWw6CiAJ ICogU2luY2UgdGhlIGNvbnRlbnRzIG9mIHRoZSBleHRlcm5hbCBmaWxlIGFyZSBub3cgdW5jZXJ0 YWluLCBtYXJrIGFsbAogCSAqIGhhc2h0YWJsZSBlbnRyaWVzIGFzIGhhdmluZyBpbnZhbGlkIHRl eHRzLgogCSAqLwotCWhhc2hfc2VxX2luaXQoJmhhc2hfc2VxLCBwZ3NzX2hhc2gpOwotCXdoaWxl ICgoZW50cnkgPSBoYXNoX3NlcV9zZWFyY2goJmhhc2hfc2VxKSkgIT0gTlVMTCkKKwlmb3JlYWNo X2hhc2gocGdzc0VudHJ5LCBlbnRyeSwgcGdzc19oYXNoKQogCXsKIAkJZW50cnktPnF1ZXJ5X29m ZnNldCA9IDA7CiAJCWVudHJ5LT5xdWVyeV9sZW4gPSAtMTsKQEAgLTI3MDgsOCArMjY5NSw2IEBA IGlmIChlKSB7IFwKIHN0YXRpYyBUaW1lc3RhbXBUegogZW50cnlfcmVzZXQoT2lkIHVzZXJpZCwg T2lkIGRiaWQsIGludDY0IHF1ZXJ5aWQsIGJvb2wgbWlubWF4X29ubHkpCiB7Ci0JSEFTSF9TRVFf U1RBVFVTIGhhc2hfc2VxOwotCXBnc3NFbnRyeSAgKmVudHJ5OwogCUZJTEUJICAgKnFmaWxlOwog CWludDY0CQludW1fZW50cmllczsKIAlpbnQ2NAkJbnVtX3JlbW92ZSA9IDA7CkBAIC0yNzI5LDYg KzI3MTQsOCBAQCBlbnRyeV9yZXNldChPaWQgdXNlcmlkLCBPaWQgZGJpZCwgaW50NjQgcXVlcnlp ZCwgYm9vbCBtaW5tYXhfb25seSkKIAlpZiAodXNlcmlkICE9IDAgJiYgZGJpZCAhPSAwICYmIHF1 ZXJ5aWQgIT0gSU5UNjRDT05TVCgwKSkKIAl7CiAJCS8qIElmIGFsbCB0aGUgcGFyYW1ldGVycyBh cmUgYXZhaWxhYmxlLCB1c2UgdGhlIGZhc3QgcGF0aC4gKi8KKwkJcGdzc0VudHJ5ICAqZW50cnk7 CisKIAkJbWVtc2V0KCZrZXksIDAsIHNpemVvZihwZ3NzSGFzaEtleSkpOwogCQlrZXkudXNlcmlk ID0gdXNlcmlkOwogCQlrZXkuZGJpZCA9IGRiaWQ7CkBAIC0yNzUyLDggKzI3MzksNyBAQCBlbnRy eV9yZXNldChPaWQgdXNlcmlkLCBPaWQgZGJpZCwgaW50NjQgcXVlcnlpZCwgYm9vbCBtaW5tYXhf b25seSkKIAllbHNlIGlmICh1c2VyaWQgIT0gMCB8fCBkYmlkICE9IDAgfHwgcXVlcnlpZCAhPSBJ TlQ2NENPTlNUKDApKQogCXsKIAkJLyogUmVzZXQgZW50cmllcyBjb3JyZXNwb25kaW5nIHRvIHZh bGlkIHBhcmFtZXRlcnMuICovCi0JCWhhc2hfc2VxX2luaXQoJmhhc2hfc2VxLCBwZ3NzX2hhc2gp OwotCQl3aGlsZSAoKGVudHJ5ID0gaGFzaF9zZXFfc2VhcmNoKCZoYXNoX3NlcSkpICE9IE5VTEwp CisJCWZvcmVhY2hfaGFzaChwZ3NzRW50cnksIGVudHJ5LCBwZ3NzX2hhc2gpCiAJCXsKIAkJCWlm ICgoIXVzZXJpZCB8fCBlbnRyeS0+a2V5LnVzZXJpZCA9PSB1c2VyaWQpICYmCiAJCQkJKCFkYmlk IHx8IGVudHJ5LT5rZXkuZGJpZCA9PSBkYmlkKSAmJgpAQCAtMjc2Niw4ICsyNzUyLDcgQEAgZW50 cnlfcmVzZXQoT2lkIHVzZXJpZCwgT2lkIGRiaWQsIGludDY0IHF1ZXJ5aWQsIGJvb2wgbWlubWF4 X29ubHkpCiAJZWxzZQogCXsKIAkJLyogUmVzZXQgYWxsIGVudHJpZXMuICovCi0JCWhhc2hfc2Vx X2luaXQoJmhhc2hfc2VxLCBwZ3NzX2hhc2gpOwotCQl3aGlsZSAoKGVudHJ5ID0gaGFzaF9zZXFf c2VhcmNoKCZoYXNoX3NlcSkpICE9IE5VTEwpCisJCWZvcmVhY2hfaGFzaChwZ3NzRW50cnksIGVu dHJ5LCBwZ3NzX2hhc2gpCiAJCXsKIAkJCVNJTkdMRV9FTlRSWV9SRVNFVChlbnRyeSk7CiAJCX0K ZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfdHJnbS90cmdtX3JlZ2V4cC5jIGIvY29udHJpYi9wZ190 cmdtL3RyZ21fcmVnZXhwLmMKaW5kZXggZWNkNGQ2Nzc5NDguLjY3ZTg2OTgxNDc2IDEwMDY0NAot LS0gYS9jb250cmliL3BnX3RyZ20vdHJnbV9yZWdleHAuYworKysgYi9jb250cmliL3BnX3RyZ20v dHJnbV9yZWdleHAuYwpAQCAtMTQ0OSwxMCArMTQ0OSw4IEBAIHByZWZpeENvbnRhaW5zKFRyZ21Q cmVmaXggKnByZWZpeDEsIFRyZ21QcmVmaXggKnByZWZpeDIpCiBzdGF0aWMgYm9vbAogc2VsZWN0 Q29sb3JUcmlncmFtcyhUcmdtTkZBICp0cmdtTkZBKQogewotCUhBU0hfU0VRX1NUQVRVUyBzY2Fu X3N0YXR1czsKIAlpbnQJCQlhcmNzQ291bnQgPSB0cmdtTkZBLT5hcmNzQ291bnQsCiAJCQkJaTsK LQlUcmdtU3RhdGUgICpzdGF0ZTsKIAlDb2xvclRyZ21JbmZvICpjb2xvclRyZ21zOwogCWludDY0 CQl0b3RhbFRyZ21Db3VudDsKIAlmbG9hdDQJCXRvdGFsVHJnbVBlbmFsdHk7CkBAIC0xNDYzLDgg KzE0NjEsNyBAQCBzZWxlY3RDb2xvclRyaWdyYW1zKFRyZ21ORkEgKnRyZ21ORkEpCiAJdHJnbU5G QS0+Y29sb3JUcmdtcyA9IGNvbG9yVHJnbXM7CiAKIAlpID0gMDsKLQloYXNoX3NlcV9pbml0KCZz Y2FuX3N0YXR1cywgdHJnbU5GQS0+c3RhdGVzKTsKLQl3aGlsZSAoKHN0YXRlID0gKFRyZ21TdGF0 ZSAqKSBoYXNoX3NlcV9zZWFyY2goJnNjYW5fc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hh c2goVHJnbVN0YXRlLCBzdGF0ZSwgdHJnbU5GQS0+c3RhdGVzKQogCXsKIAkJTGlzdENlbGwgICAq Y2VsbDsKIApAQCAtMTkyNiw4ICsxOTIzLDYgQEAgcGFja0dyYXBoKFRyZ21ORkEgKnRyZ21ORkEs IE1lbW9yeUNvbnRleHQgcmNvbnRleHQpCiAJaW50CQkJc251bWJlciA9IDIsCiAJCQkJYXJjSW5k ZXgsCiAJCQkJYXJjc0NvdW50OwotCUhBU0hfU0VRX1NUQVRVUyBzY2FuX3N0YXR1czsKLQlUcmdt U3RhdGUgICpzdGF0ZTsKIAlUcmdtUGFja0FyY0luZm8gKmFyY3M7CiAJVHJnbVBhY2tlZEFyYyAq cGFja2VkQXJjczsKIAlUcmdtUGFja2VkR3JhcGggKnJlc3VsdDsKQEAgLTE5MzUsOCArMTkzMCw3 IEBAIHBhY2tHcmFwaChUcmdtTkZBICp0cmdtTkZBLCBNZW1vcnlDb250ZXh0IHJjb250ZXh0KQog CQkJCWo7CiAKIAkvKiBFbnVtZXJhdGUgc3Vydml2aW5nIHN0YXRlcywgZ2l2aW5nIGluaXQgYW5k IGZpbiByZXNlcnZlZCBudW1iZXJzICovCi0JaGFzaF9zZXFfaW5pdCgmc2Nhbl9zdGF0dXMsIHRy Z21ORkEtPnN0YXRlcyk7Ci0Jd2hpbGUgKChzdGF0ZSA9IChUcmdtU3RhdGUgKikgaGFzaF9zZXFf c2VhcmNoKCZzY2FuX3N0YXR1cykpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKFRyZ21TdGF0ZSwg c3RhdGUsIHRyZ21ORkEtPnN0YXRlcykKIAl7CiAJCXdoaWxlIChzdGF0ZS0+cGFyZW50KQogCQkJ c3RhdGUgPSBzdGF0ZS0+cGFyZW50OwpAQCAtMTk1OCw4ICsxOTUyLDcgQEAgcGFja0dyYXBoKFRy Z21ORkEgKnRyZ21ORkEsIE1lbW9yeUNvbnRleHQgcmNvbnRleHQpCiAJLyogQ29sbGVjdCBhcnJh eSBvZiBhbGwgYXJjcyAqLwogCWFyY3MgPSBwYWxsb2NfYXJyYXkoVHJnbVBhY2tBcmNJbmZvLCB0 cmdtTkZBLT5hcmNzQ291bnQpOwogCWFyY0luZGV4ID0gMDsKLQloYXNoX3NlcV9pbml0KCZzY2Fu X3N0YXR1cywgdHJnbU5GQS0+c3RhdGVzKTsKLQl3aGlsZSAoKHN0YXRlID0gKFRyZ21TdGF0ZSAq KSBoYXNoX3NlcV9zZWFyY2goJnNjYW5fc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2go VHJnbVN0YXRlLCBzdGF0ZSwgdHJnbU5GQS0+c3RhdGVzKQogCXsKIAkJVHJnbVN0YXRlICAqc291 cmNlID0gc3RhdGU7CiAJCUxpc3RDZWxsICAgKmNlbGw7CkBAIC0yMjAyLDE2ICsyMTk1LDEzIEBA IHN0YXRpYyB2b2lkCiBwcmludFRyZ21ORkEoVHJnbU5GQSAqdHJnbU5GQSkKIHsKIAlTdHJpbmdJ bmZvRGF0YSBidWY7Ci0JSEFTSF9TRVFfU1RBVFVTIHNjYW5fc3RhdHVzOwotCVRyZ21TdGF0ZSAg KnN0YXRlOwogCVRyZ21TdGF0ZSAgKmluaXRzdGF0ZSA9IE5VTEw7CiAKIAlpbml0U3RyaW5nSW5m bygmYnVmKTsKIAogCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmJ1ZiwgIlxuZGlncmFwaCB0cmFu c2Zvcm1lZE5GQSB7XG4iKTsKIAotCWhhc2hfc2VxX2luaXQoJnNjYW5fc3RhdHVzLCB0cmdtTkZB LT5zdGF0ZXMpOwotCXdoaWxlICgoc3RhdGUgPSAoVHJnbVN0YXRlICopIGhhc2hfc2VxX3NlYXJj aCgmc2Nhbl9zdGF0dXMpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChUcmdtU3RhdGUsIHN0YXRl LCB0cmdtTkZBLT5zdGF0ZXMpCiAJewogCQlMaXN0Q2VsbCAgICpjZWxsOwogCmRpZmYgLS1naXQg YS9jb250cmliL3Bvc3RncmVzX2Zkdy9jb25uZWN0aW9uLmMgYi9jb250cmliL3Bvc3RncmVzX2Zk dy9jb25uZWN0aW9uLmMKaW5kZXggNWM3N2M5ZWNkZTUuLjk5MDI1NjdmMWZiIDEwMDY0NAotLS0g YS9jb250cmliL3Bvc3RncmVzX2Zkdy9jb25uZWN0aW9uLmMKKysrIGIvY29udHJpYi9wb3N0Z3Jl c19mZHcvY29ubmVjdGlvbi5jCkBAIC0xMDQ0LDggKzEwNDQsNiBAQCBwZ2Zkd19yZXBvcnRfaW50 ZXJuYWwoaW50IGVsZXZlbCwgUEdyZXN1bHQgKnJlcywgUEdjb25uICpjb25uLAogc3RhdGljIHZv aWQKIHBnZmR3X3hhY3RfY2FsbGJhY2soWGFjdEV2ZW50IGV2ZW50LCB2b2lkICphcmcpCiB7Ci0J SEFTSF9TRVFfU1RBVFVTIHNjYW47Ci0JQ29ubkNhY2hlRW50cnkgKmVudHJ5OwogCUxpc3QJICAg KnBlbmRpbmdfZW50cmllcyA9IE5JTDsKIAlMaXN0CSAgICpjYW5jZWxfcmVxdWVzdGVkID0gTklM OwogCkBAIC0xMDU3LDggKzEwNTUsNyBAQCBwZ2Zkd194YWN0X2NhbGxiYWNrKFhhY3RFdmVudCBl dmVudCwgdm9pZCAqYXJnKQogCSAqIFNjYW4gYWxsIGNvbm5lY3Rpb24gY2FjaGUgZW50cmllcyB0 byBmaW5kIG9wZW4gcmVtb3RlIHRyYW5zYWN0aW9ucywgYW5kCiAJICogY2xvc2UgdGhlbS4KIAkg Ki8KLQloYXNoX3NlcV9pbml0KCZzY2FuLCBDb25uZWN0aW9uSGFzaCk7Ci0Jd2hpbGUgKChlbnRy eSA9IChDb25uQ2FjaGVFbnRyeSAqKSBoYXNoX3NlcV9zZWFyY2goJnNjYW4pKSkKKwlmb3JlYWNo X2hhc2goQ29ubkNhY2hlRW50cnksIGVudHJ5LCBDb25uZWN0aW9uSGFzaCkKIAl7CiAJCVBHcmVz dWx0ICAgKnJlczsKIApAQCAtMTE5NSw4ICsxMTkyLDYgQEAgc3RhdGljIHZvaWQKIHBnZmR3X3N1 YnhhY3RfY2FsbGJhY2soU3ViWGFjdEV2ZW50IGV2ZW50LCBTdWJUcmFuc2FjdGlvbklkIG15U3Vi aWQsCiAJCQkJCSAgIFN1YlRyYW5zYWN0aW9uSWQgcGFyZW50U3ViaWQsIHZvaWQgKmFyZykKIHsK LQlIQVNIX1NFUV9TVEFUVVMgc2NhbjsKLQlDb25uQ2FjaGVFbnRyeSAqZW50cnk7CiAJaW50CQkJ Y3VybGV2ZWw7CiAJTGlzdAkgICAqcGVuZGluZ19lbnRyaWVzID0gTklMOwogCUxpc3QJICAgKmNh bmNlbF9yZXF1ZXN0ZWQgPSBOSUw7CkBAIC0xMjE1LDggKzEyMTAsNyBAQCBwZ2Zkd19zdWJ4YWN0 X2NhbGxiYWNrKFN1YlhhY3RFdmVudCBldmVudCwgU3ViVHJhbnNhY3Rpb25JZCBteVN1YmlkLAog CSAqIG9mIHRoZSBjdXJyZW50IGxldmVsLCBhbmQgY2xvc2UgdGhlbS4KIAkgKi8KIAljdXJsZXZl bCA9IEdldEN1cnJlbnRUcmFuc2FjdGlvbk5lc3RMZXZlbCgpOwotCWhhc2hfc2VxX2luaXQoJnNj YW4sIENvbm5lY3Rpb25IYXNoKTsKLQl3aGlsZSAoKGVudHJ5ID0gKENvbm5DYWNoZUVudHJ5ICop IGhhc2hfc2VxX3NlYXJjaCgmc2NhbikpKQorCWZvcmVhY2hfaGFzaChDb25uQ2FjaGVFbnRyeSwg ZW50cnksIENvbm5lY3Rpb25IYXNoKQogCXsKIAkJY2hhcgkJc3FsWzEwMF07CiAKQEAgLTEzMDcs MTQgKzEzMDEsMTAgQEAgcGdmZHdfc3VieGFjdF9jYWxsYmFjayhTdWJYYWN0RXZlbnQgZXZlbnQs IFN1YlRyYW5zYWN0aW9uSWQgbXlTdWJpZCwKIHN0YXRpYyB2b2lkCiBwZ2Zkd19pbnZhbF9jYWxs YmFjayhEYXR1bSBhcmcsIGludCBjYWNoZWlkLCB1aW50MzIgaGFzaHZhbHVlKQogewotCUhBU0hf U0VRX1NUQVRVUyBzY2FuOwotCUNvbm5DYWNoZUVudHJ5ICplbnRyeTsKLQogCUFzc2VydChjYWNo ZWlkID09IEZPUkVJR05TRVJWRVJPSUQgfHwgY2FjaGVpZCA9PSBVU0VSTUFQUElOR09JRCk7CiAK IAkvKiBDb25uZWN0aW9uSGFzaCBtdXN0IGV4aXN0IGFscmVhZHksIGlmIHdlJ3JlIHJlZ2lzdGVy ZWQgKi8KLQloYXNoX3NlcV9pbml0KCZzY2FuLCBDb25uZWN0aW9uSGFzaCk7Ci0Jd2hpbGUgKChl bnRyeSA9IChDb25uQ2FjaGVFbnRyeSAqKSBoYXNoX3NlcV9zZWFyY2goJnNjYW4pKSkKKwlmb3Jl YWNoX2hhc2goQ29ubkNhY2hlRW50cnksIGVudHJ5LCBDb25uZWN0aW9uSGFzaCkKIAl7CiAJCS8q IElnbm9yZSBpbnZhbGlkIGVudHJpZXMgKi8KIAkJaWYgKGVudHJ5LT5jb25uID09IE5VTEwpCkBA IC0yMTY1LDggKzIxNTUsNiBAQCBwb3N0Z3Jlc19mZHdfZ2V0X2Nvbm5lY3Rpb25zX2ludGVybmFs KEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvLAogCQkJCQkJCQkJICBlbnVtIHBnZmR3VmVyc2lvbiBh cGlfdmVyc2lvbikKIHsKIAlSZXR1cm5TZXRJbmZvICpyc2luZm8gPSAoUmV0dXJuU2V0SW5mbyAq KSBmY2luZm8tPnJlc3VsdGluZm87Ci0JSEFTSF9TRVFfU1RBVFVTIHNjYW47Ci0JQ29ubkNhY2hl RW50cnkgKmVudHJ5OwogCiAJSW5pdE1hdGVyaWFsaXplZFNSRihmY2luZm8sIDApOwogCkBAIC0y MTg5LDggKzIxNzcsNyBAQCBwb3N0Z3Jlc19mZHdfZ2V0X2Nvbm5lY3Rpb25zX2ludGVybmFsKEZ1 bmN0aW9uQ2FsbEluZm8gZmNpbmZvLAogCQkJZWxvZyhFUlJPUiwgImluY29ycmVjdCBudW1iZXIg b2Ygb3V0cHV0IGFyZ3VtZW50cyIpOwogCX0KIAotCWhhc2hfc2VxX2luaXQoJnNjYW4sIENvbm5l Y3Rpb25IYXNoKTsKLQl3aGlsZSAoKGVudHJ5ID0gKENvbm5DYWNoZUVudHJ5ICopIGhhc2hfc2Vx X3NlYXJjaCgmc2NhbikpKQorCWZvcmVhY2hfaGFzaChDb25uQ2FjaGVFbnRyeSwgZW50cnksIENv bm5lY3Rpb25IYXNoKQogCXsKIAkJRm9yZWlnblNlcnZlciAqc2VydmVyOwogCQlEYXR1bQkJdmFs dWVzW1BPU1RHUkVTX0ZEV19HRVRfQ09OTkVDVElPTlNfQ09MU10gPSB7MH07CkBAIC0yMzkyLDgg KzIzNzksNiBAQCBwb3N0Z3Jlc19mZHdfZGlzY29ubmVjdF9hbGwoUEdfRlVOQ1RJT05fQVJHUykK IHN0YXRpYyBib29sCiBkaXNjb25uZWN0X2NhY2hlZF9jb25uZWN0aW9ucyhPaWQgc2VydmVyaWQp CiB7Ci0JSEFTSF9TRVFfU1RBVFVTIHNjYW47Ci0JQ29ubkNhY2hlRW50cnkgKmVudHJ5OwogCWJv b2wJCWFsbCA9ICFPaWRJc1ZhbGlkKHNlcnZlcmlkKTsKIAlib29sCQlyZXN1bHQgPSBmYWxzZTsK IApAQCAtMjQwNCw4ICsyMzg5LDcgQEAgZGlzY29ubmVjdF9jYWNoZWRfY29ubmVjdGlvbnMoT2lk IHNlcnZlcmlkKQogCWlmICghQ29ubmVjdGlvbkhhc2gpCiAJCXJldHVybiBmYWxzZTsKIAotCWhh c2hfc2VxX2luaXQoJnNjYW4sIENvbm5lY3Rpb25IYXNoKTsKLQl3aGlsZSAoKGVudHJ5ID0gKENv bm5DYWNoZUVudHJ5ICopIGhhc2hfc2VxX3NlYXJjaCgmc2NhbikpKQorCWZvcmVhY2hfaGFzaChD b25uQ2FjaGVFbnRyeSwgZW50cnksIENvbm5lY3Rpb25IYXNoKQogCXsKIAkJLyogSWdub3JlIGNh Y2hlIGVudHJ5IGlmIG5vIG9wZW4gY29ubmVjdGlvbiByaWdodCBub3cuICovCiAJCWlmICghZW50 cnktPmNvbm4pCmRpZmYgLS1naXQgYS9jb250cmliL3Bvc3RncmVzX2Zkdy9zaGlwcGFibGUuYyBi L2NvbnRyaWIvcG9zdGdyZXNfZmR3L3NoaXBwYWJsZS5jCmluZGV4IGVjMTg1MjQ5MGUwLi5jMWQ2 MGU1ODJhNiAxMDA2NDQKLS0tIGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvc2hpcHBhYmxlLmMKKysr IGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvc2hpcHBhYmxlLmMKQEAgLTY1LDE3ICs2NSwxMyBAQCB0 eXBlZGVmIHN0cnVjdAogc3RhdGljIHZvaWQKIEludmFsaWRhdGVTaGlwcGFibGVDYWNoZUNhbGxi YWNrKERhdHVtIGFyZywgaW50IGNhY2hlaWQsIHVpbnQzMiBoYXNodmFsdWUpCiB7Ci0JSEFTSF9T RVFfU1RBVFVTIHN0YXR1czsKLQlTaGlwcGFibGVDYWNoZUVudHJ5ICplbnRyeTsKLQogCS8qCiAJ ICogSW4gcHJpbmNpcGxlIHdlIGNvdWxkIGZsdXNoIG9ubHkgY2FjaGUgZW50cmllcyByZWxhdGlu ZyB0byB0aGUKIAkgKiBwZ19mb3JlaWduX3NlcnZlciBlbnRyeSBiZWluZyBvdXRkYXRlZDsgYnV0 IHRoYXQgd291bGQgYmUgbW9yZQogCSAqIGNvbXBsaWNhdGVkLCBhbmQgaXQncyBwcm9iYWJseSBu b3Qgd29ydGggdGhlIHRyb3VibGUuICBTbyBmb3Igbm93LCBqdXN0CiAJICogZmx1c2ggYWxsIGVu dHJpZXMuCiAJICovCi0JaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBTaGlwcGFibGVDYWNoZUhhc2gp OwotCXdoaWxlICgoZW50cnkgPSAoU2hpcHBhYmxlQ2FjaGVFbnRyeSAqKSBoYXNoX3NlcV9zZWFy Y2goJnN0YXR1cykpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKFNoaXBwYWJsZUNhY2hlRW50cnks IGVudHJ5LCBTaGlwcGFibGVDYWNoZUhhc2gpCiAJewogCQlpZiAoaGFzaF9zZWFyY2goU2hpcHBh YmxlQ2FjaGVIYXNoLAogCQkJCQkJJmVudHJ5LT5rZXksCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC9yZXdyaXRlaGVhcC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcmV3 cml0ZWhlYXAuYwppbmRleCAzNjg3NzRiNTI3MC4uMDc5YWZmODhlMjkgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Jld3JpdGVoZWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvcmV3cml0ZWhlYXAuYwpAQCAtMjkwLDE2ICsyOTAsMTEgQEAgYmVnaW5faGVhcF9y ZXdyaXRlKFJlbGF0aW9uIG9sZF9oZWFwLCBSZWxhdGlvbiBuZXdfaGVhcCwgVHJhbnNhY3Rpb25J ZCBvbGRlc3RfeG0KIHZvaWQKIGVuZF9oZWFwX3Jld3JpdGUoUmV3cml0ZVN0YXRlIHN0YXRlKQog ewotCUhBU0hfU0VRX1NUQVRVUyBzZXFfc3RhdHVzOwotCVVucmVzb2x2ZWRUdXAgdW5yZXNvbHZl ZDsKLQogCS8qCiAJICogV3JpdGUgYW55IHJlbWFpbmluZyB0dXBsZXMgaW4gdGhlIFVucmVzb2x2 ZWRUdXBzIHRhYmxlLiBJZiB3ZSBoYXZlIGFueQogCSAqIGxlZnQsIHRoZXkgc2hvdWxkIGluIGZh Y3QgYmUgZGVhZCwgYnV0IGxldCdzIGVyciBvbiB0aGUgc2FmZSBzaWRlLgogCSAqLwotCWhhc2hf c2VxX2luaXQoJnNlcV9zdGF0dXMsIHN0YXRlLT5yc191bnJlc29sdmVkX3R1cHMpOwotCi0Jd2hp bGUgKCh1bnJlc29sdmVkID0gaGFzaF9zZXFfc2VhcmNoKCZzZXFfc3RhdHVzKSkgIT0gTlVMTCkK Kwlmb3JlYWNoX2hhc2goVW5yZXNvbHZlZFR1cERhdGEsIHVucmVzb2x2ZWQsIHN0YXRlLT5yc191 bnJlc29sdmVkX3R1cHMpCiAJewogCQlJdGVtUG9pbnRlclNldEludmFsaWQoJnVucmVzb2x2ZWQt PnR1cGxlLT50X2RhdGEtPnRfY3RpZCk7CiAJCXJhd19oZWFwX2luc2VydChzdGF0ZSwgdW5yZXNv bHZlZC0+dHVwbGUpOwpAQCAtNzk0LDggKzc4OSw2IEBAIGxvZ2ljYWxfYmVnaW5faGVhcF9yZXdy aXRlKFJld3JpdGVTdGF0ZSBzdGF0ZSkKIHN0YXRpYyB2b2lkCiBsb2dpY2FsX2hlYXBfcmV3cml0 ZV9mbHVzaF9tYXBwaW5ncyhSZXdyaXRlU3RhdGUgc3RhdGUpCiB7Ci0JSEFTSF9TRVFfU1RBVFVT IHNlcV9zdGF0dXM7Ci0JUmV3cml0ZU1hcHBpbmdGaWxlICpzcmM7CiAJZGxpc3RfbXV0YWJsZV9p dGVyIGl0ZXI7CiAKIAlBc3NlcnQoc3RhdGUtPnJzX2xvZ2ljYWxfcmV3cml0ZSk7CkBAIC04MDcs OCArODAwLDcgQEAgbG9naWNhbF9oZWFwX3Jld3JpdGVfZmx1c2hfbWFwcGluZ3MoUmV3cml0ZVN0 YXRlIHN0YXRlKQogCWVsb2coREVCVUcxLCAiZmx1c2hpbmcgJXUgbG9naWNhbCByZXdyaXRlIG1h cHBpbmcgZW50cmllcyIsCiAJCSBzdGF0ZS0+cnNfbnVtX3Jld3JpdGVfbWFwcGluZ3MpOwogCi0J aGFzaF9zZXFfaW5pdCgmc2VxX3N0YXR1cywgc3RhdGUtPnJzX2xvZ2ljYWxfbWFwcGluZ3MpOwot CXdoaWxlICgoc3JjID0gKFJld3JpdGVNYXBwaW5nRmlsZSAqKSBoYXNoX3NlcV9zZWFyY2goJnNl cV9zdGF0dXMpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChSZXdyaXRlTWFwcGluZ0ZpbGUsIHNy Yywgc3RhdGUtPnJzX2xvZ2ljYWxfbWFwcGluZ3MpCiAJewogCQljaGFyCSAgICp3YWxkYXRhOwog CQljaGFyCSAgICp3YWxkYXRhX3N0YXJ0OwpAQCAtODkyLDkgKzg4NCw2IEBAIGxvZ2ljYWxfaGVh cF9yZXdyaXRlX2ZsdXNoX21hcHBpbmdzKFJld3JpdGVTdGF0ZSBzdGF0ZSkKIHN0YXRpYyB2b2lk CiBsb2dpY2FsX2VuZF9oZWFwX3Jld3JpdGUoUmV3cml0ZVN0YXRlIHN0YXRlKQogewotCUhBU0hf U0VRX1NUQVRVUyBzZXFfc3RhdHVzOwotCVJld3JpdGVNYXBwaW5nRmlsZSAqc3JjOwotCiAJLyog ZG9uZSwgbm8gbG9naWNhbCByZXdyaXRlIGluIHByb2dyZXNzICovCiAJaWYgKCFzdGF0ZS0+cnNf bG9naWNhbF9yZXdyaXRlKQogCQlyZXR1cm47CkBAIC05MDQsOCArODkzLDcgQEAgbG9naWNhbF9l bmRfaGVhcF9yZXdyaXRlKFJld3JpdGVTdGF0ZSBzdGF0ZSkKIAkJbG9naWNhbF9oZWFwX3Jld3Jp dGVfZmx1c2hfbWFwcGluZ3Moc3RhdGUpOwogCiAJLyogSXRlcmF0ZSBvdmVyIGFsbCBtYXBwaW5n cyB3ZSBoYXZlIHdyaXR0ZW4gYW5kIGZzeW5jIHRoZSBmaWxlcy4gKi8KLQloYXNoX3NlcV9pbml0 KCZzZXFfc3RhdHVzLCBzdGF0ZS0+cnNfbG9naWNhbF9tYXBwaW5ncyk7Ci0Jd2hpbGUgKChzcmMg PSAoUmV3cml0ZU1hcHBpbmdGaWxlICopIGhhc2hfc2VxX3NlYXJjaCgmc2VxX3N0YXR1cykpICE9 IE5VTEwpCisJZm9yZWFjaF9oYXNoKFJld3JpdGVNYXBwaW5nRmlsZSwgc3JjLCBzdGF0ZS0+cnNf bG9naWNhbF9tYXBwaW5ncykKIAl7CiAJCWlmIChGaWxlU3luYyhzcmMtPnZmZCwgV0FJVF9FVkVO VF9MT0dJQ0FMX1JFV1JJVEVfU1lOQykgIT0gMCkKIAkJCWVyZXBvcnQoZGF0YV9zeW5jX2VsZXZl bChFUlJPUiksCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ndXRp bHMuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2d1dGlscy5jCmluZGV4IGQxMWU0 MmM5NDkwLi4zYzdmYzY1YjhkNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5z YW0veGxvZ3V0aWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3V0aWxz LmMKQEAgLTE2MCwxNSArMTYwLDEwIEBAIHN0YXRpYyB2b2lkCiBmb3JnZXRfaW52YWxpZF9wYWdl cyhSZWxGaWxlTG9jYXRvciBsb2NhdG9yLCBGb3JrTnVtYmVyIGZvcmtubywKIAkJCQkJIEJsb2Nr TnVtYmVyIG1pbmJsa25vKQogewotCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7Ci0JeGxfaW52YWxp ZF9wYWdlICpoZW50cnk7Ci0KIAlpZiAoaW52YWxpZF9wYWdlX3RhYiA9PSBOVUxMKQogCQlyZXR1 cm47CQkJCQkvKiBub3RoaW5nIHRvIGRvICovCiAKLQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIGlu dmFsaWRfcGFnZV90YWIpOwotCi0Jd2hpbGUgKChoZW50cnkgPSAoeGxfaW52YWxpZF9wYWdlICop IGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goeGxfaW52 YWxpZF9wYWdlLCBoZW50cnksIGludmFsaWRfcGFnZV90YWIpCiAJewogCQlpZiAoUmVsRmlsZUxv Y2F0b3JFcXVhbHMoaGVudHJ5LT5rZXkubG9jYXRvciwgbG9jYXRvcikgJiYKIAkJCWhlbnRyeS0+ a2V5LmZvcmtubyA9PSBmb3Jrbm8gJiYKQEAgLTE5MCwxNSArMTg1LDEwIEBAIGZvcmdldF9pbnZh bGlkX3BhZ2VzKFJlbEZpbGVMb2NhdG9yIGxvY2F0b3IsIEZvcmtOdW1iZXIgZm9ya25vLAogc3Rh dGljIHZvaWQKIGZvcmdldF9pbnZhbGlkX3BhZ2VzX2RiKE9pZCBkYmlkKQogewotCUhBU0hfU0VR X1NUQVRVUyBzdGF0dXM7Ci0JeGxfaW52YWxpZF9wYWdlICpoZW50cnk7Ci0KIAlpZiAoaW52YWxp ZF9wYWdlX3RhYiA9PSBOVUxMKQogCQlyZXR1cm47CQkJCQkvKiBub3RoaW5nIHRvIGRvICovCiAK LQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIGludmFsaWRfcGFnZV90YWIpOwotCi0Jd2hpbGUgKCho ZW50cnkgPSAoeGxfaW52YWxpZF9wYWdlICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0g TlVMTCkKKwlmb3JlYWNoX2hhc2goeGxfaW52YWxpZF9wYWdlLCBoZW50cnksIGludmFsaWRfcGFn ZV90YWIpCiAJewogCQlpZiAoaGVudHJ5LT5rZXkubG9jYXRvci5kYk9pZCA9PSBkYmlkKQogCQl7 CkBAIC0yMjgsMjAgKzIxOCwxNiBAQCBYTG9nSGF2ZUludmFsaWRQYWdlcyh2b2lkKQogdm9pZAog WExvZ0NoZWNrSW52YWxpZFBhZ2VzKHZvaWQpCiB7Ci0JSEFTSF9TRVFfU1RBVFVTIHN0YXR1czsK LQl4bF9pbnZhbGlkX3BhZ2UgKmhlbnRyeTsKIAlib29sCQlmb3VuZG9uZSA9IGZhbHNlOwogCiAJ aWYgKGludmFsaWRfcGFnZV90YWIgPT0gTlVMTCkKIAkJcmV0dXJuOwkJCQkJLyogbm90aGluZyB0 byBkbyAqLwogCi0JaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBpbnZhbGlkX3BhZ2VfdGFiKTsKLQog CS8qCiAJICogT3VyIHN0cmF0ZWd5IGlzIHRvIGVtaXQgV0FSTklORyBtZXNzYWdlcyBmb3IgYWxs IHJlbWFpbmluZyBlbnRyaWVzIGFuZAogCSAqIG9ubHkgUEFOSUMgYWZ0ZXIgd2UndmUgZHVtcGVk IGFsbCB0aGUgYXZhaWxhYmxlIGluZm8uCiAJICovCi0Jd2hpbGUgKChoZW50cnkgPSAoeGxfaW52 YWxpZF9wYWdlICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNo X2hhc2goeGxfaW52YWxpZF9wYWdlLCBoZW50cnksIGludmFsaWRfcGFnZV90YWIpCiAJewogCQly ZXBvcnRfaW52YWxpZF9wYWdlKFdBUk5JTkcsIGhlbnRyeS0+a2V5LmxvY2F0b3IsIGhlbnRyeS0+ a2V5LmZvcmtubywKIAkJCQkJCQloZW50cnktPmtleS5ibGtubywgaGVudHJ5LT5wcmVzZW50KTsK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfZW51bS5jIGIvc3JjL2JhY2tlbmQv Y2F0YWxvZy9wZ19lbnVtLmMKaW5kZXggODZjOGJhZGE1NTcuLmJlNGE4ZWNkOWU2IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX2VudW0uYworKysgYi9zcmMvYmFja2VuZC9jYXRh bG9nL3BnX2VudW0uYwpAQCAtODM4LDEyICs4MzgsMTAgQEAgU2VyaWFsaXplVW5jb21taXR0ZWRF bnVtcyh2b2lkICpzcGFjZSwgU2l6ZSBzaXplKQogCS8qIFdyaXRlIG91dCBhbGwgdGhlIE9JRHMg ZnJvbSB0aGUgdHlwZXMgaGFzaCB0YWJsZSwgaWYgdGhlcmUgaXMgb25lLiAqLwogCWlmICh1bmNv bW1pdHRlZF9lbnVtX3R5cGVzKQogCXsKLQkJSEFTSF9TRVFfU1RBVFVTIHN0YXR1czsKLQkJT2lk CQkgICAqdmFsdWU7Ci0KLQkJaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCB1bmNvbW1pdHRlZF9lbnVt X3R5cGVzKTsKLQkJd2hpbGUgKCh2YWx1ZSA9IChPaWQgKikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0 dXMpKSkKKwkJZm9yZWFjaF9oYXNoKE9pZCwgdmFsdWUsIHVuY29tbWl0dGVkX2VudW1fdHlwZXMp CisJCXsKIAkJCSpzZXJpYWxpemVkKysgPSAqdmFsdWU7CisJCX0KIAl9CiAKIAkvKiBXcml0ZSBv dXQgdGhlIHRlcm1pbmF0b3IuICovCkBAIC04NTIsMTIgKzg1MCwxMCBAQCBTZXJpYWxpemVVbmNv bW1pdHRlZEVudW1zKHZvaWQgKnNwYWNlLCBTaXplIHNpemUpCiAJLyogV3JpdGUgb3V0IGFsbCB0 aGUgT0lEcyBmcm9tIHRoZSB2YWx1ZXMgaGFzaCB0YWJsZSwgaWYgdGhlcmUgaXMgb25lLiAqLwog CWlmICh1bmNvbW1pdHRlZF9lbnVtX3ZhbHVlcykKIAl7Ci0JCUhBU0hfU0VRX1NUQVRVUyBzdGF0 dXM7Ci0JCU9pZAkJICAgKnZhbHVlOwotCi0JCWhhc2hfc2VxX2luaXQoJnN0YXR1cywgdW5jb21t aXR0ZWRfZW51bV92YWx1ZXMpOwotCQl3aGlsZSAoKHZhbHVlID0gKE9pZCAqKSBoYXNoX3NlcV9z ZWFyY2goJnN0YXR1cykpKQorCQlmb3JlYWNoX2hhc2goT2lkLCB2YWx1ZSwgdW5jb21taXR0ZWRf ZW51bV92YWx1ZXMpCisJCXsKIAkJCSpzZXJpYWxpemVkKysgPSAqdmFsdWU7CisJCX0KIAl9CiAK IAkvKiBXcml0ZSBvdXQgdGhlIHRlcm1pbmF0b3IuICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9jYXRhbG9nL3N0b3JhZ2UuYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3RvcmFnZS5jCmluZGV4 IGRiM2UwODMxOWI1Li4yN2QyMWI1NTZiZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxv Zy9zdG9yYWdlLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zdG9yYWdlLmMKQEAgLTU5NCwx MCArNTk0LDcgQEAgdm9pZAogU2VyaWFsaXplUGVuZGluZ1N5bmNzKFNpemUgbWF4U2l6ZSwgY2hh ciAqc3RhcnRBZGRyZXNzKQogewogCUhUQUIJICAgKnRtcGhhc2g7Ci0JSEFTSF9TRVFfU1RBVFVT IHNjYW47Ci0JUGVuZGluZ1JlbFN5bmMgKnN5bmM7CiAJUGVuZGluZ1JlbERlbGV0ZSAqZGVsZXRl OwotCVJlbEZpbGVMb2NhdG9yICpzcmM7CiAJUmVsRmlsZUxvY2F0b3IgKmRlc3QgPSAoUmVsRmls ZUxvY2F0b3IgKikgc3RhcnRBZGRyZXNzOwogCiAJaWYgKCFwZW5kaW5nU3luY0hhc2gpCkBAIC02 MDgsOSArNjA1LDEwIEBAIFNlcmlhbGl6ZVBlbmRpbmdTeW5jcyhTaXplIG1heFNpemUsIGNoYXIg KnN0YXJ0QWRkcmVzcykKIAkJCQkJCSAgIGhhc2hfZ2V0X251bV9lbnRyaWVzKHBlbmRpbmdTeW5j SGFzaCkpOwogCiAJLyogY29sbGVjdCBhbGwgcmxvY2F0b3IgZnJvbSBwZW5kaW5nIHN5bmNzICov Ci0JaGFzaF9zZXFfaW5pdCgmc2NhbiwgcGVuZGluZ1N5bmNIYXNoKTsKLQl3aGlsZSAoKHN5bmMg PSAoUGVuZGluZ1JlbFN5bmMgKikgaGFzaF9zZXFfc2VhcmNoKCZzY2FuKSkpCisJZm9yZWFjaF9o YXNoKFBlbmRpbmdSZWxTeW5jLCBzeW5jLCBwZW5kaW5nU3luY0hhc2gpCisJewogCQkodm9pZCkg aGFzaF9zZWFyY2godG1waGFzaCwgJnN5bmMtPnJsb2NhdG9yLCBIQVNIX0VOVEVSLCBOVUxMKTsK Kwl9CiAKIAkvKiByZW1vdmUgZGVsZXRlZCBybm9kZXMgKi8KIAlmb3IgKGRlbGV0ZSA9IHBlbmRp bmdEZWxldGVzOyBkZWxldGUgIT0gTlVMTDsgZGVsZXRlID0gZGVsZXRlLT5uZXh0KQpAQCAtNjE4 LDkgKzYxNiwxMCBAQCBTZXJpYWxpemVQZW5kaW5nU3luY3MoU2l6ZSBtYXhTaXplLCBjaGFyICpz dGFydEFkZHJlc3MpCiAJCQkodm9pZCkgaGFzaF9zZWFyY2godG1waGFzaCwgJmRlbGV0ZS0+cmxv Y2F0b3IsCiAJCQkJCQkJICAgSEFTSF9SRU1PVkUsIE5VTEwpOwogCi0JaGFzaF9zZXFfaW5pdCgm c2NhbiwgdG1waGFzaCk7Ci0Jd2hpbGUgKChzcmMgPSAoUmVsRmlsZUxvY2F0b3IgKikgaGFzaF9z ZXFfc2VhcmNoKCZzY2FuKSkpCisJZm9yZWFjaF9oYXNoKFJlbEZpbGVMb2NhdG9yLCBzcmMsIHRt cGhhc2gpCisJewogCQkqZGVzdCsrID0gKnNyYzsKKwl9CiAKIAloYXNoX2Rlc3Ryb3kodG1waGFz aCk7CiAKQEAgLTczMyw4ICs3MzIsNiBAQCBzbWdyRG9QZW5kaW5nU3luY3MoYm9vbCBpc0NvbW1p dCwgYm9vbCBpc1BhcmFsbGVsV29ya2VyKQogCWludAkJCW5yZWxzID0gMCwKIAkJCQltYXhyZWxz ID0gMDsKIAlTTWdyUmVsYXRpb24gKnNyZWxzID0gTlVMTDsKLQlIQVNIX1NFUV9TVEFUVVMgc2Nh bjsKLQlQZW5kaW5nUmVsU3luYyAqcGVuZGluZ3N5bmM7CiAKIAlBc3NlcnQoR2V0Q3VycmVudFRy YW5zYWN0aW9uTmVzdExldmVsKCkgPT0gMSk7CiAKQEAgLTc2Myw4ICs3NjAsNyBAQCBzbWdyRG9Q ZW5kaW5nU3luY3MoYm9vbCBpc0NvbW1pdCwgYm9vbCBpc1BhcmFsbGVsV29ya2VyKQogCQkJKHZv aWQpIGhhc2hfc2VhcmNoKHBlbmRpbmdTeW5jSGFzaCwgJnBlbmRpbmctPnJsb2NhdG9yLAogCQkJ CQkJCSAgIEhBU0hfUkVNT1ZFLCBOVUxMKTsKIAotCWhhc2hfc2VxX2luaXQoJnNjYW4sIHBlbmRp bmdTeW5jSGFzaCk7Ci0Jd2hpbGUgKChwZW5kaW5nc3luYyA9IChQZW5kaW5nUmVsU3luYyAqKSBo YXNoX3NlcV9zZWFyY2goJnNjYW4pKSkKKwlmb3JlYWNoX2hhc2goUGVuZGluZ1JlbFN5bmMsIHBl bmRpbmdzeW5jLCBwZW5kaW5nU3luY0hhc2gpCiAJewogCQlGb3JrTnVtYmVyCWZvcms7CiAJCUJs b2NrTnVtYmVyIG5ibG9ja3NbTUFYX0ZPUktOVU0gKyAxXTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3ByZXBhcmUuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYwpp bmRleCBlYjFhN2VjZmViYy4uNGFkOWMxMGE3ZjggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3ByZXBhcmUuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMKQEAg LTUzMywxNiArNTMzLDEyIEBAIERyb3BQcmVwYXJlZFN0YXRlbWVudChjb25zdCBjaGFyICpzdG10 X25hbWUsIGJvb2wgc2hvd0Vycm9yKQogdm9pZAogRHJvcEFsbFByZXBhcmVkU3RhdGVtZW50cyh2 b2lkKQogewotCUhBU0hfU0VRX1NUQVRVUyBzZXE7Ci0JUHJlcGFyZWRTdGF0ZW1lbnQgKmVudHJ5 OwotCiAJLyogbm90aGluZyBjYWNoZWQgKi8KIAlpZiAoIXByZXBhcmVkX3F1ZXJpZXMpCiAJCXJl dHVybjsKIAogCS8qIHdhbGsgb3ZlciBjYWNoZSAqLwotCWhhc2hfc2VxX2luaXQoJnNlcSwgcHJl cGFyZWRfcXVlcmllcyk7Ci0Jd2hpbGUgKChlbnRyeSA9IGhhc2hfc2VxX3NlYXJjaCgmc2VxKSkg IT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goUHJlcGFyZWRTdGF0ZW1lbnQsIGVudHJ5LCBwcmVwYXJl ZF9xdWVyaWVzKQogCXsKIAkJLyogUmVsZWFzZSB0aGUgcGxhbmNhY2hlIGVudHJ5ICovCiAJCURy b3BDYWNoZWRQbGFuKGVudHJ5LT5wbGFuc291cmNlKTsKQEAgLTY4OSwxMSArNjg1LDcgQEAgcGdf cHJlcGFyZWRfc3RhdGVtZW50KFBHX0ZVTkNUSU9OX0FSR1MpCiAJLyogaGFzaCB0YWJsZSBtaWdo dCBiZSB1bmluaXRpYWxpemVkICovCiAJaWYgKHByZXBhcmVkX3F1ZXJpZXMpCiAJewotCQlIQVNI X1NFUV9TVEFUVVMgaGFzaF9zZXE7Ci0JCVByZXBhcmVkU3RhdGVtZW50ICpwcmVwX3N0bXQ7Ci0K LQkJaGFzaF9zZXFfaW5pdCgmaGFzaF9zZXEsIHByZXBhcmVkX3F1ZXJpZXMpOwotCQl3aGlsZSAo KHByZXBfc3RtdCA9IGhhc2hfc2VxX3NlYXJjaCgmaGFzaF9zZXEpKSAhPSBOVUxMKQorCQlmb3Jl YWNoX2hhc2goUHJlcGFyZWRTdGF0ZW1lbnQsIHByZXBfc3RtdCwgcHJlcGFyZWRfcXVlcmllcykK IAkJewogCQkJVHVwbGVEZXNjCXJlc3VsdF9kZXNjOwogCQkJRGF0dW0JCXZhbHVlc1s4XTsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvdGFibGVjbWRzLmMKaW5kZXggNDBhMzk5ODllYWEuLjc3MjI1MDdjODM4IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYworKysgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy90YWJsZWNtZHMuYwpAQCAtMjI0MiwxNCArMjI0Miw5IEBAIEV4ZWN1dGVUcnVu Y2F0ZUd1dHMoTGlzdCAqZXhwbGljaXRfcmVscywKIAkvKiBOb3cgZ28gdGhyb3VnaCB0aGUgaGFz aCB0YWJsZSwgYW5kIHRydW5jYXRlIGZvcmVpZ24gdGFibGVzICovCiAJaWYgKGZ0X2h0YWIpCiAJ ewotCQlGb3JlaWduVHJ1bmNhdGVJbmZvICpmdF9pbmZvOwotCQlIQVNIX1NFUV9TVEFUVVMgc2Vx OwotCi0JCWhhc2hfc2VxX2luaXQoJnNlcSwgZnRfaHRhYik7Ci0KIAkJUEdfVFJZKCk7CiAJCXsK LQkJCXdoaWxlICgoZnRfaW5mbyA9IGhhc2hfc2VxX3NlYXJjaCgmc2VxKSkgIT0gTlVMTCkKKwkJ CWZvcmVhY2hfaGFzaChGb3JlaWduVHJ1bmNhdGVJbmZvLCBmdF9pbmZvLCBmdF9odGFiKQogCQkJ ewogCQkJCUZkd1JvdXRpbmUgKnJvdXRpbmUgPSBHZXRGZHdSb3V0aW5lQnlTZXJ2ZXJJZChmdF9p bmZvLT5zZXJ2ZXJpZCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGls L3ByZWR0ZXN0LmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wcmVkdGVzdC5jCmluZGV4 IDNiZjVlN2FjOGJiLi40YWUxNDU0ODk0YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1p emVyL3V0aWwvcHJlZHRlc3QuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wcmVk dGVzdC5jCkBAIC0yMzQyLDE1ICsyMzQyLDEwIEBAIGdldF9idHJlZV90ZXN0X29wKE9pZCBwcmVk X29wLCBPaWQgY2xhdXNlX29wLCBib29sIHJlZnV0ZV9pdCkKIHN0YXRpYyB2b2lkCiBJbnZhbGlk YXRlT3ByUHJvb2ZDYWNoZUNhbGxCYWNrKERhdHVtIGFyZywgaW50IGNhY2hlaWQsIHVpbnQzMiBo YXNodmFsdWUpCiB7Ci0JSEFTSF9TRVFfU1RBVFVTIHN0YXR1czsKLQlPcHJQcm9vZkNhY2hlRW50 cnkgKmhlbnRyeTsKLQogCUFzc2VydChPcHJQcm9vZkNhY2hlSGFzaCAhPSBOVUxMKTsKIAogCS8q IEN1cnJlbnRseSB3ZSBqdXN0IHJlc2V0IGFsbCBlbnRyaWVzOyBoYXJkIHRvIGJlIHNtYXJ0ZXIg Li4uICovCi0JaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBPcHJQcm9vZkNhY2hlSGFzaCk7Ci0KLQl3 aGlsZSAoKGhlbnRyeSA9IChPcHJQcm9vZkNhY2hlRW50cnkgKikgaGFzaF9zZXFfc2VhcmNoKCZz dGF0dXMpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChPcHJQcm9vZkNhY2hlRW50cnksIGhlbnRy eSwgT3ByUHJvb2ZDYWNoZUhhc2gpCiAJewogCQloZW50cnktPmhhdmVfaW1wbGljID0gZmFsc2U7 CiAJCWhlbnRyeS0+aGF2ZV9yZWZ1dGUgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3BhcnNlci9wYXJzZV9vcGVyLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vfb3Blci5jCmlu ZGV4IGQzNmU3YWQzMDMwLi5iMjVhYjBlNmI3YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFy c2VyL3BhcnNlX29wZXIuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vfb3Blci5jCkBA IC0xMDc2LDE1ICsxMDc2LDEwIEBAIG1ha2Vfb3Blcl9jYWNoZV9lbnRyeShPcHJDYWNoZUtleSAq a2V5LCBPaWQgb3ByX29pZCkKIHN0YXRpYyB2b2lkCiBJbnZhbGlkYXRlT3ByQ2FjaGVDYWxsQmFj ayhEYXR1bSBhcmcsIGludCBjYWNoZWlkLCB1aW50MzIgaGFzaHZhbHVlKQogewotCUhBU0hfU0VR X1NUQVRVUyBzdGF0dXM7Ci0JT3ByQ2FjaGVFbnRyeSAqaGVudHJ5OwotCiAJQXNzZXJ0KE9wckNh Y2hlSGFzaCAhPSBOVUxMKTsKIAogCS8qIEN1cnJlbnRseSB3ZSBqdXN0IGZsdXNoIGFsbCBlbnRy aWVzOyBoYXJkIHRvIGJlIHNtYXJ0ZXIgLi4uICovCi0JaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBP cHJDYWNoZUhhc2gpOwotCi0Jd2hpbGUgKChoZW50cnkgPSAoT3ByQ2FjaGVFbnRyeSAqKSBoYXNo X3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKE9wckNhY2hlRW50 cnksIGhlbnRyeSwgT3ByQ2FjaGVIYXNoKQogCXsKIAkJaWYgKGhhc2hfc2VhcmNoKE9wckNhY2hl SGFzaCwKIAkJCQkJCSZoZW50cnktPmtleSwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnRp dGlvbmluZy9wYXJ0ZGVzYy5jIGIvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRkZXNjLmMK aW5kZXggZGIyNmU0YTgyYjYuLjNlY2M5Mzg3MjNiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9w YXJ0aXRpb25pbmcvcGFydGRlc2MuYworKysgYi9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFy dGRlc2MuYwpAQCAtNDc4LDExICs0NzgsNyBAQCBQYXJ0aXRpb25EaXJlY3RvcnlMb29rdXAoUGFy dGl0aW9uRGlyZWN0b3J5IHBkaXIsIFJlbGF0aW9uIHJlbCkKIHZvaWQKIERlc3Ryb3lQYXJ0aXRp b25EaXJlY3RvcnkoUGFydGl0aW9uRGlyZWN0b3J5IHBkaXIpCiB7Ci0JSEFTSF9TRVFfU1RBVFVT IHN0YXR1czsKLQlQYXJ0aXRpb25EaXJlY3RvcnlFbnRyeSAqcGRlOwotCi0JaGFzaF9zZXFfaW5p dCgmc3RhdHVzLCBwZGlyLT5wZGlyX2hhc2gpOwotCXdoaWxlICgocGRlID0gaGFzaF9zZXFfc2Vh cmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChQYXJ0aXRpb25EaXJlY3RvcnlF bnRyeSwgcGRlLCBwZGlyLT5wZGlyX2hhc2gpCiAJCVJlbGF0aW9uRGVjcmVtZW50UmVmZXJlbmNl Q291bnQocGRlLT5yZWwpOwogfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVy L2F1dG92YWN1dW0uYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5jCmluZGV4 IGY4Zjg1OTUxNzQxLi42ODYwMzFlZGYyYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1h c3Rlci9hdXRvdmFjdXVtLmMKKysrIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVt LmMKQEAgLTEwMjEsOCArMTAyMSw2IEBAIHJlYnVpbGRfZGF0YWJhc2VfbGlzdChPaWQgbmV3ZGIp CiAJCVRpbWVzdGFtcFR6IGN1cnJlbnRfdGltZTsKIAkJaW50CQkJbWlsbGlzX2luY3JlbWVudDsK IAkJYXZsX2RiYXNlICAqZGJhcnk7Ci0JCWF2bF9kYmFzZSAgKmRiOwotCQlIQVNIX1NFUV9TVEFU VVMgc2VxOwogCQlpbnQJCQlpOwogCiAJCS8qIHB1dCBhbGwgdGhlIGhhc2ggZWxlbWVudHMgaW50 byBhbiBhcnJheSAqLwpAQCAtMTAzMyw4ICsxMDMxLDcgQEAgcmVidWlsZF9kYXRhYmFzZV9saXN0 KE9pZCBuZXdkYikKICNlbmRpZgogCiAJCWkgPSAwOwotCQloYXNoX3NlcV9pbml0KCZzZXEsIGRi aGFzaCk7Ci0JCXdoaWxlICgoZGIgPSBoYXNoX3NlcV9zZWFyY2goJnNlcSkpICE9IE5VTEwpCisJ CWZvcmVhY2hfaGFzaChhdmxfZGJhc2UsIGRiLCBkYmhhc2gpCiAJCQltZW1jcHkoJihkYmFyeVtp KytdKSwgZGIsIHNpemVvZihhdmxfZGJhc2UpKTsKIAogCQkvKiBzb3J0IHRoZSBhcnJheSAqLwpA QCAtMTA1OSw3ICsxMDU2LDcgQEAgcmVidWlsZF9kYXRhYmFzZV9saXN0KE9pZCBuZXdkYikKIAkJ ICovCiAJCWZvciAoaSA9IDA7IGkgPCBuZWxlbXM7IGkrKykKIAkJewotCQkJZGIgPSAmKGRiYXJ5 W2ldKTsKKwkJCWF2bF9kYmFzZSAgKmRiID0gJihkYmFyeVtpXSk7CiAKIAkJCWN1cnJlbnRfdGlt ZSA9IFRpbWVzdGFtcFR6UGx1c01pbGxpc2Vjb25kcyhjdXJyZW50X3RpbWUsCiAJCQkJCQkJCQkJ CQkJICAgbWlsbGlzX2luY3JlbWVudCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL3JlbGF0aW9uLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L3JlbGF0aW9uLmMKaW5kZXggMDk5NTAxYWQ1OTMuLjQ3NzNkYjljNzlmIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3JlbGF0aW9uLmMKKysrIGIvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC9yZWxhdGlvbi5jCkBAIC02MywyNSArNjMsMTkgQEAgc3Rh dGljIE9pZAlGaW5kTG9naWNhbFJlcExvY2FsSW5kZXgoUmVsYXRpb24gbG9jYWxyZWwsIExvZ2lj YWxSZXBSZWxhdGlvbiAqcmVtb3QKIHN0YXRpYyB2b2lkCiBsb2dpY2FscmVwX3JlbG1hcF9pbnZh bGlkYXRlX2NiKERhdHVtIGFyZywgT2lkIHJlbG9pZCkKIHsKLQlMb2dpY2FsUmVwUmVsTWFwRW50 cnkgKmVudHJ5OwotCiAJLyogSnVzdCB0byBiZSBzdXJlLiAqLwogCWlmIChMb2dpY2FsUmVwUmVs TWFwID09IE5VTEwpCiAJCXJldHVybjsKIAogCWlmIChyZWxvaWQgIT0gSW52YWxpZE9pZCkKIAl7 Ci0JCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7Ci0KLQkJaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBM b2dpY2FsUmVwUmVsTWFwKTsKLQogCQkvKiBUT0RPLCB1c2UgaW52ZXJzZSBsb29rdXAgaGFzaHRh YmxlPyAqLwotCQl3aGlsZSAoKGVudHJ5ID0gKExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqKSBoYXNo X3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJCWZvcmVhY2hfaGFzaChMb2dpY2FsUmVw UmVsTWFwRW50cnksIGVudHJ5LCBMb2dpY2FsUmVwUmVsTWFwKQogCQl7CiAJCQlpZiAoZW50cnkt PmxvY2FscmVsb2lkID09IHJlbG9pZCkKIAkJCXsKIAkJCQllbnRyeS0+bG9jYWxyZWx2YWxpZCA9 IGZhbHNlOwotCQkJCWhhc2hfc2VxX3Rlcm0oJnN0YXR1cyk7CisJCQkJZm9yZWFjaF9oYXNoX3Rl cm0oZW50cnkpOwogCQkJCWJyZWFrOwogCQkJfQogCQl9CkBAIC04OSwxMSArODMsNyBAQCBsb2dp Y2FscmVwX3JlbG1hcF9pbnZhbGlkYXRlX2NiKERhdHVtIGFyZywgT2lkIHJlbG9pZCkKIAllbHNl CiAJewogCQkvKiBpbnZhbGlkYXRlIGFsbCBjYWNoZSBlbnRyaWVzICovCi0JCUhBU0hfU0VRX1NU QVRVUyBzdGF0dXM7Ci0KLQkJaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBMb2dpY2FsUmVwUmVsTWFw KTsKLQotCQl3aGlsZSAoKGVudHJ5ID0gKExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqKSBoYXNoX3Nl cV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJCWZvcmVhY2hfaGFzaChMb2dpY2FsUmVwUmVs TWFwRW50cnksIGVudHJ5LCBMb2dpY2FsUmVwUmVsTWFwKQogCQkJZW50cnktPmxvY2FscmVsdmFs aWQgPSBmYWxzZTsKIAl9CiB9CkBAIC01MzAsMjUgKzUyMCwxOSBAQCBsb2dpY2FscmVwX3JlbF9j bG9zZShMb2dpY2FsUmVwUmVsTWFwRW50cnkgKnJlbCwgTE9DS01PREUgbG9ja21vZGUpCiBzdGF0 aWMgdm9pZAogbG9naWNhbHJlcF9wYXJ0bWFwX2ludmFsaWRhdGVfY2IoRGF0dW0gYXJnLCBPaWQg cmVsb2lkKQogewotCUxvZ2ljYWxSZXBQYXJ0TWFwRW50cnkgKmVudHJ5OwotCiAJLyogSnVzdCB0 byBiZSBzdXJlLiAqLwogCWlmIChMb2dpY2FsUmVwUGFydE1hcCA9PSBOVUxMKQogCQlyZXR1cm47 CiAKIAlpZiAocmVsb2lkICE9IEludmFsaWRPaWQpCiAJewotCQlIQVNIX1NFUV9TVEFUVVMgc3Rh dHVzOwotCi0JCWhhc2hfc2VxX2luaXQoJnN0YXR1cywgTG9naWNhbFJlcFBhcnRNYXApOwotCiAJ CS8qIFRPRE8sIHVzZSBpbnZlcnNlIGxvb2t1cCBoYXNodGFibGU/ICovCi0JCXdoaWxlICgoZW50 cnkgPSAoTG9naWNhbFJlcFBhcnRNYXBFbnRyeSAqKSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykp ICE9IE5VTEwpCisJCWZvcmVhY2hfaGFzaChMb2dpY2FsUmVwUGFydE1hcEVudHJ5LCBlbnRyeSwg TG9naWNhbFJlcFBhcnRNYXApCiAJCXsKIAkJCWlmIChlbnRyeS0+cmVsbWFwZW50cnkubG9jYWxy ZWxvaWQgPT0gcmVsb2lkKQogCQkJewogCQkJCWVudHJ5LT5yZWxtYXBlbnRyeS5sb2NhbHJlbHZh bGlkID0gZmFsc2U7Ci0JCQkJaGFzaF9zZXFfdGVybSgmc3RhdHVzKTsKKwkJCQlmb3JlYWNoX2hh c2hfdGVybShlbnRyeSk7CiAJCQkJYnJlYWs7CiAJCQl9CiAJCX0KQEAgLTU1NiwxMSArNTQwLDcg QEAgbG9naWNhbHJlcF9wYXJ0bWFwX2ludmFsaWRhdGVfY2IoRGF0dW0gYXJnLCBPaWQgcmVsb2lk KQogCWVsc2UKIAl7CiAJCS8qIGludmFsaWRhdGUgYWxsIGNhY2hlIGVudHJpZXMgKi8KLQkJSEFT SF9TRVFfU1RBVFVTIHN0YXR1czsKLQotCQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIExvZ2ljYWxS ZXBQYXJ0TWFwKTsKLQotCQl3aGlsZSAoKGVudHJ5ID0gKExvZ2ljYWxSZXBQYXJ0TWFwRW50cnkg KikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorCQlmb3JlYWNoX2hhc2goTG9n aWNhbFJlcFBhcnRNYXBFbnRyeSwgZW50cnksIExvZ2ljYWxSZXBQYXJ0TWFwKQogCQkJZW50cnkt PnJlbG1hcGVudHJ5LmxvY2FscmVsdmFsaWQgPSBmYWxzZTsKIAl9CiB9CkBAIC01NzgsMTUgKzU1 OCwxMiBAQCBsb2dpY2FscmVwX3BhcnRtYXBfaW52YWxpZGF0ZV9jYihEYXR1bSBhcmcsIE9pZCBy ZWxvaWQpCiB2b2lkCiBsb2dpY2FscmVwX3BhcnRtYXBfcmVzZXRfcmVsbWFwKExvZ2ljYWxSZXBS ZWxhdGlvbiAqcmVtb3RlcmVsKQogewotCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7Ci0JTG9naWNh bFJlcFBhcnRNYXBFbnRyeSAqcGFydF9lbnRyeTsKIAlMb2dpY2FsUmVwUmVsTWFwRW50cnkgKmVu dHJ5OwogCiAJaWYgKExvZ2ljYWxSZXBQYXJ0TWFwID09IE5VTEwpCiAJCXJldHVybjsKIAotCWhh c2hfc2VxX2luaXQoJnN0YXR1cywgTG9naWNhbFJlcFBhcnRNYXApOwotCXdoaWxlICgocGFydF9l bnRyeSA9IChMb2dpY2FsUmVwUGFydE1hcEVudHJ5ICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVz KSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goTG9naWNhbFJlcFBhcnRNYXBFbnRyeSwgcGFydF9l bnRyeSwgTG9naWNhbFJlcFBhcnRNYXApCiAJewogCQllbnRyeSA9ICZwYXJ0X2VudHJ5LT5yZWxt YXBlbnRyeTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9y ZW9yZGVyYnVmZmVyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Jlb3JkZXJi dWZmZXIuYwppbmRleCBmYTkzYTFiYmRlMS4uYWRkMzE1MTQ0NDQgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jCisrKyBiL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jCkBAIC01MjQ3LDE1ICs1MjQ3 LDExIEBAIFJlb3JkZXJCdWZmZXJUb2FzdFJlcGxhY2UoUmVvcmRlckJ1ZmZlciAqcmIsIFJlb3Jk ZXJCdWZmZXJUWE4gKnR4biwKIHN0YXRpYyB2b2lkCiBSZW9yZGVyQnVmZmVyVG9hc3RSZXNldChS ZW9yZGVyQnVmZmVyICpyYiwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuKQogewotCUhBU0hfU0VRX1NU QVRVUyBoc3RhdDsKLQlSZW9yZGVyQnVmZmVyVG9hc3RFbnQgKmVudDsKLQogCWlmICh0eG4tPnRv YXN0X2hhc2ggPT0gTlVMTCkKIAkJcmV0dXJuOwogCiAJLyogc2VxdWVudGlhbGx5IHdhbGsgb3Zl ciB0aGUgaGFzaCBhbmQgZnJlZSBldmVyeXRoaW5nICovCi0JaGFzaF9zZXFfaW5pdCgmaHN0YXQs IHR4bi0+dG9hc3RfaGFzaCk7Ci0Jd2hpbGUgKChlbnQgPSAoUmVvcmRlckJ1ZmZlclRvYXN0RW50 ICopIGhhc2hfc2VxX3NlYXJjaCgmaHN0YXQpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChSZW9y ZGVyQnVmZmVyVG9hc3RFbnQsIGVudCwgdHhuLT50b2FzdF9oYXNoKQogCXsKIAkJZGxpc3RfbXV0 YWJsZV9pdGVyIGl0OwogCkBAIC01MzE4LDExICs1MzE0LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUmV3 cml0ZU1hcHBpbmdGaWxlCiBzdGF0aWMgdm9pZAogRGlzcGxheU1hcHBpbmcoSFRBQiAqdHVwbGVj aWRfZGF0YSkKIHsKLQlIQVNIX1NFUV9TVEFUVVMgaHN0YXQ7Ci0JUmVvcmRlckJ1ZmZlclR1cGxl Q2lkRW50ICplbnQ7Ci0KLQloYXNoX3NlcV9pbml0KCZoc3RhdCwgdHVwbGVjaWRfZGF0YSk7Ci0J d2hpbGUgKChlbnQgPSAoUmVvcmRlckJ1ZmZlclR1cGxlQ2lkRW50ICopIGhhc2hfc2VxX3NlYXJj aCgmaHN0YXQpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChSZW9yZGVyQnVmZmVyVHVwbGVDaWRF bnQsIGVudCwgdHVwbGVjaWRfZGF0YSkKIAl7CiAJCWVsb2coREVCVUczLCAibWFwcGluZzogbm9k ZTogJXUvJXUvJXUgdGlkOiAldS8ldSBjbWluOiAldSwgY21heDogJXUiLAogCQkJIGVudC0+a2V5 LnJsb2NhdG9yLmRiT2lkLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdv dXRwdXQvcGdvdXRwdXQuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0 cHV0LmMKaW5kZXggMGRjZmJmZGQ2MDkuLjUwN2E4NzNjYTFiIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jCisrKyBiL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMKQEAgLTIzNDMsMTMgKzIzNDMsOSBAQCBnZXRf cmVsX3N5bmNfZW50cnkoUEdPdXRwdXREYXRhICpkYXRhLCBSZWxhdGlvbiByZWxhdGlvbikKIHN0 YXRpYyB2b2lkCiBjbGVhbnVwX3JlbF9zeW5jX2NhY2hlKFRyYW5zYWN0aW9uSWQgeGlkLCBib29s IGlzX2NvbW1pdCkKIHsKLQlIQVNIX1NFUV9TVEFUVVMgaGFzaF9zZXE7Ci0JUmVsYXRpb25TeW5j RW50cnkgKmVudHJ5OwotCiAJQXNzZXJ0KFJlbGF0aW9uU3luY0NhY2hlICE9IE5VTEwpOwogCi0J aGFzaF9zZXFfaW5pdCgmaGFzaF9zZXEsIFJlbGF0aW9uU3luY0NhY2hlKTsKLQl3aGlsZSAoKGVu dHJ5ID0gaGFzaF9zZXFfc2VhcmNoKCZoYXNoX3NlcSkpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNo KFJlbGF0aW9uU3luY0VudHJ5LCBlbnRyeSwgUmVsYXRpb25TeW5jQ2FjaGUpCiAJewogCQkvKgog CQkgKiBXZSBjYW4gc2V0IHRoZSBzY2hlbWFfc2VudCBmbGFnIGZvciBhbiBlbnRyeSB0aGF0IGhh cyBjb21taXR0ZWQgeGlkCkBAIC0yMzc4LDggKzIzNzQsNiBAQCBjbGVhbnVwX3JlbF9zeW5jX2Nh Y2hlKFRyYW5zYWN0aW9uSWQgeGlkLCBib29sIGlzX2NvbW1pdCkKIHN0YXRpYyB2b2lkCiByZWxf c3luY19jYWNoZV9yZWxhdGlvbl9jYihEYXR1bSBhcmcsIE9pZCByZWxpZCkKIHsKLQlSZWxhdGlv blN5bmNFbnRyeSAqZW50cnk7Ci0KIAkvKgogCSAqIFdlIGNhbiBnZXQgaGVyZSBpZiB0aGUgcGx1 Z2luIHdhcyB1c2VkIGluIFNRTCBpbnRlcmZhY2UgYXMgdGhlCiAJICogUmVsYXRpb25TeW5jQ2Fj aGUgaXMgZGVzdHJveWVkIHdoZW4gdGhlIGRlY29kaW5nIGZpbmlzaGVzLCBidXQgdGhlcmUgaXMK QEAgLTI0MDIsMTggKzIzOTYsMTYgQEAgcmVsX3N5bmNfY2FjaGVfcmVsYXRpb25fY2IoRGF0dW0g YXJnLCBPaWQgcmVsaWQpCiAJCSAqIEdldHRpbmcgaW52YWxpZGF0aW9ucyBmb3IgcmVsYXRpb25z IHRoYXQgYXJlbid0IGluIHRoZSB0YWJsZSBpcwogCQkgKiBlbnRpcmVseSBub3JtYWwuICBTbyB3 ZSBkb24ndCBjYXJlIGlmIGl0J3MgZm91bmQgb3Igbm90LgogCQkgKi8KLQkJZW50cnkgPSAoUmVs YXRpb25TeW5jRW50cnkgKikgaGFzaF9zZWFyY2goUmVsYXRpb25TeW5jQ2FjaGUsICZyZWxpZCwK LQkJCQkJCQkJCQkJCSAgSEFTSF9GSU5ELCBOVUxMKTsKKwkJUmVsYXRpb25TeW5jRW50cnkgKmVu dHJ5ID0gaGFzaF9zZWFyY2goUmVsYXRpb25TeW5jQ2FjaGUsICZyZWxpZCwKKwkJCQkJCQkJCQkJ ICAgSEFTSF9GSU5ELCBOVUxMKTsKKwogCQlpZiAoZW50cnkgIT0gTlVMTCkKIAkJCWVudHJ5LT5y ZXBsaWNhdGVfdmFsaWQgPSBmYWxzZTsKIAl9CiAJZWxzZQogCXsKIAkJLyogV2hvbGUgY2FjaGUg bXVzdCBiZSBmbHVzaGVkLiAqLwotCQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCi0JCWhhc2hf c2VxX2luaXQoJnN0YXR1cywgUmVsYXRpb25TeW5jQ2FjaGUpOwotCQl3aGlsZSAoKGVudHJ5ID0g KFJlbGF0aW9uU3luY0VudHJ5ICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkK KwkJZm9yZWFjaF9oYXNoKFJlbGF0aW9uU3luY0VudHJ5LCBlbnRyeSwgUmVsYXRpb25TeW5jQ2Fj aGUpCiAJCXsKIAkJCWVudHJ5LT5yZXBsaWNhdGVfdmFsaWQgPSBmYWxzZTsKIAkJfQpAQCAtMjQy OCw5ICsyNDIwLDYgQEAgcmVsX3N5bmNfY2FjaGVfcmVsYXRpb25fY2IoRGF0dW0gYXJnLCBPaWQg cmVsaWQpCiBzdGF0aWMgdm9pZAogcmVsX3N5bmNfY2FjaGVfcHVibGljYXRpb25fY2IoRGF0dW0g YXJnLCBpbnQgY2FjaGVpZCwgdWludDMyIGhhc2h2YWx1ZSkKIHsKLQlIQVNIX1NFUV9TVEFUVVMg c3RhdHVzOwotCVJlbGF0aW9uU3luY0VudHJ5ICplbnRyeTsKLQogCS8qCiAJICogV2UgY2FuIGdl dCBoZXJlIGlmIHRoZSBwbHVnaW4gd2FzIHVzZWQgaW4gU1FMIGludGVyZmFjZSBhcyB0aGUKIAkg KiBSZWxhdGlvblN5bmNDYWNoZSBpcyBkZXN0cm95ZWQgd2hlbiB0aGUgZGVjb2RpbmcgZmluaXNo ZXMsIGJ1dCB0aGVyZSBpcwpAQCAtMjQ0Myw4ICsyNDMyLDcgQEAgcmVsX3N5bmNfY2FjaGVfcHVi bGljYXRpb25fY2IoRGF0dW0gYXJnLCBpbnQgY2FjaGVpZCwgdWludDMyIGhhc2h2YWx1ZSkKIAkg KiBXZSBoYXZlIG5vIGVhc3kgd2F5IHRvIGlkZW50aWZ5IHdoaWNoIGNhY2hlIGVudHJpZXMgdGhp cyBpbnZhbGlkYXRpb24KIAkgKiBldmVudCBtaWdodCBoYXZlIGFmZmVjdGVkLCBzbyBqdXN0IG1h cmsgdGhlbSBhbGwgaW52YWxpZC4KIAkgKi8KLQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIFJlbGF0 aW9uU3luY0NhY2hlKTsKLQl3aGlsZSAoKGVudHJ5ID0gKFJlbGF0aW9uU3luY0VudHJ5ICopIGhh c2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goUmVsYXRpb25T eW5jRW50cnksIGVudHJ5LCBSZWxhdGlvblN5bmNDYWNoZSkKIAl7CiAJCWVudHJ5LT5yZXBsaWNh dGVfdmFsaWQgPSBmYWxzZTsKIAl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2J1 ZmZlci9idWZtZ3IuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1nci5jCmluZGV4 IGE5NGNjODk2NTRlLi5lZjkxODY3NmEyNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFn ZS9idWZmZXIvYnVmbWdyLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvYnVmbWdy LmMKQEAgLTQxNTIsNyArNDE1Miw2IEBAIENoZWNrRm9yQnVmZmVyTGVha3Modm9pZCkKIHsKICNp ZmRlZiBVU0VfQVNTRVJUX0NIRUNLSU5HCiAJaW50CQkJUmVmQ291bnRFcnJvcnMgPSAwOwotCVBy aXZhdGVSZWZDb3VudEVudHJ5ICpyZXM7CiAJaW50CQkJaTsKIAljaGFyCSAgICpzOwogCkBAIC00 MTYxLDcgKzQxNjAsNyBAQCBDaGVja0ZvckJ1ZmZlckxlYWtzKHZvaWQpCiAJewogCQlpZiAoUHJp dmF0ZVJlZkNvdW50QXJyYXlLZXlzW2ldICE9IEludmFsaWRCdWZmZXIpCiAJCXsKLQkJCXJlcyA9 ICZQcml2YXRlUmVmQ291bnRBcnJheVtpXTsKKwkJCVByaXZhdGVSZWZDb3VudEVudHJ5ICpyZXMg PSAmUHJpdmF0ZVJlZkNvdW50QXJyYXlbaV07CiAKIAkJCXMgPSBEZWJ1Z1ByaW50QnVmZmVyUmVm Y291bnQocmVzLT5idWZmZXIpOwogCQkJZWxvZyhXQVJOSU5HLCAiYnVmZmVyIHJlZmNvdW50IGxl YWs6ICVzIiwgcyk7CkBAIC00MTc0LDEyICs0MTczLDkgQEAgQ2hlY2tGb3JCdWZmZXJMZWFrcyh2 b2lkKQogCS8qIGlmIG5lY2Vzc2FyeSBzZWFyY2ggdGhlIGhhc2ggKi8KIAlpZiAoUHJpdmF0ZVJl ZkNvdW50T3ZlcmZsb3dlZCkKIAl7Ci0JCUhBU0hfU0VRX1NUQVRVUyBoc3RhdDsKLQotCQloYXNo X3NlcV9pbml0KCZoc3RhdCwgUHJpdmF0ZVJlZkNvdW50SGFzaCk7Ci0JCXdoaWxlICgocmVzID0g KFByaXZhdGVSZWZDb3VudEVudHJ5ICopIGhhc2hfc2VxX3NlYXJjaCgmaHN0YXQpKSAhPSBOVUxM KQorCQlmb3JlYWNoX2hhc2goUHJpdmF0ZVJlZkNvdW50RW50cnksIGVudCwgUHJpdmF0ZVJlZkNv dW50SGFzaCkKIAkJewotCQkJcyA9IERlYnVnUHJpbnRCdWZmZXJSZWZjb3VudChyZXMtPmJ1ZmZl cik7CisJCQlzID0gRGVidWdQcmludEJ1ZmZlclJlZmNvdW50KGVudC0+YnVmZmVyKTsKIAkJCWVs b2coV0FSTklORywgImJ1ZmZlciByZWZjb3VudCBsZWFrOiAlcyIsIHMpOwogCQkJcGZyZWUocyk7 CiAJCQlSZWZDb3VudEVycm9ycysrOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9p cGMvc2htZW0uYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NobWVtLmMKaW5kZXggYjZhOGQx ZWM3NzYuLjVmZDFlMzFmMzQ2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9z aG1lbS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NobWVtLmMKQEAgLTUzOSw4ICs1 MzksNiBAQCBwZ19nZXRfc2htZW1fYWxsb2NhdGlvbnMoUEdfRlVOQ1RJT05fQVJHUykKIHsKICNk ZWZpbmUgUEdfR0VUX1NITUVNX1NJWkVTX0NPTFMgNAogCVJldHVyblNldEluZm8gKnJzaW5mbyA9 IChSZXR1cm5TZXRJbmZvICopIGZjaW5mby0+cmVzdWx0aW5mbzsKLQlIQVNIX1NFUV9TVEFUVVMg aHN0YXQ7Ci0JU2htZW1JbmRleEVudCAqZW50OwogCVNpemUJCW5hbWVkX2FsbG9jYXRlZCA9IDA7 CiAJRGF0dW0JCXZhbHVlc1tQR19HRVRfU0hNRU1fU0laRVNfQ09MU107CiAJYm9vbAkJbnVsbHNb UEdfR0VUX1NITUVNX1NJWkVTX0NPTFNdOwpAQCAtNTQ5LDExICs1NDcsOSBAQCBwZ19nZXRfc2ht ZW1fYWxsb2NhdGlvbnMoUEdfRlVOQ1RJT05fQVJHUykKIAogCUxXTG9ja0FjcXVpcmUoU2htZW1J bmRleExvY2ssIExXX1NIQVJFRCk7CiAKLQloYXNoX3NlcV9pbml0KCZoc3RhdCwgU2htZW1JbmRl eCk7Ci0KIAkvKiBvdXRwdXQgYWxsIGFsbG9jYXRlZCBlbnRyaWVzICovCiAJbWVtc2V0KG51bGxz LCAwLCBzaXplb2YobnVsbHMpKTsKLQl3aGlsZSAoKGVudCA9IChTaG1lbUluZGV4RW50ICopIGhh c2hfc2VxX3NlYXJjaCgmaHN0YXQpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChTaG1lbUluZGV4 RW50LCBlbnQsIFNobWVtSW5kZXgpCiAJewogCQl2YWx1ZXNbMF0gPSBDU3RyaW5nR2V0VGV4dERh dHVtKGVudC0+a2V5KTsKIAkJdmFsdWVzWzFdID0gSW50NjRHZXREYXR1bSgoY2hhciAqKSBlbnQt PmxvY2F0aW9uIC0gKGNoYXIgKikgU2htZW1TZWdIZHIpOwpAQCAtNTk2LDggKzU5Miw2IEBAIHBn X2dldF9zaG1lbV9hbGxvY2F0aW9uc19udW1hKFBHX0ZVTkNUSU9OX0FSR1MpCiB7CiAjZGVmaW5l IFBHX0dFVF9TSE1FTV9OVU1BX1NJWkVTX0NPTFMgMwogCVJldHVyblNldEluZm8gKnJzaW5mbyA9 IChSZXR1cm5TZXRJbmZvICopIGZjaW5mby0+cmVzdWx0aW5mbzsKLQlIQVNIX1NFUV9TVEFUVVMg aHN0YXQ7Ci0JU2htZW1JbmRleEVudCAqZW50OwogCURhdHVtCQl2YWx1ZXNbUEdfR0VUX1NITUVN X05VTUFfU0laRVNfQ09MU107CiAJYm9vbAkJbnVsbHNbUEdfR0VUX1NITUVNX05VTUFfU0laRVNf Q09MU107CiAJU2l6ZQkJb3NfcGFnZV9zaXplOwpAQCAtNjQ3LDExICs2NDEsOSBAQCBwZ19nZXRf c2htZW1fYWxsb2NhdGlvbnNfbnVtYShQR19GVU5DVElPTl9BUkdTKQogCiAJTFdMb2NrQWNxdWly ZShTaG1lbUluZGV4TG9jaywgTFdfU0hBUkVEKTsKIAotCWhhc2hfc2VxX2luaXQoJmhzdGF0LCBT aG1lbUluZGV4KTsKLQogCS8qIG91dHB1dCBhbGwgYWxsb2NhdGVkIGVudHJpZXMgKi8KIAltZW1z ZXQobnVsbHMsIDAsIHNpemVvZihudWxscykpOwotCXdoaWxlICgoZW50ID0gKFNobWVtSW5kZXhF bnQgKikgaGFzaF9zZXFfc2VhcmNoKCZoc3RhdCkpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKFNo bWVtSW5kZXhFbnQsIGVudCwgU2htZW1JbmRleCkKIAl7CiAJCWludAkJCWk7CiAJCWNoYXIJICAg KnN0YXJ0cHRyLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5j IGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5jCmluZGV4IDdhOTZlM2UyMDM5Li44 ZjAwYThlMWYwMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5j CisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnkuYwpAQCAtMTA5OSwxMyArMTA5 OSw5IEBAIFN0YW5kYnlSZWxlYXNlTG9ja1RyZWUoVHJhbnNhY3Rpb25JZCB4aWQsIGludCBuc3Vi eGlkcywgVHJhbnNhY3Rpb25JZCAqc3VieGlkcykKIHZvaWQKIFN0YW5kYnlSZWxlYXNlQWxsTG9j a3Modm9pZCkKIHsKLQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCVJlY292ZXJ5TG9ja1hpZEVu dHJ5ICplbnRyeTsKLQogCWVsb2coREVCVUcyLCAicmVsZWFzZSBhbGwgc3RhbmRieSBsb2NrcyIp OwogCi0JaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBSZWNvdmVyeUxvY2tYaWRIYXNoKTsKLQl3aGls ZSAoKGVudHJ5ID0gaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMpKSkKKwlmb3JlYWNoX2hhc2goUmVj b3ZlcnlMb2NrWGlkRW50cnksIGVudHJ5LCBSZWNvdmVyeUxvY2tYaWRIYXNoKQogCXsKIAkJU3Rh bmRieVJlbGVhc2VYaWRFbnRyeUxvY2tzKGVudHJ5KTsKIAkJaGFzaF9zZWFyY2goUmVjb3ZlcnlM b2NrWGlkSGFzaCwgZW50cnksIEhBU0hfUkVNT1ZFLCBOVUxMKTsKQEAgLTExMjMsMTEgKzExMTks NyBAQCBTdGFuZGJ5UmVsZWFzZUFsbExvY2tzKHZvaWQpCiB2b2lkCiBTdGFuZGJ5UmVsZWFzZU9s ZExvY2tzKFRyYW5zYWN0aW9uSWQgb2xkeGlkKQogewotCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7 Ci0JUmVjb3ZlcnlMb2NrWGlkRW50cnkgKmVudHJ5OwotCi0JaGFzaF9zZXFfaW5pdCgmc3RhdHVz LCBSZWNvdmVyeUxvY2tYaWRIYXNoKTsKLQl3aGlsZSAoKGVudHJ5ID0gaGFzaF9zZXFfc2VhcmNo KCZzdGF0dXMpKSkKKwlmb3JlYWNoX2hhc2goUmVjb3ZlcnlMb2NrWGlkRW50cnksIGVudHJ5LCBS ZWNvdmVyeUxvY2tYaWRIYXNoKQogCXsKIAkJQXNzZXJ0KFRyYW5zYWN0aW9uSWRJc1ZhbGlkKGVu dHJ5LT54aWQpKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2xvY2su YyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sb2NrLmMKaW5kZXggM2YyMGM4NTg4MWEuLmVi ZmI3NmNjNDc2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbG9jay5jCisr KyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sb2NrLmMKQEAgLTIyOTIsMTEgKzIyOTIsOSBA QCBMb2NrUmVsZWFzZShjb25zdCBMT0NLVEFHICpsb2NrdGFnLCBMT0NLTU9ERSBsb2NrbW9kZSwg Ym9vbCBzZXNzaW9uTG9jaykKIHZvaWQKIExvY2tSZWxlYXNlQWxsKExPQ0tNRVRIT0RJRCBsb2Nr bWV0aG9kaWQsIGJvb2wgYWxsTG9ja3MpCiB7Ci0JSEFTSF9TRVFfU1RBVFVTIHN0YXR1czsKIAlM b2NrTWV0aG9kCWxvY2tNZXRob2RUYWJsZTsKIAlpbnQJCQlpLAogCQkJCW51bUxvY2tNb2RlczsK LQlMT0NBTExPQ0sgICpsb2NhbGxvY2s7CiAJTE9DSwkgICAqbG9jazsKIAlpbnQJCQlwYXJ0aXRp b247CiAJYm9vbAkJaGF2ZV9mYXN0X3BhdGhfbHdsb2NrID0gZmFsc2U7CkBAIC0yMzI5LDkgKzIz MjcsNyBAQCBMb2NrUmVsZWFzZUFsbChMT0NLTUVUSE9ESUQgbG9ja21ldGhvZGlkLCBib29sIGFs bExvY2tzKQogCSAqIHBvaW50ZXJzLiAgRmFzdC1wYXRoIGxvY2tzIGFyZSBjbGVhbmVkIHVwIGR1 cmluZyB0aGUgbG9jYWxsb2NrIHRhYmxlCiAJICogc2NhbiwgdGhvdWdoLgogCSAqLwotCWhhc2hf c2VxX2luaXQoJnN0YXR1cywgTG9ja01ldGhvZExvY2FsSGFzaCk7Ci0KLQl3aGlsZSAoKGxvY2Fs bG9jayA9IChMT0NBTExPQ0sgKikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQor CWZvcmVhY2hfaGFzaChMT0NBTExPQ0ssIGxvY2FsbG9jaywgTG9ja01ldGhvZExvY2FsSGFzaCkK IAl7CiAJCS8qCiAJCSAqIElmIHRoZSBMT0NBTExPQ0sgZW50cnkgaXMgdW51c2VkLCBzb21ldGhp bmcgbXVzdCd2ZSBnb25lIHdyb25nCkBAIC0yNTY2LDE1ICsyNTYyLDEwIEBAIExvY2tSZWxlYXNl QWxsKExPQ0tNRVRIT0RJRCBsb2NrbWV0aG9kaWQsIGJvb2wgYWxsTG9ja3MpCiB2b2lkCiBMb2Nr UmVsZWFzZVNlc3Npb24oTE9DS01FVEhPRElEIGxvY2ttZXRob2RpZCkKIHsKLQlIQVNIX1NFUV9T VEFUVVMgc3RhdHVzOwotCUxPQ0FMTE9DSyAgKmxvY2FsbG9jazsKLQogCWlmIChsb2NrbWV0aG9k aWQgPD0gMCB8fCBsb2NrbWV0aG9kaWQgPj0gbGVuZ3Rob2YoTG9ja01ldGhvZHMpKQogCQllbG9n KEVSUk9SLCAidW5yZWNvZ25pemVkIGxvY2sgbWV0aG9kOiAlZCIsIGxvY2ttZXRob2RpZCk7CiAK LQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIExvY2tNZXRob2RMb2NhbEhhc2gpOwotCi0Jd2hpbGUg KChsb2NhbGxvY2sgPSAoTE9DQUxMT0NLICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0g TlVMTCkKKwlmb3JlYWNoX2hhc2goTE9DQUxMT0NLLCBsb2NhbGxvY2ssIExvY2tNZXRob2RMb2Nh bEhhc2gpCiAJewogCQkvKiBJZ25vcmUgaXRlbXMgdGhhdCBhcmUgbm90IG9mIHRoZSBzcGVjaWZp ZWQgbG9jayBtZXRob2QgKi8KIAkJaWYgKExPQ0FMTE9DS19MT0NLTUVUSE9EKCpsb2NhbGxvY2sp ICE9IGxvY2ttZXRob2RpZCkKQEAgLTI1OTgsMTIgKzI1ODksNyBAQCBMb2NrUmVsZWFzZUN1cnJl bnRPd25lcihMT0NBTExPQ0sgKipsb2NhbGxvY2tzLCBpbnQgbmxvY2tzKQogewogCWlmIChsb2Nh bGxvY2tzID09IE5VTEwpCiAJewotCQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCQlMT0NBTExP Q0sgICpsb2NhbGxvY2s7Ci0KLQkJaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBMb2NrTWV0aG9kTG9j YWxIYXNoKTsKLQotCQl3aGlsZSAoKGxvY2FsbG9jayA9IChMT0NBTExPQ0sgKikgaGFzaF9zZXFf c2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorCQlmb3JlYWNoX2hhc2goTE9DQUxMT0NLLCBsb2Nh bGxvY2ssIExvY2tNZXRob2RMb2NhbEhhc2gpCiAJCQlSZWxlYXNlTG9ja0lmSGVsZChsb2NhbGxv Y2ssIGZhbHNlKTsKIAl9CiAJZWxzZQpAQCAtMjY5NywxMiArMjY4Myw3IEBAIExvY2tSZWFzc2ln bkN1cnJlbnRPd25lcihMT0NBTExPQ0sgKipsb2NhbGxvY2tzLCBpbnQgbmxvY2tzKQogCiAJaWYg KGxvY2FsbG9ja3MgPT0gTlVMTCkKIAl7Ci0JCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7Ci0JCUxP Q0FMTE9DSyAgKmxvY2FsbG9jazsKLQotCQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIExvY2tNZXRo b2RMb2NhbEhhc2gpOwotCi0JCXdoaWxlICgobG9jYWxsb2NrID0gKExPQ0FMTE9DSyAqKSBoYXNo X3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJCWZvcmVhY2hfaGFzaChMT0NBTExPQ0ss IGxvY2FsbG9jaywgTG9ja01ldGhvZExvY2FsSGFzaCkKIAkJCUxvY2tSZWFzc2lnbk93bmVyKGxv Y2FsbG9jaywgcGFyZW50KTsKIAl9CiAJZWxzZQpAQCAtMzM4MSwxNyArMzM2MiwxMyBAQCBDaGVj a0ZvclNlc3Npb25BbmRYYWN0TG9ja3Modm9pZCkKIAl9IFBlckxvY2tUYWdFbnRyeTsKIAogCUhU QUIJICAgKmxvY2todGFiOwotCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7Ci0JTE9DQUxMT0NLICAq bG9jYWxsb2NrOwogCiAJLyogQ3JlYXRlIGEgbG9jYWwgaGFzaCB0YWJsZSBrZXllZCBieSBMT0NL VEFHIG9ubHkgKi8KIAlsb2NraHRhYiA9IGhhc2hfbWFrZShQZXJMb2NrVGFnRW50cnksIGxvY2ss CiAJCQkJCQkgIkNoZWNrRm9yU2Vzc2lvbkFuZFhhY3RMb2NrcyB0YWJsZSIsIDI1Nik7CiAKIAkv KiBTY2FuIGxvY2FsIGxvY2sgdGFibGUgdG8gZmluZCBlbnRyaWVzIGZvciBlYWNoIExPQ0tUQUcg Ki8KLQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIExvY2tNZXRob2RMb2NhbEhhc2gpOwotCi0Jd2hp bGUgKChsb2NhbGxvY2sgPSAoTE9DQUxMT0NLICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkg IT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goTE9DQUxMT0NLLCBsb2NhbGxvY2ssIExvY2tNZXRob2RM b2NhbEhhc2gpCiAJewogCQlMT0NBTExPQ0tPV05FUiAqbG9ja093bmVycyA9IGxvY2FsbG9jay0+ bG9ja093bmVyczsKIAkJUGVyTG9ja1RhZ0VudHJ5ICpoZW50cnk7CkBAIC0zNDU0LDE2ICszNDMx LDExIEBAIENoZWNrRm9yU2Vzc2lvbkFuZFhhY3RMb2Nrcyh2b2lkKQogdm9pZAogQXRQcmVwYXJl X0xvY2tzKHZvaWQpCiB7Ci0JSEFTSF9TRVFfU1RBVFVTIHN0YXR1czsKLQlMT0NBTExPQ0sgICps b2NhbGxvY2s7Ci0KIAkvKiBGaXJzdCwgdmVyaWZ5IHRoZXJlIGFyZW4ndCBsb2NrcyBvZiBib3Ro IHhhY3QgYW5kIHNlc3Npb24gbGV2ZWwgKi8KIAlDaGVja0ZvclNlc3Npb25BbmRYYWN0TG9ja3Mo KTsKIAogCS8qIE5vdyBkbyB0aGUgcGVyLWxvY2FsbG9jayBjbGVhbnVwIHdvcmsgKi8KLQloYXNo X3NlcV9pbml0KCZzdGF0dXMsIExvY2tNZXRob2RMb2NhbEhhc2gpOwotCi0Jd2hpbGUgKChsb2Nh bGxvY2sgPSAoTE9DQUxMT0NLICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkK Kwlmb3JlYWNoX2hhc2goTE9DQUxMT0NLLCBsb2NhbGxvY2ssIExvY2tNZXRob2RMb2NhbEhhc2gp CiAJewogCQlUd29QaGFzZUxvY2tSZWNvcmQgcmVjb3JkOwogCQlMT0NBTExPQ0tPV05FUiAqbG9j a093bmVycyA9IGxvY2FsbG9jay0+bG9ja093bmVyczsKQEAgLTM1NTEsOCArMzUyMyw2IEBAIHZv aWQKIFBvc3RQcmVwYXJlX0xvY2tzKEZ1bGxUcmFuc2FjdGlvbklkIGZ4aWQpCiB7CiAJUEdQUk9D CSAgICpuZXdwcm9jID0gVHdvUGhhc2VHZXREdW1teVByb2MoZnhpZCwgZmFsc2UpOwotCUhBU0hf U0VRX1NUQVRVUyBzdGF0dXM7Ci0JTE9DQUxMT0NLICAqbG9jYWxsb2NrOwogCUxPQ0sJICAgKmxv Y2s7CiAJUFJPQ0xPQ0sgICAqcHJvY2xvY2s7CiAJUFJPQ0xPQ0tUQUcgcHJvY2xvY2t0YWc7CkBA IC0zNTc0LDkgKzM1NDQsNyBAQCBQb3N0UHJlcGFyZV9Mb2NrcyhGdWxsVHJhbnNhY3Rpb25JZCBm eGlkKQogCSAqIHBvaW50aW5nIHRvIHRoZSBzYW1lIHByb2Nsb2NrLCBhbmQgd2UgZGFyZW4ndCBl bmQgdXAgd2l0aCBhbnkgZGFuZ2xpbmcKIAkgKiBwb2ludGVycy4KIAkgKi8KLQloYXNoX3NlcV9p bml0KCZzdGF0dXMsIExvY2tNZXRob2RMb2NhbEhhc2gpOwotCi0Jd2hpbGUgKChsb2NhbGxvY2sg PSAoTE9DQUxMT0NLICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3Jl YWNoX2hhc2goTE9DQUxMT0NLLCBsb2NhbGxvY2ssIExvY2tNZXRob2RMb2NhbEhhc2gpCiAJewog CQlMT0NBTExPQ0tPV05FUiAqbG9ja093bmVycyA9IGxvY2FsbG9jay0+bG9ja093bmVyczsKIAkJ Ym9vbAkJaGF2ZVNlc3Npb25Mb2NrOwpAQCAtMzc3Miw4ICszNzQwLDYgQEAgTG9ja0RhdGEgKgog R2V0TG9ja1N0YXR1c0RhdGEodm9pZCkKIHsKIAlMb2NrRGF0YSAgICpkYXRhOwotCVBST0NMT0NL ICAgKnByb2Nsb2NrOwotCUhBU0hfU0VRX1NUQVRVUyBzZXFzdGF0OwogCWludAkJCWVsczsKIAlp bnQJCQllbDsKIAlpbnQJCQlpOwpAQCAtMzkwOSw5ICszODc1LDcgQEAgR2V0TG9ja1N0YXR1c0Rh dGEodm9pZCkKIAl9CiAKIAkvKiBOb3cgc2NhbiB0aGUgdGFibGVzIHRvIGNvcHkgdGhlIGRhdGEg Ki8KLQloYXNoX3NlcV9pbml0KCZzZXFzdGF0LCBMb2NrTWV0aG9kUHJvY0xvY2tIYXNoKTsKLQot CXdoaWxlICgocHJvY2xvY2sgPSAoUFJPQ0xPQ0sgKikgaGFzaF9zZXFfc2VhcmNoKCZzZXFzdGF0 KSkpCisJZm9yZWFjaF9oYXNoKFBST0NMT0NLLCBwcm9jbG9jaywgTG9ja01ldGhvZFByb2NMb2Nr SGFzaCkKIAl7CiAJCVBHUFJPQwkgICAqcHJvYyA9IHByb2Nsb2NrLT50YWcubXlQcm9jOwogCQlM T0NLCSAgICpsb2NrID0gcHJvY2xvY2stPnRhZy5teUxvY2s7CkBAIC00MTUwLDggKzQxMTQsNiBA QCB4bF9zdGFuZGJ5X2xvY2sgKgogR2V0UnVubmluZ1RyYW5zYWN0aW9uTG9ja3MoaW50ICpubG9j a3MpCiB7CiAJeGxfc3RhbmRieV9sb2NrICphY2Nlc3NFeGNsdXNpdmVMb2NrczsKLQlQUk9DTE9D SyAgICpwcm9jbG9jazsKLQlIQVNIX1NFUV9TVEFUVVMgc2Vxc3RhdDsKIAlpbnQJCQlpOwogCWlu dAkJCWluZGV4OwogCWludAkJCWVsczsKQEAgLTQxNzMsMTAgKzQxMzUsOSBAQCBHZXRSdW5uaW5n VHJhbnNhY3Rpb25Mb2NrcyhpbnQgKm5sb2NrcykKIAkgKi8KIAlhY2Nlc3NFeGNsdXNpdmVMb2Nr cyA9IHBhbGxvYyhlbHMgKiBzaXplb2YoeGxfc3RhbmRieV9sb2NrKSk7CiAKLQkvKiBOb3cgc2Nh biB0aGUgdGFibGVzIHRvIGNvcHkgdGhlIGRhdGEgKi8KLQloYXNoX3NlcV9pbml0KCZzZXFzdGF0 LCBMb2NrTWV0aG9kUHJvY0xvY2tIYXNoKTsKLQogCS8qCisJICogTm93IHNjYW4gdGhlIHRhYmxl cyB0byBjb3B5IHRoZSBkYXRhLgorCSAqCiAJICogSWYgbG9jayBpcyBhIGN1cnJlbnRseSBncmFu dGVkIEFjY2Vzc0V4Y2x1c2l2ZUxvY2sgdGhlbiBpdCB3aWxsIGhhdmUKIAkgKiBqdXN0IG9uZSBw cm9jbG9jayBob2xkZXIsIHNvIGxvY2tzIGFyZSBuZXZlciBhY2Nlc3NlZCB0d2ljZSBpbiB0aGlz CiAJICogcGFydGljdWxhciBjYXNlLiBEb24ndCBjb3B5IHRoaXMgY29kZSBmb3IgdXNlIGVsc2V3 aGVyZSBiZWNhdXNlIGluIHRoZQpAQCAtNDE4NCw3ICs0MTQ1LDcgQEAgR2V0UnVubmluZ1RyYW5z YWN0aW9uTG9ja3MoaW50ICpubG9ja3MpCiAJICogbm9uLWV4Y2x1c2l2ZSBsb2NrIHR5cGVzLgog CSAqLwogCWluZGV4ID0gMDsKLQl3aGlsZSAoKHByb2Nsb2NrID0gKFBST0NMT0NLICopIGhhc2hf c2VxX3NlYXJjaCgmc2Vxc3RhdCkpKQorCWZvcmVhY2hfaGFzaChQUk9DTE9DSywgcHJvY2xvY2ss IExvY2tNZXRob2RQcm9jTG9ja0hhc2gpCiAJewogCQkvKiBtYWtlIHN1cmUgdGhpcyBkZWZpbml0 aW9uIG1hdGNoZXMgdGhlIG9uZSB1c2VkIGluIExvY2tBY3F1aXJlICovCiAJCWlmICgocHJvY2xv Y2stPmhvbGRNYXNrICYgTE9DS0JJVF9PTihBY2Nlc3NFeGNsdXNpdmVMb2NrKSkgJiYKQEAgLTQy NzksMTggKzQyNDAsMTQgQEAgdm9pZAogRHVtcEFsbExvY2tzKHZvaWQpCiB7CiAJUEdQUk9DCSAg ICpwcm9jOwotCVBST0NMT0NLICAgKnByb2Nsb2NrOwogCUxPQ0sJICAgKmxvY2s7Ci0JSEFTSF9T RVFfU1RBVFVTIHN0YXR1czsKIAogCXByb2MgPSBNeVByb2M7CiAKIAlpZiAocHJvYyAmJiBwcm9j LT53YWl0TG9jaykKIAkJTE9DS19QUklOVCgiRHVtcEFsbExvY2tzOiB3YWl0aW5nIG9uIiwgcHJv Yy0+d2FpdExvY2ssIDApOwogCi0JaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBMb2NrTWV0aG9kUHJv Y0xvY2tIYXNoKTsKLQotCXdoaWxlICgocHJvY2xvY2sgPSAoUFJPQ0xPQ0sgKikgaGFzaF9zZXFf c2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChQUk9DTE9DSywgcHJvY2xv Y2ssIExvY2tNZXRob2RQcm9jTG9ja0hhc2gpCiAJewogCQlQUk9DTE9DS19QUklOVCgiRHVtcEFs bExvY2tzIiwgcHJvY2xvY2spOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xt Z3IvbHdsb2NrLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbHdsb2NrLmMKaW5kZXggMGFm YzdjYWVlZWUuLjEyOTc5NjI5ZTUzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xt Z3IvbHdsb2NrLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2x3bG9jay5jCkBAIC0z MTYsMTUgKzMxNiwxMCBAQCBpbml0X2x3bG9ja19zdGF0cyh2b2lkKQogc3RhdGljIHZvaWQKIHBy aW50X2x3bG9ja19zdGF0cyhpbnQgY29kZSwgRGF0dW0gYXJnKQogewotCUhBU0hfU0VRX1NUQVRV UyBzY2FuOwotCWx3bG9ja19zdGF0cyAqbHdzdGF0czsKLQotCWhhc2hfc2VxX2luaXQoJnNjYW4s IGx3bG9ja19zdGF0c19odGFiKTsKLQogCS8qIEdyYWIgYW4gTFdMb2NrIHRvIGtlZXAgZGlmZmVy ZW50IGJhY2tlbmRzIGZyb20gbWl4aW5nIHJlcG9ydHMgKi8KIAlMV0xvY2tBY3F1aXJlKCZNYWlu TFdMb2NrQXJyYXlbMF0ubG9jaywgTFdfRVhDTFVTSVZFKTsKIAotCXdoaWxlICgobHdzdGF0cyA9 IChsd2xvY2tfc3RhdHMgKikgaGFzaF9zZXFfc2VhcmNoKCZzY2FuKSkgIT0gTlVMTCkKKwlmb3Jl YWNoX2hhc2gobHdsb2NrX3N0YXRzLCBsd3N0YXRzLCBsd2xvY2tfc3RhdHNfaHRhYikKIAl7CiAJ CWZwcmludGYoc3RkZXJyLAogCQkJCSJQSUQgJWQgbHdsb2NrICVzICVwOiBzaGFjcSAldSBleGFj cSAldSBibGsgJXUgc3BpbmRlbGF5ICV1IGRlcXVldWUgc2VsZiAldVxuIiwKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcmVkaWNhdGUuYyBiL3NyYy9iYWNrZW5kL3N0b3Jh Z2UvbG1nci9wcmVkaWNhdGUuYwppbmRleCA5ZjM3NzliOWFlYS4uNjNlMjYwZGU0ZWIgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcmVkaWNhdGUuYworKysgYi9zcmMvYmFj a2VuZC9zdG9yYWdlL2xtZ3IvcHJlZGljYXRlLmMKQEAgLTE0NDAsOCArMTQ0MCw2IEBAIEdldFBy ZWRpY2F0ZUxvY2tTdGF0dXNEYXRhKHZvaWQpCiAJaW50CQkJaTsKIAlpbnQJCQllbHMsCiAJCQkJ ZWw7Ci0JSEFTSF9TRVFfU1RBVFVTIHNlcXN0YXQ7Ci0JUFJFRElDQVRFTE9DSyAqcHJlZGxvY2s7 CiAKIAlkYXRhID0gcGFsbG9jX29iamVjdChQcmVkaWNhdGVMb2NrRGF0YSk7CiAKQEAgLTE0NjEs MTEgKzE0NTksOSBAQCBHZXRQcmVkaWNhdGVMb2NrU3RhdHVzRGF0YSh2b2lkKQogCiAKIAkvKiBT Y2FuIHRocm91Z2ggUHJlZGljYXRlTG9ja0hhc2ggYW5kIGNvcHkgY29udGVudHMgKi8KLQloYXNo X3NlcV9pbml0KCZzZXFzdGF0LCBQcmVkaWNhdGVMb2NrSGFzaCk7Ci0KIAllbCA9IDA7CiAKLQl3 aGlsZSAoKHByZWRsb2NrID0gKFBSRURJQ0FURUxPQ0sgKikgaGFzaF9zZXFfc2VhcmNoKCZzZXFz dGF0KSkpCisJZm9yZWFjaF9oYXNoKFBSRURJQ0FURUxPQ0ssIHByZWRsb2NrLCBQcmVkaWNhdGVM b2NrSGFzaCkKIAl7CiAJCWRhdGEtPmxvY2t0YWdzW2VsXSA9IHByZWRsb2NrLT50YWcubXlUYXJn ZXQtPnRhZzsKIAkJZGF0YS0+eGFjdHNbZWxdID0gKnByZWRsb2NrLT50YWcubXlYYWN0OwpAQCAt MjkyMiw4ICsyOTE4LDYgQEAgZXhpdDoKIHN0YXRpYyB2b2lkCiBEcm9wQWxsUHJlZGljYXRlTG9j a3NGcm9tVGFibGUoUmVsYXRpb24gcmVsYXRpb24sIGJvb2wgdHJhbnNmZXIpCiB7Ci0JSEFTSF9T RVFfU1RBVFVTIHNlcXN0YXQ7Ci0JUFJFRElDQVRFTE9DS1RBUkdFVCAqb2xkdGFyZ2V0OwogCVBS RURJQ0FURUxPQ0tUQVJHRVQgKmhlYXB0YXJnZXQ7CiAJT2lkCQkJZGJJZDsKIAlPaWQJCQlyZWxJ ZDsKQEAgLTI5NzksOSArMjk3Myw3IEBAIERyb3BBbGxQcmVkaWNhdGVMb2Nrc0Zyb21UYWJsZShS ZWxhdGlvbiByZWxhdGlvbiwgYm9vbCB0cmFuc2ZlcikKIAkJUmVtb3ZlU2NyYXRjaFRhcmdldCh0 cnVlKTsKIAogCS8qIFNjYW4gdGhyb3VnaCB0YXJnZXQgbWFwICovCi0JaGFzaF9zZXFfaW5pdCgm c2Vxc3RhdCwgUHJlZGljYXRlTG9ja1RhcmdldEhhc2gpOwotCi0Jd2hpbGUgKChvbGR0YXJnZXQg PSAoUFJFRElDQVRFTE9DS1RBUkdFVCAqKSBoYXNoX3NlcV9zZWFyY2goJnNlcXN0YXQpKSkKKwlm b3JlYWNoX2hhc2goUFJFRElDQVRFTE9DS1RBUkdFVCwgb2xkdGFyZ2V0LCBQcmVkaWNhdGVMb2Nr VGFyZ2V0SGFzaCkKIAl7CiAJCWRsaXN0X211dGFibGVfaXRlciBpdGVyOwogCkBAIC00NDA0LDgg KzQzOTYsNiBAQCBDaGVja0ZvclNlcmlhbGl6YWJsZUNvbmZsaWN0SW4oUmVsYXRpb24gcmVsYXRp b24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqdGlkLCBCbAogdm9pZAogQ2hlY2tUYWJsZUZvclNl cmlhbGl6YWJsZUNvbmZsaWN0SW4oUmVsYXRpb24gcmVsYXRpb24pCiB7Ci0JSEFTSF9TRVFfU1RB VFVTIHNlcXN0YXQ7Ci0JUFJFRElDQVRFTE9DS1RBUkdFVCAqdGFyZ2V0OwogCU9pZAkJCWRiSWQ7 CiAJT2lkCQkJaGVhcElkOwogCWludAkJCWk7CkBAIC00NDM5LDkgKzQ0MjksNyBAQCBDaGVja1Rh YmxlRm9yU2VyaWFsaXphYmxlQ29uZmxpY3RJbihSZWxhdGlvbiByZWxhdGlvbikKIAlMV0xvY2tB Y3F1aXJlKFNlcmlhbGl6YWJsZVhhY3RIYXNoTG9jaywgTFdfRVhDTFVTSVZFKTsKIAogCS8qIFNj YW4gdGhyb3VnaCB0YXJnZXQgbGlzdCAqLwotCWhhc2hfc2VxX2luaXQoJnNlcXN0YXQsIFByZWRp Y2F0ZUxvY2tUYXJnZXRIYXNoKTsKLQotCXdoaWxlICgodGFyZ2V0ID0gKFBSRURJQ0FURUxPQ0tU QVJHRVQgKikgaGFzaF9zZXFfc2VhcmNoKCZzZXFzdGF0KSkpCisJZm9yZWFjaF9oYXNoKFBSRURJ Q0FURUxPQ0tUQVJHRVQsIHRhcmdldCwgUHJlZGljYXRlTG9ja1RhcmdldEhhc2gpCiAJewogCQlk bGlzdF9tdXRhYmxlX2l0ZXIgaXRlcjsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFn ZS9zbWdyL3NtZ3IuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2Uvc21nci9zbWdyLmMKaW5kZXggNjgw ZGE1MDQ4ZmQuLmNhYzYyNDlmOWFmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL3Nt Z3Ivc21nci5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2Uvc21nci9zbWdyLmMKQEAgLTQwOSw5 ICs0MDksNiBAQCBzbWdyZGVzdHJveWFsbCh2b2lkKQogdm9pZAogc21ncnJlbGVhc2VhbGwodm9p ZCkKIHsKLQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCVNNZ3JSZWxhdGlvbiByZWxuOwotCiAJ LyogTm90aGluZyB0byBkbyBpZiBoYXNodGFibGUgbm90IHNldCB1cCAqLwogCWlmIChTTWdyUmVs YXRpb25IYXNoID09IE5VTEwpCiAJCXJldHVybjsKQEAgLTQxOSw5ICs0MTYsNyBAQCBzbWdycmVs ZWFzZWFsbCh2b2lkKQogCS8qIHNlZW1zIHVuc2FmZSB0byBhY2NlcHQgaW50ZXJydXB0cyB3aGls ZSBpdGVyYXRpbmcgKi8KIAlIT0xEX0lOVEVSUlVQVFMoKTsKIAotCWhhc2hfc2VxX2luaXQoJnN0 YXR1cywgU01nclJlbGF0aW9uSGFzaCk7Ci0KLQl3aGlsZSAoKHJlbG4gPSAoU01nclJlbGF0aW9u KSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKFNNZ3JS ZWxhdGlvbkRhdGEsIHJlbG4sIFNNZ3JSZWxhdGlvbkhhc2gpCiAJewogCQlzbWdycmVsZWFzZShy ZWxuKTsKIAl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL3N5bmMvc3luYy5jIGIv c3JjL2JhY2tlbmQvc3RvcmFnZS9zeW5jL3N5bmMuYwppbmRleCAwMWFjYjMwZjFiYi4uYjJkNWM3 NmVmNzggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2Uvc3luYy9zeW5jLmMKKysrIGIv c3JjL2JhY2tlbmQvc3RvcmFnZS9zeW5jL3N5bmMuYwpAQCAtMjgwLDggKzI4MCw2IEBAIFByb2Nl c3NTeW5jUmVxdWVzdHModm9pZCkKIHsKIAlzdGF0aWMgYm9vbCBzeW5jX2luX3Byb2dyZXNzID0g ZmFsc2U7CiAKLQlIQVNIX1NFUV9TVEFUVVMgaHN0YXQ7Ci0JUGVuZGluZ0ZzeW5jRW50cnkgKmVu dHJ5OwogCWludAkJCWFic29yYl9jb3VudGVyOwogCiAJLyogU3RhdGlzdGljcyBvbiBzeW5jIHRp bWVzICovCkBAIC0zMzgsOCArMzM2LDcgQEAgUHJvY2Vzc1N5bmNSZXF1ZXN0cyh2b2lkKQogCWlm IChzeW5jX2luX3Byb2dyZXNzKQogCXsKIAkJLyogcHJpb3IgdHJ5IGZhaWxlZCwgc28gdXBkYXRl IGFueSBzdGFsZSBjeWNsZV9jdHIgdmFsdWVzICovCi0JCWhhc2hfc2VxX2luaXQoJmhzdGF0LCBw ZW5kaW5nT3BzKTsKLQkJd2hpbGUgKChlbnRyeSA9IChQZW5kaW5nRnN5bmNFbnRyeSAqKSBoYXNo X3NlcV9zZWFyY2goJmhzdGF0KSkgIT0gTlVMTCkKKwkJZm9yZWFjaF9oYXNoKFBlbmRpbmdGc3lu Y0VudHJ5LCBlbnRyeSwgcGVuZGluZ09wcykKIAkJewogCQkJZW50cnktPmN5Y2xlX2N0ciA9IHN5 bmNfY3ljbGVfY3RyOwogCQl9CkBAIC0zNTMsOCArMzUwLDcgQEAgUHJvY2Vzc1N5bmNSZXF1ZXN0 cyh2b2lkKQogCiAJLyogTm93IHNjYW4gdGhlIGhhc2h0YWJsZSBmb3IgZnN5bmMgcmVxdWVzdHMg dG8gcHJvY2VzcyAqLwogCWFic29yYl9jb3VudGVyID0gRlNZTkNTX1BFUl9BQlNPUkI7Ci0JaGFz aF9zZXFfaW5pdCgmaHN0YXQsIHBlbmRpbmdPcHMpOwotCXdoaWxlICgoZW50cnkgPSAoUGVuZGlu Z0ZzeW5jRW50cnkgKikgaGFzaF9zZXFfc2VhcmNoKCZoc3RhdCkpICE9IE5VTEwpCisJZm9yZWFj aF9oYXNoKFBlbmRpbmdGc3luY0VudHJ5LCBlbnRyeSwgcGVuZGluZ09wcykKIAl7CiAJCWludAkJ CWZhaWx1cmVzOwogCkBAIC00OTUsMTMgKzQ5MSwxMCBAQCBSZW1lbWJlclN5bmNSZXF1ZXN0KGNv bnN0IEZpbGVUYWcgKmZ0YWcsIFN5bmNSZXF1ZXN0VHlwZSB0eXBlKQogCX0KIAllbHNlIGlmICh0 eXBlID09IFNZTkNfRklMVEVSX1JFUVVFU1QpCiAJewotCQlIQVNIX1NFUV9TVEFUVVMgaHN0YXQ7 Ci0JCVBlbmRpbmdGc3luY0VudHJ5ICpwZmU7CiAJCUxpc3RDZWxsICAgKmNlbGw7CiAKIAkJLyog Q2FuY2VsIG1hdGNoaW5nIGZzeW5jIHJlcXVlc3RzICovCi0JCWhhc2hfc2VxX2luaXQoJmhzdGF0 LCBwZW5kaW5nT3BzKTsKLQkJd2hpbGUgKChwZmUgPSAoUGVuZGluZ0ZzeW5jRW50cnkgKikgaGFz aF9zZXFfc2VhcmNoKCZoc3RhdCkpICE9IE5VTEwpCisJCWZvcmVhY2hfaGFzaChQZW5kaW5nRnN5 bmNFbnRyeSwgcGZlLCBwZW5kaW5nT3BzKQogCQl7CiAJCQlpZiAocGZlLT50YWcuaGFuZGxlciA9 PSBmdGFnLT5oYW5kbGVyICYmCiAJCQkJc3luY3N3W2Z0YWctPmhhbmRsZXJdLnN5bmNfZmlsZXRh Z21hdGNoZXMoZnRhZywgJnBmZS0+dGFnKSkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3RzZWFy Y2gvdHNfdHlwYW5hbHl6ZS5jIGIvc3JjL2JhY2tlbmQvdHNlYXJjaC90c190eXBhbmFseXplLmMK aW5kZXggYzJmM2I2MzI2NWQuLjFhNGIzMjhjNGNkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90 c2VhcmNoL3RzX3R5cGFuYWx5emUuYworKysgYi9zcmMvYmFja2VuZC90c2VhcmNoL3RzX3R5cGFu YWx5emUuYwpAQCAtMTQ5LDcgKzE0OSw2IEBAIGNvbXB1dGVfdHN2ZWN0b3Jfc3RhdHMoVmFjQXR0 clN0YXRzICpzdGF0cywKIAogCS8qIFRoaXMgaXMgRCBmcm9tIHRoZSBMQyBhbGdvcml0aG0uICov CiAJSFRBQgkgICAqbGV4ZW1lc190YWI7Ci0JSEFTSF9TRVFfU1RBVFVTIHNjYW5fc3RhdHVzOwog CiAJLyogVGhpcyBpcyB0aGUgY3VycmVudCBidWNrZXQgbnVtYmVyIGZyb20gdGhlIExDIGFsZ29y aXRobSAqLwogCWludAkJCWJfY3VycmVudDsKQEAgLTI4OCw3ICsyODcsNiBAQCBjb21wdXRlX3Rz dmVjdG9yX3N0YXRzKFZhY0F0dHJTdGF0cyAqc3RhdHMsCiAJCWludAkJCW5vbm51bGxfY250ID0g c2FtcGxlcm93cyAtIG51bGxfY250OwogCQlpbnQJCQlpOwogCQlUcmFja0l0ZW0gKipzb3J0X3Rh YmxlOwotCQlUcmFja0l0ZW0gICppdGVtOwogCQlpbnQJCQl0cmFja19sZW47CiAJCWludAkJCWN1 dG9mZl9mcmVxOwogCQlpbnQJCQltaW5mcmVxLApAQCAtMzE1LDEwICszMTMsOSBAQCBjb21wdXRl X3RzdmVjdG9yX3N0YXRzKFZhY0F0dHJTdGF0cyAqc3RhdHMsCiAJCWkgPSBoYXNoX2dldF9udW1f ZW50cmllcyhsZXhlbWVzX3RhYik7CS8qIHN1cmVseSBlbm91Z2ggc3BhY2UgKi8KIAkJc29ydF90 YWJsZSA9IHBhbGxvY19hcnJheShUcmFja0l0ZW0gKiwgaSk7CiAKLQkJaGFzaF9zZXFfaW5pdCgm c2Nhbl9zdGF0dXMsIGxleGVtZXNfdGFiKTsKIAkJdHJhY2tfbGVuID0gMDsKIAkJbWF4ZnJlcSA9 IDA7Ci0JCXdoaWxlICgoaXRlbSA9IChUcmFja0l0ZW0gKikgaGFzaF9zZXFfc2VhcmNoKCZzY2Fu X3N0YXR1cykpICE9IE5VTEwpCisJCWZvcmVhY2hfaGFzaChUcmFja0l0ZW0sIGl0ZW0sIGxleGVt ZXNfdGFiKQogCQl7CiAJCQlpZiAoaXRlbS0+ZnJlcXVlbmN5ID4gY3V0b2ZmX2ZyZXEpCiAJCQl7 CkBAIC00NjIsMTEgKzQ1OSw3IEBAIGNvbXB1dGVfdHN2ZWN0b3Jfc3RhdHMoVmFjQXR0clN0YXRz ICpzdGF0cywKIHN0YXRpYyB2b2lkCiBwcnVuZV9sZXhlbWVzX2hhc2h0YWJsZShIVEFCICpsZXhl bWVzX3RhYiwgaW50IGJfY3VycmVudCkKIHsKLQlIQVNIX1NFUV9TVEFUVVMgc2Nhbl9zdGF0dXM7 Ci0JVHJhY2tJdGVtICAqaXRlbTsKLQotCWhhc2hfc2VxX2luaXQoJnNjYW5fc3RhdHVzLCBsZXhl bWVzX3RhYik7Ci0Jd2hpbGUgKChpdGVtID0gKFRyYWNrSXRlbSAqKSBoYXNoX3NlcV9zZWFyY2go JnNjYW5fc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goVHJhY2tJdGVtLCBpdGVtLCBs ZXhlbWVzX3RhYikKIAl7CiAJCWlmIChpdGVtLT5mcmVxdWVuY3kgKyBpdGVtLT5kZWx0YSA8PSBi X2N1cnJlbnQpCiAJCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dh aXRfZXZlbnQuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYwppbmRl eCBlNWFjOTU2ZGFmMC4uZTdiODM0YjI0MDggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxz L2FjdGl2aXR5L3dhaXRfZXZlbnQuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93 YWl0X2V2ZW50LmMKQEAgLTI5OSw4ICsyOTksNiBAQCBjaGFyCSAgKioKIEdldFdhaXRFdmVudEN1 c3RvbU5hbWVzKHVpbnQzMiBjbGFzc0lkLCBpbnQgKm53YWl0ZXZlbnRzKQogewogCWNoYXIJICAq KndhaXRldmVudG5hbWVzOwotCVdhaXRFdmVudEN1c3RvbUVudHJ5QnlOYW1lICpoZW50cnk7Ci0J SEFTSF9TRVFfU1RBVFVTIGhhc2hfc2VxOwogCWludAkJCWluZGV4OwogCWludAkJCWVsczsKIApA QCAtMzEzLDEwICszMTEsOCBAQCBHZXRXYWl0RXZlbnRDdXN0b21OYW1lcyh1aW50MzIgY2xhc3NJ ZCwgaW50ICpud2FpdGV2ZW50cykKIAl3YWl0ZXZlbnRuYW1lcyA9IHBhbGxvY19hcnJheShjaGFy ICosIGVscyk7CiAKIAkvKiBOb3cgc2NhbiB0aGUgaGFzaCB0YWJsZSB0byBjb3B5IHRoZSBkYXRh ICovCi0JaGFzaF9zZXFfaW5pdCgmaGFzaF9zZXEsIFdhaXRFdmVudEN1c3RvbUhhc2hCeU5hbWUp OwotCiAJaW5kZXggPSAwOwotCXdoaWxlICgoaGVudHJ5ID0gKFdhaXRFdmVudEN1c3RvbUVudHJ5 QnlOYW1lICopIGhhc2hfc2VxX3NlYXJjaCgmaGFzaF9zZXEpKSAhPSBOVUxMKQorCWZvcmVhY2hf aGFzaChXYWl0RXZlbnRDdXN0b21FbnRyeUJ5TmFtZSwgaGVudHJ5LCBXYWl0RXZlbnRDdXN0b21I YXNoQnlOYW1lKQogCXsKIAkJaWYgKChoZW50cnktPndhaXRfZXZlbnRfaW5mbyAmIFdBSVRfRVZF TlRfQ0xBU1NfTUFTSykgIT0gY2xhc3NJZCkKIAkJCWNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L2FycmF5X3R5cGFuYWx5emUuYyBiL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC9hcnJheV90eXBhbmFseXplLmMKaW5kZXggYmRjN2UyMjM3ZjYuLjI4MWY2ODAwMzEwIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvYXJyYXlfdHlwYW5hbHl6ZS5jCisrKyBi L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9hcnJheV90eXBhbmFseXplLmMKQEAgLTIyMyw3ICsyMjMs NiBAQCBjb21wdXRlX2FycmF5X3N0YXRzKFZhY0F0dHJTdGF0cyAqc3RhdHMsIEFuYWx5emVBdHRy RmV0Y2hGdW5jIGZldGNoZnVuYywKIAogCS8qIFRoaXMgaXMgRCBmcm9tIHRoZSBMQyBhbGdvcml0 aG0uICovCiAJSFRBQgkgICAqZWxlbWVudHNfdGFiOwotCUhBU0hfU0VRX1NUQVRVUyBzY2FuX3N0 YXR1czsKIAogCS8qIFRoaXMgaXMgdGhlIGN1cnJlbnQgYnVja2V0IG51bWJlciBmcm9tIHRoZSBM QyBhbGdvcml0aG0gKi8KIAlpbnQJCQliX2N1cnJlbnQ7CkBAIC0yMzIsMTAgKzIzMSw4IEBAIGNv bXB1dGVfYXJyYXlfc3RhdHMoVmFjQXR0clN0YXRzICpzdGF0cywgQW5hbHl6ZUF0dHJGZXRjaEZ1 bmMgZmV0Y2hmdW5jLAogCWludAkJCWJ1Y2tldF93aWR0aDsKIAlpbnQJCQlhcnJheV9ubzsKIAlp bnQ2NAkJZWxlbWVudF9ubzsKLQlUcmFja0l0ZW0gICppdGVtOwogCWludAkJCXNsb3RfaWR4Owog CUhUQUIJICAgKmNvdW50X3RhYjsKLQlERUNvdW50SXRlbSAqY291bnRfaXRlbTsKIAogCWV4dHJh X2RhdGEgPSAoQXJyYXlBbmFseXplRXh0cmFEYXRhICopIHN0YXRzLT5leHRyYV9kYXRhOwogCkBA IC0zMDAsNiArMjk3LDcgQEAgY29tcHV0ZV9hcnJheV9zdGF0cyhWYWNBdHRyU3RhdHMgKnN0YXRz LCBBbmFseXplQXR0ckZldGNoRnVuYyBmZXRjaGZ1bmMsCiAJCWludDY0CQlwcmV2X2VsZW1lbnRf bm8gPSBlbGVtZW50X25vOwogCQlpbnQJCQlkaXN0aW5jdF9jb3VudDsKIAkJYm9vbAkJY291bnRf aXRlbV9mb3VuZDsKKwkJREVDb3VudEl0ZW0gKmNvdW50X2l0ZW07CiAKIAkJdmFjdXVtX2RlbGF5 X3BvaW50KHRydWUpOwogCkBAIC0zMzgsNiArMzM2LDcgQEAgY29tcHV0ZV9hcnJheV9zdGF0cyhW YWNBdHRyU3RhdHMgKnN0YXRzLCBBbmFseXplQXR0ckZldGNoRnVuYyBmZXRjaGZ1bmMsCiAJCXsK IAkJCURhdHVtCQllbGVtX3ZhbHVlOwogCQkJYm9vbAkJZm91bmQ7CisJCQlUcmFja0l0ZW0gICpp dGVtOwogCiAJCQkvKiBObyBudWxsIGVsZW1lbnQgcHJvY2Vzc2luZyBvdGhlciB0aGFuIGZsYWcg c2V0dGluZyBoZXJlICovCiAJCQlpZiAoZWxlbV9udWxsc1tqXSkKQEAgLTQ1OCwxMCArNDU3LDkg QEAgY29tcHV0ZV9hcnJheV9zdGF0cyhWYWNBdHRyU3RhdHMgKnN0YXRzLCBBbmFseXplQXR0ckZl dGNoRnVuYyBmZXRjaGZ1bmMsCiAJCWkgPSBoYXNoX2dldF9udW1fZW50cmllcyhlbGVtZW50c190 YWIpOyAvKiBzdXJlbHkgZW5vdWdoIHNwYWNlICovCiAJCXNvcnRfdGFibGUgPSBwYWxsb2NfYXJy YXkoVHJhY2tJdGVtICosIGkpOwogCi0JCWhhc2hfc2VxX2luaXQoJnNjYW5fc3RhdHVzLCBlbGVt ZW50c190YWIpOwogCQl0cmFja19sZW4gPSAwOwogCQltYXhmcmVxID0gMDsKLQkJd2hpbGUgKChp dGVtID0gKFRyYWNrSXRlbSAqKSBoYXNoX3NlcV9zZWFyY2goJnNjYW5fc3RhdHVzKSkgIT0gTlVM TCkKKwkJZm9yZWFjaF9oYXNoKFRyYWNrSXRlbSwgaXRlbSwgZWxlbWVudHNfdGFiKQogCQl7CiAJ CQlpZiAoaXRlbS0+ZnJlcXVlbmN5ID4gY3V0b2ZmX2ZyZXEpCiAJCQl7CkBAIC01OTQsOSArNTky LDggQEAgY29tcHV0ZV9hcnJheV9zdGF0cyhWYWNBdHRyU3RhdHMgKnN0YXRzLCBBbmFseXplQXR0 ckZldGNoRnVuYyBmZXRjaGZ1bmMsCiAJCQkgKiBpbmNyZWFzaW5nIGNvdW50IG9yZGVyLgogCQkJ ICovCiAJCQlzb3J0ZWRfY291bnRfaXRlbXMgPSBwYWxsb2NfYXJyYXkoREVDb3VudEl0ZW0gKiwg Y291bnRfaXRlbXNfY291bnQpOwotCQkJaGFzaF9zZXFfaW5pdCgmc2Nhbl9zdGF0dXMsIGNvdW50 X3RhYik7CiAJCQlqID0gMDsKLQkJCXdoaWxlICgoY291bnRfaXRlbSA9IChERUNvdW50SXRlbSAq KSBoYXNoX3NlcV9zZWFyY2goJnNjYW5fc3RhdHVzKSkgIT0gTlVMTCkKKwkJCWZvcmVhY2hfaGFz aChERUNvdW50SXRlbSwgY291bnRfaXRlbSwgY291bnRfdGFiKQogCQkJewogCQkJCXNvcnRlZF9j b3VudF9pdGVtc1tqKytdID0gY291bnRfaXRlbTsKIAkJCX0KQEAgLTY4MywxMSArNjgwLDcgQEAg Y29tcHV0ZV9hcnJheV9zdGF0cyhWYWNBdHRyU3RhdHMgKnN0YXRzLCBBbmFseXplQXR0ckZldGNo RnVuYyBmZXRjaGZ1bmMsCiBzdGF0aWMgdm9pZAogcHJ1bmVfZWxlbWVudF9oYXNodGFibGUoSFRB QiAqZWxlbWVudHNfdGFiLCBpbnQgYl9jdXJyZW50KQogewotCUhBU0hfU0VRX1NUQVRVUyBzY2Fu X3N0YXR1czsKLQlUcmFja0l0ZW0gICppdGVtOwotCi0JaGFzaF9zZXFfaW5pdCgmc2Nhbl9zdGF0 dXMsIGVsZW1lbnRzX3RhYik7Ci0Jd2hpbGUgKChpdGVtID0gKFRyYWNrSXRlbSAqKSBoYXNoX3Nl cV9zZWFyY2goJnNjYW5fc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goVHJhY2tJdGVt LCBpdGVtLCBlbGVtZW50c190YWIpCiAJewogCQlpZiAoaXRlbS0+ZnJlcXVlbmN5ICsgaXRlbS0+ ZGVsdGEgPD0gYl9jdXJyZW50KQogCQl7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9j YWNoZS9yZWxjYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYwppbmRl eCBjMTViMTI3YmRiZi4uZjc3M2VhZmZhNmMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxz L2NhY2hlL3JlbGNhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUu YwpAQCAtMjk4NSw4ICsyOTg1LDYgQEAgUmVsYXRpb25DYWNoZUludmFsaWRhdGVFbnRyeShPaWQg cmVsYXRpb25JZCkKIHZvaWQKIFJlbGF0aW9uQ2FjaGVJbnZhbGlkYXRlKGJvb2wgZGVidWdfZGlz Y2FyZCkKIHsKLQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCVJlbElkQ2FjaGVFbnQgKmlkaGVu dHJ5OwogCVJlbGF0aW9uCXJlbGF0aW9uOwogCUxpc3QJICAgKnJlYnVpbGRGaXJzdExpc3QgPSBO SUw7CiAJTGlzdAkgICAqcmVidWlsZExpc3QgPSBOSUw7CkBAIC0yOTk5LDkgKzI5OTcsNyBAQCBS ZWxhdGlvbkNhY2hlSW52YWxpZGF0ZShib29sIGRlYnVnX2Rpc2NhcmQpCiAJUmVsYXRpb25NYXBJ bnZhbGlkYXRlQWxsKCk7CiAKIAkvKiBQaGFzZSAxICovCi0JaGFzaF9zZXFfaW5pdCgmc3RhdHVz LCBSZWxhdGlvbklkQ2FjaGUpOwotCi0Jd2hpbGUgKChpZGhlbnRyeSA9IChSZWxJZENhY2hlRW50 ICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goUmVs SWRDYWNoZUVudCwgaWRoZW50cnksIFJlbGF0aW9uSWRDYWNoZSkKIAl7CiAJCXJlbGF0aW9uID0g aWRoZW50cnktPnJlbGRlc2M7CiAKQEAgLTMxNDYsMTIgKzMxNDIsOSBAQCBBc3NlcnRQZW5kaW5n U3luY0NvbnNpc3RlbmN5KFJlbGF0aW9uIHJlbGF0aW9uKQogdm9pZAogQXNzZXJ0UGVuZGluZ1N5 bmNzX1JlbGF0aW9uQ2FjaGUodm9pZCkKIHsKLQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCUxP Q0FMTE9DSyAgKmxvY2FsbG9jazsKIAlSZWxhdGlvbiAgICpyZWxzOwogCWludAkJCW1heHJlbHM7 CiAJaW50CQkJbnJlbHM7Ci0JUmVsSWRDYWNoZUVudCAqaWRoZW50cnk7CiAJaW50CQkJaTsKIAog CS8qCkBAIC0zMTY1LDggKzMxNTgsNyBAQCBBc3NlcnRQZW5kaW5nU3luY3NfUmVsYXRpb25DYWNo ZSh2b2lkKQogCW1heHJlbHMgPSAxOwogCXJlbHMgPSBwYWxsb2MobWF4cmVscyAqIHNpemVvZigq cmVscykpOwogCW5yZWxzID0gMDsKLQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIEdldExvY2tNZXRo b2RMb2NhbEhhc2goKSk7Ci0Jd2hpbGUgKChsb2NhbGxvY2sgPSAoTE9DQUxMT0NLICopIGhhc2hf c2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goTE9DQUxMT0NLLCBs b2NhbGxvY2ssIEdldExvY2tNZXRob2RMb2NhbEhhc2goKSkKIAl7CiAJCU9pZAkJCXJlbGlkOwog CQlSZWxhdGlvbglyOwpAQCAtMzE4OCw4ICszMTgwLDcgQEAgQXNzZXJ0UGVuZGluZ1N5bmNzX1Jl bGF0aW9uQ2FjaGUodm9pZCkKIAkJcmVsc1tucmVscysrXSA9IHI7CiAJfQogCi0JaGFzaF9zZXFf aW5pdCgmc3RhdHVzLCBSZWxhdGlvbklkQ2FjaGUpOwotCXdoaWxlICgoaWRoZW50cnkgPSAoUmVs SWRDYWNoZUVudCAqKSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJZm9yZWFj aF9oYXNoKFJlbElkQ2FjaGVFbnQsIGlkaGVudHJ5LCBSZWxhdGlvbklkQ2FjaGUpCiAJCUFzc2Vy dFBlbmRpbmdTeW5jQ29uc2lzdGVuY3koaWRoZW50cnktPnJlbGRlc2MpOwogCiAJZm9yIChpID0g MDsgaSA8IG5yZWxzOyBpKyspCkBAIC0zMjE3LDggKzMyMDgsNiBAQCBBc3NlcnRQZW5kaW5nU3lu Y3NfUmVsYXRpb25DYWNoZSh2b2lkKQogdm9pZAogQXRFT1hhY3RfUmVsYXRpb25DYWNoZShib29s IGlzQ29tbWl0KQogewotCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7Ci0JUmVsSWRDYWNoZUVudCAq aWRoZW50cnk7CiAJaW50CQkJaTsKIAogCS8qCkBAIC0zMjQxLDggKzMyMzAsNyBAQCBBdEVPWGFj dF9SZWxhdGlvbkNhY2hlKGJvb2wgaXNDb21taXQpCiAJICovCiAJaWYgKGVveGFjdF9saXN0X292 ZXJmbG93ZWQpCiAJewotCQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIFJlbGF0aW9uSWRDYWNoZSk7 Ci0JCXdoaWxlICgoaWRoZW50cnkgPSAoUmVsSWRDYWNoZUVudCAqKSBoYXNoX3NlcV9zZWFyY2go JnN0YXR1cykpICE9IE5VTEwpCisJCWZvcmVhY2hfaGFzaChSZWxJZENhY2hlRW50LCBpZGhlbnRy eSwgUmVsYXRpb25JZENhY2hlKQogCQl7CiAJCQlBdEVPWGFjdF9jbGVhbnVwKGlkaGVudHJ5LT5y ZWxkZXNjLCBpc0NvbW1pdCk7CiAJCX0KQEAgLTMyNTEsMTAgKzMyMzksMTEgQEAgQXRFT1hhY3Rf UmVsYXRpb25DYWNoZShib29sIGlzQ29tbWl0KQogCXsKIAkJZm9yIChpID0gMDsgaSA8IGVveGFj dF9saXN0X2xlbjsgaSsrKQogCQl7Ci0JCQlpZGhlbnRyeSA9IChSZWxJZENhY2hlRW50ICopIGhh c2hfc2VhcmNoKFJlbGF0aW9uSWRDYWNoZSwKLQkJCQkJCQkJCQkJCQkgJmVveGFjdF9saXN0W2ld LAotCQkJCQkJCQkJCQkJCSBIQVNIX0ZJTkQsCi0JCQkJCQkJCQkJCQkJIE5VTEwpOworCQkJUmVs SWRDYWNoZUVudCAqaWRoZW50cnkgPSBoYXNoX3NlYXJjaChSZWxhdGlvbklkQ2FjaGUsCisJCQkJ CQkJCQkJCQkgICZlb3hhY3RfbGlzdFtpXSwKKwkJCQkJCQkJCQkJCSAgSEFTSF9GSU5ELAorCQkJ CQkJCQkJCQkJICBOVUxMKTsKKwogCQkJaWYgKGlkaGVudHJ5ICE9IE5VTEwpCiAJCQkJQXRFT1hh Y3RfY2xlYW51cChpZGhlbnRyeS0+cmVsZGVzYywgaXNDb21taXQpOwogCQl9CkBAIC0zMzcwLDgg KzMzNTksNiBAQCB2b2lkCiBBdEVPU3ViWGFjdF9SZWxhdGlvbkNhY2hlKGJvb2wgaXNDb21taXQs IFN1YlRyYW5zYWN0aW9uSWQgbXlTdWJpZCwKIAkJCQkJCSAgU3ViVHJhbnNhY3Rpb25JZCBwYXJl bnRTdWJpZCkKIHsKLQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCVJlbElkQ2FjaGVFbnQgKmlk aGVudHJ5OwogCWludAkJCWk7CiAKIAkvKgpAQCAtMzM4OSw4ICszMzc2LDcgQEAgQXRFT1N1Ylhh Y3RfUmVsYXRpb25DYWNoZShib29sIGlzQ29tbWl0LCBTdWJUcmFuc2FjdGlvbklkIG15U3ViaWQs CiAJICovCiAJaWYgKGVveGFjdF9saXN0X292ZXJmbG93ZWQpCiAJewotCQloYXNoX3NlcV9pbml0 KCZzdGF0dXMsIFJlbGF0aW9uSWRDYWNoZSk7Ci0JCXdoaWxlICgoaWRoZW50cnkgPSAoUmVsSWRD YWNoZUVudCAqKSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJCWZvcmVhY2hf aGFzaChSZWxJZENhY2hlRW50LCBpZGhlbnRyeSwgUmVsYXRpb25JZENhY2hlKQogCQl7CiAJCQlB dEVPU3ViWGFjdF9jbGVhbnVwKGlkaGVudHJ5LT5yZWxkZXNjLCBpc0NvbW1pdCwKIAkJCQkJCQkJ bXlTdWJpZCwgcGFyZW50U3ViaWQpOwpAQCAtMzQwMCw2ICszMzg2LDggQEAgQXRFT1N1YlhhY3Rf UmVsYXRpb25DYWNoZShib29sIGlzQ29tbWl0LCBTdWJUcmFuc2FjdGlvbklkIG15U3ViaWQsCiAJ ewogCQlmb3IgKGkgPSAwOyBpIDwgZW94YWN0X2xpc3RfbGVuOyBpKyspCiAJCXsKKwkJCVJlbElk Q2FjaGVFbnQgKmlkaGVudHJ5OworCiAJCQlpZGhlbnRyeSA9IChSZWxJZENhY2hlRW50ICopIGhh c2hfc2VhcmNoKFJlbGF0aW9uSWRDYWNoZSwKIAkJCQkJCQkJCQkJCQkgJmVveGFjdF9saXN0W2ld LAogCQkJCQkJCQkJCQkJCSBIQVNIX0ZJTkQsCkBAIC00MDk2LDggKzQwODQsNiBAQCBSZWxhdGlv bkNhY2hlSW5pdGlhbGl6ZVBoYXNlMih2b2lkKQogdm9pZAogUmVsYXRpb25DYWNoZUluaXRpYWxp emVQaGFzZTModm9pZCkKIHsKLQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCVJlbElkQ2FjaGVF bnQgKmlkaGVudHJ5OwogCU1lbW9yeUNvbnRleHQgb2xkY3h0OwogCWJvb2wJCW5lZWROZXdDYWNo ZUZpbGUgPSAhY3JpdGljYWxTaGFyZWRSZWxjYWNoZXNCdWlsdDsKIApAQCAtNDIzNCw5ICs0MjIw LDcgQEAgUmVsYXRpb25DYWNoZUluaXRpYWxpemVQaGFzZTModm9pZCkKIAkgKiBUaGlzIGlzIHRo ZW9yZXRpY2FsbHkgTyhOXjIpLCBidXQgdGhlIG51bWJlciBvZiBlbnRyaWVzIHRoYXQgYWN0dWFs bHkKIAkgKiBuZWVkIHRvIGJlIGZpeGVkIGlzIHNtYWxsIGVub3VnaCB0aGF0IGl0IGRvZXNuJ3Qg bWF0dGVyLgogCSAqLwotCWhhc2hfc2VxX2luaXQoJnN0YXR1cywgUmVsYXRpb25JZENhY2hlKTsK LQotCXdoaWxlICgoaWRoZW50cnkgPSAoUmVsSWRDYWNoZUVudCAqKSBoYXNoX3NlcV9zZWFyY2go JnN0YXR1cykpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKFJlbElkQ2FjaGVFbnQsIGlkaGVudHJ5 LCBSZWxhdGlvbklkQ2FjaGUpCiAJewogCQlSZWxhdGlvbglyZWxhdGlvbiA9IGlkaGVudHJ5LT5y ZWxkZXNjOwogCQlib29sCQlyZXN0YXJ0ID0gZmFsc2U7CkBAIC00MzQ2LDEwICs0MzMwLDcgQEAg UmVsYXRpb25DYWNoZUluaXRpYWxpemVQaGFzZTModm9pZCkKIAogCQkvKiBOb3csIHJlc3RhcnQg dGhlIGhhc2h0YWJsZSBzY2FuIGlmIG5lZWRlZCAqLwogCQlpZiAocmVzdGFydCkKLQkJewotCQkJ aGFzaF9zZXFfdGVybSgmc3RhdHVzKTsKLQkJCWhhc2hfc2VxX2luaXQoJnN0YXR1cywgUmVsYXRp b25JZENhY2hlKTsKLQkJfQorCQkJZm9yZWFjaF9oYXNoX3Jlc3RhcnQoaWRoZW50cnksIFJlbGF0 aW9uSWRDYWNoZSk7CiAJfQogCiAJLyoKQEAgLTY1NzgsOCArNjU1OSw2IEBAIHdyaXRlX3JlbGNh Y2hlX2luaXRfZmlsZShib29sIHNoYXJlZCkKIAljaGFyCQl0ZW1wZmlsZW5hbWVbTUFYUEdQQVRI XTsKIAljaGFyCQlmaW5hbGZpbGVuYW1lW01BWFBHUEFUSF07CiAJaW50CQkJbWFnaWM7Ci0JSEFT SF9TRVFfU1RBVFVTIHN0YXR1czsKLQlSZWxJZENhY2hlRW50ICppZGhlbnRyeTsKIAlpbnQJCQlp OwogCiAJLyoKQEAgLTY2MzksOSArNjYxOCw3IEBAIHdyaXRlX3JlbGNhY2hlX2luaXRfZmlsZShi b29sIHNoYXJlZCkKIAkvKgogCSAqIFdyaXRlIGFsbCB0aGUgYXBwcm9wcmlhdGUgcmVsZGVzY3Mg KGluIG5vIHBhcnRpY3VsYXIgb3JkZXIpLgogCSAqLwotCWhhc2hfc2VxX2luaXQoJnN0YXR1cywg UmVsYXRpb25JZENhY2hlKTsKLQotCXdoaWxlICgoaWRoZW50cnkgPSAoUmVsSWRDYWNoZUVudCAq KSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKFJlbElk Q2FjaGVFbnQsIGlkaGVudHJ5LCBSZWxhdGlvbklkQ2FjaGUpCiAJewogCQlSZWxhdGlvbglyZWwg PSBpZGhlbnRyeS0+cmVsZGVzYzsKIAkJRm9ybV9wZ19jbGFzcyByZWxmb3JtID0gcmVsLT5yZF9y ZWw7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxmaWxlbnVtYmVybWFw LmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxmaWxlbnVtYmVybWFwLmMKaW5kZXggMDli MDVkZWM5ZDAuLjAwZGY3ZGI0ODExIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9jYWNo ZS9yZWxmaWxlbnVtYmVybWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsZmls ZW51bWJlcm1hcC5jCkBAIC01MSwxNCArNTEsMTAgQEAgdHlwZWRlZiBzdHJ1Y3QKIHN0YXRpYyB2 b2lkCiBSZWxmaWxlbnVtYmVyTWFwSW52YWxpZGF0ZUNhbGxiYWNrKERhdHVtIGFyZywgT2lkIHJl bGlkKQogewotCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7Ci0JUmVsZmlsZW51bWJlck1hcEVudHJ5 ICplbnRyeTsKLQogCS8qIGNhbGxiYWNrIG9ubHkgZ2V0cyByZWdpc3RlcmVkIGFmdGVyIGNyZWF0 aW5nIHRoZSBoYXNoICovCiAJQXNzZXJ0KFJlbGZpbGVudW1iZXJNYXBIYXNoICE9IE5VTEwpOwog Ci0JaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBSZWxmaWxlbnVtYmVyTWFwSGFzaCk7Ci0Jd2hpbGUg KChlbnRyeSA9IChSZWxmaWxlbnVtYmVyTWFwRW50cnkgKikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0 dXMpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChSZWxmaWxlbnVtYmVyTWFwRW50cnksIGVudHJ5 LCBSZWxmaWxlbnVtYmVyTWFwSGFzaCkKIAl7CiAJCS8qCiAJCSAqIElmIHJlbGlkIGlzIEludmFs aWRPaWQsIHNpZ25hbGluZyBhIGNvbXBsZXRlIHJlc2V0LCB3ZSBtdXN0IHJlbW92ZQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvc3BjY2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0 aWxzL2NhY2hlL3NwY2NhY2hlLmMKaW5kZXggYmYwMDdkNjlhZDQuLjQ0ZTE5NDc2YzE2IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9zcGNjYWNoZS5jCisrKyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2NhY2hlL3NwY2NhY2hlLmMKQEAgLTU1LDExICs1NSw3IEBAIHR5cGVkZWYgc3Ry dWN0CiBzdGF0aWMgdm9pZAogSW52YWxpZGF0ZVRhYmxlU3BhY2VDYWNoZUNhbGxiYWNrKERhdHVt IGFyZywgaW50IGNhY2hlaWQsIHVpbnQzMiBoYXNodmFsdWUpCiB7Ci0JSEFTSF9TRVFfU1RBVFVT IHN0YXR1czsKLQlUYWJsZVNwYWNlQ2FjaGVFbnRyeSAqc3BjOwotCi0JaGFzaF9zZXFfaW5pdCgm c3RhdHVzLCBUYWJsZVNwYWNlQ2FjaGVIYXNoKTsKLQl3aGlsZSAoKHNwYyA9IChUYWJsZVNwYWNl Q2FjaGVFbnRyeSAqKSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJZm9yZWFj aF9oYXNoKFRhYmxlU3BhY2VDYWNoZUVudHJ5LCBzcGMsIFRhYmxlU3BhY2VDYWNoZUhhc2gpCiAJ ewogCQlpZiAoc3BjLT5vcHRzKQogCQkJcGZyZWUoc3BjLT5vcHRzKTsKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3V0aWxzL2NhY2hlL3RzX2NhY2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNo ZS90c19jYWNoZS5jCmluZGV4IGU5YWU0YTVmMDkzLi4wMTAxYWFhNjQxMCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvdHNfY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGls cy9jYWNoZS90c19jYWNoZS5jCkBAIC05NCwxMSArOTQsOCBAQCBzdGF0aWMgdm9pZAogSW52YWxp ZGF0ZVRTQ2FjaGVDYWxsQmFjayhEYXR1bSBhcmcsIGludCBjYWNoZWlkLCB1aW50MzIgaGFzaHZh bHVlKQogewogCUhUQUIJICAgKmhhc2ggPSAoSFRBQiAqKSBEYXR1bUdldFBvaW50ZXIoYXJnKTsK LQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCVRTQW55Q2FjaGVFbnRyeSAqZW50cnk7CiAKLQlo YXNoX3NlcV9pbml0KCZzdGF0dXMsIGhhc2gpOwotCXdoaWxlICgoZW50cnkgPSAoVFNBbnlDYWNo ZUVudHJ5ICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hh c2goVFNBbnlDYWNoZUVudHJ5LCBlbnRyeSwgaGFzaCkKIAkJZW50cnktPmlzdmFsaWQgPSBmYWxz ZTsKIAogCS8qIEFsc28gaW52YWxpZGF0ZSB0aGUgY3VycmVudC1jb25maWcgY2FjaGUgaWYgaXQn cyBwZ190c19jb25maWcgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3R5 cGNhY2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS90eXBjYWNoZS5jCmluZGV4IDU1ZmY5 NjllMDlmLi5hYTUyOTlhOGExYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUv dHlwY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS90eXBjYWNoZS5jCkBAIC0y NDY0LDE1ICsyNDY0LDEyIEBAIFR5cGVDYWNoZVJlbENhbGxiYWNrKERhdHVtIGFyZywgT2lkIHJl bGlkKQogCX0KIAllbHNlCiAJewotCQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCiAJCS8qCiAJ CSAqIFJlbGlkIGlzIGludmFsaWQuIEJ5IGNvbnZlbnRpb24sIHdlIG5lZWQgdG8gcmVzZXQgYWxs IGNvbXBvc2l0ZQogCQkgKiB0eXBlcyBpbiBjYWNoZS4gQWxzbywgd2Ugc2hvdWxkIHJlc2V0IGZs YWdzIGZvciBkb21haW4gdHlwZXMsIGFuZAogCQkgKiB3ZSBsb29wIG92ZXIgYWxsIGVudHJpZXMg aW4gaGFzaCwgc28sIGRvIGl0IGluIGEgc2luZ2xlIHNjYW4uCiAJCSAqLwotCQloYXNoX3NlcV9p bml0KCZzdGF0dXMsIFR5cGVDYWNoZUhhc2gpOwotCQl3aGlsZSAoKHR5cGVudHJ5ID0gKFR5cGVD YWNoZUVudHJ5ICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwkJZm9yZWFj aF9oYXNoKFR5cGVDYWNoZUVudHJ5LCB0eXBlbnRyeSwgVHlwZUNhY2hlSGFzaCkKIAkJewogCQkJ aWYgKHR5cGVudHJ5LT50eXB0eXBlID09IFRZUFRZUEVfQ09NUE9TSVRFKQogCQkJewpAQCAtMjU2 MiwxMiArMjU1OSw4IEBAIFR5cGVDYWNoZVR5cENhbGxiYWNrKERhdHVtIGFyZywgaW50IGNhY2hl aWQsIHVpbnQzMiBoYXNodmFsdWUpCiBzdGF0aWMgdm9pZAogVHlwZUNhY2hlT3BjQ2FsbGJhY2so RGF0dW0gYXJnLCBpbnQgY2FjaGVpZCwgdWludDMyIGhhc2h2YWx1ZSkKIHsKLQlIQVNIX1NFUV9T VEFUVVMgc3RhdHVzOwotCVR5cGVDYWNoZUVudHJ5ICp0eXBlbnRyeTsKLQogCS8qIFR5cGVDYWNo ZUhhc2ggbXVzdCBleGlzdCwgZWxzZSB0aGlzIGNhbGxiYWNrIHdvdWxkbid0IGJlIHJlZ2lzdGVy ZWQgKi8KLQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIFR5cGVDYWNoZUhhc2gpOwotCXdoaWxlICgo dHlwZW50cnkgPSAoVHlwZUNhY2hlRW50cnkgKikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMpKSAh PSBOVUxMKQorCWZvcmVhY2hfaGFzaChUeXBlQ2FjaGVFbnRyeSwgdHlwZW50cnksIFR5cGVDYWNo ZUhhc2gpCiAJewogCQlib29sCQloYWRPcGNsYXNzID0gKHR5cGVudHJ5LT5mbGFncyAmIFRDRkxB R1NfT1BFUkFUT1JfRkxBR1MpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNj L2d1Yy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMuYwppbmRleCA2MThkMDEwMGQzOC4u NjZlMzEzZDUzMWUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMKKysr IGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMuYwpAQCAtMjg4LDggKzI4OCw2IEBAIFByb2Nl c3NDb25maWdGaWxlSW50ZXJuYWwoR3VjQ29udGV4dCBjb250ZXh0LCBib29sIGFwcGx5U2V0dGlu Z3MsIGludCBlbGV2ZWwpCiAJY29uc3QgY2hhciAqQ29uZkZpbGVXaXRoRXJyb3I7CiAJQ29uZmln VmFyaWFibGUgKmhlYWQsCiAJCQkgICAqdGFpbDsKLQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwot CUdVQ0hhc2hFbnRyeSAqaGVudHJ5OwogCiAJLyogUGFyc2UgdGhlIG1haW4gY29uZmlnIGZpbGUg aW50byBhIGxpc3Qgb2Ygb3B0aW9uIG5hbWVzIGFuZCB2YWx1ZXMgKi8KIAlDb25mRmlsZVdpdGhF cnJvciA9IENvbmZpZ0ZpbGVOYW1lOwpAQCAtMzY0LDggKzM2Miw3IEBAIFByb2Nlc3NDb25maWdG aWxlSW50ZXJuYWwoR3VjQ29udGV4dCBjb250ZXh0LCBib29sIGFwcGx5U2V0dGluZ3MsIGludCBl bGV2ZWwpCiAJICogbmVlZCB0aGlzIHNvIHRoYXQgd2UgY2FuIHRlbGwgYmVsb3cgd2hpY2ggb25l cyBoYXZlIGJlZW4gcmVtb3ZlZCBmcm9tCiAJICogdGhlIGZpbGUgc2luY2Ugd2UgbGFzdCBwcm9j ZXNzZWQgaXQuCiAJICovCi0JaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBndWNfaGFzaHRhYik7Ci0J d2hpbGUgKChoZW50cnkgPSAoR1VDSGFzaEVudHJ5ICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVz KSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goR1VDSGFzaEVudHJ5LCBoZW50cnksIGd1Y19oYXNo dGFiKQogCXsKIAkJc3RydWN0IGNvbmZpZ19nZW5lcmljICpnY29uZiA9IGhlbnRyeS0+Z3VjdmFy OwogCkBAIC00NDksOCArNDQ2LDcgQEAgUHJvY2Vzc0NvbmZpZ0ZpbGVJbnRlcm5hbChHdWNDb250 ZXh0IGNvbnRleHQsIGJvb2wgYXBwbHlTZXR0aW5ncywgaW50IGVsZXZlbCkKIAkgKiBib290LXRp bWUgZGVmYXVsdHMuICBJZiBzdWNoIGEgdmFyaWFibGUgY2FuJ3QgYmUgY2hhbmdlZCBhZnRlciBz dGFydHVwLAogCSAqIHJlcG9ydCB0aGF0IGFuZCBjb250aW51ZS4KIAkgKi8KLQloYXNoX3NlcV9p bml0KCZzdGF0dXMsIGd1Y19oYXNodGFiKTsKLQl3aGlsZSAoKGhlbnRyeSA9IChHVUNIYXNoRW50 cnkgKikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChH VUNIYXNoRW50cnksIGhlbnRyeSwgZ3VjX2hhc2h0YWIpCiAJewogCQlzdHJ1Y3QgY29uZmlnX2dl bmVyaWMgKmdjb25mID0gaGVudHJ5LT5ndWN2YXI7CiAKQEAgLTgzOSw4ICs4MzUsNiBAQCBzdHJ1 Y3QgY29uZmlnX2dlbmVyaWMgKioKIGdldF9ndWNfdmFyaWFibGVzKGludCAqbnVtX3ZhcnMpCiB7 CiAJc3RydWN0IGNvbmZpZ19nZW5lcmljICoqcmVzdWx0OwotCUhBU0hfU0VRX1NUQVRVUyBzdGF0 dXM7Ci0JR1VDSGFzaEVudHJ5ICpoZW50cnk7CiAJaW50CQkJaTsKIAogCSpudW1fdmFycyA9IGhh c2hfZ2V0X251bV9lbnRyaWVzKGd1Y19oYXNodGFiKTsKQEAgLTg0OCw4ICs4NDIsNyBAQCBnZXRf Z3VjX3ZhcmlhYmxlcyhpbnQgKm51bV92YXJzKQogCiAJLyogRXh0cmFjdCBwb2ludGVycyBmcm9t IHRoZSBoYXNoIHRhYmxlICovCiAJaSA9IDA7Ci0JaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBndWNf aGFzaHRhYik7Ci0Jd2hpbGUgKChoZW50cnkgPSAoR1VDSGFzaEVudHJ5ICopIGhhc2hfc2VxX3Nl YXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goR1VDSGFzaEVudHJ5LCBoZW50 cnksIGd1Y19oYXNodGFiKQogCQlyZXN1bHRbaSsrXSA9IGhlbnRyeS0+Z3VjdmFyOwogCUFzc2Vy dChpID09ICpudW1fdmFycyk7CiAKQEAgLTE0MDAsOSArMTM5Myw2IEBAIGNoZWNrX0dVQ19pbml0 KGNvbnN0IHN0cnVjdCBjb25maWdfZ2VuZXJpYyAqZ2NvbmYpCiB2b2lkCiBJbml0aWFsaXplR1VD T3B0aW9ucyh2b2lkKQogewotCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7Ci0JR1VDSGFzaEVudHJ5 ICpoZW50cnk7Ci0KIAkvKgogCSAqIEJlZm9yZSBsb2dfbGluZV9wcmVmaXggY291bGQgcG9zc2li bHkgcmVjZWl2ZSBhIG5vbmVtcHR5IHNldHRpbmcsIG1ha2UKIAkgKiBzdXJlIHRoYXQgdGltZXpv bmUgcHJvY2Vzc2luZyBpcyBtaW5pbWFsbHkgYWxpdmUgKHNlZSBlbG9nLmMpLgpAQCAtMTQxOCw4 ICsxNDA4LDcgQEAgSW5pdGlhbGl6ZUdVQ09wdGlvbnModm9pZCkKIAkgKiBMb2FkIGFsbCB2YXJp YWJsZXMgd2l0aCB0aGVpciBjb21waWxlZC1pbiBkZWZhdWx0cywgYW5kIGluaXRpYWxpemUKIAkg KiBzdGF0dXMgZmllbGRzIGFzIG5lZWRlZC4KIAkgKi8KLQloYXNoX3NlcV9pbml0KCZzdGF0dXMs IGd1Y19oYXNodGFiKTsKLQl3aGlsZSAoKGhlbnRyeSA9IChHVUNIYXNoRW50cnkgKikgaGFzaF9z ZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChHVUNIYXNoRW50cnks IGhlbnRyeSwgZ3VjX2hhc2h0YWIpCiAJewogCQkvKiBDaGVjayBtYXBwaW5nIGJldHdlZW4gaW5p dGlhbCBhbmQgZGVmYXVsdCB2YWx1ZSAqLwogCQlBc3NlcnQoY2hlY2tfR1VDX2luaXQoaGVudHJ5 LT5ndWN2YXIpKTsKQEAgLTI0MTQsOSArMjQwMyw2IEBAIEF0RU9YYWN0X0dVQyhib29sIGlzQ29t bWl0LCBpbnQgbmVzdExldmVsKQogdm9pZAogQmVnaW5SZXBvcnRpbmdHVUNPcHRpb25zKHZvaWQp CiB7Ci0JSEFTSF9TRVFfU1RBVFVTIHN0YXR1czsKLQlHVUNIYXNoRW50cnkgKmhlbnRyeTsKLQog CS8qCiAJICogRG9uJ3QgZG8gYW55dGhpbmcgdW5sZXNzIHRhbGtpbmcgdG8gYW4gaW50ZXJhY3Rp dmUgZnJvbnRlbmQuCiAJICovCkBAIC0yNDM4LDggKzI0MjQsNyBAQCBCZWdpblJlcG9ydGluZ0dV Q09wdGlvbnModm9pZCkKIAkJCQkJCVBHQ19JTlRFUk5BTCwgUEdDX1NfT1ZFUlJJREUpOwogCiAJ LyogVHJhbnNtaXQgaW5pdGlhbCB2YWx1ZXMgb2YgaW50ZXJlc3RpbmcgdmFyaWFibGVzICovCi0J aGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBndWNfaGFzaHRhYik7Ci0Jd2hpbGUgKChoZW50cnkgPSAo R1VDSGFzaEVudHJ5ICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3Jl YWNoX2hhc2goR1VDSGFzaEVudHJ5LCBoZW50cnksIGd1Y19oYXNodGFiKQogCXsKIAkJc3RydWN0 IGNvbmZpZ19nZW5lcmljICpjb25mID0gaGVudHJ5LT5ndWN2YXI7CiAKQEAgLTUxNDIsMTYgKzUx MjcsMTMgQEAgdm9pZAogTWFya0dVQ1ByZWZpeFJlc2VydmVkKGNvbnN0IGNoYXIgKmNsYXNzTmFt ZSkKIHsKIAlpbnQJCQljbGFzc0xlbiA9IHN0cmxlbihjbGFzc05hbWUpOwotCUhBU0hfU0VRX1NU QVRVUyBzdGF0dXM7Ci0JR1VDSGFzaEVudHJ5ICpoZW50cnk7CiAJTWVtb3J5Q29udGV4dCBvbGRj b250ZXh0OwogCiAJLyoKIAkgKiBDaGVjayBmb3IgZXhpc3RpbmcgcGxhY2Vob2xkZXJzLiAgV2Ug bXVzdCBhY3R1YWxseSByZW1vdmUgaW52YWxpZAogCSAqIHBsYWNlaG9sZGVycywgZWxzZSBmdXR1 cmUgcGFyYWxsZWwgd29ya2VyIHN0YXJ0dXBzIHdpbGwgZmFpbC4KIAkgKi8KLQloYXNoX3NlcV9p bml0KCZzdGF0dXMsIGd1Y19oYXNodGFiKTsKLQl3aGlsZSAoKGhlbnRyeSA9IChHVUNIYXNoRW50 cnkgKikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChH VUNIYXNoRW50cnksIGhlbnRyeSwgZ3VjX2hhc2h0YWIpCiAJewogCQlzdHJ1Y3QgY29uZmlnX2dl bmVyaWMgKnZhciA9IGhlbnRyeS0+Z3VjdmFyOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91 dGlscy9tbWdyL3BvcnRhbG1lbS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9wb3J0YWxtZW0u YwppbmRleCAwYTEwODJmNDg0NS4uYTMxZjVlMGU2Y2EgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3V0aWxzL21tZ3IvcG9ydGFsbWVtLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9wb3J0 YWxtZW0uYwpAQCAtNjAyLDE0ICs2MDIsMTAgQEAgUG9ydGFsRHJvcChQb3J0YWwgcG9ydGFsLCBi b29sIGlzVG9wQ29tbWl0KQogdm9pZAogUG9ydGFsSGFzaFRhYmxlRGVsZXRlQWxsKHZvaWQpCiB7 Ci0JSEFTSF9TRVFfU1RBVFVTIHN0YXR1czsKLQlQb3J0YWxIYXNoRW50ICpoZW50cnk7Ci0KIAlp ZiAoUG9ydGFsSGFzaFRhYmxlID09IE5VTEwpCiAJCXJldHVybjsKIAotCWhhc2hfc2VxX2luaXQo JnN0YXR1cywgUG9ydGFsSGFzaFRhYmxlKTsKLQl3aGlsZSAoKGhlbnRyeSA9IGhhc2hfc2VxX3Nl YXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goUG9ydGFsSGFzaEVudCwgaGVu dHJ5LCBQb3J0YWxIYXNoVGFibGUpCiAJewogCQlQb3J0YWwJCXBvcnRhbCA9IGhlbnRyeS0+cG9y dGFsOwogCkBAIC02MjAsOCArNjE2LDcgQEAgUG9ydGFsSGFzaFRhYmxlRGVsZXRlQWxsKHZvaWQp CiAJCVBvcnRhbERyb3AocG9ydGFsLCBmYWxzZSk7CiAKIAkJLyogUmVzdGFydCB0aGUgaXRlcmF0 aW9uIGluIGNhc2UgdGhhdCBsZWQgdG8gb3RoZXIgZHJvcHMgKi8KLQkJaGFzaF9zZXFfdGVybSgm c3RhdHVzKTsKLQkJaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBQb3J0YWxIYXNoVGFibGUpOworCQlm b3JlYWNoX2hhc2hfcmVzdGFydChoZW50cnksIFBvcnRhbEhhc2hUYWJsZSk7CiAJfQogfQogCkBA IC02NzMsMTIgKzY2OCw4IEBAIGJvb2wKIFByZUNvbW1pdF9Qb3J0YWxzKGJvb2wgaXNQcmVwYXJl KQogewogCWJvb2wJCXJlc3VsdCA9IGZhbHNlOwotCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7Ci0J UG9ydGFsSGFzaEVudCAqaGVudHJ5OwotCi0JaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBQb3J0YWxI YXNoVGFibGUpOwogCi0Jd2hpbGUgKChoZW50cnkgPSAoUG9ydGFsSGFzaEVudCAqKSBoYXNoX3Nl cV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKFBvcnRhbEhhc2hFbnQs IGhlbnRyeSwgUG9ydGFsSGFzaFRhYmxlKQogCXsKIAkJUG9ydGFsCQlwb3J0YWwgPSBoZW50cnkt PnBvcnRhbDsKIApAQCAtNzYwLDggKzc1MSw3IEBAIFByZUNvbW1pdF9Qb3J0YWxzKGJvb2wgaXNQ cmVwYXJlKQogCQkgKiBpdGVyYXRpb24sIGJlY2F1c2Ugd2UgY291bGQgaGF2ZSBpbnZva2VkIHVz ZXItZGVmaW5lZCBjb2RlIHRoYXQKIAkJICogY2F1c2VkIGEgZHJvcCBvZiB0aGUgbmV4dCBwb3J0 YWwgaW4gdGhlIGhhc2ggY2hhaW4uCiAJCSAqLwotCQloYXNoX3NlcV90ZXJtKCZzdGF0dXMpOwot CQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIFBvcnRhbEhhc2hUYWJsZSk7CisJCWZvcmVhY2hfaGFz aF9yZXN0YXJ0KGhlbnRyeSwgUG9ydGFsSGFzaFRhYmxlKTsKIAl9CiAKIAlyZXR1cm4gcmVzdWx0 OwpAQCAtNzc2LDEyICs3NjYsNyBAQCBQcmVDb21taXRfUG9ydGFscyhib29sIGlzUHJlcGFyZSkK IHZvaWQKIEF0QWJvcnRfUG9ydGFscyh2b2lkKQogewotCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7 Ci0JUG9ydGFsSGFzaEVudCAqaGVudHJ5OwotCi0JaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBQb3J0 YWxIYXNoVGFibGUpOwotCi0Jd2hpbGUgKChoZW50cnkgPSAoUG9ydGFsSGFzaEVudCAqKSBoYXNo X3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKFBvcnRhbEhhc2hF bnQsIGhlbnRyeSwgUG9ydGFsSGFzaFRhYmxlKQogCXsKIAkJUG9ydGFsCQlwb3J0YWwgPSBoZW50 cnktPnBvcnRhbDsKIApAQCAtODU0LDEyICs4MzksNyBAQCBBdEFib3J0X1BvcnRhbHModm9pZCkK IHZvaWQKIEF0Q2xlYW51cF9Qb3J0YWxzKHZvaWQpCiB7Ci0JSEFTSF9TRVFfU1RBVFVTIHN0YXR1 czsKLQlQb3J0YWxIYXNoRW50ICpoZW50cnk7Ci0KLQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIFBv cnRhbEhhc2hUYWJsZSk7Ci0KLQl3aGlsZSAoKGhlbnRyeSA9IChQb3J0YWxIYXNoRW50ICopIGhh c2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goUG9ydGFsSGFz aEVudCwgaGVudHJ5LCBQb3J0YWxIYXNoVGFibGUpCiAJewogCQlQb3J0YWwJCXBvcnRhbCA9IGhl bnRyeS0+cG9ydGFsOwogCkBAIC05MTMsMTIgKzg5Myw3IEBAIEF0Q2xlYW51cF9Qb3J0YWxzKHZv aWQpCiB2b2lkCiBQb3J0YWxFcnJvckNsZWFudXAodm9pZCkKIHsKLQlIQVNIX1NFUV9TVEFUVVMg c3RhdHVzOwotCVBvcnRhbEhhc2hFbnQgKmhlbnRyeTsKLQotCWhhc2hfc2VxX2luaXQoJnN0YXR1 cywgUG9ydGFsSGFzaFRhYmxlKTsKLQotCXdoaWxlICgoaGVudHJ5ID0gKFBvcnRhbEhhc2hFbnQg KikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChQb3J0 YWxIYXNoRW50LCBoZW50cnksIFBvcnRhbEhhc2hUYWJsZSkKIAl7CiAJCVBvcnRhbAkJcG9ydGFs ID0gaGVudHJ5LT5wb3J0YWw7CiAKQEAgLTk0MiwxMiArOTE3LDcgQEAgQXRTdWJDb21taXRfUG9y dGFscyhTdWJUcmFuc2FjdGlvbklkIG15U3ViaWQsCiAJCQkJCWludCBwYXJlbnRMZXZlbCwKIAkJ CQkJUmVzb3VyY2VPd25lciBwYXJlbnRYYWN0T3duZXIpCiB7Ci0JSEFTSF9TRVFfU1RBVFVTIHN0 YXR1czsKLQlQb3J0YWxIYXNoRW50ICpoZW50cnk7Ci0KLQloYXNoX3NlcV9pbml0KCZzdGF0dXMs IFBvcnRhbEhhc2hUYWJsZSk7Ci0KLQl3aGlsZSAoKGhlbnRyeSA9IChQb3J0YWxIYXNoRW50ICop IGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goUG9ydGFs SGFzaEVudCwgaGVudHJ5LCBQb3J0YWxIYXNoVGFibGUpCiAJewogCQlQb3J0YWwJCXBvcnRhbCA9 IGhlbnRyeS0+cG9ydGFsOwogCkBAIC05NzgsMTIgKzk0OCw3IEBAIEF0U3ViQWJvcnRfUG9ydGFs cyhTdWJUcmFuc2FjdGlvbklkIG15U3ViaWQsCiAJCQkJICAgUmVzb3VyY2VPd25lciBteVhhY3RP d25lciwKIAkJCQkgICBSZXNvdXJjZU93bmVyIHBhcmVudFhhY3RPd25lcikKIHsKLQlIQVNIX1NF UV9TVEFUVVMgc3RhdHVzOwotCVBvcnRhbEhhc2hFbnQgKmhlbnRyeTsKLQotCWhhc2hfc2VxX2lu aXQoJnN0YXR1cywgUG9ydGFsSGFzaFRhYmxlKTsKLQotCXdoaWxlICgoaGVudHJ5ID0gKFBvcnRh bEhhc2hFbnQgKikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorCWZvcmVhY2hf aGFzaChQb3J0YWxIYXNoRW50LCBoZW50cnksIFBvcnRhbEhhc2hUYWJsZSkKIAl7CiAJCVBvcnRh bAkJcG9ydGFsID0gaGVudHJ5LT5wb3J0YWw7CiAKQEAgLTEwODgsMTIgKzEwNTMsNyBAQCBBdFN1 YkFib3J0X1BvcnRhbHMoU3ViVHJhbnNhY3Rpb25JZCBteVN1YmlkLAogdm9pZAogQXRTdWJDbGVh bnVwX1BvcnRhbHMoU3ViVHJhbnNhY3Rpb25JZCBteVN1YmlkKQogewotCUhBU0hfU0VRX1NUQVRV UyBzdGF0dXM7Ci0JUG9ydGFsSGFzaEVudCAqaGVudHJ5OwotCi0JaGFzaF9zZXFfaW5pdCgmc3Rh dHVzLCBQb3J0YWxIYXNoVGFibGUpOwotCi0Jd2hpbGUgKChoZW50cnkgPSAoUG9ydGFsSGFzaEVu dCAqKSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKFBv cnRhbEhhc2hFbnQsIGhlbnRyeSwgUG9ydGFsSGFzaFRhYmxlKQogCXsKIAkJUG9ydGFsCQlwb3J0 YWwgPSBoZW50cnktPnBvcnRhbDsKIApAQCAtMTEyOCw4ICsxMDg4LDYgQEAgRGF0dW0KIHBnX2N1 cnNvcihQR19GVU5DVElPTl9BUkdTKQogewogCVJldHVyblNldEluZm8gKnJzaW5mbyA9IChSZXR1 cm5TZXRJbmZvICopIGZjaW5mby0+cmVzdWx0aW5mbzsKLQlIQVNIX1NFUV9TVEFUVVMgaGFzaF9z ZXE7Ci0JUG9ydGFsSGFzaEVudCAqaGVudHJ5OwogCiAJLyoKIAkgKiBXZSBwdXQgYWxsIHRoZSB0 dXBsZXMgaW50byBhIHR1cGxlc3RvcmUgaW4gb25lIHNjYW4gb2YgdGhlIGhhc2h0YWJsZS4KQEAg LTExMzcsOCArMTA5NSw3IEBAIHBnX2N1cnNvcihQR19GVU5DVElPTl9BUkdTKQogCSAqLwogCUlu aXRNYXRlcmlhbGl6ZWRTUkYoZmNpbmZvLCAwKTsKIAotCWhhc2hfc2VxX2luaXQoJmhhc2hfc2Vx LCBQb3J0YWxIYXNoVGFibGUpOwotCXdoaWxlICgoaGVudHJ5ID0gaGFzaF9zZXFfc2VhcmNoKCZo YXNoX3NlcSkpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKFBvcnRhbEhhc2hFbnQsIGhlbnRyeSwg UG9ydGFsSGFzaFRhYmxlKQogCXsKIAkJUG9ydGFsCQlwb3J0YWwgPSBoZW50cnktPnBvcnRhbDsK IAkJRGF0dW0JCXZhbHVlc1s2XTsKQEAgLTExNjcsMTIgKzExMjQsNyBAQCBwZ19jdXJzb3IoUEdf RlVOQ1RJT05fQVJHUykKIGJvb2wKIFRoZXJlQXJlTm9SZWFkeVBvcnRhbHModm9pZCkKIHsKLQlI QVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCVBvcnRhbEhhc2hFbnQgKmhlbnRyeTsKLQotCWhhc2hf c2VxX2luaXQoJnN0YXR1cywgUG9ydGFsSGFzaFRhYmxlKTsKLQotCXdoaWxlICgoaGVudHJ5ID0g KFBvcnRhbEhhc2hFbnQgKikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorCWZv cmVhY2hfaGFzaChQb3J0YWxIYXNoRW50LCBoZW50cnksIFBvcnRhbEhhc2hUYWJsZSkKIAl7CiAJ CVBvcnRhbAkJcG9ydGFsID0gaGVudHJ5LT5wb3J0YWw7CiAKQEAgLTEyMDMsMTIgKzExNTUsNyBA QCBUaGVyZUFyZU5vUmVhZHlQb3J0YWxzKHZvaWQpCiB2b2lkCiBIb2xkUGlubmVkUG9ydGFscyh2 b2lkKQogewotCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7Ci0JUG9ydGFsSGFzaEVudCAqaGVudHJ5 OwotCi0JaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBQb3J0YWxIYXNoVGFibGUpOwotCi0Jd2hpbGUg KChoZW50cnkgPSAoUG9ydGFsSGFzaEVudCAqKSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9 IE5VTEwpCisJZm9yZWFjaF9oYXNoKFBvcnRhbEhhc2hFbnQsIGhlbnRyeSwgUG9ydGFsSGFzaFRh YmxlKQogCXsKIAkJUG9ydGFsCQlwb3J0YWwgPSBoZW50cnktPnBvcnRhbDsKIApAQCAtMTI1Miwx NSArMTE5OSwxMSBAQCBIb2xkUGlubmVkUG9ydGFscyh2b2lkKQogdm9pZAogRm9yZ2V0UG9ydGFs U25hcHNob3RzKHZvaWQpCiB7Ci0JSEFTSF9TRVFfU1RBVFVTIHN0YXR1czsKLQlQb3J0YWxIYXNo RW50ICpoZW50cnk7CiAJaW50CQkJbnVtUG9ydGFsU25hcHMgPSAwOwogCWludAkJCW51bUFjdGl2 ZVNuYXBzID0gMDsKIAogCS8qIEZpcnN0LCBzY2FuIFBvcnRhbEhhc2hUYWJsZSBhbmQgY2xlYXIg cG9ydGFsU25hcHNob3QgZmllbGRzICovCi0JaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBQb3J0YWxI YXNoVGFibGUpOwotCi0Jd2hpbGUgKChoZW50cnkgPSAoUG9ydGFsSGFzaEVudCAqKSBoYXNoX3Nl cV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKFBvcnRhbEhhc2hFbnQs IGhlbnRyeSwgUG9ydGFsSGFzaFRhYmxlKQogCXsKIAkJUG9ydGFsCQlwb3J0YWwgPSBoZW50cnkt PnBvcnRhbDsKIApkaWZmIC0tZ2l0IGEvc3JjL3BsL3BscGVybC9wbHBlcmwuYyBiL3NyYy9wbC9w bHBlcmwvcGxwZXJsLmMKaW5kZXggNDkwNDRiYzgwOGIuLjJjZmRmMjM5ZWU0IDEwMDY0NAotLS0g YS9zcmMvcGwvcGxwZXJsL3BscGVybC5jCisrKyBiL3NyYy9wbC9wbHBlcmwvcGxwZXJsLmMKQEAg LTUwMyw5ICs1MDMsNiBAQCBzZXRfaW50ZXJwX3JlcXVpcmUoYm9vbCB0cnVzdGVkKQogc3RhdGlj IHZvaWQKIHBscGVybF9maW5pKGludCBjb2RlLCBEYXR1bSBhcmcpCiB7Ci0JSEFTSF9TRVFfU1RB VFVTIGhhc2hfc2VxOwotCXBscGVybF9pbnRlcnBfZGVzYyAqaW50ZXJwX2Rlc2M7Ci0KIAllbG9n KERFQlVHMywgInBscGVybF9maW5pIik7CiAKIAkvKgpAQCAtNTI3LDggKzUyNCw3IEBAIHBscGVy bF9maW5pKGludCBjb2RlLCBEYXR1bSBhcmcpCiAJcGxwZXJsX2Rlc3Ryb3lfaW50ZXJwKCZwbHBl cmxfaGVsZF9pbnRlcnApOwogCiAJLyogWmFwIGFueSBmdWxseS1pbml0aWFsaXplZCBpbnRlcnBy ZXRlcnMgKi8KLQloYXNoX3NlcV9pbml0KCZoYXNoX3NlcSwgcGxwZXJsX2ludGVycF9oYXNoKTsK LQl3aGlsZSAoKGludGVycF9kZXNjID0gaGFzaF9zZXFfc2VhcmNoKCZoYXNoX3NlcSkpICE9IE5V TEwpCisJZm9yZWFjaF9oYXNoKHBscGVybF9pbnRlcnBfZGVzYywgaW50ZXJwX2Rlc2MsIHBscGVy bF9pbnRlcnBfaGFzaCkKIAl7CiAJCWlmIChpbnRlcnBfZGVzYy0+aW50ZXJwKQogCQl7Ci0tIAoy LjUyLjAKCg== --b61100c90bc4723abf16aa8e9e972a6bf2b76b698cfd62dcd856536e7901 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v5-0005-Inline-functions-that-have-now-become-trivial.patch Content-Type: text/x-patch; charset=utf-8; name=v5-0005-Inline-functions-that-have-now-become-trivial.patch RnJvbSA3NTgzMjliMjBjZjZkOTI2ZDk5YTZkNzNiYzA0ZGNlYjIzN2VlZTViIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBXZWQsIDMgRGVjIDIwMjUgMjM6MzM6MTggKzAxMDAKU3ViamVjdDogW1BBVENIIHY1 IDUvNV0gSW5saW5lIGZ1bmN0aW9ucyB0aGF0IGhhdmUgbm93IGJlY29tZSB0cml2aWFsCgotLS0K IHNyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYyAgICAgIHwgMTcgKysrLS0tLS0tLS0tLS0t LS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3NlcXVlbmNlLmMgICAgIHwgMTYgKysrLS0tLS0tLS0t LS0tLQogc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvZnVuY2NhY2hlLmMgfCAyMiArKysrLS0tLS0t LS0tLS0tLS0tLS0tCiAzIGZpbGVzIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKyksIDQ1IGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYwppbmRleCA0YWQ5YzEwYTdmOC4uYWQyZjJhYjEz ZWMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYworKysgYi9zcmMv YmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMKQEAgLTQ2LDcgKzQ2LDYgQEAKICAqLwogc3RhdGlj IEhUQUIgKnByZXBhcmVkX3F1ZXJpZXMgPSBOVUxMOwogCi1zdGF0aWMgdm9pZCBJbml0UXVlcnlI YXNoVGFibGUodm9pZCk7CiBzdGF0aWMgUGFyYW1MaXN0SW5mbyBFdmFsdWF0ZVBhcmFtcyhQYXJz ZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkJCQlQcmVwYXJlZFN0YXRlbWVudCAqcHN0bXQsIExpc3Qg KnBhcmFtcywKIAkJCQkJCQkJCUVTdGF0ZSAqZXN0YXRlKTsKQEAgLTM2NCwxOCArMzYzLDYgQEAg RXZhbHVhdGVQYXJhbXMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBQcmVwYXJlZFN0YXRlbWVudCAqcHN0 bXQsIExpc3QgKnBhcmFtcywKIAlyZXR1cm4gcGFyYW1MSTsKIH0KIAotCi0vKgotICogSW5pdGlh bGl6ZSBxdWVyeSBoYXNoIHRhYmxlIHVwb24gZmlyc3QgdXNlLgotICovCi1zdGF0aWMgdm9pZAot SW5pdFF1ZXJ5SGFzaFRhYmxlKHZvaWQpCi17Ci0JcHJlcGFyZWRfcXVlcmllcyA9IGhhc2hfbWFr ZV9jeHQoUHJlcGFyZWRTdGF0ZW1lbnQsIHN0bXRfbmFtZSwKLQkJCQkJCQkJCSAiUHJlcGFyZWQg UXVlcmllcyIsIDMyLAotCQkJCQkJCQkJIFRvcE1lbW9yeUNvbnRleHQpOwotfQotCiAvKgogICog U3RvcmUgYWxsIHRoZSBkYXRhIHBlcnRhaW5pbmcgdG8gYSBxdWVyeSBpbiB0aGUgaGFzaCB0YWJs ZSB1c2luZwogICogdGhlIHNwZWNpZmllZCBrZXkuICBUaGUgcGFzc2VkIENhY2hlZFBsYW5Tb3Vy Y2Ugc2hvdWxkIGJlICJ1bnNhdmVkIgpAQCAtMzkzLDcgKzM4MCw5IEBAIFN0b3JlUHJlcGFyZWRT dGF0ZW1lbnQoY29uc3QgY2hhciAqc3RtdF9uYW1lLAogCiAJLyogSW5pdGlhbGl6ZSB0aGUgaGFz aCB0YWJsZSwgaWYgbmVjZXNzYXJ5ICovCiAJaWYgKCFwcmVwYXJlZF9xdWVyaWVzKQotCQlJbml0 UXVlcnlIYXNoVGFibGUoKTsKKwkJcHJlcGFyZWRfcXVlcmllcyA9IGhhc2hfbWFrZV9jeHQoUHJl cGFyZWRTdGF0ZW1lbnQsIHN0bXRfbmFtZSwKKwkJCQkJCQkJCQkgIlByZXBhcmVkIFF1ZXJpZXMi LCAzMiwKKwkJCQkJCQkJCQkgVG9wTWVtb3J5Q29udGV4dCk7CiAKIAkvKiBBZGQgZW50cnkgdG8g aGFzaCB0YWJsZSAqLwogCWVudHJ5ID0gKFByZXBhcmVkU3RhdGVtZW50ICopIGhhc2hfc2VhcmNo KHByZXBhcmVkX3F1ZXJpZXMsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9zZXF1 ZW5jZS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc2VxdWVuY2UuYwppbmRleCA1YTI2ODNjMDcz NS4uNzRmNWFhNDlkNTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3NlcXVlbmNl LmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc2VxdWVuY2UuYwpAQCAtODksNyArODksNiBA QCBzdGF0aWMgU2VxVGFibGVEYXRhICpsYXN0X3VzZWRfc2VxID0gTlVMTDsKIHN0YXRpYyB2b2lk IGZpbGxfc2VxX3dpdGhfZGF0YShSZWxhdGlvbiByZWwsIEhlYXBUdXBsZSB0dXBsZSk7CiBzdGF0 aWMgdm9pZCBmaWxsX3NlcV9mb3JrX3dpdGhfZGF0YShSZWxhdGlvbiByZWwsIEhlYXBUdXBsZSB0 dXBsZSwgRm9ya051bWJlciBmb3JrTnVtKTsKIHN0YXRpYyBSZWxhdGlvbiBsb2NrX2FuZF9vcGVu X3NlcXVlbmNlKFNlcVRhYmxlIHNlcSk7Ci1zdGF0aWMgdm9pZCBjcmVhdGVfc2VxX2hhc2h0YWJs ZSh2b2lkKTsKIHN0YXRpYyB2b2lkIGluaXRfc2VxdWVuY2UoT2lkIHJlbGlkLCBTZXFUYWJsZSAq cF9lbG0sIFJlbGF0aW9uICpwX3JlbCk7CiBzdGF0aWMgRm9ybV9wZ19zZXF1ZW5jZV9kYXRhIHJl YWRfc2VxX3R1cGxlKFJlbGF0aW9uIHJlbCwKIAkJCQkJCQkJCQkJQnVmZmVyICpidWYsIEhlYXBU dXBsZSBzZXFkYXRhdHVwbGUpOwpAQCAtMTEwNywxNyArMTEwNiw2IEBAIGxvY2tfYW5kX29wZW5f c2VxdWVuY2UoU2VxVGFibGUgc2VxKQogCXJldHVybiBzZXF1ZW5jZV9vcGVuKHNlcS0+cmVsaWQs IE5vTG9jayk7CiB9CiAKLS8qCi0gKiBDcmVhdGVzIHRoZSBoYXNoIHRhYmxlIGZvciBzdG9yaW5n IHNlcXVlbmNlIGRhdGEKLSAqLwotc3RhdGljIHZvaWQKLWNyZWF0ZV9zZXFfaGFzaHRhYmxlKHZv aWQpCi17Ci0Jc2VxaGFzaHRhYiA9IGhhc2hfbWFrZV9jeHQoU2VxVGFibGVEYXRhLCByZWxpZCwK LQkJCQkJCQkgICAiU2VxdWVuY2UgdmFsdWVzIiwgMTYsCi0JCQkJCQkJICAgVG9wTWVtb3J5Q29u dGV4dCk7Ci19Ci0KIC8qCiAgKiBHaXZlbiBhIHJlbGF0aW9uIE9JRCwgb3BlbiBhbmQgbG9jayB0 aGUgc2VxdWVuY2UuICBwX2VsbSBhbmQgcF9yZWwgYXJlCiAgKiBvdXRwdXQgcGFyYW1ldGVycy4K QEAgLTExMzEsNyArMTExOSw5IEBAIGluaXRfc2VxdWVuY2UoT2lkIHJlbGlkLCBTZXFUYWJsZSAq cF9lbG0sIFJlbGF0aW9uICpwX3JlbCkKIAogCS8qIEZpbmQgb3IgY3JlYXRlIGEgaGFzaCB0YWJs ZSBlbnRyeSBmb3IgdGhpcyBzZXF1ZW5jZSAqLwogCWlmIChzZXFoYXNodGFiID09IE5VTEwpCi0J CWNyZWF0ZV9zZXFfaGFzaHRhYmxlKCk7CisJCXNlcWhhc2h0YWIgPSBoYXNoX21ha2VfY3h0KFNl cVRhYmxlRGF0YSwgcmVsaWQsCisJCQkJCQkJCSAgICJTZXF1ZW5jZSB2YWx1ZXMiLCAxNiwKKwkJ CQkJCQkJICAgVG9wTWVtb3J5Q29udGV4dCk7CiAKIAllbG0gPSAoU2VxVGFibGUpIGhhc2hfc2Vh cmNoKHNlcWhhc2h0YWIsICZyZWxpZCwgSEFTSF9FTlRFUiwgJmZvdW5kKTsKIApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvZnVuY2NhY2hlLmMgYi9zcmMvYmFja2VuZC91dGls cy9jYWNoZS9mdW5jY2FjaGUuYwppbmRleCBiZWY5MzhjMzdjMC4uMGU1YmZhMmE1NmEgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2Z1bmNjYWNoZS5jCisrKyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2NhY2hlL2Z1bmNjYWNoZS5jCkBAIC01MCwyMyArNTAsNiBAQCBzdGF0aWMgdWlu dDMyIGNmdW5jX2hhc2goY29uc3Qgdm9pZCAqa2V5LCBTaXplIGtleXNpemUpOwogc3RhdGljIGlu dAljZnVuY19tYXRjaChjb25zdCB2b2lkICprZXkxLCBjb25zdCB2b2lkICprZXkyLCBTaXplIGtl eXNpemUpOwogCiAKLS8qCi0gKiBJbml0aWFsaXplIHRoZSBoYXNoIHRhYmxlIG9uIGZpcnN0IHVz ZS4KLSAqCi0gKiBUaGUgaGFzaCB0YWJsZSB3aWxsIGJlIGluIFRvcE1lbW9yeUNvbnRleHQgcmVn YXJkbGVzcyBvZiBjYWxsZXIncyBjb250ZXh0LgotICovCi1zdGF0aWMgdm9pZAotY2Z1bmNfaGFz aHRhYmxlX2luaXQodm9pZCkKLXsKLQkvKiBkb24ndCBhbGxvdyBkb3VibGUtaW5pdGlhbGl6YXRp b24gKi8KLQlBc3NlcnQoY2Z1bmNfaGFzaHRhYmxlID09IE5VTEwpOwotCi0JY2Z1bmNfaGFzaHRh YmxlID0gaGFzaF9tYWtlX2ZuX2N4dChDYWNoZWRGdW5jdGlvbkhhc2hFbnRyeSwga2V5LAotCQkJ CQkJCQkJICAgIkNhY2hlZCBmdW5jdGlvbiBoYXNoIiwgRlVOQ1NfUEVSX1VTRVIsCi0JCQkJCQkJ CQkgICBjZnVuY19oYXNoLCBjZnVuY19tYXRjaCwKLQkJCQkJCQkJCSAgIFRvcE1lbW9yeUNvbnRl eHQpOwotfQotCiAvKgogICogY2Z1bmNfaGFzaDogaGFzaCBmdW5jdGlvbiBmb3IgY2Z1bmMgaGFz aCB0YWJsZQogICoKQEAgLTE2NSw3ICsxNDgsMTAgQEAgY2Z1bmNfaGFzaHRhYmxlX2luc2VydChD YWNoZWRGdW5jdGlvbiAqZnVuY3Rpb24sCiAJYm9vbAkJZm91bmQ7CiAKIAlpZiAoY2Z1bmNfaGFz aHRhYmxlID09IE5VTEwpCi0JCWNmdW5jX2hhc2h0YWJsZV9pbml0KCk7CisJCWNmdW5jX2hhc2h0 YWJsZSA9IGhhc2hfbWFrZV9mbl9jeHQoQ2FjaGVkRnVuY3Rpb25IYXNoRW50cnksIGtleSwKKwkJ CQkJCQkJCQkgICAiQ2FjaGVkIGZ1bmN0aW9uIGhhc2giLCBGVU5DU19QRVJfVVNFUiwKKwkJCQkJ CQkJCQkgICBjZnVuY19oYXNoLCBjZnVuY19tYXRjaCwKKwkJCQkJCQkJCQkgICBUb3BNZW1vcnlD b250ZXh0KTsKIAogCWhlbnRyeSA9IChDYWNoZWRGdW5jdGlvbkhhc2hFbnRyeSAqKSBoYXNoX3Nl YXJjaChjZnVuY19oYXNodGFibGUsCiAJCQkJCQkJCQkJCQkJIGZ1bmNfa2V5LAotLSAKMi41Mi4w Cgo= --b61100c90bc4723abf16aa8e9e972a6bf2b76b698cfd62dcd856536e7901--