Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1ehjUe-0002Ym-DL for pgsql-hackers@arkaria.postgresql.org; Fri, 02 Feb 2018 22:07:36 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ehjUd-00072L-DW for pgsql-hackers@arkaria.postgresql.org; Fri, 02 Feb 2018 22:07:35 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1ehjUd-000727-1V for pgsql-hackers@lists.postgresql.org; Fri, 02 Feb 2018 22:07:35 +0000 Received: from mail-wm0-x241.google.com ([2a00:1450:400c:c09::241]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1ehjUV-00050o-FH for pgsql-hackers@postgresql.org; Fri, 02 Feb 2018 22:07:34 +0000 Received: by mail-wm0-x241.google.com with SMTP id j21-v6so4493478wmh.1 for ; Fri, 02 Feb 2018 14:07:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=Dh/1ToW0WncvnVawFdaoOTVtawbH0WS9w9JZLYJvd9w=; b=lFDlHKkij7+zSJgM/tQEz9tVeGA75nqBd4EwD2UpNf/jHEpi4MoRuQKL6QjatK60Hf ndU8nrLv2nQAvWuFvcPJnlkhNslsl6ongCzq7jOalexmAuBkDy8gz0icjQXLyiqDKAsW HG2Hou7FNeFmCrQu25egzF4jO7dmW6zPUqcsROWVQ9CO0P8oUZPwMG+MXJfwCLNM1icQ h26+G0+G82Ji87zekTFV48INU5hqDXZdam9NOZ7uP41eRm5BVkmMNs0RyU3mAEOhMOg4 Zwf5rga+0Okj8B8NAAJT2Q5I3r4lrljJ2BrBeyq77DJ+YTYIrVQtgVFyI5jhcQWzrDQa KaAg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=Dh/1ToW0WncvnVawFdaoOTVtawbH0WS9w9JZLYJvd9w=; b=pttfbsO9j95V6Qm4tVXjsi0gCz89G/3i2l9IIyWh8PlMWypULCYjeeNDctKlHHNcJG a4xQWtHU9PdYiDgnD4hbLdD6IoloVMbDCmuDOYvX8vpdHbdJrZ9XyMktmC659PgYaCA1 ZoCoeR5gaDoiiHIntMUgH1zFc8knaFxFEppp057qg0cdU4fCEig916DvMoTYYMMopRlq jpRj7qM8dM7CCaLbJZ7LMGvkktQWNy2dcuWqAz9NseNA4B+u8CHMDug1Fq6d6SvGcLjL y9PJUs2THILUU4rOR9RnGefGVS3AHHeLIsUtWh3JgS6dtD+n71yy+iY3dXfaQx7awaTq X9DQ== X-Gm-Message-State: AKwxytfvDkEJyrurM90ymq5vCK0AucyO2fmo+9MUGt7xHGTT88pZyPnF 9ZNwFlFbCPCEH9p7V8au/cMSHDc4qnv9artPmYs= X-Google-Smtp-Source: AH8x226IpEA3XMyxmrPlyQf4AJdbK475dCVlZzgXnxlbGF65e8RwFgu6IpCwklH0nkQOsvgkhAWs3/Mp3ddefD/Emp8= X-Received: by 10.28.143.196 with SMTP id r187mr6888494wmd.68.1517609245397; Fri, 02 Feb 2018 14:07:25 -0800 (PST) MIME-Version: 1.0 Received: by 10.223.196.70 with HTTP; Fri, 2 Feb 2018 14:06:44 -0800 (PST) In-Reply-To: References: <623395617.20171113141500@gf.microolap.com> From: Pavel Stehule Date: Fri, 2 Feb 2018 23:06:44 +0100 Message-ID: Subject: Re: [HACKERS] proposal: schema variables To: Pavel Golub Cc: PostgreSQL Hackers Content-Type: multipart/mixed; boundary="001a1146951efb0c25056441ef05" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --001a1146951efb0c25056441ef05 Content-Type: multipart/alternative; boundary="001a1146951efb0c1f056441ef03" --001a1146951efb0c1f056441ef03 Content-Type: text/plain; charset="UTF-8" Hi I wrote proof concept of schema variables. The patch is not nice, but the functionality is almost complete (for scalars only) and can be good enough for playing with this concept. I recap a goals (the order is random): 1. feature like PL/SQL package variables (with similar content life cycle) 2. available from any PL used by PostgreSQL, data can be shared between different PL 3. possibility to store short life data in fast secured storage 4. possibility to pass parameters and results to/from anonymous blocks 5. session variables with possibility to process static code check 6. multiple API available from different environments - SQL commands, SQL functions, internal functions 7. data are stored in binary form Example: CREATE VARIABLE public.foo AS integer; LET foo = 10 + 20; DO $$ declare x int = random() * 1000; BEGIN RAISE NOTICE '%', foo; LET foo = x + 100; END; $$; SELECT public.foo + 10; SELECT * FROM data WHERE col = foo; All implemented features are described by regress tests Interesting note - it is running without any modification of plpgsql code. Regards Pavel --001a1146951efb0c1f056441ef03 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi

I wrote proof concept of schema varia= bles. The patch is not nice, but the functionality is almost complete (for = scalars only) and can be good enough for playing with this concept.
I recap a goals (the order is random):

1. feature like = PL/SQL package variables (with similar content life cycle)
2. avai= lable from any PL used by PostgreSQL, data can be shared between different = PL
3. possibility to store short life data in fast secured storage=
4. possibility to pass parameters and results to/from anonymous b= locks
5. session variables with possibility to process static code= check
6. multiple API available from different environments = - SQL commands, SQL functions, internal functions
7. data are= stored in binary form

Example:

CREAT= E VARIABLE public.foo AS integer;

LET foo =3D 10 + 20;

DO $$
declare x int =3D random() * 1000;
BEGIN=
=C2=A0 RAISE NOTICE '%', foo;
=C2=A0 LET fo= o =3D x + 100;
END;
$$;

SELECT public.foo + 1= 0;
SELECT * FROM data WHERE col =3D foo;

All implemented features are described by regress tests

In= teresting note - it is running without any modification of plpgsql code.

= Regards

Pavel
--001a1146951efb0c1f056441ef03-- --001a1146951efb0c25056441ef05 Content-Type: text/x-patch; charset="US-ASCII"; name="schema-variables-poc.patch" Content-Disposition: attachment; filename="schema-variables-poc.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_jd6gtq490 ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sIGIvZG9jL3NyYy9zZ21sL2Nh dGFsb2dzLnNnbWwKaW5kZXggNzFlMjBmMjc0MC4uZmJmNzhlNjAyZCAxMDA2NDQKLS0tIGEvZG9j L3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwK QEAgLTE4MTMsNyArMTgxMyw4IEBAIFNDUkFNLVNIQS0yNTYkPHJlcGxhY2VhYmxlPiZsdDtpdGVy YXRpb24gY291bnQmZ3Q7PC9yZXBsYWNlYWJsZT46PHJlcGxhY2VhYmxlPiZsCiAgICAgICAgPGxp dGVyYWw+bTwvbGl0ZXJhbD4gPSBtYXRlcmlhbGl6ZWQgdmlldywKICAgICAgICA8bGl0ZXJhbD5j PC9saXRlcmFsPiA9IGNvbXBvc2l0ZSB0eXBlLAogICAgICAgIDxsaXRlcmFsPmY8L2xpdGVyYWw+ ID0gZm9yZWlnbiB0YWJsZSwKLSAgICAgICA8bGl0ZXJhbD5wPC9saXRlcmFsPiA9IHBhcnRpdGlv bmVkIHRhYmxlCisgICAgICAgPGxpdGVyYWw+cDwvbGl0ZXJhbD4gPSBwYXJ0aXRpb25lZCB0YWJs ZSwKKyAgICAgICA8bGl0ZXJhbD5WPC9saXRlcmFsPiA9IHNjaGVtYSB2YXJpYWJsZQogICAgICAg PC9lbnRyeT4KICAgICAgPC9yb3c+CiAKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9mdW5jLnNn bWwgYi9kb2Mvc3JjL3NnbWwvZnVuYy5zZ21sCmluZGV4IDQ4N2M3ZmY3NTAuLjUwMzFjZDRkNzAg MTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9mdW5jLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2Z1 bmMuc2dtbApAQCAtMTU3NDIsNiArMTU3NDIsODIgQEAgU0VMRUNUICogRlJPTSBwZ19sc19kaXIo Jy4nKSBXSVRIIE9SRElOQUxJVFkgQVMgdChscyxuKTsKIAogIDwvc2VjdDE+CiAKKyA8c2VjdDEg aWQ9ImZ1bmN0aW9ucy1zY2hlbWF2YXIiPgorICA8dGl0bGU+RnVuY3Rpb25zIGZvciBhY2Nlc3Mg dG8gc2NoZW1hIHZhcmlhYmxlczwvdGl0bGU+CisKKyAgPGluZGV4dGVybSB6b25lPSJmdW5jdGlv bnMtc2NoZW1hdmFyIj4KKyAgIDxwcmltYXJ5PkZ1bmN0aW9ucyBmb3IgYWNjZXNzIHRvIHNjaGVt YSB2YXJpYWJsZXM8L3ByaW1hcnk+CisgICA8c2Vjb25kYXJ5PmZ1bmN0aW9uczwvc2Vjb25kYXJ5 PgorICA8L2luZGV4dGVybT4KKworICA8aW5kZXh0ZXJtPgorICAgPHByaW1hcnk+Z2V0X3NjaGVt YV92YXJpYWJsZTwvcHJpbWFyeT4KKyAgPC9pbmRleHRlcm0+CisKKyAgPGluZGV4dGVybT4KKyAg IDxwcmltYXJ5PnNldF9zY2hlbWFfdmFyaWFibGU8L3ByaW1hcnk+CisgIDwvaW5kZXh0ZXJtPgor CisgIDxwYXJhPgorICAgVGhlc2UgZnVuY3Rpb25zIGFsbG93IHJlYWRpbmcgYW5kIHdyaXRpbmcg c2NoZW1hIHZhcmlhYmxlcyB2YWx1ZXMuCisgIDwvcGFyYT4KKworICA8dGFibGUgaWQ9ImZ1bmN0 aW9ucy1zY2hlbWF2YXItdGFiIj4KKyAgIDx0aXRsZT5GdW5jdGlvbnMgZm9yIGFjY2VzcyB0byBj aGVtYSB2YXJpYWJsZXM8L3RpdGxlPgorICAgPHRncm91cCBjb2xzPSI0Ij4KKyAgICA8dGhlYWQ+ CisgICAgIDxyb3c+CisgICAgICA8ZW50cnk+RnVuY3Rpb248L2VudHJ5PgorICAgICAgPGVudHJ5 PkFyZ3VtZW50IFR5cGU8L2VudHJ5PgorICAgICAgPGVudHJ5PlJldHVybiBUeXBlPC9lbnRyeT4K KyAgICAgIDxlbnRyeT5EZXNjcmlwdGlvbjwvZW50cnk+CisgICAgIDwvcm93PgorICAgIDwvdGhl YWQ+CisKKyAgICA8dGJvZHk+CisgICAgIDxyb3c+CisgICAgICA8ZW50cnk+PGxpdGVyYWw+PGZ1 bmN0aW9uPmdldF9zY2hlbWFfdmFyaWFibGUoPHBhcmFtZXRlcj52YXJpYWJsZTwvcGFyYW1ldGVy PiwgPHBhcmFtZXRlcj5leHBlY3RlZCB0eXBlPC9wYXJhbWV0ZXI+KTwvZnVuY3Rpb24+PC9saXRl cmFsPjwvZW50cnk+CisgICAgICA8ZW50cnk+PHR5cGU+cmVnY2xhc3M8L3R5cGU+LCA8dHlwZT5h bnllbGVtZW50PC90eXBlPjwvZW50cnk+CisgICAgICA8ZW50cnk+PHR5cGU+YW55ZWxlbWVudDwv dHlwZT48L2VudHJ5PgorICAgICAgPGVudHJ5PgorICAgICAgIFJldHVybnMgdmFsdWUgb2Ygc2No ZW1hIHZhcmlhYmxlcyBjb3ZlcnRlZCB0byBleHBlY3RlZCB0eXBlLgorICAgICAgPC9lbnRyeT4K KyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeT48bGl0ZXJhbD48ZnVuY3Rp b24+c2V0X3NjaGVtYV92YXJpYWJsZSg8cGFyYW1ldGVyPnZhcmlhYmxlPC9wYXJhbWV0ZXI+LCA8 cGFyYW1ldGVyPnZhbHVlPC9wYXJhbWV0ZXI+KTwvZnVuY3Rpb24+PC9saXRlcmFsPjwvZW50cnk+ CisgICAgICA8ZW50cnk+PHR5cGU+cmVnY2xhc3M8L3R5cGU+LCA8dHlwZT5hbnllbGVtZW50PC90 eXBlPjwvZW50cnk+CisgICAgICA8ZW50cnk+PHR5cGU+dm9pZDwvdHlwZT48L2VudHJ5PgorICAg ICAgPGVudHJ5PgorICAgICAgIFNldCBhIHZhbHVlIG9mIHNjaGVtYSB2YXJpYWJsZS4gVmFsdWUg aXMgY29udmVydGVkIHRvIHR5cGUgb2Ygc2NoZW1hIHZhcmlhYmxlLgorICAgICAgPC9lbnRyeT4K KyAgICAgPC9yb3c+CisKKyAgICA8L3Rib2R5PgorICAgPC90Z3JvdXA+CisgIDwvdGFibGU+CisK KyAgPHBhcmE+CisgICBUaGUgdXNhZ2UgaXMgdmVyeSBzaW1wbGU6Cis8cHJvZ3JhbWxpc3Rpbmc+ CitDUkVBVEUgVEVNUCBWQVJJQUJMRSBmb28gQVMgbnVtZXJpYzsKK1NFTEVDVCBzZXRfc2NoZW1h X3ZhcmlhYmxlKCdmb28nLCAzNDUuNDQ1KTsKKyBzZXRfc2NoZW1hX3ZhcmlhYmxlIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBnZXRfc2NoZW1hX3ZhcmlhYmxl KCdmb28nLCBudWxsOjpudW1lcmljKTsKKworIGdldF9zY2hlbWFfdmFyaWFibGUgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAzNDUuNDQ1CisoMSByb3cpCis8L3Byb2dyYW1s aXN0aW5nPgorICA8L3BhcmE+CisKKyA8L3NlY3QxPgorCiAgPHNlY3QxIGlkPSJmdW5jdGlvbnMt aW5mbyI+CiAgIDx0aXRsZT5TeXN0ZW0gSW5mb3JtYXRpb24gRnVuY3Rpb25zPC90aXRsZT4KIApk aWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9hbGxmaWxlcy5zZ21sIGIvZG9jL3NyYy9zZ21s L3JlZi9hbGxmaWxlcy5zZ21sCmluZGV4IDIyZTY4OTMyMTEuLjFkMzRmNzJiZGQgMTAwNjQ0Ci0t LSBhL2RvYy9zcmMvc2dtbC9yZWYvYWxsZmlsZXMuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVm L2FsbGZpbGVzLnNnbWwKQEAgLTk5LDYgKzk5LDcgQEAgQ29tcGxldGUgbGlzdCBvZiB1c2FibGUg c2dtbCBzb3VyY2UgZmlsZXMgaW4gdGhpcyBkaXJlY3RvcnkuCiA8IUVOVElUWSBjcmVhdGVUeXBl ICAgICAgICAgU1lTVEVNICJjcmVhdGVfdHlwZS5zZ21sIj4KIDwhRU5USVRZIGNyZWF0ZVVzZXIg ICAgICAgICBTWVNURU0gImNyZWF0ZV91c2VyLnNnbWwiPgogPCFFTlRJVFkgY3JlYXRlVXNlck1h cHBpbmcgIFNZU1RFTSAiY3JlYXRlX3VzZXJfbWFwcGluZy5zZ21sIj4KKzwhRU5USVRZIGNyZWF0 ZVZhcmlhYmxlICAgICBTWVNURU0gImNyZWF0ZV92YXJpYWJsZS5zZ21sIj4KIDwhRU5USVRZIGNy ZWF0ZVZpZXcgICAgICAgICBTWVNURU0gImNyZWF0ZV92aWV3LnNnbWwiPgogPCFFTlRJVFkgZGVh bGxvY2F0ZSAgICAgICAgIFNZU1RFTSAiZGVhbGxvY2F0ZS5zZ21sIj4KIDwhRU5USVRZIGRlY2xh cmUgICAgICAgICAgICBTWVNURU0gImRlY2xhcmUuc2dtbCI+CkBAIC0xNDcsNiArMTQ4LDcgQEAg Q29tcGxldGUgbGlzdCBvZiB1c2FibGUgc2dtbCBzb3VyY2UgZmlsZXMgaW4gdGhpcyBkaXJlY3Rv cnkuCiA8IUVOVElUWSBkcm9wVHlwZSAgICAgICAgICAgU1lTVEVNICJkcm9wX3R5cGUuc2dtbCI+ CiA8IUVOVElUWSBkcm9wVXNlciAgICAgICAgICAgU1lTVEVNICJkcm9wX3VzZXIuc2dtbCI+CiA8 IUVOVElUWSBkcm9wVXNlck1hcHBpbmcgICAgU1lTVEVNICJkcm9wX3VzZXJfbWFwcGluZy5zZ21s Ij4KKzwhRU5USVRZIGRyb3BWYXJpYWJsZSAgICAgICBTWVNURU0gImRyb3BfdmFyaWFibGUuc2dt bCI+CiA8IUVOVElUWSBkcm9wVmlldyAgICAgICAgICAgU1lTVEVNICJkcm9wX3ZpZXcuc2dtbCI+ CiA8IUVOVElUWSBlbmQgICAgICAgICAgICAgICAgU1lTVEVNICJlbmQuc2dtbCI+CiA8IUVOVElU WSBleGVjdXRlICAgICAgICAgICAgU1lTVEVNICJleGVjdXRlLnNnbWwiPgpAQCAtMTU1LDYgKzE1 Nyw3IEBAIENvbXBsZXRlIGxpc3Qgb2YgdXNhYmxlIHNnbWwgc291cmNlIGZpbGVzIGluIHRoaXMg ZGlyZWN0b3J5LgogPCFFTlRJVFkgZ3JhbnQgICAgICAgICAgICAgIFNZU1RFTSAiZ3JhbnQuc2dt bCI+CiA8IUVOVElUWSBpbXBvcnRGb3JlaWduU2NoZW1hIFNZU1RFTSAiaW1wb3J0X2ZvcmVpZ25f c2NoZW1hLnNnbWwiPgogPCFFTlRJVFkgaW5zZXJ0ICAgICAgICAgICAgIFNZU1RFTSAiaW5zZXJ0 LnNnbWwiPgorPCFFTlRJVFkgbGV0ICAgICAgICAgICAgICAgIFNZU1RFTSAibGV0LnNnbWwiPgog PCFFTlRJVFkgbGlzdGVuICAgICAgICAgICAgIFNZU1RFTSAibGlzdGVuLnNnbWwiPgogPCFFTlRJ VFkgbG9hZCAgICAgICAgICAgICAgIFNZU1RFTSAibG9hZC5zZ21sIj4KIDwhRU5USVRZIGxvY2sg ICAgICAgICAgICAgICBTWVNURU0gImxvY2suc2dtbCI+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3Nn bWwvcmVmL2NyZWF0ZV92YXJpYWJsZS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdmFy aWFibGUuc2dtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4wMzdmYTA4 N2Y1Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdmFyaWFibGUu c2dtbApAQCAtMCwwICsxLDE0NCBAQAorPCEtLQorZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdmFy aWFibGUuc2dtbAorUG9zdGdyZVNRTCBkb2N1bWVudGF0aW9uCistLT4KKworPHJlZmVudHJ5IGlk PSJzcWwtY3JlYXRldmFyaWFibGUiPgorIDxpbmRleHRlcm0gem9uZT0ic3FsLWNyZWF0ZXZhcmlh YmxlIj4KKyAgPHByaW1hcnk+Q1JFQVRFIFZBUklBQkxFPC9wcmltYXJ5PgorIDwvaW5kZXh0ZXJt PgorCisgPHJlZm1ldGE+CisgIDxyZWZlbnRyeXRpdGxlPkNSRUFURSBWQVJJQUJMRTwvcmVmZW50 cnl0aXRsZT4KKyAgPG1hbnZvbG51bT43PC9tYW52b2xudW0+CisgIDxyZWZtaXNjaW5mbz5TUUwg LSBMYW5ndWFnZSBTdGF0ZW1lbnRzPC9yZWZtaXNjaW5mbz4KKyA8L3JlZm1ldGE+CisKKyA8cmVm bmFtZWRpdj4KKyAgPHJlZm5hbWU+Q1JFQVRFIFZBUklBQkxFPC9yZWZuYW1lPgorICA8cmVmcHVy cG9zZT5kZWZpbmUgYSBuZXcgc2NoZW1hIHNlY3VyZSB0eXBlZCB2YXJpYWJsZTwvcmVmcHVycG9z ZT4KKyA8L3JlZm5hbWVkaXY+CisKKyA8cmVmc3lub3BzaXNkaXY+Cis8c3lub3BzaXM+CitDUkVB VEUgVkFSSUFCTEUgWyBJRiBOT1QgRVhJU1RTIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBbIEFTIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPmRhdGFfdHlwZTwvcmVwbGFjZWFibGU+IF0KKzwvc3lub3BzaXM+CisgPC9yZWZzeW5vcHNp c2Rpdj4KKworIDxyZWZzZWN0MT4KKyAgPHRpdGxlPkRlc2NyaXB0aW9uPC90aXRsZT4KKworICA8 cGFyYT4KKyAgIDxjb21tYW5kPkNSRUFURSBWQVJJQUJMRTwvY29tbWFuZD4gY3JlYXRlcyBhIG5l dyBzY2hlbWEgdmFyaWFibGUuCisgICBUaGVzZSB2YXJpYWJsZXMgYXJlIG1lbW9yeSBvbmx5IG5v biB0cmFuc2FjdGlvbmFsLCBidXQgdHlwZWQgYW5kCisgICBzZWN1cmUuIFRoZSBhY2Nlc3MgaXMg Y29udHJvbGxlZCBieSByaWdodHMgZGVmaW5lZCBieSBjb21tYW5kCisgICA8Y29tbWFuZD5HUkFO VDwvY29tbWFuZD4gYW5kIGNvbW1hbmQgPGNvbW1hbmQ+UkVWT0tFPC9jb21tYW5kPi4KKyAgPC9w YXJhPgorCisgIDxwYXJhPgorICAgVGhlIHNjaGVtYSB2YXJpYWJsZSBpcyBpbml0aWFsaXplZCB0 byBOVUxMIHZhbHVlLiBUaGUgY29udGVudCBvZgorICAgdmFyaWFibGUgaXMgbG9zdCB3aGVuIHNl c3Npb24gaXMgZGVzdHJveWVkLgorICA8L3BhcmE+CisKKyAgPHBhcmE+CisgICBUaGUgc2NoZW1h IHZhcmlhYmxlIGNhbiBiZSBhbnkgc2NhbGFyIG9ubHkuCisgICB0eXBlLgorICA8L3BhcmE+CisK KyAgPHBhcmE+CisgICBBZnRlciBhIHZhcmlhYmxlIGlzIGNyZWF0ZWQsIHlvdSB1c2UgdGhlIHNw ZWNpYWwgZnVuY3Rpb25zCisgICA8ZnVuY3Rpb24+Z2V0X3NjaGVtYV92YXJpYWJsZXM8L2Z1bmN0 aW9uPiwgPGZ1bmN0aW9uPnNldF9zY2hlbWFfdmFyaWFibGVzPC9mdW5jdGlvbj4uCisgICB0eXBl LgorICA8L3BhcmE+CisgPC9yZWZzZWN0MT4KKworIDxyZWZzZWN0MT4KKyAgPHRpdGxlPlBhcmFt ZXRlcnM8L3RpdGxlPgorCisgIDx2YXJpYWJsZWxpc3Q+CisgICA8dmFybGlzdGVudHJ5PgorICAg IDx0ZXJtPjxsaXRlcmFsPklGIE5PVCBFWElTVFM8L2xpdGVyYWw+PC90ZXJtPgorICAgIDxsaXN0 aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBEbyBub3QgdGhyb3cgYW4gZXJyb3IgaWYgYSByZWxh dGlvbiB3aXRoIHRoZSBzYW1lIG5hbWUgYWxyZWFkeSBleGlzdHMuCisgICAgICBBIG5vdGljZSBp cyBpc3N1ZWQgaW4gdGhpcyBjYXNlLiBOb3RlIHRoYXQgdGhlcmUgaXMgbm8gZ3VhcmFudGVlIHRo YXQKKyAgICAgIHRoZSBleGlzdGluZyByZWxhdGlvbiBpcyBhbnl0aGluZyBsaWtlIHRoZSB2YXJp YWJsZSB0aGF0IHdvdWxkIGhhdmUKKyAgICAgIGJlZW4gY3JlYXRlZCAtIGl0IG1pZ2h0IG5vdCBl dmVuIGJlIGEgdmFyaWFibGUuCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92 YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+PHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPjwvdGVybT4KKyAgICA8bGlzdGl0 ZW0+CisgICAgIDxwYXJhPgorICAgICAgVGhlIG5hbWUgKG9wdGlvbmFsbHkgc2NoZW1hLXF1YWxp ZmllZCkgb2YgdGhlIHZhcmlhYmxlIHRvIGJlIGNyZWF0ZWQuCisgICAgIDwvcGFyYT4KKyAgICA8 L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAg PHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmRhdGFfdHlwZTwvcmVwbGFjZWFi bGU+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBUaGUgbmFtZSAo b3B0aW9uYWxseSBzY2hlbWEtcXVhbGlmaWVkKSBvZiB0aGUgZGF0YSB0eXBlIG9mdmFyaWFibGUg dG8gYmUgY3JlYXRlZC4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxp c3RlbnRyeT4KKyAgPC92YXJpYWJsZWxpc3Q+CisgPC9yZWZzZWN0MT4KKworIDxyZWZzZWN0MT4K KyAgPHRpdGxlPk5vdGVzPC90aXRsZT4KKworICA8cGFyYT4KKyAgIFVzZSA8Y29tbWFuZD5EUk9Q IFZBUklBQkxFPC9jb21tYW5kPiB0byByZW1vdmUgYSB2YXJpYWJsZS4KKyAgPC9wYXJhPgorIDwv cmVmc2VjdDE+CisKKyA8cmVmc2VjdDE+CisgIDx0aXRsZT5FeGFtcGxlczwvdGl0bGU+CisKKyAg PHBhcmE+CisgICBDcmVhdGUgYW4gaW50ZWdlciB2YXJpYWJsZSA8bGl0ZXJhbD52YXIxPC9saXRl cmFsPjoKKzxwcm9ncmFtbGlzdGluZz4KK0NSRUFURSBWQVJJQUJMRSB2YXIxIEFTIGludGVnZXI7 Cis8L3Byb2dyYW1saXN0aW5nPgorICA8L3BhcmE+CisKKyAgPHBhcmE+CisgICBTZXQgYSB2YWx1 ZSBvZiB0aGlzIHZhcmlhYmxlOgorPHByb2dyYW1saXN0aW5nPgorQ1JFQVRFIFZBUklBQkxFCitw b3N0Z3Jlcz0jIHNlbGVjdCBzZXRfc2NoZW1hX3ZhcmlhYmxlKCd2YXIxJywgMTApOworIHNldF9z Y2hlbWFfdmFyaWFibGUgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworcG9z dGdyZXM9IyBzZWxlY3QgZ2V0X3NjaGVtYV92YXJpYWJsZSgndmFyMScsIG51bGw6Om51bWVyaWMp OworIGdldF9zY2hlbWFfdmFyaWFibGUgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAg ICAgICAgICAgIDEwCisoMSByb3cpCis8L3Byb2dyYW1saXN0aW5nPgorICA8L3BhcmE+CisgPC9y ZWZzZWN0MT4KKworIDxyZWZzZWN0MT4KKyAgPHRpdGxlPkNvbXBhdGliaWxpdHk8L3RpdGxlPgor CisgIDxwYXJhPgorICAgPGNvbW1hbmQ+Q1JFQVRFIFZBUklBQkxFPC9jb21tYW5kPiBpcyBQb3N0 Z3JlU1FMIGZlYXR1cmUKKyAgPC9wYXJhPgorIDwvcmVmc2VjdDE+CisKKyA8cmVmc2VjdDE+Cisg IDx0aXRsZT5TZWUgQWxzbzwvdGl0bGU+CisKKyAgPHNpbXBsZWxpc3QgdHlwZT0iaW5saW5lIj4K KyAgIDxtZW1iZXI+PHhyZWYgbGlua2VuZD0ic3FsLWRyb3B2YXJpYWJsZSIvPjwvbWVtYmVyPgor ICA8L3NpbXBsZWxpc3Q+CisgPC9yZWZzZWN0MT4KKworPC9yZWZlbnRyeT4KZGlmZiAtLWdpdCBh L2RvYy9zcmMvc2dtbC9yZWYvZGlzY2FyZC5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9kaXNjYXJk LnNnbWwKaW5kZXggNmI5MDliNzIzMi4uYjM0OGMwMmUwYiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9z Z21sL3JlZi9kaXNjYXJkLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9kaXNjYXJkLnNnbWwK QEAgLTIxLDcgKzIxLDcgQEAgUG9zdGdyZVNRTCBkb2N1bWVudGF0aW9uCiAKICA8cmVmc3lub3Bz aXNkaXY+CiA8c3lub3BzaXM+Ci1ESVNDQVJEIHsgQUxMIHwgUExBTlMgfCBTRVFVRU5DRVMgfCBU RU1QT1JBUlkgfCBURU1QIH0KK0RJU0NBUkQgeyBBTEwgfCBQTEFOUyB8IFNFUVVFTkNFUyB8IFRF TVBPUkFSWSB8IFRFTVAgfCBWQVJJQUJMRVN9CiA8L3N5bm9wc2lzPgogIDwvcmVmc3lub3BzaXNk aXY+CiAKQEAgLTc1LDYgKzc1LDE1IEBAIERJU0NBUkQgeyBBTEwgfCBQTEFOUyB8IFNFUVVFTkNF UyB8IFRFTVBPUkFSWSB8IFRFTVAgfQogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRy eT4KIAorICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT48bGl0ZXJhbD5WQVJJQUJMRVM8L2xp dGVyYWw+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBSZWxlYXNl cyBjb250ZW50IG9mIGFsbCBzY2hlbWEgdmFyaWFibGVzIGluIGN1cnJlbnQgc2Vzc2lvbi4KKyAg ICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKwogICAgPHZh cmxpc3RlbnRyeT4KICAgICA8dGVybT48bGl0ZXJhbD5BTEw8L2xpdGVyYWw+PC90ZXJtPgogICAg IDxsaXN0aXRlbT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvZHJvcF92YXJpYWJsZS5z Z21sIGIvZG9jL3NyYy9zZ21sL3JlZi9kcm9wX3ZhcmlhYmxlLnNnbWwKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uZjZjMmU0NjQ3NgotLS0gL2Rldi9udWxsCisrKyBiL2Rv Yy9zcmMvc2dtbC9yZWYvZHJvcF92YXJpYWJsZS5zZ21sCkBAIC0wLDAgKzEsODkgQEAKKzwhLS0K K2RvYy9zcmMvc2dtbC9yZWYvZHJvcF92YXJpYWJsZS5zZ21sCitQb3N0Z3JlU1FMIGRvY3VtZW50 YXRpb24KKy0tPgorCis8cmVmZW50cnkgaWQ9InNxbC1kcm9wdmFyaWFibGUiPgorIDxpbmRleHRl cm0gem9uZT0ic3FsLWRyb3B2YXJpYWJsZSI+CisgIDxwcmltYXJ5PkRST1AgVkFSSUFCTEU8L3By aW1hcnk+CisgPC9pbmRleHRlcm0+CisKKyA8cmVmbWV0YT4KKyAgPHJlZmVudHJ5dGl0bGU+RFJP UCBWQVJJQUJMRTwvcmVmZW50cnl0aXRsZT4KKyAgPG1hbnZvbG51bT43PC9tYW52b2xudW0+Cisg IDxyZWZtaXNjaW5mbz5TUUwgLSBMYW5ndWFnZSBTdGF0ZW1lbnRzPC9yZWZtaXNjaW5mbz4KKyA8 L3JlZm1ldGE+CisKKyA8cmVmbmFtZWRpdj4KKyAgPHJlZm5hbWU+RFJPUCBWQVJJQUJMRTwvcmVm bmFtZT4KKyAgPHJlZnB1cnBvc2U+cmVtb3ZlIGEgc2NoZW1hIHZhcmlhYmxlPC9yZWZwdXJwb3Nl PgorIDwvcmVmbmFtZWRpdj4KKworIDxyZWZzeW5vcHNpc2Rpdj4KKzxzeW5vcHNpcz4KK0RST1Ag VkFSSUFCTEUgWyBJRiBFWElTVFMgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFt ZTwvcmVwbGFjZWFibGU+IFssIC4uLl0gWyBDQVNDQURFIHwgUkVTVFJJQ1QgXQorPC9zeW5vcHNp cz4KKyA8L3JlZnN5bm9wc2lzZGl2PgorCisgPHJlZnNlY3QxPgorICA8dGl0bGU+RGVzY3JpcHRp b248L3RpdGxlPgorCisgIDxwYXJhPgorICAgPGNvbW1hbmQ+RFJPUCBWQVJJQUJMRTwvY29tbWFu ZD4gcmVtb3ZlcyBzY2hlbWEgdmFyaWFibGUuCisgICBBIHZhcmlhYmxlIGNhbiBvbmx5IGJlIGRy b3BwZWQgYnkgaXRzIG93bmVyIG9yIGEgc3VwZXJ1c2VyLgorICA8L3BhcmE+CisgPC9yZWZzZWN0 MT4KKworIDxyZWZzZWN0MT4KKyAgPHRpdGxlPlBhcmFtZXRlcnM8L3RpdGxlPgorCisgIDx2YXJp YWJsZWxpc3Q+CisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPjxsaXRlcmFsPklGIEVYSVNU UzwvbGl0ZXJhbD48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIERv IG5vdCB0aHJvdyBhbiBlcnJvciBpZiB0aGUgdmFyaWFibGUgZG9lcyBub3QgZXhpc3QuIEEgbm90 aWNlIGlzIGlzc3VlZAorICAgICAgaW4gdGhpcyBjYXNlLgorICAgICA8L3BhcmE+CisgICAgPC9s aXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0 ZXJtPjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT48L3Rl cm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIFRoZSBuYW1lIChvcHRpb25h bGx5IHNjaGVtYS1xdWFsaWZpZWQpIG9mIGEgc2NoZW1hIHZhcmlhYmxlLgorICAgICA8L3BhcmE+ CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorICA8L3ZhcmlhYmxlbGlzdD4K KyA8L3JlZnNlY3QxPgorCisgPHJlZnNlY3QxPgorICA8dGl0bGU+RXhhbXBsZXM8L3RpdGxlPgor CisgIDxwYXJhPgorICAgVG8gcmVtb3ZlIHRoZSBzY2hlbWEgdmFyaWFibGUgPGxpdGVyYWw+dmFy MTwvbGl0ZXJhbD46CisKKzxwcm9ncmFtbGlzdGluZz4KK0RST1AgVkFSSUFCTEUgdmFyMTsKKzwv cHJvZ3JhbWxpc3Rpbmc+PC9wYXJhPgorIDwvcmVmc2VjdDE+CisKKyA8cmVmc2VjdDE+CisgIDx0 aXRsZT5Db21wYXRpYmlsaXR5PC90aXRsZT4KKworICA8cGFyYT4KKyAgIDxjb21tYW5kPkRST1Ag VkFSSUFCTEU8L2NvbW1hbmQ+IGlzIHByb3ByaWV0YXJ5IFBvc3RncmVTUUwgY29tbWFuZC4KKyAg PC9wYXJhPgorIDwvcmVmc2VjdDE+CisKKyA8cmVmc2VjdDE+CisgIDx0aXRsZT5TZWUgQWxzbzwv dGl0bGU+CisKKyAgPHNpbXBsZWxpc3QgdHlwZT0iaW5saW5lIj4KKyAgIDxtZW1iZXI+PHhyZWYg bGlua2VuZD0ic3FsLWNyZWF0ZXZhcmlhYmxlIi8+PC9tZW1iZXI+CisgIDwvc2ltcGxlbGlzdD4K KyA8L3JlZnNlY3QxPgorCis8L3JlZmVudHJ5PgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3Jl Zi9ncmFudC5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9ncmFudC5zZ21sCmluZGV4IGZmNjRjN2Ez YmEuLjdkZGU1NGNlMGYgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvZ3JhbnQuc2dtbAor KysgYi9kb2Mvc3JjL3NnbWwvcmVmL2dyYW50LnNnbWwKQEAgLTc5LDYgKzc5LDEyIEBAIEdSQU5U IHsgVVNBR0UgfCBBTEwgWyBQUklWSUxFR0VTIF0gfQogICAgIE9OIFRZUEUgPHJlcGxhY2VhYmxl PnR5cGVfbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLl0KICAgICBUTyA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+cm9sZV9zcGVjaWZpY2F0aW9uPC9yZXBsYWNlYWJsZT4gWywgLi4uXSBb IFdJVEggR1JBTlQgT1BUSU9OIF0KIAorR1JBTlQgeyB7IFNFTEVDVCB8IFVQREFURSB9CisgICAg WywgLi4uXSB8IEFMTCBbIFBSSVZJTEVHRVMgXSB9CisgICAgT04geyBWQVJJQUJMRSA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dmFyaWFibGVfbmFtZTwvcmVwbGFjZWFibGU+IFssIC4u Ll0KKyAgICAgICAgIHwgQUxMIFZBUklBQkxFUyBJTiBTQ0hFTUEgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnNjaGVtYV9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uXSB9CisgICAgVE8g PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJvbGVfc3BlY2lmaWNhdGlvbjwvcmVwbGFj ZWFibGU+IFssIC4uLl0gWyBXSVRIIEdSQU5UIE9QVElPTiBdCisKIDxwaHJhc2U+d2hlcmUgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJvbGVfc3BlY2lmaWNhdGlvbjwvcmVwbGFjZWFi bGU+IGNhbiBiZTo8L3BocmFzZT4KIAogICAgIFsgR1JPVVAgXSA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+cm9sZV9uYW1lPC9yZXBsYWNlYWJsZT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMv c2dtbC9yZWYvbGV0LnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2xldC5zZ21sCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmIwNDBiNWUxZmUKLS0tIC9kZXYvbnVsbAorKysg Yi9kb2Mvc3JjL3NnbWwvcmVmL2xldC5zZ21sCkBAIC0wLDAgKzEsODggQEAKKzwhLS0KK2RvYy9z cmMvc2dtbC9yZWYvbGV0LnNnbWwKK1Bvc3RncmVTUUwgZG9jdW1lbnRhdGlvbgorLS0+CisKKzxy ZWZlbnRyeSBpZD0ic3FsLWxldCI+CisgPGluZGV4dGVybSB6b25lPSJzcWwtbGV0Ij4KKyAgPHBy aW1hcnk+TEVUPC9wcmltYXJ5PgorIDwvaW5kZXh0ZXJtPgorCisgPHJlZm1ldGE+CisgIDxyZWZl bnRyeXRpdGxlPkxFVDwvcmVmZW50cnl0aXRsZT4KKyAgPG1hbnZvbG51bT43PC9tYW52b2xudW0+ CisgIDxyZWZtaXNjaW5mbz5TUUwgLSBMYW5ndWFnZSBTdGF0ZW1lbnRzPC9yZWZtaXNjaW5mbz4K KyA8L3JlZm1ldGE+CisKKyA8cmVmbmFtZWRpdj4KKyAgPHJlZm5hbWU+TEVUPC9yZWZuYW1lPgor ICA8cmVmcHVycG9zZT5jaGFuZ2UgYSBzY2hlbWEgdmFyaWFibGU8L3JlZnB1cnBvc2U+CisgPC9y ZWZuYW1lZGl2PgorCisgPHJlZnN5bm9wc2lzZGl2PgorPHN5bm9wc2lzPgorTEVUIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zY2hlbWFfdmFyaWFibGU8L3JlcGxhY2VhYmxlPiA9IDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zcWxfZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+ Cis8L3N5bm9wc2lzPgorIDwvcmVmc3lub3BzaXNkaXY+CisKKyA8cmVmc2VjdDE+CisgIDx0aXRs ZT5EZXNjcmlwdGlvbjwvdGl0bGU+CisKKyAgPHBhcmE+CisgICBUaGUgPGNvbW1hbmQ+TEVUPC9j b21tYW5kPiBjb21tYW5kIHNldHMgc3BlY2lmaWVkIHNjaGVtYSB2YXJpYWJsZS4KKyAgPC9wYXJh PgorCisgPC9yZWZzZWN0MT4KKworIDxyZWZzZWN0MT4KKyAgPHRpdGxlPlBhcmFtZXRlcnM8L3Rp dGxlPgorCisgIDx2YXJpYWJsZWxpc3Q+CisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPjxs aXRlcmFsPnNjaGVtYV92YXJpYWJsZTwvbGl0ZXJhbD48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgor ICAgICA8cGFyYT4KKyAgICAgIFNwZWNpZmllcyB0aGF0IHRoZSBuYW1lIG9mIHNjaGVtYSB2YXJp YWJsZS4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4K KworICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT48bGl0ZXJhbD5zcWwgZXhwcmVzc2lvbjwv bGl0ZXJhbD48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIEFueSBT UUwgZXhwcmVzc2lvbi4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxp c3RlbnRyeT4KKyAgPC92YXJpYWJsZWxpc3Q+CisKKyAgPHBhcmE+CisgICBFeGFtcGxlOgorPHBy b2dyYW1saXN0aW5nPgorQ1JFQVRFIFZBUklBQkxFIG15dmFyIEFTIGludGVnZXI7CitMRVQgbXl2 YXIgPSAxMDsKK0xFVCBteXZhciA9IChTRUxFQ1Qgc3VtKHZhbCkgRlJPTSB0YWIpOworPC9wcm9n cmFtbGlzdGluZz4KKyAgPC9wYXJhPgorIDwvcmVmc2VjdDE+CisKKyA8cmVmc2VjdDE+CisgIDx0 aXRsZT5Db21wYXRpYmlsaXR5PC90aXRsZT4KKworICA8cGFyYT4KKyAgIDxsaXRlcmFsPkxFVDwv bGl0ZXJhbD4gZXh0ZW5kcyBzeW50YXggZGVmaW5lZCBpbiB0aGUgU1FMCisgICBzdGFuZGFyZC4g VGhlIHN0YW5kYXJkIGtub3dzIDxsaXRlcmFsPlNFVDwvbGl0ZXJhbD4gY29tbWFuZCwKKyAgIHRo YXQgaXMgdXNlZCBmb3IgZGlmZmVyZW50IHB1cnBvdXNlIGluIFBvc3RncmVTUUwuCisgIDwvcGFy YT4KKyA8L3JlZnNlY3QxPgorCisgPHJlZnNlY3QxPgorICA8dGl0bGU+U2VlIEFsc288L3RpdGxl PgorCisgIDxzaW1wbGVsaXN0IHR5cGU9ImlubGluZSI+CisgICA8bWVtYmVyPjx4cmVmIGxpbmtl bmQ9InNxbC1jcmVhdGV2YXJpYWJsZSIvPjwvbWVtYmVyPgorICAgPG1lbWJlcj48eHJlZiBsaW5r ZW5kPSJzcWwtZHJvcHZhcmlhYmxlIi8+PC9tZW1iZXI+CisgIDwvc2ltcGxlbGlzdD4KKyA8L3Jl ZnNlY3QxPgorPC9yZWZlbnRyeT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvcmV2b2tl LnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL3Jldm9rZS5zZ21sCmluZGV4IDcwMTgyMDJmMTQuLjcz Nzc4ZjAxZjkgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvcmV2b2tlLnNnbWwKKysrIGIv ZG9jL3NyYy9zZ21sL3JlZi9yZXZva2Uuc2dtbApAQCAtMTA4LDYgKzEwOCwxNCBAQCBSRVZPS0Ug WyBHUkFOVCBPUFRJT04gRk9SIF0KIFJFVk9LRSBbIEFETUlOIE9QVElPTiBGT1IgXQogICAgIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yb2xlX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAu Li5dIEZST00gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJvbGVfbmFtZTwvcmVwbGFj ZWFibGU+IFssIC4uLl0KICAgICBbIENBU0NBREUgfCBSRVNUUklDVCBdCisKK1JFVk9LRSBbIEdS QU5UIE9QVElPTiBGT1IgXQorICAgIHsgeyBTRUxFQ1QgfCBVUERBVEUgfQorICAgIFssIC4uLl0g fCBBTEwgWyBQUklWSUxFR0VTIF0gfQorICAgIE9OIHsgVkFSSUFCTEUgPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPnZhcmlhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi5dCisgICAg ICAgICB8IEFMTCBWQVJJQUJMRVMgSU4gU0NIRU1BIDxyZXBsYWNlYWJsZT5zY2hlbWFfbmFtZTwv cmVwbGFjZWFibGU+IFssIC4uLl0gfQorICAgIEZST00geyBbIEdST1VQIF0gPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPnJvbGVfbmFtZTwvcmVwbGFjZWFibGU+IHwgUFVCTElDIH0gWywg Li4uXQorICAgIFsgQ0FTQ0FERSB8IFJFU1RSSUNUIF0KIDwvc3lub3BzaXM+CiAgPC9yZWZzeW5v cHNpc2Rpdj4KIApkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZmVyZW5jZS5zZ21sIGIvZG9j L3NyYy9zZ21sL3JlZmVyZW5jZS5zZ21sCmluZGV4IGQyN2ZiNDE0ZjcuLmIzZjlmZmY1MTEgMTAw NjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWZlcmVuY2Uuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwv cmVmZXJlbmNlLnNnbWwKQEAgLTEyNyw2ICsxMjcsNyBAQAogICAgJmNyZWF0ZVR5cGU7CiAgICAm Y3JlYXRlVXNlcjsKICAgICZjcmVhdGVVc2VyTWFwcGluZzsKKyAgICZjcmVhdGVWYXJpYWJsZTsK ICAgICZjcmVhdGVWaWV3OwogICAgJmRlYWxsb2NhdGU7CiAgICAmZGVjbGFyZTsKQEAgLTE3NSw2 ICsxNzYsNyBAQAogICAgJmRyb3BUeXBlOwogICAgJmRyb3BVc2VyOwogICAgJmRyb3BVc2VyTWFw cGluZzsKKyAgICZkcm9wVmFyaWFibGU7CiAgICAmZHJvcFZpZXc7CiAgICAmZW5kOwogICAgJmV4 ZWN1dGU7CkBAIC0xODMsNiArMTg1LDcgQEAKICAgICZncmFudDsKICAgICZpbXBvcnRGb3JlaWdu U2NoZW1hOwogICAgJmluc2VydDsKKyAgICZsZXQ7CiAgICAmbGlzdGVuOwogICAgJmxvYWQ7CiAg ICAmbG9jazsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvYWNsY2hrLmMgYi9zcmMv YmFja2VuZC9jYXRhbG9nL2FjbGNoay5jCmluZGV4IDExNTY2MjdiOWUuLjI2ODUzNGVhODcgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvYWNsY2hrLmMKKysrIGIvc3JjL2JhY2tlbmQv Y2F0YWxvZy9hY2xjaGsuYwpAQCAtMjg0LDYgKzI4NCw5IEBAIHJlc3RyaWN0X2FuZF9jaGVja19n cmFudChib29sIGlzX2dyYW50LCBBY2xNb2RlIGF2YWlsX2dvcHRpb25zLCBib29sIGFsbF9wcml2 cywKIAkJY2FzZSBPQkpFQ1RfVFlQRToKIAkJCXdob2xlX21hc2sgPSBBQ0xfQUxMX1JJR0hUU19U WVBFOwogCQkJYnJlYWs7CisJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgorCQkJd2hvbGVfbWFzayA9 IEFDTF9BTExfUklHSFRTX1ZBUklBQkxFOworCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQllbG9n KEVSUk9SLCAidW5yZWNvZ25pemVkIG9iamVjdCB0eXBlOiAlZCIsIG9ianR5cGUpOwogCQkJLyog bm90IHJlYWNoZWQsIGJ1dCBrZWVwIGNvbXBpbGVyIHF1aWV0ICovCkBAIC01MDYsNiArNTA5LDEw IEBAIEV4ZWN1dGVHcmFudFN0bXQoR3JhbnRTdG10ICpzdG10KQogCQkJYWxsX3ByaXZpbGVnZXMg PSBBQ0xfQUxMX1JJR0hUU19GT1JFSUdOX1NFUlZFUjsKIAkJCWVycm9ybXNnID0gZ2V0dGV4dF9u b29wKCJpbnZhbGlkIHByaXZpbGVnZSB0eXBlICVzIGZvciBmb3JlaWduIHNlcnZlciIpOwogCQkJ YnJlYWs7CisJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgorCQkJYWxsX3ByaXZpbGVnZXMgPSBBQ0xf QUxMX1JJR0hUU19WQVJJQUJMRTsKKwkJCWVycm9ybXNnID0gZ2V0dGV4dF9ub29wKCJpbnZhbGlk IHByaXZpbGVnZSB0eXBlICVzIGZvciBzY2hlbWEgdmFyaWFibGUiKTsKKwkJCWJyZWFrOwogCQlk ZWZhdWx0OgogCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBHcmFudFN0bXQub2JqdHlwZTog JWQiLAogCQkJCSAoaW50KSBzdG10LT5vYmp0eXBlKTsKQEAgLTU3Niw2ICs1ODMsNyBAQCBFeGVj R3JhbnRTdG10X29pZHMoSW50ZXJuYWxHcmFudCAqaXN0bXQpCiAJewogCQljYXNlIE9CSkVDVF9U QUJMRToKIAkJY2FzZSBPQkpFQ1RfU0VRVUVOQ0U6CisJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgog CQkJRXhlY0dyYW50X1JlbGF0aW9uKGlzdG10KTsKIAkJCWJyZWFrOwogCQljYXNlIE9CSkVDVF9E QVRBQkFTRToKQEAgLTY0NSw2ICs2NTMsNyBAQCBvYmplY3ROYW1lc1RvT2lkcyhPYmplY3RUeXBl IG9ianR5cGUsIExpc3QgKm9iam5hbWVzKQogCXsKIAkJY2FzZSBPQkpFQ1RfVEFCTEU6CiAJCWNh c2UgT0JKRUNUX1NFUVVFTkNFOgorCQljYXNlIE9CSkVDVF9WQVJJQUJMRToKIAkJCWZvcmVhY2go Y2VsbCwgb2JqbmFtZXMpCiAJCQl7CiAJCQkJUmFuZ2VWYXIgICAqcmVsdmFyID0gKFJhbmdlVmFy ICopIGxmaXJzdChjZWxsKTsKQEAgLTEwMjEsNiArMTAzMCwxMCBAQCBFeGVjQWx0ZXJEZWZhdWx0 UHJpdmlsZWdlc1N0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBBbHRlckRlZmF1bHRQcml2aWxlZ2Vz U3RtdCAqcwogCQkJYWxsX3ByaXZpbGVnZXMgPSBBQ0xfQUxMX1JJR0hUU19TQ0hFTUE7CiAJCQll cnJvcm1zZyA9IGdldHRleHRfbm9vcCgiaW52YWxpZCBwcml2aWxlZ2UgdHlwZSAlcyBmb3Igc2No ZW1hIik7CiAJCQlicmVhazsKKwkJY2FzZSBPQkpFQ1RfVkFSSUFCTEU6CisJCQlhbGxfcHJpdmls ZWdlcyA9IEFDTF9BTExfUklHSFRTX1ZBUklBQkxFOworCQkJZXJyb3Jtc2cgPSBnZXR0ZXh0X25v b3AoImludmFsaWQgcHJpdmlsZWdlIHR5cGUgJXMgZm9yIHNjaGVtYSB2YXJpYWJsZSIpOworCQkJ YnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIEdyYW50U3Rt dC5vYmp0eXBlOiAlZCIsCiAJCQkJIChpbnQpIGFjdGlvbi0+b2JqdHlwZSk7CkBAIC0xMjE4LDYg KzEyMzEsMTIgQEAgU2V0RGVmYXVsdEFDTChJbnRlcm5hbERlZmF1bHRBQ0wgKmlhY2xzKQogCQkJ CXRoaXNfcHJpdmlsZWdlcyA9IEFDTF9BTExfUklHSFRTX1NDSEVNQTsKIAkJCWJyZWFrOwogCisJ CWNhc2UgT0JKRUNUX1ZBUklBQkxFOgorCQkJb2JqdHlwZSA9IERFRkFDTE9CSl9WQVJJQUJMRTsK KwkJCWlmIChpYWNscy0+YWxsX3ByaXZzICYmIHRoaXNfcHJpdmlsZWdlcyA9PSBBQ0xfTk9fUklH SFRTKQorCQkJCXRoaXNfcHJpdmlsZWdlcyA9IEFDTF9BTExfUklHSFRTX1ZBUklBQkxFOworCQkJ YnJlYWs7CisKIAkJZGVmYXVsdDoKIAkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgb2JqdHlw ZTogJWQiLAogCQkJCSAoaW50KSBpYWNscy0+b2JqdHlwZSk7CkBAIC0xNDQ0LDYgKzE0NjMsOSBA QCBSZW1vdmVSb2xlRnJvbU9iamVjdEFDTChPaWQgcm9sZWlkLCBPaWQgY2xhc3NpZCwgT2lkIG9i amlkKQogCQkJY2FzZSBERUZBQ0xPQkpfTkFNRVNQQUNFOgogCQkJCWlhY2xzLm9ianR5cGUgPSBP QkpFQ1RfU0NIRU1BOwogCQkJCWJyZWFrOworCQkJY2FzZSBERUZBQ0xPQkpfVkFSSUFCTEU6CisJ CQkJaWFjbHMub2JqdHlwZSA9IE9CSkVDVF9WQVJJQUJMRTsKKwkJCQlicmVhazsKIAkJCWRlZmF1 bHQ6CiAJCQkJLyogU2hvdWxkbid0IGdldCBoZXJlICovCiAJCQkJZWxvZyhFUlJPUiwgInVuZXhw ZWN0ZWQgZGVmYXVsdCBBQ0wgdHlwZTogJWQiLApAQCAtMzQ1OSw2ICszNDgxLDkgQEAgYWNsY2hl Y2tfZXJyb3IoQWNsUmVzdWx0IGFjbGVyciwgT2JqZWN0VHlwZSBvYmp0eXBlLAogCQkJCQljYXNl IE9CSkVDVF9UWVBFOgogCQkJCQkJbXNnID0gZ2V0dGV4dF9ub29wKCJwZXJtaXNzaW9uIGRlbmll ZCBmb3IgdHlwZSAlcyIpOwogCQkJCQkJYnJlYWs7CisJCQkJCWNhc2UgT0JKRUNUX1ZBUklBQkxF OgorCQkJCQkJbXNnID0gZ2V0dGV4dF9ub29wKCJwZXJtaXNzaW9uIGRlbmllZCBmb3Igc2NoZW1h IHZhcmlhYmxlICVzIik7CisJCQkJCQlicmVhazsKIAkJCQkJY2FzZSBPQkpFQ1RfVklFVzoKIAkJ CQkJCW1zZyA9IGdldHRleHRfbm9vcCgicGVybWlzc2lvbiBkZW5pZWQgZm9yIHZpZXcgJXMiKTsK IAkJCQkJCWJyZWFrOwpAQCAtMzU2OSw2ICszNTk0LDkgQEAgYWNsY2hlY2tfZXJyb3IoQWNsUmVz dWx0IGFjbGVyciwgT2JqZWN0VHlwZSBvYmp0eXBlLAogCQkJCQljYXNlIE9CSkVDVF9UWVBFOgog CQkJCQkJbXNnID0gZ2V0dGV4dF9ub29wKCJtdXN0IGJlIG93bmVyIG9mIHR5cGUgJXMiKTsKIAkJ CQkJCWJyZWFrOworCQkJCQljYXNlIE9CSkVDVF9WQVJJQUJMRToKKwkJCQkJCW1zZyA9IGdldHRl eHRfbm9vcCgibXVzdCBiZSBvd25lciBvZiBzY2hlbWEgdmFyaWFibGUgJXMiKTsKKwkJCQkJCWJy ZWFrOwogCQkJCQljYXNlIE9CSkVDVF9WSUVXOgogCQkJCQkJbXNnID0gZ2V0dGV4dF9ub29wKCJt dXN0IGJlIG93bmVyIG9mIHZpZXcgJXMiKTsKIAkJCQkJCWJyZWFrOwpAQCAtMzY4Myw2ICszNzEx LDcgQEAgcGdfYWNsbWFzayhPYmplY3RUeXBlIG9ianR5cGUsIE9pZCB0YWJsZV9vaWQsIEF0dHJO dW1iZXIgYXR0bnVtLCBPaWQgcm9sZWlkLAogCQkJCXBnX2F0dHJpYnV0ZV9hY2xtYXNrKHRhYmxl X29pZCwgYXR0bnVtLCByb2xlaWQsIG1hc2ssIGhvdyk7CiAJCWNhc2UgT0JKRUNUX1RBQkxFOgog CQljYXNlIE9CSkVDVF9TRVFVRU5DRToKKwkJY2FzZSBPQkpFQ1RfVkFSSUFCTEU6CiAJCQlyZXR1 cm4gcGdfY2xhc3NfYWNsbWFzayh0YWJsZV9vaWQsIHJvbGVpZCwgbWFzaywgaG93KTsKIAkJY2Fz ZSBPQkpFQ1RfREFUQUJBU0U6CiAJCQlyZXR1cm4gcGdfZGF0YWJhc2VfYWNsbWFzayh0YWJsZV9v aWQsIHJvbGVpZCwgbWFzaywgaG93KTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cv aGVhcC5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9oZWFwLmMKaW5kZXggNzc0YzA3YjAzYS4uNTY5 YmFlMDBlMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9oZWFwLmMKKysrIGIvc3Jj L2JhY2tlbmQvY2F0YWxvZy9oZWFwLmMKQEAgLTI5MSw2ICsyOTEsNyBAQCBoZWFwX2NyZWF0ZShj b25zdCBjaGFyICpyZWxuYW1lLAogCXN3aXRjaCAocmVsa2luZCkKIAl7CiAJCWNhc2UgUkVMS0lO RF9WSUVXOgorCQljYXNlIFJFTEtJTkRfVkFSSUFCTEU6CiAJCWNhc2UgUkVMS0lORF9DT01QT1NJ VEVfVFlQRToKIAkJY2FzZSBSRUxLSU5EX0ZPUkVJR05fVEFCTEU6CiAJCWNhc2UgUkVMS0lORF9Q QVJUSVRJT05FRF9UQUJMRToKQEAgLTEwNjcsNyArMTA2OCw5IEBAIGhlYXBfY3JlYXRlX3dpdGhf Y2F0YWxvZyhjb25zdCBjaGFyICpyZWxuYW1lLAogCWlmIChleGlzdGluZ19yZWxpZCAhPSBJbnZh bGlkT2lkKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfRFVQTElDQVRF X1RBQkxFKSwKLQkJCQkgZXJybXNnKCJyZWxhdGlvbiBcIiVzXCIgYWxyZWFkeSBleGlzdHMiLCBy ZWxuYW1lKSkpOworCQkJCSBlcnJtc2coIiVzIFwiJXNcIiBhbHJlYWR5IGV4aXN0cyIsCisJCQkJ CQlyZWxraW5kID09IFJFTEtJTkRfVkFSSUFCTEUgPyAidmFyaWFibGUiIDogInJlbGF0aW9uIiwK KwkJCQkJCXJlbG5hbWUpKSk7CiAKIAkvKgogCSAqIFNpbmNlIHdlIGFyZSBnb2luZyB0byBjcmVh dGUgYSByb3d0eXBlIGFzIHdlbGwsIGFsc28gY2hlY2sgZm9yCkBAIC0xMTUwLDYgKzExNTMsMTAg QEAgaGVhcF9jcmVhdGVfd2l0aF9jYXRhbG9nKGNvbnN0IGNoYXIgKnJlbG5hbWUsCiAJCQkJcmVs YWNsID0gZ2V0X3VzZXJfZGVmYXVsdF9hY2woT0JKRUNUX1NFUVVFTkNFLCBvd25lcmlkLAogCQkJ CQkJCQkJCQkgIHJlbG5hbWVzcGFjZSk7CiAJCQkJYnJlYWs7CisJCQljYXNlIFJFTEtJTkRfVkFS SUFCTEU6CisJCQkJcmVsYWNsID0gZ2V0X3VzZXJfZGVmYXVsdF9hY2woT0JKRUNUX1ZBUklBQkxF LCBvd25lcmlkLAorCQkJCQkJCQkJCQkgIHJlbG5hbWVzcGFjZSk7CisJCQkJYnJlYWs7CiAJCQlk ZWZhdWx0OgogCQkJCXJlbGFjbCA9IE5VTEw7CiAJCQkJYnJlYWs7CkBAIC0xMTgxLDcgKzExODgs OCBAQCBoZWFwX2NyZWF0ZV93aXRoX2NhdGFsb2coY29uc3QgY2hhciAqcmVsbmFtZSwKIAkgKiBE ZWNpZGUgd2hldGhlciB0byBjcmVhdGUgYW4gYXJyYXkgdHlwZSBvdmVyIHRoZSByZWxhdGlvbidz IHJvd3R5cGUuIFdlCiAJICogZG8gbm90IGNyZWF0ZSBhbnkgYXJyYXkgdHlwZXMgZm9yIHN5c3Rl bSBjYXRhbG9ncyAoaWUsIHRob3NlIG1hZGUKIAkgKiBkdXJpbmcgaW5pdGRiKS4gV2UgZG8gbm90 IGNyZWF0ZSB0aGVtIHdoZXJlIHRoZSB1c2Ugb2YgYSByZWxhdGlvbiBhcwotCSAqIHN1Y2ggaXMg YW4gaW1wbGVtZW50YXRpb24gZGV0YWlsOiB0b2FzdCB0YWJsZXMsIHNlcXVlbmNlcyBhbmQgaW5k ZXhlcy4KKwkgKiBzdWNoIGlzIGFuIGltcGxlbWVudGF0aW9uIGRldGFpbDogdG9hc3QgdGFibGVz LCBzZXF1ZW5jZXMsIGluZGV4ZXMgYW5kCisJICogdmFyaWFibGVzLgogCSAqLwogCWlmIChJc1Vu ZGVyUG9zdG1hc3RlciAmJiAocmVsa2luZCA9PSBSRUxLSU5EX1JFTEFUSU9OIHx8CiAJCQkJCQkJ ICByZWxraW5kID09IFJFTEtJTkRfVklFVyB8fApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0 YWxvZy9vYmplY3RhZGRyZXNzLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL29iamVjdGFkZHJlc3Mu YwppbmRleCA1NzBlNjVhZmZiLi42MjQ3OTc0M2M3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9j YXRhbG9nL29iamVjdGFkZHJlc3MuYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL29iamVjdGFk ZHJlc3MuYwpAQCAtNTIwLDYgKzUyMCw5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2JqZWN0X3R5 cGVfbWFwCiAJewogCQkic2VxdWVuY2UiLCBPQkpFQ1RfU0VRVUVOQ0UKIAl9LAorCXsKKwkJInZh cmlhYmxlIiwgT0JKRUNUX1ZBUklBQkxFCisJfSwKIAl7CiAJCSJ0b2FzdCB0YWJsZSIsIC0xCiAJ fSwJCQkJCQkJLyogdW5tYXBwZWQgKi8KQEAgLTgyNCw2ICs4MjcsNyBAQCBnZXRfb2JqZWN0X2Fk ZHJlc3MoT2JqZWN0VHlwZSBvYmp0eXBlLCBOb2RlICpvYmplY3QsCiAJCQljYXNlIE9CSkVDVF9W SUVXOgogCQkJY2FzZSBPQkpFQ1RfTUFUVklFVzoKIAkJCWNhc2UgT0JKRUNUX0ZPUkVJR05fVEFC TEU6CisJCQljYXNlIE9CSkVDVF9WQVJJQUJMRToKIAkJCQlhZGRyZXNzID0KIAkJCQkJZ2V0X3Jl bGF0aW9uX2J5X3F1YWxpZmllZF9uYW1lKG9ianR5cGUsIGNhc3ROb2RlKExpc3QsIG9iamVjdCks CiAJCQkJCQkJCQkJCQkgICAmcmVsYXRpb24sIGxvY2ttb2RlLApAQCAtMTI2MCw2ICsxMjY0LDE0 IEBAIGdldF9yZWxhdGlvbl9ieV9xdWFsaWZpZWRfbmFtZShPYmplY3RUeXBlIG9ianR5cGUsIExp c3QgKm9iamVjdCwKIAkJCQkJCSBlcnJtc2coIlwiJXNcIiBpcyBub3QgYSBmb3JlaWduIHRhYmxl IiwKIAkJCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsYXRpb24pKSkpOwogCQkJYnJl YWs7CisJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgorCQkJaWYgKHJlbGF0aW9uLT5yZF9yZWwtPnJl bGtpbmQgIT0gUkVMS0lORF9WQVJJQUJMRSkKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVy cmNvZGUoRVJSQ09ERV9XUk9OR19PQkpFQ1RfVFlQRSksCisJCQkJCQkgZXJybXNnKCJcIiVzXCIg aXMgbm90IGEgc2NoZW1hIHZhcmlhYmxlIiwKKwkJCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5h bWUocmVsYXRpb24pKSkpOworCQkJYnJlYWs7CisKIAkJZGVmYXVsdDoKIAkJCWVsb2coRVJST1Is ICJ1bnJlY29nbml6ZWQgb2JqdHlwZTogJWQiLCAoaW50KSBvYmp0eXBlKTsKIAkJCWJyZWFrOwpA QCAtMTg0Nyw2ICsxODU5LDggQEAgZ2V0X29iamVjdF9hZGRyZXNzX2RlZmFjbChMaXN0ICpvYmpl Y3QsIGJvb2wgbWlzc2luZ19vaykKIAkJY2FzZSBERUZBQ0xPQkpfTkFNRVNQQUNFOgogCQkJb2Jq dHlwZV9zdHIgPSAic2NoZW1hcyI7CiAJCQlicmVhazsKKwkJY2FzZSBERUZBQ0xPQkpfVkFSSUFC TEU6CisJCQlvYmp0eXBlX3N0ciA9ICJ2YXJpYWJsZXMiOwogCQlkZWZhdWx0OgogCQkJZXJlcG9y dChFUlJPUiwKIAkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSks CkBAIC0yMTA5LDYgKzIxMjMsNyBAQCBwZ19nZXRfb2JqZWN0X2FkZHJlc3MoUEdfRlVOQ1RJT05f QVJHUykKIAl7CiAJCWNhc2UgT0JKRUNUX1RBQkxFOgogCQljYXNlIE9CSkVDVF9TRVFVRU5DRToK KwkJY2FzZSBPQkpFQ1RfVkFSSUFCTEU6CiAJCWNhc2UgT0JKRUNUX1ZJRVc6CiAJCWNhc2UgT0JK RUNUX01BVFZJRVc6CiAJCWNhc2UgT0JKRUNUX0lOREVYOgpAQCAtMjIzMyw2ICsyMjQ4LDcgQEAg Y2hlY2tfb2JqZWN0X293bmVyc2hpcChPaWQgcm9sZWlkLCBPYmplY3RUeXBlIG9ianR5cGUsIE9i amVjdEFkZHJlc3MgYWRkcmVzcywKIAkJY2FzZSBPQkpFQ1RfSU5ERVg6CiAJCWNhc2UgT0JKRUNU X1NFUVVFTkNFOgogCQljYXNlIE9CSkVDVF9UQUJMRToKKwkJY2FzZSBPQkpFQ1RfVkFSSUFCTEU6 CiAJCWNhc2UgT0JKRUNUX1ZJRVc6CiAJCWNhc2UgT0JKRUNUX01BVFZJRVc6CiAJCWNhc2UgT0JK RUNUX0ZPUkVJR05fVEFCTEU6CkBAIC0zMjk5LDYgKzMzMTUsMTEgQEAgZ2V0T2JqZWN0RGVzY3Jp cHRpb24oY29uc3QgT2JqZWN0QWRkcmVzcyAqb2JqZWN0KQogCQkJCQkJCQkJCSBfKCJkZWZhdWx0 IHByaXZpbGVnZXMgb24gbmV3IHNjaGVtYXMgYmVsb25naW5nIHRvIHJvbGUgJXMiKSwKIAkJCQkJ CQkJCQkgR2V0VXNlck5hbWVGcm9tSWQoZGVmYWNsLT5kZWZhY2xyb2xlLCBmYWxzZSkpOwogCQkJ CQkJYnJlYWs7CisJCQkJCWNhc2UgREVGQUNMT0JKX1ZBUklBQkxFOgorCQkJCQkJYXBwZW5kU3Ry aW5nSW5mbygmYnVmZmVyLAorCQkJCQkJCQkJCSBfKCJkZWZhdWx0IHByaXZpbGVnZXMgb24gbmV3 IHNjaGVtYSB2YXJpYWJsZXMgYmVsb25naW5nIHRvIHJvbGUgJXMiKSwKKwkJCQkJCQkJCQkgR2V0 VXNlck5hbWVGcm9tSWQoZGVmYWNsLT5kZWZhY2xyb2xlLCBmYWxzZSkpOworCQkJCQkJYnJlYWs7 CiAJCQkJCWRlZmF1bHQ6CiAJCQkJCQkvKiBzaG91bGRuJ3QgZ2V0IGhlcmUgKi8KIAkJCQkJCWFw cGVuZFN0cmluZ0luZm8oJmJ1ZmZlciwKQEAgLTM1MDIsNiArMzUyMywxMCBAQCBnZXRSZWxhdGlv bkRlc2NyaXB0aW9uKFN0cmluZ0luZm8gYnVmZmVyLCBPaWQgcmVsaWQpCiAJCQlhcHBlbmRTdHJp bmdJbmZvKGJ1ZmZlciwgXygic2VxdWVuY2UgJXMiKSwKIAkJCQkJCQkgcmVsbmFtZSk7CiAJCQli cmVhazsKKwkJY2FzZSBSRUxLSU5EX1ZBUklBQkxFOgorCQkJYXBwZW5kU3RyaW5nSW5mbyhidWZm ZXIsIF8oInZhcmlhYmxlICVzIiksCisJCQkJCQkJIHJlbG5hbWUpOworCQkJYnJlYWs7CiAJCWNh c2UgUkVMS0lORF9UT0FTVFZBTFVFOgogCQkJYXBwZW5kU3RyaW5nSW5mbyhidWZmZXIsIF8oInRv YXN0IHRhYmxlICVzIiksCiAJCQkJCQkJIHJlbG5hbWUpOwpAQCAtNDgzMCw2ICs0ODU1LDEwIEBA IGdldE9iamVjdElkZW50aXR5UGFydHMoY29uc3QgT2JqZWN0QWRkcmVzcyAqb2JqZWN0LAogCQkJ CQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmYnVmZmVyLAogCQkJCQkJCQkJCQkgICAiIG9uIHNj aGVtYXMiKTsKIAkJCQkJCWJyZWFrOworCQkJCQljYXNlIERFRkFDTE9CSl9WQVJJQUJMRToKKwkJ CQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmJ1ZmZlciwKKwkJCQkJCQkJCQkJICAgIiBvbiBz Y2hlbWEgdmFyaWFibGVzIik7CisJCQkJCQlicmVhazsKIAkJCQl9CiAKIAkJCQlpZiAob2JqbmFt ZSkKQEAgLTUxMjIsNiArNTE1MSw4IEBAIGdldF9yZWxraW5kX29ianR5cGUoY2hhciByZWxraW5k KQogCQkJcmV0dXJuIE9CSkVDVF9JTkRFWDsKIAkJY2FzZSBSRUxLSU5EX1NFUVVFTkNFOgogCQkJ cmV0dXJuIE9CSkVDVF9TRVFVRU5DRTsKKwkJY2FzZSBSRUxLSU5EX1ZBUklBQkxFOgorCQkJcmV0 dXJuIE9CSkVDVF9WQVJJQUJMRTsKIAkJY2FzZSBSRUxLSU5EX1ZJRVc6CiAJCQlyZXR1cm4gT0JK RUNUX1ZJRVc7CiAJCWNhc2UgUkVMS0lORF9NQVRWSUVXOgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvTWFrZWZpbGUgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9NYWtlZmlsZQppbmRl eCA0YTZjOTllMDkwLi41NzQ3MjcyYzlhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5k cy9NYWtlZmlsZQorKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9NYWtlZmlsZQpAQCAtMTgsNyAr MTgsNyBAQCBPQkpTID0gYW1jbWRzLm8gYWdncmVnYXRlY21kcy5vIGFsdGVyLm8gYW5hbHl6ZS5v IGFzeW5jLm8gY2x1c3Rlci5vIGNvbW1lbnQubyBcCiAJZXZlbnRfdHJpZ2dlci5vIGV4cGxhaW4u byBleHRlbnNpb24ubyBmb3JlaWduY21kcy5vIGZ1bmN0aW9uY21kcy5vIFwKIAlpbmRleGNtZHMu byBsb2NrY21kcy5vIG1hdHZpZXcubyBvcGVyYXRvcmNtZHMubyBvcGNsYXNzY21kcy5vIFwKIAlw b2xpY3kubyBwb3J0YWxjbWRzLm8gcHJlcGFyZS5vIHByb2NsYW5nLm8gcHVibGljYXRpb25jbWRz Lm8gXAotCXNjaGVtYWNtZHMubyBzZWNsYWJlbC5vIHNlcXVlbmNlLm8gc3RhdHNjbWRzLm8gc3Vi c2NyaXB0aW9uY21kcy5vIFwKKwlzY2hlbWFjbWRzLm8gc2NoZW1hdmFyLm8gc2VjbGFiZWwubyBz ZXF1ZW5jZS5vIHN0YXRzY21kcy5vIHN1YnNjcmlwdGlvbmNtZHMubyBcCiAJdGFibGVjbWRzLm8g dGFibGVzcGFjZS5vIHRyaWdnZXIubyB0c2VhcmNoY21kcy5vIHR5cGVjbWRzLm8gdXNlci5vIFwK IAl2YWN1dW0ubyB2YWN1dW1sYXp5Lm8gdmFyaWFibGUubyB2aWV3Lm8KIApkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvY29tbWFuZHMvY29weS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weS5j CmluZGV4IDA0YTI0YzYwODIuLjIwZDE0ODNhNGUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2NvcHkuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5LmMKQEAgLTE0ODUs NiArMTQ4NSw5IEBAIEJlZ2luQ29weShQYXJzZVN0YXRlICpwc3RhdGUsCiAKIAkJQXNzZXJ0KHF1 ZXJ5LT51dGlsaXR5U3RtdCA9PSBOVUxMKTsKIAorCQkvKiBEb24ndCBleHBlY3QgTEVUIHN0bXQg aGVyZSwgaXMgbm90IHBvc3NpYmxlIHRvIGRvIHdyaXRlIGl0ICovCisJCUFzc2VydChxdWVyeS0+ Y29tbWFuZFR5cGUgIT0gQ01EX0xFVCk7CisKIAkJLyoKIAkJICogU2ltaWxhcmx5IHRoZSBncmFt bWFyIGRvZXNuJ3QgZW5mb3JjZSB0aGUgcHJlc2VuY2Ugb2YgYSBSRVRVUk5JTkcKIAkJICogY2xh dXNlLCBidXQgdGhpcyBpcyByZXF1aXJlZCBoZXJlLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvZGlzY2FyZC5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZGlzY2FyZC5jCmluZGV4 IDM1M2VjOTkwYWYuLjMzZGI0N2U2MzQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRz L2Rpc2NhcmQuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9kaXNjYXJkLmMKQEAgLTE4LDYg KzE4LDcgQEAKICNpbmNsdWRlICJjb21tYW5kcy9hc3luYy5oIgogI2luY2x1ZGUgImNvbW1hbmRz L2Rpc2NhcmQuaCIKICNpbmNsdWRlICJjb21tYW5kcy9wcmVwYXJlLmgiCisjaW5jbHVkZSAiY29t bWFuZHMvc2NoZW1hdmFyLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvc2VxdWVuY2UuaCIKICNpbmNs dWRlICJ1dGlscy9ndWMuaCIKICNpbmNsdWRlICJ1dGlscy9wb3J0YWwuaCIKQEAgLTI1LDcgKzI2 LDcgQEAKIHN0YXRpYyB2b2lkIERpc2NhcmRBbGwoYm9vbCBpc1RvcExldmVsKTsKIAogLyoKLSAq IERJU0NBUkQgeyBBTEwgfCBTRVFVRU5DRVMgfCBURU1QIHwgUExBTlMgfQorICogRElTQ0FSRCB7 IEFMTCB8IFNFUVVFTkNFUyB8IFRFTVAgfCBQTEFOUyB8IFZBUklBQkxFU30KICAqLwogdm9pZAog RGlzY2FyZENvbW1hbmQoRGlzY2FyZFN0bXQgKnN0bXQsIGJvb2wgaXNUb3BMZXZlbCkKQEAgLTQ4 LDYgKzQ5LDEwIEBAIERpc2NhcmRDb21tYW5kKERpc2NhcmRTdG10ICpzdG10LCBib29sIGlzVG9w TGV2ZWwpCiAJCQlSZXNldFRlbXBUYWJsZU5hbWVzcGFjZSgpOwogCQkJYnJlYWs7CiAKKwkJY2Fz ZSBESVNDQVJEX1ZBUklBQkxFUzoKKwkJCVJlc2V0U2NoZW1hVmFyaWFibGVzQ2FjaGUoKTsKKwkJ CWJyZWFrOworCiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIERJU0NB UkQgdGFyZ2V0OiAlZCIsIHN0bXQtPnRhcmdldCk7CiAJfQpAQCAtNzUsNCArODAsNSBAQCBEaXNj YXJkQWxsKGJvb2wgaXNUb3BMZXZlbCkKIAlSZXNldFBsYW5DYWNoZSgpOwogCVJlc2V0VGVtcFRh YmxlTmFtZXNwYWNlKCk7CiAJUmVzZXRTZXF1ZW5jZUNhY2hlcygpOworCVJlc2V0U2NoZW1hVmFy aWFibGVzQ2FjaGUoKTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V2ZW50 X3RyaWdnZXIuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V2ZW50X3RyaWdnZXIuYwppbmRleCA1 NDljN2VhNTFkLi5jOGUyYjgyMmUxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9l dmVudF90cmlnZ2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXZlbnRfdHJpZ2dlci5j CkBAIC0xMjYsNiArMTI2LDcgQEAgc3RhdGljIGV2ZW50X3RyaWdnZXJfc3VwcG9ydF9kYXRhIGV2 ZW50X3RyaWdnZXJfc3VwcG9ydFtdID0gewogCXsiVEVYVCBTRUFSQ0ggVEVNUExBVEUiLCB0cnVl fSwKIAl7IlRZUEUiLCB0cnVlfSwKIAl7IlVTRVIgTUFQUElORyIsIHRydWV9LAorCXsiVkFSSUFC TEUiLCB0cnVlfSwKIAl7IlZJRVciLCB0cnVlfSwKIAl7TlVMTCwgZmFsc2V9CiB9OwpAQCAtMTEy NCw2ICsxMTI1LDcgQEAgRXZlbnRUcmlnZ2VyU3VwcG9ydHNPYmplY3RUeXBlKE9iamVjdFR5cGUg b2J0eXBlKQogCQljYXNlIE9CSkVDVF9UU1RFTVBMQVRFOgogCQljYXNlIE9CSkVDVF9UWVBFOgog CQljYXNlIE9CSkVDVF9VU0VSX01BUFBJTkc6CisJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgogCQlj YXNlIE9CSkVDVF9WSUVXOgogCQkJcmV0dXJuIHRydWU7CiAKQEAgLTIyMjIsNiArMjIyNCw4IEBA IHN0cmluZ2lmeV9ncmFudF9vYmp0eXBlKE9iamVjdFR5cGUgb2JqdHlwZSkKIAkJCXJldHVybiAi VEFCTEVTUEFDRSI7CiAJCWNhc2UgT0JKRUNUX1RZUEU6CiAJCQlyZXR1cm4gIlRZUEUiOworCQlj YXNlIE9CSkVDVF9WQVJJQUJMRToKKwkJCXJldHVybiAiVkFSSUFCTEUiOwogCQkvKiB0aGVzZSBj dXJyZW50bHkgYXJlbid0IHVzZWQgKi8KIAkJY2FzZSBPQkpFQ1RfQUNDRVNTX01FVEhPRDoKIAkJ Y2FzZSBPQkpFQ1RfQUdHUkVHQVRFOgpAQCAtMjMwNCw2ICsyMzA4LDggQEAgc3RyaW5naWZ5X2Fk ZWZwcml2c19vYmp0eXBlKE9iamVjdFR5cGUgb2JqdHlwZSkKIAkJCXJldHVybiAiVEFCTEVTUEFD RVMiOwogCQljYXNlIE9CSkVDVF9UWVBFOgogCQkJcmV0dXJuICJUWVBFUyI7CisJCWNhc2UgT0JK RUNUX1ZBUklBQkxFOgorCQkJcmV0dXJuICJWQVJJQUJMRVMiOwogCQkvKiB0aGVzZSBjdXJyZW50 bHkgYXJlbid0IHVzZWQgKi8KIAkJY2FzZSBPQkpFQ1RfQUNDRVNTX01FVEhPRDoKIAkJY2FzZSBP QkpFQ1RfQUdHUkVHQVRFOgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFp bi5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCmluZGV4IDQxY2Q0N2U4YmMuLjEx YzgyNTdmY2EgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYworKysg Yi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKQEAgLTg5Myw2ICs4OTMsOSBAQCBFeHBs YWluTm9kZShQbGFuU3RhdGUgKnBsYW5zdGF0ZSwgTGlzdCAqYW5jZXN0b3JzLAogCQkJCWNhc2Ug Q01EX0RFTEVURToKIAkJCQkJcG5hbWUgPSBvcGVyYXRpb24gPSAiRGVsZXRlIjsKIAkJCQkJYnJl YWs7CisJCQkJY2FzZSBDTURfTEVUOgorCQkJCQlwbmFtZSA9IG9wZXJhdGlvbiA9ICJMZXQiOwor CQkJCQlicmVhazsKIAkJCQlkZWZhdWx0OgogCQkJCQlwbmFtZSA9ICI/Pz8iOwogCQkJCQlicmVh azsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYyBiL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3ByZXBhcmUuYwppbmRleCBiOTQ1YjE1NTZhLi5hNjk0NzFlOTI2IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMKKysrIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvcHJlcGFyZS5jCkBAIC0xNTEsNiArMTUxLDcgQEAgUHJlcGFyZVF1ZXJ5KFByZXBh cmVTdG10ICpzdG10LCBjb25zdCBjaGFyICpxdWVyeVN0cmluZywKIAkJY2FzZSBDTURfSU5TRVJU OgogCQljYXNlIENNRF9VUERBVEU6CiAJCWNhc2UgQ01EX0RFTEVURToKKwkJY2FzZSBDTURfTEVU OgogCQkJLyogT0sgKi8KIAkJCWJyZWFrOwogCQlkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvc2NoZW1hdmFyLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9zY2hlbWF2 YXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5jYjgwM2ZhYjBjCi0t LSAvZGV2L251bGwKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc2NoZW1hdmFyLmMKQEAgLTAs MCArMSw2NjMgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIHNjaGVtYXZhci5jCisgKgkg IFBvc3RncmVTUUwgc2Vzc2lvbiB2YXJpYWJsZSBzdXBwb3J0IGNvZGUuCisgKgorICogUG9ydGlv bnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMTgsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50 IEdyb3VwCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTQsIFJlZ2VudHMgb2YgdGhlIFVu aXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQorICoKKyAqCisgKiBJREVOVElGSUNBVElPTgorICoJICBz cmMvYmFja2VuZC9jb21tYW5kcy9zY2hlbWF2YXIuYworICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor ICovCisjaW5jbHVkZSAicG9zdGdyZXMuaCIKKyNpbmNsdWRlICJtaXNjYWRtaW4uaCIKKworI2lu Y2x1ZGUgImFjY2Vzcy9odHVwX2RldGFpbHMuaCIKKyNpbmNsdWRlICJhY2Nlc3MveGFjdC5oIgor I2luY2x1ZGUgImNhdGFsb2cvb2JqZWN0YWRkcmVzcy5oIgorI2luY2x1ZGUgImNhdGFsb2cvbmFt ZXNwYWNlLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19jbGFzcy5oIgorI2luY2x1ZGUgImNhdGFs b2cvcGdfdHlwZS5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3RhYmxlY21kcy5oIgorI2luY2x1ZGUg ImNvbW1hbmRzL3NjaGVtYXZhci5oIgorI2luY2x1ZGUgInBhcnNlci9wYXJzZV9jb2VyY2UuaCIK KyNpbmNsdWRlICJwYXJzZXIvcGFyc2VfdHlwZS5oIgorI2luY2x1ZGUgInV0aWxzL2FjbC5oIgor I2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCisjaW5jbHVkZSAidXRpbHMvZGF0dW0uaCIKKyNp bmNsdWRlICJ1dGlscy9oc2VhcmNoLmgiCisjaW5jbHVkZSAidXRpbHMvaW52YWwuaCIKKyNpbmNs dWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKKyNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgorI2lu Y2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCisKKy8qCisgKiBUaGlzIHNjaGVtYSB2YXJpYWJsZSBj YWNoZSBtaXhlcyB0aGUgY2FjaGUgYW5kIHN0b3JhZ2VzIGJlaGF2ZS4gVGhhdCBpcyBub3QKKyAq IGNvcnJlY3QgYW5kIGl0IGlzIHByb2JsZW1hdGljLCB3aGVuIHZhcmlhYmxlIGlzIHJlbW92ZWQu IFRoZSBvd24gc3RvcmFnZQorICogYmFzZWQgb24gc3RvcmFnZSBtYW5hZ2VyIGNhbiBiZSBpbXBs ZW1lbnRlZCwgUmVsRmlsZU5vZGUgY2FuIGJlIGRlZmluZWQgYW5kCisgKiBtZWNoYW5pc20gYmFz ZWQgb24gUGVuZGluZ1JlbERlbGV0ZSBzdHJ1Y3QgY2FuIGJlIHVzZWQuIFRoaXMgaXMgYSBhcmd1 bWVudAorICogZm9yIGltcGxlbWVudGF0aW9uIHNjaGVtYSB2YXJpYWJsZXMgYmFzZWQgb24gcGdf Y2xhc3MuCisgKiBBbHRlcm5hdGl2ZSBzb2x1dGlvbiBjYW4gYmUgZGV0ZWN0aW9uIG9mIHNjaGVt YSBjaGFuZ2VzIGFuZCByZWNoZWNrIGF0IGFuZAorICogb2YgdHJhbnNhY3Rpb24uCisgKi8KK3R5 cGVkZWYgc3RydWN0IFNjaGVtYVZhckRhdGEKK3sKKwlPaWQJCQl2YXJpZDsJCQkvKiBwZ19jbGFz cyBPSUQgb2YgdGhpcyBzZXF1ZW5jZSAoaGFzaCBrZXkpICovCisJT2lkCQkJdHlwaWQ7CQkJLyog T0lEIG9mIHRoZSBkYXRhIHR5cGUgKi8KKwlpbnQzMgkJdHlwbW9kOworCWludDE2CQl0eXBsZW47 CisJYm9vbAkJdHlwYnl2YWw7CisJYm9vbAkJaXNudWxsOworCWJvb2wJCWZyZWV2YWw7CisJRGF0 dW0JCXZhbHVlOworfSBTY2hlbWFWYXJEYXRhOworCit0eXBlZGVmIFNjaGVtYVZhckRhdGEgKlNj aGVtYVZhcjsKKworc3RhdGljIEhUQUIgKnNjaGVtYXZhcmhhc2h0YWIgPSBOVUxMOwkJLyogaGFz aCB0YWJsZSBmb3Igc2Vzc2lvbiB2YXJpYWJsZXMgKi8KK3N0YXRpYyBNZW1vcnlDb250ZXh0IFNj aGVtYVZhck1lbW9yeUNvbnRleHQgPSBOVUxMOworCitzdGF0aWMgRGF0dW0gZGF0dW1DYXN0KERh dHVtIHZhbHVlLAorCQkJCQkJICBPaWQgdGFyZ2V0X3R5cGlkLCBpbnQgdGFyZ2V0X3R5cG1vZCwK KwkJCQkJCSAgT2lkIHNvdXJjZV90eXBpZCwgaW50IHNvdXJjZV90eXBtb2QpOworCitzdGF0aWMg Ym9vbAlmaXJzdF90aW1lID0gdHJ1ZTsKK3N0YXRpYyBib29sCWNhY2hlX2lzX3ZhbGlkID0gdHJ1 ZTsKKworc3RhdGljIHZvaWQgSW52YWxpZGF0ZVNjaGVtYVZhckNhY2hlQ2FsbGJhY2soRGF0dW0g YXJnLCBpbnQgY2FjaGVpZCwgdWludDMyIGhhc2h2YWx1ZSk7CisKKy8qIGp1c3QgbWFyayBjYWNo ZSB0byByZWNoZWNrICovCitzdGF0aWMgdm9pZAorSW52YWxpZGF0ZVNjaGVtYVZhckNhY2hlQ2Fs bGJhY2soRGF0dW0gYXJnLCBpbnQgY2FjaGVpZCwgdWludDMyIGhhc2h2YWx1ZSkKK3sKKwkvKgor CSAqIGJlY2F1c2UgdGhpcyBjYWNoZSBob2xkcyB2YWx1ZXMgb2Ygc2NoZW1hIHZhcmlhYmxlcywg dGhlbgorCSAqIHRoZSBjb250ZW50IGNhbm5vdCBiZSByZW1vdmVkIGluIHRoaXMgbW9tZW10LiBX ZSBzaG91bGQgdG8KKwkgKiB3YWl0IG9uIHRyYW5zYWN0aW9uIGVuZC4KKwkgKi8KKwljYWNoZV9p c192YWxpZCA9IGZhbHNlOworfQorCisvKgorICogV2FpdCBvbiBjb21taXQgb3Igcm9sbGJhY2sg YW5kIGNsZWFuIHZhbHVlcyB0aGF0IG1pc3MgZW50cnkgaW4gc3lzdGVtCisgKiBjYXRhbG9nLiBJ dCBpcyB0ZW1wb3Jhcnkgc29sdXRpb24gKGFsdGhvdWdoIGl0IGlzIHdvcmtpbmcpLiBTdG9yYWdl IG1hbmFnZXIKKyAqIGJhc2VkIHNvbHV0aW9uIHdpbGwgYmUgYmV0dGVyLCBidXQgaXQgaXMgbm90 IG5lY2Vzc2FyeSBmb3IgdGhpcyBQb0MuCisgKgorICogcmVtb3ZlcyB1bmNvbW1pdHRlZCBvciBk cm9wcGVkIHNjaGVtYSB2YXJpYWJsZXMsIHNvIGV2ZW50IGNhbiBiZSBpZ25vcmVkLgorICovCitz dGF0aWMgdm9pZAorcmVjaGVja19zY2hlbWFfdmFyaWFibGVzKFhhY3RFdmVudCBldmVudCwgdm9p ZCAqYXJnKQoreworCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7CisJU2NoZW1hVmFyCQl2YXI7CisK KwlpZiAoY2FjaGVfaXNfdmFsaWQgfHwgc2NoZW1hdmFyaGFzaHRhYiA9PSBOVUxMIHx8ICFJc1Ry YW5zYWN0aW9uU3RhdGUoKSkKKwkJcmV0dXJuOworCisJaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBz Y2hlbWF2YXJoYXNodGFiKTsKKworCXdoaWxlICgodmFyID0gKFNjaGVtYVZhcikgaGFzaF9zZXFf c2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorCXsKKwkJSGVhcFR1cGxlCXRwID0gSW52YWxpZE9p ZDsKKworCQl0cCA9IFNlYXJjaFN5c0NhY2hlMShSRUxPSUQsIE9iamVjdElkR2V0RGF0dW0odmFy LT52YXJpZCkpOworCQlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHApKQorCQl7CisJCQllbG9nKERF QlVHMSwgInZhcmlhYmxlICVkIGlzIHJlbW92ZWQgZnJvbSBjYWNoZSIsIHZhci0+dmFyaWQpOwor CisJCQlpZiAodmFyLT5mcmVldmFsKQorCQkJeworCQkJCXBmcmVlKERhdHVtR2V0UG9pbnRlcih2 YXItPnZhbHVlKSk7CisJCQkJdmFyLT5mcmVldmFsID0gZmFsc2U7CisJCQl9CisKKwkJCWlmICho YXNoX3NlYXJjaChzY2hlbWF2YXJoYXNodGFiLAorCQkJCQkJCQkodm9pZCAqKSAmdmFyLT52YXJp ZCwKKwkJCQkJCQkJSEFTSF9SRU1PVkUsCisJCQkJCQkJCU5VTEwpID09IE5VTEwpCisJCQkJZWxv ZyhFUlJPUiwgImhhc2ggdGFibGUgY29ycnVwdGVkIik7CisJCX0KKwkJZWxzZQorCQkJUmVsZWFz ZVN5c0NhY2hlKHRwKTsKKwl9CisJY2FjaGVfaXNfdmFsaWQgPSB0cnVlOworfQorCisvKgorICog RGVmaW5lU2Vzc2lvblZhcmlhYmxlCisgKgkJCQlDcmVhdGVzIGEgbmV3IHZhcmlhYmxlIHJlbGF0 ZWQgcmVsYXRpb24KKyAqLworT2JqZWN0QWRkcmVzcworRGVmaW5lU2NoZW1hVmFyaWFibGUoUGFy c2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVTY2hlbWFWYXJTdG10ICp2YXIpCit7CisJQ3JlYXRlU3Rt dCAqc3RtdCA9IG1ha2VOb2RlKENyZWF0ZVN0bXQpOworCU9pZAkJCXR5cG9pZDsKKwlPaWQJCQl2 YXJvaWQ7CisJT2JqZWN0QWRkcmVzcyBhZGRyZXNzOworCisJLyoKKwkgKiBJZiBpZl9ub3RfZXhp c3RzIHdhcyBnaXZlbiBhbmQgYSByZWxhdGlvbiB3aXRoIHRoZSBzYW1lIG5hbWUgYWxyZWFkeQor CSAqIGV4aXN0cywgYmFpbCBvdXQuIChOb3RlOiB3ZSBuZWVkbid0IGNoZWNrIHRoaXMgd2hlbiBu b3QgaWZfbm90X2V4aXN0cywKKwkgKiBiZWNhdXNlIERlZmluZVJlbGF0aW9uIHdpbGwgY29tcGxh aW4gYW55d2F5LikKKwkgKi8KKwlpZiAodmFyLT5pZl9ub3RfZXhpc3RzKQorCXsKKwkJUmFuZ2VW YXJHZXRBbmRDaGVja0NyZWF0aW9uTmFtZXNwYWNlKHZhci0+dmFyaWFibGUsIE5vTG9jaywgJnZh cm9pZCk7CisJCWlmIChPaWRJc1ZhbGlkKHZhcm9pZCkpCisJCXsKKwkJCWVyZXBvcnQoTk9USUNF LAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0RVUExJQ0FURV9UQUJMRSksCisJCQkJCSBlcnJtc2co InZhcmlhYmxlIFwiJXNcIiBhbHJlYWR5IGV4aXN0cywgc2tpcHBpbmciLAorCQkJCQkJCXZhci0+ dmFyaWFibGUtPnJlbG5hbWUpKSk7CisJCQlyZXR1cm4gSW52YWxpZE9iamVjdEFkZHJlc3M7CisJ CX0KKwl9CisKKwl0eXBvaWQgPSBMb29rdXBUeXBlTmFtZU9pZChwc3RhdGUsIHZhci0+dHlwZU5h bWUsIGZhbHNlKTsKKworCS8qCisJICogRG9uJ3QgYWxsb3cgY29tcG9zaXRlIHR5cGVzIGFuZCBh cnJheXMuIFRoZSBsZWZ0IGV4cHJlc3Npb24gb2YKKwkgKiBMRVQgc3RhdGVtZW50IGlzIHNpbXBs ZSBpbiB0aGlzIG1vbWVudCAoZG9uJ3QgYWxsb3cgcmVjb3JkIGZpZWxkCisJICogb3IgYXJyYXkg ZmllbGQgc3BlY2lmaWNhdGlvbikuIFdpdGhvdXQgdGhpcyBzdXBwb3J0IHdlIHNob3VsZAorCSAq IG5vdCB0byBzdXBwb3J0IG5vbiBzY2FsYXJzIGV2ZXIuCisJICovCisJaWYgKHR5cGVfaXNfcm93 dHlwZSh0eXBvaWQpKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfRkVB VFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkgZXJybXNnKCJDb21wb3NpdGUgdHlwZXMgYXJlIG5v dCBhbGxvd2VkIGFzIHZhcmlhYmxlIHR5cGUuIikpKTsKKworCWlmIChnZXRfYmFzZV9lbGVtZW50 X3R5cGUodHlwb2lkKSAhPSBJbnZhbGlkT2lkKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJj b2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkgZXJybXNnKCJTY2hlbWEg dmFyaWFibGVzIGNhbm5vdCBiZSBhIGFycmF5LiIpKSk7CisKKwlpZiAoZ2V0X3R5cHR5cGUodHlw b2lkKSA9PSBUWVBUWVBFX1BTRVVETykKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShF UlJDT0RFX0RBVEFUWVBFX01JU01BVENIKSwKKwkJCQkgZXJybXNnKCJ2YXJpYWJsZSBjYW5ub3Qg YmUgJXMiLAorCQkJCQkJZm9ybWF0X3R5cGVfYmUodmFyb2lkKSkpKTsKKworCXN0bXQtPnRhYmxl RWx0cyA9IE5JTDsKKwlzdG10LT5yZWxhdGlvbiA9IHZhci0+dmFyaWFibGU7CisJc3RtdC0+aW5o UmVsYXRpb25zID0gTklMOworCXN0bXQtPmNvbnN0cmFpbnRzID0gTklMOworCXN0bXQtPm9wdGlv bnMgPSBOSUw7CisJc3RtdC0+b25jb21taXQgPSBPTkNPTU1JVF9OT09QOworCXN0bXQtPnRhYmxl c3BhY2VuYW1lID0gTlVMTDsKKwlzdG10LT5pZl9ub3RfZXhpc3RzID0gdmFyLT5pZl9ub3RfZXhp c3RzOworCisJLyoKKwkgKiBVc2UgcmVsb2Z0eXBlIGF0dHJpYnV0ZS4gVGhpcyBhdHRyaWJ1dGUg c2hvdWxkIGJlIGNvbXBvc2l0ZSB0eXBlIGZvcgorCSAqIHRhYmxlcywgYnV0IHRoZXJlIGFyZSBu byByZWFzb24gdG8gYXBwbHkgdGhpcyBydWxlIGZvciB2YXJpYWJsZXMuIENhbgorCSAqIGJlIGNo YW5nZWQgbGF0ZXIgd2l0aCBjb21wb3NpdGUgdHlwZSBzdXBwb3J0LiBJbiB0aGlzIG1vbWVudCBJ IGRvbid0CisJICogcGxheSB3aXRoIGl0LCBiZWNhdXNlIEkgd291bGQgbm90IGFsbG93IHF1ZXJp ZXMgbGlrZToKKwkgKiBTRUxFQ1Qgc2NoZW1hdmFyIEZST00gc2NoZW1hdmFyLCBiZWNhdXNlIHRo ZXJlIGlzIHNlbWFudGljIGNvbGlzc2lvbgorCSAqIHdpdGggU0VMRUNUIHNjaGVtYXZhci4gVXNl cnMgZXhwZWN0cyBjb21wb3NpdGUgdmFsdWUgKG9uZSBhdHRyaWJ1dGUpCisJICogZnJvbSBmaXJz dCBxdWVyeSwgYnV0IHNjYWxhciBmcm9tIHNlY29uZCBxdWVyeS4gVGhpcyBzY2hpc21hIGNhbiBi ZQorCSAqIHNvbHZlZCBieSBkaXNhbGxvd2luZyBTRUxFQ1QgLiBGUk9NIHNjaGVtYXZhciBmb3Ig c2NhbGFyIHZhcmlhYmxlcy4KKwkgKgorCSAqIE9uIHNlY29uZCBoYW5kIC0gd2l0aG91dCBhZGRp dGlvbmFsIGZpZWxkcywganVzdCB3aXRoIHJlbG9mdHlwZSBpcworCSAqIG5vdCBwb3NzaWJsZSB0 byBzdG9yZSB0eXBtb2QuIFNvIGFsbCB2YXJpYWJsZXMgY2FuIGJlIHR5cG1vZCBsZXNzLgorCSAq IElzIG5vdCBwb3NzaWJsZSB0byBzdG9yZSBkZWZhdWx0IGV4cHJlc3Npb25zLiBTbyBmaW5hbCBk ZXNpZ24gc2hvdWxkCisJICogYmUgYmFzZWQgb24gYXV4IGNvbXBvc2l0ZSB0eXBlcyBmb3Igc2Nh bGFyIHZhcmlhYmxlcy4KKwkgKgorCSAqIFRoZW9yZXRpY2FsbHksIHRoZXJlIGNhbiBiZSB1c2Vk IGEgcmVsdHlwZSBhbmQgcmVsb2Z0eXBlIHRvZ2V0aGVyLgorCSAqIHJlbG9mdHlwZSB3aWxsIGJl IHNjYWxhciwgYW5kIHJlbHR5cGUgd2lsbCBiZSBjb21wb3NpdGUgb25lIGZpZWxkCisJICogcm93 IHR5cGUuIFdoZW4gcmVsb2Z0eXBlID0gcmVsdHlwZSwgdGhlbiBzY2hlbWEgdmFyaWFibGUgaXMg YmFzZWQKKwkgKiBvbiBjb21wb3NpdGUgdHlwZSwgZWxzZSBzY2hlbWEgdmFyaWFibGUgaXMgb2Yg c2NhbGFyIHR5cGUuCisJICovCisJc3RtdC0+b2ZUeXBlbmFtZSA9IHZhci0+dHlwZU5hbWU7CisK KwlhZGRyZXNzID0gRGVmaW5lUmVsYXRpb24oc3RtdCwgUkVMS0lORF9WQVJJQUJMRSwgSW52YWxp ZE9pZCwgTlVMTCwgTlVMTCk7CisJQXNzZXJ0KGFkZHJlc3Mub2JqZWN0SWQgIT0gSW52YWxpZE9p ZCk7CisKKwlyZXR1cm4gYWRkcmVzczsKK30KKworLyoKKyAqIEltcGxlbWVudGF0aW9uIG9mIHNj aGVtYXZhciBjYWNoZS4gSXQgaXMgcXVlc3Rpb24gaWYgaXQgc2hvdWxkIGJlIGluIHRoaXMgcGxh Y2UsIG9yCisgKiBpdCBzaG91bGQgYmUgc3RvcmFnZSByZWxhdGVkIG9yIGNhY2hlIHJlbGF0ZWQg cGxhY2U/IEJ1dCBmb3IgdGhpcyBtb21lbnQgKFBvQykgaXQKKyAqIGNhbiBiZSBoZXJlLiBDYWNo ZSBpcyBpbXBsZW1lbnRlZCBhcyBoYXNoIHRhYmxlIHdpdGggb3duIG1lbW9yeSBjb250ZXh0Lgor ICovCisKKy8qCisgKiBDcmVhdGUgdGhlIGhhc2ggdGFibGUgZm9yIHN0b3Jpbmcgc2NoZW1hIHZh cmlhYmxlcworICovCitzdGF0aWMgdm9pZAorY3JlYXRlX3NjaGVtYXZhcl9oYXNodGFibGUodm9p ZCkKK3sKKwlIQVNIQ1RMCQljdGw7CisKKwkvKiBzZXQgY2FsbGJhY2tzICovCisJaWYgKGZpcnN0 X3RpbWUpCisJeworCisJCUNhY2hlUmVnaXN0ZXJTeXNjYWNoZUNhbGxiYWNrKFJFTE9JRCwKKwkJ CQkJCQkJCSAgSW52YWxpZGF0ZVNjaGVtYVZhckNhY2hlQ2FsbGJhY2ssCisJCQkJCQkJCQkgIChE YXR1bSkgMCk7CisJCVJlZ2lzdGVyWGFjdENhbGxiYWNrKHJlY2hlY2tfc2NoZW1hX3ZhcmlhYmxl cywgTlVMTCk7CisKKwkJZmlyc3RfdGltZSA9IGZhbHNlOworCX0KKworCS8qIG5lZWRzIG93biBs b25nIGxpZmUgbWVtb3J5IGNvbnRleHQgKi8KKwlpZiAoU2NoZW1hVmFyTWVtb3J5Q29udGV4dCA9 PSBOVUxMKQorCXsKKwkJU2NoZW1hVmFyTWVtb3J5Q29udGV4dCA9IEFsbG9jU2V0Q29udGV4dENy ZWF0ZShUb3BNZW1vcnlDb250ZXh0LAorCQkJCQkJCQkJCQkJCQkJInNjaGVtYSB2YXJpYWJsZXMi LAorCQkJCQkJCQkJCQkJCQkJQUxMT0NTRVRfU1RBUlRfU01BTExfU0laRVMpOworCX0KKworCW1l bXNldCgmY3RsLCAwLCBzaXplb2YoY3RsKSk7CisJY3RsLmtleXNpemUgPSBzaXplb2YoT2lkKTsK KwljdGwuZW50cnlzaXplID0gc2l6ZW9mKFNjaGVtYVZhckRhdGEpOworCWN0bC5oY3h0ID0gU2No ZW1hVmFyTWVtb3J5Q29udGV4dDsKKworCXNjaGVtYXZhcmhhc2h0YWIgPSBoYXNoX2NyZWF0ZSgi U2NoZW1hIHZhcmlhYmxlcyIsIDY0LCAmY3RsLAorCQkJCQkJCQkJCUhBU0hfRUxFTSB8IEhBU0hf QkxPQlMgfCBIQVNIX0NPTlRFWFQpOworCWNhY2hlX2lzX3ZhbGlkID0gdHJ1ZTsKK30KKworLyoK KyAqIEZhc3QgZHJvcCBjb21wbGV0ZSBjb250ZW50IG9mIHNjaGVtYSB2YXJpYWJsZXMKKyAqLwor dm9pZAorUmVzZXRTY2hlbWFWYXJpYWJsZXNDYWNoZSh2b2lkKQoreworCWlmIChzY2hlbWF2YXJo YXNodGFiKQorCXsKKwkJaGFzaF9kZXN0cm95KHNjaGVtYXZhcmhhc2h0YWIpOworCQlzY2hlbWF2 YXJoYXNodGFiID0gTlVMTDsKKwl9CisKKwlpZiAoU2NoZW1hVmFyTWVtb3J5Q29udGV4dCAhPSBO VUxMKQorCXsKKwkJTWVtb3J5Q29udGV4dFJlc2V0KFNjaGVtYVZhck1lbW9yeUNvbnRleHQpOwor CX0KK30KKworLyoKKyAqIENvcHkgZGF0dW0gdmFsdWUgdG8gc2NoZW1hIHZhcmlhYmxlcyBjYWNo ZSBwbGFjZQorICovCitzdGF0aWMgdm9pZAorU2V0VmFsdWUoU2NoZW1hVmFyIHZhciwKKwkJCQlE YXR1bSB2YWx1ZSwgYm9vbCBpc051bGwsCisJCQkJCQlPaWQJdHlwaWQsIGludDMyIHR5cG1vZCkK K3sKKwkvKiByZWxlYXNlIHByZXZpb3VzbHkgc3RvcmVkIHZhbHVlICovCisJaWYgKHZhci0+ZnJl ZXZhbCkKKwl7CisJCXBmcmVlKERhdHVtR2V0UG9pbnRlcih2YXItPnZhbHVlKSk7CisJCXZhci0+ ZnJlZXZhbCA9IGZhbHNlOworCX0KKworCWlmICghaXNOdWxsKQorCXsKKwkJTWVtb3J5Q29udGV4 dCBvbGRjeHQ7CisKKwkJLyoKKwkJICogY2FzdCB0aGUgdmFsdWUgaWYgY29udmVyc2lvbiBpcyBu ZWNlc3NhcnkuCisJCSAqIEV4cGVjdGluZzogY3VycmVudCBjb250ZXh0IGlzIHNob3J0IGNvbnRl eHQuCisJCSAqCisJCSAqIFFVRVNUSU9OOiBob3cgbXVjaCBzaG91bGQgYmUgdGhpcyBjYXN0IHRv bGVyYW50L3N0cmljdD8KKwkJICovCisJCWlmICh2YXItPnR5cGlkICE9IHR5cGlkIHx8IHZhci0+ dHlwbW9kICE9IHR5cG1vZCkKKwkJeworCQkJdmFsdWUgPSBkYXR1bUNhc3QodmFsdWUsCisJCQkJ CQkJCXZhci0+dHlwaWQsIHZhci0+dHlwbW9kLAorCQkJCQkJCQl0eXBpZCwgdHlwbW9kKTsKKwkJ fQorCisJCXZhci0+aXNudWxsID0gZmFsc2U7CisKKwkJb2xkY3h0ID0gTWVtb3J5Q29udGV4dFN3 aXRjaFRvKFNjaGVtYVZhck1lbW9yeUNvbnRleHQpOworCisJCXZhci0+dmFsdWUgPSBkYXR1bUNv cHkodmFsdWUsIHZhci0+dHlwYnl2YWwsIHZhci0+dHlwbGVuKTsKKwkJaWYgKHZhci0+dmFsdWUg IT0gdmFsdWUpCisJCQl2YXItPmZyZWV2YWwgPSB0cnVlOworCisJCU1lbW9yeUNvbnRleHRTd2l0 Y2hUbyhvbGRjeHQpOworCX0KKwllbHNlCisJeworCQl2YXItPnZhbHVlID0gKERhdHVtKSAwOwor CQl2YXItPmlzbnVsbCA9IHRydWU7CisJfQorfQorCisvKgorICogQWNjZXNzIGZ1bmN0aW9ucyB0 byBzY2hlbWEgdmFyaWFibGVzLgorICovCit2b2lkCitTZXRTY2hlbWFWYXJpYWJsZShPaWQgdmFy aWQsIERhdHVtIHZhbHVlLCBib29sIGlzTnVsbCwKKwkJCQkJCU9pZAl0eXBpZCwgaW50MzIgdHlw bW9kLAorCQkJCQkJaW50MTYgdHlwbGVuLCBib29sIHR5cGJ5dmFsKQoreworCVNjaGVtYVZhcgl2 YXI7CisJYm9vbAkJZm91bmQ7CisKKwlpZiAoc2NoZW1hdmFyaGFzaHRhYiA9PSBOVUxMKQorCXsK KwkJLyogZG9uJ3QgaW5pdCBoYXNodGFibGUgZm9yIE5VTEwgdmFsdWVzICovCisJCWlmIChpc051 bGwpCisJCQlyZXR1cm47CisKKwkJY3JlYXRlX3NjaGVtYXZhcl9oYXNodGFibGUoKTsKKwl9CisK Kwl2YXIgPSAoU2NoZW1hVmFyKSBoYXNoX3NlYXJjaChzY2hlbWF2YXJoYXNodGFiLCAmdmFyaWQs IEhBU0hfRU5URVIsICZmb3VuZCk7CisJaWYgKCFmb3VuZCkKKwl7CisJCUhlYXBUdXBsZQl0cDsK KwkJRm9ybV9wZ19jbGFzcwl2YXJ0dXA7CisKKwkJdmFyLT52YWx1ZSA9IChEYXR1bSkgMDsKKwkJ dmFyLT5pc251bGwgPSB0cnVlOworCQl2YXItPmZyZWV2YWwgPSBmYWxzZTsKKworCQkvKiBub3cs IHR5cGUgaW5mbyBmb3Igc2NoZW1hIHZhcmlhYmxlIGlzIGNvbGxlY3RlZCAqLworCQl0cCA9IFNl YXJjaFN5c0NhY2hlMShSRUxPSUQsIE9iamVjdElkR2V0RGF0dW0odmFyaWQpKTsKKwkJaWYgKCFI ZWFwVHVwbGVJc1ZhbGlkKHRwKSkKKwkJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGQg Zm9yIHZhcmlhYmxlICV1IiwgdmFyaWQpOworCisJCXZhcnR1cCA9IChGb3JtX3BnX2NsYXNzKSBH RVRTVFJVQ1QodHApOworCQl2YXItPnR5cGlkID0gdmFydHVwLT5yZWxvZnR5cGU7CisKKwkJLyog dHlwbW9kIGlzIG5vdCBzYXZlZCAqLworCQl2YXItPnR5cG1vZCA9IC0xOworCisJCVJlbGVhc2VT eXNDYWNoZSh0cCk7CisKKwkJZ2V0X3R5cGxlbmJ5dmFsKHZhci0+dHlwaWQsICZ2YXItPnR5cGxl biwgJnZhci0+dHlwYnl2YWwpOworCX0KKworCVNldFZhbHVlKHZhciwgdmFsdWUsIGlzTnVsbCwg dHlwaWQsIHR5cG1vZCk7Cit9CisKKy8qCisgKiBSZXR1cm5zIHZhcmlhYmxlIG5hbWUKKyAqLwor Y2hhciAqCitnZXRfc2NoZW1hdmFyX25hbWUoT2lkIHZhcmlkKQoreworCUhlYXBUdXBsZQkJcmVs VHVwOworCUZvcm1fcGdfY2xhc3MJcmVsRm9ybTsKKwljaGFyCSAgICpuc3BuYW1lOworCWNoYXIJ ICAgKnJlbG5hbWU7CisKKwlyZWxUdXAgPSBTZWFyY2hTeXNDYWNoZTEoUkVMT0lELAorCQkJCQkJ CSAgT2JqZWN0SWRHZXREYXR1bSh2YXJpZCkpOworCWlmICghSGVhcFR1cGxlSXNWYWxpZChyZWxU dXApKQorCQkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHNjaGVtYSB2YXJp YWJsZSAldSIsIHZhcmlkKTsKKwlyZWxGb3JtID0gKEZvcm1fcGdfY2xhc3MpIEdFVFNUUlVDVChy ZWxUdXApOworCisJLyogUXVhbGlmeSB0aGUgbmFtZSBpZiBub3QgdmlzaWJsZSBpbiBzZWFyY2gg cGF0aCAqLworCWlmIChSZWxhdGlvbklzVmlzaWJsZSh2YXJpZCkpCisJCW5zcG5hbWUgPSBOVUxM OworCWVsc2UKKwkJbnNwbmFtZSA9IGdldF9uYW1lc3BhY2VfbmFtZShyZWxGb3JtLT5yZWxuYW1l c3BhY2UpOworCisJcmVsbmFtZSA9IHF1b3RlX3F1YWxpZmllZF9pZGVudGlmaWVyKG5zcG5hbWUs IE5hbWVTdHIocmVsRm9ybS0+cmVsbmFtZSkpOworCisJUmVsZWFzZVN5c0NhY2hlKHJlbFR1cCk7 CisKKwlyZXR1cm4gcmVsbmFtZTsKK30KKworLyoKKyAqIFNlY3VyaXplZCB2ZXJzaW9ucyBTZXRT Y2hlbWFWYXJpYWJsZQorICovCit2b2lkCitTZXRTY2hlbWFWYXJpYWJsZVNlY3VyZShPaWQgdmFy aWQsIERhdHVtIHZhbHVlLCBib29sIGlzTnVsbCwKKwkJCQkJCU9pZAl0eXBpZCwgaW50MzIgdHlw bW9kLAorCQkJCQkJaW50MTYgdHlwbGVuLCBib29sIHR5cGJ5dmFsKQoreworCUFjbFJlc3VsdAkJ YWNscmVzdWx0OworCisJLyogQ2hlY2sgcGVybWlzc2lvbnMgKi8KKwlhY2xyZXN1bHQgPSBwZ19j bGFzc19hY2xjaGVjayh2YXJpZCwgR2V0VXNlcklkKCksIEFDTF9VUERBVEUpOworCWlmIChhY2xy ZXN1bHQgIT0gQUNMQ0hFQ0tfT0spCisJCWFjbGNoZWNrX2Vycm9yKGFjbHJlc3VsdCwgT0JKRUNU X1ZBUklBQkxFLCBnZXRfc2NoZW1hdmFyX25hbWUodmFyaWQpKTsKKworCVNldFNjaGVtYVZhcmlh YmxlKHZhcmlkLCB2YWx1ZSwgaXNOdWxsLCB0eXBpZCwgdHlwbW9kLCB0eXBsZW4sIHR5cGJ5dmFs KTsKK30KKworLyoKKyAqIENhc3QgZGF0dW0KKyAqLworc3RhdGljIERhdHVtCitkYXR1bUNhc3Qo RGF0dW0gdmFsdWUsCisJCSAgT2lkIHRhcmdldF90eXBpZCwgaW50IHRhcmdldF90eXBtb2QsCisJ CSAgT2lkIHNvdXJjZV90eXBpZCwgaW50IHNvdXJjZV90eXBtb2QpCit7CisJQ29lcmNpb25QYXRo VHlwZSBjcGF0aHR5cGU7CisJT2lkCQljZnVuY2lkOworCURhdHVtCXJlc3VsdCA9IChEYXR1bSkg MDsKKwlib29sCWlzX2JpbmFyeV9jYXN0ID0gZmFsc2U7CisKKwlpZiAodGFyZ2V0X3R5cGlkICE9 IHNvdXJjZV90eXBpZCkKKwl7CisJCWNwYXRodHlwZSA9IGZpbmRfY29lcmNpb25fcGF0aHdheSh0 YXJnZXRfdHlwaWQsIHNvdXJjZV90eXBpZCwKKwkJCQkJCQkJCQkJQ09FUkNJT05fRVhQTElDSVQs CisJCQkJCQkJCQkJCSZjZnVuY2lkKTsKKworCQlpZiAoY3BhdGh0eXBlID09IENPRVJDSU9OX1BB VEhfTk9ORSkKKwkJCWVsb2coRVJST1IsICJjb3VsZCBub3QgZmluZCBjYXN0IGZyb20gJXMgdG8g JXMiLAorCQkJCQkJZm9ybWF0X3R5cGVfYmUoc291cmNlX3R5cGlkKSwKKwkJCQkJCWZvcm1hdF90 eXBlX2JlKHRhcmdldF90eXBpZCkpOworCisJCWlmIChjcGF0aHR5cGUgPT0gQ09FUkNJT05fUEFU SF9SRUxBQkVMVFlQRSkKKwkJeworCQkJcmVzdWx0ID0gdmFsdWU7CisJCQlpc19iaW5hcnlfY2Fz dCA9IHRydWU7CisJCX0KKwkJZWxzZSBpZiAoY3BhdGh0eXBlID09IENPRVJDSU9OX1BBVEhfQ09F UkNFVklBSU8pCisJCXsKKwkJCU9pZAkJb3V0ZnVuYzsKKwkJCU9pZAkJaW5mdW5jOworCQkJT2lk CQlpb3BhcmFtOworCQkJYm9vbAlpc1ZhcmxlbmE7CisJCQljaGFyCSpzdHI7CisKKwkJCWdldFR5 cGVPdXRwdXRJbmZvKHNvdXJjZV90eXBpZCwgJm91dGZ1bmMsICZpc1ZhcmxlbmEpOworCQkJc3Ry ID0gT2lkT3V0cHV0RnVuY3Rpb25DYWxsKG91dGZ1bmMsIHZhbHVlKTsKKworCQkJZ2V0VHlwZUlu cHV0SW5mbyh0YXJnZXRfdHlwaWQsICZpbmZ1bmMsICZpb3BhcmFtKTsKKwkJCXJlc3VsdCA9IE9p ZElucHV0RnVuY3Rpb25DYWxsKGluZnVuYywgc3RyLCBpb3BhcmFtLCAtMSk7CisJCX0KKwkJZWxz ZSBpZiAoY3BhdGh0eXBlID09IENPRVJDSU9OX1BBVEhfRlVOQykKKwkJeworCQkJcmVzdWx0ID0g T2lkRnVuY3Rpb25DYWxsMyhjZnVuY2lkLAorCQkJCQkJCXZhbHVlLAorCQkJCQkJCUludDMyR2V0 RGF0dW0odGFyZ2V0X3R5cG1vZCksCisJCQkJCQkJQm9vbEdldERhdHVtKGZhbHNlKSk7CisJCX0K Kwl9CisJZWxzZQorCXsKKwkJcmVzdWx0ID0gdmFsdWU7CisJCWlzX2JpbmFyeV9jYXN0ID0gdHJ1 ZTsKKwl9CisKKwlpZiAodGFyZ2V0X3R5cG1vZCA8IDEgfHwgKHRhcmdldF90eXBtb2QgPT0gc291 cmNlX3R5cG1vZCAmJiBpc19iaW5hcnlfY2FzdCkpCisJCXJldHVybiByZXN1bHQ7CisKKwljcGF0 aHR5cGUgPSBmaW5kX3R5cG1vZF9jb2VyY2lvbl9mdW5jdGlvbih0YXJnZXRfdHlwaWQsICZjZnVu Y2lkKTsKKwlpZiAoY3BhdGh0eXBlID09IENPRVJDSU9OX1BBVEhfRlVOQykKKwl7CisJCXJlc3Vs dCA9IE9pZEZ1bmN0aW9uQ2FsbDMoY2Z1bmNpZCwKKwkJCQkJCQkJCQkJcmVzdWx0LAorCQkJCQkJ CQkJCQlJbnQzMkdldERhdHVtKHRhcmdldF90eXBtb2QpLAorCQkJCQkJCQkJCQlCb29sR2V0RGF0 dW0oZmFsc2UpKTsKKwl9CisKKwlyZXR1cm4gcmVzdWx0OworfQorCitEYXR1bQorR2V0U2NoZW1h VmFyaWFibGUoT2lkIHZhcmlkLCBib29sICppc051bGwsCisJCQkJCQlPaWQJdHlwaWQsIGludDMy IHR5cG1vZCwKKwkJCQkJCWludDE2IHR5cGxlbiwgYm9vbCB0eXBieXZhbCkKK3sKKwlBc3NlcnQo dmFyaWQgIT0gSW52YWxpZE9pZCk7CisKKwlpZiAoc2NoZW1hdmFyaGFzaHRhYiAhPSBOVUxMKQor CXsKKwkJU2NoZW1hVmFyCQl2YXI7CisJCWJvb2wJCQlmb3VuZDsKKworCQl2YXIgPSAoU2NoZW1h VmFyKSBoYXNoX3NlYXJjaChzY2hlbWF2YXJoYXNodGFiLAorCQkJCQkJCQkJCSAgJnZhcmlkLCBI QVNIX0ZJTkQsICZmb3VuZCk7CisKKwkJaWYgKGZvdW5kICYmICF2YXItPmlzbnVsbCkKKwkJewor CQkJRGF0dW0gcmVzdWx0OworCisJCQlyZXN1bHQgPSBkYXR1bUNhc3QodmFyLT52YWx1ZSwgdHlw aWQsIHR5cG1vZCwKKwkJCQkJCQkJCXZhci0+dHlwaWQsIHZhci0+dHlwbW9kKTsKKwkJCSppc051 bGwgPSBmYWxzZTsKKworCQkJaWYgKHJlc3VsdCAhPSB2YXItPnZhbHVlKQorCQkJCXJldHVybiBy ZXN1bHQ7CisJCQllbHNlCisJCQkJcmV0dXJuIGRhdHVtQ29weShyZXN1bHQsIHR5cGJ5dmFsLCB0 eXBsZW4pOworCQl9CisJfQorCisJLyoKKwkgKiBUaGlzIGltcGxlbWVudGF0aW9uIGlzIHNpbXBs ZSwgYmVjYXVzZSBkZWZhdWx0IGV4cHJlc3Npb25zCisJICogYXJlIG5vdCBzdXBwb3J0ZWQuIFdp dGggc3VwcG9ydCBvZiBkZWZhdWx0IGV4cHJlc3Npb24sIHRoZXJlCisJICogc2hvdWxkIGJlIGlu c2VydCBzY2hlbWEgdmFyaWFibGUgaW50byBjYWNoZS4gTm90IHN1cHBvcnRlZCB5ZXQsCisJICog c28gZG8ganVzdCBzaW1wbHkgd29yay4KKwkgKi8KKwkqaXNOdWxsID0gdHJ1ZTsKKwlyZXR1cm4g KERhdHVtKSAwOworfQorCisvKgorICogU2VjdXJpemVkIHZlcnNpb24gb2YgR2V0U2NoZW1hVmFy aWFibGUKKyAqLworRGF0dW0KK0dldFNjaGVtYVZhcmlhYmxlU2VjdXJlKE9pZCB2YXJpZCwgYm9v bCAqaXNOdWxsLAorCQkJCQkJT2lkCXR5cGlkLCBpbnQzMiB0eXBtb2QsCisJCQkJCQlpbnQxNiB0 eXBsZW4sIGJvb2wgdHlwYnl2YWwpCit7CisJQWNsUmVzdWx0IGFjbHJlc3VsdDsKKworCS8qIENo ZWNrIHBlcm1pc3Npb25zICovCisJYWNscmVzdWx0ID0gcGdfY2xhc3NfYWNsY2hlY2sodmFyaWQs IEdldFVzZXJJZCgpLCBBQ0xfU0VMRUNUKTsKKwlpZiAoYWNscmVzdWx0ICE9IEFDTENIRUNLX09L KQorCQlhY2xjaGVja19lcnJvcihhY2xyZXN1bHQsIE9CSkVDVF9WQVJJQUJMRSwgZ2V0X3NjaGVt YXZhcl9uYW1lKHZhcmlkKSk7CisKKwlyZXR1cm4gR2V0U2NoZW1hVmFyaWFibGUodmFyaWQsIGlz TnVsbCwgdHlwaWQsIHR5cG1vZCwgdHlwbGVuLCB0eXBieXZhbCk7Cit9CisKKy8qCisgKiBWMSBm dW5jdGlvbiBBUEkKKyAqCisgKiB2b2lkIHNldF9zY2hlbWFfdmFyaWFibGUodmFyIHJlZ2NsYXNz LCB2YWx1ZSBhbnllbGVtZW50KTsKKyAqIGFueWVsZW1lbnQgZ2V0X3NjaGVtYV92YXJpYWJsZSh2 YXIgcmVnY2xhc3MsIGV4cGVjdGVkX3R5cGUgYW55ZWxlbWVudCkKKyAqCisgKi8KK0RhdHVtCitz ZXRfc2NoZW1hX3ZhcmlhYmxlKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJT2lkCQl2YXJpZDsKKwlE YXR1bQl2YWx1ZTsKKwlib29sCWlzTnVsbDsKKwlPaWQJCXR5cGlkOworCWludDE2CXR5cGxlbjsK Kwlib29sCXR5cGJ5dmFsOworCisJaWYgKFBHX0FSR0lTTlVMTCgwKSkKKwkJZXJlcG9ydChFUlJP UiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX05VTExfVkFMVUVfTk9UX0FMTE9XRUQpLAorCQkJCSBl cnJtc2coIm51bGwgdmFsdWUgbm90IGFsbG93ZWQgZm9yIHZhcmlhYmxlIGlkZW50aXR5IikpKTsK KworCXZhcmlkID0gUEdfR0VUQVJHX09JRCgwKTsKKworCWlmICghUEdfQVJHSVNOVUxMKDEpKQor CXsKKwkJdmFsdWUgPSBQR19HRVRBUkdfREFUVU0oMSk7CisJCWlzTnVsbCA9IGZhbHNlOworCX0K KwllbHNlCisJeworCQl2YWx1ZSA9IChEYXR1bSkgMDsKKwkJaXNOdWxsID0gdHJ1ZTsKKwl9CisK Kwl0eXBpZCA9IGdldF9mbl9leHByX2FyZ3R5cGUoZmNpbmZvLT5mbGluZm8sIDEpOworCWlmICh0 eXBpZCA9PSBJbnZhbGlkT2lkKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNP REVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCSBlcnJtc2coImNvdWxkIG5vdCBkZXRl cm1pbmUgaW5wdXQgZGF0YSB0eXBlIikpKTsKKworCWdldF90eXBsZW5ieXZhbCh0eXBpZCwgJnR5 cGxlbiwgJnR5cGJ5dmFsKTsKKwlTZXRTY2hlbWFWYXJpYWJsZVNlY3VyZSh2YXJpZCwgdmFsdWUs IGlzTnVsbCwgdHlwaWQsIC0xLCB0eXBsZW4sIHR5cGJ5dmFsKTsKKworCVBHX1JFVFVSTl9WT0lE KCk7Cit9CisKK0RhdHVtCitnZXRfc2NoZW1hX3ZhcmlhYmxlKFBHX0ZVTkNUSU9OX0FSR1MpCit7 CisJT2lkCQl2YXJpZDsKKwlPaWQJCXR5cGlkOworCWludDE2CXR5cGxlbjsKKwlib29sCXR5cGJ5 dmFsOworCWJvb2wJaXNOdWxsOworCURhdHVtCXJlc3VsdDsKKworCWlmIChQR19BUkdJU05VTEwo MCkpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9OVUxMX1ZBTFVFX05P VF9BTExPV0VEKSwKKwkJCQkgZXJybXNnKCJudWxsIHZhbHVlIG5vdCBhbGxvd2VkIGZvciB2YXJp YWJsZSBpZGVudGl0eSIpKSk7CisKKwl2YXJpZCA9IFBHX0dFVEFSR19PSUQoMCk7CisKKwl0eXBp ZCA9IGdldF9mbl9leHByX2FyZ3R5cGUoZmNpbmZvLT5mbGluZm8sIDEpOworCWlmICh0eXBpZCA9 PSBJbnZhbGlkT2lkKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfSU5W QUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCSBlcnJtc2coImNvdWxkIG5vdCBkZXRlcm1pbmUg aW5wdXQgZGF0YSB0eXBlIikpKTsKKworCWdldF90eXBsZW5ieXZhbCh0eXBpZCwgJnR5cGxlbiwg JnR5cGJ5dmFsKTsKKwlyZXN1bHQgPSBHZXRTY2hlbWFWYXJpYWJsZVNlY3VyZSh2YXJpZCwgJmlz TnVsbCwgdHlwaWQsIC0xLCB0eXBsZW4sIHR5cGJ5dmFsKTsKKworCWlmIChpc051bGwpCisJCVBH X1JFVFVSTl9OVUxMKCk7CisJZWxzZQorCQlQR19SRVRVUk5fREFUVU0ocmVzdWx0KTsKK30KKwor LyoKKyAqIFJlc3VsdHM6CisgKj0KKyAKKzEuIFRoZSBzY2hlbWEgdmFyaWFibGVzIGFyZSBzaW1p bGFyIHRvIHRlbXBvcmFyeSB0YWJsZXMgLSBidXQgdGhlIGRhdGEgYXJlIG5vdCBzYXZlZAorICAg aW4gOEtCIGJsb2Nrcywgc28gbmV3IHN0b3JhZ2UgZm9yIFBnIHN0b3JhZ2UgbWFuYWdlciBzaG91 bGQgYmUgY3JlYXRlZC4KKworMi4gV2Ugc2hvdWxkIHRvIHdvcmsgd2l0aCB0eXBtb2QsIHNvIHBn X2F0dHJpYnV0ZSBlbnRyeSBzaG91bGQgYmUgY3JlYXRlZCBhbnl0aW1lLgorCiszLiBBIHJpc2sg b2YgY29sbGlzaW9ucyBvZiB2YXJpYWJsZSBhbmQgdGFibGUgbmFtZSB3aWxsIGJlIHJlZHVjZWQs IHdoZW4gdmFyaWFibGVzCisgICBhbmQgdGFibGVzIGNhbm5vdCB0byBoYXZlIHNhbWUgbmFtZS4K KworNC4gSWYgc2NoZW1hIHZhcmlhYmxlcyBhcmUgcGdfY2xhc3MgYmFzZWQsIHRoZW4gc29tZSBj dXJyZW50IHN5bnRheCBoYXMgc2Vuc2UKKworICAgIElOU0VSVCBJTlRPIHNjaGVtYS52YXJpYWJs ZSBTRUxFQ1QgeHh4CisgICAgbWF5YmUgKGJ1dCBpdCBpcyBub3QgY29uc2lzdGVudCB3aXRoIFBv c3RncmVTUUwgU1FMLCBidXQgY29uc2lzdGVudCB3aXRoIFBMcGdTUUwpOgorICAgIFNFTEVDVCAq IElOVE8gc2NoZW1hLnZhcmlhYmxlIEZST00geHh4CisKKzUuIExFVCBjbWQgY2FuIGJlIGltcGxl bWVudGVkIGFzIENNRCAobGlrZSBJTlNFUlQsIFVQREFURSwgREVMRVRFKSBvciBVdGlsaXR5IChs aWtlCisgICBDcmVhdGVUYWJsZUFzU2VsZWN0KS4gUHJlZmVyIGZpcnN0IG9wdGlvbiwgYmVjYXVz ZSB0aGVyZSBjYW4gYmUgcHJlcGFyZWQsIGNhbiBiZQorICAgdXNlZCB0b2dldGhlciB3aXRoIEVY UExBSU4sIGV0Yy4KKworICAgRXhwZWN0ZWQgZm9ybToKKyAgICAgTEVUIGZvbyA9IChTRUxFQ1Qg aWQgRlJPTSBib28gV0hFUkUgc29tZSA9ICdoZWxsbycpOworCisgICBzbyBwb3NzaWJpbGl0eSB0 byBydW4gRVhQTEFJTiBMRVQgLi4gaGFzIGVub3VnaCBiZW5lZml0CisqLwpcIE5vIG5ld2xpbmUg YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHBy LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwci5jCmluZGV4IGM2ZWIzZWJhY2YuLjUz ZWE4OTA1MTcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHByLmMKKysr IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHIuYwpAQCAtMzMsNiArMzMsNyBAQAogI2lu Y2x1ZGUgImFjY2Vzcy9uYnRyZWUuaCIKICNpbmNsdWRlICJjYXRhbG9nL29iamVjdGFjY2Vzcy5o IgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3NjaGVt YXZhci5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWNFeHByLmgiCiAjaW5jbHVkZSAiZXhlY3V0 b3Ivbm9kZVN1YnBsYW4uaCIKICNpbmNsdWRlICJmdW5jYXBpLmgiCkBAIC03MjMsNiArNzI0LDcg QEAgRXhlY0luaXRFeHByUmVjKEV4cHIgKm5vZGUsIEV4cHJTdGF0ZSAqc3RhdGUsCiAJCQl7CiAJ CQkJUGFyYW0JICAgKnBhcmFtID0gKFBhcmFtICopIG5vZGU7CiAJCQkJUGFyYW1MaXN0SW5mbyBw YXJhbXM7CisJCQkJQWNsUmVzdWx0CWFjbHJlc3VsdDsKIAogCQkJCXN3aXRjaCAocGFyYW0tPnBh cmFta2luZCkKIAkJCQl7CkBAIC03MzAsNiArNzMyLDIzIEBAIEV4ZWNJbml0RXhwclJlYyhFeHBy ICpub2RlLCBFeHByU3RhdGUgKnN0YXRlLAogCQkJCQkJc2NyYXRjaC5vcGNvZGUgPSBFRU9QX1BB UkFNX0VYRUM7CiAJCQkJCQlzY3JhdGNoLmQucGFyYW0ucGFyYW1pZCA9IHBhcmFtLT5wYXJhbWlk OwogCQkJCQkJc2NyYXRjaC5kLnBhcmFtLnBhcmFtdHlwZSA9IHBhcmFtLT5wYXJhbXR5cGU7CisJ CQkJCQlFeHByRXZhbFB1c2hTdGVwKHN0YXRlLCAmc2NyYXRjaCk7CisJCQkJCQlicmVhazsKKwkJ CQkJY2FzZSBQQVJBTV9TQ0hFTUFfVkFSSUFCTEU6CisJCQkJCQkvKiBDaGVjayBwZXJtaXNzaW9u IHRvIHJlYWQgc2NoZW1hIHZhcmlhYmxlICovCisJCQkJCQlhY2xyZXN1bHQgPSBwZ19jbGFzc19h Y2xjaGVjayhwYXJhbS0+cGFyYW1pZCwgR2V0VXNlcklkKCksIEFDTF9TRUxFQ1QpOworCQkJCQkJ aWYgKGFjbHJlc3VsdCAhPSBBQ0xDSEVDS19PSykKKwkJCQkJCQlhY2xjaGVja19lcnJvcihhY2xy ZXN1bHQsIE9CSkVDVF9WQVJJQUJMRSwgZ2V0X3NjaGVtYXZhcl9uYW1lKHBhcmFtLT5wYXJhbWlk KSk7CisKKwkJCQkJCXNjcmF0Y2gub3Bjb2RlID0gRUVPUF9QQVJBTV9TQ0hFTUFfVkFSSUFCTEU7 CisJCQkJCQlzY3JhdGNoLmQucGFyYW0ucGFyYW1pZCA9IHBhcmFtLT5wYXJhbWlkOworCQkJCQkJ c2NyYXRjaC5kLnBhcmFtLnBhcmFtdHlwZSA9IHBhcmFtLT5wYXJhbXR5cGU7CisJCQkJCQlzY3Jh dGNoLmQucGFyYW0ucGFyYW10eXBtb2QgPSBwYXJhbS0+cGFyYW10eXBtb2Q7CisKKwkJCQkJCWdl dF90eXBsZW5ieXZhbChwYXJhbS0+cGFyYW10eXBlLAorCQkJCQkJCQkJCQkJJnNjcmF0Y2guZC5w YXJhbS5wYXJhbXR5cGxlbiwKKwkJCQkJCQkJCQkJCSZzY3JhdGNoLmQucGFyYW0ucGFyYW10eXBi eXZhbCk7CisKIAkJCQkJCUV4cHJFdmFsUHVzaFN0ZXAoc3RhdGUsICZzY3JhdGNoKTsKIAkJCQkJ CWJyZWFrOwogCQkJCQljYXNlIFBBUkFNX0VYVEVSTjoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNFeHBySW50ZXJwLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhw ckludGVycC5jCmluZGV4IGY2NDZmZDljNTEuLjdhM2IyODMwMzkgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHBySW50ZXJwLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY0V4cHJJbnRlcnAuYwpAQCAtNTksNiArNTksNyBAQAogI2luY2x1ZGUgImFjY2Vzcy90 dXB0b2FzdGVyLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190eXBlLmgiCiAjaW5jbHVkZSAiY29t bWFuZHMvc2VxdWVuY2UuaCIKKyNpbmNsdWRlICJjb21tYW5kcy9zY2hlbWF2YXIuaCIKICNpbmNs dWRlICJleGVjdXRvci9leGVjRXhwci5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL25vZGVTdWJwbGFu LmgiCiAjaW5jbHVkZSAiZnVuY2FwaS5oIgpAQCAtMzUwLDYgKzM1MSw3IEBAIEV4ZWNJbnRlcnBF eHByKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJDb250ZXh0ICplY29udGV4dCwgYm9vbCAqaXNudWxs KQogCQkmJkNBU0VfRUVPUF9QQVJBTV9FWEVDLAogCQkmJkNBU0VfRUVPUF9QQVJBTV9FWFRFUk4s CiAJCSYmQ0FTRV9FRU9QX1BBUkFNX0NBTExCQUNLLAorCQkmJkNBU0VfRUVPUF9QQVJBTV9TQ0hF TUFfVkFSSUFCTEUsCiAJCSYmQ0FTRV9FRU9QX0NBU0VfVEVTVFZBTCwKIAkJJiZDQVNFX0VFT1Bf TUFLRV9SRUFET05MWSwKIAkJJiZDQVNFX0VFT1BfSU9DT0VSQ0UsCkBAIC0xMDMxLDYgKzEwMzMs MjMgQEAgRXhlY0ludGVycEV4cHIoRXhwclN0YXRlICpzdGF0ZSwgRXhwckNvbnRleHQgKmVjb250 ZXh0LCBib29sICppc251bGwpCiAJCQlFRU9fTkVYVCgpOwogCQl9CiAKKwkJRUVPX0NBU0UoRUVP UF9QQVJBTV9TQ0hFTUFfVkFSSUFCTEUpCisJCXsKKwkJCURhdHVtCWQ7CisJCQlib29sCWlzbnVs bDsKKworCQkJZCA9IEdldFNjaGVtYVZhcmlhYmxlKG9wLT5kLnBhcmFtLnBhcmFtaWQsICZpc251 bGwsCisJCQkJCQkJCQkJCQkJICBvcC0+ZC5wYXJhbS5wYXJhbXR5cGUsCisJCQkJCQkJCQkJCQkJ ICAtMSwKKwkJCQkJCQkJCQkJCQkgIG9wLT5kLnBhcmFtLnBhcmFtdHlwbGVuLAorCQkJCQkJCQkJ CQkJCSAgb3AtPmQucGFyYW0ucGFyYW10eXBieXZhbCk7CisKKwkJCSpvcC0+cmVzdmFsdWUgPSBk OworCQkJKm9wLT5yZXNudWxsID0gaXNudWxsOworCisJCQlFRU9fTkVYVCgpOworCQl9CisKIAkJ RUVPX0NBU0UoRUVPUF9QQVJBTV9DQUxMQkFDSykKIAkJewogCQkJLyogYWxsb3cgYW4gZXh0ZW5z aW9uIG1vZHVsZSB0byBzdXBwbHkgYSBQQVJBTV9FWFRFUk4gdmFsdWUgKi8KZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9l eGVjTWFpbi5jCmluZGV4IDQxMDkyMWNjNDAuLmExYWU3MzJhZTUgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhl Y01haW4uYwpAQCAtMjEwLDYgKzIxMCw3IEBAIHN0YW5kYXJkX0V4ZWN1dG9yU3RhcnQoUXVlcnlE ZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAJc3dpdGNoIChxdWVyeURlc2MtPm9wZXJhdGlv bikKIAl7CiAJCWNhc2UgQ01EX1NFTEVDVDoKKwkJY2FzZSBDTURfTEVUOgogCiAJCQkvKgogCQkJ ICogU0VMRUNUIEZPUiBbS0VZXSBVUERBVEUvU0hBUkUgYW5kIG1vZGlmeWluZyBDVEVzIG5lZWQg dG8gbWFyawpAQCAtMTExOSw2ICsxMTIwLDM2IEBAIENoZWNrVmFsaWRSZXN1bHRSZWwoUmVzdWx0 UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywgQ21kVHlwZSBvcGVyYXRpb24pCiAJCQkJCSBlcnJtc2co ImNhbm5vdCBjaGFuZ2UgVE9BU1QgcmVsYXRpb24gXCIlc1wiIiwKIAkJCQkJCQlSZWxhdGlvbkdl dFJlbGF0aW9uTmFtZShyZXN1bHRSZWwpKSkpOwogCQkJYnJlYWs7CisJCWNhc2UgUkVMS0lORF9W QVJJQUJMRToKKworCQkJLyogT25seSBMRVQgc3RhdGVtZW50IGlzIGFsbG93ZWQgKi8KKwkJCWlm IChvcGVyYXRpb24gIT0gQ01EX0xFVCkKKwkJCXsKKwkJCQlzd2l0Y2ggKG9wZXJhdGlvbikKKwkJ CQl7CisJCQkJCWNhc2UgQ01EX0lOU0VSVDoKKwkJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJ KGVycmNvZGUoRVJSQ09ERV9XUk9OR19PQkpFQ1RfVFlQRSksCisJCQkJCQkJIGVycm1zZygiY2Fu bm90IGluc2VydCBpbnRvIHZhcmlhYmxlIFwiJXNcIiIsCisJCQkJCQkJCQlSZWxhdGlvbkdldFJl bGF0aW9uTmFtZShyZXN1bHRSZWwpKSkpOworCQkJCQkJYnJlYWs7CisJCQkJCWNhc2UgQ01EX1VQ REFURToKKwkJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9XUk9O R19PQkpFQ1RfVFlQRSksCisJCQkJCQkJIGVycm1zZygiY2Fubm90IHVwZGF0ZSB2YXJpYWJsZSBc IiVzXCIiLAorCQkJCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVzdWx0UmVsKSkpKTsK KwkJCQkJCWJyZWFrOworCQkJCQljYXNlIENNRF9ERUxFVEU6CisJCQkJCQllcmVwb3J0KEVSUk9S LAorCQkJCQkJCShlcnJjb2RlKEVSUkNPREVfV1JPTkdfT0JKRUNUX1RZUEUpLAorCQkJCQkJCSBl cnJtc2coImNhbm5vdCBkZWxldGUgZnJvbSB2YXJpYWJsZSBcIiVzXCIiLAorCQkJCQkJCQkJUmVs YXRpb25HZXRSZWxhdGlvbk5hbWUocmVzdWx0UmVsKSkpKTsKKwkJCQkJZGVmYXVsdDoKKwkJCQkJ CWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgQ21kVHlwZTogJWQiLCAoaW50KSBvcGVyYXRpb24p OworCQkJCQkJYnJlYWs7CisJCQkJfQorCQkJfQorCQkJYnJlYWs7CiAJCWNhc2UgUkVMS0lORF9W SUVXOgogCiAJCQkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlm eVRhYmxlLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYwppbmRleCAy YThlY2JkODMwLi5mOGU0NzhhYTQyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlTW9kaWZ5VGFibGUuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFi bGUuYwpAQCAtMzksNiArMzksNyBAQAogCiAjaW5jbHVkZSAiYWNjZXNzL2h0dXBfZGV0YWlscy5o IgogI2luY2x1ZGUgImFjY2Vzcy94YWN0LmgiCisjaW5jbHVkZSAiY29tbWFuZHMvc2NoZW1hdmFy LmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvdHJpZ2dlci5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4 ZWNQYXJ0aXRpb24uaCIKICNpbmNsdWRlICJleGVjdXRvci9leGVjdXRvci5oIgpAQCAtNjgsNiAr NjksNyBAQCBzdGF0aWMgdm9pZCBFeGVjU2V0dXBDaGlsZFBhcmVudE1hcEZvclN1YnBsYW4oTW9k aWZ5VGFibGVTdGF0ZSAqbXRzdGF0ZSk7CiBzdGF0aWMgVHVwbGVDb252ZXJzaW9uTWFwICp0dXBj b252X21hcF9mb3Jfc3VicGxhbihNb2RpZnlUYWJsZVN0YXRlICpub2RlLAogCQkJCQkJaW50IHdo aWNocGxhbik7CiAKKwogLyoKICAqIFZlcmlmeSB0aGF0IHRoZSB0dXBsZXMgdG8gYmUgcHJvZHVj ZWQgYnkgSU5TRVJUIG9yIFVQREFURSBtYXRjaCB0aGUKICAqIHRhcmdldCByZWxhdGlvbidzIHJv d3R5cGUKQEAgLTE1NjgsNiArMTU3MCw4MSBAQCBFeGVjT25Db25mbGljdFVwZGF0ZShNb2RpZnlU YWJsZVN0YXRlICptdHN0YXRlLAogfQogCiAKKworCisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCQlFeGVjTGV0 CisgKgorICoJCUZvciBMRVQsIHdlIGhhdmUgdG8gdXBkYXRlIHRhcmdldCB2YXJpYWJsZSwKKyAq ICAgICAgUmV0dXJucyBOVUxMLCB0aGVyZSBhcmUgbm90IFJFVFVSTklORyBjbGF1c2UuCisgKiAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgKi8KK3N0YXRpYyBUdXBsZVRhYmxlU2xvdCAqCitFeGVjTGV0KE1vZGlmeVRhYmxl U3RhdGUgKm10c3RhdGUsCisJCSAgIFR1cGxlVGFibGVTbG90ICpzbG90LAorCQkgICBFU3RhdGUg KmVzdGF0ZSwKKwkJICAgYm9vbCBjYW5TZXRUYWcpCit7CisJSGVhcFR1cGxlCXR1cGxlOworCVJl c3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm87CisJUmVsYXRpb24JcmVzdWx0UmVsYXRpb25EZXNj OworCVR1cGxlRGVzYwl0dXBkZXNjOworCWJvb2wJCWlzbnVsbCA9IHRydWU7CisJRGF0dW0JCXZh bHVlOworCUZvcm1fcGdfYXR0cmlidXRlIGF0dHIgPSBOVUxMOworCU9pZAkJCXZhcmlkOworCisJ aWYgKHNsb3QgIT0gTlVMTCAmJiAhc2xvdC0+dHRzX2lzZW1wdHkpCisJeworCQl0dXBsZSA9IHNs b3QtPnR0c190dXBsZTsKKwkJdHVwZGVzYyA9IHNsb3QtPnR0c190dXBsZURlc2NyaXB0b3I7CisK KwkJQXNzZXJ0KHR1cGRlc2MgIT0gTlVMTCk7CisKKwkJLyogc2hvdWxkIGJlIGNoZWNrZWQgYmVm b3JlICovCisJCWlmICh0dXBkZXNjLT5uYXR0cyAhPSAxKQorCQkJZWxvZyhFUlJPUiwgInVuZXhw ZWN0ZWQgbnVtYmVyIG9mIGF0dHJpYnV0ZXMiKTsKKworCQlhdHRyID0gVHVwbGVEZXNjQXR0cih0 dXBkZXNjLCAwKTsKKworCQlpZiAoIXNsb3QtPnR0c19pc251bGxbMF0pCisJCXsKKwkJCWlzbnVs bCA9IGZhbHNlOworCQkJdmFsdWUgPSBzbG90LT50dHNfdmFsdWVzWzBdOworCQl9CisJfQorCisJ LyoKKwkgKiBOb3csIGVzX3Jlc3VsdF9yZWxhdGlvbl9pbmZvIGlzIGVtcHR5LCBidXQgY2FuIGJl IGluaXRpYWxpemVkCisJICogdG8gc3RydWN0dXJlIG9mIHVzZWQgc2NoZW1hIHZhcmlhYmxlLgor CSAqLworCXJlc3VsdFJlbEluZm8gPSBlc3RhdGUtPmVzX3Jlc3VsdF9yZWxhdGlvbl9pbmZvOwor CXJlc3VsdFJlbGF0aW9uRGVzYyA9IHJlc3VsdFJlbEluZm8tPnJpX1JlbGF0aW9uRGVzYzsKKwl2 YXJpZCA9IHJlc3VsdFJlbGF0aW9uRGVzYy0+cmRfaWQ7CisKKwlpZiAoIWlzbnVsbCkKKwl7CisJ CS8qIGV4cGVjdGluZyBzbyB2YXJpYWJsZSBhbmQgZXhwcmVzc2lvbiBhcmUgZXF1YWwgKi8KKwkJ U2V0U2NoZW1hVmFyaWFibGUodmFyaWQsIHZhbHVlLCBpc251bGwsCisJCQkJCQkJCWF0dHItPmF0 dHR5cGlkLCAtMSwKKwkJCQkJCQkJYXR0ci0+YXR0bGVuLCBhdHRyLT5hdHRieXZhbCk7CisJfQor CWVsc2UKKwl7CisJCVNldFNjaGVtYVZhcmlhYmxlKHZhcmlkLCAoRGF0dW0pIDAsIHRydWUsCisJ CQkJCQkJCSAgSW52YWxpZE9pZCwgLTEsIC0xLCBmYWxzZSk7CisJfQorCisJaWYgKGNhblNldFRh ZykKKwl7CisJCUFzc2VydChlc3RhdGUtPmVzX3Byb2Nlc3NlZCA9PSAwKTsKKwkJKGVzdGF0ZS0+ ZXNfcHJvY2Vzc2VkKSsrOworCX0KKworCXJldHVybiBOVUxMOworfQorCiAvKgogICogUHJvY2Vz cyBCRUZPUkUgRUFDSCBTVEFURU1FTlQgdHJpZ2dlcnMKICAqLwpAQCAtMTU5OCw2ICsxNjc1LDkg QEAgZmlyZUJTVHJpZ2dlcnMoTW9kaWZ5VGFibGVTdGF0ZSAqbm9kZSkKIAkJY2FzZSBDTURfREVM RVRFOgogCQkJRXhlY0JTRGVsZXRlVHJpZ2dlcnMobm9kZS0+cHMuc3RhdGUsIHJlc3VsdFJlbElu Zm8pOwogCQkJYnJlYWs7CisJCWNhc2UgQ01EX0xFVDoKKwkJCS8qIHRoZXJlIGFyZSBubyB0cmln Z2VyICovCisJCQlicmVhazsKIAkJZGVmYXVsdDoKIAkJCWVsb2coRVJST1IsICJ1bmtub3duIG9w ZXJhdGlvbiIpOwogCQkJYnJlYWs7CkBAIC0xNjUyLDYgKzE3MzIsOSBAQCBmaXJlQVNUcmlnZ2Vy cyhNb2RpZnlUYWJsZVN0YXRlICpub2RlKQogCQkJRXhlY0FTRGVsZXRlVHJpZ2dlcnMobm9kZS0+ cHMuc3RhdGUsIHJlc3VsdFJlbEluZm8sCiAJCQkJCQkJCSBub2RlLT5tdF90cmFuc2l0aW9uX2Nh cHR1cmUpOwogCQkJYnJlYWs7CisJCWNhc2UgQ01EX0xFVDoKKwkJCS8qIHZhcmlhYmxlcyBoYXMg bm90IHRyaWdnZXJzICovCisJCQlicmVhazsKIAkJZGVmYXVsdDoKIAkJCWVsb2coRVJST1IsICJ1 bmtub3duIG9wZXJhdGlvbiIpOwogCQkJYnJlYWs7CkBAIC0yMDU2LDYgKzIxMzksOSBAQCBFeGVj TW9kaWZ5VGFibGUoUGxhblN0YXRlICpwc3RhdGUpCiAJCQkJCQkJCSAgJm5vZGUtPm10X2VwcXN0 YXRlLCBlc3RhdGUsCiAJCQkJCQkJCSAgTlVMTCwgdHJ1ZSwgbm9kZS0+Y2FuU2V0VGFnKTsKIAkJ CQlicmVhazsKKwkJCWNhc2UgQ01EX0xFVDoKKwkJCQlzbG90ID0gRXhlY0xldChub2RlLCBzbG90 LCBlc3RhdGUsIG5vZGUtPmNhblNldFRhZyk7CisJCQkJYnJlYWs7CiAJCQlkZWZhdWx0OgogCQkJ CWVsb2coRVJST1IsICJ1bmtub3duIG9wZXJhdGlvbiIpOwogCQkJCWJyZWFrOwpAQCAtMjU2Miw2 ICsyNjQ4LDcgQEAgRXhlY0luaXRNb2RpZnlUYWJsZShNb2RpZnlUYWJsZSAqbm9kZSwgRVN0YXRl ICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCQkJYnJlYWs7CiAJCQljYXNlIENNRF9VUERBVEU6CiAJ CQljYXNlIENNRF9ERUxFVEU6CisJCQljYXNlIENNRF9MRVQ6CiAJCQkJanVua19maWx0ZXJfbmVl ZGVkID0gdHJ1ZTsKIAkJCQlicmVhazsKIAkJCWRlZmF1bHQ6CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9leGVjdXRvci9zcGkuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL3NwaS5jCmluZGV4IDlm YzQ0MzFiODAuLjMxMGJjM2YyYzcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL3Nw aS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL3NwaS5jCkBAIC0yNDA0LDYgKzI0MDQsOSBA QCBfU1BJX3BxdWVyeShRdWVyeURlc2MgKnF1ZXJ5RGVzYywgYm9vbCBmaXJlX3RyaWdnZXJzLCB1 aW50NjQgdGNvdW50KQogCQkJZWxzZQogCQkJCXJlcyA9IFNQSV9PS19VUERBVEU7CiAJCQlicmVh azsKKwkJY2FzZSBDTURfTEVUOgorCQkJcmVzID0gU1BJX09LX1VUSUxJVFk7CisJCQlicmVhazsK IAkJZGVmYXVsdDoKIAkJCXJldHVybiBTUElfRVJST1JfT1BVTktOT1dOOwogCX0KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL25vZGVzL2NvcHlmdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvY29w eWZ1bmNzLmMKaW5kZXggZmQzMDAxYzQ5My4uNmQ1N2UwMTE3OSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvbm9kZXMvY29weWZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvY29weWZ1bmNz LmMKQEAgLTMwNTUsNiArMzA1NSwxNyBAQCBfY29weVNlbGVjdFN0bXQoY29uc3QgU2VsZWN0U3Rt dCAqZnJvbSkKIAlyZXR1cm4gbmV3bm9kZTsKIH0KIAorc3RhdGljIExldFN0bXQgKgorX2NvcHlM ZXRTdG10KGNvbnN0IExldFN0bXQgKmZyb20pCit7CisJTGV0U3RtdCAqbmV3bm9kZSA9IG1ha2VO b2RlKExldFN0bXQpOworCisJQ09QWV9OT0RFX0ZJRUxEKHZhcmlhYmxlKTsKKwlDT1BZX05PREVf RklFTEQoc2VsZWN0U3RtdCk7CisKKwlyZXR1cm4gbmV3bm9kZTsKK30KKwogc3RhdGljIFNldE9w ZXJhdGlvblN0bXQgKgogX2NvcHlTZXRPcGVyYXRpb25TdG10KGNvbnN0IFNldE9wZXJhdGlvblN0 bXQgKmZyb20pCiB7CkBAIC01MDkwLDYgKzUxMDEsOSBAQCBjb3B5T2JqZWN0SW1wbChjb25zdCB2 b2lkICpmcm9tKQogCQljYXNlIFRfU2VsZWN0U3RtdDoKIAkJCXJldHZhbCA9IF9jb3B5U2VsZWN0 U3RtdChmcm9tKTsKIAkJCWJyZWFrOworCQljYXNlIFRfTGV0U3RtdDoKKwkJCXJldHZhbCA9IF9j b3B5TGV0U3RtdChmcm9tKTsKKwkJCWJyZWFrOwogCQljYXNlIFRfU2V0T3BlcmF0aW9uU3RtdDoK IAkJCXJldHZhbCA9IF9jb3B5U2V0T3BlcmF0aW9uU3RtdChmcm9tKTsKIAkJCWJyZWFrOwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMvZXF1YWxmdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9k ZXMvZXF1YWxmdW5jcy5jCmluZGV4IDdkMmFhMWEyZDMuLjkyOGNmNjMwOTIgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL25vZGVzL2VxdWFsZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9l cXVhbGZ1bmNzLmMKQEAgLTEwNjcsNiArMTA2NywxNSBAQCBfZXF1YWxTZWxlY3RTdG10KGNvbnN0 IFNlbGVjdFN0bXQgKmEsIGNvbnN0IFNlbGVjdFN0bXQgKmIpCiAJcmV0dXJuIHRydWU7CiB9CiAK K3N0YXRpYyBib29sCitfZXF1YWxMZXRTdG10KGNvbnN0IExldFN0bXQgKmEsIGNvbnN0IExldFN0 bXQgKmIpCit7CisJQ09NUEFSRV9OT0RFX0ZJRUxEKHZhcmlhYmxlKTsKKwlDT01QQVJFX05PREVf RklFTEQoc2VsZWN0U3RtdCk7CisKKwlyZXR1cm4gdHJ1ZTsKK30KKwogc3RhdGljIGJvb2wKIF9l cXVhbFNldE9wZXJhdGlvblN0bXQoY29uc3QgU2V0T3BlcmF0aW9uU3RtdCAqYSwgY29uc3QgU2V0 T3BlcmF0aW9uU3RtdCAqYikKIHsKQEAgLTMyMjcsNiArMzIzNiw5IEBAIGVxdWFsKGNvbnN0IHZv aWQgKmEsIGNvbnN0IHZvaWQgKmIpCiAJCWNhc2UgVF9TZWxlY3RTdG10OgogCQkJcmV0dmFsID0g X2VxdWFsU2VsZWN0U3RtdChhLCBiKTsKIAkJCWJyZWFrOworCQljYXNlIFRfTGV0U3RtdDoKKwkJ CXJldHZhbCA9IF9lcXVhbExldFN0bXQoYSwgYik7CisJCQlicmVhazsKIAkJY2FzZSBUX1NldE9w ZXJhdGlvblN0bXQ6CiAJCQlyZXR2YWwgPSBfZXF1YWxTZXRPcGVyYXRpb25TdG10KGEsIGIpOwog CQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3MuYyBiL3Ny Yy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5jCmluZGV4IDZjNzZjNDFlYmUuLjhkMjQ4MThjOWYg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5jCisrKyBiL3NyYy9iYWNr ZW5kL25vZGVzL25vZGVGdW5jcy5jCkBAIC0zNDQ0LDYgKzM0NDQsMTYgQEAgcmF3X2V4cHJlc3Np b25fdHJlZV93YWxrZXIoTm9kZSAqbm9kZSwKIAkJCQkJcmV0dXJuIHRydWU7CiAJCQl9CiAJCQli cmVhazsKKwkJY2FzZSBUX0xldFN0bXQ6CisJCQl7CisJCQkJTGV0U3RtdCAqc3RtdCA9IChMZXRT dG10ICopIG5vZGU7CisKKwkJCQlpZiAod2Fsa2VyKHN0bXQtPnZhcmlhYmxlLCBjb250ZXh0KSkK KwkJCQkJcmV0dXJuIHRydWU7CisJCQkJaWYgKHdhbGtlcihzdG10LT5zZWxlY3RTdG10LCBjb250 ZXh0KSkKKwkJCQkJcmV0dXJuIHRydWU7CisJCQl9CisJCQlicmVhazsKIAkJY2FzZSBUX0FfRXhw cjoKIAkJCXsKIAkJCQlBX0V4cHIJICAgKmV4cHIgPSAoQV9FeHByICopIG5vZGU7CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9jbGF1c2VzLmMgYi9zcmMvYmFja2VuZC9v cHRpbWl6ZXIvdXRpbC9jbGF1c2VzLmMKaW5kZXggODlmMjdjZTBlYi4uZjRkODc1NjQ4NyAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvY2xhdXNlcy5jCisrKyBiL3NyYy9i YWNrZW5kL29wdGltaXplci91dGlsL2NsYXVzZXMuYwpAQCAtMTI1MSwxMiArMTI1MSwxNSBAQCBt YXhfcGFyYWxsZWxfaGF6YXJkX3dhbGtlcihOb2RlICpub2RlLCBtYXhfcGFyYWxsZWxfaGF6YXJk X2NvbnRleHQgKmNvbnRleHQpCiAJICogUEFSQU1fRVhFQyBQYXJhbXMgbGlzdGVkIGluIHNhZmVf cGFyYW1faWRzLCBtZWFuaW5nIHRoZXkgY291bGQgYmUKIAkgKiBlaXRoZXIgZ2VuZXJhdGVkIHdp dGhpbiB0aGUgd29ya2VyIG9yIGNhbiBiZSBjb21wdXRlZCBpbiBtYXN0ZXIgYW5kCiAJICogdGhl biB0aGVpciB2YWx1ZSBjYW4gYmUgcGFzc2VkIHRvIHRoZSB3b3JrZXIuCisJICogUEFSQU1fU0NI RU1BX1ZBUklBQkxFIHBhcmFtcyBhcmUgbmV3ZXIgY2hhbmdlZCBieSB3b3JrZXJzLCBzbyB0aGV5 IGNhbiBiZQorCSAqIHNhZmUuCiAJICovCiAJZWxzZSBpZiAoSXNBKG5vZGUsIFBhcmFtKSkKIAl7 CiAJCVBhcmFtCSAgICpwYXJhbSA9IChQYXJhbSAqKSBub2RlOwogCi0JCWlmIChwYXJhbS0+cGFy YW1raW5kID09IFBBUkFNX0VYVEVSTikKKwkJaWYgKHBhcmFtLT5wYXJhbWtpbmQgPT0gUEFSQU1f RVhURVJOIHx8CisJCQlwYXJhbS0+cGFyYW1raW5kID09IFBBUkFNX1NDSEVNQV9WQVJJQUJMRSkK IAkJCXJldHVybiBmYWxzZTsKIAogCQlpZiAocGFyYW0tPnBhcmFta2luZCAhPSBQQVJBTV9FWEVD IHx8CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvYW5hbHl6ZS5jIGIvc3JjL2JhY2tl bmQvcGFyc2VyL2FuYWx5emUuYwppbmRleCBlN2IyYmM3ZTczLi5mMjJlYWI0MjJlIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvYW5hbHl6ZS5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNl ci9hbmFseXplLmMKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfdGFy Z2V0LmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNldHJlZS5oIgogI2luY2x1ZGUgInJld3JpdGUv cmV3cml0ZU1hbmlwLmgiCisjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1 dGlscy9yZWwuaCIKIAogCkBAIC01NCw2ICs1NSw3IEBAIHN0YXRpYyBRdWVyeSAqdHJhbnNmb3Jt SW5zZXJ0U3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIEluc2VydFN0bXQgKnN0bXQpOwogc3RhdGlj IExpc3QgKnRyYW5zZm9ybUluc2VydFJvdyhQYXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKmV4cHJs aXN0LAogCQkJCSAgIExpc3QgKnN0bXRjb2xzLCBMaXN0ICppY29sdW1ucywgTGlzdCAqYXR0cm5v cywKIAkJCQkgICBib29sIHN0cmlwX2luZGlyZWN0aW9uKTsKK3N0YXRpYyBRdWVyeSAqdHJhbnNm b3JtTGV0U3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIExldFN0bXQgKnN0bXQpOwogc3RhdGljIE9u Q29uZmxpY3RFeHByICp0cmFuc2Zvcm1PbkNvbmZsaWN0Q2xhdXNlKFBhcnNlU3RhdGUgKnBzdGF0 ZSwKIAkJCQkJCSAgT25Db25mbGljdENsYXVzZSAqb25Db25mbGljdENsYXVzZSk7CiBzdGF0aWMg aW50CWNvdW50X3Jvd2V4cHJfY29sdW1ucyhQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKmV4cHIp OwpAQCAtMjYzLDYgKzI2NSw3IEBAIHRyYW5zZm9ybVN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBO b2RlICpwYXJzZVRyZWUpCiAJCWNhc2UgVF9JbnNlcnRTdG10OgogCQljYXNlIFRfVXBkYXRlU3Rt dDoKIAkJY2FzZSBUX0RlbGV0ZVN0bXQ6CisJCWNhc2UgVF9MZXRTdG10OgogCQkJKHZvaWQpIHRl c3RfcmF3X2V4cHJlc3Npb25fY292ZXJhZ2UocGFyc2VUcmVlLCBOVUxMKTsKIAkJCWJyZWFrOwog CQlkZWZhdWx0OgpAQCAtMzAwLDYgKzMwMywxMCBAQCB0cmFuc2Zvcm1TdG10KFBhcnNlU3RhdGUg KnBzdGF0ZSwgTm9kZSAqcGFyc2VUcmVlKQogCQkJfQogCQkJYnJlYWs7CiAKKwkJY2FzZSBUX0xl dFN0bXQ6CisJCQlyZXN1bHQgPSB0cmFuc2Zvcm1MZXRTdG10KHBzdGF0ZSwgKExldFN0bXQgKikg cGFyc2VUcmVlKTsKKwkJCWJyZWFrOworCiAJCQkvKgogCQkJICogU3BlY2lhbCBjYXNlcwogCQkJ ICovCkBAIC0zNTgsNiArMzY1LDcgQEAgYW5hbHl6ZV9yZXF1aXJlc19zbmFwc2hvdChSYXdTdG10 ICpwYXJzZVRyZWUpCiAJCWNhc2UgVF9EZWxldGVTdG10OgogCQljYXNlIFRfVXBkYXRlU3RtdDoK IAkJY2FzZSBUX1NlbGVjdFN0bXQ6CisJCWNhc2UgVF9MZXRTdG10OgogCQkJcmVzdWx0ID0gdHJ1 ZTsKIAkJCWJyZWFrOwogCkBAIC0xNTMyLDYgKzE1NDAsMjA3IEBAIHRyYW5zZm9ybVZhbHVlc0Ns YXVzZShQYXJzZVN0YXRlICpwc3RhdGUsIFNlbGVjdFN0bXQgKnN0bXQpCiAJcmV0dXJuIHFyeTsK IH0KIAorLyoKKyAqIHRyYW5zZm9ybUxldFN0bXQgLQorICoJICB0cmFuc2Zvcm0gYW4gTGV0IFN0 YXRlbWVudAorICovCitzdGF0aWMgUXVlcnkgKgordHJhbnNmb3JtTGV0U3RtdChQYXJzZVN0YXRl ICpwc3RhdGUsIExldFN0bXQgKnN0bXQpCit7CisJUXVlcnkJICAgKnFyeSA9IG1ha2VOb2RlKFF1 ZXJ5KTsKKwlMaXN0CSAgICpleHByTGlzdCA9IE5JTDsKKwlMaXN0CSAgICpleHByTGlzdENvZXIg PSBOSUw7CisJTGlzdAkgICAqc3ViX3J0YWJsZTsKKwlMaXN0CSAgICpzdWJfbmFtZXNwYWNlOwor CVJhbmdlVGJsRW50cnkgKnJ0ZTsKKwlSYW5nZVRibFJlZiAqcnRyOworCUxpc3RDZWxsICAgKmxj OworCUFjbE1vZGUJCXRhcmdldFBlcm1zOworCVBhcnNlU3RhdGUgKnN1Yl9wc3RhdGU7CisJUXVl cnkJICAgKnNlbGVjdFF1ZXJ5OworCWludAkJCWkgPSAwOworCisJUmVsYXRpb24JcmQ7CisJT2lk CQkJdmFydHlwaWQgPSBJbnZhbGlkT2lkOworCisJLyogVGhlcmUgY2FuJ3QgYmUgYW55IG91dGVy IFdJVEggdG8gd29ycnkgYWJvdXQgKi8KKwlBc3NlcnQocHN0YXRlLT5wX2N0ZW5hbWVzcGFjZSA9 PSBOSUwpOworCisJcXJ5LT5jb21tYW5kVHlwZSA9IENNRF9MRVQ7CisJcHN0YXRlLT5wX2lzX2xl dCA9IHRydWU7CisKKwkvKgorCSAqIElmIGEgbm9uLW5pbCByYW5nZXRhYmxlL25hbWVzcGFjZSB3 YXMgcGFzc2VkIGluLCBhbmQgd2UgYXJlIGRvaW5nCisJICogSU5TRVJUL1NFTEVDVCwgYXJyYW5n ZSB0byBwYXNzIHRoZSByYW5nZXRhYmxlL25hbWVzcGFjZSBkb3duIHRvIHRoZQorCSAqIFNFTEVD VC4gIFRoaXMgY2FuIG9ubHkgaGFwcGVuIGlmIHdlIGFyZSBpbnNpZGUgYSBDUkVBVEUgUlVMRSwg YW5kIGluCisJICogdGhhdCBjYXNlIHdlIHdhbnQgdGhlIHJ1bGUncyBPTEQgYW5kIE5FVyBydGFi bGUgZW50cmllcyB0byBhcHBlYXIgYXMKKwkgKiBwYXJ0IG9mIHRoZSBTRUxFQ1QncyBydGFibGUs IG5vdCBhcyBvdXRlciByZWZlcmVuY2VzIGZvciBpdC4gIChLbHVnZSEpCisJICogVGhlIFNFTEVD VCdzIGpvaW5saXN0IGlzIG5vdCBhZmZlY3RlZCBob3dldmVyLiAgV2UgbXVzdCBkbyB0aGlzIGJl Zm9yZQorCSAqIGFkZGluZyB0aGUgdGFyZ2V0IHRhYmxlIHRvIHRoZSBJTlNFUlQncyBydGFibGUu CisJICovCisJc3ViX3J0YWJsZSA9IHBzdGF0ZS0+cF9ydGFibGU7CisJcHN0YXRlLT5wX3J0YWJs ZSA9IE5JTDsKKwlzdWJfbmFtZXNwYWNlID0gcHN0YXRlLT5wX25hbWVzcGFjZTsKKwlwc3RhdGUt PnBfbmFtZXNwYWNlID0gTklMOworCisJdGFyZ2V0UGVybXMgPSBBQ0xfVVBEQVRFOworCXFyeS0+ cmVzdWx0UmVsYXRpb24gPSBzZXRUYXJnZXRUYWJsZShwc3RhdGUsIHN0bXQtPnZhcmlhYmxlLAor CQkJCQkJCQkJCSBmYWxzZSwgZmFsc2UsIHRhcmdldFBlcm1zKTsKKworCXJkID0gcHN0YXRlLT5w X3RhcmdldF9yZWxhdGlvbjsKKwl2YXJ0eXBpZCA9IHJkLT5yZF9yZWwtPnJlbG9mdHlwZTsKKwor CS8qCisJICogV2UgbWFrZSB0aGUgc3ViLXBzdGF0ZSBhIGNoaWxkIG9mIHRoZSBvdXRlciBwc3Rh dGUgc28gdGhhdCBpdCBjYW4KKwkgKiBzZWUgYW55IFBhcmFtIGRlZmluaXRpb25zIHN1cHBsaWVk IGZyb20gYWJvdmUuICBTaW5jZSB0aGUgb3V0ZXIKKwkgKiBwc3RhdGUncyBydGFibGUgYW5kIG5h bWVzcGFjZSBhcmUgcHJlc2VudGx5IGVtcHR5LCB0aGVyZSBhcmUgbm8KKwkgKiBzaWRlLWVmZmVj dHMgb2YgZXhwb3NpbmcgbmFtZXMgdGhlIHN1Yi1TRUxFQ1Qgc2hvdWxkbid0IGJlIGFibGUgdG8K KwkgKiBzZWUuCisJICovCisJc3ViX3BzdGF0ZSA9IG1ha2VfcGFyc2VzdGF0ZShwc3RhdGUpOwor CisJLyoKKwkgKiBQcm9jZXNzIHRoZSBzb3VyY2UgU0VMRUNULgorCSAqCisJICogSXQgaXMgaW1w b3J0YW50IHRoYXQgdGhpcyBiZSBoYW5kbGVkIGp1c3QgbGlrZSBhIHN0YW5kYWxvbmUgU0VMRUNU OworCSAqIG90aGVyd2lzZSB0aGUgYmVoYXZpb3Igb2YgU0VMRUNUIHdpdGhpbiBJTlNFUlQgbWln aHQgYmUgZGlmZmVyZW50CisJICogZnJvbSBhIHN0YW5kLWFsb25lIFNFTEVDVC4gKEluZGVlZCwg UG9zdGdyZXMgdXAgdGhyb3VnaCA2LjUgaGFkCisJICogYnVncyBvZiBqdXN0IHRoYXQgbmF0dXJl Li4uKQorCSAqCisJICogVGhlIHNvbGUgZXhjZXB0aW9uIGlzIHRoYXQgd2UgcHJldmVudCByZXNv bHZpbmcgdW5rbm93bi10eXBlCisJICogb3V0cHV0cyBhcyBURVhULiAgVGhpcyBkb2VzIG5vdCBj aGFuZ2UgdGhlIHNlbWFudGljcyBzaW5jZSBpZiB0aGUKKwkgKiBjb2x1bW4gdHlwZSBtYXR0ZXJz IHNlbWFudGljYWxseSwgaXQgd291bGQgaGF2ZSBiZWVuIHJlc29sdmVkIHRvCisJICogc29tZXRo aW5nIGVsc2UgYW55d2F5LiAgRG9pbmcgdGhpcyBsZXRzIHVzIHJlc29sdmUgc3VjaCBvdXRwdXRz IGFzCisJICogdGhlIHRhcmdldCBjb2x1bW4ncyB0eXBlLCB3aGljaCB3ZSBoYW5kbGUgYmVsb3cu CisJICovCisJc3ViX3BzdGF0ZS0+cF9ydGFibGUgPSBzdWJfcnRhYmxlOworCXN1Yl9wc3RhdGUt PnBfam9pbmV4cHJzID0gTklMOwkvKiBzdWJfcnRhYmxlIGhhcyBubyBqb2lucyAqLworCXN1Yl9w c3RhdGUtPnBfbmFtZXNwYWNlID0gc3ViX25hbWVzcGFjZTsKKwlzdWJfcHN0YXRlLT5wX3Jlc29s dmVfdW5rbm93bnMgPSBmYWxzZTsKKworCXNlbGVjdFF1ZXJ5ID0gdHJhbnNmb3JtU3RtdChzdWJf cHN0YXRlLCBzdG10LT5zZWxlY3RTdG10KTsKKworCWZyZWVfcGFyc2VzdGF0ZShzdWJfcHN0YXRl KTsKKworCS8qIFRoZSBncmFtbWFyIHNob3VsZCBoYXZlIHByb2R1Y2VkIGEgU0VMRUNUICovCisJ aWYgKCFJc0Eoc2VsZWN0UXVlcnksIFF1ZXJ5KSB8fAorCQlzZWxlY3RRdWVyeS0+Y29tbWFuZFR5 cGUgIT0gQ01EX1NFTEVDVCkKKwkJZWxvZyhFUlJPUiwgInVuZXhwZWN0ZWQgbm9uLVNFTEVDVCBj b21tYW5kIGluIExFVCAuLi4gU0VMRUNUIik7CisKKwkvKgorCSAqIE1ha2UgdGhlIHNvdXJjZSBi ZSBhIHN1YnF1ZXJ5IGluIHRoZSBMRVQncyByYW5nZXRhYmxlLCBhbmQgYWRkCisJICogaXQgdG8g dGhlIExFVCdzIGpvaW5saXN0LgorCSAqLworCXJ0ZSA9IGFkZFJhbmdlVGFibGVFbnRyeUZvclN1 YnF1ZXJ5KHBzdGF0ZSwKKwkJCQkJCQkJCQlzZWxlY3RRdWVyeSwKKwkJCQkJCQkJCQltYWtlQWxp YXMoIipTRUxFQ1QqIiwgTklMKSwKKwkJCQkJCQkJCQlmYWxzZSwKKwkJCQkJCQkJCQlmYWxzZSk7 CisJcnRyID0gbWFrZU5vZGUoUmFuZ2VUYmxSZWYpOworCS8qIGFzc3VtZSBuZXcgcnRlIGlzIGF0 IGVuZCAqLworCXJ0ci0+cnRpbmRleCA9IGxpc3RfbGVuZ3RoKHBzdGF0ZS0+cF9ydGFibGUpOwor CUFzc2VydChydGUgPT0gcnRfZmV0Y2gocnRyLT5ydGluZGV4LCBwc3RhdGUtPnBfcnRhYmxlKSk7 CisJcHN0YXRlLT5wX2pvaW5saXN0ID0gbGFwcGVuZChwc3RhdGUtPnBfam9pbmxpc3QsIHJ0cik7 CisKKwkvKi0tLS0tLS0tLS0KKwkgKiBHZW5lcmF0ZSBhbiBleHByZXNzaW9uIGxpc3QgZm9yIHRo ZSBMRVQgdGhhdCBzZWxlY3RzIGFsbCB0aGUKKwkgKiBub24tcmVzanVuayBjb2x1bW5zIGZyb20g dGhlIHN1YnF1ZXJ5LiAgKExFVCdzIHRsaXN0IG11c3QgYmUKKwkgKiBzZXBhcmF0ZSBmcm9tIHRo ZSBzdWJxdWVyeSdzIHRsaXN0IGJlY2F1c2Ugd2UgbWF5IGFkZCBkYXRhdHlwZQorCSAqIGNvZXJj aW9ucywgZXRjLikKKwkgKi0tLS0tLS0tLS0KKwkgKi8KKwlleHByTGlzdCA9IE5JTDsKKwlmb3Jl YWNoKGxjLCBzZWxlY3RRdWVyeS0+dGFyZ2V0TGlzdCkKKwl7CisJCVRhcmdldEVudHJ5ICp0bGUg PSAoVGFyZ2V0RW50cnkgKikgbGZpcnN0KGxjKTsKKwkJRXhwcgkgICAqZXhwcjsKKworCQlpZiAo dGxlLT5yZXNqdW5rKQorCQkJY29udGludWU7CisJCWlmICh0bGUtPmV4cHIgJiYKKwkJCShJc0Eo dGxlLT5leHByLCBDb25zdCkgfHxJc0EodGxlLT5leHByLCBQYXJhbSkpICYmCisJCQlleHByVHlw ZSgoTm9kZSAqKSB0bGUtPmV4cHIpID09IFVOS05PV05PSUQpCisJCQlleHByID0gdGxlLT5leHBy OworCQllbHNlCisJCXsKKwkJCVZhcgkJICAgKnZhciA9IG1ha2VWYXJGcm9tVGFyZ2V0RW50cnko cnRyLT5ydGluZGV4LCB0bGUpOworCisJCQl2YXItPmxvY2F0aW9uID0gZXhwckxvY2F0aW9uKChO b2RlICopIHRsZS0+ZXhwcik7CisJCQlleHByID0gKEV4cHIgKikgdmFyOworCQl9CisJCWV4cHJM aXN0ID0gbGFwcGVuZChleHByTGlzdCwgZXhwcik7CisJfQorCisJLyoKKwkgKiBCZWNhdXNlIHN1 cHBvcnRzIG9ubHkgc2NhbGFyIHZhcmlhYmxlcywgd2UgY2FuIG9ubHkgc2ltcGxlCisJICogdHJh bnNmb3JtYXRpb25zIGFuZCBjaGVja3MgaGVyZS4KKwkgKi8KKwlpZiAobGlzdF9sZW5ndGgoZXhw ckxpc3QpICE9IDEpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5U QVhfRVJST1IpLAorCQkJCSBlcnJtc2coImV4cHJlc3Npb24gaXMgbm90IHNjYWxhciB2YWx1ZSIp LAorCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLAorCQkJCQkJCQkJZXhwckxvY2F0aW9u KChOb2RlICopIGV4cHJMaXN0KSkpKTsKKworCWV4cHJMaXN0Q29lciA9IE5JTDsKKwlmb3JlYWNo KGxjLCBleHByTGlzdCkKKwl7CisJCU5vZGUJICAgKm9yaWdfZXhwciA9IChOb2RlKikgbGZpcnN0 KGxjKTsKKwkJT2lkCQkJZXhwcnR5cGlkID0gZXhwclR5cGUoKE5vZGUgKikgb3JpZ19leHByKTsK KwkJRXhwcgkgICAqZXhwcjsKKworCQlleHByID0gKEV4cHIgKikKKwkJCWNvZXJjZV90b190YXJn ZXRfdHlwZShwc3RhdGUsCisJCQkJCQkJCSAgb3JpZ19leHByLCBleHBydHlwaWQsCisJCQkJCQkJ CSAgdmFydHlwaWQsIC0xLAorCQkJCQkJCQkgIENPRVJDSU9OX0FTU0lHTk1FTlQsCisJCQkJCQkJ CSAgQ09FUkNFX0lNUExJQ0lUX0NBU1QsCisJCQkJCQkJCSAgLTEpOworCisJCWlmIChleHByID09 IE5VTEwpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFUWVBF X01JU01BVENIKSwKKwkJCQkJIGVycm1zZygidmFyaWFibGUgXCIlc1wiIGlzIG9mIHR5cGUgJXMi CisJCQkJCQkJICAiIGJ1dCBleHByZXNzaW9uIGlzIG9mIHR5cGUgJXMiLAorCQkJCQkJCVJlbGF0 aW9uR2V0UmVsYXRpb25OYW1lKHJkKSwKKwkJCQkJCQlmb3JtYXRfdHlwZV9iZSh2YXJ0eXBpZCks CisJCQkJCQkJZm9ybWF0X3R5cGVfYmUoZXhwcnR5cGlkKSksCisJCQkJIGVycmhpbnQoIllvdSB3 aWxsIG5lZWQgdG8gcmV3cml0ZSBvciBjYXN0IHRoZSBleHByZXNzaW9uLiIpLAorCQkJCSBwYXJz ZXJfZXJycG9zaXRpb24ocHN0YXRlLCBleHByTG9jYXRpb24oKE5vZGUgKikgb3JpZ19leHByKSkp KTsKKworCQlleHByTGlzdENvZXIgPSBsYXBwZW5kKGV4cHJMaXN0Q29lciwgZXhwcik7CisJfQor CisJLyoKKwkgKiBHZW5lcmF0ZSBxdWVyeSdzIHRhcmdldCBsaXN0IHVzaW5nIHRoZSBjb21wdXRl ZCBsaXN0IG9mIGV4cHJlc3Npb25zLgorCSAqIEFsc28sIG1hcmsgYWxsIHRoZSB0YXJnZXQgY29s dW1ucyBhcyBuZWVkaW5nIGluc2VydCBwZXJtaXNzaW9ucy4KKwkgKi8KKwlydGUgPSBwc3RhdGUt PnBfdGFyZ2V0X3JhbmdldGJsZW50cnk7CisJcXJ5LT50YXJnZXRMaXN0ID0gTklMOworCWZvcmVh Y2gobGMsIGV4cHJMaXN0KQorCXsKKwkJRXhwcgkgICAqZXhwciA9IChFeHByICopIGxmaXJzdChs Yyk7CisJCVRhcmdldEVudHJ5ICp0bGU7CisKKwkJdGxlID0gbWFrZVRhcmdldEVudHJ5KGV4cHIs CisJCQkJCQkJICBpICsgMSwKKwkJCQkJCQkgIEZpZ3VyZUNvbG5hbWUoKE5vZGUgKilleHByKSwK KwkJCQkJCQkgIGZhbHNlKTsKKwkJcXJ5LT50YXJnZXRMaXN0ID0gbGFwcGVuZChxcnktPnRhcmdl dExpc3QsIHRsZSk7CisJfQorCisJLyogZG9uZSBidWlsZGluZyB0aGUgcmFuZ2UgdGFibGUgYW5k IGpvaW50cmVlICovCisJcXJ5LT5ydGFibGUgPSBwc3RhdGUtPnBfcnRhYmxlOworCXFyeS0+am9p bnRyZWUgPSBtYWtlRnJvbUV4cHIocHN0YXRlLT5wX2pvaW5saXN0LCBOVUxMKTsKKworCXFyeS0+ aGFzVGFyZ2V0U1JGcyA9IHBzdGF0ZS0+cF9oYXNUYXJnZXRTUkZzOworCXFyeS0+aGFzU3ViTGlu a3MgPSBwc3RhdGUtPnBfaGFzU3ViTGlua3M7CisKKwlhc3NpZ25fcXVlcnlfY29sbGF0aW9ucyhw c3RhdGUsIHFyeSk7CisKKwlyZXR1cm4gcXJ5OworfQorCiAvKgogICogdHJhbnNmb3JtU2V0T3Bl cmF0aW9uU3RtdCAtCiAgKgkgIHRyYW5zZm9ybXMgYSBzZXQtb3BlcmF0aW9ucyB0cmVlCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55IGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dy YW0ueQppbmRleCA1MzI5NDMyZjI1Li5kMmEyNjRkMWUxIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9wYXJzZXIvZ3JhbS55CisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKQEAgLTI1Nyw4 ICsyNTcsOCBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVs bmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCQlDb25zdHJhaW50c1NldFN0bXQg Q29weVN0bXQgQ3JlYXRlQXNTdG10IENyZWF0ZUNhc3RTdG10CiAJCUNyZWF0ZURvbWFpblN0bXQg Q3JlYXRlRXh0ZW5zaW9uU3RtdCBDcmVhdGVHcm91cFN0bXQgQ3JlYXRlT3BDbGFzc1N0bXQKIAkJ Q3JlYXRlT3BGYW1pbHlTdG10IEFsdGVyT3BGYW1pbHlTdG10IENyZWF0ZVBMYW5nU3RtdAotCQlD cmVhdGVTY2hlbWFTdG10IENyZWF0ZVNlcVN0bXQgQ3JlYXRlU3RtdCBDcmVhdGVTdGF0c1N0bXQg Q3JlYXRlVGFibGVTcGFjZVN0bXQKLQkJQ3JlYXRlRmR3U3RtdCBDcmVhdGVGb3JlaWduU2VydmVy U3RtdCBDcmVhdGVGb3JlaWduVGFibGVTdG10CisJCUNyZWF0ZVNjaGVtYVN0bXQgQ3JlYXRlU2No ZW1hVmFyU3RtdCBDcmVhdGVTZXFTdG10IENyZWF0ZVN0bXQgQ3JlYXRlU3RhdHNTdG10CisJCUNy ZWF0ZVRhYmxlU3BhY2VTdG10IENyZWF0ZUZkd1N0bXQgQ3JlYXRlRm9yZWlnblNlcnZlclN0bXQg Q3JlYXRlRm9yZWlnblRhYmxlU3RtdAogCQlDcmVhdGVBc3NlcnRTdG10IENyZWF0ZVRyYW5zZm9y bVN0bXQgQ3JlYXRlVHJpZ1N0bXQgQ3JlYXRlRXZlbnRUcmlnU3RtdAogCQlDcmVhdGVVc2VyU3Rt dCBDcmVhdGVVc2VyTWFwcGluZ1N0bXQgQ3JlYXRlUm9sZVN0bXQgQ3JlYXRlUG9saWN5U3RtdAog CQlDcmVhdGVkYlN0bXQgRGVjbGFyZUN1cnNvclN0bXQgRGVmaW5lU3RtdCBEZWxldGVTdG10IERp c2NhcmRTdG10IERvU3RtdApAQCAtMjY4LDcgKzI2OCw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVj dXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVy eSk7CiAJCURyb3BUcmFuc2Zvcm1TdG10CiAJCURyb3BVc2VyTWFwcGluZ1N0bXQgRXhwbGFpblN0 bXQgRmV0Y2hTdG10CiAJCUdyYW50U3RtdCBHcmFudFJvbGVTdG10IEltcG9ydEZvcmVpZ25TY2hl bWFTdG10IEluZGV4U3RtdCBJbnNlcnRTdG10Ci0JCUxpc3RlblN0bXQgTG9hZFN0bXQgTG9ja1N0 bXQgTm90aWZ5U3RtdCBFeHBsYWluYWJsZVN0bXQgUHJlcGFyYWJsZVN0bXQKKwkJTGV0U3RtdCBM aXN0ZW5TdG10IExvYWRTdG10IExvY2tTdG10IE5vdGlmeVN0bXQgRXhwbGFpbmFibGVTdG10IFBy ZXBhcmFibGVTdG10CiAJCUNyZWF0ZUZ1bmN0aW9uU3RtdCBBbHRlckZ1bmN0aW9uU3RtdCBSZWlu ZGV4U3RtdCBSZW1vdmVBZ2dyU3RtdAogCQlSZW1vdmVGdW5jU3RtdCBSZW1vdmVPcGVyU3RtdCBS ZW5hbWVTdG10IFJldm9rZVN0bXQgUmV2b2tlUm9sZVN0bXQKIAkJUnVsZUFjdGlvblN0bXQgUnVs ZUFjdGlvblN0bXRPckVtcHR5IFJ1bGVTdG10CkBAIC02NDYsNyArNjQ2LDcgQEAgc3RhdGljIE5v ZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMs IE5vZGUgKnF1ZXJ5KTsKIAlLRVkKIAogCUxBQkVMIExBTkdVQUdFIExBUkdFX1AgTEFTVF9QIExB VEVSQUxfUAotCUxFQURJTkcgTEVBS1BST09GIExFQVNUIExFRlQgTEVWRUwgTElLRSBMSU1JVCBM SVNURU4gTE9BRCBMT0NBTAorCUxFQURJTkcgTEVBS1BST09GIExFQVNUIExFRlQgTEVUIExFVkVM IExJS0UgTElNSVQgTElTVEVOIExPQUQgTE9DQUwKIAlMT0NBTFRJTUUgTE9DQUxUSU1FU1RBTVAg TE9DQVRJT04gTE9DS19QIExPQ0tFRCBMT0dHRUQKIAogCU1BUFBJTkcgTUFUQ0ggTUFURVJJQUxJ WkVEIE1BWFZBTFVFIE1FVEhPRCBNSU5VVEVfUCBNSU5WQUxVRSBNT0RFIE1PTlRIX1AgTU9WRQpA QCAtNjgyLDggKzY4Miw4IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChj aGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJVU5CT1VOREVEIFVO Q09NTUlUVEVEIFVORU5DUllQVEVEIFVOSU9OIFVOSVFVRSBVTktOT1dOIFVOTElTVEVOIFVOTE9H R0VECiAJVU5USUwgVVBEQVRFIFVTRVIgVVNJTkcKIAotCVZBQ1VVTSBWQUxJRCBWQUxJREFURSBW QUxJREFUT1IgVkFMVUVfUCBWQUxVRVMgVkFSQ0hBUiBWQVJJQURJQyBWQVJZSU5HCi0JVkVSQk9T RSBWRVJTSU9OX1AgVklFVyBWSUVXUyBWT0xBVElMRQorCVZBQ1VVTSBWQUxJRCBWQUxJREFURSBW QUxJREFUT1IgVkFMVUVfUCBWQUxVRVMgVkFSQ0hBUiBWQVJJQUJMRSBWQVJJQUJMRVMKKwlWQVJJ QURJQyBWQVJZSU5HIFZFUkJPU0UgVkVSU0lPTl9QIFZJRVcgVklFV1MgVk9MQVRJTEUKIAogCVdI RU4gV0hFUkUgV0hJVEVTUEFDRV9QIFdJTkRPVyBXSVRIIFdJVEhJTiBXSVRIT1VUIFdPUksgV1JB UFBFUiBXUklURQogCkBAIC04NzMsNiArODczLDcgQEAgc3RtdCA6CiAJCQl8IENyZWF0ZVBMYW5n U3RtdAogCQkJfCBDcmVhdGVTY2hlbWFTdG10CiAJCQl8IENyZWF0ZVNlcVN0bXQKKwkJCXwgQ3Jl YXRlU2NoZW1hVmFyU3RtdAogCQkJfCBDcmVhdGVTdG10CiAJCQl8IENyZWF0ZVN1YnNjcmlwdGlv blN0bXQKIAkJCXwgQ3JlYXRlU3RhdHNTdG10CkBAIC05MTQsNiArOTE1LDcgQEAgc3RtdCA6CiAJ CQl8IExpc3RlblN0bXQKIAkJCXwgUmVmcmVzaE1hdFZpZXdTdG10CiAJCQl8IExvYWRTdG10CisJ CQl8IExldFN0bXQKIAkJCXwgTG9ja1N0bXQKIAkJCXwgTm90aWZ5U3RtdAogCQkJfCBQcmVwYXJl U3RtdApAQCAtMTM3NCw2ICsxMzc2LDcgQEAgc2NoZW1hX3N0bXQ6CiAJCQlDcmVhdGVTdG10CiAJ CQl8IEluZGV4U3RtdAogCQkJfCBDcmVhdGVTZXFTdG10CisJCQl8IENyZWF0ZVNjaGVtYVZhclN0 bXQKIAkJCXwgQ3JlYXRlVHJpZ1N0bXQKIAkJCXwgR3JhbnRTdG10CiAJCQl8IFZpZXdTdG10CkBA IC0xODAyLDcgKzE4MDUsMTIgQEAgRGlzY2FyZFN0bXQ6CiAJCQkJCW4tPnRhcmdldCA9IERJU0NB UkRfU0VRVUVOQ0VTOwogCQkJCQkkJCA9IChOb2RlICopIG47CiAJCQkJfQotCisJCQl8IERJU0NB UkQgVkFSSUFCTEVTCisJCQkJeworCQkJCQlEaXNjYXJkU3RtdCAqbiA9IG1ha2VOb2RlKERpc2Nh cmRTdG10KTsKKwkJCQkJbi0+dGFyZ2V0ID0gRElTQ0FSRF9WQVJJQUJMRVM7CisJCQkJCSQkID0g KE5vZGUgKikgbjsKKwkJCQl9CiAJCTsKIAogCkBAIC00MjY3LDYgKzQyNzUsMzQgQEAgTnVtZXJp Y09ubHlfbGlzdDoJTnVtZXJpY09ubHkJCQkJCQl7ICQkID0gbGlzdF9tYWtlMSgkMSk7IH0KIAkJ CQl8IE51bWVyaWNPbmx5X2xpc3QgJywnIE51bWVyaWNPbmx5CXsgJCQgPSBsYXBwZW5kKCQxLCAk Myk7IH0KIAkJOwogCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKgkJUVVFUlkgOgorICoJ CQkJQ1JFQVRFIFZBUklBQkxFIHNlcW5hbWUgW0FTXSB0eXBlCisgKgorICoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqLworCitDcmVhdGVTY2hlbWFWYXJTdG10OgorCQkJQ1JFQVRFIE9wdFRlbXAgVkFSSUFC TEUgcXVhbGlmaWVkX25hbWUgb3B0X2FzIFR5cGVuYW1lCisJCQkJeworCQkJCQlDcmVhdGVTY2hl bWFWYXJTdG10ICpuID0gbWFrZU5vZGUoQ3JlYXRlU2NoZW1hVmFyU3RtdCk7CisJCQkJCSQ0LT5y ZWxwZXJzaXN0ZW5jZSA9ICQyOworCQkJCQluLT52YXJpYWJsZSA9ICQ0OworCQkJCQluLT50eXBl TmFtZSA9ICQ2OworCQkJCQluLT5pZl9ub3RfZXhpc3RzID0gZmFsc2U7CisJCQkJCSQkID0gKE5v ZGUgKiluOworCQkJCX0KKwkJCXwgQ1JFQVRFIE9wdFRlbXAgVkFSSUFCTEUgSUZfUCBOT1QgRVhJ U1RTIHF1YWxpZmllZF9uYW1lIG9wdF9hcyBUeXBlbmFtZQorCQkJCXsKKwkJCQkJQ3JlYXRlU2No ZW1hVmFyU3RtdCAqbiA9IG1ha2VOb2RlKENyZWF0ZVNjaGVtYVZhclN0bXQpOworCQkJCQkkNy0+ cmVscGVyc2lzdGVuY2UgPSAkMjsKKwkJCQkJbi0+dmFyaWFibGUgPSAkNzsKKwkJCQkJbi0+dHlw ZU5hbWUgPSAkOTsKKwkJCQkJbi0+aWZfbm90X2V4aXN0cyA9IHRydWU7CisJCQkJCSQkID0gKE5v ZGUgKiluOworCQkJCX0KKwkJOworCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCiAgKgkJUVVF UklFUyA6CkBAIC02MzE1LDYgKzYzNTEsNyBAQCBkcm9wX3R5cGVfYW55X25hbWU6CiAJCQl8IFRF WFRfUCBTRUFSQ0ggRElDVElPTkFSWQkJCQl7ICQkID0gT0JKRUNUX1RTRElDVElPTkFSWTsgfQog CQkJfCBURVhUX1AgU0VBUkNIIFRFTVBMQVRFCQkJCXsgJCQgPSBPQkpFQ1RfVFNURU1QTEFURTsg fQogCQkJfCBURVhUX1AgU0VBUkNIIENPTkZJR1VSQVRJT04JCQl7ICQkID0gT0JKRUNUX1RTQ09O RklHVVJBVElPTjsgfQorCQkJfCBWQVJJQUJMRQkJCQkJCQkJeyAkJCA9IE9CSkVDVF9WQVJJQUJM RTsgfQogCQk7CiAKIC8qIG9iamVjdCB0eXBlcyB0YWtpbmcgbmFtZV9saXN0ICovCkBAIC02NTg0 LDYgKzY2MjEsNyBAQCBjb21tZW50X3R5cGVfYW55X25hbWU6CiAJCQl8IFRFWFRfUCBTRUFSQ0gg RElDVElPTkFSWQkJCXsgJCQgPSBPQkpFQ1RfVFNESUNUSU9OQVJZOyB9CiAJCQl8IFRFWFRfUCBT RUFSQ0ggUEFSU0VSCQkJCXsgJCQgPSBPQkpFQ1RfVFNQQVJTRVI7IH0KIAkJCXwgVEVYVF9QIFNF QVJDSCBURU1QTEFURQkJCXsgJCQgPSBPQkpFQ1RfVFNURU1QTEFURTsgfQorCQkJfCBWQVJJQUJM RQkJCQkJCQl7ICQkID0gT0JKRUNUX1ZBUklBQkxFOyB9CiAJCTsKIAogLyogb2JqZWN0IHR5cGVz IHRha2luZyBuYW1lICovCkBAIC02NzIyLDYgKzY3NjAsNyBAQCBzZWN1cml0eV9sYWJlbF90eXBl X2FueV9uYW1lOgogCQkJfCBUQUJMRQkJCQkJCQkJeyAkJCA9IE9CSkVDVF9UQUJMRTsgfQogCQkJ fCBWSUVXCQkJCQkJCQl7ICQkID0gT0JKRUNUX1ZJRVc7IH0KIAkJCXwgTUFURVJJQUxJWkVEIFZJ RVcJCQkJCXsgJCQgPSBPQkpFQ1RfTUFUVklFVzsgfQorCQkJfCBWQVJJQUJMRQkJCQkJCQl7ICQk ID0gT0JKRUNUX1ZBUklBQkxFOyB9CiAJCTsKIAogLyogb2JqZWN0IHR5cGVzIHRha2luZyBuYW1l ICovCkBAIC03MDQ3LDYgKzcwODYsMTQgQEAgcHJpdmlsZWdlX3RhcmdldDoKIAkJCQkJbi0+b2Jq cyA9ICQyOwogCQkJCQkkJCA9IG47CiAJCQkJfQorCQkJfCBWQVJJQUJMRSBxdWFsaWZpZWRfbmFt ZV9saXN0CisJCQkJeworCQkJCQlQcml2VGFyZ2V0ICpuID0gKFByaXZUYXJnZXQgKikgcGFsbG9j KHNpemVvZihQcml2VGFyZ2V0KSk7CisJCQkJCW4tPnRhcmd0eXBlID0gQUNMX1RBUkdFVF9PQkpF Q1Q7CisJCQkJCW4tPm9ianR5cGUgPSBPQkpFQ1RfVkFSSUFCTEU7CisJCQkJCW4tPm9ianMgPSAk MjsKKwkJCQkJJCQgPSBuOworCQkJCX0KIAkJCXwgRk9SRUlHTiBEQVRBX1AgV1JBUFBFUiBuYW1l X2xpc3QKIAkJCQl7CiAJCQkJCVByaXZUYXJnZXQgKm4gPSAoUHJpdlRhcmdldCAqKSBwYWxsb2Mo c2l6ZW9mKFByaXZUYXJnZXQpKTsKQEAgLTcxNTksNiArNzIwNiwxNCBAQCBwcml2aWxlZ2VfdGFy Z2V0OgogCQkJCQluLT5vYmpzID0gJDU7CiAJCQkJCSQkID0gbjsKIAkJCQl9CisJCQl8IEFMTCBW QVJJQUJMRVMgSU5fUCBTQ0hFTUEgbmFtZV9saXN0CisJCQkJeworCQkJCQlQcml2VGFyZ2V0ICpu ID0gKFByaXZUYXJnZXQgKikgcGFsbG9jKHNpemVvZihQcml2VGFyZ2V0KSk7CisJCQkJCW4tPnRh cmd0eXBlID0gQUNMX1RBUkdFVF9BTExfSU5fU0NIRU1BOworCQkJCQluLT5vYmp0eXBlID0gT0JK RUNUX1ZBUklBQkxFOworCQkJCQluLT5vYmpzID0gJDU7CisJCQkJCSQkID0gbjsKKwkJCQl9CiAJ CQl8IEFMTCBGVU5DVElPTlMgSU5fUCBTQ0hFTUEgbmFtZV9saXN0CiAJCQkJewogCQkJCQlQcml2 VGFyZ2V0ICpuID0gKFByaXZUYXJnZXQgKikgcGFsbG9jKHNpemVvZihQcml2VGFyZ2V0KSk7CkBA IC03MzQxLDYgKzczOTYsNyBAQCBkZWZhY2xfcHJpdmlsZWdlX3RhcmdldDoKIAkJCXwgRlVOQ1RJ T05TCQl7ICQkID0gT0JKRUNUX0ZVTkNUSU9OOyB9CiAJCQl8IFJPVVRJTkVTCQl7ICQkID0gT0JK RUNUX0ZVTkNUSU9OOyB9CiAJCQl8IFNFUVVFTkNFUwkJeyAkJCA9IE9CSkVDVF9TRVFVRU5DRTsg fQorCQkJfCBWQVJJQUJMRVMJCXsgJCQgPSBPQkpFQ1RfVkFSSUFCTEU7IH0KIAkJCXwgVFlQRVNf UAkJeyAkJCA9IE9CSkVDVF9UWVBFOyB9CiAJCQl8IFNDSEVNQVMJCXsgJCQgPSBPQkpFQ1RfU0NI RU1BOyB9CiAJCTsKQEAgLTEwNjQ1LDcgKzEwNzAxLDggQEAgRXhwbGFpbmFibGVTdG10OgogCQkJ fCBDcmVhdGVBc1N0bXQKIAkJCXwgQ3JlYXRlTWF0Vmlld1N0bXQKIAkJCXwgUmVmcmVzaE1hdFZp ZXdTdG10Ci0JCQl8IEV4ZWN1dGVTdG10CQkJCQkvKiBieSBkZWZhdWx0IGFsbCBhcmUgJCQ9JDEg Ki8KKwkJCXwgRXhlY3V0ZVN0bXQKKwkJCXwgTGV0U3RtdAkJCQkJLyogYnkgZGVmYXVsdCBhbGwg YXJlICQkPSQxICovCiAJCTsKIAogZXhwbGFpbl9vcHRpb25fbGlzdDoKQEAgLTEwNzAyLDcgKzEw NzU5LDggQEAgUHJlcGFyYWJsZVN0bXQ6CiAJCQlTZWxlY3RTdG10CiAJCQl8IEluc2VydFN0bXQK IAkJCXwgVXBkYXRlU3RtdAotCQkJfCBEZWxldGVTdG10CQkJCQkvKiBieSBkZWZhdWx0IGFsbCBh cmUgJCQ9JDEgKi8KKwkJCXwgRGVsZXRlU3RtdAorCQkJfCBMZXRTdG10CQkJCQkvKiBieSBkZWZh dWx0IGFsbCBhcmUgJCQ9JDEgKi8KIAkJOwogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKQEAgLTEx MTAxLDYgKzExMTU5LDMwIEBAIG9wdF9ob2xkOiAvKiBFTVBUWSAqLwkJCQkJCXsgJCQgPSAwOyB9 CiAJCQl8IFdJVEhPVVQgSE9MRAkJCQkJeyAkJCA9IDA7IH0KIAkJOwogCisvKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioKKyAqCisgKgkJUVVFUlk6CisgKgkJCQlMRVQgU1RBVEVNRU5UUworICoKKyAqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKi8KK0xldFN0bXQ6CUxFVCBxdWFsaWZpZWRfbmFtZSAnPScgYV9leHBy CisJCQkJeworCQkJCQlMZXRTdG10ICpuID0gbWFrZU5vZGUoTGV0U3RtdCk7CisJCQkJCVNlbGVj dFN0bXQgKnNlbGVjdCA9IG1ha2VOb2RlKFNlbGVjdFN0bXQpOworCQkJCQlSZXNUYXJnZXQJKnJl cyA9IG1ha2VOb2RlKFJlc1RhcmdldCk7CisKKwkJCQkJcmVzLT5uYW1lID0gTlVMTDsKKwkJCQkJ cmVzLT5pbmRpcmVjdGlvbiA9IE5JTDsKKwkJCQkJcmVzLT52YWwgPSAoTm9kZSAqKSAkNDsKKwkJ CQkJcmVzLT5sb2NhdGlvbiA9IEA0OworCQkJCQlzZWxlY3QtPnRhcmdldExpc3QgPSBsaXN0X21h a2UxKHJlcyk7CisJCQkJCW4tPnZhcmlhYmxlID0gJDI7CisJCQkJCW4tPnNlbGVjdFN0bXQgPSAo Tm9kZSAqKSBzZWxlY3Q7CisKKwkJCQkJJCQgPSAoTm9kZSAqKSBuOworCQkJCX0KKwkJOworCiAv KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioKICAqCiAgKgkJUVVFUlk6CkBAIC0xNTA1Niw2ICsxNTEzOCw3 IEBAIHVucmVzZXJ2ZWRfa2V5d29yZDoKIAkJCXwgTEFSR0VfUAogCQkJfCBMQVNUX1AKIAkJCXwg TEVBS1BST09GCisJCQl8IExFVAogCQkJfCBMRVZFTAogCQkJfCBMSVNURU4KIAkJCXwgTE9BRApA QCAtMTUyMDIsNiArMTUyODUsOCBAQCB1bnJlc2VydmVkX2tleXdvcmQ6CiAJCQl8IFZBTElEQVRF CiAJCQl8IFZBTElEQVRPUgogCQkJfCBWQUxVRV9QCisJCQl8IFZBUklBQkxFCisJCQl8IFZBUklB QkxFUwogCQkJfCBWQVJZSU5HCiAJCQl8IFZFUlNJT05fUAogCQkJfCBWSUVXCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3Bh cnNlX2V4cHIuYwppbmRleCBiMmY1ZTQ2ZTNiLi5jYmY3NTdkMDU5IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJz ZV9leHByLmMKQEAgLTUwOSw2ICs1MDksNyBAQCBzdGF0aWMgTm9kZSAqCiB0cmFuc2Zvcm1Db2x1 bW5SZWYoUGFyc2VTdGF0ZSAqcHN0YXRlLCBDb2x1bW5SZWYgKmNyZWYpCiB7CiAJTm9kZQkgICAq bm9kZSA9IE5VTEw7CisJTm9kZQkgICAqdmFyaWFibGUgPSBOVUxMOwogCWNoYXIJICAgKm5zcG5h bWUgPSBOVUxMOwogCWNoYXIJICAgKnJlbG5hbWUgPSBOVUxMOwogCWNoYXIJICAgKmNvbG5hbWUg PSBOVUxMOwpAQCAtNzQ5LDYgKzc1MCw3MCBAQCB0cmFuc2Zvcm1Db2x1bW5SZWYoUGFyc2VTdGF0 ZSAqcHN0YXRlLCBDb2x1bW5SZWYgKmNyZWYpCiAJCQlicmVhazsKIAl9CiAKKwkvKgorCSAqIFRy eSB0byBpZGVudGlmeSBjb2x1bW4gcmVmIGFzIHZhcmlhYmxlLiBQb3NzaWJsZSB2YXJpYW50cyBh cmUKKwkgKgorCSAqIEEgLi4gdmFyaWFibGUgbmFtZQorCSAqIEEuQiAuLiBxdWFsaWZpZWQgdmFy aWFibGUgbmFtZQorCSAqLworCXN3aXRjaCAobGlzdF9sZW5ndGgoY3JlZi0+ZmllbGRzKSkKKwl7 CisJCWNhc2UgMToKKwkJCXsKKwkJCQlOb2RlCSAgICpmaWVsZDEgPSAoTm9kZSAqKSBsaW5pdGlh bChjcmVmLT5maWVsZHMpOworCisJCQkJaWYgKElzQShmaWVsZDEsIFN0cmluZykpCisJCQkJewor CQkJCQljaGFyICp2YXJuYW1lICA9IHN0clZhbChmaWVsZDEpOworCisJCQkJCS8qIFRyeSB0byBp ZGVudGlmeSBhcyBhbiB1bnF1YWxpZmllZCBjb2x1bW4gKi8KKwkJCQkJdmFyaWFibGUgPSB0b1Nj aGVtYVZhcmlhYmxlKHBzdGF0ZSwKKwkJCQkJCQkJCQkJCQlOVUxMLCB2YXJuYW1lLAorCQkJCQkJ CQkJCQkJCWNyZWYtPmxvY2F0aW9uKTsKKwkJCQl9CisJCQkJYnJlYWs7CisJCQl9CisJCWNhc2Ug MjoKKwkJCXsKKwkJCQlOb2RlCSAgICpmaWVsZDEgPSAoTm9kZSAqKSBsaW5pdGlhbChjcmVmLT5m aWVsZHMpOworCQkJCU5vZGUJICAgKmZpZWxkMiA9IChOb2RlICopIGxzZWNvbmQoY3JlZi0+Zmll bGRzKTsKKworCQkJCWlmIChJc0EoZmllbGQxLCBTdHJpbmcpICYmIElzQShmaWVsZDIsIFN0cmlu ZykpCisJCQkJeworCQkJCQljaGFyICpuc3BuYW1lID0gc3RyVmFsKGZpZWxkMSk7CisJCQkJCWNo YXIgKnZhcm5hbWUgPSBzdHJWYWwoZmllbGQyKTsKKworCQkJCQkvKiBUcnkgdG8gaWRlbnRpZnkg YXMgYW4gdW5xdWFsaWZpZWQgY29sdW1uICovCisJCQkJCXZhcmlhYmxlID0gdG9TY2hlbWFWYXJp YWJsZShwc3RhdGUsCisJCQkJCQkJCQkJCQkJbnNwbmFtZSwgdmFybmFtZSwKKwkJCQkJCQkJCQkJ CQljcmVmLT5sb2NhdGlvbik7CisJCQkJfQorCQkJCWJyZWFrOworCQkJfQorCQlkZWZhdWx0Ogor CisJCQkvKgorCQkJICogVGhlcmUgY2FuIGJlIGFub3RoZXIgdmFyaWFudHMsIG1vcmUgd2hlbiBj b21wb3NpdGUgdmFyaWFibGVzCisJCQkgKiB3aWxsIGJlIHN1cHBvcnRlZC4gQ3VycmVudGx5IG9u bHkgc2NhbGFycyBhcmUgc3VwcG9ydGVkLCBzbworCQkJICogdGhlcmUgYXJlIG5vdCBuZWNlc3Nh cnkgdG8gc29sdmUgb3RoZXIgcXVlc3Rpb25zLgorCQkJICoKKwkJCSAqIGRvIG5vdGhpbmcKKwkJ CSAqLworCQkJYnJlYWs7CisJfQorCisJaWYgKHZhcmlhYmxlICE9IE5VTEwpCisJeworCQlpZiAo bm9kZSAhPSBOVUxMKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9B TUJJR1VPVVNfQ09MVU1OKSwKKwkJCQkJIGVycm1zZygiY29sdW1uIHJlZmVyZW5jZSBcIiVzXCIg aXMgYW1iaWd1b3VzIiwKKwkJCQkJCQlOYW1lTGlzdFRvU3RyaW5nKGNyZWYtPmZpZWxkcykpLAor CQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgY3JlZi0+bG9jYXRpb24pKSk7CisKKwkJ bm9kZSA9IHZhcmlhYmxlOworCX0KKwogCS8qCiAJICogTm93IGdpdmUgdGhlIFBvc3RQYXJzZUNv bHVtblJlZkhvb2ssIGlmIGFueSwgYSBjaGFuY2UuICBXZSBwYXNzIHRoZQogCSAqIHRyYW5zbGF0 aW9uLXNvLWZhciBzbyB0aGF0IGl0IGNhbiB0aHJvdyBhbiBlcnJvciBpZiBpdCB3aXNoZXMgaW4g dGhlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfcmVsYXRpb24uYyBiL3Ny Yy9iYWNrZW5kL3BhcnNlci9wYXJzZV9yZWxhdGlvbi5jCmluZGV4IDI2MjVkYTUzMjcuLmY3ZDlh MGM5MzkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9yZWxhdGlvbi5jCisr KyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9yZWxhdGlvbi5jCkBAIC0xMTUwLDYgKzExNTAs NyBAQCBwYXJzZXJPcGVuVGFibGUoUGFyc2VTdGF0ZSAqcHN0YXRlLCBjb25zdCBSYW5nZVZhciAq cmVsYXRpb24sIGludCBsb2NrbW9kZSkKIAogCXNldHVwX3BhcnNlcl9lcnJwb3NpdGlvbl9jYWxs YmFjaygmcGNic3RhdGUsIHBzdGF0ZSwgcmVsYXRpb24tPmxvY2F0aW9uKTsKIAlyZWwgPSBoZWFw X29wZW5ydl9leHRlbmRlZChyZWxhdGlvbiwgbG9ja21vZGUsIHRydWUpOworCiAJaWYgKHJlbCA9 PSBOVUxMKQogCXsKIAkJaWYgKHJlbGF0aW9uLT5zY2hlbWFuYW1lKQpAQCAtMTE4MCw2ICsxMTgx LDI0IEBAIHBhcnNlck9wZW5UYWJsZShQYXJzZVN0YXRlICpwc3RhdGUsIGNvbnN0IFJhbmdlVmFy ICpyZWxhdGlvbiwgaW50IGxvY2ttb2RlKQogCQkJCQkJCQlyZWxhdGlvbi0+cmVsbmFtZSkpKTsK IAkJfQogCX0KKworCS8qCisJICogUkVMS0lORF9WQVJJQUJMRSBjYW4gYmUgdXNlZCBvbmx5IGlu IExFVCBjb21tYW5kLgorCSAqIFByb2JhYmx5IHRoaXMgY2hlY2sgY2FuIGJlIGRvbmUgZWxzZXdo ZXJlLCBidXQgaGVyZSBJCisJICogaGF2ZSBhIHVzZWQgcmVsYXRpb24gYW5kIHBhcnNlIHN0YXRl IHRvZ2V0aGVyIGZpcnN0IHRpbWUuCisJICovCisJaWYgKHJlbC0+cmRfcmVsLT5yZWxraW5kID09 IFJFTEtJTkRfVkFSSUFCTEUgJiYgIXBzdGF0ZS0+cF9pc19sZXQpCisJCWVyZXBvcnQoRVJST1Is CisJCQkJKGVycmNvZGUoRVJSQ09ERV9XUk9OR19PQkpFQ1RfVFlQRSksCisJCQkJIGVycm1zZygi XCIlc1wiIGlzIGFuIHNjaGVtYSB2YXJpYWJsZSIsCisJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9u TmFtZShyZWwpKSkpOworCisJaWYgKHBzdGF0ZS0+cF9pc19sZXQgJiYgcmVsLT5yZF9yZWwtPnJl bGtpbmQgIT0gUkVMS0lORF9WQVJJQUJMRSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29k ZShFUlJDT0RFX1dST05HX09CSkVDVF9UWVBFKSwKKwkJCQkgZXJybXNnKCJcIiVzXCIgaXMgbm90 IGFuIHNjaGVtYSB2YXJpYWJsZSIsCisJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwp KSkpOworCiAJY2FuY2VsX3BhcnNlcl9lcnJwb3NpdGlvbl9jYWxsYmFjaygmcGNic3RhdGUpOwog CXJldHVybiByZWw7CiB9CkBAIC0zMzYwLDMgKzMzNzksNDIgQEAgaXNRdWVyeVVzaW5nVGVtcFJl bGF0aW9uX3dhbGtlcihOb2RlICpub2RlLCB2b2lkICpjb250ZXh0KQogCQkJCQkJCQkgIGlzUXVl cnlVc2luZ1RlbXBSZWxhdGlvbl93YWxrZXIsCiAJCQkJCQkJCSAgY29udGV4dCk7CiB9CisKKy8q CisgKiBUcnkgdG8gcmVwbGFjZSBDb2x1bW5SZWYgYnkgUGFyYW0gcmVsYXRlZCB0byB2YXJpYWJs ZQorICovCitOb2RlICoKK3RvU2NoZW1hVmFyaWFibGUoUGFyc2VTdGF0ZSAqcHN0YXRlLCBjaGFy ICpuc3BuYW1lLCBjaGFyICp2YXJuYW1lLCBpbnQgbG9jYXRpb24pCit7CisJT2lkCQkJdmFyaWQ7 CisJUGFyYW0JICAgKnBhcmFtID0gTlVMTDsKKworCXZhcmlkID0gUmFuZ2VWYXJHZXRSZWxpZCht YWtlUmFuZ2VWYXIobnNwbmFtZSwgdmFybmFtZSwgLTEpLCBOb0xvY2ssIHRydWUpOworCWlmIChP aWRJc1ZhbGlkKHZhcmlkKSkKKwl7CisJCUhlYXBUdXBsZQl0cDsKKwkJRm9ybV9wZ19jbGFzcwl2 YXJ0dXA7CisKKwkJCS8qIG5vdywgdHlwZSBpbmZvIGZvciBzY2hlbWEgdmFyaWFibGUgaXMgY29s bGVjdGVkICovCisJCXRwID0gU2VhcmNoU3lzQ2FjaGUxKFJFTE9JRCwgT2JqZWN0SWRHZXREYXR1 bSh2YXJpZCkpOworCQlpZiAoSGVhcFR1cGxlSXNWYWxpZCh0cCkpCisJCXsKKwkJCXZhcnR1cCA9 IChGb3JtX3BnX2NsYXNzKSBHRVRTVFJVQ1QodHApOworCisJCQlpZiAodmFydHVwLT5yZWxraW5k ID09IFJFTEtJTkRfVkFSSUFCTEUpCisJCQl7CisJCQkJcGFyYW0gPSBtYWtlTm9kZShQYXJhbSk7 CisJCQkJcGFyYW0tPnBhcmFta2luZCA9IFBBUkFNX1NDSEVNQV9WQVJJQUJMRTsKKwkJCQlwYXJh bS0+cGFyYW1pZCA9IHZhcmlkOworCQkJCXBhcmFtLT5wYXJhbXR5cGUgPSB2YXJ0dXAtPnJlbG9m dHlwZTsKKwkJCQlwYXJhbS0+cGFyYW10eXBtb2QgPSAtMTsKKwkJCQlwYXJhbS0+cGFyYW1jb2xs aWQgPSBnZXRfdHlwY29sbGF0aW9uKHBhcmFtLT5wYXJhbXR5cGUpOworCQkJCXBhcmFtLT5sb2Nh dGlvbiA9IGxvY2F0aW9uOworCQkJfQorCisJCQlSZWxlYXNlU3lzQ2FjaGUodHApOworCQl9CisJ fQorCisJcmV0dXJuIChOb2RlICopIHBhcmFtOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv cGFyc2VyL3BhcnNlX3V0aWxjbWQuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21k LmMKaW5kZXggMWQzNTgxNWZjZi4uNDllYTNiNmU4YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv cGFyc2VyL3BhcnNlX3V0aWxjbWQuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRp bGNtZC5jCkBAIC0xMDYsNiArMTA2LDcgQEAgdHlwZWRlZiBzdHJ1Y3QKIAlMaXN0CSAgICp2aWV3 czsJCQkvKiBDUkVBVEUgVklFVyBpdGVtcyAqLwogCUxpc3QJICAgKmluZGV4ZXM7CQkvKiBDUkVB VEUgSU5ERVggaXRlbXMgKi8KIAlMaXN0CSAgICp0cmlnZ2VyczsJCS8qIENSRUFURSBUUklHR0VS IGl0ZW1zICovCisJTGlzdAkgICAqdmFyaWFibGVzOwkJLyogQ1JFQVRFIFZBUklBQkxFIGl0ZW1z ICovCiAJTGlzdAkgICAqZ3JhbnRzOwkJCS8qIEdSQU5UIGl0ZW1zICovCiB9IENyZWF0ZVNjaGVt YVN0bXRDb250ZXh0OwogCkBAIC0zMTc4LDYgKzMxNzksNyBAQCB0cmFuc2Zvcm1DcmVhdGVTY2hl bWFTdG10KENyZWF0ZVNjaGVtYVN0bXQgKnN0bXQpCiAJY3h0LnZpZXdzID0gTklMOwogCWN4dC5p bmRleGVzID0gTklMOwogCWN4dC50cmlnZ2VycyA9IE5JTDsKKwljeHQudmFyaWFibGVzID0gTklM OwogCWN4dC5ncmFudHMgPSBOSUw7CiAKIAkvKgpAQCAtMzI0Myw2ICszMjQ1LDE0IEBAIHRyYW5z Zm9ybUNyZWF0ZVNjaGVtYVN0bXQoQ3JlYXRlU2NoZW1hU3RtdCAqc3RtdCkKIAkJCQl9CiAJCQkJ YnJlYWs7CiAKKwkJCWNhc2UgVF9DcmVhdGVTY2hlbWFWYXJTdG10OgorCQkJCXsKKwkJCQkJQ3Jl YXRlU2NoZW1hVmFyU3RtdCAqZWxwID0gKENyZWF0ZVNjaGVtYVZhclN0bXQgKikgZWxlbWVudDsK KworCQkJCQlzZXRTY2hlbWFOYW1lKGN4dC5zY2hlbWFuYW1lLCAmZWxwLT52YXJpYWJsZS0+c2No ZW1hbmFtZSk7CisJCQkJCWN4dC52YXJpYWJsZXMgPSBsYXBwZW5kKGN4dC52YXJpYWJsZXMsIGVs ZW1lbnQpOworCQkJCX0KKwogCQkJY2FzZSBUX0dyYW50U3RtdDoKIAkJCQljeHQuZ3JhbnRzID0g bGFwcGVuZChjeHQuZ3JhbnRzLCBlbGVtZW50KTsKIAkJCQlicmVhazsKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3Jld3JpdGUvcmV3cml0ZUhhbmRsZXIuYyBiL3NyYy9iYWNrZW5kL3Jld3JpdGUv cmV3cml0ZUhhbmRsZXIuYwppbmRleCAzMmUzNzk4OTcyLi45YjBkODRhNWE1IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9yZXdyaXRlL3Jld3JpdGVIYW5kbGVyLmMKKysrIGIvc3JjL2JhY2tlbmQv cmV3cml0ZS9yZXdyaXRlSGFuZGxlci5jCkBAIC0zMzM3LDcgKzMzMzcsNyBAQCBSZXdyaXRlUXVl cnkoUXVlcnkgKnBhcnNldHJlZSwgTGlzdCAqcmV3cml0ZV9ldmVudHMpCiAJCQkJCQkJCQlydF9l bnRyeV9yZWxhdGlvbiwKIAkJCQkJCQkJCXBhcnNldHJlZS0+cmVzdWx0UmVsYXRpb24sIE5VTEwp OwogCQl9Ci0JCWVsc2UgaWYgKGV2ZW50ID09IENNRF9ERUxFVEUpCisJCWVsc2UgaWYgKGV2ZW50 ID09IENNRF9ERUxFVEUgfHwgZXZlbnQgPT0gQ01EX0xFVCkKIAkJewogCQkJLyogTm90aGluZyB0 byBkbyBoZXJlICovCiAJCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5LmMg Yi9zcmMvYmFja2VuZC90Y29wL3BxdWVyeS5jCmluZGV4IDY2Y2M1YzM1YzYuLjM0ZGRiNzlhM2Qg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5LmMKKysrIGIvc3JjL2JhY2tlbmQv dGNvcC9wcXVlcnkuYwpAQCAtMTkzLDYgKzE5MywxMCBAQCBQcm9jZXNzUXVlcnkoUGxhbm5lZFN0 bXQgKnBsYW4sCiAJCQkJCQkgIkRFTEVURSAiIFVJTlQ2NF9GT1JNQVQsCiAJCQkJCQkgcXVlcnlE ZXNjLT5lc3RhdGUtPmVzX3Byb2Nlc3NlZCk7CiAJCQkJYnJlYWs7CisJCQljYXNlIENNRF9MRVQ6 CisJCQkJc25wcmludGYoY29tcGxldGlvblRhZywgQ09NUExFVElPTl9UQUdfQlVGU0laRSwKKwkJ CQkJCSAiTEVUICIpOworCQkJCWJyZWFrOwogCQkJZGVmYXVsdDoKIAkJCQlzdHJjcHkoY29tcGxl dGlvblRhZywgIj8/PyIpOwogCQkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdGNv cC91dGlsaXR5LmMgYi9zcmMvYmFja2VuZC90Y29wL3V0aWxpdHkuYwppbmRleCAzYWJlN2Q2MTU1 Li4yN2EyMWM0OGRhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90Y29wL3V0aWxpdHkuYworKysg Yi9zcmMvYmFja2VuZC90Y29wL3V0aWxpdHkuYwpAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUg ImNvbW1hbmRzL3Byb2NsYW5nLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvcHVibGljYXRpb25jbWRz LmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvc2NoZW1hY21kcy5oIgorI2luY2x1ZGUgImNvbW1hbmRz L3NjaGVtYXZhci5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3NlY2xhYmVsLmgiCiAjaW5jbHVkZSAi Y29tbWFuZHMvc2VxdWVuY2UuaCIKICNpbmNsdWRlICJjb21tYW5kcy9zdWJzY3JpcHRpb25jbWRz LmgiCkBAIC0xMTIsNiArMTEzLDcgQEAgQ29tbWFuZElzUmVhZE9ubHkoUGxhbm5lZFN0bXQgKnBz dG10KQogCQljYXNlIENNRF9ERUxFVEU6CiAJCQlyZXR1cm4gZmFsc2U7CiAJCWNhc2UgQ01EX1VU SUxJVFk6CisJCWNhc2UgQ01EX0xFVDoKIAkJCS8qIEZvciBub3csIHRyZWF0IGFsbCB1dGlsaXR5 IGNvbW1hbmRzIGFzIHJlYWQvd3JpdGUgKi8KIAkJCXJldHVybiBmYWxzZTsKIAkJZGVmYXVsdDoK QEAgLTE3Nyw2ICsxNzksNyBAQCBjaGVja194YWN0X3JlYWRvbmx5KE5vZGUgKnBhcnNldHJlZSkK IAkJY2FzZSBUX0NyZWF0ZVNjaGVtYVN0bXQ6CiAJCWNhc2UgVF9DcmVhdGVTZXFTdG10OgogCQlj YXNlIFRfQ3JlYXRlU3RtdDoKKwkJY2FzZSBUX0NyZWF0ZVNjaGVtYVZhclN0bXQ6CiAJCWNhc2Ug VF9DcmVhdGVUYWJsZUFzU3RtdDoKIAkJY2FzZSBUX1JlZnJlc2hNYXRWaWV3U3RtdDoKIAkJY2Fz ZSBUX0NyZWF0ZVRhYmxlU3BhY2VTdG10OgpAQCAtMTQ3NCw2ICsxNDc3LDEwIEBAIFByb2Nlc3NV dGlsaXR5U2xvdyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJYWRkcmVzcyA9IEFsdGVyU2VxdWVu Y2UocHN0YXRlLCAoQWx0ZXJTZXFTdG10ICopIHBhcnNldHJlZSk7CiAJCQkJYnJlYWs7CiAKKwkJ CWNhc2UgVF9DcmVhdGVTY2hlbWFWYXJTdG10OgorCQkJCWFkZHJlc3MgPSBEZWZpbmVTY2hlbWFW YXJpYWJsZShwc3RhdGUsIChDcmVhdGVTY2hlbWFWYXJTdG10ICopIHBhcnNldHJlZSk7CisJCQkJ YnJlYWs7CisKIAkJCWNhc2UgVF9DcmVhdGVUYWJsZUFzU3RtdDoKIAkJCQlhZGRyZXNzID0gRXhl Y0NyZWF0ZVRhYmxlQXMoKENyZWF0ZVRhYmxlQXNTdG10ICopIHBhcnNldHJlZSwKIAkJCQkJCQkJ CQkJcXVlcnlTdHJpbmcsIHBhcmFtcywgcXVlcnlFbnYsCkBAIC0yMDk1LDYgKzIxMDIsMTAgQEAg Q3JlYXRlQ29tbWFuZFRhZyhOb2RlICpwYXJzZXRyZWUpCiAJCQl0YWcgPSAiU0VMRUNUIjsKIAkJ CWJyZWFrOwogCisJCWNhc2UgVF9MZXRTdG10OgorCQkJdGFnID0gIkxFVCI7CisJCQlicmVhazsK KwogCQkJLyogdXRpbGl0eSBzdGF0ZW1lbnRzIC0tLSBzYW1lIHdoZXRoZXIgcmF3IG9yIGNvb2tl ZCAqLwogCQljYXNlIFRfVHJhbnNhY3Rpb25TdG10OgogCQkJewpAQCAtMjI1OSw2ICsyMjcwLDkg QEAgQ3JlYXRlQ29tbWFuZFRhZyhOb2RlICpwYXJzZXRyZWUpCiAJCQkJY2FzZSBPQkpFQ1RfSU5E RVg6CiAJCQkJCXRhZyA9ICJEUk9QIElOREVYIjsKIAkJCQkJYnJlYWs7CisJCQkJY2FzZSBPQkpF Q1RfVkFSSUFCTEU6CisJCQkJCXRhZyA9ICJEUk9QIFZBUklBQkxFIjsKKwkJCQkJYnJlYWs7CiAJ CQkJY2FzZSBPQkpFQ1RfVFlQRToKIAkJCQkJdGFnID0gIkRST1AgVFlQRSI7CiAJCQkJCWJyZWFr OwpAQCAtMjUxMyw2ICsyNTI3LDEwIEBAIENyZWF0ZUNvbW1hbmRUYWcoTm9kZSAqcGFyc2V0cmVl KQogCQkJdGFnID0gIkFMVEVSIFNFUVVFTkNFIjsKIAkJCWJyZWFrOwogCisJCWNhc2UgVF9DcmVh dGVTY2hlbWFWYXJTdG10OgorCQkJdGFnID0gIkNSRUFURSBWQVJJQUJMRSI7CisJCQlicmVhazsK KwogCQljYXNlIFRfRG9TdG10OgogCQkJdGFnID0gIkRPIjsKIAkJCWJyZWFrOwpAQCAtMjYzMCw2 ICsyNjQ4LDkgQEAgQ3JlYXRlQ29tbWFuZFRhZyhOb2RlICpwYXJzZXRyZWUpCiAJCQkJY2FzZSBE SVNDQVJEX1NFUVVFTkNFUzoKIAkJCQkJdGFnID0gIkRJU0NBUkQgU0VRVUVOQ0VTIjsKIAkJCQkJ YnJlYWs7CisJCQkJY2FzZSBESVNDQVJEX1ZBUklBQkxFUzoKKwkJCQkJdGFnID0gIkRJU0NBUkQg VkFSSUFCTEVTIjsKKwkJCQkJYnJlYWs7CiAJCQkJZGVmYXVsdDoKIAkJCQkJdGFnID0gIj8/PyI7 CiAJCQl9CkBAIC0yODM0LDYgKzI4NTUsOSBAQCBDcmVhdGVDb21tYW5kVGFnKE5vZGUgKnBhcnNl dHJlZSkKIAkJCQkJY2FzZSBDTURfREVMRVRFOgogCQkJCQkJdGFnID0gIkRFTEVURSI7CiAJCQkJ CQlicmVhazsKKwkJCQkJY2FzZSBDTURfTEVUOgorCQkJCQkJdGFnID0gIkxFVCI7CisJCQkJCQli cmVhazsKIAkJCQkJY2FzZSBDTURfVVRJTElUWToKIAkJCQkJCXRhZyA9IENyZWF0ZUNvbW1hbmRU YWcoc3RtdC0+dXRpbGl0eVN0bXQpOwogCQkJCQkJYnJlYWs7CkBAIC0yOTUyLDYgKzI5NzYsMTAg QEAgR2V0Q29tbWFuZExvZ0xldmVsKE5vZGUgKnBhcnNldHJlZSkKIAkJCQlsZXYgPSBMT0dTVE1U X0FMTDsKIAkJCWJyZWFrOwogCisJCWNhc2UgVF9MZXRTdG10OgorCQkJbGV2ID0gTE9HU1RNVF9B TEw7CisJCQlicmVhazsKKwogCQkJLyogdXRpbGl0eSBzdGF0ZW1lbnRzIC0tLSBzYW1lIHdoZXRo ZXIgcmF3IG9yIGNvb2tlZCAqLwogCQljYXNlIFRfVHJhbnNhY3Rpb25TdG10OgogCQkJbGV2ID0g TE9HU1RNVF9BTEw7CkBAIC0zNDA1LDYgKzM0MzMsNyBAQCBHZXRDb21tYW5kTG9nTGV2ZWwoTm9k ZSAqcGFyc2V0cmVlKQogCQkJCXN3aXRjaCAoc3RtdC0+Y29tbWFuZFR5cGUpCiAJCQkJewogCQkJ CQljYXNlIENNRF9TRUxFQ1Q6CisJCQkJCWNhc2UgQ01EX0xFVDoKIAkJCQkJCWxldiA9IExPR1NU TVRfQUxMOwogCQkJCQkJYnJlYWs7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC9hY2wuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9hY2wuYwppbmRleCAwY2ZjMjk3YjY1Li5m Y2Q2OTU4MzZhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvYWNsLmMKKysrIGIv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L2FjbC5jCkBAIC04MDgsNiArODA4LDEwIEBAIGFjbGRlZmF1 bHQoT2JqZWN0VHlwZSBvYmp0eXBlLCBPaWQgb3duZXJJZCkKIAkJCXdvcmxkX2RlZmF1bHQgPSBB Q0xfVVNBR0U7CiAJCQlvd25lcl9kZWZhdWx0ID0gQUNMX0FMTF9SSUdIVFNfVFlQRTsKIAkJCWJy ZWFrOworCQljYXNlIE9CSkVDVF9WQVJJQUJMRToKKwkJCXdvcmxkX2RlZmF1bHQgPSBBQ0xfTk9f UklHSFRTOworCQkJb3duZXJfZGVmYXVsdCA9IEFDTF9BTExfUklHSFRTX1ZBUklBQkxFOworCQkJ YnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIG9ianR5cGU6 ICVkIiwgKGludCkgb2JqdHlwZSk7CiAJCQl3b3JsZF9kZWZhdWx0ID0gQUNMX05PX1JJR0hUUzsJ Lyoga2VlcCBjb21waWxlciBxdWlldCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L3J1bGV1dGlscy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCmluZGV4 IGM1ZjVhMWNhM2YuLmJhNTkyYmU0YWUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC9ydWxldXRpbHMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKQEAg LTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKICNpbmNsdWRlICJj b21tYW5kcy9kZWZyZW0uaCIKICNpbmNsdWRlICJjb21tYW5kcy90YWJsZXNwYWNlLmgiCisjaW5j bHVkZSAiY29tbWFuZHMvc2NoZW1hdmFyLmgiCiAjaW5jbHVkZSAiY29tbW9uL2tleXdvcmRzLmgi CiAjaW5jbHVkZSAiZXhlY3V0b3Ivc3BpLmgiCiAjaW5jbHVkZSAiZnVuY2FwaS5oIgpAQCAtMzc5 LDYgKzM4MCw3IEBAIHN0YXRpYyB2b2lkIGdldF91cGRhdGVfcXVlcnlfdGFyZ2V0bGlzdF9kZWYo UXVlcnkgKnF1ZXJ5LCBMaXN0ICp0YXJnZXRMaXN0LAogCQkJCQkJCQlkZXBhcnNlX2NvbnRleHQg KmNvbnRleHQsCiAJCQkJCQkJCVJhbmdlVGJsRW50cnkgKnJ0ZSk7CiBzdGF0aWMgdm9pZCBnZXRf ZGVsZXRlX3F1ZXJ5X2RlZihRdWVyeSAqcXVlcnksIGRlcGFyc2VfY29udGV4dCAqY29udGV4dCk7 CitzdGF0aWMgdm9pZCBnZXRfbGV0X3F1ZXJ5X2RlZihRdWVyeSAqcXVlcnksIGRlcGFyc2VfY29u dGV4dCAqY29udGV4dCk7CiBzdGF0aWMgdm9pZCBnZXRfdXRpbGl0eV9xdWVyeV9kZWYoUXVlcnkg KnF1ZXJ5LCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQpOwogc3RhdGljIHZvaWQgZ2V0X2Jhc2lj X3NlbGVjdF9xdWVyeShRdWVyeSAqcXVlcnksIGRlcGFyc2VfY29udGV4dCAqY29udGV4dCwKIAkJ CQkJICAgVHVwbGVEZXNjIHJlc3VsdERlc2MpOwpAQCAtNDkyNiw2ICs0OTI4LDEwIEBAIGdldF9x dWVyeV9kZWYoUXVlcnkgKnF1ZXJ5LCBTdHJpbmdJbmZvIGJ1ZiwgTGlzdCAqcGFyZW50bmFtZXNw YWNlLAogCQkJZ2V0X2RlbGV0ZV9xdWVyeV9kZWYocXVlcnksICZjb250ZXh0KTsKIAkJCWJyZWFr OwogCisJCWNhc2UgQ01EX0xFVDoKKwkJCWdldF9sZXRfcXVlcnlfZGVmKHF1ZXJ5LCAmY29udGV4 dCk7CisJCQlicmVhazsKKwogCQljYXNlIENNRF9OT1RISU5HOgogCQkJYXBwZW5kU3RyaW5nSW5m b1N0cmluZyhidWYsICJOT1RISU5HIik7CiAJCQlicmVhazsKQEAgLTYxMzQsNiArNjE0MCw1OCBA QCBnZXRfaW5zZXJ0X3F1ZXJ5X2RlZihRdWVyeSAqcXVlcnksIGRlcGFyc2VfY29udGV4dCAqY29u dGV4dCkKIAl9CiB9CiAKKy8qIC0tLS0tLS0tLS0KKyAqIGdldF9sZXRfcXVlcnlfZGVmCQkJLSBQ YXJzZSBiYWNrIGFuIExFVCBwYXJzZXRyZWUKKyAqIC0tLS0tLS0tLS0KKyAqLworc3RhdGljIHZv aWQKK2dldF9sZXRfcXVlcnlfZGVmKFF1ZXJ5ICpxdWVyeSwgZGVwYXJzZV9jb250ZXh0ICpjb250 ZXh0KQoreworCVN0cmluZ0luZm8JYnVmID0gY29udGV4dC0+YnVmOworCVJhbmdlVGJsRW50cnkg KnNlbGVjdF9ydGUgPSBOVUxMOworCVJhbmdlVGJsRW50cnkgKnJ0ZTsKKwlMaXN0Q2VsbCAgICps OworCisJLyoKKwkgKiBJZiBpdCdzIGFuIElOU0VSVCAuLi4gU0VMRUNUIG9yIG11bHRpLXJvdyBW QUxVRVMsIHRoZXJlIHdpbGwgYmUgYQorCSAqIHNpbmdsZSBSVEUgZm9yIHRoZSBTRUxFQ1Qgb3Ig VkFMVUVTLiAgUGxhaW4gVkFMVUVTIGhhcyBuZWl0aGVyLgorCSAqLworCWZvcmVhY2gobCwgcXVl cnktPnJ0YWJsZSkKKwl7CisJCXJ0ZSA9IChSYW5nZVRibEVudHJ5ICopIGxmaXJzdChsKTsKKwor CQlpZiAocnRlLT5ydGVraW5kID09IFJURV9TVUJRVUVSWSkKKwkJeworCQkJaWYgKHNlbGVjdF9y dGUpCisJCQkJZWxvZyhFUlJPUiwgInRvbyBtYW55IHN1YnF1ZXJ5IFJURXMgaW4gSU5TRVJUIik7 CisJCQlzZWxlY3RfcnRlID0gcnRlOworCQl9CisJfQorCisJLyoKKwkgKiBTdGFydCB0aGUgcXVl cnkgd2l0aCBJTlNFUlQgSU5UTyByZWxuYW1lCisJICovCisJcnRlID0gcnRfZmV0Y2gocXVlcnkt PnJlc3VsdFJlbGF0aW9uLCBxdWVyeS0+cnRhYmxlKTsKKwlBc3NlcnQocnRlLT5ydGVraW5kID09 IFJURV9SRUxBVElPTik7CisKKwlpZiAoUFJFVFRZX0lOREVOVChjb250ZXh0KSkKKwl7CisJCWNv bnRleHQtPmluZGVudExldmVsICs9IFBSRVRUWUlOREVOVF9TVEQ7CisJCWFwcGVuZFN0cmluZ0lu Zm9DaGFyKGJ1ZiwgJyAnKTsKKwl9CisJYXBwZW5kU3RyaW5nSW5mbyhidWYsICJMRVQgJXMgIiwK KwkJCQkJIGdlbmVyYXRlX3JlbGF0aW9uX25hbWUocnRlLT5yZWxpZCwgTklMKSk7CisKKwlhcHBl bmRTdHJpbmdJbmZvKGJ1ZiwgIiA9ICIpOworCisJaWYgKHNlbGVjdF9ydGUpCisJeworCQkvKiBB ZGQgdGhlIFNFTEVDVCAqLworCQlnZXRfcXVlcnlfZGVmKHNlbGVjdF9ydGUtPnN1YnF1ZXJ5LCBi dWYsIE5JTCwgTlVMTCwKKwkJCQkJICBjb250ZXh0LT5wcmV0dHlGbGFncywgY29udGV4dC0+d3Jh cENvbHVtbiwKKwkJCQkJICBjb250ZXh0LT5pbmRlbnRMZXZlbCk7CisJfQorfQogCiAvKiAtLS0t LS0tLS0tCiAgKiBnZXRfdXBkYXRlX3F1ZXJ5X2RlZgkJCS0gUGFyc2UgYmFjayBhbiBVUERBVEUg cGFyc2V0cmVlCkBAIC03MjA4LDYgKzcyNjYsMTMgQEAgZ2V0X3BhcmFtZXRlcihQYXJhbSAqcGFy YW0sIGRlcGFyc2VfY29udGV4dCAqY29udGV4dCkKIAlkZXBhcnNlX25hbWVzcGFjZSAqZHBuczsK IAlMaXN0Q2VsbCAgICphbmNlc3Rvcl9jZWxsOwogCisJaWYgKHBhcmFtLT5wYXJhbWtpbmQgPT0g UEFSQU1fU0NIRU1BX1ZBUklBQkxFKQorCXsKKwkJYXBwZW5kU3RyaW5nSW5mbyhjb250ZXh0LT5i dWYsICIlcyIsIGdldF9zY2hlbWF2YXJfbmFtZShwYXJhbS0+cGFyYW1pZCkpOworCisJCXJldHVy bjsKKwl9CisKIAkvKgogCSAqIElmIGl0J3MgYSBQQVJBTV9FWEVDIHBhcmFtZXRlciwgdHJ5IHRv IGxvY2F0ZSB0aGUgZXhwcmVzc2lvbiBmcm9tIHdoaWNoCiAJICogdGhlIHBhcmFtZXRlciB3YXMg Y29tcHV0ZWQuICBOb3RlIHRoYXQgZmFpbGluZyB0byBmaW5kIGEgcmVmZXJlbnQgaXNuJ3QKZGlm ZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9jb21tYW5kLmMgYi9zcmMvYmluL3BzcWwvY29tbWFuZC5j CmluZGV4IDM1NjAzMTg3NDkuLmFkMDAzMGMwZGQgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC9j b21tYW5kLmMKKysrIGIvc3JjL2Jpbi9wc3FsL2NvbW1hbmQuYwpAQCAtNzk0LDYgKzc5NCw3IEBA IGV4ZWNfY29tbWFuZF9kKFBzcWxTY2FuU3RhdGUgc2Nhbl9zdGF0ZSwgYm9vbCBhY3RpdmVfYnJh bmNoLCBjb25zdCBjaGFyICpjbWQpCiAJCQljYXNlICdpJzoKIAkJCWNhc2UgJ3MnOgogCQkJY2Fz ZSAnRSc6CisJCQljYXNlICdWJzoKIAkJCQlzdWNjZXNzID0gbGlzdFRhYmxlcygmY21kWzFdLCBw YXR0ZXJuLCBzaG93X3ZlcmJvc2UsIHNob3dfc3lzdGVtKTsKIAkJCQlicmVhazsKIAkJCWNhc2Ug J3InOgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMgYi9zcmMvYmluL3BzcWwv ZGVzY3JpYmUuYwppbmRleCA0NjZhNzgwMDRiLi5jMjcyZGUyYmFhIDEwMDY0NAotLS0gYS9zcmMv YmluL3BzcWwvZGVzY3JpYmUuYworKysgYi9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYwpAQCAtMTY4 Myw2ICsxNjgzLDQyIEBAIGRlc2NyaWJlT25lVGFibGVEZXRhaWxzKGNvbnN0IGNoYXIgKnNjaGVt YW5hbWUsCiAJCXJldHZhbCA9IHRydWU7CiAJCWdvdG8gZXJyb3JfcmV0dXJuOwkJLyogbm90IGFu IGVycm9yLCBqdXN0IHJldHVybiBlYXJseSAqLwogCX0KKwllbHNlIGlmICh0YWJsZWluZm8ucmVs a2luZCA9PSBSRUxLSU5EX1ZBUklBQkxFKQorCXsKKwkJUEdyZXN1bHQgICAqcmVzID0gTlVMTDsK KwkJcHJpbnRRdWVyeU9wdCBteW9wdCA9IHBzZXQucG9wdDsKKworCQlwcmludGZQUUV4cEJ1ZmZl cigmYnVmLAorCQkJCQkJCSAgIlNFTEVDVCBwZ19jYXRhbG9nLmZvcm1hdF90eXBlKHJlbG9mdHlw ZSwgTlVMTCkgQVMgXCIlc1wiXG4iCisJCQkJCQkJICAiRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNz XG4iCisJCQkJCQkJICAiV0hFUkUgb2lkID0gJyVzJzsiLAorCQkJCQkJCSAgZ2V0dGV4dF9ub29w KCJUeXBlIiksCisJCQkJCQkJICBvaWQpOworCisJCXJlcyA9IFBTUUxleGVjKGJ1Zi5kYXRhKTsK KwkJaWYgKCFyZXMpCisJCQlnb3RvIGVycm9yX3JldHVybjsKKworCQkvKiBEaWQgd2UgZ2V0IGFu eXRoaW5nPyAqLworCQlpZiAoUFFudHVwbGVzKHJlcykgPT0gMCkKKwkJeworCQkJaWYgKCFwc2V0 LnF1aWV0KQorCQkJCXBzcWxfZXJyb3IoIkRpZCBub3QgZmluZCBhbnkgdmFyaWFibGUgd2l0aCBP SUQgJXMuXG4iLCBvaWQpOworCQkJZ290byBlcnJvcl9yZXR1cm47CisJCX0KKworCQlwcmludGZQ UUV4cEJ1ZmZlcigmdGl0bGUsIF8oIlNjaGVtYSB2YXJpYWJsZSBcIiVzLiVzXCIiKSwKKwkJCQkJ CSAgc2NoZW1hbmFtZSwgcmVsYXRpb25uYW1lKTsKKworCQlteW9wdC50aXRsZSA9IHRpdGxlLmRh dGE7CisKKwkJcHJpbnRRdWVyeShyZXMsICZteW9wdCwgcHNldC5xdWVyeUZvdXQsIGZhbHNlLCBw c2V0LmxvZ2ZpbGUpOworCisJCVBRY2xlYXIocmVzKTsKKworCQlyZXR2YWwgPSB0cnVlOworCQln b3RvIGVycm9yX3JldHVybjsJCS8qIG5vdCBhbiBlcnJvciwganVzdCByZXR1cm4gZWFybHkgKi8K Kwl9CiAKIAkvKgogCSAqIEdldCBjb2x1bW4gaW5mbwpAQCAtMzM2NSw2ICszNDAxLDcgQEAgbGlz dERiUm9sZVNldHRpbmdzKGNvbnN0IGNoYXIgKnBhdHRlcm4sIGNvbnN0IGNoYXIgKnBhdHRlcm4y KQogICogbSAtIG1hdGVyaWFsaXplZCB2aWV3cwogICogcyAtIHNlcXVlbmNlcwogICogRSAtIGZv cmVpZ24gdGFibGUgKE5vdGU6IGRpZmZlcmVudCBmcm9tICdmJywgdGhlIHJlbGtpbmQgdmFsdWUp CisgKiBWIC0gc2NoZW1hIHZhcmlhYmxlCiAgKiAoYW55IG9yZGVyIG9mIHRoZSBhYm92ZSBpcyBm aW5lKQogICovCiBib29sCkBAIC0zMzc2LDYgKzM0MTMsNyBAQCBsaXN0VGFibGVzKGNvbnN0IGNo YXIgKnRhYnR5cGVzLCBjb25zdCBjaGFyICpwYXR0ZXJuLCBib29sIHZlcmJvc2UsIGJvb2wgc2hv d1N5cwogCWJvb2wJCXNob3dNYXRWaWV3cyA9IHN0cmNocih0YWJ0eXBlcywgJ20nKSAhPSBOVUxM OwogCWJvb2wJCXNob3dTZXEgPSBzdHJjaHIodGFidHlwZXMsICdzJykgIT0gTlVMTDsKIAlib29s CQlzaG93Rm9yZWlnbiA9IHN0cmNocih0YWJ0eXBlcywgJ0UnKSAhPSBOVUxMOworCWJvb2wJCXNo b3dWYXJpYWJsZXMgPSBzdHJjaHIodGFidHlwZXMsICdWJykgIT0gTlVMTDsKIAogCVBRRXhwQnVm ZmVyRGF0YSBidWY7CiAJUEdyZXN1bHQgICAqcmVzOwpAQCAtMzM4Myw4ICszNDIxLDggQEAgbGlz dFRhYmxlcyhjb25zdCBjaGFyICp0YWJ0eXBlcywgY29uc3QgY2hhciAqcGF0dGVybiwgYm9vbCB2 ZXJib3NlLCBib29sIHNob3dTeXMKIAlzdGF0aWMgY29uc3QgYm9vbCB0cmFuc2xhdGVfY29sdW1u c1tdID0ge2ZhbHNlLCBmYWxzZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2V9Owog CiAJLyogSWYgdGFidHlwZXMgaXMgZW1wdHksIHdlIGRlZmF1bHQgdG8gXGR0dm1zRSAoYnV0IHNl ZSBhbHNvIGNvbW1hbmQuYykgKi8KLQlpZiAoIShzaG93VGFibGVzIHx8IHNob3dJbmRleGVzIHx8 IHNob3dWaWV3cyB8fCBzaG93TWF0Vmlld3MgfHwgc2hvd1NlcSB8fCBzaG93Rm9yZWlnbikpCi0J CXNob3dUYWJsZXMgPSBzaG93Vmlld3MgPSBzaG93TWF0Vmlld3MgPSBzaG93U2VxID0gc2hvd0Zv cmVpZ24gPSB0cnVlOworCWlmICghKHNob3dUYWJsZXMgfHwgc2hvd0luZGV4ZXMgfHwgc2hvd1Zp ZXdzIHx8IHNob3dNYXRWaWV3cyB8fCBzaG93U2VxIHx8IHNob3dGb3JlaWduIHx8IHNob3dWYXJp YWJsZXMpKQorCQlzaG93VGFibGVzID0gc2hvd1ZpZXdzID0gc2hvd01hdFZpZXdzID0gc2hvd1Nl cSA9IHNob3dGb3JlaWduID0gc2hvd1ZhcmlhYmxlcyA9IHRydWU7CiAKIAlpbml0UFFFeHBCdWZm ZXIoJmJ1Zik7CiAKQEAgLTM0MDUsNiArMzQ0Myw3IEBAIGxpc3RUYWJsZXMoY29uc3QgY2hhciAq dGFidHlwZXMsIGNvbnN0IGNoYXIgKnBhdHRlcm4sIGJvb2wgdmVyYm9zZSwgYm9vbCBzaG93U3lz CiAJCQkJCSAgIiBXSEVOICIgQ3BwQXNTdHJpbmcyKFJFTEtJTkRfRk9SRUlHTl9UQUJMRSkgIiBU SEVOICclcyciCiAJCQkJCSAgIiBXSEVOICIgQ3BwQXNTdHJpbmcyKFJFTEtJTkRfUEFSVElUSU9O RURfVEFCTEUpICIgVEhFTiAnJXMnIgogCQkJCQkgICIgV0hFTiAiIENwcEFzU3RyaW5nMihSRUxL SU5EX1BBUlRJVElPTkVEX0lOREVYKSAiIFRIRU4gJyVzJyIKKwkJCQkJICAiIFdIRU4gIiBDcHBB c1N0cmluZzIoUkVMS0lORF9WQVJJQUJMRSkgIiBUSEVOICclcyciCiAJCQkJCSAgIiBFTkQgYXMg XCIlc1wiLFxuIgogCQkJCQkgICIgIHBnX2NhdGFsb2cucGdfZ2V0X3VzZXJieWlkKGMucmVsb3du ZXIpIGFzIFwiJXNcIiIsCiAJCQkJCSAgZ2V0dGV4dF9ub29wKCJTY2hlbWEiKSwKQEAgLTM0MTgs NiArMzQ1Nyw3IEBAIGxpc3RUYWJsZXMoY29uc3QgY2hhciAqdGFidHlwZXMsIGNvbnN0IGNoYXIg KnBhdHRlcm4sIGJvb2wgdmVyYm9zZSwgYm9vbCBzaG93U3lzCiAJCQkJCSAgZ2V0dGV4dF9ub29w KCJmb3JlaWduIHRhYmxlIiksCiAJCQkJCSAgZ2V0dGV4dF9ub29wKCJ0YWJsZSIpLAkvKiBwYXJ0 aXRpb25lZCB0YWJsZSAqLwogCQkJCQkgIGdldHRleHRfbm9vcCgiaW5kZXgiKSwJLyogcGFydGl0 aW9uZWQgaW5kZXggKi8KKwkJCQkJICBnZXR0ZXh0X25vb3AoInNjaGVtYSB2YXJpYWJsZSIpLAog CQkJCQkgIGdldHRleHRfbm9vcCgiVHlwZSIpLAogCQkJCQkgIGdldHRleHRfbm9vcCgiT3duZXIi KSk7CiAKQEAgLTM0NzEsNiArMzUxMSw4IEBAIGxpc3RUYWJsZXMoY29uc3QgY2hhciAqdGFidHlw ZXMsIGNvbnN0IGNoYXIgKnBhdHRlcm4sIGJvb2wgdmVyYm9zZSwgYm9vbCBzaG93U3lzCiAJCWFw cGVuZFBRRXhwQnVmZmVyU3RyKCZidWYsICIncycsIik7IC8qIHdhcyBSRUxLSU5EX1NQRUNJQUwg Ki8KIAlpZiAoc2hvd0ZvcmVpZ24pCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZidWYsIENwcEFz U3RyaW5nMihSRUxLSU5EX0ZPUkVJR05fVEFCTEUpICIsIik7CisJaWYgKHNob3dWYXJpYWJsZXMp CisJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZidWYsIENwcEFzU3RyaW5nMihSRUxLSU5EX1ZBUklB QkxFKSAiLCIpOwogCiAJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmJ1ZiwgIicnIik7CS8qIGR1bW15 ICovCiAJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmJ1ZiwgIilcbiIpOwpkaWZmIC0tZ2l0IGEvc3Jj L2Jpbi9wc3FsL2Rlc2NyaWJlLmggYi9zcmMvYmluL3BzcWwvZGVzY3JpYmUuaAppbmRleCBhNGNj NWVmYWUwLi5jNWYxMDdkODE0IDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvZGVzY3JpYmUuaAor KysgYi9zcmMvYmluL3BzcWwvZGVzY3JpYmUuaApAQCAtNjAsNyArNjAsNyBAQCBleHRlcm4gYm9v bCBsaXN0VFNUZW1wbGF0ZXMoY29uc3QgY2hhciAqcGF0dGVybiwgYm9vbCB2ZXJib3NlKTsKIC8q IFxsICovCiBleHRlcm4gYm9vbCBsaXN0QWxsRGJzKGNvbnN0IGNoYXIgKnBhdHRlcm4sIGJvb2wg dmVyYm9zZSk7CiAKLS8qIFxkdCwgXGRpLCBcZHMsIFxkUywgZXRjLiAqLworLyogXGR0LCBcZGks IFxkcywgXGRTLCBcZHZhciBldGMuICovCiBleHRlcm4gYm9vbCBsaXN0VGFibGVzKGNvbnN0IGNo YXIgKnRhYnR5cGVzLCBjb25zdCBjaGFyICpwYXR0ZXJuLCBib29sIHZlcmJvc2UsIGJvb2wgc2hv d1N5c3RlbSk7CiAKIC8qIFxkRCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL2hlbHAuYyBi L3NyYy9iaW4vcHNxbC9oZWxwLmMKaW5kZXggNzAyZTc0MmFmNC4uMmRhNTBmNzI5MCAxMDA2NDQK LS0tIGEvc3JjL2Jpbi9wc3FsL2hlbHAuYworKysgYi9zcmMvYmluL3BzcWwvaGVscC5jCkBAIC0x NjcsNyArMTY3LDcgQEAgc2xhc2hVc2FnZSh1bnNpZ25lZCBzaG9ydCBpbnQgcGFnZXIpCiAJICog VXNlICJwc3FsIC0taGVscD1jb21tYW5kcyB8IHdjIiB0byBjb3VudCBjb3JyZWN0bHkuICBJdCdz IG9rYXkgdG8gY291bnQKIAkgKiB0aGUgVVNFX1JFQURMSU5FIGxpbmUgZXZlbiBpbiBidWlsZHMg d2l0aG91dCB0aGF0LgogCSAqLwotCW91dHB1dCA9IFBhZ2VPdXRwdXQoMTI1LCBwYWdlciA/ICYo cHNldC5wb3B0LnRvcHQpIDogTlVMTCk7CisJb3V0cHV0ID0gUGFnZU91dHB1dCgxMjYsIHBhZ2Vy ID8gJihwc2V0LnBvcHQudG9wdCkgOiBOVUxMKTsKIAogCWZwcmludGYob3V0cHV0LCBfKCJHZW5l cmFsXG4iKSk7CiAJZnByaW50ZihvdXRwdXQsIF8oIiAgXFxjb3B5cmlnaHQgICAgICAgICAgICAg c2hvdyBQb3N0Z3JlU1FMIHVzYWdlIGFuZCBkaXN0cmlidXRpb24gdGVybXNcbiIpKTsKQEAgLTI1 Nyw2ICsyNTcsNyBAQCBzbGFzaFVzYWdlKHVuc2lnbmVkIHNob3J0IGludCBwYWdlcikKIAlmcHJp bnRmKG91dHB1dCwgXygiICBcXGRUW1MrXSBbUEFUVEVSTl0gICAgICBsaXN0IGRhdGEgdHlwZXNc biIpKTsKIAlmcHJpbnRmKG91dHB1dCwgXygiICBcXGR1W1MrXSBbUEFUVEVSTl0gICAgICBsaXN0 IHJvbGVzXG4iKSk7CiAJZnByaW50ZihvdXRwdXQsIF8oIiAgXFxkdltTK10gW1BBVFRFUk5dICAg ICAgbGlzdCB2aWV3c1xuIikpOworCWZwcmludGYob3V0cHV0LCBfKCIgIFxcZFZbUytdIFtQQVRU RVJOXSAgICAgIGxpc3Qgc2NoZW1hIHZhcmlhYmxlc1xuIikpOwogCWZwcmludGYob3V0cHV0LCBf KCIgIFxcZHhbK10gIFtQQVRURVJOXSAgICAgIGxpc3QgZXh0ZW5zaW9uc1xuIikpOwogCWZwcmlu dGYob3V0cHV0LCBfKCIgIFxcZHkgICAgIFtQQVRURVJOXSAgICAgIGxpc3QgZXZlbnQgdHJpZ2dl cnNcbiIpKTsKIAlmcHJpbnRmKG91dHB1dCwgXygiICBcXGxbK10gICBbUEFUVEVSTl0gICAgICBs aXN0IGRhdGFiYXNlc1xuIikpOwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0 ZS5jIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5jCmluZGV4IDhiYzRhMTk0YTUuLmJhNWY2 YjA4MzIgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuYworKysgYi9zcmMv YmluL3BzcWwvdGFiLWNvbXBsZXRlLmMKQEAgLTY3OSw2ICs2NzksMjAgQEAgc3RhdGljIGNvbnN0 IFNjaGVtYVF1ZXJ5IFF1ZXJ5X2Zvcl9saXN0X29mX3N0YXRpc3RpY3MgPSB7CiAJTlVMTAogfTsK IAorc3RhdGljIGNvbnN0IFNjaGVtYVF1ZXJ5IFF1ZXJ5X2Zvcl9saXN0X29mX3ZhcmlhYmxlcyA9 IHsKKwkvKiBjYXRuYW1lICovCisJInBnX2NhdGFsb2cucGdfY2xhc3MgYyIsCisJLyogc2VsY29u ZGl0aW9uICovCisJImMucmVsa2luZCBJTiAoJ1YnKSIsCisJLyogdmlzY29uZGl0aW9uICovCisJ InBnX2NhdGFsb2cucGdfdGFibGVfaXNfdmlzaWJsZShjLm9pZCkiLAorCS8qIG5hbWVzcGFjZSAq LworCSJjLnJlbG5hbWVzcGFjZSIsCisJLyogcmVzdWx0ICovCisJInBnX2NhdGFsb2cucXVvdGVf aWRlbnQoYy5yZWxuYW1lKSIsCisJLyogcXVhbHJlc3VsdCAqLworCU5VTEwKK307CiAKIC8qCiAg KiBRdWVyaWVzIHRvIGdldCBsaXN0cyBvZiBuYW1lcyBvZiB2YXJpb3VzIGtpbmRzIG9mIHRoaW5n cywgcG9zc2libHkKQEAgLTExMDgsNiArMTEyMiw3IEBAIHN0YXRpYyBjb25zdCBwZ3NxbF90aGlu Z190IHdvcmRzX2FmdGVyX2NyZWF0ZVtdID0gewogCQkJCQkJCQkJCQkJCQkJCSAqIFRBQkxFIC4u LiAqLwogCXsiVVNFUiIsIFF1ZXJ5X2Zvcl9saXN0X29mX3JvbGVzICIgVU5JT04gU0VMRUNUICdN QVBQSU5HIEZPUicifSwKIAl7IlVTRVIgTUFQUElORyBGT1IiLCBOVUxMLCBOVUxMfSwKKwl7IlZB UklBQkxFIiwgTlVMTCwgJlF1ZXJ5X2Zvcl9saXN0X29mX3ZhcmlhYmxlc30sCiAJeyJWSUVXIiwg TlVMTCwgJlF1ZXJ5X2Zvcl9saXN0X29mX3ZpZXdzfSwKIAl7TlVMTH0JCQkJCQkvKiBlbmQgb2Yg bGlzdCAqLwogfTsKQEAgLTE0NjAsNyArMTQ3NSw3IEBAIHBzcWxfY29tcGxldGlvbihjb25zdCBj aGFyICp0ZXh0LCBpbnQgc3RhcnQsIGludCBlbmQpCiAJCSJBQk9SVCIsICJBTFRFUiIsICJBTkFM WVpFIiwgIkJFR0lOIiwgIkNBTEwiLCAiQ0hFQ0tQT0lOVCIsICJDTE9TRSIsICJDTFVTVEVSIiwK IAkJIkNPTU1FTlQiLCAiQ09NTUlUIiwgIkNPUFkiLCAiQ1JFQVRFIiwgIkRFQUxMT0NBVEUiLCAi REVDTEFSRSIsCiAJCSJERUxFVEUgRlJPTSIsICJESVNDQVJEIiwgIkRPIiwgIkRST1AiLCAiRU5E IiwgIkVYRUNVVEUiLCAiRVhQTEFJTiIsCi0JCSJGRVRDSCIsICJHUkFOVCIsICJJTVBPUlQiLCAi SU5TRVJUIiwgIkxJU1RFTiIsICJMT0FEIiwgIkxPQ0siLAorCQkiRkVUQ0giLCAiR1JBTlQiLCAi SU1QT1JUIiwgIklOU0VSVCIsICJMRVQiLCAiTElTVEVOIiwgIkxPQUQiLCAiTE9DSyIsCiAJCSJN T1ZFIiwgIk5PVElGWSIsICJQUkVQQVJFIiwKIAkJIlJFQVNTSUdOIiwgIlJFRlJFU0ggTUFURVJJ QUxJWkVEIFZJRVciLCAiUkVJTkRFWCIsICJSRUxFQVNFIiwKIAkJIlJFU0VUIiwgIlJFVk9LRSIs ICJST0xMQkFDSyIsCkBAIC0xNDc5LDcgKzE0OTQsNyBAQCBwc3FsX2NvbXBsZXRpb24oY29uc3Qg Y2hhciAqdGV4dCwgaW50IHN0YXJ0LCBpbnQgZW5kKQogCQkiXFxkRiIsICJcXGRGZCIsICJcXGRG cCIsICJcXGRGdCIsICJcXGRnIiwgIlxcZGkiLCAiXFxkbCIsICJcXGRMIiwKIAkJIlxcZG0iLCAi XFxkbiIsICJcXGRvIiwgIlxcZE8iLCAiXFxkcCIsCiAJCSJcXGRyZHMiLCAiXFxkUnMiLCAiXFxk UnAiLCAiXFxkcyIsICJcXGRTIiwKLQkJIlxcZHQiLCAiXFxkVCIsICJcXGR2IiwgIlxcZHUiLCAi XFxkeCIsICJcXGR5IiwKKwkJIlxcZHQiLCAiXFxkVCIsICJcXGR2IiwgIlxcZHUiLCAiXFxkeCIs ICJcXGR5IiwgIlxcZHZhciIsCiAJCSJcXGUiLCAiXFxlY2hvIiwgIlxcZWYiLCAiXFxlbGlmIiwg IlxcZWxzZSIsICJcXGVuY29kaW5nIiwKIAkJIlxcZW5kaWYiLCAiXFxlcnJ2ZXJib3NlIiwgIlxc ZXYiLAogCQkiXFxmIiwKQEAgLTI2ODQsNiArMjY5OSwxNCBAQCBwc3FsX2NvbXBsZXRpb24oY29u c3QgY2hhciAqdGV4dCwgaW50IHN0YXJ0LCBpbnQgZW5kKQogCWVsc2UgaWYgKE1hdGNoZXM0KCJD UkVBVEUiLCAiUk9MRXxVU0VSfEdST1VQIiwgTWF0Y2hBbnksICJJTiIpKQogCQlDT01QTEVURV9X SVRIX0xJU1QyKCJHUk9VUCIsICJST0xFIik7CiAKKy8qIENSRUFURSBWQVJJQUJMRSAtLS0gaXMg YWxsb3dlZCBpbnNpZGUgQ1JFQVRFIFNDSEVNQSwgc28gdXNlIFRhaWxNYXRjaGVzICovCisJLyog Q29tcGxldGUgQ1JFQVRFIFZBUklBQkxFIDxuYW1lPiB3aXRoIEFTICovCisJZWxzZSBpZiAoVGFp bE1hdGNoZXMzKCJDUkVBVEUiLCAiVkFSSUFCTEUiLCBNYXRjaEFueSkpCisJCUNPTVBMRVRFX1dJ VEhfQ09OU1QoIkFTIik7CisJLyogQ29tcGxldGUgQ1JFQVRFIFZBUklBQkxFIDxuYW1lPiB3aXRo IEFTIHR5cGVzKi8KKwllbHNlIGlmIChUYWlsTWF0Y2hlczQoIkNSRUFURSIsICJWQVJJQUJMRSIs IE1hdGNoQW55LCAiQVMiKSkKKwkJQ09NUExFVEVfV0lUSF9TQ0hFTUFfUVVFUlkoUXVlcnlfZm9y X2xpc3Rfb2ZfZGF0YXR5cGVzLCBOVUxMKTsKKwogLyogQ1JFQVRFIFZJRVcgLS0tIGlzIGFsbG93 ZWQgaW5zaWRlIENSRUFURSBTQ0hFTUEsIHNvIHVzZSBUYWlsTWF0Y2hlcyAqLwogCS8qIENvbXBs ZXRlIENSRUFURSBWSUVXIDxuYW1lPiB3aXRoIEFTICovCiAJZWxzZSBpZiAoVGFpbE1hdGNoZXMz KCJDUkVBVEUiLCAiVklFVyIsIE1hdGNoQW55KSkKQEAgLTI4MzksNiArMjg2MiwxMiBAQCBwc3Fs X2NvbXBsZXRpb24oY29uc3QgY2hhciAqdGV4dCwgaW50IHN0YXJ0LCBpbnQgZW5kKQogCWVsc2Ug aWYgKE1hdGNoZXM1KCJEUk9QIiwgIlJVTEUiLCBNYXRjaEFueSwgIk9OIiwgTWF0Y2hBbnkpKQog CQlDT01QTEVURV9XSVRIX0xJU1QyKCJDQVNDQURFIiwgIlJFU1RSSUNUIik7CiAKKwkvKiBEUk9Q IFZBUklBQkxFICovCisJZWxzZSBpZiAoTWF0Y2hlczIoIkRST1AiLCAiVkFSSUFCTEUiKSkKKwkJ Q09NUExFVEVfV0lUSF9TQ0hFTUFfUVVFUlkoUXVlcnlfZm9yX2xpc3Rfb2ZfdmFyaWFibGVzLCBO VUxMKTsKKwllbHNlIGlmIChNYXRjaGVzMygiRFJPUCIsICJWQVJJQUJMRSIsIE1hdGNoQW55KSkK KwkJQ09NUExFVEVfV0lUSF9MSVNUMigiQ0FTQ0FERSIsICJSRVNUUklDVCIpOworCiAvKiBFWEVD VVRFICovCiAJZWxzZSBpZiAoTWF0Y2hlczEoIkVYRUNVVEUiKSkKIAkJQ09NUExFVEVfV0lUSF9R VUVSWShRdWVyeV9mb3JfbGlzdF9vZl9wcmVwYXJlZF9zdGF0ZW1lbnRzKTsKQEAgLTI4NDksMTQg KzI4NzgsMTQgQEAgcHNxbF9jb21wbGV0aW9uKGNvbnN0IGNoYXIgKnRleHQsIGludCBzdGFydCwg aW50IGVuZCkKIAkgKiBDb21wbGV0ZSBFWFBMQUlOIFtBTkFMWVpFXSBbVkVSQk9TRV0gd2l0aCBs aXN0IG9mIEVYUExBSU4tYWJsZSBjb21tYW5kcwogCSAqLwogCWVsc2UgaWYgKE1hdGNoZXMxKCJF WFBMQUlOIikpCi0JCUNPTVBMRVRFX1dJVEhfTElTVDcoIlNFTEVDVCIsICJJTlNFUlQiLCAiREVM RVRFIiwgIlVQREFURSIsICJERUNMQVJFIiwKLQkJCQkJCQkiQU5BTFlaRSIsICJWRVJCT1NFIik7 CisJCUNPTVBMRVRFX1dJVEhfTElTVDgoIlNFTEVDVCIsICJJTlNFUlQiLCAiREVMRVRFIiwgIlVQ REFURSIsICJERUNMQVJFIiwKKwkJCQkJCQkiQU5BTFlaRSIsICJWRVJCT1NFIiwgIkxFVCIpOwog CWVsc2UgaWYgKE1hdGNoZXMyKCJFWFBMQUlOIiwgIkFOQUxZWkUiKSkKLQkJQ09NUExFVEVfV0lU SF9MSVNUNigiU0VMRUNUIiwgIklOU0VSVCIsICJERUxFVEUiLCAiVVBEQVRFIiwgIkRFQ0xBUkUi LAotCQkJCQkJCSJWRVJCT1NFIik7CisJCUNPTVBMRVRFX1dJVEhfTElTVDcoIlNFTEVDVCIsICJJ TlNFUlQiLCAiREVMRVRFIiwgIlVQREFURSIsICJERUNMQVJFIiwKKwkJCQkJCQkiVkVSQk9TRSIs ICJMRVQiKTsKIAllbHNlIGlmIChNYXRjaGVzMigiRVhQTEFJTiIsICJWRVJCT1NFIikgfHwKIAkJ CSBNYXRjaGVzMygiRVhQTEFJTiIsICJBTkFMWVpFIiwgIlZFUkJPU0UiKSkKLQkJQ09NUExFVEVf V0lUSF9MSVNUNSgiU0VMRUNUIiwgIklOU0VSVCIsICJERUxFVEUiLCAiVVBEQVRFIiwgIkRFQ0xB UkUiKTsKKwkJQ09NUExFVEVfV0lUSF9MSVNUNigiU0VMRUNUIiwgIklOU0VSVCIsICJERUxFVEUi LCAiVVBEQVRFIiwgIkRFQ0xBUkUiLCAiTEVUIik7CiAKIC8qIEZFVENIICYmIE1PVkUgKi8KIAkv KiBDb21wbGV0ZSBGRVRDSCB3aXRoIG9uZSBvZiBGT1JXQVJELCBCQUNLV0FSRCwgUkVMQVRJVkUg Ki8KQEAgLTI5NjUsNiArMjk5NCw3IEBAIHBzcWxfY29tcGxldGlvbihjb25zdCBjaGFyICp0ZXh0 LCBpbnQgc3RhcnQsIGludCBlbmQpCiAJCQkJCQkJCQkgICAiIFVOSU9OIFNFTEVDVCAnQUxMIFJP VVRJTkVTIElOIFNDSEVNQSciCiAJCQkJCQkJCQkgICAiIFVOSU9OIFNFTEVDVCAnQUxMIFNFUVVF TkNFUyBJTiBTQ0hFTUEnIgogCQkJCQkJCQkJICAgIiBVTklPTiBTRUxFQ1QgJ0FMTCBUQUJMRVMg SU4gU0NIRU1BJyIKKwkJCQkJCQkJCSAgICIgVU5JT04gU0VMRUNUICdBTEwgVkFSSUFCTEVTIElO IFNDSEVNQSciCiAJCQkJCQkJCQkgICAiIFVOSU9OIFNFTEVDVCAnREFUQUJBU0UnIgogCQkJCQkJ CQkJICAgIiBVTklPTiBTRUxFQ1QgJ0RPTUFJTiciCiAJCQkJCQkJCQkgICAiIFVOSU9OIFNFTEVD VCAnRk9SRUlHTiBEQVRBIFdSQVBQRVInIgpAQCAtMjk3OCwxNCArMzAwOCwxNiBAQCBwc3FsX2Nv bXBsZXRpb24oY29uc3QgY2hhciAqdGV4dCwgaW50IHN0YXJ0LCBpbnQgZW5kKQogCQkJCQkJCQkJ ICAgIiBVTklPTiBTRUxFQ1QgJ1NFUVVFTkNFJyIKIAkJCQkJCQkJCSAgICIgVU5JT04gU0VMRUNU ICdUQUJMRSciCiAJCQkJCQkJCQkgICAiIFVOSU9OIFNFTEVDVCAnVEFCTEVTUEFDRSciCi0JCQkJ CQkJCQkgICAiIFVOSU9OIFNFTEVDVCAnVFlQRSciKTsKKwkJCQkJCQkJCSAgICIgVU5JT04gU0VM RUNUICdUWVBFJyIKKwkJCQkJCQkJCSAgICIgVU5JT04gU0VMRUNUICdWQVJJQUJMRSciKTsKIAl9 CiAJZWxzZSBpZiAoVGFpbE1hdGNoZXM0KCJHUkFOVHxSRVZPS0UiLCBNYXRjaEFueSwgIk9OIiwg IkFMTCIpKQotCQlDT01QTEVURV9XSVRIX0xJU1Q1KCJGVU5DVElPTlMgSU4gU0NIRU1BIiwKKwkJ Q09NUExFVEVfV0lUSF9MSVNUNigiRlVOQ1RJT05TIElOIFNDSEVNQSIsCiAJCQkJCQkJIlBST0NF RFVSRVMgSU4gU0NIRU1BIiwKIAkJCQkJCQkiUk9VVElORVMgSU4gU0NIRU1BIiwKIAkJCQkJCQki U0VRVUVOQ0VTIElOIFNDSEVNQSIsCi0JCQkJCQkJIlRBQkxFUyBJTiBTQ0hFTUEiKTsKKwkJCQkJ CQkiVEFCTEVTIElOIFNDSEVNQSIsCisJCQkJCQkJIlZBUklBQkxFUyBJTiBTQ0hFTUEiKTsKIAll bHNlIGlmIChUYWlsTWF0Y2hlczQoIkdSQU5UfFJFVk9LRSIsIE1hdGNoQW55LCAiT04iLCAiRk9S RUlHTiIpKQogCQlDT01QTEVURV9XSVRIX0xJU1QyKCJEQVRBIFdSQVBQRVIiLCAiU0VSVkVSIik7 CiAKQEAgLTMwMTUsNiArMzA0Nyw4IEBAIHBzcWxfY29tcGxldGlvbihjb25zdCBjaGFyICp0ZXh0 LCBpbnQgc3RhcnQsIGludCBlbmQpCiAJCQlDT01QTEVURV9XSVRIX1NDSEVNQV9RVUVSWShRdWVy eV9mb3JfbGlzdF9vZl9zZXF1ZW5jZXMsIE5VTEwpOwogCQllbHNlIGlmIChUYWlsTWF0Y2hlczEo IlRBQkxFIikpCiAJCQlDT01QTEVURV9XSVRIX1NDSEVNQV9RVUVSWShRdWVyeV9mb3JfbGlzdF9v Zl90c3ZtZiwgTlVMTCk7CisJCWVsc2UgaWYgKFRhaWxNYXRjaGVzMSgiVkFSSUFCTEUiKSkKKwkJ CUNPTVBMRVRFX1dJVEhfU0NIRU1BX1FVRVJZKFF1ZXJ5X2Zvcl9saXN0X29mX3ZhcmlhYmxlcywg TlVMTCk7CiAJCWVsc2UgaWYgKFRhaWxNYXRjaGVzMSgiVEFCTEVTUEFDRSIpKQogCQkJQ09NUExF VEVfV0lUSF9RVUVSWShRdWVyeV9mb3JfbGlzdF9vZl90YWJsZXNwYWNlcyk7CiAJCWVsc2UgaWYg KFRhaWxNYXRjaGVzMSgiVFlQRSIpKQpAQCAtMzE3MSw3ICszMjA1LDcgQEAgcHNxbF9jb21wbGV0 aW9uKGNvbnN0IGNoYXIgKnRleHQsIGludCBzdGFydCwgaW50IGVuZCkKIAogLyogUFJFUEFSRSB4 eCBBUyAqLwogCWVsc2UgaWYgKE1hdGNoZXMzKCJQUkVQQVJFIiwgTWF0Y2hBbnksICJBUyIpKQot CQlDT01QTEVURV9XSVRIX0xJU1Q0KCJTRUxFQ1QiLCAiVVBEQVRFIiwgIklOU0VSVCIsICJERUxF VEUgRlJPTSIpOworCQlDT01QTEVURV9XSVRIX0xJU1Q1KCJTRUxFQ1QiLCAiVVBEQVRFIiwgIklO U0VSVCIsICJERUxFVEUgRlJPTSIsICJMRVQiKTsKIAogLyoKICAqIFBSRVBBUkUgVFJBTlNBQ1RJ T04gaXMgbWlzc2luZyBvbiBwdXJwb3NlLiBJdCdzIGludGVuZGVkIGZvciB0cmFuc2FjdGlvbgpA QCAtMzM5MCw2ICszNDI0LDE0IEBAIHBzcWxfY29tcGxldGlvbihjb25zdCBjaGFyICp0ZXh0LCBp bnQgc3RhcnQsIGludCBlbmQpCiAJZWxzZSBpZiAoVGFpbE1hdGNoZXM0KCJVUERBVEUiLCBNYXRj aEFueSwgIlNFVCIsIE1hdGNoQW55KSkKIAkJQ09NUExFVEVfV0lUSF9DT05TVCgiPSIpOwogCisv KiBMRVQgLS0tIGNhbiBiZSBpbnNpZGUgRVhQTEFJTiwgUFJFUEFSRSBldGMgKi8KKwkvKiBJZiBw cmV2LiB3b3JkIGlzIExFVCBzdWdnZXN0IGEgbGlzdCBvZiB2YXJpYWJsZXMgKi8KKwllbHNlIGlm IChUYWlsTWF0Y2hlczEoIkxFVCIpKQorCQlDT01QTEVURV9XSVRIX1NDSEVNQV9RVUVSWShRdWVy eV9mb3JfbGlzdF9vZl92YXJpYWJsZXMsIE5VTEwpOworCS8qIENvbXBsZXRlIExFVCA8dmFyaWFi bGU+IHdpdGggIj0iICovCisJZWxzZSBpZiAoVGFpbE1hdGNoZXMyKCJMRVQiLCBNYXRjaEFueSkp CisJCUNPTVBMRVRFX1dJVEhfQ09OU1QoIj0iKTsKKwogLyogVVNFUiBNQVBQSU5HICovCiAJZWxz ZSBpZiAoTWF0Y2hlczMoIkFMVEVSfENSRUFURXxEUk9QIiwgIlVTRVIiLCAiTUFQUElORyIpKQog CQlDT01QTEVURV9XSVRIX0NPTlNUKCJGT1IiKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2Nh dGFsb2cvcGdfY2xhc3MuaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfY2xhc3MuaAppbmRleCAy NmIxODY2YzY5Li5jNTE0NmZjMTM4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X2NsYXNzLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19jbGFzcy5oCkBAIC0xNjcsNiAr MTY3LDcgQEAgREVTQ1IoIiIpOwogI2RlZmluZQkJICBSRUxLSU5EX0ZPUkVJR05fVEFCTEUgICAn ZicJLyogZm9yZWlnbiB0YWJsZSAqLwogI2RlZmluZQkJICBSRUxLSU5EX1BBUlRJVElPTkVEX1RB QkxFICdwJyAvKiBwYXJ0aXRpb25lZCB0YWJsZSAqLwogI2RlZmluZQkJICBSRUxLSU5EX1BBUlRJ VElPTkVEX0lOREVYICdJJyAvKiBwYXJ0aXRpb25lZCBpbmRleCAqLworI2RlZmluZQkJICBSRUxL SU5EX1ZBUklBQkxFCQkgICdWJwkvKiBzY2hlbWEgdmFyaWFibGUgKi8KIAogI2RlZmluZQkJICBS RUxQRVJTSVNURU5DRV9QRVJNQU5FTlQJJ3AnIC8qIHJlZ3VsYXIgdGFibGUgKi8KICNkZWZpbmUJ CSAgUkVMUEVSU0lTVEVOQ0VfVU5MT0dHRUQJJ3UnIC8qIHVubG9nZ2VkIHBlcm1hbmVudCB0YWJs ZSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19kZWZhdWx0X2FjbC5oIGIv c3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19kZWZhdWx0X2FjbC5oCmluZGV4IDExYjMwNjAzN2QuLjEz MjMyZDdhNDMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfZGVmYXVsdF9hY2wu aAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2RlZmF1bHRfYWNsLmgKQEAgLTcxLDUgKzcx LDYgQEAgdHlwZWRlZiBGb3JtRGF0YV9wZ19kZWZhdWx0X2FjbCAqRm9ybV9wZ19kZWZhdWx0X2Fj bDsKICNkZWZpbmUgREVGQUNMT0JKX0ZVTkNUSU9OCQknZicgLyogZnVuY3Rpb24gKi8KICNkZWZp bmUgREVGQUNMT0JKX1RZUEUJCQknVCcgLyogdHlwZSAqLwogI2RlZmluZSBERUZBQ0xPQkpfTkFN RVNQQUNFCQknbicgLyogbmFtZXNwYWNlICovCisjZGVmaW5lIERFRkFDTE9CSl9WQVJJQUJMRQkJ J1YnIC8qIHZhcmlhYmxlICovCiAKICNlbmRpZgkJCQkJCQkvKiBQR19ERUZBVUxUX0FDTF9IICov CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuaCBiL3NyYy9pbmNsdWRl L2NhdGFsb2cvcGdfcHJvYy5oCmluZGV4IGYwMTY0OGM5NjEuLjYwMGQzZDU4NDkgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFs b2cvcGdfcHJvYy5oCkBAIC01NTMzLDYgKzU1MzMsMTIgQEAgREVTQ1IoImxpc3Qgb2YgZmlsZXMg aW4gdGhlIFdBTCBkaXJlY3RvcnkiKTsKIERBVEEoaW5zZXJ0IE9JRCA9IDUwMjggKCBzYXRpc2Zp ZXNfaGFzaF9wYXJ0aXRpb24gUEdOU1AgUEdVSUQgMTIgMSAwIDIyNzYgMCBmIGYgZiBmIGYgZiBp IHMgNCAwIDE2ICIyNiAyMyAyMyAyMjc2IiBfbnVsbF8gIntpLGksaSx2fSIgX251bGxfIF9udWxs XyBfbnVsbF8gc2F0aXNmaWVzX2hhc2hfcGFydGl0aW9uIF9udWxsXyBfbnVsbF8gX251bGxfICkp OwogREVTQ1IoImhhc2ggcGFydGl0aW9uIENIRUNLIGNvbnN0cmFpbnQiKTsKIAorLyogc2NoZW1h IHZhcmlhYmxlcyBmdW5jdGlvbiBpbnRlcmZhY2UgKi8KK0RBVEEoaW5zZXJ0IE9JRCA9IDYxMjIg KCBnZXRfc2NoZW1hX3ZhcmlhYmxlIFBHTlNQIFBHVUlEIDEyIDEgMCAwIDAgZiBmIGYgZiBmIGYg diByIDIgMCAyMjgzICIyMjA1IDIyODMiIF9udWxsXyBfbnVsbF8gX251bGxfIF9udWxsXyBfbnVs bF8gZ2V0X3NjaGVtYV92YXJpYWJsZSBfbnVsbF8gX251bGxfIF9udWxsXyApKTsKK0RFU0NSKCJy ZXR1cm5zIHZhbHVlIG9mIHNjaGVtYSB2YXJpYWJsZSIpOworREFUQShpbnNlcnQgT0lEID0gNjEy MyAoIHNldF9zY2hlbWFfdmFyaWFibGUgUEdOU1AgUEdVSUQgMTIgMSAwIDAgMCBmIGYgZiBmIGYg ZiB2IHIgMiAwIDIyNzggIjIyMDUgMjI4MyIgX251bGxfIF9udWxsXyBfbnVsbF8gX251bGxfIF9u dWxsXyBzZXRfc2NoZW1hX3ZhcmlhYmxlIF9udWxsXyBfbnVsbF8gX251bGxfICkpOworREVTQ1Io InJldHVybnMgdmFsdWUgb2Ygc2NoZW1hIHZhcmlhYmxlIik7CisKIC8qCiAgKiBTeW1ib2xpYyB2 YWx1ZXMgZm9yIHByb3ZvbGF0aWxlIGNvbHVtbjogdGhlc2UgaW5kaWNhdGUgd2hldGhlciB0aGUg cmVzdWx0CiAgKiBvZiBhIGZ1bmN0aW9uIGlzIGRlcGVuZGVudCAqb25seSogb24gdGhlIHZhbHVl cyBvZiBpdHMgZXhwbGljaXQgYXJndW1lbnRzLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29t bWFuZHMvc2NoZW1hdmFyLmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9zY2hlbWF2YXIuaApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi42ZjY1YjFmMWQzCi0tLSAvZGV2L251 bGwKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvc2NoZW1hdmFyLmgKQEAgLTAsMCArMSwzMSBA QAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogc2NoZW1hdmFyLmgKKyAqCSAgcHJvdG90eXBl cyBmb3Igc2NoZW1hdmFyLmMuCisgKgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIw MTgsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKiBQb3J0aW9ucyBDb3B5 cmlnaHQgKGMpIDE5OTQsIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQor ICoKKyAqIHNyYy9pbmNsdWRlL2NvbW1hbmRzL3NjaGVtYXZhci5oCisgKgorICotLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgKi8KKyNpZm5kZWYgU0NIRU1BVkFSX0gKKyNkZWZpbmUgU0NIRU1BVkFSX0gKKwor I2luY2x1ZGUgImNhdGFsb2cvb2JqZWN0YWRkcmVzcy5oIgorI2luY2x1ZGUgIm5vZGVzL3BhcnNl bm9kZXMuaCIKKyNpbmNsdWRlICJwYXJzZXIvcGFyc2Vfbm9kZS5oIgorCitleHRlcm4gT2JqZWN0 QWRkcmVzcyBEZWZpbmVTY2hlbWFWYXJpYWJsZShQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVNj aGVtYVZhclN0bXQgKnZhcik7CisKK2V4dGVybiB2b2lkIFJlc2V0U2NoZW1hVmFyaWFibGVzQ2Fj aGUodm9pZCk7CisKK2V4dGVybiBjaGFyICpnZXRfc2NoZW1hdmFyX25hbWUoT2lkIHZhcmlkKTsK KworZXh0ZXJuIHZvaWQgU2V0U2NoZW1hVmFyaWFibGUoT2lkIHZhcmlkLCBEYXR1bSB2YWx1ZSwg Ym9vbCBpc051bGwsIE9pZAl0eXBpZCwgaW50MzIgdHlwbW9kLCBpbnQxNiB0eXBsZW4sIGJvb2wg dHlwYnl2YWwpOworZXh0ZXJuIERhdHVtIEdldFNjaGVtYVZhcmlhYmxlKE9pZCB2YXJpZCwgYm9v bCAqaXNOdWxsLCBPaWQJdHlwaWQsIGludDMyIHR5cG1vZCwgaW50MTYgdHlwbGVuLCBib29sIHR5 cGJ5dmFsKTsKK2V4dGVybiB2b2lkIFNldFNjaGVtYVZhcmlhYmxlU2VjdXJlKE9pZCB2YXJpZCwg RGF0dW0gdmFsdWUsIGJvb2wgaXNOdWxsLCBPaWQJdHlwaWQsIGludDMyIHR5cG1vZCwgaW50MTYg dHlwbGVuLCBib29sIHR5cGJ5dmFsKTsKK2V4dGVybiBEYXR1bSBHZXRTY2hlbWFWYXJpYWJsZVNl Y3VyZShPaWQgdmFyaWQsIGJvb2wgKmlzTnVsbCwgT2lkCXR5cGlkLCBpbnQzMiB0eXBtb2QsIGlu dDE2IHR5cGxlbiwgYm9vbCB0eXBieXZhbCk7CisKKyNlbmRpZgpcIE5vIG5ld2xpbmUgYXQgZW5k IG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNFeHByLmggYi9z cmMvaW5jbHVkZS9leGVjdXRvci9leGVjRXhwci5oCmluZGV4IDExN2ZjODkyZjQuLmEyODJmMWU0 ZTAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNFeHByLmgKKysrIGIvc3Jj L2luY2x1ZGUvZXhlY3V0b3IvZXhlY0V4cHIuaApAQCAtMTM4LDYgKzEzOCw3IEBAIHR5cGVkZWYg ZW51bSBFeHByRXZhbE9wCiAJRUVPUF9QQVJBTV9FWEVDLAogCUVFT1BfUEFSQU1fRVhURVJOLAog CUVFT1BfUEFSQU1fQ0FMTEJBQ0ssCisJRUVPUF9QQVJBTV9TQ0hFTUFfVkFSSUFCTEUsCiAKIAkv KiByZXR1cm4gQ2FzZVRlc3RFeHByIHZhbHVlICovCiAJRUVPUF9DQVNFX1RFU1RWQUwsCkBAIC0z NDIsMTEgKzM0MywxNCBAQCB0eXBlZGVmIHN0cnVjdCBFeHByRXZhbFN0ZXAKIAkJCVR1cGxlRGVz YwlhcmdkZXNjOwogCQl9CQkJbnVsbHRlc3Rfcm93OwogCi0JCS8qIGZvciBFRU9QX1BBUkFNX0VY RUMvRVhURVJOICovCisJCS8qIGZvciBFRU9QX1BBUkFNX0VYRUMvRVhURVJOL1ZBUklBQkxFICov CiAJCXN0cnVjdAogCQl7Ci0JCQlpbnQJCQlwYXJhbWlkOwkvKiBudW1lcmljIElEIGZvciBwYXJh bWV0ZXIgKi8KLQkJCU9pZAkJCXBhcmFtdHlwZTsJLyogT0lEIG9mIHBhcmFtZXRlcidzIGRhdGF0 eXBlICovCisJCQlpbnQJCQlwYXJhbWlkOwkJLyogbnVtZXJpYyBJRCBmb3IgcGFyYW1ldGVyICov CisJCQlPaWQJCQlwYXJhbXR5cGU7CQkvKiBPSUQgb2YgcGFyYW1ldGVyJ3MgZGF0YXR5cGUgKi8K KwkJCWludDMyCQlwYXJhbXR5cG1vZDsJLyogdHlwbW9kIG9mIHBhcmFtIChub3QgdXNlZCB5ZXQp ICovCisJCQlpbnQxNgkJcGFyYW10eXBsZW47CS8qIGV4cGVjdGVkIGxlbmd0aCAqLworCQkJYm9v bAkJcGFyYW10eXBieXZhbDsJLyogaXMgcGFzc2VkIGJ5IHZhbHVlICovCiAJCX0JCQlwYXJhbTsK IAogCQkvKiBmb3IgRUVPUF9QQVJBTV9DQUxMQkFDSyAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvbm9kZXMvbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL25vZGVzLmgKaW5kZXggNzRiMDk0 YTljMy4uMmY0OTg2MDk5ZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvbm9kZXMuaAor KysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9ub2Rlcy5oCkBAIC0zNDQsNiArMzQ0LDcgQEAgdHlwZWRl ZiBlbnVtIE5vZGVUYWcKIAlUX0NyZWF0ZVRhYmxlQXNTdG10LAogCVRfQ3JlYXRlU2VxU3RtdCwK IAlUX0FsdGVyU2VxU3RtdCwKKwlUX0NyZWF0ZVNjaGVtYVZhclN0bXQsCiAJVF9WYXJpYWJsZVNl dFN0bXQsCiAJVF9WYXJpYWJsZVNob3dTdG10LAogCVRfRGlzY2FyZFN0bXQsCkBAIC00MTUsNiAr NDE2LDcgQEAgdHlwZWRlZiBlbnVtIE5vZGVUYWcKIAlUX0NyZWF0ZVN0YXRzU3RtdCwKIAlUX0Fs dGVyQ29sbGF0aW9uU3RtdCwKIAlUX0NhbGxTdG10LAorCVRfTGV0U3RtdCwKIAogCS8qCiAJICog VEFHUyBGT1IgUEFSU0UgVFJFRSBOT0RFUyAocGFyc2Vub2Rlcy5oKQpAQCAtNjU3LDYgKzY1OSw3 IEBAIHR5cGVkZWYgZW51bSBDbWRUeXBlCiAJQ01EX1VQREFURSwJCQkJCS8qIHVwZGF0ZSBzdG10 ICovCiAJQ01EX0lOU0VSVCwJCQkJCS8qIGluc2VydCBzdG10ICovCiAJQ01EX0RFTEVURSwKKwlD TURfTEVULAogCUNNRF9VVElMSVRZLAkJCQkvKiBjbWRzIGxpa2UgY3JlYXRlLCBkZXN0cm95LCBj b3B5LCB2YWN1dW0sCiAJCQkJCQkJCSAqIGV0Yy4gKi8KIAlDTURfTk9USElORwkJCQkJLyogZHVt bXkgY29tbWFuZCBmb3IgaW5zdGVhZCBub3RoaW5nIHJ1bGVzCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgK aW5kZXggNzZhNzNiMmEzNy4uN2VkNWM2MWY1ZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9k ZXMvcGFyc2Vub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaApAQCAt MTQ4Niw2ICsxNDg2LDE0IEBAIHR5cGVkZWYgc3RydWN0IFVwZGF0ZVN0bXQKIAlXaXRoQ2xhdXNl ICp3aXRoQ2xhdXNlOwkJLyogV0lUSCBjbGF1c2UgKi8KIH0gVXBkYXRlU3RtdDsKIAordHlwZWRl ZiBzdHJ1Y3QgTGV0U3RtdAoreworCU5vZGVUYWcJCXR5cGU7CisJUmFuZ2VWYXIgICAqdmFyaWFi bGU7CQkvKiByZWxhdGlvbiB0byBpbnNlcnQgaW50byAqLworCU5vZGUJICAgKnNlbGVjdFN0bXQ7 CQkvKiB0aGUgc291cmNlIFNFTEVDVC9WQUxVRVMsIG9yIE5VTEwgKi8KK30gTGV0U3RtdDsKKwor CiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgkJU2VsZWN0IFN0YXRlbWVudAogICoKQEAg LTE2NjMsNiArMTY3MSw3IEBAIHR5cGVkZWYgZW51bSBPYmplY3RUeXBlCiAJT0JKRUNUX1RTVEVN UExBVEUsCiAJT0JKRUNUX1RZUEUsCiAJT0JKRUNUX1VTRVJfTUFQUElORywKKwlPQkpFQ1RfVkFS SUFCTEUsCiAJT0JKRUNUX1ZJRVcKIH0gT2JqZWN0VHlwZTsKIApAQCAtMjQ3NSw2ICsyNDg0LDE4 IEBAIHR5cGVkZWYgc3RydWN0IEFsdGVyU2VxU3RtdAogCWJvb2wJCW1pc3Npbmdfb2s7CQkvKiBz a2lwIGVycm9yIGlmIGEgcm9sZSBpcyBtaXNzaW5nPyAqLwogfSBBbHRlclNlcVN0bXQ7CiAKKy8q IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCQlDcmVhdGUgVkFSSUFCTEUgU3RhdGVtZW50Cisg KiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KK3R5cGVkZWYgc3RydWN0IENyZWF0ZVNjaGVt YVZhclN0bXQKK3sKKwlOb2RlVGFnCQl0eXBlOworCVJhbmdlVmFyICAgKnZhcmlhYmxlOwkJLyog dGhlIHZhcmlhYmxlIHRvIGNyZWF0ZSAqLworCVR5cGVOYW1lICAgKnR5cGVOYW1lOwkJLyogdGhl IHZhcmlhYmxlIHR5cGUgKi8KKwlib29sCQlpZl9ub3RfZXhpc3RzOwkvKiBqdXN0IGRvIG5vdGhp bmcgaWYgaXQgYWxyZWFkeSBleGlzdHM/ICovCit9IENyZWF0ZVNjaGVtYVZhclN0bXQ7CisKIC8q IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqCQlDcmVhdGUge0FnZ3JlZ2F0ZXxPcGVyYXRvcnxU eXBlfSBTdGF0ZW1lbnQKICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTMyMDQsNyArMzIy NSw4IEBAIHR5cGVkZWYgZW51bSBEaXNjYXJkTW9kZQogCURJU0NBUkRfQUxMLAogCURJU0NBUkRf UExBTlMsCiAJRElTQ0FSRF9TRVFVRU5DRVMsCi0JRElTQ0FSRF9URU1QCisJRElTQ0FSRF9URU1Q LAorCURJU0NBUkRfVkFSSUFCTEVTCiB9IERpc2NhcmRNb2RlOwogCiB0eXBlZGVmIHN0cnVjdCBE aXNjYXJkU3RtdApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmggYi9z cmMvaW5jbHVkZS9ub2Rlcy9wcmltbm9kZXMuaAppbmRleCAxYjRiMGQ3NWFmLi5iMzY2NDcxOTQw IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wcmltbm9kZXMuaAorKysgYi9zcmMvaW5j bHVkZS9ub2Rlcy9wcmltbm9kZXMuaApAQCAtMjI5LDEzICsyMjksMTcgQEAgdHlwZWRlZiBzdHJ1 Y3QgQ29uc3QKICAqCQkJCW9mIHRoZSBgcGFyYW1pZCcgZmllbGQgY29udGFpbiB0aGUgU3ViTGlu aydzIHN1YkxpbmtJZCwgYW5kCiAgKgkJCQl0aGUgbG93LW9yZGVyIDE2IGJpdHMgY29udGFpbiB0 aGUgY29sdW1uIG51bWJlci4gIChUaGlzIHR5cGUKICAqCQkJCW9mIFBhcmFtIGlzIGFsc28gY29u dmVydGVkIHRvIFBBUkFNX0VYRUMgZHVyaW5nIHBsYW5uaW5nLikKKyAqCisgKgkJUEFSQU1fU0NI RU1BX1ZBUklBQkxFOiAgVGhlIHBhcmFtZXRlciBpcyBhIGFjY2VzcyB0byBzY2hlbWEgdmFyaWFi bGUKKyAqCQkJCXBhcmFtaWQgaG9sZHMgdmFyaWQuCiAgKi8KIHR5cGVkZWYgZW51bSBQYXJhbUtp bmQKIHsKIAlQQVJBTV9FWFRFUk4sCiAJUEFSQU1fRVhFQywKIAlQQVJBTV9TVUJMSU5LLAotCVBB UkFNX01VTFRJRVhQUgorCVBBUkFNX01VTFRJRVhQUiwKKwlQQVJBTV9TQ0hFTUFfVkFSSUFCTEUK IH0gUGFyYW1LaW5kOwogCiB0eXBlZGVmIHN0cnVjdCBQYXJhbQpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvcGFyc2VyL2t3bGlzdC5oIGIvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oCmluZGV4 IDI2YWY5NDRlMDMuLjM5NzFkNzQ3OGIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnNlci9r d2xpc3QuaAorKysgYi9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmgKQEAgLTIyOSw2ICsyMjks NyBAQCBQR19LRVlXT1JEKCJsZWFkaW5nIiwgTEVBRElORywgUkVTRVJWRURfS0VZV09SRCkKIFBH X0tFWVdPUkQoImxlYWtwcm9vZiIsIExFQUtQUk9PRiwgVU5SRVNFUlZFRF9LRVlXT1JEKQogUEdf S0VZV09SRCgibGVhc3QiLCBMRUFTVCwgQ09MX05BTUVfS0VZV09SRCkKIFBHX0tFWVdPUkQoImxl ZnQiLCBMRUZULCBUWVBFX0ZVTkNfTkFNRV9LRVlXT1JEKQorUEdfS0VZV09SRCgibGV0IiwgTEVU LCBVTlJFU0VSVkVEX0tFWVdPUkQpCiBQR19LRVlXT1JEKCJsZXZlbCIsIExFVkVMLCBVTlJFU0VS VkVEX0tFWVdPUkQpCiBQR19LRVlXT1JEKCJsaWtlIiwgTElLRSwgVFlQRV9GVU5DX05BTUVfS0VZ V09SRCkKIFBHX0tFWVdPUkQoImxpbWl0IiwgTElNSVQsIFJFU0VSVkVEX0tFWVdPUkQpCkBAIC00 MzAsNiArNDMxLDggQEAgUEdfS0VZV09SRCgidmFsaWRhdG9yIiwgVkFMSURBVE9SLCBVTlJFU0VS VkVEX0tFWVdPUkQpCiBQR19LRVlXT1JEKCJ2YWx1ZSIsIFZBTFVFX1AsIFVOUkVTRVJWRURfS0VZ V09SRCkKIFBHX0tFWVdPUkQoInZhbHVlcyIsIFZBTFVFUywgQ09MX05BTUVfS0VZV09SRCkKIFBH X0tFWVdPUkQoInZhcmNoYXIiLCBWQVJDSEFSLCBDT0xfTkFNRV9LRVlXT1JEKQorUEdfS0VZV09S RCgidmFyaWFibGUiLCBWQVJJQUJMRSwgVU5SRVNFUlZFRF9LRVlXT1JEKQorUEdfS0VZV09SRCgi dmFyaWFibGVzIiwgVkFSSUFCTEVTLCBVTlJFU0VSVkVEX0tFWVdPUkQpCiBQR19LRVlXT1JEKCJ2 YXJpYWRpYyIsIFZBUklBRElDLCBSRVNFUlZFRF9LRVlXT1JEKQogUEdfS0VZV09SRCgidmFyeWlu ZyIsIFZBUllJTkcsIFVOUkVTRVJWRURfS0VZV09SRCkKIFBHX0tFWVdPUkQoInZlcmJvc2UiLCBW RVJCT1NFLCBUWVBFX0ZVTkNfTkFNRV9LRVlXT1JEKQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv cGFyc2VyL3BhcnNlX25vZGUuaCBiL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ub2RlLmgKaW5k ZXggNGU5NmZhNzkwNy4uMThiYTIyMTE4MCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGFyc2Vy L3BhcnNlX25vZGUuaAorKysgYi9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2Vfbm9kZS5oCkBAIC0x MzQsNiArMTM0LDggQEAgdHlwZWRlZiBOb2RlICooKkNvZXJjZVBhcmFtSG9vaykgKFBhcnNlU3Rh dGUgKnBzdGF0ZSwgUGFyYW0gKnBhcmFtLAogICogdG8gcHJvY2VzcyB0aGVtIGxpa2UgVVBEQVRF LiAgKE5vdGUgdGhpcyBjYW4gY2hhbmdlIGludHJhLXN0YXRlbWVudCwgZm9yCiAgKiBjYXNlcyBs aWtlIElOU0VSVCBPTiBDT05GTElDVCBVUERBVEUuKQogICoKKyAqIHBfaXNfbGV0OiB0cnVlIHRv IHByb2Nlc3MgYXNzaWdubWVudCBleHByZXNzaW9ucyBsaWtlIExFVC4KKyAqCiAgKiBwX3dpbmRv d2RlZnM6IGxpc3Qgb2YgV2luZG93RGVmcyByZXByZXNlbnRpbmcgV0lORE9XIGFuZCBPVkVSIGNs YXVzZXMuCiAgKiBXZSBjb2xsZWN0IHRoZXNlIHdoaWxlIHRyYW5zZm9ybWluZyBleHByZXNzaW9u cyBhbmQgdGhlbiB0cmFuc2Zvcm0gdGhlbQogICogYWZ0ZXJ3YXJkcyAoc28gdGhhdCBhbnkgcmVz anVuayB0bGlzdCBpdGVtcyBuZWVkZWQgZm9yIHRoZSBzb3J0L2dyb3VwCkBAIC0xODMsNiArMTg1 LDcgQEAgc3RydWN0IFBhcnNlU3RhdGUKIAlSZWxhdGlvbglwX3RhcmdldF9yZWxhdGlvbjsJLyog SU5TRVJUL1VQREFURS9ERUxFVEUgdGFyZ2V0IHJlbCAqLwogCVJhbmdlVGJsRW50cnkgKnBfdGFy Z2V0X3JhbmdldGJsZW50cnk7CS8qIHRhcmdldCByZWwncyBSVEUgKi8KIAlib29sCQlwX2lzX2lu c2VydDsJLyogcHJvY2VzcyBhc3NpZ25tZW50IGxpa2UgSU5TRVJUIG5vdCBVUERBVEUgKi8KKwli b29sCQlwX2lzX2xldDsJCS8qIHByb2Nlc3MgYXNzaWdubWVudCBMRVQgc3RtdCAqLwogCUxpc3QJ ICAgKnBfd2luZG93ZGVmczsJLyogcmF3IHJlcHJlc2VudGF0aW9ucyBvZiB3aW5kb3cgY2xhdXNl cyAqLwogCVBhcnNlRXhwcktpbmQgcF9leHByX2tpbmQ7CS8qIHdoYXQga2luZCBvZiBleHByZXNz aW9uIHdlJ3JlIHBhcnNpbmcgKi8KIAlpbnQJCQlwX25leHRfcmVzbm87CS8qIG5leHQgdGFyZ2V0 bGlzdCByZXNubyB0byBhc3NpZ24gKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnNlci9w YXJzZV9yZWxhdGlvbi5oIGIvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX3JlbGF0aW9uLmgKaW5k ZXggYjk3OTJhY2RhZS4uNzYwYWFlZDlhOCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGFyc2Vy L3BhcnNlX3JlbGF0aW9uLmgKKysrIGIvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX3JlbGF0aW9u LmgKQEAgLTEyOSw0ICsxMjksNiBAQCBleHRlcm4gT2lkCWF0dG51bVR5cGVJZChSZWxhdGlvbiBy ZCwgaW50IGF0dGlkKTsKIGV4dGVybiBPaWQJYXR0bnVtQ29sbGF0aW9uSWQoUmVsYXRpb24gcmQs IGludCBhdHRpZCk7CiBleHRlcm4gYm9vbCBpc1F1ZXJ5VXNpbmdUZW1wUmVsYXRpb24oUXVlcnkg KnF1ZXJ5KTsKIAorZXh0ZXJuIE5vZGUgKnRvU2NoZW1hVmFyaWFibGUoUGFyc2VTdGF0ZSAqcHN0 YXRlLCBjaGFyICpuc3BuYW1lLCBjaGFyICp2YXJuYW1lLCBpbnQgbG9jYXRpb24pOworCiAjZW5k aWYJCQkJCQkJLyogUEFSU0VfUkVMQVRJT05fSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv dXRpbHMvYWNsLmggYi9zcmMvaW5jbHVkZS91dGlscy9hY2wuaAppbmRleCBmNGQ0YmU4ZDBkLi5k MDczN2E5ZTRiIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9hY2wuaAorKysgYi9zcmMv aW5jbHVkZS91dGlscy9hY2wuaApAQCAtMTY2LDYgKzE2Niw3IEBAIHR5cGVkZWYgQXJyYXlUeXBl IEFjbDsKICNkZWZpbmUgQUNMX0FMTF9SSUdIVFNfU0NIRU1BCQkoQUNMX1VTQUdFfEFDTF9DUkVB VEUpCiAjZGVmaW5lIEFDTF9BTExfUklHSFRTX1RBQkxFU1BBQ0UJKEFDTF9DUkVBVEUpCiAjZGVm aW5lIEFDTF9BTExfUklHSFRTX1RZUEUJCQkoQUNMX1VTQUdFKQorI2RlZmluZSBBQ0xfQUxMX1JJ R0hUU19WQVJJQUJMRQkJKEFDTF9TRUxFQ1R8QUNMX1VQREFURSkKIAogLyogb3BlcmF0aW9uIGNv ZGVzIGZvciBwZ18qX2FjbG1hc2sgKi8KIHR5cGVkZWYgZW51bQpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9zY2hlbWFfdmFyaWFibGVzLm91dCBiL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvc2NoZW1hX3ZhcmlhYmxlcy5vdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMC4uYWQ3MDBjMTVkOAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvc2NoZW1hX3ZhcmlhYmxlcy5vdXQKQEAgLTAsMCArMSwyMzYgQEAKK0NS RUFURSBWQVJJQUJMRSB2YXIxIEFTIGludGVnZXI7CitDUkVBVEUgVEVNUCBWQVJJQUJMRSB2YXIy IEFTIHRleHQ7CistLSBzaG91bGQgdG8gZmFpbAorQ1JFQVRFIFZBUklBQkxFIHZhcjIgQVMgcGdf Y2xhc3M7CitFUlJPUjogIENvbXBvc2l0ZSB0eXBlcyBhcmUgbm90IGFsbG93ZWQgYXMgdmFyaWFi bGUgdHlwZS4KK0RST1AgVkFSSUFCTEUgdmFyMSwgdmFyMjsKKy0tIGZ1bmN0aW9uYWwgaW50ZXJm YWNlLCBhdHRlbnRpb24gdHlwbW9kIGlzIG5vdCBzdG9yZWQKK0NSRUFURSBWQVJJQUJMRSB2YXIx IEFTIG51bWVyaWMoMTAsMSk7CitTRUxFQ1Qgc2V0X3NjaGVtYV92YXJpYWJsZSgndmFyMScsIDMz Myk7Cisgc2V0X3NjaGVtYV92YXJpYWJsZSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEg cm93KQorCitTRUxFQ1QgZ2V0X3NjaGVtYV92YXJpYWJsZSgndmFyMScsIG51bGw6Om51bWVyaWMp OworIGdldF9zY2hlbWFfdmFyaWFibGUgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAg ICAgICAgICAgMzMzCisoMSByb3cpCisKK1NFTEVDVCBzZXRfc2NoZW1hX3ZhcmlhYmxlKCd2YXIx JywgMzMzOjppbnRlZ2VyKTsKKyBzZXRfc2NoZW1hX3ZhcmlhYmxlIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBnZXRfc2NoZW1hX3ZhcmlhYmxlKCd2YXIxJywg bnVsbDo6bnVtZXJpYyk7CisgZ2V0X3NjaGVtYV92YXJpYWJsZSAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLQorICAgICAgICAgICAgICAgICAzMzMKKygxIHJvdykKKworU0VMRUNUIHNldF9zY2hlbWFf dmFyaWFibGUoJ3ZhcjEnLCAnMzMzLjU1Jzo6dGV4dCk7Cisgc2V0X3NjaGVtYV92YXJpYWJsZSAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgZ2V0X3NjaGVtYV92 YXJpYWJsZSgndmFyMScsIG51bGw6Om51bWVyaWMpOworIGdldF9zY2hlbWFfdmFyaWFibGUgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgMzMzLjU1CisoMSByb3cpCisKK1NF TEVDVCBnZXRfc2NoZW1hX3ZhcmlhYmxlKCd2YXIxJywgbnVsbDo6aW50KTsKKyBnZXRfc2NoZW1h X3ZhcmlhYmxlIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgIDMzNAor KDEgcm93KQorCitTRUxFQ1QgZ2V0X3NjaGVtYV92YXJpYWJsZSgndmFyMScsIG51bGw6OnRleHQp OworIGdldF9zY2hlbWFfdmFyaWFibGUgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAzMzMuNTUK KygxIHJvdykKKworLS0gYWNjZXNzIHJpZ2h0cyB0ZXN0CitDUkVBVEUgUk9MRSB2YXJfdGVzdF9y b2xlOworU0VUIFJPTEUgVE8gdmFyX3Rlc3Rfcm9sZTsKKy0tIHNob3VsZCB0byBmYWlsCitTRUxF Q1Qgc2V0X3NjaGVtYV92YXJpYWJsZSgndmFyMScsICcxMDAwJzo6dGV4dCk7CitFUlJPUjogIHBl cm1pc3Npb24gZGVuaWVkIGZvciBzY2hlbWEgdmFyaWFibGUgdmFyMQorU0VMRUNUIGdldF9zY2hl bWFfdmFyaWFibGUoJ3ZhcjEnLCBudWxsOjpudW1lcmljKTsKK0VSUk9SOiAgcGVybWlzc2lvbiBk ZW5pZWQgZm9yIHNjaGVtYSB2YXJpYWJsZSB2YXIxCitTRVQgUk9MRSBUTyBERUZBVUxUOworR1JB TlQgU0VMRUNUIE9OIFZBUklBQkxFIHZhcjEgVE8gdmFyX3Rlc3Rfcm9sZTsKK1NFVCBST0xFIFRP IHZhcl90ZXN0X3JvbGU7CistLSBzaG91bGQgdG8gZmFpbAorU0VMRUNUIHNldF9zY2hlbWFfdmFy aWFibGUoJ3ZhcjEnLCAnMTAwMCc6OnRleHQpOworRVJST1I6ICBwZXJtaXNzaW9uIGRlbmllZCBm b3Igc2NoZW1hIHZhcmlhYmxlIHZhcjEKKy0tIHNob3VsZCB0byB3b3JrCitTRUxFQ1QgZ2V0X3Nj aGVtYV92YXJpYWJsZSgndmFyMScsIG51bGw6Om51bWVyaWMpOworIGdldF9zY2hlbWFfdmFyaWFi bGUgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgMzMzLjU1CisoMSByb3cp CisKK1NFVCBST0xFIFRPIERFRkFVTFQ7CitHUkFOVCBVUERBVEUgT04gVkFSSUFCTEUgdmFyMSBU TyB2YXJfdGVzdF9yb2xlOworU0VUIFJPTEUgVE8gdmFyX3Rlc3Rfcm9sZTsKKy0tIHNob3VsZCB0 byB3b3JrCitTRUxFQ1Qgc2V0X3NjaGVtYV92YXJpYWJsZSgndmFyMScsICcxMDAwJzo6dGV4dCk7 Cisgc2V0X3NjaGVtYV92YXJpYWJsZSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93 KQorCitTRUxFQ1QgZ2V0X3NjaGVtYV92YXJpYWJsZSgndmFyMScsIG51bGw6Om51bWVyaWMpOwor IGdldF9zY2hlbWFfdmFyaWFibGUgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAg ICAgICAxMDAwCisoMSByb3cpCisKK1NFVCBST0xFIFRPIERFRkFVTFQ7CitSRVZPS0UgQUxMIE9O IFZBUklBQkxFIHZhcjEgRlJPTSB2YXJfdGVzdF9yb2xlOworQ1JFQVRFIFZBUklBQkxFIHZhciBB UyBpbnRlZ2VyOworU0VMRUNUIHNldF9zY2hlbWFfdmFyaWFibGUoJ3B1YmxpYy52YXInLCAxMjM0 KTsKKyBzZXRfc2NoZW1hX3ZhcmlhYmxlIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSBy b3cpCisKK1NFTEVDVCBwdWJsaWMudmFyOworIHZhciAgCistLS0tLS0KKyAxMjM0CisoMSByb3cp CisKK0RPICQkCitCRUdJTgorICBSQUlTRSBOT1RJQ0UgJ3B1YmxpYy52YXIgaXMgPSAlJywgcHVi bGljLnZhcjsKK0VORDsKKyQkOworTk9USUNFOiAgcHVibGljLnZhciBpcyA9IDEyMzQKK0NSRUFU RSBPUiBSRVBMQUNFIEZVTkNUSU9OIHNlY3VyZV92YXIoKQorUkVUVVJOUyBpbnQgQVMgJCQKKyAg U0VMRUNUIHB1YmxpYy52YXI7CiskJCBMQU5HVUFHRSBzcWwgU0VDVVJJVFkgREVGSU5FUjsKK1NF TEVDVCBzZWN1cmVfdmFyKCk7Cisgc2VjdXJlX3ZhciAKKy0tLS0tLS0tLS0tLQorICAgICAgIDEy MzQKKygxIHJvdykKKworU0VUIFJPTEUgVE8gdmFyX3Rlc3Rfcm9sZTsKKy0tIHNob3VsZCB0byBm YWlsCitTRUxFQ1QgcHVibGljLnZhcjsKK0VSUk9SOiAgcGVybWlzc2lvbiBkZW5pZWQgZm9yIHNj aGVtYSB2YXJpYWJsZSB2YXIKKy0tIHNob3VsZCB0byB3b3JrOworU0VMRUNUIHNlY3VyZV92YXIo KTsKKyBzZWN1cmVfdmFyIAorLS0tLS0tLS0tLS0tCisgICAgICAgMTIzNAorKDEgcm93KQorCitT RVQgUk9MRSBUTyBERUZBVUxUOworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1Qg KiBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwMCkgZyh2KSBXSEVSRSB2ID0gdmFyOworICAgICAg ICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgRnVuY3Rpb24gU2NhbiBvbiBwZ19j YXRhbG9nLmdlbmVyYXRlX3NlcmllcyBnCisgICBPdXRwdXQ6IHYKKyAgIEZ1bmN0aW9uIENhbGw6 IGdlbmVyYXRlX3NlcmllcygxLCAxMDApCisgICBGaWx0ZXI6IChnLnYgPSB2YXIpCisoNCByb3dz KQorCitDUkVBVEUgVklFVyBzY2hlbWFfdmFyX3ZpZXcgQVMgU0VMRUNUIHZhcjsKK1NFTEVDVCAq IEZST00gc2NoZW1hX3Zhcl92aWV3OworIHZhciAgCistLS0tLS0KKyAxMjM0CisoMSByb3cpCisK K1xjIC0KKy0tIHNob3VsZCB0byB3b3JrIHN0aWxsLCBidXQgdmFyIHdpbGwgYmUgZW1wdHkKK1NF TEVDVCAqIEZST00gc2NoZW1hX3Zhcl92aWV3OworIHZhciAKKy0tLS0tCisgICAgCisoMSByb3cp CisKK0xFVCB2YXIxID0gcGkoKTsKK1NFTEVDVCB2YXIxOworICAgICAgIHZhcjEgICAgICAgCist LS0tLS0tLS0tLS0tLS0tLS0KKyAzLjE0MTU5MjY1MzU4OTc5CisoMSByb3cpCisKKy0tIHdlIGNh biBsb29rIG9uIGV4ZWN1dGlvbiBwbGFuCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIExF VCB2YXIxID0gcGkoKTsKKyAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAg ICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgTGV0IG9uIHB1YmxpYy52YXIxCisgICAtPiAgUmVzdWx0CisgICAgICAg ICBPdXRwdXQ6ICczLjE0MTU5MjY1MzU4OTc5Jzo6ZG91YmxlIHByZWNpc2lvbgorKDMgcm93cykK KworLS0gTEVUIGNhbiBiZSBwcmVwYXJlZAorUFJFUEFSRSB2YXJfcHAoaW50LCBudW1lcmljKSBB UyBMRVQgdmFyMSA9ICQxICsgJDI7CitFWEVDVVRFIHZhcl9wcCgxMDAsIDEuMjM0NTYpOworU0VM RUNUIHZhcjE7CisgICB2YXIxICAgIAorLS0tLS0tLS0tLS0KKyAxMDEuMjM0NTYKKygxIHJvdykK KworQ1JFQVRFIFZBUklBQkxFIHZhcjMgQVMgaW50OworQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJ T04gaW5jKGludCkKK1JFVFVSTlMgaW50IEFTICQkCitCRUdJTgorICBMRVQgcHVibGljLnZhcjMg PSBDT0FMRVNDRShwdWJsaWMudmFyMyArICQxLCAkMSk7CisgIFJFVFVSTiB2YXIzOworRU5EOwor JCQgTEFOR1VBR0UgcGxwZ3NxbDsKK1NFTEVDVCBpbmMoMSk7CisgaW5jIAorLS0tLS0KKyAgIDEK KygxIHJvdykKKworU0VMRUNUIGluYygxKTsKKyBpbmMgCistLS0tLQorICAgMgorKDEgcm93KQor CitTRUxFQ1QgaW5jKDEpOworIGluYyAKKy0tLS0tCisgICAzCisoMSByb3cpCisKK1NFTEVDVCBp bmMoMSkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMCk7CisgaW5jIAorLS0tLS0KKyAgIDQKKyAg IDUKKyAgIDYKKyAgIDcKKyAgIDgKKyAgIDkKKyAgMTAKKyAgMTEKKyAgMTIKKyAgMTMKKygxMCBy b3dzKQorCitTRVQgUk9MRSBUTyB2YXJfdGVzdF9yb2xlOworLS0gc2hvdWxkIHRvIGZhaWwKK0xF VCB2YXIzID0gMDsKK0VSUk9SOiAgcGVybWlzc2lvbiBkZW5pZWQgZm9yIHNjaGVtYSB2YXJpYWJs ZSB2YXIzCitTRVQgUk9MRSBUTyBERUZBVUxUOworRFJPUCBWSUVXIHNjaGVtYV92YXJfdmlldzsK K0RST1AgUk9MRSB2YXJfdGVzdF9yb2xlOworRFJPUCBWQVJJQUJMRSB2YXIgQ0FTQ0FERTsKK0RS T1AgVkFSSUFCTEUgdmFyMSBDQVNDQURFOworRFJPUCBWQVJJQUJMRSB2YXIzIENBU0NBREU7CmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlIGIvc3JjL3Rlc3Qv cmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQppbmRleCBhZDk0MzRmYjg3Li4zM2ZlN2VlNDc2IDEw MDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCisrKyBiL3NyYy90 ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKQEAgLTExMSw3ICsxMTEsNyBAQCB0ZXN0OiBz ZWxlY3Rfdmlld3MgcG9ydGFsc19wMiBmb3JlaWduX2tleSBjbHVzdGVyIGRlcGVuZGVuY3kgZ3Vj IGJpdG1hcG9wcyBjb21ibwogIyBOQjogdGVtcC5zcWwgZG9lcyBhIHJlY29ubmVjdCB3aGljaCB0 cmFuc2llbnRseSB1c2VzIDIgY29ubmVjdGlvbnMsCiAjIHNvIGtlZXAgdGhpcyBwYXJhbGxlbCBn cm91cCB0byBhdCBtb3N0IDE5IHRlc3RzCiAjIC0tLS0tLS0tLS0KLXRlc3Q6IHBsYW5jYWNoZSBs aW1pdCBwbHBnc3FsIGNvcHkyIHRlbXAgZG9tYWluIHJhbmdlZnVuY3MgcHJlcGFyZSB3aXRob3V0 X29pZCBjb252ZXJzaW9uIHRydW5jYXRlIGFsdGVyX3RhYmxlIHNlcXVlbmNlIHBvbHltb3JwaGlz bSByb3d0eXBlcyByZXR1cm5pbmcgbGFyZ2VvYmplY3Qgd2l0aCB4bWwKK3Rlc3Q6IHBsYW5jYWNo ZSBsaW1pdCBwbHBnc3FsIGNvcHkyIHRlbXAgZG9tYWluIHJhbmdlZnVuY3MgcHJlcGFyZSB3aXRo b3V0X29pZCBjb252ZXJzaW9uIHRydW5jYXRlIGFsdGVyX3RhYmxlIHNlcXVlbmNlIHBvbHltb3Jw aGlzbSByb3d0eXBlcyByZXR1cm5pbmcgbGFyZ2VvYmplY3Qgd2l0aCB4bWwgc2NoZW1hX3Zhcmlh YmxlcwogCiAjIC0tLS0tLS0tLS0KICMgQW5vdGhlciBncm91cCBvZiBwYXJhbGxlbCB0ZXN0cwpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zZXJpYWxfc2NoZWR1bGUgYi9zcmMvdGVzdC9y ZWdyZXNzL3NlcmlhbF9zY2hlZHVsZQppbmRleCAyN2NkNDk4NDVlLi4yMmM0Y2FjN2NlIDEwMDY0 NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NlcmlhbF9zY2hlZHVsZQorKysgYi9zcmMvdGVzdC9y ZWdyZXNzL3NlcmlhbF9zY2hlZHVsZQpAQCAtMTg3LDMgKzE4Nyw0IEBAIHRlc3Q6IGhhc2hfcGFy dAogdGVzdDogaW5kZXhpbmcKIHRlc3Q6IGV2ZW50X3RyaWdnZXIKIHRlc3Q6IHN0YXRzCit0ZXN0 OiBzY2hlbWFfdmFyaWFibGVzCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zY2hl bWFfdmFyaWFibGVzLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3NjaGVtYV92YXJpYWJsZXMu c3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjllZTllMTc0ZjkKLS0t IC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zY2hlbWFfdmFyaWFibGVzLnNx bApAQCAtMCwwICsxLDEzOSBAQAorQ1JFQVRFIFZBUklBQkxFIHZhcjEgQVMgaW50ZWdlcjsKK0NS RUFURSBURU1QIFZBUklBQkxFIHZhcjIgQVMgdGV4dDsKKworLS0gc2hvdWxkIHRvIGZhaWwKK0NS RUFURSBWQVJJQUJMRSB2YXIyIEFTIHBnX2NsYXNzOworCitEUk9QIFZBUklBQkxFIHZhcjEsIHZh cjI7CisKKy0tIGZ1bmN0aW9uYWwgaW50ZXJmYWNlLCBhdHRlbnRpb24gdHlwbW9kIGlzIG5vdCBz dG9yZWQKK0NSRUFURSBWQVJJQUJMRSB2YXIxIEFTIG51bWVyaWMoMTAsMSk7CitTRUxFQ1Qgc2V0 X3NjaGVtYV92YXJpYWJsZSgndmFyMScsIDMzMyk7CitTRUxFQ1QgZ2V0X3NjaGVtYV92YXJpYWJs ZSgndmFyMScsIG51bGw6Om51bWVyaWMpOworCitTRUxFQ1Qgc2V0X3NjaGVtYV92YXJpYWJsZSgn dmFyMScsIDMzMzo6aW50ZWdlcik7CitTRUxFQ1QgZ2V0X3NjaGVtYV92YXJpYWJsZSgndmFyMScs IG51bGw6Om51bWVyaWMpOworCitTRUxFQ1Qgc2V0X3NjaGVtYV92YXJpYWJsZSgndmFyMScsICcz MzMuNTUnOjp0ZXh0KTsKK1NFTEVDVCBnZXRfc2NoZW1hX3ZhcmlhYmxlKCd2YXIxJywgbnVsbDo6 bnVtZXJpYyk7CitTRUxFQ1QgZ2V0X3NjaGVtYV92YXJpYWJsZSgndmFyMScsIG51bGw6OmludCk7 CitTRUxFQ1QgZ2V0X3NjaGVtYV92YXJpYWJsZSgndmFyMScsIG51bGw6OnRleHQpOworCistLSBh Y2Nlc3MgcmlnaHRzIHRlc3QKKworQ1JFQVRFIFJPTEUgdmFyX3Rlc3Rfcm9sZTsKKworU0VUIFJP TEUgVE8gdmFyX3Rlc3Rfcm9sZTsKKworLS0gc2hvdWxkIHRvIGZhaWwKK1NFTEVDVCBzZXRfc2No ZW1hX3ZhcmlhYmxlKCd2YXIxJywgJzEwMDAnOjp0ZXh0KTsKK1NFTEVDVCBnZXRfc2NoZW1hX3Zh cmlhYmxlKCd2YXIxJywgbnVsbDo6bnVtZXJpYyk7CisKK1NFVCBST0xFIFRPIERFRkFVTFQ7CisK K0dSQU5UIFNFTEVDVCBPTiBWQVJJQUJMRSB2YXIxIFRPIHZhcl90ZXN0X3JvbGU7CisKK1NFVCBS T0xFIFRPIHZhcl90ZXN0X3JvbGU7CistLSBzaG91bGQgdG8gZmFpbAorU0VMRUNUIHNldF9zY2hl bWFfdmFyaWFibGUoJ3ZhcjEnLCAnMTAwMCc6OnRleHQpOworLS0gc2hvdWxkIHRvIHdvcmsKK1NF TEVDVCBnZXRfc2NoZW1hX3ZhcmlhYmxlKCd2YXIxJywgbnVsbDo6bnVtZXJpYyk7CisKK1NFVCBS T0xFIFRPIERFRkFVTFQ7CisKK0dSQU5UIFVQREFURSBPTiBWQVJJQUJMRSB2YXIxIFRPIHZhcl90 ZXN0X3JvbGU7CisKK1NFVCBST0xFIFRPIHZhcl90ZXN0X3JvbGU7CisKKy0tIHNob3VsZCB0byB3 b3JrCitTRUxFQ1Qgc2V0X3NjaGVtYV92YXJpYWJsZSgndmFyMScsICcxMDAwJzo6dGV4dCk7CitT RUxFQ1QgZ2V0X3NjaGVtYV92YXJpYWJsZSgndmFyMScsIG51bGw6Om51bWVyaWMpOworCitTRVQg Uk9MRSBUTyBERUZBVUxUOworCitSRVZPS0UgQUxMIE9OIFZBUklBQkxFIHZhcjEgRlJPTSB2YXJf dGVzdF9yb2xlOworCitDUkVBVEUgVkFSSUFCTEUgdmFyIEFTIGludGVnZXI7CisKK1NFTEVDVCBz ZXRfc2NoZW1hX3ZhcmlhYmxlKCdwdWJsaWMudmFyJywgMTIzNCk7CisKK1NFTEVDVCBwdWJsaWMu dmFyOworCitETyAkJAorQkVHSU4KKyAgUkFJU0UgTk9USUNFICdwdWJsaWMudmFyIGlzID0gJScs IHB1YmxpYy52YXI7CitFTkQ7CiskJDsKKworQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gc2Vj dXJlX3ZhcigpCitSRVRVUk5TIGludCBBUyAkJAorICBTRUxFQ1QgcHVibGljLnZhcjsKKyQkIExB TkdVQUdFIHNxbCBTRUNVUklUWSBERUZJTkVSOworCitTRUxFQ1Qgc2VjdXJlX3ZhcigpOworCitT RVQgUk9MRSBUTyB2YXJfdGVzdF9yb2xlOworCistLSBzaG91bGQgdG8gZmFpbAorU0VMRUNUIHB1 YmxpYy52YXI7CisKKy0tIHNob3VsZCB0byB3b3JrOworU0VMRUNUIHNlY3VyZV92YXIoKTsKKwor U0VUIFJPTEUgVE8gREVGQVVMVDsKKworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxF Q1QgKiBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwMCkgZyh2KSBXSEVSRSB2ID0gdmFyOworCitD UkVBVEUgVklFVyBzY2hlbWFfdmFyX3ZpZXcgQVMgU0VMRUNUIHZhcjsKKworU0VMRUNUICogRlJP TSBzY2hlbWFfdmFyX3ZpZXc7CisKK1xjIC0KKworLS0gc2hvdWxkIHRvIHdvcmsgc3RpbGwsIGJ1 dCB2YXIgd2lsbCBiZSBlbXB0eQorU0VMRUNUICogRlJPTSBzY2hlbWFfdmFyX3ZpZXc7CisKK0xF VCB2YXIxID0gcGkoKTsKKworU0VMRUNUIHZhcjE7CisKKy0tIHdlIGNhbiBsb29rIG9uIGV4ZWN1 dGlvbiBwbGFuCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIExFVCB2YXIxID0gcGkoKTsK KworLS0gTEVUIGNhbiBiZSBwcmVwYXJlZAorUFJFUEFSRSB2YXJfcHAoaW50LCBudW1lcmljKSBB UyBMRVQgdmFyMSA9ICQxICsgJDI7CisKK0VYRUNVVEUgdmFyX3BwKDEwMCwgMS4yMzQ1Nik7CisK K1NFTEVDVCB2YXIxOworCitDUkVBVEUgVkFSSUFCTEUgdmFyMyBBUyBpbnQ7CisKK0NSRUFURSBP UiBSRVBMQUNFIEZVTkNUSU9OIGluYyhpbnQpCitSRVRVUk5TIGludCBBUyAkJAorQkVHSU4KKyAg TEVUIHB1YmxpYy52YXIzID0gQ09BTEVTQ0UocHVibGljLnZhcjMgKyAkMSwgJDEpOworICBSRVRV Uk4gdmFyMzsKK0VORDsKKyQkIExBTkdVQUdFIHBscGdzcWw7CisKK1NFTEVDVCBpbmMoMSk7CitT RUxFQ1QgaW5jKDEpOworU0VMRUNUIGluYygxKTsKKworU0VMRUNUIGluYygxKSBGUk9NIGdlbmVy YXRlX3NlcmllcygxLDEwKTsKKworU0VUIFJPTEUgVE8gdmFyX3Rlc3Rfcm9sZTsKKworLS0gc2hv dWxkIHRvIGZhaWwKK0xFVCB2YXIzID0gMDsKKworU0VUIFJPTEUgVE8gREVGQVVMVDsKKworRFJP UCBWSUVXIHNjaGVtYV92YXJfdmlldzsKKworRFJPUCBST0xFIHZhcl90ZXN0X3JvbGU7CisKK0RS T1AgVkFSSUFCTEUgdmFyIENBU0NBREU7CitEUk9QIFZBUklBQkxFIHZhcjEgQ0FTQ0FERTsKK0RS T1AgVkFSSUFCTEUgdmFyMyBDQVNDQURFOwpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL3BnaW5kZW50 L3R5cGVkZWZzLmxpc3QgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAppbmRleCBh NDJmZjk3OTRhLi41ZjBiYzIyZjZkIDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlw ZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAtNDIx LDYgKzQyMSw3IEBAIENyZWF0ZVJlcGxpY2F0aW9uU2xvdENtZAogQ3JlYXRlUm9sZVN0bXQKIENy ZWF0ZVNjaGVtYVN0bXQKIENyZWF0ZVNjaGVtYVN0bXRDb250ZXh0CitDcmVhdGVTY2hlbWFWYXJT dG10CiBDcmVhdGVTZXFTdG10CiBDcmVhdGVTdGF0c1N0bXQKIENyZWF0ZVN0bXQK --001a1146951efb0c25056441ef05--