Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w2Pe6-000GbI-1X for pgsql-hackers@arkaria.postgresql.org; Tue, 17 Mar 2026 08:19:23 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w2Pe5-00HALP-0m for pgsql-hackers@arkaria.postgresql.org; Tue, 17 Mar 2026 08:19:21 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w2Pe4-00HALH-0Y for pgsql-hackers@lists.postgresql.org; Tue, 17 Mar 2026 08:19:20 +0000 Received: from mail-qv1-xf33.google.com ([2607:f8b0:4864:20::f33]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w2Pdz-000000009b0-30VY for pgsql-hackers@lists.postgresql.org; Tue, 17 Mar 2026 08:19:19 +0000 Received: by mail-qv1-xf33.google.com with SMTP id 6a1803df08f44-89a0ece9f14so67117616d6.3 for ; Tue, 17 Mar 2026 01:19:17 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1773735556; cv=none; d=google.com; s=arc-20240605; b=ZRrhqp3TXs8jJ+WXkSJ+5EOvTwL/rOpvcBLfkskxopqteH8XI/n4kkfegxiTwTibDI ixDqvC+oCuhCMcfP0Sqwyr/kj67Dgw2iNKQ5sNBDG7tjjDjVQjWurxcY23yf4avFMZe/ wel+dzHUVezSYja0LmxzgpRnNVFyoDScUgAg2UYtIGdfPv8GoMvXG/WlNwZVf3udEC6q vOFh+Fy03zXY0hDJAqJ+XIshjb802r2+cAyxQN0m4odqYeXi/H6k+/HTJoJpQah763Pf HpifVGlpTAiIeDYiMW9pplXlzJ4YHAduQTgZjiJ3b9FmQbmZHMLfcGswQej7uI3m6uBB hd0A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=vdzUnJPXmc1acs3i+y+CleHm+k7+f3lny0Zvt7YoNck=; fh=pk+Chi29d/EsMWjvtAmVy8Myxaz672EK26MVLrlUtk8=; b=Ps8BZzkU8tBnELhoB7h4v7B12c7lRzwIKGQq+fPLJDwRgfRbUiPCb3eMhpURySWZjw rzyl0hspJASK+ZBsreK9T42+U0bNgW+/vM+GyY3acQVYuVv6XbW/HrIP5PTXo5iHhIQT l1EnPV+X1CSmc7W5pem7khWiBeunUYoErcn0TrXt6tXtZDj8dttY0L3RqM1TL2zLRLvE A5sRyGLhc/YT8O/IvHm9wKPhlYld9cEWNuXErvPnQJTXfAJRIfhOqgS3qlq7ZsKE0qqj s7EUJZHZkKMfmlJDsecukcGIh6YMQnHCbASbD+KlxYEuzJ+fut3O3RwGQ4kSK7hcqlxz 4KLQ==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fittl.com; s=google; t=1773735556; x=1774340356; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=vdzUnJPXmc1acs3i+y+CleHm+k7+f3lny0Zvt7YoNck=; b=KNcRy18J2C2E8e2n7Q8DHs4p8vW9EvEt/s8h+YSHHxfmyY5wqDx4NCvFkI2rpWmf1Q UChvw7/yK/cncJ6sqI/DoBfUJlZSLjKvDsexYlWhzd48mjF7hUJ9WL0z2cn+aVyjYjZp +BJanbXSfw3BoHQ1VKfD5or8M2oWNjXtvPbHw= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773735556; x=1774340356; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=vdzUnJPXmc1acs3i+y+CleHm+k7+f3lny0Zvt7YoNck=; b=ffk23ZxFCk5LUF187avkdAvycOIFWtGOPzzVYKICjvmamIxHkKPxFpEr0b+c8fxDq3 HL/8souTazRUAHLcnxMJh6QU0ErccSejNckVezlw8TZBHHdXLEIUusz2o6QfV926r62u vG8NmQcHtn0KwxDBy1kVn+Bfo4Wa3RXintyvl0xOii+DInSpWGkxrHW8sEjEpyQFY+fs lNd9hW58XHPOaLoDtuPp5xO+dSMSw95eZDmEEUOacJqrEF/MlUk9UJjb1D1sMlTwqLKr 3Zp7cxKJFvDEWnoUoabiR5D6cyGjfhBL4jTokW5Slngsr06YfqmTk4r7uS9na3eEbEJU 7AoQ== X-Gm-Message-State: AOJu0YwDC/ifOM/WwU+dKXX3MjjecpN3DnmfIs+L68ptdaDMKuG/lt/f gqaxzW5Z6aERq1JOzyEzE+CpzksQ6Ytw5qfvayhCjCyIsQKW+tbV7+X5ZKfc8ogW5wBVbylq9ig FSgILwsb/Mv8tBf96QMKra7i4uvSzv1SNSdFYOOnp X-Gm-Gg: ATEYQzxiauqaq5Wb+zM1Do1ysF7wH82dD7Rw2WJFdn8EwV61BxKc2V+nF49eCqkBqxD j41bUgq6KY8PpZOqZtInDWR71oUUfXru3/1gVbcJsKADnchMRvDd5jKnCt+kmEWn7Ojjv6avtj0 Lwmh4/8pYGglaobKShV9pnk6crU5fqNBhw3K3gfcn93aFpMoHqso2DVkOdxLzty7xXrxUri0pGZ AVhdsgTXlPlZuIFzIpTZlg1ZrXNg0IupWsIYCi/wql2Gv61RhirHm9nD30km3so+VAVxqKmCtAH zv+4d90178YmcMns+BRMF8r7eMs+31xtl7Ye0tCq X-Received: by 2002:a05:6214:27ca:b0:899:fc7b:3884 with SMTP id 6a1803df08f44-89a8203fc82mr247611966d6.57.1773735556264; Tue, 17 Mar 2026 01:19:16 -0700 (PDT) MIME-Version: 1.0 References: <06086cb4-881b-4f5a-96af-f275220ff52d@vondra.me> In-Reply-To: From: Lukas Fittl Date: Tue, 17 Mar 2026 01:18:38 -0700 X-Gm-Features: AaiRm50pSqlB7vh6PuHIp9_kHXhFJBGj7U6xayIJGP4u1922pwP_NtN1AELAMRw Message-ID: Subject: Re: Stack-based tracking of per-node WAL/buffer usage To: Zsolt Parragi , Tomas Vondra Cc: PostgreSQL Hackers , Andres Freund , Peter Smith Content-Type: multipart/mixed; boundary="000000000000c2e7d4064d33fd67" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000c2e7d4064d33fd67 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi Tomas and Zsolt, On Mon, Mar 16, 2026 at 4:50=E2=80=AFPM Tomas Vondra wrot= e: > On 3/14/26 21:49, Lukas Fittl wrote: > > Regarding Index-Only Scans, I did not add instrumentation for table > > access yet - I might add that in a follow-up revision or we could also > > do it in a follow-on patch. > > > > I think we should, and it probably should be done in the same commit as > for plain index scans. Mostly for consistency / less confusion. > > Every now and then there's an index-only scan that has to do a lot of > heap fetches, possibly just as many as the plain index scan. But the IOS > version would not say how many buffer accesses are for table, and users > might assume an index-only scan does not access table. Confusing. Makes sense - added support for index-only scans in the same commit now. > I only started to look at the patch today, so I don't have any real > review comments. But I noticed the pg_session_buffer_usage is added only > to the contrib/meson.build and not to the Makefile. I assume that's not > intentional. Yeah, that was missed, thanks! For context, pg_session_buffer_usage is not necessarily meant to be committed, its just testing a few edge cases around aborts that can't be easily tested otherwise. On Mon, Mar 16, 2026 at 11:21=E2=80=AFPM Zsolt Parragi wrote: > > + TriggerInstrumentation *ti =3D rInfo->ri_TrigInstrument; > + > + if (ti && (ti->instr.need_bufusage || ti->instr.need_walusage)) > + InstrAccum(instr_stack.current, &ti->instr); > > I think there's one more bug here, isn't ti an array? This seems to > only process the first entry, not all of them. Good catch, fixed! > +InstrPopStackTo(Instrumentation *prev) > +{ > + Assert(instr_stack.stack_size > 0); > + instr_stack.stack_size--; > + instr_stack.current =3D prev; > +} > + > > Shouldn't this have the same additional assertion as InstrPopStack? Yep, added. It has to be slightly different because we're passing the previous stack entry (hence the "To" in the function name), vs the current one (to save instructions), but probably helpful to have that assurance. --- See attached v9, with 0001 to 0004 the same as before. 0005 has the following additional changes beyond what's mentioned above: - Replaced individual need_bufusage/need_walusage flags on Instrumentation with a single "need_stack" (to fix duplication of checks noted by Tomas over in [0]) - Renamed InstrAccum to InstrAccumStack to clarify it only accumulates stack entries, not total time (which is also part of Instrumentation, but doesn't use the stack mechanism) - Fixed a stale comment on InstrPushStack regarding resource owner / PG_FINALLY use 0006 is the patch moved here now that I shared over in [0] to help with the IOUsage case. I think up to 0006 would be the required patches to allow the work in that thread to use the stack-based instrumentation. 0007 (ExecProcNodeInstr optimization) has minor change to adjust ExecProcNodeInstr function naming to be less specific to WAL/buffer usage, in anticipation of potentially adding IOUsage. 0008 (Index scans: Show table buffer accesses) added Index Only Scan support, and switched IndexScanInstrumentation to use Instrumentation struct instead of individual Buffer/WALUsage for passing back parallel worker info - that avoids accidentally missing new types of stack-based instrumentation being passed back, which would then be missing from query totals. Thanks, Lukas [0]: https://www.postgresql.org/message-id/41d87d75-d126-438b-a02e-6671142d= 39b7@vondra.me --=20 Lukas Fittl --000000000000c2e7d4064d33fd67 Content-Type: application/octet-stream; name="v9-0002-instrumentation-Separate-per-node-logic-from-othe.patch" Content-Disposition: attachment; filename="v9-0002-instrumentation-Separate-per-node-logic-from-othe.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmucb65m1 RnJvbSAxNjdiYzAxM2E1ODM3MjNmYzliZWQwNzFjYWFkZTdkM2RkMDE5OGExIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpEYXRlOiBT YXQsIDcgTWFyIDIwMjYgMDE6MTk6NTAgLTA4MDAKU3ViamVjdDogW1BBVENIIHY5IDIvOV0gaW5z dHJ1bWVudGF0aW9uOiBTZXBhcmF0ZSBwZXItbm9kZSBsb2dpYyBmcm9tIG90aGVyCiB1c2VzCgpQ cmV2aW91c2x5IGRpZmZlcmVudCBwbGFjZXMgKGUuZy4gcXVlcnkgInRvdGFsIHRpbWUiKSB3ZXJl IHJlcHVycG9zaW5nCnRoZSBJbnN0cnVtZW50YXRpb24gc3RydWN0IGluaXRpYWxseSBpbnRyb2R1 Y2VkIGZvciBjYXB0dXJpbmcgcGVyLW5vZGUKc3RhdGlzdGljcyBkdXJpbmcgZXhlY3V0aW9uLiBU aGlzIG92ZXJ1c2Ugb2YgdGhlIHNhbWUgc3RydWN0IGlzIGNvbmZ1c2luZywKZS5nLiBieSBjbHV0 dGVyaW5nIGNhbGxzIG9mIEluc3RyU3RhcnROb2RlL0luc3RyU3RvcE5vZGUgaW4gdW5yZWxhdGVk CmNvZGUgcGF0aHMsIGFuZCBwcmV2ZW50cyBmdXR1cmUgcmVmYWN0b3JpbmdzLgoKSW5zdGVhZCwg c2ltcGxpZnkgdGhlIEluc3RydW1lbnRhdGlvbiBzdHJ1Y3QgdG8gb25seSB0cmFjayB0aW1lIGFu ZApXQUwvYnVmZmVyIHVzYWdlLiBTaW1pbGFybHksIGRyb3AgdGhlIHVzZSBvZiBJbnN0ckVuZExv b3Agb3V0c2lkZSBvZgpwZXItbm9kZSBpbnN0cnVtZW50YXRpb24gLSB0aGVzZSBjYWxscyB3ZXJl IGFkZGVkIHdpdGhvdXQgYW55IGFwcGFyZW50CmJlbmVmaXQgc2luY2UgdGhlIHJlbGV2YW50IGZp ZWxkcyB3ZXJlIG5ldmVyIHJlYWQuCgpJbnRyb2R1Y2UgdGhlIE5vZGVJbnN0cnVtZW50YXRpb24g c3RydWN0IHRvIGNhcnJ5IGZvcndhcmQgdGhlIHBlci1ub2RlCmluc3RydW1lbnRhdGlvbiBpbmZv cm1hdGlvbi4gV29ya2VySW5zdHJ1bWVudGF0aW9uIGlzIHJlbmFtZWQgdG8KV29ya2VyTm9kZUlu c3RydW1lbnRhdGlvbiBmb3IgY2xhcml0eS4KCkluIHBhc3NpbmcsIGRyb3AgdGhlICJuIiBhcmd1 bWVudCB0byBJbnN0ckFsbG9jLCBhcyBhbGwgcmVtYWluaW5nIGNhbGxlcnMKbmVlZCBleGFjdGx5 IG9uZSBJbnN0cnVtZW50YXRpb24gc3RydWN0LgoKQXV0aG9yOiBMdWthcyBGaXR0bCA8bHVrYXNA Zml0dGwuY29tPgpSZXZpZXdlZC1ieToKRGlzY3Vzc2lvbjoKLS0tCiBjb250cmliL2F1dG9fZXhw bGFpbi9hdXRvX2V4cGxhaW4uYyAgICAgICAgICAgfCAgIDggKy0KIC4uLi9wZ19zdGF0X3N0YXRl bWVudHMvcGdfc3RhdF9zdGF0ZW1lbnRzLmMgICB8ICAgOCArLQogY29udHJpYi9wb3N0Z3Jlc19m ZHcvcG9zdGdyZXNfZmR3LmMgICAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9jb21tYW5k cy9leHBsYWluLmMgICAgICAgICAgICAgICAgfCAgMjAgKy0tCiBzcmMvYmFja2VuZC9leGVjdXRv ci9leGVjTWFpbi5jICAgICAgICAgICAgICAgfCAgIDggKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9y L2V4ZWNQYXJhbGxlbC5jICAgICAgICAgICB8ICAyNCArLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9y L2V4ZWNQcm9jbm9kZS5jICAgICAgICAgICB8ICAgNCArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Iv aW5zdHJ1bWVudC5jICAgICAgICAgICAgIHwgMTQyICsrKysrKysrKysrKy0tLS0tLQogc3JjL2lu Y2x1ZGUvZXhlY3V0b3IvaW5zdHJ1bWVudC5oICAgICAgICAgICAgIHwgIDYwICsrKysrLS0tCiBz cmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCAgICAgICAgICAgICAgICAgfCAgIDYgKy0KIHNy Yy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0ICAgICAgICAgICAgICB8ICAgMyArLQogMTEg ZmlsZXMgY2hhbmdlZCwgMTcyIGluc2VydGlvbnMoKyksIDExMyBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9jb250cmliL2F1dG9fZXhwbGFpbi9hdXRvX2V4cGxhaW4uYyBiL2NvbnRyaWIvYXV0 b19leHBsYWluL2F1dG9fZXhwbGFpbi5jCmluZGV4IGU4NTZjZDM1YTZmLi4zOWJmMjU0M2I3MCAx MDA2NDQKLS0tIGEvY29udHJpYi9hdXRvX2V4cGxhaW4vYXV0b19leHBsYWluLmMKKysrIGIvY29u dHJpYi9hdXRvX2V4cGxhaW4vYXV0b19leHBsYWluLmMKQEAgLTMxNSw3ICszMTUsNyBAQCBleHBs YWluX0V4ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAJCQlN ZW1vcnlDb250ZXh0IG9sZGN4dDsKIAogCQkJb2xkY3h0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRv KHF1ZXJ5RGVzYy0+ZXN0YXRlLT5lc19xdWVyeV9jeHQpOwotCQkJcXVlcnlEZXNjLT50b3RhbHRp bWUgPSBJbnN0ckFsbG9jKDEsIElOU1RSVU1FTlRfQUxMLCBmYWxzZSk7CisJCQlxdWVyeURlc2Mt PnRvdGFsdGltZSA9IEluc3RyQWxsb2MoSU5TVFJVTUVOVF9BTEwpOwogCQkJTWVtb3J5Q29udGV4 dFN3aXRjaFRvKG9sZGN4dCk7CiAJCX0KIAl9CkBAIC0zODEsMTIgKzM4MSw2IEBAIGV4cGxhaW5f RXhlY3V0b3JFbmQoUXVlcnlEZXNjICpxdWVyeURlc2MpCiAJCSAqLwogCQlvbGRjeHQgPSBNZW1v cnlDb250ZXh0U3dpdGNoVG8ocXVlcnlEZXNjLT5lc3RhdGUtPmVzX3F1ZXJ5X2N4dCk7CiAKLQkJ LyoKLQkJICogTWFrZSBzdXJlIHN0YXRzIGFjY3VtdWxhdGlvbiBpcyBkb25lLiAgKE5vdGU6IGl0 J3Mgb2theSBpZiBzZXZlcmFsCi0JCSAqIGxldmVscyBvZiBob29rIGFsbCBkbyB0aGlzLikKLQkJ ICovCi0JCUluc3RyRW5kTG9vcChxdWVyeURlc2MtPnRvdGFsdGltZSk7Ci0KIAkJLyogTG9nIHBs YW4gaWYgZHVyYXRpb24gaXMgZXhjZWVkZWQuICovCiAJCW1zZWMgPSBJTlNUUl9USU1FX0dFVF9N SUxMSVNFQyhxdWVyeURlc2MtPnRvdGFsdGltZS0+dG90YWwpOwogCQlpZiAobXNlYyA+PSBhdXRv X2V4cGxhaW5fbG9nX21pbl9kdXJhdGlvbikKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfc3RhdF9z dGF0ZW1lbnRzL3BnX3N0YXRfc3RhdGVtZW50cy5jIGIvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVu dHMvcGdfc3RhdF9zdGF0ZW1lbnRzLmMKaW5kZXggNmNiMTQ4MjRlYzMuLjNlNzkxMDg4NDZlIDEw MDY0NAotLS0gYS9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9wZ19zdGF0X3N0YXRlbWVudHMu YworKysgYi9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9wZ19zdGF0X3N0YXRlbWVudHMuYwpA QCAtMTAyNCw3ICsxMDI0LDcgQEAgcGdzc19FeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlE ZXNjLCBpbnQgZWZsYWdzKQogCQkJTWVtb3J5Q29udGV4dCBvbGRjeHQ7CiAKIAkJCW9sZGN4dCA9 IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhxdWVyeURlc2MtPmVzdGF0ZS0+ZXNfcXVlcnlfY3h0KTsK LQkJCXF1ZXJ5RGVzYy0+dG90YWx0aW1lID0gSW5zdHJBbGxvYygxLCBJTlNUUlVNRU5UX0FMTCwg ZmFsc2UpOworCQkJcXVlcnlEZXNjLT50b3RhbHRpbWUgPSBJbnN0ckFsbG9jKElOU1RSVU1FTlRf QUxMKTsKIAkJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjeHQpOwogCQl9CiAJfQpAQCAtMTA4 MywxMiArMTA4Myw2IEBAIHBnc3NfRXhlY3V0b3JFbmQoUXVlcnlEZXNjICpxdWVyeURlc2MpCiAJ aWYgKHF1ZXJ5SWQgIT0gSU5UNjRDT05TVCgwKSAmJiBxdWVyeURlc2MtPnRvdGFsdGltZSAmJgog CQlwZ3NzX2VuYWJsZWQobmVzdGluZ19sZXZlbCkpCiAJewotCQkvKgotCQkgKiBNYWtlIHN1cmUg c3RhdHMgYWNjdW11bGF0aW9uIGlzIGRvbmUuICAoTm90ZTogaXQncyBva2F5IGlmIHNldmVyYWwK LQkJICogbGV2ZWxzIG9mIGhvb2sgYWxsIGRvIHRoaXMuKQotCQkgKi8KLQkJSW5zdHJFbmRMb29w KHF1ZXJ5RGVzYy0+dG90YWx0aW1lKTsKLQogCQlwZ3NzX3N0b3JlKHF1ZXJ5RGVzYy0+c291cmNl VGV4dCwKIAkJCQkgICBxdWVyeUlkLAogCQkJCSAgIHF1ZXJ5RGVzYy0+cGxhbm5lZHN0bXQtPnN0 bXRfbG9jYXRpb24sCmRpZmYgLS1naXQgYS9jb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19m ZHcuYyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3Bvc3RncmVzX2Zkdy5jCmluZGV4IDQxZTQ3Y2M3 OTViLi5jYzhlYzI0YzMwZSAxMDA2NDQKLS0tIGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvcG9zdGdy ZXNfZmR3LmMKKysrIGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvcG9zdGdyZXNfZmR3LmMKQEAgLTI3 NzksNyArMjc3OSw3IEBAIHBvc3RncmVzSXRlcmF0ZURpcmVjdE1vZGlmeShGb3JlaWduU2NhblN0 YXRlICpub2RlKQogCWlmICghcmVzdWx0UmVsSW5mby0+cmlfcHJvamVjdFJldHVybmluZykKIAl7 CiAJCVR1cGxlVGFibGVTbG90ICpzbG90ID0gbm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdDsKLQkJ SW5zdHJ1bWVudGF0aW9uICppbnN0ciA9IG5vZGUtPnNzLnBzLmluc3RydW1lbnQ7CisJCU5vZGVJ bnN0cnVtZW50YXRpb24gKmluc3RyID0gbm9kZS0+c3MucHMuaW5zdHJ1bWVudDsKIAogCQlBc3Nl cnQoIWRtc3RhdGUtPmhhc19yZXR1cm5pbmcpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9j b21tYW5kcy9leHBsYWluLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKaW5kZXgg ODM5MWM1YWIyZGEuLmJlYmFkNTdlZmY1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5k cy9leHBsYWluLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCkBAIC0xODM3 LDcgKzE4MzcsNyBAQCBFeHBsYWluTm9kZShQbGFuU3RhdGUgKnBsYW5zdGF0ZSwgTGlzdCAqYW5j ZXN0b3JzLAogCXsKIAkJZG91YmxlCQlubG9vcHMgPSBwbGFuc3RhdGUtPmluc3RydW1lbnQtPm5s b29wczsKIAkJZG91YmxlCQlzdGFydHVwX21zID0gSU5TVFJfVElNRV9HRVRfTUlMTElTRUMocGxh bnN0YXRlLT5pbnN0cnVtZW50LT5zdGFydHVwKSAvIG5sb29wczsKLQkJZG91YmxlCQl0b3RhbF9t cyA9IElOU1RSX1RJTUVfR0VUX01JTExJU0VDKHBsYW5zdGF0ZS0+aW5zdHJ1bWVudC0+dG90YWwp IC8gbmxvb3BzOworCQlkb3VibGUJCXRvdGFsX21zID0gSU5TVFJfVElNRV9HRVRfTUlMTElTRUMo cGxhbnN0YXRlLT5pbnN0cnVtZW50LT5pbnN0ci50b3RhbCkgLyBubG9vcHM7CiAJCWRvdWJsZQkJ cm93cyA9IHBsYW5zdGF0ZS0+aW5zdHJ1bWVudC0+bnR1cGxlcyAvIG5sb29wczsKIAogCQlpZiAo ZXMtPmZvcm1hdCA9PSBFWFBMQUlOX0ZPUk1BVF9URVhUKQpAQCAtMTg5MCwxMSArMTg5MCwxMSBA QCBFeHBsYWluTm9kZShQbGFuU3RhdGUgKnBsYW5zdGF0ZSwgTGlzdCAqYW5jZXN0b3JzLAogCS8q IHByZXBhcmUgcGVyLXdvcmtlciBnZW5lcmFsIGV4ZWN1dGlvbiBkZXRhaWxzICovCiAJaWYgKGVz LT53b3JrZXJzX3N0YXRlICYmIGVzLT52ZXJib3NlKQogCXsKLQkJV29ya2VySW5zdHJ1bWVudGF0 aW9uICp3ID0gcGxhbnN0YXRlLT53b3JrZXJfaW5zdHJ1bWVudDsKKwkJV29ya2VyTm9kZUluc3Ry dW1lbnRhdGlvbiAqdyA9IHBsYW5zdGF0ZS0+d29ya2VyX2luc3RydW1lbnQ7CiAKIAkJZm9yIChp bnQgbiA9IDA7IG4gPCB3LT5udW1fd29ya2VyczsgbisrKQogCQl7Ci0JCQlJbnN0cnVtZW50YXRp b24gKmluc3RydW1lbnQgPSAmdy0+aW5zdHJ1bWVudFtuXTsKKwkJCU5vZGVJbnN0cnVtZW50YXRp b24gKmluc3RydW1lbnQgPSAmdy0+aW5zdHJ1bWVudFtuXTsKIAkJCWRvdWJsZQkJbmxvb3BzID0g aW5zdHJ1bWVudC0+bmxvb3BzOwogCQkJZG91YmxlCQlzdGFydHVwX21zOwogCQkJZG91YmxlCQl0 b3RhbF9tczsKQEAgLTE5MDMsNyArMTkwMyw3IEBAIEV4cGxhaW5Ob2RlKFBsYW5TdGF0ZSAqcGxh bnN0YXRlLCBMaXN0ICphbmNlc3RvcnMsCiAJCQlpZiAobmxvb3BzIDw9IDApCiAJCQkJY29udGlu dWU7CiAJCQlzdGFydHVwX21zID0gSU5TVFJfVElNRV9HRVRfTUlMTElTRUMoaW5zdHJ1bWVudC0+ c3RhcnR1cCkgLyBubG9vcHM7Ci0JCQl0b3RhbF9tcyA9IElOU1RSX1RJTUVfR0VUX01JTExJU0VD KGluc3RydW1lbnQtPnRvdGFsKSAvIG5sb29wczsKKwkJCXRvdGFsX21zID0gSU5TVFJfVElNRV9H RVRfTUlMTElTRUMoaW5zdHJ1bWVudC0+aW5zdHIudG90YWwpIC8gbmxvb3BzOwogCQkJcm93cyA9 IGluc3RydW1lbnQtPm50dXBsZXMgLyBubG9vcHM7CiAKIAkJCUV4cGxhaW5PcGVuV29ya2VyKG4s IGVzKTsKQEAgLTIyOTAsMTggKzIyOTAsMTggQEAgRXhwbGFpbk5vZGUoUGxhblN0YXRlICpwbGFu c3RhdGUsIExpc3QgKmFuY2VzdG9ycywKIAogCS8qIFNob3cgYnVmZmVyL1dBTCB1c2FnZSAqLwog CWlmIChlcy0+YnVmZmVycyAmJiBwbGFuc3RhdGUtPmluc3RydW1lbnQpCi0JCXNob3dfYnVmZmVy X3VzYWdlKGVzLCAmcGxhbnN0YXRlLT5pbnN0cnVtZW50LT5idWZ1c2FnZSk7CisJCXNob3dfYnVm ZmVyX3VzYWdlKGVzLCAmcGxhbnN0YXRlLT5pbnN0cnVtZW50LT5pbnN0ci5idWZ1c2FnZSk7CiAJ aWYgKGVzLT53YWwgJiYgcGxhbnN0YXRlLT5pbnN0cnVtZW50KQotCQlzaG93X3dhbF91c2FnZShl cywgJnBsYW5zdGF0ZS0+aW5zdHJ1bWVudC0+d2FsdXNhZ2UpOworCQlzaG93X3dhbF91c2FnZShl cywgJnBsYW5zdGF0ZS0+aW5zdHJ1bWVudC0+aW5zdHIud2FsdXNhZ2UpOwogCiAJLyogUHJlcGFy ZSBwZXItd29ya2VyIGJ1ZmZlci9XQUwgdXNhZ2UgKi8KIAlpZiAoZXMtPndvcmtlcnNfc3RhdGUg JiYgKGVzLT5idWZmZXJzIHx8IGVzLT53YWwpICYmIGVzLT52ZXJib3NlKQogCXsKLQkJV29ya2Vy SW5zdHJ1bWVudGF0aW9uICp3ID0gcGxhbnN0YXRlLT53b3JrZXJfaW5zdHJ1bWVudDsKKwkJV29y a2VyTm9kZUluc3RydW1lbnRhdGlvbiAqdyA9IHBsYW5zdGF0ZS0+d29ya2VyX2luc3RydW1lbnQ7 CiAKIAkJZm9yIChpbnQgbiA9IDA7IG4gPCB3LT5udW1fd29ya2VyczsgbisrKQogCQl7Ci0JCQlJ bnN0cnVtZW50YXRpb24gKmluc3RydW1lbnQgPSAmdy0+aW5zdHJ1bWVudFtuXTsKKwkJCU5vZGVJ bnN0cnVtZW50YXRpb24gKmluc3RydW1lbnQgPSAmdy0+aW5zdHJ1bWVudFtuXTsKIAkJCWRvdWJs ZQkJbmxvb3BzID0gaW5zdHJ1bWVudC0+bmxvb3BzOwogCiAJCQlpZiAobmxvb3BzIDw9IDApCkBA IC0yMzA5LDkgKzIzMDksOSBAQCBFeHBsYWluTm9kZShQbGFuU3RhdGUgKnBsYW5zdGF0ZSwgTGlz dCAqYW5jZXN0b3JzLAogCiAJCQlFeHBsYWluT3BlbldvcmtlcihuLCBlcyk7CiAJCQlpZiAoZXMt PmJ1ZmZlcnMpCi0JCQkJc2hvd19idWZmZXJfdXNhZ2UoZXMsICZpbnN0cnVtZW50LT5idWZ1c2Fn ZSk7CisJCQkJc2hvd19idWZmZXJfdXNhZ2UoZXMsICZpbnN0cnVtZW50LT5pbnN0ci5idWZ1c2Fn ZSk7CiAJCQlpZiAoZXMtPndhbCkKLQkJCQlzaG93X3dhbF91c2FnZShlcywgJmluc3RydW1lbnQt PndhbHVzYWdlKTsKKwkJCQlzaG93X3dhbF91c2FnZShlcywgJmluc3RydW1lbnQtPmluc3RyLndh bHVzYWdlKTsKIAkJCUV4cGxhaW5DbG9zZVdvcmtlcihuLCBlcyk7CiAJCX0KIAl9CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY01haW4uYwppbmRleCA1MzYzMTE2M2RkNi4uMWI5NTAwNDA1OTcgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY01haW4uYwpAQCAtMzMzLDcgKzMzMyw3IEBAIHN0YW5kYXJkX0V4ZWN1dG9yUnVuKFF1 ZXJ5RGVzYyAqcXVlcnlEZXNjLAogCiAJLyogQWxsb3cgaW5zdHJ1bWVudGF0aW9uIG9mIEV4ZWN1 dG9yIG92ZXJhbGwgcnVudGltZSAqLwogCWlmIChxdWVyeURlc2MtPnRvdGFsdGltZSkKLQkJSW5z dHJTdGFydE5vZGUocXVlcnlEZXNjLT50b3RhbHRpbWUpOworCQlJbnN0clN0YXJ0KHF1ZXJ5RGVz Yy0+dG90YWx0aW1lKTsKIAogCS8qCiAJICogZXh0cmFjdCBpbmZvcm1hdGlvbiBmcm9tIHRoZSBx dWVyeSBkZXNjcmlwdG9yIGFuZCB0aGUgcXVlcnkgZmVhdHVyZS4KQEAgLTM4NSw3ICszODUsNyBA QCBzdGFuZGFyZF9FeGVjdXRvclJ1bihRdWVyeURlc2MgKnF1ZXJ5RGVzYywKIAkJZGVzdC0+clNo dXRkb3duKGRlc3QpOwogCiAJaWYgKHF1ZXJ5RGVzYy0+dG90YWx0aW1lKQotCQlJbnN0clN0b3BO b2RlKHF1ZXJ5RGVzYy0+dG90YWx0aW1lLCBlc3RhdGUtPmVzX3Byb2Nlc3NlZCk7CisJCUluc3Ry U3RvcChxdWVyeURlc2MtPnRvdGFsdGltZSk7CiAKIAlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xk Y29udGV4dCk7CiB9CkBAIC00MzUsNyArNDM1LDcgQEAgc3RhbmRhcmRfRXhlY3V0b3JGaW5pc2go UXVlcnlEZXNjICpxdWVyeURlc2MpCiAKIAkvKiBBbGxvdyBpbnN0cnVtZW50YXRpb24gb2YgRXhl Y3V0b3Igb3ZlcmFsbCBydW50aW1lICovCiAJaWYgKHF1ZXJ5RGVzYy0+dG90YWx0aW1lKQotCQlJ bnN0clN0YXJ0Tm9kZShxdWVyeURlc2MtPnRvdGFsdGltZSk7CisJCUluc3RyU3RhcnQocXVlcnlE ZXNjLT50b3RhbHRpbWUpOwogCiAJLyogUnVuIE1vZGlmeVRhYmxlIG5vZGVzIHRvIGNvbXBsZXRp b24gKi8KIAlFeGVjUG9zdHByb2Nlc3NQbGFuKGVzdGF0ZSk7CkBAIC00NDUsNyArNDQ1LDcgQEAg c3RhbmRhcmRfRXhlY3V0b3JGaW5pc2goUXVlcnlEZXNjICpxdWVyeURlc2MpCiAJCUFmdGVyVHJp Z2dlckVuZFF1ZXJ5KGVzdGF0ZSk7CiAKIAlpZiAocXVlcnlEZXNjLT50b3RhbHRpbWUpCi0JCUlu c3RyU3RvcE5vZGUocXVlcnlEZXNjLT50b3RhbHRpbWUsIDApOworCQlJbnN0clN0b3AocXVlcnlE ZXNjLT50b3RhbHRpbWUpOwogCiAJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOwog CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jCmluZGV4IGFjODRhZjI5NGM5Li5jMTUzZDVj MWMzYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMKKysr IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMKQEAgLTg3LDcgKzg3LDcgQEAg dHlwZWRlZiBzdHJ1Y3QgRml4ZWRQYXJhbGxlbEV4ZWN1dG9yU3RhdGUKICAqIGluc3RydW1lbnRf b3B0aW9uczogU2FtZSBtZWFuaW5nIGhlcmUgYXMgaW4gaW5zdHJ1bWVudC5jLgogICoKICAqIGlu c3RydW1lbnRfb2Zmc2V0OiBPZmZzZXQsIHJlbGF0aXZlIHRvIHRoZSBzdGFydCBvZiB0aGlzIHN0 cnVjdHVyZSwKLSAqIG9mIHRoZSBmaXJzdCBJbnN0cnVtZW50YXRpb24gb2JqZWN0LiAgVGhpcyB3 aWxsIGRlcGVuZCBvbiB0aGUgbGVuZ3RoIG9mCisgKiBvZiB0aGUgZmlyc3QgTm9kZUluc3RydW1l bnRhdGlvbiBvYmplY3QuICBUaGlzIHdpbGwgZGVwZW5kIG9uIHRoZSBsZW5ndGggb2YKICAqIHRo ZSBwbGFuX25vZGVfaWQgYXJyYXkuCiAgKgogICogbnVtX3dvcmtlcnM6IE51bWJlciBvZiB3b3Jr ZXJzLgpAQCAtMTA0LDExICsxMDQsMTUgQEAgc3RydWN0IFNoYXJlZEV4ZWN1dG9ySW5zdHJ1bWVu dGF0aW9uCiAJaW50CQkJbnVtX3dvcmtlcnM7CiAJaW50CQkJbnVtX3BsYW5fbm9kZXM7CiAJaW50 CQkJcGxhbl9ub2RlX2lkW0ZMRVhJQkxFX0FSUkFZX01FTUJFUl07Ci0JLyogYXJyYXkgb2YgbnVt X3BsYW5fbm9kZXMgKiBudW1fd29ya2VycyBJbnN0cnVtZW50YXRpb24gb2JqZWN0cyBmb2xsb3dz ICovCisKKwkvKgorCSAqIGFycmF5IG9mIG51bV9wbGFuX25vZGVzICogbnVtX3dvcmtlcnMgTm9k ZUluc3RydW1lbnRhdGlvbiBvYmplY3RzCisJICogZm9sbG93cworCSAqLwogfTsKICNkZWZpbmUg R2V0SW5zdHJ1bWVudGF0aW9uQXJyYXkoc2VpKSBcCiAJKFN0YXRpY0Fzc2VydFZhcmlhYmxlSXNP ZlR5cGVNYWNybyhzZWksIFNoYXJlZEV4ZWN1dG9ySW5zdHJ1bWVudGF0aW9uICopLCBcCi0JIChJ bnN0cnVtZW50YXRpb24gKikgKCgoY2hhciAqKSBzZWkpICsgc2VpLT5pbnN0cnVtZW50X29mZnNl dCkpCisJIChOb2RlSW5zdHJ1bWVudGF0aW9uICopICgoKGNoYXIgKikgc2VpKSArIHNlaS0+aW5z dHJ1bWVudF9vZmZzZXQpKQogCiAvKiBDb250ZXh0IG9iamVjdCBmb3IgRXhlY1BhcmFsbGVsRXN0 aW1hdGUuICovCiB0eXBlZGVmIHN0cnVjdCBFeGVjUGFyYWxsZWxFc3RpbWF0ZUNvbnRleHQKQEAg LTcyNSw3ICs3MjksNyBAQCBFeGVjSW5pdFBhcmFsbGVsUGxhbihQbGFuU3RhdGUgKnBsYW5zdGF0 ZSwgRVN0YXRlICplc3RhdGUsCiAJCWluc3RydW1lbnRhdGlvbl9sZW4gPSBNQVhBTElHTihpbnN0 cnVtZW50YXRpb25fbGVuKTsKIAkJaW5zdHJ1bWVudF9vZmZzZXQgPSBpbnN0cnVtZW50YXRpb25f bGVuOwogCQlpbnN0cnVtZW50YXRpb25fbGVuICs9Ci0JCQltdWxfc2l6ZShzaXplb2YoSW5zdHJ1 bWVudGF0aW9uKSwKKwkJCW11bF9zaXplKHNpemVvZihOb2RlSW5zdHJ1bWVudGF0aW9uKSwKIAkJ CQkJIG11bF9zaXplKGUubm5vZGVzLCBud29ya2VycykpOwogCQlzaG1fdG9jX2VzdGltYXRlX2No dW5rKCZwY3h0LT5lc3RpbWF0b3IsIGluc3RydW1lbnRhdGlvbl9sZW4pOwogCQlzaG1fdG9jX2Vz dGltYXRlX2tleXMoJnBjeHQtPmVzdGltYXRvciwgMSk7CkBAIC04MTEsNyArODE1LDcgQEAgRXhl Y0luaXRQYXJhbGxlbFBsYW4oUGxhblN0YXRlICpwbGFuc3RhdGUsIEVTdGF0ZSAqZXN0YXRlLAog CSAqLwogCWlmIChlc3RhdGUtPmVzX2luc3RydW1lbnQpCiAJewotCQlJbnN0cnVtZW50YXRpb24g Kmluc3RydW1lbnQ7CisJCU5vZGVJbnN0cnVtZW50YXRpb24gKmluc3RydW1lbnQ7CiAJCWludAkJ CWk7CiAKIAkJaW5zdHJ1bWVudGF0aW9uID0gc2htX3RvY19hbGxvY2F0ZShwY3h0LT50b2MsIGlu c3RydW1lbnRhdGlvbl9sZW4pOwpAQCAtODIxLDcgKzgyNSw3IEBAIEV4ZWNJbml0UGFyYWxsZWxQ bGFuKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBFU3RhdGUgKmVzdGF0ZSwKIAkJaW5zdHJ1bWVudGF0 aW9uLT5udW1fcGxhbl9ub2RlcyA9IGUubm5vZGVzOwogCQlpbnN0cnVtZW50ID0gR2V0SW5zdHJ1 bWVudGF0aW9uQXJyYXkoaW5zdHJ1bWVudGF0aW9uKTsKIAkJZm9yIChpID0gMDsgaSA8IG53b3Jr ZXJzICogZS5ubm9kZXM7ICsraSkKLQkJCUluc3RySW5pdCgmaW5zdHJ1bWVudFtpXSwgZXN0YXRl LT5lc19pbnN0cnVtZW50KTsKKwkJCUluc3RySW5pdE5vZGUoJmluc3RydW1lbnRbaV0sIGVzdGF0 ZS0+ZXNfaW5zdHJ1bWVudCk7CiAJCXNobV90b2NfaW5zZXJ0KHBjeHQtPnRvYywgUEFSQUxMRUxf S0VZX0lOU1RSVU1FTlRBVElPTiwKIAkJCQkJICAgaW5zdHJ1bWVudGF0aW9uKTsKIAkJcGVpLT5p bnN0cnVtZW50YXRpb24gPSBpbnN0cnVtZW50YXRpb247CkBAIC0xMDUzLDcgKzEwNTcsNyBAQCBz dGF0aWMgYm9vbAogRXhlY1BhcmFsbGVsUmV0cmlldmVJbnN0cnVtZW50YXRpb24oUGxhblN0YXRl ICpwbGFuc3RhdGUsCiAJCQkJCQkJCQlTaGFyZWRFeGVjdXRvckluc3RydW1lbnRhdGlvbiAqaW5z dHJ1bWVudGF0aW9uKQogewotCUluc3RydW1lbnRhdGlvbiAqaW5zdHJ1bWVudDsKKwlOb2RlSW5z dHJ1bWVudGF0aW9uICppbnN0cnVtZW50OwogCWludAkJCWk7CiAJaW50CQkJbjsKIAlpbnQJCQlp Ynl0ZXM7CkBAIC0xMDgxLDkgKzEwODUsOSBAQCBFeGVjUGFyYWxsZWxSZXRyaWV2ZUluc3RydW1l bnRhdGlvbihQbGFuU3RhdGUgKnBsYW5zdGF0ZSwKIAkgKiBTd2l0Y2ggaW50byBwZXItcXVlcnkg bWVtb3J5IGNvbnRleHQuCiAJICovCiAJb2xkY29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hU byhwbGFuc3RhdGUtPnN0YXRlLT5lc19xdWVyeV9jeHQpOwotCWlieXRlcyA9IG11bF9zaXplKGlu c3RydW1lbnRhdGlvbi0+bnVtX3dvcmtlcnMsIHNpemVvZihJbnN0cnVtZW50YXRpb24pKTsKKwlp Ynl0ZXMgPSBtdWxfc2l6ZShpbnN0cnVtZW50YXRpb24tPm51bV93b3JrZXJzLCBzaXplb2YoTm9k ZUluc3RydW1lbnRhdGlvbikpOwogCXBsYW5zdGF0ZS0+d29ya2VyX2luc3RydW1lbnQgPQotCQlw YWxsb2MoaWJ5dGVzICsgb2Zmc2V0b2YoV29ya2VySW5zdHJ1bWVudGF0aW9uLCBpbnN0cnVtZW50 KSk7CisJCXBhbGxvYyhpYnl0ZXMgKyBvZmZzZXRvZihXb3JrZXJOb2RlSW5zdHJ1bWVudGF0aW9u LCBpbnN0cnVtZW50KSk7CiAJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOwogCiAJ cGxhbnN0YXRlLT53b3JrZXJfaW5zdHJ1bWVudC0+bnVtX3dvcmtlcnMgPSBpbnN0cnVtZW50YXRp b24tPm51bV93b3JrZXJzOwpAQCAtMTMxMyw3ICsxMzE3LDcgQEAgRXhlY1BhcmFsbGVsUmVwb3J0 SW5zdHJ1bWVudGF0aW9uKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLAogewogCWludAkJCWk7CiAJaW50 CQkJcGxhbl9ub2RlX2lkID0gcGxhbnN0YXRlLT5wbGFuLT5wbGFuX25vZGVfaWQ7Ci0JSW5zdHJ1 bWVudGF0aW9uICppbnN0cnVtZW50OworCU5vZGVJbnN0cnVtZW50YXRpb24gKmluc3RydW1lbnQ7 CiAKIAlJbnN0ckVuZExvb3AocGxhbnN0YXRlLT5pbnN0cnVtZW50KTsKIApkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1Byb2Nub2RlLmMgYi9zcmMvYmFja2VuZC9leGVjdXRv ci9leGVjUHJvY25vZGUuYwppbmRleCBkMzU5NzY5MjVhZS4uMTMyZmUzN2VmNjAgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQcm9jbm9kZS5jCisrKyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNQcm9jbm9kZS5jCkBAIC00MTQsOCArNDE0LDggQEAgRXhlY0luaXROb2Rl KFBsYW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCiAJLyogU2V0IHVwIGlu c3RydW1lbnRhdGlvbiBmb3IgdGhpcyBub2RlIGlmIHJlcXVlc3RlZCAqLwogCWlmIChlc3RhdGUt PmVzX2luc3RydW1lbnQpCi0JCXJlc3VsdC0+aW5zdHJ1bWVudCA9IEluc3RyQWxsb2MoMSwgZXN0 YXRlLT5lc19pbnN0cnVtZW50LAotCQkJCQkJCQkJCXJlc3VsdC0+YXN5bmNfY2FwYWJsZSk7CisJ CXJlc3VsdC0+aW5zdHJ1bWVudCA9IEluc3RyQWxsb2NOb2RlKGVzdGF0ZS0+ZXNfaW5zdHJ1bWVu dCwKKwkJCQkJCQkJCQkJcmVzdWx0LT5hc3luY19jYXBhYmxlKTsKIAogCXJldHVybiByZXN1bHQ7 CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9pbnN0cnVtZW50LmMgYi9zcmMv YmFja2VuZC9leGVjdXRvci9pbnN0cnVtZW50LmMKaW5kZXggOTM1NGFkN2JlMTIuLmJjNTUxZjk1 YTA4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9pbnN0cnVtZW50LmMKKysrIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3IvaW5zdHJ1bWVudC5jCkBAIC0yNiw1MSArMjYsMzAgQEAgc3Rh dGljIHZvaWQgQnVmZmVyVXNhZ2VBZGQoQnVmZmVyVXNhZ2UgKmRzdCwgY29uc3QgQnVmZmVyVXNh Z2UgKmFkZCk7CiBzdGF0aWMgdm9pZCBXYWxVc2FnZUFkZChXYWxVc2FnZSAqZHN0LCBXYWxVc2Fn ZSAqYWRkKTsKIAogCi0vKiBBbGxvY2F0ZSBuZXcgaW5zdHJ1bWVudGF0aW9uIHN0cnVjdHVyZShz KSAqLworLyogR2VuZXJhbCBwdXJwb3NlIGluc3RydW1lbnRhdGlvbiBoYW5kbGluZyAqLwogSW5z dHJ1bWVudGF0aW9uICoKLUluc3RyQWxsb2MoaW50IG4sIGludCBpbnN0cnVtZW50X29wdGlvbnMs IGJvb2wgYXN5bmNfbW9kZSkKK0luc3RyQWxsb2MoaW50IGluc3RydW1lbnRfb3B0aW9ucykKIHsK LQlJbnN0cnVtZW50YXRpb24gKmluc3RyOwotCi0JLyogaW5pdGlhbGl6ZSBhbGwgZmllbGRzIHRv IHplcm9lcywgdGhlbiBtb2RpZnkgYXMgbmVlZGVkICovCi0JaW5zdHIgPSBwYWxsb2MwKG4gKiBz aXplb2YoSW5zdHJ1bWVudGF0aW9uKSk7Ci0JaWYgKGluc3RydW1lbnRfb3B0aW9ucyAmIChJTlNU UlVNRU5UX0JVRkZFUlMgfCBJTlNUUlVNRU5UX1RJTUVSIHwgSU5TVFJVTUVOVF9XQUwpKQotCXsK LQkJYm9vbAkJbmVlZF9idWZmZXJzID0gKGluc3RydW1lbnRfb3B0aW9ucyAmIElOU1RSVU1FTlRf QlVGRkVSUykgIT0gMDsKLQkJYm9vbAkJbmVlZF93YWwgPSAoaW5zdHJ1bWVudF9vcHRpb25zICYg SU5TVFJVTUVOVF9XQUwpICE9IDA7Ci0JCWJvb2wJCW5lZWRfdGltZXIgPSAoaW5zdHJ1bWVudF9v cHRpb25zICYgSU5TVFJVTUVOVF9USU1FUikgIT0gMDsKLQkJaW50CQkJaTsKLQotCQlmb3IgKGkg PSAwOyBpIDwgbjsgaSsrKQotCQl7Ci0JCQlpbnN0cltpXS5uZWVkX2J1ZnVzYWdlID0gbmVlZF9i dWZmZXJzOwotCQkJaW5zdHJbaV0ubmVlZF93YWx1c2FnZSA9IG5lZWRfd2FsOwotCQkJaW5zdHJb aV0ubmVlZF90aW1lciA9IG5lZWRfdGltZXI7Ci0JCQlpbnN0cltpXS5hc3luY19tb2RlID0gYXN5 bmNfbW9kZTsKLQkJfQotCX0KLQorCUluc3RydW1lbnRhdGlvbiAqaW5zdHIgPSBwYWxsb2MwKHNp emVvZihJbnN0cnVtZW50YXRpb24pKTsKKwlJbnN0ckluaXRPcHRpb25zKGluc3RyLCBpbnN0cnVt ZW50X29wdGlvbnMpOwogCXJldHVybiBpbnN0cjsKIH0KIAotLyogSW5pdGlhbGl6ZSBhIHByZS1h bGxvY2F0ZWQgaW5zdHJ1bWVudGF0aW9uIHN0cnVjdHVyZS4gKi8KIHZvaWQKLUluc3RySW5pdChJ bnN0cnVtZW50YXRpb24gKmluc3RyLCBpbnQgaW5zdHJ1bWVudF9vcHRpb25zKQorSW5zdHJJbml0 T3B0aW9ucyhJbnN0cnVtZW50YXRpb24gKmluc3RyLCBpbnQgaW5zdHJ1bWVudF9vcHRpb25zKQog ewotCW1lbXNldChpbnN0ciwgMCwgc2l6ZW9mKEluc3RydW1lbnRhdGlvbikpOwogCWluc3RyLT5u ZWVkX2J1ZnVzYWdlID0gKGluc3RydW1lbnRfb3B0aW9ucyAmIElOU1RSVU1FTlRfQlVGRkVSUykg IT0gMDsKIAlpbnN0ci0+bmVlZF93YWx1c2FnZSA9IChpbnN0cnVtZW50X29wdGlvbnMgJiBJTlNU UlVNRU5UX1dBTCkgIT0gMDsKIAlpbnN0ci0+bmVlZF90aW1lciA9IChpbnN0cnVtZW50X29wdGlv bnMgJiBJTlNUUlVNRU5UX1RJTUVSKSAhPSAwOwogfQogCi0vKiBFbnRyeSB0byBhIHBsYW4gbm9k ZSAqLwogdm9pZAotSW5zdHJTdGFydE5vZGUoSW5zdHJ1bWVudGF0aW9uICppbnN0cikKK0luc3Ry U3RhcnQoSW5zdHJ1bWVudGF0aW9uICppbnN0cikKIHsKIAlpZiAoaW5zdHItPm5lZWRfdGltZXIp CiAJewogCQlpZiAoIUlOU1RSX1RJTUVfSVNfWkVSTyhpbnN0ci0+c3RhcnR0aW1lKSkKLQkJCWVs b2coRVJST1IsICJJbnN0clN0YXJ0Tm9kZSBjYWxsZWQgdHdpY2UgaW4gYSByb3ciKTsKKwkJCWVs b2coRVJST1IsICJJbnN0clN0YXJ0IGNhbGxlZCB0d2ljZSBpbiBhIHJvdyIpOwogCQllbHNlCiAJ CQlJTlNUUl9USU1FX1NFVF9DVVJSRU5UKGluc3RyLT5zdGFydHRpbWUpOwogCX0KQEAgLTgzLDI0 ICs2MiwxOSBAQCBJbnN0clN0YXJ0Tm9kZShJbnN0cnVtZW50YXRpb24gKmluc3RyKQogCQlpbnN0 ci0+d2FsdXNhZ2Vfc3RhcnQgPSBwZ1dhbFVzYWdlOwogfQogCi0vKiBFeGl0IGZyb20gYSBwbGFu IG5vZGUgKi8KIHZvaWQKLUluc3RyU3RvcE5vZGUoSW5zdHJ1bWVudGF0aW9uICppbnN0ciwgZG91 YmxlIG5UdXBsZXMpCitJbnN0clN0b3AoSW5zdHJ1bWVudGF0aW9uICppbnN0cikKIHsKLQlkb3Vi bGUJCXNhdmVfdHVwbGVjb3VudCA9IGluc3RyLT50dXBsZWNvdW50OwogCWluc3RyX3RpbWUJZW5k dGltZTsKIAotCS8qIGNvdW50IHRoZSByZXR1cm5lZCB0dXBsZXMgKi8KLQlpbnN0ci0+dHVwbGVj b3VudCArPSBuVHVwbGVzOwotCiAJLyogbGV0J3MgdXBkYXRlIHRoZSB0aW1lIG9ubHkgaWYgdGhl IHRpbWVyIHdhcyByZXF1ZXN0ZWQgKi8KIAlpZiAoaW5zdHItPm5lZWRfdGltZXIpCiAJewogCQlp ZiAoSU5TVFJfVElNRV9JU19aRVJPKGluc3RyLT5zdGFydHRpbWUpKQotCQkJZWxvZyhFUlJPUiwg Ikluc3RyU3RvcE5vZGUgY2FsbGVkIHdpdGhvdXQgc3RhcnQiKTsKKwkJCWVsb2coRVJST1IsICJJ bnN0clN0b3AgY2FsbGVkIHdpdGhvdXQgc3RhcnQiKTsKIAogCQlJTlNUUl9USU1FX1NFVF9DVVJS RU5UKGVuZHRpbWUpOwotCQlJTlNUUl9USU1FX0FDQ1VNX0RJRkYoaW5zdHItPmNvdW50ZXIsIGVu ZHRpbWUsIGluc3RyLT5zdGFydHRpbWUpOworCQlJTlNUUl9USU1FX0FDQ1VNX0RJRkYoaW5zdHIt PnRvdGFsLCBlbmR0aW1lLCBpbnN0ci0+c3RhcnR0aW1lKTsKIAogCQlJTlNUUl9USU1FX1NFVF9a RVJPKGluc3RyLT5zdGFydHRpbWUpOwogCX0KQEAgLTExMyw2ICs4Nyw3NCBAQCBJbnN0clN0b3BO b2RlKEluc3RydW1lbnRhdGlvbiAqaW5zdHIsIGRvdWJsZSBuVHVwbGVzKQogCWlmIChpbnN0ci0+ bmVlZF93YWx1c2FnZSkKIAkJV2FsVXNhZ2VBY2N1bURpZmYoJmluc3RyLT53YWx1c2FnZSwKIAkJ CQkJCSAgJnBnV2FsVXNhZ2UsICZpbnN0ci0+d2FsdXNhZ2Vfc3RhcnQpOworfQorCisvKiBOb2Rl IGluc3RydW1lbnRhdGlvbiBoYW5kbGluZyAqLworCisvKiBBbGxvY2F0ZSBuZXcgbm9kZSBpbnN0 cnVtZW50YXRpb24gc3RydWN0dXJlICovCitOb2RlSW5zdHJ1bWVudGF0aW9uICoKK0luc3RyQWxs b2NOb2RlKGludCBpbnN0cnVtZW50X29wdGlvbnMsIGJvb2wgYXN5bmNfbW9kZSkKK3sKKwlOb2Rl SW5zdHJ1bWVudGF0aW9uICppbnN0ciA9IHBhbGxvYyhzaXplb2YoTm9kZUluc3RydW1lbnRhdGlv bikpOworCisJSW5zdHJJbml0Tm9kZShpbnN0ciwgaW5zdHJ1bWVudF9vcHRpb25zKTsKKwlpbnN0 ci0+YXN5bmNfbW9kZSA9IGFzeW5jX21vZGU7CisKKwlyZXR1cm4gaW5zdHI7Cit9CisKKy8qIElu aXRpYWxpemUgYSBwcmUtYWxsb2NhdGVkIGluc3RydW1lbnRhdGlvbiBzdHJ1Y3R1cmUuICovCit2 b2lkCitJbnN0ckluaXROb2RlKE5vZGVJbnN0cnVtZW50YXRpb24gKmluc3RyLCBpbnQgaW5zdHJ1 bWVudF9vcHRpb25zKQoreworCW1lbXNldChpbnN0ciwgMCwgc2l6ZW9mKE5vZGVJbnN0cnVtZW50 YXRpb24pKTsKKwlJbnN0ckluaXRPcHRpb25zKCZpbnN0ci0+aW5zdHIsIGluc3RydW1lbnRfb3B0 aW9ucyk7Cit9CisKKy8qIEVudHJ5IHRvIGEgcGxhbiBub2RlICovCit2b2lkCitJbnN0clN0YXJ0 Tm9kZShOb2RlSW5zdHJ1bWVudGF0aW9uICppbnN0cikKK3sKKwlJbnN0clN0YXJ0KCZpbnN0ci0+ aW5zdHIpOworfQorCisvKiBFeGl0IGZyb20gYSBwbGFuIG5vZGUgKi8KK3ZvaWQKK0luc3RyU3Rv cE5vZGUoTm9kZUluc3RydW1lbnRhdGlvbiAqaW5zdHIsIGRvdWJsZSBuVHVwbGVzKQoreworCWRv dWJsZQkJc2F2ZV90dXBsZWNvdW50ID0gaW5zdHItPnR1cGxlY291bnQ7CisJaW5zdHJfdGltZQll bmR0aW1lOworCisJLyogY291bnQgdGhlIHJldHVybmVkIHR1cGxlcyAqLworCWluc3RyLT50dXBs ZWNvdW50ICs9IG5UdXBsZXM7CisKKwkvKgorCSAqIFVwZGF0ZSB0aGUgdGltZSBvbmx5IGlmIHRo ZSB0aW1lciB3YXMgcmVxdWVzdGVkLgorCSAqCisJICogTm90ZSB0aGlzIGlzIGRpZmZlcmVudCBm cm9tIEluc3RyU3RvcCBiZWNhdXNlIHRvdGFsIGlzIG9ubHkgdXBkYXRlZCBpbgorCSAqIEluc3Ry RW5kTG9vcC4gV2UgbmVlZCB0aGUgc2VwYXJhdGUgY291bnRlciB2YXJpYWJsZSBiZWNhdXNlIHdl IG5lZWQgdG8KKwkgKiBjYWxjdWxhdGUgc3RhcnQtdXAgdGltZSBmb3IgdGhlIGZpcnN0IHR1cGxl IGluIGVhY2ggY3ljbGUsIGFuZCB0aGVuCisJICogYWNjdW11bGF0ZSBpdCB0b2dldGhlci4KKwkg Ki8KKwlpZiAoaW5zdHItPmluc3RyLm5lZWRfdGltZXIpCisJeworCQlpZiAoSU5TVFJfVElNRV9J U19aRVJPKGluc3RyLT5pbnN0ci5zdGFydHRpbWUpKQorCQkJZWxvZyhFUlJPUiwgIkluc3RyU3Rv cE5vZGUgY2FsbGVkIHdpdGhvdXQgc3RhcnQiKTsKKworCQlJTlNUUl9USU1FX1NFVF9DVVJSRU5U KGVuZHRpbWUpOworCQlJTlNUUl9USU1FX0FDQ1VNX0RJRkYoaW5zdHItPmNvdW50ZXIsIGVuZHRp bWUsIGluc3RyLT5pbnN0ci5zdGFydHRpbWUpOworCisJCUlOU1RSX1RJTUVfU0VUX1pFUk8oaW5z dHItPmluc3RyLnN0YXJ0dGltZSk7CisJfQorCisJLyogQWRkIGRlbHRhIG9mIGJ1ZmZlciB1c2Fn ZSBzaW5jZSBlbnRyeSB0byBub2RlJ3MgdG90YWxzICovCisJaWYgKGluc3RyLT5pbnN0ci5uZWVk X2J1ZnVzYWdlKQorCQlCdWZmZXJVc2FnZUFjY3VtRGlmZigmaW5zdHItPmluc3RyLmJ1ZnVzYWdl LAorCQkJCQkJCSAmcGdCdWZmZXJVc2FnZSwgJmluc3RyLT5pbnN0ci5idWZ1c2FnZV9zdGFydCk7 CisKKwlpZiAoaW5zdHItPmluc3RyLm5lZWRfd2FsdXNhZ2UpCisJCVdhbFVzYWdlQWNjdW1EaWZm KCZpbnN0ci0+aW5zdHIud2FsdXNhZ2UsCisJCQkJCQkgICZwZ1dhbFVzYWdlLCAmaW5zdHItPmlu c3RyLndhbHVzYWdlX3N0YXJ0KTsKIAogCS8qIElzIHRoaXMgdGhlIGZpcnN0IHR1cGxlIG9mIHRo aXMgY3ljbGU/ICovCiAJaWYgKCFpbnN0ci0+cnVubmluZykKQEAgLTEzMyw3ICsxNzUsNyBAQCBJ bnN0clN0b3BOb2RlKEluc3RydW1lbnRhdGlvbiAqaW5zdHIsIGRvdWJsZSBuVHVwbGVzKQogCiAv KiBVcGRhdGUgdHVwbGUgY291bnQgKi8KIHZvaWQKLUluc3RyVXBkYXRlVHVwbGVDb3VudChJbnN0 cnVtZW50YXRpb24gKmluc3RyLCBkb3VibGUgblR1cGxlcykKK0luc3RyVXBkYXRlVHVwbGVDb3Vu dChOb2RlSW5zdHJ1bWVudGF0aW9uICppbnN0ciwgZG91YmxlIG5UdXBsZXMpCiB7CiAJLyogY291 bnQgdGhlIHJldHVybmVkIHR1cGxlcyAqLwogCWluc3RyLT50dXBsZWNvdW50ICs9IG5UdXBsZXM7 CkBAIC0xNDEsMjQgKzE4MywyNCBAQCBJbnN0clVwZGF0ZVR1cGxlQ291bnQoSW5zdHJ1bWVudGF0 aW9uICppbnN0ciwgZG91YmxlIG5UdXBsZXMpCiAKIC8qIEZpbmlzaCBhIHJ1biBjeWNsZSBmb3Ig YSBwbGFuIG5vZGUgKi8KIHZvaWQKLUluc3RyRW5kTG9vcChJbnN0cnVtZW50YXRpb24gKmluc3Ry KQorSW5zdHJFbmRMb29wKE5vZGVJbnN0cnVtZW50YXRpb24gKmluc3RyKQogewogCS8qIFNraXAg aWYgbm90aGluZyBoYXMgaGFwcGVuZWQsIG9yIGFscmVhZHkgc2h1dCBkb3duICovCiAJaWYgKCFp bnN0ci0+cnVubmluZykKIAkJcmV0dXJuOwogCi0JaWYgKCFJTlNUUl9USU1FX0lTX1pFUk8oaW5z dHItPnN0YXJ0dGltZSkpCisJaWYgKCFJTlNUUl9USU1FX0lTX1pFUk8oaW5zdHItPmluc3RyLnN0 YXJ0dGltZSkpCiAJCWVsb2coRVJST1IsICJJbnN0ckVuZExvb3AgY2FsbGVkIG9uIHJ1bm5pbmcg bm9kZSIpOwogCiAJLyogQWNjdW11bGF0ZSBwZXItY3ljbGUgc3RhdGlzdGljcyBpbnRvIHRvdGFs cyAqLwogCUlOU1RSX1RJTUVfQUREKGluc3RyLT5zdGFydHVwLCBpbnN0ci0+Zmlyc3R0dXBsZSk7 Ci0JSU5TVFJfVElNRV9BREQoaW5zdHItPnRvdGFsLCBpbnN0ci0+Y291bnRlcik7CisJSU5TVFJf VElNRV9BREQoaW5zdHItPmluc3RyLnRvdGFsLCBpbnN0ci0+Y291bnRlcik7CiAJaW5zdHItPm50 dXBsZXMgKz0gaW5zdHItPnR1cGxlY291bnQ7CiAJaW5zdHItPm5sb29wcyArPSAxOwogCiAJLyog UmVzZXQgZm9yIG5leHQgY3ljbGUgKGlmIGFueSkgKi8KIAlpbnN0ci0+cnVubmluZyA9IGZhbHNl OwotCUlOU1RSX1RJTUVfU0VUX1pFUk8oaW5zdHItPnN0YXJ0dGltZSk7CisJSU5TVFJfVElNRV9T RVRfWkVSTyhpbnN0ci0+aW5zdHIuc3RhcnR0aW1lKTsKIAlJTlNUUl9USU1FX1NFVF9aRVJPKGlu c3RyLT5jb3VudGVyKTsKIAlJTlNUUl9USU1FX1NFVF9aRVJPKGluc3RyLT5maXJzdHR1cGxlKTsK IAlpbnN0ci0+dHVwbGVjb3VudCA9IDA7CkBAIC0xNjYsNyArMjA4LDcgQEAgSW5zdHJFbmRMb29w KEluc3RydW1lbnRhdGlvbiAqaW5zdHIpCiAKIC8qIGFnZ3JlZ2F0ZSBpbnN0cnVtZW50YXRpb24g aW5mb3JtYXRpb24gKi8KIHZvaWQKLUluc3RyQWdnTm9kZShJbnN0cnVtZW50YXRpb24gKmRzdCwg SW5zdHJ1bWVudGF0aW9uICphZGQpCitJbnN0ckFnZ05vZGUoTm9kZUluc3RydW1lbnRhdGlvbiAq ZHN0LCBOb2RlSW5zdHJ1bWVudGF0aW9uICphZGQpCiB7CiAJaWYgKCFkc3QtPnJ1bm5pbmcgJiYg YWRkLT5ydW5uaW5nKQogCXsKQEAgLTE4MSw3ICsyMjMsNyBAQCBJbnN0ckFnZ05vZGUoSW5zdHJ1 bWVudGF0aW9uICpkc3QsIEluc3RydW1lbnRhdGlvbiAqYWRkKQogCiAJZHN0LT50dXBsZWNvdW50 ICs9IGFkZC0+dHVwbGVjb3VudDsKIAlJTlNUUl9USU1FX0FERChkc3QtPnN0YXJ0dXAsIGFkZC0+ c3RhcnR1cCk7Ci0JSU5TVFJfVElNRV9BREQoZHN0LT50b3RhbCwgYWRkLT50b3RhbCk7CisJSU5T VFJfVElNRV9BREQoZHN0LT5pbnN0ci50b3RhbCwgYWRkLT5pbnN0ci50b3RhbCk7CiAJZHN0LT5u dHVwbGVzICs9IGFkZC0+bnR1cGxlczsKIAlkc3QtPm50dXBsZXMyICs9IGFkZC0+bnR1cGxlczI7 CiAJZHN0LT5ubG9vcHMgKz0gYWRkLT5ubG9vcHM7CkBAIC0xODksMTEgKzIzMSwxMSBAQCBJbnN0 ckFnZ05vZGUoSW5zdHJ1bWVudGF0aW9uICpkc3QsIEluc3RydW1lbnRhdGlvbiAqYWRkKQogCWRz dC0+bmZpbHRlcmVkMiArPSBhZGQtPm5maWx0ZXJlZDI7CiAKIAkvKiBBZGQgZGVsdGEgb2YgYnVm ZmVyIHVzYWdlIHNpbmNlIGVudHJ5IHRvIG5vZGUncyB0b3RhbHMgKi8KLQlpZiAoZHN0LT5uZWVk X2J1ZnVzYWdlKQotCQlCdWZmZXJVc2FnZUFkZCgmZHN0LT5idWZ1c2FnZSwgJmFkZC0+YnVmdXNh Z2UpOworCWlmIChkc3QtPmluc3RyLm5lZWRfYnVmdXNhZ2UpCisJCUJ1ZmZlclVzYWdlQWRkKCZk c3QtPmluc3RyLmJ1ZnVzYWdlLCAmYWRkLT5pbnN0ci5idWZ1c2FnZSk7CiAKLQlpZiAoZHN0LT5u ZWVkX3dhbHVzYWdlKQotCQlXYWxVc2FnZUFkZCgmZHN0LT53YWx1c2FnZSwgJmFkZC0+d2FsdXNh Z2UpOworCWlmIChkc3QtPmluc3RyLm5lZWRfd2FsdXNhZ2UpCisJCVdhbFVzYWdlQWRkKCZkc3Qt Pmluc3RyLndhbHVzYWdlLCAmYWRkLT5pbnN0ci53YWx1c2FnZSk7CiB9CiAKIC8qIFRyaWdnZXIg aW5zdHJ1bWVudGF0aW9uIGhhbmRsaW5nICovCkBAIC0yMDQsNyArMjQ2LDcgQEAgSW5zdHJBbGxv Y1RyaWdnZXIoaW50IG4sIGludCBpbnN0cnVtZW50X29wdGlvbnMpCiAJaW50CQkJaTsKIAogCWZv ciAoaSA9IDA7IGkgPCBuOyBpKyspCi0JCUluc3RySW5pdCgmdGdpbnN0cltpXS5pbnN0ciwgaW5z dHJ1bWVudF9vcHRpb25zKTsKKwkJSW5zdHJJbml0T3B0aW9ucygmdGdpbnN0cltpXS5pbnN0ciwg aW5zdHJ1bWVudF9vcHRpb25zKTsKIAogCXJldHVybiB0Z2luc3RyOwogfQpAQCAtMjEyLDEzICsy NTQsMTMgQEAgSW5zdHJBbGxvY1RyaWdnZXIoaW50IG4sIGludCBpbnN0cnVtZW50X29wdGlvbnMp CiB2b2lkCiBJbnN0clN0YXJ0VHJpZ2dlcihUcmlnZ2VySW5zdHJ1bWVudGF0aW9uICp0Z2luc3Ry KQogewotCUluc3RyU3RhcnROb2RlKCZ0Z2luc3RyLT5pbnN0cik7CisJSW5zdHJTdGFydCgmdGdp bnN0ci0+aW5zdHIpOwogfQogCiB2b2lkCiBJbnN0clN0b3BUcmlnZ2VyKFRyaWdnZXJJbnN0cnVt ZW50YXRpb24gKnRnaW5zdHIsIGludCBmaXJpbmdzKQogewotCUluc3RyU3RvcE5vZGUoJnRnaW5z dHItPmluc3RyLCAwKTsKKwlJbnN0clN0b3AoJnRnaW5zdHItPmluc3RyKTsKIAl0Z2luc3RyLT5m aXJpbmdzICs9IGZpcmluZ3M7CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9y L2luc3RydW1lbnQuaCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2luc3RydW1lbnQuaAppbmRleCBh OWMyMjMzMjI3Zi4uYjExZDY0NjMzYjUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9y L2luc3RydW1lbnQuaAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9pbnN0cnVtZW50LmgKQEAg LTY3LDM4ICs2Nyw1NSBAQCB0eXBlZGVmIGVudW0gSW5zdHJ1bWVudE9wdGlvbgogCUlOU1RSVU1F TlRfQUxMID0gUEdfSU5UMzJfTUFYCiB9IEluc3RydW1lbnRPcHRpb247CiAKKy8qCisgKiBHZW5l cmFsIHB1cnBvc2UgaW5zdHJ1bWVudGF0aW9uIHRoYXQgY2FuIGNhcHR1cmUgdGltZSBhbmQgV0FM L2J1ZmZlciB1c2FnZQorICoKKyAqIEluaXRpYWxpemVkIHRocm91Z2ggSW5zdHJBbGxvYywgZm9s bG93ZWQgYnkgb25lIG9yIG1vcmUgY2FsbHMgdG8gYSBwYWlyIG9mCisgKiBJbnN0clN0YXJ0L0lu c3RyU3RvcCAoYWN0aXZpdHkgaXMgbWVhc3VyZWQgaW5iZXR3ZWVuKS4KKyAqLwogdHlwZWRlZiBz dHJ1Y3QgSW5zdHJ1bWVudGF0aW9uCiB7Ci0JLyogUGFyYW1ldGVycyBzZXQgYXQgbm9kZSBjcmVh dGlvbjogKi8KKwkvKiBQYXJhbWV0ZXJzIHNldCBhdCBjcmVhdGlvbjogKi8KIAlib29sCQluZWVk X3RpbWVyOwkJLyogdHJ1ZSBpZiB3ZSBuZWVkIHRpbWVyIGRhdGEgKi8KIAlib29sCQluZWVkX2J1 ZnVzYWdlOwkvKiB0cnVlIGlmIHdlIG5lZWQgYnVmZmVyIHVzYWdlIGRhdGEgKi8KIAlib29sCQlu ZWVkX3dhbHVzYWdlOwkvKiB0cnVlIGlmIHdlIG5lZWQgV0FMIHVzYWdlIGRhdGEgKi8KKwkvKiBJ bnRlcm5hbCBzdGF0ZSBrZWVwaW5nOiAqLworCWluc3RyX3RpbWUJc3RhcnR0aW1lOwkJLyogc3Rh cnQgdGltZSBvZiBsYXN0IEluc3RyU3RhcnQgKi8KKwlCdWZmZXJVc2FnZSBidWZ1c2FnZV9zdGFy dDsgLyogYnVmZmVyIHVzYWdlIGF0IHN0YXJ0ICovCisJV2FsVXNhZ2UJd2FsdXNhZ2Vfc3RhcnQ7 IC8qIFdBTCB1c2FnZSBhdCBzdGFydCAqLworCS8qIEFjY3VtdWxhdGVkIHN0YXRpc3RpY3M6ICov CisJaW5zdHJfdGltZQl0b3RhbDsJCQkvKiB0b3RhbCBydW50aW1lICovCisJQnVmZmVyVXNhZ2Ug YnVmdXNhZ2U7CQkvKiB0b3RhbCBidWZmZXIgdXNhZ2UgKi8KKwlXYWxVc2FnZQl3YWx1c2FnZTsJ CS8qIHRvdGFsIFdBTCB1c2FnZSAqLworfSBJbnN0cnVtZW50YXRpb247CisKKy8qCisgKiBTcGVj aWFsaXplZCBpbnN0cnVtZW50YXRpb24gZm9yIHBlci1ub2RlIGV4ZWN1dGlvbiBzdGF0aXN0aWNz CisgKi8KK3R5cGVkZWYgc3RydWN0IE5vZGVJbnN0cnVtZW50YXRpb24KK3sKKwlJbnN0cnVtZW50 YXRpb24gaW5zdHI7CisJLyogUGFyYW1ldGVycyBzZXQgYXQgbm9kZSBjcmVhdGlvbjogKi8KIAli b29sCQlhc3luY19tb2RlOwkJLyogdHJ1ZSBpZiBub2RlIGlzIGluIGFzeW5jIG1vZGUgKi8KIAkv KiBJbmZvIGFib3V0IGN1cnJlbnQgcGxhbiBjeWNsZTogKi8KIAlib29sCQlydW5uaW5nOwkJLyog dHJ1ZSBpZiB3ZSd2ZSBjb21wbGV0ZWQgZmlyc3QgdHVwbGUgKi8KLQlpbnN0cl90aW1lCXN0YXJ0 dGltZTsJCS8qIHN0YXJ0IHRpbWUgb2YgY3VycmVudCBpdGVyYXRpb24gb2Ygbm9kZSAqLwogCWlu c3RyX3RpbWUJY291bnRlcjsJCS8qIGFjY3VtdWxhdGVkIHJ1bnRpbWUgZm9yIHRoaXMgbm9kZSAq LwogCWluc3RyX3RpbWUJZmlyc3R0dXBsZTsJCS8qIHRpbWUgZm9yIGZpcnN0IHR1cGxlIG9mIHRo aXMgY3ljbGUgKi8KIAlkb3VibGUJCXR1cGxlY291bnQ7CQkvKiAjIG9mIHR1cGxlcyBlbWl0dGVk IHNvIGZhciB0aGlzIGN5Y2xlICovCi0JQnVmZmVyVXNhZ2UgYnVmdXNhZ2Vfc3RhcnQ7IC8qIGJ1 ZmZlciB1c2FnZSBhdCBzdGFydCAqLwotCVdhbFVzYWdlCXdhbHVzYWdlX3N0YXJ0OyAvKiBXQUwg dXNhZ2UgYXQgc3RhcnQgKi8KIAkvKiBBY2N1bXVsYXRlZCBzdGF0aXN0aWNzIGFjcm9zcyBhbGwg Y29tcGxldGVkIGN5Y2xlczogKi8KIAlpbnN0cl90aW1lCXN0YXJ0dXA7CQkvKiB0b3RhbCBzdGFy dHVwIHRpbWUgKi8KLQlpbnN0cl90aW1lCXRvdGFsOwkJCS8qIHRvdGFsIHRpbWUgKi8KIAlkb3Vi bGUJCW50dXBsZXM7CQkvKiB0b3RhbCB0dXBsZXMgcHJvZHVjZWQgKi8KIAlkb3VibGUJCW50dXBs ZXMyOwkJLyogc2Vjb25kYXJ5IG5vZGUtc3BlY2lmaWMgdHVwbGUgY291bnRlciAqLwogCWRvdWJs ZQkJbmxvb3BzOwkJCS8qICMgb2YgcnVuIGN5Y2xlcyBmb3IgdGhpcyBub2RlICovCiAJZG91Ymxl CQluZmlsdGVyZWQxOwkJLyogIyBvZiB0dXBsZXMgcmVtb3ZlZCBieSBzY2FucXVhbCBvciBqb2lu cXVhbCAqLwogCWRvdWJsZQkJbmZpbHRlcmVkMjsJCS8qICMgb2YgdHVwbGVzIHJlbW92ZWQgYnkg Im90aGVyIiBxdWFscyAqLwotCUJ1ZmZlclVzYWdlIGJ1ZnVzYWdlOwkJLyogdG90YWwgYnVmZmVy IHVzYWdlICovCi0JV2FsVXNhZ2UJd2FsdXNhZ2U7CQkvKiB0b3RhbCBXQUwgdXNhZ2UgKi8KLX0g SW5zdHJ1bWVudGF0aW9uOworfSBOb2RlSW5zdHJ1bWVudGF0aW9uOwogCi10eXBlZGVmIHN0cnVj dCBXb3JrZXJJbnN0cnVtZW50YXRpb24KK3R5cGVkZWYgc3RydWN0IFdvcmtlck5vZGVJbnN0cnVt ZW50YXRpb24KIHsKIAlpbnQJCQludW1fd29ya2VyczsJLyogIyBvZiBzdHJ1Y3R1cmVzIHRoYXQg Zm9sbG93ICovCi0JSW5zdHJ1bWVudGF0aW9uIGluc3RydW1lbnRbRkxFWElCTEVfQVJSQVlfTUVN QkVSXTsKLX0gV29ya2VySW5zdHJ1bWVudGF0aW9uOworCU5vZGVJbnN0cnVtZW50YXRpb24gaW5z dHJ1bWVudFtGTEVYSUJMRV9BUlJBWV9NRU1CRVJdOworfSBXb3JrZXJOb2RlSW5zdHJ1bWVudGF0 aW9uOwogCiB0eXBlZGVmIHN0cnVjdCBUcmlnZ2VySW5zdHJ1bWVudGF0aW9uCiB7CkBAIC0xMTAs MTQgKzEyNywxOSBAQCB0eXBlZGVmIHN0cnVjdCBUcmlnZ2VySW5zdHJ1bWVudGF0aW9uCiBleHRl cm4gUEdETExJTVBPUlQgQnVmZmVyVXNhZ2UgcGdCdWZmZXJVc2FnZTsKIGV4dGVybiBQR0RMTElN UE9SVCBXYWxVc2FnZSBwZ1dhbFVzYWdlOwogCi1leHRlcm4gSW5zdHJ1bWVudGF0aW9uICpJbnN0 ckFsbG9jKGludCBuLCBpbnQgaW5zdHJ1bWVudF9vcHRpb25zLAotCQkJCQkJCQkgICBib29sIGFz eW5jX21vZGUpOwotZXh0ZXJuIHZvaWQgSW5zdHJJbml0KEluc3RydW1lbnRhdGlvbiAqaW5zdHIs IGludCBpbnN0cnVtZW50X29wdGlvbnMpOwotZXh0ZXJuIHZvaWQgSW5zdHJTdGFydE5vZGUoSW5z dHJ1bWVudGF0aW9uICppbnN0cik7Ci1leHRlcm4gdm9pZCBJbnN0clN0b3BOb2RlKEluc3RydW1l bnRhdGlvbiAqaW5zdHIsIGRvdWJsZSBuVHVwbGVzKTsKLWV4dGVybiB2b2lkIEluc3RyVXBkYXRl VHVwbGVDb3VudChJbnN0cnVtZW50YXRpb24gKmluc3RyLCBkb3VibGUgblR1cGxlcyk7Ci1leHRl cm4gdm9pZCBJbnN0ckVuZExvb3AoSW5zdHJ1bWVudGF0aW9uICppbnN0cik7Ci1leHRlcm4gdm9p ZCBJbnN0ckFnZ05vZGUoSW5zdHJ1bWVudGF0aW9uICpkc3QsIEluc3RydW1lbnRhdGlvbiAqYWRk KTsKK2V4dGVybiBJbnN0cnVtZW50YXRpb24gKkluc3RyQWxsb2MoaW50IGluc3RydW1lbnRfb3B0 aW9ucyk7CitleHRlcm4gdm9pZCBJbnN0ckluaXRPcHRpb25zKEluc3RydW1lbnRhdGlvbiAqaW5z dHIsIGludCBpbnN0cnVtZW50X29wdGlvbnMpOworZXh0ZXJuIHZvaWQgSW5zdHJTdGFydChJbnN0 cnVtZW50YXRpb24gKmluc3RyKTsKK2V4dGVybiB2b2lkIEluc3RyU3RvcChJbnN0cnVtZW50YXRp b24gKmluc3RyKTsKKworZXh0ZXJuIE5vZGVJbnN0cnVtZW50YXRpb24gKkluc3RyQWxsb2NOb2Rl KGludCBpbnN0cnVtZW50X29wdGlvbnMsCisJCQkJCQkJCQkJICAgYm9vbCBhc3luY19tb2RlKTsK K2V4dGVybiB2b2lkIEluc3RySW5pdE5vZGUoTm9kZUluc3RydW1lbnRhdGlvbiAqaW5zdHIsIGlu dCBpbnN0cnVtZW50X29wdGlvbnMpOworZXh0ZXJuIHZvaWQgSW5zdHJTdGFydE5vZGUoTm9kZUlu c3RydW1lbnRhdGlvbiAqaW5zdHIpOworZXh0ZXJuIHZvaWQgSW5zdHJTdG9wTm9kZShOb2RlSW5z dHJ1bWVudGF0aW9uICppbnN0ciwgZG91YmxlIG5UdXBsZXMpOworZXh0ZXJuIHZvaWQgSW5zdHJV cGRhdGVUdXBsZUNvdW50KE5vZGVJbnN0cnVtZW50YXRpb24gKmluc3RyLCBkb3VibGUgblR1cGxl cyk7CitleHRlcm4gdm9pZCBJbnN0ckVuZExvb3AoTm9kZUluc3RydW1lbnRhdGlvbiAqaW5zdHIp OworZXh0ZXJuIHZvaWQgSW5zdHJBZ2dOb2RlKE5vZGVJbnN0cnVtZW50YXRpb24gKmRzdCwgTm9k ZUluc3RydW1lbnRhdGlvbiAqYWRkKTsKIAogZXh0ZXJuIFRyaWdnZXJJbnN0cnVtZW50YXRpb24g Kkluc3RyQWxsb2NUcmlnZ2VyKGludCBuLCBpbnQgaW5zdHJ1bWVudF9vcHRpb25zKTsKIGV4dGVy biB2b2lkIEluc3RyU3RhcnRUcmlnZ2VyKFRyaWdnZXJJbnN0cnVtZW50YXRpb24gKnRnaW5zdHIp OwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggYi9zcmMvaW5jbHVk ZS9ub2Rlcy9leGVjbm9kZXMuaAppbmRleCAyMmFlMDUyY2RkMy4uZmJmMTM2ODM1ODEgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25v ZGVzL2V4ZWNub2Rlcy5oCkBAIC0xMTg0LDggKzExODQsMTAgQEAgdHlwZWRlZiBzdHJ1Y3QgUGxh blN0YXRlCiAJRXhlY1Byb2NOb2RlTXRkIEV4ZWNQcm9jTm9kZVJlYWw7CS8qIGFjdHVhbCBmdW5j dGlvbiwgaWYgYWJvdmUgaXMgYQogCQkJCQkJCQkJCSAqIHdyYXBwZXIgKi8KIAotCUluc3RydW1l bnRhdGlvbiAqaW5zdHJ1bWVudDsJLyogT3B0aW9uYWwgcnVudGltZSBzdGF0cyBmb3IgdGhpcyBu b2RlICovCi0JV29ya2VySW5zdHJ1bWVudGF0aW9uICp3b3JrZXJfaW5zdHJ1bWVudDsJLyogcGVy LXdvcmtlciBpbnN0cnVtZW50YXRpb24gKi8KKwlOb2RlSW5zdHJ1bWVudGF0aW9uICppbnN0cnVt ZW50OwkvKiBPcHRpb25hbCBydW50aW1lIHN0YXRzIGZvciB0aGlzCisJCQkJCQkJCQkJICogbm9k ZSAqLworCVdvcmtlck5vZGVJbnN0cnVtZW50YXRpb24gKndvcmtlcl9pbnN0cnVtZW50OwkvKiBw ZXItd29ya2VyCisJCQkJCQkJCQkJCQkJICogaW5zdHJ1bWVudGF0aW9uICovCiAKIAkvKiBQZXIt d29ya2VyIEpJVCBpbnN0cnVtZW50YXRpb24gKi8KIAlzdHJ1Y3QgU2hhcmVkSml0SW5zdHJ1bWVu dGF0aW9uICp3b3JrZXJfaml0X2luc3RydW1lbnQ7CmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdp bmRlbnQvdHlwZWRlZnMubGlzdCBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0Cmlu ZGV4IDA4ZTU1Y2JiMjk0Li5jYWEwY2FlZjMyNCAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5k ZW50L3R5cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QK QEAgLTE4MDEsNiArMTgwMSw3IEBAIE5leHRTYW1wbGVCbG9ja19mdW5jdGlvbgogTmV4dFNhbXBs ZVR1cGxlX2Z1bmN0aW9uCiBOZXh0VmFsdWVFeHByCiBOb2RlCitOb2RlSW5zdHJ1bWVudGF0aW9u CiBOb2RlVGFnCiBOb25FbXB0eVJhbmdlCiBOb25lQ29tcHJlc3NvclN0YXRlCkBAIC0zNDA0LDkg KzM0MDUsOSBAQCBXb3JrVGFibGVTY2FuCiBXb3JrVGFibGVTY2FuU3RhdGUKIFdvcmtlckluZm8K IFdvcmtlckluZm9EYXRhCi1Xb3JrZXJJbnN0cnVtZW50YXRpb24KIFdvcmtlckpvYkR1bXBQdHJU eXBlCiBXb3JrZXJKb2JSZXN0b3JlUHRyVHlwZQorV29ya2VyTm9kZUluc3RydW1lbnRhdGlvbgog V29ya2luZ19TdGF0ZQogV3JpdGVCdWZQdHJUeXBlCiBXcml0ZUJ5dGVQdHJUeXBlCi0tIAoyLjQ3 LjEKCg== --000000000000c2e7d4064d33fd67 Content-Type: application/octet-stream; name="v9-0001-instrumentation-Separate-trigger-logic-from-other.patch" Content-Disposition: attachment; filename="v9-0001-instrumentation-Separate-trigger-logic-from-other.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmucb65c0 RnJvbSA4ZDA0NDcyOGUzNzg1ZTRiMzE0YzdlMjU1NzEyMGExNGY0YjQwNzQwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpEYXRlOiBT YXQsIDEgTWFyIDIwMjUgMTk6MzE6MzAgLTA4MDAKU3ViamVjdDogW1BBVENIIHY5IDEvOV0gaW5z dHJ1bWVudGF0aW9uOiBTZXBhcmF0ZSB0cmlnZ2VyIGxvZ2ljIGZyb20gb3RoZXIKIHVzZXMKCklu dHJvZHVjZSBUcmlnZ2VySW5zdHJ1bWVudGF0aW9uIHRvIGNhcHR1cmUgdHJpZ2dlciB0aW1pbmcg YW5kIGZpcmluZ3MKKHByZXZpb3VzbHkgY291bnRlZCBpbiAibnR1cGxlcyIpLCB0byBhaWQgYSBm dXR1cmUgcmVmYWN0b3JpbmcgdGhhdApzcGxpdHMgb3V0IGFsbCBJbnN0cnVtZW50YXRpb24gZmll bGRzIGJleW9uZCB0aW1pbmcgYW5kIFdBTC9idWZmZXJzIGludG8KbW9yZSBzcGVjaWZpYyBzdHJ1 Y3RzLgoKQXV0aG9yOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpSZXZpZXdlZC1ieToK RGlzY3Vzc2lvbjoKLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMgICAgfCAxOSAr KysrKysrKy0tLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy90cmlnZ2VyLmMgICAgfCAy MiArKysrKysrKysrKy0tLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5j ICAgfCAgMiArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvaW5zdHJ1bWVudC5jIHwgMjYgKysrKysr KysrKysrKysrKysrKysrKysrKysKIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL2luc3RydW1lbnQuaCB8 IDEyICsrKysrKysrKysrKwogc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggICAgIHwgIDIg Ky0KIHNyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0ICB8ICAxICsKIDcgZmlsZXMgY2hh bmdlZCwgNjAgaW5zZXJ0aW9ucygrKSwgMjQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFp bi5jCmluZGV4IDI5NmVhOGExZWQyLi44MzkxYzVhYjJkYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvZXhwbGFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4u YwpAQCAtMTEwMSwxOCArMTEwMSwxNSBAQCByZXBvcnRfdHJpZ2dlcnMoUmVzdWx0UmVsSW5mbyAq ckluZm8sIGJvb2wgc2hvd19yZWxuYW1lLCBFeHBsYWluU3RhdGUgKmVzKQogCWZvciAobnQgPSAw OyBudCA8IHJJbmZvLT5yaV9UcmlnRGVzYy0+bnVtdHJpZ2dlcnM7IG50KyspCiAJewogCQlUcmln Z2VyICAgICp0cmlnID0gckluZm8tPnJpX1RyaWdEZXNjLT50cmlnZ2VycyArIG50OwotCQlJbnN0 cnVtZW50YXRpb24gKmluc3RyID0gckluZm8tPnJpX1RyaWdJbnN0cnVtZW50ICsgbnQ7CisJCVRy aWdnZXJJbnN0cnVtZW50YXRpb24gKnRnaW5zdHIgPSBySW5mby0+cmlfVHJpZ0luc3RydW1lbnQg KyBudDsKIAkJY2hhcgkgICAqcmVsbmFtZTsKIAkJY2hhcgkgICAqY29ubmFtZSA9IE5VTEw7CiAK LQkJLyogTXVzdCBjbGVhbiB1cCBpbnN0cnVtZW50YXRpb24gc3RhdGUgKi8KLQkJSW5zdHJFbmRM b29wKGluc3RyKTsKLQogCQkvKgogCQkgKiBXZSBpZ25vcmUgdHJpZ2dlcnMgdGhhdCB3ZXJlIG5l dmVyIGludm9rZWQ7IHRoZXkgbGlrZWx5IGFyZW4ndAogCQkgKiByZWxldmFudCB0byB0aGUgY3Vy cmVudCBxdWVyeSB0eXBlLgogCQkgKi8KLQkJaWYgKGluc3RyLT5udHVwbGVzID09IDApCisJCWlm ICh0Z2luc3RyLT5maXJpbmdzID09IDApCiAJCQljb250aW51ZTsKIAogCQlFeHBsYWluT3Blbkdy b3VwKCJUcmlnZ2VyIiwgTlVMTCwgdHJ1ZSwgZXMpOwpAQCAtMTEzNywxMSArMTEzNCwxMSBAQCBy ZXBvcnRfdHJpZ2dlcnMoUmVzdWx0UmVsSW5mbyAqckluZm8sIGJvb2wgc2hvd19yZWxuYW1lLCBF eHBsYWluU3RhdGUgKmVzKQogCQkJaWYgKHNob3dfcmVsbmFtZSkKIAkJCQlhcHBlbmRTdHJpbmdJ bmZvKGVzLT5zdHIsICIgb24gJXMiLCByZWxuYW1lKTsKIAkJCWlmIChlcy0+dGltaW5nKQotCQkJ CWFwcGVuZFN0cmluZ0luZm8oZXMtPnN0ciwgIjogdGltZT0lLjNmIGNhbGxzPSUuMGZcbiIsCi0J CQkJCQkJCSBJTlNUUl9USU1FX0dFVF9NSUxMSVNFQyhpbnN0ci0+dG90YWwpLAotCQkJCQkJCQkg aW5zdHItPm50dXBsZXMpOworCQkJCWFwcGVuZFN0cmluZ0luZm8oZXMtPnN0ciwgIjogdGltZT0l LjNmIGNhbGxzPSVkXG4iLAorCQkJCQkJCQkgSU5TVFJfVElNRV9HRVRfTUlMTElTRUModGdpbnN0 ci0+aW5zdHIudG90YWwpLAorCQkJCQkJCQkgdGdpbnN0ci0+ZmlyaW5ncyk7CiAJCQllbHNlCi0J CQkJYXBwZW5kU3RyaW5nSW5mbyhlcy0+c3RyLCAiOiBjYWxscz0lLjBmXG4iLCBpbnN0ci0+bnR1 cGxlcyk7CisJCQkJYXBwZW5kU3RyaW5nSW5mbyhlcy0+c3RyLCAiOiBjYWxscz0lZFxuIiwgdGdp bnN0ci0+ZmlyaW5ncyk7CiAJCX0KIAkJZWxzZQogCQl7CkBAIC0xMTUxLDkgKzExNDgsOSBAQCBy ZXBvcnRfdHJpZ2dlcnMoUmVzdWx0UmVsSW5mbyAqckluZm8sIGJvb2wgc2hvd19yZWxuYW1lLCBF eHBsYWluU3RhdGUgKmVzKQogCQkJRXhwbGFpblByb3BlcnR5VGV4dCgiUmVsYXRpb24iLCByZWxu YW1lLCBlcyk7CiAJCQlpZiAoZXMtPnRpbWluZykKIAkJCQlFeHBsYWluUHJvcGVydHlGbG9hdCgi VGltZSIsICJtcyIsCi0JCQkJCQkJCQkgSU5TVFJfVElNRV9HRVRfTUlMTElTRUMoaW5zdHItPnRv dGFsKSwgMywKKwkJCQkJCQkJCSBJTlNUUl9USU1FX0dFVF9NSUxMSVNFQyh0Z2luc3RyLT5pbnN0 ci50b3RhbCksIDMsCiAJCQkJCQkJCQkgZXMpOwotCQkJRXhwbGFpblByb3BlcnR5RmxvYXQoIkNh bGxzIiwgTlVMTCwgaW5zdHItPm50dXBsZXMsIDAsIGVzKTsKKwkJCUV4cGxhaW5Qcm9wZXJ0eUlu dGVnZXIoIkNhbGxzIiwgTlVMTCwgdGdpbnN0ci0+ZmlyaW5ncywgZXMpOwogCQl9CiAKIAkJaWYg KGNvbm5hbWUpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy90cmlnZ2VyLmMgYi9z cmMvYmFja2VuZC9jb21tYW5kcy90cmlnZ2VyLmMKaW5kZXggOWMwNDM4YTEyNWEuLmRiN2ExZjc1 NjUwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90cmlnZ2VyLmMKKysrIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvdHJpZ2dlci5jCkBAIC05Miw3ICs5Miw3IEBAIHN0YXRpYyBib29s IFRyaWdnZXJFbmFibGVkKEVTdGF0ZSAqZXN0YXRlLCBSZXN1bHRSZWxJbmZvICpyZWxpbmZvLAog c3RhdGljIEhlYXBUdXBsZSBFeGVjQ2FsbFRyaWdnZXJGdW5jKFRyaWdnZXJEYXRhICp0cmlnZGF0 YSwKIAkJCQkJCQkJCSBpbnQgdGdpbmR4LAogCQkJCQkJCQkJIEZtZ3JJbmZvICpmaW5mbywKLQkJ CQkJCQkJCSBJbnN0cnVtZW50YXRpb24gKmluc3RyLAorCQkJCQkJCQkJIFRyaWdnZXJJbnN0cnVt ZW50YXRpb24gKmluc3RyLAogCQkJCQkJCQkJIE1lbW9yeUNvbnRleHQgcGVyX3R1cGxlX2NvbnRl eHQpOwogc3RhdGljIHZvaWQgQWZ0ZXJUcmlnZ2VyU2F2ZUV2ZW50KEVTdGF0ZSAqZXN0YXRlLCBS ZXN1bHRSZWxJbmZvICpyZWxpbmZvLAogCQkJCQkJCQkgIFJlc3VsdFJlbEluZm8gKnNyY19wYXJ0 aW5mbywKQEAgLTIzMTEsNyArMjMxMSw3IEBAIHN0YXRpYyBIZWFwVHVwbGUKIEV4ZWNDYWxsVHJp Z2dlckZ1bmMoVHJpZ2dlckRhdGEgKnRyaWdkYXRhLAogCQkJCQlpbnQgdGdpbmR4LAogCQkJCQlG bWdySW5mbyAqZmluZm8sCi0JCQkJCUluc3RydW1lbnRhdGlvbiAqaW5zdHIsCisJCQkJCVRyaWdn ZXJJbnN0cnVtZW50YXRpb24gKmluc3RyLAogCQkJCQlNZW1vcnlDb250ZXh0IHBlcl90dXBsZV9j b250ZXh0KQogewogCUxPQ0FMX0ZDSU5GTyhmY2luZm8sIDApOwpAQCAtMjM0Niw3ICsyMzQ2LDcg QEAgRXhlY0NhbGxUcmlnZ2VyRnVuYyhUcmlnZ2VyRGF0YSAqdHJpZ2RhdGEsCiAJICogSWYgZG9p bmcgRVhQTEFJTiBBTkFMWVpFLCBzdGFydCBjaGFyZ2luZyB0aW1lIHRvIHRoaXMgdHJpZ2dlci4K IAkgKi8KIAlpZiAoaW5zdHIpCi0JCUluc3RyU3RhcnROb2RlKGluc3RyICsgdGdpbmR4KTsKKwkJ SW5zdHJTdGFydFRyaWdnZXIoaW5zdHIgKyB0Z2luZHgpOwogCiAJLyoKIAkgKiBEbyB0aGUgZnVu Y3Rpb24gZXZhbHVhdGlvbiBpbiB0aGUgcGVyLXR1cGxlIG1lbW9yeSBjb250ZXh0LCBzbyB0aGF0 CkBAIC0yMzkxLDEwICsyMzkxLDEwIEBAIEV4ZWNDYWxsVHJpZ2dlckZ1bmMoVHJpZ2dlckRhdGEg KnRyaWdkYXRhLAogCiAJLyoKIAkgKiBJZiBkb2luZyBFWFBMQUlOIEFOQUxZWkUsIHN0b3AgY2hh cmdpbmcgdGltZSB0byB0aGlzIHRyaWdnZXIsIGFuZCBjb3VudAotCSAqIG9uZSAidHVwbGUgcmV0 dXJuZWQiIChyZWFsbHkgdGhlIG51bWJlciBvZiBmaXJpbmdzKS4KKwkgKiB0aGUgZmlyaW5nIG9m IHRoZSB0cmlnZ2VyLgogCSAqLwogCWlmIChpbnN0cikKLQkJSW5zdHJTdG9wTm9kZShpbnN0ciAr IHRnaW5keCwgMSk7CisJCUluc3RyU3RvcFRyaWdnZXIoaW5zdHIgKyB0Z2luZHgsIDEpOwogCiAJ cmV0dXJuIChIZWFwVHVwbGUpIERhdHVtR2V0UG9pbnRlcihyZXN1bHQpOwogfQpAQCAtMzkzOCw3 ICszOTM4LDcgQEAgc3RhdGljIHZvaWQgQWZ0ZXJUcmlnZ2VyRXhlY3V0ZShFU3RhdGUgKmVzdGF0 ZSwKIAkJCQkJCQkJUmVzdWx0UmVsSW5mbyAqZHN0X3JlbEluZm8sCiAJCQkJCQkJCVRyaWdnZXJE ZXNjICp0cmlnZGVzYywKIAkJCQkJCQkJRm1nckluZm8gKmZpbmZvLAotCQkJCQkJCQlJbnN0cnVt ZW50YXRpb24gKmluc3RyLAorCQkJCQkJCQlUcmlnZ2VySW5zdHJ1bWVudGF0aW9uICppbnN0ciwK IAkJCQkJCQkJTWVtb3J5Q29udGV4dCBwZXJfdHVwbGVfY29udGV4dCwKIAkJCQkJCQkJVHVwbGVU YWJsZVNsb3QgKnRyaWdfdHVwbGVfc2xvdDEsCiAJCQkJCQkJCVR1cGxlVGFibGVTbG90ICp0cmln X3R1cGxlX3Nsb3QyKTsKQEAgLTQzMzIsNyArNDMzMiw3IEBAIEFmdGVyVHJpZ2dlckV4ZWN1dGUo RVN0YXRlICplc3RhdGUsCiAJCQkJCVJlc3VsdFJlbEluZm8gKnNyY19yZWxJbmZvLAogCQkJCQlS ZXN1bHRSZWxJbmZvICpkc3RfcmVsSW5mbywKIAkJCQkJVHJpZ2dlckRlc2MgKnRyaWdkZXNjLAot CQkJCQlGbWdySW5mbyAqZmluZm8sIEluc3RydW1lbnRhdGlvbiAqaW5zdHIsCisJCQkJCUZtZ3JJ bmZvICpmaW5mbywgVHJpZ2dlckluc3RydW1lbnRhdGlvbiAqaW5zdHIsCiAJCQkJCU1lbW9yeUNv bnRleHQgcGVyX3R1cGxlX2NvbnRleHQsCiAJCQkJCVR1cGxlVGFibGVTbG90ICp0cmlnX3R1cGxl X3Nsb3QxLAogCQkJCQlUdXBsZVRhYmxlU2xvdCAqdHJpZ190dXBsZV9zbG90MikKQEAgLTQzNzMs NyArNDM3Myw3IEBAIEFmdGVyVHJpZ2dlckV4ZWN1dGUoRVN0YXRlICplc3RhdGUsCiAJICogdG8g aW5jbHVkZSB0aW1lIHNwZW50IHJlLWZldGNoaW5nIHR1cGxlcyBpbiB0aGUgdHJpZ2dlciBjb3N0 LgogCSAqLwogCWlmIChpbnN0cikKLQkJSW5zdHJTdGFydE5vZGUoaW5zdHIgKyB0Z2luZHgpOwor CQlJbnN0clN0YXJ0VHJpZ2dlcihpbnN0ciArIHRnaW5keCk7CiAKIAkvKgogCSAqIEZldGNoIHRo ZSByZXF1aXJlZCB0dXBsZShzKS4KQEAgLTQ1OTAsMTAgKzQ1OTAsMTAgQEAgQWZ0ZXJUcmlnZ2Vy RXhlY3V0ZShFU3RhdGUgKmVzdGF0ZSwKIAogCS8qCiAJICogSWYgZG9pbmcgRVhQTEFJTiBBTkFM WVpFLCBzdG9wIGNoYXJnaW5nIHRpbWUgdG8gdGhpcyB0cmlnZ2VyLCBhbmQgY291bnQKLQkgKiBv bmUgInR1cGxlIHJldHVybmVkIiAocmVhbGx5IHRoZSBudW1iZXIgb2YgZmlyaW5ncykuCisJICog dGhlIGZpcmluZyBvZiB0aGUgdHJpZ2dlci4KIAkgKi8KIAlpZiAoaW5zdHIpCi0JCUluc3RyU3Rv cE5vZGUoaW5zdHIgKyB0Z2luZHgsIDEpOworCQlJbnN0clN0b3BUcmlnZ2VyKGluc3RyICsgdGdp bmR4LCAxKTsKIH0KIAogCkBAIC00NzA5LDcgKzQ3MDksNyBAQCBhZnRlclRyaWdnZXJJbnZva2VF dmVudHMoQWZ0ZXJUcmlnZ2VyRXZlbnRMaXN0ICpldmVudHMsCiAJUmVsYXRpb24JcmVsID0gTlVM TDsKIAlUcmlnZ2VyRGVzYyAqdHJpZ2Rlc2MgPSBOVUxMOwogCUZtZ3JJbmZvICAgKmZpbmZvID0g TlVMTDsKLQlJbnN0cnVtZW50YXRpb24gKmluc3RyID0gTlVMTDsKKwlUcmlnZ2VySW5zdHJ1bWVu dGF0aW9uICppbnN0ciA9IE5VTEw7CiAJVHVwbGVUYWJsZVNsb3QgKnNsb3QxID0gTlVMTCwKIAkJ CSAgICpzbG90MiA9IE5VTEw7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNNYWluLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCmluZGV4IDU4Yjg0OTU1 YzJiLi41MzYzMTE2M2RkNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01h aW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCkBAIC0xMjg1LDcgKzEy ODUsNyBAQCBJbml0UmVzdWx0UmVsSW5mbyhSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLAog CQlyZXN1bHRSZWxJbmZvLT5yaV9UcmlnV2hlbkV4cHJzID0gKEV4cHJTdGF0ZSAqKikKIAkJCXBh bGxvYzBfYXJyYXkoRXhwclN0YXRlICosIG4pOwogCQlpZiAoaW5zdHJ1bWVudF9vcHRpb25zKQot CQkJcmVzdWx0UmVsSW5mby0+cmlfVHJpZ0luc3RydW1lbnQgPSBJbnN0ckFsbG9jKG4sIGluc3Ry dW1lbnRfb3B0aW9ucywgZmFsc2UpOworCQkJcmVzdWx0UmVsSW5mby0+cmlfVHJpZ0luc3RydW1l bnQgPSBJbnN0ckFsbG9jVHJpZ2dlcihuLCBpbnN0cnVtZW50X29wdGlvbnMpOwogCX0KIAllbHNl CiAJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvaW5zdHJ1bWVudC5jIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3IvaW5zdHJ1bWVudC5jCmluZGV4IGE0MDYxMGJjMjUyLi45MzU0YWQ3 YmUxMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvaW5zdHJ1bWVudC5jCisrKyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2luc3RydW1lbnQuYwpAQCAtMTk2LDYgKzE5NiwzMiBAQCBJ bnN0ckFnZ05vZGUoSW5zdHJ1bWVudGF0aW9uICpkc3QsIEluc3RydW1lbnRhdGlvbiAqYWRkKQog CQlXYWxVc2FnZUFkZCgmZHN0LT53YWx1c2FnZSwgJmFkZC0+d2FsdXNhZ2UpOwogfQogCisvKiBU cmlnZ2VyIGluc3RydW1lbnRhdGlvbiBoYW5kbGluZyAqLworVHJpZ2dlckluc3RydW1lbnRhdGlv biAqCitJbnN0ckFsbG9jVHJpZ2dlcihpbnQgbiwgaW50IGluc3RydW1lbnRfb3B0aW9ucykKK3sK KwlUcmlnZ2VySW5zdHJ1bWVudGF0aW9uICp0Z2luc3RyID0gcGFsbG9jMChuICogc2l6ZW9mKFRy aWdnZXJJbnN0cnVtZW50YXRpb24pKTsKKwlpbnQJCQlpOworCisJZm9yIChpID0gMDsgaSA8IG47 IGkrKykKKwkJSW5zdHJJbml0KCZ0Z2luc3RyW2ldLmluc3RyLCBpbnN0cnVtZW50X29wdGlvbnMp OworCisJcmV0dXJuIHRnaW5zdHI7Cit9CisKK3ZvaWQKK0luc3RyU3RhcnRUcmlnZ2VyKFRyaWdn ZXJJbnN0cnVtZW50YXRpb24gKnRnaW5zdHIpCit7CisJSW5zdHJTdGFydE5vZGUoJnRnaW5zdHIt Pmluc3RyKTsKK30KKwordm9pZAorSW5zdHJTdG9wVHJpZ2dlcihUcmlnZ2VySW5zdHJ1bWVudGF0 aW9uICp0Z2luc3RyLCBpbnQgZmlyaW5ncykKK3sKKwlJbnN0clN0b3BOb2RlKCZ0Z2luc3RyLT5p bnN0ciwgMCk7CisJdGdpbnN0ci0+ZmlyaW5ncyArPSBmaXJpbmdzOworfQorCiAvKiBub3RlIGN1 cnJlbnQgdmFsdWVzIGR1cmluZyBwYXJhbGxlbCBleGVjdXRvciBzdGFydHVwICovCiB2b2lkCiBJ bnN0clN0YXJ0UGFyYWxsZWxRdWVyeSh2b2lkKQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhl Y3V0b3IvaW5zdHJ1bWVudC5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvaW5zdHJ1bWVudC5oCmlu ZGV4IDk3NTlmM2VhNWQ4Li5hOWMyMjMzMjI3ZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhl Y3V0b3IvaW5zdHJ1bWVudC5oCisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2luc3RydW1lbnQu aApAQCAtMTAwLDYgKzEwMCwxMyBAQCB0eXBlZGVmIHN0cnVjdCBXb3JrZXJJbnN0cnVtZW50YXRp b24KIAlJbnN0cnVtZW50YXRpb24gaW5zdHJ1bWVudFtGTEVYSUJMRV9BUlJBWV9NRU1CRVJdOwog fSBXb3JrZXJJbnN0cnVtZW50YXRpb247CiAKK3R5cGVkZWYgc3RydWN0IFRyaWdnZXJJbnN0cnVt ZW50YXRpb24KK3sKKwlJbnN0cnVtZW50YXRpb24gaW5zdHI7CisJaW50CQkJZmlyaW5nczsJCS8q IG51bWJlciBvZiB0aW1lcyB0aGUgaW5zdHJ1bWVudGVkIHRyaWdnZXIKKwkJCQkJCQkJICogd2Fz IGZpcmVkICovCit9IFRyaWdnZXJJbnN0cnVtZW50YXRpb247CisKIGV4dGVybiBQR0RMTElNUE9S VCBCdWZmZXJVc2FnZSBwZ0J1ZmZlclVzYWdlOwogZXh0ZXJuIFBHRExMSU1QT1JUIFdhbFVzYWdl IHBnV2FsVXNhZ2U7CiAKQEAgLTExMSw2ICsxMTgsMTEgQEAgZXh0ZXJuIHZvaWQgSW5zdHJTdG9w Tm9kZShJbnN0cnVtZW50YXRpb24gKmluc3RyLCBkb3VibGUgblR1cGxlcyk7CiBleHRlcm4gdm9p ZCBJbnN0clVwZGF0ZVR1cGxlQ291bnQoSW5zdHJ1bWVudGF0aW9uICppbnN0ciwgZG91YmxlIG5U dXBsZXMpOwogZXh0ZXJuIHZvaWQgSW5zdHJFbmRMb29wKEluc3RydW1lbnRhdGlvbiAqaW5zdHIp OwogZXh0ZXJuIHZvaWQgSW5zdHJBZ2dOb2RlKEluc3RydW1lbnRhdGlvbiAqZHN0LCBJbnN0cnVt ZW50YXRpb24gKmFkZCk7CisKK2V4dGVybiBUcmlnZ2VySW5zdHJ1bWVudGF0aW9uICpJbnN0ckFs bG9jVHJpZ2dlcihpbnQgbiwgaW50IGluc3RydW1lbnRfb3B0aW9ucyk7CitleHRlcm4gdm9pZCBJ bnN0clN0YXJ0VHJpZ2dlcihUcmlnZ2VySW5zdHJ1bWVudGF0aW9uICp0Z2luc3RyKTsKK2V4dGVy biB2b2lkIEluc3RyU3RvcFRyaWdnZXIoVHJpZ2dlckluc3RydW1lbnRhdGlvbiAqdGdpbnN0ciwg aW50IGZpcmluZ3MpOworCiBleHRlcm4gdm9pZCBJbnN0clN0YXJ0UGFyYWxsZWxRdWVyeSh2b2lk KTsKIGV4dGVybiB2b2lkIEluc3RyRW5kUGFyYWxsZWxRdWVyeShCdWZmZXJVc2FnZSAqYnVmdXNh Z2UsIFdhbFVzYWdlICp3YWx1c2FnZSk7CiBleHRlcm4gdm9pZCBJbnN0ckFjY3VtUGFyYWxsZWxR dWVyeShCdWZmZXJVc2FnZSAqYnVmdXNhZ2UsIFdhbFVzYWdlICp3YWx1c2FnZSk7CmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL2V4 ZWNub2Rlcy5oCmluZGV4IDA3MTZjNWE5YWVkLi4yMmFlMDUyY2RkMyAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25v ZGVzLmgKQEAgLTUzMyw3ICs1MzMsNyBAQCB0eXBlZGVmIHN0cnVjdCBSZXN1bHRSZWxJbmZvCiAJ RXhwclN0YXRlICoqcmlfVHJpZ1doZW5FeHByczsKIAogCS8qIG9wdGlvbmFsIHJ1bnRpbWUgbWVh c3VyZW1lbnRzIGZvciB0cmlnZ2VycyAqLwotCUluc3RydW1lbnRhdGlvbiAqcmlfVHJpZ0luc3Ry dW1lbnQ7CisJVHJpZ2dlckluc3RydW1lbnRhdGlvbiAqcmlfVHJpZ0luc3RydW1lbnQ7CiAKIAkv KiBPbi1kZW1hbmQgY3JlYXRlZCBzbG90cyBmb3IgdHJpZ2dlcnMgLyByZXR1cm5pbmcgcHJvY2Vz c2luZyAqLwogCVR1cGxlVGFibGVTbG90ICpyaV9SZXR1cm5pbmdTbG90OwkvKiBmb3IgdHJpZ2dl ciBvdXRwdXQgdHVwbGVzICovCmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRl ZnMubGlzdCBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CmluZGV4IDUyZjg2MDNh N2JlLi4wOGU1NWNiYjI5NCAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZz Lmxpc3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKQEAgLTMxODMsNiAr MzE4Myw3IEBAIFRyaWdnZXJEZXNjCiBUcmlnZ2VyRXZlbnQKIFRyaWdnZXJGbGFncwogVHJpZ2dl ckluZm8KK1RyaWdnZXJJbnN0cnVtZW50YXRpb24KIFRyaWdnZXJUcmFuc2l0aW9uCiBUcnVuY2F0 ZVN0bXQKIFRzbVJvdXRpbmUKLS0gCjIuNDcuMQoK --000000000000c2e7d4064d33fd67 Content-Type: application/octet-stream; name="v9-0004-instrumentation-Add-additional-regression-tests-c.patch" Content-Disposition: attachment; filename="v9-0004-instrumentation-Add-additional-regression-tests-c.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmucb65s3 RnJvbSBmMDc4OTcwOWQyY2ExNTFmZGRhMGVmOTc2MTMzNzNjNDdlOGRkY2QwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpEYXRlOiBT dW4sIDIyIEZlYiAyMDI2IDE2OjEyOjQ4IC0wODAwClN1YmplY3Q6IFtQQVRDSCB2OSA0LzldIGlu c3RydW1lbnRhdGlvbjogQWRkIGFkZGl0aW9uYWwgcmVncmVzc2lvbiB0ZXN0cwogY292ZXJpbmcg YnVmZmVyIHVzYWdlCgpUaGlzIGFkZHMgcmVncmVzc2lvbiB0ZXN0cyB0aGF0IGNvdmVyIHNvbWUg b2YgdGhlIGV4cGVjdGVkIGJlaGF2aW91cgphcm91bmQgdGhlIGJ1ZmZlciBzdGF0aXN0aWNzIHJl cG9ydGVkIGluIEVYUExBSU4gQU5BTFlaRSwgc3BlY2lmaWNhbGx5CmhvdyB0aGV5IGJlaGF2ZSBp biBwYXJhbGxlbCBxdWVyeSwgbmVzdGVkIGZ1bmN0aW9uIGNhbGxzIGFuZCBhYm9ydApzaXR1YXRp b25zLgoKVGVzdGluZyB0aGlzIGlzIGNoYWxsZW5naW5nIGJlY2F1c2UgdGhlcmUgY2FuIGJlIGRp ZmZlcmVudCBzb3VyY2VzIG9mCmJ1ZmZlciBhY3Rpdml0eSwgc28gd2UgcmVseSBvbiB0ZW1wb3Jh cnkgdGFibGVzIHdoZXJlIHdlIGNhbiB0byBwcm92ZQp0aGF0IGFjdGl2aXR5IHdhcyBjYXB0dXJl ZCBhbmQgbm90IGxvc3QuIFRoaXMgc3VwcG9ydHMgYSBmdXR1cmUgY29tbWl0CnRoYXQgd2lsbCBy ZXdvcmsgc29tZSBvZiB0aGUgaW5zdHJ1bWVudGF0aW9uIGxvZ2ljIHRoYXQgY291bGQgY2F1c2UK YXJlYXMgY292ZXJlZCBieSB0aGVzZSB0ZXN0cyB0byBmYWlsLgoKQXV0aG9yOiBMdWthcyBGaXR0 bCA8bHVrYXNAZml0dGwuY29tPgpSZXZpZXdlZC1ieToKRGlzY3Vzc2lvbjoKLS0tCiAuLi4vcGdf c3RhdF9zdGF0ZW1lbnRzL2V4cGVjdGVkL3V0aWxpdHkub3V0ICAgfCAgNzAgKysrKysrKwogY29u dHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvZXhwZWN0ZWQvd2FsLm91dCAgIHwgIDQ4ICsrKysrCiBj b250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9zcWwvdXRpbGl0eS5zcWwgICAgfCAgNTYgKysrKysK IGNvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3NxbC93YWwuc3FsICAgICAgICB8ICAzMyArKysK IHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZXhwbGFpbi5vdXQgICAgICAgICB8IDE5NyArKysr KysrKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2V4cGxhaW4uc3FsICAgICAgICAg ICAgICB8IDE5NCArKysrKysrKysrKysrKysrKwogNiBmaWxlcyBjaGFuZ2VkLCA1OTggaW5zZXJ0 aW9ucygrKQoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL2V4cGVjdGVk L3V0aWxpdHkub3V0IGIvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvZXhwZWN0ZWQvdXRpbGl0 eS5vdXQKaW5kZXggZTRkNjU2NGVhNWIuLmNiYTQ4N2Y2YmU1IDEwMDY0NAotLS0gYS9jb250cmli L3BnX3N0YXRfc3RhdGVtZW50cy9leHBlY3RlZC91dGlsaXR5Lm91dAorKysgYi9jb250cmliL3Bn X3N0YXRfc3RhdGVtZW50cy9leHBlY3RlZC91dGlsaXR5Lm91dApAQCAtMjg5LDYgKzI4OSw3NiBA QCBTRUxFQ1QgY2FsbHMsIHJvd3MsIHF1ZXJ5IEZST00gcGdfc3RhdF9zdGF0ZW1lbnRzIE9SREVS IEJZIHF1ZXJ5IENPTExBVEUgIkMiOwogICAgICAxIHwgICAgMSB8IFNFTEVDVCBwZ19zdGF0X3N0 YXRlbWVudHNfcmVzZXQoKSBJUyBOT1QgTlVMTCBBUyB0CiAoMyByb3dzKQogCistLSBCdWZmZXIg c3RhdHMgc2hvdWxkIGZsb3cgdGhyb3VnaCBFWFBMQUlOIEFOQUxZWkUKK0NSRUFURSBURU1QIFRB QkxFIGZsb3dfdGhyb3VnaF90ZXN0IChhIGludCwgYiBjaGFyKDIwMCkpOworSU5TRVJUIElOVE8g Zmxvd190aHJvdWdoX3Rlc3QgU0VMRUNUIGksIHJlcGVhdCgneCcsIDIwMCkgRlJPTSBnZW5lcmF0 ZV9zZXJpZXMoMSwgNTAwMCkgQVMgaTsKK0NSRUFURSBGVU5DVElPTiBydW5fZXhwbGFpbl9idWZm ZXJzX3Rlc3QoKSBSRVRVUk5TIHZvaWQgQVMgJCQKK0RFQ0xBUkUKK0JFR0lOCisgICAgRVhFQ1VU RSAnRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUykgU0VMRUNUICogRlJPTSBmbG93X3Rocm91Z2hf dGVzdCc7CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBnc3FsOworU0VMRUNUIHBnX3N0YXRfc3RhdGVt ZW50c19yZXNldCgpIElTIE5PVCBOVUxMIEFTIHQ7CisgdCAKKy0tLQorIHQKKygxIHJvdykKKwor U0VMRUNUIHJ1bl9leHBsYWluX2J1ZmZlcnNfdGVzdCgpOworIHJ1bl9leHBsYWluX2J1ZmZlcnNf dGVzdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKKy0tIEVYUExB SU4gZW50cmllcyBzaG91bGQgaGF2ZSBub24temVybyBidWZmZXIgc3RhdHMKK1NFTEVDVCBxdWVy eSwgbG9jYWxfYmxrc19oaXQgKyBsb2NhbF9ibGtzX3JlYWQgPiAwIGFzIGhhc19idWZmZXJfc3Rh dHMKK0ZST00gcGdfc3RhdF9zdGF0ZW1lbnRzCitXSEVSRSBxdWVyeSBMSUtFICdTRUxFQ1QgcnVu X2V4cGxhaW5fYnVmZmVyc190ZXN0JScKK09SREVSIEJZIHF1ZXJ5IENPTExBVEUgIkMiOworICAg ICAgICAgICAgICAgcXVlcnkgICAgICAgICAgICAgICB8IGhhc19idWZmZXJfc3RhdHMgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyBTRUxF Q1QgcnVuX2V4cGxhaW5fYnVmZmVyc190ZXN0KCkgfCB0CisoMSByb3cpCisKK0RST1AgRlVOQ1RJ T04gcnVuX2V4cGxhaW5fYnVmZmVyc190ZXN0OworRFJPUCBUQUJMRSBmbG93X3Rocm91Z2hfdGVz dDsKKy0tIFZhbGlkYXRlIGJ1ZmZlci9XQUwgY291bnRpbmcgZHVyaW5nIGFib3J0CitTRVQgcGdf c3RhdF9zdGF0ZW1lbnRzLnRyYWNrID0gJ2FsbCc7CitDUkVBVEUgVEVNUCBUQUJMRSBwZ3NzX2Nh bGxfdGFiIChhIGludCwgYiBjaGFyKDIwKSk7CitDUkVBVEUgVEVNUCBUQUJMRSBwZ3NzX2NhbGxf dGFiMiAoYSBpbnQsIGIgY2hhcigyMCkpOworSU5TRVJUIElOVE8gcGdzc19jYWxsX3RhYiBWQUxV RVMgKDAsICd6enonKTsKK0NSRUFURSBQUk9DRURVUkUgcGdzc19jYWxsX3JvbGxiYWNrX3Byb2Mo KSBBUyAkJAorREVDTEFSRQorICAgIHYgaW50OworQkVHSU4KKyAgICBFWFBMQUlOIEFOQUxZWkUg V0lUSCBpbnMgQVMgKElOU0VSVCBJTlRPIHBnc3NfY2FsbF90YWIyIFNFTEVDVCAqIEZST00gcGdz c19jYWxsX3RhYiBSRVRVUk5JTkcgYSkKKyAgICBTRUxFQ1QgYSAvIDAgSU5UTyB2IEZST00gaW5z OworRVhDRVBUSU9OIFdIRU4gZGl2aXNpb25fYnlfemVybyBUSEVOCitFTkQ7CiskJCBMQU5HVUFH RSBwbHBnc3FsOworU0VMRUNUIHBnX3N0YXRfc3RhdGVtZW50c19yZXNldCgpIElTIE5PVCBOVUxM IEFTIHQ7CisgdCAKKy0tLQorIHQKKygxIHJvdykKKworQ0FMTCBwZ3NzX2NhbGxfcm9sbGJhY2tf cHJvYygpOworU0VMRUNUIHF1ZXJ5LCBjYWxscywKK2xvY2FsX2Jsa3NfaGl0ICsgbG9jYWxfYmxr c19yZWFkID4gMCBhcyBsb2NhbF9oaXRyZWFkLAord2FsX2J5dGVzID4gMCBhcyB3YWxfYnl0ZXNf Z2VuZXJhdGVkLAord2FsX3JlY29yZHMgPiAwIGFzIHdhbF9yZWNvcmRzX2dlbmVyYXRlZAorRlJP TSBwZ19zdGF0X3N0YXRlbWVudHMKK1dIRVJFIHF1ZXJ5IExJS0UgJyVwZ3NzX2NhbGxfcm9sbGJh Y2tfcHJvYyUnCitPUkRFUiBCWSBxdWVyeSBDT0xMQVRFICJDIjsKKyAgICAgICAgICAgICBxdWVy eSAgICAgICAgICAgICAgfCBjYWxscyB8IGxvY2FsX2hpdHJlYWQgfCB3YWxfYnl0ZXNfZ2VuZXJh dGVkIHwgd2FsX3JlY29yZHNfZ2VuZXJhdGVkIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgQ0FMTCBwZ3NzX2NhbGxfcm9sbGJhY2tfcHJvYygpIHwgICAg IDEgfCB0ICAgICAgICAgICAgIHwgdCAgICAgICAgICAgICAgICAgICB8IHQKKygxIHJvdykKKwor RFJPUCBUQUJMRSBwZ3NzX2NhbGxfdGFiMjsKK0RST1AgVEFCTEUgcGdzc19jYWxsX3RhYjsKK0RS T1AgUFJPQ0VEVVJFIHBnc3NfY2FsbF9yb2xsYmFja19wcm9jOworU0VUIHBnX3N0YXRfc3RhdGVt ZW50cy50cmFjayA9ICd0b3AnOwogLS0gQ0FMTAogQ1JFQVRFIE9SIFJFUExBQ0UgUFJPQ0VEVVJF IHN1bV9vbmUoaSBpbnQpIEFTICQkCiBERUNMQVJFCmRpZmYgLS1naXQgYS9jb250cmliL3BnX3N0 YXRfc3RhdGVtZW50cy9leHBlY3RlZC93YWwub3V0IGIvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVu dHMvZXhwZWN0ZWQvd2FsLm91dAppbmRleCA5NzdlMzgyZDg0OC4uNjExMjEzZGFlZjYgMTAwNjQ0 Ci0tLSBhL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL2V4cGVjdGVkL3dhbC5vdXQKKysrIGIv Y29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvZXhwZWN0ZWQvd2FsLm91dApAQCAtMjgsMyArMjgs NTEgQEAgU0VMRUNUIHBnX3N0YXRfc3RhdGVtZW50c19yZXNldCgpIElTIE5PVCBOVUxMIEFTIHQ7 CiAgdAogKDEgcm93KQogCistLQorLS0gVmFsaWRhdGUgYnVmZmVyL1dBTCBjb3VudGluZyB3aXRo IGNhdWdodCBleGNlcHRpb24gaW4gUEwvcGdTUUwKKy0tCitDUkVBVEUgVEVNUCBUQUJMRSBwZ3Nz X2Vycm9yX3RhYiAoYSBpbnQsIGIgY2hhcigyMCkpOworSU5TRVJUIElOVE8gcGdzc19lcnJvcl90 YWIgVkFMVUVTICgwLCAnenp6Jyk7CitDUkVBVEUgRlVOQ1RJT04gcGdzc19lcnJvcl9mdW5jKCkg UkVUVVJOUyB2b2lkIEFTICQkCitERUNMQVJFCisgICAgdiBpbnQ7CitCRUdJTgorICAgIFdJVEgg aW5zIEFTIChJTlNFUlQgSU5UTyBwZ3NzX2Vycm9yX3RhYiBWQUxVRVMgKDEsICdhYWEnKSBSRVRV Uk5JTkcgYSkKKyAgICBTRUxFQ1QgYSAvIDAgSU5UTyB2IEZST00gaW5zOworRVhDRVBUSU9OIFdI RU4gZGl2aXNpb25fYnlfemVybyBUSEVOCisgICAgTlVMTDsKK0VORDsKKyQkIExBTkdVQUdFIHBs cGdzcWw7CitTRUxFQ1QgcGdfc3RhdF9zdGF0ZW1lbnRzX3Jlc2V0KCkgSVMgTk9UIE5VTEwgQVMg dDsKKyB0IAorLS0tCisgdAorKDEgcm93KQorCitTRUxFQ1QgcGdzc19lcnJvcl9mdW5jKCk7Cisg cGdzc19lcnJvcl9mdW5jIAorLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworLS0gQnVm ZmVyL1dBTCB1c2FnZSBmcm9tIHRoZSB3Q1RFIElOU0VSVCBzaG91bGQgc3Vydml2ZSB0aGUgZXhj ZXB0aW9uCitTRUxFQ1QgcXVlcnksIGNhbGxzLAorbG9jYWxfYmxrc19oaXQgKyBsb2NhbF9ibGtz X3JlYWQgPiAwIGFzIGxvY2FsX2hpdHJlYWQsCit3YWxfYnl0ZXMgPiAwIGFzIHdhbF9ieXRlc19n ZW5lcmF0ZWQsCit3YWxfcmVjb3JkcyA+IDAgYXMgd2FsX3JlY29yZHNfZ2VuZXJhdGVkCitGUk9N IHBnX3N0YXRfc3RhdGVtZW50cworV0hFUkUgcXVlcnkgTElLRSAnJXBnc3NfZXJyb3JfZnVuYyUn CitPUkRFUiBCWSBxdWVyeSBDT0xMQVRFICJDIjsKKyAgICAgICAgICBxdWVyeSAgICAgICAgICAg fCBjYWxscyB8IGxvY2FsX2hpdHJlYWQgfCB3YWxfYnl0ZXNfZ2VuZXJhdGVkIHwgd2FsX3JlY29y ZHNfZ2VuZXJhdGVkIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg U0VMRUNUIHBnc3NfZXJyb3JfZnVuYygpIHwgICAgIDEgfCB0ICAgICAgICAgICAgIHwgdCAgICAg ICAgICAgICAgICAgICB8IHQKKygxIHJvdykKKworRFJPUCBUQUJMRSBwZ3NzX2Vycm9yX3RhYjsK K0RST1AgRlVOQ1RJT04gcGdzc19lcnJvcl9mdW5jOworU0VMRUNUIHBnX3N0YXRfc3RhdGVtZW50 c19yZXNldCgpIElTIE5PVCBOVUxMIEFTIHQ7CisgdCAKKy0tLQorIHQKKygxIHJvdykKKwpkaWZm IC0tZ2l0IGEvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvc3FsL3V0aWxpdHkuc3FsIGIvY29u dHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvc3FsL3V0aWxpdHkuc3FsCmluZGV4IGRkOTcyMDNjMjEw Li43NTQwZTQ5YzczYyAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvc3Fs L3V0aWxpdHkuc3FsCisrKyBiL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3NxbC91dGlsaXR5 LnNxbApAQCAtMTUyLDYgKzE1Miw2MiBAQCBFWFBMQUlOIChjb3N0cyBvZmYpIFNFTEVDVCBhIEZS T00gZ2VuZXJhdGVfc2VyaWVzKDEsMTApIEFTIHRhYihhKSBXSEVSRSBhID0gNzsKIAogU0VMRUNU IGNhbGxzLCByb3dzLCBxdWVyeSBGUk9NIHBnX3N0YXRfc3RhdGVtZW50cyBPUkRFUiBCWSBxdWVy eSBDT0xMQVRFICJDIjsKIAorLS0gQnVmZmVyIHN0YXRzIHNob3VsZCBmbG93IHRocm91Z2ggRVhQ TEFJTiBBTkFMWVpFCitDUkVBVEUgVEVNUCBUQUJMRSBmbG93X3Rocm91Z2hfdGVzdCAoYSBpbnQs IGIgY2hhcigyMDApKTsKK0lOU0VSVCBJTlRPIGZsb3dfdGhyb3VnaF90ZXN0IFNFTEVDVCBpLCBy ZXBlYXQoJ3gnLCAyMDApIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMDApIEFTIGk7CisKK0NS RUFURSBGVU5DVElPTiBydW5fZXhwbGFpbl9idWZmZXJzX3Rlc3QoKSBSRVRVUk5TIHZvaWQgQVMg JCQKK0RFQ0xBUkUKK0JFR0lOCisgICAgRVhFQ1VURSAnRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVS UykgU0VMRUNUICogRlJPTSBmbG93X3Rocm91Z2hfdGVzdCc7CitFTkQ7CiskJCBMQU5HVUFHRSBw bHBnc3FsOworCitTRUxFQ1QgcGdfc3RhdF9zdGF0ZW1lbnRzX3Jlc2V0KCkgSVMgTk9UIE5VTEwg QVMgdDsKKworU0VMRUNUIHJ1bl9leHBsYWluX2J1ZmZlcnNfdGVzdCgpOworCistLSBFWFBMQUlO IGVudHJpZXMgc2hvdWxkIGhhdmUgbm9uLXplcm8gYnVmZmVyIHN0YXRzCitTRUxFQ1QgcXVlcnks IGxvY2FsX2Jsa3NfaGl0ICsgbG9jYWxfYmxrc19yZWFkID4gMCBhcyBoYXNfYnVmZmVyX3N0YXRz CitGUk9NIHBnX3N0YXRfc3RhdGVtZW50cworV0hFUkUgcXVlcnkgTElLRSAnU0VMRUNUIHJ1bl9l eHBsYWluX2J1ZmZlcnNfdGVzdCUnCitPUkRFUiBCWSBxdWVyeSBDT0xMQVRFICJDIjsKKworRFJP UCBGVU5DVElPTiBydW5fZXhwbGFpbl9idWZmZXJzX3Rlc3Q7CitEUk9QIFRBQkxFIGZsb3dfdGhy b3VnaF90ZXN0OworCistLSBWYWxpZGF0ZSBidWZmZXIvV0FMIGNvdW50aW5nIGR1cmluZyBhYm9y dAorU0VUIHBnX3N0YXRfc3RhdGVtZW50cy50cmFjayA9ICdhbGwnOworQ1JFQVRFIFRFTVAgVEFC TEUgcGdzc19jYWxsX3RhYiAoYSBpbnQsIGIgY2hhcigyMCkpOworQ1JFQVRFIFRFTVAgVEFCTEUg cGdzc19jYWxsX3RhYjIgKGEgaW50LCBiIGNoYXIoMjApKTsKK0lOU0VSVCBJTlRPIHBnc3NfY2Fs bF90YWIgVkFMVUVTICgwLCAnenp6Jyk7CisKK0NSRUFURSBQUk9DRURVUkUgcGdzc19jYWxsX3Jv bGxiYWNrX3Byb2MoKSBBUyAkJAorREVDTEFSRQorICAgIHYgaW50OworQkVHSU4KKyAgICBFWFBM QUlOIEFOQUxZWkUgV0lUSCBpbnMgQVMgKElOU0VSVCBJTlRPIHBnc3NfY2FsbF90YWIyIFNFTEVD VCAqIEZST00gcGdzc19jYWxsX3RhYiBSRVRVUk5JTkcgYSkKKyAgICBTRUxFQ1QgYSAvIDAgSU5U TyB2IEZST00gaW5zOworRVhDRVBUSU9OIFdIRU4gZGl2aXNpb25fYnlfemVybyBUSEVOCitFTkQ7 CiskJCBMQU5HVUFHRSBwbHBnc3FsOworCitTRUxFQ1QgcGdfc3RhdF9zdGF0ZW1lbnRzX3Jlc2V0 KCkgSVMgTk9UIE5VTEwgQVMgdDsKK0NBTEwgcGdzc19jYWxsX3JvbGxiYWNrX3Byb2MoKTsKKwor U0VMRUNUIHF1ZXJ5LCBjYWxscywKK2xvY2FsX2Jsa3NfaGl0ICsgbG9jYWxfYmxrc19yZWFkID4g MCBhcyBsb2NhbF9oaXRyZWFkLAord2FsX2J5dGVzID4gMCBhcyB3YWxfYnl0ZXNfZ2VuZXJhdGVk LAord2FsX3JlY29yZHMgPiAwIGFzIHdhbF9yZWNvcmRzX2dlbmVyYXRlZAorRlJPTSBwZ19zdGF0 X3N0YXRlbWVudHMKK1dIRVJFIHF1ZXJ5IExJS0UgJyVwZ3NzX2NhbGxfcm9sbGJhY2tfcHJvYyUn CitPUkRFUiBCWSBxdWVyeSBDT0xMQVRFICJDIjsKKworRFJPUCBUQUJMRSBwZ3NzX2NhbGxfdGFi MjsKK0RST1AgVEFCTEUgcGdzc19jYWxsX3RhYjsKK0RST1AgUFJPQ0VEVVJFIHBnc3NfY2FsbF9y b2xsYmFja19wcm9jOworU0VUIHBnX3N0YXRfc3RhdGVtZW50cy50cmFjayA9ICd0b3AnOworCiAt LSBDQUxMCiBDUkVBVEUgT1IgUkVQTEFDRSBQUk9DRURVUkUgc3VtX29uZShpIGludCkgQVMgJCQK IERFQ0xBUkUKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3NxbC93YWwu c3FsIGIvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvc3FsL3dhbC5zcWwKaW5kZXggMWRjMTU1 MmE4MWUuLjQ2N2UzMjFiMjA2IDEwMDY0NAotLS0gYS9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50 cy9zcWwvd2FsLnNxbAorKysgYi9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9zcWwvd2FsLnNx bApAQCAtMTgsMyArMTgsMzYgQEAgd2FsX3JlY29yZHMgPiAwIGFzIHdhbF9yZWNvcmRzX2dlbmVy YXRlZCwKIHdhbF9yZWNvcmRzID49IHJvd3MgYXMgd2FsX3JlY29yZHNfZ2Vfcm93cwogRlJPTSBw Z19zdGF0X3N0YXRlbWVudHMgT1JERVIgQlkgcXVlcnkgQ09MTEFURSAiQyI7CiBTRUxFQ1QgcGdf c3RhdF9zdGF0ZW1lbnRzX3Jlc2V0KCkgSVMgTk9UIE5VTEwgQVMgdDsKKworLS0KKy0tIFZhbGlk YXRlIGJ1ZmZlci9XQUwgY291bnRpbmcgd2l0aCBjYXVnaHQgZXhjZXB0aW9uIGluIFBML3BnU1FM CistLQorQ1JFQVRFIFRFTVAgVEFCTEUgcGdzc19lcnJvcl90YWIgKGEgaW50LCBiIGNoYXIoMjAp KTsKK0lOU0VSVCBJTlRPIHBnc3NfZXJyb3JfdGFiIFZBTFVFUyAoMCwgJ3p6eicpOworCitDUkVB VEUgRlVOQ1RJT04gcGdzc19lcnJvcl9mdW5jKCkgUkVUVVJOUyB2b2lkIEFTICQkCitERUNMQVJF CisgICAgdiBpbnQ7CitCRUdJTgorICAgIFdJVEggaW5zIEFTIChJTlNFUlQgSU5UTyBwZ3NzX2Vy cm9yX3RhYiBWQUxVRVMgKDEsICdhYWEnKSBSRVRVUk5JTkcgYSkKKyAgICBTRUxFQ1QgYSAvIDAg SU5UTyB2IEZST00gaW5zOworRVhDRVBUSU9OIFdIRU4gZGl2aXNpb25fYnlfemVybyBUSEVOCisg ICAgTlVMTDsKK0VORDsKKyQkIExBTkdVQUdFIHBscGdzcWw7CisKK1NFTEVDVCBwZ19zdGF0X3N0 YXRlbWVudHNfcmVzZXQoKSBJUyBOT1QgTlVMTCBBUyB0OworU0VMRUNUIHBnc3NfZXJyb3JfZnVu YygpOworCistLSBCdWZmZXIvV0FMIHVzYWdlIGZyb20gdGhlIHdDVEUgSU5TRVJUIHNob3VsZCBz dXJ2aXZlIHRoZSBleGNlcHRpb24KK1NFTEVDVCBxdWVyeSwgY2FsbHMsCitsb2NhbF9ibGtzX2hp dCArIGxvY2FsX2Jsa3NfcmVhZCA+IDAgYXMgbG9jYWxfaGl0cmVhZCwKK3dhbF9ieXRlcyA+IDAg YXMgd2FsX2J5dGVzX2dlbmVyYXRlZCwKK3dhbF9yZWNvcmRzID4gMCBhcyB3YWxfcmVjb3Jkc19n ZW5lcmF0ZWQKK0ZST00gcGdfc3RhdF9zdGF0ZW1lbnRzCitXSEVSRSBxdWVyeSBMSUtFICclcGdz c19lcnJvcl9mdW5jJScKK09SREVSIEJZIHF1ZXJ5IENPTExBVEUgIkMiOworCitEUk9QIFRBQkxF IHBnc3NfZXJyb3JfdGFiOworRFJPUCBGVU5DVElPTiBwZ3NzX2Vycm9yX2Z1bmM7CitTRUxFQ1Qg cGdfc3RhdF9zdGF0ZW1lbnRzX3Jlc2V0KCkgSVMgTk9UIE5VTEwgQVMgdDsKZGlmZiAtLWdpdCBh L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZXhwbGFpbi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL2V4cGxhaW4ub3V0CmluZGV4IDdjMWYyNmIxODJjLi5lMjhlNzU0MzY5MyAxMDA2 NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9leHBsYWluLm91dAorKysgYi9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL2V4cGxhaW4ub3V0CkBAIC04MjIsMyArODIyLDIwMCBAQCBz ZWxlY3QgZXhwbGFpbl9maWx0ZXIoJ2V4cGxhaW4gKGFuYWx5emUsYnVmZmVycyBvZmYsY29zdHMg b2ZmKSBzZWxlY3Qgc3VtKG4pIG92ZQogKDkgcm93cykKIAogcmVzZXQgd29ya19tZW07CistLSBF WFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTKSBzaG91bGQgcmVwb3J0IGJ1ZmZlciB1c2FnZSBmcm9t IFBML3BnU1FMCistLSBFWENFUFRJT04gYmxvY2tzLCBldmVuIGFmdGVyIHN1YnRyYW5zYWN0aW9u IHJvbGxiYWNrLgorQ1JFQVRFIFRFTVAgVEFCTEUgZXhwbGFpbl9leGNfdGFiIChhIGludCwgYiBj aGFyKDIwKSk7CitJTlNFUlQgSU5UTyBleHBsYWluX2V4Y190YWIgVkFMVUVTICgwLCAnenp6Jyk7 CitDUkVBVEUgRlVOQ1RJT04gZXhwbGFpbl9leGNfZnVuYygpIFJFVFVSTlMgdm9pZCBBUyAkJAor REVDTEFSRQorICAgIHYgaW50OworQkVHSU4KKyAgICBXSVRIIGlucyBBUyAoSU5TRVJUIElOVE8g ZXhwbGFpbl9leGNfdGFiIFZBTFVFUyAoMSwgJ2FhYScpIFJFVFVSTklORyBhKQorICAgIFNFTEVD VCBhIC8gMCBJTlRPIHYgRlJPTSBpbnM7CitFWENFUFRJT04gV0hFTiBkaXZpc2lvbl9ieV96ZXJv IFRIRU4KKyAgICBOVUxMOworRU5EOworJCQgTEFOR1VBR0UgcGxwZ3NxbDsKK0NSRUFURSBGVU5D VElPTiBjaGVja19leHBsYWluX2V4Y2VwdGlvbl9idWZmZXJzKCkgUkVUVVJOUyBib29sZWFuIEFT ICQkCitERUNMQVJFCisgICAgcGxhbl9qc29uIGpzb247CisgICAgbm9kZSBqc29uOworICAgIHRv dGFsX2J1ZmZlcnMgaW50OworQkVHSU4KKyAgICBFWEVDVVRFICdFWFBMQUlOIChBTkFMWVpFLCBC VUZGRVJTLCBDT1NUUyBPRkYsIEZPUk1BVCBKU09OKQorICAgICAgICBTRUxFQ1QgZXhwbGFpbl9l eGNfZnVuYygpJyBJTlRPIHBsYW5fanNvbjsKKyAgICBub2RlIDo9IHBsYW5fanNvbi0+MC0+J1Bs YW4nOworICAgIHRvdGFsX2J1ZmZlcnMgOj0KKyAgICAgICAgQ09BTEVTQ0UoKG5vZGUtPj4nTG9j YWwgSGl0IEJsb2NrcycpOjppbnQsIDApICsKKyAgICAgICAgQ09BTEVTQ0UoKG5vZGUtPj4nTG9j YWwgUmVhZCBCbG9ja3MnKTo6aW50LCAwKTsKKyAgICBSRVRVUk4gdG90YWxfYnVmZmVycyA+IDA7 CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBnc3FsOworU0VMRUNUIGNoZWNrX2V4cGxhaW5fZXhjZXB0 aW9uX2J1ZmZlcnMoKSBBUyBleGNlcHRpb25fYnVmZmVyc192aXNpYmxlOworIGV4Y2VwdGlvbl9i dWZmZXJzX3Zpc2libGUgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0CisoMSByb3cp CisKKy0tIEFsc28gdGVzdCB3aXRoIG5lc3RlZCBFWFBMQUlOIEFOQUxZWkUgKHR3byBsZXZlbHMg b2YgaW5zdHJ1bWVudGF0aW9uKQorQ1JFQVRFIEZVTkNUSU9OIGNoZWNrX2V4cGxhaW5fZXhjZXB0 aW9uX2J1ZmZlcnNfbmVzdGVkKCkgUkVUVVJOUyBib29sZWFuIEFTICQkCitERUNMQVJFCisgICAg cGxhbl9qc29uIGpzb247CisgICAgbm9kZSBqc29uOworICAgIHRvdGFsX2J1ZmZlcnMgaW50Owor QkVHSU4KKyAgICBFWEVDVVRFICdFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTLCBDT1NUUyBPRkYs IEZPUk1BVCBKU09OKQorICAgICAgICBTRUxFQ1QgY2hlY2tfZXhwbGFpbl9leGNlcHRpb25fYnVm ZmVycygpJyBJTlRPIHBsYW5fanNvbjsKKyAgICBub2RlIDo9IHBsYW5fanNvbi0+MC0+J1BsYW4n OworICAgIHRvdGFsX2J1ZmZlcnMgOj0KKyAgICAgICAgQ09BTEVTQ0UoKG5vZGUtPj4nTG9jYWwg SGl0IEJsb2NrcycpOjppbnQsIDApICsKKyAgICAgICAgQ09BTEVTQ0UoKG5vZGUtPj4nTG9jYWwg UmVhZCBCbG9ja3MnKTo6aW50LCAwKTsKKyAgICBSRVRVUk4gdG90YWxfYnVmZmVycyA+IDA7CitF TkQ7CiskJCBMQU5HVUFHRSBwbHBnc3FsOworU0VMRUNUIGNoZWNrX2V4cGxhaW5fZXhjZXB0aW9u X2J1ZmZlcnNfbmVzdGVkKCkgQVMgZXhjZXB0aW9uX2J1ZmZlcnNfbmVzdGVkX3Zpc2libGU7Cisg ZXhjZXB0aW9uX2J1ZmZlcnNfbmVzdGVkX3Zpc2libGUgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCitEUk9QIEZVTkNUSU9OIGNoZWNrX2V4cGxhaW5f ZXhjZXB0aW9uX2J1ZmZlcnNfbmVzdGVkOworRFJPUCBGVU5DVElPTiBjaGVja19leHBsYWluX2V4 Y2VwdGlvbl9idWZmZXJzOworRFJPUCBGVU5DVElPTiBleHBsYWluX2V4Y19mdW5jOworRFJPUCBU QUJMRSBleHBsYWluX2V4Y190YWI7CistLSBDdXJzb3IgaW5zdHJ1bWVudGF0aW9uIHRlc3QuCist LSBWZXJpZnkgdGhhdCBidWZmZXIgdXNhZ2UgaXMgY29ycmVjdGx5IHRyYWNrZWQgdGhyb3VnaCBj dXJzb3IgZXhlY3V0aW9uIHBhdGhzLgorLS0gTm9uLXNjcm9sbGFibGUgY3Vyc29ycyBleGVyY2lz ZSBFeGVjU2h1dGRvd25Ob2RlIGFmdGVyIGVhY2ggRXhlY3V0b3JSdW4KKy0tIChFWEVDX0ZMQUdf QkFDS1dBUkQgaXMgbm90IHNldCksIHdoaWxlIHNjcm9sbGFibGUgY3Vyc29ycyBvbmx5IHNodXQg ZG93bgorLS0gbm9kZXMgaW4gRXhlY3V0b3JGaW5pc2guIEluIGJvdGggY2FzZXMsIGJ1ZmZlciB1 c2FnZSBmcm9tIHRoZSBpbm5lciBjdXJzb3IKKy0tIHNjYW4gc2hvdWxkIGJlIGNvcnJlY3RseSBh Y2N1bXVsYXRlZC4KK0NSRUFURSBURU1QIFRBQkxFIGN1cnNvcl9idWZfdGVzdCBBUyBTRUxFQ1Qg KiBGUk9NIHRlbmsxOworQ1JFQVRFIEZVTkNUSU9OIGN1cnNvcl9ub3Njcm9sbF9zY2FuKCkgUkVU VVJOUyBiaWdpbnQgQVMgJCQKK0RFQ0xBUkUKKyAgICBjdXIgTk8gU0NST0xMIENVUlNPUiBGT1Ig U0VMRUNUICogRlJPTSBjdXJzb3JfYnVmX3Rlc3Q7CisgICAgcmVjIFJFQ09SRDsKKyAgICBjbnQg YmlnaW50IDo9IDA7CitCRUdJTgorICAgIE9QRU4gY3VyOworICAgIExPT1AKKyAgICAgICAgRkVU Q0ggTkVYVCBGUk9NIGN1ciBJTlRPIHJlYzsKKyAgICAgICAgRVhJVCBXSEVOIE5PVCBGT1VORDsK KyAgICAgICAgY250IDo9IGNudCArIDE7CisgICAgRU5EIExPT1A7CisgICAgQ0xPU0UgY3VyOwor ICAgIFJFVFVSTiBjbnQ7CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBnc3FsOworQ1JFQVRFIEZVTkNU SU9OIGN1cnNvcl9zY3JvbGxfc2NhbigpIFJFVFVSTlMgYmlnaW50IEFTICQkCitERUNMQVJFCisg ICAgY3VyIFNDUk9MTCBDVVJTT1IgRk9SIFNFTEVDVCAqIEZST00gY3Vyc29yX2J1Zl90ZXN0Owor ICAgIHJlYyBSRUNPUkQ7CisgICAgY250IGJpZ2ludCA6PSAwOworQkVHSU4KKyAgICBPUEVOIGN1 cjsKKyAgICBMT09QCisgICAgICAgIEZFVENIIE5FWFQgRlJPTSBjdXIgSU5UTyByZWM7CisgICAg ICAgIEVYSVQgV0hFTiBOT1QgRk9VTkQ7CisgICAgICAgIGNudCA6PSBjbnQgKyAxOworICAgIEVO RCBMT09QOworICAgIENMT1NFIGN1cjsKKyAgICBSRVRVUk4gY250OworRU5EOworJCQgTEFOR1VB R0UgcGxwZ3NxbDsKK0NSRUFURSBGVU5DVElPTiBjaGVja19jdXJzb3JfZXhwbGFpbl9idWZmZXJz KCkgUkVUVVJOUyBUQUJMRShub3Njcm9sbF9vayBib29sZWFuLCBzY3JvbGxfb2sgYm9vbGVhbikg QVMgJCQKK0RFQ0xBUkUKKyAgICBwbGFuX2pzb24ganNvbjsKKyAgICBub2RlIGpzb247CisgICAg ZGlyZWN0X2J1ZiBpbnQ7CisgICAgbm9zY3JvbGxfYnVmIGludDsKKyAgICBzY3JvbGxfYnVmIGlu dDsKK0JFR0lOCisgICAgLS0gRGlyZWN0IHNjYW46IGdldCBsZWFmIFNlcSBTY2FuIG5vZGUgYnVm ZmVycyBhcyBiYXNlbGluZQorICAgIEVYRUNVVEUgJ0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMs IENPU1RTIE9GRiwgRk9STUFUIEpTT04pCisgICAgICAgIFNFTEVDVCAqIEZST00gY3Vyc29yX2J1 Zl90ZXN0JyBJTlRPIHBsYW5fanNvbjsKKyAgICBub2RlIDo9IHBsYW5fanNvbi0+MC0+J1BsYW4n OworICAgIFdISUxFIG5vZGUtPidQbGFucycgSVMgTk9UIE5VTEwgTE9PUAorICAgICAgICBub2Rl IDo9IG5vZGUtPidQbGFucyctPjA7CisgICAgRU5EIExPT1A7CisgICAgZGlyZWN0X2J1ZiA6PQor ICAgICAgICBDT0FMRVNDRSgobm9kZS0+PidMb2NhbCBIaXQgQmxvY2tzJyk6OmludCwgMCkgKwor ICAgICAgICBDT0FMRVNDRSgobm9kZS0+PidMb2NhbCBSZWFkIEJsb2NrcycpOjppbnQsIDApOwor CisgICAgLS0gTm9uLXNjcm9sbGFibGUgY3Vyc29yIHBhdGg6IEV4ZWNTaHV0ZG93bk5vZGUgcnVu cyBhZnRlciBlYWNoIEV4ZWN1dG9yUnVuCisgICAgRVhFQ1VURSAnRVhQTEFJTiAoQU5BTFlaRSwg QlVGRkVSUywgQ09TVFMgT0ZGLCBGT1JNQVQgSlNPTikKKyAgICAgICAgU0VMRUNUIGN1cnNvcl9u b3Njcm9sbF9zY2FuKCknIElOVE8gcGxhbl9qc29uOworICAgIG5vZGUgOj0gcGxhbl9qc29uLT4w LT4nUGxhbic7CisgICAgbm9zY3JvbGxfYnVmIDo9CisgICAgICAgIENPQUxFU0NFKChub2RlLT4+ J0xvY2FsIEhpdCBCbG9ja3MnKTo6aW50LCAwKSArCisgICAgICAgIENPQUxFU0NFKChub2RlLT4+ J0xvY2FsIFJlYWQgQmxvY2tzJyk6OmludCwgMCk7CisKKyAgICAtLSBTY3JvbGxhYmxlIGN1cnNv ciBwYXRoOiBFeGVjU2h1dGRvd25Ob2RlIGlzIHNraXBwZWQKKyAgICBFWEVDVVRFICdFWFBMQUlO IChBTkFMWVpFLCBCVUZGRVJTLCBDT1NUUyBPRkYsIEZPUk1BVCBKU09OKQorICAgICAgICBTRUxF Q1QgY3Vyc29yX3Njcm9sbF9zY2FuKCknIElOVE8gcGxhbl9qc29uOworICAgIG5vZGUgOj0gcGxh bl9qc29uLT4wLT4nUGxhbic7CisgICAgc2Nyb2xsX2J1ZiA6PQorICAgICAgICBDT0FMRVNDRSgo bm9kZS0+PidMb2NhbCBIaXQgQmxvY2tzJyk6OmludCwgMCkgKworICAgICAgICBDT0FMRVNDRSgo bm9kZS0+PidMb2NhbCBSZWFkIEJsb2NrcycpOjppbnQsIDApOworCisgICAgLS0gQm90aCBjdXJz b3IgcGF0aHMgc2hvdWxkIHJlcG9ydCBidWZmZXIgY291bnRzIGFib3V0IGFzIGhpZ2ggYXMKKyAg ICAtLSB0aGUgZGlyZWN0IHNjYW4gKHNhbWUgZGF0YSBwbHVzIG1pbm9yIGNhdGFsb2cgb3Zlcmhl YWQpLCBhbmQgbm90CisgICAgLS0gZG91YmxlLWNvdW50ZWQgKDwgMnggdGhlIGRpcmVjdCBzY2Fu KQorICAgIFJFVFVSTiBRVUVSWSBTRUxFQ1QKKyAgICAgICAgKG5vc2Nyb2xsX2J1ZiA+PSBkaXJl Y3RfYnVmICogMC41IEFORCBub3Njcm9sbF9idWYgPCBkaXJlY3RfYnVmICogMiksCisgICAgICAg IChzY3JvbGxfYnVmID49IGRpcmVjdF9idWYgKiAwLjUgQU5EIHNjcm9sbF9idWYgPCBkaXJlY3Rf YnVmICogMik7CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBnc3FsOworU0VMRUNUICogRlJPTSBjaGVj a19jdXJzb3JfZXhwbGFpbl9idWZmZXJzKCk7Cisgbm9zY3JvbGxfb2sgfCBzY3JvbGxfb2sgCist LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgdCAgICAgICAgICAgfCB0CisoMSByb3cpCisKK0RS T1AgRlVOQ1RJT04gY2hlY2tfY3Vyc29yX2V4cGxhaW5fYnVmZmVyczsKK0RST1AgRlVOQ1RJT04g Y3Vyc29yX25vc2Nyb2xsX3NjYW47CitEUk9QIEZVTkNUSU9OIGN1cnNvcl9zY3JvbGxfc2NhbjsK K0RST1AgVEFCTEUgY3Vyc29yX2J1Zl90ZXN0OworLS0gUGFyYWxsZWwgcXVlcnkgYnVmZmVyIGRv dWJsZS1jb3VudGluZyB0ZXN0LgorLS0KKy0tIENvbXBhcmVzIHNlcmlhbCBTZXEgU2NhbiBidWZm ZXJzIHZzIHBhcmFsbGVsIFNlcSBTY2FuIGJ1ZmZlcnMuCistLSBUaGV5IHNjYW4gdGhlIHNhbWUg dGFibGUgc28gdGhlIGJ1ZmZlciBjb3VudCBzaG91bGQgYmUgc2ltaWxhci4KKy0tIERvdWJsZS1j b3VudGluZyB3b3VsZCBtYWtlIHRoZSBwYXJhbGxlbCBjb3VudCB+MnggbGFyZ2VyLgorQ1JFQVRF IEZVTkNUSU9OIGNoZWNrX3BhcmFsbGVsX2V4cGxhaW5fYnVmZmVycygpIFJFVFVSTlMgVEFCTEUo cmF0aW8gbnVtZXJpYykgQVMgJCQKK0RFQ0xBUkUKKyAgICBwbGFuX2pzb24ganNvbjsKKyAgICBz ZXJpYWxfYnVmZmVycyBpbnQ7CisgICAgcGFyYWxsZWxfYnVmZmVycyBpbnQ7CisgICAgbm9kZSBq c29uOworQkVHSU4KKyAgICAtLSBTZXJpYWwgLS0KKyAgICBTRVQgTE9DQUwgbWF4X3BhcmFsbGVs X3dvcmtlcnNfcGVyX2dhdGhlciA9IDA7CisgICAgRVhFQ1VURSAnRVhQTEFJTiAoQU5BTFlaRSwg QlVGRkVSUywgQ09TVFMgT0ZGLCBGT1JNQVQgSlNPTikKKyAgICAgICAgU0VMRUNUIGNvdW50KCop IEZST00gdGVuazEnIElOVE8gcGxhbl9qc29uOworICAgIG5vZGUgOj0gcGxhbl9qc29uLT4wLT4n UGxhbic7CisgICAgc2VyaWFsX2J1ZmZlcnMgOj0KKyAgICAgICAgQ09BTEVTQ0UoKG5vZGUtPj4n U2hhcmVkIEhpdCBCbG9ja3MnKTo6aW50LCAwKSArCisgICAgICAgIENPQUxFU0NFKChub2RlLT4+ J1NoYXJlZCBSZWFkIEJsb2NrcycpOjppbnQsIDApOworCisgICAgLS0gUGFyYWxsZWwgLS0KKyAg ICBTRVQgTE9DQUwgcGFyYWxsZWxfc2V0dXBfY29zdCA9IDA7CisgICAgU0VUIExPQ0FMIHBhcmFs bGVsX3R1cGxlX2Nvc3QgPSAwOworICAgIFNFVCBMT0NBTCBtaW5fcGFyYWxsZWxfdGFibGVfc2Nh bl9zaXplID0gMDsKKyAgICBTRVQgTE9DQUwgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhl ciA9IDI7CisgICAgU0VUIExPQ0FMIHBhcmFsbGVsX2xlYWRlcl9wYXJ0aWNpcGF0aW9uID0gb2Zm OworICAgIEVYRUNVVEUgJ0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMsIENPU1RTIE9GRiwgRk9S TUFUIEpTT04pCisgICAgICAgIFNFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxJyBJTlRPIHBsYW5f anNvbjsKKyAgICBub2RlIDo9IHBsYW5fanNvbi0+MC0+J1BsYW4nOworICAgIHBhcmFsbGVsX2J1 ZmZlcnMgOj0KKyAgICAgICAgQ09BTEVTQ0UoKG5vZGUtPj4nU2hhcmVkIEhpdCBCbG9ja3MnKTo6 aW50LCAwKSArCisgICAgICAgIENPQUxFU0NFKChub2RlLT4+J1NoYXJlZCBSZWFkIEJsb2Nrcycp OjppbnQsIDApOworCisgICAgUkVUVVJOIFFVRVJZIFNFTEVDVCByb3VuZChwYXJhbGxlbF9idWZm ZXJzOjpudW1lcmljIC8gR1JFQVRFU1Qoc2VyaWFsX2J1ZmZlcnMsIDEpKTsKK0VORDsKKyQkIExB TkdVQUdFIHBscGdzcWw7CitTRUxFQ1QgKiBGUk9NIGNoZWNrX3BhcmFsbGVsX2V4cGxhaW5fYnVm ZmVycygpOworIHJhdGlvIAorLS0tLS0tLQorICAgICAxCisoMSByb3cpCisKK0RST1AgRlVOQ1RJ T04gY2hlY2tfcGFyYWxsZWxfZXhwbGFpbl9idWZmZXJzOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvZXhwbGFpbi5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9leHBsYWluLnNx bAppbmRleCBlYmRhYjQyNjA0Yi4uY2Y1YzYzMzVhMTkgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL2V4cGxhaW4uc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2V4cGxhaW4u c3FsCkBAIC0xODgsMyArMTg4LDE5NyBAQCBzZWxlY3QgZXhwbGFpbl9maWx0ZXIoJ2V4cGxhaW4g KGFuYWx5emUsYnVmZmVycyBvZmYsY29zdHMgb2ZmKSBzZWxlY3Qgc3VtKG4pIG92ZQogLS0gVGVz dCB0dXBsZXN0b3JlIHN0b3JhZ2UgdXNhZ2UgaW4gV2luZG93IGFnZ3JlZ2F0ZSAobWVtb3J5IGFu ZCBkaXNrIGNhc2UsIGZpbmFsIHJlc3VsdCBpcyBkaXNrKQogc2VsZWN0IGV4cGxhaW5fZmlsdGVy KCdleHBsYWluIChhbmFseXplLGJ1ZmZlcnMgb2ZmLGNvc3RzIG9mZikgc2VsZWN0IHN1bShuKSBv dmVyKHBhcnRpdGlvbiBieSBtKSBmcm9tIChTRUxFQ1QgbiA8IDMgYXMgbSwgbiBmcm9tIGdlbmVy YXRlX3NlcmllcygxLDI1MDApIGEobikpJyk7CiByZXNldCB3b3JrX21lbTsKKworLS0gRVhQTEFJ TiAoQU5BTFlaRSwgQlVGRkVSUykgc2hvdWxkIHJlcG9ydCBidWZmZXIgdXNhZ2UgZnJvbSBQTC9w Z1NRTAorLS0gRVhDRVBUSU9OIGJsb2NrcywgZXZlbiBhZnRlciBzdWJ0cmFuc2FjdGlvbiByb2xs YmFjay4KK0NSRUFURSBURU1QIFRBQkxFIGV4cGxhaW5fZXhjX3RhYiAoYSBpbnQsIGIgY2hhcigy MCkpOworSU5TRVJUIElOVE8gZXhwbGFpbl9leGNfdGFiIFZBTFVFUyAoMCwgJ3p6eicpOworCitD UkVBVEUgRlVOQ1RJT04gZXhwbGFpbl9leGNfZnVuYygpIFJFVFVSTlMgdm9pZCBBUyAkJAorREVD TEFSRQorICAgIHYgaW50OworQkVHSU4KKyAgICBXSVRIIGlucyBBUyAoSU5TRVJUIElOVE8gZXhw bGFpbl9leGNfdGFiIFZBTFVFUyAoMSwgJ2FhYScpIFJFVFVSTklORyBhKQorICAgIFNFTEVDVCBh IC8gMCBJTlRPIHYgRlJPTSBpbnM7CitFWENFUFRJT04gV0hFTiBkaXZpc2lvbl9ieV96ZXJvIFRI RU4KKyAgICBOVUxMOworRU5EOworJCQgTEFOR1VBR0UgcGxwZ3NxbDsKKworQ1JFQVRFIEZVTkNU SU9OIGNoZWNrX2V4cGxhaW5fZXhjZXB0aW9uX2J1ZmZlcnMoKSBSRVRVUk5TIGJvb2xlYW4gQVMg JCQKK0RFQ0xBUkUKKyAgICBwbGFuX2pzb24ganNvbjsKKyAgICBub2RlIGpzb247CisgICAgdG90 YWxfYnVmZmVycyBpbnQ7CitCRUdJTgorICAgIEVYRUNVVEUgJ0VYUExBSU4gKEFOQUxZWkUsIEJV RkZFUlMsIENPU1RTIE9GRiwgRk9STUFUIEpTT04pCisgICAgICAgIFNFTEVDVCBleHBsYWluX2V4 Y19mdW5jKCknIElOVE8gcGxhbl9qc29uOworICAgIG5vZGUgOj0gcGxhbl9qc29uLT4wLT4nUGxh bic7CisgICAgdG90YWxfYnVmZmVycyA6PQorICAgICAgICBDT0FMRVNDRSgobm9kZS0+PidMb2Nh bCBIaXQgQmxvY2tzJyk6OmludCwgMCkgKworICAgICAgICBDT0FMRVNDRSgobm9kZS0+PidMb2Nh bCBSZWFkIEJsb2NrcycpOjppbnQsIDApOworICAgIFJFVFVSTiB0b3RhbF9idWZmZXJzID4gMDsK K0VORDsKKyQkIExBTkdVQUdFIHBscGdzcWw7CisKK1NFTEVDVCBjaGVja19leHBsYWluX2V4Y2Vw dGlvbl9idWZmZXJzKCkgQVMgZXhjZXB0aW9uX2J1ZmZlcnNfdmlzaWJsZTsKKworLS0gQWxzbyB0 ZXN0IHdpdGggbmVzdGVkIEVYUExBSU4gQU5BTFlaRSAodHdvIGxldmVscyBvZiBpbnN0cnVtZW50 YXRpb24pCitDUkVBVEUgRlVOQ1RJT04gY2hlY2tfZXhwbGFpbl9leGNlcHRpb25fYnVmZmVyc19u ZXN0ZWQoKSBSRVRVUk5TIGJvb2xlYW4gQVMgJCQKK0RFQ0xBUkUKKyAgICBwbGFuX2pzb24ganNv bjsKKyAgICBub2RlIGpzb247CisgICAgdG90YWxfYnVmZmVycyBpbnQ7CitCRUdJTgorICAgIEVY RUNVVEUgJ0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMsIENPU1RTIE9GRiwgRk9STUFUIEpTT04p CisgICAgICAgIFNFTEVDVCBjaGVja19leHBsYWluX2V4Y2VwdGlvbl9idWZmZXJzKCknIElOVE8g cGxhbl9qc29uOworICAgIG5vZGUgOj0gcGxhbl9qc29uLT4wLT4nUGxhbic7CisgICAgdG90YWxf YnVmZmVycyA6PQorICAgICAgICBDT0FMRVNDRSgobm9kZS0+PidMb2NhbCBIaXQgQmxvY2tzJyk6 OmludCwgMCkgKworICAgICAgICBDT0FMRVNDRSgobm9kZS0+PidMb2NhbCBSZWFkIEJsb2Nrcycp OjppbnQsIDApOworICAgIFJFVFVSTiB0b3RhbF9idWZmZXJzID4gMDsKK0VORDsKKyQkIExBTkdV QUdFIHBscGdzcWw7CisKK1NFTEVDVCBjaGVja19leHBsYWluX2V4Y2VwdGlvbl9idWZmZXJzX25l c3RlZCgpIEFTIGV4Y2VwdGlvbl9idWZmZXJzX25lc3RlZF92aXNpYmxlOworCitEUk9QIEZVTkNU SU9OIGNoZWNrX2V4cGxhaW5fZXhjZXB0aW9uX2J1ZmZlcnNfbmVzdGVkOworRFJPUCBGVU5DVElP TiBjaGVja19leHBsYWluX2V4Y2VwdGlvbl9idWZmZXJzOworRFJPUCBGVU5DVElPTiBleHBsYWlu X2V4Y19mdW5jOworRFJPUCBUQUJMRSBleHBsYWluX2V4Y190YWI7CisKKy0tIEN1cnNvciBpbnN0 cnVtZW50YXRpb24gdGVzdC4KKy0tIFZlcmlmeSB0aGF0IGJ1ZmZlciB1c2FnZSBpcyBjb3JyZWN0 bHkgdHJhY2tlZCB0aHJvdWdoIGN1cnNvciBleGVjdXRpb24gcGF0aHMuCistLSBOb24tc2Nyb2xs YWJsZSBjdXJzb3JzIGV4ZXJjaXNlIEV4ZWNTaHV0ZG93bk5vZGUgYWZ0ZXIgZWFjaCBFeGVjdXRv clJ1bgorLS0gKEVYRUNfRkxBR19CQUNLV0FSRCBpcyBub3Qgc2V0KSwgd2hpbGUgc2Nyb2xsYWJs ZSBjdXJzb3JzIG9ubHkgc2h1dCBkb3duCistLSBub2RlcyBpbiBFeGVjdXRvckZpbmlzaC4gSW4g Ym90aCBjYXNlcywgYnVmZmVyIHVzYWdlIGZyb20gdGhlIGlubmVyIGN1cnNvcgorLS0gc2NhbiBz aG91bGQgYmUgY29ycmVjdGx5IGFjY3VtdWxhdGVkLgorCitDUkVBVEUgVEVNUCBUQUJMRSBjdXJz b3JfYnVmX3Rlc3QgQVMgU0VMRUNUICogRlJPTSB0ZW5rMTsKKworQ1JFQVRFIEZVTkNUSU9OIGN1 cnNvcl9ub3Njcm9sbF9zY2FuKCkgUkVUVVJOUyBiaWdpbnQgQVMgJCQKK0RFQ0xBUkUKKyAgICBj dXIgTk8gU0NST0xMIENVUlNPUiBGT1IgU0VMRUNUICogRlJPTSBjdXJzb3JfYnVmX3Rlc3Q7Cisg ICAgcmVjIFJFQ09SRDsKKyAgICBjbnQgYmlnaW50IDo9IDA7CitCRUdJTgorICAgIE9QRU4gY3Vy OworICAgIExPT1AKKyAgICAgICAgRkVUQ0ggTkVYVCBGUk9NIGN1ciBJTlRPIHJlYzsKKyAgICAg ICAgRVhJVCBXSEVOIE5PVCBGT1VORDsKKyAgICAgICAgY250IDo9IGNudCArIDE7CisgICAgRU5E IExPT1A7CisgICAgQ0xPU0UgY3VyOworICAgIFJFVFVSTiBjbnQ7CitFTkQ7CiskJCBMQU5HVUFH RSBwbHBnc3FsOworCitDUkVBVEUgRlVOQ1RJT04gY3Vyc29yX3Njcm9sbF9zY2FuKCkgUkVUVVJO UyBiaWdpbnQgQVMgJCQKK0RFQ0xBUkUKKyAgICBjdXIgU0NST0xMIENVUlNPUiBGT1IgU0VMRUNU ICogRlJPTSBjdXJzb3JfYnVmX3Rlc3Q7CisgICAgcmVjIFJFQ09SRDsKKyAgICBjbnQgYmlnaW50 IDo9IDA7CitCRUdJTgorICAgIE9QRU4gY3VyOworICAgIExPT1AKKyAgICAgICAgRkVUQ0ggTkVY VCBGUk9NIGN1ciBJTlRPIHJlYzsKKyAgICAgICAgRVhJVCBXSEVOIE5PVCBGT1VORDsKKyAgICAg ICAgY250IDo9IGNudCArIDE7CisgICAgRU5EIExPT1A7CisgICAgQ0xPU0UgY3VyOworICAgIFJF VFVSTiBjbnQ7CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBnc3FsOworCitDUkVBVEUgRlVOQ1RJT04g Y2hlY2tfY3Vyc29yX2V4cGxhaW5fYnVmZmVycygpIFJFVFVSTlMgVEFCTEUobm9zY3JvbGxfb2sg Ym9vbGVhbiwgc2Nyb2xsX29rIGJvb2xlYW4pIEFTICQkCitERUNMQVJFCisgICAgcGxhbl9qc29u IGpzb247CisgICAgbm9kZSBqc29uOworICAgIGRpcmVjdF9idWYgaW50OworICAgIG5vc2Nyb2xs X2J1ZiBpbnQ7CisgICAgc2Nyb2xsX2J1ZiBpbnQ7CitCRUdJTgorICAgIC0tIERpcmVjdCBzY2Fu OiBnZXQgbGVhZiBTZXEgU2NhbiBub2RlIGJ1ZmZlcnMgYXMgYmFzZWxpbmUKKyAgICBFWEVDVVRF ICdFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTLCBDT1NUUyBPRkYsIEZPUk1BVCBKU09OKQorICAg ICAgICBTRUxFQ1QgKiBGUk9NIGN1cnNvcl9idWZfdGVzdCcgSU5UTyBwbGFuX2pzb247CisgICAg bm9kZSA6PSBwbGFuX2pzb24tPjAtPidQbGFuJzsKKyAgICBXSElMRSBub2RlLT4nUGxhbnMnIElT IE5PVCBOVUxMIExPT1AKKyAgICAgICAgbm9kZSA6PSBub2RlLT4nUGxhbnMnLT4wOworICAgIEVO RCBMT09QOworICAgIGRpcmVjdF9idWYgOj0KKyAgICAgICAgQ09BTEVTQ0UoKG5vZGUtPj4nTG9j YWwgSGl0IEJsb2NrcycpOjppbnQsIDApICsKKyAgICAgICAgQ09BTEVTQ0UoKG5vZGUtPj4nTG9j YWwgUmVhZCBCbG9ja3MnKTo6aW50LCAwKTsKKworICAgIC0tIE5vbi1zY3JvbGxhYmxlIGN1cnNv ciBwYXRoOiBFeGVjU2h1dGRvd25Ob2RlIHJ1bnMgYWZ0ZXIgZWFjaCBFeGVjdXRvclJ1bgorICAg IEVYRUNVVEUgJ0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMsIENPU1RTIE9GRiwgRk9STUFUIEpT T04pCisgICAgICAgIFNFTEVDVCBjdXJzb3Jfbm9zY3JvbGxfc2NhbigpJyBJTlRPIHBsYW5fanNv bjsKKyAgICBub2RlIDo9IHBsYW5fanNvbi0+MC0+J1BsYW4nOworICAgIG5vc2Nyb2xsX2J1ZiA6 PQorICAgICAgICBDT0FMRVNDRSgobm9kZS0+PidMb2NhbCBIaXQgQmxvY2tzJyk6OmludCwgMCkg KworICAgICAgICBDT0FMRVNDRSgobm9kZS0+PidMb2NhbCBSZWFkIEJsb2NrcycpOjppbnQsIDAp OworCisgICAgLS0gU2Nyb2xsYWJsZSBjdXJzb3IgcGF0aDogRXhlY1NodXRkb3duTm9kZSBpcyBz a2lwcGVkCisgICAgRVhFQ1VURSAnRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUywgQ09TVFMgT0ZG LCBGT1JNQVQgSlNPTikKKyAgICAgICAgU0VMRUNUIGN1cnNvcl9zY3JvbGxfc2NhbigpJyBJTlRP IHBsYW5fanNvbjsKKyAgICBub2RlIDo9IHBsYW5fanNvbi0+MC0+J1BsYW4nOworICAgIHNjcm9s bF9idWYgOj0KKyAgICAgICAgQ09BTEVTQ0UoKG5vZGUtPj4nTG9jYWwgSGl0IEJsb2NrcycpOjpp bnQsIDApICsKKyAgICAgICAgQ09BTEVTQ0UoKG5vZGUtPj4nTG9jYWwgUmVhZCBCbG9ja3MnKTo6 aW50LCAwKTsKKworICAgIC0tIEJvdGggY3Vyc29yIHBhdGhzIHNob3VsZCByZXBvcnQgYnVmZmVy IGNvdW50cyBhYm91dCBhcyBoaWdoIGFzCisgICAgLS0gdGhlIGRpcmVjdCBzY2FuIChzYW1lIGRh dGEgcGx1cyBtaW5vciBjYXRhbG9nIG92ZXJoZWFkKSwgYW5kIG5vdAorICAgIC0tIGRvdWJsZS1j b3VudGVkICg8IDJ4IHRoZSBkaXJlY3Qgc2NhbikKKyAgICBSRVRVUk4gUVVFUlkgU0VMRUNUCisg ICAgICAgIChub3Njcm9sbF9idWYgPj0gZGlyZWN0X2J1ZiAqIDAuNSBBTkQgbm9zY3JvbGxfYnVm IDwgZGlyZWN0X2J1ZiAqIDIpLAorICAgICAgICAoc2Nyb2xsX2J1ZiA+PSBkaXJlY3RfYnVmICog MC41IEFORCBzY3JvbGxfYnVmIDwgZGlyZWN0X2J1ZiAqIDIpOworRU5EOworJCQgTEFOR1VBR0Ug cGxwZ3NxbDsKKworU0VMRUNUICogRlJPTSBjaGVja19jdXJzb3JfZXhwbGFpbl9idWZmZXJzKCk7 CisKK0RST1AgRlVOQ1RJT04gY2hlY2tfY3Vyc29yX2V4cGxhaW5fYnVmZmVyczsKK0RST1AgRlVO Q1RJT04gY3Vyc29yX25vc2Nyb2xsX3NjYW47CitEUk9QIEZVTkNUSU9OIGN1cnNvcl9zY3JvbGxf c2NhbjsKK0RST1AgVEFCTEUgY3Vyc29yX2J1Zl90ZXN0OworCistLSBQYXJhbGxlbCBxdWVyeSBi dWZmZXIgZG91YmxlLWNvdW50aW5nIHRlc3QuCistLQorLS0gQ29tcGFyZXMgc2VyaWFsIFNlcSBT Y2FuIGJ1ZmZlcnMgdnMgcGFyYWxsZWwgU2VxIFNjYW4gYnVmZmVycy4KKy0tIFRoZXkgc2NhbiB0 aGUgc2FtZSB0YWJsZSBzbyB0aGUgYnVmZmVyIGNvdW50IHNob3VsZCBiZSBzaW1pbGFyLgorLS0g RG91YmxlLWNvdW50aW5nIHdvdWxkIG1ha2UgdGhlIHBhcmFsbGVsIGNvdW50IH4yeCBsYXJnZXIu CitDUkVBVEUgRlVOQ1RJT04gY2hlY2tfcGFyYWxsZWxfZXhwbGFpbl9idWZmZXJzKCkgUkVUVVJO UyBUQUJMRShyYXRpbyBudW1lcmljKSBBUyAkJAorREVDTEFSRQorICAgIHBsYW5fanNvbiBqc29u OworICAgIHNlcmlhbF9idWZmZXJzIGludDsKKyAgICBwYXJhbGxlbF9idWZmZXJzIGludDsKKyAg ICBub2RlIGpzb247CitCRUdJTgorICAgIC0tIFNlcmlhbCAtLQorICAgIFNFVCBMT0NBTCBtYXhf cGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMDsKKyAgICBFWEVDVVRFICdFWFBMQUlOIChB TkFMWVpFLCBCVUZGRVJTLCBDT1NUUyBPRkYsIEZPUk1BVCBKU09OKQorICAgICAgICBTRUxFQ1Qg Y291bnQoKikgRlJPTSB0ZW5rMScgSU5UTyBwbGFuX2pzb247CisgICAgbm9kZSA6PSBwbGFuX2pz b24tPjAtPidQbGFuJzsKKyAgICBzZXJpYWxfYnVmZmVycyA6PQorICAgICAgICBDT0FMRVNDRSgo bm9kZS0+PidTaGFyZWQgSGl0IEJsb2NrcycpOjppbnQsIDApICsKKyAgICAgICAgQ09BTEVTQ0Uo KG5vZGUtPj4nU2hhcmVkIFJlYWQgQmxvY2tzJyk6OmludCwgMCk7CisKKyAgICAtLSBQYXJhbGxl bCAtLQorICAgIFNFVCBMT0NBTCBwYXJhbGxlbF9zZXR1cF9jb3N0ID0gMDsKKyAgICBTRVQgTE9D QUwgcGFyYWxsZWxfdHVwbGVfY29zdCA9IDA7CisgICAgU0VUIExPQ0FMIG1pbl9wYXJhbGxlbF90 YWJsZV9zY2FuX3NpemUgPSAwOworICAgIFNFVCBMT0NBTCBtYXhfcGFyYWxsZWxfd29ya2Vyc19w ZXJfZ2F0aGVyID0gMjsKKyAgICBTRVQgTE9DQUwgcGFyYWxsZWxfbGVhZGVyX3BhcnRpY2lwYXRp b24gPSBvZmY7CisgICAgRVhFQ1VURSAnRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUywgQ09TVFMg T0ZGLCBGT1JNQVQgSlNPTikKKyAgICAgICAgU0VMRUNUIGNvdW50KCopIEZST00gdGVuazEnIElO VE8gcGxhbl9qc29uOworICAgIG5vZGUgOj0gcGxhbl9qc29uLT4wLT4nUGxhbic7CisgICAgcGFy YWxsZWxfYnVmZmVycyA6PQorICAgICAgICBDT0FMRVNDRSgobm9kZS0+PidTaGFyZWQgSGl0IEJs b2NrcycpOjppbnQsIDApICsKKyAgICAgICAgQ09BTEVTQ0UoKG5vZGUtPj4nU2hhcmVkIFJlYWQg QmxvY2tzJyk6OmludCwgMCk7CisKKyAgICBSRVRVUk4gUVVFUlkgU0VMRUNUIHJvdW5kKHBhcmFs bGVsX2J1ZmZlcnM6Om51bWVyaWMgLyBHUkVBVEVTVChzZXJpYWxfYnVmZmVycywgMSkpOworRU5E OworJCQgTEFOR1VBR0UgcGxwZ3NxbDsKKworU0VMRUNUICogRlJPTSBjaGVja19wYXJhbGxlbF9l eHBsYWluX2J1ZmZlcnMoKTsKKworRFJPUCBGVU5DVElPTiBjaGVja19wYXJhbGxlbF9leHBsYWlu X2J1ZmZlcnM7Ci0tIAoyLjQ3LjEKCg== --000000000000c2e7d4064d33fd67 Content-Type: application/octet-stream; name="v9-0005-Optimize-measuring-WAL-buffer-usage-through-stack.patch" Content-Disposition: attachment; filename="v9-0005-Optimize-measuring-WAL-buffer-usage-through-stack.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmucb65u4 RnJvbSAzNzY1ODlmOGM1MmYzN2E5ZWVjOGQxYjExYjE2YmU2NTMxMDdhZTE4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpEYXRlOiBU dWUsIDkgU2VwIDIwMjUgMDI6MTY6NTkgLTA3MDAKU3ViamVjdDogW1BBVENIIHY5IDUvOV0gT3B0 aW1pemUgbWVhc3VyaW5nIFdBTC9idWZmZXIgdXNhZ2UgdGhyb3VnaAogc3RhY2stYmFzZWQgaW5z dHJ1bWVudGF0aW9uCgpQcmV2aW91c2x5LCBpbiBvcmRlciB0byBkZXRlcm1pbmUgdGhlIGJ1ZmZl ci9XQUwgdXNhZ2Ugb2YgYSBnaXZlbiBjb2RlCnNlY3Rpb24sIHdlIHV0aWxpemVkIGNvbnRpbnVv dXNseSBpbmNyZW1lbnRpbmcgZ2xvYmFsIGNvdW50ZXJzIHRoYXQgZ2V0CnVwZGF0ZWQgd2hlbiB0 aGUgYWN0dWFsIGFjdGl2aXR5IChlLmcuIHNoYXJlZCBibG9jayByZWFkKSBvY2N1cnJlZCwgYW5k CnRoZW4gY2FsY3VsYXRlZCBhIGRpZmYgd2hlbiB0aGUgY29kZSBzZWN0aW9uIGVuZGVkLiBUaGlz IHJlc3VsdGVkIGluIGEKYm90dGxlbmVjayBmb3IgZXhlY3V0b3Igbm9kZSBpbnN0cnVtZW50YXRp b24gc3BlY2lmaWNhbGx5LCB3aXRoIHRoZQpmdW5jdGlvbiBCdWZmZXJVc2FnZUFjY3VtRGlmZiBz aG93aW5nIHVwIGluIHByb2ZpbGVzIGFuZCBpbiBzb21lIGNhc2VzCmFkZGluZyB1cCB0byAxMCUg b3ZlcmhlYWQgdG8gYW4gRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUykgcnVuLgoKSW5zdGVhZCwg aW50cm9kdWNlIGEgc3RhY2stYmFzZWQgbWVjaGFuaXNtLCB3aGVyZSB0aGUgYWN0dWFsIGFjdGl2 aXR5CndyaXRlcyBpbnRvIHRoZSBjdXJyZW50IHN0YWNrIGVudHJ5LiBJbiB0aGUgY2FzZSBvZiBl eGVjdXRvciBub2RlcywgdGhpcwptZWFucyB0aGF0IGVhY2ggbm9kZSBnZXRzIGl0cyBvd24gc3Rh Y2sgZW50cnkgdGhhdCBpcyBwdXNoZWQgYXQKSW5zdHJTdGFydE5vZGUsIGFuZCBwb3BwZWQgYXQg SW5zdHJFbmROb2RlLiBTdGFjayBlbnRyaWVzIGFyZSB6ZXJvCmluaXRpYWxpemVkIChhdm9pZGlu ZyB0aGUgZGlmZiBtZWNoYW5pc20pIGFuZCBnZXQgYWRkZWQgdG8gdGhlaXIgcGFyZW50CmVudHJ5 IHdoZW4gdGhleSBhcmUgZmluYWxpemVkLCBpLmUuIG5vIG1vcmUgbW9kaWZpY2F0aW9ucyBjYW4g b2NjdXIuCgpUbyBjb3JyZWN0bHkgaGFuZGxlIGFib3J0IHNpdHVhdGlvbnMsIGFueSB1c2Ugb2Yg aW5zdHJ1bWVudGF0aW9uIHN0YWNrcwptdXN0IGludm9sdmUgZWl0aGVyIGEgdG9wLWxldmVsIFF1 ZXJ5SW5zdHJ1bWVudGF0aW9uIHN0cnVjdCwgYW5kIGl0cwphc3NvY2lhdGVkIEluc3RyUXVlcnlT dGFydC9JbnN0clF1ZXJ5U3RvcCBoZWxwZXJzICh3aGljaCB1c2UgcmVzb3VyY2UKb3duZXJzIHRv IGhhbmRsZSBhYm9ydHMpLCBvciB0aGUgSW5zdHJ1bWVudGF0aW9uIHN0cnVjdCBpdHNlbGYgd2l0 aApkZWRpY2F0ZWQgUEdfVFJZL1BHX0ZJTkFMTFkgY2FsbHMgdGhhdCBlbnN1cmUgdGhlIHN0YWNr IGlzIGluIGEKY29uc2lzdGVudCBzdGF0ZSBhZnRlciBhbiBhYm9ydC4KClRoaXMgYWxzbyBkcm9w cyB0aGUgZ2xvYmFsIHBnQnVmZmVyVXNhZ2UsIGFueSBjYWxsZXJzIGludGVyZXN0ZWQgaW4KbWVh c3VyaW5nIGJ1ZmZlciBhY3Rpdml0eSBzaG91bGQgaW5zdGVhZCB1dGlsaXplIEluc3RyU3RhcnQv SW5zdHJTdG9wLgoKVGhlIHJlbGF0ZWQgZ2xvYmFsIHBnV2FsVXNhZ2UgaXMga2VwdCBmb3Igbm93 IGR1ZSB0byBpdHMgdXNlIGluIHBnc3RhdAp0byB0cmFjayBhZ2dyZWdhdGUgV0FMIGFjdGl2aXR5 IGFuZCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSBmb3IKbWVhc3VyaW5nIEZQSXMuCgpBdXRo b3I6IEx1a2FzIEZpdHRsIDxsdWthc0BmaXR0bC5jb20+ClJldmlld2VkLWJ5OiBac29sdCBQYXJy YWdpIDx6c29sdC5wYXJyYWdpQHBlcmNvbmEuY29tPgpEaXNjdXNzaW9uOiBodHRwczovL3d3dy5w b3N0Z3Jlc3FsLm9yZy9tZXNzYWdlLWlkL2ZsYXQvQ0FQNTNQa3hybXBFQ3pWRnBlZUVFSERHZTZ1 NjI1cyUyQllrbVZ2NS1ndzNMX05EU2ZiaUElNDBtYWlsLmdtYWlsLmNvbSNjYjU4M2EwOGU4ZTA5 NmFhMWYwOTNiYjE3ODkwNjE3MwotLS0KIGNvbnRyaWIvYXV0b19leHBsYWluL2F1dG9fZXhwbGFp bi5jICAgICAgICAgICB8ICAxNiArLQogLi4uL3BnX3N0YXRfc3RhdGVtZW50cy9wZ19zdGF0X3N0 YXRlbWVudHMuYyAgIHwgIDg3ICstLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW4uYyAg ICAgICAgICAgICAgICB8ICAxMCArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5pbnNlcnQu YyAgICAgICAgICAgIHwgIDEwICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5 LmMgICAgICAgICAgfCAgMTUgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5j ICAgICAgICAgICB8ICAxMCArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvYW5hbHl6ZS5jICAgICAg ICAgICAgICAgIHwgIDMxICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMgICAgICAg ICAgICAgICAgfCAgMjYgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW5fZHIuYyAgICAg ICAgICAgICB8ICAzNCArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jICAgICAgICAg ICAgICAgIHwgIDI3ICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jICAg ICAgICAgfCAgMTAgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMgICAgICAgICAg ICAgICB8ICA3MiArKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jICAgICAg ICAgICB8ICAyMiArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1Byb2Nub2RlLmMgICAgICAg ICAgIHwgIDg0ICsrKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2luc3RydW1lbnQuYyAgICAgICAg ICAgICB8IDQyMiArKysrKysrKysrKysrLS0tLS0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVy L2J1Zm1nci5jICAgICAgICAgICB8ICAgNiArLQogc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkv cGdzdGF0X2lvLmMgICAgICAgIHwgICA2ICstCiBzcmMvaW5jbHVkZS9leGVjdXRvci9leGVjZGVz Yy5oICAgICAgICAgICAgICAgfCAgIDQgKy0KIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9y LmggICAgICAgICAgICAgICB8ICAgMiArCiBzcmMvaW5jbHVkZS9leGVjdXRvci9pbnN0cnVtZW50 LmggICAgICAgICAgICAgfCAxNzggKysrKysrKy0KIHNyYy9pbmNsdWRlL3V0aWxzL3Jlc293bmVy LmggICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMu bGlzdCAgICAgICAgICAgICAgfCAgIDIgKwogMjIgZmlsZXMgY2hhbmdlZCwgNzY2IGluc2VydGlv bnMoKyksIDMwOSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9jb250cmliL2F1dG9fZXhwbGFp bi9hdXRvX2V4cGxhaW4uYyBiL2NvbnRyaWIvYXV0b19leHBsYWluL2F1dG9fZXhwbGFpbi5jCmlu ZGV4IDM5YmYyNTQzYjcwLi40YmU4MTQ4OWZmNCAxMDA2NDQKLS0tIGEvY29udHJpYi9hdXRvX2V4 cGxhaW4vYXV0b19leHBsYWluLmMKKysrIGIvY29udHJpYi9hdXRvX2V4cGxhaW4vYXV0b19leHBs YWluLmMKQEAgLTMwNSwxOSArMzA1LDkgQEAgZXhwbGFpbl9FeGVjdXRvclN0YXJ0KFF1ZXJ5RGVz YyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQogCiAJaWYgKGF1dG9fZXhwbGFpbl9lbmFibGVkKCkp CiAJewotCQkvKgotCQkgKiBTZXQgdXAgdG8gdHJhY2sgdG90YWwgZWxhcHNlZCB0aW1lIGluIEV4 ZWN1dG9yUnVuLiAgTWFrZSBzdXJlIHRoZQotCQkgKiBzcGFjZSBpcyBhbGxvY2F0ZWQgaW4gdGhl IHBlci1xdWVyeSBjb250ZXh0IHNvIGl0IHdpbGwgZ28gYXdheSBhdAotCQkgKiBFeGVjdXRvckVu ZC4KLQkJICovCisJCS8qIFNldCB1cCB0byB0cmFjayB0b3RhbCBlbGFwc2VkIHRpbWUgaW4gRXhl Y3V0b3JSdW4uICovCiAJCWlmIChxdWVyeURlc2MtPnRvdGFsdGltZSA9PSBOVUxMKQotCQl7Ci0J CQlNZW1vcnlDb250ZXh0IG9sZGN4dDsKLQotCQkJb2xkY3h0ID0gTWVtb3J5Q29udGV4dFN3aXRj aFRvKHF1ZXJ5RGVzYy0+ZXN0YXRlLT5lc19xdWVyeV9jeHQpOwotCQkJcXVlcnlEZXNjLT50b3Rh bHRpbWUgPSBJbnN0ckFsbG9jKElOU1RSVU1FTlRfQUxMKTsKLQkJCU1lbW9yeUNvbnRleHRTd2l0 Y2hUbyhvbGRjeHQpOwotCQl9CisJCQlxdWVyeURlc2MtPnRvdGFsdGltZSA9IEluc3RyUXVlcnlB bGxvYyhJTlNUUlVNRU5UX0FMTCk7CiAJfQogfQogCkBAIC0zODIsNyArMzcyLDcgQEAgZXhwbGFp bl9FeGVjdXRvckVuZChRdWVyeURlc2MgKnF1ZXJ5RGVzYykKIAkJb2xkY3h0ID0gTWVtb3J5Q29u dGV4dFN3aXRjaFRvKHF1ZXJ5RGVzYy0+ZXN0YXRlLT5lc19xdWVyeV9jeHQpOwogCiAJCS8qIExv ZyBwbGFuIGlmIGR1cmF0aW9uIGlzIGV4Y2VlZGVkLiAqLwotCQltc2VjID0gSU5TVFJfVElNRV9H RVRfTUlMTElTRUMocXVlcnlEZXNjLT50b3RhbHRpbWUtPnRvdGFsKTsKKwkJbXNlYyA9IElOU1RS X1RJTUVfR0VUX01JTExJU0VDKHF1ZXJ5RGVzYy0+dG90YWx0aW1lLT5pbnN0ci50b3RhbCk7CiAJ CWlmIChtc2VjID49IGF1dG9fZXhwbGFpbl9sb2dfbWluX2R1cmF0aW9uKQogCQl7CiAJCQlFeHBs YWluU3RhdGUgKmVzID0gTmV3RXhwbGFpblN0YXRlKCk7CmRpZmYgLS1naXQgYS9jb250cmliL3Bn X3N0YXRfc3RhdGVtZW50cy9wZ19zdGF0X3N0YXRlbWVudHMuYyBiL2NvbnRyaWIvcGdfc3RhdF9z dGF0ZW1lbnRzL3BnX3N0YXRfc3RhdGVtZW50cy5jCmluZGV4IDNlNzkxMDg4NDZlLi45ODU2ZGVj M2E1ZiAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvcGdfc3RhdF9zdGF0 ZW1lbnRzLmMKKysrIGIvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvcGdfc3RhdF9zdGF0ZW1l bnRzLmMKQEAgLTkxMCwyMiArOTEwLDExIEBAIHBnc3NfcGxhbm5lcihRdWVyeSAqcGFyc2UsCiAJ CSYmIHBnc3NfdHJhY2tfcGxhbm5pbmcgJiYgcXVlcnlfc3RyaW5nCiAJCSYmIHBhcnNlLT5xdWVy eUlkICE9IElOVDY0Q09OU1QoMCkpCiAJewotCQlpbnN0cl90aW1lCXN0YXJ0OwotCQlpbnN0cl90 aW1lCWR1cmF0aW9uOwotCQlCdWZmZXJVc2FnZSBidWZ1c2FnZV9zdGFydCwKLQkJCQkJYnVmdXNh Z2U7Ci0JCVdhbFVzYWdlCXdhbHVzYWdlX3N0YXJ0LAotCQkJCQl3YWx1c2FnZTsKKwkJSW5zdHJ1 bWVudGF0aW9uIGluc3RyID0gezB9OwogCi0JCS8qIFdlIG5lZWQgdG8gdHJhY2sgYnVmZmVyIHVz YWdlIGFzIHRoZSBwbGFubmVyIGNhbiBhY2Nlc3MgdGhlbS4gKi8KLQkJYnVmdXNhZ2Vfc3RhcnQg PSBwZ0J1ZmZlclVzYWdlOwotCi0JCS8qCi0JCSAqIFNpbWlsYXJseSB0aGUgcGxhbm5lciBjb3Vs ZCB3cml0ZSBzb21lIFdBTCByZWNvcmRzIGluIHNvbWUgY2FzZXMKLQkJICogKGUuZy4gc2V0dGlu ZyBhIGhpbnQgYml0IHdpdGggdGhvc2UgYmVpbmcgV0FMLWxvZ2dlZCkKLQkJICovCi0JCXdhbHVz YWdlX3N0YXJ0ID0gcGdXYWxVc2FnZTsKLQkJSU5TVFJfVElNRV9TRVRfQ1VSUkVOVChzdGFydCk7 CisJCS8qIFRyYWNrIHRpbWUgYW5kIGJ1ZmZlci9XQUwgdXNhZ2UgYXMgdGhlIHBsYW5uZXIgY2Fu IGFjY2VzcyB0aGVtLiAqLworCQlJbnN0ckluaXRPcHRpb25zKCZpbnN0ciwgSU5TVFJVTUVOVF9B TEwpOworCQlJbnN0clN0YXJ0KCZpbnN0cik7CiAKIAkJbmVzdGluZ19sZXZlbCsrOwogCQlQR19U UlkoKTsKQEAgLTkzOSwzMCArOTI4LDIwIEBAIHBnc3NfcGxhbm5lcihRdWVyeSAqcGFyc2UsCiAJ CX0KIAkJUEdfRklOQUxMWSgpOwogCQl7CisJCQlJbnN0clN0b3BGaW5hbGl6ZSgmaW5zdHIpOwog CQkJbmVzdGluZ19sZXZlbC0tOwogCQl9CiAJCVBHX0VORF9UUlkoKTsKIAotCQlJTlNUUl9USU1F X1NFVF9DVVJSRU5UKGR1cmF0aW9uKTsKLQkJSU5TVFJfVElNRV9TVUJUUkFDVChkdXJhdGlvbiwg c3RhcnQpOwotCi0JCS8qIGNhbGMgZGlmZmVyZW5jZXMgb2YgYnVmZmVyIGNvdW50ZXJzLiAqLwot CQltZW1zZXQoJmJ1ZnVzYWdlLCAwLCBzaXplb2YoQnVmZmVyVXNhZ2UpKTsKLQkJQnVmZmVyVXNh Z2VBY2N1bURpZmYoJmJ1ZnVzYWdlLCAmcGdCdWZmZXJVc2FnZSwgJmJ1ZnVzYWdlX3N0YXJ0KTsK LQotCQkvKiBjYWxjIGRpZmZlcmVuY2VzIG9mIFdBTCBjb3VudGVycy4gKi8KLQkJbWVtc2V0KCZ3 YWx1c2FnZSwgMCwgc2l6ZW9mKFdhbFVzYWdlKSk7Ci0JCVdhbFVzYWdlQWNjdW1EaWZmKCZ3YWx1 c2FnZSwgJnBnV2FsVXNhZ2UsICZ3YWx1c2FnZV9zdGFydCk7Ci0KIAkJcGdzc19zdG9yZShxdWVy eV9zdHJpbmcsCiAJCQkJICAgcGFyc2UtPnF1ZXJ5SWQsCiAJCQkJICAgcGFyc2UtPnN0bXRfbG9j YXRpb24sCiAJCQkJICAgcGFyc2UtPnN0bXRfbGVuLAogCQkJCSAgIFBHU1NfUExBTiwKLQkJCQkg ICBJTlNUUl9USU1FX0dFVF9NSUxMSVNFQyhkdXJhdGlvbiksCisJCQkJICAgSU5TVFJfVElNRV9H RVRfTUlMTElTRUMoaW5zdHIudG90YWwpLAogCQkJCSAgIDAsCi0JCQkJICAgJmJ1ZnVzYWdlLAot CQkJCSAgICZ3YWx1c2FnZSwKKwkJCQkgICAmaW5zdHIuYnVmdXNhZ2UsCisJCQkJICAgJmluc3Ry LndhbHVzYWdlLAogCQkJCSAgIE5VTEwsCiAJCQkJICAgTlVMTCwKIAkJCQkgICAwLApAQCAtMTAx NCwxOSArOTkzLDkgQEAgcGdzc19FeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBp bnQgZWZsYWdzKQogCSAqLwogCWlmIChwZ3NzX2VuYWJsZWQobmVzdGluZ19sZXZlbCkgJiYgcXVl cnlEZXNjLT5wbGFubmVkc3RtdC0+cXVlcnlJZCAhPSBJTlQ2NENPTlNUKDApKQogCXsKLQkJLyoK LQkJICogU2V0IHVwIHRvIHRyYWNrIHRvdGFsIGVsYXBzZWQgdGltZSBpbiBFeGVjdXRvclJ1bi4g IE1ha2Ugc3VyZSB0aGUKLQkJICogc3BhY2UgaXMgYWxsb2NhdGVkIGluIHRoZSBwZXItcXVlcnkg Y29udGV4dCBzbyBpdCB3aWxsIGdvIGF3YXkgYXQKLQkJICogRXhlY3V0b3JFbmQuCi0JCSAqLwor CQkvKiBTZXQgdXAgdG8gdHJhY2sgdG90YWwgZWxhcHNlZCB0aW1lIGluIEV4ZWN1dG9yUnVuLiAq LwogCQlpZiAocXVlcnlEZXNjLT50b3RhbHRpbWUgPT0gTlVMTCkKLQkJewotCQkJTWVtb3J5Q29u dGV4dCBvbGRjeHQ7Ci0KLQkJCW9sZGN4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhxdWVyeURl c2MtPmVzdGF0ZS0+ZXNfcXVlcnlfY3h0KTsKLQkJCXF1ZXJ5RGVzYy0+dG90YWx0aW1lID0gSW5z dHJBbGxvYyhJTlNUUlVNRU5UX0FMTCk7Ci0JCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3h0 KTsKLQkJfQorCQkJcXVlcnlEZXNjLT50b3RhbHRpbWUgPSBJbnN0clF1ZXJ5QWxsb2MoSU5TVFJV TUVOVF9BTEwpOwogCX0KIH0KIApAQCAtMTA4OCwxMCArMTA1NywxMCBAQCBwZ3NzX0V4ZWN1dG9y RW5kKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjKQogCQkJCSAgIHF1ZXJ5RGVzYy0+cGxhbm5lZHN0bXQt PnN0bXRfbG9jYXRpb24sCiAJCQkJICAgcXVlcnlEZXNjLT5wbGFubmVkc3RtdC0+c3RtdF9sZW4s CiAJCQkJICAgUEdTU19FWEVDLAotCQkJCSAgIElOU1RSX1RJTUVfR0VUX01JTExJU0VDKHF1ZXJ5 RGVzYy0+dG90YWx0aW1lLT50b3RhbCksCisJCQkJICAgSU5TVFJfVElNRV9HRVRfTUlMTElTRUMo cXVlcnlEZXNjLT50b3RhbHRpbWUtPmluc3RyLnRvdGFsKSwKIAkJCQkgICBxdWVyeURlc2MtPmVz dGF0ZS0+ZXNfdG90YWxfcHJvY2Vzc2VkLAotCQkJCSAgICZxdWVyeURlc2MtPnRvdGFsdGltZS0+ YnVmdXNhZ2UsCi0JCQkJICAgJnF1ZXJ5RGVzYy0+dG90YWx0aW1lLT53YWx1c2FnZSwKKwkJCQkg ICAmcXVlcnlEZXNjLT50b3RhbHRpbWUtPmluc3RyLmJ1ZnVzYWdlLAorCQkJCSAgICZxdWVyeURl c2MtPnRvdGFsdGltZS0+aW5zdHIud2FsdXNhZ2UsCiAJCQkJICAgcXVlcnlEZXNjLT5lc3RhdGUt PmVzX2ppdCA/ICZxdWVyeURlc2MtPmVzdGF0ZS0+ZXNfaml0LT5pbnN0ciA6IE5VTEwsCiAJCQkJ ICAgTlVMTCwKIAkJCQkgICBxdWVyeURlc2MtPmVzdGF0ZS0+ZXNfcGFyYWxsZWxfd29ya2Vyc190 b19sYXVuY2gsCkBAIC0xMTU1LDE3ICsxMTI0LDExIEBAIHBnc3NfUHJvY2Vzc1V0aWxpdHkoUGxh bm5lZFN0bXQgKnBzdG10LCBjb25zdCBjaGFyICpxdWVyeVN0cmluZywKIAkJIUlzQShwYXJzZXRy ZWUsIEV4ZWN1dGVTdG10KSAmJgogCQkhSXNBKHBhcnNldHJlZSwgUHJlcGFyZVN0bXQpKQogCXsK LQkJaW5zdHJfdGltZQlzdGFydDsKLQkJaW5zdHJfdGltZQlkdXJhdGlvbjsKIAkJdWludDY0CQly b3dzOwotCQlCdWZmZXJVc2FnZSBidWZ1c2FnZV9zdGFydCwKLQkJCQkJYnVmdXNhZ2U7Ci0JCVdh bFVzYWdlCXdhbHVzYWdlX3N0YXJ0LAotCQkJCQl3YWx1c2FnZTsKKwkJSW5zdHJ1bWVudGF0aW9u IGluc3RyID0gezB9OwogCi0JCWJ1ZnVzYWdlX3N0YXJ0ID0gcGdCdWZmZXJVc2FnZTsKLQkJd2Fs dXNhZ2Vfc3RhcnQgPSBwZ1dhbFVzYWdlOwotCQlJTlNUUl9USU1FX1NFVF9DVVJSRU5UKHN0YXJ0 KTsKKwkJSW5zdHJJbml0T3B0aW9ucygmaW5zdHIsIElOU1RSVU1FTlRfQUxMKTsKKwkJSW5zdHJT dGFydCgmaW5zdHIpOwogCiAJCW5lc3RpbmdfbGV2ZWwrKzsKIAkJUEdfVFJZKCk7CkBAIC0xMTgx LDYgKzExNDQsNyBAQCBwZ3NzX1Byb2Nlc3NVdGlsaXR5KFBsYW5uZWRTdG10ICpwc3RtdCwgY29u c3QgY2hhciAqcXVlcnlTdHJpbmcsCiAJCX0KIAkJUEdfRklOQUxMWSgpOwogCQl7CisJCQlJbnN0 clN0b3BGaW5hbGl6ZSgmaW5zdHIpOwogCQkJbmVzdGluZ19sZXZlbC0tOwogCQl9CiAJCVBHX0VO RF9UUlkoKTsKQEAgLTExOTUsOSArMTE1OSw2IEBAIHBnc3NfUHJvY2Vzc1V0aWxpdHkoUGxhbm5l ZFN0bXQgKnBzdG10LCBjb25zdCBjaGFyICpxdWVyeVN0cmluZywKIAkJICogZm9ybWVyIHZhbHVl LCB3aGljaCdkIG90aGVyd2lzZSBiZSBhIGdvb2QgaWRlYS4KIAkJICovCiAKLQkJSU5TVFJfVElN RV9TRVRfQ1VSUkVOVChkdXJhdGlvbik7Ci0JCUlOU1RSX1RJTUVfU1VCVFJBQ1QoZHVyYXRpb24s IHN0YXJ0KTsKLQogCQkvKgogCQkgKiBUcmFjayB0aGUgdG90YWwgbnVtYmVyIG9mIHJvd3MgcmV0 cmlldmVkIG9yIGFmZmVjdGVkIGJ5IHRoZSB1dGlsaXR5CiAJCSAqIHN0YXRlbWVudHMgb2YgQ09Q WSwgRkVUQ0gsIENSRUFURSBUQUJMRSBBUywgQ1JFQVRFIE1BVEVSSUFMSVpFRApAQCAtMTIwOSwy MyArMTE3MCwxNSBAQCBwZ3NzX1Byb2Nlc3NVdGlsaXR5KFBsYW5uZWRTdG10ICpwc3RtdCwgY29u c3QgY2hhciAqcXVlcnlTdHJpbmcsCiAJCQkJCSAgIHFjLT5jb21tYW5kVGFnID09IENNRFRBR19S RUZSRVNIX01BVEVSSUFMSVpFRF9WSUVXKSkgPwogCQkJcWMtPm5wcm9jZXNzZWQgOiAwOwogCi0J CS8qIGNhbGMgZGlmZmVyZW5jZXMgb2YgYnVmZmVyIGNvdW50ZXJzLiAqLwotCQltZW1zZXQoJmJ1 ZnVzYWdlLCAwLCBzaXplb2YoQnVmZmVyVXNhZ2UpKTsKLQkJQnVmZmVyVXNhZ2VBY2N1bURpZmYo JmJ1ZnVzYWdlLCAmcGdCdWZmZXJVc2FnZSwgJmJ1ZnVzYWdlX3N0YXJ0KTsKLQotCQkvKiBjYWxj IGRpZmZlcmVuY2VzIG9mIFdBTCBjb3VudGVycy4gKi8KLQkJbWVtc2V0KCZ3YWx1c2FnZSwgMCwg c2l6ZW9mKFdhbFVzYWdlKSk7Ci0JCVdhbFVzYWdlQWNjdW1EaWZmKCZ3YWx1c2FnZSwgJnBnV2Fs VXNhZ2UsICZ3YWx1c2FnZV9zdGFydCk7Ci0KIAkJcGdzc19zdG9yZShxdWVyeVN0cmluZywKIAkJ CQkgICBzYXZlZF9xdWVyeUlkLAogCQkJCSAgIHNhdmVkX3N0bXRfbG9jYXRpb24sCiAJCQkJICAg c2F2ZWRfc3RtdF9sZW4sCiAJCQkJICAgUEdTU19FWEVDLAotCQkJCSAgIElOU1RSX1RJTUVfR0VU X01JTExJU0VDKGR1cmF0aW9uKSwKKwkJCQkgICBJTlNUUl9USU1FX0dFVF9NSUxMSVNFQyhpbnN0 ci50b3RhbCksCiAJCQkJICAgcm93cywKLQkJCQkgICAmYnVmdXNhZ2UsCi0JCQkJICAgJndhbHVz YWdlLAorCQkJCSAgICZpbnN0ci5idWZ1c2FnZSwKKwkJCQkgICAmaW5zdHIud2FsdXNhZ2UsCiAJ CQkJICAgTlVMTCwKIAkJCQkgICBOVUxMLAogCQkJCSAgIDAsCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9hY2Nlc3MvYnJpbi9icmluLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMK aW5kZXggMmEwZjhjOGUzYjguLjFjZWIyMzA2OTU0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9h Y2Nlc3MvYnJpbi9icmluLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jCkBA IC0yNDM0LDggKzI0MzQsOCBAQCBfYnJpbl9iZWdpbl9wYXJhbGxlbChCcmluQnVpbGRTdGF0ZSAq YnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJICogYW5kIFBBUkFM TEVMX0tFWV9CVUZGRVJfVVNBR0UuCiAJICoKIAkgKiBJZiB0aGVyZSBhcmUgbm8gZXh0ZW5zaW9u cyBsb2FkZWQgdGhhdCBjYXJlLCB3ZSBjb3VsZCBza2lwIHRoaXMuICBXZQotCSAqIGhhdmUgbm8g d2F5IG9mIGtub3dpbmcgd2hldGhlciBhbnlvbmUncyBsb29raW5nIGF0IHBnV2FsVXNhZ2Ugb3IK LQkgKiBwZ0J1ZmZlclVzYWdlLCBzbyBkbyBpdCB1bmNvbmRpdGlvbmFsbHkuCisJICogaGF2ZSBu byB3YXkgb2Yga25vd2luZyB3aGV0aGVyIGFueW9uZSdzIGxvb2tpbmcgYXQgaW5zdHJ1bWVudGF0 aW9uLCBzbworCSAqIGRvIGl0IHVuY29uZGl0aW9uYWxseS4KIAkgKi8KIAlzaG1fdG9jX2VzdGlt YXRlX2NodW5rKCZwY3h0LT5lc3RpbWF0b3IsCiAJCQkJCQkgICBtdWxfc2l6ZShzaXplb2YoV2Fs VXNhZ2UpLCBwY3h0LT5ud29ya2VycykpOwpAQCAtMjg4Niw2ICsyODg2LDcgQEAgX2JyaW5fcGFy YWxsZWxfYnVpbGRfbWFpbihkc21fc2VnbWVudCAqc2VnLCBzaG1fdG9jICp0b2MpCiAJUmVsYXRp b24JaW5kZXhSZWw7CiAJTE9DS01PREUJaGVhcExvY2ttb2RlOwogCUxPQ0tNT0RFCWluZGV4TG9j a21vZGU7CisJUXVlcnlJbnN0cnVtZW50YXRpb24gKmluc3RyOwogCVdhbFVzYWdlICAgKndhbHVz YWdlOwogCUJ1ZmZlclVzYWdlICpidWZmZXJ1c2FnZTsKIAlpbnQJCQlzb3J0bWVtOwpAQCAtMjkz NSw3ICsyOTM2LDcgQEAgX2JyaW5fcGFyYWxsZWxfYnVpbGRfbWFpbihkc21fc2VnbWVudCAqc2Vn LCBzaG1fdG9jICp0b2MpCiAJdHVwbGVzb3J0X2F0dGFjaF9zaGFyZWQoc2hhcmVkc29ydCwgc2Vn KTsKIAogCS8qIFByZXBhcmUgdG8gdHJhY2sgYnVmZmVyIHVzYWdlIGR1cmluZyBwYXJhbGxlbCBl eGVjdXRpb24gKi8KLQlJbnN0clN0YXJ0UGFyYWxsZWxRdWVyeSgpOworCWluc3RyID0gSW5zdHJT dGFydFBhcmFsbGVsUXVlcnkoKTsKIAogCS8qCiAJICogTWlnaHQgYXMgd2VsbCB1c2UgcmVsaWFi bGUgZmlndXJlIHdoZW4gZG9saW5nIG91dCBtYWludGVuYW5jZV93b3JrX21lbQpAQCAtMjk1MCw3 ICsyOTUxLDggQEAgX2JyaW5fcGFyYWxsZWxfYnVpbGRfbWFpbihkc21fc2VnbWVudCAqc2VnLCBz aG1fdG9jICp0b2MpCiAJLyogUmVwb3J0IFdBTC9idWZmZXIgdXNhZ2UgZHVyaW5nIHBhcmFsbGVs IGV4ZWN1dGlvbiAqLwogCWJ1ZmZlcnVzYWdlID0gc2htX3RvY19sb29rdXAodG9jLCBQQVJBTExF TF9LRVlfQlVGRkVSX1VTQUdFLCBmYWxzZSk7CiAJd2FsdXNhZ2UgPSBzaG1fdG9jX2xvb2t1cCh0 b2MsIFBBUkFMTEVMX0tFWV9XQUxfVVNBR0UsIGZhbHNlKTsKLQlJbnN0ckVuZFBhcmFsbGVsUXVl cnkoJmJ1ZmZlcnVzYWdlW1BhcmFsbGVsV29ya2VyTnVtYmVyXSwKKwlJbnN0ckVuZFBhcmFsbGVs UXVlcnkoaW5zdHIsCisJCQkJCQkgICZidWZmZXJ1c2FnZVtQYXJhbGxlbFdvcmtlck51bWJlcl0s CiAJCQkJCQkgICZ3YWx1c2FnZVtQYXJhbGxlbFdvcmtlck51bWJlcl0pOwogCiAJaW5kZXhfY2xv c2UoaW5kZXhSZWwsIGluZGV4TG9ja21vZGUpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2dpbi9naW5pbnNlcnQuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luaW5zZXJ0LmMK aW5kZXggZTU0NzgyZDlkZDguLjA0Y2Q1MzkxNmNhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9h Y2Nlc3MvZ2luL2dpbmluc2VydC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luaW5z ZXJ0LmMKQEAgLTk5MSw4ICs5OTEsOCBAQCBfZ2luX2JlZ2luX3BhcmFsbGVsKEdpbkJ1aWxkU3Rh dGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAogCSAqIGFuZCBQ QVJBTExFTF9LRVlfQlVGRkVSX1VTQUdFLgogCSAqCiAJICogSWYgdGhlcmUgYXJlIG5vIGV4dGVu c2lvbnMgbG9hZGVkIHRoYXQgY2FyZSwgd2UgY291bGQgc2tpcCB0aGlzLiAgV2UKLQkgKiBoYXZl IG5vIHdheSBvZiBrbm93aW5nIHdoZXRoZXIgYW55b25lJ3MgbG9va2luZyBhdCBwZ1dhbFVzYWdl IG9yCi0JICogcGdCdWZmZXJVc2FnZSwgc28gZG8gaXQgdW5jb25kaXRpb25hbGx5LgorCSAqIGhh dmUgbm8gd2F5IG9mIGtub3dpbmcgd2hldGhlciBhbnlvbmUncyBsb29raW5nIGF0IGluc3RydW1l bnRhdGlvbiwgc28KKwkgKiBkbyBpdCB1bmNvbmRpdGlvbmFsbHkuCiAJICovCiAJc2htX3RvY19l c3RpbWF0ZV9jaHVuaygmcGN4dC0+ZXN0aW1hdG9yLAogCQkJCQkJICAgbXVsX3NpemUoc2l6ZW9m KFdhbFVzYWdlKSwgcGN4dC0+bndvcmtlcnMpKTsKQEAgLTIxMTcsNiArMjExNyw3IEBAIF9naW5f cGFyYWxsZWxfYnVpbGRfbWFpbihkc21fc2VnbWVudCAqc2VnLCBzaG1fdG9jICp0b2MpCiAJUmVs YXRpb24JaW5kZXhSZWw7CiAJTE9DS01PREUJaGVhcExvY2ttb2RlOwogCUxPQ0tNT0RFCWluZGV4 TG9ja21vZGU7CisJUXVlcnlJbnN0cnVtZW50YXRpb24gKmluc3RyOwogCVdhbFVzYWdlICAgKndh bHVzYWdlOwogCUJ1ZmZlclVzYWdlICpidWZmZXJ1c2FnZTsKIAlpbnQJCQlzb3J0bWVtOwpAQCAt MjE4NSw3ICsyMTg2LDcgQEAgX2dpbl9wYXJhbGxlbF9idWlsZF9tYWluKGRzbV9zZWdtZW50ICpz ZWcsIHNobV90b2MgKnRvYykKIAl0dXBsZXNvcnRfYXR0YWNoX3NoYXJlZChzaGFyZWRzb3J0LCBz ZWcpOwogCiAJLyogUHJlcGFyZSB0byB0cmFjayBidWZmZXIgdXNhZ2UgZHVyaW5nIHBhcmFsbGVs IGV4ZWN1dGlvbiAqLwotCUluc3RyU3RhcnRQYXJhbGxlbFF1ZXJ5KCk7CisJaW5zdHIgPSBJbnN0 clN0YXJ0UGFyYWxsZWxRdWVyeSgpOwogCiAJLyoKIAkgKiBNaWdodCBhcyB3ZWxsIHVzZSByZWxp YWJsZSBmaWd1cmUgd2hlbiBkb2xpbmcgb3V0IG1haW50ZW5hbmNlX3dvcmtfbWVtCkBAIC0yMjAw LDcgKzIyMDEsOCBAQCBfZ2luX3BhcmFsbGVsX2J1aWxkX21haW4oZHNtX3NlZ21lbnQgKnNlZywg c2htX3RvYyAqdG9jKQogCS8qIFJlcG9ydCBXQUwvYnVmZmVyIHVzYWdlIGR1cmluZyBwYXJhbGxl bCBleGVjdXRpb24gKi8KIAlidWZmZXJ1c2FnZSA9IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxM RUxfS0VZX0JVRkZFUl9VU0FHRSwgZmFsc2UpOwogCXdhbHVzYWdlID0gc2htX3RvY19sb29rdXAo dG9jLCBQQVJBTExFTF9LRVlfV0FMX1VTQUdFLCBmYWxzZSk7Ci0JSW5zdHJFbmRQYXJhbGxlbFF1 ZXJ5KCZidWZmZXJ1c2FnZVtQYXJhbGxlbFdvcmtlck51bWJlcl0sCisJSW5zdHJFbmRQYXJhbGxl bFF1ZXJ5KGluc3RyLAorCQkJCQkJICAmYnVmZmVydXNhZ2VbUGFyYWxsZWxXb3JrZXJOdW1iZXJd LAogCQkJCQkJICAmd2FsdXNhZ2VbUGFyYWxsZWxXb3JrZXJOdW1iZXJdKTsKIAogCWluZGV4X2Ns b3NlKGluZGV4UmVsLCBpbmRleExvY2ttb2RlKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxh enkuYwppbmRleCA4MmM1YjI4ZTBhZC4uYjRjYmQwZTY4MmMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC92YWN1dW1sYXp5LmMKQEAgLTY0MSw4ICs2NDEsNyBAQCBoZWFwX3ZhY3V1bV9yZWwoUmVsYXRp b24gcmVsLCBjb25zdCBWYWN1dW1QYXJhbXMgcGFyYW1zLAogCVRpbWVzdGFtcFR6IHN0YXJ0dGlt ZSA9IDA7CiAJUGdTdGF0X0NvdW50ZXIgc3RhcnRyZWFkdGltZSA9IDAsCiAJCQkJc3RhcnR3cml0 ZXRpbWUgPSAwOwotCVdhbFVzYWdlCXN0YXJ0d2FsdXNhZ2UgPSBwZ1dhbFVzYWdlOwotCUJ1ZmZl clVzYWdlIHN0YXJ0YnVmZmVydXNhZ2UgPSBwZ0J1ZmZlclVzYWdlOworCVF1ZXJ5SW5zdHJ1bWVu dGF0aW9uICppbnN0ciA9IE5VTEw7CiAJRXJyb3JDb250ZXh0Q2FsbGJhY2sgZXJyY2FsbGJhY2s7 CiAJY2hhcgkgICoqaW5kbmFtZXMgPSBOVUxMOwogCVNpemUJCWRlYWRfaXRlbXNfbWF4X2J5dGVz ID0gMDsKQEAgLTY1OCw2ICs2NTcsOCBAQCBoZWFwX3ZhY3V1bV9yZWwoUmVsYXRpb24gcmVsLCBj b25zdCBWYWN1dW1QYXJhbXMgcGFyYW1zLAogCQkJc3RhcnRyZWFkdGltZSA9IHBnU3RhdEJsb2Nr UmVhZFRpbWU7CiAJCQlzdGFydHdyaXRldGltZSA9IHBnU3RhdEJsb2NrV3JpdGVUaW1lOwogCQl9 CisJCWluc3RyID0gSW5zdHJRdWVyeUFsbG9jKElOU1RSVU1FTlRfQlVGRkVSUyB8IElOU1RSVU1F TlRfV0FMKTsKKwkJSW5zdHJRdWVyeVN0YXJ0KGluc3RyKTsKIAl9CiAKIAkvKiBVc2VkIGZvciBp bnN0cnVtZW50YXRpb24gYW5kIHN0YXRzIHJlcG9ydCAqLwpAQCAtOTgzLDE0ICs5ODQsMTQgQEAg aGVhcF92YWN1dW1fcmVsKFJlbGF0aW9uIHJlbCwgY29uc3QgVmFjdXVtUGFyYW1zIHBhcmFtcywK IAl7CiAJCVRpbWVzdGFtcFR6IGVuZHRpbWUgPSBHZXRDdXJyZW50VGltZXN0YW1wKCk7CiAKKwkJ aW5zdHIgPSBJbnN0clF1ZXJ5U3RvcEZpbmFsaXplKGluc3RyKTsKKwogCQlpZiAodmVyYm9zZSB8 fCBwYXJhbXMubG9nX3ZhY3V1bV9taW5fZHVyYXRpb24gPT0gMCB8fAogCQkJVGltZXN0YW1wRGlm ZmVyZW5jZUV4Y2VlZHMoc3RhcnR0aW1lLCBlbmR0aW1lLAogCQkJCQkJCQkJICAgcGFyYW1zLmxv Z192YWN1dW1fbWluX2R1cmF0aW9uKSkKIAkJewogCQkJbG9uZwkJc2Vjc19kdXI7CiAJCQlpbnQJ CQl1c2Vjc19kdXI7Ci0JCQlXYWxVc2FnZQl3YWx1c2FnZTsKLQkJCUJ1ZmZlclVzYWdlIGJ1ZmZl cnVzYWdlOwogCQkJU3RyaW5nSW5mb0RhdGEgYnVmOwogCQkJY2hhcgkgICAqbXNnZm10OwogCQkJ aW50MzIJCWRpZmY7CkBAIC05OTksMTIgKzEwMDAsMTAgQEAgaGVhcF92YWN1dW1fcmVsKFJlbGF0 aW9uIHJlbCwgY29uc3QgVmFjdXVtUGFyYW1zIHBhcmFtcywKIAkJCWludDY0CQl0b3RhbF9ibGtz X2hpdDsKIAkJCWludDY0CQl0b3RhbF9ibGtzX3JlYWQ7CiAJCQlpbnQ2NAkJdG90YWxfYmxrc19k aXJ0aWVkOworCQkJQnVmZmVyVXNhZ2UgYnVmZmVydXNhZ2UgPSBpbnN0ci0+aW5zdHIuYnVmdXNh Z2U7CisJCQlXYWxVc2FnZQl3YWx1c2FnZSA9IGluc3RyLT5pbnN0ci53YWx1c2FnZTsKIAogCQkJ VGltZXN0YW1wRGlmZmVyZW5jZShzdGFydHRpbWUsIGVuZHRpbWUsICZzZWNzX2R1ciwgJnVzZWNz X2R1cik7Ci0JCQltZW1zZXQoJndhbHVzYWdlLCAwLCBzaXplb2YoV2FsVXNhZ2UpKTsKLQkJCVdh bFVzYWdlQWNjdW1EaWZmKCZ3YWx1c2FnZSwgJnBnV2FsVXNhZ2UsICZzdGFydHdhbHVzYWdlKTsK LQkJCW1lbXNldCgmYnVmZmVydXNhZ2UsIDAsIHNpemVvZihCdWZmZXJVc2FnZSkpOwotCQkJQnVm ZmVyVXNhZ2VBY2N1bURpZmYoJmJ1ZmZlcnVzYWdlLCAmcGdCdWZmZXJVc2FnZSwgJnN0YXJ0YnVm ZmVydXNhZ2UpOwogCiAJCQl0b3RhbF9ibGtzX2hpdCA9IGJ1ZmZlcnVzYWdlLnNoYXJlZF9ibGtz X2hpdCArCiAJCQkJYnVmZmVydXNhZ2UubG9jYWxfYmxrc19oaXQ7CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRy ZWUvbmJ0c29ydC5jCmluZGV4IDQ3YTliZGEzMGM5Li42YTI2MWM4ZGNiZCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL25idHJlZS9uYnRzb3J0LmMKQEAgLTE0NjYsOCArMTQ2Niw4IEBAIF9idF9iZWdpbl9wYXJh bGxlbChCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIGJvb2wgaXNjb25jdXJyZW50LCBpbnQgcmVx dWVzdCkKIAkgKiBhbmQgUEFSQUxMRUxfS0VZX0JVRkZFUl9VU0FHRS4KIAkgKgogCSAqIElmIHRo ZXJlIGFyZSBubyBleHRlbnNpb25zIGxvYWRlZCB0aGF0IGNhcmUsIHdlIGNvdWxkIHNraXAgdGhp cy4gIFdlCi0JICogaGF2ZSBubyB3YXkgb2Yga25vd2luZyB3aGV0aGVyIGFueW9uZSdzIGxvb2tp bmcgYXQgcGdXYWxVc2FnZSBvcgotCSAqIHBnQnVmZmVyVXNhZ2UsIHNvIGRvIGl0IHVuY29uZGl0 aW9uYWxseS4KKwkgKiBoYXZlIG5vIHdheSBvZiBrbm93aW5nIHdoZXRoZXIgYW55b25lJ3MgbG9v a2luZyBhdCBpbnN0cnVtZW50YXRpb24sIHNvCisJICogZG8gaXQgdW5jb25kaXRpb25hbGx5Lgog CSAqLwogCXNobV90b2NfZXN0aW1hdGVfY2h1bmsoJnBjeHQtPmVzdGltYXRvciwKIAkJCQkJCSAg IG11bF9zaXplKHNpemVvZihXYWxVc2FnZSksIHBjeHQtPm53b3JrZXJzKSk7CkBAIC0xNzUzLDYg KzE3NTMsNyBAQCBfYnRfcGFyYWxsZWxfYnVpbGRfbWFpbihkc21fc2VnbWVudCAqc2VnLCBzaG1f dG9jICp0b2MpCiAJUmVsYXRpb24JaW5kZXhSZWw7CiAJTE9DS01PREUJaGVhcExvY2ttb2RlOwog CUxPQ0tNT0RFCWluZGV4TG9ja21vZGU7CisJUXVlcnlJbnN0cnVtZW50YXRpb24gKmluc3RyOwog CVdhbFVzYWdlICAgKndhbHVzYWdlOwogCUJ1ZmZlclVzYWdlICpidWZmZXJ1c2FnZTsKIAlpbnQJ CQlzb3J0bWVtOwpAQCAtMTgyOCw3ICsxODI5LDcgQEAgX2J0X3BhcmFsbGVsX2J1aWxkX21haW4o ZHNtX3NlZ21lbnQgKnNlZywgc2htX3RvYyAqdG9jKQogCX0KIAogCS8qIFByZXBhcmUgdG8gdHJh Y2sgYnVmZmVyIHVzYWdlIGR1cmluZyBwYXJhbGxlbCBleGVjdXRpb24gKi8KLQlJbnN0clN0YXJ0 UGFyYWxsZWxRdWVyeSgpOworCWluc3RyID0gSW5zdHJTdGFydFBhcmFsbGVsUXVlcnkoKTsKIAog CS8qIFBlcmZvcm0gc29ydGluZyBvZiBzcG9vbCwgYW5kIHBvc3NpYmx5IGEgc3Bvb2wyICovCiAJ c29ydG1lbSA9IG1haW50ZW5hbmNlX3dvcmtfbWVtIC8gYnRzaGFyZWQtPnNjYW50dXBsZXNvcnRz dGF0ZXM7CkBAIC0xODM4LDcgKzE4MzksOCBAQCBfYnRfcGFyYWxsZWxfYnVpbGRfbWFpbihkc21f c2VnbWVudCAqc2VnLCBzaG1fdG9jICp0b2MpCiAJLyogUmVwb3J0IFdBTC9idWZmZXIgdXNhZ2Ug ZHVyaW5nIHBhcmFsbGVsIGV4ZWN1dGlvbiAqLwogCWJ1ZmZlcnVzYWdlID0gc2htX3RvY19sb29r dXAodG9jLCBQQVJBTExFTF9LRVlfQlVGRkVSX1VTQUdFLCBmYWxzZSk7CiAJd2FsdXNhZ2UgPSBz aG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVMX0tFWV9XQUxfVVNBR0UsIGZhbHNlKTsKLQlJbnN0 ckVuZFBhcmFsbGVsUXVlcnkoJmJ1ZmZlcnVzYWdlW1BhcmFsbGVsV29ya2VyTnVtYmVyXSwKKwlJ bnN0ckVuZFBhcmFsbGVsUXVlcnkoaW5zdHIsCisJCQkJCQkgICZidWZmZXJ1c2FnZVtQYXJhbGxl bFdvcmtlck51bWJlcl0sCiAJCQkJCQkgICZ3YWx1c2FnZVtQYXJhbGxlbFdvcmtlck51bWJlcl0p OwogCiAjaWZkZWYgQlRSRUVfQlVJTERfU1RBVFMKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2FuYWx5emUuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FuYWx5emUuYwppbmRleCBl ZWVkOTFiZTI2Ni4uNjcwYjViMGU4Y2UgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRz L2FuYWx5emUuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9hbmFseXplLmMKQEAgLTMwOSw5 ICszMDksNyBAQCBkb19hbmFseXplX3JlbChSZWxhdGlvbiBvbmVyZWwsIGNvbnN0IFZhY3V1bVBh cmFtcyBwYXJhbXMsCiAJT2lkCQkJc2F2ZV91c2VyaWQ7CiAJaW50CQkJc2F2ZV9zZWNfY29udGV4 dDsKIAlpbnQJCQlzYXZlX25lc3RsZXZlbDsKLQlXYWxVc2FnZQlzdGFydHdhbHVzYWdlID0gcGdX YWxVc2FnZTsKLQlCdWZmZXJVc2FnZSBzdGFydGJ1ZmZlcnVzYWdlID0gcGdCdWZmZXJVc2FnZTsK LQlCdWZmZXJVc2FnZSBidWZmZXJ1c2FnZTsKKwlRdWVyeUluc3RydW1lbnRhdGlvbiAqaW5zdHIg PSBOVUxMOwogCVBnU3RhdF9Db3VudGVyIHN0YXJ0cmVhZHRpbWUgPSAwOwogCVBnU3RhdF9Db3Vu dGVyIHN0YXJ0d3JpdGV0aW1lID0gMDsKIApAQCAtMzYyLDYgKzM2MCw5IEBAIGRvX2FuYWx5emVf cmVsKFJlbGF0aW9uIG9uZXJlbCwgY29uc3QgVmFjdXVtUGFyYW1zIHBhcmFtcywKIAkJfQogCiAJ CXBnX3J1c2FnZV9pbml0KCZydTApOworCisJCWluc3RyID0gSW5zdHJRdWVyeUFsbG9jKElOU1RS VU1FTlRfQlVGRkVSUyB8IElOU1RSVU1FTlRfV0FMKTsKKwkJSW5zdHJRdWVyeVN0YXJ0KGluc3Ry KTsKIAl9CiAKIAkvKiBVc2VkIGZvciBpbnN0cnVtZW50YXRpb24gYW5kIHN0YXRzIHJlcG9ydCAq LwpAQCAtNzQyLDEyICs3NDMsMTMgQEAgZG9fYW5hbHl6ZV9yZWwoUmVsYXRpb24gb25lcmVsLCBj b25zdCBWYWN1dW1QYXJhbXMgcGFyYW1zLAogCXsKIAkJVGltZXN0YW1wVHogZW5kdGltZSA9IEdl dEN1cnJlbnRUaW1lc3RhbXAoKTsKIAorCQlpbnN0ciA9IEluc3RyUXVlcnlTdG9wRmluYWxpemUo aW5zdHIpOworCiAJCWlmICh2ZXJib3NlIHx8IHBhcmFtcy5sb2dfYW5hbHl6ZV9taW5fZHVyYXRp b24gPT0gMCB8fAogCQkJVGltZXN0YW1wRGlmZmVyZW5jZUV4Y2VlZHMoc3RhcnR0aW1lLCBlbmR0 aW1lLAogCQkJCQkJCQkJICAgcGFyYW1zLmxvZ19hbmFseXplX21pbl9kdXJhdGlvbikpCiAJCXsK IAkJCWxvbmcJCWRlbGF5X2luX21zOwotCQkJV2FsVXNhZ2UJd2FsdXNhZ2U7CiAJCQlkb3VibGUJ CXJlYWRfcmF0ZSA9IDA7CiAJCQlkb3VibGUJCXdyaXRlX3JhdGUgPSAwOwogCQkJY2hhcgkgICAq bXNnZm10OwpAQCAtNzU1LDE4ICs3NTcsMTUgQEAgZG9fYW5hbHl6ZV9yZWwoUmVsYXRpb24gb25l cmVsLCBjb25zdCBWYWN1dW1QYXJhbXMgcGFyYW1zLAogCQkJaW50NjQJCXRvdGFsX2Jsa3NfaGl0 OwogCQkJaW50NjQJCXRvdGFsX2Jsa3NfcmVhZDsKIAkJCWludDY0CQl0b3RhbF9ibGtzX2RpcnRp ZWQ7Ci0KLQkJCW1lbXNldCgmYnVmZmVydXNhZ2UsIDAsIHNpemVvZihCdWZmZXJVc2FnZSkpOwot CQkJQnVmZmVyVXNhZ2VBY2N1bURpZmYoJmJ1ZmZlcnVzYWdlLCAmcGdCdWZmZXJVc2FnZSwgJnN0 YXJ0YnVmZmVydXNhZ2UpOwotCQkJbWVtc2V0KCZ3YWx1c2FnZSwgMCwgc2l6ZW9mKFdhbFVzYWdl KSk7Ci0JCQlXYWxVc2FnZUFjY3VtRGlmZigmd2FsdXNhZ2UsICZwZ1dhbFVzYWdlLCAmc3RhcnR3 YWx1c2FnZSk7Ci0KLQkJCXRvdGFsX2Jsa3NfaGl0ID0gYnVmZmVydXNhZ2Uuc2hhcmVkX2Jsa3Nf aGl0ICsKLQkJCQlidWZmZXJ1c2FnZS5sb2NhbF9ibGtzX2hpdDsKLQkJCXRvdGFsX2Jsa3NfcmVh ZCA9IGJ1ZmZlcnVzYWdlLnNoYXJlZF9ibGtzX3JlYWQgKwotCQkJCWJ1ZmZlcnVzYWdlLmxvY2Fs X2Jsa3NfcmVhZDsKLQkJCXRvdGFsX2Jsa3NfZGlydGllZCA9IGJ1ZmZlcnVzYWdlLnNoYXJlZF9i bGtzX2RpcnRpZWQgKwotCQkJCWJ1ZmZlcnVzYWdlLmxvY2FsX2Jsa3NfZGlydGllZDsKKwkJCUJ1 ZmZlclVzYWdlIGJ1ZnVzYWdlID0gaW5zdHItPmluc3RyLmJ1ZnVzYWdlOworCQkJV2FsVXNhZ2UJ d2FsdXNhZ2UgPSBpbnN0ci0+aW5zdHIud2FsdXNhZ2U7CisKKwkJCXRvdGFsX2Jsa3NfaGl0ID0g YnVmdXNhZ2Uuc2hhcmVkX2Jsa3NfaGl0ICsKKwkJCQlidWZ1c2FnZS5sb2NhbF9ibGtzX2hpdDsK KwkJCXRvdGFsX2Jsa3NfcmVhZCA9IGJ1ZnVzYWdlLnNoYXJlZF9ibGtzX3JlYWQgKworCQkJCWJ1 ZnVzYWdlLmxvY2FsX2Jsa3NfcmVhZDsKKwkJCXRvdGFsX2Jsa3NfZGlydGllZCA9IGJ1ZnVzYWdl LnNoYXJlZF9ibGtzX2RpcnRpZWQgKworCQkJCWJ1ZnVzYWdlLmxvY2FsX2Jsa3NfZGlydGllZDsK IAogCQkJLyoKIAkJCSAqIFdlIGRvIG5vdCBleHBlY3QgYW4gYW5hbHl6ZSB0byB0YWtlID4gMjUg ZGF5cyBhbmQgaXQgc2ltcGxpZmllcwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMv ZXhwbGFpbi5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCmluZGV4IGJlYmFkNTdl ZmY1Li5mYTI1MGIwMTk2YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFp bi5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYwpAQCAtMzI0LDE0ICszMjQs MTYgQEAgc3RhbmRhcmRfRXhwbGFpbk9uZVF1ZXJ5KFF1ZXJ5ICpxdWVyeSwgaW50IGN1cnNvck9w dGlvbnMsCiAJCQkJCQkgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYpCiB7CiAJUGxhbm5lZFN0 bXQgKnBsYW47Ci0JaW5zdHJfdGltZQlwbGFuc3RhcnQsCi0JCQkJcGxhbmR1cmF0aW9uOwotCUJ1 ZmZlclVzYWdlIGJ1ZnVzYWdlX3N0YXJ0LAotCQkJCWJ1ZnVzYWdlOworCVF1ZXJ5SW5zdHJ1bWVu dGF0aW9uICppbnN0ciA9IE5VTEw7CiAJTWVtb3J5Q29udGV4dENvdW50ZXJzIG1lbV9jb3VudGVy czsKIAlNZW1vcnlDb250ZXh0IHBsYW5uZXJfY3R4ID0gTlVMTDsKIAlNZW1vcnlDb250ZXh0IHNh dmVkX2N0eCA9IE5VTEw7CiAKKwlpZiAoZXMtPmJ1ZmZlcnMpCisJCWluc3RyID0gSW5zdHJRdWVy eUFsbG9jKElOU1RSVU1FTlRfVElNRVIgfCBJTlNUUlVNRU5UX0JVRkZFUlMpOworCWVsc2UKKwkJ aW5zdHIgPSBJbnN0clF1ZXJ5QWxsb2MoSU5TVFJVTUVOVF9USU1FUik7CisKIAlpZiAoZXMtPm1l bW9yeSkKIAl7CiAJCS8qCkBAIC0zNDgsMTUgKzM1MCwxMiBAQCBzdGFuZGFyZF9FeHBsYWluT25l UXVlcnkoUXVlcnkgKnF1ZXJ5LCBpbnQgY3Vyc29yT3B0aW9ucywKIAkJc2F2ZWRfY3R4ID0gTWVt b3J5Q29udGV4dFN3aXRjaFRvKHBsYW5uZXJfY3R4KTsKIAl9CiAKLQlpZiAoZXMtPmJ1ZmZlcnMp Ci0JCWJ1ZnVzYWdlX3N0YXJ0ID0gcGdCdWZmZXJVc2FnZTsKLQlJTlNUUl9USU1FX1NFVF9DVVJS RU5UKHBsYW5zdGFydCk7CisJSW5zdHJRdWVyeVN0YXJ0KGluc3RyKTsKIAogCS8qIHBsYW4gdGhl IHF1ZXJ5ICovCiAJcGxhbiA9IHBnX3BsYW5fcXVlcnkocXVlcnksIHF1ZXJ5U3RyaW5nLCBjdXJz b3JPcHRpb25zLCBwYXJhbXMsIGVzKTsKIAotCUlOU1RSX1RJTUVfU0VUX0NVUlJFTlQocGxhbmR1 cmF0aW9uKTsKLQlJTlNUUl9USU1FX1NVQlRSQUNUKHBsYW5kdXJhdGlvbiwgcGxhbnN0YXJ0KTsK KwlpbnN0ciA9IEluc3RyUXVlcnlTdG9wRmluYWxpemUoaW5zdHIpOwogCiAJaWYgKGVzLT5tZW1v cnkpCiAJewpAQCAtMzY0LDE2ICszNjMsOSBAQCBzdGFuZGFyZF9FeHBsYWluT25lUXVlcnkoUXVl cnkgKnF1ZXJ5LCBpbnQgY3Vyc29yT3B0aW9ucywKIAkJTWVtb3J5Q29udGV4dE1lbUNvbnN1bWVk KHBsYW5uZXJfY3R4LCAmbWVtX2NvdW50ZXJzKTsKIAl9CiAKLQkvKiBjYWxjIGRpZmZlcmVuY2Vz IG9mIGJ1ZmZlciBjb3VudGVycy4gKi8KLQlpZiAoZXMtPmJ1ZmZlcnMpCi0JewotCQltZW1zZXQo JmJ1ZnVzYWdlLCAwLCBzaXplb2YoQnVmZmVyVXNhZ2UpKTsKLQkJQnVmZmVyVXNhZ2VBY2N1bURp ZmYoJmJ1ZnVzYWdlLCAmcGdCdWZmZXJVc2FnZSwgJmJ1ZnVzYWdlX3N0YXJ0KTsKLQl9Ci0KIAkv KiBydW4gaXQgKGlmIG5lZWRlZCkgYW5kIHByb2R1Y2Ugb3V0cHV0ICovCiAJRXhwbGFpbk9uZVBs YW4ocGxhbiwgaW50bywgZXMsIHF1ZXJ5U3RyaW5nLCBwYXJhbXMsIHF1ZXJ5RW52LAotCQkJCSAg ICZwbGFuZHVyYXRpb24sIChlcy0+YnVmZmVycyA/ICZidWZ1c2FnZSA6IE5VTEwpLAorCQkJCSAg ICZpbnN0ci0+aW5zdHIudG90YWwsIChlcy0+YnVmZmVycyA/ICZpbnN0ci0+aW5zdHIuYnVmdXNh Z2UgOiBOVUxMKSwKIAkJCQkgICBlcy0+bWVtb3J5ID8gJm1lbV9jb3VudGVycyA6IE5VTEwpOwog fQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluX2RyLmMgYi9zcmMv YmFja2VuZC9jb21tYW5kcy9leHBsYWluX2RyLmMKaW5kZXggM2M5NjA2MWNmMzIuLmM5Njk1YjAz YTYwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluX2RyLmMKKysrIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbl9kci5jCkBAIC0xMTAsMTUgKzExMCwyMCBAQCBz ZXJpYWxpemVBbmFseXplUmVjZWl2ZShUdXBsZVRhYmxlU2xvdCAqc2xvdCwgRGVzdFJlY2VpdmVy ICpzZWxmKQogCU1lbW9yeUNvbnRleHQgb2xkY29udGV4dDsKIAlTdHJpbmdJbmZvCWJ1ZiA9ICZt eVN0YXRlLT5idWY7CiAJaW50CQkJbmF0dHMgPSB0eXBlaW5mby0+bmF0dHM7Ci0JaW5zdHJfdGlt ZQlzdGFydCwKLQkJCQllbmQ7Ci0JQnVmZmVyVXNhZ2UgaW5zdHJfc3RhcnQ7CisJUXVlcnlJbnN0 cnVtZW50YXRpb24gKmluc3RyID0gTlVMTDsKIAogCS8qIG9ubHkgbWVhc3VyZSB0aW1lLCBidWZm ZXJzIGlmIHJlcXVlc3RlZCAqLwotCWlmIChteVN0YXRlLT5lcy0+dGltaW5nKQotCQlJTlNUUl9U SU1FX1NFVF9DVVJSRU5UKHN0YXJ0KTsKLQlpZiAobXlTdGF0ZS0+ZXMtPmJ1ZmZlcnMpCi0JCWlu c3RyX3N0YXJ0ID0gcGdCdWZmZXJVc2FnZTsKKwlpZiAobXlTdGF0ZS0+ZXMtPnRpbWluZyB8fCBt eVN0YXRlLT5lcy0+YnVmZmVycykKKwl7CisJCUluc3RydW1lbnRPcHRpb24gaW5zdHJ1bWVudF9v cHRpb25zID0gMDsKKworCQlpZiAobXlTdGF0ZS0+ZXMtPnRpbWluZykKKwkJCWluc3RydW1lbnRf b3B0aW9ucyB8PSBJTlNUUlVNRU5UX1RJTUVSOworCQlpZiAobXlTdGF0ZS0+ZXMtPmJ1ZmZlcnMp CisJCQlpbnN0cnVtZW50X29wdGlvbnMgfD0gSU5TVFJVTUVOVF9CVUZGRVJTOworCQlpbnN0ciA9 IEluc3RyUXVlcnlBbGxvYyhpbnN0cnVtZW50X29wdGlvbnMpOworCQlJbnN0clF1ZXJ5U3RhcnQo aW5zdHIpOworCX0KIAogCS8qIFNldCBvciB1cGRhdGUgbXkgZGVyaXZlZCBhdHRyaWJ1dGUgaW5m bywgaWYgbmVlZGVkICovCiAJaWYgKG15U3RhdGUtPmF0dHJpbmZvICE9IHR5cGVpbmZvIHx8IG15 U3RhdGUtPm5hdHRycyAhPSBuYXR0cykKQEAgLTE4NiwxOCArMTkxLDE5IEBAIHNlcmlhbGl6ZUFu YWx5emVSZWNlaXZlKFR1cGxlVGFibGVTbG90ICpzbG90LCBEZXN0UmVjZWl2ZXIgKnNlbGYpCiAJ TWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOwogCU1lbW9yeUNvbnRleHRSZXNldCht eVN0YXRlLT50bXBjb250ZXh0KTsKIAorCWlmIChteVN0YXRlLT5lcy0+dGltaW5nIHx8IG15U3Rh dGUtPmVzLT5idWZmZXJzKQorCQlpbnN0ciA9IEluc3RyUXVlcnlTdG9wRmluYWxpemUoaW5zdHIp OworCiAJLyogVXBkYXRlIHRpbWluZyBkYXRhICovCiAJaWYgKG15U3RhdGUtPmVzLT50aW1pbmcp Ci0JewotCQlJTlNUUl9USU1FX1NFVF9DVVJSRU5UKGVuZCk7Ci0JCUlOU1RSX1RJTUVfQUNDVU1f RElGRihteVN0YXRlLT5tZXRyaWNzLnRpbWVTcGVudCwgZW5kLCBzdGFydCk7Ci0JfQorCQlJTlNU Ul9USU1FX0FERChteVN0YXRlLT5tZXRyaWNzLnRpbWVTcGVudCwgaW5zdHItPmluc3RyLnRvdGFs KTsKIAogCS8qIFVwZGF0ZSBidWZmZXIgbWV0cmljcyAqLwogCWlmIChteVN0YXRlLT5lcy0+YnVm ZmVycykKLQkJQnVmZmVyVXNhZ2VBY2N1bURpZmYoJm15U3RhdGUtPm1ldHJpY3MuYnVmZmVyVXNh Z2UsCi0JCQkJCQkJICZwZ0J1ZmZlclVzYWdlLAotCQkJCQkJCSAmaW5zdHJfc3RhcnQpOworCQlC dWZmZXJVc2FnZUFkZCgmbXlTdGF0ZS0+bWV0cmljcy5idWZmZXJVc2FnZSwgJmluc3RyLT5pbnN0 ci5idWZ1c2FnZSk7CisKKwlpZiAobXlTdGF0ZS0+ZXMtPnRpbWluZyB8fCBteVN0YXRlLT5lcy0+ YnVmZmVycykKKwkJcGZyZWUoaW5zdHIpOwogCiAJcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9w cmVwYXJlLmMKaW5kZXggODc2YWFkMjEwMGEuLjZlOThlMDc0MmI4IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJl cGFyZS5jCkBAIC01ODAsMTMgKzU4MCwxNiBAQCBFeHBsYWluRXhlY3V0ZVF1ZXJ5KEV4ZWN1dGVT dG10ICpleGVjc3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKIAlMaXN0 Q2VsbCAgICpwOwogCVBhcmFtTGlzdEluZm8gcGFyYW1MSSA9IE5VTEw7CiAJRVN0YXRlCSAgICpl c3RhdGUgPSBOVUxMOwotCWluc3RyX3RpbWUJcGxhbnN0YXJ0OwotCWluc3RyX3RpbWUJcGxhbmR1 cmF0aW9uOwotCUJ1ZmZlclVzYWdlIGJ1ZnVzYWdlX3N0YXJ0LAotCQkJCWJ1ZnVzYWdlOworCVF1 ZXJ5SW5zdHJ1bWVudGF0aW9uICppbnN0ciA9IE5VTEw7CiAJTWVtb3J5Q29udGV4dENvdW50ZXJz IG1lbV9jb3VudGVyczsKIAlNZW1vcnlDb250ZXh0IHBsYW5uZXJfY3R4ID0gTlVMTDsKIAlNZW1v cnlDb250ZXh0IHNhdmVkX2N0eCA9IE5VTEw7CisJaW50CQkJaW5zdHJ1bWVudF9vcHRpb25zID0g SU5TVFJVTUVOVF9USU1FUjsKKworCWlmIChlcy0+YnVmZmVycykKKwkJaW5zdHJ1bWVudF9vcHRp b25zIHw9IElOU1RSVU1FTlRfQlVGRkVSUzsKKworCWluc3RyID0gSW5zdHJRdWVyeUFsbG9jKGlu c3RydW1lbnRfb3B0aW9ucyk7CiAKIAlpZiAoZXMtPm1lbW9yeSkKIAl7CkBAIC01OTgsOSArNjAx LDcgQEAgRXhwbGFpbkV4ZWN1dGVRdWVyeShFeGVjdXRlU3RtdCAqZXhlY3N0bXQsIEludG9DbGF1 c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAJCXNhdmVkX2N0eCA9IE1lbW9yeUNvbnRleHRT d2l0Y2hUbyhwbGFubmVyX2N0eCk7CiAJfQogCi0JaWYgKGVzLT5idWZmZXJzKQotCQlidWZ1c2Fn ZV9zdGFydCA9IHBnQnVmZmVyVXNhZ2U7Ci0JSU5TVFJfVElNRV9TRVRfQ1VSUkVOVChwbGFuc3Rh cnQpOworCUluc3RyUXVlcnlTdGFydChpbnN0cik7CiAKIAkvKiBMb29rIGl0IHVwIGluIHRoZSBo YXNoIHRhYmxlICovCiAJZW50cnkgPSBGZXRjaFByZXBhcmVkU3RhdGVtZW50KGV4ZWNzdG10LT5u YW1lLCB0cnVlKTsKQEAgLTYzNSw4ICs2MzYsNyBAQCBFeHBsYWluRXhlY3V0ZVF1ZXJ5KEV4ZWN1 dGVTdG10ICpleGVjc3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKIAlj cGxhbiA9IEdldENhY2hlZFBsYW4oZW50cnktPnBsYW5zb3VyY2UsIHBhcmFtTEksCiAJCQkJCQkg IEN1cnJlbnRSZXNvdXJjZU93bmVyLCBwc3RhdGUtPnBfcXVlcnlFbnYpOwogCi0JSU5TVFJfVElN RV9TRVRfQ1VSUkVOVChwbGFuZHVyYXRpb24pOwotCUlOU1RSX1RJTUVfU1VCVFJBQ1QocGxhbmR1 cmF0aW9uLCBwbGFuc3RhcnQpOworCWluc3RyID0gSW5zdHJRdWVyeVN0b3BGaW5hbGl6ZShpbnN0 cik7CiAKIAlpZiAoZXMtPm1lbW9yeSkKIAl7CkBAIC02NDQsMTMgKzY0NCw2IEBAIEV4cGxhaW5F eGVjdXRlUXVlcnkoRXhlY3V0ZVN0bXQgKmV4ZWNzdG10LCBJbnRvQ2xhdXNlICppbnRvLCBFeHBs YWluU3RhdGUgKmVzLAogCQlNZW1vcnlDb250ZXh0TWVtQ29uc3VtZWQocGxhbm5lcl9jdHgsICZt ZW1fY291bnRlcnMpOwogCX0KIAotCS8qIGNhbGMgZGlmZmVyZW5jZXMgb2YgYnVmZmVyIGNvdW50 ZXJzLiAqLwotCWlmIChlcy0+YnVmZmVycykKLQl7Ci0JCW1lbXNldCgmYnVmdXNhZ2UsIDAsIHNp emVvZihCdWZmZXJVc2FnZSkpOwotCQlCdWZmZXJVc2FnZUFjY3VtRGlmZigmYnVmdXNhZ2UsICZw Z0J1ZmZlclVzYWdlLCAmYnVmdXNhZ2Vfc3RhcnQpOwotCX0KLQogCXBsYW5fbGlzdCA9IGNwbGFu LT5zdG10X2xpc3Q7CiAKIAkvKiBFeHBsYWluIGVhY2ggcXVlcnkgKi8KQEAgLTY2MCw3ICs2NTMs NyBAQCBFeHBsYWluRXhlY3V0ZVF1ZXJ5KEV4ZWN1dGVTdG10ICpleGVjc3RtdCwgSW50b0NsYXVz ZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKIAogCQlpZiAocHN0bXQtPmNvbW1hbmRUeXBlICE9 IENNRF9VVElMSVRZKQogCQkJRXhwbGFpbk9uZVBsYW4ocHN0bXQsIGludG8sIGVzLCBxdWVyeV9z dHJpbmcsIHBhcmFtTEksIHBzdGF0ZS0+cF9xdWVyeUVudiwKLQkJCQkJCSAgICZwbGFuZHVyYXRp b24sIChlcy0+YnVmZmVycyA/ICZidWZ1c2FnZSA6IE5VTEwpLAorCQkJCQkJICAgJmluc3RyLT5p bnN0ci50b3RhbCwgKGVzLT5idWZmZXJzID8gJmluc3RyLT5pbnN0ci5idWZ1c2FnZSA6IE5VTEwp LAogCQkJCQkJICAgZXMtPm1lbW9yeSA/ICZtZW1fY291bnRlcnMgOiBOVUxMKTsKIAkJZWxzZQog CQkJRXhwbGFpbk9uZVV0aWxpdHkocHN0bXQtPnV0aWxpdHlTdG10LCBpbnRvLCBlcywgcHN0YXRl LCBwYXJhbUxJKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFs bGVsLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jCmluZGV4IDI3OTEw OGNhODlmLi43NTA3NGZlNGVmYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFj dXVtcGFyYWxsZWwuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5j CkBAIC0zMDgsOCArMzA4LDggQEAgcGFyYWxsZWxfdmFjdXVtX2luaXQoUmVsYXRpb24gcmVsLCBS ZWxhdGlvbiAqaW5kcmVscywgaW50IG5pbmRleGVzLAogCSAqIFBBUkFMTEVMX1ZBQ1VVTV9LRVlf QlVGRkVSX1VTQUdFIGFuZCBQQVJBTExFTF9WQUNVVU1fS0VZX1dBTF9VU0FHRS4KIAkgKgogCSAq IElmIHRoZXJlIGFyZSBubyBleHRlbnNpb25zIGxvYWRlZCB0aGF0IGNhcmUsIHdlIGNvdWxkIHNr aXAgdGhpcy4gIFdlCi0JICogaGF2ZSBubyB3YXkgb2Yga25vd2luZyB3aGV0aGVyIGFueW9uZSdz IGxvb2tpbmcgYXQgcGdCdWZmZXJVc2FnZSBvcgotCSAqIHBnV2FsVXNhZ2UsIHNvIGRvIGl0IHVu Y29uZGl0aW9uYWxseS4KKwkgKiBoYXZlIG5vIHdheSBvZiBrbm93aW5nIHdoZXRoZXIgYW55b25l J3MgbG9va2luZyBhdCBpbnN0cnVtZW50YXRpb24sIHNvCisJICogZG8gaXQgdW5jb25kaXRpb25h bGx5LgogCSAqLwogCXNobV90b2NfZXN0aW1hdGVfY2h1bmsoJnBjeHQtPmVzdGltYXRvciwKIAkJ CQkJCSAgIG11bF9zaXplKHNpemVvZihCdWZmZXJVc2FnZSksIHBjeHQtPm53b3JrZXJzKSk7CkBA IC05OTUsNiArOTk1LDcgQEAgcGFyYWxsZWxfdmFjdXVtX21haW4oZHNtX3NlZ21lbnQgKnNlZywg c2htX3RvYyAqdG9jKQogCVBWSW5kU3RhdHMgKmluZHN0YXRzOwogCVBWU2hhcmVkICAgKnNoYXJl ZDsKIAlUaWRTdG9yZSAgICpkZWFkX2l0ZW1zOworCVF1ZXJ5SW5zdHJ1bWVudGF0aW9uICppbnN0 cjsKIAlCdWZmZXJVc2FnZSAqYnVmZmVyX3VzYWdlOwogCVdhbFVzYWdlICAgKndhbF91c2FnZTsK IAlpbnQJCQluaW5kZXhlczsKQEAgLTEwODQsNyArMTA4NSw3IEBAIHBhcmFsbGVsX3ZhY3V1bV9t YWluKGRzbV9zZWdtZW50ICpzZWcsIHNobV90b2MgKnRvYykKIAllcnJvcl9jb250ZXh0X3N0YWNr ID0gJmVycmNhbGxiYWNrOwogCiAJLyogUHJlcGFyZSB0byB0cmFjayBidWZmZXIgdXNhZ2UgZHVy aW5nIHBhcmFsbGVsIGV4ZWN1dGlvbiAqLwotCUluc3RyU3RhcnRQYXJhbGxlbFF1ZXJ5KCk7CisJ aW5zdHIgPSBJbnN0clN0YXJ0UGFyYWxsZWxRdWVyeSgpOwogCiAJLyogUHJvY2VzcyBpbmRleGVz IHRvIHBlcmZvcm0gdmFjdXVtL2NsZWFudXAgKi8KIAlwYXJhbGxlbF92YWN1dW1fcHJvY2Vzc19z YWZlX2luZGV4ZXMoJnB2cyk7CkBAIC0xMDkyLDcgKzEwOTMsOCBAQCBwYXJhbGxlbF92YWN1dW1f bWFpbihkc21fc2VnbWVudCAqc2VnLCBzaG1fdG9jICp0b2MpCiAJLyogUmVwb3J0IGJ1ZmZlci9X QUwgdXNhZ2UgZHVyaW5nIHBhcmFsbGVsIGV4ZWN1dGlvbiAqLwogCWJ1ZmZlcl91c2FnZSA9IHNo bV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfVkFDVVVNX0tFWV9CVUZGRVJfVVNBR0UsIGZhbHNl KTsKIAl3YWxfdXNhZ2UgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVMX1ZBQ1VVTV9LRVlf V0FMX1VTQUdFLCBmYWxzZSk7Ci0JSW5zdHJFbmRQYXJhbGxlbFF1ZXJ5KCZidWZmZXJfdXNhZ2Vb UGFyYWxsZWxXb3JrZXJOdW1iZXJdLAorCUluc3RyRW5kUGFyYWxsZWxRdWVyeShpbnN0ciwKKwkJ CQkJCSAgJmJ1ZmZlcl91c2FnZVtQYXJhbGxlbFdvcmtlck51bWJlcl0sCiAJCQkJCQkgICZ3YWxf dXNhZ2VbUGFyYWxsZWxXb3JrZXJOdW1iZXJdKTsKIAogCS8qIFJlcG9ydCBhbnkgcmVtYWluaW5n IGNvc3QtYmFzZWQgdmFjdXVtIGRlbGF5IHRpbWUgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNNYWluLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCmlu ZGV4IDFiOTUwMDQwNTk3Li43NzFiMTI4NjAxNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3IvZXhlY01haW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCkBA IC03OCw2ICs3OCw3IEBAIEV4ZWN1dG9yQ2hlY2tQZXJtc19ob29rX3R5cGUgRXhlY3V0b3JDaGVj a1Blcm1zX2hvb2sgPSBOVUxMOwogLyogZGVjbHMgZm9yIGxvY2FsIHJvdXRpbmVzIG9ubHkgdXNl ZCB3aXRoaW4gdGhpcyBtb2R1bGUgKi8KIHN0YXRpYyB2b2lkIEluaXRQbGFuKFF1ZXJ5RGVzYyAq cXVlcnlEZXNjLCBpbnQgZWZsYWdzKTsKIHN0YXRpYyB2b2lkIENoZWNrVmFsaWRSb3dNYXJrUmVs KFJlbGF0aW9uIHJlbCwgUm93TWFya1R5cGUgbWFya1R5cGUpOworc3RhdGljIHZvaWQgRXhlY0Zp bmFsaXplVHJpZ2dlckluc3RydW1lbnRhdGlvbihFU3RhdGUgKmVzdGF0ZSk7CiBzdGF0aWMgdm9p ZCBFeGVjUG9zdHByb2Nlc3NQbGFuKEVTdGF0ZSAqZXN0YXRlKTsKIHN0YXRpYyB2b2lkIEV4ZWNF bmRQbGFuKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBFU3RhdGUgKmVzdGF0ZSk7CiBzdGF0aWMgdm9p ZCBFeGVjdXRlUGxhbihRdWVyeURlc2MgKnF1ZXJ5RGVzYywKQEAgLTMzMSw5ICszMzIsMjggQEAg c3RhbmRhcmRfRXhlY3V0b3JSdW4oUXVlcnlEZXNjICpxdWVyeURlc2MsCiAJICovCiAJb2xkY29u dGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhlc3RhdGUtPmVzX3F1ZXJ5X2N4dCk7CiAKLQkv KiBBbGxvdyBpbnN0cnVtZW50YXRpb24gb2YgRXhlY3V0b3Igb3ZlcmFsbCBydW50aW1lICovCisJ LyoKKwkgKiBTdGFydCB1cCByZXF1aXJlZCB0b3AtbGV2ZWwgaW5zdHJ1bWVudGF0aW9uIHN0YWNr IGZvciBXQUwvYnVmZmVyCisJICogdHJhY2tpbmcKKwkgKi8KKwlpZiAoIXF1ZXJ5RGVzYy0+dG90 YWx0aW1lICYmIChlc3RhdGUtPmVzX2luc3RydW1lbnQgJiAoSU5TVFJVTUVOVF9CVUZGRVJTIHwg SU5TVFJVTUVOVF9XQUwpKSkKKwkJcXVlcnlEZXNjLT50b3RhbHRpbWUgPSBJbnN0clF1ZXJ5QWxs b2MoZXN0YXRlLT5lc19pbnN0cnVtZW50KTsKKwogCWlmIChxdWVyeURlc2MtPnRvdGFsdGltZSkK LQkJSW5zdHJTdGFydChxdWVyeURlc2MtPnRvdGFsdGltZSk7CisJeworCQkvKiBBbGxvdyBpbnN0 cnVtZW50YXRpb24gb2YgRXhlY3V0b3Igb3ZlcmFsbCBydW50aW1lICovCisJCUluc3RyUXVlcnlT dGFydChxdWVyeURlc2MtPnRvdGFsdGltZSk7CisKKwkJLyoKKwkJICogUmVtZW1iZXIgYWxsIG5v ZGUgZW50cmllcyBmb3IgYWJvcnQgcmVjb3ZlcnkuIFdlIGRvIHRoaXMgb25jZSBoZXJlCisJCSAq IGFmdGVyIHRoZSBmaXJzdCBjYWxsIHRvIEluc3RyUXVlcnlTdGFydCBoYXMgcHVzaGVkIHRoZSBw YXJlbnQKKwkJICogZW50cnkuCisJCSAqLworCQlpZiAoKGVzdGF0ZS0+ZXNfaW5zdHJ1bWVudCAm IChJTlNUUlVNRU5UX0JVRkZFUlMgfCBJTlNUUlVNRU5UX1dBTCkpICYmCisJCQkhcXVlcnlEZXNj LT5hbHJlYWR5X2V4ZWN1dGVkKQorCQkJRXhlY1JlbWVtYmVyTm9kZUluc3RydW1lbnRhdGlvbihx dWVyeURlc2MtPnBsYW5zdGF0ZSwKKwkJCQkJCQkJCQkJcXVlcnlEZXNjLT50b3RhbHRpbWUpOwor CX0KIAogCS8qCiAJICogZXh0cmFjdCBpbmZvcm1hdGlvbiBmcm9tIHRoZSBxdWVyeSBkZXNjcmlw dG9yIGFuZCB0aGUgcXVlcnkgZmVhdHVyZS4KQEAgLTM4NSw3ICs0MDUsNyBAQCBzdGFuZGFyZF9F eGVjdXRvclJ1bihRdWVyeURlc2MgKnF1ZXJ5RGVzYywKIAkJZGVzdC0+clNodXRkb3duKGRlc3Qp OwogCiAJaWYgKHF1ZXJ5RGVzYy0+dG90YWx0aW1lKQotCQlJbnN0clN0b3AocXVlcnlEZXNjLT50 b3RhbHRpbWUpOworCQlJbnN0clF1ZXJ5U3RvcChxdWVyeURlc2MtPnRvdGFsdGltZSk7CiAKIAlN ZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7CiB9CkBAIC00MzUsNyArNDU1LDcgQEAg c3RhbmRhcmRfRXhlY3V0b3JGaW5pc2goUXVlcnlEZXNjICpxdWVyeURlc2MpCiAKIAkvKiBBbGxv dyBpbnN0cnVtZW50YXRpb24gb2YgRXhlY3V0b3Igb3ZlcmFsbCBydW50aW1lICovCiAJaWYgKHF1 ZXJ5RGVzYy0+dG90YWx0aW1lKQotCQlJbnN0clN0YXJ0KHF1ZXJ5RGVzYy0+dG90YWx0aW1lKTsK KwkJSW5zdHJRdWVyeVN0YXJ0KHF1ZXJ5RGVzYy0+dG90YWx0aW1lKTsKIAogCS8qIFJ1biBNb2Rp ZnlUYWJsZSBub2RlcyB0byBjb21wbGV0aW9uICovCiAJRXhlY1Bvc3Rwcm9jZXNzUGxhbihlc3Rh dGUpOwpAQCAtNDQ0LDggKzQ2NCwyNiBAQCBzdGFuZGFyZF9FeGVjdXRvckZpbmlzaChRdWVyeURl c2MgKnF1ZXJ5RGVzYykKIAlpZiAoIShlc3RhdGUtPmVzX3RvcF9lZmxhZ3MgJiBFWEVDX0ZMQUdf U0tJUF9UUklHR0VSUykpCiAJCUFmdGVyVHJpZ2dlckVuZFF1ZXJ5KGVzdGF0ZSk7CiAKKwkvKgor CSAqIEFjY3VtdWxhdGUgcGVyLW5vZGUgYW5kIHRyaWdnZXIgc3RhdGlzdGljcyB0byB0aGVpciBy ZXNwZWN0aXZlIHBhcmVudAorCSAqIGluc3RydW1lbnRhdGlvbiBzdGFja3MuCisJICoKKwkgKiBX ZSBza2lwIHRoaXMgaW4gcGFyYWxsZWwgd29ya2VycyBiZWNhdXNlIHRoZWlyIHBlci1ub2RlIHN0 YXRzIGFyZQorCSAqIHJlcG9ydGVkIGluZGl2aWR1YWxseSB2aWEgRXhlY1BhcmFsbGVsUmVwb3J0 SW5zdHJ1bWVudGF0aW9uLCBhbmQgdGhlCisJICogbGVhZGVyJ3Mgb3duIEV4ZWNGaW5hbGl6ZU5v ZGVJbnN0cnVtZW50YXRpb24gaGFuZGxlcyBwcm9wYWdhdGlvbi4gIElmCisJICogd2UgYWNjdW11 bGF0ZWQgaGVyZSwgdGhlIGxlYWRlciB3b3VsZCBkb3VibGUtY291bnQ6IHdvcmtlciBwYXJlbnQg bm9kZXMKKwkgKiB3b3VsZCBhbHJlYWR5IGluY2x1ZGUgdGhlaXIgY2hpbGRyZW4ncyBzdGF0cywg YW5kIHRoZW4gdGhlIGxlYWRlcidzCisJICogYWNjdW11bGF0aW9uIHdvdWxkIGFkZCB0aGUgY2hp bGRyZW4gYWdhaW4uCisJICovCisJaWYgKHF1ZXJ5RGVzYy0+dG90YWx0aW1lICYmIGVzdGF0ZS0+ ZXNfaW5zdHJ1bWVudCAmJiAhSXNQYXJhbGxlbFdvcmtlcigpKQorCXsKKwkJRXhlY0ZpbmFsaXpl Tm9kZUluc3RydW1lbnRhdGlvbihxdWVyeURlc2MtPnBsYW5zdGF0ZSk7CisKKwkJRXhlY0ZpbmFs aXplVHJpZ2dlckluc3RydW1lbnRhdGlvbihlc3RhdGUpOworCX0KKwogCWlmIChxdWVyeURlc2Mt PnRvdGFsdGltZSkKLQkJSW5zdHJTdG9wKHF1ZXJ5RGVzYy0+dG90YWx0aW1lKTsKKwkJcXVlcnlE ZXNjLT50b3RhbHRpbWUgPSBJbnN0clF1ZXJ5U3RvcEZpbmFsaXplKHF1ZXJ5RGVzYy0+dG90YWx0 aW1lKTsKIAogCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKIApAQCAtMTQ5OSw2 ICsxNTM3LDMwIEBAIEV4ZWNHZXRBbmNlc3RvclJlc3VsdFJlbHMoRVN0YXRlICplc3RhdGUsIFJl c3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8pCiAJcmV0dXJuIHJlc3VsdFJlbEluZm8tPnJpX2Fu Y2VzdG9yUmVzdWx0UmVsczsKIH0KIAorc3RhdGljIHZvaWQKK0V4ZWNGaW5hbGl6ZVRyaWdnZXJJ bnN0cnVtZW50YXRpb24oRVN0YXRlICplc3RhdGUpCit7CisJTGlzdAkgICAqcmVscyA9IE5JTDsK KworCXJlbHMgPSBsaXN0X2NvbmNhdChyZWxzLCBlc3RhdGUtPmVzX3R1cGxlX3JvdXRpbmdfcmVz dWx0X3JlbGF0aW9ucyk7CisJcmVscyA9IGxpc3RfY29uY2F0KHJlbHMsIGVzdGF0ZS0+ZXNfb3Bl bmVkX3Jlc3VsdF9yZWxhdGlvbnMpOworCXJlbHMgPSBsaXN0X2NvbmNhdChyZWxzLCBlc3RhdGUt PmVzX3RyaWdfdGFyZ2V0X3JlbGF0aW9ucyk7CisKKwlmb3JlYWNoX25vZGUoUmVzdWx0UmVsSW5m bywgckluZm8sIHJlbHMpCisJeworCQlUcmlnZ2VySW5zdHJ1bWVudGF0aW9uICp0aSA9IHJJbmZv LT5yaV9UcmlnSW5zdHJ1bWVudDsKKworCQlpZiAodGkgPT0gTlVMTCB8fCBySW5mby0+cmlfVHJp Z0Rlc2MgPT0gTlVMTCkKKwkJCWNvbnRpbnVlOworCisJCWZvciAoaW50IG50ID0gMDsgbnQgPCBy SW5mby0+cmlfVHJpZ0Rlc2MtPm51bXRyaWdnZXJzOyBudCsrKQorCQl7CisJCQlpZiAodGlbbnRd Lmluc3RyLm5lZWRfc3RhY2spCisJCQkJSW5zdHJBY2N1bVN0YWNrKGluc3RyX3N0YWNrLmN1cnJl bnQsICZ0aVtudF0uaW5zdHIpOworCQl9CisJfQorfQorCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgkJRXhlY1Bv c3Rwcm9jZXNzUGxhbgogICoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQ YXJhbGxlbC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMKaW5kZXggYzE1 M2Q1YzFjM2IuLjczNTM0ZmE2YzdlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9l eGVjUGFyYWxsZWwuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYwpA QCAtNjk0LDcgKzY5NCw3IEBAIEV4ZWNJbml0UGFyYWxsZWxQbGFuKFBsYW5TdGF0ZSAqcGxhbnN0 YXRlLCBFU3RhdGUgKmVzdGF0ZSwKIAkgKgogCSAqIElmIEVYUExBSU4gaXMgbm90IGluIHVzZSBh bmQgdGhlcmUgYXJlIG5vIGV4dGVuc2lvbnMgbG9hZGVkIHRoYXQgY2FyZSwKIAkgKiB3ZSBjb3Vs ZCBza2lwIHRoaXMuICBCdXQgd2UgaGF2ZSBubyB3YXkgb2Yga25vd2luZyB3aGV0aGVyIGFueW9u ZSdzCi0JICogbG9va2luZyBhdCBwZ0J1ZmZlclVzYWdlLCBzbyBkbyBpdCB1bmNvbmRpdGlvbmFs bHkuCisJICogbG9va2luZyBhdCBpbnN0cnVtZW50YXRpb24sIHNvIGRvIGl0IHVuY29uZGl0aW9u YWxseS4KIAkgKi8KIAlzaG1fdG9jX2VzdGltYXRlX2NodW5rKCZwY3h0LT5lc3RpbWF0b3IsCiAJ CQkJCQkgICBtdWxfc2l6ZShzaXplb2YoQnVmZmVyVXNhZ2UpLCBwY3h0LT5ud29ya2VycykpOwpA QCAtMTA3NSw4ICsxMDc1LDIyIEBAIEV4ZWNQYXJhbGxlbFJldHJpZXZlSW5zdHJ1bWVudGF0aW9u KFBsYW5TdGF0ZSAqcGxhbnN0YXRlLAogCWluc3RydW1lbnQgPSBHZXRJbnN0cnVtZW50YXRpb25B cnJheShpbnN0cnVtZW50YXRpb24pOwogCWluc3RydW1lbnQgKz0gaSAqIGluc3RydW1lbnRhdGlv bi0+bnVtX3dvcmtlcnM7CiAJZm9yIChuID0gMDsgbiA8IGluc3RydW1lbnRhdGlvbi0+bnVtX3dv cmtlcnM7ICsrbikKKwl7CiAJCUluc3RyQWdnTm9kZShwbGFuc3RhdGUtPmluc3RydW1lbnQsICZp bnN0cnVtZW50W25dKTsKIAorCQkvKgorCQkgKiBBbHNvIGFkZCB3b3JrZXIgV0FMIHVzYWdlIHRv IHRoZSBnbG9iYWwgcGdXYWxVc2FnZSBjb3VudGVyLgorCQkgKgorCQkgKiBXaGVuIHBlci1ub2Rl IGluc3RydW1lbnRhdGlvbiBpcyBhY3RpdmUsIHBhcmFsbGVsIHdvcmtlcnMgc2tpcAorCQkgKiBF eGVjRmluYWxpemVOb2RlSW5zdHJ1bWVudGF0aW9uICh0byBhdm9pZCBkb3VibGUtY291bnRpbmcg aW4KKwkJICogRVhQTEFJTiksIHNvIHBlci1ub2RlIFdBTCBhY3Rpdml0eSBpcyBub3Qgcm9sbGVk IHVwIGludG8gdGhlCisJCSAqIHF1ZXJ5LWxldmVsIHN0YXRzIHRoYXQgSW5zdHJBY2N1bVBhcmFs bGVsUXVlcnkgcmVjZWl2ZXMuIFdpdGhvdXQKKwkJICogdGhpcywgcGdXYWxVc2FnZSB3b3VsZCB1 bmRlci1yZXBvcnQgV0FMIGdlbmVyYXRlZCBieSBwYXJhbGxlbAorCQkgKiB3b3JrZXJzIHdoZW4g aW5zdHJ1bWVudGF0aW9uIGlzIGFjdGl2ZS4KKwkJICovCisJCVdhbFVzYWdlQWRkKCZwZ1dhbFVz YWdlLCAmaW5zdHJ1bWVudFtuXS5pbnN0ci53YWx1c2FnZSk7CisJfQorCiAJLyoKIAkgKiBBbHNv IHN0b3JlIHRoZSBwZXItd29ya2VyIGRldGFpbC4KIAkgKgpAQCAtMTQ1Niw2ICsxNDcwLDcgQEAg dm9pZAogUGFyYWxsZWxRdWVyeU1haW4oZHNtX3NlZ21lbnQgKnNlZywgc2htX3RvYyAqdG9jKQog ewogCUZpeGVkUGFyYWxsZWxFeGVjdXRvclN0YXRlICpmcGVzOworCVF1ZXJ5SW5zdHJ1bWVudGF0 aW9uICppbnN0cjsKIAlCdWZmZXJVc2FnZSAqYnVmZmVyX3VzYWdlOwogCVdhbFVzYWdlICAgKndh bF91c2FnZTsKIAlEZXN0UmVjZWl2ZXIgKnJlY2VpdmVyOwpAQCAtMTUxNiw3ICsxNTMxLDcgQEAg UGFyYWxsZWxRdWVyeU1haW4oZHNtX3NlZ21lbnQgKnNlZywgc2htX3RvYyAqdG9jKQogCSAqIGxl YWRlciwgd2hpY2ggYWxzbyBkb2Vzbid0IGNvdW50IGJ1ZmZlciBhY2Nlc3NlcyBhbmQgV0FMIGFj dGl2aXR5IHRoYXQKIAkgKiBvY2N1ciBkdXJpbmcgZXhlY3V0b3Igc3RhcnR1cC4KIAkgKi8KLQlJ bnN0clN0YXJ0UGFyYWxsZWxRdWVyeSgpOworCWluc3RyID0gSW5zdHJTdGFydFBhcmFsbGVsUXVl cnkoKTsKIAogCS8qCiAJICogUnVuIHRoZSBwbGFuLiAgSWYgd2Ugc3BlY2lmaWVkIGEgdHVwbGUg Ym91bmQsIGJlIGNhcmVmdWwgbm90IHRvIGRlbWFuZApAQCAtMTUzMiw3ICsxNTQ3LDggQEAgUGFy YWxsZWxRdWVyeU1haW4oZHNtX3NlZ21lbnQgKnNlZywgc2htX3RvYyAqdG9jKQogCS8qIFJlcG9y dCBidWZmZXIvV0FMIHVzYWdlIGR1cmluZyBwYXJhbGxlbCBleGVjdXRpb24uICovCiAJYnVmZmVy X3VzYWdlID0gc2htX3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9LRVlfQlVGRkVSX1VTQUdFLCBm YWxzZSk7CiAJd2FsX3VzYWdlID0gc2htX3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9LRVlfV0FM X1VTQUdFLCBmYWxzZSk7Ci0JSW5zdHJFbmRQYXJhbGxlbFF1ZXJ5KCZidWZmZXJfdXNhZ2VbUGFy YWxsZWxXb3JrZXJOdW1iZXJdLAorCUluc3RyRW5kUGFyYWxsZWxRdWVyeShpbnN0ciwKKwkJCQkJ CSAgJmJ1ZmZlcl91c2FnZVtQYXJhbGxlbFdvcmtlck51bWJlcl0sCiAJCQkJCQkgICZ3YWxfdXNh Z2VbUGFyYWxsZWxXb3JrZXJOdW1iZXJdKTsKIAogCS8qIFJlcG9ydCBpbnN0cnVtZW50YXRpb24g ZGF0YSBpZiBhbnkgaW5zdHJ1bWVudGF0aW9uIG9wdGlvbnMgYXJlIHNldC4gKi8KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQcm9jbm9kZS5jIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3IvZXhlY1Byb2Nub2RlLmMKaW5kZXggMTMyZmUzN2VmNjAuLmIxMTgxNzE1YzMwIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUHJvY25vZGUuYworKysgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9leGVjUHJvY25vZGUuYwpAQCAtMTIzLDYgKzEyMyw4IEBACiBzdGF0aWMg VHVwbGVUYWJsZVNsb3QgKkV4ZWNQcm9jTm9kZUZpcnN0KFBsYW5TdGF0ZSAqbm9kZSk7CiBzdGF0 aWMgVHVwbGVUYWJsZVNsb3QgKkV4ZWNQcm9jTm9kZUluc3RyKFBsYW5TdGF0ZSAqbm9kZSk7CiBz dGF0aWMgYm9vbCBFeGVjU2h1dGRvd25Ob2RlX3dhbGtlcihQbGFuU3RhdGUgKm5vZGUsIHZvaWQg KmNvbnRleHQpOworc3RhdGljIGJvb2wgRXhlY1JlbWVtYmVyTm9kZUluc3RydW1lbnRhdGlvbl93 YWxrZXIoUGxhblN0YXRlICpub2RlLCB2b2lkICpjb250ZXh0KTsKK3N0YXRpYyBib29sIEV4ZWNG aW5hbGl6ZU5vZGVJbnN0cnVtZW50YXRpb25fd2Fsa2VyKFBsYW5TdGF0ZSAqbm9kZSwgdm9pZCAq Y29udGV4dCk7CiAKIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC03ODgsMTAgKzc5MCwxMCBAQCBF eGVjU2h1dGRvd25Ob2RlX3dhbGtlcihQbGFuU3RhdGUgKm5vZGUsIHZvaWQgKmNvbnRleHQpCiAJ ICogYXQgbGVhc3Qgb25jZSBhbHJlYWR5LiAgV2UgZG9uJ3QgZXhwZWN0IG11Y2ggQ1BVIGNvbnN1 bXB0aW9uIGR1cmluZwogCSAqIG5vZGUgc2h1dGRvd24sIGJ1dCBpbiB0aGUgY2FzZSBvZiBHYXRo ZXIgb3IgR2F0aGVyIE1lcmdlLCB3ZSBtYXkgc2h1dAogCSAqIGRvd24gd29ya2VycyBhdCB0aGlz IHN0YWdlLiAgSWYgc28sIHRoZWlyIGJ1ZmZlciB1c2FnZSB3aWxsIGdldAotCSAqIHByb3BhZ2F0 ZWQgaW50byBwZ0J1ZmZlclVzYWdlIGF0IHRoaXMgcG9pbnQsIGFuZCB3ZSB3YW50IHRvIG1ha2Ug c3VyZQotCSAqIHRoYXQgaXQgZ2V0cyBhc3NvY2lhdGVkIHdpdGggdGhlIEdhdGhlciBub2RlLiAg V2Ugc2tpcCB0aGlzIGlmIHRoZSBub2RlCi0JICogaGFzIG5ldmVyIGJlZW4gZXhlY3V0ZWQsIHNv IGFzIHRvIGF2b2lkIGluY29ycmVjdGx5IG1ha2luZyBpdCBhcHBlYXIKLQkgKiB0aGF0IGl0IGhh cy4KKwkgKiBwcm9wYWdhdGVkIGludG8gdGhlIGN1cnJlbnQgaW5zdHJ1bWVudGF0aW9uIHN0YWNr IGVudHJ5IGF0IHRoaXMgcG9pbnQsCisJICogYW5kIHdlIHdhbnQgdG8gbWFrZSBzdXJlIHRoYXQg aXQgZ2V0cyBhc3NvY2lhdGVkIHdpdGggdGhlIEdhdGhlciBub2RlLgorCSAqIFdlIHNraXAgdGhp cyBpZiB0aGUgbm9kZSBoYXMgbmV2ZXIgYmVlbiBleGVjdXRlZCwgc28gYXMgdG8gYXZvaWQKKwkg KiBpbmNvcnJlY3RseSBtYWtpbmcgaXQgYXBwZWFyIHRoYXQgaXQgaGFzLgogCSAqLwogCWlmIChu b2RlLT5pbnN0cnVtZW50ICYmIG5vZGUtPmluc3RydW1lbnQtPnJ1bm5pbmcpCiAJCUluc3RyU3Rh cnROb2RlKG5vZGUtPmluc3RydW1lbnQpOwpAQCAtODI5LDYgKzgzMSw4MCBAQCBFeGVjU2h1dGRv d25Ob2RlX3dhbGtlcihQbGFuU3RhdGUgKm5vZGUsIHZvaWQgKmNvbnRleHQpCiAJcmV0dXJuIGZh bHNlOwogfQogCisvKgorICogRXhlY1JlbWVtYmVyTm9kZUluc3RydW1lbnRhdGlvbgorICoKKyAq IFJlZ2lzdGVyIGFsbCBwZXItbm9kZSBpbnN0cnVtZW50YXRpb24gZW50cmllcyBhcyB1bmZpbmFs aXplZCBjaGlsZHJlbiBvZgorICogdGhlIGV4ZWN1dG9yJ3MgaW5zdHJ1bWVudGF0aW9uLiBUaGlz IGlzIG5lZWRlZCBmb3IgYWJvcnQgcmVjb3Zlcnk6IGlmIHRoZQorICogZXhlY3V0b3IgYWJvcnRz LCB3ZSBuZWVkIHRvIHdhbGsgZWFjaCBwZXItbm9kZSBlbnRyeSB0byByZWNvdmVyIGJ1ZmZlci9X QUwKKyAqIGRhdGEgZnJvbSBub2RlcyB0aGF0IG5ldmVyIGdvdCBmaW5hbGl6ZWQsIHRoYXQgc29t ZW9uZSBtaWdodCBiZSBpbnRlcmVzdGVkCisgKiBpbiBhcyBhbiBhZ2dyZWdhdGUuCisgKi8KK3Zv aWQKK0V4ZWNSZW1lbWJlck5vZGVJbnN0cnVtZW50YXRpb24oUGxhblN0YXRlICpub2RlLCBRdWVy eUluc3RydW1lbnRhdGlvbiAqcGFyZW50KQoreworCSh2b2lkKSBFeGVjUmVtZW1iZXJOb2RlSW5z dHJ1bWVudGF0aW9uX3dhbGtlcihub2RlLCBwYXJlbnQpOworfQorCitzdGF0aWMgYm9vbAorRXhl Y1JlbWVtYmVyTm9kZUluc3RydW1lbnRhdGlvbl93YWxrZXIoUGxhblN0YXRlICpub2RlLCB2b2lk ICpjb250ZXh0KQoreworCVF1ZXJ5SW5zdHJ1bWVudGF0aW9uICpwYXJlbnQgPSAoUXVlcnlJbnN0 cnVtZW50YXRpb24gKikgY29udGV4dDsKKworCUFzc2VydChwYXJlbnQgIT0gTlVMTCk7CisKKwlp ZiAobm9kZSA9PSBOVUxMKQorCQlyZXR1cm4gZmFsc2U7CisKKwlpZiAobm9kZS0+aW5zdHJ1bWVu dCkKKwkJSW5zdHJRdWVyeVJlbWVtYmVyTm9kZShwYXJlbnQsIG5vZGUtPmluc3RydW1lbnQpOwor CisJcmV0dXJuIHBsYW5zdGF0ZV90cmVlX3dhbGtlcihub2RlLCBFeGVjUmVtZW1iZXJOb2RlSW5z dHJ1bWVudGF0aW9uX3dhbGtlciwgY29udGV4dCk7Cit9CisKKy8qCisgKiBFeGVjRmluYWxpemVO b2RlSW5zdHJ1bWVudGF0aW9uCisgKgorICogQWNjdW11bGF0ZSBpbnN0cnVtZW50YXRpb24gc3Rh dHMgZnJvbSBhbGwgZXhlY3V0aW9uIG5vZGVzIHRvIHRoZWlyIHJlc3BlY3RpdmUKKyAqIHBhcmVu dHMgKG9yIHRoZSBvcmlnaW5hbCBwYXJlbnQgaW5zdHJ1bWVudGF0aW9uKS4KKyAqCisgKiBUaGlz IG11c3QgcnVuIGFmdGVyIHRoZSBjbGVhbnVwIGRvbmUgYnkgRXhlY1NodXRkb3duTm9kZSwgYW5k IG5vdCByZWx5IG9uIGFueQorICogcmVzb3VyY2VzIGNsZWFuZWQgdXAgYnkgaXQuIFdlIGFsc28g ZXhwZWN0IHNodXRkb3duIGFjdGlvbnMgdG8gaGF2ZSBvY2N1cnJlZCwKKyAqIGUuZy4gcGFyYWxs ZWwgd29ya2VyIGluc3RydW1lbnRhdGlvbiB0byBoYXZlIGJlZW4gYWRkZWQgdG8gdGhlIGxlYWRl ci4KKyAqLwordm9pZAorRXhlY0ZpbmFsaXplTm9kZUluc3RydW1lbnRhdGlvbihQbGFuU3RhdGUg Km5vZGUpCit7CisJKHZvaWQpIEV4ZWNGaW5hbGl6ZU5vZGVJbnN0cnVtZW50YXRpb25fd2Fsa2Vy KG5vZGUsIGluc3RyX3N0YWNrLmN1cnJlbnQpOworfQorCitzdGF0aWMgYm9vbAorRXhlY0ZpbmFs aXplTm9kZUluc3RydW1lbnRhdGlvbl93YWxrZXIoUGxhblN0YXRlICpub2RlLCB2b2lkICpjb250 ZXh0KQoreworCUluc3RydW1lbnRhdGlvbiAqcGFyZW50ID0gKEluc3RydW1lbnRhdGlvbiAqKSBj b250ZXh0OworCisJQXNzZXJ0KHBhcmVudCAhPSBOVUxMKTsKKworCWlmIChub2RlID09IE5VTEwp CisJCXJldHVybiBmYWxzZTsKKworCS8qCisJICogUmVjdXJzZSBpbnRvIGNoaWxkcmVuIGZpcnN0 IChib3R0b20tdXAgYWNjdW11bGF0aW9uKSwgcGFzc2luZyBvdXIKKwkgKiBpbnN0cnVtZW50YXRp b24gYXMgdGhlIHBhcmVudCBjb250ZXh0LiAgVGhpcyBlbnN1cmVzIGNoaWxkcmVuIGNhbgorCSAq IGFjY3VtdWxhdGUgdG8gdXMgZXZlbiBpZiB0aGV5IHdlcmUgbmV2ZXIgZXhlY3V0ZWQgYnkgdGhl IGxlYWRlciAoZS5nLgorCSAqIG5vZGVzIGJlbmVhdGggR2F0aGVyIHRoYXQgb25seSB3b3JrZXJz IHJhbikuCisJICovCisJcGxhbnN0YXRlX3RyZWVfd2Fsa2VyKG5vZGUsIEV4ZWNGaW5hbGl6ZU5v ZGVJbnN0cnVtZW50YXRpb25fd2Fsa2VyLAorCQkJCQkJICBub2RlLT5pbnN0cnVtZW50ID8gJm5v ZGUtPmluc3RydW1lbnQtPmluc3RyIDogcGFyZW50KTsKKworCWlmICghbm9kZS0+aW5zdHJ1bWVu dCkKKwkJcmV0dXJuIGZhbHNlOworCisJbm9kZS0+aW5zdHJ1bWVudCA9IEluc3RyRmluYWxpemVO b2RlKG5vZGUtPmluc3RydW1lbnQsIHBhcmVudCk7CisKKwlyZXR1cm4gZmFsc2U7Cit9CisKIC8q CiAgKiBFeGVjU2V0VHVwbGVCb3VuZAogICoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL2luc3RydW1lbnQuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2luc3RydW1lbnQuYwppbmRl eCA2YTRhMDhlYmIwYy4uZDgwYzlmZjJkNDEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL2luc3RydW1lbnQuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9pbnN0cnVtZW50LmMK QEAgLTE2LDMwICsxNiwzNSBAQAogI2luY2x1ZGUgPHVuaXN0ZC5oPgogCiAjaW5jbHVkZSAiZXhl Y3V0b3IvaW5zdHJ1bWVudC5oIgorI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCisjaW5jbHVk ZSAidXRpbHMvcmVzb3duZXIuaCIKIAotQnVmZmVyVXNhZ2UgcGdCdWZmZXJVc2FnZTsKLXN0YXRp YyBCdWZmZXJVc2FnZSBzYXZlX3BnQnVmZmVyVXNhZ2U7CiBXYWxVc2FnZQlwZ1dhbFVzYWdlOwot c3RhdGljIFdhbFVzYWdlIHNhdmVfcGdXYWxVc2FnZTsKK0luc3RydW1lbnRhdGlvbiBpbnN0cl90 b3A7CitJbnN0clN0YWNrU3RhdGUgaW5zdHJfc3RhY2sgPSB7MCwgMCwgTlVMTCwgJmluc3RyX3Rv cH07CiAKLXN0YXRpYyB2b2lkIEJ1ZmZlclVzYWdlQWRkKEJ1ZmZlclVzYWdlICpkc3QsIGNvbnN0 IEJ1ZmZlclVzYWdlICphZGQpOwotc3RhdGljIHZvaWQgV2FsVXNhZ2VBZGQoV2FsVXNhZ2UgKmRz dCwgV2FsVXNhZ2UgKmFkZCk7Ci0KLQotLyogR2VuZXJhbCBwdXJwb3NlIGluc3RydW1lbnRhdGlv biBoYW5kbGluZyAqLwotSW5zdHJ1bWVudGF0aW9uICoKLUluc3RyQWxsb2MoaW50IGluc3RydW1l bnRfb3B0aW9ucykKK3ZvaWQKK0luc3RyU3RhY2tHcm93KHZvaWQpCiB7Ci0JSW5zdHJ1bWVudGF0 aW9uICppbnN0ciA9IHBhbGxvYzAoc2l6ZW9mKEluc3RydW1lbnRhdGlvbikpOwotCUluc3RySW5p dE9wdGlvbnMoaW5zdHIsIGluc3RydW1lbnRfb3B0aW9ucyk7Ci0JcmV0dXJuIGluc3RyOworCWlm IChpbnN0cl9zdGFjay5lbnRyaWVzID09IE5VTEwpCisJeworCQlpbnN0cl9zdGFjay5zdGFja19z cGFjZSA9IDEwOwkvKiBBbGxvY2F0ZSBzdWZmaWNpZW50IGluaXRpYWwgc3BhY2UKKwkJCQkJCQkJ CQkgKiBmb3IgdHlwaWNhbCBhY3Rpdml0eSAqLworCQlpbnN0cl9zdGFjay5lbnRyaWVzID0gTWVt b3J5Q29udGV4dEFsbG9jKFRvcE1lbW9yeUNvbnRleHQsCisJCQkJCQkJCQkJCQkgc2l6ZW9mKElu c3RydW1lbnRhdGlvbiAqKSAqIGluc3RyX3N0YWNrLnN0YWNrX3NwYWNlKTsKKwl9CisJZWxzZQor CXsKKwkJaW5zdHJfc3RhY2suc3RhY2tfc3BhY2UgKj0gMjsKKwkJaW5zdHJfc3RhY2suZW50cmll cyA9IHJlcGFsbG9jX2FycmF5KGluc3RyX3N0YWNrLmVudHJpZXMsIEluc3RydW1lbnRhdGlvbiAq LCBpbnN0cl9zdGFjay5zdGFja19zcGFjZSk7CisJfQogfQogCisvKiBHZW5lcmFsIHB1cnBvc2Ug aW5zdHJ1bWVudGF0aW9uIGhhbmRsaW5nICovCiB2b2lkCiBJbnN0ckluaXRPcHRpb25zKEluc3Ry dW1lbnRhdGlvbiAqaW5zdHIsIGludCBpbnN0cnVtZW50X29wdGlvbnMpCiB7Ci0JaW5zdHItPm5l ZWRfYnVmdXNhZ2UgPSAoaW5zdHJ1bWVudF9vcHRpb25zICYgSU5TVFJVTUVOVF9CVUZGRVJTKSAh PSAwOwotCWluc3RyLT5uZWVkX3dhbHVzYWdlID0gKGluc3RydW1lbnRfb3B0aW9ucyAmIElOU1RS VU1FTlRfV0FMKSAhPSAwOworCWluc3RyLT5uZWVkX3N0YWNrID0gKGluc3RydW1lbnRfb3B0aW9u cyAmIChJTlNUUlVNRU5UX0JVRkZFUlMgfCBJTlNUUlVNRU5UX1dBTCkpICE9IDA7CiAJaW5zdHIt Pm5lZWRfdGltZXIgPSAoaW5zdHJ1bWVudF9vcHRpb25zICYgSU5TVFJVTUVOVF9USU1FUikgIT0g MDsKIH0KIApAQCAtNTQsMzggKzU5LDI1NyBAQCBJbnN0clN0YXJ0KEluc3RydW1lbnRhdGlvbiAq aW5zdHIpCiAJCQlJTlNUUl9USU1FX1NFVF9DVVJSRU5UKGluc3RyLT5zdGFydHRpbWUpOwogCX0K IAotCWlmIChpbnN0ci0+bmVlZF9idWZ1c2FnZSkKLQkJaW5zdHItPmJ1ZnVzYWdlX3N0YXJ0ID0g cGdCdWZmZXJVc2FnZTsKKwlpZiAoaW5zdHItPm5lZWRfc3RhY2spCisJCUluc3RyUHVzaFN0YWNr KGluc3RyKTsKK30KKworc3RhdGljIHZvaWQKK0luc3RyU3RvcFRpbWVyKEluc3RydW1lbnRhdGlv biAqaW5zdHIpCit7CisJaW5zdHJfdGltZQllbmR0aW1lOworCisJLyogbGV0J3MgdXBkYXRlIHRo ZSB0aW1lIG9ubHkgaWYgdGhlIHRpbWVyIHdhcyByZXF1ZXN0ZWQgKi8KKwlpZiAoSU5TVFJfVElN RV9JU19aRVJPKGluc3RyLT5zdGFydHRpbWUpKQorCQllbG9nKEVSUk9SLCAiSW5zdHJTdG9wIGNh bGxlZCB3aXRob3V0IHN0YXJ0Iik7CiAKLQlpZiAoaW5zdHItPm5lZWRfd2FsdXNhZ2UpCi0JCWlu c3RyLT53YWx1c2FnZV9zdGFydCA9IHBnV2FsVXNhZ2U7CisJSU5TVFJfVElNRV9TRVRfQ1VSUkVO VChlbmR0aW1lKTsKKwlJTlNUUl9USU1FX0FDQ1VNX0RJRkYoaW5zdHItPnRvdGFsLCBlbmR0aW1l LCBpbnN0ci0+c3RhcnR0aW1lKTsKKworCUlOU1RSX1RJTUVfU0VUX1pFUk8oaW5zdHItPnN0YXJ0 dGltZSk7CiB9CiAKIHZvaWQKIEluc3RyU3RvcChJbnN0cnVtZW50YXRpb24gKmluc3RyKQogewot CWluc3RyX3RpbWUJZW5kdGltZTsKKwlpZiAoaW5zdHItPm5lZWRfdGltZXIpCisJCUluc3RyU3Rv cFRpbWVyKGluc3RyKTsKKworCWlmIChpbnN0ci0+bmVlZF9zdGFjaykKKwkJSW5zdHJQb3BTdGFj ayhpbnN0cik7Cit9CisKKy8qCisgKiBTdG9wcyBpbnN0cnVtZW50YXRpb24sIGZpbmFsaXplcyB0 aGUgc3RhY2sgZW50cnkgYW5kIGFjY3VtdWxhdGVzIHRvIGl0cyBwYXJlbnQuCisgKgorICogTm90 ZSB0aGF0IHRoaXMgaW50ZW50aW9uYWxseSBhbGxvd3MgcGFzc2luZyBhIHN0YWNrIHRoYXQgaXMg bm90IHRoZSBjdXJyZW50CisgKiB0b3AsIGFzIGNhbiBoYXBwZW4gd2l0aCBQR19GSU5BTExZLCBv ciByZXNvdXJjZSBvd25lcnMsIHdoaWNoIGRvbid0IGhhdmUgYQorICogZ3VhcmFudGVlZCBjbGVh bnVwIG9yZGVyLgorICoKKyAqIFdlIGFyZSBjYXJlZnVsIGhlcmUgdG8gYWNoaWV2ZSB0d28gZ29h bHM6CisgKgorICogMSkgUmVzZXQgdGhlIHN0YWNrIHRvIHRoZSBwYXJlbnQgb2Ygd2hpY2hldmVy IG9mIHRoZSByZWxlYXNlZCBzdGFjayBlbnRyaWVzCisgKiAgICBoYXMgdGhlIGxvd2VzdCBpbmRl eAorICogMikgQWNjdW11bGF0ZSBhbGwgaW5zdHJ1bWVudGF0aW9uIHRvIHRoZSBjdXJyZW50bHkg YWN0aXZlIGluc3RydW1lbnRhdGlvbiwKKyAqICAgIHNvIHRoYXQgY2FsbGVycyBnZXQgYSBjb21w bGV0ZSBwaWN0dXJlIG9mIGFjdGl2aXR5LCBldmVuIGFmdGVyIGFuIGFib3J0CisgKi8KK3ZvaWQK K0luc3RyU3RvcEZpbmFsaXplKEluc3RydW1lbnRhdGlvbiAqaW5zdHIpCit7CisJaW50CQkJaWR4 ID0gLTE7CisKKwlmb3IgKGludCBpID0gaW5zdHJfc3RhY2suc3RhY2tfc2l6ZSAtIDE7IGkgPj0g MDsgaS0tKQorCXsKKwkJaWYgKGluc3RyX3N0YWNrLmVudHJpZXNbaV0gPT0gaW5zdHIpCisJCXsK KwkJCWlkeCA9IGk7CisJCQlicmVhazsKKwkJfQorCX0KKworCWlmIChpZHggPj0gMCkKKwl7CisJ CXdoaWxlIChpbnN0cl9zdGFjay5zdGFja19zaXplID4gaWR4ICsgMSkKKwkJCWluc3RyX3N0YWNr LnN0YWNrX3NpemUtLTsKKworCQlJbnN0clBvcFN0YWNrKGluc3RyKTsKKwl9CiAKLQkvKiBsZXQn cyB1cGRhdGUgdGhlIHRpbWUgb25seSBpZiB0aGUgdGltZXIgd2FzIHJlcXVlc3RlZCAqLwogCWlm IChpbnN0ci0+bmVlZF90aW1lcikKKwkJSW5zdHJTdG9wVGltZXIoaW5zdHIpOworCisJSW5zdHJB Y2N1bVN0YWNrKGluc3RyX3N0YWNrLmN1cnJlbnQsIGluc3RyKTsKK30KKworCisvKiBRdWVyeSBp bnN0cnVtZW50YXRpb24gaGFuZGxpbmcgKi8KKworLyoKKyAqIFVzZSBSZXNvdXJjZU93bmVyIG1l Y2hhbmlzbSB0byBjb3JyZWN0bHkgcmVzZXQgaW5zdHJfc3RhY2sgb24gYWJvcnQuCisgKi8KK3N0 YXRpYyB2b2lkIFJlc093bmVyUmVsZWFzZUluc3RydW1lbnRhdGlvbihEYXR1bSByZXMpOworc3Rh dGljIGNvbnN0IFJlc291cmNlT3duZXJEZXNjIGluc3RydW1lbnRhdGlvbl9yZXNvd25lcl9kZXNj ID0KK3sKKwkubmFtZSA9ICJpbnN0cnVtZW50YXRpb24iLAorCS5yZWxlYXNlX3BoYXNlID0gUkVT T1VSQ0VfUkVMRUFTRV9BRlRFUl9MT0NLUywKKwkucmVsZWFzZV9wcmlvcml0eSA9IFJFTEVBU0Vf UFJJT19JTlNUUlVNRU5UQVRJT04sCisJLlJlbGVhc2VSZXNvdXJjZSA9IFJlc093bmVyUmVsZWFz ZUluc3RydW1lbnRhdGlvbiwKKwkuRGVidWdQcmludCA9IE5VTEwsCQkJLyogZGVmYXVsdCBtZXNz YWdlIGlzIGZpbmUgKi8KK307CisKK3N0YXRpYyBpbmxpbmUgdm9pZAorUmVzb3VyY2VPd25lclJl bWVtYmVySW5zdHJ1bWVudGF0aW9uKFJlc291cmNlT3duZXIgb3duZXIsIFF1ZXJ5SW5zdHJ1bWVu dGF0aW9uICpxaW5zdHIpCit7CisJUmVzb3VyY2VPd25lclJlbWVtYmVyKG93bmVyLCBQb2ludGVy R2V0RGF0dW0ocWluc3RyKSwgJmluc3RydW1lbnRhdGlvbl9yZXNvd25lcl9kZXNjKTsKK30KKwor c3RhdGljIGlubGluZSB2b2lkCitSZXNvdXJjZU93bmVyRm9yZ2V0SW5zdHJ1bWVudGF0aW9uKFJl c291cmNlT3duZXIgb3duZXIsIFF1ZXJ5SW5zdHJ1bWVudGF0aW9uICpxaW5zdHIpCit7CisJUmVz b3VyY2VPd25lckZvcmdldChvd25lciwgUG9pbnRlckdldERhdHVtKHFpbnN0ciksICZpbnN0cnVt ZW50YXRpb25fcmVzb3duZXJfZGVzYyk7Cit9CisKK3N0YXRpYyB2b2lkCitSZXNPd25lclJlbGVh c2VJbnN0cnVtZW50YXRpb24oRGF0dW0gcmVzKQoreworCVF1ZXJ5SW5zdHJ1bWVudGF0aW9uICpx aW5zdHIgPSAoUXVlcnlJbnN0cnVtZW50YXRpb24gKikgRGF0dW1HZXRQb2ludGVyKHJlcyk7CisJ ZGxpc3RfbXV0YWJsZV9pdGVyIGl0ZXI7CisKKwkvKiBBY2N1bXVsYXRlIGRhdGEgZnJvbSBhbGwg dW5maW5hbGl6ZWQgY2hpbGQgbm9kZSBlbnRyaWVzLiAqLworCWRsaXN0X2ZvcmVhY2hfbW9kaWZ5 KGl0ZXIsICZxaW5zdHItPnVuZmluYWxpemVkX2NoaWxkcmVuKQogCXsKLQkJaWYgKElOU1RSX1RJ TUVfSVNfWkVSTyhpbnN0ci0+c3RhcnR0aW1lKSkKLQkJCWVsb2coRVJST1IsICJJbnN0clN0b3Ag Y2FsbGVkIHdpdGhvdXQgc3RhcnQiKTsKKwkJTm9kZUluc3RydW1lbnRhdGlvbiAqY2hpbGQgPSBk bGlzdF9jb250YWluZXIoTm9kZUluc3RydW1lbnRhdGlvbiwgdW5maW5hbGl6ZWRfbm9kZSwgaXRl ci5jdXIpOwogCi0JCUlOU1RSX1RJTUVfU0VUX0NVUlJFTlQoZW5kdGltZSk7Ci0JCUlOU1RSX1RJ TUVfQUNDVU1fRElGRihpbnN0ci0+dG90YWwsIGVuZHRpbWUsIGluc3RyLT5zdGFydHRpbWUpOwor CQlJbnN0ckFjY3VtU3RhY2soJnFpbnN0ci0+aW5zdHIsICZjaGlsZC0+aW5zdHIpOwogCi0JCUlO U1RSX1RJTUVfU0VUX1pFUk8oaW5zdHItPnN0YXJ0dGltZSk7CisJCS8qCisJCSAqIEZyZWUgTm9k ZUluc3RydW1lbnRhdGlvbiBub3csIHNpbmNlIEluc3RyRmluYWxpemVOb2RlIHdvbid0IGJlCisJ CSAqIGNhbGxlZAorCQkgKi8KKwkJcGZyZWUoY2hpbGQpOwogCX0KIAotCS8qIEFkZCBkZWx0YSBv ZiBidWZmZXIgdXNhZ2Ugc2luY2UgZW50cnkgdG8gbm9kZSdzIHRvdGFscyAqLwotCWlmIChpbnN0 ci0+bmVlZF9idWZ1c2FnZSkKLQkJQnVmZmVyVXNhZ2VBY2N1bURpZmYoJmluc3RyLT5idWZ1c2Fn ZSwKLQkJCQkJCQkgJnBnQnVmZmVyVXNhZ2UsICZpbnN0ci0+YnVmdXNhZ2Vfc3RhcnQpOworCS8q IEVuc3VyZSB0aGUgc3RhY2sgaXMgcmVzZXQgYXMgZXhwZWN0ZWQsIGFuZCB3ZSBhY2N1bXVsYXRl IHRvIHRoZSBwYXJlbnQgKi8KKwlJbnN0clN0b3BGaW5hbGl6ZSgmcWluc3RyLT5pbnN0cik7CisK KwkvKiBGcmVlIFF1ZXJ5SW5zdHJ1bWVudGF0aW9uIG5vdywgc2luY2UgSW5zdHJTdG9wIHdvbid0 IGJlIGNhbGxlZCAqLworCXBmcmVlKHFpbnN0cik7Cit9CisKK1F1ZXJ5SW5zdHJ1bWVudGF0aW9u ICoKK0luc3RyUXVlcnlBbGxvYyhpbnQgaW5zdHJ1bWVudF9vcHRpb25zKQoreworCVF1ZXJ5SW5z dHJ1bWVudGF0aW9uICppbnN0cjsKKworCS8qCisJICogSWYgbmVlZGVkLCBhbGxvY2F0ZSBpbiBU b3BNZW1vcnlDb250ZXh0IHNvIHRoYXQgdGhlIEluc3RydW1lbnRhdGlvbgorCSAqIHN1cnZpdmVz IHRyYW5zYWN0aW9uIGFib3J0IOKAlCBSZXNvdXJjZU93bmVyIHJlbGVhc2UgbmVlZHMgdG8gYWNj ZXNzCisJICogaXQuCisJICovCisJaWYgKChpbnN0cnVtZW50X29wdGlvbnMgJiAoSU5TVFJVTUVO VF9CVUZGRVJTIHwgSU5TVFJVTUVOVF9XQUwpKSAhPSAwKQorCQlpbnN0ciA9IE1lbW9yeUNvbnRl eHRBbGxvY1plcm8oVG9wTWVtb3J5Q29udGV4dCwgc2l6ZW9mKFF1ZXJ5SW5zdHJ1bWVudGF0aW9u KSk7CisJZWxzZQorCQlpbnN0ciA9IHBhbGxvYzAoc2l6ZW9mKFF1ZXJ5SW5zdHJ1bWVudGF0aW9u KSk7CisKKwlJbnN0ckluaXRPcHRpb25zKCZpbnN0ci0+aW5zdHIsIGluc3RydW1lbnRfb3B0aW9u cyk7CisJZGxpc3RfaW5pdCgmaW5zdHItPnVuZmluYWxpemVkX2NoaWxkcmVuKTsKKworCXJldHVy biBpbnN0cjsKK30KKwordm9pZAorSW5zdHJRdWVyeVN0YXJ0KFF1ZXJ5SW5zdHJ1bWVudGF0aW9u ICpxaW5zdHIpCit7CisJSW5zdHJTdGFydCgmcWluc3RyLT5pbnN0cik7CisKKwlpZiAocWluc3Ry LT5pbnN0ci5uZWVkX3N0YWNrKQorCXsKKwkJQXNzZXJ0KEN1cnJlbnRSZXNvdXJjZU93bmVyICE9 IE5VTEwpOworCQlxaW5zdHItPm93bmVyID0gQ3VycmVudFJlc291cmNlT3duZXI7CisKKwkJUmVz b3VyY2VPd25lckVubGFyZ2UocWluc3RyLT5vd25lcik7CisJCVJlc291cmNlT3duZXJSZW1lbWJl ckluc3RydW1lbnRhdGlvbihxaW5zdHItPm93bmVyLCBxaW5zdHIpOworCX0KK30KKwordm9pZAor SW5zdHJRdWVyeVN0b3AoUXVlcnlJbnN0cnVtZW50YXRpb24gKnFpbnN0cikKK3sKKwlJbnN0clN0 b3AoJnFpbnN0ci0+aW5zdHIpOworCisJaWYgKHFpbnN0ci0+aW5zdHIubmVlZF9zdGFjaykKKwl7 CisJCUFzc2VydChxaW5zdHItPm93bmVyICE9IE5VTEwpOworCQlSZXNvdXJjZU93bmVyRm9yZ2V0 SW5zdHJ1bWVudGF0aW9uKHFpbnN0ci0+b3duZXIsIHFpbnN0cik7CisJCXFpbnN0ci0+b3duZXIg PSBOVUxMOworCX0KK30KKworUXVlcnlJbnN0cnVtZW50YXRpb24gKgorSW5zdHJRdWVyeVN0b3BG aW5hbGl6ZShRdWVyeUluc3RydW1lbnRhdGlvbiAqcWluc3RyKQoreworCVF1ZXJ5SW5zdHJ1bWVu dGF0aW9uICpjb3B5OworCisJSW5zdHJTdG9wRmluYWxpemUoJnFpbnN0ci0+aW5zdHIpOworCisJ aWYgKCFxaW5zdHItPmluc3RyLm5lZWRfc3RhY2spCisJCXJldHVybiBxaW5zdHI7CisKKwlBc3Nl cnQocWluc3RyLT5vd25lciAhPSBOVUxMKTsKKwlSZXNvdXJjZU93bmVyRm9yZ2V0SW5zdHJ1bWVu dGF0aW9uKHFpbnN0ci0+b3duZXIsIHFpbnN0cik7CisJcWluc3RyLT5vd25lciA9IE5VTEw7CisK KwkvKgorCSAqIENvcHkgdG8gdGhlIGN1cnJlbnQgbWVtb3J5IGNvbnRleHQgc28gdGhlIGNhbGxl ciBkb2Vzbid0IG5lZWQgdG8KKwkgKiBleHBsaWNpdGx5IGZyZWUgdGhlIFRvcE1lbW9yeUNvbnRl eHQgYWxsb2NhdGlvbi4KKwkgKi8KKwljb3B5ID0gcGFsbG9jKHNpemVvZihRdWVyeUluc3RydW1l bnRhdGlvbikpOworCW1lbWNweShjb3B5LCBxaW5zdHIsIHNpemVvZihRdWVyeUluc3RydW1lbnRh dGlvbikpOworCXBmcmVlKHFpbnN0cik7CisJcmV0dXJuIGNvcHk7Cit9CisKKy8qCisgKiBSZWdp c3RlciBhIGNoaWxkIE5vZGVJbnN0cnVtZW50YXRpb24gZW50cnkgZm9yIGFib3J0IHByb2Nlc3Np bmcuCisgKgorICogT24gYWJvcnQsIFJlc093bmVyUmVsZWFzZUluc3RydW1lbnRhdGlvbiB3aWxs IHdhbGsgdGhlIHBhcmVudCdzIGxpc3QgdG8KKyAqIHJlY292ZXIgYnVmZmVyL1dBTCBkYXRhIGZy b20gZW50cmllcyB0aGF0IHdlcmUgbmV2ZXIgZmluYWxpemVkLCBpbiBvcmRlciBmb3IKKyAqIGFn Z3JlZ2F0ZSB0b3RhbHMgdG8gYmUgYWNjdXJhdGUgZGVzcGl0ZSB0aGUgcXVlcnkgZXJyb3Jpbmcg b3V0LgorICovCit2b2lkCitJbnN0clF1ZXJ5UmVtZW1iZXJOb2RlKFF1ZXJ5SW5zdHJ1bWVudGF0 aW9uICpwYXJlbnQsIE5vZGVJbnN0cnVtZW50YXRpb24gKmNoaWxkKQoreworCWlmIChjaGlsZC0+ aW5zdHIubmVlZF9zdGFjaykKKwkJZGxpc3RfcHVzaF9oZWFkKCZwYXJlbnQtPnVuZmluYWxpemVk X2NoaWxkcmVuLCAmY2hpbGQtPnVuZmluYWxpemVkX25vZGUpOworfQorCisvKiBzdGFydCBpbnN0 cnVtZW50YXRpb24gZHVyaW5nIHBhcmFsbGVsIGV4ZWN1dG9yIHN0YXJ0dXAgKi8KK1F1ZXJ5SW5z dHJ1bWVudGF0aW9uICoKK0luc3RyU3RhcnRQYXJhbGxlbFF1ZXJ5KHZvaWQpCit7CisJUXVlcnlJ bnN0cnVtZW50YXRpb24gKnFpbnN0ciA9IEluc3RyUXVlcnlBbGxvYyhJTlNUUlVNRU5UX0JVRkZF UlMgfCBJTlNUUlVNRU5UX1dBTCk7CisKKwlJbnN0clF1ZXJ5U3RhcnQocWluc3RyKTsKKwlyZXR1 cm4gcWluc3RyOworfQorCisvKiByZXBvcnQgdXNhZ2UgYWZ0ZXIgcGFyYWxsZWwgZXhlY3V0b3Ig c2h1dGRvd24gKi8KK3ZvaWQKK0luc3RyRW5kUGFyYWxsZWxRdWVyeShRdWVyeUluc3RydW1lbnRh dGlvbiAqcWluc3RyLCBCdWZmZXJVc2FnZSAqYnVmdXNhZ2UsIFdhbFVzYWdlICp3YWx1c2FnZSkK K3sKKwlxaW5zdHIgPSBJbnN0clF1ZXJ5U3RvcEZpbmFsaXplKHFpbnN0cik7CisJbWVtY3B5KGJ1 ZnVzYWdlLCAmcWluc3RyLT5pbnN0ci5idWZ1c2FnZSwgc2l6ZW9mKEJ1ZmZlclVzYWdlKSk7CisJ bWVtY3B5KHdhbHVzYWdlLCAmcWluc3RyLT5pbnN0ci53YWx1c2FnZSwgc2l6ZW9mKFdhbFVzYWdl KSk7Cit9CisKKy8qCisgKiBBY2N1bXVsYXRlIHdvcmsgZG9uZSBieSBwYXJhbGxlbCB3b3JrZXJz IGluIHRoZSBsZWFkZXIncyBzdGF0cy4KKyAqCisgKiBOb3RlIHRoYXQgd2hhdCBnZXRzIGFkZGVk IGhlcmUgZWZmZWN0aXZlbHkgZGVwZW5kcyBvbiB3aGV0aGVyIHBlci1ub2RlCisgKiBpbnN0cnVt ZW50YXRpb24gaXMgYWN0aXZlLiBJZiBpdCdzIGFjdGl2ZSB0aGUgcGFyYWxsZWwgd29ya2VyIGlu dGVudGlvbmFsbHkKKyAqIHNraXBzIEV4ZWNGaW5hbGl6ZU5vZGVJbnN0cnVtZW50YXRpb24gb24g ZXhlY3V0b3Igc2h1dGRvd24sIGJlY2F1c2UgaXQgd291bGQKKyAqIGNhdXNlIGRvdWJsZSBjb3Vu dGluZy4gSW5zdGVhZCwgdGhpcyBvbmx5IGFjY3VtdWxhdGVzIGFueSBleHRyYSBhY3Rpdml0eQor ICogb3V0c2lkZSBvZiBub2Rlcy4KKyAqCisgKiBPdGhlcndpc2UgdGhpcyBpcyByZXNwb25zaWJs ZSBmb3IgbWFraW5nIHN1cmUgdGhhdCB0aGUgY29tcGxldGUgcXVlcnkKKyAqIGFjdGl2aXR5IGlz IGFjY3VtdWxhdGVkLgorICovCit2b2lkCitJbnN0ckFjY3VtUGFyYWxsZWxRdWVyeShCdWZmZXJV c2FnZSAqYnVmdXNhZ2UsIFdhbFVzYWdlICp3YWx1c2FnZSkKK3sKKwlCdWZmZXJVc2FnZUFkZCgm aW5zdHJfc3RhY2suY3VycmVudC0+YnVmdXNhZ2UsIGJ1ZnVzYWdlKTsKKwlXYWxVc2FnZUFkZCgm aW5zdHJfc3RhY2suY3VycmVudC0+d2FsdXNhZ2UsIHdhbHVzYWdlKTsKIAotCWlmIChpbnN0ci0+ bmVlZF93YWx1c2FnZSkKLQkJV2FsVXNhZ2VBY2N1bURpZmYoJmluc3RyLT53YWx1c2FnZSwKLQkJ CQkJCSAgJnBnV2FsVXNhZ2UsICZpbnN0ci0+d2FsdXNhZ2Vfc3RhcnQpOworCVdhbFVzYWdlQWRk KCZwZ1dhbFVzYWdlLCB3YWx1c2FnZSk7CiB9CiAKIC8qIE5vZGUgaW5zdHJ1bWVudGF0aW9uIGhh bmRsaW5nICovCkBAIC05NCw3ICszMTgsMTkgQEAgSW5zdHJTdG9wKEluc3RydW1lbnRhdGlvbiAq aW5zdHIpCiBOb2RlSW5zdHJ1bWVudGF0aW9uICoKIEluc3RyQWxsb2NOb2RlKGludCBpbnN0cnVt ZW50X29wdGlvbnMsIGJvb2wgYXN5bmNfbW9kZSkKIHsKLQlOb2RlSW5zdHJ1bWVudGF0aW9uICpp bnN0ciA9IHBhbGxvYyhzaXplb2YoTm9kZUluc3RydW1lbnRhdGlvbikpOworCU5vZGVJbnN0cnVt ZW50YXRpb24gKmluc3RyOworCisJLyoKKwkgKiBJZiBuZWVkZWQsIGFsbG9jYXRlIGluIGEgY29u dGV4dCB0aGF0IHN1cHBvcnRzIHN0YWNrLWJhc2VkCisJICogaW5zdHJ1bWVudGF0aW9uIGFib3J0 IGhhbmRsaW5nLiBXZSBjYW4gdXRpbGl6ZSBUb3BUcmFuc2FjdGlvbkNvbnRleHQKKwkgKiBpbnN0 ZWFkIG9mIFRvcE1lbW9yeUNvbnRleHQgaGVyZSBiZWNhdXNlIG5vZGVzIGRvbid0IGdldCB1c2Vk IGZvcgorCSAqIHV0aWxpdHkgY29tbWFuZHMgdGhhdCByZXN0YXJ0IHRyYW5zYWN0aW9ucywgd2hp Y2ggd291bGQgcmVxdWlyZSBhCisJICogY29udGV4dCB0aGF0IHN1cnZpdmVzIGxvbmdlciAoRVhQ TEFJTiBBTkFMWVpFIGlzIGZpbmUpLgorCSAqLworCWlmICgoaW5zdHJ1bWVudF9vcHRpb25zICYg KElOU1RSVU1FTlRfQlVGRkVSUyB8IElOU1RSVU1FTlRfV0FMKSkgIT0gMCkKKwkJaW5zdHIgPSBN ZW1vcnlDb250ZXh0QWxsb2MoVG9wVHJhbnNhY3Rpb25Db250ZXh0LCBzaXplb2YoTm9kZUluc3Ry dW1lbnRhdGlvbikpOworCWVsc2UKKwkJaW5zdHIgPSBwYWxsb2Moc2l6ZW9mKE5vZGVJbnN0cnVt ZW50YXRpb24pKTsKIAogCUluc3RySW5pdE5vZGUoaW5zdHIsIGluc3RydW1lbnRfb3B0aW9ucyk7 CiAJaW5zdHItPmFzeW5jX21vZGUgPSBhc3luY19tb2RlOwpAQCAtMTE3LDYgKzM1Myw3IEBAIElu c3RyU3RhcnROb2RlKE5vZGVJbnN0cnVtZW50YXRpb24gKmluc3RyKQogCUluc3RyU3RhcnQoJmlu c3RyLT5pbnN0cik7CiB9CiAKKwogLyogRXhpdCBmcm9tIGEgcGxhbiBub2RlICovCiB2b2lkCiBJ bnN0clN0b3BOb2RlKE5vZGVJbnN0cnVtZW50YXRpb24gKmluc3RyLCBkb3VibGUgblR1cGxlcykK QEAgLTE0NiwxNCArMzgzLDEyIEBAIEluc3RyU3RvcE5vZGUoTm9kZUluc3RydW1lbnRhdGlvbiAq aW5zdHIsIGRvdWJsZSBuVHVwbGVzKQogCQlJTlNUUl9USU1FX1NFVF9aRVJPKGluc3RyLT5pbnN0 ci5zdGFydHRpbWUpOwogCX0KIAotCS8qIEFkZCBkZWx0YSBvZiBidWZmZXIgdXNhZ2Ugc2luY2Ug ZW50cnkgdG8gbm9kZSdzIHRvdGFscyAqLwotCWlmIChpbnN0ci0+aW5zdHIubmVlZF9idWZ1c2Fn ZSkKLQkJQnVmZmVyVXNhZ2VBY2N1bURpZmYoJmluc3RyLT5pbnN0ci5idWZ1c2FnZSwKLQkJCQkJ CQkgJnBnQnVmZmVyVXNhZ2UsICZpbnN0ci0+aW5zdHIuYnVmdXNhZ2Vfc3RhcnQpOwotCi0JaWYg KGluc3RyLT5pbnN0ci5uZWVkX3dhbHVzYWdlKQotCQlXYWxVc2FnZUFjY3VtRGlmZigmaW5zdHIt Pmluc3RyLndhbHVzYWdlLAotCQkJCQkJICAmcGdXYWxVc2FnZSwgJmluc3RyLT5pbnN0ci53YWx1 c2FnZV9zdGFydCk7CisJLyoKKwkgKiBPbmx5IHBvcCB0aGUgc3RhY2ssIGFjY3VtdWxhdGlvbiBy dW5zIGluCisJICogRXhlY0ZpbmFsaXplTm9kZUluc3RydW1lbnRhdGlvbgorCSAqLworCWlmIChp bnN0ci0+aW5zdHIubmVlZF9zdGFjaykKKwkJSW5zdHJQb3BTdGFjaygmaW5zdHItPmluc3RyKTsK IAogCS8qIElzIHRoaXMgdGhlIGZpcnN0IHR1cGxlIG9mIHRoaXMgY3ljbGU/ICovCiAJaWYgKCFp bnN0ci0+cnVubmluZykKQEAgLTE3Miw2ICs0MDcsMzEgQEAgSW5zdHJTdG9wTm9kZShOb2RlSW5z dHJ1bWVudGF0aW9uICppbnN0ciwgZG91YmxlIG5UdXBsZXMpCiAJfQogfQogCitOb2RlSW5zdHJ1 bWVudGF0aW9uICoKK0luc3RyRmluYWxpemVOb2RlKE5vZGVJbnN0cnVtZW50YXRpb24gKmluc3Ry LCBJbnN0cnVtZW50YXRpb24gKnBhcmVudCkKK3sKKwlOb2RlSW5zdHJ1bWVudGF0aW9uICpkc3Q7 CisKKwkvKiBJZiB3ZSBkaWRuJ3QgdXNlIHN0YWNrIGJhc2VkIGluc3RydW1lbnRhdGlvbiwgbm90 aGluZyB0byBiZSBkb25lICovCisJaWYgKCFpbnN0ci0+aW5zdHIubmVlZF9zdGFjaykKKwkJcmV0 dXJuIGluc3RyOworCisJLyogQ29weSBpbnRvIHBlci1xdWVyeSBtZW1vcnkgY29udGV4dCAqLwor CWRzdCA9IHBhbGxvYyhzaXplb2YoTm9kZUluc3RydW1lbnRhdGlvbikpOworCW1lbWNweShkc3Qs IGluc3RyLCBzaXplb2YoTm9kZUluc3RydW1lbnRhdGlvbikpOworCisJLyogQWNjdW11bGF0ZSBu b2RlJ3MgYnVmZmVyL1dBTCB1c2FnZSB0byB0aGUgcGFyZW50ICovCisJSW5zdHJBY2N1bVN0YWNr KHBhcmVudCwgJmRzdC0+aW5zdHIpOworCisJLyogVW5yZWdpc3RlciBmcm9tIHF1ZXJ5J3MgdW5m aW5hbGl6ZWQgbGlzdCBiZWZvcmUgZnJlZWluZyAqLworCWlmIChpbnN0ci0+aW5zdHIubmVlZF9z dGFjaykKKwkJZGxpc3RfZGVsZXRlKCZpbnN0ci0+dW5maW5hbGl6ZWRfbm9kZSk7CisKKwlwZnJl ZShpbnN0cik7CisKKwlyZXR1cm4gZHN0OworfQorCiAvKiBVcGRhdGUgdHVwbGUgY291bnQgKi8K IHZvaWQKIEluc3RyVXBkYXRlVHVwbGVDb3VudChOb2RlSW5zdHJ1bWVudGF0aW9uICppbnN0ciwg ZG91YmxlIG5UdXBsZXMpCkBAIC0xODgsOCArNDQ4LDggQEAgSW5zdHJFbmRMb29wKE5vZGVJbnN0 cnVtZW50YXRpb24gKmluc3RyKQogCWlmICghaW5zdHItPnJ1bm5pbmcpCiAJCXJldHVybjsKIAot CWlmICghSU5TVFJfVElNRV9JU19aRVJPKGluc3RyLT5pbnN0ci5zdGFydHRpbWUpKQotCQllbG9n KEVSUk9SLCAiSW5zdHJFbmRMb29wIGNhbGxlZCBvbiBydW5uaW5nIG5vZGUiKTsKKwkvKiBFbnN1 cmUgSW5zdHJOb2RlU3RvcCB3YXMgY2FsbGVkICovCisJQXNzZXJ0KElOU1RSX1RJTUVfSVNfWkVS TyhpbnN0ci0+aW5zdHIuc3RhcnR0aW1lKSk7CiAKIAkvKiBBY2N1bXVsYXRlIHBlci1jeWNsZSBz dGF0aXN0aWNzIGludG8gdG90YWxzICovCiAJSU5TVFJfVElNRV9BREQoaW5zdHItPnN0YXJ0dXAs IGluc3RyLT5maXJzdHR1cGxlKTsKQEAgLTIzMCwxMSArNDkwLDggQEAgSW5zdHJBZ2dOb2RlKE5v ZGVJbnN0cnVtZW50YXRpb24gKmRzdCwgTm9kZUluc3RydW1lbnRhdGlvbiAqYWRkKQogCWRzdC0+ bmZpbHRlcmVkMiArPSBhZGQtPm5maWx0ZXJlZDI7CiAKIAkvKiBBZGQgZGVsdGEgb2YgYnVmZmVy IHVzYWdlIHNpbmNlIGVudHJ5IHRvIG5vZGUncyB0b3RhbHMgKi8KLQlpZiAoZHN0LT5pbnN0ci5u ZWVkX2J1ZnVzYWdlKQotCQlCdWZmZXJVc2FnZUFkZCgmZHN0LT5pbnN0ci5idWZ1c2FnZSwgJmFk ZC0+aW5zdHIuYnVmdXNhZ2UpOwotCi0JaWYgKGRzdC0+aW5zdHIubmVlZF93YWx1c2FnZSkKLQkJ V2FsVXNhZ2VBZGQoJmRzdC0+aW5zdHIud2FsdXNhZ2UsICZhZGQtPmluc3RyLndhbHVzYWdlKTsK KwlpZiAoZHN0LT5pbnN0ci5uZWVkX3N0YWNrKQorCQlJbnN0ckFjY3VtU3RhY2soJmRzdC0+aW5z dHIsICZhZGQtPmluc3RyKTsKIH0KIAogLyogVHJpZ2dlciBpbnN0cnVtZW50YXRpb24gaGFuZGxp bmcgKi8KQEAgLTI1OSwzOCArNTE2LDI3IEBAIEluc3RyU3RhcnRUcmlnZ2VyKFRyaWdnZXJJbnN0 cnVtZW50YXRpb24gKnRnaW5zdHIpCiB2b2lkCiBJbnN0clN0b3BUcmlnZ2VyKFRyaWdnZXJJbnN0 cnVtZW50YXRpb24gKnRnaW5zdHIsIGludCBmaXJpbmdzKQogeworCS8qCisJICogVGhpcyB0cmln Z2VyIG1heSBiZSBjYWxsZWQgYWdhaW4sIHNvIHdlIGRvbid0IGZpbmFsaXplIGluc3RydW1lbnRh dGlvbgorCSAqIGhlcmUuIEFjY3VtdWxhdGlvbiB0byB0aGUgcGFyZW50IGhhcHBlbnMgYXQgRXhl Y3V0b3JGaW5pc2ggdGhyb3VnaAorCSAqIEV4ZWNGaW5hbGl6ZVRyaWdnZXJJbnN0cnVtZW50YXRp b24uCisJICovCiAJSW5zdHJTdG9wKCZ0Z2luc3RyLT5pbnN0cik7CiAJdGdpbnN0ci0+ZmlyaW5n cyArPSBmaXJpbmdzOwogfQogCi0vKiBub3RlIGN1cnJlbnQgdmFsdWVzIGR1cmluZyBwYXJhbGxl bCBleGVjdXRvciBzdGFydHVwICovCiB2b2lkCi1JbnN0clN0YXJ0UGFyYWxsZWxRdWVyeSh2b2lk KQorSW5zdHJBY2N1bVN0YWNrKEluc3RydW1lbnRhdGlvbiAqZHN0LCBJbnN0cnVtZW50YXRpb24g KmFkZCkKIHsKLQlzYXZlX3BnQnVmZmVyVXNhZ2UgPSBwZ0J1ZmZlclVzYWdlOwotCXNhdmVfcGdX YWxVc2FnZSA9IHBnV2FsVXNhZ2U7Ci19CisJQXNzZXJ0KGRzdCAhPSBOVUxMKTsKKwlBc3NlcnQo YWRkICE9IE5VTEwpOwogCi0vKiByZXBvcnQgdXNhZ2UgYWZ0ZXIgcGFyYWxsZWwgZXhlY3V0b3Ig c2h1dGRvd24gKi8KLXZvaWQKLUluc3RyRW5kUGFyYWxsZWxRdWVyeShCdWZmZXJVc2FnZSAqYnVm dXNhZ2UsIFdhbFVzYWdlICp3YWx1c2FnZSkKLXsKLQltZW1zZXQoYnVmdXNhZ2UsIDAsIHNpemVv ZihCdWZmZXJVc2FnZSkpOwotCUJ1ZmZlclVzYWdlQWNjdW1EaWZmKGJ1ZnVzYWdlLCAmcGdCdWZm ZXJVc2FnZSwgJnNhdmVfcGdCdWZmZXJVc2FnZSk7Ci0JbWVtc2V0KHdhbHVzYWdlLCAwLCBzaXpl b2YoV2FsVXNhZ2UpKTsKLQlXYWxVc2FnZUFjY3VtRGlmZih3YWx1c2FnZSwgJnBnV2FsVXNhZ2Us ICZzYXZlX3BnV2FsVXNhZ2UpOwotfQotCi0vKiBhY2N1bXVsYXRlIHdvcmsgZG9uZSBieSB3b3Jr ZXJzIGluIGxlYWRlcidzIHN0YXRzICovCi12b2lkCi1JbnN0ckFjY3VtUGFyYWxsZWxRdWVyeShC dWZmZXJVc2FnZSAqYnVmdXNhZ2UsIFdhbFVzYWdlICp3YWx1c2FnZSkKLXsKLQlCdWZmZXJVc2Fn ZUFkZCgmcGdCdWZmZXJVc2FnZSwgYnVmdXNhZ2UpOwotCVdhbFVzYWdlQWRkKCZwZ1dhbFVzYWdl LCB3YWx1c2FnZSk7CisJQnVmZmVyVXNhZ2VBZGQoJmRzdC0+YnVmdXNhZ2UsICZhZGQtPmJ1ZnVz YWdlKTsKKwlXYWxVc2FnZUFkZCgmZHN0LT53YWx1c2FnZSwgJmFkZC0+d2FsdXNhZ2UpOwogfQog CiAvKiBkc3QgKz0gYWRkICovCi1zdGF0aWMgdm9pZAordm9pZAogQnVmZmVyVXNhZ2VBZGQoQnVm ZmVyVXNhZ2UgKmRzdCwgY29uc3QgQnVmZmVyVXNhZ2UgKmFkZCkKIHsKIAlkc3QtPnNoYXJlZF9i bGtzX2hpdCArPSBhZGQtPnNoYXJlZF9ibGtzX2hpdDsKQEAgLTMxMSwzOSArNTU3LDkgQEAgQnVm ZmVyVXNhZ2VBZGQoQnVmZmVyVXNhZ2UgKmRzdCwgY29uc3QgQnVmZmVyVXNhZ2UgKmFkZCkKIAlJ TlNUUl9USU1FX0FERChkc3QtPnRlbXBfYmxrX3dyaXRlX3RpbWUsIGFkZC0+dGVtcF9ibGtfd3Jp dGVfdGltZSk7CiB9CiAKLS8qIGRzdCArPSBhZGQgLSBzdWIgKi8KKy8qIGRzdCArPSBhZGQgKi8K IHZvaWQKLUJ1ZmZlclVzYWdlQWNjdW1EaWZmKEJ1ZmZlclVzYWdlICpkc3QsCi0JCQkJCSBjb25z dCBCdWZmZXJVc2FnZSAqYWRkLAotCQkJCQkgY29uc3QgQnVmZmVyVXNhZ2UgKnN1YikKLXsKLQlk c3QtPnNoYXJlZF9ibGtzX2hpdCArPSBhZGQtPnNoYXJlZF9ibGtzX2hpdCAtIHN1Yi0+c2hhcmVk X2Jsa3NfaGl0OwotCWRzdC0+c2hhcmVkX2Jsa3NfcmVhZCArPSBhZGQtPnNoYXJlZF9ibGtzX3Jl YWQgLSBzdWItPnNoYXJlZF9ibGtzX3JlYWQ7Ci0JZHN0LT5zaGFyZWRfYmxrc19kaXJ0aWVkICs9 IGFkZC0+c2hhcmVkX2Jsa3NfZGlydGllZCAtIHN1Yi0+c2hhcmVkX2Jsa3NfZGlydGllZDsKLQlk c3QtPnNoYXJlZF9ibGtzX3dyaXR0ZW4gKz0gYWRkLT5zaGFyZWRfYmxrc193cml0dGVuIC0gc3Vi LT5zaGFyZWRfYmxrc193cml0dGVuOwotCWRzdC0+bG9jYWxfYmxrc19oaXQgKz0gYWRkLT5sb2Nh bF9ibGtzX2hpdCAtIHN1Yi0+bG9jYWxfYmxrc19oaXQ7Ci0JZHN0LT5sb2NhbF9ibGtzX3JlYWQg Kz0gYWRkLT5sb2NhbF9ibGtzX3JlYWQgLSBzdWItPmxvY2FsX2Jsa3NfcmVhZDsKLQlkc3QtPmxv Y2FsX2Jsa3NfZGlydGllZCArPSBhZGQtPmxvY2FsX2Jsa3NfZGlydGllZCAtIHN1Yi0+bG9jYWxf Ymxrc19kaXJ0aWVkOwotCWRzdC0+bG9jYWxfYmxrc193cml0dGVuICs9IGFkZC0+bG9jYWxfYmxr c193cml0dGVuIC0gc3ViLT5sb2NhbF9ibGtzX3dyaXR0ZW47Ci0JZHN0LT50ZW1wX2Jsa3NfcmVh ZCArPSBhZGQtPnRlbXBfYmxrc19yZWFkIC0gc3ViLT50ZW1wX2Jsa3NfcmVhZDsKLQlkc3QtPnRl bXBfYmxrc193cml0dGVuICs9IGFkZC0+dGVtcF9ibGtzX3dyaXR0ZW4gLSBzdWItPnRlbXBfYmxr c193cml0dGVuOwotCUlOU1RSX1RJTUVfQUNDVU1fRElGRihkc3QtPnNoYXJlZF9ibGtfcmVhZF90 aW1lLAotCQkJCQkJICBhZGQtPnNoYXJlZF9ibGtfcmVhZF90aW1lLCBzdWItPnNoYXJlZF9ibGtf cmVhZF90aW1lKTsKLQlJTlNUUl9USU1FX0FDQ1VNX0RJRkYoZHN0LT5zaGFyZWRfYmxrX3dyaXRl X3RpbWUsCi0JCQkJCQkgIGFkZC0+c2hhcmVkX2Jsa193cml0ZV90aW1lLCBzdWItPnNoYXJlZF9i bGtfd3JpdGVfdGltZSk7Ci0JSU5TVFJfVElNRV9BQ0NVTV9ESUZGKGRzdC0+bG9jYWxfYmxrX3Jl YWRfdGltZSwKLQkJCQkJCSAgYWRkLT5sb2NhbF9ibGtfcmVhZF90aW1lLCBzdWItPmxvY2FsX2Js a19yZWFkX3RpbWUpOwotCUlOU1RSX1RJTUVfQUNDVU1fRElGRihkc3QtPmxvY2FsX2Jsa193cml0 ZV90aW1lLAotCQkJCQkJICBhZGQtPmxvY2FsX2Jsa193cml0ZV90aW1lLCBzdWItPmxvY2FsX2Js a193cml0ZV90aW1lKTsKLQlJTlNUUl9USU1FX0FDQ1VNX0RJRkYoZHN0LT50ZW1wX2Jsa19yZWFk X3RpbWUsCi0JCQkJCQkgIGFkZC0+dGVtcF9ibGtfcmVhZF90aW1lLCBzdWItPnRlbXBfYmxrX3Jl YWRfdGltZSk7Ci0JSU5TVFJfVElNRV9BQ0NVTV9ESUZGKGRzdC0+dGVtcF9ibGtfd3JpdGVfdGlt ZSwKLQkJCQkJCSAgYWRkLT50ZW1wX2Jsa193cml0ZV90aW1lLCBzdWItPnRlbXBfYmxrX3dyaXRl X3RpbWUpOwotfQotCi0vKiBoZWxwZXIgZnVuY3Rpb25zIGZvciBXQUwgdXNhZ2UgYWNjdW11bGF0 aW9uICovCi1zdGF0aWMgdm9pZAotV2FsVXNhZ2VBZGQoV2FsVXNhZ2UgKmRzdCwgV2FsVXNhZ2Ug KmFkZCkKK1dhbFVzYWdlQWRkKFdhbFVzYWdlICpkc3QsIGNvbnN0IFdhbFVzYWdlICphZGQpCiB7 CiAJZHN0LT53YWxfYnl0ZXMgKz0gYWRkLT53YWxfYnl0ZXM7CiAJZHN0LT53YWxfcmVjb3JkcyAr PSBhZGQtPndhbF9yZWNvcmRzOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZm ZXIvYnVmbWdyLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZtZ3IuYwppbmRleCBk ZmEzN2U1ZWQ0NC4uNDFhMGJhYTM0NDkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2Uv YnVmZmVyL2J1Zm1nci5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1nci5j CkBAIC0xMjY5LDkgKzEyNjksOSBAQCBQaW5CdWZmZXJGb3JCbG9jayhSZWxhdGlvbiByZWwsCiAJ aWYgKHJlbCkKIAl7CiAJCS8qCi0JCSAqIFdoaWxlIHBnQnVmZmVyVXNhZ2UncyAicmVhZCIgY291 bnRlciBpc24ndCBidW1wZWQgdW5sZXNzIHdlIHJlYWNoCi0JCSAqIFdhaXRSZWFkQnVmZmVycygp IChzbywgbm90IGZvciBoaXRzLCBhbmQgbm90IGZvciBidWZmZXJzIHRoYXQgYXJlCi0JCSAqIHpl cm9lZCBpbnN0ZWFkKSwgdGhlIHBlci1yZWxhdGlvbiBzdGF0cyBhbHdheXMgY291bnQgdGhlbS4K KwkJICogV2hpbGUgdGhlIGN1cnJlbnQgYnVmZmVyIHVzYWdlICJyZWFkIiBjb3VudGVyIGlzbid0 IGJ1bXBlZCB1bmxlc3MKKwkJICogd2UgcmVhY2ggV2FpdFJlYWRCdWZmZXJzKCkgKHNvLCBub3Qg Zm9yIGhpdHMsIGFuZCBub3QgZm9yIGJ1ZmZlcnMKKwkJICogdGhhdCBhcmUgemVyb2VkIGluc3Rl YWQpLCB0aGUgcGVyLXJlbGF0aW9uIHN0YXRzIGFsd2F5cyBjb3VudCB0aGVtLgogCQkgKi8KIAkJ cGdzdGF0X2NvdW50X2J1ZmZlcl9yZWFkKHJlbCk7CiAJCWlmICgqZm91bmRQdHIpCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0YXRfaW8uYyBiL3NyYy9iYWNrZW5k L3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9pby5jCmluZGV4IDllN2E4OGVjMGQwLi42MDQwMGYwYzgx ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X2lvLmMKKysr IGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X2lvLmMKQEAgLTExNCw5ICsxMTQs OSBAQCBwZ3N0YXRfcHJlcGFyZV9pb190aW1lKGJvb2wgdHJhY2tfaW9fZ3VjKQogICogcGdfc3Rh dF9kYXRhYmFzZSBvbmx5IGNvdW50cyBibG9jayByZWFkIGFuZCB3cml0ZSB0aW1lcywgdGhlc2Ug YXJlIGRvbmUgZm9yCiAgKiBJT09QX1JFQUQsIElPT1BfV1JJVEUgYW5kIElPT1BfRVhURU5ELgog ICoKLSAqIHBnQnVmZmVyVXNhZ2UgaXMgdXNlZCBmb3IgRVhQTEFJTi4gIHBnQnVmZmVyVXNhZ2Ug aGFzIHdyaXRlIGFuZCByZWFkIHN0YXRzCi0gKiBmb3Igc2hhcmVkLCBsb2NhbCBhbmQgdGVtcG9y YXJ5IGJsb2Nrcy4gIHBnX3N0YXRfaW8gZG9lcyBub3QgdHJhY2sgdGhlCi0gKiBhY3Rpdml0eSBv ZiB0ZW1wb3JhcnkgYmxvY2tzLCBzbyB0aGVzZSBhcmUgaWdub3JlZCBoZXJlLgorICogRXhlY3V0 b3IgaW5zdHJ1bWVudGF0aW9uIGlzIHVzZWQgZm9yIEVYUExBSU4uIEJ1ZmZlciB1c2FnZSB0cmFj a2VkIHRoZXJlIGhhcworICogd3JpdGUgYW5kIHJlYWQgc3RhdHMgZm9yIHNoYXJlZCwgbG9jYWwg YW5kIHRlbXBvcmFyeSBibG9ja3MuIHBnX3N0YXRfaW8KKyAqIGRvZXMgbm90IHRyYWNrIHRoZSBh Y3Rpdml0eSBvZiB0ZW1wb3JhcnkgYmxvY2tzLCBzbyB0aGVzZSBhcmUgaWdub3JlZCBoZXJlLgog ICovCiB2b2lkCiBwZ3N0YXRfY291bnRfaW9fb3BfdGltZShJT09iamVjdCBpb19vYmplY3QsIElP Q29udGV4dCBpb19jb250ZXh0LCBJT09wIGlvX29wLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv ZXhlY3V0b3IvZXhlY2Rlc2MuaCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNkZXNjLmgKaW5k ZXggZDNhNTcyNDI4NDQuLjM0MDAyOWEyMDM0IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVj dXRvci9leGVjZGVzYy5oCisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNkZXNjLmgKQEAg LTUxLDggKzUxLDggQEAgdHlwZWRlZiBzdHJ1Y3QgUXVlcnlEZXNjCiAJLyogVGhpcyBmaWVsZCBp cyBzZXQgYnkgRXhlY3V0ZVBsYW4gKi8KIAlib29sCQlhbHJlYWR5X2V4ZWN1dGVkOwkvKiB0cnVl IGlmIHByZXZpb3VzbHkgZXhlY3V0ZWQgKi8KIAotCS8qIFRoaXMgaXMgYWx3YXlzIHNldCBOVUxM IGJ5IHRoZSBjb3JlIHN5c3RlbSwgYnV0IHBsdWdpbnMgY2FuIGNoYW5nZSBpdCAqLwotCXN0cnVj dCBJbnN0cnVtZW50YXRpb24gKnRvdGFsdGltZTsJLyogdG90YWwgdGltZSBzcGVudCBpbiBFeGVj dXRvclJ1biAqLworCS8qIFRoaXMgZmllbGQgaXMgc2V0IGJ5IEV4ZWN1dG9yUnVuLCBvciBwbHVn aW5zICovCisJc3RydWN0IFF1ZXJ5SW5zdHJ1bWVudGF0aW9uICp0b3RhbHRpbWU7IC8qIHRvdGFs IHRpbWUgc3BlbnQgaW4gRXhlY3V0b3JSdW4gKi8KIH0gUXVlcnlEZXNjOwogCiAvKiBpbiBwcXVl cnkuYyAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaCBiL3Ny Yy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmgKaW5kZXggMDY0ZGYwMTgxMWUuLjJmMGQxNmRi NTg2IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oCisrKyBiL3Ny Yy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmgKQEAgLTMwMSw2ICszMDEsOCBAQCBleHRlcm4g dm9pZCBFeGVjU2V0RXhlY1Byb2NOb2RlKFBsYW5TdGF0ZSAqbm9kZSwgRXhlY1Byb2NOb2RlTXRk IGZ1bmN0aW9uKTsKIGV4dGVybiBOb2RlICpNdWx0aUV4ZWNQcm9jTm9kZShQbGFuU3RhdGUgKm5v ZGUpOwogZXh0ZXJuIHZvaWQgRXhlY0VuZE5vZGUoUGxhblN0YXRlICpub2RlKTsKIGV4dGVybiB2 b2lkIEV4ZWNTaHV0ZG93bk5vZGUoUGxhblN0YXRlICpub2RlKTsKK2V4dGVybiB2b2lkIEV4ZWNS ZW1lbWJlck5vZGVJbnN0cnVtZW50YXRpb24oUGxhblN0YXRlICpub2RlLCBRdWVyeUluc3RydW1l bnRhdGlvbiAqcGFyZW50KTsKK2V4dGVybiB2b2lkIEV4ZWNGaW5hbGl6ZU5vZGVJbnN0cnVtZW50 YXRpb24oUGxhblN0YXRlICpub2RlKTsKIGV4dGVybiB2b2lkIEV4ZWNTZXRUdXBsZUJvdW5kKGlu dDY0IHR1cGxlc19uZWVkZWQsIFBsYW5TdGF0ZSAqY2hpbGRfbm9kZSk7CiAKIApkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvaW5zdHJ1bWVudC5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0 b3IvaW5zdHJ1bWVudC5oCmluZGV4IDExMzliZTgzMzNlLi5iOTJjYzY1ZjE1OSAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvaW5zdHJ1bWVudC5oCisrKyBiL3NyYy9pbmNsdWRlL2V4 ZWN1dG9yL2luc3RydW1lbnQuaApAQCAtMTMsNiArMTMsNyBAQAogI2lmbmRlZiBJTlNUUlVNRU5U X0gKICNkZWZpbmUgSU5TVFJVTUVOVF9ICiAKKyNpbmNsdWRlICJsaWIvaWxpc3QuaCIKICNpbmNs dWRlICJwb3J0YWJpbGl0eS9pbnN0cl90aW1lLmgiCiAKIApAQCAtNjgsMjkgKzY5LDc2IEBAIHR5 cGVkZWYgZW51bSBJbnN0cnVtZW50T3B0aW9uCiB9IEluc3RydW1lbnRPcHRpb247CiAKIC8qCi0g KiBHZW5lcmFsIHB1cnBvc2UgaW5zdHJ1bWVudGF0aW9uIHRoYXQgY2FuIGNhcHR1cmUgdGltZSBh bmQgV0FML2J1ZmZlciB1c2FnZQorICogSW5zdHJ1bWVudGF0aW9uIGJhc2UgY2xhc3MgZm9yIGNh cHR1cmluZyB0aW1lIGFuZCBXQUwvYnVmZmVyIHVzYWdlCiAgKgotICogSW5pdGlhbGl6ZWQgdGhy b3VnaCBJbnN0ckFsbG9jLCBmb2xsb3dlZCBieSBvbmUgb3IgbW9yZSBjYWxscyB0byBhIHBhaXIg b2YKLSAqIEluc3RyU3RhcnQvSW5zdHJTdG9wIChhY3Rpdml0eSBpcyBtZWFzdXJlZCBpbmJldHdl ZW4pLgorICogSWYgdXNlZCBkaXJlY3RseToKKyAqIC0gQWxsb2NhdGUgb24gdGhlIHN0YWNrIGFu ZCB6ZXJvIGluaXRpYWxpemUgdGhlIHN0cnVjdAorICogLSBDYWxsIEluc3RySW5pdE9wdGlvbnMg dG8gc2V0IGluc3RydW1lbnRhdGlvbiBvcHRpb25zCisgKiAtIENhbGwgSW5zdHJTdGFydCBiZWZv cmUgdGhlIGFjdGl2aXR5IHlvdSB3YW50IHRvIG1lYXN1cmUKKyAqIC0gQ2FsbCBJbnN0clN0b3Ag LyBJbnN0clN0b3BGaW5hbGl6ZSBhZnRlciB0aGUgYWN0aXZpdHkgdG8gY2FwdHVyZSB0b3RhbHMK KyAqCisgKiBJbnN0clN0YXJ0L0luc3RyU3RvcCBtYXkgYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVz LiBUaGUgbGFzdCBzdG9wIGNhbGwgbXVzdAorICogYmUgdG8gSW5zdHJTdG9wRmluYWxpemUgdG8g ZW5zdXJlIHBhcmVudCBzdGFjayBlbnRyaWVzIGdldCB0aGUgYWNjdW11bGF0ZWQKKyAqIHRvdGFs cy4gSWYgdGhlcmUgaXMgcmlzayBvZiB0cmFuc2FjdGlvbiBhYm9ydHMgeW91IG11c3QgY2FsbAor ICogSW5zdHJTdG9wRmluYWxpemUgaW4gYSBQR19UUlkvUEdfRklOQUxMWSBibG9jayB0byBhdm9p ZCBjb3JydXB0aW5nIHRoZQorICogaW5zdHJ1bWVudGF0aW9uIHN0YWNrLgorICoKKyAqIEluIGEg cXVlcnkgY29udGV4dCB1c2UgUXVlcnlJbnN0cnVtZW50YXRpb24gaW5zdGVhZCwgd2hpY2ggaGFu ZGxlcyBhYm9ydHMKKyAqIHVzaW5nIHRoZSByZXNvdXJjZSBvd25lciBsb2dpYy4KICAqLwogdHlw ZWRlZiBzdHJ1Y3QgSW5zdHJ1bWVudGF0aW9uCiB7CiAJLyogUGFyYW1ldGVycyBzZXQgYXQgY3Jl YXRpb246ICovCiAJYm9vbAkJbmVlZF90aW1lcjsJCS8qIHRydWUgaWYgd2UgbmVlZCB0aW1lciBk YXRhICovCi0JYm9vbAkJbmVlZF9idWZ1c2FnZTsJLyogdHJ1ZSBpZiB3ZSBuZWVkIGJ1ZmZlciB1 c2FnZSBkYXRhICovCi0JYm9vbAkJbmVlZF93YWx1c2FnZTsJLyogdHJ1ZSBpZiB3ZSBuZWVkIFdB TCB1c2FnZSBkYXRhICovCisJYm9vbAkJbmVlZF9zdGFjazsJCS8qIHRydWUgaWYgd2UgbmVlZCBX QUwvYnVmZmVyIHVzYWdlIGRhdGEgKi8KIAkvKiBJbnRlcm5hbCBzdGF0ZSBrZWVwaW5nOiAqLwog CWluc3RyX3RpbWUJc3RhcnR0aW1lOwkJLyogc3RhcnQgdGltZSBvZiBsYXN0IEluc3RyU3RhcnQg Ki8KLQlCdWZmZXJVc2FnZSBidWZ1c2FnZV9zdGFydDsgLyogYnVmZmVyIHVzYWdlIGF0IHN0YXJ0 ICovCi0JV2FsVXNhZ2UJd2FsdXNhZ2Vfc3RhcnQ7IC8qIFdBTCB1c2FnZSBhdCBzdGFydCAqLwog CS8qIEFjY3VtdWxhdGVkIHN0YXRpc3RpY3M6ICovCiAJaW5zdHJfdGltZQl0b3RhbDsJCQkvKiB0 b3RhbCBydW50aW1lICovCiAJQnVmZmVyVXNhZ2UgYnVmdXNhZ2U7CQkvKiB0b3RhbCBidWZmZXIg dXNhZ2UgKi8KIAlXYWxVc2FnZQl3YWx1c2FnZTsJCS8qIHRvdGFsIFdBTCB1c2FnZSAqLwogfSBJ bnN0cnVtZW50YXRpb247CiAKKy8qCisgKiBRdWVyeS1yZWxhdGVkIGluc3RydW1lbnRhdGlvbiB0 cmFja2luZy4KKyAqCisgKiBVc2FnZToKKyAqIC0gQWxsb2NhdGUgb24gdGhlIGhlYXAgdXNpbmcg SW5zdHJRdWVyeUFsbG9jIChyZXF1aXJlZCBmb3IgYWJvcnQgaGFuZGxpbmcpCisgKiAtIENhbGwg SW5zdHJRdWVyeVN0YXJ0IGJlZm9yZSB0aGUgYWN0aXZpdHkgeW91IHdhbnQgdG8gbWVhc3VyZQor ICogLSBDYWxsIEluc3RyUXVlcnlTdG9wIC8gSW5zdHJRdWVyeVN0b3BGaW5hbGl6ZSBhZnRlcndh cmRzIHRvIGNhcHR1cmUgdG90YWxzCisgKgorICogSW5zdHJRdWVyeVN0YXJ0L0luc3RyUXVlcnlT dG9wIG1heSBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMuIFRoZSBsYXN0IHN0b3AKKyAqIGNhbGwg bXVzdCBiZSB0byBJbnN0clF1ZXJ5U3RvcEZpbmFsaXplIHRvIGVuc3VyZSBwYXJlbnQgc3RhY2sg ZW50cmllcyBnZXQKKyAqIHRoZSBhY2N1bXVsYXRlZCB0b3RhbHMuCisgKgorICogVXNlcyByZXNv dXJjZSBvd25lciBtZWNoYW5pc20gZm9yIGhhbmRsaW5nIGFib3J0cywgYXMgc3VjaCwgdGhlIGNh bGxlcgorICogKm11c3QqIG5vdCBleGl0IG91dCBvZiB0aGUgdG9wIGxldmVsIHRyYW5zYWN0aW9u IGFmdGVyIGhhdmluZyBjYWxsZWQKKyAqIEluc3RyUXVlcnlTdGFydCwgd2l0aG91dCBmaXJzdCBj YWxsaW5nIEluc3RyUXVlcnlTdG9wIG9yCisgKiBJbnN0clF1ZXJ5U3RvcEZpbmFsaXplLiBJbiB0 aGUgY2FzZSBvZiBhIHRyYW5zYWN0aW9uIGFib3J0LCBsb2dpYyBlcXVpdmFsZW50CisgKiB0byBJ bnN0clF1ZXJ5U3RvcEZpbmFsaXplIHdpbGwgYmUgY2FsbGVkIGF1dG9tYXRpY2FsbHkuCisgKi8K K3N0cnVjdCBSZXNvdXJjZU93bmVyRGF0YTsKK3R5cGVkZWYgc3RydWN0IFF1ZXJ5SW5zdHJ1bWVu dGF0aW9uCit7CisJSW5zdHJ1bWVudGF0aW9uIGluc3RyOworCisJLyogUmVzb3VyY2Ugb3duZXIg dXNlZCBmb3IgY2xlYW51cCBmb3IgYWJvcnRzIGJldHdlZW4gSW5zdHJTdGFydC9JbnN0clN0b3Ag Ki8KKwlzdHJ1Y3QgUmVzb3VyY2VPd25lckRhdGEgKm93bmVyOworCisJLyoKKwkgKiBOb2RlSW5z dHJ1bWVudGF0aW9uIGNoaWxkIGVudHJpZXMgdGhhdCBuZWVkIHRvIGJlIGNsZWFuZWQgdXAgb24g YWJvcnQsCisJICogc2luY2UgdGhleSBhcmUgbm90IHJlZ2lzdGVyZWQgYXMgYSByZXNvdXJjZSBv d25lciB0aGVtc2VsdmVzLgorCSAqLworCWRsaXN0X2hlYWQJdW5maW5hbGl6ZWRfY2hpbGRyZW47 CS8qIGhlYWQgb2YgdW5maW5hbGl6ZWQgY2hpbGRyZW4gbGlzdCAqLworfSBRdWVyeUluc3RydW1l bnRhdGlvbjsKKwogLyoKICAqIFNwZWNpYWxpemVkIGluc3RydW1lbnRhdGlvbiBmb3IgcGVyLW5v ZGUgZXhlY3V0aW9uIHN0YXRpc3RpY3MKKyAqCisgKiBSZWxpZXMgb24gYW4gb3V0ZXIgUXVlcnlJ bnN0cnVtZW50YXRpb24gaGF2aW5nIGJlZW4gc2V0IHVwIHRvIGhhbmRsZSB0aGUKKyAqIHN0YWNr IHVzZWQgZm9yIFdBTC9idWZmZXIgdXNhZ2Ugc3RhdGlzdGljcywgYW5kIHJlbGllcyBvbiBpdCBm b3IgbWFuYWdpbmcKKyAqIGFib3J0cy4gU29sZWx5IGludGVuZGVkIGZvciB0aGUgZXhlY3V0b3Ig YW5kIGFueW9uZSByZXBvcnRpbmcgYWJvdXQgaXRzCisgKiBhY3Rpdml0aWVzIChlLmcuIEVYUExB SU4gQU5BTFlaRSkuCiAgKi8KIHR5cGVkZWYgc3RydWN0IE5vZGVJbnN0cnVtZW50YXRpb24KIHsK QEAgLTEwOSw4ICsxNTcsMTUgQEAgdHlwZWRlZiBzdHJ1Y3QgTm9kZUluc3RydW1lbnRhdGlvbgog CWRvdWJsZQkJbmxvb3BzOwkJCS8qICMgb2YgcnVuIGN5Y2xlcyBmb3IgdGhpcyBub2RlICovCiAJ ZG91YmxlCQluZmlsdGVyZWQxOwkJLyogIyBvZiB0dXBsZXMgcmVtb3ZlZCBieSBzY2FucXVhbCBv ciBqb2lucXVhbCAqLwogCWRvdWJsZQkJbmZpbHRlcmVkMjsJCS8qICMgb2YgdHVwbGVzIHJlbW92 ZWQgYnkgIm90aGVyIiBxdWFscyAqLworCisJLyogQWJvcnQgaGFuZGxpbmcgKi8KKwlkbGlzdF9u b2RlCXVuZmluYWxpemVkX25vZGU7CS8qIG5vZGUgaW4gcGFyZW50J3MgdW5maW5hbGl6ZWQgbGlz dCAqLwogfSBOb2RlSW5zdHJ1bWVudGF0aW9uOwogCisvKgorICogQ2FyZSBtdXN0IGJlIHRha2Vu IHdpdGggYW55IHBvaW50ZXJzIGNvbnRhaW5lZCB3aXRoaW4gdGhpcyBzdHJ1Y3QsIGFzIHRoaXMK KyAqIGdldHMgY29waWVkIGFjcm9zcyBwcm9jZXNzZXMgZHVyaW5nIHBhcmFsbGVsIHF1ZXJ5IGV4 ZWN1dGlvbi4KKyAqLwogdHlwZWRlZiBzdHJ1Y3QgV29ya2VyTm9kZUluc3RydW1lbnRhdGlvbgog ewogCWludAkJCW51bV93b3JrZXJzOwkvKiAjIG9mIHN0cnVjdHVyZXMgdGhhdCBmb2xsb3cgKi8K QEAgLTEyNCwxOSArMTc5LDEwNiBAQCB0eXBlZGVmIHN0cnVjdCBUcmlnZ2VySW5zdHJ1bWVudGF0 aW9uCiAJCQkJCQkJCSAqIHdhcyBmaXJlZCAqLwogfSBUcmlnZ2VySW5zdHJ1bWVudGF0aW9uOwog Ci1leHRlcm4gUEdETExJTVBPUlQgQnVmZmVyVXNhZ2UgcGdCdWZmZXJVc2FnZTsKKy8qCisgKiBE eW5hbWljIGFycmF5LWJhc2VkIHN0YWNrIGZvciB0cmFja2luZyBjdXJyZW50IFdBTC9idWZmZXIg dXNhZ2UgY29udGV4dC4KKyAqCisgKiBXaGVuIHRoZSBzdGFjayBpcyBlbXB0eSwgJ2N1cnJlbnQn IHBvaW50cyB0byBpbnN0cl90b3Agd2hpY2ggYWNjdW11bGF0ZXMKKyAqIHNlc3Npb24tbGV2ZWwg dG90YWxzLgorICovCit0eXBlZGVmIHN0cnVjdCBJbnN0clN0YWNrU3RhdGUKK3sKKwlpbnQJCQlz dGFja19zcGFjZTsJLyogYWxsb2NhdGVkIGNhcGFjaXR5IG9mIGVudHJpZXMgYXJyYXkgKi8KKwlp bnQJCQlzdGFja19zaXplOwkJLyogY3VycmVudCBudW1iZXIgb2YgZW50cmllcyAqLworCisJSW5z dHJ1bWVudGF0aW9uICoqZW50cmllczsJLyogZHluYW1pYyBhcnJheSBvZiBwb2ludGVycyAqLwor CUluc3RydW1lbnRhdGlvbiAqY3VycmVudDsJLyogdG9wIG9mIHN0YWNrLCBvciAmaW5zdHJfdG9w IHdoZW4gZW1wdHkgKi8KK30gSW5zdHJTdGFja1N0YXRlOworCiBleHRlcm4gUEdETExJTVBPUlQg V2FsVXNhZ2UgcGdXYWxVc2FnZTsKIAotZXh0ZXJuIEluc3RydW1lbnRhdGlvbiAqSW5zdHJBbGxv YyhpbnQgaW5zdHJ1bWVudF9vcHRpb25zKTsKKy8qCisgKiBUaGUgdG9wIGluc3RydW1lbnRhdGlv biByZXByZXNlbnRzIGEgcnVubmluZyB0b3RhbCBvZiB0aGUgY3VycmVudCBiYWNrZW5kCisgKiBX QUwvYnVmZmVyIHVzYWdlIGluZm9ybWF0aW9uLiBUaGlzIHdpbGwgbm90IGJlIHVwZGF0ZWQgaW1t ZWRpYXRlbHksIGJ1dAorICogcmF0aGVyIHdoZW4gdGhlIGN1cnJlbnQgc3RhY2sgZW50cnkgZ2V0 cyBhY2N1bXVsYXRlZCB3aGljaCB0eXBpY2FsbHkgaGFwcGVucworICogYXQgcXVlcnkgZW5kLgor ICoKKyAqIENhcmUgbXVzdCBiZSB0YWtlbiB3aGVuIHV0aWxpemluZyB0aGlzIGluIHRoZSBwYXJh bGxlbCB3b3JrZXIgY29udGV4dDoKKyAqIFBhcmFsbGVsIHdvcmtlcnMgd2lsbCByZXBvcnQgYmFj ayB0aGVpciBpbnN0cnVtZW50YXRpb24gdG8gdGhlIGNhbGxlciwKKyAqIGFuZCB0aGlzIGdldHMg YWRkZWQgdG8gdGhlIGNhbGxlcidzIHN0YWNrLiBJZiB0aGlzIHdlcmUgdG8gYmUgdXNlZCBpbiB0 aGUKKyAqIHNoYXJlZCBtZW1vcnkgc3RhdHMgaW5mcmFzdHJ1Y3R1cmUgaXQgd291bGQgbmVlZCB0 byBiZSBza2lwcGVkIG9uIHBhcmFsbGVsCisgKiB3b3JrZXJzIHRvIGF2b2lkIGRvdWJsZSBjb3Vu dGluZy4KKyAqLworZXh0ZXJuIFBHRExMSU1QT1JUIEluc3RydW1lbnRhdGlvbiBpbnN0cl90b3A7 CisKKy8qCisgKiBUaGUgaW5zdHJ1bWVudGF0aW9uIHN0YWNrIHN0YXRlLiBUaGUgJ2N1cnJlbnQn IGZpZWxkIHBvaW50cyB0byB0aGUKKyAqIGN1cnJlbnRseSBhY3RpdmUgc3RhY2sgZW50cnkgdGhh dCBpcyBnZXR0aW5nIHVwZGF0ZWQgYXMgYWN0aXZpdHkgaGFwcGVucywKKyAqIGFuZCB3aWxsIGJl IGFjY3VtdWxhdGVkIHRvIHBhcmVudCBzdGFja3Mgd2hlbiBpdCBnZXRzIGZpbmFsaXplZCBieQor ICogSW5zdHJTdG9wIChmb3Igbm9uLWV4ZWN1dG9yIHVzZSBjYXNlcyksIEV4ZWNGaW5hbGl6ZU5v ZGVJbnN0cnVtZW50YXRpb24KKyAqIChleGVjdXRvciBmaW5pc2gpIG9yIFJlc093bmVyUmVsZWFz ZUluc3RydW1lbnRhdGlvbiBvbiBhYm9ydC4KKyAqLworZXh0ZXJuIFBHRExMSU1QT1JUIEluc3Ry U3RhY2tTdGF0ZSBpbnN0cl9zdGFjazsKKworZXh0ZXJuIHZvaWQgSW5zdHJTdGFja0dyb3codm9p ZCk7CisKKy8qCisgKiBQdXNoZXMgdGhlIHN0YWNrIHNvIHRoYXQgYWxsIFdBTC9idWZmZXIgdXNh Z2UgdXBkYXRlcyBnbyB0byB0aGUgcGFzc2VkIGluCisgKiBpbnN0cnVtZW50YXRpb24gZW50cnku CisgKgorICogU2VlIG5vdGUgb24gSW5zdHJQb3BTdGFjayByZWdhcmRpbmcgc2FmZSB1c2Ugb2Yg dGhlc2UgZnVuY3Rpb25zLgorICovCitzdGF0aWMgaW5saW5lIHZvaWQKK0luc3RyUHVzaFN0YWNr KEluc3RydW1lbnRhdGlvbiAqaW5zdHIpCit7CisJaWYgKHVubGlrZWx5KGluc3RyX3N0YWNrLnN0 YWNrX3NpemUgPT0gaW5zdHJfc3RhY2suc3RhY2tfc3BhY2UpKQorCQlJbnN0clN0YWNrR3Jvdygp OworCisJaW5zdHJfc3RhY2suZW50cmllc1tpbnN0cl9zdGFjay5zdGFja19zaXplKytdID0gaW5z dHI7CisJaW5zdHJfc3RhY2suY3VycmVudCA9IGluc3RyOworfQorCisvKgorICogUG9wcyB0aGUg c3RhY2sgZW50cnkgYmFjayB0byB0aGUgcHJldmlvdXMgb25lIHRoYXQgd2FzIGVmZmVjdGl2ZSBh dAorICogSW5zdHJQdXNoU3RhY2suCisgKgorICogQ2FsbGVycyBtdXN0IGVuc3VyZSB0aGF0IG5v IGludGVybWVkaWF0ZSBzdGFjayBlbnRyaWVzIGFyZSBza2lwcGVkLCB0bworICogaGFuZGxlIGFi b3J0cyBjb3JyZWN0bHkuIElmIHlvdSdyZSB0aGlua2luZyBvZiBjYWxsaW5nIHRoaXMgaW4gYSBQ R19GSU5BTExZCisgKiBibG9jaywgY29uc2lkZXIgaW5zdGVhZCB1c2luZyBJbnN0clN0YXJ0ICsg SW5zdHJTdG9wRmluYWxpemUgd2hpY2ggY2FuIHNraXAKKyAqIGludGVybWVkaWF0ZSBzdGFjayBl bnRyaWVzLgorICovCitzdGF0aWMgaW5saW5lIHZvaWQKK0luc3RyUG9wU3RhY2soSW5zdHJ1bWVu dGF0aW9uICppbnN0cikKK3sKKwlBc3NlcnQoaW5zdHJfc3RhY2suc3RhY2tfc2l6ZSA+IDApOwor CUFzc2VydChpbnN0cl9zdGFjay5lbnRyaWVzW2luc3RyX3N0YWNrLnN0YWNrX3NpemUgLSAxXSA9 PSBpbnN0cik7CisJaW5zdHJfc3RhY2suc3RhY2tfc2l6ZS0tOworCWluc3RyX3N0YWNrLmN1cnJl bnQgPSBpbnN0cl9zdGFjay5zdGFja19zaXplID4gMAorCQk/IGluc3RyX3N0YWNrLmVudHJpZXNb aW5zdHJfc3RhY2suc3RhY2tfc2l6ZSAtIDFdCisJCTogJmluc3RyX3RvcDsKK30KKwogZXh0ZXJu IHZvaWQgSW5zdHJJbml0T3B0aW9ucyhJbnN0cnVtZW50YXRpb24gKmluc3RyLCBpbnQgaW5zdHJ1 bWVudF9vcHRpb25zKTsKIGV4dGVybiB2b2lkIEluc3RyU3RhcnQoSW5zdHJ1bWVudGF0aW9uICpp bnN0cik7CiBleHRlcm4gdm9pZCBJbnN0clN0b3AoSW5zdHJ1bWVudGF0aW9uICppbnN0cik7Citl eHRlcm4gdm9pZCBJbnN0clN0b3BGaW5hbGl6ZShJbnN0cnVtZW50YXRpb24gKmluc3RyKTsKK2V4 dGVybiB2b2lkIEluc3RyQWNjdW1TdGFjayhJbnN0cnVtZW50YXRpb24gKmRzdCwgSW5zdHJ1bWVu dGF0aW9uICphZGQpOworCitleHRlcm4gUXVlcnlJbnN0cnVtZW50YXRpb24gKkluc3RyUXVlcnlB bGxvYyhpbnQgaW5zdHJ1bWVudF9vcHRpb25zKTsKK2V4dGVybiB2b2lkIEluc3RyUXVlcnlTdGFy dChRdWVyeUluc3RydW1lbnRhdGlvbiAqaW5zdHIpOworZXh0ZXJuIHZvaWQgSW5zdHJRdWVyeVN0 b3AoUXVlcnlJbnN0cnVtZW50YXRpb24gKmluc3RyKTsKK2V4dGVybiBRdWVyeUluc3RydW1lbnRh dGlvbiAqSW5zdHJRdWVyeVN0b3BGaW5hbGl6ZShRdWVyeUluc3RydW1lbnRhdGlvbiAqaW5zdHIp OworZXh0ZXJuIHZvaWQgSW5zdHJRdWVyeVJlbWVtYmVyTm9kZShRdWVyeUluc3RydW1lbnRhdGlv biAqcGFyZW50LCBOb2RlSW5zdHJ1bWVudGF0aW9uICppbnN0cik7CisKK3BnX25vZGlzY2FyZCBl eHRlcm4gUXVlcnlJbnN0cnVtZW50YXRpb24gKkluc3RyU3RhcnRQYXJhbGxlbFF1ZXJ5KHZvaWQp OworZXh0ZXJuIHZvaWQgSW5zdHJFbmRQYXJhbGxlbFF1ZXJ5KFF1ZXJ5SW5zdHJ1bWVudGF0aW9u ICpxaW5zdHIsIEJ1ZmZlclVzYWdlICpidWZ1c2FnZSwgV2FsVXNhZ2UgKndhbHVzYWdlKTsKK2V4 dGVybiB2b2lkIEluc3RyQWNjdW1QYXJhbGxlbFF1ZXJ5KEJ1ZmZlclVzYWdlICpidWZ1c2FnZSwg V2FsVXNhZ2UgKndhbHVzYWdlKTsKIAogZXh0ZXJuIE5vZGVJbnN0cnVtZW50YXRpb24gKkluc3Ry QWxsb2NOb2RlKGludCBpbnN0cnVtZW50X29wdGlvbnMsCiAJCQkJCQkJCQkJICAgYm9vbCBhc3lu Y19tb2RlKTsKIGV4dGVybiB2b2lkIEluc3RySW5pdE5vZGUoTm9kZUluc3RydW1lbnRhdGlvbiAq aW5zdHIsIGludCBpbnN0cnVtZW50X29wdGlvbnMpOwogZXh0ZXJuIHZvaWQgSW5zdHJTdGFydE5v ZGUoTm9kZUluc3RydW1lbnRhdGlvbiAqaW5zdHIpOwogZXh0ZXJuIHZvaWQgSW5zdHJTdG9wTm9k ZShOb2RlSW5zdHJ1bWVudGF0aW9uICppbnN0ciwgZG91YmxlIG5UdXBsZXMpOworZXh0ZXJuIE5v ZGVJbnN0cnVtZW50YXRpb24gKkluc3RyRmluYWxpemVOb2RlKE5vZGVJbnN0cnVtZW50YXRpb24g Kmluc3RyLCBJbnN0cnVtZW50YXRpb24gKnBhcmVudCk7CiBleHRlcm4gdm9pZCBJbnN0clVwZGF0 ZVR1cGxlQ291bnQoTm9kZUluc3RydW1lbnRhdGlvbiAqaW5zdHIsIGRvdWJsZSBuVHVwbGVzKTsK IGV4dGVybiB2b2lkIEluc3RyRW5kTG9vcChOb2RlSW5zdHJ1bWVudGF0aW9uICppbnN0cik7CiBl eHRlcm4gdm9pZCBJbnN0ckFnZ05vZGUoTm9kZUluc3RydW1lbnRhdGlvbiAqZHN0LCBOb2RlSW5z dHJ1bWVudGF0aW9uICphZGQpOwpAQCAtMTQ1LDMxICsyODcsMzEgQEAgZXh0ZXJuIFRyaWdnZXJJ bnN0cnVtZW50YXRpb24gKkluc3RyQWxsb2NUcmlnZ2VyKGludCBuLCBpbnQgaW5zdHJ1bWVudF9v cHRpb25zKTsKIGV4dGVybiB2b2lkIEluc3RyU3RhcnRUcmlnZ2VyKFRyaWdnZXJJbnN0cnVtZW50 YXRpb24gKnRnaW5zdHIpOwogZXh0ZXJuIHZvaWQgSW5zdHJTdG9wVHJpZ2dlcihUcmlnZ2VySW5z dHJ1bWVudGF0aW9uICp0Z2luc3RyLCBpbnQgZmlyaW5ncyk7CiAKLWV4dGVybiB2b2lkIEluc3Ry U3RhcnRQYXJhbGxlbFF1ZXJ5KHZvaWQpOwotZXh0ZXJuIHZvaWQgSW5zdHJFbmRQYXJhbGxlbFF1 ZXJ5KEJ1ZmZlclVzYWdlICpidWZ1c2FnZSwgV2FsVXNhZ2UgKndhbHVzYWdlKTsKLWV4dGVybiB2 b2lkIEluc3RyQWNjdW1QYXJhbGxlbFF1ZXJ5KEJ1ZmZlclVzYWdlICpidWZ1c2FnZSwgV2FsVXNh Z2UgKndhbHVzYWdlKTsKLWV4dGVybiB2b2lkIEJ1ZmZlclVzYWdlQWNjdW1EaWZmKEJ1ZmZlclVz YWdlICpkc3QsCi0JCQkJCQkJCSBjb25zdCBCdWZmZXJVc2FnZSAqYWRkLCBjb25zdCBCdWZmZXJV c2FnZSAqc3ViKTsKK2V4dGVybiB2b2lkIEJ1ZmZlclVzYWdlQWRkKEJ1ZmZlclVzYWdlICpkc3Qs IGNvbnN0IEJ1ZmZlclVzYWdlICphZGQpOworZXh0ZXJuIHZvaWQgV2FsVXNhZ2VBZGQoV2FsVXNh Z2UgKmRzdCwgY29uc3QgV2FsVXNhZ2UgKmFkZCk7CiBleHRlcm4gdm9pZCBXYWxVc2FnZUFjY3Vt RGlmZihXYWxVc2FnZSAqZHN0LCBjb25zdCBXYWxVc2FnZSAqYWRkLAogCQkJCQkJCSAgY29uc3Qg V2FsVXNhZ2UgKnN1Yik7CiAKICNkZWZpbmUgSU5TVFJfQlVGVVNBR0VfSU5DUihmbGQpIGRvIHsg XAotCQlwZ0J1ZmZlclVzYWdlLmZsZCsrOyBcCisJCWluc3RyX3N0YWNrLmN1cnJlbnQtPmJ1ZnVz YWdlLmZsZCsrOyBcCiAJfSB3aGlsZSgwKQogI2RlZmluZSBJTlNUUl9CVUZVU0FHRV9BREQoZmxk LHZhbCkgZG8geyBcCi0JCXBnQnVmZmVyVXNhZ2UuZmxkICs9IHZhbDsgXAorCQlpbnN0cl9zdGFj ay5jdXJyZW50LT5idWZ1c2FnZS5mbGQgKz0gdmFsOyBcCiAJfSB3aGlsZSgwKQogI2RlZmluZSBJ TlNUUl9CVUZVU0FHRV9USU1FX0FERChmbGQsdmFsKSBkbyB7IFwKLQlJTlNUUl9USU1FX0FERChw Z0J1ZmZlclVzYWdlLmZsZCwgdmFsKTsgXAorCUlOU1RSX1RJTUVfQUREKGluc3RyX3N0YWNrLmN1 cnJlbnQtPmJ1ZnVzYWdlLmZsZCwgdmFsKTsgXAogCX0gd2hpbGUgKDApCiAjZGVmaW5lIElOU1RS X0JVRlVTQUdFX1RJTUVfQUNDVU1fRElGRihmbGQsZW5kdmFsLHN0YXJ0dmFsKSBkbyB7IFwKLQlJ TlNUUl9USU1FX0FDQ1VNX0RJRkYocGdCdWZmZXJVc2FnZS5mbGQsIGVuZHZhbCwgc3RhcnR2YWwp OyBcCisJSU5TVFJfVElNRV9BQ0NVTV9ESUZGKGluc3RyX3N0YWNrLmN1cnJlbnQtPmJ1ZnVzYWdl LmZsZCwgZW5kdmFsLCBzdGFydHZhbCk7IFwKIAl9IHdoaWxlICgwKQorCiAjZGVmaW5lIElOU1RS X1dBTFVTQUdFX0lOQ1IoZmxkKSBkbyB7IFwKIAkJcGdXYWxVc2FnZS5mbGQrKzsgXAorCQlpbnN0 cl9zdGFjay5jdXJyZW50LT53YWx1c2FnZS5mbGQrKzsgXAogCX0gd2hpbGUoMCkKICNkZWZpbmUg SU5TVFJfV0FMVVNBR0VfQUREKGZsZCx2YWwpIGRvIHsgXAogCQlwZ1dhbFVzYWdlLmZsZCArPSB2 YWw7IFwKKwkJaW5zdHJfc3RhY2suY3VycmVudC0+d2FsdXNhZ2UuZmxkICs9IHZhbDsgXAogCX0g d2hpbGUoMCkKIAogI2VuZGlmCQkJCQkJCS8qIElOU1RSVU1FTlRfSCAqLwpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvdXRpbHMvcmVzb3duZXIuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL3Jlc293bmVy LmgKaW5kZXggZWI2MDMzYjRmZGIuLjU0NjNiYzkyMWYwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS91dGlscy9yZXNvd25lci5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL3Jlc293bmVyLmgKQEAg LTc1LDYgKzc1LDcgQEAgdHlwZWRlZiB1aW50MzIgUmVzb3VyY2VSZWxlYXNlUHJpb3JpdHk7CiAj ZGVmaW5lIFJFTEVBU0VfUFJJT19TTkFQU0hPVF9SRUZTCQkJNTAwCiAjZGVmaW5lIFJFTEVBU0Vf UFJJT19GSUxFUwkJCQkJNjAwCiAjZGVmaW5lIFJFTEVBU0VfUFJJT19XQUlURVZFTlRTRVRTCQkJ NzAwCisjZGVmaW5lIFJFTEVBU0VfUFJJT19JTlNUUlVNRU5UQVRJT04JCTgwMAogCiAvKiAwIGlz IGNvbnNpZGVyZWQgaW52YWxpZCAqLwogI2RlZmluZSBSRUxFQVNFX1BSSU9fRklSU1QJCQkJCTEK ZGlmZiAtLWdpdCBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xz L3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXggY2FhMGNhZWYzMjQuLjZlYTg2YzJlYWFjIDEw MDY0NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9v bHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAtMTMzNSw2ICsxMzM1LDcgQEAgSW5qZWN0aW9u UG9pbnRTaGFyZWRTdGF0ZQogSW5qZWN0aW9uUG9pbnRzQ3RsCiBJbmxpbmVDb2RlQmxvY2sKIElu c2VydFN0bXQKK0luc3RyU3RhY2tTdGF0ZQogSW5zdHJ1bWVudGF0aW9uCiBJbnQxMjhBZ2dTdGF0 ZQogSW50OFRyYW5zVHlwZURhdGEKQEAgLTI0NTAsNiArMjQ1MSw3IEBAIFF1ZXJ5Q29tcGxldGlv bgogUXVlcnlEZXNjCiBRdWVyeUVudmlyb25tZW50CiBRdWVyeUluZm8KK1F1ZXJ5SW5zdHJ1bWVu dGF0aW9uCiBRdWVyeUl0ZW0KIFF1ZXJ5SXRlbVR5cGUKIFF1ZXJ5TW9kZQotLSAKMi40Ny4xCgo= --000000000000c2e7d4064d33fd67 Content-Type: application/octet-stream; name="v9-0003-instrumentation-Replace-direct-changes-of-pgBuffe.patch" Content-Disposition: attachment; filename="v9-0003-instrumentation-Replace-direct-changes-of-pgBuffe.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmucb65o2 RnJvbSA4YTk3NjNmM2JlM2RiOTVkNTIxYzU1ZTIwNmFmNzVjZWYwNGJjYmQ0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpEYXRlOiBT YXQsIDcgTWFyIDIwMjYgMTI6MTI6MzkgLTA4MDAKU3ViamVjdDogW1BBVENIIHY5IDMvOV0gaW5z dHJ1bWVudGF0aW9uOiBSZXBsYWNlIGRpcmVjdCBjaGFuZ2VzIG9mCiBwZ0J1ZmZlclVzYWdlL3Bn V2FsVXNhZ2Ugd2l0aCBJTlNUUl8qIG1hY3JvcwoKVGhpcyBlbmNhcHN1bGF0ZXMgdGhlIG93bmVy c2hpcCBvZiB0aGVzZSBnbG9iYWxzIGJldHRlciwgYW5kIHdpbGwgYWxsb3cKYSBzdWJzZXF1ZW50 IHJlZmFjdG9yaW5nLgoKQXV0aG9yOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpSZXZp ZXdlZC1ieTogQW5kcmVzIEZyZXVuZCA8YW5kcmVzQGFuYXJhemVsLmRlPgpEaXNjdXNzaW9uOiBo dHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9tZXNzYWdlLWlkL2ZsYXQvQ0FQNTNQa3paM1VvdG5S cnJuWFdBdiUzREY0YXZScTlNUTh6VSUyQmJ4b045dHBvdkV1NmZHUSU0MG1haWwuZ21haWwuY29t I2ZjNzE0MGU4YWYyMWUwN2E5MGEwOWQ3ZTc2YjMwMGM0Ci0tLQogc3JjL2JhY2tlbmQvYWNjZXNz L3RyYW5zYW0veGxvZy5jICAgICAgfCAxMCArKysrKy0tLS0tCiBzcmMvYmFja2VuZC9leGVjdXRv ci9pbnN0cnVtZW50LmMgICAgICB8ICAxIC0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1 Zm1nci5jICAgIHwgMjQgKysrKysrKysrKysrLS0tLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9zdG9y YWdlL2J1ZmZlci9sb2NhbGJ1Zi5jICB8ICA2ICsrKy0tLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9m aWxlL2J1ZmZpbGUuYyAgICAgfCAgOCArKysrLS0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZp dHkvcGdzdGF0X2lvLmMgfCAgOCArKysrLS0tLQogc3JjL2luY2x1ZGUvZXhlY3V0b3IvaW5zdHJ1 bWVudC5oICAgICAgfCAxOSArKysrKysrKysrKysrKysrKysrCiA3IGZpbGVzIGNoYW5nZWQsIDQ3 IGluc2VydGlvbnMoKyksIDI5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2FjY2Vzcy90cmFuc2FtL3hsb2cuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cu YwppbmRleCBmNWM5YTM0Mzc0ZC4uOWIzMzU4NGY0NTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2FjY2Vzcy90cmFuc2FtL3hsb2cuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94 bG9nLmMKQEAgLTEwODEsMTAgKzEwODEsMTAgQEAgWExvZ0luc2VydFJlY29yZChYTG9nUmVjRGF0 YSAqcmRhdGEsCiAJLyogUmVwb3J0IFdBTCB0cmFmZmljIHRvIHRoZSBpbnN0cnVtZW50YXRpb24u ICovCiAJaWYgKGluc2VydGVkKQogCXsKLQkJcGdXYWxVc2FnZS53YWxfYnl0ZXMgKz0gcmVjaGRy LT54bF90b3RfbGVuOwotCQlwZ1dhbFVzYWdlLndhbF9yZWNvcmRzKys7Ci0JCXBnV2FsVXNhZ2Uu d2FsX2ZwaSArPSBudW1fZnBpOwotCQlwZ1dhbFVzYWdlLndhbF9mcGlfYnl0ZXMgKz0gZnBpX2J5 dGVzOworCQlJTlNUUl9XQUxVU0FHRV9BREQod2FsX2J5dGVzLCByZWNoZHItPnhsX3RvdF9sZW4p OworCQlJTlNUUl9XQUxVU0FHRV9JTkNSKHdhbF9yZWNvcmRzKTsKKwkJSU5TVFJfV0FMVVNBR0Vf QUREKHdhbF9mcGksIG51bV9mcGkpOworCQlJTlNUUl9XQUxVU0FHRV9BREQod2FsX2ZwaV9ieXRl cywgZnBpX2J5dGVzKTsKIAogCQkvKiBSZXF1aXJlZCBmb3IgdGhlIGZsdXNoIG9mIHBlbmRpbmcg c3RhdHMgV0FMIGRhdGEgKi8KIAkJcGdzdGF0X3JlcG9ydF9maXhlZCA9IHRydWU7CkBAIC0yMDYz LDcgKzIwNjMsNyBAQCBBZHZhbmNlWExJbnNlcnRCdWZmZXIoWExvZ1JlY1B0ciB1cHRvLCBUaW1l TGluZUlEIHRsaSwgYm9vbCBvcHBvcnR1bmlzdGljKQogCQkJCQlXcml0ZVJxc3QuRmx1c2ggPSBJ bnZhbGlkWExvZ1JlY1B0cjsKIAkJCQkJWExvZ1dyaXRlKFdyaXRlUnFzdCwgdGxpLCBmYWxzZSk7 CiAJCQkJCUxXTG9ja1JlbGVhc2UoV0FMV3JpdGVMb2NrKTsKLQkJCQkJcGdXYWxVc2FnZS53YWxf YnVmZmVyc19mdWxsKys7CisJCQkJCUlOU1RSX1dBTFVTQUdFX0lOQ1Iod2FsX2J1ZmZlcnNfZnVs bCk7CiAJCQkJCVRSQUNFX1BPU1RHUkVTUUxfV0FMX0JVRkZFUl9XUklURV9ESVJUWV9ET05FKCk7 CiAKIAkJCQkJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2luc3RydW1lbnQu YyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2luc3RydW1lbnQuYwppbmRleCBiYzU1MWY5NWEwOC4u NmE0YTA4ZWJiMGMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2luc3RydW1lbnQu YworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9pbnN0cnVtZW50LmMKQEAgLTU0LDcgKzU0LDYg QEAgSW5zdHJTdGFydChJbnN0cnVtZW50YXRpb24gKmluc3RyKQogCQkJSU5TVFJfVElNRV9TRVRf Q1VSUkVOVChpbnN0ci0+c3RhcnR0aW1lKTsKIAl9CiAKLQkvKiBzYXZlIGJ1ZmZlciB1c2FnZSB0 b3RhbHMgYXQgbm9kZSBlbnRyeSwgaWYgbmVlZGVkICovCiAJaWYgKGluc3RyLT5uZWVkX2J1ZnVz YWdlKQogCQlpbnN0ci0+YnVmdXNhZ2Vfc3RhcnQgPSBwZ0J1ZmZlclVzYWdlOwogCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZtZ3IuYyBiL3NyYy9iYWNrZW5kL3N0 b3JhZ2UvYnVmZmVyL2J1Zm1nci5jCmluZGV4IDAwYmM2MDk1MjlhLi5kZmEzN2U1ZWQ0NCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvYnVmbWdyLmMKKysrIGIvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9idWZmZXIvYnVmbWdyLmMKQEAgLTgzNSw3ICs4MzUsNyBAQCBSZWFkUmVj ZW50QnVmZmVyKFJlbEZpbGVMb2NhdG9yIHJsb2NhdG9yLCBGb3JrTnVtYmVyIGZvcmtOdW0sIEJs b2NrTnVtYmVyIGJsb2NrTgogCQl7CiAJCQlQaW5Mb2NhbEJ1ZmZlcihidWZIZHIsIHRydWUpOwog Ci0JCQlwZ0J1ZmZlclVzYWdlLmxvY2FsX2Jsa3NfaGl0Kys7CisJCQlJTlNUUl9CVUZVU0FHRV9J TkNSKGxvY2FsX2Jsa3NfaGl0KTsKIAogCQkJcmV0dXJuIHRydWU7CiAJCX0KQEAgLTg1Niw3ICs4 NTYsNyBAQCBSZWFkUmVjZW50QnVmZmVyKFJlbEZpbGVMb2NhdG9yIHJsb2NhdG9yLCBGb3JrTnVt YmVyIGZvcmtOdW0sIEJsb2NrTnVtYmVyIGJsb2NrTgogCQl7CiAJCQlpZiAoQnVmZmVyVGFnc0Vx dWFsKCZ0YWcsICZidWZIZHItPnRhZykpCiAJCQl7Ci0JCQkJcGdCdWZmZXJVc2FnZS5zaGFyZWRf Ymxrc19oaXQrKzsKKwkJCQlJTlNUUl9CVUZVU0FHRV9JTkNSKHNoYXJlZF9ibGtzX2hpdCk7CiAJ CQkJcmV0dXJuIHRydWU7CiAJCQl9CiAJCQlVbnBpbkJ1ZmZlcihidWZIZHIpOwpAQCAtMTI1Nywx NCArMTI1NywxNCBAQCBQaW5CdWZmZXJGb3JCbG9jayhSZWxhdGlvbiByZWwsCiAJewogCQlidWZI ZHIgPSBMb2NhbEJ1ZmZlckFsbG9jKHNtZ3IsIGZvcmtOdW0sIGJsb2NrTnVtLCBmb3VuZFB0cik7 CiAJCWlmICgqZm91bmRQdHIpCi0JCQlwZ0J1ZmZlclVzYWdlLmxvY2FsX2Jsa3NfaGl0Kys7CisJ CQlJTlNUUl9CVUZVU0FHRV9JTkNSKGxvY2FsX2Jsa3NfaGl0KTsKIAl9CiAJZWxzZQogCXsKIAkJ YnVmSGRyID0gQnVmZmVyQWxsb2Moc21nciwgcGVyc2lzdGVuY2UsIGZvcmtOdW0sIGJsb2NrTnVt LAogCQkJCQkJCSBzdHJhdGVneSwgZm91bmRQdHIsIGlvX2NvbnRleHQpOwogCQlpZiAoKmZvdW5k UHRyKQotCQkJcGdCdWZmZXJVc2FnZS5zaGFyZWRfYmxrc19oaXQrKzsKKwkJCUlOU1RSX0JVRlVT QUdFX0lOQ1Ioc2hhcmVkX2Jsa3NfaGl0KTsKIAl9CiAJaWYgKHJlbCkKIAl7CkBAIC0xOTk4LDkg KzE5OTgsOSBAQCBBc3luY1JlYWRCdWZmZXJzKFJlYWRCdWZmZXJzT3BlcmF0aW9uICpvcGVyYXRp b24sIGludCAqbmJsb2Nrc19wcm9ncmVzcykKIAkJCQkJCQkJCQkgIHRydWUpOwogCiAJCWlmIChw ZXJzaXN0ZW5jZSA9PSBSRUxQRVJTSVNURU5DRV9URU1QKQotCQkJcGdCdWZmZXJVc2FnZS5sb2Nh bF9ibGtzX2hpdCArPSAxOworCQkJSU5TVFJfQlVGVVNBR0VfSU5DUihsb2NhbF9ibGtzX2hpdCk7 CiAJCWVsc2UKLQkJCXBnQnVmZmVyVXNhZ2Uuc2hhcmVkX2Jsa3NfaGl0ICs9IDE7CisJCQlJTlNU Ul9CVUZVU0FHRV9JTkNSKHNoYXJlZF9ibGtzX2hpdCk7CiAKIAkJaWYgKG9wZXJhdGlvbi0+cmVs KQogCQkJcGdzdGF0X2NvdW50X2J1ZmZlcl9oaXQob3BlcmF0aW9uLT5yZWwpOwpAQCAtMjA2OCw5 ICsyMDY4LDkgQEAgQXN5bmNSZWFkQnVmZmVycyhSZWFkQnVmZmVyc09wZXJhdGlvbiAqb3BlcmF0 aW9uLCBpbnQgKm5ibG9ja3NfcHJvZ3Jlc3MpCiAJCQkJCQkJCWlvX3N0YXJ0LCAxLCBpb19idWZm ZXJzX2xlbiAqIEJMQ0tTWik7CiAKIAkJaWYgKHBlcnNpc3RlbmNlID09IFJFTFBFUlNJU1RFTkNF X1RFTVApCi0JCQlwZ0J1ZmZlclVzYWdlLmxvY2FsX2Jsa3NfcmVhZCArPSBpb19idWZmZXJzX2xl bjsKKwkJCUlOU1RSX0JVRlVTQUdFX0FERChsb2NhbF9ibGtzX3JlYWQsIGlvX2J1ZmZlcnNfbGVu KTsKIAkJZWxzZQotCQkJcGdCdWZmZXJVc2FnZS5zaGFyZWRfYmxrc19yZWFkICs9IGlvX2J1ZmZl cnNfbGVuOworCQkJSU5TVFJfQlVGVVNBR0VfQUREKHNoYXJlZF9ibGtzX3JlYWQsIGlvX2J1ZmZl cnNfbGVuKTsKIAogCQkvKgogCQkgKiBUcmFjayB2YWN1dW0gY29zdCB3aGVuIGlzc3VpbmcgSU8s IG5vdCBhZnRlciB3YWl0aW5nIGZvciBpdC4KQEAgLTI5NTksNyArMjk1OSw3IEBAIEV4dGVuZEJ1 ZmZlcmVkUmVsU2hhcmVkKEJ1ZmZlck1hbmFnZXJSZWxhdGlvbiBibXIsCiAJCVRlcm1pbmF0ZUJ1 ZmZlcklPKGJ1Zl9oZHIsIGZhbHNlLCBCTV9WQUxJRCwgdHJ1ZSwgZmFsc2UpOwogCX0KIAotCXBn QnVmZmVyVXNhZ2Uuc2hhcmVkX2Jsa3Nfd3JpdHRlbiArPSBleHRlbmRfYnk7CisJSU5TVFJfQlVG VVNBR0VfQUREKHNoYXJlZF9ibGtzX3dyaXR0ZW4sIGV4dGVuZF9ieSk7CiAKIAkqZXh0ZW5kZWRf YnkgPSBleHRlbmRfYnk7CiAKQEAgLTMxMDUsNyArMzEwNSw3IEBAIE1hcmtCdWZmZXJEaXJ0eShC dWZmZXIgYnVmZmVyKQogCSAqLwogCWlmICghKG9sZF9idWZfc3RhdGUgJiBCTV9ESVJUWSkpCiAJ ewotCQlwZ0J1ZmZlclVzYWdlLnNoYXJlZF9ibGtzX2RpcnRpZWQrKzsKKwkJSU5TVFJfQlVGVVNB R0VfSU5DUihzaGFyZWRfYmxrc19kaXJ0aWVkKTsKIAkJaWYgKFZhY3V1bUNvc3RBY3RpdmUpCiAJ CQlWYWN1dW1Db3N0QmFsYW5jZSArPSBWYWN1dW1Db3N0UGFnZURpcnR5OwogCX0KQEAgLTQ1MjAs NyArNDUyMCw3IEBAIEZsdXNoQnVmZmVyKEJ1ZmZlckRlc2MgKmJ1ZiwgU01nclJlbGF0aW9uIHJl bG4sIElPT2JqZWN0IGlvX29iamVjdCwKIAlwZ3N0YXRfY291bnRfaW9fb3BfdGltZShJT09CSkVD VF9SRUxBVElPTiwgaW9fY29udGV4dCwKIAkJCQkJCQlJT09QX1dSSVRFLCBpb19zdGFydCwgMSwg QkxDS1NaKTsKIAotCXBnQnVmZmVyVXNhZ2Uuc2hhcmVkX2Jsa3Nfd3JpdHRlbisrOworCUlOU1RS X0JVRlVTQUdFX0lOQ1Ioc2hhcmVkX2Jsa3Nfd3JpdHRlbik7CiAKIAkvKgogCSAqIE1hcmsgdGhl IGJ1ZmZlciBhcyBjbGVhbiBhbmQgZW5kIHRoZSBCTV9JT19JTl9QUk9HUkVTUyBzdGF0ZS4KQEAg LTU2NjMsNyArNTY2Myw3IEBAIE1hcmtTaGFyZWRCdWZmZXJEaXJ0eUhpbnQoQnVmZmVyIGJ1ZmZl ciwgQnVmZmVyRGVzYyAqYnVmSGRyLCB1aW50NjQgbG9ja3N0YXRlLAogCQkJVW5sb2NrQnVmSGRy KGJ1Zkhkcik7CiAJCX0KIAotCQlwZ0J1ZmZlclVzYWdlLnNoYXJlZF9ibGtzX2RpcnRpZWQrKzsK KwkJSU5TVFJfQlVGVVNBR0VfSU5DUihzaGFyZWRfYmxrc19kaXJ0aWVkKTsKIAkJaWYgKFZhY3V1 bUNvc3RBY3RpdmUpCiAJCQlWYWN1dW1Db3N0QmFsYW5jZSArPSBWYWN1dW1Db3N0UGFnZURpcnR5 OwogCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2xvY2FsYnVmLmMg Yi9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9sb2NhbGJ1Zi5jCmluZGV4IDQwNGM2YmNjYmRk Li44ODQ1YjBhZWVkNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvbG9j YWxidWYuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9sb2NhbGJ1Zi5jCkBAIC0y MTcsNyArMjE3LDcgQEAgRmx1c2hMb2NhbEJ1ZmZlcihCdWZmZXJEZXNjICpidWZIZHIsIFNNZ3JS ZWxhdGlvbiByZWxuKQogCS8qIE1hcmsgbm90LWRpcnR5ICovCiAJVGVybWluYXRlTG9jYWxCdWZm ZXJJTyhidWZIZHIsIHRydWUsIDAsIGZhbHNlKTsKIAotCXBnQnVmZmVyVXNhZ2UubG9jYWxfYmxr c193cml0dGVuKys7CisJSU5TVFJfQlVGVVNBR0VfSU5DUihsb2NhbF9ibGtzX3dyaXR0ZW4pOwog fQogCiBzdGF0aWMgQnVmZmVyCkBAIC00NzgsNyArNDc4LDcgQEAgRXh0ZW5kQnVmZmVyZWRSZWxM b2NhbChCdWZmZXJNYW5hZ2VyUmVsYXRpb24gYm1yLAogCiAJKmV4dGVuZGVkX2J5ID0gZXh0ZW5k X2J5OwogCi0JcGdCdWZmZXJVc2FnZS5sb2NhbF9ibGtzX3dyaXR0ZW4gKz0gZXh0ZW5kX2J5Owor CUlOU1RSX0JVRlVTQUdFX0FERChsb2NhbF9ibGtzX3dyaXR0ZW4sIGV4dGVuZF9ieSk7CiAKIAly ZXR1cm4gZmlyc3RfYmxvY2s7CiB9CkBAIC01MDksNyArNTA5LDcgQEAgTWFya0xvY2FsQnVmZmVy RGlydHkoQnVmZmVyIGJ1ZmZlcikKIAlidWZfc3RhdGUgPSBwZ19hdG9taWNfcmVhZF91NjQoJmJ1 Zkhkci0+c3RhdGUpOwogCiAJaWYgKCEoYnVmX3N0YXRlICYgQk1fRElSVFkpKQotCQlwZ0J1ZmZl clVzYWdlLmxvY2FsX2Jsa3NfZGlydGllZCsrOworCQlJTlNUUl9CVUZVU0FHRV9JTkNSKGxvY2Fs X2Jsa3NfZGlydGllZCk7CiAKIAlidWZfc3RhdGUgfD0gQk1fRElSVFk7CiAKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3N0b3JhZ2UvZmlsZS9idWZmaWxlLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdl L2ZpbGUvYnVmZmlsZS5jCmluZGV4IGM0YWZlNGQzNjhhLi44YjUwMWRmY2FkZCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9maWxlL2J1ZmZpbGUuYworKysgYi9zcmMvYmFja2VuZC9z dG9yYWdlL2ZpbGUvYnVmZmlsZS5jCkBAIC00NzUsMTMgKzQ3NSwxMyBAQCBCdWZGaWxlTG9hZEJ1 ZmZlcihCdWZGaWxlICpmaWxlKQogCWlmICh0cmFja19pb190aW1pbmcpCiAJewogCQlJTlNUUl9U SU1FX1NFVF9DVVJSRU5UKGlvX3RpbWUpOwotCQlJTlNUUl9USU1FX0FDQ1VNX0RJRkYocGdCdWZm ZXJVc2FnZS50ZW1wX2Jsa19yZWFkX3RpbWUsIGlvX3RpbWUsIGlvX3N0YXJ0KTsKKwkJSU5TVFJf QlVGVVNBR0VfVElNRV9BQ0NVTV9ESUZGKHRlbXBfYmxrX3JlYWRfdGltZSwgaW9fdGltZSwgaW9f c3RhcnQpOwogCX0KIAogCS8qIHdlIGNob29zZSBub3QgdG8gYWR2YW5jZSBjdXJPZmZzZXQgaGVy ZSAqLwogCiAJaWYgKGZpbGUtPm5ieXRlcyA+IDApCi0JCXBnQnVmZmVyVXNhZ2UudGVtcF9ibGtz X3JlYWQrKzsKKwkJSU5TVFJfQlVGVVNBR0VfSU5DUih0ZW1wX2Jsa3NfcmVhZCk7CiB9CiAKIC8q CkBAIC01NDksMTMgKzU0OSwxMyBAQCBCdWZGaWxlRHVtcEJ1ZmZlcihCdWZGaWxlICpmaWxlKQog CQlpZiAodHJhY2tfaW9fdGltaW5nKQogCQl7CiAJCQlJTlNUUl9USU1FX1NFVF9DVVJSRU5UKGlv X3RpbWUpOwotCQkJSU5TVFJfVElNRV9BQ0NVTV9ESUZGKHBnQnVmZmVyVXNhZ2UudGVtcF9ibGtf d3JpdGVfdGltZSwgaW9fdGltZSwgaW9fc3RhcnQpOworCQkJSU5TVFJfQlVGVVNBR0VfVElNRV9B Q0NVTV9ESUZGKHRlbXBfYmxrX3dyaXRlX3RpbWUsIGlvX3RpbWUsIGlvX3N0YXJ0KTsKIAkJfQog CiAJCWZpbGUtPmN1ck9mZnNldCArPSBieXRlc3Rvd3JpdGU7CiAJCXdwb3MgKz0gYnl0ZXN0b3dy aXRlOwogCi0JCXBnQnVmZmVyVXNhZ2UudGVtcF9ibGtzX3dyaXR0ZW4rKzsKKwkJSU5TVFJfQlVG VVNBR0VfSU5DUih0ZW1wX2Jsa3Nfd3JpdHRlbik7CiAJfQogCWZpbGUtPmRpcnR5ID0gZmFsc2U7 CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9pby5jIGIv c3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X2lvLmMKaW5kZXggMjhkZTI0NTM4ZGMu LjllN2E4OGVjMGQwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0 YXRfaW8uYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0YXRfaW8uYwpAQCAt MTM1LDE3ICsxMzUsMTcgQEAgcGdzdGF0X2NvdW50X2lvX29wX3RpbWUoSU9PYmplY3QgaW9fb2Jq ZWN0LCBJT0NvbnRleHQgaW9fY29udGV4dCwgSU9PcCBpb19vcCwKIAkJCXsKIAkJCQlwZ3N0YXRf Y291bnRfYnVmZmVyX3dyaXRlX3RpbWUoSU5TVFJfVElNRV9HRVRfTUlDUk9TRUMoaW9fdGltZSkp OwogCQkJCWlmIChpb19vYmplY3QgPT0gSU9PQkpFQ1RfUkVMQVRJT04pCi0JCQkJCUlOU1RSX1RJ TUVfQUREKHBnQnVmZmVyVXNhZ2Uuc2hhcmVkX2Jsa193cml0ZV90aW1lLCBpb190aW1lKTsKKwkJ CQkJSU5TVFJfQlVGVVNBR0VfVElNRV9BREQoc2hhcmVkX2Jsa193cml0ZV90aW1lLCBpb190aW1l KTsKIAkJCQllbHNlIGlmIChpb19vYmplY3QgPT0gSU9PQkpFQ1RfVEVNUF9SRUxBVElPTikKLQkJ CQkJSU5TVFJfVElNRV9BREQocGdCdWZmZXJVc2FnZS5sb2NhbF9ibGtfd3JpdGVfdGltZSwgaW9f dGltZSk7CisJCQkJCUlOU1RSX0JVRlVTQUdFX1RJTUVfQUREKGxvY2FsX2Jsa193cml0ZV90aW1l LCBpb190aW1lKTsKIAkJCX0KIAkJCWVsc2UgaWYgKGlvX29wID09IElPT1BfUkVBRCkKIAkJCXsK IAkJCQlwZ3N0YXRfY291bnRfYnVmZmVyX3JlYWRfdGltZShJTlNUUl9USU1FX0dFVF9NSUNST1NF Qyhpb190aW1lKSk7CiAJCQkJaWYgKGlvX29iamVjdCA9PSBJT09CSkVDVF9SRUxBVElPTikKLQkJ CQkJSU5TVFJfVElNRV9BREQocGdCdWZmZXJVc2FnZS5zaGFyZWRfYmxrX3JlYWRfdGltZSwgaW9f dGltZSk7CisJCQkJCUlOU1RSX0JVRlVTQUdFX1RJTUVfQUREKHNoYXJlZF9ibGtfcmVhZF90aW1l LCBpb190aW1lKTsKIAkJCQllbHNlIGlmIChpb19vYmplY3QgPT0gSU9PQkpFQ1RfVEVNUF9SRUxB VElPTikKLQkJCQkJSU5TVFJfVElNRV9BREQocGdCdWZmZXJVc2FnZS5sb2NhbF9ibGtfcmVhZF90 aW1lLCBpb190aW1lKTsKKwkJCQkJSU5TVFJfQlVGVVNBR0VfVElNRV9BREQobG9jYWxfYmxrX3Jl YWRfdGltZSwgaW9fdGltZSk7CiAJCQl9CiAJCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv ZXhlY3V0b3IvaW5zdHJ1bWVudC5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvaW5zdHJ1bWVudC5o CmluZGV4IGIxMWQ2NDYzM2I1Li4xMTM5YmU4MzMzZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv ZXhlY3V0b3IvaW5zdHJ1bWVudC5oCisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2luc3RydW1l bnQuaApAQCAtMTUzLDQgKzE1MywyMyBAQCBleHRlcm4gdm9pZCBCdWZmZXJVc2FnZUFjY3VtRGlm ZihCdWZmZXJVc2FnZSAqZHN0LAogZXh0ZXJuIHZvaWQgV2FsVXNhZ2VBY2N1bURpZmYoV2FsVXNh Z2UgKmRzdCwgY29uc3QgV2FsVXNhZ2UgKmFkZCwKIAkJCQkJCQkgIGNvbnN0IFdhbFVzYWdlICpz dWIpOwogCisjZGVmaW5lIElOU1RSX0JVRlVTQUdFX0lOQ1IoZmxkKSBkbyB7IFwKKwkJcGdCdWZm ZXJVc2FnZS5mbGQrKzsgXAorCX0gd2hpbGUoMCkKKyNkZWZpbmUgSU5TVFJfQlVGVVNBR0VfQURE KGZsZCx2YWwpIGRvIHsgXAorCQlwZ0J1ZmZlclVzYWdlLmZsZCArPSB2YWw7IFwKKwl9IHdoaWxl KDApCisjZGVmaW5lIElOU1RSX0JVRlVTQUdFX1RJTUVfQUREKGZsZCx2YWwpIGRvIHsgXAorCUlO U1RSX1RJTUVfQUREKHBnQnVmZmVyVXNhZ2UuZmxkLCB2YWwpOyBcCisJfSB3aGlsZSAoMCkKKyNk ZWZpbmUgSU5TVFJfQlVGVVNBR0VfVElNRV9BQ0NVTV9ESUZGKGZsZCxlbmR2YWwsc3RhcnR2YWwp IGRvIHsgXAorCUlOU1RSX1RJTUVfQUNDVU1fRElGRihwZ0J1ZmZlclVzYWdlLmZsZCwgZW5kdmFs LCBzdGFydHZhbCk7IFwKKwl9IHdoaWxlICgwKQorI2RlZmluZSBJTlNUUl9XQUxVU0FHRV9JTkNS KGZsZCkgZG8geyBcCisJCXBnV2FsVXNhZ2UuZmxkKys7IFwKKwl9IHdoaWxlKDApCisjZGVmaW5l IElOU1RSX1dBTFVTQUdFX0FERChmbGQsdmFsKSBkbyB7IFwKKwkJcGdXYWxVc2FnZS5mbGQgKz0g dmFsOyBcCisJfSB3aGlsZSgwKQorCiAjZW5kaWYJCQkJCQkJLyogSU5TVFJVTUVOVF9IICovCi0t IAoyLjQ3LjEKCg== --000000000000c2e7d4064d33fd67 Content-Type: application/octet-stream; name="v9-0006-instrumentation-Use-Instrumentation-struct-for-pa.patch" Content-Disposition: attachment; filename="v9-0006-instrumentation-Use-Instrumentation-struct-for-pa.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmucb65x5 RnJvbSA2ZWJiMTM4OWQ5NGIyYzFkZjhhMWU3OTYyZDQyYWVhMzcyZmExMjRiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpEYXRlOiBT dW4sIDE1IE1hciAyMDI2IDIxOjQ0OjU4IC0wNzAwClN1YmplY3Q6IFtQQVRDSCB2OSA2LzldIGlu c3RydW1lbnRhdGlvbjogVXNlIEluc3RydW1lbnRhdGlvbiBzdHJ1Y3QgZm9yCiBwYXJhbGxlbCB3 b3JrZXJzCgpUaGlzIHNpbXBsaWZpZXMgdGhlIERTTSBhbGxvY2F0aW9ucyBhIGJpdCBzaW5jZSB3 ZSBkb24ndCBuZWVkIHRvCnNlcGFyYXRlbHkgYWxsb2NhdGUgV0FMIGFuZCBidWZmZXIgdXNhZ2Us IGFuZCBhbGxvd3MgdGhlIGVhc2llciBmdXR1cmUKYWRkaXRpb24gb2YgYSB0aGlyZCBzdGFjay1i YXNlZCBzdHJ1Y3QgYmVpbmcgZGlzY3Vzc2VkLgoKQXV0aG9yOiBMdWthcyBGaXR0bCA8bHVrYXNA Zml0dGwuY29tPgpSZXZpZXdlZC1ieToKRGlzY3Vzc2lvbjoKLS0tCiBzcmMvYmFja2VuZC9hY2Nl c3MvYnJpbi9icmluLmMgICAgICAgIHwgNDMgKysrKysrLS0tLS0tLS0tLS0KIHNyYy9iYWNrZW5k L2FjY2Vzcy9naW4vZ2luaW5zZXJ0LmMgICAgfCA0MyArKysrKystLS0tLS0tLS0tLQogc3JjL2Jh Y2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMgICB8IDQzICsrKysrKy0tLS0tLS0tLS0tCiBz cmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jIHwgNTIgKysrKysrKystLS0tLS0t LS0tLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYyAgIHwgNjYgKysrKysr KysrKysrLS0tLS0tLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9pbnN0cnVtZW50LmMg ICAgIHwgMTMgKysrLS0tCiBzcmMvaW5jbHVkZS9leGVjdXRvci9leGVjUGFyYWxsZWwuaCAgIHwg IDUgKy0KIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL2luc3RydW1lbnQuaCAgICAgfCAgNCArLQogOCBm aWxlcyBjaGFuZ2VkLCA5OCBpbnNlcnRpb25zKCspLCAxNzEgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jIGIvc3JjL2JhY2tlbmQvYWNjZXNz L2JyaW4vYnJpbi5jCmluZGV4IDFjZWIyMzA2OTU0Li4xYzk1ZWM5ZjYwNSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9i cmluL2JyaW4uYwpAQCAtNTEsOCArNTEsNyBAQAogI2RlZmluZSBQQVJBTExFTF9LRVlfQlJJTl9T SEFSRUQJCVVJTlQ2NENPTlNUKDB4QjAwMDAwMDAwMDAwMDAwMSkKICNkZWZpbmUgUEFSQUxMRUxf S0VZX1RVUExFU09SVAkJCVVJTlQ2NENPTlNUKDB4QjAwMDAwMDAwMDAwMDAwMikKICNkZWZpbmUg UEFSQUxMRUxfS0VZX1FVRVJZX1RFWFQJCQlVSU5UNjRDT05TVCgweEIwMDAwMDAwMDAwMDAwMDMp Ci0jZGVmaW5lIFBBUkFMTEVMX0tFWV9XQUxfVVNBR0UJCQlVSU5UNjRDT05TVCgweEIwMDAwMDAw MDAwMDAwMDQpCi0jZGVmaW5lIFBBUkFMTEVMX0tFWV9CVUZGRVJfVVNBR0UJCVVJTlQ2NENPTlNU KDB4QjAwMDAwMDAwMDAwMDAwNSkKKyNkZWZpbmUgUEFSQUxMRUxfS0VZX0lOU1RSVU1FTlRBVElP TglVSU5UNjRDT05TVCgweEIwMDAwMDAwMDAwMDAwMDQpCiAKIC8qCiAgKiBTdGF0dXMgZm9yIGlu ZGV4IGJ1aWxkcyBwZXJmb3JtZWQgaW4gcGFyYWxsZWwuICBUaGlzIGlzIGFsbG9jYXRlZCBpbiBh CkBAIC0xNDgsOCArMTQ3LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQnJpbkxlYWRlcgogCUJyaW5TaGFy ZWQgKmJyaW5zaGFyZWQ7CiAJU2hhcmVkc29ydCAqc2hhcmVkc29ydDsKIAlTbmFwc2hvdAlzbmFw c2hvdDsKLQlXYWxVc2FnZSAgICp3YWx1c2FnZTsKLQlCdWZmZXJVc2FnZSAqYnVmZmVydXNhZ2U7 CisJSW5zdHJ1bWVudGF0aW9uICppbnN0cjsKIH0gQnJpbkxlYWRlcjsKIAogLyoKQEAgLTIzODcs OCArMjM4NSw3IEBAIF9icmluX2JlZ2luX3BhcmFsbGVsKEJyaW5CdWlsZFN0YXRlICpidWlsZHN0 YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIAlCcmluU2hhcmVkICpicmluc2hh cmVkOwogCVNoYXJlZHNvcnQgKnNoYXJlZHNvcnQ7CiAJQnJpbkxlYWRlciAqYnJpbmxlYWRlciA9 IHBhbGxvYzBfb2JqZWN0KEJyaW5MZWFkZXIpOwotCVdhbFVzYWdlICAgKndhbHVzYWdlOwotCUJ1 ZmZlclVzYWdlICpidWZmZXJ1c2FnZTsKKwlJbnN0cnVtZW50YXRpb24gKmluc3RyOwogCWJvb2wJ CWxlYWRlcnBhcnRpY2lwYXRlcyA9IHRydWU7CiAJaW50CQkJcXVlcnlsZW47CiAKQEAgLTI0MzAs MTggKzI0MjcsMTQgQEAgX2JyaW5fYmVnaW5fcGFyYWxsZWwoQnJpbkJ1aWxkU3RhdGUgKmJ1aWxk c3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAogCXNobV90b2NfZXN0aW1hdGVf a2V5cygmcGN4dC0+ZXN0aW1hdG9yLCAyKTsKIAogCS8qCi0JICogRXN0aW1hdGUgc3BhY2UgZm9y IFdhbFVzYWdlIGFuZCBCdWZmZXJVc2FnZSAtLSBQQVJBTExFTF9LRVlfV0FMX1VTQUdFCi0JICog YW5kIFBBUkFMTEVMX0tFWV9CVUZGRVJfVVNBR0UuCisJICogRXN0aW1hdGUgc3BhY2UgZm9yIElu c3RydW1lbnRhdGlvbiAtLSBQQVJBTExFTF9LRVlfSU5TVFJVTUVOVEFUSU9OLgogCSAqCiAJICog SWYgdGhlcmUgYXJlIG5vIGV4dGVuc2lvbnMgbG9hZGVkIHRoYXQgY2FyZSwgd2UgY291bGQgc2tp cCB0aGlzLiAgV2UKIAkgKiBoYXZlIG5vIHdheSBvZiBrbm93aW5nIHdoZXRoZXIgYW55b25lJ3Mg bG9va2luZyBhdCBpbnN0cnVtZW50YXRpb24sIHNvCiAJICogZG8gaXQgdW5jb25kaXRpb25hbGx5 LgogCSAqLwogCXNobV90b2NfZXN0aW1hdGVfY2h1bmsoJnBjeHQtPmVzdGltYXRvciwKLQkJCQkJ CSAgIG11bF9zaXplKHNpemVvZihXYWxVc2FnZSksIHBjeHQtPm53b3JrZXJzKSk7Ci0Jc2htX3Rv Y19lc3RpbWF0ZV9rZXlzKCZwY3h0LT5lc3RpbWF0b3IsIDEpOwotCXNobV90b2NfZXN0aW1hdGVf Y2h1bmsoJnBjeHQtPmVzdGltYXRvciwKLQkJCQkJCSAgIG11bF9zaXplKHNpemVvZihCdWZmZXJV c2FnZSksIHBjeHQtPm53b3JrZXJzKSk7CisJCQkJCQkgICBtdWxfc2l6ZShzaXplb2YoSW5zdHJ1 bWVudGF0aW9uKSwgcGN4dC0+bndvcmtlcnMpKTsKIAlzaG1fdG9jX2VzdGltYXRlX2tleXMoJnBj eHQtPmVzdGltYXRvciwgMSk7CiAKIAkvKiBGaW5hbGx5LCBlc3RpbWF0ZSBQQVJBTExFTF9LRVlf UVVFUllfVEVYVCBzcGFjZSAqLwpAQCAtMjUxNCwxNSArMjUwNywxMiBAQCBfYnJpbl9iZWdpbl9w YXJhbGxlbChCcmluQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRp b24gaW5kZXgsCiAJfQogCiAJLyoKLQkgKiBBbGxvY2F0ZSBzcGFjZSBmb3IgZWFjaCB3b3JrZXIn cyBXYWxVc2FnZSBhbmQgQnVmZmVyVXNhZ2U7IG5vIG5lZWQgdG8KKwkgKiBBbGxvY2F0ZSBzcGFj ZSBmb3IgZWFjaCB3b3JrZXIncyBJbnN0cnVtZW50YXRpb247IG5vIG5lZWQgdG8KIAkgKiBpbml0 aWFsaXplLgogCSAqLwotCXdhbHVzYWdlID0gc2htX3RvY19hbGxvY2F0ZShwY3h0LT50b2MsCi0J CQkJCQkJCW11bF9zaXplKHNpemVvZihXYWxVc2FnZSksIHBjeHQtPm53b3JrZXJzKSk7Ci0Jc2ht X3RvY19pbnNlcnQocGN4dC0+dG9jLCBQQVJBTExFTF9LRVlfV0FMX1VTQUdFLCB3YWx1c2FnZSk7 Ci0JYnVmZmVydXNhZ2UgPSBzaG1fdG9jX2FsbG9jYXRlKHBjeHQtPnRvYywKLQkJCQkJCQkJICAg bXVsX3NpemUoc2l6ZW9mKEJ1ZmZlclVzYWdlKSwgcGN4dC0+bndvcmtlcnMpKTsKLQlzaG1fdG9j X2luc2VydChwY3h0LT50b2MsIFBBUkFMTEVMX0tFWV9CVUZGRVJfVVNBR0UsIGJ1ZmZlcnVzYWdl KTsKKwlpbnN0ciA9IHNobV90b2NfYWxsb2NhdGUocGN4dC0+dG9jLAorCQkJCQkJCSBtdWxfc2l6 ZShzaXplb2YoSW5zdHJ1bWVudGF0aW9uKSwgcGN4dC0+bndvcmtlcnMpKTsKKwlzaG1fdG9jX2lu c2VydChwY3h0LT50b2MsIFBBUkFMTEVMX0tFWV9JTlNUUlVNRU5UQVRJT04sIGluc3RyKTsKIAog CS8qIExhdW5jaCB3b3JrZXJzLCBzYXZpbmcgc3RhdHVzIGZvciBsZWFkZXIvY2FsbGVyICovCiAJ TGF1bmNoUGFyYWxsZWxXb3JrZXJzKHBjeHQpOwpAQCAtMjUzMyw4ICsyNTIzLDcgQEAgX2JyaW5f YmVnaW5fcGFyYWxsZWwoQnJpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAs IFJlbGF0aW9uIGluZGV4LAogCWJyaW5sZWFkZXItPmJyaW5zaGFyZWQgPSBicmluc2hhcmVkOwog CWJyaW5sZWFkZXItPnNoYXJlZHNvcnQgPSBzaGFyZWRzb3J0OwogCWJyaW5sZWFkZXItPnNuYXBz aG90ID0gc25hcHNob3Q7Ci0JYnJpbmxlYWRlci0+d2FsdXNhZ2UgPSB3YWx1c2FnZTsKLQlicmlu bGVhZGVyLT5idWZmZXJ1c2FnZSA9IGJ1ZmZlcnVzYWdlOworCWJyaW5sZWFkZXItPmluc3RyID0g aW5zdHI7CiAKIAkvKiBJZiBubyB3b3JrZXJzIHdlcmUgc3VjY2Vzc2Z1bGx5IGxhdW5jaGVkLCBi YWNrIG91dCAoZG8gc2VyaWFsIGJ1aWxkKSAqLwogCWlmIChwY3h0LT5ud29ya2Vyc19sYXVuY2hl ZCA9PSAwKQpAQCAtMjU3Myw3ICsyNTYyLDcgQEAgX2JyaW5fZW5kX3BhcmFsbGVsKEJyaW5MZWFk ZXIgKmJyaW5sZWFkZXIsIEJyaW5CdWlsZFN0YXRlICpzdGF0ZSkKIAkgKiBvciB3ZSBtaWdodCBn ZXQgaW5jb21wbGV0ZSBkYXRhLikKIAkgKi8KIAlmb3IgKGkgPSAwOyBpIDwgYnJpbmxlYWRlci0+ cGN4dC0+bndvcmtlcnNfbGF1bmNoZWQ7IGkrKykKLQkJSW5zdHJBY2N1bVBhcmFsbGVsUXVlcnko JmJyaW5sZWFkZXItPmJ1ZmZlcnVzYWdlW2ldLCAmYnJpbmxlYWRlci0+d2FsdXNhZ2VbaV0pOwor CQlJbnN0ckFjY3VtUGFyYWxsZWxRdWVyeSgmYnJpbmxlYWRlci0+aW5zdHJbaV0pOwogCiAJLyog RnJlZSBsYXN0IHJlZmVyZW5jZSB0byBNVkNDIHNuYXBzaG90LCBpZiBvbmUgd2FzIHVzZWQgKi8K IAlpZiAoSXNNVkNDU25hcHNob3QoYnJpbmxlYWRlci0+c25hcHNob3QpKQpAQCAtMjg4Nyw4ICsy ODc2LDcgQEAgX2JyaW5fcGFyYWxsZWxfYnVpbGRfbWFpbihkc21fc2VnbWVudCAqc2VnLCBzaG1f dG9jICp0b2MpCiAJTE9DS01PREUJaGVhcExvY2ttb2RlOwogCUxPQ0tNT0RFCWluZGV4TG9ja21v ZGU7CiAJUXVlcnlJbnN0cnVtZW50YXRpb24gKmluc3RyOwotCVdhbFVzYWdlICAgKndhbHVzYWdl OwotCUJ1ZmZlclVzYWdlICpidWZmZXJ1c2FnZTsKKwlJbnN0cnVtZW50YXRpb24gKndvcmtlcl9p bnN0cjsKIAlpbnQJCQlzb3J0bWVtOwogCiAJLyoKQEAgLTI5NDksMTEgKzI5MzcsOCBAQCBfYnJp bl9wYXJhbGxlbF9idWlsZF9tYWluKGRzbV9zZWdtZW50ICpzZWcsIHNobV90b2MgKnRvYykKIAkJ CQkJCQkJICBoZWFwUmVsLCBpbmRleFJlbCwgc29ydG1lbSwgZmFsc2UpOwogCiAJLyogUmVwb3J0 IFdBTC9idWZmZXIgdXNhZ2UgZHVyaW5nIHBhcmFsbGVsIGV4ZWN1dGlvbiAqLwotCWJ1ZmZlcnVz YWdlID0gc2htX3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9LRVlfQlVGRkVSX1VTQUdFLCBmYWxz ZSk7Ci0Jd2FsdXNhZ2UgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVMX0tFWV9XQUxfVVNB R0UsIGZhbHNlKTsKLQlJbnN0ckVuZFBhcmFsbGVsUXVlcnkoaW5zdHIsCi0JCQkJCQkgICZidWZm ZXJ1c2FnZVtQYXJhbGxlbFdvcmtlck51bWJlcl0sCi0JCQkJCQkgICZ3YWx1c2FnZVtQYXJhbGxl bFdvcmtlck51bWJlcl0pOworCXdvcmtlcl9pbnN0ciA9IHNobV90b2NfbG9va3VwKHRvYywgUEFS QUxMRUxfS0VZX0lOU1RSVU1FTlRBVElPTiwgZmFsc2UpOworCUluc3RyRW5kUGFyYWxsZWxRdWVy eShpbnN0ciwgJndvcmtlcl9pbnN0cltQYXJhbGxlbFdvcmtlck51bWJlcl0pOwogCiAJaW5kZXhf Y2xvc2UoaW5kZXhSZWwsIGluZGV4TG9ja21vZGUpOwogCXRhYmxlX2Nsb3NlKGhlYXBSZWwsIGhl YXBMb2NrbW9kZSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmluc2Vy dC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5pbnNlcnQuYwppbmRleCAwNGNkNTM5MTZj YS4uNTFiYjA5OGEyYTIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luaW5z ZXJ0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5pbnNlcnQuYwpAQCAtNDUsOCAr NDUsNyBAQAogI2RlZmluZSBQQVJBTExFTF9LRVlfR0lOX1NIQVJFRAkJCVVJTlQ2NENPTlNUKDB4 QjAwMDAwMDAwMDAwMDAwMSkKICNkZWZpbmUgUEFSQUxMRUxfS0VZX1RVUExFU09SVAkJCVVJTlQ2 NENPTlNUKDB4QjAwMDAwMDAwMDAwMDAwMikKICNkZWZpbmUgUEFSQUxMRUxfS0VZX1FVRVJZX1RF WFQJCQlVSU5UNjRDT05TVCgweEIwMDAwMDAwMDAwMDAwMDMpCi0jZGVmaW5lIFBBUkFMTEVMX0tF WV9XQUxfVVNBR0UJCQlVSU5UNjRDT05TVCgweEIwMDAwMDAwMDAwMDAwMDQpCi0jZGVmaW5lIFBB UkFMTEVMX0tFWV9CVUZGRVJfVVNBR0UJCVVJTlQ2NENPTlNUKDB4QjAwMDAwMDAwMDAwMDAwNSkK KyNkZWZpbmUgUEFSQUxMRUxfS0VZX0lOU1RSVU1FTlRBVElPTglVSU5UNjRDT05TVCgweEIwMDAw MDAwMDAwMDAwMDQpCiAKIC8qCiAgKiBTdGF0dXMgZm9yIGluZGV4IGJ1aWxkcyBwZXJmb3JtZWQg aW4gcGFyYWxsZWwuICBUaGlzIGlzIGFsbG9jYXRlZCBpbiBhCkBAIC0xMzgsOCArMTM3LDcgQEAg dHlwZWRlZiBzdHJ1Y3QgR2luTGVhZGVyCiAJR2luQnVpbGRTaGFyZWQgKmdpbnNoYXJlZDsKIAlT aGFyZWRzb3J0ICpzaGFyZWRzb3J0OwogCVNuYXBzaG90CXNuYXBzaG90OwotCVdhbFVzYWdlICAg KndhbHVzYWdlOwotCUJ1ZmZlclVzYWdlICpidWZmZXJ1c2FnZTsKKwlJbnN0cnVtZW50YXRpb24g Kmluc3RyOwogfSBHaW5MZWFkZXI7CiAKIHR5cGVkZWYgc3RydWN0CkBAIC05NDUsOCArOTQzLDcg QEAgX2dpbl9iZWdpbl9wYXJhbGxlbChHaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlv biBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIAlHaW5CdWlsZFNoYXJlZCAqZ2luc2hhcmVkOwogCVNo YXJlZHNvcnQgKnNoYXJlZHNvcnQ7CiAJR2luTGVhZGVyICAqZ2lubGVhZGVyID0gcGFsbG9jMF9v YmplY3QoR2luTGVhZGVyKTsKLQlXYWxVc2FnZSAgICp3YWx1c2FnZTsKLQlCdWZmZXJVc2FnZSAq YnVmZmVydXNhZ2U7CisJSW5zdHJ1bWVudGF0aW9uICppbnN0cjsKIAlib29sCQlsZWFkZXJwYXJ0 aWNpcGF0ZXMgPSB0cnVlOwogCWludAkJCXF1ZXJ5bGVuOwogCkBAIC05ODcsMTggKzk4NCwxNCBA QCBfZ2luX2JlZ2luX3BhcmFsbGVsKEdpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9u IGhlYXAsIFJlbGF0aW9uIGluZGV4LAogCXNobV90b2NfZXN0aW1hdGVfa2V5cygmcGN4dC0+ZXN0 aW1hdG9yLCAyKTsKIAogCS8qCi0JICogRXN0aW1hdGUgc3BhY2UgZm9yIFdhbFVzYWdlIGFuZCBC dWZmZXJVc2FnZSAtLSBQQVJBTExFTF9LRVlfV0FMX1VTQUdFCi0JICogYW5kIFBBUkFMTEVMX0tF WV9CVUZGRVJfVVNBR0UuCisJICogRXN0aW1hdGUgc3BhY2UgZm9yIEluc3RydW1lbnRhdGlvbiAt LSBQQVJBTExFTF9LRVlfSU5TVFJVTUVOVEFUSU9OLgogCSAqCiAJICogSWYgdGhlcmUgYXJlIG5v IGV4dGVuc2lvbnMgbG9hZGVkIHRoYXQgY2FyZSwgd2UgY291bGQgc2tpcCB0aGlzLiAgV2UKIAkg KiBoYXZlIG5vIHdheSBvZiBrbm93aW5nIHdoZXRoZXIgYW55b25lJ3MgbG9va2luZyBhdCBpbnN0 cnVtZW50YXRpb24sIHNvCiAJICogZG8gaXQgdW5jb25kaXRpb25hbGx5LgogCSAqLwogCXNobV90 b2NfZXN0aW1hdGVfY2h1bmsoJnBjeHQtPmVzdGltYXRvciwKLQkJCQkJCSAgIG11bF9zaXplKHNp emVvZihXYWxVc2FnZSksIHBjeHQtPm53b3JrZXJzKSk7Ci0Jc2htX3RvY19lc3RpbWF0ZV9rZXlz KCZwY3h0LT5lc3RpbWF0b3IsIDEpOwotCXNobV90b2NfZXN0aW1hdGVfY2h1bmsoJnBjeHQtPmVz dGltYXRvciwKLQkJCQkJCSAgIG11bF9zaXplKHNpemVvZihCdWZmZXJVc2FnZSksIHBjeHQtPm53 b3JrZXJzKSk7CisJCQkJCQkgICBtdWxfc2l6ZShzaXplb2YoSW5zdHJ1bWVudGF0aW9uKSwgcGN4 dC0+bndvcmtlcnMpKTsKIAlzaG1fdG9jX2VzdGltYXRlX2tleXMoJnBjeHQtPmVzdGltYXRvciwg MSk7CiAKIAkvKiBGaW5hbGx5LCBlc3RpbWF0ZSBQQVJBTExFTF9LRVlfUVVFUllfVEVYVCBzcGFj ZSAqLwpAQCAtMTA2NiwxNSArMTA1OSwxMiBAQCBfZ2luX2JlZ2luX3BhcmFsbGVsKEdpbkJ1aWxk U3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAogCX0KIAog CS8qCi0JICogQWxsb2NhdGUgc3BhY2UgZm9yIGVhY2ggd29ya2VyJ3MgV2FsVXNhZ2UgYW5kIEJ1 ZmZlclVzYWdlOyBubyBuZWVkIHRvCisJICogQWxsb2NhdGUgc3BhY2UgZm9yIGVhY2ggd29ya2Vy J3MgSW5zdHJ1bWVudGF0aW9uOyBubyBuZWVkIHRvCiAJICogaW5pdGlhbGl6ZS4KIAkgKi8KLQl3 YWx1c2FnZSA9IHNobV90b2NfYWxsb2NhdGUocGN4dC0+dG9jLAotCQkJCQkJCQltdWxfc2l6ZShz aXplb2YoV2FsVXNhZ2UpLCBwY3h0LT5ud29ya2VycykpOwotCXNobV90b2NfaW5zZXJ0KHBjeHQt PnRvYywgUEFSQUxMRUxfS0VZX1dBTF9VU0FHRSwgd2FsdXNhZ2UpOwotCWJ1ZmZlcnVzYWdlID0g c2htX3RvY19hbGxvY2F0ZShwY3h0LT50b2MsCi0JCQkJCQkJCSAgIG11bF9zaXplKHNpemVvZihC dWZmZXJVc2FnZSksIHBjeHQtPm53b3JrZXJzKSk7Ci0Jc2htX3RvY19pbnNlcnQocGN4dC0+dG9j LCBQQVJBTExFTF9LRVlfQlVGRkVSX1VTQUdFLCBidWZmZXJ1c2FnZSk7CisJaW5zdHIgPSBzaG1f dG9jX2FsbG9jYXRlKHBjeHQtPnRvYywKKwkJCQkJCQkgbXVsX3NpemUoc2l6ZW9mKEluc3RydW1l bnRhdGlvbiksIHBjeHQtPm53b3JrZXJzKSk7CisJc2htX3RvY19pbnNlcnQocGN4dC0+dG9jLCBQ QVJBTExFTF9LRVlfSU5TVFJVTUVOVEFUSU9OLCBpbnN0cik7CiAKIAkvKiBMYXVuY2ggd29ya2Vy cywgc2F2aW5nIHN0YXR1cyBmb3IgbGVhZGVyL2NhbGxlciAqLwogCUxhdW5jaFBhcmFsbGVsV29y a2VycyhwY3h0KTsKQEAgLTEwODUsOCArMTA3NSw3IEBAIF9naW5fYmVnaW5fcGFyYWxsZWwoR2lu QnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJ Z2lubGVhZGVyLT5naW5zaGFyZWQgPSBnaW5zaGFyZWQ7CiAJZ2lubGVhZGVyLT5zaGFyZWRzb3J0 ID0gc2hhcmVkc29ydDsKIAlnaW5sZWFkZXItPnNuYXBzaG90ID0gc25hcHNob3Q7Ci0JZ2lubGVh ZGVyLT53YWx1c2FnZSA9IHdhbHVzYWdlOwotCWdpbmxlYWRlci0+YnVmZmVydXNhZ2UgPSBidWZm ZXJ1c2FnZTsKKwlnaW5sZWFkZXItPmluc3RyID0gaW5zdHI7CiAKIAkvKiBJZiBubyB3b3JrZXJz IHdlcmUgc3VjY2Vzc2Z1bGx5IGxhdW5jaGVkLCBiYWNrIG91dCAoZG8gc2VyaWFsIGJ1aWxkKSAq LwogCWlmIChwY3h0LT5ud29ya2Vyc19sYXVuY2hlZCA9PSAwKQpAQCAtMTEyNSw3ICsxMTE0LDcg QEAgX2dpbl9lbmRfcGFyYWxsZWwoR2luTGVhZGVyICpnaW5sZWFkZXIsIEdpbkJ1aWxkU3RhdGUg KnN0YXRlKQogCSAqIG9yIHdlIG1pZ2h0IGdldCBpbmNvbXBsZXRlIGRhdGEuKQogCSAqLwogCWZv ciAoaSA9IDA7IGkgPCBnaW5sZWFkZXItPnBjeHQtPm53b3JrZXJzX2xhdW5jaGVkOyBpKyspCi0J CUluc3RyQWNjdW1QYXJhbGxlbFF1ZXJ5KCZnaW5sZWFkZXItPmJ1ZmZlcnVzYWdlW2ldLCAmZ2lu bGVhZGVyLT53YWx1c2FnZVtpXSk7CisJCUluc3RyQWNjdW1QYXJhbGxlbFF1ZXJ5KCZnaW5sZWFk ZXItPmluc3RyW2ldKTsKIAogCS8qIEZyZWUgbGFzdCByZWZlcmVuY2UgdG8gTVZDQyBzbmFwc2hv dCwgaWYgb25lIHdhcyB1c2VkICovCiAJaWYgKElzTVZDQ1NuYXBzaG90KGdpbmxlYWRlci0+c25h cHNob3QpKQpAQCAtMjExOCw4ICsyMTA3LDcgQEAgX2dpbl9wYXJhbGxlbF9idWlsZF9tYWluKGRz bV9zZWdtZW50ICpzZWcsIHNobV90b2MgKnRvYykKIAlMT0NLTU9ERQloZWFwTG9ja21vZGU7CiAJ TE9DS01PREUJaW5kZXhMb2NrbW9kZTsKIAlRdWVyeUluc3RydW1lbnRhdGlvbiAqaW5zdHI7Ci0J V2FsVXNhZ2UgICAqd2FsdXNhZ2U7Ci0JQnVmZmVyVXNhZ2UgKmJ1ZmZlcnVzYWdlOworCUluc3Ry dW1lbnRhdGlvbiAqd29ya2VyX2luc3RyOwogCWludAkJCXNvcnRtZW07CiAKIAkvKgpAQCAtMjE5 OSwxMSArMjE4Nyw4IEBAIF9naW5fcGFyYWxsZWxfYnVpbGRfbWFpbihkc21fc2VnbWVudCAqc2Vn LCBzaG1fdG9jICp0b2MpCiAJCQkJCQkJCSBoZWFwUmVsLCBpbmRleFJlbCwgc29ydG1lbSwgZmFs c2UpOwogCiAJLyogUmVwb3J0IFdBTC9idWZmZXIgdXNhZ2UgZHVyaW5nIHBhcmFsbGVsIGV4ZWN1 dGlvbiAqLwotCWJ1ZmZlcnVzYWdlID0gc2htX3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9LRVlf QlVGRkVSX1VTQUdFLCBmYWxzZSk7Ci0Jd2FsdXNhZ2UgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBB UkFMTEVMX0tFWV9XQUxfVVNBR0UsIGZhbHNlKTsKLQlJbnN0ckVuZFBhcmFsbGVsUXVlcnkoaW5z dHIsCi0JCQkJCQkgICZidWZmZXJ1c2FnZVtQYXJhbGxlbFdvcmtlck51bWJlcl0sCi0JCQkJCQkg ICZ3YWx1c2FnZVtQYXJhbGxlbFdvcmtlck51bWJlcl0pOworCXdvcmtlcl9pbnN0ciA9IHNobV90 b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfS0VZX0lOU1RSVU1FTlRBVElPTiwgZmFsc2UpOworCUlu c3RyRW5kUGFyYWxsZWxRdWVyeShpbnN0ciwgJndvcmtlcl9pbnN0cltQYXJhbGxlbFdvcmtlck51 bWJlcl0pOwogCiAJaW5kZXhfY2xvc2UoaW5kZXhSZWwsIGluZGV4TG9ja21vZGUpOwogCXRhYmxl X2Nsb3NlKGhlYXBSZWwsIGhlYXBMb2NrbW9kZSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9h Y2Nlc3MvbmJ0cmVlL25idHNvcnQuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29y dC5jCmluZGV4IDZhMjYxYzhkY2JkLi41MDRiMzRjYzkwNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJl ZS9uYnRzb3J0LmMKQEAgLTY2LDggKzY2LDcgQEAKICNkZWZpbmUgUEFSQUxMRUxfS0VZX1RVUExF U09SVAkJCVVJTlQ2NENPTlNUKDB4QTAwMDAwMDAwMDAwMDAwMikKICNkZWZpbmUgUEFSQUxMRUxf S0VZX1RVUExFU09SVF9TUE9PTDIJVUlOVDY0Q09OU1QoMHhBMDAwMDAwMDAwMDAwMDAzKQogI2Rl ZmluZSBQQVJBTExFTF9LRVlfUVVFUllfVEVYVAkJCVVJTlQ2NENPTlNUKDB4QTAwMDAwMDAwMDAw MDAwNCkKLSNkZWZpbmUgUEFSQUxMRUxfS0VZX1dBTF9VU0FHRQkJCVVJTlQ2NENPTlNUKDB4QTAw MDAwMDAwMDAwMDAwNSkKLSNkZWZpbmUgUEFSQUxMRUxfS0VZX0JVRkZFUl9VU0FHRQkJVUlOVDY0 Q09OU1QoMHhBMDAwMDAwMDAwMDAwMDA2KQorI2RlZmluZSBQQVJBTExFTF9LRVlfSU5TVFJVTUVO VEFUSU9OCVVJTlQ2NENPTlNUKDB4QTAwMDAwMDAwMDAwMDAwNSkKIAogLyoKICAqIERJU0FCTEVf TEVBREVSX1BBUlRJQ0lQQVRJT04gZGlzYWJsZXMgdGhlIGxlYWRlcidzIHBhcnRpY2lwYXRpb24g aW4KQEAgLTE5NSw4ICsxOTQsNyBAQCB0eXBlZGVmIHN0cnVjdCBCVExlYWRlcgogCVNoYXJlZHNv cnQgKnNoYXJlZHNvcnQ7CiAJU2hhcmVkc29ydCAqc2hhcmVkc29ydDI7CiAJU25hcHNob3QJc25h cHNob3Q7Ci0JV2FsVXNhZ2UgICAqd2FsdXNhZ2U7Ci0JQnVmZmVyVXNhZ2UgKmJ1ZmZlcnVzYWdl OworCUluc3RydW1lbnRhdGlvbiAqaW5zdHI7CiB9IEJUTGVhZGVyOwogCiAvKgpAQCAtMTQwOCw4 ICsxNDA2LDcgQEAgX2J0X2JlZ2luX3BhcmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwg Ym9vbCBpc2NvbmN1cnJlbnQsIGludCByZXF1ZXN0KQogCVNoYXJlZHNvcnQgKnNoYXJlZHNvcnQy OwogCUJUU3Bvb2wgICAgKmJ0c3Bvb2wgPSBidWlsZHN0YXRlLT5zcG9vbDsKIAlCVExlYWRlciAg ICpidGxlYWRlciA9IHBhbGxvYzBfb2JqZWN0KEJUTGVhZGVyKTsKLQlXYWxVc2FnZSAgICp3YWx1 c2FnZTsKLQlCdWZmZXJVc2FnZSAqYnVmZmVydXNhZ2U7CisJSW5zdHJ1bWVudGF0aW9uICppbnN0 cjsKIAlib29sCQlsZWFkZXJwYXJ0aWNpcGF0ZXMgPSB0cnVlOwogCWludAkJCXF1ZXJ5bGVuOwog CkBAIC0xNDYyLDE4ICsxNDU5LDE0IEBAIF9idF9iZWdpbl9wYXJhbGxlbChCVEJ1aWxkU3RhdGUg KmJ1aWxkc3RhdGUsIGJvb2wgaXNjb25jdXJyZW50LCBpbnQgcmVxdWVzdCkKIAl9CiAKIAkvKgot CSAqIEVzdGltYXRlIHNwYWNlIGZvciBXYWxVc2FnZSBhbmQgQnVmZmVyVXNhZ2UgLS0gUEFSQUxM RUxfS0VZX1dBTF9VU0FHRQotCSAqIGFuZCBQQVJBTExFTF9LRVlfQlVGRkVSX1VTQUdFLgorCSAq IEVzdGltYXRlIHNwYWNlIGZvciBJbnN0cnVtZW50YXRpb24gLS0gUEFSQUxMRUxfS0VZX0lOU1RS VU1FTlRBVElPTi4KIAkgKgogCSAqIElmIHRoZXJlIGFyZSBubyBleHRlbnNpb25zIGxvYWRlZCB0 aGF0IGNhcmUsIHdlIGNvdWxkIHNraXAgdGhpcy4gIFdlCiAJICogaGF2ZSBubyB3YXkgb2Yga25v d2luZyB3aGV0aGVyIGFueW9uZSdzIGxvb2tpbmcgYXQgaW5zdHJ1bWVudGF0aW9uLCBzbwogCSAq IGRvIGl0IHVuY29uZGl0aW9uYWxseS4KIAkgKi8KIAlzaG1fdG9jX2VzdGltYXRlX2NodW5rKCZw Y3h0LT5lc3RpbWF0b3IsCi0JCQkJCQkgICBtdWxfc2l6ZShzaXplb2YoV2FsVXNhZ2UpLCBwY3h0 LT5ud29ya2VycykpOwotCXNobV90b2NfZXN0aW1hdGVfa2V5cygmcGN4dC0+ZXN0aW1hdG9yLCAx KTsKLQlzaG1fdG9jX2VzdGltYXRlX2NodW5rKCZwY3h0LT5lc3RpbWF0b3IsCi0JCQkJCQkgICBt dWxfc2l6ZShzaXplb2YoQnVmZmVyVXNhZ2UpLCBwY3h0LT5ud29ya2VycykpOworCQkJCQkJICAg bXVsX3NpemUoc2l6ZW9mKEluc3RydW1lbnRhdGlvbiksIHBjeHQtPm53b3JrZXJzKSk7CiAJc2ht X3RvY19lc3RpbWF0ZV9rZXlzKCZwY3h0LT5lc3RpbWF0b3IsIDEpOwogCiAJLyogRmluYWxseSwg ZXN0aW1hdGUgUEFSQUxMRUxfS0VZX1FVRVJZX1RFWFQgc3BhY2UgKi8KQEAgLTE1NjAsMTUgKzE1 NTMsMTIgQEAgX2J0X2JlZ2luX3BhcmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9v bCBpc2NvbmN1cnJlbnQsIGludCByZXF1ZXN0KQogCX0KIAogCS8qCi0JICogQWxsb2NhdGUgc3Bh Y2UgZm9yIGVhY2ggd29ya2VyJ3MgV2FsVXNhZ2UgYW5kIEJ1ZmZlclVzYWdlOyBubyBuZWVkIHRv CisJICogQWxsb2NhdGUgc3BhY2UgZm9yIGVhY2ggd29ya2VyJ3MgSW5zdHJ1bWVudGF0aW9uOyBu byBuZWVkIHRvCiAJICogaW5pdGlhbGl6ZS4KIAkgKi8KLQl3YWx1c2FnZSA9IHNobV90b2NfYWxs b2NhdGUocGN4dC0+dG9jLAotCQkJCQkJCQltdWxfc2l6ZShzaXplb2YoV2FsVXNhZ2UpLCBwY3h0 LT5ud29ya2VycykpOwotCXNobV90b2NfaW5zZXJ0KHBjeHQtPnRvYywgUEFSQUxMRUxfS0VZX1dB TF9VU0FHRSwgd2FsdXNhZ2UpOwotCWJ1ZmZlcnVzYWdlID0gc2htX3RvY19hbGxvY2F0ZShwY3h0 LT50b2MsCi0JCQkJCQkJCSAgIG11bF9zaXplKHNpemVvZihCdWZmZXJVc2FnZSksIHBjeHQtPm53 b3JrZXJzKSk7Ci0Jc2htX3RvY19pbnNlcnQocGN4dC0+dG9jLCBQQVJBTExFTF9LRVlfQlVGRkVS X1VTQUdFLCBidWZmZXJ1c2FnZSk7CisJaW5zdHIgPSBzaG1fdG9jX2FsbG9jYXRlKHBjeHQtPnRv YywKKwkJCQkJCQkgbXVsX3NpemUoc2l6ZW9mKEluc3RydW1lbnRhdGlvbiksIHBjeHQtPm53b3Jr ZXJzKSk7CisJc2htX3RvY19pbnNlcnQocGN4dC0+dG9jLCBQQVJBTExFTF9LRVlfSU5TVFJVTUVO VEFUSU9OLCBpbnN0cik7CiAKIAkvKiBMYXVuY2ggd29ya2Vycywgc2F2aW5nIHN0YXR1cyBmb3Ig bGVhZGVyL2NhbGxlciAqLwogCUxhdW5jaFBhcmFsbGVsV29ya2VycyhwY3h0KTsKQEAgLTE1ODAs OCArMTU3MCw3IEBAIF9idF9iZWdpbl9wYXJhbGxlbChCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUs IGJvb2wgaXNjb25jdXJyZW50LCBpbnQgcmVxdWVzdCkKIAlidGxlYWRlci0+c2hhcmVkc29ydCA9 IHNoYXJlZHNvcnQ7CiAJYnRsZWFkZXItPnNoYXJlZHNvcnQyID0gc2hhcmVkc29ydDI7CiAJYnRs ZWFkZXItPnNuYXBzaG90ID0gc25hcHNob3Q7Ci0JYnRsZWFkZXItPndhbHVzYWdlID0gd2FsdXNh Z2U7Ci0JYnRsZWFkZXItPmJ1ZmZlcnVzYWdlID0gYnVmZmVydXNhZ2U7CisJYnRsZWFkZXItPmlu c3RyID0gaW5zdHI7CiAKIAkvKiBJZiBubyB3b3JrZXJzIHdlcmUgc3VjY2Vzc2Z1bGx5IGxhdW5j aGVkLCBiYWNrIG91dCAoZG8gc2VyaWFsIGJ1aWxkKSAqLwogCWlmIChwY3h0LT5ud29ya2Vyc19s YXVuY2hlZCA9PSAwKQpAQCAtMTYyMCw3ICsxNjA5LDcgQEAgX2J0X2VuZF9wYXJhbGxlbChCVExl YWRlciAqYnRsZWFkZXIpCiAJICogb3Igd2UgbWlnaHQgZ2V0IGluY29tcGxldGUgZGF0YS4pCiAJ ICovCiAJZm9yIChpID0gMDsgaSA8IGJ0bGVhZGVyLT5wY3h0LT5ud29ya2Vyc19sYXVuY2hlZDsg aSsrKQotCQlJbnN0ckFjY3VtUGFyYWxsZWxRdWVyeSgmYnRsZWFkZXItPmJ1ZmZlcnVzYWdlW2ld LCAmYnRsZWFkZXItPndhbHVzYWdlW2ldKTsKKwkJSW5zdHJBY2N1bVBhcmFsbGVsUXVlcnkoJmJ0 bGVhZGVyLT5pbnN0cltpXSk7CiAKIAkvKiBGcmVlIGxhc3QgcmVmZXJlbmNlIHRvIE1WQ0Mgc25h cHNob3QsIGlmIG9uZSB3YXMgdXNlZCAqLwogCWlmIChJc01WQ0NTbmFwc2hvdChidGxlYWRlci0+ c25hcHNob3QpKQpAQCAtMTc1NCw4ICsxNzQzLDcgQEAgX2J0X3BhcmFsbGVsX2J1aWxkX21haW4o ZHNtX3NlZ21lbnQgKnNlZywgc2htX3RvYyAqdG9jKQogCUxPQ0tNT0RFCWhlYXBMb2NrbW9kZTsK IAlMT0NLTU9ERQlpbmRleExvY2ttb2RlOwogCVF1ZXJ5SW5zdHJ1bWVudGF0aW9uICppbnN0cjsK LQlXYWxVc2FnZSAgICp3YWx1c2FnZTsKLQlCdWZmZXJVc2FnZSAqYnVmZmVydXNhZ2U7CisJSW5z dHJ1bWVudGF0aW9uICp3b3JrZXJfaW5zdHI7CiAJaW50CQkJc29ydG1lbTsKIAogI2lmZGVmIEJU UkVFX0JVSUxEX1NUQVRTCkBAIC0xODM3LDExICsxODI1LDggQEAgX2J0X3BhcmFsbGVsX2J1aWxk X21haW4oZHNtX3NlZ21lbnQgKnNlZywgc2htX3RvYyAqdG9jKQogCQkJCQkJCSAgIHNoYXJlZHNv cnQyLCBzb3J0bWVtLCBmYWxzZSk7CiAKIAkvKiBSZXBvcnQgV0FML2J1ZmZlciB1c2FnZSBkdXJp bmcgcGFyYWxsZWwgZXhlY3V0aW9uICovCi0JYnVmZmVydXNhZ2UgPSBzaG1fdG9jX2xvb2t1cCh0 b2MsIFBBUkFMTEVMX0tFWV9CVUZGRVJfVVNBR0UsIGZhbHNlKTsKLQl3YWx1c2FnZSA9IHNobV90 b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfS0VZX1dBTF9VU0FHRSwgZmFsc2UpOwotCUluc3RyRW5k UGFyYWxsZWxRdWVyeShpbnN0ciwKLQkJCQkJCSAgJmJ1ZmZlcnVzYWdlW1BhcmFsbGVsV29ya2Vy TnVtYmVyXSwKLQkJCQkJCSAgJndhbHVzYWdlW1BhcmFsbGVsV29ya2VyTnVtYmVyXSk7CisJd29y a2VyX2luc3RyID0gc2htX3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9LRVlfSU5TVFJVTUVOVEFU SU9OLCBmYWxzZSk7CisJSW5zdHJFbmRQYXJhbGxlbFF1ZXJ5KGluc3RyLCAmd29ya2VyX2luc3Ry W1BhcmFsbGVsV29ya2VyTnVtYmVyXSk7CiAKICNpZmRlZiBCVFJFRV9CVUlMRF9TVEFUUwogCWlm IChsb2dfYnRyZWVfYnVpbGRfc3RhdHMpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5k cy92YWN1dW1wYXJhbGxlbC5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwu YwppbmRleCA3NTA3NGZlNGVmYS4uNzUzZGQ5NjVkNzggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFj dXVtcGFyYWxsZWwuYwpAQCAtNDcsOSArNDcsOCBAQAogICovCiAjZGVmaW5lIFBBUkFMTEVMX1ZB Q1VVTV9LRVlfU0hBUkVECQkJMQogI2RlZmluZSBQQVJBTExFTF9WQUNVVU1fS0VZX1FVRVJZX1RF WFQJCTIKLSNkZWZpbmUgUEFSQUxMRUxfVkFDVVVNX0tFWV9CVUZGRVJfVVNBR0UJMwotI2RlZmlu ZSBQQVJBTExFTF9WQUNVVU1fS0VZX1dBTF9VU0FHRQkJNAotI2RlZmluZSBQQVJBTExFTF9WQUNV VU1fS0VZX0lOREVYX1NUQVRTCQk1CisjZGVmaW5lIFBBUkFMTEVMX1ZBQ1VVTV9LRVlfSU5TVFJV TUVOVEFUSU9OCTMKKyNkZWZpbmUgUEFSQUxMRUxfVkFDVVVNX0tFWV9JTkRFWF9TVEFUUwkJNAog CiAvKgogICogU2hhcmVkIGluZm9ybWF0aW9uIGFtb25nIHBhcmFsbGVsIHdvcmtlcnMuICBTbyB0 aGlzIGlzIGFsbG9jYXRlZCBpbiB0aGUgRFNNCkBAIC0xODgsMTEgKzE4Nyw4IEBAIHN0cnVjdCBQ YXJhbGxlbFZhY3V1bVN0YXRlCiAJLyogU2hhcmVkIGRlYWQgaXRlbXMgc3BhY2UgYW1vbmcgcGFy YWxsZWwgdmFjdXVtIHdvcmtlcnMgKi8KIAlUaWRTdG9yZSAgICpkZWFkX2l0ZW1zOwogCi0JLyog UG9pbnRzIHRvIGJ1ZmZlciB1c2FnZSBhcmVhIGluIERTTSAqLwotCUJ1ZmZlclVzYWdlICpidWZm ZXJfdXNhZ2U7Ci0KLQkvKiBQb2ludHMgdG8gV0FMIHVzYWdlIGFyZWEgaW4gRFNNICovCi0JV2Fs VXNhZ2UgICAqd2FsX3VzYWdlOworCS8qIFBvaW50cyB0byBpbnN0cnVtZW50YXRpb24gYXJlYSBp biBEU00gKi8KKwlJbnN0cnVtZW50YXRpb24gKmluc3RyOwogCiAJLyoKIAkgKiBGYWxzZSBpZiB0 aGUgaW5kZXggaXMgdG90YWxseSB1bnN1aXRhYmxlIHRhcmdldCBmb3IgYWxsIHBhcmFsbGVsCkBA IC0yNTAsOCArMjQ2LDcgQEAgcGFyYWxsZWxfdmFjdXVtX2luaXQoUmVsYXRpb24gcmVsLCBSZWxh dGlvbiAqaW5kcmVscywgaW50IG5pbmRleGVzLAogCVBWU2hhcmVkICAgKnNoYXJlZDsKIAlUaWRT dG9yZSAgICpkZWFkX2l0ZW1zOwogCVBWSW5kU3RhdHMgKmluZHN0YXRzOwotCUJ1ZmZlclVzYWdl ICpidWZmZXJfdXNhZ2U7Ci0JV2FsVXNhZ2UgICAqd2FsX3VzYWdlOworCUluc3RydW1lbnRhdGlv biAqaW5zdHI7CiAJYm9vbAkgICAqd2lsbF9wYXJhbGxlbF92YWN1dW07CiAJU2l6ZQkJZXN0X2lu ZHN0YXRzX2xlbjsKIAlTaXplCQllc3Rfc2hhcmVkX2xlbjsKQEAgLTMwNCwxOCArMjk5LDE1IEBA IHBhcmFsbGVsX3ZhY3V1bV9pbml0KFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gKmluZHJlbHMsIGlu dCBuaW5kZXhlcywKIAlzaG1fdG9jX2VzdGltYXRlX2tleXMoJnBjeHQtPmVzdGltYXRvciwgMSk7 CiAKIAkvKgotCSAqIEVzdGltYXRlIHNwYWNlIGZvciBCdWZmZXJVc2FnZSBhbmQgV2FsVXNhZ2Ug LS0KLQkgKiBQQVJBTExFTF9WQUNVVU1fS0VZX0JVRkZFUl9VU0FHRSBhbmQgUEFSQUxMRUxfVkFD VVVNX0tFWV9XQUxfVVNBR0UuCisJICogRXN0aW1hdGUgc3BhY2UgZm9yIEluc3RydW1lbnRhdGlv biAtLQorCSAqIFBBUkFMTEVMX1ZBQ1VVTV9LRVlfSU5TVFJVTUVOVEFUSU9OLgogCSAqCiAJICog SWYgdGhlcmUgYXJlIG5vIGV4dGVuc2lvbnMgbG9hZGVkIHRoYXQgY2FyZSwgd2UgY291bGQgc2tp cCB0aGlzLiAgV2UKIAkgKiBoYXZlIG5vIHdheSBvZiBrbm93aW5nIHdoZXRoZXIgYW55b25lJ3Mg bG9va2luZyBhdCBpbnN0cnVtZW50YXRpb24sIHNvCiAJICogZG8gaXQgdW5jb25kaXRpb25hbGx5 LgogCSAqLwogCXNobV90b2NfZXN0aW1hdGVfY2h1bmsoJnBjeHQtPmVzdGltYXRvciwKLQkJCQkJ CSAgIG11bF9zaXplKHNpemVvZihCdWZmZXJVc2FnZSksIHBjeHQtPm53b3JrZXJzKSk7Ci0Jc2ht X3RvY19lc3RpbWF0ZV9rZXlzKCZwY3h0LT5lc3RpbWF0b3IsIDEpOwotCXNobV90b2NfZXN0aW1h dGVfY2h1bmsoJnBjeHQtPmVzdGltYXRvciwKLQkJCQkJCSAgIG11bF9zaXplKHNpemVvZihXYWxV c2FnZSksIHBjeHQtPm53b3JrZXJzKSk7CisJCQkJCQkgICBtdWxfc2l6ZShzaXplb2YoSW5zdHJ1 bWVudGF0aW9uKSwgcGN4dC0+bndvcmtlcnMpKTsKIAlzaG1fdG9jX2VzdGltYXRlX2tleXMoJnBj eHQtPmVzdGltYXRvciwgMSk7CiAKIAkvKiBGaW5hbGx5LCBlc3RpbWF0ZSBQQVJBTExFTF9WQUNV VU1fS0VZX1FVRVJZX1RFWFQgc3BhY2UgKi8KQEAgLTM5NiwxNyArMzg4LDEzIEBAIHBhcmFsbGVs X3ZhY3V1bV9pbml0KFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gKmluZHJlbHMsIGludCBuaW5kZXhl cywKIAlwdnMtPnNoYXJlZCA9IHNoYXJlZDsKIAogCS8qCi0JICogQWxsb2NhdGUgc3BhY2UgZm9y IGVhY2ggd29ya2VyJ3MgQnVmZmVyVXNhZ2UgYW5kIFdhbFVzYWdlOyBubyBuZWVkIHRvCi0JICog aW5pdGlhbGl6ZQorCSAqIEFsbG9jYXRlIHNwYWNlIGZvciBlYWNoIHdvcmtlcidzIEluc3RydW1l bnRhdGlvbjsgbm8gbmVlZCB0bworCSAqIGluaXRpYWxpemUuCiAJICovCi0JYnVmZmVyX3VzYWdl ID0gc2htX3RvY19hbGxvY2F0ZShwY3h0LT50b2MsCi0JCQkJCQkJCQltdWxfc2l6ZShzaXplb2Yo QnVmZmVyVXNhZ2UpLCBwY3h0LT5ud29ya2VycykpOwotCXNobV90b2NfaW5zZXJ0KHBjeHQtPnRv YywgUEFSQUxMRUxfVkFDVVVNX0tFWV9CVUZGRVJfVVNBR0UsIGJ1ZmZlcl91c2FnZSk7Ci0JcHZz LT5idWZmZXJfdXNhZ2UgPSBidWZmZXJfdXNhZ2U7Ci0Jd2FsX3VzYWdlID0gc2htX3RvY19hbGxv Y2F0ZShwY3h0LT50b2MsCi0JCQkJCQkJCSBtdWxfc2l6ZShzaXplb2YoV2FsVXNhZ2UpLCBwY3h0 LT5ud29ya2VycykpOwotCXNobV90b2NfaW5zZXJ0KHBjeHQtPnRvYywgUEFSQUxMRUxfVkFDVVVN X0tFWV9XQUxfVVNBR0UsIHdhbF91c2FnZSk7Ci0JcHZzLT53YWxfdXNhZ2UgPSB3YWxfdXNhZ2U7 CisJaW5zdHIgPSBzaG1fdG9jX2FsbG9jYXRlKHBjeHQtPnRvYywKKwkJCQkJCQkgbXVsX3NpemUo c2l6ZW9mKEluc3RydW1lbnRhdGlvbiksIHBjeHQtPm53b3JrZXJzKSk7CisJc2htX3RvY19pbnNl cnQocGN4dC0+dG9jLCBQQVJBTExFTF9WQUNVVU1fS0VZX0lOU1RSVU1FTlRBVElPTiwgaW5zdHIp OworCXB2cy0+aW5zdHIgPSBpbnN0cjsKIAogCS8qIFN0b3JlIHF1ZXJ5IHN0cmluZyBmb3Igd29y a2VycyAqLwogCWlmIChkZWJ1Z19xdWVyeV9zdHJpbmcpCkBAIC03MzgsNyArNzI2LDcgQEAgcGFy YWxsZWxfdmFjdXVtX3Byb2Nlc3NfYWxsX2luZGV4ZXMoUGFyYWxsZWxWYWN1dW1TdGF0ZSAqcHZz LCBpbnQgbnVtX2luZGV4X3NjYW4KIAkJV2FpdEZvclBhcmFsbGVsV29ya2Vyc1RvRmluaXNoKHB2 cy0+cGN4dCk7CiAKIAkJZm9yIChpbnQgaSA9IDA7IGkgPCBwdnMtPnBjeHQtPm53b3JrZXJzX2xh dW5jaGVkOyBpKyspCi0JCQlJbnN0ckFjY3VtUGFyYWxsZWxRdWVyeSgmcHZzLT5idWZmZXJfdXNh Z2VbaV0sICZwdnMtPndhbF91c2FnZVtpXSk7CisJCQlJbnN0ckFjY3VtUGFyYWxsZWxRdWVyeSgm cHZzLT5pbnN0cltpXSk7CiAJfQogCiAJLyoKQEAgLTk5Niw4ICs5ODQsNyBAQCBwYXJhbGxlbF92 YWN1dW1fbWFpbihkc21fc2VnbWVudCAqc2VnLCBzaG1fdG9jICp0b2MpCiAJUFZTaGFyZWQgICAq c2hhcmVkOwogCVRpZFN0b3JlICAgKmRlYWRfaXRlbXM7CiAJUXVlcnlJbnN0cnVtZW50YXRpb24g Kmluc3RyOwotCUJ1ZmZlclVzYWdlICpidWZmZXJfdXNhZ2U7Ci0JV2FsVXNhZ2UgICAqd2FsX3Vz YWdlOworCUluc3RydW1lbnRhdGlvbiAqd29ya2VyX2luc3RyOwogCWludAkJCW5pbmRleGVzOwog CWNoYXIJICAgKnNoYXJlZHF1ZXJ5OwogCUVycm9yQ29udGV4dENhbGxiYWNrIGVycmNhbGxiYWNr OwpAQCAtMTA5MSwxMSArMTA3OCw4IEBAIHBhcmFsbGVsX3ZhY3V1bV9tYWluKGRzbV9zZWdtZW50 ICpzZWcsIHNobV90b2MgKnRvYykKIAlwYXJhbGxlbF92YWN1dW1fcHJvY2Vzc19zYWZlX2luZGV4 ZXMoJnB2cyk7CiAKIAkvKiBSZXBvcnQgYnVmZmVyL1dBTCB1c2FnZSBkdXJpbmcgcGFyYWxsZWwg ZXhlY3V0aW9uICovCi0JYnVmZmVyX3VzYWdlID0gc2htX3RvY19sb29rdXAodG9jLCBQQVJBTExF TF9WQUNVVU1fS0VZX0JVRkZFUl9VU0FHRSwgZmFsc2UpOwotCXdhbF91c2FnZSA9IHNobV90b2Nf bG9va3VwKHRvYywgUEFSQUxMRUxfVkFDVVVNX0tFWV9XQUxfVVNBR0UsIGZhbHNlKTsKLQlJbnN0 ckVuZFBhcmFsbGVsUXVlcnkoaW5zdHIsCi0JCQkJCQkgICZidWZmZXJfdXNhZ2VbUGFyYWxsZWxX b3JrZXJOdW1iZXJdLAotCQkJCQkJICAmd2FsX3VzYWdlW1BhcmFsbGVsV29ya2VyTnVtYmVyXSk7 CisJd29ya2VyX2luc3RyID0gc2htX3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9WQUNVVU1fS0VZ X0lOU1RSVU1FTlRBVElPTiwgZmFsc2UpOworCUluc3RyRW5kUGFyYWxsZWxRdWVyeShpbnN0ciwg Jndvcmtlcl9pbnN0cltQYXJhbGxlbFdvcmtlck51bWJlcl0pOwogCiAJLyogUmVwb3J0IGFueSBy ZW1haW5pbmcgY29zdC1iYXNlZCB2YWN1dW0gZGVsYXkgdGltZSAqLwogCWlmICh0cmFja19jb3N0 X2RlbGF5X3RpbWluZykKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJh bGxlbC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMKaW5kZXggNzM1MzRm YTZjN2UuLmViYWI2YmMxNjUyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVj UGFyYWxsZWwuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYwpAQCAt NjAsMTMgKzYwLDEyIEBACiAjZGVmaW5lIFBBUkFMTEVMX0tFWV9FWEVDVVRPUl9GSVhFRAkJVUlO VDY0Q09OU1QoMHhFMDAwMDAwMDAwMDAwMDAxKQogI2RlZmluZSBQQVJBTExFTF9LRVlfUExBTk5F RFNUTVQJCVVJTlQ2NENPTlNUKDB4RTAwMDAwMDAwMDAwMDAwMikKICNkZWZpbmUgUEFSQUxMRUxf S0VZX1BBUkFNTElTVElORk8JCVVJTlQ2NENPTlNUKDB4RTAwMDAwMDAwMDAwMDAwMykKLSNkZWZp bmUgUEFSQUxMRUxfS0VZX0JVRkZFUl9VU0FHRQkJVUlOVDY0Q09OU1QoMHhFMDAwMDAwMDAwMDAw MDA0KQorI2RlZmluZSBQQVJBTExFTF9LRVlfSU5TVFJVTUVOVEFUSU9OCVVJTlQ2NENPTlNUKDB4 RTAwMDAwMDAwMDAwMDAwNCkKICNkZWZpbmUgUEFSQUxMRUxfS0VZX1RVUExFX1FVRVVFCQlVSU5U NjRDT05TVCgweEUwMDAwMDAwMDAwMDAwMDUpCi0jZGVmaW5lIFBBUkFMTEVMX0tFWV9JTlNUUlVN RU5UQVRJT04JVUlOVDY0Q09OU1QoMHhFMDAwMDAwMDAwMDAwMDA2KQorI2RlZmluZSBQQVJBTExF TF9LRVlfTk9ERV9JTlNUUlVNRU5UQVRJT04gVUlOVDY0Q09OU1QoMHhFMDAwMDAwMDAwMDAwMDA2 KQogI2RlZmluZSBQQVJBTExFTF9LRVlfRFNBCQkJCVVJTlQ2NENPTlNUKDB4RTAwMDAwMDAwMDAw MDAwNykKICNkZWZpbmUgUEFSQUxMRUxfS0VZX1FVRVJZX1RFWFQJCVVJTlQ2NENPTlNUKDB4RTAw MDAwMDAwMDAwMDAwOCkKICNkZWZpbmUgUEFSQUxMRUxfS0VZX0pJVF9JTlNUUlVNRU5UQVRJT04g VUlOVDY0Q09OU1QoMHhFMDAwMDAwMDAwMDAwMDA5KQotI2RlZmluZSBQQVJBTExFTF9LRVlfV0FM X1VTQUdFCQkJVUlOVDY0Q09OU1QoMHhFMDAwMDAwMDAwMDAwMDBBKQogCiAjZGVmaW5lIFBBUkFM TEVMX1RVUExFX1FVRVVFX1NJWkUJCTY1NTM2CiAKQEAgLTYyNSw4ICs2MjQsNiBAQCBFeGVjSW5p dFBhcmFsbGVsUGxhbihQbGFuU3RhdGUgKnBsYW5zdGF0ZSwgRVN0YXRlICplc3RhdGUsCiAJY2hh cgkgICAqcHN0bXRfZGF0YTsKIAljaGFyCSAgICpwc3RtdF9zcGFjZTsKIAljaGFyCSAgICpwYXJh bWxpc3RpbmZvX3NwYWNlOwotCUJ1ZmZlclVzYWdlICpidWZ1c2FnZV9zcGFjZTsKLQlXYWxVc2Fn ZSAgICp3YWx1c2FnZV9zcGFjZTsKIAlTaGFyZWRFeGVjdXRvckluc3RydW1lbnRhdGlvbiAqaW5z dHJ1bWVudGF0aW9uID0gTlVMTDsKIAlTaGFyZWRKaXRJbnN0cnVtZW50YXRpb24gKmppdF9pbnN0 cnVtZW50YXRpb24gPSBOVUxMOwogCWludAkJCXBzdG10X2xlbjsKQEAgLTY5MCwyMSArNjg3LDE0 IEBAIEV4ZWNJbml0UGFyYWxsZWxQbGFuKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBFU3RhdGUgKmVz dGF0ZSwKIAlzaG1fdG9jX2VzdGltYXRlX2tleXMoJnBjeHQtPmVzdGltYXRvciwgMSk7CiAKIAkv KgotCSAqIEVzdGltYXRlIHNwYWNlIGZvciBCdWZmZXJVc2FnZS4KKwkgKiBFc3RpbWF0ZSBzcGFj ZSBmb3IgSW5zdHJ1bWVudGF0aW9uLgogCSAqCiAJICogSWYgRVhQTEFJTiBpcyBub3QgaW4gdXNl IGFuZCB0aGVyZSBhcmUgbm8gZXh0ZW5zaW9ucyBsb2FkZWQgdGhhdCBjYXJlLAogCSAqIHdlIGNv dWxkIHNraXAgdGhpcy4gIEJ1dCB3ZSBoYXZlIG5vIHdheSBvZiBrbm93aW5nIHdoZXRoZXIgYW55 b25lJ3MKIAkgKiBsb29raW5nIGF0IGluc3RydW1lbnRhdGlvbiwgc28gZG8gaXQgdW5jb25kaXRp b25hbGx5LgogCSAqLwogCXNobV90b2NfZXN0aW1hdGVfY2h1bmsoJnBjeHQtPmVzdGltYXRvciwK LQkJCQkJCSAgIG11bF9zaXplKHNpemVvZihCdWZmZXJVc2FnZSksIHBjeHQtPm53b3JrZXJzKSk7 Ci0Jc2htX3RvY19lc3RpbWF0ZV9rZXlzKCZwY3h0LT5lc3RpbWF0b3IsIDEpOwotCi0JLyoKLQkg KiBTYW1lIHRoaW5nIGZvciBXYWxVc2FnZS4KLQkgKi8KLQlzaG1fdG9jX2VzdGltYXRlX2NodW5r KCZwY3h0LT5lc3RpbWF0b3IsCi0JCQkJCQkgICBtdWxfc2l6ZShzaXplb2YoV2FsVXNhZ2UpLCBw Y3h0LT5ud29ya2VycykpOworCQkJCQkJICAgbXVsX3NpemUoc2l6ZW9mKEluc3RydW1lbnRhdGlv biksIHBjeHQtPm53b3JrZXJzKSk7CiAJc2htX3RvY19lc3RpbWF0ZV9rZXlzKCZwY3h0LT5lc3Rp bWF0b3IsIDEpOwogCiAJLyogRXN0aW1hdGUgc3BhY2UgZm9yIHR1cGxlIHF1ZXVlcy4gKi8KQEAg LTc5MCwxNyArNzgwLDE4IEBAIEV4ZWNJbml0UGFyYWxsZWxQbGFuKFBsYW5TdGF0ZSAqcGxhbnN0 YXRlLCBFU3RhdGUgKmVzdGF0ZSwKIAlzaG1fdG9jX2luc2VydChwY3h0LT50b2MsIFBBUkFMTEVM X0tFWV9QQVJBTUxJU1RJTkZPLCBwYXJhbWxpc3RpbmZvX3NwYWNlKTsKIAlTZXJpYWxpemVQYXJh bUxpc3QoZXN0YXRlLT5lc19wYXJhbV9saXN0X2luZm8sICZwYXJhbWxpc3RpbmZvX3NwYWNlKTsK IAotCS8qIEFsbG9jYXRlIHNwYWNlIGZvciBlYWNoIHdvcmtlcidzIEJ1ZmZlclVzYWdlOyBubyBu ZWVkIHRvIGluaXRpYWxpemUuICovCi0JYnVmdXNhZ2Vfc3BhY2UgPSBzaG1fdG9jX2FsbG9jYXRl KHBjeHQtPnRvYywKLQkJCQkJCQkJCSAgbXVsX3NpemUoc2l6ZW9mKEJ1ZmZlclVzYWdlKSwgcGN4 dC0+bndvcmtlcnMpKTsKLQlzaG1fdG9jX2luc2VydChwY3h0LT50b2MsIFBBUkFMTEVMX0tFWV9C VUZGRVJfVVNBR0UsIGJ1ZnVzYWdlX3NwYWNlKTsKLQlwZWktPmJ1ZmZlcl91c2FnZSA9IGJ1ZnVz YWdlX3NwYWNlOworCS8qCisJICogQWxsb2NhdGUgc3BhY2UgZm9yIGVhY2ggd29ya2VyJ3MgSW5z dHJ1bWVudGF0aW9uOyBubyBuZWVkIHRvCisJICogaW5pdGlhbGl6ZS4KKwkgKi8KKwl7CisJCUlu c3RydW1lbnRhdGlvbiAqaW5zdHI7CiAKLQkvKiBTYW1lIGZvciBXYWxVc2FnZS4gKi8KLQl3YWx1 c2FnZV9zcGFjZSA9IHNobV90b2NfYWxsb2NhdGUocGN4dC0+dG9jLAotCQkJCQkJCQkJICBtdWxf c2l6ZShzaXplb2YoV2FsVXNhZ2UpLCBwY3h0LT5ud29ya2VycykpOwotCXNobV90b2NfaW5zZXJ0 KHBjeHQtPnRvYywgUEFSQUxMRUxfS0VZX1dBTF9VU0FHRSwgd2FsdXNhZ2Vfc3BhY2UpOwotCXBl aS0+d2FsX3VzYWdlID0gd2FsdXNhZ2Vfc3BhY2U7CisJCWluc3RyID0gc2htX3RvY19hbGxvY2F0 ZShwY3h0LT50b2MsCisJCQkJCQkJCSBtdWxfc2l6ZShzaXplb2YoSW5zdHJ1bWVudGF0aW9uKSwg cGN4dC0+bndvcmtlcnMpKTsKKwkJc2htX3RvY19pbnNlcnQocGN4dC0+dG9jLCBQQVJBTExFTF9L RVlfSU5TVFJVTUVOVEFUSU9OLCBpbnN0cik7CisJCXBlaS0+aW5zdHJ1bWVudGF0aW9uID0gaW5z dHI7CisJfQogCiAJLyogU2V0IHVwIHRoZSB0dXBsZSBxdWV1ZXMgdGhhdCB0aGUgd29ya2VycyB3 aWxsIHdyaXRlIGludG8uICovCiAJcGVpLT50cXVldWUgPSBFeGVjUGFyYWxsZWxTZXR1cFR1cGxl UXVldWVzKHBjeHQsIGZhbHNlKTsKQEAgLTgyNiw5ICs4MTcsOSBAQCBFeGVjSW5pdFBhcmFsbGVs UGxhbihQbGFuU3RhdGUgKnBsYW5zdGF0ZSwgRVN0YXRlICplc3RhdGUsCiAJCWluc3RydW1lbnQg PSBHZXRJbnN0cnVtZW50YXRpb25BcnJheShpbnN0cnVtZW50YXRpb24pOwogCQlmb3IgKGkgPSAw OyBpIDwgbndvcmtlcnMgKiBlLm5ub2RlczsgKytpKQogCQkJSW5zdHJJbml0Tm9kZSgmaW5zdHJ1 bWVudFtpXSwgZXN0YXRlLT5lc19pbnN0cnVtZW50KTsKLQkJc2htX3RvY19pbnNlcnQocGN4dC0+ dG9jLCBQQVJBTExFTF9LRVlfSU5TVFJVTUVOVEFUSU9OLAorCQlzaG1fdG9jX2luc2VydChwY3h0 LT50b2MsIFBBUkFMTEVMX0tFWV9OT0RFX0lOU1RSVU1FTlRBVElPTiwKIAkJCQkJICAgaW5zdHJ1 bWVudGF0aW9uKTsKLQkJcGVpLT5pbnN0cnVtZW50YXRpb24gPSBpbnN0cnVtZW50YXRpb247CisJ CXBlaS0+bm9kZV9pbnN0cnVtZW50YXRpb24gPSBpbnN0cnVtZW50YXRpb247CiAKIAkJaWYgKGVz dGF0ZS0+ZXNfaml0X2ZsYWdzICE9IFBHSklUX05PTkUpCiAJCXsKQEAgLTEyMzAsNyArMTIyMSw3 IEBAIEV4ZWNQYXJhbGxlbEZpbmlzaChQYXJhbGxlbEV4ZWN1dG9ySW5mbyAqcGVpKQogCSAqIGZp bmlzaCwgb3Igd2UgbWlnaHQgZ2V0IGluY29tcGxldGUgZGF0YS4pCiAJICovCiAJZm9yIChpID0g MDsgaSA8IG53b3JrZXJzOyBpKyspCi0JCUluc3RyQWNjdW1QYXJhbGxlbFF1ZXJ5KCZwZWktPmJ1 ZmZlcl91c2FnZVtpXSwgJnBlaS0+d2FsX3VzYWdlW2ldKTsKKwkJSW5zdHJBY2N1bVBhcmFsbGVs UXVlcnkoJnBlaS0+aW5zdHJ1bWVudGF0aW9uW2ldKTsKIAogCXBlaS0+ZmluaXNoZWQgPSB0cnVl OwogfQpAQCAtMTI0NCwxMCArMTIzNSwxMCBAQCBFeGVjUGFyYWxsZWxGaW5pc2goUGFyYWxsZWxF eGVjdXRvckluZm8gKnBlaSkKIHZvaWQKIEV4ZWNQYXJhbGxlbENsZWFudXAoUGFyYWxsZWxFeGVj dXRvckluZm8gKnBlaSkKIHsKLQkvKiBBY2N1bXVsYXRlIGluc3RydW1lbnRhdGlvbiwgaWYgYW55 LiAqLwotCWlmIChwZWktPmluc3RydW1lbnRhdGlvbikKKwkvKiBBY2N1bXVsYXRlIG5vZGUgaW5z dHJ1bWVudGF0aW9uLCBpZiBhbnkuICovCisJaWYgKHBlaS0+bm9kZV9pbnN0cnVtZW50YXRpb24p CiAJCUV4ZWNQYXJhbGxlbFJldHJpZXZlSW5zdHJ1bWVudGF0aW9uKHBlaS0+cGxhbnN0YXRlLAot CQkJCQkJCQkJCQlwZWktPmluc3RydW1lbnRhdGlvbik7CisJCQkJCQkJCQkJCXBlaS0+bm9kZV9p bnN0cnVtZW50YXRpb24pOwogCiAJLyogQWNjdW11bGF0ZSBKSVQgaW5zdHJ1bWVudGF0aW9uLCBp ZiBhbnkuICovCiAJaWYgKHBlaS0+aml0X2luc3RydW1lbnRhdGlvbikKQEAgLTE0NzEsOCArMTQ2 Miw2IEBAIFBhcmFsbGVsUXVlcnlNYWluKGRzbV9zZWdtZW50ICpzZWcsIHNobV90b2MgKnRvYykK IHsKIAlGaXhlZFBhcmFsbGVsRXhlY3V0b3JTdGF0ZSAqZnBlczsKIAlRdWVyeUluc3RydW1lbnRh dGlvbiAqaW5zdHI7Ci0JQnVmZmVyVXNhZ2UgKmJ1ZmZlcl91c2FnZTsKLQlXYWxVc2FnZSAgICp3 YWxfdXNhZ2U7CiAJRGVzdFJlY2VpdmVyICpyZWNlaXZlcjsKIAlRdWVyeURlc2MgICpxdWVyeURl c2M7CiAJU2hhcmVkRXhlY3V0b3JJbnN0cnVtZW50YXRpb24gKmluc3RydW1lbnRhdGlvbjsKQEAg LTE0ODcsNyArMTQ3Niw3IEBAIFBhcmFsbGVsUXVlcnlNYWluKGRzbV9zZWdtZW50ICpzZWcsIHNo bV90b2MgKnRvYykKIAogCS8qIFNldCB1cCBEZXN0UmVjZWl2ZXIsIFNoYXJlZEV4ZWN1dG9ySW5z dHJ1bWVudGF0aW9uLCBhbmQgUXVlcnlEZXNjLiAqLwogCXJlY2VpdmVyID0gRXhlY1BhcmFsbGVs R2V0UmVjZWl2ZXIoc2VnLCB0b2MpOwotCWluc3RydW1lbnRhdGlvbiA9IHNobV90b2NfbG9va3Vw KHRvYywgUEFSQUxMRUxfS0VZX0lOU1RSVU1FTlRBVElPTiwgdHJ1ZSk7CisJaW5zdHJ1bWVudGF0 aW9uID0gc2htX3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9LRVlfTk9ERV9JTlNUUlVNRU5UQVRJ T04sIHRydWUpOwogCWlmIChpbnN0cnVtZW50YXRpb24gIT0gTlVMTCkKIAkJaW5zdHJ1bWVudF9v cHRpb25zID0gaW5zdHJ1bWVudGF0aW9uLT5pbnN0cnVtZW50X29wdGlvbnM7CiAJaml0X2luc3Ry dW1lbnRhdGlvbiA9IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfS0VZX0pJVF9JTlNUUlVN RU5UQVRJT04sCkBAIC0xNTQ1LDExICsxNTM0LDEyIEBAIFBhcmFsbGVsUXVlcnlNYWluKGRzbV9z ZWdtZW50ICpzZWcsIHNobV90b2MgKnRvYykKIAlFeGVjdXRvckZpbmlzaChxdWVyeURlc2MpOwog CiAJLyogUmVwb3J0IGJ1ZmZlci9XQUwgdXNhZ2UgZHVyaW5nIHBhcmFsbGVsIGV4ZWN1dGlvbi4g Ki8KLQlidWZmZXJfdXNhZ2UgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVMX0tFWV9CVUZG RVJfVVNBR0UsIGZhbHNlKTsKLQl3YWxfdXNhZ2UgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFM TEVMX0tFWV9XQUxfVVNBR0UsIGZhbHNlKTsKLQlJbnN0ckVuZFBhcmFsbGVsUXVlcnkoaW5zdHIs Ci0JCQkJCQkgICZidWZmZXJfdXNhZ2VbUGFyYWxsZWxXb3JrZXJOdW1iZXJdLAotCQkJCQkJICAm d2FsX3VzYWdlW1BhcmFsbGVsV29ya2VyTnVtYmVyXSk7CisJeworCQlJbnN0cnVtZW50YXRpb24g Kndvcmtlcl9pbnN0cjsKKworCQl3b3JrZXJfaW5zdHIgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBB UkFMTEVMX0tFWV9JTlNUUlVNRU5UQVRJT04sIGZhbHNlKTsKKwkJSW5zdHJFbmRQYXJhbGxlbFF1 ZXJ5KGluc3RyLCAmd29ya2VyX2luc3RyW1BhcmFsbGVsV29ya2VyTnVtYmVyXSk7CisJfQogCiAJ LyogUmVwb3J0IGluc3RydW1lbnRhdGlvbiBkYXRhIGlmIGFueSBpbnN0cnVtZW50YXRpb24gb3B0 aW9ucyBhcmUgc2V0LiAqLwogCWlmIChpbnN0cnVtZW50YXRpb24gIT0gTlVMTCkKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2luc3RydW1lbnQuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL2luc3RydW1lbnQuYwppbmRleCBkODBjOWZmMmQ0MS4uZTc1MjhjNTVmMGIgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2luc3RydW1lbnQuYworKysgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9pbnN0cnVtZW50LmMKQEAgLTI4NCwxMSArMjg0LDExIEBAIEluc3RyU3RhcnRQYXJh bGxlbFF1ZXJ5KHZvaWQpCiAKIC8qIHJlcG9ydCB1c2FnZSBhZnRlciBwYXJhbGxlbCBleGVjdXRv ciBzaHV0ZG93biAqLwogdm9pZAotSW5zdHJFbmRQYXJhbGxlbFF1ZXJ5KFF1ZXJ5SW5zdHJ1bWVu dGF0aW9uICpxaW5zdHIsIEJ1ZmZlclVzYWdlICpidWZ1c2FnZSwgV2FsVXNhZ2UgKndhbHVzYWdl KQorSW5zdHJFbmRQYXJhbGxlbFF1ZXJ5KFF1ZXJ5SW5zdHJ1bWVudGF0aW9uICpxaW5zdHIsIElu c3RydW1lbnRhdGlvbiAqZHN0KQogewogCXFpbnN0ciA9IEluc3RyUXVlcnlTdG9wRmluYWxpemUo cWluc3RyKTsKLQltZW1jcHkoYnVmdXNhZ2UsICZxaW5zdHItPmluc3RyLmJ1ZnVzYWdlLCBzaXpl b2YoQnVmZmVyVXNhZ2UpKTsKLQltZW1jcHkod2FsdXNhZ2UsICZxaW5zdHItPmluc3RyLndhbHVz YWdlLCBzaXplb2YoV2FsVXNhZ2UpKTsKKwltZW1jcHkoJmRzdC0+YnVmdXNhZ2UsICZxaW5zdHIt Pmluc3RyLmJ1ZnVzYWdlLCBzaXplb2YoQnVmZmVyVXNhZ2UpKTsKKwltZW1jcHkoJmRzdC0+d2Fs dXNhZ2UsICZxaW5zdHItPmluc3RyLndhbHVzYWdlLCBzaXplb2YoV2FsVXNhZ2UpKTsKIH0KIAog LyoKQEAgLTMwNCwxMiArMzA0LDExIEBAIEluc3RyRW5kUGFyYWxsZWxRdWVyeShRdWVyeUluc3Ry dW1lbnRhdGlvbiAqcWluc3RyLCBCdWZmZXJVc2FnZSAqYnVmdXNhZ2UsIFdhbFVzCiAgKiBhY3Rp dml0eSBpcyBhY2N1bXVsYXRlZC4KICAqLwogdm9pZAotSW5zdHJBY2N1bVBhcmFsbGVsUXVlcnko QnVmZmVyVXNhZ2UgKmJ1ZnVzYWdlLCBXYWxVc2FnZSAqd2FsdXNhZ2UpCitJbnN0ckFjY3VtUGFy YWxsZWxRdWVyeShJbnN0cnVtZW50YXRpb24gKmluc3RyKQogewotCUJ1ZmZlclVzYWdlQWRkKCZp bnN0cl9zdGFjay5jdXJyZW50LT5idWZ1c2FnZSwgYnVmdXNhZ2UpOwotCVdhbFVzYWdlQWRkKCZp bnN0cl9zdGFjay5jdXJyZW50LT53YWx1c2FnZSwgd2FsdXNhZ2UpOworCUluc3RyQWNjdW1TdGFj ayhpbnN0cl9zdGFjay5jdXJyZW50LCBpbnN0cik7CiAKLQlXYWxVc2FnZUFkZCgmcGdXYWxVc2Fn ZSwgd2FsdXNhZ2UpOworCVdhbFVzYWdlQWRkKCZwZ1dhbFVzYWdlLCAmaW5zdHItPndhbHVzYWdl KTsKIH0KIAogLyogTm9kZSBpbnN0cnVtZW50YXRpb24gaGFuZGxpbmcgKi8KZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0 b3IvZXhlY1BhcmFsbGVsLmgKaW5kZXggNWEyMDM0ODExZDUuLjZjOGI2MDJkMDdmIDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjUGFyYWxsZWwuaAorKysgYi9zcmMvaW5jbHVk ZS9leGVjdXRvci9leGVjUGFyYWxsZWwuaApAQCAtMjUsOSArMjUsOCBAQCB0eXBlZGVmIHN0cnVj dCBQYXJhbGxlbEV4ZWN1dG9ySW5mbwogewogCVBsYW5TdGF0ZSAgKnBsYW5zdGF0ZTsJCS8qIHBs YW4gc3VidHJlZSB3ZSdyZSBydW5uaW5nIGluIHBhcmFsbGVsICovCiAJUGFyYWxsZWxDb250ZXh0 ICpwY3h0OwkJLyogcGFyYWxsZWwgY29udGV4dCB3ZSdyZSB1c2luZyAqLwotCUJ1ZmZlclVzYWdl ICpidWZmZXJfdXNhZ2U7CS8qIHBvaW50cyB0byBidWZ1c2FnZSBhcmVhIGluIERTTSAqLwotCVdh bFVzYWdlICAgKndhbF91c2FnZTsJCS8qIHdhbHVzYWdlIGFyZWEgaW4gRFNNICovCi0JU2hhcmVk RXhlY3V0b3JJbnN0cnVtZW50YXRpb24gKmluc3RydW1lbnRhdGlvbjsgLyogb3B0aW9uYWwgKi8K KwlJbnN0cnVtZW50YXRpb24gKmluc3RydW1lbnRhdGlvbjsJLyogaW5zdHJ1bWVudGF0aW9uIGFy ZWEgaW4gRFNNICovCisJU2hhcmVkRXhlY3V0b3JJbnN0cnVtZW50YXRpb24gKm5vZGVfaW5zdHJ1 bWVudGF0aW9uOwkvKiBvcHRpb25hbCAqLwogCXN0cnVjdCBTaGFyZWRKaXRJbnN0cnVtZW50YXRp b24gKmppdF9pbnN0cnVtZW50YXRpb247CS8qIG9wdGlvbmFsICovCiAJZHNhX2FyZWEgICAqYXJl YTsJCQkvKiBwb2ludHMgdG8gRFNBIGFyZWEgaW4gRFNNICovCiAJZHNhX3BvaW50ZXIgcGFyYW1f ZXhlYzsJCS8qIHNlcmlhbGl6ZWQgUEFSQU1fRVhFQyBwYXJhbWV0ZXJzICovCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9leGVjdXRvci9pbnN0cnVtZW50LmggYi9zcmMvaW5jbHVkZS9leGVjdXRv ci9pbnN0cnVtZW50LmgKaW5kZXggYjkyY2M2NWYxNTkuLmU1NjdjZDY5MWI0IDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9leGVjdXRvci9pbnN0cnVtZW50LmgKKysrIGIvc3JjL2luY2x1ZGUvZXhl Y3V0b3IvaW5zdHJ1bWVudC5oCkBAIC0yNzAsOCArMjcwLDggQEAgZXh0ZXJuIFF1ZXJ5SW5zdHJ1 bWVudGF0aW9uICpJbnN0clF1ZXJ5U3RvcEZpbmFsaXplKFF1ZXJ5SW5zdHJ1bWVudGF0aW9uICpp bnN0cikKIGV4dGVybiB2b2lkIEluc3RyUXVlcnlSZW1lbWJlck5vZGUoUXVlcnlJbnN0cnVtZW50 YXRpb24gKnBhcmVudCwgTm9kZUluc3RydW1lbnRhdGlvbiAqaW5zdHIpOwogCiBwZ19ub2Rpc2Nh cmQgZXh0ZXJuIFF1ZXJ5SW5zdHJ1bWVudGF0aW9uICpJbnN0clN0YXJ0UGFyYWxsZWxRdWVyeSh2 b2lkKTsKLWV4dGVybiB2b2lkIEluc3RyRW5kUGFyYWxsZWxRdWVyeShRdWVyeUluc3RydW1lbnRh dGlvbiAqcWluc3RyLCBCdWZmZXJVc2FnZSAqYnVmdXNhZ2UsIFdhbFVzYWdlICp3YWx1c2FnZSk7 Ci1leHRlcm4gdm9pZCBJbnN0ckFjY3VtUGFyYWxsZWxRdWVyeShCdWZmZXJVc2FnZSAqYnVmdXNh Z2UsIFdhbFVzYWdlICp3YWx1c2FnZSk7CitleHRlcm4gdm9pZCBJbnN0ckVuZFBhcmFsbGVsUXVl cnkoUXVlcnlJbnN0cnVtZW50YXRpb24gKnFpbnN0ciwgSW5zdHJ1bWVudGF0aW9uICpkc3QpOwor ZXh0ZXJuIHZvaWQgSW5zdHJBY2N1bVBhcmFsbGVsUXVlcnkoSW5zdHJ1bWVudGF0aW9uICppbnN0 cik7CiAKIGV4dGVybiBOb2RlSW5zdHJ1bWVudGF0aW9uICpJbnN0ckFsbG9jTm9kZShpbnQgaW5z dHJ1bWVudF9vcHRpb25zLAogCQkJCQkJCQkJCSAgIGJvb2wgYXN5bmNfbW9kZSk7Ci0tIAoyLjQ3 LjEKCg== --000000000000c2e7d4064d33fd67 Content-Type: application/octet-stream; name="v9-0009-Add-pg_session_buffer_usage-contrib-module.patch" Content-Disposition: attachment; filename="v9-0009-Add-pg_session_buffer_usage-contrib-module.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmucb6628 RnJvbSAzYzg4ODM4ZmUwYTkzZjE5NTI3NTA2N2VhYWVhYmU2YjNjNDg5MjQxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpEYXRlOiBT YXQsIDcgTWFyIDIwMjYgMTE6NDY6NDEgLTA4MDAKU3ViamVjdDogW1BBVENIIHY5IDkvOV0gQWRk IHBnX3Nlc3Npb25fYnVmZmVyX3VzYWdlIGNvbnRyaWIgbW9kdWxlCgpUaGlzIGlzIGludGVuZGVk IGZvciB0ZXN0aW5nIGluc3RydW1lbnRhdGlvbiByZWxhdGVkIGxvZ2ljIGFzIGl0IHBlcnRhaW5z CnRvIHRoZSB0b3AgbGV2ZWwgc3RhY2sgdGhhdCBpcyBtYWludGFpbmVkIGFzIGEgcnVubmluZyB0 b3RhbC4gVGhlcmUgaXMKY3VycmVudGx5IG5vIGluLWNvcmUgdXNlciB0aGF0IHV0aWxpemVzIHRo ZSB0b3AtbGV2ZWwgdmFsdWVzIGluIHRoaXMKbWFubmVyLCBhbmQgZXNwZWNpYWxseSBkdXJpbmcg YWJvcnQgc2l0dWF0aW9ucyB0aGlzIGhlbHBzIGVuc3VyZSB3ZSBkb24ndApsb3NlIGFjdGl2aXR5 IGR1ZSB0byBpbmNvcnJlY3QgaGFuZGxpbmcgb2YgdW5maW5hbGl6ZWQgbm9kZSBzdGFja3MuCi0t LQogY29udHJpYi9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsK IGNvbnRyaWIvbWVzb24uYnVpbGQgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBj b250cmliL3BnX3Nlc3Npb25fYnVmZmVyX3VzYWdlL01ha2VmaWxlICAgICAgfCAgMjMgKysKIC4u Li9leHBlY3RlZC9wZ19zZXNzaW9uX2J1ZmZlcl91c2FnZS5vdXQgICAgICB8IDI4MyArKysrKysr KysrKysrKysrKysKIGNvbnRyaWIvcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2UvbWVzb24uYnVpbGQg ICB8ICAzNCArKysKIC4uLi9wZ19zZXNzaW9uX2J1ZmZlcl91c2FnZS0tMS4wLnNxbCAgICAgICAg ICB8ICAzMSArKwogLi4uL3BnX3Nlc3Npb25fYnVmZmVyX3VzYWdlLmMgICAgICAgICAgICAgICAg IHwgIDk1ICsrKysrKwogLi4uL3BnX3Nlc3Npb25fYnVmZmVyX3VzYWdlLmNvbnRyb2wgICAgICAg ICAgIHwgICA1ICsKIC4uLi9zcWwvcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2Uuc3FsICAgICAgICAg ICB8IDIwNCArKysrKysrKysrKysrCiA5IGZpbGVzIGNoYW5nZWQsIDY3NyBpbnNlcnRpb25zKCsp CiBjcmVhdGUgbW9kZSAxMDA2NDQgY29udHJpYi9wZ19zZXNzaW9uX2J1ZmZlcl91c2FnZS9NYWtl ZmlsZQogY3JlYXRlIG1vZGUgMTAwNjQ0IGNvbnRyaWIvcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2Uv ZXhwZWN0ZWQvcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2Uub3V0CiBjcmVhdGUgbW9kZSAxMDA2NDQg Y29udHJpYi9wZ19zZXNzaW9uX2J1ZmZlcl91c2FnZS9tZXNvbi5idWlsZAogY3JlYXRlIG1vZGUg MTAwNjQ0IGNvbnRyaWIvcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2UvcGdfc2Vzc2lvbl9idWZmZXJf dXNhZ2UtLTEuMC5zcWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBjb250cmliL3BnX3Nlc3Npb25fYnVm ZmVyX3VzYWdlL3BnX3Nlc3Npb25fYnVmZmVyX3VzYWdlLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBj b250cmliL3BnX3Nlc3Npb25fYnVmZmVyX3VzYWdlL3BnX3Nlc3Npb25fYnVmZmVyX3VzYWdlLmNv bnRyb2wKIGNyZWF0ZSBtb2RlIDEwMDY0NCBjb250cmliL3BnX3Nlc3Npb25fYnVmZmVyX3VzYWdl L3NxbC9wZ19zZXNzaW9uX2J1ZmZlcl91c2FnZS5zcWwKCmRpZmYgLS1naXQgYS9jb250cmliL01h a2VmaWxlIGIvY29udHJpYi9NYWtlZmlsZQppbmRleCBkZDA0YzIwYWNkMi4uYWMwNGY5ZWI5OTcg MTAwNjQ0Ci0tLSBhL2NvbnRyaWIvTWFrZWZpbGUKKysrIGIvY29udHJpYi9NYWtlZmlsZQpAQCAt MzYsNiArMzYsNyBAQCBTVUJESVJTID0gXAogCQlwZ19vdmVyZXhwbGFpbiBcCiAJCXBnX3BsYW5f YWR2aWNlIFwKIAkJcGdfcHJld2FybQlcCisJCXBnX3Nlc3Npb25fYnVmZmVyX3VzYWdlIFwKIAkJ cGdfc3RhdF9zdGF0ZW1lbnRzIFwKIAkJcGdfc3VyZ2VyeQlcCiAJCXBnX3RyZ20JCVwKZGlmZiAt LWdpdCBhL2NvbnRyaWIvbWVzb24uYnVpbGQgYi9jb250cmliL21lc29uLmJ1aWxkCmluZGV4IDVh NzUyZWFjMzQ3Li4yYjEzOTllNTZmMyAxMDA2NDQKLS0tIGEvY29udHJpYi9tZXNvbi5idWlsZAor KysgYi9jb250cmliL21lc29uLmJ1aWxkCkBAIC01MSw2ICs1MSw3IEBAIHN1YmRpcigncGdfb3Zl cmV4cGxhaW4nKQogc3ViZGlyKCdwZ19wbGFuX2FkdmljZScpCiBzdWJkaXIoJ3BnX3ByZXdhcm0n KQogc3ViZGlyKCdwZ3Jvd2xvY2tzJykKK3N1YmRpcigncGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2Un KQogc3ViZGlyKCdwZ19zdGF0X3N0YXRlbWVudHMnKQogc3ViZGlyKCdwZ3N0YXR0dXBsZScpCiBz dWJkaXIoJ3BnX3N1cmdlcnknKQpkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ19zZXNzaW9uX2J1ZmZl cl91c2FnZS9NYWtlZmlsZSBiL2NvbnRyaWIvcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2UvTWFrZWZp bGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjc1YmQ4ZTA5YjNkCi0t LSAvZGV2L251bGwKKysrIGIvY29udHJpYi9wZ19zZXNzaW9uX2J1ZmZlcl91c2FnZS9NYWtlZmls ZQpAQCAtMCwwICsxLDIzIEBACisjIGNvbnRyaWIvcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2UvTWFr ZWZpbGUKKworTU9EVUxFX2JpZyA9IHBnX3Nlc3Npb25fYnVmZmVyX3VzYWdlCitPQkpTID0gXAor CSQoV0lOMzJSRVMpIFwKKwlwZ19zZXNzaW9uX2J1ZmZlcl91c2FnZS5vCisKK0VYVEVOU0lPTiA9 IHBnX3Nlc3Npb25fYnVmZmVyX3VzYWdlCitEQVRBID0gcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2Ut LTEuMC5zcWwKK1BHRklMRURFU0MgPSAicGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2UgLSBzaG93IGJ1 ZmZlciB1c2FnZSBzdGF0aXN0aWNzIGZvciB0aGUgY3VycmVudCBzZXNzaW9uIgorCitSRUdSRVNT ID0gcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2UKKworaWZkZWYgVVNFX1BHWFMKK1BHX0NPTkZJRyA9 IHBnX2NvbmZpZworUEdYUyA6PSAkKHNoZWxsICQoUEdfQ09ORklHKSAtLXBneHMpCitpbmNsdWRl ICQoUEdYUykKK2Vsc2UKK3N1YmRpciA9IGNvbnRyaWIvcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2UK K3RvcF9idWlsZGRpciA9IC4uLy4uCitpbmNsdWRlICQodG9wX2J1aWxkZGlyKS9zcmMvTWFrZWZp bGUuZ2xvYmFsCitpbmNsdWRlICQodG9wX3NyY2RpcikvY29udHJpYi9jb250cmliLWdsb2JhbC5t aworZW5kaWYKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2UvZXhw ZWN0ZWQvcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2Uub3V0IGIvY29udHJpYi9wZ19zZXNzaW9uX2J1 ZmZlcl91c2FnZS9leHBlY3RlZC9wZ19zZXNzaW9uX2J1ZmZlcl91c2FnZS5vdXQKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjI0MmI0MDAzOTUwCi0tLSAvZGV2L251bGwK KysrIGIvY29udHJpYi9wZ19zZXNzaW9uX2J1ZmZlcl91c2FnZS9leHBlY3RlZC9wZ19zZXNzaW9u X2J1ZmZlcl91c2FnZS5vdXQKQEAgLTAsMCArMSwyODMgQEAKK0xPQUQgJ3BnX3Nlc3Npb25fYnVm ZmVyX3VzYWdlJzsKK0NSRUFURSBFWFRFTlNJT04gcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2U7Cist LSBWZXJpZnkgYWxsIGNvbHVtbnMgYXJlIG5vbi1uZWdhdGl2ZQorU0VMRUNUIGNvdW50KCopID0g MSBBUyBvayBGUk9NIHBnX3Nlc3Npb25fYnVmZmVyX3VzYWdlKCkKK1dIRVJFIHNoYXJlZF9ibGtz X2hpdCA+PSAwIEFORCBzaGFyZWRfYmxrc19yZWFkID49IDAKKyAgQU5EIHNoYXJlZF9ibGtzX2Rp cnRpZWQgPj0gMCBBTkQgc2hhcmVkX2Jsa3Nfd3JpdHRlbiA+PSAwCisgIEFORCBsb2NhbF9ibGtz X2hpdCA+PSAwIEFORCBsb2NhbF9ibGtzX3JlYWQgPj0gMAorICBBTkQgbG9jYWxfYmxrc19kaXJ0 aWVkID49IDAgQU5EIGxvY2FsX2Jsa3Nfd3JpdHRlbiA+PSAwCisgIEFORCB0ZW1wX2Jsa3NfcmVh ZCA+PSAwIEFORCB0ZW1wX2Jsa3Nfd3JpdHRlbiA+PSAwCisgIEFORCBzaGFyZWRfYmxrX3JlYWRf dGltZSA+PSAwIEFORCBzaGFyZWRfYmxrX3dyaXRlX3RpbWUgPj0gMAorICBBTkQgbG9jYWxfYmxr X3JlYWRfdGltZSA+PSAwIEFORCBsb2NhbF9ibGtfd3JpdGVfdGltZSA+PSAwCisgIEFORCB0ZW1w X2Jsa19yZWFkX3RpbWUgPj0gMCBBTkQgdGVtcF9ibGtfd3JpdGVfdGltZSA+PSAwOworIG9rIAor LS0tLQorIHQKKygxIHJvdykKKworLS0gVmVyaWZ5IGNvdW50ZXJzIGluY3JlYXNlIGFmdGVyIGJ1 ZmZlciBhY3Rpdml0eQorU0VMRUNUIHBnX3Nlc3Npb25fYnVmZmVyX3VzYWdlX3Jlc2V0KCk7Cisg cGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2VfcmVzZXQgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgCisoMSByb3cpCisKK0NSRUFURSBURU1QIFRBQkxFIHRlc3RfYnVmX2FjdGl2aXR5 IChpZCBpbnQsIGRhdGEgdGV4dCk7CitJTlNFUlQgSU5UTyB0ZXN0X2J1Zl9hY3Rpdml0eSBTRUxF Q1QgaSwgcmVwZWF0KCd4JywgMTAwKSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDAwKSBBUyBp OworU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF9idWZfYWN0aXZpdHk7CisgY291bnQgCistLS0t LS0tCisgIDEwMDAKKygxIHJvdykKKworU0VMRUNUIGxvY2FsX2Jsa3NfaGl0ICsgbG9jYWxfYmxr c19yZWFkID4gMCBBUyBibG9ja3NfaW5jcmVhc2VkCitGUk9NIHBnX3Nlc3Npb25fYnVmZmVyX3Vz YWdlKCk7CisgYmxvY2tzX2luY3JlYXNlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLQorIHQKKygxIHJv dykKKworRFJPUCBUQUJMRSB0ZXN0X2J1Zl9hY3Rpdml0eTsKKy0tIFBhcmFsbGVsIHF1ZXJ5IHRl c3QKK0NSRUFURSBUQUJMRSBwYXJfZGNfdGFiIChhIGludCwgYiBjaGFyKDIwMCkpOworSU5TRVJU IElOVE8gcGFyX2RjX3RhYiBTRUxFQ1QgaSwgcmVwZWF0KCd4JywgMjAwKSBGUk9NIGdlbmVyYXRl X3NlcmllcygxLCA1MDAwKSBBUyBpOworU0VMRUNUIGNvdW50KCopIEZST00gcGFyX2RjX3RhYjsK KyBjb3VudCAKKy0tLS0tLS0KKyAgNTAwMAorKDEgcm93KQorCistLSBNZWFzdXJlIHNlcmlhbCBz Y2FuIGRlbHRhIChsZWFkZXIgZG9lcyBhbGwgdGhlIHdvcmspCitTRVQgbWF4X3BhcmFsbGVsX3dv cmtlcnNfcGVyX2dhdGhlciA9IDA7CitTRUxFQ1QgcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2VfcmVz ZXQoKTsKKyBwZ19zZXNzaW9uX2J1ZmZlcl91c2FnZV9yZXNldCAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIGNvdW50KCopIEZST00gcGFyX2Rj X3RhYjsKKyBjb3VudCAKKy0tLS0tLS0KKyAgNTAwMAorKDEgcm93KQorCitDUkVBVEUgVEVNUCBU QUJMRSBkY19zZXJpYWxfcmVzdWx0IEFTCitTRUxFQ1Qgc2hhcmVkX2Jsa3NfaGl0IEFTIHNlcmlh bF9kZWx0YSBGUk9NIHBnX3Nlc3Npb25fYnVmZmVyX3VzYWdlKCk7CistLSBNZWFzdXJlIHBhcmFs bGVsIHNjYW4gZGVsdGEgd2l0aCBsZWFkZXIgTk9UIHBhcnRpY2lwYXRpbmcgaW4gc2Nhbm5pbmcu CistLSBXb3JrZXJzIGRvIGFsbCB0YWJsZSBzY2FubmluZzsgbGVhZGVyIG9ubHkgcnVucyB0aGUg R2F0aGVyIG5vZGUuCitTRVQgcGFyYWxsZWxfc2V0dXBfY29zdCA9IDA7CitTRVQgcGFyYWxsZWxf dHVwbGVfY29zdCA9IDA7CitTRVQgbWluX3BhcmFsbGVsX3RhYmxlX3NjYW5fc2l6ZSA9IDA7CitT RVQgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9IDI7CitTRVQgcGFyYWxsZWxfbGVh ZGVyX3BhcnRpY2lwYXRpb24gPSBvZmY7CitTRUxFQ1QgcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2Vf cmVzZXQoKTsKKyBwZ19zZXNzaW9uX2J1ZmZlcl91c2FnZV9yZXNldCAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIGNvdW50KCopIEZST00gcGFy X2RjX3RhYjsKKyBjb3VudCAKKy0tLS0tLS0KKyAgNTAwMAorKDEgcm93KQorCistLSBDb25maXJt IHdlIGdvdCBhIHNpbWlsYXIgaGl0IGNvdW50ZXIgdGhyb3VnaCBwYXJhbGxlbCB3b3JrZXIgYWNj dW11bGF0aW9uCitTRUxFQ1Qgc2hhcmVkX2Jsa3NfaGl0ID4gcy5zZXJpYWxfZGVsdGEgLyAyIEFO RCBzaGFyZWRfYmxrc19oaXQgPCBzLnNlcmlhbF9kZWx0YSAqIDIKKyAgICAgICBBUyBsZWFkZXJf YnVmZmVyc19tYXRjaAorRlJPTSBwZ19zZXNzaW9uX2J1ZmZlcl91c2FnZSgpLCBkY19zZXJpYWxf cmVzdWx0IHM7CisgbGVhZGVyX2J1ZmZlcnNfbWF0Y2ggCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgdAorKDEgcm93KQorCitSRVNFVCBwYXJhbGxlbF9zZXR1cF9jb3N0OworUkVTRVQgcGFyYWxs ZWxfdHVwbGVfY29zdDsKK1JFU0VUIG1pbl9wYXJhbGxlbF90YWJsZV9zY2FuX3NpemU7CitSRVNF VCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyOworUkVTRVQgcGFyYWxsZWxfbGVhZGVy X3BhcnRpY2lwYXRpb247CitEUk9QIFRBQkxFIHBhcl9kY190YWIsIGRjX3NlcmlhbF9yZXN1bHQ7 CistLQorLS0gQWJvcnQvZXhjZXB0aW9uIHRlc3RzOiB2ZXJpZnkgYnVmZmVyIHVzYWdlIHN1cnZp dmVzIHZhcmlvdXMgZXJyb3IgcGF0aHMuCistLQorLS0gUm9sbGVkLWJhY2sgZGl2aWRlLWJ5LXpl cm8gdW5kZXIgRVhQTEFJTiBBTkFMWVpFCitDUkVBVEUgVEVNUCBUQUJMRSBleGNfdGFiIChhIGlu dCwgYiBjaGFyKDIwKSk7CitTRUxFQ1QgcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2VfcmVzZXQoKTsK KyBwZ19zZXNzaW9uX2J1ZmZlcl91c2FnZV9yZXNldCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAKKygxIHJvdykKKworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUywgQ09TVFMg T0ZGKQorICAgICAgICBXSVRIIGlucyBBUyAoSU5TRVJUIElOVE8gZXhjX3RhYiBWQUxVRVMgKDEs ICdhYWEnKSBSRVRVUk5JTkcgYSkKKyAgICAgICAgU0VMRUNUIGEgLyAwIEZST00gaW5zOworRVJS T1I6ICBkaXZpc2lvbiBieSB6ZXJvCitTRUxFQ1QgbG9jYWxfYmxrc19kaXJ0aWVkID4gMCBBUyBl eGNlcHRpb25fYnVmZmVyc192aXNpYmxlCitGUk9NIHBnX3Nlc3Npb25fYnVmZmVyX3VzYWdlKCk7 CisgZXhjZXB0aW9uX2J1ZmZlcnNfdmlzaWJsZSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIHQKKygxIHJvdykKKworRFJPUCBUQUJMRSBleGNfdGFiOworLS0gVW5pcXVlIGNvbnN0cmFp bnQgdmlvbGF0aW9uIGluIHJlZ3VsYXIgcXVlcnkKK0NSRUFURSBURU1QIFRBQkxFIHVuaXF1ZV90 YWIgKGEgaW50IFVOSVFVRSwgYiBjaGFyKDIwKSk7CitJTlNFUlQgSU5UTyB1bmlxdWVfdGFiIFZB TFVFUyAoMSwgJ2ZpcnN0Jyk7CitTRUxFQ1QgcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2VfcmVzZXQo KTsKKyBwZ19zZXNzaW9uX2J1ZmZlcl91c2FnZV9yZXNldCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworSU5TRVJUIElOVE8gdW5pcXVlX3RhYiBWQUxVRVMg KDEsICdkdXBsaWNhdGUnKTsKK0VSUk9SOiAgZHVwbGljYXRlIGtleSB2YWx1ZSB2aW9sYXRlcyB1 bmlxdWUgY29uc3RyYWludCAidW5pcXVlX3RhYl9hX2tleSIKK0RFVEFJTDogIEtleSAoYSk9KDEp IGFscmVhZHkgZXhpc3RzLgorU0VMRUNUIGxvY2FsX2Jsa3NfaGl0ID4gMCBBUyB1bmlxdWVfdmlv bGF0aW9uX2J1ZmZlcnNfdmlzaWJsZQorRlJPTSBwZ19zZXNzaW9uX2J1ZmZlcl91c2FnZSgpOwor IHVuaXF1ZV92aW9sYXRpb25fYnVmZmVyc192aXNpYmxlIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworRFJPUCBUQUJMRSB1bmlxdWVfdGFiOworLS0g Q2F1Z2h0IGV4Y2VwdGlvbiBpbiBQTC9wZ1NRTCBzdWJ0cmFuc2FjdGlvbiAoQkVHSU4uLi5FWENF UFRJT04pCitDUkVBVEUgVEVNUCBUQUJMRSBzdWJ4YWN0X3RhYiAoYSBpbnQsIGIgY2hhcigyMCkp OworQ1JFQVRFIEZVTkNUSU9OIHN1YnhhY3RfZXhjX2Z1bmMoKSBSRVRVUk5TIHRleHQgQVMgJCQK K0JFR0lOCisgICAgQkVHSU4KKyAgICAgICAgRVhFQ1VURSAnRVhQTEFJTiAoQU5BTFlaRSwgQlVG RkVSUywgQ09TVFMgT0ZGKQorICAgICAgICAgICAgV0lUSCBpbnMgQVMgKElOU0VSVCBJTlRPIHN1 YnhhY3RfdGFiIFZBTFVFUyAoMSwgJydhYWEnJykgUkVUVVJOSU5HIGEpCisgICAgICAgICAgICBT RUxFQ1QgYSAvIDAgRlJPTSBpbnMnOworICAgIEVYQ0VQVElPTiBXSEVOIGRpdmlzaW9uX2J5X3pl cm8gVEhFTgorICAgICAgICBSRVRVUk4gJ2NhdWdodCc7CisgICAgRU5EOworICAgIFJFVFVSTiAn bm90IHJlYWNoZWQnOworRU5EOworJCQgTEFOR1VBR0UgcGxwZ3NxbDsKK1NFTEVDVCBwZ19zZXNz aW9uX2J1ZmZlcl91c2FnZV9yZXNldCgpOworIHBnX3Nlc3Npb25fYnVmZmVyX3VzYWdlX3Jlc2V0 IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1Qg c3VieGFjdF9leGNfZnVuYygpOworIHN1YnhhY3RfZXhjX2Z1bmMgCistLS0tLS0tLS0tLS0tLS0t LS0KKyBjYXVnaHQKKygxIHJvdykKKworU0VMRUNUIGxvY2FsX2Jsa3NfZGlydGllZCA+IDAgQVMg c3VieGFjdF9idWZmZXJzX3Zpc2libGUKK0ZST00gcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2UoKTsK KyBzdWJ4YWN0X2J1ZmZlcnNfdmlzaWJsZSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0 CisoMSByb3cpCisKK0RST1AgRlVOQ1RJT04gc3VieGFjdF9leGNfZnVuYzsKK0RST1AgVEFCTEUg c3VieGFjdF90YWI7CistLSBDdXJzb3IgKEZPUiBsb29wKSBpbiBhYm9ydGVkIHN1YnRyYW5zYWN0 aW9uOyB2ZXJpZnkgcG9zdC1leGNlcHRpb24gdHJhY2tpbmcKK0NSRUFURSBURU1QIFRBQkxFIGN1 cnNvcl90YWIgKGEgaW50LCBiIGNoYXIoMjAwKSk7CitJTlNFUlQgSU5UTyBjdXJzb3JfdGFiIFNF TEVDVCBpLCByZXBlYXQoJ3gnLCAyMDApIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMCkgQVMg aTsKK0NSRUFURSBGVU5DVElPTiBjdXJzb3JfZXhjX2Z1bmMoKSBSRVRVUk5TIHRleHQgQVMgJCQK K0RFQ0xBUkUKKyAgICByZWMgcmVjb3JkOworICAgIGNudCBpbnQgOj0gMDsKK0JFR0lOCisgICAg QkVHSU4KKyAgICAgICAgRk9SIHJlYyBJTiBTRUxFQ1QgKiBGUk9NIGN1cnNvcl90YWIgTE9PUAor ICAgICAgICAgICAgY250IDo9IGNudCArIDE7CisgICAgICAgICAgICBJRiBjbnQgPSAyNTAgVEhF TgorICAgICAgICAgICAgICAgIFBFUkZPUk0gMSAvIDA7CisgICAgICAgICAgICBFTkQgSUY7Cisg ICAgICAgIEVORCBMT09QOworICAgIEVYQ0VQVElPTiBXSEVOIGRpdmlzaW9uX2J5X3plcm8gVEhF TgorICAgICAgICBSRVRVUk4gJ2NhdWdodCBhZnRlciAnIHx8IGNudCB8fCAnIHJvd3MnOworICAg IEVORDsKKyAgICBSRVRVUk4gJ25vdCByZWFjaGVkJzsKK0VORDsKKyQkIExBTkdVQUdFIHBscGdz cWw7CitTRUxFQ1QgcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2VfcmVzZXQoKTsKKyBwZ19zZXNzaW9u X2J1ZmZlcl91c2FnZV9yZXNldCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAK KygxIHJvdykKKworU0VMRUNUIGN1cnNvcl9leGNfZnVuYygpOworICAgIGN1cnNvcl9leGNfZnVu YyAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgY2F1Z2h0IGFmdGVyIDI1MCByb3dzCiso MSByb3cpCisKK1NFTEVDVCBsb2NhbF9ibGtzX2hpdCArIGxvY2FsX2Jsa3NfcmVhZCA+IDAKKyAg ICAgICBBUyBjdXJzb3Jfc3VieGFjdF9idWZmZXJzX3Zpc2libGUKK0ZST00gcGdfc2Vzc2lvbl9i dWZmZXJfdXNhZ2UoKTsKKyBjdXJzb3Jfc3VieGFjdF9idWZmZXJzX3Zpc2libGUgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworRFJPUCBGVU5DVElPTiBj dXJzb3JfZXhjX2Z1bmM7CitEUk9QIFRBQkxFIGN1cnNvcl90YWI7CistLSBQYXJhbGxlbCB3b3Jr ZXIgYWJvcnQ6IHdvcmtlciBidWZmZXIgYWN0aXZpdHkgaXMgY3VycmVudGx5IE5PVCBwcm9wYWdh dGVkIG9uIGFib3J0LgorLS0KKy0tIFdoZW4gYSBwYXJhbGxlbCB3b3JrZXIgYWJvcnRzLCBJbnN0 ckVuZFBhcmFsbGVsUXVlcnkgYW5kCistLSBFeGVjUGFyYWxsZWxSZXBvcnRJbnN0cnVtZW50YXRp b24gbmV2ZXIgcnVuLCBzbyB0aGUgd29ya2VyJ3MgYnVmZmVyCistLSBhY3Rpdml0eSBpcyBuZXZl ciB3cml0dGVuIHRvIHNoYXJlZCBtZW1vcnksIGRlc3BpdGUgdGhlIGluZm9ybWF0aW9uIGhhdmlu ZyBiZWVuCistLSBjYXB0dXJlZCBieSB0aGUgcmVzIG93bmVyIHJlbGVhc2UgaW5zdHJ1bWVudGF0 aW9uIGhhbmRsaW5nLgorQ1JFQVRFIFRBQkxFIHBhcl9hYm9ydF90YWIgKGEgaW50LCBiIGNoYXIo MjAwKSk7CitJTlNFUlQgSU5UTyBwYXJfYWJvcnRfdGFiIFNFTEVDVCBpLCByZXBlYXQoJ3gnLCAy MDApIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMDApIEFTIGk7CistLSBXYXJtIHNoYXJlZCBi dWZmZXJzIHNvIGFsbCByZWFkcyBiZWNvbWUgaGl0cworU0VMRUNUIGNvdW50KCopIEZST00gcGFy X2Fib3J0X3RhYjsKKyBjb3VudCAKKy0tLS0tLS0KKyAgNTAwMAorKDEgcm93KQorCistLSBNZWFz dXJlIHNlcmlhbCBzY2FuIGRlbHRhIGFzIGEgcmVmZXJlbmNlIChsZWFkZXIgcmVhZHMgYWxsIGJs b2NrcykKK1NFVCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMDsKK1NFTEVDVCBw Z19zZXNzaW9uX2J1ZmZlcl91c2FnZV9yZXNldCgpOworIHBnX3Nlc3Npb25fYnVmZmVyX3VzYWdl X3Jlc2V0IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitT RUxFQ1QgYjo6aW50MiBGUk9NIHBhcl9hYm9ydF90YWIgV0hFUkUgYSA+IDEwMDA7CitFUlJPUjog IGludmFsaWQgaW5wdXQgc3ludGF4IGZvciB0eXBlIHNtYWxsaW50OiAieHh4eHh4eHh4eHh4eHh4 eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4 eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4 eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4 eHh4eHh4eHh4eHh4eHgiCitDUkVBVEUgVEFCTEUgcGFyX2Fib3J0X3NlcmlhbF9yZXN1bHQgQVMK K1NFTEVDVCBzaGFyZWRfYmxrc19oaXQgQVMgc2VyaWFsX2RlbHRhIEZST00gcGdfc2Vzc2lvbl9i dWZmZXJfdXNhZ2UoKTsKKy0tIE5vdyBmb3JjZSBwYXJhbGxlbCB3aXRoIGxlYWRlciBOT1QgcGFy dGljaXBhdGluZyBpbiBzY2FubmluZworU0VUIHBhcmFsbGVsX3NldHVwX2Nvc3QgPSAwOworU0VU IHBhcmFsbGVsX3R1cGxlX2Nvc3QgPSAwOworU0VUIG1pbl9wYXJhbGxlbF90YWJsZV9zY2FuX3Np emUgPSAwOworU0VUIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworU0VUIHBh cmFsbGVsX2xlYWRlcl9wYXJ0aWNpcGF0aW9uID0gb2ZmOworU0VUIGRlYnVnX3BhcmFsbGVsX3F1 ZXJ5ID0gb247IC0tIEVuc3VyZSB3ZSBnZXQgQ09OVEVYVCBsaW5lIGNvbnNpc3RlbnRseQorU0VM RUNUIHBnX3Nlc3Npb25fYnVmZmVyX3VzYWdlX3Jlc2V0KCk7CisgcGdfc2Vzc2lvbl9idWZmZXJf dXNhZ2VfcmVzZXQgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cp CisKK1NFTEVDVCBiOjppbnQyIEZST00gcGFyX2Fib3J0X3RhYiBXSEVSRSBhID4gMTAwMDsKK0VS Uk9SOiAgaW52YWxpZCBpbnB1dCBzeW50YXggZm9yIHR5cGUgc21hbGxpbnQ6ICJ4eHh4eHh4eHh4 eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4 eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4 eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4 eHh4eHh4eHh4eHh4eHh4eHh4eCIKK0NPTlRFWFQ6ICBwYXJhbGxlbCB3b3JrZXIKK1JFU0VUIGRl YnVnX3BhcmFsbGVsX3F1ZXJ5OworLS0gV29ya2VycyBzY2FubmVkIHRoZSB0YWJsZSBidXQgYWJv cnRlZCBiZWZvcmUgcmVwb3J0aW5nIHN0YXRzIGJhY2suCistLSBUaGUgbGVhZGVyJ3MgZGVsdGEg c2hvdWxkIGJlIG11Y2ggbGVzcyB0aGFuIGEgc2VyaWFsIHNjYW4sIGRvY3VtZW50aW5nCistLSB0 aGF0IHdvcmtlciBidWZmZXIgYWN0aXZpdHkgaXMgbG9zdCBvbiBhYm9ydC4KK1NFTEVDVCBzaGFy ZWRfYmxrc19oaXQgPCBzLnNlcmlhbF9kZWx0YSAvIDIKKyAgICAgICBBUyB3b3JrZXJfYWJvcnRf YnVmZmVyc19ub3RfcHJvcGFnYXRlZAorRlJPTSBwZ19zZXNzaW9uX2J1ZmZlcl91c2FnZSgpLCBw YXJfYWJvcnRfc2VyaWFsX3Jlc3VsdCBzOworIHdvcmtlcl9hYm9ydF9idWZmZXJzX25vdF9wcm9w YWdhdGVkIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHQKKygxIHJv dykKKworUkVTRVQgcGFyYWxsZWxfc2V0dXBfY29zdDsKK1JFU0VUIHBhcmFsbGVsX3R1cGxlX2Nv c3Q7CitSRVNFVCBtaW5fcGFyYWxsZWxfdGFibGVfc2Nhbl9zaXplOworUkVTRVQgbWF4X3BhcmFs bGVsX3dvcmtlcnNfcGVyX2dhdGhlcjsKK1JFU0VUIHBhcmFsbGVsX2xlYWRlcl9wYXJ0aWNpcGF0 aW9uOworRFJPUCBUQUJMRSBwYXJfYWJvcnRfdGFiLCBwYXJfYWJvcnRfc2VyaWFsX3Jlc3VsdDsK Ky0tIENsZWFudXAKK0RST1AgRVhURU5TSU9OIHBnX3Nlc3Npb25fYnVmZmVyX3VzYWdlOwpkaWZm IC0tZ2l0IGEvY29udHJpYi9wZ19zZXNzaW9uX2J1ZmZlcl91c2FnZS9tZXNvbi5idWlsZCBiL2Nv bnRyaWIvcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2UvbWVzb24uYnVpbGQKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjM0Yzc1MDJiZWI0Ci0tLSAvZGV2L251bGwKKysrIGIv Y29udHJpYi9wZ19zZXNzaW9uX2J1ZmZlcl91c2FnZS9tZXNvbi5idWlsZApAQCAtMCwwICsxLDM0 IEBACisjIENvcHlyaWdodCAoYykgMjAyNiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQg R3JvdXAKKworcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2Vfc291cmNlcyA9IGZpbGVzKAorICAncGdf c2Vzc2lvbl9idWZmZXJfdXNhZ2UuYycsCispCisKK2lmIGhvc3Rfc3lzdGVtID09ICd3aW5kb3dz JworICBwZ19zZXNzaW9uX2J1ZmZlcl91c2FnZV9zb3VyY2VzICs9IHJjX2xpYl9nZW4ucHJvY2Vz cyh3aW4zMnZlcl9yYywgZXh0cmFfYXJnczogWworICAgICctLU5BTUUnLCAncGdfc2Vzc2lvbl9i dWZmZXJfdXNhZ2UnLAorICAgICctLUZJTEVERVNDJywgJ3BnX3Nlc3Npb25fYnVmZmVyX3VzYWdl IC0gc2hvdyBidWZmZXIgdXNhZ2Ugc3RhdGlzdGljcyBmb3IgdGhlIGN1cnJlbnQgc2Vzc2lvbics XSkKK2VuZGlmCisKK3BnX3Nlc3Npb25fYnVmZmVyX3VzYWdlID0gc2hhcmVkX21vZHVsZSgncGdf c2Vzc2lvbl9idWZmZXJfdXNhZ2UnLAorICBwZ19zZXNzaW9uX2J1ZmZlcl91c2FnZV9zb3VyY2Vz LAorICBrd2FyZ3M6IGNvbnRyaWJfbW9kX2FyZ3MsCispCitjb250cmliX3RhcmdldHMgKz0gcGdf c2Vzc2lvbl9idWZmZXJfdXNhZ2UKKworaW5zdGFsbF9kYXRhKAorICAncGdfc2Vzc2lvbl9idWZm ZXJfdXNhZ2UtLTEuMC5zcWwnLAorICAncGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2UuY29udHJvbCcs CisgIGt3YXJnczogY29udHJpYl9kYXRhX2FyZ3MsCispCisKK3Rlc3RzICs9IHsKKyAgJ25hbWUn OiAncGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2UnLAorICAnc2QnOiBtZXNvbi5jdXJyZW50X3NvdXJj ZV9kaXIoKSwKKyAgJ2JkJzogbWVzb24uY3VycmVudF9idWlsZF9kaXIoKSwKKyAgJ3JlZ3Jlc3Mn OiB7CisgICAgJ3NxbCc6IFsKKyAgICAgICdwZ19zZXNzaW9uX2J1ZmZlcl91c2FnZScsCisgICAg XSwKKyAgfSwKK30KZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2Uv cGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2UtLTEuMC5zcWwgYi9jb250cmliL3BnX3Nlc3Npb25fYnVm ZmVyX3VzYWdlL3BnX3Nlc3Npb25fYnVmZmVyX3VzYWdlLS0xLjAuc3FsCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5iMzAwZmRiYzY0MwotLS0gL2Rldi9udWxsCisrKyBi L2NvbnRyaWIvcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2UvcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2Ut LTEuMC5zcWwKQEAgLTAsMCArMSwzMSBAQAorLyogY29udHJpYi9wZ19zZXNzaW9uX2J1ZmZlcl91 c2FnZS9wZ19zZXNzaW9uX2J1ZmZlcl91c2FnZS0tMS4wLnNxbCAqLworCistLSBjb21wbGFpbiBp ZiBzY3JpcHQgaXMgc291cmNlZCBpbiBwc3FsLCByYXRoZXIgdGhhbiB2aWEgQ1JFQVRFIEVYVEVO U0lPTgorXGVjaG8gVXNlICJDUkVBVEUgRVhURU5TSU9OIHBnX3Nlc3Npb25fYnVmZmVyX3VzYWdl IiB0byBsb2FkIHRoaXMgZmlsZS4gXHF1aXQKKworQ1JFQVRFIEZVTkNUSU9OIHBnX3Nlc3Npb25f YnVmZmVyX3VzYWdlKAorICAgIE9VVCBzaGFyZWRfYmxrc19oaXQgYmlnaW50LAorICAgIE9VVCBz aGFyZWRfYmxrc19yZWFkIGJpZ2ludCwKKyAgICBPVVQgc2hhcmVkX2Jsa3NfZGlydGllZCBiaWdp bnQsCisgICAgT1VUIHNoYXJlZF9ibGtzX3dyaXR0ZW4gYmlnaW50LAorICAgIE9VVCBsb2NhbF9i bGtzX2hpdCBiaWdpbnQsCisgICAgT1VUIGxvY2FsX2Jsa3NfcmVhZCBiaWdpbnQsCisgICAgT1VU IGxvY2FsX2Jsa3NfZGlydGllZCBiaWdpbnQsCisgICAgT1VUIGxvY2FsX2Jsa3Nfd3JpdHRlbiBi aWdpbnQsCisgICAgT1VUIHRlbXBfYmxrc19yZWFkIGJpZ2ludCwKKyAgICBPVVQgdGVtcF9ibGtz X3dyaXR0ZW4gYmlnaW50LAorICAgIE9VVCBzaGFyZWRfYmxrX3JlYWRfdGltZSBkb3VibGUgcHJl Y2lzaW9uLAorICAgIE9VVCBzaGFyZWRfYmxrX3dyaXRlX3RpbWUgZG91YmxlIHByZWNpc2lvbiwK KyAgICBPVVQgbG9jYWxfYmxrX3JlYWRfdGltZSBkb3VibGUgcHJlY2lzaW9uLAorICAgIE9VVCBs b2NhbF9ibGtfd3JpdGVfdGltZSBkb3VibGUgcHJlY2lzaW9uLAorICAgIE9VVCB0ZW1wX2Jsa19y ZWFkX3RpbWUgZG91YmxlIHByZWNpc2lvbiwKKyAgICBPVVQgdGVtcF9ibGtfd3JpdGVfdGltZSBk b3VibGUgcHJlY2lzaW9uCispCitSRVRVUk5TIHJlY29yZAorQVMgJ01PRFVMRV9QQVRITkFNRScs ICdwZ19zZXNzaW9uX2J1ZmZlcl91c2FnZScKK0xBTkdVQUdFIEMgUEFSQUxMRUwgUkVTVFJJQ1RF RDsKKworQ1JFQVRFIEZVTkNUSU9OIHBnX3Nlc3Npb25fYnVmZmVyX3VzYWdlX3Jlc2V0KCkKK1JF VFVSTlMgdm9pZAorQVMgJ01PRFVMRV9QQVRITkFNRScsICdwZ19zZXNzaW9uX2J1ZmZlcl91c2Fn ZV9yZXNldCcKK0xBTkdVQUdFIEMgUEFSQUxMRUwgUkVTVFJJQ1RFRDsKZGlmZiAtLWdpdCBhL2Nv bnRyaWIvcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2UvcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2UuYyBi L2NvbnRyaWIvcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2UvcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2Uu YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZjg2OTk1NmIzYTkKLS0t IC9kZXYvbnVsbAorKysgYi9jb250cmliL3BnX3Nlc3Npb25fYnVmZmVyX3VzYWdlL3BnX3Nlc3Np b25fYnVmZmVyX3VzYWdlLmMKQEAgLTAsMCArMSw5NSBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg KgorICogcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2UuYworICoJICBzaG93IGJ1ZmZlciB1c2FnZSBz dGF0aXN0aWNzIGZvciB0aGUgY3VycmVudCBzZXNzaW9uCisgKgorICogQ29weXJpZ2h0IChjKSAy MDI2LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICoKKyAqCSAgY29udHJp Yi9wZ19zZXNzaW9uX2J1ZmZlcl91c2FnZS9wZ19zZXNzaW9uX2J1ZmZlcl91c2FnZS5jCisgKi0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyAqLworI2luY2x1ZGUgInBvc3RncmVzLmgiCisKKyNpbmNsdWRlICJh Y2Nlc3MvaHR1cF9kZXRhaWxzLmgiCisjaW5jbHVkZSAiZXhlY3V0b3IvaW5zdHJ1bWVudC5oIgor I2luY2x1ZGUgImZ1bmNhcGkuaCIKKyNpbmNsdWRlICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRlICJ1 dGlscy9tZW11dGlscy5oIgorCitQR19NT0RVTEVfTUFHSUNfRVhUKAorCQkJCQkubmFtZSA9ICJw Z19zZXNzaW9uX2J1ZmZlcl91c2FnZSIsCisJCQkJCS52ZXJzaW9uID0gUEdfVkVSU0lPTgorKTsK KworI2RlZmluZSBOVU1fQlVGRkVSX1VTQUdFX0NPTFVNTlMgMTYKKworUEdfRlVOQ1RJT05fSU5G T19WMShwZ19zZXNzaW9uX2J1ZmZlcl91c2FnZSk7CitQR19GVU5DVElPTl9JTkZPX1YxKHBnX3Nl c3Npb25fYnVmZmVyX3VzYWdlX3Jlc2V0KTsKKworI2RlZmluZSBIQVZFX0lOU1RSX1NUQUNLIDEJ CS8qIENoYW5nZSB0byAwIHdoZW4gdGVzdGluZyBiZWZvcmUgc3RhY2sKKwkJCQkJCQkJICogY2hh bmdlICovCisKKy8qCisgKiBTUUwgZnVuY3Rpb246IHBnX3Nlc3Npb25fYnVmZmVyX3VzYWdlKCkK KyAqCisgKiBSZXR1cm5zIGEgc2luZ2xlIHJvdyB3aXRoIGFsbCBCdWZmZXJVc2FnZSBjb3VudGVy cyBhY2N1bXVsYXRlZCBzaW5jZSB0aGUKKyAqIHN0YXJ0IG9mIHRoZSBzZXNzaW9uLiBFeGNsdWRl cyBhbnkgdXNhZ2Ugbm90IHlldCBhZGRlZCB0byB0aGUgdG9wIG9mIHRoZQorICogc3RhY2sgKGUu Zy4gaWYgdGhpcyBnZXRzIGNhbGxlZCBpbnNpZGUgYSBzdGF0ZW1lbnQgdGhhdCBhbHNvIGhhZCBi dWZmZXIKKyAqIGFjdGl2aXR5KS4KKyAqLworRGF0dW0KK3BnX3Nlc3Npb25fYnVmZmVyX3VzYWdl KFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJVHVwbGVEZXNjCXR1cGRlc2M7CisJRGF0dW0JCXZhbHVl c1tOVU1fQlVGRkVSX1VTQUdFX0NPTFVNTlNdOworCWJvb2wJCW51bGxzW05VTV9CVUZGRVJfVVNB R0VfQ09MVU1OU107CisJQnVmZmVyVXNhZ2UgKnVzYWdlOworCisJaWYgKGdldF9jYWxsX3Jlc3Vs dF90eXBlKGZjaW5mbywgTlVMTCwgJnR1cGRlc2MpICE9IFRZUEVGVU5DX0NPTVBPU0lURSkKKwkJ ZWxvZyhFUlJPUiwgInJldHVybiB0eXBlIG11c3QgYmUgYSByb3cgdHlwZSIpOworCisJbWVtc2V0 KG51bGxzLCAwLCBzaXplb2YobnVsbHMpKTsKKworI2lmIEhBVkVfSU5TVFJfU1RBQ0sKKwl1c2Fn ZSA9ICZpbnN0cl90b3AuYnVmdXNhZ2U7CisjZWxzZQorCXVzYWdlID0gJnBnQnVmZmVyVXNhZ2U7 CisjZW5kaWYKKworCXZhbHVlc1swXSA9IEludDY0R2V0RGF0dW0odXNhZ2UtPnNoYXJlZF9ibGtz X2hpdCk7CisJdmFsdWVzWzFdID0gSW50NjRHZXREYXR1bSh1c2FnZS0+c2hhcmVkX2Jsa3NfcmVh ZCk7CisJdmFsdWVzWzJdID0gSW50NjRHZXREYXR1bSh1c2FnZS0+c2hhcmVkX2Jsa3NfZGlydGll ZCk7CisJdmFsdWVzWzNdID0gSW50NjRHZXREYXR1bSh1c2FnZS0+c2hhcmVkX2Jsa3Nfd3JpdHRl bik7CisJdmFsdWVzWzRdID0gSW50NjRHZXREYXR1bSh1c2FnZS0+bG9jYWxfYmxrc19oaXQpOwor CXZhbHVlc1s1XSA9IEludDY0R2V0RGF0dW0odXNhZ2UtPmxvY2FsX2Jsa3NfcmVhZCk7CisJdmFs dWVzWzZdID0gSW50NjRHZXREYXR1bSh1c2FnZS0+bG9jYWxfYmxrc19kaXJ0aWVkKTsKKwl2YWx1 ZXNbN10gPSBJbnQ2NEdldERhdHVtKHVzYWdlLT5sb2NhbF9ibGtzX3dyaXR0ZW4pOworCXZhbHVl c1s4XSA9IEludDY0R2V0RGF0dW0odXNhZ2UtPnRlbXBfYmxrc19yZWFkKTsKKwl2YWx1ZXNbOV0g PSBJbnQ2NEdldERhdHVtKHVzYWdlLT50ZW1wX2Jsa3Nfd3JpdHRlbik7CisJdmFsdWVzWzEwXSA9 IEZsb2F0OEdldERhdHVtKElOU1RSX1RJTUVfR0VUX01JTExJU0VDKHVzYWdlLT5zaGFyZWRfYmxr X3JlYWRfdGltZSkpOworCXZhbHVlc1sxMV0gPSBGbG9hdDhHZXREYXR1bShJTlNUUl9USU1FX0dF VF9NSUxMSVNFQyh1c2FnZS0+c2hhcmVkX2Jsa193cml0ZV90aW1lKSk7CisJdmFsdWVzWzEyXSA9 IEZsb2F0OEdldERhdHVtKElOU1RSX1RJTUVfR0VUX01JTExJU0VDKHVzYWdlLT5sb2NhbF9ibGtf cmVhZF90aW1lKSk7CisJdmFsdWVzWzEzXSA9IEZsb2F0OEdldERhdHVtKElOU1RSX1RJTUVfR0VU X01JTExJU0VDKHVzYWdlLT5sb2NhbF9ibGtfd3JpdGVfdGltZSkpOworCXZhbHVlc1sxNF0gPSBG bG9hdDhHZXREYXR1bShJTlNUUl9USU1FX0dFVF9NSUxMSVNFQyh1c2FnZS0+dGVtcF9ibGtfcmVh ZF90aW1lKSk7CisJdmFsdWVzWzE1XSA9IEZsb2F0OEdldERhdHVtKElOU1RSX1RJTUVfR0VUX01J TExJU0VDKHVzYWdlLT50ZW1wX2Jsa193cml0ZV90aW1lKSk7CisKKwlQR19SRVRVUk5fREFUVU0o SGVhcFR1cGxlR2V0RGF0dW0oaGVhcF9mb3JtX3R1cGxlKHR1cGRlc2MsIHZhbHVlcywgbnVsbHMp KSk7Cit9CisKKy8qCisgKiBTUUwgZnVuY3Rpb246IHBnX3Nlc3Npb25fYnVmZmVyX3VzYWdlX3Jl c2V0KCkKKyAqCisgKiBSZXNldHMgYWxsIEJ1ZmZlclVzYWdlIGNvdW50ZXJzIG9uIHRoZSB0b3Ag aW5zdHJ1bWVudGF0aW9uIHN0YWNrIHRvIHplcm8uCisgKiBVc2VmdWwgaW4gdGVzdHMgdG8gYXZv aWQgdGhlIGJhc2VsaW5lL2RlbHRhIHBhdHRlcm4uCisgKi8KK0RhdHVtCitwZ19zZXNzaW9uX2J1 ZmZlcl91c2FnZV9yZXNldChQR19GVU5DVElPTl9BUkdTKQoreworI2lmIEhBVkVfSU5TVFJfU1RB Q0sKKwltZW1zZXQoJmluc3RyX3RvcC5idWZ1c2FnZSwgMCwgc2l6ZW9mKEJ1ZmZlclVzYWdlKSk7 CisjZWxzZQorCW1lbXNldCgmcGdCdWZmZXJVc2FnZSwgMCwgc2l6ZW9mKEJ1ZmZlclVzYWdlKSk7 CisjZW5kaWYKKworCVBHX1JFVFVSTl9WT0lEKCk7Cit9CmRpZmYgLS1naXQgYS9jb250cmliL3Bn X3Nlc3Npb25fYnVmZmVyX3VzYWdlL3BnX3Nlc3Npb25fYnVmZmVyX3VzYWdlLmNvbnRyb2wgYi9j b250cmliL3BnX3Nlc3Npb25fYnVmZmVyX3VzYWdlL3BnX3Nlc3Npb25fYnVmZmVyX3VzYWdlLmNv bnRyb2wKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmZhYmQwNWVlMDI0 Ci0tLSAvZGV2L251bGwKKysrIGIvY29udHJpYi9wZ19zZXNzaW9uX2J1ZmZlcl91c2FnZS9wZ19z ZXNzaW9uX2J1ZmZlcl91c2FnZS5jb250cm9sCkBAIC0wLDAgKzEsNSBAQAorIyBwZ19zZXNzaW9u X2J1ZmZlcl91c2FnZSBleHRlbnNpb24KK2NvbW1lbnQgPSAnc2hvdyBidWZmZXIgdXNhZ2Ugc3Rh dGlzdGljcyBmb3IgdGhlIGN1cnJlbnQgc2Vzc2lvbicKK2RlZmF1bHRfdmVyc2lvbiA9ICcxLjAn Cittb2R1bGVfcGF0aG5hbWUgPSAnJGxpYmRpci9wZ19zZXNzaW9uX2J1ZmZlcl91c2FnZScKK3Jl bG9jYXRhYmxlID0gdHJ1ZQpkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ19zZXNzaW9uX2J1ZmZlcl91 c2FnZS9zcWwvcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2Uuc3FsIGIvY29udHJpYi9wZ19zZXNzaW9u X2J1ZmZlcl91c2FnZS9zcWwvcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2Uuc3FsCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi44ZjU4MTBmYWRkMwotLS0gL2Rldi9udWxsCisr KyBiL2NvbnRyaWIvcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2Uvc3FsL3BnX3Nlc3Npb25fYnVmZmVy X3VzYWdlLnNxbApAQCAtMCwwICsxLDIwNCBAQAorTE9BRCAncGdfc2Vzc2lvbl9idWZmZXJfdXNh Z2UnOworQ1JFQVRFIEVYVEVOU0lPTiBwZ19zZXNzaW9uX2J1ZmZlcl91c2FnZTsKKworLS0gVmVy aWZ5IGFsbCBjb2x1bW5zIGFyZSBub24tbmVnYXRpdmUKK1NFTEVDVCBjb3VudCgqKSA9IDEgQVMg b2sgRlJPTSBwZ19zZXNzaW9uX2J1ZmZlcl91c2FnZSgpCitXSEVSRSBzaGFyZWRfYmxrc19oaXQg Pj0gMCBBTkQgc2hhcmVkX2Jsa3NfcmVhZCA+PSAwCisgIEFORCBzaGFyZWRfYmxrc19kaXJ0aWVk ID49IDAgQU5EIHNoYXJlZF9ibGtzX3dyaXR0ZW4gPj0gMAorICBBTkQgbG9jYWxfYmxrc19oaXQg Pj0gMCBBTkQgbG9jYWxfYmxrc19yZWFkID49IDAKKyAgQU5EIGxvY2FsX2Jsa3NfZGlydGllZCA+ PSAwIEFORCBsb2NhbF9ibGtzX3dyaXR0ZW4gPj0gMAorICBBTkQgdGVtcF9ibGtzX3JlYWQgPj0g MCBBTkQgdGVtcF9ibGtzX3dyaXR0ZW4gPj0gMAorICBBTkQgc2hhcmVkX2Jsa19yZWFkX3RpbWUg Pj0gMCBBTkQgc2hhcmVkX2Jsa193cml0ZV90aW1lID49IDAKKyAgQU5EIGxvY2FsX2Jsa19yZWFk X3RpbWUgPj0gMCBBTkQgbG9jYWxfYmxrX3dyaXRlX3RpbWUgPj0gMAorICBBTkQgdGVtcF9ibGtf cmVhZF90aW1lID49IDAgQU5EIHRlbXBfYmxrX3dyaXRlX3RpbWUgPj0gMDsKKworLS0gVmVyaWZ5 IGNvdW50ZXJzIGluY3JlYXNlIGFmdGVyIGJ1ZmZlciBhY3Rpdml0eQorU0VMRUNUIHBnX3Nlc3Np b25fYnVmZmVyX3VzYWdlX3Jlc2V0KCk7CisKK0NSRUFURSBURU1QIFRBQkxFIHRlc3RfYnVmX2Fj dGl2aXR5IChpZCBpbnQsIGRhdGEgdGV4dCk7CitJTlNFUlQgSU5UTyB0ZXN0X2J1Zl9hY3Rpdml0 eSBTRUxFQ1QgaSwgcmVwZWF0KCd4JywgMTAwKSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDAw KSBBUyBpOworU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF9idWZfYWN0aXZpdHk7CisKK1NFTEVD VCBsb2NhbF9ibGtzX2hpdCArIGxvY2FsX2Jsa3NfcmVhZCA+IDAgQVMgYmxvY2tzX2luY3JlYXNl ZAorRlJPTSBwZ19zZXNzaW9uX2J1ZmZlcl91c2FnZSgpOworCitEUk9QIFRBQkxFIHRlc3RfYnVm X2FjdGl2aXR5OworCistLSBQYXJhbGxlbCBxdWVyeSB0ZXN0CitDUkVBVEUgVEFCTEUgcGFyX2Rj X3RhYiAoYSBpbnQsIGIgY2hhcigyMDApKTsKK0lOU0VSVCBJTlRPIHBhcl9kY190YWIgU0VMRUNU IGksIHJlcGVhdCgneCcsIDIwMCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAwMCkgQVMgaTsK KworU0VMRUNUIGNvdW50KCopIEZST00gcGFyX2RjX3RhYjsKKworLS0gTWVhc3VyZSBzZXJpYWwg c2NhbiBkZWx0YSAobGVhZGVyIGRvZXMgYWxsIHRoZSB3b3JrKQorU0VUIG1heF9wYXJhbGxlbF93 b3JrZXJzX3Blcl9nYXRoZXIgPSAwOworCitTRUxFQ1QgcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2Vf cmVzZXQoKTsKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHBhcl9kY190YWI7CisKK0NSRUFURSBURU1Q IFRBQkxFIGRjX3NlcmlhbF9yZXN1bHQgQVMKK1NFTEVDVCBzaGFyZWRfYmxrc19oaXQgQVMgc2Vy aWFsX2RlbHRhIEZST00gcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2UoKTsKKworLS0gTWVhc3VyZSBw YXJhbGxlbCBzY2FuIGRlbHRhIHdpdGggbGVhZGVyIE5PVCBwYXJ0aWNpcGF0aW5nIGluIHNjYW5u aW5nLgorLS0gV29ya2VycyBkbyBhbGwgdGFibGUgc2Nhbm5pbmc7IGxlYWRlciBvbmx5IHJ1bnMg dGhlIEdhdGhlciBub2RlLgorU0VUIHBhcmFsbGVsX3NldHVwX2Nvc3QgPSAwOworU0VUIHBhcmFs bGVsX3R1cGxlX2Nvc3QgPSAwOworU0VUIG1pbl9wYXJhbGxlbF90YWJsZV9zY2FuX3NpemUgPSAw OworU0VUIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworU0VUIHBhcmFsbGVs X2xlYWRlcl9wYXJ0aWNpcGF0aW9uID0gb2ZmOworCitTRUxFQ1QgcGdfc2Vzc2lvbl9idWZmZXJf dXNhZ2VfcmVzZXQoKTsKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHBhcl9kY190YWI7CisKKy0tIENv bmZpcm0gd2UgZ290IGEgc2ltaWxhciBoaXQgY291bnRlciB0aHJvdWdoIHBhcmFsbGVsIHdvcmtl ciBhY2N1bXVsYXRpb24KK1NFTEVDVCBzaGFyZWRfYmxrc19oaXQgPiBzLnNlcmlhbF9kZWx0YSAv IDIgQU5EIHNoYXJlZF9ibGtzX2hpdCA8IHMuc2VyaWFsX2RlbHRhICogMgorICAgICAgIEFTIGxl YWRlcl9idWZmZXJzX21hdGNoCitGUk9NIHBnX3Nlc3Npb25fYnVmZmVyX3VzYWdlKCksIGRjX3Nl cmlhbF9yZXN1bHQgczsKKworUkVTRVQgcGFyYWxsZWxfc2V0dXBfY29zdDsKK1JFU0VUIHBhcmFs bGVsX3R1cGxlX2Nvc3Q7CitSRVNFVCBtaW5fcGFyYWxsZWxfdGFibGVfc2Nhbl9zaXplOworUkVT RVQgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlcjsKK1JFU0VUIHBhcmFsbGVsX2xlYWRl cl9wYXJ0aWNpcGF0aW9uOworCitEUk9QIFRBQkxFIHBhcl9kY190YWIsIGRjX3NlcmlhbF9yZXN1 bHQ7CisKKy0tCistLSBBYm9ydC9leGNlcHRpb24gdGVzdHM6IHZlcmlmeSBidWZmZXIgdXNhZ2Ug c3Vydml2ZXMgdmFyaW91cyBlcnJvciBwYXRocy4KKy0tCisKKy0tIFJvbGxlZC1iYWNrIGRpdmlk ZS1ieS16ZXJvIHVuZGVyIEVYUExBSU4gQU5BTFlaRQorQ1JFQVRFIFRFTVAgVEFCTEUgZXhjX3Rh YiAoYSBpbnQsIGIgY2hhcigyMCkpOworCitTRUxFQ1QgcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2Vf cmVzZXQoKTsKKworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUywgQ09TVFMgT0ZGKQorICAgICAg ICBXSVRIIGlucyBBUyAoSU5TRVJUIElOVE8gZXhjX3RhYiBWQUxVRVMgKDEsICdhYWEnKSBSRVRV Uk5JTkcgYSkKKyAgICAgICAgU0VMRUNUIGEgLyAwIEZST00gaW5zOworCitTRUxFQ1QgbG9jYWxf Ymxrc19kaXJ0aWVkID4gMCBBUyBleGNlcHRpb25fYnVmZmVyc192aXNpYmxlCitGUk9NIHBnX3Nl c3Npb25fYnVmZmVyX3VzYWdlKCk7CisKK0RST1AgVEFCTEUgZXhjX3RhYjsKKworLS0gVW5pcXVl IGNvbnN0cmFpbnQgdmlvbGF0aW9uIGluIHJlZ3VsYXIgcXVlcnkKK0NSRUFURSBURU1QIFRBQkxF IHVuaXF1ZV90YWIgKGEgaW50IFVOSVFVRSwgYiBjaGFyKDIwKSk7CitJTlNFUlQgSU5UTyB1bmlx dWVfdGFiIFZBTFVFUyAoMSwgJ2ZpcnN0Jyk7CisKK1NFTEVDVCBwZ19zZXNzaW9uX2J1ZmZlcl91 c2FnZV9yZXNldCgpOworSU5TRVJUIElOVE8gdW5pcXVlX3RhYiBWQUxVRVMgKDEsICdkdXBsaWNh dGUnKTsKKworU0VMRUNUIGxvY2FsX2Jsa3NfaGl0ID4gMCBBUyB1bmlxdWVfdmlvbGF0aW9uX2J1 ZmZlcnNfdmlzaWJsZQorRlJPTSBwZ19zZXNzaW9uX2J1ZmZlcl91c2FnZSgpOworCitEUk9QIFRB QkxFIHVuaXF1ZV90YWI7CisKKy0tIENhdWdodCBleGNlcHRpb24gaW4gUEwvcGdTUUwgc3VidHJh bnNhY3Rpb24gKEJFR0lOLi4uRVhDRVBUSU9OKQorQ1JFQVRFIFRFTVAgVEFCTEUgc3VieGFjdF90 YWIgKGEgaW50LCBiIGNoYXIoMjApKTsKKworQ1JFQVRFIEZVTkNUSU9OIHN1YnhhY3RfZXhjX2Z1 bmMoKSBSRVRVUk5TIHRleHQgQVMgJCQKK0JFR0lOCisgICAgQkVHSU4KKyAgICAgICAgRVhFQ1VU RSAnRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUywgQ09TVFMgT0ZGKQorICAgICAgICAgICAgV0lU SCBpbnMgQVMgKElOU0VSVCBJTlRPIHN1YnhhY3RfdGFiIFZBTFVFUyAoMSwgJydhYWEnJykgUkVU VVJOSU5HIGEpCisgICAgICAgICAgICBTRUxFQ1QgYSAvIDAgRlJPTSBpbnMnOworICAgIEVYQ0VQ VElPTiBXSEVOIGRpdmlzaW9uX2J5X3plcm8gVEhFTgorICAgICAgICBSRVRVUk4gJ2NhdWdodCc7 CisgICAgRU5EOworICAgIFJFVFVSTiAnbm90IHJlYWNoZWQnOworRU5EOworJCQgTEFOR1VBR0Ug cGxwZ3NxbDsKKworU0VMRUNUIHBnX3Nlc3Npb25fYnVmZmVyX3VzYWdlX3Jlc2V0KCk7CitTRUxF Q1Qgc3VieGFjdF9leGNfZnVuYygpOworCitTRUxFQ1QgbG9jYWxfYmxrc19kaXJ0aWVkID4gMCBB UyBzdWJ4YWN0X2J1ZmZlcnNfdmlzaWJsZQorRlJPTSBwZ19zZXNzaW9uX2J1ZmZlcl91c2FnZSgp OworCitEUk9QIEZVTkNUSU9OIHN1YnhhY3RfZXhjX2Z1bmM7CitEUk9QIFRBQkxFIHN1YnhhY3Rf dGFiOworCistLSBDdXJzb3IgKEZPUiBsb29wKSBpbiBhYm9ydGVkIHN1YnRyYW5zYWN0aW9uOyB2 ZXJpZnkgcG9zdC1leGNlcHRpb24gdHJhY2tpbmcKK0NSRUFURSBURU1QIFRBQkxFIGN1cnNvcl90 YWIgKGEgaW50LCBiIGNoYXIoMjAwKSk7CitJTlNFUlQgSU5UTyBjdXJzb3JfdGFiIFNFTEVDVCBp LCByZXBlYXQoJ3gnLCAyMDApIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMCkgQVMgaTsKKwor Q1JFQVRFIEZVTkNUSU9OIGN1cnNvcl9leGNfZnVuYygpIFJFVFVSTlMgdGV4dCBBUyAkJAorREVD TEFSRQorICAgIHJlYyByZWNvcmQ7CisgICAgY250IGludCA6PSAwOworQkVHSU4KKyAgICBCRUdJ TgorICAgICAgICBGT1IgcmVjIElOIFNFTEVDVCAqIEZST00gY3Vyc29yX3RhYiBMT09QCisgICAg ICAgICAgICBjbnQgOj0gY250ICsgMTsKKyAgICAgICAgICAgIElGIGNudCA9IDI1MCBUSEVOCisg ICAgICAgICAgICAgICAgUEVSRk9STSAxIC8gMDsKKyAgICAgICAgICAgIEVORCBJRjsKKyAgICAg ICAgRU5EIExPT1A7CisgICAgRVhDRVBUSU9OIFdIRU4gZGl2aXNpb25fYnlfemVybyBUSEVOCisg ICAgICAgIFJFVFVSTiAnY2F1Z2h0IGFmdGVyICcgfHwgY250IHx8ICcgcm93cyc7CisgICAgRU5E OworICAgIFJFVFVSTiAnbm90IHJlYWNoZWQnOworRU5EOworJCQgTEFOR1VBR0UgcGxwZ3NxbDsK KworU0VMRUNUIHBnX3Nlc3Npb25fYnVmZmVyX3VzYWdlX3Jlc2V0KCk7CitTRUxFQ1QgY3Vyc29y X2V4Y19mdW5jKCk7CisKK1NFTEVDVCBsb2NhbF9ibGtzX2hpdCArIGxvY2FsX2Jsa3NfcmVhZCA+ IDAKKyAgICAgICBBUyBjdXJzb3Jfc3VieGFjdF9idWZmZXJzX3Zpc2libGUKK0ZST00gcGdfc2Vz c2lvbl9idWZmZXJfdXNhZ2UoKTsKKworRFJPUCBGVU5DVElPTiBjdXJzb3JfZXhjX2Z1bmM7CitE Uk9QIFRBQkxFIGN1cnNvcl90YWI7CisKKy0tIFBhcmFsbGVsIHdvcmtlciBhYm9ydDogd29ya2Vy IGJ1ZmZlciBhY3Rpdml0eSBpcyBjdXJyZW50bHkgTk9UIHByb3BhZ2F0ZWQgb24gYWJvcnQuCist LQorLS0gV2hlbiBhIHBhcmFsbGVsIHdvcmtlciBhYm9ydHMsIEluc3RyRW5kUGFyYWxsZWxRdWVy eSBhbmQKKy0tIEV4ZWNQYXJhbGxlbFJlcG9ydEluc3RydW1lbnRhdGlvbiBuZXZlciBydW4sIHNv IHRoZSB3b3JrZXIncyBidWZmZXIKKy0tIGFjdGl2aXR5IGlzIG5ldmVyIHdyaXR0ZW4gdG8gc2hh cmVkIG1lbW9yeSwgZGVzcGl0ZSB0aGUgaW5mb3JtYXRpb24gaGF2aW5nIGJlZW4KKy0tIGNhcHR1 cmVkIGJ5IHRoZSByZXMgb3duZXIgcmVsZWFzZSBpbnN0cnVtZW50YXRpb24gaGFuZGxpbmcuCitD UkVBVEUgVEFCTEUgcGFyX2Fib3J0X3RhYiAoYSBpbnQsIGIgY2hhcigyMDApKTsKK0lOU0VSVCBJ TlRPIHBhcl9hYm9ydF90YWIgU0VMRUNUIGksIHJlcGVhdCgneCcsIDIwMCkgRlJPTSBnZW5lcmF0 ZV9zZXJpZXMoMSwgNTAwMCkgQVMgaTsKKworLS0gV2FybSBzaGFyZWQgYnVmZmVycyBzbyBhbGwg cmVhZHMgYmVjb21lIGhpdHMKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHBhcl9hYm9ydF90YWI7CisK Ky0tIE1lYXN1cmUgc2VyaWFsIHNjYW4gZGVsdGEgYXMgYSByZWZlcmVuY2UgKGxlYWRlciByZWFk cyBhbGwgYmxvY2tzKQorU0VUIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAwOwor CitTRUxFQ1QgcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2VfcmVzZXQoKTsKK1NFTEVDVCBiOjppbnQy IEZST00gcGFyX2Fib3J0X3RhYiBXSEVSRSBhID4gMTAwMDsKKworQ1JFQVRFIFRBQkxFIHBhcl9h Ym9ydF9zZXJpYWxfcmVzdWx0IEFTCitTRUxFQ1Qgc2hhcmVkX2Jsa3NfaGl0IEFTIHNlcmlhbF9k ZWx0YSBGUk9NIHBnX3Nlc3Npb25fYnVmZmVyX3VzYWdlKCk7CisKKy0tIE5vdyBmb3JjZSBwYXJh bGxlbCB3aXRoIGxlYWRlciBOT1QgcGFydGljaXBhdGluZyBpbiBzY2FubmluZworU0VUIHBhcmFs bGVsX3NldHVwX2Nvc3QgPSAwOworU0VUIHBhcmFsbGVsX3R1cGxlX2Nvc3QgPSAwOworU0VUIG1p bl9wYXJhbGxlbF90YWJsZV9zY2FuX3NpemUgPSAwOworU0VUIG1heF9wYXJhbGxlbF93b3JrZXJz X3Blcl9nYXRoZXIgPSAyOworU0VUIHBhcmFsbGVsX2xlYWRlcl9wYXJ0aWNpcGF0aW9uID0gb2Zm OworU0VUIGRlYnVnX3BhcmFsbGVsX3F1ZXJ5ID0gb247IC0tIEVuc3VyZSB3ZSBnZXQgQ09OVEVY VCBsaW5lIGNvbnNpc3RlbnRseQorCitTRUxFQ1QgcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2VfcmVz ZXQoKTsKK1NFTEVDVCBiOjppbnQyIEZST00gcGFyX2Fib3J0X3RhYiBXSEVSRSBhID4gMTAwMDsK KworUkVTRVQgZGVidWdfcGFyYWxsZWxfcXVlcnk7CisKKy0tIFdvcmtlcnMgc2Nhbm5lZCB0aGUg dGFibGUgYnV0IGFib3J0ZWQgYmVmb3JlIHJlcG9ydGluZyBzdGF0cyBiYWNrLgorLS0gVGhlIGxl YWRlcidzIGRlbHRhIHNob3VsZCBiZSBtdWNoIGxlc3MgdGhhbiBhIHNlcmlhbCBzY2FuLCBkb2N1 bWVudGluZworLS0gdGhhdCB3b3JrZXIgYnVmZmVyIGFjdGl2aXR5IGlzIGxvc3Qgb24gYWJvcnQu CitTRUxFQ1Qgc2hhcmVkX2Jsa3NfaGl0IDwgcy5zZXJpYWxfZGVsdGEgLyAyCisgICAgICAgQVMg d29ya2VyX2Fib3J0X2J1ZmZlcnNfbm90X3Byb3BhZ2F0ZWQKK0ZST00gcGdfc2Vzc2lvbl9idWZm ZXJfdXNhZ2UoKSwgcGFyX2Fib3J0X3NlcmlhbF9yZXN1bHQgczsKKworUkVTRVQgcGFyYWxsZWxf c2V0dXBfY29zdDsKK1JFU0VUIHBhcmFsbGVsX3R1cGxlX2Nvc3Q7CitSRVNFVCBtaW5fcGFyYWxs ZWxfdGFibGVfc2Nhbl9zaXplOworUkVTRVQgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhl cjsKK1JFU0VUIHBhcmFsbGVsX2xlYWRlcl9wYXJ0aWNpcGF0aW9uOworCitEUk9QIFRBQkxFIHBh cl9hYm9ydF90YWIsIHBhcl9hYm9ydF9zZXJpYWxfcmVzdWx0OworCistLSBDbGVhbnVwCitEUk9Q IEVYVEVOU0lPTiBwZ19zZXNzaW9uX2J1ZmZlcl91c2FnZTsKLS0gCjIuNDcuMQoK --000000000000c2e7d4064d33fd67 Content-Type: application/octet-stream; name="v9-0008-Index-scans-Show-table-buffer-accesses-separately.patch" Content-Disposition: attachment; filename="v9-0008-Index-scans-Show-table-buffer-accesses-separately.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmucb6607 RnJvbSA2MWQ0MDE0YmM0MzY2MzE0YjQxNjE1ZTYwZTNiOGM1YWI4NTViNDRmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpEYXRlOiBT YXQsIDcgTWFyIDIwMjYgMTE6NDY6MTkgLTA4MDAKU3ViamVjdDogW1BBVENIIHY5IDgvOV0gSW5k ZXggc2NhbnM6IFNob3cgdGFibGUgYnVmZmVyIGFjY2Vzc2VzIHNlcGFyYXRlbHkgaW4KIEVYUExB SU4gQU5BTFlaRQoKVGhpcyBzZXRzIHVwIGEgc2VwYXJhdGUgaW5zdHJ1bWVudGF0aW9uIHN0YWNr IHRoYXQgaXMgdXNlZCB3aGlsc3QgYW4KSW5kZXggU2NhbiBvciBJbmRleCBPbmx5IFNjYW4gZG9l cyBzY2FubmluZyBvbiB0aGUgdGFibGUsIGZvciBleGFtcGxlIGR1ZQp0byBhZGRpdGlvbmFsIGRh dGEgYmVpbmcgbmVlZGVkLgoKRVhQTEFJTiBBTkFMWVpFIHdpbGwgbm93IHNob3cgIlRhYmxlIEJ1 ZmZlcnMiIHRoYXQgcmVwcmVzZW50IHN1Y2ggYWN0aXZpdHkuClRoZSBhY3Rpdml0eSBpcyBhbHNv IGluY2x1ZGVkIGluIHJlZ3VsYXIgIkJ1ZmZlcnMiIHRvZ2V0aGVyIHdpdGggaW5kZXgKYWN0aXZp dHkgYW5kIHRoYXQgb2YgYW55IGNoaWxkIG5vZGVzLgoKQXV0aG9yOiBMdWthcyBGaXR0bCA8bHVr YXNAZml0dGwuY29tPgpTdWdnZXN0ZWQtYnk6IEFuZHJlcyBGcmV1bmQgPGFuZHJlc0BhbmFyYXpl bC5kZT4KUmV2aWV3ZWQtYnk6IFpzb2x0IFBhcnJhZ2kgPHpzb2x0LnBhcnJhZ2lAcGVyY29uYS5j b20+ClJldmlld2VkLWJ5OiBUb21hcyBWb25kcmEgPHRvbWFzQHZvbmRyYS5tZT4KRGlzY3Vzc2lv bjogaHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvbWVzc2FnZS1pZC9mbGF0L0NBUDUzUGt4cm1w RUN6VkZwZWVFRUhER2U2dTYyNXMlMkJZa21WdjUtZ3czTF9ORFNmYmlBJTQwbWFpbC5nbWFpbC5j b20jY2I1ODNhMDhlOGUwOTZhYTFmMDkzYmIxNzg5MDYxNzMKLS0tCiBkb2Mvc3JjL3NnbWwvcGVy Zm9ybS5zZ21sICAgICAgICAgICAgICAgIHwgIDEzICsrLQogZG9jL3NyYy9zZ21sL3JlZi9leHBs YWluLnNnbWwgICAgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWlu LmMgICAgICAgICAgIHwgIDQ3ICsrKysrKysrLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQ cm9jbm9kZS5jICAgICAgfCAgNTcgKysrKysrKysrKysrCiBzcmMvYmFja2VuZC9leGVjdXRvci9u b2RlSW5kZXhvbmx5c2Nhbi5jIHwgIDI1ICsrKysrLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUluZGV4c2Nhbi5jICAgICB8IDEwNyArKysrKysrKysrKysrKysrKystLS0tLQogc3JjL2luY2x1 ZGUvZXhlY3V0b3IvaW5zdHJ1bWVudF9ub2RlLmggICB8ICAgNSArKwogc3JjL2luY2x1ZGUvbm9k ZXMvZXhlY25vZGVzLmggICAgICAgICAgICB8ICAxNSArKysrCiA4IGZpbGVzIGNoYW5nZWQsIDIz NSBpbnNlcnRpb25zKCspLCAzNSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3Nn bWwvcGVyZm9ybS5zZ21sIGIvZG9jL3NyYy9zZ21sL3BlcmZvcm0uc2dtbAppbmRleCA1ZjZmMWRi MDQ2Ny4uOTIxOTYyNWZhZjYgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9wZXJmb3JtLnNnbWwK KysrIGIvZG9jL3NyYy9zZ21sL3BlcmZvcm0uc2dtbApAQCAtNzM0LDYgKzczNCw3IEBAIFdIRVJF IHQxLnVuaXF1ZTEgJmx0OyAxMCBBTkQgdDEudW5pcXVlMiA9IHQyLnVuaXF1ZTI7CiAgICAtJmd0 OyAgSW5kZXggU2NhbiB1c2luZyB0ZW5rMl91bmlxdWUyIG9uIHRlbmsyIHQyICAoY29zdD0wLjI5 Li43LjkwIHJvd3M9MSB3aWR0aD0yNDQpIChhY3R1YWwgdGltZT0wLjAwMy4uMC4wMDMgcm93cz0x LjAwIGxvb3BzPTEwKQogICAgICAgICAgSW5kZXggQ29uZDogKHVuaXF1ZTIgPSB0MS51bmlxdWUy KQogICAgICAgICAgSW5kZXggU2VhcmNoZXM6IDEwCisgICAgICAgICBUYWJsZSBCdWZmZXJzOiBz aGFyZWQgaGl0PTEwCiAgICAgICAgICBCdWZmZXJzOiBzaGFyZWQgaGl0PTI0IHJlYWQ9NgogIFBs YW5uaW5nOgogICAgQnVmZmVyczogc2hhcmVkIGhpdD0xNSBkaXJ0aWVkPTkKQEAgLTk0OSw3ICs5 NTAsOCBAQCBFWFBMQUlOIEFOQUxZWkUgU0VMRUNUICogRlJPTSBwb2x5Z29uX3RibCBXSEVSRSBm MSBAJmd0OyBwb2x5Z29uICcoMC41LDIuMCknOwogICAgSW5kZXggQ29uZDogKGYxIEAmZ3Q7ICco KDAuNSwyKSknOjpwb2x5Z29uKQogICAgUm93cyBSZW1vdmVkIGJ5IEluZGV4IFJlY2hlY2s6IDEK ICAgIEluZGV4IFNlYXJjaGVzOiAxCi0gICBCdWZmZXJzOiBzaGFyZWQgaGl0PTEKKyAgIFRhYmxl IEJ1ZmZlcnM6IHNoYXJlZCBoaXQ9MQorICAgQnVmZmVyczogc2hhcmVkIGhpdD0yCiAgUGxhbm5p bmcgVGltZTogMC4wMzkgbXMKICBFeGVjdXRpb24gVGltZTogMC4wOTggbXMKIDwvc2NyZWVuPgpA QCAtOTU4LDcgKzk2MCw5IEBAIEVYUExBSU4gQU5BTFlaRSBTRUxFQ1QgKiBGUk9NIHBvbHlnb25f dGJsIFdIRVJFIGYxIEAmZ3Q7IHBvbHlnb24gJygwLjUsMi4wKSc7CiAgICAgdGhlbiByZWplY3Rl ZCBieSBhIHJlY2hlY2sgb2YgdGhlIGluZGV4IGNvbmRpdGlvbi4gIFRoaXMgaGFwcGVucyBiZWNh dXNlIGEKICAgICBHaVNUIGluZGV4IGlzIDxxdW90ZT5sb3NzeTwvcXVvdGU+IGZvciBwb2x5Z29u IGNvbnRhaW5tZW50IHRlc3RzOiBpdCBhY3R1YWxseQogICAgIHJldHVybnMgdGhlIHJvd3Mgd2l0 aCBwb2x5Z29ucyB0aGF0IG92ZXJsYXAgdGhlIHRhcmdldCwgYW5kIHRoZW4gd2UgaGF2ZQotICAg IHRvIGRvIHRoZSBleGFjdCBjb250YWlubWVudCB0ZXN0IG9uIHRob3NlIHJvd3MuCisgICAgdG8g ZG8gdGhlIGV4YWN0IGNvbnRhaW5tZW50IHRlc3Qgb24gdGhvc2Ugcm93cy4gVGhlIDxsaXRlcmFs PlRhYmxlIEJ1ZmZlcnM8L2xpdGVyYWw+CisgICAgY291bnRzIGluZGljYXRlIGhvdyBtYW55IG9w ZXJhdGlvbnMgd2VyZSBwZXJmb3JtZWQgb24gdGhlIHRhYmxlIGluc3RlYWQgb2YKKyAgICB0aGUg aW5kZXguIFRoaXMgbnVtYmVyIGlzIGluY2x1ZGVkIGluIHRoZSA8bGl0ZXJhbD5CdWZmZXJzPC9s aXRlcmFsPiBjb3VudHMuCiAgICA8L3BhcmE+CiAKICAgIDxwYXJhPgpAQCAtMTE0NywxMyArMTE1 MSwxNCBAQCBFWFBMQUlOIEFOQUxZWkUgU0VMRUNUICogRlJPTSB0ZW5rMSBXSEVSRSB1bmlxdWUx ICZsdDsgMTAwIEFORCB1bmlxdWUyICZndDsgOTAwMAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4KIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0m endzcDstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KICBMaW1pdCAgKGNvc3Q9MC4yOS4uMTQuMzMgcm93cz0yIHdpZHRoPTI0NCkgKGFj dHVhbCB0aW1lPTAuMDUxLi4wLjA3MSByb3dzPTIuMDAgbG9vcHM9MSkKLSAgIEJ1ZmZlcnM6IHNo YXJlZCBoaXQ9MTYKKyAgIEJ1ZmZlcnM6IHNoYXJlZCBoaXQ9MTQKICAgIC0mZ3Q7ICBJbmRleCBT Y2FuIHVzaW5nIHRlbmsxX3VuaXF1ZTIgb24gdGVuazEgIChjb3N0PTAuMjkuLjcwLjUwIHJvd3M9 MTAgd2lkdGg9MjQ0KSAoYWN0dWFsIHRpbWU9MC4wNTEuLjAuMDcwIHJvd3M9Mi4wMCBsb29wcz0x KQogICAgICAgICAgSW5kZXggQ29uZDogKHVuaXF1ZTIgJmd0OyA5MDAwKQogICAgICAgICAgRmls dGVyOiAodW5pcXVlMSAmbHQ7IDEwMCkKICAgICAgICAgIFJvd3MgUmVtb3ZlZCBieSBGaWx0ZXI6 IDI4NwogICAgICAgICAgSW5kZXggU2VhcmNoZXM6IDEKLSAgICAgICAgIEJ1ZmZlcnM6IHNoYXJl ZCBoaXQ9MTYKKyAgICAgICAgIFRhYmxlIEJ1ZmZlcnM6IHNoYXJlZCBoaXQ9MTEKKyAgICAgICAg IEJ1ZmZlcnM6IHNoYXJlZCBoaXQ9MTQKICBQbGFubmluZyBUaW1lOiAwLjA3NyBtcwogIEV4ZWN1 dGlvbiBUaW1lOiAwLjA4NiBtcwogPC9zY3JlZW4+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwv cmVmL2V4cGxhaW4uc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvZXhwbGFpbi5zZ21sCmluZGV4IDdk ZWU3N2ZkMzY2Li45MTJjOTZmMmZmNSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9leHBs YWluLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9leHBsYWluLnNnbWwKQEAgLTUwNiw2ICs1 MDYsNyBAQCBFWFBMQUlOIEFOQUxZWkUgRVhFQ1VURSBxdWVyeSgxMDAsIDIwMCk7CiAgICAtJmd0 OyAgSW5kZXggU2NhbiB1c2luZyB0ZXN0X3BrZXkgb24gdGVzdCAgKGNvc3Q9MC4yOS4uMTAuMjcg cm93cz05OSB3aWR0aD04KSAoYWN0dWFsIHRpbWU9MC4wMDkuLjAuMDI1IHJvd3M9OTkuMDAgbG9v cHM9MSkKICAgICAgICAgIEluZGV4IENvbmQ6ICgoaWQgJmd0OyAxMDApIEFORCAoaWQgJmx0OyAy MDApKQogICAgICAgICAgSW5kZXggU2VhcmNoZXM6IDEKKyAgICAgICAgIFRhYmxlIEJ1ZmZlcnM6 IHNoYXJlZCBoaXQ9MQogICAgICAgICAgQnVmZmVyczogc2hhcmVkIGhpdD00CiAgUGxhbm5pbmcg VGltZTogMC4yNDQgbXMKICBFeGVjdXRpb24gVGltZTogMC4wNzMgbXMKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxh aW4uYwppbmRleCBmYTI1MGIwMTk2YS4uOGRkNTYzOTRjZjIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL2V4cGxhaW4uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWlu LmMKQEAgLTE0NCw3ICsxNDQsNyBAQCBzdGF0aWMgdm9pZCBzaG93X2luc3RydW1lbnRhdGlvbl9j b3VudChjb25zdCBjaGFyICpxbGFiZWwsIGludCB3aGljaCwKIHN0YXRpYyB2b2lkIHNob3dfZm9y ZWlnbnNjYW5faW5mbyhGb3JlaWduU2NhblN0YXRlICpmc3N0YXRlLCBFeHBsYWluU3RhdGUgKmVz KTsKIHN0YXRpYyBjb25zdCBjaGFyICpleHBsYWluX2dldF9pbmRleF9uYW1lKE9pZCBpbmRleElk KTsKIHN0YXRpYyBib29sIHBlZWtfYnVmZmVyX3VzYWdlKEV4cGxhaW5TdGF0ZSAqZXMsIGNvbnN0 IEJ1ZmZlclVzYWdlICp1c2FnZSk7Ci1zdGF0aWMgdm9pZCBzaG93X2J1ZmZlcl91c2FnZShFeHBs YWluU3RhdGUgKmVzLCBjb25zdCBCdWZmZXJVc2FnZSAqdXNhZ2UpOworc3RhdGljIHZvaWQgc2hv d19idWZmZXJfdXNhZ2UoRXhwbGFpblN0YXRlICplcywgY29uc3QgQnVmZmVyVXNhZ2UgKnVzYWdl LCBjb25zdCBjaGFyICp0aXRsZSk7CiBzdGF0aWMgdm9pZCBzaG93X3dhbF91c2FnZShFeHBsYWlu U3RhdGUgKmVzLCBjb25zdCBXYWxVc2FnZSAqdXNhZ2UpOwogc3RhdGljIHZvaWQgc2hvd19tZW1v cnlfY291bnRlcnMoRXhwbGFpblN0YXRlICplcywKIAkJCQkJCQkJIGNvbnN0IE1lbW9yeUNvbnRl eHRDb3VudGVycyAqbWVtX2NvdW50ZXJzKTsKQEAgLTYwNSw3ICs2MDUsNyBAQCBFeHBsYWluT25l UGxhbihQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5T dGF0ZSAqZXMsCiAJCX0KIAogCQlpZiAoYnVmdXNhZ2UpCi0JCQlzaG93X2J1ZmZlcl91c2FnZShl cywgYnVmdXNhZ2UpOworCQkJc2hvd19idWZmZXJfdXNhZ2UoZXMsIGJ1ZnVzYWdlLCBOVUxMKTsK IAogCQlpZiAobWVtX2NvdW50ZXJzKQogCQkJc2hvd19tZW1vcnlfY291bnRlcnMoZXMsIG1lbV9j b3VudGVycyk7CkBAIC0xMDIyLDcgKzEwMjIsNyBAQCBFeHBsYWluUHJpbnRTZXJpYWxpemUoRXhw bGFpblN0YXRlICplcywgU2VyaWFsaXplTWV0cmljcyAqbWV0cmljcykKIAkJaWYgKGVzLT5idWZm ZXJzICYmIHBlZWtfYnVmZmVyX3VzYWdlKGVzLCAmbWV0cmljcy0+YnVmZmVyVXNhZ2UpKQogCQl7 CiAJCQllcy0+aW5kZW50Kys7Ci0JCQlzaG93X2J1ZmZlcl91c2FnZShlcywgJm1ldHJpY3MtPmJ1 ZmZlclVzYWdlKTsKKwkJCXNob3dfYnVmZmVyX3VzYWdlKGVzLCAmbWV0cmljcy0+YnVmZmVyVXNh Z2UsIE5VTEwpOwogCQkJZXMtPmluZGVudC0tOwogCQl9CiAJfQpAQCAtMTAzNiw3ICsxMDM2LDcg QEAgRXhwbGFpblByaW50U2VyaWFsaXplKEV4cGxhaW5TdGF0ZSAqZXMsIFNlcmlhbGl6ZU1ldHJp Y3MgKm1ldHJpY3MpCiAJCQkJCQkJCUJZVEVTX1RPX0tJTE9CWVRFUyhtZXRyaWNzLT5ieXRlc1Nl bnQpLCBlcyk7CiAJCUV4cGxhaW5Qcm9wZXJ0eVRleHQoIkZvcm1hdCIsIGZvcm1hdCwgZXMpOwog CQlpZiAoZXMtPmJ1ZmZlcnMpCi0JCQlzaG93X2J1ZmZlcl91c2FnZShlcywgJm1ldHJpY3MtPmJ1 ZmZlclVzYWdlKTsKKwkJCXNob3dfYnVmZmVyX3VzYWdlKGVzLCAmbWV0cmljcy0+YnVmZmVyVXNh Z2UsIE5VTEwpOwogCX0KIAogCUV4cGxhaW5DbG9zZUdyb3VwKCJTZXJpYWxpemF0aW9uIiwgIlNl cmlhbGl6YXRpb24iLCB0cnVlLCBlcyk7CkBAIC0xOTY0LDYgKzE5NjQsOSBAQCBFeHBsYWluTm9k ZShQbGFuU3RhdGUgKnBsYW5zdGF0ZSwgTGlzdCAqYW5jZXN0b3JzLAogCQkJCXNob3dfaW5zdHJ1 bWVudGF0aW9uX2NvdW50KCJSb3dzIFJlbW92ZWQgYnkgRmlsdGVyIiwgMSwKIAkJCQkJCQkJCQkg ICBwbGFuc3RhdGUsIGVzKTsKIAkJCXNob3dfaW5kZXhzZWFyY2hlc19pbmZvKHBsYW5zdGF0ZSwg ZXMpOworCisJCQlpZiAoZXMtPmJ1ZmZlcnMgJiYgcGxhbnN0YXRlLT5pbnN0cnVtZW50KQorCQkJ CXNob3dfYnVmZmVyX3VzYWdlKGVzLCAmKChJbmRleFNjYW5TdGF0ZSAqKSBwbGFuc3RhdGUpLT5p c3NfSW5zdHJ1bWVudFRhYmxlLT5pbnN0ci5idWZ1c2FnZSwgIlRhYmxlIik7CiAJCQlicmVhazsK IAkJY2FzZSBUX0luZGV4T25seVNjYW46CiAJCQlzaG93X3NjYW5fcXVhbCgoKEluZGV4T25seVNj YW4gKikgcGxhbiktPmluZGV4cXVhbCwKQEAgLTE5ODEsNiArMTk4NCw5IEBAIEV4cGxhaW5Ob2Rl KFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBMaXN0ICphbmNlc3RvcnMsCiAJCQkJRXhwbGFpblByb3Bl cnR5RmxvYXQoIkhlYXAgRmV0Y2hlcyIsIE5VTEwsCiAJCQkJCQkJCQkgcGxhbnN0YXRlLT5pbnN0 cnVtZW50LT5udHVwbGVzMiwgMCwgZXMpOwogCQkJc2hvd19pbmRleHNlYXJjaGVzX2luZm8ocGxh bnN0YXRlLCBlcyk7CisKKwkJCWlmIChlcy0+YnVmZmVycyAmJiBwbGFuc3RhdGUtPmluc3RydW1l bnQpCisJCQkJc2hvd19idWZmZXJfdXNhZ2UoZXMsICYoKEluZGV4T25seVNjYW5TdGF0ZSAqKSBw bGFuc3RhdGUpLT5pb3NzX0luc3RydW1lbnRUYWJsZS0+aW5zdHIuYnVmdXNhZ2UsICJUYWJsZSIp OwogCQkJYnJlYWs7CiAJCWNhc2UgVF9CaXRtYXBJbmRleFNjYW46CiAJCQlzaG93X3NjYW5fcXVh bCgoKEJpdG1hcEluZGV4U2NhbiAqKSBwbGFuKS0+aW5kZXhxdWFsb3JpZywKQEAgLTIyODIsNyAr MjI4OCw3IEBAIEV4cGxhaW5Ob2RlKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBMaXN0ICphbmNlc3Rv cnMsCiAKIAkvKiBTaG93IGJ1ZmZlci9XQUwgdXNhZ2UgKi8KIAlpZiAoZXMtPmJ1ZmZlcnMgJiYg cGxhbnN0YXRlLT5pbnN0cnVtZW50KQotCQlzaG93X2J1ZmZlcl91c2FnZShlcywgJnBsYW5zdGF0 ZS0+aW5zdHJ1bWVudC0+aW5zdHIuYnVmdXNhZ2UpOworCQlzaG93X2J1ZmZlcl91c2FnZShlcywg JnBsYW5zdGF0ZS0+aW5zdHJ1bWVudC0+aW5zdHIuYnVmdXNhZ2UsIE5VTEwpOwogCWlmIChlcy0+ d2FsICYmIHBsYW5zdGF0ZS0+aW5zdHJ1bWVudCkKIAkJc2hvd193YWxfdXNhZ2UoZXMsICZwbGFu c3RhdGUtPmluc3RydW1lbnQtPmluc3RyLndhbHVzYWdlKTsKIApAQCAtMjMwMSw3ICsyMzA3LDcg QEAgRXhwbGFpbk5vZGUoUGxhblN0YXRlICpwbGFuc3RhdGUsIExpc3QgKmFuY2VzdG9ycywKIAog CQkJRXhwbGFpbk9wZW5Xb3JrZXIobiwgZXMpOwogCQkJaWYgKGVzLT5idWZmZXJzKQotCQkJCXNo b3dfYnVmZmVyX3VzYWdlKGVzLCAmaW5zdHJ1bWVudC0+aW5zdHIuYnVmdXNhZ2UpOworCQkJCXNo b3dfYnVmZmVyX3VzYWdlKGVzLCAmaW5zdHJ1bWVudC0+aW5zdHIuYnVmdXNhZ2UsIE5VTEwpOwog CQkJaWYgKGVzLT53YWwpCiAJCQkJc2hvd193YWxfdXNhZ2UoZXMsICZpbnN0cnVtZW50LT5pbnN0 ci53YWx1c2FnZSk7CiAJCQlFeHBsYWluQ2xvc2VXb3JrZXIobiwgZXMpOwpAQCAtNDEwMSw3ICs0 MTA3LDcgQEAgcGVla19idWZmZXJfdXNhZ2UoRXhwbGFpblN0YXRlICplcywgY29uc3QgQnVmZmVy VXNhZ2UgKnVzYWdlKQogICogU2hvdyBidWZmZXIgdXNhZ2UgZGV0YWlscy4gIFRoaXMgYmV0dGVy IGJlIHN5bmMgd2l0aCBwZWVrX2J1ZmZlcl91c2FnZS4KICAqLwogc3RhdGljIHZvaWQKLXNob3df YnVmZmVyX3VzYWdlKEV4cGxhaW5TdGF0ZSAqZXMsIGNvbnN0IEJ1ZmZlclVzYWdlICp1c2FnZSkK K3Nob3dfYnVmZmVyX3VzYWdlKEV4cGxhaW5TdGF0ZSAqZXMsIGNvbnN0IEJ1ZmZlclVzYWdlICp1 c2FnZSwgY29uc3QgY2hhciAqdGl0bGUpCiB7CiAJaWYgKGVzLT5mb3JtYXQgPT0gRVhQTEFJTl9G T1JNQVRfVEVYVCkKIAl7CkBAIC00MTI2LDYgKzQxMzIsOCBAQCBzaG93X2J1ZmZlcl91c2FnZShF eHBsYWluU3RhdGUgKmVzLCBjb25zdCBCdWZmZXJVc2FnZSAqdXNhZ2UpCiAJCWlmIChoYXNfc2hh cmVkIHx8IGhhc19sb2NhbCB8fCBoYXNfdGVtcCkKIAkJewogCQkJRXhwbGFpbkluZGVudFRleHQo ZXMpOworCQkJaWYgKHRpdGxlKQorCQkJCWFwcGVuZFN0cmluZ0luZm8oZXMtPnN0ciwgIiVzICIs IHRpdGxlKTsKIAkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoZXMtPnN0ciwgIkJ1ZmZlcnM6Iik7 CiAKIAkJCWlmIChoYXNfc2hhcmVkKQpAQCAtNDE4MSw2ICs0MTg5LDggQEAgc2hvd19idWZmZXJf dXNhZ2UoRXhwbGFpblN0YXRlICplcywgY29uc3QgQnVmZmVyVXNhZ2UgKnVzYWdlKQogCQlpZiAo aGFzX3NoYXJlZF90aW1pbmcgfHwgaGFzX2xvY2FsX3RpbWluZyB8fCBoYXNfdGVtcF90aW1pbmcp CiAJCXsKIAkJCUV4cGxhaW5JbmRlbnRUZXh0KGVzKTsKKwkJCWlmICh0aXRsZSkKKwkJCQlhcHBl bmRTdHJpbmdJbmZvKGVzLT5zdHIsICIlcyAiLCB0aXRsZSk7CiAJCQlhcHBlbmRTdHJpbmdJbmZv U3RyaW5nKGVzLT5zdHIsICJJL08gVGltaW5nczoiKTsKIAogCQkJaWYgKGhhc19zaGFyZWRfdGlt aW5nKQpAQCAtNDIyMiw2ICs0MjMyLDE0IEBAIHNob3dfYnVmZmVyX3VzYWdlKEV4cGxhaW5TdGF0 ZSAqZXMsIGNvbnN0IEJ1ZmZlclVzYWdlICp1c2FnZSkKIAl9CiAJZWxzZQogCXsKKwkJY2hhcgkg ICAqYnVmZmVyc190aXRsZSA9IE5VTEw7CisKKwkJaWYgKHRpdGxlKQorCQl7CisJCQlidWZmZXJz X3RpdGxlID0gcHNwcmludGYoIiVzIEJ1ZmZlcnMiLCB0aXRsZSk7CisJCQlFeHBsYWluT3Blbkdy b3VwKGJ1ZmZlcnNfdGl0bGUsIGJ1ZmZlcnNfdGl0bGUsIHRydWUsIGVzKTsKKwkJfQorCiAJCUV4 cGxhaW5Qcm9wZXJ0eUludGVnZXIoIlNoYXJlZCBIaXQgQmxvY2tzIiwgTlVMTCwKIAkJCQkJCQkg ICB1c2FnZS0+c2hhcmVkX2Jsa3NfaGl0LCBlcyk7CiAJCUV4cGxhaW5Qcm9wZXJ0eUludGVnZXIo IlNoYXJlZCBSZWFkIEJsb2NrcyIsIE5VTEwsCkBAIC00MjQyLDggKzQyNjAsMjAgQEAgc2hvd19i dWZmZXJfdXNhZ2UoRXhwbGFpblN0YXRlICplcywgY29uc3QgQnVmZmVyVXNhZ2UgKnVzYWdlKQog CQkJCQkJCSAgIHVzYWdlLT50ZW1wX2Jsa3NfcmVhZCwgZXMpOwogCQlFeHBsYWluUHJvcGVydHlJ bnRlZ2VyKCJUZW1wIFdyaXR0ZW4gQmxvY2tzIiwgTlVMTCwKIAkJCQkJCQkgICB1c2FnZS0+dGVt cF9ibGtzX3dyaXR0ZW4sIGVzKTsKKworCQlpZiAoYnVmZmVyc190aXRsZSkKKwkJCUV4cGxhaW5D bG9zZUdyb3VwKGJ1ZmZlcnNfdGl0bGUsIGJ1ZmZlcnNfdGl0bGUsIHRydWUsIGVzKTsKKwogCQlp ZiAodHJhY2tfaW9fdGltaW5nKQogCQl7CisJCQljaGFyCSAgICp0aW1pbmdzX3RpdGxlID0gTlVM TDsKKworCQkJaWYgKHRpdGxlKQorCQkJeworCQkJCXRpbWluZ3NfdGl0bGUgPSBwc3ByaW50Zigi JXMgSS9PIFRpbWluZ3MiLCB0aXRsZSk7CisJCQkJRXhwbGFpbk9wZW5Hcm91cCh0aW1pbmdzX3Rp dGxlLCB0aW1pbmdzX3RpdGxlLCB0cnVlLCBlcyk7CisJCQl9CisKIAkJCUV4cGxhaW5Qcm9wZXJ0 eUZsb2F0KCJTaGFyZWQgSS9PIFJlYWQgVGltZSIsICJtcyIsCiAJCQkJCQkJCSBJTlNUUl9USU1F X0dFVF9NSUxMSVNFQyh1c2FnZS0+c2hhcmVkX2Jsa19yZWFkX3RpbWUpLAogCQkJCQkJCQkgMywg ZXMpOwpAQCAtNDI2Miw2ICs0MjkyLDkgQEAgc2hvd19idWZmZXJfdXNhZ2UoRXhwbGFpblN0YXRl ICplcywgY29uc3QgQnVmZmVyVXNhZ2UgKnVzYWdlKQogCQkJRXhwbGFpblByb3BlcnR5RmxvYXQo IlRlbXAgSS9PIFdyaXRlIFRpbWUiLCAibXMiLAogCQkJCQkJCQkgSU5TVFJfVElNRV9HRVRfTUlM TElTRUModXNhZ2UtPnRlbXBfYmxrX3dyaXRlX3RpbWUpLAogCQkJCQkJCQkgMywgZXMpOworCisJ CQlpZiAodGltaW5nc190aXRsZSkKKwkJCQlFeHBsYWluQ2xvc2VHcm91cCh0aW1pbmdzX3RpdGxl LCB0aW1pbmdzX3RpdGxlLCB0cnVlLCBlcyk7CiAJCX0KIAl9CiB9CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9leGVjdXRvci9leGVjUHJvY25vZGUuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNQcm9jbm9kZS5jCmluZGV4IDgyOGExZmUzYjFkLi5lZWViZTJjZTY0ZiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1Byb2Nub2RlLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3IvZXhlY1Byb2Nub2RlLmMKQEAgLTQxNSw5ICs0MTUsMzIgQEAgRXhlY0luaXROb2RlKFBs YW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCiAJLyogU2V0IHVwIGluc3Ry dW1lbnRhdGlvbiBmb3IgdGhpcyBub2RlIGlmIHJlcXVlc3RlZCAqLwogCWlmIChlc3RhdGUtPmVz X2luc3RydW1lbnQpCisJewogCQlyZXN1bHQtPmluc3RydW1lbnQgPSBJbnN0ckFsbG9jTm9kZShl c3RhdGUtPmVzX2luc3RydW1lbnQsCiAJCQkJCQkJCQkJCXJlc3VsdC0+YXN5bmNfY2FwYWJsZSk7 CiAKKwkJLyoKKwkJICogSW5kZXhTY2FuIC8gSW5kZXhPbmx5U2NhbiB0cmFjayB0YWJsZSBhbmQg aW5kZXggYWNjZXNzIHNlcGFyYXRlbHkuCisJCSAqCisJCSAqIFdlIGludGVudGlvbmFsbHkgZG9u J3QgY29sbGVjdCB0aW1pbmcgZm9yIHRoZW0gKGV2ZW4gaWYgZW5hYmxlZCksCisJCSAqIHNpbmNl IHdlIGRvbid0IG5lZWQgaXQsIGFuZCB0aGUgZXhlY3V0b3Igbm9kZXMgY2FsbCBJbnN0clB1c2hT dGFjaworCQkgKiAvIEluc3RyUG9wU3RhY2sgKGluc3RlYWQgb2YgdGhlIGZ1bGwgSW5zdHJOb2Rl KikgdG8gcmVkdWNlCisJCSAqIG92ZXJoZWFkLgorCQkgKi8KKwkJaWYgKElzQShyZXN1bHQsIElu ZGV4U2NhblN0YXRlKSAmJiAoZXN0YXRlLT5lc19pbnN0cnVtZW50ICYgSU5TVFJVTUVOVF9CVUZG RVJTKSAhPSAwKQorCQl7CisJCQlJbmRleFNjYW5TdGF0ZSAqaXNzID0gY2FzdE5vZGUoSW5kZXhT Y2FuU3RhdGUsIHJlc3VsdCk7CisKKwkJCWlzcy0+aXNzX0luc3RydW1lbnRUYWJsZSA9IEluc3Ry QWxsb2NOb2RlKElOU1RSVU1FTlRfQlVGRkVSUywgZmFsc2UpOworCQl9CisJCWVsc2UgaWYgKElz QShyZXN1bHQsIEluZGV4T25seVNjYW5TdGF0ZSkgJiYgKGVzdGF0ZS0+ZXNfaW5zdHJ1bWVudCAm IElOU1RSVU1FTlRfQlVGRkVSUykgIT0gMCkKKwkJeworCQkJSW5kZXhPbmx5U2NhblN0YXRlICpp b3NzID0gY2FzdE5vZGUoSW5kZXhPbmx5U2NhblN0YXRlLCByZXN1bHQpOworCisJCQlpb3NzLT5p b3NzX0luc3RydW1lbnRUYWJsZSA9IEluc3RyQWxsb2NOb2RlKElOU1RSVU1FTlRfQlVGRkVSUywg ZmFsc2UpOworCQl9CisJfQorCiAJcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtODM3LDggKzg2MCwy NiBAQCBFeGVjUmVtZW1iZXJOb2RlSW5zdHJ1bWVudGF0aW9uX3dhbGtlcihQbGFuU3RhdGUgKm5v ZGUsIHZvaWQgKmNvbnRleHQpCiAJCXJldHVybiBmYWxzZTsKIAogCWlmIChub2RlLT5pbnN0cnVt ZW50KQorCXsKIAkJSW5zdHJRdWVyeVJlbWVtYmVyTm9kZShwYXJlbnQsIG5vZGUtPmluc3RydW1l bnQpOwogCisJCS8qIEluZGV4U2Nhbi9JbmRleE9ubHlTY2FuIGhhdmUgYSBzZXBhcmF0ZSBlbnRy eSB0byB0cmFjayB0YWJsZSBhY2Nlc3MgKi8KKwkJaWYgKElzQShub2RlLCBJbmRleFNjYW5TdGF0 ZSkpCisJCXsKKwkJCUluZGV4U2NhblN0YXRlICppc3MgPSBjYXN0Tm9kZShJbmRleFNjYW5TdGF0 ZSwgbm9kZSk7CisKKwkJCWlmIChpc3MtPmlzc19JbnN0cnVtZW50VGFibGUpCisJCQkJSW5zdHJR dWVyeVJlbWVtYmVyTm9kZShwYXJlbnQsIGlzcy0+aXNzX0luc3RydW1lbnRUYWJsZSk7CisJCX0K KwkJZWxzZSBpZiAoSXNBKG5vZGUsIEluZGV4T25seVNjYW5TdGF0ZSkpCisJCXsKKwkJCUluZGV4 T25seVNjYW5TdGF0ZSAqaW9zcyA9IGNhc3ROb2RlKEluZGV4T25seVNjYW5TdGF0ZSwgbm9kZSk7 CisKKwkJCWlmIChpb3NzLT5pb3NzX0luc3RydW1lbnRUYWJsZSkKKwkJCQlJbnN0clF1ZXJ5UmVt ZW1iZXJOb2RlKHBhcmVudCwgaW9zcy0+aW9zc19JbnN0cnVtZW50VGFibGUpOworCQl9CisJfQor CiAJcmV0dXJuIHBsYW5zdGF0ZV90cmVlX3dhbGtlcihub2RlLCBFeGVjUmVtZW1iZXJOb2RlSW5z dHJ1bWVudGF0aW9uX3dhbGtlciwgY29udGV4dCk7CiB9CiAKQEAgLTg4MCw2ICs5MjEsMjIgQEAg RXhlY0ZpbmFsaXplTm9kZUluc3RydW1lbnRhdGlvbl93YWxrZXIoUGxhblN0YXRlICpub2RlLCB2 b2lkICpjb250ZXh0KQogCWlmICghbm9kZS0+aW5zdHJ1bWVudCkKIAkJcmV0dXJuIGZhbHNlOwog CisJLyogSW5kZXhTY2FuL0luZGV4T25seVNjYW4gaGF2ZSBhIHNlcGFyYXRlIGVudHJ5IHRvIHRy YWNrIHRhYmxlIGFjY2VzcyAqLworCWlmIChJc0Eobm9kZSwgSW5kZXhTY2FuU3RhdGUpKQorCXsK KwkJSW5kZXhTY2FuU3RhdGUgKmlzcyA9IGNhc3ROb2RlKEluZGV4U2NhblN0YXRlLCBub2RlKTsK KworCQlpZiAoaXNzLT5pc3NfSW5zdHJ1bWVudFRhYmxlKQorCQkJaXNzLT5pc3NfSW5zdHJ1bWVu dFRhYmxlID0gSW5zdHJGaW5hbGl6ZU5vZGUoaXNzLT5pc3NfSW5zdHJ1bWVudFRhYmxlLCAmbm9k ZS0+aW5zdHJ1bWVudC0+aW5zdHIpOworCX0KKwllbHNlIGlmIChJc0Eobm9kZSwgSW5kZXhPbmx5 U2NhblN0YXRlKSkKKwl7CisJCUluZGV4T25seVNjYW5TdGF0ZSAqaW9zcyA9IGNhc3ROb2RlKElu ZGV4T25seVNjYW5TdGF0ZSwgbm9kZSk7CisKKwkJaWYgKGlvc3MtPmlvc3NfSW5zdHJ1bWVudFRh YmxlKQorCQkJaW9zcy0+aW9zc19JbnN0cnVtZW50VGFibGUgPSBJbnN0ckZpbmFsaXplTm9kZShp b3NzLT5pb3NzX0luc3RydW1lbnRUYWJsZSwgJm5vZGUtPmluc3RydW1lbnQtPmluc3RyKTsKKwl9 CisKIAlub2RlLT5pbnN0cnVtZW50ID0gSW5zdHJGaW5hbGl6ZU5vZGUobm9kZS0+aW5zdHJ1bWVu dCwgcGFyZW50KTsKIAogCXJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVJbmRleG9ubHlzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5k ZXhvbmx5c2Nhbi5jCmluZGV4IGM4ZGIzNTdlNjlmLi4zZjk0NjcxYjU1YyAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4b25seXNjYW4uYworKysgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlSW5kZXhvbmx5c2Nhbi5jCkBAIC0xNjMsMTEgKzE2MywyMiBAQCBJbmRl eE9ubHlOZXh0KEluZGV4T25seVNjYW5TdGF0ZSAqbm9kZSkKIAkJCQkJCQlJdGVtUG9pbnRlckdl dEJsb2NrTnVtYmVyKHRpZCksCiAJCQkJCQkJJm5vZGUtPmlvc3NfVk1CdWZmZXIpKQogCQl7CisJ CQlib29sCQlmb3VuZDsKKwogCQkJLyoKIAkJCSAqIFJhdHMsIHdlIGhhdmUgdG8gdmlzaXQgdGhl IGhlYXAgdG8gY2hlY2sgdmlzaWJpbGl0eS4KIAkJCSAqLwogCQkJSW5zdHJDb3VudFR1cGxlczIo bm9kZSwgMSk7Ci0JCQlpZiAoIWluZGV4X2ZldGNoX2hlYXAoc2NhbmRlc2MsIG5vZGUtPmlvc3Nf VGFibGVTbG90KSkKKworCQkJaWYgKG5vZGUtPmlvc3NfSW5zdHJ1bWVudFRhYmxlKQorCQkJCUlu c3RyUHVzaFN0YWNrKCZub2RlLT5pb3NzX0luc3RydW1lbnRUYWJsZS0+aW5zdHIpOworCisJCQlm b3VuZCA9IGluZGV4X2ZldGNoX2hlYXAoc2NhbmRlc2MsIG5vZGUtPmlvc3NfVGFibGVTbG90KTsK KworCQkJaWYgKG5vZGUtPmlvc3NfSW5zdHJ1bWVudFRhYmxlKQorCQkJCUluc3RyUG9wU3RhY2so Jm5vZGUtPmlvc3NfSW5zdHJ1bWVudFRhYmxlLT5pbnN0cik7CisKKwkJCWlmICghZm91bmQpCiAJ CQkJY29udGludWU7CQkvKiBubyB2aXNpYmxlIHR1cGxlLCB0cnkgbmV4dCBpbmRleCBlbnRyeSAq LwogCiAJCQlFeGVjQ2xlYXJUdXBsZShub2RlLT5pb3NzX1RhYmxlU2xvdCk7CkBAIC00MzQsNiAr NDQ1LDEwIEBAIEV4ZWNFbmRJbmRleE9ubHlTY2FuKEluZGV4T25seVNjYW5TdGF0ZSAqbm9kZSkK IAkJICogd2hpY2ggd2lsbCBoYXZlIGEgbmV3IEluZGV4T25seVNjYW5TdGF0ZSBhbmQgemVyb2Vk IHN0YXRzLgogCQkgKi8KIAkJd2luc3RydW1lbnQtPm5zZWFyY2hlcyArPSBub2RlLT5pb3NzX0lu c3RydW1lbnQubnNlYXJjaGVzOworCQlpZiAobm9kZS0+aW9zc19JbnN0cnVtZW50VGFibGUpCisJ CXsKKwkJCUluc3RyQWNjdW1TdGFjaygmd2luc3RydW1lbnQtPndvcmtlcl90YWJsZV9pbnN0ciwg Jm5vZGUtPmlvc3NfSW5zdHJ1bWVudFRhYmxlLT5pbnN0cik7CisJCX0KIAl9CiAKIAkvKgpAQCAt ODg5LDQgKzkwNCwxMiBAQCBFeGVjSW5kZXhPbmx5U2NhblJldHJpZXZlSW5zdHJ1bWVudGF0aW9u KEluZGV4T25seVNjYW5TdGF0ZSAqbm9kZSkKIAkJU2hhcmVkSW5mby0+bnVtX3dvcmtlcnMgKiBz aXplb2YoSW5kZXhTY2FuSW5zdHJ1bWVudGF0aW9uKTsKIAlub2RlLT5pb3NzX1NoYXJlZEluZm8g PSBwYWxsb2Moc2l6ZSk7CiAJbWVtY3B5KG5vZGUtPmlvc3NfU2hhcmVkSW5mbywgU2hhcmVkSW5m bywgc2l6ZSk7CisKKwkvKiBBZ2dyZWdhdGUgd29ya2VycycgdGFibGUgYnVmZmVyL1dBTCB1c2Fn ZSBpbnRvIGxlYWRlcidzIGVudHJ5ICovCisJaWYgKG5vZGUtPmlvc3NfSW5zdHJ1bWVudFRhYmxl KQorCQlmb3IgKGludCBpID0gMDsgaSA8IG5vZGUtPmlvc3NfU2hhcmVkSW5mby0+bnVtX3dvcmtl cnM7IGkrKykKKwkJeworCQkJSW5zdHJBY2N1bVN0YWNrKCZub2RlLT5pb3NzX0luc3RydW1lbnRU YWJsZS0+aW5zdHIsCisJCQkJCQkJJm5vZGUtPmlvc3NfU2hhcmVkSW5mby0+d2luc3RydW1lbnRb aV0ud29ya2VyX3RhYmxlX2luc3RyKTsKKwkJfQogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUluZGV4c2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4 c2Nhbi5jCmluZGV4IGJkODNlNDcxMmIzLi4yODFiOTJjMjI5OSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4c2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVJbmRleHNjYW4uYwpAQCAtODUsNyArODUsOSBAQCBJbmRleE5leHQoSW5kZXhTY2FuU3Rh dGUgKm5vZGUpCiAJRXhwckNvbnRleHQgKmVjb250ZXh0OwogCVNjYW5EaXJlY3Rpb24gZGlyZWN0 aW9uOwogCUluZGV4U2NhbkRlc2Mgc2NhbmRlc2M7CisJSXRlbVBvaW50ZXIgdGlkOwogCVR1cGxl VGFibGVTbG90ICpzbG90OworCWJvb2wJCWZvdW5kOwogCiAJLyoKIAkgKiBleHRyYWN0IG5lY2Vz c2FyeSBpbmZvcm1hdGlvbiBmcm9tIGluZGV4IHNjYW4gbm9kZQpAQCAtMTMwLDggKzEzMiwyNCBA QCBJbmRleE5leHQoSW5kZXhTY2FuU3RhdGUgKm5vZGUpCiAJLyoKIAkgKiBvaywgbm93IHRoYXQg d2UgaGF2ZSB3aGF0IHdlIG5lZWQsIGZldGNoIHRoZSBuZXh0IHR1cGxlLgogCSAqLwotCXdoaWxl IChpbmRleF9nZXRuZXh0X3Nsb3Qoc2NhbmRlc2MsIGRpcmVjdGlvbiwgc2xvdCkpCisJd2hpbGUg KCh0aWQgPSBpbmRleF9nZXRuZXh0X3RpZChzY2FuZGVzYywgZGlyZWN0aW9uKSkgIT0gTlVMTCkK IAl7CisJCWlmIChub2RlLT5pc3NfSW5zdHJ1bWVudFRhYmxlKQorCQkJSW5zdHJQdXNoU3RhY2so Jm5vZGUtPmlzc19JbnN0cnVtZW50VGFibGUtPmluc3RyKTsKKworCQlmb3IgKDs7KQorCQl7CisJ CQlmb3VuZCA9IGluZGV4X2ZldGNoX2hlYXAoc2NhbmRlc2MsIHNsb3QpOworCQkJaWYgKGZvdW5k IHx8ICFzY2FuZGVzYy0+eHNfaGVhcF9jb250aW51ZSkKKwkJCQlicmVhazsKKwkJfQorCisJCWlm IChub2RlLT5pc3NfSW5zdHJ1bWVudFRhYmxlKQorCQkJSW5zdHJQb3BTdGFjaygmbm9kZS0+aXNz X0luc3RydW1lbnRUYWJsZS0+aW5zdHIpOworCisJCWlmICh1bmxpa2VseSghZm91bmQpKQorCQkJ Y29udGludWU7CisKIAkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIAogCQkvKgpAQCAtMjU5LDM2 ICsyNzcsNjcgQEAgSW5kZXhOZXh0V2l0aFJlb3JkZXIoSW5kZXhTY2FuU3RhdGUgKm5vZGUpCiAJ CX0KIAogCQkvKgotCQkgKiBGZXRjaCBuZXh0IHR1cGxlIGZyb20gdGhlIGluZGV4LgorCQkgKiBG ZXRjaCBuZXh0IHZhbGlkIHR1cGxlIGZyb20gdGhlIGluZGV4LgogCQkgKi8KLW5leHRfaW5kZXh0 dXBsZToKLQkJaWYgKCFpbmRleF9nZXRuZXh0X3Nsb3Qoc2NhbmRlc2MsIEZvcndhcmRTY2FuRGly ZWN0aW9uLCBzbG90KSkKKwkJZm9yICg7OykKIAkJeworCQkJSXRlbVBvaW50ZXIgdGlkOworCQkJ Ym9vbAkJZm91bmQ7CisKKwkJCS8qIFRpbWUgdG8gZmV0Y2ggdGhlIG5leHQgVElEIGZyb20gdGhl IGluZGV4ICovCisJCQl0aWQgPSBpbmRleF9nZXRuZXh0X3RpZChzY2FuZGVzYywgRm9yd2FyZFNj YW5EaXJlY3Rpb24pOworCisJCQkvKiBJZiB3ZSdyZSBvdXQgb2YgaW5kZXggZW50cmllcywgd2Un cmUgZG9uZSAqLworCQkJaWYgKHRpZCA9PSBOVUxMKQorCQkJeworCQkJCS8qCisJCQkJICogTm8g bW9yZSB0dXBsZXMgZnJvbSB0aGUgaW5kZXguICBCdXQgd2Ugc3RpbGwgbmVlZCB0byBkcmFpbgor CQkJCSAqIGFueSByZW1haW5pbmcgdHVwbGVzIGZyb20gdGhlIHF1ZXVlIGJlZm9yZSB3ZSdyZSBk b25lLgorCQkJCSAqLworCQkJCW5vZGUtPmlzc19SZWFjaGVkRW5kID0gdHJ1ZTsKKwkJCQlicmVh azsKKwkJCX0KKworCQkJQXNzZXJ0KEl0ZW1Qb2ludGVyRXF1YWxzKHRpZCwgJnNjYW5kZXNjLT54 c19oZWFwdGlkKSk7CisKKwkJCWlmIChub2RlLT5pc3NfSW5zdHJ1bWVudFRhYmxlKQorCQkJCUlu c3RyUHVzaFN0YWNrKCZub2RlLT5pc3NfSW5zdHJ1bWVudFRhYmxlLT5pbnN0cik7CisKKwkJCWZv ciAoOzspCisJCQl7CisJCQkJZm91bmQgPSBpbmRleF9mZXRjaF9oZWFwKHNjYW5kZXNjLCBzbG90 KTsKKwkJCQlpZiAoZm91bmQgfHwgIXNjYW5kZXNjLT54c19oZWFwX2NvbnRpbnVlKQorCQkJCQli cmVhazsKKwkJCX0KKworCQkJaWYgKG5vZGUtPmlzc19JbnN0cnVtZW50VGFibGUpCisJCQkJSW5z dHJQb3BTdGFjaygmbm9kZS0+aXNzX0luc3RydW1lbnRUYWJsZS0+aW5zdHIpOworCiAJCQkvKgot CQkJICogTm8gbW9yZSB0dXBsZXMgZnJvbSB0aGUgaW5kZXguICBCdXQgd2Ugc3RpbGwgbmVlZCB0 byBkcmFpbiBhbnkKLQkJCSAqIHJlbWFpbmluZyB0dXBsZXMgZnJvbSB0aGUgcXVldWUgYmVmb3Jl IHdlJ3JlIGRvbmUuCisJCQkgKiBJZiB0aGUgaW5kZXggd2FzIGxvc3N5LCB3ZSBoYXZlIHRvIHJl Y2hlY2sgdGhlIGluZGV4IHF1YWxzIGFuZAorCQkJICogT1JERVIgQlkgZXhwcmVzc2lvbnMgdXNp bmcgdGhlIGZldGNoZWQgdHVwbGUuCiAJCQkgKi8KLQkJCW5vZGUtPmlzc19SZWFjaGVkRW5kID0g dHJ1ZTsKLQkJCWNvbnRpbnVlOwotCQl9Ci0KLQkJLyoKLQkJICogSWYgdGhlIGluZGV4IHdhcyBs b3NzeSwgd2UgaGF2ZSB0byByZWNoZWNrIHRoZSBpbmRleCBxdWFscyBhbmQKLQkJICogT1JERVIg QlkgZXhwcmVzc2lvbnMgdXNpbmcgdGhlIGZldGNoZWQgdHVwbGUuCi0JCSAqLwotCQlpZiAoc2Nh bmRlc2MtPnhzX3JlY2hlY2spCi0JCXsKLQkJCWVjb250ZXh0LT5lY3h0X3NjYW50dXBsZSA9IHNs b3Q7Ci0JCQlpZiAoIUV4ZWNRdWFsQW5kUmVzZXQobm9kZS0+aW5kZXhxdWFsb3JpZywgZWNvbnRl eHQpKQorCQkJaWYgKGZvdW5kICYmIHNjYW5kZXNjLT54c19yZWNoZWNrKQogCQkJewotCQkJCS8q IEZhaWxzIHJlY2hlY2ssIHNvIGRyb3AgaXQgYW5kIGxvb3AgYmFjayBmb3IgYW5vdGhlciAqLwot CQkJCUluc3RyQ291bnRGaWx0ZXJlZDIobm9kZSwgMSk7Ci0JCQkJLyogYWxsb3cgdGhpcyBsb29w IHRvIGJlIGNhbmNlbGxhYmxlICovCi0JCQkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKLQkJCQln b3RvIG5leHRfaW5kZXh0dXBsZTsKKwkJCQllY29udGV4dC0+ZWN4dF9zY2FudHVwbGUgPSBzbG90 OworCQkJCWlmICghRXhlY1F1YWxBbmRSZXNldChub2RlLT5pbmRleHF1YWxvcmlnLCBlY29udGV4 dCkpCisJCQkJeworCQkJCQkvKiBGYWlscyByZWNoZWNrLCBzbyBkcm9wIGl0IGFuZCBsb29wIGJh Y2sgZm9yIGFub3RoZXIgKi8KKwkJCQkJSW5zdHJDb3VudEZpbHRlcmVkMihub2RlLCAxKTsKKwkJ CQkJLyogYWxsb3cgdGhpcyBsb29wIHRvIGJlIGNhbmNlbGxhYmxlICovCisJCQkJCUNIRUNLX0ZP Ul9JTlRFUlJVUFRTKCk7CisJCQkJCWNvbnRpbnVlOworCQkJCX0KIAkJCX0KKworCQkJaWYgKGZv dW5kKQorCQkJCWJyZWFrOwogCQl9CiAKKwkJLyogTm8gbW9yZSBpbmRleCBlbnRyaWVzLCByZS1y dW4gdG8gY2xlYXIgdGhlIHJlb3JkZXIgcXVldWUgKi8KKwkJaWYgKG5vZGUtPmlzc19SZWFjaGVk RW5kKQorCQkJY29udGludWU7CisKIAkJaWYgKHNjYW5kZXNjLT54c19yZWNoZWNrb3JkZXJieSkK IAkJewogCQkJZWNvbnRleHQtPmVjeHRfc2NhbnR1cGxlID0gc2xvdDsKQEAgLTgxNCw2ICs4NjMs MTAgQEAgRXhlY0VuZEluZGV4U2NhbihJbmRleFNjYW5TdGF0ZSAqbm9kZSkKIAkJICogd2hpY2gg d2lsbCBoYXZlIGEgbmV3IEluZGV4T25seVNjYW5TdGF0ZSBhbmQgemVyb2VkIHN0YXRzLgogCQkg Ki8KIAkJd2luc3RydW1lbnQtPm5zZWFyY2hlcyArPSBub2RlLT5pc3NfSW5zdHJ1bWVudC5uc2Vh cmNoZXM7CisJCWlmIChub2RlLT5pc3NfSW5zdHJ1bWVudFRhYmxlKQorCQl7CisJCQlJbnN0ckFj Y3VtU3RhY2soJndpbnN0cnVtZW50LT53b3JrZXJfdGFibGVfaW5zdHIsICZub2RlLT5pc3NfSW5z dHJ1bWVudFRhYmxlLT5pbnN0cik7CisJCX0KIAl9CiAKIAkvKgpAQCAtMTgyMiw0ICsxODc1LDEy IEBAIEV4ZWNJbmRleFNjYW5SZXRyaWV2ZUluc3RydW1lbnRhdGlvbihJbmRleFNjYW5TdGF0ZSAq bm9kZSkKIAkJU2hhcmVkSW5mby0+bnVtX3dvcmtlcnMgKiBzaXplb2YoSW5kZXhTY2FuSW5zdHJ1 bWVudGF0aW9uKTsKIAlub2RlLT5pc3NfU2hhcmVkSW5mbyA9IHBhbGxvYyhzaXplKTsKIAltZW1j cHkobm9kZS0+aXNzX1NoYXJlZEluZm8sIFNoYXJlZEluZm8sIHNpemUpOworCisJLyogQWdncmVn YXRlIHdvcmtlcnMnIHRhYmxlIGJ1ZmZlci9XQUwgdXNhZ2UgaW50byBsZWFkZXIncyBlbnRyeSAq LworCWlmIChub2RlLT5pc3NfSW5zdHJ1bWVudFRhYmxlKQorCQlmb3IgKGludCBpID0gMDsgaSA8 IG5vZGUtPmlzc19TaGFyZWRJbmZvLT5udW1fd29ya2VyczsgaSsrKQorCQl7CisJCQlJbnN0ckFj Y3VtU3RhY2soJm5vZGUtPmlzc19JbnN0cnVtZW50VGFibGUtPmluc3RyLAorCQkJCQkJCSZub2Rl LT5pc3NfU2hhcmVkSW5mby0+d2luc3RydW1lbnRbaV0ud29ya2VyX3RhYmxlX2luc3RyKTsKKwkJ fQogfQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvaW5zdHJ1bWVudF9ub2RlLmgg Yi9zcmMvaW5jbHVkZS9leGVjdXRvci9pbnN0cnVtZW50X25vZGUuaAppbmRleCA4ODQ3ZDdmOTRm YS4uZDZkZDQ2NjkyZWYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2luc3RydW1l bnRfbm9kZS5oCisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2luc3RydW1lbnRfbm9kZS5oCkBA IC0xOCw2ICsxOCw4IEBACiAjaWZuZGVmIElOU1RSVU1FTlRfTk9ERV9ICiAjZGVmaW5lIElOU1RS VU1FTlRfTk9ERV9ICiAKKyNpbmNsdWRlICJleGVjdXRvci9pbnN0cnVtZW50LmgiCisKIAogLyog LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKglJbnN0cnVtZW50YXRpb24gaW5mb3JtYXRpb24gZm9y IGFnZ3JlZ2F0ZSBmdW5jdGlvbiBleGVjdXRpb24KQEAgLTQ4LDYgKzUwLDkgQEAgdHlwZWRlZiBz dHJ1Y3QgSW5kZXhTY2FuSW5zdHJ1bWVudGF0aW9uCiB7CiAJLyogSW5kZXggc2VhcmNoIGNvdW50 IChpbmNyZW1lbnRlZCB3aXRoIHBnc3RhdF9jb3VudF9pbmRleF9zY2FuIGNhbGwpICovCiAJdWlu dDY0CQluc2VhcmNoZXM7CisKKwkvKiBVc2VkIGZvciBwYXNzaW5nIGkobylzc19JbnN0cnVtZW50 VGFibGUgZGF0YSBmcm9tIHBhcmFsbGVsIHdvcmtlcnMgKi8KKwlJbnN0cnVtZW50YXRpb24gd29y a2VyX3RhYmxlX2luc3RyOwogfSBJbmRleFNjYW5JbnN0cnVtZW50YXRpb247CiAKIC8qCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVz L2V4ZWNub2Rlcy5oCmluZGV4IGZiZjEzNjgzNTgxLi5jZDY3MzZhY2M4MCAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhl Y25vZGVzLmgKQEAgLTE3MzcsNiArMTczNywxMyBAQCB0eXBlZGVmIHN0cnVjdCBJbmRleFNjYW5T dGF0ZQogCUluZGV4U2Nhbkluc3RydW1lbnRhdGlvbiBpc3NfSW5zdHJ1bWVudDsKIAlTaGFyZWRJ bmRleFNjYW5JbnN0cnVtZW50YXRpb24gKmlzc19TaGFyZWRJbmZvOwogCisJLyoKKwkgKiBJbnN0 cnVtZW50YXRpb24gdXRpbGl6ZWQgZm9yIHRyYWNraW5nIHRhYmxlIGFjY2Vzcy4gVGhpcyBpcyBz ZXBhcmF0ZQorCSAqIGZyb20gaXNzX0luc3RydW1lbnQgc2luY2UgaXQgbmVlZHMgdG8gYmUgYWxs b2NhdGVkIGluIHRoZSByaWdodCBjb250ZXh0CisJICogYW5kIEluZGV4U2Nhbkluc3RydW1lbnRh dGlvbiBzaG91bGRuJ3QgY29udGFpbiBwb2ludGVycy4KKwkgKi8KKwlOb2RlSW5zdHJ1bWVudGF0 aW9uICppc3NfSW5zdHJ1bWVudFRhYmxlOworCiAJLyogVGhlc2UgYXJlIG5lZWRlZCBmb3IgcmUt Y2hlY2tpbmcgT1JERVIgQlkgZXhwciBvcmRlcmluZyAqLwogCXBhaXJpbmdoZWFwICppc3NfUmVv cmRlclF1ZXVlOwogCWJvb2wJCWlzc19SZWFjaGVkRW5kOwpAQCAtMTc4Nyw2ICsxNzk0LDE0IEBA IHR5cGVkZWYgc3RydWN0IEluZGV4T25seVNjYW5TdGF0ZQogCXN0cnVjdCBJbmRleFNjYW5EZXNj RGF0YSAqaW9zc19TY2FuRGVzYzsKIAlJbmRleFNjYW5JbnN0cnVtZW50YXRpb24gaW9zc19JbnN0 cnVtZW50OwogCVNoYXJlZEluZGV4U2Nhbkluc3RydW1lbnRhdGlvbiAqaW9zc19TaGFyZWRJbmZv OworCisJLyoKKwkgKiBJbnN0cnVtZW50YXRpb24gdXRpbGl6ZWQgZm9yIHRyYWNraW5nIHRhYmxl IGFjY2Vzcy4gVGhpcyBpcyBzZXBhcmF0ZQorCSAqIGZyb20gaW9zc19JbnN0cnVtZW50IHNpbmNl IGl0IG5lZWRzIHRvIGJlIGFsbG9jYXRlZCBpbiB0aGUgcmlnaHQKKwkgKiBjb250ZXh0IGFuZCBJ bmRleFNjYW5JbnN0cnVtZW50YXRpb24gc2hvdWxkbid0IGNvbnRhaW4gcG9pbnRlcnMuCisJICov CisJTm9kZUluc3RydW1lbnRhdGlvbiAqaW9zc19JbnN0cnVtZW50VGFibGU7CisKIAlUdXBsZVRh YmxlU2xvdCAqaW9zc19UYWJsZVNsb3Q7CiAJQnVmZmVyCQlpb3NzX1ZNQnVmZmVyOwogCVNpemUJ CWlvc3NfUHNjYW5MZW47Ci0tIAoyLjQ3LjEKCg== --000000000000c2e7d4064d33fd67 Content-Type: application/octet-stream; name="v9-0007-instrumentation-Optimize-ExecProcNodeInstr-instru.patch" Content-Disposition: attachment; filename="v9-0007-instrumentation-Optimize-ExecProcNodeInstr-instru.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmucb65y6 RnJvbSBiMmRhNjQyYTM0ODUwMjhmZmE4OGRiMjViMGZkODA4ZDIzYjAxYTQ4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpEYXRlOiBT YXQsIDcgTWFyIDIwMjYgMTc6NTI6MjQgLTA4MDAKU3ViamVjdDogW1BBVENIIHY5IDcvOV0gaW5z dHJ1bWVudGF0aW9uOiBPcHRpbWl6ZSBFeGVjUHJvY05vZGVJbnN0cgogaW5zdHJ1Y3Rpb25zIGJ5 IGlubGluaW5nCgpGb3IgbW9zdCBxdWVyaWVzLCB0aGUgYnVsayBvZiB0aGUgb3ZlcmhlYWQgb2Yg RVhQTEFJTiBBTkFMWVpFIGhhcHBlbnMgaW4KRXhlY1Byb2NOb2RlSW5zdHIgd2hlbiBzdGFydGlu Zy9zdG9wcGluZyBpbnN0cnVtZW50YXRpb24gZm9yIHRoYXQgbm9kZS4KClByZXZpb3VzbHkgZWFj aCBFeGVjUHJvY05vZGVJbnN0ciB3b3VsZCBjaGVjayB3aGljaCBpbnN0cnVtZW50YXRpb24Kb3B0 aW9ucyBhcmUgYWN0aXZlIGluIHRoZSBJbnN0clN0YXJ0Tm9kZS9JbnN0clN0b3BOb2RlIGNhbGxz LCBhbmQgZG8gdGhlCmNvcnJlc3BvbmRpbmcgd29yayAodGltZXJzLCBpbnN0cnVtZW50YXRpb24g c3RhY2ssIGV0Yy4pLiBUaGVzZQpjb25kaXRpb25hbHMgYmVpbmcgY2hlY2tlZCBmb3IgZWFjaCB0 dXBsZSBiZWluZyBlbWl0dGVkIGFkZCB1cCwgYW5kIGNhdXNlCm5vbi1vcHRpbWFsIHNldCBvZiBp bnN0cnVjdGlvbnMgdG8gYmUgZ2VuZXJhdGVkIGJ5IHRoZSBjb21waWxlci4KCkJlY2F1c2Ugd2Ug YWxyZWFkeSBoYXZlIGFuIGV4aXN0aW5nIG1lY2hhbmlzbSB0byBzcGVjaWZ5IGEgZnVuY3Rpb24K cG9pbnRlciB3aGVuIGluc3RydW1lbnRhdGlvbiBpcyBlbmFibGVkLCB3ZSBjYW4gaW5zdGVhZCBj cmVhdGUgc3BlY2lhbGl6ZWQKZnVuY3Rpb25zIHRoYXQgYXJlIHRhaWxvcmVkIHRvIHRoZSBpbnN0 cnVtZW50YXRpb24gb3B0aW9ucyBlbmFibGVkLCBhbmQKYXZvaWQgY29uZGl0aW9uYWxzIG9uIHN1 YnNlcXVlbnQgRXhlY1Byb2NOb2RlSW5zdHIgY2FsbHMuIFRoaXMgcmVzdWx0cyBpbgp0aGUgb3Zl cmhlYWQgZm9yIEVYUExBSU4gKEFOQUxZWkUsIFRJTUlORyBPRkYsIEJVRkZFUlMgT0ZGKSBmb3Ig YSBzdHJlc3MKdGVzdCB3aXRoIGEgbGFyZ2UgQ09VTlQoKikgdGhhdCBkb2VzIG1hbnkgRXhlY1By b2NOb2RlIGNhbGxzIGZyb20gfiAyMCUgb24KdG9wIG9mIGFjdHVhbCBydW50aW1lIHRvIH4gMyUu IFdoZW4gdXNpbmcgQlVGRkVSUyBPTiB0aGUgc2FtZSBxdWVyeSBnb2VzCmZyb20gfiAyMCUgdG8g fiAxMCUgb24gdG9wIG9mIGFjdHVhbCBydW50aW1lLgoKQXV0aG9yOiBMdWthcyBGaXR0bCA8bHVr YXNAZml0dGwuY29tPgpSZXZpZXdlZC1ieTogWnNvbHQgUGFycmFnaSA8enNvbHQucGFycmFnaUBw ZXJjb25hLmNvbT4KRGlzY3Vzc2lvbjogaHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvbWVzc2Fn ZS1pZC9mbGF0L0NBUDUzUGt4RlA3aTctd3k5OFptRUoxMWVkWXEtUnJQdkpvYTRrekdoQkJqRVJB NE55dyU0MG1haWwuZ21haWwuY29tI2U4ZGZkMDE4YTA3ZDdmOGQ0MTU2NWEwNzlkNDBjNTY0Ci0t LQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1Byb2Nub2RlLmMgfCAgMjIgKy0tCiBzcmMvYmFj a2VuZC9leGVjdXRvci9pbnN0cnVtZW50LmMgICB8IDIyNCArKysrKysrKysrKysrKysrKysrKyst LS0tLS0tCiBzcmMvaW5jbHVkZS9leGVjdXRvci9pbnN0cnVtZW50LmggICB8ICAgNSArCiAzIGZp bGVzIGNoYW5nZWQsIDE3NCBpbnNlcnRpb25zKCspLCA3NyBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUHJvY25vZGUuYyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNQcm9jbm9kZS5jCmluZGV4IGIxMTgxNzE1YzMwLi44MjhhMWZlM2IxZCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1Byb2Nub2RlLmMKKysrIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY1Byb2Nub2RlLmMKQEAgLTEyMSw3ICsxMjEsNiBAQAogI2luY2x1 ZGUgIm5vZGVzL25vZGVGdW5jcy5oIgogCiBzdGF0aWMgVHVwbGVUYWJsZVNsb3QgKkV4ZWNQcm9j Tm9kZUZpcnN0KFBsYW5TdGF0ZSAqbm9kZSk7Ci1zdGF0aWMgVHVwbGVUYWJsZVNsb3QgKkV4ZWNQ cm9jTm9kZUluc3RyKFBsYW5TdGF0ZSAqbm9kZSk7CiBzdGF0aWMgYm9vbCBFeGVjU2h1dGRvd25O b2RlX3dhbGtlcihQbGFuU3RhdGUgKm5vZGUsIHZvaWQgKmNvbnRleHQpOwogc3RhdGljIGJvb2wg RXhlY1JlbWVtYmVyTm9kZUluc3RydW1lbnRhdGlvbl93YWxrZXIoUGxhblN0YXRlICpub2RlLCB2 b2lkICpjb250ZXh0KTsKIHN0YXRpYyBib29sIEV4ZWNGaW5hbGl6ZU5vZGVJbnN0cnVtZW50YXRp b25fd2Fsa2VyKFBsYW5TdGF0ZSAqbm9kZSwgdm9pZCAqY29udGV4dCk7CkBAIC00NjUsNyArNDY0 LDcgQEAgRXhlY1Byb2NOb2RlRmlyc3QoUGxhblN0YXRlICpub2RlKQogCSAqIGhhdmUgRXhlY1By b2NOb2RlKCkgZGlyZWN0bHkgY2FsbCB0aGUgcmVsZXZhbnQgZnVuY3Rpb24gZnJvbSBub3cgb24u CiAJICovCiAJaWYgKG5vZGUtPmluc3RydW1lbnQpCi0JCW5vZGUtPkV4ZWNQcm9jTm9kZSA9IEV4 ZWNQcm9jTm9kZUluc3RyOworCQlub2RlLT5FeGVjUHJvY05vZGUgPSBJbnN0ck5vZGVTZXR1cEV4 ZWNQcm9jTm9kZShub2RlLT5pbnN0cnVtZW50KTsKIAllbHNlCiAJCW5vZGUtPkV4ZWNQcm9jTm9k ZSA9IG5vZGUtPkV4ZWNQcm9jTm9kZVJlYWw7CiAKQEAgLTQ3MywyNSArNDcyLDYgQEAgRXhlY1By b2NOb2RlRmlyc3QoUGxhblN0YXRlICpub2RlKQogfQogCiAKLS8qCi0gKiBFeGVjUHJvY05vZGUg d3JhcHBlciB0aGF0IHBlcmZvcm1zIGluc3RydW1lbnRhdGlvbiBjYWxscy4gIEJ5IGtlZXBpbmcK LSAqIHRoaXMgYSBzZXBhcmF0ZSBmdW5jdGlvbiwgd2UgYXZvaWQgb3ZlcmhlYWQgaW4gdGhlIG5v cm1hbCBjYXNlIHdoZXJlCi0gKiBubyBpbnN0cnVtZW50YXRpb24gaXMgd2FudGVkLgotICovCi1z dGF0aWMgVHVwbGVUYWJsZVNsb3QgKgotRXhlY1Byb2NOb2RlSW5zdHIoUGxhblN0YXRlICpub2Rl KQotewotCVR1cGxlVGFibGVTbG90ICpyZXN1bHQ7Ci0KLQlJbnN0clN0YXJ0Tm9kZShub2RlLT5p bnN0cnVtZW50KTsKLQotCXJlc3VsdCA9IG5vZGUtPkV4ZWNQcm9jTm9kZVJlYWwobm9kZSk7Ci0K LQlJbnN0clN0b3BOb2RlKG5vZGUtPmluc3RydW1lbnQsIFR1cElzTnVsbChyZXN1bHQpID8gMC4w IDogMS4wKTsKLQotCXJldHVybiByZXN1bHQ7Ci19Ci0KIAogLyogLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoJCU11bHRp RXhlY1Byb2NOb2RlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9pbnN0cnVtZW50 LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9pbnN0cnVtZW50LmMKaW5kZXggZTc1MjhjNTVmMGIu Ljk1ZDNmODNkNDZiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9pbnN0cnVtZW50 LmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvaW5zdHJ1bWVudC5jCkBAIC00OCwyOSArNDgs MjAgQEAgSW5zdHJJbml0T3B0aW9ucyhJbnN0cnVtZW50YXRpb24gKmluc3RyLCBpbnQgaW5zdHJ1 bWVudF9vcHRpb25zKQogCWluc3RyLT5uZWVkX3RpbWVyID0gKGluc3RydW1lbnRfb3B0aW9ucyAm IElOU1RSVU1FTlRfVElNRVIpICE9IDA7CiB9CiAKLXZvaWQKLUluc3RyU3RhcnQoSW5zdHJ1bWVu dGF0aW9uICppbnN0cikKK3N0YXRpYyBpbmxpbmUgdm9pZAorSW5zdHJTdGFydFRpbWVyKEluc3Ry dW1lbnRhdGlvbiAqaW5zdHIpCiB7Ci0JaWYgKGluc3RyLT5uZWVkX3RpbWVyKQotCXsKLQkJaWYg KCFJTlNUUl9USU1FX0lTX1pFUk8oaW5zdHItPnN0YXJ0dGltZSkpCi0JCQllbG9nKEVSUk9SLCAi SW5zdHJTdGFydCBjYWxsZWQgdHdpY2UgaW4gYSByb3ciKTsKLQkJZWxzZQotCQkJSU5TVFJfVElN RV9TRVRfQ1VSUkVOVChpbnN0ci0+c3RhcnR0aW1lKTsKLQl9CisJQXNzZXJ0KElOU1RSX1RJTUVf SVNfWkVSTyhpbnN0ci0+c3RhcnR0aW1lKSk7CiAKLQlpZiAoaW5zdHItPm5lZWRfc3RhY2spCi0J CUluc3RyUHVzaFN0YWNrKGluc3RyKTsKKwlJTlNUUl9USU1FX1NFVF9DVVJSRU5UKGluc3RyLT5z dGFydHRpbWUpOwogfQogCi1zdGF0aWMgdm9pZAorc3RhdGljIGlubGluZSB2b2lkCiBJbnN0clN0 b3BUaW1lcihJbnN0cnVtZW50YXRpb24gKmluc3RyKQogewogCWluc3RyX3RpbWUJZW5kdGltZTsK IAotCS8qIGxldCdzIHVwZGF0ZSB0aGUgdGltZSBvbmx5IGlmIHRoZSB0aW1lciB3YXMgcmVxdWVz dGVkICovCi0JaWYgKElOU1RSX1RJTUVfSVNfWkVSTyhpbnN0ci0+c3RhcnR0aW1lKSkKLQkJZWxv ZyhFUlJPUiwgIkluc3RyU3RvcCBjYWxsZWQgd2l0aG91dCBzdGFydCIpOworCUFzc2VydCghSU5T VFJfVElNRV9JU19aRVJPKGluc3RyLT5zdGFydHRpbWUpKTsKIAogCUlOU1RSX1RJTUVfU0VUX0NV UlJFTlQoZW5kdGltZSk7CiAJSU5TVFJfVElNRV9BQ0NVTV9ESUZGKGluc3RyLT50b3RhbCwgZW5k dGltZSwgaW5zdHItPnN0YXJ0dGltZSk7CkBAIC03OCw2ICs2OSwxNiBAQCBJbnN0clN0b3BUaW1l cihJbnN0cnVtZW50YXRpb24gKmluc3RyKQogCUlOU1RSX1RJTUVfU0VUX1pFUk8oaW5zdHItPnN0 YXJ0dGltZSk7CiB9CiAKK3ZvaWQKK0luc3RyU3RhcnQoSW5zdHJ1bWVudGF0aW9uICppbnN0cikK K3sKKwlpZiAoaW5zdHItPm5lZWRfdGltZXIpCisJCUluc3RyU3RhcnRUaW1lcihpbnN0cik7CisK KwlpZiAoaW5zdHItPm5lZWRfc3RhY2spCisJCUluc3RyUHVzaFN0YWNrKGluc3RyKTsKK30KKwog dm9pZAogSW5zdHJTdG9wKEluc3RydW1lbnRhdGlvbiAqaW5zdHIpCiB7CkBAIC0zNDUsNjUgKzM0 Niw1NyBAQCBJbnN0ckluaXROb2RlKE5vZGVJbnN0cnVtZW50YXRpb24gKmluc3RyLCBpbnQgaW5z dHJ1bWVudF9vcHRpb25zKQogCUluc3RySW5pdE9wdGlvbnMoJmluc3RyLT5pbnN0ciwgaW5zdHJ1 bWVudF9vcHRpb25zKTsKIH0KIAotLyogRW50cnkgdG8gYSBwbGFuIG5vZGUgKi8KKy8qIEVudHJ5 IHRvIGEgcGxhbiBub2RlLiBJZiB5b3UgbW9kaWZ5IHRoaXMsIGNoZWNrIEluc3RyTm9kZVNldHVw RXhlY1Byb2NOb2RlLiAqLwogdm9pZAogSW5zdHJTdGFydE5vZGUoTm9kZUluc3RydW1lbnRhdGlv biAqaW5zdHIpCiB7CiAJSW5zdHJTdGFydCgmaW5zdHItPmluc3RyKTsKIH0KIAotCi0vKiBFeGl0 IGZyb20gYSBwbGFuIG5vZGUgKi8KLXZvaWQKLUluc3RyU3RvcE5vZGUoTm9kZUluc3RydW1lbnRh dGlvbiAqaW5zdHIsIGRvdWJsZSBuVHVwbGVzKQorLyoKKyAqIFVwZGF0ZXMgdGhlIG5vZGUgaW5z dHJ1bWVudGF0aW9uIHRpbWUgY291bnRlci4KKyAqCisgKiBOb3RlIHRoaXMgaXMgZGlmZmVyZW50 IGZyb20gSW5zdHJTdG9wIGJlY2F1c2UgdG90YWwgaXMgb25seSB1cGRhdGVkIGluCisgKiBJbnN0 ckVuZExvb3AuIFdlIG5lZWQgdGhlIHNlcGFyYXRlIGNvdW50ZXIgdmFyaWFibGUgYmVjYXVzZSB3 ZSBuZWVkIHRvCisgKiBjYWxjdWxhdGUgc3RhcnQtdXAgdGltZSBmb3IgdGhlIGZpcnN0IHR1cGxl IGluIGVhY2ggY3ljbGUsIGFuZCB0aGVuCisgKiBhY2N1bXVsYXRlIGl0IHRvZ2V0aGVyLgorICov CitzdGF0aWMgaW5saW5lIHZvaWQKK0luc3RyU3RvcE5vZGVUaW1lcihOb2RlSW5zdHJ1bWVudGF0 aW9uICppbnN0cikKIHsKLQlkb3VibGUJCXNhdmVfdHVwbGVjb3VudCA9IGluc3RyLT50dXBsZWNv dW50OwogCWluc3RyX3RpbWUJZW5kdGltZTsKIAotCS8qIGNvdW50IHRoZSByZXR1cm5lZCB0dXBs ZXMgKi8KLQlpbnN0ci0+dHVwbGVjb3VudCArPSBuVHVwbGVzOworCUFzc2VydCghSU5TVFJfVElN RV9JU19aRVJPKGluc3RyLT5pbnN0ci5zdGFydHRpbWUpKTsKKworCUlOU1RSX1RJTUVfU0VUX0NV UlJFTlQoZW5kdGltZSk7CisJSU5TVFJfVElNRV9BQ0NVTV9ESUZGKGluc3RyLT5jb3VudGVyLCBl bmR0aW1lLCBpbnN0ci0+aW5zdHIuc3RhcnR0aW1lKTsKKwlJTlNUUl9USU1FX1NFVF9aRVJPKGlu c3RyLT5pbnN0ci5zdGFydHRpbWUpOwogCiAJLyoKLQkgKiBVcGRhdGUgdGhlIHRpbWUgb25seSBp ZiB0aGUgdGltZXIgd2FzIHJlcXVlc3RlZC4KKwkgKiBJcyB0aGlzIHRoZSBmaXJzdCB0dXBsZSBv ZiB0aGlzIGN5Y2xlPwogCSAqCi0JICogTm90ZSB0aGlzIGlzIGRpZmZlcmVudCBmcm9tIEluc3Ry U3RvcCBiZWNhdXNlIHRvdGFsIGlzIG9ubHkgdXBkYXRlZCBpbgotCSAqIEluc3RyRW5kTG9vcC4g V2UgbmVlZCB0aGUgc2VwYXJhdGUgY291bnRlciB2YXJpYWJsZSBiZWNhdXNlIHdlIG5lZWQgdG8K LQkgKiBjYWxjdWxhdGUgc3RhcnQtdXAgdGltZSBmb3IgdGhlIGZpcnN0IHR1cGxlIGluIGVhY2gg Y3ljbGUsIGFuZCB0aGVuCi0JICogYWNjdW11bGF0ZSBpdCB0b2dldGhlci4KKwkgKiBJbiBhc3lu YyBtb2RlLCBpZiB0aGUgcGxhbiBub2RlIGhhZG4ndCBlbWl0dGVkIGFueSB0dXBsZXMgYmVmb3Jl LCB0aGlzCisJICogbWlnaHQgYmUgdGhlIGZpcnN0IHR1cGxlCiAJICovCi0JaWYgKGluc3RyLT5p bnN0ci5uZWVkX3RpbWVyKQotCXsKLQkJaWYgKElOU1RSX1RJTUVfSVNfWkVSTyhpbnN0ci0+aW5z dHIuc3RhcnR0aW1lKSkKLQkJCWVsb2coRVJST1IsICJJbnN0clN0b3BOb2RlIGNhbGxlZCB3aXRo b3V0IHN0YXJ0Iik7Ci0KLQkJSU5TVFJfVElNRV9TRVRfQ1VSUkVOVChlbmR0aW1lKTsKLQkJSU5T VFJfVElNRV9BQ0NVTV9ESUZGKGluc3RyLT5jb3VudGVyLCBlbmR0aW1lLCBpbnN0ci0+aW5zdHIu c3RhcnR0aW1lKTsKKwlpZiAoIWluc3RyLT5ydW5uaW5nIHx8IChpbnN0ci0+YXN5bmNfbW9kZSAm JiBpbnN0ci0+dHVwbGVjb3VudCA8IDEuMCkpCisJCWluc3RyLT5maXJzdHR1cGxlID0gaW5zdHIt PmNvdW50ZXI7Cit9CiAKLQkJSU5TVFJfVElNRV9TRVRfWkVSTyhpbnN0ci0+aW5zdHIuc3RhcnR0 aW1lKTsKLQl9CisvKiBFeGl0IGZyb20gYSBwbGFuIG5vZGUuIElmIHlvdSBtb2RpZnkgdGhpcywg Y2hlY2sgSW5zdHJOb2RlU2V0dXBFeGVjUHJvY05vZGUuICovCit2b2lkCitJbnN0clN0b3BOb2Rl KE5vZGVJbnN0cnVtZW50YXRpb24gKmluc3RyLCBkb3VibGUgblR1cGxlcykKK3sKKwlpZiAoaW5z dHItPmluc3RyLm5lZWRfdGltZXIpCisJCUluc3RyU3RvcE5vZGVUaW1lcihpbnN0cik7CiAKLQkv KgotCSAqIE9ubHkgcG9wIHRoZSBzdGFjaywgYWNjdW11bGF0aW9uIHJ1bnMgaW4KLQkgKiBFeGVj RmluYWxpemVOb2RlSW5zdHJ1bWVudGF0aW9uCi0JICovCisJLyogT25seSBwb3AgdGhlIHN0YWNr LCBhY2N1bXVsYXRpb24gcnVucyBpbiBJbnN0ckZpbmFsaXplTm9kZSAqLwogCWlmIChpbnN0ci0+ aW5zdHIubmVlZF9zdGFjaykKIAkJSW5zdHJQb3BTdGFjaygmaW5zdHItPmluc3RyKTsKIAotCS8q IElzIHRoaXMgdGhlIGZpcnN0IHR1cGxlIG9mIHRoaXMgY3ljbGU/ICovCi0JaWYgKCFpbnN0ci0+ cnVubmluZykKLQl7Ci0JCWluc3RyLT5ydW5uaW5nID0gdHJ1ZTsKLQkJaW5zdHItPmZpcnN0dHVw bGUgPSBpbnN0ci0+Y291bnRlcjsKLQl9Ci0JZWxzZQotCXsKLQkJLyoKLQkJICogSW4gYXN5bmMg bW9kZSwgaWYgdGhlIHBsYW4gbm9kZSBoYWRuJ3QgZW1pdHRlZCBhbnkgdHVwbGVzIGJlZm9yZSwK LQkJICogdGhpcyBtaWdodCBiZSB0aGUgZmlyc3QgdHVwbGUKLQkJICovCi0JCWlmIChpbnN0ci0+ YXN5bmNfbW9kZSAmJiBzYXZlX3R1cGxlY291bnQgPCAxLjApCi0JCQlpbnN0ci0+Zmlyc3R0dXBs ZSA9IGluc3RyLT5jb3VudGVyOwotCX0KKwlpbnN0ci0+cnVubmluZyA9IHRydWU7CisKKwkvKiBj b3VudCB0aGUgcmV0dXJuZWQgdHVwbGVzICovCisJaW5zdHItPnR1cGxlY291bnQgKz0gblR1cGxl czsKIH0KIAogTm9kZUluc3RydW1lbnRhdGlvbiAqCkBAIC00OTMsNiArNDg2LDEyNSBAQCBJbnN0 ckFnZ05vZGUoTm9kZUluc3RydW1lbnRhdGlvbiAqZHN0LCBOb2RlSW5zdHJ1bWVudGF0aW9uICph ZGQpCiAJCUluc3RyQWNjdW1TdGFjaygmZHN0LT5pbnN0ciwgJmFkZC0+aW5zdHIpOwogfQogCisv KgorICogU3BlY2lhbGl6ZWQgaGFuZGxpbmcgb2YgaW5zdHJ1bWVudGVkIEV4ZWNQcm9jTm9kZQor ICoKKyAqIFRoZXNlIGZ1bmN0aW9ucyBhcmUgZXF1aXZhbGVudCB0byBydW5uaW5nIEV4ZWNQcm9j Tm9kZVJlYWwgd3JhcHBlZCBpbgorICogSW5zdHJTdGFydE5vZGUgYW5kIEluc3RyU3RvcE5vZGUs IGJ1dCBhdm9pZCB0aGUgY29uZGl0aW9uYWxzIGluIHRoZSBob3QgcGF0aAorICogYnkgY2hlY2tp bmcgdGhlIGluc3RydW1lbnRhdGlvbiBvcHRpb25zIHdoZW4gdGhlIEV4ZWNQcm9jTm9kZSBwb2lu dGVyIGdldHMKKyAqIGZpcnN0IHNldCwgYW5kIHRoZW4gdXNpbmcgYSBzcGVjaWFsLXB1cnBvc2Ug ZnVuY3Rpb24gZm9yIGVhY2guIFRoaXMgcmVzdWx0cworICogaW4gYSBtb3JlIG9wdGltaXplZCBz ZXQgb2YgY29tcGlsZWQgaW5zdHJ1Y3Rpb25zLgorICovCisKKyNpbmNsdWRlICJleGVjdXRvci90 dXB0YWJsZS5oIgorI2luY2x1ZGUgIm5vZGVzL2V4ZWNub2Rlcy5oIgorCisvKiBTaW1wbGlmaWVk IHBvcDogcmVzdG9yZSBzYXZlZCBzdGF0ZSBpbnN0ZWFkIG9mIHJlLWRlcml2aW5nIGZyb20gYXJy YXkgKi8KK3N0YXRpYyBpbmxpbmUgdm9pZAorSW5zdHJQb3BTdGFja1RvKEluc3RydW1lbnRhdGlv biAqcHJldikKK3sKKwlBc3NlcnQoaW5zdHJfc3RhY2suc3RhY2tfc2l6ZSA+IDApOworCUFzc2Vy dChpbnN0cl9zdGFjay5zdGFja19zaXplID4gMSA/IGluc3RyX3N0YWNrLmVudHJpZXNbaW5zdHJf c3RhY2suc3RhY2tfc2l6ZSAtIDJdID09IHByZXYgOiAmaW5zdHJfdG9wID09IHByZXYpOworCWlu c3RyX3N0YWNrLnN0YWNrX3NpemUtLTsKKwlpbnN0cl9zdGFjay5jdXJyZW50ID0gcHJldjsKK30K Kworc3RhdGljIFR1cGxlVGFibGVTbG90ICoKK0V4ZWNQcm9jTm9kZUluc3RyRnVsbChQbGFuU3Rh dGUgKm5vZGUpCit7CisJTm9kZUluc3RydW1lbnRhdGlvbiAqaW5zdHIgPSBub2RlLT5pbnN0cnVt ZW50OworCUluc3RydW1lbnRhdGlvbiAqcHJldiA9IGluc3RyX3N0YWNrLmN1cnJlbnQ7CisJVHVw bGVUYWJsZVNsb3QgKnJlc3VsdDsKKworCUluc3RyUHVzaFN0YWNrKCZpbnN0ci0+aW5zdHIpOwor CUluc3RyU3RhcnRUaW1lcigmaW5zdHItPmluc3RyKTsKKworCXJlc3VsdCA9IG5vZGUtPkV4ZWNQ cm9jTm9kZVJlYWwobm9kZSk7CisKKwlJbnN0clN0b3BOb2RlVGltZXIoaW5zdHIpOworCUluc3Ry UG9wU3RhY2tUbyhwcmV2KTsKKworCWluc3RyLT5ydW5uaW5nID0gdHJ1ZTsKKwlpZiAoIVR1cElz TnVsbChyZXN1bHQpKQorCQlpbnN0ci0+dHVwbGVjb3VudCArPSAxLjA7CisKKwlyZXR1cm4gcmVz dWx0OworfQorCitzdGF0aWMgVHVwbGVUYWJsZVNsb3QgKgorRXhlY1Byb2NOb2RlSW5zdHJSb3dz U3RhY2tPbmx5KFBsYW5TdGF0ZSAqbm9kZSkKK3sKKwlOb2RlSW5zdHJ1bWVudGF0aW9uICppbnN0 ciA9IG5vZGUtPmluc3RydW1lbnQ7CisJSW5zdHJ1bWVudGF0aW9uICpwcmV2ID0gaW5zdHJfc3Rh Y2suY3VycmVudDsKKwlUdXBsZVRhYmxlU2xvdCAqcmVzdWx0OworCisJSW5zdHJQdXNoU3RhY2so Jmluc3RyLT5pbnN0cik7CisKKwlyZXN1bHQgPSBub2RlLT5FeGVjUHJvY05vZGVSZWFsKG5vZGUp OworCisJSW5zdHJQb3BTdGFja1RvKHByZXYpOworCisJaW5zdHItPnJ1bm5pbmcgPSB0cnVlOwor CWlmICghVHVwSXNOdWxsKHJlc3VsdCkpCisJCWluc3RyLT50dXBsZWNvdW50ICs9IDEuMDsKKwor CXJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBUdXBsZVRhYmxlU2xvdCAqCitFeGVjUHJvY05v ZGVJbnN0clJvd3NUaW1lck9ubHkoUGxhblN0YXRlICpub2RlKQoreworCU5vZGVJbnN0cnVtZW50 YXRpb24gKmluc3RyID0gbm9kZS0+aW5zdHJ1bWVudDsKKwlUdXBsZVRhYmxlU2xvdCAqcmVzdWx0 OworCisJSW5zdHJTdGFydFRpbWVyKCZpbnN0ci0+aW5zdHIpOworCisJcmVzdWx0ID0gbm9kZS0+ RXhlY1Byb2NOb2RlUmVhbChub2RlKTsKKworCUluc3RyU3RvcE5vZGVUaW1lcihpbnN0cik7CisK KwlpbnN0ci0+cnVubmluZyA9IHRydWU7CisJaWYgKCFUdXBJc051bGwocmVzdWx0KSkKKwkJaW5z dHItPnR1cGxlY291bnQgKz0gMS4wOworCisJcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIFR1 cGxlVGFibGVTbG90ICoKK0V4ZWNQcm9jTm9kZUluc3RyUm93c09ubHkoUGxhblN0YXRlICpub2Rl KQoreworCU5vZGVJbnN0cnVtZW50YXRpb24gKmluc3RyID0gbm9kZS0+aW5zdHJ1bWVudDsKKwlU dXBsZVRhYmxlU2xvdCAqcmVzdWx0OworCisJcmVzdWx0ID0gbm9kZS0+RXhlY1Byb2NOb2RlUmVh bChub2RlKTsKKworCWluc3RyLT5ydW5uaW5nID0gdHJ1ZTsKKwlpZiAoIVR1cElzTnVsbChyZXN1 bHQpKQorCQlpbnN0ci0+dHVwbGVjb3VudCArPSAxLjA7CisKKwlyZXR1cm4gcmVzdWx0OworfQor CisvKgorICogUmV0dXJucyBhbiBFeGVjUHJvY05vZGUgd3JhcHBlciB0aGF0IHBlcmZvcm1zIGlu c3RydW1lbnRhdGlvbiBjYWxscywKKyAqIHRhaWxvcmVkIHRvIHRoZSBpbnN0cnVtZW50YXRpb24g b3B0aW9ucyBlbmFibGVkIGZvciB0aGUgbm9kZS4KKyAqLworRXhlY1Byb2NOb2RlTXRkCitJbnN0 ck5vZGVTZXR1cEV4ZWNQcm9jTm9kZShOb2RlSW5zdHJ1bWVudGF0aW9uICppbnN0cikKK3sKKwli b29sCQluZWVkX3RpbWVyID0gaW5zdHItPmluc3RyLm5lZWRfdGltZXI7CisJYm9vbAkJbmVlZF9z dGFjayA9IGluc3RyLT5pbnN0ci5uZWVkX3N0YWNrOworCisJaWYgKG5lZWRfdGltZXIgJiYgbmVl ZF9zdGFjaykKKwkJcmV0dXJuIEV4ZWNQcm9jTm9kZUluc3RyRnVsbDsKKwllbHNlIGlmIChuZWVk X3N0YWNrKQorCQlyZXR1cm4gRXhlY1Byb2NOb2RlSW5zdHJSb3dzU3RhY2tPbmx5OworCWVsc2Ug aWYgKG5lZWRfdGltZXIpCisJCXJldHVybiBFeGVjUHJvY05vZGVJbnN0clJvd3NUaW1lck9ubHk7 CisJZWxzZQorCQlyZXR1cm4gRXhlY1Byb2NOb2RlSW5zdHJSb3dzT25seTsKK30KKwogLyogVHJp Z2dlciBpbnN0cnVtZW50YXRpb24gaGFuZGxpbmcgKi8KIFRyaWdnZXJJbnN0cnVtZW50YXRpb24g KgogSW5zdHJBbGxvY1RyaWdnZXIoaW50IG4sIGludCBpbnN0cnVtZW50X29wdGlvbnMpCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRvci9pbnN0cnVtZW50LmggYi9zcmMvaW5jbHVkZS9l eGVjdXRvci9pbnN0cnVtZW50LmgKaW5kZXggZTU2N2NkNjkxYjQuLmNlOGQ5NTg5MzYzIDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9pbnN0cnVtZW50LmgKKysrIGIvc3JjL2luY2x1 ZGUvZXhlY3V0b3IvaW5zdHJ1bWVudC5oCkBAIC0yODMsNiArMjgzLDExIEBAIGV4dGVybiB2b2lk IEluc3RyVXBkYXRlVHVwbGVDb3VudChOb2RlSW5zdHJ1bWVudGF0aW9uICppbnN0ciwgZG91Ymxl IG5UdXBsZXMpOwogZXh0ZXJuIHZvaWQgSW5zdHJFbmRMb29wKE5vZGVJbnN0cnVtZW50YXRpb24g Kmluc3RyKTsKIGV4dGVybiB2b2lkIEluc3RyQWdnTm9kZShOb2RlSW5zdHJ1bWVudGF0aW9uICpk c3QsIE5vZGVJbnN0cnVtZW50YXRpb24gKmFkZCk7CiAKK3R5cGVkZWYgc3RydWN0IFR1cGxlVGFi bGVTbG90IFR1cGxlVGFibGVTbG90OwordHlwZWRlZiBzdHJ1Y3QgUGxhblN0YXRlIFBsYW5TdGF0 ZTsKK3R5cGVkZWYgVHVwbGVUYWJsZVNsb3QgKigqRXhlY1Byb2NOb2RlTXRkKSAoUGxhblN0YXRl ICpwc3RhdGUpOworZXh0ZXJuIEV4ZWNQcm9jTm9kZU10ZCBJbnN0ck5vZGVTZXR1cEV4ZWNQcm9j Tm9kZShOb2RlSW5zdHJ1bWVudGF0aW9uICppbnN0cik7CisKIGV4dGVybiBUcmlnZ2VySW5zdHJ1 bWVudGF0aW9uICpJbnN0ckFsbG9jVHJpZ2dlcihpbnQgbiwgaW50IGluc3RydW1lbnRfb3B0aW9u cyk7CiBleHRlcm4gdm9pZCBJbnN0clN0YXJ0VHJpZ2dlcihUcmlnZ2VySW5zdHJ1bWVudGF0aW9u ICp0Z2luc3RyKTsKIGV4dGVybiB2b2lkIEluc3RyU3RvcFRyaWdnZXIoVHJpZ2dlckluc3RydW1l bnRhdGlvbiAqdGdpbnN0ciwgaW50IGZpcmluZ3MpOwotLSAKMi40Ny4xCgo= --000000000000c2e7d4064d33fd67--