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 1qLf6s-000NMK-CN for pgsql-hackers@arkaria.postgresql.org; Tue, 18 Jul 2023 07:27:02 +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 1qLf6q-005QRh-V3 for pgsql-hackers@arkaria.postgresql.org; Tue, 18 Jul 2023 07:27:00 +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 1qLf6q-005QRZ-Bs for pgsql-hackers@lists.postgresql.org; Tue, 18 Jul 2023 07:27:00 +0000 Received: from mail-pg1-x52c.google.com ([2607:f8b0:4864:20::52c]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1qLf6j-0005RK-WE for pgsql-hackers@postgresql.org; Tue, 18 Jul 2023 07:26:59 +0000 Received: by mail-pg1-x52c.google.com with SMTP id 41be03b00d2f7-55adfa72d3fso3011324a12.3 for ; Tue, 18 Jul 2023 00:26:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1689665213; x=1692257213; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=8IFs2TfIGdqWwy+G9fOi/xgvlExgxPsnC1eiSyGk/Y4=; b=KcP9AXVnGJINDzCDQshImBlZ+3bq3H5XYMWpzRn01EqptWGi5U3GDQx12cT/GhmRl5 T0AoblW1Sz/vFR0bw2JElJYGWNYSi0a5K2DX6iPbxGmo+a+alBrYfbP4UZJXTIhSHtly reh3G9fjAjNP26whh0glkTzotdommJ044HqGWIeTPPkfO2pBSOXFBGMbhCgPo5SW997a 3ZbtRg/HgaHGEAUEtxyCnWfwLXkw1pu0AoIzY/rEIdxpYdJ3HPf4KVf8M/6PL47X2FeU U2MTsj5YKDGiRWgkX8YetI/pO7rrgcR5FBgXUzw2xvX2jWUporpc4QEW8XnyqVndQ4+S Q3Dw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1689665213; x=1692257213; 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=8IFs2TfIGdqWwy+G9fOi/xgvlExgxPsnC1eiSyGk/Y4=; b=MpAw8kfklPufVfOzHg3sAM92vIKEQwBV3b2xoHyAbI+f5EadqltciSNnM8NbuVQX0/ 1fFPkluhO4quejt40sh2No7ktvD6HGK/0xndU0thJ3DIYKeqgLbqX96mbKoDBOHN6Iyj E6gTFisCUjtJrILXnLHUtuTmkvo3EEU70hGD1eVopdBpBzaVH6wYN6rXR2pQDhQottNF Cp9UZzWBCLSthEMYkUsdwC+M+/seyLzuMlmvbnBuk0Ae6Z0tHlQEZqDOPhlSERxOLThy LP+AR+1xMYyQMrT6ctboNhiF7yEdtKnebMF60h6f/6rueTsPeC6luMlDq3A2xg35u1YC qUhg== X-Gm-Message-State: ABy/qLZ6mp3JoKGk0sqdouJC3biIS2GM9GBrVmggFGw3H6GVijK3ARsy +yQ4XE5Oee/pwaRkNLXJTvwSUlZYHHoVD2jx4t4= X-Google-Smtp-Source: APBJJlGpxyf08g09Dcb4fbfZt9PWIz9tMzG/CBDphZCaCnVC+EiXdOsaX6ciGOYY+XNOf8uz8l3Ter3zPbjUUy0XUWc= X-Received: by 2002:a17:90b:4f8d:b0:267:6c28:17b2 with SMTP id qe13-20020a17090b4f8d00b002676c2817b2mr10745492pjb.7.1689665212974; Tue, 18 Jul 2023 00:26:52 -0700 (PDT) MIME-Version: 1.0 References: <20221221101846.7zsi7lscnm5ediik@alvherre.pgsql> <1350682.1671635927@sss.pgh.pa.us> <4191508.1674157166@sss.pgh.pa.us> <349124.1674185509@sss.pgh.pa.us> <20230207180855.xy5m4puwh5gzd7xy@awork3.anarazel.de> <1274885.1680558101@sss.pgh.pa.us> <9D23D8BB-83EE-451E-95C1-CF42ADB76869@yesql.se> In-Reply-To: From: Amit Langote Date: Tue, 18 Jul 2023 16:26:35 +0900 Message-ID: Subject: Re: generic plans and "initial" pruning To: Thom Brown Cc: Daniel Gustafsson , Tom Lane , Alvaro Herrera , Andres Freund , David Rowley , Jacob Champion , PostgreSQL Hackers , Robert Haas Content-Type: multipart/mixed; boundary="000000000000cf239e0600bdd6af" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000cf239e0600bdd6af Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi Thom, On Tue, Jul 18, 2023 at 1:33=E2=80=AFAM Thom Brown wrote: > On Thu, 13 Jul 2023 at 13:59, Amit Langote wrot= e: > > In an absolutely brown-paper-bag moment, I realized that I had not > > updated src/backend/executor/README to reflect the changes to the > > executor's control flow that this patch makes. That is, after > > scrapping the old design back in January whose details *were* > > reflected in the patches before that redesign. > > > > Anyway, the attached fixes that. > > > > Tom, do you think you have bandwidth in the near future to give this > > another look? I think I've addressed the comments that you had given > > back in April, though as mentioned in the previous message, there may > > still be some funny-looking aspects still remaining. In any case, I > > have no intention of pressing ahead with the patch without another > > committer having had a chance to sign off on it. > > I've only just started taking a look at this, and my first test drive > yields very impressive results: > > 8192 partitions (3 runs, 10000 rows) > Head 391.294989 382.622481 379.252236 > Patched 13088.145995 13406.135531 13431.828051 Just to be sure, did you use pgbench --Mprepared with plan_cache_mode =3D force_generic_plan in postgresql.conf? > Looking at your changes to README, I would like to suggest rewording > the following: > > +table during planning. This means that inheritance child tables, which = are > +added to the query's range table during planning, if they are present in= a > +cached plan tree would not have been locked. > > To: > > This means that inheritance child tables present in a cached plan > tree, which are added to the query's range table during planning, > would not have been locked. > > Also, further down: > > s/intiatialize/initialize/ > > I'll carry on taking a closer look and see if I can break it. Thanks for looking. I've fixed these issues in the attached updated patch. I've also changed the position of a newly added paragraph in src/backend/executor/README so that it doesn't break the flow of the existing text. --=20 Thanks, Amit Langote EDB: http://www.enterprisedb.com --000000000000cf239e0600bdd6af Content-Type: application/octet-stream; name="v42-0001-Add-field-to-store-parent-relids-to-Append-Merge.patch" Content-Disposition: attachment; filename="v42-0001-Add-field-to-store-parent-relids-to-Append-Merge.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lk7yy4lp3 RnJvbSBiNjQxM2UzMjRjNWJlOTI3M2EzYzMzYWEwMjZjMDZjZGZiNzEwZGE3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFR1ZSwgNCBKdWwgMjAyMyAyMjozNjozMSArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjQy IDEvNF0gQWRkIGZpZWxkIHRvIHN0b3JlIHBhcmVudCByZWxpZHMgdG8KIEFwcGVuZC9NZXJnZUFw cGVuZAoKVGhlcmUncyBubyB3YXkgY3VycmVudGx5IGluIHRoZSBleGVjdXRvciB0byB0ZWxsIGlm IHRoZSBjaGlsZApzdWJwbGFucyBvZiBBcHBlbmQvTWVyZ2VBcHBlbmQgYXJlIHNjYW5uaW5nIHBh cnRpdGlvbnMsIGFuZCBpZgp0aGV5IGluZGVlZCBkbywgd2hhdCB0aGUgUlQgaW5kZXhlcyBvZiB0 aGVpciBwYXJlbnQvYW5jZXN0b3IgdGFibGVzCmFyZS4gIEV4ZWN1dG9yIGRvZXNuJ3QgbmVlZCB0 byBzZWUgdGhlaXIgUlQgaW5kZXhlcyBleGNlcHQgZm9yCnJ1bi10aW1lIHBydW5pbmcsIGluIHdo aWNoIGNhc2UgdGhleSBjYW4gY2FuIGJlIGZvdW5kIGluIHRoZQpQYXJ0aXRpb25QcnVuZUluZm8s IGJ1dCBhIGZ1dHVyZSBjb21taXQgd2lsbCBjcmVhdGUgYSBuZWVkIGZvcgp0aGVtIHRvIGJlIGF2 YWlsYWJsZSBhdCBhbGwgdGltZXMgZm9yIHRoZSBwdXJwb3NlIG9mIGxvY2tpbmcKdGhvc2UgcGFy ZW50L2FuY2VzdG9yIHRhYmxlcyB3aGVuIGV4ZWN1dGluZyBhIGNhY2hlZCBwbGFuLgoKVGhlIGNv ZGUgdG8gbG9vayB1cCBwYXJ0aXRpb25lZCBwYXJlbnQgcmVsaWRzIGZvciBhIGdpdmVuIGxpc3Qg b2YKcGFydGl0aW9uIHNjYW4gc3VicGF0aHMgb2YgYW4gQXBwZW5kL01lcmdlQXBwZW5kIGlzIGFs cmVhZHkgcHJlc2VudAppbiBtYWtlX3BhcnRpdGlvbl9wcnVuZWluZm8oKSBidXQgaXQncyBsb2Nh bCB0byBwYXJ0cHJ1bmUuYy4gIFRoaXMKY29tbWl0IHJlZmFjdG9ycyB0aGF0IGNvZGUgaW50byBp dHMgb3duIGZ1bmN0aW9uIGNhbGxlZAphZGRfYXBwZW5kX3N1YnBhdGhfcGFydHJlbGlkcygpIGRl ZmluZWQgaW4gYXBwZW5kaW5mby5jIGFuZApnZW5lcmFsaXplcyBpdCB0byBjb25zaWRlciBjaGls ZCBqb2luIGFuZCBhZ2dyZWdhdGUgcGF0aHMuICBUbwpmYWNpbGl0YXRlIGxvb2tpbmcgdXAgb2Yg cGFyZW50IHJlbHMgb2YgY2hpbGQgZ3JvdXBpbmcgcmVscyBpbgphZGRfYXBwZW5kX3N1YnBhdGhf cGFydHJlbGlkcygpLCBwYXJlbnQgbGlua3MgYXJlIG5vdyBhbHNvIHNldCBpbgp0aGUgUmVsT3B0 SW5mb3Mgb2YgY2hpbGQgZ3JvdXBpbmcgcmVscyB0b28sIGxpa2UgdGhleSBhcmUgaW4KdGhvc2Ug b2YgY2hpbGQgYmFzZSBhbmQgam9pbiByZWxzLgoKRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3Iu ZXMvbS9DQStIaXdxRkdrTVNnZTZUZ0M5S1F6ZGUwb2hwQXljTFF1Vjdvb2l0RUVwYktCME9fbWdA bWFpbC5nbWFpbC5jb20KLS0tCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFu LmMgfCAgNDEgKysrKysrLS0KIHNyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYyAg ICB8ICAgMyArCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMgICAgfCAgIDQg Kwogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvYXBwZW5kaW5mby5jIHwgMTM0ICsrKysrKysr KysrKysrKysrKysrKysrKwogc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5jICAg IHwgMTI0ICsrKy0tLS0tLS0tLS0tLS0tLS0tLS0KIHNyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rl cy5oICAgICAgICAgICB8ICAxNCArKysKIHNyYy9pbmNsdWRlL29wdGltaXplci9hcHBlbmRpbmZv LmggICAgICB8ICAgMyArCiBzcmMvaW5jbHVkZS9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmggICAg fCAgIDMgKy0KIDggZmlsZXMgY2hhbmdlZCwgMjAzIGluc2VydGlvbnMoKyksIDEyMyBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFu LmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMKaW5kZXggYWY0ODEw OTA1OC4uOGFjMWQzOTA5YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4v Y3JlYXRlcGxhbi5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4u YwpAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgIm5vZGVzL2V4dGVuc2libGUuaCIKICNpbmNs dWRlICJub2Rlcy9tYWtlZnVuY3MuaCIKICNpbmNsdWRlICJub2Rlcy9ub2RlRnVuY3MuaCIKKyNp bmNsdWRlICJvcHRpbWl6ZXIvYXBwZW5kaW5mby5oIgogI2luY2x1ZGUgIm9wdGltaXplci9jbGF1 c2VzLmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL2Nvc3QuaCIKICNpbmNsdWRlICJvcHRpbWl6ZXIv b3B0aW1pemVyLmgiCkBAIC0xMjEwLDYgKzEyMTEsNyBAQCBjcmVhdGVfYXBwZW5kX3BsYW4oUGxh bm5lckluZm8gKnJvb3QsIEFwcGVuZFBhdGggKmJlc3RfcGF0aCwgaW50IGZsYWdzKQogCU9pZAkJ ICAgKm5vZGVDb2xsYXRpb25zID0gTlVMTDsKIAlib29sCSAgICpub2RlTnVsbHNGaXJzdCA9IE5V TEw7CiAJYm9vbAkJY29uc2lkZXJfYXN5bmMgPSBmYWxzZTsKKwlMaXN0CSAgICphbGxwYXJ0cmVs aWRzID0gTklMOwogCiAJLyoKIAkgKiBUaGUgc3VicGF0aHMgbGlzdCBjb3VsZCBiZSBlbXB0eSwg aWYgZXZlcnkgY2hpbGQgd2FzIHByb3ZlbiBlbXB0eSBieQpAQCAtMTM1MSwxNSArMTM1MywyMyBA QCBjcmVhdGVfYXBwZW5kX3BsYW4oUGxhbm5lckluZm8gKnJvb3QsIEFwcGVuZFBhdGggKmJlc3Rf cGF0aCwgaW50IGZsYWdzKQogCQkJKytuYXN5bmNwbGFuczsKIAkJfQogCisJCS8qCisJCSAqIEZp bmQgcGFydGl0aW9uZWQgcGFyZW50IHJlbChzKSBvZiB0aGUgc3VicGF0aCdzIHJlbChzKS4KKwkJ ICovCisJCWFsbHBhcnRyZWxpZHMgPSBhZGRfYXBwZW5kX3N1YnBhdGhfcGFydHJlbGlkcyhyb290 LCBzdWJwYXRoLCByZWwsCisJCQkJCQkJCQkJCQkJICBhbGxwYXJ0cmVsaWRzKTsKKwogCQlzdWJw bGFucyA9IGxhcHBlbmQoc3VicGxhbnMsIHN1YnBsYW4pOwogCX0KIAorCXBsYW4tPmFsbHBhcnRy ZWxpZHMgPSBhbGxwYXJ0cmVsaWRzOworCiAJLyoKLQkgKiBJZiBhbnkgcXVhbHMgZXhpc3QsIHRo ZXkgbWF5IGJlIHVzZWZ1bCB0byBwZXJmb3JtIGZ1cnRoZXIgcGFydGl0aW9uCi0JICogcHJ1bmlu ZyBkdXJpbmcgZXhlY3V0aW9uLiAgR2F0aGVyIGluZm9ybWF0aW9uIG5lZWRlZCBieSB0aGUgZXhl Y3V0b3IgdG8KLQkgKiBkbyBwYXJ0aXRpb24gcHJ1bmluZy4KKwkgKiBJZiBzY2FubmluZyBwYXJ0 aXRpb25zLCBjaGVjayBpZiB0aGVyZSBhcmUgcXVhbHMgdGhhdCBtYXkgYmUgdXNlZnVsIHRvCisJ ICogcGVyZm9ybSBmdXJ0aGVyIHBhcnRpdGlvbiBwcnVuaW5nIGR1cmluZyBleGVjdXRpb24uICBH YXRoZXIgaW5mb3JtYXRpb24KKwkgKiBuZWVkZWQgYnkgdGhlIGV4ZWN1dG9yIHRvIGRvIHBhcnRp dGlvbiBwcnVuaW5nLgogCSAqLwotCWlmIChlbmFibGVfcGFydGl0aW9uX3BydW5pbmcpCisJaWYg KGVuYWJsZV9wYXJ0aXRpb25fcHJ1bmluZyAmJiBhbGxwYXJ0cmVsaWRzICE9IE5JTCkKIAl7CiAJ CUxpc3QJICAgKnBydW5lcXVhbDsKIApAQCAtMTM4MCw3ICsxMzkwLDggQEAgY3JlYXRlX2FwcGVu ZF9wbGFuKFBsYW5uZXJJbmZvICpyb290LCBBcHBlbmRQYXRoICpiZXN0X3BhdGgsIGludCBmbGFn cykKIAkJCXBhcnRwcnVuZWluZm8gPQogCQkJCW1ha2VfcGFydGl0aW9uX3BydW5laW5mbyhyb290 LCByZWwsCiAJCQkJCQkJCQkJIGJlc3RfcGF0aC0+c3VicGF0aHMsCi0JCQkJCQkJCQkJIHBydW5l cXVhbCk7CisJCQkJCQkJCQkJIHBydW5lcXVhbCwKKwkJCQkJCQkJCQkgYWxscGFydHJlbGlkcyk7 CiAJfQogCiAJcGxhbi0+YXBwZW5kcGxhbnMgPSBzdWJwbGFuczsKQEAgLTE0MjYsNiArMTQzNyw3 IEBAIGNyZWF0ZV9tZXJnZV9hcHBlbmRfcGxhbihQbGFubmVySW5mbyAqcm9vdCwgTWVyZ2VBcHBl bmRQYXRoICpiZXN0X3BhdGgsCiAJTGlzdENlbGwgICAqc3VicGF0aHM7CiAJUmVsT3B0SW5mbyAq cmVsID0gYmVzdF9wYXRoLT5wYXRoLnBhcmVudDsKIAlQYXJ0aXRpb25QcnVuZUluZm8gKnBhcnRw cnVuZWluZm8gPSBOVUxMOworCUxpc3QJICAgKmFsbHBhcnRyZWxpZHMgPSBOSUw7CiAKIAkvKgog CSAqIFdlIGRvbid0IGhhdmUgdGhlIGFjdHVhbCBjcmVhdGlvbiBvZiB0aGUgTWVyZ2VBcHBlbmQg bm9kZSBzcGxpdCBvdXQKQEAgLTE1MTUsMTUgKzE1MjcsMjMgQEAgY3JlYXRlX21lcmdlX2FwcGVu ZF9wbGFuKFBsYW5uZXJJbmZvICpyb290LCBNZXJnZUFwcGVuZFBhdGggKmJlc3RfcGF0aCwKIAkJ CXN1YnBsYW4gPSAoUGxhbiAqKSBzb3J0OwogCQl9CiAKKwkJLyoKKwkJICogRmluZCBwYXJ0aXRp b25lZCBwYXJlbnQgcmVsKHMpIG9mIHRoZSBzdWJwYXRoJ3MgcmVsKHMpLgorCQkgKi8KKwkJYWxs cGFydHJlbGlkcyA9IGFkZF9hcHBlbmRfc3VicGF0aF9wYXJ0cmVsaWRzKHJvb3QsIHN1YnBhdGgs IHJlbCwKKwkJCQkJCQkJCQkJCQkgIGFsbHBhcnRyZWxpZHMpOworCiAJCXN1YnBsYW5zID0gbGFw cGVuZChzdWJwbGFucywgc3VicGxhbik7CiAJfQogCisJbm9kZS0+YWxscGFydHJlbGlkcyA9IGFs bHBhcnRyZWxpZHM7CisKIAkvKgotCSAqIElmIGFueSBxdWFscyBleGlzdCwgdGhleSBtYXkgYmUg dXNlZnVsIHRvIHBlcmZvcm0gZnVydGhlciBwYXJ0aXRpb24KLQkgKiBwcnVuaW5nIGR1cmluZyBl eGVjdXRpb24uICBHYXRoZXIgaW5mb3JtYXRpb24gbmVlZGVkIGJ5IHRoZSBleGVjdXRvciB0bwot CSAqIGRvIHBhcnRpdGlvbiBwcnVuaW5nLgorCSAqIElmIHNjYW5uaW5nIHBhcnRpdGlvbnMsIGNo ZWNrIGlmIHRoZXJlIGFyZSBxdWFscyB0aGF0IG1heSBiZSB1c2VmdWwgdG8KKwkgKiBwZXJmb3Jt IGZ1cnRoZXIgcGFydGl0aW9uIHBydW5pbmcgZHVyaW5nIGV4ZWN1dGlvbi4gIEdhdGhlciBpbmZv cm1hdGlvbgorCSAqIG5lZWRlZCBieSB0aGUgZXhlY3V0b3IgdG8gZG8gcGFydGl0aW9uIHBydW5p bmcuCiAJICovCi0JaWYgKGVuYWJsZV9wYXJ0aXRpb25fcHJ1bmluZykKKwlpZiAoZW5hYmxlX3Bh cnRpdGlvbl9wcnVuaW5nICYmIGFsbHBhcnRyZWxpZHMgIT0gTklMKQogCXsKIAkJTGlzdAkgICAq cHJ1bmVxdWFsOwogCkBAIC0xNTM1LDcgKzE1NTUsOCBAQCBjcmVhdGVfbWVyZ2VfYXBwZW5kX3Bs YW4oUGxhbm5lckluZm8gKnJvb3QsIE1lcmdlQXBwZW5kUGF0aCAqYmVzdF9wYXRoLAogCQlpZiAo cHJ1bmVxdWFsICE9IE5JTCkKIAkJCXBhcnRwcnVuZWluZm8gPSBtYWtlX3BhcnRpdGlvbl9wcnVu ZWluZm8ocm9vdCwgcmVsLAogCQkJCQkJCQkJCQkJCSBiZXN0X3BhdGgtPnN1YnBhdGhzLAotCQkJ CQkJCQkJCQkJCSBwcnVuZXF1YWwpOworCQkJCQkJCQkJCQkJCSBwcnVuZXF1YWwsCisJCQkJCQkJ CQkJCQkJIGFsbHBhcnRyZWxpZHMpOwogCX0KIAogCW5vZGUtPm1lcmdlcGxhbnMgPSBzdWJwbGFu czsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYyBiL3Ny Yy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYwppbmRleCA0NGVmYjFmNGViLi5mOTdi YzA5MTEzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMK KysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCkBAIC03ODU1LDggKzc4 NTUsMTEgQEAgY3JlYXRlX3BhcnRpdGlvbndpc2VfZ3JvdXBpbmdfcGF0aHMoUGxhbm5lckluZm8g KnJvb3QsCiAJCQkJCQkJCQkgICBhZ2dfY29zdHMsIGdkLCAmY2hpbGRfZXh0cmEsCiAJCQkJCQkJ CQkgICAmY2hpbGRfcGFydGlhbGx5X2dyb3VwZWRfcmVsKTsKIAorCQkvKiBNYXJrIGFzIGNoaWxk IG9mIGdyb3VwZWRfcmVsLiAqLworCQljaGlsZF9ncm91cGVkX3JlbC0+cGFyZW50ID0gZ3JvdXBl ZF9yZWw7CiAJCWlmIChjaGlsZF9wYXJ0aWFsbHlfZ3JvdXBlZF9yZWwpCiAJCXsKKwkJCWNoaWxk X3BhcnRpYWxseV9ncm91cGVkX3JlbC0+cGFyZW50ID0gZ3JvdXBlZF9yZWw7CiAJCQlwYXJ0aWFs bHlfZ3JvdXBlZF9saXZlX2NoaWxkcmVuID0KIAkJCQlsYXBwZW5kKHBhcnRpYWxseV9ncm91cGVk X2xpdmVfY2hpbGRyZW4sCiAJCQkJCQljaGlsZF9wYXJ0aWFsbHlfZ3JvdXBlZF9yZWwpOwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jIGIvc3JjL2JhY2tl bmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jCmluZGV4IDk3ZmE1NjFlNGUuLjg1NGRkN2M4YWYg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMuYworKysgYi9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMKQEAgLTE3NjYsNiArMTc2Niw4IEBA IHNldF9hcHBlbmRfcmVmZXJlbmNlcyhQbGFubmVySW5mbyAqcm9vdCwKIAlzZXRfZHVtbXlfdGxp c3RfcmVmZXJlbmNlcygoUGxhbiAqKSBhcGxhbiwgcnRvZmZzZXQpOwogCiAJYXBsYW4tPmFwcHJl bGlkcyA9IG9mZnNldF9yZWxpZF9zZXQoYXBsYW4tPmFwcHJlbGlkcywgcnRvZmZzZXQpOworCWZv cmVhY2gobCwgYXBsYW4tPmFsbHBhcnRyZWxpZHMpCisJCWxmaXJzdChsKSA9IG9mZnNldF9yZWxp ZF9zZXQoKFJlbGlkcykgbGZpcnN0KGwpLCBydG9mZnNldCk7CiAKIAlpZiAoYXBsYW4tPnBhcnRf cHJ1bmVfaW5mbykKIAl7CkBAIC0xODQyLDYgKzE4NDQsOCBAQCBzZXRfbWVyZ2VhcHBlbmRfcmVm ZXJlbmNlcyhQbGFubmVySW5mbyAqcm9vdCwKIAlzZXRfZHVtbXlfdGxpc3RfcmVmZXJlbmNlcygo UGxhbiAqKSBtcGxhbiwgcnRvZmZzZXQpOwogCiAJbXBsYW4tPmFwcHJlbGlkcyA9IG9mZnNldF9y ZWxpZF9zZXQobXBsYW4tPmFwcHJlbGlkcywgcnRvZmZzZXQpOworCWZvcmVhY2gobCwgbXBsYW4t PmFsbHBhcnRyZWxpZHMpCisJCWxmaXJzdChsKSA9IG9mZnNldF9yZWxpZF9zZXQoKFJlbGlkcykg bGZpcnN0KGwpLCBydG9mZnNldCk7CiAKIAlpZiAobXBsYW4tPnBhcnRfcHJ1bmVfaW5mbykKIAl7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9hcHBlbmRpbmZvLmMgYi9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9hcHBlbmRpbmZvLmMKaW5kZXggZjQ1NmIzYjBhNC4u NWJkOGU4MmI5YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvYXBwZW5k aW5mby5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL2FwcGVuZGluZm8uYwpAQCAt NDEsNiArNDEsNyBAQCBzdGF0aWMgdm9pZCBtYWtlX2luaF90cmFuc2xhdGlvbl9saXN0KFJlbGF0 aW9uIG9sZHJlbGF0aW9uLAogCQkJCQkJCQkJICBBcHBlbmRSZWxJbmZvICphcHBpbmZvKTsKIHN0 YXRpYyBOb2RlICphZGp1c3RfYXBwZW5kcmVsX2F0dHJzX211dGF0b3IoTm9kZSAqbm9kZSwKIAkJ CQkJCQkJCQkJYWRqdXN0X2FwcGVuZHJlbF9hdHRyc19jb250ZXh0ICpjb250ZXh0KTsKK3N0YXRp YyBMaXN0ICphZGRfcGFydF9yZWxpZHMoTGlzdCAqYWxscGFydHJlbGlkcywgQml0bWFwc2V0ICpw YXJ0cmVsaWRzKTsKIAogCiAvKgpAQCAtMTAzNSwzICsxMDM2LDEzNiBAQCBkaXN0cmlidXRlX3Jv d19pZGVudGl0eV92YXJzKFBsYW5uZXJJbmZvICpyb290KQogCQl9CiAJfQogfQorCisvKgorICog YWRkX2FwcGVuZF9zdWJwYXRoX3BhcnRyZWxpZHMKKyAqCQlMb29rIHVwIGEgY2hpbGQgc3VicGF0 aCdzIHJlbCdzIHBhcnRpdGlvbmVkIHBhcmVudCByZWxpZHMgdXAgdG8KKyAqCQlwYXJlbnRyZWwg YW5kIGFkZCB0aGUgYml0bWFwc2V0IGNvbnRhaW5pbmcgdGhvc2UgaW50bworICoJCSdhbGxwYXJ0 cmVsaWRzJworICovCitMaXN0ICoKK2FkZF9hcHBlbmRfc3VicGF0aF9wYXJ0cmVsaWRzKFBsYW5u ZXJJbmZvICpyb290LCBQYXRoICpzdWJwYXRoLAorCQkJCQkJCSAgUmVsT3B0SW5mbyAqcGFyZW50 cmVsLAorCQkJCQkJCSAgTGlzdCAqYWxscGFydHJlbGlkcykKK3sKKwlSZWxPcHRJbmZvICpwcmVs ID0gc3VicGF0aC0+cGFyZW50OworCVJlbGlkcwkJcGFydHJlbGlkcyA9IE5VTEw7CisKKwkvKiBO b3RoaW5nIHRvIGRvIGlmIHRoZXJlJ3Mgbm8gcGFyZW50IHRvIGJlZ2luIHdpdGguICovCisJaWYg KCFJU19PVEhFUl9SRUwocHJlbCkpCisJCXJldHVybiBhbGxwYXJ0cmVsaWRzOworCisJLyoKKwkg KiBUcmF2ZXJzZSB1cCB0byB0aGUgcGF0aHJlbCdzIHRvcG1vc3QgcGFydGl0aW9uZWQgcGFyZW50 LCBjb2xsZWN0aW5nCisJICogcGFyZW50IHJlbGlkcyBhcyB3ZSBnbzsgYnV0IHN0b3AgaWYgd2Ug cmVhY2ggcGFyZW50cmVsLiAgKE5vcm1hbGx5LCBhCisJICogcGF0aHJlbCdzIHRvcG1vc3QgcGFy dGl0aW9uZWQgcGFyZW50IGlzIGVpdGhlciBwYXJlbnRyZWwgb3IgYSBVTklPTiBBTEwKKwkgKiBh cHBlbmRyZWwgY2hpbGQgb2YgcGFyZW50cmVsLiAgQnV0IHdoZW4gaGFuZGxpbmcgcGFydGl0aW9u d2lzZSBqb2lucyBvZgorCSAqIG11bHRpLWxldmVsIHBhcnRpdGlvbmluZyB0cmVlcywgd2UgY2Fu IHNlZSBhbiBhcHBlbmQgcGF0aCB3aG9zZQorCSAqIHBhcmVudHJlbCBpcyBhbiBpbnRlcm1lZGlh dGUgcGFydGl0aW9uZWQgdGFibGUuKQorCSAqLworCWRvCisJeworCQlSZWxpZHMJcGFyZW50X3Jl bGlkcyA9IE5VTEw7CisKKwkJLyoKKwkJICogRm9yIHNpbXBsZSBjaGlsZCByZWxzLCB3ZSBjYW4g c2ltcGx5IHNldCB0aGUgcGFyZW50X3JlbGlkcyB0bworCQkgKiBwcmVsLT5wYXJlbnQtPnJlbGlk cy4gIEJ1dCBmb3IgcGFydGl0aW9ud2lzZSBqb2luIGFuZCBhZ2dyZWdhdGUKKwkJICogY2hpbGQg cmVscywgd2hpbGUgd2UgY2FuIHVzZSBwcmVsLT5wYXJlbnQgdG8gbW92ZSB1cCB0aGUgdHJlZSwK KwkJICogcGFyZW50X3JlbGlkcyBtdXN0IGJlIGZvdW5kIHRoZSBoYXJkIHdheSB0aHJvdWdoIEFw cGVuZEluZm9JbmZvcywKKwkJICogYmVjYXVzZSAxKSBhIGpvaW5yZWwncyByZWxpZHMgbWF5IHBv aW50IHRvIFJURV9KT0lOIGVudHJpZXMsCisJCSAqIDIpIHRvcG1vc3QgcGFyZW50IGdyb3VwaW5n IHJlbCdzIHJlbGlkcyBmaWVsZCBpcyBOVUxMLgorCQkgKi8KKwkJaWYgKElTX1NJTVBMRV9SRUwo cHJlbCkpCisJCXsKKwkJCXByZWwgPSBwcmVsLT5wYXJlbnQ7CisJCQkvKiBTdG9wIG9uY2Ugd2Ug cmVhY2ggdGhlIHJvb3QgcGFydGl0aW9uZWQgcmVsLiAqLworCQkJaWYgKCFJU19QQVJUSVRJT05F RF9SRUwocHJlbCkpCisJCQkJYnJlYWs7CisJCQlwYXJlbnRfcmVsaWRzID0gYm1zX2FkZF9tZW1i ZXJzKHBhcmVudF9yZWxpZHMsIHByZWwtPnJlbGlkcyk7CisJCX0KKwkJZWxzZQorCQl7CisJCQlB cHBlbmRSZWxJbmZvICoqYXBwaW5mb3M7CisJCQlpbnQJCW5hcHBpbmZvcywKKwkJCQkJaTsKKwor CQkJYXBwaW5mb3MgPSBmaW5kX2FwcGluZm9zX2J5X3JlbGlkcyhyb290LCBwcmVsLT5yZWxpZHMs CisJCQkJCQkJCQkJCSAgICZuYXBwaW5mb3MpOworCQkJZm9yIChpID0gMDsgaSA8IG5hcHBpbmZv czsgaSsrKQorCQkJeworCQkJCUFwcGVuZFJlbEluZm8gKmFwcGluZm8gPSBhcHBpbmZvc1tpXTsK KworCQkJCXBhcmVudF9yZWxpZHMgPSBibXNfYWRkX21lbWJlcihwYXJlbnRfcmVsaWRzLAorCQkJ CQkJCQkJCQkgICBhcHBpbmZvLT5wYXJlbnRfcmVsaWQpOworCQkJfQorCQkJcGZyZWUoYXBwaW5m b3MpOworCQkJcHJlbCA9IHByZWwtPnBhcmVudDsKKwkJfQorCQkvKiBhY2NlcHQgdGhpcyBsZXZl bCBhcyBhbiBpbnRlcmVzdGluZyBwYXJlbnQgKi8KKwkJcGFydHJlbGlkcyA9IGJtc19hZGRfbWVt YmVycyhwYXJ0cmVsaWRzLCBwYXJlbnRfcmVsaWRzKTsKKwkJaWYgKHByZWwgPT0gcGFyZW50cmVs KQorCQkJYnJlYWs7CQkvKiBkb24ndCB0cmF2ZXJzZSBhYm92ZSBwYXJlbnRyZWwgKi8KKwl9IHdo aWxlIChJU19PVEhFUl9SRUwocHJlbCkpOworCisJaWYgKHBhcnRyZWxpZHMgPT0gTlVMTCkKKwkJ cmV0dXJuIGFsbHBhcnRyZWxpZHM7CisKKwlyZXR1cm4gYWRkX3BhcnRfcmVsaWRzKGFsbHBhcnRy ZWxpZHMsIHBhcnRyZWxpZHMpOworfQorCisvKgorICogYWRkX3BhcnRfcmVsaWRzCisgKgkJQWRk IG5ldyBpbmZvIHRvIGEgbGlzdCBvZiBCaXRtYXBzZXRzIG9mIHBhcnRpdGlvbmVkIHJlbGlkcy4K KyAqCisgKiBXaXRoaW4gJ2FsbHBhcnRyZWxpZHMnLCB0aGVyZSBpcyBvbmUgQml0bWFwc2V0IGZv ciBlYWNoIHRvcG1vc3QgcGFyZW50CisgKiBwYXJ0aXRpb25lZCByZWwuICBFYWNoIEJpdG1hcHNl dCBjb250YWlucyB0aGUgUlQgaW5kZXhlcyBvZiB0aGUgdG9wbW9zdAorICogcGFyZW50IGFzIHdl bGwgYXMgaXRzIHJlbGV2YW50IG5vbi1sZWFmIGNoaWxkIHBhcnRpdGlvbnMuICBTaW5jZSAoYnkK KyAqIGNvbnN0cnVjdGlvbiBvZiB0aGUgcmFuZ2V0YWJsZSBsaXN0KSBwYXJlbnQgcGFydGl0aW9u cyBtdXN0IGhhdmUgbG93ZXIKKyAqIFJUIGluZGV4ZXMgdGhhbiB0aGVpciBjaGlsZHJlbiwgd2Ug Y2FuIGRpc3Rpbmd1aXNoIHRoZSB0b3Btb3N0IHBhcmVudAorICogYXMgYmVpbmcgdGhlIGxvd2Vz dCBzZXQgYml0IGluIHRoZSBCaXRtYXBzZXQuCisgKgorICogJ3BhcnRyZWxpZHMnIGNvbnRhaW5z IHRoZSBSVCBpbmRleGVzIG9mIGEgcGFyZW50IHBhcnRpdGlvbmVkIHJlbCwgYW5kCisgKiBwb3Nz aWJseSBzb21lIG5vbi1sZWFmIGNoaWxkcmVuLCB0aGF0IGFyZSBuZXdseSBpZGVudGlmaWVkIGFz IHBhcmVudHMgb2YKKyAqIHNvbWUgc3VicGF0aCByZWwgcGFzc2VkIHRvIG1ha2VfcGFydGl0aW9u X3BydW5laW5mbygpLiAgVGhlc2UgYXJlIGFkZGVkCisgKiB0byBhbiBhcHByb3ByaWF0ZSBtZW1i ZXIgb2YgJ2FsbHBhcnRyZWxpZHMnLgorICoKKyAqIE5vdGUgdGhhdCB0aGUgbGlzdCBjb250YWlu cyBvbmx5IFJUIGluZGV4ZXMgb2YgcGFydGl0aW9uZWQgdGFibGVzIHRoYXQKKyAqIGFyZSBwYXJl bnRzIG9mIHNvbWUgc2Nhbi1sZXZlbCByZWxhdGlvbiBhcHBlYXJpbmcgaW4gdGhlICdzdWJwYXRo cycgdGhhdAorICogbWFrZV9wYXJ0aXRpb25fcHJ1bmVpbmZvKCkgaXMgZGVhbGluZyB3aXRoLiAg QWxzbywgInRvcG1vc3QiIHBhcmVudHMgYXJlCisgKiBub3QgYWxsb3dlZCB0byBiZSBoaWdoZXIg dGhhbiB0aGUgJ3BhcmVudHJlbCcgYXNzb2NpYXRlZCB3aXRoIHRoZSBhcHBlbmQKKyAqIHBhdGgu ICBJbiB0aGlzIHdheSwgd2UgYXZvaWQgZXhwZW5kaW5nIGN5Y2xlcyBvbiBwYXJ0aXRpb25lZCBy ZWxzIHRoYXQKKyAqIGNhbid0IGNvbnRyaWJ1dGUgdXNlZnVsIHBydW5pbmcgaW5mb3JtYXRpb24g Zm9yIHRoZSBwcm9ibGVtIGF0IGhhbmQuCisgKiAoSXQgaXMgcG9zc2libGUgZm9yICdwYXJlbnRy ZWwnIHRvIGJlIGEgY2hpbGQgcGFydGl0aW9uZWQgdGFibGUsIGFuZCBpdAorICogaXMgYWxzbyBw b3NzaWJsZSBmb3Igc2Nhbi1sZXZlbCByZWxhdGlvbnMgdG8gYmUgY2hpbGQgcGFydGl0aW9uZWQg dGFibGVzCisgKiByYXRoZXIgdGhhbiBsZWFmIHBhcnRpdGlvbnMuICBIZW5jZSB3ZSBtdXN0IGNv bnN0cnVjdCB0aGlzIHJlbGF0aW9uIHNldAorICogd2l0aCByZWZlcmVuY2UgdG8gdGhlIHBhcnRp Y3VsYXIgYXBwZW5kIHBhdGggd2UncmUgZGVhbGluZyB3aXRoLCByYXRoZXIKKyAqIHRoYW4gbG9v a2luZyBhdCB0aGUgZnVsbCBwYXJ0aXRpb25pbmcgc3RydWN0dXJlIHJlcHJlc2VudGVkIGluIHRo ZQorICogUmVsT3B0SW5mb3MuKQorICovCitzdGF0aWMgTGlzdCAqCithZGRfcGFydF9yZWxpZHMo TGlzdCAqYWxscGFydHJlbGlkcywgQml0bWFwc2V0ICpwYXJ0cmVsaWRzKQoreworCUluZGV4CQl0 YXJnZXRwYXJ0OworCUxpc3RDZWxsICAgKmxjOworCisJLyogV2UgY2FuIGVhc2lseSBnZXQgdGhl IGxvd2VzdCBzZXQgYml0IHRoaXMgd2F5OiAqLworCXRhcmdldHBhcnQgPSBibXNfbmV4dF9tZW1i ZXIocGFydHJlbGlkcywgLTEpOworCUFzc2VydCh0YXJnZXRwYXJ0ID4gMCk7CisKKwkvKiBMb29r IGZvciBhIG1hdGNoaW5nIHRvcG1vc3QgcGFyZW50ICovCisJZm9yZWFjaChsYywgYWxscGFydHJl bGlkcykKKwl7CisJCUJpdG1hcHNldCAgKmN1cnJwYXJ0cmVsaWRzID0gKEJpdG1hcHNldCAqKSBs Zmlyc3QobGMpOworCQlJbmRleAkJY3VycnRhcmdldCA9IGJtc19uZXh0X21lbWJlcihjdXJycGFy dHJlbGlkcywgLTEpOworCisJCWlmICh0YXJnZXRwYXJ0ID09IGN1cnJ0YXJnZXQpCisJCXsKKwkJ CS8qIEZvdW5kIGEgbWF0Y2gsIHNvIGFkZCBhbnkgbmV3IFJUIGluZGV4ZXMgdG8gdGhpcyBoaWVy YXJjaHkgKi8KKwkJCWN1cnJwYXJ0cmVsaWRzID0gYm1zX2FkZF9tZW1iZXJzKGN1cnJwYXJ0cmVs aWRzLCBwYXJ0cmVsaWRzKTsKKwkJCWxmaXJzdChsYykgPSBjdXJycGFydHJlbGlkczsKKwkJCXJl dHVybiBhbGxwYXJ0cmVsaWRzOworCQl9CisJfQorCS8qIE5vIG1hdGNoLCBzbyBhZGQgdGhlIG5l dyBwYXJ0aXRpb24gaGllcmFyY2h5IHRvIHRoZSBsaXN0ICovCisJcmV0dXJuIGxhcHBlbmQoYWxs cGFydHJlbGlkcywgcGFydHJlbGlkcyk7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJ0 aXRpb25pbmcvcGFydHBydW5lLmMgYi9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydHBydW5l LmMKaW5kZXggNzE3OWIyMmEwNS4uMjEzNTEyYTVmNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv cGFydGl0aW9uaW5nL3BhcnRwcnVuZS5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9w YXJ0cHJ1bmUuYwpAQCAtMTM4LDcgKzEzOCw2IEBAIHR5cGVkZWYgc3RydWN0IFBydW5lU3RlcFJl c3VsdAogfSBQcnVuZVN0ZXBSZXN1bHQ7CiAKIAotc3RhdGljIExpc3QgKmFkZF9wYXJ0X3JlbGlk cyhMaXN0ICphbGxwYXJ0cmVsaWRzLCBCaXRtYXBzZXQgKnBhcnRyZWxpZHMpOwogc3RhdGljIExp c3QgKm1ha2VfcGFydGl0aW9uZWRyZWxfcHJ1bmVpbmZvKFBsYW5uZXJJbmZvICpyb290LAogCQkJ CQkJCQkJCSAgIFJlbE9wdEluZm8gKnBhcmVudHJlbCwKIAkJCQkJCQkJCQkgICBMaXN0ICpwcnVu ZXF1YWwsCkBAIC0yMTgsMzMgKzIxNywzMiBAQCBzdGF0aWMgdm9pZCBwYXJ0a2V5X2RhdHVtX2Zy b21fZXhwcihQYXJ0aXRpb25QcnVuZUNvbnRleHQgKmNvbnRleHQsCiAgKiBvZiBzY2FuIHBhdGhz IGZvciBpdHMgY2hpbGQgcmVscy4KICAqICdwcnVuZXF1YWwnIGlzIGEgbGlzdCBvZiBwb3RlbnRp YWwgcHJ1bmluZyBxdWFscyAoaS5lLiwgcmVzdHJpY3Rpb24KICAqIGNsYXVzZXMgdGhhdCBhcmUg YXBwbGljYWJsZSB0byB0aGUgYXBwZW5kcmVsKS4KKyAqICdhbGxwYXJ0cmVsaWRzJyBjb250YWlu cyBCaXRtYXBzZXRzIG9mIFJUIGluZGV4ZXMgb2YgcGFydGl0aW9uZWQgcGFyZW50cworICogd2hv c2UgcGFydGl0aW9ucycgUGF0aHMgYXJlIGluICdzdWJwYXRocyc7IHRoZXJlJ3Mgb25lIEJpdG1h cHNldCBmb3IgZXZlcnkKKyAqIHBhcnRpdGlvbiB0cmVlIGludm9sdmVkLgogICovCiBQYXJ0aXRp b25QcnVuZUluZm8gKgogbWFrZV9wYXJ0aXRpb25fcHJ1bmVpbmZvKFBsYW5uZXJJbmZvICpyb290 LCBSZWxPcHRJbmZvICpwYXJlbnRyZWwsCiAJCQkJCQkgTGlzdCAqc3VicGF0aHMsCi0JCQkJCQkg TGlzdCAqcHJ1bmVxdWFsKQorCQkJCQkJIExpc3QgKnBydW5lcXVhbCwKKwkJCQkJCSBMaXN0ICph bGxwYXJ0cmVsaWRzKQogewogCVBhcnRpdGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvOwogCUJpdG1h cHNldCAgKmFsbG1hdGNoZWRzdWJwbGFucyA9IE5VTEw7Ci0JTGlzdAkgICAqYWxscGFydHJlbGlk czsKIAlMaXN0CSAgICpwcnVuZXJlbGluZm9zOwogCWludAkJICAgKnJlbGlkX3N1YnBsYW5fbWFw OwogCUxpc3RDZWxsICAgKmxjOwogCWludAkJCWk7CiAKKwlBc3NlcnQobGlzdF9sZW5ndGgoYWxs cGFydHJlbGlkcykgPiAwKTsKKwogCS8qCi0JICogU2NhbiB0aGUgc3VicGF0aHMgdG8gc2VlIHdo aWNoIG9uZXMgYXJlIHNjYW5zIG9mIHBhcnRpdGlvbiBjaGlsZAotCSAqIHJlbGF0aW9ucywgYW5k IGlkZW50aWZ5IHRoZWlyIHBhcmVudCBwYXJ0aXRpb25lZCByZWxzLiAgKE5vdGU6IHdlIG11c3QK LQkgKiByZXN0cmljdCB0aGUgcGFyZW50IHBhcnRpdGlvbmVkIHJlbHMgdG8gYmUgcGFyZW50cmVs IG9yIGNoaWxkcmVuIG9mCi0JICogcGFyZW50cmVsLCBvdGhlcndpc2Ugd2UgY291bGRuJ3QgdHJh bnNsYXRlIHBydW5lcXVhbCB0byBtYXRjaC4pCi0JICoKLQkgKiBBbHNvIGNvbnN0cnVjdCBhIHRl bXBvcmFyeSBhcnJheSB0byBtYXAgZnJvbSBwYXJ0aXRpb24tY2hpbGQtcmVsYXRpb24KLQkgKiBy ZWxpZCB0byB0aGUgaW5kZXggaW4gJ3N1YnBhdGhzJyBvZiB0aGUgc2NhbiBwbGFuIGZvciB0aGF0 IHBhcnRpdGlvbi4KKwkgKiBDb25zdHJ1Y3QgYSB0ZW1wb3JhcnkgYXJyYXkgdG8gbWFwIGZyb20g cGFydGl0aW9uLWNoaWxkLXJlbGF0aW9uIHJlbGlkCisJICogdG8gdGhlIGluZGV4IGluICdzdWJw YXRocycgb2YgdGhlIHNjYW4gcGxhbiBmb3IgdGhhdCBwYXJ0aXRpb24uCiAJICogKFVzZSBvZiAi c3VicGxhbiIgcmF0aGVyIHRoYW4gInN1YnBhdGgiIGlzIGEgYml0IG9mIGEgbWlzbm9tZXIsIGJ1 dAogCSAqIHdlJ2xsIGxldCBpdCBzdGFuZC4pICBGb3IgY29udmVuaWVuY2UsIHdlIHVzZSAxLWJh c2VkIGluZGV4ZXMgaGVyZSwgc28KIAkgKiB0aGF0IHplcm8gY2FuIHJlcHJlc2VudCBhbiB1bi1m aWxsZWQgYXJyYXkgZW50cnkuCiAJICovCi0JYWxscGFydHJlbGlkcyA9IE5JTDsKIAlyZWxpZF9z dWJwbGFuX21hcCA9IHBhbGxvYzAoc2l6ZW9mKGludCkgKiByb290LT5zaW1wbGVfcmVsX2FycmF5 X3NpemUpOwogCiAJaSA9IDE7CkBAIC0yNTMsNTAgKzI1MSw5IEBAIG1ha2VfcGFydGl0aW9uX3By dW5laW5mbyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcGFyZW50cmVsLAogCQlQYXRo CSAgICpwYXRoID0gKFBhdGggKikgbGZpcnN0KGxjKTsKIAkJUmVsT3B0SW5mbyAqcGF0aHJlbCA9 IHBhdGgtPnBhcmVudDsKIAotCQkvKiBXZSBkb24ndCBjb25zaWRlciBwYXJ0aXRpb25lZCBqb2lu cyBoZXJlICovCi0JCWlmIChwYXRocmVsLT5yZWxvcHRraW5kID09IFJFTE9QVF9PVEhFUl9NRU1C RVJfUkVMKQotCQl7Ci0JCQlSZWxPcHRJbmZvICpwcmVsID0gcGF0aHJlbDsKLQkJCUJpdG1hcHNl dCAgKnBhcnRyZWxpZHMgPSBOVUxMOwotCi0JCQkvKgotCQkJICogVHJhdmVyc2UgdXAgdG8gdGhl IHBhdGhyZWwncyB0b3Btb3N0IHBhcnRpdGlvbmVkIHBhcmVudCwKLQkJCSAqIGNvbGxlY3Rpbmcg cGFyZW50IHJlbGlkcyBhcyB3ZSBnbzsgYnV0IHN0b3AgaWYgd2UgcmVhY2gKLQkJCSAqIHBhcmVu dHJlbC4gIChOb3JtYWxseSwgYSBwYXRocmVsJ3MgdG9wbW9zdCBwYXJ0aXRpb25lZCBwYXJlbnQK LQkJCSAqIGlzIGVpdGhlciBwYXJlbnRyZWwgb3IgYSBVTklPTiBBTEwgYXBwZW5kcmVsIGNoaWxk IG9mCi0JCQkgKiBwYXJlbnRyZWwuICBCdXQgd2hlbiBoYW5kbGluZyBwYXJ0aXRpb253aXNlIGpv aW5zIG9mCi0JCQkgKiBtdWx0aS1sZXZlbCBwYXJ0aXRpb25pbmcgdHJlZXMsIHdlIGNhbiBzZWUg YW4gYXBwZW5kIHBhdGggd2hvc2UKLQkJCSAqIHBhcmVudHJlbCBpcyBhbiBpbnRlcm1lZGlhdGUg cGFydGl0aW9uZWQgdGFibGUuKQotCQkJICovCi0JCQlkbwotCQkJewotCQkJCUFwcGVuZFJlbElu Zm8gKmFwcGluZm87Ci0KLQkJCQlBc3NlcnQocHJlbC0+cmVsaWQgPCByb290LT5zaW1wbGVfcmVs X2FycmF5X3NpemUpOwotCQkJCWFwcGluZm8gPSByb290LT5hcHBlbmRfcmVsX2FycmF5W3ByZWwt PnJlbGlkXTsKLQkJCQlwcmVsID0gZmluZF9iYXNlX3JlbChyb290LCBhcHBpbmZvLT5wYXJlbnRf cmVsaWQpOwotCQkJCWlmICghSVNfUEFSVElUSU9ORURfUkVMKHByZWwpKQotCQkJCQlicmVhazsJ CS8qIHJlYWNoZWQgYSBub24tcGFydGl0aW9uZWQgcGFyZW50ICovCi0JCQkJLyogYWNjZXB0IHRo aXMgbGV2ZWwgYXMgYW4gaW50ZXJlc3RpbmcgcGFyZW50ICovCi0JCQkJcGFydHJlbGlkcyA9IGJt c19hZGRfbWVtYmVyKHBhcnRyZWxpZHMsIHByZWwtPnJlbGlkKTsKLQkJCQlpZiAocHJlbCA9PSBw YXJlbnRyZWwpCi0JCQkJCWJyZWFrOwkJLyogZG9uJ3QgdHJhdmVyc2UgYWJvdmUgcGFyZW50cmVs ICovCi0JCQl9IHdoaWxlIChwcmVsLT5yZWxvcHRraW5kID09IFJFTE9QVF9PVEhFUl9NRU1CRVJf UkVMKTsKLQotCQkJaWYgKHBhcnRyZWxpZHMpCi0JCQl7Ci0JCQkJLyoKLQkJCQkgKiBGb3VuZCBz b21lIHJlbGV2YW50IHBhcmVudCBwYXJ0aXRpb25zLCB3aGljaCBtYXkgb3IgbWF5IG5vdAotCQkJ CSAqIG92ZXJsYXAgd2l0aCBwYXJ0aXRpb24gdHJlZXMgd2UgYWxyZWFkeSBmb3VuZC4gIEFkZCBu ZXcKLQkJCQkgKiBpbmZvcm1hdGlvbiB0byB0aGUgYWxscGFydHJlbGlkcyBsaXN0LgotCQkJCSAq LwotCQkJCWFsbHBhcnRyZWxpZHMgPSBhZGRfcGFydF9yZWxpZHMoYWxscGFydHJlbGlkcywgcGFy dHJlbGlkcyk7Ci0JCQkJLyogQWxzbyByZWNvcmQgdGhlIHN1YnBsYW4gaW4gcmVsaWRfc3VicGxh bl9tYXBbXSAqLwotCQkJCS8qIE5vIGR1cGxpY2F0ZXMgcGxlYXNlICovCi0JCQkJQXNzZXJ0KHJl bGlkX3N1YnBsYW5fbWFwW3BhdGhyZWwtPnJlbGlkXSA9PSAwKTsKLQkJCQlyZWxpZF9zdWJwbGFu X21hcFtwYXRocmVsLT5yZWxpZF0gPSBpOwotCQkJfQotCQl9CisJCS8qIE5vIGR1cGxpY2F0ZXMg cGxlYXNlICovCisJCUFzc2VydChyZWxpZF9zdWJwbGFuX21hcFtwYXRocmVsLT5yZWxpZF0gPT0g MCk7CisJCXJlbGlkX3N1YnBsYW5fbWFwW3BhdGhyZWwtPnJlbGlkXSA9IGk7CiAJCWkrKzsKIAl9 CiAKQEAgLTM2Miw2MyArMzE5LDYgQEAgbWFrZV9wYXJ0aXRpb25fcHJ1bmVpbmZvKFBsYW5uZXJJ bmZvICpyb290LCBSZWxPcHRJbmZvICpwYXJlbnRyZWwsCiAJcmV0dXJuIHBydW5laW5mbzsKIH0K IAotLyoKLSAqIGFkZF9wYXJ0X3JlbGlkcwotICoJCUFkZCBuZXcgaW5mbyB0byBhIGxpc3Qgb2Yg Qml0bWFwc2V0cyBvZiBwYXJ0aXRpb25lZCByZWxpZHMuCi0gKgotICogV2l0aGluICdhbGxwYXJ0 cmVsaWRzJywgdGhlcmUgaXMgb25lIEJpdG1hcHNldCBmb3IgZWFjaCB0b3Btb3N0IHBhcmVudAot ICogcGFydGl0aW9uZWQgcmVsLiAgRWFjaCBCaXRtYXBzZXQgY29udGFpbnMgdGhlIFJUIGluZGV4 ZXMgb2YgdGhlIHRvcG1vc3QKLSAqIHBhcmVudCBhcyB3ZWxsIGFzIGl0cyByZWxldmFudCBub24t bGVhZiBjaGlsZCBwYXJ0aXRpb25zLiAgU2luY2UgKGJ5Ci0gKiBjb25zdHJ1Y3Rpb24gb2YgdGhl IHJhbmdldGFibGUgbGlzdCkgcGFyZW50IHBhcnRpdGlvbnMgbXVzdCBoYXZlIGxvd2VyCi0gKiBS VCBpbmRleGVzIHRoYW4gdGhlaXIgY2hpbGRyZW4sIHdlIGNhbiBkaXN0aW5ndWlzaCB0aGUgdG9w bW9zdCBwYXJlbnQKLSAqIGFzIGJlaW5nIHRoZSBsb3dlc3Qgc2V0IGJpdCBpbiB0aGUgQml0bWFw c2V0LgotICoKLSAqICdwYXJ0cmVsaWRzJyBjb250YWlucyB0aGUgUlQgaW5kZXhlcyBvZiBhIHBh cmVudCBwYXJ0aXRpb25lZCByZWwsIGFuZAotICogcG9zc2libHkgc29tZSBub24tbGVhZiBjaGls ZHJlbiwgdGhhdCBhcmUgbmV3bHkgaWRlbnRpZmllZCBhcyBwYXJlbnRzIG9mCi0gKiBzb21lIHN1 YnBhdGggcmVsIHBhc3NlZCB0byBtYWtlX3BhcnRpdGlvbl9wcnVuZWluZm8oKS4gIFRoZXNlIGFy ZSBhZGRlZAotICogdG8gYW4gYXBwcm9wcmlhdGUgbWVtYmVyIG9mICdhbGxwYXJ0cmVsaWRzJy4K LSAqCi0gKiBOb3RlIHRoYXQgdGhlIGxpc3QgY29udGFpbnMgb25seSBSVCBpbmRleGVzIG9mIHBh cnRpdGlvbmVkIHRhYmxlcyB0aGF0Ci0gKiBhcmUgcGFyZW50cyBvZiBzb21lIHNjYW4tbGV2ZWwg cmVsYXRpb24gYXBwZWFyaW5nIGluIHRoZSAnc3VicGF0aHMnIHRoYXQKLSAqIG1ha2VfcGFydGl0 aW9uX3BydW5laW5mbygpIGlzIGRlYWxpbmcgd2l0aC4gIEFsc28sICJ0b3Btb3N0IiBwYXJlbnRz IGFyZQotICogbm90IGFsbG93ZWQgdG8gYmUgaGlnaGVyIHRoYW4gdGhlICdwYXJlbnRyZWwnIGFz c29jaWF0ZWQgd2l0aCB0aGUgYXBwZW5kCi0gKiBwYXRoLiAgSW4gdGhpcyB3YXksIHdlIGF2b2lk IGV4cGVuZGluZyBjeWNsZXMgb24gcGFydGl0aW9uZWQgcmVscyB0aGF0Ci0gKiBjYW4ndCBjb250 cmlidXRlIHVzZWZ1bCBwcnVuaW5nIGluZm9ybWF0aW9uIGZvciB0aGUgcHJvYmxlbSBhdCBoYW5k LgotICogKEl0IGlzIHBvc3NpYmxlIGZvciAncGFyZW50cmVsJyB0byBiZSBhIGNoaWxkIHBhcnRp dGlvbmVkIHRhYmxlLCBhbmQgaXQKLSAqIGlzIGFsc28gcG9zc2libGUgZm9yIHNjYW4tbGV2ZWwg cmVsYXRpb25zIHRvIGJlIGNoaWxkIHBhcnRpdGlvbmVkIHRhYmxlcwotICogcmF0aGVyIHRoYW4g bGVhZiBwYXJ0aXRpb25zLiAgSGVuY2Ugd2UgbXVzdCBjb25zdHJ1Y3QgdGhpcyByZWxhdGlvbiBz ZXQKLSAqIHdpdGggcmVmZXJlbmNlIHRvIHRoZSBwYXJ0aWN1bGFyIGFwcGVuZCBwYXRoIHdlJ3Jl IGRlYWxpbmcgd2l0aCwgcmF0aGVyCi0gKiB0aGFuIGxvb2tpbmcgYXQgdGhlIGZ1bGwgcGFydGl0 aW9uaW5nIHN0cnVjdHVyZSByZXByZXNlbnRlZCBpbiB0aGUKLSAqIFJlbE9wdEluZm9zLikKLSAq Lwotc3RhdGljIExpc3QgKgotYWRkX3BhcnRfcmVsaWRzKExpc3QgKmFsbHBhcnRyZWxpZHMsIEJp dG1hcHNldCAqcGFydHJlbGlkcykKLXsKLQlJbmRleAkJdGFyZ2V0cGFydDsKLQlMaXN0Q2VsbCAg ICpsYzsKLQotCS8qIFdlIGNhbiBlYXNpbHkgZ2V0IHRoZSBsb3dlc3Qgc2V0IGJpdCB0aGlzIHdh eTogKi8KLQl0YXJnZXRwYXJ0ID0gYm1zX25leHRfbWVtYmVyKHBhcnRyZWxpZHMsIC0xKTsKLQlB c3NlcnQodGFyZ2V0cGFydCA+IDApOwotCi0JLyogTG9vayBmb3IgYSBtYXRjaGluZyB0b3Btb3N0 IHBhcmVudCAqLwotCWZvcmVhY2gobGMsIGFsbHBhcnRyZWxpZHMpCi0JewotCQlCaXRtYXBzZXQg ICpjdXJycGFydHJlbGlkcyA9IChCaXRtYXBzZXQgKikgbGZpcnN0KGxjKTsKLQkJSW5kZXgJCWN1 cnJ0YXJnZXQgPSBibXNfbmV4dF9tZW1iZXIoY3VycnBhcnRyZWxpZHMsIC0xKTsKLQotCQlpZiAo dGFyZ2V0cGFydCA9PSBjdXJydGFyZ2V0KQotCQl7Ci0JCQkvKiBGb3VuZCBhIG1hdGNoLCBzbyBh ZGQgYW55IG5ldyBSVCBpbmRleGVzIHRvIHRoaXMgaGllcmFyY2h5ICovCi0JCQljdXJycGFydHJl bGlkcyA9IGJtc19hZGRfbWVtYmVycyhjdXJycGFydHJlbGlkcywgcGFydHJlbGlkcyk7Ci0JCQls Zmlyc3QobGMpID0gY3VycnBhcnRyZWxpZHM7Ci0JCQlyZXR1cm4gYWxscGFydHJlbGlkczsKLQkJ fQotCX0KLQkvKiBObyBtYXRjaCwgc28gYWRkIHRoZSBuZXcgcGFydGl0aW9uIGhpZXJhcmNoeSB0 byB0aGUgbGlzdCAqLwotCXJldHVybiBsYXBwZW5kKGFsbHBhcnRyZWxpZHMsIHBhcnRyZWxpZHMp OwotfQotCiAvKgogICogbWFrZV9wYXJ0aXRpb25lZHJlbF9wcnVuZWluZm8KICAqCQlCdWlsZCBh IExpc3Qgb2YgUGFydGl0aW9uZWRSZWxQcnVuZUluZm9zLCBvbmUgZm9yIGVhY2ggaW50ZXJlc3Rp bmcKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oIGIvc3JjL2luY2x1 ZGUvbm9kZXMvcGxhbm5vZGVzLmgKaW5kZXggMWI3ODdmZTAzMS4uN2E1ZjNiYTYyNSAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9k ZXMvcGxhbm5vZGVzLmgKQEAgLTI2Nyw2ICsyNjcsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QgQXBwZW5k CiAJTGlzdAkgICAqYXBwZW5kcGxhbnM7CiAJaW50CQkJbmFzeW5jcGxhbnM7CS8qICMgb2YgYXN5 bmNocm9ub3VzIHBsYW5zICovCiAKKwkvKgorCSAqIFJUSXMgb2YgYWxsIHBhcnRpdGlvbmVkIHRh YmxlcyB3aG9zZSBjaGlsZHJlbiBhcmUgc2Nhbm5lZCBieQorCSAqIGFwcGVuZHBsYW5zLiBUaGUg bGlzdCBjb250YWlucyBhIGJpdG1hcHNldCBmb3IgZXZlcnkgcGFydGl0aW9uIHRyZWUKKwkgKiBj b3ZlcmVkIGJ5IHRoaXMgQXBwZW5kLgorCSAqLworCUxpc3QJICAgKmFsbHBhcnRyZWxpZHM7CisK IAkvKgogCSAqIEFsbCAnYXBwZW5kcGxhbnMnIHByZWNlZGluZyB0aGlzIGluZGV4IGFyZSBub24t cGFydGlhbCBwbGFucy4gQWxsCiAJICogJ2FwcGVuZHBsYW5zJyBmcm9tIHRoaXMgaW5kZXggb253 YXJkcyBhcmUgcGFydGlhbCBwbGFucy4KQEAgLTI5MSw2ICsyOTgsMTMgQEAgdHlwZWRlZiBzdHJ1 Y3QgTWVyZ2VBcHBlbmQKIAogCUxpc3QJICAgKm1lcmdlcGxhbnM7CiAKKwkvKgorCSAqIFJUSXMg b2YgYWxsIHBhcnRpdGlvbmVkIHRhYmxlcyB3aG9zZSBjaGlsZHJlbiBhcmUgc2Nhbm5lZCBieQor CSAqIG1lcmdlcGxhbnMuIFRoZSBsaXN0IGNvbnRhaW5zIGEgYml0bWFwc2V0IGZvciBldmVyeSBw YXJ0aXRpb24gdHJlZQorCSAqIGNvdmVyZWQgYnkgdGhpcyBNZXJnZUFwcGVuZC4KKwkgKi8KKwlM aXN0CSAgICphbGxwYXJ0cmVsaWRzOworCiAJLyogdGhlc2UgZmllbGRzIGFyZSBqdXN0IGxpa2Ug dGhlIHNvcnQta2V5IGluZm8gaW4gc3RydWN0IFNvcnQ6ICovCiAKIAkvKiBudW1iZXIgb2Ygc29y dC1rZXkgY29sdW1ucyAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL2FwcGVu ZGluZm8uaCBiL3NyYy9pbmNsdWRlL29wdGltaXplci9hcHBlbmRpbmZvLmgKaW5kZXggYTA1Zjkx Zjc3ZC4uMTYyMWE3MzE5YSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL2FwcGVu ZGluZm8uaAorKysgYi9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvYXBwZW5kaW5mby5oCkBAIC00Niw1 ICs0Niw4IEBAIGV4dGVybiB2b2lkIGFkZF9yb3dfaWRlbnRpdHlfY29sdW1ucyhQbGFubmVySW5m byAqcm9vdCwgSW5kZXggcnRpbmRleCwKIAkJCQkJCQkJCSBSYW5nZVRibEVudHJ5ICp0YXJnZXRf cnRlLAogCQkJCQkJCQkJIFJlbGF0aW9uIHRhcmdldF9yZWxhdGlvbik7CiBleHRlcm4gdm9pZCBk aXN0cmlidXRlX3Jvd19pZGVudGl0eV92YXJzKFBsYW5uZXJJbmZvICpyb290KTsKK2V4dGVybiBM aXN0ICphZGRfYXBwZW5kX3N1YnBhdGhfcGFydHJlbGlkcyhQbGFubmVySW5mbyAqcm9vdCwgUGF0 aCAqc3VicGF0aCwKKwkJCQkJCQkgIFJlbE9wdEluZm8gKnBhcmVudHJlbCwKKwkJCQkJCQkgIExp c3QgKmFsbHBhcnRyZWxpZHMpOwogCiAjZW5kaWYJCQkJCQkJLyogQVBQRU5ESU5GT19IICovCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmggYi9zcmMvaW5j bHVkZS9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmgKaW5kZXggODYzNmUwNGUzNy4uY2FhNzc0YTEx MSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5oCisrKyBi L3NyYy9pbmNsdWRlL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuaApAQCAtNzMsNyArNzMsOCBAQCB0 eXBlZGVmIHN0cnVjdCBQYXJ0aXRpb25QcnVuZUNvbnRleHQKIGV4dGVybiBQYXJ0aXRpb25QcnVu ZUluZm8gKm1ha2VfcGFydGl0aW9uX3BydW5laW5mbyhzdHJ1Y3QgUGxhbm5lckluZm8gKnJvb3Qs CiAJCQkJCQkJCQkJCQkJc3RydWN0IFJlbE9wdEluZm8gKnBhcmVudHJlbCwKIAkJCQkJCQkJCQkJ CQlMaXN0ICpzdWJwYXRocywKLQkJCQkJCQkJCQkJCQlMaXN0ICpwcnVuZXF1YWwpOworCQkJCQkJ CQkJCQkJCUxpc3QgKnBydW5lcXVhbCwKKwkJCQkJCQkJCQkJCQlMaXN0ICphbGxwYXJ0cmVsaWRz KTsKIGV4dGVybiBCaXRtYXBzZXQgKnBydW5lX2FwcGVuZF9yZWxfcGFydGl0aW9ucyhzdHJ1Y3Qg UmVsT3B0SW5mbyAqcmVsKTsKIGV4dGVybiBCaXRtYXBzZXQgKmdldF9tYXRjaGluZ19wYXJ0aXRp b25zKFBhcnRpdGlvblBydW5lQ29udGV4dCAqY29udGV4dCwKIAkJCQkJCQkJCQkgIExpc3QgKnBy dW5pbmdfc3RlcHMpOwotLSAKMi4zNS4zCgo= --000000000000cf239e0600bdd6af Content-Type: application/octet-stream; name="v42-0004-Track-opened-range-table-relations-in-a-List-in-.patch" Content-Disposition: attachment; filename="v42-0004-Track-opened-range-table-relations-in-a-List-in-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lk7yy4lf0 RnJvbSBiOWI3NTBmZDYzMjMzNDI2NzI2MTNjN2VmY2RiNDcyODcyNjRiYWE0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFR1ZSwgNCBKdWwgMjAyMyAyMjozNjo0OSArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjQy IDQvNF0gVHJhY2sgb3BlbmVkIHJhbmdlIHRhYmxlIHJlbGF0aW9ucyBpbiBhIExpc3QgaW4KIEVT dGF0ZQoKVGhpcyBtYWtlcyBFeGVjQ2xvc2VSYW5nZVRhYmxlUmVsYXRpb25zIGZhc3RlciB3aGVu IHRoZXJlIGFyZSBtYW55CnJlbGF0aW9ucyBpbiB0aGUgcmFuZ2UgdGFibGUgYnV0IG9ubHkgYSBm ZXcgYXJlIG9wZW5lZCBkdXJpbmcKZXhlY3V0aW9uLCBzdWNoIGFzIHdoZW4gcnVuLXRpbWUgcHJ1 bmluZyBraWNrcyBpbiBvbiBhbiBBcHBlbmQKY29udGFpbmluZyB0aG91c2FuZHMgb2YgcGFydGl0 aW9uIHN1YnBsYW5zLgoKRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9DQStIaXdxRkdr TVNnZTZUZ0M5S1F6ZGUwb2hwQXljTFF1Vjdvb2l0RUVwYktCME9fbWdAbWFpbC5nbWFpbC5jb20K LS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jICB8IDkgKysrKystLS0tCiBzcmMv YmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYyB8IDIgKysKIHNyYy9pbmNsdWRlL25vZGVzL2V4 ZWNub2Rlcy5oICAgIHwgMiArKwogMyBmaWxlcyBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDQg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4u YyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKaW5kZXggYTJmNmFjOWQxYy4uMDUz ZDhhMmRjMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYworKysg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCkBAIC0xNjUwLDEyICsxNjUwLDEzIEBA IEV4ZWNDbG9zZVJlc3VsdFJlbGF0aW9ucyhFU3RhdGUgKmVzdGF0ZSkKIHZvaWQKIEV4ZWNDbG9z ZVJhbmdlVGFibGVSZWxhdGlvbnMoRVN0YXRlICplc3RhdGUpCiB7Ci0JaW50CQkJaTsKKwlMaXN0 Q2VsbCAqbGM7CiAKLQlmb3IgKGkgPSAwOyBpIDwgZXN0YXRlLT5lc19yYW5nZV90YWJsZV9zaXpl OyBpKyspCisJZm9yZWFjaChsYywgZXN0YXRlLT5lc19vcGVuZWRfcmVsYXRpb25zKQogCXsKLQkJ aWYgKGVzdGF0ZS0+ZXNfcmVsYXRpb25zW2ldKQotCQkJdGFibGVfY2xvc2UoZXN0YXRlLT5lc19y ZWxhdGlvbnNbaV0sIE5vTG9jayk7CisJCVJlbGF0aW9uIHJlbCA9IGxmaXJzdChsYyk7CisKKwkJ dGFibGVfY2xvc2UocmVsLCBOb0xvY2spOwogCX0KIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMu YwppbmRleCBhZjkyZDJiM2MzLi5mMDMyMGNmYTM0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9l eGVjdXRvci9leGVjVXRpbHMuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMu YwpAQCAtODM3LDYgKzgzNyw4IEBAIEV4ZWNHZXRSYW5nZVRhYmxlUmVsYXRpb24oRVN0YXRlICpl c3RhdGUsIEluZGV4IHJ0aSkKIAkJfQogCiAJCWVzdGF0ZS0+ZXNfcmVsYXRpb25zW3J0aSAtIDFd ID0gcmVsOworCQllc3RhdGUtPmVzX29wZW5lZF9yZWxhdGlvbnMgPSBsYXBwZW5kKGVzdGF0ZS0+ ZXNfb3BlbmVkX3JlbGF0aW9ucywKKwkJCQkJCQkJCQkJICByZWwpOwogCX0KIAogCXJldHVybiBy ZWw7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCBiL3NyYy9pbmNs dWRlL25vZGVzL2V4ZWNub2Rlcy5oCmluZGV4IGYwYzUxNzdiMDYuLmJlMDZjNDA3NjYgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25v ZGVzL2V4ZWNub2Rlcy5oCkBAIC02MTksNiArNjE5LDggQEAgdHlwZWRlZiBzdHJ1Y3QgRVN0YXRl CiAJSW5kZXgJCWVzX3JhbmdlX3RhYmxlX3NpemU7CS8qIHNpemUgb2YgdGhlIHJhbmdlIHRhYmxl IGFycmF5cyAqLwogCVJlbGF0aW9uICAgKmVzX3JlbGF0aW9uczsJLyogQXJyYXkgb2YgcGVyLXJh bmdlLXRhYmxlLWVudHJ5IFJlbGF0aW9uCiAJCQkJCQkJCSAqIHBvaW50ZXJzLCBvciBOVUxMIGlm IG5vdCB5ZXQgb3BlbmVkICovCisJTGlzdAkgICAqZXNfb3BlbmVkX3JlbGF0aW9uczsgLyogTGlz dCBvZiBub24tTlVMTCBlbnRyaWVzIGluCisJCQkJCQkJCQkgICogZXNfcmVsYXRpb25zIGluIG5v IHNwZWNpZmljIG9yZGVyICovCiAJc3RydWN0IEV4ZWNSb3dNYXJrICoqZXNfcm93bWFya3M7CS8q IEFycmF5IG9mIHBlci1yYW5nZS10YWJsZS1lbnRyeQogCQkJCQkJCQkJCSAqIEV4ZWNSb3dNYXJr cywgb3IgTlVMTCBpZiBub25lICovCiAJTGlzdAkgICAqZXNfcnRlcGVybWluZm9zOwkvKiBMaXN0 IG9mIFJURVBlcm1pc3Npb25JbmZvICovCi0tIAoyLjM1LjMKCg== --000000000000cf239e0600bdd6af Content-Type: application/octet-stream; name="v42-0002-Set-inFromCl-to-false-in-child-table-RTEs.patch" Content-Disposition: attachment; filename="v42-0002-Set-inFromCl-to-false-in-child-table-RTEs.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lk7yy4lo2 RnJvbSBhMTZmZjg1ZjQ5YmQ0ZDY3NDEzYjczOTdmZTJhZDJmZDY0MmYwMjg0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFR1ZSwgNCBKdWwgMjAyMyAyMjozNjo0MyArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjQy IDIvNF0gU2V0IGluRnJvbUNsIHRvIGZhbHNlIGluIGNoaWxkIHRhYmxlIFJURXMKClRoaXMgaXMg dG8gYWxsb3cgdGhlIGV4ZWN1dG9yIGJlIGFibGUgdG8gZGlzdGluZ3Vpc2ggdGFibGVzIHRoYXQg YXJlCmRpcmVjdGx5IG1lbnRpb25lZCBpbiB0aGUgcXVlcnkgZnJvbSB0aG9zZSB0aGF0IGdldCBh ZGRlZCB0byB0aGUKcXVlcnkgZHVyaW5nIHBsYW5uaW5nLiAgQSBzdWJzZXF1ZW50IGNvbW1pdCB3 aWxsIHRlYWNoIHRoZSBleGVjdXRvcgp0byBsb2NrIG9ubHkgdGhlIHRhYmxlcyBvZiB0aGUgbGF0 dGVyIGtpbmQgd2hlbiBleGVjdXRpbmcgYSBjYWNoZWQKcGxhbi4KCkRpc2N1c3Npb246IGh0dHBz Oi8vcG9zdGdyLmVzL20vQ0ErSGl3cUZHa01TZ2U2VGdDOUtRemRlMG9ocEF5Y0xRdVY3b29pdEVF cGJLQjBPX21nQG1haWwuZ21haWwuY29tawotLS0KIHNyYy9iYWNrZW5kL29wdGltaXplci91dGls L2luaGVyaXQuYyB8IDYgKysrKysrCiBzcmMvYmFja2VuZC9wYXJzZXIvYW5hbHl6ZS5jICAgICAg ICAgfCA3ICsrKy0tLS0KIHNyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCAgICAgICB8IDkg KysrKysrKy0tCiAzIGZpbGVzIGNoYW5nZWQsIDE2IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvaW5oZXJpdC5jIGIv c3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvaW5oZXJpdC5jCmluZGV4IDk0ZGU4NTVhMjIuLjli YWMwN2JmNDAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL2luaGVyaXQu YworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9pbmhlcml0LmMKQEAgLTQ5Miw2ICs0 OTIsMTIgQEAgZXhwYW5kX3NpbmdsZV9pbmhlcml0YW5jZV9jaGlsZChQbGFubmVySW5mbyAqcm9v dCwgUmFuZ2VUYmxFbnRyeSAqcGFyZW50cnRlLAogCX0KIAllbHNlCiAJCWNoaWxkcnRlLT5pbmgg PSBmYWxzZTsKKwkvKgorCSAqIE1hcmsgY2hpbGQgdGFibGVzIGFzIG5vdCBiZWluZyBkaXJlY3Rs eSBtZW50aW9uZWQgaW4gdGhlIHF1ZXJ5LiAgVGhpcworCSAqIGFsbG93cyB0aGUgZXhlY3V0b3In cyBFeGVjR2V0UmFuZ2VUYWJsZVJlbGF0aW9uKCkgdG8gY29udmVuaWVudGx5CisJICogaWRlbnRp ZnkgaXQgYXMgYW4gaW5oZXJpdGFuY2UgY2hpbGQgdGFibGUuCisJICovCisJY2hpbGRydGUtPmlu RnJvbUNsID0gZmFsc2U7CiAJY2hpbGRydGUtPnNlY3VyaXR5UXVhbHMgPSBOSUw7CiAKIAkvKgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2FuYWx5emUuYyBiL3NyYy9iYWNrZW5kL3Bh cnNlci9hbmFseXplLmMKaW5kZXggNDAwNjYzMjA5Mi4uYmNmNmZjZGRlMiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvcGFyc2VyL2FuYWx5emUuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvYW5h bHl6ZS5jCkBAIC0zMjY3LDEwICszMjY3LDkgQEAgdHJhbnNmb3JtTG9ja2luZ0NsYXVzZShQYXJz ZVN0YXRlICpwc3RhdGUsIFF1ZXJ5ICpxcnksIExvY2tpbmdDbGF1c2UgKmxjLAogCQkvKgogCQkg KiBMb2NrIGFsbCByZWd1bGFyIHRhYmxlcyB1c2VkIGluIHF1ZXJ5IGFuZCBpdHMgc3VicXVlcmll cy4gIFdlCiAJCSAqIGV4YW1pbmUgaW5Gcm9tQ2wgdG8gZXhjbHVkZSBhdXRvLWFkZGVkIFJURXMs IHBhcnRpY3VsYXJseSBORVcvT0xECi0JCSAqIGluIHJ1bGVzLiAgVGhpcyBpcyBhIGJpdCBvZiBh biBhYnVzZSBvZiBhIG1vc3RseS1vYnNvbGV0ZSBmbGFnLCBidXQKLQkJICogaXQncyBjb252ZW5p ZW50LiAgV2UgY2FuJ3QgcmVseSBvbiB0aGUgbmFtZXNwYWNlIG1lY2hhbmlzbSB0aGF0IGhhcwot CQkgKiBsYXJnZWx5IHJlcGxhY2VkIGluRnJvbUNsLCBzaW5jZSBmb3IgZXhhbXBsZSB3ZSBuZWVk IHRvIGxvY2sKLQkJICogYmFzZS1yZWxhdGlvbiBSVEVzIGV2ZW4gaWYgdGhleSBhcmUgbWFza2Vk IGJ5IHVwcGVyIGpvaW5zLgorCQkgKiBpbiBydWxlcy4gIFdlIGNhbid0IHJlbHkgb24gdGhlIG5h bWVzcGFjZSBtZWNoYW5pc20gc2luY2UgZm9yCisJCSAqIGV4YW1wbGUgd2UgbmVlZCB0byBsb2Nr IGJhc2UtcmVsYXRpb24gUlRFcyBldmVuIGlmIHRoZXkgYXJlIG1hc2tlZAorCQkgKiBieSB1cHBl ciBqb2lucy4KIAkJICovCiAJCWkgPSAwOwogCQlmb3JlYWNoKHJ0LCBxcnktPnJ0YWJsZSkKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25v ZGVzL3BhcnNlbm9kZXMuaAppbmRleCBlZmI1YzNlMDk4Li5hODkxMjcyZTZlIDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMv cGFyc2Vub2Rlcy5oCkBAIC05OTQsMTEgKzk5NCwxNiBAQCB0eXBlZGVmIHN0cnVjdCBQYXJ0aXRp b25DbWQKICAqCiAgKgkgIGluRnJvbUNsIG1hcmtzIHRob3NlIHJhbmdlIHZhcmlhYmxlcyB0aGF0 IGFyZSBsaXN0ZWQgaW4gdGhlIEZST00gY2xhdXNlLgogICoJICBJdCdzIGZhbHNlIGZvciBSVEVz IHRoYXQgYXJlIGFkZGVkIHRvIGEgcXVlcnkgYmVoaW5kIHRoZSBzY2VuZXMsIHN1Y2gKLSAqCSAg YXMgdGhlIE5FVyBhbmQgT0xEIHZhcmlhYmxlcyBmb3IgYSBydWxlLCBvciB0aGUgc3VicXVlcmll cyBvZiBhIFVOSU9OLgorICoJICBhcyB0aGUgTkVXIGFuZCBPTEQgdmFyaWFibGVzIGZvciBhIHJ1 bGUsIG9yIHRoZSBzdWJxdWVyaWVzIG9mIGEgVU5JT04sCisgKgkgIG9yIHRoZSBSVEVzIG9mIGlu aGVyaXRhbmNlIGNoaWxkIHRhYmxlcyB0aGF0IGFyZSBhZGRlZCBieSB0aGUgcGxhbm5lci4KICAq CSAgVGhpcyBmbGFnIGlzIG5vdCB1c2VkIGR1cmluZyBwYXJzaW5nIChleGNlcHQgaW4gdHJhbnNm b3JtTG9ja2luZ0NsYXVzZSwKICAqCSAgcS52Lik7IHRoZSBwYXJzZXIgbm93IHVzZXMgYSBzZXBh cmF0ZSAibmFtZXNwYWNlIiBkYXRhIHN0cnVjdHVyZSB0bwogICoJICBjb250cm9sIHZpc2liaWxp dHkuICBCdXQgaXQgaXMgbmVlZGVkIGJ5IHJ1bGV1dGlscy5jIHRvIGRldGVybWluZQotICoJICB3 aGV0aGVyIFJURXMgc2hvdWxkIGJlIHNob3duIGluIGRlY29tcGlsZWQgcXVlcmllcy4KKyAqCSAg d2hldGhlciBSVEVzIHNob3VsZCBiZSBzaG93biBpbiBkZWNvbXBpbGVkIHF1ZXJpZXMuICBJdCBp cyB1c2VkIGJ5IHRoZQorICoJICBleGVjdXRvciB0byBkZXRlcm1pbmUgdGhhdCBhIGdpdmVuIFJU RV9SRUxBVElPTiBlbnRyeSBiZWxvbmdzIHRvIGEgdGFibGUKKyAqCSAgZGlyZWN0bHkgbWVudGlv bmVkIGluIHRoZSBxdWVyeSBvciB0byBhIGNoaWxkIHRhYmxlIGFkZGVkIGJ5IHRoZSBwbGFubmVy LgorICoJICBJdCBuZWVkcyB0byBrbm93IHRoYXQgZm9yIHRoZSBjYXNlIHdoZXJlIHRoZSBjaGls ZCB0YWJsZXMgaW4gYSBwbGFuIG5lZWQKKyAqCSAgdG8gYmUgbG9ja2VkLgogICoKICAqCSAgc2Vj dXJpdHlRdWFscyBpcyBhIGxpc3Qgb2Ygc2VjdXJpdHkgYmFycmllciBxdWFscyAoYm9vbGVhbiBl eHByZXNzaW9ucyksCiAgKgkgIHRvIGJlIHRlc3RlZCBpbiB0aGUgbGlzdGVkIG9yZGVyIGJlZm9y ZSByZXR1cm5pbmcgYSByb3cgZnJvbSB0aGUKLS0gCjIuMzUuMwoK --000000000000cf239e0600bdd6af Content-Type: application/octet-stream; name="v42-0003-Delay-locking-of-child-tables-in-cached-plans-un.patch" Content-Disposition: attachment; filename="v42-0003-Delay-locking-of-child-tables-in-cached-plans-un.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lk7yy4lo1 RnJvbSA3MzEwNzRiZTIwMzZmMDJkMDgxZmU3YzczMWUyMTMzMGI2YjQ3YjRhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFR1ZSwgNCBKdWwgMjAyMyAyMjozNjo0NSArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjQy IDMvNF0gRGVsYXkgbG9ja2luZyBvZiBjaGlsZCB0YWJsZXMgaW4gY2FjaGVkIHBsYW5zIHVudGls CiBFeGVjdXRvclN0YXJ0KCkKCkN1cnJlbnRseSwgR2V0Q2FjaGVkUGxhbigpIHRha2VzIGEgbG9j ayBvbiBhbGwgcmVsYXRpb25zIGNvbnRhaW5lZCBpbgphIGNhY2hlZCBwbGFuIGJlZm9yZSByZXR1 cm5pbmcgaXQgYXMgYSB2YWxpZCBwbGFuIHRvIGl0cyBjYWxsZXJzIGZvcgpleGVjdXRpb24uICBP bmUgZGlzYWR2YW50YWdlIGlzIHRoYXQgaWYgdGhlIHBsYW4gY29udGFpbnMgcGFydGl0aW9ucwp0 aGF0IGFyZSBwcnVuYWJsZSB3aXRoIGNvbmRpdGlvbnMgaW52b2x2aW5nIEVYVEVSTiBwYXJhbWV0 ZXJzIGFuZApvdGhlciBzdGFibGUgZXhwcmVzc2lvbnMgKGtub3duIGFzICJpbml0aWFsIHBydW5p bmciKSwgbWFueSBvZiB0aGVtCndvdWxkIGJlIGxvY2tlZCB1bm5lY2Vzc2FyaWx5LCBiZWNhdXNl IG9ubHkgdGhvc2UgdGhhdCBzdXJ2aXZlCmluaXRpYWwgcHJ1bmluZyBuZWVkIHRvIGhhdmUgYmVl biBsb2NrZWQuICBMb2NraW5nIGFsbCBwYXJ0aXRpb25zIHRoaXMKd2F5IGNhdXNlcyBzaWduaWZp Y2FudCBkZWxheSB3aGVuIHRoZXJlIGFyZSBtYW55IHBhcnRpdGlvbnMuICBOb3RlCnRoYXQgaW5p dGlhbCBwcnVuaW5nIG9jY3VycyBkdXJpbmcgZXhlY3V0b3IncyBpbml0aWFsaXphdGlvbiBvZiB0 aGUKcGxhbiwgdGhhdCBpcywgSW5pdFBsYW4oKS4KClRoaXMgY29tbWl0IHJlYXJyYW5nZXMgdGhp bmdzIHRvIG1vdmUgdGhlIGxvY2tpbmcgb2YgY2hpbGQgdGFibGVzCnJlZmVyZW5jZWQgaW4gYSBj YWNoZWQgcGxhbiB0byBvY2N1ciBkdXJpbmcgSW5pdFBsYW4oKSBzbyB0aGF0CmluaXRpYWwgcHJ1 bmluZyBjYW4gZWxpbWluYXRlIGFueSBjaGlsZCB0YWJsZXMgdGhhdCBuZWVkIG5vdCBiZQpzY2Fu bmVkIGFuZCB0aHVzIGxvY2tlZC4KClRvIGRldGVybWluZSB0aGF0IGEgZ2l2ZW4gdGFibGUgaXMg YSBjaGlsZCB0YWJsZSwKRXhlY0dldFJhbmdlVGFibGVSZWxhdGlvbigpIG5vdyBsb29rcyBhdCB0 aGUgUlRFJ3MgaW5Gcm9tQ2wgZmllbGQsCndoaWNoIGlzIG9ubHkgdHJ1ZSBmb3IgdGFibGVzIHRo YXQgYXJlIGRpcmVjdGx5IG1lbnRpb25lZCBpbiB0aGUKcXVlcnkgYnV0IGZhbHNlIGZvciBjaGls ZCB0YWJsZXMuICBOb3RlIHRoYXQgYW55IHRhYmxlcyB3aG9zZSBSVEVzJwppbkZyb21DbCBpcyB0 cnVlIHdvdWxkIGFscmVhZHkgaGF2ZSBiZWVuIGxvY2tlZCBieSBHZXRDYWNoZWRQbGFuKCksCnNv IG5lZWQgbm90IGJlIGxvY2tlZCBhZ2FpbiBkdXJpbmcgZXhlY3V0aW9uLgoKSWYgdGhlIGxvY2tp bmcgb2YgY2hpbGQgdGFibGVzIGNhdXNlcyB0aGUgQ2FjaGVkUGxhbiB0byBnbyBzdGFsZSwgdGhh dAppcywgaXRzIGlzX3ZhbGlkIHNldCB0byBmYWxzZSBieSBQbGFuQ2FjaGVSZWxDYWxsYmFjaygp IHdoZW4gYW4KaW52YWxpZGF0aW9uIG1lc3NhZ2UgbWF0Y2hpbmcgc29tZSBjaGlsZCB0YWJsZSBj b250YWluZWQgaW4gdGhlIHBsYW4KaXMgcHJvY2Vzc2VkLCBFeGVjSW5pdE5vZGUoKSBhYmFuZG9u cyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgdGhlCnJlbWFpbmluZyBub2RlcyBpbiB0aGUgcGxhbiB0 cmVlLiAgSW4gdGhhdCBjYXNlLCBJbml0UGxhbigpIHJldHVybnMKYWZ0ZXIgc2V0dGluZyBRdWVy eURlc2MucGxhbnN0YXRlIHRvIE5VTEwgdG8gaW5kaWNhdGUgdG8gdGhlIGNhbGxlcgp0aGF0IG5v IGV4ZWN1dGlvbiBpcyBwb3NzaWJsZSB3aXRoIHRoZSBwbGFuIHRyZWUgYXMgaXMuICBUaG91Z2gg c29tZQpwbGFuIHRyZWUgc3Vibm9kZXMgbWF5IGdldCBmdWxseSBpbml0aWFsaXplZCBieSBFeGVj SW5pdE5vZGUoKSBiZWZvcmUKdGhlIENhY2hlZFBsYW4ncyBpbnZhbGlkYXRpb24gaXMgZGV0ZWN0 ZWQsIHNvIHRvIGVuc3VyZSB0aGF0IHRoZXkKYXJlIHJlbGVhc2VkIGJ5IEV4ZWNFbmRQbGFuKCks IEV4ZWNJbml0Tm9kZSgpIG5vdyBhZGRzIHRoZSBQbGFuU3RhdGUKbm9kZXMgb2YgdGhlIG5vZGVz IHRoYXQgYXJlIGZ1bGx5IGluaXRpYWxpemVkIHRvIGEgbmV3IExpc3QgaW4KRVN0YXRlIGNhbGxl ZCBlc19pbml0ZWRfcGxhbm5vZGVzLiAgRXhlY0VuZFBsYW4oKSByZWxlYXNlcyB0aGVtCmluZGl2 aWR1YWxseSBieSBjYWxsaW5nIEV4ZWNFbmROb2RlKCkgb24gZWFjaCBlbGVtZW50IG9mIHRoZSBu ZXcKTGlzdC4gIEV4ZWNFbmROb2RlKCkgaXMgbm8gbG9uZ2VyIHJlY3Vyc2l2ZSwgYmVjYXVzZSBh bGwgbm9kZXMgdGhhdApuZWVkIHRvIGJlIGNsb3NlZCBjYW4gYmUgZm91bmQgaW4gZXNfaW5pdGVk X3BsYW5ub2Rlcy4KCkNhbGwgc2l0ZXMgdGhhdCB1c2UgR2V0Q2FjaGVkUGxhbigpIHRvIGdldCB0 aGUgcGxhbiB0cmVlcyB0byBwYXNzIHRvCnRoZSBleGVjdXRvciBzaG91bGQgbm93IGJlIHByZXBh cmVkIHRvIGhhbmRsZSB0aGUgY2FzZSB3aGVyZSB0aGUgb2xkCkNhY2hlZFBsYW4gZ2V0cyBpbnZh bGlkYXRlZCBkdXJpbmcgRXhlY3V0b3JTdGFydCgpIGFzIGRlc2NyaWJlZAphYm92ZS4gIFNvIHRo aXMgY29tbWl0IHJlZmFjdG9ycyB0aGUgcmVsZXZhbnQgY29kZSBzaXRlcyB0byBtb3ZlIHRoZQpF eGVjdXRvclN0YXJ0KCkgY2FsbCAgY2xvc2VyIHRvIHRoZSBHZXRDYWNoZWRQbGFuKCkgdG8gaW1w bGVtZW50IHRoZQpyZXBsYW4gbG9vcCBjb252ZW5pZW50bHkuCgpHaXZlbiB0aGlzIG5ldyBiZWhh dmlvciwgUG9ydGFsU3RhcnQoKSBub3cgbXVzdCBhbHdheXMgcGVyZm9ybQpFeGVjdXRvclN0YXJ0 KCkgdG8gYmUgYWJsZSB0byBkcm9wIGFuZCByZWNyZWF0ZSBjYWNoZWQgcGxhbnMgaWYKbmVlZGVk LCB3aGljaCBpcyBjdXJyZW50bHkgb25seSBkb25lIHNvIGZvciBzaW5nbGUtcXVlcnkgcG9ydGFs cy4KRm9yIG11bHRpLXF1ZXJ5IHBvcnRhbHMsIHRoZSBRdWVyeURlc2NzIHRoYXQgYXJlIG5vdyBj cmVhdGVkIGR1cmluZwpQb3J0YWxTdGFydCgpIGFyZSByZW1lbWJlcmVkIGluIGEgbmV3IExpc3Qg ZmllbGQgb2YgUG9ydGFsIGNhbGxlZAoncWRlc2NzJyBhbmQgYWxsb2NhdGVkIGluIGEgbmV3IG1l bW9yeSBjb250ZXh0ICdxdWVyeUNvbnRleHQnLgpQb3J0YWxSdW5NdWx0aSgpIG5vdyBzaW1wbHkg cGVyZm9ybXMgRXhlY3V0b3JSdW4oKSBvbiB0aGUKUXVlcnlEZXNjcyBmb3VuZCBpbiAncWRlc2Nz Jy4KCkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vQ0ErSGl3cUZHa01TZ2U2VGdDOUtR emRlMG9ocEF5Y0xRdVY3b29pdEVFcGJLQjBPX21nQG1haWwuZ21haWwuY29tCi0tLQogY29udHJp Yi9wb3N0Z3Jlc19mZHcvcG9zdGdyZXNfZmR3LmMgICAgICAgICAgIHwgICA0ICsKIHNyYy9iYWNr ZW5kL2NvbW1hbmRzL2NvcHl0by5jICAgICAgICAgICAgICAgICB8ICAgNCArLQogc3JjL2JhY2tl bmQvY29tbWFuZHMvY3JlYXRlYXMuYyAgICAgICAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2Vu ZC9jb21tYW5kcy9leHBsYWluLmMgICAgICAgICAgICAgICAgfCAxNDUgKysrKystLS0KIHNyYy9i YWNrZW5kL2NvbW1hbmRzL2V4dGVuc2lvbi5jICAgICAgICAgICAgICB8ICAgMiArCiBzcmMvYmFj a2VuZC9jb21tYW5kcy9tYXR2aWV3LmMgICAgICAgICAgICAgICAgfCAgIDMgKy0KIHNyYy9iYWNr ZW5kL2NvbW1hbmRzL3BvcnRhbGNtZHMuYyAgICAgICAgICAgICB8ICAxNiArLQogc3JjL2JhY2tl bmQvY29tbWFuZHMvcHJlcGFyZS5jICAgICAgICAgICAgICAgIHwgIDMyICstCiBzcmMvYmFja2Vu ZC9leGVjdXRvci9SRUFETUUgICAgICAgICAgICAgICAgICAgfCAgNDEgKystCiBzcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjTWFpbi5jICAgICAgICAgICAgICAgfCAxMDYgKysrKystCiBzcmMvYmFj a2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYyAgICAgICAgICAgfCAgMTIgKy0KIHNyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYyAgICAgICAgICB8ICAxNCArCiBzcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjUHJvY25vZGUuYyAgICAgICAgICAgfCAgNTAgKystCiBzcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjVXRpbHMuYyAgICAgICAgICAgICAgfCAgNjMgKysrLQogc3JjL2JhY2tl bmQvZXhlY3V0b3IvZnVuY3Rpb25zLmMgICAgICAgICAgICAgIHwgICAyICsKIHNyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVBZ2cuYyAgICAgICAgICAgICAgICB8ICAgNiArLQogc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUFwcGVuZC5jICAgICAgICAgICAgIHwgIDQ4ICsrLQogc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUJpdG1hcEFuZC5jICAgICAgICAgIHwgIDMxICstCiBzcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlQml0bWFwSGVhcHNjYW4uYyAgICAgfCAgIDkgKy0KIHNyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVCaXRtYXBJbmRleHNjYW4uYyAgICB8ICAgOSArLQogc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZUJpdG1hcE9yLmMgICAgICAgICAgIHwgIDMxICstCiBzcmMvYmFja2VuZC9leGVj dXRvci9ub2RlQ3VzdG9tLmMgICAgICAgICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZUZvcmVpZ25zY2FuLmMgICAgICAgIHwgICA4ICstCiBzcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlR2F0aGVyLmMgICAgICAgICAgICAgfCAgIDQgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVHYXRoZXJNZXJnZS5jICAgICAgICB8ICAgMyArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZUdyb3VwLmMgICAgICAgICAgICAgIHwgICA3ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9u b2RlSGFzaC5jICAgICAgICAgICAgICAgfCAgMTAgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVIYXNoam9pbi5jICAgICAgICAgICB8ICAxMCArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUluY3JlbWVudGFsU29ydC5jICAgIHwgICA3ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl SW5kZXhvbmx5c2Nhbi5jICAgICAgfCAgMTEgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJ bmRleHNjYW4uYyAgICAgICAgICB8ICAxMSArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUxp bWl0LmMgICAgICAgICAgICAgIHwgICAzICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTG9j a1Jvd3MuYyAgICAgICAgICAgfCAgIDMgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNYXRl cmlhbC5jICAgICAgICAgICB8ICAgNyArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lbW9p emUuYyAgICAgICAgICAgIHwgICA3ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VB cHBlbmQuYyAgICAgICAgfCAgNDcgKystCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2Vq b2luLmMgICAgICAgICAgfCAgMTAgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlU YWJsZS5jICAgICAgICB8ICAxMiArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU5lc3Rsb29w LmMgICAgICAgICAgIHwgIDEwICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUHJvamVjdFNl dC5jICAgICAgICAgfCAgIDcgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVSZWN1cnNpdmV1 bmlvbi5jICAgICB8ICAxMCArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVJlc3VsdC5jICAg ICAgICAgICAgIHwgICA3ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2FtcGxlc2Nhbi5j ICAgICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4uYyAgICAg ICAgICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXRPcC5jICAgICAgICAg ICAgICB8ICAgNCArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNvcnQuYyAgICAgICAgICAg ICAgIHwgICA3ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU3VicXVlcnlzY2FuLmMgICAg ICAgfCAgIDcgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUaWRyYW5nZXNjYW4uYyAgICAg ICB8ICAgMiArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGlkc2Nhbi5jICAgICAgICAgICAg fCAgIDIgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVVuaXF1ZS5jICAgICAgICAgICAgIHwg ICA0ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlV2luZG93QWdnLmMgICAgICAgICAgfCAg IDYgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL3NwaS5jICAgICAgICAgICAgICAgICAgICB8ICA0 OSArKy0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sbWdyLmMgICAgICAgICAgICAgICB8ICA0 NSArKysKIHNyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYyAgICAgICAgICAgICAgICAgICB8ICAx MyArLQogc3JjL2JhY2tlbmQvdGNvcC9wcXVlcnkuYyAgICAgICAgICAgICAgICAgICAgIHwgMzQw ICsrKysrKysrKy0tLS0tLS0tLQogc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMg ICAgICAgICAgIHwgIDIxICsrCiBzcmMvYmFja2VuZC91dGlscy9jYWNoZS9wbGFuY2FjaGUuYyAg ICAgICAgICAgfCAxNDkgKysrLS0tLS0KIHNyYy9iYWNrZW5kL3V0aWxzL21tZ3IvcG9ydGFsbWVt LmMgICAgICAgICAgICB8ICAgOSArCiBzcmMvaW5jbHVkZS9jb21tYW5kcy9leHBsYWluLmggICAg ICAgICAgICAgICAgfCAgIDcgKy0KIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNkZXNjLmggICAg ICAgICAgICAgICB8ICAgNSArCiBzcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oICAgICAg ICAgICAgICAgfCAgMTMgKwogc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggICAgICAgICAg ICAgICAgIHwgICA2ICsKIHNyYy9pbmNsdWRlL3N0b3JhZ2UvbG1nci5oICAgICAgICAgICAgICAg ICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaCAgICAgICAgICAgICAg ICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvdXRpbHMvcGxhbmNhY2hlLmggICAgICAgICAgICAgICAg IHwgIDE0ICsKIHNyYy9pbmNsdWRlL3V0aWxzL3BvcnRhbC5oICAgICAgICAgICAgICAgICAgICB8 ICAgNCArCiBzcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9NYWtlZmlsZSAgICAgfCAg IDMgKy0KIC4uLi9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9kZWxheV9leGVjdXRpb24uYyB8ICA2 MyArKystCiAuLi4vZXhwZWN0ZWQvY2FjaGVkLXBsYW4tcmVwbGFuLm91dCAgICAgICAgICAgfCAx NTYgKysrKysrKysKIC4uLi9zcGVjcy9jYWNoZWQtcGxhbi1yZXBsYW4uc3BlYyAgICAgICAgICAg ICB8ICA2MSArKysrCiA3MCBmaWxlcyBjaGFuZ2VkLCAxMjMzIGluc2VydGlvbnMoKyksIDU4OSBk ZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4 ZWN1dGlvbi9leHBlY3RlZC9jYWNoZWQtcGxhbi1yZXBsYW4ub3V0CiBjcmVhdGUgbW9kZSAxMDA2 NDQgc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vc3BlY3MvY2FjaGVkLXBsYW4tcmVw bGFuLnNwZWMKCmRpZmYgLS1naXQgYS9jb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcu YyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3Bvc3RncmVzX2Zkdy5jCmluZGV4IGM1Y2FkYTU1ZmIu LjFlZGQ0YzNmMTcgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3Bvc3RncmVzX2Zk dy5jCisrKyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3Bvc3RncmVzX2Zkdy5jCkBAIC0yNjU4LDcg KzI2NTgsMTEgQEAgcG9zdGdyZXNCZWdpbkRpcmVjdE1vZGlmeShGb3JlaWduU2NhblN0YXRlICpu b2RlLCBpbnQgZWZsYWdzKQogCS8qIEdldCBpbmZvIGFib3V0IGZvcmVpZ24gdGFibGUuICovCiAJ cnRpbmRleCA9IG5vZGUtPnJlc3VsdFJlbEluZm8tPnJpX1JhbmdlVGFibGVJbmRleDsKIAlpZiAo ZnNwbGFuLT5zY2FuLnNjYW5yZWxpZCA9PSAwKQorCXsKIAkJZG1zdGF0ZS0+cmVsID0gRXhlY09w ZW5TY2FuUmVsYXRpb24oZXN0YXRlLCBydGluZGV4LCBlZmxhZ3MpOworCQlpZiAoIUV4ZWNQbGFu U3RpbGxWYWxpZChlc3RhdGUpKQorCQkJcmV0dXJuOworCX0KIAllbHNlCiAJCWRtc3RhdGUtPnJl bCA9IG5vZGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbjsKIAl0YWJsZSA9IEdldEZvcmVpZ25UYWJs ZShSZWxhdGlvbkdldFJlbGlkKGRtc3RhdGUtPnJlbCkpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvY29weXRvLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYwppbmRl eCA5ZTRiMjQzN2E1Li44MjQ0MTk0NjgxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5k cy9jb3B5dG8uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYwpAQCAtNTU4LDcg KzU1OCw4IEBAIEJlZ2luQ29weVRvKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJKChEUl9jb3B5ICop IGRlc3QpLT5jc3RhdGUgPSBjc3RhdGU7CiAKIAkJLyogQ3JlYXRlIGEgUXVlcnlEZXNjIHJlcXVl c3Rpbmcgbm8gb3V0cHV0ICovCi0JCWNzdGF0ZS0+cXVlcnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNj KHBsYW4sIHBzdGF0ZS0+cF9zb3VyY2V0ZXh0LAorCQljc3RhdGUtPnF1ZXJ5RGVzYyA9IENyZWF0 ZVF1ZXJ5RGVzYyhwbGFuLCBOVUxMLAorCQkJCQkJCQkJCQlwc3RhdGUtPnBfc291cmNldGV4dCwK IAkJCQkJCQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSwKIAkJCQkJCQkJCQkJSW52YWxpZFNuYXBz aG90LAogCQkJCQkJCQkJCQlkZXN0LCBOVUxMLCBOVUxMLCAwKTsKQEAgLTU2OSw2ICs1NzAsNyBA QCBCZWdpbkNvcHlUbyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJCSAqIEV4ZWN1dG9yU3RhcnQgY29t cHV0ZXMgYSByZXN1bHQgdHVwZGVzYyBmb3IgdXMKIAkJICovCiAJCUV4ZWN1dG9yU3RhcnQoY3N0 YXRlLT5xdWVyeURlc2MsIDApOworCQlBc3NlcnQoY3N0YXRlLT5xdWVyeURlc2MtPnBsYW5fdmFs aWQpOwogCiAJCXR1cERlc2MgPSBjc3RhdGUtPnF1ZXJ5RGVzYy0+dHVwRGVzYzsKIAl9CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jcmVhdGVhcy5jIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvY3JlYXRlYXMuYwppbmRleCBlOTE5MjBjYTE0Li4xOGIwN2MwMjAwIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9jb21tYW5kcy9jcmVhdGVhcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1h bmRzL2NyZWF0ZWFzLmMKQEAgLTMyNSw3ICszMjUsNyBAQCBFeGVjQ3JlYXRlVGFibGVBcyhQYXJz ZVN0YXRlICpwc3RhdGUsIENyZWF0ZVRhYmxlQXNTdG10ICpzdG10LAogCQlVcGRhdGVBY3RpdmVT bmFwc2hvdENvbW1hbmRJZCgpOwogCiAJCS8qIENyZWF0ZSBhIFF1ZXJ5RGVzYywgcmVkaXJlY3Rp bmcgb3V0cHV0IHRvIG91ciB0dXBsZSByZWNlaXZlciAqLwotCQlxdWVyeURlc2MgPSBDcmVhdGVR dWVyeURlc2MocGxhbiwgcHN0YXRlLT5wX3NvdXJjZXRleHQsCisJCXF1ZXJ5RGVzYyA9IENyZWF0 ZVF1ZXJ5RGVzYyhwbGFuLCBOVUxMLCBwc3RhdGUtPnBfc291cmNldGV4dCwKIAkJCQkJCQkJCUdl dEFjdGl2ZVNuYXBzaG90KCksIEludmFsaWRTbmFwc2hvdCwKIAkJCQkJCQkJCWRlc3QsIHBhcmFt cywgcXVlcnlFbnYsIDApOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBs YWluLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKaW5kZXggODU3MGIxNGY2Mi4u YjFlYTQ1ZWYyYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCisr KyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYwpAQCAtMzkzLDYgKzM5Myw3IEBAIEV4 cGxhaW5PbmVRdWVyeShRdWVyeSAqcXVlcnksIGludCBjdXJzb3JPcHRpb25zLAogCWVsc2UKIAl7 CiAJCVBsYW5uZWRTdG10ICpwbGFuOworCQlRdWVyeURlc2MgICAqcXVlcnlEZXNjOwogCQlpbnN0 cl90aW1lCXBsYW5zdGFydCwKIAkJCQkJcGxhbmR1cmF0aW9uOwogCQlCdWZmZXJVc2FnZSBidWZ1 c2FnZV9zdGFydCwKQEAgLTQxNSwxMiArNDE2LDkwIEBAIEV4cGxhaW5PbmVRdWVyeShRdWVyeSAq cXVlcnksIGludCBjdXJzb3JPcHRpb25zLAogCQkJQnVmZmVyVXNhZ2VBY2N1bURpZmYoJmJ1ZnVz YWdlLCAmcGdCdWZmZXJVc2FnZSwgJmJ1ZnVzYWdlX3N0YXJ0KTsKIAkJfQogCisJCXF1ZXJ5RGVz YyA9IEV4cGxhaW5RdWVyeURlc2MocGxhbiwgTlVMTCwgcXVlcnlTdHJpbmcsIGludG8sIGVzLAor CQkJCQkJCQkJIHBhcmFtcywgcXVlcnlFbnYpOworCQlBc3NlcnQocXVlcnlEZXNjKTsKKwogCQkv KiBydW4gaXQgKGlmIG5lZWRlZCkgYW5kIHByb2R1Y2Ugb3V0cHV0ICovCi0JCUV4cGxhaW5PbmVQ bGFuKHBsYW4sIGludG8sIGVzLCBxdWVyeVN0cmluZywgcGFyYW1zLCBxdWVyeUVudiwKKwkJRXhw bGFpbk9uZVBsYW4ocXVlcnlEZXNjLCBpbnRvLCBlcywgcXVlcnlTdHJpbmcsIHBhcmFtcywgcXVl cnlFbnYsCiAJCQkJCSAgICZwbGFuZHVyYXRpb24sIChlcy0+YnVmZmVycyA/ICZidWZ1c2FnZSA6 IE5VTEwpKTsKIAl9CiB9CiAKKy8qCisgKiBFeHBsYWluUXVlcnlEZXNjCisgKgkJU2V0IHVwIFF1 ZXJ5RGVzYyBmb3IgRVhQTEFJTmluZyBhIGdpdmVuIHBsYW4KKyAqCisgKiBUaGlzIHJldHVybnMg TlVMTCBpZiBjcGxhbiBpcyBmb3VuZCB0byBiZSBubyBsb25nZXIgdmFsaWQuCisgKi8KK1F1ZXJ5 RGVzYyAqCitFeHBsYWluUXVlcnlEZXNjKFBsYW5uZWRTdG10ICpzdG10LCBDYWNoZWRQbGFuICpj cGxhbiwKKwkJCQkgY29uc3QgY2hhciAqcXVlcnlTdHJpbmcsIEludG9DbGF1c2UgKmludG8sIEV4 cGxhaW5TdGF0ZSAqZXMsCisJCQkJIFBhcmFtTGlzdEluZm8gcGFyYW1zLCBRdWVyeUVudmlyb25t ZW50ICpxdWVyeUVudikKK3sKKwlRdWVyeURlc2MgICpxdWVyeURlc2M7CisJRGVzdFJlY2VpdmVy ICpkZXN0OworCWludAkJCWVmbGFnczsKKwlpbnQJCQlpbnN0cnVtZW50X29wdGlvbiA9IDA7CisK KwkvKgorCSAqIE5vcm1hbGx5IHdlIGRpc2NhcmQgdGhlIHF1ZXJ5J3Mgb3V0cHV0LCBidXQgaWYg ZXhwbGFpbmluZyBDUkVBVEUgVEFCTEUKKwkgKiBBUywgd2UnZCBiZXR0ZXIgdXNlIHRoZSBhcHBy b3ByaWF0ZSB0dXBsZSByZWNlaXZlci4KKwkgKi8KKwlpZiAoaW50bykKKwkJZGVzdCA9IENyZWF0 ZUludG9SZWxEZXN0UmVjZWl2ZXIoaW50byk7CisJZWxzZQorCQlkZXN0ID0gTm9uZV9SZWNlaXZl cjsKKworCWlmIChlcy0+YW5hbHl6ZSAmJiBlcy0+dGltaW5nKQorCQlpbnN0cnVtZW50X29wdGlv biB8PSBJTlNUUlVNRU5UX1RJTUVSOworCWVsc2UgaWYgKGVzLT5hbmFseXplKQorCQlpbnN0cnVt ZW50X29wdGlvbiB8PSBJTlNUUlVNRU5UX1JPV1M7CisKKwlpZiAoZXMtPmJ1ZmZlcnMpCisJCWlu c3RydW1lbnRfb3B0aW9uIHw9IElOU1RSVU1FTlRfQlVGRkVSUzsKKwlpZiAoZXMtPndhbCkKKwkJ aW5zdHJ1bWVudF9vcHRpb24gfD0gSU5TVFJVTUVOVF9XQUw7CisKKwkvKgorCSAqIFVzZSBhIHNu YXBzaG90IHdpdGggYW4gdXBkYXRlZCBjb21tYW5kIElEIHRvIGVuc3VyZSB0aGlzIHF1ZXJ5IHNl ZXMKKwkgKiByZXN1bHRzIG9mIGFueSBwcmV2aW91c2x5IGV4ZWN1dGVkIHF1ZXJpZXMuCisJICov CisJUHVzaENvcGllZFNuYXBzaG90KEdldEFjdGl2ZVNuYXBzaG90KCkpOworCVVwZGF0ZUFjdGl2 ZVNuYXBzaG90Q29tbWFuZElkKCk7CisKKwkvKiBDcmVhdGUgYSBRdWVyeURlc2MgZm9yIHRoZSBx dWVyeSAqLworCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhzdG10LCBjcGxhbiwgcXVlcnlT dHJpbmcsCisJCQkJCQkJCUdldEFjdGl2ZVNuYXBzaG90KCksIEludmFsaWRTbmFwc2hvdCwKKwkJ CQkJCQkJZGVzdCwgcGFyYW1zLCBxdWVyeUVudiwgaW5zdHJ1bWVudF9vcHRpb24pOworCisJLyog U2VsZWN0IGV4ZWN1dGlvbiBvcHRpb25zICovCisJaWYgKGVzLT5hbmFseXplKQorCQllZmxhZ3Mg PSAwOwkJCQkvKiBkZWZhdWx0IHJ1bi10by1jb21wbGV0aW9uIGZsYWdzICovCisJZWxzZQorCQll ZmxhZ3MgPSBFWEVDX0ZMQUdfRVhQTEFJTl9PTkxZOworCWlmIChlcy0+Z2VuZXJpYykKKwkJZWZs YWdzIHw9IEVYRUNfRkxBR19FWFBMQUlOX0dFTkVSSUM7CisJaWYgKGludG8pCisJCWVmbGFncyB8 PSBHZXRJbnRvUmVsRUZsYWdzKGludG8pOworCisJLyoKKwkgKiBDYWxsIEV4ZWN1dG9yU3RhcnQg dG8gcHJlcGFyZSB0aGUgcGxhbiBmb3IgZXhlY3V0aW9uLiAgQSBjYWNoZWQgcGxhbgorCSAqIG1h eSBnZXQgaW52YWxpZGF0ZWQgYXMgd2UncmUgZG9pbmcgdGhhdC4KKwkgKi8KKwlFeGVjdXRvclN0 YXJ0KHF1ZXJ5RGVzYywgZWZsYWdzKTsKKwlpZiAoIXF1ZXJ5RGVzYy0+cGxhbl92YWxpZCkKKwl7 CisJCS8qIENsZWFuIHVwLiAqLworCQlFeGVjdXRvckVuZChxdWVyeURlc2MpOworCQlGcmVlUXVl cnlEZXNjKHF1ZXJ5RGVzYyk7CisJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CisJCXJldHVybiBOVUxM OworCX0KKworCXJldHVybiBxdWVyeURlc2M7Cit9CisKIC8qCiAgKiBFeHBsYWluT25lVXRpbGl0 eSAtCiAgKgkgIHByaW50IG91dCB0aGUgZXhlY3V0aW9uIHBsYW4gZm9yIG9uZSB1dGlsaXR5IHN0 YXRlbWVudApAQCAtNTI0LDI5ICs2MDMsMTYgQEAgRXhwbGFpbk9uZVV0aWxpdHkoTm9kZSAqdXRp bGl0eVN0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAgKiB0byBjYWxs IGl0LgogICovCiB2b2lkCi1FeHBsYWluT25lUGxhbihQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQs IEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCitFeHBsYWluT25lUGxhbihRdWVy eURlc2MgKnF1ZXJ5RGVzYywKKwkJCSAgIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAq ZXMsCiAJCQkgICBjb25zdCBjaGFyICpxdWVyeVN0cmluZywgUGFyYW1MaXN0SW5mbyBwYXJhbXMs CiAJCQkgICBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudiwgY29uc3QgaW5zdHJfdGltZSAqcGxh bmR1cmF0aW9uLAogCQkJICAgY29uc3QgQnVmZmVyVXNhZ2UgKmJ1ZnVzYWdlKQogewotCURlc3RS ZWNlaXZlciAqZGVzdDsKLQlRdWVyeURlc2MgICpxdWVyeURlc2M7CiAJaW5zdHJfdGltZQlzdGFy dHRpbWU7CiAJZG91YmxlCQl0b3RhbHRpbWUgPSAwOwotCWludAkJCWVmbGFnczsKLQlpbnQJCQlp bnN0cnVtZW50X29wdGlvbiA9IDA7Ci0KLQlBc3NlcnQocGxhbm5lZHN0bXQtPmNvbW1hbmRUeXBl ICE9IENNRF9VVElMSVRZKTsKIAotCWlmIChlcy0+YW5hbHl6ZSAmJiBlcy0+dGltaW5nKQotCQlp bnN0cnVtZW50X29wdGlvbiB8PSBJTlNUUlVNRU5UX1RJTUVSOwotCWVsc2UgaWYgKGVzLT5hbmFs eXplKQotCQlpbnN0cnVtZW50X29wdGlvbiB8PSBJTlNUUlVNRU5UX1JPV1M7Ci0KLQlpZiAoZXMt PmJ1ZmZlcnMpCi0JCWluc3RydW1lbnRfb3B0aW9uIHw9IElOU1RSVU1FTlRfQlVGRkVSUzsKLQlp ZiAoZXMtPndhbCkKLQkJaW5zdHJ1bWVudF9vcHRpb24gfD0gSU5TVFJVTUVOVF9XQUw7CisJQXNz ZXJ0KHF1ZXJ5RGVzYy0+cGxhbm5lZHN0bXQtPmNvbW1hbmRUeXBlICE9IENNRF9VVElMSVRZKTsK IAogCS8qCiAJICogV2UgYWx3YXlzIGNvbGxlY3QgdGltaW5nIGZvciB0aGUgZW50aXJlIHN0YXRl bWVudCwgZXZlbiB3aGVuIG5vZGUtbGV2ZWwKQEAgLTU1NSw0MCArNjIxLDYgQEAgRXhwbGFpbk9u ZVBsYW4oUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10LCBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWlu U3RhdGUgKmVzLAogCSAqLwogCUlOU1RSX1RJTUVfU0VUX0NVUlJFTlQoc3RhcnR0aW1lKTsKIAot CS8qCi0JICogVXNlIGEgc25hcHNob3Qgd2l0aCBhbiB1cGRhdGVkIGNvbW1hbmQgSUQgdG8gZW5z dXJlIHRoaXMgcXVlcnkgc2VlcwotCSAqIHJlc3VsdHMgb2YgYW55IHByZXZpb3VzbHkgZXhlY3V0 ZWQgcXVlcmllcy4KLQkgKi8KLQlQdXNoQ29waWVkU25hcHNob3QoR2V0QWN0aXZlU25hcHNob3Qo KSk7Ci0JVXBkYXRlQWN0aXZlU25hcHNob3RDb21tYW5kSWQoKTsKLQotCS8qCi0JICogTm9ybWFs bHkgd2UgZGlzY2FyZCB0aGUgcXVlcnkncyBvdXRwdXQsIGJ1dCBpZiBleHBsYWluaW5nIENSRUFU RSBUQUJMRQotCSAqIEFTLCB3ZSdkIGJldHRlciB1c2UgdGhlIGFwcHJvcHJpYXRlIHR1cGxlIHJl Y2VpdmVyLgotCSAqLwotCWlmIChpbnRvKQotCQlkZXN0ID0gQ3JlYXRlSW50b1JlbERlc3RSZWNl aXZlcihpbnRvKTsKLQllbHNlCi0JCWRlc3QgPSBOb25lX1JlY2VpdmVyOwotCi0JLyogQ3JlYXRl IGEgUXVlcnlEZXNjIGZvciB0aGUgcXVlcnkgKi8KLQlxdWVyeURlc2MgPSBDcmVhdGVRdWVyeURl c2MocGxhbm5lZHN0bXQsIHF1ZXJ5U3RyaW5nLAotCQkJCQkJCQlHZXRBY3RpdmVTbmFwc2hvdCgp LCBJbnZhbGlkU25hcHNob3QsCi0JCQkJCQkJCWRlc3QsIHBhcmFtcywgcXVlcnlFbnYsIGluc3Ry dW1lbnRfb3B0aW9uKTsKLQotCS8qIFNlbGVjdCBleGVjdXRpb24gb3B0aW9ucyAqLwotCWlmIChl cy0+YW5hbHl6ZSkKLQkJZWZsYWdzID0gMDsJCQkJLyogZGVmYXVsdCBydW4tdG8tY29tcGxldGlv biBmbGFncyAqLwotCWVsc2UKLQkJZWZsYWdzID0gRVhFQ19GTEFHX0VYUExBSU5fT05MWTsKLQlp ZiAoZXMtPmdlbmVyaWMpCi0JCWVmbGFncyB8PSBFWEVDX0ZMQUdfRVhQTEFJTl9HRU5FUklDOwot CWlmIChpbnRvKQotCQllZmxhZ3MgfD0gR2V0SW50b1JlbEVGbGFncyhpbnRvKTsKLQotCS8qIGNh bGwgRXhlY3V0b3JTdGFydCB0byBwcmVwYXJlIHRoZSBwbGFuIGZvciBleGVjdXRpb24gKi8KLQlF eGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgZWZsYWdzKTsKLQogCS8qIEV4ZWN1dGUgdGhlIHBsYW4g Zm9yIHN0YXRpc3RpY3MgaWYgYXNrZWQgZm9yICovCiAJaWYgKGVzLT5hbmFseXplKQogCXsKQEAg LTQ4NjUsNiArNDg5NywxNyBAQCBFeHBsYWluRHVtbXlHcm91cChjb25zdCBjaGFyICpvYmp0eXBl LCBjb25zdCBjaGFyICpsYWJlbG5hbWUsIEV4cGxhaW5TdGF0ZSAqZXMpCiAJfQogfQogCisvKgor ICogRGlzY2FyZCBvdXRwdXQgYnVmZmVyIGZvciBhIGZyZXNoIHJlc3RhcnQuCisgKi8KK3ZvaWQK K0V4cGxhaW5SZXNldE91dHB1dChFeHBsYWluU3RhdGUgKmVzKQoreworCUFzc2VydChlcy0+c3Ry KTsKKwlyZXNldFN0cmluZ0luZm8oZXMtPnN0cik7CisJRXhwbGFpbkJlZ2luT3V0cHV0KGVzKTsK K30KKwogLyoKICAqIEVtaXQgdGhlIHN0YXJ0LW9mLW91dHB1dCBib2lsZXJwbGF0ZS4KICAqCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHRlbnNpb24uYyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL2V4dGVuc2lvbi5jCmluZGV4IDlhMmVlMWM2MDAuLjcyZDYwZDljNGYgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4dGVuc2lvbi5jCisrKyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL2V4dGVuc2lvbi5jCkBAIC03OTcsMTEgKzc5NywxMyBAQCBleGVjdXRlX3NxbF9z dHJpbmcoY29uc3QgY2hhciAqc3FsKQogCQkJCVF1ZXJ5RGVzYyAgKnFkZXNjOwogCiAJCQkJcWRl c2MgPSBDcmVhdGVRdWVyeURlc2Moc3RtdCwKKwkJCQkJCQkJCQlOVUxMLAogCQkJCQkJCQkJCXNx bCwKIAkJCQkJCQkJCQlHZXRBY3RpdmVTbmFwc2hvdCgpLCBOVUxMLAogCQkJCQkJCQkJCWRlc3Qs IE5VTEwsIE5VTEwsIDApOwogCiAJCQkJRXhlY3V0b3JTdGFydChxZGVzYywgMCk7CisJCQkJQXNz ZXJ0KHFkZXNjLT5wbGFuX3ZhbGlkKTsKIAkJCQlFeGVjdXRvclJ1bihxZGVzYywgRm9yd2FyZFNj YW5EaXJlY3Rpb24sIDAsIHRydWUpOwogCQkJCUV4ZWN1dG9yRmluaXNoKHFkZXNjKTsKIAkJCQlF eGVjdXRvckVuZChxZGVzYyk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9tYXR2 aWV3LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9tYXR2aWV3LmMKaW5kZXggYWMyZTc0ZmEzZi4u YTY0ODgwYjcxOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvbWF0dmlldy5jCisr KyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL21hdHZpZXcuYwpAQCAtNDA4LDEyICs0MDgsMTMgQEAg cmVmcmVzaF9tYXR2aWV3X2RhdGFmaWxsKERlc3RSZWNlaXZlciAqZGVzdCwgUXVlcnkgKnF1ZXJ5 LAogCVVwZGF0ZUFjdGl2ZVNuYXBzaG90Q29tbWFuZElkKCk7CiAKIAkvKiBDcmVhdGUgYSBRdWVy eURlc2MsIHJlZGlyZWN0aW5nIG91dHB1dCB0byBvdXIgdHVwbGUgcmVjZWl2ZXIgKi8KLQlxdWVy eURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxhbiwgcXVlcnlTdHJpbmcsCisJcXVlcnlEZXNjID0g Q3JlYXRlUXVlcnlEZXNjKHBsYW4sIE5VTEwsIHF1ZXJ5U3RyaW5nLAogCQkJCQkJCQlHZXRBY3Rp dmVTbmFwc2hvdCgpLCBJbnZhbGlkU25hcHNob3QsCiAJCQkJCQkJCWRlc3QsIE5VTEwsIE5VTEws IDApOwogCiAJLyogY2FsbCBFeGVjdXRvclN0YXJ0IHRvIHByZXBhcmUgdGhlIHBsYW4gZm9yIGV4 ZWN1dGlvbiAqLwogCUV4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCAwKTsKKwlBc3NlcnQocXVlcnlE ZXNjLT5wbGFuX3ZhbGlkKTsKIAogCS8qIHJ1biB0aGUgcGxhbiAqLwogCUV4ZWN1dG9yUnVuKHF1 ZXJ5RGVzYywgRm9yd2FyZFNjYW5EaXJlY3Rpb24sIDAsIHRydWUpOwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvY29tbWFuZHMvcG9ydGFsY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcG9y dGFsY21kcy5jCmluZGV4IDczZWQ3YWEyZjAuLjRhYmJlYzA1NGIgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3BvcnRhbGNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9w b3J0YWxjbWRzLmMKQEAgLTE0Niw2ICsxNDYsNyBAQCBQZXJmb3JtQ3Vyc29yT3BlbihQYXJzZVN0 YXRlICpwc3RhdGUsIERlY2xhcmVDdXJzb3JTdG10ICpjc3RtdCwgUGFyYW1MaXN0SW5mbyBwYQog CVBvcnRhbFN0YXJ0KHBvcnRhbCwgcGFyYW1zLCAwLCBHZXRBY3RpdmVTbmFwc2hvdCgpKTsKIAog CUFzc2VydChwb3J0YWwtPnN0cmF0ZWd5ID09IFBPUlRBTF9PTkVfU0VMRUNUKTsKKwlBc3NlcnQo cG9ydGFsLT5wbGFuX3ZhbGlkKTsKIAogCS8qCiAJICogV2UncmUgZG9uZTsgdGhlIHF1ZXJ5IHdv bid0IGFjdHVhbGx5IGJlIHJ1biB1bnRpbCBQZXJmb3JtUG9ydGFsRmV0Y2ggaXMKQEAgLTI0OSw2 ICsyNTAsMTcgQEAgUGVyZm9ybVBvcnRhbENsb3NlKGNvbnN0IGNoYXIgKm5hbWUpCiAJUG9ydGFs RHJvcChwb3J0YWwsIGZhbHNlKTsKIH0KIAorLyoKKyAqIFJlbGVhc2UgYSBwb3J0YWwncyBRdWVy eURlc2MuCisgKi8KK3ZvaWQKK1BvcnRhbFF1ZXJ5RmluaXNoKFF1ZXJ5RGVzYyAqcXVlcnlEZXNj KQoreworCUV4ZWN1dG9yRmluaXNoKHF1ZXJ5RGVzYyk7CisJRXhlY3V0b3JFbmQocXVlcnlEZXNj KTsKKwlGcmVlUXVlcnlEZXNjKHF1ZXJ5RGVzYyk7Cit9CisKIC8qCiAgKiBQb3J0YWxDbGVhbnVw CiAgKgpAQCAtMjk1LDkgKzMwNyw3IEBAIFBvcnRhbENsZWFudXAoUG9ydGFsIHBvcnRhbCkKIAkJ CWlmIChwb3J0YWwtPnJlc293bmVyKQogCQkJCUN1cnJlbnRSZXNvdXJjZU93bmVyID0gcG9ydGFs LT5yZXNvd25lcjsKIAotCQkJRXhlY3V0b3JGaW5pc2gocXVlcnlEZXNjKTsKLQkJCUV4ZWN1dG9y RW5kKHF1ZXJ5RGVzYyk7Ci0JCQlGcmVlUXVlcnlEZXNjKHF1ZXJ5RGVzYyk7CisJCQlQb3J0YWxR dWVyeUZpbmlzaChxdWVyeURlc2MpOwogCiAJCQlDdXJyZW50UmVzb3VyY2VPd25lciA9IHNhdmVS ZXNvdXJjZU93bmVyOwogCQl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wcmVw YXJlLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMKaW5kZXggMThmNzAzMTlmYy4u YzkwNzBlZDk3ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jCisr KyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYwpAQCAtMTgzLDYgKzE4Myw3IEBAIEV4 ZWN1dGVRdWVyeShQYXJzZVN0YXRlICpwc3RhdGUsCiAJCXBhcmFtTEkgPSBFdmFsdWF0ZVBhcmFt cyhwc3RhdGUsIGVudHJ5LCBzdG10LT5wYXJhbXMsIGVzdGF0ZSk7CiAJfQogCityZXBsYW46CiAJ LyogQ3JlYXRlIGEgbmV3IHBvcnRhbCB0byBydW4gdGhlIHF1ZXJ5IGluICovCiAJcG9ydGFsID0g Q3JlYXRlTmV3UG9ydGFsKCk7CiAJLyogRG9uJ3QgZGlzcGxheSB0aGUgcG9ydGFsIGluIHBnX2N1 cnNvcnMsIGl0IGlzIGZvciBpbnRlcm5hbCB1c2Ugb25seSAqLwpAQCAtMjUxLDEwICsyNTIsMTkg QEAgRXhlY3V0ZVF1ZXJ5KFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAl9CiAKIAkvKgotCSAqIFJ1biB0 aGUgcG9ydGFsIGFzIGFwcHJvcHJpYXRlLgorCSAqIFJ1biB0aGUgcG9ydGFsIGFzIGFwcHJvcHJp YXRlLiAgSWYgdGhlIHBvcnRhbCBjb250YWlucyBhIGNhY2hlZCBwbGFuLCBpdAorCSAqIG11c3Qg YmUgcmVjcmVhdGVkIGlmIHBvcnRhbC0+cGxhbl92YWxpZCBpcyBmYWxzZSB3aGljaCB0ZWxscyB0 aGF0IHRoZQorCSAqIGNhY2hlZCBwbGFuIHdhcyBmb3VuZCB0byBoYXZlIGJlZW4gaW52YWxpZGF0 ZWQgd2hlbiBpbml0aWFsaXppbmcgb25lIG9mCisJICogdGhlIHBsYW4gdHJlZXMgY29udGFpbmVk IGluIGl0LgogCSAqLwogCVBvcnRhbFN0YXJ0KHBvcnRhbCwgcGFyYW1MSSwgZWZsYWdzLCBHZXRB Y3RpdmVTbmFwc2hvdCgpKTsKIAorCWlmICghcG9ydGFsLT5wbGFuX3ZhbGlkKQorCXsKKwkJUG9y dGFsRHJvcChwb3J0YWwsIGZhbHNlKTsKKwkJZ290byByZXBsYW47CisJfQorCiAJKHZvaWQpIFBv cnRhbFJ1bihwb3J0YWwsIGNvdW50LCBmYWxzZSwgdHJ1ZSwgZGVzdCwgZGVzdCwgcWMpOwogCiAJ UG9ydGFsRHJvcChwb3J0YWwsIGZhbHNlKTsKQEAgLTU3NCw3ICs1ODQsNyBAQCBFeHBsYWluRXhl Y3V0ZVF1ZXJ5KEV4ZWN1dGVTdG10ICpleGVjc3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFp blN0YXRlICplcywKIHsKIAlQcmVwYXJlZFN0YXRlbWVudCAqZW50cnk7CiAJY29uc3QgY2hhciAq cXVlcnlfc3RyaW5nOwotCUNhY2hlZFBsYW4gKmNwbGFuOworCUNhY2hlZFBsYW4gKmNwbGFuID0g TlVMTDsKIAlMaXN0CSAgICpwbGFuX2xpc3Q7CiAJTGlzdENlbGwgICAqcDsKIAlQYXJhbUxpc3RJ bmZvIHBhcmFtTEkgPSBOVUxMOwpAQCAtNjE4LDYgKzYyOCw3IEBAIEV4cGxhaW5FeGVjdXRlUXVl cnkoRXhlY3V0ZVN0bXQgKmV4ZWNzdG10LCBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUg KmVzLAogCX0KIAogCS8qIFJlcGxhbiBpZiBuZWVkZWQsIGFuZCBhY3F1aXJlIGEgdHJhbnNpZW50 IHJlZmNvdW50ICovCityZXBsYW46CiAJY3BsYW4gPSBHZXRDYWNoZWRQbGFuKGVudHJ5LT5wbGFu c291cmNlLCBwYXJhbUxJLAogCQkJCQkJICBDdXJyZW50UmVzb3VyY2VPd25lciwgcXVlcnlFbnYp OwogCkBAIC02MzksOCArNjUwLDIxIEBAIEV4cGxhaW5FeGVjdXRlUXVlcnkoRXhlY3V0ZVN0bXQg KmV4ZWNzdG10LCBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAogCQlQbGFubmVk U3RtdCAqcHN0bXQgPSBsZmlyc3Rfbm9kZShQbGFubmVkU3RtdCwgcCk7CiAKIAkJaWYgKHBzdG10 LT5jb21tYW5kVHlwZSAhPSBDTURfVVRJTElUWSkKLQkJCUV4cGxhaW5PbmVQbGFuKHBzdG10LCBp bnRvLCBlcywgcXVlcnlfc3RyaW5nLCBwYXJhbUxJLCBxdWVyeUVudiwKLQkJCQkJCSAgICZwbGFu ZHVyYXRpb24sIChlcy0+YnVmZmVycyA/ICZidWZ1c2FnZSA6IE5VTEwpKTsKKwkJeworCQkJUXVl cnlEZXNjICpxdWVyeURlc2M7CisKKwkJCXF1ZXJ5RGVzYyA9IEV4cGxhaW5RdWVyeURlc2MocHN0 bXQsIGNwbGFuLCBxdWVyeVN0cmluZywKKwkJCQkJCQkJCQkgaW50bywgZXMsIHBhcmFtTEksIHF1 ZXJ5RW52KTsKKwkJCWlmIChxdWVyeURlc2MgPT0gTlVMTCkKKwkJCXsKKwkJCQlFeHBsYWluUmVz ZXRPdXRwdXQoZXMpOworCQkJCVJlbGVhc2VDYWNoZWRQbGFuKGNwbGFuLCBDdXJyZW50UmVzb3Vy Y2VPd25lcik7CisJCQkJZ290byByZXBsYW47CisJCQl9CisJCQlFeHBsYWluT25lUGxhbihxdWVy eURlc2MsIGludG8sIGVzLCBxdWVyeV9zdHJpbmcsIHBhcmFtTEksCisJCQkJCQkgICBxdWVyeUVu diwgJnBsYW5kdXJhdGlvbiwKKwkJCQkJCSAgIChlcy0+YnVmZmVycyA/ICZidWZ1c2FnZSA6IE5V TEwpKTsKKwkJfQogCQllbHNlCiAJCQlFeHBsYWluT25lVXRpbGl0eShwc3RtdC0+dXRpbGl0eVN0 bXQsIGludG8sIGVzLCBxdWVyeV9zdHJpbmcsCiAJCQkJCQkJICBwYXJhbUxJLCBxdWVyeUVudik7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9SRUFETUUgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9SRUFETUUKaW5kZXggMTc3NzVhNDllMi4uZmNiZTI2NmY4YSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvZXhlY3V0b3IvUkVBRE1FCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL1JF QURNRQpAQCAtMjgwLDYgKzI4MCwzOSBAQCBhcmUgdHlwaWNhbGx5IHJlc2V0IHRvIGVtcHR5IG9u Y2UgcGVyIHR1cGxlLiAgUGVyLXR1cGxlIGNvbnRleHRzIGFyZSB1c3VhbGx5CiBhc3NvY2lhdGVk IHdpdGggRXhwckNvbnRleHRzLCBhbmQgY29tbW9ubHkgZWFjaCBQbGFuU3RhdGUgbm9kZSBoYXMg aXRzIG93bgogRXhwckNvbnRleHQgdG8gZXZhbHVhdGUgaXRzIHF1YWwgYW5kIHRhcmdldGxpc3Qg ZXhwcmVzc2lvbnMgaW4uCiAKK1JlbGF0aW9uIExvY2tpbmcKKy0tLS0tLS0tLS0tLS0tLS0KKwor Tm9ybWFsbHksIHRoZSBleGVjdXRvciBkb2VzIG5vdCBsb2NrIG5vbi1pbmRleCByZWxhdGlvbnMg YXBwZWFyaW5nIGluIGEgZ2l2ZW4KK3BsYW4gdHJlZSB3aGVuIGluaXRpYWxpemluZyBpdCBmb3Ig ZXhlY3V0aW9uIGlmIHRoZSBwbGFuIHRyZWUgaXMgZnJlc2hseQorY3JlYXRlZCwgdGhhdCBpcywg bm90IGRlcml2ZWQgZnJvbSBhIENhY2hlZFBsYW4uICBUaGUgcmVhc29uIGZvciB0aGF0IGlzIHRo YXQKK3RoZSBsb2NrcyBtdXN0IGFscmVhZHkgaGF2ZSBiZWVuIHRha2VuIGR1cmluZyBwYXJzaW5n LCByZXdyaXRpbmcsIGFuZCBwbGFubmluZworb2YgdGhlIHF1ZXJ5IGluIHRoYXQgY2FzZS4gIElm IHRoZSBwbGFuIHRyZWUgaXMgYSBjYWNoZWQgb25lLCB0aGVyZSBtYXkgc3RpbGwKK2JlIHVubG9j a2VkIHJlbGF0aW9ucyBwcmVzZW50IGluIHRoZSBwbGFuIHRyZWUsIGJlY2F1c2UgR2V0Q2FjaGVk UGxhbigpIG9ubHkKK2xvY2tzIHRoZSByZWxhdGlvbnMgdGhhdCB3b3VsZCBiZSBwcmVzZW50IGlu IHRoZSBxdWVyeSdzIHJhbmdlIHRhYmxlIGJlZm9yZQorcGxhbm5pbmcgb2NjdXJzLCBidXQgbm90 IHJlbGF0aW9ucyB0aGF0IHdvdWxkIGhhdmUgYmVlbiBhZGRlZCB0byB0aGUgcmFuZ2UKK3RhYmxl IGR1cmluZyBwbGFubmluZy4gIFRoaXMgbWVhbnMgdGhhdCBpbmhlcml0YW5jZSBjaGlsZCB0YWJs ZXMgcHJlc2VudCBpbgorYSBjYWNoZWQgcGxhbiwgd2hpY2ggYXJlIGFkZGVkIHRvIHRoZSBxdWVy eSdzIHJhbmdlIHRhYmxlIGR1cmluZyBwbGFubmluZywKK3dvdWxkIG5vdCBoYXZlIGJlZW4gbG9j a2VkIHdoZW4gdGhlIHBsYW4gZW50ZXJzIHRoZSBleGVjdXRvci4KKworR2V0Q2FjaGVkUGxhbigp IHB1bnRzIG9uIGxvY2tpbmcgY2hpbGQgdGFibGVzIGJlY2F1c2Ugbm90IGFsbCBtYXkgYWN0dWFs bHkgYmUKK3NjYW5uZWQgZHVyaW5nIGEgZ2l2ZW4gZXhlY3V0aW9uIG9mIHRoZSBwbGFuIGlmIHRo ZSBjaGlsZCB0YWJsZXMgYXJlIHBhcnRpdGlvbnMKK3doaWNoIG1heSBnZXQgcHJ1bmVkIGF3YXkg ZHVlIHRvIGV4ZWN1dG9yLWluaXRpYWxpemF0aW9uLXRpbWUgcHJ1bmluZy4gIFNvIHRoZQorbG9j a2luZyBvZiBjaGlsZCB0YWJsZXMgaXMgbWFkZSB0byB3YWl0IHRpbGwgZXhlY3V0aW9uLWluaXRp YWxpemF0aW9uLXRpbWUsCit3aGljaCBvY2N1cnMgZHVyaW5nIEV4ZWNJbml0Tm9kZSgpIG9uIHRo ZSBwbGFuIG5vZGVzIGNvbnRhaW5pbmcgdGhlIGNoaWxkCit0YWJsZXMuCisKK1NvLCB0aGVyZSdz IGEgdGltZSB3aW5kb3cgZHVyaW5nIHdoaWNoIGEgY2FjaGVkIHBsYW4gdHJlZSBjb3VsZCBnbyBz dGFsZQoraWYgaXQgY29udGFpbnMgY2hpbGQgdGFibGVzLCBiZWNhdXNlIHRoZXkgY291bGQgZ2V0 IGNoYW5nZWQgaW4gb3RoZXIgYmFja2VuZHMKK2JlZm9yZSBFeGVjSW5pdE5vZGUoKSBnZXRzIGEg bG9jayBvbiB0aGVtLiAgVGhpcyBtZWFucyB0aGUgZXhlY3V0b3Igbm93IG11c3QKK2NoZWNrIHRo ZSB2YWxpZGl0eSBvZiB0aGUgcGxhbiB0cmVlIGV2ZXJ5IHRpbWUgaXQgdGFrZXMgYSBsb2NrIG9u IGEgY2hpbGQKK3RhYmxlIGNvbnRhaW5lZCBpbiB0aGUgdHJlZSAoYWZ0ZXIgZXhlY3V0b3ItaW5p dGlhbGl6YXRpb24tcHJ1bmluZywgaWYgYW55LAoraGFzIGJlZW4gcGVyZm9ybWVkKSwgd2hpY2gg aXQgZG9lcyBieSBsb29raW5nIGF0IENhY2hlZFBsYW4uaXNfdmFsaWQgb2YgdGhlCitDYWNoZWRQ bGFuIHBhc3NlZCB0byBpdC4gIElmIHRoZSBwbGFuIHRyZWUgaXMgaW5kZWVkIHN0YWxlIChpc192 YWxpZD1mYWxzZSksCit0aGUgZXhlY3V0b3IgbXVzdCBnaXZlIHVwIGNvbnRpbnVpbmcgdG8gaW5p dGlhbGl6ZSBpdCBhbnkgZnVydGhlciBhbmQgcmV0dXJuCit0byB0aGUgY2FsbGVyIGxldHRpbmcg aXQga25vdyB0aGF0IHRoZSBleGVjdXRpb24gbXVzdCBiZSByZXRyaWVkIHdpdGggYSBuZXcKK3Bs YW4gdHJlZS4KKwogCiBRdWVyeSBQcm9jZXNzaW5nIENvbnRyb2wgRmxvdwogLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KQEAgLTMxMCwxMiArMzQzLDE4IEBAIFRoaXMgaXMgYSBza2V0Y2gg b2YgY29udHJvbCBmbG93IGZvciBmdWxsIHF1ZXJ5IHByb2Nlc3Npbmc6CiAJCUFmdGVyVHJpZ2dl ckVuZFF1ZXJ5CiAKIAlFeGVjdXRvckVuZAotCQlFeGVjRW5kTm9kZSAtLS0gcmVjdXJzaXZlbHkg cmVsZWFzZXMgcmVzb3VyY2VzCisJCUV4ZWNFbmROb2RlIC0tLSByZWxlYXNlcyByZXNvdXJjZXMK IAkJRnJlZUV4ZWN1dG9yU3RhdGUKIAkJCWZyZWVzIHBlci1xdWVyeSBjb250ZXh0IGFuZCBjaGls ZCBjb250ZXh0cwogCiAJRnJlZVF1ZXJ5RGVzYwogCitBcyBtZW50aW9uZWQgaW4gdGhlICJSZWxh dGlvbiBMb2NraW5nIiBzZWN0aW9uLCBpZiB0aGUgcGxhbiB0cmVlIGlzIGZvdW5kIHRvCitiZSBz dGFsZSBkdXJpbmcgb25lIG9mIHRoZSByZWN1cnNpdmUgY2FsbHMgb2YgRXhlY0luaXROb2RlKCkg YWZ0ZXIgdGFraW5nIGEKK2xvY2sgb24gYSBjaGlsZCB0YWJsZSwgdGhlIGNvbnRyb2wgaXMgaW1t bWVkaWF0ZWx5IHJldHVybmVkIHRvIHRoZSBjYWxsZXIgb2YKK0V4ZWN1dG9yU3RhcnQoKSwgd2hp Y2ggbXVzdCByZWRvIHRoZSBzdGVwcyBmcm9tIENyZWF0ZVF1ZXJ5RGVzYyB3aXRoIGEgbmV3Citw bGFuIHRyZWUuCisKIFBlciBhYm92ZSBjb21tZW50cywgaXQncyBub3QgcmVhbGx5IGNyaXRpY2Fs IGZvciBFeGVjRW5kTm9kZSB0byBmcmVlIGFueQogbWVtb3J5OyBpdCdsbCBhbGwgZ28gYXdheSBp biBGcmVlRXhlY3V0b3JTdGF0ZSBhbnl3YXkuICBIb3dldmVyLCB3ZSBkbyBuZWVkIHRvCiBiZSBj YXJlZnVsIHRvIGNsb3NlIHJlbGF0aW9ucywgZHJvcCBidWZmZXIgcGlucywgZXRjLCBzbyB3ZSBk byBuZWVkIHRvIHNjYW4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWlu LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCmluZGV4IDRjNWE3YmJmNjIuLmEy ZjZhYzlkMWMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKKysr IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYwpAQCAtNjIwLDYgKzYyMCwxNyBAQCBF eGVjQ2hlY2tQZXJtaXNzaW9ucyhMaXN0ICpyYW5nZVRhYmxlLCBMaXN0ICpydGVwZXJtaW5mb3Ms CiAJCVJURVBlcm1pc3Npb25JbmZvICpwZXJtaW5mbyA9IGxmaXJzdF9ub2RlKFJURVBlcm1pc3Np b25JbmZvLCBsKTsKIAogCQlBc3NlcnQoT2lkSXNWYWxpZChwZXJtaW5mby0+cmVsaWQpKTsKKwor CQkvKgorCQkgKiBSZWxhdGlvbnMgd2hvc2UgcGVybWlzc2lvbnMgbmVlZCB0byBiZSBjaGVja2Vk IG11c3QgYWxyZWFkeSBoYXZlCisJCSAqIGJlZW4gbG9ja2VkIGJ5IHRoZSBwYXJzZXIgb3IgYnkg R2V0Q2FjaGVkUGxhbigpIGlmIGEgY2FjaGVkIHBsYW4gaXMKKwkJICogYmVpbmcgZXhlY3V0ZWQu CisJCSAqCisJCSAqIFhYWCBzaG91bGRuJ3Qgd2Ugc2tpcCBjYWxsaW5nIEV4ZWNDaGVja1Blcm1p c3Npb25zIGZyb20gSW5pdFBsYW4KKwkJICogaW4gYSBwYXJhbGxlbCB3b3JrZXI/CisJCSAqLwor CQlBc3NlcnQoQ2hlY2tSZWxMb2NrZWRCeU1lKHBlcm1pbmZvLT5yZWxpZCwgQWNjZXNzU2hhcmVM b2NrLCB0cnVlKSB8fAorCQkJICAgSXNQYXJhbGxlbFdvcmtlcigpKTsKIAkJcmVzdWx0ID0gRXhl Y0NoZWNrT25lUmVsUGVybXMocGVybWluZm8pOwogCQlpZiAoIXJlc3VsdCkKIAkJewpAQCAtODI5 LDYgKzg0MCwyMyBAQCBFeGVjQ2hlY2tYYWN0UmVhZE9ubHkoUGxhbm5lZFN0bXQgKnBsYW5uZWRz dG10KQogICoKICAqCQlJbml0aWFsaXplcyB0aGUgcXVlcnkgcGxhbjogb3BlbiBmaWxlcywgYWxs b2NhdGUgc3RvcmFnZQogICoJCWFuZCBzdGFydCB1cCB0aGUgcnVsZSBtYW5hZ2VyCisgKgorICoK KyAqIE5vcm1hbGx5LCB0aGUgcGxhbiB0cmVlIGdpdmVuIGluIHF1ZXJ5RGVzYy0+cGxhbm5lZHN0 bXQgaXMga25vd24gdG8gYmUKKyAqIHZhbGlkIGluIGEgcmFjZS1mcmVlIG1hbm5lciwgdGhhdCBp cywgYWxsIHJlbGF0aW9ucyBjb250YWluZWQgaW4KKyAqIHBsYW5uZWRzdG10LT5yZWxhdGlvbk9p ZHMgd291bGQgaGF2ZSBhbHJlYWR5IGJlZW4gbG9ja2VkLiAgVGhhdCBpcyBub3QgdGhlCisgKiBj YXNlIGhvd2V2ZXIgaWYgdGhlIHBsYW5uZWRzdG10IGNvbWVzIGZyb20gYSBDYWNoZWRQbGFuLCBv bmUgZ2l2ZW4gaW4KKyAqIHF1ZXJ5RGVzYy0+Y3BsYW4uICBUaGF0J3MgYmVjYXVzZSBHZXRDYWNo ZWRQbGFuKCkgb25seSBsb2NrcyB0aGUgdGFibGVzCisgKiB0aGF0IGFyZSBtZW50aW9uZWQgaW4g dGhlIG9yaWdpbmFsIHF1ZXJ5IGJ1dCBub3QgdGhlIGNoaWxkIHRhYmxlcywgd2hpY2gKKyAqIHdv dWxkIGhhdmUgYmVlbiBhZGRlZCB0byB0aGUgcGxhbiBieSB0aGUgcGxhbm5lci4gIEluIHRoYXQg Y2FzZSwgbG9ja3Mgb24KKyAqIGNoaWxkIHRhYmxlcyB3aWxsIGJlIHRha2VuIHdoZW4gaW5pdGlh bGl6aW5nIHRoZWlyIFNjYW4gbm9kZXMgaW4KKyAqIEV4ZWNJbml0Tm9kZSgpIHRvIGJlIGRvbmUg aGVyZS4gIElmIHRoZSBDYWNoZWRQbGFuIGdldHMgaW52YWxpZGF0ZWQgYXMKKyAqIHRob3NlIGxv Y2tzIGFyZSB0YWtlbiwgcGxhbiB0cmVlIGluaXRpYWxpemF0aW9uIGlzIHN1c3BlbmRlZCBhdCB0 aGUgcG9pbnQKKyAqIHdoZXJlIHRoZSBpbnZhbGlkYXRpb24gaXMgZmlyc3QgZGV0ZWN0ZWQsIHF1 ZXJ5RGVzYy0+cGxhbnN0YXRlIHdpbGwgYmUgc2V0CisgKiB0byBOVUxMLCBhbmQgcXVlcnlEZXNj LT5wbGFuX3ZhbGlkIHRvIGZhbHNlLiAgQ2FsbGVycyBtdXN0IHJldHJ5IHRoZQorICogZXhlY3V0 aW9uIGFmdGVyIGNyZWF0aW5nIGEgbmV3IENhY2hlZFBsYW4gaW4gdGhhdCBjYXNlLCBhZnRlciBw cm9wZXJseQorICogcmVsZWFzaW5nIHRoZSByZXNvdXJjZXMgb2YgdGhpcyBRdWVyeURlc2MsIHdo aWNoIGluY2x1ZGVzIGNhbGxpbmcKKyAqIEV4ZWN1dG9yRmluaXNoKCkgYW5kIEV4ZWN1dG9yRW5k KCkgb24gdGhlIEVTdGF0ZSBjb250YWluZWQgdGhlcmVpbi4KICAqIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqLwogc3Rh dGljIHZvaWQKQEAgLTgzOSw3ICs4NjcsNyBAQCBJbml0UGxhbihRdWVyeURlc2MgKnF1ZXJ5RGVz YywgaW50IGVmbGFncykKIAlQbGFuCSAgICpwbGFuID0gcGxhbm5lZHN0bXQtPnBsYW5UcmVlOwog CUxpc3QJICAgKnJhbmdlVGFibGUgPSBwbGFubmVkc3RtdC0+cnRhYmxlOwogCUVTdGF0ZQkgICAq ZXN0YXRlID0gcXVlcnlEZXNjLT5lc3RhdGU7Ci0JUGxhblN0YXRlICAqcGxhbnN0YXRlOworCVBs YW5TdGF0ZSAgKnBsYW5zdGF0ZSA9IE5VTEw7CiAJVHVwbGVEZXNjCXR1cFR5cGU7CiAJTGlzdENl bGwgICAqbDsKIAlpbnQJCQlpOwpAQCAtODUwLDEwICs4NzgsMTEgQEAgSW5pdFBsYW4oUXVlcnlE ZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAJRXhlY0NoZWNrUGVybWlzc2lvbnMocmFuZ2VU YWJsZSwgcGxhbm5lZHN0bXQtPnBlcm1JbmZvcywgdHJ1ZSk7CiAKIAkvKgotCSAqIGluaXRpYWxp emUgdGhlIG5vZGUncyBleGVjdXRpb24gc3RhdGUKKwkgKiBTZXQgdXAgcmFuZ2UgdGFibGUgaW4g RVN0YXRlLgogCSAqLwogCUV4ZWNJbml0UmFuZ2VUYWJsZShlc3RhdGUsIHJhbmdlVGFibGUsIHBs YW5uZWRzdG10LT5wZXJtSW5mb3MpOwogCisJZXN0YXRlLT5lc19jYWNoZWRwbGFuID0gcXVlcnlE ZXNjLT5jcGxhbjsKIAllc3RhdGUtPmVzX3BsYW5uZWRzdG10ID0gcGxhbm5lZHN0bXQ7CiAKIAkv KgpAQCAtODg2LDYgKzkxNSw4IEBAIEluaXRQbGFuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQg ZWZsYWdzKQogCQkJCWNhc2UgUk9XX01BUktfS0VZU0hBUkU6CiAJCQkJY2FzZSBST1dfTUFSS19S RUZFUkVOQ0U6CiAJCQkJCXJlbGF0aW9uID0gRXhlY0dldFJhbmdlVGFibGVSZWxhdGlvbihlc3Rh dGUsIHJjLT5ydGkpOworCQkJCQlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQkJ CQkJZ290byBwbGFuX2luaXRfc3VzcGVuZGVkOwogCQkJCQlicmVhazsKIAkJCQljYXNlIFJPV19N QVJLX0NPUFk6CiAJCQkJCS8qIG5vIHBoeXNpY2FsIHRhYmxlIGFjY2VzcyBpcyByZXF1aXJlZCAq LwpAQCAtOTUzLDYgKzk4NCwxMSBAQCBJbml0UGxhbihRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50 IGVmbGFncykKIAkJCXNwX2VmbGFncyB8PSBFWEVDX0ZMQUdfUkVXSU5EOwogCiAJCXN1YnBsYW5z dGF0ZSA9IEV4ZWNJbml0Tm9kZShzdWJwbGFuLCBlc3RhdGUsIHNwX2VmbGFncyk7CisJCWlmICgh RXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXsKKwkJCUFzc2VydChzdWJwbGFuc3RhdGUg PT0gTlVMTCk7CisJCQlnb3RvIHBsYW5faW5pdF9zdXNwZW5kZWQ7CisJCX0KIAogCQllc3RhdGUt PmVzX3N1YnBsYW5zdGF0ZXMgPSBsYXBwZW5kKGVzdGF0ZS0+ZXNfc3VicGxhbnN0YXRlcywKIAkJ CQkJCQkJCQkgICBzdWJwbGFuc3RhdGUpOwpAQCAtOTY2LDYgKzEwMDIsMTEgQEAgSW5pdFBsYW4o UXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAJICogcHJvY2Vzc2luZyB0dXBsZXMu CiAJICovCiAJcGxhbnN0YXRlID0gRXhlY0luaXROb2RlKHBsYW4sIGVzdGF0ZSwgZWZsYWdzKTsK KwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCXsKKwkJQXNzZXJ0KHBsYW5zdGF0 ZSA9PSBOVUxMKTsKKwkJZ290byBwbGFuX2luaXRfc3VzcGVuZGVkOworCX0KIAogCS8qCiAJICog R2V0IHRoZSB0dXBsZSBkZXNjcmlwdG9yIGRlc2NyaWJpbmcgdGhlIHR5cGUgb2YgdHVwbGVzIHRv IHJldHVybi4KQEAgLTEwMDgsNyArMTA0OSwxOSBAQCBJbml0UGxhbihRdWVyeURlc2MgKnF1ZXJ5 RGVzYywgaW50IGVmbGFncykKIAl9CiAKIAlxdWVyeURlc2MtPnR1cERlc2MgPSB0dXBUeXBlOwor CUFzc2VydChwbGFuc3RhdGUgIT0gTlVMTCk7CiAJcXVlcnlEZXNjLT5wbGFuc3RhdGUgPSBwbGFu c3RhdGU7CisJcXVlcnlEZXNjLT5wbGFuX3ZhbGlkID0gdHJ1ZTsKKwlyZXR1cm47CisKK3BsYW5f aW5pdF9zdXNwZW5kZWQ6CisJLyoKKwkgKiBQbGFuIGluaXRpYWxpemF0aW9uIGZhaWxlZC4gIE1h cmsgUXVlcnlEZXNjIGFzIHN1Y2guICBFeGVjRW5kUGxhbigpCisJICogd2lsbCBjbGVhbiB1cCBp bml0aWFsaXplZCBwbGFuIG5vZGVzIGZyb20gZXN0YXRlLT5lc19pbml0ZWRfcGxhbm5vZGVzLgor CSAqLworCUFzc2VydChwbGFuc3RhdGUgPT0gTlVMTCk7CisJcXVlcnlEZXNjLT5wbGFuc3RhdGUg PSBOVUxMOworCXF1ZXJ5RGVzYy0+cGxhbl92YWxpZCA9IGZhbHNlOwogfQogCiAvKgpAQCAtMTQy Niw3ICsxNDc5LDcgQEAgRXhlY0dldEFuY2VzdG9yUmVzdWx0UmVscyhFU3RhdGUgKmVzdGF0ZSwg UmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbykKIAogCQkJLyoKIAkJCSAqIEFsbCBhbmNlc3Rv cnMgdXAgdG8gdGhlIHJvb3QgdGFyZ2V0IHJlbGF0aW9uIG11c3QgaGF2ZSBiZWVuCi0JCQkgKiBs b2NrZWQgYnkgdGhlIHBsYW5uZXIgb3IgQWNxdWlyZUV4ZWN1dG9yTG9ja3MoKS4KKwkJCSAqIGxv Y2tlZCBieSB0aGUgcGxhbm5lciBvciBFeGVjTG9ja0FwcGVuZE5vbkxlYWZSZWxhdGlvbnMoKS4K IAkJCSAqLwogCQkJYW5jUmVsID0gdGFibGVfb3BlbihhbmNPaWQsIE5vTG9jayk7CiAJCQlySW5m byA9IG1ha2VOb2RlKFJlc3VsdFJlbEluZm8pOwpAQCAtMTUwNCwxOCArMTU1NywxNSBAQCBFeGVj RW5kUGxhbihQbGFuU3RhdGUgKnBsYW5zdGF0ZSwgRVN0YXRlICplc3RhdGUpCiAJTGlzdENlbGwg ICAqbDsKIAogCS8qCi0JICogc2h1dCBkb3duIHRoZSBub2RlLXR5cGUtc3BlY2lmaWMgcXVlcnkg cHJvY2Vzc2luZworCSAqIFNodXQgZG93biB0aGUgbm9kZS10eXBlLXNwZWNpZmljIHF1ZXJ5IHBy b2Nlc3NpbmcgZm9yIGFsbCBub2RlcyB0aGF0CisJICogd2VyZSBpbml0aWFsaXplZCBkdXJpbmcg SW5pdFBsYW4oKSwgYm90aCBpbiB0aGUgbWFpbiBwbGFuIHRyZWUgYW5kIHRob3NlCisJICogaW4g c3VicGxhbnMgKGVzX3N1YnBsYW5zdGF0ZXMpLCBpZiBhbnkuCiAJICovCi0JRXhlY0VuZE5vZGUo cGxhbnN0YXRlKTsKLQotCS8qCi0JICogZm9yIHN1YnBsYW5zIHRvbwotCSAqLwotCWZvcmVhY2go bCwgZXN0YXRlLT5lc19zdWJwbGFuc3RhdGVzKQorCWZvcmVhY2gobCwgZXN0YXRlLT5lc19pbml0 ZWRfcGxhbm5vZGVzKQogCXsKLQkJUGxhblN0YXRlICAqc3VicGxhbnN0YXRlID0gKFBsYW5TdGF0 ZSAqKSBsZmlyc3QobCk7CisJCVBsYW5TdGF0ZSAgKnBzdGF0ZSA9IChQbGFuU3RhdGUgKikgbGZp cnN0KGwpOwogCi0JCUV4ZWNFbmROb2RlKHN1YnBsYW5zdGF0ZSk7CisJCUV4ZWNFbmROb2RlKHBz dGF0ZSk7CiAJfQogCiAJLyoKQEAgLTI4NTgsNyArMjkwOCw4IEBAIEV2YWxQbGFuUXVhbFN0YXJ0 KEVQUVN0YXRlICplcHFzdGF0ZSwgUGxhbiAqcGxhblRyZWUpCiAJICogQ2hpbGQgRVBRIEVTdGF0 ZXMgc2hhcmUgdGhlIHBhcmVudCdzIGNvcHkgb2YgdW5jaGFuZ2luZyBzdGF0ZSBzdWNoIGFzCiAJ ICogdGhlIHNuYXBzaG90LCByYW5nZXRhYmxlLCBhbmQgZXh0ZXJuYWwgUGFyYW0gaW5mby4gIFRo ZXkgbmVlZCB0aGVpciBvd24KIAkgKiBjb3BpZXMgb2YgbG9jYWwgc3RhdGUsIGluY2x1ZGluZyBh IHR1cGxlIHRhYmxlLCBlc19wYXJhbV9leGVjX3ZhbHMsCi0JICogcmVzdWx0LXJlbCBpbmZvLCBl dGMuCisJICogcmVzdWx0LXJlbCBpbmZvLCBldGMuICBBbHNvLCB3ZSBkb24ndCBwYXNzIHRoZSBw YXJlbnQndCBjb3B5IG9mIHRoZQorCSAqIENhY2hlZFBsYW4sIGJlY2F1c2Ugbm8gbmV3IGxvY2tz IHdpbGwgYmUgdGFrZW4gZm9yIEV2YWxQbGFuUXVhbCgpLgogCSAqLwogCXJjZXN0YXRlLT5lc19k aXJlY3Rpb24gPSBGb3J3YXJkU2NhbkRpcmVjdGlvbjsKIAlyY2VzdGF0ZS0+ZXNfc25hcHNob3Qg PSBwYXJlbnRlc3RhdGUtPmVzX3NuYXBzaG90OwpAQCAtMjk0NSw2ICsyOTk2LDEyIEBAIEV2YWxQ bGFuUXVhbFN0YXJ0KEVQUVN0YXRlICplcHFzdGF0ZSwgUGxhbiAqcGxhblRyZWUpCiAJCVBsYW5T dGF0ZSAgKnN1YnBsYW5zdGF0ZTsKIAogCQlzdWJwbGFuc3RhdGUgPSBFeGVjSW5pdE5vZGUoc3Vi cGxhbiwgcmNlc3RhdGUsIDApOworCisJCS8qCisJCSAqIEF0IHRoaXMgcG9pbnQsIHdlIGhhZCBi ZXR0ZXIgbm90IHJlY2VpdmVkIGFueSBuZXcgaW52YWxpZGF0aW9uCisJCSAqIG1lc3NhZ2VzIHRo YXQgd291bGQgaGF2ZSBjYXVzZWQgdGhlIHBsYW4gdHJlZSB0byBnbyBzdGFsZS4KKwkJICovCisJ CUFzc2VydChFeGVjUGxhblN0aWxsVmFsaWQocmNlc3RhdGUpICYmIHN1YnBsYW5zdGF0ZSk7CiAJ CXJjZXN0YXRlLT5lc19zdWJwbGFuc3RhdGVzID0gbGFwcGVuZChyY2VzdGF0ZS0+ZXNfc3VicGxh bnN0YXRlcywKIAkJCQkJCQkJCQkJIHN1YnBsYW5zdGF0ZSk7CiAJfQpAQCAtMjk4OCw2ICszMDQ1 LDEyIEBAIEV2YWxQbGFuUXVhbFN0YXJ0KEVQUVN0YXRlICplcHFzdGF0ZSwgUGxhbiAqcGxhblRy ZWUpCiAJICovCiAJZXBxc3RhdGUtPnJlY2hlY2twbGFuc3RhdGUgPSBFeGVjSW5pdE5vZGUocGxh blRyZWUsIHJjZXN0YXRlLCAwKTsKIAorCS8qCisJICogQXQgdGhpcyBwb2ludCwgd2UgaGFkIGJl dHRlciBub3QgcmVjZWl2ZWQgYW55IG5ldyBpbnZhbGlkYXRpb24gbWVzc2FnZXMKKwkgKiB0aGF0 IHdvdWxkIGhhdmUgY2F1c2VkIHRoZSBwbGFuIHRyZWUgdG8gZ28gc3RhbGUuCisJICovCisJQXNz ZXJ0KEV4ZWNQbGFuU3RpbGxWYWxpZChyY2VzdGF0ZSkgJiYgZXBxc3RhdGUtPnJlY2hlY2twbGFu c3RhdGUpOworCiAJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOwogfQogCkBAIC0z MDEwLDYgKzMwNzMsMTAgQEAgRXZhbFBsYW5RdWFsRW5kKEVQUVN0YXRlICplcHFzdGF0ZSkKIAlN ZW1vcnlDb250ZXh0IG9sZGNvbnRleHQ7CiAJTGlzdENlbGwgICAqbDsKIAorCS8qIE5vdGhpbmcg dG8gZG8gaWYgRXZhbFBsYW5RdWFsSW5pdCgpIHdhc24ndCBkb25lIHRvIGJlZ2luIHdpdGguICov CisJaWYgKGVwcXN0YXRlLT5wYXJlbnRlc3RhdGUgPT0gTlVMTCkKKwkJcmV0dXJuOworCiAJcnRz aXplID0gZXBxc3RhdGUtPnBhcmVudGVzdGF0ZS0+ZXNfcmFuZ2VfdGFibGVfc2l6ZTsKIAogCS8q CkBAIC0zMDMwLDEzICszMDk3LDE2IEBAIEV2YWxQbGFuUXVhbEVuZChFUFFTdGF0ZSAqZXBxc3Rh dGUpCiAKIAlvbGRjb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKGVzdGF0ZS0+ZXNfcXVl cnlfY3h0KTsKIAotCUV4ZWNFbmROb2RlKGVwcXN0YXRlLT5yZWNoZWNrcGxhbnN0YXRlKTsKLQot CWZvcmVhY2gobCwgZXN0YXRlLT5lc19zdWJwbGFuc3RhdGVzKQorCS8qCisJICogU2h1dCBkb3du IHRoZSBub2RlLXR5cGUtc3BlY2lmaWMgcXVlcnkgcHJvY2Vzc2luZyBmb3IgYWxsIG5vZGVzIHRo YXQKKwkgKiB3ZXJlIGluaXRpYWxpemVkIGR1cmluZyBFdmFsUGxhblF1YWxTdGFydCgpLCBib3Ro IGluIHRoZSBtYWluIHBsYW4gdHJlZQorCSAqIGFuZCB0aG9zZSBpbiBzdWJwbGFucyAoZXNfc3Vi cGxhbnN0YXRlcyksIGlmIGFueS4KKwkgKi8KKwlmb3JlYWNoKGwsIGVzdGF0ZS0+ZXNfaW5pdGVk X3BsYW5ub2RlcykKIAl7Ci0JCVBsYW5TdGF0ZSAgKnN1YnBsYW5zdGF0ZSA9IChQbGFuU3RhdGUg KikgbGZpcnN0KGwpOworCQlQbGFuU3RhdGUgICpwbGFuc3RhdGUgPSAoUGxhblN0YXRlICopIGxm aXJzdChsKTsKIAotCQlFeGVjRW5kTm9kZShzdWJwbGFuc3RhdGUpOworCQlFeGVjRW5kTm9kZShw bGFuc3RhdGUpOwogCX0KIAogCS8qIHRocm93IGF3YXkgdGhlIHBlci1lc3RhdGUgdHVwbGUgdGFi bGUsIHNvbWUgbm9kZSBtYXkgaGF2ZSB1c2VkIGl0ICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJh bGxlbC5jCmluZGV4IGNjMmI4Y2NhYjcuLjQyZGY3YjY0MjggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNQYXJhbGxlbC5jCkBAIC0xMjQ4LDggKzEyNDgsMTcgQEAgRXhlY1BhcmFsbGVsR2V0UXVlcnlE ZXNjKHNobV90b2MgKnRvYywgRGVzdFJlY2VpdmVyICpyZWNlaXZlciwKIAlwYXJhbXNwYWNlID0g c2htX3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9LRVlfUEFSQU1MSVNUSU5GTywgZmFsc2UpOwog CXBhcmFtTEkgPSBSZXN0b3JlUGFyYW1MaXN0KCZwYXJhbXNwYWNlKTsKIAotCS8qIENyZWF0ZSBh IFF1ZXJ5RGVzYyBmb3IgdGhlIHF1ZXJ5LiAqLworCS8qCisJICogQ3JlYXRlIGEgUXVlcnlEZXNj IGZvciB0aGUgcXVlcnkuICBOb3RlIHRoYXQgbm8gQ2FjaGVkUGxhbiBpcyBhdmFpbGFibGUKKwkg KiBoZXJlIGV2ZW4gaWYgdGhlIGxlYWRlciBtYXkgaGF2ZSBnb3R0ZW4gdGhlIHBsYW4gdHJlZSBm cm9tIG9uZS4gIFRoYXQncworCSAqIGZpbmUgdGhvdWdoLCBiZWNhdXNlIHRoZSBsZWFkZXIgd291 bGQgaGF2ZSB0YWtlbiB0aGUgbG9ja3MgbmVjZXNzYXJ5CisJICogZm9yIHRoZSBwbGFuIHRyZWUg dGhhdCB3ZSBoYXZlIGhlcmUgdG8gYmUgZnVsbHkgdmFsaWQuICBUaGF0IGlzIHRydWUKKwkgKiBk ZXNwaXRlIHRoZSBmYWN0IHRoYXQgd2Ugd2lsbCBiZSB0YWtpbmcgb3VyIG93biBjb3BpZXMgb2Yg dGhvc2UgbG9ja3MKKwkgKiBpbiBFeGVjR2V0UmFuZ2VUYWJsZVJlbGF0aW9uKCksIGJlY2F1c2Ug bm9uZSBvZiB0aGVtIHdvdWxkIGJlIHRoZSBsb2NrcworCSAqIHRoYXQgYXJlIG5vdCBhbHJlYWR5 IHRha2VuIGJ5IHRoZSBsZWFkZXIuCisJICovCiAJcmV0dXJuIENyZWF0ZVF1ZXJ5RGVzYyhwc3Rt dCwKKwkJCQkJCSAgIE5VTEwsCiAJCQkJCQkgICBxdWVyeVN0cmluZywKIAkJCQkJCSAgIEdldEFj dGl2ZVNuYXBzaG90KCksIEludmFsaWRTbmFwc2hvdCwKIAkJCQkJCSAgIHJlY2VpdmVyLCBwYXJh bUxJLCBOVUxMLCBpbnN0cnVtZW50X29wdGlvbnMpOwpAQCAtMTQzMSw2ICsxNDQwLDcgQEAgUGFy YWxsZWxRdWVyeU1haW4oZHNtX3NlZ21lbnQgKnNlZywgc2htX3RvYyAqdG9jKQogCS8qIFN0YXJ0 IHVwIHRoZSBleGVjdXRvciAqLwogCXF1ZXJ5RGVzYy0+cGxhbm5lZHN0bXQtPmppdEZsYWdzID0g ZnBlcy0+aml0X2ZsYWdzOwogCUV4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCBmcGVzLT5lZmxhZ3Mp OworCUFzc2VydChxdWVyeURlc2MtPnBsYW5fdmFsaWQpOwogCiAJLyogU3BlY2lhbCBleGVjdXRv ciBpbml0aWFsaXphdGlvbiBzdGVwcyBmb3IgcGFyYWxsZWwgd29ya2VycyAqLwogCXF1ZXJ5RGVz Yy0+cGxhbnN0YXRlLT5zdGF0ZS0+ZXNfcXVlcnlfZHNhID0gYXJlYTsKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L2V4ZWNQYXJ0aXRpb24uYwppbmRleCBlYjhhODdmZDYzLi5jZjczZDI4YmFhIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jCkBAIC01MTMsNiArNTEzLDEzIEBAIEV4ZWNJbml0UGFy dGl0aW9uSW5mbyhNb2RpZnlUYWJsZVN0YXRlICptdHN0YXRlLCBFU3RhdGUgKmVzdGF0ZSwKIAog CW9sZGN4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhwcm91dGUtPm1lbWN4dCk7CiAKKwkvKgor CSAqIE5vdGUgdGhhdCB3aGlsZSB3ZSBub3JtYWxseSBjaGVjayBFeGVjUGxhblN0aWxsVmFsaWQo ZXN0YXRlKSBhZnRlciBlYWNoCisJICogbG9jayB0YWtlbiBkdXJpbmcgZXhlY3V0aW9uIGluaXRp YWxpemF0aW9uLCBpdCBpcyBmaW5lIG5vdCBkbyBzbyBmb3IKKwkgKiBwYXJ0aXRpb25zIG9wZW5l ZCBoZXJlLCBmb3IgdHVwbGUgcm91dGluZy4gIExvY2tzIHRha2VuIGhlcmUgY2FuJ3QKKwkgKiBw b3NzaWJseSBpbnZhbGlkYXRlIHRoZSBwbGFuIGdpdmVuIHRoYXQgdGhlIHBsYW4gZG9lc24ndCBj b250YWluIGFueQorCSAqIGluZm8gYWJvdXQgdGhvc2UgcGFydGl0aW9ucy4KKwkgKi8KIAlwYXJ0 cmVsID0gdGFibGVfb3BlbihwYXJ0T2lkLCBSb3dFeGNsdXNpdmVMb2NrKTsKIAogCWxlYWZfcGFy dF9ycmkgPSBtYWtlTm9kZShSZXN1bHRSZWxJbmZvKTsKQEAgLTExMTEsNiArMTExOCw5IEBAIEV4 ZWNJbml0UGFydGl0aW9uRGlzcGF0Y2hJbmZvKEVTdGF0ZSAqZXN0YXRlLAogCSAqIE9ubHkgc3Vi LXBhcnRpdGlvbmVkIHRhYmxlcyBuZWVkIHRvIGJlIGxvY2tlZCBoZXJlLiAgVGhlIHJvb3QKIAkg KiBwYXJ0aXRpb25lZCB0YWJsZSB3aWxsIGFscmVhZHkgaGF2ZSBiZWVuIGxvY2tlZCBhcyBpdCdz IHJlZmVyZW5jZWQgaW4KIAkgKiB0aGUgcXVlcnkncyBydGFibGUuCisJICoKKwkgKiBTZWUgdGhl IGNvbW1lbnQgaW4gRXhlY0luaXRQYXJ0aXRpb25JbmZvKCkgYWJvdXQgdGFraW5nIGxvY2tzIGFu ZAorCSAqIG5vdCBjaGVja2luZyBFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSBoZXJlLgogCSAq LwogCWlmIChwYXJ0b2lkICE9IFJlbGF0aW9uR2V0UmVsaWQocHJvdXRlLT5wYXJ0aXRpb25fcm9v dCkpCiAJCXJlbCA9IHRhYmxlX29wZW4ocGFydG9pZCwgUm93RXhjbHVzaXZlTG9jayk7CkBAIC0x ODAxLDYgKzE4MTEsOCBAQCBFeGVjSW5pdFBhcnRpdGlvblBydW5pbmcoUGxhblN0YXRlICpwbGFu c3RhdGUsCiAKIAkvKiBDcmVhdGUgdGhlIHdvcmtpbmcgZGF0YSBzdHJ1Y3R1cmUgZm9yIHBydW5p bmcgKi8KIAlwcnVuZXN0YXRlID0gQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZShwbGFuc3RhdGUs IHBydW5laW5mbyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJu IE5VTEw7CiAKIAkvKgogCSAqIFBlcmZvcm0gYW4gaW5pdGlhbCBwYXJ0aXRpb24gcHJ1bmUgcGFz cywgaWYgcmVxdWlyZWQuCkBAIC0xOTI3LDYgKzE5MzksOCBAQCBDcmVhdGVQYXJ0aXRpb25QcnVu ZVN0YXRlKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5m bykKIAkJCSAqIGR1cmF0aW9uIG9mIHRoaXMgZXhlY3V0b3IgcnVuLgogCQkJICovCiAJCQlwYXJ0 cmVsID0gRXhlY0dldFJhbmdlVGFibGVSZWxhdGlvbihlc3RhdGUsIHBpbmZvLT5ydGluZGV4KTsK KwkJCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCQkJcmV0dXJuIE5VTEw7CiAJ CQlwYXJ0a2V5ID0gUmVsYXRpb25HZXRQYXJ0aXRpb25LZXkocGFydHJlbCk7CiAJCQlwYXJ0ZGVz YyA9IFBhcnRpdGlvbkRpcmVjdG9yeUxvb2t1cChlc3RhdGUtPmVzX3BhcnRpdGlvbl9kaXJlY3Rv cnksCiAJCQkJCQkJCQkJCQlwYXJ0cmVsKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL2V4ZWNQcm9jbm9kZS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1Byb2Nub2RlLmMK aW5kZXggNGQyODhiYzhkNC4uZjNiYjFkNDU5MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3IvZXhlY1Byb2Nub2RlLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1Byb2Nu b2RlLmMKQEAgLTEzNSw3ICsxMzUsMTcgQEAgc3RhdGljIGJvb2wgRXhlY1NodXRkb3duTm9kZV93 YWxrZXIoUGxhblN0YXRlICpub2RlLCB2b2lkICpjb250ZXh0KTsKICAqCQkgICdlc3RhdGUnIGlz IHRoZSBzaGFyZWQgZXhlY3V0aW9uIHN0YXRlIGZvciB0aGUgcGxhbiB0cmVlCiAgKgkJICAnZWZs YWdzJyBpcyBhIGJpdHdpc2UgT1Igb2YgZmxhZyBiaXRzIGRlc2NyaWJlZCBpbiBleGVjdXRvci5o CiAgKgotICoJCVJldHVybnMgYSBQbGFuU3RhdGUgbm9kZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBn aXZlbiBQbGFuIG5vZGUuCisgKgkJUmV0dXJucyBhIFBsYW5TdGF0ZSBub2RlIGNvcnJlc3BvbmRp bmcgdG8gdGhlIGdpdmVuIFBsYW4gbm9kZSBvciBOVUxMLgorICoKKyAqCQlOVUxMIG1heSBiZSBy ZXR1cm5lZCBlaXRoZXIgaWYgdGhlIGlucHV0IG5vZGUgaXMgTlVMTCBvciBpZiB0aGUgcGxhbgor ICoJCXRyZWUgdGhhdCB0aGUgbm9kZSBpcyBhIHBhcnQgb2YgaXMgZm91bmQgdG8gaGF2ZSBiZWVu IGludmFsaWRhdGVkIHdoZW4KKyAqCQl0YWtpbmcgYSBsb2NrIG9uIHRoZSByZWxhdGlvbiBtZW50 aW9uZWQgaW4gdGhlIG5vZGUgb3IgaW4gYSBjaGlsZAorICoJCW5vZGUuICBUaGUgbGF0dGVyIGNh c2UgYXJpc2VzIGlmIHRoZSBwbGFuIHRyZWUgY29udGFpbnMgaW5oZXJpdGFuY2UvCisgKgkJcGFy dGl0aW9uIGNoaWxkIHRhYmxlcyBhbmQgaXMgZnJvbSBhIENhY2hlZFBsYW4uCisgKgorICoJCUFs c28sIGFsbCBub24tTlVMTCBQbGFuU3RhdGUgbm9kZXMgYXJlIGFkZGVkIHRvCisgKgkJZXN0YXRl LT5lc19pbml0ZWRfcGxhbm5vZGVzIGZvciBFeGVjRW5kUGxhbigpIHRvIGl0ZXJhdGUgb3ZlciB0 byBjbG9zZQorICoJCWVhY2ggb25lIHVzaW5nIEV4ZWNFbmROb2RlKCkuCiAgKiAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KICAqLwogUGxhblN0YXRlICoKQEAgLTM4OCw2ICszOTgsMTMgQEAgRXhlY0luaXROb2Rl KFBsYW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCQkJYnJlYWs7CiAJfQog CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwl7CisJCUFzc2VydChyZXN1bHQg PT0gTlVMTCk7CisJCXJldHVybiBOVUxMOworCX0KKworCUFzc2VydChyZXN1bHQgIT0gTlVMTCk7 CiAJRXhlY1NldEV4ZWNQcm9jTm9kZShyZXN1bHQsIHJlc3VsdC0+RXhlY1Byb2NOb2RlKTsKIAog CS8qCkBAIC00MTEsNiArNDI4LDEzIEBAIEV4ZWNJbml0Tm9kZShQbGFuICpub2RlLCBFU3RhdGUg KmVzdGF0ZSwgaW50IGVmbGFncykKIAkJcmVzdWx0LT5pbnN0cnVtZW50ID0gSW5zdHJBbGxvYygx LCBlc3RhdGUtPmVzX2luc3RydW1lbnQsCiAJCQkJCQkJCQkJcmVzdWx0LT5hc3luY19jYXBhYmxl KTsKIAorCS8qCisJICogUmVtZW1iZXIgdmFsaWQgUGxhblN0YXRlIG5vZGVzIGluIEVTdGF0ZSBm b3IgdGhlIHByb2Nlc3NpbmcgaW4KKwkgKiBFeGVjRW5kUGxhbigpLgorCSAqLworCWVzdGF0ZS0+ ZXNfaW5pdGVkX3BsYW5ub2RlcyA9IGxhcHBlbmQoZXN0YXRlLT5lc19pbml0ZWRfcGxhbm5vZGVz LAorCQkJCQkJCQkJCSAgcmVzdWx0KTsKKwogCXJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTU0NSwy OSArNTY5LDIxIEBAIE11bHRpRXhlY1Byb2NOb2RlKFBsYW5TdGF0ZSAqbm9kZSkKIC8qIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KICAqCQlFeGVjRW5kTm9kZQogICoKLSAqCQlSZWN1cnNpdmVseSBjbGVhbnMgdXAgYWxsIHRo ZSBub2RlcyBpbiB0aGUgcGxhbiByb290ZWQKLSAqCQlhdCAnbm9kZScuCisgKgkJQ2xlYW5zIHVw IG5vZGUKICAqCi0gKgkJQWZ0ZXIgdGhpcyBvcGVyYXRpb24sIHRoZSBxdWVyeSBwbGFuIHdpbGwg bm90IGJlIGFibGUgdG8gYmUKLSAqCQlwcm9jZXNzZWQgYW55IGZ1cnRoZXIuICBUaGlzIHNob3Vs ZCBiZSBjYWxsZWQgb25seSBhZnRlcgorICoJCUNoaWxkIG5vZGVzLCBpZiBhbnksIHdvdWxkIGhh dmUgYmVlbiBjbG9zZWQgYnkgdGhlIGNhbGxlciwgc28gdGhlCisgKgkJRXhlY0VuZCogcm91dGlu ZSBmb3IgYSBnaXZlbiBub2RlIHR5cGUgaXMgb25seSByZXNwb25zaWJsZSBmb3IKKyAqCQljbGVh bmluZyB1cCB0aGUgcmVzb3VyY2VzIGxvY2FsIHRvIHRoYXQgbm9kZS4KKyAqCisgKgkJQWZ0ZXIg dGhpcyBvcGVyYXRpb24sIHRoZSBxdWVyeSBwbGFuIGNvbnRhaW5pbmcgdGhpcyBub2RlIHdpbGwg bm90IGJlCisgKgkJYWJsZSB0byBiZSBwcm9jZXNzZWQgYW55IGZ1cnRoZXIuICBUaGlzIHNob3Vs ZCBiZSBjYWxsZWQgb25seSBhZnRlcgogICoJCXRoZSBxdWVyeSBwbGFuIGhhcyBiZWVuIGZ1bGx5 IGV4ZWN1dGVkLgogICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICovCiB2b2lkCiBFeGVjRW5kTm9kZShQbGFuU3RhdGUg Km5vZGUpCiB7Ci0JLyoKLQkgKiBkbyBub3RoaW5nIHdoZW4gd2UgZ2V0IHRvIHRoZSBlbmQgb2Yg YSBsZWFmIG9uIHRyZWUuCi0JICovCi0JaWYgKG5vZGUgPT0gTlVMTCkKLQkJcmV0dXJuOwotCi0J LyoKLQkgKiBNYWtlIHN1cmUgdGhlcmUncyBlbm91Z2ggc3RhY2sgYXZhaWxhYmxlLiBOZWVkIHRv IGNoZWNrIGhlcmUsIGluCi0JICogYWRkaXRpb24gdG8gRXhlY1Byb2NOb2RlKCkgKHZpYSBFeGVj UHJvY05vZGVGaXJzdCgpKSwgYmVjYXVzZSBpdCdzIG5vdAotCSAqIGd1YXJhbnRlZWQgdGhhdCBF eGVjUHJvY05vZGUoKSBpcyByZWFjaGVkIGZvciBhbGwgbm9kZXMuCi0JICovCi0JY2hlY2tfc3Rh Y2tfZGVwdGgoKTsKKwlBc3NlcnQobm9kZSAhPSBOVUxMKTsKIAogCWlmIChub2RlLT5jaGdQYXJh bSAhPSBOVUxMKQogCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGls cy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMKaW5kZXggYzA2YjIyODg1OC4u YWY5MmQyYjNjMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMK KysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMKQEAgLTgwNCw3ICs4MDQsMjUg QEAgRXhlY0dldFJhbmdlVGFibGVSZWxhdGlvbihFU3RhdGUgKmVzdGF0ZSwgSW5kZXggcnRpKQog CiAJCUFzc2VydChydGUtPnJ0ZWtpbmQgPT0gUlRFX1JFTEFUSU9OKTsKIAotCQlpZiAoIUlzUGFy YWxsZWxXb3JrZXIoKSkKKwkJaWYgKElzUGFyYWxsZWxXb3JrZXIoKSB8fAorCQkJKGVzdGF0ZS0+ ZXNfY2FjaGVkcGxhbiAhPSBOVUxMICYmICFydGUtPmluRnJvbUNsKSkKKwkJeworCQkJLyoKKwkJ CSAqIFRha2UgYSBsb2NrIGlmIHdlIGFyZSBhIHBhcmFsbGVsIHdvcmtlciBvciBpZiB0aGlzIGlz IGEgY2hpbGQKKwkJCSAqIHRhYmxlIHJlZmVyZW5jZWQgaW4gYSBjYWNoZWQgcGxhbi4KKwkJCSAq CisJCQkgKiBQYXJhbGxlbCB3b3JrZXJzIG5lZWQgdG8gaGF2ZSB0aGVpciBvd24gbG9jYWwgbG9j ayBvbiB0aGUKKwkJCSAqIHJlbGF0aW9uLiAgVGhpcyBlbnN1cmVzIHNhbmUgYmVoYXZpb3IgaW4g Y2FzZSB0aGUgcGFyZW50IHByb2Nlc3MKKwkJCSAqIGV4aXRzIGJlZm9yZSB3ZSBkby4KKwkJCSAq CisJCQkgKiBXaGVuIGV4ZWN1dGluZyBhIGNhY2hlZCBwbGFuLCBjaGlsZCB0YWJsZXMgbXVzdCBi ZSBsb2NrZWQKKwkJCSAqIGhlcmUsIGJlY2F1c2UgcGxhbmNhY2hlLmMgKEdldENhY2hlZFBsYW4o KSkgd291bGQgb25seSBoYXZlCisJCQkgKiBsb2NrZWQgdGFibGVzIG1lbnRpb25lZCBpbiB0aGUg cXVlcnksIHRoYXQgaXMsIHRhYmxlcyB3aG9zZQorCQkJICogUlRFcycgaW5Gcm9tQ2wgaXMgdHJ1 ZS4KKwkJCSAqLworCQkJcmVsID0gdGFibGVfb3BlbihydGUtPnJlbGlkLCBydGUtPnJlbGxvY2tt b2RlKTsKKwkJfQorCQllbHNlCiAJCXsKIAkJCS8qCiAJCQkgKiBJbiBhIG5vcm1hbCBxdWVyeSwg d2Ugc2hvdWxkIGFscmVhZHkgaGF2ZSB0aGUgYXBwcm9wcmlhdGUgbG9jaywKQEAgLTgxNywxNSAr ODM1LDYgQEAgRXhlY0dldFJhbmdlVGFibGVSZWxhdGlvbihFU3RhdGUgKmVzdGF0ZSwgSW5kZXgg cnRpKQogCQkJQXNzZXJ0KHJ0ZS0+cmVsbG9ja21vZGUgPT0gQWNjZXNzU2hhcmVMb2NrIHx8CiAJ CQkJICAgQ2hlY2tSZWxhdGlvbkxvY2tlZEJ5TWUocmVsLCBydGUtPnJlbGxvY2ttb2RlLCBmYWxz ZSkpOwogCQl9Ci0JCWVsc2UKLQkJewotCQkJLyoKLQkJCSAqIElmIHdlIGFyZSBhIHBhcmFsbGVs IHdvcmtlciwgd2UgbmVlZCB0byBvYnRhaW4gb3VyIG93biBsb2NhbAotCQkJICogbG9jayBvbiB0 aGUgcmVsYXRpb24uICBUaGlzIGVuc3VyZXMgc2FuZSBiZWhhdmlvciBpbiBjYXNlIHRoZQotCQkJ ICogcGFyZW50IHByb2Nlc3MgZXhpdHMgYmVmb3JlIHdlIGRvLgotCQkJICovCi0JCQlyZWwgPSB0 YWJsZV9vcGVuKHJ0ZS0+cmVsaWQsIHJ0ZS0+cmVsbG9ja21vZGUpOwotCQl9CiAKIAkJZXN0YXRl LT5lc19yZWxhdGlvbnNbcnRpIC0gMV0gPSByZWw7CiAJfQpAQCAtODMzLDYgKzg0MiwzOCBAQCBF eGVjR2V0UmFuZ2VUYWJsZVJlbGF0aW9uKEVTdGF0ZSAqZXN0YXRlLCBJbmRleCBydGkpCiAJcmV0 dXJuIHJlbDsKIH0KIAorLyoKKyAqIEV4ZWNMb2NrQXBwZW5kTm9uTGVhZlJlbGF0aW9ucworICoJ CUxvY2sgbm9uLWxlYWYgcmVsYXRpb25zIHdob3NlIGNoaWxkcmVuIGFyZSBzY2FubmVkIGJ5IGEg Z2l2ZW4KKyAqCQlBcHBlbmQvTWVyZ2VBcHBlbmQgbm9kZQorICovCit2b2lkCitFeGVjTG9ja0Fw cGVuZE5vbkxlYWZSZWxhdGlvbnMoRVN0YXRlICplc3RhdGUsIExpc3QgKmFsbHBhcnRyZWxpZHMp Cit7CisJTGlzdENlbGwgKmw7CisKKwkvKiBUaGlzIHNob3VsZCBnZXQgY2FsbGVkIG9ubHkgd2hl biBleGVjdXRpbmcgY2FjaGVkIHBsYW5zLiAqLworCUFzc2VydChlc3RhdGUtPmVzX2NhY2hlZHBs YW4gIT0gTlVMTCk7CisJZm9yZWFjaChsLCBhbGxwYXJ0cmVsaWRzKQorCXsKKwkJQml0bWFwc2V0 ICpwYXJ0cmVsaWRzID0gbGZpcnN0X25vZGUoQml0bWFwc2V0LCBsKTsKKwkJaW50CQlpOworCisJ CS8qCisJCSAqIE5vdGUgdGhhdCB3ZSBkb24ndCBsb2NrIHRoZSBmaXJzdCBtZW1iZXIgKGk9MCkg b2YgZWFjaCBiaXRtYXBzZXQKKwkJICogYmVjYXVzZSBpdCBzdGFuZHMgZm9yIHRoZSByb290IHBh cmVudCBtZW50aW9uZWQgaW4gdGhlIHF1ZXJ5IHRoYXQKKwkJICogc2hvdWxkIGFsd2F5cyBoYXZl IGJlZW4gbG9ja2VkIGJlZm9yZSBlbnRlcmluZyB0aGUgZXhlY3V0b3IuCisJCSAqLworCQlpID0g MDsKKwkJd2hpbGUgKChpID0gYm1zX25leHRfbWVtYmVyKHBhcnRyZWxpZHMsIGkpKSA+IDApCisJ CXsKKwkJCVJhbmdlVGJsRW50cnkgKnJ0ZSA9IGV4ZWNfcnRfZmV0Y2goaSwgZXN0YXRlKTsKKwor CQkJTG9ja1JlbGF0aW9uT2lkKHJ0ZS0+cmVsaWQsIHJ0ZS0+cmVsbG9ja21vZGUpOworCQl9CisJ fQorfQorCiAvKgogICogRXhlY0luaXRSZXN1bHRSZWxhdGlvbgogICoJCU9wZW4gcmVsYXRpb24g Z2l2ZW4gYnkgdGhlIHBhc3NlZC1pbiBSVCBpbmRleCBhbmQgZmlsbCBpdHMKQEAgLTg0OCw2ICs4 ODksOCBAQCBFeGVjSW5pdFJlc3VsdFJlbGF0aW9uKEVTdGF0ZSAqZXN0YXRlLCBSZXN1bHRSZWxJ bmZvICpyZXN1bHRSZWxJbmZvLAogCVJlbGF0aW9uCXJlc3VsdFJlbGF0aW9uRGVzYzsKIAogCXJl c3VsdFJlbGF0aW9uRGVzYyA9IEV4ZWNHZXRSYW5nZVRhYmxlUmVsYXRpb24oZXN0YXRlLCBydGkp OworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybjsKIAlJbml0UmVz dWx0UmVsSW5mbyhyZXN1bHRSZWxJbmZvLAogCQkJCQkgIHJlc3VsdFJlbGF0aW9uRGVzYywKIAkJ CQkJICBydGksCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9mdW5jdGlvbnMuYyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2Z1bmN0aW9ucy5jCmluZGV4IGY1NTQyNGViNWEuLmM4OGY3 MmJjNGUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2Z1bmN0aW9ucy5jCisrKyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2Z1bmN0aW9ucy5jCkBAIC04MzgsNiArODM4LDcgQEAgcG9z dHF1ZWxfc3RhcnQoZXhlY3V0aW9uX3N0YXRlICplcywgU1FMRnVuY3Rpb25DYWNoZVB0ciBmY2Fj aGUpCiAJCWRlc3QgPSBOb25lX1JlY2VpdmVyOwogCiAJZXMtPnFkID0gQ3JlYXRlUXVlcnlEZXNj KGVzLT5zdG10LAorCQkJCQkJCSBOVUxMLAkvKiBmbWdyX3NxbCgpIGRvZXNuJ3QgdXNlIENhY2hl ZFBsYW5zICovCiAJCQkJCQkJIGZjYWNoZS0+c3JjLAogCQkJCQkJCSBHZXRBY3RpdmVTbmFwc2hv dCgpLAogCQkJCQkJCSBJbnZhbGlkU25hcHNob3QsCkBAIC04NjMsNiArODY0LDcgQEAgcG9zdHF1 ZWxfc3RhcnQoZXhlY3V0aW9uX3N0YXRlICplcywgU1FMRnVuY3Rpb25DYWNoZVB0ciBmY2FjaGUp CiAJCWVsc2UKIAkJCWVmbGFncyA9IDA7CQkJLyogZGVmYXVsdCBydW4tdG8tY29tcGxldGlvbiBm bGFncyAqLwogCQlFeGVjdXRvclN0YXJ0KGVzLT5xZCwgZWZsYWdzKTsKKwkJQXNzZXJ0KGVzLT5x ZC0+cGxhbl92YWxpZCk7CiAJfQogCiAJZXMtPnN0YXR1cyA9IEZfRVhFQ19SVU47CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQWdnLmMgYi9zcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlQWdnLmMKaW5kZXggNDY4ZGI5NGZlNS4uNTRmNzQyODIwYiAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFnZy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVBZ2cuYwpAQCAtMzMwNCw2ICszMzA0LDggQEAgRXhlY0luaXRBZ2coQWdnICpub2RlLCBFU3Rh dGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkJZWZsYWdzICY9IH5FWEVDX0ZMQUdfUkVXSU5EOwog CW91dGVyUGxhbiA9IG91dGVyUGxhbihub2RlKTsKIAlvdXRlclBsYW5TdGF0ZShhZ2dzdGF0ZSkg PSBFeGVjSW5pdE5vZGUob3V0ZXJQbGFuLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKCFFeGVjUGxh blN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIE5VTEw7CiAKIAkvKgogCSAqIGluaXRpYWxp emUgc291cmNlIHR1cGxlIHR5cGUuCkBAIC00MzA0LDcgKzQzMDYsNiBAQCBHZXRBZ2dJbml0VmFs KERhdHVtIHRleHRJbml0VmFsLCBPaWQgdHJhbnN0eXBlKQogdm9pZAogRXhlY0VuZEFnZyhBZ2dT dGF0ZSAqbm9kZSkKIHsKLQlQbGFuU3RhdGUgICpvdXRlclBsYW47CiAJaW50CQkJdHJhbnNubzsK IAlpbnQJCQludW1Hcm91cGluZ1NldHMgPSBNYXgobm9kZS0+bWF4c2V0cywgMSk7CiAJaW50CQkJ c2V0bm87CkBAIC00MzY2LDkgKzQzNjcsNiBAQCBFeGVjRW5kQWdnKEFnZ1N0YXRlICpub2RlKQog CiAJLyogY2xlYW4gdXAgdHVwbGUgdGFibGUgKi8KIAlFeGVjQ2xlYXJUdXBsZShub2RlLT5zcy5z c19TY2FuVHVwbGVTbG90KTsKLQotCW91dGVyUGxhbiA9IG91dGVyUGxhblN0YXRlKG5vZGUpOwot CUV4ZWNFbmROb2RlKG91dGVyUGxhbik7CiB9CiAKIHZvaWQKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBl bmQuYwppbmRleCA2MDlkZjZiOWU2Li5hNmRhZGI3ZDA3IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlQXBwZW5kLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFw cGVuZC5jCkBAIC0xMzMsNiArMTMzLDI3IEBAIEV4ZWNJbml0QXBwZW5kKEFwcGVuZCAqbm9kZSwg RVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJYXBwZW5kc3RhdGUtPmFzX3N5bmNkb25lID0g ZmFsc2U7CiAJYXBwZW5kc3RhdGUtPmFzX2JlZ3VuID0gZmFsc2U7CiAKKwkvKgorCSAqIE11c3Qg dGFrZSBsb2NrcyBvbiBjaGlsZCB0YWJsZXMgaWYgcnVubmluZyBhIGNhY2hlZCBwbGFuLCBiZWNh dXNlCisJICogR2V0Q2FjaGVkUGxhbigpIHdvdWxkJ3ZlIG9ubHkgbG9ja2VkIHRoZSByb290IHBh cmVudCBuYW1lZCBpbiB0aGUKKwkgKiBxdWVyeS4KKwkgKgorCSAqIEZpcnN0IGxvY2sgbm9uLWxl YWYgcGFydGl0aW9ucyBiZWZvcmUgZG9pbmcgcHJ1bmluZyBpZiBhbnkuICBFdmVuIHdoZW4KKwkg KiBubyBwcnVuaW5nIGlzIHRvIGJlIGRvbmUsIG5vbi1sZWFmIHBhcnRpdGlvbnMgc3RpbGwgbXVz dCBiZSBsb2NrZWQKKwkgKiBleHBsaWNpdGx5IGxpa2UgdGhpcywgYmVjYXVzZSB0aGV5J3JlIG5v dCByZWZlcmVuY2VkIGVsc2V3aGVyZSBpbgorCSAqIHRoZSBwbGFuIHRyZWUuICBYWFggLSBPVE9I LCBub24tbGVhZiBwYXJ0aXRpb25zIG1lbnRpb25lZCBpbgorCSAqIHBhcnRfcHJ1bmVfaW5mbywg aWYgYW55LCB3b3VsZCBiZSBvcGVuZWQgYnkgRXhlY0luaXRQYXJ0aXRpb25QcnVuaW5nKCkKKwkg KiB1c2luZyBFeGVjR2V0UmFuZ2VUYWJsZVJlbGF0aW9uKCkgd2hpY2ggbG9ja3MgY2hpbGQgdGFi bGVzLCByZWR1bmRhbnRseQorCSAqIGluIHRoaXMgY2FzZS4KKwkgKi8KKwlpZiAoZXN0YXRlLT5l c19jYWNoZWRwbGFuKQorCXsKKwkJRXhlY0xvY2tBcHBlbmROb25MZWFmUmVsYXRpb25zKGVzdGF0 ZSwgbm9kZS0+YWxscGFydHJlbGlkcyk7CisJCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0 ZSkpCisJCQlyZXR1cm4gTlVMTDsKKworCX0KKwogCS8qIElmIHJ1bi10aW1lIHBhcnRpdGlvbiBw cnVuaW5nIGlzIGVuYWJsZWQsIHRoZW4gc2V0IHRoYXQgdXAgbm93ICovCiAJaWYgKG5vZGUtPnBh cnRfcHJ1bmVfaW5mbyAhPSBOVUxMKQogCXsKQEAgLTE0Nyw2ICsxNjgsOCBAQCBFeGVjSW5pdEFw cGVuZChBcHBlbmQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCQkJCQkJCQkJ CQkgIGxpc3RfbGVuZ3RoKG5vZGUtPmFwcGVuZHBsYW5zKSwKIAkJCQkJCQkJCQkJICBub2RlLT5w YXJ0X3BydW5lX2luZm8sCiAJCQkJCQkJCQkJCSAgJnZhbGlkc3VicGxhbnMpOworCQlpZiAoIUV4 ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQkJcmV0dXJuIE5VTEw7CiAJCWFwcGVuZHN0YXRl LT5hc19wcnVuZV9zdGF0ZSA9IHBydW5lc3RhdGU7CiAJCW5wbGFucyA9IGJtc19udW1fbWVtYmVy cyh2YWxpZHN1YnBsYW5zKTsKIApAQCAtMjIxLDYgKzI0NCw4IEBAIEV4ZWNJbml0QXBwZW5kKEFw cGVuZCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCQlmaXJzdHZhbGlkID0g ajsKIAogCQlhcHBlbmRwbGFuc3RhdGVzW2orK10gPSBFeGVjSW5pdE5vZGUoaW5pdE5vZGUsIGVz dGF0ZSwgZWZsYWdzKTsKKwkJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJCXJl dHVybiBOVUxMOwogCX0KIAogCWFwcGVuZHN0YXRlLT5hc19maXJzdF9wYXJ0aWFsX3BsYW4gPSBm aXJzdHZhbGlkOwpAQCAtMzc2LDMwICs0MDEsMTUgQEAgRXhlY0FwcGVuZChQbGFuU3RhdGUgKnBz dGF0ZSkKIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQogICoJCUV4ZWNFbmRBcHBlbmQKLSAqCi0gKgkJU2h1dHMgZG93 biB0aGUgc3Vic2NhbnMgb2YgdGhlIGFwcGVuZCBub2RlLgotICoKLSAqCQlSZXR1cm5zIG5vdGhp bmcgb2YgaW50ZXJlc3QuCiAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKi8KIHZvaWQKIEV4ZWNFbmRBcHBlbmQoQXBw ZW5kU3RhdGUgKm5vZGUpCiB7Ci0JUGxhblN0YXRlICoqYXBwZW5kcGxhbnM7Ci0JaW50CQkJbnBs YW5zOwotCWludAkJCWk7Ci0KLQkvKgotCSAqIGdldCBpbmZvcm1hdGlvbiBmcm9tIHRoZSBub2Rl Ci0JICovCi0JYXBwZW5kcGxhbnMgPSBub2RlLT5hcHBlbmRwbGFuczsKLQlucGxhbnMgPSBub2Rl LT5hc19ucGxhbnM7Ci0KLQkvKgotCSAqIHNodXQgZG93biBlYWNoIG9mIHRoZSBzdWJzY2Fucwot CSAqLwotCWZvciAoaSA9IDA7IGkgPCBucGxhbnM7IGkrKykKLQkJRXhlY0VuZE5vZGUoYXBwZW5k cGxhbnNbaV0pOworCSAvKgorCSAgKiBOb3RoaW5nIHRvIGRvIGFzIHN1YnNjYW5zIG9mIHRoZSBh cHBlbmQgbm9kZSB3b3VsZCBiZSBjbGVhbmVkIHVwIGJ5CisJICAqCUV4ZWNFbmRQbGFuKCkuCisJ ICAqLwogfQogCiB2b2lkCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0 bWFwQW5kLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwQW5kLmMKaW5kZXggNGM1 ZWIyYjIzYi4uMTg3YWVhNGJiOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUJpdG1hcEFuZC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBBbmQuYwpA QCAtODgsOCArODgsOSBAQCBFeGVjSW5pdEJpdG1hcEFuZChCaXRtYXBBbmQgKm5vZGUsIEVTdGF0 ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCWZvcmVhY2gobCwgbm9kZS0+Yml0bWFwcGxhbnMpCiAJ ewogCQlpbml0Tm9kZSA9IChQbGFuICopIGxmaXJzdChsKTsKLQkJYml0bWFwcGxhbnN0YXRlc1tp XSA9IEV4ZWNJbml0Tm9kZShpbml0Tm9kZSwgZXN0YXRlLCBlZmxhZ3MpOwotCQlpKys7CisJCWJp dG1hcHBsYW5zdGF0ZXNbaSsrXSA9IEV4ZWNJbml0Tm9kZShpbml0Tm9kZSwgZXN0YXRlLCBlZmxh Z3MpOworCQlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQkJcmV0dXJuIE5VTEw7 CiAJfQogCiAJLyoKQEAgLTE2OCwzMyArMTY5LDE1IEBAIE11bHRpRXhlY0JpdG1hcEFuZChCaXRt YXBBbmRTdGF0ZSAqbm9kZSkKIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoJCUV4ZWNFbmRCaXRtYXBBbmQKLSAq Ci0gKgkJU2h1dHMgZG93biB0aGUgc3Vic2NhbnMgb2YgdGhlIEJpdG1hcEFuZCBub2RlLgotICoK LSAqCQlSZXR1cm5zIG5vdGhpbmcgb2YgaW50ZXJlc3QuCiAgKiAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKi8KIHZvaWQK IEV4ZWNFbmRCaXRtYXBBbmQoQml0bWFwQW5kU3RhdGUgKm5vZGUpCiB7Ci0JUGxhblN0YXRlICoq Yml0bWFwcGxhbnM7Ci0JaW50CQkJbnBsYW5zOwotCWludAkJCWk7Ci0KLQkvKgotCSAqIGdldCBp bmZvcm1hdGlvbiBmcm9tIHRoZSBub2RlCi0JICovCi0JYml0bWFwcGxhbnMgPSBub2RlLT5iaXRt YXBwbGFuczsKLQlucGxhbnMgPSBub2RlLT5ucGxhbnM7Ci0KLQkvKgotCSAqIHNodXQgZG93biBl YWNoIG9mIHRoZSBzdWJzY2FucyAodGhhdCB3ZSd2ZSBpbml0aWFsaXplZCkKLQkgKi8KLQlmb3Ig KGkgPSAwOyBpIDwgbnBsYW5zOyBpKyspCi0JewotCQlpZiAoYml0bWFwcGxhbnNbaV0pCi0JCQlF eGVjRW5kTm9kZShiaXRtYXBwbGFuc1tpXSk7Ci0JfQorCSAvKgorCSAgKiBOb3RoaW5nIHRvIGRv IGFzIGFueSBzdWJzY2FucyB0aGF0IHdvdWxkIGhhdmUgYmVlbiBpbml0aWFsaXplZCB3b3VsZAor CSAgKiBiZSBjbGVhbmVkIHVwIGJ5IEV4ZWNFbmRQbGFuKCkuCisJICAqLwogfQogCiB2b2lkCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwSGVhcHNjYW4uYyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBIZWFwc2Nhbi5jCmluZGV4IGYzNWRmMGI4YmYu LmVlMTAwODUxOWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBI ZWFwc2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBIZWFwc2Nhbi5j CkBAIC02NjcsMTEgKzY2Nyw2IEBAIEV4ZWNFbmRCaXRtYXBIZWFwU2NhbihCaXRtYXBIZWFwU2Nh blN0YXRlICpub2RlKQogCQlFeGVjQ2xlYXJUdXBsZShub2RlLT5zcy5wcy5wc19SZXN1bHRUdXBs ZVNsb3QpOwogCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3QpOwogCi0J LyoKLQkgKiBjbG9zZSBkb3duIHN1YnBsYW5zCi0JICovCi0JRXhlY0VuZE5vZGUob3V0ZXJQbGFu U3RhdGUobm9kZSkpOwotCiAJLyoKIAkgKiByZWxlYXNlIGJpdG1hcHMgYW5kIGJ1ZmZlcnMgaWYg YW55CiAJICovCkBAIC03NjMsMTEgKzc1OCwxNSBAQCBFeGVjSW5pdEJpdG1hcEhlYXBTY2FuKEJp dG1hcEhlYXBTY2FuICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkgKiBvcGVu IHRoZSBzY2FuIHJlbGF0aW9uCiAJICovCiAJY3VycmVudFJlbGF0aW9uID0gRXhlY09wZW5TY2Fu UmVsYXRpb24oZXN0YXRlLCBub2RlLT5zY2FuLnNjYW5yZWxpZCwgZWZsYWdzKTsKKwlpZiAoIUV4 ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gTlVMTDsKIAogCS8qCiAJICogaW5p dGlhbGl6ZSBjaGlsZCBub2RlcwogCSAqLwogCW91dGVyUGxhblN0YXRlKHNjYW5zdGF0ZSkgPSBF eGVjSW5pdE5vZGUob3V0ZXJQbGFuKG5vZGUpLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKCFFeGVj UGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIE5VTEw7CiAKIAkvKgogCSAqIGdldCB0 aGUgc2NhbiB0eXBlIGZyb20gdGhlIHJlbGF0aW9uIGRlc2NyaXB0b3IuCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwSW5kZXhzY2FuLmMgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlQml0bWFwSW5kZXhzY2FuLmMKaW5kZXggODNlYzllZGU4OS4uOTkwMTU4MTJh MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEluZGV4c2Nhbi5j CisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBJbmRleHNjYW4uYwpAQCAtMjEx LDYgKzIxMSw3IEBAIEJpdG1hcEluZGV4U2NhblN0YXRlICoKIEV4ZWNJbml0Qml0bWFwSW5kZXhT Y2FuKEJpdG1hcEluZGV4U2NhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiB7 CiAJQml0bWFwSW5kZXhTY2FuU3RhdGUgKmluZGV4c3RhdGU7CisJUmVsYXRpb24JaW5kZXhSZWxh dGlvbjsKIAlMT0NLTU9ERQlsb2NrbW9kZTsKIAogCS8qIGNoZWNrIGZvciB1bnN1cHBvcnRlZCBm bGFncyAqLwpAQCAtMjYyLDcgKzI2MywxMyBAQCBFeGVjSW5pdEJpdG1hcEluZGV4U2NhbihCaXRt YXBJbmRleFNjYW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCiAJLyogT3Bl biB0aGUgaW5kZXggcmVsYXRpb24uICovCiAJbG9ja21vZGUgPSBleGVjX3J0X2ZldGNoKG5vZGUt PnNjYW4uc2NhbnJlbGlkLCBlc3RhdGUpLT5yZWxsb2NrbW9kZTsKLQlpbmRleHN0YXRlLT5iaXNz X1JlbGF0aW9uRGVzYyA9IGluZGV4X29wZW4obm9kZS0+aW5kZXhpZCwgbG9ja21vZGUpOworCWlu ZGV4UmVsYXRpb24gPSBpbmRleF9vcGVuKG5vZGUtPmluZGV4aWQsIGxvY2ttb2RlKTsKKwlpZiAo IUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCXsKKwkJaW5kZXhfY2xvc2UoaW5kZXhSZWxh dGlvbiwgbG9ja21vZGUpOworCQlyZXR1cm4gTlVMTDsKKwl9CisJaW5kZXhzdGF0ZS0+Ymlzc19S ZWxhdGlvbkRlc2MgPSBpbmRleFJlbGF0aW9uOwogCiAJLyoKIAkgKiBJbml0aWFsaXplIGluZGV4 LXNwZWNpZmljIHNjYW4gc3RhdGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVCaXRtYXBPci5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcE9yLmMKaW5kZXgg MGJmOGFmOTY1Mi4uM2Y1MTkxOGZlMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZUJpdG1hcE9yLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcE9yLmMK QEAgLTg5LDggKzg5LDkgQEAgRXhlY0luaXRCaXRtYXBPcihCaXRtYXBPciAqbm9kZSwgRVN0YXRl ICplc3RhdGUsIGludCBlZmxhZ3MpCiAJZm9yZWFjaChsLCBub2RlLT5iaXRtYXBwbGFucykKIAl7 CiAJCWluaXROb2RlID0gKFBsYW4gKikgbGZpcnN0KGwpOwotCQliaXRtYXBwbGFuc3RhdGVzW2ld ID0gRXhlY0luaXROb2RlKGluaXROb2RlLCBlc3RhdGUsIGVmbGFncyk7Ci0JCWkrKzsKKwkJYml0 bWFwcGxhbnN0YXRlc1tpKytdID0gRXhlY0luaXROb2RlKGluaXROb2RlLCBlc3RhdGUsIGVmbGFn cyk7CisJCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCQlyZXR1cm4gTlVMTDsK IAl9CiAKIAkvKgpAQCAtMTg2LDMzICsxODcsMTUgQEAgTXVsdGlFeGVjQml0bWFwT3IoQml0bWFw T3JTdGF0ZSAqbm9kZSkKIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoJCUV4ZWNFbmRCaXRtYXBPcgotICoKLSAq CQlTaHV0cyBkb3duIHRoZSBzdWJzY2FucyBvZiB0aGUgQml0bWFwT3Igbm9kZS4KLSAqCi0gKgkJ UmV0dXJucyBub3RoaW5nIG9mIGludGVyZXN0LgogICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICovCiB2b2lkCiBFeGVj RW5kQml0bWFwT3IoQml0bWFwT3JTdGF0ZSAqbm9kZSkKIHsKLQlQbGFuU3RhdGUgKipiaXRtYXBw bGFuczsKLQlpbnQJCQlucGxhbnM7Ci0JaW50CQkJaTsKLQotCS8qCi0JICogZ2V0IGluZm9ybWF0 aW9uIGZyb20gdGhlIG5vZGUKLQkgKi8KLQliaXRtYXBwbGFucyA9IG5vZGUtPmJpdG1hcHBsYW5z OwotCW5wbGFucyA9IG5vZGUtPm5wbGFuczsKLQotCS8qCi0JICogc2h1dCBkb3duIGVhY2ggb2Yg dGhlIHN1YnNjYW5zICh0aGF0IHdlJ3ZlIGluaXRpYWxpemVkKQotCSAqLwotCWZvciAoaSA9IDA7 IGkgPCBucGxhbnM7IGkrKykKLQl7Ci0JCWlmIChiaXRtYXBwbGFuc1tpXSkKLQkJCUV4ZWNFbmRO b2RlKGJpdG1hcHBsYW5zW2ldKTsKLQl9CisJIC8qCisJICAqIE5vdGhpbmcgdG8gZG8gYXMgYW55 IHN1YnNjYW5zIHRoYXQgd291bGQgaGF2ZSBiZWVuIGluaXRpYWxpemVkIHdvdWxkCisJICAqIGJl IGNsZWFuZWQgdXAgYnkgRXhlY0VuZFBsYW4oKS4KKwkgICovCiB9CiAKIHZvaWQKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVDdXN0b20uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVDdXN0b20uYwppbmRleCBiZDQyYzY1YjI5Li45MTIzOWNjNTAwIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQ3VzdG9tLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZUN1c3RvbS5jCkBAIC02MSw2ICs2MSw4IEBAIEV4ZWNJbml0Q3VzdG9tU2NhbihD dXN0b21TY2FuICpjc2NhbiwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJaWYgKHNjYW5y ZWxpZCA+IDApCiAJewogCQlzY2FuX3JlbCA9IEV4ZWNPcGVuU2NhblJlbGF0aW9uKGVzdGF0ZSwg c2NhbnJlbGlkLCBlZmxhZ3MpOworCQlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQor CQkJcmV0dXJuIE5VTEw7CiAJCWNzcy0+c3Muc3NfY3VycmVudFJlbGF0aW9uID0gc2Nhbl9yZWw7 CiAJfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlRm9yZWlnbnNjYW4u YyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVGb3JlaWduc2Nhbi5jCmluZGV4IGMyMTM5YWNj YTAuLjIwNzE2NWY0NGYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVGb3Jl aWduc2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVGb3JlaWduc2Nhbi5jCkBA IC0xNzMsNiArMTczLDggQEAgRXhlY0luaXRGb3JlaWduU2NhbihGb3JlaWduU2NhbiAqbm9kZSwg RVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJaWYgKHNjYW5yZWxpZCA+IDApCiAJewogCQlj dXJyZW50UmVsYXRpb24gPSBFeGVjT3BlblNjYW5SZWxhdGlvbihlc3RhdGUsIHNjYW5yZWxpZCwg ZWZsYWdzKTsKKwkJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJCXJldHVybiBO VUxMOwogCQlzY2Fuc3RhdGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbiA9IGN1cnJlbnRSZWxhdGlv bjsKIAkJZmR3cm91dGluZSA9IEdldEZkd1JvdXRpbmVGb3JSZWxhdGlvbihjdXJyZW50UmVsYXRp b24sIHRydWUpOwogCX0KQEAgLTI2NCw2ICsyNjYsOCBAQCBFeGVjSW5pdEZvcmVpZ25TY2FuKEZv cmVpZ25TY2FuICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAlpZiAob3V0ZXJQ bGFuKG5vZGUpKQogCQlvdXRlclBsYW5TdGF0ZShzY2Fuc3RhdGUpID0KIAkJCUV4ZWNJbml0Tm9k ZShvdXRlclBsYW4obm9kZSksIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxW YWxpZChlc3RhdGUpKQorCQlyZXR1cm4gTlVMTDsKIAogCS8qCiAJICogVGVsbCB0aGUgRkRXIHRv IGluaXRpYWxpemUgdGhlIHNjYW4uCkBAIC0zMDksMTAgKzMxMyw2IEBAIEV4ZWNFbmRGb3JlaWdu U2NhbihGb3JlaWduU2NhblN0YXRlICpub2RlKQogCWVsc2UKIAkJbm9kZS0+ZmR3cm91dGluZS0+ RW5kRm9yZWlnblNjYW4obm9kZSk7CiAKLQkvKiBTaHV0IGRvd24gYW55IG91dGVyIHBsYW4uICov Ci0JaWYgKG91dGVyUGxhblN0YXRlKG5vZGUpKQotCQlFeGVjRW5kTm9kZShvdXRlclBsYW5TdGF0 ZShub2RlKSk7Ci0KIAkvKiBGcmVlIHRoZSBleHByY29udGV4dCAqLwogCUV4ZWNGcmVlRXhwckNv bnRleHQoJm5vZGUtPnNzLnBzKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZUdhdGhlci5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdhdGhlci5jCmluZGV4IDMw N2ZjMTBlZWEuLjQwMGM4YjQyZWQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVHYXRoZXIuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR2F0aGVyLmMKQEAgLTg5 LDYgKzg5LDkgQEAgRXhlY0luaXRHYXRoZXIoR2F0aGVyICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwg aW50IGVmbGFncykKIAkgKi8KIAlvdXRlck5vZGUgPSBvdXRlclBsYW4obm9kZSk7CiAJb3V0ZXJQ bGFuU3RhdGUoZ2F0aGVyc3RhdGUpID0gRXhlY0luaXROb2RlKG91dGVyTm9kZSwgZXN0YXRlLCBl ZmxhZ3MpOworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBOVUxM OworCiAJdHVwRGVzYyA9IEV4ZWNHZXRSZXN1bHRUeXBlKG91dGVyUGxhblN0YXRlKGdhdGhlcnN0 YXRlKSk7CiAKIAkvKgpAQCAtMjQ4LDcgKzI1MSw2IEBAIEV4ZWNHYXRoZXIoUGxhblN0YXRlICpw c3RhdGUpCiB2b2lkCiBFeGVjRW5kR2F0aGVyKEdhdGhlclN0YXRlICpub2RlKQogewotCUV4ZWNF bmROb2RlKG91dGVyUGxhblN0YXRlKG5vZGUpKTsJLyogbGV0IGNoaWxkcmVuIGNsZWFuIHVwIGZp cnN0ICovCiAJRXhlY1NodXRkb3duR2F0aGVyKG5vZGUpOwogCUV4ZWNGcmVlRXhwckNvbnRleHQo Jm5vZGUtPnBzKTsKIAlpZiAobm9kZS0+cHMucHNfUmVzdWx0VHVwbGVTbG90KQpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdhdGhlck1lcmdlLmMgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlR2F0aGVyTWVyZ2UuYwppbmRleCA5ZDVlMWE0NmU5Li45MDc3YzRiYzU1IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR2F0aGVyTWVyZ2UuYworKysgYi9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlR2F0aGVyTWVyZ2UuYwpAQCAtMTA4LDYgKzEwOCw4IEBA IEV4ZWNJbml0R2F0aGVyTWVyZ2UoR2F0aGVyTWVyZ2UgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBp bnQgZWZsYWdzKQogCSAqLwogCW91dGVyTm9kZSA9IG91dGVyUGxhbihub2RlKTsKIAlvdXRlclBs YW5TdGF0ZShnbV9zdGF0ZSkgPSBFeGVjSW5pdE5vZGUob3V0ZXJOb2RlLCBlc3RhdGUsIGVmbGFn cyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIE5VTEw7CiAK IAkvKgogCSAqIExlYWRlciBtYXkgYWNjZXNzIEV4ZWNQcm9jTm9kZSByZXN1bHQgZGlyZWN0bHkg KGlmCkBAIC0yODgsNyArMjkwLDYgQEAgRXhlY0dhdGhlck1lcmdlKFBsYW5TdGF0ZSAqcHN0YXRl KQogdm9pZAogRXhlY0VuZEdhdGhlck1lcmdlKEdhdGhlck1lcmdlU3RhdGUgKm5vZGUpCiB7Ci0J RXhlY0VuZE5vZGUob3V0ZXJQbGFuU3RhdGUobm9kZSkpOwkvKiBsZXQgY2hpbGRyZW4gY2xlYW4g dXAgZmlyc3QgKi8KIAlFeGVjU2h1dGRvd25HYXRoZXJNZXJnZShub2RlKTsKIAlFeGVjRnJlZUV4 cHJDb250ZXh0KCZub2RlLT5wcyk7CiAJaWYgKG5vZGUtPnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCkK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHcm91cC5jIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZUdyb3VwLmMKaW5kZXggMjVhMTYxODk1Mi4uOTc2ZTczOWFiNyAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdyb3VwLmMKKysrIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZUdyb3VwLmMKQEAgLTE4NSw2ICsxODUsOCBAQCBFeGVjSW5pdEdyb3Vw KEdyb3VwICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkgKiBpbml0aWFsaXpl IGNoaWxkIG5vZGVzCiAJICovCiAJb3V0ZXJQbGFuU3RhdGUoZ3Jwc3RhdGUpID0gRXhlY0luaXRO b2RlKG91dGVyUGxhbihub2RlKSwgZXN0YXRlLCBlZmxhZ3MpOworCWlmICghRXhlY1BsYW5TdGls bFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBOVUxMOwogCiAJLyoKIAkgKiBJbml0aWFsaXplIHNj YW4gc2xvdCBhbmQgdHlwZS4KQEAgLTIyNiwxNSArMjI4LDEwIEBAIEV4ZWNJbml0R3JvdXAoR3Jv dXAgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogdm9pZAogRXhlY0VuZEdyb3Vw KEdyb3VwU3RhdGUgKm5vZGUpCiB7Ci0JUGxhblN0YXRlICAqb3V0ZXJQbGFuOwotCiAJRXhlY0Zy ZWVFeHByQ29udGV4dCgmbm9kZS0+c3MucHMpOwogCiAJLyogY2xlYW4gdXAgdHVwbGUgdGFibGUg Ki8KIAlFeGVjQ2xlYXJUdXBsZShub2RlLT5zcy5zc19TY2FuVHVwbGVTbG90KTsKLQotCW91dGVy UGxhbiA9IG91dGVyUGxhblN0YXRlKG5vZGUpOwotCUV4ZWNFbmROb2RlKG91dGVyUGxhbik7CiB9 CiAKIHZvaWQKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVIYXNoLmMgYi9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlSGFzaC5jCmluZGV4IDhiNWMzNWI4MmIuLmZjN2E2YjJj Y2MgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVIYXNoLmMKKysrIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUhhc2guYwpAQCAtMzg2LDYgKzM4Niw4IEBAIEV4ZWNJbml0 SGFzaChIYXNoICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkgKiBpbml0aWFs aXplIGNoaWxkIG5vZGVzCiAJICovCiAJb3V0ZXJQbGFuU3RhdGUoaGFzaHN0YXRlKSA9IEV4ZWNJ bml0Tm9kZShvdXRlclBsYW4obm9kZSksIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFu U3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gTlVMTDsKIAogCS8qCiAJICogaW5pdGlhbGl6 ZSBvdXIgcmVzdWx0IHNsb3QgYW5kIHR5cGUuIE5vIG5lZWQgdG8gYnVpbGQgcHJvamVjdGlvbgpA QCAtNDEzLDE4ICs0MTUsMTAgQEAgRXhlY0luaXRIYXNoKEhhc2ggKm5vZGUsIEVTdGF0ZSAqZXN0 YXRlLCBpbnQgZWZsYWdzKQogdm9pZAogRXhlY0VuZEhhc2goSGFzaFN0YXRlICpub2RlKQogewot CVBsYW5TdGF0ZSAgKm91dGVyUGxhbjsKLQogCS8qCiAJICogZnJlZSBleHByY29udGV4dAogCSAq LwogCUV4ZWNGcmVlRXhwckNvbnRleHQoJm5vZGUtPnBzKTsKLQotCS8qCi0JICogc2h1dCBkb3du IHRoZSBzdWJwbGFuCi0JICovCi0Jb3V0ZXJQbGFuID0gb3V0ZXJQbGFuU3RhdGUobm9kZSk7Ci0J RXhlY0VuZE5vZGUob3V0ZXJQbGFuKTsKIH0KIAogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlSGFzaGpvaW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVIYXNoam9p bi5jCmluZGV4IDk4MDc0NjEyOGIuLjRjNGIzOWNlMmQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVIYXNoam9pbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVI YXNoam9pbi5jCkBAIC03NTIsOCArNzUyLDEyIEBAIEV4ZWNJbml0SGFzaEpvaW4oSGFzaEpvaW4g Km5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCWhhc2hOb2RlID0gKEhhc2ggKikg aW5uZXJQbGFuKG5vZGUpOwogCiAJb3V0ZXJQbGFuU3RhdGUoaGpzdGF0ZSkgPSBFeGVjSW5pdE5v ZGUob3V0ZXJOb2RlLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQo ZXN0YXRlKSkKKwkJcmV0dXJuIE5VTEw7CiAJb3V0ZXJEZXNjID0gRXhlY0dldFJlc3VsdFR5cGUo b3V0ZXJQbGFuU3RhdGUoaGpzdGF0ZSkpOwogCWlubmVyUGxhblN0YXRlKGhqc3RhdGUpID0gRXhl Y0luaXROb2RlKChQbGFuICopIGhhc2hOb2RlLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKCFFeGVj UGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIE5VTEw7CiAJaW5uZXJEZXNjID0gRXhl Y0dldFJlc3VsdFR5cGUoaW5uZXJQbGFuU3RhdGUoaGpzdGF0ZSkpOwogCiAJLyoKQEAgLTg3OCwx MiArODgyLDYgQEAgRXhlY0VuZEhhc2hKb2luKEhhc2hKb2luU3RhdGUgKm5vZGUpCiAJRXhlY0Ns ZWFyVHVwbGUobm9kZS0+anMucHMucHNfUmVzdWx0VHVwbGVTbG90KTsKIAlFeGVjQ2xlYXJUdXBs ZShub2RlLT5oal9PdXRlclR1cGxlU2xvdCk7CiAJRXhlY0NsZWFyVHVwbGUobm9kZS0+aGpfSGFz aFR1cGxlU2xvdCk7Ci0KLQkvKgotCSAqIGNsZWFuIHVwIHN1YnRyZWVzCi0JICovCi0JRXhlY0Vu ZE5vZGUob3V0ZXJQbGFuU3RhdGUobm9kZSkpOwotCUV4ZWNFbmROb2RlKGlubmVyUGxhblN0YXRl KG5vZGUpKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJ bmNyZW1lbnRhbFNvcnQuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmNyZW1lbnRhbFNv cnQuYwppbmRleCA3NjgzZTMzNDFjLi41YjExYWZlYjk2IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlSW5jcmVtZW50YWxTb3J0LmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZUluY3JlbWVudGFsU29ydC5jCkBAIC0xMDQxLDYgKzEwNDEsOCBAQCBFeGVjSW5pdElu Y3JlbWVudGFsU29ydChJbmNyZW1lbnRhbFNvcnQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQg ZWZsYWdzKQogCSAqIG5vZGVzIG1heSBiZSBhYmxlIHRvIGRvIHNvbWV0aGluZyBtb3JlIHVzZWZ1 bC4KIAkgKi8KIAlvdXRlclBsYW5TdGF0ZShpbmNyc29ydHN0YXRlKSA9IEV4ZWNJbml0Tm9kZShv dXRlclBsYW4obm9kZSksIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxp ZChlc3RhdGUpKQorCQlyZXR1cm4gTlVMTDsKIAogCS8qCiAJICogSW5pdGlhbGl6ZSBzY2FuIHNs b3QgYW5kIHR5cGUuCkBAIC0xMTAxLDExICsxMTAzLDYgQEAgRXhlY0VuZEluY3JlbWVudGFsU29y dChJbmNyZW1lbnRhbFNvcnRTdGF0ZSAqbm9kZSkKIAkJbm9kZS0+cHJlZml4c29ydF9zdGF0ZSA9 IE5VTEw7CiAJfQogCi0JLyoKLQkgKiBTaHV0IGRvd24gdGhlIHN1YnBsYW4uCi0JICovCi0JRXhl Y0VuZE5vZGUob3V0ZXJQbGFuU3RhdGUobm9kZSkpOwotCiAJU09fcHJpbnRmKCJFeGVjRW5kSW5j cmVtZW50YWxTb3J0OiBzb3J0IG5vZGUgc2h1dGRvd25cbiIpOwogfQogCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhvbmx5c2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZUluZGV4b25seXNjYW4uYwppbmRleCAwYjQzYTliOTY5Li5lYThiZWY0Yjk3IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhvbmx5c2Nhbi5jCisrKyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleG9ubHlzY2FuLmMKQEAgLTQ5MCw2ICs0OTAs NyBAQCBFeGVjSW5pdEluZGV4T25seVNjYW4oSW5kZXhPbmx5U2NhbiAqbm9kZSwgRVN0YXRlICpl c3RhdGUsIGludCBlZmxhZ3MpCiB7CiAJSW5kZXhPbmx5U2NhblN0YXRlICppbmRleHN0YXRlOwog CVJlbGF0aW9uCWN1cnJlbnRSZWxhdGlvbjsKKwlSZWxhdGlvbglpbmRleFJlbGF0aW9uOwogCUxP Q0tNT0RFCWxvY2ttb2RlOwogCVR1cGxlRGVzYwl0dXBEZXNjOwogCkBAIC01MTIsNiArNTEzLDgg QEAgRXhlY0luaXRJbmRleE9ubHlTY2FuKEluZGV4T25seVNjYW4gKm5vZGUsIEVTdGF0ZSAqZXN0 YXRlLCBpbnQgZWZsYWdzKQogCSAqIG9wZW4gdGhlIHNjYW4gcmVsYXRpb24KIAkgKi8KIAljdXJy ZW50UmVsYXRpb24gPSBFeGVjT3BlblNjYW5SZWxhdGlvbihlc3RhdGUsIG5vZGUtPnNjYW4uc2Nh bnJlbGlkLCBlZmxhZ3MpOworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJl dHVybiBOVUxMOwogCiAJaW5kZXhzdGF0ZS0+c3Muc3NfY3VycmVudFJlbGF0aW9uID0gY3VycmVu dFJlbGF0aW9uOwogCWluZGV4c3RhdGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVzYyA9IE5VTEw7CS8q IG5vIGhlYXAgc2NhbiBoZXJlICovCkBAIC01NjQsNyArNTY3LDEzIEBAIEV4ZWNJbml0SW5kZXhP bmx5U2NhbihJbmRleE9ubHlTY2FuICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykK IAogCS8qIE9wZW4gdGhlIGluZGV4IHJlbGF0aW9uLiAqLwogCWxvY2ttb2RlID0gZXhlY19ydF9m ZXRjaChub2RlLT5zY2FuLnNjYW5yZWxpZCwgZXN0YXRlKS0+cmVsbG9ja21vZGU7Ci0JaW5kZXhz dGF0ZS0+aW9zc19SZWxhdGlvbkRlc2MgPSBpbmRleF9vcGVuKG5vZGUtPmluZGV4aWQsIGxvY2tt b2RlKTsKKwlpbmRleFJlbGF0aW9uID0gaW5kZXhfb3Blbihub2RlLT5pbmRleGlkLCBsb2NrbW9k ZSk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwl7CisJCWluZGV4X2Nsb3Nl KGluZGV4UmVsYXRpb24sIGxvY2ttb2RlKTsKKwkJcmV0dXJuIE5VTEw7CisJfQorCWluZGV4c3Rh dGUtPmlvc3NfUmVsYXRpb25EZXNjID0gaW5kZXhSZWxhdGlvbjsKIAogCS8qCiAJICogSW5pdGlh bGl6ZSBpbmRleC1zcGVjaWZpYyBzY2FuIHN0YXRlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlSW5kZXhzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhz Y2FuLmMKaW5kZXggNDU0MGM3NzgxZC4uOTU2ZTllNTU0MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZUluZGV4c2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVJbmRleHNjYW4uYwpAQCAtOTA0LDYgKzkwNCw3IEBAIEV4ZWNJbml0SW5kZXhTY2FuKEluZGV4 U2NhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiB7CiAJSW5kZXhTY2FuU3Rh dGUgKmluZGV4c3RhdGU7CiAJUmVsYXRpb24JY3VycmVudFJlbGF0aW9uOworCVJlbGF0aW9uCWlu ZGV4UmVsYXRpb247CiAJTE9DS01PREUJbG9ja21vZGU7CiAKIAkvKgpAQCAtOTI1LDYgKzkyNiw4 IEBAIEV4ZWNJbml0SW5kZXhTY2FuKEluZGV4U2NhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGlu dCBlZmxhZ3MpCiAJICogb3BlbiB0aGUgc2NhbiByZWxhdGlvbgogCSAqLwogCWN1cnJlbnRSZWxh dGlvbiA9IEV4ZWNPcGVuU2NhblJlbGF0aW9uKGVzdGF0ZSwgbm9kZS0+c2Nhbi5zY2FucmVsaWQs IGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIE5V TEw7CiAKIAlpbmRleHN0YXRlLT5zcy5zc19jdXJyZW50UmVsYXRpb24gPSBjdXJyZW50UmVsYXRp b247CiAJaW5kZXhzdGF0ZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjID0gTlVMTDsJLyogbm8gaGVh cCBzY2FuIGhlcmUgKi8KQEAgLTk2OSw3ICs5NzIsMTMgQEAgRXhlY0luaXRJbmRleFNjYW4oSW5k ZXhTY2FuICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAogCS8qIE9wZW4gdGhl IGluZGV4IHJlbGF0aW9uLiAqLwogCWxvY2ttb2RlID0gZXhlY19ydF9mZXRjaChub2RlLT5zY2Fu LnNjYW5yZWxpZCwgZXN0YXRlKS0+cmVsbG9ja21vZGU7Ci0JaW5kZXhzdGF0ZS0+aXNzX1JlbGF0 aW9uRGVzYyA9IGluZGV4X29wZW4obm9kZS0+aW5kZXhpZCwgbG9ja21vZGUpOworCWluZGV4UmVs YXRpb24gPSBpbmRleF9vcGVuKG5vZGUtPmluZGV4aWQsIGxvY2ttb2RlKTsKKwlpZiAoIUV4ZWNQ bGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCXsKKwkJaW5kZXhfY2xvc2UoaW5kZXhSZWxhdGlvbiwg bG9ja21vZGUpOworCQlyZXR1cm4gTlVMTDsKKwl9CisJaW5kZXhzdGF0ZS0+aXNzX1JlbGF0aW9u RGVzYyA9IGluZGV4UmVsYXRpb247CiAKIAkvKgogCSAqIEluaXRpYWxpemUgaW5kZXgtc3BlY2lm aWMgc2NhbiBzdGF0ZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUxpbWl0 LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTGltaXQuYwppbmRleCA0MjVmYmZjNDA1Li4x Y2M4ODRiYzY1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTGltaXQuYwor KysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTGltaXQuYwpAQCAtNDc2LDYgKzQ3Niw4IEBA IEV4ZWNJbml0TGltaXQoTGltaXQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQog CSAqLwogCW91dGVyUGxhbiA9IG91dGVyUGxhbihub2RlKTsKIAlvdXRlclBsYW5TdGF0ZShsaW1p dHN0YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlclBsYW4sIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAo IUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gTlVMTDsKIAogCS8qCiAJICog aW5pdGlhbGl6ZSBjaGlsZCBleHByZXNzaW9ucwpAQCAtNTM1LDcgKzUzNyw2IEBAIHZvaWQKIEV4 ZWNFbmRMaW1pdChMaW1pdFN0YXRlICpub2RlKQogewogCUV4ZWNGcmVlRXhwckNvbnRleHQoJm5v ZGUtPnBzKTsKLQlFeGVjRW5kTm9kZShvdXRlclBsYW5TdGF0ZShub2RlKSk7CiB9CiAKIApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUxvY2tSb3dzLmMgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlTG9ja1Jvd3MuYwppbmRleCBlNDU5OTcxZDMyLi43NzczMWMwYzhjIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTG9ja1Jvd3MuYworKysgYi9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlTG9ja1Jvd3MuYwpAQCAtMzIyLDYgKzMyMiw4IEBAIEV4ZWNJ bml0TG9ja1Jvd3MoTG9ja1Jvd3MgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQog CSAqIHRoZW4gaW5pdGlhbGl6ZSBvdXRlciBwbGFuCiAJICovCiAJb3V0ZXJQbGFuU3RhdGUobHJz dGF0ZSkgPSBFeGVjSW5pdE5vZGUob3V0ZXJQbGFuLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKCFF eGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIE5VTEw7CiAKIAkvKiBub2RlIHJl dHVybnMgdW5tb2RpZmllZCBzbG90cyBmcm9tIHRoZSBvdXRlciBwbGFuICovCiAJbHJzdGF0ZS0+ cHMucmVzdWx0b3Bzc2V0ID0gdHJ1ZTsKQEAgLTM4Niw3ICszODgsNiBAQCBFeGVjRW5kTG9ja1Jv d3MoTG9ja1Jvd3NTdGF0ZSAqbm9kZSkKIHsKIAkvKiBXZSBtYXkgaGF2ZSBzaHV0IGRvd24gRVBR IGFscmVhZHksIGJ1dCBubyBoYXJtIGluIGFub3RoZXIgY2FsbCAqLwogCUV2YWxQbGFuUXVhbEVu ZCgmbm9kZS0+bHJfZXBxc3RhdGUpOwotCUV4ZWNFbmROb2RlKG91dGVyUGxhblN0YXRlKG5vZGUp KTsKIH0KIAogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWF0ZXJpYWwu YyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNYXRlcmlhbC5jCmluZGV4IDA5NjMyNjc4YjAu LmEzOGI5ODA1YTUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNYXRlcmlh bC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNYXRlcmlhbC5jCkBAIC0yMTQsNiAr MjE0LDggQEAgRXhlY0luaXRNYXRlcmlhbChNYXRlcmlhbCAqbm9kZSwgRVN0YXRlICplc3RhdGUs IGludCBlZmxhZ3MpCiAKIAlvdXRlclBsYW4gPSBvdXRlclBsYW4obm9kZSk7CiAJb3V0ZXJQbGFu U3RhdGUobWF0c3RhdGUpID0gRXhlY0luaXROb2RlKG91dGVyUGxhbiwgZXN0YXRlLCBlZmxhZ3Mp OworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBOVUxMOwogCiAJ LyoKIAkgKiBJbml0aWFsaXplIHJlc3VsdCB0eXBlIGFuZCBzbG90LiBObyBuZWVkIHRvIGluaXRp YWxpemUgcHJvamVjdGlvbiBpbmZvCkBAIC0yNTAsMTEgKzI1Miw2IEBAIEV4ZWNFbmRNYXRlcmlh bChNYXRlcmlhbFN0YXRlICpub2RlKQogCWlmIChub2RlLT50dXBsZXN0b3Jlc3RhdGUgIT0gTlVM TCkKIAkJdHVwbGVzdG9yZV9lbmQobm9kZS0+dHVwbGVzdG9yZXN0YXRlKTsKIAlub2RlLT50dXBs ZXN0b3Jlc3RhdGUgPSBOVUxMOwotCi0JLyoKLQkgKiBzaHV0IGRvd24gdGhlIHN1YnBsYW4KLQkg Ki8KLQlFeGVjRW5kTm9kZShvdXRlclBsYW5TdGF0ZShub2RlKSk7CiB9CiAKIC8qIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZW1vaXplLmMgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlTWVtb2l6ZS5jCmluZGV4IDRmMDQyNjllMjYuLmE4OTk3YmE3ZGEg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZW1vaXplLmMKKysrIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lbW9pemUuYwpAQCAtOTM4LDYgKzkzOCw4IEBAIEV4ZWNJ bml0TWVtb2l6ZShNZW1vaXplICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAog CW91dGVyTm9kZSA9IG91dGVyUGxhbihub2RlKTsKIAlvdXRlclBsYW5TdGF0ZShtc3RhdGUpID0g RXhlY0luaXROb2RlKG91dGVyTm9kZSwgZXN0YXRlLCBlZmxhZ3MpOworCWlmICghRXhlY1BsYW5T dGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBOVUxMOwogCiAJLyoKIAkgKiBJbml0aWFsaXpl IHJldHVybiBzbG90IGFuZCB0eXBlLiBObyBuZWVkIHRvIGluaXRpYWxpemUgcHJvamVjdGlvbiBp bmZvCkBAIC0xMDk5LDExICsxMTAxLDYgQEAgRXhlY0VuZE1lbW9pemUoTWVtb2l6ZVN0YXRlICpu b2RlKQogCSAqIGZyZWUgZXhwcmNvbnRleHQKIAkgKi8KIAlFeGVjRnJlZUV4cHJDb250ZXh0KCZu b2RlLT5zcy5wcyk7Ci0KLQkvKgotCSAqIHNodXQgZG93biB0aGUgc3VicGxhbgotCSAqLwotCUV4 ZWNFbmROb2RlKG91dGVyUGxhblN0YXRlKG5vZGUpKTsKIH0KIAogdm9pZApkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlQXBwZW5kLmMgYi9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlTWVyZ2VBcHBlbmQuYwppbmRleCAyMWI1NzI2ZTZlLi44NzE4ZjIwODI1IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VBcHBlbmQuYworKysgYi9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VBcHBlbmQuYwpAQCAtODEsNiArODEsMjcgQEAgRXhl Y0luaXRNZXJnZUFwcGVuZChNZXJnZUFwcGVuZCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBl ZmxhZ3MpCiAJbWVyZ2VzdGF0ZS0+cHMuc3RhdGUgPSBlc3RhdGU7CiAJbWVyZ2VzdGF0ZS0+cHMu RXhlY1Byb2NOb2RlID0gRXhlY01lcmdlQXBwZW5kOwogCisJLyoKKwkgKiBNdXN0IHRha2UgbG9j a3Mgb24gY2hpbGQgdGFibGVzIGlmIHJ1bm5pbmcgYSBjYWNoZWQgcGxhbiwgYmVjYXVzZQorCSAq IEdldENhY2hlZFBsYW4oKSB3b3VsZCd2ZSBvbmx5IGxvY2tlZCB0aGUgcm9vdCBwYXJlbnQgbmFt ZWQgaW4gdGhlCisJICogcXVlcnkuCisJICoKKwkgKiBGaXJzdCBsb2NrIG5vbi1sZWFmIHBhcnRp dGlvbnMgYmVmb3JlIGRvaW5nIHBydW5pbmcgaWYgYW55LiAgRXZlbiB3aGVuCisJICogbm8gcHJ1 bmluZyBpcyB0byBiZSBkb25lLCBub24tbGVhZiBwYXJ0aXRpb25zIHN0aWxsIG11c3QgYmUgbG9j a2VkCisJICogZXhwbGljaXRseSBsaWtlIHRoaXMsIGJlY2F1c2UgdGhleSdyZSBub3QgcmVmZXJl bmNlZCBlbHNld2hlcmUgaW4KKwkgKiB0aGUgcGxhbiB0cmVlLiAgWFhYIC0gT1RPSCwgbm9uLWxl YWYgcGFydGl0aW9ucyBtZW50aW9uZWQgaW4KKwkgKiBwYXJ0X3BydW5lX2luZm8sIGlmIGFueSwg d291bGQgYmUgb3BlbmVkIGJ5IEV4ZWNJbml0UGFydGl0aW9uUHJ1bmluZygpCisJICogdXNpbmcg RXhlY0dldFJhbmdlVGFibGVSZWxhdGlvbigpIHdoaWNoIGxvY2tzIGNoaWxkIHRhYmxlcywgcmVk dW5kYW50bHkKKwkgKiBpbiB0aGlzIGNhc2UuCisJICovCisJaWYgKGVzdGF0ZS0+ZXNfY2FjaGVk cGxhbikKKwl7CisJCUV4ZWNMb2NrQXBwZW5kTm9uTGVhZlJlbGF0aW9ucyhlc3RhdGUsIG5vZGUt PmFsbHBhcnRyZWxpZHMpOworCQlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQkJ cmV0dXJuIE5VTEw7CisKKwl9CisKIAkvKiBJZiBydW4tdGltZSBwYXJ0aXRpb24gcHJ1bmluZyBp cyBlbmFibGVkLCB0aGVuIHNldCB0aGF0IHVwIG5vdyAqLwogCWlmIChub2RlLT5wYXJ0X3BydW5l X2luZm8gIT0gTlVMTCkKIAl7CkBAIC05NSw2ICsxMTYsOCBAQCBFeGVjSW5pdE1lcmdlQXBwZW5k KE1lcmdlQXBwZW5kICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkJCQkJCQkJ CQkJICBsaXN0X2xlbmd0aChub2RlLT5tZXJnZXBsYW5zKSwKIAkJCQkJCQkJCQkJICBub2RlLT5w YXJ0X3BydW5lX2luZm8sCiAJCQkJCQkJCQkJCSAgJnZhbGlkc3VicGxhbnMpOworCQlpZiAoIUV4 ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQkJcmV0dXJuIE5VTEw7CiAJCW1lcmdlc3RhdGUt Pm1zX3BydW5lX3N0YXRlID0gcHJ1bmVzdGF0ZTsKIAkJbnBsYW5zID0gYm1zX251bV9tZW1iZXJz KHZhbGlkc3VicGxhbnMpOwogCkBAIC0xNTEsNiArMTc0LDggQEAgRXhlY0luaXRNZXJnZUFwcGVu ZChNZXJnZUFwcGVuZCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCVBsYW4J ICAgKmluaXROb2RlID0gKFBsYW4gKikgbGlzdF9udGgobm9kZS0+bWVyZ2VwbGFucywgaSk7CiAK IAkJbWVyZ2VwbGFuc3RhdGVzW2orK10gPSBFeGVjSW5pdE5vZGUoaW5pdE5vZGUsIGVzdGF0ZSwg ZWZsYWdzKTsKKwkJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJCXJldHVybiBO VUxMOwogCX0KIAogCW1lcmdlc3RhdGUtPnBzLnBzX1Byb2pJbmZvID0gTlVMTDsKQEAgLTMxMCwz MCArMzM1LDE0IEBAIGhlYXBfY29tcGFyZV9zbG90cyhEYXR1bSBhLCBEYXR1bSBiLCB2b2lkICph cmcpCiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KICAqCQlFeGVjRW5kTWVyZ2VBcHBlbmQKLSAqCi0gKgkJU2h1dHMg ZG93biB0aGUgc3Vic2NhbnMgb2YgdGhlIE1lcmdlQXBwZW5kIG5vZGUuCi0gKgotICoJCVJldHVy bnMgbm90aGluZyBvZiBpbnRlcmVzdC4KICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqLwogdm9pZAogRXhlY0VuZE1l cmdlQXBwZW5kKE1lcmdlQXBwZW5kU3RhdGUgKm5vZGUpCiB7Ci0JUGxhblN0YXRlICoqbWVyZ2Vw bGFuczsKLQlpbnQJCQlucGxhbnM7Ci0JaW50CQkJaTsKLQotCS8qCi0JICogZ2V0IGluZm9ybWF0 aW9uIGZyb20gdGhlIG5vZGUKLQkgKi8KLQltZXJnZXBsYW5zID0gbm9kZS0+bWVyZ2VwbGFuczsK LQlucGxhbnMgPSBub2RlLT5tc19ucGxhbnM7Ci0KLQkvKgotCSAqIHNodXQgZG93biBlYWNoIG9m IHRoZSBzdWJzY2FucwotCSAqLwotCWZvciAoaSA9IDA7IGkgPCBucGxhbnM7IGkrKykKLQkJRXhl Y0VuZE5vZGUobWVyZ2VwbGFuc1tpXSk7CisJIC8qCisJICAqIE5vdGhpbmcgdG8gZG8gYXMgc3Vi c2NhbnMgd291bGQgYmUgY2xlYW5lZCB1cCBieSBFeGVjRW5kUGxhbigpLgorCSAgKi8KIH0KIAog dm9pZApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlam9pbi5jIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlam9pbi5jCmluZGV4IDAwZjk2ZDA0NWUuLmM2 NjQ0YzY4MTYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZWpvaW4u YworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2Vqb2luLmMKQEAgLTE0OTAsMTEg KzE0OTAsMTUgQEAgRXhlY0luaXRNZXJnZUpvaW4oTWVyZ2VKb2luICpub2RlLCBFU3RhdGUgKmVz dGF0ZSwgaW50IGVmbGFncykKIAltZXJnZXN0YXRlLT5tal9Ta2lwTWFya1Jlc3RvcmUgPSBub2Rl LT5za2lwX21hcmtfcmVzdG9yZTsKIAogCW91dGVyUGxhblN0YXRlKG1lcmdlc3RhdGUpID0gRXhl Y0luaXROb2RlKG91dGVyUGxhbihub2RlKSwgZXN0YXRlLCBlZmxhZ3MpOworCWlmICghRXhlY1Bs YW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBOVUxMOwogCW91dGVyRGVzYyA9IEV4ZWNH ZXRSZXN1bHRUeXBlKG91dGVyUGxhblN0YXRlKG1lcmdlc3RhdGUpKTsKIAlpbm5lclBsYW5TdGF0 ZShtZXJnZXN0YXRlKSA9IEV4ZWNJbml0Tm9kZShpbm5lclBsYW4obm9kZSksIGVzdGF0ZSwKIAkJ CQkJCQkJCQkJICBtZXJnZXN0YXRlLT5tal9Ta2lwTWFya1Jlc3RvcmUgPwogCQkJCQkJCQkJCQkg IGVmbGFncyA6CiAJCQkJCQkJCQkJCSAgKGVmbGFncyB8IEVYRUNfRkxBR19NQVJLKSk7CisJaWYg KCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIE5VTEw7CiAJaW5uZXJEZXNj ID0gRXhlY0dldFJlc3VsdFR5cGUoaW5uZXJQbGFuU3RhdGUobWVyZ2VzdGF0ZSkpOwogCiAJLyoK QEAgLTE2NTQsMTIgKzE2NTgsNiBAQCBFeGVjRW5kTWVyZ2VKb2luKE1lcmdlSm9pblN0YXRlICpu b2RlKQogCUV4ZWNDbGVhclR1cGxlKG5vZGUtPmpzLnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCk7CiAJ RXhlY0NsZWFyVHVwbGUobm9kZS0+bWpfTWFya2VkVHVwbGVTbG90KTsKIAotCS8qCi0JICogc2h1 dCBkb3duIHRoZSBzdWJwbGFucwotCSAqLwotCUV4ZWNFbmROb2RlKGlubmVyUGxhblN0YXRlKG5v ZGUpKTsKLQlFeGVjRW5kTm9kZShvdXRlclBsYW5TdGF0ZShub2RlKSk7Ci0KIAlNSjFfcHJpbnRm KCJFeGVjRW5kTWVyZ2VKb2luOiAlc1xuIiwKIAkJCSAgICJub2RlIHByb2Nlc3NpbmcgZW5kZWQi KTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5j IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMKaW5kZXggMmE1ZmVjOGQw MS4uMGMzYWViMTE1NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlm eVRhYmxlLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMKQEAg LTM5ODQsNiArMzk4NCw5IEBAIEV4ZWNJbml0TW9kaWZ5VGFibGUoTW9kaWZ5VGFibGUgKm5vZGUs IEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCQkJCQkJCSAgIGxpbml0aWFsX2ludChub2Rl LT5yZXN1bHRSZWxhdGlvbnMpKTsKIAl9CiAKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3Rh dGUpKQorCQlyZXR1cm4gTlVMTDsKKwogCS8qIHNldCB1cCBlcHFzdGF0ZSB3aXRoIGR1bW15IHN1 YnBsYW4gZGF0YSBmb3IgdGhlIG1vbWVudCAqLwogCUV2YWxQbGFuUXVhbEluaXQoJm10c3RhdGUt Pm10X2VwcXN0YXRlLCBlc3RhdGUsIE5VTEwsIE5JTCwKIAkJCQkJIG5vZGUtPmVwcVBhcmFtLCBu b2RlLT5yZXN1bHRSZWxhdGlvbnMpOwpAQCAtNDAxMSw2ICs0MDE0LDggQEAgRXhlY0luaXRNb2Rp ZnlUYWJsZShNb2RpZnlUYWJsZSAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJ CWlmIChyZXN1bHRSZWxJbmZvICE9IG10c3RhdGUtPnJvb3RSZXN1bHRSZWxJbmZvKQogCQl7CiAJ CQlFeGVjSW5pdFJlc3VsdFJlbGF0aW9uKGVzdGF0ZSwgcmVzdWx0UmVsSW5mbywgcmVzdWx0UmVs YXRpb24pOworCQkJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJCQlyZXR1cm4g TlVMTDsKIAogCQkJLyoKIAkJCSAqIEZvciBjaGlsZCByZXN1bHQgcmVsYXRpb25zLCBzdG9yZSB0 aGUgcm9vdCByZXN1bHQgcmVsYXRpb24KQEAgLTQwMzgsNiArNDA0Myw4IEBAIEV4ZWNJbml0TW9k aWZ5VGFibGUoTW9kaWZ5VGFibGUgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQog CSAqIE5vdyB3ZSBtYXkgaW5pdGlhbGl6ZSB0aGUgc3VicGxhbi4KIAkgKi8KIAlvdXRlclBsYW5T dGF0ZShtdHN0YXRlKSA9IEV4ZWNJbml0Tm9kZShzdWJwbGFuLCBlc3RhdGUsIGVmbGFncyk7CisJ aWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIE5VTEw7CiAKIAkvKgog CSAqIERvIGFkZGl0aW9uYWwgcGVyLXJlc3VsdC1yZWxhdGlvbiBpbml0aWFsaXphdGlvbi4KQEAg LTQ0NjAsMTEgKzQ0NjcsNiBAQCBFeGVjRW5kTW9kaWZ5VGFibGUoTW9kaWZ5VGFibGVTdGF0ZSAq bm9kZSkKIAkgKiBUZXJtaW5hdGUgRVBRIGV4ZWN1dGlvbiBpZiBhY3RpdmUKIAkgKi8KIAlFdmFs UGxhblF1YWxFbmQoJm5vZGUtPm10X2VwcXN0YXRlKTsKLQotCS8qCi0JICogc2h1dCBkb3duIHN1 YnBsYW4KLQkgKi8KLQlFeGVjRW5kTm9kZShvdXRlclBsYW5TdGF0ZShub2RlKSk7CiB9CiAKIHZv aWQKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVOZXN0bG9vcC5jIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU5lc3Rsb29wLmMKaW5kZXggYjNkNTJlNjllYy4uNzFhMWY4 MTAxYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU5lc3Rsb29wLmMKKysr IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU5lc3Rsb29wLmMKQEAgLTI5NSwxMSArMjk1LDE1 IEBAIEV4ZWNJbml0TmVzdExvb3AoTmVzdExvb3AgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQg ZWZsYWdzKQogCSAqIHZhbHVlcy4KIAkgKi8KIAlvdXRlclBsYW5TdGF0ZShubHN0YXRlKSA9IEV4 ZWNJbml0Tm9kZShvdXRlclBsYW4obm9kZSksIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQ bGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gTlVMTDsKIAlpZiAobm9kZS0+bmVzdFBh cmFtcyA9PSBOSUwpCiAJCWVmbGFncyB8PSBFWEVDX0ZMQUdfUkVXSU5EOwogCWVsc2UKIAkJZWZs YWdzICY9IH5FWEVDX0ZMQUdfUkVXSU5EOwogCWlubmVyUGxhblN0YXRlKG5sc3RhdGUpID0gRXhl Y0luaXROb2RlKGlubmVyUGxhbihub2RlKSwgZXN0YXRlLCBlZmxhZ3MpOworCWlmICghRXhlY1Bs YW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBOVUxMOwogCiAJLyoKIAkgKiBJbml0aWFs aXplIHJlc3VsdCBzbG90LCB0eXBlIGFuZCBwcm9qZWN0aW9uLgpAQCAtMzc0LDEyICszNzgsNiBA QCBFeGVjRW5kTmVzdExvb3AoTmVzdExvb3BTdGF0ZSAqbm9kZSkKIAkgKi8KIAlFeGVjQ2xlYXJU dXBsZShub2RlLT5qcy5wcy5wc19SZXN1bHRUdXBsZVNsb3QpOwogCi0JLyoKLQkgKiBjbG9zZSBk b3duIHN1YnBsYW5zCi0JICovCi0JRXhlY0VuZE5vZGUob3V0ZXJQbGFuU3RhdGUobm9kZSkpOwot CUV4ZWNFbmROb2RlKGlubmVyUGxhblN0YXRlKG5vZGUpKTsKLQogCU5MMV9wcmludGYoIkV4ZWNF bmROZXN0TG9vcDogJXNcbiIsCiAJCQkgICAibm9kZSBwcm9jZXNzaW5nIGVuZGVkIik7CiB9CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUHJvamVjdFNldC5jIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZVByb2plY3RTZXQuYwppbmRleCBmNmZmM2RjNDRjLi5hYmNiZDdl NzY1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUHJvamVjdFNldC5jCisr KyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVQcm9qZWN0U2V0LmMKQEAgLTI0Nyw2ICsyNDcs OCBAQCBFeGVjSW5pdFByb2plY3RTZXQoUHJvamVjdFNldCAqbm9kZSwgRVN0YXRlICplc3RhdGUs IGludCBlZmxhZ3MpCiAJICogaW5pdGlhbGl6ZSBjaGlsZCBub2RlcwogCSAqLwogCW91dGVyUGxh blN0YXRlKHN0YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlclBsYW4obm9kZSksIGVzdGF0ZSwgZWZs YWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gTlVMTDsK IAogCS8qCiAJICogd2UgZG9uJ3QgdXNlIGlubmVyIHBsYW4KQEAgLTMyOSwxMSArMzMxLDYgQEAg RXhlY0VuZFByb2plY3RTZXQoUHJvamVjdFNldFN0YXRlICpub2RlKQogCSAqIGNsZWFuIG91dCB0 aGUgdHVwbGUgdGFibGUKIAkgKi8KIAlFeGVjQ2xlYXJUdXBsZShub2RlLT5wcy5wc19SZXN1bHRU dXBsZVNsb3QpOwotCi0JLyoKLQkgKiBzaHV0IGRvd24gc3VicGxhbnMKLQkgKi8KLQlFeGVjRW5k Tm9kZShvdXRlclBsYW5TdGF0ZShub2RlKSk7CiB9CiAKIHZvaWQKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVSZWN1cnNpdmV1bmlvbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZVJlY3Vyc2l2ZXVuaW9uLmMKaW5kZXggZTc4MTAwMzkzNC4uODRhNzA2NDU4YSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVJlY3Vyc2l2ZXVuaW9uLmMKKysrIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVJlY3Vyc2l2ZXVuaW9uLmMKQEAgLTI0NCw3ICsyNDQs MTEgQEAgRXhlY0luaXRSZWN1cnNpdmVVbmlvbihSZWN1cnNpdmVVbmlvbiAqbm9kZSwgRVN0YXRl ICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICogaW5pdGlhbGl6ZSBjaGlsZCBub2RlcwogCSAqLwog CW91dGVyUGxhblN0YXRlKHJ1c3RhdGUpID0gRXhlY0luaXROb2RlKG91dGVyUGxhbihub2RlKSwg ZXN0YXRlLCBlZmxhZ3MpOworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJl dHVybiBOVUxMOwogCWlubmVyUGxhblN0YXRlKHJ1c3RhdGUpID0gRXhlY0luaXROb2RlKGlubmVy UGxhbihub2RlKSwgZXN0YXRlLCBlZmxhZ3MpOworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVz dGF0ZSkpCisJCXJldHVybiBOVUxMOwogCiAJLyoKIAkgKiBJZiBoYXNoaW5nLCBwcmVjb21wdXRl IGZtZ3IgbG9va3VwIGRhdGEgZm9yIGlubmVyIGxvb3AsIGFuZCBjcmVhdGUgdGhlCkBAIC0yODAs MTIgKzI4NCw2IEBAIEV4ZWNFbmRSZWN1cnNpdmVVbmlvbihSZWN1cnNpdmVVbmlvblN0YXRlICpu b2RlKQogCQlNZW1vcnlDb250ZXh0RGVsZXRlKG5vZGUtPnRlbXBDb250ZXh0KTsKIAlpZiAobm9k ZS0+dGFibGVDb250ZXh0KQogCQlNZW1vcnlDb250ZXh0RGVsZXRlKG5vZGUtPnRhYmxlQ29udGV4 dCk7Ci0KLQkvKgotCSAqIGNsb3NlIGRvd24gc3VicGxhbnMKLQkgKi8KLQlFeGVjRW5kTm9kZShv dXRlclBsYW5TdGF0ZShub2RlKSk7Ci0JRXhlY0VuZE5vZGUoaW5uZXJQbGFuU3RhdGUobm9kZSkp OwogfQogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl UmVzdWx0LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUmVzdWx0LmMKaW5kZXggNDIxOTcx MmQzMC4uMzMwY2E2OGQxMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVJl c3VsdC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVSZXN1bHQuYwpAQCAtMjA4LDYg KzIwOCw4IEBAIEV4ZWNJbml0UmVzdWx0KFJlc3VsdCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGlu dCBlZmxhZ3MpCiAJICogaW5pdGlhbGl6ZSBjaGlsZCBub2RlcwogCSAqLwogCW91dGVyUGxhblN0 YXRlKHJlc3N0YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlclBsYW4obm9kZSksIGVzdGF0ZSwgZWZs YWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gTlVMTDsK IAogCS8qCiAJICogd2UgZG9uJ3QgdXNlIGlubmVyIHBsYW4KQEAgLTI0OSwxMSArMjUxLDYgQEAg RXhlY0VuZFJlc3VsdChSZXN1bHRTdGF0ZSAqbm9kZSkKIAkgKiBjbGVhbiBvdXQgdGhlIHR1cGxl IHRhYmxlCiAJICovCiAJRXhlY0NsZWFyVHVwbGUobm9kZS0+cHMucHNfUmVzdWx0VHVwbGVTbG90 KTsKLQotCS8qCi0JICogc2h1dCBkb3duIHN1YnBsYW5zCi0JICovCi0JRXhlY0VuZE5vZGUob3V0 ZXJQbGFuU3RhdGUobm9kZSkpOwogfQogCiB2b2lkCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlU2FtcGxlc2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNhbXBs ZXNjYW4uYwppbmRleCBkN2UyMmIxZGJiLi4yMjM1N2U3YTBlIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlU2FtcGxlc2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVTYW1wbGVzY2FuLmMKQEAgLTEyNSw2ICsxMjUsOCBAQCBFeGVjSW5pdFNhbXBsZVNjYW4o U2FtcGxlU2NhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCUV4ZWNPcGVu U2NhblJlbGF0aW9uKGVzdGF0ZSwKIAkJCQkJCQkgbm9kZS0+c2Nhbi5zY2FucmVsaWQsCiAJCQkJ CQkJIGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJu IE5VTEw7CiAKIAkvKiB3ZSB3b24ndCBzZXQgdXAgdGhlIEhlYXBTY2FuRGVzYyB0aWxsIGxhdGVy ICovCiAJc2NhbnN0YXRlLT5zcy5zc19jdXJyZW50U2NhbkRlc2MgPSBOVUxMOwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVTZXFzY2FuLmMKaW5kZXggNGRhMGYyOGY3Yi4uYjBiMzRjZDE0ZSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4uYworKysgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlU2Vxc2Nhbi5jCkBAIC0xNTMsNiArMTUzLDggQEAgRXhlY0luaXRTZXFTY2Fu KFNlcVNjYW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCQlFeGVjT3BlblNj YW5SZWxhdGlvbihlc3RhdGUsCiAJCQkJCQkJIG5vZGUtPnNjYW4uc2NhbnJlbGlkLAogCQkJCQkJ CSBlZmxhZ3MpOworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBO VUxMOwogCiAJLyogYW5kIGNyZWF0ZSBzbG90IHdpdGggdGhlIGFwcHJvcHJpYXRlIHJvd3R5cGUg Ki8KIAlFeGVjSW5pdFNjYW5UdXBsZVNsb3QoZXN0YXRlLCAmc2NhbnN0YXRlLT5zcywKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXRPcC5jIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZVNldE9wLmMKaW5kZXggNGJjMjQwNmI4OS4uOTEyY2Y3YjM3ZiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNldE9wLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZVNldE9wLmMKQEAgLTUyOCw2ICs1MjgsOCBAQCBFeGVjSW5pdFNldE9wKFNldE9w ICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAlpZiAobm9kZS0+c3RyYXRlZ3kg PT0gU0VUT1BfSEFTSEVEKQogCQllZmxhZ3MgJj0gfkVYRUNfRkxBR19SRVdJTkQ7CiAJb3V0ZXJQ bGFuU3RhdGUoc2V0b3BzdGF0ZSkgPSBFeGVjSW5pdE5vZGUob3V0ZXJQbGFuKG5vZGUpLCBlc3Rh dGUsIGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJu IE5VTEw7CiAJb3V0ZXJEZXNjID0gRXhlY0dldFJlc3VsdFR5cGUob3V0ZXJQbGFuU3RhdGUoc2V0 b3BzdGF0ZSkpOwogCiAJLyoKQEAgLTU4OSw4ICs1OTEsNiBAQCBFeGVjRW5kU2V0T3AoU2V0T3BT dGF0ZSAqbm9kZSkKIAlpZiAobm9kZS0+dGFibGVDb250ZXh0KQogCQlNZW1vcnlDb250ZXh0RGVs ZXRlKG5vZGUtPnRhYmxlQ29udGV4dCk7CiAJRXhlY0ZyZWVFeHByQ29udGV4dCgmbm9kZS0+cHMp OwotCi0JRXhlY0VuZE5vZGUob3V0ZXJQbGFuU3RhdGUobm9kZSkpOwogfQogCiAKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTb3J0LmMgYi9zcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlU29ydC5jCmluZGV4IGM2YzcyYzZlNjcuLjFiYTUzMzczYzIgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTb3J0LmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZVNvcnQuYwpAQCAtMjYzLDYgKzI2Myw4IEBAIEV4ZWNJbml0U29ydChTb3J0ICpub2RlLCBF U3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAllZmxhZ3MgJj0gfihFWEVDX0ZMQUdfUkVXSU5E IHwgRVhFQ19GTEFHX0JBQ0tXQVJEIHwgRVhFQ19GTEFHX01BUkspOwogCiAJb3V0ZXJQbGFuU3Rh dGUoc29ydHN0YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlclBsYW4obm9kZSksIGVzdGF0ZSwgZWZs YWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gTlVMTDsK IAogCS8qCiAJICogSW5pdGlhbGl6ZSBzY2FuIHNsb3QgYW5kIHR5cGUuCkBAIC0zMTcsMTEgKzMx OSw2IEBAIEV4ZWNFbmRTb3J0KFNvcnRTdGF0ZSAqbm9kZSkKIAkJdHVwbGVzb3J0X2VuZCgoVHVw bGVzb3J0c3RhdGUgKikgbm9kZS0+dHVwbGVzb3J0c3RhdGUpOwogCW5vZGUtPnR1cGxlc29ydHN0 YXRlID0gTlVMTDsKIAotCS8qCi0JICogc2h1dCBkb3duIHRoZSBzdWJwbGFuCi0JICovCi0JRXhl Y0VuZE5vZGUob3V0ZXJQbGFuU3RhdGUobm9kZSkpOwotCiAJU08xX3ByaW50ZigiRXhlY0VuZFNv cnQ6ICVzXG4iLAogCQkJICAgInNvcnQgbm9kZSBzaHV0ZG93biIpOwogfQpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVN1YnF1ZXJ5c2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZVN1YnF1ZXJ5c2Nhbi5jCmluZGV4IDQyNDcxYmZjMDQuLjEyMDE0MjUwYWUgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTdWJxdWVyeXNjYW4uYworKysgYi9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlU3VicXVlcnlzY2FuLmMKQEAgLTEyNCw2ICsxMjQsOCBA QCBFeGVjSW5pdFN1YnF1ZXJ5U2NhbihTdWJxdWVyeVNjYW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRl LCBpbnQgZWZsYWdzKQogCSAqIGluaXRpYWxpemUgc3VicXVlcnkKIAkgKi8KIAlzdWJxdWVyeXN0 YXRlLT5zdWJwbGFuID0gRXhlY0luaXROb2RlKG5vZGUtPnN1YnBsYW4sIGVzdGF0ZSwgZWZsYWdz KTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gTlVMTDsKIAog CS8qCiAJICogSW5pdGlhbGl6ZSBzY2FuIHNsb3QgYW5kIHR5cGUgKG5lZWRlZCBieSBFeGVjQXNz aWduU2NhblByb2plY3Rpb25JbmZvKQpAQCAtMTc4LDExICsxODAsNiBAQCBFeGVjRW5kU3VicXVl cnlTY2FuKFN1YnF1ZXJ5U2NhblN0YXRlICpub2RlKQogCWlmIChub2RlLT5zcy5wcy5wc19SZXN1 bHRUdXBsZVNsb3QpCiAJCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnBzLnBzX1Jlc3VsdFR1cGxl U2xvdCk7CiAJRXhlY0NsZWFyVHVwbGUobm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdCk7Ci0KLQkv KgotCSAqIGNsb3NlIGRvd24gc3VicXVlcnkKLQkgKi8KLQlFeGVjRW5kTm9kZShub2RlLT5zdWJw bGFuKTsKIH0KIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZVRpZHJhbmdlc2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRpZHJhbmdlc2Nh bi5jCmluZGV4IDIxMjRjNTVlZjUuLjYxM2IzNzdjN2MgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVUaWRyYW5nZXNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlVGlkcmFuZ2VzY2FuLmMKQEAgLTM4Niw2ICszODYsOCBAQCBFeGVjSW5pdFRpZFJhbmdlU2Nh bihUaWRSYW5nZVNjYW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCSAqIG9w ZW4gdGhlIHNjYW4gcmVsYXRpb24KIAkgKi8KIAljdXJyZW50UmVsYXRpb24gPSBFeGVjT3BlblNj YW5SZWxhdGlvbihlc3RhdGUsIG5vZGUtPnNjYW4uc2NhbnJlbGlkLCBlZmxhZ3MpOworCWlmICgh RXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBOVUxMOwogCiAJdGlkcmFuZ2Vz dGF0ZS0+c3Muc3NfY3VycmVudFJlbGF0aW9uID0gY3VycmVudFJlbGF0aW9uOwogCXRpZHJhbmdl c3RhdGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVzYyA9IE5VTEw7CS8qIG5vIHRhYmxlIHNjYW4gaGVy ZSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRpZHNjYW4uYyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUaWRzY2FuLmMKaW5kZXggODYyYmQwMzMwYi4uMWIwYTJk ODA4MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRpZHNjYW4uYworKysg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGlkc2Nhbi5jCkBAIC01MjksNiArNTI5LDggQEAg RXhlY0luaXRUaWRTY2FuKFRpZFNjYW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdz KQogCSAqIG9wZW4gdGhlIHNjYW4gcmVsYXRpb24KIAkgKi8KIAljdXJyZW50UmVsYXRpb24gPSBF eGVjT3BlblNjYW5SZWxhdGlvbihlc3RhdGUsIG5vZGUtPnNjYW4uc2NhbnJlbGlkLCBlZmxhZ3Mp OworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBOVUxMOwogCiAJ dGlkc3RhdGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbiA9IGN1cnJlbnRSZWxhdGlvbjsKIAl0aWRz dGF0ZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjID0gTlVMTDsgLyogbm8gaGVhcCBzY2FuIGhlcmUg Ki8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVVbmlxdWUuYyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVVbmlxdWUuYwppbmRleCA0NTAzNWQ3NGZhLi5iZDcxMDMzNjIy IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVW5pcXVlLmMKKysrIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVVuaXF1ZS5jCkBAIC0xMzYsNiArMTM2LDggQEAgRXhlY0lu aXRVbmlxdWUoVW5pcXVlICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkgKiB0 aGVuIGluaXRpYWxpemUgb3V0ZXIgcGxhbgogCSAqLwogCW91dGVyUGxhblN0YXRlKHVuaXF1ZXN0 YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlclBsYW4obm9kZSksIGVzdGF0ZSwgZWZsYWdzKTsKKwlp ZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gTlVMTDsKIAogCS8qCiAJ ICogSW5pdGlhbGl6ZSByZXN1bHQgc2xvdCBhbmQgdHlwZS4gVW5pcXVlIG5vZGVzIGRvIG5vIHBy b2plY3Rpb25zLCBzbwpAQCAtMTcyLDggKzE3NCw2IEBAIEV4ZWNFbmRVbmlxdWUoVW5pcXVlU3Rh dGUgKm5vZGUpCiAJRXhlY0NsZWFyVHVwbGUobm9kZS0+cHMucHNfUmVzdWx0VHVwbGVTbG90KTsK IAogCUV4ZWNGcmVlRXhwckNvbnRleHQoJm5vZGUtPnBzKTsKLQotCUV4ZWNFbmROb2RlKG91dGVy UGxhblN0YXRlKG5vZGUpKTsKIH0KIAogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlV2luZG93QWdnLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlV2luZG93QWdnLmMK aW5kZXggMzEwYWMyM2UzYS4uNDgzZjIzZGExOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZVdpbmRvd0FnZy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVXaW5k b3dBZ2cuYwpAQCAtMjQ1OCw2ICsyNDU4LDggQEAgRXhlY0luaXRXaW5kb3dBZ2coV2luZG93QWdn ICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkgKi8KIAlvdXRlclBsYW4gPSBv dXRlclBsYW4obm9kZSk7CiAJb3V0ZXJQbGFuU3RhdGUod2luc3RhdGUpID0gRXhlY0luaXROb2Rl KG91dGVyUGxhbiwgZXN0YXRlLCBlZmxhZ3MpOworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVz dGF0ZSkpCisJCXJldHVybiBOVUxMOwogCiAJLyoKIAkgKiBpbml0aWFsaXplIHNvdXJjZSB0dXBs ZSB0eXBlICh3aGljaCBpcyBhbHNvIHRoZSB0dXBsZSB0eXBlIHRoYXQgd2UnbGwKQEAgLTI2ODEs NyArMjY4Myw2IEBAIEV4ZWNJbml0V2luZG93QWdnKFdpbmRvd0FnZyAqbm9kZSwgRVN0YXRlICpl c3RhdGUsIGludCBlZmxhZ3MpCiB2b2lkCiBFeGVjRW5kV2luZG93QWdnKFdpbmRvd0FnZ1N0YXRl ICpub2RlKQogewotCVBsYW5TdGF0ZSAgKm91dGVyUGxhbjsKIAlpbnQJCQlpOwogCiAJcmVsZWFz ZV9wYXJ0aXRpb24obm9kZSk7CkBAIC0yNzEzLDkgKzI3MTQsNiBAQCBFeGVjRW5kV2luZG93QWdn KFdpbmRvd0FnZ1N0YXRlICpub2RlKQogCiAJcGZyZWUobm9kZS0+cGVyZnVuYyk7CiAJcGZyZWUo bm9kZS0+cGVyYWdnKTsKLQotCW91dGVyUGxhbiA9IG91dGVyUGxhblN0YXRlKG5vZGUpOwotCUV4 ZWNFbmROb2RlKG91dGVyUGxhbik7CiB9CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9zcGkuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL3Nw aS5jCmluZGV4IDMzOTc1Njg3YjMuLjA3YjFmNDUzZTIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL3NwaS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL3NwaS5jCkBAIC03MSw3 ICs3MSw3IEBAIHN0YXRpYyBpbnQJX1NQSV9leGVjdXRlX3BsYW4oU1BJUGxhblB0ciBwbGFuLCBj b25zdCBTUElFeGVjdXRlT3B0aW9ucyAqb3B0aW9ucywKIHN0YXRpYyBQYXJhbUxpc3RJbmZvIF9T UElfY29udmVydF9wYXJhbXMoaW50IG5hcmdzLCBPaWQgKmFyZ3R5cGVzLAogCQkJCQkJCQkJCSBE YXR1bSAqVmFsdWVzLCBjb25zdCBjaGFyICpOdWxscyk7CiAKLXN0YXRpYyBpbnQJX1NQSV9wcXVl cnkoUXVlcnlEZXNjICpxdWVyeURlc2MsIGJvb2wgZmlyZV90cmlnZ2VycywgdWludDY0IHRjb3Vu dCk7CitzdGF0aWMgaW50CV9TUElfcHF1ZXJ5KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCB1aW50NjQg dGNvdW50KTsKIAogc3RhdGljIHZvaWQgX1NQSV9lcnJvcl9jYWxsYmFjayh2b2lkICphcmcpOwog CkBAIC0xNjIzLDYgKzE2MjMsNyBAQCBTUElfY3Vyc29yX29wZW5faW50ZXJuYWwoY29uc3QgY2hh ciAqbmFtZSwgU1BJUGxhblB0ciBwbGFuLAogCV9TUElfY3VycmVudC0+cHJvY2Vzc2VkID0gMDsK IAlfU1BJX2N1cnJlbnQtPnR1cHRhYmxlID0gTlVMTDsKIAorcmVwbGFuOgogCS8qIENyZWF0ZSB0 aGUgcG9ydGFsICovCiAJaWYgKG5hbWUgPT0gTlVMTCB8fCBuYW1lWzBdID09ICdcMCcpCiAJewpA QCAtMTc2Niw3ICsxNzY3LDEwIEBAIFNQSV9jdXJzb3Jfb3Blbl9pbnRlcm5hbChjb25zdCBjaGFy ICpuYW1lLCBTUElQbGFuUHRyIHBsYW4sCiAJfQogCiAJLyoKLQkgKiBTdGFydCBwb3J0YWwgZXhl Y3V0aW9uLgorCSAqIFN0YXJ0IHBvcnRhbCBleGVjdXRpb24uICBJZiB0aGUgcG9ydGFsIGNvbnRh aW5zIGEgY2FjaGVkIHBsYW4sIGl0IG11c3QKKwkgKiBiZSByZWNyZWF0ZWQgaWYgcG9ydGFsLT5w bGFuX3ZhbGlkIGlzIGZhbHNlIHdoaWNoIHRlbGxzIHRoYXQgdGhlIGNhY2hlZAorCSAqIHBsYW4g d2FzIGZvdW5kIHRvIGhhdmUgYmVlbiBpbnZhbGlkYXRlZCB3aGVuIGluaXRpYWxpemluZyBvbmUg b2YgdGhlCisJICogcGxhbiB0cmVlcyBjb250YWluZWQgaW4gaXQuCiAJICovCiAJUG9ydGFsU3Rh cnQocG9ydGFsLCBwYXJhbUxJLCAwLCBzbmFwc2hvdCk7CiAKQEAgLTE3NzUsNiArMTc3OSwxMiBA QCBTUElfY3Vyc29yX29wZW5faW50ZXJuYWwoY29uc3QgY2hhciAqbmFtZSwgU1BJUGxhblB0ciBw bGFuLAogCS8qIFBvcCB0aGUgZXJyb3IgY29udGV4dCBzdGFjayAqLwogCWVycm9yX2NvbnRleHRf c3RhY2sgPSBzcGllcnJjb250ZXh0LnByZXZpb3VzOwogCisJaWYgKCFwb3J0YWwtPnBsYW5fdmFs aWQpCisJeworCQlQb3J0YWxEcm9wKHBvcnRhbCwgZmFsc2UpOworCQlnb3RvIHJlcGxhbjsKKwl9 CisKIAkvKiBQb3AgdGhlIFNQSSBzdGFjayAqLwogCV9TUElfZW5kX2NhbGwodHJ1ZSk7CiAKQEAg LTI1NTIsNiArMjU2Miw3IEBAIF9TUElfZXhlY3V0ZV9wbGFuKFNQSVBsYW5QdHIgcGxhbiwgY29u c3QgU1BJRXhlY3V0ZU9wdGlvbnMgKm9wdGlvbnMsCiAJCSAqIFJlcGxhbiBpZiBuZWVkZWQsIGFu ZCBpbmNyZW1lbnQgcGxhbiByZWZjb3VudC4gIElmIGl0J3MgYSBzYXZlZAogCQkgKiBwbGFuLCB0 aGUgcmVmY291bnQgbXVzdCBiZSBiYWNrZWQgYnkgdGhlIHBsYW5fb3duZXIuCiAJCSAqLworcmVw bGFuOgogCQljcGxhbiA9IEdldENhY2hlZFBsYW4ocGxhbnNvdXJjZSwgb3B0aW9ucy0+cGFyYW1z LAogCQkJCQkJCSAgcGxhbl9vd25lciwgX1NQSV9jdXJyZW50LT5xdWVyeUVudik7CiAKQEAgLTI2 NjEsNiArMjY3Miw3IEBAIF9TUElfZXhlY3V0ZV9wbGFuKFNQSVBsYW5QdHIgcGxhbiwgY29uc3Qg U1BJRXhlY3V0ZU9wdGlvbnMgKm9wdGlvbnMsCiAJCQl7CiAJCQkJUXVlcnlEZXNjICAqcWRlc2M7 CiAJCQkJU25hcHNob3QJc25hcDsKKwkJCQlpbnQJCQllZmxhZ3M7CiAKIAkJCQlpZiAoQWN0aXZl U25hcHNob3RTZXQoKSkKIAkJCQkJc25hcCA9IEdldEFjdGl2ZVNuYXBzaG90KCk7CkBAIC0yNjY4 LDE0ICsyNjgwLDMyIEBAIF9TUElfZXhlY3V0ZV9wbGFuKFNQSVBsYW5QdHIgcGxhbiwgY29uc3Qg U1BJRXhlY3V0ZU9wdGlvbnMgKm9wdGlvbnMsCiAJCQkJCXNuYXAgPSBJbnZhbGlkU25hcHNob3Q7 CiAKIAkJCQlxZGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhzdG10LAorCQkJCQkJCQkJCWNwbGFuLAog CQkJCQkJCQkJCXBsYW5zb3VyY2UtPnF1ZXJ5X3N0cmluZywKIAkJCQkJCQkJCQlzbmFwLCBjcm9z c2NoZWNrX3NuYXBzaG90LAogCQkJCQkJCQkJCWRlc3QsCiAJCQkJCQkJCQkJb3B0aW9ucy0+cGFy YW1zLAogCQkJCQkJCQkJCV9TUElfY3VycmVudC0+cXVlcnlFbnYsCiAJCQkJCQkJCQkJMCk7Ci0J CQkJcmVzID0gX1NQSV9wcXVlcnkocWRlc2MsIGZpcmVfdHJpZ2dlcnMsCi0JCQkJCQkJCSAgY2Fu U2V0VGFnID8gb3B0aW9ucy0+dGNvdW50IDogMCk7CisKKwkJCQkvKiBTZWxlY3QgZXhlY3V0aW9u IG9wdGlvbnMgKi8KKwkJCQlpZiAoZmlyZV90cmlnZ2VycykKKwkJCQkJZWZsYWdzID0gMDsJCQkJ LyogZGVmYXVsdCBydW4tdG8tY29tcGxldGlvbiBmbGFncyAqLworCQkJCWVsc2UKKwkJCQkJZWZs YWdzID0gRVhFQ19GTEFHX1NLSVBfVFJJR0dFUlM7CisKKwkJCQlFeGVjdXRvclN0YXJ0KHFkZXNj LCBlZmxhZ3MpOworCQkJCWlmICghcWRlc2MtPnBsYW5fdmFsaWQpCisJCQkJeworCQkJCQlFeGVj dXRvckZpbmlzaChxZGVzYyk7CisJCQkJCUV4ZWN1dG9yRW5kKHFkZXNjKTsKKwkJCQkJRnJlZVF1 ZXJ5RGVzYyhxZGVzYyk7CisJCQkJCUFzc2VydChjcGxhbik7CisJCQkJCVJlbGVhc2VDYWNoZWRQ bGFuKGNwbGFuLCBwbGFuX293bmVyKTsKKwkJCQkJZ290byByZXBsYW47CisJCQkJfQorCisJCQkJ cmVzID0gX1NQSV9wcXVlcnkocWRlc2MsIGNhblNldFRhZyA/IG9wdGlvbnMtPnRjb3VudCA6IDAp OwogCQkJCUZyZWVRdWVyeURlc2MocWRlc2MpOwogCQkJfQogCQkJZWxzZQpAQCAtMjg1MCwxMCAr Mjg4MCw5IEBAIF9TUElfY29udmVydF9wYXJhbXMoaW50IG5hcmdzLCBPaWQgKmFyZ3R5cGVzLAog fQogCiBzdGF0aWMgaW50Ci1fU1BJX3BxdWVyeShRdWVyeURlc2MgKnF1ZXJ5RGVzYywgYm9vbCBm aXJlX3RyaWdnZXJzLCB1aW50NjQgdGNvdW50KQorX1NQSV9wcXVlcnkoUXVlcnlEZXNjICpxdWVy eURlc2MsIHVpbnQ2NCB0Y291bnQpCiB7CiAJaW50CQkJb3BlcmF0aW9uID0gcXVlcnlEZXNjLT5v cGVyYXRpb247Ci0JaW50CQkJZWZsYWdzOwogCWludAkJCXJlczsKIAogCXN3aXRjaCAob3BlcmF0 aW9uKQpAQCAtMjg5NywxNCArMjkyNiw2IEBAIF9TUElfcHF1ZXJ5KFF1ZXJ5RGVzYyAqcXVlcnlE ZXNjLCBib29sIGZpcmVfdHJpZ2dlcnMsIHVpbnQ2NCB0Y291bnQpCiAJCVJlc2V0VXNhZ2UoKTsK ICNlbmRpZgogCi0JLyogU2VsZWN0IGV4ZWN1dGlvbiBvcHRpb25zICovCi0JaWYgKGZpcmVfdHJp Z2dlcnMpCi0JCWVmbGFncyA9IDA7CQkJCS8qIGRlZmF1bHQgcnVuLXRvLWNvbXBsZXRpb24gZmxh Z3MgKi8KLQllbHNlCi0JCWVmbGFncyA9IEVYRUNfRkxBR19TS0lQX1RSSUdHRVJTOwotCi0JRXhl Y3V0b3JTdGFydChxdWVyeURlc2MsIGVmbGFncyk7Ci0KIAlFeGVjdXRvclJ1bihxdWVyeURlc2Ms IEZvcndhcmRTY2FuRGlyZWN0aW9uLCB0Y291bnQsIHRydWUpOwogCiAJX1NQSV9jdXJyZW50LT5w cm9jZXNzZWQgPSBxdWVyeURlc2MtPmVzdGF0ZS0+ZXNfcHJvY2Vzc2VkOwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2xtZ3IuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1n ci9sbWdyLmMKaW5kZXggZWU5Yjg5YTY3Mi4uYzgwN2U5Y2RjYyAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9sbWdyL2xtZ3IuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3Iv bG1nci5jCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jYXJyYXkuaCIK ICNpbmNsdWRlICJzdG9yYWdlL3NpbnZhbGFkdC5oIgogI2luY2x1ZGUgInV0aWxzL2ludmFsLmgi CisjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCiAKIAogLyoKQEAgLTM2NCw2ICszNjUsNTAg QEAgQ2hlY2tSZWxhdGlvbkxvY2tlZEJ5TWUoUmVsYXRpb24gcmVsYXRpb24sIExPQ0tNT0RFIGxv Y2ttb2RlLCBib29sIG9yc3Ryb25nZXIpCiAJcmV0dXJuIGZhbHNlOwogfQogCisvKgorICoJCUNo ZWNrUmVsTG9ja2VkQnlNZQorICoKKyAqIFJldHVybnMgdHJ1ZSBpZiBjdXJyZW50IHRyYW5zYWN0 aW9uIGhvbGRzIGEgbG9jayBvbiB0aGUgZ2l2ZW4gcmVsYXRpb24gb2YKKyAqIG1vZGUgJ2xvY2tt b2RlJy4gIElmICdvcnN0cm9uZ2VyJyBpcyB0cnVlLCBhIHN0cm9uZ2VyIGxvY2ttb2RlIGlzIGFs c28gT0suCisgKiAoIlN0cm9uZ2VyIiBpcyBkZWZpbmVkIGFzICJudW1lcmljYWxseSBoaWdoZXIi LCB3aGljaCBpcyBhIGJpdAorICogc2VtYW50aWNhbGx5IGR1YmlvdXMgYnV0IGlzIE9LIGZvciB0 aGUgcHVycG9zZXMgd2UgdXNlIHRoaXMgZm9yLikKKyAqLworYm9vbAorQ2hlY2tSZWxMb2NrZWRC eU1lKE9pZCByZWxpZCwgTE9DS01PREUgbG9ja21vZGUsIGJvb2wgb3JzdHJvbmdlcikKK3sKKwlP aWQJCQlkYklkID0gZ2V0X3JlbF9yZWxpc3NoYXJlZChyZWxpZCkgPyBJbnZhbGlkT2lkIDogTXlE YXRhYmFzZUlkOworCUxPQ0tUQUcJCXRhZzsKKworCVNFVF9MT0NLVEFHX1JFTEFUSU9OKHRhZywg ZGJJZCwgcmVsaWQpOworCisJaWYgKExvY2tIZWxkQnlNZSgmdGFnLCBsb2NrbW9kZSkpCisJCXJl dHVybiB0cnVlOworCisJaWYgKG9yc3Ryb25nZXIpCisJeworCQlMT0NLTU9ERQlzbG9ja21vZGU7 CisKKwkJZm9yIChzbG9ja21vZGUgPSBsb2NrbW9kZSArIDE7CisJCQkgc2xvY2ttb2RlIDw9IE1h eExvY2tNb2RlOworCQkJIHNsb2NrbW9kZSsrKQorCQl7CisJCQlpZiAoTG9ja0hlbGRCeU1lKCZ0 YWcsIHNsb2NrbW9kZSkpCisJCQl7CisjaWZkZWYgTk9UX1VTRUQKKwkJCQkvKiBTb21ldGltZXMg dGhpcyBtaWdodCBiZSB1c2VmdWwgZm9yIGRlYnVnZ2luZyBwdXJwb3NlcyAqLworCQkJCWVsb2co V0FSTklORywgImxvY2sgbW9kZSAlcyBzdWJzdGl0dXRlZCBmb3IgJXMgb24gcmVsYXRpb24gJXMi LAorCQkJCQkgR2V0TG9ja21vZGVOYW1lKHRhZy5sb2NrdGFnX2xvY2ttZXRob2RpZCwgc2xvY2tt b2RlKSwKKwkJCQkJIEdldExvY2ttb2RlTmFtZSh0YWcubG9ja3RhZ19sb2NrbWV0aG9kaWQsIGxv Y2ttb2RlKSwKKwkJCQkJIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbGF0aW9uKSk7CisjZW5k aWYKKwkJCQlyZXR1cm4gdHJ1ZTsKKwkJCX0KKwkJfQorCX0KKworCXJldHVybiBmYWxzZTsKK30K KwogLyoKICAqCQlMb2NrSGFzV2FpdGVyc1JlbGF0aW9uCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvdGNvcC9wb3N0Z3Jlcy5jIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCmluZGV4 IDM2Y2M5OWVjOWMuLjE2MGFlZjkyZjggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Rjb3AvcG9z dGdyZXMuYworKysgYi9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKQEAgLTEyMzMsNiArMTIz Myw3IEBAIGV4ZWNfc2ltcGxlX3F1ZXJ5KGNvbnN0IGNoYXIgKnF1ZXJ5X3N0cmluZykKIAkJICog U3RhcnQgdGhlIHBvcnRhbC4gIE5vIHBhcmFtZXRlcnMgaGVyZS4KIAkJICovCiAJCVBvcnRhbFN0 YXJ0KHBvcnRhbCwgTlVMTCwgMCwgSW52YWxpZFNuYXBzaG90KTsKKwkJQXNzZXJ0KHBvcnRhbC0+ cGxhbl92YWxpZCk7CiAKIAkJLyoKIAkJICogU2VsZWN0IHRoZSBhcHByb3ByaWF0ZSBvdXRwdXQg Zm9ybWF0OiB0ZXh0IHVubGVzcyB3ZSBhcmUgZG9pbmcgYQpAQCAtMTczNyw2ICsxNzM4LDcgQEAg ZXhlY19iaW5kX21lc3NhZ2UoU3RyaW5nSW5mbyBpbnB1dF9tZXNzYWdlKQogCQkJCQkJImNvbW1h bmRzIGlnbm9yZWQgdW50aWwgZW5kIG9mIHRyYW5zYWN0aW9uIGJsb2NrIiksCiAJCQkJIGVycmRl dGFpbF9hYm9ydCgpKSk7CiAKK3JlcGxhbjoKIAkvKgogCSAqIENyZWF0ZSB0aGUgcG9ydGFsLiAg QWxsb3cgc2lsZW50IHJlcGxhY2VtZW50IG9mIGFuIGV4aXN0aW5nIHBvcnRhbCBvbmx5CiAJICog aWYgdGhlIHVubmFtZWQgcG9ydGFsIGlzIHNwZWNpZmllZC4KQEAgLTIwMjgsMTAgKzIwMzAsMTkg QEAgZXhlY19iaW5kX21lc3NhZ2UoU3RyaW5nSW5mbyBpbnB1dF9tZXNzYWdlKQogCQlQb3BBY3Rp dmVTbmFwc2hvdCgpOwogCiAJLyoKLQkgKiBBbmQgd2UncmUgcmVhZHkgdG8gc3RhcnQgcG9ydGFs IGV4ZWN1dGlvbi4KKwkgKiBTdGFydCBwb3J0YWwgZXhlY3V0aW9uLiAgSWYgdGhlIHBvcnRhbCBj b250YWlucyBhIGNhY2hlZCBwbGFuLCBpdCBtdXN0CisJICogYmUgcmVjcmVhdGVkIGlmIHBvcnRh bC0+cGxhbl92YWxpZCBpcyBmYWxzZSB3aGljaCB0ZWxscyB0aGF0IHRoZSBjYWNoZWQKKwkgKiBw bGFuIHdhcyBmb3VuZCB0byBoYXZlIGJlZW4gaW52YWxpZGF0ZWQgd2hlbiBpbml0aWFsaXppbmcg b25lIG9mIHRoZQorCSAqIHBsYW4gdHJlZXMgY29udGFpbmVkIGluIGl0LgogCSAqLwogCVBvcnRh bFN0YXJ0KHBvcnRhbCwgcGFyYW1zLCAwLCBJbnZhbGlkU25hcHNob3QpOwogCisJaWYgKCFwb3J0 YWwtPnBsYW5fdmFsaWQpCisJeworCQlQb3J0YWxEcm9wKHBvcnRhbCwgZmFsc2UpOworCQlnb3Rv IHJlcGxhbjsKKwl9CisKIAkvKgogCSAqIEFwcGx5IHRoZSByZXN1bHQgZm9ybWF0IHJlcXVlc3Rz IHRvIHRoZSBwb3J0YWwuCiAJICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC90Y29wL3BxdWVy eS5jIGIvc3JjL2JhY2tlbmQvdGNvcC9wcXVlcnkuYwppbmRleCA1NTY1ZjIwMGMzLi5kYWI5NzFh YjBmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90Y29wL3BxdWVyeS5jCisrKyBiL3NyYy9iYWNr ZW5kL3Rjb3AvcHF1ZXJ5LmMKQEAgLTE5LDYgKzE5LDcgQEAKIAogI2luY2x1ZGUgImFjY2Vzcy94 YWN0LmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvcHJlcGFyZS5oIgorI2luY2x1ZGUgImV4ZWN1dG9y L2V4ZWNkZXNjLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvdHN0b3JlUmVjZWl2ZXIuaCIKICNpbmNs dWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJwZ190cmFjZS5oIgpAQCAtMzUsMTIgKzM2LDYg QEAKIFBvcnRhbAkJQWN0aXZlUG9ydGFsID0gTlVMTDsKIAogCi1zdGF0aWMgdm9pZCBQcm9jZXNz UXVlcnkoUGxhbm5lZFN0bXQgKnBsYW4sCi0JCQkJCQkgY29uc3QgY2hhciAqc291cmNlVGV4dCwK LQkJCQkJCSBQYXJhbUxpc3RJbmZvIHBhcmFtcywKLQkJCQkJCSBRdWVyeUVudmlyb25tZW50ICpx dWVyeUVudiwKLQkJCQkJCSBEZXN0UmVjZWl2ZXIgKmRlc3QsCi0JCQkJCQkgUXVlcnlDb21wbGV0 aW9uICpxYyk7CiBzdGF0aWMgdm9pZCBGaWxsUG9ydGFsU3RvcmUoUG9ydGFsIHBvcnRhbCwgYm9v bCBpc1RvcExldmVsKTsKIHN0YXRpYyB1aW50NjQgUnVuRnJvbVN0b3JlKFBvcnRhbCBwb3J0YWws IFNjYW5EaXJlY3Rpb24gZGlyZWN0aW9uLCB1aW50NjQgY291bnQsCiAJCQkJCQkgICBEZXN0UmVj ZWl2ZXIgKmRlc3QpOwpAQCAtNjUsNiArNjAsNyBAQCBzdGF0aWMgdm9pZCBEb1BvcnRhbFJld2lu ZChQb3J0YWwgcG9ydGFsKTsKICAqLwogUXVlcnlEZXNjICoKIENyZWF0ZVF1ZXJ5RGVzYyhQbGFu bmVkU3RtdCAqcGxhbm5lZHN0bXQsCisJCQkJQ2FjaGVkUGxhbiAqY3BsYW4sCiAJCQkJY29uc3Qg Y2hhciAqc291cmNlVGV4dCwKIAkJCQlTbmFwc2hvdCBzbmFwc2hvdCwKIAkJCQlTbmFwc2hvdCBj cm9zc2NoZWNrX3NuYXBzaG90LApAQCAtNzcsNiArNzMsNyBAQCBDcmVhdGVRdWVyeURlc2MoUGxh bm5lZFN0bXQgKnBsYW5uZWRzdG10LAogCiAJcWQtPm9wZXJhdGlvbiA9IHBsYW5uZWRzdG10LT5j b21tYW5kVHlwZTsJLyogb3BlcmF0aW9uICovCiAJcWQtPnBsYW5uZWRzdG10ID0gcGxhbm5lZHN0 bXQ7CS8qIHBsYW4gKi8KKwlxZC0+Y3BsYW4gPSBjcGxhbjsJCQkJLyogQ2FjaGVkUGxhbiwgaWYg cGxhbiBpcyBmcm9tIG9uZSAqLwogCXFkLT5zb3VyY2VUZXh0ID0gc291cmNlVGV4dDsJLyogcXVl cnkgdGV4dCAqLwogCXFkLT5zbmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3Qoc25hcHNob3QpOwkv KiBzbmFwc2hvdCAqLwogCS8qIFJJIGNoZWNrIHNuYXBzaG90ICovCkBAIC0xMTYsODYgKzExMyw2 IEBAIEZyZWVRdWVyeURlc2MoUXVlcnlEZXNjICpxZGVzYykKIH0KIAogCi0vKgotICogUHJvY2Vz c1F1ZXJ5Ci0gKgkJRXhlY3V0ZSBhIHNpbmdsZSBwbGFubmFibGUgcXVlcnkgd2l0aGluIGEgUE9S VEFMX01VTFRJX1FVRVJZLAotICoJCVBPUlRBTF9PTkVfUkVUVVJOSU5HLCBvciBQT1JUQUxfT05F X01PRF9XSVRIIHBvcnRhbAotICoKLSAqCXBsYW46IHRoZSBwbGFuIHRyZWUgZm9yIHRoZSBxdWVy eQotICoJc291cmNlVGV4dDogdGhlIHNvdXJjZSB0ZXh0IG9mIHRoZSBxdWVyeQotICoJcGFyYW1z OiBhbnkgcGFyYW1ldGVycyBuZWVkZWQKLSAqCWRlc3Q6IHdoZXJlIHRvIHNlbmQgcmVzdWx0cwot ICoJcWM6IHdoZXJlIHRvIHN0b3JlIHRoZSBjb21tYW5kIGNvbXBsZXRpb24gc3RhdHVzIGRhdGEu Ci0gKgotICogcWMgbWF5IGJlIE5VTEwgaWYgY2FsbGVyIGRvZXNuJ3Qgd2FudCBhIHN0YXR1cyBz dHJpbmcuCi0gKgotICogTXVzdCBiZSBjYWxsZWQgaW4gYSBtZW1vcnkgY29udGV4dCB0aGF0IHdp bGwgYmUgcmVzZXQgb3IgZGVsZXRlZCBvbgotICogZXJyb3I7IG90aGVyd2lzZSB0aGUgZXhlY3V0 b3IncyBtZW1vcnkgdXNhZ2Ugd2lsbCBiZSBsZWFrZWQuCi0gKi8KLXN0YXRpYyB2b2lkCi1Qcm9j ZXNzUXVlcnkoUGxhbm5lZFN0bXQgKnBsYW4sCi0JCQkgY29uc3QgY2hhciAqc291cmNlVGV4dCwK LQkJCSBQYXJhbUxpc3RJbmZvIHBhcmFtcywKLQkJCSBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVu diwKLQkJCSBEZXN0UmVjZWl2ZXIgKmRlc3QsCi0JCQkgUXVlcnlDb21wbGV0aW9uICpxYykKLXsK LQlRdWVyeURlc2MgICpxdWVyeURlc2M7Ci0KLQkvKgotCSAqIENyZWF0ZSB0aGUgUXVlcnlEZXNj IG9iamVjdAotCSAqLwotCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFuLCBzb3VyY2VU ZXh0LAotCQkJCQkJCQlHZXRBY3RpdmVTbmFwc2hvdCgpLCBJbnZhbGlkU25hcHNob3QsCi0JCQkJ CQkJCWRlc3QsIHBhcmFtcywgcXVlcnlFbnYsIDApOwotCi0JLyoKLQkgKiBDYWxsIEV4ZWN1dG9y U3RhcnQgdG8gcHJlcGFyZSB0aGUgcGxhbiBmb3IgZXhlY3V0aW9uCi0JICovCi0JRXhlY3V0b3JT dGFydChxdWVyeURlc2MsIDApOwotCi0JLyoKLQkgKiBSdW4gdGhlIHBsYW4gdG8gY29tcGxldGlv bi4KLQkgKi8KLQlFeGVjdXRvclJ1bihxdWVyeURlc2MsIEZvcndhcmRTY2FuRGlyZWN0aW9uLCAw LCB0cnVlKTsKLQotCS8qCi0JICogQnVpbGQgY29tbWFuZCBjb21wbGV0aW9uIHN0YXR1cyBkYXRh LCBpZiBjYWxsZXIgd2FudHMgb25lLgotCSAqLwotCWlmIChxYykKLQl7Ci0JCXN3aXRjaCAocXVl cnlEZXNjLT5vcGVyYXRpb24pCi0JCXsKLQkJCWNhc2UgQ01EX1NFTEVDVDoKLQkJCQlTZXRRdWVy eUNvbXBsZXRpb24ocWMsIENNRFRBR19TRUxFQ1QsIHF1ZXJ5RGVzYy0+ZXN0YXRlLT5lc19wcm9j ZXNzZWQpOwotCQkJCWJyZWFrOwotCQkJY2FzZSBDTURfSU5TRVJUOgotCQkJCVNldFF1ZXJ5Q29t cGxldGlvbihxYywgQ01EVEFHX0lOU0VSVCwgcXVlcnlEZXNjLT5lc3RhdGUtPmVzX3Byb2Nlc3Nl ZCk7Ci0JCQkJYnJlYWs7Ci0JCQljYXNlIENNRF9VUERBVEU6Ci0JCQkJU2V0UXVlcnlDb21wbGV0 aW9uKHFjLCBDTURUQUdfVVBEQVRFLCBxdWVyeURlc2MtPmVzdGF0ZS0+ZXNfcHJvY2Vzc2VkKTsK LQkJCQlicmVhazsKLQkJCWNhc2UgQ01EX0RFTEVURToKLQkJCQlTZXRRdWVyeUNvbXBsZXRpb24o cWMsIENNRFRBR19ERUxFVEUsIHF1ZXJ5RGVzYy0+ZXN0YXRlLT5lc19wcm9jZXNzZWQpOwotCQkJ CWJyZWFrOwotCQkJY2FzZSBDTURfTUVSR0U6Ci0JCQkJU2V0UXVlcnlDb21wbGV0aW9uKHFjLCBD TURUQUdfTUVSR0UsIHF1ZXJ5RGVzYy0+ZXN0YXRlLT5lc19wcm9jZXNzZWQpOwotCQkJCWJyZWFr OwotCQkJZGVmYXVsdDoKLQkJCQlTZXRRdWVyeUNvbXBsZXRpb24ocWMsIENNRFRBR19VTktOT1dO LCBxdWVyeURlc2MtPmVzdGF0ZS0+ZXNfcHJvY2Vzc2VkKTsKLQkJCQlicmVhazsKLQkJfQotCX0K LQotCS8qCi0JICogTm93LCB3ZSBjbG9zZSBkb3duIGFsbCB0aGUgc2NhbnMgYW5kIGZyZWUgYWxs b2NhdGVkIHJlc291cmNlcy4KLQkgKi8KLQlFeGVjdXRvckZpbmlzaChxdWVyeURlc2MpOwotCUV4 ZWN1dG9yRW5kKHF1ZXJ5RGVzYyk7Ci0KLQlGcmVlUXVlcnlEZXNjKHF1ZXJ5RGVzYyk7Ci19Ci0K IC8qCiAgKiBDaG9vc2VQb3J0YWxTdHJhdGVneQogICoJCVNlbGVjdCBwb3J0YWwgZXhlY3V0aW9u IHN0cmF0ZWd5IGdpdmVuIHRoZSBpbnRlbmRlZCBzdGF0ZW1lbnQgbGlzdC4KQEAgLTQyNyw3ICsz NDQsOCBAQCBGZXRjaFN0YXRlbWVudFRhcmdldExpc3QoTm9kZSAqc3RtdCkKICAqIHRvIGJlIHVz ZWQgZm9yIGN1cnNvcnMpLgogICoKICAqIE9uIHJldHVybiwgcG9ydGFsIGlzIHJlYWR5IHRvIGFj Y2VwdCBQb3J0YWxSdW4oKSBjYWxscywgYW5kIHRoZSByZXN1bHQKLSAqIHR1cGRlc2MgKGlmIGFu eSkgaXMga25vd24uCisgKiB0dXBkZXNjIChpZiBhbnkpIGlzIGtub3duLCB1bmxlc3MgcG9ydGFs LT5wbGFuX3ZhbGlkIGlzIHNldCB0byBmYWxzZSwgaW4KKyAqIHdoaWNoIGNhc2UsIHRoZSBjYWxs ZXIgbXVzdCByZXRyeSBhZnRlciBnZW5lcmF0aW5nIGEgbmV3IENhY2hlZFBsYW4uCiAgKi8KIHZv aWQKIFBvcnRhbFN0YXJ0KFBvcnRhbCBwb3J0YWwsIFBhcmFtTGlzdEluZm8gcGFyYW1zLApAQCAt NDM1LDEwICszNTMsOSBAQCBQb3J0YWxTdGFydChQb3J0YWwgcG9ydGFsLCBQYXJhbUxpc3RJbmZv IHBhcmFtcywKIHsKIAlQb3J0YWwJCXNhdmVBY3RpdmVQb3J0YWw7CiAJUmVzb3VyY2VPd25lciBz YXZlUmVzb3VyY2VPd25lcjsKLQlNZW1vcnlDb250ZXh0IHNhdmVQb3J0YWxDb250ZXh0OwogCU1l bW9yeUNvbnRleHQgb2xkQ29udGV4dDsKIAlRdWVyeURlc2MgICpxdWVyeURlc2M7Ci0JaW50CQkJ bXllZmxhZ3M7CisJaW50CQkJbXllZmxhZ3MgPSAwOwogCiAJQXNzZXJ0KFBvcnRhbElzVmFsaWQo cG9ydGFsKSk7CiAJQXNzZXJ0KHBvcnRhbC0+c3RhdHVzID09IFBPUlRBTF9ERUZJTkVEKTsKQEAg LTQ0OCwxNSArMzY1LDEzIEBAIFBvcnRhbFN0YXJ0KFBvcnRhbCBwb3J0YWwsIFBhcmFtTGlzdElu Zm8gcGFyYW1zLAogCSAqLwogCXNhdmVBY3RpdmVQb3J0YWwgPSBBY3RpdmVQb3J0YWw7CiAJc2F2 ZVJlc291cmNlT3duZXIgPSBDdXJyZW50UmVzb3VyY2VPd25lcjsKLQlzYXZlUG9ydGFsQ29udGV4 dCA9IFBvcnRhbENvbnRleHQ7CiAJUEdfVFJZKCk7CiAJewogCQlBY3RpdmVQb3J0YWwgPSBwb3J0 YWw7CiAJCWlmIChwb3J0YWwtPnJlc293bmVyKQogCQkJQ3VycmVudFJlc291cmNlT3duZXIgPSBw b3J0YWwtPnJlc293bmVyOwotCQlQb3J0YWxDb250ZXh0ID0gcG9ydGFsLT5wb3J0YWxDb250ZXh0 OwogCi0JCW9sZENvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oUG9ydGFsQ29udGV4dCk7 CisJCW9sZENvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8ocG9ydGFsLT5xdWVyeUNvbnRl eHQpOwogCiAJCS8qIE11c3QgcmVtZW1iZXIgcG9ydGFsIHBhcmFtIGxpc3QsIGlmIGFueSAqLwog CQlwb3J0YWwtPnBvcnRhbFBhcmFtcyA9IHBhcmFtczsKQEAgLTQ3Miw2ICszODcsOCBAQCBQb3J0 YWxTdGFydChQb3J0YWwgcG9ydGFsLCBQYXJhbUxpc3RJbmZvIHBhcmFtcywKIAkJc3dpdGNoIChw b3J0YWwtPnN0cmF0ZWd5KQogCQl7CiAJCQljYXNlIFBPUlRBTF9PTkVfU0VMRUNUOgorCQkJY2Fz ZSBQT1JUQUxfT05FX1JFVFVSTklORzoKKwkJCWNhc2UgUE9SVEFMX09ORV9NT0RfV0lUSDoKIAog CQkJCS8qIE11c3Qgc2V0IHNuYXBzaG90IGJlZm9yZSBzdGFydGluZyBleGVjdXRvci4gKi8KIAkJ CQlpZiAoc25hcHNob3QpCkBAIC00OTMsNiArNDEwLDcgQEAgUG9ydGFsU3RhcnQoUG9ydGFsIHBv cnRhbCwgUGFyYW1MaXN0SW5mbyBwYXJhbXMsCiAJCQkJICogdGhlIGRlc3RpbmF0aW9uIHRvIERl c3ROb25lLgogCQkJCSAqLwogCQkJCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhsaW5pdGlh bF9ub2RlKFBsYW5uZWRTdG10LCBwb3J0YWwtPnN0bXRzKSwKKwkJCQkJCQkJCQkJcG9ydGFsLT5j cGxhbiwKIAkJCQkJCQkJCQkJcG9ydGFsLT5zb3VyY2VUZXh0LAogCQkJCQkJCQkJCQlHZXRBY3Rp dmVTbmFwc2hvdCgpLAogCQkJCQkJCQkJCQlJbnZhbGlkU25hcHNob3QsCkBAIC01MDEsMzAgKzQx OSw1MiBAQCBQb3J0YWxTdGFydChQb3J0YWwgcG9ydGFsLCBQYXJhbUxpc3RJbmZvIHBhcmFtcywK IAkJCQkJCQkJCQkJcG9ydGFsLT5xdWVyeUVudiwKIAkJCQkJCQkJCQkJMCk7CiAKKwkJCQkvKiBS ZW1lbWJlciBmb3IgUG9ydGFsUnVuTXVsdGkoKS4gKi8KKwkJCQlpZiAocG9ydGFsLT5zdHJhdGVn eSA9PSBQT1JUQUxfT05FX1JFVFVSTklORyB8fAorCQkJCQlwb3J0YWwtPnN0cmF0ZWd5ID09IFBP UlRBTF9PTkVfTU9EX1dJVEgpCisJCQkJCXBvcnRhbC0+cWRlc2NzID0gbGlzdF9tYWtlMShxdWVy eURlc2MpOworCiAJCQkJLyoKIAkJCQkgKiBJZiBpdCdzIGEgc2Nyb2xsYWJsZSBjdXJzb3IsIGV4 ZWN1dG9yIG5lZWRzIHRvIHN1cHBvcnQKIAkJCQkgKiBSRVdJTkQgYW5kIGJhY2t3YXJkcyBzY2Fu LCBhcyB3ZWxsIGFzIHdoYXRldmVyIHRoZSBjYWxsZXIKIAkJCQkgKiBtaWdodCd2ZSBhc2tlZCBm b3IuCiAJCQkJICovCi0JCQkJaWYgKHBvcnRhbC0+Y3Vyc29yT3B0aW9ucyAmIENVUlNPUl9PUFRf U0NST0xMKQorCQkJCWlmIChwb3J0YWwtPnN0cmF0ZWd5ID09IFBPUlRBTF9PTkVfU0VMRUNUICYm CisJCQkJCShwb3J0YWwtPmN1cnNvck9wdGlvbnMgJiBDVVJTT1JfT1BUX1NDUk9MTCkpCiAJCQkJ CW15ZWZsYWdzID0gZWZsYWdzIHwgRVhFQ19GTEFHX1JFV0lORCB8IEVYRUNfRkxBR19CQUNLV0FS RDsKIAkJCQllbHNlCiAJCQkJCW15ZWZsYWdzID0gZWZsYWdzOwogCiAJCQkJLyoKLQkJCQkgKiBD YWxsIEV4ZWN1dG9yU3RhcnQgdG8gcHJlcGFyZSB0aGUgcGxhbiBmb3IgZXhlY3V0aW9uCisJCQkJ ICogQ2FsbCBFeGVjdXRvclN0YXJ0IHRvIHByZXBhcmUgdGhlIHBsYW4gZm9yIGV4ZWN1dGlvbi4g IEEKKwkJCQkgKiBjYWNoZWQgcGxhbiBtYXkgZ2V0IGludmFsaWRhdGVkIGFzIHdlJ3JlIGRvaW5n IHRoYXQuCiAJCQkJICovCiAJCQkJRXhlY3V0b3JTdGFydChxdWVyeURlc2MsIG15ZWZsYWdzKTsK KwkJCQlpZiAoIXF1ZXJ5RGVzYy0+cGxhbl92YWxpZCkKKwkJCQl7CisJCQkJCUFzc2VydChxdWVy eURlc2MtPmNwbGFuKTsKKwkJCQkJUG9ydGFsUXVlcnlGaW5pc2gocXVlcnlEZXNjKTsKKwkJCQkJ UG9wQWN0aXZlU25hcHNob3QoKTsKKwkJCQkJcG9ydGFsLT5wbGFuX3ZhbGlkID0gZmFsc2U7CisJ CQkJCWdvdG8gZWFybHlfZXhpdDsKKwkJCQl9CiAKIAkJCQkvKgotCQkJCSAqIFRoaXMgdGVsbHMg UG9ydGFsQ2xlYW51cCB0byBzaHV0IGRvd24gdGhlIGV4ZWN1dG9yCisJCQkJICogVGhpcyB0ZWxs cyBQb3J0YWxDbGVhbnVwIHRvIHNodXQgZG93biB0aGUgZXhlY3V0b3IsIHRob3VnaAorCQkJCSAq IG5vdCBuZWVkZWQgZm9yIHF1ZXJpZXMgaGFuZGxlZCBieSBQb3J0YWxSdW5NdWx0aSgpLgogCQkJ CSAqLwotCQkJCXBvcnRhbC0+cXVlcnlEZXNjID0gcXVlcnlEZXNjOworCQkJCWlmIChwb3J0YWwt PnN0cmF0ZWd5ID09IFBPUlRBTF9PTkVfU0VMRUNUKQorCQkJCQlwb3J0YWwtPnF1ZXJ5RGVzYyA9 IHF1ZXJ5RGVzYzsKIAogCQkJCS8qCi0JCQkJICogUmVtZW1iZXIgdHVwbGUgZGVzY3JpcHRvciAo Y29tcHV0ZWQgYnkgRXhlY3V0b3JTdGFydCkKKwkJCQkgKiBSZW1lbWJlciB0dXBsZSBkZXNjcmlw dG9yIChjb21wdXRlZCBieSBFeGVjdXRvclN0YXJ0KSwKKwkJCQkgKiB0aG91Z2ggbWFrZSBpdCBp bmRlcGVuZGVudCBvZiBRdWVyeURlc2MgZm9yIHF1ZXJpZXMgaGFuZGxlZAorCQkJCSAqIGJ5IFBv cnRhbFJ1bk11bHRpKCkuCiAJCQkJICovCi0JCQkJcG9ydGFsLT50dXBEZXNjID0gcXVlcnlEZXNj LT50dXBEZXNjOworCQkJCWlmIChwb3J0YWwtPnN0cmF0ZWd5ICE9IFBPUlRBTF9PTkVfU0VMRUNU KQorCQkJCQlwb3J0YWwtPnR1cERlc2MgPSBDcmVhdGVUdXBsZURlc2NDb3B5KHF1ZXJ5RGVzYy0+ dHVwRGVzYyk7CisJCQkJZWxzZQorCQkJCQlwb3J0YWwtPnR1cERlc2MgPSBxdWVyeURlc2MtPnR1 cERlc2M7CiAKIAkJCQkvKgogCQkJCSAqIFJlc2V0IGN1cnNvciBwb3NpdGlvbiBkYXRhIHRvICJz dGFydCBvZiBxdWVyeSIKQEAgLTUzMiwzMyArNDcyLDExIEBAIFBvcnRhbFN0YXJ0KFBvcnRhbCBw b3J0YWwsIFBhcmFtTGlzdEluZm8gcGFyYW1zLAogCQkJCXBvcnRhbC0+YXRTdGFydCA9IHRydWU7 CiAJCQkJcG9ydGFsLT5hdEVuZCA9IGZhbHNlOwkvKiBhbGxvdyBmZXRjaGVzICovCiAJCQkJcG9y dGFsLT5wb3J0YWxQb3MgPSAwOworCQkJCXBvcnRhbC0+cGxhbl92YWxpZCA9IHRydWU7CiAKIAkJ CQlQb3BBY3RpdmVTbmFwc2hvdCgpOwogCQkJCWJyZWFrOwogCi0JCQljYXNlIFBPUlRBTF9PTkVf UkVUVVJOSU5HOgotCQkJY2FzZSBQT1JUQUxfT05FX01PRF9XSVRIOgotCi0JCQkJLyoKLQkJCQkg KiBXZSBkb24ndCBzdGFydCB0aGUgZXhlY3V0b3IgdW50aWwgd2UgYXJlIHRvbGQgdG8gcnVuIHRo ZQotCQkJCSAqIHBvcnRhbC4gIFdlIGRvIG5lZWQgdG8gc2V0IHVwIHRoZSByZXN1bHQgdHVwZGVz Yy4KLQkJCQkgKi8KLQkJCQl7Ci0JCQkJCVBsYW5uZWRTdG10ICpwc3RtdDsKLQotCQkJCQlwc3Rt dCA9IFBvcnRhbEdldFByaW1hcnlTdG10KHBvcnRhbCk7Ci0JCQkJCXBvcnRhbC0+dHVwRGVzYyA9 Ci0JCQkJCQlFeGVjQ2xlYW5UeXBlRnJvbVRMKHBzdG10LT5wbGFuVHJlZS0+dGFyZ2V0bGlzdCk7 Ci0JCQkJfQotCi0JCQkJLyoKLQkJCQkgKiBSZXNldCBjdXJzb3IgcG9zaXRpb24gZGF0YSB0byAi c3RhcnQgb2YgcXVlcnkiCi0JCQkJICovCi0JCQkJcG9ydGFsLT5hdFN0YXJ0ID0gdHJ1ZTsKLQkJ CQlwb3J0YWwtPmF0RW5kID0gZmFsc2U7CS8qIGFsbG93IGZldGNoZXMgKi8KLQkJCQlwb3J0YWwt PnBvcnRhbFBvcyA9IDA7Ci0JCQkJYnJlYWs7Ci0KIAkJCWNhc2UgUE9SVEFMX1VUSUxfU0VMRUNU OgogCiAJCQkJLyoKQEAgLTU3OCwxMSArNDk2LDg3IEBAIFBvcnRhbFN0YXJ0KFBvcnRhbCBwb3J0 YWwsIFBhcmFtTGlzdEluZm8gcGFyYW1zLAogCQkJCXBvcnRhbC0+YXRTdGFydCA9IHRydWU7CiAJ CQkJcG9ydGFsLT5hdEVuZCA9IGZhbHNlOwkvKiBhbGxvdyBmZXRjaGVzICovCiAJCQkJcG9ydGFs LT5wb3J0YWxQb3MgPSAwOworCQkJCXBvcnRhbC0+cGxhbl92YWxpZCA9IHRydWU7CiAJCQkJYnJl YWs7CiAKIAkJCWNhc2UgUE9SVEFMX01VTFRJX1FVRVJZOgotCQkJCS8qIE5lZWQgZG8gbm90aGlu ZyBub3cgKi8KKwkJCQl7CisJCQkJCUxpc3RDZWxsICAgKmxjOworCQkJCQlib29sCQlmaXJzdCA9 IHRydWU7CisKKwkJCQkJbXllZmxhZ3MgPSBlZmxhZ3M7CisJCQkJCWZvcmVhY2gobGMsIHBvcnRh bC0+c3RtdHMpCisJCQkJCXsKKwkJCQkJCVBsYW5uZWRTdG10ICpwbGFuID0gbGZpcnN0X25vZGUo UGxhbm5lZFN0bXQsIGxjKTsKKwkJCQkJCWJvb2wJCWlzX3V0aWxpdHkgPSAocGxhbi0+dXRpbGl0 eVN0bXQgIT0gTlVMTCk7CisKKwkJCQkJCS8qCisJCQkJCQkgKiBQdXNoIHRoZSBzbmFwc2hvdCB0 byBiZSB1c2VkIGJ5IHRoZSBleGVjdXRvci4KKwkJCQkJCSAqLworCQkJCQkJaWYgKCFpc191dGls aXR5KQorCQkJCQkJeworCQkJCQkJCS8qCisJCQkJCQkJICogTXVzdCBjb3B5IHRoZSBzbmFwc2hv dCBmb3IgYWxsIHN0YXRlbWVudHMKKwkJCQkJCQkgKiBleGNlcHQgdGhlYyBmaXJzdCBhcyB3ZSds bCBuZWVkIHRvIHVwZGF0ZSBpdHMKKwkJCQkJCQkgKiBjb21tYW5kIElELgorCQkJCQkJCSAqLwor CQkJCQkJCWlmICghZmlyc3QpCisJCQkJCQkJCVB1c2hDb3BpZWRTbmFwc2hvdChHZXRUcmFuc2Fj dGlvblNuYXBzaG90KCkpOworCQkJCQkJCWVsc2UKKwkJCQkJCQkJUHVzaEFjdGl2ZVNuYXBzaG90 KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CisJCQkJCQl9CisKKwkJCQkJCS8qCisJCQkJCQkg KiBGcm9tIHRoZSAybmQgc3RhdGVtZW50IG9ud2FyZHMsIHVwZGF0ZSB0aGUgY29tbWFuZAorCQkJ CQkJICogSUQgYW5kIHRoZSBzbmFwc2hvdCB0byBtYXRjaC4KKwkJCQkJCSAqLworCQkJCQkJaWYg KCFmaXJzdCkKKwkJCQkJCXsKKwkJCQkJCQlDb21tYW5kQ291bnRlckluY3JlbWVudCgpOworCQkJ CQkJCVVwZGF0ZUFjdGl2ZVNuYXBzaG90Q29tbWFuZElkKCk7CisJCQkJCQl9CisKKwkJCQkJCWZp cnN0ID0gZmFsc2U7CisKKwkJCQkJCS8qCisJCQkJCQkgKiBDcmVhdGUgdGhlIFF1ZXJ5RGVzYyBv YmplY3QuICBEZXN0UmVjZWl2ZXIgd2lsbAorCQkJCQkJICogYmUgc2V0IGluIFBvcnRhbFJ1bk11 bHRpKCkuCisJCQkJCQkgKi8KKwkJCQkJCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFu LCBwb3J0YWwtPmNwbGFuLAorCQkJCQkJCQkJCQkJCXBvcnRhbC0+c291cmNlVGV4dCwKKwkJCQkJ CQkJCQkJCQkhaXNfdXRpbGl0eSA/CisJCQkJCQkJCQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSA6 CisJCQkJCQkJCQkJCQkJSW52YWxpZFNuYXBzaG90LAorCQkJCQkJCQkJCQkJCUludmFsaWRTbmFw c2hvdCwKKwkJCQkJCQkJCQkJCQlOVUxMLAorCQkJCQkJCQkJCQkJCXBhcmFtcywKKwkJCQkJCQkJ CQkJCQlwb3J0YWwtPnF1ZXJ5RW52LCAwKTsKKworCQkJCQkJLyogUmVtZW1iZXIgZm9yIFBvcnRh bFJ1bk11bHRpKCkgKi8KKwkJCQkJCXBvcnRhbC0+cWRlc2NzID0gbGFwcGVuZChwb3J0YWwtPnFk ZXNjcywgcXVlcnlEZXNjKTsKKworCQkJCQkJaWYgKGlzX3V0aWxpdHkpCisJCQkJCQkJY29udGlu dWU7CisKKwkJCQkJCS8qCisJCQkJCQkgKiBDYWxsIEV4ZWN1dG9yU3RhcnQgdG8gcHJlcGFyZSB0 aGUgcGxhbiBmb3IKKwkJCQkJCSAqIGV4ZWN1dGlvbi4gIEEgY2FjaGVkIHBsYW4gbWF5IGdldCBp bnZhbGlkYXRlZCBhcworCQkJCQkJICogd2UncmUgZG9pbmcgdGhhdC4KKwkJCQkJCSAqLworCQkJ CQkJRXhlY3V0b3JTdGFydChxdWVyeURlc2MsIG15ZWZsYWdzKTsKKwkJCQkJCVBvcEFjdGl2ZVNu YXBzaG90KCk7CisJCQkJCQlpZiAoIXF1ZXJ5RGVzYy0+cGxhbl92YWxpZCkKKwkJCQkJCXsKKwkJ CQkJCQlBc3NlcnQocXVlcnlEZXNjLT5jcGxhbik7CisJCQkJCQkJUG9ydGFsUXVlcnlGaW5pc2go cXVlcnlEZXNjKTsKKwkJCQkJCQlwb3J0YWwtPnBsYW5fdmFsaWQgPSBmYWxzZTsKKwkJCQkJCQln b3RvIGVhcmx5X2V4aXQ7CisJCQkJCQl9CisJCQkJCX0KKwkJCQl9CisKIAkJCQlwb3J0YWwtPnR1 cERlc2MgPSBOVUxMOworCQkJCXBvcnRhbC0+cGxhbl92YWxpZCA9IHRydWU7CiAJCQkJYnJlYWs7 CiAJCX0KIAl9CkBAIC01OTQsMTkgKzU4OCwxOCBAQCBQb3J0YWxTdGFydChQb3J0YWwgcG9ydGFs LCBQYXJhbUxpc3RJbmZvIHBhcmFtcywKIAkJLyogUmVzdG9yZSBnbG9iYWwgdmFycyBhbmQgcHJv cGFnYXRlIGVycm9yICovCiAJCUFjdGl2ZVBvcnRhbCA9IHNhdmVBY3RpdmVQb3J0YWw7CiAJCUN1 cnJlbnRSZXNvdXJjZU93bmVyID0gc2F2ZVJlc291cmNlT3duZXI7Ci0JCVBvcnRhbENvbnRleHQg PSBzYXZlUG9ydGFsQ29udGV4dDsKIAogCQlQR19SRV9USFJPVygpOwogCX0KIAlQR19FTkRfVFJZ KCk7CiAKKwlwb3J0YWwtPnN0YXR1cyA9IFBPUlRBTF9SRUFEWTsKKworZWFybHlfZXhpdDoKIAlN ZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkQ29udGV4dCk7CiAKIAlBY3RpdmVQb3J0YWwgPSBzYXZl QWN0aXZlUG9ydGFsOwogCUN1cnJlbnRSZXNvdXJjZU93bmVyID0gc2F2ZVJlc291cmNlT3duZXI7 Ci0JUG9ydGFsQ29udGV4dCA9IHNhdmVQb3J0YWxDb250ZXh0OwotCi0JcG9ydGFsLT5zdGF0dXMg PSBQT1JUQUxfUkVBRFk7CiB9CiAKIC8qCkBAIC0xMTkzLDcgKzExODYsNyBAQCBQb3J0YWxSdW5N dWx0aShQb3J0YWwgcG9ydGFsLAogCQkJICAgUXVlcnlDb21wbGV0aW9uICpxYykKIHsKIAlib29s CQlhY3RpdmVfc25hcHNob3Rfc2V0ID0gZmFsc2U7Ci0JTGlzdENlbGwgICAqc3RtdGxpc3RfaXRl bTsKKwlMaXN0Q2VsbCAgICpxZGVzY19pdGVtOwogCiAJLyoKIAkgKiBJZiB0aGUgZGVzdGluYXRp b24gaXMgRGVzdFJlbW90ZUV4ZWN1dGUsIGNoYW5nZSB0byBEZXN0Tm9uZS4gIFRoZQpAQCAtMTIx NCw5ICsxMjA3LDEwIEBAIFBvcnRhbFJ1bk11bHRpKFBvcnRhbCBwb3J0YWwsCiAJICogTG9vcCB0 byBoYW5kbGUgdGhlIGluZGl2aWR1YWwgcXVlcmllcyBnZW5lcmF0ZWQgZnJvbSBhIHNpbmdsZSBw YXJzZXRyZWUKIAkgKiBieSBhbmFseXNpcyBhbmQgcmV3cml0ZS4KIAkgKi8KLQlmb3JlYWNoKHN0 bXRsaXN0X2l0ZW0sIHBvcnRhbC0+c3RtdHMpCisJZm9yZWFjaChxZGVzY19pdGVtLCBwb3J0YWwt PnFkZXNjcykKIAl7Ci0JCVBsYW5uZWRTdG10ICpwc3RtdCA9IGxmaXJzdF9ub2RlKFBsYW5uZWRT dG10LCBzdG10bGlzdF9pdGVtKTsKKwkJUXVlcnlEZXNjICpxZGVzYyA9IChRdWVyeURlc2MgKikg bGZpcnN0KHFkZXNjX2l0ZW0pOworCQlQbGFubmVkU3RtdCAqcHN0bXQgPSBxZGVzYy0+cGxhbm5l ZHN0bXQ7CiAKIAkJLyoKIAkJICogSWYgd2UgZ290IGEgY2FuY2VsIHNpZ25hbCBpbiBwcmlvciBj b21tYW5kLCBxdWl0CkBAIC0xMjMzLDMzICsxMjI3LDI2IEBAIFBvcnRhbFJ1bk11bHRpKFBvcnRh bCBwb3J0YWwsCiAJCQlpZiAobG9nX2V4ZWN1dG9yX3N0YXRzKQogCQkJCVJlc2V0VXNhZ2UoKTsK IAotCQkJLyoKLQkJCSAqIE11c3QgYWx3YXlzIGhhdmUgYSBzbmFwc2hvdCBmb3IgcGxhbm5hYmxl IHF1ZXJpZXMuICBGaXJzdCB0aW1lCi0JCQkgKiB0aHJvdWdoLCB0YWtlIGEgbmV3IHNuYXBzaG90 OyBmb3Igc3Vic2VxdWVudCBxdWVyaWVzIGluIHRoZQotCQkJICogc2FtZSBwb3J0YWwsIGp1c3Qg dXBkYXRlIHRoZSBzbmFwc2hvdCdzIGNvcHkgb2YgdGhlIGNvbW1hbmQKLQkJCSAqIGNvdW50ZXIu Ci0JCQkgKi8KKwkJCS8qIFB1c2ggdGhlIHNuYXBzaG90IGZvciBwbGFubmFibGUgcXVlcmllcy4g Ki8KIAkJCWlmICghYWN0aXZlX3NuYXBzaG90X3NldCkKIAkJCXsKLQkJCQlTbmFwc2hvdAlzbmFw c2hvdCA9IEdldFRyYW5zYWN0aW9uU25hcHNob3QoKTsKKwkJCQlTbmFwc2hvdAlzbmFwc2hvdCA9 IHFkZXNjLT5zbmFwc2hvdDsKIAotCQkJCS8qIElmIHRvbGQgdG8sIHJlZ2lzdGVyIHRoZSBzbmFw c2hvdCBhbmQgc2F2ZSBpbiBwb3J0YWwgKi8KKwkJCQkvKgorCQkJCSAqIElmIHRvbGQgdG8sIHJl Z2lzdGVyIHRoZSBzbmFwc2hvdCBhbmQgc2F2ZSBpbiBwb3J0YWwKKwkJCQkgKgorCQkJCSAqIE5v dGUgdGhhdCB0aGUgY29tbWFuZCBJRCBvZiBxZGVzYy0+c25hcHNob3QgZm9yIDJuZCBxdWVyeQor CQkJCSAqIG9ud2FyZHMgd291bGQgaGF2ZSBiZWVuIHVwZGF0ZWQgaW4gUG9ydGFsU3RhcnQoKSB0 byBhY2NvdW50CisJCQkJICogZm9yIENDSSgpIGRvbmUgYmV0d2VlbiBxdWVyaWVzLCBidXQgaXQn cyBPSyB0aGF0IGhlcmUgd2UKKwkJCQkgKiBkb24ndCBsaWtld2lzZSB1cGRhdGUgaG9sZFNuYXBz aG90J3MgY29tbWFuZCBJRC4KKwkJCQkgKi8KIAkJCQlpZiAoc2V0SG9sZFNuYXBzaG90KQogCQkJ CXsKIAkJCQkJc25hcHNob3QgPSBSZWdpc3RlclNuYXBzaG90KHNuYXBzaG90KTsKIAkJCQkJcG9y dGFsLT5ob2xkU25hcHNob3QgPSBzbmFwc2hvdDsKIAkJCQl9CiAKLQkJCQkvKgotCQkJCSAqIFdl IGNhbid0IGhhdmUgdGhlIGhvbGRTbmFwc2hvdCBhbHNvIGJlIHRoZSBhY3RpdmUgb25lLAotCQkJ CSAqIGJlY2F1c2UgVXBkYXRlQWN0aXZlU25hcHNob3RDb21tYW5kSWQgd291bGQgY29tcGxhaW4u ICBTbwotCQkJCSAqIGZvcmNlIGFuIGV4dHJhIHNuYXBzaG90IGNvcHkuICBQbGFpbiBQdXNoQWN0 aXZlU25hcHNob3QKLQkJCQkgKiB3b3VsZCBoYXZlIGNvcGllZCB0aGUgdHJhbnNhY3Rpb24gc25h cHNob3QgYW55d2F5LCBzbyB0aGlzCi0JCQkJICogb25seSBhZGRzIGEgY29weSBzdGVwIHdoZW4g c2V0SG9sZFNuYXBzaG90IGlzIHRydWUuICAoSXQncwotCQkJCSAqIG9rYXkgZm9yIHRoZSBjb21t YW5kIElEIG9mIHRoZSBhY3RpdmUgc25hcHNob3QgdG8gZGl2ZXJnZQotCQkJCSAqIGZyb20gd2hh dCBob2xkU25hcHNob3QgaGFzLikKLQkJCQkgKi8KLQkJCQlQdXNoQ29waWVkU25hcHNob3Qoc25h cHNob3QpOworCQkJCVB1c2hBY3RpdmVTbmFwc2hvdChzbmFwc2hvdCk7CiAKIAkJCQkvKgogCQkJ CSAqIEFzIGZvciBQT1JUQUxfT05FX1NFTEVDVCBwb3J0YWxzLCBpdCBkb2VzIG5vdCBzZWVtCkBA IC0xMjY4LDI2ICsxMjU1LDM5IEBAIFBvcnRhbFJ1bk11bHRpKFBvcnRhbCBwb3J0YWwsCiAKIAkJ CQlhY3RpdmVfc25hcHNob3Rfc2V0ID0gdHJ1ZTsKIAkJCX0KLQkJCWVsc2UKLQkJCQlVcGRhdGVB Y3RpdmVTbmFwc2hvdENvbW1hbmRJZCgpOwogCisJCQkvKgorCQkJICogUnVuIHRoZSBwbGFuIHRv IGNvbXBsZXRpb24uCisJCQkgKi8KKwkJCXFkZXNjLT5kZXN0ID0gZGVzdDsKKwkJCUV4ZWN1dG9y UnVuKHFkZXNjLCBGb3J3YXJkU2NhbkRpcmVjdGlvbiwgMCwgdHJ1ZSk7CisKKwkJCS8qCisJCQkg KiBCdWlsZCBjb21tYW5kIGNvbXBsZXRpb24gc3RhdHVzIGRhdGEgaWYgbmVlZGVkLgorCQkJICov CiAJCQlpZiAocHN0bXQtPmNhblNldFRhZykKIAkJCXsKLQkJCQkvKiBzdGF0ZW1lbnQgY2FuIHNl dCB0YWcgc3RyaW5nICovCi0JCQkJUHJvY2Vzc1F1ZXJ5KHBzdG10LAotCQkJCQkJCSBwb3J0YWwt PnNvdXJjZVRleHQsCi0JCQkJCQkJIHBvcnRhbC0+cG9ydGFsUGFyYW1zLAotCQkJCQkJCSBwb3J0 YWwtPnF1ZXJ5RW52LAotCQkJCQkJCSBkZXN0LCBxYyk7Ci0JCQl9Ci0JCQllbHNlCi0JCQl7Ci0J CQkJLyogc3RtdCBhZGRlZCBieSByZXdyaXRlIGNhbm5vdCBzZXQgdGFnICovCi0JCQkJUHJvY2Vz c1F1ZXJ5KHBzdG10LAotCQkJCQkJCSBwb3J0YWwtPnNvdXJjZVRleHQsCi0JCQkJCQkJIHBvcnRh bC0+cG9ydGFsUGFyYW1zLAotCQkJCQkJCSBwb3J0YWwtPnF1ZXJ5RW52LAotCQkJCQkJCSBhbHRk ZXN0LCBOVUxMKTsKKwkJCQlzd2l0Y2ggKHFkZXNjLT5vcGVyYXRpb24pCisJCQkJeworCQkJCQlj YXNlIENNRF9TRUxFQ1Q6CisJCQkJCQlTZXRRdWVyeUNvbXBsZXRpb24ocWMsIENNRFRBR19TRUxF Q1QsIHFkZXNjLT5lc3RhdGUtPmVzX3Byb2Nlc3NlZCk7CisJCQkJCQlicmVhazsKKwkJCQkJY2Fz ZSBDTURfSU5TRVJUOgorCQkJCQkJU2V0UXVlcnlDb21wbGV0aW9uKHFjLCBDTURUQUdfSU5TRVJU LCBxZGVzYy0+ZXN0YXRlLT5lc19wcm9jZXNzZWQpOworCQkJCQkJYnJlYWs7CisJCQkJCWNhc2Ug Q01EX1VQREFURToKKwkJCQkJCVNldFF1ZXJ5Q29tcGxldGlvbihxYywgQ01EVEFHX1VQREFURSwg cWRlc2MtPmVzdGF0ZS0+ZXNfcHJvY2Vzc2VkKTsKKwkJCQkJCWJyZWFrOworCQkJCQljYXNlIENN RF9ERUxFVEU6CisJCQkJCQlTZXRRdWVyeUNvbXBsZXRpb24ocWMsIENNRFRBR19ERUxFVEUsIHFk ZXNjLT5lc3RhdGUtPmVzX3Byb2Nlc3NlZCk7CisJCQkJCQlicmVhazsKKwkJCQkJY2FzZSBDTURf TUVSR0U6CisJCQkJCQlTZXRRdWVyeUNvbXBsZXRpb24ocWMsIENNRFRBR19NRVJHRSwgcWRlc2Mt PmVzdGF0ZS0+ZXNfcHJvY2Vzc2VkKTsKKwkJCQkJCWJyZWFrOworCQkJCQlkZWZhdWx0OgorCQkJ CQkJU2V0UXVlcnlDb21wbGV0aW9uKHFjLCBDTURUQUdfVU5LTk9XTiwgcWRlc2MtPmVzdGF0ZS0+ ZXNfcHJvY2Vzc2VkKTsKKwkJCQkJCWJyZWFrOworCQkJCX0KIAkJCX0KIAogCQkJaWYgKGxvZ19l eGVjdXRvcl9zdGF0cykKQEAgLTEzNDIsMTIgKzEzNDIsMTIgQEAgUG9ydGFsUnVuTXVsdGkoUG9y dGFsIHBvcnRhbCwKIAkJaWYgKHBvcnRhbC0+c3RtdHMgPT0gTklMKQogCQkJYnJlYWs7CiAKLQkJ LyoKLQkJICogSW5jcmVtZW50IGNvbW1hbmQgY291bnRlciBiZXR3ZWVuIHF1ZXJpZXMsIGJ1dCBu b3QgYWZ0ZXIgdGhlIGxhc3QKLQkJICogb25lLgotCQkgKi8KLQkJaWYgKGxuZXh0KHBvcnRhbC0+ c3RtdHMsIHN0bXRsaXN0X2l0ZW0pICE9IE5VTEwpCi0JCQlDb21tYW5kQ291bnRlckluY3JlbWVu dCgpOworCQlpZiAocWRlc2MtPmVzdGF0ZSkKKwkJeworCQkJRXhlY3V0b3JGaW5pc2gocWRlc2Mp OworCQkJRXhlY3V0b3JFbmQocWRlc2MpOworCQl9CisJCUZyZWVRdWVyeURlc2MocWRlc2MpOwog CX0KIAogCS8qIFBvcCB0aGUgc25hcHNob3QgaWYgd2UgcHVzaGVkIG9uZS4gKi8KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRp bHMvY2FjaGUvbHN5c2NhY2hlLmMKaW5kZXggMmMwMWE4NmMyOS4uMmFkYjE1ODhhOSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMKKysrIGIvc3JjL2JhY2tl bmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMKQEAgLTIwOTUsNiArMjA5NSwyNyBAQCBnZXRfcmVs X3BlcnNpc3RlbmNlKE9pZCByZWxpZCkKIAlyZXR1cm4gcmVzdWx0OwogfQogCisvKgorICogZ2V0 X3JlbF9yZWxpc3NoYXJlZAorICoKKyAqCQlSZXR1cm5zIGlmIHRoZSBnaXZlbiByZWxhdGlvbiBp cyBzaGFyZWQgb3Igbm90CisgKi8KK2Jvb2wKK2dldF9yZWxfcmVsaXNzaGFyZWQoT2lkIHJlbGlk KQoreworCUhlYXBUdXBsZQl0cDsKKwlGb3JtX3BnX2NsYXNzIHJlbHR1cDsKKwlib29sCQlyZXN1 bHQ7CisKKwl0cCA9IFNlYXJjaFN5c0NhY2hlMShSRUxPSUQsIE9iamVjdElkR2V0RGF0dW0ocmVs aWQpKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHApKQorCQllbG9nKEVSUk9SLCAiY2FjaGUg bG9va3VwIGZhaWxlZCBmb3IgcmVsYXRpb24gJXUiLCByZWxpZCk7CisJcmVsdHVwID0gKEZvcm1f cGdfY2xhc3MpIEdFVFNUUlVDVCh0cCk7CisJcmVzdWx0ID0gcmVsdHVwLT5yZWxpc3NoYXJlZDsK KwlSZWxlYXNlU3lzQ2FjaGUodHApOworCisJcmV0dXJuIHJlc3VsdDsKK30KIAogLyoJCQkJLS0t LS0tLS0tLSBUUkFOU0ZPUk0gQ0FDSEUgLS0tLS0tLS0tLQkJCQkJCSAqLwogCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9wbGFuY2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxz L2NhY2hlL3BsYW5jYWNoZS5jCmluZGV4IDNkM2Y3YTliZWEuLmU2MjM3ZDcwYjMgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3BsYW5jYWNoZS5jCisrKyBiL3NyYy9iYWNrZW5k L3V0aWxzL2NhY2hlL3BsYW5jYWNoZS5jCkBAIC0xMDIsMTMgKzEwMiwxMyBAQCBzdGF0aWMgdm9p ZCBSZWxlYXNlR2VuZXJpY1BsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSk7CiBzdGF0 aWMgTGlzdCAqUmV2YWxpZGF0ZUNhY2hlZFF1ZXJ5KENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3Vy Y2UsCiAJCQkJCQkJCSAgIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52KTsKIHN0YXRpYyBib29s IENoZWNrQ2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlKTsKK3N0YXRpYyBi b29sIEdlbmVyaWNQbGFuSXNWYWxpZChDYWNoZWRQbGFuICpjcGxhbik7CiBzdGF0aWMgQ2FjaGVk UGxhbiAqQnVpbGRDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsIExpc3Qg KnFsaXN0LAogCQkJCQkJCQkgICBQYXJhbUxpc3RJbmZvIGJvdW5kUGFyYW1zLCBRdWVyeUVudmly b25tZW50ICpxdWVyeUVudik7CiBzdGF0aWMgYm9vbCBjaG9vc2VfY3VzdG9tX3BsYW4oQ2FjaGVk UGxhblNvdXJjZSAqcGxhbnNvdXJjZSwKIAkJCQkJCQkgICBQYXJhbUxpc3RJbmZvIGJvdW5kUGFy YW1zKTsKIHN0YXRpYyBkb3VibGUgY2FjaGVkX3BsYW5fY29zdChDYWNoZWRQbGFuICpwbGFuLCBi b29sIGluY2x1ZGVfcGxhbm5lcik7CiBzdGF0aWMgUXVlcnkgKlF1ZXJ5TGlzdEdldFByaW1hcnlT dG10KExpc3QgKnN0bXRzKTsKLXN0YXRpYyB2b2lkIEFjcXVpcmVFeGVjdXRvckxvY2tzKExpc3Qg KnN0bXRfbGlzdCwgYm9vbCBhY3F1aXJlKTsKIHN0YXRpYyB2b2lkIEFjcXVpcmVQbGFubmVyTG9j a3MoTGlzdCAqc3RtdF9saXN0LCBib29sIGFjcXVpcmUpOwogc3RhdGljIHZvaWQgU2NhblF1ZXJ5 Rm9yTG9ja3MoUXVlcnkgKnBhcnNldHJlZSwgYm9vbCBhY3F1aXJlKTsKIHN0YXRpYyBib29sIFNj YW5RdWVyeVdhbGtlcihOb2RlICpub2RlLCBib29sICphY3F1aXJlKTsKQEAgLTc5MCw4ICs3OTAs MTQgQEAgUmV2YWxpZGF0ZUNhY2hlZFF1ZXJ5KENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2Us CiAgKiBDYWxsZXIgbXVzdCBoYXZlIGFscmVhZHkgY2FsbGVkIFJldmFsaWRhdGVDYWNoZWRRdWVy eSB0byB2ZXJpZnkgdGhhdCB0aGUKICAqIHF1ZXJ5dHJlZSBpcyB1cCB0byBkYXRlLgogICoKLSAq IE9uIGEgInRydWUiIHJldHVybiwgd2UgaGF2ZSBhY3F1aXJlZCB0aGUgbG9ja3MgbmVlZGVkIHRv IHJ1biB0aGUgcGxhbi4KLSAqIChXZSBtdXN0IGRvIHRoaXMgZm9yIHRoZSAidHJ1ZSIgcmVzdWx0 IHRvIGJlIHJhY2UtY29uZGl0aW9uLWZyZWUuKQorICogTm90ZSB0aG91Z2ggdGhhdCBpZiB0aGUg cGxhbiBjb250YWlucyBhbnkgY2hpbGQgcmVsYXRpb25zIHRoYXQgd291bGQgaGF2ZQorICogYmVl biBhZGRlZCBieSB0aGUgcGxhbm5lciwgd2hpY2ggd291bGQgbm90IGhhdmUgYmVlbiBsb2NrZWQg eWV0IChiZWNhdXNlCisgKiBBY3F1aXJlUGxhbm5lckxvY2tzKCkgb25seSBsb2NrcyByZWxhdGlv bnMgdGhhdCB3b3VsZCBiZSBwcmVzZW50IGluIHRoZQorICogcmFuZ2UgdGFibGUgYmVmb3JlIGVu dGVyaW5nIHRoZSBwbGFubmVyKSwgdGhlIHBsYW4gY291bGQgZ28gc3RhbGUgYmVmb3JlCisgKiBp dCByZWFjaGVzIGV4ZWN1dGlvbiBpZiBhbnkgb2YgdGhvc2UgY2hpbGQgcmVsYXRpb25zIGdldCBt b2RpZmllZAorICogY29uY3VycmVudGx5LiAgVGhlIGV4ZWN1dG9yIG11c3QgY2hlY2sgdGhhdCB0 aGUgcGxhbiAoQ2FjaGVkUGxhbikgaXMgc3RpbGwKKyAqIHZhbGlkIGFmdGVyIHRha2luZyBhIGxv Y2sgb24gZWFjaCBvZiB0aGUgY2hpbGQgdGFibGVzLCBhbmQgaWYgaXQgaXMgbm90LAorICogYXNr IHRoZSBjYWxsZXIgdG8gcmVjcmVhdGUgdGhlIHBsYW4uCiAgKi8KIHN0YXRpYyBib29sCiBDaGVj a0NhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSkKQEAgLTgwNSw2MCArODEx LDU2IEBAIENoZWNrQ2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlKQogCWlm ICghcGxhbikKIAkJcmV0dXJuIGZhbHNlOwogCi0JQXNzZXJ0KHBsYW4tPm1hZ2ljID09IENBQ0hF RFBMQU5fTUFHSUMpOwotCS8qIEdlbmVyaWMgcGxhbnMgYXJlIG5ldmVyIG9uZS1zaG90ICovCi0J QXNzZXJ0KCFwbGFuLT5pc19vbmVzaG90KTsKKwlpZiAoR2VuZXJpY1BsYW5Jc1ZhbGlkKHBsYW4p KQorCQlyZXR1cm4gdHJ1ZTsKIAogCS8qCi0JICogSWYgcGxhbiBpc24ndCB2YWxpZCBmb3IgY3Vy cmVudCByb2xlLCB3ZSBjYW4ndCB1c2UgaXQuCisJICogUGxhbiBoYXMgYmVlbiBpbnZhbGlkYXRl ZCwgc28gdW5saW5rIGl0IGZyb20gdGhlIHBhcmVudCBhbmQgcmVsZWFzZSBpdC4KIAkgKi8KLQlp ZiAocGxhbi0+aXNfdmFsaWQgJiYgcGxhbi0+ZGVwZW5kc09uUm9sZSAmJgotCQlwbGFuLT5wbGFu Um9sZUlkICE9IEdldFVzZXJJZCgpKQotCQlwbGFuLT5pc192YWxpZCA9IGZhbHNlOworCVJlbGVh c2VHZW5lcmljUGxhbihwbGFuc291cmNlKTsKIAotCS8qCi0JICogSWYgaXQgYXBwZWFycyB2YWxp ZCwgYWNxdWlyZSBsb2NrcyBhbmQgcmVjaGVjazsgdGhpcyBpcyBtdWNoIHRoZSBzYW1lCi0JICog bG9naWMgYXMgaW4gUmV2YWxpZGF0ZUNhY2hlZFF1ZXJ5LCBidXQgZm9yIGEgcGxhbi4KLQkgKi8K LQlpZiAocGxhbi0+aXNfdmFsaWQpCisJcmV0dXJuIGZhbHNlOworfQorCisvKgorICogR2VuZXJp Y1BsYW5Jc1ZhbGlkCisgKgkJSXMgYSBnZW5lcmljIHBsYW4gc3RpbGwgdmFsaWQ/CisgKgorICog SXQgbWF5IGhhdmUgZ29uZSBzdGFsZSBkdWUgdG8gY29uY3VycmVudCBzY2hlbWEgbW9kaWZpY2F0 aW9ucyBvZiByZWxhdGlvbnMKKyAqIG1lbnRpb25lZCBpbiB0aGUgcGxhbiBvciBhIGNvdXBsZSBv ZiBvdGhlciB0aGluZ3MgbWVudGlvbmVkIGJlbG93LgorICovCitzdGF0aWMgYm9vbAorR2VuZXJp Y1BsYW5Jc1ZhbGlkKENhY2hlZFBsYW4gKmNwbGFuKQoreworCUFzc2VydChjcGxhbiAhPSBOVUxM KTsKKwlBc3NlcnQoY3BsYW4tPm1hZ2ljID09IENBQ0hFRFBMQU5fTUFHSUMpOworCS8qIEdlbmVy aWMgcGxhbnMgYXJlIG5ldmVyIG9uZS1zaG90ICovCisJQXNzZXJ0KCFjcGxhbi0+aXNfb25lc2hv dCk7CisKKwlpZiAoY3BsYW4tPmlzX3ZhbGlkKQogCXsKIAkJLyoKIAkJICogUGxhbiBtdXN0IGhh dmUgcG9zaXRpdmUgcmVmY291bnQgYmVjYXVzZSBpdCBpcyByZWZlcmVuY2VkIGJ5CiAJCSAqIHBs YW5zb3VyY2U7IHNvIG5vIG5lZWQgdG8gZmVhciBpdCBkaXNhcHBlYXJzIHVuZGVyIHVzIGhlcmUu CiAJCSAqLwotCQlBc3NlcnQocGxhbi0+cmVmY291bnQgPiAwKTsKLQotCQlBY3F1aXJlRXhlY3V0 b3JMb2NrcyhwbGFuLT5zdG10X2xpc3QsIHRydWUpOworCQlBc3NlcnQoY3BsYW4tPnJlZmNvdW50 ID4gMCk7CiAKIAkJLyoKLQkJICogSWYgcGxhbiB3YXMgdHJhbnNpZW50LCBjaGVjayB0byBzZWUg aWYgVHJhbnNhY3Rpb25YbWluIGhhcwotCQkgKiBhZHZhbmNlZCwgYW5kIGlmIHNvIGludmFsaWRh dGUgaXQuCisJCSAqIElmIHBsYW4gaXNuJ3QgdmFsaWQgZm9yIGN1cnJlbnQgcm9sZSwgd2UgY2Fu J3QgdXNlIGl0LgogCQkgKi8KLQkJaWYgKHBsYW4tPmlzX3ZhbGlkICYmCi0JCQlUcmFuc2FjdGlv bklkSXNWYWxpZChwbGFuLT5zYXZlZF94bWluKSAmJgotCQkJIVRyYW5zYWN0aW9uSWRFcXVhbHMo cGxhbi0+c2F2ZWRfeG1pbiwgVHJhbnNhY3Rpb25YbWluKSkKLQkJCXBsYW4tPmlzX3ZhbGlkID0g ZmFsc2U7CisJCWlmIChjcGxhbi0+ZGVwZW5kc09uUm9sZSAmJiBjcGxhbi0+cGxhblJvbGVJZCAh PSBHZXRVc2VySWQoKSkKKwkJCWNwbGFuLT5pc192YWxpZCA9IGZhbHNlOwogCiAJCS8qCi0JCSAq IEJ5IG5vdywgaWYgYW55IGludmFsaWRhdGlvbiBoYXMgaGFwcGVuZWQsIHRoZSBpbnZhbCBjYWxs YmFjawotCQkgKiBmdW5jdGlvbnMgd2lsbCBoYXZlIG1hcmtlZCB0aGUgcGxhbiBpbnZhbGlkLgor CQkgKiBJZiBwbGFuIHdhcyB0cmFuc2llbnQsIGNoZWNrIHRvIHNlZSBpZiBUcmFuc2FjdGlvblht aW4gaGFzCisJCSAqIGFkdmFuY2VkLCBhbmQgaWYgc28gaW52YWxpZGF0ZSBpdC4KIAkJICovCi0J CWlmIChwbGFuLT5pc192YWxpZCkKLQkJewotCQkJLyogU3VjY2Vzc2Z1bGx5IHJldmFsaWRhdGVk IGFuZCBsb2NrZWQgdGhlIHF1ZXJ5LiAqLwotCQkJcmV0dXJuIHRydWU7Ci0JCX0KLQotCQkvKiBP b3BzLCB0aGUgcmFjZSBjYXNlIGhhcHBlbmVkLiAgUmVsZWFzZSB1c2VsZXNzIGxvY2tzLiAqLwot CQlBY3F1aXJlRXhlY3V0b3JMb2NrcyhwbGFuLT5zdG10X2xpc3QsIGZhbHNlKTsKKwkJaWYgKFRy YW5zYWN0aW9uSWRJc1ZhbGlkKGNwbGFuLT5zYXZlZF94bWluKSAmJgorCQkJIVRyYW5zYWN0aW9u SWRFcXVhbHMoY3BsYW4tPnNhdmVkX3htaW4sIFRyYW5zYWN0aW9uWG1pbikpCisJCQljcGxhbi0+ aXNfdmFsaWQgPSBmYWxzZTsKIAl9CiAKLQkvKgotCSAqIFBsYW4gaGFzIGJlZW4gaW52YWxpZGF0 ZWQsIHNvIHVubGluayBpdCBmcm9tIHRoZSBwYXJlbnQgYW5kIHJlbGVhc2UgaXQuCi0JICovCi0J UmVsZWFzZUdlbmVyaWNQbGFuKHBsYW5zb3VyY2UpOwotCi0JcmV0dXJuIGZhbHNlOworCXJldHVy biBjcGxhbi0+aXNfdmFsaWQ7CiB9CiAKIC8qCkBAIC0xMTI4LDggKzExMzAsMTUgQEAgY2FjaGVk X3BsYW5fY29zdChDYWNoZWRQbGFuICpwbGFuLCBib29sIGluY2x1ZGVfcGxhbm5lcikKICAqIHBs YW4gb3IgYSBjdXN0b20gcGxhbiBmb3IgdGhlIGdpdmVuIHBhcmFtZXRlcnM6IHRoZSBjYWxsZXIg ZG9lcyBub3Qga25vdwogICogd2hpY2ggaXQgd2lsbCBnZXQuCiAgKgotICogT24gcmV0dXJuLCB0 aGUgcGxhbiBpcyB2YWxpZCBhbmQgd2UgaGF2ZSBzdWZmaWNpZW50IGxvY2tzIHRvIGJlZ2luCi0g KiBleGVjdXRpb24uCisgKiBPbiByZXR1cm4sIHRoZSBwbGFuIGlzIHZhbGlkIHVubGVzcyBpdCBj b250YWlucyBpbmhlcml0YW5jZS9wYXJ0aXRpb24gY2hpbGQKKyAqIHRhYmxlcywgdGhhdCBpcywg b25seSB0aGUgbG9ja3Mgb24gdGhlIHRhYmxlcyBtZW50aW9uZWQgaW4gdGhlIHF1ZXJ5IGhhdmUK KyAqIGJlZW4gdGFrZW4uICBJZiBhbnkgb2YgdGhvc2UgdGFibGVzIGhhdmUgaW5oZXJpdGFuY2Uv cGFydGl0aW9uIHRhYmxlcywgdGhlCisgKiBleGVjdXRvciBtdXN0IGFsc28gbG9jayB0aGVtIGJl Zm9yZSBleGVjdXRpbmcgdGhlIHBsYW4gYW5kIGlmIHRoZSBwbGFuIGdldHMKKyAqIGludmFsaWRh dGVkIGFzIGEgcmVzdWx0IG9mIHRha2luZyB0aG9zZSBsb2NrcywgbXVzdCBhc2sgdGhlIGNhbGxl ciB0byBnZXQKKyAqIGEgbmV3IHBsYW4gYnkgY2FsbGluZyBoZXJlIGFnYWluLiAgTG9ja2luZyBv ZiB0aGUgY2hpbGQgdGFibGVzIG11c3QgYmUKKyAqIGRlZmVycmVkIHRvIHRoZSBleGVjdXRvciBs aWtlIHRoaXMsIGJlY2F1c2Ugbm90IGFsbCBjaGlsZCB0YWJsZXMgbWF5IG5lZWQKKyAqIHRvIGJl IGxvY2tlZDsgc29tZSBtYXkgZ2V0IHBydW5lZCBkdXJpbmcgdGhlIGV4ZWN1dG9yIHBsYW4gaW5p dGlhbGl6YXRpb24KKyAqIHBoYXNlIChJbml0UGxhbigpKS4KICAqCiAgKiBPbiByZXR1cm4sIHRo ZSByZWZjb3VudCBvZiB0aGUgcGxhbiBoYXMgYmVlbiBpbmNyZW1lbnRlZDsgYSBsYXRlcgogICog UmVsZWFzZUNhY2hlZFBsYW4oKSBjYWxsIGlzIGV4cGVjdGVkLiAgSWYgIm93bmVyIiBpcyBub3Qg TlVMTCB0aGVuCkBAIC0xMzYyLDggKzEzNzEsOCBAQCBDYWNoZWRQbGFuQWxsb3dzU2ltcGxlVmFs aWRpdHlDaGVjayhDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLAogCX0KIAogCS8qCi0JICog UmVqZWN0IGlmIEFjcXVpcmVFeGVjdXRvckxvY2tzIHdvdWxkIGhhdmUgYW55dGhpbmcgdG8gZG8u ICBUaGlzIGlzCi0JICogcHJvYmFibHkgdW5uZWNlc3NhcnkgZ2l2ZW4gdGhlIHByZXZpb3VzIGNo ZWNrLCBidXQgbGV0J3MgYmUgc2FmZS4KKwkgKiBSZWplY3QgaWYgdGhlIGV4ZWN1dG9yIHdvdWxk IG5lZWQgdG8gdGFrZSBhZGRpdGlvbmFsIGxvY2tzLCB0aGF0IGlzLCBpbgorCSAqIGFkZGl0aW9u IHRvIHRob3NlIHRha2VuIGJ5IEFjcXVpcmVQbGFubmVyTG9ja3MoKSBvbiBhIGdpdmVuIHF1ZXJ5 LgogCSAqLwogCWZvcmVhY2gobGMsIHBsYW4tPnN0bXRfbGlzdCkKIAl7CkBAIC0xNzM3LDU4ICsx NzQ2LDYgQEAgUXVlcnlMaXN0R2V0UHJpbWFyeVN0bXQoTGlzdCAqc3RtdHMpCiAJcmV0dXJuIE5V TEw7CiB9CiAKLS8qCi0gKiBBY3F1aXJlRXhlY3V0b3JMb2NrczogYWNxdWlyZSBsb2NrcyBuZWVk ZWQgZm9yIGV4ZWN1dGlvbiBvZiBhIGNhY2hlZCBwbGFuOwotICogb3IgcmVsZWFzZSB0aGVtIGlm IGFjcXVpcmUgaXMgZmFsc2UuCi0gKi8KLXN0YXRpYyB2b2lkCi1BY3F1aXJlRXhlY3V0b3JMb2Nr cyhMaXN0ICpzdG10X2xpc3QsIGJvb2wgYWNxdWlyZSkKLXsKLQlMaXN0Q2VsbCAgICpsYzE7Ci0K LQlmb3JlYWNoKGxjMSwgc3RtdF9saXN0KQotCXsKLQkJUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10 ID0gbGZpcnN0X25vZGUoUGxhbm5lZFN0bXQsIGxjMSk7Ci0JCUxpc3RDZWxsICAgKmxjMjsKLQot CQlpZiAocGxhbm5lZHN0bXQtPmNvbW1hbmRUeXBlID09IENNRF9VVElMSVRZKQotCQl7Ci0JCQkv KgotCQkJICogSWdub3JlIHV0aWxpdHkgc3RhdGVtZW50cywgZXhjZXB0IHRob3NlIChzdWNoIGFz IEVYUExBSU4pIHRoYXQKLQkJCSAqIGNvbnRhaW4gYSBwYXJzZWQtYnV0LW5vdC1wbGFubmVkIHF1 ZXJ5LiAgTm90ZTogaXQncyBva2F5IHRvIHVzZQotCQkJICogU2NhblF1ZXJ5Rm9yTG9ja3MsIGV2 ZW4gdGhvdWdoIHRoZSBxdWVyeSBoYXNuJ3QgYmVlbiB0aHJvdWdoCi0JCQkgKiBydWxlIHJld3Jp dGluZywgYmVjYXVzZSByZXdyaXRpbmcgZG9lc24ndCBjaGFuZ2UgdGhlIHF1ZXJ5Ci0JCQkgKiBy ZXByZXNlbnRhdGlvbi4KLQkJCSAqLwotCQkJUXVlcnkJICAgKnF1ZXJ5ID0gVXRpbGl0eUNvbnRh aW5zUXVlcnkocGxhbm5lZHN0bXQtPnV0aWxpdHlTdG10KTsKLQotCQkJaWYgKHF1ZXJ5KQotCQkJ CVNjYW5RdWVyeUZvckxvY2tzKHF1ZXJ5LCBhY3F1aXJlKTsKLQkJCWNvbnRpbnVlOwotCQl9Ci0K LQkJZm9yZWFjaChsYzIsIHBsYW5uZWRzdG10LT5ydGFibGUpCi0JCXsKLQkJCVJhbmdlVGJsRW50 cnkgKnJ0ZSA9IChSYW5nZVRibEVudHJ5ICopIGxmaXJzdChsYzIpOwotCi0JCQlpZiAoIShydGUt PnJ0ZWtpbmQgPT0gUlRFX1JFTEFUSU9OIHx8Ci0JCQkJICAocnRlLT5ydGVraW5kID09IFJURV9T VUJRVUVSWSAmJiBPaWRJc1ZhbGlkKHJ0ZS0+cmVsaWQpKSkpCi0JCQkJY29udGludWU7Ci0KLQkJ CS8qCi0JCQkgKiBBY3F1aXJlIHRoZSBhcHByb3ByaWF0ZSB0eXBlIG9mIGxvY2sgb24gZWFjaCBy ZWxhdGlvbiBPSUQuIE5vdGUKLQkJCSAqIHRoYXQgd2UgZG9uJ3QgYWN0dWFsbHkgdHJ5IHRvIG9w ZW4gdGhlIHJlbCwgYW5kIGhlbmNlIHdpbGwgbm90Ci0JCQkgKiBmYWlsIGlmIGl0J3MgYmVlbiBk cm9wcGVkIGVudGlyZWx5IC0tLSB3ZSdsbCBqdXN0IHRyYW5zaWVudGx5Ci0JCQkgKiBhY3F1aXJl IGEgbm9uLWNvbmZsaWN0aW5nIGxvY2suCi0JCQkgKi8KLQkJCWlmIChhY3F1aXJlKQotCQkJCUxv Y2tSZWxhdGlvbk9pZChydGUtPnJlbGlkLCBydGUtPnJlbGxvY2ttb2RlKTsKLQkJCWVsc2UKLQkJ CQlVbmxvY2tSZWxhdGlvbk9pZChydGUtPnJlbGlkLCBydGUtPnJlbGxvY2ttb2RlKTsKLQkJfQot CX0KLX0KLQogLyoKICAqIEFjcXVpcmVQbGFubmVyTG9ja3M6IGFjcXVpcmUgbG9ja3MgbmVlZGVk IGZvciBwbGFubmluZyBvZiBhIHF1ZXJ5dHJlZSBsaXN0OwogICogb3IgcmVsZWFzZSB0aGVtIGlm IGFjcXVpcmUgaXMgZmFsc2UuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9tbWdyL3Bv cnRhbG1lbS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9wb3J0YWxtZW0uYwppbmRleCAwNmRm YTg1ZjA0Li4wY2FkNDUwZGNkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9tbWdyL3Bv cnRhbG1lbS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvcG9ydGFsbWVtLmMKQEAgLTIw MSw2ICsyMDEsMTMgQEAgQ3JlYXRlUG9ydGFsKGNvbnN0IGNoYXIgKm5hbWUsIGJvb2wgYWxsb3dE dXAsIGJvb2wgZHVwU2lsZW50KQogCXBvcnRhbC0+cG9ydGFsQ29udGV4dCA9IEFsbG9jU2V0Q29u dGV4dENyZWF0ZShUb3BQb3J0YWxDb250ZXh0LAogCQkJCQkJCQkJCQkJICAiUG9ydGFsQ29udGV4 dCIsCiAJCQkJCQkJCQkJCQkgIEFMTE9DU0VUX1NNQUxMX1NJWkVTKTsKKwkvKgorCSAqIGluaXRp YWxpemUgcG9ydGFsJ3MgcXVlcnkgY29udGV4dCB0byBzdG9yZSBRdWVyeURlc2NzIGNyZWF0ZWQg ZHVyaW5nCisJICogUG9ydGFsU3RhcnQoKSBhbmQgdGhlbiB1c2VkIGluIFBvcnRhbFJ1bigpLgor CSAqLworCXBvcnRhbC0+cXVlcnlDb250ZXh0ID0gQWxsb2NTZXRDb250ZXh0Q3JlYXRlKFRvcFBv cnRhbENvbnRleHQsCisJCQkJCQkJCQkJCQkgIlBvcnRhbFF1ZXJ5Q29udGV4dCIsCisJCQkJCQkJ CQkJCQkgQUxMT0NTRVRfU01BTExfU0laRVMpOwogCiAJLyogY3JlYXRlIGEgcmVzb3VyY2Ugb3du ZXIgZm9yIHRoZSBwb3J0YWwgKi8KIAlwb3J0YWwtPnJlc293bmVyID0gUmVzb3VyY2VPd25lckNy ZWF0ZShDdXJUcmFuc2FjdGlvblJlc291cmNlT3duZXIsCkBAIC0yMjQsNiArMjMxLDcgQEAgQ3Jl YXRlUG9ydGFsKGNvbnN0IGNoYXIgKm5hbWUsIGJvb2wgYWxsb3dEdXAsIGJvb2wgZHVwU2lsZW50 KQogCiAJLyogZm9yIG5hbWVkIHBvcnRhbHMgcmV1c2UgcG9ydGFsLT5uYW1lIGNvcHkgKi8KIAlN ZW1vcnlDb250ZXh0U2V0SWRlbnRpZmllcihwb3J0YWwtPnBvcnRhbENvbnRleHQsIHBvcnRhbC0+ bmFtZVswXSA/IHBvcnRhbC0+bmFtZSA6ICI8dW5uYW1lZD4iKTsKKwlNZW1vcnlDb250ZXh0U2V0 SWRlbnRpZmllcihwb3J0YWwtPnF1ZXJ5Q29udGV4dCwgcG9ydGFsLT5uYW1lWzBdID8gcG9ydGFs LT5uYW1lIDogIjx1bm5hbWVkPiIpOwogCiAJcmV0dXJuIHBvcnRhbDsKIH0KQEAgLTU5NCw2ICs2 MDIsNyBAQCBQb3J0YWxEcm9wKFBvcnRhbCBwb3J0YWwsIGJvb2wgaXNUb3BDb21taXQpCiAKIAkv KiByZWxlYXNlIHN1YnNpZGlhcnkgc3RvcmFnZSAqLwogCU1lbW9yeUNvbnRleHREZWxldGUocG9y dGFsLT5wb3J0YWxDb250ZXh0KTsKKwlNZW1vcnlDb250ZXh0RGVsZXRlKHBvcnRhbC0+cXVlcnlD b250ZXh0KTsKIAogCS8qIHJlbGVhc2UgcG9ydGFsIHN0cnVjdCAoaXQncyBpbiBUb3BQb3J0YWxD b250ZXh0KSAqLwogCXBmcmVlKHBvcnRhbCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21t YW5kcy9leHBsYWluLmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9leHBsYWluLmgKaW5kZXggM2Qz ZTYzMmEwYy4uMzkyYWJiNTE1MCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvZXhw bGFpbi5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW4uaApAQCAtODgsNyArODgs MTEgQEAgZXh0ZXJuIHZvaWQgRXhwbGFpbk9uZVV0aWxpdHkoTm9kZSAqdXRpbGl0eVN0bXQsIElu dG9DbGF1c2UgKmludG8sCiAJCQkJCQkJICBFeHBsYWluU3RhdGUgKmVzLCBjb25zdCBjaGFyICpx dWVyeVN0cmluZywKIAkJCQkJCQkgIFBhcmFtTGlzdEluZm8gcGFyYW1zLCBRdWVyeUVudmlyb25t ZW50ICpxdWVyeUVudik7CiAKLWV4dGVybiB2b2lkIEV4cGxhaW5PbmVQbGFuKFBsYW5uZWRTdG10 ICpwbGFubmVkc3RtdCwgSW50b0NsYXVzZSAqaW50bywKK2V4dGVybiBRdWVyeURlc2MgKkV4cGxh aW5RdWVyeURlc2MoUGxhbm5lZFN0bXQgKnN0bXQsIHN0cnVjdCBDYWNoZWRQbGFuICpjcGxhbiwK KwkJCQkgY29uc3QgY2hhciAqcXVlcnlTdHJpbmcsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5T dGF0ZSAqZXMsCisJCQkJIFBhcmFtTGlzdEluZm8gcGFyYW1zLCBRdWVyeUVudmlyb25tZW50ICpx dWVyeUVudik7CitleHRlcm4gdm9pZCBFeHBsYWluT25lUGxhbihRdWVyeURlc2MgKnF1ZXJ5RGVz YywKKwkJCQkJCSAgIEludG9DbGF1c2UgKmludG8sCiAJCQkJCQkgICBFeHBsYWluU3RhdGUgKmVz LCBjb25zdCBjaGFyICpxdWVyeVN0cmluZywKIAkJCQkJCSAgIFBhcmFtTGlzdEluZm8gcGFyYW1z LCBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudiwKIAkJCQkJCSAgIGNvbnN0IGluc3RyX3RpbWUg KnBsYW5kdXJhdGlvbiwKQEAgLTEwNCw2ICsxMDgsNyBAQCBleHRlcm4gdm9pZCBFeHBsYWluUXVl cnlQYXJhbWV0ZXJzKEV4cGxhaW5TdGF0ZSAqZXMsIFBhcmFtTGlzdEluZm8gcGFyYW1zLCBpbnQg bQogCiBleHRlcm4gdm9pZCBFeHBsYWluQmVnaW5PdXRwdXQoRXhwbGFpblN0YXRlICplcyk7CiBl eHRlcm4gdm9pZCBFeHBsYWluRW5kT3V0cHV0KEV4cGxhaW5TdGF0ZSAqZXMpOworZXh0ZXJuIHZv aWQgRXhwbGFpblJlc2V0T3V0cHV0KEV4cGxhaW5TdGF0ZSAqZXMpOwogZXh0ZXJuIHZvaWQgRXhw bGFpblNlcGFyYXRlUGxhbnMoRXhwbGFpblN0YXRlICplcyk7CiAKIGV4dGVybiB2b2lkIEV4cGxh aW5Qcm9wZXJ0eUxpc3QoY29uc3QgY2hhciAqcWxhYmVsLCBMaXN0ICpkYXRhLApkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY2Rlc2MuaCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9y L2V4ZWNkZXNjLmgKaW5kZXggYWYyYmYzNmRmYi4uYzM2YzI1YjQ5NyAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvZXhlY3V0b3IvZXhlY2Rlc2MuaAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9l eGVjZGVzYy5oCkBAIC0zMiw5ICszMiwxMiBAQAogICovCiB0eXBlZGVmIHN0cnVjdCBRdWVyeURl c2MKIHsKKwlOb2RlVGFnCQl0eXBlOworCiAJLyogVGhlc2UgZmllbGRzIGFyZSBwcm92aWRlZCBi eSBDcmVhdGVRdWVyeURlc2MgKi8KIAlDbWRUeXBlCQlvcGVyYXRpb247CQkvKiBDTURfU0VMRUNU LCBDTURfVVBEQVRFLCBldGMuICovCiAJUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10OwkvKiBwbGFu bmVyJ3Mgb3V0cHV0IChjb3VsZCBiZSB1dGlsaXR5LCB0b28pICovCisJc3RydWN0IENhY2hlZFBs YW4gKmNwbGFuOwkvKiBDYWNoZWRQbGFuLCBpZiBwbGFubmVkc3RtdCBpcyBmcm9tIG9uZSAqLwog CWNvbnN0IGNoYXIgKnNvdXJjZVRleHQ7CQkvKiBzb3VyY2UgdGV4dCBvZiB0aGUgcXVlcnkgKi8K IAlTbmFwc2hvdAlzbmFwc2hvdDsJCS8qIHNuYXBzaG90IHRvIHVzZSBmb3IgcXVlcnkgKi8KIAlT bmFwc2hvdAljcm9zc2NoZWNrX3NuYXBzaG90OwkvKiBjcm9zc2NoZWNrIGZvciBSSSB1cGRhdGUv ZGVsZXRlICovCkBAIC00Nyw2ICs1MCw3IEBAIHR5cGVkZWYgc3RydWN0IFF1ZXJ5RGVzYwogCVR1 cGxlRGVzYwl0dXBEZXNjOwkJLyogZGVzY3JpcHRvciBmb3IgcmVzdWx0IHR1cGxlcyAqLwogCUVT dGF0ZQkgICAqZXN0YXRlOwkJCS8qIGV4ZWN1dG9yJ3MgcXVlcnktd2lkZSBzdGF0ZSAqLwogCVBs YW5TdGF0ZSAgKnBsYW5zdGF0ZTsJCS8qIHRyZWUgb2YgcGVyLXBsYW4tbm9kZSBzdGF0ZSAqLwor CWJvb2wJCXBsYW5fdmFsaWQ7CQkvKiBpcyBwbGFuc3RhdGUgdHJlZSBmdWxseSB2YWxpZD8gKi8K IAogCS8qIFRoaXMgZmllbGQgaXMgc2V0IGJ5IEV4ZWN1dG9yUnVuICovCiAJYm9vbAkJYWxyZWFk eV9leGVjdXRlZDsJLyogdHJ1ZSBpZiBwcmV2aW91c2x5IGV4ZWN1dGVkICovCkBAIC01Nyw2ICs2 MSw3IEBAIHR5cGVkZWYgc3RydWN0IFF1ZXJ5RGVzYwogCiAvKiBpbiBwcXVlcnkuYyAqLwogZXh0 ZXJuIFF1ZXJ5RGVzYyAqQ3JlYXRlUXVlcnlEZXNjKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwK KwkJCQkJCQkJICBzdHJ1Y3QgQ2FjaGVkUGxhbiAqY3BsYW4sCiAJCQkJCQkJCSAgY29uc3QgY2hh ciAqc291cmNlVGV4dCwKIAkJCQkJCQkJICBTbmFwc2hvdCBzbmFwc2hvdCwKIAkJCQkJCQkJICBT bmFwc2hvdCBjcm9zc2NoZWNrX3NuYXBzaG90LApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhl Y3V0b3IvZXhlY3V0b3IuaCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmgKaW5kZXgg YzY3N2U0OTBkNy4uZTA1ZTIzYmI0YSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3Iv ZXhlY3V0b3IuaAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oCkBAIC0xOSw2 ICsxOSw3IEBACiAjaW5jbHVkZSAibm9kZXMvbG9ja29wdGlvbnMuaCIKICNpbmNsdWRlICJub2Rl cy9wYXJzZW5vZGVzLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKKyNpbmNsdWRlICJ1 dGlscy9wbGFuY2FjaGUuaCIKIAogCiAvKgpAQCAtMjU2LDYgKzI1NywxNyBAQCBleHRlcm4gdm9p ZCBFeGVjRW5kTm9kZShQbGFuU3RhdGUgKm5vZGUpOwogZXh0ZXJuIHZvaWQgRXhlY1NodXRkb3du Tm9kZShQbGFuU3RhdGUgKm5vZGUpOwogZXh0ZXJuIHZvaWQgRXhlY1NldFR1cGxlQm91bmQoaW50 NjQgdHVwbGVzX25lZWRlZCwgUGxhblN0YXRlICpjaGlsZF9ub2RlKTsKIAorLyoKKyAqIElzIHRo ZSBjYWNoZWQgcGxhbiwgaWYgYW55LCBzdGlsbCB2YWxpZCBhdCB0aGlzIHBvaW50PyAgVGhhdCBp cywgbm90CisgKiBpbnZhbGlkYXRlZCBieSB0aGUgaW5jb21pbmcgaW52YWxpZGF0aW9uIG1lc3Nh Z2VzIHRoYXQgaGF2ZSBiZWVuIHByb2Nlc3NlZAorICogcmVjZW50bHkuCisgKi8KK3N0YXRpYyBp bmxpbmUgYm9vbAorRXhlY1BsYW5TdGlsbFZhbGlkKEVTdGF0ZSAqZXN0YXRlKQoreworCXJldHVy biBlc3RhdGUtPmVzX2NhY2hlZHBsYW4gPT0gTlVMTCA/IHRydWUgOgorCQlDYWNoZWRQbGFuU3Rp bGxWYWxpZChlc3RhdGUtPmVzX2NhY2hlZHBsYW4pOworfQogCiAvKiAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgkJRXhl Y1Byb2NOb2RlCkBAIC01OTAsNiArNjAyLDcgQEAgZXhlY19ydF9mZXRjaChJbmRleCBydGksIEVT dGF0ZSAqZXN0YXRlKQogfQogCiBleHRlcm4gUmVsYXRpb24gRXhlY0dldFJhbmdlVGFibGVSZWxh dGlvbihFU3RhdGUgKmVzdGF0ZSwgSW5kZXggcnRpKTsKK2V4dGVybiB2b2lkIEV4ZWNMb2NrQXBw ZW5kTm9uTGVhZlJlbGF0aW9ucyhFU3RhdGUgKmVzdGF0ZSwgTGlzdCAqYWxscGFydHJlbGlkcyk7 CiBleHRlcm4gdm9pZCBFeGVjSW5pdFJlc3VsdFJlbGF0aW9uKEVTdGF0ZSAqZXN0YXRlLCBSZXN1 bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLAogCQkJCQkJCQkgICBJbmRleCBydGkpOwogCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVz L2V4ZWNub2Rlcy5oCmluZGV4IGNiNzE0ZjRhMTkuLmYwYzUxNzdiMDYgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNu b2Rlcy5oCkBAIC02MjMsNiArNjIzLDggQEAgdHlwZWRlZiBzdHJ1Y3QgRVN0YXRlCiAJCQkJCQkJ CQkJICogRXhlY1Jvd01hcmtzLCBvciBOVUxMIGlmIG5vbmUgKi8KIAlMaXN0CSAgICplc19ydGVw ZXJtaW5mb3M7CS8qIExpc3Qgb2YgUlRFUGVybWlzc2lvbkluZm8gKi8KIAlQbGFubmVkU3RtdCAq ZXNfcGxhbm5lZHN0bXQ7CS8qIGxpbmsgdG8gdG9wIG9mIHBsYW4gdHJlZSAqLworCXN0cnVjdCBD YWNoZWRQbGFuICplc19jYWNoZWRwbGFuOwkvKiBDYWNoZWRQbGFuIGlmIHBsYW5uZWRzdG10IGlz IGZyb20KKwkJCQkJCQkJCQkgKiBvbmUgKi8KIAljb25zdCBjaGFyICplc19zb3VyY2VUZXh0Owkv KiBTb3VyY2UgdGV4dCBmcm9tIFF1ZXJ5RGVzYyAqLwogCiAJSnVua0ZpbHRlciAqZXNfanVua0Zp bHRlcjsJLyogdG9wLWxldmVsIGp1bmsgZmlsdGVyLCBpZiBhbnkgKi8KQEAgLTY3MSw2ICs2NzMs MTAgQEAgdHlwZWRlZiBzdHJ1Y3QgRVN0YXRlCiAKIAlMaXN0CSAgICplc19leHByY29udGV4dHM7 CS8qIExpc3Qgb2YgRXhwckNvbnRleHRzIHdpdGhpbiBFU3RhdGUgKi8KIAorCUxpc3QJICAgKmVz X2luaXRlZF9wbGFubm9kZXM7IC8qIExpc3Qgb2YgUGxhblN0YXRlIG9mIG5vZGVzIGZyb20gdGhl CisJCQkJCQkJCQkgICogcGxhbiB0cmVlIHRoYXQgd2VyZSBmdWxseQorCQkJCQkJCQkJICAqIGlu aXRpYWxpemVkICovCisKIAlMaXN0CSAgICplc19zdWJwbGFuc3RhdGVzOwkvKiBMaXN0IG9mIFBs YW5TdGF0ZSBmb3IgU3ViUGxhbnMgKi8KIAogCUxpc3QJICAgKmVzX2F1eG1vZGlmeXRhYmxlczsg LyogTGlzdCBvZiBzZWNvbmRhcnkgTW9kaWZ5VGFibGVTdGF0ZXMgKi8KZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL3N0b3JhZ2UvbG1nci5oIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9sbWdyLmgKaW5k ZXggNGVlOTFlM2NmOS4uNTk4YmYyNjg4YSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFn ZS9sbWdyLmgKKysrIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9sbWdyLmgKQEAgLTQ4LDYgKzQ4LDcg QEAgZXh0ZXJuIGJvb2wgQ29uZGl0aW9uYWxMb2NrUmVsYXRpb24oUmVsYXRpb24gcmVsYXRpb24s IExPQ0tNT0RFIGxvY2ttb2RlKTsKIGV4dGVybiB2b2lkIFVubG9ja1JlbGF0aW9uKFJlbGF0aW9u IHJlbGF0aW9uLCBMT0NLTU9ERSBsb2NrbW9kZSk7CiBleHRlcm4gYm9vbCBDaGVja1JlbGF0aW9u TG9ja2VkQnlNZShSZWxhdGlvbiByZWxhdGlvbiwgTE9DS01PREUgbG9ja21vZGUsCiAJCQkJCQkJ CQlib29sIG9yc3Ryb25nZXIpOworZXh0ZXJuIGJvb2wgQ2hlY2tSZWxMb2NrZWRCeU1lKE9pZCBy ZWxpZCwgTE9DS01PREUgbG9ja21vZGUsIGJvb2wgb3JzdHJvbmdlcik7CiBleHRlcm4gYm9vbCBM b2NrSGFzV2FpdGVyc1JlbGF0aW9uKFJlbGF0aW9uIHJlbGF0aW9uLCBMT0NLTU9ERSBsb2NrbW9k ZSk7CiAKIGV4dGVybiB2b2lkIExvY2tSZWxhdGlvbklkRm9yU2Vzc2lvbihMb2NrUmVsSWQgKnJl bGlkLCBMT0NLTU9ERSBsb2NrbW9kZSk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9s c3lzY2FjaGUuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL2xzeXNjYWNoZS5oCmluZGV4IGY1ZmRiZmUx MTYuLmEwMjRlNWRjZDAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL2xzeXNjYWNoZS5o CisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL2xzeXNjYWNoZS5oCkBAIC0xNDAsNiArMTQwLDcgQEAg ZXh0ZXJuIGNoYXIgZ2V0X3JlbF9yZWxraW5kKE9pZCByZWxpZCk7CiBleHRlcm4gYm9vbCBnZXRf cmVsX3JlbGlzcGFydGl0aW9uKE9pZCByZWxpZCk7CiBleHRlcm4gT2lkCWdldF9yZWxfdGFibGVz cGFjZShPaWQgcmVsaWQpOwogZXh0ZXJuIGNoYXIgZ2V0X3JlbF9wZXJzaXN0ZW5jZShPaWQgcmVs aWQpOworZXh0ZXJuIGJvb2wgZ2V0X3JlbF9yZWxpc3NoYXJlZChPaWQgcmVsaWQpOwogZXh0ZXJu IE9pZAlnZXRfdHJhbnNmb3JtX2Zyb21zcWwoT2lkIHR5cGlkLCBPaWQgbGFuZ2lkLCBMaXN0ICp0 cmZ0eXBlcyk7CiBleHRlcm4gT2lkCWdldF90cmFuc2Zvcm1fdG9zcWwoT2lkIHR5cGlkLCBPaWQg bGFuZ2lkLCBMaXN0ICp0cmZ0eXBlcyk7CiBleHRlcm4gYm9vbCBnZXRfdHlwaXNkZWZpbmVkKE9p ZCB0eXBpZCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9wbGFuY2FjaGUuaCBiL3Ny Yy9pbmNsdWRlL3V0aWxzL3BsYW5jYWNoZS5oCmluZGV4IGE0NDMxODFkNDEuLjg5OTBmZTcyZTMg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3BsYW5jYWNoZS5oCisrKyBiL3NyYy9pbmNs dWRlL3V0aWxzL3BsYW5jYWNoZS5oCkBAIC0yMjEsNiArMjIxLDIwIEBAIGV4dGVybiBDYWNoZWRQ bGFuICpHZXRDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCiAJCQkJCQkJ CSBQYXJhbUxpc3RJbmZvIGJvdW5kUGFyYW1zLAogCQkJCQkJCQkgUmVzb3VyY2VPd25lciBvd25l ciwKIAkJCQkJCQkJIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52KTsKKworLyoKKyAqIENhY2hl ZFBsYW5TdGlsbFZhbGlkCisgKgkJUmV0dXJucyBpZiBhIGNhY2hlZCBnZW5lcmljIHBsYW4gaXMg c3RpbGwgdmFsaWQKKyAqCisgKiBDYWxsZWQgYnkgdGhlIGV4ZWN1dG9yIG9uIGV2ZXJ5IHJlbGF0 aW9uIGxvY2sgdGFrZW4gd2hlbiBpbml0aWFsaXppbmcgdGhlCisgKiBwbGFuIHRyZWUgaW4gdGhl IENhY2hlZFBsYW4uCisgKi8KK3N0YXRpYyBpbmxpbmUgYm9vbAorQ2FjaGVkUGxhblN0aWxsVmFs aWQoQ2FjaGVkUGxhbiAqY3BsYW4pCit7CisJcmV0dXJuIGNwbGFuLT5pc192YWxpZDsKK30KKwog ZXh0ZXJuIHZvaWQgUmVsZWFzZUNhY2hlZFBsYW4oQ2FjaGVkUGxhbiAqcGxhbiwgUmVzb3VyY2VP d25lciBvd25lcik7CiAKIGV4dGVybiBib29sIENhY2hlZFBsYW5BbGxvd3NTaW1wbGVWYWxpZGl0 eUNoZWNrKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS91dGlscy9wb3J0YWwuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL3BvcnRhbC5oCmluZGV4IGFh MDhiMWUwZmMuLjI0ZDQyMGI5ZTkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3BvcnRh bC5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL3BvcnRhbC5oCkBAIC0xMzgsNiArMTM4LDkgQEAg dHlwZWRlZiBzdHJ1Y3QgUG9ydGFsRGF0YQogCVF1ZXJ5Q29tcGxldGlvbiBxYzsJCQkvKiBjb21t YW5kIGNvbXBsZXRpb24gZGF0YSBmb3IgZXhlY3V0ZWQgcXVlcnkgKi8KIAlMaXN0CSAgICpzdG10 czsJCQkvKiBsaXN0IG9mIFBsYW5uZWRTdG10cyAqLwogCUNhY2hlZFBsYW4gKmNwbGFuOwkJCS8q IENhY2hlZFBsYW4sIGlmIHN0bXRzIGFyZSBmcm9tIG9uZSAqLworCUxpc3QJICAgKnFkZXNjczsJ CQkvKiBsaXN0IG9mIFF1ZXJ5RGVzY3MgKi8KKwlNZW1vcnlDb250ZXh0IHF1ZXJ5Q29udGV4dDsJ LyogbWVtb3J5IGZvciBRdWVyeURlc2NzIGFuZCBjaGlsZHJlbiAqLworCWJvb2wJCXBsYW5fdmFs aWQ7CQkvKiBhcmUgcGxhbnMgaW4gcWRlc2NzIHJlYWR5IGZvciBleGVjdXRpb24/ICovCiAKIAlQ YXJhbUxpc3RJbmZvIHBvcnRhbFBhcmFtczsgLyogcGFyYW1zIHRvIHBhc3MgdG8gcXVlcnkgKi8K IAlRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudjsgLyogZW52aXJvbm1lbnQgZm9yIHF1ZXJ5ICov CkBAIC0yNDIsNiArMjQ1LDcgQEAgZXh0ZXJuIHZvaWQgUG9ydGFsRGVmaW5lUXVlcnkoUG9ydGFs IHBvcnRhbCwKIAkJCQkJCQkgIENvbW1hbmRUYWcgY29tbWFuZFRhZywKIAkJCQkJCQkgIExpc3Qg KnN0bXRzLAogCQkJCQkJCSAgQ2FjaGVkUGxhbiAqY3BsYW4pOworZXh0ZXJuIHZvaWQgUG9ydGFs UXVlcnlGaW5pc2goUXVlcnlEZXNjICpxdWVyeURlc2MpOwogZXh0ZXJuIFBsYW5uZWRTdG10ICpQ b3J0YWxHZXRQcmltYXJ5U3RtdChQb3J0YWwgcG9ydGFsKTsKIGV4dGVybiB2b2lkIFBvcnRhbENy ZWF0ZUhvbGRTdG9yZShQb3J0YWwgcG9ydGFsKTsKIGV4dGVybiB2b2lkIFBvcnRhbEhhc2hUYWJs ZURlbGV0ZUFsbCh2b2lkKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhl Y3V0aW9uL01ha2VmaWxlIGIvc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vTWFrZWZp bGUKaW5kZXggNzBmMjRlODQ2ZC4uMmZjYTg0ZDAyNyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9k dWxlcy9kZWxheV9leGVjdXRpb24vTWFrZWZpbGUKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9kZWxh eV9leGVjdXRpb24vTWFrZWZpbGUKQEAgLTgsNyArOCw4IEBAIE9CSlMgPSBcCiAJZGVsYXlfZXhl Y3V0aW9uLm8KIAogSVNPTEFUSU9OID0gcGFydGl0aW9uLWFkZGl0aW9uIFwKLQkgICAgcGFydGl0 aW9uLXJlbW92YWwtMQorCSAgICBwYXJ0aXRpb24tcmVtb3ZhbC0xIFwKKwkJY2FjaGVkLXBsYW4t cmVwbGFuCiAKIGlmZGVmIFVTRV9QR1hTCiBQR19DT05GSUcgPSBwZ19jb25maWcKZGlmZiAtLWdp dCBhL3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL2RlbGF5X2V4ZWN1dGlvbi5jIGIv c3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vZGVsYXlfZXhlY3V0aW9uLmMKaW5kZXgg N2NkNzZlYjM0Yi4uNTE1YjJjMGM5NSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy9kZWxh eV9leGVjdXRpb24vZGVsYXlfZXhlY3V0aW9uLmMKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9kZWxh eV9leGVjdXRpb24vZGVsYXlfZXhlY3V0aW9uLmMKQEAgLTEsMTQgKzEsMTggQEAKIC8qLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQogICoKICAqIGRlbGF5X2V4ZWN1dGlvbi5jCi0gKgkJVGVzdCBtb2R1bGUgdG8g YWxsb3cgZGVsYXkgYmV0d2VlbiBwYXJzaW5nIGFuZCBleGVjdXRpb24gb2YgYSBxdWVyeS4KKyAq CQlUZXN0IG1vZHVsZSB0byBpbnRyb2R1Y2UgZGVsYXkgYXQgdmFyaW91cyBwb2ludHMgZHVyaW5n IGV4ZWN1dGlvbiBvZiBhCisgKgkJcXVlcnkgdG8gdGVzdCB0aGF0IGV4ZWN1dGlvbiBwcm9jZWVk cyBzYWZlbHkgaW4gbGlnaHQgb2YgY29uY3VycmVudAorICoJCWNoYW5nZXMuCiAgKgogICogVGhl IGRlbGF5IGlzIGltcGxlbWVudGVkIGJ5IHRha2luZyBhbmQgaW1tZWRpYXRlbHkgcmVsZWFzaW5n IGEgc3BlY2lmaWVkCiAgKiBhZHZpc29yeSBsb2NrLiAgSWYgYW5vdGhlciBwcm9jZXNzIGhhcyBw cmV2aW91c2x5IHRha2VuIHRoYXQgbG9jaywgdGhlCiAgKiBjdXJyZW50IHByb2Nlc3Mgd2lsbCBi ZSBibG9ja2VkIHVudGlsIHRoZSBsb2NrIGlzIHJlbGVhc2VkOyBvdGhlcndpc2UsCiAgKiB0aGVy ZSdzIG5vIGVmZmVjdC4gIFRoaXMgYWxsb3dzIGFuIGlzb2xhdGlvbnRlc3RlciBzY3JpcHQgdG8g cmVsaWFibHkKLSAqIHRlc3QgYmVoYXZpb3JzIHdoZXJlIHNvbWUgc3BlY2lmaWVkIGFjdGlvbiBo YXBwZW5zIGluIGFub3RoZXIgYmFja2VuZAotICogYmV0d2VlbiBwYXJzaW5nIGFuZCBleGVjdXRp b24gb2YgYW55IGRlc2lyZWQgcXVlcnkuCisgKiB0ZXN0IGJlaGF2aW9ycyB3aGVyZSBzb21lIHNw ZWNpZmllZCBhY3Rpb24gaGFwcGVucyBpbiBhbm90aGVyIGJhY2tlbmQgaW4KKyAqIGEgY291cGxl IG9mIGNhc2VzOiAxKSBiZXR3ZWVuIHBhcnNpbmcgYW5kIGV4ZWN1dGlvbiBvZiBhbnkgZGVzaXJl ZCBxdWVyeQorICogd2hlbiB1c2luZyB0aGUgcGxhbm5lcl9ob29rLCAyKSBiZXR3ZWVuIFJldmFs aWRhdGVDYWNoZWRRdWVyeSgpIGFuZAorICogRXhlY3V0b3JTdGFydCgpIHdoZW4gdXNpbmcgdGhl IEV4ZWN1dG9yU3RhcnRfaG9vay4KICAqCiAgKiBDb3B5cmlnaHQgKGMpIDIwMjAtMjAyMywgUG9z dGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKICAqCkBAIC0yMiw2ICsyNiw3IEBACiAK ICNpbmNsdWRlIDxsaW1pdHMuaD4KIAorI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWN1dG9yLmgiCiAj aW5jbHVkZSAib3B0aW1pemVyL3BsYW5uZXIuaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5o IgogI2luY2x1ZGUgInV0aWxzL2d1Yy5oIgpAQCAtMzIsOSArMzcsMTEgQEAgUEdfTU9EVUxFX01B R0lDOwogCiAvKiBHVUM6IGFkdmlzb3J5IGxvY2sgSUQgdG8gdXNlLiAgWmVybyBkaXNhYmxlcyB0 aGUgZmVhdHVyZS4gKi8KIHN0YXRpYyBpbnQJcG9zdF9wbGFubmluZ19sb2NrX2lkID0gMDsKK3N0 YXRpYyBpbnQJZXhlY3V0b3Jfc3RhcnRfbG9ja19pZCA9IDA7CiAKLS8qIFNhdmUgcHJldmlvdXMg cGxhbm5lciBob29rIHVzZXIgdG8gYmUgYSBnb29kIGNpdGl6ZW4gKi8KKy8qIFNhdmUgcHJldmlv dXMgaG9vayB1c2VycyB0byBiZSBhIGdvb2QgY2l0aXplbiAqLwogc3RhdGljIHBsYW5uZXJfaG9v a190eXBlIHByZXZfcGxhbm5lcl9ob29rID0gTlVMTDsKK3N0YXRpYyBFeGVjdXRvclN0YXJ0X2hv b2tfdHlwZSBwcmV2X0V4ZWN1dG9yU3RhcnRfaG9vayA9IE5VTEw7CiAKIAogLyogcGxhbm5lcl9o b29rIGZ1bmN0aW9uIHRvIHByb3ZpZGUgdGhlIGRlc2lyZWQgZGVsYXkgKi8KQEAgLTcwLDExICs3 Nyw0MSBAQCBkZWxheV9leGVjdXRpb25fcGxhbm5lcihRdWVyeSAqcGFyc2UsIGNvbnN0IGNoYXIg KnF1ZXJ5X3N0cmluZywKIAlyZXR1cm4gcmVzdWx0OwogfQogCisvKiBFeGVjdXRvclN0YXJ0X2hv b2sgZnVuY3Rpb24gdG8gcHJvdmlkZSB0aGUgZGVzaXJlZCBkZWxheSAqLworc3RhdGljIHZvaWQK K2RlbGF5X2V4ZWN1dGlvbl9FeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQg ZWZsYWdzKQoreworCS8qIElmIGVuYWJsZWQsIGRlbGF5IGJ5IHRha2luZyBhbmQgcmVsZWFzaW5n IHRoZSBzcGVjaWZpZWQgbG9jayAqLworCWlmIChleGVjdXRvcl9zdGFydF9sb2NrX2lkICE9IDAp CisJeworCQlEaXJlY3RGdW5jdGlvbkNhbGwxKHBnX2Fkdmlzb3J5X2xvY2tfaW50OCwKKwkJCQkJ CQlJbnQ2NEdldERhdHVtKChpbnQ2NCkgZXhlY3V0b3Jfc3RhcnRfbG9ja19pZCkpOworCQlEaXJl Y3RGdW5jdGlvbkNhbGwxKHBnX2Fkdmlzb3J5X3VubG9ja19pbnQ4LAorCQkJCQkJCUludDY0R2V0 RGF0dW0oKGludDY0KSBleGVjdXRvcl9zdGFydF9sb2NrX2lkKSk7CisKKwkJLyoKKwkJICogRW5z dXJlIHRoYXQgd2Ugbm90aWNlIGFueSBwZW5kaW5nIGludmFsaWRhdGlvbnMsIHNpbmNlIHRoZSBh ZHZpc29yeQorCQkgKiBsb2NrIGZ1bmN0aW9ucyBkb24ndCBkbyB0aGlzLgorCQkgKi8KKwkJQWNj ZXB0SW52YWxpZGF0aW9uTWVzc2FnZXMoKTsKKwl9CisKKwkvKiBOb3cgc3RhcnQgdGhlIGV4ZWN1 dG9yLCBwb3NzaWJseSB2aWEgYSBwcmV2aW91cyBob29rIHVzZXIgKi8KKwlpZiAocHJldl9FeGVj dXRvclN0YXJ0X2hvb2spCisJCXByZXZfRXhlY3V0b3JTdGFydF9ob29rKHF1ZXJ5RGVzYywgZWZs YWdzKTsKKwllbHNlCisJCXN0YW5kYXJkX0V4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCBlZmxhZ3Mp OworCisJaWYgKGV4ZWN1dG9yX3N0YXJ0X2xvY2tfaWQgIT0gMCkKKwkJZWxvZyhOT1RJQ0UsICJG aW5pc2hlZCBFeGVjdXRvclN0YXJ0KCk6IENhY2hlZFBsYW4gaXMgJXMiLAorCQkJIHF1ZXJ5RGVz Yy0+Y3BsYW4tPmlzX3ZhbGlkID8gInZhbGlkIiA6ICJub3QgdmFsaWQiKTsKK30KKwogLyogTW9k dWxlIGxvYWQgZnVuY3Rpb24gKi8KIHZvaWQKIF9QR19pbml0KHZvaWQpCiB7Ci0JLyogU2V0IHVw IHRoZSBHVUMgdG8gY29udHJvbCB3aGljaCBsb2NrIGlzIHVzZWQgKi8KKwkvKiBTZXQgdXAgR1VD cyB0byBjb250cm9sIHdoaWNoIGxvY2sgaXMgdXNlZCAqLwogCURlZmluZUN1c3RvbUludFZhcmlh YmxlKCJkZWxheV9leGVjdXRpb24ucG9zdF9wbGFubmluZ19sb2NrX2lkIiwKIAkJCQkJCQkiU2V0 cyB0aGUgYWR2aXNvcnkgbG9jayBJRCB0byBiZSBsb2NrZWQvdW5sb2NrZWQgYWZ0ZXIgcGxhbm5p bmcuIiwKIAkJCQkJCQkiWmVybyBkaXNhYmxlcyB0aGUgZGVsYXkuIiwKQEAgLTg2LDEwICsxMjMs MjIgQEAgX1BHX2luaXQodm9pZCkKIAkJCQkJCQlOVUxMLAogCQkJCQkJCU5VTEwsCiAJCQkJCQkJ TlVMTCk7Ci0KKwlEZWZpbmVDdXN0b21JbnRWYXJpYWJsZSgiZGVsYXlfZXhlY3V0aW9uLmV4ZWN1 dG9yX3N0YXJ0X2xvY2tfaWQiLAorCQkJCQkJCSJTZXRzIHRoZSBhZHZpc29yeSBsb2NrIElEIHRv IGJlIGxvY2tlZC91bmxvY2tlZCBiZWZvcmUgc3RhcnRpbmcgZXhlY3V0aW9uLiIsCisJCQkJCQkJ Ilplcm8gZGlzYWJsZXMgdGhlIGRlbGF5LiIsCisJCQkJCQkJJmV4ZWN1dG9yX3N0YXJ0X2xvY2tf aWQsCisJCQkJCQkJMCwKKwkJCQkJCQkwLCBJTlRfTUFYLAorCQkJCQkJCVBHQ19VU0VSU0VULAor CQkJCQkJCTAsCisJCQkJCQkJTlVMTCwKKwkJCQkJCQlOVUxMLAorCQkJCQkJCU5VTEwpOwogCU1h cmtHVUNQcmVmaXhSZXNlcnZlZCgiZGVsYXlfZXhlY3V0aW9uIik7CiAKLQkvKiBJbnN0YWxsIG91 ciBob29rICovCisJLyogSW5zdGFsbCBvdXIgaG9va3MuICovCiAJcHJldl9wbGFubmVyX2hvb2sg PSBwbGFubmVyX2hvb2s7CiAJcGxhbm5lcl9ob29rID0gZGVsYXlfZXhlY3V0aW9uX3BsYW5uZXI7 CisJcHJldl9FeGVjdXRvclN0YXJ0X2hvb2sgPSBFeGVjdXRvclN0YXJ0X2hvb2s7CisJRXhlY3V0 b3JTdGFydF9ob29rID0gZGVsYXlfZXhlY3V0aW9uX0V4ZWN1dG9yU3RhcnQ7CiB9CmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9leHBlY3RlZC9jYWNoZWQtcGxh bi1yZXBsYW4ub3V0IGIvc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vZXhwZWN0ZWQv Y2FjaGVkLXBsYW4tcmVwbGFuLm91dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwLi4wYWM2YTE3YzJiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9kZWxh eV9leGVjdXRpb24vZXhwZWN0ZWQvY2FjaGVkLXBsYW4tcmVwbGFuLm91dApAQCAtMCwwICsxLDE1 NiBAQAorUGFyc2VkIHRlc3Qgc3BlYyB3aXRoIDIgc2Vzc2lvbnMKKworc3RhcnRpbmcgcGVybXV0 YXRpb246IHMxcHJlcCBzMmxvY2sgczFleGVjIHMyZHJvcGkgczJ1bmxvY2sKK3N0ZXAgczFwcmVw OiBTRVQgcGxhbl9jYWNoZV9tb2RlID0gZm9yY2VfZ2VuZXJpY19wbGFuOworCQkgIFBSRVBBUkUg cSBBUyBTRUxFQ1QgKiBGUk9NIGZvb3YgV0hFUkUgYSA9ICQxOworCQkgIEVYUExBSU4gKENPU1RT IE9GRikgRVhFQ1VURSBxICgxKTsKK1FVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor QXBwZW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgU3VicGxhbnMg UmVtb3ZlZDogMSAgICAgICAgICAgICAgICAgICAgICAgCisgIC0+ICBCaXRtYXAgSGVhcCBTY2Fu IG9uIGZvbzExIGZvb18xICAgICAgIAorICAgICAgICBSZWNoZWNrIENvbmQ6IChhID0gJDEpICAg ICAgICAgICAgICAKKyAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIGZvbzExX2FfaWR4 CisgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChhID0gJDEpICAgICAgICAgIAorKDYgcm93cykK Kworc3RlcCBzMmxvY2s6IFNFTEVDVCBwZ19hZHZpc29yeV9sb2NrKDEyMzQ1KTsKK3BnX2Fkdmlz b3J5X2xvY2sKKy0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAKKygxIHJvdykKKwor c3RlcCBzMWV4ZWM6IExPQUQgJ2RlbGF5X2V4ZWN1dGlvbic7CisJCSAgU0VUIGRlbGF5X2V4ZWN1 dGlvbi5leGVjdXRvcl9zdGFydF9sb2NrX2lkID0gMTIzNDU7CisJCSAgRVhQTEFJTiAoQ09TVFMg T0ZGKSBFWEVDVVRFIHEgKDEpOyA8d2FpdGluZyAuLi4+CitzdGVwIHMyZHJvcGk6IERST1AgSU5E RVggZm9vMTFfYTsKK3N0ZXAgczJ1bmxvY2s6IFNFTEVDVCBwZ19hZHZpc29yeV91bmxvY2soMTIz NDUpOworcGdfYWR2aXNvcnlfdW5sb2NrCistLS0tLS0tLS0tLS0tLS0tLS0KK3QgICAgICAgICAg ICAgICAgIAorKDEgcm93KQorCitzdGVwIHMxZXhlYzogPC4uLiBjb21wbGV0ZWQ+CitzMTogTk9U SUNFOiAgRmluaXNoZWQgRXhlY3V0b3JTdGFydCgpOiBDYWNoZWRQbGFuIGlzIG5vdCB2YWxpZAor czE6IE5PVElDRTogIEZpbmlzaGVkIEV4ZWN1dG9yU3RhcnQoKTogQ2FjaGVkUGxhbiBpcyB2YWxp ZAorUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCitBcHBlbmQgICAgICAgICAgICAgICAgICAgICAgIAorICBTdWJwbGFucyBSZW1vdmVk OiAxICAgICAgICAKKyAgLT4gIFNlcSBTY2FuIG9uIGZvbzExIGZvb18xCisgICAgICAgIEZpbHRl cjogKGEgPSAkMSkgICAgIAorKDQgcm93cykKKworCitzdGFydGluZyBwZXJtdXRhdGlvbjogczFw cmVwMiBzMmxvY2sgczFleGVjMiBzMmRyb3BpIHMydW5sb2NrCitzdGVwIHMxcHJlcDI6IFNFVCBw bGFuX2NhY2hlX21vZGUgPSBmb3JjZV9nZW5lcmljX3BsYW47CisJCSAgUFJFUEFSRSBxMiBBUyBT RUxFQ1QgKiBGUk9NIGZvb3YgV0hFUkUgYSA9IDE7CisJCSAgRVhQTEFJTiAoQ09TVFMgT0ZGKSBF WEVDVVRFIHEyOworczE6IE5PVElDRTogIEZpbmlzaGVkIEV4ZWN1dG9yU3RhcnQoKTogQ2FjaGVk UGxhbiBpcyB2YWxpZAorUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitCaXRtYXAgSGVhcCBTY2FuIG9u IGZvbzExIGZvbyAgICAgICAgIAorICBSZWNoZWNrIENvbmQ6IChhID0gMSkgICAgICAgICAgICAg ICAKKyAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIGZvbzExX2FfaWR4CisgICAgICAgIEluZGV4 IENvbmQ6IChhID0gMSkgICAgICAgICAgIAorKDQgcm93cykKKworc3RlcCBzMmxvY2s6IFNFTEVD VCBwZ19hZHZpc29yeV9sb2NrKDEyMzQ1KTsKK3BnX2Fkdmlzb3J5X2xvY2sKKy0tLS0tLS0tLS0t LS0tLS0KKyAgICAgICAgICAgICAgICAKKygxIHJvdykKKworc3RlcCBzMWV4ZWMyOiBMT0FEICdk ZWxheV9leGVjdXRpb24nOworCQkgIFNFVCBkZWxheV9leGVjdXRpb24uZXhlY3V0b3Jfc3RhcnRf bG9ja19pZCA9IDEyMzQ1OworCQkgIEVYUExBSU4gKENPU1RTIE9GRikgRVhFQ1VURSBxMjsgPHdh aXRpbmcgLi4uPgorc3RlcCBzMmRyb3BpOiBEUk9QIElOREVYIGZvbzExX2E7CitzdGVwIHMydW5s b2NrOiBTRUxFQ1QgcGdfYWR2aXNvcnlfdW5sb2NrKDEyMzQ1KTsKK3BnX2Fkdmlzb3J5X3VubG9j aworLS0tLS0tLS0tLS0tLS0tLS0tCit0ICAgICAgICAgICAgICAgICAKKygxIHJvdykKKworc3Rl cCBzMWV4ZWMyOiA8Li4uIGNvbXBsZXRlZD4KK3MxOiBOT1RJQ0U6ICBGaW5pc2hlZCBFeGVjdXRv clN0YXJ0KCk6IENhY2hlZFBsYW4gaXMgbm90IHZhbGlkCitzMTogTk9USUNFOiAgRmluaXNoZWQg RXhlY3V0b3JTdGFydCgpOiBDYWNoZWRQbGFuIGlzIHZhbGlkCitRVUVSWSBQTEFOICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorU2VxIFNjYW4gb24gZm9vMTEgZm9vCisgIEZpbHRl cjogKGEgPSAxKSAgICAKKygyIHJvd3MpCisKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMxcHJl cDMgczJsb2NrIHMxZXhlYzMgczJkcm9waSBzMnVubG9jaworc3RlcCBzMXByZXAzOiBTRVQgcGxh bl9jYWNoZV9tb2RlID0gZm9yY2VfZ2VuZXJpY19wbGFuOworCQkgIFNFVCBlbmFibGVfcGFydGl0 aW9ud2lzZV9hZ2dyZWdhdGUgPSBvbjsKKwkJICBTRVQgZW5hYmxlX3BhcnRpdGlvbndpc2Vfam9p biA9IG9uOworCQkgIFBSRVBBUkUgcTMgQVMgU0VMRUNUIHQxLmEsIGNvdW50KHQyLmIpIEZST00g Zm9vIHQxLCBmb28gdDIgV0hFUkUgdDEuYSA9IHQyLmEgR1JPVVAgQlkgMTsKKwkJICBFWFBMQUlO IChDT1NUUyBPRkYpIEVYRUNVVEUgcTM7CitzMTogTk9USUNFOiAgRmluaXNoZWQgRXhlY3V0b3JT dGFydCgpOiBDYWNoZWRQbGFuIGlzIHZhbGlkCitRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitBcHBlbmQgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisg IC0+ICBHcm91cEFnZ3JlZ2F0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCisgICAgICAgIEdyb3VwIEtleTogdDEuYSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCisgICAgICAgIC0+ICBNZXJnZSBKb2luICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgIE1lcmdlIENvbmQ6ICh0MS5h ID0gdDIuYSkgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgIC0+ICBJbmRl eCBPbmx5IFNjYW4gdXNpbmcgZm9vMTFfYV9pZHggb24gZm9vMTEgdDEgCisgICAgICAgICAgICAg IC0+ICBNYXRlcmlhbGl6ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAg ICAgICAgICAgICAgICAgIC0+ICBJbmRleCBTY2FuIHVzaW5nIGZvbzExX2FfaWR4IG9uIGZvbzEx IHQyCisgIC0+ICBHcm91cEFnZ3JlZ2F0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCisgICAgICAgIEdyb3VwIEtleTogdDFfMS5hICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIC0+ICBNZXJnZSBKb2luICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgIE1lcmdlIENvbmQ6 ICh0MV8xLmEgPSB0Ml8xLmEpICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgIC0+ ICBTb3J0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAg ICAgICAgICAgICAgIFNvcnQgS2V5OiB0MV8xLmEgICAgICAgICAgICAgICAgICAgICAgICAgICAg CisgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBmb28yIHQxXzEgICAgICAgICAg ICAgICAgICAgCisgICAgICAgICAgICAgIC0+ICBTb3J0ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIFNvcnQgS2V5OiB0Ml8xLmEg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEg U2NhbiBvbiBmb28yIHQyXzEgICAgICAgICAgICAgICAgICAgCisoMTggcm93cykKKworc3RlcCBz MmxvY2s6IFNFTEVDVCBwZ19hZHZpc29yeV9sb2NrKDEyMzQ1KTsKK3BnX2Fkdmlzb3J5X2xvY2sK Ky0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAKKygxIHJvdykKKworc3RlcCBzMWV4 ZWMzOiBMT0FEICdkZWxheV9leGVjdXRpb24nOworCQkgIFNFVCBkZWxheV9leGVjdXRpb24uZXhl Y3V0b3Jfc3RhcnRfbG9ja19pZCA9IDEyMzQ1OworCQkgIEVYUExBSU4gKENPU1RTIE9GRikgRVhF Q1VURSBxMzsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMmRyb3BpOiBEUk9QIElOREVYIGZvbzExX2E7 CitzdGVwIHMydW5sb2NrOiBTRUxFQ1QgcGdfYWR2aXNvcnlfdW5sb2NrKDEyMzQ1KTsKK3BnX2Fk dmlzb3J5X3VubG9jaworLS0tLS0tLS0tLS0tLS0tLS0tCit0ICAgICAgICAgICAgICAgICAKKygx IHJvdykKKworc3RlcCBzMWV4ZWMzOiA8Li4uIGNvbXBsZXRlZD4KK3MxOiBOT1RJQ0U6ICBGaW5p c2hlZCBFeGVjdXRvclN0YXJ0KCk6IENhY2hlZFBsYW4gaXMgbm90IHZhbGlkCitzMTogTk9USUNF OiAgRmluaXNoZWQgRXhlY3V0b3JTdGFydCgpOiBDYWNoZWRQbGFuIGlzIHZhbGlkCitRVUVSWSBQ TEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQXBwZW5kICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCisgIC0+ICBHcm91cEFnZ3JlZ2F0ZSAgICAgICAgICAgICAgICAg ICAgICAgICAKKyAgICAgICAgR3JvdXAgS2V5OiB0MS5hICAgICAgICAgICAgICAgICAgICAgIAor ICAgICAgICAtPiAgTWVyZ2UgSm9pbiAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAg ICAgIE1lcmdlIENvbmQ6ICh0MS5hID0gdDIuYSkgICAgICAKKyAgICAgICAgICAgICAgLT4gIFNv cnQgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBTb3J0IEtleTog dDEuYSAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBmb28x MSB0MSAKKyAgICAgICAgICAgICAgLT4gIFNvcnQgICAgICAgICAgICAgICAgICAgICAgIAorICAg ICAgICAgICAgICAgICAgICBTb3J0IEtleTogdDIuYSAgICAgICAgICAgCisgICAgICAgICAgICAg ICAgICAgIC0+ICBTZXEgU2NhbiBvbiBmb28xMSB0MiAKKyAgLT4gIEdyb3VwQWdncmVnYXRlICAg ICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICBHcm91cCBLZXk6IHQxXzEuYSAgICAgICAg ICAgICAgICAgICAgCisgICAgICAgIC0+ICBNZXJnZSBKb2luICAgICAgICAgICAgICAgICAgICAg ICAKKyAgICAgICAgICAgICAgTWVyZ2UgQ29uZDogKHQxXzEuYSA9IHQyXzEuYSkgIAorICAgICAg ICAgICAgICAtPiAgU29ydCAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAg ICAgIFNvcnQgS2V5OiB0MV8xLmEgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgLT4gIFNl cSBTY2FuIG9uIGZvbzIgdDFfMQorICAgICAgICAgICAgICAtPiAgU29ydCAgICAgICAgICAgICAg ICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIFNvcnQgS2V5OiB0Ml8xLmEgICAgICAgICAK KyAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGZvbzIgdDJfMQorKDIxIHJvd3Mp CisKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL3NwZWNzL2Nh Y2hlZC1wbGFuLXJlcGxhbi5zcGVjIGIvc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24v c3BlY3MvY2FjaGVkLXBsYW4tcmVwbGFuLnNwZWMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMC4uM2M5MmNiZDVjNgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVs ZXMvZGVsYXlfZXhlY3V0aW9uL3NwZWNzL2NhY2hlZC1wbGFuLXJlcGxhbi5zcGVjCkBAIC0wLDAg KzEsNjEgQEAKKyMgVGVzdCB0byBjaGVjayB0aGF0IGludmFsaWRhdGlvbiBvZiBjYWNoZWQgZ2Vu ZXJpYyBwbGFucyBkdXJpbmcgRXhlY3V0b3JTdGFydAorIyBjb3JyZWN0bHkgdHJpZ2dlcnMgcmVw bGFubmluZyBhbmQgcmUtZXhlY3V0aW9uLgorCitzZXR1cAoreworICBDUkVBVEUgVEFCTEUgZm9v IChhIGludCwgYiB0ZXh0KSBQQVJUSVRJT04gQlkgTElTVChhKTsKKyAgQ1JFQVRFIFRBQkxFIGZv bzEgUEFSVElUSU9OIE9GIGZvbyBGT1IgVkFMVUVTIElOICgxKSBQQVJUSVRJT04gQlkgTElTVCAo YSk7CisgIENSRUFURSBUQUJMRSBmb28xMSBQQVJUSVRJT04gT0YgZm9vMSBGT1IgVkFMVUVTIElO ICgxKTsKKyAgQ1JFQVRFIElOREVYIGZvbzExX2EgT04gZm9vMSAoYSk7CisgIENSRUFURSBUQUJM RSBmb28yIFBBUlRJVElPTiBPRiBmb28gRk9SIFZBTFVFUyBJTiAoMik7CisgIENSRUFURSBWSUVX IGZvb3YgQVMgU0VMRUNUICogRlJPTSBmb287Cit9CisKK3RlYXJkb3duCit7CisgIERST1AgVklF VyBmb292OworICBEUk9QIFRBQkxFIGZvbzsKK30KKworc2Vzc2lvbiAiczEiCisjIEFwcGVuZCB3 aXRoIHJ1bi10aW1lIHBydW5pbmcKK3N0ZXAgInMxcHJlcCIgICB7IFNFVCBwbGFuX2NhY2hlX21v ZGUgPSBmb3JjZV9nZW5lcmljX3BsYW47CisJCSAgUFJFUEFSRSBxIEFTIFNFTEVDVCAqIEZST00g Zm9vdiBXSEVSRSBhID0gJDE7CisJCSAgRVhQTEFJTiAoQ09TVFMgT0ZGKSBFWEVDVVRFIHEgKDEp OyB9CisKKyMgbm8gQXBwZW5kIGNhc2UgKG9ubHkgb25lIHBhcnRpdGlvbiBzZWxlY3RlZCBieSB0 aGUgcGxhbm5lcikKK3N0ZXAgInMxcHJlcDIiICAgeyBTRVQgcGxhbl9jYWNoZV9tb2RlID0gZm9y Y2VfZ2VuZXJpY19wbGFuOworCQkgIFBSRVBBUkUgcTIgQVMgU0VMRUNUICogRlJPTSBmb292IFdI RVJFIGEgPSAxOworCQkgIEVYUExBSU4gKENPU1RTIE9GRikgRVhFQ1VURSBxMjsgfQorCisjIEFw cGVuZCB3aXRoIHBhcnRpdGlvbi13aXNlIGpvaW4gYWdncmVnYXRlIGFuZCBqb2luIHBsYW5zIGFz IGNoaWxkIHN1YnBsYW5zCitzdGVwICJzMXByZXAzIiAgIHsgU0VUIHBsYW5fY2FjaGVfbW9kZSA9 IGZvcmNlX2dlbmVyaWNfcGxhbjsKKwkJICBTRVQgZW5hYmxlX3BhcnRpdGlvbndpc2VfYWdncmVn YXRlID0gb247CisJCSAgU0VUIGVuYWJsZV9wYXJ0aXRpb253aXNlX2pvaW4gPSBvbjsKKwkJICBQ UkVQQVJFIHEzIEFTIFNFTEVDVCB0MS5hLCBjb3VudCh0Mi5iKSBGUk9NIGZvbyB0MSwgZm9vIHQy IFdIRVJFIHQxLmEgPSB0Mi5hIEdST1VQIEJZIDE7CisJCSAgRVhQTEFJTiAoQ09TVFMgT0ZGKSBF WEVDVVRFIHEzOyB9CisKKyMgRXhlY3V0ZXMgYSBnZW5lcmljIHBsYW4KK3N0ZXAgInMxZXhlYyIJ eyBMT0FEICdkZWxheV9leGVjdXRpb24nOworCQkgIFNFVCBkZWxheV9leGVjdXRpb24uZXhlY3V0 b3Jfc3RhcnRfbG9ja19pZCA9IDEyMzQ1OworCQkgIEVYUExBSU4gKENPU1RTIE9GRikgRVhFQ1VU RSBxICgxKTsgfQorc3RlcCAiczFleGVjMiIJeyBMT0FEICdkZWxheV9leGVjdXRpb24nOworCQkg IFNFVCBkZWxheV9leGVjdXRpb24uZXhlY3V0b3Jfc3RhcnRfbG9ja19pZCA9IDEyMzQ1OworCQkg IEVYUExBSU4gKENPU1RTIE9GRikgRVhFQ1VURSBxMjsgfQorc3RlcCAiczFleGVjMyIJeyBMT0FE ICdkZWxheV9leGVjdXRpb24nOworCQkgIFNFVCBkZWxheV9leGVjdXRpb24uZXhlY3V0b3Jfc3Rh cnRfbG9ja19pZCA9IDEyMzQ1OworCQkgIEVYUExBSU4gKENPU1RTIE9GRikgRVhFQ1VURSBxMzsg fQorCitzZXNzaW9uICJzMiIKK3N0ZXAgInMybG9jayIJeyBTRUxFQ1QgcGdfYWR2aXNvcnlfbG9j aygxMjM0NSk7IH0KK3N0ZXAgInMydW5sb2NrIgl7IFNFTEVDVCBwZ19hZHZpc29yeV91bmxvY2so MTIzNDUpOyB9CitzdGVwICJzMmRyb3BpIgl7IERST1AgSU5ERVggZm9vMTFfYTsgfQorCisjIFdo aWxlICJzMWV4ZWMiLCBldGMuIHdhaXQgdG8gYWNxdWlyZSB0aGUgYWR2aXNvcnkgbG9jaywgInMy ZHJvcCIgaXMgYWJsZSB0bworIyBkcm9wIHRoZSBpbmRleCBiZWluZyB1c2VkIGluIHRoZSBjYWNo ZWQgcGxhbi4gIFdoZW4gInMxZXhlYyIgaXMgdGhlbgorIyB1bmJsb2NrZWQgYW5kIGluaXRpYWxp emVzIHRoZSBjYWNoZWQgcGxhbiBmb3IgZXhlY3V0aW9uLCBpdCBkZXRlY3RzIHRoZQorIyBjb25j dXJyZW50IGluZGV4IGRyb3AgYW5kIGNhdXNlcyB0aGUgY2FjaGVkIHBsYW4gdG8gYmUgZGlzY2Fy ZGVkIGFuZAorIyByZWNyZWF0ZWQgd2l0aG91dCB0aGUgaW5kZXguCitwZXJtdXRhdGlvbiAiczFw cmVwIiAiczJsb2NrIiAiczFleGVjIiAiczJkcm9waSIgInMydW5sb2NrIgorcGVybXV0YXRpb24g InMxcHJlcDIiICJzMmxvY2siICJzMWV4ZWMyIiAiczJkcm9waSIgInMydW5sb2NrIgorcGVybXV0 YXRpb24gInMxcHJlcDMiICJzMmxvY2siICJzMWV4ZWMzIiAiczJkcm9waSIgInMydW5sb2NrIgot LSAKMi4zNS4zCgo= --000000000000cf239e0600bdd6af--