Received: from malur.postgresql.org ([2a02:16a8:dc51::56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1fnV6F-0002Ee-Np for pgsql-hackers@arkaria.postgresql.org; Wed, 08 Aug 2018 20:30:32 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1fnV6E-0007Bv-5s for pgsql-hackers@arkaria.postgresql.org; Wed, 08 Aug 2018 20:30:30 +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.89) (envelope-from ) id 1fnV6D-0007B7-MT for pgsql-hackers@lists.postgresql.org; Wed, 08 Aug 2018 20:30:29 +0000 Received: from mail-wm0-x235.google.com ([2a00:1450:400c:c09::235]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1fnV5w-0001Tg-45 for pgsql-hackers@lists.postgresql.org; Wed, 08 Aug 2018 20:30:29 +0000 Received: by mail-wm0-x235.google.com with SMTP id y9-v6so4073985wma.5 for ; Wed, 08 Aug 2018 13:30:11 -0700 (PDT) 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=xgZJUGWI1Pb1X3xiV+0lHWLVT9SmK7tBrOSX/ph7f1Y=; b=rfpYJArDoqKUgPn4xXOZrumDv+cAgPzfhPDb2Zfb+qLN23asHCk4G0Gi91v9Xfw8ML wXhxBSTNbXbDP9yN4e/JW8Anvx0p6amWwQUPIwYM69u9XoYzSZ4eGqG110Q27NqIAnNw Y7seNB2/kXCYrP8ffKpEVLTNlbO4aBOqbFd5XmqtUSON5JN0KgKWpZqH3+VwFzOwO2up VDJSEbK6JiHRgd16JXtsqfZHY8tmgV9AH0fw8UW44FQJ3+QSQdMmZqeHeZ2LKxY5aqcQ i9sa8TuT2BHZTvnTJ124NTgCW2e7GH7I3tkGpqr9FObehuvJUD/HlL/czi60e2DQrjTO wT7A== 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=xgZJUGWI1Pb1X3xiV+0lHWLVT9SmK7tBrOSX/ph7f1Y=; b=Frt7VDX1GwQ3DLvFyxiNJblMXw5oDbYdWsKIDFKJRS486ohki7InEJWITVG9EJv4rE zaE5H1oe9kFdGvEDMgYFnb8d3fFpjjb0zKdNiBFYSS9kibv9uPTCqjoCJxrDb5eOOJjT 0+cn+e3x4QNKl98qbGMlOZR1HuraiRWzQ2WF0iz7aitwHK+lHIK0vB9OEyAq2flCJJ9b N7jlpUV1uhhKnFzqIzJb4xRE/LBNx9hVGOsztFJbKYl6yHJ8/CSU3LR0Czd1Fjx8KmoI 5GzyXw0Cw6uSYUuNcJ2cfbuoJtz+JmhjtxIVINgjqHFp7GAA2Xp4DjWFx/b71wknSkLw VB+A== X-Gm-Message-State: AOUpUlF3wp81Nz1hF/PuPYB+12Be/zRH2TEheM/wAWLwCSWiMVngtpmF 6+rwObhVZnj1zJ9igIxeStRD3FuR9yp8fMhov6tnWA== X-Google-Smtp-Source: AA+uWPzIdxCFcY3TsNOhRPARblBWu7az1fuJ6NLDZlSBtkcIBkoADW3jsK4xm0OsWtUTCBrjx/7rYwJxZWwBzFHtQKU= X-Received: by 2002:a1c:e70b:: with SMTP id e11-v6mr2718894wmh.22.1533760210565; Wed, 08 Aug 2018 13:30:10 -0700 (PDT) MIME-Version: 1.0 Received: by 2002:a5d:428a:0:0:0:0:0 with HTTP; Wed, 8 Aug 2018 13:29:29 -0700 (PDT) In-Reply-To: References: <623395617.20171113141500@gf.microolap.com> <28924bcc-9242-9798-e4e8-9d83cea3fef6@dalibo.com> From: Pavel Stehule Date: Wed, 8 Aug 2018 22:29:29 +0200 Message-ID: Subject: Re: [HACKERS] proposal: schema variables To: Gilles Darold Cc: PostgreSQL Hackers Content-Type: multipart/mixed; boundary="00000000000085fea50572f26009" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --00000000000085fea50572f26009 Content-Type: multipart/alternative; boundary="00000000000085fea30572f26007" --00000000000085fea30572f26007 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable 2018-06-27 19:15 GMT+02:00 Gilles Darold : > Le 27/06/2018 =C3=A0 13:22, Pavel Stehule a =C3=A9crit : > > Hi > > 2018-06-27 12:21 GMT+02:00 Gilles Darold : > >> Hi, >> >> I'm reviewing the patch as it was flagged in the current commit fest. >> Here are my feedback: >> >> - The patch need to be rebased due to changes in file >> src/sgml/catalogs.sgml >> >> - Some compilation warning must be fixed: >> >> analyze.c: In function =E2=80=98transformLetStmt=E2=80=99: >> analyze.c:1568:17: warning: variable =E2=80=98rte=E2=80=99 set but not u= sed >> [-Wunused-but-set-variable] >> RangeTblEntry *rte; >> ^~~ >> tab-complete.c:1268:21: warning: initialization from incompatible pointe= r >> type [-Wincompatible-pointer-types] >> {"VARIABLE", NULL, &Query_for_list_of_variables}, >> >> In the last warning a NULL is missing, should be written: {"VARIABLE", >> NULL, NULL, &Query_for_list_of_variables}, >> >> >> - How about Peter's suggestion?: >> "In DB2, the privileges for variables are named READ and WRITE. That >> would make more sense to me than reusing the privilege names for tables. >> > The patch use SELECT and UPDATE which make sense too for SELECT but >> less for UPDATE. >> >> - The implementation of "ALTER VARIABLE varname SET SCHEMA schema_name;= " >> is missing >> >> - ALTER VARIABLE var1 OWNER TO gilles; ok but not documented and missin= g >> in regression test >> >> - ALTER VARIABLE var1 RENAME TO var2; ok but not documented and missing >> in regression test >> >> More generally I think that some comments must be rewritten, especially >> those talking about a PoC. In documentation there is HTML comments that = can >> be removed. >> >> Comment at end of file src/backend/commands/schemavar.c generate some >> "indent with spaces" errors with git apply but perhaps the comment can b= e >> entirely removed or undocumented details moved to the right place. >> >> Otherwise all regression tests passed without issue and especially your >> new regression tests about schema variables. >> >> I have a patch rebased, let me known if you want me to post the new diff= . >> > > I plan significant refactoring of this patch for next commitfest. There > was anotherstrong Peter's and Robert comments > > 1. The schema variables should to have own system table > 2. The composite schema variables should to use explicitly defined > composite type > 3. The memory management is not nice - transactional drop table with > content is implemented ugly. > > I hope, so I can start on these issues next month. > > Thank you for review - I'll recheck ALTER commands. > >> >> Otherwise all regression tests passed without issue and especially your >> new regression tests about schema variables. >> >> I have a patch rebased, let me known if you want me to post the new diff= . >> > > I plan significant refactoring of this patch for next commitfest. There > was anotherstrong Peter's and Robert c > Regards > > > Ok Pavel, I've changed the status to "Waiting for authors" so that no one > will make an other review until you send a new patch. > I am sending a new update of this feature. The functionality is +/- same like previous patch, but a implementation is based on own catalog table. I removed functions for manipulation with schema variables. These functions can be added later simply. Now If we hold these functions, then we should to solve often collision inside pg_proc. Changes: * own catalog - pg_variable * the rights are renamed - READ|WRITE * the code is cleaner Regards Pavel > > -- > Gilles Darold > Consultant PostgreSQLhttp://dalibo.com - http://dalibo.org > > --00000000000085fea30572f26007 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable


2018-06-27 19:15 GMT+02:00 Gilles Darold <gilles.darold@dalibo= .com>:
=20 =20 =20
Le 27/06/2018 =C3= =A0 13:22, Pavel Stehule a =C3=A9crit=C2=A0:
Hi

2018-06-27 12= :21 GMT+02:00 Gilles Darold <gilles.darold@dalibo.com>:
Hi,

I'm reviewing the patch as it was flagged in the current commit fest. Here are my feedback:

=C2=A0- The patch need to be rebased due to changes in file src/sgml/catalogs.sgml

=C2=A0- Some compilation warning must be fixed:

analyze.c: In function =E2=80=98transformLetStmt=E2=80=99:
analyze.c:1568:17: warning: variable =E2=80=98rte=E2= =80=99 set but not used [-Wunused-but-set-variable]
=C2=A0 RangeTblEntry *rte;
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ^~~
tab-complete.c:1268:21: warning: initialization from incompatible pointer type [-Wincompatible-pointer-types]
=C2=A0 {"VARIABLE", NULL, &Query_for_list_of_variables},

In the last warning a NULL is missing, should be written: {"VARIABLE", NULL, NULL, &Query_for_list_of_variables},

=C2=A0- How about Peter's suggestion?:
=C2=A0=C2=A0=C2=A0 "In DB2, the privileges for v= ariables are named READ and WRITE. That would make more sense to me than reusing the privilege names for tables.
=C2=A0=C2=A0=C2=A0 The patch use SELECT and UPDATE which make sense too for SELECT but less for UPDATE.

=C2=A0- The implementation of "ALTER VARIABLE varn= ame SET SCHEMA schema_name;" is missing

=C2=A0- ALTER VARIABLE var1 OWNER TO gilles; ok but not documented and missing in regression test

=C2=A0- ALTER VARIABLE var1 RENAME TO var2; ok but not documented and missing in regression test

More generally I think that some comments must be rewritten, especially those talking about a PoC. In documentation there is HTML comments that can be removed.

Comment at end of file src/backend/commands/schemavar.c generate some "indent with spaces" errors wit= h git apply but perhaps the comment can be entirely removed or undocumented details moved to the right place.

Otherwise all regression tests passed without issue and especially your new regression tests about schema variables.

I have a patch rebased, let me known if you want me to post the new diff.


I plan significant refactoring of this patch for next commitfest. There was anotherstrong Peter's and Robert comments

1. The schema variables should to have own system table
2. The composite schema variables should to use explicitly defined composite type
3. The memory management is not nice - transactional drop table with content is implemented ugly.

I hope, so I can start on these issues next month.

Thank you for review - I'll recheck ALTER commands. =

Otherwise all regression tests passed without issue and especially your new regression tests about schema variables.

I have a patch rebased, let me known if you want me to post the new diff.


I plan significant refactoring of this patch for next commitfest. There was anotherstrong Peter's and Robert c
Regards


Ok Pavel, I've changed the status to "Waiting for authors&q= uot; so that no one will make an other review until you send a new patch.

=
I am sending a new update of this feature. The func= tionality is +/- same like previous patch, but a implementation is based on= own catalog table.

I removed functions for m= anipulation with schema variables. These functions can be added later simpl= y. Now If we hold these functions, then we should to solve often collision = inside pg_proc.

Changes:

= * own catalog - pg_variable
* the rights are renamed - READ|WRITE=
* the code is cleaner
=C2=A0
Regards

Pavel


--=20
Gilles Darold
Consultant PostgreSQL
http://dalibo.com - http://dalibo.org

--00000000000085fea30572f26007-- --00000000000085fea50572f26009 Content-Type: text/x-patch; charset="US-ASCII"; name="schema-variables-180808-01.patch" Content-Disposition: attachment; filename="schema-variables-180808-01.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_jkll6ooo0 ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sIGIvZG9jL3NyYy9zZ21sL2Nh dGFsb2dzLnNnbWwKaW5kZXggM2JiNDhkNGNjZi4uMGE3YTkzMmVmNSAxMDA2NDQKLS0tIGEvZG9j L3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwK QEAgLTM1OSw2ICszNTksMTEgQEAKICAgICAgIDxlbnRyeT48bGluayBsaW5rZW5kPSJjYXRhbG9n LXBnLXVzZXItbWFwcGluZyI+PHN0cnVjdG5hbWU+cGdfdXNlcl9tYXBwaW5nPC9zdHJ1Y3RuYW1l PjwvbGluaz48L2VudHJ5PgogICAgICAgPGVudHJ5Pm1hcHBpbmdzIG9mIHVzZXJzIHRvIGZvcmVp Z24gc2VydmVyczwvZW50cnk+CiAgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50 cnk+PGxpbmsgbGlua2VuZD0iY2F0YWxvZy1wZy12YXJpYWJsZSI+PHN0cnVjdG5hbWU+cGdfdmFy aWFibGU8L3N0cnVjdG5hbWU+PC9saW5rPjwvZW50cnk+CisgICAgICA8ZW50cnk+c2NoZW1hIHZh cmlhYmxlczwvZW50cnk+CisgICAgIDwvcm93PgogICAgIDwvdGJvZHk+CiAgICA8L3Rncm91cD4K ICAgPC90YWJsZT4KQEAgLTExMjU1LDcgKzExMjYwLDYgQEAgU0VMRUNUICogRlJPTSBwZ19sb2Nr cyBwbCBMRUZUIEpPSU4gcGdfcHJlcGFyZWRfeGFjdHMgcHB4CiAKICA8L3NlY3QxPgogCi0KICA8 c2VjdDEgaWQ9InZpZXctcGctdmlld3MiPgogICA8dGl0bGU+PHN0cnVjdG5hbWU+cGdfdmlld3M8 L3N0cnVjdG5hbWU+PC90aXRsZT4KIApAQCAtMTEzMTEsNCArMTEzMTUsMTA0IEBAIFNFTEVDVCAq IEZST00gcGdfbG9ja3MgcGwgTEVGVCBKT0lOIHBnX3ByZXBhcmVkX3hhY3RzIHBweAogCiAgPC9z ZWN0MT4KIAorIDxzZWN0MSBpZD0iY2F0YWxvZy1wZy12YXJpYWJsZSI+CisgIDx0aXRsZT48c3Ry dWN0bmFtZT5wZ192YXJpYWJsZTwvc3RydWN0bmFtZT48L3RpdGxlPgorCisgIDxpbmRleHRlcm0g em9uZT0iY2F0YWxvZy1wZy12YXJpYWJsZSI+CisgICA8cHJpbWFyeT5wZ192YXJpYWJsZTwvcHJp bWFyeT4KKyAgPC9pbmRleHRlcm0+CisKKyAgPHBhcmE+CisgICBUaGUgdGFibGUgPHN0cnVjdG5h bWU+cGdfdmFyaWFibGU8L3N0cnVjdG5hbWU+IGhvbGRzIG1ldGFkYXRhCisgICBvZiBzY2hlbWEg dmFyaWFibGVzLgorICA8L3BhcmE+CisKKyAgPHRhYmxlPgorICAgPHRpdGxlPjxzdHJ1Y3RuYW1l PnBnX3ZpZXdzPC9zdHJ1Y3RuYW1lPiBDb2x1bW5zPC90aXRsZT4KKworICAgPHRncm91cCBjb2xz PSI0Ij4KKyAgICA8dGhlYWQ+CisgICAgIDxyb3c+CisgICAgICA8ZW50cnk+TmFtZTwvZW50cnk+ CisgICAgICA8ZW50cnk+VHlwZTwvZW50cnk+CisgICAgICA8ZW50cnk+UmVmZXJlbmNlczwvZW50 cnk+CisgICAgICA8ZW50cnk+RGVzY3JpcHRpb248L2VudHJ5PgorICAgICA8L3Jvdz4KKyAgICA8 L3RoZWFkPgorICAgIDx0Ym9keT4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeT48c3RydWN0Zmll bGQ+b2lkPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorICAgICAgPGVudHJ5Pjx0eXBlPm9pZDwvdHlw ZT48L2VudHJ5PgorICAgICAgPGVudHJ5PjwvZW50cnk+CisgICAgICA8ZW50cnk+Um93IGlkZW50 aWZpZXIgKGhpZGRlbiBhdHRyaWJ1dGU7IG11c3QgYmUgZXhwbGljaXRseSBzZWxlY3RlZCk8L2Vu dHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5PjxzdHJ1Y3RmaWVs ZD52YXJuYW1lPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorICAgICAgPGVudHJ5Pjx0eXBlPm5hbWU8 L3R5cGU+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT48L2VudHJ5PgorICAgICAgPGVudHJ5Pk5hbWUg b2YgdGhlIHNjaGVtYSB2YXJpYWJsZTwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+ CisgICAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPnZhcm5hbWVzcGFjZTwvc3RydWN0ZmllbGQ+PC9l bnRyeT4KKyAgICAgIDxlbnRyeT48dHlwZT5vaWQ8L3R5cGU+PC9lbnRyeT4KKyAgICAgIDxlbnRy eT48bGl0ZXJhbD48bGluayBsaW5rZW5kPSJjYXRhbG9nLXBnLW5hbWVzcGFjZSI+PHN0cnVjdG5h bWU+cGdfbmFtZXNwYWNlPC9zdHJ1Y3RuYW1lPjwvbGluaz4ub2lkPC9saXRlcmFsPjwvZW50cnk+ CisgICAgICA8ZW50cnk+CisgICAgICAgVGhlIE9JRCBvZiB0aGUgbmFtZXNwYWNlIHRoYXQgY29u dGFpbnMgdGhpcyB2YXJpYWJsZQorICAgICAgPC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAg PHJvdz4KKyAgICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+dmFydHlwZTwvc3RydWN0ZmllbGQ+PC9l bnRyeT4KKyAgICAgIDxlbnRyeT48dHlwZT5vaWQ8L3R5cGU+PC9lbnRyeT4KKyAgICAgIDxlbnRy eT48bGl0ZXJhbD48bGluayBsaW5rZW5kPSJjYXRhbG9nLXBnLXR5cGUiPjxzdHJ1Y3RuYW1lPnBn X3R5cGU8L3N0cnVjdG5hbWU+PC9saW5rPi5vaWQ8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgIDxl bnRyeT4KKyAgICAgICBUaGUgT0lEIG9mIHRoZSBkYXRhIHR5cGUgb2YgdGhpcyB2YXJpYWJsZS4K KyAgICAgIDwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnk+ PHN0cnVjdGZpZWxkPnZhcnR5cG1vZDwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKyAgICAgIDxlbnRy eT48dHlwZT5pbnQ0PC90eXBlPjwvZW50cnk+CisgICAgICA8ZW50cnk+PC9lbnRyeT4KKyAgICAg IDxlbnRyeT4KKyAgICAgICA8c3RydWN0ZmllbGQ+dmFydHlwbW9kPC9zdHJ1Y3RmaWVsZD4gcmVj b3JkcyB0eXBlLXNwZWNpZmljIGRhdGEKKyAgICAgICBzdXBwbGllZCBhdCB0YWJsZSBjcmVhdGlv biB0aW1lIChmb3IgZXhhbXBsZSwgdGhlIG1heGltdW0KKyAgICAgICBsZW5ndGggb2YgYSA8dHlw ZT52YXJjaGFyPC90eXBlPiBjb2x1bW4pLiAgSXQgaXMgcGFzc2VkIHRvCisgICAgICAgdHlwZS1z cGVjaWZpYyBpbnB1dCBmdW5jdGlvbnMgYW5kIGxlbmd0aCBjb2VyY2lvbiBmdW5jdGlvbnMuCisg ICAgICAgVGhlIHZhbHVlIHdpbGwgZ2VuZXJhbGx5IGJlIC0xIGZvciB0eXBlcyB0aGF0IGRvIG5v dCBuZWVkIDxzdHJ1Y3RmaWVsZD52YXJ0eXBtb2Q8L3N0cnVjdGZpZWxkPi4KKyAgICAgIDwvZW50 cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnk+PHN0cnVjdGZpZWxk PnZhcm93bmVyPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorICAgICAgPGVudHJ5Pjx0eXBlPm9pZDwv dHlwZT48L2VudHJ5PgorICAgICAgPGVudHJ5PjxsaXRlcmFsPjxsaW5rIGxpbmtlbmQ9ImNhdGFs b2ctcGctYXV0aGlkIj48c3RydWN0bmFtZT5wZ19hdXRoaWQ8L3N0cnVjdG5hbWU+PC9saW5rPi5v aWQ8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT5Pd25lciBvZiB0aGUgdmFyaWFibGU8 L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5PjxzdHJ1Y3Rm aWVsZD52YXJkZWZleHByPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorICAgICAgPGVudHJ5Pjx0eXBl PnBnX25vZGVfdHJlZTwvdHlwZT48L2VudHJ5PgorICAgICAgPGVudHJ5PjwvZW50cnk+CisgICAg ICA8ZW50cnk+VGhlIGludGVybmFsIHJlcHJlc2VudGF0aW9uIG9mIHRoZSB2YXJpYWJsZSBkZWZh dWx0IHZhbHVlPC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRy eT48c3RydWN0ZmllbGQ+dmFyYWNsPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorICAgICAgPGVudHJ5 Pjx0eXBlPmFjbGl0ZW1bXTwvdHlwZT48L2VudHJ5PgorICAgICAgPGVudHJ5PjwvZW50cnk+Cisg ICAgICA8ZW50cnk+CisgICAgICAgQWNjZXNzIHByaXZpbGVnZXM7IHNlZQorICAgICAgIDx4cmVm IGxpbmtlbmQ9InNxbC1ncmFudCIvPiBhbmQKKyAgICAgICA8eHJlZiBsaW5rZW5kPSJzcWwtcmV2 b2tlIi8+CisgICAgICAgZm9yIGRldGFpbHMKKyAgICAgIDwvZW50cnk+CisgICAgIDwvcm93Pgor ICAgIDwvdGJvZHk+CisgICA8L3Rncm91cD4KKyAgPC90YWJsZT4KKyA8L3NlY3QxPgorCiA8L2No YXB0ZXI+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2FsbGZpbGVzLnNnbWwgYi9kb2Mv c3JjL3NnbWwvcmVmL2FsbGZpbGVzLnNnbWwKaW5kZXggYzgxYzg3ZWY0MS4uZjVhYWY2MDIzMyAx MDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9hbGxmaWxlcy5zZ21sCisrKyBiL2RvYy9zcmMv c2dtbC9yZWYvYWxsZmlsZXMuc2dtbApAQCAtOTksNiArOTksNyBAQCBDb21wbGV0ZSBsaXN0IG9m IHVzYWJsZSBzZ21sIHNvdXJjZSBmaWxlcyBpbiB0aGlzIGRpcmVjdG9yeS4KIDwhRU5USVRZIGNy ZWF0ZVR5cGUgICAgICAgICBTWVNURU0gImNyZWF0ZV90eXBlLnNnbWwiPgogPCFFTlRJVFkgY3Jl YXRlVXNlciAgICAgICAgIFNZU1RFTSAiY3JlYXRlX3VzZXIuc2dtbCI+CiA8IUVOVElUWSBjcmVh dGVVc2VyTWFwcGluZyAgU1lTVEVNICJjcmVhdGVfdXNlcl9tYXBwaW5nLnNnbWwiPgorPCFFTlRJ VFkgY3JlYXRlVmFyaWFibGUgICAgIFNZU1RFTSAiY3JlYXRlX3ZhcmlhYmxlLnNnbWwiPgogPCFF TlRJVFkgY3JlYXRlVmlldyAgICAgICAgIFNZU1RFTSAiY3JlYXRlX3ZpZXcuc2dtbCI+CiA8IUVO VElUWSBkZWFsbG9jYXRlICAgICAgICAgU1lTVEVNICJkZWFsbG9jYXRlLnNnbWwiPgogPCFFTlRJ VFkgZGVjbGFyZSAgICAgICAgICAgIFNZU1RFTSAiZGVjbGFyZS5zZ21sIj4KQEAgLTE0OCw2ICsx NDksNyBAQCBDb21wbGV0ZSBsaXN0IG9mIHVzYWJsZSBzZ21sIHNvdXJjZSBmaWxlcyBpbiB0aGlz IGRpcmVjdG9yeS4KIDwhRU5USVRZIGRyb3BVc2VyICAgICAgICAgICBTWVNURU0gImRyb3BfdXNl ci5zZ21sIj4KIDwhRU5USVRZIGRyb3BVc2VyTWFwcGluZyAgICBTWVNURU0gImRyb3BfdXNlcl9t YXBwaW5nLnNnbWwiPgogPCFFTlRJVFkgZHJvcFZpZXcgICAgICAgICAgIFNZU1RFTSAiZHJvcF92 aWV3LnNnbWwiPgorPCFFTlRJVFkgZHJvcFZhcmlhYmxlICAgICAgIFNZU1RFTSAiZHJvcF92YXJp YWJsZS5zZ21sIj4KIDwhRU5USVRZIGVuZCAgICAgICAgICAgICAgICBTWVNURU0gImVuZC5zZ21s Ij4KIDwhRU5USVRZIGV4ZWN1dGUgICAgICAgICAgICBTWVNURU0gImV4ZWN1dGUuc2dtbCI+CiA8 IUVOVElUWSBleHBsYWluICAgICAgICAgICAgU1lTVEVNICJleHBsYWluLnNnbWwiPgpAQCAtMTU1 LDYgKzE1Nyw3IEBAIENvbXBsZXRlIGxpc3Qgb2YgdXNhYmxlIHNnbWwgc291cmNlIGZpbGVzIGlu IHRoaXMgZGlyZWN0b3J5LgogPCFFTlRJVFkgZ3JhbnQgICAgICAgICAgICAgIFNZU1RFTSAiZ3Jh bnQuc2dtbCI+CiA8IUVOVElUWSBpbXBvcnRGb3JlaWduU2NoZW1hIFNZU1RFTSAiaW1wb3J0X2Zv cmVpZ25fc2NoZW1hLnNnbWwiPgogPCFFTlRJVFkgaW5zZXJ0ICAgICAgICAgICAgIFNZU1RFTSAi aW5zZXJ0LnNnbWwiPgorPCFFTlRJVFkgbGV0ICAgICAgICAgICAgICAgIFNZU1RFTSAibGV0LnNn bWwiPgogPCFFTlRJVFkgbGlzdGVuICAgICAgICAgICAgIFNZU1RFTSAibGlzdGVuLnNnbWwiPgog PCFFTlRJVFkgbG9hZCAgICAgICAgICAgICAgIFNZU1RFTSAibG9hZC5zZ21sIj4KIDwhRU5USVRZ IGxvY2sgICAgICAgICAgICAgICBTWVNURU0gImxvY2suc2dtbCI+CmRpZmYgLS1naXQgYS9kb2Mv c3JjL3NnbWwvcmVmL2NyZWF0ZV92YXJpYWJsZS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVh dGVfdmFyaWFibGUuc2dtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5j ODA3MDA1MWY1Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdmFy aWFibGUuc2dtbApAQCAtMCwwICsxLDEzMyBAQAorPCEtLQorZG9jL3NyYy9zZ21sL3JlZi9jcmVh dGVfdmFyaWFibGUuc2dtbAorUG9zdGdyZVNRTCBkb2N1bWVudGF0aW9uCistLT4KKworPHJlZmVu dHJ5IGlkPSJzcWwtY3JlYXRldmFyaWFibGUiPgorIDxpbmRleHRlcm0gem9uZT0ic3FsLWNyZWF0 ZXZhcmlhYmxlIj4KKyAgPHByaW1hcnk+Q1JFQVRFIFZBUklBQkxFPC9wcmltYXJ5PgorIDwvaW5k ZXh0ZXJtPgorCisgPHJlZm1ldGE+CisgIDxyZWZlbnRyeXRpdGxlPkNSRUFURSBWQVJJQUJMRTwv cmVmZW50cnl0aXRsZT4KKyAgPG1hbnZvbG51bT43PC9tYW52b2xudW0+CisgIDxyZWZtaXNjaW5m bz5TUUwgLSBMYW5ndWFnZSBTdGF0ZW1lbnRzPC9yZWZtaXNjaW5mbz4KKyA8L3JlZm1ldGE+CisK KyA8cmVmbmFtZWRpdj4KKyAgPHJlZm5hbWU+Q1JFQVRFIFZBUklBQkxFPC9yZWZuYW1lPgorICA8 cmVmcHVycG9zZT5kZWZpbmUgYSBuZXcgcGVybWlzc2lvbmVkIHR5cGVkIHNjaGVtYSB2YXJpYWJs ZTwvcmVmcHVycG9zZT4KKyA8L3JlZm5hbWVkaXY+CisKKyA8cmVmc3lub3BzaXNkaXY+Cis8c3lu b3BzaXM+CitDUkVBVEUgVkFSSUFCTEUgWyBJRiBOT1QgRVhJU1RTIF0gPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBbIEFTIF0gPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPmRhdGFfdHlwZTwvcmVwbGFjZWFibGU+IF0KKzwvc3lub3BzaXM+Cisg PC9yZWZzeW5vcHNpc2Rpdj4KKyA8cmVmc2VjdDE+CisgIDx0aXRsZT5EZXNjcmlwdGlvbjwvdGl0 bGU+CisKKyAgPHBhcmE+CisgICA8Y29tbWFuZD5DUkVBVEUgVkFSSUFCTEU8L2NvbW1hbmQ+IGNy ZWF0ZXMgYSBuZXcgc2NoZW1hIHZhcmlhYmxlLgorICAgVGhlc2UgdmFyaWFibGVzIGFyZSBzY2Fs YXIgdHlwZWQsIG5vbi10cmFuc2FjdGlvbmFsLCBhbmQsIGxpa2UgcmVsYXRpb25zLAorICAgZXhp c3Qgd2l0aGluIGEgc2NoZW1hIHdpdGggYWNjZXNzIGNvbnRyb2xsZWQgdmlhCisgICA8Y29tbWFu ZD5HUkFOVDwvY29tbWFuZD4gYW5kIDxjb21tYW5kPlJFVk9LRTwvY29tbWFuZD4uCisgIDwvcGFy YT4KKworICA8cGFyYT4KKyAgIFRoZSB2YWx1ZSBvZiBhIHNjaGVtYSB2YXJpYWJsZSBpcyBzZXNz aW9uLWxvY2FsLiBSZXRyaWV2aW5nCisgICBhIHZhcmlhYmxlJ3MgdmFsdWUgd2lsbCByZXR1cm4g TlVMTCB1bmxlc3MgaXRzIHZhbHVlIGhhcyBiZWVuIHNldAorICAgdG8gc29tZXRoaW5nIGVsc2Ug aW4gdGhlIGN1cnJlbnQgc2Vzc2lvbi4KKyAgPC9wYXJhPgorCisgIDxwYXJhPgorICAgUmV0cmll dmFsIGlzIGRvbmUgdmlhIHRoZSA8ZnVuY3Rpb24+Z2V0X3NjaGVtYV92YXJpYWJsZTwvZnVuY3Rp b24+ZHVueHJpb24gb3IgdGhlIFNRTAorICAgY29tbWFuZCA8Y29tbWFuZD5TRUxFQ1Q8L2NvbW1h bmQ+LiAgU2V0dGluZyBvZiB2YWx1ZXMgaXMgZG9uZSB2aWEgdGhlCisgICA8ZnVuY3Rpb24+c2V0 X3NjaGVtYV92YXJpYWJsZTwvZnVuY3Rpb24+IGZ1bmN0aW9uIG9yIHRoZSBTUUwgY29tbWFuZAor ICAgPGNvbW1hbmQ+TEVUPC9jb21tYW5kPi4KKyAgIE5vdGFibHksIHdoaWxlIHNjaGVtYSB2YXJp YWJsZXMgYXJlIGluIG1hbnkgd2F5cyBhIGtpbmQgb2YgdGFibGUgeW91IGNhbm5vdCB1c2UKKyAg IDxjb21tYW5kPlVQREFURTwvY29tbWFuZD4gb24gdGhlbS4KKyAgPC9wYXJhPgorCisgIDxwYXJh PgorICAgRm9yIHB1cnBvc2VzIG9mIG5hbWUgdW5pcXVlbmVzcyByZWxhdGlvbi1saWtlIG9iamVj dHMgKGUuZy4sIHRhYmxlcywgaW5kZXhlcykKKyAgIHdpdGhpbiB0aGUgc2FtZSBzY2hlbWEgYXJl IGNvbnNpZGVyZWQuICBpLmUuLCB5b3UgY2Fubm90IGdpdmUgYSB0YWJsZSBhbmQgYQorICAgc2No ZW1hIHZhcmlhYmxlIHRoZSBzYW1lIG5hbWUuICBUaGlzIGlzIGEgY29uc2VxdWVuY2Ugb2YgdGhl bSBiZWluZyB0cmVhdGVkCisgICBsaWtlIHJlbGF0aW9ucyBmb3IgcHVycG9zZXMgb2YgPGNvbW1h bmQ+U0VMRUNUPC9jb21tYW5kPi4KKyAgPC9wYXJhPgorIDwvcmVmc2VjdDE+CisKKyA8cmVmc2Vj dDE+CisgIDx0aXRsZT5QYXJhbWV0ZXJzPC90aXRsZT4KKworICA8dmFyaWFibGVsaXN0PgorICAg PHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT48bGl0ZXJhbD5JRiBOT1QgRVhJU1RTPC9saXRlcmFs PjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgRG8gbm90IHRocm93 IGFuIGVycm9yIGlmIHRoZSBuYW1lIGFscmVhZHkgZXhpc3RzLiBBIG5vdGljZSBpcyBpc3N1ZWQg aW4gdGhpcyBjYXNlLgorICAgICAgTm90ZSB0aGF0IHR5cGUgb2YgdGhlIHZhcmlhYmxlIGlzIG5v dCBjb25zaWRlcmVkLCBub3IgY291bGQgaXQgYmUgc2luY2UgdGhlIG5hbWVzcGFjZQorICAgICAg c2VhcmNoZWQgY29udGFpbnMgbm9uLXZhcmlhYmxlIG9iamVjdHMuCisgICAgIDwvcGFyYT4KKyAg ICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50cnk+Cisg ICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxl PjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgVGhlIG5hbWUgKG9w dGlvbmFsbHkgc2NoZW1hLXF1YWxpZmllZCkgb2YgdGhlIHZhcmlhYmxlIHRvIGJlIGNyZWF0ZWQu CisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAg IDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PmRhdGFfdHlwZTwvcmVwbGFjZWFibGU+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBh cmE+CisgICAgICBUaGUgbmFtZSAob3B0aW9uYWxseSBzY2hlbWEtcXVhbGlmaWVkKSBvZiB0aGUg ZGF0YSB0eXBlIG9mIHRoZSB2YXJpYWJsZSB0byBiZSBjcmVhdGVkLgorICAgICA8L3BhcmE+Cisg ICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorICA8L3ZhcmlhYmxlbGlzdD4KKyA8 L3JlZnNlY3QxPgorCisgPHJlZnNlY3QxPgorICA8dGl0bGU+Tm90ZXM8L3RpdGxlPgorCisgIDxw YXJhPgorICAgVXNlIDxjb21tYW5kPkRST1AgVkFSSUFCTEU8L2NvbW1hbmQ+IHRvIHJlbW92ZSBh IHZhcmlhYmxlLgorICA8L3BhcmE+CisgPC9yZWZzZWN0MT4KKworIDxyZWZzZWN0MT4KKyAgPHRp dGxlPkV4YW1wbGVzPC90aXRsZT4KKworICA8cGFyYT4KKyAgIENyZWF0ZSBhbiBpbnRlZ2VyIHZh cmlhYmxlIDxsaXRlcmFsPnZhcjE8L2xpdGVyYWw+OgorPHByb2dyYW1saXN0aW5nPgorQ1JFQVRF IFZBUklBQkxFIHZhcjEgQVMgaW50ZWdlcjsKK1NFTEVDVCB2YXIxOworPC9wcm9ncmFtbGlzdGlu Zz4KKyAgPC9wYXJhPgorCisgPC9yZWZzZWN0MT4KKworIDxyZWZzZWN0MT4KKyAgPHRpdGxlPkNv bXBhdGliaWxpdHk8L3RpdGxlPgorCisgIDxwYXJhPgorICAgPGNvbW1hbmQ+Q1JFQVRFIFZBUklB QkxFPC9jb21tYW5kPiBpcyBhIFBvc3RncmVTUUwgZmVhdHVyZS4KKyAgIDwhLS0gVGhlIGNob2lj ZSBvZiB3b3JkaW5nIGhlcmUgc2VlbXMgdG8gYmUgbGVmdCB0byBwZXJzb25hbCBwcmVmZXJlbmNl Li4uIC0tPgorICA8L3BhcmE+CisgPC9yZWZzZWN0MT4KKworIDxyZWZzZWN0MT4KKyAgPHRpdGxl PlNlZSBBbHNvPC90aXRsZT4KKworICA8c2ltcGxlbGlzdCB0eXBlPSJpbmxpbmUiPgorICAgPG1l bWJlcj48eHJlZiBsaW5rZW5kPSJzcWwtZHJvcHZhcmlhYmxlIi8+PC9tZW1iZXI+CisgIDwvc2lt cGxlbGlzdD4KKyA8L3JlZnNlY3QxPgorCis8L3JlZmVudHJ5PgpkaWZmIC0tZ2l0IGEvZG9jL3Ny Yy9zZ21sL3JlZi9kaXNjYXJkLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2Rpc2NhcmQuc2dtbApp bmRleCA2YjkwOWI3MjMyLi5kODNhZDgxMWZkIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVm L2Rpc2NhcmQuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2Rpc2NhcmQuc2dtbApAQCAtMjEs NyArMjEsNyBAQCBQb3N0Z3JlU1FMIGRvY3VtZW50YXRpb24KIAogIDxyZWZzeW5vcHNpc2Rpdj4K IDxzeW5vcHNpcz4KLURJU0NBUkQgeyBBTEwgfCBQTEFOUyB8IFNFUVVFTkNFUyB8IFRFTVBPUkFS WSB8IFRFTVAgfQorRElTQ0FSRCB7IEFMTCB8IFBMQU5TIHwgU0VRVUVOQ0VTIHwgVEVNUE9SQVJZ IHwgVEVNUCB8IFZBUklBQkxFUyB9CiA8L3N5bm9wc2lzPgogIDwvcmVmc3lub3BzaXNkaXY+CiAK QEAgLTc1LDYgKzc1LDE3IEBAIERJU0NBUkQgeyBBTEwgfCBQTEFOUyB8IFNFUVVFTkNFUyB8IFRF TVBPUkFSWSB8IFRFTVAgfQogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KIAor ICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT48bGl0ZXJhbD5WQVJJQUJMRVM8L2xpdGVyYWw+ PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBSZXNldHMgdGhlIHZh bHVlIG9mIGFsbCBzY2hlbWEgdmFyaWFibGVzLiBXaGVuIHZhcmlhYmxlcworICAgICAgd2lsbCBi ZSB1c2VkIGxhdGVyLCB0aGVuIHdpbGwgYmUgaW5pdGlhbGl6ZWQgYWdhaW4gdG8KKyAgICAgIE5V TEwgb3IgZGVmYXVsdCB2YWx1ZS4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8 L3Zhcmxpc3RlbnRyeT4KKwogICAgPHZhcmxpc3RlbnRyeT4KICAgICA8dGVybT48bGl0ZXJhbD5B TEw8L2xpdGVyYWw+PC90ZXJtPgogICAgIDxsaXN0aXRlbT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMv c2dtbC9yZWYvZHJvcF92YXJpYWJsZS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9kcm9wX3Zhcmlh YmxlLnNnbWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uMDYxMzBmZDUx MAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvZHJvcF92YXJpYWJsZS5zZ21s CkBAIC0wLDAgKzEsOTIgQEAKKzwhLS0KK2RvYy9zcmMvc2dtbC9yZWYvZHJvcF92YXJpYWJsZS5z Z21sCitQb3N0Z3JlU1FMIGRvY3VtZW50YXRpb24KKy0tPgorCis8cmVmZW50cnkgaWQ9InNxbC1k cm9wdmFyaWFibGUiPgorIDxpbmRleHRlcm0gem9uZT0ic3FsLWRyb3B2YXJpYWJsZSI+CisgIDxw cmltYXJ5PkRST1AgVkFSSUFCTEU8L3ByaW1hcnk+CisgPC9pbmRleHRlcm0+CisKKyA8cmVmbWV0 YT4KKyAgPHJlZmVudHJ5dGl0bGU+RFJPUCBWQVJJQUJMRTwvcmVmZW50cnl0aXRsZT4KKyAgPG1h bnZvbG51bT43PC9tYW52b2xudW0+CisgIDxyZWZtaXNjaW5mbz5TUUwgLSBMYW5ndWFnZSBTdGF0 ZW1lbnRzPC9yZWZtaXNjaW5mbz4KKyA8L3JlZm1ldGE+CisKKyA8cmVmbmFtZWRpdj4KKyAgPHJl Zm5hbWU+RFJPUCBWQVJJQUJMRTwvcmVmbmFtZT4KKyAgPHJlZnB1cnBvc2U+cmVtb3ZlIGEgc2No ZW1hIHZhcmlhYmxlPC9yZWZwdXJwb3NlPgorIDwvcmVmbmFtZWRpdj4KKworIDxyZWZzeW5vcHNp c2Rpdj4KKzxzeW5vcHNpcz4KK0RST1AgVkFSSUFCTEUgWyBJRiBFWElTVFMgXSA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLl0gWyBDQVNDQURF IHwgUkVTVFJJQ1QgXQorPC9zeW5vcHNpcz4KKyA8L3JlZnN5bm9wc2lzZGl2PgorCisgPHJlZnNl Y3QxPgorICA8dGl0bGU+RGVzY3JpcHRpb248L3RpdGxlPgorCisgIDxwYXJhPgorICAgPGNvbW1h bmQ+RFJPUCBWQVJJQUJMRTwvY29tbWFuZD4gcmVtb3ZlcyBhIHNjaGVtYSB2YXJpYWJsZS4KKyAg IEEgdmFyaWFibGUgY2FuIG9ubHkgYmUgZHJvcHBlZCBieSBpdHMgb3duZXIgb3IgYSBzdXBlcnVz ZXIuCisgICA8IS0tIHRoaXMgd291bGQgc3VnZ2VzdCB0aGF0IHdlIG5lZWQgYW4gYWx0ZXIgdmFy aWFibGUgb3duZXIgdG8gY29tbWFuZCAtLT4KKyAgPC9wYXJhPgorIDwvcmVmc2VjdDE+CisKKyA8 cmVmc2VjdDE+CisgIDx0aXRsZT5QYXJhbWV0ZXJzPC90aXRsZT4KKworICA8dmFyaWFibGVsaXN0 PgorICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT48bGl0ZXJhbD5JRiBFWElTVFM8L2xpdGVy YWw+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBEbyBub3QgdGhy b3cgYW4gZXJyb3IgaWYgdGhlIHZhcmlhYmxlIGRvZXMgbm90IGV4aXN0LiBBIG5vdGljZSBpcyBp c3N1ZWQKKyAgICAgIGluIHRoaXMgY2FzZS4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+ CisgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT48cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+PC90ZXJtPgorICAg IDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBUaGUgbmFtZSAob3B0aW9uYWxseSBzY2hl bWEtcXVhbGlmaWVkKSBvZiBhIHNjaGVtYSB2YXJpYWJsZS4KKyAgICAgPC9wYXJhPgorICAgIDwv bGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKyAgPC92YXJpYWJsZWxpc3Q+CisgPC9yZWZz ZWN0MT4KKworIDxyZWZzZWN0MT4KKyAgPHRpdGxlPkV4YW1wbGVzPC90aXRsZT4KKworICA8cGFy YT4KKyAgIFRvIHJlbW92ZSB0aGUgc2NoZW1hIHZhcmlhYmxlIDxsaXRlcmFsPnZhcjE8L2xpdGVy YWw+OgorCis8cHJvZ3JhbWxpc3Rpbmc+CitEUk9QIFZBUklBQkxFIHZhcjE7Cis8L3Byb2dyYW1s aXN0aW5nPjwvcGFyYT4KKyA8L3JlZnNlY3QxPgorCisgPHJlZnNlY3QxPgorICA8dGl0bGU+Q29t cGF0aWJpbGl0eTwvdGl0bGU+CisKKyAgPHBhcmE+CisgICA8Y29tbWFuZD5EUk9QIFZBUklBQkxF PC9jb21tYW5kPiBpcyBwcm9wcmlldGFyeSBQb3N0Z3JlU1FMIGNvbW1hbmQuCisgICA8IS0tIGNy ZWF0ZSB2YXJpYWJsZSBpcyBhICJQb3N0Z3JlU1FMIGZlYXR1cmUiLAorICAgICAgICB0aGlzIGlz IGEgInByb3ByaWV0YXJ5IFBvc3RncmVTUUwgY29tbWFuZCIgLi4uIC0tPgorICA8L3BhcmE+Cisg PC9yZWZzZWN0MT4KKworIDxyZWZzZWN0MT4KKyAgPHRpdGxlPlNlZSBBbHNvPC90aXRsZT4KKwor ICA8c2ltcGxlbGlzdCB0eXBlPSJpbmxpbmUiPgorICAgPG1lbWJlcj48eHJlZiBsaW5rZW5kPSJz cWwtY3JlYXRldmFyaWFibGUiLz48L21lbWJlcj4KKyAgPC9zaW1wbGVsaXN0PgorIDwvcmVmc2Vj dDE+CisKKzwvcmVmZW50cnk+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2dyYW50LnNn bWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2dyYW50LnNnbWwKaW5kZXggZmY2NGM3YTNiYS4uYTgzOTIw YTdhMSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9ncmFudC5zZ21sCisrKyBiL2RvYy9z cmMvc2dtbC9yZWYvZ3JhbnQuc2dtbApAQCAtNzksNiArNzksMTAgQEAgR1JBTlQgeyBVU0FHRSB8 IEFMTCBbIFBSSVZJTEVHRVMgXSB9CiAgICAgT04gVFlQRSA8cmVwbGFjZWFibGU+dHlwZV9uYW1l PC9yZXBsYWNlYWJsZT4gWywgLi4uXQogICAgIFRPIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5yb2xlX3NwZWNpZmljYXRpb248L3JlcGxhY2VhYmxlPiBbLCAuLi5dIFsgV0lUSCBHUkFO VCBPUFRJT04gXQogCitHUkFOVCB7IFJFQUQgfCBXUklURSB8IEFMTCBbIFBSSVZJTEVHRVMgXSB9 CisgICAgT04gVkFSSUFCTEUgPHJlcGxhY2VhYmxlPnZhcmlhYmxlX25hbWU8L3JlcGxhY2VhYmxl PiBbLCAuLi5dCisgICAgVE8gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJvbGVfc3Bl Y2lmaWNhdGlvbjwvcmVwbGFjZWFibGU+IFssIC4uLl0gWyBXSVRIIEdSQU5UIE9QVElPTiBdCisK IDxwaHJhc2U+d2hlcmUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJvbGVfc3BlY2lm aWNhdGlvbjwvcmVwbGFjZWFibGU+IGNhbiBiZTo8L3BocmFzZT4KIAogICAgIFsgR1JPVVAgXSA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cm9sZV9uYW1lPC9yZXBsYWNlYWJsZT4KQEAg LTE2Nyw2ICsxNzEsNyBAQCBHUkFOVCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cm9s ZV9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uXSBUTyA8cmVwbGFjZQogICAgZm9yZWlnbiBzZXJ2 ZXJzLAogICAgbGFyZ2Ugb2JqZWN0cywKICAgIHNjaGVtYXMsCisgICBzY2hlbWEgdmFyaWFibGUK ICAgIG9yIHRhYmxlc3BhY2VzLgogICAgRm9yIG90aGVyIHR5cGVzIG9mIG9iamVjdHMsIHRoZSBk ZWZhdWx0IHByaXZpbGVnZXMKICAgIGdyYW50ZWQgdG8gPGxpdGVyYWw+UFVCTElDPC9saXRlcmFs PiBhcmUgYXMgZm9sbG93czoKQEAgLTM4NSw2ICszOTAsMjQgQEAgR1JBTlQgPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPnJvbGVfbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLl0gVE8gPHJl cGxhY2UKICAgICAgPC9saXN0aXRlbT4KICAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgIDx2YXJs aXN0ZW50cnk+CisgICAgIDx0ZXJtPjxsaXRlcmFsPlJFQUQ8L2xpdGVyYWw+PC90ZXJtPgorICAg ICA8bGlzdGl0ZW0+CisgICAgICA8cGFyYT4KKyAgICAgICBBbGxvd3MgdG8gcmVhZCBhIHNjaGVt YSB2YXJpYWJsZS4KKyAgICAgIDwvcGFyYT4KKyAgICAgPC9saXN0aXRlbT4KKyAgICA8L3Zhcmxp c3RlbnRyeT4KKworICAgIDx2YXJsaXN0ZW50cnk+CisgICAgIDx0ZXJtPjxsaXRlcmFsPldSSVRF PC9saXRlcmFsPjwvdGVybT4KKyAgICAgPGxpc3RpdGVtPgorICAgICAgPHBhcmE+CisgICAgICAg QWxsb3dzIHRvIHNldCBhIHNjaGVtYSB2YXJpYWJsZS4KKyAgICAgIDwvcGFyYT4KKyAgICAgPC9s aXN0aXRlbT4KKyAgICA8L3Zhcmxpc3RlbnRyeT4KKwogICAgIDx2YXJsaXN0ZW50cnk+CiAgICAg IDx0ZXJtPjxsaXRlcmFsPkFMTCBQUklWSUxFR0VTPC9saXRlcmFsPjwvdGVybT4KICAgICAgPGxp c3RpdGVtPgpAQCAtNTUwLDYgKzU3Myw4IEBAIHJvbGVuYW1lPXh4eHggLS0gcHJpdmlsZWdlcyBn cmFudGVkIHRvIGEgcm9sZQogICAgICAgICAgICAgQyAtLSBDUkVBVEUKICAgICAgICAgICAgIGMg LS0gQ09OTkVDVAogICAgICAgICAgICAgVCAtLSBURU1QT1JBUlkKKyAgICAgICAgICAgIFMgLS0g UkVBRAorICAgICAgICAgICAgdyAtLSBXUklURQogICAgICAgYXJ3ZER4dCAtLSBBTEwgUFJJVklM RUdFUyAoZm9yIHRhYmxlcywgdmFyaWVzIGZvciBvdGhlciBvYmplY3RzKQogICAgICAgICAgICAg KiAtLSBncmFudCBvcHRpb24gZm9yIHByZWNlZGluZyBwcml2aWxlZ2UKIApkaWZmIC0tZ2l0IGEv ZG9jL3NyYy9zZ21sL3JlZi9sZXQuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvbGV0LnNnbWwKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uZThiZjNmNmRkNAotLS0gL2Rldi9u dWxsCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvbGV0LnNnbWwKQEAgLTAsMCArMSw5MCBAQAorPCEt LQorZG9jL3NyYy9zZ21sL3JlZi9sZXQuc2dtbAorUG9zdGdyZVNRTCBkb2N1bWVudGF0aW9uCist LT4KKworPHJlZmVudHJ5IGlkPSJzcWwtbGV0Ij4KKyA8aW5kZXh0ZXJtIHpvbmU9InNxbC1sZXQi PgorICA8cHJpbWFyeT5MRVQ8L3ByaW1hcnk+CisgPC9pbmRleHRlcm0+CisKKyA8cmVmbWV0YT4K KyAgPHJlZmVudHJ5dGl0bGU+TEVUPC9yZWZlbnRyeXRpdGxlPgorICA8bWFudm9sbnVtPjc8L21h bnZvbG51bT4KKyAgPHJlZm1pc2NpbmZvPlNRTCAtIExhbmd1YWdlIFN0YXRlbWVudHM8L3JlZm1p c2NpbmZvPgorIDwvcmVmbWV0YT4KKworIDxyZWZuYW1lZGl2PgorICA8cmVmbmFtZT5MRVQ8L3Jl Zm5hbWU+CisgIDxyZWZwdXJwb3NlPmNoYW5nZSBhIHNjaGVtYSB2YXJpYWJsZSdzIHZhbHVlPC9y ZWZwdXJwb3NlPgorIDwvcmVmbmFtZWRpdj4KKworIDxyZWZzeW5vcHNpc2Rpdj4KKzxzeW5vcHNp cz4KK0xFVCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c2NoZW1hX3ZhcmlhYmxlPC9y ZXBsYWNlYWJsZT4gPSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c3FsX2V4cHJlc3Np b248L3JlcGxhY2VhYmxlPgorPC9zeW5vcHNpcz4KKyA8L3JlZnN5bm9wc2lzZGl2PgorCisgPHJl ZnNlY3QxPgorICA8dGl0bGU+RGVzY3JpcHRpb248L3RpdGxlPgorCisgIDxwYXJhPgorICAgVGhl IDxjb21tYW5kPkxFVDwvY29tbWFuZD4gY29tbWFuZCB1cGRhdGVzIHRoZSBzcGVjaWZpZWQgc2No ZW1hIHZhcmlhYmxlJyB2YWx1ZS4KKyAgPC9wYXJhPgorCisgPC9yZWZzZWN0MT4KKworIDxyZWZz ZWN0MT4KKyAgPHRpdGxlPlBhcmFtZXRlcnM8L3RpdGxlPgorCisgIDx2YXJpYWJsZWxpc3Q+Cisg ICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPjxsaXRlcmFsPnNjaGVtYV92YXJpYWJsZTwvbGl0 ZXJhbD48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIFRoZSBuYW1l IG9mIHNjaGVtYSB2YXJpYWJsZS4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8 L3Zhcmxpc3RlbnRyeT4KKworICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT48bGl0ZXJhbD5z cWwgZXhwcmVzc2lvbjwvbGl0ZXJhbD48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFy YT4KKyAgICAgIEFuIFNRTCBleHByZXNzaW9uLCB0aGUgcmVzdWx0IGlzIGNhc3QgdG8gdGhlIHNj aGVtYSB2YXJpYWJsZSdzIHR5cGUuCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAg PC92YXJsaXN0ZW50cnk+CisgIDwvdmFyaWFibGVsaXN0PgorCisgIDxwYXJhPgorICAgRXhhbXBs ZToKKzxwcm9ncmFtbGlzdGluZz4KK0NSRUFURSBWQVJJQUJMRSBteXZhciBBUyBpbnRlZ2VyOwor TEVUIG15dmFyID0gMTA7CitMRVQgbXl2YXIgPSAoU0VMRUNUIHN1bSh2YWwpIEZST00gdGFiKTsK KzwvcHJvZ3JhbWxpc3Rpbmc+CisgIDwvcGFyYT4KKyA8L3JlZnNlY3QxPgorCisgPHJlZnNlY3Qx PgorICA8dGl0bGU+Q29tcGF0aWJpbGl0eTwvdGl0bGU+CisKKyAgPHBhcmE+CisgICA8IS0tIHRo aXMgZmVlbHMgbGlrZSBpdCBuZWVkcyB0byBiZSBtb3JlIHNwZWNpZmljLAorICAgICAgICBidXQg SSBkb24ndCBrbm93IGVub3VnaCB0byBtYWtlIGl0IHNvIC0tPgorICAgPGxpdGVyYWw+TEVUPC9s aXRlcmFsPiBleHRlbmRzIHN5bnRheCBkZWZpbmVkIGluIHRoZSBTUUwKKyAgIHN0YW5kYXJkLiBU aGUgc3RhbmRhcmQga25vd3MgPGxpdGVyYWw+U0VUPC9saXRlcmFsPiBjb21tYW5kLAorICAgdGhh dCBpcyB1c2VkIGZvciBkaWZmZXJlbnQgcHVycG91c2UgaW4gUG9zdGdyZVNRTC4KKyAgPC9wYXJh PgorIDwvcmVmc2VjdDE+CisKKyA8cmVmc2VjdDE+CisgIDx0aXRsZT5TZWUgQWxzbzwvdGl0bGU+ CisKKyAgPHNpbXBsZWxpc3QgdHlwZT0iaW5saW5lIj4KKyAgIDxtZW1iZXI+PHhyZWYgbGlua2Vu ZD0ic3FsLWNyZWF0ZXZhcmlhYmxlIi8+PC9tZW1iZXI+CisgICA8bWVtYmVyPjx4cmVmIGxpbmtl bmQ9InNxbC1kcm9wdmFyaWFibGUiLz48L21lbWJlcj4KKyAgPC9zaW1wbGVsaXN0PgorIDwvcmVm c2VjdDE+Cis8L3JlZmVudHJ5PgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9yZXZva2Uu c2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvcmV2b2tlLnNnbWwKaW5kZXggNTMxN2Y4Y2NiYS4uODQz NWUwNTk1NyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9yZXZva2Uuc2dtbAorKysgYi9k b2Mvc3JjL3NnbWwvcmVmL3Jldm9rZS5zZ21sCkBAIC0xMDgsNiArMTA4LDEyIEBAIFJFVk9LRSBb IEdSQU5UIE9QVElPTiBGT1IgXQogUkVWT0tFIFsgQURNSU4gT1BUSU9OIEZPUiBdCiAgICAgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJvbGVfbmFtZTwvcmVwbGFjZWFibGU+IFssIC4u Ll0gRlJPTSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cm9sZV9uYW1lPC9yZXBsYWNl YWJsZT4gWywgLi4uXQogICAgIFsgQ0FTQ0FERSB8IFJFU1RSSUNUIF0KKworUkVWT0tFIFsgR1JB TlQgT1BUSU9OIEZPUiBdCisgICAgeyB7IFJFQUQgfCBXUklURSB9IFssIC4uLl0gfCBBTEwgWyBQ UklWSUxFR0VTIF0gfQorICAgIE9OIFZBUklBQkxFIDxyZXBsYWNlYWJsZT52YXJpYWJsZV9uYW1l PC9yZXBsYWNlYWJsZT4gWywgLi4uXQorICAgIEZST00geyBbIEdST1VQIF0gPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPnJvbGVfbmFtZTwvcmVwbGFjZWFibGU+IHwgUFVCTElDIH0gWywg Li4uXQorICAgIFsgQ0FTQ0FERSB8IFJFU1RSSUNUIF0KIDwvc3lub3BzaXM+CiAgPC9yZWZzeW5v cHNpc2Rpdj4KIApkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZmVyZW5jZS5zZ21sIGIvZG9j L3NyYy9zZ21sL3JlZmVyZW5jZS5zZ21sCmluZGV4IGRiNGY0MTY3ZTMuLmFmY2M2OTQzMmQgMTAw NjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWZlcmVuY2Uuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwv cmVmZXJlbmNlLnNnbWwKQEAgLTEyNyw2ICsxMjcsNyBAQAogICAgJmNyZWF0ZVR5cGU7CiAgICAm Y3JlYXRlVXNlcjsKICAgICZjcmVhdGVVc2VyTWFwcGluZzsKKyAgICZjcmVhdGVWYXJpYWJsZTsK ICAgICZjcmVhdGVWaWV3OwogICAgJmRlYWxsb2NhdGU7CiAgICAmZGVjbGFyZTsKQEAgLTE3NSw2 ICsxNzYsNyBAQAogICAgJmRyb3BUeXBlOwogICAgJmRyb3BVc2VyOwogICAgJmRyb3BVc2VyTWFw cGluZzsKKyAgICZkcm9wVmFyaWFibGU7CiAgICAmZHJvcFZpZXc7CiAgICAmZW5kOwogICAgJmV4 ZWN1dGU7CkBAIC0xODMsNiArMTg1LDcgQEAKICAgICZncmFudDsKICAgICZpbXBvcnRGb3JlaWdu U2NoZW1hOwogICAgJmluc2VydDsKKyAgICZsZXQ7CiAgICAmbGlzdGVuOwogICAgJmxvYWQ7CiAg ICAmbG9jazsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvTWFrZWZpbGUgYi9zcmMv YmFja2VuZC9jYXRhbG9nL01ha2VmaWxlCmluZGV4IDA4NjUyNDBmMTEuLjFmN2M0ZDEyMjMgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvTWFrZWZpbGUKKysrIGIvc3JjL2JhY2tlbmQv Y2F0YWxvZy9NYWtlZmlsZQpAQCAtMTksNyArMTksNyBAQCBPQkpTID0gY2F0YWxvZy5vIGRlcGVu ZGVuY3kubyBoZWFwLm8gaW5kZXgubyBpbmRleGluZy5vIG5hbWVzcGFjZS5vIGFjbGNoay5vIFwK ICAgICAgICBwZ19kZXBlbmQubyBwZ19lbnVtLm8gcGdfaW5oZXJpdHMubyBwZ19sYXJnZW9iamVj dC5vIHBnX25hbWVzcGFjZS5vIFwKICAgICAgICBwZ19vcGVyYXRvci5vIHBnX3Byb2MubyBwZ19w dWJsaWNhdGlvbi5vIHBnX3JhbmdlLm8gXAogCSAgIHBnX2RiX3JvbGVfc2V0dGluZy5vIHBnX3No ZGVwZW5kLm8gcGdfc3Vic2NyaXB0aW9uLm8gcGdfdHlwZS5vIFwKLQkgICBzdG9yYWdlLm8gdG9h c3RpbmcubworCSAgIHBnX3ZhcmlhYmxlLm8gc3RvcmFnZS5vIHRvYXN0aW5nLm8KIAogQktJRklM RVMgPSBwb3N0Z3Jlcy5ia2kgcG9zdGdyZXMuZGVzY3JpcHRpb24gcG9zdGdyZXMuc2hkZXNjcmlw dGlvbgogCkBAIC00Niw3ICs0Niw3IEBAIENBVEFMT0dfSEVBREVSUyA6PSBcCiAJcGdfZGVmYXVs dF9hY2wuaCBwZ19pbml0X3ByaXZzLmggcGdfc2VjbGFiZWwuaCBwZ19zaHNlY2xhYmVsLmggXAog CXBnX2NvbGxhdGlvbi5oIHBnX3BhcnRpdGlvbmVkX3RhYmxlLmggcGdfcmFuZ2UuaCBwZ190cmFu c2Zvcm0uaCBcCiAJcGdfc2VxdWVuY2UuaCBwZ19wdWJsaWNhdGlvbi5oIHBnX3B1YmxpY2F0aW9u X3JlbC5oIHBnX3N1YnNjcmlwdGlvbi5oIFwKLQlwZ19zdWJzY3JpcHRpb25fcmVsLmgKKwlwZ19z dWJzY3JpcHRpb25fcmVsLmggcGdfdmFyaWFibGUuaAogCiBHRU5FUkFURURfSEVBREVSUyA6PSAk KENBVEFMT0dfSEVBREVSUzolLmg9JV9kLmgpIHNjaGVtYXBnLmgKIApkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvY2F0YWxvZy9hY2xjaGsuYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvYWNsY2hrLmMK aW5kZXggNTc4ZTRjNjU5Mi4uODY5MTdlMTVhOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0 YWxvZy9hY2xjaGsuYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2FjbGNoay5jCkBAIC01Nyw2 ICs1Nyw3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190c19wYXJzZXIuaCIKICNpbmNsdWRlICJj YXRhbG9nL3BnX3RzX3RlbXBsYXRlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190cmFuc2Zvcm0u aCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3ZhcmlhYmxlLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMv ZGJjb21tYW5kcy5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2V2ZW50X3RyaWdnZXIuaCIKICNpbmNs dWRlICJjb21tYW5kcy9leHRlbnNpb24uaCIKQEAgLTExMiw2ICsxMTMsNyBAQCBzdGF0aWMgdm9p ZCBFeGVjR3JhbnRfTGFyZ2VvYmplY3QoSW50ZXJuYWxHcmFudCAqZ3JhbnRTdG10KTsKIHN0YXRp YyB2b2lkIEV4ZWNHcmFudF9OYW1lc3BhY2UoSW50ZXJuYWxHcmFudCAqZ3JhbnRTdG10KTsKIHN0 YXRpYyB2b2lkIEV4ZWNHcmFudF9UYWJsZXNwYWNlKEludGVybmFsR3JhbnQgKmdyYW50U3RtdCk7 CiBzdGF0aWMgdm9pZCBFeGVjR3JhbnRfVHlwZShJbnRlcm5hbEdyYW50ICpncmFudFN0bXQpOwor c3RhdGljIHZvaWQgRXhlY0dyYW50X1ZhcmlhYmxlKEludGVybmFsR3JhbnQgKmdyYW50U3RtdCk7 CiAKIHN0YXRpYyB2b2lkIFNldERlZmF1bHRBQ0xzSW5TY2hlbWFzKEludGVybmFsRGVmYXVsdEFD TCAqaWFjbHMsIExpc3QgKm5zcG5hbWVzKTsKIHN0YXRpYyB2b2lkIFNldERlZmF1bHRBQ0woSW50 ZXJuYWxEZWZhdWx0QUNMICppYWNscyk7CkBAIC0yODQsNiArMjg2LDkgQEAgcmVzdHJpY3RfYW5k X2NoZWNrX2dyYW50KGJvb2wgaXNfZ3JhbnQsIEFjbE1vZGUgYXZhaWxfZ29wdGlvbnMsIGJvb2wg YWxsX3ByaXZzLAogCQljYXNlIE9CSkVDVF9UWVBFOgogCQkJd2hvbGVfbWFzayA9IEFDTF9BTExf UklHSFRTX1RZUEU7CiAJCQlicmVhazsKKwkJY2FzZSBPQkpFQ1RfVkFSSUFCTEU6CisJCQl3aG9s ZV9tYXNrID0gQUNMX0FMTF9SSUdIVFNfVkFSSUFCTEU7CisJCQlicmVhazsKIAkJZGVmYXVsdDoK IAkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgb2JqZWN0IHR5cGU6ICVkIiwgb2JqdHlwZSk7 CiAJCQkvKiBub3QgcmVhY2hlZCwgYnV0IGtlZXAgY29tcGlsZXIgcXVpZXQgKi8KQEAgLTUwNyw2 ICs1MTIsMTAgQEAgRXhlY3V0ZUdyYW50U3RtdChHcmFudFN0bXQgKnN0bXQpCiAJCQlhbGxfcHJp dmlsZWdlcyA9IEFDTF9BTExfUklHSFRTX0ZPUkVJR05fU0VSVkVSOwogCQkJZXJyb3Jtc2cgPSBn ZXR0ZXh0X25vb3AoImludmFsaWQgcHJpdmlsZWdlIHR5cGUgJXMgZm9yIGZvcmVpZ24gc2VydmVy Iik7CiAJCQlicmVhazsKKwkJY2FzZSBPQkpFQ1RfVkFSSUFCTEU6CisJCQlhbGxfcHJpdmlsZWdl cyA9IEFDTF9BTExfUklHSFRTX1ZBUklBQkxFOworCQkJZXJyb3Jtc2cgPSBnZXR0ZXh0X25vb3Ao ImludmFsaWQgcHJpdmlsZWdlIHR5cGUgJXMgZm9yIHNjaGVtYSB2YXJpYWJsZSIpOworCQkJYnJl YWs7CiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIEdyYW50U3RtdC5v Ymp0eXBlOiAlZCIsCiAJCQkJIChpbnQpIHN0bXQtPm9ianR5cGUpOwpAQCAtNjA5LDYgKzYxOCw5 IEBAIEV4ZWNHcmFudFN0bXRfb2lkcyhJbnRlcm5hbEdyYW50ICppc3RtdCkKIAkJY2FzZSBPQkpF Q1RfVEFCTEVTUEFDRToKIAkJCUV4ZWNHcmFudF9UYWJsZXNwYWNlKGlzdG10KTsKIAkJCWJyZWFr OworCQljYXNlIE9CSkVDVF9WQVJJQUJMRToKKwkJCUV4ZWNHcmFudF9WYXJpYWJsZShpc3RtdCk7 CisJCQlicmVhazsKIAkJZGVmYXVsdDoKIAkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgR3Jh bnRTdG10Lm9ianR5cGU6ICVkIiwKIAkJCQkgKGludCkgaXN0bXQtPm9ianR5cGUpOwpAQCAtNzY4 LDYgKzc4MCwxNiBAQCBvYmplY3ROYW1lc1RvT2lkcyhPYmplY3RUeXBlIG9ianR5cGUsIExpc3Qg Km9iam5hbWVzKQogCQkJCW9iamVjdHMgPSBsYXBwZW5kX29pZChvYmplY3RzLCBzcnZpZCk7CiAJ CQl9CiAJCQlicmVhazsKKwkJY2FzZSBPQkpFQ1RfVkFSSUFCTEU6CisJCQlmb3JlYWNoKGNlbGws IG9iam5hbWVzKQorCQkJeworCQkJCVJhbmdlVmFyICAgKnZhcnZhciA9IChSYW5nZVZhciAqKSBs Zmlyc3QoY2VsbCk7CisJCQkJT2lkCQkJcmVsT2lkOworCisJCQkJcmVsT2lkID0gbG9va3VwX3Zh cmlhYmxlKHZhcnZhci0+c2NoZW1hbmFtZSwgdmFydmFyLT5yZWxuYW1lLCBmYWxzZSk7CisJCQkJ b2JqZWN0cyA9IGxhcHBlbmRfb2lkKG9iamVjdHMsIHJlbE9pZCk7CisJCQl9CisJCQlicmVhazsK IAkJZGVmYXVsdDoKIAkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgR3JhbnRTdG10Lm9ianR5 cGU6ICVkIiwKIAkJCQkgKGludCkgb2JqdHlwZSk7CkBAIC04NTUsNiArODc3LDMxIEBAIG9iamVj dHNJblNjaGVtYVRvT2lkcyhPYmplY3RUeXBlIG9ianR5cGUsIExpc3QgKm5zcG5hbWVzKQogCQkJ CQloZWFwX2Nsb3NlKHJlbCwgQWNjZXNzU2hhcmVMb2NrKTsKIAkJCQl9CiAJCQkJYnJlYWs7CisJ CQljYXNlIE9CSkVDVF9WQVJJQUJMRToKKwkJCQl7CisJCQkJCVNjYW5LZXlEYXRhIGtleTsKKwkJ CQkJUmVsYXRpb24JcmVsOworCQkJCQlIZWFwU2NhbkRlc2Mgc2NhbjsKKwkJCQkJSGVhcFR1cGxl CXR1cGxlOworCisJCQkJCVNjYW5LZXlJbml0KCZrZXksCisJCQkJCQkJCUFudW1fcGdfdmFyaWFi bGVfdmFybmFtZXNwYWNlLAorCQkJCQkJCQlCVEVxdWFsU3RyYXRlZ3lOdW1iZXIsIEZfT0lERVEs CisJCQkJCQkJCU9iamVjdElkR2V0RGF0dW0obmFtZXNwYWNlSWQpKTsKKworCQkJCQlyZWwgPSBo ZWFwX29wZW4oVmFyaWFibGVSZWxhdGlvbklkLCBBY2Nlc3NTaGFyZUxvY2spOworCQkJCQlzY2Fu ID0gaGVhcF9iZWdpbnNjYW5fY2F0YWxvZyhyZWwsIDEsICZrZXkpOworCisJCQkJCXdoaWxlICgo dHVwbGUgPSBoZWFwX2dldG5leHQoc2NhbiwgRm9yd2FyZFNjYW5EaXJlY3Rpb24pKSAhPSBOVUxM KQorCQkJCQl7CisJCQkJCQlvYmplY3RzID0gbGFwcGVuZF9vaWQob2JqZWN0cywgSGVhcFR1cGxl R2V0T2lkKHR1cGxlKSk7CisJCQkJCX0KKworCQkJCQloZWFwX2VuZHNjYW4oc2Nhbik7CisJCQkJ CWhlYXBfY2xvc2UocmVsLCBBY2Nlc3NTaGFyZUxvY2spOworCQkJCX0KKwkJCQlicmVhazsKKwog CQkJZGVmYXVsdDoKIAkJCQkvKiBzaG91bGQgbm90IGhhcHBlbiAqLwogCQkJCWVsb2coRVJST1Is ICJ1bnJlY29nbml6ZWQgR3JhbnRTdG10Lm9ianR5cGU6ICVkIiwKQEAgLTEwMTgsNiArMTA2NSwx MCBAQCBFeGVjQWx0ZXJEZWZhdWx0UHJpdmlsZWdlc1N0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBB bHRlckRlZmF1bHRQcml2aWxlZ2VzU3RtdCAqcwogCQkJYWxsX3ByaXZpbGVnZXMgPSBBQ0xfQUxM X1JJR0hUU19TQ0hFTUE7CiAJCQllcnJvcm1zZyA9IGdldHRleHRfbm9vcCgiaW52YWxpZCBwcml2 aWxlZ2UgdHlwZSAlcyBmb3Igc2NoZW1hIik7CiAJCQlicmVhazsKKwkJY2FzZSBPQkpFQ1RfVkFS SUFCTEU6CisJCQlhbGxfcHJpdmlsZWdlcyA9IEFDTF9BTExfUklHSFRTX1ZBUklBQkxFOworCQkJ ZXJyb3Jtc2cgPSBnZXR0ZXh0X25vb3AoImludmFsaWQgcHJpdmlsZWdlIHR5cGUgJXMgZm9yIHNj aGVtYSB2YXJpYWJsZSIpOworCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVSUk9SLCAi dW5yZWNvZ25pemVkIEdyYW50U3RtdC5vYmp0eXBlOiAlZCIsCiAJCQkJIChpbnQpIGFjdGlvbi0+ b2JqdHlwZSk7CkBAIC0xMjE1LDYgKzEyNjYsMTIgQEAgU2V0RGVmYXVsdEFDTChJbnRlcm5hbERl ZmF1bHRBQ0wgKmlhY2xzKQogCQkJCXRoaXNfcHJpdmlsZWdlcyA9IEFDTF9BTExfUklHSFRTX1ND SEVNQTsKIAkJCWJyZWFrOwogCisJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgorCQkJb2JqdHlwZSA9 IERFRkFDTE9CSl9WQVJJQUJMRTsKKwkJCWlmIChpYWNscy0+YWxsX3ByaXZzICYmIHRoaXNfcHJp dmlsZWdlcyA9PSBBQ0xfTk9fUklHSFRTKQorCQkJCXRoaXNfcHJpdmlsZWdlcyA9IEFDTF9BTExf UklHSFRTX1ZBUklBQkxFOworCQkJYnJlYWs7CisKIAkJZGVmYXVsdDoKIAkJCWVsb2coRVJST1Is ICJ1bnJlY29nbml6ZWQgb2JqdHlwZTogJWQiLAogCQkJCSAoaW50KSBpYWNscy0+b2JqdHlwZSk7 CkBAIC0xNDQxLDYgKzE0OTgsOSBAQCBSZW1vdmVSb2xlRnJvbU9iamVjdEFDTChPaWQgcm9sZWlk LCBPaWQgY2xhc3NpZCwgT2lkIG9iamlkKQogCQkJY2FzZSBERUZBQ0xPQkpfTkFNRVNQQUNFOgog CQkJCWlhY2xzLm9ianR5cGUgPSBPQkpFQ1RfU0NIRU1BOwogCQkJCWJyZWFrOworCQkJY2FzZSBE RUZBQ0xPQkpfVkFSSUFCTEU6CisJCQkJaWFjbHMub2JqdHlwZSA9IE9CSkVDVF9WQVJJQUJMRTsK KwkJCQlicmVhazsKIAkJCWRlZmF1bHQ6CiAJCQkJLyogU2hvdWxkbid0IGdldCBoZXJlICovCiAJ CQkJZWxvZyhFUlJPUiwgInVuZXhwZWN0ZWQgZGVmYXVsdCBBQ0wgdHlwZTogJWQiLApAQCAtMzI2 Niw2ICszMzI2LDEyOSBAQCBFeGVjR3JhbnRfVHlwZShJbnRlcm5hbEdyYW50ICppc3RtdCkKIAlo ZWFwX2Nsb3NlKHJlbGF0aW9uLCBSb3dFeGNsdXNpdmVMb2NrKTsKIH0KIAorc3RhdGljIHZvaWQK K0V4ZWNHcmFudF9WYXJpYWJsZShJbnRlcm5hbEdyYW50ICppc3RtdCkKK3sKKwlSZWxhdGlvbgly ZWxhdGlvbjsKKwlMaXN0Q2VsbCAgICpjZWxsOworCisJaWYgKGlzdG10LT5hbGxfcHJpdnMgJiYg aXN0bXQtPnByaXZpbGVnZXMgPT0gQUNMX05PX1JJR0hUUykKKwkJaXN0bXQtPnByaXZpbGVnZXMg PSBBQ0xfQUxMX1JJR0hUU19WQVJJQUJMRTsKKworCXJlbGF0aW9uID0gaGVhcF9vcGVuKFZhcmlh YmxlUmVsYXRpb25JZCwgUm93RXhjbHVzaXZlTG9jayk7CisKKwlmb3JlYWNoKGNlbGwsIGlzdG10 LT5vYmplY3RzKQorCXsKKwkJT2lkCQkJdmFySWQgPSBsZmlyc3Rfb2lkKGNlbGwpOworCQlGb3Jt X3BnX3ZhcmlhYmxlIHBnX3ZhcmlhYmxlX3R1cGxlOworCQlEYXR1bQkJYWNsRGF0dW07CisJCWJv b2wJCWlzTnVsbDsKKwkJQWNsTW9kZQkJYXZhaWxfZ29wdGlvbnM7CisJCUFjbE1vZGUJCXRoaXNf cHJpdmlsZWdlczsKKwkJQWNsCQkgICAqb2xkX2FjbDsKKwkJQWNsCQkgICAqbmV3X2FjbDsKKwkJ T2lkCQkJZ3JhbnRvcklkOworCQlPaWQJCQlvd25lcklkOworCQlIZWFwVHVwbGUJdHVwbGU7CisJ CUhlYXBUdXBsZQluZXd0dXBsZTsKKwkJRGF0dW0JCXZhbHVlc1tOYXR0c19wZ192YXJpYWJsZV07 CisJCWJvb2wJCW51bGxzW05hdHRzX3BnX3ZhcmlhYmxlXTsKKwkJYm9vbAkJcmVwbGFjZXNbTmF0 dHNfcGdfdmFyaWFibGVdOworCQlpbnQJCQlub2xkbWVtYmVyczsKKwkJaW50CQkJbm5ld21lbWJl cnM7CisJCU9pZAkJICAgKm9sZG1lbWJlcnM7CisJCU9pZAkJICAgKm5ld21lbWJlcnM7CisKKwkJ dHVwbGUgPSBTZWFyY2hTeXNDYWNoZTEoVkFSSUFCTEVPSUQsIE9iamVjdElkR2V0RGF0dW0odmFy SWQpKTsKKwkJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHR1cGxlKSkKKwkJCWVsb2coRVJST1IsICJj YWNoZSBsb29rdXAgZmFpbGVkIGZvciBzY2hlbWEgdmFyaWFibGVzICV1IiwgdmFySWQpOworCisJ CXBnX3ZhcmlhYmxlX3R1cGxlID0gKEZvcm1fcGdfdmFyaWFibGUpIEdFVFNUUlVDVCh0dXBsZSk7 CisKKwkJLyoKKwkJICogR2V0IG93bmVyIElEIGFuZCB3b3JraW5nIGNvcHkgb2YgZXhpc3Rpbmcg QUNMLiBJZiB0aGVyZSdzIG5vIEFDTCwKKwkJICogc3Vic3RpdHV0ZSB0aGUgcHJvcGVyIGRlZmF1 bHQuCisJCSAqLworCQlvd25lcklkID0gcGdfdmFyaWFibGVfdHVwbGUtPnZhcm93bmVyOworCQlh Y2xEYXR1bSA9IFN5c0NhY2hlR2V0QXR0cihWQVJJQUJMRU9JRCwgdHVwbGUsIEFudW1fcGdfdmFy aWFibGVfdmFyYWNsLAorCQkJCQkJCQkgICAmaXNOdWxsKTsKKwkJaWYgKGlzTnVsbCkKKwkJewor CQkJb2xkX2FjbCA9IGFjbGRlZmF1bHQoT0JKRUNUX1ZBUklBQkxFLCBvd25lcklkKTsKKwkJCS8q IFRoZXJlIGFyZSBubyBvbGQgbWVtYmVyIHJvbGVzIGFjY29yZGluZyB0byB0aGUgY2F0YWxvZ3Mg Ki8KKwkJCW5vbGRtZW1iZXJzID0gMDsKKwkJCW9sZG1lbWJlcnMgPSBOVUxMOworCQl9CisJCWVs c2UKKwkJeworCQkJb2xkX2FjbCA9IERhdHVtR2V0QWNsUENvcHkoYWNsRGF0dW0pOworCQkJLyog R2V0IHRoZSByb2xlcyBtZW50aW9uZWQgaW4gdGhlIGV4aXN0aW5nIEFDTCAqLworCQkJbm9sZG1l bWJlcnMgPSBhY2xtZW1iZXJzKG9sZF9hY2wsICZvbGRtZW1iZXJzKTsKKwkJfQorCisJCS8qIERl dGVybWluZSBJRCB0byBkbyB0aGUgZ3JhbnQgYXMsIGFuZCBhdmFpbGFibGUgZ3JhbnQgb3B0aW9u cyAqLworCQlzZWxlY3RfYmVzdF9ncmFudG9yKEdldFVzZXJJZCgpLCBpc3RtdC0+cHJpdmlsZWdl cywKKwkJCQkJCQlvbGRfYWNsLCBvd25lcklkLAorCQkJCQkJCSZncmFudG9ySWQsICZhdmFpbF9n b3B0aW9ucyk7CisKKwkJLyoKKwkJICogUmVzdHJpY3QgdGhlIHByaXZpbGVnZXMgdG8gd2hhdCB3 ZSBjYW4gYWN0dWFsbHkgZ3JhbnQsIGFuZCBlbWl0IHRoZQorCQkgKiBzdGFuZGFyZHMtbWFuZGF0 ZWQgd2FybmluZyBhbmQgZXJyb3IgbWVzc2FnZXMuCisJCSAqLworCQl0aGlzX3ByaXZpbGVnZXMg PQorCQkJcmVzdHJpY3RfYW5kX2NoZWNrX2dyYW50KGlzdG10LT5pc19ncmFudCwgYXZhaWxfZ29w dGlvbnMsCisJCQkJCQkJCQkgaXN0bXQtPmFsbF9wcml2cywgaXN0bXQtPnByaXZpbGVnZXMsCisJ CQkJCQkJCQkgdmFySWQsIGdyYW50b3JJZCwgT0JKRUNUX1ZBUklBQkxFLAorCQkJCQkJCQkJIE5h bWVTdHIocGdfdmFyaWFibGVfdHVwbGUtPnZhcm5hbWUpLAorCQkJCQkJCQkJIDAsIE5VTEwpOwor CisJCS8qCisJCSAqIEdlbmVyYXRlIG5ldyBBQ0wuCisJCSAqLworCQluZXdfYWNsID0gbWVyZ2Vf YWNsX3dpdGhfZ3JhbnQob2xkX2FjbCwgaXN0bXQtPmlzX2dyYW50LAorCQkJCQkJCQkJICAgaXN0 bXQtPmdyYW50X29wdGlvbiwgaXN0bXQtPmJlaGF2aW9yLAorCQkJCQkJCQkJICAgaXN0bXQtPmdy YW50ZWVzLCB0aGlzX3ByaXZpbGVnZXMsCisJCQkJCQkJCQkgICBncmFudG9ySWQsIG93bmVySWQp OworCisJCS8qCisJCSAqIFdlIG5lZWQgdGhlIG1lbWJlcnMgb2YgYm90aCBvbGQgYW5kIG5ldyBB Q0xzIHNvIHdlIGNhbiBjb3JyZWN0IHRoZQorCQkgKiBzaGFyZWQgZGVwZW5kZW5jeSBpbmZvcm1h dGlvbi4KKwkJICovCisJCW5uZXdtZW1iZXJzID0gYWNsbWVtYmVycyhuZXdfYWNsLCAmbmV3bWVt YmVycyk7CisKKwkJLyogZmluaXNoZWQgYnVpbGRpbmcgbmV3IEFDTCB2YWx1ZSwgbm93IGluc2Vy dCBpdCAqLworCQlNZW1TZXQodmFsdWVzLCAwLCBzaXplb2YodmFsdWVzKSk7CisJCU1lbVNldChu dWxscywgZmFsc2UsIHNpemVvZihudWxscykpOworCQlNZW1TZXQocmVwbGFjZXMsIGZhbHNlLCBz aXplb2YocmVwbGFjZXMpKTsKKworCQlyZXBsYWNlc1tBbnVtX3BnX3ZhcmlhYmxlX3ZhcmFjbCAt IDFdID0gdHJ1ZTsKKwkJdmFsdWVzW0FudW1fcGdfdmFyaWFibGVfdmFyYWNsIC0gMV0gPSBQb2lu dGVyR2V0RGF0dW0obmV3X2FjbCk7CisKKwkJbmV3dHVwbGUgPSBoZWFwX21vZGlmeV90dXBsZSh0 dXBsZSwgUmVsYXRpb25HZXREZXNjcihyZWxhdGlvbiksIHZhbHVlcywKKwkJCQkJCQkJCSBudWxs cywgcmVwbGFjZXMpOworCisJCUNhdGFsb2dUdXBsZVVwZGF0ZShyZWxhdGlvbiwgJm5ld3R1cGxl LT50X3NlbGYsIG5ld3R1cGxlKTsKKworCQkvKiBVcGRhdGUgaW5pdGlhbCBwcml2aWxlZ2VzIGZv ciBleHRlbnNpb25zICovCisJCXJlY29yZEV4dGVuc2lvbkluaXRQcml2KHZhcklkLCBWYXJpYWJs ZVJlbGF0aW9uSWQsIDAsIG5ld19hY2wpOworCisJCS8qIFVwZGF0ZSB0aGUgc2hhcmVkIGRlcGVu ZGVuY3kgQUNMIGluZm8gKi8KKwkJdXBkYXRlQWNsRGVwZW5kZW5jaWVzKFZhcmlhYmxlUmVsYXRp b25JZCwgdmFySWQsIDAsCisJCQkJCQkJICBvd25lcklkLAorCQkJCQkJCSAgbm9sZG1lbWJlcnMs IG9sZG1lbWJlcnMsCisJCQkJCQkJICBubmV3bWVtYmVycywgbmV3bWVtYmVycyk7CisKKwkJUmVs ZWFzZVN5c0NhY2hlKHR1cGxlKTsKKworCQlwZnJlZShuZXdfYWNsKTsKKworCQkvKiBwcmV2ZW50 IGVycm9yIHdoZW4gcHJvY2Vzc2luZyBkdXBsaWNhdGUgb2JqZWN0cyAqLworCQlDb21tYW5kQ291 bnRlckluY3JlbWVudCgpOworCX0KKworCWhlYXBfY2xvc2UocmVsYXRpb24sIFJvd0V4Y2x1c2l2 ZUxvY2spOworfQorCiAKIHN0YXRpYyBBY2xNb2RlCiBzdHJpbmdfdG9fcHJpdmlsZWdlKGNvbnN0 IGNoYXIgKnByaXZuYW1lKQpAQCAtMzI5OCw2ICszNDgxLDEwIEBAIHN0cmluZ190b19wcml2aWxl Z2UoY29uc3QgY2hhciAqcHJpdm5hbWUpCiAJCXJldHVybiBBQ0xfQ09OTkVDVDsKIAlpZiAoc3Ry Y21wKHByaXZuYW1lLCAicnVsZSIpID09IDApCiAJCXJldHVybiAwOwkJCQkvKiBpZ25vcmUgb2xk IFJVTEUgcHJpdmlsZWdlcyAqLworCWlmIChzdHJjbXAocHJpdm5hbWUsICJyZWFkIikgPT0gMCkK KwkJcmV0dXJuIEFDTF9SRUFEOworCWlmIChzdHJjbXAocHJpdm5hbWUsICJ3cml0ZSIpID09IDAp CisJCXJldHVybiBBQ0xfV1JJVEU7CiAJZXJlcG9ydChFUlJPUiwKIAkJCShlcnJjb2RlKEVSUkNP REVfU1lOVEFYX0VSUk9SKSwKIAkJCSBlcnJtc2coInVucmVjb2duaXplZCBwcml2aWxlZ2UgdHlw ZSBcIiVzXCIiLCBwcml2bmFtZSkpKTsKQEAgLTMzMzMsNiArMzUyMCwxMCBAQCBwcml2aWxlZ2Vf dG9fc3RyaW5nKEFjbE1vZGUgcHJpdmlsZWdlKQogCQkJcmV0dXJuICJURU1QIjsKIAkJY2FzZSBB Q0xfQ09OTkVDVDoKIAkJCXJldHVybiAiQ09OTkVDVCI7CisJCWNhc2UgQUNMX1JFQUQ6CisJCQly ZXR1cm4gIlJFQUQiOworCQljYXNlIEFDTF9XUklURToKKwkJCXJldHVybiAiV1JJVEUiOwogCQlk ZWZhdWx0OgogCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBwcml2aWxlZ2U6ICVkIiwgKGlu dCkgcHJpdmlsZWdlKTsKIAl9CkBAIC0zNDU2LDYgKzM2NDcsOSBAQCBhY2xjaGVja19lcnJvcihB Y2xSZXN1bHQgYWNsZXJyLCBPYmplY3RUeXBlIG9ianR5cGUsCiAJCQkJCWNhc2UgT0JKRUNUX1RZ UEU6CiAJCQkJCQltc2cgPSBnZXR0ZXh0X25vb3AoInBlcm1pc3Npb24gZGVuaWVkIGZvciB0eXBl ICVzIik7CiAJCQkJCQlicmVhazsKKwkJCQkJY2FzZSBPQkpFQ1RfVkFSSUFCTEU6CisJCQkJCQlt c2cgPSBnZXR0ZXh0X25vb3AoInBlcm1pc3Npb24gZGVuaWVkIGZvciBzY2hlbWEgdmFyaWFibGUg JXMiKTsKKwkJCQkJCWJyZWFrOwogCQkJCQljYXNlIE9CSkVDVF9WSUVXOgogCQkJCQkJbXNnID0g Z2V0dGV4dF9ub29wKCJwZXJtaXNzaW9uIGRlbmllZCBmb3IgdmlldyAlcyIpOwogCQkJCQkJYnJl YWs7CkBAIC0zNTY2LDYgKzM3NjAsOSBAQCBhY2xjaGVja19lcnJvcihBY2xSZXN1bHQgYWNsZXJy LCBPYmplY3RUeXBlIG9ianR5cGUsCiAJCQkJCWNhc2UgT0JKRUNUX1RZUEU6CiAJCQkJCQltc2cg PSBnZXR0ZXh0X25vb3AoIm11c3QgYmUgb3duZXIgb2YgdHlwZSAlcyIpOwogCQkJCQkJYnJlYWs7 CisJCQkJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgorCQkJCQkJbXNnID0gZ2V0dGV4dF9ub29wKCJt dXN0IGJlIG93bmVyIG9mIHNjaGVtYSB2YXJpYWJsZSAlcyIpOworCQkJCQkJYnJlYWs7CiAJCQkJ CWNhc2UgT0JKRUNUX1ZJRVc6CiAJCQkJCQltc2cgPSBnZXR0ZXh0X25vb3AoIm11c3QgYmUgb3du ZXIgb2YgdmlldyAlcyIpOwogCQkJCQkJYnJlYWs7CkBAIC0zNzEwLDYgKzM5MDcsOCBAQCBwZ19h Y2xtYXNrKE9iamVjdFR5cGUgb2JqdHlwZSwgT2lkIHRhYmxlX29pZCwgQXR0ck51bWJlciBhdHRu dW0sIE9pZCByb2xlaWQsCiAJCQlyZXR1cm4gQUNMX05PX1JJR0hUUzsKIAkJY2FzZSBPQkpFQ1Rf VFlQRToKIAkJCXJldHVybiBwZ190eXBlX2FjbG1hc2sodGFibGVfb2lkLCByb2xlaWQsIG1hc2ss IGhvdyk7CisJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgorCQkJcmV0dXJuIHBnX3ZhcmlhYmxlX2Fj bG1hc2sodGFibGVfb2lkLCByb2xlaWQsIG1hc2ssIGhvdyk7CiAJCWRlZmF1bHQ6CiAJCQllbG9n KEVSUk9SLCAidW5yZWNvZ25pemVkIG9ianR5cGU6ICVkIiwKIAkJCQkgKGludCkgb2JqdHlwZSk7 CkBAIC00NDk5LDYgKzQ2OTgsNjcgQEAgcGdfdHlwZV9hY2xtYXNrKE9pZCB0eXBlX29pZCwgT2lk IHJvbGVpZCwgQWNsTW9kZSBtYXNrLCBBY2xNYXNrSG93IGhvdykKIAlyZXR1cm4gcmVzdWx0Owog fQogCisvKgorICogRXhwb3J0ZWQgcm91dGluZSBmb3IgZXhhbWluaW5nIGEgdXNlcidzIHByaXZp bGVnZXMgZm9yIGEgdmFyaWFibGUuCisgKi8KK0FjbE1vZGUKK3BnX3ZhcmlhYmxlX2FjbG1hc2so T2lkIHZhcl9vaWQsIE9pZCByb2xlaWQsIEFjbE1vZGUgbWFzaywgQWNsTWFza0hvdyBob3cpCit7 CisJQWNsTW9kZQkJcmVzdWx0OworCUhlYXBUdXBsZQl0dXBsZTsKKwlEYXR1bQkJYWNsRGF0dW07 CisJYm9vbAkJaXNOdWxsOworCUFjbAkJICAgKmFjbDsKKwlPaWQJCQlvd25lcklkOworCisJRm9y bV9wZ192YXJpYWJsZSB2YXJGb3JtOworCisJLyogQnlwYXNzIHBlcm1pc3Npb24gY2hlY2tzIGZv ciBzdXBlcnVzZXJzICovCisJaWYgKHN1cGVydXNlcl9hcmcocm9sZWlkKSkKKwkJcmV0dXJuIG1h c2s7CisKKwkvKgorCSAqIE11c3QgZ2V0IHRoZSB0eXBlJ3MgdHVwbGUgZnJvbSBwZ190eXBlCisJ ICovCisJdHVwbGUgPSBTZWFyY2hTeXNDYWNoZTEoVkFSSUFCTEVPSUQsIE9iamVjdElkR2V0RGF0 dW0odmFyX29pZCkpOworCWlmICghSGVhcFR1cGxlSXNWYWxpZCh0dXBsZSkpCisJCWVyZXBvcnQo RVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9VTkRFRklORURfT0JKRUNUKSwKKwkJCQkgZXJy bXNnKCJ2YXJpYWJsZSB3aXRoIE9JRCAldSBkb2VzIG5vdCBleGlzdCIsCisJCQkJCQl2YXJfb2lk KSkpOworCXZhckZvcm0gPSAoRm9ybV9wZ192YXJpYWJsZSkgR0VUU1RSVUNUKHR1cGxlKTsKKwor CS8qCisJICogTm93IGdldCB0aGUgdHlwZSdzIG93bmVyIGFuZCBBQ0wgZnJvbSB0aGUgdHVwbGUK KwkgKi8KKwlvd25lcklkID0gdmFyRm9ybS0+dmFyb3duZXI7CisKKwlhY2xEYXR1bSA9IFN5c0Nh Y2hlR2V0QXR0cihWQVJJQUJMRU9JRCwgdHVwbGUsCisJCQkJCQkJICAgQW51bV9wZ192YXJpYWJs ZV92YXJhY2wsICZpc051bGwpOworCWlmIChpc051bGwpCisJeworCQkvKiBObyBBQ0wsIHNvIGJ1 aWxkIGRlZmF1bHQgQUNMICovCisJCWFjbCA9IGFjbGRlZmF1bHQoT0JKRUNUX1ZBUklBQkxFLCBv d25lcklkKTsKKwkJYWNsRGF0dW0gPSAoRGF0dW0pIDA7CisJfQorCWVsc2UKKwl7CisJCS8qIGRl dG9hc3QgcmVsJ3MgQUNMIGlmIG5lY2Vzc2FyeSAqLworCQlhY2wgPSBEYXR1bUdldEFjbFAoYWNs RGF0dW0pOworCX0KKworCXJlc3VsdCA9IGFjbG1hc2soYWNsLCByb2xlaWQsIG93bmVySWQsIG1h c2ssIGhvdyk7CisKKwkvKiBpZiB3ZSBoYXZlIGEgZGV0b2FzdGVkIGNvcHksIGZyZWUgaXQgKi8K KwlpZiAoYWNsICYmIChQb2ludGVyKSBhY2wgIT0gRGF0dW1HZXRQb2ludGVyKGFjbERhdHVtKSkK KwkJcGZyZWUoYWNsKTsKKworCVJlbGVhc2VTeXNDYWNoZSh0dXBsZSk7CisKKwlyZXR1cm4gcmVz dWx0OworfQorCisKIC8qCiAgKiBFeHBvcnRlZCByb3V0aW5lIGZvciBjaGVja2luZyBhIHVzZXIn cyBhY2Nlc3MgcHJpdmlsZWdlcyB0byBhIGNvbHVtbgogICoKQEAgLTQ3NDQsNiArNTAwNCwxOCBA QCBwZ190eXBlX2FjbGNoZWNrKE9pZCB0eXBlX29pZCwgT2lkIHJvbGVpZCwgQWNsTW9kZSBtb2Rl KQogCQlyZXR1cm4gQUNMQ0hFQ0tfTk9fUFJJVjsKIH0KIAorLyoKKyAqIEV4cG9ydGVkIHJvdXRp bmUgZm9yIGNoZWNraW5nIGEgdXNlcidzIGFjY2VzcyBwcml2aWxlZ2VzIHRvIGEgdmFyaWFibGUK KyAqLworQWNsUmVzdWx0CitwZ192YXJpYWJsZV9hY2xjaGVjayhPaWQgdHlwZV9vaWQsIE9pZCBy b2xlaWQsIEFjbE1vZGUgbW9kZSkKK3sKKwlpZiAocGdfdmFyaWFibGVfYWNsbWFzayh0eXBlX29p ZCwgcm9sZWlkLCBtb2RlLCBBQ0xNQVNLX0FOWSkgIT0gMCkKKwkJcmV0dXJuIEFDTENIRUNLX09L OworCWVsc2UKKwkJcmV0dXJuIEFDTENIRUNLX05PX1BSSVY7Cit9CisKIC8qCiAgKiBPd25lcnNo aXAgY2hlY2sgZm9yIGEgcmVsYXRpb24gKHNwZWNpZmllZCBieSBPSUQpLgogICovCkBAIC01MzYx LDYgKzU2MzMsMzMgQEAgcGdfc3RhdGlzdGljc19vYmplY3Rfb3duZXJjaGVjayhPaWQgc3RhdF9v aWQsIE9pZCByb2xlaWQpCiAJcmV0dXJuIGhhc19wcml2c19vZl9yb2xlKHJvbGVpZCwgb3duZXJJ ZCk7CiB9CiAKKy8qCisgKiBPd25lcnNoaXAgY2hlY2sgZm9yIGEgc2NoZW1hIHZhcmlhYmxlcyAo c3BlY2lmaWVkIGJ5IE9JRCkuCisgKi8KK2Jvb2wKK3BnX3ZhcmlhYmxlX293bmVyY2hlY2soT2lk IGRiX29pZCwgT2lkIHJvbGVpZCkKK3sKKwlIZWFwVHVwbGUJdHVwbGU7CisJT2lkCQkJb3duZXJJ ZDsKKworCS8qIFN1cGVydXNlcnMgYnlwYXNzIGFsbCBwZXJtaXNzaW9uIGNoZWNraW5nLiAqLwor CWlmIChzdXBlcnVzZXJfYXJnKHJvbGVpZCkpCisJCXJldHVybiB0cnVlOworCisJdHVwbGUgPSBT ZWFyY2hTeXNDYWNoZTEoVkFSSUFCTEVPSUQsIE9iamVjdElkR2V0RGF0dW0oZGJfb2lkKSk7CisJ aWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHR1cGxlKSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJy Y29kZShFUlJDT0RFX1VOREVGSU5FRF9EQVRBQkFTRSksCisJCQkJIGVycm1zZygidmFyaWFibGUg d2l0aCBPSUQgJXUgZG9lcyBub3QgZXhpc3QiLCBkYl9vaWQpKSk7CisKKwlvd25lcklkID0gKChG b3JtX3BnX3ZhcmlhYmxlKSBHRVRTVFJVQ1QodHVwbGUpKS0+dmFyb3duZXI7CisKKwlSZWxlYXNl U3lzQ2FjaGUodHVwbGUpOworCisJcmV0dXJuIGhhc19wcml2c19vZl9yb2xlKHJvbGVpZCwgb3du ZXJJZCk7Cit9CisKKwogLyoKICAqIENoZWNrIHdoZXRoZXIgc3BlY2lmaWVkIHJvbGUgaGFzIENS RUFURVJPTEUgcHJpdmlsZWdlIChvciBpcyBhIHN1cGVydXNlcikKICAqCkBAIC01NDg2LDYgKzU3 ODUsMTAgQEAgZ2V0X3VzZXJfZGVmYXVsdF9hY2woT2JqZWN0VHlwZSBvYmp0eXBlLCBPaWQgb3du ZXJJZCwgT2lkIG5zcF9vaWQpCiAJCQlkZWZhY2xvYmp0eXBlID0gREVGQUNMT0JKX05BTUVTUEFD RTsKIAkJCWJyZWFrOwogCisJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgorCQkJZGVmYWNsb2JqdHlw ZSA9IERFRkFDTE9CSl9WQVJJQUJMRTsKKwkJCWJyZWFrOworCiAJCWRlZmF1bHQ6CiAJCQlyZXR1 cm4gTlVMTDsKIAl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL2RlcGVuZGVuY3ku YyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvZGVwZW5kZW5jeS5jCmluZGV4IDRmMWQzNjUzNTcuLjc4 MmRkYjE2NTUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvZGVwZW5kZW5jeS5jCisr KyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvZGVwZW5kZW5jeS5jCkBAIC01OSw2ICs1OSw3IEBACiAj aW5jbHVkZSAiY2F0YWxvZy9wZ190c190ZW1wbGF0ZS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdf dHlwZS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdXNlcl9tYXBwaW5nLmgiCisjaW5jbHVkZSAi Y2F0YWxvZy9wZ192YXJpYWJsZS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2NvbW1lbnQuaCIKICNp bmNsdWRlICJjb21tYW5kcy9kZWZyZW0uaCIKICNpbmNsdWRlICJjb21tYW5kcy9ldmVudF90cmln Z2VyLmgiCkBAIC02Nyw2ICs2OCw3IEBACiAjaW5jbHVkZSAiY29tbWFuZHMvcHJvY2xhbmcuaCIK ICNpbmNsdWRlICJjb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuaCIKICNpbmNsdWRlICJjb21tYW5k cy9zY2hlbWFjbWRzLmgiCisjaW5jbHVkZSAiY29tbWFuZHMvc2NoZW1hdmFyaWFibGUuaCIKICNp bmNsdWRlICJjb21tYW5kcy9zZWNsYWJlbC5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3NlcXVlbmNl LmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvdHJpZ2dlci5oIgpAQCAtMTI4MCw2ICsxMjgyLDEwIEBA IGRvRGVsZXRpb24oY29uc3QgT2JqZWN0QWRkcmVzcyAqb2JqZWN0LCBpbnQgZmxhZ3MpCiAJCQlE cm9wVHJhbnNmb3JtQnlJZChvYmplY3QtPm9iamVjdElkKTsKIAkJCWJyZWFrOwogCisJCWNhc2Ug T0NMQVNTX1ZBUklBQkxFOgorCQkJUmVtb3ZlVmFyaWFibGVCeUlkKG9iamVjdC0+b2JqZWN0SWQp OworCQkJYnJlYWs7CisKIAkJCS8qCiAJCQkgKiBUaGVzZSBnbG9iYWwgb2JqZWN0IHR5cGVzIGFy ZSBub3Qgc3VwcG9ydGVkIGhlcmUuCiAJCQkgKi8KQEAgLTI1MzcsNiArMjU0Myw5IEBAIGdldE9i amVjdENsYXNzKGNvbnN0IE9iamVjdEFkZHJlc3MgKm9iamVjdCkKIAogCQljYXNlIFRyYW5zZm9y bVJlbGF0aW9uSWQ6CiAJCQlyZXR1cm4gT0NMQVNTX1RSQU5TRk9STTsKKworCQljYXNlIFZhcmlh YmxlUmVsYXRpb25JZDoKKwkJCXJldHVybiBPQ0xBU1NfVkFSSUFCTEU7CiAJfQogCiAJLyogc2hv dWxkbid0IGdldCBoZXJlICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL25hbWVz cGFjZS5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9uYW1lc3BhY2UuYwppbmRleCAwZjY3YTEyMmVk Li44MWFhZjQ1NGE4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL25hbWVzcGFjZS5j CisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvbmFtZXNwYWNlLmMKQEAgLTM5LDYgKzM5LDcgQEAK ICNpbmNsdWRlICJjYXRhbG9nL3BnX3RzX3BhcnNlci5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdf dHNfdGVtcGxhdGUuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKKyNpbmNsdWRlICJj YXRhbG9nL3BnX3ZhcmlhYmxlLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvZGJjb21tYW5kcy5oIgog I2luY2x1ZGUgImZ1bmNhcGkuaCIKICNpbmNsdWRlICJtYi9wZ193Y2hhci5oIgpAQCAtNzU1LDYg Kzc1Niw3MSBAQCBSZWxhdGlvbklzVmlzaWJsZShPaWQgcmVsaWQpCiAJcmV0dXJuIHZpc2libGU7 CiB9CiAKKy8qCisgKiBWYXJpYWJsZUlzVmlzaWJsZQorICoJCURldGVybWluZSB3aGV0aGVyIGEg dmFyaWFibGUgKGlkZW50aWZpZWQgYnkgT0lEKSBpcyB2aXNpYmxlIGluIHRoZQorICoJCWN1cnJl bnQgc2VhcmNoIHBhdGguICBWaXNpYmxlIG1lYW5zICJ3b3VsZCBiZSBmb3VuZCBieSBzZWFyY2hp bmcKKyAqCQlmb3IgdGhlIHVucXVhbGlmaWVkIHZhcmlhYmxlIG5hbWUiLgorICovCitib29sCitW YXJpYWJsZUlzVmlzaWJsZShPaWQgdmFyaWQpCit7CisJSGVhcFR1cGxlCXZhcnR1cDsKKwlGb3Jt X3BnX3ZhcmlhYmxlIHZhcmZvcm07CisJT2lkCQkJdmFybmFtZXNwYWNlOworCWJvb2wJCXZpc2li bGU7CisKKwl2YXJ0dXAgPSBTZWFyY2hTeXNDYWNoZTEoVkFSSUFCTEVPSUQsIE9iamVjdElkR2V0 RGF0dW0odmFyaWQpKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodmFydHVwKSkKKwkJZWxvZyhF UlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHNjaGVtYSB2YXJpYWJsZSAldSIsIHZhcmlk KTsKKwl2YXJmb3JtID0gKEZvcm1fcGdfdmFyaWFibGUpIEdFVFNUUlVDVCh2YXJ0dXApOworCisJ cmVjb21wdXRlTmFtZXNwYWNlUGF0aCgpOworCisJLyoKKwkgKiBRdWljayBjaGVjazogaWYgaXQg YWluJ3QgaW4gdGhlIHBhdGggYXQgYWxsLCBpdCBhaW4ndCB2aXNpYmxlLiBJdGVtcyBpbgorCSAq IHRoZSBzeXN0ZW0gbmFtZXNwYWNlIGFyZSBzdXJlbHkgaW4gdGhlIHBhdGggYW5kIHNvIHdlIG5l ZWRuJ3QgZXZlbiBkbworCSAqIGxpc3RfbWVtYmVyX29pZCgpIGZvciB0aGVtLgorCSAqLworCXZh cm5hbWVzcGFjZSA9IHZhcmZvcm0tPnZhcm5hbWVzcGFjZTsKKwlpZiAodmFybmFtZXNwYWNlICE9 IFBHX0NBVEFMT0dfTkFNRVNQQUNFICYmCisJCSFsaXN0X21lbWJlcl9vaWQoYWN0aXZlU2VhcmNo UGF0aCwgdmFybmFtZXNwYWNlKSkKKwkJdmlzaWJsZSA9IGZhbHNlOworCWVsc2UKKwl7CisJCS8q CisJCSAqIElmIGl0IGlzIGluIHRoZSBwYXRoLCBpdCBtaWdodCBzdGlsbCBub3QgYmUgdmlzaWJs ZTsgaXQgY291bGQgYmUKKwkJICogaGlkZGVuIGJ5IGFub3RoZXIgcmVsYXRpb24gb2YgdGhlIHNh bWUgbmFtZSBlYXJsaWVyIGluIHRoZSBwYXRoLiBTbworCQkgKiB3ZSBtdXN0IGRvIGEgc2xvdyBj aGVjayBmb3IgY29uZmxpY3RpbmcgcmVsYXRpb25zLgorCQkgKi8KKwkJY2hhcgkgICAqdmFybmFt ZSA9IE5hbWVTdHIodmFyZm9ybS0+dmFybmFtZSk7CisJCUxpc3RDZWxsICAgKmw7CisKKwkJdmlz aWJsZSA9IGZhbHNlOworCQlmb3JlYWNoKGwsIGFjdGl2ZVNlYXJjaFBhdGgpCisJCXsKKwkJCU9p ZAkJCW5hbWVzcGFjZUlkID0gbGZpcnN0X29pZChsKTsKKworCQkJaWYgKG5hbWVzcGFjZUlkID09 IHZhcm5hbWVzcGFjZSkKKwkJCXsKKwkJCQkvKiBGb3VuZCBpdCBmaXJzdCBpbiBwYXRoICovCisJ CQkJdmlzaWJsZSA9IHRydWU7CisJCQkJYnJlYWs7CisJCQl9CisJCQlpZiAoT2lkSXNWYWxpZChn ZXRfdmFybmFtZV92YXJpZCh2YXJuYW1lLCBuYW1lc3BhY2VJZCkpKQorCQkJeworCQkJCS8qIEZv dW5kIHNvbWV0aGluZyBlbHNlIGZpcnN0IGluIHBhdGggKi8KKwkJCQlicmVhazsKKwkJCX0KKwkJ fQorCX0KKworCVJlbGVhc2VTeXNDYWNoZSh2YXJ0dXApOworCisJcmV0dXJuIHZpc2libGU7Cit9 CisKKwogCiAvKgogICogVHlwZW5hbWVHZXRUeXBpZApAQCAtMjc3Niw2ICsyODQyLDIwMiBAQCBU U0NvbmZpZ0lzVmlzaWJsZShPaWQgY2ZnaWQpCiAJcmV0dXJuIHZpc2libGU7CiB9CiAKKy8qCisg KiBXaGVuIHdlIGtub3cgYSB2YXJpYWJsZSBuYW1lLCB0aGVuIHdlIGNhbiBmaW5kIHZhcmlhYmxl IHNpbXBseQorICovCitPaWQKK2xvb2t1cF92YXJpYWJsZShjb25zdCBjaGFyICpuc3BuYW1lLCBj b25zdCBjaGFyICp2YXJuYW1lLCBib29sIG1pc3Npbmdfb2spCit7CisJT2lkCQkJbmFtZXNwYWNl SWQ7CisJT2lkCQkJdmFyb2lkCQk9IEludmFsaWRPaWQ7CisJTGlzdENlbGwgICAqbDsKKworCWlm IChuc3BuYW1lKQorCXsKKwkJbmFtZXNwYWNlSWQgPSBMb29rdXBFeHBsaWNpdE5hbWVzcGFjZShu c3BuYW1lLCBtaXNzaW5nX29rKTsKKwkJaWYgKCFPaWRJc1ZhbGlkKG5hbWVzcGFjZUlkKSkKKwkJ CXJldHVybiBJbnZhbGlkT2lkOworCisJCXZhcm9pZCA9IEdldFN5c0NhY2hlT2lkMihWQVJJQUJM RU5BTUVOU1AsCisJCQkJCQkJCSAgUG9pbnRlckdldERhdHVtKHZhcm5hbWUpLAorCQkJCQkJCQkg IE9iamVjdElkR2V0RGF0dW0obmFtZXNwYWNlSWQpKTsKKwl9CisJZWxzZQorCXsKKwkJLyogc2Vh cmNoIGZvciBpdCBpbiBzZWFyY2ggcGF0aCAqLworCQlyZWNvbXB1dGVOYW1lc3BhY2VQYXRoKCk7 CisKKwkJZm9yZWFjaChsLCBhY3RpdmVTZWFyY2hQYXRoKQorCQl7CisJCQluYW1lc3BhY2VJZCA9 IGxmaXJzdF9vaWQobCk7CisKKwkJCXZhcm9pZCA9IEdldFN5c0NhY2hlT2lkMihWQVJJQUJMRU5B TUVOU1AsCisJCQkJCQkJCQkgIFBvaW50ZXJHZXREYXR1bSh2YXJuYW1lKSwKKwkJCQkJCQkJCSAg T2JqZWN0SWRHZXREYXR1bShuYW1lc3BhY2VJZCkpOworCisJCQlpZiAoT2lkSXNWYWxpZCh2YXJv aWQpKQorCQkJCWJyZWFrOworCQl9CisJfQorCisJaWYgKCFPaWRJc1ZhbGlkKHZhcm9pZCkgJiYg IW1pc3Npbmdfb2spCisJeworCQlpZiAobnNwbmFtZSkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJ CShlcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVEX09CSkVDVCksCisJCQkJCSBlcnJtc2coInZhcmlh YmxlIFwiJXNcIi5cIiVzXCIgZG9lcyBub3QgZXhpc3QiLAorCQkJCQkJCQluc3BuYW1lLCB2YXJu YW1lKSkpOworCQllbHNlCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RF X1VOREVGSU5FRF9PQkpFQ1QpLAorCQkJCQkgZXJybXNnKCJ2YXJpYWJsZSBcIiVzXCIgZG9lcyBu b3QgZXhpc3QiLAorCQkJCQkJCQl2YXJuYW1lKSkpOworCX0KKworCXJldHVybiB2YXJvaWQ7Cit9 CisKK0xpc3QgKgorTmFtZXNGcm9tTGlzdChMaXN0ICpuYW1lcykKK3sKKwlMaXN0Q2VsbCAqbDsK KwlMaXN0CSpyZXN1bHQgPSBOSUw7CisKKwlmb3JlYWNoKGwsIG5hbWVzKQorCXsKKwkJTm9kZSAq biA9IGxmaXJzdChsKTsKKworCQlpZiAoSXNBKG4sIFN0cmluZykpCisJCXsKKwkJCXJlc3VsdCA9 IGxhcHBlbmQocmVzdWx0LCBuKTsKKwkJfQorCQllbHNlCisJCQlicmVhazsKKwl9CisKKwlyZXR1 cm4gcmVzdWx0OworfQorCisvKgorICogaWRlbnRpZnlfdmFyaWFibGUKKyAqCisgKiBSZXR1cm5z IG9pZCBvZiBub3QgYW1iaWdvbnVvdXMgdmFyaWFibGUgc3BlY2lmaWVkIGJ5IHF1YWxpZmllZCBw YXRoCisgKiBvciBJbnZhbGlkT2lkLiBXaGVuIHRoZSBwYXRoIGlzIGFtYmlnb251b3VzLCB0aGVu IG5vdF91bmlxIGZsYWcgaXMKKyAqIGlzIHRydWUuCisgKi8KK09pZAoraWRlbnRpZnlfdmFyaWFi bGUoTGlzdCAqbmFtZXMsIGNoYXIgKiphdHRybmFtZSwgYm9vbCAqbm90X3VuaXEpCit7CisJY2hh ciAgICphID0gTlVMTDsKKwljaGFyICAgKmIgPSBOVUxMOworCWNoYXIgICAqYyA9IE5VTEw7CisJ Y2hhciAgICpkID0gTlVMTDsKKwlPaWQJCXZhcm9pZF93aXRob3V0X2F0dHI7CisJT2lkCQl2YXJv aWRfd2l0aF9hdHRyOworCisJKm5vdF91bmlxID0gZmFsc2U7CisKKwlzd2l0Y2ggKGxpc3RfbGVu Z3RoKG5hbWVzKSkKKwl7CisJCWNhc2UgMToKKwkJCWEgPSBzdHJWYWwobGluaXRpYWwobmFtZXMp KTsKKwkJCXJldHVybiBsb29rdXBfdmFyaWFibGUoTlVMTCwgYSwgdHJ1ZSk7CisKKwkJY2FzZSAy OgorCQkJYSA9IHN0clZhbChsaW5pdGlhbChuYW1lcykpOworCQkJYiA9IHN0clZhbChsc2Vjb25k KG5hbWVzKSk7CisKKwkJCS8qCisJCQkgKiBhLmIgY2FuIG1lYW4gInNjaGVtYSIuInZhcmlhYmxl IiBvciAidmFyaWFibGUiLiJmaWVsZCIsCisJCQkgKiBDaGVjayBib3RoIHZhcmlhbnRzLCBhbmQg cmV0dXJucyBJbnZhbGlkT2lkIHdpdGggbm90X3VuaXEKKwkJCSAqIGZsYWcsIHdoZW4gYm90aCBp bnRlcnByZXRhdGlvbnMgYXJlIHBvc3NpYmxlLgorCQkJICovCisJCQl2YXJvaWRfd2l0aG91dF9h dHRyID0gbG9va3VwX3ZhcmlhYmxlKGEsIGIsIHRydWUpOworCQkJdmFyb2lkX3dpdGhfYXR0ciA9 IGxvb2t1cF92YXJpYWJsZShOVUxMLCBhLCB0cnVlKTsKKworCQkJaWYgKE9pZElzVmFsaWQodmFy b2lkX3dpdGhvdXRfYXR0cikgJiYgT2lkSXNWYWxpZCh2YXJvaWRfd2l0aF9hdHRyKSkKKwkJCXsK KwkJCQkqbm90X3VuaXEgPSB0cnVlOworCQkJCXJldHVybiBJbnZhbGlkT2lkOworCQkJfQorCQkJ ZWxzZSBpZiAoT2lkSXNWYWxpZCh2YXJvaWRfd2l0aG91dF9hdHRyKSkKKwkJCXsKKwkJCQkqYXR0 cm5hbWUgPSBOVUxMOworCQkJCXJldHVybiB2YXJvaWRfd2l0aG91dF9hdHRyOworCQkJfQorCQkJ ZWxzZQorCQkJeworCQkJCSphdHRybmFtZSA9IGI7CisJCQkJcmV0dXJuIHZhcm9pZF93aXRoX2F0 dHI7CisJCQl9CisJCQlicmVhazsKKworCQljYXNlIDM6CisJCQlhID0gc3RyVmFsKGxpbml0aWFs KG5hbWVzKSk7CisJCQliID0gc3RyVmFsKGxzZWNvbmQobmFtZXMpKTsKKwkJCWMgPSBzdHJWYWwo bHRoaXJkKG5hbWVzKSk7CisKKwkJCS8qCisJCQkgKiBhLmIuYyBjYW4gbWVhbiAiY2F0YWxvZyIu InNjaGVtYSIuInZhcmlhYmxlIiBvciAic2NoZW1hIi4idmFyaWFibGUiLiJmaWVsZCIsCisJCQkg KiBDaGVjayBib3RoIHZhcmlhbnRzLCBhbmQgcmV0dXJucyBJbnZhbGlkT2lkIHdpdGggbm90X3Vu aXEKKwkJCSAqIGZsYWcsIHdoZW4gYm90aCBpbnRlcnByZXRhdGlvbnMgYXJlIHBvc3NpYmxlLgor CQkJICovCisJCQl2YXJvaWRfd2l0aG91dF9hdHRyID0gbG9va3VwX3ZhcmlhYmxlKGIsIGMsIHRy dWUpOworCQkJdmFyb2lkX3dpdGhfYXR0ciA9IGxvb2t1cF92YXJpYWJsZShhLCBiLCB0cnVlKTsK KworCQkJaWYgKE9pZElzVmFsaWQodmFyb2lkX3dpdGhvdXRfYXR0cikgJiYgT2lkSXNWYWxpZCh2 YXJvaWRfd2l0aF9hdHRyKSkKKwkJCXsKKwkJCQkqbm90X3VuaXEgPSB0cnVlOworCQkJCXJldHVy biBJbnZhbGlkT2lkOworCQkJfQorCQkJZWxzZSBpZiAoT2lkSXNWYWxpZCh2YXJvaWRfd2l0aG91 dF9hdHRyKSkKKwkJCXsKKwkJCQkqYXR0cm5hbWUgPSBOVUxMOworCisJCQkJLyoKKwkJCQkgKiBX ZSBpbiB0aGlzIGNhc2UgYSAiYSIgaXMgdXNlZCBhcyBjYXRhbG9nIG5hbWUsIGNoZWNrIGl0Lgor CQkJCSAqLworCQkJCWlmIChzdHJjbXAoYSwgZ2V0X2RhdGFiYXNlX25hbWUoTXlEYXRhYmFzZUlk KSkgIT0gMCkKKwkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZF QVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJCQkJIGVycm1zZygiY3Jvc3MtZGF0YWJhc2UgcmVm ZXJlbmNlcyBhcmUgbm90IGltcGxlbWVudGVkOiAlcyIsCisJCQkJCQkJCQlOYW1lTGlzdFRvU3Ry aW5nKG5hbWVzKSkpKTsKKworCQkJCXJldHVybiB2YXJvaWRfd2l0aG91dF9hdHRyOworCQkJfQor CQkJZWxzZQorCQkJeworCQkJCSphdHRybmFtZSA9IGM7CisJCQkJcmV0dXJuIHZhcm9pZF93aXRo X2F0dHI7CisJCQl9CisJCQlicmVhazsKKworCQljYXNlIDQ6CisJCQlhID0gc3RyVmFsKGxpbml0 aWFsKG5hbWVzKSk7CisJCQliID0gc3RyVmFsKGxzZWNvbmQobmFtZXMpKTsKKwkJCWMgPSBzdHJW YWwobHRoaXJkKG5hbWVzKSk7CisJCQlkID0gc3RyVmFsKGxmb3VydGgobmFtZXMpKTsKKworCQkJ LyoKKwkJCSAqIFdlIGluIHRoaXMgY2FzZSBhICJhIiBpcyB1c2VkIGFzIGNhdGFsb2cgbmFtZSwg Y2hlY2sgaXQuCisJCQkgKi8KKwkJCWlmIChzdHJjbXAoYSwgZ2V0X2RhdGFiYXNlX25hbWUoTXlE YXRhYmFzZUlkKSkgIT0gMCkKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVycmNvZGUoRVJS Q09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCQkJIGVycm1zZygiY3Jvc3MtZGF0YWJh c2UgcmVmZXJlbmNlcyBhcmUgbm90IGltcGxlbWVudGVkOiAlcyIsCisJCQkJCQkJCU5hbWVMaXN0 VG9TdHJpbmcobmFtZXMpKSkpOworCisJCQkqYXR0cm5hbWUgPSBkOworCQkJcmV0dXJuIGxvb2t1 cF92YXJpYWJsZShiLCBjLCB0cnVlKTsKKworCQlkZWZhdWx0OgorCQkJZXJlcG9ydChFUlJPUiwK KwkJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQkgZXJybXNnKCJpbXBy b3BlciBxdWFsaWZpZWQgbmFtZSAodG9vIG1hbnkgZG90dGVkIG5hbWVzKTogJXMiLAorCQkJCQkJ CU5hbWVMaXN0VG9TdHJpbmcobmFtZXMpKSkpOworCQkJYnJlYWs7CisJfQorfQogCiAvKgogICog RGVjb25zdHJ1Y3RRdWFsaWZpZWROYW1lCkBAIC00NDE2LDMgKzQ2NzgsMTQgQEAgcGdfaXNfb3Ro ZXJfdGVtcF9zY2hlbWEoUEdfRlVOQ1RJT05fQVJHUykKIAogCVBHX1JFVFVSTl9CT09MKGlzT3Ro ZXJUZW1wTmFtZXNwYWNlKG9pZCkpOwogfQorCitEYXR1bQorcGdfdmFyaWFibGVfaXNfdmlzaWJs ZShQR19GVU5DVElPTl9BUkdTKQoreworCU9pZAkJCW9pZCA9IFBHX0dFVEFSR19PSUQoMCk7CisK KwlpZiAoIVNlYXJjaFN5c0NhY2hlRXhpc3RzMShWQVJJQUJMRU9JRCwgT2JqZWN0SWRHZXREYXR1 bShvaWQpKSkKKwkJUEdfUkVUVVJOX05VTEwoKTsKKworCVBHX1JFVFVSTl9CT09MKFZhcmlhYmxl SXNWaXNpYmxlKG9pZCkpOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9vYmpl Y3RhZGRyZXNzLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL29iamVjdGFkZHJlc3MuYwppbmRleCA3 ZGI5NDJkY2JhLi5jYzNkNDE1ZTYxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL29i amVjdGFkZHJlc3MuYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL29iamVjdGFkZHJlc3MuYwpA QCAtNTgsNiArNTgsNyBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHNfdGVtcGxhdGUuaCIKICNp bmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3VzZXJfbWFw cGluZy5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfdmFyaWFibGUuaCIKICNpbmNsdWRlICJjb21t YW5kcy9kYmNvbW1hbmRzLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvZGVmcmVtLmgiCiAjaW5jbHVk ZSAiY29tbWFuZHMvZXZlbnRfdHJpZ2dlci5oIgpAQCAtNDg5LDYgKzQ5MCwxOCBAQCBzdGF0aWMg Y29uc3QgT2JqZWN0UHJvcGVydHlUeXBlIE9iamVjdFByb3BlcnR5W10gPQogCQlJbnZhbGlkQXR0 ck51bWJlciwJCS8qIG5vIEFDTCAoc2FtZSBhcyByZWxhdGlvbikgKi8KIAkJT0JKRUNUX1NUQVRJ U1RJQ19FWFQsCiAJCXRydWUKKwl9LAorCXsKKwkJVmFyaWFibGVSZWxhdGlvbklkLAorCQlWYXJp YWJsZU9iamVjdEluZGV4SWQsCisJCVZBUklBQkxFT0lELAorCQlWQVJJQUJMRU5BTUVOU1AsCisJ CUFudW1fcGdfdmFyaWFibGVfdmFybmFtZSwKKwkJQW51bV9wZ192YXJpYWJsZV92YXJuYW1lc3Bh Y2UsCisJCUFudW1fcGdfdmFyaWFibGVfdmFyb3duZXIsCisJCUFudW1fcGdfdmFyaWFibGVfdmFy YWNsLAorCQlPQkpFQ1RfVkFSSUFCTEUsCisJCXRydWUKIAl9CiB9OwogCkBAIC03MTQsNiArNzI3 LDEwIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2JqZWN0X3R5cGVfbWFwCiAJLyogT0JKRUNUX1NU QVRJU1RJQ19FWFQgKi8KIAl7CiAJCSJzdGF0aXN0aWNzIG9iamVjdCIsIE9CSkVDVF9TVEFUSVNU SUNfRVhUCisJfSwKKwkvKiBPQ0xBU1NfVkFSSUFCTEUgKi8KKwl7CisJCSJzY2hlbWEgdmFyaWFi bGUiLCBPQkpFQ1RfVkFSSUFCTEUKIAl9CiB9OwogCkBAIC03MzksNiArNzU2LDcgQEAgc3RhdGlj IE9iamVjdEFkZHJlc3MgZ2V0X29iamVjdF9hZGRyZXNzX2F0dHJkZWYoT2JqZWN0VHlwZSBvYmp0 eXBlLAogCQkJCQkJICAgYm9vbCBtaXNzaW5nX29rKTsKIHN0YXRpYyBPYmplY3RBZGRyZXNzIGdl dF9vYmplY3RfYWRkcmVzc190eXBlKE9iamVjdFR5cGUgb2JqdHlwZSwKIAkJCQkJCVR5cGVOYW1l ICp0eXBlbmFtZSwgYm9vbCBtaXNzaW5nX29rKTsKK3N0YXRpYyBPYmplY3RBZGRyZXNzIGdldF9v YmplY3RfYWRkcmVzc192YXJpYWJsZShMaXN0ICpvYmplY3QsIGJvb2wgbWlzc2luZ19vayk7CiBz dGF0aWMgT2JqZWN0QWRkcmVzcyBnZXRfb2JqZWN0X2FkZHJlc3Nfb3BjZihPYmplY3RUeXBlIG9i anR5cGUsIExpc3QgKm9iamVjdCwKIAkJCQkJCWJvb2wgbWlzc2luZ19vayk7CiBzdGF0aWMgT2Jq ZWN0QWRkcmVzcyBnZXRfb2JqZWN0X2FkZHJlc3Nfb3BmX21lbWJlcihPYmplY3RUeXBlIG9ianR5 cGUsCkBAIC05OTYsNiArMTAxNCwxMCBAQCBnZXRfb2JqZWN0X2FkZHJlc3MoT2JqZWN0VHlwZSBv Ymp0eXBlLCBOb2RlICpvYmplY3QsCiAJCQkJCQkJCQkJCQkJCQkgbWlzc2luZ19vayk7CiAJCQkJ YWRkcmVzcy5vYmplY3RTdWJJZCA9IDA7CiAJCQkJYnJlYWs7CisJCQljYXNlIE9CSkVDVF9WQVJJ QUJMRToKKwkJCQlhZGRyZXNzID0gZ2V0X29iamVjdF9hZGRyZXNzX3ZhcmlhYmxlKGNhc3ROb2Rl KExpc3QsIG9iamVjdCksIG1pc3Npbmdfb2spOworCQkJCWJyZWFrOworCiAJCQlkZWZhdWx0Ogog CQkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgb2JqdHlwZTogJWQiLCAoaW50KSBvYmp0eXBl KTsKIAkJCQkvKiBwbGFjYXRlIGNvbXBpbGVyLCBpbiBjYXNlIGl0IHRoaW5rcyBlbG9nIG1pZ2h0 IHJldHVybiAqLwpAQCAtMTg0OCwxNiArMTg3MCwyMCBAQCBnZXRfb2JqZWN0X2FkZHJlc3NfZGVm YWNsKExpc3QgKm9iamVjdCwgYm9vbCBtaXNzaW5nX29rKQogCQljYXNlIERFRkFDTE9CSl9OQU1F U1BBQ0U6CiAJCQlvYmp0eXBlX3N0ciA9ICJzY2hlbWFzIjsKIAkJCWJyZWFrOworCQljYXNlIERF RkFDTE9CSl9WQVJJQUJMRToKKwkJCW9ianR5cGVfc3RyID0gInZhcmlhYmxlcyI7CisJCQlicmVh azsKIAkJZGVmYXVsdDoKIAkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCShlcnJjb2RlKEVSUkNPREVf SU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAogCQkJCQkgZXJybXNnKCJ1bnJlY29nbml6ZWQgZGVm YXVsdCBBQ0wgb2JqZWN0IHR5cGUgXCIlY1wiIiwgb2JqdHlwZSksCi0JCQkJCSBlcnJoaW50KCJW YWxpZCBvYmplY3QgdHlwZXMgYXJlIFwiJWNcIiwgXCIlY1wiLCBcIiVjXCIsIFwiJWNcIiwgXCIl Y1wiLiIsCisJCQkJCSBlcnJoaW50KCJWYWxpZCBvYmplY3QgdHlwZXMgYXJlIFwiJWNcIiwgXCIl Y1wiLCBcIiVjXCIsIFwiJWNcIiwgXCIlY1wiLCBcIiVjXCIuIiwKIAkJCQkJCQkgREVGQUNMT0JK X1JFTEFUSU9OLAogCQkJCQkJCSBERUZBQ0xPQkpfU0VRVUVOQ0UsCiAJCQkJCQkJIERFRkFDTE9C Sl9GVU5DVElPTiwKIAkJCQkJCQkgREVGQUNMT0JKX1RZUEUsCi0JCQkJCQkJIERFRkFDTE9CSl9O QU1FU1BBQ0UpKSk7CisJCQkJCQkJIERFRkFDTE9CSl9OQU1FU1BBQ0UsCisJCQkJCQkJIERFRkFD TE9CSl9WQVJJQUJMRSkpKTsKIAl9CiAKIAkvKgpAQCAtMTk0Miw2ICsxOTY4LDI0IEBAIHRleHRh cnJheV90b19zdHJ2YWx1ZWxpc3QoQXJyYXlUeXBlICphcnIpCiAJcmV0dXJuIGxpc3Q7CiB9CiAK Ky8qCisgKiBGaW5kIHRoZSBPYmplY3RBZGRyZXNzIGZvciBhIHR5cGUgb3IgZG9tYWluCisgKi8K K3N0YXRpYyBPYmplY3RBZGRyZXNzCitnZXRfb2JqZWN0X2FkZHJlc3NfdmFyaWFibGUoTGlzdCAq b2JqZWN0LCBib29sIG1pc3Npbmdfb2spCit7CisJT2JqZWN0QWRkcmVzcyBhZGRyZXNzOworCWNo YXIJICAgKm5zcG5hbWUgPSBOVUxMOworCWNoYXIJICAgKnZhcm5hbWUgPSBOVUxMOworCisJT2Jq ZWN0QWRkcmVzc1NldChhZGRyZXNzLCBWYXJpYWJsZVJlbGF0aW9uSWQsIEludmFsaWRPaWQpOwor CisJRGVjb25zdHJ1Y3RRdWFsaWZpZWROYW1lKG9iamVjdCwgJm5zcG5hbWUsICZ2YXJuYW1lKTsK KwlhZGRyZXNzLm9iamVjdElkID0gbG9va3VwX3ZhcmlhYmxlKG5zcG5hbWUsIHZhcm5hbWUsIG1p c3Npbmdfb2spOworCisJcmV0dXJuIGFkZHJlc3M7Cit9CisKIC8qCiAgKiBTUUwtY2FsbGFibGUg dmVyc2lvbiBvZiBnZXRfb2JqZWN0X2FkZHJlc3MKICAqLwpAQCAtMjEzMSw2ICsyMTc1LDcgQEAg cGdfZ2V0X29iamVjdF9hZGRyZXNzKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCWNhc2UgT0JKRUNUX1RB QkNPTlNUUkFJTlQ6CiAJCWNhc2UgT0JKRUNUX09QQ0xBU1M6CiAJCWNhc2UgT0JKRUNUX09QRkFN SUxZOgorCQljYXNlIE9CSkVDVF9WQVJJQUJMRToKIAkJCW9iam5vZGUgPSAoTm9kZSAqKSBuYW1l OwogCQkJYnJlYWs7CiAJCWNhc2UgT0JKRUNUX0FDQ0VTU19NRVRIT0Q6CkBAIC0yNDE1LDYgKzI0 NjAsMTEgQEAgY2hlY2tfb2JqZWN0X293bmVyc2hpcChPaWQgcm9sZWlkLCBPYmplY3RUeXBlIG9i anR5cGUsIE9iamVjdEFkZHJlc3MgYWRkcmVzcywKIAkJCWlmICghcGdfc3RhdGlzdGljc19vYmpl Y3Rfb3duZXJjaGVjayhhZGRyZXNzLm9iamVjdElkLCByb2xlaWQpKQogCQkJCWFjbGNoZWNrX2Vy cm9yX3R5cGUoQUNMQ0hFQ0tfTk9UX09XTkVSLCBhZGRyZXNzLm9iamVjdElkKTsKIAkJCWJyZWFr OworCQljYXNlIE9CSkVDVF9WQVJJQUJMRToKKwkJCWlmICghcGdfdmFyaWFibGVfb3duZXJjaGVj ayhhZGRyZXNzLm9iamVjdElkLCByb2xlaWQpKQorCQkJCWFjbGNoZWNrX2Vycm9yKEFDTENIRUNL X05PVF9PV05FUiwgb2JqdHlwZSwKKwkJCQkJCQkgICBOYW1lTGlzdFRvU3RyaW5nKGNhc3ROb2Rl KExpc3QsIG9iamVjdCkpKTsKKwkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJZWxvZyhFUlJPUiwg InVucmVjb2duaXplZCBvYmplY3QgdHlwZTogJWQiLAogCQkJCSAoaW50KSBvYmp0eXBlKTsKQEAg LTMxNTcsNiArMzIwNywzMiBAQCBnZXRPYmplY3REZXNjcmlwdGlvbihjb25zdCBPYmplY3RBZGRy ZXNzICpvYmplY3QpCiAJCQkJYnJlYWs7CiAJCQl9CiAKKwkJY2FzZSBPQ0xBU1NfVkFSSUFCTEU6 CisJCQl7CisJCQkJY2hhcgkgICAqbnNwbmFtZTsKKwkJCQlIZWFwVHVwbGUJdHVwOworCQkJCUZv cm1fcGdfdmFyaWFibGUJdmFyZm9ybTsKKworCQkJCXR1cCA9IFNlYXJjaFN5c0NhY2hlMShWQVJJ QUJMRU9JRCwgT2JqZWN0SWRHZXREYXR1bShvYmplY3QtPm9iamVjdElkKSk7CisJCQkJaWYgKCFI ZWFwVHVwbGVJc1ZhbGlkKHR1cCkpCisJCQkJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFp bGVkIGZvciBzY2hlbWEgdmFyaWFibGUgJXUiLAorCQkJCQkJIG9iamVjdC0+b2JqZWN0SWQpOwor CisJCQkJdmFyZm9ybSA9IChGb3JtX3BnX3ZhcmlhYmxlKSBHRVRTVFJVQ1QodHVwKTsKKworCQkJ CWlmIChWYXJpYWJsZUlzVmlzaWJsZShvYmplY3QtPm9iamVjdElkKSkKKwkJCQkJbnNwbmFtZSA9 IE5VTEw7CisJCQkJZWxzZQorCQkJCQluc3BuYW1lID0gZ2V0X25hbWVzcGFjZV9uYW1lKHZhcmZv cm0tPnZhcm5hbWVzcGFjZSk7CisKKwkJCQlhcHBlbmRTdHJpbmdJbmZvKCZidWZmZXIsIF8oInNj aGVtYSB2YXJpYWJsZSAlcyIpLAorCQkJCQkJCQkgcXVvdGVfcXVhbGlmaWVkX2lkZW50aWZpZXIo bnNwbmFtZSwKKwkJCQkJCQkJCQkJCQkJCU5hbWVTdHIodmFyZm9ybS0+dmFybmFtZSkpKTsKKwor CQkJCVJlbGVhc2VTeXNDYWNoZSh0dXApOworCQkJCWJyZWFrOworCQkJfQorCiAJCWNhc2UgT0NM QVNTX1RTUEFSU0VSOgogCQkJewogCQkJCUhlYXBUdXBsZQl0dXA7CkBAIC0zNDIyLDYgKzM0OTgs MTYgQEAgZ2V0T2JqZWN0RGVzY3JpcHRpb24oY29uc3QgT2JqZWN0QWRkcmVzcyAqb2JqZWN0KQog CQkJCQkJCQkJCSBfKCJkZWZhdWx0IHByaXZpbGVnZXMgb24gbmV3IHNjaGVtYXMgYmVsb25naW5n IHRvIHJvbGUgJXMiKSwKIAkJCQkJCQkJCQkgcm9sZW5hbWUpOwogCQkJCQkJYnJlYWs7CisJCQkJ CWNhc2UgREVGQUNMT0JKX1ZBUklBQkxFOgorCQkJCQkJaWYgKG5zcG5hbWUpCisJCQkJCQkJYXBw ZW5kU3RyaW5nSW5mbygmYnVmZmVyLAorCQkJCQkJCQkJCQkgXygiZGVmYXVsdCBwcml2aWxlZ2Vz IG9uIG5ldyB2YXJpYWJsZXMgYmVsb25naW5nIHRvIHJvbGUgJXMgaW4gc2NoZW1hICVzIiksCisJ CQkJCQkJCQkJCSByb2xlbmFtZSwgbnNwbmFtZSk7CisJCQkJCQllbHNlCisJCQkJCQkJYXBwZW5k U3RyaW5nSW5mbygmYnVmZmVyLAorCQkJCQkJCQkJCQkgXygiZGVmYXVsdCBwcml2aWxlZ2VzIG9u IG5ldyB2YXJpYWJsZXMgYmVsb25naW5nIHRvIHJvbGUgJXMiKSwKKwkJCQkJCQkJCQkJIHJvbGVu YW1lKTsKKwkJCQkJCWJyZWFrOwogCQkJCQlkZWZhdWx0OgogCQkJCQkJLyogc2hvdWxkbid0IGdl dCBoZXJlICovCiAJCQkJCQlpZiAobnNwbmFtZSkKQEAgLTQwNzAsNiArNDE1NiwxMCBAQCBnZXRP YmplY3RUeXBlRGVzY3JpcHRpb24oY29uc3QgT2JqZWN0QWRkcmVzcyAqb2JqZWN0KQogCQkJYXBw ZW5kU3RyaW5nSW5mb1N0cmluZygmYnVmZmVyLCAidHJhbnNmb3JtIik7CiAJCQlicmVhazsKIAor CQljYXNlIE9DTEFTU19WQVJJQUJMRToKKwkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmJ1ZmZl ciwgInNjaGVtYSB2YXJpYWJsZSIpOworCQkJYnJlYWs7CisKIAkJCS8qCiAJCQkgKiBUaGVyZSdz IGludGVudGlvbmFsbHkgbm8gZGVmYXVsdDogY2FzZSBoZXJlOyB3ZSB3YW50IHRoZQogCQkJICog Y29tcGlsZXIgdG8gd2FybiBpZiBhIG5ldyBPQ0xBU1MgaGFzbid0IGJlZW4gaGFuZGxlZCBhYm92 ZS4KQEAgLTQ5NjIsNiArNTA1MiwxMCBAQCBnZXRPYmplY3RJZGVudGl0eVBhcnRzKGNvbnN0IE9i amVjdEFkZHJlc3MgKm9iamVjdCwKIAkJCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmJ1ZmZl ciwKIAkJCQkJCQkJCQkJICAgIiBvbiBzY2hlbWFzIik7CiAJCQkJCQlicmVhazsKKwkJCQkJY2Fz ZSBERUZBQ0xPQkpfVkFSSUFCTEU6CisJCQkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZidWZm ZXIsCisJCQkJCQkJCQkJCSAgICIgb24gdmFyaWFibGVzIik7CisJCQkJCQlicmVhazsKIAkJCQl9 CiAKIAkJCQlpZiAob2JqbmFtZSkKQEAgLTUxMjEsNiArNTIxNSwzMyBAQCBnZXRPYmplY3RJZGVu dGl0eVBhcnRzKGNvbnN0IE9iamVjdEFkZHJlc3MgKm9iamVjdCwKIAkJCX0KIAkJCWJyZWFrOwog CisJCWNhc2UgT0NMQVNTX1ZBUklBQkxFOgorCQkJeworCQkJCWNoYXIJICAgKnNjaGVtYTsKKwkJ CQljaGFyCSAgICp2YXJuYW1lOworCQkJCUhlYXBUdXBsZQl0dXA7CisJCQkJRm9ybV9wZ192YXJp YWJsZQl2YXJmb3JtOworCisJCQkJdHVwID0gU2VhcmNoU3lzQ2FjaGUxKFZBUklBQkxFT0lELCBP YmplY3RJZEdldERhdHVtKG9iamVjdC0+b2JqZWN0SWQpKTsKKwkJCQlpZiAoIUhlYXBUdXBsZUlz VmFsaWQodHVwKSkKKwkJCQkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHNj aGVtYSB2YXJpYWJsZSAldSIsCisJCQkJCQkgb2JqZWN0LT5vYmplY3RJZCk7CisKKwkJCQl2YXJm b3JtID0gKEZvcm1fcGdfdmFyaWFibGUpIEdFVFNUUlVDVCh0dXApOworCisJCQkJc2NoZW1hID0g Z2V0X25hbWVzcGFjZV9uYW1lX29yX3RlbXAodmFyZm9ybS0+dmFybmFtZXNwYWNlKTsKKwkJCQl2 YXJuYW1lID0gTmFtZVN0cih2YXJmb3JtLT52YXJuYW1lKTsKKworCQkJCWFwcGVuZFN0cmluZ0lu Zm8oJmJ1ZmZlciwgIiVzIiwKKwkJCQkJCQkJcXVvdGVfcXVhbGlmaWVkX2lkZW50aWZpZXIoc2No ZW1hLCB2YXJuYW1lKSk7CisKKwkJCQlpZiAob2JqbmFtZSkKKwkJCQkJKm9iam5hbWUgPSBsaXN0 X21ha2UyKHNjaGVtYSwgdmFybmFtZSk7CisKKwkJCQlSZWxlYXNlU3lzQ2FjaGUodHVwKTsKKwkJ CQlicmVhazsKKwkJCX0KKwogCQkJLyoKIAkJCSAqIFRoZXJlJ3MgaW50ZW50aW9uYWxseSBubyBk ZWZhdWx0OiBjYXNlIGhlcmU7IHdlIHdhbnQgdGhlCiAJCQkgKiBjb21waWxlciB0byB3YXJuIGlm IGEgbmV3IE9DTEFTUyBoYXNuJ3QgYmVlbiBoYW5kbGVkIGFib3ZlLgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvY2F0YWxvZy9wZ192YXJpYWJsZS5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ192 YXJpYWJsZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmZmNzFmOGJm NmEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3ZhcmlhYmxlLmMK QEAgLTAsMCArMSwzMDUgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIHBnX3ZhcmlhYmxl LmMKKyAqCQlzY2hlbWEgdmFyaWFibGVzCisgKgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAx OTk2LTIwMTgsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKiBQb3J0aW9u cyBDb3B5cmlnaHQgKGMpIDE5OTQsIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZv cm5pYQorICoKKyAqIElERU5USUZJQ0FUSU9OCisgKgkJc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ192 YXJpYWJsZS5jCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKworI2luY2x1ZGUgInBvc3Rn cmVzLmgiCisKKyNpbmNsdWRlICJtaXNjYWRtaW4uaCIKKworI2luY2x1ZGUgImFjY2Vzcy9nZW5h bS5oIgorI2luY2x1ZGUgImFjY2Vzcy9oZWFwYW0uaCIKKyNpbmNsdWRlICJhY2Nlc3MvaHR1cF9k ZXRhaWxzLmgiCisjaW5jbHVkZSAiYWNjZXNzL3hhY3QuaCIKKworI2luY2x1ZGUgImNhdGFsb2cv ZGVwZW5kZW5jeS5oIgorI2luY2x1ZGUgImNhdGFsb2cvaW5kZXhpbmcuaCIKKyNpbmNsdWRlICJj YXRhbG9nL25hbWVzcGFjZS5oIgorI2luY2x1ZGUgImNhdGFsb2cvb2JqZWN0YWNjZXNzLmgiCisj aW5jbHVkZSAiY2F0YWxvZy9wZ19uYW1lc3BhY2UuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3R5 cGUuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3ZhcmlhYmxlLmgiCisKKyNpbmNsdWRlICJub2Rl cy9tYWtlZnVuY3MuaCIKKworI2luY2x1ZGUgInN0b3JhZ2UvbG1nci5oIgorCisjaW5jbHVkZSAi dXRpbHMvYXJyYXkuaCIKKyNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgorI2luY2x1ZGUgInV0 aWxzL2ZtZ3JvaWRzLmgiCisjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCisjaW5jbHVkZSAi dXRpbHMvcGdfbHNuLmgiCisjaW5jbHVkZSAidXRpbHMvcmVsLmgiCisjaW5jbHVkZSAidXRpbHMv c3lzY2FjaGUuaCIKKworLyoKKyAqIFJldHVybnMgbmFtZSBvZiBzY2hlbWEgdmFyaWFibGUuIFdo ZW4gdmFyaWFibGUgaXMgbm90IG9uIHBhdGgsCisgKiB0aGVuIHRoZSBuYW1lIGlzIHF1YWxpZmll ZC4KKyAqLworY2hhciAqCitzY2hlbWFfdmFyaWFibGVfZ2V0X25hbWUoT2lkIHZhcmlkKQorewor CUhlYXBUdXBsZQl0dXA7CisJRm9ybV9wZ192YXJpYWJsZSB2YXJmb3JtOworCWNoYXIgICAqdmFy bmFtZTsKKwljaGFyICAgKm5zcG5hbWU7CisJY2hhciAgICpyZXN1bHQ7CisKKwl0dXAgPSBTZWFy Y2hTeXNDYWNoZTEoVkFSSUFCTEVPSUQsIE9iamVjdElkR2V0RGF0dW0odmFyaWQpKTsKKworCWlm ICghSGVhcFR1cGxlSXNWYWxpZCh0dXApKQorCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZh aWxlZCBmb3IgdmFyaWFibGUgJXUiLCB2YXJpZCk7CisKKwl2YXJmb3JtID0gKEZvcm1fcGdfdmFy aWFibGUpIEdFVFNUUlVDVCh0dXApOworCisJdmFybmFtZSA9IE5hbWVTdHIodmFyZm9ybS0+dmFy bmFtZSk7CisKKwlpZiAoVmFyaWFibGVJc1Zpc2libGUodmFyaWQpKQorCQluc3BuYW1lID0gTlVM TDsKKwllbHNlCisJCW5zcG5hbWUgPSBnZXRfbmFtZXNwYWNlX25hbWUodmFyZm9ybS0+dmFybmFt ZXNwYWNlKTsKKworCXJlc3VsdCA9IHF1b3RlX3F1YWxpZmllZF9pZGVudGlmaWVyKG5zcG5hbWUs IHZhcm5hbWUpOworCisJUmVsZWFzZVN5c0NhY2hlKHR1cCk7CisKKwlyZXR1cm4gcmVzdWx0Owor fQorCisvKgorICogUmV0dXJucyB2YXJuYW1lIGZpZWxkIG9mIHBnX3ZhcmlhYmxlCisgKi8KK2No YXIgKgorZ2V0X3NjaGVtYV92YXJpYWJsZV9uYW1lKE9pZCB2YXJpZCkKK3sKKwlIZWFwVHVwbGUJ dHVwOworCUZvcm1fcGdfdmFyaWFibGUgdmFyZm9ybTsKKwljaGFyICAgKnZhcm5hbWU7CisKKwl0 dXAgPSBTZWFyY2hTeXNDYWNoZTEoVkFSSUFCTEVPSUQsIE9iamVjdElkR2V0RGF0dW0odmFyaWQp KTsKKworCWlmICghSGVhcFR1cGxlSXNWYWxpZCh0dXApKQorCQllbG9nKEVSUk9SLCAiY2FjaGUg bG9va3VwIGZhaWxlZCBmb3IgdmFyaWFibGUgJXUiLCB2YXJpZCk7CisKKwl2YXJmb3JtID0gKEZv cm1fcGdfdmFyaWFibGUpIEdFVFNUUlVDVCh0dXApOworCisJdmFybmFtZSA9IE5hbWVTdHIodmFy Zm9ybS0+dmFybmFtZSk7CisKKwlSZWxlYXNlU3lzQ2FjaGUodHVwKTsKKworCXJldHVybiB2YXJu YW1lOworfQorCisvKgorICogUmV0dXJucyB0eXBlLCB0eXBtb2Qgb2Ygc2NoZW1hIHZhcmlhYmxl CisgKi8KK3ZvaWQKK2dldF9zY2hlbWFfdmFyaWFibGVfdHlwZV90eXBtb2QoT2lkIHZhcmlkLCBP aWQgKnR5cGlkLCBpbnQzMiAqdHlwbW9kKQoreworCUhlYXBUdXBsZQl0dXA7CisJRm9ybV9wZ192 YXJpYWJsZSB2YXJmb3JtOworCisJdHVwID0gU2VhcmNoU3lzQ2FjaGUxKFZBUklBQkxFT0lELCBP YmplY3RJZEdldERhdHVtKHZhcmlkKSk7CisKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHVwKSkK KwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHZhcmlhYmxlICV1IiwgdmFy aWQpOworCisJdmFyZm9ybSA9IChGb3JtX3BnX3ZhcmlhYmxlKSBHRVRTVFJVQ1QodHVwKTsKKwor CSp0eXBpZCA9IHZhcmZvcm0tPnZhcnR5cGU7CisJKnR5cG1vZCA9IHZhcmZvcm0tPnZhcnR5cG1v ZDsKKworCVJlbGVhc2VTeXNDYWNoZSh0dXApOworCisJcmV0dXJuOworfQorCisvKgorICogRmV0 Y2ggYWxsIGZpZWxkcyBvZiBzY2hlbWEgdmFyaWFibGUgZnJvbSB0aGUgc3lzY2FjaGUuCisgKi8K K1ZhcmlhYmxlICoKK0dldFZhcmlhYmxlKE9pZCB2YXJpZCwgYm9vbCBtaXNzaW5nX29rKQorewor CUhlYXBUdXBsZQl0dXA7CisJVmFyaWFibGUgKnZhcjsKKwlGb3JtX3BnX3ZhcmlhYmxlIHZhcmZv cm07CisJRGF0dW0JCWFjbERhdHVtOworCURhdHVtCQlkZWZleHByRGF0dW07CisJYm9vbAkJaXNu dWxsOworCisJdHVwID0gU2VhcmNoU3lzQ2FjaGUxKFZBUklBQkxFT0lELCBPYmplY3RJZEdldERh dHVtKHZhcmlkKSk7CisKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHVwKSkKKwl7CisJCWlmICht aXNzaW5nX29rKQorCQkJcmV0dXJuIE5VTEw7CisKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1 cCBmYWlsZWQgZm9yIHZhcmlhYmxlICV1IiwgdmFyaWQpOworCX0KKworCXZhcmZvcm0gPSAoRm9y bV9wZ192YXJpYWJsZSkgR0VUU1RSVUNUKHR1cCk7CisKKwl2YXIgPSAoVmFyaWFibGUgKikgcGFs bG9jKHNpemVvZihWYXJpYWJsZSkpOworCXZhci0+b2lkID0gdmFyaWQ7CisJdmFyLT5uYW1lID0g cHN0cmR1cChOYW1lU3RyKHZhcmZvcm0tPnZhcm5hbWUpKTsKKwl2YXItPm5hbWVzcGFjZSA9IHZh cmZvcm0tPnZhcm5hbWVzcGFjZTsKKwl2YXItPnR5cGlkID0gdmFyZm9ybS0+dmFydHlwZTsKKwl2 YXItPnR5cG1vZCA9IHZhcmZvcm0tPnZhcnR5cG1vZDsKKwl2YXItPm93bmVyID0gdmFyZm9ybS0+ dmFyb3duZXI7CisKKwkvKiBHZXQgZGVmZXhwciAqLworCWRlZmV4cHJEYXR1bSA9IFN5c0NhY2hl R2V0QXR0cihWQVJJQUJMRU9JRCwKKwkJCQkJCQl0dXAsCisJCQkJCQkJQW51bV9wZ192YXJpYWJs ZV92YXJkZWZleHByLAorCQkJCQkJCSZpc251bGwpOworCisJaWYgKCFpc251bGwpCisJCXZhci0+ ZGVmZXhwciA9IHN0cmluZ1RvTm9kZShUZXh0RGF0dW1HZXRDU3RyaW5nKGRlZmV4cHJEYXR1bSkp OworCWVsc2UKKwkJdmFyLT5kZWZleHByID0gTlVMTDsKKworCS8qIEdldCB2YXJhY2wgKi8KKwlh Y2xEYXR1bSA9IFN5c0NhY2hlR2V0QXR0cihWQVJJQUJMRU9JRCwKKwkJCQkJCQl0dXAsCisJCQkJ CQkJQW51bV9wZ192YXJpYWJsZV92YXJhY2wsCisJCQkJCQkJJmlzbnVsbCk7CisJaWYgKCFpc251 bGwpCisJCXZhci0+YWNsID0gRGF0dW1HZXRBY2xQQ29weShhY2xEYXR1bSk7CisJZWxzZQorCQl2 YXItPmFjbCA9IE5VTEw7CisKKwlSZWxlYXNlU3lzQ2FjaGUodHVwKTsKKworCXJldHVybiB2YXI7 Cit9CisKK09iamVjdEFkZHJlc3MKK1ZhcmlhYmxlQ3JlYXRlKGNvbnN0IGNoYXIgKnZhck5hbWUs CisJCQkgICBPaWQgdmFyTmFtZXNwYWNlLAorCQkJICAgT2lkIHZhclR5cGUsCisJCQkgICBpbnQz MiB2YXJUeXBtb2QsCisJCQkgICBPaWQgdmFyT3duZXIsCisJCQkgICBOb2RlICp2YXJEZWZleHBy LAorCQkJICAgYm9vbCBpZl9ub3RfZXhpc3RzKQoreworCUFjbAkJICAgKnZhcmFjbDsKKwlOYW1l RGF0YQl2YXJuYW1lOworCWJvb2wJCW51bGxzW05hdHRzX3BnX3ZhcmlhYmxlXTsKKwlEYXR1bQkJ dmFsdWVzW05hdHRzX3BnX3ZhcmlhYmxlXTsKKwlSZWxhdGlvbglyZWw7CisJSGVhcFR1cGxlCXR1 cCwKKwkJCQlvbGR0dXA7CisJVHVwbGVEZXNjCXR1cGRlc2M7CisJT2JqZWN0QWRkcmVzcwlteXNl bGYsCisJCQkJCXJlZmVyZW5jZWQ7CisJT2lkCQkJcmV0dmFsOworCWludAkJCWk7CisKKwlmb3Ig KGkgPSAwOyBpIDwgTmF0dHNfcGdfdmFyaWFibGU7IGkrKykKKwl7CisJCW51bGxzW2ldID0gZmFs c2U7CisJCXZhbHVlc1tpXSA9IChEYXR1bSkgMDsKKwl9CisKKwluYW1lc3RyY3B5KCZ2YXJuYW1l LCB2YXJOYW1lKTsKKwl2YWx1ZXNbQW51bV9wZ192YXJpYWJsZV92YXJuYW1lIC0gMV0gPSBOYW1l R2V0RGF0dW0oJnZhcm5hbWUpOworCXZhbHVlc1tBbnVtX3BnX3ZhcmlhYmxlX3Zhcm5hbWVzcGFj ZSAtIDFdID0gT2JqZWN0SWRHZXREYXR1bSh2YXJOYW1lc3BhY2UpOworCXZhbHVlc1tBbnVtX3Bn X3ZhcmlhYmxlX3ZhcnR5cGUgLSAxXSA9IE9iamVjdElkR2V0RGF0dW0odmFyVHlwZSk7CisJdmFs dWVzW0FudW1fcGdfdmFyaWFibGVfdmFydHlwbW9kIC0gMV0gPSBJbnQzMkdldERhdHVtKHZhclR5 cG1vZCk7CisJdmFsdWVzW0FudW1fcGdfdmFyaWFibGVfdmFyb3duZXIgLSAxXSA9IE9iamVjdElk R2V0RGF0dW0odmFyT3duZXIpOworCS8qIHByb2FjbCB3aWxsIGJlIGRldGVybWluZWQgbGF0ZXIg Ki8KKworCWlmICh2YXJEZWZleHByKQorCQl2YWx1ZXNbQW51bV9wZ192YXJpYWJsZV92YXJkZWZl eHByIC0gMV0gPSBDU3RyaW5nR2V0VGV4dERhdHVtKG5vZGVUb1N0cmluZyh2YXJEZWZleHByKSk7 CisJZWxzZQorCQludWxsc1tBbnVtX3BnX3ZhcmlhYmxlX3ZhcmRlZmV4cHIgLSAxXSA9IHRydWU7 CisKKwlyZWwgPSBoZWFwX29wZW4oVmFyaWFibGVSZWxhdGlvbklkLCBSb3dFeGNsdXNpdmVMb2Nr KTsKKwl0dXBkZXNjID0gUmVsYXRpb25HZXREZXNjcihyZWwpOworCisJb2xkdHVwID0gU2VhcmNo U3lzQ2FjaGUyKFZBUklBQkxFTkFNRU5TUCwKKwkJCQkJCQkgUG9pbnRlckdldERhdHVtKHZhck5h bWUpLAorCQkJCQkJCSBPYmplY3RJZEdldERhdHVtKHZhck5hbWVzcGFjZSkpOworCisJaWYgKEhl YXBUdXBsZUlzVmFsaWQob2xkdHVwKSkKKwl7CisJCWlmIChpZl9ub3RfZXhpc3RzKQorCQkJZXJl cG9ydChOT1RJQ0UsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfRFVQTElDQVRFX09CSkVDVCksCisJ CQkJCSBlcnJtc2coInNjaGVtYSB2YXJpYWJsZSBcIiVzXCIgYWxyZWFkeSBleGlzdHMsIHNraXBw aW5nIiwKKwkJCQkJCQl2YXJOYW1lKSkpOworCQllbHNlCisJCQllcmVwb3J0KEVSUk9SLAorCQkJ CQkoZXJyY29kZShFUlJDT0RFX0RVUExJQ0FURV9PQkpFQ1QpLAorCQkJCQkgZXJybXNnKCJzY2hl bWEgdmFyaWFibGUgXCIlc1wiIGFscmVhZHkgZXhpc3RzIiwKKwkJCQkJCQl2YXJOYW1lKSkpOwor CisJCWhlYXBfZnJlZXR1cGxlKG9sZHR1cCk7CisJCWhlYXBfY2xvc2UocmVsLCBSb3dFeGNsdXNp dmVMb2NrKTsKKworCQlyZXR1cm4gSW52YWxpZE9iamVjdEFkZHJlc3M7CisJfQorCisJdmFyYWNs ID0gZ2V0X3VzZXJfZGVmYXVsdF9hY2woT0JKRUNUX1ZBUklBQkxFLCB2YXJPd25lciwKKwkJCQkJ CQkJICB2YXJOYW1lc3BhY2UpOworCisJaWYgKHZhcmFjbCAhPSBOVUxMKQorCQl2YWx1ZXNbQW51 bV9wZ192YXJpYWJsZV92YXJhY2wgLSAxXSA9IFBvaW50ZXJHZXREYXR1bSh2YXJhY2wpOworCWVs c2UKKwkJbnVsbHNbQW51bV9wZ192YXJpYWJsZV92YXJhY2wgLSAxXSA9IHRydWU7CisKKwl0dXAg PSBoZWFwX2Zvcm1fdHVwbGUodHVwZGVzYywgdmFsdWVzLCBudWxscyk7CisJQ2F0YWxvZ1R1cGxl SW5zZXJ0KHJlbCwgdHVwKTsKKworCXJldHZhbCA9IEhlYXBUdXBsZUdldE9pZCh0dXApOworCisJ bXlzZWxmLmNsYXNzSWQgPSBWYXJpYWJsZVJlbGF0aW9uSWQ7CisJbXlzZWxmLm9iamVjdElkID0g cmV0dmFsOworCW15c2VsZi5vYmplY3RTdWJJZCA9IDA7CisKKwkvKiBkZXBlbmRlbmN5IG9uIG5h bWVzcGFjZSAqLworCXJlZmVyZW5jZWQuY2xhc3NJZCA9IE5hbWVzcGFjZVJlbGF0aW9uSWQ7CisJ cmVmZXJlbmNlZC5vYmplY3RJZCA9IHZhck5hbWVzcGFjZTsKKwlyZWZlcmVuY2VkLm9iamVjdFN1 YklkID0gMDsKKwlyZWNvcmREZXBlbmRlbmN5T24oJm15c2VsZiwgJnJlZmVyZW5jZWQsIERFUEVO REVOQ1lfTk9STUFMKTsKKworCS8qIGRlcGVuZGVuY3kgb24gdXNlZCB0eXBlICovCisJcmVmZXJl bmNlZC5jbGFzc0lkID0gVHlwZVJlbGF0aW9uSWQ7CisJcmVmZXJlbmNlZC5vYmplY3RJZCA9IHZh clR5cGU7CisJcmVmZXJlbmNlZC5vYmplY3RTdWJJZCA9IDA7CisJcmVjb3JkRGVwZW5kZW5jeU9u KCZteXNlbGYsICZyZWZlcmVuY2VkLCBERVBFTkRFTkNZX05PUk1BTCk7CisKKwkvKiBkZXBlbmRl bmN5IG9uIGFueSByb2xlcyBtZW50aW9uZWQgaW4gQUNMICovCisJaWYgKHZhcmFjbCAhPSBOVUxM KQorCXsKKwkJaW50CQkJbm5ld21lbWJlcnM7CisJCU9pZAkJICAgKm5ld21lbWJlcnM7CisKKwkJ bm5ld21lbWJlcnMgPSBhY2xtZW1iZXJzKHZhcmFjbCwgJm5ld21lbWJlcnMpOworCQl1cGRhdGVB Y2xEZXBlbmRlbmNpZXMoVmFyaWFibGVSZWxhdGlvbklkLCByZXR2YWwsIDAsCisJCQkJCQkJICB2 YXJPd25lciwKKwkJCQkJCQkgIDAsIE5VTEwsCisJCQkJCQkJICBubmV3bWVtYmVycywgbmV3bWVt YmVycyk7CisJfQorCisJLyogZGVwZW5kZW5jeSBvbiBleHRlbnNpb24gKi8KKwlyZWNvcmREZXBl bmRlbmN5T25DdXJyZW50RXh0ZW5zaW9uKCZteXNlbGYsIGZhbHNlKTsKKworCWhlYXBfZnJlZXR1 cGxlKHR1cCk7CisKKwkvKiBQb3N0IGNyZWF0aW9uIGhvb2sgZm9yIG5ldyBmdW5jdGlvbiAqLwor CUludm9rZU9iamVjdFBvc3RDcmVhdGVIb29rKFZhcmlhYmxlUmVsYXRpb25JZCwgcmV0dmFsLCAw KTsKKworCWhlYXBfY2xvc2UocmVsLCBSb3dFeGNsdXNpdmVMb2NrKTsKKworCXJldHVybiBteXNl bGY7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9NYWtlZmlsZSBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL01ha2VmaWxlCmluZGV4IDRhNmM5OWUwOTAuLjJjYjViMTE3MmQgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL01ha2VmaWxlCisrKyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL01ha2VmaWxlCkBAIC0xOCw3ICsxOCw3IEBAIE9CSlMgPSBhbWNtZHMubyBhZ2dy ZWdhdGVjbWRzLm8gYWx0ZXIubyBhbmFseXplLm8gYXN5bmMubyBjbHVzdGVyLm8gY29tbWVudC5v IFwKIAlldmVudF90cmlnZ2VyLm8gZXhwbGFpbi5vIGV4dGVuc2lvbi5vIGZvcmVpZ25jbWRzLm8g ZnVuY3Rpb25jbWRzLm8gXAogCWluZGV4Y21kcy5vIGxvY2tjbWRzLm8gbWF0dmlldy5vIG9wZXJh dG9yY21kcy5vIG9wY2xhc3NjbWRzLm8gXAogCXBvbGljeS5vIHBvcnRhbGNtZHMubyBwcmVwYXJl Lm8gcHJvY2xhbmcubyBwdWJsaWNhdGlvbmNtZHMubyBcCi0Jc2NoZW1hY21kcy5vIHNlY2xhYmVs Lm8gc2VxdWVuY2UubyBzdGF0c2NtZHMubyBzdWJzY3JpcHRpb25jbWRzLm8gXAorCXNjaGVtYWNt ZHMubyBzZWNsYWJlbC5vIHNlcXVlbmNlLm8gc2NoZW1hdmFyaWFibGUubyBzdGF0c2NtZHMubyBz dWJzY3JpcHRpb25jbWRzLm8gXAogCXRhYmxlY21kcy5vIHRhYmxlc3BhY2UubyB0cmlnZ2VyLm8g dHNlYXJjaGNtZHMubyB0eXBlY21kcy5vIHVzZXIubyBcCiAJdmFjdXVtLm8gdmFjdXVtbGF6eS5v IHZhcmlhYmxlLm8gdmlldy5vCiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2Fs dGVyLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9hbHRlci5jCmluZGV4IGVmZjMyNWNjN2QuLmE5 ZDVlNWUwYWQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FsdGVyLmMKKysrIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvYWx0ZXIuYwpAQCAtMzg3LDYgKzM4Nyw3IEBAIEV4ZWNSZW5h bWVTdG10KFJlbmFtZVN0bXQgKnN0bXQpCiAJCWNhc2UgT0JKRUNUX1RTVEVNUExBVEU6CiAJCWNh c2UgT0JKRUNUX1BVQkxJQ0FUSU9OOgogCQljYXNlIE9CSkVDVF9TVUJTQ1JJUFRJT046CisJCWNh c2UgT0JKRUNUX1ZBUklBQkxFOgogCQkJewogCQkJCU9iamVjdEFkZHJlc3MgYWRkcmVzczsKIAkJ CQlSZWxhdGlvbgljYXRhbG9nOwpAQCAtNTA0LDYgKzUwNSw3IEBAIEV4ZWNBbHRlck9iamVjdFNj aGVtYVN0bXQoQWx0ZXJPYmplY3RTY2hlbWFTdG10ICpzdG10LAogCQljYXNlIE9CSkVDVF9UU0RJ Q1RJT05BUlk6CiAJCWNhc2UgT0JKRUNUX1RTUEFSU0VSOgogCQljYXNlIE9CSkVDVF9UU1RFTVBM QVRFOgorCQljYXNlIE9CSkVDVF9WQVJJQUJMRToKIAkJCXsKIAkJCQlSZWxhdGlvbgljYXRhbG9n OwogCQkJCVJlbGF0aW9uCXJlbGF0aW9uOwpAQCAtNTk0LDYgKzU5Niw3IEBAIEFsdGVyT2JqZWN0 TmFtZXNwYWNlX29pZChPaWQgY2xhc3NJZCwgT2lkIG9iamlkLCBPaWQgbnNwT2lkLAogCQljYXNl IE9DTEFTU19UU0RJQ1Q6CiAJCWNhc2UgT0NMQVNTX1RTVEVNUExBVEU6CiAJCWNhc2UgT0NMQVNT X1RTQ09ORklHOgorCQljYXNlIE9DTEFTU19WQVJJQUJMRToKIAkJCXsKIAkJCQlSZWxhdGlvbglj YXRhbG9nOwogCkBAIC04NTIsNiArODU1LDcgQEAgRXhlY0FsdGVyT3duZXJTdG10KEFsdGVyT3du ZXJTdG10ICpzdG10KQogCQljYXNlIE9CSkVDVF9UQUJMRVNQQUNFOgogCQljYXNlIE9CSkVDVF9U U0RJQ1RJT05BUlk6CiAJCWNhc2UgT0JKRUNUX1RTQ09ORklHVVJBVElPTjoKKwkJY2FzZSBPQkpF Q1RfVkFSSUFCTEU6CiAJCQl7CiAJCQkJUmVsYXRpb24JY2F0YWxvZzsKIAkJCQlSZWxhdGlvbgly ZWxhdGlvbjsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2Rpc2NhcmQuYyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL2Rpc2NhcmQuYwppbmRleCAwMWE5OTljMmFjLi5mZWMyNDk1ZTkz IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9kaXNjYXJkLmMKKysrIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvZGlzY2FyZC5jCkBAIC0xOSw2ICsxOSw3IEBACiAjaW5jbHVkZSAiY29t bWFuZHMvZGlzY2FyZC5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3ByZXBhcmUuaCIKICNpbmNsdWRl ICJjb21tYW5kcy9zZXF1ZW5jZS5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3NjaGVtYXZhcmlhYmxl LmgiCiAjaW5jbHVkZSAidXRpbHMvZ3VjLmgiCiAjaW5jbHVkZSAidXRpbHMvcG9ydGFsLmgiCiAK QEAgLTQ4LDYgKzQ5LDEwIEBAIERpc2NhcmRDb21tYW5kKERpc2NhcmRTdG10ICpzdG10LCBib29s IGlzVG9wTGV2ZWwpCiAJCQlSZXNldFRlbXBUYWJsZU5hbWVzcGFjZSgpOwogCQkJYnJlYWs7CiAK KwkJY2FzZSBESVNDQVJEX1ZBUklBQkxFUzoKKwkJCVJlc2V0U2NoZW1hVmFyaWFibGVDYWNoZSgp OworCQkJYnJlYWs7CisKIAkJZGVmYXVsdDoKIAkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQg RElTQ0FSRCB0YXJnZXQ6ICVkIiwgc3RtdC0+dGFyZ2V0KTsKIAl9CkBAIC03NSw0ICs4MCw1IEBA IERpc2NhcmRBbGwoYm9vbCBpc1RvcExldmVsKQogCVJlc2V0UGxhbkNhY2hlKCk7CiAJUmVzZXRU ZW1wVGFibGVOYW1lc3BhY2UoKTsKIAlSZXNldFNlcXVlbmNlQ2FjaGVzKCk7CisJUmVzZXRTY2hl bWFWYXJpYWJsZUNhY2hlKCk7CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9l dmVudF90cmlnZ2VyLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9ldmVudF90cmlnZ2VyLmMKaW5k ZXggZWVjYzg1ZDE0ZS4uNDI2ZGYyNDZiMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFu ZHMvZXZlbnRfdHJpZ2dlci5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V2ZW50X3RyaWdn ZXIuYwpAQCAtMTI2LDYgKzEyNiw3IEBAIHN0YXRpYyBldmVudF90cmlnZ2VyX3N1cHBvcnRfZGF0 YSBldmVudF90cmlnZ2VyX3N1cHBvcnRbXSA9IHsKIAl7IlRFWFQgU0VBUkNIIFRFTVBMQVRFIiwg dHJ1ZX0sCiAJeyJUWVBFIiwgdHJ1ZX0sCiAJeyJVU0VSIE1BUFBJTkciLCB0cnVlfSwKKwl7IlZB UklBQkxFIiwgdHJ1ZX0sCiAJeyJWSUVXIiwgdHJ1ZX0sCiAJe05VTEwsIGZhbHNlfQogfTsKQEAg LTI5Nyw3ICsyOTgsOCBAQCBjaGVja19kZGxfdGFnKGNvbnN0IGNoYXIgKnRhZykKIAkJcGdfc3Ry Y2FzZWNtcCh0YWcsICJSRVZPS0UiKSA9PSAwIHx8CiAJCXBnX3N0cmNhc2VjbXAodGFnLCAiRFJP UCBPV05FRCIpID09IDAgfHwKIAkJcGdfc3RyY2FzZWNtcCh0YWcsICJJTVBPUlQgRk9SRUlHTiBT Q0hFTUEiKSA9PSAwIHx8Ci0JCXBnX3N0cmNhc2VjbXAodGFnLCAiU0VDVVJJVFkgTEFCRUwiKSA9 PSAwKQorCQlwZ19zdHJjYXNlY21wKHRhZywgIlNFQ1VSSVRZIExBQkVMIikgPT0gMCB8fAorCQlw Z19zdHJjYXNlY21wKHRhZywgIkNSRUFURSBWQVJJQUJMRSIpID09IDApCiAJCXJldHVybiBFVkVO VF9UUklHR0VSX0NPTU1BTkRfVEFHX09LOwogCiAJLyoKQEAgLTExNDYsNiArMTE0OCw3IEBAIEV2 ZW50VHJpZ2dlclN1cHBvcnRzT2JqZWN0VHlwZShPYmplY3RUeXBlIG9idHlwZSkKIAkJY2FzZSBP QkpFQ1RfVFNURU1QTEFURToKIAkJY2FzZSBPQkpFQ1RfVFlQRToKIAkJY2FzZSBPQkpFQ1RfVVNF Ul9NQVBQSU5HOgorCQljYXNlIE9CSkVDVF9WQVJJQUJMRToKIAkJY2FzZSBPQkpFQ1RfVklFVzoK IAkJCXJldHVybiB0cnVlOwogCkBAIC0xMjA5LDYgKzEyMTIsNyBAQCBFdmVudFRyaWdnZXJTdXBw b3J0c09iamVjdENsYXNzKE9iamVjdENsYXNzIG9iamNsYXNzKQogCQljYXNlIE9DTEFTU19QVUJM SUNBVElPTl9SRUw6CiAJCWNhc2UgT0NMQVNTX1NVQlNDUklQVElPTjoKIAkJY2FzZSBPQ0xBU1Nf VFJBTlNGT1JNOgorCQljYXNlIE9DTEFTU19WQVJJQUJMRToKIAkJCXJldHVybiB0cnVlOwogCiAJ CQkvKgpAQCAtMjI0NCw2ICsyMjQ4LDggQEAgc3RyaW5naWZ5X2dyYW50X29ianR5cGUoT2JqZWN0 VHlwZSBvYmp0eXBlKQogCQkJcmV0dXJuICJUQUJMRVNQQUNFIjsKIAkJY2FzZSBPQkpFQ1RfVFlQ RToKIAkJCXJldHVybiAiVFlQRSI7CisJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgorCQkJcmV0dXJu ICJWQVJJQUJMRSI7CiAJCQkvKiB0aGVzZSBjdXJyZW50bHkgYXJlbid0IHVzZWQgKi8KIAkJY2Fz ZSBPQkpFQ1RfQUNDRVNTX01FVEhPRDoKIAkJY2FzZSBPQkpFQ1RfQUdHUkVHQVRFOgpAQCAtMjMy Niw2ICsyMzMyLDggQEAgc3RyaW5naWZ5X2FkZWZwcml2c19vYmp0eXBlKE9iamVjdFR5cGUgb2Jq dHlwZSkKIAkJCXJldHVybiAiVEFCTEVTUEFDRVMiOwogCQljYXNlIE9CSkVDVF9UWVBFOgogCQkJ cmV0dXJuICJUWVBFUyI7CisJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgorCQkJcmV0dXJuICJWQVJJ QUJMRVMiOwogCQkJLyogdGhlc2UgY3VycmVudGx5IGFyZW4ndCB1c2VkICovCiAJCWNhc2UgT0JK RUNUX0FDQ0VTU19NRVRIT0Q6CiAJCWNhc2UgT0JKRUNUX0FHR1JFR0FURToKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3By ZXBhcmUuYwppbmRleCBiOTQ1YjE1NTZhLi5lYjhjMDhiYWYzIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9jb21tYW5kcy9wcmVwYXJlLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFy ZS5jCkBAIC0xNTEsNiArMTUxLDcgQEAgUHJlcGFyZVF1ZXJ5KFByZXBhcmVTdG10ICpzdG10LCBj b25zdCBjaGFyICpxdWVyeVN0cmluZywKIAkJY2FzZSBDTURfSU5TRVJUOgogCQljYXNlIENNRF9V UERBVEU6CiAJCWNhc2UgQ01EX0RFTEVURToKKwkJY2FzZSBDTURfUExBTl9VVElMSVRZOgogCQkJ LyogT0sgKi8KIAkJCWJyZWFrOwogCQlkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvc2NoZW1hdmFyaWFibGUuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3NjaGVtYXZh cmlhYmxlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uMjA4ZDBkMjBj NAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3NjaGVtYXZhcmlhYmxl LmMKQEAgLTAsMCArMSw0NzAgQEAKKyNpbmNsdWRlICJwb3N0Z3Jlcy5oIgorI2luY2x1ZGUgIm1p c2NhZG1pbi5oIgorCisjaW5jbHVkZSAiYWNjZXNzL2hlYXBhbS5oIgorI2luY2x1ZGUgImFjY2Vz cy9odHVwX2RldGFpbHMuaCIKKyNpbmNsdWRlICJhY2Nlc3MveGFjdC5oIgorI2luY2x1ZGUgImNh dGFsb2cvaW5kZXhpbmcuaCIKKyNpbmNsdWRlICJjYXRhbG9nL25hbWVzcGFjZS5oIgorI2luY2x1 ZGUgImNhdGFsb2cvcGdfdmFyaWFibGUuaCIKKyNpbmNsdWRlICJjb21tYW5kcy9zY2hlbWF2YXJp YWJsZS5oIgorI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWN1dG9yLmgiCisjaW5jbHVkZSAiZXhlY3V0 b3Ivc3ZhcmlhYmxlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJub2Rlcy9leGVjbm9kZXMuaCIKKyNp bmNsdWRlICJvcHRpbWl6ZXIvcGxhbm5lci5oIgorI2luY2x1ZGUgInBhcnNlci9wYXJzZV9jb2Vy Y2UuaCIKKyNpbmNsdWRlICJwYXJzZXIvcGFyc2VfZXhwci5oIgorI2luY2x1ZGUgInBhcnNlci9w YXJzZV90eXBlLmgiCisjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKKyNpbmNsdWRlICJ1dGls cy9kYXR1bS5oIgorI2luY2x1ZGUgInV0aWxzL2ludmFsLmgiCisjaW5jbHVkZSAidXRpbHMvbWVt dXRpbHMuaCIKKyNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKKyNpbmNsdWRlICJ1dGlscy9z bmFwbWdyLmgiCisjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKKworLyoKKyAqIFRoZSBjb250 ZW50IG9mIHZhcmlhYmxlcyBpcyBub3QgdHJhbnNhY3Rpb25hbC4gRHVlIHRoaXMgZmFjdCB0aGUK KyAqIGltcGxlbWVudGF0aW9uIG9mIERST1AgY2FuIGJlIHNpbXBsZSwgYmVjYXVzZSBhbHRob3Vn aCBEUk9QIFZBUklBQkxFCisgKiBjYW4gYmUgcmV2ZXJ0ZWQsIHRoZSBjb250ZW50IG9mIHZhcmlh YmxlIGNhbiBiZSBsb3N0LiBJbiB0aGlzIGV4YW1wbGUsCisgKiBEUk9QIFZBUklBQkxFIGlzIHNh bWUgbGlrZSByZXNldCB2YXJpYWJsZS4KKyAqLworCit0eXBlZGVmIHN0cnVjdCBTY2hlbWFWYXJp YWJsZURhdGEKK3sKKwlPaWQJCQl2YXJpZDsJCQkvKiBwZ192YXJpYWJsZSBPSUQgb2YgdGhpcyBz ZXF1ZW5jZSAoaGFzaCBrZXkpICovCisJT2lkCQkJdHlwaWQ7CQkJLyogT0lEIG9mIHRoZSBkYXRh IHR5cGUgKi8KKwlpbnQzMgkJdHlwbW9kOworCWludDE2CQl0eXBsZW47CisJYm9vbAkJdHlwYnl2 YWw7CisJYm9vbAkJaXNudWxsOworCWJvb2wJCWZyZWV2YWw7CisJRGF0dW0JCXZhbHVlOworCWJv b2wJCWlzX3Jvd3R5cGU7CQkvKiB0cnVlIHdoZW4gdmFyaWFibGUgaXMgY29tcG9zaXRlICovCisJ Ym9vbAkJaXNfdmFsaWQ7CQkvKiB0cnVlIHdoZW4gdmFyaWFibGUgd2FzIHN1Y2Nlc3NmdWx5IGlu aXRpYWxpemVkICovCit9IFNjaGVtYVZhcmlhYmxlRGF0YTsKKwordHlwZWRlZiBTY2hlbWFWYXJp YWJsZURhdGEgKlNjaGVtYVZhcmlhYmxlOworCitzdGF0aWMgSFRBQiAqc2NoZW1hdmFyaGFzaHRh YiA9IE5VTEw7CQkvKiBoYXNoIHRhYmxlIGZvciBzZXNzaW9uIHZhcmlhYmxlcyAqLworc3RhdGlj IE1lbW9yeUNvbnRleHQgU2NoZW1hVmFyaWFibGVNZW1vcnlDb250ZXh0ID0gTlVMTDsKKworc3Rh dGljIGJvb2wgZmlyc3RfdGltZSA9IHRydWU7CitzdGF0aWMgdm9pZCBjcmVhdGVfc2NoZW1hdmFy X2hhc2h0YWJsZSh2b2lkKTsKK3N0YXRpYyBib29sIGNsZWFuX2NhY2hlX3JlcSA9IGZhbHNlOwor CitzdGF0aWMgdm9pZCBjbGVhbl9jYWNoZSh2b2lkKTsKK3N0YXRpYyB2b2lkIGZvcmNlX2NsZWFu X2NhY2hlKFhhY3RFdmVudCBldmVudCwgdm9pZCAqYXJnKTsKKworCisvKgorICogU2F2ZSBpbmZv IGFib3V0IG5jZXNzaXR5IHRvIGNsZWFuIGhhc2ggdGFibGUsIGJlY2F1c2Ugc29tZQorICogc2No ZW1hIHZhcmlhYmxlIHdhcyBkcm9wcGVkLiBEb24ndCBkbyBoZXJlIG1vcmUsIHJlY2hlY2sKKyAq IG5lZWRzIHRvIGJlIGluIHRyYW5zYWN0aW9uIHN0YXRlLgorICovCitzdGF0aWMgdm9pZAorSW52 YWxpZGF0ZVNjaGVtYVZhckNhY2hlQ2FsbGJhY2soRGF0dW0gYXJnLCBpbnQgY2FjaGVpZCwgdWlu dDMyIGhhc2h2YWx1ZSkKK3sKKwlpZiAoY2FjaGVpZCAhPSBWQVJJQUJMRU9JRCkKKwkJcmV0dXJu OworCisJY2xlYW5fY2FjaGVfcmVxID0gdHJ1ZTsKK30KKworc3RhdGljIHZvaWQKK2ZvcmNlX2Ns ZWFuX2NhY2hlKFhhY3RFdmVudCBldmVudCwgdm9pZCAqYXJnKQoreworCS8qCisJICogc2hvdWxk IGNvbnRpbnVlIG9ubHkgaW4gdHJhbnNhY3Rpb24gdGltZSwgd2hlbgorCSAqIHN5c2NhY2hlIGlz IGF2YWlsYWJsZS4KKwkgKi8KKwlpZiAoY2xlYW5fY2FjaGVfcmVxICYmIElzVHJhbnNhY3Rpb25T dGF0ZSgpKQorCXsKKwkJY2xlYW5fY2FjaGUoKTsKKwkJY2xlYW5fY2FjaGVfcmVxID0gZmFsc2U7 CisJfQorfQorCitzdGF0aWMgdm9pZAorY2xlYW5fY2FjaGUodm9pZCkKK3sKKwlIQVNIX1NFUV9T VEFUVVMgc3RhdHVzOworCVNjaGVtYVZhcmlhYmxlCQl2YXI7CisKKwlpZiAoIXNjaGVtYXZhcmhh c2h0YWIpCisJCXJldHVybjsKKworCWhhc2hfc2VxX2luaXQoJnN0YXR1cywgc2NoZW1hdmFyaGFz aHRhYik7CisKKwkvKgorCSAqIEV2ZXJ5IHZhbGlkIHZhcmlhYmxlIGhhdmUgdG8gaGF2ZSBlbnRy eSBpbiBzeXN0ZW0KKwkgKiBjYXRhbG9nLiBSZW1vdmVkIGlmIHRoZXJlIGlzIG5vdGhpbmcuCisJ ICovCisJd2hpbGUgKCh2YXIgPSAoU2NoZW1hVmFyaWFibGUpIGhhc2hfc2VxX3NlYXJjaCgmc3Rh dHVzKSkgIT0gTlVMTCkKKwl7CisJCUhlYXBUdXBsZQl0cCA9IEludmFsaWRPaWQ7CisKKwkJdHAg PSBTZWFyY2hTeXNDYWNoZTEoVkFSSUFCTEVPSUQsIE9iamVjdElkR2V0RGF0dW0odmFyLT52YXJp ZCkpOworCQlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHApKQorCQl7CisJCQllbG9nKERFQlVHMSwg InZhcmlhYmxlICVkIGlzIHJlbW92ZWQgZnJvbSBjYWNoZSIsIHZhci0+dmFyaWQpOworCisJCQlp ZiAodmFyLT5mcmVldmFsKQorCQkJeworCQkJCXBmcmVlKERhdHVtR2V0UG9pbnRlcih2YXItPnZh bHVlKSk7CisJCQkJdmFyLT5mcmVldmFsID0gZmFsc2U7CisJCQl9CisKKwkJCWlmIChoYXNoX3Nl YXJjaChzY2hlbWF2YXJoYXNodGFiLAorCQkJCQkJCQkodm9pZCAqKSAmdmFyLT52YXJpZCwKKwkJ CQkJCQkJSEFTSF9SRU1PVkUsCisJCQkJCQkJCU5VTEwpID09IE5VTEwpCisJCQkJZWxvZyhERUJV RzEsICJoYXNoIHRhYmxlIGNvcnJ1cHRlZCIpOworCQl9CisJCWVsc2UKKwkJCVJlbGVhc2VTeXND YWNoZSh0cCk7CisJfQorfQorCitjaGFyICoKK1ZhcmlhYmxlR2V0TmFtZShWYXJpYWJsZSAqdmFy KQoreworCWNoYXIgICAqbnNwbmFtZTsKKworCWlmIChWYXJpYWJsZUlzVmlzaWJsZSh2YXItPm9p ZCkpCisJCW5zcG5hbWUgPSBOVUxMOworCWVsc2UKKwkJbnNwbmFtZSA9IGdldF9uYW1lc3BhY2Vf bmFtZSh2YXItPm5hbWVzcGFjZSk7CisKKwlyZXR1cm4gcXVvdGVfcXVhbGlmaWVkX2lkZW50aWZp ZXIobnNwbmFtZSwgdmFyLT5uYW1lKTsKK30KKworLyoKKyAqIENyZWF0ZSB0aGUgaGFzaCB0YWJs ZSBmb3Igc3RvcmluZyBzY2hlbWEgdmFyaWFibGVzCisgKi8KK3N0YXRpYyB2b2lkCitjcmVhdGVf c2NoZW1hdmFyX2hhc2h0YWJsZSh2b2lkKQoreworCUhBU0hDVEwJCWN0bDsKKworCS8qIHNldCBj YWxsYmFja3MgKi8KKwlpZiAoZmlyc3RfdGltZSkKKwl7CisJCUNhY2hlUmVnaXN0ZXJTeXNjYWNo ZUNhbGxiYWNrKFZBUklBQkxFT0lELAorCQkJCQkJCQkJICBJbnZhbGlkYXRlU2NoZW1hVmFyQ2Fj aGVDYWxsYmFjaywKKwkJCQkJCQkJCSAgKERhdHVtKSAwKTsKKworCQlSZWdpc3RlclhhY3RDYWxs YmFjayhmb3JjZV9jbGVhbl9jYWNoZSwgTlVMTCk7CisKKwkJZmlyc3RfdGltZSA9IGZhbHNlOwor CX0KKworCS8qIG5lZWRzIG93biBsb25nIGxpZmUgbWVtb3J5IGNvbnRleHQgKi8KKwlpZiAoU2No ZW1hVmFyaWFibGVNZW1vcnlDb250ZXh0ID09IE5VTEwpCisJeworCQlTY2hlbWFWYXJpYWJsZU1l bW9yeUNvbnRleHQgPSBBbGxvY1NldENvbnRleHRDcmVhdGUoVG9wTWVtb3J5Q29udGV4dCwKKwkJ CQkJCQkJCQkJCQkJCSJzY2hlbWEgdmFyaWFibGVzIiwKKwkJCQkJCQkJCQkJCQkJCUFMTE9DU0VU X1NUQVJUX1NNQUxMX1NJWkVTKTsKKwl9CisKKwltZW1zZXQoJmN0bCwgMCwgc2l6ZW9mKGN0bCkp OworCWN0bC5rZXlzaXplID0gc2l6ZW9mKE9pZCk7CisJY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihT Y2hlbWFWYXJpYWJsZURhdGEpOworCWN0bC5oY3h0ID0gU2NoZW1hVmFyaWFibGVNZW1vcnlDb250 ZXh0OworCisJc2NoZW1hdmFyaGFzaHRhYiA9IGhhc2hfY3JlYXRlKCJTY2hlbWEgdmFyaWFibGVz IiwgNjQsICZjdGwsCisJCQkJCQkJCQkJSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhBU0hfQ09O VEVYVCk7Cit9CisKKy8qCisgKiBGYXN0IGRyb3AgY29tcGxldGUgY29udGVudCBvZiBzY2hlbWEg dmFyaWFibGVzCisgKi8KK3ZvaWQKK1Jlc2V0U2NoZW1hVmFyaWFibGVDYWNoZSh2b2lkKQorewor CWlmIChzY2hlbWF2YXJoYXNodGFiKQorCXsKKwkJaGFzaF9kZXN0cm95KHNjaGVtYXZhcmhhc2h0 YWIpOworCQlzY2hlbWF2YXJoYXNodGFiID0gTlVMTDsKKwl9CisKKwlpZiAoU2NoZW1hVmFyaWFi bGVNZW1vcnlDb250ZXh0ICE9IE5VTEwpCisJeworCQlNZW1vcnlDb250ZXh0UmVzZXQoU2NoZW1h VmFyaWFibGVNZW1vcnlDb250ZXh0KTsKKwl9Cit9CisKKy8qCisgKiBEcm9wIHZhcmlhYmxlIGJ5 IE9JRAorICovCit2b2lkCitSZW1vdmVWYXJpYWJsZUJ5SWQoT2lkIHZhcmlkKQoreworCVJlbGF0 aW9uCXJlbDsKKwlIZWFwVHVwbGUJdHVwOworCisJcmVsID0gaGVhcF9vcGVuKFZhcmlhYmxlUmVs YXRpb25JZCwgUm93RXhjbHVzaXZlTG9jayk7CisKKwl0dXAgPSBTZWFyY2hTeXNDYWNoZTEoVkFS SUFCTEVPSUQsIE9iamVjdElkR2V0RGF0dW0odmFyaWQpKTsKKworCWlmICghSGVhcFR1cGxlSXNW YWxpZCh0dXApKQorCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgdmFyaWFi bGUgJXUiLCB2YXJpZCk7CisKKwlDYXRhbG9nVHVwbGVEZWxldGUocmVsLCAmdHVwLT50X3NlbGYp OworCisJUmVsZWFzZVN5c0NhY2hlKHR1cCk7CisKKwloZWFwX2Nsb3NlKHJlbCwgUm93RXhjbHVz aXZlTG9jayk7Cit9CisKKy8qCisgKiBDcmVhdGVzIG5ldyB2YXJpYWJsZSAtIGVudHJ5IGluIHBn X2NhdGFsb2cucGdfdmFyaWFibGUgdGFibGUKKyAqLworT2JqZWN0QWRkcmVzcworRGVmaW5lU2No ZW1hVmFyaWFibGUoUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVTY2hlbWFWYXJTdG10ICpzdG10 KQoreworCU9pZAkJCW5hbWVzcGFjZWlkOworCUFjbFJlc3VsdAlhY2xyZXN1bHQ7CisJT2lkCQkJ dHlwaWQ7CisJaW50MzIJCXR5cG1vZDsKKwlPaWQJCQl2YXJvd25lciA9IEdldFVzZXJJZCgpOwor CisJTm9kZQkgICAqY29va2VkX2RlZmF1bHQgPSBOVUxMOworCisJbmFtZXNwYWNlaWQgPQorCQlS YW5nZVZhckdldEFuZENoZWNrQ3JlYXRpb25OYW1lc3BhY2Uoc3RtdC0+dmFyaWFibGUsIE5vTG9j aywgTlVMTCk7CisKKwl0eXBlbmFtZVR5cGVJZEFuZE1vZChwc3RhdGUsIHN0bXQtPnR5cGVOYW1l LCAmdHlwaWQsICZ0eXBtb2QpOworCisJYWNscmVzdWx0ID0gcGdfdHlwZV9hY2xjaGVjayh0eXBp ZCwgR2V0VXNlcklkKCksIEFDTF9VU0FHRSk7CisJaWYgKGFjbHJlc3VsdCAhPSBBQ0xDSEVDS19P SykKKwkJYWNsY2hlY2tfZXJyb3JfdHlwZShhY2xyZXN1bHQsIHR5cGlkKTsKKworCWlmIChzdG10 LT5kZWZleHByKQorCXsKKwkJY29va2VkX2RlZmF1bHQgPSB0cmFuc2Zvcm1FeHByKHBzdGF0ZSwg c3RtdC0+ZGVmZXhwciwKKwkJCQkJCQkJCQlFWFBSX0tJTkRfVkFSSUFCTEVfREVGQVVMVCk7CisK KwkJY29va2VkX2RlZmF1bHQgPSBjb2VyY2VfdG9fc3BlY2lmaWNfdHlwZShwc3RhdGUsCisJCQkJ CQkJCQkJCQkgY29va2VkX2RlZmF1bHQsIHR5cGlkLCAiREVGQVVMVCIpOworCX0KKworCXJldHVy biBWYXJpYWJsZUNyZWF0ZShzdG10LT52YXJpYWJsZS0+cmVsbmFtZSwKKwkJCQkJCSAgbmFtZXNw YWNlaWQsCisJCQkJCQkgIHR5cGlkLAorCQkJCQkJICB0eXBtb2QsCisJCQkJCQkgIHZhcm93bmVy LAorCQkJCQkJICBjb29rZWRfZGVmYXVsdCwKKwkJCQkJCSAgc3RtdC0+aWZfbm90X2V4aXN0cyk7 Cit9CisKKy8qCisgKiBUcnkgdG8gc2VhcmNoIHZhbHVlIGluIGhhc2ggdGFibGUuIElmIGRvZXNu J3QKKyAqIGV4aXN0cyBpbnNlcnQgaXQgKGFuZCBjYWxjdWxhdGUgZGVmZXhwciBpZiBleGlzdHMu CisgKi8KK3N0YXRpYyBTY2hlbWFWYXJpYWJsZQorUHJlcGFyZVNjaGVtYVZhcmlhYmxlRm9yUmVh ZGluZyhPaWQgdmFyaWQpCit7CisJU2NoZW1hVmFyaWFibGUJc3ZhcjsKKwlWYXJpYWJsZQkqdmFy OworCWJvb2wJCQlmb3VuZDsKKworCWlmIChzY2hlbWF2YXJoYXNodGFiID09IE5VTEwpCisJCWNy ZWF0ZV9zY2hlbWF2YXJfaGFzaHRhYmxlKCk7CisKKwlzdmFyID0gKFNjaGVtYVZhcmlhYmxlKSBo YXNoX3NlYXJjaChzY2hlbWF2YXJoYXNodGFiLCAmdmFyaWQsCisJCQkJCQkJCQkJCSAgSEFTSF9F TlRFUiwgJmZvdW5kKTsKKwlpZiAoIWZvdW5kKQorCXsKKwkJdmFyID0gR2V0VmFyaWFibGUodmFy aWQsIGZhbHNlKTsKKwkJZ2V0X3R5cGxlbmJ5dmFsKHZhci0+dHlwaWQsICZzdmFyLT50eXBsZW4s ICZzdmFyLT50eXBieXZhbCk7CisKKwkJc3Zhci0+dmFyaWQgPSB2YXJpZDsKKwkJc3Zhci0+dHlw aWQgPSB2YXItPnR5cGlkOworCQlzdmFyLT50eXBtb2QgPSB2YXItPnR5cG1vZDsKKwkJc3Zhci0+ aXNudWxsID0gdHJ1ZTsKKwkJc3Zhci0+ZnJlZXZhbCA9IGZhbHNlOworCQlzdmFyLT52YWx1ZSA9 IChEYXR1bSkgMDsKKwkJc3Zhci0+aXNfcm93dHlwZSA9IHR5cGVfaXNfcm93dHlwZSh2YXItPnR5 cGlkKTsKKworCQkvKiB3aGVuIHdlIGRvbid0IG5lZWQgY2FsY3VsYXRlIGRlZmV4cHIsIHZhbHVl IGlzIHZhbGlkIGFscmVhZHkgKi8KKwkJc3Zhci0+aXNfdmFsaWQgPSB2YXItPmRlZmV4cHIgPyBm YWxzZSA6IHRydWU7CisJfQorCWVsc2UgaWYgKCFzdmFyLT5pc192YWxpZCkKKwl7CisJCS8qIHdl IG5lZWQgdmFyIHRvIHJlY2FsY3VsYXRlIGRlZmV4cHIgKi8KKwkJdmFyID0gR2V0VmFyaWFibGUo dmFyaWQsIGZhbHNlKTsKKwl9CisJZWxzZQorCQkvKiB3ZSBkb24ndCBuZWVkIHRvIGdvIHRvIHN5 cyBjYWNoZSAqLworCQl2YXIgPSBOVUxMOworCisJLyoKKwkgKiBJbml0aWFsaXplIHZhcmlhYmxl IHdoZW4gaXQgaXMgbmVjZXNzYXJ5LiBJdCBpcyBmcmVzaAorCSAqIG9yIGxhc3QgaW5pdGlhbGl6 YXRpb24gd2FzIG5vdCBzdWNjZXNzZnVsbC4KKwkgKi8KKwlpZiAodmFyICE9IE5VTEwgJiYgdmFy LT5kZWZleHByICYmICFzdmFyLT5pc192YWxpZCkKKwl7CisJCU1lbW9yeUNvbnRleHQgb2xkY29u dGV4dCA9IE5VTEw7CisKKwkJRGF0dW0JICAgdmFsdWUgPSAoRGF0dW0pIDA7CisJCWJvb2wJICAg bnVsbDsKKwkJRVN0YXRlCSAgICplc3RhdGUgPSBOVUxMOworCQlFeHByCSAgICpkZWZleHByOwor CQlFeHByU3RhdGUgICpkZWZleHByczsKKworCQkvKiBQcmVwYXJlIGRlZmF1bHQgZXhwciAqLwor CQllc3RhdGUgPSBDcmVhdGVFeGVjdXRvclN0YXRlKCk7CisJCW9sZGNvbnRleHQgPSBNZW1vcnlD b250ZXh0U3dpdGNoVG8oZXN0YXRlLT5lc19xdWVyeV9jeHQpOworCisJCWRlZmV4cHIgPSBleHBy ZXNzaW9uX3BsYW5uZXIoKEV4cHIgKikgdmFyLT5kZWZleHByKTsKKwkJZGVmZXhwcnMgPSBFeGVj SW5pdEV4cHIoZGVmZXhwciwgTlVMTCk7CisJCXZhbHVlID0gRXhlY0V2YWxFeHByU3dpdGNoQ29u dGV4dChkZWZleHBycywgR2V0UGVyVHVwbGVFeHByQ29udGV4dChlc3RhdGUpLCAmbnVsbCk7CisK KwkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKFNjaGVtYVZhcmlhYmxlTWVtb3J5Q29udGV4dCk7CisK KwkJaWYgKCFudWxsKQorCQl7CisJCQlzdmFyLT52YWx1ZSA9IGRhdHVtQ29weSh2YWx1ZSwgc3Zh ci0+dHlwYnl2YWwsIHN2YXItPnR5cGxlbik7CisJCQlzdmFyLT5mcmVldmFsID0gc3Zhci0+dmFs dWUgIT0gdmFsdWU7CisJCQlzdmFyLT5pc251bGwgPSBmYWxzZTsKKwkJCXN2YXItPmlzX3ZhbGlk ID0gdHJ1ZTsKKwkJfQorCQllbHNlCisJCXsKKwkJCXN2YXItPmlzbnVsbCA9IHRydWU7CisJCQlz dmFyLT5pc192YWxpZCA9IHRydWU7CisJCX0KKworCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xk Y29udGV4dCk7CisKKwkJRnJlZUV4ZWN1dG9yU3RhdGUoZXN0YXRlKTsKKwl9CisKKwlpZiAoIXN2 YXItPmlzX3ZhbGlkKQorCQllbG9nKEVSUk9SLCAidGhlIGNvbnRlbnQgb2YgdmFyaWFibGUgaXMg bm90IHZhbGlkIik7CisKKwlyZXR1cm4gc3ZhcjsKK30KKworLyoKKyAqIFJldHVybnMgY29udGVu dCBvZiB2YXJpYWJsZS4gV2UgZXhwZXh0IHNlY3VyZWQgYWNjZXNzIG5vdy4KKyAqIFNlY3VyZSBj aGVjayBzaG91bGQgYmUgZG9uZSBiZWZvcmUuCisgKi8KK0RhdHVtCitHZXRTY2hlbWFWYXJpYWJs ZShPaWQgdmFyaWQsIGJvb2wgKmlzTnVsbCwgT2lkIGV4cGVjdGVkX3R5cGlkKQoreworCVNjaGVt YVZhcmlhYmxlCXN2YXI7CisKKwlzdmFyID0gUHJlcGFyZVNjaGVtYVZhcmlhYmxlRm9yUmVhZGlu Zyh2YXJpZCk7CisJKmlzTnVsbCA9IHN2YXItPmlzbnVsbDsKKworCWlmIChleHBlY3RlZF90eXBp ZCAhPSBzdmFyLT50eXBpZCkKKwkJZWxvZyhFUlJPUiwgInR5cGUgb2YgdmFyaWFibGUgXCIlc1wi IGlzIGRpZmZlcmVudCB0aGFuIGV4cGVjdGVkIiwKKwkJCQkgICBzY2hlbWFfdmFyaWFibGVfZ2V0 X25hbWUodmFyaWQpKTsKKworCXJldHVybiAoRGF0dW0pIHN2YXItPnZhbHVlOworfQorCisvKgor ICogV3JpdGUgdmFsdWUgdG8gdmFyaWFibGUuIFdlIGV4cGVjdCBzZWN1cmVkIGFjY2VzcyBpbiB0 aGlzIG1vbWVudC4KKyAqIEluIHRoaXMgdGltZSwgd2UgcmVjaGVjayBzeXNjaGFjaGUgYWJvdXQg dXNlZCB0eXBlLgorICovCit2b2lkCitTZXRTY2hlbWFWYXJpYWJsZShPaWQgdmFyaWQsIERhdHVt IHZhbHVlLCBib29sIGlzTnVsbCwgT2lkIHR5cGlkLCBpbnQzMiB0eXBtb2QpCit7CisJTWVtb3J5 Q29udGV4dCBvbGRjb250ZXh0ID0gTlVMTDsKKworCVNjaGVtYVZhcmlhYmxlIHN2YXI7CisJT2lk CQkJdmFyX3R5cGlkOworCWludDMyCQl2YXJfdHlwbW9kOworCWJvb2wJCWZvdW5kOworCisJaWYg KHNjaGVtYXZhcmhhc2h0YWIgPT0gTlVMTCkKKwkJY3JlYXRlX3NjaGVtYXZhcl9oYXNodGFibGUo KTsKKworCXN2YXIgPSAoU2NoZW1hVmFyaWFibGUpIGhhc2hfc2VhcmNoKHNjaGVtYXZhcmhhc2h0 YWIsICZ2YXJpZCwKKwkJCQkJCQkJCQkJICBIQVNIX0VOVEVSLCAmZm91bmQpOworCisJZ2V0X3Nj aGVtYV92YXJpYWJsZV90eXBlX3R5cG1vZCh2YXJpZCwgJnZhcl90eXBpZCwgJnZhcl90eXBtb2Qp OworCisJLyogY2hlY2sgdHlwZXMgZmlyc3QgKi8KKwlpZiAodmFyX3R5cGlkICE9IHR5cGlkKQor CQllbG9nKEVSUk9SLCAidHlwZSBvZiBleHByZXNzaW9uIGlzIGRpZmZlcmVudCB0aGFuIHNjaGVt YSB2YXJpYWJsZSB0eXBlIik7CisKKwlpZiAoZm91bmQpCisJeworCQkvKiByZWxlYXNlIGN1cnJl bnQgY29udGVudCBmaXJzdCAqLworCQlpZiAoc3Zhci0+ZnJlZXZhbCkKKwkJeworCQkJcGZyZWUo RGF0dW1HZXRQb2ludGVyKHN2YXItPnZhbHVlKSk7CisJCQlzdmFyLT52YWx1ZSA9IChEYXR1bSkg MDsKKwkJCXN2YXItPmlzbnVsbCA9IHRydWU7CisJCQlzdmFyLT5mcmVldmFsID0gZmFsc2U7CisJ CX0KKwl9CisKKwlnZXRfdHlwbGVuYnl2YWwodHlwaWQsICZzdmFyLT50eXBsZW4sICZzdmFyLT50 eXBieXZhbCk7CisKKwlzdmFyLT52YXJpZCA9IHZhcmlkOworCXN2YXItPnR5cGlkID0gdHlwaWQ7 CisJc3Zhci0+dHlwbW9kID0gdHlwbW9kOworCisJc3Zhci0+aXNudWxsID0gdHJ1ZTsKKwlzdmFy LT5mcmVldmFsID0gZmFsc2U7CisJc3Zhci0+dmFsdWUgPSAoRGF0dW0pIDA7CisKKwlzdmFyLT5p c19yb3d0eXBlID0gdHlwZV9pc19yb3d0eXBlKHR5cGlkKTsKKwlzdmFyLT5pc192YWxpZCA9IGZh bHNlOworCisJb2xkY29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhTY2hlbWFWYXJpYWJs ZU1lbW9yeUNvbnRleHQpOworCisJaWYgKCFpc051bGwpCisJeworCQlzdmFyLT52YWx1ZSA9IGRh dHVtQ29weSh2YWx1ZSwgc3Zhci0+dHlwYnl2YWwsIHN2YXItPnR5cGxlbik7CisJCXN2YXItPmZy ZWV2YWwgPSBzdmFyLT52YWx1ZSAhPSB2YWx1ZTsKKwkJc3Zhci0+aXNudWxsID0gZmFsc2U7CisJ CXN2YXItPmlzX3ZhbGlkID0gdHJ1ZTsKKwl9CisJZWxzZQorCXsKKwkJc3Zhci0+aXNudWxsID0g dHJ1ZTsKKwkJc3Zhci0+aXNfdmFsaWQgPSB0cnVlOworCX0KKworCU1lbW9yeUNvbnRleHRTd2l0 Y2hUbyhvbGRjb250ZXh0KTsKK30KKwordm9pZAorZG9MZXRTdG10KFBsYW5uZWRTdG10ICpwc3Rt dCwKKwkJICBQYXJhbUxpc3RJbmZvIHBhcmFtcywKKwkJICBRdWVyeUVudmlyb25tZW50ICpxdWVy eUVudiwKKwkJICBjb25zdCBjaGFyICpxdWVyeVN0cmluZykKK3sKKwlRdWVyeURlc2MgKnF1ZXJ5 RGVzYzsKKwlEZXN0UmVjZWl2ZXIgKmRlc3Q7CisKKwlQdXNoQ29waWVkU25hcHNob3QoR2V0QWN0 aXZlU25hcHNob3QoKSk7CisJVXBkYXRlQWN0aXZlU25hcHNob3RDb21tYW5kSWQoKTsKKworCS8q IENyZWF0ZSBkZXN0IHJlY2VpdmVyIGZvciBMRVQgKi8KKwlkZXN0ID0gQ3JlYXRlRGVzdFJlY2Vp dmVyKERlc3RWYXJpYWJsZSk7CisKKwlTZXRWYXJpYWJsZURlc3RSZWNlaXZlclBhcmFtcyhkZXN0 LCBwc3RtdC0+cmVzdWx0VmFyaWFibGUpOworCisJLyogQ3JlYXRlIGEgUXVlcnlEZXNjIHJlcXVl c3Rpbmcgbm8gb3V0cHV0ICovCisJcXVlcnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHBzdG10LCBx dWVyeVN0cmluZywKKwkJCQkJCQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSwKKwkJCQkJCQkJCQkJ SW52YWxpZFNuYXBzaG90LAorCQkJCQkJCQkJCQlkZXN0LCBwYXJhbXMsIHF1ZXJ5RW52LCAwKTsK KworCUV4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCAwKTsKKwlFeGVjdXRvclJ1bihxdWVyeURlc2Ms IEZvcndhcmRTY2FuRGlyZWN0aW9uLCAyTCwgdHJ1ZSk7CisJRXhlY3V0b3JGaW5pc2gocXVlcnlE ZXNjKTsKKwlFeGVjdXRvckVuZChxdWVyeURlc2MpOworCisJRnJlZVF1ZXJ5RGVzYyhxdWVyeURl c2MpOworCisJUG9wQWN0aXZlU25hcHNob3QoKTsKK30KKwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvdGFibGVjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMu YwppbmRleCBlYjJkMzNkZDg2Li4yMmNkNzg3MWNiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9j b21tYW5kcy90YWJsZWNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMu YwpAQCAtOTYzMCw2ICs5NjMwLDcgQEAgQVRFeGVjQWx0ZXJDb2x1bW5UeXBlKEFsdGVyZWRUYWJs ZUluZm8gKnRhYiwgUmVsYXRpb24gcmVsLAogCQkJY2FzZSBPQ0xBU1NfUFVCTElDQVRJT05fUkVM OgogCQkJY2FzZSBPQ0xBU1NfU1VCU0NSSVBUSU9OOgogCQkJY2FzZSBPQ0xBU1NfVFJBTlNGT1JN OgorCQkJY2FzZSBPQ0xBU1NfVkFSSUFCTEU6CiAKIAkJCQkvKgogCQkJCSAqIFdlIGRvbid0IGV4 cGVjdCBhbnkgb2YgdGhlc2Ugc29ydHMgb2Ygb2JqZWN0cyB0byBkZXBlbmQgb24KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL01ha2VmaWxlIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv TWFrZWZpbGUKaW5kZXggY2MwOTg5NWZhNS4uZWU4ZmY3ZGE5ZSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvTWFrZWZpbGUKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvTWFrZWZp bGUKQEAgLTI5LDYgKzI5LDYgQEAgT0JKUyA9IGV4ZWNBbWkubyBleGVjQ3VycmVudC5vIGV4ZWNF eHByLm8gZXhlY0V4cHJJbnRlcnAubyBcCiAgICAgICAgbm9kZUN0ZXNjYW4ubyBub2RlTmFtZWR0 dXBsZXN0b3Jlc2Nhbi5vIG5vZGVXb3JrdGFibGVzY2FuLm8gXAogICAgICAgIG5vZGVHcm91cC5v IG5vZGVTdWJwbGFuLm8gbm9kZVN1YnF1ZXJ5c2Nhbi5vIG5vZGVUaWRzY2FuLm8gXAogICAgICAg IG5vZGVGb3JlaWduc2Nhbi5vIG5vZGVXaW5kb3dBZ2cubyB0c3RvcmVSZWNlaXZlci5vIHRxdWV1 ZS5vIHNwaS5vIFwKLSAgICAgICBub2RlVGFibGVGdW5jc2Nhbi5vCisgICAgICAgbm9kZVRhYmxl RnVuY3NjYW4ubyBzdmFyaWFibGVSZWNlaXZlci5vCiAKIGluY2x1ZGUgJCh0b3Bfc3JjZGlyKS9z cmMvYmFja2VuZC9jb21tb24ubWsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNFeHByLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwci5jCmluZGV4IGUyODRmZDcx ZDcuLjU4ZDQ5NTVkZDggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHBy LmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHIuYwpAQCAtMzMsNiArMzMsNyBA QAogI2luY2x1ZGUgImFjY2Vzcy9uYnRyZWUuaCIKICNpbmNsdWRlICJjYXRhbG9nL29iamVjdGFj Y2Vzcy5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgorI2luY2x1ZGUgImNvbW1hbmRz L3NjaGVtYXZhcmlhYmxlLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY0V4cHIuaCIKICNpbmNs dWRlICJleGVjdXRvci9ub2RlU3VicGxhbi5oIgogI2luY2x1ZGUgImZ1bmNhcGkuaCIKQEAgLTcy Nyw2ICs3MjgsNyBAQCBFeGVjSW5pdEV4cHJSZWMoRXhwciAqbm9kZSwgRXhwclN0YXRlICpzdGF0 ZSwKIAkJCXsKIAkJCQlQYXJhbQkgICAqcGFyYW0gPSAoUGFyYW0gKikgbm9kZTsKIAkJCQlQYXJh bUxpc3RJbmZvIHBhcmFtczsKKwkJCQlBY2xSZXN1bHQJYWNscmVzdWx0OwogCiAJCQkJc3dpdGNo IChwYXJhbS0+cGFyYW1raW5kKQogCQkJCXsKQEAgLTczNiw2ICs3MzgsMTkgQEAgRXhlY0luaXRF eHByUmVjKEV4cHIgKm5vZGUsIEV4cHJTdGF0ZSAqc3RhdGUsCiAJCQkJCQlzY3JhdGNoLmQucGFy YW0ucGFyYW10eXBlID0gcGFyYW0tPnBhcmFtdHlwZTsKIAkJCQkJCUV4cHJFdmFsUHVzaFN0ZXAo c3RhdGUsICZzY3JhdGNoKTsKIAkJCQkJCWJyZWFrOworCQkJCQljYXNlIFBBUkFNX1NDSEVNQV9W QVJJQUJMRToKKwkJCQkJCS8qIENoZWNrIHBlcm1pc3Npb24gdG8gcmVhZCBzY2hlbWEgdmFyaWFi bGUgKi8KKwkJCQkJCWFjbHJlc3VsdCA9IHBnX3ZhcmlhYmxlX2FjbGNoZWNrKHBhcmFtLT5wYXJh bWlkLCBHZXRVc2VySWQoKSwgQUNMX1JFQUQpOworCQkJCQkJaWYgKGFjbHJlc3VsdCAhPSBBQ0xD SEVDS19PSykKKwkJCQkJCQlhY2xjaGVja19lcnJvcihhY2xyZXN1bHQsIE9CSkVDVF9WQVJJQUJM RSwKKwkJCQkJCQkJCQkJc2NoZW1hX3ZhcmlhYmxlX2dldF9uYW1lKHBhcmFtLT5wYXJhbWlkKSk7 CisKKwkJCQkJCXNjcmF0Y2gub3Bjb2RlID0gRUVPUF9QQVJBTV9WQVJJQUJMRTsKKwkJCQkJCXNj cmF0Y2guZC5wYXJhbS5wYXJhbWlkID0gcGFyYW0tPnBhcmFtaWQ7CisJCQkJCQlzY3JhdGNoLmQu cGFyYW0ucGFyYW10eXBlID0gcGFyYW0tPnBhcmFtdHlwZTsKKwkJCQkJCUV4cHJFdmFsUHVzaFN0 ZXAoc3RhdGUsICZzY3JhdGNoKTsKKwkJCQkJCWJyZWFrOworCiAJCQkJCWNhc2UgUEFSQU1fRVhU RVJOOgogCiAJCQkJCQkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4 cHJJbnRlcnAuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHBySW50ZXJwLmMKaW5kZXgg OWQ2ZTI1YWFlNS4uMjU5NjZjZWVlYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZXhlY0V4cHJJbnRlcnAuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwckludGVy cC5jCkBAIC01OSw2ICs1OSw3IEBACiAjaW5jbHVkZSAiYWNjZXNzL3R1cHRvYXN0ZXIuaCIKICNp bmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKICNpbmNsdWRlICJjb21tYW5kcy9zZXF1ZW5jZS5o IgorI2luY2x1ZGUgImNvbW1hbmRzL3NjaGVtYXZhcmlhYmxlLmgiCiAjaW5jbHVkZSAiZXhlY3V0 b3IvZXhlY0V4cHIuaCIKICNpbmNsdWRlICJleGVjdXRvci9ub2RlU3VicGxhbi5oIgogI2luY2x1 ZGUgImZ1bmNhcGkuaCIKQEAgLTM1MSw2ICszNTIsNyBAQCBFeGVjSW50ZXJwRXhwcihFeHByU3Rh dGUgKnN0YXRlLCBFeHByQ29udGV4dCAqZWNvbnRleHQsIGJvb2wgKmlzbnVsbCkKIAkJJiZDQVNF X0VFT1BfUEFSQU1fRVhFQywKIAkJJiZDQVNFX0VFT1BfUEFSQU1fRVhURVJOLAogCQkmJkNBU0Vf RUVPUF9QQVJBTV9DQUxMQkFDSywKKwkJJiZDQVNFX0VFT1BfUEFSQU1fVkFSSUFCTEUsCiAJCSYm Q0FTRV9FRU9QX0NBU0VfVEVTVFZBTCwKIAkJJiZDQVNFX0VFT1BfTUFLRV9SRUFET05MWSwKIAkJ JiZDQVNFX0VFT1BfSU9DT0VSQ0UsCkBAIC0xMDA3LDYgKzEwMDksMjAgQEAgRXhlY0ludGVycEV4 cHIoRXhwclN0YXRlICpzdGF0ZSwgRXhwckNvbnRleHQgKmVjb250ZXh0LCBib29sICppc251bGwp CiAJCQlFRU9fTkVYVCgpOwogCQl9CiAKKwkJRUVPX0NBU0UoRUVPUF9QQVJBTV9WQVJJQUJMRSkK KwkJeworCQkJRGF0dW0JZDsKKwkJCWJvb2wJaXNudWxsOworCisJCQlkID0gR2V0U2NoZW1hVmFy aWFibGUob3AtPmQucGFyYW0ucGFyYW1pZCwgJmlzbnVsbCwKKwkJCQkJCQkJCQkJCQkgIG9wLT5k LnBhcmFtLnBhcmFtdHlwZSk7CisKKwkJCSpvcC0+cmVzdmFsdWUgPSBkOworCQkJKm9wLT5yZXNu dWxsID0gaXNudWxsOworCisJCQlFRU9fTkVYVCgpOworCQl9CisKIAkJRUVPX0NBU0UoRUVPUF9D QVNFX1RFU1RWQUwpCiAJCXsKIAkJCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRv ci9leGVjTWFpbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYwppbmRleCAwMWUx YTQ2MTgwLi4zNzIxYWVjN2ExIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVj TWFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKQEAgLTQzLDkgKzQz LDExIEBACiAjaW5jbHVkZSAiYWNjZXNzL3hhY3QuaCIKICNpbmNsdWRlICJjYXRhbG9nL25hbWVz cGFjZS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfcHVibGljYXRpb24uaCIKKyNpbmNsdWRlICJj YXRhbG9nL3BnX3ZhcmlhYmxlLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvbWF0dmlldy5oIgogI2lu Y2x1ZGUgImNvbW1hbmRzL3RyaWdnZXIuaCIKICNpbmNsdWRlICJleGVjdXRvci9leGVjZGVidWcu aCIKKyNpbmNsdWRlICJleGVjdXRvci9zdmFyaWFibGVSZWNlaXZlci5oIgogI2luY2x1ZGUgImZv cmVpZ24vZmR3YXBpLmgiCiAjaW5jbHVkZSAibWIvcGdfd2NoYXIuaCIKICNpbmNsdWRlICJtaXNj YWRtaW4uaCIKQEAgLTIwNCwxMiArMjA2LDE4IEBAIHN0YW5kYXJkX0V4ZWN1dG9yU3RhcnQoUXVl cnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAJICovCiAJZXN0YXRlLT5lc19xdWVyeUVu diA9IHF1ZXJ5RGVzYy0+cXVlcnlFbnY7CiAKKwkvKgorCSAqIFJlc3VsdCBjYW4gYmUgc3RvcmVk IGluIHNjaGVtYSB2YXJpYWJsZS4KKwkgKi8KKwllc3RhdGUtPmVzX3Jlc3VsdF92YXJpYWJsZSA9 IHF1ZXJ5RGVzYy0+cGxhbm5lZHN0bXQtPnJlc3VsdFZhcmlhYmxlOworCiAJLyoKIAkgKiBJZiBu b24tcmVhZC1vbmx5IHF1ZXJ5LCBzZXQgdGhlIGNvbW1hbmQgSUQgdG8gbWFyayBvdXRwdXQgdHVw bGVzIHdpdGgKIAkgKi8KIAlzd2l0Y2ggKHF1ZXJ5RGVzYy0+b3BlcmF0aW9uKQogCXsKIAkJY2Fz ZSBDTURfU0VMRUNUOgorCQljYXNlIENNRF9QTEFOX1VUSUxJVFk6CiAKIAkJCS8qCiAJCQkgKiBT RUxFQ1QgRk9SIFtLRVldIFVQREFURS9TSEFSRSBhbmQgbW9kaWZ5aW5nIENURXMgbmVlZCB0byBt YXJrCkBAIC0zNDUsNiArMzUzLDcgQEAgc3RhbmRhcmRfRXhlY3V0b3JSdW4oUXVlcnlEZXNjICpx dWVyeURlc2MsCiAJZXN0YXRlLT5lc19sYXN0b2lkID0gSW52YWxpZE9pZDsKIAogCXNlbmRUdXBs ZXMgPSAob3BlcmF0aW9uID09IENNRF9TRUxFQ1QgfHwKKwkJCQkgIE9pZElzVmFsaWQoZXN0YXRl LT5lc19yZXN1bHRfdmFyaWFibGUpIHx8CiAJCQkJICBxdWVyeURlc2MtPnBsYW5uZWRzdG10LT5o YXNSZXR1cm5pbmcpOwogCiAJaWYgKHNlbmRUdXBsZXMpCkBAIC05MjQsNiArOTMzLDE3IEBAIElu aXRQbGFuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQogCQllc3RhdGUtPmVzX251 bV9yb290X3Jlc3VsdF9yZWxhdGlvbnMgPSAwOwogCX0KIAorCWlmIChPaWRJc1ZhbGlkKGVzdGF0 ZS0+ZXNfcmVzdWx0X3ZhcmlhYmxlKSkKKwl7CisJCUFjbFJlc3VsdAlhY2xyZXN1bHQ7CisJCU9p ZAkJCXZhcmlkID0gZXN0YXRlLT5lc19yZXN1bHRfdmFyaWFibGU7CisKKwkJLyogRW5zdXJlIHRo aXMgdmFyaWFibGUgaXMgd3JpdGVhYmxlICovCisJCWFjbHJlc3VsdCA9IHBnX3ZhcmlhYmxlX2Fj bGNoZWNrKHZhcmlkLCBHZXRVc2VySWQoKSwgQUNMX1dSSVRFKTsKKwkJaWYgKGFjbHJlc3VsdCAh PSBBQ0xDSEVDS19PSykKKwkJCWFjbGNoZWNrX2Vycm9yKGFjbHJlc3VsdCwgT0JKRUNUX1ZBUklB QkxFLCBzY2hlbWFfdmFyaWFibGVfZ2V0X25hbWUodmFyaWQpKTsKKwl9CisKIAkvKgogCSAqIFNp bWlsYXJseSwgd2UgaGF2ZSB0byBsb2NrIHJlbGF0aW9ucyBzZWxlY3RlZCBGT1IgW0tFWV0gVVBE QVRFL1NIQVJFCiAJICogYmVmb3JlIHdlIGluaXRpYWxpemUgdGhlIHBsYW4gdHJlZSwgZWxzZSB3 ZSdkIGJlIHJpc2tpbmcgbG9jayB1cGdyYWRlcy4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL3N2YXJpYWJsZVJlY2VpdmVyLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9zdmFyaWFi bGVSZWNlaXZlci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjBlYWM0 YjVkMGMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9zdmFyaWFibGVS ZWNlaXZlci5jCkBAIC0wLDAgKzEsMTQ1IEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBz dmFyaWFibGVSZWNlaXZlci5jCisgKgkgIEFuIGltcGxlbWVudGF0aW9uIG9mIERlc3RSZWNlaXZl ciB0aGF0IHN0b3JlcyB0aGUgcmVzdWx0IHZhbHVlIGluCisgKgkgIGEgc2NoZW1hIHZhcmlhYmxl LgorICoKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0yMDE4LCBQb3N0Z3JlU1FMIEds b2JhbCBEZXZlbG9wbWVudCBHcm91cAorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk0LCBS ZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEKKyAqCisgKiBJREVOVElGSUNB VElPTgorICoJICBzcmMvYmFja2VuZC9leGVjdXRvci9zdmFyaWFibGVSZWNlaXZlci5jCisgKgor ICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKworI2luY2x1ZGUgInBvc3RncmVzLmgiCisKKyNpbmNs dWRlICJhY2Nlc3MvdHVwdG9hc3Rlci5oIgorI2luY2x1ZGUgImV4ZWN1dG9yL3N2YXJpYWJsZVJl Y2VpdmVyLmgiCisjaW5jbHVkZSAiY29tbWFuZHMvc2NoZW1hdmFyaWFibGUuaCIKKwordHlwZWRl ZiBzdHJ1Y3QKK3sKKwlEZXN0UmVjZWl2ZXIgcHViOworCU9pZAkJdmFyaWQ7CisJT2lkCQl0eXBp ZDsKKwlpbnQzMgl0eXBtb2Q7CisJaW50CQl0eXBsZW47CisJaW50CQlzbG90X29mZnNldDsKKwlp bnQJCXJvd3M7Cit9IHN2YXJpYWJsZVN0YXRlOworCisKKy8qCisgKiBQcmVwYXJlIHRvIHJlY2Vp dmUgdHVwbGVzIGZyb20gZXhlY3V0b3IuCisgKi8KK3N0YXRpYyB2b2lkCitzdmFyaWFibGVTdGFy dHVwUmVjZWl2ZXIoRGVzdFJlY2VpdmVyICpzZWxmLCBpbnQgb3BlcmF0aW9uLCBUdXBsZURlc2Mg dHlwZWluZm8pCit7CisJc3ZhcmlhYmxlU3RhdGUgKm15U3RhdGUgPSAoc3ZhcmlhYmxlU3RhdGUg Kikgc2VsZjsKKwlpbnQJCQluYXR0cyA9IHR5cGVpbmZvLT5uYXR0czsKKwlpbnQJCQlvdXRjb2xz ID0gMDsKKwlpbnQJCQlpOworCisJZm9yIChpID0gMDsgaSA8IG5hdHRzOyBpKyspCisJeworCQlG b3JtX3BnX2F0dHJpYnV0ZSBhdHRyID0gVHVwbGVEZXNjQXR0cih0eXBlaW5mbywgaSk7CisKKwkJ aWYgKGF0dHItPmF0dGlzZHJvcHBlZCkKKwkJCWNvbnRpbnVlOworCisJCWlmICgrK291dGNvbHMg PiAxKQorCQkJZWxvZyhFUlJPUiwgInN2YXJpYWJsZSBEZXN0UmVjZWl2ZXIgY2FuIHRha2Ugb25s eSBvbmUgYXR0cmlidXRlIik7CisKKwkJbXlTdGF0ZS0+dHlwaWQgPSBhdHRyLT5hdHR0eXBpZDsK KwkJbXlTdGF0ZS0+dHlwbW9kID0gYXR0ci0+YXR0dHlwbW9kOworCQlteVN0YXRlLT50eXBsZW4g PSBhdHRyLT5hdHRsZW47CisJCW15U3RhdGUtPnNsb3Rfb2Zmc2V0ID0gaTsKKwl9CisKKwlteVN0 YXRlLT5yb3dzID0gMDsKK30KKworLyoKKyAqIFJlY2VpdmUgYSB0dXBsZSBmcm9tIHRoZSBleGVj dXRvciBhbmQgc3RvcmUgaXQgaW4gc2NoZW1hIHZhcmlhYmxlLgorICovCitzdGF0aWMgYm9vbAor c3ZhcmlhYmxlUmVjZWl2ZVNsb3QoVHVwbGVUYWJsZVNsb3QgKnNsb3QsIERlc3RSZWNlaXZlciAq c2VsZikKK3sKKwlzdmFyaWFibGVTdGF0ZSAqbXlTdGF0ZSA9IChzdmFyaWFibGVTdGF0ZSAqKSBz ZWxmOworCURhdHVtCQl2YWx1ZTsKKwlib29sCQlpc251bGw7CisJYm9vbAkJZnJlZXZhbCA9IGZh bHNlOworCisJLyogTWFrZSBzdXJlIHRoZSB0dXBsZSBpcyBmdWxseSBkZWNvbnN0cnVjdGVkICov CisJc2xvdF9nZXRhbGxhdHRycyhzbG90KTsKKworCXZhbHVlID0gc2xvdC0+dHRzX3ZhbHVlc1tt eVN0YXRlLT5zbG90X29mZnNldF07CisJaXNudWxsID0gc2xvdC0+dHRzX2lzbnVsbFtteVN0YXRl LT5zbG90X29mZnNldF07CisKKwlpZiAobXlTdGF0ZS0+dHlwbGVuID09IC0xICYmICFpc251bGwg JiYgVkFSQVRUX0lTX0VYVEVSTkFMKERhdHVtR2V0UG9pbnRlcih2YWx1ZSkpKQorCXsKKwkJdmFs dWUgPSBQb2ludGVyR2V0RGF0dW0oaGVhcF90dXBsZV9mZXRjaF9hdHRyKChzdHJ1Y3QgdmFybGVu YSAqKQorCQkJCQkJCQkJCQkJCURhdHVtR2V0UG9pbnRlcih2YWx1ZSkpKTsKKwkJZnJlZXZhbCA9 IHRydWU7CisJfQorCisJU2V0U2NoZW1hVmFyaWFibGUobXlTdGF0ZS0+dmFyaWQsIHZhbHVlLCBp c251bGwsIG15U3RhdGUtPnR5cGlkLCBteVN0YXRlLT50eXBtb2QpOworCisJaWYgKGZyZWV2YWwp CisJCXBmcmVlKERhdHVtR2V0UG9pbnRlcih2YWx1ZSkpOworCisJcmV0dXJuIHRydWU7Cit9CisK Ky8qCisgKiBDbGVhbiB1cCBhdCBlbmQgb2YgYW4gZXhlY3V0b3IgcnVuCisgKi8KK3N0YXRpYyB2 b2lkCitzdmFyaWFibGVTaHV0ZG93blJlY2VpdmVyKERlc3RSZWNlaXZlciAqc2VsZikKK3sKKwkv KiBEbyBub3RoaW5nICovCit9CisKKy8qCisgKiBEZXN0cm95IHJlY2VpdmVyIHdoZW4gZG9uZSB3 aXRoIGl0CisgKi8KK3N0YXRpYyB2b2lkCitzdmFyaWFibGVEZXN0cm95UmVjZWl2ZXIoRGVzdFJl Y2VpdmVyICpzZWxmKQoreworCXBmcmVlKHNlbGYpOworfQorCisvKgorICogSW5pdGlhbGx5IGNy ZWF0ZSBhIERlc3RSZWNlaXZlciBvYmplY3QuCisgKi8KK0Rlc3RSZWNlaXZlciAqCitDcmVhdGVW YXJpYWJsZURlc3RSZWNlaXZlcih2b2lkKQoreworCXN2YXJpYWJsZVN0YXRlICpzZWxmID0gKHN2 YXJpYWJsZVN0YXRlICopIHBhbGxvYzAoc2l6ZW9mKHN2YXJpYWJsZVN0YXRlKSk7CisKKwlzZWxm LT5wdWIucmVjZWl2ZVNsb3QgPSBzdmFyaWFibGVSZWNlaXZlU2xvdDsKKwlzZWxmLT5wdWIuclN0 YXJ0dXAgPSBzdmFyaWFibGVTdGFydHVwUmVjZWl2ZXI7CisJc2VsZi0+cHViLnJTaHV0ZG93biA9 IHN2YXJpYWJsZVNodXRkb3duUmVjZWl2ZXI7CisJc2VsZi0+cHViLnJEZXN0cm95ID0gc3Zhcmlh YmxlRGVzdHJveVJlY2VpdmVyOworCXNlbGYtPnB1Yi5teWRlc3QgPSBEZXN0VmFyaWFibGU7CisK KwkvKiBwcml2YXRlIGZpZWxkcyB3aWxsIGJlIHNldCBieSBTZXRWYXJpYWJsZURlc3RSZWNlaXZl clBhcmFtcyAqLworCisJcmV0dXJuIChEZXN0UmVjZWl2ZXIgKikgc2VsZjsKK30KKworLyoKKyAq IFNldCBwYXJhbWV0ZXJzIGZvciBhIFZhcmlhYmxlRGVzdFJlY2VpdmVyCisgKi8KK3ZvaWQKK1Nl dFZhcmlhYmxlRGVzdFJlY2VpdmVyUGFyYW1zKERlc3RSZWNlaXZlciAqc2VsZiwgT2lkIHZhcmlk KQoreworCXN2YXJpYWJsZVN0YXRlICpteVN0YXRlID0gKHN2YXJpYWJsZVN0YXRlICopIHNlbGY7 CisKKwlBc3NlcnQobXlTdGF0ZS0+cHViLm15ZGVzdCA9PSBEZXN0VmFyaWFibGUpOworCUFzc2Vy dChPaWRJc1ZhbGlkKHZhcmlkKSk7CisKKwlteVN0YXRlLT52YXJpZCA9IHZhcmlkOworfQpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMvY29weWZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rl cy9jb3B5ZnVuY3MuYwppbmRleCA3YzgyMjBjZjY1Li5mY2FhMmRiNTFhIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9ub2Rlcy9jb3B5ZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9jb3B5 ZnVuY3MuYwpAQCAtOTMsNiArOTMsNyBAQCBfY29weVBsYW5uZWRTdG10KGNvbnN0IFBsYW5uZWRT dG10ICpmcm9tKQogCUNPUFlfTk9ERV9GSUVMRChyZXN1bHRSZWxhdGlvbnMpOwogCUNPUFlfTk9E RV9GSUVMRChub25sZWFmUmVzdWx0UmVsYXRpb25zKTsKIAlDT1BZX05PREVfRklFTEQocm9vdFJl c3VsdFJlbGF0aW9ucyk7CisJQ09QWV9TQ0FMQVJfRklFTEQocmVzdWx0VmFyaWFibGUpOwogCUNP UFlfTk9ERV9GSUVMRChzdWJwbGFucyk7CiAJQ09QWV9CSVRNQVBTRVRfRklFTEQocmV3aW5kUGxh bklEcyk7CiAJQ09QWV9OT0RFX0ZJRUxEKHJvd01hcmtzKTsKQEAgLTMwMDAsNiArMzAwMSw3IEBA IF9jb3B5UXVlcnkoY29uc3QgUXVlcnkgKmZyb20pCiAJQ09QWV9TQ0FMQVJfRklFTEQoY2FuU2V0 VGFnKTsKIAlDT1BZX05PREVfRklFTEQodXRpbGl0eVN0bXQpOwogCUNPUFlfU0NBTEFSX0ZJRUxE KHJlc3VsdFJlbGF0aW9uKTsKKwlDT1BZX1NDQUxBUl9GSUVMRChyZXN1bHRWYXJpYWJsZSk7CiAJ Q09QWV9TQ0FMQVJfRklFTEQoaGFzQWdncyk7CiAJQ09QWV9TQ0FMQVJfRklFTEQoaGFzV2luZG93 RnVuY3MpOwogCUNPUFlfU0NBTEFSX0ZJRUxEKGhhc1RhcmdldFNSRnMpOwpAQCAtMzExOCw2ICsz MTIwLDE4IEBAIF9jb3B5U2VsZWN0U3RtdChjb25zdCBTZWxlY3RTdG10ICpmcm9tKQogCXJldHVy biBuZXdub2RlOwogfQogCitzdGF0aWMgTGV0U3RtdCAqCitfY29weUxldFN0bXQoY29uc3QgTGV0 U3RtdCAqZnJvbSkKK3sKKwlMZXRTdG10ICpuZXdub2RlID0gbWFrZU5vZGUoTGV0U3RtdCk7CisK KwlDT1BZX05PREVfRklFTEQodGFyZ2V0KTsKKwlDT1BZX05PREVfRklFTEQoc2VsZWN0U3RtdCk7 CisJQ09QWV9MT0NBVElPTl9GSUVMRChsb2NhdGlvbik7CisKKwlyZXR1cm4gbmV3bm9kZTsKK30K Kwogc3RhdGljIFNldE9wZXJhdGlvblN0bXQgKgogX2NvcHlTZXRPcGVyYXRpb25TdG10KGNvbnN0 IFNldE9wZXJhdGlvblN0bXQgKmZyb20pCiB7CkBAIC01MTY2LDYgKzUxODAsOSBAQCBjb3B5T2Jq ZWN0SW1wbChjb25zdCB2b2lkICpmcm9tKQogCQljYXNlIFRfU2VsZWN0U3RtdDoKIAkJCXJldHZh bCA9IF9jb3B5U2VsZWN0U3RtdChmcm9tKTsKIAkJCWJyZWFrOworCQljYXNlIFRfTGV0U3RtdDoK KwkJCXJldHZhbCA9IF9jb3B5TGV0U3RtdChmcm9tKTsKKwkJCWJyZWFrOwogCQljYXNlIFRfU2V0 T3BlcmF0aW9uU3RtdDoKIAkJCXJldHZhbCA9IF9jb3B5U2V0T3BlcmF0aW9uU3RtdChmcm9tKTsK IAkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMvZXF1YWxmdW5jcy5jIGIv c3JjL2JhY2tlbmQvbm9kZXMvZXF1YWxmdW5jcy5jCmluZGV4IDM3OGYyZmFjYjguLjNlYzQ3MmUx OWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL2VxdWFsZnVuY3MuYworKysgYi9zcmMv YmFja2VuZC9ub2Rlcy9lcXVhbGZ1bmNzLmMKQEAgLTk0OSw2ICs5NDksNyBAQCBfZXF1YWxRdWVy eShjb25zdCBRdWVyeSAqYSwgY29uc3QgUXVlcnkgKmIpCiAJQ09NUEFSRV9TQ0FMQVJfRklFTEQo Y2FuU2V0VGFnKTsKIAlDT01QQVJFX05PREVfRklFTEQodXRpbGl0eVN0bXQpOwogCUNPTVBBUkVf U0NBTEFSX0ZJRUxEKHJlc3VsdFJlbGF0aW9uKTsKKwlDT01QQVJFX1NDQUxBUl9GSUVMRChyZXN1 bHRWYXJpYWJsZSk7CiAJQ09NUEFSRV9TQ0FMQVJfRklFTEQoaGFzQWdncyk7CiAJQ09NUEFSRV9T Q0FMQVJfRklFTEQoaGFzV2luZG93RnVuY3MpOwogCUNPTVBBUkVfU0NBTEFSX0ZJRUxEKGhhc1Rh cmdldFNSRnMpOwpAQCAtMTA1Nyw2ICsxMDU4LDE2IEBAIF9lcXVhbFNlbGVjdFN0bXQoY29uc3Qg U2VsZWN0U3RtdCAqYSwgY29uc3QgU2VsZWN0U3RtdCAqYikKIAlyZXR1cm4gdHJ1ZTsKIH0KIAor c3RhdGljIGJvb2wKK19lcXVhbExldFN0bXQoY29uc3QgTGV0U3RtdCAqYSwgY29uc3QgTGV0U3Rt dCAqYikKK3sKKwlDT01QQVJFX05PREVfRklFTEQodGFyZ2V0KTsKKwlDT01QQVJFX05PREVfRklF TEQoc2VsZWN0U3RtdCk7CisKKwlyZXR1cm4gdHJ1ZTsKK30KKworCiBzdGF0aWMgYm9vbAogX2Vx dWFsU2V0T3BlcmF0aW9uU3RtdChjb25zdCBTZXRPcGVyYXRpb25TdG10ICphLCBjb25zdCBTZXRP cGVyYXRpb25TdG10ICpiKQogewpAQCAtMzIyNSw2ICszMjM2LDkgQEAgZXF1YWwoY29uc3Qgdm9p ZCAqYSwgY29uc3Qgdm9pZCAqYikKIAkJY2FzZSBUX1NlbGVjdFN0bXQ6CiAJCQlyZXR2YWwgPSBf ZXF1YWxTZWxlY3RTdG10KGEsIGIpOwogCQkJYnJlYWs7CisJCWNhc2UgVF9MZXRTdG10OgorCQkJ cmV0dmFsID0gX2VxdWFsTGV0U3RtdChhLCBiKTsKKwkJCWJyZWFrOwogCQljYXNlIFRfU2V0T3Bl cmF0aW9uU3RtdDoKIAkJCXJldHZhbCA9IF9lcXVhbFNldE9wZXJhdGlvblN0bXQoYSwgYik7CiAJ CQlicmVhazsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL291dGZ1bmNzLmMgYi9zcmMv YmFja2VuZC9ub2Rlcy9vdXRmdW5jcy5jCmluZGV4IDYyNjlmNDc0ZDIuLjQ2NDA0ZmY5YWMgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL291dGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQv bm9kZXMvb3V0ZnVuY3MuYwpAQCAtMjc4LDYgKzI3OCw3IEBAIF9vdXRQbGFubmVkU3RtdChTdHJp bmdJbmZvIHN0ciwgY29uc3QgUGxhbm5lZFN0bXQgKm5vZGUpCiAJV1JJVEVfTk9ERV9GSUVMRChy ZXN1bHRSZWxhdGlvbnMpOwogCVdSSVRFX05PREVfRklFTEQobm9ubGVhZlJlc3VsdFJlbGF0aW9u cyk7CiAJV1JJVEVfTk9ERV9GSUVMRChyb290UmVzdWx0UmVsYXRpb25zKTsKKwlXUklURV9PSURf RklFTEQocmVzdWx0VmFyaWFibGUpOwogCVdSSVRFX05PREVfRklFTEQoc3VicGxhbnMpOwogCVdS SVRFX0JJVE1BUFNFVF9GSUVMRChyZXdpbmRQbGFuSURzKTsKIAlXUklURV9OT0RFX0ZJRUxEKHJv d01hcmtzKTsKQEAgLTI3OTMsNiArMjc5NCwxNiBAQCBfb3V0U2VsZWN0U3RtdChTdHJpbmdJbmZv IHN0ciwgY29uc3QgU2VsZWN0U3RtdCAqbm9kZSkKIAlXUklURV9OT0RFX0ZJRUxEKHJhcmcpOwog fQogCitzdGF0aWMgdm9pZAorX291dExldFN0bXQoU3RyaW5nSW5mbyBzdHIsIGNvbnN0IExldFN0 bXQgKm5vZGUpCit7CisJV1JJVEVfTk9ERV9UWVBFKCJMRVQiKTsKKworCVdSSVRFX05PREVfRklF TEQodGFyZ2V0KTsKKwlXUklURV9OT0RFX0ZJRUxEKHNlbGVjdFN0bXQpOworCVdSSVRFX0xPQ0FU SU9OX0ZJRUxEKGxvY2F0aW9uKTsKK30KKwogc3RhdGljIHZvaWQKIF9vdXRGdW5jQ2FsbChTdHJp bmdJbmZvIHN0ciwgY29uc3QgRnVuY0NhbGwgKm5vZGUpCiB7CkBAIC0yOTcxLDYgKzI5ODIsNyBA QCBfb3V0UXVlcnkoU3RyaW5nSW5mbyBzdHIsIGNvbnN0IFF1ZXJ5ICpub2RlKQogCQlhcHBlbmRT dHJpbmdJbmZvU3RyaW5nKHN0ciwgIiA6dXRpbGl0eVN0bXQgPD4iKTsKIAogCVdSSVRFX0lOVF9G SUVMRChyZXN1bHRSZWxhdGlvbik7CisJV1JJVEVfSU5UX0ZJRUxEKHJlc3VsdFZhcmlhYmxlKTsK IAlXUklURV9CT09MX0ZJRUxEKGhhc0FnZ3MpOwogCVdSSVRFX0JPT0xfRklFTEQoaGFzV2luZG93 RnVuY3MpOwogCVdSSVRFX0JPT0xfRklFTEQoaGFzVGFyZ2V0U1JGcyk7CkBAIC00MTkxLDYgKzQy MDMsOSBAQCBvdXROb2RlKFN0cmluZ0luZm8gc3RyLCBjb25zdCB2b2lkICpvYmopCiAJCQljYXNl IFRfU2VsZWN0U3RtdDoKIAkJCQlfb3V0U2VsZWN0U3RtdChzdHIsIG9iaik7CiAJCQkJYnJlYWs7 CisJCQljYXNlIFRfTGV0U3RtdDoKKwkJCQlfb3V0TGV0U3RtdChzdHIsIG9iaik7CisJCQkJYnJl YWs7CiAJCQljYXNlIFRfQ29sdW1uRGVmOgogCQkJCV9vdXRDb2x1bW5EZWYoc3RyLCBvYmopOwog CQkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMvcmVhZGZ1bmNzLmMgYi9z cmMvYmFja2VuZC9ub2Rlcy9yZWFkZnVuY3MuYwppbmRleCAzMjU0NTI0MjIzLi40NDU0MzI3NTQ5 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9yZWFkZnVuY3MuYworKysgYi9zcmMvYmFj a2VuZC9ub2Rlcy9yZWFkZnVuY3MuYwpAQCAtMjQyLDYgKzI0Miw3IEBAIF9yZWFkUXVlcnkodm9p ZCkKIAlSRUFEX0JPT0xfRklFTEQoY2FuU2V0VGFnKTsKIAlSRUFEX05PREVfRklFTEQodXRpbGl0 eVN0bXQpOwogCVJFQURfSU5UX0ZJRUxEKHJlc3VsdFJlbGF0aW9uKTsKKwlSRUFEX0lOVF9GSUVM RChyZXN1bHRWYXJpYWJsZSk7CiAJUkVBRF9CT09MX0ZJRUxEKGhhc0FnZ3MpOwogCVJFQURfQk9P TF9GSUVMRChoYXNXaW5kb3dGdW5jcyk7CiAJUkVBRF9CT09MX0ZJRUxEKGhhc1RhcmdldFNSRnMp OwpAQCAtMTQ4NSw2ICsxNDg2LDcgQEAgX3JlYWRQbGFubmVkU3RtdCh2b2lkKQogCVJFQURfTk9E RV9GSUVMRChyZXN1bHRSZWxhdGlvbnMpOwogCVJFQURfTk9ERV9GSUVMRChub25sZWFmUmVzdWx0 UmVsYXRpb25zKTsKIAlSRUFEX05PREVfRklFTEQocm9vdFJlc3VsdFJlbGF0aW9ucyk7CisJUkVB RF9PSURfRklFTEQocmVzdWx0VmFyaWFibGUpOwogCVJFQURfTk9ERV9GSUVMRChzdWJwbGFucyk7 CiAJUkVBRF9CSVRNQVBTRVRfRklFTEQocmV3aW5kUGxhbklEcyk7CiAJUkVBRF9OT0RFX0ZJRUxE KHJvd01hcmtzKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5u ZXIuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYwppbmRleCBmZDA2ZGE5 OGI5Li4wMWY5N2YyZDg2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9w bGFubmVyLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCkBAIC0z MzUsNyArMzM1LDggQEAgc3RhbmRhcmRfcGxhbm5lcihRdWVyeSAqcGFyc2UsIGludCBjdXJzb3JP cHRpb25zLCBQYXJhbUxpc3RJbmZvIGJvdW5kUGFyYW1zKQogCSAqLwogCWlmICgoY3Vyc29yT3B0 aW9ucyAmIENVUlNPUl9PUFRfUEFSQUxMRUxfT0spICE9IDAgJiYKIAkJSXNVbmRlclBvc3RtYXN0 ZXIgJiYKLQkJcGFyc2UtPmNvbW1hbmRUeXBlID09IENNRF9TRUxFQ1QgJiYKKwkJKHBhcnNlLT5j b21tYW5kVHlwZSA9PSBDTURfU0VMRUNUIHx8CisJCSBwYXJzZS0+Y29tbWFuZFR5cGUgPT0gQ01E X1BMQU5fVVRJTElUWSkgJiYKIAkJIXBhcnNlLT5oYXNNb2RpZnlpbmdDVEUgJiYKIAkJbWF4X3Bh cmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciA+IDAgJiYKIAkJIUlzUGFyYWxsZWxXb3JrZXIoKSAm JgpAQCAtMzUyLDYgKzM1Myw4IEBAIHN0YW5kYXJkX3BsYW5uZXIoUXVlcnkgKnBhcnNlLCBpbnQg Y3Vyc29yT3B0aW9ucywgUGFyYW1MaXN0SW5mbyBib3VuZFBhcmFtcykKIAkJZ2xvYi0+cGFyYWxs ZWxNb2RlT0sgPSBmYWxzZTsKIAl9CiAKKworCiAJLyoKIAkgKiBnbG9iLT5wYXJhbGxlbE1vZGVO ZWVkZWQgaXMgbm9ybWFsbHkgc2V0IHRvIGZhbHNlIGhlcmUgYW5kIGNoYW5nZWQgdG8KIAkgKiB0 cnVlIGR1cmluZyBwbGFuIGNyZWF0aW9uIGlmIGEgR2F0aGVyIG9yIEdhdGhlciBNZXJnZSBwbGFu IGlzIGFjdHVhbGx5CkBAIC01MjEsNiArNTI0LDcgQEAgc3RhbmRhcmRfcGxhbm5lcihRdWVyeSAq cGFyc2UsIGludCBjdXJzb3JPcHRpb25zLCBQYXJhbUxpc3RJbmZvIGJvdW5kUGFyYW1zKQogCXJl c3VsdC0+cmVzdWx0UmVsYXRpb25zID0gZ2xvYi0+cmVzdWx0UmVsYXRpb25zOwogCXJlc3VsdC0+ bm9ubGVhZlJlc3VsdFJlbGF0aW9ucyA9IGdsb2ItPm5vbmxlYWZSZXN1bHRSZWxhdGlvbnM7CiAJ cmVzdWx0LT5yb290UmVzdWx0UmVsYXRpb25zID0gZ2xvYi0+cm9vdFJlc3VsdFJlbGF0aW9uczsK KwlyZXN1bHQtPnJlc3VsdFZhcmlhYmxlID0gcGFyc2UtPnJlc3VsdFZhcmlhYmxlOwogCXJlc3Vs dC0+c3VicGxhbnMgPSBnbG9iLT5zdWJwbGFuczsKIAlyZXN1bHQtPnJld2luZFBsYW5JRHMgPSBn bG9iLT5yZXdpbmRQbGFuSURzOwogCXJlc3VsdC0+cm93TWFya3MgPSBnbG9iLT5maW5hbHJvd21h cmtzOwpAQCAtMjE2Nyw3ICsyMTcxLDcgQEAgZ3JvdXBpbmdfcGxhbm5lcihQbGFubmVySW5mbyAq cm9vdCwgYm9vbCBpbmhlcml0YW5jZV91cGRhdGUsCiAJCSAqIElmIHRoaXMgaXMgYW4gSU5TRVJU L1VQREFURS9ERUxFVEUsIGFuZCB3ZSdyZSBub3QgYmVpbmcgY2FsbGVkIGZyb20KIAkJICogaW5o ZXJpdGFuY2VfcGxhbm5lciwgYWRkIHRoZSBNb2RpZnlUYWJsZSBub2RlLgogCQkgKi8KLQkJaWYg KHBhcnNlLT5jb21tYW5kVHlwZSAhPSBDTURfU0VMRUNUICYmICFpbmhlcml0YW5jZV91cGRhdGUp CisJCWlmIChwYXJzZS0+Y29tbWFuZFR5cGUgIT0gQ01EX1NFTEVDVCAmJiBwYXJzZS0+Y29tbWFu ZFR5cGUgIT0gQ01EX1BMQU5fVVRJTElUWSAmJiAhaW5oZXJpdGFuY2VfdXBkYXRlKQogCQl7CiAJ CQlMaXN0CSAgICp3aXRoQ2hlY2tPcHRpb25MaXN0czsKIAkJCUxpc3QJICAgKnJldHVybmluZ0xp c3RzOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3ByZXAvcHJlcHRsaXN0LmMg Yi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcHJlcC9wcmVwdGxpc3QuYwppbmRleCA4NjAzZmVlZjJi Li4yOTIzZTNmY2M3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcHJlcC9wcmVw dGxpc3QuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcHJlcC9wcmVwdGxpc3QuYwpAQCAt NzEsNiArNzEsNyBAQCBwcmVwcm9jZXNzX3RhcmdldGxpc3QoUGxhbm5lckluZm8gKnJvb3QpCiB7 CiAJUXVlcnkJICAgKnBhcnNlID0gcm9vdC0+cGFyc2U7CiAJaW50CQkJcmVzdWx0X3JlbGF0aW9u ID0gcGFyc2UtPnJlc3VsdFJlbGF0aW9uOworCWludAkJCXJlc3VsdF92YXJpYWJsZSA9IHBhcnNl LT5yZXN1bHRWYXJpYWJsZTsKIAlMaXN0CSAgICpyYW5nZV90YWJsZSA9IHBhcnNlLT5ydGFibGU7 CiAJQ21kVHlwZQkJY29tbWFuZF90eXBlID0gcGFyc2UtPmNvbW1hbmRUeXBlOwogCVJhbmdlVGJs RW50cnkgKnRhcmdldF9ydGUgPSBOVUxMOwpAQCAtOTYsNiArOTcsMTAgQEAgcHJlcHJvY2Vzc190 YXJnZXRsaXN0KFBsYW5uZXJJbmZvICpyb290KQogCiAJCXRhcmdldF9yZWxhdGlvbiA9IGhlYXBf b3Blbih0YXJnZXRfcnRlLT5yZWxpZCwgTm9Mb2NrKTsKIAl9CisJZWxzZSBpZiAocmVzdWx0X3Zh cmlhYmxlKQorCXsKKwkJQXNzZXJ0KGNvbW1hbmRfdHlwZSA9PSBDTURfUExBTl9VVElMSVRZKTsK Kwl9CiAJZWxzZQogCQlBc3NlcnQoY29tbWFuZF90eXBlID09IENNRF9TRUxFQ1QpOwogCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9jbGF1c2VzLmMgYi9zcmMvYmFja2Vu ZC9vcHRpbWl6ZXIvdXRpbC9jbGF1c2VzLmMKaW5kZXggYTA0YWQ2ZTk5ZS4uZGE1NzBiYjIzYiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvY2xhdXNlcy5jCisrKyBiL3Ny Yy9iYWNrZW5kL29wdGltaXplci91dGlsL2NsYXVzZXMuYwpAQCAtMTI1NCw3ICsxMjU0LDggQEAg bWF4X3BhcmFsbGVsX2hhemFyZF93YWxrZXIoTm9kZSAqbm9kZSwgbWF4X3BhcmFsbGVsX2hhemFy ZF9jb250ZXh0ICpjb250ZXh0KQogCXsKIAkJUGFyYW0JICAgKnBhcmFtID0gKFBhcmFtICopIG5v ZGU7CiAKLQkJaWYgKHBhcmFtLT5wYXJhbWtpbmQgPT0gUEFSQU1fRVhURVJOKQorCQlpZiAocGFy YW0tPnBhcmFta2luZCA9PSBQQVJBTV9FWFRFUk4gfHwKKwkJCXBhcmFtLT5wYXJhbWtpbmQgPT0g UEFSQU1fU0NIRU1BX1ZBUklBQkxFKQogCQkJcmV0dXJuIGZhbHNlOwogCiAJCWlmIChwYXJhbS0+ cGFyYW1raW5kICE9IFBBUkFNX0VYRUMgfHwKQEAgLTQ3OTksNyArNDgwMCw3IEBAIHN1YnN0aXR1 dGVfYWN0dWFsX3BhcmFtZXRlcnNfbXV0YXRvcihOb2RlICpub2RlLAogewogCWlmIChub2RlID09 IE5VTEwpCiAJCXJldHVybiBOVUxMOwotCWlmIChJc0Eobm9kZSwgUGFyYW0pKQorCWlmIChJc0Eo bm9kZSwgUGFyYW0pICYmICgoUGFyYW0gKikgbm9kZSktPnBhcmFta2luZCAhPSBQQVJBTV9TQ0hF TUFfVkFSSUFCTEUpCiAJewogCQlQYXJhbQkgICAqcGFyYW0gPSAoUGFyYW0gKikgbm9kZTsKIApk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGxhbmNhdC5jIGIvc3JjL2Jh Y2tlbmQvb3B0aW1pemVyL3V0aWwvcGxhbmNhdC5jCmluZGV4IDgzNjllM2FkNjIuLmZjMGNmMzRj N2QgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3BsYW5jYXQuYworKysg Yi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wbGFuY2F0LmMKQEAgLTEyNzIsNyArMTI3Miw3 IEBAIGdldF9yZWxhdGlvbl9jb25zdHJhaW50cyhQbGFubmVySW5mbyAqcm9vdCwKIAkgKiBkZXNj cmlwdG9yLCBpbnN0ZWFkIG9mIGNvbnN0cmFpbnQgZXhjbHVzaW9uIHdoaWNoIGlzIGRyaXZlbiBi eSB0aGUKIAkgKiBpbmRpdmlkdWFsIHBhcnRpdGlvbidzIHBhcnRpdGlvbiBjb25zdHJhaW50Lgog CSAqLwotCWlmIChlbmFibGVfcGFydGl0aW9uX3BydW5pbmcgJiYgcm9vdC0+cGFyc2UtPmNvbW1h bmRUeXBlICE9IENNRF9TRUxFQ1QpCisJaWYgKGVuYWJsZV9wYXJ0aXRpb25fcHJ1bmluZyAmJiBy b290LT5wYXJzZS0+Y29tbWFuZFR5cGUgIT0gQ01EX1NFTEVDVCAmJiByb290LT5wYXJzZS0+Y29t bWFuZFR5cGUgIT0gQ01EX1BMQU5fVVRJTElUWSkKIAl7CiAJCUxpc3QJICAgKnBjcXVhbCA9IFJl bGF0aW9uR2V0UGFydGl0aW9uUXVhbChyZWxhdGlvbik7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3BhcnNlci9hbmFseXplLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvYW5hbHl6ZS5jCmluZGV4 IGM2MDFiNmQ0MGQuLjQ0MWIyOTg2OTMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9h bmFseXplLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2FuYWx5emUuYwpAQCAtMjUsNyArMjUs MTAgQEAKICNpbmNsdWRlICJwb3N0Z3Jlcy5oIgogCiAjaW5jbHVkZSAiYWNjZXNzL3N5c2F0dHIu aCIKKyNpbmNsdWRlICJjYXRhbG9nL25hbWVzcGFjZS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdf dHlwZS5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfdmFyaWFibGUuaCIKKyNpbmNsdWRlICJjb21t YW5kcy9zY2hlbWF2YXJpYWJsZS5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUg Im5vZGVzL21ha2VmdW5jcy5oIgogI2luY2x1ZGUgIm5vZGVzL25vZGVGdW5jcy5oIgpAQCAtNDQs NiArNDcsOCBAQAogI2luY2x1ZGUgInBhcnNlci9wYXJzZV90YXJnZXQuaCIKICNpbmNsdWRlICJw YXJzZXIvcGFyc2V0cmVlLmgiCiAjaW5jbHVkZSAicmV3cml0ZS9yZXdyaXRlTWFuaXAuaCIKKyNp bmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgorI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgog I2luY2x1ZGUgInV0aWxzL3JlbC5oIgogCiAKQEAgLTc4LDYgKzgzLDggQEAgc3RhdGljIFF1ZXJ5 ICp0cmFuc2Zvcm1DcmVhdGVUYWJsZUFzU3RtdChQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkg ICBDcmVhdGVUYWJsZUFzU3RtdCAqc3RtdCk7CiBzdGF0aWMgUXVlcnkgKnRyYW5zZm9ybUNhbGxT dG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkgIENhbGxTdG10ICpzdG10KTsKK3N0YXRpYyBR dWVyeSAqdHJhbnNmb3JtTGV0U3RtdChQYXJzZVN0YXRlICpwc3RhdGUsCisJCQkJICBMZXRTdG10 ICpzdG10KTsKIHN0YXRpYyB2b2lkIHRyYW5zZm9ybUxvY2tpbmdDbGF1c2UoUGFyc2VTdGF0ZSAq cHN0YXRlLCBRdWVyeSAqcXJ5LAogCQkJCQkgICBMb2NraW5nQ2xhdXNlICpsYywgYm9vbCBwdXNo ZWREb3duKTsKICNpZmRlZiBSQVdfRVhQUkVTU0lPTl9DT1ZFUkFHRV9URVNUCkBAIC0yNjcsNiAr Mjc0LDcgQEAgdHJhbnNmb3JtU3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKnBhcnNlVHJl ZSkKIAkJY2FzZSBUX0luc2VydFN0bXQ6CiAJCWNhc2UgVF9VcGRhdGVTdG10OgogCQljYXNlIFRf RGVsZXRlU3RtdDoKKwkJY2FzZSBUX0xldFN0bXQ6CiAJCQkodm9pZCkgdGVzdF9yYXdfZXhwcmVz c2lvbl9jb3ZlcmFnZShwYXJzZVRyZWUsIE5VTEwpOwogCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CkBA IC0zMjcsNiArMzM1LDExIEBAIHRyYW5zZm9ybVN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2Rl ICpwYXJzZVRyZWUpCiAJCQkJCQkJCQkgICAoQ2FsbFN0bXQgKikgcGFyc2VUcmVlKTsKIAkJCWJy ZWFrOwogCisJCWNhc2UgVF9MZXRTdG10OgorCQkJcmVzdWx0ID0gdHJhbnNmb3JtTGV0U3RtdChw c3RhdGUsCisJCQkJCQkJCQkgIChMZXRTdG10ICopIHBhcnNlVHJlZSk7CisJCQlicmVhazsKKwog CQlkZWZhdWx0OgogCiAJCQkvKgpAQCAtMzY3LDYgKzM4MCw3IEBAIGFuYWx5emVfcmVxdWlyZXNf c25hcHNob3QoUmF3U3RtdCAqcGFyc2VUcmVlKQogCQljYXNlIFRfRGVsZXRlU3RtdDoKIAkJY2Fz ZSBUX1VwZGF0ZVN0bXQ6CiAJCWNhc2UgVF9TZWxlY3RTdG10OgorCQljYXNlIFRfTGV0U3RtdDoK IAkJCXJlc3VsdCA9IHRydWU7CiAJCQlicmVhazsKIApAQCAtMTU2Nyw2ICsxNTgxLDIwMyBAQCB0 cmFuc2Zvcm1WYWx1ZXNDbGF1c2UoUGFyc2VTdGF0ZSAqcHN0YXRlLCBTZWxlY3RTdG10ICpzdG10 KQogCXJldHVybiBxcnk7CiB9CiAKKy8qCisgKiB0cmFuc2Zvcm1MZXRTdG10IC0KKyAqCSAgdHJh bnNmb3JtIGFuIExldCBTdGF0ZW1lbnQKKyAqLworc3RhdGljIFF1ZXJ5ICoKK3RyYW5zZm9ybUxl dFN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBMZXRTdG10ICpzdG10KQoreworCVF1ZXJ5CSAgICpx cnkgPSBtYWtlTm9kZShRdWVyeSk7CisJTGlzdAkgICAqZXhwckxpc3QgPSBOSUw7CisJTGlzdAkg ICAqZXhwckxpc3RDb2VyID0gTklMOworCUxpc3QJICAgKmluZGlyZWN0aW9uID0gTklMOworCUxp c3RDZWxsICAgKmxjOworCVF1ZXJ5CSAgICpzZWxlY3RRdWVyeTsKKwlpbnQJCQlpID0gMDsKKwor CU9pZAkJCXZhcmlkOworCisJUGFyc2VFeHByS2luZCBzdl9leHByX2tpbmQ7CisJY2hhcgkgICAq YXR0cm5hbWUgPSBOVUxMOworCWJvb2wJCW5vdF91bmlxdWU7CisJYm9vbAkJaXNfcm93dHlwZTsK KwlPaWQJCQl0eXBpZDsKKwlpbnQzMgkJdHlwbW9kOworCisJQWNsUmVzdWx0CWFjbHJlc3VsdDsK KwlMaXN0CSAgICpuYW1lcyA9IE5VTEw7CisJaW50CQkJaW5kaXJlY3Rpb25fc3RhcnQ7CisKKwlz dl9leHByX2tpbmQgPSBwc3RhdGUtPnBfZXhwcl9raW5kOworCXBzdGF0ZS0+cF9leHByX2tpbmQg PSBFWFBSX0tJTkRfTEVUOworCisJLyogVGhlcmUgY2FuJ3QgYmUgYW55IG91dGVyIFdJVEggdG8g d29ycnkgYWJvdXQgKi8KKwlBc3NlcnQocHN0YXRlLT5wX2N0ZW5hbWVzcGFjZSA9PSBOSUwpOwor CisJLyogRXhlYyB0aGlzIGNvbW1hbmQgYXMgdXRpbGl0eSAqLworCXFyeS0+Y29tbWFuZFR5cGUg PSBDTURfUExBTl9VVElMSVRZOworCXFyeS0+dXRpbGl0eVN0bXQgPSAoTm9kZSAqKSBzdG10Owor CisJbmFtZXMgPSBOYW1lc0Zyb21MaXN0KHN0bXQtPnRhcmdldCk7CisKKwl2YXJpZCA9IGlkZW50 aWZ5X3ZhcmlhYmxlKG5hbWVzLCAmYXR0cm5hbWUsICZub3RfdW5pcXVlKTsKKwlpZiAobm90X3Vu aXF1ZSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0FNQklHVU9VU19Q QVJBTUVURVIpLAorCQkJCSBlcnJtc2coInRhcmdldCBcIiVzXCIgb2YgTEVUIGNvbW1hbmQgaXMg YW1iaWd1b3VzIiwKKwkJCQkJCU5hbWVMaXN0VG9TdHJpbmcobmFtZXMpKSwKKwkJCQkgcGFyc2Vy X2VycnBvc2l0aW9uKHBzdGF0ZSwgc3RtdC0+bG9jYXRpb24pKSk7CisKKwlpZiAoIU9pZElzVmFs aWQodmFyaWQpKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9VTkRF RklORURfT0JKRUNUKSwKKwkJCQkJCSBlcnJtc2coInNjaGVtYSB2YXJpYWJsZSBcIiVzXCIgZG9l c24ndCBleGlzdHMiLAorCQkJCQkJCQlOYW1lTGlzdFRvU3RyaW5nKG5hbWVzKSksCisJCQkJCQkg cGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgc3RtdC0+bG9jYXRpb24pKSk7CisKKwlxcnktPnJl c3VsdFZhcmlhYmxlID0gdmFyaWQ7CisKKwlnZXRfc2NoZW1hX3ZhcmlhYmxlX3R5cGVfdHlwbW9k KHZhcmlkLCAmdHlwaWQsICZ0eXBtb2QpOworCisJaXNfcm93dHlwZSA9IHR5cGVfaXNfcm93dHlw ZSh0eXBpZCk7CisKKwlpZiAoYXR0cm5hbWUgJiYgIWlzX3Jvd3R5cGUpCisJCWVyZXBvcnQoRVJS T1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9XUk9OR19PQkpFQ1RfVFlQRSksCisJCQkJIGVycm1z ZygidGFyZ2V0IHZhcmlhYmxlIFwiJXNcIiBpcyBub3Qgcm93IHR5cGUiLAorCQkJCQkJc2NoZW1h X3ZhcmlhYmxlX2dldF9uYW1lKHZhcmlkKSksCisJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0 ZSwgc3RtdC0+bG9jYXRpb24pKSk7CisKKwlhY2xyZXN1bHQgPSBwZ192YXJpYWJsZV9hY2xjaGVj ayh2YXJpZCwgR2V0VXNlcklkKCksIEFDTF9XUklURSk7CisJaWYgKGFjbHJlc3VsdCAhPSBBQ0xD SEVDS19PSykKKwkJYWNsY2hlY2tfZXJyb3IoYWNscmVzdWx0LCBPQkpFQ1RfVkFSSUFCTEUsIE5h bWVMaXN0VG9TdHJpbmcobmFtZXMpKTsKKworCXNlbGVjdFF1ZXJ5ID0gdHJhbnNmb3JtU3RtdChw c3RhdGUsIHN0bXQtPnNlbGVjdFN0bXQpOworCisJLyogVGhlIGdyYW1tYXIgc2hvdWxkIGhhdmUg cHJvZHVjZWQgYSBTRUxFQ1QgKi8KKwlpZiAoIUlzQShzZWxlY3RRdWVyeSwgUXVlcnkpIHx8CisJ CXNlbGVjdFF1ZXJ5LT5jb21tYW5kVHlwZSAhPSBDTURfU0VMRUNUKQorCQllbG9nKEVSUk9SLCAi dW5leHBlY3RlZCBub24tU0VMRUNUIGNvbW1hbmQgaW4gTEVUIC4uLiBTRUxFQ1QiKTsKKworCS8q LS0tLS0tLS0tLQorCSAqIEdlbmVyYXRlIGFuIGV4cHJlc3Npb24gbGlzdCBmb3IgdGhlIExFVCB0 aGF0IHNlbGVjdHMgYWxsIHRoZQorCSAqIG5vbi1yZXNqdW5rIGNvbHVtbnMgZnJvbSB0aGUgc3Vi cXVlcnkuCisJICotLS0tLS0tLS0tCisJICovCisJZXhwckxpc3QgPSBOSUw7CisJZm9yZWFjaChs Yywgc2VsZWN0UXVlcnktPnRhcmdldExpc3QpCisJeworCQlUYXJnZXRFbnRyeSAqdGxlID0gKFRh cmdldEVudHJ5ICopIGxmaXJzdChsYyk7CisKKwkJaWYgKHRsZS0+cmVzanVuaykKKwkJCWNvbnRp bnVlOworCisJCWV4cHJMaXN0ID0gbGFwcGVuZChleHByTGlzdCwgdGxlLT5leHByKTsKKwl9CisK KwkvKgorCSAqIEJlY2F1c2UgZG9lc24ndCBzdXBwb3J0IHBhdHRlcm4gbWF0Y2hpbmcsIGRvbid0 IGFsbG93IG11bHRpY29sdW1uIHJlc3VsdAorCSAqLworCWlmIChsaXN0X2xlbmd0aChleHByTGlz dCkgIT0gMSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9F UlJPUiksCisJCQkJIGVycm1zZygiZXhwcmVzc2lvbiBpcyBub3Qgc2NhbGFyIHZhbHVlIiksCisJ CQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsCisJCQkJCQkJCQlleHByTG9jYXRpb24oKE5v ZGUgKikgZXhwckxpc3QpKSkpOworCisJaW5kaXJlY3Rpb25fc3RhcnQgPSBsaXN0X2xlbmd0aChu YW1lcykgLSAoYXR0cm5hbWUgPyAxIDogMCk7CisJaW5kaXJlY3Rpb24gPSBsaXN0X2NvcHlfdGFp bChzdG10LT50YXJnZXQsIGluZGlyZWN0aW9uX3N0YXJ0KTsKKworCWV4cHJMaXN0Q29lciA9IE5J TDsKKwlmb3JlYWNoKGxjLCBleHByTGlzdCkKKwl7CisJCU5vZGUJICAgKm9yaWdfZXhwciA9IChO b2RlKikgbGZpcnN0KGxjKTsKKwkJT2lkCQkJZXhwcnR5cGlkID0gZXhwclR5cGUoKE5vZGUgKikg b3JpZ19leHByKTsKKwkJUGFyYW0gKnBhcmFtID0gbWFrZU5vZGUoUGFyYW0pOworCQlFeHByCSAg ICpleHByID0gTlVMTDsKKworCQlwYXJhbS0+cGFyYW1raW5kID0gUEFSQU1fU0NIRU1BX1ZBUklB QkxFOworCQlwYXJhbS0+cGFyYW1pZCA9IHZhcmlkOworCQlwYXJhbS0+cGFyYW10eXBlID0gdHlw aWQ7CisJCXBhcmFtLT5wYXJhbXR5cG1vZCA9IHR5cG1vZDsKKworCQlpZiAoaW5kaXJlY3Rpb24g IT0gTlVMTCkKKwkJeworCQkJYm9vbAkJdGFyZ2V0SXNBcnJheTsKKwkJCWNoYXIJICAgICp0YXJn ZXROYW1lOworCisJCQl0YXJnZXROYW1lID0gYXR0cm5hbWUgIT0gTlVMTCA/IGF0dHJuYW1lIDog Z2V0X3NjaGVtYV92YXJpYWJsZV9uYW1lKHZhcmlkKTsKKwkJCXRhcmdldElzQXJyYXkgPSBPaWRJ c1ZhbGlkKGdldF9lbGVtZW50X3R5cGUodHlwaWQpKTsKKworCQkJZXhwciA9IChFeHByICopCisJ CQkJCXRyYW5zZm9ybUFzc2lnbm1lbnRJbmRpcmVjdGlvbihwc3RhdGUsCisJCQkJCQkJCQkJCQko Tm9kZSAqKSBwYXJhbSwKKwkJCQkJCQkJCQkJCXRhcmdldE5hbWUsCisJCQkJCQkJCQkJCQl0YXJn ZXRJc0FycmF5LAorCQkJCQkJCQkJCQkJdHlwaWQsCisJCQkJCQkJCQkJCQl0eXBtb2QsCisJCQkJ CQkJCQkJCQlJbnZhbGlkT2lkLAorCQkJCQkJCQkJCQkJbGlzdF9oZWFkKGluZGlyZWN0aW9uKSwK KwkJCQkJCQkJCQkJCShOb2RlICopIG9yaWdfZXhwciwKKwkJCQkJCQkJCQkJCXN0bXQtPmxvY2F0 aW9uKTsKKwkJfQorCQllbHNlCisJCQlleHByID0gKEV4cHIgKikKKwkJCQkJY29lcmNlX3RvX3Rh cmdldF90eXBlKHBzdGF0ZSwKKwkJCQkJCQkJCQkJKE5vZGUgKikgb3JpZ19leHByLAorCQkJCQkJ CQkJCQlleHBydHlwaWQsCisJCQkJCQkJCQkJCXR5cGlkLCB0eXBtb2QsCisJCQkJCQkJCQkJCUNP RVJDSU9OX0FTU0lHTk1FTlQsCisJCQkJCQkJCQkJCUNPRVJDRV9JTVBMSUNJVF9DQVNULAorCQkJ CQkJCQkJCQlzdG10LT5sb2NhdGlvbik7CisKKwkJaWYgKGV4cHIgPT0gTlVMTCkKKwkJCWVyZXBv cnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfREFUQVRZUEVfTUlTTUFUQ0gpLAorCQkJ CQkgZXJybXNnKCJ2YXJpYWJsZSBcIiVzXCIgaXMgb2YgdHlwZSAlcywiCisJCQkJCQkJICAiIGJ1 dCBleHByZXNzaW9uIGlzIG9mIHR5cGUgJXMiLAorCQkJCQkJc2NoZW1hX3ZhcmlhYmxlX2dldF9u YW1lKHZhcmlkKSwKKwkJCQkJCQlmb3JtYXRfdHlwZV9iZSh0eXBpZCksCisJCQkJCQkgIGZvcm1h dF90eXBlX2JlKGV4cHJ0eXBpZCkpLAorCQkJCSBlcnJoaW50KCJZb3Ugd2lsbCBuZWVkIHRvIHJl d3JpdGUgb3IgY2FzdCB0aGUgZXhwcmVzc2lvbi4iKSwKKwkJCQkgcGFyc2VyX2VycnBvc2l0aW9u KHBzdGF0ZSwgZXhwckxvY2F0aW9uKChOb2RlICopIG9yaWdfZXhwcikpKSk7CisKKwkJZXhwckxp c3RDb2VyID0gbGFwcGVuZChleHByTGlzdENvZXIsIGV4cHIpOworCX0KKworCS8qCisJICogR2Vu ZXJhdGUgcXVlcnkncyB0YXJnZXQgbGlzdCB1c2luZyB0aGUgY29tcHV0ZWQgbGlzdCBvZiBleHBy ZXNzaW9ucy4KKwkgKiBBbHNvLCBtYXJrIGFsbCB0aGUgdGFyZ2V0IGNvbHVtbnMgYXMgbmVlZGlu ZyBpbnNlcnQgcGVybWlzc2lvbnMuCisJICovCisJcXJ5LT50YXJnZXRMaXN0ID0gTklMOworCWZv cmVhY2gobGMsIGV4cHJMaXN0Q29lcikKKwl7CisJCUV4cHIJICAgKmV4cHIgPSAoRXhwciAqKSBs Zmlyc3QobGMpOworCQlUYXJnZXRFbnRyeSAqdGxlOworCisJCXRsZSA9IG1ha2VUYXJnZXRFbnRy eShleHByLAorCQkJCQkJCSAgaSArIDEsCisJCQkJCQkJICBGaWd1cmVDb2xuYW1lKChOb2RlICop ZXhwciksCisJCQkJCQkJICBmYWxzZSk7CisJCXFyeS0+dGFyZ2V0TGlzdCA9IGxhcHBlbmQocXJ5 LT50YXJnZXRMaXN0LCB0bGUpOworCX0KKworCS8qIGRvbmUgYnVpbGRpbmcgdGhlIHJhbmdlIHRh YmxlIGFuZCBqb2ludHJlZSAqLworCXFyeS0+cnRhYmxlID0gcHN0YXRlLT5wX3J0YWJsZTsKKwlx cnktPmpvaW50cmVlID0gbWFrZUZyb21FeHByKHBzdGF0ZS0+cF9qb2lubGlzdCwgTlVMTCk7CisK KwlxcnktPmhhc1RhcmdldFNSRnMgPSBwc3RhdGUtPnBfaGFzVGFyZ2V0U1JGczsKKwlxcnktPmhh c1N1YkxpbmtzID0gcHN0YXRlLT5wX2hhc1N1YkxpbmtzOworCisJYXNzaWduX3F1ZXJ5X2NvbGxh dGlvbnMocHN0YXRlLCBxcnkpOworCisJcHN0YXRlLT5wX2V4cHJfa2luZCA9IHN2X2V4cHJfa2lu ZDsKKworCXJldHVybiBxcnk7Cit9CisKKwogLyoKICAqIHRyYW5zZm9ybVNldE9wZXJhdGlvblN0 bXQgLQogICoJICB0cmFuc2Zvcm1zIGEgc2V0LW9wZXJhdGlvbnMgdHJlZQpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKaW5k ZXggODdmNWU5NTgyNy4uMjUwMzY2NjljMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2Vy L2dyYW0ueQorKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CkBAIC0yNTcsOCArMjU3LDgg QEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExp c3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAkJQ29uc3RyYWludHNTZXRTdG10IENvcHlTdG10 IENyZWF0ZUFzU3RtdCBDcmVhdGVDYXN0U3RtdAogCQlDcmVhdGVEb21haW5TdG10IENyZWF0ZUV4 dGVuc2lvblN0bXQgQ3JlYXRlR3JvdXBTdG10IENyZWF0ZU9wQ2xhc3NTdG10CiAJCUNyZWF0ZU9w RmFtaWx5U3RtdCBBbHRlck9wRmFtaWx5U3RtdCBDcmVhdGVQTGFuZ1N0bXQKLQkJQ3JlYXRlU2No ZW1hU3RtdCBDcmVhdGVTZXFTdG10IENyZWF0ZVN0bXQgQ3JlYXRlU3RhdHNTdG10IENyZWF0ZVRh YmxlU3BhY2VTdG10Ci0JCUNyZWF0ZUZkd1N0bXQgQ3JlYXRlRm9yZWlnblNlcnZlclN0bXQgQ3Jl YXRlRm9yZWlnblRhYmxlU3RtdAorCQlDcmVhdGVTY2hlbWFTdG10IENyZWF0ZVNjaGVtYVZhclN0 bXQgQ3JlYXRlU2VxU3RtdCBDcmVhdGVTdG10IENyZWF0ZVN0YXRzU3RtdAorCQlDcmVhdGVUYWJs ZVNwYWNlU3RtdCBDcmVhdGVGZHdTdG10IENyZWF0ZUZvcmVpZ25TZXJ2ZXJTdG10IENyZWF0ZUZv cmVpZ25UYWJsZVN0bXQKIAkJQ3JlYXRlQXNzZXJ0U3RtdCBDcmVhdGVUcmFuc2Zvcm1TdG10IENy ZWF0ZVRyaWdTdG10IENyZWF0ZUV2ZW50VHJpZ1N0bXQKIAkJQ3JlYXRlVXNlclN0bXQgQ3JlYXRl VXNlck1hcHBpbmdTdG10IENyZWF0ZVJvbGVTdG10IENyZWF0ZVBvbGljeVN0bXQKIAkJQ3JlYXRl ZGJTdG10IERlY2xhcmVDdXJzb3JTdG10IERlZmluZVN0bXQgRGVsZXRlU3RtdCBEaXNjYXJkU3Rt dCBEb1N0bXQKQEAgLTI2OCw3ICsyNjgsNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZp ZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCQlE cm9wVHJhbnNmb3JtU3RtdAogCQlEcm9wVXNlck1hcHBpbmdTdG10IEV4cGxhaW5TdG10IEZldGNo U3RtdAogCQlHcmFudFN0bXQgR3JhbnRSb2xlU3RtdCBJbXBvcnRGb3JlaWduU2NoZW1hU3RtdCBJ bmRleFN0bXQgSW5zZXJ0U3RtdAotCQlMaXN0ZW5TdG10IExvYWRTdG10IExvY2tTdG10IE5vdGlm eVN0bXQgRXhwbGFpbmFibGVTdG10IFByZXBhcmFibGVTdG10CisJCUxldFN0bXQgTGlzdGVuU3Rt dCBMb2FkU3RtdCBMb2NrU3RtdCBOb3RpZnlTdG10IEV4cGxhaW5hYmxlU3RtdCBQcmVwYXJhYmxl U3RtdAogCQlDcmVhdGVGdW5jdGlvblN0bXQgQWx0ZXJGdW5jdGlvblN0bXQgUmVpbmRleFN0bXQg UmVtb3ZlQWdnclN0bXQKIAkJUmVtb3ZlRnVuY1N0bXQgUmVtb3ZlT3BlclN0bXQgUmVuYW1lU3Rt dCBSZXZva2VTdG10IFJldm9rZVJvbGVTdG10CiAJCVJ1bGVBY3Rpb25TdG10IFJ1bGVBY3Rpb25T dG10T3JFbXB0eSBSdWxlU3RtdApAQCAtNDAwLDYgKzQwMCw3IEBAIHN0YXRpYyBOb2RlICptYWtl UmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpx dWVyeSk7CiAJCQkJVHJpZ2dlclRyYW5zaXRpb25zIFRyaWdnZXJSZWZlcmVuY2luZwogCQkJCXB1 YmxpY2F0aW9uX25hbWVfbGlzdAogCQkJCXZhY3V1bV9yZWxhdGlvbl9saXN0IG9wdF92YWN1dW1f cmVsYXRpb25fbGlzdAorCQkJCWxldF90YXJnZXQKIAogJXR5cGUgPGxpc3Q+CWdyb3VwX2J5X2xp c3QKICV0eXBlIDxub2RlPglncm91cF9ieV9pdGVtIGVtcHR5X2dyb3VwaW5nX3NldCByb2xsdXBf Y2xhdXNlIGN1YmVfY2xhdXNlCkBAIC01ODQsNiArNTg1LDcgQEAgc3RhdGljIE5vZGUgKm1ha2VS ZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1 ZXJ5KTsKICV0eXBlIDxub2RlPgkJcGFydGJvdW5kX2RhdHVtIFBhcnRpdGlvblJhbmdlRGF0dW0K ICV0eXBlIDxsaXN0PgkJaGFzaF9wYXJ0Ym91bmQgcGFydGJvdW5kX2RhdHVtX2xpc3QgcmFuZ2Vf ZGF0dW1fbGlzdAogJXR5cGUgPGRlZmVsdD4JCWhhc2hfcGFydGJvdW5kX2VsZW0KKyV0eXBlIDxu b2RlPgkJb3B0U2NoZW1hVmFyRGVmRXhwcgogCiAvKgogICogTm9uLWtleXdvcmQgdG9rZW4gdHlw ZXMuICBUaGVzZSBhcmUgaGFyZC13aXJlZCBpbnRvIHRoZSAiZmxleCIgbGV4ZXIuCkBAIC02NDks NyArNjUxLDcgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJl bG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAlLRVkKIAogCUxBQkVMIExBTkdV QUdFIExBUkdFX1AgTEFTVF9QIExBVEVSQUxfUAotCUxFQURJTkcgTEVBS1BST09GIExFQVNUIExF RlQgTEVWRUwgTElLRSBMSU1JVCBMSVNURU4gTE9BRCBMT0NBTAorCUxFQURJTkcgTEVBS1BST09G IExFQVNUIExFRlQgTEVUIExFVkVMIExJS0UgTElNSVQgTElTVEVOIExPQUQgTE9DQUwKIAlMT0NB TFRJTUUgTE9DQUxUSU1FU1RBTVAgTE9DQVRJT04gTE9DS19QIExPQ0tFRCBMT0dHRUQKIAogCU1B UFBJTkcgTUFUQ0ggTUFURVJJQUxJWkVEIE1BWFZBTFVFIE1FVEhPRCBNSU5VVEVfUCBNSU5WQUxV RSBNT0RFIE1PTlRIX1AgTU9WRQpAQCAtNjg3LDggKzY4OSw4IEBAIHN0YXRpYyBOb2RlICptYWtl UmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpx dWVyeSk7CiAJVU5CT1VOREVEIFVOQ09NTUlUVEVEIFVORU5DUllQVEVEIFVOSU9OIFVOSVFVRSBV TktOT1dOIFVOTElTVEVOIFVOTE9HR0VECiAJVU5USUwgVVBEQVRFIFVTRVIgVVNJTkcKIAotCVZB Q1VVTSBWQUxJRCBWQUxJREFURSBWQUxJREFUT1IgVkFMVUVfUCBWQUxVRVMgVkFSQ0hBUiBWQVJJ QURJQyBWQVJZSU5HCi0JVkVSQk9TRSBWRVJTSU9OX1AgVklFVyBWSUVXUyBWT0xBVElMRQorCVZB Q1VVTSBWQUxJRCBWQUxJREFURSBWQUxJREFUT1IgVkFMVUVfUCBWQUxVRVMgVkFSQ0hBUiBWQVJJ QUJMRSBWQVJJQUJMRVMKKwlWQVJJQURJQyBWQVJZSU5HIFZFUkJPU0UgVkVSU0lPTl9QIFZJRVcg VklFV1MgVk9MQVRJTEUKIAogCVdIRU4gV0hFUkUgV0hJVEVTUEFDRV9QIFdJTkRPVyBXSVRIIFdJ VEhJTiBXSVRIT1VUIFdPUksgV1JBUFBFUiBXUklURQogCkBAIC04NzgsNiArODgwLDcgQEAgc3Rt dCA6CiAJCQl8IENyZWF0ZVBvbGljeVN0bXQKIAkJCXwgQ3JlYXRlUExhbmdTdG10CiAJCQl8IENy ZWF0ZVNjaGVtYVN0bXQKKwkJCXwgQ3JlYXRlU2NoZW1hVmFyU3RtdAogCQkJfCBDcmVhdGVTZXFT dG10CiAJCQl8IENyZWF0ZVN0bXQKIAkJCXwgQ3JlYXRlU3Vic2NyaXB0aW9uU3RtdApAQCAtOTE3 LDYgKzkyMCw3IEBAIHN0bXQgOgogCQkJfCBJbXBvcnRGb3JlaWduU2NoZW1hU3RtdAogCQkJfCBJ bmRleFN0bXQKIAkJCXwgSW5zZXJ0U3RtdAorCQkJfCBMZXRTdG10CiAJCQl8IExpc3RlblN0bXQK IAkJCXwgUmVmcmVzaE1hdFZpZXdTdG10CiAJCQl8IExvYWRTdG10CkBAIC0xODA4LDcgKzE4MTIs MTIgQEAgRGlzY2FyZFN0bXQ6CiAJCQkJCW4tPnRhcmdldCA9IERJU0NBUkRfU0VRVUVOQ0VTOwog CQkJCQkkJCA9IChOb2RlICopIG47CiAJCQkJfQotCisJCQl8IERJU0NBUkQgVkFSSUFCTEVTCisJ CQkJeworCQkJCQlEaXNjYXJkU3RtdCAqbiA9IG1ha2VOb2RlKERpc2NhcmRTdG10KTsKKwkJCQkJ bi0+dGFyZ2V0ID0gRElTQ0FSRF9WQVJJQUJMRVM7CisJCQkJCSQkID0gKE5vZGUgKikgbjsKKwkJ CQl9CiAJCTsKIAogCkBAIC00NDc5LDYgKzQ0ODgsNDIgQEAgY3JlYXRlX2V4dGVuc2lvbl9vcHRf aXRlbToKIAkJCQl9CiAJCTsKIAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICoJCVFVRVJZ IDoKKyAqCQkJCUNSRUFURSBWQVJJQUJMRSB2YXJuYW1lIFtBU10gdHlwZQorICoKKyAqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKi8KKworQ3JlYXRlU2NoZW1hVmFyU3RtdDoKKwkJCUNSRUFURSBPcHRUZW1w IFZBUklBQkxFIHF1YWxpZmllZF9uYW1lIG9wdF9hcyBUeXBlbmFtZSBvcHRTY2hlbWFWYXJEZWZF eHByCisJCQkJeworCQkJCQlDcmVhdGVTY2hlbWFWYXJTdG10ICpuID0gbWFrZU5vZGUoQ3JlYXRl U2NoZW1hVmFyU3RtdCk7CisJCQkJCSQ0LT5yZWxwZXJzaXN0ZW5jZSA9ICQyOworCQkJCQluLT52 YXJpYWJsZSA9ICQ0OworCQkJCQluLT50eXBlTmFtZSA9ICQ2OworCQkJCQluLT5kZWZleHByID0g JDc7CisJCQkJCW4tPmlmX25vdF9leGlzdHMgPSBmYWxzZTsKKwkJCQkJJCQgPSAoTm9kZSAqKSBu OworCQkJCX0KKwkJCXwgQ1JFQVRFIE9wdFRlbXAgVkFSSUFCTEUgSUZfUCBOT1QgRVhJU1RTIHF1 YWxpZmllZF9uYW1lIG9wdF9hcyBUeXBlbmFtZSBvcHRTY2hlbWFWYXJEZWZFeHByCisJCQkJewor CQkJCQlDcmVhdGVTY2hlbWFWYXJTdG10ICpuID0gbWFrZU5vZGUoQ3JlYXRlU2NoZW1hVmFyU3Rt dCk7CisJCQkJCSQ3LT5yZWxwZXJzaXN0ZW5jZSA9ICQyOworCQkJCQluLT52YXJpYWJsZSA9ICQ3 OworCQkJCQluLT50eXBlTmFtZSA9ICQ5OworCQkJCQluLT5kZWZleHByID0gJDEwOworCQkJCQlu LT5pZl9ub3RfZXhpc3RzID0gdHJ1ZTsKKwkJCQkJJCQgPSAoTm9kZSAqKSBuOworCQkJCX0KKwkJ OworCitvcHRTY2hlbWFWYXJEZWZFeHByOiBERUZBVUxUIGJfZXhwcgkJCQkJCQl7ICQkID0gJDI7 IH0KKwkJCXwgLyogRU1QVFkgKi8JCQkJCQkJCQl7ICQkID0gTlVMTDsgfQorCQk7CisKKworCiAv KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioKICAqCiAgKiBBTFRFUiBFWFRFTlNJT04gbmFtZSBVUERBVEUg WyBUTyB2ZXJzaW9uIF0KQEAgLTYzMzUsNiArNjM4MCw3IEBAIGRyb3BfdHlwZV9hbnlfbmFtZToK IAkJCXwgVEVYVF9QIFNFQVJDSCBESUNUSU9OQVJZCQkJCXsgJCQgPSBPQkpFQ1RfVFNESUNUSU9O QVJZOyB9CiAJCQl8IFRFWFRfUCBTRUFSQ0ggVEVNUExBVEUJCQkJeyAkJCA9IE9CSkVDVF9UU1RF TVBMQVRFOyB9CiAJCQl8IFRFWFRfUCBTRUFSQ0ggQ09ORklHVVJBVElPTgkJCXsgJCQgPSBPQkpF Q1RfVFNDT05GSUdVUkFUSU9OOyB9CisJCQl8IFZBUklBQkxFCQkJCQkJCQl7ICQkID0gT0JKRUNU X1ZBUklBQkxFOyB9CiAJCTsKIAogLyogb2JqZWN0IHR5cGVzIHRha2luZyBuYW1lX2xpc3QgKi8K QEAgLTY2MDQsNiArNjY1MCw3IEBAIGNvbW1lbnRfdHlwZV9hbnlfbmFtZToKIAkJCXwgVEVYVF9Q IFNFQVJDSCBESUNUSU9OQVJZCQkJeyAkJCA9IE9CSkVDVF9UU0RJQ1RJT05BUlk7IH0KIAkJCXwg VEVYVF9QIFNFQVJDSCBQQVJTRVIJCQkJeyAkJCA9IE9CSkVDVF9UU1BBUlNFUjsgfQogCQkJfCBU RVhUX1AgU0VBUkNIIFRFTVBMQVRFCQkJeyAkJCA9IE9CSkVDVF9UU1RFTVBMQVRFOyB9CisJCQl8 IFZBUklBQkxFCQkJCQkJCXsgJCQgPSBPQkpFQ1RfVkFSSUFCTEU7IH0KIAkJOwogCiAvKiBvYmpl Y3QgdHlwZXMgdGFraW5nIG5hbWUgKi8KQEAgLTY3NDIsNiArNjc4OSw3IEBAIHNlY3VyaXR5X2xh YmVsX3R5cGVfYW55X25hbWU6CiAJCQl8IFRBQkxFCQkJCQkJCQl7ICQkID0gT0JKRUNUX1RBQkxF OyB9CiAJCQl8IFZJRVcJCQkJCQkJCXsgJCQgPSBPQkpFQ1RfVklFVzsgfQogCQkJfCBNQVRFUklB TElaRUQgVklFVwkJCQkJeyAkJCA9IE9CSkVDVF9NQVRWSUVXOyB9CisJCQl8IFZBUklBQkxFCQkJ CQkJCXsgJCQgPSBPQkpFQ1RfVkFSSUFCTEU7IH0KIAkJOwogCiAvKiBvYmplY3QgdHlwZXMgdGFr aW5nIG5hbWUgKi8KQEAgLTcxNjMsNiArNzIxMSwxNCBAQCBwcml2aWxlZ2VfdGFyZ2V0OgogCQkJ CQluLT5vYmpzID0gJDI7CiAJCQkJCSQkID0gbjsKIAkJCQl9CisJCQl8IFZBUklBQkxFIHF1YWxp ZmllZF9uYW1lX2xpc3QKKwkJCQl7CisJCQkJCVByaXZUYXJnZXQgKm4gPSAoUHJpdlRhcmdldCAq KSBwYWxsb2Moc2l6ZW9mKFByaXZUYXJnZXQpKTsKKwkJCQkJbi0+dGFyZ3R5cGUgPSBBQ0xfVEFS R0VUX09CSkVDVDsKKwkJCQkJbi0+b2JqdHlwZSA9IE9CSkVDVF9WQVJJQUJMRTsKKwkJCQkJbi0+ b2JqcyA9ICQyOworCQkJCQkkJCA9IG47CisJCQkJfQogCQkJfCBBTEwgVEFCTEVTIElOX1AgU0NI RU1BIG5hbWVfbGlzdAogCQkJCXsKIAkJCQkJUHJpdlRhcmdldCAqbiA9IChQcml2VGFyZ2V0ICop IHBhbGxvYyhzaXplb2YoUHJpdlRhcmdldCkpOwpAQCAtNzIwMyw2ICs3MjU5LDE0IEBAIHByaXZp bGVnZV90YXJnZXQ6CiAJCQkJCW4tPm9ianMgPSAkNTsKIAkJCQkJJCQgPSBuOwogCQkJCX0KKwkJ CXwgQUxMIFZBUklBQkxFUyBJTl9QIFNDSEVNQSBuYW1lX2xpc3QKKwkJCQl7CisJCQkJCVByaXZU YXJnZXQgKm4gPSAoUHJpdlRhcmdldCAqKSBwYWxsb2Moc2l6ZW9mKFByaXZUYXJnZXQpKTsKKwkJ CQkJbi0+dGFyZ3R5cGUgPSBBQ0xfVEFSR0VUX0FMTF9JTl9TQ0hFTUE7CisJCQkJCW4tPm9ianR5 cGUgPSBPQkpFQ1RfVkFSSUFCTEU7CisJCQkJCW4tPm9ianMgPSAkNTsKKwkJCQkJJCQgPSBuOwor CQkJCX0KIAkJOwogCiAKQEAgLTczNjMsNiArNzQyNyw3IEBAIGRlZmFjbF9wcml2aWxlZ2VfdGFy Z2V0OgogCQkJfCBTRVFVRU5DRVMJCXsgJCQgPSBPQkpFQ1RfU0VRVUVOQ0U7IH0KIAkJCXwgVFlQ RVNfUAkJeyAkJCA9IE9CSkVDVF9UWVBFOyB9CiAJCQl8IFNDSEVNQVMJCXsgJCQgPSBPQkpFQ1Rf U0NIRU1BOyB9CisJCQl8IFZBUklBQkxFUwkJeyAkJCA9IE9CSkVDVF9WQVJJQUJMRTsgfQogCQk7 CiAKIApAQCAtODk1OSw2ICs5MDI0LDI1IEBAIFJlbmFtZVN0bXQ6IEFMVEVSIEFHR1JFR0FURSBh Z2dyZWdhdGVfd2l0aF9hcmd0eXBlcyBSRU5BTUUgVE8gbmFtZQogCQkJCQluLT5taXNzaW5nX29r ID0gZmFsc2U7CiAJCQkJCSQkID0gKE5vZGUgKiluOwogCQkJCX0KKwkJCXwgQUxURVIgVkFSSUFC TEUgYW55X25hbWUgUkVOQU1FIFRPIG5hbWUKKwkJCQl7CisJCQkJCVJlbmFtZVN0bXQgKm4gPSBt YWtlTm9kZShSZW5hbWVTdG10KTsKKwkJCQkJbi0+cmVuYW1lVHlwZSA9IE9CSkVDVF9WQVJJQUJM RTsKKwkJCQkJbi0+b2JqZWN0ID0gKE5vZGUgKikgJDM7CisJCQkJCW4tPm5ld25hbWUgPSAkNjsK KwkJCQkJbi0+bWlzc2luZ19vayA9IGZhbHNlOworCQkJCQkkJCA9IChOb2RlICopbjsKKwkJCQl9 CisJCQl8IEFMVEVSIFZBUklBQkxFIElGX1AgRVhJU1RTIGFueV9uYW1lIFJFTkFNRSBUTyBuYW1l CisJCQkJeworCQkJCQlSZW5hbWVTdG10ICpuID0gbWFrZU5vZGUoUmVuYW1lU3RtdCk7CisJCQkJ CW4tPnJlbmFtZVR5cGUgPSBPQkpFQ1RfVkFSSUFCTEU7CisJCQkJCW4tPm9iamVjdCA9IChOb2Rl ICopICQ1OworCQkJCQluLT5uZXduYW1lID0gJDg7CisJCQkJCW4tPm1pc3Npbmdfb2sgPSB0cnVl OworCQkJCQkkJCA9IChOb2RlICopbjsKKwkJCQl9CisKIAkJOwogCiBvcHRfY29sdW1uOiBDT0xV TU4JCQkJCQkJCQl7ICQkID0gQ09MVU1OOyB9CkBAIC05Mjc3LDYgKzkzNjEsMjUgQEAgQWx0ZXJP YmplY3RTY2hlbWFTdG10OgogCQkJCQluLT5taXNzaW5nX29rID0gZmFsc2U7CiAJCQkJCSQkID0g KE5vZGUgKiluOwogCQkJCX0KKwkJCXwgQUxURVIgVkFSSUFCTEUgYW55X25hbWUgU0VUIFNDSEVN QSBuYW1lCisJCQkJeworCQkJCQlBbHRlck9iamVjdFNjaGVtYVN0bXQgKm4gPSBtYWtlTm9kZShB bHRlck9iamVjdFNjaGVtYVN0bXQpOworCQkJCQluLT5vYmplY3RUeXBlID0gT0JKRUNUX1ZBUklB QkxFOworCQkJCQluLT5vYmplY3QgPSAoTm9kZSAqKSAkMzsKKwkJCQkJbi0+bmV3c2NoZW1hID0g JDY7CisJCQkJCW4tPm1pc3Npbmdfb2sgPSBmYWxzZTsKKwkJCQkJJCQgPSAoTm9kZSAqKW47CisJ CQkJfQorCQkJfCBBTFRFUiBWQVJJQUJMRSBJRl9QIEVYSVNUUyBhbnlfbmFtZSBTRVQgU0NIRU1B IG5hbWUKKwkJCQl7CisJCQkJCUFsdGVyT2JqZWN0U2NoZW1hU3RtdCAqbiA9IG1ha2VOb2RlKEFs dGVyT2JqZWN0U2NoZW1hU3RtdCk7CisJCQkJCW4tPm9iamVjdFR5cGUgPSBPQkpFQ1RfVkFSSUFC TEU7CisJCQkJCW4tPm9iamVjdCA9IChOb2RlICopICQ1OworCQkJCQluLT5uZXdzY2hlbWEgPSAk ODsKKwkJCQkJbi0+bWlzc2luZ19vayA9IHRydWU7CisJCQkJCSQkID0gKE5vZGUgKiluOworCQkJ CX0KKwogCQk7CiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpAQCAtOTUxMiw2ICs5NjE1LDE0IEBA IEFsdGVyT3duZXJTdG10OiBBTFRFUiBBR0dSRUdBVEUgYWdncmVnYXRlX3dpdGhfYXJndHlwZXMg T1dORVIgVE8gUm9sZVNwZWMKIAkJCQkJbi0+bmV3b3duZXIgPSAkNjsKIAkJCQkJJCQgPSAoTm9k ZSAqKW47CiAJCQkJfQorCQkJfCBBTFRFUiBWQVJJQUJMRSBhbnlfbmFtZSBPV05FUiBUTyBSb2xl U3BlYworCQkJCXsKKwkJCQkJQWx0ZXJPd25lclN0bXQgKm4gPSBtYWtlTm9kZShBbHRlck93bmVy U3RtdCk7CisJCQkJCW4tPm9iamVjdFR5cGUgPSBPQkpFQ1RfVkFSSUFCTEU7CisJCQkJCW4tPm9i amVjdCA9IChOb2RlICopICQzOworCQkJCQluLT5uZXdvd25lciA9ICQ2OworCQkJCQkkJCA9IChO b2RlICopbjsKKwkJCQl9CiAJCTsKIAogCkBAIC0xMDY5Myw2ICsxMDgwNCw3IEBAIEV4cGxhaW5h YmxlU3RtdDoKIAkJCXwgQ3JlYXRlTWF0Vmlld1N0bXQKIAkJCXwgUmVmcmVzaE1hdFZpZXdTdG10 CiAJCQl8IEV4ZWN1dGVTdG10CQkJCQkvKiBieSBkZWZhdWx0IGFsbCBhcmUgJCQ9JDEgKi8KKwkJ CXwgTGV0U3RtdAogCQk7CiAKIGV4cGxhaW5fb3B0aW9uX2xpc3Q6CkBAIC0xMDc1MCw2ICsxMDg2 Miw3IEBAIFByZXBhcmFibGVTdG10OgogCQkJfCBJbnNlcnRTdG10CiAJCQl8IFVwZGF0ZVN0bXQK IAkJCXwgRGVsZXRlU3RtdAkJCQkJLyogYnkgZGVmYXVsdCBhbGwgYXJlICQkPSQxICovCisJCQl8 IExldFN0bXQKIAkJOwogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKQEAgLTExMTQ4LDYgKzExMjYx LDQ0IEBAIG9wdF9ob2xkOiAvKiBFTVBUWSAqLwkJCQkJCXsgJCQgPSAwOyB9CiAJCQl8IFdJVEhP VVQgSE9MRAkJCQkJeyAkJCA9IDA7IH0KIAkJOwogCisvKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAq CisgKgkJUVVFUlk6CisgKgkJCQlMRVQgU1RBVEVNRU5UUworICoKKyAqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKi8KK0xldFN0bXQ6CUxFVCBsZXRfdGFyZ2V0ICc9JyBhX2V4cHIKKwkJCQl7CisJCQkJCUxl dFN0bXQgKm4gPSBtYWtlTm9kZShMZXRTdG10KTsKKwkJCQkJU2VsZWN0U3RtdCAqc2VsZWN0ID0g bWFrZU5vZGUoU2VsZWN0U3RtdCk7CisJCQkJCVJlc1RhcmdldAkqcmVzID0gbWFrZU5vZGUoUmVz VGFyZ2V0KTsKKworCQkJCQluLT50YXJnZXQgPSAkMjsKKworCQkJCQkvKiBDcmVhdGUgdGFyZ2V0 IGxpc3QgZm9yIGltcGxpY2l0IHF1ZXJ5ICovCisJCQkJCXJlcy0+bmFtZSA9IE5VTEw7CisJCQkJ CXJlcy0+aW5kaXJlY3Rpb24gPSBOSUw7CisJCQkJCXJlcy0+dmFsID0gKE5vZGUgKikgJDQ7CisJ CQkJCXJlcy0+bG9jYXRpb24gPSBANDsKKworCQkJCQlzZWxlY3QtPnRhcmdldExpc3QgPSBsaXN0 X21ha2UxKHJlcyk7CisJCQkJCW4tPnNlbGVjdFN0bXQgPSAoTm9kZSAqKSBzZWxlY3Q7CisKKwkJ CQkJbi0+bG9jYXRpb24gPSBAMjsKKworCQkJCQkkJCA9IChOb2RlICopIG47CisJCQkJfQorCQk7 CisKK2xldF90YXJnZXQ6CisJCQlDb2xJZCBvcHRfaW5kaXJlY3Rpb24KKwkJCQl7CisJCQkJCSQk ID0gbGlzdF9tYWtlMShtYWtlU3RyaW5nKCQxKSk7CisJCQkJCWlmICgkMikKKwkJCQkJCSAgJCQg PSBsaXN0X2NvbmNhdCgkJCwKKwkJCQkJCQkJCQkgICBjaGVja19pbmRpcmVjdGlvbigkMiwgeXlz Y2FubmVyKSk7CisJCQkJfQorCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCiAgKgkJUVVFUlk6 CkBAIC0xNTEyNyw2ICsxNTI3OCw3IEBAIHVucmVzZXJ2ZWRfa2V5d29yZDoKIAkJCXwgTEFSR0Vf UAogCQkJfCBMQVNUX1AKIAkJCXwgTEVBS1BST09GCisJCQl8IExFVAogCQkJfCBMRVZFTAogCQkJ fCBMSVNURU4KIAkJCXwgTE9BRApAQCAtMTUyNzUsNiArMTU0MjcsOCBAQCB1bnJlc2VydmVkX2tl eXdvcmQ6CiAJCQl8IFZBTElEQVRFCiAJCQl8IFZBTElEQVRPUgogCQkJfCBWQUxVRV9QCisJCQl8 IFZBUklBQkxFCisJCQl8IFZBUklBQkxFUwogCQkJfCBWQVJZSU5HCiAJCQl8IFZFUlNJT05fUAog CQkJfCBWSUVXCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfYWdnLmMgYi9z cmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfYWdnLmMKaW5kZXggNjE3MjdlMWQ3MS4uNjgyMzYxMmZi YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2FnZy5jCisrKyBiL3NyYy9i YWNrZW5kL3BhcnNlci9wYXJzZV9hZ2cuYwpAQCAtMzQ5LDYgKzM0OSw3IEBAIGNoZWNrX2FnZ2xl dmVsc19hbmRfY29uc3RyYWludHMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpleHByKQogCQkJ QXNzZXJ0KGZhbHNlKTsJCS8qIGNhbid0IGhhcHBlbiAqLwogCQkJYnJlYWs7CiAJCWNhc2UgRVhQ Ul9LSU5EX09USEVSOgorCQljYXNlIEVYUFJfS0lORF9MRVQ6CiAKIAkJCS8qCiAJCQkgKiBBY2Nl cHQgYWdncmVnYXRlL2dyb3VwaW5nIGhlcmU7IGNhbGxlciBtdXN0IHRocm93IGVycm9yIGlmCkBA IC00NjUsNiArNDY2LDcgQEAgY2hlY2tfYWdnbGV2ZWxzX2FuZF9jb25zdHJhaW50cyhQYXJzZVN0 YXRlICpwc3RhdGUsIE5vZGUgKmV4cHIpCiAJCQlicmVhazsKIAkJY2FzZSBFWFBSX0tJTkRfQ09M VU1OX0RFRkFVTFQ6CiAJCWNhc2UgRVhQUl9LSU5EX0ZVTkNUSU9OX0RFRkFVTFQ6CisJCWNhc2Ug RVhQUl9LSU5EX1ZBUklBQkxFX0RFRkFVTFQ6CiAKIAkJCWlmIChpc0FnZykKIAkJCQllcnIgPSBf KCJhZ2dyZWdhdGUgZnVuY3Rpb25zIGFyZSBub3QgYWxsb3dlZCBpbiBERUZBVUxUIGV4cHJlc3Np b25zIik7CkBAIC04NzksNiArODgxLDcgQEAgdHJhbnNmb3JtV2luZG93RnVuY0NhbGwoUGFyc2VT dGF0ZSAqcHN0YXRlLCBXaW5kb3dGdW5jICp3ZnVuYywKIAkJCWJyZWFrOwogCQljYXNlIEVYUFJf S0lORF9DT0xVTU5fREVGQVVMVDoKIAkJY2FzZSBFWFBSX0tJTkRfRlVOQ1RJT05fREVGQVVMVDoK KwkJY2FzZSBFWFBSX0tJTkRfVkFSSUFCTEVfREVGQVVMVDoKIAkJCWVyciA9IF8oIndpbmRvdyBm dW5jdGlvbnMgYXJlIG5vdCBhbGxvd2VkIGluIERFRkFVTFQgZXhwcmVzc2lvbnMiKTsKIAkJCWJy ZWFrOwogCQljYXNlIEVYUFJfS0lORF9JTkRFWF9FWFBSRVNTSU9OOgpAQCAtOTAyLDYgKzkwNSw4 IEBAIHRyYW5zZm9ybVdpbmRvd0Z1bmNDYWxsKFBhcnNlU3RhdGUgKnBzdGF0ZSwgV2luZG93RnVu YyAqd2Z1bmMsCiAJCWNhc2UgRVhQUl9LSU5EX0NBTExfQVJHVU1FTlQ6CiAJCQllcnIgPSBfKCJ3 aW5kb3cgZnVuY3Rpb25zIGFyZSBub3QgYWxsb3dlZCBpbiBDQUxMIGFyZ3VtZW50cyIpOwogCQkJ YnJlYWs7CisJCWNhc2UgRVhQUl9LSU5EX0xFVDoKKwkJCWVyciA9IF8oIndpbmRvdyBmdW5jdGlv bnMgYXJlIG5vdCBhbGxvd2VkIGluIExFVCBzdGF0ZW1lbnQiKTsKIAogCQkJLyoKIAkJCSAqIFRo ZXJlIGlzIGludGVudGlvbmFsbHkgbm8gZGVmYXVsdDogY2FzZSBoZXJlLCBzbyB0aGF0IHRoZQpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYyBiL3NyYy9iYWNrZW5k L3BhcnNlci9wYXJzZV9leHByLmMKaW5kZXggMzg1ZTU0YTliNi4uYmNkZGEwZmI0YSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYworKysgYi9zcmMvYmFja2VuZC9w YXJzZXIvcGFyc2VfZXhwci5jCkBAIC0xNiw2ICsxNiw3IEBACiAjaW5jbHVkZSAicG9zdGdyZXMu aCIKIAogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdf dmFyaWFibGUuaCIKICNpbmNsdWRlICJjb21tYW5kcy9kYmNvbW1hbmRzLmgiCiAjaW5jbHVkZSAi bWlzY2FkbWluLmgiCiAjaW5jbHVkZSAibm9kZXMvbWFrZWZ1bmNzLmgiCkBAIC0zNyw2ICszOCw3 IEBACiAjaW5jbHVkZSAidXRpbHMvZGF0ZS5oIgogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5o IgogI2luY2x1ZGUgInV0aWxzL3RpbWVzdGFtcC5oIgorI2luY2x1ZGUgInV0aWxzL3R5cGNhY2hl LmgiCiAjaW5jbHVkZSAidXRpbHMveG1sLmgiCiAKIApAQCAtMTE2LDYgKzExOCw5IEBAIHN0YXRp YyBOb2RlICp0cmFuc2Zvcm1YbWxTZXJpYWxpemUoUGFyc2VTdGF0ZSAqcHN0YXRlLCBYbWxTZXJp YWxpemUgKnhzKTsKIHN0YXRpYyBOb2RlICp0cmFuc2Zvcm1Cb29sZWFuVGVzdChQYXJzZVN0YXRl ICpwc3RhdGUsIEJvb2xlYW5UZXN0ICpiKTsKIHN0YXRpYyBOb2RlICp0cmFuc2Zvcm1DdXJyZW50 T2ZFeHByKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3VycmVudE9mRXhwciAqY2V4cHIpOwogc3RhdGlj IE5vZGUgKnRyYW5zZm9ybUNvbHVtblJlZihQYXJzZVN0YXRlICpwc3RhdGUsIENvbHVtblJlZiAq Y3JlZik7CitzdGF0aWMgTm9kZSAqbWFrZVBhcmFtU2NoZW1hVmFyaWFibGUoUGFyc2VTdGF0ZSAq cHN0YXRlLAorCQkJCQkJICBPaWQgdmFyaWQsIE9pZCB0eXBpZCwgaW50MzIgdHlwbW9kLAorCQkJ CQkJICBjaGFyICphdHRybmFtZSwgaW50IGxvY2F0aW9uKTsKIHN0YXRpYyBOb2RlICp0cmFuc2Zv cm1XaG9sZVJvd1JlZihQYXJzZVN0YXRlICpwc3RhdGUsIFJhbmdlVGJsRW50cnkgKnJ0ZSwKIAkJ CQkJIGludCBsb2NhdGlvbik7CiBzdGF0aWMgTm9kZSAqdHJhbnNmb3JtSW5kaXJlY3Rpb24oUGFy c2VTdGF0ZSAqcHN0YXRlLCBBX0luZGlyZWN0aW9uICppbmQpOwpAQCAtNTEyLDYgKzUxNywxMCBA QCB0cmFuc2Zvcm1Db2x1bW5SZWYoUGFyc2VTdGF0ZSAqcHN0YXRlLCBDb2x1bW5SZWYgKmNyZWYp CiAJY2hhcgkgICAqbnNwbmFtZSA9IE5VTEw7CiAJY2hhcgkgICAqcmVsbmFtZSA9IE5VTEw7CiAJ Y2hhcgkgICAqY29sbmFtZSA9IE5VTEw7CisJT2lkCQkJdmFyaWQgPSBJbnZhbGlkT2lkOworCWNo YXIJICAgKmF0dHJuYW1lID0gTlVMTDsKKwlib29sCQlub3RfdW5pcXVlOworCiAJUmFuZ2VUYmxF bnRyeSAqcnRlOwogCWludAkJCWxldmVsc191cDsKIAllbnVtCkBAIC03NDksNiArNzU4LDE1IEBA IHRyYW5zZm9ybUNvbHVtblJlZihQYXJzZVN0YXRlICpwc3RhdGUsIENvbHVtblJlZiAqY3JlZikK IAkJCWJyZWFrOwogCX0KIAorCXZhcmlkID0gaWRlbnRpZnlfdmFyaWFibGUoY3JlZi0+ZmllbGRz LCAmYXR0cm5hbWUsICZub3RfdW5pcXVlKTsKKworCWlmIChub3RfdW5pcXVlKQorCQllcmVwb3J0 KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfQU1CSUdVT1VTX1BBUkFNRVRFUiksCisJCQkJ IGVycm1zZygic2NoZW1hIHZhcmlhYmxlIHJlZmVyZW5jZSBcIiVzXCIgaXMgYW1iaWd1b3VzIiwK KwkJCQkJCU5hbWVMaXN0VG9TdHJpbmcoY3JlZi0+ZmllbGRzKSksCisJCQkJIHBhcnNlcl9lcnJw b3NpdGlvbihwc3RhdGUsIGNyZWYtPmxvY2F0aW9uKSkpOworCiAJLyoKIAkgKiBOb3cgZ2l2ZSB0 aGUgUG9zdFBhcnNlQ29sdW1uUmVmSG9vaywgaWYgYW55LCBhIGNoYW5jZS4gIFdlIHBhc3MgdGhl CiAJICogdHJhbnNsYXRpb24tc28tZmFyIHNvIHRoYXQgaXQgY2FuIHRocm93IGFuIGVycm9yIGlm IGl0IHdpc2hlcyBpbiB0aGUKQEAgLTc3Myw2ICs3OTEsNzEgQEAgdHJhbnNmb3JtQ29sdW1uUmVm KFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ29sdW1uUmVmICpjcmVmKQogCQkJCQkgcGFyc2VyX2VycnBv c2l0aW9uKHBzdGF0ZSwgY3JlZi0+bG9jYXRpb24pKSk7CiAJfQogCisJaWYgKE9pZElzVmFsaWQo dmFyaWQpKQorCXsKKwkJT2lkCQl0eXBpZDsKKwkJaW50MzIJdHlwbW9kOworCisJCWdldF9zY2hl bWFfdmFyaWFibGVfdHlwZV90eXBtb2QodmFyaWQsICZ0eXBpZCwgJnR5cG1vZCk7CisKKwkJaWYg KG5vZGUgIT0gTlVMTCkKKwkJeworCQkJLyoKKwkJCSAqIHNvbWUgY29sbGlzaW9uIGNhbiBiZSBz b2x2ZWQgc2ltcGx5IGhlcmUgdG8gcmVkdWNlIGVycm9ycworCQkJICogYmFzZWQgb24gc2ltcGx5 IGV4aXN0ZW5jZSBvZiBzb21lIHZhcmlhYmxlcy4gT2Z0ZW4gZXJyb3IKKwkJCSAqIGNhbiBiZSB1 c2luZyBhbGlhcyBzYW1lIGxpa2UgdmFyaWFibGUgbmFtZS4gSW4gdGhpcyBjYXNlLAorCQkJICog d2hlbiB3ZSBmb3VuZCBjb2x1bW4gcmVmZXJlbmNlLCBhbmQgd2UgZm91bmQgcmVmZXJlbmNlIHRv CisJCQkgKiBwb3NzaWJsZSBjb21wb3NpdGUgdmFyaWFibGUsIGJ1dCB0aGUgdmFyaWFibGUgaXMg bm90IGNvbXBvc2l0ZSwKKwkJCSAqIHRoZW4gd2UgY2FuIGlnbm9yZSB0aGUgdmFyaWFibGUgYXMg c2ltcGx5IGltcHJvcGVyLCBhbmQgd2UKKwkJCSAqIHVzZSBjb2x1bW4gcmVmZXJlbmNlIG9ubHku CisJCQkgKi8KKwkJCWlmIChhdHRybmFtZSkKKwkJCXsKKwkJCQlpZiAodHlwZV9pc19yb3d0eXBl KHR5cGlkKSkKKwkJCQl7CisJCQkJCVR1cGxlRGVzYwkJdHVwZGVzYzsKKwkJCQkJYm9vbAkJCWZv dW5kID0gZmFsc2U7CisJCQkJCWludAkJCWk7CisKKwkJCQkJLyogc2xvdyBwYXJ0LCBJIGhvcGUg aXQgd2lsbCBub3QgYmUgdG8gb2Z0ZW4gKi8KKwkJCQkJdHVwZGVzYyA9IGxvb2t1cF9yb3d0eXBl X3R1cGRlc2ModHlwaWQsIHR5cG1vZCk7CisJCQkJCWZvciAoaSA9IDA7IGkgPCB0dXBkZXNjLT5u YXR0czsgaSsrKQorCQkJCQl7CisJCQkJCQlpZiAobmFtZXN0cmNtcCgmKFR1cGxlRGVzY0F0dHIo dHVwZGVzYywgaSktPmF0dG5hbWUpLCBhdHRybmFtZSkgPT0gMCAmJgorCQkJCQkJCQkhVHVwbGVE ZXNjQXR0cih0dXBkZXNjLCBpKS0+YXR0aXNkcm9wcGVkKQorCQkJCQkJeworCQkJCQkJCWZvdW5k ID0gdHJ1ZTsKKwkJCQkJCQlicmVhazsKKwkJCQkJCX0KKwkJCQkJfQorCisJCQkJCUZyZWVUdXBs ZURlc2ModHVwZGVzYyk7CisKKwkJCQkJLyogdGhlcmUgYXJlIG5vdCBjb21wb3NpdGUgdmFyaWFi bGUgd2l0aCB0aGlzIGZpZWxkICovCisJCQkJCWlmICghZm91bmQpCisJCQkJCQl2YXJpZCA9IElu dmFsaWRPaWQ7CisJCQkJfQorCQkJCWVsc2UKKwkJCQkJLyogdGhlcmUgYXJlIG5vdCBjb21wb3Np dGUgdmFyaWFibGUgd2l0aCB0aGlzIG5hbWUgKi8KKwkJCQkJdmFyaWQgPSBJbnZhbGlkT2lkOwor CQkJfQorCisJCQkvKiBSYWlzZSBlcnJvciBpZiB2YXJpZCBpcyBzdGlsbCB2YWxpZC4gSXQgc2hv dWxkIGJlIHJlYWxseSBhbWlnb251b3VzICovCisJCQlpZiAoT2lkSXNWYWxpZCh2YXJpZCkpCisJ CQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfQU1CSUdVT1VTX0NPTFVN TiksCisJCQkJCQkgZXJybXNnKCJjb2x1bW4gcmVmZXJlbmNlIFwiJXNcIiBpcyBhbWJpZ3VvdXMi LAorCQkJCQkJCQlOYW1lTGlzdFRvU3RyaW5nKGNyZWYtPmZpZWxkcykpLAorCQkJCQkJIGVycmRl dGFpbCgiVGhlIHF1YWxpZmllZCBpZGVudGlmaWVyIGNhbiBiZSBjb2x1bW4gcmVmZXJlbmNlIG9y IHNjaGVtYSB2YXJpYWJsZSByZWZlcmVuY2UiKSwKKwkJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24o cHN0YXRlLCBjcmVmLT5sb2NhdGlvbikpKTsKKwkJfQorCisJCWlmIChPaWRJc1ZhbGlkKHZhcmlk KSkKKwkJCW5vZGUgPSBtYWtlUGFyYW1TY2hlbWFWYXJpYWJsZShwc3RhdGUsCisJCQkJCQkJCQkJ CXZhcmlkLCB0eXBpZCwgdHlwbW9kLAorCQkJCQkJCQkJCQlhdHRybmFtZSwgY3JlZi0+bG9jYXRp b24pOworCX0KKwogCS8qCiAJICogVGhyb3cgZXJyb3IgaWYgbm8gdHJhbnNsYXRpb24gZm91bmQu CiAJICovCkBAIC04MDcsNiArODkwLDU5IEBAIHRyYW5zZm9ybUNvbHVtblJlZihQYXJzZVN0YXRl ICpwc3RhdGUsIENvbHVtblJlZiAqY3JlZikKIAlyZXR1cm4gbm9kZTsKIH0KIAorLyoKKyAqIEdl bmVyYXRlIHBhcmFtIHZhcmlhYmxlIGZvciByZWZlcmVuY2UgdG8gc2NoZW1hIHZhcmlhYmxlCisg Ki8KK3N0YXRpYyBOb2RlICoKK21ha2VQYXJhbVNjaGVtYVZhcmlhYmxlKFBhcnNlU3RhdGUgKnBz dGF0ZSwgT2lkIHZhcmlkLCBPaWQgdHlwaWQsIGludDMyIHR5cG1vZCwgY2hhciAqYXR0cm5hbWUs IGludCBsb2NhdGlvbikKK3sKKwlQYXJhbQkgICAqcGFyYW07CisKKwlwYXJhbSA9IG1ha2VOb2Rl KFBhcmFtKTsKKworCXBhcmFtLT5wYXJhbWtpbmQgPSBQQVJBTV9TQ0hFTUFfVkFSSUFCTEU7CisJ cGFyYW0tPnBhcmFtaWQgPSB2YXJpZDsKKwlwYXJhbS0+cGFyYW10eXBlID0gdHlwaWQ7CisJcGFy YW0tPnBhcmFtdHlwbW9kID0gdHlwbW9kOworCisJaWYgKGF0dHJuYW1lICE9IE5VTEwpCisJewor CQlUdXBsZURlc2MJCXR1cGRlc2M7CisJCWludAkJaTsKKworCQl0dXBkZXNjID0gbG9va3VwX3Jv d3R5cGVfdHVwZGVzYyh0eXBpZCwgdHlwbW9kKTsKKworCQlmb3IgKGkgPSAwOyBpIDwgdHVwZGVz Yy0+bmF0dHM7IGkrKykKKwkJeworCQkJRm9ybV9wZ19hdHRyaWJ1dGUgYXR0ID0gVHVwbGVEZXNj QXR0cih0dXBkZXNjLCBpKTsKKworCQkJaWYgKHN0cmNtcChhdHRybmFtZSwgTmFtZVN0cihhdHQt PmF0dG5hbWUpKSA9PSAwICYmCisJCQkJIWF0dC0+YXR0aXNkcm9wcGVkKQorCQkJeworCQkJCS8q IFN1Y2Nlc3MsIHNvIGdlbmVyYXRlIGEgRmllbGRTZWxlY3QgZXhwcmVzc2lvbiAqLworCQkJCUZp ZWxkU2VsZWN0ICpmc2VsZWN0ID0gbWFrZU5vZGUoRmllbGRTZWxlY3QpOworCisJCQkJZnNlbGVj dC0+YXJnID0gKEV4cHIgKikgcGFyYW07CisJCQkJZnNlbGVjdC0+ZmllbGRudW0gPSBpICsgMTsK KwkJCQlmc2VsZWN0LT5yZXN1bHR0eXBlID0gYXR0LT5hdHR0eXBpZDsKKwkJCQlmc2VsZWN0LT5y ZXN1bHR0eXBtb2QgPSBhdHQtPmF0dHR5cG1vZDsKKwkJCQkvKiBzYXZlIGF0dHJpYnV0ZSdzIGNv bGxhdGlvbiBmb3IgcGFyc2VfY29sbGF0ZS5jICovCisJCQkJZnNlbGVjdC0+cmVzdWx0Y29sbGlk ID0gYXR0LT5hdHRjb2xsYXRpb247CisKKwkJCQlSZWxlYXNlVHVwbGVEZXNjKHR1cGRlc2MpOwor CQkJCXJldHVybiAoTm9kZSAqKSBmc2VsZWN0OworCQkJfQorCQl9CisKKwkJZXJlcG9ydChFUlJP UiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9DT0xVTU4pLAorCQkJCSBlcnJtc2co ImNvdWxkIG5vdCBpZGVudGlmeSBjb2x1bW4gXCIlc1wiIGluIHZhcmlhYmxlIiwgYXR0cm5hbWUp LAorCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBsb2NhdGlvbikpKTsKKwl9CisKKwly ZXR1cm4gKE5vZGUgKikgcGFyYW07Cit9CisKIHN0YXRpYyBOb2RlICoKIHRyYW5zZm9ybVBhcmFt UmVmKFBhcnNlU3RhdGUgKnBzdGF0ZSwgUGFyYW1SZWYgKnByZWYpCiB7CkBAIC0xODE4LDYgKzE5 NTQsNyBAQCB0cmFuc2Zvcm1TdWJMaW5rKFBhcnNlU3RhdGUgKnBzdGF0ZSwgU3ViTGluayAqc3Vi bGluaykKIAkJY2FzZSBFWFBSX0tJTkRfUkVUVVJOSU5HOgogCQljYXNlIEVYUFJfS0lORF9WQUxV RVM6CiAJCWNhc2UgRVhQUl9LSU5EX1ZBTFVFU19TSU5HTEU6CisJCWNhc2UgRVhQUl9LSU5EX0xF VDoKIAkJCS8qIG9rYXkgKi8KIAkJCWJyZWFrOwogCQljYXNlIEVYUFJfS0lORF9DSEVDS19DT05T VFJBSU5UOgpAQCAtMTgyNiw2ICsxOTYzLDcgQEAgdHJhbnNmb3JtU3ViTGluayhQYXJzZVN0YXRl ICpwc3RhdGUsIFN1YkxpbmsgKnN1YmxpbmspCiAJCQlicmVhazsKIAkJY2FzZSBFWFBSX0tJTkRf Q09MVU1OX0RFRkFVTFQ6CiAJCWNhc2UgRVhQUl9LSU5EX0ZVTkNUSU9OX0RFRkFVTFQ6CisJCWNh c2UgRVhQUl9LSU5EX1ZBUklBQkxFX0RFRkFVTFQ6CiAJCQllcnIgPSBfKCJjYW5ub3QgdXNlIHN1 YnF1ZXJ5IGluIERFRkFVTFQgZXhwcmVzc2lvbiIpOwogCQkJYnJlYWs7CiAJCWNhc2UgRVhQUl9L SU5EX0lOREVYX0VYUFJFU1NJT046CkBAIC0zNDYwLDYgKzM1OTgsNyBAQCBQYXJzZUV4cHJLaW5k TmFtZShQYXJzZUV4cHJLaW5kIGV4cHJLaW5kKQogCQkJcmV0dXJuICJDSEVDSyI7CiAJCWNhc2Ug RVhQUl9LSU5EX0NPTFVNTl9ERUZBVUxUOgogCQljYXNlIEVYUFJfS0lORF9GVU5DVElPTl9ERUZB VUxUOgorCQljYXNlIEVYUFJfS0lORF9WQVJJQUJMRV9ERUZBVUxUOgogCQkJcmV0dXJuICJERUZB VUxUIjsKIAkJY2FzZSBFWFBSX0tJTkRfSU5ERVhfRVhQUkVTU0lPTjoKIAkJCXJldHVybiAiaW5k ZXggZXhwcmVzc2lvbiI7CkBAIC0zNDc1LDYgKzM2MTQsOCBAQCBQYXJzZUV4cHJLaW5kTmFtZShQ YXJzZUV4cHJLaW5kIGV4cHJLaW5kKQogCQkJcmV0dXJuICJQQVJUSVRJT04gQlkiOwogCQljYXNl IEVYUFJfS0lORF9DQUxMX0FSR1VNRU5UOgogCQkJcmV0dXJuICJDQUxMIjsKKwkJY2FzZSBFWFBS X0tJTkRfTEVUOgorCQkJcmV0dXJuICJMRVQiOwogCiAJCQkvKgogCQkJICogVGhlcmUgaXMgaW50 ZW50aW9uYWxseSBubyBkZWZhdWx0OiBjYXNlIGhlcmUsIHNvIHRoYXQgdGhlCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZnVuYy5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3Bh cnNlX2Z1bmMuYwppbmRleCA0NDI1NzE1NGI4Li5iMmM5OTAwZTAwIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9wYXJzZXIvcGFyc2VfZnVuYy5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJz ZV9mdW5jLmMKQEAgLTIzNDcsNiArMjM0Nyw3IEBAIGNoZWNrX3NyZl9jYWxsX3BsYWNlbWVudChQ YXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKmxhc3Rfc3JmLCBpbnQgbG9jYXRpb24pCiAJCQlicmVh azsKIAkJY2FzZSBFWFBSX0tJTkRfQ09MVU1OX0RFRkFVTFQ6CiAJCWNhc2UgRVhQUl9LSU5EX0ZV TkNUSU9OX0RFRkFVTFQ6CisJCWNhc2UgRVhQUl9LSU5EX1ZBUklBQkxFX0RFRkFVTFQ6CiAJCQll cnIgPSBfKCJzZXQtcmV0dXJuaW5nIGZ1bmN0aW9ucyBhcmUgbm90IGFsbG93ZWQgaW4gREVGQVVM VCBleHByZXNzaW9ucyIpOwogCQkJYnJlYWs7CiAJCWNhc2UgRVhQUl9LSU5EX0lOREVYX0VYUFJF U1NJT046CkBAIC0yMzcwLDYgKzIzNzEsOSBAQCBjaGVja19zcmZfY2FsbF9wbGFjZW1lbnQoUGFy c2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpsYXN0X3NyZiwgaW50IGxvY2F0aW9uKQogCQljYXNlIEVY UFJfS0lORF9DQUxMX0FSR1VNRU5UOgogCQkJZXJyID0gXygic2V0LXJldHVybmluZyBmdW5jdGlv bnMgYXJlIG5vdCBhbGxvd2VkIGluIENBTEwgYXJndW1lbnRzIik7CiAJCQlicmVhazsKKwkJY2Fz ZSBFWFBSX0tJTkRfTEVUOgorCQkJZXJyID0gXygic2V0LXJldHVybmluZyBmdW5jdGlvbnMgYXJl IG5vdCBhbGxvd2VkIGluIENBTEwgYXJndW1lbnRzIik7CisJCQlicmVhazsKIAogCQkJLyoKIAkJ CSAqIFRoZXJlIGlzIGludGVudGlvbmFsbHkgbm8gZGVmYXVsdDogY2FzZSBoZXJlLCBzbyB0aGF0 IHRoZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3RhcmdldC5jIGIvc3Jj L2JhY2tlbmQvcGFyc2VyL3BhcnNlX3RhcmdldC5jCmluZGV4IDQ5MzJlNTgwMjIuLmM2MGZlMDEx ZjcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV90YXJnZXQuYworKysgYi9z cmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdGFyZ2V0LmMKQEAgLTM1LDE2ICszNSw2IEBACiAKIHN0 YXRpYyB2b2lkIG1hcmtUYXJnZXRMaXN0T3JpZ2luKFBhcnNlU3RhdGUgKnBzdGF0ZSwgVGFyZ2V0 RW50cnkgKnRsZSwKIAkJCQkJIFZhciAqdmFyLCBpbnQgbGV2ZWxzdXApOwotc3RhdGljIE5vZGUg KnRyYW5zZm9ybUFzc2lnbm1lbnRJbmRpcmVjdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsCi0JCQkJ CQkJICAgTm9kZSAqYmFzZW5vZGUsCi0JCQkJCQkJICAgY29uc3QgY2hhciAqdGFyZ2V0TmFtZSwK LQkJCQkJCQkgICBib29sIHRhcmdldElzQXJyYXksCi0JCQkJCQkJICAgT2lkIHRhcmdldFR5cGVJ ZCwKLQkJCQkJCQkgICBpbnQzMiB0YXJnZXRUeXBNb2QsCi0JCQkJCQkJICAgT2lkIHRhcmdldENv bGxhdGlvbiwKLQkJCQkJCQkgICBMaXN0Q2VsbCAqaW5kaXJlY3Rpb24sCi0JCQkJCQkJICAgTm9k ZSAqcmhzLAotCQkJCQkJCSAgIGludCBsb2NhdGlvbik7CiBzdGF0aWMgTm9kZSAqdHJhbnNmb3Jt QXNzaWdubWVudFN1YnNjcmlwdHMoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkJCSAgTm9kZSAq YmFzZW5vZGUsCiAJCQkJCQkJICBjb25zdCBjaGFyICp0YXJnZXROYW1lLApAQCAtNjcyLDcgKzY2 Miw3IEBAIHVwZGF0ZVRhcmdldExpc3RFbnRyeShQYXJzZVN0YXRlICpwc3RhdGUsCiAgKiBtaWdo dCB3YW50IHRvIGRlY29yYXRlIGluZGlyZWN0aW9uIGNlbGxzIHdpdGggdGhlaXIgb3duIGxvY2F0 aW9uIGluZm8sCiAgKiBpbiB3aGljaCBjYXNlIHRoZSBsb2NhdGlvbiBhcmd1bWVudCBjb3VsZCBw cm9iYWJseSBiZSBkcm9wcGVkLikKICAqLwotc3RhdGljIE5vZGUgKgorTm9kZSAqCiB0cmFuc2Zv cm1Bc3NpZ25tZW50SW5kaXJlY3Rpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkJCSAgIE5v ZGUgKmJhc2Vub2RlLAogCQkJCQkJCSAgIGNvbnN0IGNoYXIgKnRhcmdldE5hbWUsCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9yZXdyaXRlL3Jld3JpdGVIYW5kbGVyLmMgYi9zcmMvYmFja2VuZC9y ZXdyaXRlL3Jld3JpdGVIYW5kbGVyLmMKaW5kZXggMzEyM2VlMjc0ZC4uMTA3MzdkNDIyZCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmV3cml0ZS9yZXdyaXRlSGFuZGxlci5jCisrKyBiL3NyYy9i YWNrZW5kL3Jld3JpdGUvcmV3cml0ZUhhbmRsZXIuYwpAQCAtMzM1MCw3ICszMzUwLDcgQEAgUmV3 cml0ZVF1ZXJ5KFF1ZXJ5ICpwYXJzZXRyZWUsIExpc3QgKnJld3JpdGVfZXZlbnRzKQogCSAqIGdl dCBleGVjdXRlZC4gIEFsc28sIHV0aWxpdGllcyBhcmVuJ3QgcmV3cml0dGVuIGF0IGFsbCAoZG8g d2Ugc3RpbGwKIAkgKiBuZWVkIHRoYXQgY2hlY2s/KQogCSAqLwotCWlmIChldmVudCAhPSBDTURf U0VMRUNUICYmIGV2ZW50ICE9IENNRF9VVElMSVRZKQorCWlmIChldmVudCAhPSBDTURfU0VMRUNU ICYmIGV2ZW50ICE9IENNRF9VVElMSVRZICYmIGV2ZW50ICE9IENNRF9QTEFOX1VUSUxJVFkpCiAJ ewogCQlpbnQJCQlyZXN1bHRfcmVsYXRpb247CiAJCVJhbmdlVGJsRW50cnkgKnJ0X2VudHJ5Owpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmV3cml0ZS9yb3dzZWN1cml0eS5jIGIvc3JjL2JhY2tl bmQvcmV3cml0ZS9yb3dzZWN1cml0eS5jCmluZGV4IDYxZWYzOTZkOGEuLjZhMDY4YWY3OTkgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Jld3JpdGUvcm93c2VjdXJpdHkuYworKysgYi9zcmMvYmFj a2VuZC9yZXdyaXRlL3Jvd3NlY3VyaXR5LmMKQEAgLTIxMiw3ICsyMTIsNyBAQCBnZXRfcm93X3Nl Y3VyaXR5X3BvbGljaWVzKFF1ZXJ5ICpyb290LCBSYW5nZVRibEVudHJ5ICpydGUsIGludCBydF9p bmRleCwKIAl9CiAKIAkvKgotCSAqIEZvciBTRUxFQ1QsIFVQREFURSBhbmQgREVMRVRFLCBhZGQg c2VjdXJpdHkgcXVhbHMgdG8gZW5mb3JjZSB0aGUgVVNJTkcKKwkgKiBGb3IgU0VMRUNULCBMRVQs IFVQREFURSBhbmQgREVMRVRFLCBhZGQgc2VjdXJpdHkgcXVhbHMgdG8gZW5mb3JjZSB0aGUgVVNJ TkcKIAkgKiBwb2xpY2llcy4gIFRoZXNlIHNlY3VyaXR5IHF1YWxzIGNvbnRyb2wgYWNjZXNzIHRv IGV4aXN0aW5nIHRhYmxlIHJvd3MuCiAJICogUmVzdHJpY3RpdmUgcG9saWNpZXMgYXJlIGNvbWJp bmVkIHRvZ2V0aGVyIHVzaW5nIEFORCwgYW5kIHBlcm1pc3NpdmUKIAkgKiBwb2xpY2llcyBhcmUg Y29tYmluZWQgdG9nZXRoZXIgdXNpbmcgT1IuCkBAIC0yMjIsNiArMjIyLDcgQEAgZ2V0X3Jvd19z ZWN1cml0eV9wb2xpY2llcyhRdWVyeSAqcm9vdCwgUmFuZ2VUYmxFbnRyeSAqcnRlLCBpbnQgcnRf aW5kZXgsCiAJCQkJCQkJICAmcmVzdHJpY3RpdmVfcG9saWNpZXMpOwogCiAJaWYgKGNvbW1hbmRU eXBlID09IENNRF9TRUxFQ1QgfHwKKwkJY29tbWFuZFR5cGUgPT0gQ01EX1BMQU5fVVRJTElUWSB8 fAogCQljb21tYW5kVHlwZSA9PSBDTURfVVBEQVRFIHx8CiAJCWNvbW1hbmRUeXBlID09IENNRF9E RUxFVEUpCiAJCWFkZF9zZWN1cml0eV9xdWFscyhydF9pbmRleCwKQEAgLTQyMyw2ICs0MjQsNyBA QCBnZXRfcG9saWNpZXNfZm9yX3JlbGF0aW9uKFJlbGF0aW9uIHJlbGF0aW9uLCBDbWRUeXBlIGNt ZCwgT2lkIHVzZXJfaWQsCiAJCQlzd2l0Y2ggKGNtZCkKIAkJCXsKIAkJCQljYXNlIENNRF9TRUxF Q1Q6CisJCQkJY2FzZSBDTURfUExBTl9VVElMSVRZOgogCQkJCQlpZiAocG9saWN5LT5wb2xjbWQg PT0gQUNMX1NFTEVDVF9DSFIpCiAJCQkJCQljbWRfbWF0Y2hlcyA9IHRydWU7CiAJCQkJCWJyZWFr OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdGNvcC9kZXN0LmMgYi9zcmMvYmFja2VuZC90Y29w L2Rlc3QuYwppbmRleCBjOTVhNGQ1MTlkLi40N2ZiMGYzOGIxIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC90Y29wL2Rlc3QuYworKysgYi9zcmMvYmFja2VuZC90Y29wL2Rlc3QuYwpAQCAtMzcsNiAr MzcsNyBAQAogI2luY2x1ZGUgImV4ZWN1dG9yL2Z1bmN0aW9ucy5oIgogI2luY2x1ZGUgImV4ZWN1 dG9yL3RxdWV1ZS5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL3RzdG9yZVJlY2VpdmVyLmgiCisjaW5j bHVkZSAiZXhlY3V0b3Ivc3ZhcmlhYmxlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJsaWJwcS9saWJw cS5oIgogI2luY2x1ZGUgImxpYnBxL3BxZm9ybWF0LmgiCiAjaW5jbHVkZSAidXRpbHMvcG9ydGFs LmgiCkBAIC0xNDMsNiArMTQ0LDkgQEAgQ3JlYXRlRGVzdFJlY2VpdmVyKENvbW1hbmREZXN0IGRl c3QpCiAKIAkJY2FzZSBEZXN0VHVwbGVRdWV1ZToKIAkJCXJldHVybiBDcmVhdGVUdXBsZVF1ZXVl RGVzdFJlY2VpdmVyKE5VTEwpOworCisJCWNhc2UgRGVzdFZhcmlhYmxlOgorCQkJcmV0dXJuIENy ZWF0ZVZhcmlhYmxlRGVzdFJlY2VpdmVyKCk7CiAJfQogCiAJLyogc2hvdWxkIG5ldmVyIGdldCBo ZXJlICovCkBAIC0xNzgsNiArMTgyLDcgQEAgRW5kQ29tbWFuZChjb25zdCBjaGFyICpjb21tYW5k VGFnLCBDb21tYW5kRGVzdCBkZXN0KQogCQljYXNlIERlc3RTUUxGdW5jdGlvbjoKIAkJY2FzZSBE ZXN0VHJhbnNpZW50UmVsOgogCQljYXNlIERlc3RUdXBsZVF1ZXVlOgorCQljYXNlIERlc3RWYXJp YWJsZToKIAkJCWJyZWFrOwogCX0KIH0KQEAgLTIyMiw2ICsyMjcsNyBAQCBOdWxsQ29tbWFuZChD b21tYW5kRGVzdCBkZXN0KQogCQljYXNlIERlc3RTUUxGdW5jdGlvbjoKIAkJY2FzZSBEZXN0VHJh bnNpZW50UmVsOgogCQljYXNlIERlc3RUdXBsZVF1ZXVlOgorCQljYXNlIERlc3RWYXJpYWJsZToK IAkJCWJyZWFrOwogCX0KIH0KQEAgLTI2OCw2ICsyNzQsNyBAQCBSZWFkeUZvclF1ZXJ5KENvbW1h bmREZXN0IGRlc3QpCiAJCWNhc2UgRGVzdFNRTEZ1bmN0aW9uOgogCQljYXNlIERlc3RUcmFuc2ll bnRSZWw6CiAJCWNhc2UgRGVzdFR1cGxlUXVldWU6CisJCWNhc2UgRGVzdFZhcmlhYmxlOgogCQkJ YnJlYWs7CiAJfQogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMgYi9z cmMvYmFja2VuZC90Y29wL3V0aWxpdHkuYwppbmRleCBiNTgwNGY2NGFkLi4zNTE5OWZkMGRjIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC90Y29wL3V0aWxpdHkuYworKysgYi9zcmMvYmFja2VuZC90 Y29wL3V0aWxpdHkuYwpAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUgImNvbW1hbmRzL3Byb2Ns YW5nLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmgiCiAjaW5jbHVkZSAi Y29tbWFuZHMvc2NoZW1hY21kcy5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3NjaGVtYXZhcmlhYmxl LmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvc2VjbGFiZWwuaCIKICNpbmNsdWRlICJjb21tYW5kcy9z ZXF1ZW5jZS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuaCIKQEAgLTM0 NCw3ICszNDUsNyBAQCBQcm9jZXNzVXRpbGl0eShQbGFubmVkU3RtdCAqcHN0bXQsCiAJCQkgICBj aGFyICpjb21wbGV0aW9uVGFnKQogewogCUFzc2VydChJc0EocHN0bXQsIFBsYW5uZWRTdG10KSk7 Ci0JQXNzZXJ0KHBzdG10LT5jb21tYW5kVHlwZSA9PSBDTURfVVRJTElUWSk7CisJQXNzZXJ0KHBz dG10LT5jb21tYW5kVHlwZSA9PSBDTURfVVRJTElUWSB8fCBwc3RtdC0+Y29tbWFuZFR5cGUgPT0g Q01EX1BMQU5fVVRJTElUWSk7CiAJQXNzZXJ0KHF1ZXJ5U3RyaW5nICE9IE5VTEwpOwkvKiByZXF1 aXJlZCBhcyBvZiA4LjQgKi8KIAogCS8qCkBAIC05MTUsNiArOTE2LDE0IEBAIHN0YW5kYXJkX1By b2Nlc3NVdGlsaXR5KFBsYW5uZWRTdG10ICpwc3RtdCwKIAkJCQlicmVhazsKIAkJCX0KIAorCQlj YXNlIFRfTGV0U3RtdDoKKwkJCXsKKwkJCQlkb0xldFN0bXQocHN0bXQsIHBhcmFtcywgcXVlcnlF bnYsIHF1ZXJ5U3RyaW5nKTsKKwkJCQlpZiAoY29tcGxldGlvblRhZykKKwkJCQkJc3RyY3B5KGNv bXBsZXRpb25UYWcsICJMRVQiKTsKKwkJCX0KKwkJCWJyZWFrOworCiAJCWRlZmF1bHQ6CiAJCQkv KiBBbGwgb3RoZXIgc3RhdGVtZW50IHR5cGVzIGhhdmUgZXZlbnQgdHJpZ2dlciBzdXBwb3J0ICov CiAJCQlQcm9jZXNzVXRpbGl0eVNsb3cocHN0YXRlLCBwc3RtdCwgcXVlcnlTdHJpbmcsCkBAIC0x MjIxLDYgKzEyMzAsMTAgQEAgUHJvY2Vzc1V0aWxpdHlTbG93KFBhcnNlU3RhdGUgKnBzdGF0ZSwK IAkJCQl9CiAJCQkJYnJlYWs7CiAKKwkJCWNhc2UgVF9DcmVhdGVTY2hlbWFWYXJTdG10OgorCQkJ CWFkZHJlc3MgPSBEZWZpbmVTY2hlbWFWYXJpYWJsZShwc3RhdGUsIChDcmVhdGVTY2hlbWFWYXJT dG10ICopIHBhcnNldHJlZSk7CisJCQkJYnJlYWs7CisKIAkJCQkvKgogCQkJCSAqICoqKioqKioq KioqKiogb2JqZWN0IGNyZWF0aW9uIC8gZGVzdHJ1Y3Rpb24gKioqKioqKioqKioqKioKIAkJCQkg Ki8KQEAgLTIwNTUsNiArMjA2OCw5IEBAIEFsdGVyT2JqZWN0VHlwZUNvbW1hbmRUYWcoT2JqZWN0 VHlwZSBvYmp0eXBlKQogCQljYXNlIE9CSkVDVF9TVEFUSVNUSUNfRVhUOgogCQkJdGFnID0gIkFM VEVSIFNUQVRJU1RJQ1MiOwogCQkJYnJlYWs7CisJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgorCQkJ dGFnID0gIkFMVEVSIFZBUklBQkxFIjsKKwkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJdGFnID0g Ij8/PyI7CiAJCQlicmVhazsKQEAgLTIxMDQsNiArMjEyMCwxMCBAQCBDcmVhdGVDb21tYW5kVGFn KE5vZGUgKnBhcnNldHJlZSkKIAkJCXRhZyA9ICJTRUxFQ1QiOwogCQkJYnJlYWs7CiAKKwkJY2Fz ZSBUX0xldFN0bXQ6CisJCQl0YWcgPSAiTEVUIjsKKwkJCWJyZWFrOworCiAJCQkvKiB1dGlsaXR5 IHN0YXRlbWVudHMgLS0tIHNhbWUgd2hldGhlciByYXcgb3IgY29va2VkICovCiAJCWNhc2UgVF9U cmFuc2FjdGlvblN0bXQ6CiAJCQl7CkBAIC0yMzU4LDYgKzIzNzgsOSBAQCBDcmVhdGVDb21tYW5k VGFnKE5vZGUgKnBhcnNldHJlZSkKIAkJCQljYXNlIE9CSkVDVF9TVEFUSVNUSUNfRVhUOgogCQkJ CQl0YWcgPSAiRFJPUCBTVEFUSVNUSUNTIjsKIAkJCQkJYnJlYWs7CisJCQkJY2FzZSBPQkpFQ1Rf VkFSSUFCTEU6CisJCQkJCXRhZyA9ICJEUk9QIFZBUklBQkxFIjsKKwkJCQkJYnJlYWs7CiAJCQkJ ZGVmYXVsdDoKIAkJCQkJdGFnID0gIj8/PyI7CiAJCQl9CkBAIC0yNjM5LDYgKzI2NjIsOSBAQCBD cmVhdGVDb21tYW5kVGFnKE5vZGUgKnBhcnNldHJlZSkKIAkJCQljYXNlIERJU0NBUkRfU0VRVUVO Q0VTOgogCQkJCQl0YWcgPSAiRElTQ0FSRCBTRVFVRU5DRVMiOwogCQkJCQlicmVhazsKKwkJCQlj YXNlIERJU0NBUkRfVkFSSUFCTEVTOgorCQkJCQl0YWcgPSAiRElTQ0FSRCBWQVJJQUJMRVMiOwor CQkJCQlicmVhazsKIAkJCQlkZWZhdWx0OgogCQkJCQl0YWcgPSAiPz8/IjsKIAkJCX0KQEAgLTI4 NDQsNiArMjg3MCw3IEBAIENyZWF0ZUNvbW1hbmRUYWcoTm9kZSAqcGFyc2V0cmVlKQogCQkJCQkJ dGFnID0gIkRFTEVURSI7CiAJCQkJCQlicmVhazsKIAkJCQkJY2FzZSBDTURfVVRJTElUWToKKwkJ CQkJY2FzZSBDTURfUExBTl9VVElMSVRZOgogCQkJCQkJdGFnID0gQ3JlYXRlQ29tbWFuZFRhZyhz dG10LT51dGlsaXR5U3RtdCk7CiAJCQkJCQlicmVhazsKIAkJCQkJZGVmYXVsdDoKQEAgLTI5MTUs NiArMjk0MiwxMCBAQCBDcmVhdGVDb21tYW5kVGFnKE5vZGUgKnBhcnNldHJlZSkKIAkJCX0KIAkJ CWJyZWFrOwogCisJCWNhc2UgVF9DcmVhdGVTY2hlbWFWYXJTdG10OgorCQkJdGFnID0gIkNSRUFU RSBWQVJJQUJMRSI7CisJCQlicmVhazsKKwogCQlkZWZhdWx0OgogCQkJZWxvZyhXQVJOSU5HLCAi dW5yZWNvZ25pemVkIG5vZGUgdHlwZTogJWQiLAogCQkJCSAoaW50KSBub2RlVGFnKHBhcnNldHJl ZSkpOwpAQCAtMjk2MSw2ICsyOTkyLDEwIEBAIEdldENvbW1hbmRMb2dMZXZlbChOb2RlICpwYXJz ZXRyZWUpCiAJCQkJbGV2ID0gTE9HU1RNVF9BTEw7CiAJCQlicmVhazsKIAorCQljYXNlIFRfTGV0 U3RtdDoKKwkJCWxldiA9IExPR1NUTVRfQUxMOworCQkJYnJlYWs7CisKIAkJCS8qIHV0aWxpdHkg c3RhdGVtZW50cyAtLS0gc2FtZSB3aGV0aGVyIHJhdyBvciBjb29rZWQgKi8KIAkJY2FzZSBUX1Ry YW5zYWN0aW9uU3RtdDoKIAkJCWxldiA9IExPR1NUTVRfQUxMOwpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L2FjbC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2FjbC5jCmluZGV4 IGE0NWUwOTNkZTcuLjk1MmMwZDk2MjggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC9hY2wuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvYWNsLmMKQEAgLTMxNSw2ICszMTUs MTIgQEAgYWNscGFyc2UoY29uc3QgY2hhciAqcywgQWNsSXRlbSAqYWlwKQogCQkJY2FzZSBBQ0xf Q09OTkVDVF9DSFI6CiAJCQkJcmVhZCA9IEFDTF9DT05ORUNUOwogCQkJCWJyZWFrOworCQkJY2Fz ZSBBQ0xfUkVBRF9DSFI6CisJCQkJcmVhZCA9IEFDTF9SRUFEOworCQkJCWJyZWFrOworCQkJY2Fz ZSBBQ0xfV1JJVEVfQ0hSOgorCQkJCXJlYWQgPSBBQ0xfV1JJVEU7CisJCQkJYnJlYWs7CiAJCQlj YXNlICdSJzoJCQkvKiBpZ25vcmUgb2xkIFJVTEUgcHJpdmlsZWdlcyAqLwogCQkJCXJlYWQgPSAw OwogCQkJCWJyZWFrOwpAQCAtODA4LDYgKzgxNCwxMCBAQCBhY2xkZWZhdWx0KE9iamVjdFR5cGUg b2JqdHlwZSwgT2lkIG93bmVySWQpCiAJCQl3b3JsZF9kZWZhdWx0ID0gQUNMX1VTQUdFOwogCQkJ b3duZXJfZGVmYXVsdCA9IEFDTF9BTExfUklHSFRTX1RZUEU7CiAJCQlicmVhazsKKwkJY2FzZSBP QkpFQ1RfVkFSSUFCTEU6CisJCQl3b3JsZF9kZWZhdWx0ID0gQUNMX05PX1JJR0hUUzsKKwkJCW93 bmVyX2RlZmF1bHQgPSBBQ0xfQUxMX1JJR0hUU19WQVJJQUJMRTsKKwkJCWJyZWFrOwogCQlkZWZh dWx0OgogCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBvYmp0eXBlOiAlZCIsIChpbnQpIG9i anR5cGUpOwogCQkJd29ybGRfZGVmYXVsdCA9IEFDTF9OT19SSUdIVFM7CS8qIGtlZXAgY29tcGls ZXIgcXVpZXQgKi8KQEAgLTkwMyw2ICs5MTMsOSBAQCBhY2xkZWZhdWx0X3NxbChQR19GVU5DVElP Tl9BUkdTKQogCQljYXNlICdUJzoKIAkJCW9ianR5cGUgPSBPQkpFQ1RfVFlQRTsKIAkJCWJyZWFr OworCQljYXNlICdWJzoKKwkJCW9ianR5cGUgPSBPQkpFQ1RfVkFSSUFCTEU7CisJCQlicmVhazsK IAkJZGVmYXVsdDoKIAkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgb2JqdHlwZSBhYmJyZXZp YXRpb246ICVjIiwgb2JqdHlwZWMpOwogCX0KQEAgLTE2MjcsNiArMTY0MCwxMCBAQCBjb252ZXJ0 X3ByaXZfc3RyaW5nKHRleHQgKnByaXZfdHlwZV90ZXh0KQogCQlyZXR1cm4gQUNMX0NPTk5FQ1Q7 CiAJaWYgKHBnX3N0cmNhc2VjbXAocHJpdl90eXBlLCAiUlVMRSIpID09IDApCiAJCXJldHVybiAw OwkJCQkvKiBpZ25vcmUgb2xkIFJVTEUgcHJpdmlsZWdlcyAqLworCWlmIChwZ19zdHJjYXNlY21w KHByaXZfdHlwZSwgIlJFQUQiKSA9PSAwKQorCQlyZXR1cm4gQUNMX1JFQUQ7CisJaWYgKHBnX3N0 cmNhc2VjbXAocHJpdl90eXBlLCAiV1JJVEUiKSA9PSAwKQorCQlyZXR1cm4gQUNMX1dSSVRFOwog CiAJZXJlcG9ydChFUlJPUiwKIAkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJf VkFMVUUpLApAQCAtMTcyMSw2ICsxNzM4LDEwIEBAIGNvbnZlcnRfYWNscmlnaHRfdG9fc3RyaW5n KGludCBhY2xyaWdodCkKIAkJCXJldHVybiAiVEVNUE9SQVJZIjsKIAkJY2FzZSBBQ0xfQ09OTkVD VDoKIAkJCXJldHVybiAiQ09OTkVDVCI7CisJCWNhc2UgQUNMX1JFQUQ6CisJCQlyZXR1cm4gIlJF QUQiOworCQljYXNlIEFDTF9XUklURToKKwkJCXJldHVybiAiV1JJVEUiOwogCQlkZWZhdWx0Ogog CQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBhY2xyaWdodDogJWQiLCBhY2xyaWdodCk7CiAJ CQlyZXR1cm4gTlVMTDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRp bHMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYwppbmRleCAwM2U5YTI4YTYz Li40ODhjYjI2ZDNmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxz LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCkBAIC03MzYyLDYgKzcz NjIsMTQgQEAgZ2V0X3BhcmFtZXRlcihQYXJhbSAqcGFyYW0sIGRlcGFyc2VfY29udGV4dCAqY29u dGV4dCkKIAkJcmV0dXJuOwogCX0KIAorCS8qIHRyYW5zbGF0ZSBwYXJhbWlkIHRvIG9yaWdpbmFs IHNjaGVtYSB2YXJpYWJsZSBuYW1lICovCisJaWYgKHBhcmFtLT5wYXJhbWtpbmQgPT0gUEFSQU1f U0NIRU1BX1ZBUklBQkxFKQorCXsKKwkJYXBwZW5kU3RyaW5nSW5mbyhjb250ZXh0LT5idWYsICIl cyIsCisJCQkJCQkJc2NoZW1hX3ZhcmlhYmxlX2dldF9uYW1lKHBhcmFtLT5wYXJhbWlkKSk7CisJ CXJldHVybjsKKwl9CisKIAkvKgogCSAqIE5vdCBQQVJBTV9FWEVDLCBvciBjb3VsZG4ndCBmaW5k IHJlZmVyZW50OiBqdXN0IHByaW50ICROLgogCSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv dXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9sc3lzY2Fj aGUuYwppbmRleCBiYmE1OTVhZDFkLi44NThhNmRkNGJlIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC91dGlscy9jYWNoZS9sc3lzY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9s c3lzY2FjaGUuYwpAQCAtMTY5MSw2ICsxNjkxLDE4IEBAIGdldF9yZWxuYW1lX3JlbGlkKGNvbnN0 IGNoYXIgKnJlbG5hbWUsIE9pZCByZWxuYW1lc3BhY2UpCiAJCQkJCQkgICBPYmplY3RJZEdldERh dHVtKHJlbG5hbWVzcGFjZSkpOwogfQogCisvKgorICogZ2V0X3Zhcm5hbWVfdmFyaWQKKyAqCQlH aXZlbiBuYW1lIGFuZCBuYW1lc3BhY2Ugb2YgdmFyaWFibGUsIGxvb2sgdXAgdGhlIE9JRC4KKyAq LworT2lkCitnZXRfdmFybmFtZV92YXJpZChjb25zdCBjaGFyICp2YXJuYW1lLCBPaWQgdmFybmFt ZXNwYWNlKQoreworCXJldHVybiBHZXRTeXNDYWNoZU9pZDIoVkFSSUFCTEVOQU1FTlNQLAorCQkJ CQkJICAgUG9pbnRlckdldERhdHVtKHZhcm5hbWUpLAorCQkJCQkJICAgT2JqZWN0SWRHZXREYXR1 bSh2YXJuYW1lc3BhY2UpKTsKK30KKwogI2lmZGVmIE5PVF9VU0VECiAvKgogICogZ2V0X3JlbG5h dHRzCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9zeXNjYWNoZS5jIGIvc3Jj L2JhY2tlbmQvdXRpbHMvY2FjaGUvc3lzY2FjaGUuYwppbmRleCAyYjM4MTc4MmEzLi4zNWRjMzJm NjQ5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9zeXNjYWNoZS5jCisrKyBi L3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3N5c2NhY2hlLmMKQEAgLTczLDYgKzczLDcgQEAKICNp bmNsdWRlICJjYXRhbG9nL3BnX3RzX3RlbXBsYXRlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190 eXBlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ191c2VyX21hcHBpbmcuaCIKKyNpbmNsdWRlICJj YXRhbG9nL3BnX3ZhcmlhYmxlLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsLmgiCiAjaW5jbHVkZSAi dXRpbHMvY2F0Y2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9zeXNjYWNoZS5oIgpAQCAtOTY4LDYg Kzk2OSwyOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGNhY2hlZGVzYyBjYWNoZWluZm9bXSA9IHsK IAkJCTAKIAkJfSwKIAkJMgorCX0sCisJe1ZhcmlhYmxlUmVsYXRpb25JZCwJCQkvKiBWQVJJQUJM RU5BTUVOU1AgKi8KKwkJVmFyaWFibGVOYW1lTnNwSW5kZXhJZCwKKwkJMiwKKwkJeworCQkJQW51 bV9wZ192YXJpYWJsZV92YXJuYW1lLAorCQkJQW51bV9wZ192YXJpYWJsZV92YXJuYW1lc3BhY2Us CisJCQkwLAorCQkJMAorCQl9LAorCQk4CisJfSwKKwl7VmFyaWFibGVSZWxhdGlvbklkLAkJCS8q IFZBUklBQkxFT0lEICovCisJCVZhcmlhYmxlT2JqZWN0SW5kZXhJZCwKKwkJMSwKKwkJeworCQkJ T2JqZWN0SWRBdHRyaWJ1dGVOdW1iZXIsCisJCQkwLAorCQkJMCwKKwkJCTAKKwkJfSwKKwkJOAog CX0KIH07CiAKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9jb21tb24uYyBiL3NyYy9iaW4v cGdfZHVtcC9jb21tb24uYwppbmRleCAwZDE0N2NiMDhkLi42ZDk3OTMxZDg1IDEwMDY0NAotLS0g YS9zcmMvYmluL3BnX2R1bXAvY29tbW9uLmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL2NvbW1vbi5j CkBAIC0yOTYsNiArMjk2LDEwIEBAIGdldFNjaGVtYURhdGEoQXJjaGl2ZSAqZm91dCwgaW50ICpu dW1UYWJsZXNQdHIpCiAJCXdyaXRlX21zZyhOVUxMLCAicmVhZGluZyBzdWJzY3JpcHRpb25zXG4i KTsKIAlnZXRTdWJzY3JpcHRpb25zKGZvdXQpOwogCisJaWYgKGdfdmVyYm9zZSkKKwkJd3JpdGVf bXNnKE5VTEwsICJyZWFkaW5nIHZhcmlhYmxlc1xuIik7CisJZ2V0VmFyaWFibGVzKGZvdXQpOwor CiAJKm51bVRhYmxlc1B0ciA9IG51bVRhYmxlczsKIAlyZXR1cm4gdGJsaW5mbzsKIH0KZGlmZiAt LWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfYXJjaGl2ZXIuYyBiL3NyYy9iaW4vcGdf ZHVtcC9wZ19iYWNrdXBfYXJjaGl2ZXIuYwppbmRleCA4M2M5NzZlYWY3Li5jOWJjOTFjYTY4IDEw MDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2FyY2hpdmVyLmMKKysrIGIvc3Jj L2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9hcmNoaXZlci5jCkBAIC0zNDcxLDYgKzM0NzEsNyBAQCBf Z2V0T2JqZWN0RGVzY3JpcHRpb24oUFFFeHBCdWZmZXIgYnVmLCBUb2NFbnRyeSAqdGUsIEFyY2hp dmVIYW5kbGUgKkFIKQogCQlzdHJjbXAodHlwZSwgIlRFWFQgU0VBUkNIIERJQ1RJT05BUlkiKSA9 PSAwIHx8CiAJCXN0cmNtcCh0eXBlLCAiVEVYVCBTRUFSQ0ggQ09ORklHVVJBVElPTiIpID09IDAg fHwKIAkJc3RyY21wKHR5cGUsICJTVEFUSVNUSUNTIikgPT0gMCB8fAorCQlzdHJjbXAodHlwZSwg IlZBUklBQkxFIikgPT0gMCB8fAogCS8qIG5vbi1zY2hlbWEtc3BlY2lmaWVkIG9iamVjdHMgKi8K IAkJc3RyY21wKHR5cGUsICJEQVRBQkFTRSIpID09IDAgfHwKIAkJc3RyY21wKHR5cGUsICJQUk9D RURVUkFMIExBTkdVQUdFIikgPT0gMCB8fApAQCAtMzY3MCw3ICszNjcxLDggQEAgX3ByaW50VG9j RW50cnkoQXJjaGl2ZUhhbmRsZSAqQUgsIFRvY0VudHJ5ICp0ZSwgYm9vbCBpc0RhdGEpCiAJCQlz dHJjbXAodGUtPmRlc2MsICJTRVJWRVIiKSA9PSAwIHx8CiAJCQlzdHJjbXAodGUtPmRlc2MsICJT VEFUSVNUSUNTIikgPT0gMCB8fAogCQkJc3RyY21wKHRlLT5kZXNjLCAiUFVCTElDQVRJT04iKSA9 PSAwIHx8Ci0JCQlzdHJjbXAodGUtPmRlc2MsICJTVUJTQ1JJUFRJT04iKSA9PSAwKQorCQkJc3Ry Y21wKHRlLT5kZXNjLCAiU1VCU0NSSVBUSU9OIikgPT0gMCB8fAorCQkJc3RyY21wKHRlLT5kZXNj LCAiVkFSSUFCTEUiKSA9PSAwKQogCQl7CiAJCQlQUUV4cEJ1ZmZlciB0ZW1wID0gY3JlYXRlUFFF eHBCdWZmZXIoKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyBiL3Ny Yy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKaW5kZXggOWJhZjdiMmZkZS4uZjgyNWEwMGM5ZCAxMDA2 NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYworKysgYi9zcmMvYmluL3BnX2R1bXAv cGdfZHVtcC5jCkBAIC0yNjAsNiArMjYwLDcgQEAgc3RhdGljIHZvaWQgZHVtcFBvbGljeShBcmNo aXZlICpmb3V0LCBQb2xpY3lJbmZvICpwb2xpbmZvKTsKIHN0YXRpYyB2b2lkIGR1bXBQdWJsaWNh dGlvbihBcmNoaXZlICpmb3V0LCBQdWJsaWNhdGlvbkluZm8gKnB1YmluZm8pOwogc3RhdGljIHZv aWQgZHVtcFB1YmxpY2F0aW9uVGFibGUoQXJjaGl2ZSAqZm91dCwgUHVibGljYXRpb25SZWxJbmZv ICpwdWJyaW5mbyk7CiBzdGF0aWMgdm9pZCBkdW1wU3Vic2NyaXB0aW9uKEFyY2hpdmUgKmZvdXQs IFN1YnNjcmlwdGlvbkluZm8gKnN1YmluZm8pOworc3RhdGljIHZvaWQgZHVtcFZhcmlhYmxlKEFy Y2hpdmUgKmZvdXQsIFZhcmlhYmxlSW5mbyAqdmFyaW5mbyk7CiBzdGF0aWMgdm9pZCBkdW1wRGF0 YWJhc2UoQXJjaGl2ZSAqQUgpOwogc3RhdGljIHZvaWQgZHVtcERhdGFiYXNlQ29uZmlnKEFyY2hp dmUgKkFILCBQUUV4cEJ1ZmZlciBvdXRidWYsCiAJCQkJICAgY29uc3QgY2hhciAqZGJuYW1lLCBP aWQgZGJvaWQpOwpAQCAtNDIyMSw2ICs0MjIyLDIwOCBAQCBkdW1wU3Vic2NyaXB0aW9uKEFyY2hp dmUgKmZvdXQsIFN1YnNjcmlwdGlvbkluZm8gKnN1YmluZm8pCiAJZnJlZShxc3VibmFtZSk7CiB9 CiAKKy8qCisgKiBnZXRWYXJpYWJsZXMKKyAqCSAgZ2V0IGluZm9ybWF0aW9uIGFib3V0IHZhcmlh YmxlcworICovCit2b2lkCitnZXRWYXJpYWJsZXMoQXJjaGl2ZSAqZm91dCkKK3sKKwlEdW1wT3B0 aW9ucyAqZG9wdCA9IGZvdXQtPmRvcHQ7CisJUFFFeHBCdWZmZXIgcXVlcnk7CisJUFFFeHBCdWZm ZXIgYWNsX3N1YnF1ZXJ5ID0gY3JlYXRlUFFFeHBCdWZmZXIoKTsKKwlQUUV4cEJ1ZmZlciByYWNs X3N1YnF1ZXJ5ID0gY3JlYXRlUFFFeHBCdWZmZXIoKTsKKwlQUUV4cEJ1ZmZlciBpbml0X2FjbF9z dWJxdWVyeSA9IGNyZWF0ZVBRRXhwQnVmZmVyKCk7CisJUFFFeHBCdWZmZXIgaW5pdF9yYWNsX3N1 YnF1ZXJ5ID0gY3JlYXRlUFFFeHBCdWZmZXIoKTsKKwlQR3Jlc3VsdCAgICpyZXM7CisJVmFyaWFi bGVJbmZvICp2YXJpbmZvOworCWludAkJCWlfdGFibGVvaWQ7CisJaW50CQkJaV9vaWQ7CisJaW50 CQkJaV92YXJuYW1lOworCWludAkJCWlfdmFybmFtZXNwYWNlOworCWludAkJCWlfdmFydHlwZTsK KwlpbnQJCQlpX3ZhcnR5cG5hbWU7CisJaW50CQkJaV92YXJkZWZleHByOworCWludAkJCWlfcm9s bmFtZTsKKwlpbnQJCQlpX3ZhcmFjbDsKKwlpbnQJCQlpX3J2YXJhY2w7CisJaW50CQkJaV9pbml0 dmFyYWNsOworCWludAkJCWlfaW5pdHJ2YXJhY2w7CisJaW50CQkJaSwKKwkJCQludHVwczsKKwor CWlmIChmb3V0LT5yZW1vdGVWZXJzaW9uIDw9IDExMDAwMCkKKwkJcmV0dXJuOworCisJYWNsX3N1 YnF1ZXJ5ID0gY3JlYXRlUFFFeHBCdWZmZXIoKTsKKwlyYWNsX3N1YnF1ZXJ5ID0gY3JlYXRlUFFF eHBCdWZmZXIoKTsKKwlpbml0X2FjbF9zdWJxdWVyeSA9IGNyZWF0ZVBRRXhwQnVmZmVyKCk7CisJ aW5pdF9yYWNsX3N1YnF1ZXJ5ID0gY3JlYXRlUFFFeHBCdWZmZXIoKTsKKworCWJ1aWxkQUNMUXVl cmllcyhhY2xfc3VicXVlcnksIHJhY2xfc3VicXVlcnksIGluaXRfYWNsX3N1YnF1ZXJ5LAorCQkJ CQlpbml0X3JhY2xfc3VicXVlcnksICJ2LnZhcmFjbCIsICJ2LnZhcm93bmVyIiwgIidWJyIsCisJ CQkJCWRvcHQtPmJpbmFyeV91cGdyYWRlKTsKKworCXF1ZXJ5ID0gY3JlYXRlUFFFeHBCdWZmZXIo KTsKKworCXJlc2V0UFFFeHBCdWZmZXIocXVlcnkpOworCisJLyogR2V0IHRoZSB2YXJpYWJsZXMg aW4gY3VycmVudCBkYXRhYmFzZS4gKi8KKwlhcHBlbmRQUUV4cEJ1ZmZlcihxdWVyeSwKKwkJCQkJ CSAgIlNFTEVDVCB2LnRhYmxlb2lkLCB2Lm9pZCwgdi52YXJuYW1lLCAiCisJCQkJCQkgICJ2LnZh cm5hbWVzcGFjZSwiCisJCQkJCQkgICIoJXMgdmFyb3duZXIpIEFTIHJvbG5hbWUsICIKKwkJCQkJ CSAgIiVzIGFzIHZhcmFjbCwgIgorCQkJCQkJICAiJXMgYXMgcnZhcmFjbCwgIgorCQkJCQkJICAi JXMgYXMgaW5pdHZhcmFjbCwgIgorCQkJCQkJICAiJXMgYXMgaW5pdHJ2YXJhY2wsICIKKwkJCQkJ CSAgInYudmFydHlwZSwgIgorCQkJCQkJICAicGdfY2F0YWxvZy5mb3JtYXRfdHlwZSh2LnZhcnR5 cGUsIHYudmFydHlwbW9kKSBhcyB2YXJ0eXBuYW1lLCAiCisJCQkJCQkgICJwZ19jYXRhbG9nLnBn X2dldF9leHByKHYudmFyZGVmZXhwciwwKSBhcyB2YXJkZWZleHByICIKKwkJCQkJCSAgIkZST00g cGdfdmFyaWFibGUgdiAiCisJCQkJCQkgICJMRUZUIEpPSU4gcGdfaW5pdF9wcml2cyBwaXAgIgor CQkJCQkJICAiT04gKHYub2lkID0gcGlwLm9iam9pZCAiCisJCQkJCQkgICJBTkQgcGlwLmNsYXNz b2lkID0gJ3BnX3ZhcmlhYmxlJzo6cmVnY2xhc3MgIgorCQkJCQkJICAiQU5EIHBpcC5vYmpzdWJp ZCA9IDApIiwKKwkJCQkJCSAgdXNlcm5hbWVfc3VicXVlcnksCisJCQkJCQkgIGFjbF9zdWJxdWVy eS0+ZGF0YSwKKwkJCQkJCSAgcmFjbF9zdWJxdWVyeS0+ZGF0YSwKKwkJCQkJCSAgaW5pdF9hY2xf c3VicXVlcnktPmRhdGEsCisJCQkJCQkgIGluaXRfcmFjbF9zdWJxdWVyeS0+ZGF0YSk7CisKKwlk ZXN0cm95UFFFeHBCdWZmZXIoYWNsX3N1YnF1ZXJ5KTsKKwlkZXN0cm95UFFFeHBCdWZmZXIocmFj bF9zdWJxdWVyeSk7CisJZGVzdHJveVBRRXhwQnVmZmVyKGluaXRfYWNsX3N1YnF1ZXJ5KTsKKwlk ZXN0cm95UFFFeHBCdWZmZXIoaW5pdF9yYWNsX3N1YnF1ZXJ5KTsKKworCXJlcyA9IEV4ZWN1dGVT cWxRdWVyeShmb3V0LCBxdWVyeS0+ZGF0YSwgUEdSRVNfVFVQTEVTX09LKTsKKworCW50dXBzID0g UFFudHVwbGVzKHJlcyk7CisKKwlpX3RhYmxlb2lkID0gUFFmbnVtYmVyKHJlcywgInRhYmxlb2lk Iik7CisJaV9vaWQgPSBQUWZudW1iZXIocmVzLCAib2lkIik7CisJaV92YXJuYW1lID0gUFFmbnVt YmVyKHJlcywgInZhcm5hbWUiKTsKKwlpX3Zhcm5hbWVzcGFjZSA9IFBRZm51bWJlcihyZXMsICJ2 YXJuYW1lc3BhY2UiKTsKKwlpX3JvbG5hbWUgPSBQUWZudW1iZXIocmVzLCAicm9sbmFtZSIpOwor CWlfdmFydHlwZSA9IFBRZm51bWJlcihyZXMsICJ2YXJ0eXBlIik7CisJaV92YXJ0eXBuYW1lID0g UFFmbnVtYmVyKHJlcywgInZhcnR5cG5hbWUiKTsKKwlpX3ZhcmRlZmV4cHIgPSBQUWZudW1iZXIo cmVzLCAidmFyZGVmZXhwciIpOworCWlfdmFyYWNsID0gUFFmbnVtYmVyKHJlcywgInZhcmFjbCIp OworCWlfcnZhcmFjbCA9IFBRZm51bWJlcihyZXMsICJydmFyYWNsIik7CisJaV9pbml0dmFyYWNs ID0gUFFmbnVtYmVyKHJlcywgImluaXR2YXJhY2wiKTsKKwlpX2luaXRydmFyYWNsID0gUFFmbnVt YmVyKHJlcywgImluaXRydmFyYWNsIik7CisKKwl2YXJpbmZvID0gcGdfbWFsbG9jKG50dXBzICog c2l6ZW9mKFZhcmlhYmxlSW5mbykpOworCisJZm9yIChpID0gMDsgaSA8IG50dXBzOyBpKyspCisJ eworCQlUeXBlSW5mbwkgICAqdnR5cGU7CisKKwkJdmFyaW5mb1tpXS5kb2JqLm9ialR5cGUgPSBE T19WQVJJQUJMRTsKKwkJdmFyaW5mb1tpXS5kb2JqLmNhdElkLnRhYmxlb2lkID0KKwkJCWF0b29p ZChQUWdldHZhbHVlKHJlcywgaSwgaV90YWJsZW9pZCkpOworCQl2YXJpbmZvW2ldLmRvYmouY2F0 SWQub2lkID0gYXRvb2lkKFBRZ2V0dmFsdWUocmVzLCBpLCBpX29pZCkpOworCQlBc3NpZ25EdW1w SWQoJnZhcmluZm9baV0uZG9iaik7CisJCXZhcmluZm9baV0uZG9iai5uYW1lID0gcGdfc3RyZHVw KFBRZ2V0dmFsdWUocmVzLCBpLCBpX3Zhcm5hbWUpKTsKKwkJdmFyaW5mb1tpXS5kb2JqLm5hbWVz cGFjZSA9CisJCQlmaW5kTmFtZXNwYWNlKGZvdXQsCisJCQkJCQkgIGF0b29pZChQUWdldHZhbHVl KHJlcywgaSwgaV92YXJuYW1lc3BhY2UpKSk7CisKKwkJdmFyaW5mb1tpXS5yb2xuYW1lID0gcGdf c3RyZHVwKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3JvbG5hbWUpKTsKKwkJdmFyaW5mb1tpXS52YXJ0 eXBlID0gYXRvb2lkKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3ZhcnR5cGUpKTsKKwkJdmFyaW5mb1tp XS52YXJ0eXBuYW1lID0gcGdfc3RyZHVwKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3ZhcnR5cG5hbWUp KTsKKworCQl2YXJpbmZvW2ldLnZhcmFjbCA9IHBnX3N0cmR1cChQUWdldHZhbHVlKHJlcywgaSwg aV92YXJhY2wpKTsKKwkJdmFyaW5mb1tpXS5ydmFyYWNsID0gcGdfc3RyZHVwKFBRZ2V0dmFsdWUo cmVzLCBpLCBpX3J2YXJhY2wpKTsKKwkJdmFyaW5mb1tpXS5pbml0dmFyYWNsID0gcGdfc3RyZHVw KFBRZ2V0dmFsdWUocmVzLCBpLCBpX2luaXR2YXJhY2wpKTsKKwkJdmFyaW5mb1tpXS5pbml0cnZh cmFjbCA9IHBnX3N0cmR1cChQUWdldHZhbHVlKHJlcywgaSwgaV9pbml0cnZhcmFjbCkpOworCisJ CS8qIERlY2lkZSB3aGV0aGVyIHdlIHdhbnQgdG8gZHVtcCBpdCAqLworCQlzZWxlY3REdW1wYWJs ZU9iamVjdCgmKHZhcmluZm9baV0uZG9iaiksIGZvdXQpOworCisJCS8qIERvIG5vdCB0cnkgdG8g ZHVtcCBBQ0wgaWYgbm8gQUNMIGV4aXN0cy4gKi8KKwkJaWYgKFBRZ2V0aXNudWxsKHJlcywgaSwg aV92YXJhY2wpICYmIFBRZ2V0aXNudWxsKHJlcywgaSwgaV9ydmFyYWNsKSAmJgorCQkJUFFnZXRp c251bGwocmVzLCBpLCBpX2luaXR2YXJhY2wpICYmCisJCQlQUWdldGlzbnVsbChyZXMsIGksIGlf aW5pdHJ2YXJhY2wpKQorCQkJdmFyaW5mb1tpXS5kb2JqLmR1bXAgJj0gfkRVTVBfQ09NUE9ORU5U X0FDTDsKKworCQlpZiAoUFFnZXRpc251bGwocmVzLCBpLCBpX3ZhcmRlZmV4cHIpKQorCQkJdmFy aW5mb1tpXS52YXJkZWZleHByID0gTlVMTDsKKwkJZWxzZQorCQkJdmFyaW5mb1tpXS52YXJkZWZl eHByID0gcGdfc3RyZHVwKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3ZhcmRlZmV4cHIpKTsKKworCQlp ZiAoc3RybGVuKHZhcmluZm9baV0ucm9sbmFtZSkgPT0gMCkKKwkJCXdyaXRlX21zZyhOVUxMLCAi V0FSTklORzogb3duZXIgb2YgdmFyaWFibGUgXCIlc1wiIGFwcGVhcnMgdG8gYmUgaW52YWxpZFxu IiwKKwkJCQkJICB2YXJpbmZvW2ldLmRvYmoubmFtZSk7CisKKwkJLyogRGVjaWRlIHdoZXRoZXIg d2Ugd2FudCB0byBkdW1wIGl0ICovCisJCXNlbGVjdER1bXBhYmxlT2JqZWN0KCYodmFyaW5mb1tp XS5kb2JqKSwgZm91dCk7CisKKwkJdnR5cGUgPSBmaW5kVHlwZUJ5T2lkKHZhcmluZm9baV0udmFy dHlwZSk7CisJCWFkZE9iamVjdERlcGVuZGVuY3koJnZhcmluZm9baV0uZG9iaiwgdnR5cGUtPmRv YmouZHVtcElkKTsKKwl9CisJUFFjbGVhcihyZXMpOworCisJZGVzdHJveVBRRXhwQnVmZmVyKHF1 ZXJ5KTsKK30KKworLyoKKyAqIGR1bXBWYXJpYWJsZQorICoJICBkdW1wIHRoZSBkZWZpbml0aW9u IG9mIHRoZSBnaXZlbiB2YXJpYWJsZXMKKyAqLworc3RhdGljIHZvaWQKK2R1bXBWYXJpYWJsZShB cmNoaXZlICpmb3V0LCBWYXJpYWJsZUluZm8gKnZhcmluZm8pCit7CisJRHVtcE9wdGlvbnMgKmRv cHQgPSBmb3V0LT5kb3B0OworCisJUFFFeHBCdWZmZXIgZGVscTsKKwlQUUV4cEJ1ZmZlciBxdWVy eTsKKwljb25zdCBjaGFyCSAgICp2YXJuYW1lOworCWNvbnN0IGNoYXIJICAgKnZhcnR5cG5hbWU7 CisJY29uc3QgY2hhcgkgICAqdmFyZGVmZXhwcjsKKworCS8qIFNraXAgaWYgbm90IHRvIGJlIGR1 bXBlZCAqLworCWlmICghdmFyaW5mby0+ZG9iai5kdW1wIHx8IGRvcHQtPmRhdGFPbmx5KQorCQly ZXR1cm47CisKKwlkZWxxID0gY3JlYXRlUFFFeHBCdWZmZXIoKTsKKwlxdWVyeSA9IGNyZWF0ZVBR RXhwQnVmZmVyKCk7CisKKwl2YXJuYW1lID0gZm10UXVhbGlmaWVkRHVtcGFibGUodmFyaW5mbyk7 CisJdmFydHlwbmFtZSA9IHZhcmluZm8tPnZhcnR5cG5hbWU7CisJdmFyZGVmZXhwciA9IHZhcmlu Zm8tPnZhcmRlZmV4cHI7CisKKwlhcHBlbmRQUUV4cEJ1ZmZlcihkZWxxLCAiRFJPUCBWQVJJQUJM RSAlcztcbiIsCisJCQkJCSAgdmFybmFtZSk7CisKKwlhcHBlbmRQUUV4cEJ1ZmZlcihxdWVyeSwg IkNSRUFURSBWQVJJQUJMRSAlcyBBUyAlcyIsCisJCQkJCSAgdmFybmFtZSwgdmFydHlwbmFtZSk7 CisKKwlpZiAodmFyZGVmZXhwcikKKwkJYXBwZW5kUFFFeHBCdWZmZXIocXVlcnksICIgREVGQVVM VCAlcyIsCisJCQkJCQkgIHZhcmRlZmV4cHIpOworCisJYXBwZW5kUFFFeHBCdWZmZXIocXVlcnks ICI7XG4iKTsKKworCUFyY2hpdmVFbnRyeShmb3V0LCB2YXJpbmZvLT5kb2JqLmNhdElkLCB2YXJp bmZvLT5kb2JqLmR1bXBJZCwKKwkJCQkgdmFyaW5mby0+ZG9iai5uYW1lLAorCQkJCSBOVUxMLAor CQkJCSBOVUxMLAorCQkJCSB2YXJpbmZvLT5yb2xuYW1lLCBmYWxzZSwKKwkJCQkgIlZBUklBQkxF IiwgU0VDVElPTl9QUkVfREFUQSwKKwkJCQkgcXVlcnktPmRhdGEsIGRlbHEtPmRhdGEsIE5VTEws CisJCQkJIE5VTEwsIDAsCisJCQkJIE5VTEwsIE5VTEwpOworCisJaWYgKHZhcmluZm8tPmRvYmou ZHVtcCAmIERVTVBfQ09NUE9ORU5UX0NPTU1FTlQpCisJCWR1bXBDb21tZW50KGZvdXQsICJWQVJJ QUJMRSIsIHZhcm5hbWUsCisJCQkJCU5VTEwsIHZhcmluZm8tPnJvbG5hbWUsCisJCQkJCXZhcmlu Zm8tPmRvYmouY2F0SWQsIDAsIHZhcmluZm8tPmRvYmouZHVtcElkKTsKKworCWRlc3Ryb3lQUUV4 cEJ1ZmZlcihkZWxxKTsKKwlkZXN0cm95UFFFeHBCdWZmZXIocXVlcnkpOworfQorCiBzdGF0aWMg dm9pZAogYmluYXJ5X3VwZ3JhZGVfc2V0X3R5cGVfb2lkc19ieV90eXBlX29pZChBcmNoaXZlICpm b3V0LAogCQkJCQkJCQkJCSBQUUV4cEJ1ZmZlciB1cGdyYWRlX2J1ZmZlciwKQEAgLTk4NDksNiAr MTAwNTIsOSBAQCBkdW1wRHVtcGFibGVPYmplY3QoQXJjaGl2ZSAqZm91dCwgRHVtcGFibGVPYmpl Y3QgKmRvYmopCiAJCWNhc2UgRE9fU1VCU0NSSVBUSU9OOgogCQkJZHVtcFN1YnNjcmlwdGlvbihm b3V0LCAoU3Vic2NyaXB0aW9uSW5mbyAqKSBkb2JqKTsKIAkJCWJyZWFrOworCQljYXNlIERPX1ZB UklBQkxFOgorCQkJZHVtcFZhcmlhYmxlKGZvdXQsIChWYXJpYWJsZUluZm8gKikgZG9iaik7CisJ CQlicmVhazsKIAkJY2FzZSBET19QUkVfREFUQV9CT1VOREFSWToKIAkJY2FzZSBET19QT1NUX0RB VEFfQk9VTkRBUlk6CiAJCQkvKiBuZXZlciBkdW1wZWQsIG5vdGhpbmcgdG8gZG8gKi8KQEAgLTE3 OTM1LDYgKzE4MTQxLDcgQEAgYWRkQm91bmRhcnlEZXBlbmRlbmNpZXMoRHVtcGFibGVPYmplY3Qg Kipkb2JqcywgaW50IG51bU9ianMsCiAJCQljYXNlIERPX09QRkFNSUxZOgogCQkJY2FzZSBET19D T0xMQVRJT046CiAJCQljYXNlIERPX0NPTlZFUlNJT046CisJCQljYXNlIERPX1ZBUklBQkxFOgog CQkJY2FzZSBET19UQUJMRToKIAkJCWNhc2UgRE9fQVRUUkRFRjoKIAkJCWNhc2UgRE9fUFJPQ0xB Tkc6CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oIGIvc3JjL2Jpbi9wZ19k dW1wL3BnX2R1bXAuaAppbmRleCAxNDQ4MDA1ZjMwLi4wZDQ5YmI3ZWQ3IDEwMDY0NAotLS0gYS9z cmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgK QEAgLTg0LDcgKzg0LDggQEAgdHlwZWRlZiBlbnVtCiAJRE9fUE9MSUNZLAogCURPX1BVQkxJQ0FU SU9OLAogCURPX1BVQkxJQ0FUSU9OX1JFTCwKLQlET19TVUJTQ1JJUFRJT04KKwlET19TVUJTQ1JJ UFRJT04sCisJRE9fVkFSSUFCTEUKIH0gRHVtcGFibGVPYmplY3RUeXBlOwogCiAvKiBjb21wb25l bnQgdHlwZXMgb2YgYW4gb2JqZWN0IHdoaWNoIGNhbiBiZSBzZWxlY3RlZCBmb3IgZHVtcGluZyAq LwpAQCAtNjI1LDYgKzYyNiwyMiBAQCB0eXBlZGVmIHN0cnVjdCBfU3Vic2NyaXB0aW9uSW5mbwog CWNoYXIJICAgKnN1YnB1YmxpY2F0aW9uczsKIH0gU3Vic2NyaXB0aW9uSW5mbzsKIAorLyoKKyAq IFRoZSBWYXJpYWJsZUluZm8gc3RydWN0IGlzIHVzZWQgdG8gcmVwcmVzZW50IHNjaGVtYSB2YXJp YWJsZXMKKyAqLwordHlwZWRlZiBzdHJ1Y3QgX1ZhcmlhYmxlSW5mbworeworCUR1bXBhYmxlT2Jq ZWN0IGRvYmo7CisJT2lkCQkJdmFydHlwZTsKKwljaGFyCSAgICp2YXJ0eXBuYW1lOworCWNoYXIJ ICAgKnJvbG5hbWU7CQkvKiBuYW1lIG9mIG93bmVyLCBvciBlbXB0eSBzdHJpbmcgKi8KKwljaGFy CSAgICp2YXJkZWZleHByOworCWNoYXIJICAgKnZhcmFjbDsKKwljaGFyCSAgICpydmFyYWNsOwor CWNoYXIJICAgKmluaXR2YXJhY2w7CisJY2hhcgkgICAqaW5pdHJ2YXJhY2w7Cit9IFZhcmlhYmxl SW5mbzsKKwogLyoKICAqIFdlIGJ1aWxkIGFuIGFycmF5IG9mIHRoZXNlIHdpdGggYW4gZW50cnkg Zm9yIGVhY2ggb2JqZWN0IHRoYXQgaXMgYW4KICAqIGV4dGVuc2lvbiBtZW1iZXIgYWNjb3JkaW5n IHRvIHBnX2RlcGVuZC4KQEAgLTcyNSw1ICs3NDIsNiBAQCBleHRlcm4gdm9pZCBnZXRQdWJsaWNh dGlvbnMoQXJjaGl2ZSAqZm91dCk7CiBleHRlcm4gdm9pZCBnZXRQdWJsaWNhdGlvblRhYmxlcyhB cmNoaXZlICpmb3V0LCBUYWJsZUluZm8gdGJsaW5mb1tdLAogCQkJCQkgaW50IG51bVRhYmxlcyk7 CiBleHRlcm4gdm9pZCBnZXRTdWJzY3JpcHRpb25zKEFyY2hpdmUgKmZvdXQpOworZXh0ZXJuIHZv aWQgZ2V0VmFyaWFibGVzKEFyY2hpdmUgKmZvdXQpOwogCiAjZW5kaWYJCQkJCQkJLyogUEdfRFVN UF9IICovCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbCBiL3Ny Yy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsCmluZGV4IGVjNzUxYTdjMjMuLjJhNjc3NjZl ZDQgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsCisrKyBiL3Ny Yy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsCkBAIC0yNjAxLDYgKzI2MDEsMzggQEAgbXkg JXRlc3RzID0gKAogCQl9LAogCX0sCiAKKwknQ1JFQVRFIFZBUklBQkxFIHRlc3RfdmFyaWFibGUn ID0+IHsKKwkJYWxsX3J1bnMgICAgID0+IDEsCisJCWNhdGNoX2FsbCAgICA9PiAnQ1JFQVRFIC4u LiBjb21tYW5kcycsCisJCWNyZWF0ZV9vcmRlciA9PiA2MSwKKwkJY3JlYXRlX3NxbCAgID0+ICdD UkVBVEUgVkFSSUFCTEUgZHVtcF90ZXN0LnZhcmlhYmxlIEFTIGludGVnZXIgREVGQVVMVCAwOycs CisJCXJlZ2V4cCA9PiBxci9eCisJCQlcUUNSRUFURSBWQVJJQUJMRSBkdW1wX3Rlc3QudmFyaWFi bGUgQVMgaW50ZWdlciBERUZBVUxUIDA7XEUveG0sCisJCWxpa2UgPT4geworCQkJYmluYXJ5X3Vw Z3JhZGUgICAgICAgICAgPT4gMSwKKwkJCWNsZWFuICAgICAgICAgICAgICAgICAgID0+IDEsCisJ CQljbGVhbl9pZl9leGlzdHMgICAgICAgICA9PiAxLAorCQkJY3JlYXRlZGIgICAgICAgICAgICAg ICAgPT4gMSwKKwkJCWRlZmF1bHRzICAgICAgICAgICAgICAgID0+IDEsCisJCQlleGNsdWRlX3Rl c3RfdGFibGUgICAgICA9PiAxLAorCQkJZXhjbHVkZV90ZXN0X3RhYmxlX2RhdGEgPT4gMSwKKwkJ CW5vX2Jsb2JzICAgICAgICAgICAgICAgID0+IDEsCisJCQlub19wcml2cyAgICAgICAgICAgICAg ICA9PiAxLAorCQkJbm9fb3duZXIgICAgICAgICAgICAgICAgPT4gMSwKKwkJCW9ubHlfZHVtcF90 ZXN0X3NjaGVtYSAgID0+IDEsCisJCQlwZ19kdW1wYWxsX2RicHJpdnMgICAgICA9PiAxLAorCQkJ c2NoZW1hX29ubHkgICAgICAgICAgICAgPT4gMSwKKwkJCXNlY3Rpb25fcHJlX2RhdGEgICAgICAg ID0+IDEsCisJCQl0ZXN0X3NjaGVtYV9wbHVzX2Jsb2JzICA9PiAxLAorCQkJd2l0aF9vaWRzICAg ICAgICAgICAgICAgPT4gMSwgfSwKKwkJdW5saWtlID0+IHsKKwkJCWV4Y2x1ZGVfZHVtcF90ZXN0 X3NjaGVtYSA9PiAxLAorCQkJb25seV9kdW1wX3Rlc3RfdGFibGUgICAgID0+IDEsCisJCQlwZ19k dW1wYWxsX2dsb2JhbHMgICAgICAgPT4gMSwKKwkJCXBnX2R1bXBhbGxfZ2xvYmFsc19jbGVhbiA9 PiAxLAorCQkJcm9sZSAgICAgICAgICAgICAgICAgICAgID0+IDEsCisJCQlzZWN0aW9uX3Bvc3Rf ZGF0YSAgICAgICAgPT4gMSwgfSwgfSwKKwogCSdDUkVBVEUgVklFVyB0ZXN0X3ZpZXcnID0+IHsK IAkJY3JlYXRlX29yZGVyID0+IDYxLAogCQljcmVhdGVfc3FsICAgPT4gJ0NSRUFURSBWSUVXIGR1 bXBfdGVzdC50ZXN0X3ZpZXcKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9jb21tYW5kLmMgYi9z cmMvYmluL3BzcWwvY29tbWFuZC5jCmluZGV4IDViNGQ1NGE0NDIuLjczYTc1MmZkN2UgMTAwNjQ0 Ci0tLSBhL3NyYy9iaW4vcHNxbC9jb21tYW5kLmMKKysrIGIvc3JjL2Jpbi9wc3FsL2NvbW1hbmQu YwpAQCAtODUzLDYgKzg1Myw5IEBAIGV4ZWNfY29tbWFuZF9kKFBzcWxTY2FuU3RhdGUgc2Nhbl9z dGF0ZSwgYm9vbCBhY3RpdmVfYnJhbmNoLCBjb25zdCBjaGFyICpjbWQpCiAJCQkJCQlicmVhazsK IAkJCQl9CiAJCQkJYnJlYWs7CisJCQljYXNlICdWJzoJCQkvKiBWYXJpYWJsZXMgKi8KKwkJCQlz dWNjZXNzID0gbGlzdFZhcmlhYmxlcyhwYXR0ZXJuLCBzaG93X3ZlcmJvc2UpOworCQkJCWJyZWFr OwogCQkJY2FzZSAneCc6CQkJLyogRXh0ZW5zaW9ucyAqLwogCQkJCWlmIChzaG93X3ZlcmJvc2Up CiAJCQkJCXN1Y2Nlc3MgPSBsaXN0RXh0ZW5zaW9uQ29udGVudHMocGF0dGVybik7CmRpZmYgLS1n aXQgYS9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYyBiL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCmlu ZGV4IDgwZDgzMzhiOTYuLmQ2NDViYmE3YWYgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC9kZXNj cmliZS5jCisrKyBiL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCkBAIC00MTc4LDYgKzQxNzgsODAg QEAgbGlzdFNjaGVtYXMoY29uc3QgY2hhciAqcGF0dGVybiwgYm9vbCB2ZXJib3NlLCBib29sIHNo b3dTeXN0ZW0pCiAJcmV0dXJuIHRydWU7CiB9CiAKKy8qCisgKiBcZFYKKyAqCisgKiBsaXN0VmFy aWFibGVzKCkKKyAqLworYm9vbAorbGlzdFZhcmlhYmxlcyhjb25zdCBjaGFyICpwYXR0ZXJuLCBi b29sIHZlcmJvc2UpCit7CisJUFFFeHBCdWZmZXJEYXRhIGJ1ZjsKKwlQR3Jlc3VsdCAgICpyZXM7 CisJcHJpbnRRdWVyeU9wdCBteW9wdCA9IHBzZXQucG9wdDsKKwlzdGF0aWMgY29uc3QgYm9vbCB0 cmFuc2xhdGVfY29sdW1uc1tdID0ge2ZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwg ZmFsc2UsIGZhbHNlfTsKKworCWluaXRQUUV4cEJ1ZmZlcigmYnVmKTsKKworCXByaW50ZlBRRXhw QnVmZmVyKCZidWYsCisJCQkJCSAgIlNFTEVDVCBuLm5zcG5hbWUgYXMgXCIlc1wiLFxuIgorCQkJ CQkgICIgIHYudmFybmFtZSBhcyBcIiVzXCIsXG4iCisJCQkJCSAgIiAgcGdfY2F0YWxvZy5mb3Jt YXRfdHlwZSh2LnZhcnR5cGUsIHYudmFydHlwbW9kKSBhcyBcIiVzXCIsXG4iCisJCQkJCSAgIiAg cGdfY2F0YWxvZy5wZ19nZXRfdXNlcmJ5aWQodi52YXJvd25lcikgYXMgXCIlc1wiLFxuIgorCQkJ CQkgICIgIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIodi52YXJkZWZleHByLCAwKSBhcyBcIiVzXCIi LAorCQkJCQkgIGdldHRleHRfbm9vcCgiU2NoZW1hIiksCisJCQkJCSAgZ2V0dGV4dF9ub29wKCJO YW1lIiksCisJCQkJCSAgZ2V0dGV4dF9ub29wKCJUeXBlIiksCisJCQkJCSAgZ2V0dGV4dF9ub29w KCJPd25lciIpLAorCQkJCQkgIGdldHRleHRfbm9vcCgiRGVmYXVsdCIpKTsKKworCWFwcGVuZFBR RXhwQnVmZmVyU3RyKCZidWYsCisJCQkJCQkgIlxuRlJPTSBwZ19jYXRhbG9nLnBnX3ZhcmlhYmxl IHYiCisJCQkJCQkgIlxuICAgICBMRUZUIEpPSU4gcGdfY2F0YWxvZy5wZ19uYW1lc3BhY2UgbiBP TiBuLm9pZCA9IHYudmFybmFtZXNwYWNlIik7CisKKwlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmYnVm LCAiXG5XSEVSRSB0cnVlXG4iKTsKKwlpZiAoIXBhdHRlcm4pCisJCWFwcGVuZFBRRXhwQnVmZmVy U3RyKCZidWYsICIgICAgICBBTkQgbi5uc3BuYW1lIDw+ICdwZ19jYXRhbG9nJ1xuIgorCQkJCQkJ CSAiICAgICAgQU5EIG4ubnNwbmFtZSA8PiAnaW5mb3JtYXRpb25fc2NoZW1hJ1xuIik7CisKKwlw cm9jZXNzU1FMTmFtZVBhdHRlcm4ocHNldC5kYiwgJmJ1ZiwgcGF0dGVybiwgdHJ1ZSwgZmFsc2Us CisJCQkJCQkgICJuLm5zcG5hbWUiLCAidi52YXJuYW1lIiwgTlVMTCwKKwkJCQkJCSAgInBnX2Nh dGFsb2cucGdfdmFyaWFibGVfaXNfdmlzaWJsZSh2Lm9pZCkiKTsKKworCWFwcGVuZFBRRXhwQnVm ZmVyU3RyKCZidWYsICJPUkRFUiBCWSAxLDI7Iik7CisKKwlyZXMgPSBQU1FMZXhlYyhidWYuZGF0 YSk7CisJdGVybVBRRXhwQnVmZmVyKCZidWYpOworCWlmICghcmVzKQorCQlyZXR1cm4gZmFsc2U7 CisKKwkvKgorCSAqIE1vc3QgZnVuY3Rpb25zIGluIHRoaXMgZmlsZSBhcmUgY29udGVudCB0byBw cmludCBhbiBlbXB0eSB0YWJsZSB3aGVuCisJICogdGhlcmUgYXJlIG5vIG1hdGNoaW5nIG9iamVj dHMuICBXZSBpbnRlbnRpb25hbGx5IGRldmlhdGUgZnJvbSB0aGF0CisJICogaGVyZSwgYnV0IG9u bHkgaW4gIXF1aWV0IG1vZGUsIGZvciBoaXN0b3JpY2FsIHJlYXNvbnMuCisJICovCisJaWYgKFBR bnR1cGxlcyhyZXMpID09IDAgJiYgIXBzZXQucXVpZXQpCisJeworCQlpZiAocGF0dGVybikKKwkJ CXBzcWxfZXJyb3IoIkRpZCBub3QgZmluZCBhbnkgc2NoZW1hIHZhcmlhYmxlIG5hbWVkIFwiJXNc Ii5cbiIsCisJCQkJCSAgIHBhdHRlcm4pOworCQllbHNlCisJCQlwc3FsX2Vycm9yKCJEaWQgbm90 IGZpbmQgYW55IHNjaGVtYSB2YXJpYWJsZXMuXG4iKTsKKwl9CisJZWxzZQorCXsKKwkJbXlvcHQu bnVsbFByaW50ID0gTlVMTDsKKwkJbXlvcHQudGl0bGUgPSBfKCJMaXN0IG9mIHZhcmlhYmxlcyIp OworCQlteW9wdC50cmFuc2xhdGVfaGVhZGVyID0gdHJ1ZTsKKwkJbXlvcHQudHJhbnNsYXRlX2Nv bHVtbnMgPSB0cmFuc2xhdGVfY29sdW1uczsKKwkJbXlvcHQubl90cmFuc2xhdGVfY29sdW1ucyA9 IGxlbmd0aG9mKHRyYW5zbGF0ZV9jb2x1bW5zKTsKKworCQlwcmludFF1ZXJ5KHJlcywgJm15b3B0 LCBwc2V0LnF1ZXJ5Rm91dCwgZmFsc2UsIHBzZXQubG9nZmlsZSk7CisJfQorCisJUFFjbGVhcihy ZXMpOworCXJldHVybiB0cnVlOworfQogCiAvKgogICogXGRGcApkaWZmIC0tZ2l0IGEvc3JjL2Jp bi9wc3FsL2Rlc2NyaWJlLmggYi9zcmMvYmluL3BzcWwvZGVzY3JpYmUuaAppbmRleCBhNGNjNWVm YWUwLi5lY2M0ZTNhNTMxIDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvZGVzY3JpYmUuaAorKysg Yi9zcmMvYmluL3BzcWwvZGVzY3JpYmUuaApAQCAtNjMsNiArNjMsOSBAQCBleHRlcm4gYm9vbCBs aXN0QWxsRGJzKGNvbnN0IGNoYXIgKnBhdHRlcm4sIGJvb2wgdmVyYm9zZSk7CiAvKiBcZHQsIFxk aSwgXGRzLCBcZFMsIGV0Yy4gKi8KIGV4dGVybiBib29sIGxpc3RUYWJsZXMoY29uc3QgY2hhciAq dGFidHlwZXMsIGNvbnN0IGNoYXIgKnBhdHRlcm4sIGJvb2wgdmVyYm9zZSwgYm9vbCBzaG93U3lz dGVtKTsKIAorLyogXGRWICovCitleHRlcm4gYm9vbCBsaXN0VmFyaWFibGVzKGNvbnN0IGNoYXIg KnBhdHRlcm4sIGJvb2wgdmFyYm9zZSk7CisKIC8qIFxkRCAqLwogZXh0ZXJuIGJvb2wgbGlzdERv bWFpbnMoY29uc3QgY2hhciAqcGF0dGVybiwgYm9vbCB2ZXJib3NlLCBib29sIHNob3dTeXN0ZW0p OwogCmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvaGVscC5jIGIvc3JjL2Jpbi9wc3FsL2hlbHAu YwppbmRleCAzMTYwMzBkMzU4Li5hZGNjMzZjYjZlIDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwv aGVscC5jCisrKyBiL3NyYy9iaW4vcHNxbC9oZWxwLmMKQEAgLTE2Nyw3ICsxNjcsNyBAQCBzbGFz aFVzYWdlKHVuc2lnbmVkIHNob3J0IGludCBwYWdlcikKIAkgKiBVc2UgInBzcWwgLS1oZWxwPWNv bW1hbmRzIHwgd2MiIHRvIGNvdW50IGNvcnJlY3RseS4gIEl0J3Mgb2theSB0byBjb3VudAogCSAq IHRoZSBVU0VfUkVBRExJTkUgbGluZSBldmVuIGluIGJ1aWxkcyB3aXRob3V0IHRoYXQuCiAJICov Ci0Jb3V0cHV0ID0gUGFnZU91dHB1dCgxMjUsIHBhZ2VyID8gJihwc2V0LnBvcHQudG9wdCkgOiBO VUxMKTsKKwlvdXRwdXQgPSBQYWdlT3V0cHV0KDEyNiwgcGFnZXIgPyAmKHBzZXQucG9wdC50b3B0 KSA6IE5VTEwpOwogCiAJZnByaW50ZihvdXRwdXQsIF8oIkdlbmVyYWxcbiIpKTsKIAlmcHJpbnRm KG91dHB1dCwgXygiICBcXGNvcHlyaWdodCAgICAgICAgICAgICBzaG93IFBvc3RncmVTUUwgdXNh Z2UgYW5kIGRpc3RyaWJ1dGlvbiB0ZXJtc1xuIikpOwpAQCAtMjU3LDYgKzI1Nyw3IEBAIHNsYXNo VXNhZ2UodW5zaWduZWQgc2hvcnQgaW50IHBhZ2VyKQogCWZwcmludGYob3V0cHV0LCBfKCIgIFxc ZFRbUytdIFtQQVRURVJOXSAgICAgIGxpc3QgZGF0YSB0eXBlc1xuIikpOwogCWZwcmludGYob3V0 cHV0LCBfKCIgIFxcZHVbUytdIFtQQVRURVJOXSAgICAgIGxpc3Qgcm9sZXNcbiIpKTsKIAlmcHJp bnRmKG91dHB1dCwgXygiICBcXGR2W1MrXSBbUEFUVEVSTl0gICAgICBsaXN0IHZpZXdzXG4iKSk7 CisJZnByaW50ZihvdXRwdXQsIF8oIiAgXFxkViAgICAgW1BBVFRFUk5dICAgICAgbGlzdCB2YXJp YWJsZXNcbiIpKTsKIAlmcHJpbnRmKG91dHB1dCwgXygiICBcXGR4WytdICBbUEFUVEVSTl0gICAg ICBsaXN0IGV4dGVuc2lvbnNcbiIpKTsKIAlmcHJpbnRmKG91dHB1dCwgXygiICBcXGR5ICAgICBb UEFUVEVSTl0gICAgICBsaXN0IGV2ZW50IHRyaWdnZXJzXG4iKSk7CiAJZnByaW50ZihvdXRwdXQs IF8oIiAgXFxsWytdICAgW1BBVFRFUk5dICAgICAgbGlzdCBkYXRhYmFzZXNcbiIpKTsKZGlmZiAt LWdpdCBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuYyBiL3NyYy9iaW4vcHNxbC90YWItY29t cGxldGUuYwppbmRleCBiYjY5NmY4ZWU5Li5lYmVjMDBmZTFmIDEwMDY0NAotLS0gYS9zcmMvYmlu L3BzcWwvdGFiLWNvbXBsZXRlLmMKKysrIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5jCkBA IC04MDUsNiArODA1LDIyIEBAIHN0YXRpYyBjb25zdCBTY2hlbWFRdWVyeSBRdWVyeV9mb3JfbGlz dF9vZl9zdGF0aXN0aWNzID0gewogCU5VTEwKIH07CiAKK3N0YXRpYyBjb25zdCBTY2hlbWFRdWVy eSBRdWVyeV9mb3JfbGlzdF9vZl92YXJpYWJsZXMgPSB7CisJLyogbWluX3NlcnZlcl92ZXJzaW9u ICovCisJMCwKKwkvKiBjYXRuYW1lICovCisJInBnX2NhdGFsb2cucGdfdmFyaWFibGUgdiIsCisJ Lyogc2VsY29uZGl0aW9uICovCisJTlVMTCwKKwkvKiB2aXNjb25kaXRpb24gKi8KKwkicGdfY2F0 YWxvZy5wZ192YXJpYWJsZV9pc192aXNpYmxlKHYub2lkKSIsCisJLyogbmFtZXNwYWNlICovCisJ InYudmFybmFtZXNwYWNlIiwKKwkvKiByZXN1bHQgKi8KKwkicGdfY2F0YWxvZy5xdW90ZV9pZGVu dCh2LnZhcm5hbWUpIiwKKwkvKiBxdWFscmVzdWx0ICovCisJTlVMTAorfTsKIAogLyoKICAqIFF1 ZXJpZXMgdG8gZ2V0IGxpc3RzIG9mIG5hbWVzIG9mIHZhcmlvdXMga2luZHMgb2YgdGhpbmdzLCBw b3NzaWJseQpAQCAtMTI0OSw2ICsxMjY1LDcgQEAgc3RhdGljIGNvbnN0IHBnc3FsX3RoaW5nX3Qg d29yZHNfYWZ0ZXJfY3JlYXRlW10gPSB7CiAJCQkJCQkJCQkJCQkJCQkJCSAqIFRBQkxFIC4uLiAq LwogCXsiVVNFUiIsIFF1ZXJ5X2Zvcl9saXN0X29mX3JvbGVzICIgVU5JT04gU0VMRUNUICdNQVBQ SU5HIEZPUicifSwKIAl7IlVTRVIgTUFQUElORyBGT1IiLCBOVUxMLCBOVUxMLCBOVUxMfSwKKwl7 IlZBUklBQkxFIiwgTlVMTCwgTlVMTCwgJlF1ZXJ5X2Zvcl9saXN0X29mX3ZhcmlhYmxlc30sCiAJ eyJWSUVXIiwgTlVMTCwgTlVMTCwgJlF1ZXJ5X2Zvcl9saXN0X29mX3ZpZXdzfSwKIAl7TlVMTH0J CQkJCQkvKiBlbmQgb2YgbGlzdCAqLwogfTsKQEAgLTE2MDQsNyArMTYyMSw3IEBAIHBzcWxfY29t cGxldGlvbihjb25zdCBjaGFyICp0ZXh0LCBpbnQgc3RhcnQsIGludCBlbmQpCiAJCSJBQk9SVCIs ICJBTFRFUiIsICJBTkFMWVpFIiwgIkJFR0lOIiwgIkNBTEwiLCAiQ0hFQ0tQT0lOVCIsICJDTE9T RSIsICJDTFVTVEVSIiwKIAkJIkNPTU1FTlQiLCAiQ09NTUlUIiwgIkNPUFkiLCAiQ1JFQVRFIiwg IkRFQUxMT0NBVEUiLCAiREVDTEFSRSIsCiAJCSJERUxFVEUgRlJPTSIsICJESVNDQVJEIiwgIkRP IiwgIkRST1AiLCAiRU5EIiwgIkVYRUNVVEUiLCAiRVhQTEFJTiIsCi0JCSJGRVRDSCIsICJHUkFO VCIsICJJTVBPUlQiLCAiSU5TRVJUIiwgIkxJU1RFTiIsICJMT0FEIiwgIkxPQ0siLAorCQkiRkVU Q0giLCAiR1JBTlQiLCAiSU1QT1JUIiwgIklOU0VSVCIsICJMRVQiLCAiTElTVEVOIiwgIkxPQUQi LCAiTE9DSyIsCiAJCSJNT1ZFIiwgIk5PVElGWSIsICJQUkVQQVJFIiwKIAkJIlJFQVNTSUdOIiwg IlJFRlJFU0ggTUFURVJJQUxJWkVEIFZJRVciLCAiUkVJTkRFWCIsICJSRUxFQVNFIiwKIAkJIlJF U0VUIiwgIlJFVk9LRSIsICJST0xMQkFDSyIsCkBAIC0xNjIxLDkgKzE2MzgsOSBAQCBwc3FsX2Nv bXBsZXRpb24oY29uc3QgY2hhciAqdGV4dCwgaW50IHN0YXJ0LCBpbnQgZW5kKQogCQkiXFxkIiwg IlxcZGEiLCAiXFxkQSIsICJcXGRiIiwgIlxcZGMiLCAiXFxkQyIsICJcXGRkIiwgIlxcZGRwIiwg IlxcZEQiLAogCQkiXFxkZXMiLCAiXFxkZXQiLCAiXFxkZXUiLCAiXFxkZXciLCAiXFxkRSIsICJc XGRmIiwKIAkJIlxcZEYiLCAiXFxkRmQiLCAiXFxkRnAiLCAiXFxkRnQiLCAiXFxkZyIsICJcXGRp IiwgIlxcZGwiLCAiXFxkTCIsCi0JCSJcXGRtIiwgIlxcZG4iLCAiXFxkbyIsICJcXGRPIiwgIlxc ZHAiLAorCQkiXFxkbSIsICJcXGRuIiwgIlxcZG8iLCAiXFxkTyIsICJcXGRwIgogCQkiXFxkcmRz IiwgIlxcZFJzIiwgIlxcZFJwIiwgIlxcZHMiLCAiXFxkUyIsCi0JCSJcXGR0IiwgIlxcZFQiLCAi XFxkdiIsICJcXGR1IiwgIlxcZHgiLCAiXFxkeSIsCisJCSJcXGR0IiwgIlxcZFQiLCAiXFxkdiIs ICJcXGR1IiwgIlxcZHgiLCAiXFxkeSIsICJcXGRWIiwKIAkJIlxcZSIsICJcXGVjaG8iLCAiXFxl ZiIsICJcXGVsaWYiLCAiXFxlbHNlIiwgIlxcZW5jb2RpbmciLAogCQkiXFxlbmRpZiIsICJcXGVy cnZlcmJvc2UiLCAiXFxldiIsCiAJCSJcXGYiLApAQCAtMjgzNyw2ICsyODU0LDE0IEBAIHBzcWxf Y29tcGxldGlvbihjb25zdCBjaGFyICp0ZXh0LCBpbnQgc3RhcnQsIGludCBlbmQpCiAJZWxzZSBp ZiAoTWF0Y2hlczQoIkNSRUFURSIsICJST0xFfFVTRVJ8R1JPVVAiLCBNYXRjaEFueSwgIklOIikp CiAJCUNPTVBMRVRFX1dJVEhfTElTVDIoIkdST1VQIiwgIlJPTEUiKTsKIAorLyogQ1JFQVRFIFZB UklBQkxFIC0tLSBpcyBhbGxvd2VkIGluc2lkZSBDUkVBVEUgU0NIRU1BLCBzbyB1c2UgVGFpbE1h dGNoZXMgKi8KKwkvKiBDb21wbGV0ZSBDUkVBVEUgVkFSSUFCTEUgPG5hbWU+IHdpdGggQVMgKi8K KwllbHNlIGlmIChUYWlsTWF0Y2hlczMoIkNSRUFURSIsICJWQVJJQUJMRSIsIE1hdGNoQW55KSkK KwkJQ09NUExFVEVfV0lUSF9DT05TVCgiQVMiKTsKKwkvKiBDb21wbGV0ZSBDUkVBVEUgVkFSSUFC TEUgPG5hbWU+IHdpdGggQVMgdHlwZXMqLworCWVsc2UgaWYgKFRhaWxNYXRjaGVzNCgiQ1JFQVRF IiwgIlZBUklBQkxFIiwgTWF0Y2hBbnksICJBUyIpKQorCQlDT01QTEVURV9XSVRIX1NDSEVNQV9R VUVSWShRdWVyeV9mb3JfbGlzdF9vZl9kYXRhdHlwZXMsIE5VTEwpOworCiAvKiBDUkVBVEUgVklF VyAtLS0gaXMgYWxsb3dlZCBpbnNpZGUgQ1JFQVRFIFNDSEVNQSwgc28gdXNlIFRhaWxNYXRjaGVz ICovCiAJLyogQ29tcGxldGUgQ1JFQVRFIFZJRVcgPG5hbWU+IHdpdGggQVMgKi8KIAllbHNlIGlm IChUYWlsTWF0Y2hlczMoIkNSRUFURSIsICJWSUVXIiwgTWF0Y2hBbnkpKQpAQCAtMjg5MCw3ICsy OTE1LDcgQEAgcHNxbF9jb21wbGV0aW9uKGNvbnN0IGNoYXIgKnRleHQsIGludCBzdGFydCwgaW50 IGVuZCkKIAogLyogRElTQ0FSRCAqLwogCWVsc2UgaWYgKE1hdGNoZXMxKCJESVNDQVJEIikpCi0J CUNPTVBMRVRFX1dJVEhfTElTVDQoIkFMTCIsICJQTEFOUyIsICJTRVFVRU5DRVMiLCAiVEVNUCIp OworCQlDT01QTEVURV9XSVRIX0xJU1Q1KCJBTEwiLCAiUExBTlMiLCAiU0VRVUVOQ0VTIiwgIlRF TVAiLCAiVkFSSUFCTEVTIik7CiAKIC8qIERPICovCiAJZWxzZSBpZiAoTWF0Y2hlczEoIkRPIikp CkBAIC0yOTkyLDYgKzMwMTcsMTIgQEAgcHNxbF9jb21wbGV0aW9uKGNvbnN0IGNoYXIgKnRleHQs IGludCBzdGFydCwgaW50IGVuZCkKIAllbHNlIGlmIChNYXRjaGVzNSgiRFJPUCIsICJSVUxFIiwg TWF0Y2hBbnksICJPTiIsIE1hdGNoQW55KSkKIAkJQ09NUExFVEVfV0lUSF9MSVNUMigiQ0FTQ0FE RSIsICJSRVNUUklDVCIpOwogCisJLyogRFJPUCBWQVJJQUJMRSAqLworCWVsc2UgaWYgKE1hdGNo ZXMyKCJEUk9QIiwgIlZBUklBQkxFIikpCisJCUNPTVBMRVRFX1dJVEhfU0NIRU1BX1FVRVJZKFF1 ZXJ5X2Zvcl9saXN0X29mX3ZhcmlhYmxlcywgTlVMTCk7CisJZWxzZSBpZiAoTWF0Y2hlczMoIkRS T1AiLCAiVkFSSUFCTEUiLCBNYXRjaEFueSkpCisJCUNPTVBMRVRFX1dJVEhfTElTVDIoIkNBU0NB REUiLCAiUkVTVFJJQ1QiKTsKKwogLyogRVhFQ1VURSAqLwogCWVsc2UgaWYgKE1hdGNoZXMxKCJF WEVDVVRFIikpCiAJCUNPTVBMRVRFX1dJVEhfUVVFUlkoUXVlcnlfZm9yX2xpc3Rfb2ZfcHJlcGFy ZWRfc3RhdGVtZW50cyk7CkBAIC0zMDAyLDE0ICszMDMzLDE0IEBAIHBzcWxfY29tcGxldGlvbihj b25zdCBjaGFyICp0ZXh0LCBpbnQgc3RhcnQsIGludCBlbmQpCiAJICogQ29tcGxldGUgRVhQTEFJ TiBbQU5BTFlaRV0gW1ZFUkJPU0VdIHdpdGggbGlzdCBvZiBFWFBMQUlOLWFibGUgY29tbWFuZHMK IAkgKi8KIAllbHNlIGlmIChNYXRjaGVzMSgiRVhQTEFJTiIpKQotCQlDT01QTEVURV9XSVRIX0xJ U1Q3KCJTRUxFQ1QiLCAiSU5TRVJUIiwgIkRFTEVURSIsICJVUERBVEUiLCAiREVDTEFSRSIsCi0J CQkJCQkJIkFOQUxZWkUiLCAiVkVSQk9TRSIpOworCQlDT01QTEVURV9XSVRIX0xJU1Q4KCJTRUxF Q1QiLCAiSU5TRVJUIiwgIkRFTEVURSIsICJVUERBVEUiLCAiREVDTEFSRSIsCisJCQkJCQkJIkFO QUxZWkUiLCAiVkVSQk9TRSIsICJMRVQiKTsKIAllbHNlIGlmIChNYXRjaGVzMigiRVhQTEFJTiIs ICJBTkFMWVpFIikpCi0JCUNPTVBMRVRFX1dJVEhfTElTVDYoIlNFTEVDVCIsICJJTlNFUlQiLCAi REVMRVRFIiwgIlVQREFURSIsICJERUNMQVJFIiwKLQkJCQkJCQkiVkVSQk9TRSIpOworCQlDT01Q TEVURV9XSVRIX0xJU1Q3KCJTRUxFQ1QiLCAiSU5TRVJUIiwgIkRFTEVURSIsICJVUERBVEUiLCAi REVDTEFSRSIsCisJCQkJCQkJIlZFUkJPU0UiLCAiTEVUIik7CiAJZWxzZSBpZiAoTWF0Y2hlczIo IkVYUExBSU4iLCAiVkVSQk9TRSIpIHx8CiAJCQkgTWF0Y2hlczMoIkVYUExBSU4iLCAiQU5BTFla RSIsICJWRVJCT1NFIikpCi0JCUNPTVBMRVRFX1dJVEhfTElTVDUoIlNFTEVDVCIsICJJTlNFUlQi LCAiREVMRVRFIiwgIlVQREFURSIsICJERUNMQVJFIik7CisJCUNPTVBMRVRFX1dJVEhfTElTVDYo IlNFTEVDVCIsICJJTlNFUlQiLCAiREVMRVRFIiwgIlVQREFURSIsICJERUNMQVJFIiwgIkxFVCIp OwogCiAvKiBGRVRDSCAmJiBNT1ZFICovCiAJLyogQ29tcGxldGUgRkVUQ0ggd2l0aCBvbmUgb2Yg Rk9SV0FSRCwgQkFDS1dBUkQsIFJFTEFUSVZFICovCkBAIC0zMTE4LDYgKzMxNDksNyBAQCBwc3Fs X2NvbXBsZXRpb24oY29uc3QgY2hhciAqdGV4dCwgaW50IHN0YXJ0LCBpbnQgZW5kKQogCQkJCQkJ CQkJICAgIiBVTklPTiBTRUxFQ1QgJ0FMTCBST1VUSU5FUyBJTiBTQ0hFTUEnIgogCQkJCQkJCQkJ ICAgIiBVTklPTiBTRUxFQ1QgJ0FMTCBTRVFVRU5DRVMgSU4gU0NIRU1BJyIKIAkJCQkJCQkJCSAg ICIgVU5JT04gU0VMRUNUICdBTEwgVEFCTEVTIElOIFNDSEVNQSciCisJCQkJCQkJCQkgICAiIFVO SU9OIFNFTEVDVCAnQUxMIFZBUklBQkxFUyBJTiBTQ0hFTUEnIgogCQkJCQkJCQkJICAgIiBVTklP TiBTRUxFQ1QgJ0RBVEFCQVNFJyIKIAkJCQkJCQkJCSAgICIgVU5JT04gU0VMRUNUICdET01BSU4n IgogCQkJCQkJCQkJICAgIiBVTklPTiBTRUxFQ1QgJ0ZPUkVJR04gREFUQSBXUkFQUEVSJyIKQEAg LTMxMzEsMTQgKzMxNjMsMTYgQEAgcHNxbF9jb21wbGV0aW9uKGNvbnN0IGNoYXIgKnRleHQsIGlu dCBzdGFydCwgaW50IGVuZCkKIAkJCQkJCQkJCSAgICIgVU5JT04gU0VMRUNUICdTRVFVRU5DRSci CiAJCQkJCQkJCQkgICAiIFVOSU9OIFNFTEVDVCAnVEFCTEUnIgogCQkJCQkJCQkJICAgIiBVTklP TiBTRUxFQ1QgJ1RBQkxFU1BBQ0UnIgotCQkJCQkJCQkJICAgIiBVTklPTiBTRUxFQ1QgJ1RZUEUn Iik7CisJCQkJCQkJCQkgICAiIFVOSU9OIFNFTEVDVCAnVFlQRSciCisJCQkJCQkJCQkgICAiIFVO SU9OIFNFTEVDVCAnVkFSSUFCTEUnIik7CiAJfQogCWVsc2UgaWYgKFRhaWxNYXRjaGVzNCgiR1JB TlR8UkVWT0tFIiwgTWF0Y2hBbnksICJPTiIsICJBTEwiKSkKLQkJQ09NUExFVEVfV0lUSF9MSVNU NSgiRlVOQ1RJT05TIElOIFNDSEVNQSIsCisJCUNPTVBMRVRFX1dJVEhfTElTVDYoIkZVTkNUSU9O UyBJTiBTQ0hFTUEiLAogCQkJCQkJCSJQUk9DRURVUkVTIElOIFNDSEVNQSIsCiAJCQkJCQkJIlJP VVRJTkVTIElOIFNDSEVNQSIsCiAJCQkJCQkJIlNFUVVFTkNFUyBJTiBTQ0hFTUEiLAotCQkJCQkJ CSJUQUJMRVMgSU4gU0NIRU1BIik7CisJCQkJCQkJIlRBQkxFUyBJTiBTQ0hFTUEiLAorCQkJCQkJ CSJWQVJJQUJMRVMgSU4gU0NIRU1BIik7CiAJZWxzZSBpZiAoVGFpbE1hdGNoZXM0KCJHUkFOVHxS RVZPS0UiLCBNYXRjaEFueSwgIk9OIiwgIkZPUkVJR04iKSkKIAkJQ09NUExFVEVfV0lUSF9MSVNU MigiREFUQSBXUkFQUEVSIiwgIlNFUlZFUiIpOwogCkBAIC0zMTcyLDYgKzMyMDYsOCBAQCBwc3Fs X2NvbXBsZXRpb24oY29uc3QgY2hhciAqdGV4dCwgaW50IHN0YXJ0LCBpbnQgZW5kKQogCQkJQ09N UExFVEVfV0lUSF9RVUVSWShRdWVyeV9mb3JfbGlzdF9vZl90YWJsZXNwYWNlcyk7CiAJCWVsc2Ug aWYgKFRhaWxNYXRjaGVzMSgiVFlQRSIpKQogCQkJQ09NUExFVEVfV0lUSF9TQ0hFTUFfUVVFUlko UXVlcnlfZm9yX2xpc3Rfb2ZfZGF0YXR5cGVzLCBOVUxMKTsKKwkJZWxzZSBpZiAoVGFpbE1hdGNo ZXMxKCJWQVJJQUJMRSIpKQorCQkJQ09NUExFVEVfV0lUSF9TQ0hFTUFfUVVFUlkoUXVlcnlfZm9y X2xpc3Rfb2ZfdmFyaWFibGVzLCBOVUxMKTsKIAkJZWxzZSBpZiAoVGFpbE1hdGNoZXM0KCJHUkFO VCIsIE1hdGNoQW55LCBNYXRjaEFueSwgTWF0Y2hBbnkpKQogCQkJQ09NUExFVEVfV0lUSF9DT05T VCgiVE8iKTsKIAkJZWxzZQpAQCAtMzMyNCw3ICszMzYwLDcgQEAgcHNxbF9jb21wbGV0aW9uKGNv bnN0IGNoYXIgKnRleHQsIGludCBzdGFydCwgaW50IGVuZCkKIAogLyogUFJFUEFSRSB4eCBBUyAq LwogCWVsc2UgaWYgKE1hdGNoZXMzKCJQUkVQQVJFIiwgTWF0Y2hBbnksICJBUyIpKQotCQlDT01Q TEVURV9XSVRIX0xJU1Q0KCJTRUxFQ1QiLCAiVVBEQVRFIiwgIklOU0VSVCIsICJERUxFVEUgRlJP TSIpOworCQlDT01QTEVURV9XSVRIX0xJU1Q1KCJTRUxFQ1QiLCAiVVBEQVRFIiwgIklOU0VSVCIs ICJERUxFVEUgRlJPTSIsICJMRVQiKTsKIAogLyoKICAqIFBSRVBBUkUgVFJBTlNBQ1RJT04gaXMg bWlzc2luZyBvbiBwdXJwb3NlLiBJdCdzIGludGVuZGVkIGZvciB0cmFuc2FjdGlvbgpAQCAtMzU0 Nyw2ICszNTgzLDE0IEBAIHBzcWxfY29tcGxldGlvbihjb25zdCBjaGFyICp0ZXh0LCBpbnQgc3Rh cnQsIGludCBlbmQpCiAJZWxzZSBpZiAoVGFpbE1hdGNoZXM0KCJVUERBVEUiLCBNYXRjaEFueSwg IlNFVCIsIE1hdGNoQW55KSkKIAkJQ09NUExFVEVfV0lUSF9DT05TVCgiPSIpOwogCisvKiBMRVQg LS0tIGNhbiBiZSBpbnNpZGUgRVhQTEFJTiwgUFJFUEFSRSBldGMgKi8KKwkvKiBJZiBwcmV2LiB3 b3JkIGlzIExFVCBzdWdnZXN0IGEgbGlzdCBvZiB2YXJpYWJsZXMgKi8KKwllbHNlIGlmIChUYWls TWF0Y2hlczEoIkxFVCIpKQorCQlDT01QTEVURV9XSVRIX1NDSEVNQV9RVUVSWShRdWVyeV9mb3Jf bGlzdF9vZl92YXJpYWJsZXMsIE5VTEwpOworCS8qIENvbXBsZXRlIExFVCA8dmFyaWFibGU+IHdp dGggIj0iICovCisJZWxzZSBpZiAoVGFpbE1hdGNoZXMyKCJMRVQiLCBNYXRjaEFueSkpCisJCUNP TVBMRVRFX1dJVEhfQ09OU1QoIj0iKTsKKwogLyogVVNFUiBNQVBQSU5HICovCiAJZWxzZSBpZiAo TWF0Y2hlczMoIkFMVEVSfENSRUFURXxEUk9QIiwgIlVTRVIiLCAiTUFQUElORyIpKQogCQlDT01Q TEVURV9XSVRIX0NPTlNUKCJGT1IiKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cv ZGVwZW5kZW5jeS5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9kZXBlbmRlbmN5LmgKaW5kZXggNDZj MjcxYTQ2Yy4uM2UzOGEwNWU1NSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9kZXBl bmRlbmN5LmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9kZXBlbmRlbmN5LmgKQEAgLTE4MCw3 ICsxODAsOCBAQCB0eXBlZGVmIGVudW0gT2JqZWN0Q2xhc3MKIAlPQ0xBU1NfUFVCTElDQVRJT04s CQkJLyogcGdfcHVibGljYXRpb24gKi8KIAlPQ0xBU1NfUFVCTElDQVRJT05fUkVMLAkJLyogcGdf cHVibGljYXRpb25fcmVsICovCiAJT0NMQVNTX1NVQlNDUklQVElPTiwJCS8qIHBnX3N1YnNjcmlw dGlvbiAqLwotCU9DTEFTU19UUkFOU0ZPUk0JCQkvKiBwZ190cmFuc2Zvcm0gKi8KKwlPQ0xBU1Nf VFJBTlNGT1JNLAkJCS8qIHBnX3RyYW5zZm9ybSAqLworCU9DTEFTU19WQVJJQUJMRQkJCQkvKiBw Z192YXJpYWJsZSAqLwogfSBPYmplY3RDbGFzczsKIAogI2RlZmluZSBMQVNUX09DTEFTUwkJT0NM QVNTX1RSQU5TRk9STQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleGluZy5o IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleGluZy5oCmluZGV4IDI0OTE1ODI0Y2EuLmRhZTgw YzIwYTggMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXhpbmcuaAorKysgYi9z cmMvaW5jbHVkZS9jYXRhbG9nL2luZGV4aW5nLmgKQEAgLTM2MCw0ICszNjAsMTAgQEAgREVDTEFS RV9VTklRVUVfSU5ERVgocGdfc3Vic2NyaXB0aW9uX3N1Ym5hbWVfaW5kZXgsIDYxMTUsIG9uIHBn X3N1YnNjcmlwdGlvbiB1c2kKIERFQ0xBUkVfVU5JUVVFX0lOREVYKHBnX3N1YnNjcmlwdGlvbl9y ZWxfc3JyZWxpZF9zcnN1YmlkX2luZGV4LCA2MTE3LCBvbiBwZ19zdWJzY3JpcHRpb25fcmVsIHVz aW5nIGJ0cmVlKHNycmVsaWQgb2lkX29wcywgc3JzdWJpZCBvaWRfb3BzKSk7CiAjZGVmaW5lIFN1 YnNjcmlwdGlvblJlbFNycmVsaWRTcnN1YmlkSW5kZXhJZCA2MTE3CiAKK0RFQ0xBUkVfVU5JUVVF X0lOREVYKHBnX3ZhcmlhYmxlX29pZF9pbmRleCwgNDI4OCwgb24gcGdfdmFyaWFibGUgdXNpbmcg YnRyZWUob2lkIG9pZF9vcHMpKTsKKyNkZWZpbmUgVmFyaWFibGVPYmplY3RJbmRleElkIDQyODgK KworREVDTEFSRV9VTklRVUVfSU5ERVgocGdfdmFyaWFibGVfdmFybmFtZV9uc3BfaW5kZXgsIDQy ODksIG9uIHBnX3ZhcmlhYmxlIHVzaW5nIGJ0cmVlKHZhcm5hbWUgbmFtZV9vcHMsIHZhcm5hbWVz cGFjZSBvaWRfb3BzKSk7CisjZGVmaW5lIFZhcmlhYmxlTmFtZU5zcEluZGV4SWQgIDQyODkKKwog I2VuZGlmCQkJCQkJCS8qIElOREVYSU5HX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2Nh dGFsb2cvbmFtZXNwYWNlLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL25hbWVzcGFjZS5oCmluZGV4 IDc5OTFkZTVlMjEuLjc1MDY4ZDdlOTIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cv bmFtZXNwYWNlLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9uYW1lc3BhY2UuaApAQCAtNzUs MTAgKzc1LDEzIEBAIGV4dGVybiBPaWQgUmFuZ2VWYXJHZXRBbmRDaGVja0NyZWF0aW9uTmFtZXNw YWNlKFJhbmdlVmFyICpuZXdSZWxhdGlvbiwKIGV4dGVybiB2b2lkIFJhbmdlVmFyQWRqdXN0UmVs YXRpb25QZXJzaXN0ZW5jZShSYW5nZVZhciAqbmV3UmVsYXRpb24sIE9pZCBuc3BpZCk7CiBleHRl cm4gT2lkCVJlbG5hbWVHZXRSZWxpZChjb25zdCBjaGFyICpyZWxuYW1lKTsKIGV4dGVybiBib29s IFJlbGF0aW9uSXNWaXNpYmxlKE9pZCByZWxpZCk7CitleHRlcm4gYm9vbCBWYXJpYWJsZUlzVmlz aWJsZShPaWQgcmVsaWQpOwogCiBleHRlcm4gT2lkCVR5cGVuYW1lR2V0VHlwaWQoY29uc3QgY2hh ciAqdHlwbmFtZSk7CiBleHRlcm4gYm9vbCBUeXBlSXNWaXNpYmxlKE9pZCB0eXBpZCk7CiAKK2V4 dGVybiBib29sIFZhcmlhYmxlSXNWaXNpYmxlKE9pZCB2YXJpZCk7CisKIGV4dGVybiBGdW5jQ2Fu ZGlkYXRlTGlzdCBGdW5jbmFtZUdldENhbmRpZGF0ZXMoTGlzdCAqbmFtZXMsCiAJCQkJCSAgaW50 IG5hcmdzLCBMaXN0ICphcmduYW1lcywKIAkJCQkJICBib29sIGV4cGFuZF92YXJpYWRpYywKQEAg LTE0NSw2ICsxNDgsMTAgQEAgZXh0ZXJuIHZvaWQgU2V0VGVtcE5hbWVzcGFjZVN0YXRlKE9pZCB0 ZW1wTmFtZXNwYWNlSWQsCiAJCQkJCSAgT2lkIHRlbXBUb2FzdE5hbWVzcGFjZUlkKTsKIGV4dGVy biB2b2lkIFJlc2V0VGVtcFRhYmxlTmFtZXNwYWNlKHZvaWQpOwogCitleHRlcm4gTGlzdCAqTmFt ZXNGcm9tTGlzdChMaXN0ICpuYW1lcyk7CitleHRlcm4gT2lkIGxvb2t1cF92YXJpYWJsZShjb25z dCBjaGFyICpuc3BuYW1lLCBjb25zdCBjaGFyICp2YXJuYW1lLCBib29sIG1pc3Npbmdfb2spOwor ZXh0ZXJuIE9pZCBpZGVudGlmeV92YXJpYWJsZShMaXN0ICpuYW1lcywgY2hhciAqKmF0dHJuYW1l LCBib29sICpub3RfdW5pcSk7CisKIGV4dGVybiBPdmVycmlkZVNlYXJjaFBhdGggKkdldE92ZXJy aWRlU2VhcmNoUGF0aChNZW1vcnlDb250ZXh0IGNvbnRleHQpOwogZXh0ZXJuIE92ZXJyaWRlU2Vh cmNoUGF0aCAqQ29weU92ZXJyaWRlU2VhcmNoUGF0aChPdmVycmlkZVNlYXJjaFBhdGggKnBhdGgp OwogZXh0ZXJuIGJvb2wgT3ZlcnJpZGVTZWFyY2hQYXRoTWF0Y2hlc0N1cnJlbnQoT3ZlcnJpZGVT ZWFyY2hQYXRoICpwYXRoKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfZGVm YXVsdF9hY2wuaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfZGVmYXVsdF9hY2wuaAppbmRleCBk MDQxMGY1NTg2Li41NmRlZWYxYTQ1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X2RlZmF1bHRfYWNsLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19kZWZhdWx0X2FjbC5o CkBAIC01Nyw2ICs1Nyw3IEBAIHR5cGVkZWYgRm9ybURhdGFfcGdfZGVmYXVsdF9hY2wgKkZvcm1f cGdfZGVmYXVsdF9hY2w7CiAjZGVmaW5lIERFRkFDTE9CSl9GVU5DVElPTgkJJ2YnIC8qIGZ1bmN0 aW9uICovCiAjZGVmaW5lIERFRkFDTE9CSl9UWVBFCQkJJ1QnIC8qIHR5cGUgKi8KICNkZWZpbmUg REVGQUNMT0JKX05BTUVTUEFDRQkJJ24nIC8qIG5hbWVzcGFjZSAqLworI2RlZmluZSBERUZBQ0xP QkpfVkFSSUFCTEUJCSdWJyAvKiB2YXJpYWJsZSAqLwogCiAjZW5kaWYJCQkJCQkJLyogRVhQT1NF X1RPX0NMSUVOVF9DT0RFICovCiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdf cHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CmluZGV4IGExNDY1MTAx MGYuLjYxY2JlNjU4MDUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5k YXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdApAQCAtNTk2MSw2ICs1OTYx LDkgQEAKICAgcHJvbmFtZSA9PiAncGdfY29sbGF0aW9uX2lzX3Zpc2libGUnLCBwcm9jb3N0ID0+ ICcxMCcsIHByb3ZvbGF0aWxlID0+ICdzJywKICAgcHJvcmV0dHlwZSA9PiAnYm9vbCcsIHByb2Fy Z3R5cGVzID0+ICdvaWQnLAogICBwcm9zcmMgPT4gJ3BnX2NvbGxhdGlvbl9pc192aXNpYmxlJyB9 LAoreyBvaWQgPT4gJzQxODcnLCBkZXNjciA9PiAnaXMgc2NoZW1hIHZhcmlhYmxlIHZpc2libGUg aW4gc2VhcmNoIHBhdGg/JywKKyAgcHJvbmFtZSA9PiAncGdfdmFyaWFibGVfaXNfdmlzaWJsZScs IHByb2Nvc3QgPT4gJzEwJywgcHJvdm9sYXRpbGUgPT4gJ3MnLAorICBwcm9yZXR0eXBlID0+ICdi b29sJywgcHJvYXJndHlwZXMgPT4gJ29pZCcsIHByb3NyYyA9PiAncGdfdmFyaWFibGVfaXNfdmlz aWJsZScgfSwKIAogeyBvaWQgPT4gJzI4NTQnLCBkZXNjciA9PiAnZ2V0IE9JRCBvZiBjdXJyZW50 IHNlc3Npb25cJ3MgdGVtcCBzY2hlbWEsIGlmIGFueScsCiAgIHByb25hbWUgPT4gJ3BnX215X3Rl bXBfc2NoZW1hJywgcHJvdm9sYXRpbGUgPT4gJ3MnLCBwcm9wYXJhbGxlbCA9PiAncicsCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3ZhcmlhYmxlLmggYi9zcmMvaW5jbHVkZS9j YXRhbG9nL3BnX3ZhcmlhYmxlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MC4uMzRmNGMzNDIwMgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdf dmFyaWFibGUuaApAQCAtMCwwICsxLDg1IEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBw Z192YXJpYWJsZS5oCisgKgkgIGRlZmluaXRpb24gb2Ygc2NoZW1hIHZhcmlhYmxlcyBzeXN0ZW0g Y2F0YWxvZyAocGdfdmFyaWFibGVzKQorICoKKyAqCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMp IDE5OTYtMjAxOCwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqIFBvcnRp b25zIENvcHlyaWdodCAoYykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxp Zm9ybmlhCisgKgorICogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ192YXJpYWJsZS5oCisgKgorICog Tk9URVMKKyAqCSAgVGhlIENhdGFsb2cucG0gbW9kdWxlIHJlYWRzIHRoaXMgZmlsZSBhbmQgZGVy aXZlcyBzY2hlbWEKKyAqCSAgaW5mb3JtYXRpb24uCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg Ki8KKyNpZm5kZWYgUEdfVkFSSUFCTEVfSAorI2RlZmluZSBQR19WQVJJQUJMRV9ICisKKyNpbmNs dWRlICJjYXRhbG9nL2dlbmJraS5oIgorI2luY2x1ZGUgImNhdGFsb2cvb2JqZWN0YWRkcmVzcy5o IgorI2luY2x1ZGUgImNhdGFsb2cvcGdfdmFyaWFibGVfZC5oIgorI2luY2x1ZGUgInV0aWxzL2Fj bC5oIgorCisvKiAtLS0tLS0tLS0tLS0tLS0tCisgKgkJcGdfdmFyaWFibGUgZGVmaW5pdGlvbi4g IGNwcCB0dXJucyB0aGlzIGludG8KKyAqCQl0eXBlZGVmIHN0cnVjdCBGb3JtRGF0YV9wZ192YXJp YWJsZQorICogLS0tLS0tLS0tLS0tLS0tLQorICovCitDQVRBTE9HKHBnX3ZhcmlhYmxlLDQyODcs VmFyaWFibGVSZWxhdGlvbklkKQoreworCU5hbWVEYXRhCXZhcm5hbWU7CQkvKiB2YXJpYWJsZSBu YW1lICovCisJT2lkCQkJdmFybmFtZXNwYWNlOwkvKiBPSUQgb2YgbmFtZXNwYWNlIGNvbnRhaW5p bmcgdmFyaWFibGUgY2xhc3MgKi8KKwlPaWQJCQl2YXJ0eXBlOwkJLyogT0lEIG9mIGVudHJ5IGlu IHBnX3R5cGUgZm9yIHZhcmlhYmxlJ3MgdHlwZSAqLworCWludDMyCQl2YXJ0eXBtb2Q7CQkJLyog dHlwbW9kZSBmb3IgdmFyaWFibGUncyB0eXBlICovCisJT2lkCQkJdmFyb3duZXI7CQkvKiBjbGFz cyBvd25lciAqLworCisjaWZkZWYgQ0FUQUxPR19WQVJMRU4JCQkvKiB2YXJpYWJsZS1sZW5ndGgg ZmllbGRzIHN0YXJ0IGhlcmUgKi8KKworCS8qIGxpc3Qgb2YgZXhwcmVzc2lvbiB0cmVlcyBmb3Ig dmFyaWFibGUgZGVmYXVsdCAoTlVMTCBpZiBub25lKSAqLworCXBnX25vZGVfdHJlZSB2YXJkZWZl eHByIEJLSV9ERUZBVUxUKF9udWxsXyk7CisKKwlhY2xpdGVtCQl2YXJhY2xbMV0gQktJX0RFRkFV TFQoX251bGxfKTsJCS8qIGFjY2VzcyBwZXJtaXNzaW9ucyAqLworCisjZW5kaWYKK30gRm9ybURh dGFfcGdfdmFyaWFibGU7CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0KKyAqCQlGb3JtX3BnX3Zhcmlh YmxlIGNvcnJlc3BvbmRzIHRvIGEgcG9pbnRlciB0byBhIHR1cGxlIHdpdGgKKyAqCQl0aGUgZm9y bWF0IG9mIHBnX3ZhcmlhYmxlIHJlbGF0aW9uLgorICogLS0tLS0tLS0tLS0tLS0tLQorICovCit0 eXBlZGVmIEZvcm1EYXRhX3BnX3ZhcmlhYmxlICpGb3JtX3BnX3ZhcmlhYmxlOworCit0eXBlZGVm IHN0cnVjdCBWYXJpYWJsZQoreworCU9pZAkJb2lkOworCWNoYXIgICAqbmFtZTsKKwlPaWQJCW5h bWVzcGFjZTsKKwlPaWQJCXR5cGlkOworCWludDMyCXR5cG1vZDsKKwlPaWQJCW93bmVyOworCU5v ZGUgICAqZGVmZXhwcjsKKwlBY2wJICAgKmFjbDsKK30gVmFyaWFibGU7CisKKy8qIHJldHVybnMg ZmllbGRzIGZyb20gcGdfdmFyaWFibGUgdGFibGUgKi8KK2V4dGVybiBjaGFyICpnZXRfc2NoZW1h X3ZhcmlhYmxlX25hbWUoT2lkIHZhcmlkKTsKK2V4dGVybiB2b2lkIGdldF9zY2hlbWFfdmFyaWFi bGVfdHlwZV90eXBtb2QoT2lkIHZhcmlkLCBPaWQgKnR5cGlkLCBpbnQzMiAqdHlwbW9kKTsKKwor LyogcmV0dXJucyBuYW1lIG9mIHZhcmlhYmxlIGJhc2VkIG9uIGN1cnJlbnQgc2VhcmNoIHBhdGgg Ki8KK2V4dGVybiBjaGFyICpzY2hlbWFfdmFyaWFibGVfZ2V0X25hbWUoT2lkIHZhcmlkKTsKKwor ZXh0ZXJuIFZhcmlhYmxlICpHZXRWYXJpYWJsZShPaWQgdmFyaWQsIGJvb2wgbWlzc2luZ19vayk7 CitleHRlcm4gT2JqZWN0QWRkcmVzcyBWYXJpYWJsZUNyZWF0ZShjb25zdCBjaGFyICp2YXJOYW1l LAorCQkJCQkJCQkJICAgT2lkIHZhck5hbWVzcGFjZSwKKwkJCQkJCQkJCSAgIE9pZCB2YXJUeXBl LAorCQkJCQkJCQkJICAgaW50MzIgdmFyVHlwbW9kLAorCQkJCQkJCQkJICAgT2lkIHZhck93bmVy LAorCQkJCQkJCQkJICAgTm9kZSAqdmFyRGVmZXhwciwKKwkJCQkJCQkJCSAgIGJvb2wgaWZfbm90 X2V4aXN0cyk7CisKKworI2VuZGlmCQkJCQkJCS8qIFBHX1ZBUklBQkxFX0ggKi8KZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3NjaGVtYXZhcmlhYmxlLmggYi9zcmMvaW5jbHVkZS9j b21tYW5kcy9zY2hlbWF2YXJpYWJsZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAuLmRkMzIzOWIyMzYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5k cy9zY2hlbWF2YXJpYWJsZS5oCkBAIC0wLDAgKzEsMzcgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor ICoKKyAqIHNjaGVtYXZhcmlhYmxlLmgKKyAqCSAgcHJvdG90eXBlcyBmb3Igc2NoZW1hdmFyaWFi bGUuYy4KKyAqCisgKgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMTgsIFBvc3Rn cmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMp IDE5OTQsIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQorICoKKyAqIHNy Yy9pbmNsdWRlL2NvbW1hbmRzL3NjaGVtYXZhcmlhYmxlLmgKKyAqCisgKi0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAqLworCisjaWZuZGVmIFNDSEVNQVZBUklBQkxFX0gKKyNkZWZpbmUgU0NIRU1BVkFSSUFC TEVfSAorCisjaW5jbHVkZSAiY2F0YWxvZy9vYmplY3RhZGRyZXNzLmgiCisjaW5jbHVkZSAiY2F0 YWxvZy9wZ192YXJpYWJsZS5oIgorI2luY2x1ZGUgIm5vZGVzL3BhcmFtcy5oIgorI2luY2x1ZGUg Im5vZGVzL3BhcnNlbm9kZXMuaCIKKyNpbmNsdWRlICJub2Rlcy9wbGFubm9kZXMuaCIKKyNpbmNs dWRlICJ1dGlscy9xdWVyeWVudmlyb25tZW50LmgiCisKK2V4dGVybiBjaGFyICpWYXJpYWJsZUdl dE5hbWUoVmFyaWFibGUgKnZhcik7CisKK2V4dGVybiB2b2lkIFJlc2V0U2NoZW1hVmFyaWFibGVD YWNoZSh2b2lkKTsKKworZXh0ZXJuIHZvaWQgUmVtb3ZlVmFyaWFibGVCeUlkKE9pZCB2YXJpZCk7 CitleHRlcm4gT2JqZWN0QWRkcmVzcyBEZWZpbmVTY2hlbWFWYXJpYWJsZShQYXJzZVN0YXRlICpw c3RhdGUsIENyZWF0ZVNjaGVtYVZhclN0bXQgKnN0bXQpOworCitleHRlcm4gRGF0dW0gR2V0U2No ZW1hVmFyaWFibGUoT2lkIHZhcmlkLCBib29sICppc051bGwsIE9pZCBleHBlY3RlZF90eXBpZCk7 CitleHRlcm4gdm9pZCBTZXRTY2hlbWFWYXJpYWJsZShPaWQgdmFyaWQsIERhdHVtIHZhbHVlLCBi b29sIGlzTnVsbCwgT2lkIHR5cGlkLCBpbnQzMiB0eXBtb2QpOworCitleHRlcm4gdm9pZCBkb0xl dFN0bXQoUGxhbm5lZFN0bXQgKnBzdG10LCBQYXJhbUxpc3RJbmZvIHBhcmFtcywgUXVlcnlFbnZp cm9ubWVudCAqcXVlcnlFbnYsIGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5nKTsKKworI2VuZGlmCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjRXhwci5oIGIvc3JjL2luY2x1ZGUv ZXhlY3V0b3IvZXhlY0V4cHIuaAppbmRleCBmN2IxZjc3NjE2Li5jY2EzMGYyNzViIDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjRXhwci5oCisrKyBiL3NyYy9pbmNsdWRlL2V4 ZWN1dG9yL2V4ZWNFeHByLmgKQEAgLTEzOCw2ICsxMzgsNyBAQCB0eXBlZGVmIGVudW0gRXhwckV2 YWxPcAogCUVFT1BfUEFSQU1fRVhFQywKIAlFRU9QX1BBUkFNX0VYVEVSTiwKIAlFRU9QX1BBUkFN X0NBTExCQUNLLAorCUVFT1BfUEFSQU1fVkFSSUFCTEUsCiAKIAkvKiByZXR1cm4gQ2FzZVRlc3RF eHByIHZhbHVlICovCiAJRUVPUF9DQVNFX1RFU1RWQUwsCkBAIC0zNDQsMTEgKzM0NSwxMSBAQCB0 eXBlZGVmIHN0cnVjdCBFeHByRXZhbFN0ZXAKIAkJCVR1cGxlRGVzYwlhcmdkZXNjOwogCQl9CQkJ bnVsbHRlc3Rfcm93OwogCi0JCS8qIGZvciBFRU9QX1BBUkFNX0VYRUMvRVhURVJOICovCisJCS8q IGZvciBFRU9QX1BBUkFNX0VYRUMvRVhURVJOL1ZBUklBQkxFICovCiAJCXN0cnVjdAogCQl7Ci0J CQlpbnQJCQlwYXJhbWlkOwkvKiBudW1lcmljIElEIGZvciBwYXJhbWV0ZXIgKi8KLQkJCU9pZAkJ CXBhcmFtdHlwZTsJLyogT0lEIG9mIHBhcmFtZXRlcidzIGRhdGF0eXBlICovCisJCQlpbnQJCQlw YXJhbWlkOwkJLyogbnVtZXJpYyBJRCBmb3IgcGFyYW1ldGVyICovCisJCQlPaWQJCQlwYXJhbXR5 cGU7CQkvKiBPSUQgb2YgcGFyYW1ldGVyJ3MgZGF0YXR5cGUgKi8KIAkJfQkJCXBhcmFtOwogCiAJ CS8qIGZvciBFRU9QX1BBUkFNX0NBTExCQUNLICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9l eGVjdXRvci9zdmFyaWFibGVSZWNlaXZlci5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3Ivc3Zhcmlh YmxlUmVjZWl2ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi44Yzgx MTc3MDFmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3Ivc3ZhcmlhYmxl UmVjZWl2ZXIuaApAQCAtMCwwICsxLDI1IEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBz dmFyaWFibGVSZWNlaXZlci5oCisgKgkgIHByb3RvdHlwZXMgZm9yIHN2YXJpYWJsZVJlY2VpdmVy LmMKKyAqCisgKgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMTgsIFBvc3RncmVT UUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5 OTQsIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQorICoKKyAqIHNyYy9p bmNsdWRlL2V4ZWN1dG9yL3N2YXJpYWJsZVJlY2VpdmVyLmgKKyAqCisgKi0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAqLworCisjaWZuZGVmIFNWQVJJQUJMRV9SRUNFSVZFUl9ICisjZGVmaW5lIFNWQVJJQUJM RV9SRUNFSVZFUl9ICisKKyNpbmNsdWRlICJ0Y29wL2Rlc3QuaCIKKworCitleHRlcm4gRGVzdFJl Y2VpdmVyICpDcmVhdGVWYXJpYWJsZURlc3RSZWNlaXZlcih2b2lkKTsKKworZXh0ZXJuIHZvaWQg U2V0VmFyaWFibGVEZXN0UmVjZWl2ZXJQYXJhbXMoRGVzdFJlY2VpdmVyICpzZWxmLCBPaWQgdmFy aWQpOworCisjZW5kaWYJCQkJCQkJLyogU1ZBUklBQkxFX1JFQ0VJVkVSX0ggKi8KZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhl Y25vZGVzLmgKaW5kZXggMDE4ZjUwYmJiNy4uMDhiNGIyYzJmMiAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVz LmgKQEAgLTU2NCw2ICs1NjQsOCBAQCB0eXBlZGVmIHN0cnVjdCBFU3RhdGUKIAkvKiBUaGUgcGVy LXF1ZXJ5IHNoYXJlZCBtZW1vcnkgYXJlYSB0byB1c2UgZm9yIHBhcmFsbGVsIGV4ZWN1dGlvbi4g Ki8KIAlzdHJ1Y3QgZHNhX2FyZWEgKmVzX3F1ZXJ5X2RzYTsKIAorCWludAkJCWVzX3Jlc3VsdF92 YXJpYWJsZTsJLyogT2lkIG9mIHRhcmdldCB2YXJpYWJsZSAqLworCiAJLyoKIAkgKiBKSVQgaW5m b3JtYXRpb24uIGVzX2ppdF9mbGFncyBpbmRpY2F0ZXMgd2hldGhlciBKSVQgc2hvdWxkIGJlIHBl cmZvcm1lZAogCSAqIGFuZCB3aXRoIHdoaWNoIG9wdGlvbnMuICBlc19qaXQgaXMgY3JlYXRlZCBv bi1kZW1hbmQgd2hlbiBKSVRpbmcgaXMKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL25v ZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9ub2Rlcy5oCmluZGV4IDY5N2QzZDdhNWYuLmRkN2Zk OGVkNDIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL25vZGVzLmgKKysrIGIvc3JjL2lu Y2x1ZGUvbm9kZXMvbm9kZXMuaApAQCAtMzQ4LDYgKzM0OCw3IEBAIHR5cGVkZWYgZW51bSBOb2Rl VGFnCiAJVF9DcmVhdGVUYWJsZUFzU3RtdCwKIAlUX0NyZWF0ZVNlcVN0bXQsCiAJVF9BbHRlclNl cVN0bXQsCisJVF9DcmVhdGVTY2hlbWFWYXJTdG10LAogCVRfVmFyaWFibGVTZXRTdG10LAogCVRf VmFyaWFibGVTaG93U3RtdCwKIAlUX0Rpc2NhcmRTdG10LApAQCAtNDE5LDYgKzQyMCw3IEBAIHR5 cGVkZWYgZW51bSBOb2RlVGFnCiAJVF9DcmVhdGVTdGF0c1N0bXQsCiAJVF9BbHRlckNvbGxhdGlv blN0bXQsCiAJVF9DYWxsU3RtdCwKKwlUX0xldFN0bXQsCiAKIAkvKgogCSAqIFRBR1MgRk9SIFBB UlNFIFRSRUUgTk9ERVMgKHBhcnNlbm9kZXMuaCkKQEAgLTY2Myw2ICs2NjUsNyBAQCB0eXBlZGVm IGVudW0gQ21kVHlwZQogCUNNRF9ERUxFVEUsCiAJQ01EX1VUSUxJVFksCQkJCS8qIGNtZHMgbGlr ZSBjcmVhdGUsIGRlc3Ryb3ksIGNvcHksIHZhY3V1bSwKIAkJCQkJCQkJICogZXRjLiAqLworCUNN RF9QTEFOX1VUSUxJVFksCQkJLyogb25seSBsZXQgc3RtdCBub3csIHJlcXVpcmVzIHBsYW5uaW5n ICovCiAJQ01EX05PVEhJTkcJCQkJCS8qIGR1bW15IGNvbW1hbmQgZm9yIGluc3RlYWQgbm90aGlu ZyBydWxlcwogCQkJCQkJCQkgKiB3aXRoIHF1YWwgKi8KIH0gQ21kVHlwZTsKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNl bm9kZXMuaAppbmRleCAwN2FiMWEzZGRlLi4yZDRhM2NiMWI2IDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rl cy5oCkBAIC04NCw3ICs4NCw5IEBAIHR5cGVkZWYgdWludDMyIEFjbE1vZGU7CQkJLyogYSBiaXRt YXNrIG9mIHByaXZpbGVnZSBiaXRzICovCiAjZGVmaW5lIEFDTF9DUkVBVEUJCSgxPDw5KQkvKiBm b3IgbmFtZXNwYWNlcyBhbmQgZGF0YWJhc2VzICovCiAjZGVmaW5lIEFDTF9DUkVBVEVfVEVNUCAo MTw8MTApIC8qIGZvciBkYXRhYmFzZXMgKi8KICNkZWZpbmUgQUNMX0NPTk5FQ1QJCSgxPDwxMSkg LyogZm9yIGRhdGFiYXNlcyAqLwotI2RlZmluZSBOX0FDTF9SSUdIVFMJMTIJCS8qIDEgcGx1cyB0 aGUgbGFzdCAxPDx4ICovCisjZGVmaW5lIEFDTF9SRUFECQkoMTw8MTIpIC8qIGZvciB2YXJpYWJs ZXMgKi8KKyNkZWZpbmUgQUNMX1dSSVRFCQkoMTw8MTMpIC8qIGZvciB2YXJpYWJsZXMgKi8KKyNk ZWZpbmUgTl9BQ0xfUklHSFRTCTE0CQkvKiAxIHBsdXMgdGhlIGxhc3QgMTw8eCAqLwogI2RlZmlu ZSBBQ0xfTk9fUklHSFRTCTAKIC8qIEN1cnJlbnRseSwgU0VMRUNUIC4uLiBGT1IgW0tFWV0gVVBE QVRFL1NIQVJFIHJlcXVpcmVzIFVQREFURSBwcml2aWxlZ2VzICovCiAjZGVmaW5lIEFDTF9TRUxF Q1RfRk9SX1VQREFURQlBQ0xfVVBEQVRFCkBAIC0xMjEsNiArMTIzLDcgQEAgdHlwZWRlZiBzdHJ1 Y3QgUXVlcnkKIAogCWludAkJCXJlc3VsdFJlbGF0aW9uOyAvKiBydGFibGUgaW5kZXggb2YgdGFy Z2V0IHJlbGF0aW9uIGZvcgogCQkJCQkJCQkgKiBJTlNFUlQvVVBEQVRFL0RFTEVURTsgMCBmb3Ig U0VMRUNUICovCisJaW50CQkJcmVzdWx0VmFyaWFibGU7CS8qIE9pZCBvZiB0YXJnZXQgdmFyaWFi bGUgb3IgMCAqLwogCiAJYm9vbAkJaGFzQWdnczsJCS8qIGhhcyBhZ2dyZWdhdGVzIGluIHRsaXN0 IG9yIGhhdmluZ1F1YWwgKi8KIAlib29sCQloYXNXaW5kb3dGdW5jczsgLyogaGFzIHdpbmRvdyBm dW5jdGlvbnMgaW4gdGxpc3QgKi8KQEAgLTE1MDUsNiArMTUwOCwxOCBAQCB0eXBlZGVmIHN0cnVj dCBVcGRhdGVTdG10CiAJV2l0aENsYXVzZSAqd2l0aENsYXVzZTsJCS8qIFdJVEggY2xhdXNlICov CiB9IFVwZGF0ZVN0bXQ7CiAKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCQlMZXQgU3Rh dGVtZW50CisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KK3R5cGVkZWYgc3RydWN0IExl dFN0bXQKK3sKKwlOb2RlVGFnCQl0eXBlOworCUxpc3QJICAgKnRhcmdldDsJCQkvKiB0YXJnZXQg dmFyaWFibGUgKi8KKwlOb2RlCSAgICpzZWxlY3RTdG10OwkJLyogc291cmNlIGV4cHJlc3Npb24g Ki8KKwlpbnQJCQlsb2NhdGlvbjsKK30gTGV0U3RtdDsKKwogLyogLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQogICoJCVNlbGVjdCBTdGF0ZW1lbnQKICAqCkBAIC0xNjgyLDYgKzE2OTcsNyBAQCB0eXBl ZGVmIGVudW0gT2JqZWN0VHlwZQogCU9CSkVDVF9UU1RFTVBMQVRFLAogCU9CSkVDVF9UWVBFLAog CU9CSkVDVF9VU0VSX01BUFBJTkcsCisJT0JKRUNUX1ZBUklBQkxFLAogCU9CSkVDVF9WSUVXCiB9 IE9iamVjdFR5cGU7CiAKQEAgLTI0OTcsNiArMjUxMywxOSBAQCB0eXBlZGVmIHN0cnVjdCBBbHRl clNlcVN0bXQKIAlib29sCQltaXNzaW5nX29rOwkJLyogc2tpcCBlcnJvciBpZiBhIHJvbGUgaXMg bWlzc2luZz8gKi8KIH0gQWx0ZXJTZXFTdG10OwogCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgKgkJe0NyZWF0ZXxBbHRlcn0gVkFSSUFCTEUgU3RhdGVtZW50CisgKiAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgKi8KK3R5cGVkZWYgc3RydWN0IENyZWF0ZVNjaGVtYVZhclN0bXQKK3sKKwlO b2RlVGFnCQl0eXBlOworCVJhbmdlVmFyICAgKnZhcmlhYmxlOwkJLyogdGhlIHZhcmlhYmxlIHRv IGNyZWF0ZSAqLworCVR5cGVOYW1lICAgKnR5cGVOYW1lOwkJLyogdGhlIHR5cGUgb2YgdmFyaWFi bGUgKi8KKwlOb2RlCSAgICpkZWZleHByOwkJLyogZGVmYXVsdCBleHByZXNzaW9uICovCisJYm9v bAkJaWZfbm90X2V4aXN0czsJLyogZG8gbm90aGluZyBpZiBpdCBhbHJlYWR5IGV4aXN0cyAqLwor fSBDcmVhdGVTY2hlbWFWYXJTdG10OworCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgkJ Q3JlYXRlIHtBZ2dyZWdhdGV8T3BlcmF0b3J8VHlwZX0gU3RhdGVtZW50CiAgKiAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tCkBAIC0zMjM4LDcgKzMyNjcsOCBAQCB0eXBlZGVmIGVudW0gRGlzY2FyZE1v ZGUKIAlESVNDQVJEX0FMTCwKIAlESVNDQVJEX1BMQU5TLAogCURJU0NBUkRfU0VRVUVOQ0VTLAot CURJU0NBUkRfVEVNUAorCURJU0NBUkRfVEVNUCwKKwlESVNDQVJEX1ZBUklBQkxFUwogfSBEaXNj YXJkTW9kZTsKIAogdHlwZWRlZiBzdHJ1Y3QgRGlzY2FyZFN0bXQKZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgK aW5kZXggN2MyYWJiZDAzYS4uMjU4OGYxNDU1ZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9k ZXMvcGxhbm5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgKQEAgLTQz LDcgKzQzLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUGxhbm5lZFN0bXQKIHsKIAlOb2RlVGFnCQl0eXBl OwogCi0JQ21kVHlwZQkJY29tbWFuZFR5cGU7CS8qIHNlbGVjdHxpbnNlcnR8dXBkYXRlfGRlbGV0 ZXx1dGlsaXR5ICovCisJQ21kVHlwZQkJY29tbWFuZFR5cGU7CS8qIHNlbGVjdHxsZXR8aW5zZXJ0 fHVwZGF0ZXxkZWxldGV8dXRpbGl0eSAqLwogCiAJdWludDY0CQlxdWVyeUlkOwkJLyogcXVlcnkg aWRlbnRpZmllciAoY29waWVkIGZyb20gUXVlcnkpICovCiAKQEAgLTgxLDYgKzgxLDkgQEAgdHlw ZWRlZiBzdHJ1Y3QgUGxhbm5lZFN0bXQKIAkgKi8KIAlMaXN0CSAgICpyb290UmVzdWx0UmVsYXRp b25zOwogCisJLyogT2lkIG9mIHRhcmdldCB2YXJpYWJsZSBmb3IgTEVUIGNvbW1hbmQgKi8KKwlP aWQJCQlyZXN1bHRWYXJpYWJsZTsKKwogCUxpc3QJICAgKnN1YnBsYW5zOwkJLyogUGxhbiB0cmVl cyBmb3IgU3ViUGxhbiBleHByZXNzaW9uczsgbm90ZQogCQkJCQkJCQkgKiB0aGF0IHNvbWUgY291 bGQgYmUgTlVMTCAqLwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wcmltbm9kZXMu aCBiL3NyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oCmluZGV4IDFiNGIwZDc1YWYuLmIzNjY0 NzE5NDAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oCisrKyBiL3Ny Yy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oCkBAIC0yMjksMTMgKzIyOSwxNyBAQCB0eXBlZGVm IHN0cnVjdCBDb25zdAogICoJCQkJb2YgdGhlIGBwYXJhbWlkJyBmaWVsZCBjb250YWluIHRoZSBT dWJMaW5rJ3Mgc3ViTGlua0lkLCBhbmQKICAqCQkJCXRoZSBsb3ctb3JkZXIgMTYgYml0cyBjb250 YWluIHRoZSBjb2x1bW4gbnVtYmVyLiAgKFRoaXMgdHlwZQogICoJCQkJb2YgUGFyYW0gaXMgYWxz byBjb252ZXJ0ZWQgdG8gUEFSQU1fRVhFQyBkdXJpbmcgcGxhbm5pbmcuKQorICoKKyAqCQlQQVJB TV9TQ0hFTUFfVkFSSUFCTEU6ICBUaGUgcGFyYW1ldGVyIGlzIGEgYWNjZXNzIHRvIHNjaGVtYSB2 YXJpYWJsZQorICoJCQkJcGFyYW1pZCBob2xkcyB2YXJpZC4KICAqLwogdHlwZWRlZiBlbnVtIFBh cmFtS2luZAogewogCVBBUkFNX0VYVEVSTiwKIAlQQVJBTV9FWEVDLAogCVBBUkFNX1NVQkxJTkss Ci0JUEFSQU1fTVVMVElFWFBSCisJUEFSQU1fTVVMVElFWFBSLAorCVBBUkFNX1NDSEVNQV9WQVJJ QUJMRQogfSBQYXJhbUtpbmQ7CiAKIHR5cGVkZWYgc3RydWN0IFBhcmFtCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmggYi9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmgK aW5kZXggMjNkYjQwMTQ3Yi4uZDNlZDNmNGQwZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGFy c2VyL2t3bGlzdC5oCisrKyBiL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaApAQCAtMjMxLDYg KzIzMSw3IEBAIFBHX0tFWVdPUkQoImxlYWRpbmciLCBMRUFESU5HLCBSRVNFUlZFRF9LRVlXT1JE KQogUEdfS0VZV09SRCgibGVha3Byb29mIiwgTEVBS1BST09GLCBVTlJFU0VSVkVEX0tFWVdPUkQp CiBQR19LRVlXT1JEKCJsZWFzdCIsIExFQVNULCBDT0xfTkFNRV9LRVlXT1JEKQogUEdfS0VZV09S RCgibGVmdCIsIExFRlQsIFRZUEVfRlVOQ19OQU1FX0tFWVdPUkQpCitQR19LRVlXT1JEKCJsZXQi LCBMRVQsIFVOUkVTRVJWRURfS0VZV09SRCkKIFBHX0tFWVdPUkQoImxldmVsIiwgTEVWRUwsIFVO UkVTRVJWRURfS0VZV09SRCkKIFBHX0tFWVdPUkQoImxpa2UiLCBMSUtFLCBUWVBFX0ZVTkNfTkFN RV9LRVlXT1JEKQogUEdfS0VZV09SRCgibGltaXQiLCBMSU1JVCwgUkVTRVJWRURfS0VZV09SRCkK QEAgLTQzNCw2ICs0MzUsOCBAQCBQR19LRVlXT1JEKCJ2YWxpZGF0b3IiLCBWQUxJREFUT1IsIFVO UkVTRVJWRURfS0VZV09SRCkKIFBHX0tFWVdPUkQoInZhbHVlIiwgVkFMVUVfUCwgVU5SRVNFUlZF RF9LRVlXT1JEKQogUEdfS0VZV09SRCgidmFsdWVzIiwgVkFMVUVTLCBDT0xfTkFNRV9LRVlXT1JE KQogUEdfS0VZV09SRCgidmFyY2hhciIsIFZBUkNIQVIsIENPTF9OQU1FX0tFWVdPUkQpCitQR19L RVlXT1JEKCJ2YXJpYWJsZSIsIFZBUklBQkxFLCBVTlJFU0VSVkVEX0tFWVdPUkQpCitQR19LRVlX T1JEKCJ2YXJpYWJsZXMiLCBWQVJJQUJMRVMsIFVOUkVTRVJWRURfS0VZV09SRCkKIFBHX0tFWVdP UkQoInZhcmlhZGljIiwgVkFSSUFESUMsIFJFU0VSVkVEX0tFWVdPUkQpCiBQR19LRVlXT1JEKCJ2 YXJ5aW5nIiwgVkFSWUlORywgVU5SRVNFUlZFRF9LRVlXT1JEKQogUEdfS0VZV09SRCgidmVyYm9z ZSIsIFZFUkJPU0UsIFRZUEVfRlVOQ19OQU1FX0tFWVdPUkQpCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9wYXJzZXIvcGFyc2Vfbm9kZS5oIGIvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUu aAppbmRleCAwMjMwNTQzODEwLi5mN2MyZTY3ZjMzIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9w YXJzZXIvcGFyc2Vfbm9kZS5oCisrKyBiL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ub2RlLmgK QEAgLTY5LDcgKzY5LDkgQEAgdHlwZWRlZiBlbnVtIFBhcnNlRXhwcktpbmQKIAlFWFBSX0tJTkRf VFJJR0dFUl9XSEVOLAkJLyogV0hFTiBjb25kaXRpb24gaW4gQ1JFQVRFIFRSSUdHRVIgKi8KIAlF WFBSX0tJTkRfUE9MSUNZLAkJCS8qIFVTSU5HIG9yIFdJVEggQ0hFQ0sgZXhwciBpbiBwb2xpY3kg Ki8KIAlFWFBSX0tJTkRfUEFSVElUSU9OX0VYUFJFU1NJT04sIC8qIFBBUlRJVElPTiBCWSBleHBy ZXNzaW9uICovCi0JRVhQUl9LSU5EX0NBTExfQVJHVU1FTlQJCS8qIHByb2NlZHVyZSBhcmd1bWVu dCBpbiBDQUxMICovCisJRVhQUl9LSU5EX0NBTExfQVJHVU1FTlQsCQkvKiBwcm9jZWR1cmUgYXJn dW1lbnQgaW4gQ0FMTCAqLworCUVYUFJfS0lORF9WQVJJQUJMRV9ERUZBVUxULAkvKiBkZWZhdWx0 IHZhbHVlIGZvciBzY2hlbWEgdmFyaWFibGUgKi8KKwlFWFBSX0tJTkRfTEVUCQkJCS8qIExFVCBh c3NpZ25tZW50IChzaG91bGQgYmUgc2FtZSBsaWtlIFVQREFURSkgKi8KIH0gUGFyc2VFeHByS2lu ZDsKIAogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfdGFyZ2V0LmggYi9z cmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfdGFyZ2V0LmgKaW5kZXggZWM2ZTBjMTAyZi4uMWVlMTk5 ZWQ4ZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX3RhcmdldC5oCisrKyBi L3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV90YXJnZXQuaApAQCAtMzIsNiArMzIsMTYgQEAgZXh0 ZXJuIEV4cHIgKnRyYW5zZm9ybUFzc2lnbmVkRXhwcihQYXJzZVN0YXRlICpwc3RhdGUsIEV4cHIg KmV4cHIsCiAJCQkJCSAgaW50IGF0dHJubywKIAkJCQkJICBMaXN0ICppbmRpcmVjdGlvbiwKIAkJ CQkJICBpbnQgbG9jYXRpb24pOworZXh0ZXJuIE5vZGUgKnRyYW5zZm9ybUFzc2lnbm1lbnRJbmRp cmVjdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsCisJCQkJCQkJICAgTm9kZSAqYmFzZW5vZGUsCisJ CQkJCQkJICAgY29uc3QgY2hhciAqdGFyZ2V0TmFtZSwKKwkJCQkJCQkgICBib29sIHRhcmdldElz QXJyYXksCisJCQkJCQkJICAgT2lkIHRhcmdldFR5cGVJZCwKKwkJCQkJCQkgICBpbnQzMiB0YXJn ZXRUeXBNb2QsCisJCQkJCQkJICAgT2lkIHRhcmdldENvbGxhdGlvbiwKKwkJCQkJCQkgICBMaXN0 Q2VsbCAqaW5kaXJlY3Rpb24sCisJCQkJCQkJICAgTm9kZSAqcmhzLAorCQkJCQkJCSAgIGludCBs b2NhdGlvbik7CiBleHRlcm4gdm9pZCB1cGRhdGVUYXJnZXRMaXN0RW50cnkoUGFyc2VTdGF0ZSAq cHN0YXRlLCBUYXJnZXRFbnRyeSAqdGxlLAogCQkJCQkgIGNoYXIgKmNvbG5hbWUsIGludCBhdHRy bm8sCiAJCQkJCSAgTGlzdCAqaW5kaXJlY3Rpb24sCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS90 Y29wL2Rlc3QuaCBiL3NyYy9pbmNsdWRlL3Rjb3AvZGVzdC5oCmluZGV4IDgyZjBmMmU3NDEuLmM0 OWI2NTM1NTUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3Rjb3AvZGVzdC5oCisrKyBiL3NyYy9p bmNsdWRlL3Rjb3AvZGVzdC5oCkBAIC05Niw3ICs5Niw4IEBAIHR5cGVkZWYgZW51bQogCURlc3RD b3B5T3V0LAkJCQkvKiByZXN1bHRzIHNlbnQgdG8gQ09QWSBUTyBjb2RlICovCiAJRGVzdFNRTEZ1 bmN0aW9uLAkJCS8qIHJlc3VsdHMgc2VudCB0byBTUUwtbGFuZ3VhZ2UgZnVuYyBtZ3IgKi8KIAlE ZXN0VHJhbnNpZW50UmVsLAkJCS8qIHJlc3VsdHMgc2VudCB0byB0cmFuc2llbnQgcmVsYXRpb24g Ki8KLQlEZXN0VHVwbGVRdWV1ZQkJCQkvKiByZXN1bHRzIHNlbnQgdG8gdHVwbGUgcXVldWUgKi8K KwlEZXN0VHVwbGVRdWV1ZSwJCQkJLyogcmVzdWx0cyBzZW50IHRvIHR1cGxlIHF1ZXVlICovCisJ RGVzdFZhcmlhYmxlCQkJCS8qIHJlc3VsdHMgc2VudHMgdG8gc2NoZW1hIHZhcmlhYmxlICovCiB9 IENvbW1hbmREZXN0OwogCiAvKiAtLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS91dGlscy9hY2wuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL2FjbC5oCmluZGV4IGY0ZDRiZThk MGQuLmM2MjRkOGRkMGIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL2FjbC5oCisrKyBi L3NyYy9pbmNsdWRlL3V0aWxzL2FjbC5oCkBAIC0xNDcsOSArMTQ3LDExIEBAIHR5cGVkZWYgQXJy YXlUeXBlIEFjbDsKICNkZWZpbmUgQUNMX0NSRUFURV9DSFIJCQknQycKICNkZWZpbmUgQUNMX0NS RUFURV9URU1QX0NIUgkJJ1QnCiAjZGVmaW5lIEFDTF9DT05ORUNUX0NIUgkJCSdjJworI2RlZmlu ZSBBQ0xfUkVBRF9DSFIJCQknUycgLyogJ1InIGlzIG9jY3VwYXRlZCBieSBvbGQgUlVMRSBwcml2 ICovCisjZGVmaW5lIEFDTF9XUklURV9DSFIJCQknVycKIAogLyogc3RyaW5nIGhvbGRpbmcgYWxs IHByaXZpbGVnZSBjb2RlIGNoYXJzLCBpbiBvcmRlciBieSBiaXRtYXNrIHBvc2l0aW9uICovCi0j ZGVmaW5lIEFDTF9BTExfUklHSFRTX1NUUgkiYXJ3ZER4dFhVQ1RjIgorI2RlZmluZSBBQ0xfQUxM X1JJR0hUU19TVFIJImFyd2REeHRYVUNUY1NXIgogCiAvKgogICogQml0bWFza3MgZGVmaW5pbmcg ImFsbCByaWdodHMiIGZvciBlYWNoIHN1cHBvcnRlZCBvYmplY3QgdHlwZQpAQCAtMTY2LDYgKzE2 OCw3IEBAIHR5cGVkZWYgQXJyYXlUeXBlIEFjbDsKICNkZWZpbmUgQUNMX0FMTF9SSUdIVFNfU0NI RU1BCQkoQUNMX1VTQUdFfEFDTF9DUkVBVEUpCiAjZGVmaW5lIEFDTF9BTExfUklHSFRTX1RBQkxF U1BBQ0UJKEFDTF9DUkVBVEUpCiAjZGVmaW5lIEFDTF9BTExfUklHSFRTX1RZUEUJCQkoQUNMX1VT QUdFKQorI2RlZmluZSBBQ0xfQUxMX1JJR0hUU19WQVJJQUJMRQkJKEFDTF9SRUFEfEFDTF9XUklU RSkKIAogLyogb3BlcmF0aW9uIGNvZGVzIGZvciBwZ18qX2FjbG1hc2sgKi8KIHR5cGVkZWYgZW51 bQpAQCAtMjUzLDYgKzI1Niw4IEBAIGV4dGVybiBBY2xNb2RlIHBnX2ZvcmVpZ25fc2VydmVyX2Fj bG1hc2soT2lkIHNydl9vaWQsIE9pZCByb2xlaWQsCiAJCQkJCQkgIEFjbE1vZGUgbWFzaywgQWNs TWFza0hvdyBob3cpOwogZXh0ZXJuIEFjbE1vZGUgcGdfdHlwZV9hY2xtYXNrKE9pZCB0eXBlX29p ZCwgT2lkIHJvbGVpZCwKIAkJCQlBY2xNb2RlIG1hc2ssIEFjbE1hc2tIb3cgaG93KTsKK2V4dGVy biBBY2xNb2RlIHBnX3ZhcmlhYmxlX2FjbG1hc2soT2lkIHZhcl9vaWQsIE9pZCByb2xlaWQsCisJ CQkJQWNsTW9kZSBtYXNrLCBBY2xNYXNrSG93IGhvdyk7CiAKIGV4dGVybiBBY2xSZXN1bHQgcGdf YXR0cmlidXRlX2FjbGNoZWNrKE9pZCB0YWJsZV9vaWQsIEF0dHJOdW1iZXIgYXR0bnVtLAogCQkJ CQkgIE9pZCByb2xlaWQsIEFjbE1vZGUgbW9kZSk7CkBAIC0yNjksNiArMjc0LDcgQEAgZXh0ZXJu IEFjbFJlc3VsdCBwZ190YWJsZXNwYWNlX2FjbGNoZWNrKE9pZCBzcGNfb2lkLCBPaWQgcm9sZWlk LCBBY2xNb2RlIG1vZGUpOwogZXh0ZXJuIEFjbFJlc3VsdCBwZ19mb3JlaWduX2RhdGFfd3JhcHBl cl9hY2xjaGVjayhPaWQgZmR3X29pZCwgT2lkIHJvbGVpZCwgQWNsTW9kZSBtb2RlKTsKIGV4dGVy biBBY2xSZXN1bHQgcGdfZm9yZWlnbl9zZXJ2ZXJfYWNsY2hlY2soT2lkIHNydl9vaWQsIE9pZCBy b2xlaWQsIEFjbE1vZGUgbW9kZSk7CiBleHRlcm4gQWNsUmVzdWx0IHBnX3R5cGVfYWNsY2hlY2so T2lkIHR5cGVfb2lkLCBPaWQgcm9sZWlkLCBBY2xNb2RlIG1vZGUpOworZXh0ZXJuIEFjbFJlc3Vs dCBwZ192YXJpYWJsZV9hY2xjaGVjayhPaWQgdHlwZV9vaWQsIE9pZCByb2xlaWQsIEFjbE1vZGUg bW9kZSk7CiAKIGV4dGVybiB2b2lkIGFjbGNoZWNrX2Vycm9yKEFjbFJlc3VsdCBhY2xlcnIsIE9i amVjdFR5cGUgb2JqdHlwZSwKIAkJCSAgIGNvbnN0IGNoYXIgKm9iamVjdG5hbWUpOwpAQCAtMzA1 LDYgKzMxMSw3IEBAIGV4dGVybiBib29sIHBnX2V4dGVuc2lvbl9vd25lcmNoZWNrKE9pZCBleHRf b2lkLCBPaWQgcm9sZWlkKTsKIGV4dGVybiBib29sIHBnX3B1YmxpY2F0aW9uX293bmVyY2hlY2so T2lkIHB1Yl9vaWQsIE9pZCByb2xlaWQpOwogZXh0ZXJuIGJvb2wgcGdfc3Vic2NyaXB0aW9uX293 bmVyY2hlY2soT2lkIHN1Yl9vaWQsIE9pZCByb2xlaWQpOwogZXh0ZXJuIGJvb2wgcGdfc3RhdGlz dGljc19vYmplY3Rfb3duZXJjaGVjayhPaWQgc3RhdF9vaWQsIE9pZCByb2xlaWQpOworZXh0ZXJu IGJvb2wgcGdfdmFyaWFibGVfb3duZXJjaGVjayhPaWQgc3RhdF9vaWQsIE9pZCByb2xlaWQpOwog ZXh0ZXJuIGJvb2wgaGFzX2NyZWF0ZXJvbGVfcHJpdmlsZWdlKE9pZCByb2xlaWQpOwogZXh0ZXJu IGJvb2wgaGFzX2J5cGFzc3Jsc19wcml2aWxlZ2UoT2lkIHJvbGVpZCk7CiAKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL3V0aWxzL2xzeXNjYWNoZS5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvbHN5c2Nh Y2hlLmgKaW5kZXggZTU1ZWE0MDM1Yi4uY2IzZjRhYWNhOSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvdXRpbHMvbHN5c2NhY2hlLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvbHN5c2NhY2hlLmgK QEAgLTEyMiw2ICsxMjIsNyBAQCBleHRlcm4gYm9vbCBnZXRfZnVuY19sZWFrcHJvb2YoT2lkIGZ1 bmNpZCk7CiBleHRlcm4gZmxvYXQ0IGdldF9mdW5jX2Nvc3QoT2lkIGZ1bmNpZCk7CiBleHRlcm4g ZmxvYXQ0IGdldF9mdW5jX3Jvd3MoT2lkIGZ1bmNpZCk7CiBleHRlcm4gT2lkCWdldF9yZWxuYW1l X3JlbGlkKGNvbnN0IGNoYXIgKnJlbG5hbWUsIE9pZCByZWxuYW1lc3BhY2UpOworZXh0ZXJuIE9p ZCBnZXRfdmFybmFtZV92YXJpZChjb25zdCBjaGFyICp2YXJuYW1lLCBPaWQgdmFybmFtZXNwYWNl KTsKIGV4dGVybiBjaGFyICpnZXRfcmVsX25hbWUoT2lkIHJlbGlkKTsKIGV4dGVybiBPaWQJZ2V0 X3JlbF9uYW1lc3BhY2UoT2lkIHJlbGlkKTsKIGV4dGVybiBPaWQJZ2V0X3JlbF90eXBlX2lkKE9p ZCByZWxpZCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9zeXNjYWNoZS5oIGIvc3Jj L2luY2x1ZGUvdXRpbHMvc3lzY2FjaGUuaAppbmRleCA0ZjMzMzU4NmVlLi40NTM2OTliZTNjIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9zeXNjYWNoZS5oCisrKyBiL3NyYy9pbmNsdWRl L3V0aWxzL3N5c2NhY2hlLmgKQEAgLTEwNyw5ICsxMDcsMTEgQEAgZW51bSBTeXNDYWNoZUlkZW50 aWZpZXIKIAlUWVBFTkFNRU5TUCwKIAlUWVBFT0lELAogCVVTRVJNQVBQSU5HT0lELAotCVVTRVJN QVBQSU5HVVNFUlNFUlZFUgorCVVTRVJNQVBQSU5HVVNFUlNFUlZFUiwKKwlWQVJJQUJMRU5BTUVO U1AsCisJVkFSSUFCTEVPSUQKIAotI2RlZmluZSBTeXNDYWNoZVNpemUgKFVTRVJNQVBQSU5HVVNF UlNFUlZFUiArIDEpCisjZGVmaW5lIFN5c0NhY2hlU2l6ZSAoVkFSSUFCTEVPSUQgKyAxKQogfTsK IAogZXh0ZXJuIHZvaWQgSW5pdENhdGFsb2dDYWNoZSh2b2lkKTsKZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvbWlzY19zYW5pdHkub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9taXNjX3Nhbml0eS5vdXQKaW5kZXggMmQzNTIyYjUwMC4uNDgyODZmOGUxYSAxMDA2 NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9taXNjX3Nhbml0eS5vdXQKKysrIGIv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9taXNjX3Nhbml0eS5vdXQKQEAgLTEwNSw1ICsxMDUs NyBAQCBPUkRFUiBCWSAxLCAyOwogIHBnX2luZGV4ICAgICAgICAgICAgICAgIHwgaW5kcHJlZCAg ICAgICB8IHBnX25vZGVfdHJlZQogIHBnX2xhcmdlb2JqZWN0ICAgICAgICAgIHwgZGF0YSAgICAg ICAgICB8IGJ5dGVhCiAgcGdfbGFyZ2VvYmplY3RfbWV0YWRhdGEgfCBsb21hY2wgICAgICAgIHwg YWNsaXRlbVtdCi0oMTEgcm93cykKKyBwZ192YXJpYWJsZSAgICAgICAgICAgICB8IHZhcmFjbCAg ICAgICAgfCBhY2xpdGVtW10KKyBwZ192YXJpYWJsZSAgICAgICAgICAgICB8IHZhcmRlZmV4cHIg ICAgfCBwZ19ub2RlX3RyZWUKKygxMyByb3dzKQogCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL3Nhbml0eV9jaGVjay5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3Nhbml0eV9jaGVjay5vdXQKaW5kZXggMGFhNTM1NzkxNy4uODQ4YjA0MWE0YiAxMDA2NDQKLS0t IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zYW5pdHlfY2hlY2sub3V0CisrKyBiL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc2FuaXR5X2NoZWNrLm91dApAQCAtMTYzLDYgKzE2Myw3IEBA IHBnX3RzX3BhcnNlcnx0CiBwZ190c190ZW1wbGF0ZXx0CiBwZ190eXBlfHQKIHBnX3VzZXJfbWFw cGluZ3x0CitwZ192YXJpYWJsZXx0CiBwb2ludF90Ymx8dAogcG9seWdvbl90Ymx8dAogcXVhZF9i b3hfdGJsfHQKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc2NoZW1hX3Zh cmlhYmxlcy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3NjaGVtYV92YXJpYWJsZXMu b3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmYyMDE3YjhkYTkKLS0t IC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3NjaGVtYV92YXJpYWJs ZXMub3V0CkBAIC0wLDAgKzEsMzA2IEBACitDUkVBVEUgVkFSSUFCTEUgdmFyMSBBUyBpbnRlZ2Vy OworQ1JFQVRFIFRFTVAgVkFSSUFCTEUgdmFyMiBBUyB0ZXh0OworRFJPUCBWQVJJQUJMRSB2YXIx LCB2YXIyOworLS0gZnVuY3Rpb25hbCBpbnRlcmZhY2UKK0NSRUFURSBWQVJJQUJMRSB2YXIxIEFT IG51bWVyaWM7CitDUkVBVEUgUk9MRSB2YXJfdGVzdF9yb2xlOworU0VUIFJPTEUgVE8gdmFyX3Rl c3Rfcm9sZTsKKy0tIHNob3VsZCB0byBmYWlsCitTRUxFQ1QgdmFyMTsKK0VSUk9SOiAgcGVybWlz c2lvbiBkZW5pZWQgZm9yIHNjaGVtYSB2YXJpYWJsZSB2YXIxCitTRVQgUk9MRSBUTyBERUZBVUxU OworR1JBTlQgUkVBRCBPTiBWQVJJQUJMRSB2YXIxIFRPIHZhcl90ZXN0X3JvbGU7CitTRVQgUk9M RSBUTyB2YXJfdGVzdF9yb2xlOworLS0gc2hvdWxkIHRvIGZhaWwKK0xFVCB2YXIxID0gMTA7CitF UlJPUjogIHBlcm1pc3Npb24gZGVuaWVkIGZvciBzY2hlbWEgdmFyaWFibGUgdmFyMQorLS0gc2hv dWxkIHRvIHdvcmsKK1NFTEVDVCB2YXIxOworIHZhcjEgCistLS0tLS0KKyAgICAgCisoMSByb3cp CisKK1NFVCBST0xFIFRPIERFRkFVTFQ7CitHUkFOVCBXUklURSBPTiBWQVJJQUJMRSB2YXIxIFRP IHZhcl90ZXN0X3JvbGU7CitTRVQgUk9MRSBUTyB2YXJfdGVzdF9yb2xlOworLS0gc2hvdWxkIHRv IHdvcmsKK0xFVCB2YXIxID0gMzMzOworU0VUIFJPTEUgVE8gREVGQVVMVDsKK1JFVk9LRSBBTEwg T04gVkFSSUFCTEUgdmFyMSBGUk9NIHZhcl90ZXN0X3JvbGU7CitDUkVBVEUgT1IgUkVQTEFDRSBG VU5DVElPTiBzZWN1cmVfdmFyKCkKK1JFVFVSTlMgaW50IEFTICQkCisgIFNFTEVDVCBwdWJsaWMu dmFyMTo6aW50OworJCQgTEFOR1VBR0Ugc3FsIFNFQ1VSSVRZIERFRklORVI7CitTRUxFQ1Qgc2Vj dXJlX3ZhcigpOworIHNlY3VyZV92YXIgCistLS0tLS0tLS0tLS0KKyAgICAgICAgMzMzCisoMSBy b3cpCisKK1NFVCBST0xFIFRPIHZhcl90ZXN0X3JvbGU7CistLSBzaG91bGQgdG8gZmFpbAorU0VM RUNUIHB1YmxpYy52YXIxOworRVJST1I6ICBwZXJtaXNzaW9uIGRlbmllZCBmb3Igc2NoZW1hIHZh cmlhYmxlIHZhcjEKKy0tIHNob3VsZCB0byB3b3JrOworU0VMRUNUIHNlY3VyZV92YXIoKTsKKyBz ZWN1cmVfdmFyIAorLS0tLS0tLS0tLS0tCisgICAgICAgIDMzMworKDEgcm93KQorCitTRVQgUk9M RSBUTyBERUZBVUxUOworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9N IGdlbmVyYXRlX3NlcmllcygxLDEwMCkgZyh2KSBXSEVSRSB2ID0gdmFyMTsKKyAgICAgICAgICAg ICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEZ1bmN0aW9uIFNjYW4gb24gcGdfY2F0YWxv Zy5nZW5lcmF0ZV9zZXJpZXMgZworICAgT3V0cHV0OiB2CisgICBGdW5jdGlvbiBDYWxsOiBnZW5l cmF0ZV9zZXJpZXMoMSwgMTAwKQorICAgRmlsdGVyOiAoKGcudik6Om51bWVyaWMgPSB2YXIxKQor KDQgcm93cykKKworQ1JFQVRFIFZJRVcgc2NoZW1hX3Zhcl92aWV3IEFTIFNFTEVDVCB2YXIxOwor U0VMRUNUICogRlJPTSBzY2hlbWFfdmFyX3ZpZXc7CisgdmFyMSAKKy0tLS0tLQorICAzMzMKKygx IHJvdykKKworXGMgLQorLS0gc2hvdWxkIHRvIHdvcmsgc3RpbGwsIGJ1dCB2YXIgd2lsbCBiZSBl bXB0eQorU0VMRUNUICogRlJPTSBzY2hlbWFfdmFyX3ZpZXc7CisgdmFyMSAKKy0tLS0tLQorICAg ICAKKygxIHJvdykKKworTEVUIHZhcjEgPSBwaSgpOworU0VMRUNUIHZhcjE7CisgICAgICAgdmFy MSAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLQorIDMuMTQxNTkyNjUzNTg5NzkKKygxIHJvdykK KworLS0gd2UgY2FuIGxvb2sgb24gZXhlY3V0aW9uIHBsYW4KK0VYUExBSU4gKFZFUkJPU0UsIENP U1RTIE9GRikgTEVUIHZhcjEgPSBwaSgpOworICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFJlc3VsdAorICAgT3V0cHV0OiAzLjE0MTU5 MjY1MzU4OTc5CisoMiByb3dzKQorCistLSBMRVQgY2FuIGJlIHByZXBhcmVkCitQUkVQQVJFIHZh cl9wcChpbnQsIG51bWVyaWMpIEFTIExFVCB2YXIxID0gJDEgKyAkMjsKK0VYRUNVVEUgdmFyX3Bw KDEwMCwgMS4yMzQ1Nik7CitTRUxFQ1QgdmFyMTsKKyAgIHZhcjEgICAgCistLS0tLS0tLS0tLQor IDEwMS4yMzQ1NgorKDEgcm93KQorCitDUkVBVEUgVkFSSUFCTEUgdmFyMyBBUyBpbnQ7CitDUkVB VEUgT1IgUkVQTEFDRSBGVU5DVElPTiBpbmMoaW50KQorUkVUVVJOUyBpbnQgQVMgJCQKK0JFR0lO CisgIExFVCBwdWJsaWMudmFyMyA9IENPQUxFU0NFKHB1YmxpYy52YXIzICsgJDEsICQxKTsKKyAg UkVUVVJOIHZhcjM7CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBnc3FsOworU0VMRUNUIGluYygxKTsK KyBpbmMgCistLS0tLQorICAgMQorKDEgcm93KQorCitTRUxFQ1QgaW5jKDEpOworIGluYyAKKy0t LS0tCisgICAyCisoMSByb3cpCisKK1NFTEVDVCBpbmMoMSk7CisgaW5jIAorLS0tLS0KKyAgIDMK KygxIHJvdykKKworU0VMRUNUIGluYygxKSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwKTsKKyBp bmMgCistLS0tLQorICAgNAorICAgNQorICAgNgorICAgNworICAgOAorICAgOQorICAxMAorICAx MQorICAxMgorICAxMworKDEwIHJvd3MpCisKK1NFVCBST0xFIFRPIHZhcl90ZXN0X3JvbGU7Cist LSBzaG91bGQgdG8gZmFpbAorTEVUIHZhcjMgPSAwOworRVJST1I6ICBwZXJtaXNzaW9uIGRlbmll ZCBmb3Igc2NoZW1hIHZhcmlhYmxlIHZhcjMKK1NFVCBST0xFIFRPIERFRkFVTFQ7CitEUk9QIFZJ RVcgc2NoZW1hX3Zhcl92aWV3OworRFJPUCBWQVJJQUJMRSB2YXIxIENBU0NBREU7CitEUk9QIFZB UklBQkxFIHZhcjMgQ0FTQ0FERTsKKy0tIGNvbXBvc2l0ZSB2YXJpYWJsZXMKK0NSRUFURSBUWVBF IHN2X3h5eiBBUyAoeCBpbnQsIHkgaW50LCB6IG51bWVyaWMoMTAsMikpOworQ1JFQVRFIFZBUklB QkxFIHYxIEFTIHN2X3h5ejsKK0NSRUFURSBWQVJJQUJMRSB2MiBBUyBzdl94eXo7CitcZCB2MQor XGQgdjIKK0xFVCB2MSA9ICgxLDIsMy4xNCk7CitMRVQgdjIgPSAoMTAsMjAsMy4xNCoxMCk7Cist LSBzaG91bGQgdG8gd29yayB0b28gLSB0aGVyZSBhcmUgcHJlcGFyZWQgY2FzdHMKK0xFVCB2MSA9 ICgxLDIsMy4xNCk7CitTRUxFQ1QgdjE7CisgICAgIHYxICAgICAKKy0tLS0tLS0tLS0tLQorICgx LDIsMy4xNCkKKygxIHJvdykKKworU0VMRUNUIHYyOworICAgICAgdjIgICAgICAgCistLS0tLS0t LS0tLS0tLS0KKyAoMTAsMjAsMzEuNDApCisoMSByb3cpCisKK1NFTEVDVCAodjEpLio7CisgeCB8 IHkgfCAgeiAgIAorLS0tKy0tLSstLS0tLS0KKyAxIHwgMiB8IDMuMTQKKygxIHJvdykKKworU0VM RUNUICh2MikuKjsKKyB4ICB8IHkgIHwgICB6ICAgCistLS0tKy0tLS0rLS0tLS0tLQorIDEwIHwg MjAgfCAzMS40MAorKDEgcm93KQorCitTRUxFQ1QgdjEueCArIHYxLno7CisgP2NvbHVtbj8gCist LS0tLS0tLS0tCisgICAgIDQuMTQKKygxIHJvdykKKworU0VMRUNUIHYyLnggKyB2Mi56OworID9j b2x1bW4/IAorLS0tLS0tLS0tLQorICAgIDQxLjQwCisoMSByb3cpCisKKy0tIGFjY2VzcyB0byBj b21wb3NpdGUgZmllbGRzIHNob3VsZCBiZSBzYWZlIHRvbworLS0gc2hvdWxkIHRvIGZhaWwKK1NF VCBST0xFIFRPIHZhcl90ZXN0X3JvbGU7CitTRUxFQ1QgdjIueDsKK0VSUk9SOiAgcGVybWlzc2lv biBkZW5pZWQgZm9yIHNjaGVtYSB2YXJpYWJsZSB2MgorU0VUIFJPTEUgVE8gREVGQVVMVDsKK0RS T1AgVkFSSUFCTEUgdjE7CitEUk9QIFZBUklBQkxFIHYyOworRFJPUCBST0xFIHZhcl90ZXN0X3Jv bGU7CistLSBzY2FsYXIgdmFyaWFibGVzIHNob3VsZCBub3QgYmUgaW4gY29uZmxpY3Qgd2l0aCBx dWFsaWZpZWQgY29sdW1uCitDUkVBVEUgVkFSSUFCTEUgdmFyeCBBUyB0ZXh0OworU0VMRUNUIHZh cngucmVsbmFtZSBGUk9NIHBnX2NsYXNzIHZhcnggV0hFUkUgdmFyeC5yZWxuYW1lID0gJ3BnX2Ns YXNzJzsKKyByZWxuYW1lICAKKy0tLS0tLS0tLS0KKyBwZ19jbGFzcworKDEgcm93KQorCistLSBz aG91bGQgdG8gZmFpbAorU0VMRUNUIHZhcngueHh4OworRVJST1I6ICB0eXBlIHRleHQgaXMgbm90 IGNvbXBvc2l0ZQorLS0gdmFyaWFibGVzIGNhbiBiZSB1cGRhdGVkIHVuZGVyIFJPIHRyYW5zYWN0 aW9uCitCRUdJTjsKK1NFVCBUUkFOU0FDVElPTiBSRUFEIE9OTFk7CitMRVQgdmFyeCA9ICdoZWxs byc7CitDT01NSVQ7CitTRUxFQ1QgdmFyeDsKKyB2YXJ4ICAKKy0tLS0tLS0KKyBoZWxsbworKDEg cm93KQorCitEUk9QIFZBUklBQkxFIHZhcng7CitDUkVBVEUgVFlQRSB0MSBBUyAoYSBpbnQsIGIg bnVtZXJpYywgYyB0ZXh0KTsKK0NSRUFURSBWQVJJQUJMRSB2MSBBUyB0MTsKK0xFVCB2MSA9ICgx LCBwaSgpLCAnaGVsbG8nKTsKK1NFTEVDVCB2MTsKKyAgICAgICAgICAgICB2MSAgICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAoMSwzLjE0MTU5MjY1MzU4OTc5LGhl bGxvKQorKDEgcm93KQorCitMRVQgdjEuYiA9IDEwLjIyMjI7CitTRUxFQ1QgdjE7CisgICAgICAg IHYxICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tCisgKDEsMTAuMjIyMixoZWxsbykKKygx IHJvdykKKworLS0gc2hvdWxkIHRvIGZhaWwKK0xFVCB2MS54ID0gMTA7CitFUlJPUjogIGNhbm5v dCBhc3NpZ24gdG8gZmllbGQgIngiIG9mIGNvbHVtbiAieCIgYmVjYXVzZSB0aGVyZSBpcyBubyBz dWNoIGNvbHVtbiBpbiBkYXRhIHR5cGUgdDEKK0xJTkUgMTogTEVUIHYxLnggPSAxMDsKKyAgICAg ICAgICAgIF4KK0RST1AgVkFSSUFCTEUgdjE7CitEUk9QIFRZUEUgdDE7CistLSBhcnJheXMgYXJl IHN1cHBvcnRlZAorQ1JFQVRFIFZBUklBQkxFIHZhMSBBUyBudW1lcmljW107CitMRVQgdmExID0g QVJSQVlbMS4xLDIuMV07CitMRVQgdmExWzFdID0gMTAuMTsKK1NFTEVDVCB2YTE7CisgICAgdmEx ICAgICAKKy0tLS0tLS0tLS0tLQorIHsxMC4xLDIuMX0KKygxIHJvdykKKworQ1JFQVRFIFRZUEUg dGEyIEFTIChhIG51bWVyaWMsIGIgbnVtZXJpY1tdKTsKK0NSRUFURSBWQVJJQUJMRSB2YTIgQVMg dGEyOworTEVUIHZhMiA9ICgxMC4xLCBBUlJBWVswLjAsIDAuMF0pOworTEVUIHZhMi5hID0gMTAu MjsKK1NFTEVDVCB2YTI7CisgICAgICAgIHZhMiAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAoMTAuMiwiezAuMCwwLjB9IikKKygxIHJvdykKKworTEVUIHZhMi5iWzFdID0gMTAuMzsK K1NFTEVDVCB2YTI7CisgICAgICAgICB2YTIgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LQorICgxMC4yLCJ7MTAuMywwLjB9IikKKygxIHJvdykKKworRFJPUCBWQVJJQUJMRSB2YTE7CitE Uk9QIFZBUklBQkxFIHZhMjsKK0RST1AgVFlQRSB0YTI7CistLSBkZWZhdWx0IHZhbHVlcworQ1JF QVRFIFZBUklBQkxFIHYxIEFTIG51bWVyaWMgREVGQVVMVCBwaSgpOworTEVUIHYxID0gdjEgKiAy OworU0VMRUNUIHYxOworICAgICAgICB2MSAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0KKyA2 LjI4MzE4NTMwNzE3OTU4CisoMSByb3cpCisKK0NSRUFURSBUWVBFIHQyIEFTIChhIG51bWVyaWMs IGIgdGV4dCk7CitDUkVBVEUgVkFSSUFCTEUgdjIgQVMgdDIgREVGQVVMVCAoTlVMTCwgJ0hlbGxv Jyk7CitMRVQgcHVibGljLnYyLmEgPSBwaSgpOworU0VMRUNUIHYyOworICAgICAgICAgICAgdjIg ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKDMuMTQxNTkyNjUzNTg5 NzksSGVsbG8pCisoMSByb3cpCisKKy0tIHNob3VkbCBmYWlsIGR1ZSBkZXBlbmRlbmN5CitEUk9Q IFRZUEUgdDI7CitFUlJPUjogIGNhbm5vdCBkcm9wIHR5cGUgdDIgYmVjYXVzZSBvdGhlciBvYmpl Y3RzIGRlcGVuZCBvbiBpdAorREVUQUlMOiAgc2NoZW1hIHZhcmlhYmxlIHYyIGRlcGVuZHMgb24g dHlwZSB0MgorSElOVDogIFVzZSBEUk9QIC4uLiBDQVNDQURFIHRvIGRyb3AgdGhlIGRlcGVuZGVu dCBvYmplY3RzIHRvby4KKy0tIHNob3VsZCBiZSBvaworRFJPUCBWQVJJQUJMRSB2MTsKK0RST1Ag VkFSSUFCTEUgdjI7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVk dWxlIGIvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQppbmRleCAxNmY5NzljOGQ5 Li45YmYzNzliODdiIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVk dWxlCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKQEAgLTExMSw3ICsx MTEsNyBAQCB0ZXN0OiBzZWxlY3Rfdmlld3MgcG9ydGFsc19wMiBmb3JlaWduX2tleSBjbHVzdGVy IGRlcGVuZGVuY3kgZ3VjIGJpdG1hcG9wcyBjb21ibwogIyBOQjogdGVtcC5zcWwgZG9lcyBhIHJl Y29ubmVjdCB3aGljaCB0cmFuc2llbnRseSB1c2VzIDIgY29ubmVjdGlvbnMsCiAjIHNvIGtlZXAg dGhpcyBwYXJhbGxlbCBncm91cCB0byBhdCBtb3N0IDE5IHRlc3RzCiAjIC0tLS0tLS0tLS0KLXRl c3Q6IHBsYW5jYWNoZSBsaW1pdCBwbHBnc3FsIGNvcHkyIHRlbXAgZG9tYWluIHJhbmdlZnVuY3Mg cHJlcGFyZSB3aXRob3V0X29pZCBjb252ZXJzaW9uIHRydW5jYXRlIGFsdGVyX3RhYmxlIHNlcXVl bmNlIHBvbHltb3JwaGlzbSByb3d0eXBlcyByZXR1cm5pbmcgbGFyZ2VvYmplY3Qgd2l0aCB4bWwK K3Rlc3Q6IHBsYW5jYWNoZSBsaW1pdCBwbHBnc3FsIGNvcHkyIHRlbXAgZG9tYWluIHJhbmdlZnVu Y3MgcHJlcGFyZSB3aXRob3V0X29pZCBjb252ZXJzaW9uIHRydW5jYXRlIGFsdGVyX3RhYmxlIHNl cXVlbmNlIHBvbHltb3JwaGlzbSByb3d0eXBlcyByZXR1cm5pbmcgbGFyZ2VvYmplY3Qgd2l0aCB4 bWwgc2NoZW1hX3ZhcmlhYmxlcwogCiAjIC0tLS0tLS0tLS0KICMgQW5vdGhlciBncm91cCBvZiBw YXJhbGxlbCB0ZXN0cwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zY2hlbWFfdmFyaWFi bGVzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc2NoZW1hX3ZhcmlhYmxlcy5vdXQKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uYjQ4NWNjMDk5NQotLS0gL2Rldi9udWxsCisr KyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc2NoZW1hX3ZhcmlhYmxlcy5vdXQKQEAgLTAsMCArMSwzMTMg QEAKK0NSRUFURSBWQVJJQUJMRSB2YXIxIEFTIGludGVnZXI7CitDUkVBVEUgVEVNUCBWQVJJQUJM RSB2YXIyIEFTIHRleHQ7CitEUk9QIFZBUklBQkxFIHZhcjEsIHZhcjI7CistLSBmdW5jdGlvbmFs IGludGVyZmFjZQorQ1JFQVRFIFZBUklBQkxFIHZhcjEgQVMgbnVtZXJpYzsKK0NSRUFURSBST0xF IHZhcl90ZXN0X3JvbGU7CitTRVQgUk9MRSBUTyB2YXJfdGVzdF9yb2xlOworLS0gc2hvdWxkIHRv IGZhaWwKK1NFTEVDVCB2YXIxOworRVJST1I6ICBwZXJtaXNzaW9uIGRlbmllZCBmb3Igc2NoZW1h IHZhcmlhYmxlIHZhcjEKK1NFVCBST0xFIFRPIERFRkFVTFQ7CitHUkFOVCBTRUxFQ1QgT04gVkFS SUFCTEUgdmFyMSBUTyB2YXJfdGVzdF9yb2xlOworRVJST1I6ICBpbnZhbGlkIHByaXZpbGVnZSB0 eXBlIFNFTEVDVCBmb3Igc2NoZW1hIHZhcmlhYmxlCitTRVQgUk9MRSBUTyB2YXJfdGVzdF9yb2xl OworLS0gc2hvdWxkIHRvIGZhaWwKK0xFVCB2YXIxID0gMTA7CitFUlJPUjogIHBlcm1pc3Npb24g ZGVuaWVkIGZvciBzY2hlbWEgdmFyaWFibGUgdmFyMQorLS0gc2hvdWxkIHRvIHdvcmsKK1NFTEVD VCB2YXIxOworRVJST1I6ICBwZXJtaXNzaW9uIGRlbmllZCBmb3Igc2NoZW1hIHZhcmlhYmxlIHZh cjEKK1NFVCBST0xFIFRPIERFRkFVTFQ7CitHUkFOVCBVUERBVEUgT04gVkFSSUFCTEUgdmFyMSBU TyB2YXJfdGVzdF9yb2xlOworRVJST1I6ICBpbnZhbGlkIHByaXZpbGVnZSB0eXBlIFVQREFURSBm b3Igc2NoZW1hIHZhcmlhYmxlCitTRVQgUk9MRSBUTyB2YXJfdGVzdF9yb2xlOworLS0gc2hvdWxk IHRvIHdvcmsKK0xFVCB2YXIxID0gMzMzOworRVJST1I6ICBwZXJtaXNzaW9uIGRlbmllZCBmb3Ig c2NoZW1hIHZhcmlhYmxlIHZhcjEKK1NFVCBST0xFIFRPIERFRkFVTFQ7CitSRVZPS0UgQUxMIE9O IFZBUklBQkxFIHZhcjEgRlJPTSB2YXJfdGVzdF9yb2xlOworQ1JFQVRFIE9SIFJFUExBQ0UgRlVO Q1RJT04gc2VjdXJlX3ZhcigpCitSRVRVUk5TIGludCBBUyAkJAorICBTRUxFQ1QgcHVibGljLnZh cjE7CiskJCBMQU5HVUFHRSBzcWwgU0VDVVJJVFkgREVGSU5FUjsKK0VSUk9SOiAgcmV0dXJuIHR5 cGUgbWlzbWF0Y2ggaW4gZnVuY3Rpb24gZGVjbGFyZWQgdG8gcmV0dXJuIGludGVnZXIKK0RFVEFJ TDogIEFjdHVhbCByZXR1cm4gdHlwZSBpcyBudW1lcmljLgorQ09OVEVYVDogIFNRTCBmdW5jdGlv biAic2VjdXJlX3ZhciIKK1NFTEVDVCBzZWN1cmVfdmFyKCk7CitFUlJPUjogIGZ1bmN0aW9uIHNl Y3VyZV92YXIoKSBkb2VzIG5vdCBleGlzdAorTElORSAxOiBTRUxFQ1Qgc2VjdXJlX3ZhcigpOwor ICAgICAgICAgICAgICAgXgorSElOVDogIE5vIGZ1bmN0aW9uIG1hdGNoZXMgdGhlIGdpdmVuIG5h bWUgYW5kIGFyZ3VtZW50IHR5cGVzLiBZb3UgbWlnaHQgbmVlZCB0byBhZGQgZXhwbGljaXQgdHlw ZSBjYXN0cy4KK1NFVCBST0xFIFRPIHZhcl90ZXN0X3JvbGU7CistLSBzaG91bGQgdG8gZmFpbAor U0VMRUNUIHB1YmxpYy52YXIxOworRVJST1I6ICBwZXJtaXNzaW9uIGRlbmllZCBmb3Igc2NoZW1h IHZhcmlhYmxlIHZhcjEKKy0tIHNob3VsZCB0byB3b3JrOworU0VMRUNUIHNlY3VyZV92YXIoKTsK K0VSUk9SOiAgZnVuY3Rpb24gc2VjdXJlX3ZhcigpIGRvZXMgbm90IGV4aXN0CitMSU5FIDE6IFNF TEVDVCBzZWN1cmVfdmFyKCk7CisgICAgICAgICAgICAgICBeCitISU5UOiAgTm8gZnVuY3Rpb24g bWF0Y2hlcyB0aGUgZ2l2ZW4gbmFtZSBhbmQgYXJndW1lbnQgdHlwZXMuIFlvdSBtaWdodCBuZWVk IHRvIGFkZCBleHBsaWNpdCB0eXBlIGNhc3RzLgorU0VUIFJPTEUgVE8gREVGQVVMVDsKK0VYUExB SU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUICogRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwx MDApIGcodikgV0hFUkUgdiA9IHZhcjE7CisgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAg ICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyBGdW5jdGlvbiBTY2FuIG9uIHBnX2NhdGFsb2cuZ2VuZXJhdGVfc2VyaWVzIGcK KyAgIE91dHB1dDogdgorICAgRnVuY3Rpb24gQ2FsbDogZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMCkK KyAgIEZpbHRlcjogKChnLnYpOjpudW1lcmljID0gJDQ2NDA0KQorKDQgcm93cykKKworQ1JFQVRF IFZJRVcgc2NoZW1hX3Zhcl92aWV3IEFTIFNFTEVDVCB2YXIxOworU0VMRUNUICogRlJPTSBzY2hl bWFfdmFyX3ZpZXc7CitFUlJPUjogIHRoZSBjb250ZW50IG9mIHZhcmlhYmxlIGlzIG5vdCB2YWxp ZAorXGMgLQorLS0gc2hvdWxkIHRvIHdvcmsgc3RpbGwsIGJ1dCB2YXIgd2lsbCBiZSBlbXB0eQor U0VMRUNUICogRlJPTSBzY2hlbWFfdmFyX3ZpZXc7CitFUlJPUjogIHRoZSBjb250ZW50IG9mIHZh cmlhYmxlIGlzIG5vdCB2YWxpZAorTEVUIHZhcjEgPSBwaSgpOworU0VMRUNUIHZhcjE7CisgICAg ICAgdmFyMSAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLQorIDMuMTQxNTkyNjUzNTg5NzkKKygx IHJvdykKKworLS0gd2UgY2FuIGxvb2sgb24gZXhlY3V0aW9uIHBsYW4KK0VYUExBSU4gKFZFUkJP U0UsIENPU1RTIE9GRikgTEVUIHZhcjEgPSBwaSgpOworICAgICAgICAgUVVFUlkgUExBTiAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFJlc3VsdAorICAgT3V0cHV0OiAz LjE0MTU5MjY1MzU4OTc5CisoMiByb3dzKQorCistLSBMRVQgY2FuIGJlIHByZXBhcmVkCitQUkVQ QVJFIHZhcl9wcChpbnQsIG51bWVyaWMpIEFTIExFVCB2YXIxID0gJDEgKyAkMjsKK0VYRUNVVEUg dmFyX3BwKDEwMCwgMS4yMzQ1Nik7CitTRUxFQ1QgdmFyMTsKKyAgIHZhcjEgICAgCistLS0tLS0t LS0tLQorIDEwMS4yMzQ1NgorKDEgcm93KQorCitDUkVBVEUgVkFSSUFCTEUgdmFyMyBBUyBpbnQ7 CitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBpbmMoaW50KQorUkVUVVJOUyBpbnQgQVMgJCQK K0JFR0lOCisgIExFVCBwdWJsaWMudmFyMyA9IENPQUxFU0NFKHB1YmxpYy52YXIzICsgJDEsICQx KTsKKyAgUkVUVVJOIHZhcjM7CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBnc3FsOworTk9USUNFOiAg SW52YWxpZGF0ZVNjaGVtYVZhckNhY2hlQ2FsbGJhY2sKK1NFTEVDVCBpbmMoMSk7CitFUlJPUjog IHRoZSBjb250ZW50IG9mIHZhcmlhYmxlIGlzIG5vdCB2YWxpZAorQ09OVEVYVDogIFNRTCBzdGF0 ZW1lbnQgIkxFVCBwdWJsaWMudmFyMyA9IENPQUxFU0NFKHB1YmxpYy52YXIzICsgJDEsICQxKSIK K1BML3BnU1FMIGZ1bmN0aW9uIGluYyhpbnRlZ2VyKSBsaW5lIDMgYXQgU1FMIHN0YXRlbWVudAor U0VMRUNUIGluYygxKTsKK0VSUk9SOiAgdGhlIGNvbnRlbnQgb2YgdmFyaWFibGUgaXMgbm90IHZh bGlkCitDT05URVhUOiAgU1FMIHN0YXRlbWVudCAiTEVUIHB1YmxpYy52YXIzID0gQ09BTEVTQ0Uo cHVibGljLnZhcjMgKyAkMSwgJDEpIgorUEwvcGdTUUwgZnVuY3Rpb24gaW5jKGludGVnZXIpIGxp bmUgMyBhdCBTUUwgc3RhdGVtZW50CitTRUxFQ1QgaW5jKDEpOworRVJST1I6ICB0aGUgY29udGVu dCBvZiB2YXJpYWJsZSBpcyBub3QgdmFsaWQKK0NPTlRFWFQ6ICBTUUwgc3RhdGVtZW50ICJMRVQg cHVibGljLnZhcjMgPSBDT0FMRVNDRShwdWJsaWMudmFyMyArICQxLCAkMSkiCitQTC9wZ1NRTCBm dW5jdGlvbiBpbmMoaW50ZWdlcikgbGluZSAzIGF0IFNRTCBzdGF0ZW1lbnQKK1NFTEVDVCBpbmMo MSkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMCk7CitFUlJPUjogIHRoZSBjb250ZW50IG9mIHZh cmlhYmxlIGlzIG5vdCB2YWxpZAorQ09OVEVYVDogIFNRTCBzdGF0ZW1lbnQgIkxFVCBwdWJsaWMu dmFyMyA9IENPQUxFU0NFKHB1YmxpYy52YXIzICsgJDEsICQxKSIKK1BML3BnU1FMIGZ1bmN0aW9u IGluYyhpbnRlZ2VyKSBsaW5lIDMgYXQgU1FMIHN0YXRlbWVudAorU0VUIFJPTEUgVE8gdmFyX3Rl c3Rfcm9sZTsKKy0tIHNob3VsZCB0byBmYWlsCitMRVQgdmFyMyA9IDA7CitFUlJPUjogIHBlcm1p c3Npb24gZGVuaWVkIGZvciBzY2hlbWEgdmFyaWFibGUgdmFyMworU0VUIFJPTEUgVE8gREVGQVVM VDsKK0RST1AgVklFVyBzY2hlbWFfdmFyX3ZpZXc7CitEUk9QIFZBUklBQkxFIHZhcjEgQ0FTQ0FE RTsKK05PVElDRTogIEludmFsaWRhdGVTY2hlbWFWYXJDYWNoZUNhbGxiYWNrCitEUk9QIFZBUklB QkxFIHZhcjMgQ0FTQ0FERTsKK05PVElDRTogIEludmFsaWRhdGVTY2hlbWFWYXJDYWNoZUNhbGxi YWNrCitOT1RJQ0U6ICBJbnZhbGlkYXRlU2NoZW1hVmFyQ2FjaGVDYWxsYmFjaworLS0gY29tcG9z aXRlIHZhcmlhYmxlcworQ1JFQVRFIFRZUEUgc3ZfeHl6IEFTICh4IGludCwgeSBpbnQsIHogbnVt ZXJpYygxMCwyKSk7CitOT1RJQ0U6ICBJbnZhbGlkYXRlU2NoZW1hVmFyQ2FjaGVDYWxsYmFjawor Q1JFQVRFIFZBUklBQkxFIHYxIEFTIHN2X3h5ejsKK0NSRUFURSBWQVJJQUJMRSB2MiBBUyAoeCBp bnQsIHkgaW50LCB6IG51bWVyaWMoMTAsMikpOworTk9USUNFOiAgSW52YWxpZGF0ZVNjaGVtYVZh ckNhY2hlQ2FsbGJhY2sKK0VSUk9SOiAgc3ludGF4IGVycm9yIGF0IG9yIG5lYXIgIigiCitMSU5F IDE6IENSRUFURSBWQVJJQUJMRSB2MiBBUyAoeCBpbnQsIHkgaW50LCB6IG51bWVyaWMoMTAsMikp OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorXGQgdjEKK1xkIHYyCitMRVQgdjEg PSAoMSwyLDMuMTQpOworTEVUIHYyID0gKDEwLDIwLDMuMTQqMTApOworRVJST1I6ICBzY2hlbWEg dmFyaWFibGUgInYyIiBkb2Vzbid0IGV4aXN0cworTElORSAxOiBMRVQgdjIgPSAoMTAsMjAsMy4x NCoxMCk7CisgICAgICAgICAgICBeCistLSBzaG91bGQgdG8gd29yayB0b28gLSB0aGVyZSBhcmUg cHJlcGFyZWQgY2FzdHMKK0xFVCB2MSA9ICgxLDIsMy4xNCk7CitTRUxFQ1QgdjE7CisgICAgIHYx ICAgICAKKy0tLS0tLS0tLS0tLQorICgxLDIsMy4xNCkKKygxIHJvdykKKworU0VMRUNUIHYyOwor RVJST1I6ICBjb2x1bW4gInYyIiBkb2VzIG5vdCBleGlzdAorTElORSAxOiBTRUxFQ1QgdjI7Cisg ICAgICAgICAgICAgICBeCitTRUxFQ1QgKHYxKS4qOworIHggfCB5IHwgIHogICAKKy0tLSstLS0r LS0tLS0tCisgMSB8IDIgfCAzLjE0CisoMSByb3cpCisKK1NFTEVDVCAodjIpLio7CitFUlJPUjog IGNvbHVtbiAidjIiIGRvZXMgbm90IGV4aXN0CitMSU5FIDE6IFNFTEVDVCAodjIpLio7CisgICAg ICAgICAgICAgICAgXgorU0VMRUNUIHYxLnggKyB2MS56OworID9jb2x1bW4/IAorLS0tLS0tLS0t LQorICAgICA0LjE0CisoMSByb3cpCisKK1NFTEVDVCB2Mi54ICsgdjIuejsKK0VSUk9SOiAgbWlz c2luZyBGUk9NLWNsYXVzZSBlbnRyeSBmb3IgdGFibGUgInYyIgorTElORSAxOiBTRUxFQ1QgdjIu eCArIHYyLno7CisgICAgICAgICAgICAgICBeCistLSBhY2Nlc3MgdG8gY29tcG9zaXRlIGZpZWxk cyBzaG91bGQgYmUgc2FmZSB0b28KKy0tIHNob3VsZCB0byBmYWlsCitTRVQgUk9MRSBUTyB2YXJf dGVzdF9yb2xlOworU0VMRUNUIHYyLng7CitFUlJPUjogIG1pc3NpbmcgRlJPTS1jbGF1c2UgZW50 cnkgZm9yIHRhYmxlICJ2MiIKK0xJTkUgMTogU0VMRUNUIHYyLng7CisgICAgICAgICAgICAgICBe CitTRVQgUk9MRSBUTyBERUZBVUxUOworRFJPUCBWQVJJQUJMRSB2MTsKK05PVElDRTogIEludmFs aWRhdGVTY2hlbWFWYXJDYWNoZUNhbGxiYWNrCitEUk9QIFZBUklBQkxFIHYyOworTk9USUNFOiAg SW52YWxpZGF0ZVNjaGVtYVZhckNhY2hlQ2FsbGJhY2sKK0VSUk9SOiAgdmFyaWFibGUgInYyIiBk b2VzIG5vdCBleGlzdAorRFJPUCBWQVJJQUJMRSB2MzsKK0VSUk9SOiAgdmFyaWFibGUgInYzIiBk b2VzIG5vdCBleGlzdAorRFJPUCBST0xFIHZhcl90ZXN0X3JvbGU7CistLSBzY2FsYXIgdmFyaWFi bGVzIHNob3VsZCBub3QgYmUgaW4gY29uZmxpY3Qgd2l0aCBxdWFsaWZpZWQgY29sdW1uCitDUkVB VEUgVkFSSUFCTEUgdmFyeCBBUyB0ZXh0OworU0VMRUNUIHZhcngucmVsbmFtZSBGUk9NIHBnX2Ns YXNzIHZhcnggV0hFUkUgdmFyeC5yZWxuYW1lID0gJ3BnX2NsYXNzJzsKK05PVElDRTogIEludmFs aWRhdGVTY2hlbWFWYXJDYWNoZUNhbGxiYWNrCisgcmVsbmFtZSAgCistLS0tLS0tLS0tCisgcGdf Y2xhc3MKKygxIHJvdykKKworLS0gc2hvdWxkIHRvIGZhaWwKK1NFTEVDVCB2YXJ4Lnh4eDsKK0VS Uk9SOiAgdHlwZSB0ZXh0IGlzIG5vdCBjb21wb3NpdGUKKy0tIHZhcmlhYmxlcyBjYW4gYmUgdXBk YXRlZCB1bmRlciBSTyB0cmFuc2FjdGlvbgorQkVHSU47CitTRVQgVFJBTlNBQ1RJT04gUkVBRCBP TkxZOworTEVUIHZhcnggPSAnaGVsbG8nOworV0FSTklORzogIHVucmVjb2duaXplZCBjb21tYW5k VHlwZTogNgorQ09NTUlUOworU0VMRUNUIHZhcng7CisgdmFyeCAgCistLS0tLS0tCisgaGVsbG8K KygxIHJvdykKKworRFJPUCBWQVJJQUJMRSB2YXJ4OworTk9USUNFOiAgSW52YWxpZGF0ZVNjaGVt YVZhckNhY2hlQ2FsbGJhY2sKK0NSRUFURSBWQVJJQUJMRSB2MSBBUyAoYSBpbnQsIGIgbnVtZXJp YywgYyB0ZXh0KTsKK05PVElDRTogIEludmFsaWRhdGVTY2hlbWFWYXJDYWNoZUNhbGxiYWNrCitF UlJPUjogIHN5bnRheCBlcnJvciBhdCBvciBuZWFyICIoIgorTElORSAxOiBDUkVBVEUgVkFSSUFC TEUgdjEgQVMgKGEgaW50LCBiIG51bWVyaWMsIGMgdGV4dCk7CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBeCitMRVQgdjEgPSAoMSwgcGkoKSwgJ2hlbGxvJyk7CitFUlJPUjogIHNjaGVt YSB2YXJpYWJsZSAidjEiIGRvZXNuJ3QgZXhpc3RzCitMSU5FIDE6IExFVCB2MSA9ICgxLCBwaSgp LCAnaGVsbG8nKTsKKyAgICAgICAgICAgIF4KK1NFTEVDVCB2MTsKK0VSUk9SOiAgY29sdW1uICJ2 MSIgZG9lcyBub3QgZXhpc3QKK0xJTkUgMTogU0VMRUNUIHYxOworICAgICAgICAgICAgICAgXgor TEVUIHYxLmIgPSAxMC4yMjIyOworRVJST1I6ICBzY2hlbWEgdmFyaWFibGUgInYxLmIiIGRvZXNu J3QgZXhpc3RzCitMSU5FIDE6IExFVCB2MS5iID0gMTAuMjIyMjsKKyAgICAgICAgICAgIF4KK1NF TEVDVCB2MTsKK0VSUk9SOiAgY29sdW1uICJ2MSIgZG9lcyBub3QgZXhpc3QKK0xJTkUgMTogU0VM RUNUIHYxOworICAgICAgICAgICAgICAgXgorLS0gc2hvdWxkIHRvIGZhaWwKK0xFVCB2MS54ID0g MTA7CitFUlJPUjogIHNjaGVtYSB2YXJpYWJsZSAidjEueCIgZG9lc24ndCBleGlzdHMKK0xJTkUg MTogTEVUIHYxLnggPSAxMDsKKyAgICAgICAgICAgIF4KK0RST1AgVkFSSUFCTEUgdjE7CitFUlJP UjogIHZhcmlhYmxlICJ2MSIgZG9lcyBub3QgZXhpc3QKKy0tIGFycmF5cyBhcmUgc3VwcG9ydGVk CitDUkVBVEUgVkFSSUFCTEUgdmExIEFTIG51bWVyaWNbXTsKK0xFVCB2YTEgPSBBUlJBWVsxLjEs Mi4xXTsKK05PVElDRTogIEludmFsaWRhdGVTY2hlbWFWYXJDYWNoZUNhbGxiYWNrCitMRVQgdmEx WzFdID0gMTAuMTsKK1NFTEVDVCB2YTE7CisgICAgdmExICAgICAKKy0tLS0tLS0tLS0tLQorIHsx MC4xLDIuMX0KKygxIHJvdykKKworQ1JFQVRFIFZBUklBQkxFIHZhMiBBUyAoYSBudW1lcmljLCBi IG51bWVyaWNbXSk7CitFUlJPUjogIHN5bnRheCBlcnJvciBhdCBvciBuZWFyICIoIgorTElORSAx OiBDUkVBVEUgVkFSSUFCTEUgdmEyIEFTIChhIG51bWVyaWMsIGIgbnVtZXJpY1tdKTsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBeCitMRVQgdmEyID0gKDEwLjEsIEFSUkFZWzAuMCwg MC4wXSk7CitFUlJPUjogIHNjaGVtYSB2YXJpYWJsZSAidmEyIiBkb2Vzbid0IGV4aXN0cworTElO RSAxOiBMRVQgdmEyID0gKDEwLjEsIEFSUkFZWzAuMCwgMC4wXSk7CisgICAgICAgICAgICBeCitM RVQgdmEyLmEgPSAxMC4yOworRVJST1I6ICBzY2hlbWEgdmFyaWFibGUgInZhMi5hIiBkb2Vzbid0 IGV4aXN0cworTElORSAxOiBMRVQgdmEyLmEgPSAxMC4yOworICAgICAgICAgICAgXgorU0VMRUNU IHZhMjsKK0VSUk9SOiAgY29sdW1uICJ2YTIiIGRvZXMgbm90IGV4aXN0CitMSU5FIDE6IFNFTEVD VCB2YTI7CisgICAgICAgICAgICAgICBeCitMRVQgdmEyLmJbMV0gPSAxMC4zOworRVJST1I6ICBz Y2hlbWEgdmFyaWFibGUgInZhMi5iIiBkb2Vzbid0IGV4aXN0cworTElORSAxOiBMRVQgdmEyLmJb MV0gPSAxMC4zOworICAgICAgICAgICAgXgorU0VMRUNUIHZhMjsKK0VSUk9SOiAgY29sdW1uICJ2 YTIiIGRvZXMgbm90IGV4aXN0CitMSU5FIDE6IFNFTEVDVCB2YTI7CisgICAgICAgICAgICAgICBe CitEUk9QIFZBUklBQkxFIHZhMTsKK05PVElDRTogIEludmFsaWRhdGVTY2hlbWFWYXJDYWNoZUNh bGxiYWNrCitEUk9QIFZBUklBQkxFIHZhMjsKK05PVElDRTogIEludmFsaWRhdGVTY2hlbWFWYXJD YWNoZUNhbGxiYWNrCitFUlJPUjogIHZhcmlhYmxlICJ2YTIiIGRvZXMgbm90IGV4aXN0CistLSBk ZWZhdWx0IHZhbHVlcworQ1JFQVRFIFZBUklBQkxFIHYxIEFTIG51bWVyaWMgREVGQVVMVCBwaSgp OworTEVUIHYxID0gdjEgKiAyOworTk9USUNFOiAgSW52YWxpZGF0ZVNjaGVtYVZhckNhY2hlQ2Fs bGJhY2sKK1NFTEVDVCB2MTsKKyAgICAgICAgdjEgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t CisgNi4yODMxODUzMDcxNzk1OAorKDEgcm93KQorCitDUkVBVEUgVkFSSUFCTEUgdjIgQVMgKGEg bnVtZXJpYywgYiB0ZXh0IERFRkFVTFQgJ2hlbGxvJyk7CitFUlJPUjogIHN5bnRheCBlcnJvciBh dCBvciBuZWFyICIoIgorTElORSAxOiBDUkVBVEUgVkFSSUFCTEUgdjIgQVMgKGEgbnVtZXJpYywg YiB0ZXh0IERFRkFVTFQgJ2hlbGxvJyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBe CitMRVQgcHVibGljLnYyLmEgPSBwaSgpOworRVJST1I6ICBzY2hlbWEgdmFyaWFibGUgInB1Ymxp Yy52Mi5hIiBkb2Vzbid0IGV4aXN0cworTElORSAxOiBMRVQgcHVibGljLnYyLmEgPSBwaSgpOwor ICAgICAgICAgICAgXgorU0VMRUNUIHYyOworRVJST1I6ICBjb2x1bW4gInYyIiBkb2VzIG5vdCBl eGlzdAorTElORSAxOiBTRUxFQ1QgdjI7CisgICAgICAgICAgICAgICBeCitEUk9QIFZBUklBQkxF IHYxOworTk9USUNFOiAgSW52YWxpZGF0ZVNjaGVtYVZhckNhY2hlQ2FsbGJhY2sKK0RST1AgVkFS SUFCTEUgdjI7CitOT1RJQ0U6ICBJbnZhbGlkYXRlU2NoZW1hVmFyQ2FjaGVDYWxsYmFjaworRVJS T1I6ICB2YXJpYWJsZSAidjIiIGRvZXMgbm90IGV4aXN0CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9y ZWdyZXNzL3NlcmlhbF9zY2hlZHVsZSBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc2VyaWFsX3NjaGVkdWxl CmluZGV4IDQyNjMyYmU2NzUuLjQyYmY0ZWNiM2YgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jl c3Mvc2VyaWFsX3NjaGVkdWxlCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc2VyaWFsX3NjaGVkdWxl CkBAIC0xOTEsMyArMTkxLDQgQEAgdGVzdDogcGFydGl0aW9uX2FnZ3JlZ2F0ZQogdGVzdDogZXZl bnRfdHJpZ2dlcgogdGVzdDogZmFzdF9kZWZhdWx0CiB0ZXN0OiBzdGF0cwordGVzdDogc2NoZW1h X3ZhcmlhYmxlcwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc2NoZW1hX3Zhcmlh Ymxlcy5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zY2hlbWFfdmFyaWFibGVzLnNxbApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi42MTliNmVlNGMwCi0tLSAvZGV2L251 bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc2NoZW1hX3ZhcmlhYmxlcy5zcWwKQEAgLTAs MCArMSwyMTMgQEAKK0NSRUFURSBWQVJJQUJMRSB2YXIxIEFTIGludGVnZXI7CitDUkVBVEUgVEVN UCBWQVJJQUJMRSB2YXIyIEFTIHRleHQ7CisKK0RST1AgVkFSSUFCTEUgdmFyMSwgdmFyMjsKKwor LS0gZnVuY3Rpb25hbCBpbnRlcmZhY2UKK0NSRUFURSBWQVJJQUJMRSB2YXIxIEFTIG51bWVyaWM7 CisKK0NSRUFURSBST0xFIHZhcl90ZXN0X3JvbGU7CisKK1NFVCBST0xFIFRPIHZhcl90ZXN0X3Jv bGU7CisKKy0tIHNob3VsZCB0byBmYWlsCitTRUxFQ1QgdmFyMTsKKworU0VUIFJPTEUgVE8gREVG QVVMVDsKKworR1JBTlQgUkVBRCBPTiBWQVJJQUJMRSB2YXIxIFRPIHZhcl90ZXN0X3JvbGU7CisK K1NFVCBST0xFIFRPIHZhcl90ZXN0X3JvbGU7CistLSBzaG91bGQgdG8gZmFpbAorTEVUIHZhcjEg PSAxMDsKKy0tIHNob3VsZCB0byB3b3JrCitTRUxFQ1QgdmFyMTsKKworU0VUIFJPTEUgVE8gREVG QVVMVDsKKworR1JBTlQgV1JJVEUgT04gVkFSSUFCTEUgdmFyMSBUTyB2YXJfdGVzdF9yb2xlOwor CitTRVQgUk9MRSBUTyB2YXJfdGVzdF9yb2xlOworCistLSBzaG91bGQgdG8gd29yaworTEVUIHZh cjEgPSAzMzM7CisKK1NFVCBST0xFIFRPIERFRkFVTFQ7CisKK1JFVk9LRSBBTEwgT04gVkFSSUFC TEUgdmFyMSBGUk9NIHZhcl90ZXN0X3JvbGU7CisKK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9O IHNlY3VyZV92YXIoKQorUkVUVVJOUyBpbnQgQVMgJCQKKyAgU0VMRUNUIHB1YmxpYy52YXIxOjpp bnQ7CiskJCBMQU5HVUFHRSBzcWwgU0VDVVJJVFkgREVGSU5FUjsKKworU0VMRUNUIHNlY3VyZV92 YXIoKTsKKworU0VUIFJPTEUgVE8gdmFyX3Rlc3Rfcm9sZTsKKworLS0gc2hvdWxkIHRvIGZhaWwK K1NFTEVDVCBwdWJsaWMudmFyMTsKKworLS0gc2hvdWxkIHRvIHdvcms7CitTRUxFQ1Qgc2VjdXJl X3ZhcigpOworCitTRVQgUk9MRSBUTyBERUZBVUxUOworCitFWFBMQUlOIChWRVJCT1NFLCBDT1NU UyBPRkYpIFNFTEVDVCAqIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTAwKSBnKHYpIFdIRVJFIHYg PSB2YXIxOworCitDUkVBVEUgVklFVyBzY2hlbWFfdmFyX3ZpZXcgQVMgU0VMRUNUIHZhcjE7CisK K1NFTEVDVCAqIEZST00gc2NoZW1hX3Zhcl92aWV3OworCitcYyAtCisKKy0tIHNob3VsZCB0byB3 b3JrIHN0aWxsLCBidXQgdmFyIHdpbGwgYmUgZW1wdHkKK1NFTEVDVCAqIEZST00gc2NoZW1hX3Zh cl92aWV3OworCitMRVQgdmFyMSA9IHBpKCk7CisKK1NFTEVDVCB2YXIxOworCistLSB3ZSBjYW4g bG9vayBvbiBleGVjdXRpb24gcGxhbgorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBMRVQg dmFyMSA9IHBpKCk7CisKKy0tIExFVCBjYW4gYmUgcHJlcGFyZWQKK1BSRVBBUkUgdmFyX3BwKGlu dCwgbnVtZXJpYykgQVMgTEVUIHZhcjEgPSAkMSArICQyOworCitFWEVDVVRFIHZhcl9wcCgxMDAs IDEuMjM0NTYpOworCitTRUxFQ1QgdmFyMTsKKworQ1JFQVRFIFZBUklBQkxFIHZhcjMgQVMgaW50 OworCitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBpbmMoaW50KQorUkVUVVJOUyBpbnQgQVMg JCQKK0JFR0lOCisgIExFVCBwdWJsaWMudmFyMyA9IENPQUxFU0NFKHB1YmxpYy52YXIzICsgJDEs ICQxKTsKKyAgUkVUVVJOIHZhcjM7CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBnc3FsOworCitTRUxF Q1QgaW5jKDEpOworU0VMRUNUIGluYygxKTsKK1NFTEVDVCBpbmMoMSk7CisKK1NFTEVDVCBpbmMo MSkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMCk7CisKK1NFVCBST0xFIFRPIHZhcl90ZXN0X3Jv bGU7CisKKy0tIHNob3VsZCB0byBmYWlsCitMRVQgdmFyMyA9IDA7CisKK1NFVCBST0xFIFRPIERF RkFVTFQ7CisKK0RST1AgVklFVyBzY2hlbWFfdmFyX3ZpZXc7CisKK0RST1AgVkFSSUFCTEUgdmFy MSBDQVNDQURFOworRFJPUCBWQVJJQUJMRSB2YXIzIENBU0NBREU7CisKKy0tIGNvbXBvc2l0ZSB2 YXJpYWJsZXMKKworQ1JFQVRFIFRZUEUgc3ZfeHl6IEFTICh4IGludCwgeSBpbnQsIHogbnVtZXJp YygxMCwyKSk7CisKK0NSRUFURSBWQVJJQUJMRSB2MSBBUyBzdl94eXo7CitDUkVBVEUgVkFSSUFC TEUgdjIgQVMgc3ZfeHl6OworCitcZCB2MQorXGQgdjIKKworTEVUIHYxID0gKDEsMiwzLjE0KTsK K0xFVCB2MiA9ICgxMCwyMCwzLjE0KjEwKTsKKworLS0gc2hvdWxkIHRvIHdvcmsgdG9vIC0gdGhl cmUgYXJlIHByZXBhcmVkIGNhc3RzCitMRVQgdjEgPSAoMSwyLDMuMTQpOworCitTRUxFQ1QgdjE7 CitTRUxFQ1QgdjI7CitTRUxFQ1QgKHYxKS4qOworU0VMRUNUICh2MikuKjsKKworU0VMRUNUIHYx LnggKyB2MS56OworU0VMRUNUIHYyLnggKyB2Mi56OworCistLSBhY2Nlc3MgdG8gY29tcG9zaXRl IGZpZWxkcyBzaG91bGQgYmUgc2FmZSB0b28KKy0tIHNob3VsZCB0byBmYWlsCitTRVQgUk9MRSBU TyB2YXJfdGVzdF9yb2xlOworCitTRUxFQ1QgdjIueDsKKworU0VUIFJPTEUgVE8gREVGQVVMVDsK KworCitEUk9QIFZBUklBQkxFIHYxOworRFJPUCBWQVJJQUJMRSB2MjsKKworRFJPUCBST0xFIHZh cl90ZXN0X3JvbGU7CisKKy0tIHNjYWxhciB2YXJpYWJsZXMgc2hvdWxkIG5vdCBiZSBpbiBjb25m bGljdCB3aXRoIHF1YWxpZmllZCBjb2x1bW4KK0NSRUFURSBWQVJJQUJMRSB2YXJ4IEFTIHRleHQ7 CitTRUxFQ1QgdmFyeC5yZWxuYW1lIEZST00gcGdfY2xhc3MgdmFyeCBXSEVSRSB2YXJ4LnJlbG5h bWUgPSAncGdfY2xhc3MnOworCistLSBzaG91bGQgdG8gZmFpbAorU0VMRUNUIHZhcngueHh4Owor CisKKy0tIHZhcmlhYmxlcyBjYW4gYmUgdXBkYXRlZCB1bmRlciBSTyB0cmFuc2FjdGlvbgorCitC RUdJTjsKK1NFVCBUUkFOU0FDVElPTiBSRUFEIE9OTFk7CitMRVQgdmFyeCA9ICdoZWxsbyc7CitD T01NSVQ7CisKK1NFTEVDVCB2YXJ4OworCitEUk9QIFZBUklBQkxFIHZhcng7CisKK0NSRUFURSBU WVBFIHQxIEFTIChhIGludCwgYiBudW1lcmljLCBjIHRleHQpOworCitDUkVBVEUgVkFSSUFCTEUg djEgQVMgdDE7CitMRVQgdjEgPSAoMSwgcGkoKSwgJ2hlbGxvJyk7CitTRUxFQ1QgdjE7CitMRVQg djEuYiA9IDEwLjIyMjI7CitTRUxFQ1QgdjE7CisKKy0tIHNob3VsZCB0byBmYWlsCitMRVQgdjEu eCA9IDEwOworCitEUk9QIFZBUklBQkxFIHYxOworRFJPUCBUWVBFIHQxOworCistLSBhcnJheXMg YXJlIHN1cHBvcnRlZAorQ1JFQVRFIFZBUklBQkxFIHZhMSBBUyBudW1lcmljW107CitMRVQgdmEx ID0gQVJSQVlbMS4xLDIuMV07CitMRVQgdmExWzFdID0gMTAuMTsKK1NFTEVDVCB2YTE7CisKK0NS RUFURSBUWVBFIHRhMiBBUyAoYSBudW1lcmljLCBiIG51bWVyaWNbXSk7CitDUkVBVEUgVkFSSUFC TEUgdmEyIEFTIHRhMjsKK0xFVCB2YTIgPSAoMTAuMSwgQVJSQVlbMC4wLCAwLjBdKTsKK0xFVCB2 YTIuYSA9IDEwLjI7CitTRUxFQ1QgdmEyOworTEVUIHZhMi5iWzFdID0gMTAuMzsKK1NFTEVDVCB2 YTI7CisKK0RST1AgVkFSSUFCTEUgdmExOworRFJPUCBWQVJJQUJMRSB2YTI7CitEUk9QIFRZUEUg dGEyOworCistLSBkZWZhdWx0IHZhbHVlcworQ1JFQVRFIFZBUklBQkxFIHYxIEFTIG51bWVyaWMg REVGQVVMVCBwaSgpOworTEVUIHYxID0gdjEgKiAyOworU0VMRUNUIHYxOworCitDUkVBVEUgVFlQ RSB0MiBBUyAoYSBudW1lcmljLCBiIHRleHQpOworQ1JFQVRFIFZBUklBQkxFIHYyIEFTIHQyIERF RkFVTFQgKE5VTEwsICdIZWxsbycpOworTEVUIHB1YmxpYy52Mi5hID0gcGkoKTsKK1NFTEVDVCB2 MjsKKworLS0gc2hvdWRsIGZhaWwgZHVlIGRlcGVuZGVuY3kKK0RST1AgVFlQRSB0MjsKKworLS0g c2hvdWxkIGJlIG9rCitEUk9QIFZBUklBQkxFIHYxOworRFJPUCBWQVJJQUJMRSB2MjsK --00000000000085fea50572f26009--