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 1vz5kc-000gmP-1c for pgsql-hackers@arkaria.postgresql.org; Sun, 08 Mar 2026 04:28:23 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vz5ka-00A85y-2Z for pgsql-hackers@arkaria.postgresql.org; Sun, 08 Mar 2026 04:28:21 +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 1vz5ka-00A85p-0n for pgsql-hackers@lists.postgresql.org; Sun, 08 Mar 2026 04:28:20 +0000 Received: from mail-qv1-xf2b.google.com ([2607:f8b0:4864:20::f2b]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1vz5kX-00000001RFh-0qd1 for pgsql-hackers@lists.postgresql.org; Sun, 08 Mar 2026 04:28:20 +0000 Received: by mail-qv1-xf2b.google.com with SMTP id 6a1803df08f44-899fac9caabso100880166d6.1 for ; Sat, 07 Mar 2026 20:28:16 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1772944095; cv=none; d=google.com; s=arc-20240605; b=li5g/kkNkilTv1mhPfxEPCKj2vAjJGhEmgEGUfsXNYlAVG0V+KqVD45A74M3OBDnxI j68sPV53LR8EhGQSUV0O793Rk07+uFAeSkzdiGUNLD8Y8yFxgfOKXnQnfdAM2Bqw2q1t J8jR4OTYp6N6JZfylmNiN5TiW+T1OK1JiG5W+L5giyKmI8mdBQZVa6fTtxTMvRpyxKka U3hw5kDLze+NOHzqexQClYt3R8FfcRY0k4MYEHflolTAHFrp40ZisRI1kSdU+Rfo4knu La5TisIjE8x/7LBCr8JfJdLzn0yQ/pQ2WlbSkYg2qcFOeMsXo4tsIVN6EOtJ2OP/LpTz snAw== 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=es+k//ACxcSitT3xT+j/xSFrcjQnYXK3IZH2+9FUWpQ=; fh=Py+j8Yu62nXYqCgnH5foF86JikgPxvLmlgGne+qEyIg=; b=EtXE4IWERoJrNeYR+lUs3NTMe+maXH5LEgnnKAFeK4yvOYLB1B+1g0cywlBhPt9Oqp qvnnlQA5uH38iQSypa0SBMDYN23EC8bzutFWhTFZc7hltpZTTYnUMH4iM+GBH2cgH+RL 1Ri2QhWdkaKqcSeU0iA892P9r0ocCJOdwudcSpdbw37c6Q2ld8EeqqLfeeQpT6KgLA/4 rhm441BEovVsqX90FXjxYnZST/MeskndIUrnSZCvi/7K3ytr5JwB7qeSBUXkFEQvHB4l U2zaC5LWbVu0gp5P825VYtgJErZs0TFstP+TD+wx7k8Q84YjRL27i/mSih+cqsegphv2 ZzNw==; 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=1772944095; x=1773548895; 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=es+k//ACxcSitT3xT+j/xSFrcjQnYXK3IZH2+9FUWpQ=; b=LqwvcSNCHEuy/bWfq3V8ccXyUOVyEF+wHG2ktEG2Xz4xDWZJyPD1THfiFdlprdjSIw UVLO/iYCu7fDNC6xG86s8/BCmzxpdVsTgjilILwBAUEMXf7vM1+g9aU4cyYZGWnPd3X+ PSwJhjdE9GEIk1BIpnMuy/7SYHTfOq1gmOPLs= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772944095; x=1773548895; 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=es+k//ACxcSitT3xT+j/xSFrcjQnYXK3IZH2+9FUWpQ=; b=sixpn1BpmKfmnjy+Tl8MyMEKP9ofWz9ud3r9RGYKDUTo56qXEbHEwbO09UHLIYSy9I v9IRwZyG3LUooy9OcGvJHUxfxzbiQgIlIuKZKRI26GBf68AAMVblle1XbAVhrRdh3Q8a eeJwaVb2+xD+cUpqSWeSYcI88Nm5tMlg8TJ1t2Lo8E1z3ul8FNLjfVH6DjCr+FNBIR2l ZIVx5WedEdmHeERvr9rlsLzDnOIn6GQRCDOpEH4I6BMVrSRbwiEUMXt2Xo8vNH9/3qHg CW6TFQx/AkHfJmrzypn3Z5j89YZKAYxFPd3a6opuTwdL13rETnmTfSeWxgASuY2U6tdc 0KhA== X-Gm-Message-State: AOJu0YwnD6xqdo1tI3+Nbh/dFobomGIUFY6hVjAjeSI1GU6OJDkr3DTT N9/a+nQHHb/zVHu2WhG65wVqpxk5qggq51lJkN9gEQMOPFYIIpgUwonq5YEOw3ABVgcV9y9q4ts RTdKaSG6oOP7RSCJVRCws0/GGyEi0901HV85lK0fPyK81B5c5U/asO9hm X-Gm-Gg: ATEYQzxNOuO6UNgx7F0yQ07/0Rc6vNu9RBikRQKDcWyN5ybjYbcaqVzRRHOXmV9EyKz 4eBL3noSFOpBTq2UT4Rus+HhsgmDA3uvhehqPe5IgsBo4vNWYfK278tvdwt6+WkuD+ZQmRKbvgg D08YHKe10GT9O5Qm21jjAqx/h8rQJx0X+jKOhlbcToISC0chYo077J0BLgplhDNMwTRt/Kqskgo pRWkIsOjYSH9lyF+mAV9/QVKdBOerW/J+PDWAk0rVfaZ9JWDndnGBDGYWVHAzv2H4noxHWJrMNU mwHUlgUzYTbsV7ZDyg2vPgoXmOq2ldTeuZjY+JXRynV/Zifyb0aIxnkT7QCr7596yDBgRmQv X-Received: by 2002:a05:6214:1c0e:b0:89a:258:c1d9 with SMTP id 6a1803df08f44-89a30ae09femr110607946d6.53.1772944095238; Sat, 07 Mar 2026 20:28:15 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Lukas Fittl Date: Sat, 7 Mar 2026 20:27:38 -0800 X-Gm-Features: AaiRm52SDBWGzHa7HZVXSqTv802uNrW_fonZWMzqrAnmnyF9oJRLLddHEg5Sk9M Message-ID: Subject: Re: Stack-based tracking of per-node WAL/buffer usage To: PostgreSQL Hackers , Andres Freund Cc: Peter Smith Content-Type: multipart/mixed; boundary="00000000000002247a064c7bb7b8" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000002247a064c7bb7b8 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Mon, Feb 23, 2026 at 8:18=E2=80=AFPM Lukas Fittl wrote= : > 0001 addresses the issue that Peter raised and corrects the macro name > + adds a missing comment. This has been pushed by Andres, thanks again Peter for noting this! See attached v7, with the changes as noted later. But first, some fresh performance numbers that take into account extra inlining added in a new v7/0006: Example (default shared_buffers, runtimes are best out of 3-ish): CREATE TABLE lotsarows(key int not null); INSERT INTO lotsarows SELECT generate_series(1, 50000000); VACUUM FREEZE lotsarows; 250ms actual runtime (no instrumentation) BUFFERS OFF, TIMING OFF: 295ms master 295ms with stack-based instrumentation only (v7/0005) -- no change because BUFFERS OFF 260ms with ExecProcNodeInstr inlining work (v7/0006) BUFFERS ON, TIMING OFF: 380ms master 305ms with stack-based instrumentation only (v7/0005) 280ms with ExecProcNodeInstr inlining work (v7/0006) In summary: For BUFFERS ON, we're going from 52% overhead in this stress test, to 12% overhead (22% without the ExecProcNodeInstr change). With rows instrumentation only, we go from 18% to 3% overhead. > 0002/0003 are the same as in v5 and are preparatory commits that > should be in good shape to go. I split out the trigger instrumentation refactoring into its own commit (0001) per Andres' request off-list. 0002 is the node instrumentation refactoring, which changed slightly, because Instrumentation is now treated as a base struct and NodeInstrumentation now contains an Instrumentation "instr" field to reduce duplication. 0003 replaces pgBufferUsage/pgWalUsage with INSTR_* macros, pretty much unchanged from v6/0002. > 0004 adds new regression tests that pass on both master and the > patched version, and stress test some of the nested instrumentation > handling. This patch is the same in v7 as in v6. > 0005 is what was previously 0003, and introduces the stack-based > instrumentation mechanism. 0005 is still the stack-based instrumentation commit, but has several improvements over v6: - Andres suggested a different stack structure in a conversation off-list, where we track the stack entries in a separately kept array instead of with inline pointers on the Instrumentation structure - that ends up making the whole change a lot easier to reason about, and clarifies the abort handling as well - I've separated out the ResOwner handling into a new "QueryInstrumentation" struct - this makes it clearer that one can use Instrumentation directly with certain caveats (i.e. one must deal with aborts directly), and feels better now that we're including Instrumentation in NodeInstrumentation as well > 0006 could probably be merged into 0005, and is the existing > mechanical change to drop the pgBufferUsage global, but kept separate > for easier review for now. I've merged that together now into 0005 because it feels better to reason about this as a whole and drop pgBufferUsage within the same commit where we're adding the stack-based instrumentation. There is now a new 0006 patch that further optimizes ExecProcNodeInstr (with performance numbers as noted in the beginning of this mail). During my testing I realized that the conditional checks in InstrStartNode/InstrStopNode are quite unnecessary - we never change what gets instrumented during execution, and so we can create specialized functions for the different instrumentation combinations, giving the compiler a much better chance at generating optimal instructions. The assembly here looks a lot better now. > 0007 is the stack-mechanism for splitting out "Table Buffers" for > Index Scans. This stayed pretty much the same from the earlier version, but I reworked this a bit to avoid special Instr functions for dealing with this case, instead it re-uses NodeInstrumentation and InstrStartNode/InstrStopNode. > 0008 adds a pg_session_buffer_usage() module for testing the global > counters. This helps to verify the handling of aborts behave sanely > (and can run on both master and patched), but I don't think we should > commit this. This is identical with v6/0008, but continues to prove very useful in testing the refactorings. > Two questions on my mind: > > 1) Should we call this "instrumentation context" (InstrContext?) > instead of "instrumentation stack" (InstrStack)? When writing comments > I found the difference between "stack entry" and "stack" confusing at > times, and "context" feels a bit more clear as a term (e.g. as in > "CurrentInstrContext" or "CurrentInstrumentationContext"). With the refactoring of the stack-mechanism done now, I think we don't need to change the naming here, since "InstrStack" as a commonly used struct is gone now (its just Instrumentation now), so I'd suggest keeping the "stack" terminology to describe the approach itself. > 2) For 0007, "Table Buffers" feels a bit inconsistent with "Heap > Fetches" and "Heap Blocks" used elsewhere, should we potentially use > "Heap Buffers", or change the existing names to "Table ..." instead? That is still an open question. Thanks, Lukas --=20 Lukas Fittl --00000000000002247a064c7bb7b8 Content-Type: application/octet-stream; name="v7-0004-instrumentation-Add-additional-regression-tests-c.patch" Content-Disposition: attachment; filename="v7-0004-instrumentation-Add-additional-regression-tests-c.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmh8zh0j3 RnJvbSAwM2ViNjkzZWRkMGMyMDM4NmE1YzFmYjg3YmRkMzQzNDQ0ZjNhMGY0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpEYXRlOiBT dW4sIDIyIEZlYiAyMDI2IDE2OjEyOjQ4IC0wODAwClN1YmplY3Q6IFtQQVRDSCB2NyA0LzhdIGlu c3RydW1lbnRhdGlvbjogQWRkIGFkZGl0aW9uYWwgcmVncmVzc2lvbiB0ZXN0cwogY292ZXJpbmcg YnVmZmVyIHVzYWdlCgpUaGlzIGFkZHMgcmVncmVzc2lvbiB0ZXN0cyB0aGF0IGNvdmVyIHNvbWUg b2YgdGhlIGV4cGVjdGVkIGJlaGF2aW91cgphcm91bmQgdGhlIGJ1ZmZlciBzdGF0aXN0aWNzIHJl cG9ydGVkIGluIEVYUExBSU4gQU5BTFlaRSwgc3BlY2lmaWNhbGx5CmhvdyB0aGV5IGJlaGF2ZSBp biBwYXJhbGxlbCBxdWVyeSwgbmVzdGVkIGZ1bmN0aW9uIGNhbGxzIGFuZCBhYm9ydApzaXR1YXRp b25zLgoKVGVzdGluZyB0aGlzIGlzIGNoYWxsZW5naW5nIGJlY2F1c2UgdGhlcmUgY2FuIGJlIGRp ZmZlcmVudCBzb3VyY2VzIG9mCmJ1ZmZlciBhY3Rpdml0eSwgc28gd2UgcmVseSBvbiB0ZW1wb3Jh cnkgdGFibGVzIHdoZXJlIHdlIGNhbiB0byBwcm92ZQp0aGF0IGFjdGl2aXR5IHdhcyBjYXB0dXJl ZCBhbmQgbm90IGxvc3QuIFRoaXMgc3VwcG9ydHMgYSBmdXR1cmUgY29tbWl0CnRoYXQgd2lsbCBy ZXdvcmsgc29tZSBvZiB0aGUgaW5zdHJ1bWVudGF0aW9uIGxvZ2ljIHRoYXQgY291bGQgY2F1c2UK YXJlYXMgY292ZXJlZCBieSB0aGVzZSB0ZXN0cyB0byBmYWlsLgoKQXV0aG9yOiBMdWthcyBGaXR0 bCA8bHVrYXNAZml0dGwuY29tPgpSZXZpZXdlZC1ieToKRGlzY3Vzc2lvbjoKLS0tCiAuLi4vcGdf c3RhdF9zdGF0ZW1lbnRzL2V4cGVjdGVkL3V0aWxpdHkub3V0ICAgfCAgNzAgKysrKysrKwogY29u dHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvZXhwZWN0ZWQvd2FsLm91dCAgIHwgIDQ4ICsrKysrCiBj b250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9zcWwvdXRpbGl0eS5zcWwgICAgfCAgNTYgKysrKysK IGNvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3NxbC93YWwuc3FsICAgICAgICB8ICAzMyArKysK IHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZXhwbGFpbi5vdXQgICAgICAgICB8IDE5NyArKysr KysrKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2V4cGxhaW4uc3FsICAgICAgICAg ICAgICB8IDE5NCArKysrKysrKysrKysrKysrKwogNiBmaWxlcyBjaGFuZ2VkLCA1OTggaW5zZXJ0 aW9ucygrKQoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL2V4cGVjdGVk L3V0aWxpdHkub3V0IGIvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvZXhwZWN0ZWQvdXRpbGl0 eS5vdXQKaW5kZXggZTRkNjU2NGVhNWIuLmNiYTQ4N2Y2YmU1IDEwMDY0NAotLS0gYS9jb250cmli L3BnX3N0YXRfc3RhdGVtZW50cy9leHBlY3RlZC91dGlsaXR5Lm91dAorKysgYi9jb250cmliL3Bn X3N0YXRfc3RhdGVtZW50cy9leHBlY3RlZC91dGlsaXR5Lm91dApAQCAtMjg5LDYgKzI4OSw3NiBA QCBTRUxFQ1QgY2FsbHMsIHJvd3MsIHF1ZXJ5IEZST00gcGdfc3RhdF9zdGF0ZW1lbnRzIE9SREVS IEJZIHF1ZXJ5IENPTExBVEUgIkMiOwogICAgICAxIHwgICAgMSB8IFNFTEVDVCBwZ19zdGF0X3N0 YXRlbWVudHNfcmVzZXQoKSBJUyBOT1QgTlVMTCBBUyB0CiAoMyByb3dzKQogCistLSBCdWZmZXIg c3RhdHMgc2hvdWxkIGZsb3cgdGhyb3VnaCBFWFBMQUlOIEFOQUxZWkUKK0NSRUFURSBURU1QIFRB QkxFIGZsb3dfdGhyb3VnaF90ZXN0IChhIGludCwgYiBjaGFyKDIwMCkpOworSU5TRVJUIElOVE8g Zmxvd190aHJvdWdoX3Rlc3QgU0VMRUNUIGksIHJlcGVhdCgneCcsIDIwMCkgRlJPTSBnZW5lcmF0 ZV9zZXJpZXMoMSwgNTAwMCkgQVMgaTsKK0NSRUFURSBGVU5DVElPTiBydW5fZXhwbGFpbl9idWZm ZXJzX3Rlc3QoKSBSRVRVUk5TIHZvaWQgQVMgJCQKK0RFQ0xBUkUKK0JFR0lOCisgICAgRVhFQ1VU RSAnRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUykgU0VMRUNUICogRlJPTSBmbG93X3Rocm91Z2hf dGVzdCc7CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBnc3FsOworU0VMRUNUIHBnX3N0YXRfc3RhdGVt ZW50c19yZXNldCgpIElTIE5PVCBOVUxMIEFTIHQ7CisgdCAKKy0tLQorIHQKKygxIHJvdykKKwor U0VMRUNUIHJ1bl9leHBsYWluX2J1ZmZlcnNfdGVzdCgpOworIHJ1bl9leHBsYWluX2J1ZmZlcnNf dGVzdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKKy0tIEVYUExB SU4gZW50cmllcyBzaG91bGQgaGF2ZSBub24temVybyBidWZmZXIgc3RhdHMKK1NFTEVDVCBxdWVy eSwgbG9jYWxfYmxrc19oaXQgKyBsb2NhbF9ibGtzX3JlYWQgPiAwIGFzIGhhc19idWZmZXJfc3Rh dHMKK0ZST00gcGdfc3RhdF9zdGF0ZW1lbnRzCitXSEVSRSBxdWVyeSBMSUtFICdTRUxFQ1QgcnVu X2V4cGxhaW5fYnVmZmVyc190ZXN0JScKK09SREVSIEJZIHF1ZXJ5IENPTExBVEUgIkMiOworICAg ICAgICAgICAgICAgcXVlcnkgICAgICAgICAgICAgICB8IGhhc19idWZmZXJfc3RhdHMgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyBTRUxF Q1QgcnVuX2V4cGxhaW5fYnVmZmVyc190ZXN0KCkgfCB0CisoMSByb3cpCisKK0RST1AgRlVOQ1RJ T04gcnVuX2V4cGxhaW5fYnVmZmVyc190ZXN0OworRFJPUCBUQUJMRSBmbG93X3Rocm91Z2hfdGVz dDsKKy0tIFZhbGlkYXRlIGJ1ZmZlci9XQUwgY291bnRpbmcgZHVyaW5nIGFib3J0CitTRVQgcGdf c3RhdF9zdGF0ZW1lbnRzLnRyYWNrID0gJ2FsbCc7CitDUkVBVEUgVEVNUCBUQUJMRSBwZ3NzX2Nh bGxfdGFiIChhIGludCwgYiBjaGFyKDIwKSk7CitDUkVBVEUgVEVNUCBUQUJMRSBwZ3NzX2NhbGxf dGFiMiAoYSBpbnQsIGIgY2hhcigyMCkpOworSU5TRVJUIElOVE8gcGdzc19jYWxsX3RhYiBWQUxV RVMgKDAsICd6enonKTsKK0NSRUFURSBQUk9DRURVUkUgcGdzc19jYWxsX3JvbGxiYWNrX3Byb2Mo KSBBUyAkJAorREVDTEFSRQorICAgIHYgaW50OworQkVHSU4KKyAgICBFWFBMQUlOIEFOQUxZWkUg V0lUSCBpbnMgQVMgKElOU0VSVCBJTlRPIHBnc3NfY2FsbF90YWIyIFNFTEVDVCAqIEZST00gcGdz c19jYWxsX3RhYiBSRVRVUk5JTkcgYSkKKyAgICBTRUxFQ1QgYSAvIDAgSU5UTyB2IEZST00gaW5z OworRVhDRVBUSU9OIFdIRU4gZGl2aXNpb25fYnlfemVybyBUSEVOCitFTkQ7CiskJCBMQU5HVUFH RSBwbHBnc3FsOworU0VMRUNUIHBnX3N0YXRfc3RhdGVtZW50c19yZXNldCgpIElTIE5PVCBOVUxM IEFTIHQ7CisgdCAKKy0tLQorIHQKKygxIHJvdykKKworQ0FMTCBwZ3NzX2NhbGxfcm9sbGJhY2tf cHJvYygpOworU0VMRUNUIHF1ZXJ5LCBjYWxscywKK2xvY2FsX2Jsa3NfaGl0ICsgbG9jYWxfYmxr c19yZWFkID4gMCBhcyBsb2NhbF9oaXRyZWFkLAord2FsX2J5dGVzID4gMCBhcyB3YWxfYnl0ZXNf Z2VuZXJhdGVkLAord2FsX3JlY29yZHMgPiAwIGFzIHdhbF9yZWNvcmRzX2dlbmVyYXRlZAorRlJP TSBwZ19zdGF0X3N0YXRlbWVudHMKK1dIRVJFIHF1ZXJ5IExJS0UgJyVwZ3NzX2NhbGxfcm9sbGJh Y2tfcHJvYyUnCitPUkRFUiBCWSBxdWVyeSBDT0xMQVRFICJDIjsKKyAgICAgICAgICAgICBxdWVy eSAgICAgICAgICAgICAgfCBjYWxscyB8IGxvY2FsX2hpdHJlYWQgfCB3YWxfYnl0ZXNfZ2VuZXJh dGVkIHwgd2FsX3JlY29yZHNfZ2VuZXJhdGVkIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgQ0FMTCBwZ3NzX2NhbGxfcm9sbGJhY2tfcHJvYygpIHwgICAg IDEgfCB0ICAgICAgICAgICAgIHwgdCAgICAgICAgICAgICAgICAgICB8IHQKKygxIHJvdykKKwor RFJPUCBUQUJMRSBwZ3NzX2NhbGxfdGFiMjsKK0RST1AgVEFCTEUgcGdzc19jYWxsX3RhYjsKK0RS T1AgUFJPQ0VEVVJFIHBnc3NfY2FsbF9yb2xsYmFja19wcm9jOworU0VUIHBnX3N0YXRfc3RhdGVt ZW50cy50cmFjayA9ICd0b3AnOwogLS0gQ0FMTAogQ1JFQVRFIE9SIFJFUExBQ0UgUFJPQ0VEVVJF IHN1bV9vbmUoaSBpbnQpIEFTICQkCiBERUNMQVJFCmRpZmYgLS1naXQgYS9jb250cmliL3BnX3N0 YXRfc3RhdGVtZW50cy9leHBlY3RlZC93YWwub3V0IGIvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVu dHMvZXhwZWN0ZWQvd2FsLm91dAppbmRleCA5NzdlMzgyZDg0OC4uNjExMjEzZGFlZjYgMTAwNjQ0 Ci0tLSBhL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL2V4cGVjdGVkL3dhbC5vdXQKKysrIGIv Y29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvZXhwZWN0ZWQvd2FsLm91dApAQCAtMjgsMyArMjgs NTEgQEAgU0VMRUNUIHBnX3N0YXRfc3RhdGVtZW50c19yZXNldCgpIElTIE5PVCBOVUxMIEFTIHQ7 CiAgdAogKDEgcm93KQogCistLQorLS0gVmFsaWRhdGUgYnVmZmVyL1dBTCBjb3VudGluZyB3aXRo IGNhdWdodCBleGNlcHRpb24gaW4gUEwvcGdTUUwKKy0tCitDUkVBVEUgVEVNUCBUQUJMRSBwZ3Nz X2Vycm9yX3RhYiAoYSBpbnQsIGIgY2hhcigyMCkpOworSU5TRVJUIElOVE8gcGdzc19lcnJvcl90 YWIgVkFMVUVTICgwLCAnenp6Jyk7CitDUkVBVEUgRlVOQ1RJT04gcGdzc19lcnJvcl9mdW5jKCkg UkVUVVJOUyB2b2lkIEFTICQkCitERUNMQVJFCisgICAgdiBpbnQ7CitCRUdJTgorICAgIFdJVEgg aW5zIEFTIChJTlNFUlQgSU5UTyBwZ3NzX2Vycm9yX3RhYiBWQUxVRVMgKDEsICdhYWEnKSBSRVRV Uk5JTkcgYSkKKyAgICBTRUxFQ1QgYSAvIDAgSU5UTyB2IEZST00gaW5zOworRVhDRVBUSU9OIFdI RU4gZGl2aXNpb25fYnlfemVybyBUSEVOCisgICAgTlVMTDsKK0VORDsKKyQkIExBTkdVQUdFIHBs cGdzcWw7CitTRUxFQ1QgcGdfc3RhdF9zdGF0ZW1lbnRzX3Jlc2V0KCkgSVMgTk9UIE5VTEwgQVMg dDsKKyB0IAorLS0tCisgdAorKDEgcm93KQorCitTRUxFQ1QgcGdzc19lcnJvcl9mdW5jKCk7Cisg cGdzc19lcnJvcl9mdW5jIAorLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworLS0gQnVm ZmVyL1dBTCB1c2FnZSBmcm9tIHRoZSB3Q1RFIElOU0VSVCBzaG91bGQgc3Vydml2ZSB0aGUgZXhj ZXB0aW9uCitTRUxFQ1QgcXVlcnksIGNhbGxzLAorbG9jYWxfYmxrc19oaXQgKyBsb2NhbF9ibGtz X3JlYWQgPiAwIGFzIGxvY2FsX2hpdHJlYWQsCit3YWxfYnl0ZXMgPiAwIGFzIHdhbF9ieXRlc19n ZW5lcmF0ZWQsCit3YWxfcmVjb3JkcyA+IDAgYXMgd2FsX3JlY29yZHNfZ2VuZXJhdGVkCitGUk9N IHBnX3N0YXRfc3RhdGVtZW50cworV0hFUkUgcXVlcnkgTElLRSAnJXBnc3NfZXJyb3JfZnVuYyUn CitPUkRFUiBCWSBxdWVyeSBDT0xMQVRFICJDIjsKKyAgICAgICAgICBxdWVyeSAgICAgICAgICAg fCBjYWxscyB8IGxvY2FsX2hpdHJlYWQgfCB3YWxfYnl0ZXNfZ2VuZXJhdGVkIHwgd2FsX3JlY29y ZHNfZ2VuZXJhdGVkIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg U0VMRUNUIHBnc3NfZXJyb3JfZnVuYygpIHwgICAgIDEgfCB0ICAgICAgICAgICAgIHwgdCAgICAg ICAgICAgICAgICAgICB8IHQKKygxIHJvdykKKworRFJPUCBUQUJMRSBwZ3NzX2Vycm9yX3RhYjsK K0RST1AgRlVOQ1RJT04gcGdzc19lcnJvcl9mdW5jOworU0VMRUNUIHBnX3N0YXRfc3RhdGVtZW50 c19yZXNldCgpIElTIE5PVCBOVUxMIEFTIHQ7CisgdCAKKy0tLQorIHQKKygxIHJvdykKKwpkaWZm IC0tZ2l0IGEvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvc3FsL3V0aWxpdHkuc3FsIGIvY29u dHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvc3FsL3V0aWxpdHkuc3FsCmluZGV4IGRkOTcyMDNjMjEw Li43NTQwZTQ5YzczYyAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvc3Fs L3V0aWxpdHkuc3FsCisrKyBiL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3NxbC91dGlsaXR5 LnNxbApAQCAtMTUyLDYgKzE1Miw2MiBAQCBFWFBMQUlOIChjb3N0cyBvZmYpIFNFTEVDVCBhIEZS T00gZ2VuZXJhdGVfc2VyaWVzKDEsMTApIEFTIHRhYihhKSBXSEVSRSBhID0gNzsKIAogU0VMRUNU IGNhbGxzLCByb3dzLCBxdWVyeSBGUk9NIHBnX3N0YXRfc3RhdGVtZW50cyBPUkRFUiBCWSBxdWVy eSBDT0xMQVRFICJDIjsKIAorLS0gQnVmZmVyIHN0YXRzIHNob3VsZCBmbG93IHRocm91Z2ggRVhQ TEFJTiBBTkFMWVpFCitDUkVBVEUgVEVNUCBUQUJMRSBmbG93X3Rocm91Z2hfdGVzdCAoYSBpbnQs IGIgY2hhcigyMDApKTsKK0lOU0VSVCBJTlRPIGZsb3dfdGhyb3VnaF90ZXN0IFNFTEVDVCBpLCBy ZXBlYXQoJ3gnLCAyMDApIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMDApIEFTIGk7CisKK0NS RUFURSBGVU5DVElPTiBydW5fZXhwbGFpbl9idWZmZXJzX3Rlc3QoKSBSRVRVUk5TIHZvaWQgQVMg JCQKK0RFQ0xBUkUKK0JFR0lOCisgICAgRVhFQ1VURSAnRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVS UykgU0VMRUNUICogRlJPTSBmbG93X3Rocm91Z2hfdGVzdCc7CitFTkQ7CiskJCBMQU5HVUFHRSBw bHBnc3FsOworCitTRUxFQ1QgcGdfc3RhdF9zdGF0ZW1lbnRzX3Jlc2V0KCkgSVMgTk9UIE5VTEwg QVMgdDsKKworU0VMRUNUIHJ1bl9leHBsYWluX2J1ZmZlcnNfdGVzdCgpOworCistLSBFWFBMQUlO IGVudHJpZXMgc2hvdWxkIGhhdmUgbm9uLXplcm8gYnVmZmVyIHN0YXRzCitTRUxFQ1QgcXVlcnks IGxvY2FsX2Jsa3NfaGl0ICsgbG9jYWxfYmxrc19yZWFkID4gMCBhcyBoYXNfYnVmZmVyX3N0YXRz CitGUk9NIHBnX3N0YXRfc3RhdGVtZW50cworV0hFUkUgcXVlcnkgTElLRSAnU0VMRUNUIHJ1bl9l eHBsYWluX2J1ZmZlcnNfdGVzdCUnCitPUkRFUiBCWSBxdWVyeSBDT0xMQVRFICJDIjsKKworRFJP UCBGVU5DVElPTiBydW5fZXhwbGFpbl9idWZmZXJzX3Rlc3Q7CitEUk9QIFRBQkxFIGZsb3dfdGhy b3VnaF90ZXN0OworCistLSBWYWxpZGF0ZSBidWZmZXIvV0FMIGNvdW50aW5nIGR1cmluZyBhYm9y dAorU0VUIHBnX3N0YXRfc3RhdGVtZW50cy50cmFjayA9ICdhbGwnOworQ1JFQVRFIFRFTVAgVEFC TEUgcGdzc19jYWxsX3RhYiAoYSBpbnQsIGIgY2hhcigyMCkpOworQ1JFQVRFIFRFTVAgVEFCTEUg cGdzc19jYWxsX3RhYjIgKGEgaW50LCBiIGNoYXIoMjApKTsKK0lOU0VSVCBJTlRPIHBnc3NfY2Fs bF90YWIgVkFMVUVTICgwLCAnenp6Jyk7CisKK0NSRUFURSBQUk9DRURVUkUgcGdzc19jYWxsX3Jv bGxiYWNrX3Byb2MoKSBBUyAkJAorREVDTEFSRQorICAgIHYgaW50OworQkVHSU4KKyAgICBFWFBM QUlOIEFOQUxZWkUgV0lUSCBpbnMgQVMgKElOU0VSVCBJTlRPIHBnc3NfY2FsbF90YWIyIFNFTEVD VCAqIEZST00gcGdzc19jYWxsX3RhYiBSRVRVUk5JTkcgYSkKKyAgICBTRUxFQ1QgYSAvIDAgSU5U TyB2IEZST00gaW5zOworRVhDRVBUSU9OIFdIRU4gZGl2aXNpb25fYnlfemVybyBUSEVOCitFTkQ7 CiskJCBMQU5HVUFHRSBwbHBnc3FsOworCitTRUxFQ1QgcGdfc3RhdF9zdGF0ZW1lbnRzX3Jlc2V0 KCkgSVMgTk9UIE5VTEwgQVMgdDsKK0NBTEwgcGdzc19jYWxsX3JvbGxiYWNrX3Byb2MoKTsKKwor U0VMRUNUIHF1ZXJ5LCBjYWxscywKK2xvY2FsX2Jsa3NfaGl0ICsgbG9jYWxfYmxrc19yZWFkID4g MCBhcyBsb2NhbF9oaXRyZWFkLAord2FsX2J5dGVzID4gMCBhcyB3YWxfYnl0ZXNfZ2VuZXJhdGVk LAord2FsX3JlY29yZHMgPiAwIGFzIHdhbF9yZWNvcmRzX2dlbmVyYXRlZAorRlJPTSBwZ19zdGF0 X3N0YXRlbWVudHMKK1dIRVJFIHF1ZXJ5IExJS0UgJyVwZ3NzX2NhbGxfcm9sbGJhY2tfcHJvYyUn CitPUkRFUiBCWSBxdWVyeSBDT0xMQVRFICJDIjsKKworRFJPUCBUQUJMRSBwZ3NzX2NhbGxfdGFi MjsKK0RST1AgVEFCTEUgcGdzc19jYWxsX3RhYjsKK0RST1AgUFJPQ0VEVVJFIHBnc3NfY2FsbF9y b2xsYmFja19wcm9jOworU0VUIHBnX3N0YXRfc3RhdGVtZW50cy50cmFjayA9ICd0b3AnOworCiAt LSBDQUxMCiBDUkVBVEUgT1IgUkVQTEFDRSBQUk9DRURVUkUgc3VtX29uZShpIGludCkgQVMgJCQK IERFQ0xBUkUKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3NxbC93YWwu c3FsIGIvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvc3FsL3dhbC5zcWwKaW5kZXggMWRjMTU1 MmE4MWUuLjQ2N2UzMjFiMjA2IDEwMDY0NAotLS0gYS9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50 cy9zcWwvd2FsLnNxbAorKysgYi9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9zcWwvd2FsLnNx bApAQCAtMTgsMyArMTgsMzYgQEAgd2FsX3JlY29yZHMgPiAwIGFzIHdhbF9yZWNvcmRzX2dlbmVy YXRlZCwKIHdhbF9yZWNvcmRzID49IHJvd3MgYXMgd2FsX3JlY29yZHNfZ2Vfcm93cwogRlJPTSBw Z19zdGF0X3N0YXRlbWVudHMgT1JERVIgQlkgcXVlcnkgQ09MTEFURSAiQyI7CiBTRUxFQ1QgcGdf c3RhdF9zdGF0ZW1lbnRzX3Jlc2V0KCkgSVMgTk9UIE5VTEwgQVMgdDsKKworLS0KKy0tIFZhbGlk YXRlIGJ1ZmZlci9XQUwgY291bnRpbmcgd2l0aCBjYXVnaHQgZXhjZXB0aW9uIGluIFBML3BnU1FM CistLQorQ1JFQVRFIFRFTVAgVEFCTEUgcGdzc19lcnJvcl90YWIgKGEgaW50LCBiIGNoYXIoMjAp KTsKK0lOU0VSVCBJTlRPIHBnc3NfZXJyb3JfdGFiIFZBTFVFUyAoMCwgJ3p6eicpOworCitDUkVB VEUgRlVOQ1RJT04gcGdzc19lcnJvcl9mdW5jKCkgUkVUVVJOUyB2b2lkIEFTICQkCitERUNMQVJF CisgICAgdiBpbnQ7CitCRUdJTgorICAgIFdJVEggaW5zIEFTIChJTlNFUlQgSU5UTyBwZ3NzX2Vy cm9yX3RhYiBWQUxVRVMgKDEsICdhYWEnKSBSRVRVUk5JTkcgYSkKKyAgICBTRUxFQ1QgYSAvIDAg SU5UTyB2IEZST00gaW5zOworRVhDRVBUSU9OIFdIRU4gZGl2aXNpb25fYnlfemVybyBUSEVOCisg ICAgTlVMTDsKK0VORDsKKyQkIExBTkdVQUdFIHBscGdzcWw7CisKK1NFTEVDVCBwZ19zdGF0X3N0 YXRlbWVudHNfcmVzZXQoKSBJUyBOT1QgTlVMTCBBUyB0OworU0VMRUNUIHBnc3NfZXJyb3JfZnVu YygpOworCistLSBCdWZmZXIvV0FMIHVzYWdlIGZyb20gdGhlIHdDVEUgSU5TRVJUIHNob3VsZCBz dXJ2aXZlIHRoZSBleGNlcHRpb24KK1NFTEVDVCBxdWVyeSwgY2FsbHMsCitsb2NhbF9ibGtzX2hp dCArIGxvY2FsX2Jsa3NfcmVhZCA+IDAgYXMgbG9jYWxfaGl0cmVhZCwKK3dhbF9ieXRlcyA+IDAg YXMgd2FsX2J5dGVzX2dlbmVyYXRlZCwKK3dhbF9yZWNvcmRzID4gMCBhcyB3YWxfcmVjb3Jkc19n ZW5lcmF0ZWQKK0ZST00gcGdfc3RhdF9zdGF0ZW1lbnRzCitXSEVSRSBxdWVyeSBMSUtFICclcGdz c19lcnJvcl9mdW5jJScKK09SREVSIEJZIHF1ZXJ5IENPTExBVEUgIkMiOworCitEUk9QIFRBQkxF IHBnc3NfZXJyb3JfdGFiOworRFJPUCBGVU5DVElPTiBwZ3NzX2Vycm9yX2Z1bmM7CitTRUxFQ1Qg cGdfc3RhdF9zdGF0ZW1lbnRzX3Jlc2V0KCkgSVMgTk9UIE5VTEwgQVMgdDsKZGlmZiAtLWdpdCBh L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZXhwbGFpbi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL2V4cGxhaW4ub3V0CmluZGV4IDdjMWYyNmIxODJjLi5lMjhlNzU0MzY5MyAxMDA2 NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9leHBsYWluLm91dAorKysgYi9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL2V4cGxhaW4ub3V0CkBAIC04MjIsMyArODIyLDIwMCBAQCBz ZWxlY3QgZXhwbGFpbl9maWx0ZXIoJ2V4cGxhaW4gKGFuYWx5emUsYnVmZmVycyBvZmYsY29zdHMg b2ZmKSBzZWxlY3Qgc3VtKG4pIG92ZQogKDkgcm93cykKIAogcmVzZXQgd29ya19tZW07CistLSBF WFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTKSBzaG91bGQgcmVwb3J0IGJ1ZmZlciB1c2FnZSBmcm9t IFBML3BnU1FMCistLSBFWENFUFRJT04gYmxvY2tzLCBldmVuIGFmdGVyIHN1YnRyYW5zYWN0aW9u IHJvbGxiYWNrLgorQ1JFQVRFIFRFTVAgVEFCTEUgZXhwbGFpbl9leGNfdGFiIChhIGludCwgYiBj aGFyKDIwKSk7CitJTlNFUlQgSU5UTyBleHBsYWluX2V4Y190YWIgVkFMVUVTICgwLCAnenp6Jyk7 CitDUkVBVEUgRlVOQ1RJT04gZXhwbGFpbl9leGNfZnVuYygpIFJFVFVSTlMgdm9pZCBBUyAkJAor REVDTEFSRQorICAgIHYgaW50OworQkVHSU4KKyAgICBXSVRIIGlucyBBUyAoSU5TRVJUIElOVE8g ZXhwbGFpbl9leGNfdGFiIFZBTFVFUyAoMSwgJ2FhYScpIFJFVFVSTklORyBhKQorICAgIFNFTEVD VCBhIC8gMCBJTlRPIHYgRlJPTSBpbnM7CitFWENFUFRJT04gV0hFTiBkaXZpc2lvbl9ieV96ZXJv IFRIRU4KKyAgICBOVUxMOworRU5EOworJCQgTEFOR1VBR0UgcGxwZ3NxbDsKK0NSRUFURSBGVU5D VElPTiBjaGVja19leHBsYWluX2V4Y2VwdGlvbl9idWZmZXJzKCkgUkVUVVJOUyBib29sZWFuIEFT ICQkCitERUNMQVJFCisgICAgcGxhbl9qc29uIGpzb247CisgICAgbm9kZSBqc29uOworICAgIHRv dGFsX2J1ZmZlcnMgaW50OworQkVHSU4KKyAgICBFWEVDVVRFICdFWFBMQUlOIChBTkFMWVpFLCBC VUZGRVJTLCBDT1NUUyBPRkYsIEZPUk1BVCBKU09OKQorICAgICAgICBTRUxFQ1QgZXhwbGFpbl9l eGNfZnVuYygpJyBJTlRPIHBsYW5fanNvbjsKKyAgICBub2RlIDo9IHBsYW5fanNvbi0+MC0+J1Bs YW4nOworICAgIHRvdGFsX2J1ZmZlcnMgOj0KKyAgICAgICAgQ09BTEVTQ0UoKG5vZGUtPj4nTG9j YWwgSGl0IEJsb2NrcycpOjppbnQsIDApICsKKyAgICAgICAgQ09BTEVTQ0UoKG5vZGUtPj4nTG9j YWwgUmVhZCBCbG9ja3MnKTo6aW50LCAwKTsKKyAgICBSRVRVUk4gdG90YWxfYnVmZmVycyA+IDA7 CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBnc3FsOworU0VMRUNUIGNoZWNrX2V4cGxhaW5fZXhjZXB0 aW9uX2J1ZmZlcnMoKSBBUyBleGNlcHRpb25fYnVmZmVyc192aXNpYmxlOworIGV4Y2VwdGlvbl9i dWZmZXJzX3Zpc2libGUgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0CisoMSByb3cp CisKKy0tIEFsc28gdGVzdCB3aXRoIG5lc3RlZCBFWFBMQUlOIEFOQUxZWkUgKHR3byBsZXZlbHMg b2YgaW5zdHJ1bWVudGF0aW9uKQorQ1JFQVRFIEZVTkNUSU9OIGNoZWNrX2V4cGxhaW5fZXhjZXB0 aW9uX2J1ZmZlcnNfbmVzdGVkKCkgUkVUVVJOUyBib29sZWFuIEFTICQkCitERUNMQVJFCisgICAg cGxhbl9qc29uIGpzb247CisgICAgbm9kZSBqc29uOworICAgIHRvdGFsX2J1ZmZlcnMgaW50Owor QkVHSU4KKyAgICBFWEVDVVRFICdFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTLCBDT1NUUyBPRkYs IEZPUk1BVCBKU09OKQorICAgICAgICBTRUxFQ1QgY2hlY2tfZXhwbGFpbl9leGNlcHRpb25fYnVm ZmVycygpJyBJTlRPIHBsYW5fanNvbjsKKyAgICBub2RlIDo9IHBsYW5fanNvbi0+MC0+J1BsYW4n OworICAgIHRvdGFsX2J1ZmZlcnMgOj0KKyAgICAgICAgQ09BTEVTQ0UoKG5vZGUtPj4nTG9jYWwg SGl0IEJsb2NrcycpOjppbnQsIDApICsKKyAgICAgICAgQ09BTEVTQ0UoKG5vZGUtPj4nTG9jYWwg UmVhZCBCbG9ja3MnKTo6aW50LCAwKTsKKyAgICBSRVRVUk4gdG90YWxfYnVmZmVycyA+IDA7CitF TkQ7CiskJCBMQU5HVUFHRSBwbHBnc3FsOworU0VMRUNUIGNoZWNrX2V4cGxhaW5fZXhjZXB0aW9u X2J1ZmZlcnNfbmVzdGVkKCkgQVMgZXhjZXB0aW9uX2J1ZmZlcnNfbmVzdGVkX3Zpc2libGU7Cisg ZXhjZXB0aW9uX2J1ZmZlcnNfbmVzdGVkX3Zpc2libGUgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCitEUk9QIEZVTkNUSU9OIGNoZWNrX2V4cGxhaW5f ZXhjZXB0aW9uX2J1ZmZlcnNfbmVzdGVkOworRFJPUCBGVU5DVElPTiBjaGVja19leHBsYWluX2V4 Y2VwdGlvbl9idWZmZXJzOworRFJPUCBGVU5DVElPTiBleHBsYWluX2V4Y19mdW5jOworRFJPUCBU QUJMRSBleHBsYWluX2V4Y190YWI7CistLSBDdXJzb3IgaW5zdHJ1bWVudGF0aW9uIHRlc3QuCist LSBWZXJpZnkgdGhhdCBidWZmZXIgdXNhZ2UgaXMgY29ycmVjdGx5IHRyYWNrZWQgdGhyb3VnaCBj dXJzb3IgZXhlY3V0aW9uIHBhdGhzLgorLS0gTm9uLXNjcm9sbGFibGUgY3Vyc29ycyBleGVyY2lz ZSBFeGVjU2h1dGRvd25Ob2RlIGFmdGVyIGVhY2ggRXhlY3V0b3JSdW4KKy0tIChFWEVDX0ZMQUdf QkFDS1dBUkQgaXMgbm90IHNldCksIHdoaWxlIHNjcm9sbGFibGUgY3Vyc29ycyBvbmx5IHNodXQg ZG93bgorLS0gbm9kZXMgaW4gRXhlY3V0b3JGaW5pc2guIEluIGJvdGggY2FzZXMsIGJ1ZmZlciB1 c2FnZSBmcm9tIHRoZSBpbm5lciBjdXJzb3IKKy0tIHNjYW4gc2hvdWxkIGJlIGNvcnJlY3RseSBh Y2N1bXVsYXRlZC4KK0NSRUFURSBURU1QIFRBQkxFIGN1cnNvcl9idWZfdGVzdCBBUyBTRUxFQ1Qg KiBGUk9NIHRlbmsxOworQ1JFQVRFIEZVTkNUSU9OIGN1cnNvcl9ub3Njcm9sbF9zY2FuKCkgUkVU VVJOUyBiaWdpbnQgQVMgJCQKK0RFQ0xBUkUKKyAgICBjdXIgTk8gU0NST0xMIENVUlNPUiBGT1Ig U0VMRUNUICogRlJPTSBjdXJzb3JfYnVmX3Rlc3Q7CisgICAgcmVjIFJFQ09SRDsKKyAgICBjbnQg YmlnaW50IDo9IDA7CitCRUdJTgorICAgIE9QRU4gY3VyOworICAgIExPT1AKKyAgICAgICAgRkVU Q0ggTkVYVCBGUk9NIGN1ciBJTlRPIHJlYzsKKyAgICAgICAgRVhJVCBXSEVOIE5PVCBGT1VORDsK KyAgICAgICAgY250IDo9IGNudCArIDE7CisgICAgRU5EIExPT1A7CisgICAgQ0xPU0UgY3VyOwor ICAgIFJFVFVSTiBjbnQ7CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBnc3FsOworQ1JFQVRFIEZVTkNU SU9OIGN1cnNvcl9zY3JvbGxfc2NhbigpIFJFVFVSTlMgYmlnaW50IEFTICQkCitERUNMQVJFCisg ICAgY3VyIFNDUk9MTCBDVVJTT1IgRk9SIFNFTEVDVCAqIEZST00gY3Vyc29yX2J1Zl90ZXN0Owor ICAgIHJlYyBSRUNPUkQ7CisgICAgY250IGJpZ2ludCA6PSAwOworQkVHSU4KKyAgICBPUEVOIGN1 cjsKKyAgICBMT09QCisgICAgICAgIEZFVENIIE5FWFQgRlJPTSBjdXIgSU5UTyByZWM7CisgICAg ICAgIEVYSVQgV0hFTiBOT1QgRk9VTkQ7CisgICAgICAgIGNudCA6PSBjbnQgKyAxOworICAgIEVO RCBMT09QOworICAgIENMT1NFIGN1cjsKKyAgICBSRVRVUk4gY250OworRU5EOworJCQgTEFOR1VB R0UgcGxwZ3NxbDsKK0NSRUFURSBGVU5DVElPTiBjaGVja19jdXJzb3JfZXhwbGFpbl9idWZmZXJz KCkgUkVUVVJOUyBUQUJMRShub3Njcm9sbF9vayBib29sZWFuLCBzY3JvbGxfb2sgYm9vbGVhbikg QVMgJCQKK0RFQ0xBUkUKKyAgICBwbGFuX2pzb24ganNvbjsKKyAgICBub2RlIGpzb247CisgICAg ZGlyZWN0X2J1ZiBpbnQ7CisgICAgbm9zY3JvbGxfYnVmIGludDsKKyAgICBzY3JvbGxfYnVmIGlu dDsKK0JFR0lOCisgICAgLS0gRGlyZWN0IHNjYW46IGdldCBsZWFmIFNlcSBTY2FuIG5vZGUgYnVm ZmVycyBhcyBiYXNlbGluZQorICAgIEVYRUNVVEUgJ0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMs IENPU1RTIE9GRiwgRk9STUFUIEpTT04pCisgICAgICAgIFNFTEVDVCAqIEZST00gY3Vyc29yX2J1 Zl90ZXN0JyBJTlRPIHBsYW5fanNvbjsKKyAgICBub2RlIDo9IHBsYW5fanNvbi0+MC0+J1BsYW4n OworICAgIFdISUxFIG5vZGUtPidQbGFucycgSVMgTk9UIE5VTEwgTE9PUAorICAgICAgICBub2Rl IDo9IG5vZGUtPidQbGFucyctPjA7CisgICAgRU5EIExPT1A7CisgICAgZGlyZWN0X2J1ZiA6PQor ICAgICAgICBDT0FMRVNDRSgobm9kZS0+PidMb2NhbCBIaXQgQmxvY2tzJyk6OmludCwgMCkgKwor ICAgICAgICBDT0FMRVNDRSgobm9kZS0+PidMb2NhbCBSZWFkIEJsb2NrcycpOjppbnQsIDApOwor CisgICAgLS0gTm9uLXNjcm9sbGFibGUgY3Vyc29yIHBhdGg6IEV4ZWNTaHV0ZG93bk5vZGUgcnVu cyBhZnRlciBlYWNoIEV4ZWN1dG9yUnVuCisgICAgRVhFQ1VURSAnRVhQTEFJTiAoQU5BTFlaRSwg QlVGRkVSUywgQ09TVFMgT0ZGLCBGT1JNQVQgSlNPTikKKyAgICAgICAgU0VMRUNUIGN1cnNvcl9u b3Njcm9sbF9zY2FuKCknIElOVE8gcGxhbl9qc29uOworICAgIG5vZGUgOj0gcGxhbl9qc29uLT4w LT4nUGxhbic7CisgICAgbm9zY3JvbGxfYnVmIDo9CisgICAgICAgIENPQUxFU0NFKChub2RlLT4+ J0xvY2FsIEhpdCBCbG9ja3MnKTo6aW50LCAwKSArCisgICAgICAgIENPQUxFU0NFKChub2RlLT4+ J0xvY2FsIFJlYWQgQmxvY2tzJyk6OmludCwgMCk7CisKKyAgICAtLSBTY3JvbGxhYmxlIGN1cnNv ciBwYXRoOiBFeGVjU2h1dGRvd25Ob2RlIGlzIHNraXBwZWQKKyAgICBFWEVDVVRFICdFWFBMQUlO IChBTkFMWVpFLCBCVUZGRVJTLCBDT1NUUyBPRkYsIEZPUk1BVCBKU09OKQorICAgICAgICBTRUxF Q1QgY3Vyc29yX3Njcm9sbF9zY2FuKCknIElOVE8gcGxhbl9qc29uOworICAgIG5vZGUgOj0gcGxh bl9qc29uLT4wLT4nUGxhbic7CisgICAgc2Nyb2xsX2J1ZiA6PQorICAgICAgICBDT0FMRVNDRSgo bm9kZS0+PidMb2NhbCBIaXQgQmxvY2tzJyk6OmludCwgMCkgKworICAgICAgICBDT0FMRVNDRSgo bm9kZS0+PidMb2NhbCBSZWFkIEJsb2NrcycpOjppbnQsIDApOworCisgICAgLS0gQm90aCBjdXJz b3IgcGF0aHMgc2hvdWxkIHJlcG9ydCBidWZmZXIgY291bnRzIGFib3V0IGFzIGhpZ2ggYXMKKyAg ICAtLSB0aGUgZGlyZWN0IHNjYW4gKHNhbWUgZGF0YSBwbHVzIG1pbm9yIGNhdGFsb2cgb3Zlcmhl YWQpLCBhbmQgbm90CisgICAgLS0gZG91YmxlLWNvdW50ZWQgKDwgMnggdGhlIGRpcmVjdCBzY2Fu KQorICAgIFJFVFVSTiBRVUVSWSBTRUxFQ1QKKyAgICAgICAgKG5vc2Nyb2xsX2J1ZiA+PSBkaXJl Y3RfYnVmICogMC41IEFORCBub3Njcm9sbF9idWYgPCBkaXJlY3RfYnVmICogMiksCisgICAgICAg IChzY3JvbGxfYnVmID49IGRpcmVjdF9idWYgKiAwLjUgQU5EIHNjcm9sbF9idWYgPCBkaXJlY3Rf YnVmICogMik7CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBnc3FsOworU0VMRUNUICogRlJPTSBjaGVj a19jdXJzb3JfZXhwbGFpbl9idWZmZXJzKCk7Cisgbm9zY3JvbGxfb2sgfCBzY3JvbGxfb2sgCist LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgdCAgICAgICAgICAgfCB0CisoMSByb3cpCisKK0RS T1AgRlVOQ1RJT04gY2hlY2tfY3Vyc29yX2V4cGxhaW5fYnVmZmVyczsKK0RST1AgRlVOQ1RJT04g Y3Vyc29yX25vc2Nyb2xsX3NjYW47CitEUk9QIEZVTkNUSU9OIGN1cnNvcl9zY3JvbGxfc2NhbjsK K0RST1AgVEFCTEUgY3Vyc29yX2J1Zl90ZXN0OworLS0gUGFyYWxsZWwgcXVlcnkgYnVmZmVyIGRv dWJsZS1jb3VudGluZyB0ZXN0LgorLS0KKy0tIENvbXBhcmVzIHNlcmlhbCBTZXEgU2NhbiBidWZm ZXJzIHZzIHBhcmFsbGVsIFNlcSBTY2FuIGJ1ZmZlcnMuCistLSBUaGV5IHNjYW4gdGhlIHNhbWUg dGFibGUgc28gdGhlIGJ1ZmZlciBjb3VudCBzaG91bGQgYmUgc2ltaWxhci4KKy0tIERvdWJsZS1j b3VudGluZyB3b3VsZCBtYWtlIHRoZSBwYXJhbGxlbCBjb3VudCB+MnggbGFyZ2VyLgorQ1JFQVRF IEZVTkNUSU9OIGNoZWNrX3BhcmFsbGVsX2V4cGxhaW5fYnVmZmVycygpIFJFVFVSTlMgVEFCTEUo cmF0aW8gbnVtZXJpYykgQVMgJCQKK0RFQ0xBUkUKKyAgICBwbGFuX2pzb24ganNvbjsKKyAgICBz ZXJpYWxfYnVmZmVycyBpbnQ7CisgICAgcGFyYWxsZWxfYnVmZmVycyBpbnQ7CisgICAgbm9kZSBq c29uOworQkVHSU4KKyAgICAtLSBTZXJpYWwgLS0KKyAgICBTRVQgTE9DQUwgbWF4X3BhcmFsbGVs X3dvcmtlcnNfcGVyX2dhdGhlciA9IDA7CisgICAgRVhFQ1VURSAnRVhQTEFJTiAoQU5BTFlaRSwg QlVGRkVSUywgQ09TVFMgT0ZGLCBGT1JNQVQgSlNPTikKKyAgICAgICAgU0VMRUNUIGNvdW50KCop IEZST00gdGVuazEnIElOVE8gcGxhbl9qc29uOworICAgIG5vZGUgOj0gcGxhbl9qc29uLT4wLT4n UGxhbic7CisgICAgc2VyaWFsX2J1ZmZlcnMgOj0KKyAgICAgICAgQ09BTEVTQ0UoKG5vZGUtPj4n U2hhcmVkIEhpdCBCbG9ja3MnKTo6aW50LCAwKSArCisgICAgICAgIENPQUxFU0NFKChub2RlLT4+ J1NoYXJlZCBSZWFkIEJsb2NrcycpOjppbnQsIDApOworCisgICAgLS0gUGFyYWxsZWwgLS0KKyAg ICBTRVQgTE9DQUwgcGFyYWxsZWxfc2V0dXBfY29zdCA9IDA7CisgICAgU0VUIExPQ0FMIHBhcmFs bGVsX3R1cGxlX2Nvc3QgPSAwOworICAgIFNFVCBMT0NBTCBtaW5fcGFyYWxsZWxfdGFibGVfc2Nh bl9zaXplID0gMDsKKyAgICBTRVQgTE9DQUwgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhl ciA9IDI7CisgICAgU0VUIExPQ0FMIHBhcmFsbGVsX2xlYWRlcl9wYXJ0aWNpcGF0aW9uID0gb2Zm OworICAgIEVYRUNVVEUgJ0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMsIENPU1RTIE9GRiwgRk9S TUFUIEpTT04pCisgICAgICAgIFNFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxJyBJTlRPIHBsYW5f anNvbjsKKyAgICBub2RlIDo9IHBsYW5fanNvbi0+MC0+J1BsYW4nOworICAgIHBhcmFsbGVsX2J1 ZmZlcnMgOj0KKyAgICAgICAgQ09BTEVTQ0UoKG5vZGUtPj4nU2hhcmVkIEhpdCBCbG9ja3MnKTo6 aW50LCAwKSArCisgICAgICAgIENPQUxFU0NFKChub2RlLT4+J1NoYXJlZCBSZWFkIEJsb2Nrcycp OjppbnQsIDApOworCisgICAgUkVUVVJOIFFVRVJZIFNFTEVDVCByb3VuZChwYXJhbGxlbF9idWZm ZXJzOjpudW1lcmljIC8gR1JFQVRFU1Qoc2VyaWFsX2J1ZmZlcnMsIDEpKTsKK0VORDsKKyQkIExB TkdVQUdFIHBscGdzcWw7CitTRUxFQ1QgKiBGUk9NIGNoZWNrX3BhcmFsbGVsX2V4cGxhaW5fYnVm ZmVycygpOworIHJhdGlvIAorLS0tLS0tLQorICAgICAxCisoMSByb3cpCisKK0RST1AgRlVOQ1RJ T04gY2hlY2tfcGFyYWxsZWxfZXhwbGFpbl9idWZmZXJzOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvZXhwbGFpbi5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9leHBsYWluLnNx bAppbmRleCBlYmRhYjQyNjA0Yi4uY2Y1YzYzMzVhMTkgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL2V4cGxhaW4uc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2V4cGxhaW4u c3FsCkBAIC0xODgsMyArMTg4LDE5NyBAQCBzZWxlY3QgZXhwbGFpbl9maWx0ZXIoJ2V4cGxhaW4g KGFuYWx5emUsYnVmZmVycyBvZmYsY29zdHMgb2ZmKSBzZWxlY3Qgc3VtKG4pIG92ZQogLS0gVGVz dCB0dXBsZXN0b3JlIHN0b3JhZ2UgdXNhZ2UgaW4gV2luZG93IGFnZ3JlZ2F0ZSAobWVtb3J5IGFu ZCBkaXNrIGNhc2UsIGZpbmFsIHJlc3VsdCBpcyBkaXNrKQogc2VsZWN0IGV4cGxhaW5fZmlsdGVy KCdleHBsYWluIChhbmFseXplLGJ1ZmZlcnMgb2ZmLGNvc3RzIG9mZikgc2VsZWN0IHN1bShuKSBv dmVyKHBhcnRpdGlvbiBieSBtKSBmcm9tIChTRUxFQ1QgbiA8IDMgYXMgbSwgbiBmcm9tIGdlbmVy YXRlX3NlcmllcygxLDI1MDApIGEobikpJyk7CiByZXNldCB3b3JrX21lbTsKKworLS0gRVhQTEFJ TiAoQU5BTFlaRSwgQlVGRkVSUykgc2hvdWxkIHJlcG9ydCBidWZmZXIgdXNhZ2UgZnJvbSBQTC9w Z1NRTAorLS0gRVhDRVBUSU9OIGJsb2NrcywgZXZlbiBhZnRlciBzdWJ0cmFuc2FjdGlvbiByb2xs YmFjay4KK0NSRUFURSBURU1QIFRBQkxFIGV4cGxhaW5fZXhjX3RhYiAoYSBpbnQsIGIgY2hhcigy MCkpOworSU5TRVJUIElOVE8gZXhwbGFpbl9leGNfdGFiIFZBTFVFUyAoMCwgJ3p6eicpOworCitD UkVBVEUgRlVOQ1RJT04gZXhwbGFpbl9leGNfZnVuYygpIFJFVFVSTlMgdm9pZCBBUyAkJAorREVD TEFSRQorICAgIHYgaW50OworQkVHSU4KKyAgICBXSVRIIGlucyBBUyAoSU5TRVJUIElOVE8gZXhw bGFpbl9leGNfdGFiIFZBTFVFUyAoMSwgJ2FhYScpIFJFVFVSTklORyBhKQorICAgIFNFTEVDVCBh IC8gMCBJTlRPIHYgRlJPTSBpbnM7CitFWENFUFRJT04gV0hFTiBkaXZpc2lvbl9ieV96ZXJvIFRI RU4KKyAgICBOVUxMOworRU5EOworJCQgTEFOR1VBR0UgcGxwZ3NxbDsKKworQ1JFQVRFIEZVTkNU SU9OIGNoZWNrX2V4cGxhaW5fZXhjZXB0aW9uX2J1ZmZlcnMoKSBSRVRVUk5TIGJvb2xlYW4gQVMg JCQKK0RFQ0xBUkUKKyAgICBwbGFuX2pzb24ganNvbjsKKyAgICBub2RlIGpzb247CisgICAgdG90 YWxfYnVmZmVycyBpbnQ7CitCRUdJTgorICAgIEVYRUNVVEUgJ0VYUExBSU4gKEFOQUxZWkUsIEJV RkZFUlMsIENPU1RTIE9GRiwgRk9STUFUIEpTT04pCisgICAgICAgIFNFTEVDVCBleHBsYWluX2V4 Y19mdW5jKCknIElOVE8gcGxhbl9qc29uOworICAgIG5vZGUgOj0gcGxhbl9qc29uLT4wLT4nUGxh bic7CisgICAgdG90YWxfYnVmZmVycyA6PQorICAgICAgICBDT0FMRVNDRSgobm9kZS0+PidMb2Nh bCBIaXQgQmxvY2tzJyk6OmludCwgMCkgKworICAgICAgICBDT0FMRVNDRSgobm9kZS0+PidMb2Nh bCBSZWFkIEJsb2NrcycpOjppbnQsIDApOworICAgIFJFVFVSTiB0b3RhbF9idWZmZXJzID4gMDsK K0VORDsKKyQkIExBTkdVQUdFIHBscGdzcWw7CisKK1NFTEVDVCBjaGVja19leHBsYWluX2V4Y2Vw dGlvbl9idWZmZXJzKCkgQVMgZXhjZXB0aW9uX2J1ZmZlcnNfdmlzaWJsZTsKKworLS0gQWxzbyB0 ZXN0IHdpdGggbmVzdGVkIEVYUExBSU4gQU5BTFlaRSAodHdvIGxldmVscyBvZiBpbnN0cnVtZW50 YXRpb24pCitDUkVBVEUgRlVOQ1RJT04gY2hlY2tfZXhwbGFpbl9leGNlcHRpb25fYnVmZmVyc19u ZXN0ZWQoKSBSRVRVUk5TIGJvb2xlYW4gQVMgJCQKK0RFQ0xBUkUKKyAgICBwbGFuX2pzb24ganNv bjsKKyAgICBub2RlIGpzb247CisgICAgdG90YWxfYnVmZmVycyBpbnQ7CitCRUdJTgorICAgIEVY RUNVVEUgJ0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMsIENPU1RTIE9GRiwgRk9STUFUIEpTT04p CisgICAgICAgIFNFTEVDVCBjaGVja19leHBsYWluX2V4Y2VwdGlvbl9idWZmZXJzKCknIElOVE8g cGxhbl9qc29uOworICAgIG5vZGUgOj0gcGxhbl9qc29uLT4wLT4nUGxhbic7CisgICAgdG90YWxf YnVmZmVycyA6PQorICAgICAgICBDT0FMRVNDRSgobm9kZS0+PidMb2NhbCBIaXQgQmxvY2tzJyk6 OmludCwgMCkgKworICAgICAgICBDT0FMRVNDRSgobm9kZS0+PidMb2NhbCBSZWFkIEJsb2Nrcycp OjppbnQsIDApOworICAgIFJFVFVSTiB0b3RhbF9idWZmZXJzID4gMDsKK0VORDsKKyQkIExBTkdV QUdFIHBscGdzcWw7CisKK1NFTEVDVCBjaGVja19leHBsYWluX2V4Y2VwdGlvbl9idWZmZXJzX25l c3RlZCgpIEFTIGV4Y2VwdGlvbl9idWZmZXJzX25lc3RlZF92aXNpYmxlOworCitEUk9QIEZVTkNU SU9OIGNoZWNrX2V4cGxhaW5fZXhjZXB0aW9uX2J1ZmZlcnNfbmVzdGVkOworRFJPUCBGVU5DVElP TiBjaGVja19leHBsYWluX2V4Y2VwdGlvbl9idWZmZXJzOworRFJPUCBGVU5DVElPTiBleHBsYWlu X2V4Y19mdW5jOworRFJPUCBUQUJMRSBleHBsYWluX2V4Y190YWI7CisKKy0tIEN1cnNvciBpbnN0 cnVtZW50YXRpb24gdGVzdC4KKy0tIFZlcmlmeSB0aGF0IGJ1ZmZlciB1c2FnZSBpcyBjb3JyZWN0 bHkgdHJhY2tlZCB0aHJvdWdoIGN1cnNvciBleGVjdXRpb24gcGF0aHMuCistLSBOb24tc2Nyb2xs YWJsZSBjdXJzb3JzIGV4ZXJjaXNlIEV4ZWNTaHV0ZG93bk5vZGUgYWZ0ZXIgZWFjaCBFeGVjdXRv clJ1bgorLS0gKEVYRUNfRkxBR19CQUNLV0FSRCBpcyBub3Qgc2V0KSwgd2hpbGUgc2Nyb2xsYWJs ZSBjdXJzb3JzIG9ubHkgc2h1dCBkb3duCistLSBub2RlcyBpbiBFeGVjdXRvckZpbmlzaC4gSW4g Ym90aCBjYXNlcywgYnVmZmVyIHVzYWdlIGZyb20gdGhlIGlubmVyIGN1cnNvcgorLS0gc2NhbiBz aG91bGQgYmUgY29ycmVjdGx5IGFjY3VtdWxhdGVkLgorCitDUkVBVEUgVEVNUCBUQUJMRSBjdXJz b3JfYnVmX3Rlc3QgQVMgU0VMRUNUICogRlJPTSB0ZW5rMTsKKworQ1JFQVRFIEZVTkNUSU9OIGN1 cnNvcl9ub3Njcm9sbF9zY2FuKCkgUkVUVVJOUyBiaWdpbnQgQVMgJCQKK0RFQ0xBUkUKKyAgICBj dXIgTk8gU0NST0xMIENVUlNPUiBGT1IgU0VMRUNUICogRlJPTSBjdXJzb3JfYnVmX3Rlc3Q7Cisg ICAgcmVjIFJFQ09SRDsKKyAgICBjbnQgYmlnaW50IDo9IDA7CitCRUdJTgorICAgIE9QRU4gY3Vy OworICAgIExPT1AKKyAgICAgICAgRkVUQ0ggTkVYVCBGUk9NIGN1ciBJTlRPIHJlYzsKKyAgICAg ICAgRVhJVCBXSEVOIE5PVCBGT1VORDsKKyAgICAgICAgY250IDo9IGNudCArIDE7CisgICAgRU5E IExPT1A7CisgICAgQ0xPU0UgY3VyOworICAgIFJFVFVSTiBjbnQ7CitFTkQ7CiskJCBMQU5HVUFH RSBwbHBnc3FsOworCitDUkVBVEUgRlVOQ1RJT04gY3Vyc29yX3Njcm9sbF9zY2FuKCkgUkVUVVJO UyBiaWdpbnQgQVMgJCQKK0RFQ0xBUkUKKyAgICBjdXIgU0NST0xMIENVUlNPUiBGT1IgU0VMRUNU ICogRlJPTSBjdXJzb3JfYnVmX3Rlc3Q7CisgICAgcmVjIFJFQ09SRDsKKyAgICBjbnQgYmlnaW50 IDo9IDA7CitCRUdJTgorICAgIE9QRU4gY3VyOworICAgIExPT1AKKyAgICAgICAgRkVUQ0ggTkVY VCBGUk9NIGN1ciBJTlRPIHJlYzsKKyAgICAgICAgRVhJVCBXSEVOIE5PVCBGT1VORDsKKyAgICAg ICAgY250IDo9IGNudCArIDE7CisgICAgRU5EIExPT1A7CisgICAgQ0xPU0UgY3VyOworICAgIFJF VFVSTiBjbnQ7CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBnc3FsOworCitDUkVBVEUgRlVOQ1RJT04g Y2hlY2tfY3Vyc29yX2V4cGxhaW5fYnVmZmVycygpIFJFVFVSTlMgVEFCTEUobm9zY3JvbGxfb2sg Ym9vbGVhbiwgc2Nyb2xsX29rIGJvb2xlYW4pIEFTICQkCitERUNMQVJFCisgICAgcGxhbl9qc29u IGpzb247CisgICAgbm9kZSBqc29uOworICAgIGRpcmVjdF9idWYgaW50OworICAgIG5vc2Nyb2xs X2J1ZiBpbnQ7CisgICAgc2Nyb2xsX2J1ZiBpbnQ7CitCRUdJTgorICAgIC0tIERpcmVjdCBzY2Fu OiBnZXQgbGVhZiBTZXEgU2NhbiBub2RlIGJ1ZmZlcnMgYXMgYmFzZWxpbmUKKyAgICBFWEVDVVRF ICdFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTLCBDT1NUUyBPRkYsIEZPUk1BVCBKU09OKQorICAg ICAgICBTRUxFQ1QgKiBGUk9NIGN1cnNvcl9idWZfdGVzdCcgSU5UTyBwbGFuX2pzb247CisgICAg bm9kZSA6PSBwbGFuX2pzb24tPjAtPidQbGFuJzsKKyAgICBXSElMRSBub2RlLT4nUGxhbnMnIElT IE5PVCBOVUxMIExPT1AKKyAgICAgICAgbm9kZSA6PSBub2RlLT4nUGxhbnMnLT4wOworICAgIEVO RCBMT09QOworICAgIGRpcmVjdF9idWYgOj0KKyAgICAgICAgQ09BTEVTQ0UoKG5vZGUtPj4nTG9j YWwgSGl0IEJsb2NrcycpOjppbnQsIDApICsKKyAgICAgICAgQ09BTEVTQ0UoKG5vZGUtPj4nTG9j YWwgUmVhZCBCbG9ja3MnKTo6aW50LCAwKTsKKworICAgIC0tIE5vbi1zY3JvbGxhYmxlIGN1cnNv ciBwYXRoOiBFeGVjU2h1dGRvd25Ob2RlIHJ1bnMgYWZ0ZXIgZWFjaCBFeGVjdXRvclJ1bgorICAg IEVYRUNVVEUgJ0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMsIENPU1RTIE9GRiwgRk9STUFUIEpT T04pCisgICAgICAgIFNFTEVDVCBjdXJzb3Jfbm9zY3JvbGxfc2NhbigpJyBJTlRPIHBsYW5fanNv bjsKKyAgICBub2RlIDo9IHBsYW5fanNvbi0+MC0+J1BsYW4nOworICAgIG5vc2Nyb2xsX2J1ZiA6 PQorICAgICAgICBDT0FMRVNDRSgobm9kZS0+PidMb2NhbCBIaXQgQmxvY2tzJyk6OmludCwgMCkg KworICAgICAgICBDT0FMRVNDRSgobm9kZS0+PidMb2NhbCBSZWFkIEJsb2NrcycpOjppbnQsIDAp OworCisgICAgLS0gU2Nyb2xsYWJsZSBjdXJzb3IgcGF0aDogRXhlY1NodXRkb3duTm9kZSBpcyBz a2lwcGVkCisgICAgRVhFQ1VURSAnRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUywgQ09TVFMgT0ZG LCBGT1JNQVQgSlNPTikKKyAgICAgICAgU0VMRUNUIGN1cnNvcl9zY3JvbGxfc2NhbigpJyBJTlRP IHBsYW5fanNvbjsKKyAgICBub2RlIDo9IHBsYW5fanNvbi0+MC0+J1BsYW4nOworICAgIHNjcm9s bF9idWYgOj0KKyAgICAgICAgQ09BTEVTQ0UoKG5vZGUtPj4nTG9jYWwgSGl0IEJsb2NrcycpOjpp bnQsIDApICsKKyAgICAgICAgQ09BTEVTQ0UoKG5vZGUtPj4nTG9jYWwgUmVhZCBCbG9ja3MnKTo6 aW50LCAwKTsKKworICAgIC0tIEJvdGggY3Vyc29yIHBhdGhzIHNob3VsZCByZXBvcnQgYnVmZmVy IGNvdW50cyBhYm91dCBhcyBoaWdoIGFzCisgICAgLS0gdGhlIGRpcmVjdCBzY2FuIChzYW1lIGRh dGEgcGx1cyBtaW5vciBjYXRhbG9nIG92ZXJoZWFkKSwgYW5kIG5vdAorICAgIC0tIGRvdWJsZS1j b3VudGVkICg8IDJ4IHRoZSBkaXJlY3Qgc2NhbikKKyAgICBSRVRVUk4gUVVFUlkgU0VMRUNUCisg ICAgICAgIChub3Njcm9sbF9idWYgPj0gZGlyZWN0X2J1ZiAqIDAuNSBBTkQgbm9zY3JvbGxfYnVm IDwgZGlyZWN0X2J1ZiAqIDIpLAorICAgICAgICAoc2Nyb2xsX2J1ZiA+PSBkaXJlY3RfYnVmICog MC41IEFORCBzY3JvbGxfYnVmIDwgZGlyZWN0X2J1ZiAqIDIpOworRU5EOworJCQgTEFOR1VBR0Ug cGxwZ3NxbDsKKworU0VMRUNUICogRlJPTSBjaGVja19jdXJzb3JfZXhwbGFpbl9idWZmZXJzKCk7 CisKK0RST1AgRlVOQ1RJT04gY2hlY2tfY3Vyc29yX2V4cGxhaW5fYnVmZmVyczsKK0RST1AgRlVO Q1RJT04gY3Vyc29yX25vc2Nyb2xsX3NjYW47CitEUk9QIEZVTkNUSU9OIGN1cnNvcl9zY3JvbGxf c2NhbjsKK0RST1AgVEFCTEUgY3Vyc29yX2J1Zl90ZXN0OworCistLSBQYXJhbGxlbCBxdWVyeSBi dWZmZXIgZG91YmxlLWNvdW50aW5nIHRlc3QuCistLQorLS0gQ29tcGFyZXMgc2VyaWFsIFNlcSBT Y2FuIGJ1ZmZlcnMgdnMgcGFyYWxsZWwgU2VxIFNjYW4gYnVmZmVycy4KKy0tIFRoZXkgc2NhbiB0 aGUgc2FtZSB0YWJsZSBzbyB0aGUgYnVmZmVyIGNvdW50IHNob3VsZCBiZSBzaW1pbGFyLgorLS0g RG91YmxlLWNvdW50aW5nIHdvdWxkIG1ha2UgdGhlIHBhcmFsbGVsIGNvdW50IH4yeCBsYXJnZXIu CitDUkVBVEUgRlVOQ1RJT04gY2hlY2tfcGFyYWxsZWxfZXhwbGFpbl9idWZmZXJzKCkgUkVUVVJO UyBUQUJMRShyYXRpbyBudW1lcmljKSBBUyAkJAorREVDTEFSRQorICAgIHBsYW5fanNvbiBqc29u OworICAgIHNlcmlhbF9idWZmZXJzIGludDsKKyAgICBwYXJhbGxlbF9idWZmZXJzIGludDsKKyAg ICBub2RlIGpzb247CitCRUdJTgorICAgIC0tIFNlcmlhbCAtLQorICAgIFNFVCBMT0NBTCBtYXhf cGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMDsKKyAgICBFWEVDVVRFICdFWFBMQUlOIChB TkFMWVpFLCBCVUZGRVJTLCBDT1NUUyBPRkYsIEZPUk1BVCBKU09OKQorICAgICAgICBTRUxFQ1Qg Y291bnQoKikgRlJPTSB0ZW5rMScgSU5UTyBwbGFuX2pzb247CisgICAgbm9kZSA6PSBwbGFuX2pz b24tPjAtPidQbGFuJzsKKyAgICBzZXJpYWxfYnVmZmVycyA6PQorICAgICAgICBDT0FMRVNDRSgo bm9kZS0+PidTaGFyZWQgSGl0IEJsb2NrcycpOjppbnQsIDApICsKKyAgICAgICAgQ09BTEVTQ0Uo KG5vZGUtPj4nU2hhcmVkIFJlYWQgQmxvY2tzJyk6OmludCwgMCk7CisKKyAgICAtLSBQYXJhbGxl bCAtLQorICAgIFNFVCBMT0NBTCBwYXJhbGxlbF9zZXR1cF9jb3N0ID0gMDsKKyAgICBTRVQgTE9D QUwgcGFyYWxsZWxfdHVwbGVfY29zdCA9IDA7CisgICAgU0VUIExPQ0FMIG1pbl9wYXJhbGxlbF90 YWJsZV9zY2FuX3NpemUgPSAwOworICAgIFNFVCBMT0NBTCBtYXhfcGFyYWxsZWxfd29ya2Vyc19w ZXJfZ2F0aGVyID0gMjsKKyAgICBTRVQgTE9DQUwgcGFyYWxsZWxfbGVhZGVyX3BhcnRpY2lwYXRp b24gPSBvZmY7CisgICAgRVhFQ1VURSAnRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUywgQ09TVFMg T0ZGLCBGT1JNQVQgSlNPTikKKyAgICAgICAgU0VMRUNUIGNvdW50KCopIEZST00gdGVuazEnIElO VE8gcGxhbl9qc29uOworICAgIG5vZGUgOj0gcGxhbl9qc29uLT4wLT4nUGxhbic7CisgICAgcGFy YWxsZWxfYnVmZmVycyA6PQorICAgICAgICBDT0FMRVNDRSgobm9kZS0+PidTaGFyZWQgSGl0IEJs b2NrcycpOjppbnQsIDApICsKKyAgICAgICAgQ09BTEVTQ0UoKG5vZGUtPj4nU2hhcmVkIFJlYWQg QmxvY2tzJyk6OmludCwgMCk7CisKKyAgICBSRVRVUk4gUVVFUlkgU0VMRUNUIHJvdW5kKHBhcmFs bGVsX2J1ZmZlcnM6Om51bWVyaWMgLyBHUkVBVEVTVChzZXJpYWxfYnVmZmVycywgMSkpOworRU5E OworJCQgTEFOR1VBR0UgcGxwZ3NxbDsKKworU0VMRUNUICogRlJPTSBjaGVja19wYXJhbGxlbF9l eHBsYWluX2J1ZmZlcnMoKTsKKworRFJPUCBGVU5DVElPTiBjaGVja19wYXJhbGxlbF9leHBsYWlu X2J1ZmZlcnM7Ci0tIAoyLjQ3LjEKCg== --00000000000002247a064c7bb7b8 Content-Type: application/octet-stream; name="v7-0002-instrumentation-Separate-per-node-logic-from-othe.patch" Content-Disposition: attachment; filename="v7-0002-instrumentation-Separate-per-node-logic-from-othe.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmh8zh0e1 RnJvbSAwMDMyNzc0YmFjZGVmZjQzZDY1NjVlNDNlMDQ1MTBjMWIxZWFmNmMyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpEYXRlOiBT YXQsIDcgTWFyIDIwMjYgMDE6MTk6NTAgLTA4MDAKU3ViamVjdDogW1BBVENIIHY3IDIvOF0gaW5z dHJ1bWVudGF0aW9uOiBTZXBhcmF0ZSBwZXItbm9kZSBsb2dpYyBmcm9tIG90aGVyCiB1c2VzCgpQ cmV2aW91c2x5IGRpZmZlcmVudCBwbGFjZXMgKGUuZy4gcXVlcnkgInRvdGFsIHRpbWUiKSB3ZXJl IHJlcHVycG9zaW5nCnRoZSBJbnN0cnVtZW50YXRpb24gc3RydWN0IGluaXRpYWxseSBpbnRyb2R1 Y2VkIGZvciBjYXB0dXJpbmcgcGVyLW5vZGUKc3RhdGlzdGljcyBkdXJpbmcgZXhlY3V0aW9uLiBU aGlzIG92ZXJ1c2Ugb2YgdGhlIHNhbWUgc3RydWN0IGlzIGNvbmZ1c2luZywKZS5nLiBieSBjbHV0 dGVyaW5nIGNhbGxzIG9mIEluc3RyU3RhcnROb2RlL0luc3RyU3RvcE5vZGUgaW4gdW5yZWxhdGVk CmNvZGUgcGF0aHMsIGFuZCBwcmV2ZW50cyBmdXR1cmUgcmVmYWN0b3JpbmdzLgoKSW5zdGVhZCwg c2ltcGxpZnkgdGhlIEluc3RydW1lbnRhdGlvbiBzdHJ1Y3QgdG8gb25seSB0cmFjayB0aW1lIGFu ZApXQUwvYnVmZmVyIHVzYWdlLiBTaW1pbGFybHksIGRyb3AgdGhlIHVzZSBvZiBJbnN0ckVuZExv b3Agb3V0c2lkZSBvZgpwZXItbm9kZSBpbnN0cnVtZW50YXRpb24gLSB0aGVzZSBjYWxscyB3ZXJl IGFkZGVkIHdpdGhvdXQgYW55IGFwcGFyZW50CmJlbmVmaXQgc2luY2UgdGhlIHJlbGV2YW50IGZp ZWxkcyB3ZXJlIG5ldmVyIHJlYWQuCgpJbnRyb2R1Y2UgdGhlIE5vZGVJbnN0cnVtZW50YXRpb24g c3RydWN0IHRvIGNhcnJ5IGZvcndhcmQgdGhlIHBlci1ub2RlCmluc3RydW1lbnRhdGlvbiBpbmZv cm1hdGlvbi4gV29ya2VySW5zdHJ1bWVudGF0aW9uIGlzIHJlbmFtZWQgdG8KV29ya2VyTm9kZUlu c3RydW1lbnRhdGlvbiBmb3IgY2xhcml0eS4KCkluIHBhc3NpbmcsIGRyb3AgdGhlICJuIiBhcmd1 bWVudCB0byBJbnN0ckFsbG9jLCBhcyBhbGwgcmVtYWluaW5nIGNhbGxlcnMKbmVlZCBleGFjdGx5 IG9uZSBJbnN0cnVtZW50YXRpb24gc3RydWN0LgoKQXV0aG9yOiBMdWthcyBGaXR0bCA8bHVrYXNA Zml0dGwuY29tPgpSZXZpZXdlZC1ieToKRGlzY3Vzc2lvbjoKLS0tCiBjb250cmliL2F1dG9fZXhw bGFpbi9hdXRvX2V4cGxhaW4uYyAgICAgICAgICAgfCAgIDggKy0KIC4uLi9wZ19zdGF0X3N0YXRl bWVudHMvcGdfc3RhdF9zdGF0ZW1lbnRzLmMgICB8ICAgOCArLQogY29udHJpYi9wb3N0Z3Jlc19m ZHcvcG9zdGdyZXNfZmR3LmMgICAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9jb21tYW5k cy9leHBsYWluLmMgICAgICAgICAgICAgICAgfCAgMjAgKy0tCiBzcmMvYmFja2VuZC9leGVjdXRv ci9leGVjTWFpbi5jICAgICAgICAgICAgICAgfCAgIDggKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9y L2V4ZWNQYXJhbGxlbC5jICAgICAgICAgICB8ICAyNCArLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9y L2V4ZWNQcm9jbm9kZS5jICAgICAgICAgICB8ICAgNCArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Iv aW5zdHJ1bWVudC5jICAgICAgICAgICAgIHwgMTQyICsrKysrKysrKysrKy0tLS0tLQogc3JjL2lu Y2x1ZGUvZXhlY3V0b3IvaW5zdHJ1bWVudC5oICAgICAgICAgICAgIHwgIDYwICsrKysrLS0tCiBz cmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCAgICAgICAgICAgICAgICAgfCAgIDYgKy0KIHNy Yy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0ICAgICAgICAgICAgICB8ICAgMyArLQogMTEg ZmlsZXMgY2hhbmdlZCwgMTcyIGluc2VydGlvbnMoKyksIDExMyBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9jb250cmliL2F1dG9fZXhwbGFpbi9hdXRvX2V4cGxhaW4uYyBiL2NvbnRyaWIvYXV0 b19leHBsYWluL2F1dG9fZXhwbGFpbi5jCmluZGV4IGU4NTZjZDM1YTZmLi4zOWJmMjU0M2I3MCAx MDA2NDQKLS0tIGEvY29udHJpYi9hdXRvX2V4cGxhaW4vYXV0b19leHBsYWluLmMKKysrIGIvY29u dHJpYi9hdXRvX2V4cGxhaW4vYXV0b19leHBsYWluLmMKQEAgLTMxNSw3ICszMTUsNyBAQCBleHBs YWluX0V4ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAJCQlN ZW1vcnlDb250ZXh0IG9sZGN4dDsKIAogCQkJb2xkY3h0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRv KHF1ZXJ5RGVzYy0+ZXN0YXRlLT5lc19xdWVyeV9jeHQpOwotCQkJcXVlcnlEZXNjLT50b3RhbHRp bWUgPSBJbnN0ckFsbG9jKDEsIElOU1RSVU1FTlRfQUxMLCBmYWxzZSk7CisJCQlxdWVyeURlc2Mt PnRvdGFsdGltZSA9IEluc3RyQWxsb2MoSU5TVFJVTUVOVF9BTEwpOwogCQkJTWVtb3J5Q29udGV4 dFN3aXRjaFRvKG9sZGN4dCk7CiAJCX0KIAl9CkBAIC0zODEsMTIgKzM4MSw2IEBAIGV4cGxhaW5f RXhlY3V0b3JFbmQoUXVlcnlEZXNjICpxdWVyeURlc2MpCiAJCSAqLwogCQlvbGRjeHQgPSBNZW1v cnlDb250ZXh0U3dpdGNoVG8ocXVlcnlEZXNjLT5lc3RhdGUtPmVzX3F1ZXJ5X2N4dCk7CiAKLQkJ LyoKLQkJICogTWFrZSBzdXJlIHN0YXRzIGFjY3VtdWxhdGlvbiBpcyBkb25lLiAgKE5vdGU6IGl0 J3Mgb2theSBpZiBzZXZlcmFsCi0JCSAqIGxldmVscyBvZiBob29rIGFsbCBkbyB0aGlzLikKLQkJ ICovCi0JCUluc3RyRW5kTG9vcChxdWVyeURlc2MtPnRvdGFsdGltZSk7Ci0KIAkJLyogTG9nIHBs YW4gaWYgZHVyYXRpb24gaXMgZXhjZWVkZWQuICovCiAJCW1zZWMgPSBJTlNUUl9USU1FX0dFVF9N SUxMSVNFQyhxdWVyeURlc2MtPnRvdGFsdGltZS0+dG90YWwpOwogCQlpZiAobXNlYyA+PSBhdXRv X2V4cGxhaW5fbG9nX21pbl9kdXJhdGlvbikKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfc3RhdF9z dGF0ZW1lbnRzL3BnX3N0YXRfc3RhdGVtZW50cy5jIGIvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVu dHMvcGdfc3RhdF9zdGF0ZW1lbnRzLmMKaW5kZXggNGE0Mjc1MzNiZDguLjM4OGIwNjhjY2VjIDEw MDY0NAotLS0gYS9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9wZ19zdGF0X3N0YXRlbWVudHMu YworKysgYi9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9wZ19zdGF0X3N0YXRlbWVudHMuYwpA QCAtMTAyMyw3ICsxMDIzLDcgQEAgcGdzc19FeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlE ZXNjLCBpbnQgZWZsYWdzKQogCQkJTWVtb3J5Q29udGV4dCBvbGRjeHQ7CiAKIAkJCW9sZGN4dCA9 IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhxdWVyeURlc2MtPmVzdGF0ZS0+ZXNfcXVlcnlfY3h0KTsK LQkJCXF1ZXJ5RGVzYy0+dG90YWx0aW1lID0gSW5zdHJBbGxvYygxLCBJTlNUUlVNRU5UX0FMTCwg ZmFsc2UpOworCQkJcXVlcnlEZXNjLT50b3RhbHRpbWUgPSBJbnN0ckFsbG9jKElOU1RSVU1FTlRf QUxMKTsKIAkJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjeHQpOwogCQl9CiAJfQpAQCAtMTA4 MiwxMiArMTA4Miw2IEBAIHBnc3NfRXhlY3V0b3JFbmQoUXVlcnlEZXNjICpxdWVyeURlc2MpCiAJ aWYgKHF1ZXJ5SWQgIT0gSU5UNjRDT05TVCgwKSAmJiBxdWVyeURlc2MtPnRvdGFsdGltZSAmJgog CQlwZ3NzX2VuYWJsZWQobmVzdGluZ19sZXZlbCkpCiAJewotCQkvKgotCQkgKiBNYWtlIHN1cmUg c3RhdHMgYWNjdW11bGF0aW9uIGlzIGRvbmUuICAoTm90ZTogaXQncyBva2F5IGlmIHNldmVyYWwK LQkJICogbGV2ZWxzIG9mIGhvb2sgYWxsIGRvIHRoaXMuKQotCQkgKi8KLQkJSW5zdHJFbmRMb29w KHF1ZXJ5RGVzYy0+dG90YWx0aW1lKTsKLQogCQlwZ3NzX3N0b3JlKHF1ZXJ5RGVzYy0+c291cmNl VGV4dCwKIAkJCQkgICBxdWVyeUlkLAogCQkJCSAgIHF1ZXJ5RGVzYy0+cGxhbm5lZHN0bXQtPnN0 bXRfbG9jYXRpb24sCmRpZmYgLS1naXQgYS9jb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19m ZHcuYyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3Bvc3RncmVzX2Zkdy5jCmluZGV4IDYwZDkwMzI5 YTY1Li42ZjBjYjJhMjg1YiAxMDA2NDQKLS0tIGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvcG9zdGdy ZXNfZmR3LmMKKysrIGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvcG9zdGdyZXNfZmR3LmMKQEAgLTI3 NzgsNyArMjc3OCw3IEBAIHBvc3RncmVzSXRlcmF0ZURpcmVjdE1vZGlmeShGb3JlaWduU2NhblN0 YXRlICpub2RlKQogCWlmICghcmVzdWx0UmVsSW5mby0+cmlfcHJvamVjdFJldHVybmluZykKIAl7 CiAJCVR1cGxlVGFibGVTbG90ICpzbG90ID0gbm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdDsKLQkJ SW5zdHJ1bWVudGF0aW9uICppbnN0ciA9IG5vZGUtPnNzLnBzLmluc3RydW1lbnQ7CisJCU5vZGVJ bnN0cnVtZW50YXRpb24gKmluc3RyID0gbm9kZS0+c3MucHMuaW5zdHJ1bWVudDsKIAogCQlBc3Nl cnQoIWRtc3RhdGUtPmhhc19yZXR1cm5pbmcpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9j b21tYW5kcy9leHBsYWluLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKaW5kZXgg MDliMTM4MDdkOTIuLjM4OTE4MWI4ZDliIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5k cy9leHBsYWluLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCkBAIC0xODM1 LDcgKzE4MzUsNyBAQCBFeHBsYWluTm9kZShQbGFuU3RhdGUgKnBsYW5zdGF0ZSwgTGlzdCAqYW5j ZXN0b3JzLAogCXsKIAkJZG91YmxlCQlubG9vcHMgPSBwbGFuc3RhdGUtPmluc3RydW1lbnQtPm5s b29wczsKIAkJZG91YmxlCQlzdGFydHVwX21zID0gSU5TVFJfVElNRV9HRVRfTUlMTElTRUMocGxh bnN0YXRlLT5pbnN0cnVtZW50LT5zdGFydHVwKSAvIG5sb29wczsKLQkJZG91YmxlCQl0b3RhbF9t cyA9IElOU1RSX1RJTUVfR0VUX01JTExJU0VDKHBsYW5zdGF0ZS0+aW5zdHJ1bWVudC0+dG90YWwp IC8gbmxvb3BzOworCQlkb3VibGUJCXRvdGFsX21zID0gSU5TVFJfVElNRV9HRVRfTUlMTElTRUMo cGxhbnN0YXRlLT5pbnN0cnVtZW50LT5pbnN0ci50b3RhbCkgLyBubG9vcHM7CiAJCWRvdWJsZQkJ cm93cyA9IHBsYW5zdGF0ZS0+aW5zdHJ1bWVudC0+bnR1cGxlcyAvIG5sb29wczsKIAogCQlpZiAo ZXMtPmZvcm1hdCA9PSBFWFBMQUlOX0ZPUk1BVF9URVhUKQpAQCAtMTg4OCwxMSArMTg4OCwxMSBA QCBFeHBsYWluTm9kZShQbGFuU3RhdGUgKnBsYW5zdGF0ZSwgTGlzdCAqYW5jZXN0b3JzLAogCS8q IHByZXBhcmUgcGVyLXdvcmtlciBnZW5lcmFsIGV4ZWN1dGlvbiBkZXRhaWxzICovCiAJaWYgKGVz LT53b3JrZXJzX3N0YXRlICYmIGVzLT52ZXJib3NlKQogCXsKLQkJV29ya2VySW5zdHJ1bWVudGF0 aW9uICp3ID0gcGxhbnN0YXRlLT53b3JrZXJfaW5zdHJ1bWVudDsKKwkJV29ya2VyTm9kZUluc3Ry dW1lbnRhdGlvbiAqdyA9IHBsYW5zdGF0ZS0+d29ya2VyX2luc3RydW1lbnQ7CiAKIAkJZm9yIChp bnQgbiA9IDA7IG4gPCB3LT5udW1fd29ya2VyczsgbisrKQogCQl7Ci0JCQlJbnN0cnVtZW50YXRp b24gKmluc3RydW1lbnQgPSAmdy0+aW5zdHJ1bWVudFtuXTsKKwkJCU5vZGVJbnN0cnVtZW50YXRp b24gKmluc3RydW1lbnQgPSAmdy0+aW5zdHJ1bWVudFtuXTsKIAkJCWRvdWJsZQkJbmxvb3BzID0g aW5zdHJ1bWVudC0+bmxvb3BzOwogCQkJZG91YmxlCQlzdGFydHVwX21zOwogCQkJZG91YmxlCQl0 b3RhbF9tczsKQEAgLTE5MDEsNyArMTkwMSw3IEBAIEV4cGxhaW5Ob2RlKFBsYW5TdGF0ZSAqcGxh bnN0YXRlLCBMaXN0ICphbmNlc3RvcnMsCiAJCQlpZiAobmxvb3BzIDw9IDApCiAJCQkJY29udGlu dWU7CiAJCQlzdGFydHVwX21zID0gSU5TVFJfVElNRV9HRVRfTUlMTElTRUMoaW5zdHJ1bWVudC0+ c3RhcnR1cCkgLyBubG9vcHM7Ci0JCQl0b3RhbF9tcyA9IElOU1RSX1RJTUVfR0VUX01JTExJU0VD KGluc3RydW1lbnQtPnRvdGFsKSAvIG5sb29wczsKKwkJCXRvdGFsX21zID0gSU5TVFJfVElNRV9H RVRfTUlMTElTRUMoaW5zdHJ1bWVudC0+aW5zdHIudG90YWwpIC8gbmxvb3BzOwogCQkJcm93cyA9 IGluc3RydW1lbnQtPm50dXBsZXMgLyBubG9vcHM7CiAKIAkJCUV4cGxhaW5PcGVuV29ya2VyKG4s IGVzKTsKQEAgLTIyODgsMTggKzIyODgsMTggQEAgRXhwbGFpbk5vZGUoUGxhblN0YXRlICpwbGFu c3RhdGUsIExpc3QgKmFuY2VzdG9ycywKIAogCS8qIFNob3cgYnVmZmVyL1dBTCB1c2FnZSAqLwog CWlmIChlcy0+YnVmZmVycyAmJiBwbGFuc3RhdGUtPmluc3RydW1lbnQpCi0JCXNob3dfYnVmZmVy X3VzYWdlKGVzLCAmcGxhbnN0YXRlLT5pbnN0cnVtZW50LT5idWZ1c2FnZSk7CisJCXNob3dfYnVm ZmVyX3VzYWdlKGVzLCAmcGxhbnN0YXRlLT5pbnN0cnVtZW50LT5pbnN0ci5idWZ1c2FnZSk7CiAJ aWYgKGVzLT53YWwgJiYgcGxhbnN0YXRlLT5pbnN0cnVtZW50KQotCQlzaG93X3dhbF91c2FnZShl cywgJnBsYW5zdGF0ZS0+aW5zdHJ1bWVudC0+d2FsdXNhZ2UpOworCQlzaG93X3dhbF91c2FnZShl cywgJnBsYW5zdGF0ZS0+aW5zdHJ1bWVudC0+aW5zdHIud2FsdXNhZ2UpOwogCiAJLyogUHJlcGFy ZSBwZXItd29ya2VyIGJ1ZmZlci9XQUwgdXNhZ2UgKi8KIAlpZiAoZXMtPndvcmtlcnNfc3RhdGUg JiYgKGVzLT5idWZmZXJzIHx8IGVzLT53YWwpICYmIGVzLT52ZXJib3NlKQogCXsKLQkJV29ya2Vy SW5zdHJ1bWVudGF0aW9uICp3ID0gcGxhbnN0YXRlLT53b3JrZXJfaW5zdHJ1bWVudDsKKwkJV29y a2VyTm9kZUluc3RydW1lbnRhdGlvbiAqdyA9IHBsYW5zdGF0ZS0+d29ya2VyX2luc3RydW1lbnQ7 CiAKIAkJZm9yIChpbnQgbiA9IDA7IG4gPCB3LT5udW1fd29ya2VyczsgbisrKQogCQl7Ci0JCQlJ bnN0cnVtZW50YXRpb24gKmluc3RydW1lbnQgPSAmdy0+aW5zdHJ1bWVudFtuXTsKKwkJCU5vZGVJ bnN0cnVtZW50YXRpb24gKmluc3RydW1lbnQgPSAmdy0+aW5zdHJ1bWVudFtuXTsKIAkJCWRvdWJs ZQkJbmxvb3BzID0gaW5zdHJ1bWVudC0+bmxvb3BzOwogCiAJCQlpZiAobmxvb3BzIDw9IDApCkBA IC0yMzA3LDkgKzIzMDcsOSBAQCBFeHBsYWluTm9kZShQbGFuU3RhdGUgKnBsYW5zdGF0ZSwgTGlz dCAqYW5jZXN0b3JzLAogCiAJCQlFeHBsYWluT3BlbldvcmtlcihuLCBlcyk7CiAJCQlpZiAoZXMt PmJ1ZmZlcnMpCi0JCQkJc2hvd19idWZmZXJfdXNhZ2UoZXMsICZpbnN0cnVtZW50LT5idWZ1c2Fn ZSk7CisJCQkJc2hvd19idWZmZXJfdXNhZ2UoZXMsICZpbnN0cnVtZW50LT5pbnN0ci5idWZ1c2Fn ZSk7CiAJCQlpZiAoZXMtPndhbCkKLQkJCQlzaG93X3dhbF91c2FnZShlcywgJmluc3RydW1lbnQt PndhbHVzYWdlKTsKKwkJCQlzaG93X3dhbF91c2FnZShlcywgJmluc3RydW1lbnQtPmluc3RyLndh bHVzYWdlKTsKIAkJCUV4cGxhaW5DbG9zZVdvcmtlcihuLCBlcyk7CiAJCX0KIAl9CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY01haW4uYwppbmRleCAxYTNiODAyMTYwMC4uYzBiMTc0Y2ZiYzAgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY01haW4uYwpAQCAtMzMxLDcgKzMzMSw3IEBAIHN0YW5kYXJkX0V4ZWN1dG9yUnVuKFF1 ZXJ5RGVzYyAqcXVlcnlEZXNjLAogCiAJLyogQWxsb3cgaW5zdHJ1bWVudGF0aW9uIG9mIEV4ZWN1 dG9yIG92ZXJhbGwgcnVudGltZSAqLwogCWlmIChxdWVyeURlc2MtPnRvdGFsdGltZSkKLQkJSW5z dHJTdGFydE5vZGUocXVlcnlEZXNjLT50b3RhbHRpbWUpOworCQlJbnN0clN0YXJ0KHF1ZXJ5RGVz Yy0+dG90YWx0aW1lKTsKIAogCS8qCiAJICogZXh0cmFjdCBpbmZvcm1hdGlvbiBmcm9tIHRoZSBx dWVyeSBkZXNjcmlwdG9yIGFuZCB0aGUgcXVlcnkgZmVhdHVyZS4KQEAgLTM4Myw3ICszODMsNyBA QCBzdGFuZGFyZF9FeGVjdXRvclJ1bihRdWVyeURlc2MgKnF1ZXJ5RGVzYywKIAkJZGVzdC0+clNo dXRkb3duKGRlc3QpOwogCiAJaWYgKHF1ZXJ5RGVzYy0+dG90YWx0aW1lKQotCQlJbnN0clN0b3BO b2RlKHF1ZXJ5RGVzYy0+dG90YWx0aW1lLCBlc3RhdGUtPmVzX3Byb2Nlc3NlZCk7CisJCUluc3Ry U3RvcChxdWVyeURlc2MtPnRvdGFsdGltZSk7CiAKIAlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xk Y29udGV4dCk7CiB9CkBAIC00MzMsNyArNDMzLDcgQEAgc3RhbmRhcmRfRXhlY3V0b3JGaW5pc2go UXVlcnlEZXNjICpxdWVyeURlc2MpCiAKIAkvKiBBbGxvdyBpbnN0cnVtZW50YXRpb24gb2YgRXhl Y3V0b3Igb3ZlcmFsbCBydW50aW1lICovCiAJaWYgKHF1ZXJ5RGVzYy0+dG90YWx0aW1lKQotCQlJ bnN0clN0YXJ0Tm9kZShxdWVyeURlc2MtPnRvdGFsdGltZSk7CisJCUluc3RyU3RhcnQocXVlcnlE ZXNjLT50b3RhbHRpbWUpOwogCiAJLyogUnVuIE1vZGlmeVRhYmxlIG5vZGVzIHRvIGNvbXBsZXRp b24gKi8KIAlFeGVjUG9zdHByb2Nlc3NQbGFuKGVzdGF0ZSk7CkBAIC00NDMsNyArNDQzLDcgQEAg c3RhbmRhcmRfRXhlY3V0b3JGaW5pc2goUXVlcnlEZXNjICpxdWVyeURlc2MpCiAJCUFmdGVyVHJp Z2dlckVuZFF1ZXJ5KGVzdGF0ZSk7CiAKIAlpZiAocXVlcnlEZXNjLT50b3RhbHRpbWUpCi0JCUlu c3RyU3RvcE5vZGUocXVlcnlEZXNjLT50b3RhbHRpbWUsIDApOworCQlJbnN0clN0b3AocXVlcnlE ZXNjLT50b3RhbHRpbWUpOwogCiAJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOwog CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jCmluZGV4IGFjODRhZjI5NGM5Li5jMTUzZDVj MWMzYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMKKysr IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMKQEAgLTg3LDcgKzg3LDcgQEAg dHlwZWRlZiBzdHJ1Y3QgRml4ZWRQYXJhbGxlbEV4ZWN1dG9yU3RhdGUKICAqIGluc3RydW1lbnRf b3B0aW9uczogU2FtZSBtZWFuaW5nIGhlcmUgYXMgaW4gaW5zdHJ1bWVudC5jLgogICoKICAqIGlu c3RydW1lbnRfb2Zmc2V0OiBPZmZzZXQsIHJlbGF0aXZlIHRvIHRoZSBzdGFydCBvZiB0aGlzIHN0 cnVjdHVyZSwKLSAqIG9mIHRoZSBmaXJzdCBJbnN0cnVtZW50YXRpb24gb2JqZWN0LiAgVGhpcyB3 aWxsIGRlcGVuZCBvbiB0aGUgbGVuZ3RoIG9mCisgKiBvZiB0aGUgZmlyc3QgTm9kZUluc3RydW1l bnRhdGlvbiBvYmplY3QuICBUaGlzIHdpbGwgZGVwZW5kIG9uIHRoZSBsZW5ndGggb2YKICAqIHRo ZSBwbGFuX25vZGVfaWQgYXJyYXkuCiAgKgogICogbnVtX3dvcmtlcnM6IE51bWJlciBvZiB3b3Jr ZXJzLgpAQCAtMTA0LDExICsxMDQsMTUgQEAgc3RydWN0IFNoYXJlZEV4ZWN1dG9ySW5zdHJ1bWVu dGF0aW9uCiAJaW50CQkJbnVtX3dvcmtlcnM7CiAJaW50CQkJbnVtX3BsYW5fbm9kZXM7CiAJaW50 CQkJcGxhbl9ub2RlX2lkW0ZMRVhJQkxFX0FSUkFZX01FTUJFUl07Ci0JLyogYXJyYXkgb2YgbnVt X3BsYW5fbm9kZXMgKiBudW1fd29ya2VycyBJbnN0cnVtZW50YXRpb24gb2JqZWN0cyBmb2xsb3dz ICovCisKKwkvKgorCSAqIGFycmF5IG9mIG51bV9wbGFuX25vZGVzICogbnVtX3dvcmtlcnMgTm9k ZUluc3RydW1lbnRhdGlvbiBvYmplY3RzCisJICogZm9sbG93cworCSAqLwogfTsKICNkZWZpbmUg R2V0SW5zdHJ1bWVudGF0aW9uQXJyYXkoc2VpKSBcCiAJKFN0YXRpY0Fzc2VydFZhcmlhYmxlSXNP ZlR5cGVNYWNybyhzZWksIFNoYXJlZEV4ZWN1dG9ySW5zdHJ1bWVudGF0aW9uICopLCBcCi0JIChJ bnN0cnVtZW50YXRpb24gKikgKCgoY2hhciAqKSBzZWkpICsgc2VpLT5pbnN0cnVtZW50X29mZnNl dCkpCisJIChOb2RlSW5zdHJ1bWVudGF0aW9uICopICgoKGNoYXIgKikgc2VpKSArIHNlaS0+aW5z dHJ1bWVudF9vZmZzZXQpKQogCiAvKiBDb250ZXh0IG9iamVjdCBmb3IgRXhlY1BhcmFsbGVsRXN0 aW1hdGUuICovCiB0eXBlZGVmIHN0cnVjdCBFeGVjUGFyYWxsZWxFc3RpbWF0ZUNvbnRleHQKQEAg LTcyNSw3ICs3MjksNyBAQCBFeGVjSW5pdFBhcmFsbGVsUGxhbihQbGFuU3RhdGUgKnBsYW5zdGF0 ZSwgRVN0YXRlICplc3RhdGUsCiAJCWluc3RydW1lbnRhdGlvbl9sZW4gPSBNQVhBTElHTihpbnN0 cnVtZW50YXRpb25fbGVuKTsKIAkJaW5zdHJ1bWVudF9vZmZzZXQgPSBpbnN0cnVtZW50YXRpb25f bGVuOwogCQlpbnN0cnVtZW50YXRpb25fbGVuICs9Ci0JCQltdWxfc2l6ZShzaXplb2YoSW5zdHJ1 bWVudGF0aW9uKSwKKwkJCW11bF9zaXplKHNpemVvZihOb2RlSW5zdHJ1bWVudGF0aW9uKSwKIAkJ CQkJIG11bF9zaXplKGUubm5vZGVzLCBud29ya2VycykpOwogCQlzaG1fdG9jX2VzdGltYXRlX2No dW5rKCZwY3h0LT5lc3RpbWF0b3IsIGluc3RydW1lbnRhdGlvbl9sZW4pOwogCQlzaG1fdG9jX2Vz dGltYXRlX2tleXMoJnBjeHQtPmVzdGltYXRvciwgMSk7CkBAIC04MTEsNyArODE1LDcgQEAgRXhl Y0luaXRQYXJhbGxlbFBsYW4oUGxhblN0YXRlICpwbGFuc3RhdGUsIEVTdGF0ZSAqZXN0YXRlLAog CSAqLwogCWlmIChlc3RhdGUtPmVzX2luc3RydW1lbnQpCiAJewotCQlJbnN0cnVtZW50YXRpb24g Kmluc3RydW1lbnQ7CisJCU5vZGVJbnN0cnVtZW50YXRpb24gKmluc3RydW1lbnQ7CiAJCWludAkJ CWk7CiAKIAkJaW5zdHJ1bWVudGF0aW9uID0gc2htX3RvY19hbGxvY2F0ZShwY3h0LT50b2MsIGlu c3RydW1lbnRhdGlvbl9sZW4pOwpAQCAtODIxLDcgKzgyNSw3IEBAIEV4ZWNJbml0UGFyYWxsZWxQ bGFuKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBFU3RhdGUgKmVzdGF0ZSwKIAkJaW5zdHJ1bWVudGF0 aW9uLT5udW1fcGxhbl9ub2RlcyA9IGUubm5vZGVzOwogCQlpbnN0cnVtZW50ID0gR2V0SW5zdHJ1 bWVudGF0aW9uQXJyYXkoaW5zdHJ1bWVudGF0aW9uKTsKIAkJZm9yIChpID0gMDsgaSA8IG53b3Jr ZXJzICogZS5ubm9kZXM7ICsraSkKLQkJCUluc3RySW5pdCgmaW5zdHJ1bWVudFtpXSwgZXN0YXRl LT5lc19pbnN0cnVtZW50KTsKKwkJCUluc3RySW5pdE5vZGUoJmluc3RydW1lbnRbaV0sIGVzdGF0 ZS0+ZXNfaW5zdHJ1bWVudCk7CiAJCXNobV90b2NfaW5zZXJ0KHBjeHQtPnRvYywgUEFSQUxMRUxf S0VZX0lOU1RSVU1FTlRBVElPTiwKIAkJCQkJICAgaW5zdHJ1bWVudGF0aW9uKTsKIAkJcGVpLT5p bnN0cnVtZW50YXRpb24gPSBpbnN0cnVtZW50YXRpb247CkBAIC0xMDUzLDcgKzEwNTcsNyBAQCBz dGF0aWMgYm9vbAogRXhlY1BhcmFsbGVsUmV0cmlldmVJbnN0cnVtZW50YXRpb24oUGxhblN0YXRl ICpwbGFuc3RhdGUsCiAJCQkJCQkJCQlTaGFyZWRFeGVjdXRvckluc3RydW1lbnRhdGlvbiAqaW5z dHJ1bWVudGF0aW9uKQogewotCUluc3RydW1lbnRhdGlvbiAqaW5zdHJ1bWVudDsKKwlOb2RlSW5z dHJ1bWVudGF0aW9uICppbnN0cnVtZW50OwogCWludAkJCWk7CiAJaW50CQkJbjsKIAlpbnQJCQlp Ynl0ZXM7CkBAIC0xMDgxLDkgKzEwODUsOSBAQCBFeGVjUGFyYWxsZWxSZXRyaWV2ZUluc3RydW1l bnRhdGlvbihQbGFuU3RhdGUgKnBsYW5zdGF0ZSwKIAkgKiBTd2l0Y2ggaW50byBwZXItcXVlcnkg bWVtb3J5IGNvbnRleHQuCiAJICovCiAJb2xkY29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hU byhwbGFuc3RhdGUtPnN0YXRlLT5lc19xdWVyeV9jeHQpOwotCWlieXRlcyA9IG11bF9zaXplKGlu c3RydW1lbnRhdGlvbi0+bnVtX3dvcmtlcnMsIHNpemVvZihJbnN0cnVtZW50YXRpb24pKTsKKwlp Ynl0ZXMgPSBtdWxfc2l6ZShpbnN0cnVtZW50YXRpb24tPm51bV93b3JrZXJzLCBzaXplb2YoTm9k ZUluc3RydW1lbnRhdGlvbikpOwogCXBsYW5zdGF0ZS0+d29ya2VyX2luc3RydW1lbnQgPQotCQlw YWxsb2MoaWJ5dGVzICsgb2Zmc2V0b2YoV29ya2VySW5zdHJ1bWVudGF0aW9uLCBpbnN0cnVtZW50 KSk7CisJCXBhbGxvYyhpYnl0ZXMgKyBvZmZzZXRvZihXb3JrZXJOb2RlSW5zdHJ1bWVudGF0aW9u LCBpbnN0cnVtZW50KSk7CiAJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOwogCiAJ cGxhbnN0YXRlLT53b3JrZXJfaW5zdHJ1bWVudC0+bnVtX3dvcmtlcnMgPSBpbnN0cnVtZW50YXRp b24tPm51bV93b3JrZXJzOwpAQCAtMTMxMyw3ICsxMzE3LDcgQEAgRXhlY1BhcmFsbGVsUmVwb3J0 SW5zdHJ1bWVudGF0aW9uKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLAogewogCWludAkJCWk7CiAJaW50 CQkJcGxhbl9ub2RlX2lkID0gcGxhbnN0YXRlLT5wbGFuLT5wbGFuX25vZGVfaWQ7Ci0JSW5zdHJ1 bWVudGF0aW9uICppbnN0cnVtZW50OworCU5vZGVJbnN0cnVtZW50YXRpb24gKmluc3RydW1lbnQ7 CiAKIAlJbnN0ckVuZExvb3AocGxhbnN0YXRlLT5pbnN0cnVtZW50KTsKIApkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1Byb2Nub2RlLmMgYi9zcmMvYmFja2VuZC9leGVjdXRv ci9leGVjUHJvY25vZGUuYwppbmRleCA3ZTQwYjg1MjUxNy4uMTg0NjY2MWI1MDMgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQcm9jbm9kZS5jCisrKyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNQcm9jbm9kZS5jCkBAIC00MTMsOCArNDEzLDggQEAgRXhlY0luaXROb2Rl KFBsYW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCiAJLyogU2V0IHVwIGlu c3RydW1lbnRhdGlvbiBmb3IgdGhpcyBub2RlIGlmIHJlcXVlc3RlZCAqLwogCWlmIChlc3RhdGUt PmVzX2luc3RydW1lbnQpCi0JCXJlc3VsdC0+aW5zdHJ1bWVudCA9IEluc3RyQWxsb2MoMSwgZXN0 YXRlLT5lc19pbnN0cnVtZW50LAotCQkJCQkJCQkJCXJlc3VsdC0+YXN5bmNfY2FwYWJsZSk7CisJ CXJlc3VsdC0+aW5zdHJ1bWVudCA9IEluc3RyQWxsb2NOb2RlKGVzdGF0ZS0+ZXNfaW5zdHJ1bWVu dCwKKwkJCQkJCQkJCQkJcmVzdWx0LT5hc3luY19jYXBhYmxlKTsKIAogCXJldHVybiByZXN1bHQ7 CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9pbnN0cnVtZW50LmMgYi9zcmMv YmFja2VuZC9leGVjdXRvci9pbnN0cnVtZW50LmMKaW5kZXggOTM1NGFkN2JlMTIuLmJjNTUxZjk1 YTA4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9pbnN0cnVtZW50LmMKKysrIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3IvaW5zdHJ1bWVudC5jCkBAIC0yNiw1MSArMjYsMzAgQEAgc3Rh dGljIHZvaWQgQnVmZmVyVXNhZ2VBZGQoQnVmZmVyVXNhZ2UgKmRzdCwgY29uc3QgQnVmZmVyVXNh Z2UgKmFkZCk7CiBzdGF0aWMgdm9pZCBXYWxVc2FnZUFkZChXYWxVc2FnZSAqZHN0LCBXYWxVc2Fn ZSAqYWRkKTsKIAogCi0vKiBBbGxvY2F0ZSBuZXcgaW5zdHJ1bWVudGF0aW9uIHN0cnVjdHVyZShz KSAqLworLyogR2VuZXJhbCBwdXJwb3NlIGluc3RydW1lbnRhdGlvbiBoYW5kbGluZyAqLwogSW5z dHJ1bWVudGF0aW9uICoKLUluc3RyQWxsb2MoaW50IG4sIGludCBpbnN0cnVtZW50X29wdGlvbnMs IGJvb2wgYXN5bmNfbW9kZSkKK0luc3RyQWxsb2MoaW50IGluc3RydW1lbnRfb3B0aW9ucykKIHsK LQlJbnN0cnVtZW50YXRpb24gKmluc3RyOwotCi0JLyogaW5pdGlhbGl6ZSBhbGwgZmllbGRzIHRv IHplcm9lcywgdGhlbiBtb2RpZnkgYXMgbmVlZGVkICovCi0JaW5zdHIgPSBwYWxsb2MwKG4gKiBz aXplb2YoSW5zdHJ1bWVudGF0aW9uKSk7Ci0JaWYgKGluc3RydW1lbnRfb3B0aW9ucyAmIChJTlNU UlVNRU5UX0JVRkZFUlMgfCBJTlNUUlVNRU5UX1RJTUVSIHwgSU5TVFJVTUVOVF9XQUwpKQotCXsK LQkJYm9vbAkJbmVlZF9idWZmZXJzID0gKGluc3RydW1lbnRfb3B0aW9ucyAmIElOU1RSVU1FTlRf QlVGRkVSUykgIT0gMDsKLQkJYm9vbAkJbmVlZF93YWwgPSAoaW5zdHJ1bWVudF9vcHRpb25zICYg SU5TVFJVTUVOVF9XQUwpICE9IDA7Ci0JCWJvb2wJCW5lZWRfdGltZXIgPSAoaW5zdHJ1bWVudF9v cHRpb25zICYgSU5TVFJVTUVOVF9USU1FUikgIT0gMDsKLQkJaW50CQkJaTsKLQotCQlmb3IgKGkg PSAwOyBpIDwgbjsgaSsrKQotCQl7Ci0JCQlpbnN0cltpXS5uZWVkX2J1ZnVzYWdlID0gbmVlZF9i dWZmZXJzOwotCQkJaW5zdHJbaV0ubmVlZF93YWx1c2FnZSA9IG5lZWRfd2FsOwotCQkJaW5zdHJb aV0ubmVlZF90aW1lciA9IG5lZWRfdGltZXI7Ci0JCQlpbnN0cltpXS5hc3luY19tb2RlID0gYXN5 bmNfbW9kZTsKLQkJfQotCX0KLQorCUluc3RydW1lbnRhdGlvbiAqaW5zdHIgPSBwYWxsb2MwKHNp emVvZihJbnN0cnVtZW50YXRpb24pKTsKKwlJbnN0ckluaXRPcHRpb25zKGluc3RyLCBpbnN0cnVt ZW50X29wdGlvbnMpOwogCXJldHVybiBpbnN0cjsKIH0KIAotLyogSW5pdGlhbGl6ZSBhIHByZS1h bGxvY2F0ZWQgaW5zdHJ1bWVudGF0aW9uIHN0cnVjdHVyZS4gKi8KIHZvaWQKLUluc3RySW5pdChJ bnN0cnVtZW50YXRpb24gKmluc3RyLCBpbnQgaW5zdHJ1bWVudF9vcHRpb25zKQorSW5zdHJJbml0 T3B0aW9ucyhJbnN0cnVtZW50YXRpb24gKmluc3RyLCBpbnQgaW5zdHJ1bWVudF9vcHRpb25zKQog ewotCW1lbXNldChpbnN0ciwgMCwgc2l6ZW9mKEluc3RydW1lbnRhdGlvbikpOwogCWluc3RyLT5u ZWVkX2J1ZnVzYWdlID0gKGluc3RydW1lbnRfb3B0aW9ucyAmIElOU1RSVU1FTlRfQlVGRkVSUykg IT0gMDsKIAlpbnN0ci0+bmVlZF93YWx1c2FnZSA9IChpbnN0cnVtZW50X29wdGlvbnMgJiBJTlNU UlVNRU5UX1dBTCkgIT0gMDsKIAlpbnN0ci0+bmVlZF90aW1lciA9IChpbnN0cnVtZW50X29wdGlv bnMgJiBJTlNUUlVNRU5UX1RJTUVSKSAhPSAwOwogfQogCi0vKiBFbnRyeSB0byBhIHBsYW4gbm9k ZSAqLwogdm9pZAotSW5zdHJTdGFydE5vZGUoSW5zdHJ1bWVudGF0aW9uICppbnN0cikKK0luc3Ry U3RhcnQoSW5zdHJ1bWVudGF0aW9uICppbnN0cikKIHsKIAlpZiAoaW5zdHItPm5lZWRfdGltZXIp CiAJewogCQlpZiAoIUlOU1RSX1RJTUVfSVNfWkVSTyhpbnN0ci0+c3RhcnR0aW1lKSkKLQkJCWVs b2coRVJST1IsICJJbnN0clN0YXJ0Tm9kZSBjYWxsZWQgdHdpY2UgaW4gYSByb3ciKTsKKwkJCWVs b2coRVJST1IsICJJbnN0clN0YXJ0IGNhbGxlZCB0d2ljZSBpbiBhIHJvdyIpOwogCQllbHNlCiAJ CQlJTlNUUl9USU1FX1NFVF9DVVJSRU5UKGluc3RyLT5zdGFydHRpbWUpOwogCX0KQEAgLTgzLDI0 ICs2MiwxOSBAQCBJbnN0clN0YXJ0Tm9kZShJbnN0cnVtZW50YXRpb24gKmluc3RyKQogCQlpbnN0 ci0+d2FsdXNhZ2Vfc3RhcnQgPSBwZ1dhbFVzYWdlOwogfQogCi0vKiBFeGl0IGZyb20gYSBwbGFu IG5vZGUgKi8KIHZvaWQKLUluc3RyU3RvcE5vZGUoSW5zdHJ1bWVudGF0aW9uICppbnN0ciwgZG91 YmxlIG5UdXBsZXMpCitJbnN0clN0b3AoSW5zdHJ1bWVudGF0aW9uICppbnN0cikKIHsKLQlkb3Vi bGUJCXNhdmVfdHVwbGVjb3VudCA9IGluc3RyLT50dXBsZWNvdW50OwogCWluc3RyX3RpbWUJZW5k dGltZTsKIAotCS8qIGNvdW50IHRoZSByZXR1cm5lZCB0dXBsZXMgKi8KLQlpbnN0ci0+dHVwbGVj b3VudCArPSBuVHVwbGVzOwotCiAJLyogbGV0J3MgdXBkYXRlIHRoZSB0aW1lIG9ubHkgaWYgdGhl IHRpbWVyIHdhcyByZXF1ZXN0ZWQgKi8KIAlpZiAoaW5zdHItPm5lZWRfdGltZXIpCiAJewogCQlp ZiAoSU5TVFJfVElNRV9JU19aRVJPKGluc3RyLT5zdGFydHRpbWUpKQotCQkJZWxvZyhFUlJPUiwg Ikluc3RyU3RvcE5vZGUgY2FsbGVkIHdpdGhvdXQgc3RhcnQiKTsKKwkJCWVsb2coRVJST1IsICJJ bnN0clN0b3AgY2FsbGVkIHdpdGhvdXQgc3RhcnQiKTsKIAogCQlJTlNUUl9USU1FX1NFVF9DVVJS RU5UKGVuZHRpbWUpOwotCQlJTlNUUl9USU1FX0FDQ1VNX0RJRkYoaW5zdHItPmNvdW50ZXIsIGVu ZHRpbWUsIGluc3RyLT5zdGFydHRpbWUpOworCQlJTlNUUl9USU1FX0FDQ1VNX0RJRkYoaW5zdHIt PnRvdGFsLCBlbmR0aW1lLCBpbnN0ci0+c3RhcnR0aW1lKTsKIAogCQlJTlNUUl9USU1FX1NFVF9a RVJPKGluc3RyLT5zdGFydHRpbWUpOwogCX0KQEAgLTExMyw2ICs4Nyw3NCBAQCBJbnN0clN0b3BO b2RlKEluc3RydW1lbnRhdGlvbiAqaW5zdHIsIGRvdWJsZSBuVHVwbGVzKQogCWlmIChpbnN0ci0+ bmVlZF93YWx1c2FnZSkKIAkJV2FsVXNhZ2VBY2N1bURpZmYoJmluc3RyLT53YWx1c2FnZSwKIAkJ CQkJCSAgJnBnV2FsVXNhZ2UsICZpbnN0ci0+d2FsdXNhZ2Vfc3RhcnQpOworfQorCisvKiBOb2Rl IGluc3RydW1lbnRhdGlvbiBoYW5kbGluZyAqLworCisvKiBBbGxvY2F0ZSBuZXcgbm9kZSBpbnN0 cnVtZW50YXRpb24gc3RydWN0dXJlICovCitOb2RlSW5zdHJ1bWVudGF0aW9uICoKK0luc3RyQWxs b2NOb2RlKGludCBpbnN0cnVtZW50X29wdGlvbnMsIGJvb2wgYXN5bmNfbW9kZSkKK3sKKwlOb2Rl SW5zdHJ1bWVudGF0aW9uICppbnN0ciA9IHBhbGxvYyhzaXplb2YoTm9kZUluc3RydW1lbnRhdGlv bikpOworCisJSW5zdHJJbml0Tm9kZShpbnN0ciwgaW5zdHJ1bWVudF9vcHRpb25zKTsKKwlpbnN0 ci0+YXN5bmNfbW9kZSA9IGFzeW5jX21vZGU7CisKKwlyZXR1cm4gaW5zdHI7Cit9CisKKy8qIElu aXRpYWxpemUgYSBwcmUtYWxsb2NhdGVkIGluc3RydW1lbnRhdGlvbiBzdHJ1Y3R1cmUuICovCit2 b2lkCitJbnN0ckluaXROb2RlKE5vZGVJbnN0cnVtZW50YXRpb24gKmluc3RyLCBpbnQgaW5zdHJ1 bWVudF9vcHRpb25zKQoreworCW1lbXNldChpbnN0ciwgMCwgc2l6ZW9mKE5vZGVJbnN0cnVtZW50 YXRpb24pKTsKKwlJbnN0ckluaXRPcHRpb25zKCZpbnN0ci0+aW5zdHIsIGluc3RydW1lbnRfb3B0 aW9ucyk7Cit9CisKKy8qIEVudHJ5IHRvIGEgcGxhbiBub2RlICovCit2b2lkCitJbnN0clN0YXJ0 Tm9kZShOb2RlSW5zdHJ1bWVudGF0aW9uICppbnN0cikKK3sKKwlJbnN0clN0YXJ0KCZpbnN0ci0+ aW5zdHIpOworfQorCisvKiBFeGl0IGZyb20gYSBwbGFuIG5vZGUgKi8KK3ZvaWQKK0luc3RyU3Rv cE5vZGUoTm9kZUluc3RydW1lbnRhdGlvbiAqaW5zdHIsIGRvdWJsZSBuVHVwbGVzKQoreworCWRv dWJsZQkJc2F2ZV90dXBsZWNvdW50ID0gaW5zdHItPnR1cGxlY291bnQ7CisJaW5zdHJfdGltZQll bmR0aW1lOworCisJLyogY291bnQgdGhlIHJldHVybmVkIHR1cGxlcyAqLworCWluc3RyLT50dXBs ZWNvdW50ICs9IG5UdXBsZXM7CisKKwkvKgorCSAqIFVwZGF0ZSB0aGUgdGltZSBvbmx5IGlmIHRo ZSB0aW1lciB3YXMgcmVxdWVzdGVkLgorCSAqCisJICogTm90ZSB0aGlzIGlzIGRpZmZlcmVudCBm cm9tIEluc3RyU3RvcCBiZWNhdXNlIHRvdGFsIGlzIG9ubHkgdXBkYXRlZCBpbgorCSAqIEluc3Ry RW5kTG9vcC4gV2UgbmVlZCB0aGUgc2VwYXJhdGUgY291bnRlciB2YXJpYWJsZSBiZWNhdXNlIHdl IG5lZWQgdG8KKwkgKiBjYWxjdWxhdGUgc3RhcnQtdXAgdGltZSBmb3IgdGhlIGZpcnN0IHR1cGxl IGluIGVhY2ggY3ljbGUsIGFuZCB0aGVuCisJICogYWNjdW11bGF0ZSBpdCB0b2dldGhlci4KKwkg Ki8KKwlpZiAoaW5zdHItPmluc3RyLm5lZWRfdGltZXIpCisJeworCQlpZiAoSU5TVFJfVElNRV9J U19aRVJPKGluc3RyLT5pbnN0ci5zdGFydHRpbWUpKQorCQkJZWxvZyhFUlJPUiwgIkluc3RyU3Rv cE5vZGUgY2FsbGVkIHdpdGhvdXQgc3RhcnQiKTsKKworCQlJTlNUUl9USU1FX1NFVF9DVVJSRU5U KGVuZHRpbWUpOworCQlJTlNUUl9USU1FX0FDQ1VNX0RJRkYoaW5zdHItPmNvdW50ZXIsIGVuZHRp bWUsIGluc3RyLT5pbnN0ci5zdGFydHRpbWUpOworCisJCUlOU1RSX1RJTUVfU0VUX1pFUk8oaW5z dHItPmluc3RyLnN0YXJ0dGltZSk7CisJfQorCisJLyogQWRkIGRlbHRhIG9mIGJ1ZmZlciB1c2Fn ZSBzaW5jZSBlbnRyeSB0byBub2RlJ3MgdG90YWxzICovCisJaWYgKGluc3RyLT5pbnN0ci5uZWVk X2J1ZnVzYWdlKQorCQlCdWZmZXJVc2FnZUFjY3VtRGlmZigmaW5zdHItPmluc3RyLmJ1ZnVzYWdl LAorCQkJCQkJCSAmcGdCdWZmZXJVc2FnZSwgJmluc3RyLT5pbnN0ci5idWZ1c2FnZV9zdGFydCk7 CisKKwlpZiAoaW5zdHItPmluc3RyLm5lZWRfd2FsdXNhZ2UpCisJCVdhbFVzYWdlQWNjdW1EaWZm KCZpbnN0ci0+aW5zdHIud2FsdXNhZ2UsCisJCQkJCQkgICZwZ1dhbFVzYWdlLCAmaW5zdHItPmlu c3RyLndhbHVzYWdlX3N0YXJ0KTsKIAogCS8qIElzIHRoaXMgdGhlIGZpcnN0IHR1cGxlIG9mIHRo aXMgY3ljbGU/ICovCiAJaWYgKCFpbnN0ci0+cnVubmluZykKQEAgLTEzMyw3ICsxNzUsNyBAQCBJ bnN0clN0b3BOb2RlKEluc3RydW1lbnRhdGlvbiAqaW5zdHIsIGRvdWJsZSBuVHVwbGVzKQogCiAv KiBVcGRhdGUgdHVwbGUgY291bnQgKi8KIHZvaWQKLUluc3RyVXBkYXRlVHVwbGVDb3VudChJbnN0 cnVtZW50YXRpb24gKmluc3RyLCBkb3VibGUgblR1cGxlcykKK0luc3RyVXBkYXRlVHVwbGVDb3Vu dChOb2RlSW5zdHJ1bWVudGF0aW9uICppbnN0ciwgZG91YmxlIG5UdXBsZXMpCiB7CiAJLyogY291 bnQgdGhlIHJldHVybmVkIHR1cGxlcyAqLwogCWluc3RyLT50dXBsZWNvdW50ICs9IG5UdXBsZXM7 CkBAIC0xNDEsMjQgKzE4MywyNCBAQCBJbnN0clVwZGF0ZVR1cGxlQ291bnQoSW5zdHJ1bWVudGF0 aW9uICppbnN0ciwgZG91YmxlIG5UdXBsZXMpCiAKIC8qIEZpbmlzaCBhIHJ1biBjeWNsZSBmb3Ig YSBwbGFuIG5vZGUgKi8KIHZvaWQKLUluc3RyRW5kTG9vcChJbnN0cnVtZW50YXRpb24gKmluc3Ry KQorSW5zdHJFbmRMb29wKE5vZGVJbnN0cnVtZW50YXRpb24gKmluc3RyKQogewogCS8qIFNraXAg aWYgbm90aGluZyBoYXMgaGFwcGVuZWQsIG9yIGFscmVhZHkgc2h1dCBkb3duICovCiAJaWYgKCFp bnN0ci0+cnVubmluZykKIAkJcmV0dXJuOwogCi0JaWYgKCFJTlNUUl9USU1FX0lTX1pFUk8oaW5z dHItPnN0YXJ0dGltZSkpCisJaWYgKCFJTlNUUl9USU1FX0lTX1pFUk8oaW5zdHItPmluc3RyLnN0 YXJ0dGltZSkpCiAJCWVsb2coRVJST1IsICJJbnN0ckVuZExvb3AgY2FsbGVkIG9uIHJ1bm5pbmcg bm9kZSIpOwogCiAJLyogQWNjdW11bGF0ZSBwZXItY3ljbGUgc3RhdGlzdGljcyBpbnRvIHRvdGFs cyAqLwogCUlOU1RSX1RJTUVfQUREKGluc3RyLT5zdGFydHVwLCBpbnN0ci0+Zmlyc3R0dXBsZSk7 Ci0JSU5TVFJfVElNRV9BREQoaW5zdHItPnRvdGFsLCBpbnN0ci0+Y291bnRlcik7CisJSU5TVFJf VElNRV9BREQoaW5zdHItPmluc3RyLnRvdGFsLCBpbnN0ci0+Y291bnRlcik7CiAJaW5zdHItPm50 dXBsZXMgKz0gaW5zdHItPnR1cGxlY291bnQ7CiAJaW5zdHItPm5sb29wcyArPSAxOwogCiAJLyog UmVzZXQgZm9yIG5leHQgY3ljbGUgKGlmIGFueSkgKi8KIAlpbnN0ci0+cnVubmluZyA9IGZhbHNl OwotCUlOU1RSX1RJTUVfU0VUX1pFUk8oaW5zdHItPnN0YXJ0dGltZSk7CisJSU5TVFJfVElNRV9T RVRfWkVSTyhpbnN0ci0+aW5zdHIuc3RhcnR0aW1lKTsKIAlJTlNUUl9USU1FX1NFVF9aRVJPKGlu c3RyLT5jb3VudGVyKTsKIAlJTlNUUl9USU1FX1NFVF9aRVJPKGluc3RyLT5maXJzdHR1cGxlKTsK IAlpbnN0ci0+dHVwbGVjb3VudCA9IDA7CkBAIC0xNjYsNyArMjA4LDcgQEAgSW5zdHJFbmRMb29w KEluc3RydW1lbnRhdGlvbiAqaW5zdHIpCiAKIC8qIGFnZ3JlZ2F0ZSBpbnN0cnVtZW50YXRpb24g aW5mb3JtYXRpb24gKi8KIHZvaWQKLUluc3RyQWdnTm9kZShJbnN0cnVtZW50YXRpb24gKmRzdCwg SW5zdHJ1bWVudGF0aW9uICphZGQpCitJbnN0ckFnZ05vZGUoTm9kZUluc3RydW1lbnRhdGlvbiAq ZHN0LCBOb2RlSW5zdHJ1bWVudGF0aW9uICphZGQpCiB7CiAJaWYgKCFkc3QtPnJ1bm5pbmcgJiYg YWRkLT5ydW5uaW5nKQogCXsKQEAgLTE4MSw3ICsyMjMsNyBAQCBJbnN0ckFnZ05vZGUoSW5zdHJ1 bWVudGF0aW9uICpkc3QsIEluc3RydW1lbnRhdGlvbiAqYWRkKQogCiAJZHN0LT50dXBsZWNvdW50 ICs9IGFkZC0+dHVwbGVjb3VudDsKIAlJTlNUUl9USU1FX0FERChkc3QtPnN0YXJ0dXAsIGFkZC0+ c3RhcnR1cCk7Ci0JSU5TVFJfVElNRV9BREQoZHN0LT50b3RhbCwgYWRkLT50b3RhbCk7CisJSU5T VFJfVElNRV9BREQoZHN0LT5pbnN0ci50b3RhbCwgYWRkLT5pbnN0ci50b3RhbCk7CiAJZHN0LT5u dHVwbGVzICs9IGFkZC0+bnR1cGxlczsKIAlkc3QtPm50dXBsZXMyICs9IGFkZC0+bnR1cGxlczI7 CiAJZHN0LT5ubG9vcHMgKz0gYWRkLT5ubG9vcHM7CkBAIC0xODksMTEgKzIzMSwxMSBAQCBJbnN0 ckFnZ05vZGUoSW5zdHJ1bWVudGF0aW9uICpkc3QsIEluc3RydW1lbnRhdGlvbiAqYWRkKQogCWRz dC0+bmZpbHRlcmVkMiArPSBhZGQtPm5maWx0ZXJlZDI7CiAKIAkvKiBBZGQgZGVsdGEgb2YgYnVm ZmVyIHVzYWdlIHNpbmNlIGVudHJ5IHRvIG5vZGUncyB0b3RhbHMgKi8KLQlpZiAoZHN0LT5uZWVk X2J1ZnVzYWdlKQotCQlCdWZmZXJVc2FnZUFkZCgmZHN0LT5idWZ1c2FnZSwgJmFkZC0+YnVmdXNh Z2UpOworCWlmIChkc3QtPmluc3RyLm5lZWRfYnVmdXNhZ2UpCisJCUJ1ZmZlclVzYWdlQWRkKCZk c3QtPmluc3RyLmJ1ZnVzYWdlLCAmYWRkLT5pbnN0ci5idWZ1c2FnZSk7CiAKLQlpZiAoZHN0LT5u ZWVkX3dhbHVzYWdlKQotCQlXYWxVc2FnZUFkZCgmZHN0LT53YWx1c2FnZSwgJmFkZC0+d2FsdXNh Z2UpOworCWlmIChkc3QtPmluc3RyLm5lZWRfd2FsdXNhZ2UpCisJCVdhbFVzYWdlQWRkKCZkc3Qt Pmluc3RyLndhbHVzYWdlLCAmYWRkLT5pbnN0ci53YWx1c2FnZSk7CiB9CiAKIC8qIFRyaWdnZXIg aW5zdHJ1bWVudGF0aW9uIGhhbmRsaW5nICovCkBAIC0yMDQsNyArMjQ2LDcgQEAgSW5zdHJBbGxv Y1RyaWdnZXIoaW50IG4sIGludCBpbnN0cnVtZW50X29wdGlvbnMpCiAJaW50CQkJaTsKIAogCWZv ciAoaSA9IDA7IGkgPCBuOyBpKyspCi0JCUluc3RySW5pdCgmdGdpbnN0cltpXS5pbnN0ciwgaW5z dHJ1bWVudF9vcHRpb25zKTsKKwkJSW5zdHJJbml0T3B0aW9ucygmdGdpbnN0cltpXS5pbnN0ciwg aW5zdHJ1bWVudF9vcHRpb25zKTsKIAogCXJldHVybiB0Z2luc3RyOwogfQpAQCAtMjEyLDEzICsy NTQsMTMgQEAgSW5zdHJBbGxvY1RyaWdnZXIoaW50IG4sIGludCBpbnN0cnVtZW50X29wdGlvbnMp CiB2b2lkCiBJbnN0clN0YXJ0VHJpZ2dlcihUcmlnZ2VySW5zdHJ1bWVudGF0aW9uICp0Z2luc3Ry KQogewotCUluc3RyU3RhcnROb2RlKCZ0Z2luc3RyLT5pbnN0cik7CisJSW5zdHJTdGFydCgmdGdp bnN0ci0+aW5zdHIpOwogfQogCiB2b2lkCiBJbnN0clN0b3BUcmlnZ2VyKFRyaWdnZXJJbnN0cnVt ZW50YXRpb24gKnRnaW5zdHIsIGludCBmaXJpbmdzKQogewotCUluc3RyU3RvcE5vZGUoJnRnaW5z dHItPmluc3RyLCAwKTsKKwlJbnN0clN0b3AoJnRnaW5zdHItPmluc3RyKTsKIAl0Z2luc3RyLT5m aXJpbmdzICs9IGZpcmluZ3M7CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9y L2luc3RydW1lbnQuaCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2luc3RydW1lbnQuaAppbmRleCBh OWMyMjMzMjI3Zi4uYjExZDY0NjMzYjUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9y L2luc3RydW1lbnQuaAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9pbnN0cnVtZW50LmgKQEAg LTY3LDM4ICs2Nyw1NSBAQCB0eXBlZGVmIGVudW0gSW5zdHJ1bWVudE9wdGlvbgogCUlOU1RSVU1F TlRfQUxMID0gUEdfSU5UMzJfTUFYCiB9IEluc3RydW1lbnRPcHRpb247CiAKKy8qCisgKiBHZW5l cmFsIHB1cnBvc2UgaW5zdHJ1bWVudGF0aW9uIHRoYXQgY2FuIGNhcHR1cmUgdGltZSBhbmQgV0FM L2J1ZmZlciB1c2FnZQorICoKKyAqIEluaXRpYWxpemVkIHRocm91Z2ggSW5zdHJBbGxvYywgZm9s bG93ZWQgYnkgb25lIG9yIG1vcmUgY2FsbHMgdG8gYSBwYWlyIG9mCisgKiBJbnN0clN0YXJ0L0lu c3RyU3RvcCAoYWN0aXZpdHkgaXMgbWVhc3VyZWQgaW5iZXR3ZWVuKS4KKyAqLwogdHlwZWRlZiBz dHJ1Y3QgSW5zdHJ1bWVudGF0aW9uCiB7Ci0JLyogUGFyYW1ldGVycyBzZXQgYXQgbm9kZSBjcmVh dGlvbjogKi8KKwkvKiBQYXJhbWV0ZXJzIHNldCBhdCBjcmVhdGlvbjogKi8KIAlib29sCQluZWVk X3RpbWVyOwkJLyogdHJ1ZSBpZiB3ZSBuZWVkIHRpbWVyIGRhdGEgKi8KIAlib29sCQluZWVkX2J1 ZnVzYWdlOwkvKiB0cnVlIGlmIHdlIG5lZWQgYnVmZmVyIHVzYWdlIGRhdGEgKi8KIAlib29sCQlu ZWVkX3dhbHVzYWdlOwkvKiB0cnVlIGlmIHdlIG5lZWQgV0FMIHVzYWdlIGRhdGEgKi8KKwkvKiBJ bnRlcm5hbCBzdGF0ZSBrZWVwaW5nOiAqLworCWluc3RyX3RpbWUJc3RhcnR0aW1lOwkJLyogc3Rh cnQgdGltZSBvZiBsYXN0IEluc3RyU3RhcnQgKi8KKwlCdWZmZXJVc2FnZSBidWZ1c2FnZV9zdGFy dDsgLyogYnVmZmVyIHVzYWdlIGF0IHN0YXJ0ICovCisJV2FsVXNhZ2UJd2FsdXNhZ2Vfc3RhcnQ7 IC8qIFdBTCB1c2FnZSBhdCBzdGFydCAqLworCS8qIEFjY3VtdWxhdGVkIHN0YXRpc3RpY3M6ICov CisJaW5zdHJfdGltZQl0b3RhbDsJCQkvKiB0b3RhbCBydW50aW1lICovCisJQnVmZmVyVXNhZ2Ug YnVmdXNhZ2U7CQkvKiB0b3RhbCBidWZmZXIgdXNhZ2UgKi8KKwlXYWxVc2FnZQl3YWx1c2FnZTsJ CS8qIHRvdGFsIFdBTCB1c2FnZSAqLworfSBJbnN0cnVtZW50YXRpb247CisKKy8qCisgKiBTcGVj aWFsaXplZCBpbnN0cnVtZW50YXRpb24gZm9yIHBlci1ub2RlIGV4ZWN1dGlvbiBzdGF0aXN0aWNz CisgKi8KK3R5cGVkZWYgc3RydWN0IE5vZGVJbnN0cnVtZW50YXRpb24KK3sKKwlJbnN0cnVtZW50 YXRpb24gaW5zdHI7CisJLyogUGFyYW1ldGVycyBzZXQgYXQgbm9kZSBjcmVhdGlvbjogKi8KIAli b29sCQlhc3luY19tb2RlOwkJLyogdHJ1ZSBpZiBub2RlIGlzIGluIGFzeW5jIG1vZGUgKi8KIAkv KiBJbmZvIGFib3V0IGN1cnJlbnQgcGxhbiBjeWNsZTogKi8KIAlib29sCQlydW5uaW5nOwkJLyog dHJ1ZSBpZiB3ZSd2ZSBjb21wbGV0ZWQgZmlyc3QgdHVwbGUgKi8KLQlpbnN0cl90aW1lCXN0YXJ0 dGltZTsJCS8qIHN0YXJ0IHRpbWUgb2YgY3VycmVudCBpdGVyYXRpb24gb2Ygbm9kZSAqLwogCWlu c3RyX3RpbWUJY291bnRlcjsJCS8qIGFjY3VtdWxhdGVkIHJ1bnRpbWUgZm9yIHRoaXMgbm9kZSAq LwogCWluc3RyX3RpbWUJZmlyc3R0dXBsZTsJCS8qIHRpbWUgZm9yIGZpcnN0IHR1cGxlIG9mIHRo aXMgY3ljbGUgKi8KIAlkb3VibGUJCXR1cGxlY291bnQ7CQkvKiAjIG9mIHR1cGxlcyBlbWl0dGVk IHNvIGZhciB0aGlzIGN5Y2xlICovCi0JQnVmZmVyVXNhZ2UgYnVmdXNhZ2Vfc3RhcnQ7IC8qIGJ1 ZmZlciB1c2FnZSBhdCBzdGFydCAqLwotCVdhbFVzYWdlCXdhbHVzYWdlX3N0YXJ0OyAvKiBXQUwg dXNhZ2UgYXQgc3RhcnQgKi8KIAkvKiBBY2N1bXVsYXRlZCBzdGF0aXN0aWNzIGFjcm9zcyBhbGwg Y29tcGxldGVkIGN5Y2xlczogKi8KIAlpbnN0cl90aW1lCXN0YXJ0dXA7CQkvKiB0b3RhbCBzdGFy dHVwIHRpbWUgKi8KLQlpbnN0cl90aW1lCXRvdGFsOwkJCS8qIHRvdGFsIHRpbWUgKi8KIAlkb3Vi bGUJCW50dXBsZXM7CQkvKiB0b3RhbCB0dXBsZXMgcHJvZHVjZWQgKi8KIAlkb3VibGUJCW50dXBs ZXMyOwkJLyogc2Vjb25kYXJ5IG5vZGUtc3BlY2lmaWMgdHVwbGUgY291bnRlciAqLwogCWRvdWJs ZQkJbmxvb3BzOwkJCS8qICMgb2YgcnVuIGN5Y2xlcyBmb3IgdGhpcyBub2RlICovCiAJZG91Ymxl CQluZmlsdGVyZWQxOwkJLyogIyBvZiB0dXBsZXMgcmVtb3ZlZCBieSBzY2FucXVhbCBvciBqb2lu cXVhbCAqLwogCWRvdWJsZQkJbmZpbHRlcmVkMjsJCS8qICMgb2YgdHVwbGVzIHJlbW92ZWQgYnkg Im90aGVyIiBxdWFscyAqLwotCUJ1ZmZlclVzYWdlIGJ1ZnVzYWdlOwkJLyogdG90YWwgYnVmZmVy IHVzYWdlICovCi0JV2FsVXNhZ2UJd2FsdXNhZ2U7CQkvKiB0b3RhbCBXQUwgdXNhZ2UgKi8KLX0g SW5zdHJ1bWVudGF0aW9uOworfSBOb2RlSW5zdHJ1bWVudGF0aW9uOwogCi10eXBlZGVmIHN0cnVj dCBXb3JrZXJJbnN0cnVtZW50YXRpb24KK3R5cGVkZWYgc3RydWN0IFdvcmtlck5vZGVJbnN0cnVt ZW50YXRpb24KIHsKIAlpbnQJCQludW1fd29ya2VyczsJLyogIyBvZiBzdHJ1Y3R1cmVzIHRoYXQg Zm9sbG93ICovCi0JSW5zdHJ1bWVudGF0aW9uIGluc3RydW1lbnRbRkxFWElCTEVfQVJSQVlfTUVN QkVSXTsKLX0gV29ya2VySW5zdHJ1bWVudGF0aW9uOworCU5vZGVJbnN0cnVtZW50YXRpb24gaW5z dHJ1bWVudFtGTEVYSUJMRV9BUlJBWV9NRU1CRVJdOworfSBXb3JrZXJOb2RlSW5zdHJ1bWVudGF0 aW9uOwogCiB0eXBlZGVmIHN0cnVjdCBUcmlnZ2VySW5zdHJ1bWVudGF0aW9uCiB7CkBAIC0xMTAs MTQgKzEyNywxOSBAQCB0eXBlZGVmIHN0cnVjdCBUcmlnZ2VySW5zdHJ1bWVudGF0aW9uCiBleHRl cm4gUEdETExJTVBPUlQgQnVmZmVyVXNhZ2UgcGdCdWZmZXJVc2FnZTsKIGV4dGVybiBQR0RMTElN UE9SVCBXYWxVc2FnZSBwZ1dhbFVzYWdlOwogCi1leHRlcm4gSW5zdHJ1bWVudGF0aW9uICpJbnN0 ckFsbG9jKGludCBuLCBpbnQgaW5zdHJ1bWVudF9vcHRpb25zLAotCQkJCQkJCQkgICBib29sIGFz eW5jX21vZGUpOwotZXh0ZXJuIHZvaWQgSW5zdHJJbml0KEluc3RydW1lbnRhdGlvbiAqaW5zdHIs IGludCBpbnN0cnVtZW50X29wdGlvbnMpOwotZXh0ZXJuIHZvaWQgSW5zdHJTdGFydE5vZGUoSW5z dHJ1bWVudGF0aW9uICppbnN0cik7Ci1leHRlcm4gdm9pZCBJbnN0clN0b3BOb2RlKEluc3RydW1l bnRhdGlvbiAqaW5zdHIsIGRvdWJsZSBuVHVwbGVzKTsKLWV4dGVybiB2b2lkIEluc3RyVXBkYXRl VHVwbGVDb3VudChJbnN0cnVtZW50YXRpb24gKmluc3RyLCBkb3VibGUgblR1cGxlcyk7Ci1leHRl cm4gdm9pZCBJbnN0ckVuZExvb3AoSW5zdHJ1bWVudGF0aW9uICppbnN0cik7Ci1leHRlcm4gdm9p ZCBJbnN0ckFnZ05vZGUoSW5zdHJ1bWVudGF0aW9uICpkc3QsIEluc3RydW1lbnRhdGlvbiAqYWRk KTsKK2V4dGVybiBJbnN0cnVtZW50YXRpb24gKkluc3RyQWxsb2MoaW50IGluc3RydW1lbnRfb3B0 aW9ucyk7CitleHRlcm4gdm9pZCBJbnN0ckluaXRPcHRpb25zKEluc3RydW1lbnRhdGlvbiAqaW5z dHIsIGludCBpbnN0cnVtZW50X29wdGlvbnMpOworZXh0ZXJuIHZvaWQgSW5zdHJTdGFydChJbnN0 cnVtZW50YXRpb24gKmluc3RyKTsKK2V4dGVybiB2b2lkIEluc3RyU3RvcChJbnN0cnVtZW50YXRp b24gKmluc3RyKTsKKworZXh0ZXJuIE5vZGVJbnN0cnVtZW50YXRpb24gKkluc3RyQWxsb2NOb2Rl KGludCBpbnN0cnVtZW50X29wdGlvbnMsCisJCQkJCQkJCQkJICAgYm9vbCBhc3luY19tb2RlKTsK K2V4dGVybiB2b2lkIEluc3RySW5pdE5vZGUoTm9kZUluc3RydW1lbnRhdGlvbiAqaW5zdHIsIGlu dCBpbnN0cnVtZW50X29wdGlvbnMpOworZXh0ZXJuIHZvaWQgSW5zdHJTdGFydE5vZGUoTm9kZUlu c3RydW1lbnRhdGlvbiAqaW5zdHIpOworZXh0ZXJuIHZvaWQgSW5zdHJTdG9wTm9kZShOb2RlSW5z dHJ1bWVudGF0aW9uICppbnN0ciwgZG91YmxlIG5UdXBsZXMpOworZXh0ZXJuIHZvaWQgSW5zdHJV cGRhdGVUdXBsZUNvdW50KE5vZGVJbnN0cnVtZW50YXRpb24gKmluc3RyLCBkb3VibGUgblR1cGxl cyk7CitleHRlcm4gdm9pZCBJbnN0ckVuZExvb3AoTm9kZUluc3RydW1lbnRhdGlvbiAqaW5zdHIp OworZXh0ZXJuIHZvaWQgSW5zdHJBZ2dOb2RlKE5vZGVJbnN0cnVtZW50YXRpb24gKmRzdCwgTm9k ZUluc3RydW1lbnRhdGlvbiAqYWRkKTsKIAogZXh0ZXJuIFRyaWdnZXJJbnN0cnVtZW50YXRpb24g Kkluc3RyQWxsb2NUcmlnZ2VyKGludCBuLCBpbnQgaW5zdHJ1bWVudF9vcHRpb25zKTsKIGV4dGVy biB2b2lkIEluc3RyU3RhcnRUcmlnZ2VyKFRyaWdnZXJJbnN0cnVtZW50YXRpb24gKnRnaW5zdHIp OwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggYi9zcmMvaW5jbHVk ZS9ub2Rlcy9leGVjbm9kZXMuaAppbmRleCBhNDNiZDQyOGE5MS4uNjA1YzdhNmNjMzkgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25v ZGVzL2V4ZWNub2Rlcy5oCkBAIC0xMTc1LDggKzExNzUsMTAgQEAgdHlwZWRlZiBzdHJ1Y3QgUGxh blN0YXRlCiAJRXhlY1Byb2NOb2RlTXRkIEV4ZWNQcm9jTm9kZVJlYWw7CS8qIGFjdHVhbCBmdW5j dGlvbiwgaWYgYWJvdmUgaXMgYQogCQkJCQkJCQkJCSAqIHdyYXBwZXIgKi8KIAotCUluc3RydW1l bnRhdGlvbiAqaW5zdHJ1bWVudDsJLyogT3B0aW9uYWwgcnVudGltZSBzdGF0cyBmb3IgdGhpcyBu b2RlICovCi0JV29ya2VySW5zdHJ1bWVudGF0aW9uICp3b3JrZXJfaW5zdHJ1bWVudDsJLyogcGVy LXdvcmtlciBpbnN0cnVtZW50YXRpb24gKi8KKwlOb2RlSW5zdHJ1bWVudGF0aW9uICppbnN0cnVt ZW50OwkvKiBPcHRpb25hbCBydW50aW1lIHN0YXRzIGZvciB0aGlzCisJCQkJCQkJCQkJICogbm9k ZSAqLworCVdvcmtlck5vZGVJbnN0cnVtZW50YXRpb24gKndvcmtlcl9pbnN0cnVtZW50OwkvKiBw ZXItd29ya2VyCisJCQkJCQkJCQkJCQkJICogaW5zdHJ1bWVudGF0aW9uICovCiAKIAkvKiBQZXIt d29ya2VyIEpJVCBpbnN0cnVtZW50YXRpb24gKi8KIAlzdHJ1Y3QgU2hhcmVkSml0SW5zdHJ1bWVu dGF0aW9uICp3b3JrZXJfaml0X2luc3RydW1lbnQ7CmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdp bmRlbnQvdHlwZWRlZnMubGlzdCBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0Cmlu ZGV4IGZkM2VjN2E3MjM2Li43ZGMwMDczYWI2OCAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5k ZW50L3R5cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QK QEAgLTE3ODUsNiArMTc4NSw3IEBAIE5leHRTYW1wbGVCbG9ja19mdW5jdGlvbgogTmV4dFNhbXBs ZVR1cGxlX2Z1bmN0aW9uCiBOZXh0VmFsdWVFeHByCiBOb2RlCitOb2RlSW5zdHJ1bWVudGF0aW9u CiBOb2RlVGFnCiBOb25FbXB0eVJhbmdlCiBOb25lQ29tcHJlc3NvclN0YXRlCkBAIC0zMzc3LDkg KzMzNzgsOSBAQCBXb3JrVGFibGVTY2FuCiBXb3JrVGFibGVTY2FuU3RhdGUKIFdvcmtlckluZm8K IFdvcmtlckluZm9EYXRhCi1Xb3JrZXJJbnN0cnVtZW50YXRpb24KIFdvcmtlckpvYkR1bXBQdHJU eXBlCiBXb3JrZXJKb2JSZXN0b3JlUHRyVHlwZQorV29ya2VyTm9kZUluc3RydW1lbnRhdGlvbgog V29ya2luZ19TdGF0ZQogV3JpdGVCdWZQdHJUeXBlCiBXcml0ZUJ5dGVQdHJUeXBlCi0tIAoyLjQ3 LjEKCg== --00000000000002247a064c7bb7b8 Content-Type: application/octet-stream; name="v7-0001-instrumentation-Separate-trigger-logic-from-other.patch" Content-Disposition: attachment; filename="v7-0001-instrumentation-Separate-trigger-logic-from-other.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmh8zh070 RnJvbSAyYzBjOWMxNzJjZmQyM2NiODkyNjgwM2VlOGRiNTE5MTViN2NjYzdkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpEYXRlOiBT YXQsIDEgTWFyIDIwMjUgMTk6MzE6MzAgLTA4MDAKU3ViamVjdDogW1BBVENIIHY3IDEvOF0gaW5z dHJ1bWVudGF0aW9uOiBTZXBhcmF0ZSB0cmlnZ2VyIGxvZ2ljIGZyb20gb3RoZXIKIHVzZXMKCklu dHJvZHVjZSBUcmlnZ2VySW5zdHJ1bWVudGF0aW9uIHRvIGNhcHR1cmUgdHJpZ2dlciB0aW1pbmcg YW5kIGZpcmluZ3MKKHByZXZpb3VzbHkgY291bnRlZCBpbiAibnR1cGxlcyIpLCB0byBhaWQgYSBm dXR1cmUgcmVmYWN0b3JpbmcgdGhhdApzcGxpdHMgb3V0IGFsbCBJbnN0cnVtZW50YXRpb24gZmll bGRzIGJleW9uZCB0aW1pbmcgYW5kIFdBTC9idWZmZXJzIGludG8KbW9yZSBzcGVjaWZpYyBzdHJ1 Y3RzLgoKQXV0aG9yOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpSZXZpZXdlZC1ieToK RGlzY3Vzc2lvbjoKLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMgICAgfCAxOSAr KysrKysrKy0tLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy90cmlnZ2VyLmMgICAgfCAy MiArKysrKysrKysrKy0tLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5j ICAgfCAgMiArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvaW5zdHJ1bWVudC5jIHwgMjYgKysrKysr KysrKysrKysrKysrKysrKysrKysKIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL2luc3RydW1lbnQuaCB8 IDEyICsrKysrKysrKysrKwogc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggICAgIHwgIDIg Ky0KIHNyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0ICB8ICAxICsKIDcgZmlsZXMgY2hh bmdlZCwgNjAgaW5zZXJ0aW9ucygrKSwgMjQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFp bi5jCmluZGV4IDkzOTE4YTIyM2I4Li4wOWIxMzgwN2Q5MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvZXhwbGFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4u YwpAQCAtMTA5OSwxOCArMTA5OSwxNSBAQCByZXBvcnRfdHJpZ2dlcnMoUmVzdWx0UmVsSW5mbyAq ckluZm8sIGJvb2wgc2hvd19yZWxuYW1lLCBFeHBsYWluU3RhdGUgKmVzKQogCWZvciAobnQgPSAw OyBudCA8IHJJbmZvLT5yaV9UcmlnRGVzYy0+bnVtdHJpZ2dlcnM7IG50KyspCiAJewogCQlUcmln Z2VyICAgICp0cmlnID0gckluZm8tPnJpX1RyaWdEZXNjLT50cmlnZ2VycyArIG50OwotCQlJbnN0 cnVtZW50YXRpb24gKmluc3RyID0gckluZm8tPnJpX1RyaWdJbnN0cnVtZW50ICsgbnQ7CisJCVRy aWdnZXJJbnN0cnVtZW50YXRpb24gKnRnaW5zdHIgPSBySW5mby0+cmlfVHJpZ0luc3RydW1lbnQg KyBudDsKIAkJY2hhcgkgICAqcmVsbmFtZTsKIAkJY2hhcgkgICAqY29ubmFtZSA9IE5VTEw7CiAK LQkJLyogTXVzdCBjbGVhbiB1cCBpbnN0cnVtZW50YXRpb24gc3RhdGUgKi8KLQkJSW5zdHJFbmRM b29wKGluc3RyKTsKLQogCQkvKgogCQkgKiBXZSBpZ25vcmUgdHJpZ2dlcnMgdGhhdCB3ZXJlIG5l dmVyIGludm9rZWQ7IHRoZXkgbGlrZWx5IGFyZW4ndAogCQkgKiByZWxldmFudCB0byB0aGUgY3Vy cmVudCBxdWVyeSB0eXBlLgogCQkgKi8KLQkJaWYgKGluc3RyLT5udHVwbGVzID09IDApCisJCWlm ICh0Z2luc3RyLT5maXJpbmdzID09IDApCiAJCQljb250aW51ZTsKIAogCQlFeHBsYWluT3Blbkdy b3VwKCJUcmlnZ2VyIiwgTlVMTCwgdHJ1ZSwgZXMpOwpAQCAtMTEzNSwxMSArMTEzMiwxMSBAQCBy ZXBvcnRfdHJpZ2dlcnMoUmVzdWx0UmVsSW5mbyAqckluZm8sIGJvb2wgc2hvd19yZWxuYW1lLCBF eHBsYWluU3RhdGUgKmVzKQogCQkJaWYgKHNob3dfcmVsbmFtZSkKIAkJCQlhcHBlbmRTdHJpbmdJ bmZvKGVzLT5zdHIsICIgb24gJXMiLCByZWxuYW1lKTsKIAkJCWlmIChlcy0+dGltaW5nKQotCQkJ CWFwcGVuZFN0cmluZ0luZm8oZXMtPnN0ciwgIjogdGltZT0lLjNmIGNhbGxzPSUuMGZcbiIsCi0J CQkJCQkJCSBJTlNUUl9USU1FX0dFVF9NSUxMSVNFQyhpbnN0ci0+dG90YWwpLAotCQkJCQkJCQkg aW5zdHItPm50dXBsZXMpOworCQkJCWFwcGVuZFN0cmluZ0luZm8oZXMtPnN0ciwgIjogdGltZT0l LjNmIGNhbGxzPSVkXG4iLAorCQkJCQkJCQkgSU5TVFJfVElNRV9HRVRfTUlMTElTRUModGdpbnN0 ci0+aW5zdHIudG90YWwpLAorCQkJCQkJCQkgdGdpbnN0ci0+ZmlyaW5ncyk7CiAJCQllbHNlCi0J CQkJYXBwZW5kU3RyaW5nSW5mbyhlcy0+c3RyLCAiOiBjYWxscz0lLjBmXG4iLCBpbnN0ci0+bnR1 cGxlcyk7CisJCQkJYXBwZW5kU3RyaW5nSW5mbyhlcy0+c3RyLCAiOiBjYWxscz0lZFxuIiwgdGdp bnN0ci0+ZmlyaW5ncyk7CiAJCX0KIAkJZWxzZQogCQl7CkBAIC0xMTQ5LDkgKzExNDYsOSBAQCBy ZXBvcnRfdHJpZ2dlcnMoUmVzdWx0UmVsSW5mbyAqckluZm8sIGJvb2wgc2hvd19yZWxuYW1lLCBF eHBsYWluU3RhdGUgKmVzKQogCQkJRXhwbGFpblByb3BlcnR5VGV4dCgiUmVsYXRpb24iLCByZWxu YW1lLCBlcyk7CiAJCQlpZiAoZXMtPnRpbWluZykKIAkJCQlFeHBsYWluUHJvcGVydHlGbG9hdCgi VGltZSIsICJtcyIsCi0JCQkJCQkJCQkgSU5TVFJfVElNRV9HRVRfTUlMTElTRUMoaW5zdHItPnRv dGFsKSwgMywKKwkJCQkJCQkJCSBJTlNUUl9USU1FX0dFVF9NSUxMSVNFQyh0Z2luc3RyLT5pbnN0 ci50b3RhbCksIDMsCiAJCQkJCQkJCQkgZXMpOwotCQkJRXhwbGFpblByb3BlcnR5RmxvYXQoIkNh bGxzIiwgTlVMTCwgaW5zdHItPm50dXBsZXMsIDAsIGVzKTsKKwkJCUV4cGxhaW5Qcm9wZXJ0eUlu dGVnZXIoIkNhbGxzIiwgTlVMTCwgdGdpbnN0ci0+ZmlyaW5ncywgZXMpOwogCQl9CiAKIAkJaWYg KGNvbm5hbWUpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy90cmlnZ2VyLmMgYi9z cmMvYmFja2VuZC9jb21tYW5kcy90cmlnZ2VyLmMKaW5kZXggOThkNDAyYzBhM2IuLmMzMzYwMDcz MTQxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90cmlnZ2VyLmMKKysrIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvdHJpZ2dlci5jCkBAIC05MCw3ICs5MCw3IEBAIHN0YXRpYyBib29s IFRyaWdnZXJFbmFibGVkKEVTdGF0ZSAqZXN0YXRlLCBSZXN1bHRSZWxJbmZvICpyZWxpbmZvLAog c3RhdGljIEhlYXBUdXBsZSBFeGVjQ2FsbFRyaWdnZXJGdW5jKFRyaWdnZXJEYXRhICp0cmlnZGF0 YSwKIAkJCQkJCQkJCSBpbnQgdGdpbmR4LAogCQkJCQkJCQkJIEZtZ3JJbmZvICpmaW5mbywKLQkJ CQkJCQkJCSBJbnN0cnVtZW50YXRpb24gKmluc3RyLAorCQkJCQkJCQkJIFRyaWdnZXJJbnN0cnVt ZW50YXRpb24gKmluc3RyLAogCQkJCQkJCQkJIE1lbW9yeUNvbnRleHQgcGVyX3R1cGxlX2NvbnRl eHQpOwogc3RhdGljIHZvaWQgQWZ0ZXJUcmlnZ2VyU2F2ZUV2ZW50KEVTdGF0ZSAqZXN0YXRlLCBS ZXN1bHRSZWxJbmZvICpyZWxpbmZvLAogCQkJCQkJCQkgIFJlc3VsdFJlbEluZm8gKnNyY19wYXJ0 aW5mbywKQEAgLTIzMDksNyArMjMwOSw3IEBAIHN0YXRpYyBIZWFwVHVwbGUKIEV4ZWNDYWxsVHJp Z2dlckZ1bmMoVHJpZ2dlckRhdGEgKnRyaWdkYXRhLAogCQkJCQlpbnQgdGdpbmR4LAogCQkJCQlG bWdySW5mbyAqZmluZm8sCi0JCQkJCUluc3RydW1lbnRhdGlvbiAqaW5zdHIsCisJCQkJCVRyaWdn ZXJJbnN0cnVtZW50YXRpb24gKmluc3RyLAogCQkJCQlNZW1vcnlDb250ZXh0IHBlcl90dXBsZV9j b250ZXh0KQogewogCUxPQ0FMX0ZDSU5GTyhmY2luZm8sIDApOwpAQCAtMjM0NCw3ICsyMzQ0LDcg QEAgRXhlY0NhbGxUcmlnZ2VyRnVuYyhUcmlnZ2VyRGF0YSAqdHJpZ2RhdGEsCiAJICogSWYgZG9p bmcgRVhQTEFJTiBBTkFMWVpFLCBzdGFydCBjaGFyZ2luZyB0aW1lIHRvIHRoaXMgdHJpZ2dlci4K IAkgKi8KIAlpZiAoaW5zdHIpCi0JCUluc3RyU3RhcnROb2RlKGluc3RyICsgdGdpbmR4KTsKKwkJ SW5zdHJTdGFydFRyaWdnZXIoaW5zdHIgKyB0Z2luZHgpOwogCiAJLyoKIAkgKiBEbyB0aGUgZnVu Y3Rpb24gZXZhbHVhdGlvbiBpbiB0aGUgcGVyLXR1cGxlIG1lbW9yeSBjb250ZXh0LCBzbyB0aGF0 CkBAIC0yMzg5LDEwICsyMzg5LDEwIEBAIEV4ZWNDYWxsVHJpZ2dlckZ1bmMoVHJpZ2dlckRhdGEg KnRyaWdkYXRhLAogCiAJLyoKIAkgKiBJZiBkb2luZyBFWFBMQUlOIEFOQUxZWkUsIHN0b3AgY2hh cmdpbmcgdGltZSB0byB0aGlzIHRyaWdnZXIsIGFuZCBjb3VudAotCSAqIG9uZSAidHVwbGUgcmV0 dXJuZWQiIChyZWFsbHkgdGhlIG51bWJlciBvZiBmaXJpbmdzKS4KKwkgKiB0aGUgZmlyaW5nIG9m IHRoZSB0cmlnZ2VyLgogCSAqLwogCWlmIChpbnN0cikKLQkJSW5zdHJTdG9wTm9kZShpbnN0ciAr IHRnaW5keCwgMSk7CisJCUluc3RyU3RvcFRyaWdnZXIoaW5zdHIgKyB0Z2luZHgsIDEpOwogCiAJ cmV0dXJuIChIZWFwVHVwbGUpIERhdHVtR2V0UG9pbnRlcihyZXN1bHQpOwogfQpAQCAtMzkzNiw3 ICszOTM2LDcgQEAgc3RhdGljIHZvaWQgQWZ0ZXJUcmlnZ2VyRXhlY3V0ZShFU3RhdGUgKmVzdGF0 ZSwKIAkJCQkJCQkJUmVzdWx0UmVsSW5mbyAqZHN0X3JlbEluZm8sCiAJCQkJCQkJCVRyaWdnZXJE ZXNjICp0cmlnZGVzYywKIAkJCQkJCQkJRm1nckluZm8gKmZpbmZvLAotCQkJCQkJCQlJbnN0cnVt ZW50YXRpb24gKmluc3RyLAorCQkJCQkJCQlUcmlnZ2VySW5zdHJ1bWVudGF0aW9uICppbnN0ciwK IAkJCQkJCQkJTWVtb3J5Q29udGV4dCBwZXJfdHVwbGVfY29udGV4dCwKIAkJCQkJCQkJVHVwbGVU YWJsZVNsb3QgKnRyaWdfdHVwbGVfc2xvdDEsCiAJCQkJCQkJCVR1cGxlVGFibGVTbG90ICp0cmln X3R1cGxlX3Nsb3QyKTsKQEAgLTQzMzAsNyArNDMzMCw3IEBAIEFmdGVyVHJpZ2dlckV4ZWN1dGUo RVN0YXRlICplc3RhdGUsCiAJCQkJCVJlc3VsdFJlbEluZm8gKnNyY19yZWxJbmZvLAogCQkJCQlS ZXN1bHRSZWxJbmZvICpkc3RfcmVsSW5mbywKIAkJCQkJVHJpZ2dlckRlc2MgKnRyaWdkZXNjLAot CQkJCQlGbWdySW5mbyAqZmluZm8sIEluc3RydW1lbnRhdGlvbiAqaW5zdHIsCisJCQkJCUZtZ3JJ bmZvICpmaW5mbywgVHJpZ2dlckluc3RydW1lbnRhdGlvbiAqaW5zdHIsCiAJCQkJCU1lbW9yeUNv bnRleHQgcGVyX3R1cGxlX2NvbnRleHQsCiAJCQkJCVR1cGxlVGFibGVTbG90ICp0cmlnX3R1cGxl X3Nsb3QxLAogCQkJCQlUdXBsZVRhYmxlU2xvdCAqdHJpZ190dXBsZV9zbG90MikKQEAgLTQzNzEs NyArNDM3MSw3IEBAIEFmdGVyVHJpZ2dlckV4ZWN1dGUoRVN0YXRlICplc3RhdGUsCiAJICogdG8g aW5jbHVkZSB0aW1lIHNwZW50IHJlLWZldGNoaW5nIHR1cGxlcyBpbiB0aGUgdHJpZ2dlciBjb3N0 LgogCSAqLwogCWlmIChpbnN0cikKLQkJSW5zdHJTdGFydE5vZGUoaW5zdHIgKyB0Z2luZHgpOwor CQlJbnN0clN0YXJ0VHJpZ2dlcihpbnN0ciArIHRnaW5keCk7CiAKIAkvKgogCSAqIEZldGNoIHRo ZSByZXF1aXJlZCB0dXBsZShzKS4KQEAgLTQ1ODgsMTAgKzQ1ODgsMTAgQEAgQWZ0ZXJUcmlnZ2Vy RXhlY3V0ZShFU3RhdGUgKmVzdGF0ZSwKIAogCS8qCiAJICogSWYgZG9pbmcgRVhQTEFJTiBBTkFM WVpFLCBzdG9wIGNoYXJnaW5nIHRpbWUgdG8gdGhpcyB0cmlnZ2VyLCBhbmQgY291bnQKLQkgKiBv bmUgInR1cGxlIHJldHVybmVkIiAocmVhbGx5IHRoZSBudW1iZXIgb2YgZmlyaW5ncykuCisJICog dGhlIGZpcmluZyBvZiB0aGUgdHJpZ2dlci4KIAkgKi8KIAlpZiAoaW5zdHIpCi0JCUluc3RyU3Rv cE5vZGUoaW5zdHIgKyB0Z2luZHgsIDEpOworCQlJbnN0clN0b3BUcmlnZ2VyKGluc3RyICsgdGdp bmR4LCAxKTsKIH0KIAogCkBAIC00NzA3LDcgKzQ3MDcsNyBAQCBhZnRlclRyaWdnZXJJbnZva2VF dmVudHMoQWZ0ZXJUcmlnZ2VyRXZlbnRMaXN0ICpldmVudHMsCiAJUmVsYXRpb24JcmVsID0gTlVM TDsKIAlUcmlnZ2VyRGVzYyAqdHJpZ2Rlc2MgPSBOVUxMOwogCUZtZ3JJbmZvICAgKmZpbmZvID0g TlVMTDsKLQlJbnN0cnVtZW50YXRpb24gKmluc3RyID0gTlVMTDsKKwlUcmlnZ2VySW5zdHJ1bWVu dGF0aW9uICppbnN0ciA9IE5VTEw7CiAJVHVwbGVUYWJsZVNsb3QgKnNsb3QxID0gTlVMTCwKIAkJ CSAgICpzbG90MiA9IE5VTEw7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNNYWluLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCmluZGV4IGJmZDNlYmM2 MDFlLi4xYTNiODAyMTYwMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01h aW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCkBAIC0xMjcwLDcgKzEy NzAsNyBAQCBJbml0UmVzdWx0UmVsSW5mbyhSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLAog CQlyZXN1bHRSZWxJbmZvLT5yaV9UcmlnV2hlbkV4cHJzID0gKEV4cHJTdGF0ZSAqKikKIAkJCXBh bGxvYzBfYXJyYXkoRXhwclN0YXRlICosIG4pOwogCQlpZiAoaW5zdHJ1bWVudF9vcHRpb25zKQot CQkJcmVzdWx0UmVsSW5mby0+cmlfVHJpZ0luc3RydW1lbnQgPSBJbnN0ckFsbG9jKG4sIGluc3Ry dW1lbnRfb3B0aW9ucywgZmFsc2UpOworCQkJcmVzdWx0UmVsSW5mby0+cmlfVHJpZ0luc3RydW1l bnQgPSBJbnN0ckFsbG9jVHJpZ2dlcihuLCBpbnN0cnVtZW50X29wdGlvbnMpOwogCX0KIAllbHNl CiAJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvaW5zdHJ1bWVudC5jIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3IvaW5zdHJ1bWVudC5jCmluZGV4IGE0MDYxMGJjMjUyLi45MzU0YWQ3 YmUxMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvaW5zdHJ1bWVudC5jCisrKyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2luc3RydW1lbnQuYwpAQCAtMTk2LDYgKzE5NiwzMiBAQCBJ bnN0ckFnZ05vZGUoSW5zdHJ1bWVudGF0aW9uICpkc3QsIEluc3RydW1lbnRhdGlvbiAqYWRkKQog CQlXYWxVc2FnZUFkZCgmZHN0LT53YWx1c2FnZSwgJmFkZC0+d2FsdXNhZ2UpOwogfQogCisvKiBU cmlnZ2VyIGluc3RydW1lbnRhdGlvbiBoYW5kbGluZyAqLworVHJpZ2dlckluc3RydW1lbnRhdGlv biAqCitJbnN0ckFsbG9jVHJpZ2dlcihpbnQgbiwgaW50IGluc3RydW1lbnRfb3B0aW9ucykKK3sK KwlUcmlnZ2VySW5zdHJ1bWVudGF0aW9uICp0Z2luc3RyID0gcGFsbG9jMChuICogc2l6ZW9mKFRy aWdnZXJJbnN0cnVtZW50YXRpb24pKTsKKwlpbnQJCQlpOworCisJZm9yIChpID0gMDsgaSA8IG47 IGkrKykKKwkJSW5zdHJJbml0KCZ0Z2luc3RyW2ldLmluc3RyLCBpbnN0cnVtZW50X29wdGlvbnMp OworCisJcmV0dXJuIHRnaW5zdHI7Cit9CisKK3ZvaWQKK0luc3RyU3RhcnRUcmlnZ2VyKFRyaWdn ZXJJbnN0cnVtZW50YXRpb24gKnRnaW5zdHIpCit7CisJSW5zdHJTdGFydE5vZGUoJnRnaW5zdHIt Pmluc3RyKTsKK30KKwordm9pZAorSW5zdHJTdG9wVHJpZ2dlcihUcmlnZ2VySW5zdHJ1bWVudGF0 aW9uICp0Z2luc3RyLCBpbnQgZmlyaW5ncykKK3sKKwlJbnN0clN0b3BOb2RlKCZ0Z2luc3RyLT5p bnN0ciwgMCk7CisJdGdpbnN0ci0+ZmlyaW5ncyArPSBmaXJpbmdzOworfQorCiAvKiBub3RlIGN1 cnJlbnQgdmFsdWVzIGR1cmluZyBwYXJhbGxlbCBleGVjdXRvciBzdGFydHVwICovCiB2b2lkCiBJ bnN0clN0YXJ0UGFyYWxsZWxRdWVyeSh2b2lkKQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhl Y3V0b3IvaW5zdHJ1bWVudC5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvaW5zdHJ1bWVudC5oCmlu ZGV4IDk3NTlmM2VhNWQ4Li5hOWMyMjMzMjI3ZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhl Y3V0b3IvaW5zdHJ1bWVudC5oCisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2luc3RydW1lbnQu aApAQCAtMTAwLDYgKzEwMCwxMyBAQCB0eXBlZGVmIHN0cnVjdCBXb3JrZXJJbnN0cnVtZW50YXRp b24KIAlJbnN0cnVtZW50YXRpb24gaW5zdHJ1bWVudFtGTEVYSUJMRV9BUlJBWV9NRU1CRVJdOwog fSBXb3JrZXJJbnN0cnVtZW50YXRpb247CiAKK3R5cGVkZWYgc3RydWN0IFRyaWdnZXJJbnN0cnVt ZW50YXRpb24KK3sKKwlJbnN0cnVtZW50YXRpb24gaW5zdHI7CisJaW50CQkJZmlyaW5nczsJCS8q IG51bWJlciBvZiB0aW1lcyB0aGUgaW5zdHJ1bWVudGVkIHRyaWdnZXIKKwkJCQkJCQkJICogd2Fz IGZpcmVkICovCit9IFRyaWdnZXJJbnN0cnVtZW50YXRpb247CisKIGV4dGVybiBQR0RMTElNUE9S VCBCdWZmZXJVc2FnZSBwZ0J1ZmZlclVzYWdlOwogZXh0ZXJuIFBHRExMSU1QT1JUIFdhbFVzYWdl IHBnV2FsVXNhZ2U7CiAKQEAgLTExMSw2ICsxMTgsMTEgQEAgZXh0ZXJuIHZvaWQgSW5zdHJTdG9w Tm9kZShJbnN0cnVtZW50YXRpb24gKmluc3RyLCBkb3VibGUgblR1cGxlcyk7CiBleHRlcm4gdm9p ZCBJbnN0clVwZGF0ZVR1cGxlQ291bnQoSW5zdHJ1bWVudGF0aW9uICppbnN0ciwgZG91YmxlIG5U dXBsZXMpOwogZXh0ZXJuIHZvaWQgSW5zdHJFbmRMb29wKEluc3RydW1lbnRhdGlvbiAqaW5zdHIp OwogZXh0ZXJuIHZvaWQgSW5zdHJBZ2dOb2RlKEluc3RydW1lbnRhdGlvbiAqZHN0LCBJbnN0cnVt ZW50YXRpb24gKmFkZCk7CisKK2V4dGVybiBUcmlnZ2VySW5zdHJ1bWVudGF0aW9uICpJbnN0ckFs bG9jVHJpZ2dlcihpbnQgbiwgaW50IGluc3RydW1lbnRfb3B0aW9ucyk7CitleHRlcm4gdm9pZCBJ bnN0clN0YXJ0VHJpZ2dlcihUcmlnZ2VySW5zdHJ1bWVudGF0aW9uICp0Z2luc3RyKTsKK2V4dGVy biB2b2lkIEluc3RyU3RvcFRyaWdnZXIoVHJpZ2dlckluc3RydW1lbnRhdGlvbiAqdGdpbnN0ciwg aW50IGZpcmluZ3MpOworCiBleHRlcm4gdm9pZCBJbnN0clN0YXJ0UGFyYWxsZWxRdWVyeSh2b2lk KTsKIGV4dGVybiB2b2lkIEluc3RyRW5kUGFyYWxsZWxRdWVyeShCdWZmZXJVc2FnZSAqYnVmdXNh Z2UsIFdhbFVzYWdlICp3YWx1c2FnZSk7CiBleHRlcm4gdm9pZCBJbnN0ckFjY3VtUGFyYWxsZWxR dWVyeShCdWZmZXJVc2FnZSAqYnVmdXNhZ2UsIFdhbFVzYWdlICp3YWx1c2FnZSk7CmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL2V4 ZWNub2Rlcy5oCmluZGV4IDYzYzA2N2Q1YWFlLi5hNDNiZDQyOGE5MSAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25v ZGVzLmgKQEAgLTUyNCw3ICs1MjQsNyBAQCB0eXBlZGVmIHN0cnVjdCBSZXN1bHRSZWxJbmZvCiAJ RXhwclN0YXRlICoqcmlfVHJpZ1doZW5FeHByczsKIAogCS8qIG9wdGlvbmFsIHJ1bnRpbWUgbWVh c3VyZW1lbnRzIGZvciB0cmlnZ2VycyAqLwotCUluc3RydW1lbnRhdGlvbiAqcmlfVHJpZ0luc3Ry dW1lbnQ7CisJVHJpZ2dlckluc3RydW1lbnRhdGlvbiAqcmlfVHJpZ0luc3RydW1lbnQ7CiAKIAkv KiBPbi1kZW1hbmQgY3JlYXRlZCBzbG90cyBmb3IgdHJpZ2dlcnMgLyByZXR1cm5pbmcgcHJvY2Vz c2luZyAqLwogCVR1cGxlVGFibGVTbG90ICpyaV9SZXR1cm5pbmdTbG90OwkvKiBmb3IgdHJpZ2dl ciBvdXRwdXQgdHVwbGVzICovCmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRl ZnMubGlzdCBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CmluZGV4IDc3ZTNjMDQx NDRlLi5mZDNlYzdhNzIzNiAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZz Lmxpc3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKQEAgLTMxNTYsNiAr MzE1Niw3IEBAIFRyaWdnZXJEZXNjCiBUcmlnZ2VyRXZlbnQKIFRyaWdnZXJGbGFncwogVHJpZ2dl ckluZm8KK1RyaWdnZXJJbnN0cnVtZW50YXRpb24KIFRyaWdnZXJUcmFuc2l0aW9uCiBUcnVuY2F0 ZVN0bXQKIFRzbVJvdXRpbmUKLS0gCjIuNDcuMQoK --00000000000002247a064c7bb7b8 Content-Type: application/octet-stream; name="v7-0003-instrumentation-Replace-direct-changes-of-pgBuffe.patch" Content-Disposition: attachment; filename="v7-0003-instrumentation-Replace-direct-changes-of-pgBuffe.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmh8zh0h2 RnJvbSAyOWY5ODIwOTAxMzgzODAwYzY1OWMwODI4NzZjNzM0Y2RlNzIzNjAxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpEYXRlOiBT YXQsIDcgTWFyIDIwMjYgMTI6MTI6MzkgLTA4MDAKU3ViamVjdDogW1BBVENIIHY3IDMvOF0gaW5z dHJ1bWVudGF0aW9uOiBSZXBsYWNlIGRpcmVjdCBjaGFuZ2VzIG9mCiBwZ0J1ZmZlclVzYWdlL3Bn V2FsVXNhZ2Ugd2l0aCBJTlNUUl8qIG1hY3JvcwoKVGhpcyBlbmNhcHN1bGF0ZXMgdGhlIG93bmVy c2hpcCBvZiB0aGVzZSBnbG9iYWxzIGJldHRlciwgYW5kIHdpbGwgYWxsb3cKYSBzdWJzZXF1ZW50 IHJlZmFjdG9yaW5nLgoKQXV0aG9yOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpSZXZp ZXdlZC1ieTogQW5kcmVzIEZyZXVuZCA8YW5kcmVzQGFuYXJhemVsLmRlPgpEaXNjdXNzaW9uOiBo dHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9tZXNzYWdlLWlkL2ZsYXQvQ0FQNTNQa3paM1VvdG5S cnJuWFdBdiUzREY0YXZScTlNUTh6VSUyQmJ4b045dHBvdkV1NmZHUSU0MG1haWwuZ21haWwuY29t I2ZjNzE0MGU4YWYyMWUwN2E5MGEwOWQ3ZTc2YjMwMGM0Ci0tLQogc3JjL2JhY2tlbmQvYWNjZXNz L3RyYW5zYW0veGxvZy5jICAgICAgfCAxMCArKysrKy0tLS0tCiBzcmMvYmFja2VuZC9leGVjdXRv ci9pbnN0cnVtZW50LmMgICAgICB8ICAxIC0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1 Zm1nci5jICAgIHwgMjQgKysrKysrKysrKysrLS0tLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9zdG9y YWdlL2J1ZmZlci9sb2NhbGJ1Zi5jICB8ICA2ICsrKy0tLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9m aWxlL2J1ZmZpbGUuYyAgICAgfCAgOCArKysrLS0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZp dHkvcGdzdGF0X2lvLmMgfCAgOCArKysrLS0tLQogc3JjL2luY2x1ZGUvZXhlY3V0b3IvaW5zdHJ1 bWVudC5oICAgICAgfCAxOSArKysrKysrKysrKysrKysrKysrCiA3IGZpbGVzIGNoYW5nZWQsIDQ3 IGluc2VydGlvbnMoKyksIDI5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2FjY2Vzcy90cmFuc2FtL3hsb2cuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cu YwppbmRleCBiOWI2NzhmMzcyMi4uZjZhYzNjNTMwYjkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2FjY2Vzcy90cmFuc2FtL3hsb2cuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94 bG9nLmMKQEAgLTEwODEsMTAgKzEwODEsMTAgQEAgWExvZ0luc2VydFJlY29yZChYTG9nUmVjRGF0 YSAqcmRhdGEsCiAJLyogUmVwb3J0IFdBTCB0cmFmZmljIHRvIHRoZSBpbnN0cnVtZW50YXRpb24u ICovCiAJaWYgKGluc2VydGVkKQogCXsKLQkJcGdXYWxVc2FnZS53YWxfYnl0ZXMgKz0gcmVjaGRy LT54bF90b3RfbGVuOwotCQlwZ1dhbFVzYWdlLndhbF9yZWNvcmRzKys7Ci0JCXBnV2FsVXNhZ2Uu d2FsX2ZwaSArPSBudW1fZnBpOwotCQlwZ1dhbFVzYWdlLndhbF9mcGlfYnl0ZXMgKz0gZnBpX2J5 dGVzOworCQlJTlNUUl9XQUxVU0FHRV9BREQod2FsX2J5dGVzLCByZWNoZHItPnhsX3RvdF9sZW4p OworCQlJTlNUUl9XQUxVU0FHRV9JTkNSKHdhbF9yZWNvcmRzKTsKKwkJSU5TVFJfV0FMVVNBR0Vf QUREKHdhbF9mcGksIG51bV9mcGkpOworCQlJTlNUUl9XQUxVU0FHRV9BREQod2FsX2ZwaV9ieXRl cywgZnBpX2J5dGVzKTsKIAogCQkvKiBSZXF1aXJlZCBmb3IgdGhlIGZsdXNoIG9mIHBlbmRpbmcg c3RhdHMgV0FMIGRhdGEgKi8KIAkJcGdzdGF0X3JlcG9ydF9maXhlZCA9IHRydWU7CkBAIC0yMDYz LDcgKzIwNjMsNyBAQCBBZHZhbmNlWExJbnNlcnRCdWZmZXIoWExvZ1JlY1B0ciB1cHRvLCBUaW1l TGluZUlEIHRsaSwgYm9vbCBvcHBvcnR1bmlzdGljKQogCQkJCQlXcml0ZVJxc3QuRmx1c2ggPSBJ bnZhbGlkWExvZ1JlY1B0cjsKIAkJCQkJWExvZ1dyaXRlKFdyaXRlUnFzdCwgdGxpLCBmYWxzZSk7 CiAJCQkJCUxXTG9ja1JlbGVhc2UoV0FMV3JpdGVMb2NrKTsKLQkJCQkJcGdXYWxVc2FnZS53YWxf YnVmZmVyc19mdWxsKys7CisJCQkJCUlOU1RSX1dBTFVTQUdFX0lOQ1Iod2FsX2J1ZmZlcnNfZnVs bCk7CiAJCQkJCVRSQUNFX1BPU1RHUkVTUUxfV0FMX0JVRkZFUl9XUklURV9ESVJUWV9ET05FKCk7 CiAKIAkJCQkJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2luc3RydW1lbnQu YyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2luc3RydW1lbnQuYwppbmRleCBiYzU1MWY5NWEwOC4u NmE0YTA4ZWJiMGMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2luc3RydW1lbnQu YworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9pbnN0cnVtZW50LmMKQEAgLTU0LDcgKzU0LDYg QEAgSW5zdHJTdGFydChJbnN0cnVtZW50YXRpb24gKmluc3RyKQogCQkJSU5TVFJfVElNRV9TRVRf Q1VSUkVOVChpbnN0ci0+c3RhcnR0aW1lKTsKIAl9CiAKLQkvKiBzYXZlIGJ1ZmZlciB1c2FnZSB0 b3RhbHMgYXQgbm9kZSBlbnRyeSwgaWYgbmVlZGVkICovCiAJaWYgKGluc3RyLT5uZWVkX2J1ZnVz YWdlKQogCQlpbnN0ci0+YnVmdXNhZ2Vfc3RhcnQgPSBwZ0J1ZmZlclVzYWdlOwogCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZtZ3IuYyBiL3NyYy9iYWNrZW5kL3N0 b3JhZ2UvYnVmZmVyL2J1Zm1nci5jCmluZGV4IDVmM2QwODNlOTM4Li41OWIwOThiYTBhMCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvYnVmbWdyLmMKKysrIGIvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9idWZmZXIvYnVmbWdyLmMKQEAgLTgyNyw3ICs4MjcsNyBAQCBSZWFkUmVj ZW50QnVmZmVyKFJlbEZpbGVMb2NhdG9yIHJsb2NhdG9yLCBGb3JrTnVtYmVyIGZvcmtOdW0sIEJs b2NrTnVtYmVyIGJsb2NrTgogCQl7CiAJCQlQaW5Mb2NhbEJ1ZmZlcihidWZIZHIsIHRydWUpOwog Ci0JCQlwZ0J1ZmZlclVzYWdlLmxvY2FsX2Jsa3NfaGl0Kys7CisJCQlJTlNUUl9CVUZVU0FHRV9J TkNSKGxvY2FsX2Jsa3NfaGl0KTsKIAogCQkJcmV0dXJuIHRydWU7CiAJCX0KQEAgLTg0OCw3ICs4 NDgsNyBAQCBSZWFkUmVjZW50QnVmZmVyKFJlbEZpbGVMb2NhdG9yIHJsb2NhdG9yLCBGb3JrTnVt YmVyIGZvcmtOdW0sIEJsb2NrTnVtYmVyIGJsb2NrTgogCQl7CiAJCQlpZiAoQnVmZmVyVGFnc0Vx dWFsKCZ0YWcsICZidWZIZHItPnRhZykpCiAJCQl7Ci0JCQkJcGdCdWZmZXJVc2FnZS5zaGFyZWRf Ymxrc19oaXQrKzsKKwkJCQlJTlNUUl9CVUZVU0FHRV9JTkNSKHNoYXJlZF9ibGtzX2hpdCk7CiAJ CQkJcmV0dXJuIHRydWU7CiAJCQl9CiAJCQlVbnBpbkJ1ZmZlcihidWZIZHIpOwpAQCAtMTI0OSwx NCArMTI0OSwxNCBAQCBQaW5CdWZmZXJGb3JCbG9jayhSZWxhdGlvbiByZWwsCiAJewogCQlidWZI ZHIgPSBMb2NhbEJ1ZmZlckFsbG9jKHNtZ3IsIGZvcmtOdW0sIGJsb2NrTnVtLCBmb3VuZFB0cik7 CiAJCWlmICgqZm91bmRQdHIpCi0JCQlwZ0J1ZmZlclVzYWdlLmxvY2FsX2Jsa3NfaGl0Kys7CisJ CQlJTlNUUl9CVUZVU0FHRV9JTkNSKGxvY2FsX2Jsa3NfaGl0KTsKIAl9CiAJZWxzZQogCXsKIAkJ YnVmSGRyID0gQnVmZmVyQWxsb2Moc21nciwgcGVyc2lzdGVuY2UsIGZvcmtOdW0sIGJsb2NrTnVt LAogCQkJCQkJCSBzdHJhdGVneSwgZm91bmRQdHIsIGlvX2NvbnRleHQpOwogCQlpZiAoKmZvdW5k UHRyKQotCQkJcGdCdWZmZXJVc2FnZS5zaGFyZWRfYmxrc19oaXQrKzsKKwkJCUlOU1RSX0JVRlVT QUdFX0lOQ1Ioc2hhcmVkX2Jsa3NfaGl0KTsKIAl9CiAJaWYgKHJlbCkKIAl7CkBAIC0xOTkwLDkg KzE5OTAsOSBAQCBBc3luY1JlYWRCdWZmZXJzKFJlYWRCdWZmZXJzT3BlcmF0aW9uICpvcGVyYXRp b24sIGludCAqbmJsb2Nrc19wcm9ncmVzcykKIAkJCQkJCQkJCQkgIHRydWUpOwogCiAJCWlmIChw ZXJzaXN0ZW5jZSA9PSBSRUxQRVJTSVNURU5DRV9URU1QKQotCQkJcGdCdWZmZXJVc2FnZS5sb2Nh bF9ibGtzX2hpdCArPSAxOworCQkJSU5TVFJfQlVGVVNBR0VfSU5DUihsb2NhbF9ibGtzX2hpdCk7 CiAJCWVsc2UKLQkJCXBnQnVmZmVyVXNhZ2Uuc2hhcmVkX2Jsa3NfaGl0ICs9IDE7CisJCQlJTlNU Ul9CVUZVU0FHRV9JTkNSKHNoYXJlZF9ibGtzX2hpdCk7CiAKIAkJaWYgKG9wZXJhdGlvbi0+cmVs KQogCQkJcGdzdGF0X2NvdW50X2J1ZmZlcl9oaXQob3BlcmF0aW9uLT5yZWwpOwpAQCAtMjA2MCw5 ICsyMDYwLDkgQEAgQXN5bmNSZWFkQnVmZmVycyhSZWFkQnVmZmVyc09wZXJhdGlvbiAqb3BlcmF0 aW9uLCBpbnQgKm5ibG9ja3NfcHJvZ3Jlc3MpCiAJCQkJCQkJCWlvX3N0YXJ0LCAxLCBpb19idWZm ZXJzX2xlbiAqIEJMQ0tTWik7CiAKIAkJaWYgKHBlcnNpc3RlbmNlID09IFJFTFBFUlNJU1RFTkNF X1RFTVApCi0JCQlwZ0J1ZmZlclVzYWdlLmxvY2FsX2Jsa3NfcmVhZCArPSBpb19idWZmZXJzX2xl bjsKKwkJCUlOU1RSX0JVRlVTQUdFX0FERChsb2NhbF9ibGtzX3JlYWQsIGlvX2J1ZmZlcnNfbGVu KTsKIAkJZWxzZQotCQkJcGdCdWZmZXJVc2FnZS5zaGFyZWRfYmxrc19yZWFkICs9IGlvX2J1ZmZl cnNfbGVuOworCQkJSU5TVFJfQlVGVVNBR0VfQUREKHNoYXJlZF9ibGtzX3JlYWQsIGlvX2J1ZmZl cnNfbGVuKTsKIAogCQkvKgogCQkgKiBUcmFjayB2YWN1dW0gY29zdCB3aGVuIGlzc3VpbmcgSU8s IG5vdCBhZnRlciB3YWl0aW5nIGZvciBpdC4KQEAgLTI5NTUsNyArMjk1NSw3IEBAIEV4dGVuZEJ1 ZmZlcmVkUmVsU2hhcmVkKEJ1ZmZlck1hbmFnZXJSZWxhdGlvbiBibXIsCiAJCVRlcm1pbmF0ZUJ1 ZmZlcklPKGJ1Zl9oZHIsIGZhbHNlLCBCTV9WQUxJRCwgdHJ1ZSwgZmFsc2UpOwogCX0KIAotCXBn QnVmZmVyVXNhZ2Uuc2hhcmVkX2Jsa3Nfd3JpdHRlbiArPSBleHRlbmRfYnk7CisJSU5TVFJfQlVG VVNBR0VfQUREKHNoYXJlZF9ibGtzX3dyaXR0ZW4sIGV4dGVuZF9ieSk7CiAKIAkqZXh0ZW5kZWRf YnkgPSBleHRlbmRfYnk7CiAKQEAgLTMxMDAsNyArMzEwMCw3IEBAIE1hcmtCdWZmZXJEaXJ0eShC dWZmZXIgYnVmZmVyKQogCSAqLwogCWlmICghKG9sZF9idWZfc3RhdGUgJiBCTV9ESVJUWSkpCiAJ ewotCQlwZ0J1ZmZlclVzYWdlLnNoYXJlZF9ibGtzX2RpcnRpZWQrKzsKKwkJSU5TVFJfQlVGVVNB R0VfSU5DUihzaGFyZWRfYmxrc19kaXJ0aWVkKTsKIAkJaWYgKFZhY3V1bUNvc3RBY3RpdmUpCiAJ CQlWYWN1dW1Db3N0QmFsYW5jZSArPSBWYWN1dW1Db3N0UGFnZURpcnR5OwogCX0KQEAgLTQ1Mjks NyArNDUyOSw3IEBAIEZsdXNoQnVmZmVyKEJ1ZmZlckRlc2MgKmJ1ZiwgU01nclJlbGF0aW9uIHJl bG4sIElPT2JqZWN0IGlvX29iamVjdCwKIAlwZ3N0YXRfY291bnRfaW9fb3BfdGltZShJT09CSkVD VF9SRUxBVElPTiwgaW9fY29udGV4dCwKIAkJCQkJCQlJT09QX1dSSVRFLCBpb19zdGFydCwgMSwg QkxDS1NaKTsKIAotCXBnQnVmZmVyVXNhZ2Uuc2hhcmVkX2Jsa3Nfd3JpdHRlbisrOworCUlOU1RS X0JVRlVTQUdFX0lOQ1Ioc2hhcmVkX2Jsa3Nfd3JpdHRlbik7CiAKIAkvKgogCSAqIE1hcmsgdGhl IGJ1ZmZlciBhcyBjbGVhbiAodW5sZXNzIEJNX0pVU1RfRElSVElFRCBoYXMgYmVjb21lIHNldCkg YW5kCkBAIC01NjkwLDcgKzU2OTAsNyBAQCBNYXJrQnVmZmVyRGlydHlIaW50KEJ1ZmZlciBidWZm ZXIsIGJvb2wgYnVmZmVyX3N0ZCkKIAogCQlpZiAoZGlydGllZCkKIAkJewotCQkJcGdCdWZmZXJV c2FnZS5zaGFyZWRfYmxrc19kaXJ0aWVkKys7CisJCQlJTlNUUl9CVUZVU0FHRV9JTkNSKHNoYXJl ZF9ibGtzX2RpcnRpZWQpOwogCQkJaWYgKFZhY3V1bUNvc3RBY3RpdmUpCiAJCQkJVmFjdXVtQ29z dEJhbGFuY2UgKz0gVmFjdXVtQ29zdFBhZ2VEaXJ0eTsKIAkJfQpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9idWZmZXIvbG9jYWxidWYuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVm ZmVyL2xvY2FsYnVmLmMKaW5kZXggMDRhNTQwMzc5YTIuLmU2MDU0ZTc0NWU4IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9sb2NhbGJ1Zi5jCisrKyBiL3NyYy9iYWNrZW5k L3N0b3JhZ2UvYnVmZmVyL2xvY2FsYnVmLmMKQEAgLTIxNyw3ICsyMTcsNyBAQCBGbHVzaExvY2Fs QnVmZmVyKEJ1ZmZlckRlc2MgKmJ1ZkhkciwgU01nclJlbGF0aW9uIHJlbG4pCiAJLyogTWFyayBu b3QtZGlydHkgKi8KIAlUZXJtaW5hdGVMb2NhbEJ1ZmZlcklPKGJ1ZkhkciwgdHJ1ZSwgMCwgZmFs c2UpOwogCi0JcGdCdWZmZXJVc2FnZS5sb2NhbF9ibGtzX3dyaXR0ZW4rKzsKKwlJTlNUUl9CVUZV U0FHRV9JTkNSKGxvY2FsX2Jsa3Nfd3JpdHRlbik7CiB9CiAKIHN0YXRpYyBCdWZmZXIKQEAgLTQ3 OCw3ICs0NzgsNyBAQCBFeHRlbmRCdWZmZXJlZFJlbExvY2FsKEJ1ZmZlck1hbmFnZXJSZWxhdGlv biBibXIsCiAKIAkqZXh0ZW5kZWRfYnkgPSBleHRlbmRfYnk7CiAKLQlwZ0J1ZmZlclVzYWdlLmxv Y2FsX2Jsa3Nfd3JpdHRlbiArPSBleHRlbmRfYnk7CisJSU5TVFJfQlVGVVNBR0VfQUREKGxvY2Fs X2Jsa3Nfd3JpdHRlbiwgZXh0ZW5kX2J5KTsKIAogCXJldHVybiBmaXJzdF9ibG9jazsKIH0KQEAg LTUwOSw3ICs1MDksNyBAQCBNYXJrTG9jYWxCdWZmZXJEaXJ0eShCdWZmZXIgYnVmZmVyKQogCWJ1 Zl9zdGF0ZSA9IHBnX2F0b21pY19yZWFkX3U2NCgmYnVmSGRyLT5zdGF0ZSk7CiAKIAlpZiAoIShi dWZfc3RhdGUgJiBCTV9ESVJUWSkpCi0JCXBnQnVmZmVyVXNhZ2UubG9jYWxfYmxrc19kaXJ0aWVk Kys7CisJCUlOU1RSX0JVRlVTQUdFX0lOQ1IobG9jYWxfYmxrc19kaXJ0aWVkKTsKIAogCWJ1Zl9z dGF0ZSB8PSBCTV9ESVJUWTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9maWxl L2J1ZmZpbGUuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvZmlsZS9idWZmaWxlLmMKaW5kZXggYzRh ZmU0ZDM2OGEuLjhiNTAxZGZjYWRkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2Zp bGUvYnVmZmlsZS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvZmlsZS9idWZmaWxlLmMKQEAg LTQ3NSwxMyArNDc1LDEzIEBAIEJ1ZkZpbGVMb2FkQnVmZmVyKEJ1ZkZpbGUgKmZpbGUpCiAJaWYg KHRyYWNrX2lvX3RpbWluZykKIAl7CiAJCUlOU1RSX1RJTUVfU0VUX0NVUlJFTlQoaW9fdGltZSk7 Ci0JCUlOU1RSX1RJTUVfQUNDVU1fRElGRihwZ0J1ZmZlclVzYWdlLnRlbXBfYmxrX3JlYWRfdGlt ZSwgaW9fdGltZSwgaW9fc3RhcnQpOworCQlJTlNUUl9CVUZVU0FHRV9USU1FX0FDQ1VNX0RJRkYo dGVtcF9ibGtfcmVhZF90aW1lLCBpb190aW1lLCBpb19zdGFydCk7CiAJfQogCiAJLyogd2UgY2hv b3NlIG5vdCB0byBhZHZhbmNlIGN1ck9mZnNldCBoZXJlICovCiAKIAlpZiAoZmlsZS0+bmJ5dGVz ID4gMCkKLQkJcGdCdWZmZXJVc2FnZS50ZW1wX2Jsa3NfcmVhZCsrOworCQlJTlNUUl9CVUZVU0FH RV9JTkNSKHRlbXBfYmxrc19yZWFkKTsKIH0KIAogLyoKQEAgLTU0OSwxMyArNTQ5LDEzIEBAIEJ1 ZkZpbGVEdW1wQnVmZmVyKEJ1ZkZpbGUgKmZpbGUpCiAJCWlmICh0cmFja19pb190aW1pbmcpCiAJ CXsKIAkJCUlOU1RSX1RJTUVfU0VUX0NVUlJFTlQoaW9fdGltZSk7Ci0JCQlJTlNUUl9USU1FX0FD Q1VNX0RJRkYocGdCdWZmZXJVc2FnZS50ZW1wX2Jsa193cml0ZV90aW1lLCBpb190aW1lLCBpb19z dGFydCk7CisJCQlJTlNUUl9CVUZVU0FHRV9USU1FX0FDQ1VNX0RJRkYodGVtcF9ibGtfd3JpdGVf dGltZSwgaW9fdGltZSwgaW9fc3RhcnQpOwogCQl9CiAKIAkJZmlsZS0+Y3VyT2Zmc2V0ICs9IGJ5 dGVzdG93cml0ZTsKIAkJd3BvcyArPSBieXRlc3Rvd3JpdGU7CiAKLQkJcGdCdWZmZXJVc2FnZS50 ZW1wX2Jsa3Nfd3JpdHRlbisrOworCQlJTlNUUl9CVUZVU0FHRV9JTkNSKHRlbXBfYmxrc193cml0 dGVuKTsKIAl9CiAJZmlsZS0+ZGlydHkgPSBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X2lvLmMgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0 eS9wZ3N0YXRfaW8uYwppbmRleCAyOGRlMjQ1MzhkYy4uOWU3YTg4ZWMwZDAgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9pby5jCisrKyBiL3NyYy9iYWNrZW5k L3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9pby5jCkBAIC0xMzUsMTcgKzEzNSwxNyBAQCBwZ3N0YXRf Y291bnRfaW9fb3BfdGltZShJT09iamVjdCBpb19vYmplY3QsIElPQ29udGV4dCBpb19jb250ZXh0 LCBJT09wIGlvX29wLAogCQkJewogCQkJCXBnc3RhdF9jb3VudF9idWZmZXJfd3JpdGVfdGltZShJ TlNUUl9USU1FX0dFVF9NSUNST1NFQyhpb190aW1lKSk7CiAJCQkJaWYgKGlvX29iamVjdCA9PSBJ T09CSkVDVF9SRUxBVElPTikKLQkJCQkJSU5TVFJfVElNRV9BREQocGdCdWZmZXJVc2FnZS5zaGFy ZWRfYmxrX3dyaXRlX3RpbWUsIGlvX3RpbWUpOworCQkJCQlJTlNUUl9CVUZVU0FHRV9USU1FX0FE RChzaGFyZWRfYmxrX3dyaXRlX3RpbWUsIGlvX3RpbWUpOwogCQkJCWVsc2UgaWYgKGlvX29iamVj dCA9PSBJT09CSkVDVF9URU1QX1JFTEFUSU9OKQotCQkJCQlJTlNUUl9USU1FX0FERChwZ0J1ZmZl clVzYWdlLmxvY2FsX2Jsa193cml0ZV90aW1lLCBpb190aW1lKTsKKwkJCQkJSU5TVFJfQlVGVVNB R0VfVElNRV9BREQobG9jYWxfYmxrX3dyaXRlX3RpbWUsIGlvX3RpbWUpOwogCQkJfQogCQkJZWxz ZSBpZiAoaW9fb3AgPT0gSU9PUF9SRUFEKQogCQkJewogCQkJCXBnc3RhdF9jb3VudF9idWZmZXJf cmVhZF90aW1lKElOU1RSX1RJTUVfR0VUX01JQ1JPU0VDKGlvX3RpbWUpKTsKIAkJCQlpZiAoaW9f b2JqZWN0ID09IElPT0JKRUNUX1JFTEFUSU9OKQotCQkJCQlJTlNUUl9USU1FX0FERChwZ0J1ZmZl clVzYWdlLnNoYXJlZF9ibGtfcmVhZF90aW1lLCBpb190aW1lKTsKKwkJCQkJSU5TVFJfQlVGVVNB R0VfVElNRV9BREQoc2hhcmVkX2Jsa19yZWFkX3RpbWUsIGlvX3RpbWUpOwogCQkJCWVsc2UgaWYg KGlvX29iamVjdCA9PSBJT09CSkVDVF9URU1QX1JFTEFUSU9OKQotCQkJCQlJTlNUUl9USU1FX0FE RChwZ0J1ZmZlclVzYWdlLmxvY2FsX2Jsa19yZWFkX3RpbWUsIGlvX3RpbWUpOworCQkJCQlJTlNU Ul9CVUZVU0FHRV9USU1FX0FERChsb2NhbF9ibGtfcmVhZF90aW1lLCBpb190aW1lKTsKIAkJCX0K IAkJfQogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRvci9pbnN0cnVtZW50LmggYi9z cmMvaW5jbHVkZS9leGVjdXRvci9pbnN0cnVtZW50LmgKaW5kZXggYjExZDY0NjMzYjUuLjExMzli ZTgzMzNlIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9pbnN0cnVtZW50LmgKKysr IGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvaW5zdHJ1bWVudC5oCkBAIC0xNTMsNCArMTUzLDIzIEBA IGV4dGVybiB2b2lkIEJ1ZmZlclVzYWdlQWNjdW1EaWZmKEJ1ZmZlclVzYWdlICpkc3QsCiBleHRl cm4gdm9pZCBXYWxVc2FnZUFjY3VtRGlmZihXYWxVc2FnZSAqZHN0LCBjb25zdCBXYWxVc2FnZSAq YWRkLAogCQkJCQkJCSAgY29uc3QgV2FsVXNhZ2UgKnN1Yik7CiAKKyNkZWZpbmUgSU5TVFJfQlVG VVNBR0VfSU5DUihmbGQpIGRvIHsgXAorCQlwZ0J1ZmZlclVzYWdlLmZsZCsrOyBcCisJfSB3aGls ZSgwKQorI2RlZmluZSBJTlNUUl9CVUZVU0FHRV9BREQoZmxkLHZhbCkgZG8geyBcCisJCXBnQnVm ZmVyVXNhZ2UuZmxkICs9IHZhbDsgXAorCX0gd2hpbGUoMCkKKyNkZWZpbmUgSU5TVFJfQlVGVVNB R0VfVElNRV9BREQoZmxkLHZhbCkgZG8geyBcCisJSU5TVFJfVElNRV9BREQocGdCdWZmZXJVc2Fn ZS5mbGQsIHZhbCk7IFwKKwl9IHdoaWxlICgwKQorI2RlZmluZSBJTlNUUl9CVUZVU0FHRV9USU1F X0FDQ1VNX0RJRkYoZmxkLGVuZHZhbCxzdGFydHZhbCkgZG8geyBcCisJSU5TVFJfVElNRV9BQ0NV TV9ESUZGKHBnQnVmZmVyVXNhZ2UuZmxkLCBlbmR2YWwsIHN0YXJ0dmFsKTsgXAorCX0gd2hpbGUg KDApCisjZGVmaW5lIElOU1RSX1dBTFVTQUdFX0lOQ1IoZmxkKSBkbyB7IFwKKwkJcGdXYWxVc2Fn ZS5mbGQrKzsgXAorCX0gd2hpbGUoMCkKKyNkZWZpbmUgSU5TVFJfV0FMVVNBR0VfQUREKGZsZCx2 YWwpIGRvIHsgXAorCQlwZ1dhbFVzYWdlLmZsZCArPSB2YWw7IFwKKwl9IHdoaWxlKDApCisKICNl bmRpZgkJCQkJCQkvKiBJTlNUUlVNRU5UX0ggKi8KLS0gCjIuNDcuMQoK --00000000000002247a064c7bb7b8 Content-Type: application/octet-stream; name="v7-0005-Optimize-measuring-WAL-buffer-usage-through-stack.patch" Content-Disposition: attachment; filename="v7-0005-Optimize-measuring-WAL-buffer-usage-through-stack.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmh8zh0l4 RnJvbSBhNTljOTc3OGI5YTFjZGQ5OGQwZWE1OGYxYTZhMzkxZWZhODRiMDA3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpEYXRlOiBU dWUsIDkgU2VwIDIwMjUgMDI6MTY6NTkgLTA3MDAKU3ViamVjdDogW1BBVENIIHY3IDUvOF0gT3B0 aW1pemUgbWVhc3VyaW5nIFdBTC9idWZmZXIgdXNhZ2UgdGhyb3VnaAogc3RhY2stYmFzZWQgaW5z dHJ1bWVudGF0aW9uCgpQcmV2aW91c2x5LCBpbiBvcmRlciB0byBkZXRlcm1pbmUgdGhlIGJ1ZmZl ci9XQUwgdXNhZ2Ugb2YgYSBnaXZlbiBjb2RlCnNlY3Rpb24sIHdlIHV0aWxpemVkIGNvbnRpbnVv dXNseSBpbmNyZW1lbnRpbmcgZ2xvYmFsIGNvdW50ZXJzIHRoYXQgZ2V0CnVwZGF0ZWQgd2hlbiB0 aGUgYWN0dWFsIGFjdGl2aXR5IChlLmcuIHNoYXJlZCBibG9jayByZWFkKSBvY2N1cnJlZCwgYW5k CnRoZW4gY2FsY3VsYXRlZCBhIGRpZmYgd2hlbiB0aGUgY29kZSBzZWN0aW9uIGVuZGVkLiBUaGlz IHJlc3VsdGVkIGluIGEKYm90dGxlbmVjayBmb3IgZXhlY3V0b3Igbm9kZSBpbnN0cnVtZW50YXRp b24gc3BlY2lmaWNhbGx5LCB3aXRoIHRoZQpmdW5jdGlvbiBCdWZmZXJVc2FnZUFjY3VtRGlmZiBz aG93aW5nIHVwIGluIHByb2ZpbGVzIGFuZCBpbiBzb21lIGNhc2VzCmFkZGluZyB1cCB0byAxMCUg b3ZlcmhlYWQgdG8gYW4gRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUykgcnVuLgoKSW5zdGVhZCwg aW50cm9kdWNlIGEgc3RhY2stYmFzZWQgbWVjaGFuaXNtLCB3aGVyZSB0aGUgYWN0dWFsIGFjdGl2 aXR5CndyaXRlcyBpbnRvIHRoZSBjdXJyZW50IHN0YWNrIGVudHJ5LiBJbiB0aGUgY2FzZSBvZiBl eGVjdXRvciBub2RlcywgdGhpcwptZWFucyB0aGF0IGVhY2ggbm9kZSBnZXRzIGl0cyBvd24gc3Rh Y2sgZW50cnkgdGhhdCBpcyBwdXNoZWQgYXQKSW5zdHJTdGFydE5vZGUsIGFuZCBwb3BwZWQgYXQg SW5zdHJFbmROb2RlLiBTdGFjayBlbnRyaWVzIGFyZSB6ZXJvCmluaXRpYWxpemVkIChhdm9pZGlu ZyB0aGUgZGlmZiBtZWNoYW5pc20pIGFuZCBnZXQgYWRkZWQgdG8gdGhlaXIgcGFyZW50CmVudHJ5 IHdoZW4gdGhleSBhcmUgZmluYWxpemVkLCBpLmUuIG5vIG1vcmUgbW9kaWZpY2F0aW9ucyBjYW4g b2NjdXIuCgpUbyBjb3JyZWN0bHkgaGFuZGxlIGFib3J0IHNpdHVhdGlvbnMsIGFueSB1c2Ugb2Yg aW5zdHJ1bWVudGF0aW9uIHN0YWNrcwptdXN0IGludm9sdmUgZWl0aGVyIGEgdG9wLWxldmVsIFF1 ZXJ5SW5zdHJ1bWVudGF0aW9uIHN0cnVjdCwgYW5kIGl0cwphc3NvY2lhdGVkIEluc3RyUXVlcnlT dGFydC9JbnN0clF1ZXJ5U3RvcCBoZWxwZXJzICh3aGljaCB1c2UgcmVzb3VyY2UKb3duZXJzIHRv IGhhbmRsZSBhYm9ydHMpLCBvciB0aGUgSW5zdHJ1bWVudGF0aW9uIHN0cnVjdCBpdHNlbGYgd2l0 aApkZWRpY2F0ZWQgUEdfVFJZL1BHX0ZJTkFMTFkgY2FsbHMgdGhhdCBlbnN1cmUgdGhlIHN0YWNr IGlzIGluIGEKY29uc2lzdGVudCBzdGF0ZSBhZnRlciBhbiBhYm9ydC4KClRoaXMgYWxzbyBkcm9w cyB0aGUgZ2xvYmFsIHBnQnVmZmVyVXNhZ2UsIGFueSBjYWxsZXJzIGludGVyZXN0ZWQgaW4KbWVh c3VyaW5nIGJ1ZmZlciBhY3Rpdml0eSBzaG91bGQgaW5zdGVhZCB1dGlsaXplIEluc3RyU3RhcnQv SW5zdHJTdG9wLgoKVGhlIHJlbGF0ZWQgZ2xvYmFsIHBnV2FsVXNhZ2UgaXMga2VwdCBmb3Igbm93 IGR1ZSB0byBpdHMgdXNlIGluIHBnc3RhdAp0byB0cmFjayBhZ2dyZWdhdGUgV0FMIGFjdGl2aXR5 IGFuZCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSBmb3IKbWVhc3VyaW5nIEZQSXMuCgpBdXRo b3I6IEx1a2FzIEZpdHRsIDxsdWthc0BmaXR0bC5jb20+ClJldmlld2VkLWJ5OgpEaXNjdXNzaW9u OgotLS0KIGNvbnRyaWIvYXV0b19leHBsYWluL2F1dG9fZXhwbGFpbi5jICAgICAgICAgICB8ICAx NiArLQogLi4uL3BnX3N0YXRfc3RhdGVtZW50cy9wZ19zdGF0X3N0YXRlbWVudHMuYyAgIHwgIDg3 ICstLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW4uYyAgICAgICAgICAgICAgICB8ICAx MCArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5pbnNlcnQuYyAgICAgICAgICAgIHwgIDEw ICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgICAgICAgICAgfCAgMTUg Ky0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jICAgICAgICAgICB8ICAxMCAr LQogc3JjL2JhY2tlbmQvY29tbWFuZHMvYW5hbHl6ZS5jICAgICAgICAgICAgICAgIHwgIDMxICst CiBzcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMgICAgICAgICAgICAgICAgfCAgMjYgKy0K IHNyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW5fZHIuYyAgICAgICAgICAgICB8ICAzMSArLQog c3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jICAgICAgICAgICAgICAgIHwgIDI3ICstCiBz cmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jICAgICAgICAgfCAgMTAgKy0KIHNy Yy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMgICAgICAgICAgICAgICB8ICA2NiArKy0KIHNy Yy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jICAgICAgICAgICB8ICAgOCArLQogc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZXhlY1Byb2Nub2RlLmMgICAgICAgICAgIHwgIDg0ICsrKy0KIHNy Yy9iYWNrZW5kL2V4ZWN1dG9yL2luc3RydW1lbnQuYyAgICAgICAgICAgICB8IDM4OSArKysrKysr KysrKysrLS0tLS0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1nci5jICAgICAgICAg ICB8ICAgNiArLQogc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X2lvLmMgICAgICAg IHwgICA2ICstCiBzcmMvaW5jbHVkZS9leGVjdXRvci9leGVjZGVzYy5oICAgICAgICAgICAgICAg fCAgIDQgKy0KIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmggICAgICAgICAgICAgICB8 ICAgMiArCiBzcmMvaW5jbHVkZS9leGVjdXRvci9pbnN0cnVtZW50LmggICAgICAgICAgICAgfCAx NzkgKysrKysrKy0KIHNyYy9pbmNsdWRlL3V0aWxzL3Jlc293bmVyLmggICAgICAgICAgICAgICAg ICB8ICAgMSArCiBzcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCAgICAgICAgICAgICAg fCAgIDIgKwogMjIgZmlsZXMgY2hhbmdlZCwgNzIwIGluc2VydGlvbnMoKyksIDMwMCBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9jb250cmliL2F1dG9fZXhwbGFpbi9hdXRvX2V4cGxhaW4uYyBi L2NvbnRyaWIvYXV0b19leHBsYWluL2F1dG9fZXhwbGFpbi5jCmluZGV4IDM5YmYyNTQzYjcwLi40 YmU4MTQ4OWZmNCAxMDA2NDQKLS0tIGEvY29udHJpYi9hdXRvX2V4cGxhaW4vYXV0b19leHBsYWlu LmMKKysrIGIvY29udHJpYi9hdXRvX2V4cGxhaW4vYXV0b19leHBsYWluLmMKQEAgLTMwNSwxOSAr MzA1LDkgQEAgZXhwbGFpbl9FeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQg ZWZsYWdzKQogCiAJaWYgKGF1dG9fZXhwbGFpbl9lbmFibGVkKCkpCiAJewotCQkvKgotCQkgKiBT ZXQgdXAgdG8gdHJhY2sgdG90YWwgZWxhcHNlZCB0aW1lIGluIEV4ZWN1dG9yUnVuLiAgTWFrZSBz dXJlIHRoZQotCQkgKiBzcGFjZSBpcyBhbGxvY2F0ZWQgaW4gdGhlIHBlci1xdWVyeSBjb250ZXh0 IHNvIGl0IHdpbGwgZ28gYXdheSBhdAotCQkgKiBFeGVjdXRvckVuZC4KLQkJICovCisJCS8qIFNl dCB1cCB0byB0cmFjayB0b3RhbCBlbGFwc2VkIHRpbWUgaW4gRXhlY3V0b3JSdW4uICovCiAJCWlm IChxdWVyeURlc2MtPnRvdGFsdGltZSA9PSBOVUxMKQotCQl7Ci0JCQlNZW1vcnlDb250ZXh0IG9s ZGN4dDsKLQotCQkJb2xkY3h0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKHF1ZXJ5RGVzYy0+ZXN0 YXRlLT5lc19xdWVyeV9jeHQpOwotCQkJcXVlcnlEZXNjLT50b3RhbHRpbWUgPSBJbnN0ckFsbG9j KElOU1RSVU1FTlRfQUxMKTsKLQkJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjeHQpOwotCQl9 CisJCQlxdWVyeURlc2MtPnRvdGFsdGltZSA9IEluc3RyUXVlcnlBbGxvYyhJTlNUUlVNRU5UX0FM TCk7CiAJfQogfQogCkBAIC0zODIsNyArMzcyLDcgQEAgZXhwbGFpbl9FeGVjdXRvckVuZChRdWVy eURlc2MgKnF1ZXJ5RGVzYykKIAkJb2xkY3h0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKHF1ZXJ5 RGVzYy0+ZXN0YXRlLT5lc19xdWVyeV9jeHQpOwogCiAJCS8qIExvZyBwbGFuIGlmIGR1cmF0aW9u IGlzIGV4Y2VlZGVkLiAqLwotCQltc2VjID0gSU5TVFJfVElNRV9HRVRfTUlMTElTRUMocXVlcnlE ZXNjLT50b3RhbHRpbWUtPnRvdGFsKTsKKwkJbXNlYyA9IElOU1RSX1RJTUVfR0VUX01JTExJU0VD KHF1ZXJ5RGVzYy0+dG90YWx0aW1lLT5pbnN0ci50b3RhbCk7CiAJCWlmIChtc2VjID49IGF1dG9f ZXhwbGFpbl9sb2dfbWluX2R1cmF0aW9uKQogCQl7CiAJCQlFeHBsYWluU3RhdGUgKmVzID0gTmV3 RXhwbGFpblN0YXRlKCk7CmRpZmYgLS1naXQgYS9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9w Z19zdGF0X3N0YXRlbWVudHMuYyBiL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3BnX3N0YXRf c3RhdGVtZW50cy5jCmluZGV4IDM4OGIwNjhjY2VjLi44NDQ4ZjljMTNmYSAxMDA2NDQKLS0tIGEv Y29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvcGdfc3RhdF9zdGF0ZW1lbnRzLmMKKysrIGIvY29u dHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvcGdfc3RhdF9zdGF0ZW1lbnRzLmMKQEAgLTkwOSwyMiAr OTA5LDExIEBAIHBnc3NfcGxhbm5lcihRdWVyeSAqcGFyc2UsCiAJCSYmIHBnc3NfdHJhY2tfcGxh bm5pbmcgJiYgcXVlcnlfc3RyaW5nCiAJCSYmIHBhcnNlLT5xdWVyeUlkICE9IElOVDY0Q09OU1Qo MCkpCiAJewotCQlpbnN0cl90aW1lCXN0YXJ0OwotCQlpbnN0cl90aW1lCWR1cmF0aW9uOwotCQlC dWZmZXJVc2FnZSBidWZ1c2FnZV9zdGFydCwKLQkJCQkJYnVmdXNhZ2U7Ci0JCVdhbFVzYWdlCXdh bHVzYWdlX3N0YXJ0LAotCQkJCQl3YWx1c2FnZTsKKwkJSW5zdHJ1bWVudGF0aW9uIGluc3RyID0g ezB9OwogCi0JCS8qIFdlIG5lZWQgdG8gdHJhY2sgYnVmZmVyIHVzYWdlIGFzIHRoZSBwbGFubmVy IGNhbiBhY2Nlc3MgdGhlbS4gKi8KLQkJYnVmdXNhZ2Vfc3RhcnQgPSBwZ0J1ZmZlclVzYWdlOwot Ci0JCS8qCi0JCSAqIFNpbWlsYXJseSB0aGUgcGxhbm5lciBjb3VsZCB3cml0ZSBzb21lIFdBTCBy ZWNvcmRzIGluIHNvbWUgY2FzZXMKLQkJICogKGUuZy4gc2V0dGluZyBhIGhpbnQgYml0IHdpdGgg dGhvc2UgYmVpbmcgV0FMLWxvZ2dlZCkKLQkJICovCi0JCXdhbHVzYWdlX3N0YXJ0ID0gcGdXYWxV c2FnZTsKLQkJSU5TVFJfVElNRV9TRVRfQ1VSUkVOVChzdGFydCk7CisJCS8qIFRyYWNrIHRpbWUg YW5kIGJ1ZmZlci9XQUwgdXNhZ2UgYXMgdGhlIHBsYW5uZXIgY2FuIGFjY2VzcyB0aGVtLiAqLwor CQlJbnN0ckluaXRPcHRpb25zKCZpbnN0ciwgSU5TVFJVTUVOVF9BTEwpOworCQlJbnN0clN0YXJ0 KCZpbnN0cik7CiAKIAkJbmVzdGluZ19sZXZlbCsrOwogCQlQR19UUlkoKTsKQEAgLTkzOCwzMCAr OTI3LDIwIEBAIHBnc3NfcGxhbm5lcihRdWVyeSAqcGFyc2UsCiAJCX0KIAkJUEdfRklOQUxMWSgp OwogCQl7CisJCQlJbnN0clN0b3BGaW5hbGl6ZSgmaW5zdHIpOwogCQkJbmVzdGluZ19sZXZlbC0t OwogCQl9CiAJCVBHX0VORF9UUlkoKTsKIAotCQlJTlNUUl9USU1FX1NFVF9DVVJSRU5UKGR1cmF0 aW9uKTsKLQkJSU5TVFJfVElNRV9TVUJUUkFDVChkdXJhdGlvbiwgc3RhcnQpOwotCi0JCS8qIGNh bGMgZGlmZmVyZW5jZXMgb2YgYnVmZmVyIGNvdW50ZXJzLiAqLwotCQltZW1zZXQoJmJ1ZnVzYWdl LCAwLCBzaXplb2YoQnVmZmVyVXNhZ2UpKTsKLQkJQnVmZmVyVXNhZ2VBY2N1bURpZmYoJmJ1ZnVz YWdlLCAmcGdCdWZmZXJVc2FnZSwgJmJ1ZnVzYWdlX3N0YXJ0KTsKLQotCQkvKiBjYWxjIGRpZmZl cmVuY2VzIG9mIFdBTCBjb3VudGVycy4gKi8KLQkJbWVtc2V0KCZ3YWx1c2FnZSwgMCwgc2l6ZW9m KFdhbFVzYWdlKSk7Ci0JCVdhbFVzYWdlQWNjdW1EaWZmKCZ3YWx1c2FnZSwgJnBnV2FsVXNhZ2Us ICZ3YWx1c2FnZV9zdGFydCk7Ci0KIAkJcGdzc19zdG9yZShxdWVyeV9zdHJpbmcsCiAJCQkJICAg cGFyc2UtPnF1ZXJ5SWQsCiAJCQkJICAgcGFyc2UtPnN0bXRfbG9jYXRpb24sCiAJCQkJICAgcGFy c2UtPnN0bXRfbGVuLAogCQkJCSAgIFBHU1NfUExBTiwKLQkJCQkgICBJTlNUUl9USU1FX0dFVF9N SUxMSVNFQyhkdXJhdGlvbiksCisJCQkJICAgSU5TVFJfVElNRV9HRVRfTUlMTElTRUMoaW5zdHIu dG90YWwpLAogCQkJCSAgIDAsCi0JCQkJICAgJmJ1ZnVzYWdlLAotCQkJCSAgICZ3YWx1c2FnZSwK KwkJCQkgICAmaW5zdHIuYnVmdXNhZ2UsCisJCQkJICAgJmluc3RyLndhbHVzYWdlLAogCQkJCSAg IE5VTEwsCiAJCQkJICAgTlVMTCwKIAkJCQkgICAwLApAQCAtMTAxMywxOSArOTkyLDkgQEAgcGdz c19FeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQogCSAqLwog CWlmIChwZ3NzX2VuYWJsZWQobmVzdGluZ19sZXZlbCkgJiYgcXVlcnlEZXNjLT5wbGFubmVkc3Rt dC0+cXVlcnlJZCAhPSBJTlQ2NENPTlNUKDApKQogCXsKLQkJLyoKLQkJICogU2V0IHVwIHRvIHRy YWNrIHRvdGFsIGVsYXBzZWQgdGltZSBpbiBFeGVjdXRvclJ1bi4gIE1ha2Ugc3VyZSB0aGUKLQkJ ICogc3BhY2UgaXMgYWxsb2NhdGVkIGluIHRoZSBwZXItcXVlcnkgY29udGV4dCBzbyBpdCB3aWxs IGdvIGF3YXkgYXQKLQkJICogRXhlY3V0b3JFbmQuCi0JCSAqLworCQkvKiBTZXQgdXAgdG8gdHJh Y2sgdG90YWwgZWxhcHNlZCB0aW1lIGluIEV4ZWN1dG9yUnVuLiAqLwogCQlpZiAocXVlcnlEZXNj LT50b3RhbHRpbWUgPT0gTlVMTCkKLQkJewotCQkJTWVtb3J5Q29udGV4dCBvbGRjeHQ7Ci0KLQkJ CW9sZGN4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhxdWVyeURlc2MtPmVzdGF0ZS0+ZXNfcXVl cnlfY3h0KTsKLQkJCXF1ZXJ5RGVzYy0+dG90YWx0aW1lID0gSW5zdHJBbGxvYyhJTlNUUlVNRU5U X0FMTCk7Ci0JCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3h0KTsKLQkJfQorCQkJcXVlcnlE ZXNjLT50b3RhbHRpbWUgPSBJbnN0clF1ZXJ5QWxsb2MoSU5TVFJVTUVOVF9BTEwpOwogCX0KIH0K IApAQCAtMTA4NywxMCArMTA1NiwxMCBAQCBwZ3NzX0V4ZWN1dG9yRW5kKFF1ZXJ5RGVzYyAqcXVl cnlEZXNjKQogCQkJCSAgIHF1ZXJ5RGVzYy0+cGxhbm5lZHN0bXQtPnN0bXRfbG9jYXRpb24sCiAJ CQkJICAgcXVlcnlEZXNjLT5wbGFubmVkc3RtdC0+c3RtdF9sZW4sCiAJCQkJICAgUEdTU19FWEVD LAotCQkJCSAgIElOU1RSX1RJTUVfR0VUX01JTExJU0VDKHF1ZXJ5RGVzYy0+dG90YWx0aW1lLT50 b3RhbCksCisJCQkJICAgSU5TVFJfVElNRV9HRVRfTUlMTElTRUMocXVlcnlEZXNjLT50b3RhbHRp bWUtPmluc3RyLnRvdGFsKSwKIAkJCQkgICBxdWVyeURlc2MtPmVzdGF0ZS0+ZXNfdG90YWxfcHJv Y2Vzc2VkLAotCQkJCSAgICZxdWVyeURlc2MtPnRvdGFsdGltZS0+YnVmdXNhZ2UsCi0JCQkJICAg JnF1ZXJ5RGVzYy0+dG90YWx0aW1lLT53YWx1c2FnZSwKKwkJCQkgICAmcXVlcnlEZXNjLT50b3Rh bHRpbWUtPmluc3RyLmJ1ZnVzYWdlLAorCQkJCSAgICZxdWVyeURlc2MtPnRvdGFsdGltZS0+aW5z dHIud2FsdXNhZ2UsCiAJCQkJICAgcXVlcnlEZXNjLT5lc3RhdGUtPmVzX2ppdCA/ICZxdWVyeURl c2MtPmVzdGF0ZS0+ZXNfaml0LT5pbnN0ciA6IE5VTEwsCiAJCQkJICAgTlVMTCwKIAkJCQkgICBx dWVyeURlc2MtPmVzdGF0ZS0+ZXNfcGFyYWxsZWxfd29ya2Vyc190b19sYXVuY2gsCkBAIC0xMTU0 LDE3ICsxMTIzLDExIEBAIHBnc3NfUHJvY2Vzc1V0aWxpdHkoUGxhbm5lZFN0bXQgKnBzdG10LCBj b25zdCBjaGFyICpxdWVyeVN0cmluZywKIAkJIUlzQShwYXJzZXRyZWUsIEV4ZWN1dGVTdG10KSAm JgogCQkhSXNBKHBhcnNldHJlZSwgUHJlcGFyZVN0bXQpKQogCXsKLQkJaW5zdHJfdGltZQlzdGFy dDsKLQkJaW5zdHJfdGltZQlkdXJhdGlvbjsKIAkJdWludDY0CQlyb3dzOwotCQlCdWZmZXJVc2Fn ZSBidWZ1c2FnZV9zdGFydCwKLQkJCQkJYnVmdXNhZ2U7Ci0JCVdhbFVzYWdlCXdhbHVzYWdlX3N0 YXJ0LAotCQkJCQl3YWx1c2FnZTsKKwkJSW5zdHJ1bWVudGF0aW9uIGluc3RyID0gezB9OwogCi0J CWJ1ZnVzYWdlX3N0YXJ0ID0gcGdCdWZmZXJVc2FnZTsKLQkJd2FsdXNhZ2Vfc3RhcnQgPSBwZ1dh bFVzYWdlOwotCQlJTlNUUl9USU1FX1NFVF9DVVJSRU5UKHN0YXJ0KTsKKwkJSW5zdHJJbml0T3B0 aW9ucygmaW5zdHIsIElOU1RSVU1FTlRfQUxMKTsKKwkJSW5zdHJTdGFydCgmaW5zdHIpOwogCiAJ CW5lc3RpbmdfbGV2ZWwrKzsKIAkJUEdfVFJZKCk7CkBAIC0xMTgwLDYgKzExNDMsNyBAQCBwZ3Nz X1Byb2Nlc3NVdGlsaXR5KFBsYW5uZWRTdG10ICpwc3RtdCwgY29uc3QgY2hhciAqcXVlcnlTdHJp bmcsCiAJCX0KIAkJUEdfRklOQUxMWSgpOwogCQl7CisJCQlJbnN0clN0b3BGaW5hbGl6ZSgmaW5z dHIpOwogCQkJbmVzdGluZ19sZXZlbC0tOwogCQl9CiAJCVBHX0VORF9UUlkoKTsKQEAgLTExOTQs OSArMTE1OCw2IEBAIHBnc3NfUHJvY2Vzc1V0aWxpdHkoUGxhbm5lZFN0bXQgKnBzdG10LCBjb25z dCBjaGFyICpxdWVyeVN0cmluZywKIAkJICogZm9ybWVyIHZhbHVlLCB3aGljaCdkIG90aGVyd2lz ZSBiZSBhIGdvb2QgaWRlYS4KIAkJICovCiAKLQkJSU5TVFJfVElNRV9TRVRfQ1VSUkVOVChkdXJh dGlvbik7Ci0JCUlOU1RSX1RJTUVfU1VCVFJBQ1QoZHVyYXRpb24sIHN0YXJ0KTsKLQogCQkvKgog CQkgKiBUcmFjayB0aGUgdG90YWwgbnVtYmVyIG9mIHJvd3MgcmV0cmlldmVkIG9yIGFmZmVjdGVk IGJ5IHRoZSB1dGlsaXR5CiAJCSAqIHN0YXRlbWVudHMgb2YgQ09QWSwgRkVUQ0gsIENSRUFURSBU QUJMRSBBUywgQ1JFQVRFIE1BVEVSSUFMSVpFRApAQCAtMTIwOCwyMyArMTE2OSwxNSBAQCBwZ3Nz X1Byb2Nlc3NVdGlsaXR5KFBsYW5uZWRTdG10ICpwc3RtdCwgY29uc3QgY2hhciAqcXVlcnlTdHJp bmcsCiAJCQkJCSAgIHFjLT5jb21tYW5kVGFnID09IENNRFRBR19SRUZSRVNIX01BVEVSSUFMSVpF RF9WSUVXKSkgPwogCQkJcWMtPm5wcm9jZXNzZWQgOiAwOwogCi0JCS8qIGNhbGMgZGlmZmVyZW5j ZXMgb2YgYnVmZmVyIGNvdW50ZXJzLiAqLwotCQltZW1zZXQoJmJ1ZnVzYWdlLCAwLCBzaXplb2Yo QnVmZmVyVXNhZ2UpKTsKLQkJQnVmZmVyVXNhZ2VBY2N1bURpZmYoJmJ1ZnVzYWdlLCAmcGdCdWZm ZXJVc2FnZSwgJmJ1ZnVzYWdlX3N0YXJ0KTsKLQotCQkvKiBjYWxjIGRpZmZlcmVuY2VzIG9mIFdB TCBjb3VudGVycy4gKi8KLQkJbWVtc2V0KCZ3YWx1c2FnZSwgMCwgc2l6ZW9mKFdhbFVzYWdlKSk7 Ci0JCVdhbFVzYWdlQWNjdW1EaWZmKCZ3YWx1c2FnZSwgJnBnV2FsVXNhZ2UsICZ3YWx1c2FnZV9z dGFydCk7Ci0KIAkJcGdzc19zdG9yZShxdWVyeVN0cmluZywKIAkJCQkgICBzYXZlZF9xdWVyeUlk LAogCQkJCSAgIHNhdmVkX3N0bXRfbG9jYXRpb24sCiAJCQkJICAgc2F2ZWRfc3RtdF9sZW4sCiAJ CQkJICAgUEdTU19FWEVDLAotCQkJCSAgIElOU1RSX1RJTUVfR0VUX01JTExJU0VDKGR1cmF0aW9u KSwKKwkJCQkgICBJTlNUUl9USU1FX0dFVF9NSUxMSVNFQyhpbnN0ci50b3RhbCksCiAJCQkJICAg cm93cywKLQkJCQkgICAmYnVmdXNhZ2UsCi0JCQkJICAgJndhbHVzYWdlLAorCQkJCSAgICZpbnN0 ci5idWZ1c2FnZSwKKwkJCQkgICAmaW5zdHIud2FsdXNhZ2UsCiAJCQkJICAgTlVMTCwKIAkJCQkg ICBOVUxMLAogCQkJCSAgIDAsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9i cmluLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMKaW5kZXggMTQ2ZWU5N2E0N2Qu LjVhYjU3MWIyOWZhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMK KysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jCkBAIC0yNDM1LDggKzI0MzUsOCBA QCBfYnJpbl9iZWdpbl9wYXJhbGxlbChCcmluQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRp b24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJICogYW5kIFBBUkFMTEVMX0tFWV9CVUZGRVJfVVNB R0UuCiAJICoKIAkgKiBJZiB0aGVyZSBhcmUgbm8gZXh0ZW5zaW9ucyBsb2FkZWQgdGhhdCBjYXJl LCB3ZSBjb3VsZCBza2lwIHRoaXMuICBXZQotCSAqIGhhdmUgbm8gd2F5IG9mIGtub3dpbmcgd2hl dGhlciBhbnlvbmUncyBsb29raW5nIGF0IHBnV2FsVXNhZ2Ugb3IKLQkgKiBwZ0J1ZmZlclVzYWdl LCBzbyBkbyBpdCB1bmNvbmRpdGlvbmFsbHkuCisJICogaGF2ZSBubyB3YXkgb2Yga25vd2luZyB3 aGV0aGVyIGFueW9uZSdzIGxvb2tpbmcgYXQgaW5zdHJ1bWVudGF0aW9uLCBzbworCSAqIGRvIGl0 IHVuY29uZGl0aW9uYWxseS4KIAkgKi8KIAlzaG1fdG9jX2VzdGltYXRlX2NodW5rKCZwY3h0LT5l c3RpbWF0b3IsCiAJCQkJCQkgICBtdWxfc2l6ZShzaXplb2YoV2FsVXNhZ2UpLCBwY3h0LT5ud29y a2VycykpOwpAQCAtMjg4Nyw2ICsyODg3LDcgQEAgX2JyaW5fcGFyYWxsZWxfYnVpbGRfbWFpbihk c21fc2VnbWVudCAqc2VnLCBzaG1fdG9jICp0b2MpCiAJUmVsYXRpb24JaW5kZXhSZWw7CiAJTE9D S01PREUJaGVhcExvY2ttb2RlOwogCUxPQ0tNT0RFCWluZGV4TG9ja21vZGU7CisJUXVlcnlJbnN0 cnVtZW50YXRpb24gKmluc3RyOwogCVdhbFVzYWdlICAgKndhbHVzYWdlOwogCUJ1ZmZlclVzYWdl ICpidWZmZXJ1c2FnZTsKIAlpbnQJCQlzb3J0bWVtOwpAQCAtMjkzNiw3ICsyOTM3LDcgQEAgX2Jy aW5fcGFyYWxsZWxfYnVpbGRfbWFpbihkc21fc2VnbWVudCAqc2VnLCBzaG1fdG9jICp0b2MpCiAJ dHVwbGVzb3J0X2F0dGFjaF9zaGFyZWQoc2hhcmVkc29ydCwgc2VnKTsKIAogCS8qIFByZXBhcmUg dG8gdHJhY2sgYnVmZmVyIHVzYWdlIGR1cmluZyBwYXJhbGxlbCBleGVjdXRpb24gKi8KLQlJbnN0 clN0YXJ0UGFyYWxsZWxRdWVyeSgpOworCWluc3RyID0gSW5zdHJTdGFydFBhcmFsbGVsUXVlcnko KTsKIAogCS8qCiAJICogTWlnaHQgYXMgd2VsbCB1c2UgcmVsaWFibGUgZmlndXJlIHdoZW4gZG9s aW5nIG91dCBtYWludGVuYW5jZV93b3JrX21lbQpAQCAtMjk1MSw3ICsyOTUyLDggQEAgX2JyaW5f cGFyYWxsZWxfYnVpbGRfbWFpbihkc21fc2VnbWVudCAqc2VnLCBzaG1fdG9jICp0b2MpCiAJLyog UmVwb3J0IFdBTC9idWZmZXIgdXNhZ2UgZHVyaW5nIHBhcmFsbGVsIGV4ZWN1dGlvbiAqLwogCWJ1 ZmZlcnVzYWdlID0gc2htX3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9LRVlfQlVGRkVSX1VTQUdF LCBmYWxzZSk7CiAJd2FsdXNhZ2UgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVMX0tFWV9X QUxfVVNBR0UsIGZhbHNlKTsKLQlJbnN0ckVuZFBhcmFsbGVsUXVlcnkoJmJ1ZmZlcnVzYWdlW1Bh cmFsbGVsV29ya2VyTnVtYmVyXSwKKwlJbnN0ckVuZFBhcmFsbGVsUXVlcnkoaW5zdHIsCisJCQkJ CQkgICZidWZmZXJ1c2FnZVtQYXJhbGxlbFdvcmtlck51bWJlcl0sCiAJCQkJCQkgICZ3YWx1c2Fn ZVtQYXJhbGxlbFdvcmtlck51bWJlcl0pOwogCiAJaW5kZXhfY2xvc2UoaW5kZXhSZWwsIGluZGV4 TG9ja21vZGUpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5pbnNlcnQu YyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luaW5zZXJ0LmMKaW5kZXggYzdlMzhkYmUxOTMu LmJiOTFjYzYwMGViIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmluc2Vy dC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luaW5zZXJ0LmMKQEAgLTk4NCw4ICs5 ODQsOCBAQCBfZ2luX2JlZ2luX3BhcmFsbGVsKEdpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJl bGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAogCSAqIGFuZCBQQVJBTExFTF9LRVlfQlVGRkVS X1VTQUdFLgogCSAqCiAJICogSWYgdGhlcmUgYXJlIG5vIGV4dGVuc2lvbnMgbG9hZGVkIHRoYXQg Y2FyZSwgd2UgY291bGQgc2tpcCB0aGlzLiAgV2UKLQkgKiBoYXZlIG5vIHdheSBvZiBrbm93aW5n IHdoZXRoZXIgYW55b25lJ3MgbG9va2luZyBhdCBwZ1dhbFVzYWdlIG9yCi0JICogcGdCdWZmZXJV c2FnZSwgc28gZG8gaXQgdW5jb25kaXRpb25hbGx5LgorCSAqIGhhdmUgbm8gd2F5IG9mIGtub3dp bmcgd2hldGhlciBhbnlvbmUncyBsb29raW5nIGF0IGluc3RydW1lbnRhdGlvbiwgc28KKwkgKiBk byBpdCB1bmNvbmRpdGlvbmFsbHkuCiAJICovCiAJc2htX3RvY19lc3RpbWF0ZV9jaHVuaygmcGN4 dC0+ZXN0aW1hdG9yLAogCQkJCQkJICAgbXVsX3NpemUoc2l6ZW9mKFdhbFVzYWdlKSwgcGN4dC0+ bndvcmtlcnMpKTsKQEAgLTIxMTAsNiArMjExMCw3IEBAIF9naW5fcGFyYWxsZWxfYnVpbGRfbWFp bihkc21fc2VnbWVudCAqc2VnLCBzaG1fdG9jICp0b2MpCiAJUmVsYXRpb24JaW5kZXhSZWw7CiAJ TE9DS01PREUJaGVhcExvY2ttb2RlOwogCUxPQ0tNT0RFCWluZGV4TG9ja21vZGU7CisJUXVlcnlJ bnN0cnVtZW50YXRpb24gKmluc3RyOwogCVdhbFVzYWdlICAgKndhbHVzYWdlOwogCUJ1ZmZlclVz YWdlICpidWZmZXJ1c2FnZTsKIAlpbnQJCQlzb3J0bWVtOwpAQCAtMjE3OCw3ICsyMTc5LDcgQEAg X2dpbl9wYXJhbGxlbF9idWlsZF9tYWluKGRzbV9zZWdtZW50ICpzZWcsIHNobV90b2MgKnRvYykK IAl0dXBsZXNvcnRfYXR0YWNoX3NoYXJlZChzaGFyZWRzb3J0LCBzZWcpOwogCiAJLyogUHJlcGFy ZSB0byB0cmFjayBidWZmZXIgdXNhZ2UgZHVyaW5nIHBhcmFsbGVsIGV4ZWN1dGlvbiAqLwotCUlu c3RyU3RhcnRQYXJhbGxlbFF1ZXJ5KCk7CisJaW5zdHIgPSBJbnN0clN0YXJ0UGFyYWxsZWxRdWVy eSgpOwogCiAJLyoKIAkgKiBNaWdodCBhcyB3ZWxsIHVzZSByZWxpYWJsZSBmaWd1cmUgd2hlbiBk b2xpbmcgb3V0IG1haW50ZW5hbmNlX3dvcmtfbWVtCkBAIC0yMTkzLDcgKzIxOTQsOCBAQCBfZ2lu X3BhcmFsbGVsX2J1aWxkX21haW4oZHNtX3NlZ21lbnQgKnNlZywgc2htX3RvYyAqdG9jKQogCS8q IFJlcG9ydCBXQUwvYnVmZmVyIHVzYWdlIGR1cmluZyBwYXJhbGxlbCBleGVjdXRpb24gKi8KIAli dWZmZXJ1c2FnZSA9IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfS0VZX0JVRkZFUl9VU0FH RSwgZmFsc2UpOwogCXdhbHVzYWdlID0gc2htX3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9LRVlf V0FMX1VTQUdFLCBmYWxzZSk7Ci0JSW5zdHJFbmRQYXJhbGxlbFF1ZXJ5KCZidWZmZXJ1c2FnZVtQ YXJhbGxlbFdvcmtlck51bWJlcl0sCisJSW5zdHJFbmRQYXJhbGxlbFF1ZXJ5KGluc3RyLAorCQkJ CQkJICAmYnVmZmVydXNhZ2VbUGFyYWxsZWxXb3JrZXJOdW1iZXJdLAogCQkJCQkJICAmd2FsdXNh Z2VbUGFyYWxsZWxXb3JrZXJOdW1iZXJdKTsKIAogCWluZGV4X2Nsb3NlKGluZGV4UmVsLCBpbmRl eExvY2ttb2RlKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxh enkuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwppbmRleCA4MmM1YjI4 ZTBhZC4uYjRjYmQwZTY4MmMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Zh Y3V1bWxhenkuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKQEAg LTY0MSw4ICs2NDEsNyBAQCBoZWFwX3ZhY3V1bV9yZWwoUmVsYXRpb24gcmVsLCBjb25zdCBWYWN1 dW1QYXJhbXMgcGFyYW1zLAogCVRpbWVzdGFtcFR6IHN0YXJ0dGltZSA9IDA7CiAJUGdTdGF0X0Nv dW50ZXIgc3RhcnRyZWFkdGltZSA9IDAsCiAJCQkJc3RhcnR3cml0ZXRpbWUgPSAwOwotCVdhbFVz YWdlCXN0YXJ0d2FsdXNhZ2UgPSBwZ1dhbFVzYWdlOwotCUJ1ZmZlclVzYWdlIHN0YXJ0YnVmZmVy dXNhZ2UgPSBwZ0J1ZmZlclVzYWdlOworCVF1ZXJ5SW5zdHJ1bWVudGF0aW9uICppbnN0ciA9IE5V TEw7CiAJRXJyb3JDb250ZXh0Q2FsbGJhY2sgZXJyY2FsbGJhY2s7CiAJY2hhcgkgICoqaW5kbmFt ZXMgPSBOVUxMOwogCVNpemUJCWRlYWRfaXRlbXNfbWF4X2J5dGVzID0gMDsKQEAgLTY1OCw2ICs2 NTcsOCBAQCBoZWFwX3ZhY3V1bV9yZWwoUmVsYXRpb24gcmVsLCBjb25zdCBWYWN1dW1QYXJhbXMg cGFyYW1zLAogCQkJc3RhcnRyZWFkdGltZSA9IHBnU3RhdEJsb2NrUmVhZFRpbWU7CiAJCQlzdGFy dHdyaXRldGltZSA9IHBnU3RhdEJsb2NrV3JpdGVUaW1lOwogCQl9CisJCWluc3RyID0gSW5zdHJR dWVyeUFsbG9jKElOU1RSVU1FTlRfQlVGRkVSUyB8IElOU1RSVU1FTlRfV0FMKTsKKwkJSW5zdHJR dWVyeVN0YXJ0KGluc3RyKTsKIAl9CiAKIAkvKiBVc2VkIGZvciBpbnN0cnVtZW50YXRpb24gYW5k IHN0YXRzIHJlcG9ydCAqLwpAQCAtOTgzLDE0ICs5ODQsMTQgQEAgaGVhcF92YWN1dW1fcmVsKFJl bGF0aW9uIHJlbCwgY29uc3QgVmFjdXVtUGFyYW1zIHBhcmFtcywKIAl7CiAJCVRpbWVzdGFtcFR6 IGVuZHRpbWUgPSBHZXRDdXJyZW50VGltZXN0YW1wKCk7CiAKKwkJaW5zdHIgPSBJbnN0clF1ZXJ5 U3RvcEZpbmFsaXplKGluc3RyKTsKKwogCQlpZiAodmVyYm9zZSB8fCBwYXJhbXMubG9nX3ZhY3V1 bV9taW5fZHVyYXRpb24gPT0gMCB8fAogCQkJVGltZXN0YW1wRGlmZmVyZW5jZUV4Y2VlZHMoc3Rh cnR0aW1lLCBlbmR0aW1lLAogCQkJCQkJCQkJICAgcGFyYW1zLmxvZ192YWN1dW1fbWluX2R1cmF0 aW9uKSkKIAkJewogCQkJbG9uZwkJc2Vjc19kdXI7CiAJCQlpbnQJCQl1c2Vjc19kdXI7Ci0JCQlX YWxVc2FnZQl3YWx1c2FnZTsKLQkJCUJ1ZmZlclVzYWdlIGJ1ZmZlcnVzYWdlOwogCQkJU3RyaW5n SW5mb0RhdGEgYnVmOwogCQkJY2hhcgkgICAqbXNnZm10OwogCQkJaW50MzIJCWRpZmY7CkBAIC05 OTksMTIgKzEwMDAsMTAgQEAgaGVhcF92YWN1dW1fcmVsKFJlbGF0aW9uIHJlbCwgY29uc3QgVmFj dXVtUGFyYW1zIHBhcmFtcywKIAkJCWludDY0CQl0b3RhbF9ibGtzX2hpdDsKIAkJCWludDY0CQl0 b3RhbF9ibGtzX3JlYWQ7CiAJCQlpbnQ2NAkJdG90YWxfYmxrc19kaXJ0aWVkOworCQkJQnVmZmVy VXNhZ2UgYnVmZmVydXNhZ2UgPSBpbnN0ci0+aW5zdHIuYnVmdXNhZ2U7CisJCQlXYWxVc2FnZQl3 YWx1c2FnZSA9IGluc3RyLT5pbnN0ci53YWx1c2FnZTsKIAogCQkJVGltZXN0YW1wRGlmZmVyZW5j ZShzdGFydHRpbWUsIGVuZHRpbWUsICZzZWNzX2R1ciwgJnVzZWNzX2R1cik7Ci0JCQltZW1zZXQo JndhbHVzYWdlLCAwLCBzaXplb2YoV2FsVXNhZ2UpKTsKLQkJCVdhbFVzYWdlQWNjdW1EaWZmKCZ3 YWx1c2FnZSwgJnBnV2FsVXNhZ2UsICZzdGFydHdhbHVzYWdlKTsKLQkJCW1lbXNldCgmYnVmZmVy dXNhZ2UsIDAsIHNpemVvZihCdWZmZXJVc2FnZSkpOwotCQkJQnVmZmVyVXNhZ2VBY2N1bURpZmYo JmJ1ZmZlcnVzYWdlLCAmcGdCdWZmZXJVc2FnZSwgJnN0YXJ0YnVmZmVydXNhZ2UpOwogCiAJCQl0 b3RhbF9ibGtzX2hpdCA9IGJ1ZmZlcnVzYWdlLnNoYXJlZF9ibGtzX2hpdCArCiAJCQkJYnVmZmVy dXNhZ2UubG9jYWxfYmxrc19oaXQ7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0 cmVlL25idHNvcnQuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jCmluZGV4 IDY5ZWYxNTI3ZTA2Li5kZmU0ZmQ5NDU5YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNz L25idHJlZS9uYnRzb3J0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0 LmMKQEAgLTE0NjUsOCArMTQ2NSw4IEBAIF9idF9iZWdpbl9wYXJhbGxlbChCVEJ1aWxkU3RhdGUg KmJ1aWxkc3RhdGUsIGJvb2wgaXNjb25jdXJyZW50LCBpbnQgcmVxdWVzdCkKIAkgKiBhbmQgUEFS QUxMRUxfS0VZX0JVRkZFUl9VU0FHRS4KIAkgKgogCSAqIElmIHRoZXJlIGFyZSBubyBleHRlbnNp b25zIGxvYWRlZCB0aGF0IGNhcmUsIHdlIGNvdWxkIHNraXAgdGhpcy4gIFdlCi0JICogaGF2ZSBu byB3YXkgb2Yga25vd2luZyB3aGV0aGVyIGFueW9uZSdzIGxvb2tpbmcgYXQgcGdXYWxVc2FnZSBv cgotCSAqIHBnQnVmZmVyVXNhZ2UsIHNvIGRvIGl0IHVuY29uZGl0aW9uYWxseS4KKwkgKiBoYXZl IG5vIHdheSBvZiBrbm93aW5nIHdoZXRoZXIgYW55b25lJ3MgbG9va2luZyBhdCBpbnN0cnVtZW50 YXRpb24sIHNvCisJICogZG8gaXQgdW5jb25kaXRpb25hbGx5LgogCSAqLwogCXNobV90b2NfZXN0 aW1hdGVfY2h1bmsoJnBjeHQtPmVzdGltYXRvciwKIAkJCQkJCSAgIG11bF9zaXplKHNpemVvZihX YWxVc2FnZSksIHBjeHQtPm53b3JrZXJzKSk7CkBAIC0xNzUyLDYgKzE3NTIsNyBAQCBfYnRfcGFy YWxsZWxfYnVpbGRfbWFpbihkc21fc2VnbWVudCAqc2VnLCBzaG1fdG9jICp0b2MpCiAJUmVsYXRp b24JaW5kZXhSZWw7CiAJTE9DS01PREUJaGVhcExvY2ttb2RlOwogCUxPQ0tNT0RFCWluZGV4TG9j a21vZGU7CisJUXVlcnlJbnN0cnVtZW50YXRpb24gKmluc3RyOwogCVdhbFVzYWdlICAgKndhbHVz YWdlOwogCUJ1ZmZlclVzYWdlICpidWZmZXJ1c2FnZTsKIAlpbnQJCQlzb3J0bWVtOwpAQCAtMTgy Nyw3ICsxODI4LDcgQEAgX2J0X3BhcmFsbGVsX2J1aWxkX21haW4oZHNtX3NlZ21lbnQgKnNlZywg c2htX3RvYyAqdG9jKQogCX0KIAogCS8qIFByZXBhcmUgdG8gdHJhY2sgYnVmZmVyIHVzYWdlIGR1 cmluZyBwYXJhbGxlbCBleGVjdXRpb24gKi8KLQlJbnN0clN0YXJ0UGFyYWxsZWxRdWVyeSgpOwor CWluc3RyID0gSW5zdHJTdGFydFBhcmFsbGVsUXVlcnkoKTsKIAogCS8qIFBlcmZvcm0gc29ydGlu ZyBvZiBzcG9vbCwgYW5kIHBvc3NpYmx5IGEgc3Bvb2wyICovCiAJc29ydG1lbSA9IG1haW50ZW5h bmNlX3dvcmtfbWVtIC8gYnRzaGFyZWQtPnNjYW50dXBsZXNvcnRzdGF0ZXM7CkBAIC0xODM3LDcg KzE4MzgsOCBAQCBfYnRfcGFyYWxsZWxfYnVpbGRfbWFpbihkc21fc2VnbWVudCAqc2VnLCBzaG1f dG9jICp0b2MpCiAJLyogUmVwb3J0IFdBTC9idWZmZXIgdXNhZ2UgZHVyaW5nIHBhcmFsbGVsIGV4 ZWN1dGlvbiAqLwogCWJ1ZmZlcnVzYWdlID0gc2htX3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9L RVlfQlVGRkVSX1VTQUdFLCBmYWxzZSk7CiAJd2FsdXNhZ2UgPSBzaG1fdG9jX2xvb2t1cCh0b2Ms IFBBUkFMTEVMX0tFWV9XQUxfVVNBR0UsIGZhbHNlKTsKLQlJbnN0ckVuZFBhcmFsbGVsUXVlcnko JmJ1ZmZlcnVzYWdlW1BhcmFsbGVsV29ya2VyTnVtYmVyXSwKKwlJbnN0ckVuZFBhcmFsbGVsUXVl cnkoaW5zdHIsCisJCQkJCQkgICZidWZmZXJ1c2FnZVtQYXJhbGxlbFdvcmtlck51bWJlcl0sCiAJ CQkJCQkgICZ3YWx1c2FnZVtQYXJhbGxlbFdvcmtlck51bWJlcl0pOwogCiAjaWZkZWYgQlRSRUVf QlVJTERfU1RBVFMKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FuYWx5emUuYyBi L3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FuYWx5emUuYwppbmRleCA1M2FkYWM5MTM5Yi4uMzhmOGIz NzlmYTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FuYWx5emUuYworKysgYi9z cmMvYmFja2VuZC9jb21tYW5kcy9hbmFseXplLmMKQEAgLTMwOCw5ICszMDgsNyBAQCBkb19hbmFs eXplX3JlbChSZWxhdGlvbiBvbmVyZWwsIGNvbnN0IFZhY3V1bVBhcmFtcyBwYXJhbXMsCiAJT2lk CQkJc2F2ZV91c2VyaWQ7CiAJaW50CQkJc2F2ZV9zZWNfY29udGV4dDsKIAlpbnQJCQlzYXZlX25l c3RsZXZlbDsKLQlXYWxVc2FnZQlzdGFydHdhbHVzYWdlID0gcGdXYWxVc2FnZTsKLQlCdWZmZXJV c2FnZSBzdGFydGJ1ZmZlcnVzYWdlID0gcGdCdWZmZXJVc2FnZTsKLQlCdWZmZXJVc2FnZSBidWZm ZXJ1c2FnZTsKKwlRdWVyeUluc3RydW1lbnRhdGlvbiAqaW5zdHIgPSBOVUxMOwogCVBnU3RhdF9D b3VudGVyIHN0YXJ0cmVhZHRpbWUgPSAwOwogCVBnU3RhdF9Db3VudGVyIHN0YXJ0d3JpdGV0aW1l ID0gMDsKIApAQCAtMzYxLDYgKzM1OSw5IEBAIGRvX2FuYWx5emVfcmVsKFJlbGF0aW9uIG9uZXJl bCwgY29uc3QgVmFjdXVtUGFyYW1zIHBhcmFtcywKIAkJfQogCiAJCXBnX3J1c2FnZV9pbml0KCZy dTApOworCisJCWluc3RyID0gSW5zdHJRdWVyeUFsbG9jKElOU1RSVU1FTlRfQlVGRkVSUyB8IElO U1RSVU1FTlRfV0FMKTsKKwkJSW5zdHJRdWVyeVN0YXJ0KGluc3RyKTsKIAl9CiAKIAkvKiBVc2Vk IGZvciBpbnN0cnVtZW50YXRpb24gYW5kIHN0YXRzIHJlcG9ydCAqLwpAQCAtNzQxLDEyICs3NDIs MTMgQEAgZG9fYW5hbHl6ZV9yZWwoUmVsYXRpb24gb25lcmVsLCBjb25zdCBWYWN1dW1QYXJhbXMg cGFyYW1zLAogCXsKIAkJVGltZXN0YW1wVHogZW5kdGltZSA9IEdldEN1cnJlbnRUaW1lc3RhbXAo KTsKIAorCQlpbnN0ciA9IEluc3RyUXVlcnlTdG9wRmluYWxpemUoaW5zdHIpOworCiAJCWlmICh2 ZXJib3NlIHx8IHBhcmFtcy5sb2dfYW5hbHl6ZV9taW5fZHVyYXRpb24gPT0gMCB8fAogCQkJVGlt ZXN0YW1wRGlmZmVyZW5jZUV4Y2VlZHMoc3RhcnR0aW1lLCBlbmR0aW1lLAogCQkJCQkJCQkJICAg cGFyYW1zLmxvZ19hbmFseXplX21pbl9kdXJhdGlvbikpCiAJCXsKIAkJCWxvbmcJCWRlbGF5X2lu X21zOwotCQkJV2FsVXNhZ2UJd2FsdXNhZ2U7CiAJCQlkb3VibGUJCXJlYWRfcmF0ZSA9IDA7CiAJ CQlkb3VibGUJCXdyaXRlX3JhdGUgPSAwOwogCQkJY2hhcgkgICAqbXNnZm10OwpAQCAtNzU0LDE4 ICs3NTYsMTUgQEAgZG9fYW5hbHl6ZV9yZWwoUmVsYXRpb24gb25lcmVsLCBjb25zdCBWYWN1dW1Q YXJhbXMgcGFyYW1zLAogCQkJaW50NjQJCXRvdGFsX2Jsa3NfaGl0OwogCQkJaW50NjQJCXRvdGFs X2Jsa3NfcmVhZDsKIAkJCWludDY0CQl0b3RhbF9ibGtzX2RpcnRpZWQ7Ci0KLQkJCW1lbXNldCgm YnVmZmVydXNhZ2UsIDAsIHNpemVvZihCdWZmZXJVc2FnZSkpOwotCQkJQnVmZmVyVXNhZ2VBY2N1 bURpZmYoJmJ1ZmZlcnVzYWdlLCAmcGdCdWZmZXJVc2FnZSwgJnN0YXJ0YnVmZmVydXNhZ2UpOwot CQkJbWVtc2V0KCZ3YWx1c2FnZSwgMCwgc2l6ZW9mKFdhbFVzYWdlKSk7Ci0JCQlXYWxVc2FnZUFj Y3VtRGlmZigmd2FsdXNhZ2UsICZwZ1dhbFVzYWdlLCAmc3RhcnR3YWx1c2FnZSk7Ci0KLQkJCXRv dGFsX2Jsa3NfaGl0ID0gYnVmZmVydXNhZ2Uuc2hhcmVkX2Jsa3NfaGl0ICsKLQkJCQlidWZmZXJ1 c2FnZS5sb2NhbF9ibGtzX2hpdDsKLQkJCXRvdGFsX2Jsa3NfcmVhZCA9IGJ1ZmZlcnVzYWdlLnNo YXJlZF9ibGtzX3JlYWQgKwotCQkJCWJ1ZmZlcnVzYWdlLmxvY2FsX2Jsa3NfcmVhZDsKLQkJCXRv dGFsX2Jsa3NfZGlydGllZCA9IGJ1ZmZlcnVzYWdlLnNoYXJlZF9ibGtzX2RpcnRpZWQgKwotCQkJ CWJ1ZmZlcnVzYWdlLmxvY2FsX2Jsa3NfZGlydGllZDsKKwkJCUJ1ZmZlclVzYWdlIGJ1ZnVzYWdl ID0gaW5zdHItPmluc3RyLmJ1ZnVzYWdlOworCQkJV2FsVXNhZ2UJd2FsdXNhZ2UgPSBpbnN0ci0+ aW5zdHIud2FsdXNhZ2U7CisKKwkJCXRvdGFsX2Jsa3NfaGl0ID0gYnVmdXNhZ2Uuc2hhcmVkX2Js a3NfaGl0ICsKKwkJCQlidWZ1c2FnZS5sb2NhbF9ibGtzX2hpdDsKKwkJCXRvdGFsX2Jsa3NfcmVh ZCA9IGJ1ZnVzYWdlLnNoYXJlZF9ibGtzX3JlYWQgKworCQkJCWJ1ZnVzYWdlLmxvY2FsX2Jsa3Nf cmVhZDsKKwkJCXRvdGFsX2Jsa3NfZGlydGllZCA9IGJ1ZnVzYWdlLnNoYXJlZF9ibGtzX2RpcnRp ZWQgKworCQkJCWJ1ZnVzYWdlLmxvY2FsX2Jsa3NfZGlydGllZDsKIAogCQkJLyoKIAkJCSAqIFdl IGRvIG5vdCBleHBlY3QgYW4gYW5hbHl6ZSB0byB0YWtlID4gMjUgZGF5cyBhbmQgaXQgc2ltcGxp ZmllcwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCmluZGV4IDM4OTE4MWI4ZDliLi5hYTc2ZjY4YmQxMCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCisrKyBiL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL2V4cGxhaW4uYwpAQCAtMzIyLDE0ICszMjIsMTYgQEAgc3RhbmRhcmRfRXhw bGFpbk9uZVF1ZXJ5KFF1ZXJ5ICpxdWVyeSwgaW50IGN1cnNvck9wdGlvbnMsCiAJCQkJCQkgUXVl cnlFbnZpcm9ubWVudCAqcXVlcnlFbnYpCiB7CiAJUGxhbm5lZFN0bXQgKnBsYW47Ci0JaW5zdHJf dGltZQlwbGFuc3RhcnQsCi0JCQkJcGxhbmR1cmF0aW9uOwotCUJ1ZmZlclVzYWdlIGJ1ZnVzYWdl X3N0YXJ0LAotCQkJCWJ1ZnVzYWdlOworCVF1ZXJ5SW5zdHJ1bWVudGF0aW9uICppbnN0ciA9IE5V TEw7CiAJTWVtb3J5Q29udGV4dENvdW50ZXJzIG1lbV9jb3VudGVyczsKIAlNZW1vcnlDb250ZXh0 IHBsYW5uZXJfY3R4ID0gTlVMTDsKIAlNZW1vcnlDb250ZXh0IHNhdmVkX2N0eCA9IE5VTEw7CiAK KwlpZiAoZXMtPmJ1ZmZlcnMpCisJCWluc3RyID0gSW5zdHJRdWVyeUFsbG9jKElOU1RSVU1FTlRf VElNRVIgfCBJTlNUUlVNRU5UX0JVRkZFUlMpOworCWVsc2UKKwkJaW5zdHIgPSBJbnN0clF1ZXJ5 QWxsb2MoSU5TVFJVTUVOVF9USU1FUik7CisKIAlpZiAoZXMtPm1lbW9yeSkKIAl7CiAJCS8qCkBA IC0zNDYsMTUgKzM0OCwxMiBAQCBzdGFuZGFyZF9FeHBsYWluT25lUXVlcnkoUXVlcnkgKnF1ZXJ5 LCBpbnQgY3Vyc29yT3B0aW9ucywKIAkJc2F2ZWRfY3R4ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRv KHBsYW5uZXJfY3R4KTsKIAl9CiAKLQlpZiAoZXMtPmJ1ZmZlcnMpCi0JCWJ1ZnVzYWdlX3N0YXJ0 ID0gcGdCdWZmZXJVc2FnZTsKLQlJTlNUUl9USU1FX1NFVF9DVVJSRU5UKHBsYW5zdGFydCk7CisJ SW5zdHJRdWVyeVN0YXJ0KGluc3RyKTsKIAogCS8qIHBsYW4gdGhlIHF1ZXJ5ICovCiAJcGxhbiA9 IHBnX3BsYW5fcXVlcnkocXVlcnksIHF1ZXJ5U3RyaW5nLCBjdXJzb3JPcHRpb25zLCBwYXJhbXMs IGVzKTsKIAotCUlOU1RSX1RJTUVfU0VUX0NVUlJFTlQocGxhbmR1cmF0aW9uKTsKLQlJTlNUUl9U SU1FX1NVQlRSQUNUKHBsYW5kdXJhdGlvbiwgcGxhbnN0YXJ0KTsKKwlpbnN0ciA9IEluc3RyUXVl cnlTdG9wRmluYWxpemUoaW5zdHIpOwogCiAJaWYgKGVzLT5tZW1vcnkpCiAJewpAQCAtMzYyLDE2 ICszNjEsOSBAQCBzdGFuZGFyZF9FeHBsYWluT25lUXVlcnkoUXVlcnkgKnF1ZXJ5LCBpbnQgY3Vy c29yT3B0aW9ucywKIAkJTWVtb3J5Q29udGV4dE1lbUNvbnN1bWVkKHBsYW5uZXJfY3R4LCAmbWVt X2NvdW50ZXJzKTsKIAl9CiAKLQkvKiBjYWxjIGRpZmZlcmVuY2VzIG9mIGJ1ZmZlciBjb3VudGVy cy4gKi8KLQlpZiAoZXMtPmJ1ZmZlcnMpCi0JewotCQltZW1zZXQoJmJ1ZnVzYWdlLCAwLCBzaXpl b2YoQnVmZmVyVXNhZ2UpKTsKLQkJQnVmZmVyVXNhZ2VBY2N1bURpZmYoJmJ1ZnVzYWdlLCAmcGdC dWZmZXJVc2FnZSwgJmJ1ZnVzYWdlX3N0YXJ0KTsKLQl9Ci0KIAkvKiBydW4gaXQgKGlmIG5lZWRl ZCkgYW5kIHByb2R1Y2Ugb3V0cHV0ICovCiAJRXhwbGFpbk9uZVBsYW4ocGxhbiwgaW50bywgZXMs IHF1ZXJ5U3RyaW5nLCBwYXJhbXMsIHF1ZXJ5RW52LAotCQkJCSAgICZwbGFuZHVyYXRpb24sIChl cy0+YnVmZmVycyA/ICZidWZ1c2FnZSA6IE5VTEwpLAorCQkJCSAgICZpbnN0ci0+aW5zdHIudG90 YWwsIChlcy0+YnVmZmVycyA/ICZpbnN0ci0+aW5zdHIuYnVmdXNhZ2UgOiBOVUxMKSwKIAkJCQkg ICBlcy0+bWVtb3J5ID8gJm1lbV9jb3VudGVycyA6IE5VTEwpOwogfQogCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluX2RyLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9l eHBsYWluX2RyLmMKaW5kZXggM2M5NjA2MWNmMzIuLjY4NjhkODk3MmFjIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluX2RyLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFu ZHMvZXhwbGFpbl9kci5jCkBAIC0xMTAsMTUgKzExMCwyMCBAQCBzZXJpYWxpemVBbmFseXplUmVj ZWl2ZShUdXBsZVRhYmxlU2xvdCAqc2xvdCwgRGVzdFJlY2VpdmVyICpzZWxmKQogCU1lbW9yeUNv bnRleHQgb2xkY29udGV4dDsKIAlTdHJpbmdJbmZvCWJ1ZiA9ICZteVN0YXRlLT5idWY7CiAJaW50 CQkJbmF0dHMgPSB0eXBlaW5mby0+bmF0dHM7Ci0JaW5zdHJfdGltZQlzdGFydCwKLQkJCQllbmQ7 Ci0JQnVmZmVyVXNhZ2UgaW5zdHJfc3RhcnQ7CisJUXVlcnlJbnN0cnVtZW50YXRpb24gKmluc3Ry ID0gTlVMTDsKIAogCS8qIG9ubHkgbWVhc3VyZSB0aW1lLCBidWZmZXJzIGlmIHJlcXVlc3RlZCAq LwotCWlmIChteVN0YXRlLT5lcy0+dGltaW5nKQotCQlJTlNUUl9USU1FX1NFVF9DVVJSRU5UKHN0 YXJ0KTsKLQlpZiAobXlTdGF0ZS0+ZXMtPmJ1ZmZlcnMpCi0JCWluc3RyX3N0YXJ0ID0gcGdCdWZm ZXJVc2FnZTsKKwlpZiAobXlTdGF0ZS0+ZXMtPnRpbWluZyB8fCBteVN0YXRlLT5lcy0+YnVmZmVy cykKKwl7CisJCUluc3RydW1lbnRPcHRpb24gaW5zdHJ1bWVudF9vcHRpb25zID0gMDsKKworCQlp ZiAobXlTdGF0ZS0+ZXMtPnRpbWluZykKKwkJCWluc3RydW1lbnRfb3B0aW9ucyB8PSBJTlNUUlVN RU5UX1RJTUVSOworCQlpZiAobXlTdGF0ZS0+ZXMtPmJ1ZmZlcnMpCisJCQlpbnN0cnVtZW50X29w dGlvbnMgfD0gSU5TVFJVTUVOVF9CVUZGRVJTOworCQlpbnN0ciA9IEluc3RyUXVlcnlBbGxvYyhp bnN0cnVtZW50X29wdGlvbnMpOworCQlJbnN0clF1ZXJ5U3RhcnQoaW5zdHIpOworCX0KIAogCS8q IFNldCBvciB1cGRhdGUgbXkgZGVyaXZlZCBhdHRyaWJ1dGUgaW5mbywgaWYgbmVlZGVkICovCiAJ aWYgKG15U3RhdGUtPmF0dHJpbmZvICE9IHR5cGVpbmZvIHx8IG15U3RhdGUtPm5hdHRycyAhPSBu YXR0cykKQEAgLTE4NiwxOCArMTkxLDE2IEBAIHNlcmlhbGl6ZUFuYWx5emVSZWNlaXZlKFR1cGxl VGFibGVTbG90ICpzbG90LCBEZXN0UmVjZWl2ZXIgKnNlbGYpCiAJTWVtb3J5Q29udGV4dFN3aXRj aFRvKG9sZGNvbnRleHQpOwogCU1lbW9yeUNvbnRleHRSZXNldChteVN0YXRlLT50bXBjb250ZXh0 KTsKIAorCWlmIChteVN0YXRlLT5lcy0+dGltaW5nIHx8IG15U3RhdGUtPmVzLT5idWZmZXJzKQor CQlpbnN0ciA9IEluc3RyUXVlcnlTdG9wRmluYWxpemUoaW5zdHIpOworCiAJLyogVXBkYXRlIHRp bWluZyBkYXRhICovCiAJaWYgKG15U3RhdGUtPmVzLT50aW1pbmcpCi0JewotCQlJTlNUUl9USU1F X1NFVF9DVVJSRU5UKGVuZCk7Ci0JCUlOU1RSX1RJTUVfQUNDVU1fRElGRihteVN0YXRlLT5tZXRy aWNzLnRpbWVTcGVudCwgZW5kLCBzdGFydCk7Ci0JfQorCQlJTlNUUl9USU1FX0FERChteVN0YXRl LT5tZXRyaWNzLnRpbWVTcGVudCwgaW5zdHItPmluc3RyLnRvdGFsKTsKIAogCS8qIFVwZGF0ZSBi dWZmZXIgbWV0cmljcyAqLwogCWlmIChteVN0YXRlLT5lcy0+YnVmZmVycykKLQkJQnVmZmVyVXNh Z2VBY2N1bURpZmYoJm15U3RhdGUtPm1ldHJpY3MuYnVmZmVyVXNhZ2UsCi0JCQkJCQkJICZwZ0J1 ZmZlclVzYWdlLAotCQkJCQkJCSAmaW5zdHJfc3RhcnQpOworCQlCdWZmZXJVc2FnZUFkZCgmbXlT dGF0ZS0+bWV0cmljcy5idWZmZXJVc2FnZSwgJmluc3RyLT5pbnN0ci5idWZ1c2FnZSk7CiAKIAly ZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUu YyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYwppbmRleCA1Yjg2YTcyNzU4Ny4uZDgx ZjZiMzBlOWMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYworKysg Yi9zcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMKQEAgLTU3OCwxMyArNTc4LDE2IEBAIEV4 cGxhaW5FeGVjdXRlUXVlcnkoRXhlY3V0ZVN0bXQgKmV4ZWNzdG10LCBJbnRvQ2xhdXNlICppbnRv LCBFeHBsYWluU3RhdGUgKmVzLAogCUxpc3RDZWxsICAgKnA7CiAJUGFyYW1MaXN0SW5mbyBwYXJh bUxJID0gTlVMTDsKIAlFU3RhdGUJICAgKmVzdGF0ZSA9IE5VTEw7Ci0JaW5zdHJfdGltZQlwbGFu c3RhcnQ7Ci0JaW5zdHJfdGltZQlwbGFuZHVyYXRpb247Ci0JQnVmZmVyVXNhZ2UgYnVmdXNhZ2Vf c3RhcnQsCi0JCQkJYnVmdXNhZ2U7CisJUXVlcnlJbnN0cnVtZW50YXRpb24gKmluc3RyID0gTlVM TDsKIAlNZW1vcnlDb250ZXh0Q291bnRlcnMgbWVtX2NvdW50ZXJzOwogCU1lbW9yeUNvbnRleHQg cGxhbm5lcl9jdHggPSBOVUxMOwogCU1lbW9yeUNvbnRleHQgc2F2ZWRfY3R4ID0gTlVMTDsKKwlp bnQJCQlpbnN0cnVtZW50X29wdGlvbnMgPSBJTlNUUlVNRU5UX1RJTUVSOworCisJaWYgKGVzLT5i dWZmZXJzKQorCQlpbnN0cnVtZW50X29wdGlvbnMgfD0gSU5TVFJVTUVOVF9CVUZGRVJTOworCisJ aW5zdHIgPSBJbnN0clF1ZXJ5QWxsb2MoaW5zdHJ1bWVudF9vcHRpb25zKTsKIAogCWlmIChlcy0+ bWVtb3J5KQogCXsKQEAgLTU5Niw5ICs1OTksNyBAQCBFeHBsYWluRXhlY3V0ZVF1ZXJ5KEV4ZWN1 dGVTdG10ICpleGVjc3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKIAkJ c2F2ZWRfY3R4ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKHBsYW5uZXJfY3R4KTsKIAl9CiAKLQlp ZiAoZXMtPmJ1ZmZlcnMpCi0JCWJ1ZnVzYWdlX3N0YXJ0ID0gcGdCdWZmZXJVc2FnZTsKLQlJTlNU Ul9USU1FX1NFVF9DVVJSRU5UKHBsYW5zdGFydCk7CisJSW5zdHJRdWVyeVN0YXJ0KGluc3RyKTsK IAogCS8qIExvb2sgaXQgdXAgaW4gdGhlIGhhc2ggdGFibGUgKi8KIAllbnRyeSA9IEZldGNoUHJl cGFyZWRTdGF0ZW1lbnQoZXhlY3N0bXQtPm5hbWUsIHRydWUpOwpAQCAtNjMzLDggKzYzNCw3IEBA IEV4cGxhaW5FeGVjdXRlUXVlcnkoRXhlY3V0ZVN0bXQgKmV4ZWNzdG10LCBJbnRvQ2xhdXNlICpp bnRvLCBFeHBsYWluU3RhdGUgKmVzLAogCWNwbGFuID0gR2V0Q2FjaGVkUGxhbihlbnRyeS0+cGxh bnNvdXJjZSwgcGFyYW1MSSwKIAkJCQkJCSAgQ3VycmVudFJlc291cmNlT3duZXIsIHBzdGF0ZS0+ cF9xdWVyeUVudik7CiAKLQlJTlNUUl9USU1FX1NFVF9DVVJSRU5UKHBsYW5kdXJhdGlvbik7Ci0J SU5TVFJfVElNRV9TVUJUUkFDVChwbGFuZHVyYXRpb24sIHBsYW5zdGFydCk7CisJaW5zdHIgPSBJ bnN0clF1ZXJ5U3RvcEZpbmFsaXplKGluc3RyKTsKIAogCWlmIChlcy0+bWVtb3J5KQogCXsKQEAg LTY0MiwxMyArNjQyLDYgQEAgRXhwbGFpbkV4ZWN1dGVRdWVyeShFeGVjdXRlU3RtdCAqZXhlY3N0 bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAJCU1lbW9yeUNvbnRleHRN ZW1Db25zdW1lZChwbGFubmVyX2N0eCwgJm1lbV9jb3VudGVycyk7CiAJfQogCi0JLyogY2FsYyBk aWZmZXJlbmNlcyBvZiBidWZmZXIgY291bnRlcnMuICovCi0JaWYgKGVzLT5idWZmZXJzKQotCXsK LQkJbWVtc2V0KCZidWZ1c2FnZSwgMCwgc2l6ZW9mKEJ1ZmZlclVzYWdlKSk7Ci0JCUJ1ZmZlclVz YWdlQWNjdW1EaWZmKCZidWZ1c2FnZSwgJnBnQnVmZmVyVXNhZ2UsICZidWZ1c2FnZV9zdGFydCk7 Ci0JfQotCiAJcGxhbl9saXN0ID0gY3BsYW4tPnN0bXRfbGlzdDsKIAogCS8qIEV4cGxhaW4gZWFj aCBxdWVyeSAqLwpAQCAtNjU4LDcgKzY1MSw3IEBAIEV4cGxhaW5FeGVjdXRlUXVlcnkoRXhlY3V0 ZVN0bXQgKmV4ZWNzdG10LCBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAogCiAJ CWlmIChwc3RtdC0+Y29tbWFuZFR5cGUgIT0gQ01EX1VUSUxJVFkpCiAJCQlFeHBsYWluT25lUGxh bihwc3RtdCwgaW50bywgZXMsIHF1ZXJ5X3N0cmluZywgcGFyYW1MSSwgcHN0YXRlLT5wX3F1ZXJ5 RW52LAotCQkJCQkJICAgJnBsYW5kdXJhdGlvbiwgKGVzLT5idWZmZXJzID8gJmJ1ZnVzYWdlIDog TlVMTCksCisJCQkJCQkgICAmaW5zdHItPmluc3RyLnRvdGFsLCAoZXMtPmJ1ZmZlcnMgPyAmaW5z dHItPmluc3RyLmJ1ZnVzYWdlIDogTlVMTCksCiAJCQkJCQkgICBlcy0+bWVtb3J5ID8gJm1lbV9j b3VudGVycyA6IE5VTEwpOwogCQllbHNlCiAJCQlFeHBsYWluT25lVXRpbGl0eShwc3RtdC0+dXRp bGl0eVN0bXQsIGludG8sIGVzLCBwc3RhdGUsIHBhcmFtTEkpOwpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3Zh Y3V1bXBhcmFsbGVsLmMKaW5kZXggMjc5MTA4Y2E4OWYuLjc1MDc0ZmU0ZWZhIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jCisrKyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMKQEAgLTMwOCw4ICszMDgsOCBAQCBwYXJhbGxlbF92 YWN1dW1faW5pdChSZWxhdGlvbiByZWwsIFJlbGF0aW9uICppbmRyZWxzLCBpbnQgbmluZGV4ZXMs CiAJICogUEFSQUxMRUxfVkFDVVVNX0tFWV9CVUZGRVJfVVNBR0UgYW5kIFBBUkFMTEVMX1ZBQ1VV TV9LRVlfV0FMX1VTQUdFLgogCSAqCiAJICogSWYgdGhlcmUgYXJlIG5vIGV4dGVuc2lvbnMgbG9h ZGVkIHRoYXQgY2FyZSwgd2UgY291bGQgc2tpcCB0aGlzLiAgV2UKLQkgKiBoYXZlIG5vIHdheSBv ZiBrbm93aW5nIHdoZXRoZXIgYW55b25lJ3MgbG9va2luZyBhdCBwZ0J1ZmZlclVzYWdlIG9yCi0J ICogcGdXYWxVc2FnZSwgc28gZG8gaXQgdW5jb25kaXRpb25hbGx5LgorCSAqIGhhdmUgbm8gd2F5 IG9mIGtub3dpbmcgd2hldGhlciBhbnlvbmUncyBsb29raW5nIGF0IGluc3RydW1lbnRhdGlvbiwg c28KKwkgKiBkbyBpdCB1bmNvbmRpdGlvbmFsbHkuCiAJICovCiAJc2htX3RvY19lc3RpbWF0ZV9j aHVuaygmcGN4dC0+ZXN0aW1hdG9yLAogCQkJCQkJICAgbXVsX3NpemUoc2l6ZW9mKEJ1ZmZlclVz YWdlKSwgcGN4dC0+bndvcmtlcnMpKTsKQEAgLTk5NSw2ICs5OTUsNyBAQCBwYXJhbGxlbF92YWN1 dW1fbWFpbihkc21fc2VnbWVudCAqc2VnLCBzaG1fdG9jICp0b2MpCiAJUFZJbmRTdGF0cyAqaW5k c3RhdHM7CiAJUFZTaGFyZWQgICAqc2hhcmVkOwogCVRpZFN0b3JlICAgKmRlYWRfaXRlbXM7CisJ UXVlcnlJbnN0cnVtZW50YXRpb24gKmluc3RyOwogCUJ1ZmZlclVzYWdlICpidWZmZXJfdXNhZ2U7 CiAJV2FsVXNhZ2UgICAqd2FsX3VzYWdlOwogCWludAkJCW5pbmRleGVzOwpAQCAtMTA4NCw3ICsx MDg1LDcgQEAgcGFyYWxsZWxfdmFjdXVtX21haW4oZHNtX3NlZ21lbnQgKnNlZywgc2htX3RvYyAq dG9jKQogCWVycm9yX2NvbnRleHRfc3RhY2sgPSAmZXJyY2FsbGJhY2s7CiAKIAkvKiBQcmVwYXJl IHRvIHRyYWNrIGJ1ZmZlciB1c2FnZSBkdXJpbmcgcGFyYWxsZWwgZXhlY3V0aW9uICovCi0JSW5z dHJTdGFydFBhcmFsbGVsUXVlcnkoKTsKKwlpbnN0ciA9IEluc3RyU3RhcnRQYXJhbGxlbFF1ZXJ5 KCk7CiAKIAkvKiBQcm9jZXNzIGluZGV4ZXMgdG8gcGVyZm9ybSB2YWN1dW0vY2xlYW51cCAqLwog CXBhcmFsbGVsX3ZhY3V1bV9wcm9jZXNzX3NhZmVfaW5kZXhlcygmcHZzKTsKQEAgLTEwOTIsNyAr MTA5Myw4IEBAIHBhcmFsbGVsX3ZhY3V1bV9tYWluKGRzbV9zZWdtZW50ICpzZWcsIHNobV90b2Mg KnRvYykKIAkvKiBSZXBvcnQgYnVmZmVyL1dBTCB1c2FnZSBkdXJpbmcgcGFyYWxsZWwgZXhlY3V0 aW9uICovCiAJYnVmZmVyX3VzYWdlID0gc2htX3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9WQUNV VU1fS0VZX0JVRkZFUl9VU0FHRSwgZmFsc2UpOwogCXdhbF91c2FnZSA9IHNobV90b2NfbG9va3Vw KHRvYywgUEFSQUxMRUxfVkFDVVVNX0tFWV9XQUxfVVNBR0UsIGZhbHNlKTsKLQlJbnN0ckVuZFBh cmFsbGVsUXVlcnkoJmJ1ZmZlcl91c2FnZVtQYXJhbGxlbFdvcmtlck51bWJlcl0sCisJSW5zdHJF bmRQYXJhbGxlbFF1ZXJ5KGluc3RyLAorCQkJCQkJICAmYnVmZmVyX3VzYWdlW1BhcmFsbGVsV29y a2VyTnVtYmVyXSwKIAkJCQkJCSAgJndhbF91c2FnZVtQYXJhbGxlbFdvcmtlck51bWJlcl0pOwog CiAJLyogUmVwb3J0IGFueSByZW1haW5pbmcgY29zdC1iYXNlZCB2YWN1dW0gZGVsYXkgdGltZSAq LwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKaW5kZXggYzBiMTc0Y2ZiYzAuLjgyMjUzMzE3ZTk2IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCisrKyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKQEAgLTc2LDYgKzc2LDcgQEAgRXhlY3V0b3JDaGVja1Bl cm1zX2hvb2tfdHlwZSBFeGVjdXRvckNoZWNrUGVybXNfaG9vayA9IE5VTEw7CiAvKiBkZWNscyBm b3IgbG9jYWwgcm91dGluZXMgb25seSB1c2VkIHdpdGhpbiB0aGlzIG1vZHVsZSAqLwogc3RhdGlj IHZvaWQgSW5pdFBsYW4oUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpOwogc3RhdGlj IHZvaWQgQ2hlY2tWYWxpZFJvd01hcmtSZWwoUmVsYXRpb24gcmVsLCBSb3dNYXJrVHlwZSBtYXJr VHlwZSk7CitzdGF0aWMgdm9pZCBFeGVjRmluYWxpemVUcmlnZ2VySW5zdHJ1bWVudGF0aW9uKEVT dGF0ZSAqZXN0YXRlKTsKIHN0YXRpYyB2b2lkIEV4ZWNQb3N0cHJvY2Vzc1BsYW4oRVN0YXRlICpl c3RhdGUpOwogc3RhdGljIHZvaWQgRXhlY0VuZFBsYW4oUGxhblN0YXRlICpwbGFuc3RhdGUsIEVT dGF0ZSAqZXN0YXRlKTsKIHN0YXRpYyB2b2lkIEV4ZWN1dGVQbGFuKFF1ZXJ5RGVzYyAqcXVlcnlE ZXNjLApAQCAtMzI5LDkgKzMzMCwyOCBAQCBzdGFuZGFyZF9FeGVjdXRvclJ1bihRdWVyeURlc2Mg KnF1ZXJ5RGVzYywKIAkgKi8KIAlvbGRjb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKGVz dGF0ZS0+ZXNfcXVlcnlfY3h0KTsKIAotCS8qIEFsbG93IGluc3RydW1lbnRhdGlvbiBvZiBFeGVj dXRvciBvdmVyYWxsIHJ1bnRpbWUgKi8KKwkvKgorCSAqIFN0YXJ0IHVwIHJlcXVpcmVkIHRvcC1s ZXZlbCBpbnN0cnVtZW50YXRpb24gc3RhY2sgZm9yIFdBTC9idWZmZXIKKwkgKiB0cmFja2luZwor CSAqLworCWlmICghcXVlcnlEZXNjLT50b3RhbHRpbWUgJiYgKGVzdGF0ZS0+ZXNfaW5zdHJ1bWVu dCAmIChJTlNUUlVNRU5UX0JVRkZFUlMgfCBJTlNUUlVNRU5UX1dBTCkpKQorCQlxdWVyeURlc2Mt PnRvdGFsdGltZSA9IEluc3RyUXVlcnlBbGxvYyhlc3RhdGUtPmVzX2luc3RydW1lbnQpOworCiAJ aWYgKHF1ZXJ5RGVzYy0+dG90YWx0aW1lKQotCQlJbnN0clN0YXJ0KHF1ZXJ5RGVzYy0+dG90YWx0 aW1lKTsKKwl7CisJCS8qIEFsbG93IGluc3RydW1lbnRhdGlvbiBvZiBFeGVjdXRvciBvdmVyYWxs IHJ1bnRpbWUgKi8KKwkJSW5zdHJRdWVyeVN0YXJ0KHF1ZXJ5RGVzYy0+dG90YWx0aW1lKTsKKwor CQkvKgorCQkgKiBSZW1lbWJlciBhbGwgbm9kZSBlbnRyaWVzIGZvciBhYm9ydCByZWNvdmVyeS4g V2UgZG8gdGhpcyBvbmNlIGhlcmUKKwkJICogYWZ0ZXIgdGhlIGZpcnN0IGNhbGwgdG8gSW5zdHJR dWVyeVN0YXJ0IGhhcyBwdXNoZWQgdGhlIHBhcmVudAorCQkgKiBlbnRyeS4KKwkJICovCisJCWlm ICgoZXN0YXRlLT5lc19pbnN0cnVtZW50ICYgKElOU1RSVU1FTlRfQlVGRkVSUyB8IElOU1RSVU1F TlRfV0FMKSkgJiYKKwkJCSFxdWVyeURlc2MtPmFscmVhZHlfZXhlY3V0ZWQpCisJCQlFeGVjUmVt ZW1iZXJOb2RlSW5zdHJ1bWVudGF0aW9uKHF1ZXJ5RGVzYy0+cGxhbnN0YXRlLAorCQkJCQkJCQkJ CQlxdWVyeURlc2MtPnRvdGFsdGltZSk7CisJfQogCiAJLyoKIAkgKiBleHRyYWN0IGluZm9ybWF0 aW9uIGZyb20gdGhlIHF1ZXJ5IGRlc2NyaXB0b3IgYW5kIHRoZSBxdWVyeSBmZWF0dXJlLgpAQCAt MzgzLDcgKzQwMyw3IEBAIHN0YW5kYXJkX0V4ZWN1dG9yUnVuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNj LAogCQlkZXN0LT5yU2h1dGRvd24oZGVzdCk7CiAKIAlpZiAocXVlcnlEZXNjLT50b3RhbHRpbWUp Ci0JCUluc3RyU3RvcChxdWVyeURlc2MtPnRvdGFsdGltZSk7CisJCUluc3RyUXVlcnlTdG9wKHF1 ZXJ5RGVzYy0+dG90YWx0aW1lKTsKIAogCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0 KTsKIH0KQEAgLTQzMyw3ICs0NTMsNyBAQCBzdGFuZGFyZF9FeGVjdXRvckZpbmlzaChRdWVyeURl c2MgKnF1ZXJ5RGVzYykKIAogCS8qIEFsbG93IGluc3RydW1lbnRhdGlvbiBvZiBFeGVjdXRvciBv dmVyYWxsIHJ1bnRpbWUgKi8KIAlpZiAocXVlcnlEZXNjLT50b3RhbHRpbWUpCi0JCUluc3RyU3Rh cnQocXVlcnlEZXNjLT50b3RhbHRpbWUpOworCQlJbnN0clF1ZXJ5U3RhcnQocXVlcnlEZXNjLT50 b3RhbHRpbWUpOwogCiAJLyogUnVuIE1vZGlmeVRhYmxlIG5vZGVzIHRvIGNvbXBsZXRpb24gKi8K IAlFeGVjUG9zdHByb2Nlc3NQbGFuKGVzdGF0ZSk7CkBAIC00NDIsOCArNDYyLDI2IEBAIHN0YW5k YXJkX0V4ZWN1dG9yRmluaXNoKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjKQogCWlmICghKGVzdGF0ZS0+ ZXNfdG9wX2VmbGFncyAmIEVYRUNfRkxBR19TS0lQX1RSSUdHRVJTKSkKIAkJQWZ0ZXJUcmlnZ2Vy RW5kUXVlcnkoZXN0YXRlKTsKIAorCS8qCisJICogQWNjdW11bGF0ZSBwZXItbm9kZSBhbmQgdHJp Z2dlciBzdGF0aXN0aWNzIHRvIHRoZWlyIHJlc3BlY3RpdmUgcGFyZW50CisJICogaW5zdHJ1bWVu dGF0aW9uIHN0YWNrcy4KKwkgKgorCSAqIFdlIHNraXAgdGhpcyBpbiBwYXJhbGxlbCB3b3JrZXJz IGJlY2F1c2UgdGhlaXIgcGVyLW5vZGUgc3RhdHMgYXJlCisJICogcmVwb3J0ZWQgaW5kaXZpZHVh bGx5IHZpYSBFeGVjUGFyYWxsZWxSZXBvcnRJbnN0cnVtZW50YXRpb24sIGFuZCB0aGUKKwkgKiBs ZWFkZXIncyBvd24gRXhlY0ZpbmFsaXplTm9kZUluc3RydW1lbnRhdGlvbiBoYW5kbGVzIHByb3Bh Z2F0aW9uLiAgSWYKKwkgKiB3ZSBhY2N1bXVsYXRlZCBoZXJlLCB0aGUgbGVhZGVyIHdvdWxkIGRv dWJsZS1jb3VudDogd29ya2VyIHBhcmVudCBub2RlcworCSAqIHdvdWxkIGFscmVhZHkgaW5jbHVk ZSB0aGVpciBjaGlsZHJlbidzIHN0YXRzLCBhbmQgdGhlbiB0aGUgbGVhZGVyJ3MKKwkgKiBhY2N1 bXVsYXRpb24gd291bGQgYWRkIHRoZSBjaGlsZHJlbiBhZ2Fpbi4KKwkgKi8KKwlpZiAocXVlcnlE ZXNjLT50b3RhbHRpbWUgJiYgZXN0YXRlLT5lc19pbnN0cnVtZW50ICYmICFJc1BhcmFsbGVsV29y a2VyKCkpCisJeworCQlFeGVjRmluYWxpemVOb2RlSW5zdHJ1bWVudGF0aW9uKHF1ZXJ5RGVzYy0+ cGxhbnN0YXRlKTsKKworCQlFeGVjRmluYWxpemVUcmlnZ2VySW5zdHJ1bWVudGF0aW9uKGVzdGF0 ZSk7CisJfQorCiAJaWYgKHF1ZXJ5RGVzYy0+dG90YWx0aW1lKQotCQlJbnN0clN0b3AocXVlcnlE ZXNjLT50b3RhbHRpbWUpOworCQlxdWVyeURlc2MtPnRvdGFsdGltZSA9IEluc3RyUXVlcnlTdG9w RmluYWxpemUocXVlcnlEZXNjLT50b3RhbHRpbWUpOwogCiAJTWVtb3J5Q29udGV4dFN3aXRjaFRv KG9sZGNvbnRleHQpOwogCkBAIC0xNDg0LDYgKzE1MjIsMjQgQEAgRXhlY0dldEFuY2VzdG9yUmVz dWx0UmVscyhFU3RhdGUgKmVzdGF0ZSwgUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbykKIAly ZXR1cm4gcmVzdWx0UmVsSW5mby0+cmlfYW5jZXN0b3JSZXN1bHRSZWxzOwogfQogCitzdGF0aWMg dm9pZAorRXhlY0ZpbmFsaXplVHJpZ2dlckluc3RydW1lbnRhdGlvbihFU3RhdGUgKmVzdGF0ZSkK K3sKKwlMaXN0CSAgICpyZWxzID0gTklMOworCisJcmVscyA9IGxpc3RfY29uY2F0KHJlbHMsIGVz dGF0ZS0+ZXNfdHVwbGVfcm91dGluZ19yZXN1bHRfcmVsYXRpb25zKTsKKwlyZWxzID0gbGlzdF9j b25jYXQocmVscywgZXN0YXRlLT5lc19vcGVuZWRfcmVzdWx0X3JlbGF0aW9ucyk7CisJcmVscyA9 IGxpc3RfY29uY2F0KHJlbHMsIGVzdGF0ZS0+ZXNfdHJpZ190YXJnZXRfcmVsYXRpb25zKTsKKwor CWZvcmVhY2hfbm9kZShSZXN1bHRSZWxJbmZvLCBySW5mbywgcmVscykKKwl7CisJCVRyaWdnZXJJ bnN0cnVtZW50YXRpb24gKnRpID0gckluZm8tPnJpX1RyaWdJbnN0cnVtZW50OworCisJCWlmICh0 aSAmJiAodGktPmluc3RyLm5lZWRfYnVmdXNhZ2UgfHwgdGktPmluc3RyLm5lZWRfd2FsdXNhZ2Up KQorCQkJSW5zdHJBY2N1bShpbnN0cl9zdGFjay5jdXJyZW50LCAmdGktPmluc3RyKTsKKwl9Cit9 CisKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KICAqCQlFeGVjUG9zdHByb2Nlc3NQbGFuCiAgKgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMgYi9zcmMvYmFja2VuZC9leGVjdXRv ci9leGVjUGFyYWxsZWwuYwppbmRleCBjMTUzZDVjMWMzYi4uZTZhZDg2Y2I4ODcgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jCisrKyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jCkBAIC02OTQsNyArNjk0LDcgQEAgRXhlY0luaXRQYXJh bGxlbFBsYW4oUGxhblN0YXRlICpwbGFuc3RhdGUsIEVTdGF0ZSAqZXN0YXRlLAogCSAqCiAJICog SWYgRVhQTEFJTiBpcyBub3QgaW4gdXNlIGFuZCB0aGVyZSBhcmUgbm8gZXh0ZW5zaW9ucyBsb2Fk ZWQgdGhhdCBjYXJlLAogCSAqIHdlIGNvdWxkIHNraXAgdGhpcy4gIEJ1dCB3ZSBoYXZlIG5vIHdh eSBvZiBrbm93aW5nIHdoZXRoZXIgYW55b25lJ3MKLQkgKiBsb29raW5nIGF0IHBnQnVmZmVyVXNh Z2UsIHNvIGRvIGl0IHVuY29uZGl0aW9uYWxseS4KKwkgKiBsb29raW5nIGF0IGluc3RydW1lbnRh dGlvbiwgc28gZG8gaXQgdW5jb25kaXRpb25hbGx5LgogCSAqLwogCXNobV90b2NfZXN0aW1hdGVf Y2h1bmsoJnBjeHQtPmVzdGltYXRvciwKIAkJCQkJCSAgIG11bF9zaXplKHNpemVvZihCdWZmZXJV c2FnZSksIHBjeHQtPm53b3JrZXJzKSk7CkBAIC0xNDU2LDYgKzE0NTYsNyBAQCB2b2lkCiBQYXJh bGxlbFF1ZXJ5TWFpbihkc21fc2VnbWVudCAqc2VnLCBzaG1fdG9jICp0b2MpCiB7CiAJRml4ZWRQ YXJhbGxlbEV4ZWN1dG9yU3RhdGUgKmZwZXM7CisJUXVlcnlJbnN0cnVtZW50YXRpb24gKmluc3Ry OwogCUJ1ZmZlclVzYWdlICpidWZmZXJfdXNhZ2U7CiAJV2FsVXNhZ2UgICAqd2FsX3VzYWdlOwog CURlc3RSZWNlaXZlciAqcmVjZWl2ZXI7CkBAIC0xNTE2LDcgKzE1MTcsNyBAQCBQYXJhbGxlbFF1 ZXJ5TWFpbihkc21fc2VnbWVudCAqc2VnLCBzaG1fdG9jICp0b2MpCiAJICogbGVhZGVyLCB3aGlj aCBhbHNvIGRvZXNuJ3QgY291bnQgYnVmZmVyIGFjY2Vzc2VzIGFuZCBXQUwgYWN0aXZpdHkgdGhh dAogCSAqIG9jY3VyIGR1cmluZyBleGVjdXRvciBzdGFydHVwLgogCSAqLwotCUluc3RyU3RhcnRQ YXJhbGxlbFF1ZXJ5KCk7CisJaW5zdHIgPSBJbnN0clN0YXJ0UGFyYWxsZWxRdWVyeSgpOwogCiAJ LyoKIAkgKiBSdW4gdGhlIHBsYW4uICBJZiB3ZSBzcGVjaWZpZWQgYSB0dXBsZSBib3VuZCwgYmUg Y2FyZWZ1bCBub3QgdG8gZGVtYW5kCkBAIC0xNTMyLDcgKzE1MzMsOCBAQCBQYXJhbGxlbFF1ZXJ5 TWFpbihkc21fc2VnbWVudCAqc2VnLCBzaG1fdG9jICp0b2MpCiAJLyogUmVwb3J0IGJ1ZmZlci9X QUwgdXNhZ2UgZHVyaW5nIHBhcmFsbGVsIGV4ZWN1dGlvbi4gKi8KIAlidWZmZXJfdXNhZ2UgPSBz aG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVMX0tFWV9CVUZGRVJfVVNBR0UsIGZhbHNlKTsKIAl3 YWxfdXNhZ2UgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVMX0tFWV9XQUxfVVNBR0UsIGZh bHNlKTsKLQlJbnN0ckVuZFBhcmFsbGVsUXVlcnkoJmJ1ZmZlcl91c2FnZVtQYXJhbGxlbFdvcmtl ck51bWJlcl0sCisJSW5zdHJFbmRQYXJhbGxlbFF1ZXJ5KGluc3RyLAorCQkJCQkJICAmYnVmZmVy X3VzYWdlW1BhcmFsbGVsV29ya2VyTnVtYmVyXSwKIAkJCQkJCSAgJndhbF91c2FnZVtQYXJhbGxl bFdvcmtlck51bWJlcl0pOwogCiAJLyogUmVwb3J0IGluc3RydW1lbnRhdGlvbiBkYXRhIGlmIGFu eSBpbnN0cnVtZW50YXRpb24gb3B0aW9ucyBhcmUgc2V0LiAqLwpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY1Byb2Nub2RlLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVj UHJvY25vZGUuYwppbmRleCAxODQ2NjYxYjUwMy4uYzc4OGI1YjAwZjkgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQcm9jbm9kZS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL2V4ZWNQcm9jbm9kZS5jCkBAIC0xMjIsNiArMTIyLDggQEAKIHN0YXRpYyBUdXBsZVRhYmxl U2xvdCAqRXhlY1Byb2NOb2RlRmlyc3QoUGxhblN0YXRlICpub2RlKTsKIHN0YXRpYyBUdXBsZVRh YmxlU2xvdCAqRXhlY1Byb2NOb2RlSW5zdHIoUGxhblN0YXRlICpub2RlKTsKIHN0YXRpYyBib29s IEV4ZWNTaHV0ZG93bk5vZGVfd2Fsa2VyKFBsYW5TdGF0ZSAqbm9kZSwgdm9pZCAqY29udGV4dCk7 CitzdGF0aWMgYm9vbCBFeGVjUmVtZW1iZXJOb2RlSW5zdHJ1bWVudGF0aW9uX3dhbGtlcihQbGFu U3RhdGUgKm5vZGUsIHZvaWQgKmNvbnRleHQpOworc3RhdGljIGJvb2wgRXhlY0ZpbmFsaXplTm9k ZUluc3RydW1lbnRhdGlvbl93YWxrZXIoUGxhblN0YXRlICpub2RlLCB2b2lkICpjb250ZXh0KTsK IAogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTc4NywxMCArNzg5LDEwIEBAIEV4ZWNTaHV0ZG93 bk5vZGVfd2Fsa2VyKFBsYW5TdGF0ZSAqbm9kZSwgdm9pZCAqY29udGV4dCkKIAkgKiBhdCBsZWFz dCBvbmNlIGFscmVhZHkuICBXZSBkb24ndCBleHBlY3QgbXVjaCBDUFUgY29uc3VtcHRpb24gZHVy aW5nCiAJICogbm9kZSBzaHV0ZG93biwgYnV0IGluIHRoZSBjYXNlIG9mIEdhdGhlciBvciBHYXRo ZXIgTWVyZ2UsIHdlIG1heSBzaHV0CiAJICogZG93biB3b3JrZXJzIGF0IHRoaXMgc3RhZ2UuICBJ ZiBzbywgdGhlaXIgYnVmZmVyIHVzYWdlIHdpbGwgZ2V0Ci0JICogcHJvcGFnYXRlZCBpbnRvIHBn QnVmZmVyVXNhZ2UgYXQgdGhpcyBwb2ludCwgYW5kIHdlIHdhbnQgdG8gbWFrZSBzdXJlCi0JICog dGhhdCBpdCBnZXRzIGFzc29jaWF0ZWQgd2l0aCB0aGUgR2F0aGVyIG5vZGUuICBXZSBza2lwIHRo aXMgaWYgdGhlIG5vZGUKLQkgKiBoYXMgbmV2ZXIgYmVlbiBleGVjdXRlZCwgc28gYXMgdG8gYXZv aWQgaW5jb3JyZWN0bHkgbWFraW5nIGl0IGFwcGVhcgotCSAqIHRoYXQgaXQgaGFzLgorCSAqIHBy b3BhZ2F0ZWQgaW50byB0aGUgY3VycmVudCBpbnN0cnVtZW50YXRpb24gc3RhY2sgZW50cnkgYXQg dGhpcyBwb2ludCwKKwkgKiBhbmQgd2Ugd2FudCB0byBtYWtlIHN1cmUgdGhhdCBpdCBnZXRzIGFz c29jaWF0ZWQgd2l0aCB0aGUgR2F0aGVyIG5vZGUuCisJICogV2Ugc2tpcCB0aGlzIGlmIHRoZSBu b2RlIGhhcyBuZXZlciBiZWVuIGV4ZWN1dGVkLCBzbyBhcyB0byBhdm9pZAorCSAqIGluY29ycmVj dGx5IG1ha2luZyBpdCBhcHBlYXIgdGhhdCBpdCBoYXMuCiAJICovCiAJaWYgKG5vZGUtPmluc3Ry dW1lbnQgJiYgbm9kZS0+aW5zdHJ1bWVudC0+cnVubmluZykKIAkJSW5zdHJTdGFydE5vZGUobm9k ZS0+aW5zdHJ1bWVudCk7CkBAIC04MjgsNiArODMwLDgwIEBAIEV4ZWNTaHV0ZG93bk5vZGVfd2Fs a2VyKFBsYW5TdGF0ZSAqbm9kZSwgdm9pZCAqY29udGV4dCkKIAlyZXR1cm4gZmFsc2U7CiB9CiAK Ky8qCisgKiBFeGVjUmVtZW1iZXJOb2RlSW5zdHJ1bWVudGF0aW9uCisgKgorICogUmVnaXN0ZXIg YWxsIHBlci1ub2RlIGluc3RydW1lbnRhdGlvbiBlbnRyaWVzIGFzIHVuZmluYWxpemVkIGNoaWxk cmVuIG9mCisgKiB0aGUgZXhlY3V0b3IncyBpbnN0cnVtZW50YXRpb24uIFRoaXMgaXMgbmVlZGVk IGZvciBhYm9ydCByZWNvdmVyeTogaWYgdGhlCisgKiBleGVjdXRvciBhYm9ydHMsIHdlIG5lZWQg dG8gd2FsayBlYWNoIHBlci1ub2RlIGVudHJ5IHRvIHJlY292ZXIgYnVmZmVyL1dBTAorICogZGF0 YSBmcm9tIG5vZGVzIHRoYXQgbmV2ZXIgZ290IGZpbmFsaXplZCwgdGhhdCBzb21lb25lIG1pZ2h0 IGJlIGludGVyZXN0ZWQKKyAqIGluIGFzIGFuIGFnZ3JlZ2F0ZS4KKyAqLwordm9pZAorRXhlY1Jl bWVtYmVyTm9kZUluc3RydW1lbnRhdGlvbihQbGFuU3RhdGUgKm5vZGUsIFF1ZXJ5SW5zdHJ1bWVu dGF0aW9uICpwYXJlbnQpCit7CisJKHZvaWQpIEV4ZWNSZW1lbWJlck5vZGVJbnN0cnVtZW50YXRp b25fd2Fsa2VyKG5vZGUsIHBhcmVudCk7Cit9CisKK3N0YXRpYyBib29sCitFeGVjUmVtZW1iZXJO b2RlSW5zdHJ1bWVudGF0aW9uX3dhbGtlcihQbGFuU3RhdGUgKm5vZGUsIHZvaWQgKmNvbnRleHQp Cit7CisJUXVlcnlJbnN0cnVtZW50YXRpb24gKnBhcmVudCA9IChRdWVyeUluc3RydW1lbnRhdGlv biAqKSBjb250ZXh0OworCisJQXNzZXJ0KHBhcmVudCAhPSBOVUxMKTsKKworCWlmIChub2RlID09 IE5VTEwpCisJCXJldHVybiBmYWxzZTsKKworCWlmIChub2RlLT5pbnN0cnVtZW50KQorCQlJbnN0 clF1ZXJ5UmVtZW1iZXJOb2RlKHBhcmVudCwgbm9kZS0+aW5zdHJ1bWVudCk7CisKKwlyZXR1cm4g cGxhbnN0YXRlX3RyZWVfd2Fsa2VyKG5vZGUsIEV4ZWNSZW1lbWJlck5vZGVJbnN0cnVtZW50YXRp b25fd2Fsa2VyLCBjb250ZXh0KTsKK30KKworLyoKKyAqIEV4ZWNGaW5hbGl6ZU5vZGVJbnN0cnVt ZW50YXRpb24KKyAqCisgKiBBY2N1bXVsYXRlIGluc3RydW1lbnRhdGlvbiBzdGF0cyBmcm9tIGFs bCBleGVjdXRpb24gbm9kZXMgdG8gdGhlaXIgcmVzcGVjdGl2ZQorICogcGFyZW50cyAob3IgdGhl IG9yaWdpbmFsIHBhcmVudCBpbnN0cnVtZW50YXRpb24pLgorICoKKyAqIFRoaXMgbXVzdCBydW4g YWZ0ZXIgdGhlIGNsZWFudXAgZG9uZSBieSBFeGVjU2h1dGRvd25Ob2RlLCBhbmQgbm90IHJlbHkg b24gYW55CisgKiByZXNvdXJjZXMgY2xlYW5lZCB1cCBieSBpdC4gV2UgYWxzbyBleHBlY3Qgc2h1 dGRvd24gYWN0aW9ucyB0byBoYXZlIG9jY3VycmVkLAorICogZS5nLiBwYXJhbGxlbCB3b3JrZXIg aW5zdHJ1bWVudGF0aW9uIHRvIGhhdmUgYmVlbiBhZGRlZCB0byB0aGUgbGVhZGVyLgorICovCit2 b2lkCitFeGVjRmluYWxpemVOb2RlSW5zdHJ1bWVudGF0aW9uKFBsYW5TdGF0ZSAqbm9kZSkKK3sK Kwkodm9pZCkgRXhlY0ZpbmFsaXplTm9kZUluc3RydW1lbnRhdGlvbl93YWxrZXIobm9kZSwgaW5z dHJfc3RhY2suY3VycmVudCk7Cit9CisKK3N0YXRpYyBib29sCitFeGVjRmluYWxpemVOb2RlSW5z dHJ1bWVudGF0aW9uX3dhbGtlcihQbGFuU3RhdGUgKm5vZGUsIHZvaWQgKmNvbnRleHQpCit7CisJ SW5zdHJ1bWVudGF0aW9uICpwYXJlbnQgPSAoSW5zdHJ1bWVudGF0aW9uICopIGNvbnRleHQ7CisK KwlBc3NlcnQocGFyZW50ICE9IE5VTEwpOworCisJaWYgKG5vZGUgPT0gTlVMTCkKKwkJcmV0dXJu IGZhbHNlOworCisJLyoKKwkgKiBSZWN1cnNlIGludG8gY2hpbGRyZW4gZmlyc3QgKGJvdHRvbS11 cCBhY2N1bXVsYXRpb24pLCBwYXNzaW5nIG91cgorCSAqIGluc3RydW1lbnRhdGlvbiBhcyB0aGUg cGFyZW50IGNvbnRleHQuICBUaGlzIGVuc3VyZXMgY2hpbGRyZW4gY2FuCisJICogYWNjdW11bGF0 ZSB0byB1cyBldmVuIGlmIHRoZXkgd2VyZSBuZXZlciBleGVjdXRlZCBieSB0aGUgbGVhZGVyIChl LmcuCisJICogbm9kZXMgYmVuZWF0aCBHYXRoZXIgdGhhdCBvbmx5IHdvcmtlcnMgcmFuKS4KKwkg Ki8KKwlwbGFuc3RhdGVfdHJlZV93YWxrZXIobm9kZSwgRXhlY0ZpbmFsaXplTm9kZUluc3RydW1l bnRhdGlvbl93YWxrZXIsCisJCQkJCQkgIG5vZGUtPmluc3RydW1lbnQgPyAmbm9kZS0+aW5zdHJ1 bWVudC0+aW5zdHIgOiBwYXJlbnQpOworCisJaWYgKCFub2RlLT5pbnN0cnVtZW50KQorCQlyZXR1 cm4gZmFsc2U7CisKKwlub2RlLT5pbnN0cnVtZW50ID0gSW5zdHJGaW5hbGl6ZU5vZGUobm9kZS0+ aW5zdHJ1bWVudCwgcGFyZW50KTsKKworCXJldHVybiBmYWxzZTsKK30KKwogLyoKICAqIEV4ZWNT ZXRUdXBsZUJvdW5kCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvaW5zdHJ1 bWVudC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvaW5zdHJ1bWVudC5jCmluZGV4IDZhNGEwOGVi YjBjLi4xYWZhNWU5NDk2MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvaW5zdHJ1 bWVudC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2luc3RydW1lbnQuYwpAQCAtMTYsMjUg KzE2LDMxIEBACiAjaW5jbHVkZSA8dW5pc3RkLmg+CiAKICNpbmNsdWRlICJleGVjdXRvci9pbnN0 cnVtZW50LmgiCisjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKKyNpbmNsdWRlICJ1dGlscy9y ZXNvd25lci5oIgogCi1CdWZmZXJVc2FnZSBwZ0J1ZmZlclVzYWdlOwotc3RhdGljIEJ1ZmZlclVz YWdlIHNhdmVfcGdCdWZmZXJVc2FnZTsKIFdhbFVzYWdlCXBnV2FsVXNhZ2U7Ci1zdGF0aWMgV2Fs VXNhZ2Ugc2F2ZV9wZ1dhbFVzYWdlOworSW5zdHJ1bWVudGF0aW9uIGluc3RyX3RvcDsKK0luc3Ry U3RhY2tTdGF0ZSBpbnN0cl9zdGFjayA9IHswLCAwLCBOVUxMLCAmaW5zdHJfdG9wfTsKIAotc3Rh dGljIHZvaWQgQnVmZmVyVXNhZ2VBZGQoQnVmZmVyVXNhZ2UgKmRzdCwgY29uc3QgQnVmZmVyVXNh Z2UgKmFkZCk7Ci1zdGF0aWMgdm9pZCBXYWxVc2FnZUFkZChXYWxVc2FnZSAqZHN0LCBXYWxVc2Fn ZSAqYWRkKTsKLQotCi0vKiBHZW5lcmFsIHB1cnBvc2UgaW5zdHJ1bWVudGF0aW9uIGhhbmRsaW5n ICovCi1JbnN0cnVtZW50YXRpb24gKgotSW5zdHJBbGxvYyhpbnQgaW5zdHJ1bWVudF9vcHRpb25z KQordm9pZAorSW5zdHJTdGFja0dyb3codm9pZCkKIHsKLQlJbnN0cnVtZW50YXRpb24gKmluc3Ry ID0gcGFsbG9jMChzaXplb2YoSW5zdHJ1bWVudGF0aW9uKSk7Ci0JSW5zdHJJbml0T3B0aW9ucyhp bnN0ciwgaW5zdHJ1bWVudF9vcHRpb25zKTsKLQlyZXR1cm4gaW5zdHI7CisJaWYgKGluc3RyX3N0 YWNrLmVudHJpZXMgPT0gTlVMTCkKKwl7CisJCWluc3RyX3N0YWNrLnN0YWNrX3NwYWNlID0gMTA7 CS8qIEFsbG9jYXRlIHN1ZmZpY2llbnQgaW5pdGlhbCBzcGFjZQorCQkJCQkJCQkJCSAqIGZvciB0 eXBpY2FsIGFjdGl2aXR5ICovCisJCWluc3RyX3N0YWNrLmVudHJpZXMgPSBNZW1vcnlDb250ZXh0 QWxsb2MoVG9wTWVtb3J5Q29udGV4dCwKKwkJCQkJCQkJCQkJCSBzaXplb2YoSW5zdHJ1bWVudGF0 aW9uICopICogaW5zdHJfc3RhY2suc3RhY2tfc3BhY2UpOworCX0KKwllbHNlCisJeworCQlpbnN0 cl9zdGFjay5zdGFja19zcGFjZSAqPSAyOworCQlpbnN0cl9zdGFjay5lbnRyaWVzID0gcmVwYWxs b2NfYXJyYXkoaW5zdHJfc3RhY2suZW50cmllcywgSW5zdHJ1bWVudGF0aW9uICosIGluc3RyX3N0 YWNrLnN0YWNrX3NwYWNlKTsKKwl9CiB9CiAKKy8qIEdlbmVyYWwgcHVycG9zZSBpbnN0cnVtZW50 YXRpb24gaGFuZGxpbmcgKi8KIHZvaWQKIEluc3RySW5pdE9wdGlvbnMoSW5zdHJ1bWVudGF0aW9u ICppbnN0ciwgaW50IGluc3RydW1lbnRfb3B0aW9ucykKIHsKQEAgLTU0LDM4ICs2MCwyNDkgQEAg SW5zdHJTdGFydChJbnN0cnVtZW50YXRpb24gKmluc3RyKQogCQkJSU5TVFJfVElNRV9TRVRfQ1VS UkVOVChpbnN0ci0+c3RhcnR0aW1lKTsKIAl9CiAKLQlpZiAoaW5zdHItPm5lZWRfYnVmdXNhZ2Up Ci0JCWluc3RyLT5idWZ1c2FnZV9zdGFydCA9IHBnQnVmZmVyVXNhZ2U7CisJaWYgKGluc3RyLT5u ZWVkX2J1ZnVzYWdlIHx8IGluc3RyLT5uZWVkX3dhbHVzYWdlKQorCQlJbnN0clB1c2hTdGFjayhp bnN0cik7Cit9CisKK3N0YXRpYyB2b2lkCitJbnN0clN0b3BUaW1lcihJbnN0cnVtZW50YXRpb24g Kmluc3RyKQoreworCWluc3RyX3RpbWUJZW5kdGltZTsKKworCS8qIGxldCdzIHVwZGF0ZSB0aGUg dGltZSBvbmx5IGlmIHRoZSB0aW1lciB3YXMgcmVxdWVzdGVkICovCisJaWYgKElOU1RSX1RJTUVf SVNfWkVSTyhpbnN0ci0+c3RhcnR0aW1lKSkKKwkJZWxvZyhFUlJPUiwgIkluc3RyU3RvcCBjYWxs ZWQgd2l0aG91dCBzdGFydCIpOworCisJSU5TVFJfVElNRV9TRVRfQ1VSUkVOVChlbmR0aW1lKTsK KwlJTlNUUl9USU1FX0FDQ1VNX0RJRkYoaW5zdHItPnRvdGFsLCBlbmR0aW1lLCBpbnN0ci0+c3Rh cnR0aW1lKTsKIAotCWlmIChpbnN0ci0+bmVlZF93YWx1c2FnZSkKLQkJaW5zdHItPndhbHVzYWdl X3N0YXJ0ID0gcGdXYWxVc2FnZTsKKwlJTlNUUl9USU1FX1NFVF9aRVJPKGluc3RyLT5zdGFydHRp bWUpOwogfQogCiB2b2lkCiBJbnN0clN0b3AoSW5zdHJ1bWVudGF0aW9uICppbnN0cikKIHsKLQlp bnN0cl90aW1lCWVuZHRpbWU7CisJaWYgKGluc3RyLT5uZWVkX3RpbWVyKQorCQlJbnN0clN0b3BU aW1lcihpbnN0cik7CisKKwlpZiAoaW5zdHItPm5lZWRfYnVmdXNhZ2UgfHwgaW5zdHItPm5lZWRf d2FsdXNhZ2UpCisJCUluc3RyUG9wU3RhY2soaW5zdHIpOworfQorCisvKgorICogU3RvcHMgaW5z dHJ1bWVudGF0aW9uLCBmaW5hbGl6ZXMgdGhlIHN0YWNrIGVudHJ5IGFuZCBhY2N1bXVsYXRlcyB0 byBpdHMgcGFyZW50LgorICoKKyAqIE5vdGUgdGhhdCB0aGlzIGludGVudGlvbmFsbHkgYWxsb3dz IHBhc3NpbmcgYSBzdGFjayB0aGF0IGlzIG5vdCB0aGUgY3VycmVudAorICogdG9wLCBhcyBjYW4g aGFwcGVuIHdpdGggUEdfRklOQUxMWSwgb3IgcmVzb3VyY2Ugb3duZXJzLCB3aGljaCBkb24ndCBo YXZlIGEKKyAqIGd1YXJhbnRlZWQgY2xlYW51cCBvcmRlci4KKyAqCisgKiBXZSBhcmUgY2FyZWZ1 bCBoZXJlIHRvIGFjaGlldmUgdHdvIGdvYWxzOgorICoKKyAqIDEpIFJlc2V0IHRoZSBzdGFjayB0 byB0aGUgcGFyZW50IG9mIHdoaWNoZXZlciBvZiB0aGUgcmVsZWFzZWQgc3RhY2sgZW50cmllcwor ICogICAgaGFzIHRoZSBsb3dlc3QgaW5kZXgKKyAqIDIpIEFjY3VtdWxhdGUgYWxsIGluc3RydW1l bnRhdGlvbiB0byB0aGUgY3VycmVudGx5IGFjdGl2ZSBpbnN0cnVtZW50YXRpb24sCisgKiAgICBz byB0aGF0IGNhbGxlcnMgZ2V0IGEgY29tcGxldGUgcGljdHVyZSBvZiBhY3Rpdml0eSwgZXZlbiBh ZnRlciBhbiBhYm9ydAorICovCit2b2lkCitJbnN0clN0b3BGaW5hbGl6ZShJbnN0cnVtZW50YXRp b24gKmluc3RyKQoreworCWludAkJCWlkeCA9IC0xOworCisJZm9yIChpbnQgaSA9IGluc3RyX3N0 YWNrLnN0YWNrX3NpemUgLSAxOyBpID49IDA7IGktLSkKKwl7CisJCWlmIChpbnN0cl9zdGFjay5l bnRyaWVzW2ldID09IGluc3RyKQorCQl7CisJCQlpZHggPSBpOworCQkJYnJlYWs7CisJCX0KKwl9 CisKKwlpZiAoaWR4ID49IDApCisJeworCQl3aGlsZSAoaW5zdHJfc3RhY2suc3RhY2tfc2l6ZSA+ IGlkeCArIDEpCisJCQlpbnN0cl9zdGFjay5zdGFja19zaXplLS07CisKKwkJSW5zdHJQb3BTdGFj ayhpbnN0cik7CisJfQogCi0JLyogbGV0J3MgdXBkYXRlIHRoZSB0aW1lIG9ubHkgaWYgdGhlIHRp bWVyIHdhcyByZXF1ZXN0ZWQgKi8KIAlpZiAoaW5zdHItPm5lZWRfdGltZXIpCisJCUluc3RyU3Rv cFRpbWVyKGluc3RyKTsKKworCUluc3RyQWNjdW0oaW5zdHJfc3RhY2suY3VycmVudCwgaW5zdHIp OworfQorCisKKy8qIFF1ZXJ5IGluc3RydW1lbnRhdGlvbiBoYW5kbGluZyAqLworCisvKgorICog VXNlIFJlc291cmNlT3duZXIgbWVjaGFuaXNtIHRvIGNvcnJlY3RseSByZXNldCBpbnN0cl9zdGFj ayBvbiBhYm9ydC4KKyAqLworc3RhdGljIHZvaWQgUmVzT3duZXJSZWxlYXNlSW5zdHJ1bWVudGF0 aW9uKERhdHVtIHJlcyk7CitzdGF0aWMgY29uc3QgUmVzb3VyY2VPd25lckRlc2MgaW5zdHJ1bWVu dGF0aW9uX3Jlc293bmVyX2Rlc2MgPQoreworCS5uYW1lID0gImluc3RydW1lbnRhdGlvbiIsCisJ LnJlbGVhc2VfcGhhc2UgPSBSRVNPVVJDRV9SRUxFQVNFX0FGVEVSX0xPQ0tTLAorCS5yZWxlYXNl X3ByaW9yaXR5ID0gUkVMRUFTRV9QUklPX0lOU1RSVU1FTlRBVElPTiwKKwkuUmVsZWFzZVJlc291 cmNlID0gUmVzT3duZXJSZWxlYXNlSW5zdHJ1bWVudGF0aW9uLAorCS5EZWJ1Z1ByaW50ID0gTlVM TCwJCQkvKiBkZWZhdWx0IG1lc3NhZ2UgaXMgZmluZSAqLworfTsKKworc3RhdGljIGlubGluZSB2 b2lkCitSZXNvdXJjZU93bmVyUmVtZW1iZXJJbnN0cnVtZW50YXRpb24oUmVzb3VyY2VPd25lciBv d25lciwgUXVlcnlJbnN0cnVtZW50YXRpb24gKnFpbnN0cikKK3sKKwlSZXNvdXJjZU93bmVyUmVt ZW1iZXIob3duZXIsIFBvaW50ZXJHZXREYXR1bShxaW5zdHIpLCAmaW5zdHJ1bWVudGF0aW9uX3Jl c293bmVyX2Rlc2MpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQKK1Jlc291cmNlT3duZXJGb3Jn ZXRJbnN0cnVtZW50YXRpb24oUmVzb3VyY2VPd25lciBvd25lciwgUXVlcnlJbnN0cnVtZW50YXRp b24gKnFpbnN0cikKK3sKKwlSZXNvdXJjZU93bmVyRm9yZ2V0KG93bmVyLCBQb2ludGVyR2V0RGF0 dW0ocWluc3RyKSwgJmluc3RydW1lbnRhdGlvbl9yZXNvd25lcl9kZXNjKTsKK30KKworc3RhdGlj IHZvaWQKK1Jlc093bmVyUmVsZWFzZUluc3RydW1lbnRhdGlvbihEYXR1bSByZXMpCit7CisJUXVl cnlJbnN0cnVtZW50YXRpb24gKnFpbnN0ciA9IChRdWVyeUluc3RydW1lbnRhdGlvbiAqKSBEYXR1 bUdldFBvaW50ZXIocmVzKTsKKwlzbGlzdF9tdXRhYmxlX2l0ZXIgaXRlcjsKKworCS8qIEFjY3Vt dWxhdGUgZGF0YSBmcm9tIGFsbCB1bmZpbmFsaXplZCBjaGlsZCBub2RlIGVudHJpZXMuICovCisJ c2xpc3RfZm9yZWFjaF9tb2RpZnkoaXRlciwgJnFpbnN0ci0+dW5maW5hbGl6ZWRfY2hpbGRyZW4p CiAJewotCQlpZiAoSU5TVFJfVElNRV9JU19aRVJPKGluc3RyLT5zdGFydHRpbWUpKQotCQkJZWxv ZyhFUlJPUiwgIkluc3RyU3RvcCBjYWxsZWQgd2l0aG91dCBzdGFydCIpOworCQlOb2RlSW5zdHJ1 bWVudGF0aW9uICpjaGlsZCA9IHNsaXN0X2NvbnRhaW5lcihOb2RlSW5zdHJ1bWVudGF0aW9uLCB1 bmZpbmFsaXplZF9ub2RlLCBpdGVyLmN1cik7CiAKLQkJSU5TVFJfVElNRV9TRVRfQ1VSUkVOVChl bmR0aW1lKTsKLQkJSU5TVFJfVElNRV9BQ0NVTV9ESUZGKGluc3RyLT50b3RhbCwgZW5kdGltZSwg aW5zdHItPnN0YXJ0dGltZSk7CisJCUluc3RyQWNjdW0oJnFpbnN0ci0+aW5zdHIsICZjaGlsZC0+ aW5zdHIpOwogCi0JCUlOU1RSX1RJTUVfU0VUX1pFUk8oaW5zdHItPnN0YXJ0dGltZSk7CisJCS8q CisJCSAqIEZyZWUgTm9kZUluc3RydW1lbnRhdGlvbiBub3csIHNpbmNlIEluc3RyRmluYWxpemVO b2RlIHdvbid0IGJlCisJCSAqIGNhbGxlZAorCQkgKi8KKwkJcGZyZWUoY2hpbGQpOwogCX0KIAot CS8qIEFkZCBkZWx0YSBvZiBidWZmZXIgdXNhZ2Ugc2luY2UgZW50cnkgdG8gbm9kZSdzIHRvdGFs cyAqLwotCWlmIChpbnN0ci0+bmVlZF9idWZ1c2FnZSkKLQkJQnVmZmVyVXNhZ2VBY2N1bURpZmYo Jmluc3RyLT5idWZ1c2FnZSwKLQkJCQkJCQkgJnBnQnVmZmVyVXNhZ2UsICZpbnN0ci0+YnVmdXNh Z2Vfc3RhcnQpOworCS8qIEVuc3VyZSB0aGUgc3RhY2sgaXMgcmVzZXQgYXMgZXhwZWN0ZWQsIGFu ZCB3ZSBhY2N1bXVsYXRlIHRvIHRoZSBwYXJlbnQgKi8KKwlJbnN0clN0b3BGaW5hbGl6ZSgmcWlu c3RyLT5pbnN0cik7CisKKwkvKiBGcmVlIFF1ZXJ5SW5zdHJ1bWVudGF0aW9uIG5vdywgc2luY2Ug SW5zdHJTdG9wIHdvbid0IGJlIGNhbGxlZCAqLworCXBmcmVlKHFpbnN0cik7Cit9CisKKy8qCisg KiBBbGxvY2F0ZSBpbiBUb3BNZW1vcnlDb250ZXh0IHNvIHRoYXQgdGhlIEluc3RydW1lbnRhdGlv biBzdXJ2aXZlcworICogdHJhbnNhY3Rpb24gYWJvcnQg4oCUIFJlc291cmNlT3duZXIgcmVsZWFz ZSBuZWVkcyB0byBhY2Nlc3MgaXQuCisgKi8KK1F1ZXJ5SW5zdHJ1bWVudGF0aW9uICoKK0luc3Ry UXVlcnlBbGxvYyhpbnQgaW5zdHJ1bWVudF9vcHRpb25zKQoreworCVF1ZXJ5SW5zdHJ1bWVudGF0 aW9uICppbnN0ciA9IE1lbW9yeUNvbnRleHRBbGxvY1plcm8oVG9wTWVtb3J5Q29udGV4dCwgc2l6 ZW9mKFF1ZXJ5SW5zdHJ1bWVudGF0aW9uKSk7CisKKwlJbnN0ckluaXRPcHRpb25zKCZpbnN0ci0+ aW5zdHIsIGluc3RydW1lbnRfb3B0aW9ucyk7CisJcmV0dXJuIGluc3RyOworfQorCit2b2lkCitJ bnN0clF1ZXJ5U3RhcnQoUXVlcnlJbnN0cnVtZW50YXRpb24gKnFpbnN0cikKK3sKKwlJbnN0clN0 YXJ0KCZxaW5zdHItPmluc3RyKTsKIAotCWlmIChpbnN0ci0+bmVlZF93YWx1c2FnZSkKLQkJV2Fs VXNhZ2VBY2N1bURpZmYoJmluc3RyLT53YWx1c2FnZSwKLQkJCQkJCSAgJnBnV2FsVXNhZ2UsICZp bnN0ci0+d2FsdXNhZ2Vfc3RhcnQpOworCWlmIChxaW5zdHItPmluc3RyLm5lZWRfYnVmdXNhZ2Ug fHwgcWluc3RyLT5pbnN0ci5uZWVkX3dhbHVzYWdlKQorCXsKKwkJQXNzZXJ0KEN1cnJlbnRSZXNv dXJjZU93bmVyICE9IE5VTEwpOworCQlxaW5zdHItPm93bmVyID0gQ3VycmVudFJlc291cmNlT3du ZXI7CisKKwkJUmVzb3VyY2VPd25lckVubGFyZ2UocWluc3RyLT5vd25lcik7CisJCVJlc291cmNl T3duZXJSZW1lbWJlckluc3RydW1lbnRhdGlvbihxaW5zdHItPm93bmVyLCBxaW5zdHIpOworCX0K K30KKwordm9pZAorSW5zdHJRdWVyeVN0b3AoUXVlcnlJbnN0cnVtZW50YXRpb24gKnFpbnN0cikK K3sKKwlJbnN0clN0b3AoJnFpbnN0ci0+aW5zdHIpOworCisJaWYgKHFpbnN0ci0+aW5zdHIubmVl ZF9idWZ1c2FnZSB8fCBxaW5zdHItPmluc3RyLm5lZWRfd2FsdXNhZ2UpCisJeworCQlBc3NlcnQo cWluc3RyLT5vd25lciAhPSBOVUxMKTsKKwkJUmVzb3VyY2VPd25lckZvcmdldEluc3RydW1lbnRh dGlvbihxaW5zdHItPm93bmVyLCBxaW5zdHIpOworCQlxaW5zdHItPm93bmVyID0gTlVMTDsKKwl9 Cit9CisKK1F1ZXJ5SW5zdHJ1bWVudGF0aW9uICoKK0luc3RyUXVlcnlTdG9wRmluYWxpemUoUXVl cnlJbnN0cnVtZW50YXRpb24gKnFpbnN0cikKK3sKKwlRdWVyeUluc3RydW1lbnRhdGlvbiAqY29w eTsKKworCUluc3RyU3RvcEZpbmFsaXplKCZxaW5zdHItPmluc3RyKTsKKworCWlmIChxaW5zdHIt Pmluc3RyLm5lZWRfYnVmdXNhZ2UgfHwgcWluc3RyLT5pbnN0ci5uZWVkX3dhbHVzYWdlKQorCXsK KwkJQXNzZXJ0KHFpbnN0ci0+b3duZXIgIT0gTlVMTCk7CisJCVJlc291cmNlT3duZXJGb3JnZXRJ bnN0cnVtZW50YXRpb24ocWluc3RyLT5vd25lciwgcWluc3RyKTsKKwkJcWluc3RyLT5vd25lciA9 IE5VTEw7CisJfQorCisJLyoKKwkgKiBDb3B5IHRvIHRoZSBjdXJyZW50IG1lbW9yeSBjb250ZXh0 IHNvIHRoZSBjYWxsZXIgZG9lc24ndCBuZWVkIHRvCisJICogZXhwbGljaXRseSBmcmVlIHRoZSBU b3BNZW1vcnlDb250ZXh0IGFsbG9jYXRpb24uCisJICovCisJY29weSA9IHBhbGxvYyhzaXplb2Yo UXVlcnlJbnN0cnVtZW50YXRpb24pKTsKKwltZW1jcHkoY29weSwgcWluc3RyLCBzaXplb2YoUXVl cnlJbnN0cnVtZW50YXRpb24pKTsKKwlwZnJlZShxaW5zdHIpOworCXJldHVybiBjb3B5OworfQor CisvKgorICogUmVnaXN0ZXIgYSBjaGlsZCBOb2RlSW5zdHJ1bWVudGF0aW9uIGVudHJ5IGZvciBh Ym9ydCBwcm9jZXNzaW5nLgorICoKKyAqIE9uIGFib3J0LCBSZXNPd25lclJlbGVhc2VJbnN0cnVt ZW50YXRpb24gd2lsbCB3YWxrIHRoZSBwYXJlbnQncyBsaXN0IHRvCisgKiByZWNvdmVyIGJ1ZmZl ci9XQUwgZGF0YSBmcm9tIGVudHJpZXMgdGhhdCB3ZXJlIG5ldmVyIGZpbmFsaXplZCwgaW4gb3Jk ZXIgZm9yCisgKiBhZ2dyZWdhdGUgdG90YWxzIHRvIGJlIGFjY3VyYXRlIGRlc3BpdGUgdGhlIHF1 ZXJ5IGVycm9yaW5nIG91dC4KKyAqLwordm9pZAorSW5zdHJRdWVyeVJlbWVtYmVyTm9kZShRdWVy eUluc3RydW1lbnRhdGlvbiAqcGFyZW50LCBOb2RlSW5zdHJ1bWVudGF0aW9uICpjaGlsZCkKK3sK KwlpZiAoY2hpbGQtPmluc3RyLm5lZWRfYnVmdXNhZ2UgfHwgY2hpbGQtPmluc3RyLm5lZWRfd2Fs dXNhZ2UpCisJCXNsaXN0X3B1c2hfaGVhZCgmcGFyZW50LT51bmZpbmFsaXplZF9jaGlsZHJlbiwg JmNoaWxkLT51bmZpbmFsaXplZF9ub2RlKTsKK30KKworLyogc3RhcnQgaW5zdHJ1bWVudGF0aW9u IGR1cmluZyBwYXJhbGxlbCBleGVjdXRvciBzdGFydHVwICovCitRdWVyeUluc3RydW1lbnRhdGlv biAqCitJbnN0clN0YXJ0UGFyYWxsZWxRdWVyeSh2b2lkKQoreworCVF1ZXJ5SW5zdHJ1bWVudGF0 aW9uICpxaW5zdHIgPSBJbnN0clF1ZXJ5QWxsb2MoSU5TVFJVTUVOVF9CVUZGRVJTIHwgSU5TVFJV TUVOVF9XQUwpOworCisJSW5zdHJRdWVyeVN0YXJ0KHFpbnN0cik7CisJcmV0dXJuIHFpbnN0cjsK K30KKworLyogcmVwb3J0IHVzYWdlIGFmdGVyIHBhcmFsbGVsIGV4ZWN1dG9yIHNodXRkb3duICov Cit2b2lkCitJbnN0ckVuZFBhcmFsbGVsUXVlcnkoUXVlcnlJbnN0cnVtZW50YXRpb24gKnFpbnN0 ciwgQnVmZmVyVXNhZ2UgKmJ1ZnVzYWdlLCBXYWxVc2FnZSAqd2FsdXNhZ2UpCit7CisJcWluc3Ry ID0gSW5zdHJRdWVyeVN0b3BGaW5hbGl6ZShxaW5zdHIpOworCW1lbWNweShidWZ1c2FnZSwgJnFp bnN0ci0+aW5zdHIuYnVmdXNhZ2UsIHNpemVvZihCdWZmZXJVc2FnZSkpOworCW1lbWNweSh3YWx1 c2FnZSwgJnFpbnN0ci0+aW5zdHIud2FsdXNhZ2UsIHNpemVvZihXYWxVc2FnZSkpOworfQorCisv KgorICogQWNjdW11bGF0ZSB3b3JrIGRvbmUgYnkgcGFyYWxsZWwgd29ya2VycyBpbiB0aGUgbGVh ZGVyJ3Mgc3RhdHMuCisgKgorICogTm90ZSB0aGF0IHdoYXQgZ2V0cyBhZGRlZCBoZXJlIGVmZmVj dGl2ZWx5IGRlcGVuZHMgb24gd2hldGhlciBwZXItbm9kZQorICogaW5zdHJ1bWVudGF0aW9uIGlz IGFjdGl2ZS4gSWYgaXQncyBhY3RpdmUgdGhlIHBhcmFsbGVsIHdvcmtlciBpbnRlbnRpb25hbGx5 CisgKiBza2lwcyBFeGVjRmluYWxpemVOb2RlSW5zdHJ1bWVudGF0aW9uIG9uIGV4ZWN1dG9yIHNo dXRkb3duLCBiZWNhdXNlIGl0IHdvdWxkCisgKiBjYXVzZSBkb3VibGUgY291bnRpbmcuIEluc3Rl YWQsIHRoaXMgb25seSBhY2N1bXVsYXRlcyBhbnkgZXh0cmEgYWN0aXZpdHkKKyAqIG91dHNpZGUg b2Ygbm9kZXMuCisgKgorICogT3RoZXJ3aXNlIHRoaXMgaXMgcmVzcG9uc2libGUgZm9yIG1ha2lu ZyBzdXJlIHRoYXQgdGhlIGNvbXBsZXRlIHF1ZXJ5CisgKiBhY3Rpdml0eSBpcyBhY2N1bXVsYXRl ZC4KKyAqLwordm9pZAorSW5zdHJBY2N1bVBhcmFsbGVsUXVlcnkoQnVmZmVyVXNhZ2UgKmJ1ZnVz YWdlLCBXYWxVc2FnZSAqd2FsdXNhZ2UpCit7CisJQnVmZmVyVXNhZ2VBZGQoJmluc3RyX3N0YWNr LmN1cnJlbnQtPmJ1ZnVzYWdlLCBidWZ1c2FnZSk7CisJV2FsVXNhZ2VBZGQoJmluc3RyX3N0YWNr LmN1cnJlbnQtPndhbHVzYWdlLCB3YWx1c2FnZSk7CisKKwlXYWxVc2FnZUFkZCgmcGdXYWxVc2Fn ZSwgd2FsdXNhZ2UpOwogfQogCiAvKiBOb2RlIGluc3RydW1lbnRhdGlvbiBoYW5kbGluZyAqLwpA QCAtOTQsNyArMzExLDEzIEBAIEluc3RyU3RvcChJbnN0cnVtZW50YXRpb24gKmluc3RyKQogTm9k ZUluc3RydW1lbnRhdGlvbiAqCiBJbnN0ckFsbG9jTm9kZShpbnQgaW5zdHJ1bWVudF9vcHRpb25z LCBib29sIGFzeW5jX21vZGUpCiB7Ci0JTm9kZUluc3RydW1lbnRhdGlvbiAqaW5zdHIgPSBwYWxs b2Moc2l6ZW9mKE5vZGVJbnN0cnVtZW50YXRpb24pKTsKKwkvKgorCSAqIFdlIGNhbiB1dGlsaXpl IFRvcFRyYW5zYWN0aW9uQ29udGV4dCBpbnN0ZWFkIG9mIFRvcE1lbW9yeUNvbnRleHQgaGVyZQor CSAqIGJlY2F1c2Ugbm9kZXMgZG9uJ3QgZ2V0IHVzZWQgZm9yIHV0aWxpdHkgY29tbWFuZHMgdGhh dCByZXN0YXJ0CisJICogdHJhbnNhY3Rpb25zLCB3aGljaCB3b3VsZCByZXF1aXJlIGEgY29udGV4 dCB0aGF0IHN1cnZpdmVzIGxvbmdlcgorCSAqIChFWFBMQUlOIEFOQUxZWkUgaXMgZmluZSkuCisJ ICovCisJTm9kZUluc3RydW1lbnRhdGlvbiAqaW5zdHIgPSBNZW1vcnlDb250ZXh0QWxsb2MoVG9w VHJhbnNhY3Rpb25Db250ZXh0LCBzaXplb2YoTm9kZUluc3RydW1lbnRhdGlvbikpOwogCiAJSW5z dHJJbml0Tm9kZShpbnN0ciwgaW5zdHJ1bWVudF9vcHRpb25zKTsKIAlpbnN0ci0+YXN5bmNfbW9k ZSA9IGFzeW5jX21vZGU7CkBAIC0xMTcsNiArMzQwLDcgQEAgSW5zdHJTdGFydE5vZGUoTm9kZUlu c3RydW1lbnRhdGlvbiAqaW5zdHIpCiAJSW5zdHJTdGFydCgmaW5zdHItPmluc3RyKTsKIH0KIAor CiAvKiBFeGl0IGZyb20gYSBwbGFuIG5vZGUgKi8KIHZvaWQKIEluc3RyU3RvcE5vZGUoTm9kZUlu c3RydW1lbnRhdGlvbiAqaW5zdHIsIGRvdWJsZSBuVHVwbGVzKQpAQCAtMTQ2LDE0ICszNzAsMTIg QEAgSW5zdHJTdG9wTm9kZShOb2RlSW5zdHJ1bWVudGF0aW9uICppbnN0ciwgZG91YmxlIG5UdXBs ZXMpCiAJCUlOU1RSX1RJTUVfU0VUX1pFUk8oaW5zdHItPmluc3RyLnN0YXJ0dGltZSk7CiAJfQog Ci0JLyogQWRkIGRlbHRhIG9mIGJ1ZmZlciB1c2FnZSBzaW5jZSBlbnRyeSB0byBub2RlJ3MgdG90 YWxzICovCi0JaWYgKGluc3RyLT5pbnN0ci5uZWVkX2J1ZnVzYWdlKQotCQlCdWZmZXJVc2FnZUFj Y3VtRGlmZigmaW5zdHItPmluc3RyLmJ1ZnVzYWdlLAotCQkJCQkJCSAmcGdCdWZmZXJVc2FnZSwg Jmluc3RyLT5pbnN0ci5idWZ1c2FnZV9zdGFydCk7Ci0KLQlpZiAoaW5zdHItPmluc3RyLm5lZWRf d2FsdXNhZ2UpCi0JCVdhbFVzYWdlQWNjdW1EaWZmKCZpbnN0ci0+aW5zdHIud2FsdXNhZ2UsCi0J CQkJCQkgICZwZ1dhbFVzYWdlLCAmaW5zdHItPmluc3RyLndhbHVzYWdlX3N0YXJ0KTsKKwkvKgor CSAqIE9ubHkgcG9wIHRoZSBzdGFjaywgYWNjdW11bGF0aW9uIHJ1bnMgaW4KKwkgKiBFeGVjRmlu YWxpemVOb2RlSW5zdHJ1bWVudGF0aW9uCisJICovCisJaWYgKGluc3RyLT5pbnN0ci5uZWVkX2J1 ZnVzYWdlIHx8IGluc3RyLT5pbnN0ci5uZWVkX3dhbHVzYWdlKQorCQlJbnN0clBvcFN0YWNrKCZp bnN0ci0+aW5zdHIpOwogCiAJLyogSXMgdGhpcyB0aGUgZmlyc3QgdHVwbGUgb2YgdGhpcyBjeWNs ZT8gKi8KIAlpZiAoIWluc3RyLT5ydW5uaW5nKQpAQCAtMTcyLDYgKzM5NCwyMiBAQCBJbnN0clN0 b3BOb2RlKE5vZGVJbnN0cnVtZW50YXRpb24gKmluc3RyLCBkb3VibGUgblR1cGxlcykKIAl9CiB9 CiAKKy8qIEFkZCBwZXItbm9kZSBpbnN0cnVtZW50YXRpb24gdG8gdGhlIHBhcmVudCBhbmQgbW92 ZSBpbnRvIHBlci1xdWVyeSBtZW1vcnkgY29udGV4dCAqLworTm9kZUluc3RydW1lbnRhdGlvbiAq CitJbnN0ckZpbmFsaXplTm9kZShOb2RlSW5zdHJ1bWVudGF0aW9uICppbnN0ciwgSW5zdHJ1bWVu dGF0aW9uICpwYXJlbnQpCit7CisJTm9kZUluc3RydW1lbnRhdGlvbiAqZHN0ID0gcGFsbG9jKHNp emVvZihOb2RlSW5zdHJ1bWVudGF0aW9uKSk7CisKKwltZW1jcHkoZHN0LCBpbnN0ciwgc2l6ZW9m KE5vZGVJbnN0cnVtZW50YXRpb24pKTsKKwlwZnJlZShpbnN0cik7CisKKwkvKiBBY2N1bXVsYXRl IG5vZGUncyBidWZmZXIvV0FMIHVzYWdlIHRvIHRoZSBwYXJlbnQgKi8KKwlpZiAoZHN0LT5pbnN0 ci5uZWVkX2J1ZnVzYWdlIHx8IGRzdC0+aW5zdHIubmVlZF93YWx1c2FnZSkKKwkJSW5zdHJBY2N1 bShwYXJlbnQsICZkc3QtPmluc3RyKTsKKworCXJldHVybiBkc3Q7Cit9CisKIC8qIFVwZGF0ZSB0 dXBsZSBjb3VudCAqLwogdm9pZAogSW5zdHJVcGRhdGVUdXBsZUNvdW50KE5vZGVJbnN0cnVtZW50 YXRpb24gKmluc3RyLCBkb3VibGUgblR1cGxlcykKQEAgLTE4OCw4ICs0MjYsOCBAQCBJbnN0ckVu ZExvb3AoTm9kZUluc3RydW1lbnRhdGlvbiAqaW5zdHIpCiAJaWYgKCFpbnN0ci0+cnVubmluZykK IAkJcmV0dXJuOwogCi0JaWYgKCFJTlNUUl9USU1FX0lTX1pFUk8oaW5zdHItPmluc3RyLnN0YXJ0 dGltZSkpCi0JCWVsb2coRVJST1IsICJJbnN0ckVuZExvb3AgY2FsbGVkIG9uIHJ1bm5pbmcgbm9k ZSIpOworCS8qIEVuc3VyZSBJbnN0ck5vZGVTdG9wIHdhcyBjYWxsZWQgKi8KKwlBc3NlcnQoSU5T VFJfVElNRV9JU19aRVJPKGluc3RyLT5pbnN0ci5zdGFydHRpbWUpKTsKIAogCS8qIEFjY3VtdWxh dGUgcGVyLWN5Y2xlIHN0YXRpc3RpY3MgaW50byB0b3RhbHMgKi8KIAlJTlNUUl9USU1FX0FERChp bnN0ci0+c3RhcnR1cCwgaW5zdHItPmZpcnN0dHVwbGUpOwpAQCAtMjU5LDM4ICs0OTcsMjcgQEAg SW5zdHJTdGFydFRyaWdnZXIoVHJpZ2dlckluc3RydW1lbnRhdGlvbiAqdGdpbnN0cikKIHZvaWQK IEluc3RyU3RvcFRyaWdnZXIoVHJpZ2dlckluc3RydW1lbnRhdGlvbiAqdGdpbnN0ciwgaW50IGZp cmluZ3MpCiB7CisJLyoKKwkgKiBUaGlzIHRyaWdnZXIgbWF5IGJlIGNhbGxlZCBhZ2Fpbiwgc28g d2UgZG9uJ3QgZmluYWxpemUgaW5zdHJ1bWVudGF0aW9uCisJICogaGVyZS4gQWNjdW11bGF0aW9u IHRvIHRoZSBwYXJlbnQgaGFwcGVucyBhdCBFeGVjdXRvckZpbmlzaCB0aHJvdWdoCisJICogRXhl Y0ZpbmFsaXplVHJpZ2dlckluc3RydW1lbnRhdGlvbi4KKwkgKi8KIAlJbnN0clN0b3AoJnRnaW5z dHItPmluc3RyKTsKIAl0Z2luc3RyLT5maXJpbmdzICs9IGZpcmluZ3M7CiB9CiAKLS8qIG5vdGUg Y3VycmVudCB2YWx1ZXMgZHVyaW5nIHBhcmFsbGVsIGV4ZWN1dG9yIHN0YXJ0dXAgKi8KLXZvaWQK LUluc3RyU3RhcnRQYXJhbGxlbFF1ZXJ5KHZvaWQpCi17Ci0Jc2F2ZV9wZ0J1ZmZlclVzYWdlID0g cGdCdWZmZXJVc2FnZTsKLQlzYXZlX3BnV2FsVXNhZ2UgPSBwZ1dhbFVzYWdlOwotfQotCi0vKiBy ZXBvcnQgdXNhZ2UgYWZ0ZXIgcGFyYWxsZWwgZXhlY3V0b3Igc2h1dGRvd24gKi8KIHZvaWQKLUlu c3RyRW5kUGFyYWxsZWxRdWVyeShCdWZmZXJVc2FnZSAqYnVmdXNhZ2UsIFdhbFVzYWdlICp3YWx1 c2FnZSkKK0luc3RyQWNjdW0oSW5zdHJ1bWVudGF0aW9uICpkc3QsIEluc3RydW1lbnRhdGlvbiAq YWRkKQogewotCW1lbXNldChidWZ1c2FnZSwgMCwgc2l6ZW9mKEJ1ZmZlclVzYWdlKSk7Ci0JQnVm ZmVyVXNhZ2VBY2N1bURpZmYoYnVmdXNhZ2UsICZwZ0J1ZmZlclVzYWdlLCAmc2F2ZV9wZ0J1ZmZl clVzYWdlKTsKLQltZW1zZXQod2FsdXNhZ2UsIDAsIHNpemVvZihXYWxVc2FnZSkpOwotCVdhbFVz YWdlQWNjdW1EaWZmKHdhbHVzYWdlLCAmcGdXYWxVc2FnZSwgJnNhdmVfcGdXYWxVc2FnZSk7Ci19 CisJQXNzZXJ0KGRzdCAhPSBOVUxMKTsKKwlBc3NlcnQoYWRkICE9IE5VTEwpOwogCi0vKiBhY2N1 bXVsYXRlIHdvcmsgZG9uZSBieSB3b3JrZXJzIGluIGxlYWRlcidzIHN0YXRzICovCi12b2lkCi1J bnN0ckFjY3VtUGFyYWxsZWxRdWVyeShCdWZmZXJVc2FnZSAqYnVmdXNhZ2UsIFdhbFVzYWdlICp3 YWx1c2FnZSkKLXsKLQlCdWZmZXJVc2FnZUFkZCgmcGdCdWZmZXJVc2FnZSwgYnVmdXNhZ2UpOwot CVdhbFVzYWdlQWRkKCZwZ1dhbFVzYWdlLCB3YWx1c2FnZSk7CisJQnVmZmVyVXNhZ2VBZGQoJmRz dC0+YnVmdXNhZ2UsICZhZGQtPmJ1ZnVzYWdlKTsKKwlXYWxVc2FnZUFkZCgmZHN0LT53YWx1c2Fn ZSwgJmFkZC0+d2FsdXNhZ2UpOwogfQogCiAvKiBkc3QgKz0gYWRkICovCi1zdGF0aWMgdm9pZAor dm9pZAogQnVmZmVyVXNhZ2VBZGQoQnVmZmVyVXNhZ2UgKmRzdCwgY29uc3QgQnVmZmVyVXNhZ2Ug KmFkZCkKIHsKIAlkc3QtPnNoYXJlZF9ibGtzX2hpdCArPSBhZGQtPnNoYXJlZF9ibGtzX2hpdDsK QEAgLTMxMSwzOSArNTM4LDkgQEAgQnVmZmVyVXNhZ2VBZGQoQnVmZmVyVXNhZ2UgKmRzdCwgY29u c3QgQnVmZmVyVXNhZ2UgKmFkZCkKIAlJTlNUUl9USU1FX0FERChkc3QtPnRlbXBfYmxrX3dyaXRl X3RpbWUsIGFkZC0+dGVtcF9ibGtfd3JpdGVfdGltZSk7CiB9CiAKLS8qIGRzdCArPSBhZGQgLSBz dWIgKi8KKy8qIGRzdCArPSBhZGQgKi8KIHZvaWQKLUJ1ZmZlclVzYWdlQWNjdW1EaWZmKEJ1ZmZl clVzYWdlICpkc3QsCi0JCQkJCSBjb25zdCBCdWZmZXJVc2FnZSAqYWRkLAotCQkJCQkgY29uc3Qg QnVmZmVyVXNhZ2UgKnN1YikKLXsKLQlkc3QtPnNoYXJlZF9ibGtzX2hpdCArPSBhZGQtPnNoYXJl ZF9ibGtzX2hpdCAtIHN1Yi0+c2hhcmVkX2Jsa3NfaGl0OwotCWRzdC0+c2hhcmVkX2Jsa3NfcmVh ZCArPSBhZGQtPnNoYXJlZF9ibGtzX3JlYWQgLSBzdWItPnNoYXJlZF9ibGtzX3JlYWQ7Ci0JZHN0 LT5zaGFyZWRfYmxrc19kaXJ0aWVkICs9IGFkZC0+c2hhcmVkX2Jsa3NfZGlydGllZCAtIHN1Yi0+ c2hhcmVkX2Jsa3NfZGlydGllZDsKLQlkc3QtPnNoYXJlZF9ibGtzX3dyaXR0ZW4gKz0gYWRkLT5z aGFyZWRfYmxrc193cml0dGVuIC0gc3ViLT5zaGFyZWRfYmxrc193cml0dGVuOwotCWRzdC0+bG9j YWxfYmxrc19oaXQgKz0gYWRkLT5sb2NhbF9ibGtzX2hpdCAtIHN1Yi0+bG9jYWxfYmxrc19oaXQ7 Ci0JZHN0LT5sb2NhbF9ibGtzX3JlYWQgKz0gYWRkLT5sb2NhbF9ibGtzX3JlYWQgLSBzdWItPmxv Y2FsX2Jsa3NfcmVhZDsKLQlkc3QtPmxvY2FsX2Jsa3NfZGlydGllZCArPSBhZGQtPmxvY2FsX2Js a3NfZGlydGllZCAtIHN1Yi0+bG9jYWxfYmxrc19kaXJ0aWVkOwotCWRzdC0+bG9jYWxfYmxrc193 cml0dGVuICs9IGFkZC0+bG9jYWxfYmxrc193cml0dGVuIC0gc3ViLT5sb2NhbF9ibGtzX3dyaXR0 ZW47Ci0JZHN0LT50ZW1wX2Jsa3NfcmVhZCArPSBhZGQtPnRlbXBfYmxrc19yZWFkIC0gc3ViLT50 ZW1wX2Jsa3NfcmVhZDsKLQlkc3QtPnRlbXBfYmxrc193cml0dGVuICs9IGFkZC0+dGVtcF9ibGtz X3dyaXR0ZW4gLSBzdWItPnRlbXBfYmxrc193cml0dGVuOwotCUlOU1RSX1RJTUVfQUNDVU1fRElG Rihkc3QtPnNoYXJlZF9ibGtfcmVhZF90aW1lLAotCQkJCQkJICBhZGQtPnNoYXJlZF9ibGtfcmVh ZF90aW1lLCBzdWItPnNoYXJlZF9ibGtfcmVhZF90aW1lKTsKLQlJTlNUUl9USU1FX0FDQ1VNX0RJ RkYoZHN0LT5zaGFyZWRfYmxrX3dyaXRlX3RpbWUsCi0JCQkJCQkgIGFkZC0+c2hhcmVkX2Jsa193 cml0ZV90aW1lLCBzdWItPnNoYXJlZF9ibGtfd3JpdGVfdGltZSk7Ci0JSU5TVFJfVElNRV9BQ0NV TV9ESUZGKGRzdC0+bG9jYWxfYmxrX3JlYWRfdGltZSwKLQkJCQkJCSAgYWRkLT5sb2NhbF9ibGtf cmVhZF90aW1lLCBzdWItPmxvY2FsX2Jsa19yZWFkX3RpbWUpOwotCUlOU1RSX1RJTUVfQUNDVU1f RElGRihkc3QtPmxvY2FsX2Jsa193cml0ZV90aW1lLAotCQkJCQkJICBhZGQtPmxvY2FsX2Jsa193 cml0ZV90aW1lLCBzdWItPmxvY2FsX2Jsa193cml0ZV90aW1lKTsKLQlJTlNUUl9USU1FX0FDQ1VN X0RJRkYoZHN0LT50ZW1wX2Jsa19yZWFkX3RpbWUsCi0JCQkJCQkgIGFkZC0+dGVtcF9ibGtfcmVh ZF90aW1lLCBzdWItPnRlbXBfYmxrX3JlYWRfdGltZSk7Ci0JSU5TVFJfVElNRV9BQ0NVTV9ESUZG KGRzdC0+dGVtcF9ibGtfd3JpdGVfdGltZSwKLQkJCQkJCSAgYWRkLT50ZW1wX2Jsa193cml0ZV90 aW1lLCBzdWItPnRlbXBfYmxrX3dyaXRlX3RpbWUpOwotfQotCi0vKiBoZWxwZXIgZnVuY3Rpb25z IGZvciBXQUwgdXNhZ2UgYWNjdW11bGF0aW9uICovCi1zdGF0aWMgdm9pZAotV2FsVXNhZ2VBZGQo V2FsVXNhZ2UgKmRzdCwgV2FsVXNhZ2UgKmFkZCkKK1dhbFVzYWdlQWRkKFdhbFVzYWdlICpkc3Qs IGNvbnN0IFdhbFVzYWdlICphZGQpCiB7CiAJZHN0LT53YWxfYnl0ZXMgKz0gYWRkLT53YWxfYnl0 ZXM7CiAJZHN0LT53YWxfcmVjb3JkcyArPSBhZGQtPndhbF9yZWNvcmRzOwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvYnVmbWdyLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdl L2J1ZmZlci9idWZtZ3IuYwppbmRleCA1OWIwOThiYTBhMC4uMWZmNTBhZWNjMTAgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1nci5jCisrKyBiL3NyYy9iYWNrZW5k L3N0b3JhZ2UvYnVmZmVyL2J1Zm1nci5jCkBAIC0xMjYxLDkgKzEyNjEsOSBAQCBQaW5CdWZmZXJG b3JCbG9jayhSZWxhdGlvbiByZWwsCiAJaWYgKHJlbCkKIAl7CiAJCS8qCi0JCSAqIFdoaWxlIHBn QnVmZmVyVXNhZ2UncyAicmVhZCIgY291bnRlciBpc24ndCBidW1wZWQgdW5sZXNzIHdlIHJlYWNo Ci0JCSAqIFdhaXRSZWFkQnVmZmVycygpIChzbywgbm90IGZvciBoaXRzLCBhbmQgbm90IGZvciBi dWZmZXJzIHRoYXQgYXJlCi0JCSAqIHplcm9lZCBpbnN0ZWFkKSwgdGhlIHBlci1yZWxhdGlvbiBz dGF0cyBhbHdheXMgY291bnQgdGhlbS4KKwkJICogV2hpbGUgdGhlIGN1cnJlbnQgYnVmZmVyIHVz YWdlICJyZWFkIiBjb3VudGVyIGlzbid0IGJ1bXBlZCB1bmxlc3MKKwkJICogd2UgcmVhY2ggV2Fp dFJlYWRCdWZmZXJzKCkgKHNvLCBub3QgZm9yIGhpdHMsIGFuZCBub3QgZm9yIGJ1ZmZlcnMKKwkJ ICogdGhhdCBhcmUgemVyb2VkIGluc3RlYWQpLCB0aGUgcGVyLXJlbGF0aW9uIHN0YXRzIGFsd2F5 cyBjb3VudCB0aGVtLgogCQkgKi8KIAkJcGdzdGF0X2NvdW50X2J1ZmZlcl9yZWFkKHJlbCk7CiAJ CWlmICgqZm91bmRQdHIpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9w Z3N0YXRfaW8uYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9pby5jCmluZGV4 IDllN2E4OGVjMGQwLi42MDQwMGYwYzgxZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMv YWN0aXZpdHkvcGdzdGF0X2lvLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdz dGF0X2lvLmMKQEAgLTExNCw5ICsxMTQsOSBAQCBwZ3N0YXRfcHJlcGFyZV9pb190aW1lKGJvb2wg dHJhY2tfaW9fZ3VjKQogICogcGdfc3RhdF9kYXRhYmFzZSBvbmx5IGNvdW50cyBibG9jayByZWFk IGFuZCB3cml0ZSB0aW1lcywgdGhlc2UgYXJlIGRvbmUgZm9yCiAgKiBJT09QX1JFQUQsIElPT1Bf V1JJVEUgYW5kIElPT1BfRVhURU5ELgogICoKLSAqIHBnQnVmZmVyVXNhZ2UgaXMgdXNlZCBmb3Ig RVhQTEFJTi4gIHBnQnVmZmVyVXNhZ2UgaGFzIHdyaXRlIGFuZCByZWFkIHN0YXRzCi0gKiBmb3Ig c2hhcmVkLCBsb2NhbCBhbmQgdGVtcG9yYXJ5IGJsb2Nrcy4gIHBnX3N0YXRfaW8gZG9lcyBub3Qg dHJhY2sgdGhlCi0gKiBhY3Rpdml0eSBvZiB0ZW1wb3JhcnkgYmxvY2tzLCBzbyB0aGVzZSBhcmUg aWdub3JlZCBoZXJlLgorICogRXhlY3V0b3IgaW5zdHJ1bWVudGF0aW9uIGlzIHVzZWQgZm9yIEVY UExBSU4uIEJ1ZmZlciB1c2FnZSB0cmFja2VkIHRoZXJlIGhhcworICogd3JpdGUgYW5kIHJlYWQg c3RhdHMgZm9yIHNoYXJlZCwgbG9jYWwgYW5kIHRlbXBvcmFyeSBibG9ja3MuIHBnX3N0YXRfaW8K KyAqIGRvZXMgbm90IHRyYWNrIHRoZSBhY3Rpdml0eSBvZiB0ZW1wb3JhcnkgYmxvY2tzLCBzbyB0 aGVzZSBhcmUgaWdub3JlZCBoZXJlLgogICovCiB2b2lkCiBwZ3N0YXRfY291bnRfaW9fb3BfdGlt ZShJT09iamVjdCBpb19vYmplY3QsIElPQ29udGV4dCBpb19jb250ZXh0LCBJT09wIGlvX29wLApk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY2Rlc2MuaCBiL3NyYy9pbmNsdWRl L2V4ZWN1dG9yL2V4ZWNkZXNjLmgKaW5kZXggZDNhNTcyNDI4NDQuLjM0MDAyOWEyMDM0IDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjZGVzYy5oCisrKyBiL3NyYy9pbmNsdWRl L2V4ZWN1dG9yL2V4ZWNkZXNjLmgKQEAgLTUxLDggKzUxLDggQEAgdHlwZWRlZiBzdHJ1Y3QgUXVl cnlEZXNjCiAJLyogVGhpcyBmaWVsZCBpcyBzZXQgYnkgRXhlY3V0ZVBsYW4gKi8KIAlib29sCQlh bHJlYWR5X2V4ZWN1dGVkOwkvKiB0cnVlIGlmIHByZXZpb3VzbHkgZXhlY3V0ZWQgKi8KIAotCS8q IFRoaXMgaXMgYWx3YXlzIHNldCBOVUxMIGJ5IHRoZSBjb3JlIHN5c3RlbSwgYnV0IHBsdWdpbnMg Y2FuIGNoYW5nZSBpdCAqLwotCXN0cnVjdCBJbnN0cnVtZW50YXRpb24gKnRvdGFsdGltZTsJLyog dG90YWwgdGltZSBzcGVudCBpbiBFeGVjdXRvclJ1biAqLworCS8qIFRoaXMgZmllbGQgaXMgc2V0 IGJ5IEV4ZWN1dG9yUnVuLCBvciBwbHVnaW5zICovCisJc3RydWN0IFF1ZXJ5SW5zdHJ1bWVudGF0 aW9uICp0b3RhbHRpbWU7IC8qIHRvdGFsIHRpbWUgc3BlbnQgaW4gRXhlY3V0b3JSdW4gKi8KIH0g UXVlcnlEZXNjOwogCiAvKiBpbiBwcXVlcnkuYyAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv ZXhlY3V0b3IvZXhlY3V0b3IuaCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmgKaW5k ZXggZDQ2YmE1OTg5NWQuLmMyMjE5OWM2ODY5IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVj dXRvci9leGVjdXRvci5oCisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmgKQEAg LTMwMCw2ICszMDAsOCBAQCBleHRlcm4gdm9pZCBFeGVjU2V0RXhlY1Byb2NOb2RlKFBsYW5TdGF0 ZSAqbm9kZSwgRXhlY1Byb2NOb2RlTXRkIGZ1bmN0aW9uKTsKIGV4dGVybiBOb2RlICpNdWx0aUV4 ZWNQcm9jTm9kZShQbGFuU3RhdGUgKm5vZGUpOwogZXh0ZXJuIHZvaWQgRXhlY0VuZE5vZGUoUGxh blN0YXRlICpub2RlKTsKIGV4dGVybiB2b2lkIEV4ZWNTaHV0ZG93bk5vZGUoUGxhblN0YXRlICpu b2RlKTsKK2V4dGVybiB2b2lkIEV4ZWNSZW1lbWJlck5vZGVJbnN0cnVtZW50YXRpb24oUGxhblN0 YXRlICpub2RlLCBRdWVyeUluc3RydW1lbnRhdGlvbiAqcGFyZW50KTsKK2V4dGVybiB2b2lkIEV4 ZWNGaW5hbGl6ZU5vZGVJbnN0cnVtZW50YXRpb24oUGxhblN0YXRlICpub2RlKTsKIGV4dGVybiB2 b2lkIEV4ZWNTZXRUdXBsZUJvdW5kKGludDY0IHR1cGxlc19uZWVkZWQsIFBsYW5TdGF0ZSAqY2hp bGRfbm9kZSk7CiAKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvaW5zdHJ1bWVu dC5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvaW5zdHJ1bWVudC5oCmluZGV4IDExMzliZTgzMzNl Li5jYzMzYjMyYWYxZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvaW5zdHJ1bWVu dC5oCisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2luc3RydW1lbnQuaApAQCAtMTMsNiArMTMs NyBAQAogI2lmbmRlZiBJTlNUUlVNRU5UX0gKICNkZWZpbmUgSU5TVFJVTUVOVF9ICiAKKyNpbmNs dWRlICJsaWIvaWxpc3QuaCIKICNpbmNsdWRlICJwb3J0YWJpbGl0eS9pbnN0cl90aW1lLmgiCiAK IApAQCAtNjgsMTAgKzY5LDIyIEBAIHR5cGVkZWYgZW51bSBJbnN0cnVtZW50T3B0aW9uCiB9IElu c3RydW1lbnRPcHRpb247CiAKIC8qCi0gKiBHZW5lcmFsIHB1cnBvc2UgaW5zdHJ1bWVudGF0aW9u IHRoYXQgY2FuIGNhcHR1cmUgdGltZSBhbmQgV0FML2J1ZmZlciB1c2FnZQorICogSW5zdHJ1bWVu dGF0aW9uIGJhc2UgY2xhc3MgZm9yIGNhcHR1cmluZyB0aW1lIGFuZCBXQUwvYnVmZmVyIHVzYWdl CiAgKgotICogSW5pdGlhbGl6ZWQgdGhyb3VnaCBJbnN0ckFsbG9jLCBmb2xsb3dlZCBieSBvbmUg b3IgbW9yZSBjYWxscyB0byBhIHBhaXIgb2YKLSAqIEluc3RyU3RhcnQvSW5zdHJTdG9wIChhY3Rp dml0eSBpcyBtZWFzdXJlZCBpbmJldHdlZW4pLgorICogSWYgdXNlZCBkaXJlY3RseToKKyAqIC0g QWxsb2NhdGUgb24gdGhlIHN0YWNrIGFuZCB6ZXJvIGluaXRpYWxpemUgdGhlIHN0cnVjdAorICog LSBDYWxsIEluc3RySW5pdE9wdGlvbnMgdG8gc2V0IGluc3RydW1lbnRhdGlvbiBvcHRpb25zCisg KiAtIENhbGwgSW5zdHJTdGFydCBiZWZvcmUgdGhlIGFjdGl2aXR5IHlvdSB3YW50IHRvIG1lYXN1 cmUKKyAqIC0gQ2FsbCBJbnN0clN0b3AgLyBJbnN0clN0b3BGaW5hbGl6ZSBhZnRlciB0aGUgYWN0 aXZpdHkgdG8gY2FwdHVyZSB0b3RhbHMKKyAqCisgKiBJbnN0clN0YXJ0L0luc3RyU3RvcCBtYXkg YmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzLiBUaGUgbGFzdCBzdG9wIGNhbGwgbXVzdAorICogYmUg dG8gSW5zdHJTdG9wRmluYWxpemUgdG8gZW5zdXJlIHBhcmVudCBzdGFjayBlbnRyaWVzIGdldCB0 aGUgYWNjdW11bGF0ZWQKKyAqIHRvdGFscy4gSWYgdGhlcmUgaXMgcmlzayBvZiB0cmFuc2FjdGlv biBhYm9ydHMgeW91IG11c3QgY2FsbAorICogSW5zdHJTdG9wRmluYWxpemUgaW4gYSBQR19UUlkv UEdfRklOQUxMWSBibG9jayB0byBhdm9pZCBjb3JydXB0aW5nIHRoZQorICogaW5zdHJ1bWVudGF0 aW9uIHN0YWNrLgorICoKKyAqIEluIGEgcXVlcnkgY29udGV4dCB1c2UgUXVlcnlJbnN0cnVtZW50 YXRpb24gaW5zdGVhZCwgd2hpY2ggaGFuZGxlcyBhYm9ydHMKKyAqIHVzaW5nIHRoZSByZXNvdXJj ZSBvd25lciBsb2dpYy4KICAqLwogdHlwZWRlZiBzdHJ1Y3QgSW5zdHJ1bWVudGF0aW9uCiB7CkBA IC04MSwxNiArOTQsNTIgQEAgdHlwZWRlZiBzdHJ1Y3QgSW5zdHJ1bWVudGF0aW9uCiAJYm9vbAkJ bmVlZF93YWx1c2FnZTsJLyogdHJ1ZSBpZiB3ZSBuZWVkIFdBTCB1c2FnZSBkYXRhICovCiAJLyog SW50ZXJuYWwgc3RhdGUga2VlcGluZzogKi8KIAlpbnN0cl90aW1lCXN0YXJ0dGltZTsJCS8qIHN0 YXJ0IHRpbWUgb2YgbGFzdCBJbnN0clN0YXJ0ICovCi0JQnVmZmVyVXNhZ2UgYnVmdXNhZ2Vfc3Rh cnQ7IC8qIGJ1ZmZlciB1c2FnZSBhdCBzdGFydCAqLwotCVdhbFVzYWdlCXdhbHVzYWdlX3N0YXJ0 OyAvKiBXQUwgdXNhZ2UgYXQgc3RhcnQgKi8KIAkvKiBBY2N1bXVsYXRlZCBzdGF0aXN0aWNzOiAq LwogCWluc3RyX3RpbWUJdG90YWw7CQkJLyogdG90YWwgcnVudGltZSAqLwogCUJ1ZmZlclVzYWdl IGJ1ZnVzYWdlOwkJLyogdG90YWwgYnVmZmVyIHVzYWdlICovCiAJV2FsVXNhZ2UJd2FsdXNhZ2U7 CQkvKiB0b3RhbCBXQUwgdXNhZ2UgKi8KIH0gSW5zdHJ1bWVudGF0aW9uOwogCisvKgorICogUXVl cnktcmVsYXRlZCBpbnN0cnVtZW50YXRpb24gdHJhY2tpbmcuCisgKgorICogVXNhZ2U6CisgKiAt IEFsbG9jYXRlIG9uIHRoZSBoZWFwIHVzaW5nIEluc3RyUXVlcnlBbGxvYyAocmVxdWlyZWQgZm9y IGFib3J0IGhhbmRsaW5nKQorICogLSBDYWxsIEluc3RyUXVlcnlTdGFydCBiZWZvcmUgdGhlIGFj dGl2aXR5IHlvdSB3YW50IHRvIG1lYXN1cmUKKyAqIC0gQ2FsbCBJbnN0clF1ZXJ5U3RvcCAvIElu c3RyUXVlcnlTdG9wRmluYWxpemUgYWZ0ZXJ3YXJkcyB0byBjYXB0dXJlIHRvdGFscworICoKKyAq IEluc3RyUXVlcnlTdGFydC9JbnN0clF1ZXJ5U3RvcCBtYXkgYmUgY2FsbGVkIG11bHRpcGxlIHRp bWVzLiBUaGUgbGFzdCBzdG9wCisgKiBjYWxsIG11c3QgYmUgdG8gSW5zdHJRdWVyeVN0b3BGaW5h bGl6ZSB0byBlbnN1cmUgcGFyZW50IHN0YWNrIGVudHJpZXMgZ2V0CisgKiB0aGUgYWNjdW11bGF0 ZWQgdG90YWxzLgorICoKKyAqIFVzZXMgcmVzb3VyY2Ugb3duZXIgbWVjaGFuaXNtIGZvciBoYW5k bGluZyBhYm9ydHMsIGFzIHN1Y2gsIHRoZSBjYWxsZXIKKyAqICptdXN0KiBub3QgZXhpdCBvdXQg b2YgdGhlIHRvcCBsZXZlbCB0cmFuc2FjdGlvbiBhZnRlciBoYXZpbmcgY2FsbGVkCisgKiBJbnN0 clF1ZXJ5U3RhcnQsIHdpdGhvdXQgZmlyc3QgY2FsbGluZyBJbnN0clF1ZXJ5U3RvcC4gSW4gdGhl IGNhc2Ugb2YgYQorICogdHJhbnNhY3Rpb24gYWJvcnQsIGxvZ2ljIGVxdWl2YWxlbnQgdG8gSW5z dHJRdWVyeVN0b3Agd2lsbCBiZSBjYWxsZWQKKyAqIGF1dG9tYXRpY2FsbHkuCisgKi8KK3N0cnVj dCBSZXNvdXJjZU93bmVyRGF0YTsKK3R5cGVkZWYgc3RydWN0IFF1ZXJ5SW5zdHJ1bWVudGF0aW9u Cit7CisJSW5zdHJ1bWVudGF0aW9uIGluc3RyOworCisJLyogUmVzb3VyY2Ugb3duZXIgdXNlZCBm b3IgY2xlYW51cCBmb3IgYWJvcnRzIGJldHdlZW4gSW5zdHJTdGFydC9JbnN0clN0b3AgKi8KKwlz dHJ1Y3QgUmVzb3VyY2VPd25lckRhdGEgKm93bmVyOworCisJLyoKKwkgKiBOb2RlSW5zdHJ1bWVu dGF0aW9uIGNoaWxkIGVudHJpZXMgdGhhdCBuZWVkIHRvIGJlIGNsZWFuZWQgdXAgb24gYWJvcnQs CisJICogc2luY2UgdGhleSBhcmUgbm90IHJlZ2lzdGVyZWQgYXMgYSByZXNvdXJjZSBvd25lciB0 aGVtc2VsdmVzLgorCSAqLworCXNsaXN0X2hlYWQJdW5maW5hbGl6ZWRfY2hpbGRyZW47CS8qIGhl YWQgb2YgdW5maW5hbGl6ZWQgY2hpbGRyZW4gbGlzdCAqLworfSBRdWVyeUluc3RydW1lbnRhdGlv bjsKKwogLyoKICAqIFNwZWNpYWxpemVkIGluc3RydW1lbnRhdGlvbiBmb3IgcGVyLW5vZGUgZXhl Y3V0aW9uIHN0YXRpc3RpY3MKKyAqCisgKiBSZWxpZXMgb24gYW4gb3V0ZXIgUXVlcnlJbnN0cnVt ZW50YXRpb24gaGF2aW5nIGJlZW4gc2V0IHVwIHRvIGhhbmRsZSB0aGUKKyAqIHN0YWNrIHVzZWQg Zm9yIFdBTC9idWZmZXIgdXNhZ2Ugc3RhdGlzdGljcywgYW5kIHJlbGllcyBvbiBpdCBmb3IgbWFu YWdpbmcKKyAqIGFib3J0cy4gU29sZWx5IGludGVuZGVkIGZvciB0aGUgZXhlY3V0b3IgYW5kIGFu eW9uZSByZXBvcnRpbmcgYWJvdXQgaXRzCisgKiBhY3Rpdml0aWVzIChlLmcuIEVYUExBSU4gQU5B TFlaRSkuCiAgKi8KIHR5cGVkZWYgc3RydWN0IE5vZGVJbnN0cnVtZW50YXRpb24KIHsKQEAgLTEw OSw4ICsxNTgsMTUgQEAgdHlwZWRlZiBzdHJ1Y3QgTm9kZUluc3RydW1lbnRhdGlvbgogCWRvdWJs ZQkJbmxvb3BzOwkJCS8qICMgb2YgcnVuIGN5Y2xlcyBmb3IgdGhpcyBub2RlICovCiAJZG91Ymxl CQluZmlsdGVyZWQxOwkJLyogIyBvZiB0dXBsZXMgcmVtb3ZlZCBieSBzY2FucXVhbCBvciBqb2lu cXVhbCAqLwogCWRvdWJsZQkJbmZpbHRlcmVkMjsJCS8qICMgb2YgdHVwbGVzIHJlbW92ZWQgYnkg Im90aGVyIiBxdWFscyAqLworCisJLyogQWJvcnQgaGFuZGxpbmcgKi8KKwlzbGlzdF9ub2RlCXVu ZmluYWxpemVkX25vZGU7CS8qIG5vZGUgaW4gcGFyZW50J3MgdW5maW5hbGl6ZWQgbGlzdCAqLwog fSBOb2RlSW5zdHJ1bWVudGF0aW9uOwogCisvKgorICogQ2FyZSBtdXN0IGJlIHRha2VuIHdpdGgg YW55IHBvaW50ZXJzIGNvbnRhaW5lZCB3aXRoaW4gdGhpcyBzdHJ1Y3QsIGFzIHRoaXMKKyAqIGdl dHMgY29waWVkIGFjcm9zcyBwcm9jZXNzZXMgZHVyaW5nIHBhcmFsbGVsIHF1ZXJ5IGV4ZWN1dGlv bi4KKyAqLwogdHlwZWRlZiBzdHJ1Y3QgV29ya2VyTm9kZUluc3RydW1lbnRhdGlvbgogewogCWlu dAkJCW51bV93b3JrZXJzOwkvKiAjIG9mIHN0cnVjdHVyZXMgdGhhdCBmb2xsb3cgKi8KQEAgLTEy NCwxOSArMTgwLDExMCBAQCB0eXBlZGVmIHN0cnVjdCBUcmlnZ2VySW5zdHJ1bWVudGF0aW9uCiAJ CQkJCQkJCSAqIHdhcyBmaXJlZCAqLwogfSBUcmlnZ2VySW5zdHJ1bWVudGF0aW9uOwogCi1leHRl cm4gUEdETExJTVBPUlQgQnVmZmVyVXNhZ2UgcGdCdWZmZXJVc2FnZTsKKy8qCisgKiBEeW5hbWlj IGFycmF5LWJhc2VkIHN0YWNrIGZvciB0cmFja2luZyBjdXJyZW50IFdBTC9idWZmZXIgdXNhZ2Ug Y29udGV4dC4KKyAqCisgKiBXaGVuIHRoZSBzdGFjayBpcyBlbXB0eSwgJ2N1cnJlbnQnIHBvaW50 cyB0byBpbnN0cl90b3Agd2hpY2ggYWNjdW11bGF0ZXMKKyAqIHNlc3Npb24tbGV2ZWwgdG90YWxz LgorICovCit0eXBlZGVmIHN0cnVjdCBJbnN0clN0YWNrU3RhdGUKK3sKKwlpbnQJCQlzdGFja19z cGFjZTsJLyogYWxsb2NhdGVkIGNhcGFjaXR5IG9mIGVudHJpZXMgYXJyYXkgKi8KKwlpbnQJCQlz dGFja19zaXplOwkJLyogY3VycmVudCBudW1iZXIgb2YgZW50cmllcyAqLworCisJSW5zdHJ1bWVu dGF0aW9uICoqZW50cmllczsJLyogZHluYW1pYyBhcnJheSBvZiBwb2ludGVycyAqLworCUluc3Ry dW1lbnRhdGlvbiAqY3VycmVudDsJLyogdG9wIG9mIHN0YWNrLCBvciAmaW5zdHJfdG9wIHdoZW4g ZW1wdHkgKi8KK30gSW5zdHJTdGFja1N0YXRlOworCiBleHRlcm4gUEdETExJTVBPUlQgV2FsVXNh Z2UgcGdXYWxVc2FnZTsKIAotZXh0ZXJuIEluc3RydW1lbnRhdGlvbiAqSW5zdHJBbGxvYyhpbnQg aW5zdHJ1bWVudF9vcHRpb25zKTsKKy8qCisgKiBUaGUgdG9wIGluc3RydW1lbnRhdGlvbiByZXBy ZXNlbnRzIGEgcnVubmluZyB0b3RhbCBvZiB0aGUgY3VycmVudCBiYWNrZW5kCisgKiBXQUwvYnVm ZmVyIHVzYWdlIGluZm9ybWF0aW9uLiBUaGlzIHdpbGwgbm90IGJlIHVwZGF0ZWQgaW1tZWRpYXRl bHksIGJ1dAorICogcmF0aGVyIHdoZW4gdGhlIGN1cnJlbnQgc3RhY2sgZW50cnkgZ2V0cyBhY2N1 bXVsYXRlZCB3aGljaCB0eXBpY2FsbHkgaGFwcGVucworICogYXQgcXVlcnkgZW5kLgorICoKKyAq IENhcmUgbXVzdCBiZSB0YWtlbiB3aGVuIHV0aWxpemluZyB0aGlzIGluIHRoZSBwYXJhbGxlbCB3 b3JrZXIgY29udGV4dDoKKyAqIFBhcmFsbGVsIHdvcmtlcnMgd2lsbCByZXBvcnQgYmFjayB0aGVp ciBpbnN0cnVtZW50YXRpb24gdG8gdGhlIGNhbGxlciwKKyAqIGFuZCB0aGlzIGdldHMgYWRkZWQg dG8gdGhlIGNhbGxlcidzIHN0YWNrLiBJZiB0aGlzIHdlcmUgdG8gYmUgdXNlZCBpbiB0aGUKKyAq IHNoYXJlZCBtZW1vcnkgc3RhdHMgaW5mcmFzdHJ1Y3R1cmUgaXQgd291bGQgbmVlZCB0byBiZSBz a2lwcGVkIG9uIHBhcmFsbGVsCisgKiB3b3JrZXJzIHRvIGF2b2lkIGRvdWJsZSBjb3VudGluZy4K KyAqLworZXh0ZXJuIFBHRExMSU1QT1JUIEluc3RydW1lbnRhdGlvbiBpbnN0cl90b3A7CisKKy8q CisgKiBUaGUgaW5zdHJ1bWVudGF0aW9uIHN0YWNrIHN0YXRlLiBUaGUgJ2N1cnJlbnQnIGZpZWxk IHBvaW50cyB0byB0aGUKKyAqIGN1cnJlbnRseSBhY3RpdmUgc3RhY2sgZW50cnkgdGhhdCBpcyBn ZXR0aW5nIHVwZGF0ZWQgYXMgYWN0aXZpdHkgaGFwcGVucywKKyAqIGFuZCB3aWxsIGJlIGFjY3Vt dWxhdGVkIHRvIHBhcmVudCBzdGFja3Mgd2hlbiBpdCBnZXRzIGZpbmFsaXplZCBieQorICogSW5z dHJTdG9wIChmb3Igbm9uLWV4ZWN1dG9yIHVzZSBjYXNlcyksIEV4ZWNGaW5hbGl6ZU5vZGVJbnN0 cnVtZW50YXRpb24KKyAqIChleGVjdXRvciBmaW5pc2gpIG9yIFJlc093bmVyUmVsZWFzZUluc3Ry dW1lbnRhdGlvbiBvbiBhYm9ydC4KKyAqLworZXh0ZXJuIFBHRExMSU1QT1JUIEluc3RyU3RhY2tT dGF0ZSBpbnN0cl9zdGFjazsKKworZXh0ZXJuIHZvaWQgSW5zdHJTdGFja0dyb3codm9pZCk7CisK Ky8qCisgKiBQdXNoZXMgdGhlIHN0YWNrIHNvIHRoYXQgYWxsIFdBTC9idWZmZXIgdXNhZ2UgdXBk YXRlcyBnbyB0byB0aGUgcGFzc2VkIGluCisgKiBpbnN0cnVtZW50YXRpb24gZW50cnkuCisgKgor ICogQW55IGNhbGxlciB1c2luZyB0aGlzIGRpcmVjdGx5IG11c3QgbWFuYWdlIHRoZSBwYXNzZWQg aW4gZW50cnkgYW5kIGNhbGwKKyAqIEluc3RyUG9wU3RhY2sgb24gaXRzIG93biBhZ2FpbiwgdHlw aWNhbGx5IGJ5IHVzaW5nIGEgUEdfRklOQUxMWSBibG9jayB0bworICogZW5zdXJlIHRoZSBzdGFj ayBnZXRzIHJlc2V0IHZpYSBJbnN0clBvcFN0YWNrIG9uIGFib3J0LiBVc2UgSW5zdHJTdGFydAor ICogaW5zdGVhZCB3aGVuIHlvdSB3YW50IGF1dG9tYXRpYyBoYW5kbGluZyBvZiBhYm9ydCBjYXNl cyB1c2luZyB0aGUgcmVzb3VyY2UKKyAqIG93bmVyIGluZnJhc3RydWN0dXJlLgorICovCitzdGF0 aWMgaW5saW5lIHZvaWQKK0luc3RyUHVzaFN0YWNrKEluc3RydW1lbnRhdGlvbiAqaW5zdHIpCit7 CisJaWYgKHVubGlrZWx5KGluc3RyX3N0YWNrLnN0YWNrX3NpemUgPT0gaW5zdHJfc3RhY2suc3Rh Y2tfc3BhY2UpKQorCQlJbnN0clN0YWNrR3JvdygpOworCisJaW5zdHJfc3RhY2suZW50cmllc1tp bnN0cl9zdGFjay5zdGFja19zaXplKytdID0gaW5zdHI7CisJaW5zdHJfc3RhY2suY3VycmVudCA9 IGluc3RyOworfQorCisvKgorICogUG9wcyB0aGUgc3RhY2sgZW50cnkgYmFjayB0byB0aGUgcHJl dmlvdXMgb25lIHRoYXQgd2FzIGVmZmVjdGl2ZSBhdAorICogSW5zdHJQdXNoU3RhY2suCisgKgor ICogQ2FsbGVycyBtdXN0IGVuc3VyZSB0aGF0IG5vIGludGVybWVkaWF0ZSBzdGFjayBlbnRyaWVz IGFyZSBza2lwcGVkLCB0bworICogaGFuZGxlIGFib3J0cyBjb3JyZWN0bHkuIElmIHlvdSdyZSB0 aGlua2luZyBvZiBjYWxsaW5nIHRoaXMgaW4gYSBQR19GSU5BTExZCisgKiBibG9jaywgaW5zdGVh ZCBjYWxsIEluc3RyUG9wQW5kRmluYWxpemVTdGFjayB3aGljaCBjYW4gc2tpcCBpbnRlcm1lZGlh dGUKKyAqIHN0YWNrIGVudHJpZXMsIG9yIGluc3RlYWQgdXNlIEluc3RyU3RhcnQvSW5zdHJTdG9w LgorICovCitzdGF0aWMgaW5saW5lIHZvaWQKK0luc3RyUG9wU3RhY2soSW5zdHJ1bWVudGF0aW9u ICppbnN0cikKK3sKKwlBc3NlcnQoaW5zdHJfc3RhY2suc3RhY2tfc2l6ZSA+IDApOworCUFzc2Vy dChpbnN0cl9zdGFjay5lbnRyaWVzW2luc3RyX3N0YWNrLnN0YWNrX3NpemUgLSAxXSA9PSBpbnN0 cik7CisJaW5zdHJfc3RhY2suc3RhY2tfc2l6ZS0tOworCWluc3RyX3N0YWNrLmN1cnJlbnQgPSBp bnN0cl9zdGFjay5zdGFja19zaXplID4gMAorCQk/IGluc3RyX3N0YWNrLmVudHJpZXNbaW5zdHJf c3RhY2suc3RhY2tfc2l6ZSAtIDFdCisJCTogJmluc3RyX3RvcDsKK30KKwogZXh0ZXJuIHZvaWQg SW5zdHJJbml0T3B0aW9ucyhJbnN0cnVtZW50YXRpb24gKmluc3RyLCBpbnQgaW5zdHJ1bWVudF9v cHRpb25zKTsKIGV4dGVybiB2b2lkIEluc3RyU3RhcnQoSW5zdHJ1bWVudGF0aW9uICppbnN0cik7 CiBleHRlcm4gdm9pZCBJbnN0clN0b3AoSW5zdHJ1bWVudGF0aW9uICppbnN0cik7CitleHRlcm4g dm9pZCBJbnN0clN0b3BGaW5hbGl6ZShJbnN0cnVtZW50YXRpb24gKmluc3RyKTsKK2V4dGVybiB2 b2lkIEluc3RyQWNjdW0oSW5zdHJ1bWVudGF0aW9uICpkc3QsIEluc3RydW1lbnRhdGlvbiAqYWRk KTsKKworZXh0ZXJuIFF1ZXJ5SW5zdHJ1bWVudGF0aW9uICpJbnN0clF1ZXJ5QWxsb2MoaW50IGlu c3RydW1lbnRfb3B0aW9ucyk7CitleHRlcm4gdm9pZCBJbnN0clF1ZXJ5U3RhcnQoUXVlcnlJbnN0 cnVtZW50YXRpb24gKmluc3RyKTsKK2V4dGVybiB2b2lkIEluc3RyUXVlcnlTdG9wKFF1ZXJ5SW5z dHJ1bWVudGF0aW9uICppbnN0cik7CitleHRlcm4gUXVlcnlJbnN0cnVtZW50YXRpb24gKkluc3Ry UXVlcnlTdG9wRmluYWxpemUoUXVlcnlJbnN0cnVtZW50YXRpb24gKmluc3RyKTsKK2V4dGVybiB2 b2lkIEluc3RyUXVlcnlSZW1lbWJlck5vZGUoUXVlcnlJbnN0cnVtZW50YXRpb24gKnBhcmVudCwg Tm9kZUluc3RydW1lbnRhdGlvbiAqaW5zdHIpOworCitwZ19ub2Rpc2NhcmQgZXh0ZXJuIFF1ZXJ5 SW5zdHJ1bWVudGF0aW9uICpJbnN0clN0YXJ0UGFyYWxsZWxRdWVyeSh2b2lkKTsKK2V4dGVybiB2 b2lkIEluc3RyRW5kUGFyYWxsZWxRdWVyeShRdWVyeUluc3RydW1lbnRhdGlvbiAqcWluc3RyLCBC dWZmZXJVc2FnZSAqYnVmdXNhZ2UsIFdhbFVzYWdlICp3YWx1c2FnZSk7CitleHRlcm4gdm9pZCBJ bnN0ckFjY3VtUGFyYWxsZWxRdWVyeShCdWZmZXJVc2FnZSAqYnVmdXNhZ2UsIFdhbFVzYWdlICp3 YWx1c2FnZSk7CiAKIGV4dGVybiBOb2RlSW5zdHJ1bWVudGF0aW9uICpJbnN0ckFsbG9jTm9kZShp bnQgaW5zdHJ1bWVudF9vcHRpb25zLAogCQkJCQkJCQkJCSAgIGJvb2wgYXN5bmNfbW9kZSk7CiBl eHRlcm4gdm9pZCBJbnN0ckluaXROb2RlKE5vZGVJbnN0cnVtZW50YXRpb24gKmluc3RyLCBpbnQg aW5zdHJ1bWVudF9vcHRpb25zKTsKIGV4dGVybiB2b2lkIEluc3RyU3RhcnROb2RlKE5vZGVJbnN0 cnVtZW50YXRpb24gKmluc3RyKTsKIGV4dGVybiB2b2lkIEluc3RyU3RvcE5vZGUoTm9kZUluc3Ry dW1lbnRhdGlvbiAqaW5zdHIsIGRvdWJsZSBuVHVwbGVzKTsKK2V4dGVybiBOb2RlSW5zdHJ1bWVu dGF0aW9uICpJbnN0ckZpbmFsaXplTm9kZShOb2RlSW5zdHJ1bWVudGF0aW9uICppbnN0ciwgSW5z dHJ1bWVudGF0aW9uICpwYXJlbnQpOwogZXh0ZXJuIHZvaWQgSW5zdHJVcGRhdGVUdXBsZUNvdW50 KE5vZGVJbnN0cnVtZW50YXRpb24gKmluc3RyLCBkb3VibGUgblR1cGxlcyk7CiBleHRlcm4gdm9p ZCBJbnN0ckVuZExvb3AoTm9kZUluc3RydW1lbnRhdGlvbiAqaW5zdHIpOwogZXh0ZXJuIHZvaWQg SW5zdHJBZ2dOb2RlKE5vZGVJbnN0cnVtZW50YXRpb24gKmRzdCwgTm9kZUluc3RydW1lbnRhdGlv biAqYWRkKTsKQEAgLTE0NSwzMSArMjkyLDMxIEBAIGV4dGVybiBUcmlnZ2VySW5zdHJ1bWVudGF0 aW9uICpJbnN0ckFsbG9jVHJpZ2dlcihpbnQgbiwgaW50IGluc3RydW1lbnRfb3B0aW9ucyk7CiBl eHRlcm4gdm9pZCBJbnN0clN0YXJ0VHJpZ2dlcihUcmlnZ2VySW5zdHJ1bWVudGF0aW9uICp0Z2lu c3RyKTsKIGV4dGVybiB2b2lkIEluc3RyU3RvcFRyaWdnZXIoVHJpZ2dlckluc3RydW1lbnRhdGlv biAqdGdpbnN0ciwgaW50IGZpcmluZ3MpOwogCi1leHRlcm4gdm9pZCBJbnN0clN0YXJ0UGFyYWxs ZWxRdWVyeSh2b2lkKTsKLWV4dGVybiB2b2lkIEluc3RyRW5kUGFyYWxsZWxRdWVyeShCdWZmZXJV c2FnZSAqYnVmdXNhZ2UsIFdhbFVzYWdlICp3YWx1c2FnZSk7Ci1leHRlcm4gdm9pZCBJbnN0ckFj Y3VtUGFyYWxsZWxRdWVyeShCdWZmZXJVc2FnZSAqYnVmdXNhZ2UsIFdhbFVzYWdlICp3YWx1c2Fn ZSk7Ci1leHRlcm4gdm9pZCBCdWZmZXJVc2FnZUFjY3VtRGlmZihCdWZmZXJVc2FnZSAqZHN0LAot CQkJCQkJCQkgY29uc3QgQnVmZmVyVXNhZ2UgKmFkZCwgY29uc3QgQnVmZmVyVXNhZ2UgKnN1Yik7 CitleHRlcm4gdm9pZCBCdWZmZXJVc2FnZUFkZChCdWZmZXJVc2FnZSAqZHN0LCBjb25zdCBCdWZm ZXJVc2FnZSAqYWRkKTsKK2V4dGVybiB2b2lkIFdhbFVzYWdlQWRkKFdhbFVzYWdlICpkc3QsIGNv bnN0IFdhbFVzYWdlICphZGQpOwogZXh0ZXJuIHZvaWQgV2FsVXNhZ2VBY2N1bURpZmYoV2FsVXNh Z2UgKmRzdCwgY29uc3QgV2FsVXNhZ2UgKmFkZCwKIAkJCQkJCQkgIGNvbnN0IFdhbFVzYWdlICpz dWIpOwogCiAjZGVmaW5lIElOU1RSX0JVRlVTQUdFX0lOQ1IoZmxkKSBkbyB7IFwKLQkJcGdCdWZm ZXJVc2FnZS5mbGQrKzsgXAorCQlpbnN0cl9zdGFjay5jdXJyZW50LT5idWZ1c2FnZS5mbGQrKzsg XAogCX0gd2hpbGUoMCkKICNkZWZpbmUgSU5TVFJfQlVGVVNBR0VfQUREKGZsZCx2YWwpIGRvIHsg XAotCQlwZ0J1ZmZlclVzYWdlLmZsZCArPSB2YWw7IFwKKwkJaW5zdHJfc3RhY2suY3VycmVudC0+ YnVmdXNhZ2UuZmxkICs9IHZhbDsgXAogCX0gd2hpbGUoMCkKICNkZWZpbmUgSU5TVFJfQlVGVVNB R0VfVElNRV9BREQoZmxkLHZhbCkgZG8geyBcCi0JSU5TVFJfVElNRV9BREQocGdCdWZmZXJVc2Fn ZS5mbGQsIHZhbCk7IFwKKwlJTlNUUl9USU1FX0FERChpbnN0cl9zdGFjay5jdXJyZW50LT5idWZ1 c2FnZS5mbGQsIHZhbCk7IFwKIAl9IHdoaWxlICgwKQogI2RlZmluZSBJTlNUUl9CVUZVU0FHRV9U SU1FX0FDQ1VNX0RJRkYoZmxkLGVuZHZhbCxzdGFydHZhbCkgZG8geyBcCi0JSU5TVFJfVElNRV9B Q0NVTV9ESUZGKHBnQnVmZmVyVXNhZ2UuZmxkLCBlbmR2YWwsIHN0YXJ0dmFsKTsgXAorCUlOU1RS X1RJTUVfQUNDVU1fRElGRihpbnN0cl9zdGFjay5jdXJyZW50LT5idWZ1c2FnZS5mbGQsIGVuZHZh bCwgc3RhcnR2YWwpOyBcCiAJfSB3aGlsZSAoMCkKKwogI2RlZmluZSBJTlNUUl9XQUxVU0FHRV9J TkNSKGZsZCkgZG8geyBcCiAJCXBnV2FsVXNhZ2UuZmxkKys7IFwKKwkJaW5zdHJfc3RhY2suY3Vy cmVudC0+d2FsdXNhZ2UuZmxkKys7IFwKIAl9IHdoaWxlKDApCiAjZGVmaW5lIElOU1RSX1dBTFVT QUdFX0FERChmbGQsdmFsKSBkbyB7IFwKIAkJcGdXYWxVc2FnZS5mbGQgKz0gdmFsOyBcCisJCWlu c3RyX3N0YWNrLmN1cnJlbnQtPndhbHVzYWdlLmZsZCArPSB2YWw7IFwKIAl9IHdoaWxlKDApCiAK ICNlbmRpZgkJCQkJCQkvKiBJTlNUUlVNRU5UX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L3V0aWxzL3Jlc293bmVyLmggYi9zcmMvaW5jbHVkZS91dGlscy9yZXNvd25lci5oCmluZGV4IGVi NjAzM2I0ZmRiLi41NDYzYmM5MjFmMCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvcmVz b3duZXIuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9yZXNvd25lci5oCkBAIC03NSw2ICs3NSw3 IEBAIHR5cGVkZWYgdWludDMyIFJlc291cmNlUmVsZWFzZVByaW9yaXR5OwogI2RlZmluZSBSRUxF QVNFX1BSSU9fU05BUFNIT1RfUkVGUwkJCTUwMAogI2RlZmluZSBSRUxFQVNFX1BSSU9fRklMRVMJ CQkJCTYwMAogI2RlZmluZSBSRUxFQVNFX1BSSU9fV0FJVEVWRU5UU0VUUwkJCTcwMAorI2RlZmlu ZSBSRUxFQVNFX1BSSU9fSU5TVFJVTUVOVEFUSU9OCQk4MDAKIAogLyogMCBpcyBjb25zaWRlcmVk IGludmFsaWQgKi8KICNkZWZpbmUgUkVMRUFTRV9QUklPX0ZJUlNUCQkJCQkxCmRpZmYgLS1naXQg YS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCBiL3NyYy90b29scy9wZ2luZGVudC90 eXBlZGVmcy5saXN0CmluZGV4IDdkYzAwNzNhYjY4Li41NTgwYTA4MDIxMCAxMDA2NDQKLS0tIGEv c3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50 L3R5cGVkZWZzLmxpc3QKQEAgLTEzMjAsNiArMTMyMCw3IEBAIEluamVjdGlvblBvaW50U2hhcmVk U3RhdGUKIEluamVjdGlvblBvaW50c0N0bAogSW5saW5lQ29kZUJsb2NrCiBJbnNlcnRTdG10CitJ bnN0clN0YWNrU3RhdGUKIEluc3RydW1lbnRhdGlvbgogSW50MTI4QWdnU3RhdGUKIEludDhUcmFu c1R5cGVEYXRhCkBAIC0yNDI4LDYgKzI0MjksNyBAQCBRdWVyeUNvbXBsZXRpb24KIFF1ZXJ5RGVz YwogUXVlcnlFbnZpcm9ubWVudAogUXVlcnlJbmZvCitRdWVyeUluc3RydW1lbnRhdGlvbgogUXVl cnlJdGVtCiBRdWVyeUl0ZW1UeXBlCiBRdWVyeU1vZGUKLS0gCjIuNDcuMQoK --00000000000002247a064c7bb7b8 Content-Type: application/octet-stream; name="v7-0006-instrumentation-Optimize-ExecProcNodeInstr-instru.patch" Content-Disposition: attachment; filename="v7-0006-instrumentation-Optimize-ExecProcNodeInstr-instru.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmh8zh0o5 RnJvbSBkZGMwOGI2NTJjZDk1YmRkMmJkMTBjNGZiM2ZjYTNkMjkyZTJjNjI1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpEYXRlOiBT YXQsIDcgTWFyIDIwMjYgMTc6NTI6MjQgLTA4MDAKU3ViamVjdDogW1BBVENIIHY3IDYvOF0gaW5z dHJ1bWVudGF0aW9uOiBPcHRpbWl6ZSBFeGVjUHJvY05vZGVJbnN0cgogaW5zdHJ1Y3Rpb25zIGJ5 IGlubGluaW5nCgpGb3IgbW9zdCBxdWVyaWVzLCB0aGUgYnVsayBvZiB0aGUgb3ZlcmhlYWQgb2Yg RVhQTEFJTiBBTkFMWVpFIGhhcHBlbnMgaW4KRXhlY1Byb2NOb2RlSW5zdHIgd2hlbiBzdGFydGlu Zy9zdG9wcGluZyBpbnN0cnVtZW50YXRpb24gZm9yIHRoYXQgbm9kZS4KClByZXZpb3VzbHkgZWFj aCBFeGVjUHJvY05vZGVJbnN0ciB3b3VsZCBjaGVjayB3aGljaCBpbnN0cnVtZW50YXRpb24Kb3B0 aW9ucyBhcmUgYWN0aXZlIGluIHRoZSBJbnN0clN0YXJ0Tm9kZS9JbnN0clN0b3BOb2RlIGNhbGxz LCBhbmQgZG8gdGhlCmNvcnJlc3BvbmRpbmcgd29yayAodGltZXJzLCBpbnN0cnVtZW50YXRpb24g c3RhY2ssIGV0Yy4pLiBUaGVzZQpjb25kaXRpb25hbHMgYmVpbmcgY2hlY2tlZCBmb3IgZWFjaCB0 dXBsZSBiZWluZyBlbWl0dGVkIGFkZCB1cCwgYW5kIGNhdXNlCm5vbi1vcHRpbWFsIHNldCBvZiBp bnN0cnVjdGlvbnMgdG8gYmUgZ2VuZXJhdGVkIGJ5IHRoZSBjb21waWxlci4KCkJlY2F1c2Ugd2Ug YWxyZWFkeSBoYXZlIGFuIGV4aXN0aW5nIG1lY2hhbmlzbSB0byBzcGVjaWZ5IGEgZnVuY3Rpb24K cG9pbnRlciB3aGVuIGluc3RydW1lbnRhdGlvbiBpcyBlbmFibGVkLCB3ZSBjYW4gaW5zdGVhZCBj cmVhdGUgc3BlY2lhbGl6ZWQKZnVuY3Rpb25zIHRoYXQgYXJlIHRhaWxvcmVkIHRvIHRoZSBpbnN0 cnVtZW50YXRpb24gb3B0aW9ucyBlbmFibGVkLCBhbmQKYXZvaWQgY29uZGl0aW9uYWxzIG9uIHN1 YnNlcXVlbnQgRXhlY1Byb2NOb2RlSW5zdHIgY2FsbHMuIFRoaXMgcmVzdWx0cyBpbgp0aGUgb3Zl cmhlYWQgZm9yIEVYUExBSU4gKEFOQUxZWkUsIFRJTUlORyBPRkYsIEJVRkZFUlMgT0ZGKSBmb3Ig YSBzdHJlc3MKdGVzdCB3aXRoIGEgbGFyZ2UgQ09VTlQoKikgdGhhdCBkb2VzIG1hbnkgRXhlY1By b2NOb2RlIGNhbGxzIGZyb20gfiAyMCUgb24KdG9wIG9mIGFjdHVhbCBydW50aW1lIHRvIH4gMyUu IFdoZW4gdXNpbmcgQlVGRkVSUyBPTiB0aGUgc2FtZSBxdWVyeSBnb2VzCmZyb20gfiAyMCUgdG8g fiAxMCUgb24gdG9wIG9mIGFjdHVhbCBydW50aW1lLgoKQXV0aG9yOiBMdWthcyBGaXR0bCA8bHVr YXNAZml0dGwuY29tPgpSZXZpZXdlZC1ieToKRGlzY3Vzc2lvbjoKLS0tCiBzcmMvYmFja2VuZC9l eGVjdXRvci9leGVjUHJvY25vZGUuYyB8ICAyMiArLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2lu c3RydW1lbnQuYyAgIHwgMjI0ICsrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0KIHNyYy9pbmNs dWRlL2V4ZWN1dG9yL2luc3RydW1lbnQuaCAgIHwgICA1ICsKIDMgZmlsZXMgY2hhbmdlZCwgMTc0 IGluc2VydGlvbnMoKyksIDc3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNQcm9jbm9kZS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1Byb2Nu b2RlLmMKaW5kZXggYzc4OGI1YjAwZjkuLjZhNzRjYTUxNmFlIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9leGVjdXRvci9leGVjUHJvY25vZGUuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9l eGVjUHJvY25vZGUuYwpAQCAtMTIwLDcgKzEyMCw2IEBACiAjaW5jbHVkZSAibm9kZXMvbm9kZUZ1 bmNzLmgiCiAKIHN0YXRpYyBUdXBsZVRhYmxlU2xvdCAqRXhlY1Byb2NOb2RlRmlyc3QoUGxhblN0 YXRlICpub2RlKTsKLXN0YXRpYyBUdXBsZVRhYmxlU2xvdCAqRXhlY1Byb2NOb2RlSW5zdHIoUGxh blN0YXRlICpub2RlKTsKIHN0YXRpYyBib29sIEV4ZWNTaHV0ZG93bk5vZGVfd2Fsa2VyKFBsYW5T dGF0ZSAqbm9kZSwgdm9pZCAqY29udGV4dCk7CiBzdGF0aWMgYm9vbCBFeGVjUmVtZW1iZXJOb2Rl SW5zdHJ1bWVudGF0aW9uX3dhbGtlcihQbGFuU3RhdGUgKm5vZGUsIHZvaWQgKmNvbnRleHQpOwog c3RhdGljIGJvb2wgRXhlY0ZpbmFsaXplTm9kZUluc3RydW1lbnRhdGlvbl93YWxrZXIoUGxhblN0 YXRlICpub2RlLCB2b2lkICpjb250ZXh0KTsKQEAgLTQ2NCw3ICs0NjMsNyBAQCBFeGVjUHJvY05v ZGVGaXJzdChQbGFuU3RhdGUgKm5vZGUpCiAJICogaGF2ZSBFeGVjUHJvY05vZGUoKSBkaXJlY3Rs eSBjYWxsIHRoZSByZWxldmFudCBmdW5jdGlvbiBmcm9tIG5vdyBvbi4KIAkgKi8KIAlpZiAobm9k ZS0+aW5zdHJ1bWVudCkKLQkJbm9kZS0+RXhlY1Byb2NOb2RlID0gRXhlY1Byb2NOb2RlSW5zdHI7 CisJCW5vZGUtPkV4ZWNQcm9jTm9kZSA9IEluc3RyTm9kZVNldHVwRXhlY1Byb2NOb2RlKG5vZGUt Pmluc3RydW1lbnQpOwogCWVsc2UKIAkJbm9kZS0+RXhlY1Byb2NOb2RlID0gbm9kZS0+RXhlY1By b2NOb2RlUmVhbDsKIApAQCAtNDcyLDI1ICs0NzEsNiBAQCBFeGVjUHJvY05vZGVGaXJzdChQbGFu U3RhdGUgKm5vZGUpCiB9CiAKIAotLyoKLSAqIEV4ZWNQcm9jTm9kZSB3cmFwcGVyIHRoYXQgcGVy Zm9ybXMgaW5zdHJ1bWVudGF0aW9uIGNhbGxzLiAgQnkga2VlcGluZwotICogdGhpcyBhIHNlcGFy YXRlIGZ1bmN0aW9uLCB3ZSBhdm9pZCBvdmVyaGVhZCBpbiB0aGUgbm9ybWFsIGNhc2Ugd2hlcmUK LSAqIG5vIGluc3RydW1lbnRhdGlvbiBpcyB3YW50ZWQuCi0gKi8KLXN0YXRpYyBUdXBsZVRhYmxl U2xvdCAqCi1FeGVjUHJvY05vZGVJbnN0cihQbGFuU3RhdGUgKm5vZGUpCi17Ci0JVHVwbGVUYWJs ZVNsb3QgKnJlc3VsdDsKLQotCUluc3RyU3RhcnROb2RlKG5vZGUtPmluc3RydW1lbnQpOwotCi0J cmVzdWx0ID0gbm9kZS0+RXhlY1Byb2NOb2RlUmVhbChub2RlKTsKLQotCUluc3RyU3RvcE5vZGUo bm9kZS0+aW5zdHJ1bWVudCwgVHVwSXNOdWxsKHJlc3VsdCkgPyAwLjAgOiAxLjApOwotCi0JcmV0 dXJuIHJlc3VsdDsKLX0KLQogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgkJTXVsdGlFeGVjUHJvY05vZGUKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2luc3RydW1lbnQuYyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2luc3RydW1lbnQuYwppbmRleCAxYWZhNWU5NDk2MC4uNjAyZmFjZWM0MDEgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2luc3RydW1lbnQuYworKysgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9pbnN0cnVtZW50LmMKQEAgLTQ5LDI5ICs0OSwyMCBAQCBJbnN0ckluaXRP cHRpb25zKEluc3RydW1lbnRhdGlvbiAqaW5zdHIsIGludCBpbnN0cnVtZW50X29wdGlvbnMpCiAJ aW5zdHItPm5lZWRfdGltZXIgPSAoaW5zdHJ1bWVudF9vcHRpb25zICYgSU5TVFJVTUVOVF9USU1F UikgIT0gMDsKIH0KIAotdm9pZAotSW5zdHJTdGFydChJbnN0cnVtZW50YXRpb24gKmluc3RyKQor c3RhdGljIGlubGluZSB2b2lkCitJbnN0clN0YXJ0VGltZXIoSW5zdHJ1bWVudGF0aW9uICppbnN0 cikKIHsKLQlpZiAoaW5zdHItPm5lZWRfdGltZXIpCi0JewotCQlpZiAoIUlOU1RSX1RJTUVfSVNf WkVSTyhpbnN0ci0+c3RhcnR0aW1lKSkKLQkJCWVsb2coRVJST1IsICJJbnN0clN0YXJ0IGNhbGxl ZCB0d2ljZSBpbiBhIHJvdyIpOwotCQllbHNlCi0JCQlJTlNUUl9USU1FX1NFVF9DVVJSRU5UKGlu c3RyLT5zdGFydHRpbWUpOwotCX0KKwlBc3NlcnQoSU5TVFJfVElNRV9JU19aRVJPKGluc3RyLT5z dGFydHRpbWUpKTsKIAotCWlmIChpbnN0ci0+bmVlZF9idWZ1c2FnZSB8fCBpbnN0ci0+bmVlZF93 YWx1c2FnZSkKLQkJSW5zdHJQdXNoU3RhY2soaW5zdHIpOworCUlOU1RSX1RJTUVfU0VUX0NVUlJF TlQoaW5zdHItPnN0YXJ0dGltZSk7CiB9CiAKLXN0YXRpYyB2b2lkCitzdGF0aWMgaW5saW5lIHZv aWQKIEluc3RyU3RvcFRpbWVyKEluc3RydW1lbnRhdGlvbiAqaW5zdHIpCiB7CiAJaW5zdHJfdGlt ZQllbmR0aW1lOwogCi0JLyogbGV0J3MgdXBkYXRlIHRoZSB0aW1lIG9ubHkgaWYgdGhlIHRpbWVy IHdhcyByZXF1ZXN0ZWQgKi8KLQlpZiAoSU5TVFJfVElNRV9JU19aRVJPKGluc3RyLT5zdGFydHRp bWUpKQotCQllbG9nKEVSUk9SLCAiSW5zdHJTdG9wIGNhbGxlZCB3aXRob3V0IHN0YXJ0Iik7CisJ QXNzZXJ0KCFJTlNUUl9USU1FX0lTX1pFUk8oaW5zdHItPnN0YXJ0dGltZSkpOwogCiAJSU5TVFJf VElNRV9TRVRfQ1VSUkVOVChlbmR0aW1lKTsKIAlJTlNUUl9USU1FX0FDQ1VNX0RJRkYoaW5zdHIt PnRvdGFsLCBlbmR0aW1lLCBpbnN0ci0+c3RhcnR0aW1lKTsKQEAgLTc5LDYgKzcwLDE2IEBAIElu c3RyU3RvcFRpbWVyKEluc3RydW1lbnRhdGlvbiAqaW5zdHIpCiAJSU5TVFJfVElNRV9TRVRfWkVS TyhpbnN0ci0+c3RhcnR0aW1lKTsKIH0KIAordm9pZAorSW5zdHJTdGFydChJbnN0cnVtZW50YXRp b24gKmluc3RyKQoreworCWlmIChpbnN0ci0+bmVlZF90aW1lcikKKwkJSW5zdHJTdGFydFRpbWVy KGluc3RyKTsKKworCWlmIChpbnN0ci0+bmVlZF9idWZ1c2FnZSB8fCBpbnN0ci0+bmVlZF93YWx1 c2FnZSkKKwkJSW5zdHJQdXNoU3RhY2soaW5zdHIpOworfQorCiB2b2lkCiBJbnN0clN0b3AoSW5z dHJ1bWVudGF0aW9uICppbnN0cikKIHsKQEAgLTMzMyw2NSArMzM0LDU3IEBAIEluc3RySW5pdE5v ZGUoTm9kZUluc3RydW1lbnRhdGlvbiAqaW5zdHIsIGludCBpbnN0cnVtZW50X29wdGlvbnMpCiAJ SW5zdHJJbml0T3B0aW9ucygmaW5zdHItPmluc3RyLCBpbnN0cnVtZW50X29wdGlvbnMpOwogfQog Ci0vKiBFbnRyeSB0byBhIHBsYW4gbm9kZSAqLworLyogRW50cnkgdG8gYSBwbGFuIG5vZGUuIElm IHlvdSBtb2RpZnkgdGhpcywgY2hlY2sgSW5zdHJOb2RlU2V0dXBFeGVjUHJvY05vZGUuICovCiB2 b2lkCiBJbnN0clN0YXJ0Tm9kZShOb2RlSW5zdHJ1bWVudGF0aW9uICppbnN0cikKIHsKIAlJbnN0 clN0YXJ0KCZpbnN0ci0+aW5zdHIpOwogfQogCi0KLS8qIEV4aXQgZnJvbSBhIHBsYW4gbm9kZSAq Lwotdm9pZAotSW5zdHJTdG9wTm9kZShOb2RlSW5zdHJ1bWVudGF0aW9uICppbnN0ciwgZG91Ymxl IG5UdXBsZXMpCisvKgorICogVXBkYXRlcyB0aGUgbm9kZSBpbnN0cnVtZW50YXRpb24gdGltZSBj b3VudGVyLgorICoKKyAqIE5vdGUgdGhpcyBpcyBkaWZmZXJlbnQgZnJvbSBJbnN0clN0b3AgYmVj YXVzZSB0b3RhbCBpcyBvbmx5IHVwZGF0ZWQgaW4KKyAqIEluc3RyRW5kTG9vcC4gV2UgbmVlZCB0 aGUgc2VwYXJhdGUgY291bnRlciB2YXJpYWJsZSBiZWNhdXNlIHdlIG5lZWQgdG8KKyAqIGNhbGN1 bGF0ZSBzdGFydC11cCB0aW1lIGZvciB0aGUgZmlyc3QgdHVwbGUgaW4gZWFjaCBjeWNsZSwgYW5k IHRoZW4KKyAqIGFjY3VtdWxhdGUgaXQgdG9nZXRoZXIuCisgKi8KK3N0YXRpYyBpbmxpbmUgdm9p ZAorSW5zdHJTdG9wTm9kZVRpbWVyKE5vZGVJbnN0cnVtZW50YXRpb24gKmluc3RyKQogewotCWRv dWJsZQkJc2F2ZV90dXBsZWNvdW50ID0gaW5zdHItPnR1cGxlY291bnQ7CiAJaW5zdHJfdGltZQll bmR0aW1lOwogCi0JLyogY291bnQgdGhlIHJldHVybmVkIHR1cGxlcyAqLwotCWluc3RyLT50dXBs ZWNvdW50ICs9IG5UdXBsZXM7CisJQXNzZXJ0KCFJTlNUUl9USU1FX0lTX1pFUk8oaW5zdHItPmlu c3RyLnN0YXJ0dGltZSkpOworCisJSU5TVFJfVElNRV9TRVRfQ1VSUkVOVChlbmR0aW1lKTsKKwlJ TlNUUl9USU1FX0FDQ1VNX0RJRkYoaW5zdHItPmNvdW50ZXIsIGVuZHRpbWUsIGluc3RyLT5pbnN0 ci5zdGFydHRpbWUpOworCUlOU1RSX1RJTUVfU0VUX1pFUk8oaW5zdHItPmluc3RyLnN0YXJ0dGlt ZSk7CiAKIAkvKgotCSAqIFVwZGF0ZSB0aGUgdGltZSBvbmx5IGlmIHRoZSB0aW1lciB3YXMgcmVx dWVzdGVkLgorCSAqIElzIHRoaXMgdGhlIGZpcnN0IHR1cGxlIG9mIHRoaXMgY3ljbGU/CiAJICoK LQkgKiBOb3RlIHRoaXMgaXMgZGlmZmVyZW50IGZyb20gSW5zdHJTdG9wIGJlY2F1c2UgdG90YWwg aXMgb25seSB1cGRhdGVkIGluCi0JICogSW5zdHJFbmRMb29wLiBXZSBuZWVkIHRoZSBzZXBhcmF0 ZSBjb3VudGVyIHZhcmlhYmxlIGJlY2F1c2Ugd2UgbmVlZCB0bwotCSAqIGNhbGN1bGF0ZSBzdGFy dC11cCB0aW1lIGZvciB0aGUgZmlyc3QgdHVwbGUgaW4gZWFjaCBjeWNsZSwgYW5kIHRoZW4KLQkg KiBhY2N1bXVsYXRlIGl0IHRvZ2V0aGVyLgorCSAqIEluIGFzeW5jIG1vZGUsIGlmIHRoZSBwbGFu IG5vZGUgaGFkbid0IGVtaXR0ZWQgYW55IHR1cGxlcyBiZWZvcmUsIHRoaXMKKwkgKiBtaWdodCBi ZSB0aGUgZmlyc3QgdHVwbGUKIAkgKi8KLQlpZiAoaW5zdHItPmluc3RyLm5lZWRfdGltZXIpCi0J ewotCQlpZiAoSU5TVFJfVElNRV9JU19aRVJPKGluc3RyLT5pbnN0ci5zdGFydHRpbWUpKQotCQkJ ZWxvZyhFUlJPUiwgIkluc3RyU3RvcE5vZGUgY2FsbGVkIHdpdGhvdXQgc3RhcnQiKTsKLQotCQlJ TlNUUl9USU1FX1NFVF9DVVJSRU5UKGVuZHRpbWUpOwotCQlJTlNUUl9USU1FX0FDQ1VNX0RJRkYo aW5zdHItPmNvdW50ZXIsIGVuZHRpbWUsIGluc3RyLT5pbnN0ci5zdGFydHRpbWUpOworCWlmICgh aW5zdHItPnJ1bm5pbmcgfHwgKGluc3RyLT5hc3luY19tb2RlICYmIGluc3RyLT50dXBsZWNvdW50 IDwgMS4wKSkKKwkJaW5zdHItPmZpcnN0dHVwbGUgPSBpbnN0ci0+Y291bnRlcjsKK30KIAotCQlJ TlNUUl9USU1FX1NFVF9aRVJPKGluc3RyLT5pbnN0ci5zdGFydHRpbWUpOwotCX0KKy8qIEV4aXQg ZnJvbSBhIHBsYW4gbm9kZS4gSWYgeW91IG1vZGlmeSB0aGlzLCBjaGVjayBJbnN0ck5vZGVTZXR1 cEV4ZWNQcm9jTm9kZS4gKi8KK3ZvaWQKK0luc3RyU3RvcE5vZGUoTm9kZUluc3RydW1lbnRhdGlv biAqaW5zdHIsIGRvdWJsZSBuVHVwbGVzKQoreworCWlmIChpbnN0ci0+aW5zdHIubmVlZF90aW1l cikKKwkJSW5zdHJTdG9wTm9kZVRpbWVyKGluc3RyKTsKIAotCS8qCi0JICogT25seSBwb3AgdGhl IHN0YWNrLCBhY2N1bXVsYXRpb24gcnVucyBpbgotCSAqIEV4ZWNGaW5hbGl6ZU5vZGVJbnN0cnVt ZW50YXRpb24KLQkgKi8KKwkvKiBPbmx5IHBvcCB0aGUgc3RhY2ssIGFjY3VtdWxhdGlvbiBydW5z IGluIEluc3RyRmluYWxpemVOb2RlICovCiAJaWYgKGluc3RyLT5pbnN0ci5uZWVkX2J1ZnVzYWdl IHx8IGluc3RyLT5pbnN0ci5uZWVkX3dhbHVzYWdlKQogCQlJbnN0clBvcFN0YWNrKCZpbnN0ci0+ aW5zdHIpOwogCi0JLyogSXMgdGhpcyB0aGUgZmlyc3QgdHVwbGUgb2YgdGhpcyBjeWNsZT8gKi8K LQlpZiAoIWluc3RyLT5ydW5uaW5nKQotCXsKLQkJaW5zdHItPnJ1bm5pbmcgPSB0cnVlOwotCQlp bnN0ci0+Zmlyc3R0dXBsZSA9IGluc3RyLT5jb3VudGVyOwotCX0KLQllbHNlCi0JewotCQkvKgot CQkgKiBJbiBhc3luYyBtb2RlLCBpZiB0aGUgcGxhbiBub2RlIGhhZG4ndCBlbWl0dGVkIGFueSB0 dXBsZXMgYmVmb3JlLAotCQkgKiB0aGlzIG1pZ2h0IGJlIHRoZSBmaXJzdCB0dXBsZQotCQkgKi8K LQkJaWYgKGluc3RyLT5hc3luY19tb2RlICYmIHNhdmVfdHVwbGVjb3VudCA8IDEuMCkKLQkJCWlu c3RyLT5maXJzdHR1cGxlID0gaW5zdHItPmNvdW50ZXI7Ci0JfQorCWluc3RyLT5ydW5uaW5nID0g dHJ1ZTsKKworCS8qIGNvdW50IHRoZSByZXR1cm5lZCB0dXBsZXMgKi8KKwlpbnN0ci0+dHVwbGVj b3VudCArPSBuVHVwbGVzOwogfQogCiAvKiBBZGQgcGVyLW5vZGUgaW5zdHJ1bWVudGF0aW9uIHRv IHRoZSBwYXJlbnQgYW5kIG1vdmUgaW50byBwZXItcXVlcnkgbWVtb3J5IGNvbnRleHQgKi8KQEAg LTQ3NSw2ICs0NjgsMTI1IEBAIEluc3RyQWdnTm9kZShOb2RlSW5zdHJ1bWVudGF0aW9uICpkc3Qs IE5vZGVJbnN0cnVtZW50YXRpb24gKmFkZCkKIAkJV2FsVXNhZ2VBZGQoJmRzdC0+aW5zdHIud2Fs dXNhZ2UsICZhZGQtPmluc3RyLndhbHVzYWdlKTsKIH0KIAorLyoKKyAqIFNwZWNpYWxpemVkIGhh bmRsaW5nIG9mIGluc3RydW1lbnRlZCBFeGVjUHJvY05vZGUKKyAqCisgKiBUaGVzZSBmdW5jdGlv bnMgYXJlIGVxdWl2YWxlbnQgdG8gcnVubmluZyBFeGVjUHJvY05vZGVSZWFsIHdyYXBwZWQgaW4K KyAqIEluc3RyU3RhcnROb2RlIGFuZCBJbnN0clN0b3BOb2RlLCBidXQgYXZvaWQgdGhlIGNvbmRp dGlvbmFscyBpbiB0aGUgaG90IHBhdGgKKyAqIGJ5IGNoZWNraW5nIHRoZSBpbnN0cnVtZW50YXRp b24gb3B0aW9ucyB3aGVuIHRoZSBFeGVjUHJvY05vZGUgcG9pbnRlciBnZXRzCisgKiBmaXJzdCBz ZXQsIGFuZCB0aGVuIHVzaW5nIGEgc3BlY2lhbC1wdXJwb3NlIGZ1bmN0aW9uIGZvciBlYWNoLiBU aGlzIHJlc3VsdHMKKyAqIGluIGEgbW9yZSBvcHRpbWl6ZWQgc2V0IG9mIGNvbXBpbGVkIGluc3Ry dWN0aW9ucy4KKyAqLworCisjaW5jbHVkZSAiZXhlY3V0b3IvdHVwdGFibGUuaCIKKyNpbmNsdWRl ICJub2Rlcy9leGVjbm9kZXMuaCIKKworLyogU2ltcGxpZmllZCBwb3A6IHJlc3RvcmUgc2F2ZWQg c3RhdGUgaW5zdGVhZCBvZiByZS1kZXJpdmluZyBmcm9tIGFycmF5ICovCitzdGF0aWMgaW5saW5l IHZvaWQKK0luc3RyUG9wU3RhY2tUbyhJbnN0cnVtZW50YXRpb24gKnByZXYpCit7CisJQXNzZXJ0 KGluc3RyX3N0YWNrLnN0YWNrX3NpemUgPiAwKTsKKwlpbnN0cl9zdGFjay5zdGFja19zaXplLS07 CisJaW5zdHJfc3RhY2suY3VycmVudCA9IHByZXY7Cit9CisKK3N0YXRpYyBUdXBsZVRhYmxlU2xv dCAqCitFeGVjUHJvY05vZGVJbnN0ckZ1bGwoUGxhblN0YXRlICpub2RlKQoreworCU5vZGVJbnN0 cnVtZW50YXRpb24gKmluc3RyID0gbm9kZS0+aW5zdHJ1bWVudDsKKwlJbnN0cnVtZW50YXRpb24g KnByZXYgPSBpbnN0cl9zdGFjay5jdXJyZW50OworCVR1cGxlVGFibGVTbG90ICpyZXN1bHQ7CisK KwlJbnN0clB1c2hTdGFjaygmaW5zdHItPmluc3RyKTsKKwlJbnN0clN0YXJ0VGltZXIoJmluc3Ry LT5pbnN0cik7CisKKwlyZXN1bHQgPSBub2RlLT5FeGVjUHJvY05vZGVSZWFsKG5vZGUpOworCisJ SW5zdHJTdG9wTm9kZVRpbWVyKGluc3RyKTsKKwlJbnN0clBvcFN0YWNrVG8ocHJldik7CisKKwlp bnN0ci0+cnVubmluZyA9IHRydWU7CisJaWYgKCFUdXBJc051bGwocmVzdWx0KSkKKwkJaW5zdHIt PnR1cGxlY291bnQgKz0gMS4wOworCisJcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIFR1cGxl VGFibGVTbG90ICoKK0V4ZWNQcm9jTm9kZUluc3RyUm93c0J1ZmZlcnNXYWxPbmx5KFBsYW5TdGF0 ZSAqbm9kZSkKK3sKKwlOb2RlSW5zdHJ1bWVudGF0aW9uICppbnN0ciA9IG5vZGUtPmluc3RydW1l bnQ7CisJSW5zdHJ1bWVudGF0aW9uICpwcmV2ID0gaW5zdHJfc3RhY2suY3VycmVudDsKKwlUdXBs ZVRhYmxlU2xvdCAqcmVzdWx0OworCisJSW5zdHJQdXNoU3RhY2soJmluc3RyLT5pbnN0cik7CisK KwlyZXN1bHQgPSBub2RlLT5FeGVjUHJvY05vZGVSZWFsKG5vZGUpOworCisJSW5zdHJQb3BTdGFj a1RvKHByZXYpOworCisJaW5zdHItPnJ1bm5pbmcgPSB0cnVlOworCWlmICghVHVwSXNOdWxsKHJl c3VsdCkpCisJCWluc3RyLT50dXBsZWNvdW50ICs9IDEuMDsKKworCXJldHVybiByZXN1bHQ7Cit9 CisKK3N0YXRpYyBUdXBsZVRhYmxlU2xvdCAqCitFeGVjUHJvY05vZGVJbnN0clJvd3NUaW1lck9u bHkoUGxhblN0YXRlICpub2RlKQoreworCU5vZGVJbnN0cnVtZW50YXRpb24gKmluc3RyID0gbm9k ZS0+aW5zdHJ1bWVudDsKKwlUdXBsZVRhYmxlU2xvdCAqcmVzdWx0OworCisJSW5zdHJTdGFydFRp bWVyKCZpbnN0ci0+aW5zdHIpOworCisJcmVzdWx0ID0gbm9kZS0+RXhlY1Byb2NOb2RlUmVhbChu b2RlKTsKKworCUluc3RyU3RvcE5vZGVUaW1lcihpbnN0cik7CisKKwlpbnN0ci0+cnVubmluZyA9 IHRydWU7CisJaWYgKCFUdXBJc051bGwocmVzdWx0KSkKKwkJaW5zdHItPnR1cGxlY291bnQgKz0g MS4wOworCisJcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIFR1cGxlVGFibGVTbG90ICoKK0V4 ZWNQcm9jTm9kZUluc3RyUm93c09ubHkoUGxhblN0YXRlICpub2RlKQoreworCU5vZGVJbnN0cnVt ZW50YXRpb24gKmluc3RyID0gbm9kZS0+aW5zdHJ1bWVudDsKKwlUdXBsZVRhYmxlU2xvdCAqcmVz dWx0OworCisJcmVzdWx0ID0gbm9kZS0+RXhlY1Byb2NOb2RlUmVhbChub2RlKTsKKworCWluc3Ry LT5ydW5uaW5nID0gdHJ1ZTsKKwlpZiAoIVR1cElzTnVsbChyZXN1bHQpKQorCQlpbnN0ci0+dHVw bGVjb3VudCArPSAxLjA7CisKKwlyZXR1cm4gcmVzdWx0OworfQorCisvKgorICogUmV0dXJucyBh biBFeGVjUHJvY05vZGUgd3JhcHBlciB0aGF0IHBlcmZvcm1zIGluc3RydW1lbnRhdGlvbiBjYWxs cywKKyAqIHRhaWxvcmVkIHRvIHRoZSBpbnN0cnVtZW50YXRpb24gb3B0aW9ucyBlbmFibGVkIGZv ciB0aGUgbm9kZS4KKyAqLworRXhlY1Byb2NOb2RlTXRkCitJbnN0ck5vZGVTZXR1cEV4ZWNQcm9j Tm9kZShOb2RlSW5zdHJ1bWVudGF0aW9uICppbnN0cikKK3sKKwlib29sCQluZWVkX3RpbWVyID0g aW5zdHItPmluc3RyLm5lZWRfdGltZXI7CisJYm9vbAkJbmVlZF9idWYgPSAoaW5zdHItPmluc3Ry Lm5lZWRfYnVmdXNhZ2UgfHwKKwkJCQkJCQlpbnN0ci0+aW5zdHIubmVlZF93YWx1c2FnZSk7CisK KwlpZiAobmVlZF90aW1lciAmJiBuZWVkX2J1ZikKKwkJcmV0dXJuIEV4ZWNQcm9jTm9kZUluc3Ry RnVsbDsKKwllbHNlIGlmIChuZWVkX2J1ZikKKwkJcmV0dXJuIEV4ZWNQcm9jTm9kZUluc3RyUm93 c0J1ZmZlcnNXYWxPbmx5OworCWVsc2UgaWYgKG5lZWRfdGltZXIpCisJCXJldHVybiBFeGVjUHJv Y05vZGVJbnN0clJvd3NUaW1lck9ubHk7CisJZWxzZQorCQlyZXR1cm4gRXhlY1Byb2NOb2RlSW5z dHJSb3dzT25seTsKK30KKwogLyogVHJpZ2dlciBpbnN0cnVtZW50YXRpb24gaGFuZGxpbmcgKi8K IFRyaWdnZXJJbnN0cnVtZW50YXRpb24gKgogSW5zdHJBbGxvY1RyaWdnZXIoaW50IG4sIGludCBp bnN0cnVtZW50X29wdGlvbnMpCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRvci9pbnN0 cnVtZW50LmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9pbnN0cnVtZW50LmgKaW5kZXggY2MzM2Iz MmFmMWUuLmFjN2YwZDIxYzM3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9pbnN0 cnVtZW50LmgKKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvaW5zdHJ1bWVudC5oCkBAIC0yODgs NiArMjg4LDExIEBAIGV4dGVybiB2b2lkIEluc3RyVXBkYXRlVHVwbGVDb3VudChOb2RlSW5zdHJ1 bWVudGF0aW9uICppbnN0ciwgZG91YmxlIG5UdXBsZXMpOwogZXh0ZXJuIHZvaWQgSW5zdHJFbmRM b29wKE5vZGVJbnN0cnVtZW50YXRpb24gKmluc3RyKTsKIGV4dGVybiB2b2lkIEluc3RyQWdnTm9k ZShOb2RlSW5zdHJ1bWVudGF0aW9uICpkc3QsIE5vZGVJbnN0cnVtZW50YXRpb24gKmFkZCk7CiAK K3R5cGVkZWYgc3RydWN0IFR1cGxlVGFibGVTbG90IFR1cGxlVGFibGVTbG90OwordHlwZWRlZiBz dHJ1Y3QgUGxhblN0YXRlIFBsYW5TdGF0ZTsKK3R5cGVkZWYgVHVwbGVUYWJsZVNsb3QgKigqRXhl Y1Byb2NOb2RlTXRkKSAoUGxhblN0YXRlICpwc3RhdGUpOworZXh0ZXJuIEV4ZWNQcm9jTm9kZU10 ZCBJbnN0ck5vZGVTZXR1cEV4ZWNQcm9jTm9kZShOb2RlSW5zdHJ1bWVudGF0aW9uICppbnN0cik7 CisKIGV4dGVybiBUcmlnZ2VySW5zdHJ1bWVudGF0aW9uICpJbnN0ckFsbG9jVHJpZ2dlcihpbnQg biwgaW50IGluc3RydW1lbnRfb3B0aW9ucyk7CiBleHRlcm4gdm9pZCBJbnN0clN0YXJ0VHJpZ2dl cihUcmlnZ2VySW5zdHJ1bWVudGF0aW9uICp0Z2luc3RyKTsKIGV4dGVybiB2b2lkIEluc3RyU3Rv cFRyaWdnZXIoVHJpZ2dlckluc3RydW1lbnRhdGlvbiAqdGdpbnN0ciwgaW50IGZpcmluZ3MpOwot LSAKMi40Ny4xCgo= --00000000000002247a064c7bb7b8 Content-Type: application/octet-stream; name="v7-0007-Index-scans-Show-table-buffer-accesses-separately.patch" Content-Disposition: attachment; filename="v7-0007-Index-scans-Show-table-buffer-accesses-separately.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmh8zh0q6 RnJvbSAzZWQyNzNmYTYwN2Q0NzM0NmIyMGVlY2NlMGU0OGYzMzUwMGEyOTdmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpEYXRlOiBT YXQsIDcgTWFyIDIwMjYgMTE6NDY6MTkgLTA4MDAKU3ViamVjdDogW1BBVENIIHY3IDcvOF0gSW5k ZXggc2NhbnM6IFNob3cgdGFibGUgYnVmZmVyIGFjY2Vzc2VzIHNlcGFyYXRlbHkgaW4KIEVYUExB SU4gQU5BTFlaRQoKVGhpcyBzZXRzIHVwIGEgc2VwYXJhdGUgaW5zdHJ1bWVudGF0aW9uIHN0YWNr IHRoYXQgaXMgdXNlZCB3aGlsc3QgYW4KSW5kZXggU2NhbiBkb2VzIHNjYW5uaW5nIG9uIHRoZSB0 YWJsZSwgZm9yIGV4YW1wbGUgZHVlIHRvIGFkZGl0aW9uYWwKZGF0YSBiZWluZyBuZWVkZWQuCgpF WFBMQUlOIEFOQUxZWkUgd2lsbCBub3cgc2hvdyAiVGFibGUgQnVmZmVycyIgdGhhdCByZXByZXNl bnQgc3VjaCBhY3Rpdml0eS4KVGhlIGFjdGl2aXR5IGlzIGFsc28gaW5jbHVkZWQgaW4gcmVndWxh ciAiQnVmZmVycyIgdG9nZXRoZXIgd2l0aCBpbmRleAphY3Rpdml0eSBhbmQgdGhhdCBvZiBhbnkg Y2hpbGQgbm9kZXMuCgpBdXRob3I6IEx1a2FzIEZpdHRsIDxsdWthc0BmaXR0bC5jb20+ClN1Z2dl c3RlZC1ieTogQW5kcmVzIEZyZXVuZCA8YW5kcmVzQGFuYXJhemVsLmRlPgpSZXZpZXdlZC1ieToK RGlzY3Vzc2lvbjoKLS0tCiBkb2Mvc3JjL3NnbWwvcGVyZm9ybS5zZ21sICAgICAgICAgICAgICB8 IDEzICsrKystLQogZG9jL3NyYy9zZ21sL3JlZi9leHBsYWluLnNnbWwgICAgICAgICAgfCAgMSAr CiBzcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMgICAgICAgICB8IDU1ICsrKysrKysrKysr KysrKy0tLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjUHJvY25vZGUuYyAgICB8 IDM1ICsrKysrKysrKysrKysrKysKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleHNjYW4u YyAgIHwgMzMgKysrKysrKysrKysrKysrLQogc3JjL2luY2x1ZGUvZXhlY3V0b3IvaW5zdHJ1bWVu dF9ub2RlLmggfCAgNiArKysKIHNyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oICAgICAgICAg IHwgIDcgKysrKwogNyBmaWxlcyBjaGFuZ2VkLCAxMjIgaW5zZXJ0aW9ucygrKSwgMjggZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3BlcmZvcm0uc2dtbCBiL2RvYy9zcmMv c2dtbC9wZXJmb3JtLnNnbWwKaW5kZXggNWY2ZjFkYjA0NjcuLjkyMTk2MjVmYWY2IDEwMDY0NAot LS0gYS9kb2Mvc3JjL3NnbWwvcGVyZm9ybS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9wZXJmb3Jt LnNnbWwKQEAgLTczNCw2ICs3MzQsNyBAQCBXSEVSRSB0MS51bmlxdWUxICZsdDsgMTAgQU5EIHQx LnVuaXF1ZTIgPSB0Mi51bmlxdWUyOwogICAgLSZndDsgIEluZGV4IFNjYW4gdXNpbmcgdGVuazJf dW5pcXVlMiBvbiB0ZW5rMiB0MiAgKGNvc3Q9MC4yOS4uNy45MCByb3dzPTEgd2lkdGg9MjQ0KSAo YWN0dWFsIHRpbWU9MC4wMDMuLjAuMDAzIHJvd3M9MS4wMCBsb29wcz0xMCkKICAgICAgICAgIElu ZGV4IENvbmQ6ICh1bmlxdWUyID0gdDEudW5pcXVlMikKICAgICAgICAgIEluZGV4IFNlYXJjaGVz OiAxMAorICAgICAgICAgVGFibGUgQnVmZmVyczogc2hhcmVkIGhpdD0xMAogICAgICAgICAgQnVm ZmVyczogc2hhcmVkIGhpdD0yNCByZWFkPTYKICBQbGFubmluZzoKICAgIEJ1ZmZlcnM6IHNoYXJl ZCBoaXQ9MTUgZGlydGllZD05CkBAIC05NDksNyArOTUwLDggQEAgRVhQTEFJTiBBTkFMWVpFIFNF TEVDVCAqIEZST00gcG9seWdvbl90YmwgV0hFUkUgZjEgQCZndDsgcG9seWdvbiAnKDAuNSwyLjAp JzsKICAgIEluZGV4IENvbmQ6IChmMSBAJmd0OyAnKCgwLjUsMikpJzo6cG9seWdvbikKICAgIFJv d3MgUmVtb3ZlZCBieSBJbmRleCBSZWNoZWNrOiAxCiAgICBJbmRleCBTZWFyY2hlczogMQotICAg QnVmZmVyczogc2hhcmVkIGhpdD0xCisgICBUYWJsZSBCdWZmZXJzOiBzaGFyZWQgaGl0PTEKKyAg IEJ1ZmZlcnM6IHNoYXJlZCBoaXQ9MgogIFBsYW5uaW5nIFRpbWU6IDAuMDM5IG1zCiAgRXhlY3V0 aW9uIFRpbWU6IDAuMDk4IG1zCiA8L3NjcmVlbj4KQEAgLTk1OCw3ICs5NjAsOSBAQCBFWFBMQUlO IEFOQUxZWkUgU0VMRUNUICogRlJPTSBwb2x5Z29uX3RibCBXSEVSRSBmMSBAJmd0OyBwb2x5Z29u ICcoMC41LDIuMCknOwogICAgIHRoZW4gcmVqZWN0ZWQgYnkgYSByZWNoZWNrIG9mIHRoZSBpbmRl eCBjb25kaXRpb24uICBUaGlzIGhhcHBlbnMgYmVjYXVzZSBhCiAgICAgR2lTVCBpbmRleCBpcyA8 cXVvdGU+bG9zc3k8L3F1b3RlPiBmb3IgcG9seWdvbiBjb250YWlubWVudCB0ZXN0czogaXQgYWN0 dWFsbHkKICAgICByZXR1cm5zIHRoZSByb3dzIHdpdGggcG9seWdvbnMgdGhhdCBvdmVybGFwIHRo ZSB0YXJnZXQsIGFuZCB0aGVuIHdlIGhhdmUKLSAgICB0byBkbyB0aGUgZXhhY3QgY29udGFpbm1l bnQgdGVzdCBvbiB0aG9zZSByb3dzLgorICAgIHRvIGRvIHRoZSBleGFjdCBjb250YWlubWVudCB0 ZXN0IG9uIHRob3NlIHJvd3MuIFRoZSA8bGl0ZXJhbD5UYWJsZSBCdWZmZXJzPC9saXRlcmFsPgor ICAgIGNvdW50cyBpbmRpY2F0ZSBob3cgbWFueSBvcGVyYXRpb25zIHdlcmUgcGVyZm9ybWVkIG9u IHRoZSB0YWJsZSBpbnN0ZWFkIG9mCisgICAgdGhlIGluZGV4LiBUaGlzIG51bWJlciBpcyBpbmNs dWRlZCBpbiB0aGUgPGxpdGVyYWw+QnVmZmVyczwvbGl0ZXJhbD4gY291bnRzLgogICAgPC9wYXJh PgogCiAgICA8cGFyYT4KQEAgLTExNDcsMTMgKzExNTEsMTQgQEAgRVhQTEFJTiBBTkFMWVpFIFNF TEVDVCAqIEZST00gdGVuazEgV0hFUkUgdW5pcXVlMSAmbHQ7IDEwMCBBTkQgdW5pcXVlMiAmZ3Q7 IDkwMDAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBRVUVSWSBQTEFOCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tJnp3c3A7LS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgTGltaXQgIChjb3N0PTAu MjkuLjE0LjMzIHJvd3M9MiB3aWR0aD0yNDQpIChhY3R1YWwgdGltZT0wLjA1MS4uMC4wNzEgcm93 cz0yLjAwIGxvb3BzPTEpCi0gICBCdWZmZXJzOiBzaGFyZWQgaGl0PTE2CisgICBCdWZmZXJzOiBz aGFyZWQgaGl0PTE0CiAgICAtJmd0OyAgSW5kZXggU2NhbiB1c2luZyB0ZW5rMV91bmlxdWUyIG9u IHRlbmsxICAoY29zdD0wLjI5Li43MC41MCByb3dzPTEwIHdpZHRoPTI0NCkgKGFjdHVhbCB0aW1l PTAuMDUxLi4wLjA3MCByb3dzPTIuMDAgbG9vcHM9MSkKICAgICAgICAgIEluZGV4IENvbmQ6ICh1 bmlxdWUyICZndDsgOTAwMCkKICAgICAgICAgIEZpbHRlcjogKHVuaXF1ZTEgJmx0OyAxMDApCiAg ICAgICAgICBSb3dzIFJlbW92ZWQgYnkgRmlsdGVyOiAyODcKICAgICAgICAgIEluZGV4IFNlYXJj aGVzOiAxCi0gICAgICAgICBCdWZmZXJzOiBzaGFyZWQgaGl0PTE2CisgICAgICAgICBUYWJsZSBC dWZmZXJzOiBzaGFyZWQgaGl0PTExCisgICAgICAgICBCdWZmZXJzOiBzaGFyZWQgaGl0PTE0CiAg UGxhbm5pbmcgVGltZTogMC4wNzcgbXMKICBFeGVjdXRpb24gVGltZTogMC4wODYgbXMKIDwvc2Ny ZWVuPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9leHBsYWluLnNnbWwgYi9kb2Mvc3Jj L3NnbWwvcmVmL2V4cGxhaW4uc2dtbAppbmRleCA3ZGVlNzdmZDM2Ni4uOTEyYzk2ZjJmZjUgMTAw NjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvZXhwbGFpbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dt bC9yZWYvZXhwbGFpbi5zZ21sCkBAIC01MDYsNiArNTA2LDcgQEAgRVhQTEFJTiBBTkFMWVpFIEVY RUNVVEUgcXVlcnkoMTAwLCAyMDApOwogICAgLSZndDsgIEluZGV4IFNjYW4gdXNpbmcgdGVzdF9w a2V5IG9uIHRlc3QgIChjb3N0PTAuMjkuLjEwLjI3IHJvd3M9OTkgd2lkdGg9OCkgKGFjdHVhbCB0 aW1lPTAuMDA5Li4wLjAyNSByb3dzPTk5LjAwIGxvb3BzPTEpCiAgICAgICAgICBJbmRleCBDb25k OiAoKGlkICZndDsgMTAwKSBBTkQgKGlkICZsdDsgMjAwKSkKICAgICAgICAgIEluZGV4IFNlYXJj aGVzOiAxCisgICAgICAgICBUYWJsZSBCdWZmZXJzOiBzaGFyZWQgaGl0PTEKICAgICAgICAgIEJ1 ZmZlcnM6IHNoYXJlZCBoaXQ9NAogIFBsYW5uaW5nIFRpbWU6IDAuMjQ0IG1zCiAgRXhlY3V0aW9u IFRpbWU6IDAuMDczIG1zCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWlu LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKaW5kZXggYWE3NmY2OGJkMTAuLjQz NzI0NmQxYWE0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKKysr IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCkBAIC0xNDMsNyArMTQzLDcgQEAgc3Rh dGljIHZvaWQgc2hvd19pbnN0cnVtZW50YXRpb25fY291bnQoY29uc3QgY2hhciAqcWxhYmVsLCBp bnQgd2hpY2gsCiBzdGF0aWMgdm9pZCBzaG93X2ZvcmVpZ25zY2FuX2luZm8oRm9yZWlnblNjYW5T dGF0ZSAqZnNzdGF0ZSwgRXhwbGFpblN0YXRlICplcyk7CiBzdGF0aWMgY29uc3QgY2hhciAqZXhw bGFpbl9nZXRfaW5kZXhfbmFtZShPaWQgaW5kZXhJZCk7CiBzdGF0aWMgYm9vbCBwZWVrX2J1ZmZl cl91c2FnZShFeHBsYWluU3RhdGUgKmVzLCBjb25zdCBCdWZmZXJVc2FnZSAqdXNhZ2UpOwotc3Rh dGljIHZvaWQgc2hvd19idWZmZXJfdXNhZ2UoRXhwbGFpblN0YXRlICplcywgY29uc3QgQnVmZmVy VXNhZ2UgKnVzYWdlKTsKK3N0YXRpYyB2b2lkIHNob3dfYnVmZmVyX3VzYWdlKEV4cGxhaW5TdGF0 ZSAqZXMsIGNvbnN0IEJ1ZmZlclVzYWdlICp1c2FnZSwgY29uc3QgY2hhciAqdGl0bGUpOwogc3Rh dGljIHZvaWQgc2hvd193YWxfdXNhZ2UoRXhwbGFpblN0YXRlICplcywgY29uc3QgV2FsVXNhZ2Ug KnVzYWdlKTsKIHN0YXRpYyB2b2lkIHNob3dfbWVtb3J5X2NvdW50ZXJzKEV4cGxhaW5TdGF0ZSAq ZXMsCiAJCQkJCQkJCSBjb25zdCBNZW1vcnlDb250ZXh0Q291bnRlcnMgKm1lbV9jb3VudGVycyk7 CkBAIC02MDMsNyArNjAzLDcgQEAgRXhwbGFpbk9uZVBsYW4oUGxhbm5lZFN0bXQgKnBsYW5uZWRz dG10LCBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAogCQl9CiAKIAkJaWYgKGJ1 ZnVzYWdlKQotCQkJc2hvd19idWZmZXJfdXNhZ2UoZXMsIGJ1ZnVzYWdlKTsKKwkJCXNob3dfYnVm ZmVyX3VzYWdlKGVzLCBidWZ1c2FnZSwgTlVMTCk7CiAKIAkJaWYgKG1lbV9jb3VudGVycykKIAkJ CXNob3dfbWVtb3J5X2NvdW50ZXJzKGVzLCBtZW1fY291bnRlcnMpOwpAQCAtMTAyMCw3ICsxMDIw LDcgQEAgRXhwbGFpblByaW50U2VyaWFsaXplKEV4cGxhaW5TdGF0ZSAqZXMsIFNlcmlhbGl6ZU1l dHJpY3MgKm1ldHJpY3MpCiAJCWlmIChlcy0+YnVmZmVycyAmJiBwZWVrX2J1ZmZlcl91c2FnZShl cywgJm1ldHJpY3MtPmJ1ZmZlclVzYWdlKSkKIAkJewogCQkJZXMtPmluZGVudCsrOwotCQkJc2hv d19idWZmZXJfdXNhZ2UoZXMsICZtZXRyaWNzLT5idWZmZXJVc2FnZSk7CisJCQlzaG93X2J1ZmZl cl91c2FnZShlcywgJm1ldHJpY3MtPmJ1ZmZlclVzYWdlLCBOVUxMKTsKIAkJCWVzLT5pbmRlbnQt LTsKIAkJfQogCX0KQEAgLTEwMzQsNyArMTAzNCw3IEBAIEV4cGxhaW5QcmludFNlcmlhbGl6ZShF eHBsYWluU3RhdGUgKmVzLCBTZXJpYWxpemVNZXRyaWNzICptZXRyaWNzKQogCQkJCQkJCQlCWVRF U19UT19LSUxPQllURVMobWV0cmljcy0+Ynl0ZXNTZW50KSwgZXMpOwogCQlFeHBsYWluUHJvcGVy dHlUZXh0KCJGb3JtYXQiLCBmb3JtYXQsIGVzKTsKIAkJaWYgKGVzLT5idWZmZXJzKQotCQkJc2hv d19idWZmZXJfdXNhZ2UoZXMsICZtZXRyaWNzLT5idWZmZXJVc2FnZSk7CisJCQlzaG93X2J1ZmZl cl91c2FnZShlcywgJm1ldHJpY3MtPmJ1ZmZlclVzYWdlLCBOVUxMKTsKIAl9CiAKIAlFeHBsYWlu Q2xvc2VHcm91cCgiU2VyaWFsaXphdGlvbiIsICJTZXJpYWxpemF0aW9uIiwgdHJ1ZSwgZXMpOwpA QCAtMTk2Miw2ICsxOTYyLDkgQEAgRXhwbGFpbk5vZGUoUGxhblN0YXRlICpwbGFuc3RhdGUsIExp c3QgKmFuY2VzdG9ycywKIAkJCQlzaG93X2luc3RydW1lbnRhdGlvbl9jb3VudCgiUm93cyBSZW1v dmVkIGJ5IEZpbHRlciIsIDEsCiAJCQkJCQkJCQkJICAgcGxhbnN0YXRlLCBlcyk7CiAJCQlzaG93 X2luZGV4c2VhcmNoZXNfaW5mbyhwbGFuc3RhdGUsIGVzKTsKKworCQkJaWYgKGVzLT5idWZmZXJz ICYmIHBsYW5zdGF0ZS0+aW5zdHJ1bWVudCkKKwkJCQlzaG93X2J1ZmZlcl91c2FnZShlcywgJigo SW5kZXhTY2FuU3RhdGUgKikgcGxhbnN0YXRlKS0+aXNzX0luc3RydW1lbnRUYWJsZS0+aW5zdHIu YnVmdXNhZ2UsICJUYWJsZSIpOwogCQkJYnJlYWs7CiAJCWNhc2UgVF9JbmRleE9ubHlTY2FuOgog CQkJc2hvd19zY2FuX3F1YWwoKChJbmRleE9ubHlTY2FuICopIHBsYW4pLT5pbmRleHF1YWwsCkBA IC0yMjgwLDcgKzIyODMsNyBAQCBFeHBsYWluTm9kZShQbGFuU3RhdGUgKnBsYW5zdGF0ZSwgTGlz dCAqYW5jZXN0b3JzLAogCiAJLyogU2hvdyBidWZmZXIvV0FMIHVzYWdlICovCiAJaWYgKGVzLT5i dWZmZXJzICYmIHBsYW5zdGF0ZS0+aW5zdHJ1bWVudCkKLQkJc2hvd19idWZmZXJfdXNhZ2UoZXMs ICZwbGFuc3RhdGUtPmluc3RydW1lbnQtPmluc3RyLmJ1ZnVzYWdlKTsKKwkJc2hvd19idWZmZXJf dXNhZ2UoZXMsICZwbGFuc3RhdGUtPmluc3RydW1lbnQtPmluc3RyLmJ1ZnVzYWdlLCBOVUxMKTsK IAlpZiAoZXMtPndhbCAmJiBwbGFuc3RhdGUtPmluc3RydW1lbnQpCiAJCXNob3dfd2FsX3VzYWdl KGVzLCAmcGxhbnN0YXRlLT5pbnN0cnVtZW50LT5pbnN0ci53YWx1c2FnZSk7CiAKQEAgLTIyOTks NyArMjMwMiw3IEBAIEV4cGxhaW5Ob2RlKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBMaXN0ICphbmNl c3RvcnMsCiAKIAkJCUV4cGxhaW5PcGVuV29ya2VyKG4sIGVzKTsKIAkJCWlmIChlcy0+YnVmZmVy cykKLQkJCQlzaG93X2J1ZmZlcl91c2FnZShlcywgJmluc3RydW1lbnQtPmluc3RyLmJ1ZnVzYWdl KTsKKwkJCQlzaG93X2J1ZmZlcl91c2FnZShlcywgJmluc3RydW1lbnQtPmluc3RyLmJ1ZnVzYWdl LCBOVUxMKTsKIAkJCWlmIChlcy0+d2FsKQogCQkJCXNob3dfd2FsX3VzYWdlKGVzLCAmaW5zdHJ1 bWVudC0+aW5zdHIud2FsdXNhZ2UpOwogCQkJRXhwbGFpbkNsb3NlV29ya2VyKG4sIGVzKTsKQEAg LTQwOTksNyArNDEwMiw3IEBAIHBlZWtfYnVmZmVyX3VzYWdlKEV4cGxhaW5TdGF0ZSAqZXMsIGNv bnN0IEJ1ZmZlclVzYWdlICp1c2FnZSkKICAqIFNob3cgYnVmZmVyIHVzYWdlIGRldGFpbHMuICBU aGlzIGJldHRlciBiZSBzeW5jIHdpdGggcGVla19idWZmZXJfdXNhZ2UuCiAgKi8KIHN0YXRpYyB2 b2lkCi1zaG93X2J1ZmZlcl91c2FnZShFeHBsYWluU3RhdGUgKmVzLCBjb25zdCBCdWZmZXJVc2Fn ZSAqdXNhZ2UpCitzaG93X2J1ZmZlcl91c2FnZShFeHBsYWluU3RhdGUgKmVzLCBjb25zdCBCdWZm ZXJVc2FnZSAqdXNhZ2UsIGNvbnN0IGNoYXIgKnRpdGxlKQogewogCWlmIChlcy0+Zm9ybWF0ID09 IEVYUExBSU5fRk9STUFUX1RFWFQpCiAJewpAQCAtNDEyNCw2ICs0MTI3LDggQEAgc2hvd19idWZm ZXJfdXNhZ2UoRXhwbGFpblN0YXRlICplcywgY29uc3QgQnVmZmVyVXNhZ2UgKnVzYWdlKQogCQlp ZiAoaGFzX3NoYXJlZCB8fCBoYXNfbG9jYWwgfHwgaGFzX3RlbXApCiAJCXsKIAkJCUV4cGxhaW5J bmRlbnRUZXh0KGVzKTsKKwkJCWlmICh0aXRsZSkKKwkJCQlhcHBlbmRTdHJpbmdJbmZvKGVzLT5z dHIsICIlcyAiLCB0aXRsZSk7CiAJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGVzLT5zdHIsICJC dWZmZXJzOiIpOwogCiAJCQlpZiAoaGFzX3NoYXJlZCkKQEAgLTQxNzksNiArNDE4NCw4IEBAIHNo b3dfYnVmZmVyX3VzYWdlKEV4cGxhaW5TdGF0ZSAqZXMsIGNvbnN0IEJ1ZmZlclVzYWdlICp1c2Fn ZSkKIAkJaWYgKGhhc19zaGFyZWRfdGltaW5nIHx8IGhhc19sb2NhbF90aW1pbmcgfHwgaGFzX3Rl bXBfdGltaW5nKQogCQl7CiAJCQlFeHBsYWluSW5kZW50VGV4dChlcyk7CisJCQlpZiAodGl0bGUp CisJCQkJYXBwZW5kU3RyaW5nSW5mbyhlcy0+c3RyLCAiJXMgIiwgdGl0bGUpOwogCQkJYXBwZW5k U3RyaW5nSW5mb1N0cmluZyhlcy0+c3RyLCAiSS9PIFRpbWluZ3M6Iik7CiAKIAkJCWlmIChoYXNf c2hhcmVkX3RpbWluZykKQEAgLTQyMjAsNDQgKzQyMjcsNDYgQEAgc2hvd19idWZmZXJfdXNhZ2Uo RXhwbGFpblN0YXRlICplcywgY29uc3QgQnVmZmVyVXNhZ2UgKnVzYWdlKQogCX0KIAllbHNlCiAJ ewotCQlFeHBsYWluUHJvcGVydHlJbnRlZ2VyKCJTaGFyZWQgSGl0IEJsb2NrcyIsIE5VTEwsCisJ CWNoYXIJICAgKnByZWZpeCA9IHRpdGxlID8gcHNwcmludGYoIiVzICIsIHRpdGxlKSA6IHBzdHJk dXAoIiIpOworCisJCUV4cGxhaW5Qcm9wZXJ0eUludGVnZXIocHNwcmludGYoIiVzU2hhcmVkIEhp dCBCbG9ja3MiLCBwcmVmaXgpLCBOVUxMLAogCQkJCQkJCSAgIHVzYWdlLT5zaGFyZWRfYmxrc19o aXQsIGVzKTsKLQkJRXhwbGFpblByb3BlcnR5SW50ZWdlcigiU2hhcmVkIFJlYWQgQmxvY2tzIiwg TlVMTCwKKwkJRXhwbGFpblByb3BlcnR5SW50ZWdlcihwc3ByaW50ZigiJXNTaGFyZWQgUmVhZCBC bG9ja3MiLCBwcmVmaXgpLCBOVUxMLAogCQkJCQkJCSAgIHVzYWdlLT5zaGFyZWRfYmxrc19yZWFk LCBlcyk7Ci0JCUV4cGxhaW5Qcm9wZXJ0eUludGVnZXIoIlNoYXJlZCBEaXJ0aWVkIEJsb2NrcyIs IE5VTEwsCisJCUV4cGxhaW5Qcm9wZXJ0eUludGVnZXIocHNwcmludGYoIiVzU2hhcmVkIERpcnRp ZWQgQmxvY2tzIiwgcHJlZml4KSwgTlVMTCwKIAkJCQkJCQkgICB1c2FnZS0+c2hhcmVkX2Jsa3Nf ZGlydGllZCwgZXMpOwotCQlFeHBsYWluUHJvcGVydHlJbnRlZ2VyKCJTaGFyZWQgV3JpdHRlbiBC bG9ja3MiLCBOVUxMLAorCQlFeHBsYWluUHJvcGVydHlJbnRlZ2VyKHBzcHJpbnRmKCIlc1NoYXJl ZCBXcml0dGVuIEJsb2NrcyIsIHByZWZpeCksIE5VTEwsCiAJCQkJCQkJICAgdXNhZ2UtPnNoYXJl ZF9ibGtzX3dyaXR0ZW4sIGVzKTsKLQkJRXhwbGFpblByb3BlcnR5SW50ZWdlcigiTG9jYWwgSGl0 IEJsb2NrcyIsIE5VTEwsCisJCUV4cGxhaW5Qcm9wZXJ0eUludGVnZXIocHNwcmludGYoIiVzTG9j YWwgSGl0IEJsb2NrcyIsIHByZWZpeCksIE5VTEwsCiAJCQkJCQkJICAgdXNhZ2UtPmxvY2FsX2Js a3NfaGl0LCBlcyk7Ci0JCUV4cGxhaW5Qcm9wZXJ0eUludGVnZXIoIkxvY2FsIFJlYWQgQmxvY2tz IiwgTlVMTCwKKwkJRXhwbGFpblByb3BlcnR5SW50ZWdlcihwc3ByaW50ZigiJXNMb2NhbCBSZWFk IEJsb2NrcyIsIHByZWZpeCksIE5VTEwsCiAJCQkJCQkJICAgdXNhZ2UtPmxvY2FsX2Jsa3NfcmVh ZCwgZXMpOwotCQlFeHBsYWluUHJvcGVydHlJbnRlZ2VyKCJMb2NhbCBEaXJ0aWVkIEJsb2NrcyIs IE5VTEwsCisJCUV4cGxhaW5Qcm9wZXJ0eUludGVnZXIocHNwcmludGYoIiVzTG9jYWwgRGlydGll ZCBCbG9ja3MiLCBwcmVmaXgpLCBOVUxMLAogCQkJCQkJCSAgIHVzYWdlLT5sb2NhbF9ibGtzX2Rp cnRpZWQsIGVzKTsKLQkJRXhwbGFpblByb3BlcnR5SW50ZWdlcigiTG9jYWwgV3JpdHRlbiBCbG9j a3MiLCBOVUxMLAorCQlFeHBsYWluUHJvcGVydHlJbnRlZ2VyKHBzcHJpbnRmKCIlc0xvY2FsIFdy aXR0ZW4gQmxvY2tzIiwgcHJlZml4KSwgTlVMTCwKIAkJCQkJCQkgICB1c2FnZS0+bG9jYWxfYmxr c193cml0dGVuLCBlcyk7Ci0JCUV4cGxhaW5Qcm9wZXJ0eUludGVnZXIoIlRlbXAgUmVhZCBCbG9j a3MiLCBOVUxMLAorCQlFeHBsYWluUHJvcGVydHlJbnRlZ2VyKHBzcHJpbnRmKCIlc1RlbXAgUmVh ZCBCbG9ja3MiLCBwcmVmaXgpLCBOVUxMLAogCQkJCQkJCSAgIHVzYWdlLT50ZW1wX2Jsa3NfcmVh ZCwgZXMpOwotCQlFeHBsYWluUHJvcGVydHlJbnRlZ2VyKCJUZW1wIFdyaXR0ZW4gQmxvY2tzIiwg TlVMTCwKKwkJRXhwbGFpblByb3BlcnR5SW50ZWdlcihwc3ByaW50ZigiJXNUZW1wIFdyaXR0ZW4g QmxvY2tzIiwgcHJlZml4KSwgTlVMTCwKIAkJCQkJCQkgICB1c2FnZS0+dGVtcF9ibGtzX3dyaXR0 ZW4sIGVzKTsKIAkJaWYgKHRyYWNrX2lvX3RpbWluZykKIAkJewotCQkJRXhwbGFpblByb3BlcnR5 RmxvYXQoIlNoYXJlZCBJL08gUmVhZCBUaW1lIiwgIm1zIiwKKwkJCUV4cGxhaW5Qcm9wZXJ0eUZs b2F0KHBzcHJpbnRmKCIlc1NoYXJlZCBJL08gUmVhZCBUaW1lIiwgcHJlZml4KSwgIm1zIiwKIAkJ CQkJCQkJIElOU1RSX1RJTUVfR0VUX01JTExJU0VDKHVzYWdlLT5zaGFyZWRfYmxrX3JlYWRfdGlt ZSksCiAJCQkJCQkJCSAzLCBlcyk7Ci0JCQlFeHBsYWluUHJvcGVydHlGbG9hdCgiU2hhcmVkIEkv TyBXcml0ZSBUaW1lIiwgIm1zIiwKKwkJCUV4cGxhaW5Qcm9wZXJ0eUZsb2F0KHBzcHJpbnRmKCIl c1NoYXJlZCBJL08gV3JpdGUgVGltZSIsIHByZWZpeCksICJtcyIsCiAJCQkJCQkJCSBJTlNUUl9U SU1FX0dFVF9NSUxMSVNFQyh1c2FnZS0+c2hhcmVkX2Jsa193cml0ZV90aW1lKSwKIAkJCQkJCQkJ IDMsIGVzKTsKLQkJCUV4cGxhaW5Qcm9wZXJ0eUZsb2F0KCJMb2NhbCBJL08gUmVhZCBUaW1lIiwg Im1zIiwKKwkJCUV4cGxhaW5Qcm9wZXJ0eUZsb2F0KHBzcHJpbnRmKCIlc0xvY2FsIEkvTyBSZWFk IFRpbWUiLCBwcmVmaXgpLCAibXMiLAogCQkJCQkJCQkgSU5TVFJfVElNRV9HRVRfTUlMTElTRUMo dXNhZ2UtPmxvY2FsX2Jsa19yZWFkX3RpbWUpLAogCQkJCQkJCQkgMywgZXMpOwotCQkJRXhwbGFp blByb3BlcnR5RmxvYXQoIkxvY2FsIEkvTyBXcml0ZSBUaW1lIiwgIm1zIiwKKwkJCUV4cGxhaW5Q cm9wZXJ0eUZsb2F0KHBzcHJpbnRmKCIlc0xvY2FsIEkvTyBXcml0ZSBUaW1lIiwgcHJlZml4KSwg Im1zIiwKIAkJCQkJCQkJIElOU1RSX1RJTUVfR0VUX01JTExJU0VDKHVzYWdlLT5sb2NhbF9ibGtf d3JpdGVfdGltZSksCiAJCQkJCQkJCSAzLCBlcyk7Ci0JCQlFeHBsYWluUHJvcGVydHlGbG9hdCgi VGVtcCBJL08gUmVhZCBUaW1lIiwgIm1zIiwKKwkJCUV4cGxhaW5Qcm9wZXJ0eUZsb2F0KHBzcHJp bnRmKCIlc1RlbXAgSS9PIFJlYWQgVGltZSIsIHByZWZpeCksICJtcyIsCiAJCQkJCQkJCSBJTlNU Ul9USU1FX0dFVF9NSUxMSVNFQyh1c2FnZS0+dGVtcF9ibGtfcmVhZF90aW1lKSwKIAkJCQkJCQkJ IDMsIGVzKTsKLQkJCUV4cGxhaW5Qcm9wZXJ0eUZsb2F0KCJUZW1wIEkvTyBXcml0ZSBUaW1lIiwg Im1zIiwKKwkJCUV4cGxhaW5Qcm9wZXJ0eUZsb2F0KHBzcHJpbnRmKCIlc1RlbXAgSS9PIFdyaXRl IFRpbWUiLCBwcmVmaXgpLCAibXMiLAogCQkJCQkJCQkgSU5TVFJfVElNRV9HRVRfTUlMTElTRUMo dXNhZ2UtPnRlbXBfYmxrX3dyaXRlX3RpbWUpLAogCQkJCQkJCQkgMywgZXMpOwogCQl9CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUHJvY25vZGUuYyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNQcm9jbm9kZS5jCmluZGV4IDZhNzRjYTUxNmFlLi41ZTQ3NjkzOWVkZiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1Byb2Nub2RlLmMKKysrIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZXhlY1Byb2Nub2RlLmMKQEAgLTQxNCw5ICs0MTQsMjQgQEAgRXhl Y0luaXROb2RlKFBsYW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCiAJLyog U2V0IHVwIGluc3RydW1lbnRhdGlvbiBmb3IgdGhpcyBub2RlIGlmIHJlcXVlc3RlZCAqLwogCWlm IChlc3RhdGUtPmVzX2luc3RydW1lbnQpCisJewogCQlyZXN1bHQtPmluc3RydW1lbnQgPSBJbnN0 ckFsbG9jTm9kZShlc3RhdGUtPmVzX2luc3RydW1lbnQsCiAJCQkJCQkJCQkJCXJlc3VsdC0+YXN5 bmNfY2FwYWJsZSk7CiAKKwkJLyogSW5kZXhTY2FuIHRyYWNrcyB0YWJsZSBhY2Nlc3Mgc2VwYXJh dGVseSBmcm9tIGluZGV4IGFjY2Vzcy4gKi8KKwkJaWYgKElzQShyZXN1bHQsIEluZGV4U2NhblN0 YXRlKSAmJiAoZXN0YXRlLT5lc19pbnN0cnVtZW50ICYgSU5TVFJVTUVOVF9CVUZGRVJTKSAhPSAw KQorCQl7CisJCQlJbmRleFNjYW5TdGF0ZSAqaXNzID0gY2FzdE5vZGUoSW5kZXhTY2FuU3RhdGUs IHJlc3VsdCk7CisKKwkJCS8qCisJCQkgKiBXZSBpbnRlbnRpb25hbGx5IGRvbid0IGNvbGxlY3Qg dGltaW5nIGhlcmUgKGV2ZW4gaWYgZW5hYmxlZCksCisJCQkgKiBzaW5jZSB3ZSBkb24ndCBuZWVk IGl0LCBhbmQgSW5kZXhOZXh0IGNhbGxzIEluc3RyUHVzaFN0YWNrIC8KKwkJCSAqIEluc3RyUG9w U3RhY2sgKGluc3RlYWQgb2YgSW5zdHJOb2RlKikgdG8gcmVkdWNlIG92ZXJoZWFkLgorCQkJICov CisJCQlpc3MtPmlzc19JbnN0cnVtZW50VGFibGUgPSBJbnN0ckFsbG9jTm9kZShJTlNUUlVNRU5U X0JVRkZFUlMsIGZhbHNlKTsKKwkJfQorCX0KKwogCXJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTgz Niw4ICs4NTEsMTkgQEAgRXhlY1JlbWVtYmVyTm9kZUluc3RydW1lbnRhdGlvbl93YWxrZXIoUGxh blN0YXRlICpub2RlLCB2b2lkICpjb250ZXh0KQogCQlyZXR1cm4gZmFsc2U7CiAKIAlpZiAobm9k ZS0+aW5zdHJ1bWVudCkKKwl7CiAJCUluc3RyUXVlcnlSZW1lbWJlck5vZGUocGFyZW50LCBub2Rl LT5pbnN0cnVtZW50KTsKIAorCQkvKiBJbmRleFNjYW4gaGFzIGEgc2VwYXJhdGUgZW50cnkgdG8g dHJhY2sgdGFibGUgYWNjZXNzICovCisJCWlmIChJc0Eobm9kZSwgSW5kZXhTY2FuU3RhdGUpKQor CQl7CisJCQlJbmRleFNjYW5TdGF0ZSAqaXNzID0gY2FzdE5vZGUoSW5kZXhTY2FuU3RhdGUsIG5v ZGUpOworCisJCQlpZiAoaXNzLT5pc3NfSW5zdHJ1bWVudFRhYmxlKQorCQkJCUluc3RyUXVlcnlS ZW1lbWJlck5vZGUocGFyZW50LCBpc3MtPmlzc19JbnN0cnVtZW50VGFibGUpOworCQl9CisJfQor CiAJcmV0dXJuIHBsYW5zdGF0ZV90cmVlX3dhbGtlcihub2RlLCBFeGVjUmVtZW1iZXJOb2RlSW5z dHJ1bWVudGF0aW9uX3dhbGtlciwgY29udGV4dCk7CiB9CiAKQEAgLTg3OSw2ICs5MDUsMTUgQEAg RXhlY0ZpbmFsaXplTm9kZUluc3RydW1lbnRhdGlvbl93YWxrZXIoUGxhblN0YXRlICpub2RlLCB2 b2lkICpjb250ZXh0KQogCWlmICghbm9kZS0+aW5zdHJ1bWVudCkKIAkJcmV0dXJuIGZhbHNlOwog CisJLyogSW5kZXhTY2FuIGhhcyBhIHNlcGFyYXRlIGVudHJ5IHRvIHRyYWNrIHRhYmxlIGFjY2Vz cyAqLworCWlmIChJc0Eobm9kZSwgSW5kZXhTY2FuU3RhdGUpKQorCXsKKwkJSW5kZXhTY2FuU3Rh dGUgKmlzcyA9IGNhc3ROb2RlKEluZGV4U2NhblN0YXRlLCBub2RlKTsKKworCQlpZiAoaXNzLT5p c3NfSW5zdHJ1bWVudFRhYmxlKQorCQkJaXNzLT5pc3NfSW5zdHJ1bWVudFRhYmxlID0gSW5zdHJG aW5hbGl6ZU5vZGUoaXNzLT5pc3NfSW5zdHJ1bWVudFRhYmxlLCAmbm9kZS0+aW5zdHJ1bWVudC0+ aW5zdHIpOworCX0KKwogCW5vZGUtPmluc3RydW1lbnQgPSBJbnN0ckZpbmFsaXplTm9kZShub2Rl LT5pbnN0cnVtZW50LCBwYXJlbnQpOwogCiAJcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4c2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZUluZGV4c2Nhbi5jCmluZGV4IGE2MTZhYmZmMDRjLi40Nzk0MDk1MDkyZSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4c2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVJbmRleHNjYW4uYwpAQCAtODMsNyArODMsOSBAQCBJbmRleE5leHQoSW5k ZXhTY2FuU3RhdGUgKm5vZGUpCiAJRXhwckNvbnRleHQgKmVjb250ZXh0OwogCVNjYW5EaXJlY3Rp b24gZGlyZWN0aW9uOwogCUluZGV4U2NhbkRlc2Mgc2NhbmRlc2M7CisJSXRlbVBvaW50ZXIgdGlk OwogCVR1cGxlVGFibGVTbG90ICpzbG90OworCWJvb2wJCWZvdW5kOwogCiAJLyoKIAkgKiBleHRy YWN0IG5lY2Vzc2FyeSBpbmZvcm1hdGlvbiBmcm9tIGluZGV4IHNjYW4gbm9kZQpAQCAtMTI4LDgg KzEzMCwyMiBAQCBJbmRleE5leHQoSW5kZXhTY2FuU3RhdGUgKm5vZGUpCiAJLyoKIAkgKiBvaywg bm93IHRoYXQgd2UgaGF2ZSB3aGF0IHdlIG5lZWQsIGZldGNoIHRoZSBuZXh0IHR1cGxlLgogCSAq LwotCXdoaWxlIChpbmRleF9nZXRuZXh0X3Nsb3Qoc2NhbmRlc2MsIGRpcmVjdGlvbiwgc2xvdCkp CisJd2hpbGUgKCh0aWQgPSBpbmRleF9nZXRuZXh0X3RpZChzY2FuZGVzYywgZGlyZWN0aW9uKSkg IT0gTlVMTCkKIAl7CisJCWlmIChub2RlLT5pc3NfSW5zdHJ1bWVudFRhYmxlKQorCQkJSW5zdHJQ dXNoU3RhY2soJm5vZGUtPmlzc19JbnN0cnVtZW50VGFibGUtPmluc3RyKTsKKworCQlmb3VuZCA9 IGluZGV4X2ZldGNoX2hlYXAoc2NhbmRlc2MsIHNsb3QpOworCisJCWlmIChub2RlLT5pc3NfSW5z dHJ1bWVudFRhYmxlKQorCQkJSW5zdHJQb3BTdGFjaygmbm9kZS0+aXNzX0luc3RydW1lbnRUYWJs ZS0+aW5zdHIpOworCisJCWlmICh1bmxpa2VseSghZm91bmQpKQorCQkJY29udGludWU7CisKKwkJ aWYgKHNjYW5kZXNjLT54c19oZWFwX2NvbnRpbnVlKQorCQkJZWxvZyhFUlJPUiwgIm5vbi1NVkND IHNuYXBzaG90cyBhcmUgbm90IHN1cHBvcnRlZCBpbiBpbmRleC1vbmx5IHNjYW5zIik7CisKIAkJ Q0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIAogCQkvKgpAQCAtODEyLDYgKzgyOCwxMSBAQCBFeGVj RW5kSW5kZXhTY2FuKEluZGV4U2NhblN0YXRlICpub2RlKQogCQkgKiB3aGljaCB3aWxsIGhhdmUg YSBuZXcgSW5kZXhPbmx5U2NhblN0YXRlIGFuZCB6ZXJvZWQgc3RhdHMuCiAJCSAqLwogCQl3aW5z dHJ1bWVudC0+bnNlYXJjaGVzICs9IG5vZGUtPmlzc19JbnN0cnVtZW50Lm5zZWFyY2hlczsKKwkJ aWYgKG5vZGUtPmlzc19JbnN0cnVtZW50VGFibGUpCisJCXsKKwkJCUJ1ZmZlclVzYWdlQWRkKCZ3 aW5zdHJ1bWVudC0+d29ya2VyX3RhYmxlX2J1ZnVzYWdlLCAmbm9kZS0+aXNzX0luc3RydW1lbnRU YWJsZS0+aW5zdHIuYnVmdXNhZ2UpOworCQkJV2FsVXNhZ2VBZGQoJndpbnN0cnVtZW50LT53b3Jr ZXJfdGFibGVfd2FsdXNhZ2UsICZub2RlLT5pc3NfSW5zdHJ1bWVudFRhYmxlLT5pbnN0ci53YWx1 c2FnZSk7CisJCX0KIAl9CiAKIAkvKgpAQCAtMTgxOSw0ICsxODQwLDE0IEBAIEV4ZWNJbmRleFNj YW5SZXRyaWV2ZUluc3RydW1lbnRhdGlvbihJbmRleFNjYW5TdGF0ZSAqbm9kZSkKIAkJU2hhcmVk SW5mby0+bnVtX3dvcmtlcnMgKiBzaXplb2YoSW5kZXhTY2FuSW5zdHJ1bWVudGF0aW9uKTsKIAlu b2RlLT5pc3NfU2hhcmVkSW5mbyA9IHBhbGxvYyhzaXplKTsKIAltZW1jcHkobm9kZS0+aXNzX1No YXJlZEluZm8sIFNoYXJlZEluZm8sIHNpemUpOworCisJLyogQWdncmVnYXRlIHdvcmtlcnMnIHRh YmxlIGJ1ZmZlci9XQUwgdXNhZ2UgaW50byBsZWFkZXIncyBlbnRyeSAqLworCWlmIChub2RlLT5p c3NfSW5zdHJ1bWVudFRhYmxlKQorCQlmb3IgKGludCBpID0gMDsgaSA8IG5vZGUtPmlzc19TaGFy ZWRJbmZvLT5udW1fd29ya2VyczsgaSsrKQorCQl7CisJCQlCdWZmZXJVc2FnZUFkZCgmbm9kZS0+ aXNzX0luc3RydW1lbnRUYWJsZS0+aW5zdHIuYnVmdXNhZ2UsCisJCQkJCQkgICAmbm9kZS0+aXNz X1NoYXJlZEluZm8tPndpbnN0cnVtZW50W2ldLndvcmtlcl90YWJsZV9idWZ1c2FnZSk7CisJCQlX YWxVc2FnZUFkZCgmbm9kZS0+aXNzX0luc3RydW1lbnRUYWJsZS0+aW5zdHIud2FsdXNhZ2UsCisJ CQkJCQkmbm9kZS0+aXNzX1NoYXJlZEluZm8tPndpbnN0cnVtZW50W2ldLndvcmtlcl90YWJsZV93 YWx1c2FnZSk7CisJCX0KIH0KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2luc3Ry dW1lbnRfbm9kZS5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvaW5zdHJ1bWVudF9ub2RlLmgKaW5k ZXggODg0N2Q3Zjk0ZmEuLjE3MGI2MTQzZWY2IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVj dXRvci9pbnN0cnVtZW50X25vZGUuaAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9pbnN0cnVt ZW50X25vZGUuaApAQCAtMTgsNiArMTgsOCBAQAogI2lmbmRlZiBJTlNUUlVNRU5UX05PREVfSAog I2RlZmluZSBJTlNUUlVNRU5UX05PREVfSAogCisjaW5jbHVkZSAiZXhlY3V0b3IvaW5zdHJ1bWVu dC5oIgorCiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoJSW5zdHJ1bWVudGF0aW9uIGlu Zm9ybWF0aW9uIGZvciBhZ2dyZWdhdGUgZnVuY3Rpb24gZXhlY3V0aW9uCkBAIC00OCw2ICs1MCwx MCBAQCB0eXBlZGVmIHN0cnVjdCBJbmRleFNjYW5JbnN0cnVtZW50YXRpb24KIHsKIAkvKiBJbmRl eCBzZWFyY2ggY291bnQgKGluY3JlbWVudGVkIHdpdGggcGdzdGF0X2NvdW50X2luZGV4X3NjYW4g Y2FsbCkgKi8KIAl1aW50NjQJCW5zZWFyY2hlczsKKworCS8qIFVzZWQgZm9yIHBhc3NpbmcgaXNz X0luc3RydW1lbnRUYWJsZVN0YWNrIGRhdGEgZnJvbSBwYXJhbGxlbCB3b3JrZXJzICovCisJQnVm ZmVyVXNhZ2Ugd29ya2VyX3RhYmxlX2J1ZnVzYWdlOworCVdhbFVzYWdlCXdvcmtlcl90YWJsZV93 YWx1c2FnZTsKIH0gSW5kZXhTY2FuSW5zdHJ1bWVudGF0aW9uOwogCiAvKgpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9k ZXMuaAppbmRleCA2MDVjN2E2Y2MzOS4uYzc3ODY0MWMxM2QgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL25vZGVzL2V4ZWNub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5o CkBAIC0xNzI4LDYgKzE3MjgsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QgSW5kZXhTY2FuU3RhdGUKIAlJ bmRleFNjYW5JbnN0cnVtZW50YXRpb24gaXNzX0luc3RydW1lbnQ7CiAJU2hhcmVkSW5kZXhTY2Fu SW5zdHJ1bWVudGF0aW9uICppc3NfU2hhcmVkSW5mbzsKIAorCS8qCisJICogSW5zdHJ1bWVudGF0 aW9uIHV0aWxpemVkIGZvciB0cmFja2luZyB0YWJsZSBhY2Nlc3MuIFRoaXMgaXMgc2VwYXJhdGUK KwkgKiBmcm9tIGlzc19JbnN0cnVtZW50IHNpbmNlIGl0IG5lZWRzIHRvIGJlIGFsbG9jYXRlZCBp biB0aGUgcmlnaHQgY29udGV4dAorCSAqIGFuZCBJbmRleFNjYW5JbnN0cnVtZW50YXRpb24gc2hv dWxkbid0IGNvbnRhaW4gcG9pbnRlcnMuCisJICovCisJTm9kZUluc3RydW1lbnRhdGlvbiAqaXNz X0luc3RydW1lbnRUYWJsZTsKKwogCS8qIFRoZXNlIGFyZSBuZWVkZWQgZm9yIHJlLWNoZWNraW5n IE9SREVSIEJZIGV4cHIgb3JkZXJpbmcgKi8KIAlwYWlyaW5naGVhcCAqaXNzX1Jlb3JkZXJRdWV1 ZTsKIAlib29sCQlpc3NfUmVhY2hlZEVuZDsKLS0gCjIuNDcuMQoK --00000000000002247a064c7bb7b8 Content-Type: application/octet-stream; name="v7-0008-Add-pg_session_buffer_usage-contrib-module.patch" Content-Disposition: attachment; filename="v7-0008-Add-pg_session_buffer_usage-contrib-module.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmh8zh0s7 RnJvbSAxNTkwMDg0M2ZmZmEyYzY0MDVhNjczZjUwZjk4YzM3YzA5ZTYxN2U4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpEYXRlOiBT YXQsIDcgTWFyIDIwMjYgMTE6NDY6NDEgLTA4MDAKU3ViamVjdDogW1BBVENIIHY3IDgvOF0gQWRk IHBnX3Nlc3Npb25fYnVmZmVyX3VzYWdlIGNvbnRyaWIgbW9kdWxlCgpUaGlzIGlzIGludGVuZGVk IGZvciB0ZXN0aW5nIGluc3RydW1lbnRhdGlvbiByZWxhdGVkIGxvZ2ljIGFzIGl0IHBlcnRhaW5z CnRvIHRoZSB0b3AgbGV2ZWwgc3RhY2sgdGhhdCBpcyBtYWludGFpbmVkIGFzIGEgcnVubmluZyB0 b3RhbC4gVGhlcmUgaXMKY3VycmVudGx5IG5vIGluLWNvcmUgdXNlciB0aGF0IHV0aWxpemVzIHRo ZSB0b3AtbGV2ZWwgdmFsdWVzIGluIHRoaXMKbWFubmVyLCBhbmQgZXNwZWNpYWxseSBkdXJpbmcg YWJvcnQgc2l0dWF0aW9ucyB0aGlzIGhlbHBzIGVuc3VyZSB3ZSBkb24ndApsb3NlIGFjdGl2aXR5 IGR1ZSB0byBpbmNvcnJlY3QgaGFuZGxpbmcgb2YgdW5maW5hbGl6ZWQgbm9kZSBzdGFja3MuCi0t LQogY29udHJpYi9tZXNvbi5idWlsZCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsK IGNvbnRyaWIvcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2UvTWFrZWZpbGUgICAgICB8ICAyMyArKwog Li4uL2V4cGVjdGVkL3BnX3Nlc3Npb25fYnVmZmVyX3VzYWdlLm91dCAgICAgIHwgMjgzICsrKysr KysrKysrKysrKysrKwogY29udHJpYi9wZ19zZXNzaW9uX2J1ZmZlcl91c2FnZS9tZXNvbi5idWls ZCAgIHwgIDM0ICsrKwogLi4uL3BnX3Nlc3Npb25fYnVmZmVyX3VzYWdlLS0xLjAuc3FsICAgICAg ICAgIHwgIDMxICsrCiAuLi4vcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2UuYyAgICAgICAgICAgICAg ICAgfCAgOTUgKysrKysrCiAuLi4vcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2UuY29udHJvbCAgICAg ICAgICAgfCAgIDUgKwogLi4uL3NxbC9wZ19zZXNzaW9uX2J1ZmZlcl91c2FnZS5zcWwgICAgICAg ICAgIHwgMjA0ICsrKysrKysrKysrKysKIDggZmlsZXMgY2hhbmdlZCwgNjc2IGluc2VydGlvbnMo KykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBjb250cmliL3BnX3Nlc3Npb25fYnVmZmVyX3VzYWdlL01h a2VmaWxlCiBjcmVhdGUgbW9kZSAxMDA2NDQgY29udHJpYi9wZ19zZXNzaW9uX2J1ZmZlcl91c2Fn ZS9leHBlY3RlZC9wZ19zZXNzaW9uX2J1ZmZlcl91c2FnZS5vdXQKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBjb250cmliL3BnX3Nlc3Npb25fYnVmZmVyX3VzYWdlL21lc29uLmJ1aWxkCiBjcmVhdGUgbW9k ZSAxMDA2NDQgY29udHJpYi9wZ19zZXNzaW9uX2J1ZmZlcl91c2FnZS9wZ19zZXNzaW9uX2J1ZmZl cl91c2FnZS0tMS4wLnNxbAogY3JlYXRlIG1vZGUgMTAwNjQ0IGNvbnRyaWIvcGdfc2Vzc2lvbl9i dWZmZXJfdXNhZ2UvcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2UuYwogY3JlYXRlIG1vZGUgMTAwNjQ0 IGNvbnRyaWIvcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2UvcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2Uu Y29udHJvbAogY3JlYXRlIG1vZGUgMTAwNjQ0IGNvbnRyaWIvcGdfc2Vzc2lvbl9idWZmZXJfdXNh Z2Uvc3FsL3BnX3Nlc3Npb25fYnVmZmVyX3VzYWdlLnNxbAoKZGlmZiAtLWdpdCBhL2NvbnRyaWIv bWVzb24uYnVpbGQgYi9jb250cmliL21lc29uLmJ1aWxkCmluZGV4IGRlZjEzMjU3Y2JlLi5jYWIx YjIxMTY3OCAxMDA2NDQKLS0tIGEvY29udHJpYi9tZXNvbi5idWlsZAorKysgYi9jb250cmliL21l c29uLmJ1aWxkCkBAIC01MCw2ICs1MCw3IEBAIHN1YmRpcigncGdfbG9naWNhbGluc3BlY3QnKQog c3ViZGlyKCdwZ19vdmVyZXhwbGFpbicpCiBzdWJkaXIoJ3BnX3ByZXdhcm0nKQogc3ViZGlyKCdw Z3Jvd2xvY2tzJykKK3N1YmRpcigncGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2UnKQogc3ViZGlyKCdw Z19zdGF0X3N0YXRlbWVudHMnKQogc3ViZGlyKCdwZ3N0YXR0dXBsZScpCiBzdWJkaXIoJ3BnX3N1 cmdlcnknKQpkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ19zZXNzaW9uX2J1ZmZlcl91c2FnZS9NYWtl ZmlsZSBiL2NvbnRyaWIvcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2UvTWFrZWZpbGUKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjc1YmQ4ZTA5YjNkCi0tLSAvZGV2L251bGwK KysrIGIvY29udHJpYi9wZ19zZXNzaW9uX2J1ZmZlcl91c2FnZS9NYWtlZmlsZQpAQCAtMCwwICsx LDIzIEBACisjIGNvbnRyaWIvcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2UvTWFrZWZpbGUKKworTU9E VUxFX2JpZyA9IHBnX3Nlc3Npb25fYnVmZmVyX3VzYWdlCitPQkpTID0gXAorCSQoV0lOMzJSRVMp IFwKKwlwZ19zZXNzaW9uX2J1ZmZlcl91c2FnZS5vCisKK0VYVEVOU0lPTiA9IHBnX3Nlc3Npb25f YnVmZmVyX3VzYWdlCitEQVRBID0gcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2UtLTEuMC5zcWwKK1BH RklMRURFU0MgPSAicGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2UgLSBzaG93IGJ1ZmZlciB1c2FnZSBz dGF0aXN0aWNzIGZvciB0aGUgY3VycmVudCBzZXNzaW9uIgorCitSRUdSRVNTID0gcGdfc2Vzc2lv bl9idWZmZXJfdXNhZ2UKKworaWZkZWYgVVNFX1BHWFMKK1BHX0NPTkZJRyA9IHBnX2NvbmZpZwor UEdYUyA6PSAkKHNoZWxsICQoUEdfQ09ORklHKSAtLXBneHMpCitpbmNsdWRlICQoUEdYUykKK2Vs c2UKK3N1YmRpciA9IGNvbnRyaWIvcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2UKK3RvcF9idWlsZGRp ciA9IC4uLy4uCitpbmNsdWRlICQodG9wX2J1aWxkZGlyKS9zcmMvTWFrZWZpbGUuZ2xvYmFsCitp bmNsdWRlICQodG9wX3NyY2RpcikvY29udHJpYi9jb250cmliLWdsb2JhbC5taworZW5kaWYKZGlm ZiAtLWdpdCBhL2NvbnRyaWIvcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2UvZXhwZWN0ZWQvcGdfc2Vz c2lvbl9idWZmZXJfdXNhZ2Uub3V0IGIvY29udHJpYi9wZ19zZXNzaW9uX2J1ZmZlcl91c2FnZS9l eHBlY3RlZC9wZ19zZXNzaW9uX2J1ZmZlcl91c2FnZS5vdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAuLjI0MmI0MDAzOTUwCi0tLSAvZGV2L251bGwKKysrIGIvY29udHJp Yi9wZ19zZXNzaW9uX2J1ZmZlcl91c2FnZS9leHBlY3RlZC9wZ19zZXNzaW9uX2J1ZmZlcl91c2Fn ZS5vdXQKQEAgLTAsMCArMSwyODMgQEAKK0xPQUQgJ3BnX3Nlc3Npb25fYnVmZmVyX3VzYWdlJzsK K0NSRUFURSBFWFRFTlNJT04gcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2U7CistLSBWZXJpZnkgYWxs IGNvbHVtbnMgYXJlIG5vbi1uZWdhdGl2ZQorU0VMRUNUIGNvdW50KCopID0gMSBBUyBvayBGUk9N IHBnX3Nlc3Npb25fYnVmZmVyX3VzYWdlKCkKK1dIRVJFIHNoYXJlZF9ibGtzX2hpdCA+PSAwIEFO RCBzaGFyZWRfYmxrc19yZWFkID49IDAKKyAgQU5EIHNoYXJlZF9ibGtzX2RpcnRpZWQgPj0gMCBB TkQgc2hhcmVkX2Jsa3Nfd3JpdHRlbiA+PSAwCisgIEFORCBsb2NhbF9ibGtzX2hpdCA+PSAwIEFO RCBsb2NhbF9ibGtzX3JlYWQgPj0gMAorICBBTkQgbG9jYWxfYmxrc19kaXJ0aWVkID49IDAgQU5E IGxvY2FsX2Jsa3Nfd3JpdHRlbiA+PSAwCisgIEFORCB0ZW1wX2Jsa3NfcmVhZCA+PSAwIEFORCB0 ZW1wX2Jsa3Nfd3JpdHRlbiA+PSAwCisgIEFORCBzaGFyZWRfYmxrX3JlYWRfdGltZSA+PSAwIEFO RCBzaGFyZWRfYmxrX3dyaXRlX3RpbWUgPj0gMAorICBBTkQgbG9jYWxfYmxrX3JlYWRfdGltZSA+ PSAwIEFORCBsb2NhbF9ibGtfd3JpdGVfdGltZSA+PSAwCisgIEFORCB0ZW1wX2Jsa19yZWFkX3Rp bWUgPj0gMCBBTkQgdGVtcF9ibGtfd3JpdGVfdGltZSA+PSAwOworIG9rIAorLS0tLQorIHQKKygx IHJvdykKKworLS0gVmVyaWZ5IGNvdW50ZXJzIGluY3JlYXNlIGFmdGVyIGJ1ZmZlciBhY3Rpdml0 eQorU0VMRUNUIHBnX3Nlc3Npb25fYnVmZmVyX3VzYWdlX3Jlc2V0KCk7CisgcGdfc2Vzc2lvbl9i dWZmZXJfdXNhZ2VfcmVzZXQgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCiso MSByb3cpCisKK0NSRUFURSBURU1QIFRBQkxFIHRlc3RfYnVmX2FjdGl2aXR5IChpZCBpbnQsIGRh dGEgdGV4dCk7CitJTlNFUlQgSU5UTyB0ZXN0X2J1Zl9hY3Rpdml0eSBTRUxFQ1QgaSwgcmVwZWF0 KCd4JywgMTAwKSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDAwKSBBUyBpOworU0VMRUNUIGNv dW50KCopIEZST00gdGVzdF9idWZfYWN0aXZpdHk7CisgY291bnQgCistLS0tLS0tCisgIDEwMDAK KygxIHJvdykKKworU0VMRUNUIGxvY2FsX2Jsa3NfaGl0ICsgbG9jYWxfYmxrc19yZWFkID4gMCBB UyBibG9ja3NfaW5jcmVhc2VkCitGUk9NIHBnX3Nlc3Npb25fYnVmZmVyX3VzYWdlKCk7CisgYmxv Y2tzX2luY3JlYXNlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworRFJPUCBU QUJMRSB0ZXN0X2J1Zl9hY3Rpdml0eTsKKy0tIFBhcmFsbGVsIHF1ZXJ5IHRlc3QKK0NSRUFURSBU QUJMRSBwYXJfZGNfdGFiIChhIGludCwgYiBjaGFyKDIwMCkpOworSU5TRVJUIElOVE8gcGFyX2Rj X3RhYiBTRUxFQ1QgaSwgcmVwZWF0KCd4JywgMjAwKSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1 MDAwKSBBUyBpOworU0VMRUNUIGNvdW50KCopIEZST00gcGFyX2RjX3RhYjsKKyBjb3VudCAKKy0t LS0tLS0KKyAgNTAwMAorKDEgcm93KQorCistLSBNZWFzdXJlIHNlcmlhbCBzY2FuIGRlbHRhIChs ZWFkZXIgZG9lcyBhbGwgdGhlIHdvcmspCitTRVQgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dh dGhlciA9IDA7CitTRUxFQ1QgcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2VfcmVzZXQoKTsKKyBwZ19z ZXNzaW9uX2J1ZmZlcl91c2FnZV9yZXNldCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAKKygxIHJvdykKKworU0VMRUNUIGNvdW50KCopIEZST00gcGFyX2RjX3RhYjsKKyBjb3Vu dCAKKy0tLS0tLS0KKyAgNTAwMAorKDEgcm93KQorCitDUkVBVEUgVEVNUCBUQUJMRSBkY19zZXJp YWxfcmVzdWx0IEFTCitTRUxFQ1Qgc2hhcmVkX2Jsa3NfaGl0IEFTIHNlcmlhbF9kZWx0YSBGUk9N IHBnX3Nlc3Npb25fYnVmZmVyX3VzYWdlKCk7CistLSBNZWFzdXJlIHBhcmFsbGVsIHNjYW4gZGVs dGEgd2l0aCBsZWFkZXIgTk9UIHBhcnRpY2lwYXRpbmcgaW4gc2Nhbm5pbmcuCistLSBXb3JrZXJz IGRvIGFsbCB0YWJsZSBzY2FubmluZzsgbGVhZGVyIG9ubHkgcnVucyB0aGUgR2F0aGVyIG5vZGUu CitTRVQgcGFyYWxsZWxfc2V0dXBfY29zdCA9IDA7CitTRVQgcGFyYWxsZWxfdHVwbGVfY29zdCA9 IDA7CitTRVQgbWluX3BhcmFsbGVsX3RhYmxlX3NjYW5fc2l6ZSA9IDA7CitTRVQgbWF4X3BhcmFs bGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9IDI7CitTRVQgcGFyYWxsZWxfbGVhZGVyX3BhcnRpY2lw YXRpb24gPSBvZmY7CitTRUxFQ1QgcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2VfcmVzZXQoKTsKKyBw Z19zZXNzaW9uX2J1ZmZlcl91c2FnZV9yZXNldCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIGNvdW50KCopIEZST00gcGFyX2RjX3RhYjsKKyBj b3VudCAKKy0tLS0tLS0KKyAgNTAwMAorKDEgcm93KQorCistLSBDb25maXJtIHdlIGdvdCBhIHNp bWlsYXIgaGl0IGNvdW50ZXIgdGhyb3VnaCBwYXJhbGxlbCB3b3JrZXIgYWNjdW11bGF0aW9uCitT RUxFQ1Qgc2hhcmVkX2Jsa3NfaGl0ID4gcy5zZXJpYWxfZGVsdGEgLyAyIEFORCBzaGFyZWRfYmxr c19oaXQgPCBzLnNlcmlhbF9kZWx0YSAqIDIKKyAgICAgICBBUyBsZWFkZXJfYnVmZmVyc19tYXRj aAorRlJPTSBwZ19zZXNzaW9uX2J1ZmZlcl91c2FnZSgpLCBkY19zZXJpYWxfcmVzdWx0IHM7Cisg bGVhZGVyX2J1ZmZlcnNfbWF0Y2ggCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgdAorKDEgcm93 KQorCitSRVNFVCBwYXJhbGxlbF9zZXR1cF9jb3N0OworUkVTRVQgcGFyYWxsZWxfdHVwbGVfY29z dDsKK1JFU0VUIG1pbl9wYXJhbGxlbF90YWJsZV9zY2FuX3NpemU7CitSRVNFVCBtYXhfcGFyYWxs ZWxfd29ya2Vyc19wZXJfZ2F0aGVyOworUkVTRVQgcGFyYWxsZWxfbGVhZGVyX3BhcnRpY2lwYXRp b247CitEUk9QIFRBQkxFIHBhcl9kY190YWIsIGRjX3NlcmlhbF9yZXN1bHQ7CistLQorLS0gQWJv cnQvZXhjZXB0aW9uIHRlc3RzOiB2ZXJpZnkgYnVmZmVyIHVzYWdlIHN1cnZpdmVzIHZhcmlvdXMg ZXJyb3IgcGF0aHMuCistLQorLS0gUm9sbGVkLWJhY2sgZGl2aWRlLWJ5LXplcm8gdW5kZXIgRVhQ TEFJTiBBTkFMWVpFCitDUkVBVEUgVEVNUCBUQUJMRSBleGNfdGFiIChhIGludCwgYiBjaGFyKDIw KSk7CitTRUxFQ1QgcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2VfcmVzZXQoKTsKKyBwZ19zZXNzaW9u X2J1ZmZlcl91c2FnZV9yZXNldCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAK KygxIHJvdykKKworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUywgQ09TVFMgT0ZGKQorICAgICAg ICBXSVRIIGlucyBBUyAoSU5TRVJUIElOVE8gZXhjX3RhYiBWQUxVRVMgKDEsICdhYWEnKSBSRVRV Uk5JTkcgYSkKKyAgICAgICAgU0VMRUNUIGEgLyAwIEZST00gaW5zOworRVJST1I6ICBkaXZpc2lv biBieSB6ZXJvCitTRUxFQ1QgbG9jYWxfYmxrc19kaXJ0aWVkID4gMCBBUyBleGNlcHRpb25fYnVm ZmVyc192aXNpYmxlCitGUk9NIHBnX3Nlc3Npb25fYnVmZmVyX3VzYWdlKCk7CisgZXhjZXB0aW9u X2J1ZmZlcnNfdmlzaWJsZSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHQKKygxIHJv dykKKworRFJPUCBUQUJMRSBleGNfdGFiOworLS0gVW5pcXVlIGNvbnN0cmFpbnQgdmlvbGF0aW9u IGluIHJlZ3VsYXIgcXVlcnkKK0NSRUFURSBURU1QIFRBQkxFIHVuaXF1ZV90YWIgKGEgaW50IFVO SVFVRSwgYiBjaGFyKDIwKSk7CitJTlNFUlQgSU5UTyB1bmlxdWVfdGFiIFZBTFVFUyAoMSwgJ2Zp cnN0Jyk7CitTRUxFQ1QgcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2VfcmVzZXQoKTsKKyBwZ19zZXNz aW9uX2J1ZmZlcl91c2FnZV9yZXNldCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyAKKygxIHJvdykKKworSU5TRVJUIElOVE8gdW5pcXVlX3RhYiBWQUxVRVMgKDEsICdkdXBsaWNh dGUnKTsKK0VSUk9SOiAgZHVwbGljYXRlIGtleSB2YWx1ZSB2aW9sYXRlcyB1bmlxdWUgY29uc3Ry YWludCAidW5pcXVlX3RhYl9hX2tleSIKK0RFVEFJTDogIEtleSAoYSk9KDEpIGFscmVhZHkgZXhp c3RzLgorU0VMRUNUIGxvY2FsX2Jsa3NfaGl0ID4gMCBBUyB1bmlxdWVfdmlvbGF0aW9uX2J1ZmZl cnNfdmlzaWJsZQorRlJPTSBwZ19zZXNzaW9uX2J1ZmZlcl91c2FnZSgpOworIHVuaXF1ZV92aW9s YXRpb25fYnVmZmVyc192aXNpYmxlIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIHQKKygxIHJvdykKKworRFJPUCBUQUJMRSB1bmlxdWVfdGFiOworLS0gQ2F1Z2h0IGV4Y2Vw dGlvbiBpbiBQTC9wZ1NRTCBzdWJ0cmFuc2FjdGlvbiAoQkVHSU4uLi5FWENFUFRJT04pCitDUkVB VEUgVEVNUCBUQUJMRSBzdWJ4YWN0X3RhYiAoYSBpbnQsIGIgY2hhcigyMCkpOworQ1JFQVRFIEZV TkNUSU9OIHN1YnhhY3RfZXhjX2Z1bmMoKSBSRVRVUk5TIHRleHQgQVMgJCQKK0JFR0lOCisgICAg QkVHSU4KKyAgICAgICAgRVhFQ1VURSAnRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUywgQ09TVFMg T0ZGKQorICAgICAgICAgICAgV0lUSCBpbnMgQVMgKElOU0VSVCBJTlRPIHN1YnhhY3RfdGFiIFZB TFVFUyAoMSwgJydhYWEnJykgUkVUVVJOSU5HIGEpCisgICAgICAgICAgICBTRUxFQ1QgYSAvIDAg RlJPTSBpbnMnOworICAgIEVYQ0VQVElPTiBXSEVOIGRpdmlzaW9uX2J5X3plcm8gVEhFTgorICAg ICAgICBSRVRVUk4gJ2NhdWdodCc7CisgICAgRU5EOworICAgIFJFVFVSTiAnbm90IHJlYWNoZWQn OworRU5EOworJCQgTEFOR1VBR0UgcGxwZ3NxbDsKK1NFTEVDVCBwZ19zZXNzaW9uX2J1ZmZlcl91 c2FnZV9yZXNldCgpOworIHBnX3Nlc3Npb25fYnVmZmVyX3VzYWdlX3Jlc2V0IAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1Qgc3VieGFjdF9leGNf ZnVuYygpOworIHN1YnhhY3RfZXhjX2Z1bmMgCistLS0tLS0tLS0tLS0tLS0tLS0KKyBjYXVnaHQK KygxIHJvdykKKworU0VMRUNUIGxvY2FsX2Jsa3NfZGlydGllZCA+IDAgQVMgc3VieGFjdF9idWZm ZXJzX3Zpc2libGUKK0ZST00gcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2UoKTsKKyBzdWJ4YWN0X2J1 ZmZlcnNfdmlzaWJsZSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisK K0RST1AgRlVOQ1RJT04gc3VieGFjdF9leGNfZnVuYzsKK0RST1AgVEFCTEUgc3VieGFjdF90YWI7 CistLSBDdXJzb3IgKEZPUiBsb29wKSBpbiBhYm9ydGVkIHN1YnRyYW5zYWN0aW9uOyB2ZXJpZnkg cG9zdC1leGNlcHRpb24gdHJhY2tpbmcKK0NSRUFURSBURU1QIFRBQkxFIGN1cnNvcl90YWIgKGEg aW50LCBiIGNoYXIoMjAwKSk7CitJTlNFUlQgSU5UTyBjdXJzb3JfdGFiIFNFTEVDVCBpLCByZXBl YXQoJ3gnLCAyMDApIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMCkgQVMgaTsKK0NSRUFURSBG VU5DVElPTiBjdXJzb3JfZXhjX2Z1bmMoKSBSRVRVUk5TIHRleHQgQVMgJCQKK0RFQ0xBUkUKKyAg ICByZWMgcmVjb3JkOworICAgIGNudCBpbnQgOj0gMDsKK0JFR0lOCisgICAgQkVHSU4KKyAgICAg ICAgRk9SIHJlYyBJTiBTRUxFQ1QgKiBGUk9NIGN1cnNvcl90YWIgTE9PUAorICAgICAgICAgICAg Y250IDo9IGNudCArIDE7CisgICAgICAgICAgICBJRiBjbnQgPSAyNTAgVEhFTgorICAgICAgICAg ICAgICAgIFBFUkZPUk0gMSAvIDA7CisgICAgICAgICAgICBFTkQgSUY7CisgICAgICAgIEVORCBM T09QOworICAgIEVYQ0VQVElPTiBXSEVOIGRpdmlzaW9uX2J5X3plcm8gVEhFTgorICAgICAgICBS RVRVUk4gJ2NhdWdodCBhZnRlciAnIHx8IGNudCB8fCAnIHJvd3MnOworICAgIEVORDsKKyAgICBS RVRVUk4gJ25vdCByZWFjaGVkJzsKK0VORDsKKyQkIExBTkdVQUdFIHBscGdzcWw7CitTRUxFQ1Qg cGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2VfcmVzZXQoKTsKKyBwZ19zZXNzaW9uX2J1ZmZlcl91c2Fn ZV9yZXNldCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKwor U0VMRUNUIGN1cnNvcl9leGNfZnVuYygpOworICAgIGN1cnNvcl9leGNfZnVuYyAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgY2F1Z2h0IGFmdGVyIDI1MCByb3dzCisoMSByb3cpCisKK1NF TEVDVCBsb2NhbF9ibGtzX2hpdCArIGxvY2FsX2Jsa3NfcmVhZCA+IDAKKyAgICAgICBBUyBjdXJz b3Jfc3VieGFjdF9idWZmZXJzX3Zpc2libGUKK0ZST00gcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2Uo KTsKKyBjdXJzb3Jfc3VieGFjdF9idWZmZXJzX3Zpc2libGUgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworRFJPUCBGVU5DVElPTiBjdXJzb3JfZXhjX2Z1 bmM7CitEUk9QIFRBQkxFIGN1cnNvcl90YWI7CistLSBQYXJhbGxlbCB3b3JrZXIgYWJvcnQ6IHdv cmtlciBidWZmZXIgYWN0aXZpdHkgaXMgY3VycmVudGx5IE5PVCBwcm9wYWdhdGVkIG9uIGFib3J0 LgorLS0KKy0tIFdoZW4gYSBwYXJhbGxlbCB3b3JrZXIgYWJvcnRzLCBJbnN0ckVuZFBhcmFsbGVs UXVlcnkgYW5kCistLSBFeGVjUGFyYWxsZWxSZXBvcnRJbnN0cnVtZW50YXRpb24gbmV2ZXIgcnVu LCBzbyB0aGUgd29ya2VyJ3MgYnVmZmVyCistLSBhY3Rpdml0eSBpcyBuZXZlciB3cml0dGVuIHRv IHNoYXJlZCBtZW1vcnksIGRlc3BpdGUgdGhlIGluZm9ybWF0aW9uIGhhdmluZyBiZWVuCistLSBj YXB0dXJlZCBieSB0aGUgcmVzIG93bmVyIHJlbGVhc2UgaW5zdHJ1bWVudGF0aW9uIGhhbmRsaW5n LgorQ1JFQVRFIFRBQkxFIHBhcl9hYm9ydF90YWIgKGEgaW50LCBiIGNoYXIoMjAwKSk7CitJTlNF UlQgSU5UTyBwYXJfYWJvcnRfdGFiIFNFTEVDVCBpLCByZXBlYXQoJ3gnLCAyMDApIEZST00gZ2Vu ZXJhdGVfc2VyaWVzKDEsIDUwMDApIEFTIGk7CistLSBXYXJtIHNoYXJlZCBidWZmZXJzIHNvIGFs bCByZWFkcyBiZWNvbWUgaGl0cworU0VMRUNUIGNvdW50KCopIEZST00gcGFyX2Fib3J0X3RhYjsK KyBjb3VudCAKKy0tLS0tLS0KKyAgNTAwMAorKDEgcm93KQorCistLSBNZWFzdXJlIHNlcmlhbCBz Y2FuIGRlbHRhIGFzIGEgcmVmZXJlbmNlIChsZWFkZXIgcmVhZHMgYWxsIGJsb2NrcykKK1NFVCBt YXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMDsKK1NFTEVDVCBwZ19zZXNzaW9uX2J1 ZmZlcl91c2FnZV9yZXNldCgpOworIHBnX3Nlc3Npb25fYnVmZmVyX3VzYWdlX3Jlc2V0IAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgYjo6aW50 MiBGUk9NIHBhcl9hYm9ydF90YWIgV0hFUkUgYSA+IDEwMDA7CitFUlJPUjogIGludmFsaWQgaW5w dXQgc3ludGF4IGZvciB0eXBlIHNtYWxsaW50OiAieHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4 eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4 eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4 eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4 eHgiCitDUkVBVEUgVEFCTEUgcGFyX2Fib3J0X3NlcmlhbF9yZXN1bHQgQVMKK1NFTEVDVCBzaGFy ZWRfYmxrc19oaXQgQVMgc2VyaWFsX2RlbHRhIEZST00gcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2Uo KTsKKy0tIE5vdyBmb3JjZSBwYXJhbGxlbCB3aXRoIGxlYWRlciBOT1QgcGFydGljaXBhdGluZyBp biBzY2FubmluZworU0VUIHBhcmFsbGVsX3NldHVwX2Nvc3QgPSAwOworU0VUIHBhcmFsbGVsX3R1 cGxlX2Nvc3QgPSAwOworU0VUIG1pbl9wYXJhbGxlbF90YWJsZV9zY2FuX3NpemUgPSAwOworU0VU IG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworU0VUIHBhcmFsbGVsX2xlYWRl cl9wYXJ0aWNpcGF0aW9uID0gb2ZmOworU0VUIGRlYnVnX3BhcmFsbGVsX3F1ZXJ5ID0gb247IC0t IEVuc3VyZSB3ZSBnZXQgQ09OVEVYVCBsaW5lIGNvbnNpc3RlbnRseQorU0VMRUNUIHBnX3Nlc3Np b25fYnVmZmVyX3VzYWdlX3Jlc2V0KCk7CisgcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2VfcmVzZXQg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBi OjppbnQyIEZST00gcGFyX2Fib3J0X3RhYiBXSEVSRSBhID4gMTAwMDsKK0VSUk9SOiAgaW52YWxp ZCBpbnB1dCBzeW50YXggZm9yIHR5cGUgc21hbGxpbnQ6ICJ4eHh4eHh4eHh4eHh4eHh4eHh4eHh4 eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4 eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4 eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4 eHh4eHh4eCIKK0NPTlRFWFQ6ICBwYXJhbGxlbCB3b3JrZXIKK1JFU0VUIGRlYnVnX3BhcmFsbGVs X3F1ZXJ5OworLS0gV29ya2VycyBzY2FubmVkIHRoZSB0YWJsZSBidXQgYWJvcnRlZCBiZWZvcmUg cmVwb3J0aW5nIHN0YXRzIGJhY2suCistLSBUaGUgbGVhZGVyJ3MgZGVsdGEgc2hvdWxkIGJlIG11 Y2ggbGVzcyB0aGFuIGEgc2VyaWFsIHNjYW4sIGRvY3VtZW50aW5nCistLSB0aGF0IHdvcmtlciBi dWZmZXIgYWN0aXZpdHkgaXMgbG9zdCBvbiBhYm9ydC4KK1NFTEVDVCBzaGFyZWRfYmxrc19oaXQg PCBzLnNlcmlhbF9kZWx0YSAvIDIKKyAgICAgICBBUyB3b3JrZXJfYWJvcnRfYnVmZmVyc19ub3Rf cHJvcGFnYXRlZAorRlJPTSBwZ19zZXNzaW9uX2J1ZmZlcl91c2FnZSgpLCBwYXJfYWJvcnRfc2Vy aWFsX3Jlc3VsdCBzOworIHdvcmtlcl9hYm9ydF9idWZmZXJzX25vdF9wcm9wYWdhdGVkIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworUkVTRVQg cGFyYWxsZWxfc2V0dXBfY29zdDsKK1JFU0VUIHBhcmFsbGVsX3R1cGxlX2Nvc3Q7CitSRVNFVCBt aW5fcGFyYWxsZWxfdGFibGVfc2Nhbl9zaXplOworUkVTRVQgbWF4X3BhcmFsbGVsX3dvcmtlcnNf cGVyX2dhdGhlcjsKK1JFU0VUIHBhcmFsbGVsX2xlYWRlcl9wYXJ0aWNpcGF0aW9uOworRFJPUCBU QUJMRSBwYXJfYWJvcnRfdGFiLCBwYXJfYWJvcnRfc2VyaWFsX3Jlc3VsdDsKKy0tIENsZWFudXAK K0RST1AgRVhURU5TSU9OIHBnX3Nlc3Npb25fYnVmZmVyX3VzYWdlOwpkaWZmIC0tZ2l0IGEvY29u dHJpYi9wZ19zZXNzaW9uX2J1ZmZlcl91c2FnZS9tZXNvbi5idWlsZCBiL2NvbnRyaWIvcGdfc2Vz c2lvbl9idWZmZXJfdXNhZ2UvbWVzb24uYnVpbGQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMDAuLjM0Yzc1MDJiZWI0Ci0tLSAvZGV2L251bGwKKysrIGIvY29udHJpYi9wZ19z ZXNzaW9uX2J1ZmZlcl91c2FnZS9tZXNvbi5idWlsZApAQCAtMCwwICsxLDM0IEBACisjIENvcHly aWdodCAoYykgMjAyNiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKworcGdf c2Vzc2lvbl9idWZmZXJfdXNhZ2Vfc291cmNlcyA9IGZpbGVzKAorICAncGdfc2Vzc2lvbl9idWZm ZXJfdXNhZ2UuYycsCispCisKK2lmIGhvc3Rfc3lzdGVtID09ICd3aW5kb3dzJworICBwZ19zZXNz aW9uX2J1ZmZlcl91c2FnZV9zb3VyY2VzICs9IHJjX2xpYl9nZW4ucHJvY2Vzcyh3aW4zMnZlcl9y YywgZXh0cmFfYXJnczogWworICAgICctLU5BTUUnLCAncGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2Un LAorICAgICctLUZJTEVERVNDJywgJ3BnX3Nlc3Npb25fYnVmZmVyX3VzYWdlIC0gc2hvdyBidWZm ZXIgdXNhZ2Ugc3RhdGlzdGljcyBmb3IgdGhlIGN1cnJlbnQgc2Vzc2lvbicsXSkKK2VuZGlmCisK K3BnX3Nlc3Npb25fYnVmZmVyX3VzYWdlID0gc2hhcmVkX21vZHVsZSgncGdfc2Vzc2lvbl9idWZm ZXJfdXNhZ2UnLAorICBwZ19zZXNzaW9uX2J1ZmZlcl91c2FnZV9zb3VyY2VzLAorICBrd2FyZ3M6 IGNvbnRyaWJfbW9kX2FyZ3MsCispCitjb250cmliX3RhcmdldHMgKz0gcGdfc2Vzc2lvbl9idWZm ZXJfdXNhZ2UKKworaW5zdGFsbF9kYXRhKAorICAncGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2UtLTEu MC5zcWwnLAorICAncGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2UuY29udHJvbCcsCisgIGt3YXJnczog Y29udHJpYl9kYXRhX2FyZ3MsCispCisKK3Rlc3RzICs9IHsKKyAgJ25hbWUnOiAncGdfc2Vzc2lv bl9idWZmZXJfdXNhZ2UnLAorICAnc2QnOiBtZXNvbi5jdXJyZW50X3NvdXJjZV9kaXIoKSwKKyAg J2JkJzogbWVzb24uY3VycmVudF9idWlsZF9kaXIoKSwKKyAgJ3JlZ3Jlc3MnOiB7CisgICAgJ3Nx bCc6IFsKKyAgICAgICdwZ19zZXNzaW9uX2J1ZmZlcl91c2FnZScsCisgICAgXSwKKyAgfSwKK30K ZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2UvcGdfc2Vzc2lvbl9i dWZmZXJfdXNhZ2UtLTEuMC5zcWwgYi9jb250cmliL3BnX3Nlc3Npb25fYnVmZmVyX3VzYWdlL3Bn X3Nlc3Npb25fYnVmZmVyX3VzYWdlLS0xLjAuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwLi5iMzAwZmRiYzY0MwotLS0gL2Rldi9udWxsCisrKyBiL2NvbnRyaWIvcGdf c2Vzc2lvbl9idWZmZXJfdXNhZ2UvcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2UtLTEuMC5zcWwKQEAg LTAsMCArMSwzMSBAQAorLyogY29udHJpYi9wZ19zZXNzaW9uX2J1ZmZlcl91c2FnZS9wZ19zZXNz aW9uX2J1ZmZlcl91c2FnZS0tMS4wLnNxbCAqLworCistLSBjb21wbGFpbiBpZiBzY3JpcHQgaXMg c291cmNlZCBpbiBwc3FsLCByYXRoZXIgdGhhbiB2aWEgQ1JFQVRFIEVYVEVOU0lPTgorXGVjaG8g VXNlICJDUkVBVEUgRVhURU5TSU9OIHBnX3Nlc3Npb25fYnVmZmVyX3VzYWdlIiB0byBsb2FkIHRo aXMgZmlsZS4gXHF1aXQKKworQ1JFQVRFIEZVTkNUSU9OIHBnX3Nlc3Npb25fYnVmZmVyX3VzYWdl KAorICAgIE9VVCBzaGFyZWRfYmxrc19oaXQgYmlnaW50LAorICAgIE9VVCBzaGFyZWRfYmxrc19y ZWFkIGJpZ2ludCwKKyAgICBPVVQgc2hhcmVkX2Jsa3NfZGlydGllZCBiaWdpbnQsCisgICAgT1VU IHNoYXJlZF9ibGtzX3dyaXR0ZW4gYmlnaW50LAorICAgIE9VVCBsb2NhbF9ibGtzX2hpdCBiaWdp bnQsCisgICAgT1VUIGxvY2FsX2Jsa3NfcmVhZCBiaWdpbnQsCisgICAgT1VUIGxvY2FsX2Jsa3Nf ZGlydGllZCBiaWdpbnQsCisgICAgT1VUIGxvY2FsX2Jsa3Nfd3JpdHRlbiBiaWdpbnQsCisgICAg T1VUIHRlbXBfYmxrc19yZWFkIGJpZ2ludCwKKyAgICBPVVQgdGVtcF9ibGtzX3dyaXR0ZW4gYmln aW50LAorICAgIE9VVCBzaGFyZWRfYmxrX3JlYWRfdGltZSBkb3VibGUgcHJlY2lzaW9uLAorICAg IE9VVCBzaGFyZWRfYmxrX3dyaXRlX3RpbWUgZG91YmxlIHByZWNpc2lvbiwKKyAgICBPVVQgbG9j YWxfYmxrX3JlYWRfdGltZSBkb3VibGUgcHJlY2lzaW9uLAorICAgIE9VVCBsb2NhbF9ibGtfd3Jp dGVfdGltZSBkb3VibGUgcHJlY2lzaW9uLAorICAgIE9VVCB0ZW1wX2Jsa19yZWFkX3RpbWUgZG91 YmxlIHByZWNpc2lvbiwKKyAgICBPVVQgdGVtcF9ibGtfd3JpdGVfdGltZSBkb3VibGUgcHJlY2lz aW9uCispCitSRVRVUk5TIHJlY29yZAorQVMgJ01PRFVMRV9QQVRITkFNRScsICdwZ19zZXNzaW9u X2J1ZmZlcl91c2FnZScKK0xBTkdVQUdFIEMgUEFSQUxMRUwgUkVTVFJJQ1RFRDsKKworQ1JFQVRF IEZVTkNUSU9OIHBnX3Nlc3Npb25fYnVmZmVyX3VzYWdlX3Jlc2V0KCkKK1JFVFVSTlMgdm9pZAor QVMgJ01PRFVMRV9QQVRITkFNRScsICdwZ19zZXNzaW9uX2J1ZmZlcl91c2FnZV9yZXNldCcKK0xB TkdVQUdFIEMgUEFSQUxMRUwgUkVTVFJJQ1RFRDsKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfc2Vz c2lvbl9idWZmZXJfdXNhZ2UvcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2UuYyBiL2NvbnRyaWIvcGdf c2Vzc2lvbl9idWZmZXJfdXNhZ2UvcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2UuYwpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZjg2OTk1NmIzYTkKLS0tIC9kZXYvbnVsbAor KysgYi9jb250cmliL3BnX3Nlc3Npb25fYnVmZmVyX3VzYWdlL3BnX3Nlc3Npb25fYnVmZmVyX3Vz YWdlLmMKQEAgLTAsMCArMSw5NSBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogcGdfc2Vz c2lvbl9idWZmZXJfdXNhZ2UuYworICoJICBzaG93IGJ1ZmZlciB1c2FnZSBzdGF0aXN0aWNzIGZv ciB0aGUgY3VycmVudCBzZXNzaW9uCisgKgorICogQ29weXJpZ2h0IChjKSAyMDI2LCBQb3N0Z3Jl U1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICoKKyAqCSAgY29udHJpYi9wZ19zZXNzaW9u X2J1ZmZlcl91c2FnZS9wZ19zZXNzaW9uX2J1ZmZlcl91c2FnZS5jCisgKi0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAqLworI2luY2x1ZGUgInBvc3RncmVzLmgiCisKKyNpbmNsdWRlICJhY2Nlc3MvaHR1cF9k ZXRhaWxzLmgiCisjaW5jbHVkZSAiZXhlY3V0b3IvaW5zdHJ1bWVudC5oIgorI2luY2x1ZGUgImZ1 bmNhcGkuaCIKKyNpbmNsdWRlICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRlICJ1dGlscy9tZW11dGls cy5oIgorCitQR19NT0RVTEVfTUFHSUNfRVhUKAorCQkJCQkubmFtZSA9ICJwZ19zZXNzaW9uX2J1 ZmZlcl91c2FnZSIsCisJCQkJCS52ZXJzaW9uID0gUEdfVkVSU0lPTgorKTsKKworI2RlZmluZSBO VU1fQlVGRkVSX1VTQUdFX0NPTFVNTlMgMTYKKworUEdfRlVOQ1RJT05fSU5GT19WMShwZ19zZXNz aW9uX2J1ZmZlcl91c2FnZSk7CitQR19GVU5DVElPTl9JTkZPX1YxKHBnX3Nlc3Npb25fYnVmZmVy X3VzYWdlX3Jlc2V0KTsKKworI2RlZmluZSBIQVZFX0lOU1RSX1NUQUNLIDEJCS8qIENoYW5nZSB0 byAwIHdoZW4gdGVzdGluZyBiZWZvcmUgc3RhY2sKKwkJCQkJCQkJICogY2hhbmdlICovCisKKy8q CisgKiBTUUwgZnVuY3Rpb246IHBnX3Nlc3Npb25fYnVmZmVyX3VzYWdlKCkKKyAqCisgKiBSZXR1 cm5zIGEgc2luZ2xlIHJvdyB3aXRoIGFsbCBCdWZmZXJVc2FnZSBjb3VudGVycyBhY2N1bXVsYXRl ZCBzaW5jZSB0aGUKKyAqIHN0YXJ0IG9mIHRoZSBzZXNzaW9uLiBFeGNsdWRlcyBhbnkgdXNhZ2Ug bm90IHlldCBhZGRlZCB0byB0aGUgdG9wIG9mIHRoZQorICogc3RhY2sgKGUuZy4gaWYgdGhpcyBn ZXRzIGNhbGxlZCBpbnNpZGUgYSBzdGF0ZW1lbnQgdGhhdCBhbHNvIGhhZCBidWZmZXIKKyAqIGFj dGl2aXR5KS4KKyAqLworRGF0dW0KK3BnX3Nlc3Npb25fYnVmZmVyX3VzYWdlKFBHX0ZVTkNUSU9O X0FSR1MpCit7CisJVHVwbGVEZXNjCXR1cGRlc2M7CisJRGF0dW0JCXZhbHVlc1tOVU1fQlVGRkVS X1VTQUdFX0NPTFVNTlNdOworCWJvb2wJCW51bGxzW05VTV9CVUZGRVJfVVNBR0VfQ09MVU1OU107 CisJQnVmZmVyVXNhZ2UgKnVzYWdlOworCisJaWYgKGdldF9jYWxsX3Jlc3VsdF90eXBlKGZjaW5m bywgTlVMTCwgJnR1cGRlc2MpICE9IFRZUEVGVU5DX0NPTVBPU0lURSkKKwkJZWxvZyhFUlJPUiwg InJldHVybiB0eXBlIG11c3QgYmUgYSByb3cgdHlwZSIpOworCisJbWVtc2V0KG51bGxzLCAwLCBz aXplb2YobnVsbHMpKTsKKworI2lmIEhBVkVfSU5TVFJfU1RBQ0sKKwl1c2FnZSA9ICZpbnN0cl90 b3AuYnVmdXNhZ2U7CisjZWxzZQorCXVzYWdlID0gJnBnQnVmZmVyVXNhZ2U7CisjZW5kaWYKKwor CXZhbHVlc1swXSA9IEludDY0R2V0RGF0dW0odXNhZ2UtPnNoYXJlZF9ibGtzX2hpdCk7CisJdmFs dWVzWzFdID0gSW50NjRHZXREYXR1bSh1c2FnZS0+c2hhcmVkX2Jsa3NfcmVhZCk7CisJdmFsdWVz WzJdID0gSW50NjRHZXREYXR1bSh1c2FnZS0+c2hhcmVkX2Jsa3NfZGlydGllZCk7CisJdmFsdWVz WzNdID0gSW50NjRHZXREYXR1bSh1c2FnZS0+c2hhcmVkX2Jsa3Nfd3JpdHRlbik7CisJdmFsdWVz WzRdID0gSW50NjRHZXREYXR1bSh1c2FnZS0+bG9jYWxfYmxrc19oaXQpOworCXZhbHVlc1s1XSA9 IEludDY0R2V0RGF0dW0odXNhZ2UtPmxvY2FsX2Jsa3NfcmVhZCk7CisJdmFsdWVzWzZdID0gSW50 NjRHZXREYXR1bSh1c2FnZS0+bG9jYWxfYmxrc19kaXJ0aWVkKTsKKwl2YWx1ZXNbN10gPSBJbnQ2 NEdldERhdHVtKHVzYWdlLT5sb2NhbF9ibGtzX3dyaXR0ZW4pOworCXZhbHVlc1s4XSA9IEludDY0 R2V0RGF0dW0odXNhZ2UtPnRlbXBfYmxrc19yZWFkKTsKKwl2YWx1ZXNbOV0gPSBJbnQ2NEdldERh dHVtKHVzYWdlLT50ZW1wX2Jsa3Nfd3JpdHRlbik7CisJdmFsdWVzWzEwXSA9IEZsb2F0OEdldERh dHVtKElOU1RSX1RJTUVfR0VUX01JTExJU0VDKHVzYWdlLT5zaGFyZWRfYmxrX3JlYWRfdGltZSkp OworCXZhbHVlc1sxMV0gPSBGbG9hdDhHZXREYXR1bShJTlNUUl9USU1FX0dFVF9NSUxMSVNFQyh1 c2FnZS0+c2hhcmVkX2Jsa193cml0ZV90aW1lKSk7CisJdmFsdWVzWzEyXSA9IEZsb2F0OEdldERh dHVtKElOU1RSX1RJTUVfR0VUX01JTExJU0VDKHVzYWdlLT5sb2NhbF9ibGtfcmVhZF90aW1lKSk7 CisJdmFsdWVzWzEzXSA9IEZsb2F0OEdldERhdHVtKElOU1RSX1RJTUVfR0VUX01JTExJU0VDKHVz YWdlLT5sb2NhbF9ibGtfd3JpdGVfdGltZSkpOworCXZhbHVlc1sxNF0gPSBGbG9hdDhHZXREYXR1 bShJTlNUUl9USU1FX0dFVF9NSUxMSVNFQyh1c2FnZS0+dGVtcF9ibGtfcmVhZF90aW1lKSk7CisJ dmFsdWVzWzE1XSA9IEZsb2F0OEdldERhdHVtKElOU1RSX1RJTUVfR0VUX01JTExJU0VDKHVzYWdl LT50ZW1wX2Jsa193cml0ZV90aW1lKSk7CisKKwlQR19SRVRVUk5fREFUVU0oSGVhcFR1cGxlR2V0 RGF0dW0oaGVhcF9mb3JtX3R1cGxlKHR1cGRlc2MsIHZhbHVlcywgbnVsbHMpKSk7Cit9CisKKy8q CisgKiBTUUwgZnVuY3Rpb246IHBnX3Nlc3Npb25fYnVmZmVyX3VzYWdlX3Jlc2V0KCkKKyAqCisg KiBSZXNldHMgYWxsIEJ1ZmZlclVzYWdlIGNvdW50ZXJzIG9uIHRoZSB0b3AgaW5zdHJ1bWVudGF0 aW9uIHN0YWNrIHRvIHplcm8uCisgKiBVc2VmdWwgaW4gdGVzdHMgdG8gYXZvaWQgdGhlIGJhc2Vs aW5lL2RlbHRhIHBhdHRlcm4uCisgKi8KK0RhdHVtCitwZ19zZXNzaW9uX2J1ZmZlcl91c2FnZV9y ZXNldChQR19GVU5DVElPTl9BUkdTKQoreworI2lmIEhBVkVfSU5TVFJfU1RBQ0sKKwltZW1zZXQo Jmluc3RyX3RvcC5idWZ1c2FnZSwgMCwgc2l6ZW9mKEJ1ZmZlclVzYWdlKSk7CisjZWxzZQorCW1l bXNldCgmcGdCdWZmZXJVc2FnZSwgMCwgc2l6ZW9mKEJ1ZmZlclVzYWdlKSk7CisjZW5kaWYKKwor CVBHX1JFVFVSTl9WT0lEKCk7Cit9CmRpZmYgLS1naXQgYS9jb250cmliL3BnX3Nlc3Npb25fYnVm ZmVyX3VzYWdlL3BnX3Nlc3Npb25fYnVmZmVyX3VzYWdlLmNvbnRyb2wgYi9jb250cmliL3BnX3Nl c3Npb25fYnVmZmVyX3VzYWdlL3BnX3Nlc3Npb25fYnVmZmVyX3VzYWdlLmNvbnRyb2wKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmZhYmQwNWVlMDI0Ci0tLSAvZGV2L251 bGwKKysrIGIvY29udHJpYi9wZ19zZXNzaW9uX2J1ZmZlcl91c2FnZS9wZ19zZXNzaW9uX2J1ZmZl cl91c2FnZS5jb250cm9sCkBAIC0wLDAgKzEsNSBAQAorIyBwZ19zZXNzaW9uX2J1ZmZlcl91c2Fn ZSBleHRlbnNpb24KK2NvbW1lbnQgPSAnc2hvdyBidWZmZXIgdXNhZ2Ugc3RhdGlzdGljcyBmb3Ig dGhlIGN1cnJlbnQgc2Vzc2lvbicKK2RlZmF1bHRfdmVyc2lvbiA9ICcxLjAnCittb2R1bGVfcGF0 aG5hbWUgPSAnJGxpYmRpci9wZ19zZXNzaW9uX2J1ZmZlcl91c2FnZScKK3JlbG9jYXRhYmxlID0g dHJ1ZQpkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ19zZXNzaW9uX2J1ZmZlcl91c2FnZS9zcWwvcGdf c2Vzc2lvbl9idWZmZXJfdXNhZ2Uuc3FsIGIvY29udHJpYi9wZ19zZXNzaW9uX2J1ZmZlcl91c2Fn ZS9zcWwvcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2Uuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwLi44ZjU4MTBmYWRkMwotLS0gL2Rldi9udWxsCisrKyBiL2NvbnRyaWIv cGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2Uvc3FsL3BnX3Nlc3Npb25fYnVmZmVyX3VzYWdlLnNxbApA QCAtMCwwICsxLDIwNCBAQAorTE9BRCAncGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2UnOworQ1JFQVRF IEVYVEVOU0lPTiBwZ19zZXNzaW9uX2J1ZmZlcl91c2FnZTsKKworLS0gVmVyaWZ5IGFsbCBjb2x1 bW5zIGFyZSBub24tbmVnYXRpdmUKK1NFTEVDVCBjb3VudCgqKSA9IDEgQVMgb2sgRlJPTSBwZ19z ZXNzaW9uX2J1ZmZlcl91c2FnZSgpCitXSEVSRSBzaGFyZWRfYmxrc19oaXQgPj0gMCBBTkQgc2hh cmVkX2Jsa3NfcmVhZCA+PSAwCisgIEFORCBzaGFyZWRfYmxrc19kaXJ0aWVkID49IDAgQU5EIHNo YXJlZF9ibGtzX3dyaXR0ZW4gPj0gMAorICBBTkQgbG9jYWxfYmxrc19oaXQgPj0gMCBBTkQgbG9j YWxfYmxrc19yZWFkID49IDAKKyAgQU5EIGxvY2FsX2Jsa3NfZGlydGllZCA+PSAwIEFORCBsb2Nh bF9ibGtzX3dyaXR0ZW4gPj0gMAorICBBTkQgdGVtcF9ibGtzX3JlYWQgPj0gMCBBTkQgdGVtcF9i bGtzX3dyaXR0ZW4gPj0gMAorICBBTkQgc2hhcmVkX2Jsa19yZWFkX3RpbWUgPj0gMCBBTkQgc2hh cmVkX2Jsa193cml0ZV90aW1lID49IDAKKyAgQU5EIGxvY2FsX2Jsa19yZWFkX3RpbWUgPj0gMCBB TkQgbG9jYWxfYmxrX3dyaXRlX3RpbWUgPj0gMAorICBBTkQgdGVtcF9ibGtfcmVhZF90aW1lID49 IDAgQU5EIHRlbXBfYmxrX3dyaXRlX3RpbWUgPj0gMDsKKworLS0gVmVyaWZ5IGNvdW50ZXJzIGlu Y3JlYXNlIGFmdGVyIGJ1ZmZlciBhY3Rpdml0eQorU0VMRUNUIHBnX3Nlc3Npb25fYnVmZmVyX3Vz YWdlX3Jlc2V0KCk7CisKK0NSRUFURSBURU1QIFRBQkxFIHRlc3RfYnVmX2FjdGl2aXR5IChpZCBp bnQsIGRhdGEgdGV4dCk7CitJTlNFUlQgSU5UTyB0ZXN0X2J1Zl9hY3Rpdml0eSBTRUxFQ1QgaSwg cmVwZWF0KCd4JywgMTAwKSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDAwKSBBUyBpOworU0VM RUNUIGNvdW50KCopIEZST00gdGVzdF9idWZfYWN0aXZpdHk7CisKK1NFTEVDVCBsb2NhbF9ibGtz X2hpdCArIGxvY2FsX2Jsa3NfcmVhZCA+IDAgQVMgYmxvY2tzX2luY3JlYXNlZAorRlJPTSBwZ19z ZXNzaW9uX2J1ZmZlcl91c2FnZSgpOworCitEUk9QIFRBQkxFIHRlc3RfYnVmX2FjdGl2aXR5Owor CistLSBQYXJhbGxlbCBxdWVyeSB0ZXN0CitDUkVBVEUgVEFCTEUgcGFyX2RjX3RhYiAoYSBpbnQs IGIgY2hhcigyMDApKTsKK0lOU0VSVCBJTlRPIHBhcl9kY190YWIgU0VMRUNUIGksIHJlcGVhdCgn eCcsIDIwMCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAwMCkgQVMgaTsKKworU0VMRUNUIGNv dW50KCopIEZST00gcGFyX2RjX3RhYjsKKworLS0gTWVhc3VyZSBzZXJpYWwgc2NhbiBkZWx0YSAo bGVhZGVyIGRvZXMgYWxsIHRoZSB3b3JrKQorU0VUIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9n YXRoZXIgPSAwOworCitTRUxFQ1QgcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2VfcmVzZXQoKTsKK1NF TEVDVCBjb3VudCgqKSBGUk9NIHBhcl9kY190YWI7CisKK0NSRUFURSBURU1QIFRBQkxFIGRjX3Nl cmlhbF9yZXN1bHQgQVMKK1NFTEVDVCBzaGFyZWRfYmxrc19oaXQgQVMgc2VyaWFsX2RlbHRhIEZS T00gcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2UoKTsKKworLS0gTWVhc3VyZSBwYXJhbGxlbCBzY2Fu IGRlbHRhIHdpdGggbGVhZGVyIE5PVCBwYXJ0aWNpcGF0aW5nIGluIHNjYW5uaW5nLgorLS0gV29y a2VycyBkbyBhbGwgdGFibGUgc2Nhbm5pbmc7IGxlYWRlciBvbmx5IHJ1bnMgdGhlIEdhdGhlciBu b2RlLgorU0VUIHBhcmFsbGVsX3NldHVwX2Nvc3QgPSAwOworU0VUIHBhcmFsbGVsX3R1cGxlX2Nv c3QgPSAwOworU0VUIG1pbl9wYXJhbGxlbF90YWJsZV9zY2FuX3NpemUgPSAwOworU0VUIG1heF9w YXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworU0VUIHBhcmFsbGVsX2xlYWRlcl9wYXJ0 aWNpcGF0aW9uID0gb2ZmOworCitTRUxFQ1QgcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2VfcmVzZXQo KTsKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHBhcl9kY190YWI7CisKKy0tIENvbmZpcm0gd2UgZ290 IGEgc2ltaWxhciBoaXQgY291bnRlciB0aHJvdWdoIHBhcmFsbGVsIHdvcmtlciBhY2N1bXVsYXRp b24KK1NFTEVDVCBzaGFyZWRfYmxrc19oaXQgPiBzLnNlcmlhbF9kZWx0YSAvIDIgQU5EIHNoYXJl ZF9ibGtzX2hpdCA8IHMuc2VyaWFsX2RlbHRhICogMgorICAgICAgIEFTIGxlYWRlcl9idWZmZXJz X21hdGNoCitGUk9NIHBnX3Nlc3Npb25fYnVmZmVyX3VzYWdlKCksIGRjX3NlcmlhbF9yZXN1bHQg czsKKworUkVTRVQgcGFyYWxsZWxfc2V0dXBfY29zdDsKK1JFU0VUIHBhcmFsbGVsX3R1cGxlX2Nv c3Q7CitSRVNFVCBtaW5fcGFyYWxsZWxfdGFibGVfc2Nhbl9zaXplOworUkVTRVQgbWF4X3BhcmFs bGVsX3dvcmtlcnNfcGVyX2dhdGhlcjsKK1JFU0VUIHBhcmFsbGVsX2xlYWRlcl9wYXJ0aWNpcGF0 aW9uOworCitEUk9QIFRBQkxFIHBhcl9kY190YWIsIGRjX3NlcmlhbF9yZXN1bHQ7CisKKy0tCist LSBBYm9ydC9leGNlcHRpb24gdGVzdHM6IHZlcmlmeSBidWZmZXIgdXNhZ2Ugc3Vydml2ZXMgdmFy aW91cyBlcnJvciBwYXRocy4KKy0tCisKKy0tIFJvbGxlZC1iYWNrIGRpdmlkZS1ieS16ZXJvIHVu ZGVyIEVYUExBSU4gQU5BTFlaRQorQ1JFQVRFIFRFTVAgVEFCTEUgZXhjX3RhYiAoYSBpbnQsIGIg Y2hhcigyMCkpOworCitTRUxFQ1QgcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2VfcmVzZXQoKTsKKwor RVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUywgQ09TVFMgT0ZGKQorICAgICAgICBXSVRIIGlucyBB UyAoSU5TRVJUIElOVE8gZXhjX3RhYiBWQUxVRVMgKDEsICdhYWEnKSBSRVRVUk5JTkcgYSkKKyAg ICAgICAgU0VMRUNUIGEgLyAwIEZST00gaW5zOworCitTRUxFQ1QgbG9jYWxfYmxrc19kaXJ0aWVk ID4gMCBBUyBleGNlcHRpb25fYnVmZmVyc192aXNpYmxlCitGUk9NIHBnX3Nlc3Npb25fYnVmZmVy X3VzYWdlKCk7CisKK0RST1AgVEFCTEUgZXhjX3RhYjsKKworLS0gVW5pcXVlIGNvbnN0cmFpbnQg dmlvbGF0aW9uIGluIHJlZ3VsYXIgcXVlcnkKK0NSRUFURSBURU1QIFRBQkxFIHVuaXF1ZV90YWIg KGEgaW50IFVOSVFVRSwgYiBjaGFyKDIwKSk7CitJTlNFUlQgSU5UTyB1bmlxdWVfdGFiIFZBTFVF UyAoMSwgJ2ZpcnN0Jyk7CisKK1NFTEVDVCBwZ19zZXNzaW9uX2J1ZmZlcl91c2FnZV9yZXNldCgp OworSU5TRVJUIElOVE8gdW5pcXVlX3RhYiBWQUxVRVMgKDEsICdkdXBsaWNhdGUnKTsKKworU0VM RUNUIGxvY2FsX2Jsa3NfaGl0ID4gMCBBUyB1bmlxdWVfdmlvbGF0aW9uX2J1ZmZlcnNfdmlzaWJs ZQorRlJPTSBwZ19zZXNzaW9uX2J1ZmZlcl91c2FnZSgpOworCitEUk9QIFRBQkxFIHVuaXF1ZV90 YWI7CisKKy0tIENhdWdodCBleGNlcHRpb24gaW4gUEwvcGdTUUwgc3VidHJhbnNhY3Rpb24gKEJF R0lOLi4uRVhDRVBUSU9OKQorQ1JFQVRFIFRFTVAgVEFCTEUgc3VieGFjdF90YWIgKGEgaW50LCBi IGNoYXIoMjApKTsKKworQ1JFQVRFIEZVTkNUSU9OIHN1YnhhY3RfZXhjX2Z1bmMoKSBSRVRVUk5T IHRleHQgQVMgJCQKK0JFR0lOCisgICAgQkVHSU4KKyAgICAgICAgRVhFQ1VURSAnRVhQTEFJTiAo QU5BTFlaRSwgQlVGRkVSUywgQ09TVFMgT0ZGKQorICAgICAgICAgICAgV0lUSCBpbnMgQVMgKElO U0VSVCBJTlRPIHN1YnhhY3RfdGFiIFZBTFVFUyAoMSwgJydhYWEnJykgUkVUVVJOSU5HIGEpCisg ICAgICAgICAgICBTRUxFQ1QgYSAvIDAgRlJPTSBpbnMnOworICAgIEVYQ0VQVElPTiBXSEVOIGRp dmlzaW9uX2J5X3plcm8gVEhFTgorICAgICAgICBSRVRVUk4gJ2NhdWdodCc7CisgICAgRU5EOwor ICAgIFJFVFVSTiAnbm90IHJlYWNoZWQnOworRU5EOworJCQgTEFOR1VBR0UgcGxwZ3NxbDsKKwor U0VMRUNUIHBnX3Nlc3Npb25fYnVmZmVyX3VzYWdlX3Jlc2V0KCk7CitTRUxFQ1Qgc3VieGFjdF9l eGNfZnVuYygpOworCitTRUxFQ1QgbG9jYWxfYmxrc19kaXJ0aWVkID4gMCBBUyBzdWJ4YWN0X2J1 ZmZlcnNfdmlzaWJsZQorRlJPTSBwZ19zZXNzaW9uX2J1ZmZlcl91c2FnZSgpOworCitEUk9QIEZV TkNUSU9OIHN1YnhhY3RfZXhjX2Z1bmM7CitEUk9QIFRBQkxFIHN1YnhhY3RfdGFiOworCistLSBD dXJzb3IgKEZPUiBsb29wKSBpbiBhYm9ydGVkIHN1YnRyYW5zYWN0aW9uOyB2ZXJpZnkgcG9zdC1l eGNlcHRpb24gdHJhY2tpbmcKK0NSRUFURSBURU1QIFRBQkxFIGN1cnNvcl90YWIgKGEgaW50LCBi IGNoYXIoMjAwKSk7CitJTlNFUlQgSU5UTyBjdXJzb3JfdGFiIFNFTEVDVCBpLCByZXBlYXQoJ3gn LCAyMDApIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMCkgQVMgaTsKKworQ1JFQVRFIEZVTkNU SU9OIGN1cnNvcl9leGNfZnVuYygpIFJFVFVSTlMgdGV4dCBBUyAkJAorREVDTEFSRQorICAgIHJl YyByZWNvcmQ7CisgICAgY250IGludCA6PSAwOworQkVHSU4KKyAgICBCRUdJTgorICAgICAgICBG T1IgcmVjIElOIFNFTEVDVCAqIEZST00gY3Vyc29yX3RhYiBMT09QCisgICAgICAgICAgICBjbnQg Oj0gY250ICsgMTsKKyAgICAgICAgICAgIElGIGNudCA9IDI1MCBUSEVOCisgICAgICAgICAgICAg ICAgUEVSRk9STSAxIC8gMDsKKyAgICAgICAgICAgIEVORCBJRjsKKyAgICAgICAgRU5EIExPT1A7 CisgICAgRVhDRVBUSU9OIFdIRU4gZGl2aXNpb25fYnlfemVybyBUSEVOCisgICAgICAgIFJFVFVS TiAnY2F1Z2h0IGFmdGVyICcgfHwgY250IHx8ICcgcm93cyc7CisgICAgRU5EOworICAgIFJFVFVS TiAnbm90IHJlYWNoZWQnOworRU5EOworJCQgTEFOR1VBR0UgcGxwZ3NxbDsKKworU0VMRUNUIHBn X3Nlc3Npb25fYnVmZmVyX3VzYWdlX3Jlc2V0KCk7CitTRUxFQ1QgY3Vyc29yX2V4Y19mdW5jKCk7 CisKK1NFTEVDVCBsb2NhbF9ibGtzX2hpdCArIGxvY2FsX2Jsa3NfcmVhZCA+IDAKKyAgICAgICBB UyBjdXJzb3Jfc3VieGFjdF9idWZmZXJzX3Zpc2libGUKK0ZST00gcGdfc2Vzc2lvbl9idWZmZXJf dXNhZ2UoKTsKKworRFJPUCBGVU5DVElPTiBjdXJzb3JfZXhjX2Z1bmM7CitEUk9QIFRBQkxFIGN1 cnNvcl90YWI7CisKKy0tIFBhcmFsbGVsIHdvcmtlciBhYm9ydDogd29ya2VyIGJ1ZmZlciBhY3Rp dml0eSBpcyBjdXJyZW50bHkgTk9UIHByb3BhZ2F0ZWQgb24gYWJvcnQuCistLQorLS0gV2hlbiBh IHBhcmFsbGVsIHdvcmtlciBhYm9ydHMsIEluc3RyRW5kUGFyYWxsZWxRdWVyeSBhbmQKKy0tIEV4 ZWNQYXJhbGxlbFJlcG9ydEluc3RydW1lbnRhdGlvbiBuZXZlciBydW4sIHNvIHRoZSB3b3JrZXIn cyBidWZmZXIKKy0tIGFjdGl2aXR5IGlzIG5ldmVyIHdyaXR0ZW4gdG8gc2hhcmVkIG1lbW9yeSwg ZGVzcGl0ZSB0aGUgaW5mb3JtYXRpb24gaGF2aW5nIGJlZW4KKy0tIGNhcHR1cmVkIGJ5IHRoZSBy ZXMgb3duZXIgcmVsZWFzZSBpbnN0cnVtZW50YXRpb24gaGFuZGxpbmcuCitDUkVBVEUgVEFCTEUg cGFyX2Fib3J0X3RhYiAoYSBpbnQsIGIgY2hhcigyMDApKTsKK0lOU0VSVCBJTlRPIHBhcl9hYm9y dF90YWIgU0VMRUNUIGksIHJlcGVhdCgneCcsIDIwMCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwg NTAwMCkgQVMgaTsKKworLS0gV2FybSBzaGFyZWQgYnVmZmVycyBzbyBhbGwgcmVhZHMgYmVjb21l IGhpdHMKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHBhcl9hYm9ydF90YWI7CisKKy0tIE1lYXN1cmUg c2VyaWFsIHNjYW4gZGVsdGEgYXMgYSByZWZlcmVuY2UgKGxlYWRlciByZWFkcyBhbGwgYmxvY2tz KQorU0VUIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAwOworCitTRUxFQ1QgcGdf c2Vzc2lvbl9idWZmZXJfdXNhZ2VfcmVzZXQoKTsKK1NFTEVDVCBiOjppbnQyIEZST00gcGFyX2Fi b3J0X3RhYiBXSEVSRSBhID4gMTAwMDsKKworQ1JFQVRFIFRBQkxFIHBhcl9hYm9ydF9zZXJpYWxf cmVzdWx0IEFTCitTRUxFQ1Qgc2hhcmVkX2Jsa3NfaGl0IEFTIHNlcmlhbF9kZWx0YSBGUk9NIHBn X3Nlc3Npb25fYnVmZmVyX3VzYWdlKCk7CisKKy0tIE5vdyBmb3JjZSBwYXJhbGxlbCB3aXRoIGxl YWRlciBOT1QgcGFydGljaXBhdGluZyBpbiBzY2FubmluZworU0VUIHBhcmFsbGVsX3NldHVwX2Nv c3QgPSAwOworU0VUIHBhcmFsbGVsX3R1cGxlX2Nvc3QgPSAwOworU0VUIG1pbl9wYXJhbGxlbF90 YWJsZV9zY2FuX3NpemUgPSAwOworU0VUIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIg PSAyOworU0VUIHBhcmFsbGVsX2xlYWRlcl9wYXJ0aWNpcGF0aW9uID0gb2ZmOworU0VUIGRlYnVn X3BhcmFsbGVsX3F1ZXJ5ID0gb247IC0tIEVuc3VyZSB3ZSBnZXQgQ09OVEVYVCBsaW5lIGNvbnNp c3RlbnRseQorCitTRUxFQ1QgcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2VfcmVzZXQoKTsKK1NFTEVD VCBiOjppbnQyIEZST00gcGFyX2Fib3J0X3RhYiBXSEVSRSBhID4gMTAwMDsKKworUkVTRVQgZGVi dWdfcGFyYWxsZWxfcXVlcnk7CisKKy0tIFdvcmtlcnMgc2Nhbm5lZCB0aGUgdGFibGUgYnV0IGFi b3J0ZWQgYmVmb3JlIHJlcG9ydGluZyBzdGF0cyBiYWNrLgorLS0gVGhlIGxlYWRlcidzIGRlbHRh IHNob3VsZCBiZSBtdWNoIGxlc3MgdGhhbiBhIHNlcmlhbCBzY2FuLCBkb2N1bWVudGluZworLS0g dGhhdCB3b3JrZXIgYnVmZmVyIGFjdGl2aXR5IGlzIGxvc3Qgb24gYWJvcnQuCitTRUxFQ1Qgc2hh cmVkX2Jsa3NfaGl0IDwgcy5zZXJpYWxfZGVsdGEgLyAyCisgICAgICAgQVMgd29ya2VyX2Fib3J0 X2J1ZmZlcnNfbm90X3Byb3BhZ2F0ZWQKK0ZST00gcGdfc2Vzc2lvbl9idWZmZXJfdXNhZ2UoKSwg cGFyX2Fib3J0X3NlcmlhbF9yZXN1bHQgczsKKworUkVTRVQgcGFyYWxsZWxfc2V0dXBfY29zdDsK K1JFU0VUIHBhcmFsbGVsX3R1cGxlX2Nvc3Q7CitSRVNFVCBtaW5fcGFyYWxsZWxfdGFibGVfc2Nh bl9zaXplOworUkVTRVQgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlcjsKK1JFU0VUIHBh cmFsbGVsX2xlYWRlcl9wYXJ0aWNpcGF0aW9uOworCitEUk9QIFRBQkxFIHBhcl9hYm9ydF90YWIs IHBhcl9hYm9ydF9zZXJpYWxfcmVzdWx0OworCistLSBDbGVhbnVwCitEUk9QIEVYVEVOU0lPTiBw Z19zZXNzaW9uX2J1ZmZlcl91c2FnZTsKLS0gCjIuNDcuMQoK --00000000000002247a064c7bb7b8--