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 1w61WC-003s0J-0K for pgsql-hackers@arkaria.postgresql.org; Fri, 27 Mar 2026 07:22:08 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w61WA-0083bt-1c for pgsql-hackers@arkaria.postgresql.org; Fri, 27 Mar 2026 07:22:06 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w61W9-0083bl-35 for pgsql-hackers@lists.postgresql.org; Fri, 27 Mar 2026 07:22:06 +0000 Received: from mail-qv1-xf32.google.com ([2607:f8b0:4864:20::f32]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w61W5-00000001R9Q-49Y0 for pgsql-hackers@lists.postgresql.org; Fri, 27 Mar 2026 07:22:06 +0000 Received: by mail-qv1-xf32.google.com with SMTP id 6a1803df08f44-89c4468686dso23702896d6.3 for ; Fri, 27 Mar 2026 00:22:02 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1774596120; cv=none; d=google.com; s=arc-20240605; b=iA93//hZa68qJjYNpVzuC1hLpD48GIifRc+h6Y46/Q97s7AhRrp1YWWttYruBtvvQZ M8yo0As3mjDnlWME9CmRkswnYgRWZW+xHHZkILCsrbN6/FE/fpVb/IVtnapWzk/b0ryu LEN6e1l1phm4x1XBwBC9KEVJRJOJkermVjq2PiwAuCBcsJKy1Yf2Efa0pRn4FfSWHG+0 zHbvTkkzw8disR/xsz2XsXMexWVjjZ27mJbDUWG3ch6nYlT9d7JDFvZT0hi26KR8eYxJ cOi6Ssd5P3EqigZ3O6MnYyzDJpw2mEaAFMYUdBCV5p2cIYOnkMyZCeHWRehb575ycXxl OOIA== 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=3AQsgHXSsNs+c2AHb+APAClhnsnaz6JDDGOzeRGmnrs=; fh=BDmadvCkuuEMUKAQ/30N2fsEVu7ZpOB8lAkhWYCciik=; b=Zf8O8MC5Zvxkg36XFyB9G11fh/59fTEJqow45DxRiAFRFJmZo7vcBP7zJ2j1c2IwbJ o2EB1NInMxDs87FqlWYsOCHAdPMjsdvSEwUXsDw3GFUq9fO2dBRmysCTU/yPpMbylVaT KGXWiGvqhYgQMslGKDO/vjgXogB3RHz1OILvxeWfGW42SS80limq4eLpvdp5KRgESpJF ZkjW35M/m/49MvOF/GtjHMDcJLtFxjxm/hC4BD9q09r4NDhQuvrRGrxO0YbNDTjXzjuf jmNCUJMFvefDfzic1S86fH6B6HX5yH/uhjMRjSCpcz4rRKtI9Z7Eyalu0dsjgwuIx0fi N7rQ==; 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=1774596120; x=1775200920; 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=3AQsgHXSsNs+c2AHb+APAClhnsnaz6JDDGOzeRGmnrs=; b=HB1qs8q4k4kthUKaijAf160xUDBtvHlZTsTh12qdjEHhA99XqqNK44/pa9vGlahouc W4Pbz2O+wN7nDt5IciQ9C63AMfM+6RiiUerxoQFYg6TpTBzu7CI+7cOWainrha8F5+Tx eqXDjMlV6F2RqUKWpGRE6Uz0oYpV4+7fAudeI= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774596120; x=1775200920; 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=3AQsgHXSsNs+c2AHb+APAClhnsnaz6JDDGOzeRGmnrs=; b=E6HqtoIKjpvo6toxnO0bAsc/fNvO+zNkEhdf7R98mm8FJl9yMxJCTVF3ySnbrEDdf/ OaETtFqYJrAf/zQt5wy/qHsScASjJ0ArT359sewyTIoRjL7hEagApsPubk2uaH7ysJmG lTEloi7t7AnyAKZ0zdvCKIzwYyrscq/egjfvBCS8XSSFDD9gK+kIi1UiRuImxpf6HSuR 18M4KdO8QyfXvdOOBAzc39P932HiJH1Ne2qBJWrjh8l8L3zaiw9hOYQvpEgJq32F7b3F Q6HTQnYmOzWX0RMxgomUoJyNxQMp4i6F3ipwHzv/HQaxt2dbX3eRD+D+tagb6Ev/QUJz hpGA== X-Forwarded-Encrypted: i=1; AJvYcCXBvDai4HXcREUHoDSn7qwwpX9/nIKeG67D8o+3akNgvfd3pD6pN1AP8HnSjVs/x0i9o5Y7Xp+0EzUcwaH2@lists.postgresql.org X-Gm-Message-State: AOJu0Yz7kA8ME5Wo6nY6gNZgrqkISzFe8w7wcXIQZTM3lpsPV5NU0HNJ NfvLVZsu1HYHrntTIqVTgYlsPH6P7PvbxH8WlU1uO95NSdecNt9b7nCBVkcyqzHktjnpPDc7n2y uJXcxL05dOkYd9CBk6h+Dr+QG8Ohs6diCDxXaE15Q X-Gm-Gg: ATEYQzyv8P4krQTv2f0G47dNFWFf1q+Pnl7uqP9VRZf7lC3WLe/yOa0ZY0LStO6yE/9 Q2fMMOd1NNNYG2C/+2msc+huUMj2bTbsY4qxIBvxQD1O+OvVrdfryh5IyjKkmlLkqDhqhX6zqPi eTeub6xLJMD0f2TlQxv+rmqgBmtSLRCzSIgX5Uri678BI76KSG6U1lgmfMl9KiAWlEk0FFbfRjr sfGJqCRYA7Wzn86qyjwAvk6379Kl/WdesrLP5crZsKktbClcuMlrxFvbnUTOOc1scRvVtCcDHkU 0quWpQhPsADRav/IZANVDXFE0MNyj0hcyDPjMYfH X-Received: by 2002:a05:6214:212a:b0:899:ef7d:ce97 with SMTP id 6a1803df08f44-89ce8e8ec8cmr17577626d6.38.1774596120043; Fri, 27 Mar 2026 00:22:00 -0700 (PDT) MIME-Version: 1.0 References: <06086cb4-881b-4f5a-96af-f275220ff52d@vondra.me> In-Reply-To: From: Lukas Fittl Date: Fri, 27 Mar 2026 00:21:23 -0700 X-Gm-Features: AQROBzCu575oxRwOYf68HDYPo_i7ZpCkAjdDhMK6JJkr14O8eMToWRkVg1Dlgf8 Message-ID: Subject: Re: Stack-based tracking of per-node WAL/buffer usage To: Heikki Linnakangas Cc: Zsolt Parragi , Andres Freund , Tomas Vondra , PostgreSQL Hackers , Peter Smith Content-Type: multipart/mixed; boundary="0000000000005bb84b064dfc5b57" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000005bb84b064dfc5b57 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, Mar 25, 2026 at 5:41=E2=80=AFPM Lukas Fittl wrote= : > On Wed, Mar 25, 2026 at 3:47=E2=80=AFAM Heikki Linnakangas wrote: > > This patch could use an overview README file, I'm struggling to > > understand how the this all works. Here's my understanding so far, > > please correct me if I'm wrong: > > Sure, happy to put this together - I wonder where would place that > best - probably src/backend/executor/README.instrument ? I've gone ahead and added that in src/backend/executor/README.instrument for now, trying to take some of your prior email as inspiration, whilst not fully committing to describing it as a tree - but happy to revise that if we feel its important for clarity. See attached v11, rebased after the pgBufferUsage calls were moved in df09452c3209, and also fixing the issues that Zsolt noted in a previous email reviewing v10. I've also moved pg_session_buffer_usage to be a test_session_buffer_usage module instead, since its not intended as a user accessible module. If we wanted to commit that (not sure if its worth the cycles), we could potentially merge it with the 0004 commit that expands the main regression tests. Thanks, Lukas --=20 Lukas Fittl --0000000000005bb84b064dfc5b57 Content-Type: application/octet-stream; name="v11-0001-instrumentation-Separate-trigger-logic-from-othe.patch" Content-Disposition: attachment; filename="v11-0001-instrumentation-Separate-trigger-logic-from-othe.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mn8k89yc0 RnJvbSBhZWY3MmRhYTAyYjVjZDQ4ZGYzYjViYzEzMWE4N2Y1M2EzMDZiNjgwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpEYXRlOiBT YXQsIDEgTWFyIDIwMjUgMTk6MzE6MzAgLTA4MDAKU3ViamVjdDogW1BBVENIIHYxMSAxLzldIGlu c3RydW1lbnRhdGlvbjogU2VwYXJhdGUgdHJpZ2dlciBsb2dpYyBmcm9tIG90aGVyCiB1c2VzCgpJ bnRyb2R1Y2UgVHJpZ2dlckluc3RydW1lbnRhdGlvbiB0byBjYXB0dXJlIHRyaWdnZXIgdGltaW5n IGFuZCBmaXJpbmdzCihwcmV2aW91c2x5IGNvdW50ZWQgaW4gIm50dXBsZXMiKSwgdG8gYWlkIGEg ZnV0dXJlIHJlZmFjdG9yaW5nIHRoYXQKc3BsaXRzIG91dCBhbGwgSW5zdHJ1bWVudGF0aW9uIGZp ZWxkcyBiZXlvbmQgdGltaW5nIGFuZCBXQUwvYnVmZmVycyBpbnRvCm1vcmUgc3BlY2lmaWMgc3Ry dWN0cy4KCkF1dGhvcjogTHVrYXMgRml0dGwgPGx1a2FzQGZpdHRsLmNvbT4KUmV2aWV3ZWQtYnk6 CkRpc2N1c3Npb246Ci0tLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jICAgIHwgMTkg KysrKysrKystLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvdHJpZ2dlci5jICAgIHwg MjIgKysrKysrKysrKystLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4u YyAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2luc3RydW1lbnQuYyB8IDI2ICsrKysr KysrKysrKysrKysrKysrKysrKysrCiBzcmMvaW5jbHVkZS9leGVjdXRvci9pbnN0cnVtZW50Lmgg fCAxMiArKysrKysrKysrKysKIHNyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oICAgICB8ICAz ICsrLQogc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgIHwgIDEgKwogNyBmaWxlcyBj aGFuZ2VkLCA2MSBpbnNlcnRpb25zKCspLCAyNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBs YWluLmMKaW5kZXggZTRiNzAxNjZiMGUuLmViNmVmMjNjMmQ2IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9jb21tYW5kcy9leHBsYWluLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFp bi5jCkBAIC0xMTAxLDE4ICsxMTAxLDE1IEBAIHJlcG9ydF90cmlnZ2VycyhSZXN1bHRSZWxJbmZv ICpySW5mbywgYm9vbCBzaG93X3JlbG5hbWUsIEV4cGxhaW5TdGF0ZSAqZXMpCiAJZm9yIChudCA9 IDA7IG50IDwgckluZm8tPnJpX1RyaWdEZXNjLT5udW10cmlnZ2VyczsgbnQrKykKIAl7CiAJCVRy aWdnZXIgICAgKnRyaWcgPSBySW5mby0+cmlfVHJpZ0Rlc2MtPnRyaWdnZXJzICsgbnQ7Ci0JCUlu c3RydW1lbnRhdGlvbiAqaW5zdHIgPSBySW5mby0+cmlfVHJpZ0luc3RydW1lbnQgKyBudDsKKwkJ VHJpZ2dlckluc3RydW1lbnRhdGlvbiAqdGdpbnN0ciA9IHJJbmZvLT5yaV9UcmlnSW5zdHJ1bWVu dCArIG50OwogCQljaGFyCSAgICpyZWxuYW1lOwogCQljaGFyCSAgICpjb25uYW1lID0gTlVMTDsK IAotCQkvKiBNdXN0IGNsZWFuIHVwIGluc3RydW1lbnRhdGlvbiBzdGF0ZSAqLwotCQlJbnN0ckVu ZExvb3AoaW5zdHIpOwotCiAJCS8qCiAJCSAqIFdlIGlnbm9yZSB0cmlnZ2VycyB0aGF0IHdlcmUg bmV2ZXIgaW52b2tlZDsgdGhleSBsaWtlbHkgYXJlbid0CiAJCSAqIHJlbGV2YW50IHRvIHRoZSBj dXJyZW50IHF1ZXJ5IHR5cGUuCiAJCSAqLwotCQlpZiAoaW5zdHItPm50dXBsZXMgPT0gMCkKKwkJ aWYgKHRnaW5zdHItPmZpcmluZ3MgPT0gMCkKIAkJCWNvbnRpbnVlOwogCiAJCUV4cGxhaW5PcGVu R3JvdXAoIlRyaWdnZXIiLCBOVUxMLCB0cnVlLCBlcyk7CkBAIC0xMTM3LDExICsxMTM0LDExIEBA IHJlcG9ydF90cmlnZ2VycyhSZXN1bHRSZWxJbmZvICpySW5mbywgYm9vbCBzaG93X3JlbG5hbWUs IEV4cGxhaW5TdGF0ZSAqZXMpCiAJCQlpZiAoc2hvd19yZWxuYW1lKQogCQkJCWFwcGVuZFN0cmlu Z0luZm8oZXMtPnN0ciwgIiBvbiAlcyIsIHJlbG5hbWUpOwogCQkJaWYgKGVzLT50aW1pbmcpCi0J CQkJYXBwZW5kU3RyaW5nSW5mbyhlcy0+c3RyLCAiOiB0aW1lPSUuM2YgY2FsbHM9JS4wZlxuIiwK LQkJCQkJCQkJIElOU1RSX1RJTUVfR0VUX01JTExJU0VDKGluc3RyLT50b3RhbCksCi0JCQkJCQkJ CSBpbnN0ci0+bnR1cGxlcyk7CisJCQkJYXBwZW5kU3RyaW5nSW5mbyhlcy0+c3RyLCAiOiB0aW1l PSUuM2YgY2FsbHM9JWRcbiIsCisJCQkJCQkJCSBJTlNUUl9USU1FX0dFVF9NSUxMSVNFQyh0Z2lu c3RyLT5pbnN0ci50b3RhbCksCisJCQkJCQkJCSB0Z2luc3RyLT5maXJpbmdzKTsKIAkJCWVsc2UK LQkJCQlhcHBlbmRTdHJpbmdJbmZvKGVzLT5zdHIsICI6IGNhbGxzPSUuMGZcbiIsIGluc3RyLT5u dHVwbGVzKTsKKwkJCQlhcHBlbmRTdHJpbmdJbmZvKGVzLT5zdHIsICI6IGNhbGxzPSVkXG4iLCB0 Z2luc3RyLT5maXJpbmdzKTsKIAkJfQogCQllbHNlCiAJCXsKQEAgLTExNTEsOSArMTE0OCw5IEBA IHJlcG9ydF90cmlnZ2VycyhSZXN1bHRSZWxJbmZvICpySW5mbywgYm9vbCBzaG93X3JlbG5hbWUs IEV4cGxhaW5TdGF0ZSAqZXMpCiAJCQlFeHBsYWluUHJvcGVydHlUZXh0KCJSZWxhdGlvbiIsIHJl bG5hbWUsIGVzKTsKIAkJCWlmIChlcy0+dGltaW5nKQogCQkJCUV4cGxhaW5Qcm9wZXJ0eUZsb2F0 KCJUaW1lIiwgIm1zIiwKLQkJCQkJCQkJCSBJTlNUUl9USU1FX0dFVF9NSUxMSVNFQyhpbnN0ci0+ dG90YWwpLCAzLAorCQkJCQkJCQkJIElOU1RSX1RJTUVfR0VUX01JTExJU0VDKHRnaW5zdHItPmlu c3RyLnRvdGFsKSwgMywKIAkJCQkJCQkJCSBlcyk7Ci0JCQlFeHBsYWluUHJvcGVydHlGbG9hdCgi Q2FsbHMiLCBOVUxMLCBpbnN0ci0+bnR1cGxlcywgMCwgZXMpOworCQkJRXhwbGFpblByb3BlcnR5 SW50ZWdlcigiQ2FsbHMiLCBOVUxMLCB0Z2luc3RyLT5maXJpbmdzLCBlcyk7CiAJCX0KIAogCQlp ZiAoY29ubmFtZSkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RyaWdnZXIuYyBi L3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RyaWdnZXIuYwppbmRleCA2NTk2ODQzYThkOC4uMjliODBk NzUxNDMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RyaWdnZXIuYworKysgYi9z cmMvYmFja2VuZC9jb21tYW5kcy90cmlnZ2VyLmMKQEAgLTkyLDcgKzkyLDcgQEAgc3RhdGljIGJv b2wgVHJpZ2dlckVuYWJsZWQoRVN0YXRlICplc3RhdGUsIFJlc3VsdFJlbEluZm8gKnJlbGluZm8s CiBzdGF0aWMgSGVhcFR1cGxlIEV4ZWNDYWxsVHJpZ2dlckZ1bmMoVHJpZ2dlckRhdGEgKnRyaWdk YXRhLAogCQkJCQkJCQkJIGludCB0Z2luZHgsCiAJCQkJCQkJCQkgRm1nckluZm8gKmZpbmZvLAot CQkJCQkJCQkJIEluc3RydW1lbnRhdGlvbiAqaW5zdHIsCisJCQkJCQkJCQkgVHJpZ2dlckluc3Ry dW1lbnRhdGlvbiAqaW5zdHIsCiAJCQkJCQkJCQkgTWVtb3J5Q29udGV4dCBwZXJfdHVwbGVfY29u dGV4dCk7CiBzdGF0aWMgdm9pZCBBZnRlclRyaWdnZXJTYXZlRXZlbnQoRVN0YXRlICplc3RhdGUs IFJlc3VsdFJlbEluZm8gKnJlbGluZm8sCiAJCQkJCQkJCSAgUmVzdWx0UmVsSW5mbyAqc3JjX3Bh cnRpbmZvLApAQCAtMjMxMSw3ICsyMzExLDcgQEAgc3RhdGljIEhlYXBUdXBsZQogRXhlY0NhbGxU cmlnZ2VyRnVuYyhUcmlnZ2VyRGF0YSAqdHJpZ2RhdGEsCiAJCQkJCWludCB0Z2luZHgsCiAJCQkJ CUZtZ3JJbmZvICpmaW5mbywKLQkJCQkJSW5zdHJ1bWVudGF0aW9uICppbnN0ciwKKwkJCQkJVHJp Z2dlckluc3RydW1lbnRhdGlvbiAqaW5zdHIsCiAJCQkJCU1lbW9yeUNvbnRleHQgcGVyX3R1cGxl X2NvbnRleHQpCiB7CiAJTE9DQUxfRkNJTkZPKGZjaW5mbywgMCk7CkBAIC0yMzQ2LDcgKzIzNDYs NyBAQCBFeGVjQ2FsbFRyaWdnZXJGdW5jKFRyaWdnZXJEYXRhICp0cmlnZGF0YSwKIAkgKiBJZiBk b2luZyBFWFBMQUlOIEFOQUxZWkUsIHN0YXJ0IGNoYXJnaW5nIHRpbWUgdG8gdGhpcyB0cmlnZ2Vy LgogCSAqLwogCWlmIChpbnN0cikKLQkJSW5zdHJTdGFydE5vZGUoaW5zdHIgKyB0Z2luZHgpOwor CQlJbnN0clN0YXJ0VHJpZ2dlcihpbnN0ciArIHRnaW5keCk7CiAKIAkvKgogCSAqIERvIHRoZSBm dW5jdGlvbiBldmFsdWF0aW9uIGluIHRoZSBwZXItdHVwbGUgbWVtb3J5IGNvbnRleHQsIHNvIHRo YXQKQEAgLTIzOTEsMTAgKzIzOTEsMTAgQEAgRXhlY0NhbGxUcmlnZ2VyRnVuYyhUcmlnZ2VyRGF0 YSAqdHJpZ2RhdGEsCiAKIAkvKgogCSAqIElmIGRvaW5nIEVYUExBSU4gQU5BTFlaRSwgc3RvcCBj aGFyZ2luZyB0aW1lIHRvIHRoaXMgdHJpZ2dlciwgYW5kIGNvdW50Ci0JICogb25lICJ0dXBsZSBy ZXR1cm5lZCIgKHJlYWxseSB0aGUgbnVtYmVyIG9mIGZpcmluZ3MpLgorCSAqIHRoZSBmaXJpbmcg b2YgdGhlIHRyaWdnZXIuCiAJICovCiAJaWYgKGluc3RyKQotCQlJbnN0clN0b3BOb2RlKGluc3Ry ICsgdGdpbmR4LCAxKTsKKwkJSW5zdHJTdG9wVHJpZ2dlcihpbnN0ciArIHRnaW5keCwgMSk7CiAK IAlyZXR1cm4gKEhlYXBUdXBsZSkgRGF0dW1HZXRQb2ludGVyKHJlc3VsdCk7CiB9CkBAIC0zOTM4 LDcgKzM5MzgsNyBAQCBzdGF0aWMgdm9pZCBBZnRlclRyaWdnZXJFeGVjdXRlKEVTdGF0ZSAqZXN0 YXRlLAogCQkJCQkJCQlSZXN1bHRSZWxJbmZvICpkc3RfcmVsSW5mbywKIAkJCQkJCQkJVHJpZ2dl ckRlc2MgKnRyaWdkZXNjLAogCQkJCQkJCQlGbWdySW5mbyAqZmluZm8sCi0JCQkJCQkJCUluc3Ry dW1lbnRhdGlvbiAqaW5zdHIsCisJCQkJCQkJCVRyaWdnZXJJbnN0cnVtZW50YXRpb24gKmluc3Ry LAogCQkJCQkJCQlNZW1vcnlDb250ZXh0IHBlcl90dXBsZV9jb250ZXh0LAogCQkJCQkJCQlUdXBs ZVRhYmxlU2xvdCAqdHJpZ190dXBsZV9zbG90MSwKIAkJCQkJCQkJVHVwbGVUYWJsZVNsb3QgKnRy aWdfdHVwbGVfc2xvdDIpOwpAQCAtNDMzMiw3ICs0MzMyLDcgQEAgQWZ0ZXJUcmlnZ2VyRXhlY3V0 ZShFU3RhdGUgKmVzdGF0ZSwKIAkJCQkJUmVzdWx0UmVsSW5mbyAqc3JjX3JlbEluZm8sCiAJCQkJ CVJlc3VsdFJlbEluZm8gKmRzdF9yZWxJbmZvLAogCQkJCQlUcmlnZ2VyRGVzYyAqdHJpZ2Rlc2Ms Ci0JCQkJCUZtZ3JJbmZvICpmaW5mbywgSW5zdHJ1bWVudGF0aW9uICppbnN0ciwKKwkJCQkJRm1n ckluZm8gKmZpbmZvLCBUcmlnZ2VySW5zdHJ1bWVudGF0aW9uICppbnN0ciwKIAkJCQkJTWVtb3J5 Q29udGV4dCBwZXJfdHVwbGVfY29udGV4dCwKIAkJCQkJVHVwbGVUYWJsZVNsb3QgKnRyaWdfdHVw bGVfc2xvdDEsCiAJCQkJCVR1cGxlVGFibGVTbG90ICp0cmlnX3R1cGxlX3Nsb3QyKQpAQCAtNDM3 Myw3ICs0MzczLDcgQEAgQWZ0ZXJUcmlnZ2VyRXhlY3V0ZShFU3RhdGUgKmVzdGF0ZSwKIAkgKiB0 byBpbmNsdWRlIHRpbWUgc3BlbnQgcmUtZmV0Y2hpbmcgdHVwbGVzIGluIHRoZSB0cmlnZ2VyIGNv c3QuCiAJICovCiAJaWYgKGluc3RyKQotCQlJbnN0clN0YXJ0Tm9kZShpbnN0ciArIHRnaW5keCk7 CisJCUluc3RyU3RhcnRUcmlnZ2VyKGluc3RyICsgdGdpbmR4KTsKIAogCS8qCiAJICogRmV0Y2gg dGhlIHJlcXVpcmVkIHR1cGxlKHMpLgpAQCAtNDU5MCwxMCArNDU5MCwxMCBAQCBBZnRlclRyaWdn ZXJFeGVjdXRlKEVTdGF0ZSAqZXN0YXRlLAogCiAJLyoKIAkgKiBJZiBkb2luZyBFWFBMQUlOIEFO QUxZWkUsIHN0b3AgY2hhcmdpbmcgdGltZSB0byB0aGlzIHRyaWdnZXIsIGFuZCBjb3VudAotCSAq IG9uZSAidHVwbGUgcmV0dXJuZWQiIChyZWFsbHkgdGhlIG51bWJlciBvZiBmaXJpbmdzKS4KKwkg KiB0aGUgZmlyaW5nIG9mIHRoZSB0cmlnZ2VyLgogCSAqLwogCWlmIChpbnN0cikKLQkJSW5zdHJT dG9wTm9kZShpbnN0ciArIHRnaW5keCwgMSk7CisJCUluc3RyU3RvcFRyaWdnZXIoaW5zdHIgKyB0 Z2luZHgsIDEpOwogfQogCiAKQEAgLTQ3MDksNyArNDcwOSw3IEBAIGFmdGVyVHJpZ2dlckludm9r ZUV2ZW50cyhBZnRlclRyaWdnZXJFdmVudExpc3QgKmV2ZW50cywKIAlSZWxhdGlvbglyZWwgPSBO VUxMOwogCVRyaWdnZXJEZXNjICp0cmlnZGVzYyA9IE5VTEw7CiAJRm1nckluZm8gICAqZmluZm8g PSBOVUxMOwotCUluc3RydW1lbnRhdGlvbiAqaW5zdHIgPSBOVUxMOworCVRyaWdnZXJJbnN0cnVt ZW50YXRpb24gKmluc3RyID0gTlVMTDsKIAlUdXBsZVRhYmxlU2xvdCAqc2xvdDEgPSBOVUxMLAog CQkJICAgKnNsb3QyID0gTlVMTDsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZXhlY01haW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKaW5kZXggNThiODQ5 NTVjMmIuLjUzNjMxMTYzZGQ2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVj TWFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKQEAgLTEyODUsNyAr MTI4NSw3IEBAIEluaXRSZXN1bHRSZWxJbmZvKFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8s CiAJCXJlc3VsdFJlbEluZm8tPnJpX1RyaWdXaGVuRXhwcnMgPSAoRXhwclN0YXRlICoqKQogCQkJ cGFsbG9jMF9hcnJheShFeHByU3RhdGUgKiwgbik7CiAJCWlmIChpbnN0cnVtZW50X29wdGlvbnMp Ci0JCQlyZXN1bHRSZWxJbmZvLT5yaV9UcmlnSW5zdHJ1bWVudCA9IEluc3RyQWxsb2MobiwgaW5z dHJ1bWVudF9vcHRpb25zLCBmYWxzZSk7CisJCQlyZXN1bHRSZWxJbmZvLT5yaV9UcmlnSW5zdHJ1 bWVudCA9IEluc3RyQWxsb2NUcmlnZ2VyKG4sIGluc3RydW1lbnRfb3B0aW9ucyk7CiAJfQogCWVs c2UKIAl7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9pbnN0cnVtZW50LmMgYi9z cmMvYmFja2VuZC9leGVjdXRvci9pbnN0cnVtZW50LmMKaW5kZXggYTQwNjEwYmMyNTIuLjkzNTRh ZDdiZTEyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9pbnN0cnVtZW50LmMKKysr IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvaW5zdHJ1bWVudC5jCkBAIC0xOTYsNiArMTk2LDMyIEBA IEluc3RyQWdnTm9kZShJbnN0cnVtZW50YXRpb24gKmRzdCwgSW5zdHJ1bWVudGF0aW9uICphZGQp CiAJCVdhbFVzYWdlQWRkKCZkc3QtPndhbHVzYWdlLCAmYWRkLT53YWx1c2FnZSk7CiB9CiAKKy8q IFRyaWdnZXIgaW5zdHJ1bWVudGF0aW9uIGhhbmRsaW5nICovCitUcmlnZ2VySW5zdHJ1bWVudGF0 aW9uICoKK0luc3RyQWxsb2NUcmlnZ2VyKGludCBuLCBpbnQgaW5zdHJ1bWVudF9vcHRpb25zKQor eworCVRyaWdnZXJJbnN0cnVtZW50YXRpb24gKnRnaW5zdHIgPSBwYWxsb2MwKG4gKiBzaXplb2Yo VHJpZ2dlckluc3RydW1lbnRhdGlvbikpOworCWludAkJCWk7CisKKwlmb3IgKGkgPSAwOyBpIDwg bjsgaSsrKQorCQlJbnN0ckluaXQoJnRnaW5zdHJbaV0uaW5zdHIsIGluc3RydW1lbnRfb3B0aW9u cyk7CisKKwlyZXR1cm4gdGdpbnN0cjsKK30KKwordm9pZAorSW5zdHJTdGFydFRyaWdnZXIoVHJp Z2dlckluc3RydW1lbnRhdGlvbiAqdGdpbnN0cikKK3sKKwlJbnN0clN0YXJ0Tm9kZSgmdGdpbnN0 ci0+aW5zdHIpOworfQorCit2b2lkCitJbnN0clN0b3BUcmlnZ2VyKFRyaWdnZXJJbnN0cnVtZW50 YXRpb24gKnRnaW5zdHIsIGludCBmaXJpbmdzKQoreworCUluc3RyU3RvcE5vZGUoJnRnaW5zdHIt Pmluc3RyLCAwKTsKKwl0Z2luc3RyLT5maXJpbmdzICs9IGZpcmluZ3M7Cit9CisKIC8qIG5vdGUg Y3VycmVudCB2YWx1ZXMgZHVyaW5nIHBhcmFsbGVsIGV4ZWN1dG9yIHN0YXJ0dXAgKi8KIHZvaWQK IEluc3RyU3RhcnRQYXJhbGxlbFF1ZXJ5KHZvaWQpCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9l eGVjdXRvci9pbnN0cnVtZW50LmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9pbnN0cnVtZW50LmgK aW5kZXggOTc1OWYzZWE1ZDguLmE5YzIyMzMyMjdmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9l eGVjdXRvci9pbnN0cnVtZW50LmgKKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvaW5zdHJ1bWVu dC5oCkBAIC0xMDAsNiArMTAwLDEzIEBAIHR5cGVkZWYgc3RydWN0IFdvcmtlckluc3RydW1lbnRh dGlvbgogCUluc3RydW1lbnRhdGlvbiBpbnN0cnVtZW50W0ZMRVhJQkxFX0FSUkFZX01FTUJFUl07 CiB9IFdvcmtlckluc3RydW1lbnRhdGlvbjsKIAordHlwZWRlZiBzdHJ1Y3QgVHJpZ2dlckluc3Ry dW1lbnRhdGlvbgoreworCUluc3RydW1lbnRhdGlvbiBpbnN0cjsKKwlpbnQJCQlmaXJpbmdzOwkJ LyogbnVtYmVyIG9mIHRpbWVzIHRoZSBpbnN0cnVtZW50ZWQgdHJpZ2dlcgorCQkJCQkJCQkgKiB3 YXMgZmlyZWQgKi8KK30gVHJpZ2dlckluc3RydW1lbnRhdGlvbjsKKwogZXh0ZXJuIFBHRExMSU1Q T1JUIEJ1ZmZlclVzYWdlIHBnQnVmZmVyVXNhZ2U7CiBleHRlcm4gUEdETExJTVBPUlQgV2FsVXNh Z2UgcGdXYWxVc2FnZTsKIApAQCAtMTExLDYgKzExOCwxMSBAQCBleHRlcm4gdm9pZCBJbnN0clN0 b3BOb2RlKEluc3RydW1lbnRhdGlvbiAqaW5zdHIsIGRvdWJsZSBuVHVwbGVzKTsKIGV4dGVybiB2 b2lkIEluc3RyVXBkYXRlVHVwbGVDb3VudChJbnN0cnVtZW50YXRpb24gKmluc3RyLCBkb3VibGUg blR1cGxlcyk7CiBleHRlcm4gdm9pZCBJbnN0ckVuZExvb3AoSW5zdHJ1bWVudGF0aW9uICppbnN0 cik7CiBleHRlcm4gdm9pZCBJbnN0ckFnZ05vZGUoSW5zdHJ1bWVudGF0aW9uICpkc3QsIEluc3Ry dW1lbnRhdGlvbiAqYWRkKTsKKworZXh0ZXJuIFRyaWdnZXJJbnN0cnVtZW50YXRpb24gKkluc3Ry QWxsb2NUcmlnZ2VyKGludCBuLCBpbnQgaW5zdHJ1bWVudF9vcHRpb25zKTsKK2V4dGVybiB2b2lk IEluc3RyU3RhcnRUcmlnZ2VyKFRyaWdnZXJJbnN0cnVtZW50YXRpb24gKnRnaW5zdHIpOworZXh0 ZXJuIHZvaWQgSW5zdHJTdG9wVHJpZ2dlcihUcmlnZ2VySW5zdHJ1bWVudGF0aW9uICp0Z2luc3Ry LCBpbnQgZmlyaW5ncyk7CisKIGV4dGVybiB2b2lkIEluc3RyU3RhcnRQYXJhbGxlbFF1ZXJ5KHZv aWQpOwogZXh0ZXJuIHZvaWQgSW5zdHJFbmRQYXJhbGxlbFF1ZXJ5KEJ1ZmZlclVzYWdlICpidWZ1 c2FnZSwgV2FsVXNhZ2UgKndhbHVzYWdlKTsKIGV4dGVybiB2b2lkIEluc3RyQWNjdW1QYXJhbGxl bFF1ZXJ5KEJ1ZmZlclVzYWdlICpidWZ1c2FnZSwgV2FsVXNhZ2UgKndhbHVzYWdlKTsKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMv ZXhlY25vZGVzLmgKaW5kZXggNjg0ZTM5OGY4MjQuLjE3ODIyOWM1YzQ0IDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVj bm9kZXMuaApAQCAtNTksNiArNTksNyBAQCB0eXBlZGVmIHN0cnVjdCBTY2FuS2V5RGF0YSBTY2Fu S2V5RGF0YTsKIHR5cGVkZWYgc3RydWN0IFNuYXBzaG90RGF0YSAqU25hcHNob3Q7CiB0eXBlZGVm IHN0cnVjdCBTb3J0U3VwcG9ydERhdGEgKlNvcnRTdXBwb3J0OwogdHlwZWRlZiBzdHJ1Y3QgVElE Qml0bWFwIFRJREJpdG1hcDsKK3R5cGVkZWYgc3RydWN0IFRyaWdnZXJJbnN0cnVtZW50YXRpb24g VHJpZ2dlckluc3RydW1lbnRhdGlvbjsKIHR5cGVkZWYgc3RydWN0IFR1cGxlQ29udmVyc2lvbk1h cCBUdXBsZUNvbnZlcnNpb25NYXA7CiB0eXBlZGVmIHN0cnVjdCBUdXBsZURlc2NEYXRhICpUdXBs ZURlc2M7CiB0eXBlZGVmIHN0cnVjdCBUdXBsZXNvcnRzdGF0ZSBUdXBsZXNvcnRzdGF0ZTsKQEAg LTUzMyw3ICs1MzQsNyBAQCB0eXBlZGVmIHN0cnVjdCBSZXN1bHRSZWxJbmZvCiAJRXhwclN0YXRl ICoqcmlfVHJpZ1doZW5FeHByczsKIAogCS8qIG9wdGlvbmFsIHJ1bnRpbWUgbWVhc3VyZW1lbnRz IGZvciB0cmlnZ2VycyAqLwotCUluc3RydW1lbnRhdGlvbiAqcmlfVHJpZ0luc3RydW1lbnQ7CisJ VHJpZ2dlckluc3RydW1lbnRhdGlvbiAqcmlfVHJpZ0luc3RydW1lbnQ7CiAKIAkvKiBPbi1kZW1h bmQgY3JlYXRlZCBzbG90cyBmb3IgdHJpZ2dlcnMgLyByZXR1cm5pbmcgcHJvY2Vzc2luZyAqLwog CVR1cGxlVGFibGVTbG90ICpyaV9SZXR1cm5pbmdTbG90OwkvKiBmb3IgdHJpZ2dlciBvdXRwdXQg dHVwbGVzICovCmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCBi L3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CmluZGV4IDcxMmQ4NDEyOGNhLi5mNzc4 YzI4MzAzNCAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKKysr IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKQEAgLTMxOTYsNiArMzE5Niw3IEBA IFRyaWdnZXJEZXNjCiBUcmlnZ2VyRXZlbnQKIFRyaWdnZXJGbGFncwogVHJpZ2dlckluZm8KK1Ry aWdnZXJJbnN0cnVtZW50YXRpb24KIFRyaWdnZXJUcmFuc2l0aW9uCiBUcnVuY2F0ZVN0bXQKIFRz bVJvdXRpbmUKLS0gCjIuNDcuMQoK --0000000000005bb84b064dfc5b57 Content-Type: application/octet-stream; name="v11-0003-instrumentation-Replace-direct-changes-of-pgBuff.patch" Content-Disposition: attachment; filename="v11-0003-instrumentation-Replace-direct-changes-of-pgBuff.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mn8k89yk2 RnJvbSA3NzkwYTZiNWE4MWNjMTlkM2YxYzgxMmI5MTE3MGY2MjJjY2EwOGY0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpEYXRlOiBU aHUsIDI2IE1hciAyMDI2IDIzOjMxOjA0IC0wNzAwClN1YmplY3Q6IFtQQVRDSCB2MTEgMy85XSBp bnN0cnVtZW50YXRpb246IFJlcGxhY2UgZGlyZWN0IGNoYW5nZXMgb2YKIHBnQnVmZmVyVXNhZ2Uv cGdXYWxVc2FnZSB3aXRoIElOU1RSXyogbWFjcm9zCgpUaGlzIGVuY2Fwc3VsYXRlcyB0aGUgb3du ZXJzaGlwIG9mIHRoZXNlIGdsb2JhbHMgYmV0dGVyLCBhbmQgd2lsbCBhbGxvdwphIHN1YnNlcXVl bnQgcmVmYWN0b3JpbmcuCgpBdXRob3I6IEx1a2FzIEZpdHRsIDxsdWthc0BmaXR0bC5jb20+ClJl dmlld2VkLWJ5OiBBbmRyZXMgRnJldW5kIDxhbmRyZXNAYW5hcmF6ZWwuZGU+ClJldmlld2VkLWJ5 OiBac29sdCBQYXJyYWdpIDx6c29sdC5wYXJyYWdpQHBlcmNvbmEuY29tPgpEaXNjdXNzaW9uOiBo dHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9tZXNzYWdlLWlkL2ZsYXQvQ0FQNTNQa3paM1VvdG5S cnJuWFdBdiUzREY0YXZScTlNUTh6VSUyQmJ4b045dHBvdkV1NmZHUSU0MG1haWwuZ21haWwuY29t I2ZjNzE0MGU4YWYyMWUwN2E5MGEwOWQ3ZTc2YjMwMGM0Ci0tLQogc3JjL2JhY2tlbmQvYWNjZXNz L3RyYW5zYW0veGxvZy5jICAgICAgfCAxMCArKysrKy0tLS0tCiBzcmMvYmFja2VuZC9zdG9yYWdl L2J1ZmZlci9idWZtZ3IuYyAgICB8IDIwICsrKysrKysrKystLS0tLS0tLS0tCiBzcmMvYmFja2Vu ZC9zdG9yYWdlL2J1ZmZlci9sb2NhbGJ1Zi5jICB8ICA2ICsrKy0tLQogc3JjL2JhY2tlbmQvc3Rv cmFnZS9maWxlL2J1ZmZpbGUuYyAgICAgfCAgOCArKysrLS0tLQogc3JjL2JhY2tlbmQvdXRpbHMv YWN0aXZpdHkvcGdzdGF0X2lvLmMgfCAgOCArKysrLS0tLQogc3JjL2luY2x1ZGUvZXhlY3V0b3Iv aW5zdHJ1bWVudC5oICAgICAgfCAxOSArKysrKysrKysrKysrKysrKysrCiA2IGZpbGVzIGNoYW5n ZWQsIDQ1IGluc2VydGlvbnMoKyksIDI2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2Ft L3hsb2cuYwppbmRleCBmNWM5YTM0Mzc0ZC4uOWIzMzU4NGY0NTQgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJh bnNhbS94bG9nLmMKQEAgLTEwODEsMTAgKzEwODEsMTAgQEAgWExvZ0luc2VydFJlY29yZChYTG9n UmVjRGF0YSAqcmRhdGEsCiAJLyogUmVwb3J0IFdBTCB0cmFmZmljIHRvIHRoZSBpbnN0cnVtZW50 YXRpb24uICovCiAJaWYgKGluc2VydGVkKQogCXsKLQkJcGdXYWxVc2FnZS53YWxfYnl0ZXMgKz0g cmVjaGRyLT54bF90b3RfbGVuOwotCQlwZ1dhbFVzYWdlLndhbF9yZWNvcmRzKys7Ci0JCXBnV2Fs VXNhZ2Uud2FsX2ZwaSArPSBudW1fZnBpOwotCQlwZ1dhbFVzYWdlLndhbF9mcGlfYnl0ZXMgKz0g ZnBpX2J5dGVzOworCQlJTlNUUl9XQUxVU0FHRV9BREQod2FsX2J5dGVzLCByZWNoZHItPnhsX3Rv dF9sZW4pOworCQlJTlNUUl9XQUxVU0FHRV9JTkNSKHdhbF9yZWNvcmRzKTsKKwkJSU5TVFJfV0FM VVNBR0VfQUREKHdhbF9mcGksIG51bV9mcGkpOworCQlJTlNUUl9XQUxVU0FHRV9BREQod2FsX2Zw aV9ieXRlcywgZnBpX2J5dGVzKTsKIAogCQkvKiBSZXF1aXJlZCBmb3IgdGhlIGZsdXNoIG9mIHBl bmRpbmcgc3RhdHMgV0FMIGRhdGEgKi8KIAkJcGdzdGF0X3JlcG9ydF9maXhlZCA9IHRydWU7CkBA IC0yMDYzLDcgKzIwNjMsNyBAQCBBZHZhbmNlWExJbnNlcnRCdWZmZXIoWExvZ1JlY1B0ciB1cHRv LCBUaW1lTGluZUlEIHRsaSwgYm9vbCBvcHBvcnR1bmlzdGljKQogCQkJCQlXcml0ZVJxc3QuRmx1 c2ggPSBJbnZhbGlkWExvZ1JlY1B0cjsKIAkJCQkJWExvZ1dyaXRlKFdyaXRlUnFzdCwgdGxpLCBm YWxzZSk7CiAJCQkJCUxXTG9ja1JlbGVhc2UoV0FMV3JpdGVMb2NrKTsKLQkJCQkJcGdXYWxVc2Fn ZS53YWxfYnVmZmVyc19mdWxsKys7CisJCQkJCUlOU1RSX1dBTFVTQUdFX0lOQ1Iod2FsX2J1ZmZl cnNfZnVsbCk7CiAJCQkJCVRSQUNFX1BPU1RHUkVTUUxfV0FMX0JVRkZFUl9XUklURV9ESVJUWV9E T05FKCk7CiAKIAkJCQkJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVy L2J1Zm1nci5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvYnVmbWdyLmMKaW5kZXggZTIx MmY2MTEwZjIuLmNlMWFmNGFkNTYzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2J1 ZmZlci9idWZtZ3IuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZtZ3IuYwpA QCAtODQwLDcgKzg0MCw3IEBAIFJlYWRSZWNlbnRCdWZmZXIoUmVsRmlsZUxvY2F0b3IgcmxvY2F0 b3IsIEZvcmtOdW1iZXIgZm9ya051bSwgQmxvY2tOdW1iZXIgYmxvY2tOCiAJCXsKIAkJCVBpbkxv Y2FsQnVmZmVyKGJ1ZkhkciwgdHJ1ZSk7CiAKLQkJCXBnQnVmZmVyVXNhZ2UubG9jYWxfYmxrc19o aXQrKzsKKwkJCUlOU1RSX0JVRlVTQUdFX0lOQ1IobG9jYWxfYmxrc19oaXQpOwogCiAJCQlyZXR1 cm4gdHJ1ZTsKIAkJfQpAQCAtODYxLDcgKzg2MSw3IEBAIFJlYWRSZWNlbnRCdWZmZXIoUmVsRmls ZUxvY2F0b3IgcmxvY2F0b3IsIEZvcmtOdW1iZXIgZm9ya051bSwgQmxvY2tOdW1iZXIgYmxvY2tO CiAJCXsKIAkJCWlmIChCdWZmZXJUYWdzRXF1YWwoJnRhZywgJmJ1Zkhkci0+dGFnKSkKIAkJCXsK LQkJCQlwZ0J1ZmZlclVzYWdlLnNoYXJlZF9ibGtzX2hpdCsrOworCQkJCUlOU1RSX0JVRlVTQUdF X0lOQ1Ioc2hhcmVkX2Jsa3NfaGl0KTsKIAkJCQlyZXR1cm4gdHJ1ZTsKIAkJCX0KIAkJCVVucGlu QnVmZmVyKGJ1Zkhkcik7CkBAIC0xNzE2LDkgKzE3MTYsOSBAQCBUcmFja0J1ZmZlckhpdChJT09i amVjdCBpb19vYmplY3QsIElPQ29udGV4dCBpb19jb250ZXh0LAogCQkJCQkJCQkJICB0cnVlKTsK IAogCWlmIChwZXJzaXN0ZW5jZSA9PSBSRUxQRVJTSVNURU5DRV9URU1QKQotCQlwZ0J1ZmZlclVz YWdlLmxvY2FsX2Jsa3NfaGl0ICs9IDE7CisJCUlOU1RSX0JVRlVTQUdFX0lOQ1IobG9jYWxfYmxr c19oaXQpOwogCWVsc2UKLQkJcGdCdWZmZXJVc2FnZS5zaGFyZWRfYmxrc19oaXQgKz0gMTsKKwkJ SU5TVFJfQlVGVVNBR0VfSU5DUihzaGFyZWRfYmxrc19oaXQpOwogCiAJcGdzdGF0X2NvdW50X2lv X29wKGlvX29iamVjdCwgaW9fY29udGV4dCwgSU9PUF9ISVQsIDEsIDApOwogCkBAIC0yMDkyLDkg KzIwOTIsOSBAQCBBc3luY1JlYWRCdWZmZXJzKFJlYWRCdWZmZXJzT3BlcmF0aW9uICpvcGVyYXRp b24sIGludCAqbmJsb2Nrc19wcm9ncmVzcykKIAkJCQkJCQlpb19zdGFydCwgMSwgaW9fYnVmZmVy c19sZW4gKiBCTENLU1opOwogCiAJaWYgKHBlcnNpc3RlbmNlID09IFJFTFBFUlNJU1RFTkNFX1RF TVApCi0JCXBnQnVmZmVyVXNhZ2UubG9jYWxfYmxrc19yZWFkICs9IGlvX2J1ZmZlcnNfbGVuOwor CQlJTlNUUl9CVUZVU0FHRV9BREQobG9jYWxfYmxrc19yZWFkLCBpb19idWZmZXJzX2xlbik7CiAJ ZWxzZQotCQlwZ0J1ZmZlclVzYWdlLnNoYXJlZF9ibGtzX3JlYWQgKz0gaW9fYnVmZmVyc19sZW47 CisJCUlOU1RSX0JVRlVTQUdFX0FERChzaGFyZWRfYmxrc19yZWFkLCBpb19idWZmZXJzX2xlbik7 CiAKIAkvKgogCSAqIFRyYWNrIHZhY3V1bSBjb3N0IHdoZW4gaXNzdWluZyBJTywgbm90IGFmdGVy IHdhaXRpbmcgZm9yIGl0LiBPdGhlcndpc2UKQEAgLTI5ODEsNyArMjk4MSw3IEBAIEV4dGVuZEJ1 ZmZlcmVkUmVsU2hhcmVkKEJ1ZmZlck1hbmFnZXJSZWxhdGlvbiBibXIsCiAJCVRlcm1pbmF0ZUJ1 ZmZlcklPKGJ1Zl9oZHIsIGZhbHNlLCBCTV9WQUxJRCwgdHJ1ZSwgZmFsc2UpOwogCX0KIAotCXBn QnVmZmVyVXNhZ2Uuc2hhcmVkX2Jsa3Nfd3JpdHRlbiArPSBleHRlbmRfYnk7CisJSU5TVFJfQlVG VVNBR0VfQUREKHNoYXJlZF9ibGtzX3dyaXR0ZW4sIGV4dGVuZF9ieSk7CiAKIAkqZXh0ZW5kZWRf YnkgPSBleHRlbmRfYnk7CiAKQEAgLTMxMjcsNyArMzEyNyw3IEBAIE1hcmtCdWZmZXJEaXJ0eShC dWZmZXIgYnVmZmVyKQogCSAqLwogCWlmICghKG9sZF9idWZfc3RhdGUgJiBCTV9ESVJUWSkpCiAJ ewotCQlwZ0J1ZmZlclVzYWdlLnNoYXJlZF9ibGtzX2RpcnRpZWQrKzsKKwkJSU5TVFJfQlVGVVNB R0VfSU5DUihzaGFyZWRfYmxrc19kaXJ0aWVkKTsKIAkJaWYgKFZhY3V1bUNvc3RBY3RpdmUpCiAJ CQlWYWN1dW1Db3N0QmFsYW5jZSArPSBWYWN1dW1Db3N0UGFnZURpcnR5OwogCX0KQEAgLTQ1NDIs NyArNDU0Miw3IEBAIEZsdXNoQnVmZmVyKEJ1ZmZlckRlc2MgKmJ1ZiwgU01nclJlbGF0aW9uIHJl bG4sIElPT2JqZWN0IGlvX29iamVjdCwKIAlwZ3N0YXRfY291bnRfaW9fb3BfdGltZShJT09CSkVD VF9SRUxBVElPTiwgaW9fY29udGV4dCwKIAkJCQkJCQlJT09QX1dSSVRFLCBpb19zdGFydCwgMSwg QkxDS1NaKTsKIAotCXBnQnVmZmVyVXNhZ2Uuc2hhcmVkX2Jsa3Nfd3JpdHRlbisrOworCUlOU1RS X0JVRlVTQUdFX0lOQ1Ioc2hhcmVkX2Jsa3Nfd3JpdHRlbik7CiAKIAkvKgogCSAqIE1hcmsgdGhl IGJ1ZmZlciBhcyBjbGVhbiBhbmQgZW5kIHRoZSBCTV9JT19JTl9QUk9HUkVTUyBzdGF0ZS4KQEAg LTU2ODUsNyArNTY4NSw3IEBAIE1hcmtTaGFyZWRCdWZmZXJEaXJ0eUhpbnQoQnVmZmVyIGJ1ZmZl 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 CmluZGV4IGIxMWQ2NDYzM2I1Li5kNDc2OWYzZGE3YiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv ZXhlY3V0b3IvaW5zdHJ1bWVudC5oCisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2luc3RydW1l bnQuaApAQCAtMTUzLDQgKzE1MywyMyBAQCBleHRlcm4gdm9pZCBCdWZmZXJVc2FnZUFjY3VtRGlm ZihCdWZmZXJVc2FnZSAqZHN0LAogZXh0ZXJuIHZvaWQgV2FsVXNhZ2VBY2N1bURpZmYoV2FsVXNh Z2UgKmRzdCwgY29uc3QgV2FsVXNhZ2UgKmFkZCwKIAkJCQkJCQkgIGNvbnN0IFdhbFVzYWdlICpz dWIpOwogCisjZGVmaW5lIElOU1RSX0JVRlVTQUdFX0lOQ1IoZmxkKSBkbyB7IFwKKwkJcGdCdWZm ZXJVc2FnZS5mbGQrKzsgXAorCX0gd2hpbGUoMCkKKyNkZWZpbmUgSU5TVFJfQlVGVVNBR0VfQURE KGZsZCx2YWwpIGRvIHsgXAorCQlwZ0J1ZmZlclVzYWdlLmZsZCArPSAodmFsKTsgXAorCX0gd2hp bGUoMCkKKyNkZWZpbmUgSU5TVFJfQlVGVVNBR0VfVElNRV9BREQoZmxkLHZhbCkgZG8geyBcCisJ SU5TVFJfVElNRV9BREQocGdCdWZmZXJVc2FnZS5mbGQsIHZhbCk7IFwKKwl9IHdoaWxlICgwKQor I2RlZmluZSBJTlNUUl9CVUZVU0FHRV9USU1FX0FDQ1VNX0RJRkYoZmxkLGVuZHZhbCxzdGFydHZh bCkgZG8geyBcCisJSU5TVFJfVElNRV9BQ0NVTV9ESUZGKHBnQnVmZmVyVXNhZ2UuZmxkLCBlbmR2 YWwsIHN0YXJ0dmFsKTsgXAorCX0gd2hpbGUgKDApCisjZGVmaW5lIElOU1RSX1dBTFVTQUdFX0lO Q1IoZmxkKSBkbyB7IFwKKwkJcGdXYWxVc2FnZS5mbGQrKzsgXAorCX0gd2hpbGUoMCkKKyNkZWZp bmUgSU5TVFJfV0FMVVNBR0VfQUREKGZsZCx2YWwpIGRvIHsgXAorCQlwZ1dhbFVzYWdlLmZsZCAr PSAodmFsKTsgXAorCX0gd2hpbGUoMCkKKwogI2VuZGlmCQkJCQkJCS8qIElOU1RSVU1FTlRfSCAq LwotLSAKMi40Ny4xCgo= --0000000000005bb84b064dfc5b57 Content-Type: application/octet-stream; name="v11-0002-instrumentation-Separate-per-node-logic-from-oth.patch" Content-Disposition: attachment; filename="v11-0002-instrumentation-Separate-per-node-logic-from-oth.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mn8k89yi1 RnJvbSBjMTRhY2I5NTA5ZWI2MDU1OTQ1OWQzNmM0YjA0NTgzNTg4NDI0M2M0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpEYXRlOiBT YXQsIDcgTWFyIDIwMjYgMDE6MTk6NTAgLTA4MDAKU3ViamVjdDogW1BBVENIIHYxMSAyLzldIGlu c3RydW1lbnRhdGlvbjogU2VwYXJhdGUgcGVyLW5vZGUgbG9naWMgZnJvbSBvdGhlcgogdXNlcwoK UHJldmlvdXNseSBkaWZmZXJlbnQgcGxhY2VzIChlLmcuIHF1ZXJ5ICJ0b3RhbCB0aW1lIikgd2Vy ZSByZXB1cnBvc2luZwp0aGUgSW5zdHJ1bWVudGF0aW9uIHN0cnVjdCBpbml0aWFsbHkgaW50cm9k dWNlZCBmb3IgY2FwdHVyaW5nIHBlci1ub2RlCnN0YXRpc3RpY3MgZHVyaW5nIGV4ZWN1dGlvbi4g VGhpcyBvdmVydXNlIG9mIHRoZSBzYW1lIHN0cnVjdCBpcyBjb25mdXNpbmcsCmUuZy4gYnkgY2x1 dHRlcmluZyBjYWxscyBvZiBJbnN0clN0YXJ0Tm9kZS9JbnN0clN0b3BOb2RlIGluIHVucmVsYXRl ZApjb2RlIHBhdGhzLCBhbmQgcHJldmVudHMgZnV0dXJlIHJlZmFjdG9yaW5ncy4KCkluc3RlYWQs IHNpbXBsaWZ5IHRoZSBJbnN0cnVtZW50YXRpb24gc3RydWN0IHRvIG9ubHkgdHJhY2sgdGltZSBh bmQKV0FML2J1ZmZlciB1c2FnZS4gU2ltaWxhcmx5LCBkcm9wIHRoZSB1c2Ugb2YgSW5zdHJFbmRM b29wIG91dHNpZGUgb2YKcGVyLW5vZGUgaW5zdHJ1bWVudGF0aW9uIC0gdGhlc2UgY2FsbHMgd2Vy ZSBhZGRlZCB3aXRob3V0IGFueSBhcHBhcmVudApiZW5lZml0IHNpbmNlIHRoZSByZWxldmFudCBm aWVsZHMgd2VyZSBuZXZlciByZWFkLgoKSW50cm9kdWNlIHRoZSBOb2RlSW5zdHJ1bWVudGF0aW9u IHN0cnVjdCB0byBjYXJyeSBmb3J3YXJkIHRoZSBwZXItbm9kZQppbnN0cnVtZW50YXRpb24gaW5m b3JtYXRpb24uIFdvcmtlckluc3RydW1lbnRhdGlvbiBpcyByZW5hbWVkIHRvCldvcmtlck5vZGVJ bnN0cnVtZW50YXRpb24gZm9yIGNsYXJpdHkuCgpJbiBwYXNzaW5nLCBkcm9wIHRoZSAibiIgYXJn dW1lbnQgdG8gSW5zdHJBbGxvYywgYXMgYWxsIHJlbWFpbmluZyBjYWxsZXJzCm5lZWQgZXhhY3Rs eSBvbmUgSW5zdHJ1bWVudGF0aW9uIHN0cnVjdC4KCkF1dGhvcjogTHVrYXMgRml0dGwgPGx1a2Fz QGZpdHRsLmNvbT4KUmV2aWV3ZWQtYnk6CkRpc2N1c3Npb246Ci0tLQogY29udHJpYi9hdXRvX2V4 cGxhaW4vYXV0b19leHBsYWluLmMgICAgICAgICAgIHwgICA4ICstCiAuLi4vcGdfc3RhdF9zdGF0 ZW1lbnRzL3BnX3N0YXRfc3RhdGVtZW50cy5jICAgfCAgIDggKy0KIGNvbnRyaWIvcG9zdGdyZXNf ZmR3L3Bvc3RncmVzX2Zkdy5jICAgICAgICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvY29tbWFu ZHMvZXhwbGFpbi5jICAgICAgICAgICAgICAgIHwgIDIwICstLQogc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY01haW4uYyAgICAgICAgICAgICAgIHwgICA4ICstCiBzcmMvYmFja2VuZC9leGVjdXRv ci9leGVjUGFyYWxsZWwuYyAgICAgICAgICAgfCAgMjQgKy0tCiBzcmMvYmFja2VuZC9leGVjdXRv ci9leGVjUHJvY25vZGUuYyAgICAgICAgICAgfCAgIDQgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9y L2luc3RydW1lbnQuYyAgICAgICAgICAgICB8IDE0MiArKysrKysrKysrKystLS0tLS0KIHNyYy9p bmNsdWRlL2V4ZWN1dG9yL2luc3RydW1lbnQuaCAgICAgICAgICAgICB8ICA2MCArKysrKy0tLQog c3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggICAgICAgICAgICAgICAgIHwgICA5ICstCiBz cmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCAgICAgICAgICAgICAgfCAgIDMgKy0KIDEx IGZpbGVzIGNoYW5nZWQsIDE3NCBpbnNlcnRpb25zKCspLCAxMTQgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvY29udHJpYi9hdXRvX2V4cGxhaW4vYXV0b19leHBsYWluLmMgYi9jb250cmliL2F1 dG9fZXhwbGFpbi9hdXRvX2V4cGxhaW4uYwppbmRleCBlODU2Y2QzNWE2Zi4uMzliZjI1NDNiNzAg MTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYXV0b19leHBsYWluL2F1dG9fZXhwbGFpbi5jCisrKyBiL2Nv bnRyaWIvYXV0b19leHBsYWluL2F1dG9fZXhwbGFpbi5jCkBAIC0zMTUsNyArMzE1LDcgQEAgZXhw bGFpbl9FeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQogCQkJ TWVtb3J5Q29udGV4dCBvbGRjeHQ7CiAKIAkJCW9sZGN4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hU byhxdWVyeURlc2MtPmVzdGF0ZS0+ZXNfcXVlcnlfY3h0KTsKLQkJCXF1ZXJ5RGVzYy0+dG90YWx0 aW1lID0gSW5zdHJBbGxvYygxLCBJTlNUUlVNRU5UX0FMTCwgZmFsc2UpOworCQkJcXVlcnlEZXNj LT50b3RhbHRpbWUgPSBJbnN0ckFsbG9jKElOU1RSVU1FTlRfQUxMKTsKIAkJCU1lbW9yeUNvbnRl eHRTd2l0Y2hUbyhvbGRjeHQpOwogCQl9CiAJfQpAQCAtMzgxLDEyICszODEsNiBAQCBleHBsYWlu X0V4ZWN1dG9yRW5kKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjKQogCQkgKi8KIAkJb2xkY3h0ID0gTWVt b3J5Q29udGV4dFN3aXRjaFRvKHF1ZXJ5RGVzYy0+ZXN0YXRlLT5lc19xdWVyeV9jeHQpOwogCi0J CS8qCi0JCSAqIE1ha2Ugc3VyZSBzdGF0cyBhY2N1bXVsYXRpb24gaXMgZG9uZS4gIChOb3RlOiBp dCdzIG9rYXkgaWYgc2V2ZXJhbAotCQkgKiBsZXZlbHMgb2YgaG9vayBhbGwgZG8gdGhpcy4pCi0J CSAqLwotCQlJbnN0ckVuZExvb3AocXVlcnlEZXNjLT50b3RhbHRpbWUpOwotCiAJCS8qIExvZyBw bGFuIGlmIGR1cmF0aW9uIGlzIGV4Y2VlZGVkLiAqLwogCQltc2VjID0gSU5TVFJfVElNRV9HRVRf TUlMTElTRUMocXVlcnlEZXNjLT50b3RhbHRpbWUtPnRvdGFsKTsKIAkJaWYgKG1zZWMgPj0gYXV0 b19leHBsYWluX2xvZ19taW5fZHVyYXRpb24pCmRpZmYgLS1naXQgYS9jb250cmliL3BnX3N0YXRf c3RhdGVtZW50cy9wZ19zdGF0X3N0YXRlbWVudHMuYyBiL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1l bnRzL3BnX3N0YXRfc3RhdGVtZW50cy5jCmluZGV4IDZjYjE0ODI0ZWMzLi4zZTc5MTA4ODQ2ZSAx MDA2NDQKLS0tIGEvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvcGdfc3RhdF9zdGF0ZW1lbnRz LmMKKysrIGIvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvcGdfc3RhdF9zdGF0ZW1lbnRzLmMK QEAgLTEwMjQsNyArMTAyNCw3IEBAIHBnc3NfRXhlY3V0b3JTdGFydChRdWVyeURlc2MgKnF1ZXJ5 RGVzYywgaW50IGVmbGFncykKIAkJCU1lbW9yeUNvbnRleHQgb2xkY3h0OwogCiAJCQlvbGRjeHQg PSBNZW1vcnlDb250ZXh0U3dpdGNoVG8ocXVlcnlEZXNjLT5lc3RhdGUtPmVzX3F1ZXJ5X2N4dCk7 Ci0JCQlxdWVyeURlc2MtPnRvdGFsdGltZSA9IEluc3RyQWxsb2MoMSwgSU5TVFJVTUVOVF9BTEws IGZhbHNlKTsKKwkJCXF1ZXJ5RGVzYy0+dG90YWx0aW1lID0gSW5zdHJBbGxvYyhJTlNUUlVNRU5U X0FMTCk7CiAJCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3h0KTsKIAkJfQogCX0KQEAgLTEw ODMsMTIgKzEwODMsNiBAQCBwZ3NzX0V4ZWN1dG9yRW5kKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjKQog CWlmIChxdWVyeUlkICE9IElOVDY0Q09OU1QoMCkgJiYgcXVlcnlEZXNjLT50b3RhbHRpbWUgJiYK IAkJcGdzc19lbmFibGVkKG5lc3RpbmdfbGV2ZWwpKQogCXsKLQkJLyoKLQkJICogTWFrZSBzdXJl IHN0YXRzIGFjY3VtdWxhdGlvbiBpcyBkb25lLiAgKE5vdGU6IGl0J3Mgb2theSBpZiBzZXZlcmFs Ci0JCSAqIGxldmVscyBvZiBob29rIGFsbCBkbyB0aGlzLikKLQkJICovCi0JCUluc3RyRW5kTG9v cChxdWVyeURlc2MtPnRvdGFsdGltZSk7Ci0KIAkJcGdzc19zdG9yZShxdWVyeURlc2MtPnNvdXJj ZVRleHQsCiAJCQkJICAgcXVlcnlJZCwKIAkJCQkgICBxdWVyeURlc2MtPnBsYW5uZWRzdG10LT5z dG10X2xvY2F0aW9uLApkaWZmIC0tZ2l0IGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvcG9zdGdyZXNf ZmR3LmMgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcuYwppbmRleCA0MWU0N2Nj Nzk1Yi4uY2M4ZWMyNGMzMGUgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3Bvc3Rn cmVzX2Zkdy5jCisrKyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3Bvc3RncmVzX2Zkdy5jCkBAIC0y Nzc5LDcgKzI3NzksNyBAQCBwb3N0Z3Jlc0l0ZXJhdGVEaXJlY3RNb2RpZnkoRm9yZWlnblNjYW5T dGF0ZSAqbm9kZSkKIAlpZiAoIXJlc3VsdFJlbEluZm8tPnJpX3Byb2plY3RSZXR1cm5pbmcpCiAJ ewogCQlUdXBsZVRhYmxlU2xvdCAqc2xvdCA9IG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3Q7Ci0J CUluc3RydW1lbnRhdGlvbiAqaW5zdHIgPSBub2RlLT5zcy5wcy5pbnN0cnVtZW50OworCQlOb2Rl SW5zdHJ1bWVudGF0aW9uICppbnN0ciA9IG5vZGUtPnNzLnBzLmluc3RydW1lbnQ7CiAKIAkJQXNz ZXJ0KCFkbXN0YXRlLT5oYXNfcmV0dXJuaW5nKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvZXhwbGFpbi5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCmluZGV4 IGViNmVmMjNjMmQ2Li5lNzNkYzEyOTEzMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFu ZHMvZXhwbGFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYwpAQCAtMTgz Nyw3ICsxODM3LDcgQEAgRXhwbGFpbk5vZGUoUGxhblN0YXRlICpwbGFuc3RhdGUsIExpc3QgKmFu Y2VzdG9ycywKIAl7CiAJCWRvdWJsZQkJbmxvb3BzID0gcGxhbnN0YXRlLT5pbnN0cnVtZW50LT5u bG9vcHM7CiAJCWRvdWJsZQkJc3RhcnR1cF9tcyA9IElOU1RSX1RJTUVfR0VUX01JTExJU0VDKHBs YW5zdGF0ZS0+aW5zdHJ1bWVudC0+c3RhcnR1cCkgLyBubG9vcHM7Ci0JCWRvdWJsZQkJdG90YWxf bXMgPSBJTlNUUl9USU1FX0dFVF9NSUxMSVNFQyhwbGFuc3RhdGUtPmluc3RydW1lbnQtPnRvdGFs KSAvIG5sb29wczsKKwkJZG91YmxlCQl0b3RhbF9tcyA9IElOU1RSX1RJTUVfR0VUX01JTExJU0VD KHBsYW5zdGF0ZS0+aW5zdHJ1bWVudC0+aW5zdHIudG90YWwpIC8gbmxvb3BzOwogCQlkb3VibGUJ CXJvd3MgPSBwbGFuc3RhdGUtPmluc3RydW1lbnQtPm50dXBsZXMgLyBubG9vcHM7CiAKIAkJaWYg KGVzLT5mb3JtYXQgPT0gRVhQTEFJTl9GT1JNQVRfVEVYVCkKQEAgLTE4OTAsMTEgKzE4OTAsMTEg QEAgRXhwbGFpbk5vZGUoUGxhblN0YXRlICpwbGFuc3RhdGUsIExpc3QgKmFuY2VzdG9ycywKIAkv KiBwcmVwYXJlIHBlci13b3JrZXIgZ2VuZXJhbCBleGVjdXRpb24gZGV0YWlscyAqLwogCWlmIChl cy0+d29ya2Vyc19zdGF0ZSAmJiBlcy0+dmVyYm9zZSkKIAl7Ci0JCVdvcmtlckluc3RydW1lbnRh dGlvbiAqdyA9IHBsYW5zdGF0ZS0+d29ya2VyX2luc3RydW1lbnQ7CisJCVdvcmtlck5vZGVJbnN0 cnVtZW50YXRpb24gKncgPSBwbGFuc3RhdGUtPndvcmtlcl9pbnN0cnVtZW50OwogCiAJCWZvciAo aW50IG4gPSAwOyBuIDwgdy0+bnVtX3dvcmtlcnM7IG4rKykKIAkJewotCQkJSW5zdHJ1bWVudGF0 aW9uICppbnN0cnVtZW50ID0gJnctPmluc3RydW1lbnRbbl07CisJCQlOb2RlSW5zdHJ1bWVudGF0 aW9uICppbnN0cnVtZW50ID0gJnctPmluc3RydW1lbnRbbl07CiAJCQlkb3VibGUJCW5sb29wcyA9 IGluc3RydW1lbnQtPm5sb29wczsKIAkJCWRvdWJsZQkJc3RhcnR1cF9tczsKIAkJCWRvdWJsZQkJ dG90YWxfbXM7CkBAIC0xOTAzLDcgKzE5MDMsNyBAQCBFeHBsYWluTm9kZShQbGFuU3RhdGUgKnBs YW5zdGF0ZSwgTGlzdCAqYW5jZXN0b3JzLAogCQkJaWYgKG5sb29wcyA8PSAwKQogCQkJCWNvbnRp bnVlOwogCQkJc3RhcnR1cF9tcyA9IElOU1RSX1RJTUVfR0VUX01JTExJU0VDKGluc3RydW1lbnQt PnN0YXJ0dXApIC8gbmxvb3BzOwotCQkJdG90YWxfbXMgPSBJTlNUUl9USU1FX0dFVF9NSUxMSVNF QyhpbnN0cnVtZW50LT50b3RhbCkgLyBubG9vcHM7CisJCQl0b3RhbF9tcyA9IElOU1RSX1RJTUVf R0VUX01JTExJU0VDKGluc3RydW1lbnQtPmluc3RyLnRvdGFsKSAvIG5sb29wczsKIAkJCXJvd3Mg PSBpbnN0cnVtZW50LT5udHVwbGVzIC8gbmxvb3BzOwogCiAJCQlFeHBsYWluT3Blbldvcmtlcihu LCBlcyk7CkBAIC0yMjkwLDE4ICsyMjkwLDE4IEBAIEV4cGxhaW5Ob2RlKFBsYW5TdGF0ZSAqcGxh bnN0YXRlLCBMaXN0ICphbmNlc3RvcnMsCiAKIAkvKiBTaG93IGJ1ZmZlci9XQUwgdXNhZ2UgKi8K IAlpZiAoZXMtPmJ1ZmZlcnMgJiYgcGxhbnN0YXRlLT5pbnN0cnVtZW50KQotCQlzaG93X2J1ZmZl cl91c2FnZShlcywgJnBsYW5zdGF0ZS0+aW5zdHJ1bWVudC0+YnVmdXNhZ2UpOworCQlzaG93X2J1 ZmZlcl91c2FnZShlcywgJnBsYW5zdGF0ZS0+aW5zdHJ1bWVudC0+aW5zdHIuYnVmdXNhZ2UpOwog CWlmIChlcy0+d2FsICYmIHBsYW5zdGF0ZS0+aW5zdHJ1bWVudCkKLQkJc2hvd193YWxfdXNhZ2Uo ZXMsICZwbGFuc3RhdGUtPmluc3RydW1lbnQtPndhbHVzYWdlKTsKKwkJc2hvd193YWxfdXNhZ2Uo ZXMsICZwbGFuc3RhdGUtPmluc3RydW1lbnQtPmluc3RyLndhbHVzYWdlKTsKIAogCS8qIFByZXBh cmUgcGVyLXdvcmtlciBidWZmZXIvV0FMIHVzYWdlICovCiAJaWYgKGVzLT53b3JrZXJzX3N0YXRl ICYmIChlcy0+YnVmZmVycyB8fCBlcy0+d2FsKSAmJiBlcy0+dmVyYm9zZSkKIAl7Ci0JCVdvcmtl ckluc3RydW1lbnRhdGlvbiAqdyA9IHBsYW5zdGF0ZS0+d29ya2VyX2luc3RydW1lbnQ7CisJCVdv cmtlck5vZGVJbnN0cnVtZW50YXRpb24gKncgPSBwbGFuc3RhdGUtPndvcmtlcl9pbnN0cnVtZW50 OwogCiAJCWZvciAoaW50IG4gPSAwOyBuIDwgdy0+bnVtX3dvcmtlcnM7IG4rKykKIAkJewotCQkJ SW5zdHJ1bWVudGF0aW9uICppbnN0cnVtZW50ID0gJnctPmluc3RydW1lbnRbbl07CisJCQlOb2Rl SW5zdHJ1bWVudGF0aW9uICppbnN0cnVtZW50ID0gJnctPmluc3RydW1lbnRbbl07CiAJCQlkb3Vi bGUJCW5sb29wcyA9IGluc3RydW1lbnQtPm5sb29wczsKIAogCQkJaWYgKG5sb29wcyA8PSAwKQpA QCAtMjMwOSw5ICsyMzA5LDkgQEAgRXhwbGFpbk5vZGUoUGxhblN0YXRlICpwbGFuc3RhdGUsIExp c3QgKmFuY2VzdG9ycywKIAogCQkJRXhwbGFpbk9wZW5Xb3JrZXIobiwgZXMpOwogCQkJaWYgKGVz LT5idWZmZXJzKQotCQkJCXNob3dfYnVmZmVyX3VzYWdlKGVzLCAmaW5zdHJ1bWVudC0+YnVmdXNh Z2UpOworCQkJCXNob3dfYnVmZmVyX3VzYWdlKGVzLCAmaW5zdHJ1bWVudC0+aW5zdHIuYnVmdXNh Z2UpOwogCQkJaWYgKGVzLT53YWwpCi0JCQkJc2hvd193YWxfdXNhZ2UoZXMsICZpbnN0cnVtZW50 LT53YWx1c2FnZSk7CisJCQkJc2hvd193YWxfdXNhZ2UoZXMsICZpbnN0cnVtZW50LT5pbnN0ci53 YWx1c2FnZSk7CiAJCQlFeHBsYWluQ2xvc2VXb3JrZXIobiwgZXMpOwogCQl9CiAJfQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL2V4ZWNNYWluLmMKaW5kZXggNTM2MzExNjNkZDYuLjFiOTUwMDQwNTk3IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL2V4ZWNNYWluLmMKQEAgLTMzMyw3ICszMzMsNyBAQCBzdGFuZGFyZF9FeGVjdXRvclJ1bihR dWVyeURlc2MgKnF1ZXJ5RGVzYywKIAogCS8qIEFsbG93IGluc3RydW1lbnRhdGlvbiBvZiBFeGVj dXRvciBvdmVyYWxsIHJ1bnRpbWUgKi8KIAlpZiAocXVlcnlEZXNjLT50b3RhbHRpbWUpCi0JCUlu c3RyU3RhcnROb2RlKHF1ZXJ5RGVzYy0+dG90YWx0aW1lKTsKKwkJSW5zdHJTdGFydChxdWVyeURl c2MtPnRvdGFsdGltZSk7CiAKIAkvKgogCSAqIGV4dHJhY3QgaW5mb3JtYXRpb24gZnJvbSB0aGUg cXVlcnkgZGVzY3JpcHRvciBhbmQgdGhlIHF1ZXJ5IGZlYXR1cmUuCkBAIC0zODUsNyArMzg1LDcg QEAgc3RhbmRhcmRfRXhlY3V0b3JSdW4oUXVlcnlEZXNjICpxdWVyeURlc2MsCiAJCWRlc3QtPnJT aHV0ZG93bihkZXN0KTsKIAogCWlmIChxdWVyeURlc2MtPnRvdGFsdGltZSkKLQkJSW5zdHJTdG9w Tm9kZShxdWVyeURlc2MtPnRvdGFsdGltZSwgZXN0YXRlLT5lc19wcm9jZXNzZWQpOworCQlJbnN0 clN0b3AocXVlcnlEZXNjLT50b3RhbHRpbWUpOwogCiAJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9s ZGNvbnRleHQpOwogfQpAQCAtNDM1LDcgKzQzNSw3IEBAIHN0YW5kYXJkX0V4ZWN1dG9yRmluaXNo KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjKQogCiAJLyogQWxsb3cgaW5zdHJ1bWVudGF0aW9uIG9mIEV4 ZWN1dG9yIG92ZXJhbGwgcnVudGltZSAqLwogCWlmIChxdWVyeURlc2MtPnRvdGFsdGltZSkKLQkJ SW5zdHJTdGFydE5vZGUocXVlcnlEZXNjLT50b3RhbHRpbWUpOworCQlJbnN0clN0YXJ0KHF1ZXJ5 RGVzYy0+dG90YWx0aW1lKTsKIAogCS8qIFJ1biBNb2RpZnlUYWJsZSBub2RlcyB0byBjb21wbGV0 aW9uICovCiAJRXhlY1Bvc3Rwcm9jZXNzUGxhbihlc3RhdGUpOwpAQCAtNDQ1LDcgKzQ0NSw3IEBA IHN0YW5kYXJkX0V4ZWN1dG9yRmluaXNoKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjKQogCQlBZnRlclRy aWdnZXJFbmRRdWVyeShlc3RhdGUpOwogCiAJaWYgKHF1ZXJ5RGVzYy0+dG90YWx0aW1lKQotCQlJ bnN0clN0b3BOb2RlKHF1ZXJ5RGVzYy0+dG90YWx0aW1lLCAwKTsKKwkJSW5zdHJTdG9wKHF1ZXJ5 RGVzYy0+dG90YWx0aW1lKTsKIAogCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsK IApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMgYi9zcmMv YmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYwppbmRleCBhYzg0YWYyOTRjOS4uYzE1M2Q1 YzFjM2IgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jCisr KyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jCkBAIC04Nyw3ICs4Nyw3IEBA IHR5cGVkZWYgc3RydWN0IEZpeGVkUGFyYWxsZWxFeGVjdXRvclN0YXRlCiAgKiBpbnN0cnVtZW50 X29wdGlvbnM6IFNhbWUgbWVhbmluZyBoZXJlIGFzIGluIGluc3RydW1lbnQuYy4KICAqCiAgKiBp bnN0cnVtZW50X29mZnNldDogT2Zmc2V0LCByZWxhdGl2ZSB0byB0aGUgc3RhcnQgb2YgdGhpcyBz dHJ1Y3R1cmUsCi0gKiBvZiB0aGUgZmlyc3QgSW5zdHJ1bWVudGF0aW9uIG9iamVjdC4gIFRoaXMg d2lsbCBkZXBlbmQgb24gdGhlIGxlbmd0aCBvZgorICogb2YgdGhlIGZpcnN0IE5vZGVJbnN0cnVt ZW50YXRpb24gb2JqZWN0LiAgVGhpcyB3aWxsIGRlcGVuZCBvbiB0aGUgbGVuZ3RoIG9mCiAgKiB0 aGUgcGxhbl9ub2RlX2lkIGFycmF5LgogICoKICAqIG51bV93b3JrZXJzOiBOdW1iZXIgb2Ygd29y a2Vycy4KQEAgLTEwNCwxMSArMTA0LDE1IEBAIHN0cnVjdCBTaGFyZWRFeGVjdXRvckluc3RydW1l bnRhdGlvbgogCWludAkJCW51bV93b3JrZXJzOwogCWludAkJCW51bV9wbGFuX25vZGVzOwogCWlu dAkJCXBsYW5fbm9kZV9pZFtGTEVYSUJMRV9BUlJBWV9NRU1CRVJdOwotCS8qIGFycmF5IG9mIG51 bV9wbGFuX25vZGVzICogbnVtX3dvcmtlcnMgSW5zdHJ1bWVudGF0aW9uIG9iamVjdHMgZm9sbG93 cyAqLworCisJLyoKKwkgKiBhcnJheSBvZiBudW1fcGxhbl9ub2RlcyAqIG51bV93b3JrZXJzIE5v ZGVJbnN0cnVtZW50YXRpb24gb2JqZWN0cworCSAqIGZvbGxvd3MKKwkgKi8KIH07CiAjZGVmaW5l IEdldEluc3RydW1lbnRhdGlvbkFycmF5KHNlaSkgXAogCShTdGF0aWNBc3NlcnRWYXJpYWJsZUlz T2ZUeXBlTWFjcm8oc2VpLCBTaGFyZWRFeGVjdXRvckluc3RydW1lbnRhdGlvbiAqKSwgXAotCSAo SW5zdHJ1bWVudGF0aW9uICopICgoKGNoYXIgKikgc2VpKSArIHNlaS0+aW5zdHJ1bWVudF9vZmZz ZXQpKQorCSAoTm9kZUluc3RydW1lbnRhdGlvbiAqKSAoKChjaGFyICopIHNlaSkgKyBzZWktPmlu c3RydW1lbnRfb2Zmc2V0KSkKIAogLyogQ29udGV4dCBvYmplY3QgZm9yIEV4ZWNQYXJhbGxlbEVz dGltYXRlLiAqLwogdHlwZWRlZiBzdHJ1Y3QgRXhlY1BhcmFsbGVsRXN0aW1hdGVDb250ZXh0CkBA IC03MjUsNyArNzI5LDcgQEAgRXhlY0luaXRQYXJhbGxlbFBsYW4oUGxhblN0YXRlICpwbGFuc3Rh dGUsIEVTdGF0ZSAqZXN0YXRlLAogCQlpbnN0cnVtZW50YXRpb25fbGVuID0gTUFYQUxJR04oaW5z dHJ1bWVudGF0aW9uX2xlbik7CiAJCWluc3RydW1lbnRfb2Zmc2V0ID0gaW5zdHJ1bWVudGF0aW9u X2xlbjsKIAkJaW5zdHJ1bWVudGF0aW9uX2xlbiArPQotCQkJbXVsX3NpemUoc2l6ZW9mKEluc3Ry dW1lbnRhdGlvbiksCisJCQltdWxfc2l6ZShzaXplb2YoTm9kZUluc3RydW1lbnRhdGlvbiksCiAJ CQkJCSBtdWxfc2l6ZShlLm5ub2RlcywgbndvcmtlcnMpKTsKIAkJc2htX3RvY19lc3RpbWF0ZV9j aHVuaygmcGN4dC0+ZXN0aW1hdG9yLCBpbnN0cnVtZW50YXRpb25fbGVuKTsKIAkJc2htX3RvY19l c3RpbWF0ZV9rZXlzKCZwY3h0LT5lc3RpbWF0b3IsIDEpOwpAQCAtODExLDcgKzgxNSw3IEBAIEV4 ZWNJbml0UGFyYWxsZWxQbGFuKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBFU3RhdGUgKmVzdGF0ZSwK IAkgKi8KIAlpZiAoZXN0YXRlLT5lc19pbnN0cnVtZW50KQogCXsKLQkJSW5zdHJ1bWVudGF0aW9u ICppbnN0cnVtZW50OworCQlOb2RlSW5zdHJ1bWVudGF0aW9uICppbnN0cnVtZW50OwogCQlpbnQJ CQlpOwogCiAJCWluc3RydW1lbnRhdGlvbiA9IHNobV90b2NfYWxsb2NhdGUocGN4dC0+dG9jLCBp bnN0cnVtZW50YXRpb25fbGVuKTsKQEAgLTgyMSw3ICs4MjUsNyBAQCBFeGVjSW5pdFBhcmFsbGVs UGxhbihQbGFuU3RhdGUgKnBsYW5zdGF0ZSwgRVN0YXRlICplc3RhdGUsCiAJCWluc3RydW1lbnRh dGlvbi0+bnVtX3BsYW5fbm9kZXMgPSBlLm5ub2RlczsKIAkJaW5zdHJ1bWVudCA9IEdldEluc3Ry dW1lbnRhdGlvbkFycmF5KGluc3RydW1lbnRhdGlvbik7CiAJCWZvciAoaSA9IDA7IGkgPCBud29y a2VycyAqIGUubm5vZGVzOyArK2kpCi0JCQlJbnN0ckluaXQoJmluc3RydW1lbnRbaV0sIGVzdGF0 ZS0+ZXNfaW5zdHJ1bWVudCk7CisJCQlJbnN0ckluaXROb2RlKCZpbnN0cnVtZW50W2ldLCBlc3Rh dGUtPmVzX2luc3RydW1lbnQpOwogCQlzaG1fdG9jX2luc2VydChwY3h0LT50b2MsIFBBUkFMTEVM X0tFWV9JTlNUUlVNRU5UQVRJT04sCiAJCQkJCSAgIGluc3RydW1lbnRhdGlvbik7CiAJCXBlaS0+ aW5zdHJ1bWVudGF0aW9uID0gaW5zdHJ1bWVudGF0aW9uOwpAQCAtMTA1Myw3ICsxMDU3LDcgQEAg c3RhdGljIGJvb2wKIEV4ZWNQYXJhbGxlbFJldHJpZXZlSW5zdHJ1bWVudGF0aW9uKFBsYW5TdGF0 ZSAqcGxhbnN0YXRlLAogCQkJCQkJCQkJU2hhcmVkRXhlY3V0b3JJbnN0cnVtZW50YXRpb24gKmlu c3RydW1lbnRhdGlvbikKIHsKLQlJbnN0cnVtZW50YXRpb24gKmluc3RydW1lbnQ7CisJTm9kZUlu c3RydW1lbnRhdGlvbiAqaW5zdHJ1bWVudDsKIAlpbnQJCQlpOwogCWludAkJCW47CiAJaW50CQkJ aWJ5dGVzOwpAQCAtMTA4MSw5ICsxMDg1LDkgQEAgRXhlY1BhcmFsbGVsUmV0cmlldmVJbnN0cnVt ZW50YXRpb24oUGxhblN0YXRlICpwbGFuc3RhdGUsCiAJICogU3dpdGNoIGludG8gcGVyLXF1ZXJ5 IG1lbW9yeSBjb250ZXh0LgogCSAqLwogCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNo VG8ocGxhbnN0YXRlLT5zdGF0ZS0+ZXNfcXVlcnlfY3h0KTsKLQlpYnl0ZXMgPSBtdWxfc2l6ZShp bnN0cnVtZW50YXRpb24tPm51bV93b3JrZXJzLCBzaXplb2YoSW5zdHJ1bWVudGF0aW9uKSk7CisJ aWJ5dGVzID0gbXVsX3NpemUoaW5zdHJ1bWVudGF0aW9uLT5udW1fd29ya2Vycywgc2l6ZW9mKE5v ZGVJbnN0cnVtZW50YXRpb24pKTsKIAlwbGFuc3RhdGUtPndvcmtlcl9pbnN0cnVtZW50ID0KLQkJ cGFsbG9jKGlieXRlcyArIG9mZnNldG9mKFdvcmtlckluc3RydW1lbnRhdGlvbiwgaW5zdHJ1bWVu dCkpOworCQlwYWxsb2MoaWJ5dGVzICsgb2Zmc2V0b2YoV29ya2VyTm9kZUluc3RydW1lbnRhdGlv biwgaW5zdHJ1bWVudCkpOwogCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKIAog CXBsYW5zdGF0ZS0+d29ya2VyX2luc3RydW1lbnQtPm51bV93b3JrZXJzID0gaW5zdHJ1bWVudGF0 aW9uLT5udW1fd29ya2VyczsKQEAgLTEzMTMsNyArMTMxNyw3IEBAIEV4ZWNQYXJhbGxlbFJlcG9y dEluc3RydW1lbnRhdGlvbihQbGFuU3RhdGUgKnBsYW5zdGF0ZSwKIHsKIAlpbnQJCQlpOwogCWlu dAkJCXBsYW5fbm9kZV9pZCA9IHBsYW5zdGF0ZS0+cGxhbi0+cGxhbl9ub2RlX2lkOwotCUluc3Ry dW1lbnRhdGlvbiAqaW5zdHJ1bWVudDsKKwlOb2RlSW5zdHJ1bWVudGF0aW9uICppbnN0cnVtZW50 OwogCiAJSW5zdHJFbmRMb29wKHBsYW5zdGF0ZS0+aW5zdHJ1bWVudCk7CiAKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQcm9jbm9kZS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY1Byb2Nub2RlLmMKaW5kZXggZDM1OTc2OTI1YWUuLjEzMmZlMzdlZjYwIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUHJvY25vZGUuYworKysgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjUHJvY25vZGUuYwpAQCAtNDE0LDggKzQxNCw4IEBAIEV4ZWNJbml0Tm9k ZShQbGFuICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAogCS8qIFNldCB1cCBp bnN0cnVtZW50YXRpb24gZm9yIHRoaXMgbm9kZSBpZiByZXF1ZXN0ZWQgKi8KIAlpZiAoZXN0YXRl LT5lc19pbnN0cnVtZW50KQotCQlyZXN1bHQtPmluc3RydW1lbnQgPSBJbnN0ckFsbG9jKDEsIGVz dGF0ZS0+ZXNfaW5zdHJ1bWVudCwKLQkJCQkJCQkJCQlyZXN1bHQtPmFzeW5jX2NhcGFibGUpOwor CQlyZXN1bHQtPmluc3RydW1lbnQgPSBJbnN0ckFsbG9jTm9kZShlc3RhdGUtPmVzX2luc3RydW1l bnQsCisJCQkJCQkJCQkJCXJlc3VsdC0+YXN5bmNfY2FwYWJsZSk7CiAKIAlyZXR1cm4gcmVzdWx0 OwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvaW5zdHJ1bWVudC5jIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3IvaW5zdHJ1bWVudC5jCmluZGV4IDkzNTRhZDdiZTEyLi5iYzU1MWY5 NWEwOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvaW5zdHJ1bWVudC5jCisrKyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2luc3RydW1lbnQuYwpAQCAtMjYsNTEgKzI2LDMwIEBAIHN0 YXRpYyB2b2lkIEJ1ZmZlclVzYWdlQWRkKEJ1ZmZlclVzYWdlICpkc3QsIGNvbnN0IEJ1ZmZlclVz YWdlICphZGQpOwogc3RhdGljIHZvaWQgV2FsVXNhZ2VBZGQoV2FsVXNhZ2UgKmRzdCwgV2FsVXNh Z2UgKmFkZCk7CiAKIAotLyogQWxsb2NhdGUgbmV3IGluc3RydW1lbnRhdGlvbiBzdHJ1Y3R1cmUo cykgKi8KKy8qIEdlbmVyYWwgcHVycG9zZSBpbnN0cnVtZW50YXRpb24gaGFuZGxpbmcgKi8KIElu c3RydW1lbnRhdGlvbiAqCi1JbnN0ckFsbG9jKGludCBuLCBpbnQgaW5zdHJ1bWVudF9vcHRpb25z LCBib29sIGFzeW5jX21vZGUpCitJbnN0ckFsbG9jKGludCBpbnN0cnVtZW50X29wdGlvbnMpCiB7 Ci0JSW5zdHJ1bWVudGF0aW9uICppbnN0cjsKLQotCS8qIGluaXRpYWxpemUgYWxsIGZpZWxkcyB0 byB6ZXJvZXMsIHRoZW4gbW9kaWZ5IGFzIG5lZWRlZCAqLwotCWluc3RyID0gcGFsbG9jMChuICog c2l6ZW9mKEluc3RydW1lbnRhdGlvbikpOwotCWlmIChpbnN0cnVtZW50X29wdGlvbnMgJiAoSU5T VFJVTUVOVF9CVUZGRVJTIHwgSU5TVFJVTUVOVF9USU1FUiB8IElOU1RSVU1FTlRfV0FMKSkKLQl7 Ci0JCWJvb2wJCW5lZWRfYnVmZmVycyA9IChpbnN0cnVtZW50X29wdGlvbnMgJiBJTlNUUlVNRU5U X0JVRkZFUlMpICE9IDA7Ci0JCWJvb2wJCW5lZWRfd2FsID0gKGluc3RydW1lbnRfb3B0aW9ucyAm IElOU1RSVU1FTlRfV0FMKSAhPSAwOwotCQlib29sCQluZWVkX3RpbWVyID0gKGluc3RydW1lbnRf b3B0aW9ucyAmIElOU1RSVU1FTlRfVElNRVIpICE9IDA7Ci0JCWludAkJCWk7Ci0KLQkJZm9yIChp ID0gMDsgaSA8IG47IGkrKykKLQkJewotCQkJaW5zdHJbaV0ubmVlZF9idWZ1c2FnZSA9IG5lZWRf YnVmZmVyczsKLQkJCWluc3RyW2ldLm5lZWRfd2FsdXNhZ2UgPSBuZWVkX3dhbDsKLQkJCWluc3Ry W2ldLm5lZWRfdGltZXIgPSBuZWVkX3RpbWVyOwotCQkJaW5zdHJbaV0uYXN5bmNfbW9kZSA9IGFz eW5jX21vZGU7Ci0JCX0KLQl9Ci0KKwlJbnN0cnVtZW50YXRpb24gKmluc3RyID0gcGFsbG9jMChz aXplb2YoSW5zdHJ1bWVudGF0aW9uKSk7CisJSW5zdHJJbml0T3B0aW9ucyhpbnN0ciwgaW5zdHJ1 bWVudF9vcHRpb25zKTsKIAlyZXR1cm4gaW5zdHI7CiB9CiAKLS8qIEluaXRpYWxpemUgYSBwcmUt YWxsb2NhdGVkIGluc3RydW1lbnRhdGlvbiBzdHJ1Y3R1cmUuICovCiB2b2lkCi1JbnN0ckluaXQo SW5zdHJ1bWVudGF0aW9uICppbnN0ciwgaW50IGluc3RydW1lbnRfb3B0aW9ucykKK0luc3RySW5p dE9wdGlvbnMoSW5zdHJ1bWVudGF0aW9uICppbnN0ciwgaW50IGluc3RydW1lbnRfb3B0aW9ucykK IHsKLQltZW1zZXQoaW5zdHIsIDAsIHNpemVvZihJbnN0cnVtZW50YXRpb24pKTsKIAlpbnN0ci0+ bmVlZF9idWZ1c2FnZSA9IChpbnN0cnVtZW50X29wdGlvbnMgJiBJTlNUUlVNRU5UX0JVRkZFUlMp ICE9IDA7CiAJaW5zdHItPm5lZWRfd2FsdXNhZ2UgPSAoaW5zdHJ1bWVudF9vcHRpb25zICYgSU5T VFJVTUVOVF9XQUwpICE9IDA7CiAJaW5zdHItPm5lZWRfdGltZXIgPSAoaW5zdHJ1bWVudF9vcHRp b25zICYgSU5TVFJVTUVOVF9USU1FUikgIT0gMDsKIH0KIAotLyogRW50cnkgdG8gYSBwbGFuIG5v ZGUgKi8KIHZvaWQKLUluc3RyU3RhcnROb2RlKEluc3RydW1lbnRhdGlvbiAqaW5zdHIpCitJbnN0 clN0YXJ0KEluc3RydW1lbnRhdGlvbiAqaW5zdHIpCiB7CiAJaWYgKGluc3RyLT5uZWVkX3RpbWVy KQogCXsKIAkJaWYgKCFJTlNUUl9USU1FX0lTX1pFUk8oaW5zdHItPnN0YXJ0dGltZSkpCi0JCQll bG9nKEVSUk9SLCAiSW5zdHJTdGFydE5vZGUgY2FsbGVkIHR3aWNlIGluIGEgcm93Iik7CisJCQll bG9nKEVSUk9SLCAiSW5zdHJTdGFydCBjYWxsZWQgdHdpY2UgaW4gYSByb3ciKTsKIAkJZWxzZQog CQkJSU5TVFJfVElNRV9TRVRfQ1VSUkVOVChpbnN0ci0+c3RhcnR0aW1lKTsKIAl9CkBAIC04Mywy NCArNjIsMTkgQEAgSW5zdHJTdGFydE5vZGUoSW5zdHJ1bWVudGF0aW9uICppbnN0cikKIAkJaW5z dHItPndhbHVzYWdlX3N0YXJ0ID0gcGdXYWxVc2FnZTsKIH0KIAotLyogRXhpdCBmcm9tIGEgcGxh biBub2RlICovCiB2b2lkCi1JbnN0clN0b3BOb2RlKEluc3RydW1lbnRhdGlvbiAqaW5zdHIsIGRv dWJsZSBuVHVwbGVzKQorSW5zdHJTdG9wKEluc3RydW1lbnRhdGlvbiAqaW5zdHIpCiB7Ci0JZG91 YmxlCQlzYXZlX3R1cGxlY291bnQgPSBpbnN0ci0+dHVwbGVjb3VudDsKIAlpbnN0cl90aW1lCWVu ZHRpbWU7CiAKLQkvKiBjb3VudCB0aGUgcmV0dXJuZWQgdHVwbGVzICovCi0JaW5zdHItPnR1cGxl Y291bnQgKz0gblR1cGxlczsKLQogCS8qIGxldCdzIHVwZGF0ZSB0aGUgdGltZSBvbmx5IGlmIHRo ZSB0aW1lciB3YXMgcmVxdWVzdGVkICovCiAJaWYgKGluc3RyLT5uZWVkX3RpbWVyKQogCXsKIAkJ aWYgKElOU1RSX1RJTUVfSVNfWkVSTyhpbnN0ci0+c3RhcnR0aW1lKSkKLQkJCWVsb2coRVJST1Is ICJJbnN0clN0b3BOb2RlIGNhbGxlZCB3aXRob3V0IHN0YXJ0Iik7CisJCQllbG9nKEVSUk9SLCAi SW5zdHJTdG9wIGNhbGxlZCB3aXRob3V0IHN0YXJ0Iik7CiAKIAkJSU5TVFJfVElNRV9TRVRfQ1VS UkVOVChlbmR0aW1lKTsKLQkJSU5TVFJfVElNRV9BQ0NVTV9ESUZGKGluc3RyLT5jb3VudGVyLCBl bmR0aW1lLCBpbnN0ci0+c3RhcnR0aW1lKTsKKwkJSU5TVFJfVElNRV9BQ0NVTV9ESUZGKGluc3Ry LT50b3RhbCwgZW5kdGltZSwgaW5zdHItPnN0YXJ0dGltZSk7CiAKIAkJSU5TVFJfVElNRV9TRVRf WkVSTyhpbnN0ci0+c3RhcnR0aW1lKTsKIAl9CkBAIC0xMTMsNiArODcsNzQgQEAgSW5zdHJTdG9w Tm9kZShJbnN0cnVtZW50YXRpb24gKmluc3RyLCBkb3VibGUgblR1cGxlcykKIAlpZiAoaW5zdHIt Pm5lZWRfd2FsdXNhZ2UpCiAJCVdhbFVzYWdlQWNjdW1EaWZmKCZpbnN0ci0+d2FsdXNhZ2UsCiAJ CQkJCQkgICZwZ1dhbFVzYWdlLCAmaW5zdHItPndhbHVzYWdlX3N0YXJ0KTsKK30KKworLyogTm9k ZSBpbnN0cnVtZW50YXRpb24gaGFuZGxpbmcgKi8KKworLyogQWxsb2NhdGUgbmV3IG5vZGUgaW5z dHJ1bWVudGF0aW9uIHN0cnVjdHVyZSAqLworTm9kZUluc3RydW1lbnRhdGlvbiAqCitJbnN0ckFs bG9jTm9kZShpbnQgaW5zdHJ1bWVudF9vcHRpb25zLCBib29sIGFzeW5jX21vZGUpCit7CisJTm9k ZUluc3RydW1lbnRhdGlvbiAqaW5zdHIgPSBwYWxsb2Moc2l6ZW9mKE5vZGVJbnN0cnVtZW50YXRp b24pKTsKKworCUluc3RySW5pdE5vZGUoaW5zdHIsIGluc3RydW1lbnRfb3B0aW9ucyk7CisJaW5z dHItPmFzeW5jX21vZGUgPSBhc3luY19tb2RlOworCisJcmV0dXJuIGluc3RyOworfQorCisvKiBJ bml0aWFsaXplIGEgcHJlLWFsbG9jYXRlZCBpbnN0cnVtZW50YXRpb24gc3RydWN0dXJlLiAqLwor dm9pZAorSW5zdHJJbml0Tm9kZShOb2RlSW5zdHJ1bWVudGF0aW9uICppbnN0ciwgaW50IGluc3Ry dW1lbnRfb3B0aW9ucykKK3sKKwltZW1zZXQoaW5zdHIsIDAsIHNpemVvZihOb2RlSW5zdHJ1bWVu dGF0aW9uKSk7CisJSW5zdHJJbml0T3B0aW9ucygmaW5zdHItPmluc3RyLCBpbnN0cnVtZW50X29w dGlvbnMpOworfQorCisvKiBFbnRyeSB0byBhIHBsYW4gbm9kZSAqLwordm9pZAorSW5zdHJTdGFy dE5vZGUoTm9kZUluc3RydW1lbnRhdGlvbiAqaW5zdHIpCit7CisJSW5zdHJTdGFydCgmaW5zdHIt Pmluc3RyKTsKK30KKworLyogRXhpdCBmcm9tIGEgcGxhbiBub2RlICovCit2b2lkCitJbnN0clN0 b3BOb2RlKE5vZGVJbnN0cnVtZW50YXRpb24gKmluc3RyLCBkb3VibGUgblR1cGxlcykKK3sKKwlk b3VibGUJCXNhdmVfdHVwbGVjb3VudCA9IGluc3RyLT50dXBsZWNvdW50OworCWluc3RyX3RpbWUJ ZW5kdGltZTsKKworCS8qIGNvdW50IHRoZSByZXR1cm5lZCB0dXBsZXMgKi8KKwlpbnN0ci0+dHVw bGVjb3VudCArPSBuVHVwbGVzOworCisJLyoKKwkgKiBVcGRhdGUgdGhlIHRpbWUgb25seSBpZiB0 aGUgdGltZXIgd2FzIHJlcXVlc3RlZC4KKwkgKgorCSAqIE5vdGUgdGhpcyBpcyBkaWZmZXJlbnQg ZnJvbSBJbnN0clN0b3AgYmVjYXVzZSB0b3RhbCBpcyBvbmx5IHVwZGF0ZWQgaW4KKwkgKiBJbnN0 ckVuZExvb3AuIFdlIG5lZWQgdGhlIHNlcGFyYXRlIGNvdW50ZXIgdmFyaWFibGUgYmVjYXVzZSB3 ZSBuZWVkIHRvCisJICogY2FsY3VsYXRlIHN0YXJ0LXVwIHRpbWUgZm9yIHRoZSBmaXJzdCB0dXBs ZSBpbiBlYWNoIGN5Y2xlLCBhbmQgdGhlbgorCSAqIGFjY3VtdWxhdGUgaXQgdG9nZXRoZXIuCisJ ICovCisJaWYgKGluc3RyLT5pbnN0ci5uZWVkX3RpbWVyKQorCXsKKwkJaWYgKElOU1RSX1RJTUVf SVNfWkVSTyhpbnN0ci0+aW5zdHIuc3RhcnR0aW1lKSkKKwkJCWVsb2coRVJST1IsICJJbnN0clN0 b3BOb2RlIGNhbGxlZCB3aXRob3V0IHN0YXJ0Iik7CisKKwkJSU5TVFJfVElNRV9TRVRfQ1VSUkVO VChlbmR0aW1lKTsKKwkJSU5TVFJfVElNRV9BQ0NVTV9ESUZGKGluc3RyLT5jb3VudGVyLCBlbmR0 aW1lLCBpbnN0ci0+aW5zdHIuc3RhcnR0aW1lKTsKKworCQlJTlNUUl9USU1FX1NFVF9aRVJPKGlu c3RyLT5pbnN0ci5zdGFydHRpbWUpOworCX0KKworCS8qIEFkZCBkZWx0YSBvZiBidWZmZXIgdXNh Z2Ugc2luY2UgZW50cnkgdG8gbm9kZSdzIHRvdGFscyAqLworCWlmIChpbnN0ci0+aW5zdHIubmVl ZF9idWZ1c2FnZSkKKwkJQnVmZmVyVXNhZ2VBY2N1bURpZmYoJmluc3RyLT5pbnN0ci5idWZ1c2Fn ZSwKKwkJCQkJCQkgJnBnQnVmZmVyVXNhZ2UsICZpbnN0ci0+aW5zdHIuYnVmdXNhZ2Vfc3RhcnQp OworCisJaWYgKGluc3RyLT5pbnN0ci5uZWVkX3dhbHVzYWdlKQorCQlXYWxVc2FnZUFjY3VtRGlm ZigmaW5zdHItPmluc3RyLndhbHVzYWdlLAorCQkJCQkJICAmcGdXYWxVc2FnZSwgJmluc3RyLT5p bnN0ci53YWx1c2FnZV9zdGFydCk7CiAKIAkvKiBJcyB0aGlzIHRoZSBmaXJzdCB0dXBsZSBvZiB0 aGlzIGN5Y2xlPyAqLwogCWlmICghaW5zdHItPnJ1bm5pbmcpCkBAIC0xMzMsNyArMTc1LDcgQEAg SW5zdHJTdG9wTm9kZShJbnN0cnVtZW50YXRpb24gKmluc3RyLCBkb3VibGUgblR1cGxlcykKIAog LyogVXBkYXRlIHR1cGxlIGNvdW50ICovCiB2b2lkCi1JbnN0clVwZGF0ZVR1cGxlQ291bnQoSW5z dHJ1bWVudGF0aW9uICppbnN0ciwgZG91YmxlIG5UdXBsZXMpCitJbnN0clVwZGF0ZVR1cGxlQ291 bnQoTm9kZUluc3RydW1lbnRhdGlvbiAqaW5zdHIsIGRvdWJsZSBuVHVwbGVzKQogewogCS8qIGNv dW50IHRoZSByZXR1cm5lZCB0dXBsZXMgKi8KIAlpbnN0ci0+dHVwbGVjb3VudCArPSBuVHVwbGVz OwpAQCAtMTQxLDI0ICsxODMsMjQgQEAgSW5zdHJVcGRhdGVUdXBsZUNvdW50KEluc3RydW1lbnRh dGlvbiAqaW5zdHIsIGRvdWJsZSBuVHVwbGVzKQogCiAvKiBGaW5pc2ggYSBydW4gY3ljbGUgZm9y IGEgcGxhbiBub2RlICovCiB2b2lkCi1JbnN0ckVuZExvb3AoSW5zdHJ1bWVudGF0aW9uICppbnN0 cikKK0luc3RyRW5kTG9vcChOb2RlSW5zdHJ1bWVudGF0aW9uICppbnN0cikKIHsKIAkvKiBTa2lw IGlmIG5vdGhpbmcgaGFzIGhhcHBlbmVkLCBvciBhbHJlYWR5IHNodXQgZG93biAqLwogCWlmICgh aW5zdHItPnJ1bm5pbmcpCiAJCXJldHVybjsKIAotCWlmICghSU5TVFJfVElNRV9JU19aRVJPKGlu c3RyLT5zdGFydHRpbWUpKQorCWlmICghSU5TVFJfVElNRV9JU19aRVJPKGluc3RyLT5pbnN0ci5z dGFydHRpbWUpKQogCQllbG9nKEVSUk9SLCAiSW5zdHJFbmRMb29wIGNhbGxlZCBvbiBydW5uaW5n IG5vZGUiKTsKIAogCS8qIEFjY3VtdWxhdGUgcGVyLWN5Y2xlIHN0YXRpc3RpY3MgaW50byB0b3Rh bHMgKi8KIAlJTlNUUl9USU1FX0FERChpbnN0ci0+c3RhcnR1cCwgaW5zdHItPmZpcnN0dHVwbGUp OwotCUlOU1RSX1RJTUVfQUREKGluc3RyLT50b3RhbCwgaW5zdHItPmNvdW50ZXIpOworCUlOU1RS X1RJTUVfQUREKGluc3RyLT5pbnN0ci50b3RhbCwgaW5zdHItPmNvdW50ZXIpOwogCWluc3RyLT5u dHVwbGVzICs9IGluc3RyLT50dXBsZWNvdW50OwogCWluc3RyLT5ubG9vcHMgKz0gMTsKIAogCS8q IFJlc2V0IGZvciBuZXh0IGN5Y2xlIChpZiBhbnkpICovCiAJaW5zdHItPnJ1bm5pbmcgPSBmYWxz ZTsKLQlJTlNUUl9USU1FX1NFVF9aRVJPKGluc3RyLT5zdGFydHRpbWUpOworCUlOU1RSX1RJTUVf U0VUX1pFUk8oaW5zdHItPmluc3RyLnN0YXJ0dGltZSk7CiAJSU5TVFJfVElNRV9TRVRfWkVSTyhp bnN0ci0+Y291bnRlcik7CiAJSU5TVFJfVElNRV9TRVRfWkVSTyhpbnN0ci0+Zmlyc3R0dXBsZSk7 CiAJaW5zdHItPnR1cGxlY291bnQgPSAwOwpAQCAtMTY2LDcgKzIwOCw3IEBAIEluc3RyRW5kTG9v cChJbnN0cnVtZW50YXRpb24gKmluc3RyKQogCiAvKiBhZ2dyZWdhdGUgaW5zdHJ1bWVudGF0aW9u IGluZm9ybWF0aW9uICovCiB2b2lkCi1JbnN0ckFnZ05vZGUoSW5zdHJ1bWVudGF0aW9uICpkc3Qs IEluc3RydW1lbnRhdGlvbiAqYWRkKQorSW5zdHJBZ2dOb2RlKE5vZGVJbnN0cnVtZW50YXRpb24g KmRzdCwgTm9kZUluc3RydW1lbnRhdGlvbiAqYWRkKQogewogCWlmICghZHN0LT5ydW5uaW5nICYm IGFkZC0+cnVubmluZykKIAl7CkBAIC0xODEsNyArMjIzLDcgQEAgSW5zdHJBZ2dOb2RlKEluc3Ry dW1lbnRhdGlvbiAqZHN0LCBJbnN0cnVtZW50YXRpb24gKmFkZCkKIAogCWRzdC0+dHVwbGVjb3Vu dCArPSBhZGQtPnR1cGxlY291bnQ7CiAJSU5TVFJfVElNRV9BREQoZHN0LT5zdGFydHVwLCBhZGQt PnN0YXJ0dXApOwotCUlOU1RSX1RJTUVfQUREKGRzdC0+dG90YWwsIGFkZC0+dG90YWwpOworCUlO U1RSX1RJTUVfQUREKGRzdC0+aW5zdHIudG90YWwsIGFkZC0+aW5zdHIudG90YWwpOwogCWRzdC0+ bnR1cGxlcyArPSBhZGQtPm50dXBsZXM7CiAJZHN0LT5udHVwbGVzMiArPSBhZGQtPm50dXBsZXMy OwogCWRzdC0+bmxvb3BzICs9IGFkZC0+bmxvb3BzOwpAQCAtMTg5LDExICsyMzEsMTEgQEAgSW5z dHJBZ2dOb2RlKEluc3RydW1lbnRhdGlvbiAqZHN0LCBJbnN0cnVtZW50YXRpb24gKmFkZCkKIAlk c3QtPm5maWx0ZXJlZDIgKz0gYWRkLT5uZmlsdGVyZWQyOwogCiAJLyogQWRkIGRlbHRhIG9mIGJ1 ZmZlciB1c2FnZSBzaW5jZSBlbnRyeSB0byBub2RlJ3MgdG90YWxzICovCi0JaWYgKGRzdC0+bmVl ZF9idWZ1c2FnZSkKLQkJQnVmZmVyVXNhZ2VBZGQoJmRzdC0+YnVmdXNhZ2UsICZhZGQtPmJ1ZnVz YWdlKTsKKwlpZiAoZHN0LT5pbnN0ci5uZWVkX2J1ZnVzYWdlKQorCQlCdWZmZXJVc2FnZUFkZCgm ZHN0LT5pbnN0ci5idWZ1c2FnZSwgJmFkZC0+aW5zdHIuYnVmdXNhZ2UpOwogCi0JaWYgKGRzdC0+ bmVlZF93YWx1c2FnZSkKLQkJV2FsVXNhZ2VBZGQoJmRzdC0+d2FsdXNhZ2UsICZhZGQtPndhbHVz YWdlKTsKKwlpZiAoZHN0LT5pbnN0ci5uZWVkX3dhbHVzYWdlKQorCQlXYWxVc2FnZUFkZCgmZHN0 LT5pbnN0ci53YWx1c2FnZSwgJmFkZC0+aW5zdHIud2FsdXNhZ2UpOwogfQogCiAvKiBUcmlnZ2Vy IGluc3RydW1lbnRhdGlvbiBoYW5kbGluZyAqLwpAQCAtMjA0LDcgKzI0Niw3IEBAIEluc3RyQWxs b2NUcmlnZ2VyKGludCBuLCBpbnQgaW5zdHJ1bWVudF9vcHRpb25zKQogCWludAkJCWk7CiAKIAlm b3IgKGkgPSAwOyBpIDwgbjsgaSsrKQotCQlJbnN0ckluaXQoJnRnaW5zdHJbaV0uaW5zdHIsIGlu c3RydW1lbnRfb3B0aW9ucyk7CisJCUluc3RySW5pdE9wdGlvbnMoJnRnaW5zdHJbaV0uaW5zdHIs IGluc3RydW1lbnRfb3B0aW9ucyk7CiAKIAlyZXR1cm4gdGdpbnN0cjsKIH0KQEAgLTIxMiwxMyAr MjU0LDEzIEBAIEluc3RyQWxsb2NUcmlnZ2VyKGludCBuLCBpbnQgaW5zdHJ1bWVudF9vcHRpb25z KQogdm9pZAogSW5zdHJTdGFydFRyaWdnZXIoVHJpZ2dlckluc3RydW1lbnRhdGlvbiAqdGdpbnN0 cikKIHsKLQlJbnN0clN0YXJ0Tm9kZSgmdGdpbnN0ci0+aW5zdHIpOworCUluc3RyU3RhcnQoJnRn aW5zdHItPmluc3RyKTsKIH0KIAogdm9pZAogSW5zdHJTdG9wVHJpZ2dlcihUcmlnZ2VySW5zdHJ1 bWVudGF0aW9uICp0Z2luc3RyLCBpbnQgZmlyaW5ncykKIHsKLQlJbnN0clN0b3BOb2RlKCZ0Z2lu c3RyLT5pbnN0ciwgMCk7CisJSW5zdHJTdG9wKCZ0Z2luc3RyLT5pbnN0cik7CiAJdGdpbnN0ci0+ ZmlyaW5ncyArPSBmaXJpbmdzOwogfQogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRv ci9pbnN0cnVtZW50LmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9pbnN0cnVtZW50LmgKaW5kZXgg YTljMjIzMzIyN2YuLmIxMWQ2NDYzM2I1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRv ci9pbnN0cnVtZW50LmgKKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvaW5zdHJ1bWVudC5oCkBA IC02NywzOCArNjcsNTUgQEAgdHlwZWRlZiBlbnVtIEluc3RydW1lbnRPcHRpb24KIAlJTlNUUlVN RU5UX0FMTCA9IFBHX0lOVDMyX01BWAogfSBJbnN0cnVtZW50T3B0aW9uOwogCisvKgorICogR2Vu ZXJhbCBwdXJwb3NlIGluc3RydW1lbnRhdGlvbiB0aGF0IGNhbiBjYXB0dXJlIHRpbWUgYW5kIFdB TC9idWZmZXIgdXNhZ2UKKyAqCisgKiBJbml0aWFsaXplZCB0aHJvdWdoIEluc3RyQWxsb2MsIGZv bGxvd2VkIGJ5IG9uZSBvciBtb3JlIGNhbGxzIHRvIGEgcGFpciBvZgorICogSW5zdHJTdGFydC9J bnN0clN0b3AgKGFjdGl2aXR5IGlzIG1lYXN1cmVkIGluYmV0d2VlbikuCisgKi8KIHR5cGVkZWYg c3RydWN0IEluc3RydW1lbnRhdGlvbgogewotCS8qIFBhcmFtZXRlcnMgc2V0IGF0IG5vZGUgY3Jl YXRpb246ICovCisJLyogUGFyYW1ldGVycyBzZXQgYXQgY3JlYXRpb246ICovCiAJYm9vbAkJbmVl ZF90aW1lcjsJCS8qIHRydWUgaWYgd2UgbmVlZCB0aW1lciBkYXRhICovCiAJYm9vbAkJbmVlZF9i dWZ1c2FnZTsJLyogdHJ1ZSBpZiB3ZSBuZWVkIGJ1ZmZlciB1c2FnZSBkYXRhICovCiAJYm9vbAkJ bmVlZF93YWx1c2FnZTsJLyogdHJ1ZSBpZiB3ZSBuZWVkIFdBTCB1c2FnZSBkYXRhICovCisJLyog SW50ZXJuYWwgc3RhdGUga2VlcGluZzogKi8KKwlpbnN0cl90aW1lCXN0YXJ0dGltZTsJCS8qIHN0 YXJ0IHRpbWUgb2YgbGFzdCBJbnN0clN0YXJ0ICovCisJQnVmZmVyVXNhZ2UgYnVmdXNhZ2Vfc3Rh cnQ7IC8qIGJ1ZmZlciB1c2FnZSBhdCBzdGFydCAqLworCVdhbFVzYWdlCXdhbHVzYWdlX3N0YXJ0 OyAvKiBXQUwgdXNhZ2UgYXQgc3RhcnQgKi8KKwkvKiBBY2N1bXVsYXRlZCBzdGF0aXN0aWNzOiAq LworCWluc3RyX3RpbWUJdG90YWw7CQkJLyogdG90YWwgcnVudGltZSAqLworCUJ1ZmZlclVzYWdl IGJ1ZnVzYWdlOwkJLyogdG90YWwgYnVmZmVyIHVzYWdlICovCisJV2FsVXNhZ2UJd2FsdXNhZ2U7 CQkvKiB0b3RhbCBXQUwgdXNhZ2UgKi8KK30gSW5zdHJ1bWVudGF0aW9uOworCisvKgorICogU3Bl Y2lhbGl6ZWQgaW5zdHJ1bWVudGF0aW9uIGZvciBwZXItbm9kZSBleGVjdXRpb24gc3RhdGlzdGlj cworICovCit0eXBlZGVmIHN0cnVjdCBOb2RlSW5zdHJ1bWVudGF0aW9uCit7CisJSW5zdHJ1bWVu dGF0aW9uIGluc3RyOworCS8qIFBhcmFtZXRlcnMgc2V0IGF0IG5vZGUgY3JlYXRpb246ICovCiAJ Ym9vbAkJYXN5bmNfbW9kZTsJCS8qIHRydWUgaWYgbm9kZSBpcyBpbiBhc3luYyBtb2RlICovCiAJ LyogSW5mbyBhYm91dCBjdXJyZW50IHBsYW4gY3ljbGU6ICovCiAJYm9vbAkJcnVubmluZzsJCS8q IHRydWUgaWYgd2UndmUgY29tcGxldGVkIGZpcnN0IHR1cGxlICovCi0JaW5zdHJfdGltZQlzdGFy dHRpbWU7CQkvKiBzdGFydCB0aW1lIG9mIGN1cnJlbnQgaXRlcmF0aW9uIG9mIG5vZGUgKi8KIAlp bnN0cl90aW1lCWNvdW50ZXI7CQkvKiBhY2N1bXVsYXRlZCBydW50aW1lIGZvciB0aGlzIG5vZGUg Ki8KIAlpbnN0cl90aW1lCWZpcnN0dHVwbGU7CQkvKiB0aW1lIGZvciBmaXJzdCB0dXBsZSBvZiB0 aGlzIGN5Y2xlICovCiAJZG91YmxlCQl0dXBsZWNvdW50OwkJLyogIyBvZiB0dXBsZXMgZW1pdHRl ZCBzbyBmYXIgdGhpcyBjeWNsZSAqLwotCUJ1ZmZlclVzYWdlIGJ1ZnVzYWdlX3N0YXJ0OyAvKiBi dWZmZXIgdXNhZ2UgYXQgc3RhcnQgKi8KLQlXYWxVc2FnZQl3YWx1c2FnZV9zdGFydDsgLyogV0FM IHVzYWdlIGF0IHN0YXJ0ICovCiAJLyogQWNjdW11bGF0ZWQgc3RhdGlzdGljcyBhY3Jvc3MgYWxs IGNvbXBsZXRlZCBjeWNsZXM6ICovCiAJaW5zdHJfdGltZQlzdGFydHVwOwkJLyogdG90YWwgc3Rh cnR1cCB0aW1lICovCi0JaW5zdHJfdGltZQl0b3RhbDsJCQkvKiB0b3RhbCB0aW1lICovCiAJZG91 YmxlCQludHVwbGVzOwkJLyogdG90YWwgdHVwbGVzIHByb2R1Y2VkICovCiAJZG91YmxlCQludHVw bGVzMjsJCS8qIHNlY29uZGFyeSBub2RlLXNwZWNpZmljIHR1cGxlIGNvdW50ZXIgKi8KIAlkb3Vi bGUJCW5sb29wczsJCQkvKiAjIG9mIHJ1biBjeWNsZXMgZm9yIHRoaXMgbm9kZSAqLwogCWRvdWJs ZQkJbmZpbHRlcmVkMTsJCS8qICMgb2YgdHVwbGVzIHJlbW92ZWQgYnkgc2NhbnF1YWwgb3Igam9p bnF1YWwgKi8KIAlkb3VibGUJCW5maWx0ZXJlZDI7CQkvKiAjIG9mIHR1cGxlcyByZW1vdmVkIGJ5 ICJvdGhlciIgcXVhbHMgKi8KLQlCdWZmZXJVc2FnZSBidWZ1c2FnZTsJCS8qIHRvdGFsIGJ1ZmZl ciB1c2FnZSAqLwotCVdhbFVzYWdlCXdhbHVzYWdlOwkJLyogdG90YWwgV0FMIHVzYWdlICovCi19 IEluc3RydW1lbnRhdGlvbjsKK30gTm9kZUluc3RydW1lbnRhdGlvbjsKIAotdHlwZWRlZiBzdHJ1 Y3QgV29ya2VySW5zdHJ1bWVudGF0aW9uCit0eXBlZGVmIHN0cnVjdCBXb3JrZXJOb2RlSW5zdHJ1 bWVudGF0aW9uCiB7CiAJaW50CQkJbnVtX3dvcmtlcnM7CS8qICMgb2Ygc3RydWN0dXJlcyB0aGF0 IGZvbGxvdyAqLwotCUluc3RydW1lbnRhdGlvbiBpbnN0cnVtZW50W0ZMRVhJQkxFX0FSUkFZX01F TUJFUl07Ci19IFdvcmtlckluc3RydW1lbnRhdGlvbjsKKwlOb2RlSW5zdHJ1bWVudGF0aW9uIGlu c3RydW1lbnRbRkxFWElCTEVfQVJSQVlfTUVNQkVSXTsKK30gV29ya2VyTm9kZUluc3RydW1lbnRh dGlvbjsKIAogdHlwZWRlZiBzdHJ1Y3QgVHJpZ2dlckluc3RydW1lbnRhdGlvbgogewpAQCAtMTEw LDE0ICsxMjcsMTkgQEAgdHlwZWRlZiBzdHJ1Y3QgVHJpZ2dlckluc3RydW1lbnRhdGlvbgogZXh0 ZXJuIFBHRExMSU1QT1JUIEJ1ZmZlclVzYWdlIHBnQnVmZmVyVXNhZ2U7CiBleHRlcm4gUEdETExJ TVBPUlQgV2FsVXNhZ2UgcGdXYWxVc2FnZTsKIAotZXh0ZXJuIEluc3RydW1lbnRhdGlvbiAqSW5z dHJBbGxvYyhpbnQgbiwgaW50IGluc3RydW1lbnRfb3B0aW9ucywKLQkJCQkJCQkJICAgYm9vbCBh c3luY19tb2RlKTsKLWV4dGVybiB2b2lkIEluc3RySW5pdChJbnN0cnVtZW50YXRpb24gKmluc3Ry LCBpbnQgaW5zdHJ1bWVudF9vcHRpb25zKTsKLWV4dGVybiB2b2lkIEluc3RyU3RhcnROb2RlKElu c3RydW1lbnRhdGlvbiAqaW5zdHIpOwotZXh0ZXJuIHZvaWQgSW5zdHJTdG9wTm9kZShJbnN0cnVt ZW50YXRpb24gKmluc3RyLCBkb3VibGUgblR1cGxlcyk7Ci1leHRlcm4gdm9pZCBJbnN0clVwZGF0 ZVR1cGxlQ291bnQoSW5zdHJ1bWVudGF0aW9uICppbnN0ciwgZG91YmxlIG5UdXBsZXMpOwotZXh0 ZXJuIHZvaWQgSW5zdHJFbmRMb29wKEluc3RydW1lbnRhdGlvbiAqaW5zdHIpOwotZXh0ZXJuIHZv aWQgSW5zdHJBZ2dOb2RlKEluc3RydW1lbnRhdGlvbiAqZHN0LCBJbnN0cnVtZW50YXRpb24gKmFk ZCk7CitleHRlcm4gSW5zdHJ1bWVudGF0aW9uICpJbnN0ckFsbG9jKGludCBpbnN0cnVtZW50X29w dGlvbnMpOworZXh0ZXJuIHZvaWQgSW5zdHJJbml0T3B0aW9ucyhJbnN0cnVtZW50YXRpb24gKmlu c3RyLCBpbnQgaW5zdHJ1bWVudF9vcHRpb25zKTsKK2V4dGVybiB2b2lkIEluc3RyU3RhcnQoSW5z dHJ1bWVudGF0aW9uICppbnN0cik7CitleHRlcm4gdm9pZCBJbnN0clN0b3AoSW5zdHJ1bWVudGF0 aW9uICppbnN0cik7CisKK2V4dGVybiBOb2RlSW5zdHJ1bWVudGF0aW9uICpJbnN0ckFsbG9jTm9k ZShpbnQgaW5zdHJ1bWVudF9vcHRpb25zLAorCQkJCQkJCQkJCSAgIGJvb2wgYXN5bmNfbW9kZSk7 CitleHRlcm4gdm9pZCBJbnN0ckluaXROb2RlKE5vZGVJbnN0cnVtZW50YXRpb24gKmluc3RyLCBp bnQgaW5zdHJ1bWVudF9vcHRpb25zKTsKK2V4dGVybiB2b2lkIEluc3RyU3RhcnROb2RlKE5vZGVJ bnN0cnVtZW50YXRpb24gKmluc3RyKTsKK2V4dGVybiB2b2lkIEluc3RyU3RvcE5vZGUoTm9kZUlu c3RydW1lbnRhdGlvbiAqaW5zdHIsIGRvdWJsZSBuVHVwbGVzKTsKK2V4dGVybiB2b2lkIEluc3Ry VXBkYXRlVHVwbGVDb3VudChOb2RlSW5zdHJ1bWVudGF0aW9uICppbnN0ciwgZG91YmxlIG5UdXBs ZXMpOworZXh0ZXJuIHZvaWQgSW5zdHJFbmRMb29wKE5vZGVJbnN0cnVtZW50YXRpb24gKmluc3Ry KTsKK2V4dGVybiB2b2lkIEluc3RyQWdnTm9kZShOb2RlSW5zdHJ1bWVudGF0aW9uICpkc3QsIE5v ZGVJbnN0cnVtZW50YXRpb24gKmFkZCk7CiAKIGV4dGVybiBUcmlnZ2VySW5zdHJ1bWVudGF0aW9u ICpJbnN0ckFsbG9jVHJpZ2dlcihpbnQgbiwgaW50IGluc3RydW1lbnRfb3B0aW9ucyk7CiBleHRl cm4gdm9pZCBJbnN0clN0YXJ0VHJpZ2dlcihUcmlnZ2VySW5zdHJ1bWVudGF0aW9uICp0Z2luc3Ry KTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oIGIvc3JjL2luY2x1 ZGUvbm9kZXMvZXhlY25vZGVzLmgKaW5kZXggMTc4MjI5YzVjNDQuLjUwMmFkNGYyZGE1IDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9u b2Rlcy9leGVjbm9kZXMuaApAQCAtNTksNiArNTksNyBAQCB0eXBlZGVmIHN0cnVjdCBTY2FuS2V5 RGF0YSBTY2FuS2V5RGF0YTsKIHR5cGVkZWYgc3RydWN0IFNuYXBzaG90RGF0YSAqU25hcHNob3Q7 CiB0eXBlZGVmIHN0cnVjdCBTb3J0U3VwcG9ydERhdGEgKlNvcnRTdXBwb3J0OwogdHlwZWRlZiBz dHJ1Y3QgVElEQml0bWFwIFRJREJpdG1hcDsKK3R5cGVkZWYgc3RydWN0IE5vZGVJbnN0cnVtZW50 YXRpb24gTm9kZUluc3RydW1lbnRhdGlvbjsKIHR5cGVkZWYgc3RydWN0IFRyaWdnZXJJbnN0cnVt ZW50YXRpb24gVHJpZ2dlckluc3RydW1lbnRhdGlvbjsKIHR5cGVkZWYgc3RydWN0IFR1cGxlQ29u dmVyc2lvbk1hcCBUdXBsZUNvbnZlcnNpb25NYXA7CiB0eXBlZGVmIHN0cnVjdCBUdXBsZURlc2NE YXRhICpUdXBsZURlc2M7CkBAIC02Nyw3ICs2OCw3IEBAIHR5cGVkZWYgc3RydWN0IFR1cGxlc3Rv cmVzdGF0ZSBUdXBsZXN0b3Jlc3RhdGU7CiB0eXBlZGVmIHN0cnVjdCBUdXBsZVRhYmxlU2xvdCBU dXBsZVRhYmxlU2xvdDsKIHR5cGVkZWYgc3RydWN0IFR1cGxlVGFibGVTbG90T3BzIFR1cGxlVGFi bGVTbG90T3BzOwogdHlwZWRlZiBzdHJ1Y3QgV2FsVXNhZ2UgV2FsVXNhZ2U7Ci10eXBlZGVmIHN0 cnVjdCBXb3JrZXJJbnN0cnVtZW50YXRpb24gV29ya2VySW5zdHJ1bWVudGF0aW9uOwordHlwZWRl ZiBzdHJ1Y3QgV29ya2VyTm9kZUluc3RydW1lbnRhdGlvbiBXb3JrZXJOb2RlSW5zdHJ1bWVudGF0 aW9uOwogCiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0KQEAgLTExODUsOCArMTE4NiwxMCBAQCB0eXBl ZGVmIHN0cnVjdCBQbGFuU3RhdGUKIAlFeGVjUHJvY05vZGVNdGQgRXhlY1Byb2NOb2RlUmVhbDsJ LyogYWN0dWFsIGZ1bmN0aW9uLCBpZiBhYm92ZSBpcyBhCiAJCQkJCQkJCQkJICogd3JhcHBlciAq LwogCi0JSW5zdHJ1bWVudGF0aW9uICppbnN0cnVtZW50OwkvKiBPcHRpb25hbCBydW50aW1lIHN0 YXRzIGZvciB0aGlzIG5vZGUgKi8KLQlXb3JrZXJJbnN0cnVtZW50YXRpb24gKndvcmtlcl9pbnN0 cnVtZW50OwkvKiBwZXItd29ya2VyIGluc3RydW1lbnRhdGlvbiAqLworCU5vZGVJbnN0cnVtZW50 YXRpb24gKmluc3RydW1lbnQ7CS8qIE9wdGlvbmFsIHJ1bnRpbWUgc3RhdHMgZm9yIHRoaXMKKwkJ CQkJCQkJCQkgKiBub2RlICovCisJV29ya2VyTm9kZUluc3RydW1lbnRhdGlvbiAqd29ya2VyX2lu c3RydW1lbnQ7CS8qIHBlci13b3JrZXIKKwkJCQkJCQkJCQkJCQkgKiBpbnN0cnVtZW50YXRpb24g Ki8KIAogCS8qIFBlci13b3JrZXIgSklUIGluc3RydW1lbnRhdGlvbiAqLwogCXN0cnVjdCBTaGFy ZWRKaXRJbnN0cnVtZW50YXRpb24gKndvcmtlcl9qaXRfaW5zdHJ1bWVudDsKZGlmZiAtLWdpdCBh L3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5 cGVkZWZzLmxpc3QKaW5kZXggZjc3OGMyODMwMzQuLjAwZGQxZmM2ZmY5IDEwMDY0NAotLS0gYS9z cmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRlbnQv dHlwZWRlZnMubGlzdApAQCAtMTgwOCw2ICsxODA4LDcgQEAgTmV4dFNhbXBsZUJsb2NrX2Z1bmN0 aW9uCiBOZXh0U2FtcGxlVHVwbGVfZnVuY3Rpb24KIE5leHRWYWx1ZUV4cHIKIE5vZGUKK05vZGVJ bnN0cnVtZW50YXRpb24KIE5vZGVUYWcKIE5vbkVtcHR5UmFuZ2UKIE5vbmVDb21wcmVzc29yU3Rh dGUKQEAgLTM0MTgsOSArMzQxOSw5IEBAIFdvcmtUYWJsZVNjYW4KIFdvcmtUYWJsZVNjYW5TdGF0 ZQogV29ya2VySW5mbwogV29ya2VySW5mb0RhdGEKLVdvcmtlckluc3RydW1lbnRhdGlvbgogV29y a2VySm9iRHVtcFB0clR5cGUKIFdvcmtlckpvYlJlc3RvcmVQdHJUeXBlCitXb3JrZXJOb2RlSW5z dHJ1bWVudGF0aW9uCiBXb3JraW5nX1N0YXRlCiBXcml0ZUJ1ZlB0clR5cGUKIFdyaXRlQnl0ZVB0 clR5cGUKLS0gCjIuNDcuMQoK --0000000000005bb84b064dfc5b57 Content-Type: application/octet-stream; name="v11-0004-instrumentation-Add-additional-regression-tests-.patch" Content-Disposition: attachment; filename="v11-0004-instrumentation-Add-additional-regression-tests-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mn8k89ym3 RnJvbSAxNGIyZGU5OTNlY2YyZDIyNTg3OTdkNjRiYjE1ZjM5ZTFkN2NiNjdhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpEYXRlOiBT dW4sIDIyIEZlYiAyMDI2IDE2OjEyOjQ4IC0wODAwClN1YmplY3Q6IFtQQVRDSCB2MTEgNC85XSBp bnN0cnVtZW50YXRpb246IEFkZCBhZGRpdGlvbmFsIHJlZ3Jlc3Npb24gdGVzdHMKIGNvdmVyaW5n IGJ1ZmZlciB1c2FnZQoKVGhpcyBhZGRzIHJlZ3Jlc3Npb24gdGVzdHMgdGhhdCBjb3ZlciBzb21l IG9mIHRoZSBleHBlY3RlZCBiZWhhdmlvdXIKYXJvdW5kIHRoZSBidWZmZXIgc3RhdGlzdGljcyBy ZXBvcnRlZCBpbiBFWFBMQUlOIEFOQUxZWkUsIHNwZWNpZmljYWxseQpob3cgdGhleSBiZWhhdmUg aW4gcGFyYWxsZWwgcXVlcnksIG5lc3RlZCBmdW5jdGlvbiBjYWxscyBhbmQgYWJvcnQKc2l0dWF0 aW9ucy4KClRlc3RpbmcgdGhpcyBpcyBjaGFsbGVuZ2luZyBiZWNhdXNlIHRoZXJlIGNhbiBiZSBk aWZmZXJlbnQgc291cmNlcyBvZgpidWZmZXIgYWN0aXZpdHksIHNvIHdlIHJlbHkgb24gdGVtcG9y YXJ5IHRhYmxlcyB3aGVyZSB3ZSBjYW4gdG8gcHJvdmUKdGhhdCBhY3Rpdml0eSB3YXMgY2FwdHVy ZWQgYW5kIG5vdCBsb3N0LiBUaGlzIHN1cHBvcnRzIGEgZnV0dXJlIGNvbW1pdAp0aGF0IHdpbGwg cmV3b3JrIHNvbWUgb2YgdGhlIGluc3RydW1lbnRhdGlvbiBsb2dpYyB0aGF0IGNvdWxkIGNhdXNl CmFyZWFzIGNvdmVyZWQgYnkgdGhlc2UgdGVzdHMgdG8gZmFpbC4KCkF1dGhvcjogTHVrYXMgRml0 dGwgPGx1a2FzQGZpdHRsLmNvbT4KUmV2aWV3ZWQtYnk6CkRpc2N1c3Npb246Ci0tLQogLi4uL3Bn X3N0YXRfc3RhdGVtZW50cy9leHBlY3RlZC91dGlsaXR5Lm91dCAgIHwgIDcwICsrKysrKysKIGNv bnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL2V4cGVjdGVkL3dhbC5vdXQgICB8ICA0OCArKysrKwog Y29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvc3FsL3V0aWxpdHkuc3FsICAgIHwgIDU2ICsrKysr CiBjb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9zcWwvd2FsLnNxbCAgICAgICAgfCAgMzMgKysr CiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2V4cGxhaW4ub3V0ICAgICAgICAgfCAxOTcgKysr KysrKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9leHBsYWluLnNxbCAgICAgICAg ICAgICAgfCAxOTQgKysrKysrKysrKysrKysrKysKIDYgZmlsZXMgY2hhbmdlZCwgNTk4IGluc2Vy dGlvbnMoKykKCmRpZmYgLS1naXQgYS9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9leHBlY3Rl ZC91dGlsaXR5Lm91dCBiL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL2V4cGVjdGVkL3V0aWxp dHkub3V0CmluZGV4IGU0ZDY1NjRlYTViLi5jYmE0ODdmNmJlNSAxMDA2NDQKLS0tIGEvY29udHJp Yi9wZ19zdGF0X3N0YXRlbWVudHMvZXhwZWN0ZWQvdXRpbGl0eS5vdXQKKysrIGIvY29udHJpYi9w Z19zdGF0X3N0YXRlbWVudHMvZXhwZWN0ZWQvdXRpbGl0eS5vdXQKQEAgLTI4OSw2ICsyODksNzYg QEAgU0VMRUNUIGNhbGxzLCByb3dzLCBxdWVyeSBGUk9NIHBnX3N0YXRfc3RhdGVtZW50cyBPUkRF UiBCWSBxdWVyeSBDT0xMQVRFICJDIjsKICAgICAgMSB8ICAgIDEgfCBTRUxFQ1QgcGdfc3RhdF9z dGF0ZW1lbnRzX3Jlc2V0KCkgSVMgTk9UIE5VTEwgQVMgdAogKDMgcm93cykKIAorLS0gQnVmZmVy IHN0YXRzIHNob3VsZCBmbG93IHRocm91Z2ggRVhQTEFJTiBBTkFMWVpFCitDUkVBVEUgVEVNUCBU QUJMRSBmbG93X3Rocm91Z2hfdGVzdCAoYSBpbnQsIGIgY2hhcigyMDApKTsKK0lOU0VSVCBJTlRP IGZsb3dfdGhyb3VnaF90ZXN0IFNFTEVDVCBpLCByZXBlYXQoJ3gnLCAyMDApIEZST00gZ2VuZXJh dGVfc2VyaWVzKDEsIDUwMDApIEFTIGk7CitDUkVBVEUgRlVOQ1RJT04gcnVuX2V4cGxhaW5fYnVm ZmVyc190ZXN0KCkgUkVUVVJOUyB2b2lkIEFTICQkCitERUNMQVJFCitCRUdJTgorICAgIEVYRUNV VEUgJ0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMpIFNFTEVDVCAqIEZST00gZmxvd190aHJvdWdo X3Rlc3QnOworRU5EOworJCQgTEFOR1VBR0UgcGxwZ3NxbDsKK1NFTEVDVCBwZ19zdGF0X3N0YXRl bWVudHNfcmVzZXQoKSBJUyBOT1QgTlVMTCBBUyB0OworIHQgCistLS0KKyB0CisoMSByb3cpCisK K1NFTEVDVCBydW5fZXhwbGFpbl9idWZmZXJzX3Rlc3QoKTsKKyBydW5fZXhwbGFpbl9idWZmZXJz X3Rlc3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCistLSBFWFBM QUlOIGVudHJpZXMgc2hvdWxkIGhhdmUgbm9uLXplcm8gYnVmZmVyIHN0YXRzCitTRUxFQ1QgcXVl cnksIGxvY2FsX2Jsa3NfaGl0ICsgbG9jYWxfYmxrc19yZWFkID4gMCBhcyBoYXNfYnVmZmVyX3N0 YXRzCitGUk9NIHBnX3N0YXRfc3RhdGVtZW50cworV0hFUkUgcXVlcnkgTElLRSAnU0VMRUNUIHJ1 bl9leHBsYWluX2J1ZmZlcnNfdGVzdCUnCitPUkRFUiBCWSBxdWVyeSBDT0xMQVRFICJDIjsKKyAg ICAgICAgICAgICAgIHF1ZXJ5ICAgICAgICAgICAgICAgfCBoYXNfYnVmZmVyX3N0YXRzIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgU0VM RUNUIHJ1bl9leHBsYWluX2J1ZmZlcnNfdGVzdCgpIHwgdAorKDEgcm93KQorCitEUk9QIEZVTkNU SU9OIHJ1bl9leHBsYWluX2J1ZmZlcnNfdGVzdDsKK0RST1AgVEFCTEUgZmxvd190aHJvdWdoX3Rl c3Q7CistLSBWYWxpZGF0ZSBidWZmZXIvV0FMIGNvdW50aW5nIGR1cmluZyBhYm9ydAorU0VUIHBn X3N0YXRfc3RhdGVtZW50cy50cmFjayA9ICdhbGwnOworQ1JFQVRFIFRFTVAgVEFCTEUgcGdzc19j YWxsX3RhYiAoYSBpbnQsIGIgY2hhcigyMCkpOworQ1JFQVRFIFRFTVAgVEFCTEUgcGdzc19jYWxs X3RhYjIgKGEgaW50LCBiIGNoYXIoMjApKTsKK0lOU0VSVCBJTlRPIHBnc3NfY2FsbF90YWIgVkFM VUVTICgwLCAnenp6Jyk7CitDUkVBVEUgUFJPQ0VEVVJFIHBnc3NfY2FsbF9yb2xsYmFja19wcm9j KCkgQVMgJCQKK0RFQ0xBUkUKKyAgICB2IGludDsKK0JFR0lOCisgICAgRVhQTEFJTiBBTkFMWVpF IFdJVEggaW5zIEFTIChJTlNFUlQgSU5UTyBwZ3NzX2NhbGxfdGFiMiBTRUxFQ1QgKiBGUk9NIHBn c3NfY2FsbF90YWIgUkVUVVJOSU5HIGEpCisgICAgU0VMRUNUIGEgLyAwIElOVE8gdiBGUk9NIGlu czsKK0VYQ0VQVElPTiBXSEVOIGRpdmlzaW9uX2J5X3plcm8gVEhFTgorRU5EOworJCQgTEFOR1VB R0UgcGxwZ3NxbDsKK1NFTEVDVCBwZ19zdGF0X3N0YXRlbWVudHNfcmVzZXQoKSBJUyBOT1QgTlVM TCBBUyB0OworIHQgCistLS0KKyB0CisoMSByb3cpCisKK0NBTEwgcGdzc19jYWxsX3JvbGxiYWNr X3Byb2MoKTsKK1NFTEVDVCBxdWVyeSwgY2FsbHMsCitsb2NhbF9ibGtzX2hpdCArIGxvY2FsX2Js a3NfcmVhZCA+IDAgYXMgbG9jYWxfaGl0cmVhZCwKK3dhbF9ieXRlcyA+IDAgYXMgd2FsX2J5dGVz X2dlbmVyYXRlZCwKK3dhbF9yZWNvcmRzID4gMCBhcyB3YWxfcmVjb3Jkc19nZW5lcmF0ZWQKK0ZS T00gcGdfc3RhdF9zdGF0ZW1lbnRzCitXSEVSRSBxdWVyeSBMSUtFICclcGdzc19jYWxsX3JvbGxi YWNrX3Byb2MlJworT1JERVIgQlkgcXVlcnkgQ09MTEFURSAiQyI7CisgICAgICAgICAgICAgcXVl cnkgICAgICAgICAgICAgIHwgY2FsbHMgfCBsb2NhbF9oaXRyZWFkIHwgd2FsX2J5dGVzX2dlbmVy YXRlZCB8IHdhbF9yZWNvcmRzX2dlbmVyYXRlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIENBTEwgcGdzc19jYWxsX3JvbGxiYWNrX3Byb2MoKSB8ICAg ICAxIHwgdCAgICAgICAgICAgICB8IHQgICAgICAgICAgICAgICAgICAgfCB0CisoMSByb3cpCisK K0RST1AgVEFCTEUgcGdzc19jYWxsX3RhYjI7CitEUk9QIFRBQkxFIHBnc3NfY2FsbF90YWI7CitE Uk9QIFBST0NFRFVSRSBwZ3NzX2NhbGxfcm9sbGJhY2tfcHJvYzsKK1NFVCBwZ19zdGF0X3N0YXRl bWVudHMudHJhY2sgPSAndG9wJzsKIC0tIENBTEwKIENSRUFURSBPUiBSRVBMQUNFIFBST0NFRFVS RSBzdW1fb25lKGkgaW50KSBBUyAkJAogREVDTEFSRQpkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ19z dGF0X3N0YXRlbWVudHMvZXhwZWN0ZWQvd2FsLm91dCBiL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1l bnRzL2V4cGVjdGVkL3dhbC5vdXQKaW5kZXggOTc3ZTM4MmQ4NDguLjYxMTIxM2RhZWY2IDEwMDY0 NAotLS0gYS9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9leHBlY3RlZC93YWwub3V0CisrKyBi L2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL2V4cGVjdGVkL3dhbC5vdXQKQEAgLTI4LDMgKzI4 LDUxIEBAIFNFTEVDVCBwZ19zdGF0X3N0YXRlbWVudHNfcmVzZXQoKSBJUyBOT1QgTlVMTCBBUyB0 OwogIHQKICgxIHJvdykKIAorLS0KKy0tIFZhbGlkYXRlIGJ1ZmZlci9XQUwgY291bnRpbmcgd2l0 aCBjYXVnaHQgZXhjZXB0aW9uIGluIFBML3BnU1FMCistLQorQ1JFQVRFIFRFTVAgVEFCTEUgcGdz c19lcnJvcl90YWIgKGEgaW50LCBiIGNoYXIoMjApKTsKK0lOU0VSVCBJTlRPIHBnc3NfZXJyb3Jf dGFiIFZBTFVFUyAoMCwgJ3p6eicpOworQ1JFQVRFIEZVTkNUSU9OIHBnc3NfZXJyb3JfZnVuYygp IFJFVFVSTlMgdm9pZCBBUyAkJAorREVDTEFSRQorICAgIHYgaW50OworQkVHSU4KKyAgICBXSVRI IGlucyBBUyAoSU5TRVJUIElOVE8gcGdzc19lcnJvcl90YWIgVkFMVUVTICgxLCAnYWFhJykgUkVU VVJOSU5HIGEpCisgICAgU0VMRUNUIGEgLyAwIElOVE8gdiBGUk9NIGluczsKK0VYQ0VQVElPTiBX SEVOIGRpdmlzaW9uX2J5X3plcm8gVEhFTgorICAgIE5VTEw7CitFTkQ7CiskJCBMQU5HVUFHRSBw bHBnc3FsOworU0VMRUNUIHBnX3N0YXRfc3RhdGVtZW50c19yZXNldCgpIElTIE5PVCBOVUxMIEFT IHQ7CisgdCAKKy0tLQorIHQKKygxIHJvdykKKworU0VMRUNUIHBnc3NfZXJyb3JfZnVuYygpOwor IHBnc3NfZXJyb3JfZnVuYyAKKy0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKKy0tIEJ1 ZmZlci9XQUwgdXNhZ2UgZnJvbSB0aGUgd0NURSBJTlNFUlQgc2hvdWxkIHN1cnZpdmUgdGhlIGV4 Y2VwdGlvbgorU0VMRUNUIHF1ZXJ5LCBjYWxscywKK2xvY2FsX2Jsa3NfaGl0ICsgbG9jYWxfYmxr c19yZWFkID4gMCBhcyBsb2NhbF9oaXRyZWFkLAord2FsX2J5dGVzID4gMCBhcyB3YWxfYnl0ZXNf Z2VuZXJhdGVkLAord2FsX3JlY29yZHMgPiAwIGFzIHdhbF9yZWNvcmRzX2dlbmVyYXRlZAorRlJP TSBwZ19zdGF0X3N0YXRlbWVudHMKK1dIRVJFIHF1ZXJ5IExJS0UgJyVwZ3NzX2Vycm9yX2Z1bmMl JworT1JERVIgQlkgcXVlcnkgQ09MTEFURSAiQyI7CisgICAgICAgICAgcXVlcnkgICAgICAgICAg IHwgY2FsbHMgfCBsb2NhbF9oaXRyZWFkIHwgd2FsX2J5dGVzX2dlbmVyYXRlZCB8IHdhbF9yZWNv cmRzX2dlbmVyYXRlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IFNFTEVDVCBwZ3NzX2Vycm9yX2Z1bmMoKSB8ICAgICAxIHwgdCAgICAgICAgICAgICB8IHQgICAg ICAgICAgICAgICAgICAgfCB0CisoMSByb3cpCisKK0RST1AgVEFCTEUgcGdzc19lcnJvcl90YWI7 CitEUk9QIEZVTkNUSU9OIHBnc3NfZXJyb3JfZnVuYzsKK1NFTEVDVCBwZ19zdGF0X3N0YXRlbWVu dHNfcmVzZXQoKSBJUyBOT1QgTlVMTCBBUyB0OworIHQgCistLS0KKyB0CisoMSByb3cpCisKZGlm ZiAtLWdpdCBhL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3NxbC91dGlsaXR5LnNxbCBiL2Nv bnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3NxbC91dGlsaXR5LnNxbAppbmRleCBkZDk3MjAzYzIx MC4uNzU0MGU0OWM3M2MgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3Nx bC91dGlsaXR5LnNxbAorKysgYi9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9zcWwvdXRpbGl0 eS5zcWwKQEAgLTE1Miw2ICsxNTIsNjIgQEAgRVhQTEFJTiAoY29zdHMgb2ZmKSBTRUxFQ1QgYSBG Uk9NIGdlbmVyYXRlX3NlcmllcygxLDEwKSBBUyB0YWIoYSkgV0hFUkUgYSA9IDc7CiAKIFNFTEVD VCBjYWxscywgcm93cywgcXVlcnkgRlJPTSBwZ19zdGF0X3N0YXRlbWVudHMgT1JERVIgQlkgcXVl cnkgQ09MTEFURSAiQyI7CiAKKy0tIEJ1ZmZlciBzdGF0cyBzaG91bGQgZmxvdyB0aHJvdWdoIEVY UExBSU4gQU5BTFlaRQorQ1JFQVRFIFRFTVAgVEFCTEUgZmxvd190aHJvdWdoX3Rlc3QgKGEgaW50 LCBiIGNoYXIoMjAwKSk7CitJTlNFUlQgSU5UTyBmbG93X3Rocm91Z2hfdGVzdCBTRUxFQ1QgaSwg cmVwZWF0KCd4JywgMjAwKSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MDAwKSBBUyBpOworCitD UkVBVEUgRlVOQ1RJT04gcnVuX2V4cGxhaW5fYnVmZmVyc190ZXN0KCkgUkVUVVJOUyB2b2lkIEFT ICQkCitERUNMQVJFCitCRUdJTgorICAgIEVYRUNVVEUgJ0VYUExBSU4gKEFOQUxZWkUsIEJVRkZF UlMpIFNFTEVDVCAqIEZST00gZmxvd190aHJvdWdoX3Rlc3QnOworRU5EOworJCQgTEFOR1VBR0Ug cGxwZ3NxbDsKKworU0VMRUNUIHBnX3N0YXRfc3RhdGVtZW50c19yZXNldCgpIElTIE5PVCBOVUxM IEFTIHQ7CisKK1NFTEVDVCBydW5fZXhwbGFpbl9idWZmZXJzX3Rlc3QoKTsKKworLS0gRVhQTEFJ TiBlbnRyaWVzIHNob3VsZCBoYXZlIG5vbi16ZXJvIGJ1ZmZlciBzdGF0cworU0VMRUNUIHF1ZXJ5 LCBsb2NhbF9ibGtzX2hpdCArIGxvY2FsX2Jsa3NfcmVhZCA+IDAgYXMgaGFzX2J1ZmZlcl9zdGF0 cworRlJPTSBwZ19zdGF0X3N0YXRlbWVudHMKK1dIRVJFIHF1ZXJ5IExJS0UgJ1NFTEVDVCBydW5f ZXhwbGFpbl9idWZmZXJzX3Rlc3QlJworT1JERVIgQlkgcXVlcnkgQ09MTEFURSAiQyI7CisKK0RS T1AgRlVOQ1RJT04gcnVuX2V4cGxhaW5fYnVmZmVyc190ZXN0OworRFJPUCBUQUJMRSBmbG93X3Ro cm91Z2hfdGVzdDsKKworLS0gVmFsaWRhdGUgYnVmZmVyL1dBTCBjb3VudGluZyBkdXJpbmcgYWJv cnQKK1NFVCBwZ19zdGF0X3N0YXRlbWVudHMudHJhY2sgPSAnYWxsJzsKK0NSRUFURSBURU1QIFRB QkxFIHBnc3NfY2FsbF90YWIgKGEgaW50LCBiIGNoYXIoMjApKTsKK0NSRUFURSBURU1QIFRBQkxF IHBnc3NfY2FsbF90YWIyIChhIGludCwgYiBjaGFyKDIwKSk7CitJTlNFUlQgSU5UTyBwZ3NzX2Nh bGxfdGFiIFZBTFVFUyAoMCwgJ3p6eicpOworCitDUkVBVEUgUFJPQ0VEVVJFIHBnc3NfY2FsbF9y b2xsYmFja19wcm9jKCkgQVMgJCQKK0RFQ0xBUkUKKyAgICB2IGludDsKK0JFR0lOCisgICAgRVhQ TEFJTiBBTkFMWVpFIFdJVEggaW5zIEFTIChJTlNFUlQgSU5UTyBwZ3NzX2NhbGxfdGFiMiBTRUxF Q1QgKiBGUk9NIHBnc3NfY2FsbF90YWIgUkVUVVJOSU5HIGEpCisgICAgU0VMRUNUIGEgLyAwIElO VE8gdiBGUk9NIGluczsKK0VYQ0VQVElPTiBXSEVOIGRpdmlzaW9uX2J5X3plcm8gVEhFTgorRU5E OworJCQgTEFOR1VBR0UgcGxwZ3NxbDsKKworU0VMRUNUIHBnX3N0YXRfc3RhdGVtZW50c19yZXNl dCgpIElTIE5PVCBOVUxMIEFTIHQ7CitDQUxMIHBnc3NfY2FsbF9yb2xsYmFja19wcm9jKCk7CisK K1NFTEVDVCBxdWVyeSwgY2FsbHMsCitsb2NhbF9ibGtzX2hpdCArIGxvY2FsX2Jsa3NfcmVhZCA+ IDAgYXMgbG9jYWxfaGl0cmVhZCwKK3dhbF9ieXRlcyA+IDAgYXMgd2FsX2J5dGVzX2dlbmVyYXRl ZCwKK3dhbF9yZWNvcmRzID4gMCBhcyB3YWxfcmVjb3Jkc19nZW5lcmF0ZWQKK0ZST00gcGdfc3Rh dF9zdGF0ZW1lbnRzCitXSEVSRSBxdWVyeSBMSUtFICclcGdzc19jYWxsX3JvbGxiYWNrX3Byb2Ml JworT1JERVIgQlkgcXVlcnkgQ09MTEFURSAiQyI7CisKK0RST1AgVEFCTEUgcGdzc19jYWxsX3Rh YjI7CitEUk9QIFRBQkxFIHBnc3NfY2FsbF90YWI7CitEUk9QIFBST0NFRFVSRSBwZ3NzX2NhbGxf cm9sbGJhY2tfcHJvYzsKK1NFVCBwZ19zdGF0X3N0YXRlbWVudHMudHJhY2sgPSAndG9wJzsKKwog LS0gQ0FMTAogQ1JFQVRFIE9SIFJFUExBQ0UgUFJPQ0VEVVJFIHN1bV9vbmUoaSBpbnQpIEFTICQk CiBERUNMQVJFCmRpZmYgLS1naXQgYS9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9zcWwvd2Fs LnNxbCBiL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3NxbC93YWwuc3FsCmluZGV4IDFkYzE1 NTJhODFlLi40NjdlMzIxYjIwNiAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVu dHMvc3FsL3dhbC5zcWwKKysrIGIvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvc3FsL3dhbC5z cWwKQEAgLTE4LDMgKzE4LDM2IEBAIHdhbF9yZWNvcmRzID4gMCBhcyB3YWxfcmVjb3Jkc19nZW5l cmF0ZWQsCiB3YWxfcmVjb3JkcyA+PSByb3dzIGFzIHdhbF9yZWNvcmRzX2dlX3Jvd3MKIEZST00g cGdfc3RhdF9zdGF0ZW1lbnRzIE9SREVSIEJZIHF1ZXJ5IENPTExBVEUgIkMiOwogU0VMRUNUIHBn X3N0YXRfc3RhdGVtZW50c19yZXNldCgpIElTIE5PVCBOVUxMIEFTIHQ7CisKKy0tCistLSBWYWxp ZGF0ZSBidWZmZXIvV0FMIGNvdW50aW5nIHdpdGggY2F1Z2h0IGV4Y2VwdGlvbiBpbiBQTC9wZ1NR TAorLS0KK0NSRUFURSBURU1QIFRBQkxFIHBnc3NfZXJyb3JfdGFiIChhIGludCwgYiBjaGFyKDIw KSk7CitJTlNFUlQgSU5UTyBwZ3NzX2Vycm9yX3RhYiBWQUxVRVMgKDAsICd6enonKTsKKworQ1JF QVRFIEZVTkNUSU9OIHBnc3NfZXJyb3JfZnVuYygpIFJFVFVSTlMgdm9pZCBBUyAkJAorREVDTEFS RQorICAgIHYgaW50OworQkVHSU4KKyAgICBXSVRIIGlucyBBUyAoSU5TRVJUIElOVE8gcGdzc19l cnJvcl90YWIgVkFMVUVTICgxLCAnYWFhJykgUkVUVVJOSU5HIGEpCisgICAgU0VMRUNUIGEgLyAw IElOVE8gdiBGUk9NIGluczsKK0VYQ0VQVElPTiBXSEVOIGRpdmlzaW9uX2J5X3plcm8gVEhFTgor ICAgIE5VTEw7CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBnc3FsOworCitTRUxFQ1QgcGdfc3RhdF9z dGF0ZW1lbnRzX3Jlc2V0KCkgSVMgTk9UIE5VTEwgQVMgdDsKK1NFTEVDVCBwZ3NzX2Vycm9yX2Z1 bmMoKTsKKworLS0gQnVmZmVyL1dBTCB1c2FnZSBmcm9tIHRoZSB3Q1RFIElOU0VSVCBzaG91bGQg c3Vydml2ZSB0aGUgZXhjZXB0aW9uCitTRUxFQ1QgcXVlcnksIGNhbGxzLAorbG9jYWxfYmxrc19o aXQgKyBsb2NhbF9ibGtzX3JlYWQgPiAwIGFzIGxvY2FsX2hpdHJlYWQsCit3YWxfYnl0ZXMgPiAw IGFzIHdhbF9ieXRlc19nZW5lcmF0ZWQsCit3YWxfcmVjb3JkcyA+IDAgYXMgd2FsX3JlY29yZHNf Z2VuZXJhdGVkCitGUk9NIHBnX3N0YXRfc3RhdGVtZW50cworV0hFUkUgcXVlcnkgTElLRSAnJXBn c3NfZXJyb3JfZnVuYyUnCitPUkRFUiBCWSBxdWVyeSBDT0xMQVRFICJDIjsKKworRFJPUCBUQUJM RSBwZ3NzX2Vycm9yX3RhYjsKK0RST1AgRlVOQ1RJT04gcGdzc19lcnJvcl9mdW5jOworU0VMRUNU IHBnX3N0YXRfc3RhdGVtZW50c19yZXNldCgpIElTIE5PVCBOVUxMIEFTIHQ7CmRpZmYgLS1naXQg YS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2V4cGxhaW4ub3V0IGIvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9leHBsYWluLm91dAppbmRleCA3YzFmMjZiMTgyYy4uZTI4ZTc1NDM2OTMgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZXhwbGFpbi5vdXQKKysrIGIvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9leHBsYWluLm91dApAQCAtODIyLDMgKzgyMiwyMDAgQEAg c2VsZWN0IGV4cGxhaW5fZmlsdGVyKCdleHBsYWluIChhbmFseXplLGJ1ZmZlcnMgb2ZmLGNvc3Rz IG9mZikgc2VsZWN0IHN1bShuKSBvdmUKICg5IHJvd3MpCiAKIHJlc2V0IHdvcmtfbWVtOworLS0g RVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUykgc2hvdWxkIHJlcG9ydCBidWZmZXIgdXNhZ2UgZnJv bSBQTC9wZ1NRTAorLS0gRVhDRVBUSU9OIGJsb2NrcywgZXZlbiBhZnRlciBzdWJ0cmFuc2FjdGlv biByb2xsYmFjay4KK0NSRUFURSBURU1QIFRBQkxFIGV4cGxhaW5fZXhjX3RhYiAoYSBpbnQsIGIg Y2hhcigyMCkpOworSU5TRVJUIElOVE8gZXhwbGFpbl9leGNfdGFiIFZBTFVFUyAoMCwgJ3p6eicp OworQ1JFQVRFIEZVTkNUSU9OIGV4cGxhaW5fZXhjX2Z1bmMoKSBSRVRVUk5TIHZvaWQgQVMgJCQK K0RFQ0xBUkUKKyAgICB2IGludDsKK0JFR0lOCisgICAgV0lUSCBpbnMgQVMgKElOU0VSVCBJTlRP IGV4cGxhaW5fZXhjX3RhYiBWQUxVRVMgKDEsICdhYWEnKSBSRVRVUk5JTkcgYSkKKyAgICBTRUxF Q1QgYSAvIDAgSU5UTyB2IEZST00gaW5zOworRVhDRVBUSU9OIFdIRU4gZGl2aXNpb25fYnlfemVy byBUSEVOCisgICAgTlVMTDsKK0VORDsKKyQkIExBTkdVQUdFIHBscGdzcWw7CitDUkVBVEUgRlVO Q1RJT04gY2hlY2tfZXhwbGFpbl9leGNlcHRpb25fYnVmZmVycygpIFJFVFVSTlMgYm9vbGVhbiBB UyAkJAorREVDTEFSRQorICAgIHBsYW5fanNvbiBqc29uOworICAgIG5vZGUganNvbjsKKyAgICB0 b3RhbF9idWZmZXJzIGludDsKK0JFR0lOCisgICAgRVhFQ1VURSAnRVhQTEFJTiAoQU5BTFlaRSwg QlVGRkVSUywgQ09TVFMgT0ZGLCBGT1JNQVQgSlNPTikKKyAgICAgICAgU0VMRUNUIGV4cGxhaW5f ZXhjX2Z1bmMoKScgSU5UTyBwbGFuX2pzb247CisgICAgbm9kZSA6PSBwbGFuX2pzb24tPjAtPidQ bGFuJzsKKyAgICB0b3RhbF9idWZmZXJzIDo9CisgICAgICAgIENPQUxFU0NFKChub2RlLT4+J0xv Y2FsIEhpdCBCbG9ja3MnKTo6aW50LCAwKSArCisgICAgICAgIENPQUxFU0NFKChub2RlLT4+J0xv Y2FsIFJlYWQgQmxvY2tzJyk6OmludCwgMCk7CisgICAgUkVUVVJOIHRvdGFsX2J1ZmZlcnMgPiAw OworRU5EOworJCQgTEFOR1VBR0UgcGxwZ3NxbDsKK1NFTEVDVCBjaGVja19leHBsYWluX2V4Y2Vw dGlvbl9idWZmZXJzKCkgQVMgZXhjZXB0aW9uX2J1ZmZlcnNfdmlzaWJsZTsKKyBleGNlcHRpb25f YnVmZmVyc192aXNpYmxlIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgdAorKDEgcm93 KQorCistLSBBbHNvIHRlc3Qgd2l0aCBuZXN0ZWQgRVhQTEFJTiBBTkFMWVpFICh0d28gbGV2ZWxz IG9mIGluc3RydW1lbnRhdGlvbikKK0NSRUFURSBGVU5DVElPTiBjaGVja19leHBsYWluX2V4Y2Vw dGlvbl9idWZmZXJzX25lc3RlZCgpIFJFVFVSTlMgYm9vbGVhbiBBUyAkJAorREVDTEFSRQorICAg IHBsYW5fanNvbiBqc29uOworICAgIG5vZGUganNvbjsKKyAgICB0b3RhbF9idWZmZXJzIGludDsK K0JFR0lOCisgICAgRVhFQ1VURSAnRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUywgQ09TVFMgT0ZG LCBGT1JNQVQgSlNPTikKKyAgICAgICAgU0VMRUNUIGNoZWNrX2V4cGxhaW5fZXhjZXB0aW9uX2J1 ZmZlcnMoKScgSU5UTyBwbGFuX2pzb247CisgICAgbm9kZSA6PSBwbGFuX2pzb24tPjAtPidQbGFu JzsKKyAgICB0b3RhbF9idWZmZXJzIDo9CisgICAgICAgIENPQUxFU0NFKChub2RlLT4+J0xvY2Fs IEhpdCBCbG9ja3MnKTo6aW50LCAwKSArCisgICAgICAgIENPQUxFU0NFKChub2RlLT4+J0xvY2Fs IFJlYWQgQmxvY2tzJyk6OmludCwgMCk7CisgICAgUkVUVVJOIHRvdGFsX2J1ZmZlcnMgPiAwOwor RU5EOworJCQgTEFOR1VBR0UgcGxwZ3NxbDsKK1NFTEVDVCBjaGVja19leHBsYWluX2V4Y2VwdGlv bl9idWZmZXJzX25lc3RlZCgpIEFTIGV4Y2VwdGlvbl9idWZmZXJzX25lc3RlZF92aXNpYmxlOwor IGV4Y2VwdGlvbl9idWZmZXJzX25lc3RlZF92aXNpYmxlIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworRFJPUCBGVU5DVElPTiBjaGVja19leHBsYWlu X2V4Y2VwdGlvbl9idWZmZXJzX25lc3RlZDsKK0RST1AgRlVOQ1RJT04gY2hlY2tfZXhwbGFpbl9l eGNlcHRpb25fYnVmZmVyczsKK0RST1AgRlVOQ1RJT04gZXhwbGFpbl9leGNfZnVuYzsKK0RST1Ag VEFCTEUgZXhwbGFpbl9leGNfdGFiOworLS0gQ3Vyc29yIGluc3RydW1lbnRhdGlvbiB0ZXN0Lgor LS0gVmVyaWZ5IHRoYXQgYnVmZmVyIHVzYWdlIGlzIGNvcnJlY3RseSB0cmFja2VkIHRocm91Z2gg Y3Vyc29yIGV4ZWN1dGlvbiBwYXRocy4KKy0tIE5vbi1zY3JvbGxhYmxlIGN1cnNvcnMgZXhlcmNp c2UgRXhlY1NodXRkb3duTm9kZSBhZnRlciBlYWNoIEV4ZWN1dG9yUnVuCistLSAoRVhFQ19GTEFH X0JBQ0tXQVJEIGlzIG5vdCBzZXQpLCB3aGlsZSBzY3JvbGxhYmxlIGN1cnNvcnMgb25seSBzaHV0 IGRvd24KKy0tIG5vZGVzIGluIEV4ZWN1dG9yRmluaXNoLiBJbiBib3RoIGNhc2VzLCBidWZmZXIg dXNhZ2UgZnJvbSB0aGUgaW5uZXIgY3Vyc29yCistLSBzY2FuIHNob3VsZCBiZSBjb3JyZWN0bHkg YWNjdW11bGF0ZWQuCitDUkVBVEUgVEVNUCBUQUJMRSBjdXJzb3JfYnVmX3Rlc3QgQVMgU0VMRUNU ICogRlJPTSB0ZW5rMTsKK0NSRUFURSBGVU5DVElPTiBjdXJzb3Jfbm9zY3JvbGxfc2NhbigpIFJF VFVSTlMgYmlnaW50IEFTICQkCitERUNMQVJFCisgICAgY3VyIE5PIFNDUk9MTCBDVVJTT1IgRk9S IFNFTEVDVCAqIEZST00gY3Vyc29yX2J1Zl90ZXN0OworICAgIHJlYyBSRUNPUkQ7CisgICAgY250 IGJpZ2ludCA6PSAwOworQkVHSU4KKyAgICBPUEVOIGN1cjsKKyAgICBMT09QCisgICAgICAgIEZF VENIIE5FWFQgRlJPTSBjdXIgSU5UTyByZWM7CisgICAgICAgIEVYSVQgV0hFTiBOT1QgRk9VTkQ7 CisgICAgICAgIGNudCA6PSBjbnQgKyAxOworICAgIEVORCBMT09QOworICAgIENMT1NFIGN1cjsK KyAgICBSRVRVUk4gY250OworRU5EOworJCQgTEFOR1VBR0UgcGxwZ3NxbDsKK0NSRUFURSBGVU5D VElPTiBjdXJzb3Jfc2Nyb2xsX3NjYW4oKSBSRVRVUk5TIGJpZ2ludCBBUyAkJAorREVDTEFSRQor ICAgIGN1ciBTQ1JPTEwgQ1VSU09SIEZPUiBTRUxFQ1QgKiBGUk9NIGN1cnNvcl9idWZfdGVzdDsK KyAgICByZWMgUkVDT1JEOworICAgIGNudCBiaWdpbnQgOj0gMDsKK0JFR0lOCisgICAgT1BFTiBj dXI7CisgICAgTE9PUAorICAgICAgICBGRVRDSCBORVhUIEZST00gY3VyIElOVE8gcmVjOworICAg ICAgICBFWElUIFdIRU4gTk9UIEZPVU5EOworICAgICAgICBjbnQgOj0gY250ICsgMTsKKyAgICBF TkQgTE9PUDsKKyAgICBDTE9TRSBjdXI7CisgICAgUkVUVVJOIGNudDsKK0VORDsKKyQkIExBTkdV QUdFIHBscGdzcWw7CitDUkVBVEUgRlVOQ1RJT04gY2hlY2tfY3Vyc29yX2V4cGxhaW5fYnVmZmVy cygpIFJFVFVSTlMgVEFCTEUobm9zY3JvbGxfb2sgYm9vbGVhbiwgc2Nyb2xsX29rIGJvb2xlYW4p IEFTICQkCitERUNMQVJFCisgICAgcGxhbl9qc29uIGpzb247CisgICAgbm9kZSBqc29uOworICAg IGRpcmVjdF9idWYgaW50OworICAgIG5vc2Nyb2xsX2J1ZiBpbnQ7CisgICAgc2Nyb2xsX2J1ZiBp bnQ7CitCRUdJTgorICAgIC0tIERpcmVjdCBzY2FuOiBnZXQgbGVhZiBTZXEgU2NhbiBub2RlIGJ1 ZmZlcnMgYXMgYmFzZWxpbmUKKyAgICBFWEVDVVRFICdFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJT LCBDT1NUUyBPRkYsIEZPUk1BVCBKU09OKQorICAgICAgICBTRUxFQ1QgKiBGUk9NIGN1cnNvcl9i dWZfdGVzdCcgSU5UTyBwbGFuX2pzb247CisgICAgbm9kZSA6PSBwbGFuX2pzb24tPjAtPidQbGFu JzsKKyAgICBXSElMRSBub2RlLT4nUGxhbnMnIElTIE5PVCBOVUxMIExPT1AKKyAgICAgICAgbm9k ZSA6PSBub2RlLT4nUGxhbnMnLT4wOworICAgIEVORCBMT09QOworICAgIGRpcmVjdF9idWYgOj0K KyAgICAgICAgQ09BTEVTQ0UoKG5vZGUtPj4nTG9jYWwgSGl0IEJsb2NrcycpOjppbnQsIDApICsK KyAgICAgICAgQ09BTEVTQ0UoKG5vZGUtPj4nTG9jYWwgUmVhZCBCbG9ja3MnKTo6aW50LCAwKTsK KworICAgIC0tIE5vbi1zY3JvbGxhYmxlIGN1cnNvciBwYXRoOiBFeGVjU2h1dGRvd25Ob2RlIHJ1 bnMgYWZ0ZXIgZWFjaCBFeGVjdXRvclJ1bgorICAgIEVYRUNVVEUgJ0VYUExBSU4gKEFOQUxZWkUs IEJVRkZFUlMsIENPU1RTIE9GRiwgRk9STUFUIEpTT04pCisgICAgICAgIFNFTEVDVCBjdXJzb3Jf bm9zY3JvbGxfc2NhbigpJyBJTlRPIHBsYW5fanNvbjsKKyAgICBub2RlIDo9IHBsYW5fanNvbi0+ MC0+J1BsYW4nOworICAgIG5vc2Nyb2xsX2J1ZiA6PQorICAgICAgICBDT0FMRVNDRSgobm9kZS0+ PidMb2NhbCBIaXQgQmxvY2tzJyk6OmludCwgMCkgKworICAgICAgICBDT0FMRVNDRSgobm9kZS0+ PidMb2NhbCBSZWFkIEJsb2NrcycpOjppbnQsIDApOworCisgICAgLS0gU2Nyb2xsYWJsZSBjdXJz b3IgcGF0aDogRXhlY1NodXRkb3duTm9kZSBpcyBza2lwcGVkCisgICAgRVhFQ1VURSAnRVhQTEFJ TiAoQU5BTFlaRSwgQlVGRkVSUywgQ09TVFMgT0ZGLCBGT1JNQVQgSlNPTikKKyAgICAgICAgU0VM RUNUIGN1cnNvcl9zY3JvbGxfc2NhbigpJyBJTlRPIHBsYW5fanNvbjsKKyAgICBub2RlIDo9IHBs YW5fanNvbi0+MC0+J1BsYW4nOworICAgIHNjcm9sbF9idWYgOj0KKyAgICAgICAgQ09BTEVTQ0Uo KG5vZGUtPj4nTG9jYWwgSGl0IEJsb2NrcycpOjppbnQsIDApICsKKyAgICAgICAgQ09BTEVTQ0Uo KG5vZGUtPj4nTG9jYWwgUmVhZCBCbG9ja3MnKTo6aW50LCAwKTsKKworICAgIC0tIEJvdGggY3Vy c29yIHBhdGhzIHNob3VsZCByZXBvcnQgYnVmZmVyIGNvdW50cyBhYm91dCBhcyBoaWdoIGFzCisg ICAgLS0gdGhlIGRpcmVjdCBzY2FuIChzYW1lIGRhdGEgcGx1cyBtaW5vciBjYXRhbG9nIG92ZXJo ZWFkKSwgYW5kIG5vdAorICAgIC0tIGRvdWJsZS1jb3VudGVkICg8IDJ4IHRoZSBkaXJlY3Qgc2Nh bikKKyAgICBSRVRVUk4gUVVFUlkgU0VMRUNUCisgICAgICAgIChub3Njcm9sbF9idWYgPj0gZGly ZWN0X2J1ZiAqIDAuNSBBTkQgbm9zY3JvbGxfYnVmIDwgZGlyZWN0X2J1ZiAqIDIpLAorICAgICAg ICAoc2Nyb2xsX2J1ZiA+PSBkaXJlY3RfYnVmICogMC41IEFORCBzY3JvbGxfYnVmIDwgZGlyZWN0 X2J1ZiAqIDIpOworRU5EOworJCQgTEFOR1VBR0UgcGxwZ3NxbDsKK1NFTEVDVCAqIEZST00gY2hl Y2tfY3Vyc29yX2V4cGxhaW5fYnVmZmVycygpOworIG5vc2Nyb2xsX29rIHwgc2Nyb2xsX29rIAor LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIHQgICAgICAgICAgIHwgdAorKDEgcm93KQorCitE Uk9QIEZVTkNUSU9OIGNoZWNrX2N1cnNvcl9leHBsYWluX2J1ZmZlcnM7CitEUk9QIEZVTkNUSU9O IGN1cnNvcl9ub3Njcm9sbF9zY2FuOworRFJPUCBGVU5DVElPTiBjdXJzb3Jfc2Nyb2xsX3NjYW47 CitEUk9QIFRBQkxFIGN1cnNvcl9idWZfdGVzdDsKKy0tIFBhcmFsbGVsIHF1ZXJ5IGJ1ZmZlciBk b3VibGUtY291bnRpbmcgdGVzdC4KKy0tCistLSBDb21wYXJlcyBzZXJpYWwgU2VxIFNjYW4gYnVm ZmVycyB2cyBwYXJhbGxlbCBTZXEgU2NhbiBidWZmZXJzLgorLS0gVGhleSBzY2FuIHRoZSBzYW1l IHRhYmxlIHNvIHRoZSBidWZmZXIgY291bnQgc2hvdWxkIGJlIHNpbWlsYXIuCistLSBEb3VibGUt Y291bnRpbmcgd291bGQgbWFrZSB0aGUgcGFyYWxsZWwgY291bnQgfjJ4IGxhcmdlci4KK0NSRUFU RSBGVU5DVElPTiBjaGVja19wYXJhbGxlbF9leHBsYWluX2J1ZmZlcnMoKSBSRVRVUk5TIFRBQkxF KHJhdGlvIG51bWVyaWMpIEFTICQkCitERUNMQVJFCisgICAgcGxhbl9qc29uIGpzb247CisgICAg c2VyaWFsX2J1ZmZlcnMgaW50OworICAgIHBhcmFsbGVsX2J1ZmZlcnMgaW50OworICAgIG5vZGUg anNvbjsKK0JFR0lOCisgICAgLS0gU2VyaWFsIC0tCisgICAgU0VUIExPQ0FMIG1heF9wYXJhbGxl bF93b3JrZXJzX3Blcl9nYXRoZXIgPSAwOworICAgIEVYRUNVVEUgJ0VYUExBSU4gKEFOQUxZWkUs IEJVRkZFUlMsIENPU1RTIE9GRiwgRk9STUFUIEpTT04pCisgICAgICAgIFNFTEVDVCBjb3VudCgq KSBGUk9NIHRlbmsxJyBJTlRPIHBsYW5fanNvbjsKKyAgICBub2RlIDo9IHBsYW5fanNvbi0+MC0+ J1BsYW4nOworICAgIHNlcmlhbF9idWZmZXJzIDo9CisgICAgICAgIENPQUxFU0NFKChub2RlLT4+ J1NoYXJlZCBIaXQgQmxvY2tzJyk6OmludCwgMCkgKworICAgICAgICBDT0FMRVNDRSgobm9kZS0+ PidTaGFyZWQgUmVhZCBCbG9ja3MnKTo6aW50LCAwKTsKKworICAgIC0tIFBhcmFsbGVsIC0tCisg ICAgU0VUIExPQ0FMIHBhcmFsbGVsX3NldHVwX2Nvc3QgPSAwOworICAgIFNFVCBMT0NBTCBwYXJh bGxlbF90dXBsZV9jb3N0ID0gMDsKKyAgICBTRVQgTE9DQUwgbWluX3BhcmFsbGVsX3RhYmxlX3Nj YW5fc2l6ZSA9IDA7CisgICAgU0VUIExPQ0FMIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRo ZXIgPSAyOworICAgIFNFVCBMT0NBTCBwYXJhbGxlbF9sZWFkZXJfcGFydGljaXBhdGlvbiA9IG9m ZjsKKyAgICBFWEVDVVRFICdFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTLCBDT1NUUyBPRkYsIEZP Uk1BVCBKU09OKQorICAgICAgICBTRUxFQ1QgY291bnQoKikgRlJPTSB0ZW5rMScgSU5UTyBwbGFu X2pzb247CisgICAgbm9kZSA6PSBwbGFuX2pzb24tPjAtPidQbGFuJzsKKyAgICBwYXJhbGxlbF9i dWZmZXJzIDo9CisgICAgICAgIENPQUxFU0NFKChub2RlLT4+J1NoYXJlZCBIaXQgQmxvY2tzJyk6 OmludCwgMCkgKworICAgICAgICBDT0FMRVNDRSgobm9kZS0+PidTaGFyZWQgUmVhZCBCbG9ja3Mn KTo6aW50LCAwKTsKKworICAgIFJFVFVSTiBRVUVSWSBTRUxFQ1Qgcm91bmQocGFyYWxsZWxfYnVm ZmVyczo6bnVtZXJpYyAvIEdSRUFURVNUKHNlcmlhbF9idWZmZXJzLCAxKSk7CitFTkQ7CiskJCBM QU5HVUFHRSBwbHBnc3FsOworU0VMRUNUICogRlJPTSBjaGVja19wYXJhbGxlbF9leHBsYWluX2J1 ZmZlcnMoKTsKKyByYXRpbyAKKy0tLS0tLS0KKyAgICAgMQorKDEgcm93KQorCitEUk9QIEZVTkNU SU9OIGNoZWNrX3BhcmFsbGVsX2V4cGxhaW5fYnVmZmVyczsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL2V4cGxhaW4uc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZXhwbGFpbi5z cWwKaW5kZXggZWJkYWI0MjYwNGIuLmNmNWM2MzM1YTE5IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9y ZWdyZXNzL3NxbC9leHBsYWluLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9leHBsYWlu LnNxbApAQCAtMTg4LDMgKzE4OCwxOTcgQEAgc2VsZWN0IGV4cGxhaW5fZmlsdGVyKCdleHBsYWlu IChhbmFseXplLGJ1ZmZlcnMgb2ZmLGNvc3RzIG9mZikgc2VsZWN0IHN1bShuKSBvdmUKIC0tIFRl c3QgdHVwbGVzdG9yZSBzdG9yYWdlIHVzYWdlIGluIFdpbmRvdyBhZ2dyZWdhdGUgKG1lbW9yeSBh bmQgZGlzayBjYXNlLCBmaW5hbCByZXN1bHQgaXMgZGlzaykKIHNlbGVjdCBleHBsYWluX2ZpbHRl cignZXhwbGFpbiAoYW5hbHl6ZSxidWZmZXJzIG9mZixjb3N0cyBvZmYpIHNlbGVjdCBzdW0obikg b3ZlcihwYXJ0aXRpb24gYnkgbSkgZnJvbSAoU0VMRUNUIG4gPCAzIGFzIG0sIG4gZnJvbSBnZW5l cmF0ZV9zZXJpZXMoMSwyNTAwKSBhKG4pKScpOwogcmVzZXQgd29ya19tZW07CisKKy0tIEVYUExB SU4gKEFOQUxZWkUsIEJVRkZFUlMpIHNob3VsZCByZXBvcnQgYnVmZmVyIHVzYWdlIGZyb20gUEwv cGdTUUwKKy0tIEVYQ0VQVElPTiBibG9ja3MsIGV2ZW4gYWZ0ZXIgc3VidHJhbnNhY3Rpb24gcm9s bGJhY2suCitDUkVBVEUgVEVNUCBUQUJMRSBleHBsYWluX2V4Y190YWIgKGEgaW50LCBiIGNoYXIo MjApKTsKK0lOU0VSVCBJTlRPIGV4cGxhaW5fZXhjX3RhYiBWQUxVRVMgKDAsICd6enonKTsKKwor Q1JFQVRFIEZVTkNUSU9OIGV4cGxhaW5fZXhjX2Z1bmMoKSBSRVRVUk5TIHZvaWQgQVMgJCQKK0RF Q0xBUkUKKyAgICB2IGludDsKK0JFR0lOCisgICAgV0lUSCBpbnMgQVMgKElOU0VSVCBJTlRPIGV4 cGxhaW5fZXhjX3RhYiBWQUxVRVMgKDEsICdhYWEnKSBSRVRVUk5JTkcgYSkKKyAgICBTRUxFQ1Qg YSAvIDAgSU5UTyB2IEZST00gaW5zOworRVhDRVBUSU9OIFdIRU4gZGl2aXNpb25fYnlfemVybyBU SEVOCisgICAgTlVMTDsKK0VORDsKKyQkIExBTkdVQUdFIHBscGdzcWw7CisKK0NSRUFURSBGVU5D VElPTiBjaGVja19leHBsYWluX2V4Y2VwdGlvbl9idWZmZXJzKCkgUkVUVVJOUyBib29sZWFuIEFT ICQkCitERUNMQVJFCisgICAgcGxhbl9qc29uIGpzb247CisgICAgbm9kZSBqc29uOworICAgIHRv dGFsX2J1ZmZlcnMgaW50OworQkVHSU4KKyAgICBFWEVDVVRFICdFWFBMQUlOIChBTkFMWVpFLCBC VUZGRVJTLCBDT1NUUyBPRkYsIEZPUk1BVCBKU09OKQorICAgICAgICBTRUxFQ1QgZXhwbGFpbl9l eGNfZnVuYygpJyBJTlRPIHBsYW5fanNvbjsKKyAgICBub2RlIDo9IHBsYW5fanNvbi0+MC0+J1Bs YW4nOworICAgIHRvdGFsX2J1ZmZlcnMgOj0KKyAgICAgICAgQ09BTEVTQ0UoKG5vZGUtPj4nTG9j YWwgSGl0IEJsb2NrcycpOjppbnQsIDApICsKKyAgICAgICAgQ09BTEVTQ0UoKG5vZGUtPj4nTG9j YWwgUmVhZCBCbG9ja3MnKTo6aW50LCAwKTsKKyAgICBSRVRVUk4gdG90YWxfYnVmZmVycyA+IDA7 CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBnc3FsOworCitTRUxFQ1QgY2hlY2tfZXhwbGFpbl9leGNl cHRpb25fYnVmZmVycygpIEFTIGV4Y2VwdGlvbl9idWZmZXJzX3Zpc2libGU7CisKKy0tIEFsc28g dGVzdCB3aXRoIG5lc3RlZCBFWFBMQUlOIEFOQUxZWkUgKHR3byBsZXZlbHMgb2YgaW5zdHJ1bWVu dGF0aW9uKQorQ1JFQVRFIEZVTkNUSU9OIGNoZWNrX2V4cGxhaW5fZXhjZXB0aW9uX2J1ZmZlcnNf bmVzdGVkKCkgUkVUVVJOUyBib29sZWFuIEFTICQkCitERUNMQVJFCisgICAgcGxhbl9qc29uIGpz b247CisgICAgbm9kZSBqc29uOworICAgIHRvdGFsX2J1ZmZlcnMgaW50OworQkVHSU4KKyAgICBF WEVDVVRFICdFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTLCBDT1NUUyBPRkYsIEZPUk1BVCBKU09O KQorICAgICAgICBTRUxFQ1QgY2hlY2tfZXhwbGFpbl9leGNlcHRpb25fYnVmZmVycygpJyBJTlRP IHBsYW5fanNvbjsKKyAgICBub2RlIDo9IHBsYW5fanNvbi0+MC0+J1BsYW4nOworICAgIHRvdGFs X2J1ZmZlcnMgOj0KKyAgICAgICAgQ09BTEVTQ0UoKG5vZGUtPj4nTG9jYWwgSGl0IEJsb2Nrcycp OjppbnQsIDApICsKKyAgICAgICAgQ09BTEVTQ0UoKG5vZGUtPj4nTG9jYWwgUmVhZCBCbG9ja3Mn KTo6aW50LCAwKTsKKyAgICBSRVRVUk4gdG90YWxfYnVmZmVycyA+IDA7CitFTkQ7CiskJCBMQU5H VUFHRSBwbHBnc3FsOworCitTRUxFQ1QgY2hlY2tfZXhwbGFpbl9leGNlcHRpb25fYnVmZmVyc19u ZXN0ZWQoKSBBUyBleGNlcHRpb25fYnVmZmVyc19uZXN0ZWRfdmlzaWJsZTsKKworRFJPUCBGVU5D VElPTiBjaGVja19leHBsYWluX2V4Y2VwdGlvbl9idWZmZXJzX25lc3RlZDsKK0RST1AgRlVOQ1RJ T04gY2hlY2tfZXhwbGFpbl9leGNlcHRpb25fYnVmZmVyczsKK0RST1AgRlVOQ1RJT04gZXhwbGFp bl9leGNfZnVuYzsKK0RST1AgVEFCTEUgZXhwbGFpbl9leGNfdGFiOworCistLSBDdXJzb3IgaW5z dHJ1bWVudGF0aW9uIHRlc3QuCistLSBWZXJpZnkgdGhhdCBidWZmZXIgdXNhZ2UgaXMgY29ycmVj dGx5IHRyYWNrZWQgdGhyb3VnaCBjdXJzb3IgZXhlY3V0aW9uIHBhdGhzLgorLS0gTm9uLXNjcm9s bGFibGUgY3Vyc29ycyBleGVyY2lzZSBFeGVjU2h1dGRvd25Ob2RlIGFmdGVyIGVhY2ggRXhlY3V0 b3JSdW4KKy0tIChFWEVDX0ZMQUdfQkFDS1dBUkQgaXMgbm90IHNldCksIHdoaWxlIHNjcm9sbGFi bGUgY3Vyc29ycyBvbmx5IHNodXQgZG93bgorLS0gbm9kZXMgaW4gRXhlY3V0b3JGaW5pc2guIElu IGJvdGggY2FzZXMsIGJ1ZmZlciB1c2FnZSBmcm9tIHRoZSBpbm5lciBjdXJzb3IKKy0tIHNjYW4g c2hvdWxkIGJlIGNvcnJlY3RseSBhY2N1bXVsYXRlZC4KKworQ1JFQVRFIFRFTVAgVEFCTEUgY3Vy c29yX2J1Zl90ZXN0IEFTIFNFTEVDVCAqIEZST00gdGVuazE7CisKK0NSRUFURSBGVU5DVElPTiBj dXJzb3Jfbm9zY3JvbGxfc2NhbigpIFJFVFVSTlMgYmlnaW50IEFTICQkCitERUNMQVJFCisgICAg Y3VyIE5PIFNDUk9MTCBDVVJTT1IgRk9SIFNFTEVDVCAqIEZST00gY3Vyc29yX2J1Zl90ZXN0Owor ICAgIHJlYyBSRUNPUkQ7CisgICAgY250IGJpZ2ludCA6PSAwOworQkVHSU4KKyAgICBPUEVOIGN1 cjsKKyAgICBMT09QCisgICAgICAgIEZFVENIIE5FWFQgRlJPTSBjdXIgSU5UTyByZWM7CisgICAg ICAgIEVYSVQgV0hFTiBOT1QgRk9VTkQ7CisgICAgICAgIGNudCA6PSBjbnQgKyAxOworICAgIEVO RCBMT09QOworICAgIENMT1NFIGN1cjsKKyAgICBSRVRVUk4gY250OworRU5EOworJCQgTEFOR1VB R0UgcGxwZ3NxbDsKKworQ1JFQVRFIEZVTkNUSU9OIGN1cnNvcl9zY3JvbGxfc2NhbigpIFJFVFVS TlMgYmlnaW50IEFTICQkCitERUNMQVJFCisgICAgY3VyIFNDUk9MTCBDVVJTT1IgRk9SIFNFTEVD VCAqIEZST00gY3Vyc29yX2J1Zl90ZXN0OworICAgIHJlYyBSRUNPUkQ7CisgICAgY250IGJpZ2lu dCA6PSAwOworQkVHSU4KKyAgICBPUEVOIGN1cjsKKyAgICBMT09QCisgICAgICAgIEZFVENIIE5F WFQgRlJPTSBjdXIgSU5UTyByZWM7CisgICAgICAgIEVYSVQgV0hFTiBOT1QgRk9VTkQ7CisgICAg ICAgIGNudCA6PSBjbnQgKyAxOworICAgIEVORCBMT09QOworICAgIENMT1NFIGN1cjsKKyAgICBS RVRVUk4gY250OworRU5EOworJCQgTEFOR1VBR0UgcGxwZ3NxbDsKKworQ1JFQVRFIEZVTkNUSU9O IGNoZWNrX2N1cnNvcl9leHBsYWluX2J1ZmZlcnMoKSBSRVRVUk5TIFRBQkxFKG5vc2Nyb2xsX29r IGJvb2xlYW4sIHNjcm9sbF9vayBib29sZWFuKSBBUyAkJAorREVDTEFSRQorICAgIHBsYW5fanNv biBqc29uOworICAgIG5vZGUganNvbjsKKyAgICBkaXJlY3RfYnVmIGludDsKKyAgICBub3Njcm9s bF9idWYgaW50OworICAgIHNjcm9sbF9idWYgaW50OworQkVHSU4KKyAgICAtLSBEaXJlY3Qgc2Nh bjogZ2V0IGxlYWYgU2VxIFNjYW4gbm9kZSBidWZmZXJzIGFzIGJhc2VsaW5lCisgICAgRVhFQ1VU RSAnRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUywgQ09TVFMgT0ZGLCBGT1JNQVQgSlNPTikKKyAg ICAgICAgU0VMRUNUICogRlJPTSBjdXJzb3JfYnVmX3Rlc3QnIElOVE8gcGxhbl9qc29uOworICAg IG5vZGUgOj0gcGxhbl9qc29uLT4wLT4nUGxhbic7CisgICAgV0hJTEUgbm9kZS0+J1BsYW5zJyBJ UyBOT1QgTlVMTCBMT09QCisgICAgICAgIG5vZGUgOj0gbm9kZS0+J1BsYW5zJy0+MDsKKyAgICBF TkQgTE9PUDsKKyAgICBkaXJlY3RfYnVmIDo9CisgICAgICAgIENPQUxFU0NFKChub2RlLT4+J0xv Y2FsIEhpdCBCbG9ja3MnKTo6aW50LCAwKSArCisgICAgICAgIENPQUxFU0NFKChub2RlLT4+J0xv Y2FsIFJlYWQgQmxvY2tzJyk6OmludCwgMCk7CisKKyAgICAtLSBOb24tc2Nyb2xsYWJsZSBjdXJz b3IgcGF0aDogRXhlY1NodXRkb3duTm9kZSBydW5zIGFmdGVyIGVhY2ggRXhlY3V0b3JSdW4KKyAg ICBFWEVDVVRFICdFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTLCBDT1NUUyBPRkYsIEZPUk1BVCBK U09OKQorICAgICAgICBTRUxFQ1QgY3Vyc29yX25vc2Nyb2xsX3NjYW4oKScgSU5UTyBwbGFuX2pz b247CisgICAgbm9kZSA6PSBwbGFuX2pzb24tPjAtPidQbGFuJzsKKyAgICBub3Njcm9sbF9idWYg Oj0KKyAgICAgICAgQ09BTEVTQ0UoKG5vZGUtPj4nTG9jYWwgSGl0IEJsb2NrcycpOjppbnQsIDAp ICsKKyAgICAgICAgQ09BTEVTQ0UoKG5vZGUtPj4nTG9jYWwgUmVhZCBCbG9ja3MnKTo6aW50LCAw KTsKKworICAgIC0tIFNjcm9sbGFibGUgY3Vyc29yIHBhdGg6IEV4ZWNTaHV0ZG93bk5vZGUgaXMg c2tpcHBlZAorICAgIEVYRUNVVEUgJ0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMsIENPU1RTIE9G RiwgRk9STUFUIEpTT04pCisgICAgICAgIFNFTEVDVCBjdXJzb3Jfc2Nyb2xsX3NjYW4oKScgSU5U TyBwbGFuX2pzb247CisgICAgbm9kZSA6PSBwbGFuX2pzb24tPjAtPidQbGFuJzsKKyAgICBzY3Jv bGxfYnVmIDo9CisgICAgICAgIENPQUxFU0NFKChub2RlLT4+J0xvY2FsIEhpdCBCbG9ja3MnKTo6 aW50LCAwKSArCisgICAgICAgIENPQUxFU0NFKChub2RlLT4+J0xvY2FsIFJlYWQgQmxvY2tzJyk6 OmludCwgMCk7CisKKyAgICAtLSBCb3RoIGN1cnNvciBwYXRocyBzaG91bGQgcmVwb3J0IGJ1ZmZl ciBjb3VudHMgYWJvdXQgYXMgaGlnaCBhcworICAgIC0tIHRoZSBkaXJlY3Qgc2NhbiAoc2FtZSBk YXRhIHBsdXMgbWlub3IgY2F0YWxvZyBvdmVyaGVhZCksIGFuZCBub3QKKyAgICAtLSBkb3VibGUt Y291bnRlZCAoPCAyeCB0aGUgZGlyZWN0IHNjYW4pCisgICAgUkVUVVJOIFFVRVJZIFNFTEVDVAor ICAgICAgICAobm9zY3JvbGxfYnVmID49IGRpcmVjdF9idWYgKiAwLjUgQU5EIG5vc2Nyb2xsX2J1 ZiA8IGRpcmVjdF9idWYgKiAyKSwKKyAgICAgICAgKHNjcm9sbF9idWYgPj0gZGlyZWN0X2J1ZiAq IDAuNSBBTkQgc2Nyb2xsX2J1ZiA8IGRpcmVjdF9idWYgKiAyKTsKK0VORDsKKyQkIExBTkdVQUdF IHBscGdzcWw7CisKK1NFTEVDVCAqIEZST00gY2hlY2tfY3Vyc29yX2V4cGxhaW5fYnVmZmVycygp OworCitEUk9QIEZVTkNUSU9OIGNoZWNrX2N1cnNvcl9leHBsYWluX2J1ZmZlcnM7CitEUk9QIEZV TkNUSU9OIGN1cnNvcl9ub3Njcm9sbF9zY2FuOworRFJPUCBGVU5DVElPTiBjdXJzb3Jfc2Nyb2xs X3NjYW47CitEUk9QIFRBQkxFIGN1cnNvcl9idWZfdGVzdDsKKworLS0gUGFyYWxsZWwgcXVlcnkg YnVmZmVyIGRvdWJsZS1jb3VudGluZyB0ZXN0LgorLS0KKy0tIENvbXBhcmVzIHNlcmlhbCBTZXEg U2NhbiBidWZmZXJzIHZzIHBhcmFsbGVsIFNlcSBTY2FuIGJ1ZmZlcnMuCistLSBUaGV5IHNjYW4g dGhlIHNhbWUgdGFibGUgc28gdGhlIGJ1ZmZlciBjb3VudCBzaG91bGQgYmUgc2ltaWxhci4KKy0t IERvdWJsZS1jb3VudGluZyB3b3VsZCBtYWtlIHRoZSBwYXJhbGxlbCBjb3VudCB+MnggbGFyZ2Vy LgorQ1JFQVRFIEZVTkNUSU9OIGNoZWNrX3BhcmFsbGVsX2V4cGxhaW5fYnVmZmVycygpIFJFVFVS TlMgVEFCTEUocmF0aW8gbnVtZXJpYykgQVMgJCQKK0RFQ0xBUkUKKyAgICBwbGFuX2pzb24ganNv bjsKKyAgICBzZXJpYWxfYnVmZmVycyBpbnQ7CisgICAgcGFyYWxsZWxfYnVmZmVycyBpbnQ7Cisg ICAgbm9kZSBqc29uOworQkVHSU4KKyAgICAtLSBTZXJpYWwgLS0KKyAgICBTRVQgTE9DQUwgbWF4 X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9IDA7CisgICAgRVhFQ1VURSAnRVhQTEFJTiAo QU5BTFlaRSwgQlVGRkVSUywgQ09TVFMgT0ZGLCBGT1JNQVQgSlNPTikKKyAgICAgICAgU0VMRUNU IGNvdW50KCopIEZST00gdGVuazEnIElOVE8gcGxhbl9qc29uOworICAgIG5vZGUgOj0gcGxhbl9q c29uLT4wLT4nUGxhbic7CisgICAgc2VyaWFsX2J1ZmZlcnMgOj0KKyAgICAgICAgQ09BTEVTQ0Uo KG5vZGUtPj4nU2hhcmVkIEhpdCBCbG9ja3MnKTo6aW50LCAwKSArCisgICAgICAgIENPQUxFU0NF KChub2RlLT4+J1NoYXJlZCBSZWFkIEJsb2NrcycpOjppbnQsIDApOworCisgICAgLS0gUGFyYWxs ZWwgLS0KKyAgICBTRVQgTE9DQUwgcGFyYWxsZWxfc2V0dXBfY29zdCA9IDA7CisgICAgU0VUIExP Q0FMIHBhcmFsbGVsX3R1cGxlX2Nvc3QgPSAwOworICAgIFNFVCBMT0NBTCBtaW5fcGFyYWxsZWxf dGFibGVfc2Nhbl9zaXplID0gMDsKKyAgICBTRVQgTE9DQUwgbWF4X3BhcmFsbGVsX3dvcmtlcnNf cGVyX2dhdGhlciA9IDI7CisgICAgU0VUIExPQ0FMIHBhcmFsbGVsX2xlYWRlcl9wYXJ0aWNpcGF0 aW9uID0gb2ZmOworICAgIEVYRUNVVEUgJ0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMsIENPU1RT IE9GRiwgRk9STUFUIEpTT04pCisgICAgICAgIFNFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxJyBJ TlRPIHBsYW5fanNvbjsKKyAgICBub2RlIDo9IHBsYW5fanNvbi0+MC0+J1BsYW4nOworICAgIHBh cmFsbGVsX2J1ZmZlcnMgOj0KKyAgICAgICAgQ09BTEVTQ0UoKG5vZGUtPj4nU2hhcmVkIEhpdCBC bG9ja3MnKTo6aW50LCAwKSArCisgICAgICAgIENPQUxFU0NFKChub2RlLT4+J1NoYXJlZCBSZWFk IEJsb2NrcycpOjppbnQsIDApOworCisgICAgUkVUVVJOIFFVRVJZIFNFTEVDVCByb3VuZChwYXJh bGxlbF9idWZmZXJzOjpudW1lcmljIC8gR1JFQVRFU1Qoc2VyaWFsX2J1ZmZlcnMsIDEpKTsKK0VO RDsKKyQkIExBTkdVQUdFIHBscGdzcWw7CisKK1NFTEVDVCAqIEZST00gY2hlY2tfcGFyYWxsZWxf ZXhwbGFpbl9idWZmZXJzKCk7CisKK0RST1AgRlVOQ1RJT04gY2hlY2tfcGFyYWxsZWxfZXhwbGFp bl9idWZmZXJzOwotLSAKMi40Ny4xCgo= --0000000000005bb84b064dfc5b57 Content-Type: application/octet-stream; name="v11-0005-Optimize-measuring-WAL-buffer-usage-through-stac.patch" Content-Disposition: attachment; filename="v11-0005-Optimize-measuring-WAL-buffer-usage-through-stac.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mn8k89yo4 RnJvbSAyNmFlNTJmYjllOWVjYjQ0NzViN2RiNzE3NzNkYTkyZWE4NmFkOGE0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpEYXRlOiBU dWUsIDkgU2VwIDIwMjUgMDI6MTY6NTkgLTA3MDAKU3ViamVjdDogW1BBVENIIHYxMSA1LzldIE9w dGltaXplIG1lYXN1cmluZyBXQUwvYnVmZmVyIHVzYWdlIHRocm91Z2gKIHN0YWNrLWJhc2VkIGlu c3RydW1lbnRhdGlvbgoKUHJldmlvdXNseSwgaW4gb3JkZXIgdG8gZGV0ZXJtaW5lIHRoZSBidWZm ZXIvV0FMIHVzYWdlIG9mIGEgZ2l2ZW4gY29kZQpzZWN0aW9uLCB3ZSB1dGlsaXplZCBjb250aW51 b3VzbHkgaW5jcmVtZW50aW5nIGdsb2JhbCBjb3VudGVycyB0aGF0IGdldAp1cGRhdGVkIHdoZW4g dGhlIGFjdHVhbCBhY3Rpdml0eSAoZS5nLiBzaGFyZWQgYmxvY2sgcmVhZCkgb2NjdXJyZWQsIGFu ZAp0aGVuIGNhbGN1bGF0ZWQgYSBkaWZmIHdoZW4gdGhlIGNvZGUgc2VjdGlvbiBlbmRlZC4gVGhp cyByZXN1bHRlZCBpbiBhCmJvdHRsZW5lY2sgZm9yIGV4ZWN1dG9yIG5vZGUgaW5zdHJ1bWVudGF0 aW9uIHNwZWNpZmljYWxseSwgd2l0aCB0aGUKZnVuY3Rpb24gQnVmZmVyVXNhZ2VBY2N1bURpZmYg c2hvd2luZyB1cCBpbiBwcm9maWxlcyBhbmQgaW4gc29tZSBjYXNlcwphZGRpbmcgdXAgdG8gMTAl IG92ZXJoZWFkIHRvIGFuIEVYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMpIHJ1bi4KCkluc3RlYWQs IGludHJvZHVjZSBhIHN0YWNrLWJhc2VkIG1lY2hhbmlzbSwgd2hlcmUgdGhlIGFjdHVhbCBhY3Rp dml0eQp3cml0ZXMgaW50byB0aGUgY3VycmVudCBzdGFjayBlbnRyeS4gSW4gdGhlIGNhc2Ugb2Yg ZXhlY3V0b3Igbm9kZXMsIHRoaXMKbWVhbnMgdGhhdCBlYWNoIG5vZGUgZ2V0cyBpdHMgb3duIHN0 YWNrIGVudHJ5IHRoYXQgaXMgcHVzaGVkIGF0Ckluc3RyU3RhcnROb2RlLCBhbmQgcG9wcGVkIGF0 IEluc3RyRW5kTm9kZS4gU3RhY2sgZW50cmllcyBhcmUgemVybwppbml0aWFsaXplZCAoYXZvaWRp bmcgdGhlIGRpZmYgbWVjaGFuaXNtKSBhbmQgZ2V0IGFkZGVkIHRvIHRoZWlyIHBhcmVudAplbnRy eSB3aGVuIHRoZXkgYXJlIGZpbmFsaXplZCwgaS5lLiBubyBtb3JlIG1vZGlmaWNhdGlvbnMgY2Fu IG9jY3VyLgoKVG8gY29ycmVjdGx5IGhhbmRsZSBhYm9ydCBzaXR1YXRpb25zLCBhbnkgdXNlIG9m IGluc3RydW1lbnRhdGlvbiBzdGFja3MKbXVzdCBpbnZvbHZlIGVpdGhlciBhIHRvcC1sZXZlbCBR dWVyeUluc3RydW1lbnRhdGlvbiBzdHJ1Y3QsIGFuZCBpdHMKYXNzb2NpYXRlZCBJbnN0clF1ZXJ5 U3RhcnQvSW5zdHJRdWVyeVN0b3AgaGVscGVycyAod2hpY2ggdXNlIHJlc291cmNlCm93bmVycyB0 byBoYW5kbGUgYWJvcnRzKSwgb3IgdGhlIEluc3RydW1lbnRhdGlvbiBzdHJ1Y3QgaXRzZWxmIHdp dGgKZGVkaWNhdGVkIFBHX1RSWS9QR19GSU5BTExZIGNhbGxzIHRoYXQgZW5zdXJlIHRoZSBzdGFj ayBpcyBpbiBhCmNvbnNpc3RlbnQgc3RhdGUgYWZ0ZXIgYW4gYWJvcnQuCgpUaGlzIGFsc28gZHJv cHMgdGhlIGdsb2JhbCBwZ0J1ZmZlclVzYWdlLCBhbnkgY2FsbGVycyBpbnRlcmVzdGVkIGluCm1l YXN1cmluZyBidWZmZXIgYWN0aXZpdHkgc2hvdWxkIGluc3RlYWQgdXRpbGl6ZSBJbnN0clN0YXJ0 L0luc3RyU3RvcC4KClRoZSByZWxhdGVkIGdsb2JhbCBwZ1dhbFVzYWdlIGlzIGtlcHQgZm9yIG5v dyBkdWUgdG8gaXRzIHVzZSBpbiBwZ3N0YXQKdG8gdHJhY2sgYWdncmVnYXRlIFdBTCBhY3Rpdml0 eSBhbmQgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUgZm9yCm1lYXN1cmluZyBGUElzLgoKQXV0 aG9yOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpSZXZpZXdlZC1ieTogWnNvbHQgUGFy cmFnaSA8enNvbHQucGFycmFnaUBwZXJjb25hLmNvbT4KUmV2aWV3ZWQtYnk6IEhlaWtraSBMaW5u YWthbmdhcyA8aGxpbm5ha2FAaWtpLmZpPgpEaXNjdXNzaW9uOiBodHRwczovL3d3dy5wb3N0Z3Jl c3FsLm9yZy9tZXNzYWdlLWlkL2ZsYXQvQ0FQNTNQa3hybXBFQ3pWRnBlZUVFSERHZTZ1NjI1cyUy QllrbVZ2NS1ndzNMX05EU2ZiaUElNDBtYWlsLmdtYWlsLmNvbSNjYjU4M2EwOGU4ZTA5NmFhMWYw OTNiYjE3ODkwNjE3MwotLS0KIGNvbnRyaWIvYXV0b19leHBsYWluL2F1dG9fZXhwbGFpbi5jICAg ICAgICAgICB8ICAxNiArLQogLi4uL3BnX3N0YXRfc3RhdGVtZW50cy9wZ19zdGF0X3N0YXRlbWVu dHMuYyAgIHwgIDg3ICstLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW4uYyAgICAgICAg ICAgICAgICB8ICAxMCArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5pbnNlcnQuYyAgICAg ICAgICAgIHwgIDEwICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgICAg ICAgICAgfCAgMTUgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jICAgICAg ICAgICB8ICAxMCArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvYW5hbHl6ZS5jICAgICAgICAgICAg ICAgIHwgIDMxICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMgICAgICAgICAgICAg ICAgfCAgNDMgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW5fZHIuYyAgICAgICAgICAg ICB8ICA1NyArKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYyAgICAgICAgICAgICAg ICB8ICAyNyArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgICAgICAgICAgICAg IHwgICAyICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy90cmlnZ2VyLmMgICAgICAgICAgICAgICAg fCAgMTcgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMgICAgICAgICB8 ICAxMCArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvUkVBRE1FLmluc3RydW1lbnQgICAgICAgIHwg MjI3ICsrKysrKysrKwogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyAgICAgICAgICAg ICAgIHwgIDgzICsrKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jICAgICAg ICAgICB8ICAzMiArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jICAgICAg ICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjUHJvY25vZGUuYyAgICAgICAg ICAgfCAgODQgKysrLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMgICAgICAgICAg ICAgIHwgIDExICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9pbnN0cnVtZW50LmMgICAgICAgICAg ICAgfCA0NDggKysrKysrKysrKysrKy0tLS0tCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL3dvcmtlci5jICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1 Zm1nci5jICAgICAgICAgICB8ICAgNiArLQogc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdz dGF0X2lvLmMgICAgICAgIHwgICA2ICstCiBzcmMvaW5jbHVkZS9jb21tYW5kcy9leHBsYWluX2Ry LmggICAgICAgICAgICAgfCAgIDUgKy0KIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNkZXNjLmgg ICAgICAgICAgICAgICB8ICAgNCArLQogc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaCAg ICAgICAgICAgICAgIHwgICA1ICstCiBzcmMvaW5jbHVkZS9leGVjdXRvci9pbnN0cnVtZW50Lmgg ICAgICAgICAgICAgfCAxOTggKysrKysrKy0KIHNyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5o ICAgICAgICAgICAgICAgICB8ICAgMyArLQogc3JjL2luY2x1ZGUvdXRpbHMvcmVzb3duZXIuaCAg ICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0 ICAgICAgICAgICAgICB8ICAgMiArCiAzMCBmaWxlcyBjaGFuZ2VkLCAxMDk3IGluc2VydGlvbnMo KyksIDM1NyBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYmFja2VuZC9leGVj dXRvci9SRUFETUUuaW5zdHJ1bWVudAoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvYXV0b19leHBsYWlu L2F1dG9fZXhwbGFpbi5jIGIvY29udHJpYi9hdXRvX2V4cGxhaW4vYXV0b19leHBsYWluLmMKaW5k ZXggMzliZjI1NDNiNzAuLjRiZTgxNDg5ZmY0IDEwMDY0NAotLS0gYS9jb250cmliL2F1dG9fZXhw bGFpbi9hdXRvX2V4cGxhaW4uYworKysgYi9jb250cmliL2F1dG9fZXhwbGFpbi9hdXRvX2V4cGxh aW4uYwpAQCAtMzA1LDE5ICszMDUsOSBAQCBleHBsYWluX0V4ZWN1dG9yU3RhcnQoUXVlcnlEZXNj ICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAKIAlpZiAoYXV0b19leHBsYWluX2VuYWJsZWQoKSkK IAl7Ci0JCS8qCi0JCSAqIFNldCB1cCB0byB0cmFjayB0b3RhbCBlbGFwc2VkIHRpbWUgaW4gRXhl Y3V0b3JSdW4uICBNYWtlIHN1cmUgdGhlCi0JCSAqIHNwYWNlIGlzIGFsbG9jYXRlZCBpbiB0aGUg cGVyLXF1ZXJ5IGNvbnRleHQgc28gaXQgd2lsbCBnbyBhd2F5IGF0Ci0JCSAqIEV4ZWN1dG9yRW5k LgotCQkgKi8KKwkJLyogU2V0IHVwIHRvIHRyYWNrIHRvdGFsIGVsYXBzZWQgdGltZSBpbiBFeGVj dXRvclJ1bi4gKi8KIAkJaWYgKHF1ZXJ5RGVzYy0+dG90YWx0aW1lID09IE5VTEwpCi0JCXsKLQkJ CU1lbW9yeUNvbnRleHQgb2xkY3h0OwotCi0JCQlvbGRjeHQgPSBNZW1vcnlDb250ZXh0U3dpdGNo VG8ocXVlcnlEZXNjLT5lc3RhdGUtPmVzX3F1ZXJ5X2N4dCk7Ci0JCQlxdWVyeURlc2MtPnRvdGFs dGltZSA9IEluc3RyQWxsb2MoSU5TVFJVTUVOVF9BTEwpOwotCQkJTWVtb3J5Q29udGV4dFN3aXRj aFRvKG9sZGN4dCk7Ci0JCX0KKwkJCXF1ZXJ5RGVzYy0+dG90YWx0aW1lID0gSW5zdHJRdWVyeUFs bG9jKElOU1RSVU1FTlRfQUxMKTsKIAl9CiB9CiAKQEAgLTM4Miw3ICszNzIsNyBAQCBleHBsYWlu X0V4ZWN1dG9yRW5kKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjKQogCQlvbGRjeHQgPSBNZW1vcnlDb250 ZXh0U3dpdGNoVG8ocXVlcnlEZXNjLT5lc3RhdGUtPmVzX3F1ZXJ5X2N4dCk7CiAKIAkJLyogTG9n IHBsYW4gaWYgZHVyYXRpb24gaXMgZXhjZWVkZWQuICovCi0JCW1zZWMgPSBJTlNUUl9USU1FX0dF VF9NSUxMSVNFQyhxdWVyeURlc2MtPnRvdGFsdGltZS0+dG90YWwpOworCQltc2VjID0gSU5TVFJf VElNRV9HRVRfTUlMTElTRUMocXVlcnlEZXNjLT50b3RhbHRpbWUtPmluc3RyLnRvdGFsKTsKIAkJ aWYgKG1zZWMgPj0gYXV0b19leHBsYWluX2xvZ19taW5fZHVyYXRpb24pCiAJCXsKIAkJCUV4cGxh aW5TdGF0ZSAqZXMgPSBOZXdFeHBsYWluU3RhdGUoKTsKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdf c3RhdF9zdGF0ZW1lbnRzL3BnX3N0YXRfc3RhdGVtZW50cy5jIGIvY29udHJpYi9wZ19zdGF0X3N0 YXRlbWVudHMvcGdfc3RhdF9zdGF0ZW1lbnRzLmMKaW5kZXggM2U3OTEwODg0NmUuLjk4NTZkZWMz YTVmIDEwMDY0NAotLS0gYS9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9wZ19zdGF0X3N0YXRl bWVudHMuYworKysgYi9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9wZ19zdGF0X3N0YXRlbWVu dHMuYwpAQCAtOTEwLDIyICs5MTAsMTEgQEAgcGdzc19wbGFubmVyKFF1ZXJ5ICpwYXJzZSwKIAkJ JiYgcGdzc190cmFja19wbGFubmluZyAmJiBxdWVyeV9zdHJpbmcKIAkJJiYgcGFyc2UtPnF1ZXJ5 SWQgIT0gSU5UNjRDT05TVCgwKSkKIAl7Ci0JCWluc3RyX3RpbWUJc3RhcnQ7Ci0JCWluc3RyX3Rp bWUJZHVyYXRpb247Ci0JCUJ1ZmZlclVzYWdlIGJ1ZnVzYWdlX3N0YXJ0LAotCQkJCQlidWZ1c2Fn ZTsKLQkJV2FsVXNhZ2UJd2FsdXNhZ2Vfc3RhcnQsCi0JCQkJCXdhbHVzYWdlOworCQlJbnN0cnVt ZW50YXRpb24gaW5zdHIgPSB7MH07CiAKLQkJLyogV2UgbmVlZCB0byB0cmFjayBidWZmZXIgdXNh Z2UgYXMgdGhlIHBsYW5uZXIgY2FuIGFjY2VzcyB0aGVtLiAqLwotCQlidWZ1c2FnZV9zdGFydCA9 IHBnQnVmZmVyVXNhZ2U7Ci0KLQkJLyoKLQkJICogU2ltaWxhcmx5IHRoZSBwbGFubmVyIGNvdWxk IHdyaXRlIHNvbWUgV0FMIHJlY29yZHMgaW4gc29tZSBjYXNlcwotCQkgKiAoZS5nLiBzZXR0aW5n IGEgaGludCBiaXQgd2l0aCB0aG9zZSBiZWluZyBXQUwtbG9nZ2VkKQotCQkgKi8KLQkJd2FsdXNh Z2Vfc3RhcnQgPSBwZ1dhbFVzYWdlOwotCQlJTlNUUl9USU1FX1NFVF9DVVJSRU5UKHN0YXJ0KTsK KwkJLyogVHJhY2sgdGltZSBhbmQgYnVmZmVyL1dBTCB1c2FnZSBhcyB0aGUgcGxhbm5lciBjYW4g YWNjZXNzIHRoZW0uICovCisJCUluc3RySW5pdE9wdGlvbnMoJmluc3RyLCBJTlNUUlVNRU5UX0FM TCk7CisJCUluc3RyU3RhcnQoJmluc3RyKTsKIAogCQluZXN0aW5nX2xldmVsKys7CiAJCVBHX1RS WSgpOwpAQCAtOTM5LDMwICs5MjgsMjAgQEAgcGdzc19wbGFubmVyKFF1ZXJ5ICpwYXJzZSwKIAkJ fQogCQlQR19GSU5BTExZKCk7CiAJCXsKKwkJCUluc3RyU3RvcEZpbmFsaXplKCZpbnN0cik7CiAJ CQluZXN0aW5nX2xldmVsLS07CiAJCX0KIAkJUEdfRU5EX1RSWSgpOwogCi0JCUlOU1RSX1RJTUVf U0VUX0NVUlJFTlQoZHVyYXRpb24pOwotCQlJTlNUUl9USU1FX1NVQlRSQUNUKGR1cmF0aW9uLCBz dGFydCk7Ci0KLQkJLyogY2FsYyBkaWZmZXJlbmNlcyBvZiBidWZmZXIgY291bnRlcnMuICovCi0J CW1lbXNldCgmYnVmdXNhZ2UsIDAsIHNpemVvZihCdWZmZXJVc2FnZSkpOwotCQlCdWZmZXJVc2Fn ZUFjY3VtRGlmZigmYnVmdXNhZ2UsICZwZ0J1ZmZlclVzYWdlLCAmYnVmdXNhZ2Vfc3RhcnQpOwot Ci0JCS8qIGNhbGMgZGlmZmVyZW5jZXMgb2YgV0FMIGNvdW50ZXJzLiAqLwotCQltZW1zZXQoJndh bHVzYWdlLCAwLCBzaXplb2YoV2FsVXNhZ2UpKTsKLQkJV2FsVXNhZ2VBY2N1bURpZmYoJndhbHVz YWdlLCAmcGdXYWxVc2FnZSwgJndhbHVzYWdlX3N0YXJ0KTsKLQogCQlwZ3NzX3N0b3JlKHF1ZXJ5 X3N0cmluZywKIAkJCQkgICBwYXJzZS0+cXVlcnlJZCwKIAkJCQkgICBwYXJzZS0+c3RtdF9sb2Nh dGlvbiwKIAkJCQkgICBwYXJzZS0+c3RtdF9sZW4sCiAJCQkJICAgUEdTU19QTEFOLAotCQkJCSAg IElOU1RSX1RJTUVfR0VUX01JTExJU0VDKGR1cmF0aW9uKSwKKwkJCQkgICBJTlNUUl9USU1FX0dF VF9NSUxMSVNFQyhpbnN0ci50b3RhbCksCiAJCQkJICAgMCwKLQkJCQkgICAmYnVmdXNhZ2UsCi0J CQkJICAgJndhbHVzYWdlLAorCQkJCSAgICZpbnN0ci5idWZ1c2FnZSwKKwkJCQkgICAmaW5zdHIu d2FsdXNhZ2UsCiAJCQkJICAgTlVMTCwKIAkJCQkgICBOVUxMLAogCQkJCSAgIDAsCkBAIC0xMDE0 LDE5ICs5OTMsOSBAQCBwZ3NzX0V4ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpxdWVyeURlc2MsIGlu dCBlZmxhZ3MpCiAJICovCiAJaWYgKHBnc3NfZW5hYmxlZChuZXN0aW5nX2xldmVsKSAmJiBxdWVy eURlc2MtPnBsYW5uZWRzdG10LT5xdWVyeUlkICE9IElOVDY0Q09OU1QoMCkpCiAJewotCQkvKgot CQkgKiBTZXQgdXAgdG8gdHJhY2sgdG90YWwgZWxhcHNlZCB0aW1lIGluIEV4ZWN1dG9yUnVuLiAg TWFrZSBzdXJlIHRoZQotCQkgKiBzcGFjZSBpcyBhbGxvY2F0ZWQgaW4gdGhlIHBlci1xdWVyeSBj b250ZXh0IHNvIGl0IHdpbGwgZ28gYXdheSBhdAotCQkgKiBFeGVjdXRvckVuZC4KLQkJICovCisJ CS8qIFNldCB1cCB0byB0cmFjayB0b3RhbCBlbGFwc2VkIHRpbWUgaW4gRXhlY3V0b3JSdW4uICov CiAJCWlmIChxdWVyeURlc2MtPnRvdGFsdGltZSA9PSBOVUxMKQotCQl7Ci0JCQlNZW1vcnlDb250 ZXh0IG9sZGN4dDsKLQotCQkJb2xkY3h0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKHF1ZXJ5RGVz Yy0+ZXN0YXRlLT5lc19xdWVyeV9jeHQpOwotCQkJcXVlcnlEZXNjLT50b3RhbHRpbWUgPSBJbnN0 ckFsbG9jKElOU1RSVU1FTlRfQUxMKTsKLQkJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjeHQp OwotCQl9CisJCQlxdWVyeURlc2MtPnRvdGFsdGltZSA9IEluc3RyUXVlcnlBbGxvYyhJTlNUUlVN RU5UX0FMTCk7CiAJfQogfQogCkBAIC0xMDg4LDEwICsxMDU3LDEwIEBAIHBnc3NfRXhlY3V0b3JF bmQoUXVlcnlEZXNjICpxdWVyeURlc2MpCiAJCQkJICAgcXVlcnlEZXNjLT5wbGFubmVkc3RtdC0+ c3RtdF9sb2NhdGlvbiwKIAkJCQkgICBxdWVyeURlc2MtPnBsYW5uZWRzdG10LT5zdG10X2xlbiwK IAkJCQkgICBQR1NTX0VYRUMsCi0JCQkJICAgSU5TVFJfVElNRV9HRVRfTUlMTElTRUMocXVlcnlE ZXNjLT50b3RhbHRpbWUtPnRvdGFsKSwKKwkJCQkgICBJTlNUUl9USU1FX0dFVF9NSUxMSVNFQyhx dWVyeURlc2MtPnRvdGFsdGltZS0+aW5zdHIudG90YWwpLAogCQkJCSAgIHF1ZXJ5RGVzYy0+ZXN0 YXRlLT5lc190b3RhbF9wcm9jZXNzZWQsCi0JCQkJICAgJnF1ZXJ5RGVzYy0+dG90YWx0aW1lLT5i dWZ1c2FnZSwKLQkJCQkgICAmcXVlcnlEZXNjLT50b3RhbHRpbWUtPndhbHVzYWdlLAorCQkJCSAg ICZxdWVyeURlc2MtPnRvdGFsdGltZS0+aW5zdHIuYnVmdXNhZ2UsCisJCQkJICAgJnF1ZXJ5RGVz Yy0+dG90YWx0aW1lLT5pbnN0ci53YWx1c2FnZSwKIAkJCQkgICBxdWVyeURlc2MtPmVzdGF0ZS0+ ZXNfaml0ID8gJnF1ZXJ5RGVzYy0+ZXN0YXRlLT5lc19qaXQtPmluc3RyIDogTlVMTCwKIAkJCQkg ICBOVUxMLAogCQkJCSAgIHF1ZXJ5RGVzYy0+ZXN0YXRlLT5lc19wYXJhbGxlbF93b3JrZXJzX3Rv X2xhdW5jaCwKQEAgLTExNTUsMTcgKzExMjQsMTEgQEAgcGdzc19Qcm9jZXNzVXRpbGl0eShQbGFu bmVkU3RtdCAqcHN0bXQsIGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5nLAogCQkhSXNBKHBhcnNldHJl ZSwgRXhlY3V0ZVN0bXQpICYmCiAJCSFJc0EocGFyc2V0cmVlLCBQcmVwYXJlU3RtdCkpCiAJewot CQlpbnN0cl90aW1lCXN0YXJ0OwotCQlpbnN0cl90aW1lCWR1cmF0aW9uOwogCQl1aW50NjQJCXJv d3M7Ci0JCUJ1ZmZlclVzYWdlIGJ1ZnVzYWdlX3N0YXJ0LAotCQkJCQlidWZ1c2FnZTsKLQkJV2Fs VXNhZ2UJd2FsdXNhZ2Vfc3RhcnQsCi0JCQkJCXdhbHVzYWdlOworCQlJbnN0cnVtZW50YXRpb24g aW5zdHIgPSB7MH07CiAKLQkJYnVmdXNhZ2Vfc3RhcnQgPSBwZ0J1ZmZlclVzYWdlOwotCQl3YWx1 c2FnZV9zdGFydCA9IHBnV2FsVXNhZ2U7Ci0JCUlOU1RSX1RJTUVfU0VUX0NVUlJFTlQoc3RhcnQp OworCQlJbnN0ckluaXRPcHRpb25zKCZpbnN0ciwgSU5TVFJVTUVOVF9BTEwpOworCQlJbnN0clN0 YXJ0KCZpbnN0cik7CiAKIAkJbmVzdGluZ19sZXZlbCsrOwogCQlQR19UUlkoKTsKQEAgLTExODEs NiArMTE0NCw3IEBAIHBnc3NfUHJvY2Vzc1V0aWxpdHkoUGxhbm5lZFN0bXQgKnBzdG10LCBjb25z dCBjaGFyICpxdWVyeVN0cmluZywKIAkJfQogCQlQR19GSU5BTExZKCk7CiAJCXsKKwkJCUluc3Ry U3RvcEZpbmFsaXplKCZpbnN0cik7CiAJCQluZXN0aW5nX2xldmVsLS07CiAJCX0KIAkJUEdfRU5E X1RSWSgpOwpAQCAtMTE5NSw5ICsxMTU5LDYgQEAgcGdzc19Qcm9jZXNzVXRpbGl0eShQbGFubmVk U3RtdCAqcHN0bXQsIGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5nLAogCQkgKiBmb3JtZXIgdmFsdWUs IHdoaWNoJ2Qgb3RoZXJ3aXNlIGJlIGEgZ29vZCBpZGVhLgogCQkgKi8KIAotCQlJTlNUUl9USU1F X1NFVF9DVVJSRU5UKGR1cmF0aW9uKTsKLQkJSU5TVFJfVElNRV9TVUJUUkFDVChkdXJhdGlvbiwg c3RhcnQpOwotCiAJCS8qCiAJCSAqIFRyYWNrIHRoZSB0b3RhbCBudW1iZXIgb2Ygcm93cyByZXRy aWV2ZWQgb3IgYWZmZWN0ZWQgYnkgdGhlIHV0aWxpdHkKIAkJICogc3RhdGVtZW50cyBvZiBDT1BZ LCBGRVRDSCwgQ1JFQVRFIFRBQkxFIEFTLCBDUkVBVEUgTUFURVJJQUxJWkVECkBAIC0xMjA5LDIz ICsxMTcwLDE1IEBAIHBnc3NfUHJvY2Vzc1V0aWxpdHkoUGxhbm5lZFN0bXQgKnBzdG10LCBjb25z dCBjaGFyICpxdWVyeVN0cmluZywKIAkJCQkJICAgcWMtPmNvbW1hbmRUYWcgPT0gQ01EVEFHX1JF RlJFU0hfTUFURVJJQUxJWkVEX1ZJRVcpKSA/CiAJCQlxYy0+bnByb2Nlc3NlZCA6IDA7CiAKLQkJ LyogY2FsYyBkaWZmZXJlbmNlcyBvZiBidWZmZXIgY291bnRlcnMuICovCi0JCW1lbXNldCgmYnVm dXNhZ2UsIDAsIHNpemVvZihCdWZmZXJVc2FnZSkpOwotCQlCdWZmZXJVc2FnZUFjY3VtRGlmZigm YnVmdXNhZ2UsICZwZ0J1ZmZlclVzYWdlLCAmYnVmdXNhZ2Vfc3RhcnQpOwotCi0JCS8qIGNhbGMg ZGlmZmVyZW5jZXMgb2YgV0FMIGNvdW50ZXJzLiAqLwotCQltZW1zZXQoJndhbHVzYWdlLCAwLCBz aXplb2YoV2FsVXNhZ2UpKTsKLQkJV2FsVXNhZ2VBY2N1bURpZmYoJndhbHVzYWdlLCAmcGdXYWxV c2FnZSwgJndhbHVzYWdlX3N0YXJ0KTsKLQogCQlwZ3NzX3N0b3JlKHF1ZXJ5U3RyaW5nLAogCQkJ CSAgIHNhdmVkX3F1ZXJ5SWQsCiAJCQkJICAgc2F2ZWRfc3RtdF9sb2NhdGlvbiwKIAkJCQkgICBz YXZlZF9zdG10X2xlbiwKIAkJCQkgICBQR1NTX0VYRUMsCi0JCQkJICAgSU5TVFJfVElNRV9HRVRf TUlMTElTRUMoZHVyYXRpb24pLAorCQkJCSAgIElOU1RSX1RJTUVfR0VUX01JTExJU0VDKGluc3Ry LnRvdGFsKSwKIAkJCQkgICByb3dzLAotCQkJCSAgICZidWZ1c2FnZSwKLQkJCQkgICAmd2FsdXNh Z2UsCisJCQkJICAgJmluc3RyLmJ1ZnVzYWdlLAorCQkJCSAgICZpbnN0ci53YWx1c2FnZSwKIAkJ CQkgICBOVUxMLAogCQkJCSAgIE5VTEwsCiAJCQkJICAgMCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9icmluL2JyaW4uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW4uYwpp bmRleCAyYTBmOGM4ZTNiOC4uMWNlYjIzMDY5NTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9icmluL2JyaW4uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMKQEAg LTI0MzQsOCArMjQzNCw4IEBAIF9icmluX2JlZ2luX3BhcmFsbGVsKEJyaW5CdWlsZFN0YXRlICpi dWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIAkgKiBhbmQgUEFSQUxM RUxfS0VZX0JVRkZFUl9VU0FHRS4KIAkgKgogCSAqIElmIHRoZXJlIGFyZSBubyBleHRlbnNpb25z IGxvYWRlZCB0aGF0IGNhcmUsIHdlIGNvdWxkIHNraXAgdGhpcy4gIFdlCi0JICogaGF2ZSBubyB3 YXkgb2Yga25vd2luZyB3aGV0aGVyIGFueW9uZSdzIGxvb2tpbmcgYXQgcGdXYWxVc2FnZSBvcgot CSAqIHBnQnVmZmVyVXNhZ2UsIHNvIGRvIGl0IHVuY29uZGl0aW9uYWxseS4KKwkgKiBoYXZlIG5v IHdheSBvZiBrbm93aW5nIHdoZXRoZXIgYW55b25lJ3MgbG9va2luZyBhdCBpbnN0cnVtZW50YXRp b24sIHNvCisJICogZG8gaXQgdW5jb25kaXRpb25hbGx5LgogCSAqLwogCXNobV90b2NfZXN0aW1h dGVfY2h1bmsoJnBjeHQtPmVzdGltYXRvciwKIAkJCQkJCSAgIG11bF9zaXplKHNpemVvZihXYWxV c2FnZSksIHBjeHQtPm53b3JrZXJzKSk7CkBAIC0yODg2LDYgKzI4ODYsNyBAQCBfYnJpbl9wYXJh bGxlbF9idWlsZF9tYWluKGRzbV9zZWdtZW50ICpzZWcsIHNobV90b2MgKnRvYykKIAlSZWxhdGlv bglpbmRleFJlbDsKIAlMT0NLTU9ERQloZWFwTG9ja21vZGU7CiAJTE9DS01PREUJaW5kZXhMb2Nr bW9kZTsKKwlRdWVyeUluc3RydW1lbnRhdGlvbiAqaW5zdHI7CiAJV2FsVXNhZ2UgICAqd2FsdXNh Z2U7CiAJQnVmZmVyVXNhZ2UgKmJ1ZmZlcnVzYWdlOwogCWludAkJCXNvcnRtZW07CkBAIC0yOTM1 LDcgKzI5MzYsNyBAQCBfYnJpbl9wYXJhbGxlbF9idWlsZF9tYWluKGRzbV9zZWdtZW50ICpzZWcs IHNobV90b2MgKnRvYykKIAl0dXBsZXNvcnRfYXR0YWNoX3NoYXJlZChzaGFyZWRzb3J0LCBzZWcp OwogCiAJLyogUHJlcGFyZSB0byB0cmFjayBidWZmZXIgdXNhZ2UgZHVyaW5nIHBhcmFsbGVsIGV4 ZWN1dGlvbiAqLwotCUluc3RyU3RhcnRQYXJhbGxlbFF1ZXJ5KCk7CisJaW5zdHIgPSBJbnN0clN0 YXJ0UGFyYWxsZWxRdWVyeSgpOwogCiAJLyoKIAkgKiBNaWdodCBhcyB3ZWxsIHVzZSByZWxpYWJs ZSBmaWd1cmUgd2hlbiBkb2xpbmcgb3V0IG1haW50ZW5hbmNlX3dvcmtfbWVtCkBAIC0yOTUwLDcg KzI5NTEsOCBAQCBfYnJpbl9wYXJhbGxlbF9idWlsZF9tYWluKGRzbV9zZWdtZW50ICpzZWcsIHNo bV90b2MgKnRvYykKIAkvKiBSZXBvcnQgV0FML2J1ZmZlciB1c2FnZSBkdXJpbmcgcGFyYWxsZWwg ZXhlY3V0aW9uICovCiAJYnVmZmVydXNhZ2UgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVM X0tFWV9CVUZGRVJfVVNBR0UsIGZhbHNlKTsKIAl3YWx1c2FnZSA9IHNobV90b2NfbG9va3VwKHRv YywgUEFSQUxMRUxfS0VZX1dBTF9VU0FHRSwgZmFsc2UpOwotCUluc3RyRW5kUGFyYWxsZWxRdWVy eSgmYnVmZmVydXNhZ2VbUGFyYWxsZWxXb3JrZXJOdW1iZXJdLAorCUluc3RyRW5kUGFyYWxsZWxR dWVyeShpbnN0ciwKKwkJCQkJCSAgJmJ1ZmZlcnVzYWdlW1BhcmFsbGVsV29ya2VyTnVtYmVyXSwK IAkJCQkJCSAgJndhbHVzYWdlW1BhcmFsbGVsV29ya2VyTnVtYmVyXSk7CiAKIAlpbmRleF9jbG9z ZShpbmRleFJlbCwgaW5kZXhMb2NrbW9kZSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nl c3MvZ2luL2dpbmluc2VydC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5pbnNlcnQuYwpp bmRleCBlNTQ3ODJkOWRkOC4uMDRjZDUzOTE2Y2EgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9naW4vZ2luaW5zZXJ0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5pbnNl cnQuYwpAQCAtOTkxLDggKzk5MSw4IEBAIF9naW5fYmVnaW5fcGFyYWxsZWwoR2luQnVpbGRTdGF0 ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJICogYW5kIFBB UkFMTEVMX0tFWV9CVUZGRVJfVVNBR0UuCiAJICoKIAkgKiBJZiB0aGVyZSBhcmUgbm8gZXh0ZW5z aW9ucyBsb2FkZWQgdGhhdCBjYXJlLCB3ZSBjb3VsZCBza2lwIHRoaXMuICBXZQotCSAqIGhhdmUg bm8gd2F5IG9mIGtub3dpbmcgd2hldGhlciBhbnlvbmUncyBsb29raW5nIGF0IHBnV2FsVXNhZ2Ug b3IKLQkgKiBwZ0J1ZmZlclVzYWdlLCBzbyBkbyBpdCB1bmNvbmRpdGlvbmFsbHkuCisJICogaGF2 ZSBubyB3YXkgb2Yga25vd2luZyB3aGV0aGVyIGFueW9uZSdzIGxvb2tpbmcgYXQgaW5zdHJ1bWVu dGF0aW9uLCBzbworCSAqIGRvIGl0IHVuY29uZGl0aW9uYWxseS4KIAkgKi8KIAlzaG1fdG9jX2Vz dGltYXRlX2NodW5rKCZwY3h0LT5lc3RpbWF0b3IsCiAJCQkJCQkgICBtdWxfc2l6ZShzaXplb2Yo V2FsVXNhZ2UpLCBwY3h0LT5ud29ya2VycykpOwpAQCAtMjExNyw2ICsyMTE3LDcgQEAgX2dpbl9w YXJhbGxlbF9idWlsZF9tYWluKGRzbV9zZWdtZW50ICpzZWcsIHNobV90b2MgKnRvYykKIAlSZWxh dGlvbglpbmRleFJlbDsKIAlMT0NLTU9ERQloZWFwTG9ja21vZGU7CiAJTE9DS01PREUJaW5kZXhM b2NrbW9kZTsKKwlRdWVyeUluc3RydW1lbnRhdGlvbiAqaW5zdHI7CiAJV2FsVXNhZ2UgICAqd2Fs dXNhZ2U7CiAJQnVmZmVyVXNhZ2UgKmJ1ZmZlcnVzYWdlOwogCWludAkJCXNvcnRtZW07CkBAIC0y MTg1LDcgKzIxODYsNyBAQCBfZ2luX3BhcmFsbGVsX2J1aWxkX21haW4oZHNtX3NlZ21lbnQgKnNl Zywgc2htX3RvYyAqdG9jKQogCXR1cGxlc29ydF9hdHRhY2hfc2hhcmVkKHNoYXJlZHNvcnQsIHNl Zyk7CiAKIAkvKiBQcmVwYXJlIHRvIHRyYWNrIGJ1ZmZlciB1c2FnZSBkdXJpbmcgcGFyYWxsZWwg ZXhlY3V0aW9uICovCi0JSW5zdHJTdGFydFBhcmFsbGVsUXVlcnkoKTsKKwlpbnN0ciA9IEluc3Ry U3RhcnRQYXJhbGxlbFF1ZXJ5KCk7CiAKIAkvKgogCSAqIE1pZ2h0IGFzIHdlbGwgdXNlIHJlbGlh YmxlIGZpZ3VyZSB3aGVuIGRvbGluZyBvdXQgbWFpbnRlbmFuY2Vfd29ya19tZW0KQEAgLTIyMDAs NyArMjIwMSw4IEBAIF9naW5fcGFyYWxsZWxfYnVpbGRfbWFpbihkc21fc2VnbWVudCAqc2VnLCBz aG1fdG9jICp0b2MpCiAJLyogUmVwb3J0IFdBTC9idWZmZXIgdXNhZ2UgZHVyaW5nIHBhcmFsbGVs IGV4ZWN1dGlvbiAqLwogCWJ1ZmZlcnVzYWdlID0gc2htX3RvY19sb29rdXAodG9jLCBQQVJBTExF TF9LRVlfQlVGRkVSX1VTQUdFLCBmYWxzZSk7CiAJd2FsdXNhZ2UgPSBzaG1fdG9jX2xvb2t1cCh0 b2MsIFBBUkFMTEVMX0tFWV9XQUxfVVNBR0UsIGZhbHNlKTsKLQlJbnN0ckVuZFBhcmFsbGVsUXVl cnkoJmJ1ZmZlcnVzYWdlW1BhcmFsbGVsV29ya2VyTnVtYmVyXSwKKwlJbnN0ckVuZFBhcmFsbGVs UXVlcnkoaW5zdHIsCisJCQkJCQkgICZidWZmZXJ1c2FnZVtQYXJhbGxlbFdvcmtlck51bWJlcl0s CiAJCQkJCQkgICZ3YWx1c2FnZVtQYXJhbGxlbFdvcmtlck51bWJlcl0pOwogCiAJaW5kZXhfY2xv c2UoaW5kZXhSZWwsIGluZGV4TG9ja21vZGUpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvdmFjdXVtbGF6eS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6 eS5jCmluZGV4IGY2OThjMmQ4OTliLi5jOTVlNjgwMWVhZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L3ZhY3V1bWxhenkuYwpAQCAtNjM3LDggKzYzNyw3IEBAIGhlYXBfdmFjdXVtX3JlbChSZWxhdGlv biByZWwsIGNvbnN0IFZhY3V1bVBhcmFtcyBwYXJhbXMsCiAJVGltZXN0YW1wVHogc3RhcnR0aW1l ID0gMDsKIAlQZ1N0YXRfQ291bnRlciBzdGFydHJlYWR0aW1lID0gMCwKIAkJCQlzdGFydHdyaXRl dGltZSA9IDA7Ci0JV2FsVXNhZ2UJc3RhcnR3YWx1c2FnZSA9IHBnV2FsVXNhZ2U7Ci0JQnVmZmVy VXNhZ2Ugc3RhcnRidWZmZXJ1c2FnZSA9IHBnQnVmZmVyVXNhZ2U7CisJUXVlcnlJbnN0cnVtZW50 YXRpb24gKmluc3RyID0gTlVMTDsKIAlFcnJvckNvbnRleHRDYWxsYmFjayBlcnJjYWxsYmFjazsK IAljaGFyCSAgKippbmRuYW1lcyA9IE5VTEw7CiAJU2l6ZQkJZGVhZF9pdGVtc19tYXhfYnl0ZXMg PSAwOwpAQCAtNjU0LDYgKzY1Myw4IEBAIGhlYXBfdmFjdXVtX3JlbChSZWxhdGlvbiByZWwsIGNv bnN0IFZhY3V1bVBhcmFtcyBwYXJhbXMsCiAJCQlzdGFydHJlYWR0aW1lID0gcGdTdGF0QmxvY2tS ZWFkVGltZTsKIAkJCXN0YXJ0d3JpdGV0aW1lID0gcGdTdGF0QmxvY2tXcml0ZVRpbWU7CiAJCX0K KwkJaW5zdHIgPSBJbnN0clF1ZXJ5QWxsb2MoSU5TVFJVTUVOVF9CVUZGRVJTIHwgSU5TVFJVTUVO VF9XQUwpOworCQlJbnN0clF1ZXJ5U3RhcnQoaW5zdHIpOwogCX0KIAogCS8qIFVzZWQgZm9yIGlu c3RydW1lbnRhdGlvbiBhbmQgc3RhdHMgcmVwb3J0ICovCkBAIC05ODQsMTQgKzk4NSwxNCBAQCBo ZWFwX3ZhY3V1bV9yZWwoUmVsYXRpb24gcmVsLCBjb25zdCBWYWN1dW1QYXJhbXMgcGFyYW1zLAog CXsKIAkJVGltZXN0YW1wVHogZW5kdGltZSA9IEdldEN1cnJlbnRUaW1lc3RhbXAoKTsKIAorCQlJ bnN0clF1ZXJ5U3RvcEZpbmFsaXplKGluc3RyKTsKKwogCQlpZiAodmVyYm9zZSB8fCBwYXJhbXMu bG9nX3ZhY3V1bV9taW5fZHVyYXRpb24gPT0gMCB8fAogCQkJVGltZXN0YW1wRGlmZmVyZW5jZUV4 Y2VlZHMoc3RhcnR0aW1lLCBlbmR0aW1lLAogCQkJCQkJCQkJICAgcGFyYW1zLmxvZ192YWN1dW1f bWluX2R1cmF0aW9uKSkKIAkJewogCQkJbG9uZwkJc2Vjc19kdXI7CiAJCQlpbnQJCQl1c2Vjc19k dXI7Ci0JCQlXYWxVc2FnZQl3YWx1c2FnZTsKLQkJCUJ1ZmZlclVzYWdlIGJ1ZmZlcnVzYWdlOwog CQkJU3RyaW5nSW5mb0RhdGEgYnVmOwogCQkJY2hhcgkgICAqbXNnZm10OwogCQkJaW50MzIJCWRp ZmY7CkBAIC0xMDAwLDEyICsxMDAxLDEwIEBAIGhlYXBfdmFjdXVtX3JlbChSZWxhdGlvbiByZWws IGNvbnN0IFZhY3V1bVBhcmFtcyBwYXJhbXMsCiAJCQlpbnQ2NAkJdG90YWxfYmxrc19oaXQ7CiAJ CQlpbnQ2NAkJdG90YWxfYmxrc19yZWFkOwogCQkJaW50NjQJCXRvdGFsX2Jsa3NfZGlydGllZDsK KwkJCUJ1ZmZlclVzYWdlIGJ1ZmZlcnVzYWdlID0gaW5zdHItPmluc3RyLmJ1ZnVzYWdlOworCQkJ V2FsVXNhZ2UJd2FsdXNhZ2UgPSBpbnN0ci0+aW5zdHIud2FsdXNhZ2U7CiAKIAkJCVRpbWVzdGFt cERpZmZlcmVuY2Uoc3RhcnR0aW1lLCBlbmR0aW1lLCAmc2Vjc19kdXIsICZ1c2Vjc19kdXIpOwot CQkJbWVtc2V0KCZ3YWx1c2FnZSwgMCwgc2l6ZW9mKFdhbFVzYWdlKSk7Ci0JCQlXYWxVc2FnZUFj Y3VtRGlmZigmd2FsdXNhZ2UsICZwZ1dhbFVzYWdlLCAmc3RhcnR3YWx1c2FnZSk7Ci0JCQltZW1z ZXQoJmJ1ZmZlcnVzYWdlLCAwLCBzaXplb2YoQnVmZmVyVXNhZ2UpKTsKLQkJCUJ1ZmZlclVzYWdl QWNjdW1EaWZmKCZidWZmZXJ1c2FnZSwgJnBnQnVmZmVyVXNhZ2UsICZzdGFydGJ1ZmZlcnVzYWdl KTsKIAogCQkJdG90YWxfYmxrc19oaXQgPSBidWZmZXJ1c2FnZS5zaGFyZWRfYmxrc19oaXQgKwog CQkJCWJ1ZmZlcnVzYWdlLmxvY2FsX2Jsa3NfaGl0OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv YWNjZXNzL25idHJlZS9uYnRzb3J0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNv cnQuYwppbmRleCA0N2E5YmRhMzBjOS4uNmEyNjFjOGRjYmQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRy ZWUvbmJ0c29ydC5jCkBAIC0xNDY2LDggKzE0NjYsOCBAQCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRC dWlsZFN0YXRlICpidWlsZHN0YXRlLCBib29sIGlzY29uY3VycmVudCwgaW50IHJlcXVlc3QpCiAJ ICogYW5kIFBBUkFMTEVMX0tFWV9CVUZGRVJfVVNBR0UuCiAJICoKIAkgKiBJZiB0aGVyZSBhcmUg bm8gZXh0ZW5zaW9ucyBsb2FkZWQgdGhhdCBjYXJlLCB3ZSBjb3VsZCBza2lwIHRoaXMuICBXZQot CSAqIGhhdmUgbm8gd2F5IG9mIGtub3dpbmcgd2hldGhlciBhbnlvbmUncyBsb29raW5nIGF0IHBn V2FsVXNhZ2Ugb3IKLQkgKiBwZ0J1ZmZlclVzYWdlLCBzbyBkbyBpdCB1bmNvbmRpdGlvbmFsbHku CisJICogaGF2ZSBubyB3YXkgb2Yga25vd2luZyB3aGV0aGVyIGFueW9uZSdzIGxvb2tpbmcgYXQg aW5zdHJ1bWVudGF0aW9uLCBzbworCSAqIGRvIGl0IHVuY29uZGl0aW9uYWxseS4KIAkgKi8KIAlz aG1fdG9jX2VzdGltYXRlX2NodW5rKCZwY3h0LT5lc3RpbWF0b3IsCiAJCQkJCQkgICBtdWxfc2l6 ZShzaXplb2YoV2FsVXNhZ2UpLCBwY3h0LT5ud29ya2VycykpOwpAQCAtMTc1Myw2ICsxNzUzLDcg QEAgX2J0X3BhcmFsbGVsX2J1aWxkX21haW4oZHNtX3NlZ21lbnQgKnNlZywgc2htX3RvYyAqdG9j KQogCVJlbGF0aW9uCWluZGV4UmVsOwogCUxPQ0tNT0RFCWhlYXBMb2NrbW9kZTsKIAlMT0NLTU9E RQlpbmRleExvY2ttb2RlOworCVF1ZXJ5SW5zdHJ1bWVudGF0aW9uICppbnN0cjsKIAlXYWxVc2Fn ZSAgICp3YWx1c2FnZTsKIAlCdWZmZXJVc2FnZSAqYnVmZmVydXNhZ2U7CiAJaW50CQkJc29ydG1l bTsKQEAgLTE4MjgsNyArMTgyOSw3IEBAIF9idF9wYXJhbGxlbF9idWlsZF9tYWluKGRzbV9zZWdt ZW50ICpzZWcsIHNobV90b2MgKnRvYykKIAl9CiAKIAkvKiBQcmVwYXJlIHRvIHRyYWNrIGJ1ZmZl ciB1c2FnZSBkdXJpbmcgcGFyYWxsZWwgZXhlY3V0aW9uICovCi0JSW5zdHJTdGFydFBhcmFsbGVs UXVlcnkoKTsKKwlpbnN0ciA9IEluc3RyU3RhcnRQYXJhbGxlbFF1ZXJ5KCk7CiAKIAkvKiBQZXJm b3JtIHNvcnRpbmcgb2Ygc3Bvb2wsIGFuZCBwb3NzaWJseSBhIHNwb29sMiAqLwogCXNvcnRtZW0g PSBtYWludGVuYW5jZV93b3JrX21lbSAvIGJ0c2hhcmVkLT5zY2FudHVwbGVzb3J0c3RhdGVzOwpA QCAtMTgzOCw3ICsxODM5LDggQEAgX2J0X3BhcmFsbGVsX2J1aWxkX21haW4oZHNtX3NlZ21lbnQg KnNlZywgc2htX3RvYyAqdG9jKQogCS8qIFJlcG9ydCBXQUwvYnVmZmVyIHVzYWdlIGR1cmluZyBw YXJhbGxlbCBleGVjdXRpb24gKi8KIAlidWZmZXJ1c2FnZSA9IHNobV90b2NfbG9va3VwKHRvYywg UEFSQUxMRUxfS0VZX0JVRkZFUl9VU0FHRSwgZmFsc2UpOwogCXdhbHVzYWdlID0gc2htX3RvY19s b29rdXAodG9jLCBQQVJBTExFTF9LRVlfV0FMX1VTQUdFLCBmYWxzZSk7Ci0JSW5zdHJFbmRQYXJh bGxlbFF1ZXJ5KCZidWZmZXJ1c2FnZVtQYXJhbGxlbFdvcmtlck51bWJlcl0sCisJSW5zdHJFbmRQ YXJhbGxlbFF1ZXJ5KGluc3RyLAorCQkJCQkJICAmYnVmZmVydXNhZ2VbUGFyYWxsZWxXb3JrZXJO dW1iZXJdLAogCQkJCQkJICAmd2FsdXNhZ2VbUGFyYWxsZWxXb3JrZXJOdW1iZXJdKTsKIAogI2lm ZGVmIEJUUkVFX0JVSUxEX1NUQVRTCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9h bmFseXplLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9hbmFseXplLmMKaW5kZXggZWVlZDkxYmUy NjYuLmMyMWIyMDE5ZWFiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9hbmFseXpl LmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvYW5hbHl6ZS5jCkBAIC0zMDksOSArMzA5LDcg QEAgZG9fYW5hbHl6ZV9yZWwoUmVsYXRpb24gb25lcmVsLCBjb25zdCBWYWN1dW1QYXJhbXMgcGFy YW1zLAogCU9pZAkJCXNhdmVfdXNlcmlkOwogCWludAkJCXNhdmVfc2VjX2NvbnRleHQ7CiAJaW50 CQkJc2F2ZV9uZXN0bGV2ZWw7Ci0JV2FsVXNhZ2UJc3RhcnR3YWx1c2FnZSA9IHBnV2FsVXNhZ2U7 Ci0JQnVmZmVyVXNhZ2Ugc3RhcnRidWZmZXJ1c2FnZSA9IHBnQnVmZmVyVXNhZ2U7Ci0JQnVmZmVy VXNhZ2UgYnVmZmVydXNhZ2U7CisJUXVlcnlJbnN0cnVtZW50YXRpb24gKmluc3RyID0gTlVMTDsK IAlQZ1N0YXRfQ291bnRlciBzdGFydHJlYWR0aW1lID0gMDsKIAlQZ1N0YXRfQ291bnRlciBzdGFy dHdyaXRldGltZSA9IDA7CiAKQEAgLTM2Miw2ICszNjAsOSBAQCBkb19hbmFseXplX3JlbChSZWxh dGlvbiBvbmVyZWwsIGNvbnN0IFZhY3V1bVBhcmFtcyBwYXJhbXMsCiAJCX0KIAogCQlwZ19ydXNh Z2VfaW5pdCgmcnUwKTsKKworCQlpbnN0ciA9IEluc3RyUXVlcnlBbGxvYyhJTlNUUlVNRU5UX0JV RkZFUlMgfCBJTlNUUlVNRU5UX1dBTCk7CisJCUluc3RyUXVlcnlTdGFydChpbnN0cik7CiAJfQog CiAJLyogVXNlZCBmb3IgaW5zdHJ1bWVudGF0aW9uIGFuZCBzdGF0cyByZXBvcnQgKi8KQEAgLTc0 MiwxMiArNzQzLDEzIEBAIGRvX2FuYWx5emVfcmVsKFJlbGF0aW9uIG9uZXJlbCwgY29uc3QgVmFj dXVtUGFyYW1zIHBhcmFtcywKIAl7CiAJCVRpbWVzdGFtcFR6IGVuZHRpbWUgPSBHZXRDdXJyZW50 VGltZXN0YW1wKCk7CiAKKwkJSW5zdHJRdWVyeVN0b3BGaW5hbGl6ZShpbnN0cik7CisKIAkJaWYg KHZlcmJvc2UgfHwgcGFyYW1zLmxvZ19hbmFseXplX21pbl9kdXJhdGlvbiA9PSAwIHx8CiAJCQlU aW1lc3RhbXBEaWZmZXJlbmNlRXhjZWVkcyhzdGFydHRpbWUsIGVuZHRpbWUsCiAJCQkJCQkJCQkg ICBwYXJhbXMubG9nX2FuYWx5emVfbWluX2R1cmF0aW9uKSkKIAkJewogCQkJbG9uZwkJZGVsYXlf aW5fbXM7Ci0JCQlXYWxVc2FnZQl3YWx1c2FnZTsKIAkJCWRvdWJsZQkJcmVhZF9yYXRlID0gMDsK IAkJCWRvdWJsZQkJd3JpdGVfcmF0ZSA9IDA7CiAJCQljaGFyCSAgICptc2dmbXQ7CkBAIC03NTUs MTggKzc1NywxNSBAQCBkb19hbmFseXplX3JlbChSZWxhdGlvbiBvbmVyZWwsIGNvbnN0IFZhY3V1 bVBhcmFtcyBwYXJhbXMsCiAJCQlpbnQ2NAkJdG90YWxfYmxrc19oaXQ7CiAJCQlpbnQ2NAkJdG90 YWxfYmxrc19yZWFkOwogCQkJaW50NjQJCXRvdGFsX2Jsa3NfZGlydGllZDsKLQotCQkJbWVtc2V0 KCZidWZmZXJ1c2FnZSwgMCwgc2l6ZW9mKEJ1ZmZlclVzYWdlKSk7Ci0JCQlCdWZmZXJVc2FnZUFj Y3VtRGlmZigmYnVmZmVydXNhZ2UsICZwZ0J1ZmZlclVzYWdlLCAmc3RhcnRidWZmZXJ1c2FnZSk7 Ci0JCQltZW1zZXQoJndhbHVzYWdlLCAwLCBzaXplb2YoV2FsVXNhZ2UpKTsKLQkJCVdhbFVzYWdl QWNjdW1EaWZmKCZ3YWx1c2FnZSwgJnBnV2FsVXNhZ2UsICZzdGFydHdhbHVzYWdlKTsKLQotCQkJ dG90YWxfYmxrc19oaXQgPSBidWZmZXJ1c2FnZS5zaGFyZWRfYmxrc19oaXQgKwotCQkJCWJ1ZmZl cnVzYWdlLmxvY2FsX2Jsa3NfaGl0OwotCQkJdG90YWxfYmxrc19yZWFkID0gYnVmZmVydXNhZ2Uu c2hhcmVkX2Jsa3NfcmVhZCArCi0JCQkJYnVmZmVydXNhZ2UubG9jYWxfYmxrc19yZWFkOwotCQkJ dG90YWxfYmxrc19kaXJ0aWVkID0gYnVmZmVydXNhZ2Uuc2hhcmVkX2Jsa3NfZGlydGllZCArCi0J CQkJYnVmZmVydXNhZ2UubG9jYWxfYmxrc19kaXJ0aWVkOworCQkJQnVmZmVyVXNhZ2UgYnVmdXNh Z2UgPSBpbnN0ci0+aW5zdHIuYnVmdXNhZ2U7CisJCQlXYWxVc2FnZQl3YWx1c2FnZSA9IGluc3Ry LT5pbnN0ci53YWx1c2FnZTsKKworCQkJdG90YWxfYmxrc19oaXQgPSBidWZ1c2FnZS5zaGFyZWRf Ymxrc19oaXQgKworCQkJCWJ1ZnVzYWdlLmxvY2FsX2Jsa3NfaGl0OworCQkJdG90YWxfYmxrc19y ZWFkID0gYnVmdXNhZ2Uuc2hhcmVkX2Jsa3NfcmVhZCArCisJCQkJYnVmdXNhZ2UubG9jYWxfYmxr c19yZWFkOworCQkJdG90YWxfYmxrc19kaXJ0aWVkID0gYnVmdXNhZ2Uuc2hhcmVkX2Jsa3NfZGly dGllZCArCisJCQkJYnVmdXNhZ2UubG9jYWxfYmxrc19kaXJ0aWVkOwogCiAJCQkvKgogCQkJICog V2UgZG8gbm90IGV4cGVjdCBhbiBhbmFseXplIHRvIHRha2UgPiAyNSBkYXlzIGFuZCBpdCBzaW1w bGlmaWVzCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMgYi9zcmMv YmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKaW5kZXggZTczZGMxMjkxMzIuLmRjNWU2Mzk1NWJj IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKKysrIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCkBAIC0zMjQsMTQgKzMyNCwxNiBAQCBzdGFuZGFyZF9F eHBsYWluT25lUXVlcnkoUXVlcnkgKnF1ZXJ5LCBpbnQgY3Vyc29yT3B0aW9ucywKIAkJCQkJCSBR dWVyeUVudmlyb25tZW50ICpxdWVyeUVudikKIHsKIAlQbGFubmVkU3RtdCAqcGxhbjsKLQlpbnN0 cl90aW1lCXBsYW5zdGFydCwKLQkJCQlwbGFuZHVyYXRpb247Ci0JQnVmZmVyVXNhZ2UgYnVmdXNh Z2Vfc3RhcnQsCi0JCQkJYnVmdXNhZ2U7CisJUXVlcnlJbnN0cnVtZW50YXRpb24gKmluc3RyID0g TlVMTDsKIAlNZW1vcnlDb250ZXh0Q291bnRlcnMgbWVtX2NvdW50ZXJzOwogCU1lbW9yeUNvbnRl eHQgcGxhbm5lcl9jdHggPSBOVUxMOwogCU1lbW9yeUNvbnRleHQgc2F2ZWRfY3R4ID0gTlVMTDsK IAorCWlmIChlcy0+YnVmZmVycykKKwkJaW5zdHIgPSBJbnN0clF1ZXJ5QWxsb2MoSU5TVFJVTUVO VF9USU1FUiB8IElOU1RSVU1FTlRfQlVGRkVSUyk7CisJZWxzZQorCQlpbnN0ciA9IEluc3RyUXVl cnlBbGxvYyhJTlNUUlVNRU5UX1RJTUVSKTsKKwogCWlmIChlcy0+bWVtb3J5KQogCXsKIAkJLyoK QEAgLTM0OCwxNSArMzUwLDEyIEBAIHN0YW5kYXJkX0V4cGxhaW5PbmVRdWVyeShRdWVyeSAqcXVl cnksIGludCBjdXJzb3JPcHRpb25zLAogCQlzYXZlZF9jdHggPSBNZW1vcnlDb250ZXh0U3dpdGNo VG8ocGxhbm5lcl9jdHgpOwogCX0KIAotCWlmIChlcy0+YnVmZmVycykKLQkJYnVmdXNhZ2Vfc3Rh cnQgPSBwZ0J1ZmZlclVzYWdlOwotCUlOU1RSX1RJTUVfU0VUX0NVUlJFTlQocGxhbnN0YXJ0KTsK KwlJbnN0clF1ZXJ5U3RhcnQoaW5zdHIpOwogCiAJLyogcGxhbiB0aGUgcXVlcnkgKi8KIAlwbGFu ID0gcGdfcGxhbl9xdWVyeShxdWVyeSwgcXVlcnlTdHJpbmcsIGN1cnNvck9wdGlvbnMsIHBhcmFt cywgZXMpOwogCi0JSU5TVFJfVElNRV9TRVRfQ1VSUkVOVChwbGFuZHVyYXRpb24pOwotCUlOU1RS X1RJTUVfU1VCVFJBQ1QocGxhbmR1cmF0aW9uLCBwbGFuc3RhcnQpOworCUluc3RyUXVlcnlTdG9w RmluYWxpemUoaW5zdHIpOwogCiAJaWYgKGVzLT5tZW1vcnkpCiAJewpAQCAtMzY0LDE2ICszNjMs OSBAQCBzdGFuZGFyZF9FeHBsYWluT25lUXVlcnkoUXVlcnkgKnF1ZXJ5LCBpbnQgY3Vyc29yT3B0 aW9ucywKIAkJTWVtb3J5Q29udGV4dE1lbUNvbnN1bWVkKHBsYW5uZXJfY3R4LCAmbWVtX2NvdW50 ZXJzKTsKIAl9CiAKLQkvKiBjYWxjIGRpZmZlcmVuY2VzIG9mIGJ1ZmZlciBjb3VudGVycy4gKi8K LQlpZiAoZXMtPmJ1ZmZlcnMpCi0JewotCQltZW1zZXQoJmJ1ZnVzYWdlLCAwLCBzaXplb2YoQnVm ZmVyVXNhZ2UpKTsKLQkJQnVmZmVyVXNhZ2VBY2N1bURpZmYoJmJ1ZnVzYWdlLCAmcGdCdWZmZXJV c2FnZSwgJmJ1ZnVzYWdlX3N0YXJ0KTsKLQl9Ci0KIAkvKiBydW4gaXQgKGlmIG5lZWRlZCkgYW5k IHByb2R1Y2Ugb3V0cHV0ICovCiAJRXhwbGFpbk9uZVBsYW4ocGxhbiwgaW50bywgZXMsIHF1ZXJ5 U3RyaW5nLCBwYXJhbXMsIHF1ZXJ5RW52LAotCQkJCSAgICZwbGFuZHVyYXRpb24sIChlcy0+YnVm ZmVycyA/ICZidWZ1c2FnZSA6IE5VTEwpLAorCQkJCSAgICZpbnN0ci0+aW5zdHIudG90YWwsIChl cy0+YnVmZmVycyA/ICZpbnN0ci0+aW5zdHIuYnVmdXNhZ2UgOiBOVUxMKSwKIAkJCQkgICBlcy0+ bWVtb3J5ID8gJm1lbV9jb3VudGVycyA6IE5VTEwpOwogfQogCkBAIC01OTAsNyArNTgyLDEyIEBA IEV4cGxhaW5PbmVQbGFuKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwgSW50b0NsYXVzZSAqaW50 bywgRXhwbGFpblN0YXRlICplcywKIAogCS8qIGdyYWIgc2VyaWFsaXphdGlvbiBtZXRyaWNzIGJl Zm9yZSB3ZSBkZXN0cm95IHRoZSBEZXN0UmVjZWl2ZXIgKi8KIAlpZiAoZXMtPnNlcmlhbGl6ZSAh PSBFWFBMQUlOX1NFUklBTElaRV9OT05FKQotCQlzZXJpYWxpemVNZXRyaWNzID0gR2V0U2VyaWFs aXphdGlvbk1ldHJpY3MoZGVzdCk7CisJeworCQlTZXJpYWxpemVNZXRyaWNzICptZXRyaWNzID0g R2V0U2VyaWFsaXphdGlvbk1ldHJpY3MoZGVzdCk7CisKKwkJaWYgKG1ldHJpY3MpCisJCQltZW1j cHkoJnNlcmlhbGl6ZU1ldHJpY3MsIG1ldHJpY3MsIHNpemVvZihTZXJpYWxpemVNZXRyaWNzKSk7 CisJfQogCiAJLyogY2FsbCB0aGUgRGVzdFJlY2VpdmVyJ3MgZGVzdHJveSBtZXRob2QgZXZlbiBk dXJpbmcgZXhwbGFpbiAqLwogCWRlc3QtPnJEZXN0cm95KGRlc3QpOwpAQCAtMTAxOSw3ICsxMDE2 LDcgQEAgRXhwbGFpblByaW50U2VyaWFsaXplKEV4cGxhaW5TdGF0ZSAqZXMsIFNlcmlhbGl6ZU1l dHJpY3MgKm1ldHJpY3MpCiAJCUV4cGxhaW5JbmRlbnRUZXh0KGVzKTsKIAkJaWYgKGVzLT50aW1p bmcpCiAJCQlhcHBlbmRTdHJpbmdJbmZvKGVzLT5zdHIsICJTZXJpYWxpemF0aW9uOiB0aW1lPSUu M2YgbXMgIG91dHB1dD0iIFVJTlQ2NF9GT1JNQVQgImtCICBmb3JtYXQ9JXNcbiIsCi0JCQkJCQkJ IDEwMDAuMCAqIElOU1RSX1RJTUVfR0VUX0RPVUJMRShtZXRyaWNzLT50aW1lU3BlbnQpLAorCQkJ CQkJCSAxMDAwLjAgKiBJTlNUUl9USU1FX0dFVF9ET1VCTEUobWV0cmljcy0+aW5zdHIudG90YWwp LAogCQkJCQkJCSBCWVRFU19UT19LSUxPQllURVMobWV0cmljcy0+Ynl0ZXNTZW50KSwKIAkJCQkJ CQkgZm9ybWF0KTsKIAkJZWxzZQpAQCAtMTAyNywxMCArMTAyNCwxMCBAQCBFeHBsYWluUHJpbnRT ZXJpYWxpemUoRXhwbGFpblN0YXRlICplcywgU2VyaWFsaXplTWV0cmljcyAqbWV0cmljcykKIAkJ CQkJCQkgQllURVNfVE9fS0lMT0JZVEVTKG1ldHJpY3MtPmJ5dGVzU2VudCksCiAJCQkJCQkJIGZv cm1hdCk7CiAKLQkJaWYgKGVzLT5idWZmZXJzICYmIHBlZWtfYnVmZmVyX3VzYWdlKGVzLCAmbWV0 cmljcy0+YnVmZmVyVXNhZ2UpKQorCQlpZiAoZXMtPmJ1ZmZlcnMgJiYgcGVla19idWZmZXJfdXNh Z2UoZXMsICZtZXRyaWNzLT5pbnN0ci5idWZ1c2FnZSkpCiAJCXsKIAkJCWVzLT5pbmRlbnQrKzsK LQkJCXNob3dfYnVmZmVyX3VzYWdlKGVzLCAmbWV0cmljcy0+YnVmZmVyVXNhZ2UpOworCQkJc2hv d19idWZmZXJfdXNhZ2UoZXMsICZtZXRyaWNzLT5pbnN0ci5idWZ1c2FnZSk7CiAJCQllcy0+aW5k ZW50LS07CiAJCX0KIAl9CkBAIC0xMDM4LDEzICsxMDM1LDEzIEBAIEV4cGxhaW5QcmludFNlcmlh bGl6ZShFeHBsYWluU3RhdGUgKmVzLCBTZXJpYWxpemVNZXRyaWNzICptZXRyaWNzKQogCXsKIAkJ aWYgKGVzLT50aW1pbmcpCiAJCQlFeHBsYWluUHJvcGVydHlGbG9hdCgiVGltZSIsICJtcyIsCi0J CQkJCQkJCSAxMDAwLjAgKiBJTlNUUl9USU1FX0dFVF9ET1VCTEUobWV0cmljcy0+dGltZVNwZW50 KSwKKwkJCQkJCQkJIDEwMDAuMCAqIElOU1RSX1RJTUVfR0VUX0RPVUJMRShtZXRyaWNzLT5pbnN0 ci50b3RhbCksCiAJCQkJCQkJCSAzLCBlcyk7CiAJCUV4cGxhaW5Qcm9wZXJ0eVVJbnRlZ2VyKCJP dXRwdXQgVm9sdW1lIiwgImtCIiwKIAkJCQkJCQkJQllURVNfVE9fS0lMT0JZVEVTKG1ldHJpY3Mt PmJ5dGVzU2VudCksIGVzKTsKIAkJRXhwbGFpblByb3BlcnR5VGV4dCgiRm9ybWF0IiwgZm9ybWF0 LCBlcyk7CiAJCWlmIChlcy0+YnVmZmVycykKLQkJCXNob3dfYnVmZmVyX3VzYWdlKGVzLCAmbWV0 cmljcy0+YnVmZmVyVXNhZ2UpOworCQkJc2hvd19idWZmZXJfdXNhZ2UoZXMsICZtZXRyaWNzLT5p bnN0ci5idWZ1c2FnZSk7CiAJfQogCiAJRXhwbGFpbkNsb3NlR3JvdXAoIlNlcmlhbGl6YXRpb24i LCAiU2VyaWFsaXphdGlvbiIsIHRydWUsIGVzKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2V4cGxhaW5fZHIuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW5fZHIuYwpp bmRleCAzYzk2MDYxY2YzMi4uZTFmYzcyM2M3NTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2V4cGxhaW5fZHIuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluX2Ry LmMKQEAgLTExMCwxNSArMTEwLDExIEBAIHNlcmlhbGl6ZUFuYWx5emVSZWNlaXZlKFR1cGxlVGFi bGVTbG90ICpzbG90LCBEZXN0UmVjZWl2ZXIgKnNlbGYpCiAJTWVtb3J5Q29udGV4dCBvbGRjb250 ZXh0OwogCVN0cmluZ0luZm8JYnVmID0gJm15U3RhdGUtPmJ1ZjsKIAlpbnQJCQluYXR0cyA9IHR5 cGVpbmZvLT5uYXR0czsKLQlpbnN0cl90aW1lCXN0YXJ0LAotCQkJCWVuZDsKLQlCdWZmZXJVc2Fn ZSBpbnN0cl9zdGFydDsKKwlJbnN0cnVtZW50YXRpb24gKmluc3RyID0gJm15U3RhdGUtPm1ldHJp Y3MuaW5zdHI7CiAKIAkvKiBvbmx5IG1lYXN1cmUgdGltZSwgYnVmZmVycyBpZiByZXF1ZXN0ZWQg Ki8KLQlpZiAobXlTdGF0ZS0+ZXMtPnRpbWluZykKLQkJSU5TVFJfVElNRV9TRVRfQ1VSUkVOVChz dGFydCk7Ci0JaWYgKG15U3RhdGUtPmVzLT5idWZmZXJzKQotCQlpbnN0cl9zdGFydCA9IHBnQnVm ZmVyVXNhZ2U7CisJaWYgKGluc3RyLT5uZWVkX3RpbWVyIHx8IGluc3RyLT5uZWVkX3N0YWNrKQor CQlJbnN0clN0YXJ0KGluc3RyKTsKIAogCS8qIFNldCBvciB1cGRhdGUgbXkgZGVyaXZlZCBhdHRy aWJ1dGUgaW5mbywgaWYgbmVlZGVkICovCiAJaWYgKG15U3RhdGUtPmF0dHJpbmZvICE9IHR5cGVp bmZvIHx8IG15U3RhdGUtPm5hdHRycyAhPSBuYXR0cykKQEAgLTE4NiwxOCArMTgyLDkgQEAgc2Vy aWFsaXplQW5hbHl6ZVJlY2VpdmUoVHVwbGVUYWJsZVNsb3QgKnNsb3QsIERlc3RSZWNlaXZlciAq c2VsZikKIAlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7CiAJTWVtb3J5Q29udGV4 dFJlc2V0KG15U3RhdGUtPnRtcGNvbnRleHQpOwogCi0JLyogVXBkYXRlIHRpbWluZyBkYXRhICov Ci0JaWYgKG15U3RhdGUtPmVzLT50aW1pbmcpCi0JewotCQlJTlNUUl9USU1FX1NFVF9DVVJSRU5U KGVuZCk7Ci0JCUlOU1RSX1RJTUVfQUNDVU1fRElGRihteVN0YXRlLT5tZXRyaWNzLnRpbWVTcGVu dCwgZW5kLCBzdGFydCk7Ci0JfQotCi0JLyogVXBkYXRlIGJ1ZmZlciBtZXRyaWNzICovCi0JaWYg KG15U3RhdGUtPmVzLT5idWZmZXJzKQotCQlCdWZmZXJVc2FnZUFjY3VtRGlmZigmbXlTdGF0ZS0+ bWV0cmljcy5idWZmZXJVc2FnZSwKLQkJCQkJCQkgJnBnQnVmZmVyVXNhZ2UsCi0JCQkJCQkJICZp bnN0cl9zdGFydCk7CisJLyogU3RvcCBwZXItdHVwbGUgbWVhc3VyZW1lbnQgKi8KKwlpZiAoaW5z dHItPm5lZWRfdGltZXIgfHwgaW5zdHItPm5lZWRfc3RhY2spCisJCUluc3RyU3RvcChpbnN0cik7 CiAKIAlyZXR1cm4gdHJ1ZTsKIH0KQEAgLTIzMyw5ICsyMjAsMTcgQEAgc2VyaWFsaXplQW5hbHl6 ZVN0YXJ0dXAoRGVzdFJlY2VpdmVyICpzZWxmLCBpbnQgb3BlcmF0aW9uLCBUdXBsZURlc2MgdHlw ZWluZm8pCiAJLyogVGhlIG91dHB1dCBidWZmZXIgaXMgcmUtdXNlZCBhY3Jvc3Mgcm93cywgYXMg aW4gcHJpbnR0dXAuYyAqLwogCWluaXRTdHJpbmdJbmZvKCZyZWNlaXZlci0+YnVmKTsKIAotCS8q IEluaXRpYWxpemUgcmVzdWx0cyBjb3VudGVycyAqLworCS8qIEluaXRpYWxpemUgbWV0cmljcyBh bmQgcGVyLXR1cGxlIGluc3RydW1lbnRhdGlvbiAqLwogCW1lbXNldCgmcmVjZWl2ZXItPm1ldHJp Y3MsIDAsIHNpemVvZihTZXJpYWxpemVNZXRyaWNzKSk7Ci0JSU5TVFJfVElNRV9TRVRfWkVSTyhy ZWNlaXZlci0+bWV0cmljcy50aW1lU3BlbnQpOworCXsKKwkJaW50CQkJaW5zdHJ1bWVudF9vcHRp b25zID0gMDsKKworCQlpZiAocmVjZWl2ZXItPmVzLT50aW1pbmcpCisJCQlpbnN0cnVtZW50X29w dGlvbnMgfD0gSU5TVFJVTUVOVF9USU1FUjsKKwkJaWYgKHJlY2VpdmVyLT5lcy0+YnVmZmVycykK KwkJCWluc3RydW1lbnRfb3B0aW9ucyB8PSBJTlNUUlVNRU5UX0JVRkZFUlM7CisJCUluc3RySW5p dE9wdGlvbnMoJnJlY2VpdmVyLT5tZXRyaWNzLmluc3RyLCBpbnN0cnVtZW50X29wdGlvbnMpOwor CX0KIH0KIAogLyoKQEAgLTI0Niw2ICsyNDEsOCBAQCBzZXJpYWxpemVBbmFseXplU2h1dGRvd24o RGVzdFJlY2VpdmVyICpzZWxmKQogewogCVNlcmlhbGl6ZURlc3RSZWNlaXZlciAqcmVjZWl2ZXIg PSAoU2VyaWFsaXplRGVzdFJlY2VpdmVyICopIHNlbGY7CiAKKwlJbnN0ckZpbmFsaXplQ2hpbGQo JnJlY2VpdmVyLT5tZXRyaWNzLmluc3RyLCBpbnN0cl9zdGFjay5jdXJyZW50KTsKKwogCWlmIChy ZWNlaXZlci0+ZmluZm9zKQogCQlwZnJlZShyZWNlaXZlci0+ZmluZm9zKTsKIAlyZWNlaXZlci0+ ZmluZm9zID0gTlVMTDsKQEAgLTI5NiwxNiArMjkzLDE4IEBAIENyZWF0ZUV4cGxhaW5TZXJpYWxp emVEZXN0UmVjZWl2ZXIoRXhwbGFpblN0YXRlICplcykKICAqIHJlY2VpdmVyIGlmIHRoZSBzdWJq ZWN0IHN0YXRlbWVudCBpcyBDUkVBVEUgVEFCTEUgQVMuICBJbiB0aGF0CiAgKiBjYXNlLCByZXR1 cm4gYWxsLXplcm9lcyBzdGF0cy4KICAqLwotU2VyaWFsaXplTWV0cmljcworLyoKKyAqIEdldFNl cmlhbGl6YXRpb25NZXRyaWNzIC0gZ2V0IHNlcmlhbGl6YXRpb24gbWV0cmljcworICoKKyAqIFJl dHVybnMgYSBwb2ludGVyIHRvIHRoZSBTZXJpYWxpemVNZXRyaWNzIGluc2lkZSB0aGUgZGVzdCBy ZWNlaXZlciwKKyAqIG9yIE5VTEwgaWYgdGhlIHJlY2VpdmVyIGlzIG5vdCBhIFNlcmlhbGl6ZURl c3RSZWNlaXZlciAoZS5nLiBhbiBJbnRvUmVsCisgKiByZWNlaXZlciBmb3IgQ1JFQVRFIFRBQkxF IEFTKS4KKyAqLworU2VyaWFsaXplTWV0cmljcyAqCiBHZXRTZXJpYWxpemF0aW9uTWV0cmljcyhE ZXN0UmVjZWl2ZXIgKmRlc3QpCiB7Ci0JU2VyaWFsaXplTWV0cmljcyBlbXB0eTsKLQogCWlmIChk ZXN0LT5teWRlc3QgPT0gRGVzdEV4cGxhaW5TZXJpYWxpemUpCi0JCXJldHVybiAoKFNlcmlhbGl6 ZURlc3RSZWNlaXZlciAqKSBkZXN0KS0+bWV0cmljczsKLQotCW1lbXNldCgmZW1wdHksIDAsIHNp emVvZihTZXJpYWxpemVNZXRyaWNzKSk7Ci0JSU5TVFJfVElNRV9TRVRfWkVSTyhlbXB0eS50aW1l U3BlbnQpOworCQlyZXR1cm4gJigoU2VyaWFsaXplRGVzdFJlY2VpdmVyICopIGRlc3QpLT5tZXRy aWNzOwogCi0JcmV0dXJuIGVtcHR5OworCXJldHVybiBOVUxMOwogfQpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFy ZS5jCmluZGV4IDg3NmFhZDIxMDBhLi5mN2UxNThlNGRkOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvcHJlcGFyZS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUu YwpAQCAtNTgwLDEzICs1ODAsMTYgQEAgRXhwbGFpbkV4ZWN1dGVRdWVyeShFeGVjdXRlU3RtdCAq ZXhlY3N0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAJTGlzdENlbGwg ICAqcDsKIAlQYXJhbUxpc3RJbmZvIHBhcmFtTEkgPSBOVUxMOwogCUVTdGF0ZQkgICAqZXN0YXRl ID0gTlVMTDsKLQlpbnN0cl90aW1lCXBsYW5zdGFydDsKLQlpbnN0cl90aW1lCXBsYW5kdXJhdGlv bjsKLQlCdWZmZXJVc2FnZSBidWZ1c2FnZV9zdGFydCwKLQkJCQlidWZ1c2FnZTsKKwlRdWVyeUlu c3RydW1lbnRhdGlvbiAqaW5zdHIgPSBOVUxMOwogCU1lbW9yeUNvbnRleHRDb3VudGVycyBtZW1f Y291bnRlcnM7CiAJTWVtb3J5Q29udGV4dCBwbGFubmVyX2N0eCA9IE5VTEw7CiAJTWVtb3J5Q29u dGV4dCBzYXZlZF9jdHggPSBOVUxMOworCWludAkJCWluc3RydW1lbnRfb3B0aW9ucyA9IElOU1RS VU1FTlRfVElNRVI7CisKKwlpZiAoZXMtPmJ1ZmZlcnMpCisJCWluc3RydW1lbnRfb3B0aW9ucyB8 PSBJTlNUUlVNRU5UX0JVRkZFUlM7CisKKwlpbnN0ciA9IEluc3RyUXVlcnlBbGxvYyhpbnN0cnVt ZW50X29wdGlvbnMpOwogCiAJaWYgKGVzLT5tZW1vcnkpCiAJewpAQCAtNTk4LDkgKzYwMSw3IEBA IEV4cGxhaW5FeGVjdXRlUXVlcnkoRXhlY3V0ZVN0bXQgKmV4ZWNzdG10LCBJbnRvQ2xhdXNlICpp bnRvLCBFeHBsYWluU3RhdGUgKmVzLAogCQlzYXZlZF9jdHggPSBNZW1vcnlDb250ZXh0U3dpdGNo VG8ocGxhbm5lcl9jdHgpOwogCX0KIAotCWlmIChlcy0+YnVmZmVycykKLQkJYnVmdXNhZ2Vfc3Rh cnQgPSBwZ0J1ZmZlclVzYWdlOwotCUlOU1RSX1RJTUVfU0VUX0NVUlJFTlQocGxhbnN0YXJ0KTsK KwlJbnN0clF1ZXJ5U3RhcnQoaW5zdHIpOwogCiAJLyogTG9vayBpdCB1cCBpbiB0aGUgaGFzaCB0 YWJsZSAqLwogCWVudHJ5ID0gRmV0Y2hQcmVwYXJlZFN0YXRlbWVudChleGVjc3RtdC0+bmFtZSwg dHJ1ZSk7CkBAIC02MzUsOCArNjM2LDcgQEAgRXhwbGFpbkV4ZWN1dGVRdWVyeShFeGVjdXRlU3Rt dCAqZXhlY3N0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAJY3BsYW4g PSBHZXRDYWNoZWRQbGFuKGVudHJ5LT5wbGFuc291cmNlLCBwYXJhbUxJLAogCQkJCQkJICBDdXJy ZW50UmVzb3VyY2VPd25lciwgcHN0YXRlLT5wX3F1ZXJ5RW52KTsKIAotCUlOU1RSX1RJTUVfU0VU X0NVUlJFTlQocGxhbmR1cmF0aW9uKTsKLQlJTlNUUl9USU1FX1NVQlRSQUNUKHBsYW5kdXJhdGlv biwgcGxhbnN0YXJ0KTsKKwlJbnN0clF1ZXJ5U3RvcEZpbmFsaXplKGluc3RyKTsKIAogCWlmIChl cy0+bWVtb3J5KQogCXsKQEAgLTY0NCwxMyArNjQ0LDYgQEAgRXhwbGFpbkV4ZWN1dGVRdWVyeShF eGVjdXRlU3RtdCAqZXhlY3N0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMs CiAJCU1lbW9yeUNvbnRleHRNZW1Db25zdW1lZChwbGFubmVyX2N0eCwgJm1lbV9jb3VudGVycyk7 CiAJfQogCi0JLyogY2FsYyBkaWZmZXJlbmNlcyBvZiBidWZmZXIgY291bnRlcnMuICovCi0JaWYg KGVzLT5idWZmZXJzKQotCXsKLQkJbWVtc2V0KCZidWZ1c2FnZSwgMCwgc2l6ZW9mKEJ1ZmZlclVz YWdlKSk7Ci0JCUJ1ZmZlclVzYWdlQWNjdW1EaWZmKCZidWZ1c2FnZSwgJnBnQnVmZmVyVXNhZ2Us ICZidWZ1c2FnZV9zdGFydCk7Ci0JfQotCiAJcGxhbl9saXN0ID0gY3BsYW4tPnN0bXRfbGlzdDsK IAogCS8qIEV4cGxhaW4gZWFjaCBxdWVyeSAqLwpAQCAtNjYwLDcgKzY1Myw3IEBAIEV4cGxhaW5F eGVjdXRlUXVlcnkoRXhlY3V0ZVN0bXQgKmV4ZWNzdG10LCBJbnRvQ2xhdXNlICppbnRvLCBFeHBs YWluU3RhdGUgKmVzLAogCiAJCWlmIChwc3RtdC0+Y29tbWFuZFR5cGUgIT0gQ01EX1VUSUxJVFkp CiAJCQlFeHBsYWluT25lUGxhbihwc3RtdCwgaW50bywgZXMsIHF1ZXJ5X3N0cmluZywgcGFyYW1M SSwgcHN0YXRlLT5wX3F1ZXJ5RW52LAotCQkJCQkJICAgJnBsYW5kdXJhdGlvbiwgKGVzLT5idWZm ZXJzID8gJmJ1ZnVzYWdlIDogTlVMTCksCisJCQkJCQkgICAmaW5zdHItPmluc3RyLnRvdGFsLCAo ZXMtPmJ1ZmZlcnMgPyAmaW5zdHItPmluc3RyLmJ1ZnVzYWdlIDogTlVMTCksCiAJCQkJCQkgICBl cy0+bWVtb3J5ID8gJm1lbV9jb3VudGVycyA6IE5VTEwpOwogCQllbHNlCiAJCQlFeHBsYWluT25l VXRpbGl0eShwc3RtdC0+dXRpbGl0eVN0bXQsIGludG8sIGVzLCBwc3RhdGUsIHBhcmFtTEkpOwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy90YWJsZWNtZHMuYwppbmRleCBjNjljMTJkYzAxNC4uOTBhYzVjY2FhY2QgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCisrKyBiL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCkBAIC0yMTM5LDcgKzIxMzksNyBAQCBFeGVjdXRlVHJ1 bmNhdGVHdXRzKExpc3QgKmV4cGxpY2l0X3JlbHMsCiAJCQkJCQkgIHJlbCwKIAkJCQkJCSAgMCwJ LyogZHVtbXkgcmFuZ2V0YWJsZSBpbmRleCAqLwogCQkJCQkJICBOVUxMLAotCQkJCQkJICAwKTsK KwkJCQkJCSAgTlVMTCk7CiAJCWVzdGF0ZS0+ZXNfb3BlbmVkX3Jlc3VsdF9yZWxhdGlvbnMgPQog CQkJbGFwcGVuZChlc3RhdGUtPmVzX29wZW5lZF9yZXN1bHRfcmVsYXRpb25zLCByZXN1bHRSZWxJ bmZvKTsKIAkJcmVzdWx0UmVsSW5mbysrOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFu ZHMvdHJpZ2dlci5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHJpZ2dlci5jCmluZGV4IDI5Yjgw ZDc1MTQzLi5mMjU5N2I5MTdlMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHJp Z2dlci5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RyaWdnZXIuYwpAQCAtOTMsNiArOTMs NyBAQCBzdGF0aWMgSGVhcFR1cGxlIEV4ZWNDYWxsVHJpZ2dlckZ1bmMoVHJpZ2dlckRhdGEgKnRy aWdkYXRhLAogCQkJCQkJCQkJIGludCB0Z2luZHgsCiAJCQkJCQkJCQkgRm1nckluZm8gKmZpbmZv LAogCQkJCQkJCQkJIFRyaWdnZXJJbnN0cnVtZW50YXRpb24gKmluc3RyLAorCQkJCQkJCQkJIFF1 ZXJ5SW5zdHJ1bWVudGF0aW9uICpxaW5zdHIsCiAJCQkJCQkJCQkgTWVtb3J5Q29udGV4dCBwZXJf dHVwbGVfY29udGV4dCk7CiBzdGF0aWMgdm9pZCBBZnRlclRyaWdnZXJTYXZlRXZlbnQoRVN0YXRl ICplc3RhdGUsIFJlc3VsdFJlbEluZm8gKnJlbGluZm8sCiAJCQkJCQkJCSAgUmVzdWx0UmVsSW5m byAqc3JjX3BhcnRpbmZvLApAQCAtMjMxMiw2ICsyMzEzLDcgQEAgRXhlY0NhbGxUcmlnZ2VyRnVu YyhUcmlnZ2VyRGF0YSAqdHJpZ2RhdGEsCiAJCQkJCWludCB0Z2luZHgsCiAJCQkJCUZtZ3JJbmZv ICpmaW5mbywKIAkJCQkJVHJpZ2dlckluc3RydW1lbnRhdGlvbiAqaW5zdHIsCisJCQkJCVF1ZXJ5 SW5zdHJ1bWVudGF0aW9uICpxaW5zdHIsCiAJCQkJCU1lbW9yeUNvbnRleHQgcGVyX3R1cGxlX2Nv bnRleHQpCiB7CiAJTE9DQUxfRkNJTkZPKGZjaW5mbywgMCk7CkBAIC0yMzQ2LDcgKzIzNDgsNyBA QCBFeGVjQ2FsbFRyaWdnZXJGdW5jKFRyaWdnZXJEYXRhICp0cmlnZGF0YSwKIAkgKiBJZiBkb2lu ZyBFWFBMQUlOIEFOQUxZWkUsIHN0YXJ0IGNoYXJnaW5nIHRpbWUgdG8gdGhpcyB0cmlnZ2VyLgog CSAqLwogCWlmIChpbnN0cikKLQkJSW5zdHJTdGFydFRyaWdnZXIoaW5zdHIgKyB0Z2luZHgpOwor CQlJbnN0clN0YXJ0VHJpZ2dlcihxaW5zdHIsIGluc3RyICsgdGdpbmR4KTsKIAogCS8qCiAJICog RG8gdGhlIGZ1bmN0aW9uIGV2YWx1YXRpb24gaW4gdGhlIHBlci10dXBsZSBtZW1vcnkgY29udGV4 dCwgc28gdGhhdApAQCAtMjQ0MSw2ICsyNDQzLDcgQEAgRXhlY0JTSW5zZXJ0VHJpZ2dlcnMoRVN0 YXRlICplc3RhdGUsIFJlc3VsdFJlbEluZm8gKnJlbGluZm8pCiAJCQkJCQkJCQkgICBpLAogCQkJ CQkJCQkJICAgcmVsaW5mby0+cmlfVHJpZ0Z1bmN0aW9ucywKIAkJCQkJCQkJCSAgIHJlbGluZm8t PnJpX1RyaWdJbnN0cnVtZW50LAorCQkJCQkJCQkJICAgZXN0YXRlLT5lc19pbnN0cnVtZW50LAog CQkJCQkJCQkJICAgR2V0UGVyVHVwbGVNZW1vcnlDb250ZXh0KGVzdGF0ZSkpOwogCiAJCWlmIChu ZXd0dXBsZSkKQEAgLTI1MDIsNiArMjUwNSw3IEBAIEV4ZWNCUkluc2VydFRyaWdnZXJzKEVTdGF0 ZSAqZXN0YXRlLCBSZXN1bHRSZWxJbmZvICpyZWxpbmZvLAogCQkJCQkJCQkJICAgaSwKIAkJCQkJ CQkJCSAgIHJlbGluZm8tPnJpX1RyaWdGdW5jdGlvbnMsCiAJCQkJCQkJCQkgICByZWxpbmZvLT5y aV9UcmlnSW5zdHJ1bWVudCwKKwkJCQkJCQkJCSAgIGVzdGF0ZS0+ZXNfaW5zdHJ1bWVudCwKIAkJ CQkJCQkJCSAgIEdldFBlclR1cGxlTWVtb3J5Q29udGV4dChlc3RhdGUpKTsKIAkJaWYgKG5ld3R1 cGxlID09IE5VTEwpCiAJCXsKQEAgLTI2MDYsNiArMjYxMCw3IEBAIEV4ZWNJUkluc2VydFRyaWdn ZXJzKEVTdGF0ZSAqZXN0YXRlLCBSZXN1bHRSZWxJbmZvICpyZWxpbmZvLAogCQkJCQkJCQkJICAg aSwKIAkJCQkJCQkJCSAgIHJlbGluZm8tPnJpX1RyaWdGdW5jdGlvbnMsCiAJCQkJCQkJCQkgICBy ZWxpbmZvLT5yaV9UcmlnSW5zdHJ1bWVudCwKKwkJCQkJCQkJCSAgIGVzdGF0ZS0+ZXNfaW5zdHJ1 bWVudCwKIAkJCQkJCQkJCSAgIEdldFBlclR1cGxlTWVtb3J5Q29udGV4dChlc3RhdGUpKTsKIAkJ aWYgKG5ld3R1cGxlID09IE5VTEwpCiAJCXsKQEAgLTI2NzAsNiArMjY3NSw3IEBAIEV4ZWNCU0Rl bGV0ZVRyaWdnZXJzKEVTdGF0ZSAqZXN0YXRlLCBSZXN1bHRSZWxJbmZvICpyZWxpbmZvKQogCQkJ CQkJCQkJICAgaSwKIAkJCQkJCQkJCSAgIHJlbGluZm8tPnJpX1RyaWdGdW5jdGlvbnMsCiAJCQkJ CQkJCQkgICByZWxpbmZvLT5yaV9UcmlnSW5zdHJ1bWVudCwKKwkJCQkJCQkJCSAgIGVzdGF0ZS0+ ZXNfaW5zdHJ1bWVudCwKIAkJCQkJCQkJCSAgIEdldFBlclR1cGxlTWVtb3J5Q29udGV4dChlc3Rh dGUpKTsKIAogCQlpZiAobmV3dHVwbGUpCkBAIC0yNzgwLDYgKzI3ODYsNyBAQCBFeGVjQlJEZWxl dGVUcmlnZ2VycyhFU3RhdGUgKmVzdGF0ZSwgRVBRU3RhdGUgKmVwcXN0YXRlLAogCQkJCQkJCQkJ ICAgaSwKIAkJCQkJCQkJCSAgIHJlbGluZm8tPnJpX1RyaWdGdW5jdGlvbnMsCiAJCQkJCQkJCQkg ICByZWxpbmZvLT5yaV9UcmlnSW5zdHJ1bWVudCwKKwkJCQkJCQkJCSAgIGVzdGF0ZS0+ZXNfaW5z dHJ1bWVudCwKIAkJCQkJCQkJCSAgIEdldFBlclR1cGxlTWVtb3J5Q29udGV4dChlc3RhdGUpKTsK IAkJaWYgKG5ld3R1cGxlID09IE5VTEwpCiAJCXsKQEAgLTI4ODQsNiArMjg5MSw3IEBAIEV4ZWNJ UkRlbGV0ZVRyaWdnZXJzKEVTdGF0ZSAqZXN0YXRlLCBSZXN1bHRSZWxJbmZvICpyZWxpbmZvLAog CQkJCQkJCQkJICAgaSwKIAkJCQkJCQkJCSAgIHJlbGluZm8tPnJpX1RyaWdGdW5jdGlvbnMsCiAJ CQkJCQkJCQkgICByZWxpbmZvLT5yaV9UcmlnSW5zdHJ1bWVudCwKKwkJCQkJCQkJCSAgIGVzdGF0 ZS0+ZXNfaW5zdHJ1bWVudCwKIAkJCQkJCQkJCSAgIEdldFBlclR1cGxlTWVtb3J5Q29udGV4dChl c3RhdGUpKTsKIAkJaWYgKHJldHR1cGxlID09IE5VTEwpCiAJCQlyZXR1cm4gZmFsc2U7CQkvKiBE ZWxldGUgd2FzIHN1cHByZXNzZWQgKi8KQEAgLTI5NDIsNiArMjk1MCw3IEBAIEV4ZWNCU1VwZGF0 ZVRyaWdnZXJzKEVTdGF0ZSAqZXN0YXRlLCBSZXN1bHRSZWxJbmZvICpyZWxpbmZvKQogCQkJCQkJ CQkJICAgaSwKIAkJCQkJCQkJCSAgIHJlbGluZm8tPnJpX1RyaWdGdW5jdGlvbnMsCiAJCQkJCQkJ CQkgICByZWxpbmZvLT5yaV9UcmlnSW5zdHJ1bWVudCwKKwkJCQkJCQkJCSAgIGVzdGF0ZS0+ZXNf aW5zdHJ1bWVudCwKIAkJCQkJCQkJCSAgIEdldFBlclR1cGxlTWVtb3J5Q29udGV4dChlc3RhdGUp KTsKIAogCQlpZiAobmV3dHVwbGUpCkBAIC0zMDk0LDYgKzMxMDMsNyBAQCBFeGVjQlJVcGRhdGVU cmlnZ2VycyhFU3RhdGUgKmVzdGF0ZSwgRVBRU3RhdGUgKmVwcXN0YXRlLAogCQkJCQkJCQkJICAg aSwKIAkJCQkJCQkJCSAgIHJlbGluZm8tPnJpX1RyaWdGdW5jdGlvbnMsCiAJCQkJCQkJCQkgICBy ZWxpbmZvLT5yaV9UcmlnSW5zdHJ1bWVudCwKKwkJCQkJCQkJCSAgIGVzdGF0ZS0+ZXNfaW5zdHJ1 bWVudCwKIAkJCQkJCQkJCSAgIEdldFBlclR1cGxlTWVtb3J5Q29udGV4dChlc3RhdGUpKTsKIAog CQlpZiAobmV3dHVwbGUgPT0gTlVMTCkKQEAgLTMyNTgsNiArMzI2OCw3IEBAIEV4ZWNJUlVwZGF0 ZVRyaWdnZXJzKEVTdGF0ZSAqZXN0YXRlLCBSZXN1bHRSZWxJbmZvICpyZWxpbmZvLAogCQkJCQkJ CQkJICAgaSwKIAkJCQkJCQkJCSAgIHJlbGluZm8tPnJpX1RyaWdGdW5jdGlvbnMsCiAJCQkJCQkJ CQkgICByZWxpbmZvLT5yaV9UcmlnSW5zdHJ1bWVudCwKKwkJCQkJCQkJCSAgIGVzdGF0ZS0+ZXNf aW5zdHJ1bWVudCwKIAkJCQkJCQkJCSAgIEdldFBlclR1cGxlTWVtb3J5Q29udGV4dChlc3RhdGUp KTsKIAkJaWYgKG5ld3R1cGxlID09IE5VTEwpCiAJCXsKQEAgLTMzMTYsNiArMzMyNyw3IEBAIEV4 ZWNCU1RydW5jYXRlVHJpZ2dlcnMoRVN0YXRlICplc3RhdGUsIFJlc3VsdFJlbEluZm8gKnJlbGlu Zm8pCiAJCQkJCQkJCQkgICBpLAogCQkJCQkJCQkJICAgcmVsaW5mby0+cmlfVHJpZ0Z1bmN0aW9u cywKIAkJCQkJCQkJCSAgIHJlbGluZm8tPnJpX1RyaWdJbnN0cnVtZW50LAorCQkJCQkJCQkJICAg ZXN0YXRlLT5lc19pbnN0cnVtZW50LAogCQkJCQkJCQkJICAgR2V0UGVyVHVwbGVNZW1vcnlDb250 ZXh0KGVzdGF0ZSkpOwogCiAJCWlmIChuZXd0dXBsZSkKQEAgLTQzNzMsNyArNDM4NSw3IEBAIEFm dGVyVHJpZ2dlckV4ZWN1dGUoRVN0YXRlICplc3RhdGUsCiAJICogdG8gaW5jbHVkZSB0aW1lIHNw ZW50IHJlLWZldGNoaW5nIHR1cGxlcyBpbiB0aGUgdHJpZ2dlciBjb3N0LgogCSAqLwogCWlmIChp bnN0cikKLQkJSW5zdHJTdGFydFRyaWdnZXIoaW5zdHIgKyB0Z2luZHgpOworCQlJbnN0clN0YXJ0 VHJpZ2dlcihlc3RhdGUtPmVzX2luc3RydW1lbnQsIGluc3RyICsgdGdpbmR4KTsKIAogCS8qCiAJ ICogRmV0Y2ggdGhlIHJlcXVpcmVkIHR1cGxlKHMpLgpAQCAtNDU2MSw2ICs0NTczLDcgQEAgQWZ0 ZXJUcmlnZ2VyRXhlY3V0ZShFU3RhdGUgKmVzdGF0ZSwKIAkJCQkJCQkJICAgdGdpbmR4LAogCQkJ CQkJCQkgICBmaW5mbywKIAkJCQkJCQkJICAgTlVMTCwKKwkJCQkJCQkJICAgTlVMTCwKIAkJCQkJ CQkJICAgcGVyX3R1cGxlX2NvbnRleHQpOwogCWlmIChyZXR0dXBsZSAhPSBOVUxMICYmCiAJCXJl dHR1cGxlICE9IExvY1RyaWdnZXJEYXRhLnRnX3RyaWd0dXBsZSAmJgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRz L3ZhY3V1bXBhcmFsbGVsLmMKaW5kZXggNzc4MzRiOTZhMjEuLmMzMzBjODkxYzAzIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jCisrKyBiL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMKQEAgLTMwOCw4ICszMDgsOCBAQCBwYXJhbGxl bF92YWN1dW1faW5pdChSZWxhdGlvbiByZWwsIFJlbGF0aW9uICppbmRyZWxzLCBpbnQgbmluZGV4 ZXMsCiAJICogUEFSQUxMRUxfVkFDVVVNX0tFWV9CVUZGRVJfVVNBR0UgYW5kIFBBUkFMTEVMX1ZB Q1VVTV9LRVlfV0FMX1VTQUdFLgogCSAqCiAJICogSWYgdGhlcmUgYXJlIG5vIGV4dGVuc2lvbnMg bG9hZGVkIHRoYXQgY2FyZSwgd2UgY291bGQgc2tpcCB0aGlzLiAgV2UKLQkgKiBoYXZlIG5vIHdh eSBvZiBrbm93aW5nIHdoZXRoZXIgYW55b25lJ3MgbG9va2luZyBhdCBwZ0J1ZmZlclVzYWdlIG9y Ci0JICogcGdXYWxVc2FnZSwgc28gZG8gaXQgdW5jb25kaXRpb25hbGx5LgorCSAqIGhhdmUgbm8g d2F5IG9mIGtub3dpbmcgd2hldGhlciBhbnlvbmUncyBsb29raW5nIGF0IGluc3RydW1lbnRhdGlv biwgc28KKwkgKiBkbyBpdCB1bmNvbmRpdGlvbmFsbHkuCiAJICovCiAJc2htX3RvY19lc3RpbWF0 ZV9jaHVuaygmcGN4dC0+ZXN0aW1hdG9yLAogCQkJCQkJICAgbXVsX3NpemUoc2l6ZW9mKEJ1ZmZl clVzYWdlKSwgcGN4dC0+bndvcmtlcnMpKTsKQEAgLTEwMDYsNiArMTAwNiw3IEBAIHBhcmFsbGVs X3ZhY3V1bV9tYWluKGRzbV9zZWdtZW50ICpzZWcsIHNobV90b2MgKnRvYykKIAlQVkluZFN0YXRz ICppbmRzdGF0czsKIAlQVlNoYXJlZCAgICpzaGFyZWQ7CiAJVGlkU3RvcmUgICAqZGVhZF9pdGVt czsKKwlRdWVyeUluc3RydW1lbnRhdGlvbiAqaW5zdHI7CiAJQnVmZmVyVXNhZ2UgKmJ1ZmZlcl91 c2FnZTsKIAlXYWxVc2FnZSAgICp3YWxfdXNhZ2U7CiAJaW50CQkJbmluZGV4ZXM7CkBAIC0xMDk1 LDcgKzEwOTYsNyBAQCBwYXJhbGxlbF92YWN1dW1fbWFpbihkc21fc2VnbWVudCAqc2VnLCBzaG1f dG9jICp0b2MpCiAJZXJyb3JfY29udGV4dF9zdGFjayA9ICZlcnJjYWxsYmFjazsKIAogCS8qIFBy ZXBhcmUgdG8gdHJhY2sgYnVmZmVyIHVzYWdlIGR1cmluZyBwYXJhbGxlbCBleGVjdXRpb24gKi8K LQlJbnN0clN0YXJ0UGFyYWxsZWxRdWVyeSgpOworCWluc3RyID0gSW5zdHJTdGFydFBhcmFsbGVs UXVlcnkoKTsKIAogCS8qIFByb2Nlc3MgaW5kZXhlcyB0byBwZXJmb3JtIHZhY3V1bS9jbGVhbnVw ICovCiAJcGFyYWxsZWxfdmFjdXVtX3Byb2Nlc3Nfc2FmZV9pbmRleGVzKCZwdnMpOwpAQCAtMTEw Myw3ICsxMTA0LDggQEAgcGFyYWxsZWxfdmFjdXVtX21haW4oZHNtX3NlZ21lbnQgKnNlZywgc2ht X3RvYyAqdG9jKQogCS8qIFJlcG9ydCBidWZmZXIvV0FMIHVzYWdlIGR1cmluZyBwYXJhbGxlbCBl eGVjdXRpb24gKi8KIAlidWZmZXJfdXNhZ2UgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVM X1ZBQ1VVTV9LRVlfQlVGRkVSX1VTQUdFLCBmYWxzZSk7CiAJd2FsX3VzYWdlID0gc2htX3RvY19s b29rdXAodG9jLCBQQVJBTExFTF9WQUNVVU1fS0VZX1dBTF9VU0FHRSwgZmFsc2UpOwotCUluc3Ry RW5kUGFyYWxsZWxRdWVyeSgmYnVmZmVyX3VzYWdlW1BhcmFsbGVsV29ya2VyTnVtYmVyXSwKKwlJ bnN0ckVuZFBhcmFsbGVsUXVlcnkoaW5zdHIsCisJCQkJCQkgICZidWZmZXJfdXNhZ2VbUGFyYWxs ZWxXb3JrZXJOdW1iZXJdLAogCQkJCQkJICAmd2FsX3VzYWdlW1BhcmFsbGVsV29ya2VyTnVtYmVy XSk7CiAKIAkvKiBSZXBvcnQgYW55IHJlbWFpbmluZyBjb3N0LWJhc2VkIHZhY3V1bSBkZWxheSB0 aW1lICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9SRUFETUUuaW5zdHJ1bWVu dCBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL1JFQURNRS5pbnN0cnVtZW50Cm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi41ODBmZDVkODVlMAotLS0gL2Rldi9udWxsCisrKyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL1JFQURNRS5pbnN0cnVtZW50CkBAIC0wLDAgKzEsMjI3IEBA CitzcmMvYmFja2VuZC9leGVjdXRvci9SRUFETUUuaW5zdHJ1bWVudAorCitJbnN0cnVtZW50YXRp b24KKz09PT09PT09PT09PT09PQorCitUaGUgaW5zdHJ1bWVudGF0aW9uIHN1YnN5c3RlbSBtZWFz dXJlcyB0aW1lLCBidWZmZXIgdXNhZ2UgYW5kIFdBTCBhY3Rpdml0eQorZHVyaW5nIHF1ZXJ5IGV4 ZWN1dGlvbiBhbmQgb3RoZXIgc2ltaWxhciBhY3Rpdml0aWVzLiAgSXQgaXMgdXNlZCBieQorRVhQ TEFJTiBBTkFMWVpFLCBwZ19zdGF0X3N0YXRlbWVudHMsIGFuZCBvdGhlciBjb25zdW1lcnMgdGhh dCBuZWVkCithY3Rpdml0eSBhbmQvb3IgdGltaW5nIG1ldHJpY3Mgb3ZlciBhIHNlY3Rpb24gb2Yg Y29kZS4KKworVGhlIGRlc2lnbiBoYXMgdHdvIGNlbnRyYWwgZ29hbHM6CisKKyogTWFrZSBpdCBj aGVhcCB0byBtZWFzdXJlIGFjdGl2aXR5IGluIGEgc2VjdGlvbiBvZiBjb2RlLCBldmVuIHdoZW4K KyAgdGhhdCBzZWN0aW9uIGlzIGNhbGxlZCBtYW55IHRpbWVzIGFuZCB0aGUgYWdncmVnYXRlIGlz IHdoYXQgaXMgdXNlZAorICAoYXMgaXMgdGhlIGNhc2Ugd2l0aCBwZXItbm9kZSBpbnN0cnVtZW50 YXRpb24gaW4gdGhlIGV4ZWN1dG9yKQorCisqIEVuc3VyZSBuZXN0ZWQgaW5zdHJ1bWVudGF0aW9u IGFjY3VyYXRlbHkgbWVhc3VyZXMgYWN0aXZpdHkvdGltaW5nLAorICBhbmQgY291bnRlciB1cGRh dGVzIGZyb20gYWN0aXZpdHkgZ2V0IHdyaXR0ZW4gdG8gdGhlIGN1cnJlbnRseQorICBhY3RpdmUg aW5zdHJ1bWVudGF0aW9uIGFuZCBhY2N1bXVsYXRlZCB1cHdhcmQgdG8gcGFyZW50IG5vZGVzIHdo ZW4KKyAgZmluYWxpemVkLCBjb25zaWRlcmluZyBhYm9ydHMgZHVlIHRvIGVycm9ycy4KKworVGhl IGtleSBkYXRhIHN0cnVjdHVyZXMgYXJlIGRlZmluZWQgaW4gc3JjL2luY2x1ZGUvZXhlY3V0b3Iv aW5zdHJ1bWVudC5oCithbmQgdGhlIGltcGxlbWVudGF0aW9uIGxpdmVzIGluIHNyYy9iYWNrZW5k L2V4ZWN1dG9yL2luc3RydW1lbnQuYy4KKworCitJbnN0cnVtZW50YXRpb24gT3B0aW9ucworLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQ2FsbGVycyBzcGVjaWZ5IHdoYXQgdG8gbWVhc3VyZSB3 aXRoIGEgYml0bWFzayBvZiBJbnN0cnVtZW50T3B0aW9uIGZsYWdzOgorCisgIElOU1RSVU1FTlRf Uk9XUyAgICAgLS0gcm93IGNvdW50cyBvbmx5ICh1c2VkIHdpdGggTm9kZUluc3RydW1lbnRhdGlv bikKKyAgSU5TVFJVTUVOVF9USU1FUiAgICAtLSB3YWxsLWNsb2NrIHRpbWluZyBhbmQgcm93IGNv dW50cworICBJTlNUUlVNRU5UX0JVRkZFUlMgIC0tIGJ1ZmZlciBoaXQvcmVhZC9kaXJ0aWVkL3dy aXR0ZW4gY291bnRzIGFuZCBJL08gdGltZQorICBJTlNUUlVNRU5UX1dBTCAgICAgIC0tIFdBTCBy ZWNvcmRzLCBGUEksIGJ5dGVzCisKK0lOU1RSVU1FTlRfQlVGRkVSUyBhbmQgSU5TVFJVTUVOVF9X QUwgdXRpbGl6ZSB0aGUgaW5zdHJ1bWVudGF0aW9uIHN0YWNrCisoZGVzY3JpYmVkIGJlbG93KSBm b3IgZWZmaWNpZW50IGhhbmRsaW5nIG9mIGNvdW50ZXIgdmFsdWVzLgorCisKK1N0cnVjdCBIaWVy YXJjaHkKKy0tLS0tLS0tLS0tLS0tLS0KKworVGhlcmUgYXJlIGZvdXIgaW5zdHJ1bWVudGF0aW9u IHN0cnVjdHMsIGVhY2ggc3BlY2lhbGl6ZWQgZm9yIGEgZGlmZmVyZW50CitzY29wZToKKworSW5z dHJ1bWVudGF0aW9uICAgICAgICBCYXNlIHN0cnVjdC4gIEhvbGRzIHRpbWluZyBhbmQgYnVmZmVy L1dBTCBjb3VudGVycy4KKworUXVlcnlJbnN0cnVtZW50YXRpb24gICBFeHRlbmRzIEluc3RydW1l bnRhdGlvbiBmb3IgcXVlcnktbGV2ZWwgdHJhY2tpbmcuICBXaGVuCisgICAgICAgICAgICAgICAg ICAgICAgIHN0YWNrLWJhc2VkIHRyYWNraW5nIGlzIGVuYWJsZWQsIGl0IG93bnMgYSBkZWRpY2F0 ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgTWVtb3J5Q29udGV4dCBhbmQgdXNlcyB0aGUgUmVz b3VyY2VPd25lciBtZWNoYW5pc20gZm9yCisgICAgICAgICAgICAgICAgICAgICAgIGFib3J0IGNs ZWFudXAuCisKK05vZGVJbnN0cnVtZW50YXRpb24gICAgRXh0ZW5kcyBJbnN0cnVtZW50YXRpb24g Zm9yIHBlci1wbGFuLW5vZGUgc3RhdGlzdGljcworICAgICAgICAgICAgICAgICAgICAgICAoc3Rh cnR1cCB0aW1lLCB0dXBsZSBjb3VudHMsIGxvb3AgY291bnRzLCBldGMpLgorCitUcmlnZ2VySW5z dHJ1bWVudGF0aW9uIEV4dGVuZHMgSW5zdHJ1bWVudGF0aW9uIHdpdGggYSBmaXJpbmcgY291bnQu CisKKworU3RhY2stYmFzZWQgaW5zdHJ1bWVudGF0aW9uCis9PT09PT09PT09PT09PT09PT09PT09 PT09PT0KKworRm9yIHRyYWNraW5nIFdBTCBvciBidWZmZXIgdXNhZ2UgY291bnRlcnMsIHRoZSBz cGVjaWFsaXplZCBzdGFjay1iYXNlZAoraW5zdHJ1bWVudGF0aW9uIGlzIHVzZWQuCisKK0F0IGFs bCB0aW1lcywgdGhlcmUgaXMgYSBzdGFjayB0aGF0IHRyYWNrcyB3aGljaCBJbnN0cnVtZW50YXRp b24gaXMgY3VycmVudGx5CithY3RpdmUuICBUaGUgc3RhY2sgaXMgcmVwcmVzZW50ZWQgYnkgaW5z dHJfc3RhY2ssIGEgcGVyLWJhY2tlbmQgZ2xvYmFsCit0aGF0IGhvbGRzIGEgZHluYW1pYyBhcnJh eSBvZiBJbnN0cnVtZW50YXRpb24gcG9pbnRlcnMuICBUaGUgZmllbGQKK2luc3RyX3N0YWNrLmN1 cnJlbnQgYWx3YXlzIHBvaW50cyB0byB0aGUgY3VycmVudCBzdGFjayBlbnRyeSB0aGF0IHNob3Vs ZAorYmUgdXBkYXRlZCB3aGVuIGFjdGl2aXR5IG9jY3Vycy4gIFdoZW4gdGhlIHN0YWNrIGFycmF5 IGlzIGVtcHR5LCB0aGUKK2N1cnJlbnQgc3RhY2sgcG9pbnRzIHRvIGluc3RyX3RvcC4KKworRm9y IGV4YW1wbGUsIGlmIGEgYmFja2VuZCBoYXMgdHdvIHBvcnRhbHMgb3BlbiwgdGhlIG92ZXJhbGwg bmVzdGluZyBvZgorSW5zdHJ1bWVudGF0aW9uIGFuZCB0aGVpciByZXNwZWN0aXZlIEluc3RyU3Rh cnQvSW5zdHJTdG9wIGNhbGxzIGNyZWF0ZXMgYQordHJlZS1saWtlIHN0cnVjdHVyZSBsaWtlIHRo aXM6CisKKyAgICBTZXNzaW9uIChpbnN0cl90b3ApCisgICAgIHwKKyAgICAgKy0tIFF1ZXJ5IEEg KFF1ZXJ5SW5zdHJ1bWVudGF0aW9uKQorICAgICB8ICAgIHwKKyAgICAgfCAgICArLS0gTmVzdExv b3AgKE5vZGVJbnN0cnVtZW50YXRpb24pCisgICAgIHwgICAgICAgICB8CisgICAgIHwgICAgICAg ICArLS0gU2VxIFNjYW4gQSAoTm9kZUluc3RydW1lbnRhdGlvbikKKyAgICAgfCAgICAgICAgICst LSBTZXEgU2NhbiBCIChOb2RlSW5zdHJ1bWVudGF0aW9uKQorICAgICB8CisgICAgICstLSBRdWVy eSBCIChRdWVyeUluc3RydW1lbnRhdGlvbikKKyAgICAgICAgICB8CisgICAgICAgICAgKy0tIFNl cSBTY2FuIEMgKE5vZGVJbnN0cnVtZW50YXRpb24pCisKK1doaWxlIGV4ZWN1dGluZyBTZXEgU2Nh biBCLCB0aGUgc3RhY2sgbG9va3MgbGlrZToKKworICAgIGluc3RyX3RvcCAgICAgICAgICAgICAg KGltcGxpY2l0IGJvdHRvbSwgbm90IGluIHRoZSBlbnRyaWVzIGFycmF5KQorICAgIDA6IFF1ZXJ5 IEEKKyAgICAxOiBOZXN0TG9vcAorICAgIDI6IFNlcSBTY2FuIEIgICAgICAgICAgPC0tIGluc3Ry X3N0YWNrLmN1cnJlbnQKKworV2hlbiBubyBxdWVyeSBpcyBydW5uaW5nLCB0aGUgc3RhY2sgaXMg ZW1wdHkgKHN0YWNrX3NpemUgPT0gMCkgYW5kCitpbnN0cl9zdGFjay5jdXJyZW50IHBvaW50cyB0 byBpbnN0cl90b3AuCisKK0FueSBidWZmZXIgb3IgV0FMIGNvdW50ZXIgdXBkYXRlICh2aWEgdGhl IElOU1RSX0JVRlVTQUdFXyogYW5kCitJTlNUUl9XQUxVU0FHRV8qIG1hY3JvcyBpbiB0aGUgYnVm ZmVyIG1hbmFnZXIsIFdBTCBpbnNlcnRpb24gY29kZSwgZXRjLikKK3dyaXRlcyBkaXJlY3RseSBp bnRvIGluc3RyX3N0YWNrLmN1cnJlbnQuICBFYWNoIGluc3RydW1lbnRhdGlvbiBub2RlIHN0YXJ0 cworemVyb2VkLCBzbyB0aGUgdmFsdWVzIGl0IGFjY3VtdWxhdGVzIHdoaWxlIG9uIHRvcCBvZiB0 aGUgc3RhY2sgcmVwcmVzZW50CitleGFjdGx5IHRoZSBhY3Rpdml0eSB0aGF0IG9jY3VycmVkIGR1 cmluZyB0aGF0IHRpbWUuCisKK0V2ZXJ5IEluc3RydW1lbnRhdGlvbiBub2RlIGhhcyBhIHRhcmdl dCwgb3IgcGFyZW50LCBpdCB3aWxsIGJlIGFjY3VtdWxhdGVkCitpbnRvLCB3aGljaCBpcyB0eXBp Y2FsbHkgdGhlIEluc3RydW1lbnRhdGlvbiB0aGF0IHdhcyB0aGUgY3VycmVudCBzdGFjaworZW50 cnkgd2hlbiBpdCB3YXMgY3JlYXRlZC4KKworRm9yIGV4YW1wbGUsIHdoZW4gU2VxIFNjYW4gQSBn ZXRzIGZpbmFsaXplZCBpbiByZWd1bGFyIGV4ZWN1dGlvbiB2aWEgRXhlY3V0b3JGaW5pc2gsCitp dHMgaW5zdHJ1bWVudGF0aW9uIGRhdGEgZ2V0cyBhZGRlZCB0byB0aGUgaW1tZWRpYXRlIHBhcmVu dCBpbgordGhlIGV4ZWN1dGlvbiB0cmVlLCB0aGUgTmVzdExvb3AsIHdoaWNoIHdpbGwgdGhlbiBn ZXQgYWRkZWQgdG8gUXVlcnkgQSdzCitRdWVyeUluc3RydW1lbnRhdGlvbiwgd2hpY2ggdGhlbiBh Y2N1bXVsYXRlcyB0byB0aGUgcGFyZW50LgorCitXaGlsZSB3ZSBjYW4gdHlwaWNhbGx5IHRoaW5r IG9mIHRoaXMgYXMgYSB0cmVlLCB0aGUgTm9kZUluc3RydW1lbnRhdGlvbgordW5kZXJuZWF0aCBh IHBhcnRpY3VsYXIgUXVlcnlJbnN0cnVtZW50YXRpb24gY291bGQgYmVoYXZlIGRpZmZlcmVudGx5 IC0tCitmb3IgZXhhbXBsZSwgaXQgY291bGQgcHJvcGFnYXRlIGRpcmVjdGx5IHRvIHRoZSBRdWVy eUluc3RydW1lbnRhdGlvbiwgaW4KK29yZGVyIHRvIG5vdCBzaG93IGN1bXVsYXRpdmUgbnVtYmVy cyBpbiBFWFBMQUlOIEFOQUxZWkUuCisKK05vdGUgdGhlc2UgcmVsYXRpb25zaGlwcyBhcmUgcGFy dGlhbGx5IGltcGxpY2l0LCBlc3BlY2lhbGx5IHdoZW4gaXQgY29tZXMKK3RvIE5vZGVJbnN0cnVt ZW50YXRpb24uIEVhY2ggUXVlcnlJbnN0cnVtZW50YXRpb24gbWFpbnRhaW5zIGEgbGlzdCBvZiBp dHMKK3VuZmluYWxpemVkIGNoaWxkIG5vZGVzLiAgVGhlIHBhcmVudCBvZiBhIFF1ZXJ5SW5zdHJ1 bWVudGF0aW9uIGl0c2VsZiBpcworZGV0ZXJtaW5lZCBieSB0aGUgc3RhY2sgKHNlZSBiZWxvdyk6 IHdoZW4gYSBxdWVyeSBpcyBmaW5hbGl6ZWQgb3IgY2xlYW5lZAordXAgb24gYWJvcnQsIGl0cyBj b3VudGVycyBhcmUgYWNjdW11bGF0ZWQgdG8gd2hhdGV2ZXIgZW50cnkgaXMgdGhlbiBjdXJyZW50 CitvbiB0aGUgc3RhY2ssIHdoaWNoIGlzIHR5cGljYWxseSBpbnN0cl90b3AuCisKKworRmluYWxp emF0aW9uIGFuZCBBYm9ydCBTYWZldHkKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisK K0ZpbmFsaXphdGlvbiBpcyB0aGUgcHJvY2VzcyBvZiByb2xsaW5nIHVwIGEgbm9kZSdzIGJ1ZmZl ci9XQUwgY291bnRlcnMgdG8KK2l0cyBwYXJlbnQuICBJbiBub3JtYWwgZXhlY3V0aW9uLCBub2Rl cyBhcmUgcHVzaGVkIG9udG8gdGhlIHN0YWNrIHdoZW4gdGhleQorc3RhcnQgYW5kIHBvcHBlZCB3 aGVuIHRoZXkgc3RvcDsgYXQgZmluYWxpemF0aW9uIHRpbWUgdGhlaXIgYWNjdW11bGF0ZWQKK2Nv dW50ZXJzIGFyZSBhZGRlZCB0byB0aGUgcGFyZW50LgorCitEdWUgdG8gdGhlIHVzZSBvZiBsb25n am1wIGZvciBlcnJvciBoYW5kbGluZywgZnVuY3Rpb25zIGNhbiBleGl0IGFicnVwdGx5Cit3aXRo b3V0IGV4ZWN1dGluZyB0aGVpciBub3JtYWwgY2xlYW51cCBjb2RlLiAgT24gYWJvcnQsIHR3byB0 aGluZ3MgbmVlZAordG8gaGFwcGVuOgorCisxLiBSZXNldCB0aGUgc3RhY2sgdG8gdGhlIGFwcHJv cHJpYXRlIGxldmVsLiAgVGhpcyBlbnN1cmVzIHRoYXQgd2UgZG9uJ3QKKyAgIGxhdGVyIHRyeSB0 byB1cGRhdGUgY291bnRlcnMgb24gYSBmcmVlZCBzdGFjayBlbnRyeS4gIFdlIGFsc28gbmVlZCB0 bworICAgZW5zdXJlIHRoYXQgdGhlIHN0YWNrIGVudHJ5IHRoYXQgd2FzIGN1cnJlbnQgYmVmb3Jl IGEgcGFydGljdWxhcgorICAgSW5zdHJ1bWVudGF0aW9uIHN0YXJ0ZWQsIGlzIGN1cnJlbnQgYWdh aW4gYWZ0ZXIgaXQgc3RvcHMuCisKKzIuIEZpbmFsaXplIGFsbCBhZmZlY3RlZCBJbnN0cnVtZW50 YXRpb24gbm9kZXMsIHJvbGxpbmcgdXAgdGhlaXIgY291bnRlcnMKKyAgIHRvIHRoZSBoaWdoZXN0 IHN1cnZpdmluZyBJbnN0cnVtZW50YXRpb24sIHNvIHRoYXQgZGF0YSBpcyBub3QgbG9zdC4KKwor Rm9yIGV4YW1wbGUsIGlmIFNlcSBTY2FuIEIgYWJvcnRzIHdoaWxlIHRoZSBzdGFjayBpczoKKwor ICAgIGluc3RyX3RvcCAgICAgICAgICAgICAgKGltcGxpY2l0IGJvdHRvbSkKKyAgICAwOiBRdWVy eSBBCisgICAgMTogTmVzdExvb3AKKyAgICAyOiBTZXEgU2NhbiBCCisKK1RoZSBhYm9ydCBoYW5k bGVyIGZvciBRdWVyeSBBIGFjY3VtdWxhdGVzIGFsbCB1bmZpbmFsaXplZCBjaGlsZHJlbiAoU2Vx CitTY2FuIEEsIFNlcSBTY2FuIEIsIE5lc3RMb29wKSBkaXJlY3RseSBpbnRvIFF1ZXJ5IEEncyBj b3VudGVycywgdGhlbgordW53aW5kcyB0aGUgc3RhY2sgYW5kIGFjY3VtdWxhdGVzIFF1ZXJ5IEEn cyBjb3VudGVycyB0byBpbnN0cl90b3AuCisKK05vdGUgdGhhdCBvbiBhYm9ydCB0aGUgY2hpbGRy ZW4gZG8gbm90IGFjY3VtdWxhdGUgdGhyb3VnaCBlYWNoIG90aGVyIChTZXEKK1NjYW4gQiAtPiBO ZXN0TG9vcCAtPiBRdWVyeSBBKTsgdGhleSBhbGwgYWNjdW11bGF0ZSBkaXJlY3RseSB0byB0aGVp cgorcGFyZW50IFF1ZXJ5SW5zdHJ1bWVudGF0aW9uLiAgVGhpcyBtZWFucyB0aGUgb3JkZXIgaW4g d2hpY2ggY2hpbGRyZW4gYXJlCityZWxlYXNlZCBkb2VzIG5vdCBtYXR0ZXIgLS0gaW1wb3J0YW50 IGJlY2F1c2UgUmVzb3VyY2VPd25lciBjbGVhbnVwIGRvZXMKK25vdCBndWFyYW50ZWUgYSBwYXJ0 aWN1bGFyIHJlbGVhc2Ugb3JkZXIuICBUaGUgcGVyLW5vZGUgYnJlYWtkb3duIGlzIGxvc3QsCiti dXQgdGhlIHF1ZXJ5LWxldmVsIHRvdGFsIGlzIHdoYXQgc3Vydml2ZXMgdGhlIGFib3J0LgorCitJ ZiBtdWx0aXBsZSBRdWVyeUluc3RydW1lbnRhdGlvbnMgYXJlIGFjdGl2ZSBvbiB0aGUgc3RhY2sg KGUuZy4gbmVzdGVkCitwb3J0YWxzKSwgZWFjaCBvbmUncyBhYm9ydCBoYW5kbGVyIHVzZXMgSW5z dHJTdG9wRmluYWxpemUgdG8gdW53aW5kIHRvCit3aGljaGV2ZXIgZW50cnkgaXMgaGlnaGVyIHVw LCBzbyB0aGV5IGNvbXBvc2UgY29ycmVjdGx5IHJlZ2FyZGxlc3Mgb2YKK3JlbGVhc2Ugb3JkZXIu CisKK1RoZXJlIGFyZSB0d28gbWVjaGFuaXNtcyBmb3IgYWNoaWV2aW5nIGFib3J0IHNhZmV0eToK KworUmVzb3VyY2UgT3duZXIgKFF1ZXJ5SW5zdHJ1bWVudGF0aW9uKQorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitRdWVyeUluc3RydW1lbnRhdGlvbiByZWdpc3RlcnMg d2l0aCB0aGUgY3VycmVudCBSZXNvdXJjZU93bmVyIGF0IHN0YXJ0LgorT24gdHJhbnNhY3Rpb24g YWJvcnQsIHRoZSByZXNvdXJjZSBvd25lciBzeXN0ZW0gY2FsbHMgdGhlIHJlbGVhc2UgY2FsbGJh Y2ssCit3aGljaCB3YWxrcyB1bmZpbmFsaXplZCBjaGlsZCBlbnRyaWVzLCBhY2N1bXVsYXRlcyB0 aGVpciBkYXRhLCB1bndpbmRzIHRoZQorc3RhY2ssIGFuZCBkZXN0cm95cyB0aGUgZGVkaWNhdGVk IG1lbW9yeSBjb250ZXh0IChmcmVlaW5nIHRoZQorUXVlcnlJbnN0cnVtZW50YXRpb24gYW5kIGFs bCBjaGlsZCBhbGxvY2F0aW9ucyBhcyBhIHVuaXQpLgorCitUaGlzIGlzIHRoZSByZWNvbW1lbmRl ZCBhcHByb2FjaCB3aGVuIHRoZSBpbnN0cnVtZW50ZWQgY29kZSBhbHJlYWR5IGhhcyBhbgorYXBw cm9wcmlhdGUgcmVzb3VyY2Ugb3duZXIgKGUuZy4gaXQgcnVucyBpbnNpZGUgYSBwb3J0YWwpLiAg VGhlIHF1ZXJ5CitleGVjdXRvciB1c2VzIHRoaXMgcGF0aC4KKworUEdfRklOQUxMWSAoYmFzZSBJ bnN0cnVtZW50YXRpb24pCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1do ZW4gbm8gc3VpdGFibGUgcmVzb3VyY2Ugb3duZXIgZXhpc3RzLCBvciB3aGVuIHRoZSBjYWxsZXIg d2FudHMgdG8gaW5zcGVjdAordGhlIGluc3RydW1lbnRhdGlvbiBkYXRhIGV2ZW4gYWZ0ZXIgYW4g ZXJyb3IsIHRoZSBiYXNlIEluc3RydW1lbnRhdGlvbiBjYW4KK2JlIHVzZWQgd2l0aCBhIFBHX1RS WS9QR19GSU5BTExZIGJsb2NrIHRoYXQgY2FsbHMgSW5zdHJTdG9wRmluYWxpemUoKS4KKworQm90 aCBtZWNoYW5pc21zIGFkZCBvdmVyaGVhZCwgc28gbmVpdGhlciBpcyBzdWl0YWJsZSBmb3IgaGln aC1mcmVxdWVuY3kKK2luc3RydW1lbnRhdGlvbiBsaWtlIHBlci1ub2RlIG1lYXN1cmVtZW50cyBp biB0aGUgZXhlY3V0b3IuICBJbnN0ZWFkLAorcGxhbiBub2RlIGFuZCB0cmlnZ2VyIGNoaWxkcmVu IHJlbHkgb24gdGhlaXIgcGFyZW50IFF1ZXJ5SW5zdHJ1bWVudGF0aW9uCitmb3IgYWJvcnQgc2Fm ZXR5OiB0aGV5IGFyZSBhbGxvY2F0ZWQgaW4gdGhlIHBhcmVudCdzIG1lbW9yeSBjb250ZXh0IGFu ZAorcmVnaXN0ZXJlZCBpbiBpdHMgdW5maW5hbGl6ZWQtZW50cmllcyBsaXN0LCBzbyB0aGUgcGFy ZW50J3MgYWJvcnQgaGFuZGxlcgorcmVjb3ZlcnMgdGhlaXIgZGF0YSBhdXRvbWF0aWNhbGx5LiAg SW4gbm9ybWFsIGV4ZWN1dGlvbiwgY2hpbGRyZW4gYXJlCitmaW5hbGl6ZWQgZXhwbGljaXRseSBi eSB0aGUgY2FsbGVyLgorCitQYXJhbGxlbCBRdWVyeQorLS0tLS0tLS0tLS0tLS0KKworUGFyYWxs ZWwgd29ya2VycyBnZXQgdGhlaXIgb3duIFF1ZXJ5SW5zdHJ1bWVudGF0aW9uIHNvIHRoZXkgY2Fu IG1lYXN1cmUKK2J1ZmZlciBhbmQgV0FMIGFjdGl2aXR5IGluZGVwZW5kZW50bHksIHRoZW4gY29w eSB0aGUgdG90YWxzIGludG8gc2hhcmVkCittZW1vcnkgYXQgc2h1dGRvd24uICBUaGUgbGVhZGVy IGFjY3VtdWxhdGVzIHRoZXNlIGludG8gaXRzIG93biBzdGFjay4KKworV2hlbiBwZXItbm9kZSBp bnN0cnVtZW50YXRpb24gaXMgYWN0aXZlLCBwYXJhbGxlbCB3b3JrZXJzIHNraXAgcGVyLW5vZGUK K2ZpbmFsaXphdGlvbiBhdCBzaHV0ZG93biB0byBhdm9pZCBkb3VibGUtY291bnRpbmc7IHRoZSBw ZXItbm9kZSBkYXRhIGlzCithZ2dyZWdhdGVkIHNlcGFyYXRlbHkgdGhyb3VnaCBJbnN0ckFnZ05v ZGUoKS4KKworCitNZW1vcnkgSGFuZGxpbmcKKz09PT09PT09PT09PT09PQorCitJbnN0cnVtZW50 YXRpb24gb2JqZWN0cyB0aGF0IHVzZSB0aGUgc3RhY2sgbXVzdCBzdXJ2aXZlIHVudGlsIGZpbmFs aXphdGlvbgorcnVucywgaW5jbHVkaW5nIHRoZSBhYm9ydCBjYXNlLiAgVG8gZW5zdXJlIHRoaXMs IFF1ZXJ5SW5zdHJ1bWVudGF0aW9uCitjcmVhdGVzIGEgZGVkaWNhdGVkICJJbnN0cnVtZW50YXRp b24iIE1lbW9yeUNvbnRleHQgKGluc3RyX2N4dCkgYXMgYSBjaGlsZAorb2YgVG9wTWVtb3J5Q29u dGV4dC4gIEFsbCBjaGlsZCBpbnN0cnVtZW50YXRpb24gKG5vZGVzLCB0cmlnZ2Vycykgc2hvdWxk IGJlCithbGxvY2F0ZWQgaW4gdGhpcyBjb250ZXh0LgorCitPbiBzdWNjZXNzZnVsIGNvbXBsZXRp b24sIGluc3RyX2N4dCBpcyByZXBhcmVudGVkIHRvIEN1cnJlbnRNZW1vcnlDb250ZXh0CitzbyBp dHMgbGlmZXRpbWUgaXMgdGllZCB0byB0aGUgY2FsbGVyJ3MgY29udGV4dC4gIE9uIGFib3J0LCB0 aGUKK1Jlc291cmNlT3duZXIgY2xlYW51cCBmcmVlcyBpdCBhZnRlciBhY2N1bXVsYXRpbmcgdGhl IGluc3RydW1lbnRhdGlvbiBkYXRhCit0byB0aGUgY3VycmVudCBzdGFjayBlbnRyeSBhZnRlciBy ZXNldHRpbmcgdGhlIHN0YWNrLgorCitXaGVuIHRoZSBzdGFjayBpcyBub3QgbmVlZGVkICh0aW1l ci9yb3dzIG9ubHkpLCBJbnN0cnVtZW50YXRpb24gYWxsb2NhdGlvbnMKK2hhcHBlbiBpbiBDdXJy ZW50TWVtb3J5Q29udGV4dCBpbnN0ZWFkIG9mIFRvcE1lbW9yeUNvbnRleHQuCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZXhlY01haW4uYwppbmRleCAxYjk1MDA0MDU5Ny4uNTM2NmMxZTgwMWMgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZXhlY01haW4uYwpAQCAtNzgsNiArNzgsNyBAQCBFeGVjdXRvckNoZWNrUGVybXNfaG9va190eXBl IEV4ZWN1dG9yQ2hlY2tQZXJtc19ob29rID0gTlVMTDsKIC8qIGRlY2xzIGZvciBsb2NhbCByb3V0 aW5lcyBvbmx5IHVzZWQgd2l0aGluIHRoaXMgbW9kdWxlICovCiBzdGF0aWMgdm9pZCBJbml0UGxh bihRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncyk7CiBzdGF0aWMgdm9pZCBDaGVja1Zh bGlkUm93TWFya1JlbChSZWxhdGlvbiByZWwsIFJvd01hcmtUeXBlIG1hcmtUeXBlKTsKK3N0YXRp YyB2b2lkIEV4ZWNGaW5hbGl6ZVRyaWdnZXJJbnN0cnVtZW50YXRpb24oRVN0YXRlICplc3RhdGUp Owogc3RhdGljIHZvaWQgRXhlY1Bvc3Rwcm9jZXNzUGxhbihFU3RhdGUgKmVzdGF0ZSk7CiBzdGF0 aWMgdm9pZCBFeGVjRW5kUGxhbihQbGFuU3RhdGUgKnBsYW5zdGF0ZSwgRVN0YXRlICplc3RhdGUp Owogc3RhdGljIHZvaWQgRXhlY3V0ZVBsYW4oUXVlcnlEZXNjICpxdWVyeURlc2MsCkBAIC0yNDcs OSArMjQ4LDE5IEBAIHN0YW5kYXJkX0V4ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpxdWVyeURlc2Ms IGludCBlZmxhZ3MpCiAJZXN0YXRlLT5lc19zbmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3QocXVl cnlEZXNjLT5zbmFwc2hvdCk7CiAJZXN0YXRlLT5lc19jcm9zc2NoZWNrX3NuYXBzaG90ID0gUmVn aXN0ZXJTbmFwc2hvdChxdWVyeURlc2MtPmNyb3NzY2hlY2tfc25hcHNob3QpOwogCWVzdGF0ZS0+ ZXNfdG9wX2VmbGFncyA9IGVmbGFnczsKLQllc3RhdGUtPmVzX2luc3RydW1lbnQgPSBxdWVyeURl c2MtPmluc3RydW1lbnRfb3B0aW9uczsKIAllc3RhdGUtPmVzX2ppdF9mbGFncyA9IHF1ZXJ5RGVz Yy0+cGxhbm5lZHN0bXQtPmppdEZsYWdzOwogCisJLyoKKwkgKiBTZXQgdXAgcXVlcnktbGV2ZWwg aW5zdHJ1bWVudGF0aW9uIGlmIG5lZWRlZC4gV2UgZG8gdGhpcyBiZWZvcmUKKwkgKiBJbml0UGxh biBzbyB0aGF0IG5vZGUgYW5kIHRyaWdnZXIgaW5zdHJ1bWVudGF0aW9uIGNhbiBiZSBhbGxvY2F0 ZWQKKwkgKiB3aXRoaW4gdGhlIHF1ZXJ5J3MgZGVkaWNhdGVkIGluc3RydW1lbnRhdGlvbiBtZW1v cnkgY29udGV4dC4KKwkgKi8KKwlpZiAoIXF1ZXJ5RGVzYy0+dG90YWx0aW1lICYmIHF1ZXJ5RGVz Yy0+aW5zdHJ1bWVudF9vcHRpb25zKQorCXsKKwkJcXVlcnlEZXNjLT50b3RhbHRpbWUgPSBJbnN0 clF1ZXJ5QWxsb2MocXVlcnlEZXNjLT5pbnN0cnVtZW50X29wdGlvbnMpOworCQllc3RhdGUtPmVz X2luc3RydW1lbnQgPSBxdWVyeURlc2MtPnRvdGFsdGltZTsKKwl9CisKIAkvKgogCSAqIFNldCB1 cCBhbiBBRlRFUi10cmlnZ2VyIHN0YXRlbWVudCBjb250ZXh0LCB1bmxlc3MgdG9sZCBub3QgdG8s IG9yCiAJICogdW5sZXNzIGl0J3MgRVhQTEFJTi1vbmx5IG1vZGUgKHdoZW4gRXhlY3V0b3JGaW5p c2ggd29uJ3QgYmUgY2FsbGVkKS4KQEAgLTMzMSw5ICszNDIsMjEgQEAgc3RhbmRhcmRfRXhlY3V0 b3JSdW4oUXVlcnlEZXNjICpxdWVyeURlc2MsCiAJICovCiAJb2xkY29udGV4dCA9IE1lbW9yeUNv bnRleHRTd2l0Y2hUbyhlc3RhdGUtPmVzX3F1ZXJ5X2N4dCk7CiAKLQkvKiBBbGxvdyBpbnN0cnVt ZW50YXRpb24gb2YgRXhlY3V0b3Igb3ZlcmFsbCBydW50aW1lICovCisJLyogU3RhcnQgdXAgaW5z dHJ1bWVudGF0aW9uIGZvciB0aGlzIGV4ZWN1dGlvbiBydW4gKi8KIAlpZiAocXVlcnlEZXNjLT50 b3RhbHRpbWUpCi0JCUluc3RyU3RhcnQocXVlcnlEZXNjLT50b3RhbHRpbWUpOworCXsKKwkJSW5z dHJRdWVyeVN0YXJ0KHF1ZXJ5RGVzYy0+dG90YWx0aW1lKTsKKworCQkvKgorCQkgKiBSZW1lbWJl ciBhbGwgbm9kZSBlbnRyaWVzIGZvciBhYm9ydCByZWNvdmVyeS4gV2UgZG8gdGhpcyBvbmNlIGhl cmUKKwkJICogYWZ0ZXIgSW5zdHJRdWVyeVN0YXJ0IGhhcyBwdXNoZWQgdGhlIHBhcmVudCBzdGFj ayBlbnRyeS4KKwkJICovCisJCWlmIChlc3RhdGUtPmVzX2luc3RydW1lbnQgJiYKKwkJCWVzdGF0 ZS0+ZXNfaW5zdHJ1bWVudC0+aW5zdHIubmVlZF9zdGFjayAmJgorCQkJIXF1ZXJ5RGVzYy0+YWxy ZWFkeV9leGVjdXRlZCkKKwkJCUV4ZWNSZW1lbWJlck5vZGVJbnN0cnVtZW50YXRpb24ocXVlcnlE ZXNjLT5wbGFuc3RhdGUsCisJCQkJCQkJCQkJCXF1ZXJ5RGVzYy0+dG90YWx0aW1lKTsKKwl9CiAK IAkvKgogCSAqIGV4dHJhY3QgaW5mb3JtYXRpb24gZnJvbSB0aGUgcXVlcnkgZGVzY3JpcHRvciBh bmQgdGhlIHF1ZXJ5IGZlYXR1cmUuCkBAIC0zODUsNyArNDA4LDcgQEAgc3RhbmRhcmRfRXhlY3V0 b3JSdW4oUXVlcnlEZXNjICpxdWVyeURlc2MsCiAJCWRlc3QtPnJTaHV0ZG93bihkZXN0KTsKIAog CWlmIChxdWVyeURlc2MtPnRvdGFsdGltZSkKLQkJSW5zdHJTdG9wKHF1ZXJ5RGVzYy0+dG90YWx0 aW1lKTsKKwkJSW5zdHJRdWVyeVN0b3AocXVlcnlEZXNjLT50b3RhbHRpbWUpOwogCiAJTWVtb3J5 Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOwogfQpAQCAtNDM1LDcgKzQ1OCw3IEBAIHN0YW5k YXJkX0V4ZWN1dG9yRmluaXNoKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjKQogCiAJLyogQWxsb3cgaW5z dHJ1bWVudGF0aW9uIG9mIEV4ZWN1dG9yIG92ZXJhbGwgcnVudGltZSAqLwogCWlmIChxdWVyeURl c2MtPnRvdGFsdGltZSkKLQkJSW5zdHJTdGFydChxdWVyeURlc2MtPnRvdGFsdGltZSk7CisJCUlu c3RyUXVlcnlTdGFydChxdWVyeURlc2MtPnRvdGFsdGltZSk7CiAKIAkvKiBSdW4gTW9kaWZ5VGFi bGUgbm9kZXMgdG8gY29tcGxldGlvbiAqLwogCUV4ZWNQb3N0cHJvY2Vzc1BsYW4oZXN0YXRlKTsK QEAgLTQ0NCw4ICs0NjcsMjYgQEAgc3RhbmRhcmRfRXhlY3V0b3JGaW5pc2goUXVlcnlEZXNjICpx dWVyeURlc2MpCiAJaWYgKCEoZXN0YXRlLT5lc190b3BfZWZsYWdzICYgRVhFQ19GTEFHX1NLSVBf VFJJR0dFUlMpKQogCQlBZnRlclRyaWdnZXJFbmRRdWVyeShlc3RhdGUpOwogCisJLyoKKwkgKiBB Y2N1bXVsYXRlIHBlci1ub2RlIGFuZCB0cmlnZ2VyIHN0YXRpc3RpY3MgdG8gdGhlaXIgcmVzcGVj dGl2ZSBwYXJlbnQKKwkgKiBpbnN0cnVtZW50YXRpb24gc3RhY2tzLgorCSAqCisJICogV2Ugc2tp cCB0aGlzIGluIHBhcmFsbGVsIHdvcmtlcnMgYmVjYXVzZSB0aGVpciBwZXItbm9kZSBzdGF0cyBh cmUKKwkgKiByZXBvcnRlZCBpbmRpdmlkdWFsbHkgdmlhIEV4ZWNQYXJhbGxlbFJlcG9ydEluc3Ry dW1lbnRhdGlvbiwgYW5kIHRoZQorCSAqIGxlYWRlcidzIG93biBFeGVjRmluYWxpemVOb2RlSW5z dHJ1bWVudGF0aW9uIGhhbmRsZXMgcHJvcGFnYXRpb24uICBJZgorCSAqIHdlIGFjY3VtdWxhdGVk IGhlcmUsIHRoZSBsZWFkZXIgd291bGQgZG91YmxlLWNvdW50OiB3b3JrZXIgcGFyZW50IG5vZGVz CisJICogd291bGQgYWxyZWFkeSBpbmNsdWRlIHRoZWlyIGNoaWxkcmVuJ3Mgc3RhdHMsIGFuZCB0 aGVuIHRoZSBsZWFkZXIncworCSAqIGFjY3VtdWxhdGlvbiB3b3VsZCBhZGQgdGhlIGNoaWxkcmVu IGFnYWluLgorCSAqLworCWlmIChxdWVyeURlc2MtPnRvdGFsdGltZSAmJiBlc3RhdGUtPmVzX2lu c3RydW1lbnQgJiYgIUlzUGFyYWxsZWxXb3JrZXIoKSkKKwl7CisJCUV4ZWNGaW5hbGl6ZU5vZGVJ bnN0cnVtZW50YXRpb24ocXVlcnlEZXNjLT5wbGFuc3RhdGUpOworCisJCUV4ZWNGaW5hbGl6ZVRy aWdnZXJJbnN0cnVtZW50YXRpb24oZXN0YXRlKTsKKwl9CisKIAlpZiAocXVlcnlEZXNjLT50b3Rh bHRpbWUpCi0JCUluc3RyU3RvcChxdWVyeURlc2MtPnRvdGFsdGltZSk7CisJCUluc3RyUXVlcnlT dG9wRmluYWxpemUocXVlcnlEZXNjLT50b3RhbHRpbWUpOwogCiAJTWVtb3J5Q29udGV4dFN3aXRj aFRvKG9sZGNvbnRleHQpOwogCkBAIC0xMjYzLDcgKzEzMDQsNyBAQCBJbml0UmVzdWx0UmVsSW5m byhSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLAogCQkJCSAgUmVsYXRpb24gcmVzdWx0UmVs YXRpb25EZXNjLAogCQkJCSAgSW5kZXggcmVzdWx0UmVsYXRpb25JbmRleCwKIAkJCQkgIFJlc3Vs dFJlbEluZm8gKnBhcnRpdGlvbl9yb290X3JyaSwKLQkJCQkgIGludCBpbnN0cnVtZW50X29wdGlv bnMpCisJCQkJICBRdWVyeUluc3RydW1lbnRhdGlvbiAqcWluc3RyKQogewogCU1lbVNldChyZXN1 bHRSZWxJbmZvLCAwLCBzaXplb2YoUmVzdWx0UmVsSW5mbykpOwogCXJlc3VsdFJlbEluZm8tPnR5 cGUgPSBUX1Jlc3VsdFJlbEluZm87CkBAIC0xMjg0LDggKzEzMjUsOCBAQCBJbml0UmVzdWx0UmVs SW5mbyhSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLAogCQkJcGFsbG9jMF9hcnJheShGbWdy SW5mbywgbik7CiAJCXJlc3VsdFJlbEluZm8tPnJpX1RyaWdXaGVuRXhwcnMgPSAoRXhwclN0YXRl ICoqKQogCQkJcGFsbG9jMF9hcnJheShFeHByU3RhdGUgKiwgbik7Ci0JCWlmIChpbnN0cnVtZW50 X29wdGlvbnMpCi0JCQlyZXN1bHRSZWxJbmZvLT5yaV9UcmlnSW5zdHJ1bWVudCA9IEluc3RyQWxs b2NUcmlnZ2VyKG4sIGluc3RydW1lbnRfb3B0aW9ucyk7CisJCWlmIChxaW5zdHIpCisJCQlyZXN1 bHRSZWxJbmZvLT5yaV9UcmlnSW5zdHJ1bWVudCA9IEluc3RyQWxsb2NUcmlnZ2VyKHFpbnN0ciwg bik7CiAJfQogCWVsc2UKIAl7CkBAIC0xNDk5LDYgKzE1NDAsMzAgQEAgRXhlY0dldEFuY2VzdG9y UmVzdWx0UmVscyhFU3RhdGUgKmVzdGF0ZSwgUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbykK IAlyZXR1cm4gcmVzdWx0UmVsSW5mby0+cmlfYW5jZXN0b3JSZXN1bHRSZWxzOwogfQogCitzdGF0 aWMgdm9pZAorRXhlY0ZpbmFsaXplVHJpZ2dlckluc3RydW1lbnRhdGlvbihFU3RhdGUgKmVzdGF0 ZSkKK3sKKwlMaXN0CSAgICpyZWxzID0gTklMOworCisJcmVscyA9IGxpc3RfY29uY2F0KHJlbHMs IGVzdGF0ZS0+ZXNfdHVwbGVfcm91dGluZ19yZXN1bHRfcmVsYXRpb25zKTsKKwlyZWxzID0gbGlz dF9jb25jYXQocmVscywgZXN0YXRlLT5lc19vcGVuZWRfcmVzdWx0X3JlbGF0aW9ucyk7CisJcmVs cyA9IGxpc3RfY29uY2F0KHJlbHMsIGVzdGF0ZS0+ZXNfdHJpZ190YXJnZXRfcmVsYXRpb25zKTsK KworCWZvcmVhY2hfbm9kZShSZXN1bHRSZWxJbmZvLCBySW5mbywgcmVscykKKwl7CisJCVRyaWdn ZXJJbnN0cnVtZW50YXRpb24gKnRpID0gckluZm8tPnJpX1RyaWdJbnN0cnVtZW50OworCisJCWlm ICh0aSA9PSBOVUxMIHx8IHJJbmZvLT5yaV9UcmlnRGVzYyA9PSBOVUxMKQorCQkJY29udGludWU7 CisKKwkJZm9yIChpbnQgbnQgPSAwOyBudCA8IHJJbmZvLT5yaV9UcmlnRGVzYy0+bnVtdHJpZ2dl cnM7IG50KyspCisJCXsKKwkJCWlmICh0aVtudF0uaW5zdHIubmVlZF9zdGFjaykKKwkJCQlJbnN0 ckFjY3VtU3RhY2soJmVzdGF0ZS0+ZXNfaW5zdHJ1bWVudC0+aW5zdHIsICZ0aVtudF0uaW5zdHIp OworCQl9CisJfQorfQorCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgkJRXhlY1Bvc3Rwcm9jZXNzUGxhbgogICoK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMKaW5kZXggYzE1M2Q1YzFjM2IuLjBiMThhMDVj NDM0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYworKysg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYwpAQCAtNjk0LDcgKzY5NCw3IEBA IEV4ZWNJbml0UGFyYWxsZWxQbGFuKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBFU3RhdGUgKmVzdGF0 ZSwKIAkgKgogCSAqIElmIEVYUExBSU4gaXMgbm90IGluIHVzZSBhbmQgdGhlcmUgYXJlIG5vIGV4 dGVuc2lvbnMgbG9hZGVkIHRoYXQgY2FyZSwKIAkgKiB3ZSBjb3VsZCBza2lwIHRoaXMuICBCdXQg d2UgaGF2ZSBubyB3YXkgb2Yga25vd2luZyB3aGV0aGVyIGFueW9uZSdzCi0JICogbG9va2luZyBh dCBwZ0J1ZmZlclVzYWdlLCBzbyBkbyBpdCB1bmNvbmRpdGlvbmFsbHkuCisJICogbG9va2luZyBh dCBpbnN0cnVtZW50YXRpb24sIHNvIGRvIGl0IHVuY29uZGl0aW9uYWxseS4KIAkgKi8KIAlzaG1f dG9jX2VzdGltYXRlX2NodW5rKCZwY3h0LT5lc3RpbWF0b3IsCiAJCQkJCQkgICBtdWxfc2l6ZShz aXplb2YoQnVmZmVyVXNhZ2UpLCBwY3h0LT5ud29ya2VycykpOwpAQCAtODE5LDEzICs4MTksMTMg QEAgRXhlY0luaXRQYXJhbGxlbFBsYW4oUGxhblN0YXRlICpwbGFuc3RhdGUsIEVTdGF0ZSAqZXN0 YXRlLAogCQlpbnQJCQlpOwogCiAJCWluc3RydW1lbnRhdGlvbiA9IHNobV90b2NfYWxsb2NhdGUo cGN4dC0+dG9jLCBpbnN0cnVtZW50YXRpb25fbGVuKTsKLQkJaW5zdHJ1bWVudGF0aW9uLT5pbnN0 cnVtZW50X29wdGlvbnMgPSBlc3RhdGUtPmVzX2luc3RydW1lbnQ7CisJCWluc3RydW1lbnRhdGlv bi0+aW5zdHJ1bWVudF9vcHRpb25zID0gZXN0YXRlLT5lc19pbnN0cnVtZW50LT5pbnN0cnVtZW50 X29wdGlvbnM7CiAJCWluc3RydW1lbnRhdGlvbi0+aW5zdHJ1bWVudF9vZmZzZXQgPSBpbnN0cnVt ZW50X29mZnNldDsKIAkJaW5zdHJ1bWVudGF0aW9uLT5udW1fd29ya2VycyA9IG53b3JrZXJzOwog CQlpbnN0cnVtZW50YXRpb24tPm51bV9wbGFuX25vZGVzID0gZS5ubm9kZXM7CiAJCWluc3RydW1l bnQgPSBHZXRJbnN0cnVtZW50YXRpb25BcnJheShpbnN0cnVtZW50YXRpb24pOwogCQlmb3IgKGkg PSAwOyBpIDwgbndvcmtlcnMgKiBlLm5ub2RlczsgKytpKQotCQkJSW5zdHJJbml0Tm9kZSgmaW5z dHJ1bWVudFtpXSwgZXN0YXRlLT5lc19pbnN0cnVtZW50KTsKKwkJCUluc3RySW5pdE5vZGUoJmlu c3RydW1lbnRbaV0sIGVzdGF0ZS0+ZXNfaW5zdHJ1bWVudC0+aW5zdHJ1bWVudF9vcHRpb25zKTsK IAkJc2htX3RvY19pbnNlcnQocGN4dC0+dG9jLCBQQVJBTExFTF9LRVlfSU5TVFJVTUVOVEFUSU9O LAogCQkJCQkgICBpbnN0cnVtZW50YXRpb24pOwogCQlwZWktPmluc3RydW1lbnRhdGlvbiA9IGlu c3RydW1lbnRhdGlvbjsKQEAgLTEwNzUsMTQgKzEwNzUsMjggQEAgRXhlY1BhcmFsbGVsUmV0cmll dmVJbnN0cnVtZW50YXRpb24oUGxhblN0YXRlICpwbGFuc3RhdGUsCiAJaW5zdHJ1bWVudCA9IEdl dEluc3RydW1lbnRhdGlvbkFycmF5KGluc3RydW1lbnRhdGlvbik7CiAJaW5zdHJ1bWVudCArPSBp ICogaW5zdHJ1bWVudGF0aW9uLT5udW1fd29ya2VyczsKIAlmb3IgKG4gPSAwOyBuIDwgaW5zdHJ1 bWVudGF0aW9uLT5udW1fd29ya2VyczsgKytuKQorCXsKIAkJSW5zdHJBZ2dOb2RlKHBsYW5zdGF0 ZS0+aW5zdHJ1bWVudCwgJmluc3RydW1lbnRbbl0pOwogCisJCS8qCisJCSAqIEFsc28gYWRkIHdv cmtlciBXQUwgdXNhZ2UgdG8gdGhlIGdsb2JhbCBwZ1dhbFVzYWdlIGNvdW50ZXIuCisJCSAqCisJ CSAqIFdoZW4gcGVyLW5vZGUgaW5zdHJ1bWVudGF0aW9uIGlzIGFjdGl2ZSwgcGFyYWxsZWwgd29y a2VycyBza2lwCisJCSAqIEV4ZWNGaW5hbGl6ZU5vZGVJbnN0cnVtZW50YXRpb24gKHRvIGF2b2lk IGRvdWJsZS1jb3VudGluZyBpbgorCQkgKiBFWFBMQUlOKSwgc28gcGVyLW5vZGUgV0FMIGFjdGl2 aXR5IGlzIG5vdCByb2xsZWQgdXAgaW50byB0aGUKKwkJICogcXVlcnktbGV2ZWwgc3RhdHMgdGhh dCBJbnN0ckFjY3VtUGFyYWxsZWxRdWVyeSByZWNlaXZlcy4gV2l0aG91dAorCQkgKiB0aGlzLCBw Z1dhbFVzYWdlIHdvdWxkIHVuZGVyLXJlcG9ydCBXQUwgZ2VuZXJhdGVkIGJ5IHBhcmFsbGVsCisJ CSAqIHdvcmtlcnMgd2hlbiBpbnN0cnVtZW50YXRpb24gaXMgYWN0aXZlLgorCQkgKi8KKwkJV2Fs VXNhZ2VBZGQoJnBnV2FsVXNhZ2UsICZpbnN0cnVtZW50W25dLmluc3RyLndhbHVzYWdlKTsKKwl9 CisKIAkvKgogCSAqIEFsc28gc3RvcmUgdGhlIHBlci13b3JrZXIgZGV0YWlsLgogCSAqCi0JICog V29ya2VyIGluc3RydW1lbnRhdGlvbiBzaG91bGQgYmUgYWxsb2NhdGVkIGluIHRoZSBzYW1lIGNv bnRleHQgYXMgdGhlCi0JICogcmVndWxhciBpbnN0cnVtZW50YXRpb24gaW5mb3JtYXRpb24sIHdo aWNoIGlzIHRoZSBwZXItcXVlcnkgY29udGV4dC4KLQkgKiBTd2l0Y2ggaW50byBwZXItcXVlcnkg bWVtb3J5IGNvbnRleHQuCisJICogRW5zdXJlIHdvcmtlciBpbnN0cnVtZW50YXRpb24gaXMgYWxs b2NhdGVkIGluIHRoZSBwZXItcXVlcnkgY29udGV4dC4gV2UKKwkgKiBkb24ndCBuZWVkIHRvIHBs YWNlIHRoaXMgaW4gdGhlIGluc3RydW1lbnRhdGlvbiBjb250ZXh0IHNpbmNlIG5vIG1vcmUKKwkg KiBzdGFjay1iYXNlZCBpbnN0cnVtZW50YXRpb24gd29yayBpcyBiZWluZyBkb25lLgogCSAqLwog CW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8ocGxhbnN0YXRlLT5zdGF0ZS0+ZXNf cXVlcnlfY3h0KTsKIAlpYnl0ZXMgPSBtdWxfc2l6ZShpbnN0cnVtZW50YXRpb24tPm51bV93b3Jr ZXJzLCBzaXplb2YoTm9kZUluc3RydW1lbnRhdGlvbikpOwpAQCAtMTQ1Niw2ICsxNDcwLDcgQEAg dm9pZAogUGFyYWxsZWxRdWVyeU1haW4oZHNtX3NlZ21lbnQgKnNlZywgc2htX3RvYyAqdG9jKQog ewogCUZpeGVkUGFyYWxsZWxFeGVjdXRvclN0YXRlICpmcGVzOworCVF1ZXJ5SW5zdHJ1bWVudGF0 aW9uICppbnN0cjsKIAlCdWZmZXJVc2FnZSAqYnVmZmVyX3VzYWdlOwogCVdhbFVzYWdlICAgKndh bF91c2FnZTsKIAlEZXN0UmVjZWl2ZXIgKnJlY2VpdmVyOwpAQCAtMTUxNiw3ICsxNTMxLDcgQEAg UGFyYWxsZWxRdWVyeU1haW4oZHNtX3NlZ21lbnQgKnNlZywgc2htX3RvYyAqdG9jKQogCSAqIGxl YWRlciwgd2hpY2ggYWxzbyBkb2Vzbid0IGNvdW50IGJ1ZmZlciBhY2Nlc3NlcyBhbmQgV0FMIGFj dGl2aXR5IHRoYXQKIAkgKiBvY2N1ciBkdXJpbmcgZXhlY3V0b3Igc3RhcnR1cC4KIAkgKi8KLQlJ bnN0clN0YXJ0UGFyYWxsZWxRdWVyeSgpOworCWluc3RyID0gSW5zdHJTdGFydFBhcmFsbGVsUXVl cnkoKTsKIAogCS8qCiAJICogUnVuIHRoZSBwbGFuLiAgSWYgd2Ugc3BlY2lmaWVkIGEgdHVwbGUg Ym91bmQsIGJlIGNhcmVmdWwgbm90IHRvIGRlbWFuZApAQCAtMTUzMiw3ICsxNTQ3LDggQEAgUGFy YWxsZWxRdWVyeU1haW4oZHNtX3NlZ21lbnQgKnNlZywgc2htX3RvYyAqdG9jKQogCS8qIFJlcG9y dCBidWZmZXIvV0FMIHVzYWdlIGR1cmluZyBwYXJhbGxlbCBleGVjdXRpb24uICovCiAJYnVmZmVy X3VzYWdlID0gc2htX3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9LRVlfQlVGRkVSX1VTQUdFLCBm YWxzZSk7CiAJd2FsX3VzYWdlID0gc2htX3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9LRVlfV0FM X1VTQUdFLCBmYWxzZSk7Ci0JSW5zdHJFbmRQYXJhbGxlbFF1ZXJ5KCZidWZmZXJfdXNhZ2VbUGFy YWxsZWxXb3JrZXJOdW1iZXJdLAorCUluc3RyRW5kUGFyYWxsZWxRdWVyeShpbnN0ciwKKwkJCQkJ CSAgJmJ1ZmZlcl91c2FnZVtQYXJhbGxlbFdvcmtlck51bWJlcl0sCiAJCQkJCQkgICZ3YWxfdXNh Z2VbUGFyYWxsZWxXb3JrZXJOdW1iZXJdKTsKIAogCS8qIFJlcG9ydCBpbnN0cnVtZW50YXRpb24g ZGF0YSBpZiBhbnkgaW5zdHJ1bWVudGF0aW9uIG9wdGlvbnMgYXJlIHNldC4gKi8KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYwppbmRleCBkOTZkNGY5OTQ3Yi4uNmYyOTA5YTFiYzMgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYworKysgYi9zcmMv YmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMKQEAgLTEzODEsNyArMTM4MSw3IEBAIEV4 ZWNJbml0UGFydGl0aW9uRGlzcGF0Y2hJbmZvKEVTdGF0ZSAqZXN0YXRlLAogCXsKIAkJUmVzdWx0 UmVsSW5mbyAqcnJpID0gbWFrZU5vZGUoUmVzdWx0UmVsSW5mbyk7CiAKLQkJSW5pdFJlc3VsdFJl bEluZm8ocnJpLCByZWwsIDAsIHJvb3RSZXN1bHRSZWxJbmZvLCAwKTsKKwkJSW5pdFJlc3VsdFJl bEluZm8ocnJpLCByZWwsIDAsIHJvb3RSZXN1bHRSZWxJbmZvLCBOVUxMKTsKIAkJcHJvdXRlLT5u b25sZWFmX3BhcnRpdGlvbnNbZGlzcGF0Y2hpZHhdID0gcnJpOwogCX0KIAllbHNlCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUHJvY25vZGUuYyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNQcm9jbm9kZS5jCmluZGV4IDEzMmZlMzdlZjYwLi4yMWFkMWIwNGE1NyAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1Byb2Nub2RlLmMKKysrIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY1Byb2Nub2RlLmMKQEAgLTEyMyw2ICsxMjMsOCBAQAogc3RhdGlj IFR1cGxlVGFibGVTbG90ICpFeGVjUHJvY05vZGVGaXJzdChQbGFuU3RhdGUgKm5vZGUpOwogc3Rh dGljIFR1cGxlVGFibGVTbG90ICpFeGVjUHJvY05vZGVJbnN0cihQbGFuU3RhdGUgKm5vZGUpOwog c3RhdGljIGJvb2wgRXhlY1NodXRkb3duTm9kZV93YWxrZXIoUGxhblN0YXRlICpub2RlLCB2b2lk ICpjb250ZXh0KTsKK3N0YXRpYyBib29sIEV4ZWNSZW1lbWJlck5vZGVJbnN0cnVtZW50YXRpb25f d2Fsa2VyKFBsYW5TdGF0ZSAqbm9kZSwgdm9pZCAqY29udGV4dCk7CitzdGF0aWMgYm9vbCBFeGVj RmluYWxpemVOb2RlSW5zdHJ1bWVudGF0aW9uX3dhbGtlcihQbGFuU3RhdGUgKm5vZGUsIHZvaWQg KmNvbnRleHQpOwogCiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNzg4LDEwICs3OTAsMTAgQEAg RXhlY1NodXRkb3duTm9kZV93YWxrZXIoUGxhblN0YXRlICpub2RlLCB2b2lkICpjb250ZXh0KQog CSAqIGF0IGxlYXN0IG9uY2UgYWxyZWFkeS4gIFdlIGRvbid0IGV4cGVjdCBtdWNoIENQVSBjb25z dW1wdGlvbiBkdXJpbmcKIAkgKiBub2RlIHNodXRkb3duLCBidXQgaW4gdGhlIGNhc2Ugb2YgR2F0 aGVyIG9yIEdhdGhlciBNZXJnZSwgd2UgbWF5IHNodXQKIAkgKiBkb3duIHdvcmtlcnMgYXQgdGhp cyBzdGFnZS4gIElmIHNvLCB0aGVpciBidWZmZXIgdXNhZ2Ugd2lsbCBnZXQKLQkgKiBwcm9wYWdh dGVkIGludG8gcGdCdWZmZXJVc2FnZSBhdCB0aGlzIHBvaW50LCBhbmQgd2Ugd2FudCB0byBtYWtl IHN1cmUKLQkgKiB0aGF0IGl0IGdldHMgYXNzb2NpYXRlZCB3aXRoIHRoZSBHYXRoZXIgbm9kZS4g IFdlIHNraXAgdGhpcyBpZiB0aGUgbm9kZQotCSAqIGhhcyBuZXZlciBiZWVuIGV4ZWN1dGVkLCBz byBhcyB0byBhdm9pZCBpbmNvcnJlY3RseSBtYWtpbmcgaXQgYXBwZWFyCi0JICogdGhhdCBpdCBo YXMuCisJICogcHJvcGFnYXRlZCBpbnRvIHRoZSBjdXJyZW50IGluc3RydW1lbnRhdGlvbiBzdGFj ayBlbnRyeSBhdCB0aGlzIHBvaW50LAorCSAqIGFuZCB3ZSB3YW50IHRvIG1ha2Ugc3VyZSB0aGF0 IGl0IGdldHMgYXNzb2NpYXRlZCB3aXRoIHRoZSBHYXRoZXIgbm9kZS4KKwkgKiBXZSBza2lwIHRo aXMgaWYgdGhlIG5vZGUgaGFzIG5ldmVyIGJlZW4gZXhlY3V0ZWQsIHNvIGFzIHRvIGF2b2lkCisJ ICogaW5jb3JyZWN0bHkgbWFraW5nIGl0IGFwcGVhciB0aGF0IGl0IGhhcy4KIAkgKi8KIAlpZiAo bm9kZS0+aW5zdHJ1bWVudCAmJiBub2RlLT5pbnN0cnVtZW50LT5ydW5uaW5nKQogCQlJbnN0clN0 YXJ0Tm9kZShub2RlLT5pbnN0cnVtZW50KTsKQEAgLTgyOSw2ICs4MzEsODAgQEAgRXhlY1NodXRk b3duTm9kZV93YWxrZXIoUGxhblN0YXRlICpub2RlLCB2b2lkICpjb250ZXh0KQogCXJldHVybiBm YWxzZTsKIH0KIAorLyoKKyAqIEV4ZWNSZW1lbWJlck5vZGVJbnN0cnVtZW50YXRpb24KKyAqCisg KiBSZWdpc3RlciBhbGwgcGVyLW5vZGUgaW5zdHJ1bWVudGF0aW9uIGVudHJpZXMgYXMgdW5maW5h bGl6ZWQgY2hpbGRyZW4gb2YKKyAqIHRoZSBleGVjdXRvcidzIGluc3RydW1lbnRhdGlvbi4gVGhp cyBpcyBuZWVkZWQgZm9yIGFib3J0IHJlY292ZXJ5OiBpZiB0aGUKKyAqIGV4ZWN1dG9yIGFib3J0 cywgd2UgbmVlZCB0byB3YWxrIGVhY2ggcGVyLW5vZGUgZW50cnkgdG8gcmVjb3ZlciBidWZmZXIv V0FMCisgKiBkYXRhIGZyb20gbm9kZXMgdGhhdCBuZXZlciBnb3QgZmluYWxpemVkLCB0aGF0IHNv bWVvbmUgbWlnaHQgYmUgaW50ZXJlc3RlZAorICogaW4gYXMgYW4gYWdncmVnYXRlLgorICovCit2 b2lkCitFeGVjUmVtZW1iZXJOb2RlSW5zdHJ1bWVudGF0aW9uKFBsYW5TdGF0ZSAqbm9kZSwgUXVl cnlJbnN0cnVtZW50YXRpb24gKnBhcmVudCkKK3sKKwkodm9pZCkgRXhlY1JlbWVtYmVyTm9kZUlu c3RydW1lbnRhdGlvbl93YWxrZXIobm9kZSwgcGFyZW50KTsKK30KKworc3RhdGljIGJvb2wKK0V4 ZWNSZW1lbWJlck5vZGVJbnN0cnVtZW50YXRpb25fd2Fsa2VyKFBsYW5TdGF0ZSAqbm9kZSwgdm9p ZCAqY29udGV4dCkKK3sKKwlRdWVyeUluc3RydW1lbnRhdGlvbiAqcGFyZW50ID0gKFF1ZXJ5SW5z dHJ1bWVudGF0aW9uICopIGNvbnRleHQ7CisKKwlBc3NlcnQocGFyZW50ICE9IE5VTEwpOworCisJ aWYgKG5vZGUgPT0gTlVMTCkKKwkJcmV0dXJuIGZhbHNlOworCisJaWYgKG5vZGUtPmluc3RydW1l bnQpCisJCUluc3RyUXVlcnlSZW1lbWJlckNoaWxkKHBhcmVudCwgJm5vZGUtPmluc3RydW1lbnQt Pmluc3RyKTsKKworCXJldHVybiBwbGFuc3RhdGVfdHJlZV93YWxrZXIobm9kZSwgRXhlY1JlbWVt YmVyTm9kZUluc3RydW1lbnRhdGlvbl93YWxrZXIsIGNvbnRleHQpOworfQorCisvKgorICogRXhl Y0ZpbmFsaXplTm9kZUluc3RydW1lbnRhdGlvbgorICoKKyAqIEFjY3VtdWxhdGUgaW5zdHJ1bWVu dGF0aW9uIHN0YXRzIGZyb20gYWxsIGV4ZWN1dGlvbiBub2RlcyB0byB0aGVpciByZXNwZWN0aXZl CisgKiBwYXJlbnRzIChvciB0aGUgb3JpZ2luYWwgcGFyZW50IGluc3RydW1lbnRhdGlvbikuCisg KgorICogVGhpcyBtdXN0IHJ1biBhZnRlciB0aGUgY2xlYW51cCBkb25lIGJ5IEV4ZWNTaHV0ZG93 bk5vZGUsIGFuZCBub3QgcmVseSBvbiBhbnkKKyAqIHJlc291cmNlcyBjbGVhbmVkIHVwIGJ5IGl0 LiBXZSBhbHNvIGV4cGVjdCBzaHV0ZG93biBhY3Rpb25zIHRvIGhhdmUgb2NjdXJyZWQsCisgKiBl LmcuIHBhcmFsbGVsIHdvcmtlciBpbnN0cnVtZW50YXRpb24gdG8gaGF2ZSBiZWVuIGFkZGVkIHRv IHRoZSBsZWFkZXIuCisgKi8KK3ZvaWQKK0V4ZWNGaW5hbGl6ZU5vZGVJbnN0cnVtZW50YXRpb24o UGxhblN0YXRlICpub2RlKQoreworCSh2b2lkKSBFeGVjRmluYWxpemVOb2RlSW5zdHJ1bWVudGF0 aW9uX3dhbGtlcihub2RlLCBpbnN0cl9zdGFjay5jdXJyZW50KTsKK30KKworc3RhdGljIGJvb2wK K0V4ZWNGaW5hbGl6ZU5vZGVJbnN0cnVtZW50YXRpb25fd2Fsa2VyKFBsYW5TdGF0ZSAqbm9kZSwg dm9pZCAqY29udGV4dCkKK3sKKwlJbnN0cnVtZW50YXRpb24gKnBhcmVudCA9IChJbnN0cnVtZW50 YXRpb24gKikgY29udGV4dDsKKworCUFzc2VydChwYXJlbnQgIT0gTlVMTCk7CisKKwlpZiAobm9k ZSA9PSBOVUxMKQorCQlyZXR1cm4gZmFsc2U7CisKKwkvKgorCSAqIFJlY3Vyc2UgaW50byBjaGls ZHJlbiBmaXJzdCAoYm90dG9tLXVwIGFjY3VtdWxhdGlvbiksIHBhc3Npbmcgb3VyCisJICogaW5z dHJ1bWVudGF0aW9uIGFzIHRoZSBwYXJlbnQgY29udGV4dC4gIFRoaXMgZW5zdXJlcyBjaGlsZHJl biBjYW4KKwkgKiBhY2N1bXVsYXRlIHRvIHVzIGV2ZW4gaWYgdGhleSB3ZXJlIG5ldmVyIGV4ZWN1 dGVkIGJ5IHRoZSBsZWFkZXIgKGUuZy4KKwkgKiBub2RlcyBiZW5lYXRoIEdhdGhlciB0aGF0IG9u bHkgd29ya2VycyByYW4pLgorCSAqLworCXBsYW5zdGF0ZV90cmVlX3dhbGtlcihub2RlLCBFeGVj RmluYWxpemVOb2RlSW5zdHJ1bWVudGF0aW9uX3dhbGtlciwKKwkJCQkJCSAgbm9kZS0+aW5zdHJ1 bWVudCA/ICZub2RlLT5pbnN0cnVtZW50LT5pbnN0ciA6IHBhcmVudCk7CisKKwlpZiAoIW5vZGUt Pmluc3RydW1lbnQpCisJCXJldHVybiBmYWxzZTsKKworCUluc3RyRmluYWxpemVDaGlsZCgmbm9k ZS0+aW5zdHJ1bWVudC0+aW5zdHIsIHBhcmVudCk7CisKKwlyZXR1cm4gZmFsc2U7Cit9CisKIC8q CiAgKiBFeGVjU2V0VHVwbGVCb3VuZAogICoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL2V4ZWNVdGlscy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMKaW5kZXgg OTg4NmFiMDZiNjkuLjBkYTBmZjZiMzM5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRv ci9leGVjVXRpbHMuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYwpAQCAt MTUwLDcgKzE1MCw3IEBAIENyZWF0ZUV4ZWN1dG9yU3RhdGUodm9pZCkKIAllc3RhdGUtPmVzX3Rv dGFsX3Byb2Nlc3NlZCA9IDA7CiAKIAllc3RhdGUtPmVzX3RvcF9lZmxhZ3MgPSAwOwotCWVzdGF0 ZS0+ZXNfaW5zdHJ1bWVudCA9IDA7CisJZXN0YXRlLT5lc19pbnN0cnVtZW50ID0gTlVMTDsKIAll c3RhdGUtPmVzX2ZpbmlzaGVkID0gZmFsc2U7CiAKIAllc3RhdGUtPmVzX2V4cHJjb250ZXh0cyA9 IE5JTDsKQEAgLTIyNyw2ICsyMjcsMTUgQEAgRnJlZUV4ZWN1dG9yU3RhdGUoRVN0YXRlICplc3Rh dGUpCiAJCWVzdGF0ZS0+ZXNfcGFydGl0aW9uX2RpcmVjdG9yeSA9IE5VTEw7CiAJfQogCisJLyoK KwkgKiBNYWtlIHN1cmUgdGhlIGluc3RydW1lbnRhdGlvbiBjb250ZXh0IGdldHMgZnJlZWQuIFRo aXMgdXN1YWxseSBnZXRzCisJICogcmUtcGFyZW50ZWQgdW5kZXIgdGhlIHBlci1xdWVyeSBjb250 ZXh0IGluIEluc3RyUXVlcnlTdG9wRmluYWxpemUsIGJ1dAorCSAqIHRoYXQgd29uJ3QgaGFwcGVu IGR1cmluZyBFWFBMQUlOIChCVUZGRVJTKSBzaW5jZSBFeGVjdXRvckZpbmlzaCBuZXZlcgorCSAq IGdldHMgY2FsbGVkLCBzbyB3ZSB3b3VsZCBvdGhlcndpc2UgbGVhayBpdCBpbiBUb3BNZW1vcnlD b250ZXh0LgorCSAqLworCWlmIChlc3RhdGUtPmVzX2luc3RydW1lbnQgJiYgZXN0YXRlLT5lc19p bnN0cnVtZW50LT5pbnN0ci5uZWVkX3N0YWNrKQorCQlNZW1vcnlDb250ZXh0RGVsZXRlKGVzdGF0 ZS0+ZXNfaW5zdHJ1bWVudC0+aW5zdHJfY3h0KTsKKwogCS8qCiAJICogRnJlZSB0aGUgcGVyLXF1 ZXJ5IG1lbW9yeSBjb250ZXh0LCB0aGVyZWJ5IHJlbGVhc2luZyBhbGwgd29ya2luZwogCSAqIG1l bW9yeSwgaW5jbHVkaW5nIHRoZSBFU3RhdGUgbm9kZSBpdHNlbGYuCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9leGVjdXRvci9pbnN0cnVtZW50LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9pbnN0 cnVtZW50LmMKaW5kZXggYmM1NTFmOTVhMDguLjY4OTI3MDZhODNhIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9leGVjdXRvci9pbnN0cnVtZW50LmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv aW5zdHJ1bWVudC5jCkBAIC0xNiwzMCArMTYsNDYgQEAKICNpbmNsdWRlIDx1bmlzdGQuaD4KIAog I2luY2x1ZGUgImV4ZWN1dG9yL2luc3RydW1lbnQuaCIKKyNpbmNsdWRlICJ1dGlscy9tZW11dGls cy5oIgorI2luY2x1ZGUgInV0aWxzL3Jlc293bmVyLmgiCiAKLUJ1ZmZlclVzYWdlIHBnQnVmZmVy VXNhZ2U7Ci1zdGF0aWMgQnVmZmVyVXNhZ2Ugc2F2ZV9wZ0J1ZmZlclVzYWdlOwogV2FsVXNhZ2UJ cGdXYWxVc2FnZTsKLXN0YXRpYyBXYWxVc2FnZSBzYXZlX3BnV2FsVXNhZ2U7CitJbnN0cnVtZW50 YXRpb24gaW5zdHJfdG9wOworSW5zdHJTdGFja1N0YXRlIGluc3RyX3N0YWNrID0gezAsIDAsIE5V TEwsICZpbnN0cl90b3B9OwogCi1zdGF0aWMgdm9pZCBCdWZmZXJVc2FnZUFkZChCdWZmZXJVc2Fn ZSAqZHN0LCBjb25zdCBCdWZmZXJVc2FnZSAqYWRkKTsKLXN0YXRpYyB2b2lkIFdhbFVzYWdlQWRk KFdhbFVzYWdlICpkc3QsIFdhbFVzYWdlICphZGQpOwordm9pZAorSW5zdHJTdGFja0dyb3codm9p ZCkKK3sKKwlpbnQJCQlzcGFjZSA9IGluc3RyX3N0YWNrLnN0YWNrX3NwYWNlOworCisJaWYgKGlu c3RyX3N0YWNrLmVudHJpZXMgPT0gTlVMTCkKKwl7CisJCXNwYWNlID0gMTA7CQkJCS8qIEFsbG9j YXRlIHN1ZmZpY2llbnQgaW5pdGlhbCBzcGFjZSBmb3IKKwkJCQkJCQkJICogdHlwaWNhbCBhY3Rp dml0eSAqLworCQlpbnN0cl9zdGFjay5lbnRyaWVzID0gTWVtb3J5Q29udGV4dEFsbG9jKFRvcE1l bW9yeUNvbnRleHQsCisJCQkJCQkJCQkJCQkgc2l6ZW9mKEluc3RydW1lbnRhdGlvbiAqKSAqIHNw YWNlKTsKKwl9CisJZWxzZQorCXsKKwkJc3BhY2UgKj0gMjsKKwkJaW5zdHJfc3RhY2suZW50cmll cyA9IHJlcGFsbG9jX2FycmF5KGluc3RyX3N0YWNrLmVudHJpZXMsIEluc3RydW1lbnRhdGlvbiAq LCBzcGFjZSk7CisJfQogCisJLyogVXBkYXRlIHN0YWNrIHNwYWNlIGFmdGVyIGFsbG9jYXRpb24g c3VjY2VlZGVkIHRvIHByb3RlY3QgYWdhaW5zdCBPT01zICovCisJaW5zdHJfc3RhY2suc3RhY2tf c3BhY2UgPSBzcGFjZTsKK30KIAogLyogR2VuZXJhbCBwdXJwb3NlIGluc3RydW1lbnRhdGlvbiBo YW5kbGluZyAqLwotSW5zdHJ1bWVudGF0aW9uICoKLUluc3RyQWxsb2MoaW50IGluc3RydW1lbnRf b3B0aW9ucykKK3N0YXRpYyBpbmxpbmUgYm9vbAorSW5zdHJOZWVkU3RhY2soaW50IGluc3RydW1l bnRfb3B0aW9ucykKIHsKLQlJbnN0cnVtZW50YXRpb24gKmluc3RyID0gcGFsbG9jMChzaXplb2Yo SW5zdHJ1bWVudGF0aW9uKSk7Ci0JSW5zdHJJbml0T3B0aW9ucyhpbnN0ciwgaW5zdHJ1bWVudF9v cHRpb25zKTsKLQlyZXR1cm4gaW5zdHI7CisJcmV0dXJuIChpbnN0cnVtZW50X29wdGlvbnMgJiAo SU5TVFJVTUVOVF9CVUZGRVJTIHwgSU5TVFJVTUVOVF9XQUwpKSAhPSAwOwogfQogCiB2b2lkCiBJ bnN0ckluaXRPcHRpb25zKEluc3RydW1lbnRhdGlvbiAqaW5zdHIsIGludCBpbnN0cnVtZW50X29w dGlvbnMpCiB7Ci0JaW5zdHItPm5lZWRfYnVmdXNhZ2UgPSAoaW5zdHJ1bWVudF9vcHRpb25zICYg SU5TVFJVTUVOVF9CVUZGRVJTKSAhPSAwOwotCWluc3RyLT5uZWVkX3dhbHVzYWdlID0gKGluc3Ry dW1lbnRfb3B0aW9ucyAmIElOU1RSVU1FTlRfV0FMKSAhPSAwOworCWluc3RyLT5uZWVkX3N0YWNr ID0gSW5zdHJOZWVkU3RhY2soaW5zdHJ1bWVudF9vcHRpb25zKTsKIAlpbnN0ci0+bmVlZF90aW1l ciA9IChpbnN0cnVtZW50X29wdGlvbnMgJiBJTlNUUlVNRU5UX1RJTUVSKSAhPSAwOwogfQogCkBA IC01NCw1MCArNzAsMjk1IEBAIEluc3RyU3RhcnQoSW5zdHJ1bWVudGF0aW9uICppbnN0cikKIAkJ CUlOU1RSX1RJTUVfU0VUX0NVUlJFTlQoaW5zdHItPnN0YXJ0dGltZSk7CiAJfQogCi0JLyogc2F2 ZSBidWZmZXIgdXNhZ2UgdG90YWxzIGF0IG5vZGUgZW50cnksIGlmIG5lZWRlZCAqLwotCWlmIChp bnN0ci0+bmVlZF9idWZ1c2FnZSkKLQkJaW5zdHItPmJ1ZnVzYWdlX3N0YXJ0ID0gcGdCdWZmZXJV c2FnZTsKKwlpZiAoaW5zdHItPm5lZWRfc3RhY2spCisJCUluc3RyUHVzaFN0YWNrKGluc3RyKTsK K30KKworc3RhdGljIHZvaWQKK0luc3RyU3RvcFRpbWVyKEluc3RydW1lbnRhdGlvbiAqaW5zdHIp Cit7CisJaW5zdHJfdGltZQllbmR0aW1lOwogCi0JaWYgKGluc3RyLT5uZWVkX3dhbHVzYWdlKQot CQlpbnN0ci0+d2FsdXNhZ2Vfc3RhcnQgPSBwZ1dhbFVzYWdlOworCS8qIGxldCdzIHVwZGF0ZSB0 aGUgdGltZSBvbmx5IGlmIHRoZSB0aW1lciB3YXMgcmVxdWVzdGVkICovCisJaWYgKElOU1RSX1RJ TUVfSVNfWkVSTyhpbnN0ci0+c3RhcnR0aW1lKSkKKwkJZWxvZyhFUlJPUiwgIkluc3RyU3RvcCBj YWxsZWQgd2l0aG91dCBzdGFydCIpOworCisJSU5TVFJfVElNRV9TRVRfQ1VSUkVOVChlbmR0aW1l KTsKKwlJTlNUUl9USU1FX0FDQ1VNX0RJRkYoaW5zdHItPnRvdGFsLCBlbmR0aW1lLCBpbnN0ci0+ c3RhcnR0aW1lKTsKKworCUlOU1RSX1RJTUVfU0VUX1pFUk8oaW5zdHItPnN0YXJ0dGltZSk7CiB9 CiAKIHZvaWQKIEluc3RyU3RvcChJbnN0cnVtZW50YXRpb24gKmluc3RyKQogewotCWluc3RyX3Rp bWUJZW5kdGltZTsKKwlpZiAoaW5zdHItPm5lZWRfdGltZXIpCisJCUluc3RyU3RvcFRpbWVyKGlu c3RyKTsKKworCWlmIChpbnN0ci0+bmVlZF9zdGFjaykKKwkJSW5zdHJQb3BTdGFjayhpbnN0cik7 Cit9CisKKy8qCisgKiBTdG9wcyBpbnN0cnVtZW50YXRpb24sIGZpbmFsaXplcyB0aGUgc3RhY2sg ZW50cnkgYW5kIGFjY3VtdWxhdGVzIHRvIGl0cyBwYXJlbnQuCisgKgorICogTm90ZSB0aGF0IHRo aXMgaW50ZW50aW9uYWxseSBhbGxvd3MgcGFzc2luZyBhIHN0YWNrIHRoYXQgaXMgbm90IHRoZSBj dXJyZW50CisgKiB0b3AsIGFzIGNhbiBoYXBwZW4gd2l0aCBQR19GSU5BTExZLCBvciByZXNvdXJj ZSBvd25lcnMsIHdoaWNoIGRvbid0IGhhdmUgYQorICogZ3VhcmFudGVlZCBjbGVhbnVwIG9yZGVy LgorICoKKyAqIFdlIGFyZSBjYXJlZnVsIGhlcmUgdG8gYWNoaWV2ZSB0d28gZ29hbHM6CisgKgor ICogMSkgUmVzZXQgdGhlIHN0YWNrIHRvIHRoZSBwYXJlbnQgb2Ygd2hpY2hldmVyIG9mIHRoZSBy ZWxlYXNlZCBzdGFjayBlbnRyaWVzCisgKiAgICBoYXMgdGhlIGxvd2VzdCBpbmRleAorICogMikg QWNjdW11bGF0ZSBhbGwgaW5zdHJ1bWVudGF0aW9uIHRvIHRoZSBjdXJyZW50bHkgYWN0aXZlIGlu c3RydW1lbnRhdGlvbiwKKyAqICAgIHNvIHRoYXQgY2FsbGVycyBnZXQgYSBjb21wbGV0ZSBwaWN0 dXJlIG9mIGFjdGl2aXR5LCBldmVuIGFmdGVyIGFuIGFib3J0CisgKi8KK3ZvaWQKK0luc3RyU3Rv cEZpbmFsaXplKEluc3RydW1lbnRhdGlvbiAqaW5zdHIpCit7CisJaW50CQkJaWR4ID0gLTE7CisK Kwlmb3IgKGludCBpID0gaW5zdHJfc3RhY2suc3RhY2tfc2l6ZSAtIDE7IGkgPj0gMDsgaS0tKQor CXsKKwkJaWYgKGluc3RyX3N0YWNrLmVudHJpZXNbaV0gPT0gaW5zdHIpCisJCXsKKwkJCWlkeCA9 IGk7CisJCQlicmVhazsKKwkJfQorCX0KKworCWlmIChpZHggPj0gMCkKKwl7CisJCXdoaWxlIChp bnN0cl9zdGFjay5zdGFja19zaXplID4gaWR4ICsgMSkKKwkJCWluc3RyX3N0YWNrLnN0YWNrX3Np emUtLTsKKworCQlJbnN0clBvcFN0YWNrKGluc3RyKTsKKwl9CiAKLQkvKiBsZXQncyB1cGRhdGUg dGhlIHRpbWUgb25seSBpZiB0aGUgdGltZXIgd2FzIHJlcXVlc3RlZCAqLwogCWlmIChpbnN0ci0+ bmVlZF90aW1lcikKKwkJSW5zdHJTdG9wVGltZXIoaW5zdHIpOworCisJSW5zdHJBY2N1bVN0YWNr KGluc3RyX3N0YWNrLmN1cnJlbnQsIGluc3RyKTsKK30KKworLyoKKyAqIEZpbmFsaXplIGNoaWxk IGluc3RydW1lbnRhdGlvbiBieSBhY2N1bXVsYXRpbmcgYnVmZmVyL1dBTCB1c2FnZSB0byB0aGUK KyAqIHByb3ZpZGVkIGluc3RydW1lbnRhdGlvbiwgd2hpY2ggbWF5IGJlIHRoZSBjdXJyZW50IGVu dHJ5LCBvciBvbmUgdGhlIGNhbGxlcgorICogdHJlYXRzIGFzIGEgcGFyZW50IGFuZCB3aWxsIGFk ZCB0byB0aGUgdG90YWxzIGxhdGVyLgorICoKKyAqIEFsc28gZGVsZXRlcyB0aGUgdW5maW5hbGl6 ZWQgZW50cnkgdG8gYXZvaWQgZG91YmxlIGNvdW50aW5nIGluIGFuIGFib3J0CisgKiBzaXR1YXRp b24sIGUuZy4gZHVyaW5nIGV4ZWN1dG9yIGZpbmlzaC4KKyAqLwordm9pZAorSW5zdHJGaW5hbGl6 ZUNoaWxkKEluc3RydW1lbnRhdGlvbiAqaW5zdHIsIEluc3RydW1lbnRhdGlvbiAqcGFyZW50KQor eworCWlmIChpbnN0ci0+bmVlZF9zdGFjaykKIAl7Ci0JCWlmIChJTlNUUl9USU1FX0lTX1pFUk8o aW5zdHItPnN0YXJ0dGltZSkpCi0JCQllbG9nKEVSUk9SLCAiSW5zdHJTdG9wIGNhbGxlZCB3aXRo b3V0IHN0YXJ0Iik7CisJCWlmICghZGxpc3Rfbm9kZV9pc19kZXRhY2hlZCgmaW5zdHItPnVuZmlu YWxpemVkX2VudHJ5KSkKKwkJCWRsaXN0X2RlbGV0ZV90aG9yb3VnaGx5KCZpbnN0ci0+dW5maW5h bGl6ZWRfZW50cnkpOwogCi0JCUlOU1RSX1RJTUVfU0VUX0NVUlJFTlQoZW5kdGltZSk7Ci0JCUlO U1RSX1RJTUVfQUNDVU1fRElGRihpbnN0ci0+dG90YWwsIGVuZHRpbWUsIGluc3RyLT5zdGFydHRp bWUpOworCQlJbnN0ckFjY3VtU3RhY2socGFyZW50LCBpbnN0cik7CisJfQorfQorCisKKy8qIFF1 ZXJ5IGluc3RydW1lbnRhdGlvbiBoYW5kbGluZyAqLworCisvKgorICogVXNlIFJlc291cmNlT3du ZXIgbWVjaGFuaXNtIHRvIGNvcnJlY3RseSByZXNldCBpbnN0cl9zdGFjayBvbiBhYm9ydC4KKyAq Lworc3RhdGljIHZvaWQgUmVzT3duZXJSZWxlYXNlSW5zdHJ1bWVudGF0aW9uKERhdHVtIHJlcyk7 CitzdGF0aWMgY29uc3QgUmVzb3VyY2VPd25lckRlc2MgaW5zdHJ1bWVudGF0aW9uX3Jlc293bmVy X2Rlc2MgPQoreworCS5uYW1lID0gImluc3RydW1lbnRhdGlvbiIsCisJLnJlbGVhc2VfcGhhc2Ug PSBSRVNPVVJDRV9SRUxFQVNFX0FGVEVSX0xPQ0tTLAorCS5yZWxlYXNlX3ByaW9yaXR5ID0gUkVM RUFTRV9QUklPX0lOU1RSVU1FTlRBVElPTiwKKwkuUmVsZWFzZVJlc291cmNlID0gUmVzT3duZXJS ZWxlYXNlSW5zdHJ1bWVudGF0aW9uLAorCS5EZWJ1Z1ByaW50ID0gTlVMTCwJCQkvKiBkZWZhdWx0 IG1lc3NhZ2UgaXMgZmluZSAqLworfTsKKworc3RhdGljIGlubGluZSB2b2lkCitSZXNvdXJjZU93 bmVyUmVtZW1iZXJJbnN0cnVtZW50YXRpb24oUmVzb3VyY2VPd25lciBvd25lciwgUXVlcnlJbnN0 cnVtZW50YXRpb24gKnFpbnN0cikKK3sKKwlSZXNvdXJjZU93bmVyUmVtZW1iZXIob3duZXIsIFBv aW50ZXJHZXREYXR1bShxaW5zdHIpLCAmaW5zdHJ1bWVudGF0aW9uX3Jlc293bmVyX2Rlc2MpOwor fQorCitzdGF0aWMgaW5saW5lIHZvaWQKK1Jlc291cmNlT3duZXJGb3JnZXRJbnN0cnVtZW50YXRp b24oUmVzb3VyY2VPd25lciBvd25lciwgUXVlcnlJbnN0cnVtZW50YXRpb24gKnFpbnN0cikKK3sK KwlSZXNvdXJjZU93bmVyRm9yZ2V0KG93bmVyLCBQb2ludGVyR2V0RGF0dW0ocWluc3RyKSwgJmlu c3RydW1lbnRhdGlvbl9yZXNvd25lcl9kZXNjKTsKK30KKworc3RhdGljIHZvaWQKK1Jlc093bmVy UmVsZWFzZUluc3RydW1lbnRhdGlvbihEYXR1bSByZXMpCit7CisJUXVlcnlJbnN0cnVtZW50YXRp b24gKnFpbnN0ciA9IChRdWVyeUluc3RydW1lbnRhdGlvbiAqKSBEYXR1bUdldFBvaW50ZXIocmVz KTsKKwlNZW1vcnlDb250ZXh0IGluc3RyX2N4dCA9IHFpbnN0ci0+aW5zdHJfY3h0OworCWRsaXN0 X211dGFibGVfaXRlciBpdGVyOwogCi0JCUlOU1RSX1RJTUVfU0VUX1pFUk8oaW5zdHItPnN0YXJ0 dGltZSk7CisJLyogQWNjdW11bGF0ZSBkYXRhIGZyb20gYWxsIHVuZmluYWxpemVkIGNoaWxkIGVu dHJpZXMgKG5vZGVzLCB0cmlnZ2VycykgKi8KKwlkbGlzdF9mb3JlYWNoX21vZGlmeShpdGVyLCAm cWluc3RyLT51bmZpbmFsaXplZF9lbnRyaWVzKQorCXsKKwkJSW5zdHJ1bWVudGF0aW9uICpjaGls ZCA9IGRsaXN0X2NvbnRhaW5lcihJbnN0cnVtZW50YXRpb24sIHVuZmluYWxpemVkX2VudHJ5LCBp dGVyLmN1cik7CisKKwkJSW5zdHJBY2N1bVN0YWNrKCZxaW5zdHItPmluc3RyLCBjaGlsZCk7CiAJ fQogCi0JLyogQWRkIGRlbHRhIG9mIGJ1ZmZlciB1c2FnZSBzaW5jZSBlbnRyeSB0byBub2RlJ3Mg dG90YWxzICovCi0JaWYgKGluc3RyLT5uZWVkX2J1ZnVzYWdlKQotCQlCdWZmZXJVc2FnZUFjY3Vt RGlmZigmaW5zdHItPmJ1ZnVzYWdlLAotCQkJCQkJCSAmcGdCdWZmZXJVc2FnZSwgJmluc3RyLT5i dWZ1c2FnZV9zdGFydCk7CisJLyogRW5zdXJlIHRoZSBzdGFjayBpcyByZXNldCBhcyBleHBlY3Rl ZCwgYW5kIHdlIGFjY3VtdWxhdGUgdG8gdGhlIHBhcmVudCAqLworCUluc3RyU3RvcEZpbmFsaXpl KCZxaW5zdHItPmluc3RyKTsKKworCS8qCisJICogRGVzdHJveSB0aGUgZGVkaWNhdGVkIGluc3Ry dW1lbnRhdGlvbiBjb250ZXh0LCB3aGljaCBmcmVlcyB0aGUKKwkgKiBRdWVyeUluc3RydW1lbnRh dGlvbiBhbmQgYWxsIGNoaWxkIGFsbG9jYXRpb25zLgorCSAqLworCU1lbW9yeUNvbnRleHREZWxl dGUoaW5zdHJfY3h0KTsKK30KKworUXVlcnlJbnN0cnVtZW50YXRpb24gKgorSW5zdHJRdWVyeUFs bG9jKGludCBpbnN0cnVtZW50X29wdGlvbnMpCit7CisJUXVlcnlJbnN0cnVtZW50YXRpb24gKmlu c3RyOworCU1lbW9yeUNvbnRleHQgaW5zdHJfY3h0OworCisJLyoKKwkgKiBXaGVuIHRoZSBpbnN0 cnVtZW50YXRpb24gc3RhY2sgaXMgdXNlZCwgY3JlYXRlIGEgZGVkaWNhdGVkIG1lbW9yeQorCSAq IGNvbnRleHQgZm9yIHRoaXMgcXVlcnkncyBpbnN0cnVtZW50YXRpb24gYWxsb2NhdGlvbnMuIFRo aXMgY29udGV4dCBpcyBhCisJICogY2hpbGQgb2YgVG9wTWVtb3J5Q29udGV4dCBzbyBpdCBzdXJ2 aXZlcyB0cmFuc2FjdGlvbiBhYm9ydCDigJQKKwkgKiBSZXNvdXJjZU93bmVyIHJlbGVhc2UgbmVl ZHMgdG8gYWNjZXNzIGl0LgorCSAqCisJICogRm9yIHNpbXBsZXIgY2FzZXMgKHRpbWVyL3Jvd3Mg b25seSksIHVzZSB0aGUgY3VycmVudCBtZW1vcnkgY29udGV4dC4KKwkgKgorCSAqIEFsbCBjaGls ZCBpbnN0cnVtZW50YXRpb24gYWxsb2NhdGlvbnMgKG5vZGVzLCB0cmlnZ2VycywgZXRjKSBtdXN0 IGJlCisJICogYWxsb2NhdGVkIHdpdGhpbiB0aGlzIGNvbnRleHQgdG8gZW5zdXJlIGNvcnJlY3Qg Y2xlYW4gdXAgb24gYWJvcnQuCisJICovCisJaWYgKEluc3RyTmVlZFN0YWNrKGluc3RydW1lbnRf b3B0aW9ucykpCisJCWluc3RyX2N4dCA9IEFsbG9jU2V0Q29udGV4dENyZWF0ZShUb3BNZW1vcnlD b250ZXh0LAorCQkJCQkJCQkJCSAgIkluc3RydW1lbnRhdGlvbiIsCisJCQkJCQkJCQkJICBBTExP Q1NFVF9TTUFMTF9TSVpFUyk7CisJZWxzZQorCQlpbnN0cl9jeHQgPSBDdXJyZW50TWVtb3J5Q29u dGV4dDsKIAotCWlmIChpbnN0ci0+bmVlZF93YWx1c2FnZSkKLQkJV2FsVXNhZ2VBY2N1bURpZmYo Jmluc3RyLT53YWx1c2FnZSwKLQkJCQkJCSAgJnBnV2FsVXNhZ2UsICZpbnN0ci0+d2FsdXNhZ2Vf c3RhcnQpOworCWluc3RyID0gTWVtb3J5Q29udGV4dEFsbG9jWmVybyhpbnN0cl9jeHQsIHNpemVv ZihRdWVyeUluc3RydW1lbnRhdGlvbikpOworCWluc3RyLT5pbnN0cnVtZW50X29wdGlvbnMgPSBp bnN0cnVtZW50X29wdGlvbnM7CisJaW5zdHItPmluc3RyX2N4dCA9IGluc3RyX2N4dDsKKworCUlu c3RySW5pdE9wdGlvbnMoJmluc3RyLT5pbnN0ciwgaW5zdHJ1bWVudF9vcHRpb25zKTsKKwlkbGlz dF9pbml0KCZpbnN0ci0+dW5maW5hbGl6ZWRfZW50cmllcyk7CisKKwlyZXR1cm4gaW5zdHI7Cit9 CisKK3ZvaWQKK0luc3RyUXVlcnlTdGFydChRdWVyeUluc3RydW1lbnRhdGlvbiAqcWluc3RyKQor eworCUluc3RyU3RhcnQoJnFpbnN0ci0+aW5zdHIpOworCisJaWYgKHFpbnN0ci0+aW5zdHIubmVl ZF9zdGFjaykKKwl7CisJCUFzc2VydChDdXJyZW50UmVzb3VyY2VPd25lciAhPSBOVUxMKTsKKwkJ cWluc3RyLT5vd25lciA9IEN1cnJlbnRSZXNvdXJjZU93bmVyOworCisJCVJlc291cmNlT3duZXJF bmxhcmdlKHFpbnN0ci0+b3duZXIpOworCQlSZXNvdXJjZU93bmVyUmVtZW1iZXJJbnN0cnVtZW50 YXRpb24ocWluc3RyLT5vd25lciwgcWluc3RyKTsKKwl9Cit9CisKK3ZvaWQKK0luc3RyUXVlcnlT dG9wKFF1ZXJ5SW5zdHJ1bWVudGF0aW9uICpxaW5zdHIpCit7CisJSW5zdHJTdG9wKCZxaW5zdHIt Pmluc3RyKTsKKworCWlmIChxaW5zdHItPmluc3RyLm5lZWRfc3RhY2spCisJeworCQlBc3NlcnQo cWluc3RyLT5vd25lciAhPSBOVUxMKTsKKwkJUmVzb3VyY2VPd25lckZvcmdldEluc3RydW1lbnRh dGlvbihxaW5zdHItPm93bmVyLCBxaW5zdHIpOworCQlxaW5zdHItPm93bmVyID0gTlVMTDsKKwl9 Cit9CisKK3ZvaWQKK0luc3RyUXVlcnlTdG9wRmluYWxpemUoUXVlcnlJbnN0cnVtZW50YXRpb24g KnFpbnN0cikKK3sKKwlJbnN0clN0b3BGaW5hbGl6ZSgmcWluc3RyLT5pbnN0cik7CisKKwlpZiAo IXFpbnN0ci0+aW5zdHIubmVlZF9zdGFjaykKKwkJcmV0dXJuOworCisJQXNzZXJ0KHFpbnN0ci0+ b3duZXIgIT0gTlVMTCk7CisJUmVzb3VyY2VPd25lckZvcmdldEluc3RydW1lbnRhdGlvbihxaW5z dHItPm93bmVyLCBxaW5zdHIpOworCXFpbnN0ci0+b3duZXIgPSBOVUxMOworCisJLyoKKwkgKiBS ZXBhcmVudCB0aGUgZGVkaWNhdGVkIGluc3RydW1lbnRhdGlvbiBjb250ZXh0IHVuZGVyIHRoZSBj dXJyZW50IG1lbW9yeQorCSAqIGNvbnRleHQsIHNvIHRoYXQgaXRzIGxpZmV0aW1lIGlzIG5vdyB0 aWVkIHRvIHRoZSBjYWxsZXIncyBjb250ZXh0CisJICogcmF0aGVyIHRoYW4gVG9wTWVtb3J5Q29u dGV4dC4KKwkgKi8KKwlNZW1vcnlDb250ZXh0U2V0UGFyZW50KHFpbnN0ci0+aW5zdHJfY3h0LCBD dXJyZW50TWVtb3J5Q29udGV4dCk7Cit9CisKKy8qCisgKiBSZWdpc3RlciBhIGNoaWxkIEluc3Ry dW1lbnRhdGlvbiBlbnRyeSBmb3IgYWJvcnQgcHJvY2Vzc2luZy4KKyAqCisgKiBPbiBhYm9ydCwg UmVzT3duZXJSZWxlYXNlSW5zdHJ1bWVudGF0aW9uIHdpbGwgd2FsayB0aGUgcGFyZW50J3MgbGlz dCB0bworICogcmVjb3ZlciBidWZmZXIvV0FMIGRhdGEgZnJvbSBlbnRyaWVzIHRoYXQgd2VyZSBu ZXZlciBmaW5hbGl6ZWQsIGluIG9yZGVyIGZvcgorICogYWdncmVnYXRlIHRvdGFscyB0byBiZSBh Y2N1cmF0ZSBkZXNwaXRlIHRoZSBxdWVyeSBlcnJvcmluZyBvdXQuCisgKi8KK3ZvaWQKK0luc3Ry UXVlcnlSZW1lbWJlckNoaWxkKFF1ZXJ5SW5zdHJ1bWVudGF0aW9uICpwYXJlbnQsIEluc3RydW1l bnRhdGlvbiAqY2hpbGQpCit7CisJaWYgKGNoaWxkLT5uZWVkX3N0YWNrKQorCQlkbGlzdF9wdXNo X2hlYWQoJnBhcmVudC0+dW5maW5hbGl6ZWRfZW50cmllcywgJmNoaWxkLT51bmZpbmFsaXplZF9l bnRyeSk7Cit9CisKKy8qIHN0YXJ0IGluc3RydW1lbnRhdGlvbiBkdXJpbmcgcGFyYWxsZWwgZXhl Y3V0b3Igc3RhcnR1cCAqLworUXVlcnlJbnN0cnVtZW50YXRpb24gKgorSW5zdHJTdGFydFBhcmFs bGVsUXVlcnkodm9pZCkKK3sKKwlRdWVyeUluc3RydW1lbnRhdGlvbiAqcWluc3RyID0gSW5zdHJR dWVyeUFsbG9jKElOU1RSVU1FTlRfQlVGRkVSUyB8IElOU1RSVU1FTlRfV0FMKTsKKworCUluc3Ry UXVlcnlTdGFydChxaW5zdHIpOworCXJldHVybiBxaW5zdHI7Cit9CisKKy8qIHJlcG9ydCB1c2Fn ZSBhZnRlciBwYXJhbGxlbCBleGVjdXRvciBzaHV0ZG93biAqLwordm9pZAorSW5zdHJFbmRQYXJh bGxlbFF1ZXJ5KFF1ZXJ5SW5zdHJ1bWVudGF0aW9uICpxaW5zdHIsIEJ1ZmZlclVzYWdlICpidWZ1 c2FnZSwgV2FsVXNhZ2UgKndhbHVzYWdlKQoreworCUluc3RyUXVlcnlTdG9wRmluYWxpemUocWlu c3RyKTsKKwltZW1jcHkoYnVmdXNhZ2UsICZxaW5zdHItPmluc3RyLmJ1ZnVzYWdlLCBzaXplb2Yo QnVmZmVyVXNhZ2UpKTsKKwltZW1jcHkod2FsdXNhZ2UsICZxaW5zdHItPmluc3RyLndhbHVzYWdl LCBzaXplb2YoV2FsVXNhZ2UpKTsKK30KKworLyoKKyAqIEFjY3VtdWxhdGUgd29yayBkb25lIGJ5 IHBhcmFsbGVsIHdvcmtlcnMgaW4gdGhlIGxlYWRlcidzIHN0YXRzLgorICoKKyAqIE5vdGUgdGhh dCB3aGF0IGdldHMgYWRkZWQgaGVyZSBlZmZlY3RpdmVseSBkZXBlbmRzIG9uIHdoZXRoZXIgcGVy LW5vZGUKKyAqIGluc3RydW1lbnRhdGlvbiBpcyBhY3RpdmUuIElmIGl0J3MgYWN0aXZlIHRoZSBw YXJhbGxlbCB3b3JrZXIgaW50ZW50aW9uYWxseQorICogc2tpcHMgRXhlY0ZpbmFsaXplTm9kZUlu c3RydW1lbnRhdGlvbiBvbiBleGVjdXRvciBzaHV0ZG93biwgYmVjYXVzZSBpdCB3b3VsZAorICog Y2F1c2UgZG91YmxlIGNvdW50aW5nLiBJbnN0ZWFkLCB0aGlzIG9ubHkgYWNjdW11bGF0ZXMgYW55 IGV4dHJhIGFjdGl2aXR5CisgKiBvdXRzaWRlIG9mIG5vZGVzLgorICoKKyAqIE90aGVyd2lzZSB0 aGlzIGlzIHJlc3BvbnNpYmxlIGZvciBtYWtpbmcgc3VyZSB0aGF0IHRoZSBjb21wbGV0ZSBxdWVy eQorICogYWN0aXZpdHkgaXMgYWNjdW11bGF0ZWQuCisgKi8KK3ZvaWQKK0luc3RyQWNjdW1QYXJh bGxlbFF1ZXJ5KEJ1ZmZlclVzYWdlICpidWZ1c2FnZSwgV2FsVXNhZ2UgKndhbHVzYWdlKQorewor CUJ1ZmZlclVzYWdlQWRkKCZpbnN0cl9zdGFjay5jdXJyZW50LT5idWZ1c2FnZSwgYnVmdXNhZ2Up OworCVdhbFVzYWdlQWRkKCZpbnN0cl9zdGFjay5jdXJyZW50LT53YWx1c2FnZSwgd2FsdXNhZ2Up OworCisJV2FsVXNhZ2VBZGQoJnBnV2FsVXNhZ2UsIHdhbHVzYWdlKTsKIH0KIAogLyogTm9kZSBp bnN0cnVtZW50YXRpb24gaGFuZGxpbmcgKi8KIAogLyogQWxsb2NhdGUgbmV3IG5vZGUgaW5zdHJ1 bWVudGF0aW9uIHN0cnVjdHVyZSAqLwogTm9kZUluc3RydW1lbnRhdGlvbiAqCi1JbnN0ckFsbG9j Tm9kZShpbnQgaW5zdHJ1bWVudF9vcHRpb25zLCBib29sIGFzeW5jX21vZGUpCitJbnN0ckFsbG9j Tm9kZShRdWVyeUluc3RydW1lbnRhdGlvbiAqcWluc3RyLCBib29sIGFzeW5jX21vZGUpCiB7Ci0J Tm9kZUluc3RydW1lbnRhdGlvbiAqaW5zdHIgPSBwYWxsb2Moc2l6ZW9mKE5vZGVJbnN0cnVtZW50 YXRpb24pKTsKKwlOb2RlSW5zdHJ1bWVudGF0aW9uICppbnN0ciA9IE1lbW9yeUNvbnRleHRBbGxv YyhxaW5zdHItPmluc3RyX2N4dCwgc2l6ZW9mKE5vZGVJbnN0cnVtZW50YXRpb24pKTsKIAotCUlu c3RySW5pdE5vZGUoaW5zdHIsIGluc3RydW1lbnRfb3B0aW9ucyk7CisJSW5zdHJJbml0Tm9kZShp bnN0ciwgcWluc3RyLT5pbnN0cnVtZW50X29wdGlvbnMpOwogCWluc3RyLT5hc3luY19tb2RlID0g YXN5bmNfbW9kZTsKIAogCXJldHVybiBpbnN0cjsKQEAgLTExOCw2ICszNzksNyBAQCBJbnN0clN0 YXJ0Tm9kZShOb2RlSW5zdHJ1bWVudGF0aW9uICppbnN0cikKIAlJbnN0clN0YXJ0KCZpbnN0ci0+ aW5zdHIpOwogfQogCisKIC8qIEV4aXQgZnJvbSBhIHBsYW4gbm9kZSAqLwogdm9pZAogSW5zdHJT dG9wTm9kZShOb2RlSW5zdHJ1bWVudGF0aW9uICppbnN0ciwgZG91YmxlIG5UdXBsZXMpCkBAIC0x NDcsMTQgKzQwOSwxMiBAQCBJbnN0clN0b3BOb2RlKE5vZGVJbnN0cnVtZW50YXRpb24gKmluc3Ry LCBkb3VibGUgblR1cGxlcykKIAkJSU5TVFJfVElNRV9TRVRfWkVSTyhpbnN0ci0+aW5zdHIuc3Rh cnR0aW1lKTsKIAl9CiAKLQkvKiBBZGQgZGVsdGEgb2YgYnVmZmVyIHVzYWdlIHNpbmNlIGVudHJ5 IHRvIG5vZGUncyB0b3RhbHMgKi8KLQlpZiAoaW5zdHItPmluc3RyLm5lZWRfYnVmdXNhZ2UpCi0J CUJ1ZmZlclVzYWdlQWNjdW1EaWZmKCZpbnN0ci0+aW5zdHIuYnVmdXNhZ2UsCi0JCQkJCQkJICZw Z0J1ZmZlclVzYWdlLCAmaW5zdHItPmluc3RyLmJ1ZnVzYWdlX3N0YXJ0KTsKLQotCWlmIChpbnN0 ci0+aW5zdHIubmVlZF93YWx1c2FnZSkKLQkJV2FsVXNhZ2VBY2N1bURpZmYoJmluc3RyLT5pbnN0 ci53YWx1c2FnZSwKLQkJCQkJCSAgJnBnV2FsVXNhZ2UsICZpbnN0ci0+aW5zdHIud2FsdXNhZ2Vf c3RhcnQpOworCS8qCisJICogT25seSBwb3AgdGhlIHN0YWNrLCBhY2N1bXVsYXRpb24gcnVucyBp bgorCSAqIEV4ZWNGaW5hbGl6ZU5vZGVJbnN0cnVtZW50YXRpb24KKwkgKi8KKwlpZiAoaW5zdHIt Pmluc3RyLm5lZWRfc3RhY2spCisJCUluc3RyUG9wU3RhY2soJmluc3RyLT5pbnN0cik7CiAKIAkv KiBJcyB0aGlzIHRoZSBmaXJzdCB0dXBsZSBvZiB0aGlzIGN5Y2xlPyAqLwogCWlmICghaW5zdHIt PnJ1bm5pbmcpCkBAIC0xODksOCArNDQ5LDggQEAgSW5zdHJFbmRMb29wKE5vZGVJbnN0cnVtZW50 YXRpb24gKmluc3RyKQogCWlmICghaW5zdHItPnJ1bm5pbmcpCiAJCXJldHVybjsKIAotCWlmICgh SU5TVFJfVElNRV9JU19aRVJPKGluc3RyLT5pbnN0ci5zdGFydHRpbWUpKQotCQllbG9nKEVSUk9S LCAiSW5zdHJFbmRMb29wIGNhbGxlZCBvbiBydW5uaW5nIG5vZGUiKTsKKwkvKiBFbnN1cmUgSW5z dHJOb2RlU3RvcCB3YXMgY2FsbGVkICovCisJQXNzZXJ0KElOU1RSX1RJTUVfSVNfWkVSTyhpbnN0 ci0+aW5zdHIuc3RhcnR0aW1lKSk7CiAKIAkvKiBBY2N1bXVsYXRlIHBlci1jeWNsZSBzdGF0aXN0 aWNzIGludG8gdG90YWxzICovCiAJSU5TVFJfVElNRV9BREQoaW5zdHItPnN0YXJ0dXAsIGluc3Ry LT5maXJzdHR1cGxlKTsKQEAgLTIzMSw2NyArNDkxLDczIEBAIEluc3RyQWdnTm9kZShOb2RlSW5z dHJ1bWVudGF0aW9uICpkc3QsIE5vZGVJbnN0cnVtZW50YXRpb24gKmFkZCkKIAlkc3QtPm5maWx0 ZXJlZDIgKz0gYWRkLT5uZmlsdGVyZWQyOwogCiAJLyogQWRkIGRlbHRhIG9mIGJ1ZmZlciB1c2Fn ZSBzaW5jZSBlbnRyeSB0byBub2RlJ3MgdG90YWxzICovCi0JaWYgKGRzdC0+aW5zdHIubmVlZF9i dWZ1c2FnZSkKLQkJQnVmZmVyVXNhZ2VBZGQoJmRzdC0+aW5zdHIuYnVmdXNhZ2UsICZhZGQtPmlu c3RyLmJ1ZnVzYWdlKTsKLQotCWlmIChkc3QtPmluc3RyLm5lZWRfd2FsdXNhZ2UpCi0JCVdhbFVz YWdlQWRkKCZkc3QtPmluc3RyLndhbHVzYWdlLCAmYWRkLT5pbnN0ci53YWx1c2FnZSk7CisJaWYg KGRzdC0+aW5zdHIubmVlZF9zdGFjaykKKwkJSW5zdHJBY2N1bVN0YWNrKCZkc3QtPmluc3RyLCAm YWRkLT5pbnN0cik7CiB9CiAKIC8qIFRyaWdnZXIgaW5zdHJ1bWVudGF0aW9uIGhhbmRsaW5nICov CiBUcmlnZ2VySW5zdHJ1bWVudGF0aW9uICoKLUluc3RyQWxsb2NUcmlnZ2VyKGludCBuLCBpbnQg aW5zdHJ1bWVudF9vcHRpb25zKQorSW5zdHJBbGxvY1RyaWdnZXIoUXVlcnlJbnN0cnVtZW50YXRp b24gKnFpbnN0ciwgaW50IG4pCiB7Ci0JVHJpZ2dlckluc3RydW1lbnRhdGlvbiAqdGdpbnN0ciA9 IHBhbGxvYzAobiAqIHNpemVvZihUcmlnZ2VySW5zdHJ1bWVudGF0aW9uKSk7CisJVHJpZ2dlcklu c3RydW1lbnRhdGlvbiAqdGdpbnN0cjsKIAlpbnQJCQlpOwogCisJLyoKKwkgKiBBbGxvY2F0ZSBp biB0aGUgcXVlcnkncyBkZWRpY2F0ZWQgaW5zdHJ1bWVudGF0aW9uIGNvbnRleHQgc28gYWxsCisJ ICogaW5zdHJ1bWVudGF0aW9uIGRhdGEgaXMgZ3JvdXBlZCB0b2dldGhlciBhbmQgY2xlYW5lZCB1 cCBhcyBhIHVuaXQuCisJICovCisJQXNzZXJ0KHFpbnN0ciAhPSBOVUxMICYmIHFpbnN0ci0+aW5z dHJfY3h0ICE9IE5VTEwpOworCXRnaW5zdHIgPSBNZW1vcnlDb250ZXh0QWxsb2NaZXJvKHFpbnN0 ci0+aW5zdHJfY3h0LAorCQkJCQkJCQkJIG4gKiBzaXplb2YoVHJpZ2dlckluc3RydW1lbnRhdGlv bikpOworCiAJZm9yIChpID0gMDsgaSA8IG47IGkrKykKLQkJSW5zdHJJbml0T3B0aW9ucygmdGdp bnN0cltpXS5pbnN0ciwgaW5zdHJ1bWVudF9vcHRpb25zKTsKKwkJSW5zdHJJbml0T3B0aW9ucygm dGdpbnN0cltpXS5pbnN0ciwgcWluc3RyLT5pbnN0cnVtZW50X29wdGlvbnMpOwogCiAJcmV0dXJu IHRnaW5zdHI7CiB9CiAKIHZvaWQKLUluc3RyU3RhcnRUcmlnZ2VyKFRyaWdnZXJJbnN0cnVtZW50 YXRpb24gKnRnaW5zdHIpCitJbnN0clN0YXJ0VHJpZ2dlcihRdWVyeUluc3RydW1lbnRhdGlvbiAq cWluc3RyLCBUcmlnZ2VySW5zdHJ1bWVudGF0aW9uICp0Z2luc3RyKQogewogCUluc3RyU3RhcnQo JnRnaW5zdHItPmluc3RyKTsKKworCS8qCisJICogT24gZmlyc3QgY2FsbCwgcmVnaXN0ZXIgd2l0 aCB0aGUgcGFyZW50IFF1ZXJ5SW5zdHJ1bWVudGF0aW9uIGZvciBhYm9ydAorCSAqIHJlY292ZXJ5 LgorCSAqLworCWlmIChxaW5zdHIgJiYgdGdpbnN0ci0+aW5zdHIubmVlZF9zdGFjayAmJgorCQlk bGlzdF9ub2RlX2lzX2RldGFjaGVkKCZ0Z2luc3RyLT5pbnN0ci51bmZpbmFsaXplZF9lbnRyeSkp CisJCWRsaXN0X3B1c2hfaGVhZCgmcWluc3RyLT51bmZpbmFsaXplZF9lbnRyaWVzLAorCQkJCQkJ JnRnaW5zdHItPmluc3RyLnVuZmluYWxpemVkX2VudHJ5KTsKIH0KIAogdm9pZAogSW5zdHJTdG9w VHJpZ2dlcihUcmlnZ2VySW5zdHJ1bWVudGF0aW9uICp0Z2luc3RyLCBpbnQgZmlyaW5ncykKIHsK KwkvKgorCSAqIFRoaXMgdHJpZ2dlciBtYXkgYmUgY2FsbGVkIGFnYWluLCBzbyB3ZSBkb24ndCBm aW5hbGl6ZSBpbnN0cnVtZW50YXRpb24KKwkgKiBoZXJlLiBBY2N1bXVsYXRpb24gdG8gdGhlIHBh cmVudCBoYXBwZW5zIGF0IEV4ZWN1dG9yRmluaXNoIHRocm91Z2gKKwkgKiBFeGVjRmluYWxpemVU cmlnZ2VySW5zdHJ1bWVudGF0aW9uLgorCSAqLwogCUluc3RyU3RvcCgmdGdpbnN0ci0+aW5zdHIp OwogCXRnaW5zdHItPmZpcmluZ3MgKz0gZmlyaW5nczsKIH0KIAotLyogbm90ZSBjdXJyZW50IHZh bHVlcyBkdXJpbmcgcGFyYWxsZWwgZXhlY3V0b3Igc3RhcnR1cCAqLwogdm9pZAotSW5zdHJTdGFy dFBhcmFsbGVsUXVlcnkodm9pZCkKK0luc3RyQWNjdW1TdGFjayhJbnN0cnVtZW50YXRpb24gKmRz dCwgSW5zdHJ1bWVudGF0aW9uICphZGQpCiB7Ci0Jc2F2ZV9wZ0J1ZmZlclVzYWdlID0gcGdCdWZm ZXJVc2FnZTsKLQlzYXZlX3BnV2FsVXNhZ2UgPSBwZ1dhbFVzYWdlOwotfQorCUFzc2VydChkc3Qg IT0gTlVMTCk7CisJQXNzZXJ0KGFkZCAhPSBOVUxMKTsKIAotLyogcmVwb3J0IHVzYWdlIGFmdGVy IHBhcmFsbGVsIGV4ZWN1dG9yIHNodXRkb3duICovCi12b2lkCi1JbnN0ckVuZFBhcmFsbGVsUXVl cnkoQnVmZmVyVXNhZ2UgKmJ1ZnVzYWdlLCBXYWxVc2FnZSAqd2FsdXNhZ2UpCi17Ci0JbWVtc2V0 KGJ1ZnVzYWdlLCAwLCBzaXplb2YoQnVmZmVyVXNhZ2UpKTsKLQlCdWZmZXJVc2FnZUFjY3VtRGlm ZihidWZ1c2FnZSwgJnBnQnVmZmVyVXNhZ2UsICZzYXZlX3BnQnVmZmVyVXNhZ2UpOwotCW1lbXNl dCh3YWx1c2FnZSwgMCwgc2l6ZW9mKFdhbFVzYWdlKSk7Ci0JV2FsVXNhZ2VBY2N1bURpZmYod2Fs dXNhZ2UsICZwZ1dhbFVzYWdlLCAmc2F2ZV9wZ1dhbFVzYWdlKTsKLX0KKwlpZiAoIWFkZC0+bmVl ZF9zdGFjaykKKwkJcmV0dXJuOwogCi0vKiBhY2N1bXVsYXRlIHdvcmsgZG9uZSBieSB3b3JrZXJz IGluIGxlYWRlcidzIHN0YXRzICovCi12b2lkCi1JbnN0ckFjY3VtUGFyYWxsZWxRdWVyeShCdWZm ZXJVc2FnZSAqYnVmdXNhZ2UsIFdhbFVzYWdlICp3YWx1c2FnZSkKLXsKLQlCdWZmZXJVc2FnZUFk ZCgmcGdCdWZmZXJVc2FnZSwgYnVmdXNhZ2UpOwotCVdhbFVzYWdlQWRkKCZwZ1dhbFVzYWdlLCB3 YWx1c2FnZSk7CisJQnVmZmVyVXNhZ2VBZGQoJmRzdC0+YnVmdXNhZ2UsICZhZGQtPmJ1ZnVzYWdl KTsKKwlXYWxVc2FnZUFkZCgmZHN0LT53YWx1c2FnZSwgJmFkZC0+d2FsdXNhZ2UpOwogfQogCiAv KiBkc3QgKz0gYWRkICovCi1zdGF0aWMgdm9pZAordm9pZAogQnVmZmVyVXNhZ2VBZGQoQnVmZmVy VXNhZ2UgKmRzdCwgY29uc3QgQnVmZmVyVXNhZ2UgKmFkZCkKIHsKIAlkc3QtPnNoYXJlZF9ibGtz X2hpdCArPSBhZGQtPnNoYXJlZF9ibGtzX2hpdDsKQEAgLTMxMiwzOSArNTc4LDkgQEAgQnVmZmVy VXNhZ2VBZGQoQnVmZmVyVXNhZ2UgKmRzdCwgY29uc3QgQnVmZmVyVXNhZ2UgKmFkZCkKIAlJTlNU Ul9USU1FX0FERChkc3QtPnRlbXBfYmxrX3dyaXRlX3RpbWUsIGFkZC0+dGVtcF9ibGtfd3JpdGVf dGltZSk7CiB9CiAKLS8qIGRzdCArPSBhZGQgLSBzdWIgKi8KKy8qIGRzdCArPSBhZGQgKi8KIHZv aWQKLUJ1ZmZlclVzYWdlQWNjdW1EaWZmKEJ1ZmZlclVzYWdlICpkc3QsCi0JCQkJCSBjb25zdCBC dWZmZXJVc2FnZSAqYWRkLAotCQkJCQkgY29uc3QgQnVmZmVyVXNhZ2UgKnN1YikKLXsKLQlkc3Qt PnNoYXJlZF9ibGtzX2hpdCArPSBhZGQtPnNoYXJlZF9ibGtzX2hpdCAtIHN1Yi0+c2hhcmVkX2Js a3NfaGl0OwotCWRzdC0+c2hhcmVkX2Jsa3NfcmVhZCArPSBhZGQtPnNoYXJlZF9ibGtzX3JlYWQg LSBzdWItPnNoYXJlZF9ibGtzX3JlYWQ7Ci0JZHN0LT5zaGFyZWRfYmxrc19kaXJ0aWVkICs9IGFk ZC0+c2hhcmVkX2Jsa3NfZGlydGllZCAtIHN1Yi0+c2hhcmVkX2Jsa3NfZGlydGllZDsKLQlkc3Qt PnNoYXJlZF9ibGtzX3dyaXR0ZW4gKz0gYWRkLT5zaGFyZWRfYmxrc193cml0dGVuIC0gc3ViLT5z aGFyZWRfYmxrc193cml0dGVuOwotCWRzdC0+bG9jYWxfYmxrc19oaXQgKz0gYWRkLT5sb2NhbF9i bGtzX2hpdCAtIHN1Yi0+bG9jYWxfYmxrc19oaXQ7Ci0JZHN0LT5sb2NhbF9ibGtzX3JlYWQgKz0g YWRkLT5sb2NhbF9ibGtzX3JlYWQgLSBzdWItPmxvY2FsX2Jsa3NfcmVhZDsKLQlkc3QtPmxvY2Fs X2Jsa3NfZGlydGllZCArPSBhZGQtPmxvY2FsX2Jsa3NfZGlydGllZCAtIHN1Yi0+bG9jYWxfYmxr c19kaXJ0aWVkOwotCWRzdC0+bG9jYWxfYmxrc193cml0dGVuICs9IGFkZC0+bG9jYWxfYmxrc193 cml0dGVuIC0gc3ViLT5sb2NhbF9ibGtzX3dyaXR0ZW47Ci0JZHN0LT50ZW1wX2Jsa3NfcmVhZCAr PSBhZGQtPnRlbXBfYmxrc19yZWFkIC0gc3ViLT50ZW1wX2Jsa3NfcmVhZDsKLQlkc3QtPnRlbXBf Ymxrc193cml0dGVuICs9IGFkZC0+dGVtcF9ibGtzX3dyaXR0ZW4gLSBzdWItPnRlbXBfYmxrc193 cml0dGVuOwotCUlOU1RSX1RJTUVfQUNDVU1fRElGRihkc3QtPnNoYXJlZF9ibGtfcmVhZF90aW1l LAotCQkJCQkJICBhZGQtPnNoYXJlZF9ibGtfcmVhZF90aW1lLCBzdWItPnNoYXJlZF9ibGtfcmVh ZF90aW1lKTsKLQlJTlNUUl9USU1FX0FDQ1VNX0RJRkYoZHN0LT5zaGFyZWRfYmxrX3dyaXRlX3Rp bWUsCi0JCQkJCQkgIGFkZC0+c2hhcmVkX2Jsa193cml0ZV90aW1lLCBzdWItPnNoYXJlZF9ibGtf d3JpdGVfdGltZSk7Ci0JSU5TVFJfVElNRV9BQ0NVTV9ESUZGKGRzdC0+bG9jYWxfYmxrX3JlYWRf dGltZSwKLQkJCQkJCSAgYWRkLT5sb2NhbF9ibGtfcmVhZF90aW1lLCBzdWItPmxvY2FsX2Jsa19y ZWFkX3RpbWUpOwotCUlOU1RSX1RJTUVfQUNDVU1fRElGRihkc3QtPmxvY2FsX2Jsa193cml0ZV90 aW1lLAotCQkJCQkJICBhZGQtPmxvY2FsX2Jsa193cml0ZV90aW1lLCBzdWItPmxvY2FsX2Jsa193 cml0ZV90aW1lKTsKLQlJTlNUUl9USU1FX0FDQ1VNX0RJRkYoZHN0LT50ZW1wX2Jsa19yZWFkX3Rp bWUsCi0JCQkJCQkgIGFkZC0+dGVtcF9ibGtfcmVhZF90aW1lLCBzdWItPnRlbXBfYmxrX3JlYWRf dGltZSk7Ci0JSU5TVFJfVElNRV9BQ0NVTV9ESUZGKGRzdC0+dGVtcF9ibGtfd3JpdGVfdGltZSwK LQkJCQkJCSAgYWRkLT50ZW1wX2Jsa193cml0ZV90aW1lLCBzdWItPnRlbXBfYmxrX3dyaXRlX3Rp bWUpOwotfQotCi0vKiBoZWxwZXIgZnVuY3Rpb25zIGZvciBXQUwgdXNhZ2UgYWNjdW11bGF0aW9u ICovCi1zdGF0aWMgdm9pZAotV2FsVXNhZ2VBZGQoV2FsVXNhZ2UgKmRzdCwgV2FsVXNhZ2UgKmFk ZCkKK1dhbFVzYWdlQWRkKFdhbFVzYWdlICpkc3QsIGNvbnN0IFdhbFVzYWdlICphZGQpCiB7CiAJ ZHN0LT53YWxfYnl0ZXMgKz0gYWRkLT53YWxfYnl0ZXM7CiAJZHN0LT53YWxfcmVjb3JkcyArPSBh ZGQtPndhbF9yZWNvcmRzOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC93b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMK aW5kZXggMjdkMzk4ZDU3NmQuLjRmN2YwOTdiZTJmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvd29ya2VyLmMKQEAgLTkwMyw3ICs5MDMsNyBAQCBjcmVhdGVfZWRhdGFfZm9yX3Jl bGF0aW9uKExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqcmVsKQogCSAqIFVzZSBSZWxhdGlvbiBvcGVu ZWQgYnkgbG9naWNhbHJlcF9yZWxfb3BlbigpIGluc3RlYWQgb2Ygb3BlbmluZyBpdAogCSAqIGFn YWluLgogCSAqLwotCUluaXRSZXN1bHRSZWxJbmZvKHJlc3VsdFJlbEluZm8sIHJlbC0+bG9jYWxy ZWwsIDEsIE5VTEwsIDApOworCUluaXRSZXN1bHRSZWxJbmZvKHJlc3VsdFJlbEluZm8sIHJlbC0+ bG9jYWxyZWwsIDEsIE5VTEwsIE5VTEwpOwogCiAJLyoKIAkgKiBXZSBwdXQgdGhlIFJlc3VsdFJl bEluZm8gaW4gdGhlIGVzX29wZW5lZF9yZXN1bHRfcmVsYXRpb25zIGxpc3QsIGV2ZW4KZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1nci5jIGIvc3JjL2JhY2tlbmQv c3RvcmFnZS9idWZmZXIvYnVmbWdyLmMKaW5kZXggY2UxYWY0YWQ1NjMuLjBhNjIzYjY4OTk2IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZtZ3IuYworKysgYi9zcmMv YmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZtZ3IuYwpAQCAtMTI1OSw5ICsxMjU5LDkgQEAgUGlu QnVmZmVyRm9yQmxvY2soUmVsYXRpb24gcmVsLAogCWlmIChyZWwpCiAJewogCQkvKgotCQkgKiBX aGlsZSBwZ0J1ZmZlclVzYWdlJ3MgInJlYWQiIGNvdW50ZXIgaXNuJ3QgYnVtcGVkIHVubGVzcyB3 ZSByZWFjaAotCQkgKiBXYWl0UmVhZEJ1ZmZlcnMoKSAoc28sIG5vdCBmb3IgaGl0cywgYW5kIG5v dCBmb3IgYnVmZmVycyB0aGF0IGFyZQotCQkgKiB6ZXJvZWQgaW5zdGVhZCksIHRoZSBwZXItcmVs YXRpb24gc3RhdHMgYWx3YXlzIGNvdW50IHRoZW0uCisJCSAqIFdoaWxlIHRoZSBjdXJyZW50IGJ1 ZmZlciB1c2FnZSAicmVhZCIgY291bnRlciBpc24ndCBidW1wZWQgdW5sZXNzCisJCSAqIHdlIHJl YWNoIFdhaXRSZWFkQnVmZmVycygpIChzbywgbm90IGZvciBoaXRzLCBhbmQgbm90IGZvciBidWZm ZXJzCisJCSAqIHRoYXQgYXJlIHplcm9lZCBpbnN0ZWFkKSwgdGhlIHBlci1yZWxhdGlvbiBzdGF0 cyBhbHdheXMgY291bnQgdGhlbS4KIAkJICovCiAJCXBnc3RhdF9jb3VudF9idWZmZXJfcmVhZChy ZWwpOwogCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9p by5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X2lvLmMKaW5kZXggOWU3YTg4 ZWMwZDAuLjYwNDAwZjBjODFmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0 eS9wZ3N0YXRfaW8uYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0YXRfaW8u YwpAQCAtMTE0LDkgKzExNCw5IEBAIHBnc3RhdF9wcmVwYXJlX2lvX3RpbWUoYm9vbCB0cmFja19p b19ndWMpCiAgKiBwZ19zdGF0X2RhdGFiYXNlIG9ubHkgY291bnRzIGJsb2NrIHJlYWQgYW5kIHdy aXRlIHRpbWVzLCB0aGVzZSBhcmUgZG9uZSBmb3IKICAqIElPT1BfUkVBRCwgSU9PUF9XUklURSBh bmQgSU9PUF9FWFRFTkQuCiAgKgotICogcGdCdWZmZXJVc2FnZSBpcyB1c2VkIGZvciBFWFBMQUlO LiAgcGdCdWZmZXJVc2FnZSBoYXMgd3JpdGUgYW5kIHJlYWQgc3RhdHMKLSAqIGZvciBzaGFyZWQs IGxvY2FsIGFuZCB0ZW1wb3JhcnkgYmxvY2tzLiAgcGdfc3RhdF9pbyBkb2VzIG5vdCB0cmFjayB0 aGUKLSAqIGFjdGl2aXR5IG9mIHRlbXBvcmFyeSBibG9ja3MsIHNvIHRoZXNlIGFyZSBpZ25vcmVk IGhlcmUuCisgKiBFeGVjdXRvciBpbnN0cnVtZW50YXRpb24gaXMgdXNlZCBmb3IgRVhQTEFJTi4g QnVmZmVyIHVzYWdlIHRyYWNrZWQgdGhlcmUgaGFzCisgKiB3cml0ZSBhbmQgcmVhZCBzdGF0cyBm b3Igc2hhcmVkLCBsb2NhbCBhbmQgdGVtcG9yYXJ5IGJsb2Nrcy4gcGdfc3RhdF9pbworICogZG9l cyBub3QgdHJhY2sgdGhlIGFjdGl2aXR5IG9mIHRlbXBvcmFyeSBibG9ja3MsIHNvIHRoZXNlIGFy ZSBpZ25vcmVkIGhlcmUuCiAgKi8KIHZvaWQKIHBnc3RhdF9jb3VudF9pb19vcF90aW1lKElPT2Jq ZWN0IGlvX29iamVjdCwgSU9Db250ZXh0IGlvX2NvbnRleHQsIElPT3AgaW9fb3AsCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9leHBsYWluX2RyLmggYi9zcmMvaW5jbHVkZS9jb21t YW5kcy9leHBsYWluX2RyLmgKaW5kZXggZjk4ZWFhZTE4NjQuLmZhOThkMjk1ODlmIDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9leHBsYWluX2RyLmgKKysrIGIvc3JjL2luY2x1ZGUv Y29tbWFuZHMvZXhwbGFpbl9kci5oCkBAIC0yMywxMSArMjMsMTAgQEAgdHlwZWRlZiBzdHJ1Y3Qg RXhwbGFpblN0YXRlIEV4cGxhaW5TdGF0ZTsKIHR5cGVkZWYgc3RydWN0IFNlcmlhbGl6ZU1ldHJp Y3MKIHsKIAl1aW50NjQJCWJ5dGVzU2VudDsJCS8qICMgb2YgYnl0ZXMgc2VyaWFsaXplZCAqLwot CWluc3RyX3RpbWUJdGltZVNwZW50OwkJLyogdGltZSBzcGVudCBzZXJpYWxpemluZyAqLwotCUJ1 ZmZlclVzYWdlIGJ1ZmZlclVzYWdlOwkvKiBidWZmZXJzIGFjY2Vzc2VkIGR1cmluZyBzZXJpYWxp emF0aW9uICovCisJSW5zdHJ1bWVudGF0aW9uIGluc3RyOwkJLyogcGVyLXR1cGxlIHRpbWluZy9i dWZmZXIgbWVhc3VyZW1lbnQgKi8KIH0gU2VyaWFsaXplTWV0cmljczsKIAogZXh0ZXJuIERlc3RS ZWNlaXZlciAqQ3JlYXRlRXhwbGFpblNlcmlhbGl6ZURlc3RSZWNlaXZlcihFeHBsYWluU3RhdGUg KmVzKTsKLWV4dGVybiBTZXJpYWxpemVNZXRyaWNzIEdldFNlcmlhbGl6YXRpb25NZXRyaWNzKERl c3RSZWNlaXZlciAqZGVzdCk7CitleHRlcm4gU2VyaWFsaXplTWV0cmljcyAqR2V0U2VyaWFsaXph dGlvbk1ldHJpY3MoRGVzdFJlY2VpdmVyICpkZXN0KTsKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9leGVjdXRvci9leGVjZGVzYy5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhl Y2Rlc2MuaAppbmRleCBkM2E1NzI0Mjg0NC4uMzQwMDI5YTIwMzQgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL2V4ZWN1dG9yL2V4ZWNkZXNjLmgKKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhl Y2Rlc2MuaApAQCAtNTEsOCArNTEsOCBAQCB0eXBlZGVmIHN0cnVjdCBRdWVyeURlc2MKIAkvKiBU aGlzIGZpZWxkIGlzIHNldCBieSBFeGVjdXRlUGxhbiAqLwogCWJvb2wJCWFscmVhZHlfZXhlY3V0 ZWQ7CS8qIHRydWUgaWYgcHJldmlvdXNseSBleGVjdXRlZCAqLwogCi0JLyogVGhpcyBpcyBhbHdh eXMgc2V0IE5VTEwgYnkgdGhlIGNvcmUgc3lzdGVtLCBidXQgcGx1Z2lucyBjYW4gY2hhbmdlIGl0 ICovCi0Jc3RydWN0IEluc3RydW1lbnRhdGlvbiAqdG90YWx0aW1lOwkvKiB0b3RhbCB0aW1lIHNw ZW50IGluIEV4ZWN1dG9yUnVuICovCisJLyogVGhpcyBmaWVsZCBpcyBzZXQgYnkgRXhlY3V0b3JS dW4sIG9yIHBsdWdpbnMgKi8KKwlzdHJ1Y3QgUXVlcnlJbnN0cnVtZW50YXRpb24gKnRvdGFsdGlt ZTsgLyogdG90YWwgdGltZSBzcGVudCBpbiBFeGVjdXRvclJ1biAqLwogfSBRdWVyeURlc2M7CiAK IC8qIGluIHBxdWVyeS5jICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVj dXRvci5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaAppbmRleCAwN2Y0YjFmNzQ5 MC4uZjU2YjEzODQxZmIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9y LmgKKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaApAQCAtMjMzLDYgKzIzMyw3 IEBAIEV4ZWNHZXRKdW5rQXR0cmlidXRlKFR1cGxlVGFibGVTbG90ICpzbG90LCBBdHRyTnVtYmVy IGF0dG5vLCBib29sICppc051bGwpCiAvKgogICogcHJvdG90eXBlcyBmcm9tIGZ1bmN0aW9ucyBp biBleGVjTWFpbi5jCiAgKi8KK3R5cGVkZWYgc3RydWN0IFF1ZXJ5SW5zdHJ1bWVudGF0aW9uIFF1 ZXJ5SW5zdHJ1bWVudGF0aW9uOwogZXh0ZXJuIHZvaWQgRXhlY3V0b3JTdGFydChRdWVyeURlc2Mg KnF1ZXJ5RGVzYywgaW50IGVmbGFncyk7CiBleHRlcm4gdm9pZCBzdGFuZGFyZF9FeGVjdXRvclN0 YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKTsKIGV4dGVybiB2b2lkIEV4ZWN1 dG9yUnVuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLApAQCAtMjU0LDcgKzI1NSw3IEBAIGV4dGVybiB2 b2lkIEluaXRSZXN1bHRSZWxJbmZvKFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sCiAJCQkJ CQkJICBSZWxhdGlvbiByZXN1bHRSZWxhdGlvbkRlc2MsCiAJCQkJCQkJICBJbmRleCByZXN1bHRS ZWxhdGlvbkluZGV4LAogCQkJCQkJCSAgUmVzdWx0UmVsSW5mbyAqcGFydGl0aW9uX3Jvb3RfcnJp LAotCQkJCQkJCSAgaW50IGluc3RydW1lbnRfb3B0aW9ucyk7CisJCQkJCQkJICBRdWVyeUluc3Ry dW1lbnRhdGlvbiAqcWluc3RyKTsKIGV4dGVybiBSZXN1bHRSZWxJbmZvICpFeGVjR2V0VHJpZ2dl clJlc3VsdFJlbChFU3RhdGUgKmVzdGF0ZSwgT2lkIHJlbGlkLAogCQkJCQkJCQkJCQkgIFJlc3Vs dFJlbEluZm8gKnJvb3RSZWxJbmZvKTsKIGV4dGVybiBMaXN0ICpFeGVjR2V0QW5jZXN0b3JSZXN1 bHRSZWxzKEVTdGF0ZSAqZXN0YXRlLCBSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvKTsKQEAg LTMwMSw2ICszMDIsOCBAQCBleHRlcm4gdm9pZCBFeGVjU2V0RXhlY1Byb2NOb2RlKFBsYW5TdGF0 ZSAqbm9kZSwgRXhlY1Byb2NOb2RlTXRkIGZ1bmN0aW9uKTsKIGV4dGVybiBOb2RlICpNdWx0aUV4 ZWNQcm9jTm9kZShQbGFuU3RhdGUgKm5vZGUpOwogZXh0ZXJuIHZvaWQgRXhlY0VuZE5vZGUoUGxh blN0YXRlICpub2RlKTsKIGV4dGVybiB2b2lkIEV4ZWNTaHV0ZG93bk5vZGUoUGxhblN0YXRlICpu b2RlKTsKK2V4dGVybiB2b2lkIEV4ZWNSZW1lbWJlck5vZGVJbnN0cnVtZW50YXRpb24oUGxhblN0 YXRlICpub2RlLCBRdWVyeUluc3RydW1lbnRhdGlvbiAqcGFyZW50KTsKK2V4dGVybiB2b2lkIEV4 ZWNGaW5hbGl6ZU5vZGVJbnN0cnVtZW50YXRpb24oUGxhblN0YXRlICpub2RlKTsKIGV4dGVybiB2 b2lkIEV4ZWNTZXRUdXBsZUJvdW5kKGludDY0IHR1cGxlc19uZWVkZWQsIFBsYW5TdGF0ZSAqY2hp bGRfbm9kZSk7CiAKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvaW5zdHJ1bWVu dC5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvaW5zdHJ1bWVudC5oCmluZGV4IGQ0NzY5ZjNkYTdi Li5mNDljM2Y5OWNmMiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvaW5zdHJ1bWVu dC5oCisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2luc3RydW1lbnQuaApAQCAtMTMsNiArMTMs NyBAQAogI2lmbmRlZiBJTlNUUlVNRU5UX0gKICNkZWZpbmUgSU5TVFJVTUVOVF9ICiAKKyNpbmNs dWRlICJsaWIvaWxpc3QuaCIKICNpbmNsdWRlICJwb3J0YWJpbGl0eS9pbnN0cl90aW1lLmgiCiAK IApAQCAtNjgsMjkgKzY5LDkxIEBAIHR5cGVkZWYgZW51bSBJbnN0cnVtZW50T3B0aW9uCiB9IElu c3RydW1lbnRPcHRpb247CiAKIC8qCi0gKiBHZW5lcmFsIHB1cnBvc2UgaW5zdHJ1bWVudGF0aW9u IHRoYXQgY2FuIGNhcHR1cmUgdGltZSBhbmQgV0FML2J1ZmZlciB1c2FnZQorICogSW5zdHJ1bWVu dGF0aW9uIGJhc2UgY2xhc3MgZm9yIGNhcHR1cmluZyB0aW1lIGFuZCBXQUwvYnVmZmVyIHVzYWdl CiAgKgotICogSW5pdGlhbGl6ZWQgdGhyb3VnaCBJbnN0ckFsbG9jLCBmb2xsb3dlZCBieSBvbmUg b3IgbW9yZSBjYWxscyB0byBhIHBhaXIgb2YKLSAqIEluc3RyU3RhcnQvSW5zdHJTdG9wIChhY3Rp dml0eSBpcyBtZWFzdXJlZCBpbmJldHdlZW4pLgorICogSWYgdXNlZCBkaXJlY3RseToKKyAqIC0g QWxsb2NhdGUgb24gdGhlIHN0YWNrIGFuZCB6ZXJvIGluaXRpYWxpemUgdGhlIHN0cnVjdAorICog LSBDYWxsIEluc3RySW5pdE9wdGlvbnMgdG8gc2V0IGluc3RydW1lbnRhdGlvbiBvcHRpb25zCisg KiAtIENhbGwgSW5zdHJTdGFydCBiZWZvcmUgdGhlIGFjdGl2aXR5IHlvdSB3YW50IHRvIG1lYXN1 cmUKKyAqIC0gQ2FsbCBJbnN0clN0b3AgLyBJbnN0clN0b3BGaW5hbGl6ZSBhZnRlciB0aGUgYWN0 aXZpdHkgdG8gY2FwdHVyZSB0b3RhbHMKKyAqCisgKiBJbnN0clN0YXJ0L0luc3RyU3RvcCBtYXkg YmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzLiBUaGUgbGFzdCBzdG9wIGNhbGwgbXVzdAorICogYmUg dG8gSW5zdHJTdG9wRmluYWxpemUgdG8gZW5zdXJlIHBhcmVudCBzdGFjayBlbnRyaWVzIGdldCB0 aGUgYWNjdW11bGF0ZWQKKyAqIHRvdGFscy4gSWYgdGhlcmUgaXMgcmlzayBvZiB0cmFuc2FjdGlv biBhYm9ydHMgeW91IG11c3QgY2FsbAorICogSW5zdHJTdG9wRmluYWxpemUgaW4gYSBQR19UUlkv UEdfRklOQUxMWSBibG9jayB0byBhdm9pZCBjb3JydXB0aW5nIHRoZQorICogaW5zdHJ1bWVudGF0 aW9uIHN0YWNrLgorICoKKyAqIEluIGEgcXVlcnkgY29udGV4dCB1c2UgUXVlcnlJbnN0cnVtZW50 YXRpb24gaW5zdGVhZCwgd2hpY2ggaGFuZGxlcyBhYm9ydHMKKyAqIHVzaW5nIHRoZSByZXNvdXJj ZSBvd25lciBsb2dpYy4KICAqLwogdHlwZWRlZiBzdHJ1Y3QgSW5zdHJ1bWVudGF0aW9uCiB7CiAJ LyogUGFyYW1ldGVycyBzZXQgYXQgY3JlYXRpb246ICovCiAJYm9vbAkJbmVlZF90aW1lcjsJCS8q IHRydWUgaWYgd2UgbmVlZCB0aW1lciBkYXRhICovCi0JYm9vbAkJbmVlZF9idWZ1c2FnZTsJLyog dHJ1ZSBpZiB3ZSBuZWVkIGJ1ZmZlciB1c2FnZSBkYXRhICovCi0JYm9vbAkJbmVlZF93YWx1c2Fn ZTsJLyogdHJ1ZSBpZiB3ZSBuZWVkIFdBTCB1c2FnZSBkYXRhICovCisJYm9vbAkJbmVlZF9zdGFj azsJCS8qIHRydWUgaWYgd2UgbmVlZCBXQUwvYnVmZmVyIHVzYWdlIGRhdGEgKi8KIAkvKiBJbnRl cm5hbCBzdGF0ZSBrZWVwaW5nOiAqLwogCWluc3RyX3RpbWUJc3RhcnR0aW1lOwkJLyogc3RhcnQg dGltZSBvZiBsYXN0IEluc3RyU3RhcnQgKi8KLQlCdWZmZXJVc2FnZSBidWZ1c2FnZV9zdGFydDsg LyogYnVmZmVyIHVzYWdlIGF0IHN0YXJ0ICovCi0JV2FsVXNhZ2UJd2FsdXNhZ2Vfc3RhcnQ7IC8q IFdBTCB1c2FnZSBhdCBzdGFydCAqLwogCS8qIEFjY3VtdWxhdGVkIHN0YXRpc3RpY3M6ICovCiAJ aW5zdHJfdGltZQl0b3RhbDsJCQkvKiB0b3RhbCBydW50aW1lICovCiAJQnVmZmVyVXNhZ2UgYnVm dXNhZ2U7CQkvKiB0b3RhbCBidWZmZXIgdXNhZ2UgKi8KIAlXYWxVc2FnZQl3YWx1c2FnZTsJCS8q IHRvdGFsIFdBTCB1c2FnZSAqLworCS8qIEFib3J0IGhhbmRsaW5nOiBsaW5rIGluIHBhcmVudCBR dWVyeUluc3RydW1lbnRhdGlvbidzIHVuZmluYWxpemVkIGxpc3QgKi8KKwlkbGlzdF9ub2RlCXVu ZmluYWxpemVkX2VudHJ5OwogfSBJbnN0cnVtZW50YXRpb247CiAKKy8qCisgKiBRdWVyeS1yZWxh dGVkIGluc3RydW1lbnRhdGlvbiB0cmFja2luZy4KKyAqCisgKiBVc2FnZToKKyAqIC0gQWxsb2Nh dGUgb24gdGhlIGhlYXAgdXNpbmcgSW5zdHJRdWVyeUFsbG9jIChyZXF1aXJlZCBmb3IgYWJvcnQg aGFuZGxpbmcpCisgKiAtIENhbGwgSW5zdHJRdWVyeVN0YXJ0IGJlZm9yZSB0aGUgYWN0aXZpdHkg eW91IHdhbnQgdG8gbWVhc3VyZQorICogLSBDYWxsIEluc3RyUXVlcnlTdG9wIC8gSW5zdHJRdWVy eVN0b3BGaW5hbGl6ZSBhZnRlcndhcmRzIHRvIGNhcHR1cmUgdG90YWxzCisgKgorICogSW5zdHJR dWVyeVN0YXJ0L0luc3RyUXVlcnlTdG9wIG1heSBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMuIFRo ZSBsYXN0IHN0b3AKKyAqIGNhbGwgbXVzdCBiZSB0byBJbnN0clF1ZXJ5U3RvcEZpbmFsaXplIHRv IGVuc3VyZSBwYXJlbnQgc3RhY2sgZW50cmllcyBnZXQKKyAqIHRoZSBhY2N1bXVsYXRlZCB0b3Rh bHMuCisgKgorICogVXNlcyByZXNvdXJjZSBvd25lciBtZWNoYW5pc20gZm9yIGhhbmRsaW5nIGFi b3J0cywgYXMgc3VjaCwgdGhlIGNhbGxlcgorICogKm11c3QqIG5vdCBleGl0IG91dCBvZiB0aGUg dG9wIGxldmVsIHRyYW5zYWN0aW9uIGFmdGVyIGhhdmluZyBjYWxsZWQKKyAqIEluc3RyUXVlcnlT dGFydCwgd2l0aG91dCBmaXJzdCBjYWxsaW5nIEluc3RyUXVlcnlTdG9wIG9yCisgKiBJbnN0clF1 ZXJ5U3RvcEZpbmFsaXplLiBJbiB0aGUgY2FzZSBvZiBhIHRyYW5zYWN0aW9uIGFib3J0LCBsb2dp YyBlcXVpdmFsZW50CisgKiB0byBJbnN0clF1ZXJ5U3RvcEZpbmFsaXplIHdpbGwgYmUgY2FsbGVk IGF1dG9tYXRpY2FsbHkuCisgKi8KK3N0cnVjdCBSZXNvdXJjZU93bmVyRGF0YTsKK3R5cGVkZWYg c3RydWN0IFF1ZXJ5SW5zdHJ1bWVudGF0aW9uCit7CisJSW5zdHJ1bWVudGF0aW9uIGluc3RyOwor CisJLyogT3JpZ2luYWwgaW5zdHJ1bWVudF9vcHRpb25zIGZsYWdzIHVzZWQgdG8gY3JlYXRlIHRo aXMgaW5zdHJ1bWVudGF0aW9uICovCisJaW50CQkJaW5zdHJ1bWVudF9vcHRpb25zOworCisJLyog UmVzb3VyY2Ugb3duZXIgdXNlZCBmb3IgY2xlYW51cCBmb3IgYWJvcnRzIGJldHdlZW4gSW5zdHJT dGFydC9JbnN0clN0b3AgKi8KKwlzdHJ1Y3QgUmVzb3VyY2VPd25lckRhdGEgKm93bmVyOworCisJ LyoKKwkgKiBEZWRpY2F0ZWQgbWVtb3J5IGNvbnRleHQgZm9yIGFsbCBpbnN0cnVtZW50YXRpb24g YWxsb2NhdGlvbnMgYmVsb25naW5nCisJICogdG8gdGhpcyBxdWVyeSAobm9kZSBpbnN0cnVtZW50 YXRpb24sIHRyaWdnZXIgaW5zdHJ1bWVudGF0aW9uLCBldGMuKS4KKwkgKiBJbml0aWFsbHkgYSBj aGlsZCBvZiBUb3BNZW1vcnlDb250ZXh0IHNvIGl0IHN1cnZpdmVzIHRyYW5zYWN0aW9uIGFib3J0 CisJICogZm9yIFJlc291cmNlT3duZXIgY2xlYW51cCwgd2hpY2ggaXMgdGhlbiByZWFzc2lnbmVk IHRvIHRoZSBjdXJyZW50CisJICogbWVtb3J5IGNvbnRleHQgb24gSW5zdHJRdWVyeVN0b3BGaW5h bGl6ZS4KKwkgKi8KKwlNZW1vcnlDb250ZXh0IGluc3RyX2N4dDsKKworCS8qCisJICogQ2hpbGQg ZW50cmllcyB0aGF0IG5lZWQgdG8gYmUgY2xlYW5lZCB1cCBvbiBhYm9ydCwgc2luY2UgdGhleSBh cmUgbm90CisJICogcmVnaXN0ZXJlZCBhcyBhIHJlc291cmNlIG93bmVyIHRoZW1zZWx2ZXMuIENv bnRhaW5zIGJvdGggbm9kZSBhbmQKKwkgKiB0cmlnZ2VyIGluc3RydW1lbnRhdGlvbiBlbnRyaWVz IGxpbmtlZCB2aWEgaW5zdHIudW5maW5hbGl6ZWRfZW50cnkuCisJICovCisJZGxpc3RfaGVhZAl1 bmZpbmFsaXplZF9lbnRyaWVzOworfSBRdWVyeUluc3RydW1lbnRhdGlvbjsKKwogLyoKICAqIFNw ZWNpYWxpemVkIGluc3RydW1lbnRhdGlvbiBmb3IgcGVyLW5vZGUgZXhlY3V0aW9uIHN0YXRpc3Rp Y3MKKyAqCisgKiBSZWxpZXMgb24gYW4gb3V0ZXIgUXVlcnlJbnN0cnVtZW50YXRpb24gaGF2aW5n IGJlZW4gc2V0IHVwIHRvIGhhbmRsZSB0aGUKKyAqIHN0YWNrIHVzZWQgZm9yIFdBTC9idWZmZXIg dXNhZ2Ugc3RhdGlzdGljcywgYW5kIHJlbGllcyBvbiBpdCBmb3IgbWFuYWdpbmcKKyAqIGFib3J0 cy4gU29sZWx5IGludGVuZGVkIGZvciB0aGUgZXhlY3V0b3IgYW5kIGFueW9uZSByZXBvcnRpbmcg YWJvdXQgaXRzCisgKiBhY3Rpdml0aWVzIChlLmcuIEVYUExBSU4gQU5BTFlaRSkuCiAgKi8KIHR5 cGVkZWYgc3RydWN0IE5vZGVJbnN0cnVtZW50YXRpb24KIHsKQEAgLTExMSw2ICsxNzQsMTAgQEAg dHlwZWRlZiBzdHJ1Y3QgTm9kZUluc3RydW1lbnRhdGlvbgogCWRvdWJsZQkJbmZpbHRlcmVkMjsJ CS8qICMgb2YgdHVwbGVzIHJlbW92ZWQgYnkgIm90aGVyIiBxdWFscyAqLwogfSBOb2RlSW5zdHJ1 bWVudGF0aW9uOwogCisvKgorICogQ2FyZSBtdXN0IGJlIHRha2VuIHdpdGggYW55IHBvaW50ZXJz IGNvbnRhaW5lZCB3aXRoaW4gdGhpcyBzdHJ1Y3QsIGFzIHRoaXMKKyAqIGdldHMgY29waWVkIGFj cm9zcyBwcm9jZXNzZXMgZHVyaW5nIHBhcmFsbGVsIHF1ZXJ5IGV4ZWN1dGlvbi4KKyAqLwogdHlw ZWRlZiBzdHJ1Y3QgV29ya2VyTm9kZUluc3RydW1lbnRhdGlvbgogewogCWludAkJCW51bV93b3Jr ZXJzOwkvKiAjIG9mIHN0cnVjdHVyZXMgdGhhdCBmb2xsb3cgKi8KQEAgLTEyNCwxNiArMTkxLDEw MiBAQCB0eXBlZGVmIHN0cnVjdCBUcmlnZ2VySW5zdHJ1bWVudGF0aW9uCiAJCQkJCQkJCSAqIHdh cyBmaXJlZCAqLwogfSBUcmlnZ2VySW5zdHJ1bWVudGF0aW9uOwogCi1leHRlcm4gUEdETExJTVBP UlQgQnVmZmVyVXNhZ2UgcGdCdWZmZXJVc2FnZTsKKy8qCisgKiBEeW5hbWljIGFycmF5LWJhc2Vk IHN0YWNrIGZvciB0cmFja2luZyBjdXJyZW50IFdBTC9idWZmZXIgdXNhZ2UgY29udGV4dC4KKyAq CisgKiBXaGVuIHRoZSBzdGFjayBpcyBlbXB0eSwgJ2N1cnJlbnQnIHBvaW50cyB0byBpbnN0cl90 b3Agd2hpY2ggYWNjdW11bGF0ZXMKKyAqIHNlc3Npb24tbGV2ZWwgdG90YWxzLgorICovCit0eXBl ZGVmIHN0cnVjdCBJbnN0clN0YWNrU3RhdGUKK3sKKwlpbnQJCQlzdGFja19zcGFjZTsJLyogYWxs b2NhdGVkIGNhcGFjaXR5IG9mIGVudHJpZXMgYXJyYXkgKi8KKwlpbnQJCQlzdGFja19zaXplOwkJ LyogY3VycmVudCBudW1iZXIgb2YgZW50cmllcyAqLworCisJSW5zdHJ1bWVudGF0aW9uICoqZW50 cmllczsJLyogZHluYW1pYyBhcnJheSBvZiBwb2ludGVycyAqLworCUluc3RydW1lbnRhdGlvbiAq Y3VycmVudDsJLyogdG9wIG9mIHN0YWNrLCBvciAmaW5zdHJfdG9wIHdoZW4gZW1wdHkgKi8KK30g SW5zdHJTdGFja1N0YXRlOworCiBleHRlcm4gUEdETExJTVBPUlQgV2FsVXNhZ2UgcGdXYWxVc2Fn ZTsKIAotZXh0ZXJuIEluc3RydW1lbnRhdGlvbiAqSW5zdHJBbGxvYyhpbnQgaW5zdHJ1bWVudF9v cHRpb25zKTsKKy8qCisgKiBUaGUgdG9wIGluc3RydW1lbnRhdGlvbiByZXByZXNlbnRzIGEgcnVu bmluZyB0b3RhbCBvZiB0aGUgY3VycmVudCBiYWNrZW5kCisgKiBXQUwvYnVmZmVyIHVzYWdlIGlu Zm9ybWF0aW9uLiBUaGlzIHdpbGwgbm90IGJlIHVwZGF0ZWQgaW1tZWRpYXRlbHksIGJ1dAorICog cmF0aGVyIHdoZW4gdGhlIGN1cnJlbnQgc3RhY2sgZW50cnkgZ2V0cyBhY2N1bXVsYXRlZCB3aGlj aCB0eXBpY2FsbHkgaGFwcGVucworICogYXQgcXVlcnkgZW5kLgorICoKKyAqIENhcmUgbXVzdCBi ZSB0YWtlbiB3aGVuIHV0aWxpemluZyB0aGlzIGluIHRoZSBwYXJhbGxlbCB3b3JrZXIgY29udGV4 dDoKKyAqIFBhcmFsbGVsIHdvcmtlcnMgd2lsbCByZXBvcnQgYmFjayB0aGVpciBpbnN0cnVtZW50 YXRpb24gdG8gdGhlIGNhbGxlciwKKyAqIGFuZCB0aGlzIGdldHMgYWRkZWQgdG8gdGhlIGNhbGxl cidzIHN0YWNrLiBJZiB0aGlzIHdlcmUgdG8gYmUgdXNlZCBpbiB0aGUKKyAqIHNoYXJlZCBtZW1v cnkgc3RhdHMgaW5mcmFzdHJ1Y3R1cmUgaXQgd291bGQgbmVlZCB0byBiZSBza2lwcGVkIG9uIHBh cmFsbGVsCisgKiB3b3JrZXJzIHRvIGF2b2lkIGRvdWJsZSBjb3VudGluZy4KKyAqLworZXh0ZXJu IFBHRExMSU1QT1JUIEluc3RydW1lbnRhdGlvbiBpbnN0cl90b3A7CisKKy8qCisgKiBUaGUgaW5z dHJ1bWVudGF0aW9uIHN0YWNrIHN0YXRlLiBUaGUgJ2N1cnJlbnQnIGZpZWxkIHBvaW50cyB0byB0 aGUKKyAqIGN1cnJlbnRseSBhY3RpdmUgc3RhY2sgZW50cnkgdGhhdCBpcyBnZXR0aW5nIHVwZGF0 ZWQgYXMgYWN0aXZpdHkgaGFwcGVucywKKyAqIGFuZCB3aWxsIGJlIGFjY3VtdWxhdGVkIHRvIHBh cmVudCBzdGFja3Mgd2hlbiBpdCBnZXRzIGZpbmFsaXplZCBieQorICogSW5zdHJTdG9wIChmb3Ig bm9uLWV4ZWN1dG9yIHVzZSBjYXNlcyksIEV4ZWNGaW5hbGl6ZU5vZGVJbnN0cnVtZW50YXRpb24K KyAqIChleGVjdXRvciBmaW5pc2gpIG9yIFJlc093bmVyUmVsZWFzZUluc3RydW1lbnRhdGlvbiBv biBhYm9ydC4KKyAqLworZXh0ZXJuIFBHRExMSU1QT1JUIEluc3RyU3RhY2tTdGF0ZSBpbnN0cl9z dGFjazsKKworZXh0ZXJuIHZvaWQgSW5zdHJTdGFja0dyb3codm9pZCk7CisKKy8qCisgKiBQdXNo ZXMgdGhlIHN0YWNrIHNvIHRoYXQgYWxsIFdBTC9idWZmZXIgdXNhZ2UgdXBkYXRlcyBnbyB0byB0 aGUgcGFzc2VkIGluCisgKiBpbnN0cnVtZW50YXRpb24gZW50cnkuCisgKgorICogU2VlIG5vdGUg b24gSW5zdHJQb3BTdGFjayByZWdhcmRpbmcgc2FmZSB1c2Ugb2YgdGhlc2UgZnVuY3Rpb25zLgor ICovCitzdGF0aWMgaW5saW5lIHZvaWQKK0luc3RyUHVzaFN0YWNrKEluc3RydW1lbnRhdGlvbiAq aW5zdHIpCit7CisJaWYgKHVubGlrZWx5KGluc3RyX3N0YWNrLnN0YWNrX3NpemUgPT0gaW5zdHJf c3RhY2suc3RhY2tfc3BhY2UpKQorCQlJbnN0clN0YWNrR3JvdygpOworCisJaW5zdHJfc3RhY2su ZW50cmllc1tpbnN0cl9zdGFjay5zdGFja19zaXplKytdID0gaW5zdHI7CisJaW5zdHJfc3RhY2su Y3VycmVudCA9IGluc3RyOworfQorCisvKgorICogUG9wcyB0aGUgc3RhY2sgZW50cnkgYmFjayB0 byB0aGUgcHJldmlvdXMgb25lIHRoYXQgd2FzIGVmZmVjdGl2ZSBhdAorICogSW5zdHJQdXNoU3Rh Y2suCisgKgorICogQ2FsbGVycyBtdXN0IGVuc3VyZSB0aGF0IG5vIGludGVybWVkaWF0ZSBzdGFj ayBlbnRyaWVzIGFyZSBza2lwcGVkLCB0bworICogaGFuZGxlIGFib3J0cyBjb3JyZWN0bHkuIElm IHlvdSdyZSB0aGlua2luZyBvZiBjYWxsaW5nIHRoaXMgaW4gYSBQR19GSU5BTExZCisgKiBibG9j aywgY29uc2lkZXIgaW5zdGVhZCB1c2luZyBJbnN0clN0YXJ0ICsgSW5zdHJTdG9wRmluYWxpemUg d2hpY2ggY2FuIHNraXAKKyAqIGludGVybWVkaWF0ZSBzdGFjayBlbnRyaWVzLgorICovCitzdGF0 aWMgaW5saW5lIHZvaWQKK0luc3RyUG9wU3RhY2soSW5zdHJ1bWVudGF0aW9uICppbnN0cikKK3sK KwlBc3NlcnQoaW5zdHJfc3RhY2suc3RhY2tfc2l6ZSA+IDApOworCUFzc2VydChpbnN0cl9zdGFj ay5lbnRyaWVzW2luc3RyX3N0YWNrLnN0YWNrX3NpemUgLSAxXSA9PSBpbnN0cik7CisJaW5zdHJf c3RhY2suc3RhY2tfc2l6ZS0tOworCWluc3RyX3N0YWNrLmN1cnJlbnQgPSBpbnN0cl9zdGFjay5z dGFja19zaXplID4gMAorCQk/IGluc3RyX3N0YWNrLmVudHJpZXNbaW5zdHJfc3RhY2suc3RhY2tf c2l6ZSAtIDFdCisJCTogJmluc3RyX3RvcDsKK30KKwogZXh0ZXJuIHZvaWQgSW5zdHJJbml0T3B0 aW9ucyhJbnN0cnVtZW50YXRpb24gKmluc3RyLCBpbnQgaW5zdHJ1bWVudF9vcHRpb25zKTsKIGV4 dGVybiB2b2lkIEluc3RyU3RhcnQoSW5zdHJ1bWVudGF0aW9uICppbnN0cik7CiBleHRlcm4gdm9p ZCBJbnN0clN0b3AoSW5zdHJ1bWVudGF0aW9uICppbnN0cik7CitleHRlcm4gdm9pZCBJbnN0clN0 b3BGaW5hbGl6ZShJbnN0cnVtZW50YXRpb24gKmluc3RyKTsKK2V4dGVybiB2b2lkIEluc3RyRmlu YWxpemVDaGlsZChJbnN0cnVtZW50YXRpb24gKmluc3RyLCBJbnN0cnVtZW50YXRpb24gKnBhcmVu dCk7CitleHRlcm4gdm9pZCBJbnN0ckFjY3VtU3RhY2soSW5zdHJ1bWVudGF0aW9uICpkc3QsIElu c3RydW1lbnRhdGlvbiAqYWRkKTsKIAotZXh0ZXJuIE5vZGVJbnN0cnVtZW50YXRpb24gKkluc3Ry QWxsb2NOb2RlKGludCBpbnN0cnVtZW50X29wdGlvbnMsCi0JCQkJCQkJCQkJICAgYm9vbCBhc3lu Y19tb2RlKTsKK2V4dGVybiBRdWVyeUluc3RydW1lbnRhdGlvbiAqSW5zdHJRdWVyeUFsbG9jKGlu dCBpbnN0cnVtZW50X29wdGlvbnMpOworZXh0ZXJuIHZvaWQgSW5zdHJRdWVyeVN0YXJ0KFF1ZXJ5 SW5zdHJ1bWVudGF0aW9uICppbnN0cik7CitleHRlcm4gdm9pZCBJbnN0clF1ZXJ5U3RvcChRdWVy eUluc3RydW1lbnRhdGlvbiAqaW5zdHIpOworZXh0ZXJuIHZvaWQgSW5zdHJRdWVyeVN0b3BGaW5h bGl6ZShRdWVyeUluc3RydW1lbnRhdGlvbiAqaW5zdHIpOworZXh0ZXJuIHZvaWQgSW5zdHJRdWVy eVJlbWVtYmVyQ2hpbGQoUXVlcnlJbnN0cnVtZW50YXRpb24gKnBhcmVudCwgSW5zdHJ1bWVudGF0 aW9uICppbnN0cik7CisKK3BnX25vZGlzY2FyZCBleHRlcm4gUXVlcnlJbnN0cnVtZW50YXRpb24g Kkluc3RyU3RhcnRQYXJhbGxlbFF1ZXJ5KHZvaWQpOworZXh0ZXJuIHZvaWQgSW5zdHJFbmRQYXJh bGxlbFF1ZXJ5KFF1ZXJ5SW5zdHJ1bWVudGF0aW9uICpxaW5zdHIsIEJ1ZmZlclVzYWdlICpidWZ1 c2FnZSwgV2FsVXNhZ2UgKndhbHVzYWdlKTsKK2V4dGVybiB2b2lkIEluc3RyQWNjdW1QYXJhbGxl bFF1ZXJ5KEJ1ZmZlclVzYWdlICpidWZ1c2FnZSwgV2FsVXNhZ2UgKndhbHVzYWdlKTsKKworZXh0 ZXJuIE5vZGVJbnN0cnVtZW50YXRpb24gKkluc3RyQWxsb2NOb2RlKFF1ZXJ5SW5zdHJ1bWVudGF0 aW9uICpxaW5zdHIsIGJvb2wgYXN5bmNfbW9kZSk7CiBleHRlcm4gdm9pZCBJbnN0ckluaXROb2Rl KE5vZGVJbnN0cnVtZW50YXRpb24gKmluc3RyLCBpbnQgaW5zdHJ1bWVudF9vcHRpb25zKTsKIGV4 dGVybiB2b2lkIEluc3RyU3RhcnROb2RlKE5vZGVJbnN0cnVtZW50YXRpb24gKmluc3RyKTsKIGV4 dGVybiB2b2lkIEluc3RyU3RvcE5vZGUoTm9kZUluc3RydW1lbnRhdGlvbiAqaW5zdHIsIGRvdWJs ZSBuVHVwbGVzKTsKQEAgLTE0MSwzNSArMjk0LDM2IEBAIGV4dGVybiB2b2lkIEluc3RyVXBkYXRl VHVwbGVDb3VudChOb2RlSW5zdHJ1bWVudGF0aW9uICppbnN0ciwgZG91YmxlIG5UdXBsZXMpOwog ZXh0ZXJuIHZvaWQgSW5zdHJFbmRMb29wKE5vZGVJbnN0cnVtZW50YXRpb24gKmluc3RyKTsKIGV4 dGVybiB2b2lkIEluc3RyQWdnTm9kZShOb2RlSW5zdHJ1bWVudGF0aW9uICpkc3QsIE5vZGVJbnN0 cnVtZW50YXRpb24gKmFkZCk7CiAKLWV4dGVybiBUcmlnZ2VySW5zdHJ1bWVudGF0aW9uICpJbnN0 ckFsbG9jVHJpZ2dlcihpbnQgbiwgaW50IGluc3RydW1lbnRfb3B0aW9ucyk7Ci1leHRlcm4gdm9p ZCBJbnN0clN0YXJ0VHJpZ2dlcihUcmlnZ2VySW5zdHJ1bWVudGF0aW9uICp0Z2luc3RyKTsKK2V4 dGVybiBUcmlnZ2VySW5zdHJ1bWVudGF0aW9uICpJbnN0ckFsbG9jVHJpZ2dlcihRdWVyeUluc3Ry dW1lbnRhdGlvbiAqcWluc3RyLCBpbnQgbik7CitleHRlcm4gdm9pZCBJbnN0clN0YXJ0VHJpZ2dl cihRdWVyeUluc3RydW1lbnRhdGlvbiAqcWluc3RyLAorCQkJCQkJCSAgVHJpZ2dlckluc3RydW1l bnRhdGlvbiAqdGdpbnN0cik7CiBleHRlcm4gdm9pZCBJbnN0clN0b3BUcmlnZ2VyKFRyaWdnZXJJ bnN0cnVtZW50YXRpb24gKnRnaW5zdHIsIGludCBmaXJpbmdzKTsKIAotZXh0ZXJuIHZvaWQgSW5z dHJTdGFydFBhcmFsbGVsUXVlcnkodm9pZCk7Ci1leHRlcm4gdm9pZCBJbnN0ckVuZFBhcmFsbGVs UXVlcnkoQnVmZmVyVXNhZ2UgKmJ1ZnVzYWdlLCBXYWxVc2FnZSAqd2FsdXNhZ2UpOwotZXh0ZXJu IHZvaWQgSW5zdHJBY2N1bVBhcmFsbGVsUXVlcnkoQnVmZmVyVXNhZ2UgKmJ1ZnVzYWdlLCBXYWxV c2FnZSAqd2FsdXNhZ2UpOwotZXh0ZXJuIHZvaWQgQnVmZmVyVXNhZ2VBY2N1bURpZmYoQnVmZmVy VXNhZ2UgKmRzdCwKLQkJCQkJCQkJIGNvbnN0IEJ1ZmZlclVzYWdlICphZGQsIGNvbnN0IEJ1ZmZl clVzYWdlICpzdWIpOworZXh0ZXJuIHZvaWQgQnVmZmVyVXNhZ2VBZGQoQnVmZmVyVXNhZ2UgKmRz dCwgY29uc3QgQnVmZmVyVXNhZ2UgKmFkZCk7CitleHRlcm4gdm9pZCBXYWxVc2FnZUFkZChXYWxV c2FnZSAqZHN0LCBjb25zdCBXYWxVc2FnZSAqYWRkKTsKIGV4dGVybiB2b2lkIFdhbFVzYWdlQWNj dW1EaWZmKFdhbFVzYWdlICpkc3QsIGNvbnN0IFdhbFVzYWdlICphZGQsCiAJCQkJCQkJICBjb25z dCBXYWxVc2FnZSAqc3ViKTsKIAogI2RlZmluZSBJTlNUUl9CVUZVU0FHRV9JTkNSKGZsZCkgZG8g eyBcCi0JCXBnQnVmZmVyVXNhZ2UuZmxkKys7IFwKKwkJaW5zdHJfc3RhY2suY3VycmVudC0+YnVm dXNhZ2UuZmxkKys7IFwKIAl9IHdoaWxlKDApCiAjZGVmaW5lIElOU1RSX0JVRlVTQUdFX0FERChm bGQsdmFsKSBkbyB7IFwKLQkJcGdCdWZmZXJVc2FnZS5mbGQgKz0gKHZhbCk7IFwKKwkJaW5zdHJf c3RhY2suY3VycmVudC0+YnVmdXNhZ2UuZmxkICs9ICh2YWwpOyBcCiAJfSB3aGlsZSgwKQogI2Rl ZmluZSBJTlNUUl9CVUZVU0FHRV9USU1FX0FERChmbGQsdmFsKSBkbyB7IFwKLQlJTlNUUl9USU1F X0FERChwZ0J1ZmZlclVzYWdlLmZsZCwgdmFsKTsgXAorCUlOU1RSX1RJTUVfQUREKGluc3RyX3N0 YWNrLmN1cnJlbnQtPmJ1ZnVzYWdlLmZsZCwgdmFsKTsgXAogCX0gd2hpbGUgKDApCiAjZGVmaW5l IElOU1RSX0JVRlVTQUdFX1RJTUVfQUNDVU1fRElGRihmbGQsZW5kdmFsLHN0YXJ0dmFsKSBkbyB7 IFwKLQlJTlNUUl9USU1FX0FDQ1VNX0RJRkYocGdCdWZmZXJVc2FnZS5mbGQsIGVuZHZhbCwgc3Rh cnR2YWwpOyBcCisJSU5TVFJfVElNRV9BQ0NVTV9ESUZGKGluc3RyX3N0YWNrLmN1cnJlbnQtPmJ1 ZnVzYWdlLmZsZCwgZW5kdmFsLCBzdGFydHZhbCk7IFwKIAl9IHdoaWxlICgwKQorCiAjZGVmaW5l IElOU1RSX1dBTFVTQUdFX0lOQ1IoZmxkKSBkbyB7IFwKIAkJcGdXYWxVc2FnZS5mbGQrKzsgXAor CQlpbnN0cl9zdGFjay5jdXJyZW50LT53YWx1c2FnZS5mbGQrKzsgXAogCX0gd2hpbGUoMCkKICNk ZWZpbmUgSU5TVFJfV0FMVVNBR0VfQUREKGZsZCx2YWwpIGRvIHsgXAogCQlwZ1dhbFVzYWdlLmZs ZCArPSAodmFsKTsgXAorCQlpbnN0cl9zdGFjay5jdXJyZW50LT53YWx1c2FnZS5mbGQgKz0gKHZh bCk7IFwKIAl9IHdoaWxlKDApCiAKICNlbmRpZgkJCQkJCQkvKiBJTlNUUlVNRU5UX0ggKi8KZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9k ZXMvZXhlY25vZGVzLmgKaW5kZXggNTAyYWQ0ZjJkYTUuLmFlZjEwMDNmNjA4IDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9l eGVjbm9kZXMuaApAQCAtNTMsNiArNTMsNyBAQCB0eXBlZGVmIHN0cnVjdCBJbnN0cnVtZW50YXRp b24gSW5zdHJ1bWVudGF0aW9uOwogdHlwZWRlZiBzdHJ1Y3QgcGFpcmluZ2hlYXAgcGFpcmluZ2hl YXA7CiB0eXBlZGVmIHN0cnVjdCBQbGFuU3RhdGUgUGxhblN0YXRlOwogdHlwZWRlZiBzdHJ1Y3Qg UXVlcnlFbnZpcm9ubWVudCBRdWVyeUVudmlyb25tZW50OwordHlwZWRlZiBzdHJ1Y3QgUXVlcnlJ bnN0cnVtZW50YXRpb24gUXVlcnlJbnN0cnVtZW50YXRpb247CiB0eXBlZGVmIHN0cnVjdCBSZWxh dGlvbkRhdGEgKlJlbGF0aW9uOwogdHlwZWRlZiBSZWxhdGlvbiAqUmVsYXRpb25QdHI7CiB0eXBl ZGVmIHN0cnVjdCBTY2FuS2V5RGF0YSBTY2FuS2V5RGF0YTsKQEAgLTczMSw3ICs3MzIsNyBAQCB0 eXBlZGVmIHN0cnVjdCBFU3RhdGUKIAkJCQkJCQkJCSAqIEV4ZWN1dG9yUnVuKCkgY2FsbHMuICov CiAKIAlpbnQJCQllc190b3BfZWZsYWdzOwkvKiBlZmxhZ3MgcGFzc2VkIHRvIEV4ZWN1dG9yU3Rh cnQgKi8KLQlpbnQJCQllc19pbnN0cnVtZW50OwkvKiBPUiBvZiBJbnN0cnVtZW50T3B0aW9uIGZs YWdzICovCisJUXVlcnlJbnN0cnVtZW50YXRpb24gKmVzX2luc3RydW1lbnQ7CS8qIHF1ZXJ5LWxl dmVsIGluc3RydW1lbnRhdGlvbiAqLwogCWJvb2wJCWVzX2ZpbmlzaGVkOwkvKiB0cnVlIHdoZW4g RXhlY3V0b3JGaW5pc2ggaXMgZG9uZSAqLwogCiAJTGlzdAkgICAqZXNfZXhwcmNvbnRleHRzOwkv KiBMaXN0IG9mIEV4cHJDb250ZXh0cyB3aXRoaW4gRVN0YXRlICovCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS91dGlscy9yZXNvd25lci5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvcmVzb3duZXIuaApp bmRleCBlYjYwMzNiNGZkYi4uNTQ2M2JjOTIxZjAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0 aWxzL3Jlc293bmVyLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvcmVzb3duZXIuaApAQCAtNzUs NiArNzUsNyBAQCB0eXBlZGVmIHVpbnQzMiBSZXNvdXJjZVJlbGVhc2VQcmlvcml0eTsKICNkZWZp bmUgUkVMRUFTRV9QUklPX1NOQVBTSE9UX1JFRlMJCQk1MDAKICNkZWZpbmUgUkVMRUFTRV9QUklP X0ZJTEVTCQkJCQk2MDAKICNkZWZpbmUgUkVMRUFTRV9QUklPX1dBSVRFVkVOVFNFVFMJCQk3MDAK KyNkZWZpbmUgUkVMRUFTRV9QUklPX0lOU1RSVU1FTlRBVElPTgkJODAwCiAKIC8qIDAgaXMgY29u c2lkZXJlZCBpbnZhbGlkICovCiAjZGVmaW5lIFJFTEVBU0VfUFJJT19GSVJTVAkJCQkJMQpkaWZm IC0tZ2l0IGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgYi9zcmMvdG9vbHMvcGdp bmRlbnQvdHlwZWRlZnMubGlzdAppbmRleCAwMGRkMWZjNmZmOS4uZDMyMDNhYzVlOWEgMTAwNjQ0 Ci0tLSBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CisrKyBiL3NyYy90b29scy9w Z2luZGVudC90eXBlZGVmcy5saXN0CkBAIC0xMzQxLDYgKzEzNDEsNyBAQCBJbmplY3Rpb25Qb2lu dFNoYXJlZFN0YXRlCiBJbmplY3Rpb25Qb2ludHNDdGwKIElubGluZUNvZGVCbG9jawogSW5zZXJ0 U3RtdAorSW5zdHJTdGFja1N0YXRlCiBJbnN0cnVtZW50YXRpb24KIEludDEyOEFnZ1N0YXRlCiBJ bnQ4VHJhbnNUeXBlRGF0YQpAQCAtMjQ2Myw2ICsyNDY0LDcgQEAgUXVlcnlDb21wbGV0aW9uCiBR dWVyeURlc2MKIFF1ZXJ5RW52aXJvbm1lbnQKIFF1ZXJ5SW5mbworUXVlcnlJbnN0cnVtZW50YXRp b24KIFF1ZXJ5SXRlbQogUXVlcnlJdGVtVHlwZQogUXVlcnlNb2RlCi0tIAoyLjQ3LjEKCg== --0000000000005bb84b064dfc5b57 Content-Type: application/octet-stream; name="v11-0009-Add-test_session_buffer_usage-test-module.patch" Content-Disposition: attachment; filename="v11-0009-Add-test_session_buffer_usage-test-module.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mn8k89yu8 RnJvbSA0YzRjNjQzOGJhY2VlMzY2OTkyMDk2MmEzOTEzMjI1NzJiOTI3ZGE0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpEYXRlOiBT YXQsIDcgTWFyIDIwMjYgMTE6NDY6NDEgLTA4MDAKU3ViamVjdDogW1BBVENIIHYxMSA5LzldIEFk ZCB0ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlIHRlc3QgbW9kdWxlCgpUaGlzIGlzIGludGVuZGVk IGZvciB0ZXN0aW5nIGluc3RydW1lbnRhdGlvbiByZWxhdGVkIGxvZ2ljIGFzIGl0IHBlcnRhaW5z CnRvIHRoZSB0b3AgbGV2ZWwgc3RhY2sgdGhhdCBpcyBtYWludGFpbmVkIGFzIGEgcnVubmluZyB0 b3RhbC4gVGhlcmUgaXMKY3VycmVudGx5IG5vIGluLWNvcmUgdXNlciB0aGF0IHV0aWxpemVzIHRo ZSB0b3AtbGV2ZWwgdmFsdWVzIGluIHRoaXMKbWFubmVyLCBhbmQgZXNwZWNpYWxseSBkdXJpbmcg YWJvcnQgc2l0dWF0aW9ucyB0aGlzIGhlbHBzIGVuc3VyZSB3ZSBkb24ndApsb3NlIGFjdGl2aXR5 IGR1ZSB0byBpbmNvcnJlY3QgaGFuZGxpbmcgb2YgdW5maW5hbGl6ZWQgbm9kZSBzdGFja3MuCi0t LQogc3JjL3Rlc3QvbW9kdWxlcy9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgIHwgICAxICsK IHNyYy90ZXN0L21vZHVsZXMvbWVzb24uYnVpbGQgICAgICAgICAgICAgICAgICB8ICAgMSArCiAu Li4vdGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZS9NYWtlZmlsZSAgICAgICAgfCAgMjMgKysKIC4u Li9leHBlY3RlZC90ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlLm91dCAgICB8IDM0MiArKysrKysr KysrKysrKysrKysKIC4uLi90ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlL21lc29uLmJ1aWxkICAg ICB8ICAzMyArKwogLi4uL3NxbC90ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlLnNxbCAgICAgICAg IHwgMjQ1ICsrKysrKysrKysrKysKIC4uLi90ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlLS0xLjAu c3FsICAgICAgICB8ICAzMSArKwogLi4uL3Rlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2UuYyAgICAg ICAgICAgICAgIHwgIDk1ICsrKysrCiAuLi4vdGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZS5jb250 cm9sICAgICAgICAgfCAgIDUgKwogOSBmaWxlcyBjaGFuZ2VkLCA3NzYgaW5zZXJ0aW9ucygrKQog Y3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvdGVzdF9zZXNzaW9uX2J1ZmZlcl91 c2FnZS9NYWtlZmlsZQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvdGVzdF9z ZXNzaW9uX2J1ZmZlcl91c2FnZS9leHBlY3RlZC90ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlLm91 dAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvdGVzdF9zZXNzaW9uX2J1ZmZl cl91c2FnZS9tZXNvbi5idWlsZAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMv dGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZS9zcWwvdGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZS5z cWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2Vzc2lvbl9idWZm ZXJfdXNhZ2UvdGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZS0tMS4wLnNxbAogY3JlYXRlIG1vZGUg MTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvdGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZS90ZXN0X3Nl c3Npb25fYnVmZmVyX3VzYWdlLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVz L3Rlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2UvdGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZS5jb250 cm9sCgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9NYWtlZmlsZSBiL3NyYy90ZXN0L21v ZHVsZXMvTWFrZWZpbGUKaW5kZXggMjhjZTNiMzVlZGEuLjRmMTM4MDI4NmE2IDEwMDY0NAotLS0g YS9zcmMvdGVzdC9tb2R1bGVzL01ha2VmaWxlCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvTWFrZWZp bGUKQEAgLTQ3LDYgKzQ3LDcgQEAgU1VCRElSUyA9IFwKIAkJICB0ZXN0X3Jlc293bmVyIFwKIAkJ ICB0ZXN0X3Jsc19ob29rcyBcCiAJCSAgdGVzdF9zYXNscHJlcCBcCisJCSAgdGVzdF9zZXNzaW9u X2J1ZmZlcl91c2FnZSBcCiAJCSAgdGVzdF9zaG1fbXEgXAogCQkgIHRlc3Rfc2xydSBcCiAJCSAg dGVzdF90aWRzdG9yZSBcCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL21lc29uLmJ1aWxk IGIvc3JjL3Rlc3QvbW9kdWxlcy9tZXNvbi5idWlsZAppbmRleCAzYWMyOTE2NTZjMS4uNDFlMGMz ODk1ZTggMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvbWVzb24uYnVpbGQKKysrIGIvc3Jj L3Rlc3QvbW9kdWxlcy9tZXNvbi5idWlsZApAQCAtNDgsNiArNDgsNyBAQCBzdWJkaXIoJ3Rlc3Rf cmVnZXgnKQogc3ViZGlyKCd0ZXN0X3Jlc293bmVyJykKIHN1YmRpcigndGVzdF9ybHNfaG9va3Mn KQogc3ViZGlyKCd0ZXN0X3Nhc2xwcmVwJykKK3N1YmRpcigndGVzdF9zZXNzaW9uX2J1ZmZlcl91 c2FnZScpCiBzdWJkaXIoJ3Rlc3Rfc2htX21xJykKIHN1YmRpcigndGVzdF9zbHJ1JykKIHN1YmRp cigndGVzdF90aWRzdG9yZScpCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2Vz c2lvbl9idWZmZXJfdXNhZ2UvTWFrZWZpbGUgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2Vzc2lv bl9idWZmZXJfdXNhZ2UvTWFrZWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAuLjEyNTJiMjIyY2I5Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90 ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlL01ha2VmaWxlCkBAIC0wLDAgKzEsMjMgQEAKKyMgc3Jj L3Rlc3QvbW9kdWxlcy90ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlL01ha2VmaWxlCisKK01PRFVM RV9iaWcgPSB0ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlCitPQkpTID0gXAorCSQoV0lOMzJSRVMp IFwKKwl0ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlLm8KKworRVhURU5TSU9OID0gdGVzdF9zZXNz aW9uX2J1ZmZlcl91c2FnZQorREFUQSA9IHRlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2UtLTEuMC5z cWwKK1BHRklMRURFU0MgPSAidGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZSAtIHNob3cgYnVmZmVy IHVzYWdlIHN0YXRpc3RpY3MgZm9yIHRoZSBjdXJyZW50IHNlc3Npb24iCisKK1JFR1JFU1MgPSB0 ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlCisKK2lmZGVmIFVTRV9QR1hTCitQR19DT05GSUcgPSBw Z19jb25maWcKK1BHWFMgOj0gJChzaGVsbCAkKFBHX0NPTkZJRykgLS1wZ3hzKQoraW5jbHVkZSAk KFBHWFMpCitlbHNlCitzdWJkaXIgPSBzcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2Vzc2lvbl9idWZm ZXJfdXNhZ2UKK3RvcF9idWlsZGRpciA9IC4uLy4uLy4uLy4uCitpbmNsdWRlICQodG9wX2J1aWxk ZGlyKS9zcmMvTWFrZWZpbGUuZ2xvYmFsCitpbmNsdWRlICQodG9wX3NyY2RpcikvY29udHJpYi9j b250cmliLWdsb2JhbC5taworZW5kaWYKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVz dF9zZXNzaW9uX2J1ZmZlcl91c2FnZS9leHBlY3RlZC90ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdl Lm91dCBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZS9leHBlY3Rl ZC90ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlLm91dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMC4uNWY3ZDM0OTg3MWEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9t b2R1bGVzL3Rlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2UvZXhwZWN0ZWQvdGVzdF9zZXNzaW9uX2J1 ZmZlcl91c2FnZS5vdXQKQEAgLTAsMCArMSwzNDIgQEAKK0xPQUQgJ3Rlc3Rfc2Vzc2lvbl9idWZm ZXJfdXNhZ2UnOworQ1JFQVRFIEVYVEVOU0lPTiB0ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlOwor LS0gVmVyaWZ5IGFsbCBjb2x1bW5zIGFyZSBub24tbmVnYXRpdmUKK1NFTEVDVCBjb3VudCgqKSA9 IDEgQVMgb2sgRlJPTSB0ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlKCkKK1dIRVJFIHNoYXJlZF9i bGtzX2hpdCA+PSAwIEFORCBzaGFyZWRfYmxrc19yZWFkID49IDAKKyAgQU5EIHNoYXJlZF9ibGtz X2RpcnRpZWQgPj0gMCBBTkQgc2hhcmVkX2Jsa3Nfd3JpdHRlbiA+PSAwCisgIEFORCBsb2NhbF9i bGtzX2hpdCA+PSAwIEFORCBsb2NhbF9ibGtzX3JlYWQgPj0gMAorICBBTkQgbG9jYWxfYmxrc19k aXJ0aWVkID49IDAgQU5EIGxvY2FsX2Jsa3Nfd3JpdHRlbiA+PSAwCisgIEFORCB0ZW1wX2Jsa3Nf cmVhZCA+PSAwIEFORCB0ZW1wX2Jsa3Nfd3JpdHRlbiA+PSAwCisgIEFORCBzaGFyZWRfYmxrX3Jl YWRfdGltZSA+PSAwIEFORCBzaGFyZWRfYmxrX3dyaXRlX3RpbWUgPj0gMAorICBBTkQgbG9jYWxf YmxrX3JlYWRfdGltZSA+PSAwIEFORCBsb2NhbF9ibGtfd3JpdGVfdGltZSA+PSAwCisgIEFORCB0 ZW1wX2Jsa19yZWFkX3RpbWUgPj0gMCBBTkQgdGVtcF9ibGtfd3JpdGVfdGltZSA+PSAwOworIG9r IAorLS0tLQorIHQKKygxIHJvdykKKworLS0gVmVyaWZ5IGNvdW50ZXJzIGluY3JlYXNlIGFmdGVy IGJ1ZmZlciBhY3Rpdml0eQorU0VMRUNUIHRlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2VfcmVzZXQo KTsKKyB0ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlX3Jlc2V0IAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK0NSRUFURSBURU1QIFRBQkxFIHRlc3RfYnVm X2FjdGl2aXR5IChpZCBpbnQsIGRhdGEgdGV4dCk7CitJTlNFUlQgSU5UTyB0ZXN0X2J1Zl9hY3Rp dml0eSBTRUxFQ1QgaSwgcmVwZWF0KCd4JywgMTAwKSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAx MDAwKSBBUyBpOworU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF9idWZfYWN0aXZpdHk7CisgY291 bnQgCistLS0tLS0tCisgIDEwMDAKKygxIHJvdykKKworU0VMRUNUIGxvY2FsX2Jsa3NfaGl0ICsg bG9jYWxfYmxrc19yZWFkID4gMCBBUyBibG9ja3NfaW5jcmVhc2VkCitGUk9NIHRlc3Rfc2Vzc2lv bl9idWZmZXJfdXNhZ2UoKTsKKyBibG9ja3NfaW5jcmVhc2VkIAorLS0tLS0tLS0tLS0tLS0tLS0t CisgdAorKDEgcm93KQorCitEUk9QIFRBQkxFIHRlc3RfYnVmX2FjdGl2aXR5OworLS0gUGFyYWxs ZWwgcXVlcnkgdGVzdAorQ1JFQVRFIFRBQkxFIHBhcl9kY190YWIgKGEgaW50LCBiIGNoYXIoMjAw KSk7CitJTlNFUlQgSU5UTyBwYXJfZGNfdGFiIFNFTEVDVCBpLCByZXBlYXQoJ3gnLCAyMDApIEZS T00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMDApIEFTIGk7CitTRUxFQ1QgY291bnQoKikgRlJPTSBw YXJfZGNfdGFiOworIGNvdW50IAorLS0tLS0tLQorICA1MDAwCisoMSByb3cpCisKKy0tIE1lYXN1 cmUgc2VyaWFsIHNjYW4gZGVsdGEgKGxlYWRlciBkb2VzIGFsbCB0aGUgd29yaykKK1NFVCBtYXhf cGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMDsKK1NFTEVDVCB0ZXN0X3Nlc3Npb25fYnVm ZmVyX3VzYWdlX3Jlc2V0KCk7CisgdGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZV9yZXNldCAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgY291 bnQoKikgRlJPTSBwYXJfZGNfdGFiOworIGNvdW50IAorLS0tLS0tLQorICA1MDAwCisoMSByb3cp CisKK0NSRUFURSBURU1QIFRBQkxFIGRjX3NlcmlhbF9yZXN1bHQgQVMKK1NFTEVDVCBzaGFyZWRf Ymxrc19oaXQgQVMgc2VyaWFsX2RlbHRhIEZST00gdGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZSgp OworLS0gTWVhc3VyZSBwYXJhbGxlbCBzY2FuIGRlbHRhIHdpdGggbGVhZGVyIE5PVCBwYXJ0aWNp cGF0aW5nIGluIHNjYW5uaW5nLgorLS0gV29ya2VycyBkbyBhbGwgdGFibGUgc2Nhbm5pbmc7IGxl YWRlciBvbmx5IHJ1bnMgdGhlIEdhdGhlciBub2RlLgorU0VUIHBhcmFsbGVsX3NldHVwX2Nvc3Qg PSAwOworU0VUIHBhcmFsbGVsX3R1cGxlX2Nvc3QgPSAwOworU0VUIG1pbl9wYXJhbGxlbF90YWJs ZV9zY2FuX3NpemUgPSAwOworU0VUIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAy OworU0VUIHBhcmFsbGVsX2xlYWRlcl9wYXJ0aWNpcGF0aW9uID0gb2ZmOworU0VMRUNUIHRlc3Rf c2Vzc2lvbl9idWZmZXJfdXNhZ2VfcmVzZXQoKTsKKyB0ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdl X3Jlc2V0IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisK K1NFTEVDVCBjb3VudCgqKSBGUk9NIHBhcl9kY190YWI7CisgY291bnQgCistLS0tLS0tCisgIDUw MDAKKygxIHJvdykKKworLS0gQ29uZmlybSB3ZSBnb3QgYSBzaW1pbGFyIGhpdCBjb3VudGVyIHRo cm91Z2ggcGFyYWxsZWwgd29ya2VyIGFjY3VtdWxhdGlvbgorU0VMRUNUIHNoYXJlZF9ibGtzX2hp dCA+IHMuc2VyaWFsX2RlbHRhIC8gMiBBTkQgc2hhcmVkX2Jsa3NfaGl0IDwgcy5zZXJpYWxfZGVs dGEgKiAyCisgICAgICAgQVMgbGVhZGVyX2J1ZmZlcnNfbWF0Y2gKK0ZST00gdGVzdF9zZXNzaW9u X2J1ZmZlcl91c2FnZSgpLCBkY19zZXJpYWxfcmVzdWx0IHM7CisgbGVhZGVyX2J1ZmZlcnNfbWF0 Y2ggCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCitSRVNFVCBwYXJhbGxl bF9zZXR1cF9jb3N0OworUkVTRVQgcGFyYWxsZWxfdHVwbGVfY29zdDsKK1JFU0VUIG1pbl9wYXJh bGxlbF90YWJsZV9zY2FuX3NpemU7CitSRVNFVCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0 aGVyOworUkVTRVQgcGFyYWxsZWxfbGVhZGVyX3BhcnRpY2lwYXRpb247CitEUk9QIFRBQkxFIHBh cl9kY190YWIsIGRjX3NlcmlhbF9yZXN1bHQ7CistLQorLS0gQWJvcnQvZXhjZXB0aW9uIHRlc3Rz OiB2ZXJpZnkgYnVmZmVyIHVzYWdlIHN1cnZpdmVzIHZhcmlvdXMgZXJyb3IgcGF0aHMuCistLQor LS0gUm9sbGVkLWJhY2sgZGl2aWRlLWJ5LXplcm8gdW5kZXIgRVhQTEFJTiBBTkFMWVpFCitDUkVB VEUgVEVNUCBUQUJMRSBleGNfdGFiIChhIGludCwgYiBjaGFyKDIwKSk7CitTRUxFQ1QgdGVzdF9z ZXNzaW9uX2J1ZmZlcl91c2FnZV9yZXNldCgpOworIHRlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2Vf cmVzZXQgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKwor RVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUywgQ09TVFMgT0ZGKQorICAgICAgICBXSVRIIGlucyBB UyAoSU5TRVJUIElOVE8gZXhjX3RhYiBWQUxVRVMgKDEsICdhYWEnKSBSRVRVUk5JTkcgYSkKKyAg ICAgICAgU0VMRUNUIGEgLyAwIEZST00gaW5zOworRVJST1I6ICBkaXZpc2lvbiBieSB6ZXJvCitT RUxFQ1QgbG9jYWxfYmxrc19kaXJ0aWVkID4gMCBBUyBleGNlcHRpb25fYnVmZmVyc192aXNpYmxl CitGUk9NIHRlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2UoKTsKKyBleGNlcHRpb25fYnVmZmVyc192 aXNpYmxlIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCitEUk9Q IFRBQkxFIGV4Y190YWI7CistLSBVbmlxdWUgY29uc3RyYWludCB2aW9sYXRpb24gaW4gcmVndWxh ciBxdWVyeQorQ1JFQVRFIFRFTVAgVEFCTEUgdW5pcXVlX3RhYiAoYSBpbnQgVU5JUVVFLCBiIGNo YXIoMjApKTsKK0lOU0VSVCBJTlRPIHVuaXF1ZV90YWIgVkFMVUVTICgxLCAnZmlyc3QnKTsKK1NF TEVDVCB0ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlX3Jlc2V0KCk7CisgdGVzdF9zZXNzaW9uX2J1 ZmZlcl91c2FnZV9yZXNldCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAor KDEgcm93KQorCitJTlNFUlQgSU5UTyB1bmlxdWVfdGFiIFZBTFVFUyAoMSwgJ2R1cGxpY2F0ZScp OworRVJST1I6ICBkdXBsaWNhdGUga2V5IHZhbHVlIHZpb2xhdGVzIHVuaXF1ZSBjb25zdHJhaW50 ICJ1bmlxdWVfdGFiX2Ffa2V5IgorREVUQUlMOiAgS2V5IChhKT0oMSkgYWxyZWFkeSBleGlzdHMu CitTRUxFQ1QgbG9jYWxfYmxrc19oaXQgPiAwIEFTIHVuaXF1ZV92aW9sYXRpb25fYnVmZmVyc192 aXNpYmxlCitGUk9NIHRlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2UoKTsKKyB1bmlxdWVfdmlvbGF0 aW9uX2J1ZmZlcnNfdmlzaWJsZSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyB0CisoMSByb3cpCisKK0RST1AgVEFCTEUgdW5pcXVlX3RhYjsKKy0tIENhdWdodCBleGNlcHRp b24gaW4gUEwvcGdTUUwgc3VidHJhbnNhY3Rpb24gKEJFR0lOLi4uRVhDRVBUSU9OKQorQ1JFQVRF IFRFTVAgVEFCTEUgc3VieGFjdF90YWIgKGEgaW50LCBiIGNoYXIoMjApKTsKK0NSRUFURSBGVU5D VElPTiBzdWJ4YWN0X2V4Y19mdW5jKCkgUkVUVVJOUyB0ZXh0IEFTICQkCitCRUdJTgorICAgIEJF R0lOCisgICAgICAgIEVYRUNVVEUgJ0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMsIENPU1RTIE9G RikKKyAgICAgICAgICAgIFdJVEggaW5zIEFTIChJTlNFUlQgSU5UTyBzdWJ4YWN0X3RhYiBWQUxV RVMgKDEsICcnYWFhJycpIFJFVFVSTklORyBhKQorICAgICAgICAgICAgU0VMRUNUIGEgLyAwIEZS T00gaW5zJzsKKyAgICBFWENFUFRJT04gV0hFTiBkaXZpc2lvbl9ieV96ZXJvIFRIRU4KKyAgICAg ICAgUkVUVVJOICdjYXVnaHQnOworICAgIEVORDsKKyAgICBSRVRVUk4gJ25vdCByZWFjaGVkJzsK K0VORDsKKyQkIExBTkdVQUdFIHBscGdzcWw7CitTRUxFQ1QgdGVzdF9zZXNzaW9uX2J1ZmZlcl91 c2FnZV9yZXNldCgpOworIHRlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2VfcmVzZXQgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIHN1YnhhY3Rf ZXhjX2Z1bmMoKTsKKyBzdWJ4YWN0X2V4Y19mdW5jIAorLS0tLS0tLS0tLS0tLS0tLS0tCisgY2F1 Z2h0CisoMSByb3cpCisKK1NFTEVDVCBsb2NhbF9ibGtzX2RpcnRpZWQgPiAwIEFTIHN1YnhhY3Rf YnVmZmVyc192aXNpYmxlCitGUk9NIHRlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2UoKTsKKyBzdWJ4 YWN0X2J1ZmZlcnNfdmlzaWJsZSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0CisoMSBy b3cpCisKK0RST1AgRlVOQ1RJT04gc3VieGFjdF9leGNfZnVuYzsKK0RST1AgVEFCTEUgc3VieGFj dF90YWI7CistLSBDdXJzb3IgKEZPUiBsb29wKSBpbiBhYm9ydGVkIHN1YnRyYW5zYWN0aW9uOyB2 ZXJpZnkgcG9zdC1leGNlcHRpb24gdHJhY2tpbmcKK0NSRUFURSBURU1QIFRBQkxFIGN1cnNvcl90 YWIgKGEgaW50LCBiIGNoYXIoMjAwKSk7CitJTlNFUlQgSU5UTyBjdXJzb3JfdGFiIFNFTEVDVCBp LCByZXBlYXQoJ3gnLCAyMDApIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMCkgQVMgaTsKK0NS RUFURSBGVU5DVElPTiBjdXJzb3JfZXhjX2Z1bmMoKSBSRVRVUk5TIHRleHQgQVMgJCQKK0RFQ0xB UkUKKyAgICByZWMgcmVjb3JkOworICAgIGNudCBpbnQgOj0gMDsKK0JFR0lOCisgICAgQkVHSU4K KyAgICAgICAgRk9SIHJlYyBJTiBTRUxFQ1QgKiBGUk9NIGN1cnNvcl90YWIgTE9PUAorICAgICAg ICAgICAgY250IDo9IGNudCArIDE7CisgICAgICAgICAgICBJRiBjbnQgPSAyNTAgVEhFTgorICAg ICAgICAgICAgICAgIFBFUkZPUk0gMSAvIDA7CisgICAgICAgICAgICBFTkQgSUY7CisgICAgICAg IEVORCBMT09QOworICAgIEVYQ0VQVElPTiBXSEVOIGRpdmlzaW9uX2J5X3plcm8gVEhFTgorICAg ICAgICBSRVRVUk4gJ2NhdWdodCBhZnRlciAnIHx8IGNudCB8fCAnIHJvd3MnOworICAgIEVORDsK KyAgICBSRVRVUk4gJ25vdCByZWFjaGVkJzsKK0VORDsKKyQkIExBTkdVQUdFIHBscGdzcWw7CitT RUxFQ1QgdGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZV9yZXNldCgpOworIHRlc3Rfc2Vzc2lvbl9i dWZmZXJfdXNhZ2VfcmVzZXQgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAK KygxIHJvdykKKworU0VMRUNUIGN1cnNvcl9leGNfZnVuYygpOworICAgIGN1cnNvcl9leGNfZnVu YyAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgY2F1Z2h0IGFmdGVyIDI1MCByb3dzCiso MSByb3cpCisKK1NFTEVDVCBsb2NhbF9ibGtzX2hpdCArIGxvY2FsX2Jsa3NfcmVhZCA+IDAKKyAg ICAgICBBUyBjdXJzb3Jfc3VieGFjdF9idWZmZXJzX3Zpc2libGUKK0ZST00gdGVzdF9zZXNzaW9u X2J1ZmZlcl91c2FnZSgpOworIGN1cnNvcl9zdWJ4YWN0X2J1ZmZlcnNfdmlzaWJsZSAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCitEUk9QIEZVTkNUSU9O IGN1cnNvcl9leGNfZnVuYzsKK0RST1AgVEFCTEUgY3Vyc29yX3RhYjsKKy0tIFRyaWdnZXIgYWJv cnQgdW5kZXIgRVhQTEFJTiBBTkFMWVpFOiB2ZXJpZnkgdGhhdCBidWZmZXIgYWN0aXZpdHkgZnJv bSBhCistLSB0cmlnZ2VyIHRoYXQgdGhyb3dzIGFuIGVycm9yIGlzIHN0aWxsIHByb3Blcmx5IHBy b3BhZ2F0ZWQuCitDUkVBVEUgVEVNUCBUQUJMRSB0cmlnX2Vycl90YWIgKGEgaW50KTsKK0NSRUFU RSBURU1QIFRBQkxFIHRyaWdfd29ya190YWIgKGEgaW50LCBiIGNoYXIoMjAwKSk7CitJTlNFUlQg SU5UTyB0cmlnX3dvcmtfdGFiIFNFTEVDVCBpLCByZXBlYXQoJ3gnLCAyMDApIEZST00gZ2VuZXJh dGVfc2VyaWVzKDEsIDUwMCkgQVMgaTsKKy0tIFdhcm0gbG9jYWwgYnVmZmVycyBzbyB0cmlnX3dv cmtfdGFiIHJlYWRzIGJlY29tZSBoaXRzCitTRUxFQ1QgY291bnQoKikgRlJPTSB0cmlnX3dvcmtf dGFiOworIGNvdW50IAorLS0tLS0tLQorICAgNTAwCisoMSByb3cpCisKK0NSRUFURSBGVU5DVElP TiB0cmlnX2Vycl9mdW5jKCkgUkVUVVJOUyB0cmlnZ2VyIEFTICQkCitCRUdJTgorICAgIFBFUkZP Uk0gY291bnQoKikgRlJPTSB0cmlnX3dvcmtfdGFiOworICAgIFJBSVNFIEVYQ0VQVElPTiAndHJp Z2dlciBlcnJvcic7CisgICAgUkVUVVJOIE5FVzsKK0VORDsKKyQkIExBTkdVQUdFIHBscGdzcWw7 CitDUkVBVEUgVFJJR0dFUiB0cmlnX2VyciBCRUZPUkUgSU5TRVJUIE9OIHRyaWdfZXJyX3RhYgor ICAgIEZPUiBFQUNIIFJPVyBFWEVDVVRFIEZVTkNUSU9OIHRyaWdfZXJyX2Z1bmMoKTsKKy0tIE1l YXN1cmUgaG93IG1hbnkgbG9jYWwgYnVmZmVyIGhpdHMgYSBzY2FuIG9mIHRyaWdfd29ya190YWIg cHJvZHVjZXMKK1NFTEVDVCB0ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlX3Jlc2V0KCk7CisgdGVz dF9zZXNzaW9uX2J1ZmZlcl91c2FnZV9yZXNldCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgY291bnQoKikgRlJPTSB0cmlnX3dvcmtfdGFi OworIGNvdW50IAorLS0tLS0tLQorICAgNTAwCisoMSByb3cpCisKK0NSRUFURSBURU1QIFRBQkxF IHRyaWdfc2VyaWFsX3Jlc3VsdCBBUworU0VMRUNUIGxvY2FsX2Jsa3NfaGl0IEFTIHNlcmlhbF9o aXRzIEZST00gdGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZSgpOworLS0gTm93IHRyaWdnZXIgdGhl IHNhbWUgc2NhbiB2aWEgYSB0cmlnZ2VyIHRoYXQgZXJyb3JzCitTRUxFQ1QgdGVzdF9zZXNzaW9u X2J1ZmZlcl91c2FnZV9yZXNldCgpOworIHRlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2VfcmVzZXQg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworRVhQTEFJ TiAoQU5BTFlaRSwgQlVGRkVSUywgQ09TVFMgT0ZGKQorICAgIElOU0VSVCBJTlRPIHRyaWdfZXJy X3RhYiBWQUxVRVMgKDEpOworRVJST1I6ICB0cmlnZ2VyIGVycm9yCitDT05URVhUOiAgUEwvcGdT UUwgZnVuY3Rpb24gdHJpZ19lcnJfZnVuYygpIGxpbmUgNCBhdCBSQUlTRQorLS0gVGhlIHRyaWdn ZXIgc2Nhbm5lZCB0cmlnX3dvcmtfdGFiIGJ1dCBlcnJvcmVkIGJlZm9yZSBJbnN0clN0b3BUcmln Z2VyIHJhbi4KKy0tIEluc3RyU3RvcEZpbmFsaXplIGluIHRoZSBQR19DQVRDSCBlbnN1cmVzIGJ1 ZmZlciBkYXRhIGlzIHN0aWxsIHByb3BhZ2F0ZWQuCitTRUxFQ1QgbG9jYWxfYmxrc19oaXQgPj0g cy5zZXJpYWxfaGl0cyAvIDIKKyAgICAgICBBUyB0cmlnZ2VyX2Fib3J0X2J1ZmZlcnNfcHJvcGFn YXRlZAorRlJPTSB0ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlKCksIHRyaWdfc2VyaWFsX3Jlc3Vs dCBzOworIHRyaWdnZXJfYWJvcnRfYnVmZmVyc19wcm9wYWdhdGVkIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworRFJPUCBUQUJMRSB0cmlnX2Vycl90 YWIsIHRyaWdfd29ya190YWIsIHRyaWdfc2VyaWFsX3Jlc3VsdDsKK0RST1AgRlVOQ1RJT04gdHJp Z19lcnJfZnVuYzsKKy0tIFBhcmFsbGVsIHdvcmtlciBhYm9ydDogd29ya2VyIGJ1ZmZlciBhY3Rp dml0eSBpcyBjdXJyZW50bHkgTk9UIHByb3BhZ2F0ZWQgb24gYWJvcnQuCistLQorLS0gV2hlbiBh IHBhcmFsbGVsIHdvcmtlciBhYm9ydHMsIEluc3RyRW5kUGFyYWxsZWxRdWVyeSBhbmQKKy0tIEV4 ZWNQYXJhbGxlbFJlcG9ydEluc3RydW1lbnRhdGlvbiBuZXZlciBydW4sIHNvIHRoZSB3b3JrZXIn cyBidWZmZXIKKy0tIGFjdGl2aXR5IGlzIG5ldmVyIHdyaXR0ZW4gdG8gc2hhcmVkIG1lbW9yeSwg ZGVzcGl0ZSB0aGUgaW5mb3JtYXRpb24gaGF2aW5nIGJlZW4KKy0tIGNhcHR1cmVkIGJ5IHRoZSBy ZXMgb3duZXIgcmVsZWFzZSBpbnN0cnVtZW50YXRpb24gaGFuZGxpbmcuCitDUkVBVEUgVEFCTEUg cGFyX2Fib3J0X3RhYiAoYSBpbnQsIGIgY2hhcigyMDApKTsKK0lOU0VSVCBJTlRPIHBhcl9hYm9y dF90YWIgU0VMRUNUIGksIHJlcGVhdCgneCcsIDIwMCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwg NTAwMCkgQVMgaTsKKy0tIFdhcm0gc2hhcmVkIGJ1ZmZlcnMgc28gYWxsIHJlYWRzIGJlY29tZSBo aXRzCitTRUxFQ1QgY291bnQoKikgRlJPTSBwYXJfYWJvcnRfdGFiOworIGNvdW50IAorLS0tLS0t LQorICA1MDAwCisoMSByb3cpCisKKy0tIE1lYXN1cmUgc2VyaWFsIHNjYW4gZGVsdGEgYXMgYSBy ZWZlcmVuY2UgKGxlYWRlciByZWFkcyBhbGwgYmxvY2tzKQorU0VUIG1heF9wYXJhbGxlbF93b3Jr ZXJzX3Blcl9nYXRoZXIgPSAwOworU0VMRUNUIHRlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2VfcmVz ZXQoKTsKKyB0ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlX3Jlc2V0IAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBiOjppbnQyIEZST00gcGFy X2Fib3J0X3RhYiBXSEVSRSBhID4gMTAwMDsKK0VSUk9SOiAgaW52YWxpZCBpbnB1dCBzeW50YXgg Zm9yIHR5cGUgc21hbGxpbnQ6ICJ4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4 eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4 eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4 eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eCIKK0NSRUFU RSBUQUJMRSBwYXJfYWJvcnRfc2VyaWFsX3Jlc3VsdCBBUworU0VMRUNUIHNoYXJlZF9ibGtzX2hp dCBBUyBzZXJpYWxfZGVsdGEgRlJPTSB0ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlKCk7CistLSBO b3cgZm9yY2UgcGFyYWxsZWwgd2l0aCBsZWFkZXIgTk9UIHBhcnRpY2lwYXRpbmcgaW4gc2Nhbm5p bmcKK1NFVCBwYXJhbGxlbF9zZXR1cF9jb3N0ID0gMDsKK1NFVCBwYXJhbGxlbF90dXBsZV9jb3N0 ID0gMDsKK1NFVCBtaW5fcGFyYWxsZWxfdGFibGVfc2Nhbl9zaXplID0gMDsKK1NFVCBtYXhfcGFy YWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMjsKK1NFVCBwYXJhbGxlbF9sZWFkZXJfcGFydGlj aXBhdGlvbiA9IG9mZjsKK1NFVCBkZWJ1Z19wYXJhbGxlbF9xdWVyeSA9IG9uOyAtLSBFbnN1cmUg d2UgZ2V0IENPTlRFWFQgbGluZSBjb25zaXN0ZW50bHkKK1NFTEVDVCB0ZXN0X3Nlc3Npb25fYnVm ZmVyX3VzYWdlX3Jlc2V0KCk7CisgdGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZV9yZXNldCAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgYjo6 aW50MiBGUk9NIHBhcl9hYm9ydF90YWIgV0hFUkUgYSA+IDEwMDA7CitFUlJPUjogIGludmFsaWQg aW5wdXQgc3ludGF4IGZvciB0eXBlIHNtYWxsaW50OiAieHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4 eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4 eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4 eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4 eHh4eHgiCitDT05URVhUOiAgcGFyYWxsZWwgd29ya2VyCitSRVNFVCBkZWJ1Z19wYXJhbGxlbF9x dWVyeTsKKy0tIFdvcmtlcnMgc2Nhbm5lZCB0aGUgdGFibGUgYnV0IGFib3J0ZWQgYmVmb3JlIHJl cG9ydGluZyBzdGF0cyBiYWNrLgorLS0gVGhlIGxlYWRlcidzIGRlbHRhIHNob3VsZCBiZSBtdWNo IGxlc3MgdGhhbiBhIHNlcmlhbCBzY2FuLCBkb2N1bWVudGluZworLS0gdGhhdCB3b3JrZXIgYnVm ZmVyIGFjdGl2aXR5IGlzIGxvc3Qgb24gYWJvcnQuCitTRUxFQ1Qgc2hhcmVkX2Jsa3NfaGl0IDwg cy5zZXJpYWxfZGVsdGEgLyAyCisgICAgICAgQVMgd29ya2VyX2Fib3J0X2J1ZmZlcnNfbm90X3By b3BhZ2F0ZWQKK0ZST00gdGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZSgpLCBwYXJfYWJvcnRfc2Vy aWFsX3Jlc3VsdCBzOworIHdvcmtlcl9hYm9ydF9idWZmZXJzX25vdF9wcm9wYWdhdGVkIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworUkVTRVQg cGFyYWxsZWxfc2V0dXBfY29zdDsKK1JFU0VUIHBhcmFsbGVsX3R1cGxlX2Nvc3Q7CitSRVNFVCBt aW5fcGFyYWxsZWxfdGFibGVfc2Nhbl9zaXplOworUkVTRVQgbWF4X3BhcmFsbGVsX3dvcmtlcnNf cGVyX2dhdGhlcjsKK1JFU0VUIHBhcmFsbGVsX2xlYWRlcl9wYXJ0aWNpcGF0aW9uOworRFJPUCBU QUJMRSBwYXJfYWJvcnRfdGFiLCBwYXJfYWJvcnRfc2VyaWFsX3Jlc3VsdDsKKy0tIENsZWFudXAK K0RST1AgRVhURU5TSU9OIHRlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2U7CmRpZmYgLS1naXQgYS9z cmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2UvbWVzb24uYnVpbGQgYi9z cmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2UvbWVzb24uYnVpbGQKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmI5NmY2N2RjN2ZlCi0tLSAvZGV2 L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlL21l c29uLmJ1aWxkCkBAIC0wLDAgKzEsMzMgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDI2LCBQb3N0Z3Jl U1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorCit0ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdl X3NvdXJjZXMgPSBmaWxlcygKKyAgJ3Rlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2UuYycsCispCisK K2lmIGhvc3Rfc3lzdGVtID09ICd3aW5kb3dzJworICB0ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdl X3NvdXJjZXMgKz0gcmNfbGliX2dlbi5wcm9jZXNzKHdpbjMydmVyX3JjLCBleHRyYV9hcmdzOiBb CisgICAgJy0tTkFNRScsICd0ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlJywKKyAgICAnLS1GSUxF REVTQycsICd0ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlIC0gc2hvdyBidWZmZXIgdXNhZ2Ugc3Rh dGlzdGljcyBmb3IgdGhlIGN1cnJlbnQgc2Vzc2lvbicsXSkKK2VuZGlmCisKK3Rlc3Rfc2Vzc2lv bl9idWZmZXJfdXNhZ2UgPSBzaGFyZWRfbW9kdWxlKCd0ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdl JywKKyAgdGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZV9zb3VyY2VzLAorICBrd2FyZ3M6IHBnX3Rl c3RfbW9kX2FyZ3MsCispCit0ZXN0X2luc3RhbGxfbGlicyArPSB0ZXN0X3Nlc3Npb25fYnVmZmVy X3VzYWdlCisKK3Rlc3RfaW5zdGFsbF9kYXRhICs9IGZpbGVzKAorICAndGVzdF9zZXNzaW9uX2J1 ZmZlcl91c2FnZS5jb250cm9sJywKKyAgJ3Rlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2UtLTEuMC5z cWwnLAorKQorCit0ZXN0cyArPSB7CisgICduYW1lJzogJ3Rlc3Rfc2Vzc2lvbl9idWZmZXJfdXNh Z2UnLAorICAnc2QnOiBtZXNvbi5jdXJyZW50X3NvdXJjZV9kaXIoKSwKKyAgJ2JkJzogbWVzb24u Y3VycmVudF9idWlsZF9kaXIoKSwKKyAgJ3JlZ3Jlc3MnOiB7CisgICAgJ3NxbCc6IFsKKyAgICAg ICd0ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlJywKKyAgICBdLAorICB9LAorfQpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlL3NxbC90ZXN0X3Nl c3Npb25fYnVmZmVyX3VzYWdlLnNxbCBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zZXNzaW9uX2J1 ZmZlcl91c2FnZS9zcWwvdGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZS5zcWwKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmRhZjIxNTljNGE2Ci0tLSAvZGV2L251bGwKKysr IGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlL3NxbC90ZXN0X3Nl c3Npb25fYnVmZmVyX3VzYWdlLnNxbApAQCAtMCwwICsxLDI0NSBAQAorTE9BRCAndGVzdF9zZXNz aW9uX2J1ZmZlcl91c2FnZSc7CitDUkVBVEUgRVhURU5TSU9OIHRlc3Rfc2Vzc2lvbl9idWZmZXJf dXNhZ2U7CisKKy0tIFZlcmlmeSBhbGwgY29sdW1ucyBhcmUgbm9uLW5lZ2F0aXZlCitTRUxFQ1Qg Y291bnQoKikgPSAxIEFTIG9rIEZST00gdGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZSgpCitXSEVS RSBzaGFyZWRfYmxrc19oaXQgPj0gMCBBTkQgc2hhcmVkX2Jsa3NfcmVhZCA+PSAwCisgIEFORCBz aGFyZWRfYmxrc19kaXJ0aWVkID49IDAgQU5EIHNoYXJlZF9ibGtzX3dyaXR0ZW4gPj0gMAorICBB TkQgbG9jYWxfYmxrc19oaXQgPj0gMCBBTkQgbG9jYWxfYmxrc19yZWFkID49IDAKKyAgQU5EIGxv Y2FsX2Jsa3NfZGlydGllZCA+PSAwIEFORCBsb2NhbF9ibGtzX3dyaXR0ZW4gPj0gMAorICBBTkQg dGVtcF9ibGtzX3JlYWQgPj0gMCBBTkQgdGVtcF9ibGtzX3dyaXR0ZW4gPj0gMAorICBBTkQgc2hh cmVkX2Jsa19yZWFkX3RpbWUgPj0gMCBBTkQgc2hhcmVkX2Jsa193cml0ZV90aW1lID49IDAKKyAg QU5EIGxvY2FsX2Jsa19yZWFkX3RpbWUgPj0gMCBBTkQgbG9jYWxfYmxrX3dyaXRlX3RpbWUgPj0g MAorICBBTkQgdGVtcF9ibGtfcmVhZF90aW1lID49IDAgQU5EIHRlbXBfYmxrX3dyaXRlX3RpbWUg Pj0gMDsKKworLS0gVmVyaWZ5IGNvdW50ZXJzIGluY3JlYXNlIGFmdGVyIGJ1ZmZlciBhY3Rpdml0 eQorU0VMRUNUIHRlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2VfcmVzZXQoKTsKKworQ1JFQVRFIFRF TVAgVEFCTEUgdGVzdF9idWZfYWN0aXZpdHkgKGlkIGludCwgZGF0YSB0ZXh0KTsKK0lOU0VSVCBJ TlRPIHRlc3RfYnVmX2FjdGl2aXR5IFNFTEVDVCBpLCByZXBlYXQoJ3gnLCAxMDApIEZST00gZ2Vu ZXJhdGVfc2VyaWVzKDEsIDEwMDApIEFTIGk7CitTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X2J1 Zl9hY3Rpdml0eTsKKworU0VMRUNUIGxvY2FsX2Jsa3NfaGl0ICsgbG9jYWxfYmxrc19yZWFkID4g MCBBUyBibG9ja3NfaW5jcmVhc2VkCitGUk9NIHRlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2UoKTsK KworRFJPUCBUQUJMRSB0ZXN0X2J1Zl9hY3Rpdml0eTsKKworLS0gUGFyYWxsZWwgcXVlcnkgdGVz dAorQ1JFQVRFIFRBQkxFIHBhcl9kY190YWIgKGEgaW50LCBiIGNoYXIoMjAwKSk7CitJTlNFUlQg SU5UTyBwYXJfZGNfdGFiIFNFTEVDVCBpLCByZXBlYXQoJ3gnLCAyMDApIEZST00gZ2VuZXJhdGVf c2VyaWVzKDEsIDUwMDApIEFTIGk7CisKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHBhcl9kY190YWI7 CisKKy0tIE1lYXN1cmUgc2VyaWFsIHNjYW4gZGVsdGEgKGxlYWRlciBkb2VzIGFsbCB0aGUgd29y aykKK1NFVCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMDsKKworU0VMRUNUIHRl c3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2VfcmVzZXQoKTsKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHBh cl9kY190YWI7CisKK0NSRUFURSBURU1QIFRBQkxFIGRjX3NlcmlhbF9yZXN1bHQgQVMKK1NFTEVD VCBzaGFyZWRfYmxrc19oaXQgQVMgc2VyaWFsX2RlbHRhIEZST00gdGVzdF9zZXNzaW9uX2J1ZmZl cl91c2FnZSgpOworCistLSBNZWFzdXJlIHBhcmFsbGVsIHNjYW4gZGVsdGEgd2l0aCBsZWFkZXIg Tk9UIHBhcnRpY2lwYXRpbmcgaW4gc2Nhbm5pbmcuCistLSBXb3JrZXJzIGRvIGFsbCB0YWJsZSBz Y2FubmluZzsgbGVhZGVyIG9ubHkgcnVucyB0aGUgR2F0aGVyIG5vZGUuCitTRVQgcGFyYWxsZWxf c2V0dXBfY29zdCA9IDA7CitTRVQgcGFyYWxsZWxfdHVwbGVfY29zdCA9IDA7CitTRVQgbWluX3Bh cmFsbGVsX3RhYmxlX3NjYW5fc2l6ZSA9IDA7CitTRVQgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVy X2dhdGhlciA9IDI7CitTRVQgcGFyYWxsZWxfbGVhZGVyX3BhcnRpY2lwYXRpb24gPSBvZmY7CisK K1NFTEVDVCB0ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlX3Jlc2V0KCk7CitTRUxFQ1QgY291bnQo KikgRlJPTSBwYXJfZGNfdGFiOworCistLSBDb25maXJtIHdlIGdvdCBhIHNpbWlsYXIgaGl0IGNv dW50ZXIgdGhyb3VnaCBwYXJhbGxlbCB3b3JrZXIgYWNjdW11bGF0aW9uCitTRUxFQ1Qgc2hhcmVk X2Jsa3NfaGl0ID4gcy5zZXJpYWxfZGVsdGEgLyAyIEFORCBzaGFyZWRfYmxrc19oaXQgPCBzLnNl cmlhbF9kZWx0YSAqIDIKKyAgICAgICBBUyBsZWFkZXJfYnVmZmVyc19tYXRjaAorRlJPTSB0ZXN0 X3Nlc3Npb25fYnVmZmVyX3VzYWdlKCksIGRjX3NlcmlhbF9yZXN1bHQgczsKKworUkVTRVQgcGFy YWxsZWxfc2V0dXBfY29zdDsKK1JFU0VUIHBhcmFsbGVsX3R1cGxlX2Nvc3Q7CitSRVNFVCBtaW5f cGFyYWxsZWxfdGFibGVfc2Nhbl9zaXplOworUkVTRVQgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVy X2dhdGhlcjsKK1JFU0VUIHBhcmFsbGVsX2xlYWRlcl9wYXJ0aWNpcGF0aW9uOworCitEUk9QIFRB QkxFIHBhcl9kY190YWIsIGRjX3NlcmlhbF9yZXN1bHQ7CisKKy0tCistLSBBYm9ydC9leGNlcHRp b24gdGVzdHM6IHZlcmlmeSBidWZmZXIgdXNhZ2Ugc3Vydml2ZXMgdmFyaW91cyBlcnJvciBwYXRo cy4KKy0tCisKKy0tIFJvbGxlZC1iYWNrIGRpdmlkZS1ieS16ZXJvIHVuZGVyIEVYUExBSU4gQU5B TFlaRQorQ1JFQVRFIFRFTVAgVEFCTEUgZXhjX3RhYiAoYSBpbnQsIGIgY2hhcigyMCkpOworCitT RUxFQ1QgdGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZV9yZXNldCgpOworCitFWFBMQUlOIChBTkFM WVpFLCBCVUZGRVJTLCBDT1NUUyBPRkYpCisgICAgICAgIFdJVEggaW5zIEFTIChJTlNFUlQgSU5U TyBleGNfdGFiIFZBTFVFUyAoMSwgJ2FhYScpIFJFVFVSTklORyBhKQorICAgICAgICBTRUxFQ1Qg YSAvIDAgRlJPTSBpbnM7CisKK1NFTEVDVCBsb2NhbF9ibGtzX2RpcnRpZWQgPiAwIEFTIGV4Y2Vw dGlvbl9idWZmZXJzX3Zpc2libGUKK0ZST00gdGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZSgpOwor CitEUk9QIFRBQkxFIGV4Y190YWI7CisKKy0tIFVuaXF1ZSBjb25zdHJhaW50IHZpb2xhdGlvbiBp biByZWd1bGFyIHF1ZXJ5CitDUkVBVEUgVEVNUCBUQUJMRSB1bmlxdWVfdGFiIChhIGludCBVTklR VUUsIGIgY2hhcigyMCkpOworSU5TRVJUIElOVE8gdW5pcXVlX3RhYiBWQUxVRVMgKDEsICdmaXJz dCcpOworCitTRUxFQ1QgdGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZV9yZXNldCgpOworSU5TRVJU IElOVE8gdW5pcXVlX3RhYiBWQUxVRVMgKDEsICdkdXBsaWNhdGUnKTsKKworU0VMRUNUIGxvY2Fs X2Jsa3NfaGl0ID4gMCBBUyB1bmlxdWVfdmlvbGF0aW9uX2J1ZmZlcnNfdmlzaWJsZQorRlJPTSB0 ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlKCk7CisKK0RST1AgVEFCTEUgdW5pcXVlX3RhYjsKKwor LS0gQ2F1Z2h0IGV4Y2VwdGlvbiBpbiBQTC9wZ1NRTCBzdWJ0cmFuc2FjdGlvbiAoQkVHSU4uLi5F WENFUFRJT04pCitDUkVBVEUgVEVNUCBUQUJMRSBzdWJ4YWN0X3RhYiAoYSBpbnQsIGIgY2hhcigy MCkpOworCitDUkVBVEUgRlVOQ1RJT04gc3VieGFjdF9leGNfZnVuYygpIFJFVFVSTlMgdGV4dCBB UyAkJAorQkVHSU4KKyAgICBCRUdJTgorICAgICAgICBFWEVDVVRFICdFWFBMQUlOIChBTkFMWVpF LCBCVUZGRVJTLCBDT1NUUyBPRkYpCisgICAgICAgICAgICBXSVRIIGlucyBBUyAoSU5TRVJUIElO VE8gc3VieGFjdF90YWIgVkFMVUVTICgxLCAnJ2FhYScnKSBSRVRVUk5JTkcgYSkKKyAgICAgICAg ICAgIFNFTEVDVCBhIC8gMCBGUk9NIGlucyc7CisgICAgRVhDRVBUSU9OIFdIRU4gZGl2aXNpb25f YnlfemVybyBUSEVOCisgICAgICAgIFJFVFVSTiAnY2F1Z2h0JzsKKyAgICBFTkQ7CisgICAgUkVU VVJOICdub3QgcmVhY2hlZCc7CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBnc3FsOworCitTRUxFQ1Qg dGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZV9yZXNldCgpOworU0VMRUNUIHN1YnhhY3RfZXhjX2Z1 bmMoKTsKKworU0VMRUNUIGxvY2FsX2Jsa3NfZGlydGllZCA+IDAgQVMgc3VieGFjdF9idWZmZXJz X3Zpc2libGUKK0ZST00gdGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZSgpOworCitEUk9QIEZVTkNU SU9OIHN1YnhhY3RfZXhjX2Z1bmM7CitEUk9QIFRBQkxFIHN1YnhhY3RfdGFiOworCistLSBDdXJz b3IgKEZPUiBsb29wKSBpbiBhYm9ydGVkIHN1YnRyYW5zYWN0aW9uOyB2ZXJpZnkgcG9zdC1leGNl cHRpb24gdHJhY2tpbmcKK0NSRUFURSBURU1QIFRBQkxFIGN1cnNvcl90YWIgKGEgaW50LCBiIGNo YXIoMjAwKSk7CitJTlNFUlQgSU5UTyBjdXJzb3JfdGFiIFNFTEVDVCBpLCByZXBlYXQoJ3gnLCAy MDApIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMCkgQVMgaTsKKworQ1JFQVRFIEZVTkNUSU9O IGN1cnNvcl9leGNfZnVuYygpIFJFVFVSTlMgdGV4dCBBUyAkJAorREVDTEFSRQorICAgIHJlYyBy ZWNvcmQ7CisgICAgY250IGludCA6PSAwOworQkVHSU4KKyAgICBCRUdJTgorICAgICAgICBGT1Ig cmVjIElOIFNFTEVDVCAqIEZST00gY3Vyc29yX3RhYiBMT09QCisgICAgICAgICAgICBjbnQgOj0g Y250ICsgMTsKKyAgICAgICAgICAgIElGIGNudCA9IDI1MCBUSEVOCisgICAgICAgICAgICAgICAg UEVSRk9STSAxIC8gMDsKKyAgICAgICAgICAgIEVORCBJRjsKKyAgICAgICAgRU5EIExPT1A7Cisg ICAgRVhDRVBUSU9OIFdIRU4gZGl2aXNpb25fYnlfemVybyBUSEVOCisgICAgICAgIFJFVFVSTiAn Y2F1Z2h0IGFmdGVyICcgfHwgY250IHx8ICcgcm93cyc7CisgICAgRU5EOworICAgIFJFVFVSTiAn bm90IHJlYWNoZWQnOworRU5EOworJCQgTEFOR1VBR0UgcGxwZ3NxbDsKKworU0VMRUNUIHRlc3Rf c2Vzc2lvbl9idWZmZXJfdXNhZ2VfcmVzZXQoKTsKK1NFTEVDVCBjdXJzb3JfZXhjX2Z1bmMoKTsK KworU0VMRUNUIGxvY2FsX2Jsa3NfaGl0ICsgbG9jYWxfYmxrc19yZWFkID4gMAorICAgICAgIEFT IGN1cnNvcl9zdWJ4YWN0X2J1ZmZlcnNfdmlzaWJsZQorRlJPTSB0ZXN0X3Nlc3Npb25fYnVmZmVy X3VzYWdlKCk7CisKK0RST1AgRlVOQ1RJT04gY3Vyc29yX2V4Y19mdW5jOworRFJPUCBUQUJMRSBj dXJzb3JfdGFiOworCistLSBUcmlnZ2VyIGFib3J0IHVuZGVyIEVYUExBSU4gQU5BTFlaRTogdmVy aWZ5IHRoYXQgYnVmZmVyIGFjdGl2aXR5IGZyb20gYQorLS0gdHJpZ2dlciB0aGF0IHRocm93cyBh biBlcnJvciBpcyBzdGlsbCBwcm9wZXJseSBwcm9wYWdhdGVkLgorQ1JFQVRFIFRFTVAgVEFCTEUg dHJpZ19lcnJfdGFiIChhIGludCk7CitDUkVBVEUgVEVNUCBUQUJMRSB0cmlnX3dvcmtfdGFiIChh IGludCwgYiBjaGFyKDIwMCkpOworSU5TRVJUIElOVE8gdHJpZ193b3JrX3RhYiBTRUxFQ1QgaSwg cmVwZWF0KCd4JywgMjAwKSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MDApIEFTIGk7CisKKy0t IFdhcm0gbG9jYWwgYnVmZmVycyBzbyB0cmlnX3dvcmtfdGFiIHJlYWRzIGJlY29tZSBoaXRzCitT RUxFQ1QgY291bnQoKikgRlJPTSB0cmlnX3dvcmtfdGFiOworCitDUkVBVEUgRlVOQ1RJT04gdHJp Z19lcnJfZnVuYygpIFJFVFVSTlMgdHJpZ2dlciBBUyAkJAorQkVHSU4KKyAgICBQRVJGT1JNIGNv dW50KCopIEZST00gdHJpZ193b3JrX3RhYjsKKyAgICBSQUlTRSBFWENFUFRJT04gJ3RyaWdnZXIg ZXJyb3InOworICAgIFJFVFVSTiBORVc7CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBnc3FsOworCitD UkVBVEUgVFJJR0dFUiB0cmlnX2VyciBCRUZPUkUgSU5TRVJUIE9OIHRyaWdfZXJyX3RhYgorICAg IEZPUiBFQUNIIFJPVyBFWEVDVVRFIEZVTkNUSU9OIHRyaWdfZXJyX2Z1bmMoKTsKKworLS0gTWVh c3VyZSBob3cgbWFueSBsb2NhbCBidWZmZXIgaGl0cyBhIHNjYW4gb2YgdHJpZ193b3JrX3RhYiBw cm9kdWNlcworU0VMRUNUIHRlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2VfcmVzZXQoKTsKK1NFTEVD VCBjb3VudCgqKSBGUk9NIHRyaWdfd29ya190YWI7CisKK0NSRUFURSBURU1QIFRBQkxFIHRyaWdf c2VyaWFsX3Jlc3VsdCBBUworU0VMRUNUIGxvY2FsX2Jsa3NfaGl0IEFTIHNlcmlhbF9oaXRzIEZS T00gdGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZSgpOworCistLSBOb3cgdHJpZ2dlciB0aGUgc2Ft ZSBzY2FuIHZpYSBhIHRyaWdnZXIgdGhhdCBlcnJvcnMKK1NFTEVDVCB0ZXN0X3Nlc3Npb25fYnVm ZmVyX3VzYWdlX3Jlc2V0KCk7CitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTLCBDT1NUUyBPRkYp CisgICAgSU5TRVJUIElOVE8gdHJpZ19lcnJfdGFiIFZBTFVFUyAoMSk7CisKKy0tIFRoZSB0cmln Z2VyIHNjYW5uZWQgdHJpZ193b3JrX3RhYiBidXQgZXJyb3JlZCBiZWZvcmUgSW5zdHJTdG9wVHJp Z2dlciByYW4uCistLSBJbnN0clN0b3BGaW5hbGl6ZSBpbiB0aGUgUEdfQ0FUQ0ggZW5zdXJlcyBi dWZmZXIgZGF0YSBpcyBzdGlsbCBwcm9wYWdhdGVkLgorU0VMRUNUIGxvY2FsX2Jsa3NfaGl0ID49 IHMuc2VyaWFsX2hpdHMgLyAyCisgICAgICAgQVMgdHJpZ2dlcl9hYm9ydF9idWZmZXJzX3Byb3Bh Z2F0ZWQKK0ZST00gdGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZSgpLCB0cmlnX3NlcmlhbF9yZXN1 bHQgczsKKworRFJPUCBUQUJMRSB0cmlnX2Vycl90YWIsIHRyaWdfd29ya190YWIsIHRyaWdfc2Vy aWFsX3Jlc3VsdDsKK0RST1AgRlVOQ1RJT04gdHJpZ19lcnJfZnVuYzsKKworLS0gUGFyYWxsZWwg d29ya2VyIGFib3J0OiB3b3JrZXIgYnVmZmVyIGFjdGl2aXR5IGlzIGN1cnJlbnRseSBOT1QgcHJv cGFnYXRlZCBvbiBhYm9ydC4KKy0tCistLSBXaGVuIGEgcGFyYWxsZWwgd29ya2VyIGFib3J0cywg SW5zdHJFbmRQYXJhbGxlbFF1ZXJ5IGFuZAorLS0gRXhlY1BhcmFsbGVsUmVwb3J0SW5zdHJ1bWVu dGF0aW9uIG5ldmVyIHJ1biwgc28gdGhlIHdvcmtlcidzIGJ1ZmZlcgorLS0gYWN0aXZpdHkgaXMg bmV2ZXIgd3JpdHRlbiB0byBzaGFyZWQgbWVtb3J5LCBkZXNwaXRlIHRoZSBpbmZvcm1hdGlvbiBo YXZpbmcgYmVlbgorLS0gY2FwdHVyZWQgYnkgdGhlIHJlcyBvd25lciByZWxlYXNlIGluc3RydW1l bnRhdGlvbiBoYW5kbGluZy4KK0NSRUFURSBUQUJMRSBwYXJfYWJvcnRfdGFiIChhIGludCwgYiBj aGFyKDIwMCkpOworSU5TRVJUIElOVE8gcGFyX2Fib3J0X3RhYiBTRUxFQ1QgaSwgcmVwZWF0KCd4 JywgMjAwKSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MDAwKSBBUyBpOworCistLSBXYXJtIHNo YXJlZCBidWZmZXJzIHNvIGFsbCByZWFkcyBiZWNvbWUgaGl0cworU0VMRUNUIGNvdW50KCopIEZS T00gcGFyX2Fib3J0X3RhYjsKKworLS0gTWVhc3VyZSBzZXJpYWwgc2NhbiBkZWx0YSBhcyBhIHJl ZmVyZW5jZSAobGVhZGVyIHJlYWRzIGFsbCBibG9ja3MpCitTRVQgbWF4X3BhcmFsbGVsX3dvcmtl cnNfcGVyX2dhdGhlciA9IDA7CisKK1NFTEVDVCB0ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlX3Jl c2V0KCk7CitTRUxFQ1QgYjo6aW50MiBGUk9NIHBhcl9hYm9ydF90YWIgV0hFUkUgYSA+IDEwMDA7 CisKK0NSRUFURSBUQUJMRSBwYXJfYWJvcnRfc2VyaWFsX3Jlc3VsdCBBUworU0VMRUNUIHNoYXJl ZF9ibGtzX2hpdCBBUyBzZXJpYWxfZGVsdGEgRlJPTSB0ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdl KCk7CisKKy0tIE5vdyBmb3JjZSBwYXJhbGxlbCB3aXRoIGxlYWRlciBOT1QgcGFydGljaXBhdGlu ZyBpbiBzY2FubmluZworU0VUIHBhcmFsbGVsX3NldHVwX2Nvc3QgPSAwOworU0VUIHBhcmFsbGVs X3R1cGxlX2Nvc3QgPSAwOworU0VUIG1pbl9wYXJhbGxlbF90YWJsZV9zY2FuX3NpemUgPSAwOwor U0VUIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworU0VUIHBhcmFsbGVsX2xl YWRlcl9wYXJ0aWNpcGF0aW9uID0gb2ZmOworU0VUIGRlYnVnX3BhcmFsbGVsX3F1ZXJ5ID0gb247 IC0tIEVuc3VyZSB3ZSBnZXQgQ09OVEVYVCBsaW5lIGNvbnNpc3RlbnRseQorCitTRUxFQ1QgdGVz dF9zZXNzaW9uX2J1ZmZlcl91c2FnZV9yZXNldCgpOworU0VMRUNUIGI6OmludDIgRlJPTSBwYXJf YWJvcnRfdGFiIFdIRVJFIGEgPiAxMDAwOworCitSRVNFVCBkZWJ1Z19wYXJhbGxlbF9xdWVyeTsK KworLS0gV29ya2VycyBzY2FubmVkIHRoZSB0YWJsZSBidXQgYWJvcnRlZCBiZWZvcmUgcmVwb3J0 aW5nIHN0YXRzIGJhY2suCistLSBUaGUgbGVhZGVyJ3MgZGVsdGEgc2hvdWxkIGJlIG11Y2ggbGVz cyB0aGFuIGEgc2VyaWFsIHNjYW4sIGRvY3VtZW50aW5nCistLSB0aGF0IHdvcmtlciBidWZmZXIg YWN0aXZpdHkgaXMgbG9zdCBvbiBhYm9ydC4KK1NFTEVDVCBzaGFyZWRfYmxrc19oaXQgPCBzLnNl cmlhbF9kZWx0YSAvIDIKKyAgICAgICBBUyB3b3JrZXJfYWJvcnRfYnVmZmVyc19ub3RfcHJvcGFn YXRlZAorRlJPTSB0ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlKCksIHBhcl9hYm9ydF9zZXJpYWxf cmVzdWx0IHM7CisKK1JFU0VUIHBhcmFsbGVsX3NldHVwX2Nvc3Q7CitSRVNFVCBwYXJhbGxlbF90 dXBsZV9jb3N0OworUkVTRVQgbWluX3BhcmFsbGVsX3RhYmxlX3NjYW5fc2l6ZTsKK1JFU0VUIG1h eF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXI7CitSRVNFVCBwYXJhbGxlbF9sZWFkZXJfcGFy dGljaXBhdGlvbjsKKworRFJPUCBUQUJMRSBwYXJfYWJvcnRfdGFiLCBwYXJfYWJvcnRfc2VyaWFs X3Jlc3VsdDsKKworLS0gQ2xlYW51cAorRFJPUCBFWFRFTlNJT04gdGVzdF9zZXNzaW9uX2J1ZmZl cl91c2FnZTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zZXNzaW9uX2J1ZmZl cl91c2FnZS90ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlLS0xLjAuc3FsIGIvc3JjL3Rlc3QvbW9k dWxlcy90ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlL3Rlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2Ut LTEuMC5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmU5ODMzYmU0 NzBhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3Nlc3Npb25fYnVm ZmVyX3VzYWdlL3Rlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2UtLTEuMC5zcWwKQEAgLTAsMCArMSwz MSBAQAorLyogc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlL3Rlc3Rf c2Vzc2lvbl9idWZmZXJfdXNhZ2UtLTEuMC5zcWwgKi8KKworLS0gY29tcGxhaW4gaWYgc2NyaXB0 IGlzIHNvdXJjZWQgaW4gcHNxbCwgcmF0aGVyIHRoYW4gdmlhIENSRUFURSBFWFRFTlNJT04KK1xl Y2hvIFVzZSAiQ1JFQVRFIEVYVEVOU0lPTiB0ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlIiB0byBs b2FkIHRoaXMgZmlsZS4gXHF1aXQKKworQ1JFQVRFIEZVTkNUSU9OIHRlc3Rfc2Vzc2lvbl9idWZm ZXJfdXNhZ2UoCisgICAgT1VUIHNoYXJlZF9ibGtzX2hpdCBiaWdpbnQsCisgICAgT1VUIHNoYXJl ZF9ibGtzX3JlYWQgYmlnaW50LAorICAgIE9VVCBzaGFyZWRfYmxrc19kaXJ0aWVkIGJpZ2ludCwK KyAgICBPVVQgc2hhcmVkX2Jsa3Nfd3JpdHRlbiBiaWdpbnQsCisgICAgT1VUIGxvY2FsX2Jsa3Nf aGl0IGJpZ2ludCwKKyAgICBPVVQgbG9jYWxfYmxrc19yZWFkIGJpZ2ludCwKKyAgICBPVVQgbG9j YWxfYmxrc19kaXJ0aWVkIGJpZ2ludCwKKyAgICBPVVQgbG9jYWxfYmxrc193cml0dGVuIGJpZ2lu dCwKKyAgICBPVVQgdGVtcF9ibGtzX3JlYWQgYmlnaW50LAorICAgIE9VVCB0ZW1wX2Jsa3Nfd3Jp dHRlbiBiaWdpbnQsCisgICAgT1VUIHNoYXJlZF9ibGtfcmVhZF90aW1lIGRvdWJsZSBwcmVjaXNp b24sCisgICAgT1VUIHNoYXJlZF9ibGtfd3JpdGVfdGltZSBkb3VibGUgcHJlY2lzaW9uLAorICAg IE9VVCBsb2NhbF9ibGtfcmVhZF90aW1lIGRvdWJsZSBwcmVjaXNpb24sCisgICAgT1VUIGxvY2Fs X2Jsa193cml0ZV90aW1lIGRvdWJsZSBwcmVjaXNpb24sCisgICAgT1VUIHRlbXBfYmxrX3JlYWRf dGltZSBkb3VibGUgcHJlY2lzaW9uLAorICAgIE9VVCB0ZW1wX2Jsa193cml0ZV90aW1lIGRvdWJs ZSBwcmVjaXNpb24KKykKK1JFVFVSTlMgcmVjb3JkCitBUyAnTU9EVUxFX1BBVEhOQU1FJywgJ3Rl c3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2UnCitMQU5HVUFHRSBDIFBBUkFMTEVMIFJFU1RSSUNURUQ7 CisKK0NSRUFURSBGVU5DVElPTiB0ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlX3Jlc2V0KCkKK1JF VFVSTlMgdm9pZAorQVMgJ01PRFVMRV9QQVRITkFNRScsICd0ZXN0X3Nlc3Npb25fYnVmZmVyX3Vz YWdlX3Jlc2V0JworTEFOR1VBR0UgQyBQQVJBTExFTCBSRVNUUklDVEVEOwpkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlL3Rlc3Rfc2Vzc2lvbl9i dWZmZXJfdXNhZ2UuYyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zZXNzaW9uX2J1ZmZlcl91c2Fn ZS90ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMDAuLjUwZWIxYTJmZmU2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9k dWxlcy90ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlL3Rlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2Uu YwpAQCAtMCwwICsxLDk1IEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiB0ZXN0X3Nlc3Np b25fYnVmZmVyX3VzYWdlLmMKKyAqCSAgc2hvdyBidWZmZXIgdXNhZ2Ugc3RhdGlzdGljcyBmb3Ig dGhlIGN1cnJlbnQgc2Vzc2lvbgorICoKKyAqIENvcHlyaWdodCAoYykgMjAyNiwgUG9zdGdyZVNR TCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqCisgKgkgIHNyYy90ZXN0L21vZHVsZXMvdGVz dF9zZXNzaW9uX2J1ZmZlcl91c2FnZS90ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlLmMKKyAqLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorICovCisjaW5jbHVkZSAicG9zdGdyZXMuaCIKKworI2luY2x1ZGUgImFj Y2Vzcy9odHVwX2RldGFpbHMuaCIKKyNpbmNsdWRlICJleGVjdXRvci9pbnN0cnVtZW50LmgiCisj aW5jbHVkZSAiZnVuY2FwaS5oIgorI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgorI2luY2x1ZGUgInV0 aWxzL21lbXV0aWxzLmgiCisKK1BHX01PRFVMRV9NQUdJQ19FWFQoCisJCQkJCS5uYW1lID0gInRl c3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2UiLAorCQkJCQkudmVyc2lvbiA9IFBHX1ZFUlNJT04KKyk7 CisKKyNkZWZpbmUgTlVNX0JVRkZFUl9VU0FHRV9DT0xVTU5TIDE2CisKK1BHX0ZVTkNUSU9OX0lO Rk9fVjEodGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZSk7CitQR19GVU5DVElPTl9JTkZPX1YxKHRl c3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2VfcmVzZXQpOworCisjZGVmaW5lIEhBVkVfSU5TVFJfU1RB Q0sgMQkJLyogQ2hhbmdlIHRvIDAgd2hlbiB0ZXN0aW5nIGJlZm9yZSBzdGFjaworCQkJCQkJCQkg KiBjaGFuZ2UgKi8KKworLyoKKyAqIFNRTCBmdW5jdGlvbjogdGVzdF9zZXNzaW9uX2J1ZmZlcl91 c2FnZSgpCisgKgorICogUmV0dXJucyBhIHNpbmdsZSByb3cgd2l0aCBhbGwgQnVmZmVyVXNhZ2Ug Y291bnRlcnMgYWNjdW11bGF0ZWQgc2luY2UgdGhlCisgKiBzdGFydCBvZiB0aGUgc2Vzc2lvbi4g RXhjbHVkZXMgYW55IHVzYWdlIG5vdCB5ZXQgYWRkZWQgdG8gdGhlIHRvcCBvZiB0aGUKKyAqIHN0 YWNrIChlLmcuIGlmIHRoaXMgZ2V0cyBjYWxsZWQgaW5zaWRlIGEgc3RhdGVtZW50IHRoYXQgYWxz byBoYWQgYnVmZmVyCisgKiBhY3Rpdml0eSkuCisgKi8KK0RhdHVtCit0ZXN0X3Nlc3Npb25fYnVm ZmVyX3VzYWdlKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJVHVwbGVEZXNjCXR1cGRlc2M7CisJRGF0 dW0JCXZhbHVlc1tOVU1fQlVGRkVSX1VTQUdFX0NPTFVNTlNdOworCWJvb2wJCW51bGxzW05VTV9C VUZGRVJfVVNBR0VfQ09MVU1OU107CisJQnVmZmVyVXNhZ2UgKnVzYWdlOworCisJaWYgKGdldF9j YWxsX3Jlc3VsdF90eXBlKGZjaW5mbywgTlVMTCwgJnR1cGRlc2MpICE9IFRZUEVGVU5DX0NPTVBP U0lURSkKKwkJZWxvZyhFUlJPUiwgInJldHVybiB0eXBlIG11c3QgYmUgYSByb3cgdHlwZSIpOwor CisJbWVtc2V0KG51bGxzLCAwLCBzaXplb2YobnVsbHMpKTsKKworI2lmIEhBVkVfSU5TVFJfU1RB Q0sKKwl1c2FnZSA9ICZpbnN0cl90b3AuYnVmdXNhZ2U7CisjZWxzZQorCXVzYWdlID0gJnBnQnVm ZmVyVXNhZ2U7CisjZW5kaWYKKworCXZhbHVlc1swXSA9IEludDY0R2V0RGF0dW0odXNhZ2UtPnNo YXJlZF9ibGtzX2hpdCk7CisJdmFsdWVzWzFdID0gSW50NjRHZXREYXR1bSh1c2FnZS0+c2hhcmVk X2Jsa3NfcmVhZCk7CisJdmFsdWVzWzJdID0gSW50NjRHZXREYXR1bSh1c2FnZS0+c2hhcmVkX2Js a3NfZGlydGllZCk7CisJdmFsdWVzWzNdID0gSW50NjRHZXREYXR1bSh1c2FnZS0+c2hhcmVkX2Js a3Nfd3JpdHRlbik7CisJdmFsdWVzWzRdID0gSW50NjRHZXREYXR1bSh1c2FnZS0+bG9jYWxfYmxr c19oaXQpOworCXZhbHVlc1s1XSA9IEludDY0R2V0RGF0dW0odXNhZ2UtPmxvY2FsX2Jsa3NfcmVh ZCk7CisJdmFsdWVzWzZdID0gSW50NjRHZXREYXR1bSh1c2FnZS0+bG9jYWxfYmxrc19kaXJ0aWVk KTsKKwl2YWx1ZXNbN10gPSBJbnQ2NEdldERhdHVtKHVzYWdlLT5sb2NhbF9ibGtzX3dyaXR0ZW4p OworCXZhbHVlc1s4XSA9IEludDY0R2V0RGF0dW0odXNhZ2UtPnRlbXBfYmxrc19yZWFkKTsKKwl2 YWx1ZXNbOV0gPSBJbnQ2NEdldERhdHVtKHVzYWdlLT50ZW1wX2Jsa3Nfd3JpdHRlbik7CisJdmFs dWVzWzEwXSA9IEZsb2F0OEdldERhdHVtKElOU1RSX1RJTUVfR0VUX01JTExJU0VDKHVzYWdlLT5z aGFyZWRfYmxrX3JlYWRfdGltZSkpOworCXZhbHVlc1sxMV0gPSBGbG9hdDhHZXREYXR1bShJTlNU Ul9USU1FX0dFVF9NSUxMSVNFQyh1c2FnZS0+c2hhcmVkX2Jsa193cml0ZV90aW1lKSk7CisJdmFs dWVzWzEyXSA9IEZsb2F0OEdldERhdHVtKElOU1RSX1RJTUVfR0VUX01JTExJU0VDKHVzYWdlLT5s b2NhbF9ibGtfcmVhZF90aW1lKSk7CisJdmFsdWVzWzEzXSA9IEZsb2F0OEdldERhdHVtKElOU1RS X1RJTUVfR0VUX01JTExJU0VDKHVzYWdlLT5sb2NhbF9ibGtfd3JpdGVfdGltZSkpOworCXZhbHVl c1sxNF0gPSBGbG9hdDhHZXREYXR1bShJTlNUUl9USU1FX0dFVF9NSUxMSVNFQyh1c2FnZS0+dGVt cF9ibGtfcmVhZF90aW1lKSk7CisJdmFsdWVzWzE1XSA9IEZsb2F0OEdldERhdHVtKElOU1RSX1RJ TUVfR0VUX01JTExJU0VDKHVzYWdlLT50ZW1wX2Jsa193cml0ZV90aW1lKSk7CisKKwlQR19SRVRV Uk5fREFUVU0oSGVhcFR1cGxlR2V0RGF0dW0oaGVhcF9mb3JtX3R1cGxlKHR1cGRlc2MsIHZhbHVl cywgbnVsbHMpKSk7Cit9CisKKy8qCisgKiBTUUwgZnVuY3Rpb246IHRlc3Rfc2Vzc2lvbl9idWZm ZXJfdXNhZ2VfcmVzZXQoKQorICoKKyAqIFJlc2V0cyBhbGwgQnVmZmVyVXNhZ2UgY291bnRlcnMg b24gdGhlIHRvcCBpbnN0cnVtZW50YXRpb24gc3RhY2sgdG8gemVyby4KKyAqIFVzZWZ1bCBpbiB0 ZXN0cyB0byBhdm9pZCB0aGUgYmFzZWxpbmUvZGVsdGEgcGF0dGVybi4KKyAqLworRGF0dW0KK3Rl c3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2VfcmVzZXQoUEdfRlVOQ1RJT05fQVJHUykKK3sKKyNpZiBI QVZFX0lOU1RSX1NUQUNLCisJbWVtc2V0KCZpbnN0cl90b3AuYnVmdXNhZ2UsIDAsIHNpemVvZihC dWZmZXJVc2FnZSkpOworI2Vsc2UKKwltZW1zZXQoJnBnQnVmZmVyVXNhZ2UsIDAsIHNpemVvZihC dWZmZXJVc2FnZSkpOworI2VuZGlmCisKKwlQR19SRVRVUk5fVk9JRCgpOworfQpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlL3Rlc3Rfc2Vzc2lv bl9idWZmZXJfdXNhZ2UuY29udHJvbCBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zZXNzaW9uX2J1 ZmZlcl91c2FnZS90ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlLmNvbnRyb2wKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjQxY2ZiMTVhNzY1Ci0tLSAvZGV2L251bGwKKysr IGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlL3Rlc3Rfc2Vzc2lv bl9idWZmZXJfdXNhZ2UuY29udHJvbApAQCAtMCwwICsxLDUgQEAKKyMgdGVzdF9zZXNzaW9uX2J1 ZmZlcl91c2FnZSBleHRlbnNpb24KK2NvbW1lbnQgPSAnc2hvdyBidWZmZXIgdXNhZ2Ugc3RhdGlz dGljcyBmb3IgdGhlIGN1cnJlbnQgc2Vzc2lvbicKK2RlZmF1bHRfdmVyc2lvbiA9ICcxLjAnCitt b2R1bGVfcGF0aG5hbWUgPSAnJGxpYmRpci90ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlJworcmVs b2NhdGFibGUgPSB0cnVlCi0tIAoyLjQ3LjEKCg== --0000000000005bb84b064dfc5b57 Content-Type: application/octet-stream; name="v11-0006-instrumentation-Use-Instrumentation-struct-for-p.patch" Content-Disposition: attachment; filename="v11-0006-instrumentation-Use-Instrumentation-struct-for-p.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mn8k89yq5 RnJvbSA2NGQwNTY1MzZhMmNjZDA2NzU1YTZiZTIwZjFlYTdhZTQxNjEzNjgyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpEYXRlOiBT dW4sIDE1IE1hciAyMDI2IDIxOjQ0OjU4IC0wNzAwClN1YmplY3Q6IFtQQVRDSCB2MTEgNi85XSBp bnN0cnVtZW50YXRpb246IFVzZSBJbnN0cnVtZW50YXRpb24gc3RydWN0IGZvcgogcGFyYWxsZWwg d29ya2VycwoKVGhpcyBzaW1wbGlmaWVzIHRoZSBEU00gYWxsb2NhdGlvbnMgYSBiaXQgc2luY2Ug d2UgZG9uJ3QgbmVlZCB0bwpzZXBhcmF0ZWx5IGFsbG9jYXRlIFdBTCBhbmQgYnVmZmVyIHVzYWdl LCBhbmQgYWxsb3dzIHRoZSBlYXNpZXIgZnV0dXJlCmFkZGl0aW9uIG9mIGEgdGhpcmQgc3RhY2st YmFzZWQgc3RydWN0IGJlaW5nIGRpc2N1c3NlZC4KCkF1dGhvcjogTHVrYXMgRml0dGwgPGx1a2Fz QGZpdHRsLmNvbT4KUmV2aWV3ZWQtYnk6CkRpc2N1c3Npb246Ci0tLQogc3JjL2JhY2tlbmQvYWNj ZXNzL2JyaW4vYnJpbi5jICAgICAgICB8IDQzICsrKysrKy0tLS0tLS0tLS0tCiBzcmMvYmFja2Vu ZC9hY2Nlc3MvZ2luL2dpbmluc2VydC5jICAgIHwgNDMgKysrKysrLS0tLS0tLS0tLS0KIHNyYy9i YWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jICAgfCA0MyArKysrKystLS0tLS0tLS0tLQog c3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYyB8IDUyICsrKysrKysrLS0tLS0t LS0tLS0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMgICB8IDY2ICsrKysr KysrKysrKy0tLS0tLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvaW5zdHJ1bWVudC5j ICAgICB8IDE0ICsrKy0tLQogc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmggICB8 ICA1ICstCiBzcmMvaW5jbHVkZS9leGVjdXRvci9pbnN0cnVtZW50LmggICAgIHwgIDQgKy0KIDgg ZmlsZXMgY2hhbmdlZCwgOTkgaW5zZXJ0aW9ucygrKSwgMTcxIGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW4uYyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9icmluL2JyaW4uYwppbmRleCAxY2ViMjMwNjk1NC4uMWM5NWVjOWY2MDUgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW4uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv YnJpbi9icmluLmMKQEAgLTUxLDggKzUxLDcgQEAKICNkZWZpbmUgUEFSQUxMRUxfS0VZX0JSSU5f U0hBUkVECQlVSU5UNjRDT05TVCgweEIwMDAwMDAwMDAwMDAwMDEpCiAjZGVmaW5lIFBBUkFMTEVM X0tFWV9UVVBMRVNPUlQJCQlVSU5UNjRDT05TVCgweEIwMDAwMDAwMDAwMDAwMDIpCiAjZGVmaW5l IFBBUkFMTEVMX0tFWV9RVUVSWV9URVhUCQkJVUlOVDY0Q09OU1QoMHhCMDAwMDAwMDAwMDAwMDAz KQotI2RlZmluZSBQQVJBTExFTF9LRVlfV0FMX1VTQUdFCQkJVUlOVDY0Q09OU1QoMHhCMDAwMDAw MDAwMDAwMDA0KQotI2RlZmluZSBQQVJBTExFTF9LRVlfQlVGRkVSX1VTQUdFCQlVSU5UNjRDT05T VCgweEIwMDAwMDAwMDAwMDAwMDUpCisjZGVmaW5lIFBBUkFMTEVMX0tFWV9JTlNUUlVNRU5UQVRJ T04JVUlOVDY0Q09OU1QoMHhCMDAwMDAwMDAwMDAwMDA0KQogCiAvKgogICogU3RhdHVzIGZvciBp bmRleCBidWlsZHMgcGVyZm9ybWVkIGluIHBhcmFsbGVsLiAgVGhpcyBpcyBhbGxvY2F0ZWQgaW4g YQpAQCAtMTQ4LDggKzE0Nyw3IEBAIHR5cGVkZWYgc3RydWN0IEJyaW5MZWFkZXIKIAlCcmluU2hh cmVkICpicmluc2hhcmVkOwogCVNoYXJlZHNvcnQgKnNoYXJlZHNvcnQ7CiAJU25hcHNob3QJc25h cHNob3Q7Ci0JV2FsVXNhZ2UgICAqd2FsdXNhZ2U7Ci0JQnVmZmVyVXNhZ2UgKmJ1ZmZlcnVzYWdl OworCUluc3RydW1lbnRhdGlvbiAqaW5zdHI7CiB9IEJyaW5MZWFkZXI7CiAKIC8qCkBAIC0yMzg3 LDggKzIzODUsNyBAQCBfYnJpbl9iZWdpbl9wYXJhbGxlbChCcmluQnVpbGRTdGF0ZSAqYnVpbGRz dGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJQnJpblNoYXJlZCAqYnJpbnNo YXJlZDsKIAlTaGFyZWRzb3J0ICpzaGFyZWRzb3J0OwogCUJyaW5MZWFkZXIgKmJyaW5sZWFkZXIg PSBwYWxsb2MwX29iamVjdChCcmluTGVhZGVyKTsKLQlXYWxVc2FnZSAgICp3YWx1c2FnZTsKLQlC dWZmZXJVc2FnZSAqYnVmZmVydXNhZ2U7CisJSW5zdHJ1bWVudGF0aW9uICppbnN0cjsKIAlib29s CQlsZWFkZXJwYXJ0aWNpcGF0ZXMgPSB0cnVlOwogCWludAkJCXF1ZXJ5bGVuOwogCkBAIC0yNDMw LDE4ICsyNDI3LDE0IEBAIF9icmluX2JlZ2luX3BhcmFsbGVsKEJyaW5CdWlsZFN0YXRlICpidWls ZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIAlzaG1fdG9jX2VzdGltYXRl X2tleXMoJnBjeHQtPmVzdGltYXRvciwgMik7CiAKIAkvKgotCSAqIEVzdGltYXRlIHNwYWNlIGZv ciBXYWxVc2FnZSBhbmQgQnVmZmVyVXNhZ2UgLS0gUEFSQUxMRUxfS0VZX1dBTF9VU0FHRQotCSAq IGFuZCBQQVJBTExFTF9LRVlfQlVGRkVSX1VTQUdFLgorCSAqIEVzdGltYXRlIHNwYWNlIGZvciBJ bnN0cnVtZW50YXRpb24gLS0gUEFSQUxMRUxfS0VZX0lOU1RSVU1FTlRBVElPTi4KIAkgKgogCSAq IElmIHRoZXJlIGFyZSBubyBleHRlbnNpb25zIGxvYWRlZCB0aGF0IGNhcmUsIHdlIGNvdWxkIHNr aXAgdGhpcy4gIFdlCiAJICogaGF2ZSBubyB3YXkgb2Yga25vd2luZyB3aGV0aGVyIGFueW9uZSdz IGxvb2tpbmcgYXQgaW5zdHJ1bWVudGF0aW9uLCBzbwogCSAqIGRvIGl0IHVuY29uZGl0aW9uYWxs eS4KIAkgKi8KIAlzaG1fdG9jX2VzdGltYXRlX2NodW5rKCZwY3h0LT5lc3RpbWF0b3IsCi0JCQkJ CQkgICBtdWxfc2l6ZShzaXplb2YoV2FsVXNhZ2UpLCBwY3h0LT5ud29ya2VycykpOwotCXNobV90 b2NfZXN0aW1hdGVfa2V5cygmcGN4dC0+ZXN0aW1hdG9yLCAxKTsKLQlzaG1fdG9jX2VzdGltYXRl X2NodW5rKCZwY3h0LT5lc3RpbWF0b3IsCi0JCQkJCQkgICBtdWxfc2l6ZShzaXplb2YoQnVmZmVy VXNhZ2UpLCBwY3h0LT5ud29ya2VycykpOworCQkJCQkJICAgbXVsX3NpemUoc2l6ZW9mKEluc3Ry dW1lbnRhdGlvbiksIHBjeHQtPm53b3JrZXJzKSk7CiAJc2htX3RvY19lc3RpbWF0ZV9rZXlzKCZw Y3h0LT5lc3RpbWF0b3IsIDEpOwogCiAJLyogRmluYWxseSwgZXN0aW1hdGUgUEFSQUxMRUxfS0VZ X1FVRVJZX1RFWFQgc3BhY2UgKi8KQEAgLTI1MTQsMTUgKzI1MDcsMTIgQEAgX2JyaW5fYmVnaW5f cGFyYWxsZWwoQnJpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0 aW9uIGluZGV4LAogCX0KIAogCS8qCi0JICogQWxsb2NhdGUgc3BhY2UgZm9yIGVhY2ggd29ya2Vy J3MgV2FsVXNhZ2UgYW5kIEJ1ZmZlclVzYWdlOyBubyBuZWVkIHRvCisJICogQWxsb2NhdGUgc3Bh Y2UgZm9yIGVhY2ggd29ya2VyJ3MgSW5zdHJ1bWVudGF0aW9uOyBubyBuZWVkIHRvCiAJICogaW5p dGlhbGl6ZS4KIAkgKi8KLQl3YWx1c2FnZSA9IHNobV90b2NfYWxsb2NhdGUocGN4dC0+dG9jLAot CQkJCQkJCQltdWxfc2l6ZShzaXplb2YoV2FsVXNhZ2UpLCBwY3h0LT5ud29ya2VycykpOwotCXNo bV90b2NfaW5zZXJ0KHBjeHQtPnRvYywgUEFSQUxMRUxfS0VZX1dBTF9VU0FHRSwgd2FsdXNhZ2Up OwotCWJ1ZmZlcnVzYWdlID0gc2htX3RvY19hbGxvY2F0ZShwY3h0LT50b2MsCi0JCQkJCQkJCSAg IG11bF9zaXplKHNpemVvZihCdWZmZXJVc2FnZSksIHBjeHQtPm53b3JrZXJzKSk7Ci0Jc2htX3Rv Y19pbnNlcnQocGN4dC0+dG9jLCBQQVJBTExFTF9LRVlfQlVGRkVSX1VTQUdFLCBidWZmZXJ1c2Fn ZSk7CisJaW5zdHIgPSBzaG1fdG9jX2FsbG9jYXRlKHBjeHQtPnRvYywKKwkJCQkJCQkgbXVsX3Np emUoc2l6ZW9mKEluc3RydW1lbnRhdGlvbiksIHBjeHQtPm53b3JrZXJzKSk7CisJc2htX3RvY19p bnNlcnQocGN4dC0+dG9jLCBQQVJBTExFTF9LRVlfSU5TVFJVTUVOVEFUSU9OLCBpbnN0cik7CiAK IAkvKiBMYXVuY2ggd29ya2Vycywgc2F2aW5nIHN0YXR1cyBmb3IgbGVhZGVyL2NhbGxlciAqLwog CUxhdW5jaFBhcmFsbGVsV29ya2VycyhwY3h0KTsKQEAgLTI1MzMsOCArMjUyMyw3IEBAIF9icmlu X2JlZ2luX3BhcmFsbGVsKEJyaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFw LCBSZWxhdGlvbiBpbmRleCwKIAlicmlubGVhZGVyLT5icmluc2hhcmVkID0gYnJpbnNoYXJlZDsK IAlicmlubGVhZGVyLT5zaGFyZWRzb3J0ID0gc2hhcmVkc29ydDsKIAlicmlubGVhZGVyLT5zbmFw c2hvdCA9IHNuYXBzaG90OwotCWJyaW5sZWFkZXItPndhbHVzYWdlID0gd2FsdXNhZ2U7Ci0JYnJp bmxlYWRlci0+YnVmZmVydXNhZ2UgPSBidWZmZXJ1c2FnZTsKKwlicmlubGVhZGVyLT5pbnN0ciA9 IGluc3RyOwogCiAJLyogSWYgbm8gd29ya2VycyB3ZXJlIHN1Y2Nlc3NmdWxseSBsYXVuY2hlZCwg YmFjayBvdXQgKGRvIHNlcmlhbCBidWlsZCkgKi8KIAlpZiAocGN4dC0+bndvcmtlcnNfbGF1bmNo ZWQgPT0gMCkKQEAgLTI1NzMsNyArMjU2Miw3IEBAIF9icmluX2VuZF9wYXJhbGxlbChCcmluTGVh ZGVyICpicmlubGVhZGVyLCBCcmluQnVpbGRTdGF0ZSAqc3RhdGUpCiAJICogb3Igd2UgbWlnaHQg Z2V0IGluY29tcGxldGUgZGF0YS4pCiAJICovCiAJZm9yIChpID0gMDsgaSA8IGJyaW5sZWFkZXIt PnBjeHQtPm53b3JrZXJzX2xhdW5jaGVkOyBpKyspCi0JCUluc3RyQWNjdW1QYXJhbGxlbFF1ZXJ5 KCZicmlubGVhZGVyLT5idWZmZXJ1c2FnZVtpXSwgJmJyaW5sZWFkZXItPndhbHVzYWdlW2ldKTsK KwkJSW5zdHJBY2N1bVBhcmFsbGVsUXVlcnkoJmJyaW5sZWFkZXItPmluc3RyW2ldKTsKIAogCS8q IEZyZWUgbGFzdCByZWZlcmVuY2UgdG8gTVZDQyBzbmFwc2hvdCwgaWYgb25lIHdhcyB1c2VkICov CiAJaWYgKElzTVZDQ1NuYXBzaG90KGJyaW5sZWFkZXItPnNuYXBzaG90KSkKQEAgLTI4ODcsOCAr Mjg3Niw3IEBAIF9icmluX3BhcmFsbGVsX2J1aWxkX21haW4oZHNtX3NlZ21lbnQgKnNlZywgc2ht X3RvYyAqdG9jKQogCUxPQ0tNT0RFCWhlYXBMb2NrbW9kZTsKIAlMT0NLTU9ERQlpbmRleExvY2tt b2RlOwogCVF1ZXJ5SW5zdHJ1bWVudGF0aW9uICppbnN0cjsKLQlXYWxVc2FnZSAgICp3YWx1c2Fn ZTsKLQlCdWZmZXJVc2FnZSAqYnVmZmVydXNhZ2U7CisJSW5zdHJ1bWVudGF0aW9uICp3b3JrZXJf aW5zdHI7CiAJaW50CQkJc29ydG1lbTsKIAogCS8qCkBAIC0yOTQ5LDExICsyOTM3LDggQEAgX2Jy aW5fcGFyYWxsZWxfYnVpbGRfbWFpbihkc21fc2VnbWVudCAqc2VnLCBzaG1fdG9jICp0b2MpCiAJ CQkJCQkJCSAgaGVhcFJlbCwgaW5kZXhSZWwsIHNvcnRtZW0sIGZhbHNlKTsKIAogCS8qIFJlcG9y dCBXQUwvYnVmZmVyIHVzYWdlIGR1cmluZyBwYXJhbGxlbCBleGVjdXRpb24gKi8KLQlidWZmZXJ1 c2FnZSA9IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfS0VZX0JVRkZFUl9VU0FHRSwgZmFs c2UpOwotCXdhbHVzYWdlID0gc2htX3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9LRVlfV0FMX1VT QUdFLCBmYWxzZSk7Ci0JSW5zdHJFbmRQYXJhbGxlbFF1ZXJ5KGluc3RyLAotCQkJCQkJICAmYnVm ZmVydXNhZ2VbUGFyYWxsZWxXb3JrZXJOdW1iZXJdLAotCQkJCQkJICAmd2FsdXNhZ2VbUGFyYWxs ZWxXb3JrZXJOdW1iZXJdKTsKKwl3b3JrZXJfaW5zdHIgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBB UkFMTEVMX0tFWV9JTlNUUlVNRU5UQVRJT04sIGZhbHNlKTsKKwlJbnN0ckVuZFBhcmFsbGVsUXVl cnkoaW5zdHIsICZ3b3JrZXJfaW5zdHJbUGFyYWxsZWxXb3JrZXJOdW1iZXJdKTsKIAogCWluZGV4 X2Nsb3NlKGluZGV4UmVsLCBpbmRleExvY2ttb2RlKTsKIAl0YWJsZV9jbG9zZShoZWFwUmVsLCBo ZWFwTG9ja21vZGUpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5pbnNl cnQuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luaW5zZXJ0LmMKaW5kZXggMDRjZDUzOTE2 Y2EuLjUxYmIwOThhMmEyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmlu c2VydC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luaW5zZXJ0LmMKQEAgLTQ1LDgg KzQ1LDcgQEAKICNkZWZpbmUgUEFSQUxMRUxfS0VZX0dJTl9TSEFSRUQJCQlVSU5UNjRDT05TVCgw eEIwMDAwMDAwMDAwMDAwMDEpCiAjZGVmaW5lIFBBUkFMTEVMX0tFWV9UVVBMRVNPUlQJCQlVSU5U NjRDT05TVCgweEIwMDAwMDAwMDAwMDAwMDIpCiAjZGVmaW5lIFBBUkFMTEVMX0tFWV9RVUVSWV9U RVhUCQkJVUlOVDY0Q09OU1QoMHhCMDAwMDAwMDAwMDAwMDAzKQotI2RlZmluZSBQQVJBTExFTF9L RVlfV0FMX1VTQUdFCQkJVUlOVDY0Q09OU1QoMHhCMDAwMDAwMDAwMDAwMDA0KQotI2RlZmluZSBQ QVJBTExFTF9LRVlfQlVGRkVSX1VTQUdFCQlVSU5UNjRDT05TVCgweEIwMDAwMDAwMDAwMDAwMDUp CisjZGVmaW5lIFBBUkFMTEVMX0tFWV9JTlNUUlVNRU5UQVRJT04JVUlOVDY0Q09OU1QoMHhCMDAw MDAwMDAwMDAwMDA0KQogCiAvKgogICogU3RhdHVzIGZvciBpbmRleCBidWlsZHMgcGVyZm9ybWVk IGluIHBhcmFsbGVsLiAgVGhpcyBpcyBhbGxvY2F0ZWQgaW4gYQpAQCAtMTM4LDggKzEzNyw3IEBA IHR5cGVkZWYgc3RydWN0IEdpbkxlYWRlcgogCUdpbkJ1aWxkU2hhcmVkICpnaW5zaGFyZWQ7CiAJ U2hhcmVkc29ydCAqc2hhcmVkc29ydDsKIAlTbmFwc2hvdAlzbmFwc2hvdDsKLQlXYWxVc2FnZSAg ICp3YWx1c2FnZTsKLQlCdWZmZXJVc2FnZSAqYnVmZmVydXNhZ2U7CisJSW5zdHJ1bWVudGF0aW9u ICppbnN0cjsKIH0gR2luTGVhZGVyOwogCiB0eXBlZGVmIHN0cnVjdApAQCAtOTQ1LDggKzk0Myw3 IEBAIF9naW5fYmVnaW5fcGFyYWxsZWwoR2luQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRp b24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJR2luQnVpbGRTaGFyZWQgKmdpbnNoYXJlZDsKIAlT aGFyZWRzb3J0ICpzaGFyZWRzb3J0OwogCUdpbkxlYWRlciAgKmdpbmxlYWRlciA9IHBhbGxvYzBf b2JqZWN0KEdpbkxlYWRlcik7Ci0JV2FsVXNhZ2UgICAqd2FsdXNhZ2U7Ci0JQnVmZmVyVXNhZ2Ug KmJ1ZmZlcnVzYWdlOworCUluc3RydW1lbnRhdGlvbiAqaW5zdHI7CiAJYm9vbAkJbGVhZGVycGFy dGljaXBhdGVzID0gdHJ1ZTsKIAlpbnQJCQlxdWVyeWxlbjsKIApAQCAtOTg3LDE4ICs5ODQsMTQg QEAgX2dpbl9iZWdpbl9wYXJhbGxlbChHaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlv biBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIAlzaG1fdG9jX2VzdGltYXRlX2tleXMoJnBjeHQtPmVz dGltYXRvciwgMik7CiAKIAkvKgotCSAqIEVzdGltYXRlIHNwYWNlIGZvciBXYWxVc2FnZSBhbmQg QnVmZmVyVXNhZ2UgLS0gUEFSQUxMRUxfS0VZX1dBTF9VU0FHRQotCSAqIGFuZCBQQVJBTExFTF9L RVlfQlVGRkVSX1VTQUdFLgorCSAqIEVzdGltYXRlIHNwYWNlIGZvciBJbnN0cnVtZW50YXRpb24g LS0gUEFSQUxMRUxfS0VZX0lOU1RSVU1FTlRBVElPTi4KIAkgKgogCSAqIElmIHRoZXJlIGFyZSBu byBleHRlbnNpb25zIGxvYWRlZCB0aGF0IGNhcmUsIHdlIGNvdWxkIHNraXAgdGhpcy4gIFdlCiAJ ICogaGF2ZSBubyB3YXkgb2Yga25vd2luZyB3aGV0aGVyIGFueW9uZSdzIGxvb2tpbmcgYXQgaW5z dHJ1bWVudGF0aW9uLCBzbwogCSAqIGRvIGl0IHVuY29uZGl0aW9uYWxseS4KIAkgKi8KIAlzaG1f dG9jX2VzdGltYXRlX2NodW5rKCZwY3h0LT5lc3RpbWF0b3IsCi0JCQkJCQkgICBtdWxfc2l6ZShz aXplb2YoV2FsVXNhZ2UpLCBwY3h0LT5ud29ya2VycykpOwotCXNobV90b2NfZXN0aW1hdGVfa2V5 cygmcGN4dC0+ZXN0aW1hdG9yLCAxKTsKLQlzaG1fdG9jX2VzdGltYXRlX2NodW5rKCZwY3h0LT5l c3RpbWF0b3IsCi0JCQkJCQkgICBtdWxfc2l6ZShzaXplb2YoQnVmZmVyVXNhZ2UpLCBwY3h0LT5u d29ya2VycykpOworCQkJCQkJICAgbXVsX3NpemUoc2l6ZW9mKEluc3RydW1lbnRhdGlvbiksIHBj eHQtPm53b3JrZXJzKSk7CiAJc2htX3RvY19lc3RpbWF0ZV9rZXlzKCZwY3h0LT5lc3RpbWF0b3Is IDEpOwogCiAJLyogRmluYWxseSwgZXN0aW1hdGUgUEFSQUxMRUxfS0VZX1FVRVJZX1RFWFQgc3Bh Y2UgKi8KQEAgLTEwNjYsMTUgKzEwNTksMTIgQEAgX2dpbl9iZWdpbl9wYXJhbGxlbChHaW5CdWls ZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIAl9CiAK IAkvKgotCSAqIEFsbG9jYXRlIHNwYWNlIGZvciBlYWNoIHdvcmtlcidzIFdhbFVzYWdlIGFuZCBC dWZmZXJVc2FnZTsgbm8gbmVlZCB0bworCSAqIEFsbG9jYXRlIHNwYWNlIGZvciBlYWNoIHdvcmtl cidzIEluc3RydW1lbnRhdGlvbjsgbm8gbmVlZCB0bwogCSAqIGluaXRpYWxpemUuCiAJICovCi0J d2FsdXNhZ2UgPSBzaG1fdG9jX2FsbG9jYXRlKHBjeHQtPnRvYywKLQkJCQkJCQkJbXVsX3NpemUo c2l6ZW9mKFdhbFVzYWdlKSwgcGN4dC0+bndvcmtlcnMpKTsKLQlzaG1fdG9jX2luc2VydChwY3h0 LT50b2MsIFBBUkFMTEVMX0tFWV9XQUxfVVNBR0UsIHdhbHVzYWdlKTsKLQlidWZmZXJ1c2FnZSA9 IHNobV90b2NfYWxsb2NhdGUocGN4dC0+dG9jLAotCQkJCQkJCQkgICBtdWxfc2l6ZShzaXplb2Yo QnVmZmVyVXNhZ2UpLCBwY3h0LT5ud29ya2VycykpOwotCXNobV90b2NfaW5zZXJ0KHBjeHQtPnRv YywgUEFSQUxMRUxfS0VZX0JVRkZFUl9VU0FHRSwgYnVmZmVydXNhZ2UpOworCWluc3RyID0gc2ht X3RvY19hbGxvY2F0ZShwY3h0LT50b2MsCisJCQkJCQkJIG11bF9zaXplKHNpemVvZihJbnN0cnVt ZW50YXRpb24pLCBwY3h0LT5ud29ya2VycykpOworCXNobV90b2NfaW5zZXJ0KHBjeHQtPnRvYywg UEFSQUxMRUxfS0VZX0lOU1RSVU1FTlRBVElPTiwgaW5zdHIpOwogCiAJLyogTGF1bmNoIHdvcmtl cnMsIHNhdmluZyBzdGF0dXMgZm9yIGxlYWRlci9jYWxsZXIgKi8KIAlMYXVuY2hQYXJhbGxlbFdv cmtlcnMocGN4dCk7CkBAIC0xMDg1LDggKzEwNzUsNyBAQCBfZ2luX2JlZ2luX3BhcmFsbGVsKEdp bkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAog CWdpbmxlYWRlci0+Z2luc2hhcmVkID0gZ2luc2hhcmVkOwogCWdpbmxlYWRlci0+c2hhcmVkc29y dCA9IHNoYXJlZHNvcnQ7CiAJZ2lubGVhZGVyLT5zbmFwc2hvdCA9IHNuYXBzaG90OwotCWdpbmxl YWRlci0+d2FsdXNhZ2UgPSB3YWx1c2FnZTsKLQlnaW5sZWFkZXItPmJ1ZmZlcnVzYWdlID0gYnVm ZmVydXNhZ2U7CisJZ2lubGVhZGVyLT5pbnN0ciA9IGluc3RyOwogCiAJLyogSWYgbm8gd29ya2Vy cyB3ZXJlIHN1Y2Nlc3NmdWxseSBsYXVuY2hlZCwgYmFjayBvdXQgKGRvIHNlcmlhbCBidWlsZCkg Ki8KIAlpZiAocGN4dC0+bndvcmtlcnNfbGF1bmNoZWQgPT0gMCkKQEAgLTExMjUsNyArMTExNCw3 IEBAIF9naW5fZW5kX3BhcmFsbGVsKEdpbkxlYWRlciAqZ2lubGVhZGVyLCBHaW5CdWlsZFN0YXRl ICpzdGF0ZSkKIAkgKiBvciB3ZSBtaWdodCBnZXQgaW5jb21wbGV0ZSBkYXRhLikKIAkgKi8KIAlm b3IgKGkgPSAwOyBpIDwgZ2lubGVhZGVyLT5wY3h0LT5ud29ya2Vyc19sYXVuY2hlZDsgaSsrKQot CQlJbnN0ckFjY3VtUGFyYWxsZWxRdWVyeSgmZ2lubGVhZGVyLT5idWZmZXJ1c2FnZVtpXSwgJmdp bmxlYWRlci0+d2FsdXNhZ2VbaV0pOworCQlJbnN0ckFjY3VtUGFyYWxsZWxRdWVyeSgmZ2lubGVh ZGVyLT5pbnN0cltpXSk7CiAKIAkvKiBGcmVlIGxhc3QgcmVmZXJlbmNlIHRvIE1WQ0Mgc25hcHNo b3QsIGlmIG9uZSB3YXMgdXNlZCAqLwogCWlmIChJc01WQ0NTbmFwc2hvdChnaW5sZWFkZXItPnNu YXBzaG90KSkKQEAgLTIxMTgsOCArMjEwNyw3IEBAIF9naW5fcGFyYWxsZWxfYnVpbGRfbWFpbihk c21fc2VnbWVudCAqc2VnLCBzaG1fdG9jICp0b2MpCiAJTE9DS01PREUJaGVhcExvY2ttb2RlOwog CUxPQ0tNT0RFCWluZGV4TG9ja21vZGU7CiAJUXVlcnlJbnN0cnVtZW50YXRpb24gKmluc3RyOwot CVdhbFVzYWdlICAgKndhbHVzYWdlOwotCUJ1ZmZlclVzYWdlICpidWZmZXJ1c2FnZTsKKwlJbnN0 cnVtZW50YXRpb24gKndvcmtlcl9pbnN0cjsKIAlpbnQJCQlzb3J0bWVtOwogCiAJLyoKQEAgLTIx OTksMTEgKzIxODcsOCBAQCBfZ2luX3BhcmFsbGVsX2J1aWxkX21haW4oZHNtX3NlZ21lbnQgKnNl Zywgc2htX3RvYyAqdG9jKQogCQkJCQkJCQkgaGVhcFJlbCwgaW5kZXhSZWwsIHNvcnRtZW0sIGZh bHNlKTsKIAogCS8qIFJlcG9ydCBXQUwvYnVmZmVyIHVzYWdlIGR1cmluZyBwYXJhbGxlbCBleGVj dXRpb24gKi8KLQlidWZmZXJ1c2FnZSA9IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfS0VZ X0JVRkZFUl9VU0FHRSwgZmFsc2UpOwotCXdhbHVzYWdlID0gc2htX3RvY19sb29rdXAodG9jLCBQ QVJBTExFTF9LRVlfV0FMX1VTQUdFLCBmYWxzZSk7Ci0JSW5zdHJFbmRQYXJhbGxlbFF1ZXJ5KGlu c3RyLAotCQkJCQkJICAmYnVmZmVydXNhZ2VbUGFyYWxsZWxXb3JrZXJOdW1iZXJdLAotCQkJCQkJ ICAmd2FsdXNhZ2VbUGFyYWxsZWxXb3JrZXJOdW1iZXJdKTsKKwl3b3JrZXJfaW5zdHIgPSBzaG1f dG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVMX0tFWV9JTlNUUlVNRU5UQVRJT04sIGZhbHNlKTsKKwlJ bnN0ckVuZFBhcmFsbGVsUXVlcnkoaW5zdHIsICZ3b3JrZXJfaW5zdHJbUGFyYWxsZWxXb3JrZXJO dW1iZXJdKTsKIAogCWluZGV4X2Nsb3NlKGluZGV4UmVsLCBpbmRleExvY2ttb2RlKTsKIAl0YWJs ZV9jbG9zZShoZWFwUmVsLCBoZWFwTG9ja21vZGUpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv YWNjZXNzL25idHJlZS9uYnRzb3J0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNv cnQuYwppbmRleCA2YTI2MWM4ZGNiZC4uNTA0YjM0Y2M5MDYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRy ZWUvbmJ0c29ydC5jCkBAIC02Niw4ICs2Niw3IEBACiAjZGVmaW5lIFBBUkFMTEVMX0tFWV9UVVBM RVNPUlQJCQlVSU5UNjRDT05TVCgweEEwMDAwMDAwMDAwMDAwMDIpCiAjZGVmaW5lIFBBUkFMTEVM X0tFWV9UVVBMRVNPUlRfU1BPT0wyCVVJTlQ2NENPTlNUKDB4QTAwMDAwMDAwMDAwMDAwMykKICNk ZWZpbmUgUEFSQUxMRUxfS0VZX1FVRVJZX1RFWFQJCQlVSU5UNjRDT05TVCgweEEwMDAwMDAwMDAw MDAwMDQpCi0jZGVmaW5lIFBBUkFMTEVMX0tFWV9XQUxfVVNBR0UJCQlVSU5UNjRDT05TVCgweEEw MDAwMDAwMDAwMDAwMDUpCi0jZGVmaW5lIFBBUkFMTEVMX0tFWV9CVUZGRVJfVVNBR0UJCVVJTlQ2 NENPTlNUKDB4QTAwMDAwMDAwMDAwMDAwNikKKyNkZWZpbmUgUEFSQUxMRUxfS0VZX0lOU1RSVU1F TlRBVElPTglVSU5UNjRDT05TVCgweEEwMDAwMDAwMDAwMDAwMDUpCiAKIC8qCiAgKiBESVNBQkxF X0xFQURFUl9QQVJUSUNJUEFUSU9OIGRpc2FibGVzIHRoZSBsZWFkZXIncyBwYXJ0aWNpcGF0aW9u IGluCkBAIC0xOTUsOCArMTk0LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQlRMZWFkZXIKIAlTaGFyZWRz b3J0ICpzaGFyZWRzb3J0OwogCVNoYXJlZHNvcnQgKnNoYXJlZHNvcnQyOwogCVNuYXBzaG90CXNu YXBzaG90OwotCVdhbFVzYWdlICAgKndhbHVzYWdlOwotCUJ1ZmZlclVzYWdlICpidWZmZXJ1c2Fn ZTsKKwlJbnN0cnVtZW50YXRpb24gKmluc3RyOwogfSBCVExlYWRlcjsKIAogLyoKQEAgLTE0MDgs OCArMTQwNiw3IEBAIF9idF9iZWdpbl9wYXJhbGxlbChCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUs IGJvb2wgaXNjb25jdXJyZW50LCBpbnQgcmVxdWVzdCkKIAlTaGFyZWRzb3J0ICpzaGFyZWRzb3J0 MjsKIAlCVFNwb29sICAgICpidHNwb29sID0gYnVpbGRzdGF0ZS0+c3Bvb2w7CiAJQlRMZWFkZXIg ICAqYnRsZWFkZXIgPSBwYWxsb2MwX29iamVjdChCVExlYWRlcik7Ci0JV2FsVXNhZ2UgICAqd2Fs dXNhZ2U7Ci0JQnVmZmVyVXNhZ2UgKmJ1ZmZlcnVzYWdlOworCUluc3RydW1lbnRhdGlvbiAqaW5z dHI7CiAJYm9vbAkJbGVhZGVycGFydGljaXBhdGVzID0gdHJ1ZTsKIAlpbnQJCQlxdWVyeWxlbjsK IApAQCAtMTQ2MiwxOCArMTQ1OSwxNCBAQCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRl ICpidWlsZHN0YXRlLCBib29sIGlzY29uY3VycmVudCwgaW50IHJlcXVlc3QpCiAJfQogCiAJLyoK LQkgKiBFc3RpbWF0ZSBzcGFjZSBmb3IgV2FsVXNhZ2UgYW5kIEJ1ZmZlclVzYWdlIC0tIFBBUkFM TEVMX0tFWV9XQUxfVVNBR0UKLQkgKiBhbmQgUEFSQUxMRUxfS0VZX0JVRkZFUl9VU0FHRS4KKwkg KiBFc3RpbWF0ZSBzcGFjZSBmb3IgSW5zdHJ1bWVudGF0aW9uIC0tIFBBUkFMTEVMX0tFWV9JTlNU UlVNRU5UQVRJT04uCiAJICoKIAkgKiBJZiB0aGVyZSBhcmUgbm8gZXh0ZW5zaW9ucyBsb2FkZWQg dGhhdCBjYXJlLCB3ZSBjb3VsZCBza2lwIHRoaXMuICBXZQogCSAqIGhhdmUgbm8gd2F5IG9mIGtu b3dpbmcgd2hldGhlciBhbnlvbmUncyBsb29raW5nIGF0IGluc3RydW1lbnRhdGlvbiwgc28KIAkg KiBkbyBpdCB1bmNvbmRpdGlvbmFsbHkuCiAJICovCiAJc2htX3RvY19lc3RpbWF0ZV9jaHVuaygm cGN4dC0+ZXN0aW1hdG9yLAotCQkJCQkJICAgbXVsX3NpemUoc2l6ZW9mKFdhbFVzYWdlKSwgcGN4 dC0+bndvcmtlcnMpKTsKLQlzaG1fdG9jX2VzdGltYXRlX2tleXMoJnBjeHQtPmVzdGltYXRvciwg MSk7Ci0Jc2htX3RvY19lc3RpbWF0ZV9jaHVuaygmcGN4dC0+ZXN0aW1hdG9yLAotCQkJCQkJICAg bXVsX3NpemUoc2l6ZW9mKEJ1ZmZlclVzYWdlKSwgcGN4dC0+bndvcmtlcnMpKTsKKwkJCQkJCSAg IG11bF9zaXplKHNpemVvZihJbnN0cnVtZW50YXRpb24pLCBwY3h0LT5ud29ya2VycykpOwogCXNo bV90b2NfZXN0aW1hdGVfa2V5cygmcGN4dC0+ZXN0aW1hdG9yLCAxKTsKIAogCS8qIEZpbmFsbHks IGVzdGltYXRlIFBBUkFMTEVMX0tFWV9RVUVSWV9URVhUIHNwYWNlICovCkBAIC0xNTYwLDE1ICsx NTUzLDEyIEBAIF9idF9iZWdpbl9wYXJhbGxlbChCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIGJv b2wgaXNjb25jdXJyZW50LCBpbnQgcmVxdWVzdCkKIAl9CiAKIAkvKgotCSAqIEFsbG9jYXRlIHNw YWNlIGZvciBlYWNoIHdvcmtlcidzIFdhbFVzYWdlIGFuZCBCdWZmZXJVc2FnZTsgbm8gbmVlZCB0 bworCSAqIEFsbG9jYXRlIHNwYWNlIGZvciBlYWNoIHdvcmtlcidzIEluc3RydW1lbnRhdGlvbjsg bm8gbmVlZCB0bwogCSAqIGluaXRpYWxpemUuCiAJICovCi0Jd2FsdXNhZ2UgPSBzaG1fdG9jX2Fs bG9jYXRlKHBjeHQtPnRvYywKLQkJCQkJCQkJbXVsX3NpemUoc2l6ZW9mKFdhbFVzYWdlKSwgcGN4 dC0+bndvcmtlcnMpKTsKLQlzaG1fdG9jX2luc2VydChwY3h0LT50b2MsIFBBUkFMTEVMX0tFWV9X QUxfVVNBR0UsIHdhbHVzYWdlKTsKLQlidWZmZXJ1c2FnZSA9IHNobV90b2NfYWxsb2NhdGUocGN4 dC0+dG9jLAotCQkJCQkJCQkgICBtdWxfc2l6ZShzaXplb2YoQnVmZmVyVXNhZ2UpLCBwY3h0LT5u d29ya2VycykpOwotCXNobV90b2NfaW5zZXJ0KHBjeHQtPnRvYywgUEFSQUxMRUxfS0VZX0JVRkZF Ul9VU0FHRSwgYnVmZmVydXNhZ2UpOworCWluc3RyID0gc2htX3RvY19hbGxvY2F0ZShwY3h0LT50 b2MsCisJCQkJCQkJIG11bF9zaXplKHNpemVvZihJbnN0cnVtZW50YXRpb24pLCBwY3h0LT5ud29y a2VycykpOworCXNobV90b2NfaW5zZXJ0KHBjeHQtPnRvYywgUEFSQUxMRUxfS0VZX0lOU1RSVU1F TlRBVElPTiwgaW5zdHIpOwogCiAJLyogTGF1bmNoIHdvcmtlcnMsIHNhdmluZyBzdGF0dXMgZm9y IGxlYWRlci9jYWxsZXIgKi8KIAlMYXVuY2hQYXJhbGxlbFdvcmtlcnMocGN4dCk7CkBAIC0xNTgw LDggKzE1NzAsNyBAQCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRl LCBib29sIGlzY29uY3VycmVudCwgaW50IHJlcXVlc3QpCiAJYnRsZWFkZXItPnNoYXJlZHNvcnQg PSBzaGFyZWRzb3J0OwogCWJ0bGVhZGVyLT5zaGFyZWRzb3J0MiA9IHNoYXJlZHNvcnQyOwogCWJ0 bGVhZGVyLT5zbmFwc2hvdCA9IHNuYXBzaG90OwotCWJ0bGVhZGVyLT53YWx1c2FnZSA9IHdhbHVz YWdlOwotCWJ0bGVhZGVyLT5idWZmZXJ1c2FnZSA9IGJ1ZmZlcnVzYWdlOworCWJ0bGVhZGVyLT5p bnN0ciA9IGluc3RyOwogCiAJLyogSWYgbm8gd29ya2VycyB3ZXJlIHN1Y2Nlc3NmdWxseSBsYXVu Y2hlZCwgYmFjayBvdXQgKGRvIHNlcmlhbCBidWlsZCkgKi8KIAlpZiAocGN4dC0+bndvcmtlcnNf bGF1bmNoZWQgPT0gMCkKQEAgLTE2MjAsNyArMTYwOSw3IEBAIF9idF9lbmRfcGFyYWxsZWwoQlRM ZWFkZXIgKmJ0bGVhZGVyKQogCSAqIG9yIHdlIG1pZ2h0IGdldCBpbmNvbXBsZXRlIGRhdGEuKQog CSAqLwogCWZvciAoaSA9IDA7IGkgPCBidGxlYWRlci0+cGN4dC0+bndvcmtlcnNfbGF1bmNoZWQ7 IGkrKykKLQkJSW5zdHJBY2N1bVBhcmFsbGVsUXVlcnkoJmJ0bGVhZGVyLT5idWZmZXJ1c2FnZVtp XSwgJmJ0bGVhZGVyLT53YWx1c2FnZVtpXSk7CisJCUluc3RyQWNjdW1QYXJhbGxlbFF1ZXJ5KCZi dGxlYWRlci0+aW5zdHJbaV0pOwogCiAJLyogRnJlZSBsYXN0IHJlZmVyZW5jZSB0byBNVkNDIHNu YXBzaG90LCBpZiBvbmUgd2FzIHVzZWQgKi8KIAlpZiAoSXNNVkNDU25hcHNob3QoYnRsZWFkZXIt PnNuYXBzaG90KSkKQEAgLTE3NTQsOCArMTc0Myw3IEBAIF9idF9wYXJhbGxlbF9idWlsZF9tYWlu KGRzbV9zZWdtZW50ICpzZWcsIHNobV90b2MgKnRvYykKIAlMT0NLTU9ERQloZWFwTG9ja21vZGU7 CiAJTE9DS01PREUJaW5kZXhMb2NrbW9kZTsKIAlRdWVyeUluc3RydW1lbnRhdGlvbiAqaW5zdHI7 Ci0JV2FsVXNhZ2UgICAqd2FsdXNhZ2U7Ci0JQnVmZmVyVXNhZ2UgKmJ1ZmZlcnVzYWdlOworCUlu c3RydW1lbnRhdGlvbiAqd29ya2VyX2luc3RyOwogCWludAkJCXNvcnRtZW07CiAKICNpZmRlZiBC VFJFRV9CVUlMRF9TVEFUUwpAQCAtMTgzNywxMSArMTgyNSw4IEBAIF9idF9wYXJhbGxlbF9idWls ZF9tYWluKGRzbV9zZWdtZW50ICpzZWcsIHNobV90b2MgKnRvYykKIAkJCQkJCQkgICBzaGFyZWRz b3J0Miwgc29ydG1lbSwgZmFsc2UpOwogCiAJLyogUmVwb3J0IFdBTC9idWZmZXIgdXNhZ2UgZHVy aW5nIHBhcmFsbGVsIGV4ZWN1dGlvbiAqLwotCWJ1ZmZlcnVzYWdlID0gc2htX3RvY19sb29rdXAo dG9jLCBQQVJBTExFTF9LRVlfQlVGRkVSX1VTQUdFLCBmYWxzZSk7Ci0Jd2FsdXNhZ2UgPSBzaG1f dG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVMX0tFWV9XQUxfVVNBR0UsIGZhbHNlKTsKLQlJbnN0ckVu ZFBhcmFsbGVsUXVlcnkoaW5zdHIsCi0JCQkJCQkgICZidWZmZXJ1c2FnZVtQYXJhbGxlbFdvcmtl ck51bWJlcl0sCi0JCQkJCQkgICZ3YWx1c2FnZVtQYXJhbGxlbFdvcmtlck51bWJlcl0pOworCXdv cmtlcl9pbnN0ciA9IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfS0VZX0lOU1RSVU1FTlRB VElPTiwgZmFsc2UpOworCUluc3RyRW5kUGFyYWxsZWxRdWVyeShpbnN0ciwgJndvcmtlcl9pbnN0 cltQYXJhbGxlbFdvcmtlck51bWJlcl0pOwogCiAjaWZkZWYgQlRSRUVfQlVJTERfU1RBVFMKIAlp ZiAobG9nX2J0cmVlX2J1aWxkX3N0YXRzKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFu ZHMvdmFjdXVtcGFyYWxsZWwuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVs LmMKaW5kZXggYzMzMGM4OTFjMDMuLmI1ZmVkNTRmYjg1IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3Zh Y3V1bXBhcmFsbGVsLmMKQEAgLTQ3LDkgKzQ3LDggQEAKICAqLwogI2RlZmluZSBQQVJBTExFTF9W QUNVVU1fS0VZX1NIQVJFRAkJCTEKICNkZWZpbmUgUEFSQUxMRUxfVkFDVVVNX0tFWV9RVUVSWV9U RVhUCQkyCi0jZGVmaW5lIFBBUkFMTEVMX1ZBQ1VVTV9LRVlfQlVGRkVSX1VTQUdFCTMKLSNkZWZp bmUgUEFSQUxMRUxfVkFDVVVNX0tFWV9XQUxfVVNBR0UJCTQKLSNkZWZpbmUgUEFSQUxMRUxfVkFD VVVNX0tFWV9JTkRFWF9TVEFUUwkJNQorI2RlZmluZSBQQVJBTExFTF9WQUNVVU1fS0VZX0lOU1RS VU1FTlRBVElPTgkzCisjZGVmaW5lIFBBUkFMTEVMX1ZBQ1VVTV9LRVlfSU5ERVhfU1RBVFMJCTQK IAogLyoKICAqIFNoYXJlZCBpbmZvcm1hdGlvbiBhbW9uZyBwYXJhbGxlbCB3b3JrZXJzLiAgU28g dGhpcyBpcyBhbGxvY2F0ZWQgaW4gdGhlIERTTQpAQCAtMTg4LDExICsxODcsOCBAQCBzdHJ1Y3Qg UGFyYWxsZWxWYWN1dW1TdGF0ZQogCS8qIFNoYXJlZCBkZWFkIGl0ZW1zIHNwYWNlIGFtb25nIHBh cmFsbGVsIHZhY3V1bSB3b3JrZXJzICovCiAJVGlkU3RvcmUgICAqZGVhZF9pdGVtczsKIAotCS8q IFBvaW50cyB0byBidWZmZXIgdXNhZ2UgYXJlYSBpbiBEU00gKi8KLQlCdWZmZXJVc2FnZSAqYnVm ZmVyX3VzYWdlOwotCi0JLyogUG9pbnRzIHRvIFdBTCB1c2FnZSBhcmVhIGluIERTTSAqLwotCVdh bFVzYWdlICAgKndhbF91c2FnZTsKKwkvKiBQb2ludHMgdG8gaW5zdHJ1bWVudGF0aW9uIGFyZWEg aW4gRFNNICovCisJSW5zdHJ1bWVudGF0aW9uICppbnN0cjsKIAogCS8qCiAJICogRmFsc2UgaWYg dGhlIGluZGV4IGlzIHRvdGFsbHkgdW5zdWl0YWJsZSB0YXJnZXQgZm9yIGFsbCBwYXJhbGxlbApA QCAtMjUwLDggKzI0Niw3IEBAIHBhcmFsbGVsX3ZhY3V1bV9pbml0KFJlbGF0aW9uIHJlbCwgUmVs YXRpb24gKmluZHJlbHMsIGludCBuaW5kZXhlcywKIAlQVlNoYXJlZCAgICpzaGFyZWQ7CiAJVGlk U3RvcmUgICAqZGVhZF9pdGVtczsKIAlQVkluZFN0YXRzICppbmRzdGF0czsKLQlCdWZmZXJVc2Fn ZSAqYnVmZmVyX3VzYWdlOwotCVdhbFVzYWdlICAgKndhbF91c2FnZTsKKwlJbnN0cnVtZW50YXRp b24gKmluc3RyOwogCWJvb2wJICAgKndpbGxfcGFyYWxsZWxfdmFjdXVtOwogCVNpemUJCWVzdF9p bmRzdGF0c19sZW47CiAJU2l6ZQkJZXN0X3NoYXJlZF9sZW47CkBAIC0zMDQsMTggKzI5OSwxNSBA QCBwYXJhbGxlbF92YWN1dW1faW5pdChSZWxhdGlvbiByZWwsIFJlbGF0aW9uICppbmRyZWxzLCBp bnQgbmluZGV4ZXMsCiAJc2htX3RvY19lc3RpbWF0ZV9rZXlzKCZwY3h0LT5lc3RpbWF0b3IsIDEp OwogCiAJLyoKLQkgKiBFc3RpbWF0ZSBzcGFjZSBmb3IgQnVmZmVyVXNhZ2UgYW5kIFdhbFVzYWdl IC0tCi0JICogUEFSQUxMRUxfVkFDVVVNX0tFWV9CVUZGRVJfVVNBR0UgYW5kIFBBUkFMTEVMX1ZB Q1VVTV9LRVlfV0FMX1VTQUdFLgorCSAqIEVzdGltYXRlIHNwYWNlIGZvciBJbnN0cnVtZW50YXRp b24gLS0KKwkgKiBQQVJBTExFTF9WQUNVVU1fS0VZX0lOU1RSVU1FTlRBVElPTi4KIAkgKgogCSAq IElmIHRoZXJlIGFyZSBubyBleHRlbnNpb25zIGxvYWRlZCB0aGF0IGNhcmUsIHdlIGNvdWxkIHNr aXAgdGhpcy4gIFdlCiAJICogaGF2ZSBubyB3YXkgb2Yga25vd2luZyB3aGV0aGVyIGFueW9uZSdz IGxvb2tpbmcgYXQgaW5zdHJ1bWVudGF0aW9uLCBzbwogCSAqIGRvIGl0IHVuY29uZGl0aW9uYWxs eS4KIAkgKi8KIAlzaG1fdG9jX2VzdGltYXRlX2NodW5rKCZwY3h0LT5lc3RpbWF0b3IsCi0JCQkJ CQkgICBtdWxfc2l6ZShzaXplb2YoQnVmZmVyVXNhZ2UpLCBwY3h0LT5ud29ya2VycykpOwotCXNo bV90b2NfZXN0aW1hdGVfa2V5cygmcGN4dC0+ZXN0aW1hdG9yLCAxKTsKLQlzaG1fdG9jX2VzdGlt YXRlX2NodW5rKCZwY3h0LT5lc3RpbWF0b3IsCi0JCQkJCQkgICBtdWxfc2l6ZShzaXplb2YoV2Fs VXNhZ2UpLCBwY3h0LT5ud29ya2VycykpOworCQkJCQkJICAgbXVsX3NpemUoc2l6ZW9mKEluc3Ry dW1lbnRhdGlvbiksIHBjeHQtPm53b3JrZXJzKSk7CiAJc2htX3RvY19lc3RpbWF0ZV9rZXlzKCZw Y3h0LT5lc3RpbWF0b3IsIDEpOwogCiAJLyogRmluYWxseSwgZXN0aW1hdGUgUEFSQUxMRUxfVkFD VVVNX0tFWV9RVUVSWV9URVhUIHNwYWNlICovCkBAIC0zOTYsMTcgKzM4OCwxMyBAQCBwYXJhbGxl bF92YWN1dW1faW5pdChSZWxhdGlvbiByZWwsIFJlbGF0aW9uICppbmRyZWxzLCBpbnQgbmluZGV4 ZXMsCiAJcHZzLT5zaGFyZWQgPSBzaGFyZWQ7CiAKIAkvKgotCSAqIEFsbG9jYXRlIHNwYWNlIGZv ciBlYWNoIHdvcmtlcidzIEJ1ZmZlclVzYWdlIGFuZCBXYWxVc2FnZTsgbm8gbmVlZCB0bwotCSAq IGluaXRpYWxpemUKKwkgKiBBbGxvY2F0ZSBzcGFjZSBmb3IgZWFjaCB3b3JrZXIncyBJbnN0cnVt ZW50YXRpb247IG5vIG5lZWQgdG8KKwkgKiBpbml0aWFsaXplLgogCSAqLwotCWJ1ZmZlcl91c2Fn ZSA9IHNobV90b2NfYWxsb2NhdGUocGN4dC0+dG9jLAotCQkJCQkJCQkJbXVsX3NpemUoc2l6ZW9m KEJ1ZmZlclVzYWdlKSwgcGN4dC0+bndvcmtlcnMpKTsKLQlzaG1fdG9jX2luc2VydChwY3h0LT50 b2MsIFBBUkFMTEVMX1ZBQ1VVTV9LRVlfQlVGRkVSX1VTQUdFLCBidWZmZXJfdXNhZ2UpOwotCXB2 cy0+YnVmZmVyX3VzYWdlID0gYnVmZmVyX3VzYWdlOwotCXdhbF91c2FnZSA9IHNobV90b2NfYWxs b2NhdGUocGN4dC0+dG9jLAotCQkJCQkJCQkgbXVsX3NpemUoc2l6ZW9mKFdhbFVzYWdlKSwgcGN4 dC0+bndvcmtlcnMpKTsKLQlzaG1fdG9jX2luc2VydChwY3h0LT50b2MsIFBBUkFMTEVMX1ZBQ1VV TV9LRVlfV0FMX1VTQUdFLCB3YWxfdXNhZ2UpOwotCXB2cy0+d2FsX3VzYWdlID0gd2FsX3VzYWdl OworCWluc3RyID0gc2htX3RvY19hbGxvY2F0ZShwY3h0LT50b2MsCisJCQkJCQkJIG11bF9zaXpl KHNpemVvZihJbnN0cnVtZW50YXRpb24pLCBwY3h0LT5ud29ya2VycykpOworCXNobV90b2NfaW5z ZXJ0KHBjeHQtPnRvYywgUEFSQUxMRUxfVkFDVVVNX0tFWV9JTlNUUlVNRU5UQVRJT04sIGluc3Ry KTsKKwlwdnMtPmluc3RyID0gaW5zdHI7CiAKIAkvKiBTdG9yZSBxdWVyeSBzdHJpbmcgZm9yIHdv cmtlcnMgKi8KIAlpZiAoZGVidWdfcXVlcnlfc3RyaW5nKQpAQCAtNzQ5LDcgKzczNyw3IEBAIHBh cmFsbGVsX3ZhY3V1bV9wcm9jZXNzX2FsbF9pbmRleGVzKFBhcmFsbGVsVmFjdXVtU3RhdGUgKnB2 cywgaW50IG51bV9pbmRleF9zY2FuCiAJCVdhaXRGb3JQYXJhbGxlbFdvcmtlcnNUb0ZpbmlzaChw dnMtPnBjeHQpOwogCiAJCWZvciAoaW50IGkgPSAwOyBpIDwgcHZzLT5wY3h0LT5ud29ya2Vyc19s YXVuY2hlZDsgaSsrKQotCQkJSW5zdHJBY2N1bVBhcmFsbGVsUXVlcnkoJnB2cy0+YnVmZmVyX3Vz YWdlW2ldLCAmcHZzLT53YWxfdXNhZ2VbaV0pOworCQkJSW5zdHJBY2N1bVBhcmFsbGVsUXVlcnko JnB2cy0+aW5zdHJbaV0pOwogCX0KIAogCS8qCkBAIC0xMDA3LDggKzk5NSw3IEBAIHBhcmFsbGVs X3ZhY3V1bV9tYWluKGRzbV9zZWdtZW50ICpzZWcsIHNobV90b2MgKnRvYykKIAlQVlNoYXJlZCAg ICpzaGFyZWQ7CiAJVGlkU3RvcmUgICAqZGVhZF9pdGVtczsKIAlRdWVyeUluc3RydW1lbnRhdGlv biAqaW5zdHI7Ci0JQnVmZmVyVXNhZ2UgKmJ1ZmZlcl91c2FnZTsKLQlXYWxVc2FnZSAgICp3YWxf dXNhZ2U7CisJSW5zdHJ1bWVudGF0aW9uICp3b3JrZXJfaW5zdHI7CiAJaW50CQkJbmluZGV4ZXM7 CiAJY2hhcgkgICAqc2hhcmVkcXVlcnk7CiAJRXJyb3JDb250ZXh0Q2FsbGJhY2sgZXJyY2FsbGJh Y2s7CkBAIC0xMTAyLDExICsxMDg5LDggQEAgcGFyYWxsZWxfdmFjdXVtX21haW4oZHNtX3NlZ21l bnQgKnNlZywgc2htX3RvYyAqdG9jKQogCXBhcmFsbGVsX3ZhY3V1bV9wcm9jZXNzX3NhZmVfaW5k ZXhlcygmcHZzKTsKIAogCS8qIFJlcG9ydCBidWZmZXIvV0FMIHVzYWdlIGR1cmluZyBwYXJhbGxl bCBleGVjdXRpb24gKi8KLQlidWZmZXJfdXNhZ2UgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFM TEVMX1ZBQ1VVTV9LRVlfQlVGRkVSX1VTQUdFLCBmYWxzZSk7Ci0Jd2FsX3VzYWdlID0gc2htX3Rv Y19sb29rdXAodG9jLCBQQVJBTExFTF9WQUNVVU1fS0VZX1dBTF9VU0FHRSwgZmFsc2UpOwotCUlu c3RyRW5kUGFyYWxsZWxRdWVyeShpbnN0ciwKLQkJCQkJCSAgJmJ1ZmZlcl91c2FnZVtQYXJhbGxl bFdvcmtlck51bWJlcl0sCi0JCQkJCQkgICZ3YWxfdXNhZ2VbUGFyYWxsZWxXb3JrZXJOdW1iZXJd KTsKKwl3b3JrZXJfaW5zdHIgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVMX1ZBQ1VVTV9L RVlfSU5TVFJVTUVOVEFUSU9OLCBmYWxzZSk7CisJSW5zdHJFbmRQYXJhbGxlbFF1ZXJ5KGluc3Ry LCAmd29ya2VyX2luc3RyW1BhcmFsbGVsV29ya2VyTnVtYmVyXSk7CiAKIAkvKiBSZXBvcnQgYW55 IHJlbWFpbmluZyBjb3N0LWJhc2VkIHZhY3V1bSBkZWxheSB0aW1lICovCiAJaWYgKHRyYWNrX2Nv c3RfZGVsYXlfdGltaW5nKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1Bh cmFsbGVsLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYwppbmRleCAwYjE4 YTA1YzQzNC4uN2EzOTAzNTA1NjQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNQYXJhbGxlbC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jCkBA IC02MCwxMyArNjAsMTIgQEAKICNkZWZpbmUgUEFSQUxMRUxfS0VZX0VYRUNVVE9SX0ZJWEVECQlV SU5UNjRDT05TVCgweEUwMDAwMDAwMDAwMDAwMDEpCiAjZGVmaW5lIFBBUkFMTEVMX0tFWV9QTEFO TkVEU1RNVAkJVUlOVDY0Q09OU1QoMHhFMDAwMDAwMDAwMDAwMDAyKQogI2RlZmluZSBQQVJBTExF TF9LRVlfUEFSQU1MSVNUSU5GTwkJVUlOVDY0Q09OU1QoMHhFMDAwMDAwMDAwMDAwMDAzKQotI2Rl ZmluZSBQQVJBTExFTF9LRVlfQlVGRkVSX1VTQUdFCQlVSU5UNjRDT05TVCgweEUwMDAwMDAwMDAw MDAwMDQpCisjZGVmaW5lIFBBUkFMTEVMX0tFWV9JTlNUUlVNRU5UQVRJT04JVUlOVDY0Q09OU1Qo MHhFMDAwMDAwMDAwMDAwMDA0KQogI2RlZmluZSBQQVJBTExFTF9LRVlfVFVQTEVfUVVFVUUJCVVJ TlQ2NENPTlNUKDB4RTAwMDAwMDAwMDAwMDAwNSkKLSNkZWZpbmUgUEFSQUxMRUxfS0VZX0lOU1RS VU1FTlRBVElPTglVSU5UNjRDT05TVCgweEUwMDAwMDAwMDAwMDAwMDYpCisjZGVmaW5lIFBBUkFM TEVMX0tFWV9OT0RFX0lOU1RSVU1FTlRBVElPTiBVSU5UNjRDT05TVCgweEUwMDAwMDAwMDAwMDAw MDYpCiAjZGVmaW5lIFBBUkFMTEVMX0tFWV9EU0EJCQkJVUlOVDY0Q09OU1QoMHhFMDAwMDAwMDAw MDAwMDA3KQogI2RlZmluZSBQQVJBTExFTF9LRVlfUVVFUllfVEVYVAkJVUlOVDY0Q09OU1QoMHhF MDAwMDAwMDAwMDAwMDA4KQogI2RlZmluZSBQQVJBTExFTF9LRVlfSklUX0lOU1RSVU1FTlRBVElP TiBVSU5UNjRDT05TVCgweEUwMDAwMDAwMDAwMDAwMDkpCi0jZGVmaW5lIFBBUkFMTEVMX0tFWV9X QUxfVVNBR0UJCQlVSU5UNjRDT05TVCgweEUwMDAwMDAwMDAwMDAwMEEpCiAKICNkZWZpbmUgUEFS QUxMRUxfVFVQTEVfUVVFVUVfU0laRQkJNjU1MzYKIApAQCAtNjI1LDggKzYyNCw2IEBAIEV4ZWNJ bml0UGFyYWxsZWxQbGFuKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBFU3RhdGUgKmVzdGF0ZSwKIAlj aGFyCSAgICpwc3RtdF9kYXRhOwogCWNoYXIJICAgKnBzdG10X3NwYWNlOwogCWNoYXIJICAgKnBh cmFtbGlzdGluZm9fc3BhY2U7Ci0JQnVmZmVyVXNhZ2UgKmJ1ZnVzYWdlX3NwYWNlOwotCVdhbFVz YWdlICAgKndhbHVzYWdlX3NwYWNlOwogCVNoYXJlZEV4ZWN1dG9ySW5zdHJ1bWVudGF0aW9uICpp bnN0cnVtZW50YXRpb24gPSBOVUxMOwogCVNoYXJlZEppdEluc3RydW1lbnRhdGlvbiAqaml0X2lu c3RydW1lbnRhdGlvbiA9IE5VTEw7CiAJaW50CQkJcHN0bXRfbGVuOwpAQCAtNjkwLDIxICs2ODcs MTQgQEAgRXhlY0luaXRQYXJhbGxlbFBsYW4oUGxhblN0YXRlICpwbGFuc3RhdGUsIEVTdGF0ZSAq ZXN0YXRlLAogCXNobV90b2NfZXN0aW1hdGVfa2V5cygmcGN4dC0+ZXN0aW1hdG9yLCAxKTsKIAog CS8qCi0JICogRXN0aW1hdGUgc3BhY2UgZm9yIEJ1ZmZlclVzYWdlLgorCSAqIEVzdGltYXRlIHNw YWNlIGZvciBJbnN0cnVtZW50YXRpb24uCiAJICoKIAkgKiBJZiBFWFBMQUlOIGlzIG5vdCBpbiB1 c2UgYW5kIHRoZXJlIGFyZSBubyBleHRlbnNpb25zIGxvYWRlZCB0aGF0IGNhcmUsCiAJICogd2Ug Y291bGQgc2tpcCB0aGlzLiAgQnV0IHdlIGhhdmUgbm8gd2F5IG9mIGtub3dpbmcgd2hldGhlciBh bnlvbmUncwogCSAqIGxvb2tpbmcgYXQgaW5zdHJ1bWVudGF0aW9uLCBzbyBkbyBpdCB1bmNvbmRp dGlvbmFsbHkuCiAJICovCiAJc2htX3RvY19lc3RpbWF0ZV9jaHVuaygmcGN4dC0+ZXN0aW1hdG9y LAotCQkJCQkJICAgbXVsX3NpemUoc2l6ZW9mKEJ1ZmZlclVzYWdlKSwgcGN4dC0+bndvcmtlcnMp KTsKLQlzaG1fdG9jX2VzdGltYXRlX2tleXMoJnBjeHQtPmVzdGltYXRvciwgMSk7Ci0KLQkvKgot CSAqIFNhbWUgdGhpbmcgZm9yIFdhbFVzYWdlLgotCSAqLwotCXNobV90b2NfZXN0aW1hdGVfY2h1 bmsoJnBjeHQtPmVzdGltYXRvciwKLQkJCQkJCSAgIG11bF9zaXplKHNpemVvZihXYWxVc2FnZSks IHBjeHQtPm53b3JrZXJzKSk7CisJCQkJCQkgICBtdWxfc2l6ZShzaXplb2YoSW5zdHJ1bWVudGF0 aW9uKSwgcGN4dC0+bndvcmtlcnMpKTsKIAlzaG1fdG9jX2VzdGltYXRlX2tleXMoJnBjeHQtPmVz dGltYXRvciwgMSk7CiAKIAkvKiBFc3RpbWF0ZSBzcGFjZSBmb3IgdHVwbGUgcXVldWVzLiAqLwpA QCAtNzkwLDE3ICs3ODAsMTggQEAgRXhlY0luaXRQYXJhbGxlbFBsYW4oUGxhblN0YXRlICpwbGFu c3RhdGUsIEVTdGF0ZSAqZXN0YXRlLAogCXNobV90b2NfaW5zZXJ0KHBjeHQtPnRvYywgUEFSQUxM RUxfS0VZX1BBUkFNTElTVElORk8sIHBhcmFtbGlzdGluZm9fc3BhY2UpOwogCVNlcmlhbGl6ZVBh cmFtTGlzdChlc3RhdGUtPmVzX3BhcmFtX2xpc3RfaW5mbywgJnBhcmFtbGlzdGluZm9fc3BhY2Up OwogCi0JLyogQWxsb2NhdGUgc3BhY2UgZm9yIGVhY2ggd29ya2VyJ3MgQnVmZmVyVXNhZ2U7IG5v IG5lZWQgdG8gaW5pdGlhbGl6ZS4gKi8KLQlidWZ1c2FnZV9zcGFjZSA9IHNobV90b2NfYWxsb2Nh dGUocGN4dC0+dG9jLAotCQkJCQkJCQkJICBtdWxfc2l6ZShzaXplb2YoQnVmZmVyVXNhZ2UpLCBw Y3h0LT5ud29ya2VycykpOwotCXNobV90b2NfaW5zZXJ0KHBjeHQtPnRvYywgUEFSQUxMRUxfS0VZ X0JVRkZFUl9VU0FHRSwgYnVmdXNhZ2Vfc3BhY2UpOwotCXBlaS0+YnVmZmVyX3VzYWdlID0gYnVm dXNhZ2Vfc3BhY2U7CisJLyoKKwkgKiBBbGxvY2F0ZSBzcGFjZSBmb3IgZWFjaCB3b3JrZXIncyBJ bnN0cnVtZW50YXRpb247IG5vIG5lZWQgdG8KKwkgKiBpbml0aWFsaXplLgorCSAqLworCXsKKwkJ SW5zdHJ1bWVudGF0aW9uICppbnN0cjsKIAotCS8qIFNhbWUgZm9yIFdhbFVzYWdlLiAqLwotCXdh bHVzYWdlX3NwYWNlID0gc2htX3RvY19hbGxvY2F0ZShwY3h0LT50b2MsCi0JCQkJCQkJCQkgIG11 bF9zaXplKHNpemVvZihXYWxVc2FnZSksIHBjeHQtPm53b3JrZXJzKSk7Ci0Jc2htX3RvY19pbnNl cnQocGN4dC0+dG9jLCBQQVJBTExFTF9LRVlfV0FMX1VTQUdFLCB3YWx1c2FnZV9zcGFjZSk7Ci0J cGVpLT53YWxfdXNhZ2UgPSB3YWx1c2FnZV9zcGFjZTsKKwkJaW5zdHIgPSBzaG1fdG9jX2FsbG9j YXRlKHBjeHQtPnRvYywKKwkJCQkJCQkJIG11bF9zaXplKHNpemVvZihJbnN0cnVtZW50YXRpb24p LCBwY3h0LT5ud29ya2VycykpOworCQlzaG1fdG9jX2luc2VydChwY3h0LT50b2MsIFBBUkFMTEVM X0tFWV9JTlNUUlVNRU5UQVRJT04sIGluc3RyKTsKKwkJcGVpLT5pbnN0cnVtZW50YXRpb24gPSBp bnN0cjsKKwl9CiAKIAkvKiBTZXQgdXAgdGhlIHR1cGxlIHF1ZXVlcyB0aGF0IHRoZSB3b3JrZXJz IHdpbGwgd3JpdGUgaW50by4gKi8KIAlwZWktPnRxdWV1ZSA9IEV4ZWNQYXJhbGxlbFNldHVwVHVw bGVRdWV1ZXMocGN4dCwgZmFsc2UpOwpAQCAtODI2LDkgKzgxNyw5IEBAIEV4ZWNJbml0UGFyYWxs ZWxQbGFuKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBFU3RhdGUgKmVzdGF0ZSwKIAkJaW5zdHJ1bWVu dCA9IEdldEluc3RydW1lbnRhdGlvbkFycmF5KGluc3RydW1lbnRhdGlvbik7CiAJCWZvciAoaSA9 IDA7IGkgPCBud29ya2VycyAqIGUubm5vZGVzOyArK2kpCiAJCQlJbnN0ckluaXROb2RlKCZpbnN0 cnVtZW50W2ldLCBlc3RhdGUtPmVzX2luc3RydW1lbnQtPmluc3RydW1lbnRfb3B0aW9ucyk7Ci0J CXNobV90b2NfaW5zZXJ0KHBjeHQtPnRvYywgUEFSQUxMRUxfS0VZX0lOU1RSVU1FTlRBVElPTiwK KwkJc2htX3RvY19pbnNlcnQocGN4dC0+dG9jLCBQQVJBTExFTF9LRVlfTk9ERV9JTlNUUlVNRU5U QVRJT04sCiAJCQkJCSAgIGluc3RydW1lbnRhdGlvbik7Ci0JCXBlaS0+aW5zdHJ1bWVudGF0aW9u ID0gaW5zdHJ1bWVudGF0aW9uOworCQlwZWktPm5vZGVfaW5zdHJ1bWVudGF0aW9uID0gaW5zdHJ1 bWVudGF0aW9uOwogCiAJCWlmIChlc3RhdGUtPmVzX2ppdF9mbGFncyAhPSBQR0pJVF9OT05FKQog CQl7CkBAIC0xMjMwLDcgKzEyMjEsNyBAQCBFeGVjUGFyYWxsZWxGaW5pc2goUGFyYWxsZWxFeGVj dXRvckluZm8gKnBlaSkKIAkgKiBmaW5pc2gsIG9yIHdlIG1pZ2h0IGdldCBpbmNvbXBsZXRlIGRh dGEuKQogCSAqLwogCWZvciAoaSA9IDA7IGkgPCBud29ya2VyczsgaSsrKQotCQlJbnN0ckFjY3Vt UGFyYWxsZWxRdWVyeSgmcGVpLT5idWZmZXJfdXNhZ2VbaV0sICZwZWktPndhbF91c2FnZVtpXSk7 CisJCUluc3RyQWNjdW1QYXJhbGxlbFF1ZXJ5KCZwZWktPmluc3RydW1lbnRhdGlvbltpXSk7CiAK IAlwZWktPmZpbmlzaGVkID0gdHJ1ZTsKIH0KQEAgLTEyNDQsMTAgKzEyMzUsMTAgQEAgRXhlY1Bh cmFsbGVsRmluaXNoKFBhcmFsbGVsRXhlY3V0b3JJbmZvICpwZWkpCiB2b2lkCiBFeGVjUGFyYWxs ZWxDbGVhbnVwKFBhcmFsbGVsRXhlY3V0b3JJbmZvICpwZWkpCiB7Ci0JLyogQWNjdW11bGF0ZSBp bnN0cnVtZW50YXRpb24sIGlmIGFueS4gKi8KLQlpZiAocGVpLT5pbnN0cnVtZW50YXRpb24pCisJ LyogQWNjdW11bGF0ZSBub2RlIGluc3RydW1lbnRhdGlvbiwgaWYgYW55LiAqLworCWlmIChwZWkt Pm5vZGVfaW5zdHJ1bWVudGF0aW9uKQogCQlFeGVjUGFyYWxsZWxSZXRyaWV2ZUluc3RydW1lbnRh dGlvbihwZWktPnBsYW5zdGF0ZSwKLQkJCQkJCQkJCQkJcGVpLT5pbnN0cnVtZW50YXRpb24pOwor CQkJCQkJCQkJCQlwZWktPm5vZGVfaW5zdHJ1bWVudGF0aW9uKTsKIAogCS8qIEFjY3VtdWxhdGUg SklUIGluc3RydW1lbnRhdGlvbiwgaWYgYW55LiAqLwogCWlmIChwZWktPmppdF9pbnN0cnVtZW50 YXRpb24pCkBAIC0xNDcxLDggKzE0NjIsNiBAQCBQYXJhbGxlbFF1ZXJ5TWFpbihkc21fc2VnbWVu dCAqc2VnLCBzaG1fdG9jICp0b2MpCiB7CiAJRml4ZWRQYXJhbGxlbEV4ZWN1dG9yU3RhdGUgKmZw ZXM7CiAJUXVlcnlJbnN0cnVtZW50YXRpb24gKmluc3RyOwotCUJ1ZmZlclVzYWdlICpidWZmZXJf dXNhZ2U7Ci0JV2FsVXNhZ2UgICAqd2FsX3VzYWdlOwogCURlc3RSZWNlaXZlciAqcmVjZWl2ZXI7 CiAJUXVlcnlEZXNjICAqcXVlcnlEZXNjOwogCVNoYXJlZEV4ZWN1dG9ySW5zdHJ1bWVudGF0aW9u ICppbnN0cnVtZW50YXRpb247CkBAIC0xNDg3LDcgKzE0NzYsNyBAQCBQYXJhbGxlbFF1ZXJ5TWFp bihkc21fc2VnbWVudCAqc2VnLCBzaG1fdG9jICp0b2MpCiAKIAkvKiBTZXQgdXAgRGVzdFJlY2Vp dmVyLCBTaGFyZWRFeGVjdXRvckluc3RydW1lbnRhdGlvbiwgYW5kIFF1ZXJ5RGVzYy4gKi8KIAly ZWNlaXZlciA9IEV4ZWNQYXJhbGxlbEdldFJlY2VpdmVyKHNlZywgdG9jKTsKLQlpbnN0cnVtZW50 YXRpb24gPSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVMX0tFWV9JTlNUUlVNRU5UQVRJT04s IHRydWUpOworCWluc3RydW1lbnRhdGlvbiA9IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxf S0VZX05PREVfSU5TVFJVTUVOVEFUSU9OLCB0cnVlKTsKIAlpZiAoaW5zdHJ1bWVudGF0aW9uICE9 IE5VTEwpCiAJCWluc3RydW1lbnRfb3B0aW9ucyA9IGluc3RydW1lbnRhdGlvbi0+aW5zdHJ1bWVu dF9vcHRpb25zOwogCWppdF9pbnN0cnVtZW50YXRpb24gPSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBB UkFMTEVMX0tFWV9KSVRfSU5TVFJVTUVOVEFUSU9OLApAQCAtMTU0NSwxMSArMTUzNCwxMiBAQCBQ YXJhbGxlbFF1ZXJ5TWFpbihkc21fc2VnbWVudCAqc2VnLCBzaG1fdG9jICp0b2MpCiAJRXhlY3V0 b3JGaW5pc2gocXVlcnlEZXNjKTsKIAogCS8qIFJlcG9ydCBidWZmZXIvV0FMIHVzYWdlIGR1cmlu ZyBwYXJhbGxlbCBleGVjdXRpb24uICovCi0JYnVmZmVyX3VzYWdlID0gc2htX3RvY19sb29rdXAo dG9jLCBQQVJBTExFTF9LRVlfQlVGRkVSX1VTQUdFLCBmYWxzZSk7Ci0Jd2FsX3VzYWdlID0gc2ht X3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9LRVlfV0FMX1VTQUdFLCBmYWxzZSk7Ci0JSW5zdHJF bmRQYXJhbGxlbFF1ZXJ5KGluc3RyLAotCQkJCQkJICAmYnVmZmVyX3VzYWdlW1BhcmFsbGVsV29y a2VyTnVtYmVyXSwKLQkJCQkJCSAgJndhbF91c2FnZVtQYXJhbGxlbFdvcmtlck51bWJlcl0pOwor CXsKKwkJSW5zdHJ1bWVudGF0aW9uICp3b3JrZXJfaW5zdHI7CisKKwkJd29ya2VyX2luc3RyID0g c2htX3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9LRVlfSU5TVFJVTUVOVEFUSU9OLCBmYWxzZSk7 CisJCUluc3RyRW5kUGFyYWxsZWxRdWVyeShpbnN0ciwgJndvcmtlcl9pbnN0cltQYXJhbGxlbFdv cmtlck51bWJlcl0pOworCX0KIAogCS8qIFJlcG9ydCBpbnN0cnVtZW50YXRpb24gZGF0YSBpZiBh bnkgaW5zdHJ1bWVudGF0aW9uIG9wdGlvbnMgYXJlIHNldC4gKi8KIAlpZiAoaW5zdHJ1bWVudGF0 aW9uICE9IE5VTEwpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9pbnN0cnVtZW50 LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9pbnN0cnVtZW50LmMKaW5kZXggNjg5MjcwNmE4M2Eu LjA5ZDVmZmU4NjUxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9pbnN0cnVtZW50 LmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvaW5zdHJ1bWVudC5jCkBAIC0zMjIsMTEgKzMy MiwxMiBAQCBJbnN0clN0YXJ0UGFyYWxsZWxRdWVyeSh2b2lkKQogCiAvKiByZXBvcnQgdXNhZ2Ug YWZ0ZXIgcGFyYWxsZWwgZXhlY3V0b3Igc2h1dGRvd24gKi8KIHZvaWQKLUluc3RyRW5kUGFyYWxs ZWxRdWVyeShRdWVyeUluc3RydW1lbnRhdGlvbiAqcWluc3RyLCBCdWZmZXJVc2FnZSAqYnVmdXNh Z2UsIFdhbFVzYWdlICp3YWx1c2FnZSkKK0luc3RyRW5kUGFyYWxsZWxRdWVyeShRdWVyeUluc3Ry dW1lbnRhdGlvbiAqcWluc3RyLCBJbnN0cnVtZW50YXRpb24gKmRzdCkKIHsKIAlJbnN0clF1ZXJ5 U3RvcEZpbmFsaXplKHFpbnN0cik7Ci0JbWVtY3B5KGJ1ZnVzYWdlLCAmcWluc3RyLT5pbnN0ci5i dWZ1c2FnZSwgc2l6ZW9mKEJ1ZmZlclVzYWdlKSk7Ci0JbWVtY3B5KHdhbHVzYWdlLCAmcWluc3Ry LT5pbnN0ci53YWx1c2FnZSwgc2l6ZW9mKFdhbFVzYWdlKSk7CisJZHN0LT5uZWVkX3N0YWNrID0g cWluc3RyLT5pbnN0ci5uZWVkX3N0YWNrOworCW1lbWNweSgmZHN0LT5idWZ1c2FnZSwgJnFpbnN0 ci0+aW5zdHIuYnVmdXNhZ2UsIHNpemVvZihCdWZmZXJVc2FnZSkpOworCW1lbWNweSgmZHN0LT53 YWx1c2FnZSwgJnFpbnN0ci0+aW5zdHIud2FsdXNhZ2UsIHNpemVvZihXYWxVc2FnZSkpOwogfQog CiAvKgpAQCAtMzQyLDEyICszNDMsMTEgQEAgSW5zdHJFbmRQYXJhbGxlbFF1ZXJ5KFF1ZXJ5SW5z dHJ1bWVudGF0aW9uICpxaW5zdHIsIEJ1ZmZlclVzYWdlICpidWZ1c2FnZSwgV2FsVXMKICAqIGFj dGl2aXR5IGlzIGFjY3VtdWxhdGVkLgogICovCiB2b2lkCi1JbnN0ckFjY3VtUGFyYWxsZWxRdWVy eShCdWZmZXJVc2FnZSAqYnVmdXNhZ2UsIFdhbFVzYWdlICp3YWx1c2FnZSkKK0luc3RyQWNjdW1Q YXJhbGxlbFF1ZXJ5KEluc3RydW1lbnRhdGlvbiAqaW5zdHIpCiB7Ci0JQnVmZmVyVXNhZ2VBZGQo Jmluc3RyX3N0YWNrLmN1cnJlbnQtPmJ1ZnVzYWdlLCBidWZ1c2FnZSk7Ci0JV2FsVXNhZ2VBZGQo Jmluc3RyX3N0YWNrLmN1cnJlbnQtPndhbHVzYWdlLCB3YWx1c2FnZSk7CisJSW5zdHJBY2N1bVN0 YWNrKGluc3RyX3N0YWNrLmN1cnJlbnQsIGluc3RyKTsKIAotCVdhbFVzYWdlQWRkKCZwZ1dhbFVz YWdlLCB3YWx1c2FnZSk7CisJV2FsVXNhZ2VBZGQoJnBnV2FsVXNhZ2UsICZpbnN0ci0+d2FsdXNh Z2UpOwogfQogCiAvKiBOb2RlIGluc3RydW1lbnRhdGlvbiBoYW5kbGluZyAqLwpkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmggYi9zcmMvaW5jbHVkZS9leGVj dXRvci9leGVjUGFyYWxsZWwuaAppbmRleCA1YTIwMzQ4MTFkNS4uNmM4YjYwMmQwN2YgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5oCisrKyBiL3NyYy9pbmNs dWRlL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5oCkBAIC0yNSw5ICsyNSw4IEBAIHR5cGVkZWYgc3Ry dWN0IFBhcmFsbGVsRXhlY3V0b3JJbmZvCiB7CiAJUGxhblN0YXRlICAqcGxhbnN0YXRlOwkJLyog cGxhbiBzdWJ0cmVlIHdlJ3JlIHJ1bm5pbmcgaW4gcGFyYWxsZWwgKi8KIAlQYXJhbGxlbENvbnRl eHQgKnBjeHQ7CQkvKiBwYXJhbGxlbCBjb250ZXh0IHdlJ3JlIHVzaW5nICovCi0JQnVmZmVyVXNh Z2UgKmJ1ZmZlcl91c2FnZTsJLyogcG9pbnRzIHRvIGJ1ZnVzYWdlIGFyZWEgaW4gRFNNICovCi0J V2FsVXNhZ2UgICAqd2FsX3VzYWdlOwkJLyogd2FsdXNhZ2UgYXJlYSBpbiBEU00gKi8KLQlTaGFy ZWRFeGVjdXRvckluc3RydW1lbnRhdGlvbiAqaW5zdHJ1bWVudGF0aW9uOyAvKiBvcHRpb25hbCAq LworCUluc3RydW1lbnRhdGlvbiAqaW5zdHJ1bWVudGF0aW9uOwkvKiBpbnN0cnVtZW50YXRpb24g YXJlYSBpbiBEU00gKi8KKwlTaGFyZWRFeGVjdXRvckluc3RydW1lbnRhdGlvbiAqbm9kZV9pbnN0 cnVtZW50YXRpb247CS8qIG9wdGlvbmFsICovCiAJc3RydWN0IFNoYXJlZEppdEluc3RydW1lbnRh dGlvbiAqaml0X2luc3RydW1lbnRhdGlvbjsJLyogb3B0aW9uYWwgKi8KIAlkc2FfYXJlYSAgICph cmVhOwkJCS8qIHBvaW50cyB0byBEU0EgYXJlYSBpbiBEU00gKi8KIAlkc2FfcG9pbnRlciBwYXJh bV9leGVjOwkJLyogc2VyaWFsaXplZCBQQVJBTV9FWEVDIHBhcmFtZXRlcnMgKi8KZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2luc3RydW1lbnQuaCBiL3NyYy9pbmNsdWRlL2V4ZWN1 dG9yL2luc3RydW1lbnQuaAppbmRleCBmNDljM2Y5OWNmMi4uYjMwYTE1YmMwMjcgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2luc3RydW1lbnQuaAorKysgYi9zcmMvaW5jbHVkZS9l eGVjdXRvci9pbnN0cnVtZW50LmgKQEAgLTI4Myw4ICsyODMsOCBAQCBleHRlcm4gdm9pZCBJbnN0 clF1ZXJ5U3RvcEZpbmFsaXplKFF1ZXJ5SW5zdHJ1bWVudGF0aW9uICppbnN0cik7CiBleHRlcm4g dm9pZCBJbnN0clF1ZXJ5UmVtZW1iZXJDaGlsZChRdWVyeUluc3RydW1lbnRhdGlvbiAqcGFyZW50 LCBJbnN0cnVtZW50YXRpb24gKmluc3RyKTsKIAogcGdfbm9kaXNjYXJkIGV4dGVybiBRdWVyeUlu c3RydW1lbnRhdGlvbiAqSW5zdHJTdGFydFBhcmFsbGVsUXVlcnkodm9pZCk7Ci1leHRlcm4gdm9p ZCBJbnN0ckVuZFBhcmFsbGVsUXVlcnkoUXVlcnlJbnN0cnVtZW50YXRpb24gKnFpbnN0ciwgQnVm ZmVyVXNhZ2UgKmJ1ZnVzYWdlLCBXYWxVc2FnZSAqd2FsdXNhZ2UpOwotZXh0ZXJuIHZvaWQgSW5z dHJBY2N1bVBhcmFsbGVsUXVlcnkoQnVmZmVyVXNhZ2UgKmJ1ZnVzYWdlLCBXYWxVc2FnZSAqd2Fs dXNhZ2UpOworZXh0ZXJuIHZvaWQgSW5zdHJFbmRQYXJhbGxlbFF1ZXJ5KFF1ZXJ5SW5zdHJ1bWVu dGF0aW9uICpxaW5zdHIsIEluc3RydW1lbnRhdGlvbiAqZHN0KTsKK2V4dGVybiB2b2lkIEluc3Ry QWNjdW1QYXJhbGxlbFF1ZXJ5KEluc3RydW1lbnRhdGlvbiAqaW5zdHIpOwogCiBleHRlcm4gTm9k ZUluc3RydW1lbnRhdGlvbiAqSW5zdHJBbGxvY05vZGUoUXVlcnlJbnN0cnVtZW50YXRpb24gKnFp bnN0ciwgYm9vbCBhc3luY19tb2RlKTsKIGV4dGVybiB2b2lkIEluc3RySW5pdE5vZGUoTm9kZUlu c3RydW1lbnRhdGlvbiAqaW5zdHIsIGludCBpbnN0cnVtZW50X29wdGlvbnMpOwotLSAKMi40Ny4x Cgo= --0000000000005bb84b064dfc5b57 Content-Type: application/octet-stream; name="v11-0007-instrumentation-Optimize-ExecProcNodeInstr-instr.patch" Content-Disposition: attachment; filename="v11-0007-instrumentation-Optimize-ExecProcNodeInstr-instr.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mn8k89yr6 RnJvbSA3YjJlMzFjYzFhMTE0NDRhYjIwYjA0NWRkYzQwNTJhNDhmODM2MDJjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpEYXRlOiBT YXQsIDcgTWFyIDIwMjYgMTc6NTI6MjQgLTA4MDAKU3ViamVjdDogW1BBVENIIHYxMSA3LzldIGlu c3RydW1lbnRhdGlvbjogT3B0aW1pemUgRXhlY1Byb2NOb2RlSW5zdHIKIGluc3RydWN0aW9ucyBi eSBpbmxpbmluZwoKRm9yIG1vc3QgcXVlcmllcywgdGhlIGJ1bGsgb2YgdGhlIG92ZXJoZWFkIG9m IEVYUExBSU4gQU5BTFlaRSBoYXBwZW5zIGluCkV4ZWNQcm9jTm9kZUluc3RyIHdoZW4gc3RhcnRp bmcvc3RvcHBpbmcgaW5zdHJ1bWVudGF0aW9uIGZvciB0aGF0IG5vZGUuCgpQcmV2aW91c2x5IGVh Y2ggRXhlY1Byb2NOb2RlSW5zdHIgd291bGQgY2hlY2sgd2hpY2ggaW5zdHJ1bWVudGF0aW9uCm9w dGlvbnMgYXJlIGFjdGl2ZSBpbiB0aGUgSW5zdHJTdGFydE5vZGUvSW5zdHJTdG9wTm9kZSBjYWxs cywgYW5kIGRvIHRoZQpjb3JyZXNwb25kaW5nIHdvcmsgKHRpbWVycywgaW5zdHJ1bWVudGF0aW9u IHN0YWNrLCBldGMuKS4gVGhlc2UKY29uZGl0aW9uYWxzIGJlaW5nIGNoZWNrZWQgZm9yIGVhY2gg dHVwbGUgYmVpbmcgZW1pdHRlZCBhZGQgdXAsIGFuZCBjYXVzZQpub24tb3B0aW1hbCBzZXQgb2Yg aW5zdHJ1Y3Rpb25zIHRvIGJlIGdlbmVyYXRlZCBieSB0aGUgY29tcGlsZXIuCgpCZWNhdXNlIHdl IGFscmVhZHkgaGF2ZSBhbiBleGlzdGluZyBtZWNoYW5pc20gdG8gc3BlY2lmeSBhIGZ1bmN0aW9u CnBvaW50ZXIgd2hlbiBpbnN0cnVtZW50YXRpb24gaXMgZW5hYmxlZCwgd2UgY2FuIGluc3RlYWQg Y3JlYXRlIHNwZWNpYWxpemVkCmZ1bmN0aW9ucyB0aGF0IGFyZSB0YWlsb3JlZCB0byB0aGUgaW5z dHJ1bWVudGF0aW9uIG9wdGlvbnMgZW5hYmxlZCwgYW5kCmF2b2lkIGNvbmRpdGlvbmFscyBvbiBz dWJzZXF1ZW50IEV4ZWNQcm9jTm9kZUluc3RyIGNhbGxzLiBUaGlzIHJlc3VsdHMgaW4KdGhlIG92 ZXJoZWFkIGZvciBFWFBMQUlOIChBTkFMWVpFLCBUSU1JTkcgT0ZGLCBCVUZGRVJTIE9GRikgZm9y IGEgc3RyZXNzCnRlc3Qgd2l0aCBhIGxhcmdlIENPVU5UKCopIHRoYXQgZG9lcyBtYW55IEV4ZWNQ cm9jTm9kZSBjYWxscyBmcm9tIH4gMjAlIG9uCnRvcCBvZiBhY3R1YWwgcnVudGltZSB0byB+IDMl LiBXaGVuIHVzaW5nIEJVRkZFUlMgT04gdGhlIHNhbWUgcXVlcnkgZ29lcwpmcm9tIH4gMjAlIHRv IH4gMTAlIG9uIHRvcCBvZiBhY3R1YWwgcnVudGltZS4KCkF1dGhvcjogTHVrYXMgRml0dGwgPGx1 a2FzQGZpdHRsLmNvbT4KUmV2aWV3ZWQtYnk6IFpzb2x0IFBhcnJhZ2kgPHpzb2x0LnBhcnJhZ2lA cGVyY29uYS5jb20+CkRpc2N1c3Npb246IGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL21lc3Nh Z2UtaWQvZmxhdC9DQVA1M1BreEZQN2k3LXd5OThabUVKMTFlZFlxLVJyUHZKb2E0a3pHaEJCakVS QTROeXclNDBtYWlsLmdtYWlsLmNvbSNlOGRmZDAxOGEwN2Q3ZjhkNDE1NjVhMDc5ZDQwYzU2NAot LS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQcm9jbm9kZS5jIHwgIDIyICstLS0KIHNyYy9i YWNrZW5kL2V4ZWN1dG9yL2luc3RydW1lbnQuYyAgIHwgMTk4ICsrKysrKysrKysrKysrKysrKysr LS0tLS0tLS0KIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL2luc3RydW1lbnQuaCAgIHwgICA1ICsKIDMg ZmlsZXMgY2hhbmdlZCwgMTQ4IGluc2VydGlvbnMoKyksIDc3IGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQcm9jbm9kZS5jIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3IvZXhlY1Byb2Nub2RlLmMKaW5kZXggMjFhZDFiMDRhNTcuLjlmNTY5ODA2M2YwIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUHJvY25vZGUuYworKysgYi9zcmMv YmFja2VuZC9leGVjdXRvci9leGVjUHJvY25vZGUuYwpAQCAtMTIxLDcgKzEyMSw2IEBACiAjaW5j bHVkZSAibm9kZXMvbm9kZUZ1bmNzLmgiCiAKIHN0YXRpYyBUdXBsZVRhYmxlU2xvdCAqRXhlY1By b2NOb2RlRmlyc3QoUGxhblN0YXRlICpub2RlKTsKLXN0YXRpYyBUdXBsZVRhYmxlU2xvdCAqRXhl Y1Byb2NOb2RlSW5zdHIoUGxhblN0YXRlICpub2RlKTsKIHN0YXRpYyBib29sIEV4ZWNTaHV0ZG93 bk5vZGVfd2Fsa2VyKFBsYW5TdGF0ZSAqbm9kZSwgdm9pZCAqY29udGV4dCk7CiBzdGF0aWMgYm9v bCBFeGVjUmVtZW1iZXJOb2RlSW5zdHJ1bWVudGF0aW9uX3dhbGtlcihQbGFuU3RhdGUgKm5vZGUs IHZvaWQgKmNvbnRleHQpOwogc3RhdGljIGJvb2wgRXhlY0ZpbmFsaXplTm9kZUluc3RydW1lbnRh dGlvbl93YWxrZXIoUGxhblN0YXRlICpub2RlLCB2b2lkICpjb250ZXh0KTsKQEAgLTQ2NSw3ICs0 NjQsNyBAQCBFeGVjUHJvY05vZGVGaXJzdChQbGFuU3RhdGUgKm5vZGUpCiAJICogaGF2ZSBFeGVj UHJvY05vZGUoKSBkaXJlY3RseSBjYWxsIHRoZSByZWxldmFudCBmdW5jdGlvbiBmcm9tIG5vdyBv bi4KIAkgKi8KIAlpZiAobm9kZS0+aW5zdHJ1bWVudCkKLQkJbm9kZS0+RXhlY1Byb2NOb2RlID0g RXhlY1Byb2NOb2RlSW5zdHI7CisJCW5vZGUtPkV4ZWNQcm9jTm9kZSA9IEluc3RyTm9kZVNldHVw RXhlY1Byb2NOb2RlKG5vZGUtPmluc3RydW1lbnQpOwogCWVsc2UKIAkJbm9kZS0+RXhlY1Byb2NO b2RlID0gbm9kZS0+RXhlY1Byb2NOb2RlUmVhbDsKIApAQCAtNDczLDI1ICs0NzIsNiBAQCBFeGVj UHJvY05vZGVGaXJzdChQbGFuU3RhdGUgKm5vZGUpCiB9CiAKIAotLyoKLSAqIEV4ZWNQcm9jTm9k ZSB3cmFwcGVyIHRoYXQgcGVyZm9ybXMgaW5zdHJ1bWVudGF0aW9uIGNhbGxzLiAgQnkga2VlcGlu ZwotICogdGhpcyBhIHNlcGFyYXRlIGZ1bmN0aW9uLCB3ZSBhdm9pZCBvdmVyaGVhZCBpbiB0aGUg bm9ybWFsIGNhc2Ugd2hlcmUKLSAqIG5vIGluc3RydW1lbnRhdGlvbiBpcyB3YW50ZWQuCi0gKi8K LXN0YXRpYyBUdXBsZVRhYmxlU2xvdCAqCi1FeGVjUHJvY05vZGVJbnN0cihQbGFuU3RhdGUgKm5v ZGUpCi17Ci0JVHVwbGVUYWJsZVNsb3QgKnJlc3VsdDsKLQotCUluc3RyU3RhcnROb2RlKG5vZGUt Pmluc3RydW1lbnQpOwotCi0JcmVzdWx0ID0gbm9kZS0+RXhlY1Byb2NOb2RlUmVhbChub2RlKTsK LQotCUluc3RyU3RvcE5vZGUobm9kZS0+aW5zdHJ1bWVudCwgVHVwSXNOdWxsKHJlc3VsdCkgPyAw LjAgOiAxLjApOwotCi0JcmV0dXJuIHJlc3VsdDsKLX0KLQogCiAvKiAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgkJTXVs dGlFeGVjUHJvY05vZGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2luc3RydW1l bnQuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2luc3RydW1lbnQuYwppbmRleCAwOWQ1ZmZlODY1 MS4uNGVhODA3ZTI5NWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2luc3RydW1l bnQuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9pbnN0cnVtZW50LmMKQEAgLTU5LDI5ICs1 OSwyMCBAQCBJbnN0ckluaXRPcHRpb25zKEluc3RydW1lbnRhdGlvbiAqaW5zdHIsIGludCBpbnN0 cnVtZW50X29wdGlvbnMpCiAJaW5zdHItPm5lZWRfdGltZXIgPSAoaW5zdHJ1bWVudF9vcHRpb25z ICYgSU5TVFJVTUVOVF9USU1FUikgIT0gMDsKIH0KIAotdm9pZAotSW5zdHJTdGFydChJbnN0cnVt ZW50YXRpb24gKmluc3RyKQorc3RhdGljIGlubGluZSB2b2lkCitJbnN0clN0YXJ0VGltZXIoSW5z dHJ1bWVudGF0aW9uICppbnN0cikKIHsKLQlpZiAoaW5zdHItPm5lZWRfdGltZXIpCi0JewotCQlp ZiAoIUlOU1RSX1RJTUVfSVNfWkVSTyhpbnN0ci0+c3RhcnR0aW1lKSkKLQkJCWVsb2coRVJST1Is ICJJbnN0clN0YXJ0IGNhbGxlZCB0d2ljZSBpbiBhIHJvdyIpOwotCQllbHNlCi0JCQlJTlNUUl9U SU1FX1NFVF9DVVJSRU5UKGluc3RyLT5zdGFydHRpbWUpOwotCX0KKwlBc3NlcnQoSU5TVFJfVElN RV9JU19aRVJPKGluc3RyLT5zdGFydHRpbWUpKTsKIAotCWlmIChpbnN0ci0+bmVlZF9zdGFjaykK LQkJSW5zdHJQdXNoU3RhY2soaW5zdHIpOworCUlOU1RSX1RJTUVfU0VUX0NVUlJFTlQoaW5zdHIt PnN0YXJ0dGltZSk7CiB9CiAKLXN0YXRpYyB2b2lkCitzdGF0aWMgaW5saW5lIHZvaWQKIEluc3Ry U3RvcFRpbWVyKEluc3RydW1lbnRhdGlvbiAqaW5zdHIpCiB7CiAJaW5zdHJfdGltZQllbmR0aW1l OwogCi0JLyogbGV0J3MgdXBkYXRlIHRoZSB0aW1lIG9ubHkgaWYgdGhlIHRpbWVyIHdhcyByZXF1 ZXN0ZWQgKi8KLQlpZiAoSU5TVFJfVElNRV9JU19aRVJPKGluc3RyLT5zdGFydHRpbWUpKQotCQll bG9nKEVSUk9SLCAiSW5zdHJTdG9wIGNhbGxlZCB3aXRob3V0IHN0YXJ0Iik7CisJQXNzZXJ0KCFJ TlNUUl9USU1FX0lTX1pFUk8oaW5zdHItPnN0YXJ0dGltZSkpOwogCiAJSU5TVFJfVElNRV9TRVRf Q1VSUkVOVChlbmR0aW1lKTsKIAlJTlNUUl9USU1FX0FDQ1VNX0RJRkYoaW5zdHItPnRvdGFsLCBl bmR0aW1lLCBpbnN0ci0+c3RhcnR0aW1lKTsKQEAgLTg5LDYgKzgwLDE2IEBAIEluc3RyU3RvcFRp bWVyKEluc3RydW1lbnRhdGlvbiAqaW5zdHIpCiAJSU5TVFJfVElNRV9TRVRfWkVSTyhpbnN0ci0+ c3RhcnR0aW1lKTsKIH0KIAordm9pZAorSW5zdHJTdGFydChJbnN0cnVtZW50YXRpb24gKmluc3Ry KQoreworCWlmIChpbnN0ci0+bmVlZF90aW1lcikKKwkJSW5zdHJTdGFydFRpbWVyKGluc3RyKTsK KworCWlmIChpbnN0ci0+bmVlZF9zdGFjaykKKwkJSW5zdHJQdXNoU3RhY2soaW5zdHIpOworfQor CiB2b2lkCiBJbnN0clN0b3AoSW5zdHJ1bWVudGF0aW9uICppbnN0cikKIHsKQEAgLTM3Miw2NSAr MzczLDU3IEBAIEluc3RySW5pdE5vZGUoTm9kZUluc3RydW1lbnRhdGlvbiAqaW5zdHIsIGludCBp bnN0cnVtZW50X29wdGlvbnMpCiAJSW5zdHJJbml0T3B0aW9ucygmaW5zdHItPmluc3RyLCBpbnN0 cnVtZW50X29wdGlvbnMpOwogfQogCi0vKiBFbnRyeSB0byBhIHBsYW4gbm9kZSAqLworLyogRW50 cnkgdG8gYSBwbGFuIG5vZGUuIElmIHlvdSBtb2RpZnkgdGhpcywgY2hlY2sgSW5zdHJOb2RlU2V0 dXBFeGVjUHJvY05vZGUuICovCiB2b2lkCiBJbnN0clN0YXJ0Tm9kZShOb2RlSW5zdHJ1bWVudGF0 aW9uICppbnN0cikKIHsKIAlJbnN0clN0YXJ0KCZpbnN0ci0+aW5zdHIpOwogfQogCi0KLS8qIEV4 aXQgZnJvbSBhIHBsYW4gbm9kZSAqLwotdm9pZAotSW5zdHJTdG9wTm9kZShOb2RlSW5zdHJ1bWVu dGF0aW9uICppbnN0ciwgZG91YmxlIG5UdXBsZXMpCisvKgorICogVXBkYXRlcyB0aGUgbm9kZSBp bnN0cnVtZW50YXRpb24gdGltZSBjb3VudGVyLgorICoKKyAqIE5vdGUgdGhpcyBpcyBkaWZmZXJl bnQgZnJvbSBJbnN0clN0b3AgYmVjYXVzZSB0b3RhbCBpcyBvbmx5IHVwZGF0ZWQgaW4KKyAqIElu c3RyRW5kTG9vcC4gV2UgbmVlZCB0aGUgc2VwYXJhdGUgY291bnRlciB2YXJpYWJsZSBiZWNhdXNl IHdlIG5lZWQgdG8KKyAqIGNhbGN1bGF0ZSBzdGFydC11cCB0aW1lIGZvciB0aGUgZmlyc3QgdHVw bGUgaW4gZWFjaCBjeWNsZSwgYW5kIHRoZW4KKyAqIGFjY3VtdWxhdGUgaXQgdG9nZXRoZXIuCisg Ki8KK3N0YXRpYyBpbmxpbmUgdm9pZAorSW5zdHJTdG9wTm9kZVRpbWVyKE5vZGVJbnN0cnVtZW50 YXRpb24gKmluc3RyKQogewotCWRvdWJsZQkJc2F2ZV90dXBsZWNvdW50ID0gaW5zdHItPnR1cGxl Y291bnQ7CiAJaW5zdHJfdGltZQllbmR0aW1lOwogCi0JLyogY291bnQgdGhlIHJldHVybmVkIHR1 cGxlcyAqLwotCWluc3RyLT50dXBsZWNvdW50ICs9IG5UdXBsZXM7CisJQXNzZXJ0KCFJTlNUUl9U SU1FX0lTX1pFUk8oaW5zdHItPmluc3RyLnN0YXJ0dGltZSkpOworCisJSU5TVFJfVElNRV9TRVRf Q1VSUkVOVChlbmR0aW1lKTsKKwlJTlNUUl9USU1FX0FDQ1VNX0RJRkYoaW5zdHItPmNvdW50ZXIs IGVuZHRpbWUsIGluc3RyLT5pbnN0ci5zdGFydHRpbWUpOworCUlOU1RSX1RJTUVfU0VUX1pFUk8o aW5zdHItPmluc3RyLnN0YXJ0dGltZSk7CiAKIAkvKgotCSAqIFVwZGF0ZSB0aGUgdGltZSBvbmx5 IGlmIHRoZSB0aW1lciB3YXMgcmVxdWVzdGVkLgorCSAqIElzIHRoaXMgdGhlIGZpcnN0IHR1cGxl IG9mIHRoaXMgY3ljbGU/CiAJICoKLQkgKiBOb3RlIHRoaXMgaXMgZGlmZmVyZW50IGZyb20gSW5z dHJTdG9wIGJlY2F1c2UgdG90YWwgaXMgb25seSB1cGRhdGVkIGluCi0JICogSW5zdHJFbmRMb29w LiBXZSBuZWVkIHRoZSBzZXBhcmF0ZSBjb3VudGVyIHZhcmlhYmxlIGJlY2F1c2Ugd2UgbmVlZCB0 bwotCSAqIGNhbGN1bGF0ZSBzdGFydC11cCB0aW1lIGZvciB0aGUgZmlyc3QgdHVwbGUgaW4gZWFj aCBjeWNsZSwgYW5kIHRoZW4KLQkgKiBhY2N1bXVsYXRlIGl0IHRvZ2V0aGVyLgorCSAqIEluIGFz eW5jIG1vZGUsIGlmIHRoZSBwbGFuIG5vZGUgaGFkbid0IGVtaXR0ZWQgYW55IHR1cGxlcyBiZWZv cmUsIHRoaXMKKwkgKiBtaWdodCBiZSB0aGUgZmlyc3QgdHVwbGUKIAkgKi8KLQlpZiAoaW5zdHIt Pmluc3RyLm5lZWRfdGltZXIpCi0JewotCQlpZiAoSU5TVFJfVElNRV9JU19aRVJPKGluc3RyLT5p bnN0ci5zdGFydHRpbWUpKQotCQkJZWxvZyhFUlJPUiwgIkluc3RyU3RvcE5vZGUgY2FsbGVkIHdp dGhvdXQgc3RhcnQiKTsKLQotCQlJTlNUUl9USU1FX1NFVF9DVVJSRU5UKGVuZHRpbWUpOwotCQlJ TlNUUl9USU1FX0FDQ1VNX0RJRkYoaW5zdHItPmNvdW50ZXIsIGVuZHRpbWUsIGluc3RyLT5pbnN0 ci5zdGFydHRpbWUpOworCWlmICghaW5zdHItPnJ1bm5pbmcgfHwgKGluc3RyLT5hc3luY19tb2Rl ICYmIGluc3RyLT50dXBsZWNvdW50IDwgMS4wKSkKKwkJaW5zdHItPmZpcnN0dHVwbGUgPSBpbnN0 ci0+Y291bnRlcjsKK30KIAotCQlJTlNUUl9USU1FX1NFVF9aRVJPKGluc3RyLT5pbnN0ci5zdGFy dHRpbWUpOwotCX0KKy8qIEV4aXQgZnJvbSBhIHBsYW4gbm9kZS4gSWYgeW91IG1vZGlmeSB0aGlz LCBjaGVjayBJbnN0ck5vZGVTZXR1cEV4ZWNQcm9jTm9kZS4gKi8KK3ZvaWQKK0luc3RyU3RvcE5v ZGUoTm9kZUluc3RydW1lbnRhdGlvbiAqaW5zdHIsIGRvdWJsZSBuVHVwbGVzKQoreworCWlmIChp bnN0ci0+aW5zdHIubmVlZF90aW1lcikKKwkJSW5zdHJTdG9wTm9kZVRpbWVyKGluc3RyKTsKIAot CS8qCi0JICogT25seSBwb3AgdGhlIHN0YWNrLCBhY2N1bXVsYXRpb24gcnVucyBpbgotCSAqIEV4 ZWNGaW5hbGl6ZU5vZGVJbnN0cnVtZW50YXRpb24KLQkgKi8KKwkvKiBPbmx5IHBvcCB0aGUgc3Rh Y2ssIGFjY3VtdWxhdGlvbiBydW5zIGluIEluc3RyRmluYWxpemVOb2RlICovCiAJaWYgKGluc3Ry LT5pbnN0ci5uZWVkX3N0YWNrKQogCQlJbnN0clBvcFN0YWNrKCZpbnN0ci0+aW5zdHIpOwogCi0J LyogSXMgdGhpcyB0aGUgZmlyc3QgdHVwbGUgb2YgdGhpcyBjeWNsZT8gKi8KLQlpZiAoIWluc3Ry LT5ydW5uaW5nKQotCXsKLQkJaW5zdHItPnJ1bm5pbmcgPSB0cnVlOwotCQlpbnN0ci0+Zmlyc3R0 dXBsZSA9IGluc3RyLT5jb3VudGVyOwotCX0KLQllbHNlCi0JewotCQkvKgotCQkgKiBJbiBhc3lu YyBtb2RlLCBpZiB0aGUgcGxhbiBub2RlIGhhZG4ndCBlbWl0dGVkIGFueSB0dXBsZXMgYmVmb3Jl LAotCQkgKiB0aGlzIG1pZ2h0IGJlIHRoZSBmaXJzdCB0dXBsZQotCQkgKi8KLQkJaWYgKGluc3Ry LT5hc3luY19tb2RlICYmIHNhdmVfdHVwbGVjb3VudCA8IDEuMCkKLQkJCWluc3RyLT5maXJzdHR1 cGxlID0gaW5zdHItPmNvdW50ZXI7Ci0JfQorCWluc3RyLT5ydW5uaW5nID0gdHJ1ZTsKKworCS8q IGNvdW50IHRoZSByZXR1cm5lZCB0dXBsZXMgKi8KKwlpbnN0ci0+dHVwbGVjb3VudCArPSBuVHVw bGVzOwogfQogCiAvKiBVcGRhdGUgdHVwbGUgY291bnQgKi8KQEAgLTQ5NSw2ICs0ODgsOTkgQEAg SW5zdHJBZ2dOb2RlKE5vZGVJbnN0cnVtZW50YXRpb24gKmRzdCwgTm9kZUluc3RydW1lbnRhdGlv biAqYWRkKQogCQlJbnN0ckFjY3VtU3RhY2soJmRzdC0+aW5zdHIsICZhZGQtPmluc3RyKTsKIH0K IAorLyoKKyAqIFNwZWNpYWxpemVkIGhhbmRsaW5nIG9mIGluc3RydW1lbnRlZCBFeGVjUHJvY05v ZGUKKyAqCisgKiBUaGVzZSBmdW5jdGlvbnMgYXJlIGVxdWl2YWxlbnQgdG8gcnVubmluZyBFeGVj UHJvY05vZGVSZWFsIHdyYXBwZWQgaW4KKyAqIEluc3RyU3RhcnROb2RlIGFuZCBJbnN0clN0b3BO b2RlLCBidXQgYXZvaWQgdGhlIGNvbmRpdGlvbmFscyBpbiB0aGUgaG90IHBhdGgKKyAqIGJ5IGNo ZWNraW5nIHRoZSBpbnN0cnVtZW50YXRpb24gb3B0aW9ucyB3aGVuIHRoZSBFeGVjUHJvY05vZGUg cG9pbnRlciBnZXRzCisgKiBmaXJzdCBzZXQsIGFuZCB0aGVuIHVzaW5nIGEgc3BlY2lhbC1wdXJw b3NlIGZ1bmN0aW9uIGZvciBlYWNoLiBUaGlzIHJlc3VsdHMKKyAqIGluIGEgbW9yZSBvcHRpbWl6 ZWQgc2V0IG9mIGNvbXBpbGVkIGluc3RydWN0aW9ucy4KKyAqLworCisjaW5jbHVkZSAiZXhlY3V0 b3IvdHVwdGFibGUuaCIKKyNpbmNsdWRlICJub2Rlcy9leGVjbm9kZXMuaCIKKworLyogU2ltcGxp ZmllZCBwb3A6IHJlc3RvcmUgc2F2ZWQgc3RhdGUgaW5zdGVhZCBvZiByZS1kZXJpdmluZyBmcm9t IGFycmF5ICovCitzdGF0aWMgaW5saW5lIHZvaWQKK0luc3RyUG9wU3RhY2tUbyhJbnN0cnVtZW50 YXRpb24gKnByZXYpCit7CisJQXNzZXJ0KGluc3RyX3N0YWNrLnN0YWNrX3NpemUgPiAwKTsKKwlB c3NlcnQoaW5zdHJfc3RhY2suc3RhY2tfc2l6ZSA+IDEgPyBpbnN0cl9zdGFjay5lbnRyaWVzW2lu c3RyX3N0YWNrLnN0YWNrX3NpemUgLSAyXSA9PSBwcmV2IDogJmluc3RyX3RvcCA9PSBwcmV2KTsK KwlpbnN0cl9zdGFjay5zdGFja19zaXplLS07CisJaW5zdHJfc3RhY2suY3VycmVudCA9IHByZXY7 Cit9CisKK3N0YXRpYyBpbmxpbmUgVHVwbGVUYWJsZVNsb3QgKgorRXhlY1Byb2NOb2RlSW5zdHIo UGxhblN0YXRlICpub2RlLCBib29sIG5lZWRfdGltZXIsIGJvb2wgbmVlZF9zdGFjaykKK3sKKwlO b2RlSW5zdHJ1bWVudGF0aW9uICppbnN0ciA9IG5vZGUtPmluc3RydW1lbnQ7CisJSW5zdHJ1bWVu dGF0aW9uICpwcmV2ID0gaW5zdHJfc3RhY2suY3VycmVudDsKKwlUdXBsZVRhYmxlU2xvdCAqcmVz dWx0OworCisJaWYgKG5lZWRfc3RhY2spCisJCUluc3RyUHVzaFN0YWNrKCZpbnN0ci0+aW5zdHIp OworCWlmIChuZWVkX3RpbWVyKQorCQlJbnN0clN0YXJ0VGltZXIoJmluc3RyLT5pbnN0cik7CisK KwlyZXN1bHQgPSBub2RlLT5FeGVjUHJvY05vZGVSZWFsKG5vZGUpOworCisJaWYgKG5lZWRfdGlt ZXIpCisJCUluc3RyU3RvcE5vZGVUaW1lcihpbnN0cik7CisJaWYgKG5lZWRfc3RhY2spCisJCUlu c3RyUG9wU3RhY2tUbyhwcmV2KTsKKworCWluc3RyLT5ydW5uaW5nID0gdHJ1ZTsKKwlpZiAoIVR1 cElzTnVsbChyZXN1bHQpKQorCQlpbnN0ci0+dHVwbGVjb3VudCArPSAxLjA7CisKKwlyZXR1cm4g cmVzdWx0OworfQorCitzdGF0aWMgVHVwbGVUYWJsZVNsb3QgKgorRXhlY1Byb2NOb2RlSW5zdHJG dWxsKFBsYW5TdGF0ZSAqbm9kZSkKK3sKKwlyZXR1cm4gRXhlY1Byb2NOb2RlSW5zdHIobm9kZSwg dHJ1ZSwgdHJ1ZSk7Cit9CisKK3N0YXRpYyBUdXBsZVRhYmxlU2xvdCAqCitFeGVjUHJvY05vZGVJ bnN0clJvd3NTdGFja09ubHkoUGxhblN0YXRlICpub2RlKQoreworCXJldHVybiBFeGVjUHJvY05v ZGVJbnN0cihub2RlLCBmYWxzZSwgdHJ1ZSk7Cit9CisKK3N0YXRpYyBUdXBsZVRhYmxlU2xvdCAq CitFeGVjUHJvY05vZGVJbnN0clJvd3NUaW1lck9ubHkoUGxhblN0YXRlICpub2RlKQoreworCXJl dHVybiBFeGVjUHJvY05vZGVJbnN0cihub2RlLCB0cnVlLCBmYWxzZSk7Cit9CisKK3N0YXRpYyBU dXBsZVRhYmxlU2xvdCAqCitFeGVjUHJvY05vZGVJbnN0clJvd3NPbmx5KFBsYW5TdGF0ZSAqbm9k ZSkKK3sKKwlyZXR1cm4gRXhlY1Byb2NOb2RlSW5zdHIobm9kZSwgZmFsc2UsIGZhbHNlKTsKK30K KworLyoKKyAqIFJldHVybnMgYW4gRXhlY1Byb2NOb2RlIHdyYXBwZXIgdGhhdCBwZXJmb3JtcyBp bnN0cnVtZW50YXRpb24gY2FsbHMsCisgKiB0YWlsb3JlZCB0byB0aGUgaW5zdHJ1bWVudGF0aW9u IG9wdGlvbnMgZW5hYmxlZCBmb3IgdGhlIG5vZGUuCisgKi8KK0V4ZWNQcm9jTm9kZU10ZAorSW5z dHJOb2RlU2V0dXBFeGVjUHJvY05vZGUoTm9kZUluc3RydW1lbnRhdGlvbiAqaW5zdHIpCit7CisJ Ym9vbAkJbmVlZF90aW1lciA9IGluc3RyLT5pbnN0ci5uZWVkX3RpbWVyOworCWJvb2wJCW5lZWRf c3RhY2sgPSBpbnN0ci0+aW5zdHIubmVlZF9zdGFjazsKKworCWlmIChuZWVkX3RpbWVyICYmIG5l ZWRfc3RhY2spCisJCXJldHVybiBFeGVjUHJvY05vZGVJbnN0ckZ1bGw7CisJZWxzZSBpZiAobmVl ZF9zdGFjaykKKwkJcmV0dXJuIEV4ZWNQcm9jTm9kZUluc3RyUm93c1N0YWNrT25seTsKKwllbHNl IGlmIChuZWVkX3RpbWVyKQorCQlyZXR1cm4gRXhlY1Byb2NOb2RlSW5zdHJSb3dzVGltZXJPbmx5 OworCWVsc2UKKwkJcmV0dXJuIEV4ZWNQcm9jTm9kZUluc3RyUm93c09ubHk7Cit9CisKIC8qIFRy aWdnZXIgaW5zdHJ1bWVudGF0aW9uIGhhbmRsaW5nICovCiBUcmlnZ2VySW5zdHJ1bWVudGF0aW9u ICoKIEluc3RyQWxsb2NUcmlnZ2VyKFF1ZXJ5SW5zdHJ1bWVudGF0aW9uICpxaW5zdHIsIGludCBu KQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvaW5zdHJ1bWVudC5oIGIvc3JjL2lu Y2x1ZGUvZXhlY3V0b3IvaW5zdHJ1bWVudC5oCmluZGV4IGIzMGExNWJjMDI3Li5jYWQwNTJhM2E5 MCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvaW5zdHJ1bWVudC5oCisrKyBiL3Ny Yy9pbmNsdWRlL2V4ZWN1dG9yL2luc3RydW1lbnQuaApAQCAtMjk0LDYgKzI5NCwxMSBAQCBleHRl cm4gdm9pZCBJbnN0clVwZGF0ZVR1cGxlQ291bnQoTm9kZUluc3RydW1lbnRhdGlvbiAqaW5zdHIs IGRvdWJsZSBuVHVwbGVzKTsKIGV4dGVybiB2b2lkIEluc3RyRW5kTG9vcChOb2RlSW5zdHJ1bWVu dGF0aW9uICppbnN0cik7CiBleHRlcm4gdm9pZCBJbnN0ckFnZ05vZGUoTm9kZUluc3RydW1lbnRh dGlvbiAqZHN0LCBOb2RlSW5zdHJ1bWVudGF0aW9uICphZGQpOwogCit0eXBlZGVmIHN0cnVjdCBU dXBsZVRhYmxlU2xvdCBUdXBsZVRhYmxlU2xvdDsKK3R5cGVkZWYgc3RydWN0IFBsYW5TdGF0ZSBQ bGFuU3RhdGU7Cit0eXBlZGVmIFR1cGxlVGFibGVTbG90ICooKkV4ZWNQcm9jTm9kZU10ZCkgKFBs YW5TdGF0ZSAqcHN0YXRlKTsKK2V4dGVybiBFeGVjUHJvY05vZGVNdGQgSW5zdHJOb2RlU2V0dXBF eGVjUHJvY05vZGUoTm9kZUluc3RydW1lbnRhdGlvbiAqaW5zdHIpOworCiBleHRlcm4gVHJpZ2dl ckluc3RydW1lbnRhdGlvbiAqSW5zdHJBbGxvY1RyaWdnZXIoUXVlcnlJbnN0cnVtZW50YXRpb24g KnFpbnN0ciwgaW50IG4pOwogZXh0ZXJuIHZvaWQgSW5zdHJTdGFydFRyaWdnZXIoUXVlcnlJbnN0 cnVtZW50YXRpb24gKnFpbnN0ciwKIAkJCQkJCQkgIFRyaWdnZXJJbnN0cnVtZW50YXRpb24gKnRn aW5zdHIpOwotLSAKMi40Ny4xCgo= --0000000000005bb84b064dfc5b57 Content-Type: application/octet-stream; name="v11-0008-Index-scans-Show-table-buffer-accesses-separatel.patch" Content-Disposition: attachment; filename="v11-0008-Index-scans-Show-table-buffer-accesses-separatel.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mn8k89ys7 RnJvbSBhNmVkZDUxYzM2OWZjODcxZDdjNDA1MDljYjgyY2FhYWQwZWNhMmMzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpEYXRlOiBT YXQsIDcgTWFyIDIwMjYgMTE6NDY6MTkgLTA4MDAKU3ViamVjdDogW1BBVENIIHYxMSA4LzldIElu ZGV4IHNjYW5zOiBTaG93IHRhYmxlIGJ1ZmZlciBhY2Nlc3NlcyBzZXBhcmF0ZWx5IGluCiBFWFBM QUlOIEFOQUxZWkUKClRoaXMgc2V0cyB1cCBhIHNlcGFyYXRlIGluc3RydW1lbnRhdGlvbiBzdGFj ayB0aGF0IGlzIHVzZWQgd2hpbHN0IGFuCkluZGV4IFNjYW4gb3IgSW5kZXggT25seSBTY2FuIGRv ZXMgc2Nhbm5pbmcgb24gdGhlIHRhYmxlLCBmb3IgZXhhbXBsZSBkdWUKdG8gYWRkaXRpb25hbCBk YXRhIGJlaW5nIG5lZWRlZC4KCkVYUExBSU4gQU5BTFlaRSB3aWxsIG5vdyBzaG93ICJUYWJsZSBC dWZmZXJzIiB0aGF0IHJlcHJlc2VudCBzdWNoIGFjdGl2aXR5LgpUaGUgYWN0aXZpdHkgaXMgYWxz byBpbmNsdWRlZCBpbiByZWd1bGFyICJCdWZmZXJzIiB0b2dldGhlciB3aXRoIGluZGV4CmFjdGl2 aXR5IGFuZCB0aGF0IG9mIGFueSBjaGlsZCBub2Rlcy4KCkF1dGhvcjogTHVrYXMgRml0dGwgPGx1 a2FzQGZpdHRsLmNvbT4KU3VnZ2VzdGVkLWJ5OiBBbmRyZXMgRnJldW5kIDxhbmRyZXNAYW5hcmF6 ZWwuZGU+ClJldmlld2VkLWJ5OiBac29sdCBQYXJyYWdpIDx6c29sdC5wYXJyYWdpQHBlcmNvbmEu Y29tPgpSZXZpZXdlZC1ieTogVG9tYXMgVm9uZHJhIDx0b21hc0B2b25kcmEubWU+CkRpc2N1c3Np b246IGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL21lc3NhZ2UtaWQvZmxhdC9DQVA1M1BreHJt cEVDelZGcGVlRUVIREdlNnU2MjVzJTJCWWttVnY1LWd3M0xfTkRTZmJpQSU0MG1haWwuZ21haWwu Y29tI2NiNTgzYTA4ZThlMDk2YWExZjA5M2JiMTc4OTA2MTczCi0tLQogZG9jL3NyYy9zZ21sL3Bl cmZvcm0uc2dtbCAgICAgICAgICAgICAgICAgIHwgIDEzICsrLQogZG9jL3NyYy9zZ21sL3JlZi9l eHBsYWluLnNnbWwgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2V4 cGxhaW4uYyAgICAgICAgICAgICB8ICA0NyArKysrKysrLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9y L2V4ZWNQcm9jbm9kZS5jICAgICAgICB8ICA1MyArKysrKysrKysrCiBzcmMvYmFja2VuZC9leGVj dXRvci9ub2RlQml0bWFwSW5kZXhzY2FuLmMgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVJbmRleG9ubHlzY2FuLmMgICB8ICAyNyArKysrLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZUluZGV4c2Nhbi5jICAgICAgIHwgMTEzICsrKysrKysrKysrKysrKystLS0tLQogc3JjL2lu Y2x1ZGUvZXhlY3V0b3IvaW5zdHJ1bWVudF9ub2RlLmggICAgIHwgICA1ICsKIDggZmlsZXMgY2hh bmdlZCwgMjIzIGluc2VydGlvbnMoKyksIDM4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2Rv Yy9zcmMvc2dtbC9wZXJmb3JtLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcGVyZm9ybS5zZ21sCmluZGV4 IDYwNGU4NTc4YThkLi5kMjhmNGYyMjUzNSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3BlcmZv cm0uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcGVyZm9ybS5zZ21sCkBAIC03MzQsNiArNzM0LDcg QEAgV0hFUkUgdDEudW5pcXVlMSAmbHQ7IDEwIEFORCB0MS51bmlxdWUyID0gdDIudW5pcXVlMjsK ICAgIC0mZ3Q7ICBJbmRleCBTY2FuIHVzaW5nIHRlbmsyX3VuaXF1ZTIgb24gdGVuazIgdDIgIChj b3N0PTAuMjkuLjcuOTAgcm93cz0xIHdpZHRoPTI0NCkgKGFjdHVhbCB0aW1lPTAuMDAzLi4wLjAw MyByb3dzPTEuMDAgbG9vcHM9MTApCiAgICAgICAgICBJbmRleCBDb25kOiAodW5pcXVlMiA9IHQx LnVuaXF1ZTIpCiAgICAgICAgICBJbmRleCBTZWFyY2hlczogMTAKKyAgICAgICAgIFRhYmxlIEJ1 ZmZlcnM6IHNoYXJlZCBoaXQ9MTAKICAgICAgICAgIEJ1ZmZlcnM6IHNoYXJlZCBoaXQ9MjQgcmVh ZD02CiAgUGxhbm5pbmc6CiAgICBCdWZmZXJzOiBzaGFyZWQgaGl0PTE1IGRpcnRpZWQ9OQpAQCAt MTAwNSw3ICsxMDA2LDggQEAgRVhQTEFJTiBBTkFMWVpFIFNFTEVDVCAqIEZST00gcG9seWdvbl90 YmwgV0hFUkUgZjEgQCZndDsgcG9seWdvbiAnKDAuNSwyLjApJzsKICAgIEluZGV4IENvbmQ6IChm MSBAJmd0OyAnKCgwLjUsMikpJzo6cG9seWdvbikKICAgIFJvd3MgUmVtb3ZlZCBieSBJbmRleCBS ZWNoZWNrOiAxCiAgICBJbmRleCBTZWFyY2hlczogMQotICAgQnVmZmVyczogc2hhcmVkIGhpdD0x CisgICBUYWJsZSBCdWZmZXJzOiBzaGFyZWQgaGl0PTEKKyAgIEJ1ZmZlcnM6IHNoYXJlZCBoaXQ9 MgogIFBsYW5uaW5nIFRpbWU6IDAuMDM5IG1zCiAgRXhlY3V0aW9uIFRpbWU6IDAuMDk4IG1zCiA8 L3NjcmVlbj4KQEAgLTEwMTQsNyArMTAxNiw5IEBAIEVYUExBSU4gQU5BTFlaRSBTRUxFQ1QgKiBG Uk9NIHBvbHlnb25fdGJsIFdIRVJFIGYxIEAmZ3Q7IHBvbHlnb24gJygwLjUsMi4wKSc7CiAgICAg dGhlbiByZWplY3RlZCBieSBhIHJlY2hlY2sgb2YgdGhlIGluZGV4IGNvbmRpdGlvbi4gIFRoaXMg aGFwcGVucyBiZWNhdXNlIGEKICAgICBHaVNUIGluZGV4IGlzIDxxdW90ZT5sb3NzeTwvcXVvdGU+ IGZvciBwb2x5Z29uIGNvbnRhaW5tZW50IHRlc3RzOiBpdCBhY3R1YWxseQogICAgIHJldHVybnMg dGhlIHJvd3Mgd2l0aCBwb2x5Z29ucyB0aGF0IG92ZXJsYXAgdGhlIHRhcmdldCwgYW5kIHRoZW4g d2UgaGF2ZQotICAgIHRvIGRvIHRoZSBleGFjdCBjb250YWlubWVudCB0ZXN0IG9uIHRob3NlIHJv d3MuCisgICAgdG8gZG8gdGhlIGV4YWN0IGNvbnRhaW5tZW50IHRlc3Qgb24gdGhvc2Ugcm93cy4g VGhlIDxsaXRlcmFsPlRhYmxlIEJ1ZmZlcnM8L2xpdGVyYWw+CisgICAgY291bnRzIGluZGljYXRl IGhvdyBtYW55IG9wZXJhdGlvbnMgd2VyZSBwZXJmb3JtZWQgb24gdGhlIHRhYmxlIGluc3RlYWQg b2YKKyAgICB0aGUgaW5kZXguIFRoaXMgbnVtYmVyIGlzIGluY2x1ZGVkIGluIHRoZSA8bGl0ZXJh bD5CdWZmZXJzPC9saXRlcmFsPiBjb3VudHMuCiAgICA8L3BhcmE+CiAKICAgIDxwYXJhPgpAQCAt MTIwMywxMyArMTIwNywxNCBAQCBFWFBMQUlOIEFOQUxZWkUgU0VMRUNUICogRlJPTSB0ZW5rMSBX SEVSRSB1bmlxdWUxICZsdDsgMTAwIEFORCB1bmlxdWUyICZndDsgOTAwMAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4K IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0mendzcDstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KICBMaW1pdCAgKGNvc3Q9MC4yOS4uMTQuMzMgcm93cz0yIHdp ZHRoPTI0NCkgKGFjdHVhbCB0aW1lPTAuMDUxLi4wLjA3MSByb3dzPTIuMDAgbG9vcHM9MSkKLSAg IEJ1ZmZlcnM6IHNoYXJlZCBoaXQ9MTYKKyAgIEJ1ZmZlcnM6IHNoYXJlZCBoaXQ9MTQKICAgIC0m Z3Q7ICBJbmRleCBTY2FuIHVzaW5nIHRlbmsxX3VuaXF1ZTIgb24gdGVuazEgIChjb3N0PTAuMjku LjcwLjUwIHJvd3M9MTAgd2lkdGg9MjQ0KSAoYWN0dWFsIHRpbWU9MC4wNTEuLjAuMDcwIHJvd3M9 Mi4wMCBsb29wcz0xKQogICAgICAgICAgSW5kZXggQ29uZDogKHVuaXF1ZTIgJmd0OyA5MDAwKQog ICAgICAgICAgRmlsdGVyOiAodW5pcXVlMSAmbHQ7IDEwMCkKICAgICAgICAgIFJvd3MgUmVtb3Zl ZCBieSBGaWx0ZXI6IDI4NwogICAgICAgICAgSW5kZXggU2VhcmNoZXM6IDEKLSAgICAgICAgIEJ1 ZmZlcnM6IHNoYXJlZCBoaXQ9MTYKKyAgICAgICAgIFRhYmxlIEJ1ZmZlcnM6IHNoYXJlZCBoaXQ9 MTEKKyAgICAgICAgIEJ1ZmZlcnM6IHNoYXJlZCBoaXQ9MTQKICBQbGFubmluZyBUaW1lOiAwLjA3 NyBtcwogIEV4ZWN1dGlvbiBUaW1lOiAwLjA4NiBtcwogPC9zY3JlZW4+CmRpZmYgLS1naXQgYS9k b2Mvc3JjL3NnbWwvcmVmL2V4cGxhaW4uc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvZXhwbGFpbi5z Z21sCmluZGV4IDViOGI1MjE4MDJlLi43MTA3MDczNmFjYiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9z Z21sL3JlZi9leHBsYWluLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9leHBsYWluLnNnbWwK QEAgLTUwOSw2ICs1MDksNyBAQCBFWFBMQUlOIEFOQUxZWkUgRVhFQ1VURSBxdWVyeSgxMDAsIDIw MCk7CiAgICAtJmd0OyAgSW5kZXggU2NhbiB1c2luZyB0ZXN0X3BrZXkgb24gdGVzdCAgKGNvc3Q9 MC4yOS4uMTAuMjcgcm93cz05OSB3aWR0aD04KSAoYWN0dWFsIHRpbWU9MC4wMDkuLjAuMDI1IHJv d3M9OTkuMDAgbG9vcHM9MSkKICAgICAgICAgIEluZGV4IENvbmQ6ICgoaWQgJmd0OyAxMDApIEFO RCAoaWQgJmx0OyAyMDApKQogICAgICAgICAgSW5kZXggU2VhcmNoZXM6IDEKKyAgICAgICAgIFRh YmxlIEJ1ZmZlcnM6IHNoYXJlZCBoaXQ9MQogICAgICAgICAgQnVmZmVyczogc2hhcmVkIGhpdD00 CiAgUGxhbm5pbmcgVGltZTogMC4yNDQgbXMKICBFeGVjdXRpb24gVGltZTogMC4wNzMgbXMKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2V4cGxhaW4uYwppbmRleCBkYzVlNjM5NTViYy4uZWVmMzQzYTlkOTcgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYworKysgYi9zcmMvYmFja2VuZC9jb21t YW5kcy9leHBsYWluLmMKQEAgLTE0NCw3ICsxNDQsNyBAQCBzdGF0aWMgdm9pZCBzaG93X2luc3Ry dW1lbnRhdGlvbl9jb3VudChjb25zdCBjaGFyICpxbGFiZWwsIGludCB3aGljaCwKIHN0YXRpYyB2 b2lkIHNob3dfZm9yZWlnbnNjYW5faW5mbyhGb3JlaWduU2NhblN0YXRlICpmc3N0YXRlLCBFeHBs YWluU3RhdGUgKmVzKTsKIHN0YXRpYyBjb25zdCBjaGFyICpleHBsYWluX2dldF9pbmRleF9uYW1l KE9pZCBpbmRleElkKTsKIHN0YXRpYyBib29sIHBlZWtfYnVmZmVyX3VzYWdlKEV4cGxhaW5TdGF0 ZSAqZXMsIGNvbnN0IEJ1ZmZlclVzYWdlICp1c2FnZSk7Ci1zdGF0aWMgdm9pZCBzaG93X2J1ZmZl cl91c2FnZShFeHBsYWluU3RhdGUgKmVzLCBjb25zdCBCdWZmZXJVc2FnZSAqdXNhZ2UpOworc3Rh dGljIHZvaWQgc2hvd19idWZmZXJfdXNhZ2UoRXhwbGFpblN0YXRlICplcywgY29uc3QgQnVmZmVy VXNhZ2UgKnVzYWdlLCBjb25zdCBjaGFyICp0aXRsZSk7CiBzdGF0aWMgdm9pZCBzaG93X3dhbF91 c2FnZShFeHBsYWluU3RhdGUgKmVzLCBjb25zdCBXYWxVc2FnZSAqdXNhZ2UpOwogc3RhdGljIHZv aWQgc2hvd19tZW1vcnlfY291bnRlcnMoRXhwbGFpblN0YXRlICplcywKIAkJCQkJCQkJIGNvbnN0 IE1lbW9yeUNvbnRleHRDb3VudGVycyAqbWVtX2NvdW50ZXJzKTsKQEAgLTYxMCw3ICs2MTAsNyBA QCBFeHBsYWluT25lUGxhbihQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsIEludG9DbGF1c2UgKmlu dG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAJCX0KIAogCQlpZiAoYnVmdXNhZ2UpCi0JCQlzaG93X2J1 ZmZlcl91c2FnZShlcywgYnVmdXNhZ2UpOworCQkJc2hvd19idWZmZXJfdXNhZ2UoZXMsIGJ1ZnVz YWdlLCBOVUxMKTsKIAogCQlpZiAobWVtX2NvdW50ZXJzKQogCQkJc2hvd19tZW1vcnlfY291bnRl cnMoZXMsIG1lbV9jb3VudGVycyk7CkBAIC0xMDI3LDcgKzEwMjcsNyBAQCBFeHBsYWluUHJpbnRT ZXJpYWxpemUoRXhwbGFpblN0YXRlICplcywgU2VyaWFsaXplTWV0cmljcyAqbWV0cmljcykKIAkJ aWYgKGVzLT5idWZmZXJzICYmIHBlZWtfYnVmZmVyX3VzYWdlKGVzLCAmbWV0cmljcy0+aW5zdHIu YnVmdXNhZ2UpKQogCQl7CiAJCQllcy0+aW5kZW50Kys7Ci0JCQlzaG93X2J1ZmZlcl91c2FnZShl cywgJm1ldHJpY3MtPmluc3RyLmJ1ZnVzYWdlKTsKKwkJCXNob3dfYnVmZmVyX3VzYWdlKGVzLCAm bWV0cmljcy0+aW5zdHIuYnVmdXNhZ2UsIE5VTEwpOwogCQkJZXMtPmluZGVudC0tOwogCQl9CiAJ fQpAQCAtMTA0MSw3ICsxMDQxLDcgQEAgRXhwbGFpblByaW50U2VyaWFsaXplKEV4cGxhaW5TdGF0 ZSAqZXMsIFNlcmlhbGl6ZU1ldHJpY3MgKm1ldHJpY3MpCiAJCQkJCQkJCUJZVEVTX1RPX0tJTE9C WVRFUyhtZXRyaWNzLT5ieXRlc1NlbnQpLCBlcyk7CiAJCUV4cGxhaW5Qcm9wZXJ0eVRleHQoIkZv cm1hdCIsIGZvcm1hdCwgZXMpOwogCQlpZiAoZXMtPmJ1ZmZlcnMpCi0JCQlzaG93X2J1ZmZlcl91 c2FnZShlcywgJm1ldHJpY3MtPmluc3RyLmJ1ZnVzYWdlKTsKKwkJCXNob3dfYnVmZmVyX3VzYWdl KGVzLCAmbWV0cmljcy0+aW5zdHIuYnVmdXNhZ2UsIE5VTEwpOwogCX0KIAogCUV4cGxhaW5DbG9z ZUdyb3VwKCJTZXJpYWxpemF0aW9uIiwgIlNlcmlhbGl6YXRpb24iLCB0cnVlLCBlcyk7CkBAIC0x OTY5LDYgKzE5NjksOSBAQCBFeHBsYWluTm9kZShQbGFuU3RhdGUgKnBsYW5zdGF0ZSwgTGlzdCAq YW5jZXN0b3JzLAogCQkJCXNob3dfaW5zdHJ1bWVudGF0aW9uX2NvdW50KCJSb3dzIFJlbW92ZWQg YnkgRmlsdGVyIiwgMSwKIAkJCQkJCQkJCQkgICBwbGFuc3RhdGUsIGVzKTsKIAkJCXNob3dfaW5k ZXhzZWFyY2hlc19pbmZvKHBsYW5zdGF0ZSwgZXMpOworCisJCQlpZiAoZXMtPmJ1ZmZlcnMgJiYg cGxhbnN0YXRlLT5pbnN0cnVtZW50KQorCQkJCXNob3dfYnVmZmVyX3VzYWdlKGVzLCAmKChJbmRl eFNjYW5TdGF0ZSAqKSBwbGFuc3RhdGUpLT5pc3NfSW5zdHJ1bWVudC0+dGFibGVfaW5zdHIuYnVm dXNhZ2UsICJUYWJsZSIpOwogCQkJYnJlYWs7CiAJCWNhc2UgVF9JbmRleE9ubHlTY2FuOgogCQkJ c2hvd19zY2FuX3F1YWwoKChJbmRleE9ubHlTY2FuICopIHBsYW4pLT5pbmRleHF1YWwsCkBAIC0x OTg2LDYgKzE5ODksOSBAQCBFeHBsYWluTm9kZShQbGFuU3RhdGUgKnBsYW5zdGF0ZSwgTGlzdCAq YW5jZXN0b3JzLAogCQkJCUV4cGxhaW5Qcm9wZXJ0eUZsb2F0KCJIZWFwIEZldGNoZXMiLCBOVUxM LAogCQkJCQkJCQkJIHBsYW5zdGF0ZS0+aW5zdHJ1bWVudC0+bnR1cGxlczIsIDAsIGVzKTsKIAkJ CXNob3dfaW5kZXhzZWFyY2hlc19pbmZvKHBsYW5zdGF0ZSwgZXMpOworCisJCQlpZiAoZXMtPmJ1 ZmZlcnMgJiYgcGxhbnN0YXRlLT5pbnN0cnVtZW50KQorCQkJCXNob3dfYnVmZmVyX3VzYWdlKGVz LCAmKChJbmRleE9ubHlTY2FuU3RhdGUgKikgcGxhbnN0YXRlKS0+aW9zc19JbnN0cnVtZW50LT50 YWJsZV9pbnN0ci5idWZ1c2FnZSwgIlRhYmxlIik7CiAJCQlicmVhazsKIAkJY2FzZSBUX0JpdG1h cEluZGV4U2NhbjoKIAkJCXNob3dfc2Nhbl9xdWFsKCgoQml0bWFwSW5kZXhTY2FuICopIHBsYW4p LT5pbmRleHF1YWxvcmlnLApAQCAtMjI4Nyw3ICsyMjkzLDcgQEAgRXhwbGFpbk5vZGUoUGxhblN0 YXRlICpwbGFuc3RhdGUsIExpc3QgKmFuY2VzdG9ycywKIAogCS8qIFNob3cgYnVmZmVyL1dBTCB1 c2FnZSAqLwogCWlmIChlcy0+YnVmZmVycyAmJiBwbGFuc3RhdGUtPmluc3RydW1lbnQpCi0JCXNo b3dfYnVmZmVyX3VzYWdlKGVzLCAmcGxhbnN0YXRlLT5pbnN0cnVtZW50LT5pbnN0ci5idWZ1c2Fn ZSk7CisJCXNob3dfYnVmZmVyX3VzYWdlKGVzLCAmcGxhbnN0YXRlLT5pbnN0cnVtZW50LT5pbnN0 ci5idWZ1c2FnZSwgTlVMTCk7CiAJaWYgKGVzLT53YWwgJiYgcGxhbnN0YXRlLT5pbnN0cnVtZW50 KQogCQlzaG93X3dhbF91c2FnZShlcywgJnBsYW5zdGF0ZS0+aW5zdHJ1bWVudC0+aW5zdHIud2Fs dXNhZ2UpOwogCkBAIC0yMzA2LDcgKzIzMTIsNyBAQCBFeHBsYWluTm9kZShQbGFuU3RhdGUgKnBs YW5zdGF0ZSwgTGlzdCAqYW5jZXN0b3JzLAogCiAJCQlFeHBsYWluT3BlbldvcmtlcihuLCBlcyk7 CiAJCQlpZiAoZXMtPmJ1ZmZlcnMpCi0JCQkJc2hvd19idWZmZXJfdXNhZ2UoZXMsICZpbnN0cnVt ZW50LT5pbnN0ci5idWZ1c2FnZSk7CisJCQkJc2hvd19idWZmZXJfdXNhZ2UoZXMsICZpbnN0cnVt ZW50LT5pbnN0ci5idWZ1c2FnZSwgTlVMTCk7CiAJCQlpZiAoZXMtPndhbCkKIAkJCQlzaG93X3dh bF91c2FnZShlcywgJmluc3RydW1lbnQtPmluc3RyLndhbHVzYWdlKTsKIAkJCUV4cGxhaW5DbG9z ZVdvcmtlcihuLCBlcyk7CkBAIC00MTA2LDcgKzQxMTIsNyBAQCBwZWVrX2J1ZmZlcl91c2FnZShF eHBsYWluU3RhdGUgKmVzLCBjb25zdCBCdWZmZXJVc2FnZSAqdXNhZ2UpCiAgKiBTaG93IGJ1ZmZl ciB1c2FnZSBkZXRhaWxzLiAgVGhpcyBiZXR0ZXIgYmUgc3luYyB3aXRoIHBlZWtfYnVmZmVyX3Vz YWdlLgogICovCiBzdGF0aWMgdm9pZAotc2hvd19idWZmZXJfdXNhZ2UoRXhwbGFpblN0YXRlICpl cywgY29uc3QgQnVmZmVyVXNhZ2UgKnVzYWdlKQorc2hvd19idWZmZXJfdXNhZ2UoRXhwbGFpblN0 YXRlICplcywgY29uc3QgQnVmZmVyVXNhZ2UgKnVzYWdlLCBjb25zdCBjaGFyICp0aXRsZSkKIHsK IAlpZiAoZXMtPmZvcm1hdCA9PSBFWFBMQUlOX0ZPUk1BVF9URVhUKQogCXsKQEAgLTQxMzEsNiAr NDEzNyw4IEBAIHNob3dfYnVmZmVyX3VzYWdlKEV4cGxhaW5TdGF0ZSAqZXMsIGNvbnN0IEJ1ZmZl clVzYWdlICp1c2FnZSkKIAkJaWYgKGhhc19zaGFyZWQgfHwgaGFzX2xvY2FsIHx8IGhhc190ZW1w KQogCQl7CiAJCQlFeHBsYWluSW5kZW50VGV4dChlcyk7CisJCQlpZiAodGl0bGUpCisJCQkJYXBw ZW5kU3RyaW5nSW5mbyhlcy0+c3RyLCAiJXMgIiwgdGl0bGUpOwogCQkJYXBwZW5kU3RyaW5nSW5m b1N0cmluZyhlcy0+c3RyLCAiQnVmZmVyczoiKTsKIAogCQkJaWYgKGhhc19zaGFyZWQpCkBAIC00 MTg2LDYgKzQxOTQsOCBAQCBzaG93X2J1ZmZlcl91c2FnZShFeHBsYWluU3RhdGUgKmVzLCBjb25z dCBCdWZmZXJVc2FnZSAqdXNhZ2UpCiAJCWlmIChoYXNfc2hhcmVkX3RpbWluZyB8fCBoYXNfbG9j YWxfdGltaW5nIHx8IGhhc190ZW1wX3RpbWluZykKIAkJewogCQkJRXhwbGFpbkluZGVudFRleHQo ZXMpOworCQkJaWYgKHRpdGxlKQorCQkJCWFwcGVuZFN0cmluZ0luZm8oZXMtPnN0ciwgIiVzICIs IHRpdGxlKTsKIAkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoZXMtPnN0ciwgIkkvTyBUaW1pbmdz OiIpOwogCiAJCQlpZiAoaGFzX3NoYXJlZF90aW1pbmcpCkBAIC00MjI3LDYgKzQyMzcsMTQgQEAg c2hvd19idWZmZXJfdXNhZ2UoRXhwbGFpblN0YXRlICplcywgY29uc3QgQnVmZmVyVXNhZ2UgKnVz YWdlKQogCX0KIAllbHNlCiAJeworCQljaGFyCSAgICpidWZmZXJzX3RpdGxlID0gTlVMTDsKKwor CQlpZiAodGl0bGUpCisJCXsKKwkJCWJ1ZmZlcnNfdGl0bGUgPSBwc3ByaW50ZigiJXMgQnVmZmVy cyIsIHRpdGxlKTsKKwkJCUV4cGxhaW5PcGVuR3JvdXAoYnVmZmVyc190aXRsZSwgYnVmZmVyc190 aXRsZSwgdHJ1ZSwgZXMpOworCQl9CisKIAkJRXhwbGFpblByb3BlcnR5SW50ZWdlcigiU2hhcmVk IEhpdCBCbG9ja3MiLCBOVUxMLAogCQkJCQkJCSAgIHVzYWdlLT5zaGFyZWRfYmxrc19oaXQsIGVz KTsKIAkJRXhwbGFpblByb3BlcnR5SW50ZWdlcigiU2hhcmVkIFJlYWQgQmxvY2tzIiwgTlVMTCwK QEAgLTQyNDcsOCArNDI2NSwyMCBAQCBzaG93X2J1ZmZlcl91c2FnZShFeHBsYWluU3RhdGUgKmVz LCBjb25zdCBCdWZmZXJVc2FnZSAqdXNhZ2UpCiAJCQkJCQkJICAgdXNhZ2UtPnRlbXBfYmxrc19y ZWFkLCBlcyk7CiAJCUV4cGxhaW5Qcm9wZXJ0eUludGVnZXIoIlRlbXAgV3JpdHRlbiBCbG9ja3Mi LCBOVUxMLAogCQkJCQkJCSAgIHVzYWdlLT50ZW1wX2Jsa3Nfd3JpdHRlbiwgZXMpOworCisJCWlm IChidWZmZXJzX3RpdGxlKQorCQkJRXhwbGFpbkNsb3NlR3JvdXAoYnVmZmVyc190aXRsZSwgYnVm ZmVyc190aXRsZSwgdHJ1ZSwgZXMpOworCiAJCWlmICh0cmFja19pb190aW1pbmcpCiAJCXsKKwkJ CWNoYXIJICAgKnRpbWluZ3NfdGl0bGUgPSBOVUxMOworCisJCQlpZiAodGl0bGUpCisJCQl7CisJ CQkJdGltaW5nc190aXRsZSA9IHBzcHJpbnRmKCIlcyBJL08gVGltaW5ncyIsIHRpdGxlKTsKKwkJ CQlFeHBsYWluT3Blbkdyb3VwKHRpbWluZ3NfdGl0bGUsIHRpbWluZ3NfdGl0bGUsIHRydWUsIGVz KTsKKwkJCX0KKwogCQkJRXhwbGFpblByb3BlcnR5RmxvYXQoIlNoYXJlZCBJL08gUmVhZCBUaW1l IiwgIm1zIiwKIAkJCQkJCQkJIElOU1RSX1RJTUVfR0VUX01JTExJU0VDKHVzYWdlLT5zaGFyZWRf YmxrX3JlYWRfdGltZSksCiAJCQkJCQkJCSAzLCBlcyk7CkBAIC00MjY3LDYgKzQyOTcsOSBAQCBz aG93X2J1ZmZlcl91c2FnZShFeHBsYWluU3RhdGUgKmVzLCBjb25zdCBCdWZmZXJVc2FnZSAqdXNh Z2UpCiAJCQlFeHBsYWluUHJvcGVydHlGbG9hdCgiVGVtcCBJL08gV3JpdGUgVGltZSIsICJtcyIs CiAJCQkJCQkJCSBJTlNUUl9USU1FX0dFVF9NSUxMSVNFQyh1c2FnZS0+dGVtcF9ibGtfd3JpdGVf dGltZSksCiAJCQkJCQkJCSAzLCBlcyk7CisKKwkJCWlmICh0aW1pbmdzX3RpdGxlKQorCQkJCUV4 cGxhaW5DbG9zZUdyb3VwKHRpbWluZ3NfdGl0bGUsIHRpbWluZ3NfdGl0bGUsIHRydWUsIGVzKTsK IAkJfQogCX0KIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQcm9jbm9k ZS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1Byb2Nub2RlLmMKaW5kZXggOWY1Njk4MDYz ZjAuLjcxYTg5N2YyYjg0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUHJv Y25vZGUuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUHJvY25vZGUuYwpAQCAtNDE4 LDYgKzQxOCwyOSBAQCBFeGVjSW5pdE5vZGUoUGxhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGlu dCBlZmxhZ3MpCiAJCXJlc3VsdC0+aW5zdHJ1bWVudCA9IEluc3RyQWxsb2NOb2RlKGVzdGF0ZS0+ ZXNfaW5zdHJ1bWVudCwKIAkJCQkJCQkJCQkJcmVzdWx0LT5hc3luY19jYXBhYmxlKTsKIAorCS8q CisJICogSW5kZXhTY2FuIC8gSW5kZXhPbmx5U2NhbiB0cmFjayB0YWJsZSBhbmQgaW5kZXggYWNj ZXNzIHNlcGFyYXRlbHkuCisJICoKKwkgKiBXZSBpbnRlbnRpb25hbGx5IGRvbid0IGNvbGxlY3Qg dGltaW5nIGZvciB0aGVtIChldmVuIGlmIGVuYWJsZWQpLCBzaW5jZQorCSAqIHdlIGRvbid0IG5l ZWQgaXQsIGFuZCBleGVjdXRvciBub2RlcyBjYWxsIEluc3RyUHVzaFN0YWNrIC8KKwkgKiBJbnN0 clBvcFN0YWNrIChpbnN0ZWFkIG9mIHRoZSBmdWxsIEluc3RyTm9kZSopIHRvIHJlZHVjZSBvdmVy aGVhZC4KKwkgKi8KKwlpZiAoZXN0YXRlLT5lc19pbnN0cnVtZW50ICYmIChlc3RhdGUtPmVzX2lu c3RydW1lbnQtPmluc3RydW1lbnRfb3B0aW9ucyAmIElOU1RSVU1FTlRfQlVGRkVSUykgIT0gMCkK Kwl7CisJCWlmIChJc0EocmVzdWx0LCBJbmRleFNjYW5TdGF0ZSkpCisJCXsKKwkJCUluZGV4U2Nh blN0YXRlICppc3MgPSBjYXN0Tm9kZShJbmRleFNjYW5TdGF0ZSwgcmVzdWx0KTsKKworCQkJSW5z dHJJbml0T3B0aW9ucygmaXNzLT5pc3NfSW5zdHJ1bWVudC0+dGFibGVfaW5zdHIsIElOU1RSVU1F TlRfQlVGRkVSUyk7CisJCX0KKwkJZWxzZSBpZiAoSXNBKHJlc3VsdCwgSW5kZXhPbmx5U2NhblN0 YXRlKSkKKwkJeworCQkJSW5kZXhPbmx5U2NhblN0YXRlICppb3NzID0gY2FzdE5vZGUoSW5kZXhP bmx5U2NhblN0YXRlLCByZXN1bHQpOworCisJCQlJbnN0ckluaXRPcHRpb25zKCZpb3NzLT5pb3Nz X0luc3RydW1lbnQtPnRhYmxlX2luc3RyLCBJTlNUUlVNRU5UX0JVRkZFUlMpOworCQl9CisJfQor CiAJcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtODM3LDggKzg2MCwyNCBAQCBFeGVjUmVtZW1iZXJO b2RlSW5zdHJ1bWVudGF0aW9uX3dhbGtlcihQbGFuU3RhdGUgKm5vZGUsIHZvaWQgKmNvbnRleHQp CiAJCXJldHVybiBmYWxzZTsKIAogCWlmIChub2RlLT5pbnN0cnVtZW50KQorCXsKIAkJSW5zdHJR dWVyeVJlbWVtYmVyQ2hpbGQocGFyZW50LCAmbm9kZS0+aW5zdHJ1bWVudC0+aW5zdHIpOwogCisJ CS8qIEluZGV4U2Nhbi9JbmRleE9ubHlTY2FuIGhhdmUgYSBzZXBhcmF0ZSBlbnRyeSB0byB0cmFj ayB0YWJsZSBhY2Nlc3MgKi8KKwkJaWYgKElzQShub2RlLCBJbmRleFNjYW5TdGF0ZSkpCisJCXsK KwkJCUluZGV4U2NhblN0YXRlICppc3MgPSBjYXN0Tm9kZShJbmRleFNjYW5TdGF0ZSwgbm9kZSk7 CisKKwkJCUluc3RyUXVlcnlSZW1lbWJlckNoaWxkKHBhcmVudCwgJmlzcy0+aXNzX0luc3RydW1l bnQtPnRhYmxlX2luc3RyKTsKKwkJfQorCQllbHNlIGlmIChJc0Eobm9kZSwgSW5kZXhPbmx5U2Nh blN0YXRlKSkKKwkJeworCQkJSW5kZXhPbmx5U2NhblN0YXRlICppb3NzID0gY2FzdE5vZGUoSW5k ZXhPbmx5U2NhblN0YXRlLCBub2RlKTsKKworCQkJSW5zdHJRdWVyeVJlbWVtYmVyQ2hpbGQocGFy ZW50LCAmaW9zcy0+aW9zc19JbnN0cnVtZW50LT50YWJsZV9pbnN0cik7CisJCX0KKwl9CisKIAly ZXR1cm4gcGxhbnN0YXRlX3RyZWVfd2Fsa2VyKG5vZGUsIEV4ZWNSZW1lbWJlck5vZGVJbnN0cnVt ZW50YXRpb25fd2Fsa2VyLCBjb250ZXh0KTsKIH0KIApAQCAtODgwLDYgKzkxOSwyMCBAQCBFeGVj RmluYWxpemVOb2RlSW5zdHJ1bWVudGF0aW9uX3dhbGtlcihQbGFuU3RhdGUgKm5vZGUsIHZvaWQg KmNvbnRleHQpCiAJaWYgKCFub2RlLT5pbnN0cnVtZW50KQogCQlyZXR1cm4gZmFsc2U7CiAKKwkv KiBJbmRleFNjYW4vSW5kZXhPbmx5U2NhbiBoYXZlIGEgc2VwYXJhdGUgZW50cnkgdG8gdHJhY2sg dGFibGUgYWNjZXNzICovCisJaWYgKElzQShub2RlLCBJbmRleFNjYW5TdGF0ZSkpCisJeworCQlJ bmRleFNjYW5TdGF0ZSAqaXNzID0gY2FzdE5vZGUoSW5kZXhTY2FuU3RhdGUsIG5vZGUpOworCisJ CUluc3RyRmluYWxpemVDaGlsZCgmaXNzLT5pc3NfSW5zdHJ1bWVudC0+dGFibGVfaW5zdHIsICZu b2RlLT5pbnN0cnVtZW50LT5pbnN0cik7CisJfQorCWVsc2UgaWYgKElzQShub2RlLCBJbmRleE9u bHlTY2FuU3RhdGUpKQorCXsKKwkJSW5kZXhPbmx5U2NhblN0YXRlICppb3NzID0gY2FzdE5vZGUo SW5kZXhPbmx5U2NhblN0YXRlLCBub2RlKTsKKworCQlJbnN0ckZpbmFsaXplQ2hpbGQoJmlvc3Mt Pmlvc3NfSW5zdHJ1bWVudC0+dGFibGVfaW5zdHIsICZub2RlLT5pbnN0cnVtZW50LT5pbnN0cik7 CisJfQorCiAJSW5zdHJGaW5hbGl6ZUNoaWxkKCZub2RlLT5pbnN0cnVtZW50LT5pbnN0ciwgcGFy ZW50KTsKIAogCXJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVCaXRtYXBJbmRleHNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBJ bmRleHNjYW4uYwppbmRleCA3MGM1NWVlNmQ2MS4uNjNlMjRhMGJjZDQgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBJbmRleHNjYW4uYworKysgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlQml0bWFwSW5kZXhzY2FuLmMKQEAgLTI3Niw3ICsyNzYsNyBAQCBFeGVj SW5pdEJpdG1hcEluZGV4U2NhbihCaXRtYXBJbmRleFNjYW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRl LCBpbnQgZWZsYWdzKQogCiAJLyogU2V0IHVwIGluc3RydW1lbnRhdGlvbiBvZiBiaXRtYXAgaW5k ZXggc2NhbnMgaWYgcmVxdWVzdGVkICovCiAJaWYgKGVzdGF0ZS0+ZXNfaW5zdHJ1bWVudCkKLQkJ aW5kZXhzdGF0ZS0+Ymlzc19JbnN0cnVtZW50ID0gcGFsbG9jMF9vYmplY3QoSW5kZXhTY2FuSW5z dHJ1bWVudGF0aW9uKTsKKwkJaW5kZXhzdGF0ZS0+Ymlzc19JbnN0cnVtZW50ID0gTWVtb3J5Q29u dGV4dEFsbG9jWmVybyhlc3RhdGUtPmVzX2luc3RydW1lbnQtPmluc3RyX2N4dCwgc2l6ZW9mKElu ZGV4U2Nhbkluc3RydW1lbnRhdGlvbikpOwogCiAJLyogT3BlbiB0aGUgaW5kZXggcmVsYXRpb24u ICovCiAJbG9ja21vZGUgPSBleGVjX3J0X2ZldGNoKG5vZGUtPnNjYW4uc2NhbnJlbGlkLCBlc3Rh dGUpLT5yZWxsb2NrbW9kZTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJ bmRleG9ubHlzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhvbmx5c2Nhbi5j CmluZGV4IDllYWI4MWZkMWM4Li42NmIwMjc4OGIzYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUluZGV4b25seXNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlSW5kZXhvbmx5c2Nhbi5jCkBAIC02Nyw2ICs2Nyw3IEBAIEluZGV4T25seU5leHQoSW5kZXhP bmx5U2NhblN0YXRlICpub2RlKQogCUluZGV4U2NhbkRlc2Mgc2NhbmRlc2M7CiAJVHVwbGVUYWJs ZVNsb3QgKnNsb3Q7CiAJSXRlbVBvaW50ZXIgdGlkOworCUluc3RydW1lbnRhdGlvbiAqdGFibGVf aW5zdHIgPSBOVUxMOwogCiAJLyoKIAkgKiBleHRyYWN0IG5lY2Vzc2FyeSBpbmZvcm1hdGlvbiBm cm9tIGluZGV4IHNjYW4gbm9kZQpAQCAtODMsNiArODQsOSBAQCBJbmRleE9ubHlOZXh0KEluZGV4 T25seVNjYW5TdGF0ZSAqbm9kZSkKIAllY29udGV4dCA9IG5vZGUtPnNzLnBzLnBzX0V4cHJDb250 ZXh0OwogCXNsb3QgPSBub2RlLT5zcy5zc19TY2FuVHVwbGVTbG90OwogCisJaWYgKG5vZGUtPmlv c3NfSW5zdHJ1bWVudCAmJiBub2RlLT5pb3NzX0luc3RydW1lbnQtPnRhYmxlX2luc3RyLm5lZWRf c3RhY2spCisJCXRhYmxlX2luc3RyID0gJm5vZGUtPmlvc3NfSW5zdHJ1bWVudC0+dGFibGVfaW5z dHI7CisKIAlpZiAoc2NhbmRlc2MgPT0gTlVMTCkKIAl7CiAJCS8qCkBAIC0xNjMsMTEgKzE2Nywy MiBAQCBJbmRleE9ubHlOZXh0KEluZGV4T25seVNjYW5TdGF0ZSAqbm9kZSkKIAkJCQkJCQlJdGVt UG9pbnRlckdldEJsb2NrTnVtYmVyKHRpZCksCiAJCQkJCQkJJm5vZGUtPmlvc3NfVk1CdWZmZXIp KQogCQl7CisJCQlib29sCQlmb3VuZDsKKwogCQkJLyoKIAkJCSAqIFJhdHMsIHdlIGhhdmUgdG8g dmlzaXQgdGhlIGhlYXAgdG8gY2hlY2sgdmlzaWJpbGl0eS4KIAkJCSAqLwogCQkJSW5zdHJDb3Vu dFR1cGxlczIobm9kZSwgMSk7Ci0JCQlpZiAoIWluZGV4X2ZldGNoX2hlYXAoc2NhbmRlc2MsIG5v ZGUtPmlvc3NfVGFibGVTbG90KSkKKworCQkJaWYgKHRhYmxlX2luc3RyKQorCQkJCUluc3RyUHVz aFN0YWNrKHRhYmxlX2luc3RyKTsKKworCQkJZm91bmQgPSBpbmRleF9mZXRjaF9oZWFwKHNjYW5k ZXNjLCBub2RlLT5pb3NzX1RhYmxlU2xvdCk7CisKKwkJCWlmICh0YWJsZV9pbnN0cikKKwkJCQlJ bnN0clBvcFN0YWNrKHRhYmxlX2luc3RyKTsKKworCQkJaWYgKCFmb3VuZCkKIAkJCQljb250aW51 ZTsJCS8qIG5vIHZpc2libGUgdHVwbGUsIHRyeSBuZXh0IGluZGV4IGVudHJ5ICovCiAKIAkJCUV4 ZWNDbGVhclR1cGxlKG5vZGUtPmlvc3NfVGFibGVTbG90KTsKQEAgLTQzNCw2ICs0NDksNyBAQCBF eGVjRW5kSW5kZXhPbmx5U2NhbihJbmRleE9ubHlTY2FuU3RhdGUgKm5vZGUpCiAJCSAqIHdoaWNo IHdpbGwgaGF2ZSBhIG5ldyBJbmRleE9ubHlTY2FuU3RhdGUgYW5kIHplcm9lZCBzdGF0cy4KIAkJ ICovCiAJCXdpbnN0cnVtZW50LT5uc2VhcmNoZXMgKz0gbm9kZS0+aW9zc19JbnN0cnVtZW50LT5u c2VhcmNoZXM7CisJCUluc3RyQWNjdW1TdGFjaygmd2luc3RydW1lbnQtPnRhYmxlX2luc3RyLCAm bm9kZS0+aW9zc19JbnN0cnVtZW50LT50YWJsZV9pbnN0cik7CiAJfQogCiAJLyoKQEAgLTYwOCw3 ICs2MjQsNyBAQCBFeGVjSW5pdEluZGV4T25seVNjYW4oSW5kZXhPbmx5U2NhbiAqbm9kZSwgRVN0 YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAKIAkvKiBTZXQgdXAgaW5zdHJ1bWVudGF0aW9uIG9m IGluZGV4LW9ubHkgc2NhbnMgaWYgcmVxdWVzdGVkICovCiAJaWYgKGVzdGF0ZS0+ZXNfaW5zdHJ1 bWVudCkKLQkJaW5kZXhzdGF0ZS0+aW9zc19JbnN0cnVtZW50ID0gcGFsbG9jMF9vYmplY3QoSW5k ZXhTY2FuSW5zdHJ1bWVudGF0aW9uKTsKKwkJaW5kZXhzdGF0ZS0+aW9zc19JbnN0cnVtZW50ID0g TWVtb3J5Q29udGV4dEFsbG9jWmVybyhlc3RhdGUtPmVzX2luc3RydW1lbnQtPmluc3RyX2N4dCwg c2l6ZW9mKEluZGV4U2Nhbkluc3RydW1lbnRhdGlvbikpOwogCiAJLyogT3BlbiB0aGUgaW5kZXgg cmVsYXRpb24uICovCiAJbG9ja21vZGUgPSBleGVjX3J0X2ZldGNoKG5vZGUtPnNjYW4uc2NhbnJl bGlkLCBlc3RhdGUpLT5yZWxsb2NrbW9kZTsKQEAgLTg5Myw0ICs5MDksMTEgQEAgRXhlY0luZGV4 T25seVNjYW5SZXRyaWV2ZUluc3RydW1lbnRhdGlvbihJbmRleE9ubHlTY2FuU3RhdGUgKm5vZGUp CiAJCVNoYXJlZEluZm8tPm51bV93b3JrZXJzICogc2l6ZW9mKEluZGV4U2Nhbkluc3RydW1lbnRh dGlvbik7CiAJbm9kZS0+aW9zc19TaGFyZWRJbmZvID0gcGFsbG9jKHNpemUpOwogCW1lbWNweShu b2RlLT5pb3NzX1NoYXJlZEluZm8sIFNoYXJlZEluZm8sIHNpemUpOworCisJLyogQWdncmVnYXRl IHdvcmtlcnMnIHRhYmxlIGJ1ZmZlci9XQUwgdXNhZ2UgaW50byBsZWFkZXIncyBlbnRyeSAqLwor CWZvciAoaW50IGkgPSAwOyBpIDwgbm9kZS0+aW9zc19TaGFyZWRJbmZvLT5udW1fd29ya2Vyczsg aSsrKQorCXsKKwkJSW5zdHJBY2N1bVN0YWNrKCZub2RlLT5pb3NzX0luc3RydW1lbnQtPnRhYmxl X2luc3RyLAorCQkJCQkJJm5vZGUtPmlvc3NfU2hhcmVkSW5mby0+d2luc3RydW1lbnRbaV0udGFi bGVfaW5zdHIpOworCX0KIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJ bmRleHNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleHNjYW4uYwppbmRleCAw NjE0M2U5NGM1YS4uZTY2YjZkNjQwN2IgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVJbmRleHNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhzY2Fu LmMKQEAgLTg1LDcgKzg1LDEwIEBAIEluZGV4TmV4dChJbmRleFNjYW5TdGF0ZSAqbm9kZSkKIAlF eHByQ29udGV4dCAqZWNvbnRleHQ7CiAJU2NhbkRpcmVjdGlvbiBkaXJlY3Rpb247CiAJSW5kZXhT Y2FuRGVzYyBzY2FuZGVzYzsKKwlJdGVtUG9pbnRlciB0aWQ7CiAJVHVwbGVUYWJsZVNsb3QgKnNs b3Q7CisJYm9vbAkJZm91bmQ7CisJSW5zdHJ1bWVudGF0aW9uICp0YWJsZV9pbnN0ciA9IE5VTEw7 CiAKIAkvKgogCSAqIGV4dHJhY3QgbmVjZXNzYXJ5IGluZm9ybWF0aW9uIGZyb20gaW5kZXggc2Nh biBub2RlCkBAIC0xMDIsNiArMTA1LDkgQEAgSW5kZXhOZXh0KEluZGV4U2NhblN0YXRlICpub2Rl KQogCWVjb250ZXh0ID0gbm9kZS0+c3MucHMucHNfRXhwckNvbnRleHQ7CiAJc2xvdCA9IG5vZGUt PnNzLnNzX1NjYW5UdXBsZVNsb3Q7CiAKKwlpZiAobm9kZS0+aXNzX0luc3RydW1lbnQgJiYgbm9k ZS0+aXNzX0luc3RydW1lbnQtPnRhYmxlX2luc3RyLm5lZWRfc3RhY2spCisJCXRhYmxlX2luc3Ry ID0gJm5vZGUtPmlzc19JbnN0cnVtZW50LT50YWJsZV9pbnN0cjsKKwogCWlmIChzY2FuZGVzYyA9 PSBOVUxMKQogCXsKIAkJLyoKQEAgLTEzMCw4ICsxMzYsMjQgQEAgSW5kZXhOZXh0KEluZGV4U2Nh blN0YXRlICpub2RlKQogCS8qCiAJICogb2ssIG5vdyB0aGF0IHdlIGhhdmUgd2hhdCB3ZSBuZWVk LCBmZXRjaCB0aGUgbmV4dCB0dXBsZS4KIAkgKi8KLQl3aGlsZSAoaW5kZXhfZ2V0bmV4dF9zbG90 KHNjYW5kZXNjLCBkaXJlY3Rpb24sIHNsb3QpKQorCXdoaWxlICgodGlkID0gaW5kZXhfZ2V0bmV4 dF90aWQoc2NhbmRlc2MsIGRpcmVjdGlvbikpICE9IE5VTEwpCiAJeworCQlpZiAodGFibGVfaW5z dHIpCisJCQlJbnN0clB1c2hTdGFjayh0YWJsZV9pbnN0cik7CisKKwkJZm9yICg7OykKKwkJewor CQkJZm91bmQgPSBpbmRleF9mZXRjaF9oZWFwKHNjYW5kZXNjLCBzbG90KTsKKwkJCWlmIChmb3Vu ZCB8fCAhc2NhbmRlc2MtPnhzX2hlYXBfY29udGludWUpCisJCQkJYnJlYWs7CisJCX0KKworCQlp ZiAodGFibGVfaW5zdHIpCisJCQlJbnN0clBvcFN0YWNrKHRhYmxlX2luc3RyKTsKKworCQlpZiAo dW5saWtlbHkoIWZvdW5kKSkKKwkJCWNvbnRpbnVlOworCiAJCUNIRUNLX0ZPUl9JTlRFUlJVUFRT KCk7CiAKIAkJLyoKQEAgLTE3OSw2ICsyMDEsNyBAQCBJbmRleE5leHRXaXRoUmVvcmRlcihJbmRl eFNjYW5TdGF0ZSAqbm9kZSkKIAlEYXR1bQkgICAqbGFzdGZldGNoZWRfdmFsczsKIAlib29sCSAg ICpsYXN0ZmV0Y2hlZF9udWxsczsKIAlpbnQJCQljbXA7CisJSW5zdHJ1bWVudGF0aW9uICp0YWJs ZV9pbnN0ciA9IE5VTEw7CiAKIAllc3RhdGUgPSBub2RlLT5zcy5wcy5zdGF0ZTsKIApAQCAtMTk4 LDYgKzIyMSw5IEBAIEluZGV4TmV4dFdpdGhSZW9yZGVyKEluZGV4U2NhblN0YXRlICpub2RlKQog CWVjb250ZXh0ID0gbm9kZS0+c3MucHMucHNfRXhwckNvbnRleHQ7CiAJc2xvdCA9IG5vZGUtPnNz LnNzX1NjYW5UdXBsZVNsb3Q7CiAKKwlpZiAobm9kZS0+aXNzX0luc3RydW1lbnQgJiYgbm9kZS0+ aXNzX0luc3RydW1lbnQtPnRhYmxlX2luc3RyLm5lZWRfc3RhY2spCisJCXRhYmxlX2luc3RyID0g Jm5vZGUtPmlzc19JbnN0cnVtZW50LT50YWJsZV9pbnN0cjsKKwogCWlmIChzY2FuZGVzYyA9PSBO VUxMKQogCXsKIAkJLyoKQEAgLTI1OSwzNiArMjg1LDY3IEBAIEluZGV4TmV4dFdpdGhSZW9yZGVy KEluZGV4U2NhblN0YXRlICpub2RlKQogCQl9CiAKIAkJLyoKLQkJICogRmV0Y2ggbmV4dCB0dXBs ZSBmcm9tIHRoZSBpbmRleC4KKwkJICogRmV0Y2ggbmV4dCB2YWxpZCB0dXBsZSBmcm9tIHRoZSBp bmRleC4KIAkJICovCi1uZXh0X2luZGV4dHVwbGU6Ci0JCWlmICghaW5kZXhfZ2V0bmV4dF9zbG90 KHNjYW5kZXNjLCBGb3J3YXJkU2NhbkRpcmVjdGlvbiwgc2xvdCkpCisJCWZvciAoOzspCiAJCXsK KwkJCUl0ZW1Qb2ludGVyIHRpZDsKKwkJCWJvb2wJCWZvdW5kOworCisJCQkvKiBUaW1lIHRvIGZl dGNoIHRoZSBuZXh0IFRJRCBmcm9tIHRoZSBpbmRleCAqLworCQkJdGlkID0gaW5kZXhfZ2V0bmV4 dF90aWQoc2NhbmRlc2MsIEZvcndhcmRTY2FuRGlyZWN0aW9uKTsKKworCQkJLyogSWYgd2UncmUg b3V0IG9mIGluZGV4IGVudHJpZXMsIHdlJ3JlIGRvbmUgKi8KKwkJCWlmICh0aWQgPT0gTlVMTCkK KwkJCXsKKwkJCQkvKgorCQkJCSAqIE5vIG1vcmUgdHVwbGVzIGZyb20gdGhlIGluZGV4LiAgQnV0 IHdlIHN0aWxsIG5lZWQgdG8gZHJhaW4KKwkJCQkgKiBhbnkgcmVtYWluaW5nIHR1cGxlcyBmcm9t IHRoZSBxdWV1ZSBiZWZvcmUgd2UncmUgZG9uZS4KKwkJCQkgKi8KKwkJCQlub2RlLT5pc3NfUmVh Y2hlZEVuZCA9IHRydWU7CisJCQkJYnJlYWs7CisJCQl9CisKKwkJCUFzc2VydChJdGVtUG9pbnRl ckVxdWFscyh0aWQsICZzY2FuZGVzYy0+eHNfaGVhcHRpZCkpOworCisJCQlpZiAodGFibGVfaW5z dHIpCisJCQkJSW5zdHJQdXNoU3RhY2sodGFibGVfaW5zdHIpOworCisJCQlmb3IgKDs7KQorCQkJ eworCQkJCWZvdW5kID0gaW5kZXhfZmV0Y2hfaGVhcChzY2FuZGVzYywgc2xvdCk7CisJCQkJaWYg KGZvdW5kIHx8ICFzY2FuZGVzYy0+eHNfaGVhcF9jb250aW51ZSkKKwkJCQkJYnJlYWs7CisJCQl9 CisKKwkJCWlmICh0YWJsZV9pbnN0cikKKwkJCQlJbnN0clBvcFN0YWNrKHRhYmxlX2luc3RyKTsK KwogCQkJLyoKLQkJCSAqIE5vIG1vcmUgdHVwbGVzIGZyb20gdGhlIGluZGV4LiAgQnV0IHdlIHN0 aWxsIG5lZWQgdG8gZHJhaW4gYW55Ci0JCQkgKiByZW1haW5pbmcgdHVwbGVzIGZyb20gdGhlIHF1 ZXVlIGJlZm9yZSB3ZSdyZSBkb25lLgorCQkJICogSWYgdGhlIGluZGV4IHdhcyBsb3NzeSwgd2Ug aGF2ZSB0byByZWNoZWNrIHRoZSBpbmRleCBxdWFscyBhbmQKKwkJCSAqIE9SREVSIEJZIGV4cHJl c3Npb25zIHVzaW5nIHRoZSBmZXRjaGVkIHR1cGxlLgogCQkJICovCi0JCQlub2RlLT5pc3NfUmVh Y2hlZEVuZCA9IHRydWU7Ci0JCQljb250aW51ZTsKLQkJfQotCi0JCS8qCi0JCSAqIElmIHRoZSBp bmRleCB3YXMgbG9zc3ksIHdlIGhhdmUgdG8gcmVjaGVjayB0aGUgaW5kZXggcXVhbHMgYW5kCi0J CSAqIE9SREVSIEJZIGV4cHJlc3Npb25zIHVzaW5nIHRoZSBmZXRjaGVkIHR1cGxlLgotCQkgKi8K LQkJaWYgKHNjYW5kZXNjLT54c19yZWNoZWNrKQotCQl7Ci0JCQllY29udGV4dC0+ZWN4dF9zY2Fu dHVwbGUgPSBzbG90OwotCQkJaWYgKCFFeGVjUXVhbEFuZFJlc2V0KG5vZGUtPmluZGV4cXVhbG9y aWcsIGVjb250ZXh0KSkKKwkJCWlmIChmb3VuZCAmJiBzY2FuZGVzYy0+eHNfcmVjaGVjaykKIAkJ CXsKLQkJCQkvKiBGYWlscyByZWNoZWNrLCBzbyBkcm9wIGl0IGFuZCBsb29wIGJhY2sgZm9yIGFu b3RoZXIgKi8KLQkJCQlJbnN0ckNvdW50RmlsdGVyZWQyKG5vZGUsIDEpOwotCQkJCS8qIGFsbG93 IHRoaXMgbG9vcCB0byBiZSBjYW5jZWxsYWJsZSAqLwotCQkJCUNIRUNLX0ZPUl9JTlRFUlJVUFRT KCk7Ci0JCQkJZ290byBuZXh0X2luZGV4dHVwbGU7CisJCQkJZWNvbnRleHQtPmVjeHRfc2NhbnR1 cGxlID0gc2xvdDsKKwkJCQlpZiAoIUV4ZWNRdWFsQW5kUmVzZXQobm9kZS0+aW5kZXhxdWFsb3Jp ZywgZWNvbnRleHQpKQorCQkJCXsKKwkJCQkJLyogRmFpbHMgcmVjaGVjaywgc28gZHJvcCBpdCBh bmQgbG9vcCBiYWNrIGZvciBhbm90aGVyICovCisJCQkJCUluc3RyQ291bnRGaWx0ZXJlZDIobm9k ZSwgMSk7CisJCQkJCS8qIGFsbG93IHRoaXMgbG9vcCB0byBiZSBjYW5jZWxsYWJsZSAqLworCQkJ CQlDSEVDS19GT1JfSU5URVJSVVBUUygpOworCQkJCQljb250aW51ZTsKKwkJCQl9CiAJCQl9CisK KwkJCWlmIChmb3VuZCkKKwkJCQlicmVhazsKIAkJfQogCisJCS8qIE5vIG1vcmUgaW5kZXggZW50 cmllcywgcmUtcnVuIHRvIGNsZWFyIHRoZSByZW9yZGVyIHF1ZXVlICovCisJCWlmIChub2RlLT5p c3NfUmVhY2hlZEVuZCkKKwkJCWNvbnRpbnVlOworCiAJCWlmIChzY2FuZGVzYy0+eHNfcmVjaGVj a29yZGVyYnkpCiAJCXsKIAkJCWVjb250ZXh0LT5lY3h0X3NjYW50dXBsZSA9IHNsb3Q7CkBAIC04 MTQsNiArODcxLDcgQEAgRXhlY0VuZEluZGV4U2NhbihJbmRleFNjYW5TdGF0ZSAqbm9kZSkKIAkJ ICogd2hpY2ggd2lsbCBoYXZlIGEgbmV3IEluZGV4T25seVNjYW5TdGF0ZSBhbmQgemVyb2VkIHN0 YXRzLgogCQkgKi8KIAkJd2luc3RydW1lbnQtPm5zZWFyY2hlcyArPSBub2RlLT5pc3NfSW5zdHJ1 bWVudC0+bnNlYXJjaGVzOworCQlJbnN0ckFjY3VtU3RhY2soJndpbnN0cnVtZW50LT50YWJsZV9p bnN0ciwgJm5vZGUtPmlzc19JbnN0cnVtZW50LT50YWJsZV9pbnN0cik7CiAJfQogCiAJLyoKQEAg LTk3Niw3ICsxMDM0LDcgQEAgRXhlY0luaXRJbmRleFNjYW4oSW5kZXhTY2FuICpub2RlLCBFU3Rh dGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAogCS8qIFNldCB1cCBpbnN0cnVtZW50YXRpb24gb2Yg aW5kZXggc2NhbnMgaWYgcmVxdWVzdGVkICovCiAJaWYgKGVzdGF0ZS0+ZXNfaW5zdHJ1bWVudCkK LQkJaW5kZXhzdGF0ZS0+aXNzX0luc3RydW1lbnQgPSBwYWxsb2MwX29iamVjdChJbmRleFNjYW5J bnN0cnVtZW50YXRpb24pOworCQlpbmRleHN0YXRlLT5pc3NfSW5zdHJ1bWVudCA9IE1lbW9yeUNv bnRleHRBbGxvY1plcm8oZXN0YXRlLT5lc19pbnN0cnVtZW50LT5pbnN0cl9jeHQsIHNpemVvZihJ bmRleFNjYW5JbnN0cnVtZW50YXRpb24pKTsKIAogCS8qIE9wZW4gdGhlIGluZGV4IHJlbGF0aW9u LiAqLwogCWxvY2ttb2RlID0gZXhlY19ydF9mZXRjaChub2RlLT5zY2FuLnNjYW5yZWxpZCwgZXN0 YXRlKS0+cmVsbG9ja21vZGU7CkBAIC0xODI2LDQgKzE4ODQsMTEgQEAgRXhlY0luZGV4U2NhblJl dHJpZXZlSW5zdHJ1bWVudGF0aW9uKEluZGV4U2NhblN0YXRlICpub2RlKQogCQlTaGFyZWRJbmZv LT5udW1fd29ya2VycyAqIHNpemVvZihJbmRleFNjYW5JbnN0cnVtZW50YXRpb24pOwogCW5vZGUt Pmlzc19TaGFyZWRJbmZvID0gcGFsbG9jKHNpemUpOwogCW1lbWNweShub2RlLT5pc3NfU2hhcmVk SW5mbywgU2hhcmVkSW5mbywgc2l6ZSk7CisKKwkvKiBBZ2dyZWdhdGUgd29ya2VycycgdGFibGUg YnVmZmVyL1dBTCB1c2FnZSBpbnRvIGxlYWRlcidzIGVudHJ5ICovCisJZm9yIChpbnQgaSA9IDA7 IGkgPCBub2RlLT5pc3NfU2hhcmVkSW5mby0+bnVtX3dvcmtlcnM7IGkrKykKKwl7CisJCUluc3Ry QWNjdW1TdGFjaygmbm9kZS0+aXNzX0luc3RydW1lbnQtPnRhYmxlX2luc3RyLAorCQkJCQkJJm5v ZGUtPmlzc19TaGFyZWRJbmZvLT53aW5zdHJ1bWVudFtpXS50YWJsZV9pbnN0cik7CisJfQogfQpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvaW5zdHJ1bWVudF9ub2RlLmggYi9zcmMv aW5jbHVkZS9leGVjdXRvci9pbnN0cnVtZW50X25vZGUuaAppbmRleCA4ODQ3ZDdmOTRmYS4uZTg1 MzFiODRlZmEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2luc3RydW1lbnRfbm9k ZS5oCisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2luc3RydW1lbnRfbm9kZS5oCkBAIC0xOCw2 ICsxOCw4IEBACiAjaWZuZGVmIElOU1RSVU1FTlRfTk9ERV9ICiAjZGVmaW5lIElOU1RSVU1FTlRf Tk9ERV9ICiAKKyNpbmNsdWRlICJleGVjdXRvci9pbnN0cnVtZW50LmgiCisKIAogLyogLS0tLS0t LS0tLS0tLS0tLS0tLS0tCiAgKglJbnN0cnVtZW50YXRpb24gaW5mb3JtYXRpb24gZm9yIGFnZ3Jl Z2F0ZSBmdW5jdGlvbiBleGVjdXRpb24KQEAgLTQ4LDYgKzUwLDkgQEAgdHlwZWRlZiBzdHJ1Y3Qg SW5kZXhTY2FuSW5zdHJ1bWVudGF0aW9uCiB7CiAJLyogSW5kZXggc2VhcmNoIGNvdW50IChpbmNy ZW1lbnRlZCB3aXRoIHBnc3RhdF9jb3VudF9pbmRleF9zY2FuIGNhbGwpICovCiAJdWludDY0CQlu c2VhcmNoZXM7CisKKwkvKiBJbnN0cnVtZW50YXRpb24gdXRpbGl6ZWQgZm9yIHRyYWNraW5nIGJ1 ZmZlciB1c2FnZSBkdXJpbmcgdGFibGUgYWNjZXNzICovCisJSW5zdHJ1bWVudGF0aW9uIHRhYmxl X2luc3RyOwogfSBJbmRleFNjYW5JbnN0cnVtZW50YXRpb247CiAKIC8qCi0tIAoyLjQ3LjEKCg== --0000000000005bb84b064dfc5b57--