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.94.2) (envelope-from ) id 1rQ2JU-00FytP-FA for pgsql-hackers@arkaria.postgresql.org; Wed, 17 Jan 2024 09:34:25 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1rQ2JT-00CKsn-K0 for pgsql-hackers@arkaria.postgresql.org; Wed, 17 Jan 2024 09:34:23 +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.94.2) (envelope-from ) id 1rQ2JT-00CKsf-34 for pgsql-hackers@lists.postgresql.org; Wed, 17 Jan 2024 09:34:23 +0000 Received: from mail-ed1-x531.google.com ([2a00:1450:4864:20::531]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1rQ2JP-002Gl6-VL for pgsql-hackers@lists.postgresql.org; Wed, 17 Jan 2024 09:34:22 +0000 Received: by mail-ed1-x531.google.com with SMTP id 4fb4d7f45d1cf-555e07761acso13062233a12.0 for ; Wed, 17 Jan 2024 01:34:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1705484059; x=1706088859; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=yhvAx7fEhnlhb2PMa9+WTp8N6c9RJzqFWyb164LAS2M=; b=PNc2oQMo616yClVsuToa+GFJwBfNdYUCMRl+Z2dUz8WwnIH1kd3ZB5CDygcLJ+aEeB y7VI4yVn2Gezaz1ub4UoXDcVpOqPAJYAA4kM+WgKhHTrXjj0waN6a6jcs3wFLYsIhZbj nPsJgwQHpJKiB1aVKMYvAVWrUCc772ME4iobpMjCxOlEZv+rCaHlfNS9DhqZDAljSnw2 YHByDliVG3hJXLIzULzPgE5xz+NV+L5ATinV39X95AFmXHwpNoki39iEr5oQ9pheEhTD H4Yaech4P7X8zdp8ldF2fxGbWRRaK0wBOjt3AJPK0Tj+d3gKEXMdlyZ722sP+0jXN2aC u9xA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1705484059; x=1706088859; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=yhvAx7fEhnlhb2PMa9+WTp8N6c9RJzqFWyb164LAS2M=; b=M5wOx2z5DZ1B4bREsSkV92URbu+MJRrvaKp63akDq6RXaVY8n07OlLGAaPXB6/bc/e ksO/8ENYUapLQxVh0XzHB9k00BX+6WW/M4vo1FQWNhFw9uU/VlZZQJDpCA2gWE+UyV9V WMuwEkjccpzwf4xU2y+eYy362vi5Uk3parRZNtPiXbA5s33BTlGym//WI4/qoPdH1V1P cTZ66moOyamGP7MLNjuhvGDpleYk6WIEMiQdOYKQys+AblsSXho8UoGI32PVhKkgIjEQ MGJ9t65RXE16LQQhoEPL/aGxHHd+3jAL8ZYKSxQKXy3YGozwWZOoaDEocE//YI8EziNv s8gg== X-Gm-Message-State: AOJu0YxD613wqasaBZ/+pA3AiYhw3p4qQnMBvRHTi4uPyqUWRxTqY7L7 EfeQbS7JxpVH3HGKVV9WFjzP5SgwrpqBZre/hjU= X-Google-Smtp-Source: AGHT+IEyCXxuZbbwf2u6+ekSVVCK0Ch3Yxrjaxs7DmI/p4wjak6rkBq3BIzzrsJYWXjlJtNMoU8KqmBeut/5D0h0RLk= X-Received: by 2002:a05:6402:3134:b0:559:52a0:f5dc with SMTP id dd20-20020a056402313400b0055952a0f5dcmr1609648edb.69.1705484058756; Wed, 17 Jan 2024 01:34:18 -0800 (PST) MIME-Version: 1.0 References: <04a3e4b3-3518-f8eb-d658-d3d83094354e@postgrespro.ru> <4b47ca57-39ce-aa3c-7b6f-6fc0d15a3d0d@postgrespro.ru> <09699133-2c45-4606-acb5-a235e7724466@app.fastmail.com> <953ffd67-863b-4bab-a424-29bff3a5100d@postgrespro.ru> In-Reply-To: From: Yuya Watari Date: Wed, 17 Jan 2024 18:33:42 +0900 Message-ID: Subject: Re: [PoC] Reducing planning time when tables have many partitions To: Alena Rybakina Cc: Andrei Lepikhov , Ashutosh Bapat , David Rowley , Thom Brown , Alvaro Herrera , Zhang Mingli , Tom Lane , PostgreSQL Developers Content-Type: multipart/mixed; boundary="0000000000007e2747060f20f334" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000007e2747060f20f334 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hello Alena, Thank you for your quick response, and I'm sorry for my delayed reply. On Sun, Dec 17, 2023 at 12:41=E2=80=AFAM Alena Rybakina wrote: > I thought about this earlier and was worried that the index links of the = equivalence classes might not be referenced correctly for outer joins, > so I decided to just overwrite them and reset the previous ones. Thank you for pointing this out. I have investigated this problem and found a potential bug place. The code quoted below modifies RestrictInfo's clause_relids. Here, our indexes, namely eclass_source_indexes and eclass_derive_indexes, are based on clause_relids, so they should be adjusted after the modification. However, my patch didn't do that, so it may have missed some references. The same problem occurs in places other than the quoted one. =3D=3D=3D=3D=3D /* * Walker function for replace_varno() */ static bool replace_varno_walker(Node *node, ReplaceVarnoContext *ctx) { ... else if (IsA(node, RestrictInfo)) { RestrictInfo *rinfo =3D (RestrictInfo *) node; ... if (bms_is_member(ctx->from, rinfo->clause_relids)) { replace_varno((Node *) rinfo->clause, ctx->from, ctx->to); replace_varno((Node *) rinfo->orclause, ctx->from, ctx->to); rinfo->clause_relids =3D replace_relid(rinfo->clause_relids, ctx->from, ctx->to); ... } ... } ... } =3D=3D=3D=3D=3D I have attached a new version of the patch, v23, to fix this problem. v23-0006 adds a helper function called update_clause_relids(). This function modifies RestrictInfo->clause_relids while adjusting its related indexes. I have also attached a sanity check patch (sanity-check.txt) to this email. This sanity check patch verifies that there are no missing references between RestrictInfos and our indexes. I don't intend to commit this patch, but it helps find potential bugs. v23 passes this sanity check, but the v21 you submitted before does not. This means that the adjustment by update_clause_relids() is needed to prevent missing references after modifying clause_relids. I'd appreciate your letting me know if v23 doesn't solve your concern. One of the things I don't think is good about my approach is that it adds some complexity to the code. In my approach, all modifications to clause_relids must be done through the update_clause_relids() function, but enforcing this rule is not so easy. In this sense, my patch may need to be simplified more. > this is due to the fact that I explained before: we zeroed the values ind= icated by the indexes, > then this check is not correct either - since the zeroed value indicated = by the index is correct. > That's why I removed this check. Thank you for letting me know. I fixed this in v23-0005 to adjust the indexes in update_eclasses(). With this change, the assertion check will be correct. --=20 Best regards, Yuya Watari --0000000000007e2747060f20f334 Content-Type: text/plain; charset="US-ASCII"; name="sanity-check.txt" Content-Disposition: attachment; filename="sanity-check.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lrhk1uzj6 ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2FuYWx5emVqb2lucy5jIGIv c3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vYW5hbHl6ZWpvaW5zLmMKaW5kZXggMmRhMmE2YzE0 ZS4uMzM0ZWE4ZDNiYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vYW5h bHl6ZWpvaW5zLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vYW5hbHl6ZWpvaW5z LmMKQEAgLTE3NTEsNiArMTc1MSw0OCBAQCB1cGRhdGVfZWNsYXNzZXMoUGxhbm5lckluZm8gKnJv b3QsIEVxdWl2YWxlbmNlQ2xhc3MgKmVjLCBpbnQgZnJvbSwgaW50IHRvKQogCWJtc19mcmVlKGVj LT5lY19zb3VyY2VfaW5kZXhlcyk7CiAJZWMtPmVjX3NvdXJjZV9pbmRleGVzID0gbmV3X3NvdXJj ZV9pbmRleGVzOwogCWVjLT5lY19yZWxpZHMgPSByZXBsYWNlX3JlbGlkKGVjLT5lY19yZWxpZHMs IGZyb20sIHRvKTsKKworI2lmZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJTkcKKwkvKgorCSAqIFNhbml0 eSBjaGVjazoKKwkgKiBWZXJpZnkgdGhhdCB0aGVyZSBhcmUgbm8gbWlzc2luZyByZWZlcmVuY2Vz IGJldHdlZW4gUmVzdHJpY3RJbmZvcyBhbmQKKwkgKiBvdXIgaW5kZXhlcywgbmFtZWx5IGVjbGFz c19zb3VyY2VfaW5kZXhlcyBhbmQgZWNsYXNzX2Rlcml2ZV9pbmRleGVzLgorCSAqLworCisJZm9y ZWFjaChsYywgcm9vdC0+ZXFfc291cmNlcykKKwl7CisJCVJlc3RyaWN0SW5mbyAqcmluZm8gPSBs Zmlyc3Rfbm9kZShSZXN0cmljdEluZm8sIGxjKTsKKwkJaW50CQkJaW5kZXg7CisJCWludAkJCWs7 CisKKwkJaWYgKHJpbmZvID09IE5VTEwpCisJCQljb250aW51ZTsKKworCQlpbmRleCA9IGxpc3Rf Y2VsbF9udW1iZXIocm9vdC0+ZXFfc291cmNlcywgbGMpOworCQlrID0gLTE7CisJCXdoaWxlICgo ayA9IGJtc19uZXh0X21lbWJlcihyaW5mby0+Y2xhdXNlX3JlbGlkcywgaykpID49IDApCisJCXsK KwkJCUFzc2VydChibXNfaXNfbWVtYmVyKGluZGV4LCByb290LT5zaW1wbGVfcnRlX2FycmF5W2td LT5lY2xhc3Nfc291cmNlX2luZGV4ZXMpKTsKKwkJfQorCX0KKworCWZvcmVhY2gobGMsIHJvb3Qt PmVxX2Rlcml2ZXMpCisJeworCQlSZXN0cmljdEluZm8gKnJpbmZvID0gbGZpcnN0X25vZGUoUmVz dHJpY3RJbmZvLCBsYyk7CisJCWludAkJCWluZGV4OworCQlpbnQJCQlrOworCisJCWlmIChyaW5m byA9PSBOVUxMKQorCQkJY29udGludWU7CisKKwkJaW5kZXggPSBsaXN0X2NlbGxfbnVtYmVyKHJv b3QtPmVxX2Rlcml2ZXMsIGxjKTsKKwkJayA9IC0xOworCQl3aGlsZSAoKGsgPSBibXNfbmV4dF9t ZW1iZXIocmluZm8tPmNsYXVzZV9yZWxpZHMsIGspKSA+PSAwKQorCQl7CisJCQlBc3NlcnQoYm1z X2lzX21lbWJlcihpbmRleCwgcm9vdC0+c2ltcGxlX3J0ZV9hcnJheVtrXS0+ZWNsYXNzX2Rlcml2 ZV9pbmRleGVzKSk7CisJCX0KKwl9CisjZW5kaWYKIH0KIAogLyoK --0000000000007e2747060f20f334 Content-Type: application/octet-stream; name="v23-0001-Speed-up-searches-for-child-EquivalenceMembers.patch" Content-Disposition: attachment; filename="v23-0001-Speed-up-searches-for-child-EquivalenceMembers.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lrhk0lpp0 RnJvbSBhOTU1NjZmYTQzZjAxYTQ1ODljYzMwMGZlMTk4NWJjODZhYmFiNmZkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBZdXlhIFdhdGFyaSA8d2F0YXJpLnl1eWFAZ21haWwuY29tPgpE YXRlOiBGcmksIDI1IEF1ZyAyMDIzIDEwOjQzOjM2ICswOTAwClN1YmplY3Q6IFtQQVRDSCB2MjMg MS82XSBTcGVlZCB1cCBzZWFyY2hlcyBmb3IgY2hpbGQgRXF1aXZhbGVuY2VNZW1iZXJzCgpUcmFk aXRpb25hbGx5LCBjaGlsZCBFcXVpdmFsZW5jZU1lbWJlcnMgd2VyZSBpbiB0aGUKRXF1aXZhbGVu Y2VDbGFzcy0+ZWNfbWVtYmVycy4gV2hlbiB3ZSB3YW50ZWQgdG8gZmluZCBzb21lIGNoaWxkIG1l bWJlcnMKbWF0Y2hpbmcgYSByZXF1ZXN0LCB3ZSBoYWQgdG8gcGVyZm9ybSBhIGxpbmVhciBzZWFy Y2guIFRoaXMgc2VhcmNoCmJlY2FtZSBoZWF2eSB3aGVuIHRhYmxlcyBoYWQgbWFueSBwYXJ0aXRp b25zLCBsZWFkaW5nIHRvIG11Y2ggcGxhbm5pbmcKdGltZS4KCkFmdGVyIHRoaXMgY29tbWl0LCBj aGlsZCBFcXVpdmFsZW5jZU1lbWJlcnMgbm8gbG9uZ2VyIGV4aXN0IGluCmVjX21lbWJlcnMuIElu c3RlYWQsIFJlbE9wdEluZm9zIGhhdmUgdGhlbS4gVGhpcyBjaGFuZ2UgZGVtb25zdHJhdGVzIGEK c2lnbmlmaWNhbnQgcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnQgaW4gcGxhbm5pbmcgdGltZS4KLS0t CiBjb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcuYyAgICAgICB8ICAyOSArLQogc3Jj L2JhY2tlbmQvbm9kZXMvb3V0ZnVuY3MuYyAgICAgICAgICAgICAgfCAgIDIgKwogc3JjL2JhY2tl bmQvb3B0aW1pemVyL3BhdGgvZXF1aXZjbGFzcy5jICAgfCA0MTQgKysrKysrKysrKysrKysrKysr LS0tLQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvaW5keHBhdGguYyAgICAgfCAgNDAgKyst CiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9wYXRoa2V5cy5jICAgICB8ICAgOSArLQogc3Jj L2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vYW5hbHl6ZWpvaW5zLmMgfCAgMTQgKy0KIHNyYy9iYWNr ZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYyAgIHwgIDU3ICstLQogc3JjL2JhY2tlbmQv b3B0aW1pemVyL3V0aWwvaW5oZXJpdC5jICAgICAgfCAgMTQgKwogc3JjL2JhY2tlbmQvb3B0aW1p emVyL3V0aWwvcmVsbm9kZS5jICAgICAgfCAgODggKysrKysKIHNyYy9pbmNsdWRlL25vZGVzL3Bh dGhub2Rlcy5oICAgICAgICAgICAgIHwgIDI2ICsrCiBzcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGF0 aG5vZGUuaCAgICAgICAgICB8ICAxOCArCiBzcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGF0aHMuaCAg ICAgICAgICAgICB8ICAgOSArLQogMTIgZmlsZXMgY2hhbmdlZCwgNjAzIGluc2VydGlvbnMoKyks IDExNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9jb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0 Z3Jlc19mZHcuYyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3Bvc3RncmVzX2Zkdy5jCmluZGV4IDE0 MmRjZmM5OTUuLmRiYWVmYWIxZjYgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3Bv c3RncmVzX2Zkdy5jCisrKyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3Bvc3RncmVzX2Zkdy5jCkBA IC03NzczLDEzICs3NzczLDI3IEBAIGNvbnZlcnNpb25fZXJyb3JfY2FsbGJhY2sodm9pZCAqYXJn KQogRXF1aXZhbGVuY2VNZW1iZXIgKgogZmluZF9lbV9mb3JfcmVsKFBsYW5uZXJJbmZvICpyb290 LCBFcXVpdmFsZW5jZUNsYXNzICplYywgUmVsT3B0SW5mbyAqcmVsKQogewotCUxpc3RDZWxsICAg KmxjOwotCiAJUGdGZHdSZWxhdGlvbkluZm8gKmZwaW5mbyA9IChQZ0Zkd1JlbGF0aW9uSW5mbyAq KSByZWwtPmZkd19wcml2YXRlOworCVJlbGlkcwkJdG9wX3BhcmVudF9yZWxfcmVsaWRzOworCUxp c3QJICAgKm1lbWJlcnM7CisJYm9vbAkJbW9kaWZpZWQ7CisJaW50CQkJaTsKIAotCWZvcmVhY2go bGMsIGVjLT5lY19tZW1iZXJzKQorCS8qIFNlZSB0aGUgY29tbWVudHMgaW4gZ2V0X2VjbGFzc19m b3Jfc29ydF9leHByKCkgdG8gc2VlIGhvdyB0aGlzIHdvcmtzLiAqLworCXRvcF9wYXJlbnRfcmVs X3JlbGlkcyA9IGZpbmRfcmVsaWRzX3RvcF9wYXJlbnRzKHJvb3QsIHJlbC0+cmVsaWRzKTsKKwor CW1lbWJlcnMgPSBlYy0+ZWNfbWVtYmVyczsKKwltb2RpZmllZCA9IGZhbHNlOworCWZvciAoaSA9 IDA7IGkgPCBsaXN0X2xlbmd0aChtZW1iZXJzKTsgaSsrKQogCXsKLQkJRXF1aXZhbGVuY2VNZW1i ZXIgKmVtID0gKEVxdWl2YWxlbmNlTWVtYmVyICopIGxmaXJzdChsYyk7CisJCUVxdWl2YWxlbmNl TWVtYmVyICplbSA9IGxpc3RfbnRoX25vZGUoRXF1aXZhbGVuY2VNZW1iZXIsIG1lbWJlcnMsIGkp OworCisJCS8qIFNlZSB0aGUgY29tbWVudHMgaW4gZ2V0X2VjbGFzc19mb3Jfc29ydF9leHByKCkg dG8gc2VlIGhvdyB0aGlzIHdvcmtzLiAqLworCQlpZiAodW5saWtlbHkodG9wX3BhcmVudF9yZWxf cmVsaWRzICE9IE5VTEwpICYmICFlbS0+ZW1faXNfY2hpbGQgJiYKKwkJCWJtc19pc19zdWJzZXQo ZW0tPmVtX3JlbGlkcywgdG9wX3BhcmVudF9yZWxfcmVsaWRzKSkKKwkJCWFkZF9jaGlsZF9yZWxf ZXF1aXZhbGVuY2VzX3RvX2xpc3Qocm9vdCwgZWMsIGVtLAorCQkJCQkJCQkJCQkgICByZWwtPnJl bGlkcywKKwkJCQkJCQkJCQkJICAgJm1lbWJlcnMsICZtb2RpZmllZCk7CiAKIAkJLyoKIAkJICog Tm90ZSB3ZSByZXF1aXJlICFibXNfaXNfZW1wdHksIGVsc2Ugd2UnZCBhY2NlcHQgY29uc3RhbnQK QEAgLTc3OTEsNiArNzgwNSw4IEBAIGZpbmRfZW1fZm9yX3JlbChQbGFubmVySW5mbyAqcm9vdCwg RXF1aXZhbGVuY2VDbGFzcyAqZWMsIFJlbE9wdEluZm8gKnJlbCkKIAkJCWlzX2ZvcmVpZ25fZXhw cihyb290LCByZWwsIGVtLT5lbV9leHByKSkKIAkJCXJldHVybiBlbTsKIAl9CisJaWYgKHVubGlr ZWx5KG1vZGlmaWVkKSkKKwkJbGlzdF9mcmVlKG1lbWJlcnMpOwogCiAJcmV0dXJuIE5VTEw7CiB9 CkBAIC03ODQ0LDkgKzc4NjAsOCBAQCBmaW5kX2VtX2Zvcl9yZWxfdGFyZ2V0KFBsYW5uZXJJbmZv ICpyb290LCBFcXVpdmFsZW5jZUNsYXNzICplYywKIAkJCWlmIChlbS0+ZW1faXNfY29uc3QpCiAJ CQkJY29udGludWU7CiAKLQkJCS8qIElnbm9yZSBjaGlsZCBtZW1iZXJzICovCi0JCQlpZiAoZW0t PmVtX2lzX2NoaWxkKQotCQkJCWNvbnRpbnVlOworCQkJLyogQ2hpbGQgbWVtYmVycyBzaG91bGQg bm90IGV4aXN0IGluIGVjX21lbWJlcnMgKi8KKwkJCUFzc2VydCghZW0tPmVtX2lzX2NoaWxkKTsK IAogCQkJLyogTWF0Y2ggaWYgc2FtZSBleHByZXNzaW9uIChhZnRlciBzdHJpcHBpbmcgcmVsYWJl bCkgKi8KIAkJCWVtX2V4cHIgPSBlbS0+ZW1fZXhwcjsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L25vZGVzL291dGZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9vdXRmdW5jcy5jCmluZGV4IDI5 NmJhODQ1MTguLjk3YWI1ZDM3NzAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL291dGZ1 bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvb3V0ZnVuY3MuYwpAQCAtNDYzLDYgKzQ2Myw4 IEBAIF9vdXRFcXVpdmFsZW5jZUNsYXNzKFN0cmluZ0luZm8gc3RyLCBjb25zdCBFcXVpdmFsZW5j ZUNsYXNzICpub2RlKQogCVdSSVRFX05PREVfRklFTEQoZWNfb3BmYW1pbGllcyk7CiAJV1JJVEVf T0lEX0ZJRUxEKGVjX2NvbGxhdGlvbik7CiAJV1JJVEVfTk9ERV9GSUVMRChlY19tZW1iZXJzKTsK KwlXUklURV9OT0RFX0ZJRUxEKGVjX25vcmVsX21lbWJlcnMpOworCVdSSVRFX05PREVfRklFTEQo ZWNfcmVsX21lbWJlcnMpOwogCVdSSVRFX05PREVfRklFTEQoZWNfc291cmNlcyk7CiAJV1JJVEVf Tk9ERV9GSUVMRChlY19kZXJpdmVzKTsKIAlXUklURV9CSVRNQVBTRVRfRklFTEQoZWNfcmVsaWRz KTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2VxdWl2Y2xhc3MuYyBi L3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2VxdWl2Y2xhc3MuYwppbmRleCBlODZkZmVhZWNk Li5kOWViNDYxMGNlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9lcXVp dmNsYXNzLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvZXF1aXZjbGFzcy5jCkBA IC0zMywxMCArMzMsMTQgQEAKICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKIAogCitzdGF0 aWMgRXF1aXZhbGVuY2VNZW1iZXIgKm1ha2VfZXFfbWVtYmVyKEVxdWl2YWxlbmNlQ2xhc3MgKmVj LAorCQkJCQkJCQkJCSBFeHByICpleHByLCBSZWxpZHMgcmVsaWRzLAorCQkJCQkJCQkJCSBKb2lu RG9tYWluICpqZG9tYWluLAorCQkJCQkJCQkJCSBFcXVpdmFsZW5jZU1lbWJlciAqcGFyZW50LAor CQkJCQkJCQkJCSBPaWQgZGF0YXR5cGUpOwogc3RhdGljIEVxdWl2YWxlbmNlTWVtYmVyICphZGRf ZXFfbWVtYmVyKEVxdWl2YWxlbmNlQ2xhc3MgKmVjLAogCQkJCQkJCQkJCUV4cHIgKmV4cHIsIFJl bGlkcyByZWxpZHMsCiAJCQkJCQkJCQkJSm9pbkRvbWFpbiAqamRvbWFpbiwKLQkJCQkJCQkJCQlF cXVpdmFsZW5jZU1lbWJlciAqcGFyZW50LAogCQkJCQkJCQkJCU9pZCBkYXRhdHlwZSk7CiBzdGF0 aWMgYm9vbCBpc19leHBybGlzdF9tZW1iZXIoRXhwciAqbm9kZSwgTGlzdCAqZXhwcnMpOwogc3Rh dGljIHZvaWQgZ2VuZXJhdGVfYmFzZV9pbXBsaWVkX2VxdWFsaXRpZXNfY29uc3QoUGxhbm5lcklu Zm8gKnJvb3QsCkBAIC02OSw2ICs3MywxMiBAQCBzdGF0aWMgYm9vbCByZWNvbnNpZGVyX291dGVy X2pvaW5fY2xhdXNlKFBsYW5uZXJJbmZvICpyb290LAogc3RhdGljIGJvb2wgcmVjb25zaWRlcl9m dWxsX2pvaW5fY2xhdXNlKFBsYW5uZXJJbmZvICpyb290LAogCQkJCQkJCQkJCU91dGVySm9pbkNs YXVzZUluZm8gKm9qY2luZm8pOwogc3RhdGljIEpvaW5Eb21haW4gKmZpbmRfam9pbl9kb21haW4o UGxhbm5lckluZm8gKnJvb3QsIFJlbGlkcyByZWxpZHMpOworc3RhdGljIHZvaWQgYWRkX3RyYW5z Zm9ybWVkX2NoaWxkX3ZlcnNpb24oUGxhbm5lckluZm8gKnJvb3QsCisJCQkJCQkJCQkJICBFcXVp dmFsZW5jZUNsYXNzICplYywKKwkJCQkJCQkJCQkgIEVxdWl2YWxlbmNlTWVtYmVyICpwYXJlbnRf ZW0sCisJCQkJCQkJCQkJICBSZWxPcHRJbmZvICpjaGlsZF9yZWwsCisJCQkJCQkJCQkJICBMaXN0 ICoqbGlzdCwKKwkJCQkJCQkJCQkgIGJvb2wgKm1vZGlmaWVkKTsKIHN0YXRpYyBCaXRtYXBzZXQg KmdldF9lY2xhc3NfaW5kZXhlc19mb3JfcmVsaWRzKFBsYW5uZXJJbmZvICpyb290LAogCQkJCQkJ CQkJCQkJUmVsaWRzIHJlbGlkcyk7CiBzdGF0aWMgQml0bWFwc2V0ICpnZXRfY29tbW9uX2VjbGFz c19pbmRleGVzKFBsYW5uZXJJbmZvICpyb290LCBSZWxpZHMgcmVsaWRzMSwKQEAgLTM0Miw2ICsz NTIsMTAgQEAgcHJvY2Vzc19lcXVpdmFsZW5jZShQbGFubmVySW5mbyAqcm9vdCwKIAkJICogYmUg Zm91bmQuCiAJCSAqLwogCQllYzEtPmVjX21lbWJlcnMgPSBsaXN0X2NvbmNhdChlYzEtPmVjX21l bWJlcnMsIGVjMi0+ZWNfbWVtYmVycyk7CisJCWVjMS0+ZWNfbm9yZWxfbWVtYmVycyA9IGxpc3Rf Y29uY2F0KGVjMS0+ZWNfbm9yZWxfbWVtYmVycywKKwkJCQkJCQkJCQkJZWMyLT5lY19ub3JlbF9t ZW1iZXJzKTsKKwkJZWMxLT5lY19yZWxfbWVtYmVycyA9IGxpc3RfY29uY2F0KGVjMS0+ZWNfcmVs X21lbWJlcnMsCisJCQkJCQkJCQkJICBlYzItPmVjX3JlbF9tZW1iZXJzKTsKIAkJZWMxLT5lY19z b3VyY2VzID0gbGlzdF9jb25jYXQoZWMxLT5lY19zb3VyY2VzLCBlYzItPmVjX3NvdXJjZXMpOwog CQllYzEtPmVjX2Rlcml2ZXMgPSBsaXN0X2NvbmNhdChlYzEtPmVjX2Rlcml2ZXMsIGVjMi0+ZWNf ZGVyaXZlcyk7CiAJCWVjMS0+ZWNfcmVsaWRzID0gYm1zX2pvaW4oZWMxLT5lY19yZWxpZHMsIGVj Mi0+ZWNfcmVsaWRzKTsKQEAgLTM1NSw2ICszNjksOCBAQCBwcm9jZXNzX2VxdWl2YWxlbmNlKFBs YW5uZXJJbmZvICpyb290LAogCQlyb290LT5lcV9jbGFzc2VzID0gbGlzdF9kZWxldGVfbnRoX2Nl bGwocm9vdC0+ZXFfY2xhc3NlcywgZWMyX2lkeCk7CiAJCS8qIGp1c3QgdG8gYXZvaWQgZGVidWdn aW5nIGNvbmZ1c2lvbiB3LyBkYW5nbGluZyBwb2ludGVyczogKi8KIAkJZWMyLT5lY19tZW1iZXJz ID0gTklMOworCQllYzItPmVjX25vcmVsX21lbWJlcnMgPSBOSUw7CisJCWVjMi0+ZWNfcmVsX21l bWJlcnMgPSBOSUw7CiAJCWVjMi0+ZWNfc291cmNlcyA9IE5JTDsKIAkJZWMyLT5lY19kZXJpdmVz ID0gTklMOwogCQllYzItPmVjX3JlbGlkcyA9IE5VTEw7CkBAIC0zNzQsNyArMzkwLDcgQEAgcHJv Y2Vzc19lcXVpdmFsZW5jZShQbGFubmVySW5mbyAqcm9vdCwKIAl7CiAJCS8qIENhc2UgMzogYWRk IGl0ZW0yIHRvIGVjMSAqLwogCQllbTIgPSBhZGRfZXFfbWVtYmVyKGVjMSwgaXRlbTIsIGl0ZW0y X3JlbGlkcywKLQkJCQkJCQlqZG9tYWluLCBOVUxMLCBpdGVtMl90eXBlKTsKKwkJCQkJCQlqZG9t YWluLCBpdGVtMl90eXBlKTsKIAkJZWMxLT5lY19zb3VyY2VzID0gbGFwcGVuZChlYzEtPmVjX3Nv dXJjZXMsIHJlc3RyaWN0aW5mbyk7CiAJCWVjMS0+ZWNfbWluX3NlY3VyaXR5ID0gTWluKGVjMS0+ ZWNfbWluX3NlY3VyaXR5LAogCQkJCQkJCQkgICByZXN0cmljdGluZm8tPnNlY3VyaXR5X2xldmVs KTsKQEAgLTM5MSw3ICs0MDcsNyBAQCBwcm9jZXNzX2VxdWl2YWxlbmNlKFBsYW5uZXJJbmZvICpy b290LAogCXsKIAkJLyogQ2FzZSAzOiBhZGQgaXRlbTEgdG8gZWMyICovCiAJCWVtMSA9IGFkZF9l cV9tZW1iZXIoZWMyLCBpdGVtMSwgaXRlbTFfcmVsaWRzLAotCQkJCQkJCWpkb21haW4sIE5VTEws IGl0ZW0xX3R5cGUpOworCQkJCQkJCWpkb21haW4sIGl0ZW0xX3R5cGUpOwogCQllYzItPmVjX3Nv dXJjZXMgPSBsYXBwZW5kKGVjMi0+ZWNfc291cmNlcywgcmVzdHJpY3RpbmZvKTsKIAkJZWMyLT5l Y19taW5fc2VjdXJpdHkgPSBNaW4oZWMyLT5lY19taW5fc2VjdXJpdHksCiAJCQkJCQkJCSAgIHJl c3RyaWN0aW5mby0+c2VjdXJpdHlfbGV2ZWwpOwpAQCAtNDEyLDYgKzQyOCw4IEBAIHByb2Nlc3Nf ZXF1aXZhbGVuY2UoUGxhbm5lckluZm8gKnJvb3QsCiAJCWVjLT5lY19vcGZhbWlsaWVzID0gb3Bm YW1pbGllczsKIAkJZWMtPmVjX2NvbGxhdGlvbiA9IGNvbGxhdGlvbjsKIAkJZWMtPmVjX21lbWJl cnMgPSBOSUw7CisJCWVjLT5lY19ub3JlbF9tZW1iZXJzID0gTklMOworCQllYy0+ZWNfcmVsX21l bWJlcnMgPSBOSUw7CiAJCWVjLT5lY19zb3VyY2VzID0gbGlzdF9tYWtlMShyZXN0cmljdGluZm8p OwogCQllYy0+ZWNfZGVyaXZlcyA9IE5JTDsKIAkJZWMtPmVjX3JlbGlkcyA9IE5VTEw7CkBAIC00 MjMsOSArNDQxLDkgQEAgcHJvY2Vzc19lcXVpdmFsZW5jZShQbGFubmVySW5mbyAqcm9vdCwKIAkJ ZWMtPmVjX21heF9zZWN1cml0eSA9IHJlc3RyaWN0aW5mby0+c2VjdXJpdHlfbGV2ZWw7CiAJCWVj LT5lY19tZXJnZWQgPSBOVUxMOwogCQllbTEgPSBhZGRfZXFfbWVtYmVyKGVjLCBpdGVtMSwgaXRl bTFfcmVsaWRzLAotCQkJCQkJCWpkb21haW4sIE5VTEwsIGl0ZW0xX3R5cGUpOworCQkJCQkJCWpk b21haW4sIGl0ZW0xX3R5cGUpOwogCQllbTIgPSBhZGRfZXFfbWVtYmVyKGVjLCBpdGVtMiwgaXRl bTJfcmVsaWRzLAotCQkJCQkJCWpkb21haW4sIE5VTEwsIGl0ZW0yX3R5cGUpOworCQkJCQkJCWpk b21haW4sIGl0ZW0yX3R5cGUpOwogCiAJCXJvb3QtPmVxX2NsYXNzZXMgPSBsYXBwZW5kKHJvb3Qt PmVxX2NsYXNzZXMsIGVjKTsKIApAQCAtNTExLDExICs1MjksMTQgQEAgY2Fub25pY2FsaXplX2Vj X2V4cHJlc3Npb24oRXhwciAqZXhwciwgT2lkIHJlcV90eXBlLCBPaWQgcmVxX2NvbGxhdGlvbikK IH0KIAogLyoKLSAqIGFkZF9lcV9tZW1iZXIgLSBidWlsZCBhIG5ldyBFcXVpdmFsZW5jZU1lbWJl ciBhbmQgYWRkIGl0IHRvIGFuIEVDCisgKiBtYWtlX2VxX21lbWJlcgorICoKKyAqIEJ1aWxkIGEg bmV3IEVxdWl2YWxlbmNlTWVtYmVyIHdpdGhvdXQgYWRkaW5nIGl0IHRvIGFuIEVDLiBOb3RlIHRo YXQgY2hpbGQKKyAqIEVxdWl2YWxlbmNlTWVtYmVycyBzaG91bGQgbm90IGJlIGFkZGVkIHRvIGl0 cyBwYXJlbnQgRXF1aXZhbGVuY2VDbGFzcy4KICAqLwogc3RhdGljIEVxdWl2YWxlbmNlTWVtYmVy ICoKLWFkZF9lcV9tZW1iZXIoRXF1aXZhbGVuY2VDbGFzcyAqZWMsIEV4cHIgKmV4cHIsIFJlbGlk cyByZWxpZHMsCi0JCQkgIEpvaW5Eb21haW4gKmpkb21haW4sIEVxdWl2YWxlbmNlTWVtYmVyICpw YXJlbnQsIE9pZCBkYXRhdHlwZSkKK21ha2VfZXFfbWVtYmVyKEVxdWl2YWxlbmNlQ2xhc3MgKmVj LCBFeHByICpleHByLCBSZWxpZHMgcmVsaWRzLAorCQkJICAgSm9pbkRvbWFpbiAqamRvbWFpbiwg RXF1aXZhbGVuY2VNZW1iZXIgKnBhcmVudCwgT2lkIGRhdGF0eXBlKQogewogCUVxdWl2YWxlbmNl TWVtYmVyICplbSA9IG1ha2VOb2RlKEVxdWl2YWxlbmNlTWVtYmVyKTsKIApAQCAtNTI2LDYgKzU0 Nyw4IEBAIGFkZF9lcV9tZW1iZXIoRXF1aXZhbGVuY2VDbGFzcyAqZWMsIEV4cHIgKmV4cHIsIFJl bGlkcyByZWxpZHMsCiAJZW0tPmVtX2RhdGF0eXBlID0gZGF0YXR5cGU7CiAJZW0tPmVtX2pkb21h aW4gPSBqZG9tYWluOwogCWVtLT5lbV9wYXJlbnQgPSBwYXJlbnQ7CisJZW0tPmVtX2NoaWxkX3Jl bGlkcyA9IE5VTEw7CisJZW0tPmVtX2NoaWxkX2pvaW5yZWxfcmVsaWRzID0gTlVMTDsKIAogCWlm IChibXNfaXNfZW1wdHkocmVsaWRzKSkKIAl7CkBAIC01NDYsOCArNTY5LDM0IEBAIGFkZF9lcV9t ZW1iZXIoRXF1aXZhbGVuY2VDbGFzcyAqZWMsIEV4cHIgKmV4cHIsIFJlbGlkcyByZWxpZHMsCiAJ ewogCQllYy0+ZWNfcmVsaWRzID0gYm1zX2FkZF9tZW1iZXJzKGVjLT5lY19yZWxpZHMsIHJlbGlk cyk7CiAJfQorCisJcmV0dXJuIGVtOworfQorCisvKgorICogYWRkX2VxX21lbWJlciAtIGJ1aWxk IGEgbmV3IEVxdWl2YWxlbmNlTWVtYmVyIGFuZCBhZGQgaXQgdG8gYW4gRUMKKyAqLworc3RhdGlj IEVxdWl2YWxlbmNlTWVtYmVyICoKK2FkZF9lcV9tZW1iZXIoRXF1aXZhbGVuY2VDbGFzcyAqZWMs IEV4cHIgKmV4cHIsIFJlbGlkcyByZWxpZHMsCisJCQkgIEpvaW5Eb21haW4gKmpkb21haW4sIE9p ZCBkYXRhdHlwZSkKK3sKKwlFcXVpdmFsZW5jZU1lbWJlciAqZW0gPSBtYWtlX2VxX21lbWJlcihl YywgZXhwciwgcmVsaWRzLCBqZG9tYWluLAorCQkJCQkJCQkJCSAgIE5VTEwsIGRhdGF0eXBlKTsK KwogCWVjLT5lY19tZW1iZXJzID0gbGFwcGVuZChlYy0+ZWNfbWVtYmVycywgZW0pOwogCisJLyoK KwkgKiBUaGUgZXhhY3Qgc2V0IG9mIHJlbGlkcyBpbiB0aGUgZXhwciBmb3Igbm9uLWNoaWxkIEVx dWl2YWxlbmNlTWVtYmVycworCSAqIGFzIHdoYXQgaXMgZ2l2ZW4gdG8gdXMgaW4gJ3JlbGlkcycg c2hvdWxkIGJlIHRoZSBzYW1lIGFzIHRoZSByZWxpZHMKKwkgKiBtZW50aW9uZWQgaW4gdGhlIGV4 cHJlc3Npb24uICBTZWUgYWRkX2NoaWxkX3JlbF9lcXVpdmFsZW5jZXMuCisJICovCisJLyogWFhY IFdlIG5lZWQgUGxhbm5lckluZm8gdG8gdXNlIHRoZSBmb2xsb3dpbmcgYXNzZXJ0aW9uICovCisJ LyogQXNzZXJ0KGJtc19lcXVhbChwdWxsX3Zhcm5vcyhyb290LCAoTm9kZSAqKSBleHByKSwgcmVs aWRzKSk7ICovCisJaWYgKGJtc19pc19lbXB0eShyZWxpZHMpKQorCQllYy0+ZWNfbm9yZWxfbWVt YmVycyA9IGxhcHBlbmQoZWMtPmVjX25vcmVsX21lbWJlcnMsIGVtKTsKKwllbHNlCisJCWVjLT5l Y19yZWxfbWVtYmVycyA9IGxhcHBlbmQoZWMtPmVjX3JlbF9tZW1iZXJzLCBlbSk7CisKIAlyZXR1 cm4gZW07CiB9CiAKQEAgLTU5OSw2ICs2NDgsMTcgQEAgZ2V0X2VjbGFzc19mb3Jfc29ydF9leHBy KFBsYW5uZXJJbmZvICpyb290LAogCUVxdWl2YWxlbmNlTWVtYmVyICpuZXdlbTsKIAlMaXN0Q2Vs bCAgICpsYzE7CiAJTWVtb3J5Q29udGV4dCBvbGRjb250ZXh0OworCVJlbGlkcwkJdG9wX3BhcmVu dF9yZWw7CisKKwkvKgorCSAqIEZpcnN0LCB3ZSB0cmFuc2xhdGUgdGhlIGdpdmVuIFJlbGlkcyB0 byB0aGVpciB0b3AtbGV2ZWwgcGFyZW50cy4gVGhpcyBpcworCSAqIHJlcXVpcmVkIGJlY2F1c2Ug YW4gRXF1aXZhbGVuY2VDbGFzcyBjb250YWlucyBvbmx5IHBhcmVudAorCSAqIEVxdWl2YWxlbmNl TWVtYmVycywgYW5kIHdlIGhhdmUgdG8gdHJhbnNsYXRlIHRvcC1sZXZlbCBvbmVzIHRvIGdldCBj aGlsZAorCSAqIG1lbWJlcnMuIFdlIGNhbiBza2lwIHN1Y2ggdHJhbnNsYXRpb25zIGlmIHdlIG5v dyBzZWUgdG9wLWxldmVsIG9uZXMsCisJICogaS5lLiwgd2hlbiB0b3BfcGFyZW50X3JlbCBpcyBO VUxMLiBTZWUgdGhlIGZpbmRfcmVsaWRzX3RvcF9wYXJlbnRzKCkncworCSAqIGRlZmluaXRpb24g Zm9yIG1vcmUgZGV0YWlscy4KKwkgKi8KKwl0b3BfcGFyZW50X3JlbCA9IGZpbmRfcmVsaWRzX3Rv cF9wYXJlbnRzKHJvb3QsIHJlbCk7CiAKIAkvKgogCSAqIEVuc3VyZSB0aGUgZXhwcmVzc2lvbiBl eHBvc2VzIHRoZSBjb3JyZWN0IHR5cGUgYW5kIGNvbGxhdGlvbi4KQEAgLTYxNyw3ICs2NzcsOSBA QCBnZXRfZWNsYXNzX2Zvcl9zb3J0X2V4cHIoUGxhbm5lckluZm8gKnJvb3QsCiAJZm9yZWFjaChs YzEsIHJvb3QtPmVxX2NsYXNzZXMpCiAJewogCQlFcXVpdmFsZW5jZUNsYXNzICpjdXJfZWMgPSAo RXF1aXZhbGVuY2VDbGFzcyAqKSBsZmlyc3QobGMxKTsKLQkJTGlzdENlbGwgICAqbGMyOworCQlM aXN0CSAgICptZW1iZXJzOworCQlib29sCQltb2RpZmllZDsKKwkJaW50CQkJaTsKIAogCQkvKgog CQkgKiBOZXZlciBtYXRjaCB0byBhIHZvbGF0aWxlIEVDLCBleGNlcHQgd2hlbiB3ZSBhcmUgbG9v a2luZyBhdCBhbm90aGVyCkBAIC02MzIsMTYgKzY5NCwzNSBAQCBnZXRfZWNsYXNzX2Zvcl9zb3J0 X2V4cHIoUGxhbm5lckluZm8gKnJvb3QsCiAJCWlmICghZXF1YWwob3BmYW1pbGllcywgY3VyX2Vj LT5lY19vcGZhbWlsaWVzKSkKIAkJCWNvbnRpbnVlOwogCi0JCWZvcmVhY2gobGMyLCBjdXJfZWMt PmVjX21lbWJlcnMpCisJCS8qCisJCSAqIFdoZW4gd2UgaGF2ZSB0byBzZWUgY2hpbGQgRXF1aXZh bGVuY2VNZW1iZXJzLCB3ZSBnZXQgYW5kIGFkZCB0aGVtIHRvCisJCSAqICdtZW1iZXJzJy4gV2Ug Y2Fubm90IHVzZSBmb3JlYWNoKCkgYmVjYXVzZSB0aGUgJ21lbWJlcnMnIG1heSBiZQorCQkgKiBt b2RpZmllZCBkdXJpbmcgaXRlcmF0aW9uLgorCQkgKi8KKwkJbWVtYmVycyA9IGN1cl9lYy0+ZWNf bWVtYmVyczsKKwkJbW9kaWZpZWQgPSBmYWxzZTsKKwkJZm9yIChpID0gMDsgaSA8IGxpc3RfbGVu Z3RoKG1lbWJlcnMpOyBpKyspCiAJCXsKLQkJCUVxdWl2YWxlbmNlTWVtYmVyICpjdXJfZW0gPSAo RXF1aXZhbGVuY2VNZW1iZXIgKikgbGZpcnN0KGxjMik7CisJCQlFcXVpdmFsZW5jZU1lbWJlciAq Y3VyX2VtID0gbGlzdF9udGhfbm9kZShFcXVpdmFsZW5jZU1lbWJlciwgbWVtYmVycywgaSk7CisK KwkJCS8qCisJCQkgKiBJZiBjaGlsZCBFcXVpdmFsZW5jZU1lbWJlcnMgbWF5IG1hdGNoIHRoZSBy ZXF1ZXN0LCB3ZSBhZGQgYW5kCisJCQkgKiBpdGVyYXRlIG92ZXIgdGhlbS4KKwkJCSAqLworCQkJ aWYgKHVubGlrZWx5KHRvcF9wYXJlbnRfcmVsICE9IE5VTEwpICYmICFjdXJfZW0tPmVtX2lzX2No aWxkICYmCisJCQkJYm1zX2VxdWFsKGN1cl9lbS0+ZW1fcmVsaWRzLCB0b3BfcGFyZW50X3JlbCkp CisJCQkJYWRkX2NoaWxkX3JlbF9lcXVpdmFsZW5jZXNfdG9fbGlzdChyb290LCBjdXJfZWMsIGN1 cl9lbSwgcmVsLAorCQkJCQkJCQkJCQkJICAgJm1lbWJlcnMsICZtb2RpZmllZCk7CiAKIAkJCS8q CiAJCQkgKiBJZ25vcmUgY2hpbGQgbWVtYmVycyB1bmxlc3MgdGhleSBtYXRjaCB0aGUgcmVxdWVz dC4KIAkJCSAqLwotCQkJaWYgKGN1cl9lbS0+ZW1faXNfY2hpbGQgJiYKLQkJCQkhYm1zX2VxdWFs KGN1cl9lbS0+ZW1fcmVsaWRzLCByZWwpKQotCQkJCWNvbnRpbnVlOworCQkJLyoKKwkJCSAqIElm IHRoaXMgRXF1aXZhbGVuY2VNZW1iZXIgaXMgYSBjaGlsZCwgaS5lLiwgdHJhbnNsYXRlZCBhYm92 ZSwKKwkJCSAqIGl0IHNob3VsZCBtYXRjaCB0aGUgcmVxdWVzdC4gV2UgY2Fubm90IGFzc2VydCB0 aGlzIGlmIGEgcmVxdWVzdAorCQkJICogaXMgYm1zX2lzX3N1YnNldCgpLgorCQkJICovCisJCQlB c3NlcnQoIWN1cl9lbS0+ZW1faXNfY2hpbGQgfHwgYm1zX2VxdWFsKGN1cl9lbS0+ZW1fcmVsaWRz LCByZWwpKTsKIAogCQkJLyoKIAkJCSAqIE1hdGNoIGNvbnN0YW50cyBvbmx5IHdpdGhpbiB0aGUg c2FtZSBKb2luRG9tYWluIChzZWUKQEAgLTY1NCw2ICs3MzUsOCBAQCBnZXRfZWNsYXNzX2Zvcl9z b3J0X2V4cHIoUGxhbm5lckluZm8gKnJvb3QsCiAJCQkJZXF1YWwoZXhwciwgY3VyX2VtLT5lbV9l eHByKSkKIAkJCQlyZXR1cm4gY3VyX2VjOwkvKiBNYXRjaCEgKi8KIAkJfQorCQlpZiAodW5saWtl bHkobW9kaWZpZWQpKQorCQkJbGlzdF9mcmVlKG1lbWJlcnMpOwogCX0KIAogCS8qIE5vIG1hdGNo OyBkb2VzIGNhbGxlciB3YW50IGEgTlVMTCByZXN1bHQ/ICovCkBAIC02NzEsNiArNzU0LDggQEAg Z2V0X2VjbGFzc19mb3Jfc29ydF9leHByKFBsYW5uZXJJbmZvICpyb290LAogCW5ld2VjLT5lY19v cGZhbWlsaWVzID0gbGlzdF9jb3B5KG9wZmFtaWxpZXMpOwogCW5ld2VjLT5lY19jb2xsYXRpb24g PSBjb2xsYXRpb247CiAJbmV3ZWMtPmVjX21lbWJlcnMgPSBOSUw7CisJbmV3ZWMtPmVjX25vcmVs X21lbWJlcnMgPSBOSUw7CisJbmV3ZWMtPmVjX3JlbF9tZW1iZXJzID0gTklMOwogCW5ld2VjLT5l Y19zb3VyY2VzID0gTklMOwogCW5ld2VjLT5lY19kZXJpdmVzID0gTklMOwogCW5ld2VjLT5lY19y ZWxpZHMgPSBOVUxMOwpAQCAtNjkxLDcgKzc3Niw3IEBAIGdldF9lY2xhc3NfZm9yX3NvcnRfZXhw cihQbGFubmVySW5mbyAqcm9vdCwKIAlleHByX3JlbGlkcyA9IHB1bGxfdmFybm9zKHJvb3QsIChO b2RlICopIGV4cHIpOwogCiAJbmV3ZW0gPSBhZGRfZXFfbWVtYmVyKG5ld2VjLCBjb3B5T2JqZWN0 KGV4cHIpLCBleHByX3JlbGlkcywKLQkJCQkJCSAgamRvbWFpbiwgTlVMTCwgb3BjaW50eXBlKTsK KwkJCQkJCSAgamRvbWFpbiwgb3BjaW50eXBlKTsKIAogCS8qCiAJICogYWRkX2VxX21lbWJlciBk b2Vzbid0IGNoZWNrIGZvciB2b2xhdGlsZSBmdW5jdGlvbnMsIHNldC1yZXR1cm5pbmcKQEAgLTc1 NywxOSArODQyLDI4IEBAIGdldF9lY2xhc3NfZm9yX3NvcnRfZXhwcihQbGFubmVySW5mbyAqcm9v dCwKICAqIENoaWxkIEVDIG1lbWJlcnMgYXJlIGlnbm9yZWQgdW5sZXNzIHRoZXkgYmVsb25nIHRv IGdpdmVuICdyZWxpZHMnLgogICovCiBFcXVpdmFsZW5jZU1lbWJlciAqCi1maW5kX2VjX21lbWJl cl9tYXRjaGluZ19leHByKEVxdWl2YWxlbmNlQ2xhc3MgKmVjLAorZmluZF9lY19tZW1iZXJfbWF0 Y2hpbmdfZXhwcihQbGFubmVySW5mbyAqcm9vdCwgRXF1aXZhbGVuY2VDbGFzcyAqZWMsCiAJCQkJ CQkJIEV4cHIgKmV4cHIsCiAJCQkJCQkJIFJlbGlkcyByZWxpZHMpCiB7Ci0JTGlzdENlbGwgICAq bGM7CisJUmVsaWRzCQl0b3BfcGFyZW50X3JlbGlkczsKKwlMaXN0CSAgICptZW1iZXJzOworCWJv b2wJCW1vZGlmaWVkOworCWludAkJCWk7CisKKwkvKiBTZWUgdGhlIGNvbW1lbnRzIGluIGdldF9l Y2xhc3NfZm9yX3NvcnRfZXhwcigpIHRvIHNlZSBob3cgdGhpcyB3b3Jrcy4gKi8KKwl0b3BfcGFy ZW50X3JlbGlkcyA9IGZpbmRfcmVsaWRzX3RvcF9wYXJlbnRzKHJvb3QsIHJlbGlkcyk7CiAKIAkv KiBXZSBpZ25vcmUgYmluYXJ5LWNvbXBhdGlibGUgcmVsYWJlbGluZyBvbiBib3RoIGVuZHMgKi8K IAl3aGlsZSAoZXhwciAmJiBJc0EoZXhwciwgUmVsYWJlbFR5cGUpKQogCQlleHByID0gKChSZWxh YmVsVHlwZSAqKSBleHByKS0+YXJnOwogCi0JZm9yZWFjaChsYywgZWMtPmVjX21lbWJlcnMpCisJ LyogU2VlIHRoZSBjb21tZW50cyBpbiBnZXRfZWNsYXNzX2Zvcl9zb3J0X2V4cHIoKSB0byBzZWUg aG93IHRoaXMgd29ya3MuICovCisJbWVtYmVycyA9IGVjLT5lY19tZW1iZXJzOworCW1vZGlmaWVk ID0gZmFsc2U7CisJZm9yIChpID0gMDsgaSA8IGxpc3RfbGVuZ3RoKG1lbWJlcnMpOyBpKyspCiAJ ewotCQlFcXVpdmFsZW5jZU1lbWJlciAqZW0gPSAoRXF1aXZhbGVuY2VNZW1iZXIgKikgbGZpcnN0 KGxjKTsKKwkJRXF1aXZhbGVuY2VNZW1iZXIgKmVtID0gbGlzdF9udGhfbm9kZShFcXVpdmFsZW5j ZU1lbWJlciwgbWVtYmVycywgaSk7CiAJCUV4cHIJICAgKmVtZXhwcjsKIAogCQkvKgpAQCAtNzc5 LDYgKzg3MywxMiBAQCBmaW5kX2VjX21lbWJlcl9tYXRjaGluZ19leHByKEVxdWl2YWxlbmNlQ2xh c3MgKmVjLAogCQlpZiAoZW0tPmVtX2lzX2NvbnN0KQogCQkJY29udGludWU7CiAKKwkJLyogU2Vl IHRoZSBjb21tZW50cyBpbiBnZXRfZWNsYXNzX2Zvcl9zb3J0X2V4cHIoKSB0byBzZWUgaG93IHRo aXMgd29ya3MuICovCisJCWlmICh1bmxpa2VseSh0b3BfcGFyZW50X3JlbGlkcyAhPSBOVUxMKSAm JiAhZW0tPmVtX2lzX2NoaWxkICYmCisJCQlibXNfaXNfc3Vic2V0KGVtLT5lbV9yZWxpZHMsIHRv cF9wYXJlbnRfcmVsaWRzKSkKKwkJCWFkZF9jaGlsZF9yZWxfZXF1aXZhbGVuY2VzX3RvX2xpc3Qo cm9vdCwgZWMsIGVtLCByZWxpZHMsCisJCQkJCQkJCQkJCSAgICZtZW1iZXJzLCAmbW9kaWZpZWQp OworCiAJCS8qCiAJCSAqIElnbm9yZSBjaGlsZCBtZW1iZXJzIHVubGVzcyB0aGV5IGJlbG9uZyB0 byB0aGUgcmVxdWVzdGVkIHJlbC4KIAkJICovCkBAIC03OTYsNiArODk2LDggQEAgZmluZF9lY19t ZW1iZXJfbWF0Y2hpbmdfZXhwcihFcXVpdmFsZW5jZUNsYXNzICplYywKIAkJaWYgKGVxdWFsKGVt ZXhwciwgZXhwcikpCiAJCQlyZXR1cm4gZW07CiAJfQorCWlmICh1bmxpa2VseShtb2RpZmllZCkp CisJCWxpc3RfZnJlZShtZW1iZXJzKTsKIAogCXJldHVybiBOVUxMOwogfQpAQCAtODI4LDExICs5 MzAsMjAgQEAgZmluZF9jb21wdXRhYmxlX2VjX21lbWJlcihQbGFubmVySW5mbyAqcm9vdCwKIAkJ CQkJCSAgUmVsaWRzIHJlbGlkcywKIAkJCQkJCSAgYm9vbCByZXF1aXJlX3BhcmFsbGVsX3NhZmUp CiB7Ci0JTGlzdENlbGwgICAqbGM7CisJUmVsaWRzCQl0b3BfcGFyZW50X3JlbGlkczsKKwlMaXN0 CSAgICptZW1iZXJzOworCWJvb2wJCW1vZGlmaWVkOworCWludAkJCWk7CiAKLQlmb3JlYWNoKGxj LCBlYy0+ZWNfbWVtYmVycykKKwkvKiBTZWUgdGhlIGNvbW1lbnRzIGluIGdldF9lY2xhc3NfZm9y X3NvcnRfZXhwcigpIHRvIHNlZSBob3cgdGhpcyB3b3Jrcy4gKi8KKwl0b3BfcGFyZW50X3JlbGlk cyA9IGZpbmRfcmVsaWRzX3RvcF9wYXJlbnRzKHJvb3QsIHJlbGlkcyk7CisKKwkvKiBTZWUgdGhl IGNvbW1lbnRzIGluIGdldF9lY2xhc3NfZm9yX3NvcnRfZXhwcigpIHRvIHNlZSBob3cgdGhpcyB3 b3Jrcy4gKi8KKwltZW1iZXJzID0gZWMtPmVjX21lbWJlcnM7CisJbW9kaWZpZWQgPSBmYWxzZTsK Kwlmb3IgKGkgPSAwOyBpIDwgbGlzdF9sZW5ndGgobWVtYmVycyk7IGkrKykKIAl7Ci0JCUVxdWl2 YWxlbmNlTWVtYmVyICplbSA9IChFcXVpdmFsZW5jZU1lbWJlciAqKSBsZmlyc3QobGMpOworCQlF cXVpdmFsZW5jZU1lbWJlciAqZW0gPSBsaXN0X250aF9ub2RlKEVxdWl2YWxlbmNlTWVtYmVyLCBt ZW1iZXJzLCBpKTsKIAkJTGlzdAkgICAqZXhwcnZhcnM7CiAJCUxpc3RDZWxsICAgKmxjMjsKIApA QCAtODQzLDYgKzk1NCwxMiBAQCBmaW5kX2NvbXB1dGFibGVfZWNfbWVtYmVyKFBsYW5uZXJJbmZv ICpyb290LAogCQlpZiAoZW0tPmVtX2lzX2NvbnN0KQogCQkJY29udGludWU7CiAKKwkJLyogU2Vl IHRoZSBjb21tZW50cyBpbiBnZXRfZWNsYXNzX2Zvcl9zb3J0X2V4cHIoKSB0byBzZWUgaG93IHRo aXMgd29ya3MuICovCisJCWlmICh1bmxpa2VseSh0b3BfcGFyZW50X3JlbGlkcyAhPSBOVUxMKSAm JiAhZW0tPmVtX2lzX2NoaWxkICYmCisJCQlibXNfaXNfc3Vic2V0KGVtLT5lbV9yZWxpZHMsIHRv cF9wYXJlbnRfcmVsaWRzKSkKKwkJCWFkZF9jaGlsZF9yZWxfZXF1aXZhbGVuY2VzX3RvX2xpc3Qo cm9vdCwgZWMsIGVtLCByZWxpZHMsCisJCQkJCQkJCQkJCSAgICZtZW1iZXJzLCAmbW9kaWZpZWQp OworCiAJCS8qCiAJCSAqIElnbm9yZSBjaGlsZCBtZW1iZXJzIHVubGVzcyB0aGV5IGJlbG9uZyB0 byB0aGUgcmVxdWVzdGVkIHJlbC4KIAkJICovCkBAIC04NzYsNiArOTkzLDggQEAgZmluZF9jb21w dXRhYmxlX2VjX21lbWJlcihQbGFubmVySW5mbyAqcm9vdCwKIAogCQlyZXR1cm4gZW07CQkJCS8q IGZvdW5kIHVzYWJsZSBleHByZXNzaW9uICovCiAJfQorCWlmICh1bmxpa2VseShtb2RpZmllZCkp CisJCWxpc3RfZnJlZShtZW1iZXJzKTsKIAogCXJldHVybiBOVUxMOwogfQpAQCAtOTM5LDcgKzEw NTgsNyBAQCByZWxhdGlvbl9jYW5fYmVfc29ydGVkX2Vhcmx5KFBsYW5uZXJJbmZvICpyb290LCBS ZWxPcHRJbmZvICpyZWwsCiAJewogCQlFeHByCSAgICp0YXJnZXRleHByID0gKEV4cHIgKikgbGZp cnN0KGxjKTsKIAotCQllbSA9IGZpbmRfZWNfbWVtYmVyX21hdGNoaW5nX2V4cHIoZWMsIHRhcmdl dGV4cHIsIHJlbC0+cmVsaWRzKTsKKwkJZW0gPSBmaW5kX2VjX21lbWJlcl9tYXRjaGluZ19leHBy KHJvb3QsIGVjLCB0YXJnZXRleHByLCByZWwtPnJlbGlkcyk7CiAJCWlmICghZW0pCiAJCQljb250 aW51ZTsKIApAQCAtMTEzOCw3ICsxMjU3LDcgQEAgZ2VuZXJhdGVfYmFzZV9pbXBsaWVkX2VxdWFs aXRpZXNfY29uc3QoUGxhbm5lckluZm8gKnJvb3QsCiAJICogbWFjaGluZXJ5IG1pZ2h0IGJlIGFi bGUgdG8gZXhjbHVkZSByZWxhdGlvbnMgb24gdGhlIGJhc2lzIG9mIGdlbmVyYXRlZAogCSAqICJ2 YXIgPSBjb25zdCIgZXF1YWxpdGllcywgYnV0ICJ2YXIgPSBwYXJhbSIgd29uJ3Qgd29yayBmb3Ig dGhhdC4KIAkgKi8KLQlmb3JlYWNoKGxjLCBlYy0+ZWNfbWVtYmVycykKKwlmb3JlYWNoKGxjLCBl Yy0+ZWNfbm9yZWxfbWVtYmVycykKIAl7CiAJCUVxdWl2YWxlbmNlTWVtYmVyICpjdXJfZW0gPSAo RXF1aXZhbGVuY2VNZW1iZXIgKikgbGZpcnN0KGxjKTsKIApAQCAtMTIyMiw3ICsxMzQxLDcgQEAg Z2VuZXJhdGVfYmFzZV9pbXBsaWVkX2VxdWFsaXRpZXNfbm9fY29uc3QoUGxhbm5lckluZm8gKnJv b3QsCiAJcHJldl9lbXMgPSAoRXF1aXZhbGVuY2VNZW1iZXIgKiopCiAJCXBhbGxvYzAocm9vdC0+ c2ltcGxlX3JlbF9hcnJheV9zaXplICogc2l6ZW9mKEVxdWl2YWxlbmNlTWVtYmVyICopKTsKIAot CWZvcmVhY2gobGMsIGVjLT5lY19tZW1iZXJzKQorCWZvcmVhY2gobGMsIGVjLT5lY19yZWxfbWVt YmVycykKIAl7CiAJCUVxdWl2YWxlbmNlTWVtYmVyICpjdXJfZW0gPSAoRXF1aXZhbGVuY2VNZW1i ZXIgKikgbGZpcnN0KGxjKTsKIAkJaW50CQkJcmVsaWQ7CkBAIC0xNTU5LDcgKzE2NzgsMTMgQEAg Z2VuZXJhdGVfam9pbl9pbXBsaWVkX2VxdWFsaXRpZXNfbm9ybWFsKFBsYW5uZXJJbmZvICpyb290 LAogCUxpc3QJICAgKm5ld19tZW1iZXJzID0gTklMOwogCUxpc3QJICAgKm91dGVyX21lbWJlcnMg PSBOSUw7CiAJTGlzdAkgICAqaW5uZXJfbWVtYmVycyA9IE5JTDsKLQlMaXN0Q2VsbCAgICpsYzE7 CisJUmVsaWRzCQl0b3BfcGFyZW50X2pvaW5fcmVsaWRzOworCUxpc3QJICAgKm1lbWJlcnM7CisJ Ym9vbAkJbW9kaWZpZWQ7CisJaW50CQkJaTsKKworCS8qIFNlZSB0aGUgY29tbWVudHMgaW4gZ2V0 X2VjbGFzc19mb3Jfc29ydF9leHByKCkgdG8gc2VlIGhvdyB0aGlzIHdvcmtzLiAqLworCXRvcF9w YXJlbnRfam9pbl9yZWxpZHMgPSBmaW5kX3JlbGlkc190b3BfcGFyZW50cyhyb290LCBqb2luX3Jl bGlkcyk7CiAKIAkvKgogCSAqIEZpcnN0LCBzY2FuIHRoZSBFQyB0byBpZGVudGlmeSBtZW1iZXIg dmFsdWVzIHRoYXQgYXJlIGNvbXB1dGFibGUgYXQgdGhlCkBAIC0xNTcwLDkgKzE2OTUsMTkgQEAg Z2VuZXJhdGVfam9pbl9pbXBsaWVkX2VxdWFsaXRpZXNfbm9ybWFsKFBsYW5uZXJJbmZvICpyb290 LAogCSAqIGFzIHdlbGwgYXMgdG8gYXQgbGVhc3Qgb25lIGlucHV0IG1lbWJlciwgcGx1cyBlbmZv cmNlIGF0IGxlYXN0IG9uZQogCSAqIG91dGVyLXJlbCBtZW1iZXIgZXF1YWwgdG8gYXQgbGVhc3Qg b25lIGlubmVyLXJlbCBtZW1iZXIuCiAJICovCi0JZm9yZWFjaChsYzEsIGVjLT5lY19tZW1iZXJz KQorCisJLyogU2VlIHRoZSBjb21tZW50cyBpbiBnZXRfZWNsYXNzX2Zvcl9zb3J0X2V4cHIoKSB0 byBzZWUgaG93IHRoaXMgd29ya3MuICovCisJbWVtYmVycyA9IGVjLT5lY19yZWxfbWVtYmVyczsK Kwltb2RpZmllZCA9IGZhbHNlOworCWZvciAoaSA9IDA7IGkgPCBsaXN0X2xlbmd0aChtZW1iZXJz KTsgaSsrKQogCXsKLQkJRXF1aXZhbGVuY2VNZW1iZXIgKmN1cl9lbSA9IChFcXVpdmFsZW5jZU1l bWJlciAqKSBsZmlyc3QobGMxKTsKKwkJRXF1aXZhbGVuY2VNZW1iZXIgKmN1cl9lbSA9IGxpc3Rf bnRoX25vZGUoRXF1aXZhbGVuY2VNZW1iZXIsIG1lbWJlcnMsIGkpOworCisJCS8qIFNlZSB0aGUg Y29tbWVudHMgaW4gZ2V0X2VjbGFzc19mb3Jfc29ydF9leHByKCkgdG8gc2VlIGhvdyB0aGlzIHdv cmtzLiAqLworCQlpZiAodW5saWtlbHkodG9wX3BhcmVudF9qb2luX3JlbGlkcyAhPSBOVUxMKSAm JiAhY3VyX2VtLT5lbV9pc19jaGlsZCAmJgorCQkJYm1zX2lzX3N1YnNldChjdXJfZW0tPmVtX3Jl bGlkcywgdG9wX3BhcmVudF9qb2luX3JlbGlkcykpCisJCQlhZGRfY2hpbGRfcmVsX2VxdWl2YWxl bmNlc190b19saXN0KHJvb3QsIGVjLCBjdXJfZW0sIGpvaW5fcmVsaWRzLAorCQkJCQkJCQkJCQkg ICAmbWVtYmVycywgJm1vZGlmaWVkKTsKIAogCQkvKgogCQkgKiBXZSBkb24ndCBuZWVkIHRvIGNo ZWNrIGV4cGxpY2l0bHkgZm9yIGNoaWxkIEVDIG1lbWJlcnMuICBUaGlzIHRlc3QKQEAgLTE1ODks NiArMTcyNCw4IEBAIGdlbmVyYXRlX2pvaW5faW1wbGllZF9lcXVhbGl0aWVzX25vcm1hbChQbGFu bmVySW5mbyAqcm9vdCwKIAkJZWxzZQogCQkJbmV3X21lbWJlcnMgPSBsYXBwZW5kKG5ld19tZW1i ZXJzLCBjdXJfZW0pOwogCX0KKwlpZiAodW5saWtlbHkobW9kaWZpZWQpKQorCQlsaXN0X2ZyZWUo bWVtYmVycyk7CiAKIAkvKgogCSAqIEZpcnN0LCBzZWxlY3QgdGhlIGpvaW5jbGF1c2UgaWYgbmVl ZGVkLiAgV2UgY2FuIGVxdWF0ZSBhbnkgb25lIG91dGVyCkBAIC0xNjA2LDYgKzE3NDMsNyBAQCBn ZW5lcmF0ZV9qb2luX2ltcGxpZWRfZXF1YWxpdGllc19ub3JtYWwoUGxhbm5lckluZm8gKnJvb3Qs CiAJCU9pZAkJCWJlc3RfZXFfb3AgPSBJbnZhbGlkT2lkOwogCQlpbnQJCQliZXN0X3Njb3JlID0g LTE7CiAJCVJlc3RyaWN0SW5mbyAqcmluZm87CisJCUxpc3RDZWxsICAgKmxjMTsKIAogCQlmb3Jl YWNoKGxjMSwgb3V0ZXJfbWVtYmVycykKIAkJewpAQCAtMTY4MCw2ICsxODE4LDcgQEAgZ2VuZXJh dGVfam9pbl9pbXBsaWVkX2VxdWFsaXRpZXNfbm9ybWFsKFBsYW5uZXJJbmZvICpyb290LAogCQlM aXN0CSAgICpvbGRfbWVtYmVycyA9IGxpc3RfY29uY2F0KG91dGVyX21lbWJlcnMsIGlubmVyX21l bWJlcnMpOwogCQlFcXVpdmFsZW5jZU1lbWJlciAqcHJldl9lbSA9IE5VTEw7CiAJCVJlc3RyaWN0 SW5mbyAqcmluZm87CisJCUxpc3RDZWxsICAgKmxjMTsKIAogCQkvKiBGb3Igbm93LCBhcmJpdHJh cmlseSB0YWtlIHRoZSBmaXJzdCBvbGRfbWVtYmVyIGFzIHRoZSBvbmUgdG8gdXNlICovCiAJCWlm IChvbGRfbWVtYmVycykKQEAgLTIxNzcsNyArMjMxNiw3IEBAIHJlY29uc2lkZXJfb3V0ZXJfam9p bl9jbGF1c2UoUGxhbm5lckluZm8gKnJvb3QsIE91dGVySm9pbkNsYXVzZUluZm8gKm9qY2luZm8s CiAJCSAqIGNvbnN0YW50IGJlZm9yZSB3ZSBjYW4gZGVjaWRlIHRvIHRocm93IGF3YXkgdGhlIG91 dGVyLWpvaW4gY2xhdXNlLgogCQkgKi8KIAkJbWF0Y2ggPSBmYWxzZTsKLQkJZm9yZWFjaChsYzIs IGN1cl9lYy0+ZWNfbWVtYmVycykKKwkJZm9yZWFjaChsYzIsIGN1cl9lYy0+ZWNfbm9yZWxfbWVt YmVycykKIAkJewogCQkJRXF1aXZhbGVuY2VNZW1iZXIgKmN1cl9lbSA9IChFcXVpdmFsZW5jZU1l bWJlciAqKSBsZmlyc3QobGMyKTsKIAkJCU9pZAkJCWVxX29wOwpAQCAtMjI4NSw3ICsyNDI0LDcg QEAgcmVjb25zaWRlcl9mdWxsX2pvaW5fY2xhdXNlKFBsYW5uZXJJbmZvICpyb290LCBPdXRlckpv aW5DbGF1c2VJbmZvICpvamNpbmZvKQogCQkgKiB0aGUgQ09BTEVTQ0UgYXJndW1lbnRzPwogCQkg Ki8KIAkJbWF0Y2ggPSBmYWxzZTsKLQkJZm9yZWFjaChsYzIsIGN1cl9lYy0+ZWNfbWVtYmVycykK KwkJZm9yZWFjaChsYzIsIGN1cl9lYy0+ZWNfcmVsX21lbWJlcnMpCiAJCXsKIAkJCWNvYWxfZW0g PSAoRXF1aXZhbGVuY2VNZW1iZXIgKikgbGZpcnN0KGxjMik7CiAJCQlBc3NlcnQoIWNvYWxfZW0t PmVtX2lzX2NoaWxkKTsJLyogbm8gY2hpbGRyZW4geWV0ICovCkBAIC0yMzMwLDcgKzI0NjksNyBA QCByZWNvbnNpZGVyX2Z1bGxfam9pbl9jbGF1c2UoUGxhbm5lckluZm8gKnJvb3QsIE91dGVySm9p bkNsYXVzZUluZm8gKm9qY2luZm8pCiAJCSAqIGRlY2lkZSB0byB0aHJvdyBhd2F5IHRoZSBvdXRl ci1qb2luIGNsYXVzZS4KIAkJICovCiAJCW1hdGNobGVmdCA9IG1hdGNocmlnaHQgPSBmYWxzZTsK LQkJZm9yZWFjaChsYzIsIGN1cl9lYy0+ZWNfbWVtYmVycykKKwkJZm9yZWFjaChsYzIsIGN1cl9l Yy0+ZWNfbm9yZWxfbWVtYmVycykKIAkJewogCQkJRXF1aXZhbGVuY2VNZW1iZXIgKmN1cl9lbSA9 IChFcXVpdmFsZW5jZU1lbWJlciAqKSBsZmlyc3QobGMyKTsKIAkJCU9pZAkJCWVxX29wOwpAQCAt MjM4NSw2ICsyNTI0LDEwIEBAIHJlY29uc2lkZXJfZnVsbF9qb2luX2NsYXVzZShQbGFubmVySW5m byAqcm9vdCwgT3V0ZXJKb2luQ2xhdXNlSW5mbyAqb2pjaW5mbykKIAkJaWYgKG1hdGNobGVmdCAm JiBtYXRjaHJpZ2h0KQogCQl7CiAJCQljdXJfZWMtPmVjX21lbWJlcnMgPSBsaXN0X2RlbGV0ZV9u dGhfY2VsbChjdXJfZWMtPmVjX21lbWJlcnMsIGNvYWxfaWR4KTsKKwkJCUFzc2VydCghYm1zX2lz X2VtcHR5KGNvYWxfZW0tPmVtX3JlbGlkcykpOworCQkJLyogWFhYIHBlcmZvcm1hbmNlIG9mIGxp c3RfZGVsZXRlX3B0cigpPz8gKi8KKwkJCWN1cl9lYy0+ZWNfcmVsX21lbWJlcnMgPSBsaXN0X2Rl bGV0ZV9wdHIoY3VyX2VjLT5lY19yZWxfbWVtYmVycywKKwkJCQkJCQkJCQkJCQkgY29hbF9lbSk7 CiAJCQlyZXR1cm4gdHJ1ZTsKIAkJfQogCkBAIC0yNDU1LDggKzI1OTgsOCBAQCBleHByc19rbm93 bl9lcXVhbChQbGFubmVySW5mbyAqcm9vdCwgTm9kZSAqaXRlbTEsIE5vZGUgKml0ZW0yKQogCQl7 CiAJCQlFcXVpdmFsZW5jZU1lbWJlciAqZW0gPSAoRXF1aXZhbGVuY2VNZW1iZXIgKikgbGZpcnN0 KGxjMik7CiAKLQkJCWlmIChlbS0+ZW1faXNfY2hpbGQpCi0JCQkJY29udGludWU7CQkvKiBpZ25v cmUgY2hpbGRyZW4gaGVyZSAqLworCQkJLyogQ2hpbGQgbWVtYmVycyBzaG91bGQgbm90IGV4aXN0 IGluIGVjX21lbWJlcnMgKi8KKwkJCUFzc2VydCghZW0tPmVtX2lzX2NoaWxkKTsKIAkJCWlmIChl cXVhbChpdGVtMSwgZW0tPmVtX2V4cHIpKQogCQkJCWl0ZW0xbWVtYmVyID0gdHJ1ZTsKIAkJCWVs c2UgaWYgKGVxdWFsKGl0ZW0yLCBlbS0+ZW1fZXhwcikpCkBAIC0yNTIzLDEzICsyNjY2LDEzIEBA IG1hdGNoX2VjbGFzc2VzX3RvX2ZvcmVpZ25fa2V5X2NvbChQbGFubmVySW5mbyAqcm9vdCwKIAkJ CWNvbnRpbnVlOwogCQkvKiBOb3RlOiBpdCBzZWVtcyBva2F5IHRvIG1hdGNoIHRvICJicm9rZW4i IGVjbGFzc2VzIGhlcmUgKi8KIAotCQlmb3JlYWNoKGxjMiwgZWMtPmVjX21lbWJlcnMpCisJCWZv cmVhY2gobGMyLCBlYy0+ZWNfcmVsX21lbWJlcnMpCiAJCXsKIAkJCUVxdWl2YWxlbmNlTWVtYmVy ICplbSA9IChFcXVpdmFsZW5jZU1lbWJlciAqKSBsZmlyc3QobGMyKTsKIAkJCVZhcgkJICAgKnZh cjsKIAotCQkJaWYgKGVtLT5lbV9pc19jaGlsZCkKLQkJCQljb250aW51ZTsJCS8qIGlnbm9yZSBj aGlsZHJlbiBoZXJlICovCisJCQkvKiBDaGlsZCBtZW1iZXJzIHNob3VsZCBub3QgZXhpc3QgaW4g ZWNfbWVtYmVycyAqLworCQkJQXNzZXJ0KCFlbS0+ZW1faXNfY2hpbGQpOwogCiAJCQkvKiBFTSBt dXN0IGJlIGEgVmFyLCBwb3NzaWJseSB3aXRoIFJlbGFiZWxUeXBlICovCiAJCQl2YXIgPSAoVmFy ICopIGVtLT5lbV9leHByOwpAQCAtMjYyNiw2ICsyNzY5LDcgQEAgYWRkX2NoaWxkX3JlbF9lcXVp dmFsZW5jZXMoUGxhbm5lckluZm8gKnJvb3QsCiAJUmVsaWRzCQl0b3BfcGFyZW50X3JlbGlkcyA9 IGNoaWxkX3JlbC0+dG9wX3BhcmVudF9yZWxpZHM7CiAJUmVsaWRzCQljaGlsZF9yZWxpZHMgPSBj aGlsZF9yZWwtPnJlbGlkczsKIAlpbnQJCQlpOworCUxpc3RDZWxsICAgKmxjOwogCiAJLyoKIAkg KiBFQyBtZXJnaW5nIHNob3VsZCBiZSBjb21wbGV0ZSBhbHJlYWR5LCBzbyB3ZSBjYW4gdXNlIHRo ZSBwYXJlbnQgcmVsJ3MKQEAgLTI2MzgsNyArMjc4Miw2IEBAIGFkZF9jaGlsZF9yZWxfZXF1aXZh bGVuY2VzKFBsYW5uZXJJbmZvICpyb290LAogCXdoaWxlICgoaSA9IGJtc19uZXh0X21lbWJlcihw YXJlbnRfcmVsLT5lY2xhc3NfaW5kZXhlcywgaSkpID49IDApCiAJewogCQlFcXVpdmFsZW5jZUNs YXNzICpjdXJfZWMgPSAoRXF1aXZhbGVuY2VDbGFzcyAqKSBsaXN0X250aChyb290LT5lcV9jbGFz c2VzLCBpKTsKLQkJaW50CQkJbnVtX21lbWJlcnM7CiAKIAkJLyoKIAkJICogSWYgdGhpcyBFQyBj b250YWlucyBhIHZvbGF0aWxlIGV4cHJlc3Npb24sIHRoZW4gZ2VuZXJhdGluZyBjaGlsZApAQCAt MjY1MSwxNSArMjc5NCw5IEBAIGFkZF9jaGlsZF9yZWxfZXF1aXZhbGVuY2VzKFBsYW5uZXJJbmZv ICpyb290LAogCQkvKiBTYW5pdHkgY2hlY2sgZWNsYXNzX2luZGV4ZXMgb25seSBjb250YWluIEVD cyBmb3IgcGFyZW50X3JlbCAqLwogCQlBc3NlcnQoYm1zX2lzX3N1YnNldCh0b3BfcGFyZW50X3Jl bGlkcywgY3VyX2VjLT5lY19yZWxpZHMpKTsKIAotCQkvKgotCQkgKiBXZSBkb24ndCB1c2UgZm9y ZWFjaCgpIGhlcmUgYmVjYXVzZSB0aGVyZSdzIG5vIHBvaW50IGluIHNjYW5uaW5nCi0JCSAqIG5l d2x5LWFkZGVkIGNoaWxkIG1lbWJlcnMsIHNvIHdlIGNhbiBzdG9wIGFmdGVyIHRoZSBsYXN0Ci0J CSAqIHByZS1leGlzdGluZyBFQyBtZW1iZXIuCi0JCSAqLwotCQludW1fbWVtYmVycyA9IGxpc3Rf bGVuZ3RoKGN1cl9lYy0+ZWNfbWVtYmVycyk7Ci0JCWZvciAoaW50IHBvcyA9IDA7IHBvcyA8IG51 bV9tZW1iZXJzOyBwb3MrKykKKwkJZm9yZWFjaChsYywgY3VyX2VjLT5lY19yZWxfbWVtYmVycykK IAkJewotCQkJRXF1aXZhbGVuY2VNZW1iZXIgKmN1cl9lbSA9IChFcXVpdmFsZW5jZU1lbWJlciAq KSBsaXN0X250aChjdXJfZWMtPmVjX21lbWJlcnMsIHBvcyk7CisJCQlFcXVpdmFsZW5jZU1lbWJl ciAqY3VyX2VtID0gbGZpcnN0X25vZGUoRXF1aXZhbGVuY2VNZW1iZXIsIGxjKTsKIAogCQkJaWYg KGN1cl9lbS0+ZW1faXNfY29uc3QpCiAJCQkJY29udGludWU7CQkvKiBpZ25vcmUgY29uc3RzIGhl cmUgKi8KQEAgLTI2NzIsOCArMjgwOSw4IEBAIGFkZF9jaGlsZF9yZWxfZXF1aXZhbGVuY2VzKFBs YW5uZXJJbmZvICpyb290LAogCQkJICogY29tYmluYXRpb25zIG9mIGNoaWxkcmVuLiAgKEJ1dCBh ZGRfY2hpbGRfam9pbl9yZWxfZXF1aXZhbGVuY2VzCiAJCQkgKiBtYXkgYWRkIHRhcmdldGVkIGNv bWJpbmF0aW9ucyBmb3IgcGFydGl0aW9ud2lzZS1qb2luIHB1cnBvc2VzLikKIAkJCSAqLwotCQkJ aWYgKGN1cl9lbS0+ZW1faXNfY2hpbGQpCi0JCQkJY29udGludWU7CQkvKiBpZ25vcmUgY2hpbGRy ZW4gaGVyZSAqLworCQkJLyogQ2hpbGQgbWVtYmVycyBzaG91bGQgbm90IGV4aXN0IGluIGVjX21l bWJlcnMgKi8KKwkJCUFzc2VydCghY3VyX2VtLT5lbV9pc19jaGlsZCk7CiAKIAkJCS8qCiAJCQkg KiBDb25zaWRlciBvbmx5IG1lbWJlcnMgdGhhdCByZWZlcmVuY2UgYW5kIGNhbiBiZSBjb21wdXRl ZCBhdApAQCAtMjY4OSw2ICsyODI2LDcgQEAgYWRkX2NoaWxkX3JlbF9lcXVpdmFsZW5jZXMoUGxh bm5lckluZm8gKnJvb3QsCiAJCQkJLyogT0ssIGdlbmVyYXRlIHRyYW5zZm9ybWVkIGNoaWxkIHZl cnNpb24gKi8KIAkJCQlFeHByCSAgICpjaGlsZF9leHByOwogCQkJCVJlbGlkcwkJbmV3X3JlbGlk czsKKwkJCQlFcXVpdmFsZW5jZU1lbWJlciAqY2hpbGRfZW07CiAKIAkJCQlpZiAocGFyZW50X3Jl bC0+cmVsb3B0a2luZCA9PSBSRUxPUFRfQkFTRVJFTCkKIAkJCQl7CkBAIC0yNzE4LDkgKzI4NTYs MjAgQEAgYWRkX2NoaWxkX3JlbF9lcXVpdmFsZW5jZXMoUGxhbm5lckluZm8gKnJvb3QsCiAJCQkJ CQkJCQkJCXRvcF9wYXJlbnRfcmVsaWRzKTsKIAkJCQluZXdfcmVsaWRzID0gYm1zX2FkZF9tZW1i ZXJzKG5ld19yZWxpZHMsIGNoaWxkX3JlbGlkcyk7CiAKLQkJCQkodm9pZCkgYWRkX2VxX21lbWJl cihjdXJfZWMsIGNoaWxkX2V4cHIsIG5ld19yZWxpZHMsCi0JCQkJCQkJCQkgY3VyX2VtLT5lbV9q ZG9tYWluLAotCQkJCQkJCQkJIGN1cl9lbSwgY3VyX2VtLT5lbV9kYXRhdHlwZSk7CisJCQkJY2hp bGRfZW0gPSBtYWtlX2VxX21lbWJlcihjdXJfZWMsIGNoaWxkX2V4cHIsIG5ld19yZWxpZHMsCisJ CQkJCQkJCQkJICBjdXJfZW0tPmVtX2pkb21haW4sCisJCQkJCQkJCQkJICBjdXJfZW0sIGN1cl9l bS0+ZW1fZGF0YXR5cGUpOworCQkJCWNoaWxkX3JlbC0+ZWNsYXNzX2NoaWxkX21lbWJlcnMgPSBs YXBwZW5kKGNoaWxkX3JlbC0+ZWNsYXNzX2NoaWxkX21lbWJlcnMsCisJCQkJCQkJCQkJCQkJCSAg Y2hpbGRfZW0pOworCisJCQkJLyoKKwkJCQkgKiBXZSBzYXZlIHRoZSBrbm93bGVkZ2UgdGhhdCAn Y2hpbGRfZW0nIGNhbiBiZSB0cmFuc2xhdGVkIGZyb20KKwkJCQkgKiAnY2hpbGRfcmVsJy4gVGhp cyBrbm93bGVkZ2UgaXMgdXNlZnVsIGZvcgorCQkJCSAqIGFkZF90cmFuc2Zvcm1lZF9jaGlsZF92 ZXJzaW9uKCkgdG8gZmluZCBjaGlsZCBtZW1iZXJzIGZyb20gdGhlCisJCQkJICogZ2l2ZW4gUmVs aWRzLgorCQkJCSAqLworCQkJCWN1cl9lbS0+ZW1fY2hpbGRfcmVsaWRzID0gYm1zX2FkZF9tZW1i ZXIoY3VyX2VtLT5lbV9jaGlsZF9yZWxpZHMsCisJCQkJCQkJCQkJCQkJIGNoaWxkX3JlbC0+cmVs aWQpOwogCiAJCQkJLyogUmVjb3JkIHRoaXMgRUMgaW5kZXggZm9yIHRoZSBjaGlsZCByZWwgKi8K IAkJCQljaGlsZF9yZWwtPmVjbGFzc19pbmRleGVzID0gYm1zX2FkZF9tZW1iZXIoY2hpbGRfcmVs LT5lY2xhc3NfaW5kZXhlcywgaSk7CkBAIC0yNzQ5LDYgKzI4OTgsNyBAQCBhZGRfY2hpbGRfam9p bl9yZWxfZXF1aXZhbGVuY2VzKFBsYW5uZXJJbmZvICpyb290LAogCVJlbGlkcwkJY2hpbGRfcmVs aWRzID0gY2hpbGRfam9pbnJlbC0+cmVsaWRzOwogCUJpdG1hcHNldCAgKm1hdGNoaW5nX2VjczsK IAlNZW1vcnlDb250ZXh0IG9sZGNvbnRleHQ7CisJTGlzdENlbGwgICAqbGM7CiAJaW50CQkJaTsK IAogCUFzc2VydChJU19KT0lOX1JFTChjaGlsZF9qb2lucmVsKSAmJiBJU19KT0lOX1JFTChwYXJl bnRfam9pbnJlbCkpOwpAQCAtMjc3MCw3ICsyOTIwLDYgQEAgYWRkX2NoaWxkX2pvaW5fcmVsX2Vx dWl2YWxlbmNlcyhQbGFubmVySW5mbyAqcm9vdCwKIAl3aGlsZSAoKGkgPSBibXNfbmV4dF9tZW1i ZXIobWF0Y2hpbmdfZWNzLCBpKSkgPj0gMCkKIAl7CiAJCUVxdWl2YWxlbmNlQ2xhc3MgKmN1cl9l YyA9IChFcXVpdmFsZW5jZUNsYXNzICopIGxpc3RfbnRoKHJvb3QtPmVxX2NsYXNzZXMsIGkpOwot CQlpbnQJCQludW1fbWVtYmVyczsKIAogCQkvKgogCQkgKiBJZiB0aGlzIEVDIGNvbnRhaW5zIGEg dm9sYXRpbGUgZXhwcmVzc2lvbiwgdGhlbiBnZW5lcmF0aW5nIGNoaWxkCkBAIC0yNzgzLDE1ICsy OTMyLDkgQEAgYWRkX2NoaWxkX2pvaW5fcmVsX2VxdWl2YWxlbmNlcyhQbGFubmVySW5mbyAqcm9v dCwKIAkJLyogU2FuaXR5IGNoZWNrIG9uIGdldF9lY2xhc3NfaW5kZXhlc19mb3JfcmVsaWRzIHJl c3VsdCAqLwogCQlBc3NlcnQoYm1zX292ZXJsYXAodG9wX3BhcmVudF9yZWxpZHMsIGN1cl9lYy0+ ZWNfcmVsaWRzKSk7CiAKLQkJLyoKLQkJICogV2UgZG9uJ3QgdXNlIGZvcmVhY2goKSBoZXJlIGJl Y2F1c2UgdGhlcmUncyBubyBwb2ludCBpbiBzY2FubmluZwotCQkgKiBuZXdseS1hZGRlZCBjaGls ZCBtZW1iZXJzLCBzbyB3ZSBjYW4gc3RvcCBhZnRlciB0aGUgbGFzdAotCQkgKiBwcmUtZXhpc3Rp bmcgRUMgbWVtYmVyLgotCQkgKi8KLQkJbnVtX21lbWJlcnMgPSBsaXN0X2xlbmd0aChjdXJfZWMt PmVjX21lbWJlcnMpOwotCQlmb3IgKGludCBwb3MgPSAwOyBwb3MgPCBudW1fbWVtYmVyczsgcG9z KyspCisJCWZvcmVhY2gobGMsIGN1cl9lYy0+ZWNfcmVsX21lbWJlcnMpCiAJCXsKLQkJCUVxdWl2 YWxlbmNlTWVtYmVyICpjdXJfZW0gPSAoRXF1aXZhbGVuY2VNZW1iZXIgKikgbGlzdF9udGgoY3Vy X2VjLT5lY19tZW1iZXJzLCBwb3MpOworCQkJRXF1aXZhbGVuY2VNZW1iZXIgKmN1cl9lbSA9IGxm aXJzdF9ub2RlKEVxdWl2YWxlbmNlTWVtYmVyLCBsYyk7CiAKIAkJCWlmIChjdXJfZW0tPmVtX2lz X2NvbnN0KQogCQkJCWNvbnRpbnVlOwkJLyogaWdub3JlIGNvbnN0cyBoZXJlICovCkBAIC0yODAw LDggKzI5NDMsOCBAQCBhZGRfY2hpbGRfam9pbl9yZWxfZXF1aXZhbGVuY2VzKFBsYW5uZXJJbmZv ICpyb290LAogCQkJICogV2UgY29uc2lkZXIgb25seSBvcmlnaW5hbCBFQyBtZW1iZXJzIGhlcmUs IG5vdAogCQkJICogYWxyZWFkeS10cmFuc2Zvcm1lZCBjaGlsZCBtZW1iZXJzLgogCQkJICovCi0J CQlpZiAoY3VyX2VtLT5lbV9pc19jaGlsZCkKLQkJCQljb250aW51ZTsJCS8qIGlnbm9yZSBjaGls ZHJlbiBoZXJlICovCisJCQkvKiBDaGlsZCBtZW1iZXJzIHNob3VsZCBub3QgZXhpc3QgaW4gZWNf bWVtYmVycyAqLworCQkJQXNzZXJ0KCFjdXJfZW0tPmVtX2lzX2NoaWxkKTsKIAogCQkJLyoKIAkJ CSAqIFdlIG1heSBpZ25vcmUgZXhwcmVzc2lvbnMgdGhhdCByZWZlcmVuY2UgYSBzaW5nbGUgYmFz ZXJlbCwKQEAgLTI4MTYsNiArMjk1OSw3IEBAIGFkZF9jaGlsZF9qb2luX3JlbF9lcXVpdmFsZW5j ZXMoUGxhbm5lckluZm8gKnJvb3QsCiAJCQkJLyogWWVzLCBnZW5lcmF0ZSB0cmFuc2Zvcm1lZCBj aGlsZCB2ZXJzaW9uICovCiAJCQkJRXhwcgkgICAqY2hpbGRfZXhwcjsKIAkJCQlSZWxpZHMJCW5l d19yZWxpZHM7CisJCQkJRXF1aXZhbGVuY2VNZW1iZXIgKmNoaWxkX2VtOwogCiAJCQkJaWYgKHBh cmVudF9qb2lucmVsLT5yZWxvcHRraW5kID09IFJFTE9QVF9KT0lOUkVMKQogCQkJCXsKQEAgLTI4 NDYsOSArMjk5MCwyMSBAQCBhZGRfY2hpbGRfam9pbl9yZWxfZXF1aXZhbGVuY2VzKFBsYW5uZXJJ bmZvICpyb290LAogCQkJCQkJCQkJCQl0b3BfcGFyZW50X3JlbGlkcyk7CiAJCQkJbmV3X3JlbGlk cyA9IGJtc19hZGRfbWVtYmVycyhuZXdfcmVsaWRzLCBjaGlsZF9yZWxpZHMpOwogCi0JCQkJKHZv aWQpIGFkZF9lcV9tZW1iZXIoY3VyX2VjLCBjaGlsZF9leHByLCBuZXdfcmVsaWRzLAotCQkJCQkJ CQkJIGN1cl9lbS0+ZW1famRvbWFpbiwKLQkJCQkJCQkJCSBjdXJfZW0sIGN1cl9lbS0+ZW1fZGF0 YXR5cGUpOworCQkJCWNoaWxkX2VtID0gbWFrZV9lcV9tZW1iZXIoY3VyX2VjLCBjaGlsZF9leHBy LCBuZXdfcmVsaWRzLAorCQkJCQkJCQkJCSAgY3VyX2VtLT5lbV9qZG9tYWluLAorCQkJCQkJCQkJ CSAgY3VyX2VtLCBjdXJfZW0tPmVtX2RhdGF0eXBlKTsKKwkJCQljaGlsZF9qb2lucmVsLT5lY2xh c3NfY2hpbGRfbWVtYmVycyA9CisJCQkJCWxhcHBlbmQoY2hpbGRfam9pbnJlbC0+ZWNsYXNzX2No aWxkX21lbWJlcnMsIGNoaWxkX2VtKTsKKworCQkJCS8qCisJCQkJICogV2Ugc2F2ZSB0aGUga25v d2xlZGdlIHRoYXQgJ2NoaWxkX2VtJyBjYW4gYmUgdHJhbnNsYXRlZCBmcm9tCisJCQkJICogJ2No aWxkX2pvaW5yZWwnLiBUaGlzIGtub3dsZWRnZSBpcyB1c2VmdWwgZm9yCisJCQkJICogYWRkX3Ry YW5zZm9ybWVkX2NoaWxkX3ZlcnNpb24oKSB0byBmaW5kIGNoaWxkIG1lbWJlcnMgZnJvbSB0aGUK KwkJCQkgKiBnaXZlbiBSZWxpZHMuCisJCQkJICovCisJCQkJY3VyX2VtLT5lbV9jaGlsZF9qb2lu cmVsX3JlbGlkcyA9CisJCQkJCWJtc19hZGRfbWVtYmVyKGN1cl9lbS0+ZW1fY2hpbGRfam9pbnJl bF9yZWxpZHMsCisJCQkJCQkJCSAgIGNoaWxkX2pvaW5yZWwtPmpvaW5fcmVsX2xpc3RfaW5kZXgp OwogCQkJfQogCQl9CiAJfQpAQCAtMjg1Niw2ICszMDEyLDEwNiBAQCBhZGRfY2hpbGRfam9pbl9y ZWxfZXF1aXZhbGVuY2VzKFBsYW5uZXJJbmZvICpyb290LAogCU1lbW9yeUNvbnRleHRTd2l0Y2hU byhvbGRjb250ZXh0KTsKIH0KIAorLyoKKyAqIGFkZF90cmFuc2Zvcm1lZF9jaGlsZF92ZXJzaW9u CisgKgkgIEFkZCBhIHRyYW5zZm9ybWVkIEVxdWl2YWxlbmNlTWVtYmVyIHJlZmVyZW5jaW5nIHRo ZSBnaXZlbiBjaGlsZF9yZWwgdG8KKyAqCSAgdGhlIGxpc3QuCisgKgorICogVGhpcyBmdW5jdGlv biBpcyBleHBlY3RlZCB0byBiZSBjYWxsZWQgb25seSBmcm9tCisgKiBhZGRfY2hpbGRfcmVsX2Vx dWl2YWxlbmNlc190b19saXN0KCkuCisgKi8KK3N0YXRpYyB2b2lkCithZGRfdHJhbnNmb3JtZWRf Y2hpbGRfdmVyc2lvbihQbGFubmVySW5mbyAqcm9vdCwKKwkJCQkJCQkgIEVxdWl2YWxlbmNlQ2xh c3MgKmVjLAorCQkJCQkJCSAgRXF1aXZhbGVuY2VNZW1iZXIgKnBhcmVudF9lbSwKKwkJCQkJCQkg IFJlbE9wdEluZm8gKmNoaWxkX3JlbCwKKwkJCQkJCQkgIExpc3QgKipsaXN0LAorCQkJCQkJCSAg Ym9vbCAqbW9kaWZpZWQpCit7CisJTGlzdENlbGwgICAqbGM7CisKKwlmb3JlYWNoKGxjLCBjaGls ZF9yZWwtPmVjbGFzc19jaGlsZF9tZW1iZXJzKQorCXsKKwkJRXF1aXZhbGVuY2VNZW1iZXIgKmNo aWxkX2VtID0gbGZpcnN0X25vZGUoRXF1aXZhbGVuY2VNZW1iZXIsIGxjKTsKKworCQkvKiBTa2lw IHVud2FudGVkIEVxdWl2YWxlbmNlTWVtYmVycyAqLworCQlpZiAoY2hpbGRfZW0tPmVtX3BhcmVu dCAhPSBwYXJlbnRfZW0pCisJCQljb250aW51ZTsKKworCQkvKgorCQkgKiBJZiB0aGlzIGlzIHRo ZSBmaXJzdCB0aW1lIHRoZSBnaXZlbiBsaXN0IGhhcyBiZWVuIG1vZGlmaWVkLCB3ZSBuZWVkIHRv CisJCSAqIG1ha2UgYSBjb3B5IG9mIGl0LgorCQkgKi8KKwkJaWYgKCEqbW9kaWZpZWQpCisJCXsK KwkJCSpsaXN0ID0gbGlzdF9jb3B5KCpsaXN0KTsKKwkJCSptb2RpZmllZCA9IHRydWU7CisJCX0K KworCQkvKiBBZGQgdGhpcyBjaGlsZCBFcXVpdmFsZW5jZU1lbWJlciB0byB0aGUgbGlzdCAqLwor CQkqbGlzdCA9IGxhcHBlbmQoKmxpc3QsIGNoaWxkX2VtKTsKKwl9Cit9CisKKy8qCisgKiBhZGRf Y2hpbGRfcmVsX2VxdWl2YWxlbmNlc190b19saXN0CisgKgkgIEFkZCB0cmFuc2Zvcm1lZCBFcXVp dmFsZW5jZU1lbWJlcnMgcmVmZXJlbmNpbmcgY2hpbGQgcmVscyBpbiB0aGUgZ2l2ZW4KKyAqCSAg Y2hpbGRfcmVsaWRzIHRvIHRoZSBsaXN0LgorICoKKyAqIFRoZSB0cmFuc2Zvcm1hdGlvbiBpcyBk b25lIGluIGFkZF90cmFuc2Zvcm1lZF9jaGlsZF92ZXJzaW9uKCkuCisgKgorICogVGhpcyBmdW5j dGlvbiB3aWxsIG5vdCBjaGFuZ2UgdGhlIG9yaWdpbmFsICpsaXN0IGJ1dCB3aWxsIGFsd2F5cyBt YWtlIGEgY29weQorICogb2YgaXQgd2hlbiB3ZSBuZWVkIHRvIGFkZCB0cmFuc2Zvcm1lZCBtZW1i ZXJzLiAqbW9kaWZpZWQgd2lsbCBiZSB0cnVlIGlmIHRoZQorICogKmxpc3QgaXMgcmVwbGFjZWQg d2l0aCBhIG5ld2x5IGFsbG9jYXRlZCBvbmUuIEluIHN1Y2ggYSBjYXNlLCB0aGUgY2FsbGVyIGNh bgorICogKG9yIG11c3QpIGZyZWUgdGhlICpsaXN0LgorICovCit2b2lkCithZGRfY2hpbGRfcmVs X2VxdWl2YWxlbmNlc190b19saXN0KFBsYW5uZXJJbmZvICpyb290LAorCQkJCQkJCQkgICBFcXVp dmFsZW5jZUNsYXNzICplYywKKwkJCQkJCQkJICAgRXF1aXZhbGVuY2VNZW1iZXIgKnBhcmVudF9l bSwKKwkJCQkJCQkJICAgUmVsaWRzIGNoaWxkX3JlbGlkcywKKwkJCQkJCQkJICAgTGlzdCAqKmxp c3QsCisJCQkJCQkJCSAgIGJvb2wgKm1vZGlmaWVkKQoreworCWludAkJaTsKKwlSZWxpZHMJbWF0 Y2hpbmdfcmVsaWRzOworCisJLyogVGhlIGdpdmVuIEVxdWl2YWxlbmNlTWVtYmVyIHNob3VsZCBi ZSBwYXJlbnQgKi8KKwlBc3NlcnQoIXBhcmVudF9lbS0+ZW1faXNfY2hpbGQpOworCisJLyoKKwkg KiBGaXJzdCwgd2UgdHJhbnNsYXRlIHNpbXBsZSByZWxzLgorCSAqLworCW1hdGNoaW5nX3JlbGlk cyA9IGJtc19pbnRlcnNlY3QocGFyZW50X2VtLT5lbV9jaGlsZF9yZWxpZHMsCisJCQkJCQkJCQlj aGlsZF9yZWxpZHMpOworCWkgPSAtMTsKKwl3aGlsZSAoKGkgPSBibXNfbmV4dF9tZW1iZXIobWF0 Y2hpbmdfcmVsaWRzLCBpKSkgPj0gMCkKKwl7CisJCS8qIEFkZCB0cmFuc2Zvcm1lZCBjaGlsZCB2 ZXJzaW9uIGZvciB0aGlzIGNoaWxkIHJlbCAqLworCQlSZWxPcHRJbmZvICpjaGlsZF9yZWwgPSBy b290LT5zaW1wbGVfcmVsX2FycmF5W2ldOworCisJCUFzc2VydChjaGlsZF9yZWwgIT0gTlVMTCk7 CisJCWFkZF90cmFuc2Zvcm1lZF9jaGlsZF92ZXJzaW9uKHJvb3QsIGVjLCBwYXJlbnRfZW0sIGNo aWxkX3JlbCwKKwkJCQkJCQkJCSAgbGlzdCwgbW9kaWZpZWQpOworCX0KKwlibXNfZnJlZShtYXRj aGluZ19yZWxpZHMpOworCisJLyoKKwkgKiBOZXh0LCB3ZSB0cnkgdG8gdHJhbnNsYXRlIGpvaW4g cmVscy4KKwkgKi8KKwlpID0gLTE7CisJd2hpbGUgKChpID0gYm1zX25leHRfbWVtYmVyKHBhcmVu dF9lbS0+ZW1fY2hpbGRfam9pbnJlbF9yZWxpZHMsIGkpKSA+PSAwKQorCXsKKwkJLyogQWRkIHRy YW5zZm9ybWVkIGNoaWxkIHZlcnNpb24gZm9yIHRoaXMgY2hpbGQgam9pbiByZWwgKi8KKwkJUmVs T3B0SW5mbyAqY2hpbGRfam9pbnJlbCA9CisJCQlsaXN0X250aF9ub2RlKFJlbE9wdEluZm8sIHJv b3QtPmpvaW5fcmVsX2xpc3QsIGkpOworCisJCUFzc2VydChjaGlsZF9qb2lucmVsICE9IE5VTEwp OworCQlhZGRfdHJhbnNmb3JtZWRfY2hpbGRfdmVyc2lvbihyb290LCBlYywgcGFyZW50X2VtLCBj aGlsZF9qb2lucmVsLAorCQkJCQkJCQkJICBsaXN0LCBtb2RpZmllZCk7CisJfQorfQorCiAKIC8q CiAgKiBnZW5lcmF0ZV9pbXBsaWVkX2VxdWFsaXRpZXNfZm9yX2NvbHVtbgpAQCAtMjg4OSw3ICsz MTQ1LDcgQEAgZ2VuZXJhdGVfaW1wbGllZF9lcXVhbGl0aWVzX2Zvcl9jb2x1bW4oUGxhbm5lcklu Zm8gKnJvb3QsCiB7CiAJTGlzdAkgICAqcmVzdWx0ID0gTklMOwogCWJvb2wJCWlzX2NoaWxkX3Jl bCA9IChyZWwtPnJlbG9wdGtpbmQgPT0gUkVMT1BUX09USEVSX01FTUJFUl9SRUwpOwotCVJlbGlk cwkJcGFyZW50X3JlbGlkczsKKwlSZWxpZHMJCXBhcmVudF9yZWxpZHMsIHRvcF9wYXJlbnRfcmVs X3JlbGlkczsKIAlpbnQJCQlpOwogCiAJLyogU2hvdWxkIGJlIE9LIHRvIHJlbHkgb24gZWNsYXNz X2luZGV4ZXMgKi8KQEAgLTI4OTgsNiArMzE1NCw5IEBAIGdlbmVyYXRlX2ltcGxpZWRfZXF1YWxp dGllc19mb3JfY29sdW1uKFBsYW5uZXJJbmZvICpyb290LAogCS8qIEluZGV4ZXMgYXJlIGF2YWls YWJsZSBvbmx5IG9uIGJhc2Ugb3IgIm90aGVyIiBtZW1iZXIgcmVsYXRpb25zLiAqLwogCUFzc2Vy dChJU19TSU1QTEVfUkVMKHJlbCkpOwogCisJLyogU2VlIHRoZSBjb21tZW50cyBpbiBnZXRfZWNs YXNzX2Zvcl9zb3J0X2V4cHIoKSB0byBzZWUgaG93IHRoaXMgd29ya3MuICovCisJdG9wX3BhcmVu dF9yZWxfcmVsaWRzID0gZmluZF9yZWxpZHNfdG9wX3BhcmVudHMocm9vdCwgcmVsLT5yZWxpZHMp OworCiAJLyogSWYgaXQncyBhIGNoaWxkIHJlbCwgd2UnbGwgbmVlZCB0byBrbm93IHdoYXQgaXRz IHBhcmVudChzKSBhcmUgKi8KIAlpZiAoaXNfY2hpbGRfcmVsKQogCQlwYXJlbnRfcmVsaWRzID0g ZmluZF9jaGlsZHJlbF9wYXJlbnRzKHJvb3QsIHJlbCk7CkBAIC0yOTEwLDYgKzMxNjksOSBAQCBn ZW5lcmF0ZV9pbXBsaWVkX2VxdWFsaXRpZXNfZm9yX2NvbHVtbihQbGFubmVySW5mbyAqcm9vdCwK IAkJRXF1aXZhbGVuY2VDbGFzcyAqY3VyX2VjID0gKEVxdWl2YWxlbmNlQ2xhc3MgKikgbGlzdF9u dGgocm9vdC0+ZXFfY2xhc3NlcywgaSk7CiAJCUVxdWl2YWxlbmNlTWVtYmVyICpjdXJfZW07CiAJ CUxpc3RDZWxsICAgKmxjMjsKKwkJTGlzdAkgICAqbWVtYmVyczsKKwkJYm9vbAkJbW9kaWZpZWQ7 CisJCWludAkJCWo7CiAKIAkJLyogU2FuaXR5IGNoZWNrIGVjbGFzc19pbmRleGVzIG9ubHkgY29u dGFpbiBFQ3MgZm9yIHJlbCAqLwogCQlBc3NlcnQoaXNfY2hpbGRfcmVsIHx8IGJtc19pc19zdWJz ZXQocmVsLT5yZWxpZHMsIGN1cl9lYy0+ZWNfcmVsaWRzKSk7CkBAIC0yOTMxLDE1ICszMTkzLDI1 IEBAIGdlbmVyYXRlX2ltcGxpZWRfZXF1YWxpdGllc19mb3JfY29sdW1uKFBsYW5uZXJJbmZvICpy b290LAogCQkgKiBjb3JuZXIgY2FzZXMsIHNvIGZvciBub3cgd2UgbGl2ZSB3aXRoIGp1c3QgcmVw b3J0aW5nIHRoZSBmaXJzdAogCQkgKiBtYXRjaC4gIFNlZSBhbHNvIGdldF9lY2xhc3NfZm9yX3Nv cnRfZXhwci4pCiAJCSAqLworCQkvKiBTZWUgdGhlIGNvbW1lbnRzIGluIGdldF9lY2xhc3NfZm9y X3NvcnRfZXhwcigpIHRvIHNlZSBob3cgdGhpcyB3b3Jrcy4gKi8KKwkJbWVtYmVycyA9IGN1cl9l Yy0+ZWNfcmVsX21lbWJlcnM7CisJCW1vZGlmaWVkID0gZmFsc2U7CiAJCWN1cl9lbSA9IE5VTEw7 Ci0JCWZvcmVhY2gobGMyLCBjdXJfZWMtPmVjX21lbWJlcnMpCisJCWZvciAoaiA9IDA7IGogPCBs aXN0X2xlbmd0aChtZW1iZXJzKTsgaisrKQogCQl7Ci0JCQljdXJfZW0gPSAoRXF1aXZhbGVuY2VN ZW1iZXIgKikgbGZpcnN0KGxjMik7CisJCQljdXJfZW0gPSBsaXN0X250aF9ub2RlKEVxdWl2YWxl bmNlTWVtYmVyLCBtZW1iZXJzLCBqKTsKKwkJCS8qIFNlZSB0aGUgY29tbWVudHMgaW4gZ2V0X2Vj bGFzc19mb3Jfc29ydF9leHByKCkgdG8gc2VlIGhvdyB0aGlzIHdvcmtzLiAqLworCQkJaWYgKHVu bGlrZWx5KHRvcF9wYXJlbnRfcmVsX3JlbGlkcyAhPSBOVUxMKSAmJiAhY3VyX2VtLT5lbV9pc19j aGlsZCAmJgorCQkJCWJtc19lcXVhbChjdXJfZW0tPmVtX3JlbGlkcywgdG9wX3BhcmVudF9yZWxf cmVsaWRzKSkKKwkJCQlhZGRfY2hpbGRfcmVsX2VxdWl2YWxlbmNlc190b19saXN0KHJvb3QsIGN1 cl9lYywgY3VyX2VtLCByZWwtPnJlbGlkcywKKwkJCQkJCQkJCQkJCSAgICZtZW1iZXJzLCAmbW9k aWZpZWQpOwogCQkJaWYgKGJtc19lcXVhbChjdXJfZW0tPmVtX3JlbGlkcywgcmVsLT5yZWxpZHMp ICYmCiAJCQkJY2FsbGJhY2socm9vdCwgcmVsLCBjdXJfZWMsIGN1cl9lbSwgY2FsbGJhY2tfYXJn KSkKIAkJCQlicmVhazsKIAkJCWN1cl9lbSA9IE5VTEw7CiAJCX0KKwkJaWYgKHVubGlrZWx5KG1v ZGlmaWVkKSkKKwkJCWxpc3RfZnJlZShtZW1iZXJzKTsKIAogCQlpZiAoIWN1cl9lbSkKIAkJCWNv bnRpbnVlOwpAQCAtMjk1NCw4ICszMjI2LDggQEAgZ2VuZXJhdGVfaW1wbGllZF9lcXVhbGl0aWVz X2Zvcl9jb2x1bW4oUGxhbm5lckluZm8gKnJvb3QsCiAJCQlPaWQJCQllcV9vcDsKIAkJCVJlc3Ry aWN0SW5mbyAqcmluZm87CiAKLQkJCWlmIChvdGhlcl9lbS0+ZW1faXNfY2hpbGQpCi0JCQkJY29u dGludWU7CQkvKiBpZ25vcmUgY2hpbGRyZW4gaGVyZSAqLworCQkJLyogQ2hpbGQgbWVtYmVycyBz aG91bGQgbm90IGV4aXN0IGluIGVjX21lbWJlcnMgKi8KKwkJCUFzc2VydCghb3RoZXJfZW0tPmVt X2lzX2NoaWxkKTsKIAogCQkJLyogTWFrZSBzdXJlIGl0J2xsIGJlIGEgam9pbiB0byBhIGRpZmZl cmVudCByZWwgKi8KIAkJCWlmIChvdGhlcl9lbSA9PSBjdXJfZW0gfHwKQEAgLTMxNzMsOCArMzQ0 NSw4IEBAIGVjbGFzc191c2VmdWxfZm9yX21lcmdpbmcoUGxhbm5lckluZm8gKnJvb3QsCiAJewog CQlFcXVpdmFsZW5jZU1lbWJlciAqY3VyX2VtID0gKEVxdWl2YWxlbmNlTWVtYmVyICopIGxmaXJz dChsYyk7CiAKLQkJaWYgKGN1cl9lbS0+ZW1faXNfY2hpbGQpCi0JCQljb250aW51ZTsJCQkvKiBp Z25vcmUgY2hpbGRyZW4gaGVyZSAqLworCQkvKiBDaGlsZCBtZW1iZXJzIHNob3VsZCBub3QgZXhp c3QgaW4gZWNfbWVtYmVycyAqLworCQlBc3NlcnQoIWN1cl9lbS0+ZW1faXNfY2hpbGQpOwogCiAJ CWlmICghYm1zX292ZXJsYXAoY3VyX2VtLT5lbV9yZWxpZHMsIHJlbGlkcykpCiAJCQlyZXR1cm4g dHJ1ZTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2luZHhwYXRoLmMg Yi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9pbmR4cGF0aC5jCmluZGV4IDMyYzZhOGJiZGMu LjFmNzQzOGE2MTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2luZHhw YXRoLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvaW5keHBhdGguYwpAQCAtMTg0 LDcgKzE4NCw3IEBAIHN0YXRpYyBJbmRleENsYXVzZSAqZXhwYW5kX2luZGV4cXVhbF9yb3djb21w YXJlKFBsYW5uZXJJbmZvICpyb290LAogCQkJCQkJCQkJCQkJSW5kZXhPcHRJbmZvICppbmRleCwK IAkJCQkJCQkJCQkJCU9pZCBleHByX29wLAogCQkJCQkJCQkJCQkJYm9vbCB2YXJfb25fbGVmdCk7 Ci1zdGF0aWMgdm9pZCBtYXRjaF9wYXRoa2V5c190b19pbmRleChJbmRleE9wdEluZm8gKmluZGV4 LCBMaXN0ICpwYXRoa2V5cywKK3N0YXRpYyB2b2lkIG1hdGNoX3BhdGhrZXlzX3RvX2luZGV4KFBs YW5uZXJJbmZvICpyb290LCBJbmRleE9wdEluZm8gKmluZGV4LCBMaXN0ICpwYXRoa2V5cywKIAkJ CQkJCQkJCUxpc3QgKipvcmRlcmJ5X2NsYXVzZXNfcCwKIAkJCQkJCQkJCUxpc3QgKipjbGF1c2Vf Y29sdW1uc19wKTsKIHN0YXRpYyBFeHByICptYXRjaF9jbGF1c2VfdG9fb3JkZXJpbmdfb3AoSW5k ZXhPcHRJbmZvICppbmRleCwKQEAgLTk4MCw3ICs5ODAsNyBAQCBidWlsZF9pbmRleF9wYXRocyhQ bGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsLAogCQkgKiBxdWVyeV9wYXRoa2V5cyB3 aWxsIGFsbG93IGFuIGluY3JlbWVudGFsIHNvcnQgdG8gYmUgY29uc2lkZXJlZCBvbgogCQkgKiB0 aGUgaW5kZXgncyBwYXJ0aWFsbHkgc29ydGVkIHJlc3VsdHMuCiAJCSAqLwotCQltYXRjaF9wYXRo a2V5c190b19pbmRleChpbmRleCwgcm9vdC0+cXVlcnlfcGF0aGtleXMsCisJCW1hdGNoX3BhdGhr ZXlzX3RvX2luZGV4KHJvb3QsIGluZGV4LCByb290LT5xdWVyeV9wYXRoa2V5cywKIAkJCQkJCQkJ Jm9yZGVyYnljbGF1c2VzLAogCQkJCQkJCQkmb3JkZXJieWNsYXVzZWNvbHMpOwogCQlpZiAobGlz dF9sZW5ndGgocm9vdC0+cXVlcnlfcGF0aGtleXMpID09IGxpc3RfbGVuZ3RoKG9yZGVyYnljbGF1 c2VzKSkKQEAgLTMwNzEsMTIgKzMwNzEsMTYgQEAgZXhwYW5kX2luZGV4cXVhbF9yb3djb21wYXJl KFBsYW5uZXJJbmZvICpyb290LAogICogaXRlbSBpbiB0aGUgZ2l2ZW4gJ3BhdGhrZXlzJyBsaXN0 LgogICovCiBzdGF0aWMgdm9pZAotbWF0Y2hfcGF0aGtleXNfdG9faW5kZXgoSW5kZXhPcHRJbmZv ICppbmRleCwgTGlzdCAqcGF0aGtleXMsCittYXRjaF9wYXRoa2V5c190b19pbmRleChQbGFubmVy SW5mbyAqcm9vdCwgSW5kZXhPcHRJbmZvICppbmRleCwgTGlzdCAqcGF0aGtleXMsCiAJCQkJCQlM aXN0ICoqb3JkZXJieV9jbGF1c2VzX3AsCiAJCQkJCQlMaXN0ICoqY2xhdXNlX2NvbHVtbnNfcCkK IHsKKwlSZWxpZHMJCXRvcF9wYXJlbnRfaW5kZXhfcmVsaWRzOwogCUxpc3RDZWxsICAgKmxjMTsK IAorCS8qIFNlZSB0aGUgY29tbWVudHMgaW4gZ2V0X2VjbGFzc19mb3Jfc29ydF9leHByKCkgdG8g c2VlIGhvdyB0aGlzIHdvcmtzLiAqLworCXRvcF9wYXJlbnRfaW5kZXhfcmVsaWRzID0gZmluZF9y ZWxpZHNfdG9wX3BhcmVudHMocm9vdCwgaW5kZXgtPnJlbC0+cmVsaWRzKTsKKwogCSpvcmRlcmJ5 X2NsYXVzZXNfcCA9IE5JTDsJLyogc2V0IGRlZmF1bHQgcmVzdWx0cyAqLwogCSpjbGF1c2VfY29s dW1uc19wID0gTklMOwogCkBAIC0zMDg4LDcgKzMwOTIsOSBAQCBtYXRjaF9wYXRoa2V5c190b19p bmRleChJbmRleE9wdEluZm8gKmluZGV4LCBMaXN0ICpwYXRoa2V5cywKIAl7CiAJCVBhdGhLZXkg ICAgKnBhdGhrZXkgPSAoUGF0aEtleSAqKSBsZmlyc3QobGMxKTsKIAkJYm9vbAkJZm91bmQgPSBm YWxzZTsKLQkJTGlzdENlbGwgICAqbGMyOworCQlMaXN0CSAgICptZW1iZXJzOworCQlib29sCQlt b2RpZmllZDsKKwkJaW50CQkJaTsKIAogCiAJCS8qIFBhdGhrZXkgbXVzdCByZXF1ZXN0IGRlZmF1 bHQgc29ydCBvcmRlciBmb3IgdGhlIHRhcmdldCBvcGZhbWlseSAqLwpAQCAtMzEwOCwxNSArMzEx NCwzMyBAQCBtYXRjaF9wYXRoa2V5c190b19pbmRleChJbmRleE9wdEluZm8gKmluZGV4LCBMaXN0 ICpwYXRoa2V5cywKIAkJICogYmUgY29uc2lkZXJlZCB0byBtYXRjaCBtb3JlIHRoYW4gb25lIHBh dGhrZXkgbGlzdCwgd2hpY2ggaXMgT0sKIAkJICogaGVyZS4gIFNlZSBhbHNvIGdldF9lY2xhc3Nf Zm9yX3NvcnRfZXhwci4pCiAJCSAqLwotCQlmb3JlYWNoKGxjMiwgcGF0aGtleS0+cGtfZWNsYXNz LT5lY19tZW1iZXJzKQorCQkvKiBTZWUgdGhlIGNvbW1lbnRzIGluIGdldF9lY2xhc3NfZm9yX3Nv cnRfZXhwcigpIHRvIHNlZSBob3cgdGhpcyB3b3Jrcy4gKi8KKwkJbWVtYmVycyA9IHBhdGhrZXkt PnBrX2VjbGFzcy0+ZWNfbWVtYmVyczsKKwkJbW9kaWZpZWQgPSBmYWxzZTsKKwkJZm9yIChpID0g MDsgaSA8IGxpc3RfbGVuZ3RoKG1lbWJlcnMpOyBpKyspCiAJCXsKLQkJCUVxdWl2YWxlbmNlTWVt YmVyICptZW1iZXIgPSAoRXF1aXZhbGVuY2VNZW1iZXIgKikgbGZpcnN0KGxjMik7CisJCQlFcXVp dmFsZW5jZU1lbWJlciAqbWVtYmVyID0gbGlzdF9udGhfbm9kZShFcXVpdmFsZW5jZU1lbWJlciwg bWVtYmVycywgaSk7CiAJCQlpbnQJCQlpbmRleGNvbDsKIAorCQkJLyogU2VlIHRoZSBjb21tZW50 cyBpbiBnZXRfZWNsYXNzX2Zvcl9zb3J0X2V4cHIoKSB0byBzZWUgaG93IHRoaXMgd29ya3MuICov CisJCQlpZiAodW5saWtlbHkodG9wX3BhcmVudF9pbmRleF9yZWxpZHMgIT0gTlVMTCkgJiYgIW1l bWJlci0+ZW1faXNfY2hpbGQgJiYKKwkJCQlibXNfZXF1YWwobWVtYmVyLT5lbV9yZWxpZHMsIHRv cF9wYXJlbnRfaW5kZXhfcmVsaWRzKSkKKwkJCQlhZGRfY2hpbGRfcmVsX2VxdWl2YWxlbmNlc190 b19saXN0KHJvb3QsIHBhdGhrZXktPnBrX2VjbGFzcywgbWVtYmVyLAorCQkJCQkJCQkJCQkJICAg aW5kZXgtPnJlbC0+cmVsaWRzLAorCQkJCQkJCQkJCQkJICAgJm1lbWJlcnMsICZtb2RpZmllZCk7 CisKIAkJCS8qIE5vIHBvc3NpYmlsaXR5IG9mIG1hdGNoIGlmIGl0IHJlZmVyZW5jZXMgb3RoZXIg cmVsYXRpb25zICovCi0JCQlpZiAoIWJtc19lcXVhbChtZW1iZXItPmVtX3JlbGlkcywgaW5kZXgt PnJlbC0+cmVsaWRzKSkKKwkJCWlmIChtZW1iZXItPmVtX2lzX2NoaWxkIHx8CisJCQkJIWJtc19l cXVhbChtZW1iZXItPmVtX3JlbGlkcywgaW5kZXgtPnJlbC0+cmVsaWRzKSkKIAkJCQljb250aW51 ZTsKIAorCQkJLyoKKwkJCSAqIElmIHRoaXMgRXF1aXZhbGVuY2VNZW1iZXIgaXMgYSBjaGlsZCwg aS5lLiwgdHJhbnNsYXRlZCBhYm92ZSwKKwkJCSAqIGl0IHNob3VsZCBtYXRjaCB0aGUgcmVxdWVz dC4gV2UgY2Fubm90IGFzc2VydCB0aGlzIGlmIGEgcmVxdWVzdAorCQkJICogaXMgYm1zX2lzX3N1 YnNldCgpLgorCQkJICovCisJCQlBc3NlcnQoYm1zX2VxdWFsKG1lbWJlci0+ZW1fcmVsaWRzLCBp bmRleC0+cmVsLT5yZWxpZHMpKTsKKwogCQkJLyoKIAkJCSAqIFdlIGFsbG93IGFueSBjb2x1bW4g b2YgdGhlIGluZGV4IHRvIG1hdGNoIGVhY2ggcGF0aGtleTsgdGhleQogCQkJICogZG9uJ3QgaGF2 ZSB0byBtYXRjaCBsZWZ0LXRvLXJpZ2h0IGFzIHlvdSBtaWdodCBleHBlY3QuICBUaGlzIGlzCkBA IC0zMTQ1LDYgKzMxNjksOCBAQCBtYXRjaF9wYXRoa2V5c190b19pbmRleChJbmRleE9wdEluZm8g KmluZGV4LCBMaXN0ICpwYXRoa2V5cywKIAkJCWlmIChmb3VuZCkJCQkvKiBkb24ndCB3YW50IHRv IGxvb2sgYXQgcmVtYWluaW5nIG1lbWJlcnMgKi8KIAkJCQlicmVhazsKIAkJfQorCQlpZiAodW5s aWtlbHkobW9kaWZpZWQpKQorCQkJbGlzdF9mcmVlKG1lbWJlcnMpOwogCiAJCS8qCiAJCSAqIFJl dHVybiB0aGUgbWF0Y2hlcyBmb3VuZCBzbyBmYXIgd2hlbiB0aGlzIHBhdGhrZXkgY291bGRuJ3Qg YmUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL3BhdGhrZXlzLmMgYi9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9wYXRoa2V5cy5jCmluZGV4IGNhOTRhMzFmNzEuLmFh YzY0YzQxMjQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL3BhdGhrZXlz LmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvcGF0aGtleXMuYwpAQCAtOTUyLDgg Kzk1Miw4IEBAIGNvbnZlcnRfc3VicXVlcnlfcGF0aGtleXMoUGxhbm5lckluZm8gKnJvb3QsIFJl bE9wdEluZm8gKnJlbCwKIAkJCQlPaWQJCQlzdWJfZXhwcl9jb2xsID0gc3ViX2VjbGFzcy0+ZWNf Y29sbGF0aW9uOwogCQkJCUxpc3RDZWxsICAgKms7CiAKLQkJCQlpZiAoc3ViX21lbWJlci0+ZW1f aXNfY2hpbGQpCi0JCQkJCWNvbnRpbnVlOwkvKiBpZ25vcmUgY2hpbGRyZW4gaGVyZSAqLworCQkJ CS8qIENoaWxkIG1lbWJlcnMgc2hvdWxkIG5vdCBleGlzdCBpbiBlY19tZW1iZXJzICovCisJCQkJ QXNzZXJ0KCFzdWJfbWVtYmVyLT5lbV9pc19jaGlsZCk7CiAKIAkJCQlmb3JlYWNoKGssIHN1YnF1 ZXJ5X3RsaXN0KQogCQkJCXsKQEAgLTE0NzksOCArMTQ3OSwxMSBAQCBzZWxlY3Rfb3V0ZXJfcGF0 aGtleXNfZm9yX21lcmdlKFBsYW5uZXJJbmZvICpyb290LAogCQl7CiAJCQlFcXVpdmFsZW5jZU1l bWJlciAqZW0gPSAoRXF1aXZhbGVuY2VNZW1iZXIgKikgbGZpcnN0KGxjMik7CiAKKwkJCS8qIENo aWxkIG1lbWJlcnMgc2hvdWxkIG5vdCBleGlzdCBpbiBlY19tZW1iZXJzICovCisJCQlBc3NlcnQo IWVtLT5lbV9pc19jaGlsZCk7CisKIAkJCS8qIFBvdGVudGlhbCBmdXR1cmUgam9pbiBwYXJ0bmVy PyAqLwotCQkJaWYgKCFlbS0+ZW1faXNfY29uc3QgJiYgIWVtLT5lbV9pc19jaGlsZCAmJgorCQkJ aWYgKCFlbS0+ZW1faXNfY29uc3QgJiYKIAkJCQkhYm1zX292ZXJsYXAoZW0tPmVtX3JlbGlkcywg am9pbnJlbC0+cmVsaWRzKSkKIAkJCQlzY29yZSsrOwogCQl9CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9vcHRpbWl6ZXIvcGxhbi9hbmFseXplam9pbnMuYyBiL3NyYy9iYWNrZW5kL29wdGltaXpl ci9wbGFuL2FuYWx5emVqb2lucy5jCmluZGV4IDdkY2I3NDU3MmEuLmYwNzM1ZjNjNDEgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2FuYWx5emVqb2lucy5jCisrKyBiL3Ny Yy9iYWNrZW5kL29wdGltaXplci9wbGFuL2FuYWx5emVqb2lucy5jCkBAIC02MSw3ICs2MSw3IEBA IHN0YXRpYyB2b2lkIHJlbW92ZV9sZWZ0am9pbnJlbF9mcm9tX3F1ZXJ5KFBsYW5uZXJJbmZvICpy b290LCBpbnQgcmVsaWQsCiAJCQkJCQkJCQkJICBTcGVjaWFsSm9pbkluZm8gKnNqaW5mbyk7CiBz dGF0aWMgdm9pZCByZW1vdmVfcmVsX2Zyb21fcmVzdHJpY3RpbmZvKFJlc3RyaWN0SW5mbyAqcmlu Zm8sCiAJCQkJCQkJCQkJIGludCByZWxpZCwgaW50IG9qcmVsaWQpOwotc3RhdGljIHZvaWQgcmVt b3ZlX3JlbF9mcm9tX2VjbGFzcyhFcXVpdmFsZW5jZUNsYXNzICplYywKK3N0YXRpYyB2b2lkIHJl bW92ZV9yZWxfZnJvbV9lY2xhc3MoUGxhbm5lckluZm8gKnJvb3QsIEVxdWl2YWxlbmNlQ2xhc3Mg KmVjLAogCQkJCQkJCQkgICBpbnQgcmVsaWQsIGludCBvanJlbGlkKTsKIHN0YXRpYyBMaXN0ICpy ZW1vdmVfcmVsX2Zyb21fam9pbmxpc3QoTGlzdCAqam9pbmxpc3QsIGludCByZWxpZCwgaW50ICpu cmVtb3ZlZCk7CiBzdGF0aWMgYm9vbCByZWxfc3VwcG9ydHNfZGlzdGluY3RuZXNzKFBsYW5uZXJJ bmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwpOwpAQCAtNTgwLDcgKzU4MCw3IEBAIHJlbW92ZV9s ZWZ0am9pbnJlbF9mcm9tX3F1ZXJ5KFBsYW5uZXJJbmZvICpyb290LCBpbnQgcmVsaWQsCiAKIAkJ aWYgKGJtc19pc19tZW1iZXIocmVsaWQsIGVjLT5lY19yZWxpZHMpIHx8CiAJCQlibXNfaXNfbWVt YmVyKG9qcmVsaWQsIGVjLT5lY19yZWxpZHMpKQotCQkJcmVtb3ZlX3JlbF9mcm9tX2VjbGFzcyhl YywgcmVsaWQsIG9qcmVsaWQpOworCQkJcmVtb3ZlX3JlbF9mcm9tX2VjbGFzcyhyb290LCBlYywg cmVsaWQsIG9qcmVsaWQpOwogCX0KIAogCS8qCkBAIC02NjUsNyArNjY1LDggQEAgcmVtb3ZlX3Jl bF9mcm9tX3Jlc3RyaWN0aW5mbyhSZXN0cmljdEluZm8gKnJpbmZvLCBpbnQgcmVsaWQsIGludCBv anJlbGlkKQogICogbGV2ZWwocykuCiAgKi8KIHN0YXRpYyB2b2lkCi1yZW1vdmVfcmVsX2Zyb21f ZWNsYXNzKEVxdWl2YWxlbmNlQ2xhc3MgKmVjLCBpbnQgcmVsaWQsIGludCBvanJlbGlkKQorcmVt b3ZlX3JlbF9mcm9tX2VjbGFzcyhQbGFubmVySW5mbyAqcm9vdCwgRXF1aXZhbGVuY2VDbGFzcyAq ZWMsIGludCByZWxpZCwKKwkJCQkJICAgaW50IG9qcmVsaWQpCiB7CiAJTGlzdENlbGwgICAqbGM7 CiAKQEAgLTY4OSw3ICs2OTAsMTQgQEAgcmVtb3ZlX3JlbF9mcm9tX2VjbGFzcyhFcXVpdmFsZW5j ZUNsYXNzICplYywgaW50IHJlbGlkLCBpbnQgb2pyZWxpZCkKIAkJCWN1cl9lbS0+ZW1fcmVsaWRz ID0gYm1zX2RlbF9tZW1iZXIoY3VyX2VtLT5lbV9yZWxpZHMsIHJlbGlkKTsKIAkJCWN1cl9lbS0+ ZW1fcmVsaWRzID0gYm1zX2RlbF9tZW1iZXIoY3VyX2VtLT5lbV9yZWxpZHMsIG9qcmVsaWQpOwog CQkJaWYgKGJtc19pc19lbXB0eShjdXJfZW0tPmVtX3JlbGlkcykpCisJCQl7CiAJCQkJZWMtPmVj X21lbWJlcnMgPSBmb3JlYWNoX2RlbGV0ZV9jdXJyZW50KGVjLT5lY19tZW1iZXJzLCBsYyk7CisJ CQkJLyogWFhYIHBlcmZvcm1hbmNlIG9mIGxpc3RfZGVsZXRlX3B0cigpPz8gKi8KKwkJCQllYy0+ ZWNfbm9yZWxfbWVtYmVycyA9IGxpc3RfZGVsZXRlX3B0cihlYy0+ZWNfbm9yZWxfbWVtYmVycywK KwkJCQkJCQkJCQkJCQkgICBjdXJfZW0pOworCQkJCWVjLT5lY19yZWxfbWVtYmVycyA9IGxpc3Rf ZGVsZXRlX3B0cihlYy0+ZWNfcmVsX21lbWJlcnMsCisJCQkJCQkJCQkJCQkJIGN1cl9lbSk7CisJ CQl9CiAJCX0KIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2Ny ZWF0ZXBsYW4uYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYwppbmRl eCBjYTYxOWVhYjk0Li5kY2U0MmFkYTgxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6 ZXIvcGxhbi9jcmVhdGVwbGFuLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vY3Jl YXRlcGxhbi5jCkBAIC0yNjAsNyArMjYwLDkgQEAgc3RhdGljIEluY3JlbWVudGFsU29ydCAqbWFr ZV9pbmNyZW1lbnRhbHNvcnQoUGxhbiAqbGVmdHRyZWUsCiAJCQkJCQkJCQkJCSBpbnQgbnVtQ29s cywgaW50IG5QcmVzb3J0ZWRDb2xzLAogCQkJCQkJCQkJCQkgQXR0ck51bWJlciAqc29ydENvbElk eCwgT2lkICpzb3J0T3BlcmF0b3JzLAogCQkJCQkJCQkJCQkgT2lkICpjb2xsYXRpb25zLCBib29s ICpudWxsc0ZpcnN0KTsKLXN0YXRpYyBQbGFuICpwcmVwYXJlX3NvcnRfZnJvbV9wYXRoa2V5cyhQ bGFuICpsZWZ0dHJlZSwgTGlzdCAqcGF0aGtleXMsCitzdGF0aWMgUGxhbiAqcHJlcGFyZV9zb3J0 X2Zyb21fcGF0aGtleXMoUGxhbm5lckluZm8gKnJvb3QsCisJCQkJCQkJCQkJUGxhbiAqbGVmdHRy ZWUsCisJCQkJCQkJCQkJTGlzdCAqcGF0aGtleXMsCiAJCQkJCQkJCQkJUmVsaWRzIHJlbGlkcywK IAkJCQkJCQkJCQljb25zdCBBdHRyTnVtYmVyICpyZXFDb2xJZHgsCiAJCQkJCQkJCQkJYm9vbCBh ZGp1c3RfdGxpc3RfaW5fcGxhY2UsCkBAIC0yNjksOSArMjcxLDExIEBAIHN0YXRpYyBQbGFuICpw cmVwYXJlX3NvcnRfZnJvbV9wYXRoa2V5cyhQbGFuICpsZWZ0dHJlZSwgTGlzdCAqcGF0aGtleXMs CiAJCQkJCQkJCQkJT2lkICoqcF9zb3J0T3BlcmF0b3JzLAogCQkJCQkJCQkJCU9pZCAqKnBfY29s bGF0aW9ucywKIAkJCQkJCQkJCQlib29sICoqcF9udWxsc0ZpcnN0KTsKLXN0YXRpYyBTb3J0ICpt YWtlX3NvcnRfZnJvbV9wYXRoa2V5cyhQbGFuICpsZWZ0dHJlZSwgTGlzdCAqcGF0aGtleXMsCitz dGF0aWMgU29ydCAqbWFrZV9zb3J0X2Zyb21fcGF0aGtleXMoUGxhbm5lckluZm8gKnJvb3QsCisJ CQkJCQkJCQkgUGxhbiAqbGVmdHRyZWUsCisJCQkJCQkJCQkgTGlzdCAqcGF0aGtleXMsCiAJCQkJ CQkJCQkgUmVsaWRzIHJlbGlkcyk7Ci1zdGF0aWMgSW5jcmVtZW50YWxTb3J0ICptYWtlX2luY3Jl bWVudGFsc29ydF9mcm9tX3BhdGhrZXlzKFBsYW4gKmxlZnR0cmVlLAorc3RhdGljIEluY3JlbWVu dGFsU29ydCAqbWFrZV9pbmNyZW1lbnRhbHNvcnRfZnJvbV9wYXRoa2V5cyhQbGFubmVySW5mbyAq cm9vdCwgUGxhbiAqbGVmdHRyZWUsCiAJCQkJCQkJCQkJCQkJCSAgIExpc3QgKnBhdGhrZXlzLCBS ZWxpZHMgcmVsaWRzLCBpbnQgblByZXNvcnRlZENvbHMpOwogc3RhdGljIFNvcnQgKm1ha2Vfc29y dF9mcm9tX2dyb3VwY29scyhMaXN0ICpncm91cGNscywKIAkJCQkJCQkJCSAgQXR0ck51bWJlciAq Z3JwQ29sSWR4LApAQCAtMjkzLDcgKzI5Nyw3IEBAIHN0YXRpYyBHcm91cCAqbWFrZV9ncm91cChM aXN0ICp0bGlzdCwgTGlzdCAqcXVhbCwgaW50IG51bUdyb3VwQ29scywKIAkJCQkJCSBBdHRyTnVt YmVyICpncnBDb2xJZHgsIE9pZCAqZ3JwT3BlcmF0b3JzLCBPaWQgKmdycENvbGxhdGlvbnMsCiAJ CQkJCQkgUGxhbiAqbGVmdHRyZWUpOwogc3RhdGljIFVuaXF1ZSAqbWFrZV91bmlxdWVfZnJvbV9z b3J0Y2xhdXNlcyhQbGFuICpsZWZ0dHJlZSwgTGlzdCAqZGlzdGluY3RMaXN0KTsKLXN0YXRpYyBV bmlxdWUgKm1ha2VfdW5pcXVlX2Zyb21fcGF0aGtleXMoUGxhbiAqbGVmdHRyZWUsCitzdGF0aWMg VW5pcXVlICptYWtlX3VuaXF1ZV9mcm9tX3BhdGhrZXlzKFBsYW5uZXJJbmZvICpyb290LCBQbGFu ICpsZWZ0dHJlZSwKIAkJCQkJCQkJCQkgTGlzdCAqcGF0aGtleXMsIGludCBudW1Db2xzKTsKIHN0 YXRpYyBHYXRoZXIgKm1ha2VfZ2F0aGVyKExpc3QgKnFwdGxpc3QsIExpc3QgKnFwcXVhbCwKIAkJ CQkJCSAgIGludCBud29ya2VycywgaW50IHJlc2Nhbl9wYXJhbSwgYm9vbCBzaW5nbGVfY29weSwg UGxhbiAqc3VicGxhbik7CkBAIC0xMjgwLDcgKzEyODQsNyBAQCBjcmVhdGVfYXBwZW5kX3BsYW4o UGxhbm5lckluZm8gKnJvb3QsIEFwcGVuZFBhdGggKmJlc3RfcGF0aCwgaW50IGZsYWdzKQogCQkg KiBmdW5jdGlvbiByZXN1bHQ7IGl0IG11c3QgYmUgdGhlIHNhbWUgcGxhbiBub2RlLiAgSG93ZXZl ciwgd2UgdGhlbgogCQkgKiBuZWVkIHRvIGRldGVjdCB3aGV0aGVyIGFueSB0bGlzdCBlbnRyaWVz IHdlcmUgYWRkZWQuCiAJCSAqLwotCQkodm9pZCkgcHJlcGFyZV9zb3J0X2Zyb21fcGF0aGtleXMo KFBsYW4gKikgcGxhbiwgcGF0aGtleXMsCisJCSh2b2lkKSBwcmVwYXJlX3NvcnRfZnJvbV9wYXRo a2V5cyhyb290LCAoUGxhbiAqKSBwbGFuLCBwYXRoa2V5cywKIAkJCQkJCQkJCQkgIGJlc3RfcGF0 aC0+cGF0aC5wYXJlbnQtPnJlbGlkcywKIAkJCQkJCQkJCQkgIE5VTEwsCiAJCQkJCQkJCQkJICB0 cnVlLApAQCAtMTMyNCw3ICsxMzI4LDcgQEAgY3JlYXRlX2FwcGVuZF9wbGFuKFBsYW5uZXJJbmZv ICpyb290LCBBcHBlbmRQYXRoICpiZXN0X3BhdGgsIGludCBmbGFncykKIAkJCSAqIGRvbid0IG5l ZWQgYW4gZXhwbGljaXQgc29ydCwgdG8gbWFrZSBzdXJlIHRoZXkgYXJlIHJldHVybmluZwogCQkJ ICogdGhlIHNhbWUgc29ydCBrZXkgY29sdW1ucyB0aGUgQXBwZW5kIGV4cGVjdHMuCiAJCQkgKi8K LQkJCXN1YnBsYW4gPSBwcmVwYXJlX3NvcnRfZnJvbV9wYXRoa2V5cyhzdWJwbGFuLCBwYXRoa2V5 cywKKwkJCXN1YnBsYW4gPSBwcmVwYXJlX3NvcnRfZnJvbV9wYXRoa2V5cyhyb290LCBzdWJwbGFu LCBwYXRoa2V5cywKIAkJCQkJCQkJCQkJCSBzdWJwYXRoLT5wYXJlbnQtPnJlbGlkcywKIAkJCQkJ CQkJCQkJCSBub2RlU29ydENvbElkeCwKIAkJCQkJCQkJCQkJCSBmYWxzZSwKQEAgLTE0NjUsNyAr MTQ2OSw3IEBAIGNyZWF0ZV9tZXJnZV9hcHBlbmRfcGxhbihQbGFubmVySW5mbyAqcm9vdCwgTWVy Z2VBcHBlbmRQYXRoICpiZXN0X3BhdGgsCiAJICogZnVuY3Rpb24gcmVzdWx0OyBpdCBtdXN0IGJl IHRoZSBzYW1lIHBsYW4gbm9kZS4gIEhvd2V2ZXIsIHdlIHRoZW4gbmVlZAogCSAqIHRvIGRldGVj dCB3aGV0aGVyIGFueSB0bGlzdCBlbnRyaWVzIHdlcmUgYWRkZWQuCiAJICovCi0JKHZvaWQpIHBy ZXBhcmVfc29ydF9mcm9tX3BhdGhrZXlzKHBsYW4sIHBhdGhrZXlzLAorCSh2b2lkKSBwcmVwYXJl X3NvcnRfZnJvbV9wYXRoa2V5cyhyb290LCBwbGFuLCBwYXRoa2V5cywKIAkJCQkJCQkJCSAgYmVz dF9wYXRoLT5wYXRoLnBhcmVudC0+cmVsaWRzLAogCQkJCQkJCQkJICBOVUxMLAogCQkJCQkJCQkJ ICB0cnVlLApAQCAtMTQ5Niw3ICsxNTAwLDcgQEAgY3JlYXRlX21lcmdlX2FwcGVuZF9wbGFuKFBs YW5uZXJJbmZvICpyb290LCBNZXJnZUFwcGVuZFBhdGggKmJlc3RfcGF0aCwKIAkJc3VicGxhbiA9 IGNyZWF0ZV9wbGFuX3JlY3Vyc2Uocm9vdCwgc3VicGF0aCwgQ1BfRVhBQ1RfVExJU1QpOwogCiAJ CS8qIENvbXB1dGUgc29ydCBjb2x1bW4gaW5mbywgYW5kIGFkanVzdCBzdWJwbGFuJ3MgdGxpc3Qg YXMgbmVlZGVkICovCi0JCXN1YnBsYW4gPSBwcmVwYXJlX3NvcnRfZnJvbV9wYXRoa2V5cyhzdWJw bGFuLCBwYXRoa2V5cywKKwkJc3VicGxhbiA9IHByZXBhcmVfc29ydF9mcm9tX3BhdGhrZXlzKHJv b3QsIHN1YnBsYW4sIHBhdGhrZXlzLAogCQkJCQkJCQkJCQkgc3VicGF0aC0+cGFyZW50LT5yZWxp ZHMsCiAJCQkJCQkJCQkJCSBub2RlLT5zb3J0Q29sSWR4LAogCQkJCQkJCQkJCQkgZmFsc2UsCkBA IC0xOTc1LDcgKzE5NzksNyBAQCBjcmVhdGVfZ2F0aGVyX21lcmdlX3BsYW4oUGxhbm5lckluZm8g KnJvb3QsIEdhdGhlck1lcmdlUGF0aCAqYmVzdF9wYXRoKQogCUFzc2VydChwYXRoa2V5cyAhPSBO SUwpOwogCiAJLyogQ29tcHV0ZSBzb3J0IGNvbHVtbiBpbmZvLCBhbmQgYWRqdXN0IHN1YnBsYW4n cyB0bGlzdCBhcyBuZWVkZWQgKi8KLQlzdWJwbGFuID0gcHJlcGFyZV9zb3J0X2Zyb21fcGF0aGtl eXMoc3VicGxhbiwgcGF0aGtleXMsCisJc3VicGxhbiA9IHByZXBhcmVfc29ydF9mcm9tX3BhdGhr ZXlzKHJvb3QsIHN1YnBsYW4sIHBhdGhrZXlzLAogCQkJCQkJCQkJCSBiZXN0X3BhdGgtPnN1YnBh dGgtPnBhcmVudC0+cmVsaWRzLAogCQkJCQkJCQkJCSBnbV9wbGFuLT5zb3J0Q29sSWR4LAogCQkJ CQkJCQkJCSBmYWxzZSwKQEAgLTIxOTQsNyArMjE5OCw3IEBAIGNyZWF0ZV9zb3J0X3BsYW4oUGxh bm5lckluZm8gKnJvb3QsIFNvcnRQYXRoICpiZXN0X3BhdGgsIGludCBmbGFncykKIAkgKiByZWxp ZHMuIFRodXMsIGlmIHRoaXMgc29ydCBwYXRoIGlzIGJhc2VkIG9uIGEgY2hpbGQgcmVsYXRpb24s IHdlIG11c3QKIAkgKiBwYXNzIGl0cyByZWxpZHMuCiAJICovCi0JcGxhbiA9IG1ha2Vfc29ydF9m cm9tX3BhdGhrZXlzKHN1YnBsYW4sIGJlc3RfcGF0aC0+cGF0aC5wYXRoa2V5cywKKwlwbGFuID0g bWFrZV9zb3J0X2Zyb21fcGF0aGtleXMocm9vdCwgc3VicGxhbiwgYmVzdF9wYXRoLT5wYXRoLnBh dGhrZXlzLAogCQkJCQkJCQkgICBJU19PVEhFUl9SRUwoYmVzdF9wYXRoLT5zdWJwYXRoLT5wYXJl bnQpID8KIAkJCQkJCQkJICAgYmVzdF9wYXRoLT5wYXRoLnBhcmVudC0+cmVsaWRzIDogTlVMTCk7 CiAKQEAgLTIyMTgsNyArMjIyMiw3IEBAIGNyZWF0ZV9pbmNyZW1lbnRhbHNvcnRfcGxhbihQbGFu bmVySW5mbyAqcm9vdCwgSW5jcmVtZW50YWxTb3J0UGF0aCAqYmVzdF9wYXRoLAogCS8qIFNlZSBj b21tZW50cyBpbiBjcmVhdGVfc29ydF9wbGFuKCkgYWJvdmUgKi8KIAlzdWJwbGFuID0gY3JlYXRl X3BsYW5fcmVjdXJzZShyb290LCBiZXN0X3BhdGgtPnNwYXRoLnN1YnBhdGgsCiAJCQkJCQkJCSAg ZmxhZ3MgfCBDUF9TTUFMTF9UTElTVCk7Ci0JcGxhbiA9IG1ha2VfaW5jcmVtZW50YWxzb3J0X2Zy b21fcGF0aGtleXMoc3VicGxhbiwKKwlwbGFuID0gbWFrZV9pbmNyZW1lbnRhbHNvcnRfZnJvbV9w YXRoa2V5cyhyb290LCBzdWJwbGFuLAogCQkJCQkJCQkJCQkgIGJlc3RfcGF0aC0+c3BhdGgucGF0 aC5wYXRoa2V5cywKIAkJCQkJCQkJCQkJICBJU19PVEhFUl9SRUwoYmVzdF9wYXRoLT5zcGF0aC5z dWJwYXRoLT5wYXJlbnQpID8KIAkJCQkJCQkJCQkJICBiZXN0X3BhdGgtPnNwYXRoLnBhdGgucGFy ZW50LT5yZWxpZHMgOiBOVUxMLApAQCAtMjI4Nyw3ICsyMjkxLDcgQEAgY3JlYXRlX3VwcGVyX3Vu aXF1ZV9wbGFuKFBsYW5uZXJJbmZvICpyb290LCBVcHBlclVuaXF1ZVBhdGggKmJlc3RfcGF0aCwg aW50IGZsYWcKIAlzdWJwbGFuID0gY3JlYXRlX3BsYW5fcmVjdXJzZShyb290LCBiZXN0X3BhdGgt PnN1YnBhdGgsCiAJCQkJCQkJCSAgZmxhZ3MgfCBDUF9MQUJFTF9UTElTVCk7CiAKLQlwbGFuID0g bWFrZV91bmlxdWVfZnJvbV9wYXRoa2V5cyhzdWJwbGFuLAorCXBsYW4gPSBtYWtlX3VuaXF1ZV9m cm9tX3BhdGhrZXlzKHJvb3QsIHN1YnBsYW4sCiAJCQkJCQkJCQkgYmVzdF9wYXRoLT5wYXRoLnBh dGhrZXlzLAogCQkJCQkJCQkJIGJlc3RfcGF0aC0+bnVta2V5cyk7CiAKQEAgLTQ0OTgsNyArNDUw Miw3IEBAIGNyZWF0ZV9tZXJnZWpvaW5fcGxhbihQbGFubmVySW5mbyAqcm9vdCwKIAlpZiAoYmVz dF9wYXRoLT5vdXRlcnNvcnRrZXlzKQogCXsKIAkJUmVsaWRzCQlvdXRlcl9yZWxpZHMgPSBvdXRl cl9wYXRoLT5wYXJlbnQtPnJlbGlkczsKLQkJU29ydAkgICAqc29ydCA9IG1ha2Vfc29ydF9mcm9t X3BhdGhrZXlzKG91dGVyX3BsYW4sCisJCVNvcnQJICAgKnNvcnQgPSBtYWtlX3NvcnRfZnJvbV9w YXRoa2V5cyhyb290LCBvdXRlcl9wbGFuLAogCQkJCQkJCQkJCQkJICAgYmVzdF9wYXRoLT5vdXRl cnNvcnRrZXlzLAogCQkJCQkJCQkJCQkJICAgb3V0ZXJfcmVsaWRzKTsKIApAQCAtNDUxMiw3ICs0 NTE2LDcgQEAgY3JlYXRlX21lcmdlam9pbl9wbGFuKFBsYW5uZXJJbmZvICpyb290LAogCWlmIChi ZXN0X3BhdGgtPmlubmVyc29ydGtleXMpCiAJewogCQlSZWxpZHMJCWlubmVyX3JlbGlkcyA9IGlu bmVyX3BhdGgtPnBhcmVudC0+cmVsaWRzOwotCQlTb3J0CSAgICpzb3J0ID0gbWFrZV9zb3J0X2Zy b21fcGF0aGtleXMoaW5uZXJfcGxhbiwKKwkJU29ydAkgICAqc29ydCA9IG1ha2Vfc29ydF9mcm9t X3BhdGhrZXlzKHJvb3QsIGlubmVyX3BsYW4sCiAJCQkJCQkJCQkJCQkgICBiZXN0X3BhdGgtPmlu bmVyc29ydGtleXMsCiAJCQkJCQkJCQkJCQkgICBpbm5lcl9yZWxpZHMpOwogCkBAIC02MTMzLDcg KzYxMzcsNyBAQCBtYWtlX2luY3JlbWVudGFsc29ydChQbGFuICpsZWZ0dHJlZSwgaW50IG51bUNv bHMsIGludCBuUHJlc29ydGVkQ29scywKICAqIG9yIGEgUmVzdWx0IHN0YWNrZWQgYXRvcCBsZWZ0 dHJlZSkuCiAgKi8KIHN0YXRpYyBQbGFuICoKLXByZXBhcmVfc29ydF9mcm9tX3BhdGhrZXlzKFBs YW4gKmxlZnR0cmVlLCBMaXN0ICpwYXRoa2V5cywKK3ByZXBhcmVfc29ydF9mcm9tX3BhdGhrZXlz KFBsYW5uZXJJbmZvICpyb290LCBQbGFuICpsZWZ0dHJlZSwgTGlzdCAqcGF0aGtleXMsCiAJCQkJ CQkgICBSZWxpZHMgcmVsaWRzLAogCQkJCQkJICAgY29uc3QgQXR0ck51bWJlciAqcmVxQ29sSWR4 LAogCQkJCQkJICAgYm9vbCBhZGp1c3RfdGxpc3RfaW5fcGxhY2UsCkBAIC02MjAwLDcgKzYyMDQs NyBAQCBwcmVwYXJlX3NvcnRfZnJvbV9wYXRoa2V5cyhQbGFuICpsZWZ0dHJlZSwgTGlzdCAqcGF0 aGtleXMsCiAJCQl0bGUgPSBnZXRfdGxlX2J5X3Jlc25vKHRsaXN0LCByZXFDb2xJZHhbbnVtc29y dGtleXNdKTsKIAkJCWlmICh0bGUpCiAJCQl7Ci0JCQkJZW0gPSBmaW5kX2VjX21lbWJlcl9tYXRj aGluZ19leHByKGVjLCB0bGUtPmV4cHIsIHJlbGlkcyk7CisJCQkJZW0gPSBmaW5kX2VjX21lbWJl cl9tYXRjaGluZ19leHByKHJvb3QsIGVjLCB0bGUtPmV4cHIsIHJlbGlkcyk7CiAJCQkJaWYgKGVt KQogCQkJCXsKIAkJCQkJLyogZm91bmQgZXhwciBhdCByaWdodCBwbGFjZSBpbiB0bGlzdCAqLwpA QCAtNjIyOCw3ICs2MjMyLDcgQEAgcHJlcGFyZV9zb3J0X2Zyb21fcGF0aGtleXMoUGxhbiAqbGVm dHRyZWUsIExpc3QgKnBhdGhrZXlzLAogCQkJZm9yZWFjaChqLCB0bGlzdCkKIAkJCXsKIAkJCQl0 bGUgPSAoVGFyZ2V0RW50cnkgKikgbGZpcnN0KGopOwotCQkJCWVtID0gZmluZF9lY19tZW1iZXJf bWF0Y2hpbmdfZXhwcihlYywgdGxlLT5leHByLCByZWxpZHMpOworCQkJCWVtID0gZmluZF9lY19t ZW1iZXJfbWF0Y2hpbmdfZXhwcihyb290LCBlYywgdGxlLT5leHByLCByZWxpZHMpOwogCQkJCWlm IChlbSkKIAkJCQl7CiAJCQkJCS8qIGZvdW5kIGV4cHIgYWxyZWFkeSBpbiB0bGlzdCAqLwpAQCAt NjI0NCw3ICs2MjQ4LDcgQEAgcHJlcGFyZV9zb3J0X2Zyb21fcGF0aGtleXMoUGxhbiAqbGVmdHRy ZWUsIExpc3QgKnBhdGhrZXlzLAogCQkJLyoKIAkJCSAqIE5vIG1hdGNoaW5nIHRsaXN0IGl0ZW07 IGxvb2sgZm9yIGEgY29tcHV0YWJsZSBleHByZXNzaW9uLgogCQkJICovCi0JCQllbSA9IGZpbmRf Y29tcHV0YWJsZV9lY19tZW1iZXIoTlVMTCwgZWMsIHRsaXN0LCByZWxpZHMsIGZhbHNlKTsKKwkJ CWVtID0gZmluZF9jb21wdXRhYmxlX2VjX21lbWJlcihyb290LCBlYywgdGxpc3QsIHJlbGlkcywg ZmFsc2UpOwogCQkJaWYgKCFlbSkKIAkJCQllbG9nKEVSUk9SLCAiY291bGQgbm90IGZpbmQgcGF0 aGtleSBpdGVtIHRvIHNvcnQiKTsKIAkJCXBrX2RhdGF0eXBlID0gZW0tPmVtX2RhdGF0eXBlOwpA QCAtNjMxNSw3ICs2MzE5LDggQEAgcHJlcGFyZV9zb3J0X2Zyb21fcGF0aGtleXMoUGxhbiAqbGVm dHRyZWUsIExpc3QgKnBhdGhrZXlzLAogICoJICAncmVsaWRzJyBpcyB0aGUgc2V0IG9mIHJlbGF0 aW9ucyByZXF1aXJlZCBieSBwcmVwYXJlX3NvcnRfZnJvbV9wYXRoa2V5cygpCiAgKi8KIHN0YXRp YyBTb3J0ICoKLW1ha2Vfc29ydF9mcm9tX3BhdGhrZXlzKFBsYW4gKmxlZnR0cmVlLCBMaXN0ICpw YXRoa2V5cywgUmVsaWRzIHJlbGlkcykKK21ha2Vfc29ydF9mcm9tX3BhdGhrZXlzKFBsYW5uZXJJ bmZvICpyb290LCBQbGFuICpsZWZ0dHJlZSwgTGlzdCAqcGF0aGtleXMsCisJCQkJCQlSZWxpZHMg cmVsaWRzKQogewogCWludAkJCW51bXNvcnRrZXlzOwogCUF0dHJOdW1iZXIgKnNvcnRDb2xJZHg7 CkBAIC02MzI0LDcgKzYzMjksNyBAQCBtYWtlX3NvcnRfZnJvbV9wYXRoa2V5cyhQbGFuICpsZWZ0 dHJlZSwgTGlzdCAqcGF0aGtleXMsIFJlbGlkcyByZWxpZHMpCiAJYm9vbAkgICAqbnVsbHNGaXJz dDsKIAogCS8qIENvbXB1dGUgc29ydCBjb2x1bW4gaW5mbywgYW5kIGFkanVzdCBsZWZ0dHJlZSBh cyBuZWVkZWQgKi8KLQlsZWZ0dHJlZSA9IHByZXBhcmVfc29ydF9mcm9tX3BhdGhrZXlzKGxlZnR0 cmVlLCBwYXRoa2V5cywKKwlsZWZ0dHJlZSA9IHByZXBhcmVfc29ydF9mcm9tX3BhdGhrZXlzKHJv b3QsIGxlZnR0cmVlLCBwYXRoa2V5cywKIAkJCQkJCQkJCQkgIHJlbGlkcywKIAkJCQkJCQkJCQkg IE5VTEwsCiAJCQkJCQkJCQkJICBmYWxzZSwKQEAgLTYzNTAsOCArNjM1NSw5IEBAIG1ha2Vfc29y dF9mcm9tX3BhdGhrZXlzKFBsYW4gKmxlZnR0cmVlLCBMaXN0ICpwYXRoa2V5cywgUmVsaWRzIHJl bGlkcykKICAqCSAgJ25QcmVzb3J0ZWRDb2xzJyBpcyB0aGUgbnVtYmVyIG9mIHByZXNvcnRlZCBj b2x1bW5zIGluIGlucHV0IHR1cGxlcwogICovCiBzdGF0aWMgSW5jcmVtZW50YWxTb3J0ICoKLW1h a2VfaW5jcmVtZW50YWxzb3J0X2Zyb21fcGF0aGtleXMoUGxhbiAqbGVmdHRyZWUsIExpc3QgKnBh dGhrZXlzLAotCQkJCQkJCQkgICBSZWxpZHMgcmVsaWRzLCBpbnQgblByZXNvcnRlZENvbHMpCitt YWtlX2luY3JlbWVudGFsc29ydF9mcm9tX3BhdGhrZXlzKFBsYW5uZXJJbmZvICpyb290LCBQbGFu ICpsZWZ0dHJlZSwKKwkJCQkJCQkJICAgTGlzdCAqcGF0aGtleXMsIFJlbGlkcyByZWxpZHMsCisJ CQkJCQkJCSAgIGludCBuUHJlc29ydGVkQ29scykKIHsKIAlpbnQJCQludW1zb3J0a2V5czsKIAlB dHRyTnVtYmVyICpzb3J0Q29sSWR4OwpAQCAtNjM2MCw3ICs2MzY2LDcgQEAgbWFrZV9pbmNyZW1l bnRhbHNvcnRfZnJvbV9wYXRoa2V5cyhQbGFuICpsZWZ0dHJlZSwgTGlzdCAqcGF0aGtleXMsCiAJ Ym9vbAkgICAqbnVsbHNGaXJzdDsKIAogCS8qIENvbXB1dGUgc29ydCBjb2x1bW4gaW5mbywgYW5k IGFkanVzdCBsZWZ0dHJlZSBhcyBuZWVkZWQgKi8KLQlsZWZ0dHJlZSA9IHByZXBhcmVfc29ydF9m cm9tX3BhdGhrZXlzKGxlZnR0cmVlLCBwYXRoa2V5cywKKwlsZWZ0dHJlZSA9IHByZXBhcmVfc29y dF9mcm9tX3BhdGhrZXlzKHJvb3QsIGxlZnR0cmVlLCBwYXRoa2V5cywKIAkJCQkJCQkJCQkgIHJl bGlkcywKIAkJCQkJCQkJCQkgIE5VTEwsCiAJCQkJCQkJCQkJICBmYWxzZSwKQEAgLTY3MTcsNyAr NjcyMyw4IEBAIG1ha2VfdW5pcXVlX2Zyb21fc29ydGNsYXVzZXMoUGxhbiAqbGVmdHRyZWUsIExp c3QgKmRpc3RpbmN0TGlzdCkKICAqIGFzIGFib3ZlLCBidXQgdXNlIHBhdGhrZXlzIHRvIGlkZW50 aWZ5IHRoZSBzb3J0IGNvbHVtbnMgYW5kIHNlbWFudGljcwogICovCiBzdGF0aWMgVW5pcXVlICoK LW1ha2VfdW5pcXVlX2Zyb21fcGF0aGtleXMoUGxhbiAqbGVmdHRyZWUsIExpc3QgKnBhdGhrZXlz LCBpbnQgbnVtQ29scykKK21ha2VfdW5pcXVlX2Zyb21fcGF0aGtleXMoUGxhbm5lckluZm8gKnJv b3QsIFBsYW4gKmxlZnR0cmVlLCBMaXN0ICpwYXRoa2V5cywKKwkJCQkJCSAgaW50IG51bUNvbHMp CiB7CiAJVW5pcXVlCSAgICpub2RlID0gbWFrZU5vZGUoVW5pcXVlKTsKIAlQbGFuCSAgICpwbGFu ID0gJm5vZGUtPnBsYW47CkBAIC02NzgwLDcgKzY3ODcsNyBAQCBtYWtlX3VuaXF1ZV9mcm9tX3Bh dGhrZXlzKFBsYW4gKmxlZnR0cmVlLCBMaXN0ICpwYXRoa2V5cywgaW50IG51bUNvbHMpCiAJCQlm b3JlYWNoKGosIHBsYW4tPnRhcmdldGxpc3QpCiAJCQl7CiAJCQkJdGxlID0gKFRhcmdldEVudHJ5 ICopIGxmaXJzdChqKTsKLQkJCQllbSA9IGZpbmRfZWNfbWVtYmVyX21hdGNoaW5nX2V4cHIoZWMs IHRsZS0+ZXhwciwgTlVMTCk7CisJCQkJZW0gPSBmaW5kX2VjX21lbWJlcl9tYXRjaGluZ19leHBy KHJvb3QsIGVjLCB0bGUtPmV4cHIsIE5VTEwpOwogCQkJCWlmIChlbSkKIAkJCQl7CiAJCQkJCS8q IGZvdW5kIGV4cHIgYWxyZWFkeSBpbiB0bGlzdCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv b3B0aW1pemVyL3V0aWwvaW5oZXJpdC5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvaW5o ZXJpdC5jCmluZGV4IDVjN2FjZjhhOTAuLjM1MDFmYmJlZWQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL29wdGltaXplci91dGlsL2luaGVyaXQuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIv dXRpbC9pbmhlcml0LmMKQEAgLTQ2MSw2ICs0NjEsNyBAQCBleHBhbmRfc2luZ2xlX2luaGVyaXRh bmNlX2NoaWxkKFBsYW5uZXJJbmZvICpyb290LCBSYW5nZVRibEVudHJ5ICpwYXJlbnRydGUsCiAJ CVJlbGF0aW9uR2V0UmVsaWQocGFyZW50cmVsKTsKIAlPaWQJCQljaGlsZE9JRCA9IFJlbGF0aW9u R2V0UmVsaWQoY2hpbGRyZWwpOwogCVJhbmdlVGJsRW50cnkgKmNoaWxkcnRlOworCUluZGV4CQl0 b3BQYXJlbnRSVGluZGV4OwogCUluZGV4CQljaGlsZFJUaW5kZXg7CiAJQXBwZW5kUmVsSW5mbyAq YXBwaW5mbzsKIAlUdXBsZURlc2MJY2hpbGRfdHVwZGVzYzsKQEAgLTU2OCw2ICs1NjksMTkgQEAg ZXhwYW5kX3NpbmdsZV9pbmhlcml0YW5jZV9jaGlsZChQbGFubmVySW5mbyAqcm9vdCwgUmFuZ2VU YmxFbnRyeSAqcGFyZW50cnRlLAogCUFzc2VydChyb290LT5hcHBlbmRfcmVsX2FycmF5W2NoaWxk UlRpbmRleF0gPT0gTlVMTCk7CiAJcm9vdC0+YXBwZW5kX3JlbF9hcnJheVtjaGlsZFJUaW5kZXhd ID0gYXBwaW5mbzsKIAorCS8qCisJICogRmluZCBhIHRvcCBwYXJlbnQgcmVsJ3MgaW5kZXggYW5k IHNhdmUgaXQgdG8gdG9wX3BhcmVudF9yZWxpZF9hcnJheS4KKwkgKi8KKwlpZiAocm9vdC0+dG9w X3BhcmVudF9yZWxpZF9hcnJheSA9PSBOVUxMKQorCQlyb290LT50b3BfcGFyZW50X3JlbGlkX2Fy cmF5ID0KKwkJCShJbmRleCAqKSBwYWxsb2MwKHJvb3QtPnNpbXBsZV9yZWxfYXJyYXlfc2l6ZSAq IHNpemVvZihJbmRleCkpOworCUFzc2VydChyb290LT50b3BfcGFyZW50X3JlbGlkX2FycmF5W2No aWxkUlRpbmRleF0gPT0gMCk7CisJdG9wUGFyZW50UlRpbmRleCA9IHBhcmVudFJUaW5kZXg7CisJ d2hpbGUgKHJvb3QtPmFwcGVuZF9yZWxfYXJyYXlbdG9wUGFyZW50UlRpbmRleF0gIT0gTlVMTCAm JgorCQkgICByb290LT5hcHBlbmRfcmVsX2FycmF5W3RvcFBhcmVudFJUaW5kZXhdLT5wYXJlbnRf cmVsaWQgIT0gMCkKKwkJdG9wUGFyZW50UlRpbmRleCA9IHJvb3QtPmFwcGVuZF9yZWxfYXJyYXlb dG9wUGFyZW50UlRpbmRleF0tPnBhcmVudF9yZWxpZDsKKwlyb290LT50b3BfcGFyZW50X3JlbGlk X2FycmF5W2NoaWxkUlRpbmRleF0gPSB0b3BQYXJlbnRSVGluZGV4OworCiAJLyoKIAkgKiBCdWls ZCBhIFBsYW5Sb3dNYXJrIGlmIHBhcmVudCBpcyBtYXJrZWQgRk9SIFVQREFURS9TSEFSRS4KIAkg Ki8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3JlbG5vZGUuYyBiL3Ny Yy9iYWNrZW5kL29wdGltaXplci91dGlsL3JlbG5vZGUuYwppbmRleCAyMmQwMWNlZjViLi5iODE4 NWQwZGRhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9yZWxub2RlLmMK KysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcmVsbm9kZS5jCkBAIC0xMjMsMTEgKzEy MywxNCBAQCBzZXR1cF9zaW1wbGVfcmVsX2FycmF5cyhQbGFubmVySW5mbyAqcm9vdCkKIAlpZiAo cm9vdC0+YXBwZW5kX3JlbF9saXN0ID09IE5JTCkKIAl7CiAJCXJvb3QtPmFwcGVuZF9yZWxfYXJy YXkgPSBOVUxMOworCQlyb290LT50b3BfcGFyZW50X3JlbGlkX2FycmF5ID0gTlVMTDsKIAkJcmV0 dXJuOwogCX0KIAogCXJvb3QtPmFwcGVuZF9yZWxfYXJyYXkgPSAoQXBwZW5kUmVsSW5mbyAqKikK IAkJcGFsbG9jMChzaXplICogc2l6ZW9mKEFwcGVuZFJlbEluZm8gKikpOworCXJvb3QtPnRvcF9w YXJlbnRfcmVsaWRfYXJyYXkgPSAoSW5kZXggKikKKwkJcGFsbG9jMChzaXplICogc2l6ZW9mKElu ZGV4KSk7CiAKIAkvKgogCSAqIGFwcGVuZF9yZWxfYXJyYXkgaXMgZmlsbGVkIHdpdGggYW55IGFs cmVhZHktZXhpc3RpbmcgQXBwZW5kUmVsSW5mb3MsCkBAIC0xNDgsNiArMTUxLDI3IEBAIHNldHVw X3NpbXBsZV9yZWxfYXJyYXlzKFBsYW5uZXJJbmZvICpyb290KQogCiAJCXJvb3QtPmFwcGVuZF9y ZWxfYXJyYXlbY2hpbGRfcmVsaWRdID0gYXBwaW5mbzsKIAl9CisKKwkvKgorCSAqIEZpbmQgYSB0 b3AgcGFyZW50IHJlbCdzIHJlbGlkIGZvciBlYWNoIEFwcGVuZFJlbEluZm8uIFdlIGNhbm5vdCBk byB0aGlzCisJICogaW4gdGhlIGxhc3QgZm9yZWFjaCBsb29wIGJlY2F1c2UgdGhlcmUgbWF5IGJl IG11bHRpLWxldmVsIHBhcmVudC1jaGlsZAorCSAqIHJlbGF0aW9ucy4KKwkgKi8KKwlmb3IgKGlu dCBpID0gMDsgaSA8IHNpemU7IGkrKykKKwl7CisJCWludCB0b3BfcGFyZW50X3JlbGlkOworCisJ CWlmIChyb290LT5hcHBlbmRfcmVsX2FycmF5W2ldID09IE5VTEwpCisJCQljb250aW51ZTsKKwor CQl0b3BfcGFyZW50X3JlbGlkID0gcm9vdC0+YXBwZW5kX3JlbF9hcnJheVtpXS0+cGFyZW50X3Jl bGlkOworCisJCXdoaWxlIChyb290LT5hcHBlbmRfcmVsX2FycmF5W3RvcF9wYXJlbnRfcmVsaWRd ICE9IE5VTEwgJiYKKwkJCSAgIHJvb3QtPmFwcGVuZF9yZWxfYXJyYXlbdG9wX3BhcmVudF9yZWxp ZF0tPnBhcmVudF9yZWxpZCAhPSAwKQorCQkJdG9wX3BhcmVudF9yZWxpZCA9IHJvb3QtPmFwcGVu ZF9yZWxfYXJyYXlbdG9wX3BhcmVudF9yZWxpZF0tPnBhcmVudF9yZWxpZDsKKworCQlyb290LT50 b3BfcGFyZW50X3JlbGlkX2FycmF5W2ldID0gdG9wX3BhcmVudF9yZWxpZDsKKwl9CiB9CiAKIC8q CkBAIC0xNzUsMTEgKzE5OSwyMyBAQCBleHBhbmRfcGxhbm5lcl9hcnJheXMoUGxhbm5lckluZm8g KnJvb3QsIGludCBhZGRfc2l6ZSkKIAkJcmVwYWxsb2MwX2FycmF5KHJvb3QtPnNpbXBsZV9ydGVf YXJyYXksIFJhbmdlVGJsRW50cnkgKiwgcm9vdC0+c2ltcGxlX3JlbF9hcnJheV9zaXplLCBuZXdf c2l6ZSk7CiAKIAlpZiAocm9vdC0+YXBwZW5kX3JlbF9hcnJheSkKKwl7CiAJCXJvb3QtPmFwcGVu ZF9yZWxfYXJyYXkgPQogCQkJcmVwYWxsb2MwX2FycmF5KHJvb3QtPmFwcGVuZF9yZWxfYXJyYXks IEFwcGVuZFJlbEluZm8gKiwgcm9vdC0+c2ltcGxlX3JlbF9hcnJheV9zaXplLCBuZXdfc2l6ZSk7 CisJCXJvb3QtPnRvcF9wYXJlbnRfcmVsaWRfYXJyYXkgPQorCQkJcmVwYWxsb2MwX2FycmF5KHJv b3QtPnRvcF9wYXJlbnRfcmVsaWRfYXJyYXksIEluZGV4LCByb290LT5zaW1wbGVfcmVsX2FycmF5 X3NpemUsIG5ld19zaXplKTsKKwl9CiAJZWxzZQorCXsKIAkJcm9vdC0+YXBwZW5kX3JlbF9hcnJh eSA9CiAJCQlwYWxsb2MwX2FycmF5KEFwcGVuZFJlbEluZm8gKiwgbmV3X3NpemUpOworCQkvKgor CQkgKiBXZSBkbyBub3QgYWxsb2NhdGUgdG9wX3BhcmVudF9yZWxpZF9hcnJheSBoZXJlIHNvIHRo YXQKKwkJICogZmluZF9yZWxpZHNfdG9wX3BhcmVudHMoKSBjYW4gZWFybHkgZmluZCBhbGwgb2Yg dGhlIGdpdmVuIFJlbGlkcyBhcmUKKwkJICogdG9wLWxldmVsLgorCQkgKi8KKwkJcm9vdC0+dG9w X3BhcmVudF9yZWxpZF9hcnJheSA9IE5VTEw7CisJfQogCiAJcm9vdC0+c2ltcGxlX3JlbF9hcnJh eV9zaXplID0gbmV3X3NpemU7CiB9CkBAIC0yMzMsNiArMjY5LDcgQEAgYnVpbGRfc2ltcGxlX3Jl bChQbGFubmVySW5mbyAqcm9vdCwgaW50IHJlbGlkLCBSZWxPcHRJbmZvICpwYXJlbnQpCiAJcmVs LT5zdWJwbGFuX3BhcmFtcyA9IE5JTDsKIAlyZWwtPnJlbF9wYXJhbGxlbF93b3JrZXJzID0gLTE7 IC8qIHNldCB1cCBpbiBnZXRfcmVsYXRpb25faW5mbyAqLwogCXJlbC0+YW1mbGFncyA9IDA7CisJ cmVsLT5lY2xhc3NfY2hpbGRfbWVtYmVycyA9IE5JTDsKIAlyZWwtPnNlcnZlcmlkID0gSW52YWxp ZE9pZDsKIAlpZiAocnRlLT5ydGVraW5kID09IFJURV9SRUxBVElPTikKIAl7CkBAIC02MjEsNiAr NjU4LDEyIEBAIGFkZF9qb2luX3JlbChQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqam9p bnJlbCkKIAkvKiBHRVFPIHJlcXVpcmVzIHVzIHRvIGFwcGVuZCB0aGUgbmV3IGpvaW5yZWwgdG8g dGhlIGVuZCBvZiB0aGUgbGlzdCEgKi8KIAlyb290LT5qb2luX3JlbF9saXN0ID0gbGFwcGVuZChy b290LT5qb2luX3JlbF9saXN0LCBqb2lucmVsKTsKIAorCS8qCisJICogU3RvcmUgdGhlIGluZGV4 IG9mIHRoaXMgam9pbnJlbCB0byB1c2UgaW4KKwkgKiBhZGRfY2hpbGRfam9pbl9yZWxfZXF1aXZh bGVuY2VzKCkuCisJICovCisJam9pbnJlbC0+am9pbl9yZWxfbGlzdF9pbmRleCA9IGxpc3RfbGVu Z3RoKHJvb3QtPmpvaW5fcmVsX2xpc3QpIC0gMTsKKwogCS8qIHN0b3JlIGl0IGludG8gdGhlIGF1 eGlsaWFyeSBoYXNodGFibGUgaWYgdGhlcmUgaXMgb25lLiAqLwogCWlmIChyb290LT5qb2luX3Jl bF9oYXNoKQogCXsKQEAgLTczMiw2ICs3NzUsNyBAQCBidWlsZF9qb2luX3JlbChQbGFubmVySW5m byAqcm9vdCwKIAlqb2lucmVsLT5zdWJwbGFuX3BhcmFtcyA9IE5JTDsKIAlqb2lucmVsLT5yZWxf cGFyYWxsZWxfd29ya2VycyA9IC0xOwogCWpvaW5yZWwtPmFtZmxhZ3MgPSAwOworCWpvaW5yZWwt PmVjbGFzc19jaGlsZF9tZW1iZXJzID0gTklMOwogCWpvaW5yZWwtPnNlcnZlcmlkID0gSW52YWxp ZE9pZDsKIAlqb2lucmVsLT51c2VyaWQgPSBJbnZhbGlkT2lkOwogCWpvaW5yZWwtPnVzZXJpZGlz Y3VycmVudCA9IGZhbHNlOwpAQCAtOTI4LDYgKzk3Miw3IEBAIGJ1aWxkX2NoaWxkX2pvaW5fcmVs KFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpvdXRlcl9yZWwsCiAJam9pbnJlbC0+c3Vi cm9vdCA9IE5VTEw7CiAJam9pbnJlbC0+c3VicGxhbl9wYXJhbXMgPSBOSUw7CiAJam9pbnJlbC0+ YW1mbGFncyA9IDA7CisJam9pbnJlbC0+ZWNsYXNzX2NoaWxkX21lbWJlcnMgPSBOSUw7CiAJam9p bnJlbC0+c2VydmVyaWQgPSBJbnZhbGlkT2lkOwogCWpvaW5yZWwtPnVzZXJpZCA9IEludmFsaWRP aWQ7CiAJam9pbnJlbC0+dXNlcmlkaXNjdXJyZW50ID0gZmFsc2U7CkBAIC0xNDkyLDYgKzE1Mzcs NyBAQCBmZXRjaF91cHBlcl9yZWwoUGxhbm5lckluZm8gKnJvb3QsIFVwcGVyUmVsYXRpb25LaW5k IGtpbmQsIFJlbGlkcyByZWxpZHMpCiAJdXBwZXJyZWwtPmNoZWFwZXN0X3RvdGFsX3BhdGggPSBO VUxMOwogCXVwcGVycmVsLT5jaGVhcGVzdF91bmlxdWVfcGF0aCA9IE5VTEw7CiAJdXBwZXJyZWwt PmNoZWFwZXN0X3BhcmFtZXRlcml6ZWRfcGF0aHMgPSBOSUw7CisJdXBwZXJyZWwtPmVjbGFzc19j aGlsZF9tZW1iZXJzID0gTklMOwkvKiBYWFggSXMgdGhpcyByZXF1aXJlZD8gKi8KIAogCXJvb3Qt PnVwcGVyX3JlbHNba2luZF0gPSBsYXBwZW5kKHJvb3QtPnVwcGVyX3JlbHNba2luZF0sIHVwcGVy cmVsKTsKIApAQCAtMTUzMiw2ICsxNTc4LDQ4IEBAIGZpbmRfY2hpbGRyZWxfcGFyZW50cyhQbGFu bmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsKQogfQogCiAKKy8qCisgKiBmaW5kX3JlbGlk c190b3BfcGFyZW50c19zbG93CisgKgkgIFNsb3cgcGF0aCBvZiBmaW5kX3JlbGlkc190b3BfcGFy ZW50cygpIG1hY3JvLgorICoKKyAqIERvIG5vdCBjYWxsIHRoaXMgZGlyZWN0bHk7IHVzZSB0aGUg bWFjcm8gaW5zdGVhZC4gU2VlIHRoZSBtYWNybyBjb21tZW50IGZvcgorICogbW9yZSBkZXRhaWxz LgorICovCitSZWxpZHMKK2ZpbmRfcmVsaWRzX3RvcF9wYXJlbnRzX3Nsb3coUGxhbm5lckluZm8g KnJvb3QsIFJlbGlkcyByZWxpZHMpCit7CisJSW5kZXggICp0b3BfcGFyZW50X3JlbGlkX2FycmF5 ID0gcm9vdC0+dG9wX3BhcmVudF9yZWxpZF9hcnJheTsKKwlSZWxpZHMJcmVzdWx0OworCWJvb2wJ aXNfdG9wX3BhcmVudDsKKwlpbnQJCWk7CisKKwkvKiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBiZSBj YWxsZWQgaW4gdGhlIHNsb3cgcGF0aCAqLworCUFzc2VydCh0b3BfcGFyZW50X3JlbGlkX2FycmF5 ICE9IE5VTEwpOworCisJcmVzdWx0ID0gTlVMTDsKKwlpc190b3BfcGFyZW50ID0gdHJ1ZTsKKwlp ID0gLTE7CisJd2hpbGUgKChpID0gYm1zX25leHRfbWVtYmVyKHJlbGlkcywgaSkpID49IDApCisJ eworCQlpbnQJCXRvcF9wYXJlbnRfcmVsaWQgPSAoaW50KSB0b3BfcGFyZW50X3JlbGlkX2FycmF5 W2ldOworCisJCWlmICh0b3BfcGFyZW50X3JlbGlkID09IDApCisJCQl0b3BfcGFyZW50X3JlbGlk ID0gaTsJLyogJ2knIGhhcyBubyBwYXJlbnRzLCBzbyBhZGQgaXRzZWxmICovCisJCWVsc2UgaWYg KHRvcF9wYXJlbnRfcmVsaWQgIT0gaSkKKwkJCWlzX3RvcF9wYXJlbnQgPSBmYWxzZTsKKwkJcmVz dWx0ID0gYm1zX2FkZF9tZW1iZXIocmVzdWx0LCB0b3BfcGFyZW50X3JlbGlkKTsKKwl9CisKKwlp ZiAoaXNfdG9wX3BhcmVudCkKKwl7CisJCWJtc19mcmVlKHJlc3VsdCk7CisJCXJldHVybiBOVUxM OworCX0KKworCXJldHVybiByZXN1bHQ7Cit9CisKKwogLyoKICAqIGdldF9iYXNlcmVsX3BhcmFt cGF0aGluZm8KICAqCQlHZXQgdGhlIFBhcmFtUGF0aEluZm8gZm9yIGEgcGFyYW1ldGVyaXplZCBw YXRoIGZvciBhIGJhc2UgcmVsYXRpb24sCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9w YXRobm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oCmluZGV4IGI5NzEzZWM5 YWEuLjhjNTVhMmJjZjAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5o CisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oCkBAIC0yNDUsNiArMjQ1LDE0IEBA IHN0cnVjdCBQbGFubmVySW5mbwogCSAqLwogCXN0cnVjdCBBcHBlbmRSZWxJbmZvICoqYXBwZW5k X3JlbF9hcnJheSBwZ19ub2RlX2F0dHIocmVhZF93cml0ZV9pZ25vcmUpOwogCisJLyoKKwkgKiBh cHBlbmRfcmVsX2FycmF5IGlzIHRoZSBzYW1lIGxlbmd0aCBhcyBzaW1wbGVfcmVsX2FycmF5IGFu ZCBob2xkcyB0aGUKKwkgKiB0b3AtbGV2ZWwgcGFyZW50IGluZGV4ZXMgb2YgdGhlIGNvcnJlc3Bv bmRpbmcgcmVscyB3aXRoaW4KKwkgKiBzaW1wbGVfcmVsX2FycmF5LiBUaGUgZWxlbWVudCBjYW4g YmUgemVybyBpZiB0aGUgcmVsIGhhcyBubyBwYXJlbnRzLAorCSAqIGkuZS4sIGlzIGl0c2VsZiBp biBhIHRvcC1sZXZlbC4KKwkgKi8KKwlJbmRleAkgICAqdG9wX3BhcmVudF9yZWxpZF9hcnJheSBw Z19ub2RlX2F0dHIocmVhZF93cml0ZV9pZ25vcmUpOworCiAJLyoKIAkgKiBhbGxfYmFzZXJlbHMg aXMgYSBSZWxpZHMgc2V0IG9mIGFsbCBiYXNlIHJlbGlkcyAoYnV0IG5vdCBqb2lucyBvcgogCSAq ICJvdGhlciIgcmVscykgaW4gdGhlIHF1ZXJ5LiAgVGhpcyBpcyBjb21wdXRlZCBpbiBkZWNvbnN0 cnVjdF9qb2ludHJlZS4KQEAgLTkzNiw2ICs5NDQsMTcgQEAgdHlwZWRlZiBzdHJ1Y3QgUmVsT3B0 SW5mbwogCS8qIEJpdG1hc2sgb2Ygb3B0aW9uYWwgZmVhdHVyZXMgc3VwcG9ydGVkIGJ5IHRoZSB0 YWJsZSBBTSAqLwogCXVpbnQzMgkJYW1mbGFnczsKIAorCS8qCisJICogaW5mb3JtYXRpb24gYWJv dXQgYSBqb2luIHJlbAorCSAqLworCS8qIGluZGV4IGluIHJvb3QtPmpvaW5fcmVsX2xpc3Qgb2Yg dGhpcyByZWwgKi8KKwlJbmRleAkJam9pbl9yZWxfbGlzdF9pbmRleDsKKworCS8qCisJICogRXF1 aXZhbGVuY2VNZW1iZXJzIHJlZmVyZW5jaW5nIHRoaXMgcmVsCisJICovCisJTGlzdAkgICAqZWNs YXNzX2NoaWxkX21lbWJlcnM7CisKIAkvKgogCSAqIEluZm9ybWF0aW9uIGFib3V0IGZvcmVpZ24g dGFibGVzIGFuZCBmb3JlaWduIGpvaW5zCiAJICovCkBAIC0xMzY4LDYgKzEzODcsMTAgQEAgdHlw ZWRlZiBzdHJ1Y3QgRXF1aXZhbGVuY2VDbGFzcwogCUxpc3QJICAgKmVjX29wZmFtaWxpZXM7CS8q IGJ0cmVlIG9wZXJhdG9yIGZhbWlseSBPSURzICovCiAJT2lkCQkJZWNfY29sbGF0aW9uOwkvKiBj b2xsYXRpb24sIGlmIGRhdGF0eXBlcyBhcmUgY29sbGF0YWJsZSAqLwogCUxpc3QJICAgKmVjX21l bWJlcnM7CQkvKiBsaXN0IG9mIEVxdWl2YWxlbmNlTWVtYmVycyAqLworCUxpc3QJICAgKmVjX25v cmVsX21lbWJlcnM7CS8qIGxpc3Qgb2YgRXF1aXZhbGVuY2VNZW1iZXJzIHdob3NlCisJCQkJCQkJ CQkgKiBlbV9yZWxpZHMgaXMgZW1wdHkgKi8KKwlMaXN0CSAgICplY19yZWxfbWVtYmVyczsJLyog bGlzdCBvZiBFcXVpdmFsZW5jZU1lbWJlcnMgd2hvc2UKKwkJCQkJCQkJICogZW1fcmVsaWRzIGlz IG5vdCBlbXB0eSAqLwogCUxpc3QJICAgKmVjX3NvdXJjZXM7CQkvKiBsaXN0IG9mIGdlbmVyYXRp bmcgUmVzdHJpY3RJbmZvcyAqLwogCUxpc3QJICAgKmVjX2Rlcml2ZXM7CQkvKiBsaXN0IG9mIGRl cml2ZWQgUmVzdHJpY3RJbmZvcyAqLwogCVJlbGlkcwkJZWNfcmVsaWRzOwkJLyogYWxsIHJlbGlk cyBhcHBlYXJpbmcgaW4gZWNfbWVtYmVycywgZXhjZXB0CkBAIC0xNDIyLDYgKzE0NDUsOSBAQCB0 eXBlZGVmIHN0cnVjdCBFcXVpdmFsZW5jZU1lbWJlcgogCWJvb2wJCWVtX2lzX2NoaWxkOwkvKiBk ZXJpdmVkIHZlcnNpb24gZm9yIGEgY2hpbGQgcmVsYXRpb24/ICovCiAJT2lkCQkJZW1fZGF0YXR5 cGU7CS8qIHRoZSAibm9taW5hbCB0eXBlIiB1c2VkIGJ5IHRoZSBvcGZhbWlseSAqLwogCUpvaW5E b21haW4gKmVtX2pkb21haW47CQkvKiBqb2luIGRvbWFpbiBjb250YWluaW5nIHRoZSBzb3VyY2Ug Y2xhdXNlICovCisJUmVsaWRzCQllbV9jaGlsZF9yZWxpZHM7CS8qIGFsbCByZWxpZHMgb2YgY2hp bGQgcmVscyAqLworCUJpdG1hcHNldCAgKmVtX2NoaWxkX2pvaW5yZWxfcmVsaWRzOwkvKiBpbmRl eGVzIGluIHJvb3QtPmpvaW5fcmVsX2xpc3Qgb2YKKwkJCQkJCQkJCQkJICAgam9pbiByZWwgY2hp bGRyZW4gKi8KIAkvKiBpZiBlbV9pc19jaGlsZCBpcyB0cnVlLCB0aGlzIGxpbmtzIHRvIGNvcnJl c3BvbmRpbmcgRU0gZm9yIHRvcCBwYXJlbnQgKi8KIAlzdHJ1Y3QgRXF1aXZhbGVuY2VNZW1iZXIg KmVtX3BhcmVudCBwZ19ub2RlX2F0dHIocmVhZF93cml0ZV9pZ25vcmUpOwogfSBFcXVpdmFsZW5j ZU1lbWJlcjsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL29wdGltaXplci9wYXRobm9kZS5oIGIv c3JjL2luY2x1ZGUvb3B0aW1pemVyL3BhdGhub2RlLmgKaW5kZXggYzQzZDk3YjQ4YS4uZTYxZjJl MzUyOSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL3BhdGhub2RlLmgKKysrIGIv c3JjL2luY2x1ZGUvb3B0aW1pemVyL3BhdGhub2RlLmgKQEAgLTMyNCw2ICszMjQsMjQgQEAgZXh0 ZXJuIFJlbGlkcyBtaW5fam9pbl9wYXJhbWV0ZXJpemF0aW9uKFBsYW5uZXJJbmZvICpyb290LAog ZXh0ZXJuIFJlbE9wdEluZm8gKmZldGNoX3VwcGVyX3JlbChQbGFubmVySW5mbyAqcm9vdCwgVXBw ZXJSZWxhdGlvbktpbmQga2luZCwKIAkJCQkJCQkJICAgUmVsaWRzIHJlbGlkcyk7CiBleHRlcm4g UmVsaWRzIGZpbmRfY2hpbGRyZWxfcGFyZW50cyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5m byAqcmVsKTsKKworLyoKKyAqIGZpbmRfcmVsaWRzX3RvcF9wYXJlbnRzCisgKgkgIENvbXB1dGUg dGhlIHNldCBvZiB0b3AtcGFyZW50IHJlbGlkcyBvZiByZWwuCisgKgorICogUmVwbGFjZXMgYWxs IFJlbGlkcyBhcHBlYXJpbmcgaW4gdGhlIGdpdmVuICdyZWxpZHMnIGFzIHRoZWlyIHRvcC1sZXZl bAorICogcGFyZW50cy4gVGhlIHJlc3VsdCB3aWxsIGJlIE5VTEwgaWYgYW5kIG9ubHkgaWYgYWxs IG9mIHRoZSBnaXZlbiByZWxpZHMgYXJlCisgKiB0b3AtbGV2ZWwuCisgKgorICogVGhlIG1vdGl2 YXRpb24gZm9yIGhhdmluZyB0aGlzIGZlYXR1cmUgYXMgYSBtYWNybyByYXRoZXIgdGhhbiBhIGZ1 bmN0aW9uIGlzCisgKiB0aGF0IFJlbGlkcyBhcmUgdG9wLWxldmVsIGluIG1vc3QgY2FzZXMuIFdl IGNhbiBxdWlja2x5IGRldGVybWluZSB3aGVuCisgKiByb290LT50b3BfcGFyZW50X3JlbGlkX2Fy cmF5IGlzIE5VTEwuCisgKi8KKyNkZWZpbmUgZmluZF9yZWxpZHNfdG9wX3BhcmVudHMocm9vdCwg cmVsaWRzKSBcCisJKGxpa2VseSgocm9vdCktPnRvcF9wYXJlbnRfcmVsaWRfYXJyYXkgPT0gTlVM TCkgXAorCSA/IE5VTEwgOiBmaW5kX3JlbGlkc190b3BfcGFyZW50c19zbG93KHJvb3QsIHJlbGlk cykpCitleHRlcm4gUmVsaWRzIGZpbmRfcmVsaWRzX3RvcF9wYXJlbnRzX3Nsb3coUGxhbm5lcklu Zm8gKnJvb3QsIFJlbGlkcyByZWxpZHMpOworCiBleHRlcm4gUGFyYW1QYXRoSW5mbyAqZ2V0X2Jh c2VyZWxfcGFyYW1wYXRoaW5mbyhQbGFubmVySW5mbyAqcm9vdCwKIAkJCQkJCQkJCQkJCVJlbE9w dEluZm8gKmJhc2VyZWwsCiAJCQkJCQkJCQkJCQlSZWxpZHMgcmVxdWlyZWRfb3V0ZXIpOwpkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL3BhdGhzLmggYi9zcmMvaW5jbHVkZS9vcHRp bWl6ZXIvcGF0aHMuaAppbmRleCBlZmQ0YWJjMjhmLi45YmMwYzM2YjkzIDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGF0aHMuaAorKysgYi9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIv cGF0aHMuaApAQCAtMTM2LDcgKzEzNiw4IEBAIGV4dGVybiBFcXVpdmFsZW5jZUNsYXNzICpnZXRf ZWNsYXNzX2Zvcl9zb3J0X2V4cHIoUGxhbm5lckluZm8gKnJvb3QsCiAJCQkJCQkJCQkJCQkgIElu ZGV4IHNvcnRyZWYsCiAJCQkJCQkJCQkJCQkgIFJlbGlkcyByZWwsCiAJCQkJCQkJCQkJCQkgIGJv b2wgY3JlYXRlX2l0KTsKLWV4dGVybiBFcXVpdmFsZW5jZU1lbWJlciAqZmluZF9lY19tZW1iZXJf bWF0Y2hpbmdfZXhwcihFcXVpdmFsZW5jZUNsYXNzICplYywKK2V4dGVybiBFcXVpdmFsZW5jZU1l bWJlciAqZmluZF9lY19tZW1iZXJfbWF0Y2hpbmdfZXhwcihQbGFubmVySW5mbyAqcm9vdCwKKwkJ CQkJCQkJCQkJCQkgICBFcXVpdmFsZW5jZUNsYXNzICplYywKIAkJCQkJCQkJCQkJCQkgICBFeHBy ICpleHByLAogCQkJCQkJCQkJCQkJCSAgIFJlbGlkcyByZWxpZHMpOwogZXh0ZXJuIEVxdWl2YWxl bmNlTWVtYmVyICpmaW5kX2NvbXB1dGFibGVfZWNfbWVtYmVyKFBsYW5uZXJJbmZvICpyb290LApA QCAtMTczLDYgKzE3NCwxMiBAQCBleHRlcm4gdm9pZCBhZGRfY2hpbGRfam9pbl9yZWxfZXF1aXZh bGVuY2VzKFBsYW5uZXJJbmZvICpyb290LAogCQkJCQkJCQkJCQlBcHBlbmRSZWxJbmZvICoqYXBw aW5mb3MsCiAJCQkJCQkJCQkJCVJlbE9wdEluZm8gKnBhcmVudF9qb2lucmVsLAogCQkJCQkJCQkJ CQlSZWxPcHRJbmZvICpjaGlsZF9qb2lucmVsKTsKK2V4dGVybiB2b2lkIGFkZF9jaGlsZF9yZWxf ZXF1aXZhbGVuY2VzX3RvX2xpc3QoUGxhbm5lckluZm8gKnJvb3QsCisJCQkJCQkJCQkJCSAgIEVx dWl2YWxlbmNlQ2xhc3MgKmVjLAorCQkJCQkJCQkJCQkgICBFcXVpdmFsZW5jZU1lbWJlciAqcGFy ZW50X2VtLAorCQkJCQkJCQkJCQkgICBSZWxpZHMgY2hpbGRfcmVsaWRzLAorCQkJCQkJCQkJCQkg ICBMaXN0ICoqbGlzdCwKKwkJCQkJCQkJCQkJICAgYm9vbCAqbW9kaWZpZWQpOwogZXh0ZXJuIExp c3QgKmdlbmVyYXRlX2ltcGxpZWRfZXF1YWxpdGllc19mb3JfY29sdW1uKFBsYW5uZXJJbmZvICpy b290LAogCQkJCQkJCQkJCQkJCVJlbE9wdEluZm8gKnJlbCwKIAkJCQkJCQkJCQkJCQllY19tYXRj aGVzX2NhbGxiYWNrX3R5cGUgY2FsbGJhY2ssCi0tIAoyLjQyLjAud2luZG93cy4yCgo= --0000000000007e2747060f20f334 Content-Type: application/octet-stream; name="v23-0002-Introduce-indexes-for-RestrictInfo.patch" Content-Disposition: attachment; filename="v23-0002-Introduce-indexes-for-RestrictInfo.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lrhk0zww1 RnJvbSBmNGYwYzdhZGU1NWNjNWYwZDNmYzJiYzYyOTM0NzEwYjhlMTJmYThkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBZdXlhIFdhdGFyaSA8d2F0YXJpLnl1eWFAZ21haWwuY29tPgpE YXRlOiBGcmksIDI1IEF1ZyAyMDIzIDEwOjQ0OjI1ICswOTAwClN1YmplY3Q6IFtQQVRDSCB2MjMg Mi82XSBJbnRyb2R1Y2UgaW5kZXhlcyBmb3IgUmVzdHJpY3RJbmZvCgpUaGlzIGNoYW5nZSB3YXMg cGlja2VkIHVwIGZyb20gdjE5LgoKQXV0aG9yOiBEYXZpZCBSb3dsZXkgPGRncm93bGV5QGdtYWls LmNvbT4gYW5kIG1lCi0tLQogc3JjL2JhY2tlbmQvbm9kZXMvb3V0ZnVuY3MuYyAgICAgICAgICAg ICAgfCAgIDYgKy0KIHNyYy9iYWNrZW5kL25vZGVzL3JlYWRmdW5jcy5jICAgICAgICAgICAgIHwg ICAyICsKIHNyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2Nvc3RzaXplLmMgICAgIHwgICAzICst CiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9lcXVpdmNsYXNzLmMgICB8IDMzOCArKysrKysr KysrKysrKysrKysrLS0tCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9hbmFseXplam9pbnMu YyB8ICAgOCArLQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jICAgICAgfCAg IDIgKwogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3ByZXAvcHJlcGpvaW50cmVlLmMgfCAgIDIgKwog c3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvaW5oZXJpdC5jICAgICAgfCAgIDcgKwogc3JjL2lu Y2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oICAgICAgICAgICAgfCAgIDYgKwogc3JjL2luY2x1ZGUv bm9kZXMvcGF0aG5vZGVzLmggICAgICAgICAgICAgfCAgNDcgKystCiBzcmMvaW5jbHVkZS9vcHRp bWl6ZXIvcGF0aHMuaCAgICAgICAgICAgICB8ICAxNSArLQogMTEgZmlsZXMgY2hhbmdlZCwgMzgz IGluc2VydGlvbnMoKyksIDUzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L25vZGVzL291dGZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9vdXRmdW5jcy5jCmluZGV4IDk3 YWI1ZDM3NzAuLjk4ZjgyNGFjNTMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL291dGZ1 bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvb3V0ZnVuY3MuYwpAQCAtNDY1LDggKzQ2NSw4 IEBAIF9vdXRFcXVpdmFsZW5jZUNsYXNzKFN0cmluZ0luZm8gc3RyLCBjb25zdCBFcXVpdmFsZW5j ZUNsYXNzICpub2RlKQogCVdSSVRFX05PREVfRklFTEQoZWNfbWVtYmVycyk7CiAJV1JJVEVfTk9E RV9GSUVMRChlY19ub3JlbF9tZW1iZXJzKTsKIAlXUklURV9OT0RFX0ZJRUxEKGVjX3JlbF9tZW1i ZXJzKTsKLQlXUklURV9OT0RFX0ZJRUxEKGVjX3NvdXJjZXMpOwotCVdSSVRFX05PREVfRklFTEQo ZWNfZGVyaXZlcyk7CisJV1JJVEVfQklUTUFQU0VUX0ZJRUxEKGVjX3NvdXJjZV9pbmRleGVzKTsK KwlXUklURV9CSVRNQVBTRVRfRklFTEQoZWNfZGVyaXZlX2luZGV4ZXMpOwogCVdSSVRFX0JJVE1B UFNFVF9GSUVMRChlY19yZWxpZHMpOwogCVdSSVRFX0JPT0xfRklFTEQoZWNfaGFzX2NvbnN0KTsK IAlXUklURV9CT09MX0ZJRUxEKGVjX2hhc192b2xhdGlsZSk7CkBAIC01NjksNiArNTY5LDggQEAg X291dFJhbmdlVGJsRW50cnkoU3RyaW5nSW5mbyBzdHIsIGNvbnN0IFJhbmdlVGJsRW50cnkgKm5v ZGUpCiAJV1JJVEVfQk9PTF9GSUVMRChpbmgpOwogCVdSSVRFX0JPT0xfRklFTEQoaW5Gcm9tQ2wp OwogCVdSSVRFX05PREVfRklFTEQoc2VjdXJpdHlRdWFscyk7CisJV1JJVEVfQklUTUFQU0VUX0ZJ RUxEKGVjbGFzc19zb3VyY2VfaW5kZXhlcyk7CisJV1JJVEVfQklUTUFQU0VUX0ZJRUxEKGVjbGFz c19kZXJpdmVfaW5kZXhlcyk7CiB9CiAKIHN0YXRpYyB2b2lkCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9ub2Rlcy9yZWFkZnVuY3MuYyBiL3NyYy9iYWNrZW5kL25vZGVzL3JlYWRmdW5jcy5jCmlu ZGV4IDE2MjRiMzQ1ODEuLmRlZWJmYWY5OTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVz L3JlYWRmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL3JlYWRmdW5jcy5jCkBAIC01NzQs NiArNTc0LDggQEAgX3JlYWRSYW5nZVRibEVudHJ5KHZvaWQpCiAJUkVBRF9CT09MX0ZJRUxEKGlu aCk7CiAJUkVBRF9CT09MX0ZJRUxEKGluRnJvbUNsKTsKIAlSRUFEX05PREVfRklFTEQoc2VjdXJp dHlRdWFscyk7CisJUkVBRF9CSVRNQVBTRVRfRklFTEQoZWNsYXNzX3NvdXJjZV9pbmRleGVzKTsK KwlSRUFEX0JJVE1BUFNFVF9GSUVMRChlY2xhc3NfZGVyaXZlX2luZGV4ZXMpOwogCiAJUkVBRF9E T05FKCk7CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9jb3N0c2l6 ZS5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvY29zdHNpemUuYwppbmRleCA4Yjc2ZTk4 NTI5Li5hZTY0YjE2OWY4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9j b3N0c2l6ZS5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2Nvc3RzaXplLmMKQEAg LTU3ODQsNyArNTc4NCw4IEBAIGdldF9mb3JlaWduX2tleV9qb2luX3NlbGVjdGl2aXR5KFBsYW5u ZXJJbmZvICpyb290LAogCQkJCWlmIChlYyAmJiBlYy0+ZWNfaGFzX2NvbnN0KQogCQkJCXsKIAkJ CQkJRXF1aXZhbGVuY2VNZW1iZXIgKmVtID0gZmtpbmZvLT5ma19lY2xhc3NfbWVtYmVyW2ldOwot CQkJCQlSZXN0cmljdEluZm8gKnJpbmZvID0gZmluZF9kZXJpdmVkX2NsYXVzZV9mb3JfZWNfbWVt YmVyKGVjLAorCQkJCQlSZXN0cmljdEluZm8gKnJpbmZvID0gZmluZF9kZXJpdmVkX2NsYXVzZV9m b3JfZWNfbWVtYmVyKHJvb3QsCisJCQkJCQkJCQkJCQkJCQkJCQkJZWMsCiAJCQkJCQkJCQkJCQkJ CQkJCQkJZW0pOwogCiAJCQkJCWlmIChyaW5mbykKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29w dGltaXplci9wYXRoL2VxdWl2Y2xhc3MuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2Vx dWl2Y2xhc3MuYwppbmRleCBkOWViNDYxMGNlLi5kMTAxOTMxNWVhIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9lcXVpdmNsYXNzLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0 aW1pemVyL3BhdGgvZXF1aXZjbGFzcy5jCkBAIC00Miw2ICs0MiwxMCBAQCBzdGF0aWMgRXF1aXZh bGVuY2VNZW1iZXIgKmFkZF9lcV9tZW1iZXIoRXF1aXZhbGVuY2VDbGFzcyAqZWMsCiAJCQkJCQkJ CQkJRXhwciAqZXhwciwgUmVsaWRzIHJlbGlkcywKIAkJCQkJCQkJCQlKb2luRG9tYWluICpqZG9t YWluLAogCQkJCQkJCQkJCU9pZCBkYXRhdHlwZSk7CitzdGF0aWMgdm9pZCBhZGRfZXFfc291cmNl KFBsYW5uZXJJbmZvICpyb290LCBFcXVpdmFsZW5jZUNsYXNzICplYywKKwkJCQkJCSAgUmVzdHJp Y3RJbmZvICpyaW5mbyk7CitzdGF0aWMgdm9pZCBhZGRfZXFfZGVyaXZlKFBsYW5uZXJJbmZvICpy b290LCBFcXVpdmFsZW5jZUNsYXNzICplYywKKwkJCQkJCSAgUmVzdHJpY3RJbmZvICpyaW5mbyk7 CiBzdGF0aWMgYm9vbCBpc19leHBybGlzdF9tZW1iZXIoRXhwciAqbm9kZSwgTGlzdCAqZXhwcnMp Owogc3RhdGljIHZvaWQgZ2VuZXJhdGVfYmFzZV9pbXBsaWVkX2VxdWFsaXRpZXNfY29uc3QoUGxh bm5lckluZm8gKnJvb3QsCiAJCQkJCQkJCQkJCQkgICBFcXVpdmFsZW5jZUNsYXNzICplYyk7CkBA IC0zMjEsNyArMzI1LDYgQEAgcHJvY2Vzc19lcXVpdmFsZW5jZShQbGFubmVySW5mbyAqcm9vdCwK IAkJLyogSWYgY2FzZSAxLCBub3RoaW5nIHRvIGRvLCBleGNlcHQgYWRkIHRvIHNvdXJjZXMgKi8K IAkJaWYgKGVjMSA9PSBlYzIpCiAJCXsKLQkJCWVjMS0+ZWNfc291cmNlcyA9IGxhcHBlbmQoZWMx LT5lY19zb3VyY2VzLCByZXN0cmljdGluZm8pOwogCQkJZWMxLT5lY19taW5fc2VjdXJpdHkgPSBN aW4oZWMxLT5lY19taW5fc2VjdXJpdHksCiAJCQkJCQkJCQkgICByZXN0cmljdGluZm8tPnNlY3Vy aXR5X2xldmVsKTsKIAkJCWVjMS0+ZWNfbWF4X3NlY3VyaXR5ID0gTWF4KGVjMS0+ZWNfbWF4X3Nl Y3VyaXR5LApAQCAtMzMyLDYgKzMzNSw4IEBAIHByb2Nlc3NfZXF1aXZhbGVuY2UoUGxhbm5lcklu Zm8gKnJvb3QsCiAJCQkvKiBtYXJrIHRoZSBSSSBhcyB1c2FibGUgd2l0aCB0aGlzIHBhaXIgb2Yg RU1zICovCiAJCQlyZXN0cmljdGluZm8tPmxlZnRfZW0gPSBlbTE7CiAJCQlyZXN0cmljdGluZm8t PnJpZ2h0X2VtID0gZW0yOworCisJCQlhZGRfZXFfc291cmNlKHJvb3QsIGVjMSwgcmVzdHJpY3Rp bmZvKTsKIAkJCXJldHVybiB0cnVlOwogCQl9CiAKQEAgLTM1Niw4ICszNjEsMTAgQEAgcHJvY2Vz c19lcXVpdmFsZW5jZShQbGFubmVySW5mbyAqcm9vdCwKIAkJCQkJCQkJCQkJZWMyLT5lY19ub3Jl bF9tZW1iZXJzKTsKIAkJZWMxLT5lY19yZWxfbWVtYmVycyA9IGxpc3RfY29uY2F0KGVjMS0+ZWNf cmVsX21lbWJlcnMsCiAJCQkJCQkJCQkJICBlYzItPmVjX3JlbF9tZW1iZXJzKTsKLQkJZWMxLT5l Y19zb3VyY2VzID0gbGlzdF9jb25jYXQoZWMxLT5lY19zb3VyY2VzLCBlYzItPmVjX3NvdXJjZXMp OwotCQllYzEtPmVjX2Rlcml2ZXMgPSBsaXN0X2NvbmNhdChlYzEtPmVjX2Rlcml2ZXMsIGVjMi0+ ZWNfZGVyaXZlcyk7CisJCWVjMS0+ZWNfc291cmNlX2luZGV4ZXMgPSBibXNfam9pbihlYzEtPmVj X3NvdXJjZV9pbmRleGVzLAorCQkJCQkJCQkJCSAgZWMyLT5lY19zb3VyY2VfaW5kZXhlcyk7CisJ CWVjMS0+ZWNfZGVyaXZlX2luZGV4ZXMgPSBibXNfam9pbihlYzEtPmVjX2Rlcml2ZV9pbmRleGVz LAorCQkJCQkJCQkJCSAgZWMyLT5lY19kZXJpdmVfaW5kZXhlcyk7CiAJCWVjMS0+ZWNfcmVsaWRz ID0gYm1zX2pvaW4oZWMxLT5lY19yZWxpZHMsIGVjMi0+ZWNfcmVsaWRzKTsKIAkJZWMxLT5lY19o YXNfY29uc3QgfD0gZWMyLT5lY19oYXNfY29uc3Q7CiAJCS8qIGNhbid0IG5lZWQgdG8gc2V0IGhh c192b2xhdGlsZSAqLwpAQCAtMzcxLDEwICszNzgsOSBAQCBwcm9jZXNzX2VxdWl2YWxlbmNlKFBs YW5uZXJJbmZvICpyb290LAogCQllYzItPmVjX21lbWJlcnMgPSBOSUw7CiAJCWVjMi0+ZWNfbm9y ZWxfbWVtYmVycyA9IE5JTDsKIAkJZWMyLT5lY19yZWxfbWVtYmVycyA9IE5JTDsKLQkJZWMyLT5l Y19zb3VyY2VzID0gTklMOwotCQllYzItPmVjX2Rlcml2ZXMgPSBOSUw7CisJCWVjMi0+ZWNfc291 cmNlX2luZGV4ZXMgPSBOVUxMOworCQllYzItPmVjX2Rlcml2ZV9pbmRleGVzID0gTlVMTDsKIAkJ ZWMyLT5lY19yZWxpZHMgPSBOVUxMOwotCQllYzEtPmVjX3NvdXJjZXMgPSBsYXBwZW5kKGVjMS0+ ZWNfc291cmNlcywgcmVzdHJpY3RpbmZvKTsKIAkJZWMxLT5lY19taW5fc2VjdXJpdHkgPSBNaW4o ZWMxLT5lY19taW5fc2VjdXJpdHksCiAJCQkJCQkJCSAgIHJlc3RyaWN0aW5mby0+c2VjdXJpdHlf bGV2ZWwpOwogCQllYzEtPmVjX21heF9zZWN1cml0eSA9IE1heChlYzEtPmVjX21heF9zZWN1cml0 eSwKQEAgLTM4NSwxMyArMzkxLDE0IEBAIHByb2Nlc3NfZXF1aXZhbGVuY2UoUGxhbm5lckluZm8g KnJvb3QsCiAJCS8qIG1hcmsgdGhlIFJJIGFzIHVzYWJsZSB3aXRoIHRoaXMgcGFpciBvZiBFTXMg Ki8KIAkJcmVzdHJpY3RpbmZvLT5sZWZ0X2VtID0gZW0xOwogCQlyZXN0cmljdGluZm8tPnJpZ2h0 X2VtID0gZW0yOworCisJCWFkZF9lcV9zb3VyY2Uocm9vdCwgZWMxLCByZXN0cmljdGluZm8pOwog CX0KIAllbHNlIGlmIChlYzEpCiAJewogCQkvKiBDYXNlIDM6IGFkZCBpdGVtMiB0byBlYzEgKi8K IAkJZW0yID0gYWRkX2VxX21lbWJlcihlYzEsIGl0ZW0yLCBpdGVtMl9yZWxpZHMsCiAJCQkJCQkJ amRvbWFpbiwgaXRlbTJfdHlwZSk7Ci0JCWVjMS0+ZWNfc291cmNlcyA9IGxhcHBlbmQoZWMxLT5l Y19zb3VyY2VzLCByZXN0cmljdGluZm8pOwogCQllYzEtPmVjX21pbl9zZWN1cml0eSA9IE1pbihl YzEtPmVjX21pbl9zZWN1cml0eSwKIAkJCQkJCQkJICAgcmVzdHJpY3RpbmZvLT5zZWN1cml0eV9s ZXZlbCk7CiAJCWVjMS0+ZWNfbWF4X3NlY3VyaXR5ID0gTWF4KGVjMS0+ZWNfbWF4X3NlY3VyaXR5 LApAQCAtNDAyLDEzICs0MDksMTQgQEAgcHJvY2Vzc19lcXVpdmFsZW5jZShQbGFubmVySW5mbyAq cm9vdCwKIAkJLyogbWFyayB0aGUgUkkgYXMgdXNhYmxlIHdpdGggdGhpcyBwYWlyIG9mIEVNcyAq LwogCQlyZXN0cmljdGluZm8tPmxlZnRfZW0gPSBlbTE7CiAJCXJlc3RyaWN0aW5mby0+cmlnaHRf ZW0gPSBlbTI7CisKKwkJYWRkX2VxX3NvdXJjZShyb290LCBlYzEsIHJlc3RyaWN0aW5mbyk7CiAJ fQogCWVsc2UgaWYgKGVjMikKIAl7CiAJCS8qIENhc2UgMzogYWRkIGl0ZW0xIHRvIGVjMiAqLwog CQllbTEgPSBhZGRfZXFfbWVtYmVyKGVjMiwgaXRlbTEsIGl0ZW0xX3JlbGlkcywKIAkJCQkJCQlq ZG9tYWluLCBpdGVtMV90eXBlKTsKLQkJZWMyLT5lY19zb3VyY2VzID0gbGFwcGVuZChlYzItPmVj X3NvdXJjZXMsIHJlc3RyaWN0aW5mbyk7CiAJCWVjMi0+ZWNfbWluX3NlY3VyaXR5ID0gTWluKGVj Mi0+ZWNfbWluX3NlY3VyaXR5LAogCQkJCQkJCQkgICByZXN0cmljdGluZm8tPnNlY3VyaXR5X2xl dmVsKTsKIAkJZWMyLT5lY19tYXhfc2VjdXJpdHkgPSBNYXgoZWMyLT5lY19tYXhfc2VjdXJpdHks CkBAIC00MTksNiArNDI3LDggQEAgcHJvY2Vzc19lcXVpdmFsZW5jZShQbGFubmVySW5mbyAqcm9v dCwKIAkJLyogbWFyayB0aGUgUkkgYXMgdXNhYmxlIHdpdGggdGhpcyBwYWlyIG9mIEVNcyAqLwog CQlyZXN0cmljdGluZm8tPmxlZnRfZW0gPSBlbTE7CiAJCXJlc3RyaWN0aW5mby0+cmlnaHRfZW0g PSBlbTI7CisKKwkJYWRkX2VxX3NvdXJjZShyb290LCBlYzIsIHJlc3RyaWN0aW5mbyk7CiAJfQog CWVsc2UKIAl7CkBAIC00MzAsOCArNDQwLDggQEAgcHJvY2Vzc19lcXVpdmFsZW5jZShQbGFubmVy SW5mbyAqcm9vdCwKIAkJZWMtPmVjX21lbWJlcnMgPSBOSUw7CiAJCWVjLT5lY19ub3JlbF9tZW1i ZXJzID0gTklMOwogCQllYy0+ZWNfcmVsX21lbWJlcnMgPSBOSUw7Ci0JCWVjLT5lY19zb3VyY2Vz ID0gbGlzdF9tYWtlMShyZXN0cmljdGluZm8pOwotCQllYy0+ZWNfZGVyaXZlcyA9IE5JTDsKKwkJ ZWMtPmVjX3NvdXJjZV9pbmRleGVzID0gTlVMTDsKKwkJZWMtPmVjX2Rlcml2ZV9pbmRleGVzID0g TlVMTDsKIAkJZWMtPmVjX3JlbGlkcyA9IE5VTEw7CiAJCWVjLT5lY19oYXNfY29uc3QgPSBmYWxz ZTsKIAkJZWMtPmVjX2hhc192b2xhdGlsZSA9IGZhbHNlOwpAQCAtNDUzLDYgKzQ2Myw4IEBAIHBy b2Nlc3NfZXF1aXZhbGVuY2UoUGxhbm5lckluZm8gKnJvb3QsCiAJCS8qIG1hcmsgdGhlIFJJIGFz IHVzYWJsZSB3aXRoIHRoaXMgcGFpciBvZiBFTXMgKi8KIAkJcmVzdHJpY3RpbmZvLT5sZWZ0X2Vt ID0gZW0xOwogCQlyZXN0cmljdGluZm8tPnJpZ2h0X2VtID0gZW0yOworCisJCWFkZF9lcV9zb3Vy Y2Uocm9vdCwgZWMsIHJlc3RyaWN0aW5mbyk7CiAJfQogCiAJcmV0dXJuIHRydWU7CkBAIC02MDAs NiArNjEyLDUwIEBAIGFkZF9lcV9tZW1iZXIoRXF1aXZhbGVuY2VDbGFzcyAqZWMsIEV4cHIgKmV4 cHIsIFJlbGlkcyByZWxpZHMsCiAJcmV0dXJuIGVtOwogfQogCisvKgorICogYWRkX2VxX3NvdXJj ZSAtIGFkZCAncmluZm8nIGluIGVxX3NvdXJjZXMgZm9yIHRoaXMgJ2VjJworICovCitzdGF0aWMg dm9pZAorYWRkX2VxX3NvdXJjZShQbGFubmVySW5mbyAqcm9vdCwgRXF1aXZhbGVuY2VDbGFzcyAq ZWMsIFJlc3RyaWN0SW5mbyAqcmluZm8pCit7CisJaW50CQkJc291cmNlX2lkeCA9IGxpc3RfbGVu Z3RoKHJvb3QtPmVxX3NvdXJjZXMpOworCWludAkJCWk7CisKKwllYy0+ZWNfc291cmNlX2luZGV4 ZXMgPSBibXNfYWRkX21lbWJlcihlYy0+ZWNfc291cmNlX2luZGV4ZXMsIHNvdXJjZV9pZHgpOwor CXJvb3QtPmVxX3NvdXJjZXMgPSBsYXBwZW5kKHJvb3QtPmVxX3NvdXJjZXMsIHJpbmZvKTsKKwor CWkgPSAtMTsKKwl3aGlsZSAoKGkgPSBibXNfbmV4dF9tZW1iZXIocmluZm8tPmNsYXVzZV9yZWxp ZHMsIGkpKSA+PSAwKQorCXsKKwkJUmFuZ2VUYmxFbnRyeSAqcnRlID0gcm9vdC0+c2ltcGxlX3J0 ZV9hcnJheVtpXTsKKworCQlydGUtPmVjbGFzc19zb3VyY2VfaW5kZXhlcyA9IGJtc19hZGRfbWVt YmVyKHJ0ZS0+ZWNsYXNzX3NvdXJjZV9pbmRleGVzLAorCQkJCQkJCQkJCQkJCXNvdXJjZV9pZHgp OworCX0KK30KKworLyoKKyAqIGFkZF9lcV9kZXJpdmUgLSBhZGQgJ3JpbmZvJyBpbiBlcV9kZXJp dmVzIGZvciB0aGlzICdlYycKKyAqLworc3RhdGljIHZvaWQKK2FkZF9lcV9kZXJpdmUoUGxhbm5l ckluZm8gKnJvb3QsIEVxdWl2YWxlbmNlQ2xhc3MgKmVjLCBSZXN0cmljdEluZm8gKnJpbmZvKQor eworCWludAkJCWRlcml2ZV9pZHggPSBsaXN0X2xlbmd0aChyb290LT5lcV9kZXJpdmVzKTsKKwlp bnQJCQlpOworCisJZWMtPmVjX2Rlcml2ZV9pbmRleGVzID0gYm1zX2FkZF9tZW1iZXIoZWMtPmVj X2Rlcml2ZV9pbmRleGVzLCBkZXJpdmVfaWR4KTsKKwlyb290LT5lcV9kZXJpdmVzID0gbGFwcGVu ZChyb290LT5lcV9kZXJpdmVzLCByaW5mbyk7CisKKwlpID0gLTE7CisJd2hpbGUgKChpID0gYm1z X25leHRfbWVtYmVyKHJpbmZvLT5jbGF1c2VfcmVsaWRzLCBpKSkgPj0gMCkKKwl7CisJCVJhbmdl VGJsRW50cnkgKnJ0ZSA9IHJvb3QtPnNpbXBsZV9ydGVfYXJyYXlbaV07CisKKwkJcnRlLT5lY2xh c3NfZGVyaXZlX2luZGV4ZXMgPSBibXNfYWRkX21lbWJlcihydGUtPmVjbGFzc19kZXJpdmVfaW5k ZXhlcywKKwkJCQkJCQkJCQkJCQlkZXJpdmVfaWR4KTsKKwl9Cit9CisKIAogLyoKICAqIGdldF9l Y2xhc3NfZm9yX3NvcnRfZXhwcgpAQCAtNzU2LDggKzgxMiw4IEBAIGdldF9lY2xhc3NfZm9yX3Nv cnRfZXhwcihQbGFubmVySW5mbyAqcm9vdCwKIAluZXdlYy0+ZWNfbWVtYmVycyA9IE5JTDsKIAlu ZXdlYy0+ZWNfbm9yZWxfbWVtYmVycyA9IE5JTDsKIAluZXdlYy0+ZWNfcmVsX21lbWJlcnMgPSBO SUw7Ci0JbmV3ZWMtPmVjX3NvdXJjZXMgPSBOSUw7Ci0JbmV3ZWMtPmVjX2Rlcml2ZXMgPSBOSUw7 CisJbmV3ZWMtPmVjX3NvdXJjZV9pbmRleGVzID0gTlVMTDsKKwluZXdlYy0+ZWNfZGVyaXZlX2lu ZGV4ZXMgPSBOVUxMOwogCW5ld2VjLT5lY19yZWxpZHMgPSBOVUxMOwogCW5ld2VjLT5lY19oYXNf Y29uc3QgPSBmYWxzZTsKIAluZXdlYy0+ZWNfaGFzX3ZvbGF0aWxlID0gY29udGFpbl92b2xhdGls ZV9mdW5jdGlvbnMoKE5vZGUgKikgZXhwcik7CkBAIC0xMTQ1LDcgKzEyMDEsNyBAQCByZWxhdGlv bl9jYW5fYmVfc29ydGVkX2Vhcmx5KFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWws CiAgKiBzY2FubmluZyBvZiB0aGUgcXVhbHMgYW5kIGJlZm9yZSBQYXRoIGNvbnN0cnVjdGlvbiBi ZWdpbnMuCiAgKgogICogV2UgbWFrZSBubyBhdHRlbXB0IHRvIGF2b2lkIGdlbmVyYXRpbmcgZHVw bGljYXRlIFJlc3RyaWN0SW5mb3MgaGVyZTogd2UKLSAqIGRvbid0IHNlYXJjaCBlY19zb3VyY2Vz IG9yIGVjX2Rlcml2ZXMgZm9yIG1hdGNoZXMuICBJdCBkb2Vzbid0IHJlYWxseQorICogZG9uJ3Qg c2VhcmNoIGVxX3NvdXJjZXMgb3IgZXFfZGVyaXZlcyBmb3IgbWF0Y2hlcy4gIEl0IGRvZXNuJ3Qg cmVhbGx5CiAgKiBzZWVtIHdvcnRoIHRoZSB0cm91YmxlIHRvIGRvIHNvLgogICovCiB2b2lkCkBA IC0xMjM0LDYgKzEyOTAsNyBAQCBnZW5lcmF0ZV9iYXNlX2ltcGxpZWRfZXF1YWxpdGllc19jb25z dChQbGFubmVySW5mbyAqcm9vdCwKIHsKIAlFcXVpdmFsZW5jZU1lbWJlciAqY29uc3RfZW0gPSBO VUxMOwogCUxpc3RDZWxsICAgKmxjOworCWludAkJCWk7CiAKIAkvKgogCSAqIEluIHRoZSB0cml2 aWFsIGNhc2Ugd2hlcmUgd2UganVzdCBoYWQgb25lICJ2YXIgPSBjb25zdCIgY2xhdXNlLCBwdXNo CkBAIC0xMjQzLDkgKzEzMDAsOSBAQCBnZW5lcmF0ZV9iYXNlX2ltcGxpZWRfZXF1YWxpdGllc19j b25zdChQbGFubmVySW5mbyAqcm9vdCwKIAkgKiBlcXVpdmFsZW50IHRvIHRoZSBvbGQgb25lLgog CSAqLwogCWlmIChsaXN0X2xlbmd0aChlYy0+ZWNfbWVtYmVycykgPT0gMiAmJgotCQlsaXN0X2xl bmd0aChlYy0+ZWNfc291cmNlcykgPT0gMSkKKwkJYm1zX2dldF9zaW5nbGV0b25fbWVtYmVyKGVj LT5lY19zb3VyY2VfaW5kZXhlcywgJmkpKQogCXsKLQkJUmVzdHJpY3RJbmZvICpyZXN0cmljdGlu Zm8gPSAoUmVzdHJpY3RJbmZvICopIGxpbml0aWFsKGVjLT5lY19zb3VyY2VzKTsKKwkJUmVzdHJp Y3RJbmZvICpyZXN0cmljdGluZm8gPSBsaXN0X250aF9ub2RlKFJlc3RyaWN0SW5mbywgcm9vdC0+ ZXFfc291cmNlcywgaSk7CiAKIAkJZGlzdHJpYnV0ZV9yZXN0cmljdGluZm9fdG9fcmVscyhyb290 LCByZXN0cmljdGluZm8pOwogCQlyZXR1cm47CkBAIC0xMzAzLDkgKzEzNjAsOSBAQCBnZW5lcmF0 ZV9iYXNlX2ltcGxpZWRfZXF1YWxpdGllc19jb25zdChQbGFubmVySW5mbyAqcm9vdCwKIAogCQkv KgogCQkgKiBJZiB0aGUgY2xhdXNlIGRpZG4ndCBkZWdlbmVyYXRlIHRvIGEgY29uc3RhbnQsIGZp bGwgaW4gdGhlIGNvcnJlY3QKLQkJICogbWFya2luZ3MgZm9yIGEgbWVyZ2Vqb2luYWJsZSBjbGF1 c2UsIGFuZCBzYXZlIGl0IGluIGVjX2Rlcml2ZXMuIChXZQorCQkgKiBtYXJraW5ncyBmb3IgYSBt ZXJnZWpvaW5hYmxlIGNsYXVzZSwgYW5kIHNhdmUgaXQgaW4gZXFfZGVyaXZlcy4gKFdlCiAJCSAq IHdpbGwgbm90IHJlLXVzZSBzdWNoIGNsYXVzZXMgZGlyZWN0bHksIGJ1dCBzZWxlY3Rpdml0eSBl c3RpbWF0aW9uCi0JCSAqIG1heSBjb25zdWx0IHRoZSBsaXN0IGxhdGVyLiAgTm90ZSB0aGF0IHRo aXMgdXNlIG9mIGVjX2Rlcml2ZXMgZG9lcworCQkgKiBtYXkgY29uc3VsdCB0aGUgbGlzdCBsYXRl ci4gIE5vdGUgdGhhdCB0aGlzIHVzZSBvZiBlcV9kZXJpdmVzIGRvZXMKIAkJICogbm90IG92ZXJs YXAgd2l0aCBpdHMgdXNlIGZvciBqb2luIGNsYXVzZXMsIHNpbmNlIHdlIG5ldmVyIGdlbmVyYXRl CiAJCSAqIGpvaW4gY2xhdXNlcyBmcm9tIGFuIGVjX2hhc19jb25zdCBlY2xhc3MuKQogCQkgKi8K QEAgLTEzMTUsNyArMTM3Miw4IEBAIGdlbmVyYXRlX2Jhc2VfaW1wbGllZF9lcXVhbGl0aWVzX2Nv bnN0KFBsYW5uZXJJbmZvICpyb290LAogCQkJcmluZm8tPmxlZnRfZWMgPSByaW5mby0+cmlnaHRf ZWMgPSBlYzsKIAkJCXJpbmZvLT5sZWZ0X2VtID0gY3VyX2VtOwogCQkJcmluZm8tPnJpZ2h0X2Vt ID0gY29uc3RfZW07Ci0JCQllYy0+ZWNfZGVyaXZlcyA9IGxhcHBlbmQoZWMtPmVjX2Rlcml2ZXMs IHJpbmZvKTsKKworCQkJYWRkX2VxX2Rlcml2ZShyb290LCBlYywgcmluZm8pOwogCQl9CiAJfQog fQpAQCAtMTM4MSw3ICsxNDM5LDcgQEAgZ2VuZXJhdGVfYmFzZV9pbXBsaWVkX2VxdWFsaXRpZXNf bm9fY29uc3QoUGxhbm5lckluZm8gKnJvb3QsCiAJCQkvKgogCQkJICogSWYgdGhlIGNsYXVzZSBk aWRuJ3QgZGVnZW5lcmF0ZSB0byBhIGNvbnN0YW50LCBmaWxsIGluIHRoZQogCQkJICogY29ycmVj dCBtYXJraW5ncyBmb3IgYSBtZXJnZWpvaW5hYmxlIGNsYXVzZS4gIFdlIGRvbid0IHB1dCBpdAot CQkJICogaW4gZWNfZGVyaXZlcyBob3dldmVyOyB3ZSBkb24ndCBjdXJyZW50bHkgbmVlZCB0byBy ZS1maW5kIHN1Y2gKKwkJCSAqIGluIGVxX2Rlcml2ZXMgaG93ZXZlcjsgd2UgZG9uJ3QgY3VycmVu dGx5IG5lZWQgdG8gcmUtZmluZCBzdWNoCiAJCQkgKiBjbGF1c2VzLCBhbmQgd2UgZG9uJ3Qgd2Fu dCB0byBjbHV0dGVyIHRoYXQgbGlzdCB3aXRoIG5vbi1qb2luCiAJCQkgKiBjbGF1c2VzLgogCQkJ ICovCkBAIC0xNDM3LDExICsxNDk1LDEyIEBAIHN0YXRpYyB2b2lkCiBnZW5lcmF0ZV9iYXNlX2lt cGxpZWRfZXF1YWxpdGllc19icm9rZW4oUGxhbm5lckluZm8gKnJvb3QsCiAJCQkJCQkJCQkJRXF1 aXZhbGVuY2VDbGFzcyAqZWMpCiB7Ci0JTGlzdENlbGwgICAqbGM7CisJaW50CQkJaSA9IC0xOwog Ci0JZm9yZWFjaChsYywgZWMtPmVjX3NvdXJjZXMpCisJd2hpbGUgKChpID0gYm1zX25leHRfbWVt YmVyKGVjLT5lY19zb3VyY2VfaW5kZXhlcywgaSkpID49IDApCiAJewotCQlSZXN0cmljdEluZm8g KnJlc3RyaWN0aW5mbyA9IChSZXN0cmljdEluZm8gKikgbGZpcnN0KGxjKTsKKwkJUmVzdHJpY3RJ bmZvICpyZXN0cmljdGluZm8gPSBsaXN0X250aF9ub2RlKFJlc3RyaWN0SW5mbywKKwkJCQkJCQkJ CQkJCSAgIHJvb3QtPmVxX3NvdXJjZXMsIGkpOwogCiAJCWlmIChlYy0+ZWNfaGFzX2NvbnN0IHx8 CiAJCQlibXNfbWVtYmVyc2hpcChyZXN0cmljdGluZm8tPnJlcXVpcmVkX3JlbGlkcykgIT0gQk1T X01VTFRJUExFKQpAQCAtMTQ4MiwxMSArMTU0MSwxMSBAQCBnZW5lcmF0ZV9iYXNlX2ltcGxpZWRf ZXF1YWxpdGllc19icm9rZW4oUGxhbm5lckluZm8gKnJvb3QsCiAgKiBCZWNhdXNlIHRoZSBzYW1l IGpvaW4gY2xhdXNlcyBhcmUgbGlrZWx5IHRvIGJlIG5lZWRlZCBtdWx0aXBsZSB0aW1lcyBhcwog ICogd2UgY29uc2lkZXIgZGlmZmVyZW50IGpvaW4gcGF0aHMsIHdlIGF2b2lkIGdlbmVyYXRpbmcg bXVsdGlwbGUgY29waWVzOgogICogd2hlbmV2ZXIgd2Ugc2VsZWN0IGEgcGFydGljdWxhciBwYWly IG9mIEVxdWl2YWxlbmNlTWVtYmVycyB0byBqb2luLAotICogd2UgY2hlY2sgdG8gc2VlIGlmIHRo ZSBwYWlyIG1hdGNoZXMgYW55IG9yaWdpbmFsIGNsYXVzZSAoaW4gZWNfc291cmNlcykKLSAqIG9y IHByZXZpb3VzbHktYnVpbHQgY2xhdXNlIChpbiBlY19kZXJpdmVzKS4gIFRoaXMgc2F2ZXMgbWVt b3J5IGFuZCBhbGxvd3MKLSAqIHJlLXVzZSBvZiBpbmZvcm1hdGlvbiBjYWNoZWQgaW4gUmVzdHJp Y3RJbmZvcy4gIFdlIGFsc28gYXZvaWQgZ2VuZXJhdGluZwotICogY29tbXV0YXRpdmUgZHVwbGlj YXRlcywgaS5lLiBpZiB0aGUgYWxnb3JpdGhtIHNlbGVjdHMgImEueCA9IGIueSIgYnV0Ci0gKiB3 ZSBhbHJlYWR5IGhhdmUgImIueSA9IGEueCIsIHdlIHJldHVybiB0aGUgZXhpc3RpbmcgY2xhdXNl LgorICogd2UgY2hlY2sgdG8gc2VlIGlmIHRoZSBwYWlyIG1hdGNoZXMgYW55IG9yaWdpbmFsIGNs YXVzZSBpbiByb290J3MKKyAqIGVxX3NvdXJjZXMgb3IgcHJldmlvdXNseS1idWlsdCBjbGF1c2Ug KGluIHJvb3QncyBlcV9kZXJpdmVzKS4gIFRoaXMgc2F2ZXMKKyAqIG1lbW9yeSBhbmQgYWxsb3dz IHJlLXVzZSBvZiBpbmZvcm1hdGlvbiBjYWNoZWQgaW4gUmVzdHJpY3RJbmZvcy4gIFdlIGFsc28K KyAqIGF2b2lkIGdlbmVyYXRpbmcgY29tbXV0YXRpdmUgZHVwbGljYXRlcywgaS5lLiBpZiB0aGUg YWxnb3JpdGhtIHNlbGVjdHMKKyAqICJhLnggPSBiLnkiIGJ1dCB3ZSBhbHJlYWR5IGhhdmUgImIu eSA9IGEueCIsIHdlIHJldHVybiB0aGUgZXhpc3RpbmcgY2xhdXNlLgogICoKICAqIElmIHdlIGFy ZSBjb25zaWRlcmluZyBhbiBvdXRlciBqb2luLCBzamluZm8gaXMgdGhlIGFzc29jaWF0ZWQgT0og aW5mbywKICAqIG90aGVyd2lzZSBpdCBjYW4gYmUgTlVMTC4KQEAgLTE4NzEsMTIgKzE5MzAsMTYg QEAgZ2VuZXJhdGVfam9pbl9pbXBsaWVkX2VxdWFsaXRpZXNfYnJva2VuKFBsYW5uZXJJbmZvICpy b290LAogCQkJCQkJCQkJCVJlbGlkcyBub21pbmFsX2lubmVyX3JlbGlkcywKIAkJCQkJCQkJCQlS ZWxPcHRJbmZvICppbm5lcl9yZWwpCiB7CisJQml0bWFwc2V0ICAqbWF0Y2hpbmdfZXM7CiAJTGlz dAkgICAqcmVzdWx0ID0gTklMOwotCUxpc3RDZWxsICAgKmxjOworCWludAkJCWk7CiAKLQlmb3Jl YWNoKGxjLCBlYy0+ZWNfc291cmNlcykKKwltYXRjaGluZ19lcyA9IGdldF9lY19zb3VyY2VfaW5k ZXhlcyhyb290LCBlYywgbm9taW5hbF9qb2luX3JlbGlkcyk7CisJaSA9IC0xOworCXdoaWxlICgo aSA9IGJtc19uZXh0X21lbWJlcihtYXRjaGluZ19lcywgaSkpID49IDApCiAJewotCQlSZXN0cmlj dEluZm8gKnJlc3RyaWN0aW5mbyA9IChSZXN0cmljdEluZm8gKikgbGZpcnN0KGxjKTsKKwkJUmVz dHJpY3RJbmZvICpyZXN0cmljdGluZm8gPSBsaXN0X250aF9ub2RlKFJlc3RyaWN0SW5mbywKKwkJ CQkJCQkJCQkJCSAgIHJvb3QtPmVxX3NvdXJjZXMsIGkpOwogCQlSZWxpZHMJCWNsYXVzZV9yZWxp ZHMgPSByZXN0cmljdGluZm8tPnJlcXVpcmVkX3JlbGlkczsKIAogCQlpZiAoYm1zX2lzX3N1YnNl dChjbGF1c2VfcmVsaWRzLCBub21pbmFsX2pvaW5fcmVsaWRzKSAmJgpAQCAtMTg4OCwxMiArMTk1 MSwxMiBAQCBnZW5lcmF0ZV9qb2luX2ltcGxpZWRfZXF1YWxpdGllc19icm9rZW4oUGxhbm5lcklu Zm8gKnJvb3QsCiAJLyoKIAkgKiBJZiB3ZSBoYXZlIHRvIHRyYW5zbGF0ZSwganVzdCBicnV0ZS1m b3JjZSBhcHBseSBhZGp1c3RfYXBwZW5kcmVsX2F0dHJzCiAJICogdG8gYWxsIHRoZSBSZXN0cmlj dEluZm9zIGF0IG9uY2UuICBUaGlzIHdpbGwgcmVzdWx0IGluIHJldHVybmluZwotCSAqIFJlc3Ry aWN0SW5mb3MgdGhhdCBhcmUgbm90IGxpc3RlZCBpbiBlY19kZXJpdmVzLCBidXQgdGhlcmUgc2hv dWxkbid0IGJlCisJICogUmVzdHJpY3RJbmZvcyB0aGF0IGFyZSBub3QgbGlzdGVkIGluIGVxX2Rl cml2ZXMsIGJ1dCB0aGVyZSBzaG91bGRuJ3QgYmUKIAkgKiBhbnkgZHVwbGljYXRpb24sIGFuZCBp dCdzIGEgc3VmZmljaWVudGx5IG5hcnJvdyBjb3JuZXIgY2FzZSB0aGF0IHdlCiAJICogc2hvdWxk bid0IHN3ZWF0IHRvbyBtdWNoIG92ZXIgaXQgYW55d2F5LgogCSAqCiAJICogU2luY2UgaW5uZXJf cmVsIG1pZ2h0IGJlIGFuIGluZGlyZWN0IGRlc2NlbmRhbnQgb2YgdGhlIGJhc2VyZWwKLQkgKiBt ZW50aW9uZWQgaW4gdGhlIGVjX3NvdXJjZXMgY2xhdXNlcywgd2UgaGF2ZSB0byBiZSBwcmVwYXJl ZCB0byBhcHBseQorCSAqIG1lbnRpb25lZCBpbiB0aGUgZXFfc291cmNlcyBjbGF1c2VzLCB3ZSBo YXZlIHRvIGJlIHByZXBhcmVkIHRvIGFwcGx5CiAJICogbXVsdGlwbGUgbGV2ZWxzIG9mIFZhciB0 cmFuc2xhdGlvbi4KIAkgKi8KIAlpZiAoSVNfT1RIRVJfUkVMKGlubmVyX3JlbCkgJiYgcmVzdWx0 ICE9IE5JTCkKQEAgLTE5NTUsMTAgKzIwMTgsMTEgQEAgY3JlYXRlX2pvaW5fY2xhdXNlKFBsYW5u ZXJJbmZvICpyb290LAogCQkJCSAgIEVxdWl2YWxlbmNlTWVtYmVyICpyaWdodGVtLAogCQkJCSAg IEVxdWl2YWxlbmNlQ2xhc3MgKnBhcmVudF9lYykKIHsKKwlCaXRtYXBzZXQgICptYXRjaGVzOwog CVJlc3RyaWN0SW5mbyAqcmluZm87CiAJUmVzdHJpY3RJbmZvICpwYXJlbnRfcmluZm8gPSBOVUxM OwotCUxpc3RDZWxsICAgKmxjOwogCU1lbW9yeUNvbnRleHQgb2xkY29udGV4dDsKKwlpbnQJCQlp OwogCiAJLyoKIAkgKiBTZWFyY2ggdG8gc2VlIGlmIHdlIGFscmVhZHkgYnVpbHQgYSBSZXN0cmlj dEluZm8gZm9yIHRoaXMgcGFpciBvZgpAQCAtMTk2OSw5ICsyMDMzLDEyIEBAIGNyZWF0ZV9qb2lu X2NsYXVzZShQbGFubmVySW5mbyAqcm9vdCwKIAkgKiBpdCdzIG5vdCBpZGVudGljYWwsIGl0J2Qg YmV0dGVyIGhhdmUgdGhlIHNhbWUgZWZmZWN0cywgb3IgdGhlIG9wZXJhdG9yCiAJICogZmFtaWxp ZXMgd2UncmUgdXNpbmcgYXJlIGJyb2tlbi4KIAkgKi8KLQlmb3JlYWNoKGxjLCBlYy0+ZWNfc291 cmNlcykKKwltYXRjaGVzID0gYm1zX2ludF9tZW1iZXJzKGdldF9lY19zb3VyY2VfaW5kZXhlc19z dHJpY3Qocm9vdCwgZWMsIGxlZnRlbS0+ZW1fcmVsaWRzKSwKKwkJCQkJCQkgIGdldF9lY19zb3Vy Y2VfaW5kZXhlc19zdHJpY3Qocm9vdCwgZWMsIHJpZ2h0ZW0tPmVtX3JlbGlkcykpOworCWkgPSAt MTsKKwl3aGlsZSAoKGkgPSBibXNfbmV4dF9tZW1iZXIobWF0Y2hlcywgaSkpID49IDApCiAJewot CQlyaW5mbyA9IChSZXN0cmljdEluZm8gKikgbGZpcnN0KGxjKTsKKwkJcmluZm8gPSBsaXN0X250 aF9ub2RlKFJlc3RyaWN0SW5mbywgcm9vdC0+ZXFfc291cmNlcywgaSk7CiAJCWlmIChyaW5mby0+ bGVmdF9lbSA9PSBsZWZ0ZW0gJiYKIAkJCXJpbmZvLT5yaWdodF9lbSA9PSByaWdodGVtICYmCiAJ CQlyaW5mby0+cGFyZW50X2VjID09IHBhcmVudF9lYykKQEAgLTE5ODIsOSArMjA0OSwxMyBAQCBj cmVhdGVfam9pbl9jbGF1c2UoUGxhbm5lckluZm8gKnJvb3QsCiAJCQlyZXR1cm4gcmluZm87CiAJ fQogCi0JZm9yZWFjaChsYywgZWMtPmVjX2Rlcml2ZXMpCisJbWF0Y2hlcyA9IGJtc19pbnRfbWVt YmVycyhnZXRfZWNfZGVyaXZlX2luZGV4ZXNfc3RyaWN0KHJvb3QsIGVjLCBsZWZ0ZW0tPmVtX3Jl bGlkcyksCisJCQkJCQkJICBnZXRfZWNfZGVyaXZlX2luZGV4ZXNfc3RyaWN0KHJvb3QsIGVjLCBy aWdodGVtLT5lbV9yZWxpZHMpKTsKKworCWkgPSAtMTsKKwl3aGlsZSAoKGkgPSBibXNfbmV4dF9t ZW1iZXIobWF0Y2hlcywgaSkpID49IDApCiAJewotCQlyaW5mbyA9IChSZXN0cmljdEluZm8gKikg bGZpcnN0KGxjKTsKKwkJcmluZm8gPSBsaXN0X250aF9ub2RlKFJlc3RyaWN0SW5mbywgcm9vdC0+ ZXFfZGVyaXZlcywgaSk7CiAJCWlmIChyaW5mby0+bGVmdF9lbSA9PSBsZWZ0ZW0gJiYKIAkJCXJp bmZvLT5yaWdodF9lbSA9PSByaWdodGVtICYmCiAJCQlyaW5mby0+cGFyZW50X2VjID09IHBhcmVu dF9lYykKQEAgLTIwNDIsNyArMjExMyw3IEBAIGNyZWF0ZV9qb2luX2NsYXVzZShQbGFubmVySW5m byAqcm9vdCwKIAlyaW5mby0+bGVmdF9lbSA9IGxlZnRlbTsKIAlyaW5mby0+cmlnaHRfZW0gPSBy aWdodGVtOwogCS8qIGFuZCBzYXZlIGl0IGZvciBwb3NzaWJsZSByZS11c2UgKi8KLQllYy0+ZWNf ZGVyaXZlcyA9IGxhcHBlbmQoZWMtPmVjX2Rlcml2ZXMsIHJpbmZvKTsKKwlhZGRfZXFfZGVyaXZl KHJvb3QsIGVjLCByaW5mbyk7CiAKIAlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7 CiAKQEAgLTI3MjEsMTYgKzI3OTIsMTkgQEAgbWF0Y2hfZWNsYXNzZXNfdG9fZm9yZWlnbl9rZXlf Y29sKFBsYW5uZXJJbmZvICpyb290LAogICogUmV0dXJucyBOVUxMIGlmIG5vIHN1Y2ggY2xhdXNl IGNhbiBiZSBmb3VuZC4KICAqLwogUmVzdHJpY3RJbmZvICoKLWZpbmRfZGVyaXZlZF9jbGF1c2Vf Zm9yX2VjX21lbWJlcihFcXVpdmFsZW5jZUNsYXNzICplYywKK2ZpbmRfZGVyaXZlZF9jbGF1c2Vf Zm9yX2VjX21lbWJlcihQbGFubmVySW5mbyAqcm9vdCwgRXF1aXZhbGVuY2VDbGFzcyAqZWMsCiAJ CQkJCQkJCSAgRXF1aXZhbGVuY2VNZW1iZXIgKmVtKQogewotCUxpc3RDZWxsICAgKmxjOworCWlu dAkJCWk7CiAKIAlBc3NlcnQoZWMtPmVjX2hhc19jb25zdCk7CiAJQXNzZXJ0KCFlbS0+ZW1faXNf Y29uc3QpOwotCWZvcmVhY2gobGMsIGVjLT5lY19kZXJpdmVzKQorCisJaSA9IC0xOworCXdoaWxl ICgoaSA9IGJtc19uZXh0X21lbWJlcihlYy0+ZWNfZGVyaXZlX2luZGV4ZXMsIGkpKSA+PSAwKQog CXsKLQkJUmVzdHJpY3RJbmZvICpyaW5mbyA9IChSZXN0cmljdEluZm8gKikgbGZpcnN0KGxjKTsK KwkJUmVzdHJpY3RJbmZvICpyaW5mbyA9IGxpc3RfbnRoX25vZGUoUmVzdHJpY3RJbmZvLCByb290 LT5lcV9kZXJpdmVzLAorCQkJCQkJCQkJCQlpKTsKIAogCQkvKgogCQkgKiBnZW5lcmF0ZV9iYXNl X2ltcGxpZWRfZXF1YWxpdGllc19jb25zdCB3aWxsIGhhdmUgcHV0IG5vbi1jb25zdApAQCAtMzMz NSw3ICszNDA5LDcgQEAgaGF2ZV9yZWxldmFudF9lY2xhc3Nfam9pbmNsYXVzZShQbGFubmVySW5m byAqcm9vdCwKIAkJICogc3VyZWx5IGJlIHRydWUgaWYgYm90aCBvZiB0aGVtIG92ZXJsYXAgZWNf cmVsaWRzLikKIAkJICoKIAkJICogTm90ZSB3ZSBkb24ndCB0ZXN0IGVjX2Jyb2tlbjsgaWYgd2Ug ZGlkLCB3ZSdkIG5lZWQgYSBzZXBhcmF0ZSBjb2RlCi0JCSAqIHBhdGggdG8gbG9vayB0aHJvdWdo IGVjX3NvdXJjZXMuICBDaGVja2luZyB0aGUgbWVtYmVyc2hpcCBhbnl3YXkgaXMKKwkJICogcGF0 aCB0byBsb29rIHRocm91Z2ggZXFfc291cmNlcy4gIENoZWNraW5nIHRoZSBtZW1iZXJzaGlwIGFu eXdheSBpcwogCQkgKiBPSyBhcyBhIHBvc3NpYmx5LW92ZXJvcHRpbWlzdGljIGhldXJpc3RpYy4K IAkJICoKIAkJICogV2UgZG9uJ3QgdGVzdCBlY19oYXNfY29uc3QgZWl0aGVyLCBldmVuIHRob3Vn aCBhIGNvbnN0IGVjbGFzcyB3b24ndApAQCAtMzQyMyw3ICszNDk3LDcgQEAgZWNsYXNzX3VzZWZ1 bF9mb3JfbWVyZ2luZyhQbGFubmVySW5mbyAqcm9vdCwKIAogCS8qCiAJICogTm90ZSB3ZSBkb24n dCB0ZXN0IGVjX2Jyb2tlbjsgaWYgd2UgZGlkLCB3ZSdkIG5lZWQgYSBzZXBhcmF0ZSBjb2RlIHBh dGgKLQkgKiB0byBsb29rIHRocm91Z2ggZWNfc291cmNlcy4gIENoZWNraW5nIHRoZSBtZW1iZXJz IGFueXdheSBpcyBPSyBhcyBhCisJICogdG8gbG9vayB0aHJvdWdoIGVxX3NvdXJjZXMuICBDaGVj a2luZyB0aGUgbWVtYmVycyBhbnl3YXkgaXMgT0sgYXMgYQogCSAqIHBvc3NpYmx5LW92ZXJvcHRp bWlzdGljIGhldXJpc3RpYy4KIAkgKi8KIApAQCAtMzU3NiwzICszNjUwLDE3OSBAQCBnZXRfY29t bW9uX2VjbGFzc19pbmRleGVzKFBsYW5uZXJJbmZvICpyb290LCBSZWxpZHMgcmVsaWRzMSwgUmVs aWRzIHJlbGlkczIpCiAJLyogQ2FsY3VsYXRlIGFuZCByZXR1cm4gdGhlIGNvbW1vbiBFQyBpbmRl eGVzLCByZWN5Y2xpbmcgdGhlIGxlZnQgaW5wdXQuICovCiAJcmV0dXJuIGJtc19pbnRfbWVtYmVy cyhyZWwxZWNzLCByZWwyZWNzKTsKIH0KKworLyoKKyAqIGdldF9lY19zb3VyY2VfaW5kZXhlcwor ICoJCVJldHVybnMgYSBCaXRtYXBzZXQgd2l0aCBpbmRleGVzIGludG8gcm9vdC0+ZXFfc291cmNl cyBmb3IgYWxsCisgKgkJUmVzdHJpY3RJbmZvcyBpbiAnZWMnIHRoYXQgaGF2ZQorICoJCWJtc19v dmVybGFwKHJlbGlkcywgcmluZm8tPmNsYXVzZV9yZWxpZHMpIGFzIHRydWUuCisgKgorICogUmV0 dXJucyBhIG5ld2x5IGFsbG9jYXRlZCBCaXRtYXBzZXQgd2hpY2ggdGhlIGNhbGxlciBpcyBmcmVl IHRvIG1vZGlmeS4KKyAqLworQml0bWFwc2V0ICoKK2dldF9lY19zb3VyY2VfaW5kZXhlcyhQbGFu bmVySW5mbyAqcm9vdCwgRXF1aXZhbGVuY2VDbGFzcyAqZWMsIFJlbGlkcyByZWxpZHMpCit7CisJ Qml0bWFwc2V0ICAqcmVsX2VzaXMgPSBOVUxMOworCWludAkJCWkgPSAtMTsKKworCXdoaWxlICgo aSA9IGJtc19uZXh0X21lbWJlcihyZWxpZHMsIGkpKSA+PSAwKQorCXsKKwkJUmFuZ2VUYmxFbnRy eSAqcnRlID0gcm9vdC0+c2ltcGxlX3J0ZV9hcnJheVtpXTsKKworCQlyZWxfZXNpcyA9IGJtc19h ZGRfbWVtYmVycyhyZWxfZXNpcywgcnRlLT5lY2xhc3Nfc291cmNlX2luZGV4ZXMpOworCX0KKwor I2lmZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJTkcKKwkvKiB2ZXJpZnkgdGhlIHJlc3VsdHMgbG9vayBz YW5lICovCisJaSA9IC0xOworCXdoaWxlICgoaSA9IGJtc19uZXh0X21lbWJlcihyZWxfZXNpcywg aSkpID49IDApCisJeworCQlSZXN0cmljdEluZm8gKnJpbmZvID0gbGlzdF9udGhfbm9kZShSZXN0 cmljdEluZm8sIHJvb3QtPmVxX3NvdXJjZXMsCisJCQkJCQkJCQkJCWkpOworCisJCUFzc2VydChi bXNfb3ZlcmxhcChyZWxpZHMsIHJpbmZvLT5jbGF1c2VfcmVsaWRzKSk7CisJfQorI2VuZGlmCisK KwkvKiBiaXR3aXNlLUFORCB0byBsZWF2ZSBvbmx5IHRoZSBvbmVzIGZvciB0aGlzIEVxdWl2YWxl bmNlQ2xhc3MgKi8KKwlyZXR1cm4gYm1zX2ludF9tZW1iZXJzKHJlbF9lc2lzLCBlYy0+ZWNfc291 cmNlX2luZGV4ZXMpOworfQorCisvKgorICogZ2V0X2VjX3NvdXJjZV9pbmRleGVzX3N0cmljdAor ICoJCVJldHVybnMgYSBCaXRtYXBzZXQgd2l0aCBpbmRleGVzIGludG8gcm9vdC0+ZXFfc291cmNl cyBmb3IgYWxsCisgKgkJUmVzdHJpY3RJbmZvcyBpbiAnZWMnIHRoYXQgaGF2ZQorICoJCWJtc19p c19zdWJzZXQocmVsaWRzLCByaW5mby0+Y2xhdXNlX3JlbGlkcykgYXMgdHJ1ZS4KKyAqCisgKiBS ZXR1cm5zIGEgbmV3bHkgYWxsb2NhdGVkIEJpdG1hcHNldCB3aGljaCB0aGUgY2FsbGVyIGlzIGZy ZWUgdG8gbW9kaWZ5LgorICovCitCaXRtYXBzZXQgKgorZ2V0X2VjX3NvdXJjZV9pbmRleGVzX3N0 cmljdChQbGFubmVySW5mbyAqcm9vdCwgRXF1aXZhbGVuY2VDbGFzcyAqZWMsCisJCQkJCQkJIFJl bGlkcyByZWxpZHMpCit7CisJQml0bWFwc2V0ICAqZXNpcyA9IE5VTEw7CisJaW50CQkJaSA9IGJt c19uZXh0X21lbWJlcihyZWxpZHMsIC0xKTsKKworCWlmIChpID49IDApCisJeworCQlSYW5nZVRi bEVudHJ5ICpydGUgPSByb290LT5zaW1wbGVfcnRlX2FycmF5W2ldOworCisJCS8qCisJCSAqIGJt c19pbnRlcnNlY3QgdG8gdGhlIGZpcnN0IHJlbGF0aW9uIHRvIHRyeSB0byBrZWVwIHRoZSByZXN1 bHRpbmcKKwkJICogQml0bWFwc2V0IGFzIHNtYWxsIGFzIHBvc3NpYmxlLiAgVGhpcyBzYXZlcyBo YXZpbmcgdG8gbWFrZSBhCisJCSAqIGNvbXBsZXRlIGJtc19jb3B5KCkgb2Ygb25lIG9mIHRoZW0u ICBPbmUgbWF5IGNvbnRhaW4gc2lnbmlmaWNhbnRseQorCQkgKiBtb3JlIHdvcmRzIHRoYW4gdGhl IG90aGVyLgorCQkgKi8KKwkJZXNpcyA9IGJtc19pbnRlcnNlY3QoZWMtPmVjX3NvdXJjZV9pbmRl eGVzLAorCQkJCQkJCSBydGUtPmVjbGFzc19zb3VyY2VfaW5kZXhlcyk7CisKKwkJd2hpbGUgKChp ID0gYm1zX25leHRfbWVtYmVyKHJlbGlkcywgaSkpID49IDApCisJCXsKKwkJCXJ0ZSA9IHJvb3Qt PnNpbXBsZV9ydGVfYXJyYXlbaV07CisJCQllc2lzID0gYm1zX2ludF9tZW1iZXJzKGVzaXMsIHJ0 ZS0+ZWNsYXNzX3NvdXJjZV9pbmRleGVzKTsKKwkJfQorCX0KKworI2lmZGVmIFVTRV9BU1NFUlRf Q0hFQ0tJTkcKKwkvKiB2ZXJpZnkgdGhlIHJlc3VsdHMgbG9vayBzYW5lICovCisJaSA9IC0xOwor CXdoaWxlICgoaSA9IGJtc19uZXh0X21lbWJlcihlc2lzLCBpKSkgPj0gMCkKKwl7CisJCVJlc3Ry aWN0SW5mbyAqcmluZm8gPSBsaXN0X250aF9ub2RlKFJlc3RyaWN0SW5mbywgcm9vdC0+ZXFfc291 cmNlcywKKwkJCQkJCQkJCQkJaSk7CisKKwkJQXNzZXJ0KGJtc19pc19zdWJzZXQocmVsaWRzLCBy aW5mby0+Y2xhdXNlX3JlbGlkcykpOworCX0KKyNlbmRpZgorCisJcmV0dXJuIGVzaXM7Cit9CisK Ky8qCisgKiBnZXRfZWNfZGVyaXZlX2luZGV4ZXMKKyAqCQlSZXR1cm5zIGEgQml0bWFwc2V0IHdp dGggaW5kZXhlcyBpbnRvIHJvb3QtPmVxX2Rlcml2ZXMgZm9yIGFsbAorICoJCVJlc3RyaWN0SW5m b3MgaW4gJ2VjJyB0aGF0IGhhdmUKKyAqCQlibXNfb3ZlcmxhcChyZWxpZHMsIHJpbmZvLT5jbGF1 c2VfcmVsaWRzKSBhcyB0cnVlLgorICoKKyAqIFJldHVybnMgYSBuZXdseSBhbGxvY2F0ZWQgQml0 bWFwc2V0IHdoaWNoIHRoZSBjYWxsZXIgaXMgZnJlZSB0byBtb2RpZnkuCisgKgorICogWFhYIGlz IHRoaXMgZnVuY3Rpb24gZXZlbiBuZWVkZWQ/CisgKi8KK0JpdG1hcHNldCAqCitnZXRfZWNfZGVy aXZlX2luZGV4ZXMoUGxhbm5lckluZm8gKnJvb3QsIEVxdWl2YWxlbmNlQ2xhc3MgKmVjLCBSZWxp ZHMgcmVsaWRzKQoreworCUJpdG1hcHNldCAgKnJlbF9lZGlzID0gTlVMTDsKKwlpbnQJCQlpID0g LTE7CisKKwl3aGlsZSAoKGkgPSBibXNfbmV4dF9tZW1iZXIocmVsaWRzLCBpKSkgPj0gMCkKKwl7 CisJCVJhbmdlVGJsRW50cnkgKnJ0ZSA9IHJvb3QtPnNpbXBsZV9ydGVfYXJyYXlbaV07CisKKwkJ cmVsX2VkaXMgPSBibXNfYWRkX21lbWJlcnMocmVsX2VkaXMsIHJ0ZS0+ZWNsYXNzX2Rlcml2ZV9p bmRleGVzKTsKKwl9CisKKyNpZmRlZiBVU0VfQVNTRVJUX0NIRUNLSU5HCisJLyogdmVyaWZ5IHRo ZSByZXN1bHRzIGxvb2sgc2FuZSAqLworCWkgPSAtMTsKKwl3aGlsZSAoKGkgPSBibXNfbmV4dF9t ZW1iZXIocmVsX2VkaXMsIGkpKSA+PSAwKQorCXsKKwkJUmVzdHJpY3RJbmZvICpyaW5mbyA9IGxp c3RfbnRoX25vZGUoUmVzdHJpY3RJbmZvLCByb290LT5lcV9kZXJpdmVzLAorCQkJCQkJCQkJCQlp KTsKKworCQlBc3NlcnQoYm1zX292ZXJsYXAocmVsaWRzLCByaW5mby0+Y2xhdXNlX3JlbGlkcykp OworCX0KKyNlbmRpZgorCisJLyogYml0d2lzZS1BTkQgdG8gbGVhdmUgb25seSB0aGUgb25lcyBm b3IgdGhpcyBFcXVpdmFsZW5jZUNsYXNzICovCisJcmV0dXJuIGJtc19pbnRfbWVtYmVycyhyZWxf ZWRpcywgZWMtPmVjX2Rlcml2ZV9pbmRleGVzKTsKK30KKworLyoKKyAqIGdldF9lY19kZXJpdmVf aW5kZXhlc19zdHJpY3QKKyAqCQlSZXR1cm5zIGEgQml0bWFwc2V0IHdpdGggaW5kZXhlcyBpbnRv IHJvb3QtPmVxX2Rlcml2ZXMgZm9yIGFsbAorICoJCVJlc3RyaWN0SW5mb3MgaW4gJ2VjJyB0aGF0 IGhhdmUKKyAqCQlibXNfaXNfc3Vic2V0KHJlbGlkcywgcmluZm8tPmNsYXVzZV9yZWxpZHMpIGFz IHRydWUuCisgKgorICogUmV0dXJucyBhIG5ld2x5IGFsbG9jYXRlZCBCaXRtYXBzZXQgd2hpY2gg dGhlIGNhbGxlciBpcyBmcmVlIHRvIG1vZGlmeS4KKyAqLworQml0bWFwc2V0ICoKK2dldF9lY19k ZXJpdmVfaW5kZXhlc19zdHJpY3QoUGxhbm5lckluZm8gKnJvb3QsIEVxdWl2YWxlbmNlQ2xhc3Mg KmVjLAorCQkJCQkJCSBSZWxpZHMgcmVsaWRzKQoreworCUJpdG1hcHNldCAgKmVkaXMgPSBOVUxM OworCWludAkJCWkgPSBibXNfbmV4dF9tZW1iZXIocmVsaWRzLCAtMSk7CisKKwlpZiAoaSA+PSAw KQorCXsKKwkJUmFuZ2VUYmxFbnRyeSAqcnRlID0gcm9vdC0+c2ltcGxlX3J0ZV9hcnJheVtpXTsK KworCQkvKgorCQkgKiBibXNfaW50ZXJzZWN0IHRvIHRoZSBmaXJzdCByZWxhdGlvbiB0byB0cnkg dG8ga2VlcCB0aGUgcmVzdWx0aW5nCisJCSAqIEJpdG1hcHNldCBhcyBzbWFsbCBhcyBwb3NzaWJs ZS4gIFRoaXMgc2F2ZXMgaGF2aW5nIHRvIG1ha2UgYQorCQkgKiBjb21wbGV0ZSBibXNfY29weSgp IG9mIG9uZSBvZiB0aGVtLiAgT25lIG1heSBjb250YWluIHNpZ25pZmljYW50bHkKKwkJICogbW9y ZSB3b3JkcyB0aGFuIHRoZSBvdGhlci4KKwkJICovCisJCWVkaXMgPSBibXNfaW50ZXJzZWN0KGVj LT5lY19kZXJpdmVfaW5kZXhlcywKKwkJCQkJCQkgcnRlLT5lY2xhc3NfZGVyaXZlX2luZGV4ZXMp OworCisJCXdoaWxlICgoaSA9IGJtc19uZXh0X21lbWJlcihyZWxpZHMsIGkpKSA+PSAwKQorCQl7 CisJCQlydGUgPSByb290LT5zaW1wbGVfcnRlX2FycmF5W2ldOworCQkJZWRpcyA9IGJtc19pbnRf bWVtYmVycyhlZGlzLCBydGUtPmVjbGFzc19kZXJpdmVfaW5kZXhlcyk7CisJCX0KKwl9CisKKyNp ZmRlZiBVU0VfQVNTRVJUX0NIRUNLSU5HCisJLyogdmVyaWZ5IHRoZSByZXN1bHRzIGxvb2sgc2Fu ZSAqLworCWkgPSAtMTsKKwl3aGlsZSAoKGkgPSBibXNfbmV4dF9tZW1iZXIoZWRpcywgaSkpID49 IDApCisJeworCQlSZXN0cmljdEluZm8gKnJpbmZvID0gbGlzdF9udGhfbm9kZShSZXN0cmljdElu Zm8sIHJvb3QtPmVxX2Rlcml2ZXMsCisJCQkJCQkJCQkJCWkpOworCisJCUFzc2VydChibXNfaXNf c3Vic2V0KHJlbGlkcywgcmluZm8tPmNsYXVzZV9yZWxpZHMpKTsKKwl9CisjZW5kaWYKKworCXJl dHVybiBlZGlzOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vYW5h bHl6ZWpvaW5zLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9hbmFseXplam9pbnMuYwpp bmRleCBmMDczNWYzYzQxLi4zODMyOGQ5NDVhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRp bWl6ZXIvcGxhbi9hbmFseXplam9pbnMuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxh bi9hbmFseXplam9pbnMuYwpAQCAtNjY5LDYgKzY2OSw3IEBAIHJlbW92ZV9yZWxfZnJvbV9lY2xh c3MoUGxhbm5lckluZm8gKnJvb3QsIEVxdWl2YWxlbmNlQ2xhc3MgKmVjLCBpbnQgcmVsaWQsCiAJ CQkJCSAgIGludCBvanJlbGlkKQogewogCUxpc3RDZWxsICAgKmxjOworCWludAkJCWk7CiAKIAkv KiBGaXggdXAgdGhlIEVDJ3Mgb3ZlcmFsbCByZWxpZHMgKi8KIAllYy0+ZWNfcmVsaWRzID0gYm1z X2RlbF9tZW1iZXIoZWMtPmVjX3JlbGlkcywgcmVsaWQpOwpAQCAtNzAyLDkgKzcwMywxMCBAQCBy ZW1vdmVfcmVsX2Zyb21fZWNsYXNzKFBsYW5uZXJJbmZvICpyb290LCBFcXVpdmFsZW5jZUNsYXNz ICplYywgaW50IHJlbGlkLAogCX0KIAogCS8qIEZpeCB1cCB0aGUgc291cmNlIGNsYXVzZXMsIGlu IGNhc2Ugd2UgY2FuIHJlLXVzZSB0aGVtIGxhdGVyICovCi0JZm9yZWFjaChsYywgZWMtPmVjX3Nv dXJjZXMpCisJaSA9IC0xOworCXdoaWxlICgoaSA9IGJtc19uZXh0X21lbWJlcihlYy0+ZWNfc291 cmNlX2luZGV4ZXMsIGkpKSA+PSAwKQogCXsKLQkJUmVzdHJpY3RJbmZvICpyaW5mbyA9IChSZXN0 cmljdEluZm8gKikgbGZpcnN0KGxjKTsKKwkJUmVzdHJpY3RJbmZvICpyaW5mbyA9IGxpc3RfbnRo X25vZGUoUmVzdHJpY3RJbmZvLCByb290LT5lcV9zb3VyY2VzLCBpKTsKIAogCQlyZW1vdmVfcmVs X2Zyb21fcmVzdHJpY3RpbmZvKHJpbmZvLCByZWxpZCwgb2pyZWxpZCk7CiAJfQpAQCAtNzE0LDcg KzcxNiw3IEBAIHJlbW92ZV9yZWxfZnJvbV9lY2xhc3MoUGxhbm5lckluZm8gKnJvb3QsIEVxdWl2 YWxlbmNlQ2xhc3MgKmVjLCBpbnQgcmVsaWQsCiAJICogZHJvcCB0aGVtLiAgKEF0IHRoaXMgcG9p bnQsIGFueSBzdWNoIGNsYXVzZXMgd291bGQgYmUgYmFzZSByZXN0cmljdGlvbgogCSAqIGNsYXVz ZXMsIHdoaWNoIHdlJ2Qgbm90IG5lZWQgYW55bW9yZSBhbnl3YXkuKQogCSAqLwotCWVjLT5lY19k ZXJpdmVzID0gTklMOworCWVjLT5lY19kZXJpdmVfaW5kZXhlcyA9IE5VTEw7CiB9CiAKIC8qCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMgYi9zcmMvYmFj a2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMKaW5kZXggNjY3NzIzYjY3NS4uOTQyMDI1OWU0 YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCisrKyBi L3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYwpAQCAtNjQ2LDYgKzY0Niw4IEBA IHN1YnF1ZXJ5X3BsYW5uZXIoUGxhbm5lckdsb2JhbCAqZ2xvYiwgUXVlcnkgKnBhcnNlLAogCXJv b3QtPm11bHRpZXhwcl9wYXJhbXMgPSBOSUw7CiAJcm9vdC0+am9pbl9kb21haW5zID0gTklMOwog CXJvb3QtPmVxX2NsYXNzZXMgPSBOSUw7CisJcm9vdC0+ZXFfc291cmNlcyA9IE5JTDsKKwlyb290 LT5lcV9kZXJpdmVzID0gTklMOwogCXJvb3QtPmVjX21lcmdpbmdfZG9uZSA9IGZhbHNlOwogCXJv b3QtPmxhc3RfcmluZm9fc2VyaWFsID0gMDsKIAlyb290LT5hbGxfcmVzdWx0X3JlbGlkcyA9CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcHJlcC9wcmVwam9pbnRyZWUuYyBiL3Ny Yy9iYWNrZW5kL29wdGltaXplci9wcmVwL3ByZXBqb2ludHJlZS5jCmluZGV4IGFhODNkZDM2MzYu LjlmYzBiNjk1ODAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wcmVwL3ByZXBq b2ludHJlZS5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wcmVwL3ByZXBqb2ludHJlZS5j CkBAIC05OTMsNiArOTkzLDggQEAgcHVsbF91cF9zaW1wbGVfc3VicXVlcnkoUGxhbm5lckluZm8g KnJvb3QsIE5vZGUgKmp0bm9kZSwgUmFuZ2VUYmxFbnRyeSAqcnRlLAogCXN1YnJvb3QtPm11bHRp ZXhwcl9wYXJhbXMgPSBOSUw7CiAJc3Vicm9vdC0+am9pbl9kb21haW5zID0gTklMOwogCXN1YnJv b3QtPmVxX2NsYXNzZXMgPSBOSUw7CisJc3Vicm9vdC0+ZXFfc291cmNlcyA9IE5JTDsKKwlzdWJy b290LT5lcV9kZXJpdmVzID0gTklMOwogCXN1YnJvb3QtPmVjX21lcmdpbmdfZG9uZSA9IGZhbHNl OwogCXN1YnJvb3QtPmxhc3RfcmluZm9fc2VyaWFsID0gMDsKIAlzdWJyb290LT5hbGxfcmVzdWx0 X3JlbGlkcyA9IE5VTEw7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9p bmhlcml0LmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9pbmhlcml0LmMKaW5kZXggMzUw MWZiYmVlZC4uYTY1YTc2YWNlOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0 aWwvaW5oZXJpdC5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL2luaGVyaXQuYwpA QCAtNDgzLDYgKzQ4MywxMyBAQCBleHBhbmRfc2luZ2xlX2luaGVyaXRhbmNlX2NoaWxkKFBsYW5u ZXJJbmZvICpyb290LCBSYW5nZVRibEVudHJ5ICpwYXJlbnRydGUsCiAJICovCiAJY2hpbGRydGUg PSBtYWtlTm9kZShSYW5nZVRibEVudHJ5KTsKIAltZW1jcHkoY2hpbGRydGUsIHBhcmVudHJ0ZSwg c2l6ZW9mKFJhbmdlVGJsRW50cnkpKTsKKwkvKgorCSAqIFdlIGRvIG5vdCB3YW50IHRvIGluaGVy aXQgdGhlIEVxdWl2YWxlbmNlTWVtYmVyIGluZGV4ZXMgb2YgdGhlIHBhcmVudAorCSAqIHRvIGl0 cyBjaGlsZAorCSAqLworCWNoaWxkcnRlLT5lY2xhc3Nfc291cmNlX2luZGV4ZXMgPSBOVUxMOwor CWNoaWxkcnRlLT5lY2xhc3NfZGVyaXZlX2luZGV4ZXMgPSBOVUxMOworCiAJQXNzZXJ0KHBhcmVu dHJ0ZS0+cnRla2luZCA9PSBSVEVfUkVMQVRJT04pOyAvKiBlbHNlIHRoaXMgaXMgZHViaW91cyAq LwogCWNoaWxkcnRlLT5yZWxpZCA9IGNoaWxkT0lEOwogCWNoaWxkcnRlLT5yZWxraW5kID0gY2hp bGRyZWwtPnJkX3JlbC0+cmVsa2luZDsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3Bh cnNlbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAppbmRleCBiMzE4MWYz NGFlLi5kMzY1YmI1YzcyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVz LmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCkBAIC0xMTk0LDYgKzExOTQs MTIgQEAgdHlwZWRlZiBzdHJ1Y3QgUmFuZ2VUYmxFbnRyeQogCWJvb2wJCWluaDsJCQkvKiBpbmhl cml0YW5jZSByZXF1ZXN0ZWQ/ICovCiAJYm9vbAkJaW5Gcm9tQ2w7CQkvKiBwcmVzZW50IGluIEZS T00gY2xhdXNlPyAqLwogCUxpc3QJICAgKnNlY3VyaXR5UXVhbHM7CS8qIHNlY3VyaXR5IGJhcnJp ZXIgcXVhbHMgdG8gYXBwbHksIGlmIGFueSAqLworCUJpdG1hcHNldCAgKmVjbGFzc19zb3VyY2Vf aW5kZXhlczsJLyogSW5kZXhlcyBpbiBQbGFubmVySW5mbydzIGVxX3NvdXJjZXMKKwkJCQkJCQkJ CQkgKiBsaXN0IGZvciBSZXN0cmljdEluZm9zIHRoYXQgbWVudGlvbgorCQkJCQkJCQkJCSAqIHRo aXMgcmVsYXRpb24gKi8KKwlCaXRtYXBzZXQgICplY2xhc3NfZGVyaXZlX2luZGV4ZXM7CS8qIElu ZGV4ZXMgaW4gUGxhbm5lckluZm8ncyBlcV9kZXJpdmVzCisJCQkJCQkJCQkJICogbGlzdCBmb3Ig UmVzdHJpY3RJbmZvcyB0aGF0IG1lbnRpb24KKwkJCQkJCQkJCQkgKiB0aGlzIHJlbGF0aW9uICov CiB9IFJhbmdlVGJsRW50cnk7CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9w YXRobm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oCmluZGV4IDhjNTVhMmJj ZjAuLjFjNWQ3YmMwYzEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5o CisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oCkBAIC0zMTgsNiArMzE4LDEyIEBA IHN0cnVjdCBQbGFubmVySW5mbwogCS8qIGxpc3Qgb2YgYWN0aXZlIEVxdWl2YWxlbmNlQ2xhc3Nl cyAqLwogCUxpc3QJICAgKmVxX2NsYXNzZXM7CiAKKwkvKiBsaXN0IG9mIHNvdXJjZSBSZXN0cmlj dEluZm9zIHVzZWQgdG8gYnVpbGQgRXF1aXZhbGVuY2VDbGFzc2VzICovCisJTGlzdAkgICAqZXFf c291cmNlczsKKworCS8qIGxpc3Qgb2YgUmVzdHJpY3RJbmZvcyBkZXJpdmVkIGZyb20gRXF1aXZh bGVuY2VDbGFzc2VzICovCisJTGlzdAkgICAqZXFfZGVyaXZlczsKKwogCS8qIHNldCB0cnVlIG9u Y2UgRUNzIGFyZSBjYW5vbmljYWwgKi8KIAlib29sCQllY19tZXJnaW5nX2RvbmU7CiAKQEAgLTEz NjksNiArMTM3NSw0MSBAQCB0eXBlZGVmIHN0cnVjdCBKb2luRG9tYWluCiAgKiBlbnRyeTogY29u c2lkZXIgU0VMRUNUIHJhbmRvbSgpIEFTIGEsIHJhbmRvbSgpIEFTIGIgLi4uIE9SREVSIEJZIGIs YS4KICAqIFNvIHdlIHJlY29yZCB0aGUgU29ydEdyb3VwUmVmIG9mIHRoZSBvcmlnaW5hdGluZyBz b3J0IGNsYXVzZS4KICAqCisgKiBUT0RPOiBXZSBzaG91bGQgdXBkYXRlIHRoZSBmb2xsb3dpbmcg Y29tbWVudHMuCisgKgorICogQXQgdmFyaW91cyBsb2NhdGlvbnMgaW4gdGhlIHF1ZXJ5IHBsYW5u ZXIsIHdlIG11c3Qgc2VhcmNoIGZvcgorICogRXF1aXZhbGVuY2VNZW1iZXJzIHdpdGhpbiBhIGdp dmVuIEVxdWl2YWxlbmNlQ2xhc3MuICBGb3IgdGhlIGNvbW1vbiBjYXNlLAorICogYW4gRXF1aXZh bGVuY2VDbGFzcyBkb2VzIG5vdCBoYXZlIGEgbGFyZ2UgbnVtYmVyIG9mIEVxdWl2YWxlbmNlTWVt YmVycywKKyAqIGhvd2V2ZXIsIGluIGNhc2VzIHN1Y2ggYXMgcGxhbm5pbmcgcXVlcmllcyB0byBw YXJ0aXRpb25lZCB0YWJsZXMsIHRoZSBudW1iZXIKKyAqIG9mIG1lbWJlcnMgY2FuIGJlY29tZSBs YXJnZS4gIFRvIG1haW50YWluIHBsYW5uaW5nIHBlcmZvcm1hbmNlLCB3ZSBtYWtlIHVzZQorICog b2YgYSBiaXRtYXAgaW5kZXggdG8gYWxsb3cgdXMgdG8gcXVpY2tseSBmaW5kIEVxdWl2YWxlbmNl TWVtYmVycyBpbiBhIGdpdmVuCisgKiBFcXVpdmFsZW5jZUNsYXNzIGJlbG9uZ2luZyB0byBhIGdp dmVuIHJlbGF0aW9uIG9yIHNldCBvZiByZWxhdGlvbnMuICBUaGlzCisgKiBpcyBkb25lIGJ5IHN0 b3JpbmcgYSBsaXN0IG9mIEVxdWl2YWxlbmNlTWVtYmVycyBiZWxvbmdpbmcgdG8gYWxsCisgKiBF cXVpdmFsZW5jZUNsYXNzZXMgaW4gUGxhbm5lckluZm8gYW5kIHN0b3JpbmcgYSBCaXRtYXBzZXQg Zm9yIGVhY2gKKyAqIFJlbE9wdEluZm8gd2hpY2ggaGFzIGEgYml0IHNldCBmb3IgZWFjaCBFcXVp dmFsZW5jZU1lbWJlciBpbiB0aGF0IGxpc3QKKyAqIHdoaWNoIHJlbGF0ZXMgdG8gdGhlIGdpdmVu IHJlbGF0aW9uLiAgV2UgYWxzbyBzdG9yZSBhIEJpdG1hcHNldCB0byBtYXJrIGFsbAorICogb2Yg dGhlIGluZGV4ZXMgaW4gdGhlIFBsYW5uZXJJbmZvJ3MgbGlzdCBvZiBFcXVpdmFsZW5jZU1lbWJl cnMgaW4gdGhlCisgKiBFcXVpdmFsZW5jZUNsYXNzLiAgV2UgY2FuIHF1aWNrbHkgZmluZCB0aGUg aW50ZXJlc3RpbmcgaW5kZXhlcyBpbnRvIHRoZQorICogUGxhbm5lckluZm8ncyBsaXN0IGJ5IHBl cmZvcm1pbmcgYSBiaXQtd2lzZSBBTkQgb24gdGhlIFJlbE9wdEluZm8ncworICogQml0bWFwc2V0 IGFuZCB0aGUgRXF1aXZhbGVuY2VDbGFzc2VzLgorICoKKyAqIFRvIGZ1cnRoZXIgc3BlZWQgdXAg dGhlIGxvb2t1cCBvZiBFcXVpdmFsZW5jZU1lbWJlcnMgd2UgYWxzbyByZWNvcmQgdGhlCisgKiBu b24tY2hpbGQgaW5kZXhlcy4gIFRoaXMgYWxsb3dzIHVzIHRvIGRlYWwgd2l0aCBmZXdlciBiaXRz IGZvciBzZWFyY2hlcworICogdGhhdCBkb24ndCByZXF1aXJlICJpc19jaGlsZCIgRXF1aXZhbGVu Y2VNZW1iZXJzLiAgV2UgbXVzdCBhbHNvIHN0b3JlIHRoZQorICogaW5kZXhlcyBpbnRvIEVxdWl2 YWxlbmNlTWVtYmVycyB3aGljaCBoYXZlIG5vIHJlbGlkcyBtZW50aW9uZWQgYXMgc29tZQorICog c2VhcmNoZXMgcmVxdWlyZSB0aGF0LgorICoKKyAqIEFkZGl0aW9uYWxseSwgd2UgYWxzbyBzdG9y ZSB0aGUgRXF1aXZhbGVuY2VNZW1iZXJzIG9mIGEgZ2l2ZW4KKyAqIEVxdWl2YWxlbmNlQ2xhc3Mg aW4gdGhlIGVjX21lbWJlcnMgbGlzdC4gIFRlY2huaWNhbGx5LCB3ZSBjb3VsZCBvYnRhaW4gdGhp cworICogZnJvbSBsb29raW5nIGF0IHRoZSBiaXRzIGluIGVjX21lbWJlcl9pbmRleGVzLCBob3dl dmVyLCBmaW5kaW5nIGFsbCBtZW1iZXJzCisgKiBvZiBhIGdpdmVuIEVxdWl2YWxlbmNlQ2xhc3Mg aXMgY29tbW9uIGVub3VnaCB0aGF0IGl0IHBheXMgdG8gaGF2ZSBmYXN0CisgKiBhY2Nlc3MgdG8g YSBkZW5zZSBsaXN0IGNvbnRhaW5pbmcgYWxsIG1lbWJlcnMuCisgKgorICogVGhlIHNvdXJjZSBh bmQgZGVyaXZlZCBSZXN0cmljdEluZm9zIGFyZSBpbmRleGVkIGluIGEgc2ltaWxhciBtZXRob2Qs CisgKiBhbHRob3VnaCB3ZSBkb24ndCBtYWludGFpbiBhIExpc3QgaW4gdGhlIEVxdWl2YWxlbmNl Q2xhc3MgZm9yIHRoZXNlLiAgVGhlc2UKKyAqIG11c3QgYmUgbG9va2VkIHVwIGluIFBsYW5uZXJJ bmZvIHVzaW5nIHRoZSBlY19zb3VyY2VfaW5kZXhlcyBhbmQKKyAqIGVjX2Rlcml2ZV9pbmRleGVz IEJpdG1hcHNldHMuCisgKgogICogTkI6IGlmIGVjX21lcmdlZCBpc24ndCBOVUxMLCB0aGlzIGNs YXNzIGhhcyBiZWVuIG1lcmdlZCBpbnRvIGFub3RoZXIsIGFuZAogICogc2hvdWxkIGJlIGlnbm9y ZWQgaW4gZmF2b3Igb2YgdXNpbmcgdGhlIHBvaW50ZWQtdG8gY2xhc3MuCiAgKgpAQCAtMTM5MSw4 ICsxNDMyLDEwIEBAIHR5cGVkZWYgc3RydWN0IEVxdWl2YWxlbmNlQ2xhc3MKIAkJCQkJCQkJCSAq IGVtX3JlbGlkcyBpcyBlbXB0eSAqLwogCUxpc3QJICAgKmVjX3JlbF9tZW1iZXJzOwkvKiBsaXN0 IG9mIEVxdWl2YWxlbmNlTWVtYmVycyB3aG9zZQogCQkJCQkJCQkgKiBlbV9yZWxpZHMgaXMgbm90 IGVtcHR5ICovCi0JTGlzdAkgICAqZWNfc291cmNlczsJCS8qIGxpc3Qgb2YgZ2VuZXJhdGluZyBS ZXN0cmljdEluZm9zICovCi0JTGlzdAkgICAqZWNfZGVyaXZlczsJCS8qIGxpc3Qgb2YgZGVyaXZl ZCBSZXN0cmljdEluZm9zICovCisJQml0bWFwc2V0ICAqZWNfc291cmNlX2luZGV4ZXM7CS8qIGlu ZGV4ZXMgaW50byBQbGFubmVySW5mbydzIGVxX3NvdXJjZXMKKwkJCQkJCQkJCSAqIGxpc3Qgb2Yg Z2VuZXJhdGluZyBSZXN0cmljdEluZm9zICovCisJQml0bWFwc2V0ICAqZWNfZGVyaXZlX2luZGV4 ZXM7CS8qIGluZGV4ZXMgaW50byBQbGFubmVySW5mbydzIGVxX2Rlcml2ZXMKKwkJCQkJCQkJCSAq IGxpc3Qgb2YgZGVyaXZlZCBSZXN0cmljdEluZm9zICovCiAJUmVsaWRzCQllY19yZWxpZHM7CQkv KiBhbGwgcmVsaWRzIGFwcGVhcmluZyBpbiBlY19tZW1iZXJzLCBleGNlcHQKIAkJCQkJCQkJICog Zm9yIGNoaWxkIG1lbWJlcnMgKHNlZSBiZWxvdykgKi8KIAlib29sCQllY19oYXNfY29uc3Q7CS8q IGFueSBwc2V1ZG9jb25zdGFudHMgaW4gZWNfbWVtYmVycz8gKi8KZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL29wdGltaXplci9wYXRocy5oIGIvc3JjL2luY2x1ZGUvb3B0aW1pemVyL3BhdGhzLmgK aW5kZXggOWJjMGMzNmI5My4uZDA3MWY2ZDBmYyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvb3B0 aW1pemVyL3BhdGhzLmgKKysrIGIvc3JjL2luY2x1ZGUvb3B0aW1pemVyL3BhdGhzLmgKQEAgLTE2 Myw3ICsxNjMsOCBAQCBleHRlcm4gYm9vbCBleHByc19rbm93bl9lcXVhbChQbGFubmVySW5mbyAq cm9vdCwgTm9kZSAqaXRlbTEsIE5vZGUgKml0ZW0yKTsKIGV4dGVybiBFcXVpdmFsZW5jZUNsYXNz ICptYXRjaF9lY2xhc3Nlc190b19mb3JlaWduX2tleV9jb2woUGxhbm5lckluZm8gKnJvb3QsCiAJ CQkJCQkJCQkJCQkJCSAgIEZvcmVpZ25LZXlPcHRJbmZvICpma2luZm8sCiAJCQkJCQkJCQkJCQkJ CSAgIGludCBjb2xubyk7Ci1leHRlcm4gUmVzdHJpY3RJbmZvICpmaW5kX2Rlcml2ZWRfY2xhdXNl X2Zvcl9lY19tZW1iZXIoRXF1aXZhbGVuY2VDbGFzcyAqZWMsCitleHRlcm4gUmVzdHJpY3RJbmZv ICpmaW5kX2Rlcml2ZWRfY2xhdXNlX2Zvcl9lY19tZW1iZXIoUGxhbm5lckluZm8gKnJvb3QsCisJ CQkJCQkJCQkJCQkJICAgRXF1aXZhbGVuY2VDbGFzcyAqZWMsCiAJCQkJCQkJCQkJCQkJICAgRXF1 aXZhbGVuY2VNZW1iZXIgKmVtKTsKIGV4dGVybiB2b2lkIGFkZF9jaGlsZF9yZWxfZXF1aXZhbGVu Y2VzKFBsYW5uZXJJbmZvICpyb290LAogCQkJCQkJCQkJICAgQXBwZW5kUmVsSW5mbyAqYXBwaW5m bywKQEAgLTE5NSw2ICsxOTYsMTggQEAgZXh0ZXJuIGJvb2wgZWNsYXNzX3VzZWZ1bF9mb3JfbWVy Z2luZyhQbGFubmVySW5mbyAqcm9vdCwKIGV4dGVybiBib29sIGlzX3JlZHVuZGFudF9kZXJpdmVk X2NsYXVzZShSZXN0cmljdEluZm8gKnJpbmZvLCBMaXN0ICpjbGF1c2VsaXN0KTsKIGV4dGVybiBi b29sIGlzX3JlZHVuZGFudF93aXRoX2luZGV4Y2xhdXNlcyhSZXN0cmljdEluZm8gKnJpbmZvLAog CQkJCQkJCQkJCSAgIExpc3QgKmluZGV4Y2xhdXNlcyk7CitleHRlcm4gQml0bWFwc2V0ICpnZXRf ZWNfc291cmNlX2luZGV4ZXMoUGxhbm5lckluZm8gKnJvb3QsCisJCQkJCQkJCQkJRXF1aXZhbGVu Y2VDbGFzcyAqZWMsCisJCQkJCQkJCQkJUmVsaWRzIHJlbGlkcyk7CitleHRlcm4gQml0bWFwc2V0 ICpnZXRfZWNfc291cmNlX2luZGV4ZXNfc3RyaWN0KFBsYW5uZXJJbmZvICpyb290LAorCQkJCQkJ CQkJCQkgICBFcXVpdmFsZW5jZUNsYXNzICplYywKKwkJCQkJCQkJCQkJICAgUmVsaWRzIHJlbGlk cyk7CitleHRlcm4gQml0bWFwc2V0ICpnZXRfZWNfZGVyaXZlX2luZGV4ZXMoUGxhbm5lckluZm8g KnJvb3QsCisJCQkJCQkJCQkJRXF1aXZhbGVuY2VDbGFzcyAqZWMsCisJCQkJCQkJCQkJUmVsaWRz IHJlbGlkcyk7CitleHRlcm4gQml0bWFwc2V0ICpnZXRfZWNfZGVyaXZlX2luZGV4ZXNfc3RyaWN0 KFBsYW5uZXJJbmZvICpyb290LAorCQkJCQkJCQkJCQkgICBFcXVpdmFsZW5jZUNsYXNzICplYywK KwkJCQkJCQkJCQkJICAgUmVsaWRzIHJlbGlkcyk7CiAKIC8qCiAgKiBwYXRoa2V5cy5jCi0tIAoy LjQyLjAud2luZG93cy4yCgo= --0000000000007e2747060f20f334 Content-Type: application/octet-stream; name="v23-0003-Solve-conflict-with-self-join-removal.patch" Content-Disposition: attachment; filename="v23-0003-Solve-conflict-with-self-join-removal.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lrhk16m12 RnJvbSBjNzUyNTI0MWU0ZDNjMWFkYWMzMzI4NDIwYTYxYWRhNWFhNzk5MTA3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBZdXlhIFdhdGFyaSA8d2F0YXJpLnl1eWFAZ21haWwuY29tPgpE YXRlOiBNb24sIDExIERlYyAyMDIzIDEyOjE5OjU1ICswOTAwClN1YmplY3Q6IFtQQVRDSCB2MjMg My82XSBTb2x2ZSBjb25mbGljdCB3aXRoIHNlbGYgam9pbiByZW1vdmFsCgpXcml0dGVuIGJ5IEFs ZW5hIFJ5YmFraW5hIDxsZW5hLnJpYmFja2luYUB5YW5kZXgucnU+IFsxXSB3aXRoCm1vZGlmaWNh dGlvbnMgYnkgbWUuCgpbMV0gaHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvbWVzc2FnZS1pZC83 MmQyOTJhMS0wNmZmLTQzMmEtYTgwMy1hZjUwNTM3ODY0NDQlNDB5YW5kZXgucnUKLS0tCiBzcmMv YmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9hbmFseXplam9pbnMuYyB8IDQ5ICsrKysrKysrKysrKysr KystLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMzUgaW5zZXJ0aW9ucygrKSwgMTQgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vYW5hbHl6ZWpvaW5z LmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9hbmFseXplam9pbnMuYwppbmRleCAzODMy OGQ5NDVhLi40OWYzYzE3MDU3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxh bi9hbmFseXplam9pbnMuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9hbmFseXpl am9pbnMuYwpAQCAtMTU4OSwxMCArMTU4OSwxMiBAQCByZXBsYWNlX3JlbGlkKFJlbGlkcyByZWxp ZHMsIGludCBvbGRJZCwgaW50IG5ld0lkKQogICogZGVsZXRlIHRoZW0uCiAgKi8KIHN0YXRpYyB2 b2lkCi11cGRhdGVfZWNsYXNzZXMoRXF1aXZhbGVuY2VDbGFzcyAqZWMsIGludCBmcm9tLCBpbnQg dG8pCit1cGRhdGVfZWNsYXNzZXMoUGxhbm5lckluZm8gKnJvb3QsIEVxdWl2YWxlbmNlQ2xhc3Mg KmVjLCBpbnQgZnJvbSwgaW50IHRvKQogewogCUxpc3QJICAgKm5ld19tZW1iZXJzID0gTklMOwot CUxpc3QJICAgKm5ld19zb3VyY2VzID0gTklMOworCUJpdG1hcHNldCAgKm5ld19zb3VyY2VfaW5k ZXhlcyA9IE5VTEw7CisJaW50CQkJaTsKKwlpbnQJCQlqOwogCUxpc3RDZWxsICAgKmxjOwogCUxp c3RDZWxsICAgKmxjMTsKIApAQCAtMTYzNCwxOCArMTYzNiwyOCBAQCB1cGRhdGVfZWNsYXNzZXMo RXF1aXZhbGVuY2VDbGFzcyAqZWMsIGludCBmcm9tLCBpbnQgdG8pCiAJbGlzdF9mcmVlKGVjLT5l Y19tZW1iZXJzKTsKIAllYy0+ZWNfbWVtYmVycyA9IG5ld19tZW1iZXJzOwogCi0JbGlzdF9mcmVl KGVjLT5lY19kZXJpdmVzKTsKLQllYy0+ZWNfZGVyaXZlcyA9IE5VTEw7CisJaSA9IC0xOworCXdo aWxlICgoaSA9IGJtc19uZXh0X21lbWJlcihlYy0+ZWNfZGVyaXZlX2luZGV4ZXMsIGkpKSA+PSAw KQorCXsKKwkJLyoKKwkJICogQ2FuJ3QgZGVsZXRlIHRoZSBlbGVtZW50IGJlY2F1c2Ugd2Ugd291 bGQgbmVlZCB0byByZWJ1aWxkIGFsbAorCQkgKiB0aGUgZXFfZGVyaXZlcyBpbmRleGVzLiBCdXQg c2V0IGEgbnVrZSB0byBkZXRlY3QgcG90ZW50aWFsIHByb2JsZW1zLgorCQkgKi8KKwkJbGlzdF9u dGhfY2VsbChyb290LT5lcV9kZXJpdmVzLCBpKS0+cHRyX3ZhbHVlID0gTlVMTDsKKwl9CisJYm1z X2ZyZWUoZWMtPmVjX2Rlcml2ZV9pbmRleGVzKTsKKwllYy0+ZWNfZGVyaXZlX2luZGV4ZXMgPSBO VUxMOwogCiAJLyogVXBkYXRlIEVDIHNvdXJjZSBleHByZXNzaW9ucyAqLwotCWZvcmVhY2gobGMs IGVjLT5lY19zb3VyY2VzKQorCWkgPSAtMTsKKwl3aGlsZSAoKGkgPSBibXNfbmV4dF9tZW1iZXIo ZWMtPmVjX3NvdXJjZV9pbmRleGVzLCBpKSkgPj0gMCkKIAl7Ci0JCVJlc3RyaWN0SW5mbyAqcmlu Zm8gPSBsZmlyc3Rfbm9kZShSZXN0cmljdEluZm8sIGxjKTsKKwkJUmVzdHJpY3RJbmZvICpyaW5m byA9IGxpc3RfbnRoX25vZGUoUmVzdHJpY3RJbmZvLCByb290LT5lcV9zb3VyY2VzLCBpKTsKIAkJ Ym9vbAkJaXNfcmVkdW5kYW50ID0gZmFsc2U7CiAKIAkJaWYgKCFibXNfaXNfbWVtYmVyKGZyb20s IHJpbmZvLT5yZXF1aXJlZF9yZWxpZHMpKQogCQl7Ci0JCQluZXdfc291cmNlcyA9IGxhcHBlbmQo bmV3X3NvdXJjZXMsIHJpbmZvKTsKKwkJCW5ld19zb3VyY2VfaW5kZXhlcyA9IGJtc19hZGRfbWVt YmVyKG5ld19zb3VyY2VfaW5kZXhlcywgaSk7CiAJCQljb250aW51ZTsKIAkJfQogCkBAIC0xNjU2 LDkgKzE2NjgsMTAgQEAgdXBkYXRlX2VjbGFzc2VzKEVxdWl2YWxlbmNlQ2xhc3MgKmVjLCBpbnQg ZnJvbSwgaW50IHRvKQogCQkgKiByZWR1bmRhbmN5IHdpdGggZXhpc3Rpbmcgb25lcy4gV2UgZG9u J3QgaGF2ZSB0byBjaGVjayBmb3IKIAkJICogcmVkdW5kYW5jeSB3aXRoIGRlcml2ZWQgY2xhdXNl cywgYmVjYXVzZSB3ZSd2ZSBqdXN0IGRlbGV0ZWQgdGhlbS4KIAkJICovCi0JCWZvcmVhY2gobGMx LCBuZXdfc291cmNlcykKKwkJaiA9IC0xOworCQl3aGlsZSAoKGogPSBibXNfbmV4dF9tZW1iZXIo bmV3X3NvdXJjZV9pbmRleGVzLCBqKSkgPj0gMCkKIAkJewotCQkJUmVzdHJpY3RJbmZvICpvdGhl ciA9IGxmaXJzdF9ub2RlKFJlc3RyaWN0SW5mbywgbGMxKTsKKwkJCVJlc3RyaWN0SW5mbyAqb3Ro ZXIgPSBsaXN0X250aF9ub2RlKFJlc3RyaWN0SW5mbywgcm9vdC0+ZXFfc291cmNlcywgaik7CiAK IAkJCWlmICghZXF1YWwocmluZm8tPmNsYXVzZV9yZWxpZHMsIG90aGVyLT5jbGF1c2VfcmVsaWRz KSkKIAkJCQljb250aW51ZTsKQEAgLTE2NzAsMTIgKzE2ODMsMjAgQEAgdXBkYXRlX2VjbGFzc2Vz KEVxdWl2YWxlbmNlQ2xhc3MgKmVjLCBpbnQgZnJvbSwgaW50IHRvKQogCQkJfQogCQl9CiAKLQkJ aWYgKCFpc19yZWR1bmRhbnQpCi0JCQluZXdfc291cmNlcyA9IGxhcHBlbmQobmV3X3NvdXJjZXMs IHJpbmZvKTsKKwkJaWYgKGlzX3JlZHVuZGFudCkKKwkJeworCQkJLyoKKwkJCSAqIENhbid0IGRl bGV0ZSB0aGUgZWxlbWVudCBiZWNhdXNlIHdlIHdvdWxkIG5lZWQgdG8gcmVidWlsZCBhbGwKKwkJ CSAqIHRoZSBlcV9zb3VyY2VzIGluZGV4ZXMuIEJ1dCBzZXQgYSBudWtlIHRvIGRldGVjdCBwb3Rl bnRpYWwgcHJvYmxlbXMuCisJCQkgKi8KKwkJCWxpc3RfbnRoX2NlbGwocm9vdC0+ZXFfc291cmNl cywgaSktPnB0cl92YWx1ZSA9IE5VTEw7CisJCX0KKwkJZWxzZQorCQkJbmV3X3NvdXJjZV9pbmRl eGVzID0gYm1zX2FkZF9tZW1iZXIobmV3X3NvdXJjZV9pbmRleGVzLCBpKTsKIAl9CiAKLQlsaXN0 X2ZyZWUoZWMtPmVjX3NvdXJjZXMpOwotCWVjLT5lY19zb3VyY2VzID0gbmV3X3NvdXJjZXM7CisJ Ym1zX2ZyZWUoZWMtPmVjX3NvdXJjZV9pbmRleGVzKTsKKwllYy0+ZWNfc291cmNlX2luZGV4ZXMg PSBuZXdfc291cmNlX2luZGV4ZXM7CiAJZWMtPmVjX3JlbGlkcyA9IHJlcGxhY2VfcmVsaWQoZWMt PmVjX3JlbGlkcywgZnJvbSwgdG8pOwogfQogCkBAIC0xODU1LDcgKzE4NzYsNyBAQCByZW1vdmVf c2VsZl9qb2luX3JlbChQbGFubmVySW5mbyAqcm9vdCwgUGxhblJvd01hcmsgKmttYXJrLCBQbGFu Um93TWFyayAqcm1hcmssCiAJewogCQlFcXVpdmFsZW5jZUNsYXNzICplYyA9IChFcXVpdmFsZW5j ZUNsYXNzICopIGxpc3RfbnRoKHJvb3QtPmVxX2NsYXNzZXMsIGkpOwogCi0JCXVwZGF0ZV9lY2xh c3NlcyhlYywgdG9SZW1vdmUtPnJlbGlkLCB0b0tlZXAtPnJlbGlkKTsKKwkJdXBkYXRlX2VjbGFz c2VzKHJvb3QsIGVjLCB0b1JlbW92ZS0+cmVsaWQsIHRvS2VlcC0+cmVsaWQpOwogCQl0b0tlZXAt PmVjbGFzc19pbmRleGVzID0gYm1zX2FkZF9tZW1iZXIodG9LZWVwLT5lY2xhc3NfaW5kZXhlcywg aSk7CiAJfQogCi0tIAoyLjQyLjAud2luZG93cy4yCgo= --0000000000007e2747060f20f334 Content-Type: application/octet-stream; name="v23-0004-Fix-a-bug-related-to-atomic-function.patch" Content-Disposition: attachment; filename="v23-0004-Fix-a-bug-related-to-atomic-function.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lrhk1ct93 RnJvbSA5MTQwNDU1MjY0NjlkODAxMGJlY2FhNGUzZWJlYmZmMjMxNjc2ODFhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBZdXlhIFdhdGFyaSA8d2F0YXJpLnl1eWFAZ21haWwuY29tPgpE YXRlOiBNb24sIDExIERlYyAyMDIzIDEyOjIwOjIwICswOTAwClN1YmplY3Q6IFtQQVRDSCB2MjMg NC82XSBGaXggYSBidWcgcmVsYXRlZCB0byBhdG9taWMgZnVuY3Rpb24KCkF1dGhvcjogQWxlbmEg UnliYWtpbmEgPGxlbmEucmliYWNraW5hQHlhbmRleC5ydT4KaHR0cHM6Ly93d3cucG9zdGdyZXNx bC5vcmcvbWVzc2FnZS1pZC83MmQyOTJhMS0wNmZmLTQzMmEtYTgwMy1hZjUwNTM3ODY0NDQlNDB5 YW5kZXgucnUKLS0tCiBzcmMvYmFja2VuZC9ub2Rlcy9yZWFkLmMgICAgICB8IDIwICsrKysrKysr KysrKysrKysrKysrCiBzcmMvYmFja2VuZC9ub2Rlcy9yZWFkZnVuY3MuYyB8IDI0ICsrKysrKysr KysrKysrKysrKysrKystLQogc3JjL2luY2x1ZGUvbm9kZXMvcmVhZGZ1bmNzLmggfCAgMiArKwog MyBmaWxlcyBjaGFuZ2VkLCA0NCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL3JlYWQuYyBiL3NyYy9iYWNrZW5kL25vZGVzL3JlYWQu YwppbmRleCA5NjlkMGVjMTk5Li4zOWM1YTM5ZmE3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9u b2Rlcy9yZWFkLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvcmVhZC5jCkBAIC01MTQsMyArNTE0 LDIzIEBAIG5vZGVSZWFkKGNvbnN0IGNoYXIgKnRva2VuLCBpbnQgdG9rX2xlbikKIAogCXJldHVy biAodm9pZCAqKSByZXN1bHQ7CiB9CisKKy8qCisgKiBwZ19zdHJ0b2tfc2F2ZV9jb250ZXh0IC0K KyAqCSAgU2F2ZSBjb250ZXh0IGluaXRpYWxpemVkIGJ5IHN0cmluZ1RvTm9kZS4KKyAqLwordm9p ZAorcGdfc3RydG9rX3NhdmVfY29udGV4dChjb25zdCBjaGFyICoqcGNvbnRleHQpCit7CisJKnBj b250ZXh0ID0gcGdfc3RydG9rX3B0cjsKK30KKworLyoKKyAqIHBnX3N0cnRva19yZXN0b3JlX2Nv bnRleHQgLQorICoJICBSZXNvcmUgc2F2ZWQgY29udGV4dC4KKyAqLwordm9pZAorcGdfc3RydG9r X3Jlc3RvcmVfY29udGV4dChjb25zdCBjaGFyICpjb250ZXh0KQoreworCXBnX3N0cnRva19wdHIg PSBjb250ZXh0OworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMvcmVhZGZ1bmNzLmMg Yi9zcmMvYmFja2VuZC9ub2Rlcy9yZWFkZnVuY3MuYwppbmRleCBkZWViZmFmOTk0Li4wYjcxMzgz OGRkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9yZWFkZnVuY3MuYworKysgYi9zcmMv YmFja2VuZC9ub2Rlcy9yZWFkZnVuY3MuYwpAQCAtMTkxLDYgKzE5MSwyNiBAQCBudWxsYWJsZV9z dHJpbmcoY29uc3QgY2hhciAqdG9rZW4sIGludCBsZW5ndGgpCiAJcmV0dXJuIGRlYmFja3NsYXNo KHRva2VuLCBsZW5ndGgpOwogfQogCisvKiBSZWFkIGFuIGVxdWl2YWxlbmNlIGZpZWxkIChhbnl0 aGluZyB3cml0dGVuIGFzICI6ZmxkbmFtZSAldSIpIGFuZCBjaGVjayBpdCAqLworI2RlZmluZSBS RUFEX0VRX0JJVE1BUFNFVF9GSUVMRF9DSEVDSyhmbGRuYW1lKSBcCit7IFwKKwlpbnQgc2F2ZV9s ZW5ndGggPSBsZW5ndGg7IFwKKwljb25zdCBjaGFyICpjb250ZXh0OyBcCisJcGdfc3RydG9rX3Nh dmVfY29udGV4dCgmY29udGV4dCk7IFwKKwl0b2tlbiA9IHBnX3N0cnRvaygmbGVuZ3RoKTsgXAor CWlmIChsZW5ndGggPiAwICYmIHN0cm5jbXAodG9rZW4sICI6IiNmbGRuYW1lLCBzdHJsZW4oIjoi I2ZsZG5hbWUpKSkgXAorCXsgXAorCQkvKiAiZmxkbmFtZSIgZmllbGQgd2FzIG5vdCBmb3VuZCAt IGZpbGwgaXQgYW5kIHJlc3RvcmUgY29udGV4dC4gKi8gXAorCQlsb2NhbF9ub2RlLT5mbGRuYW1l ID0gTlVMTDsgXAorCQlwZ19zdHJ0b2tfcmVzdG9yZV9jb250ZXh0KGNvbnRleHQpOyBcCisJCWxl bmd0aCA9IHNhdmVfbGVuZ3RoOyBcCisJfSBcCisJZWxzZSBcCisJeyBcCisJCWxvY2FsX25vZGUt PmZsZG5hbWUgPSBfcmVhZEJpdG1hcHNldCgpOyBcCisJfSBcCit9CisKIAogLyoKICAqIF9yZWFk Qml0bWFwc2V0CkBAIC01NzQsOCArNTk0LDggQEAgX3JlYWRSYW5nZVRibEVudHJ5KHZvaWQpCiAJ UkVBRF9CT09MX0ZJRUxEKGluaCk7CiAJUkVBRF9CT09MX0ZJRUxEKGluRnJvbUNsKTsKIAlSRUFE X05PREVfRklFTEQoc2VjdXJpdHlRdWFscyk7Ci0JUkVBRF9CSVRNQVBTRVRfRklFTEQoZWNsYXNz X3NvdXJjZV9pbmRleGVzKTsKLQlSRUFEX0JJVE1BUFNFVF9GSUVMRChlY2xhc3NfZGVyaXZlX2lu ZGV4ZXMpOworCVJFQURfRVFfQklUTUFQU0VUX0ZJRUxEX0NIRUNLKGVjbGFzc19zb3VyY2VfaW5k ZXhlcyk7CisJUkVBRF9FUV9CSVRNQVBTRVRfRklFTERfQ0hFQ0soZWNsYXNzX2Rlcml2ZV9pbmRl eGVzKTsKIAogCVJFQURfRE9ORSgpOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMv cmVhZGZ1bmNzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9yZWFkZnVuY3MuaAppbmRleCA4NDY2MDM4 ZWQwLi4wZGMyZWQ1MTEyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9yZWFkZnVuY3Mu aAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9yZWFkZnVuY3MuaApAQCAtMjksNiArMjksOCBAQCBl eHRlcm4gUEdETExJTVBPUlQgYm9vbCByZXN0b3JlX2xvY2F0aW9uX2ZpZWxkczsKIGV4dGVybiBj b25zdCBjaGFyICpwZ19zdHJ0b2soaW50ICpsZW5ndGgpOwogZXh0ZXJuIGNoYXIgKmRlYmFja3Ns YXNoKGNvbnN0IGNoYXIgKnRva2VuLCBpbnQgbGVuZ3RoKTsKIGV4dGVybiB2b2lkICpub2RlUmVh ZChjb25zdCBjaGFyICp0b2tlbiwgaW50IHRva19sZW4pOworZXh0ZXJuIHZvaWQgcGdfc3RydG9r X3NhdmVfY29udGV4dChjb25zdCBjaGFyICoqcGNvbnRleHQpOworZXh0ZXJuIHZvaWQgcGdfc3Ry dG9rX3Jlc3RvcmVfY29udGV4dChjb25zdCBjaGFyICpjb250ZXh0KTsKIAogLyoKICAqIHByb3Rv dHlwZXMgZm9yIGZ1bmN0aW9ucyBpbiByZWFkZnVuY3MuYwotLSAKMi40Mi4wLndpbmRvd3MuMgoK --0000000000007e2747060f20f334 Content-Type: application/octet-stream; name="v23-0005-Remove-all-references-between-RestrictInfo-and-i.patch" Content-Disposition: attachment; filename="v23-0005-Remove-all-references-between-RestrictInfo-and-i.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lrhk1ins4 RnJvbSAwYzYxYzQ0ZTY5M2UxMmNhOTE4YmRkMjRhYjI2NjQyM2IwNzU4Mzk1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBZdXlhIFdhdGFyaSA8d2F0YXJpLnl1eWFAZ21haWwuY29tPgpE YXRlOiBUaHUsIDExIEphbiAyMDI0IDE2OjE4OjM2ICswOTAwClN1YmplY3Q6IFtQQVRDSCB2MjMg NS82XSBSZW1vdmUgYWxsIHJlZmVyZW5jZXMgYmV0d2VlbiBSZXN0cmljdEluZm8gYW5kIGl0cwog cmVsYXRpbmcgUmFuZ2VUYmxFbnRyeQoKVGhpcyBjb21taXQgYWRkcyBjb2RlIHRvIGFkanVzdCBl Y2xhc3NfZGVyaXZlX2luZGV4ZXMgYW5kCmVjbGFzc19zb3VyY2VfaW5kZXhlcyBkdXJpbmcgc2Vs Zi1qb2luIGVsaW1pbmF0aW9uLgoKTm90ZSB0aGF0IHRoaXMgY29tbWl0IGZhaWxzIHNvbWUgcmVn cmVzc2lvbiB0ZXN0cy4gVGhlIGZhaWx1cmVzIHdpbGwgYmUKZml4ZWQgaW4gdGhlIG5leHQgY29t bWl0LiBTZWUgaXRzIGNvbW1pdCBtZXNzYWdlIGZvciBtb3JlIGRldGFpbHMuCi0tLQogc3JjL2Jh Y2tlbmQvb3B0aW1pemVyL3BsYW4vYW5hbHl6ZWpvaW5zLmMgfCAzNCArKysrKysrKysrKysrKysr KysrKystLQogMSBmaWxlIGNoYW5nZWQsIDMyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vYW5hbHl6ZWpvaW5zLmMg Yi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9hbmFseXplam9pbnMuYwppbmRleCA0OWYzYzE3 MDU3Li40MDgxODI3ZTNhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9h bmFseXplam9pbnMuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9hbmFseXplam9p bnMuYwpAQCAtMTYzOSw5ICsxNjM5LDI1IEBAIHVwZGF0ZV9lY2xhc3NlcyhQbGFubmVySW5mbyAq cm9vdCwgRXF1aXZhbGVuY2VDbGFzcyAqZWMsIGludCBmcm9tLCBpbnQgdG8pCiAJaSA9IC0xOwog CXdoaWxlICgoaSA9IGJtc19uZXh0X21lbWJlcihlYy0+ZWNfZGVyaXZlX2luZGV4ZXMsIGkpKSA+ PSAwKQogCXsKKwkJUmVzdHJpY3RJbmZvICpyaW5mbyA9IGxpc3RfbnRoX25vZGUoUmVzdHJpY3RJ bmZvLCByb290LT5lcV9kZXJpdmVzLCBpKTsKKworCQkvKgorCQkgKiBSZW1vdmUgYWxsIHJlZmVy ZW5jZXMgYmV0d2VlbiB0aGlzIFJlc3RyaWN0SW5mbyBhbmQgaXRzIHJlbGF0aW5nCisJCSAqIFJh bmdlVGJsRW50cnkuCisJCSAqLworCQlqID0gLTE7CisJCXdoaWxlICgoaiA9IGJtc19uZXh0X21l bWJlcihyaW5mby0+Y2xhdXNlX3JlbGlkcywgaikpID49IDApCisJCXsKKwkJCVJhbmdlVGJsRW50 cnkgKnJ0ZSA9IHJvb3QtPnNpbXBsZV9ydGVfYXJyYXlbal07CisKKwkJCUFzc2VydChibXNfaXNf bWVtYmVyKGksIHJ0ZS0+ZWNsYXNzX2Rlcml2ZV9pbmRleGVzKSk7CisJCQlydGUtPmVjbGFzc19k ZXJpdmVfaW5kZXhlcyA9CisJCQkJYm1zX2RlbF9tZW1iZXIocnRlLT5lY2xhc3NfZGVyaXZlX2lu ZGV4ZXMsIGkpOworCQl9CisKIAkJLyoKIAkJICogQ2FuJ3QgZGVsZXRlIHRoZSBlbGVtZW50IGJl Y2F1c2Ugd2Ugd291bGQgbmVlZCB0byByZWJ1aWxkIGFsbAotCQkgKiB0aGUgZXFfZGVyaXZlcyBp bmRleGVzLiBCdXQgc2V0IGEgbnVrZSB0byBkZXRlY3QgcG90ZW50aWFsIHByb2JsZW1zLgorCQkg KiB0aGUgZXFfZGVyaXZlcyBpbmRleGVzLiBCdXQgc2V0IGEgbnVsbCB0byBkZXRlY3QgcG90ZW50 aWFsIHByb2JsZW1zLgogCQkgKi8KIAkJbGlzdF9udGhfY2VsbChyb290LT5lcV9kZXJpdmVzLCBp KS0+cHRyX3ZhbHVlID0gTlVMTDsKIAl9CkBAIC0xNjg1LDkgKzE3MDEsMjMgQEAgdXBkYXRlX2Vj bGFzc2VzKFBsYW5uZXJJbmZvICpyb290LCBFcXVpdmFsZW5jZUNsYXNzICplYywgaW50IGZyb20s IGludCB0bykKIAogCQlpZiAoaXNfcmVkdW5kYW50KQogCQl7CisJCQkvKgorCQkJICogUmVtb3Zl IGFsbCByZWZlcmVuY2VzIGJldHdlZW4gdGhpcyBSZXN0cmljdEluZm8gYW5kIGl0cyByZWxhdGlu ZworCQkJICogUmFuZ2VUYmxFbnRyeS4KKwkJCSAqLworCQkJaiA9IC0xOworCQkJd2hpbGUgKChq ID0gYm1zX25leHRfbWVtYmVyKHJpbmZvLT5jbGF1c2VfcmVsaWRzLCBqKSkgPj0gMCkKKwkJCXsK KwkJCQlSYW5nZVRibEVudHJ5ICpydGUgPSByb290LT5zaW1wbGVfcnRlX2FycmF5W2pdOworCisJ CQkJQXNzZXJ0KGJtc19pc19tZW1iZXIoaSwgcnRlLT5lY2xhc3Nfc291cmNlX2luZGV4ZXMpKTsK KwkJCQlydGUtPmVjbGFzc19zb3VyY2VfaW5kZXhlcyA9CisJCQkJCWJtc19kZWxfbWVtYmVyKHJ0 ZS0+ZWNsYXNzX3NvdXJjZV9pbmRleGVzLCBpKTsKKwkJCX0KKwogCQkJLyoKIAkJCSAqIENhbid0 IGRlbGV0ZSB0aGUgZWxlbWVudCBiZWNhdXNlIHdlIHdvdWxkIG5lZWQgdG8gcmVidWlsZCBhbGwK LQkJCSAqIHRoZSBlcV9zb3VyY2VzIGluZGV4ZXMuIEJ1dCBzZXQgYSBudWtlIHRvIGRldGVjdCBw b3RlbnRpYWwgcHJvYmxlbXMuCisJCQkgKiB0aGUgZXFfc291cmNlcyBpbmRleGVzLiBCdXQgc2V0 IGEgbnVsbCB0byBkZXRlY3QgcG90ZW50aWFsIHByb2JsZW1zLgogCQkJICovCiAJCQlsaXN0X250 aF9jZWxsKHJvb3QtPmVxX3NvdXJjZXMsIGkpLT5wdHJfdmFsdWUgPSBOVUxMOwogCQl9Ci0tIAoy LjQyLjAud2luZG93cy4yCgo= --0000000000007e2747060f20f334 Content-Type: application/octet-stream; name="v23-0006-Introduce-update_clause_relids-for-updating-Rest.patch" Content-Disposition: attachment; filename="v23-0006-Introduce-update_clause_relids-for-updating-Rest.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lrhk1or65 RnJvbSA2YmNjZTkyZGY2ZGM1OTdlMDUwYjcxNjFlNTU1NWYzYmZkN2RhODQxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBZdXlhIFdhdGFyaSA8d2F0YXJpLnl1eWFAZ21haWwuY29tPgpE YXRlOiBUaHUsIDExIEphbiAyMDI0IDE2OjE4OjM4ICswOTAwClN1YmplY3Q6IFtQQVRDSCB2MjMg Ni82XSBJbnRyb2R1Y2UgdXBkYXRlX2NsYXVzZV9yZWxpZHMoKSBmb3IgdXBkYXRpbmcKIFJlc3Ry aWN0SW5mby0+Y2xhdXNlX3JlbGlkcwoKT3JpZ2luYWxseSwgdGhlIHVwZGF0ZSBmb3IgUmVzdHJp Y3RJbmZvLT5jbGF1c2VfcmVsaWRzIHdhcyBkb25lIGJ5CmRpcmVjdGx5IHNldHRpbmcgdGhlIGZp ZWxkLiBIb3dldmVyLCB0aGlzIGZhaWxlZCB0byB1cGRhdGUgdGhlCmNvcnJlc3BvbmRpbmcgaW5k ZXhlcywgc3VjaCBhcyBlY2xhc3Nfc291cmNlX2luZGV4ZXMgYW5kCmVjbGFzc19kZXJpdmVfaW5k ZXhlcy4KClRoaXMgY29tbWl0IHByb3ZpZGVzIGEgaGVscGVyIGZ1bmN0aW9uIHRvIHVwZGF0ZSB0 aGUgZmllbGQgd2l0aCBmaXhpbmcKdGhlIGluZGV4ZXMuCi0tLQogc3JjL2JhY2tlbmQvb3B0aW1p emVyL3BhdGgvZXF1aXZjbGFzcy5jICAgfCAxMjAgKysrKysrKysrKysrKysrKysrKysrKwogc3Jj L2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vYW5hbHl6ZWpvaW5zLmMgfCAgODEgKysrKysrKysrLS0t LS0tCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9hcHBlbmRpbmZvLmMgICB8ICAgMiArCiBz cmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9yZXN0cmljdGluZm8uYyB8ICAgNSArCiBzcmMvaW5j bHVkZS9ub2Rlcy9wYXRobm9kZXMuaCAgICAgICAgICAgICB8ICAxMSArLQogc3JjL2luY2x1ZGUv b3B0aW1pemVyL3BhdGhzLmggICAgICAgICAgICAgfCAgIDIgKwogNiBmaWxlcyBjaGFuZ2VkLCAx OTEgaW5zZXJ0aW9ucygrKSwgMzAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvb3B0aW1pemVyL3BhdGgvZXF1aXZjbGFzcy5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3Bh dGgvZXF1aXZjbGFzcy5jCmluZGV4IGQxMDE5MzE1ZWEuLjNmNGRmMWE4YzcgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2VxdWl2Y2xhc3MuYworKysgYi9zcmMvYmFja2Vu ZC9vcHRpbWl6ZXIvcGF0aC9lcXVpdmNsYXNzLmMKQEAgLTYyMyw2ICs2MjMsOCBAQCBhZGRfZXFf c291cmNlKFBsYW5uZXJJbmZvICpyb290LCBFcXVpdmFsZW5jZUNsYXNzICplYywgUmVzdHJpY3RJ bmZvICpyaW5mbykKIAogCWVjLT5lY19zb3VyY2VfaW5kZXhlcyA9IGJtc19hZGRfbWVtYmVyKGVj LT5lY19zb3VyY2VfaW5kZXhlcywgc291cmNlX2lkeCk7CiAJcm9vdC0+ZXFfc291cmNlcyA9IGxh cHBlbmQocm9vdC0+ZXFfc291cmNlcywgcmluZm8pOworCUFzc2VydChyaW5mby0+ZXFfc291cmNl c19pbmRleCA9PSAtMSk7CisJcmluZm8tPmVxX3NvdXJjZXNfaW5kZXggPSBzb3VyY2VfaWR4Owog CiAJaSA9IC0xOwogCXdoaWxlICgoaSA9IGJtc19uZXh0X21lbWJlcihyaW5mby0+Y2xhdXNlX3Jl bGlkcywgaSkpID49IDApCkBAIC02NDUsNiArNjQ3LDggQEAgYWRkX2VxX2Rlcml2ZShQbGFubmVy SW5mbyAqcm9vdCwgRXF1aXZhbGVuY2VDbGFzcyAqZWMsIFJlc3RyaWN0SW5mbyAqcmluZm8pCiAK IAllYy0+ZWNfZGVyaXZlX2luZGV4ZXMgPSBibXNfYWRkX21lbWJlcihlYy0+ZWNfZGVyaXZlX2lu ZGV4ZXMsIGRlcml2ZV9pZHgpOwogCXJvb3QtPmVxX2Rlcml2ZXMgPSBsYXBwZW5kKHJvb3QtPmVx X2Rlcml2ZXMsIHJpbmZvKTsKKwlBc3NlcnQocmluZm8tPmVxX2Rlcml2ZXNfaW5kZXggPT0gLTEp OworCXJpbmZvLT5lcV9kZXJpdmVzX2luZGV4ID0gZGVyaXZlX2lkeDsKIAogCWkgPSAtMTsKIAl3 aGlsZSAoKGkgPSBibXNfbmV4dF9tZW1iZXIocmluZm8tPmNsYXVzZV9yZWxpZHMsIGkpKSA+PSAw KQpAQCAtNjU2LDYgKzY2MCwxMjIgQEAgYWRkX2VxX2Rlcml2ZShQbGFubmVySW5mbyAqcm9vdCwg RXF1aXZhbGVuY2VDbGFzcyAqZWMsIFJlc3RyaWN0SW5mbyAqcmluZm8pCiAJfQogfQogCisvKgor ICogdXBkYXRlX2NsYXVzZV9yZWxpZHMKKyAqCSAgVXBkYXRlIFJlc3RyaWN0SW5mby0+Y2xhdXNl X3JlbGlkcyB3aXRoIGFkanVzdGluZyB0aGUgcmVsZXZhbnQgaW5kZXhlcy4KKyAqCSAgVGhlIGNs YXVzZV9yZWxpZHMgZmllbGQgbXVzdCBiZSB1cGRhdGVkIHRocm91Z2ggdGhpcyBmdW5jdGlvbiwg bm90IGJ5CisgKgkgIHNldHRpbmcgdGhlIGZpZWxkIGRpcmVjdGx5LgorICovCit2b2lkCit1cGRh dGVfY2xhdXNlX3JlbGlkcyhQbGFubmVySW5mbyAqcm9vdCwgUmVzdHJpY3RJbmZvICpyaW5mbywK KwkJCQkJIFJlbGlkcyBuZXdfY2xhdXNlX3JlbGlkcykKK3sKKwlpbnQJCQlpOworCVJlbGlkcwkJ cmVtb3ZpbmdfcmVsaWRzOworCVJlbGlkcwkJYWRkaW5nX3JlbGlkczsKKyNpZmRlZiBVU0VfQVNT RVJUX0NIRUNLSU5HCisJUmVsaWRzCQljb21tb25fcmVsaWRzOworI2VuZGlmCisKKwkvKgorCSAq IElmIHRoZXJlIGlzIG5vdGhpbmcgdG8gZG8sIHdlIHJldHVybiBpbW1lZGlhdGVseSBhZnRlciBz ZXR0aW5nIHRoZQorCSAqIGNsYXVzZV9yZWxpZHMgZmllbGQuCisJICovCisJaWYgKHJpbmZvLT5l cV9zb3VyY2VzX2luZGV4ID09IC0xICYmIHJpbmZvLT5lcV9kZXJpdmVzX2luZGV4ID09IC0xKQor CXsKKwkJcmluZm8tPmNsYXVzZV9yZWxpZHMgPSBuZXdfY2xhdXNlX3JlbGlkczsKKwkJcmV0dXJu OworCX0KKworCS8qCisJICogUmVtb3ZlIGFueSByZWZlcmVuY2VzIGJldHdlZW4gdGhpcyBSZXN0 cmljdEluZm8gYW5kIFJhbmdlVGJsRW50cmllcworCSAqIHRoYXQgYXJlIG5vIGxvbmdlciByZWxl dmFudC4KKwkgKi8KKwlyZW1vdmluZ19yZWxpZHMgPSBibXNfZGlmZmVyZW5jZShyaW5mby0+Y2xh dXNlX3JlbGlkcywgbmV3X2NsYXVzZV9yZWxpZHMpOworCWkgPSAtMTsKKwl3aGlsZSAoKGkgPSBi bXNfbmV4dF9tZW1iZXIocmVtb3ZpbmdfcmVsaWRzLCBpKSkgPj0gMCkKKwl7CisJCVJhbmdlVGJs RW50cnkgKnJ0ZSA9IHJvb3QtPnNpbXBsZV9ydGVfYXJyYXlbaV07CisKKwkJaWYgKHJpbmZvLT5l cV9zb3VyY2VzX2luZGV4ICE9IC0xKQorCQl7CisJCQlBc3NlcnQoYm1zX2lzX21lbWJlcihyaW5m by0+ZXFfc291cmNlc19pbmRleCwKKwkJCQkJCQkJIHJ0ZS0+ZWNsYXNzX3NvdXJjZV9pbmRleGVz KSk7CisJCQlydGUtPmVjbGFzc19zb3VyY2VfaW5kZXhlcyA9CisJCQkJYm1zX2RlbF9tZW1iZXIo cnRlLT5lY2xhc3Nfc291cmNlX2luZGV4ZXMsCisJCQkJCQkJICAgcmluZm8tPmVxX3NvdXJjZXNf aW5kZXgpOworCQl9CisJCWlmIChyaW5mby0+ZXFfZGVyaXZlc19pbmRleCAhPSAtMSkKKwkJewor CQkJQXNzZXJ0KGJtc19pc19tZW1iZXIocmluZm8tPmVxX2Rlcml2ZXNfaW5kZXgsCisJCQkJCQkJ CSBydGUtPmVjbGFzc19kZXJpdmVfaW5kZXhlcykpOworCQkJcnRlLT5lY2xhc3NfZGVyaXZlX2lu ZGV4ZXMgPQorCQkJCWJtc19kZWxfbWVtYmVyKHJ0ZS0+ZWNsYXNzX2Rlcml2ZV9pbmRleGVzLAor CQkJCQkJCSAgIHJpbmZvLT5lcV9kZXJpdmVzX2luZGV4KTsKKwkJfQorCX0KKwlibXNfZnJlZShy ZW1vdmluZ19yZWxpZHMpOworCisJLyoKKwkgKiBBZGQgcmVmZXJlbmNlcyBiZXR3ZWVuIHRoaXMg UmVzdHJpY3RJbmZvIGFuZCBSYW5nZVRibEVudHJpZXMgdGhhdCB3aWxsCisJICogYmUgcmVsZXZh bnQuCisJICovCisJYWRkaW5nX3JlbGlkcyA9IGJtc19kaWZmZXJlbmNlKG5ld19jbGF1c2VfcmVs aWRzLCByaW5mby0+Y2xhdXNlX3JlbGlkcyk7CisJaSA9IC0xOworCXdoaWxlICgoaSA9IGJtc19u ZXh0X21lbWJlcihhZGRpbmdfcmVsaWRzLCBpKSkgPj0gMCkKKwl7CisJCVJhbmdlVGJsRW50cnkg KnJ0ZSA9IHJvb3QtPnNpbXBsZV9ydGVfYXJyYXlbaV07CisKKwkJaWYgKHJpbmZvLT5lcV9zb3Vy Y2VzX2luZGV4ICE9IC0xKQorCQl7CisJCQlBc3NlcnQoIWJtc19pc19tZW1iZXIocmluZm8tPmVx X3NvdXJjZXNfaW5kZXgsCisJCQkJCQkJCSAgcnRlLT5lY2xhc3Nfc291cmNlX2luZGV4ZXMpKTsK KwkJCXJ0ZS0+ZWNsYXNzX3NvdXJjZV9pbmRleGVzID0KKwkJCQlibXNfYWRkX21lbWJlcihydGUt PmVjbGFzc19zb3VyY2VfaW5kZXhlcywKKwkJCQkJCQkgICByaW5mby0+ZXFfc291cmNlc19pbmRl eCk7CisJCX0KKwkJaWYgKHJpbmZvLT5lcV9kZXJpdmVzX2luZGV4ICE9IC0xKQorCQl7CisJCQlB c3NlcnQoIWJtc19pc19tZW1iZXIocmluZm8tPmVxX2Rlcml2ZXNfaW5kZXgsCisJCQkJCQkJCSAg cnRlLT5lY2xhc3NfZGVyaXZlX2luZGV4ZXMpKTsKKwkJCXJ0ZS0+ZWNsYXNzX2Rlcml2ZV9pbmRl eGVzID0KKwkJCQlibXNfYWRkX21lbWJlcihydGUtPmVjbGFzc19kZXJpdmVfaW5kZXhlcywKKwkJ CQkJCQkgICByaW5mby0+ZXFfZGVyaXZlc19pbmRleCk7CisJCX0KKwl9CisJYm1zX2ZyZWUoYWRk aW5nX3JlbGlkcyk7CisKKyNpZmRlZiBVU0VfQVNTRVJUX0NIRUNLSU5HCisJLyoKKwkgKiBWZXJp ZnkgdGhhdCBhbGwgaW5kZXhlcyBhcmUgc2V0IGZvciBjb21tb24gUmVsaWRzLgorCSAqLworCWNv bW1vbl9yZWxpZHMgPSBibXNfaW50ZXJzZWN0KHJpbmZvLT5jbGF1c2VfcmVsaWRzLCBuZXdfY2xh dXNlX3JlbGlkcyk7CisJaSA9IC0xOworCXdoaWxlICgoaSA9IGJtc19uZXh0X21lbWJlcihjb21t b25fcmVsaWRzLCBpKSkgPj0gMCkKKwl7CisJCVJhbmdlVGJsRW50cnkgKnJ0ZSA9IHJvb3QtPnNp bXBsZV9ydGVfYXJyYXlbaV07CisKKwkJaWYgKHJpbmZvLT5lcV9zb3VyY2VzX2luZGV4ICE9IC0x KQorCQl7CisJCQlBc3NlcnQoYm1zX2lzX21lbWJlcihyaW5mby0+ZXFfc291cmNlc19pbmRleCwK KwkJCQkJCQkJIHJ0ZS0+ZWNsYXNzX3NvdXJjZV9pbmRleGVzKSk7CisJCX0KKwkJaWYgKHJpbmZv LT5lcV9kZXJpdmVzX2luZGV4ICE9IC0xKQorCQl7CisJCQlBc3NlcnQoYm1zX2lzX21lbWJlcihy aW5mby0+ZXFfZGVyaXZlc19pbmRleCwKKwkJCQkJCQkJIHJ0ZS0+ZWNsYXNzX2Rlcml2ZV9pbmRl eGVzKSk7CisJCX0KKwl9CisJYm1zX2ZyZWUoY29tbW9uX3JlbGlkcyk7CisjZW5kaWYKKworCS8q CisJICogU2luY2Ugd2UgaGF2ZSBkb25lIGV2ZXJ5dGhpbmcgdG8gYWRqdXN0IHRoZSBpbmRleGVz LCB3ZSBjYW4gc2V0IHRoZQorCSAqIGNsYXVzZV9yZWxpZHMgZmllbGQuCisJICovCisJcmluZm8t PmNsYXVzZV9yZWxpZHMgPSBuZXdfY2xhdXNlX3JlbGlkczsKK30KKwogCiAvKgogICogZ2V0X2Vj bGFzc19mb3Jfc29ydF9leHByCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxh bi9hbmFseXplam9pbnMuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2FuYWx5emVqb2lu cy5jCmluZGV4IDQwODE4MjdlM2EuLjJkYTJhNmMxNGUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L29wdGltaXplci9wbGFuL2FuYWx5emVqb2lucy5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXpl ci9wbGFuL2FuYWx5emVqb2lucy5jCkBAIC0zOSw2ICszOSw3IEBACiAgKi8KIHR5cGVkZWYgc3Ry dWN0CiB7CisJUGxhbm5lckluZm8gKnJvb3Q7CiAJaW50CQkJZnJvbTsKIAlpbnQJCQl0bzsKIH0g UmVwbGFjZVZhcm5vQ29udGV4dDsKQEAgLTU5LDcgKzYwLDggQEAgc3RhdGljIGJvb2wgam9pbl9p c19yZW1vdmFibGUoUGxhbm5lckluZm8gKnJvb3QsIFNwZWNpYWxKb2luSW5mbyAqc2ppbmZvKTsK IAogc3RhdGljIHZvaWQgcmVtb3ZlX2xlZnRqb2lucmVsX2Zyb21fcXVlcnkoUGxhbm5lckluZm8g KnJvb3QsIGludCByZWxpZCwKIAkJCQkJCQkJCQkgIFNwZWNpYWxKb2luSW5mbyAqc2ppbmZvKTsK LXN0YXRpYyB2b2lkIHJlbW92ZV9yZWxfZnJvbV9yZXN0cmljdGluZm8oUmVzdHJpY3RJbmZvICpy aW5mbywKK3N0YXRpYyB2b2lkIHJlbW92ZV9yZWxfZnJvbV9yZXN0cmljdGluZm8oUGxhbm5lcklu Zm8gKnJvb3QsCisJCQkJCQkJCQkJIFJlc3RyaWN0SW5mbyAqcmluZm8sCiAJCQkJCQkJCQkJIGlu dCByZWxpZCwgaW50IG9qcmVsaWQpOwogc3RhdGljIHZvaWQgcmVtb3ZlX3JlbF9mcm9tX2VjbGFz cyhQbGFubmVySW5mbyAqcm9vdCwgRXF1aXZhbGVuY2VDbGFzcyAqZWMsCiAJCQkJCQkJCSAgIGlu dCByZWxpZCwgaW50IG9qcmVsaWQpOwpAQCAtNzYsNyArNzgsNyBAQCBzdGF0aWMgYm9vbCBpc19p bm5lcnJlbF91bmlxdWVfZm9yKFBsYW5uZXJJbmZvICpyb290LAogCQkJCQkJCQkgICBMaXN0ICpy ZXN0cmljdGxpc3QsCiAJCQkJCQkJCSAgIExpc3QgKipleHRyYV9jbGF1c2VzKTsKIHN0YXRpYyBC aXRtYXBzZXQgKnJlcGxhY2VfcmVsaWQoUmVsaWRzIHJlbGlkcywgaW50IG9sZElkLCBpbnQgbmV3 SWQpOwotc3RhdGljIHZvaWQgcmVwbGFjZV92YXJubyhOb2RlICpub2RlLCBpbnQgZnJvbSwgaW50 IHRvKTsKK3N0YXRpYyB2b2lkIHJlcGxhY2VfdmFybm8oUGxhbm5lckluZm8gKnJvb3QsIE5vZGUg Km5vZGUsIGludCBmcm9tLCBpbnQgdG8pOwogc3RhdGljIGJvb2wgcmVwbGFjZV92YXJub193YWxr ZXIoTm9kZSAqbm9kZSwgUmVwbGFjZVZhcm5vQ29udGV4dCAqY3R4KTsKIHN0YXRpYyBpbnQJc2Vs Zl9qb2luX2NhbmRpZGF0ZXNfY21wKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIpOwogCkBA IC0zOTUsNyArMzk3LDcgQEAgcmVtb3ZlX3JlbF9mcm9tX3F1ZXJ5KFBsYW5uZXJJbmZvICpyb290 LCBSZWxPcHRJbmZvICpyZWwsCiAJCX0KIAogCQkvKiBVcGRhdGUgbGF0ZXJhbCByZWZlcmVuY2Vz LiAqLwotCQlyZXBsYWNlX3Zhcm5vKChOb2RlICopIG90aGVycmVsLT5sYXRlcmFsX3ZhcnMsIHJl bGlkLCBzdWJzdCk7CisJCXJlcGxhY2VfdmFybm8ocm9vdCwgKE5vZGUgKikgb3RoZXJyZWwtPmxh dGVyYWxfdmFycywgcmVsaWQsIHN1YnN0KTsKIAl9CiAKIAkvKgpAQCAtNDMyLDcgKzQzNCw3IEBA IHJlbW92ZV9yZWxfZnJvbV9xdWVyeShQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVs LAogCQlzamluZi0+Y29tbXV0ZV9iZWxvd19sID0gcmVwbGFjZV9yZWxpZChzamluZi0+Y29tbXV0 ZV9iZWxvd19sLCBvanJlbGlkLCBzdWJzdCk7CiAJCXNqaW5mLT5jb21tdXRlX2JlbG93X3IgPSBy ZXBsYWNlX3JlbGlkKHNqaW5mLT5jb21tdXRlX2JlbG93X3IsIG9qcmVsaWQsIHN1YnN0KTsKIAot CQlyZXBsYWNlX3Zhcm5vKChOb2RlICopIHNqaW5mLT5zZW1pX3Joc19leHBycywgcmVsaWQsIHN1 YnN0KTsKKwkJcmVwbGFjZV92YXJubyhyb290LCAoTm9kZSAqKSBzamluZi0+c2VtaV9yaHNfZXhw cnMsIHJlbGlkLCBzdWJzdCk7CiAJfQogCiAJLyoKQEAgLTQ3Nyw3ICs0NzksNyBAQCByZW1vdmVf cmVsX2Zyb21fcXVlcnkoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbCwKIAkJCXBo di0+cGhyZWxzID0gcmVwbGFjZV9yZWxpZChwaHYtPnBocmVscywgcmVsaWQsIHN1YnN0KTsKIAkJ CXBodi0+cGhyZWxzID0gcmVwbGFjZV9yZWxpZChwaHYtPnBocmVscywgb2pyZWxpZCwgc3Vic3Qp OwogCQkJQXNzZXJ0KCFibXNfaXNfZW1wdHkocGh2LT5waHJlbHMpKTsKLQkJCXJlcGxhY2VfdmFy bm8oKE5vZGUgKikgcGh2LT5waGV4cHIsIHJlbGlkLCBzdWJzdCk7CisJCQlyZXBsYWNlX3Zhcm5v KHJvb3QsIChOb2RlICopIHBodi0+cGhleHByLCByZWxpZCwgc3Vic3QpOwogCQkJQXNzZXJ0KHBo di0+cGhudWxsaW5ncmVscyA9PSBOVUxMKTsgLyogbm8gbmVlZCB0byBhZGp1c3QgKi8KIAkJfQog CX0KQEAgLTU1MSw3ICs1NTMsNyBAQCByZW1vdmVfbGVmdGpvaW5yZWxfZnJvbV9xdWVyeShQbGFu bmVySW5mbyAqcm9vdCwgaW50IHJlbGlkLAogCQkJICogdGhhdCBhbnkgc3VjaCBQSFYgaXMgc2Fm ZSAoYW5kIHVwZGF0ZWQgaXRzIHBoX2V2YWxfYXQpLCBzbyB3ZQogCQkJICogY2FuIGp1c3QgZHJv cCB0aG9zZSByZWZlcmVuY2VzLgogCQkJICovCi0JCQlyZW1vdmVfcmVsX2Zyb21fcmVzdHJpY3Rp bmZvKHJpbmZvLCByZWxpZCwgb2pyZWxpZCk7CisJCQlyZW1vdmVfcmVsX2Zyb21fcmVzdHJpY3Rp bmZvKHJvb3QsIHJpbmZvLCByZWxpZCwgb2pyZWxpZCk7CiAKIAkJCS8qCiAJCQkgKiBDcm9zcy1j aGVjayB0aGF0IHRoZSBjbGF1c2UgaXRzZWxmIGRvZXMgbm90IHJlZmVyZW5jZSB0aGUKQEAgLTYw OCwxNiArNjEwLDI0IEBAIHJlbW92ZV9sZWZ0am9pbnJlbF9mcm9tX3F1ZXJ5KFBsYW5uZXJJbmZv ICpyb290LCBpbnQgcmVsaWQsCiAgKiB3ZSBoYXZlIHRvIGFsc28gY2xlYW4gdXAgdGhlIHN1Yi1j bGF1c2VzLgogICovCiBzdGF0aWMgdm9pZAotcmVtb3ZlX3JlbF9mcm9tX3Jlc3RyaWN0aW5mbyhS ZXN0cmljdEluZm8gKnJpbmZvLCBpbnQgcmVsaWQsIGludCBvanJlbGlkKQorcmVtb3ZlX3JlbF9m cm9tX3Jlc3RyaWN0aW5mbyhQbGFubmVySW5mbyAqcm9vdCwgUmVzdHJpY3RJbmZvICpyaW5mbywg aW50IHJlbGlkLAorCQkJCQkJCSBpbnQgb2pyZWxpZCkKIHsKKwlSZWxpZHMJCW5ld19jbGF1c2Vf cmVsaWRzOworCisJLyoKKwkgKiBUaGUgJ25ld19jbGF1c2VfcmVsaWRzJyBwYXNzZWQgdG8gdXBk YXRlX2NsYXVzZV9yZWxpZHMoKSBtdXN0IGJlIGEKKwkgKiBkaWZmZXJlbnQgaW5zdGFuY2UgZnJv bSB0aGUgY3VycmVudCByaW5mby0+Y2xhdXNlX3JlbGlkcywgc28gd2UgbWFrZSBhCisJICogY29w eSBvZiB0aGVtLgorCSAqLworCW5ld19jbGF1c2VfcmVsaWRzID0gYm1zX2NvcHkocmluZm8tPmNs YXVzZV9yZWxpZHMpOworCW5ld19jbGF1c2VfcmVsaWRzID0gYm1zX2RlbF9tZW1iZXIobmV3X2Ns YXVzZV9yZWxpZHMsIHJlbGlkKTsKKwluZXdfY2xhdXNlX3JlbGlkcyA9IGJtc19kZWxfbWVtYmVy KG5ld19jbGF1c2VfcmVsaWRzLCBvanJlbGlkKTsKKwl1cGRhdGVfY2xhdXNlX3JlbGlkcyhyb290 LCByaW5mbywgbmV3X2NsYXVzZV9yZWxpZHMpOwogCS8qCi0JICogVGhlIGNsYXVzZV9yZWxpZHMg cHJvYmFibHkgYXJlbid0IHNoYXJlZCB3aXRoIGFueXRoaW5nIGVsc2UsIGJ1dCBsZXQncworCSAq IFRoZSByZXF1aXJlZF9yZWxpZHMgcHJvYmFibHkgYXJlbid0IHNoYXJlZCB3aXRoIGFueXRoaW5n IGVsc2UsIGJ1dCBsZXQncwogCSAqIGNvcHkgdGhlbSBqdXN0IHRvIGJlIHN1cmUuCiAJICovCi0J cmluZm8tPmNsYXVzZV9yZWxpZHMgPSBibXNfY29weShyaW5mby0+Y2xhdXNlX3JlbGlkcyk7Ci0J cmluZm8tPmNsYXVzZV9yZWxpZHMgPSBibXNfZGVsX21lbWJlcihyaW5mby0+Y2xhdXNlX3JlbGlk cywgcmVsaWQpOwotCXJpbmZvLT5jbGF1c2VfcmVsaWRzID0gYm1zX2RlbF9tZW1iZXIocmluZm8t PmNsYXVzZV9yZWxpZHMsIG9qcmVsaWQpOwotCS8qIExpa2V3aXNlIGZvciByZXF1aXJlZF9yZWxp ZHMgKi8KIAlyaW5mby0+cmVxdWlyZWRfcmVsaWRzID0gYm1zX2NvcHkocmluZm8tPnJlcXVpcmVk X3JlbGlkcyk7CiAJcmluZm8tPnJlcXVpcmVkX3JlbGlkcyA9IGJtc19kZWxfbWVtYmVyKHJpbmZv LT5yZXF1aXJlZF9yZWxpZHMsIHJlbGlkKTsKIAlyaW5mby0+cmVxdWlyZWRfcmVsaWRzID0gYm1z X2RlbF9tZW1iZXIocmluZm8tPnJlcXVpcmVkX3JlbGlkcywgb2pyZWxpZCk7CkBAIC02NDIsMTQg KzY1MiwxNCBAQCByZW1vdmVfcmVsX2Zyb21fcmVzdHJpY3RpbmZvKFJlc3RyaWN0SW5mbyAqcmlu Zm8sIGludCByZWxpZCwgaW50IG9qcmVsaWQpCiAJCQkJewogCQkJCQlSZXN0cmljdEluZm8gKnJp bmZvMiA9IGxmaXJzdF9ub2RlKFJlc3RyaWN0SW5mbywgbGMyKTsKIAotCQkJCQlyZW1vdmVfcmVs X2Zyb21fcmVzdHJpY3RpbmZvKHJpbmZvMiwgcmVsaWQsIG9qcmVsaWQpOworCQkJCQlyZW1vdmVf cmVsX2Zyb21fcmVzdHJpY3RpbmZvKHJvb3QsIHJpbmZvMiwgcmVsaWQsIG9qcmVsaWQpOwogCQkJ CX0KIAkJCX0KIAkJCWVsc2UKIAkJCXsKIAkJCQlSZXN0cmljdEluZm8gKnJpbmZvMiA9IGNhc3RO b2RlKFJlc3RyaWN0SW5mbywgb3JhcmcpOwogCi0JCQkJcmVtb3ZlX3JlbF9mcm9tX3Jlc3RyaWN0 aW5mbyhyaW5mbzIsIHJlbGlkLCBvanJlbGlkKTsKKwkJCQlyZW1vdmVfcmVsX2Zyb21fcmVzdHJp Y3RpbmZvKHJvb3QsIHJpbmZvMiwgcmVsaWQsIG9qcmVsaWQpOwogCQkJfQogCQl9CiAJfQpAQCAt NzA4LDcgKzcxOCw3IEBAIHJlbW92ZV9yZWxfZnJvbV9lY2xhc3MoUGxhbm5lckluZm8gKnJvb3Qs IEVxdWl2YWxlbmNlQ2xhc3MgKmVjLCBpbnQgcmVsaWQsCiAJewogCQlSZXN0cmljdEluZm8gKnJp bmZvID0gbGlzdF9udGhfbm9kZShSZXN0cmljdEluZm8sIHJvb3QtPmVxX3NvdXJjZXMsIGkpOwog Ci0JCXJlbW92ZV9yZWxfZnJvbV9yZXN0cmljdGluZm8ocmluZm8sIHJlbGlkLCBvanJlbGlkKTsK KwkJcmVtb3ZlX3JlbF9mcm9tX3Jlc3RyaWN0aW5mbyhyb290LCByaW5mbywgcmVsaWQsIG9qcmVs aWQpOwogCX0KIAogCS8qCkBAIC0xNDQ4LDEzICsxNDU4LDE0IEBAIGlzX2lubmVycmVsX3VuaXF1 ZV9mb3IoUGxhbm5lckluZm8gKnJvb3QsCiAgKiBSZXBsYWNlIGVhY2ggb2NjdXJyZW5jZSBvZiBy ZW1vdmluZyByZWxpZCB3aXRoIHRoZSBrZWVwaW5nIG9uZQogICovCiBzdGF0aWMgdm9pZAotcmVw bGFjZV92YXJubyhOb2RlICpub2RlLCBpbnQgZnJvbSwgaW50IHRvKQorcmVwbGFjZV92YXJubyhQ bGFubmVySW5mbyAqcm9vdCwgTm9kZSAqbm9kZSwgaW50IGZyb20sIGludCB0bykKIHsKIAlSZXBs YWNlVmFybm9Db250ZXh0IGN0eDsKIAogCWlmICh0byA8PSAwKQogCQlyZXR1cm47CiAKKwljdHgu cm9vdCA9IHJvb3Q7CiAJY3R4LmZyb20gPSBmcm9tOwogCWN0eC50byA9IHRvOwogCXJlcGxhY2Vf dmFybm9fd2Fsa2VyKG5vZGUsICZjdHgpOwpAQCAtMTQ5OCw5ICsxNTA5LDkgQEAgcmVwbGFjZV92 YXJub193YWxrZXIoTm9kZSAqbm9kZSwgUmVwbGFjZVZhcm5vQ29udGV4dCAqY3R4KQogCiAJCWlm IChibXNfaXNfbWVtYmVyKGN0eC0+ZnJvbSwgcmluZm8tPmNsYXVzZV9yZWxpZHMpKQogCQl7Ci0J CQlyZXBsYWNlX3Zhcm5vKChOb2RlICopIHJpbmZvLT5jbGF1c2UsIGN0eC0+ZnJvbSwgY3R4LT50 byk7Ci0JCQlyZXBsYWNlX3Zhcm5vKChOb2RlICopIHJpbmZvLT5vcmNsYXVzZSwgY3R4LT5mcm9t LCBjdHgtPnRvKTsKLQkJCXJpbmZvLT5jbGF1c2VfcmVsaWRzID0gcmVwbGFjZV9yZWxpZChyaW5m by0+Y2xhdXNlX3JlbGlkcywgY3R4LT5mcm9tLCBjdHgtPnRvKTsKKwkJCXJlcGxhY2VfdmFybm8o Y3R4LT5yb290LCAoTm9kZSAqKSByaW5mby0+Y2xhdXNlLCBjdHgtPmZyb20sIGN0eC0+dG8pOwor CQkJcmVwbGFjZV92YXJubyhjdHgtPnJvb3QsIChOb2RlICopIHJpbmZvLT5vcmNsYXVzZSwgY3R4 LT5mcm9tLCBjdHgtPnRvKTsKKwkJCXVwZGF0ZV9jbGF1c2VfcmVsaWRzKGN0eC0+cm9vdCwgcmlu Zm8sIHJlcGxhY2VfcmVsaWQocmluZm8tPmNsYXVzZV9yZWxpZHMsIGN0eC0+ZnJvbSwgY3R4LT50 bykpOwogCQkJcmluZm8tPmxlZnRfcmVsaWRzID0gcmVwbGFjZV9yZWxpZChyaW5mby0+bGVmdF9y ZWxpZHMsIGN0eC0+ZnJvbSwgY3R4LT50byk7CiAJCQlyaW5mby0+cmlnaHRfcmVsaWRzID0gcmVw bGFjZV9yZWxpZChyaW5mby0+cmlnaHRfcmVsaWRzLCBjdHgtPmZyb20sIGN0eC0+dG8pOwogCQl9 CkBAIC0xNjEzLDcgKzE2MjQsNyBAQCB1cGRhdGVfZWNsYXNzZXMoUGxhbm5lckluZm8gKnJvb3Qs IEVxdWl2YWxlbmNlQ2xhc3MgKmVjLCBpbnQgZnJvbSwgaW50IHRvKQogCQllbS0+ZW1famRvbWFp bi0+amRfcmVsaWRzID0gcmVwbGFjZV9yZWxpZChlbS0+ZW1famRvbWFpbi0+amRfcmVsaWRzLCBm cm9tLCB0byk7CiAKIAkJLyogV2Ugb25seSBwcm9jZXNzIGlubmVyIGpvaW5zICovCi0JCXJlcGxh Y2VfdmFybm8oKE5vZGUgKikgZW0tPmVtX2V4cHIsIGZyb20sIHRvKTsKKwkJcmVwbGFjZV92YXJu byhyb290LCAoTm9kZSAqKSBlbS0+ZW1fZXhwciwgZnJvbSwgdG8pOwogCiAJCWZvcmVhY2gobGMx LCBuZXdfbWVtYmVycykKIAkJewpAQCAtMTY2MCw2ICsxNjcxLDEyIEBAIHVwZGF0ZV9lY2xhc3Nl cyhQbGFubmVySW5mbyAqcm9vdCwgRXF1aXZhbGVuY2VDbGFzcyAqZWMsIGludCBmcm9tLCBpbnQg dG8pCiAJCSAqIHRoZSBlcV9kZXJpdmVzIGluZGV4ZXMuIEJ1dCBzZXQgYSBudWxsIHRvIGRldGVj dCBwb3RlbnRpYWwgcHJvYmxlbXMuCiAJCSAqLwogCQlsaXN0X250aF9jZWxsKHJvb3QtPmVxX2Rl cml2ZXMsIGkpLT5wdHJfdmFsdWUgPSBOVUxMOworCisJCS8qCisJCSAqIFNpbmNlIHRoaXMgUmVz dHJpY3RJbmZvIG5vIGxvbmdlciBleGlzdHMgaW4gcm9vdC0+ZXFfZGVyaXZlcywgd2UKKwkJICog bXVzdCByZXNldCB0aGUgc3RvcmVkIGluZGV4LgorCQkgKi8KKwkJcmluZm8tPmVxX2Rlcml2ZXNf aW5kZXggPSAtMTsKIAl9CiAJYm1zX2ZyZWUoZWMtPmVjX2Rlcml2ZV9pbmRleGVzKTsKIAllYy0+ ZWNfZGVyaXZlX2luZGV4ZXMgPSBOVUxMOwpAQCAtMTY3Nyw3ICsxNjk0LDcgQEAgdXBkYXRlX2Vj bGFzc2VzKFBsYW5uZXJJbmZvICpyb290LCBFcXVpdmFsZW5jZUNsYXNzICplYywgaW50IGZyb20s IGludCB0bykKIAkJCWNvbnRpbnVlOwogCQl9CiAKLQkJcmVwbGFjZV92YXJubygoTm9kZSAqKSBy aW5mbywgZnJvbSwgdG8pOworCQlyZXBsYWNlX3Zhcm5vKHJvb3QsIChOb2RlICopIHJpbmZvLCBm cm9tLCB0byk7CiAKIAkJLyoKIAkJICogQWZ0ZXIgc3dpdGNoaW5nIHRoZSBjbGF1c2UgdG8gdGhl IHJlbWFpbmluZyByZWxhdGlvbiwgY2hlY2sgaXQgZm9yCkBAIC0xNzIwLDYgKzE3MzcsMTIgQEAg dXBkYXRlX2VjbGFzc2VzKFBsYW5uZXJJbmZvICpyb290LCBFcXVpdmFsZW5jZUNsYXNzICplYywg aW50IGZyb20sIGludCB0bykKIAkJCSAqIHRoZSBlcV9zb3VyY2VzIGluZGV4ZXMuIEJ1dCBzZXQg YSBudWxsIHRvIGRldGVjdCBwb3RlbnRpYWwgcHJvYmxlbXMuCiAJCQkgKi8KIAkJCWxpc3RfbnRo X2NlbGwocm9vdC0+ZXFfc291cmNlcywgaSktPnB0cl92YWx1ZSA9IE5VTEw7CisKKwkJCS8qCisJ CQkgKiBTaW5jZSB0aGlzIFJlc3RyaWN0SW5mbyBubyBsb25nZXIgZXhpc3RzIGluIHJvb3QtPmVx X3NvdXJjZXMsIHdlCisJCQkgKiBtdXN0IHJlc2V0IHRoZSBzdG9yZWQgaW5kZXguCisJCQkgKi8K KwkJCXJpbmZvLT5lcV9zb3VyY2VzX2luZGV4ID0gLTE7CiAJCX0KIAkJZWxzZQogCQkJbmV3X3Nv dXJjZV9pbmRleGVzID0gYm1zX2FkZF9tZW1iZXIobmV3X3NvdXJjZV9pbmRleGVzLCBpKTsKQEAg LTE3ODIsNyArMTgwNSw3IEBAIHJlbW92ZV9zZWxmX2pvaW5fcmVsKFBsYW5uZXJJbmZvICpyb290 LCBQbGFuUm93TWFyayAqa21hcmssIFBsYW5Sb3dNYXJrICpybWFyaywKIAlpbnQJCQlpOwogCUxp c3QJICAgKmppbmZvX2NhbmRpZGF0ZXMgPSBOSUw7CiAJTGlzdAkgICAqYmluZm9fY2FuZGlkYXRl cyA9IE5JTDsKLQlSZXBsYWNlVmFybm9Db250ZXh0IGN0eCA9IHsuZnJvbSA9IHRvUmVtb3ZlLT5y ZWxpZCwudG8gPSB0b0tlZXAtPnJlbGlkfTsKKwlSZXBsYWNlVmFybm9Db250ZXh0IGN0eCA9IHsu cm9vdCA9IHJvb3QsLmZyb20gPSB0b1JlbW92ZS0+cmVsaWQsLnRvID0gdG9LZWVwLT5yZWxpZH07 CiAKIAlBc3NlcnQodG9LZWVwLT5yZWxpZCAhPSAtMSk7CiAKQEAgLTE3OTgsNyArMTgyMSw3IEBA IHJlbW92ZV9zZWxmX2pvaW5fcmVsKFBsYW5uZXJJbmZvICpyb290LCBQbGFuUm93TWFyayAqa21h cmssIFBsYW5Sb3dNYXJrICpybWFyaywKIAkJUmVzdHJpY3RJbmZvICpyaW5mbyA9IGxmaXJzdF9u b2RlKFJlc3RyaWN0SW5mbywgbGMpOwogCiAJCXJlbW92ZV9qb2luX2NsYXVzZV9mcm9tX3JlbHMo cm9vdCwgcmluZm8sIHJpbmZvLT5yZXF1aXJlZF9yZWxpZHMpOwotCQlyZXBsYWNlX3Zhcm5vKChO b2RlICopIHJpbmZvLCB0b1JlbW92ZS0+cmVsaWQsIHRvS2VlcC0+cmVsaWQpOworCQlyZXBsYWNl X3Zhcm5vKHJvb3QsIChOb2RlICopIHJpbmZvLCB0b1JlbW92ZS0+cmVsaWQsIHRvS2VlcC0+cmVs aWQpOwogCiAJCWlmIChibXNfbWVtYmVyc2hpcChyaW5mby0+cmVxdWlyZWRfcmVsaWRzKSA9PSBC TVNfTVVMVElQTEUpCiAJCQlqaW5mb19jYW5kaWRhdGVzID0gbGFwcGVuZChqaW5mb19jYW5kaWRh dGVzLCByaW5mbyk7CkBAIC0xODE4LDcgKzE4NDEsNyBAQCByZW1vdmVfc2VsZl9qb2luX3JlbChQ bGFubmVySW5mbyAqcm9vdCwgUGxhblJvd01hcmsgKmttYXJrLCBQbGFuUm93TWFyayAqcm1hcmss CiAJewogCQlSZXN0cmljdEluZm8gKnJpbmZvID0gbGZpcnN0X25vZGUoUmVzdHJpY3RJbmZvLCBs Yyk7CiAKLQkJcmVwbGFjZV92YXJubygoTm9kZSAqKSByaW5mbywgdG9SZW1vdmUtPnJlbGlkLCB0 b0tlZXAtPnJlbGlkKTsKKwkJcmVwbGFjZV92YXJubyhyb290LCAoTm9kZSAqKSByaW5mbywgdG9S ZW1vdmUtPnJlbGlkLCB0b0tlZXAtPnJlbGlkKTsKIAogCQlpZiAoYm1zX21lbWJlcnNoaXAocmlu Zm8tPnJlcXVpcmVkX3JlbGlkcykgPT0gQk1TX01VTFRJUExFKQogCQkJamluZm9fY2FuZGlkYXRl cyA9IGxhcHBlbmQoamluZm9fY2FuZGlkYXRlcywgcmluZm8pOwpAQCAtMTkxOCw3ICsxOTQxLDcg QEAgcmVtb3ZlX3NlbGZfam9pbl9yZWwoUGxhbm5lckluZm8gKnJvb3QsIFBsYW5Sb3dNYXJrICpr bWFyaywgUGxhblJvd01hcmsgKnJtYXJrLAogCXsKIAkJTm9kZQkgICAqbm9kZSA9IGxmaXJzdChs Yyk7CiAKLQkJcmVwbGFjZV92YXJubyhub2RlLCB0b1JlbW92ZS0+cmVsaWQsIHRvS2VlcC0+cmVs aWQpOworCQlyZXBsYWNlX3Zhcm5vKHJvb3QsIG5vZGUsIHRvUmVtb3ZlLT5yZWxpZCwgdG9LZWVw LT5yZWxpZCk7CiAJCWlmICghbGlzdF9tZW1iZXIodG9LZWVwLT5yZWx0YXJnZXQtPmV4cHJzLCBu b2RlKSkKIAkJCXRvS2VlcC0+cmVsdGFyZ2V0LT5leHBycyA9IGxhcHBlbmQodG9LZWVwLT5yZWx0 YXJnZXQtPmV4cHJzLCBub2RlKTsKIAl9CkBAIC0xOTcwLDkgKzE5OTMsOSBAQCByZW1vdmVfc2Vs Zl9qb2luX3JlbChQbGFubmVySW5mbyAqcm9vdCwgUGxhblJvd01hcmsgKmttYXJrLCBQbGFuUm93 TWFyayAqcm1hcmssCiAJcmVtb3ZlX3JlbF9mcm9tX3F1ZXJ5KHJvb3QsIHRvUmVtb3ZlLCB0b0tl ZXAtPnJlbGlkLCBOVUxMLCBOVUxMKTsKIAogCS8qIEF0IGxhc3QsIHJlcGxhY2UgdmFybm8gaW4g cm9vdCB0YXJnZXRsaXN0IGFuZCBIQVZJTkcgY2xhdXNlICovCi0JcmVwbGFjZV92YXJubygoTm9k ZSAqKSByb290LT5wcm9jZXNzZWRfdGxpc3QsCisJcmVwbGFjZV92YXJubyhyb290LCAoTm9kZSAq KSByb290LT5wcm9jZXNzZWRfdGxpc3QsCiAJCQkJICB0b1JlbW92ZS0+cmVsaWQsIHRvS2VlcC0+ cmVsaWQpOwotCXJlcGxhY2VfdmFybm8oKE5vZGUgKikgcm9vdC0+cHJvY2Vzc2VkX2dyb3VwQ2xh dXNlLAorCXJlcGxhY2VfdmFybm8ocm9vdCwgKE5vZGUgKikgcm9vdC0+cHJvY2Vzc2VkX2dyb3Vw Q2xhdXNlLAogCQkJCSAgdG9SZW1vdmUtPnJlbGlkLCB0b0tlZXAtPnJlbGlkKTsKIAlyZXBsYWNl X3JlbGlkKHJvb3QtPmFsbF9yZXN1bHRfcmVsaWRzLCB0b1JlbW92ZS0+cmVsaWQsIHRvS2VlcC0+ cmVsaWQpOwogCXJlcGxhY2VfcmVsaWQocm9vdC0+bGVhZl9yZXN1bHRfcmVsaWRzLCB0b1JlbW92 ZS0+cmVsaWQsIHRvS2VlcC0+cmVsaWQpOwpAQCAtMjA0OSw3ICsyMDcyLDcgQEAgc3BsaXRfc2Vs ZmpvaW5fcXVhbHMoUGxhbm5lckluZm8gKnJvb3QsIExpc3QgKmpvaW5xdWFscywgTGlzdCAqKnNl bGZqb2lucXVhbHMsCiAJCSAqIHdoZW4gd2UgaGF2ZSBjYXN0IG9mIHRoZSBzYW1lIHZhciB0byBk aWZmZXJlbnQgKGJ1dCBjb21wYXRpYmxlKQogCQkgKiB0eXBlcy4KIAkJICovCi0JCXJlcGxhY2Vf dmFybm8ocmlnaHRleHByLCBibXNfc2luZ2xldG9uX21lbWJlcihyaW5mby0+cmlnaHRfcmVsaWRz KSwKKwkJcmVwbGFjZV92YXJubyhyb290LCByaWdodGV4cHIsIGJtc19zaW5nbGV0b25fbWVtYmVy KHJpbmZvLT5yaWdodF9yZWxpZHMpLAogCQkJCQkgIGJtc19zaW5nbGV0b25fbWVtYmVyKHJpbmZv LT5sZWZ0X3JlbGlkcykpOwogCiAJCWlmIChlcXVhbChsZWZ0ZXhwciwgcmlnaHRleHByKSkKQEAg LTIwOTAsNyArMjExMyw3IEBAIG1hdGNoX3VuaXF1ZV9jbGF1c2VzKFBsYW5uZXJJbmZvICpyb290 LCBSZWxPcHRJbmZvICpvdXRlciwgTGlzdCAqdWNsYXVzZXMsCiAJCQkgICBibXNfaXNfZW1wdHko cmluZm8tPnJpZ2h0X3JlbGlkcykpOwogCiAJCWNsYXVzZSA9IChFeHByICopIGNvcHlPYmplY3Qo cmluZm8tPmNsYXVzZSk7Ci0JCXJlcGxhY2VfdmFybm8oKE5vZGUgKikgY2xhdXNlLCByZWxpZCwg b3V0ZXItPnJlbGlkKTsKKwkJcmVwbGFjZV92YXJubyhyb290LCAoTm9kZSAqKSBjbGF1c2UsIHJl bGlkLCBvdXRlci0+cmVsaWQpOwogCiAJCWljbGF1c2UgPSBibXNfaXNfZW1wdHkocmluZm8tPmxl ZnRfcmVsaWRzKSA/IGdldF9yaWdodG9wKGNsYXVzZSkgOgogCQkJZ2V0X2xlZnRvcChjbGF1c2Up OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvYXBwZW5kaW5mby5jIGIv c3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvYXBwZW5kaW5mby5jCmluZGV4IDUxZmRlYWNlN2Qu LjI3ZTRiMDkzZDcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL2FwcGVu ZGluZm8uYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9hcHBlbmRpbmZvLmMKQEAg LTQ5MSw2ICs0OTEsOCBAQCBhZGp1c3RfYXBwZW5kcmVsX2F0dHJzX211dGF0b3IoTm9kZSAqbm9k ZSwKIAkJbmV3aW5mby0+cmlnaHRfYnVja2V0c2l6ZSA9IC0xOwogCQluZXdpbmZvLT5sZWZ0X21j dmZyZXEgPSAtMTsKIAkJbmV3aW5mby0+cmlnaHRfbWN2ZnJlcSA9IC0xOworCQluZXdpbmZvLT5l cV9zb3VyY2VzX2luZGV4ID0gLTE7CisJCW5ld2luZm8tPmVxX2Rlcml2ZXNfaW5kZXggPSAtMTsK IAogCQlyZXR1cm4gKE5vZGUgKikgbmV3aW5mbzsKIAl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9vcHRpbWl6ZXIvdXRpbC9yZXN0cmljdGluZm8uYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91 dGlsL3Jlc3RyaWN0aW5mby5jCmluZGV4IDBiNDA2ZTkzMzQuLjU5YmE1MDNlY2IgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3Jlc3RyaWN0aW5mby5jCisrKyBiL3NyYy9i YWNrZW5kL29wdGltaXplci91dGlsL3Jlc3RyaWN0aW5mby5jCkBAIC0yNDcsNiArMjQ3LDkgQEAg bWFrZV9yZXN0cmljdGluZm9faW50ZXJuYWwoUGxhbm5lckluZm8gKnJvb3QsCiAJcmVzdHJpY3Rp bmZvLT5sZWZ0X2hhc2hlcW9wZXJhdG9yID0gSW52YWxpZE9pZDsKIAlyZXN0cmljdGluZm8tPnJp Z2h0X2hhc2hlcW9wZXJhdG9yID0gSW52YWxpZE9pZDsKIAorCXJlc3RyaWN0aW5mby0+ZXFfc291 cmNlc19pbmRleCA9IC0xOworCXJlc3RyaWN0aW5mby0+ZXFfZGVyaXZlc19pbmRleCA9IC0xOwor CiAJcmV0dXJuIHJlc3RyaWN0aW5mbzsKIH0KIApAQCAtNDAzLDYgKzQwNiw4IEBAIGNvbW11dGVf cmVzdHJpY3RpbmZvKFJlc3RyaWN0SW5mbyAqcmluZm8sIE9pZCBjb21tX29wKQogCXJlc3VsdC0+ cmlnaHRfbWN2ZnJlcSA9IHJpbmZvLT5sZWZ0X21jdmZyZXE7CiAJcmVzdWx0LT5sZWZ0X2hhc2hl cW9wZXJhdG9yID0gSW52YWxpZE9pZDsKIAlyZXN1bHQtPnJpZ2h0X2hhc2hlcW9wZXJhdG9yID0g SW52YWxpZE9pZDsKKwlyZXN1bHQtPmVxX3NvdXJjZXNfaW5kZXggPSAtMTsKKwlyZXN1bHQtPmVx X2Rlcml2ZXNfaW5kZXggPSAtMTsKIAogCXJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rl cy5oCmluZGV4IDFjNWQ3YmMwYzEuLmI4NTY3MjI1MzMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L25vZGVzL3BhdGhub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oCkBA IC0yNjIyLDcgKzI2MjIsMTIgQEAgdHlwZWRlZiBzdHJ1Y3QgUmVzdHJpY3RJbmZvCiAJLyogbnVt YmVyIG9mIGJhc2UgcmVscyBpbiBjbGF1c2VfcmVsaWRzICovCiAJaW50CQkJbnVtX2Jhc2VfcmVs cyBwZ19ub2RlX2F0dHIoZXF1YWxfaWdub3JlKTsKIAotCS8qIFRoZSByZWxpZHMgKHZhcm5vcyt2 YXJudWxsaW5ncmVscykgYWN0dWFsbHkgcmVmZXJlbmNlZCBpbiB0aGUgY2xhdXNlOiAqLworCS8q CisJICogVGhlIHJlbGlkcyAodmFybm9zK3Zhcm51bGxpbmdyZWxzKSBhY3R1YWxseSByZWZlcmVu Y2VkIGluIHRoZSBjbGF1c2UuCisJICoKKwkgKiBOT1RFOiBUaGlzIGZpZWxkIG11c3QgYmUgdXBk YXRlZCB0aHJvdWdoIHVwZGF0ZV9jbGF1c2VfcmVsaWRzKCksIG5vdCBieQorCSAqIHNldHRpbmcg dGhlIGZpZWxkIGRpcmVjdGx5LgorCSAqLwogCVJlbGlkcwkJY2xhdXNlX3JlbGlkcyBwZ19ub2Rl X2F0dHIoZXF1YWxfaWdub3JlKTsKIAogCS8qIFRoZSBzZXQgb2YgcmVsaWRzIHJlcXVpcmVkIHRv IGV2YWx1YXRlIHRoZSBjbGF1c2U6ICovCkBAIC0yNzM3LDYgKzI3NDIsMTAgQEAgdHlwZWRlZiBz dHJ1Y3QgUmVzdHJpY3RJbmZvCiAJLyogaGFzaCBlcXVhbGl0eSBvcGVyYXRvcnMgdXNlZCBmb3Ig bWVtb2l6ZSBub2RlcywgZWxzZSBJbnZhbGlkT2lkICovCiAJT2lkCQkJbGVmdF9oYXNoZXFvcGVy YXRvciBwZ19ub2RlX2F0dHIoZXF1YWxfaWdub3JlKTsKIAlPaWQJCQlyaWdodF9oYXNoZXFvcGVy YXRvciBwZ19ub2RlX2F0dHIoZXF1YWxfaWdub3JlKTsKKworCS8qIHRoZSBpbmRleCB3aXRoaW4g cm9vdC0+ZXFfc291cmNlcyBhbmQgcm9vdC0+ZXFfZGVyaXZlcyAqLworCWludAkJCWVxX3NvdXJj ZXNfaW5kZXggcGdfbm9kZV9hdHRyKGVxdWFsX2lnbm9yZSk7CisJaW50CQkJZXFfZGVyaXZlc19p bmRleCBwZ19ub2RlX2F0dHIoZXF1YWxfaWdub3JlKTsKIH0gUmVzdHJpY3RJbmZvOwogCiAvKgpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL3BhdGhzLmggYi9zcmMvaW5jbHVkZS9v cHRpbWl6ZXIvcGF0aHMuaAppbmRleCBkMDcxZjZkMGZjLi5jMjNiMTc3ZjY1IDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGF0aHMuaAorKysgYi9zcmMvaW5jbHVkZS9vcHRpbWl6 ZXIvcGF0aHMuaApAQCAtMTI4LDYgKzEyOCw4IEBAIGV4dGVybiBib29sIHByb2Nlc3NfZXF1aXZh bGVuY2UoUGxhbm5lckluZm8gKnJvb3QsCiBleHRlcm4gRXhwciAqY2Fub25pY2FsaXplX2VjX2V4 cHJlc3Npb24oRXhwciAqZXhwciwKIAkJCQkJCQkJCQlPaWQgcmVxX3R5cGUsIE9pZCByZXFfY29s bGF0aW9uKTsKIGV4dGVybiB2b2lkIHJlY29uc2lkZXJfb3V0ZXJfam9pbl9jbGF1c2VzKFBsYW5u ZXJJbmZvICpyb290KTsKK2V4dGVybiB2b2lkIHVwZGF0ZV9jbGF1c2VfcmVsaWRzKFBsYW5uZXJJ bmZvICpyb290LCBSZXN0cmljdEluZm8gKnJpbmZvLAorCQkJCQkJCQkgUmVsaWRzIG5ld19jbGF1 c2VfcmVsaWRzKTsKIGV4dGVybiBFcXVpdmFsZW5jZUNsYXNzICpnZXRfZWNsYXNzX2Zvcl9zb3J0 X2V4cHIoUGxhbm5lckluZm8gKnJvb3QsCiAJCQkJCQkJCQkJCQkgIEV4cHIgKmV4cHIsCiAJCQkJ CQkJCQkJCQkgIExpc3QgKm9wZmFtaWxpZXMsCi0tIAoyLjQyLjAud2luZG93cy4yCgo= --0000000000007e2747060f20f334--