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.94.2) (envelope-from ) id 1r7g9U-006GcV-Li for pgsql-hackers@arkaria.postgresql.org; Mon, 27 Nov 2023 18:16:13 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1r7g9Q-00FT0s-Tv for pgsql-hackers@arkaria.postgresql.org; Mon, 27 Nov 2023 18:16:08 +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.94.2) (envelope-from ) id 1r7g9Q-00FT0k-4D for pgsql-hackers@lists.postgresql.org; Mon, 27 Nov 2023 18:16:08 +0000 Received: from mail-ej1-x634.google.com ([2a00:1450:4864:20::634]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1r7g9H-008ph3-Q4 for pgsql-hackers@lists.postgresql.org; Mon, 27 Nov 2023 18:16:06 +0000 Received: by mail-ej1-x634.google.com with SMTP id a640c23a62f3a-a00b01955acso654948566b.1 for ; Mon, 27 Nov 2023 10:15:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb.com; s=google; t=1701108957; x=1701713757; darn=lists.postgresql.org; h=in-reply-to:references:cc:to:from:content-language:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=ocRSOHhJ0Xa7UMuxYT0lqgh0BjVz3P81RbaNyDFi1J0=; b=Z5MYXEaIoSnC7Py/9FqYbaO3GB7BSUc9Rzo+S5JPpQsojMW+XpMoQokP9jg/Mn1BAc l6dEByqOwJHso/B8pqKShEEKCxORiP6t06vXoLo6wxrpvVULQQwlAHLvcPoWqPcdw9HS aiWD5XukZ2uC16wA9glFJ3SSflogH22b7DSFLt0tV4GiXBC/Er2dZto5fJYndD9eNL0Q QygJSMPgs0IXmh0m5LchYCc9Bnk9J80kef/mKnawMrhFpk5iyG1rwyxrhZhAK1QzRvis 2XLCW2LI24DUSQfuQBuDhIXCH/2etd8P3/hRrBM5VyafczukRN2YWruyshRy7RzqrPS8 xd9w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1701108957; x=1701713757; h=in-reply-to:references:cc:to:from:content-language:subject :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=ocRSOHhJ0Xa7UMuxYT0lqgh0BjVz3P81RbaNyDFi1J0=; b=cwnhk9GvCXUZ/WkgP810HDMiBdauT4KNHvA5PL27Of0qQyBduH36ICoq4ulvm6xXS3 Caxm2a8bq/fFfpnExT1HHFITtROtzEFZNnRZ5GGlJCdINOpF4KIuAV/OQaN5VU8sM++J ygqC2Xu0mmD1CrIHTdQ+DRR1OKeJHUPKtiCpncsciBvyoqgnS0Q4OzmXz51hwqSXLMjE cWWaY9XJsGXqJt1USBuLQMxzwMYeq0aWEDvfgotxZ7jJGaQrTV7NRzwJSu/0nTG01sI8 uJczByshAvLJO25HVCF6v4kE5uqRYF5vlzGQmsi7HmC1ReALvh5u3EPMAFfqbtmhfGPm 2KQw== X-Gm-Message-State: AOJu0YzGc6+mgAwmMCEBUltUIzR70E9JZhRpizqeaXeGSIZ8KZFrB2En E1PREdNK8OgLdk1qI0QvYM2feg== X-Google-Smtp-Source: AGHT+IHmc1fHbJ3Yl1GYgqfGJrltmGlDRni+wvgX6zzgxMWFg/WtezuHM1VsQAStV8SjdfPJOZKnkQ== X-Received: by 2002:a17:906:224c:b0:a0d:31:b455 with SMTP id 12-20020a170906224c00b00a0d0031b455mr4573851ejr.20.1701108956483; Mon, 27 Nov 2023 10:15:56 -0800 (PST) Received: from [10.137.0.17] (srv1.mobissw.com. [89.235.0.226]) by smtp.gmail.com with ESMTPSA id qx23-20020a170906fcd700b009d2eb40ff9dsm5958909ejb.33.2023.11.27.10.15.55 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 27 Nov 2023 10:15:55 -0800 (PST) Content-Type: multipart/mixed; boundary="------------n6sjwQvphvF4EuHWavlOIMm0" Message-ID: <36f3a200-f185-887c-da08-fdc866436e6c@enterprisedb.com> Date: Mon, 27 Nov 2023 19:15:55 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.15.1 Subject: Re: logical decoding and replication of sequences, take 2 Content-Language: en-US From: Tomas Vondra To: "Hayato Kuroda (Fujitsu)" , 'Amit Kapila' Cc: "Zhijie Hou (Fujitsu)" , Ashutosh Bapat , PostgreSQL Hackers , Masahiko Sawada , Peter Eisentraut , Dilip Kumar References: <5c1cdd43-9a00-db9d-9474-48e6ec985979@enterprisedb.com> <3c145928-9cf9-eb15-6b24-c84d791a12c0@enterprisedb.com> <28e0279f-d02a-f7d7-568d-13f70ee8f60b@enterprisedb.com> <652f6e81-f71b-b760-b1bb-ab078b8dbe53@enterprisedb.com> In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------n6sjwQvphvF4EuHWavlOIMm0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Hi, I spent a bit of time looking at the proposed change, and unfortunately logging just the boolean flag does not work. A good example is this bit from a TAP test added by the patch for built-in replication (which was not included with the WIP patch): BEGIN; ALTER SEQUENCE s RESTART WITH 1000; SAVEPOINT sp1; INSERT INTO seq_test SELECT nextval('s') FROM generate_series(1,100); ROLLBACK TO sp1; COMMIT; This is expected to produce: 1131|0|t but produces 1000|0|f instead. The reason is very simple - as implemented, the patch simply checks if the relfilenode is from the same top-level transaction, which it is, and sets the flag to "true". So we know the sequence changes need to be queued and replayed as part of this transaction. But then during decoding, we still queue the changes into the subxact, which then aborts, and the changes are discarded. That is not how it's supposed to work, because the new relfilenode is still valid, someone might do nextval() and commit. And the nextval() may not get WAL-logged, so we'd lose this. What I guess we might do is log not just a boolean flag, but the XID of the subtransaction that created the relfilenode. And then during decoding we'd queue the changes into this subtransaction ... 0006 in the attached patch series does this, and it seems to fix the TAP test failure. I left it at the end, to make it easier to run tests without the patch applied. There's a couple open questions, though. - I'm not sure it's a good idea to log XIDs of subxacts into WAL like this. I think it'd be OK, and there are other records that do that (like RunningXacts or commit record), but maybe I'm missing something. - We need the actual XID, not just the SubTransactionId. I wrote SubTransactionGetXid() to to this, but I did not work with subxacts this, so it'd be better if someone checked it's dealing with XID and FullTransactionId correctly. - I'm a bit concerned how this will perform with deeply nested subtransactions. SubTransactionGetXid() does pretty much a linear search, which might be somewhat expensive. And it's a cost put on everyone who writes WAL, not just the decoding process. Maybe we should at least limit this to wal_level=logical? - seq_decode() then uses this XID (for transactional changes) instead of the XID logged in the record itself. I think that's fine - it's the TXN where we want to queue the change, after all, right? - (unrelated) I also noticed that maybe ReorderBufferQueueSequence() should always expect a valid XID. The code seems to suggest people can pass InvalidTransactionId in the non-transactional case, but that's not true because the rb->sequence() then fails. The attached patches should also fix all the typos reported by Amit earlier today. regards -- Tomas Vondra EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company --------------n6sjwQvphvF4EuHWavlOIMm0 Content-Type: text/x-patch; charset=UTF-8; name="v20231127-3-0001-Logical-decoding-of-sequences.patch" Content-Disposition: attachment; filename="v20231127-3-0001-Logical-decoding-of-sequences.patch" Content-Transfer-Encoding: base64 RnJvbSBlOWY1M2RmM2Y5ODQzMTVjNTZlZWY0MDhhNTliZjVjOGQxNjU0YWEzIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzLnZvbmRyYUBwb3N0 Z3Jlc3FsLm9yZz4KRGF0ZTogVGh1LCAyIE5vdiAyMDIzIDE1OjAzOjEzICswMTAwClN1Ympl Y3Q6IFtQQVRDSCB2MjAyMzExMjctMyAxLzZdIExvZ2ljYWwgZGVjb2Rpbmcgb2Ygc2VxdWVu Y2VzCgpFeHRlbmQgdGhlIGxvZ2ljYWwgZGVjb2RpbmcgdG8gYWxsb3cgZGVjb2Rpbmcgc2Vx dWVuY2UgY2hhbmdlcy4KCkVhY2ggc2VxdWVuY2UgY2hhbmdlIGlzIGVpdGhlciB0cmFuc2Fj dGlvbmFsIG9yIG5vbi10cmFuc2FjdGlvbmFsLApkZXBlbmRpbmcgb24gd2hhdCB3aGV0aGVy IHRoZSBzZXF1ZW5jZSByZWxmaWxlbm9kZSBpcyB2aXNpYmxlIG91dHNpZGUKdGhlIHRyYW5z YWN0aW9uLgoKV2hlbiBhIHRyYW5zYWN0aW9uIGNyZWF0ZXMgYSBuZXcgcmVsZmlsZW5vZGUg dG8gdGhlIHNlcXVlbmNlICh1c3VhbGx5CmJlY2F1c2Ugb2YgQ1JFQVRFIFNFUVVFTkNFIG9y IEFMVEVSIFNFUVVFTkNFKSwgYWxsIHN1YnNlcXVlbnQgc2VxdWVuY2UKY2hhbmdlcyBhcmUg dHJlYXRlZCBhcyB0cmFuc2FjdGlvbmFsIC0gcXVldWVkIGp1c3QgbGlrZSBvdGhlciBjaGFu Z2VzIGluCnRoZSB0cmFuc2FjdGlvbiwgYW5kIGVpdGhlciByZXBsYXllZCBhdCBjb21taXQg dGltZSBvciBkaXNjYXJkZWQgaWYgdGhlCnRyYW5zYWN0aW9uIGFib3J0cy4KCkFsbCBvdGhl ciBzZXF1ZW5jZSBjaGFuZ2VzLCBwZXJmb3JtZWQgb24gc2VxdWVuY2VzIC8gcmVsZmlsZW5v ZGVzCmNyZWF0ZWQgYnkgZWFybGllciB0cmFuc2FjdGlvbnMsIGFyZSBub24tdHJhbnNhY3Rp b25hbC4gVGhlc2UgY2hhbmdlcwphcmUgbm90IHF1ZXVlZCBidXQgcmVwbGF5ZWQgaW1tZWRp YXRlbHkgYWZ0ZXIgZGVjb2RpbmcuIFRoaXMgYWxzbyBtZWFucwp0aGVzZSBjaGFuZ2VzIGFy ZSBub3Qgc3ViamVjdCB0byBhYm9ydC4KClRoaXMgbWl4ZWQgYmVoYXZpb3IgaXMgbmVjZXNz YXJ5LCBhbmQgaXMgY29uc2lzdGVudCB3aXRoIGhvdyBzZXF1ZW5jZXMKYmVoYXZlIGluIGdl bmVyYWwgLSBjYWxsaW5nIG5leHR2YWwocykgbWFrZXMgdGhlIGNoYW5nZSB2aXNpYmxlIHRv CmNvbmN1cnJlbnQgdHJhbnNhY3Rpb25zLCBhbmQgY2FuJ3QgYmUgcm9sbGVkIGJhY2suIEJ1 dCBpZiBEREwgaXMKcGVyZm9ybWVkIG9uIGEgc2VxdWVuY2UsIGNoYW5nZXMgYmVjb21lIHRy YW5zYWN0aW9uYWwgLSBpbnZpc2libGUgdG8KY29uY3VycmVudCB0cmFuc2FjdGlvbnMgdW50 aWwgY29tbWl0LCBhbmQgc3ViamVjdCB0byBhYm9ydC4KClRvIGlkZW50aWZ5IGNoYW5nZXMg dGhhdCBuZWVkIHRyYW5zYWN0aW9uYWwgaGFuZGxpbmcsIGVhY2ggdHJhbnNhY3Rpb24KdHJh Y2tzIHJlbGZpbGVub2RlcyBpdCBjcmVhdGVkIGluIGEgaGFzaCB0YWJsZS4gVGhlbiB3aGVu IGEgY2hhbmdlIGlzCmRlY29kZWQsIHRoaXMgaGFzaCB0YWJsZSBpcyB1c2VkIHRvIGNoZWNr IGlmIHRoZSByZWxmaWxlbm9kZSBpcyBuZXcuCgpGb3IgZWFjaCByZWxmaWxlbm9kZSB3ZSB0 cmFjayB0aGUgWElEIG9mIChzdWIpdHJhbnNhY3Rpb24gdGhhdCBjcmVhdGVkCml0LCB3aGlj aCBpcyBuZWVkZWQgZm9yIGNsZWFudXAgYXQgdGhlIHRyYW5zYWN0aW9uIGVuZC4gV2UgZG9u J3QgbmVlZCB0bwpjaGVjayB0aGUgWElEIHRvIGRlY2lkZSBpZiBhbiBpbmNyZW1lbnQgaXMg dHJhbnNhY3Rpb25hbCAtIGlmIHdlIGZpbmQgYQptYXRjaCBpbiB0aGUgaGFzaCB0YWJsZSwg aXQgaGFzIHRvIGJlIHRoZSBzYW1lIHRyYW5zYWN0aW9uLgoKVGhpcyByZXF1aXJlcyBvbmx5 IG1pbm9yIGNoYW5nZXMgdG8gV0FMLWxvZ2dpbmcuIFdlIG5lZWQgdG8gZW5zdXJlIHRoZQpz ZXF1ZW5jZSByZWNvcmQgaXMgYWx3YXlzIGFzc29jaWF0ZWQgd2l0aCB0aGUgc3VieGFjdCBY SUQgLSB1bnRpbCBub3cKdGhlIGNoYW5nZSBtaWdodCBoYXZlIFhJRCAwIGlmIGl0IHdhcyB0 aGUgZmlyc3QgY2hhbmdlIGluIGEgc3VieGFjdC4gQnV0CnRoZSBzZXF1ZW5jZSBtaWdodCBo YXZlIGJlZW4gY3JlYXRlZCBpbiB0aGUgc2FtZSB0b3AtbGV2ZWwgdHJhbnNhY3Rpb24sCmlu IHdoaWNoIGNhc2UgaXQgc3RpbGwgbmVlZHMgdHJhbnNhY3Rpb25hbCB0cmVhdG1lbnQuIFNv IHdlIGVuc3VyZSB0aGUKWElEIGlzIGFzc2lnbmVkIHdoZW4gV0FMLWxvZ2dpbmcgc2VxdWVu Y2UgY2hhbmdlcywgaWYgd2FsX2xldmVsPWxvZ2ljYWwuCgpBIHBhdGNoIGFkZGluZyBkZWNv ZGluZyBvZiBzZXF1ZW5jZXMgd2FzIG9yaWdpbmFsbHkgc3VibWl0dGVkIGJ5IENhcnkKSHVh bmcuIFRoaXMgY29tbWl0IHJld29ya3MgbWFueSBpbXBvcnRhbnQgYXNwZWN0cyAoZS5nLiB0 aGUgV0FMIGxvZ2dpbmcKYW5kIHRyYW5zYWN0aW9uYWwvbm9uLXRyYW5zYWN0aW9uYWwgaGFu ZGxpbmcpLiBIb3dldmVyLCB0aGUgb3JpZ2luYWwKcGF0Y2ggYW5kIHJldmlld3Mgd2VyZSB2 ZXJ5IHVzZWZ1bC4KCkF1dGhvcjogVG9tYXMgVm9uZHJhLCBDYXJ5IEh1YW5nClJldmlld2Vk LWJ5OiBBc2h1dG9zaCBCYXBhdCwgQW1pdCBLYXBpbGEsIFBldGVyIEVpc2VudHJhdXQsIEhh bm51Cktyb3NpbmcsIEFuZHJlcyBGcmV1bmQsIFpoaWppZSBIb3UKRGlzY3Vzc2lvbjogaHR0 cHM6Ly9wb3N0Z3IuZXMvbS9kMDQ1ZjNjMi02Y2ZiLTA2ZDMtNTU0MC1lNjNjMzIwZGY4YmNA ZW50ZXJwcmlzZWRiLmNvbQpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tLzE3MTBl ZDdlMTNiLmNkNzE3NzQ2MTQzMDc0Ni4zMzcyMjY0NTYyNTQzNjA3NzgxQGhpZ2hnby5jYQpE aXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tLzc2ZTVmY2Q4LTgwNzItOGVhMi1kMzYx LTJlODExOTQxMDAwY0BlbnRlcnByaXNlZGIuY29tCi0tLQogZG9jL3NyYy9zZ21sL2xvZ2lj YWxkZWNvZGluZy5zZ21sICAgICAgICAgICAgIHwgIDYyICstCiBzcmMvYmFja2VuZC9jb21t YW5kcy9zZXF1ZW5jZS5jICAgICAgICAgICAgICAgfCAgODkgKysrCiBzcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jICAgICAgfCAyMzIgKysrKystCiBzcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWwuYyAgICAgfCAxMDAgKystCiAuLi4v cmVwbGljYXRpb24vbG9naWNhbC9yZW9yZGVyYnVmZmVyLmMgICAgICAgfCA3MzcgKysrKysr KysrKysrKysrKystCiBzcmMvaW5jbHVkZS9hY2Nlc3Mvcm1ncmxpc3QuaCAgICAgICAgICAg ICAgICAgfCAgIDQgKy0KIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2RlY29kZS5oICAgICAg ICAgICAgICB8ICAgMiArCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FsLmggICAg ICAgICAgICAgfCAgIDUgKwogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vb3V0cHV0X3BsdWdp bi5oICAgICAgIHwgIDIzICsKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Jlb3JkZXJidWZm ZXIuaCAgICAgICB8ICA0MiArCiBzcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCAg ICAgICAgICAgICAgfCAgIDEgKwogMTEgZmlsZXMgY2hhbmdlZCwgMTI4NSBpbnNlcnRpb25z KCspLCAxMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvbG9naWNh bGRlY29kaW5nLnNnbWwgYi9kb2Mvc3JjL3NnbWwvbG9naWNhbGRlY29kaW5nLnNnbWwKaW5k ZXggY2QxNTJkNGNlZDkuLmRhM2Y1YTc0YTU0IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwv bG9naWNhbGRlY29kaW5nLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2xvZ2ljYWxkZWNvZGlu Zy5zZ21sCkBAIC00ODgsNiArNDg4LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgT3V0cHV0UGx1Z2lu Q2FsbGJhY2tzCiAgICAgTG9naWNhbERlY29kZVRydW5jYXRlQ0IgdHJ1bmNhdGVfY2I7CiAg ICAgTG9naWNhbERlY29kZUNvbW1pdENCIGNvbW1pdF9jYjsKICAgICBMb2dpY2FsRGVjb2Rl TWVzc2FnZUNCIG1lc3NhZ2VfY2I7CisgICAgTG9naWNhbERlY29kZVNlcXVlbmNlQ0Igc2Vx dWVuY2VfY2I7CiAgICAgTG9naWNhbERlY29kZUZpbHRlckJ5T3JpZ2luQ0IgZmlsdGVyX2J5 X29yaWdpbl9jYjsKICAgICBMb2dpY2FsRGVjb2RlU2h1dGRvd25DQiBzaHV0ZG93bl9jYjsK ICAgICBMb2dpY2FsRGVjb2RlRmlsdGVyUHJlcGFyZUNCIGZpbHRlcl9wcmVwYXJlX2NiOwpA QCAtNTAyLDYgKzUwMyw3IEBAIHR5cGVkZWYgc3RydWN0IE91dHB1dFBsdWdpbkNhbGxiYWNr cwogICAgIExvZ2ljYWxEZWNvZGVTdHJlYW1Db21taXRDQiBzdHJlYW1fY29tbWl0X2NiOwog ICAgIExvZ2ljYWxEZWNvZGVTdHJlYW1DaGFuZ2VDQiBzdHJlYW1fY2hhbmdlX2NiOwogICAg IExvZ2ljYWxEZWNvZGVTdHJlYW1NZXNzYWdlQ0Igc3RyZWFtX21lc3NhZ2VfY2I7CisgICAg TG9naWNhbERlY29kZVN0cmVhbVNlcXVlbmNlQ0Igc3RyZWFtX3NlcXVlbmNlX2NiOwogICAg IExvZ2ljYWxEZWNvZGVTdHJlYW1UcnVuY2F0ZUNCIHN0cmVhbV90cnVuY2F0ZV9jYjsKIH0g T3V0cHV0UGx1Z2luQ2FsbGJhY2tzOwogCkBAIC01MTAsMTAgKzUxMiwxMyBAQCB0eXBlZGVm IHZvaWQgKCpMb2dpY2FsT3V0cHV0UGx1Z2luSW5pdCkgKHN0cnVjdCBPdXRwdXRQbHVnaW5D YWxsYmFja3MgKmNiKTsKICAgICAgVGhlIDxmdW5jdGlvbj5iZWdpbl9jYjwvZnVuY3Rpb24+ LCA8ZnVuY3Rpb24+Y2hhbmdlX2NiPC9mdW5jdGlvbj4KICAgICAgYW5kIDxmdW5jdGlvbj5j b21taXRfY2I8L2Z1bmN0aW9uPiBjYWxsYmFja3MgYXJlIHJlcXVpcmVkLAogICAgICB3aGls ZSA8ZnVuY3Rpb24+c3RhcnR1cF9jYjwvZnVuY3Rpb24+LCA8ZnVuY3Rpb24+dHJ1bmNhdGVf Y2I8L2Z1bmN0aW9uPiwKLSAgICAgPGZ1bmN0aW9uPm1lc3NhZ2VfY2I8L2Z1bmN0aW9uPiwg PGZ1bmN0aW9uPmZpbHRlcl9ieV9vcmlnaW5fY2I8L2Z1bmN0aW9uPiwKKyAgICAgPGZ1bmN0 aW9uPm1lc3NhZ2VfY2I8L2Z1bmN0aW9uPiwgPGZ1bmN0aW9uPnNlcXVlbmNlX2NiPC9mdW5j dGlvbj4sCisgICAgIDxmdW5jdGlvbj5maWx0ZXJfYnlfb3JpZ2luX2NiPC9mdW5jdGlvbj4s CiAgICAgIGFuZCA8ZnVuY3Rpb24+c2h1dGRvd25fY2I8L2Z1bmN0aW9uPiBhcmUgb3B0aW9u YWwuCiAgICAgIElmIDxmdW5jdGlvbj50cnVuY2F0ZV9jYjwvZnVuY3Rpb24+IGlzIG5vdCBz ZXQgYnV0IGEKICAgICAgPGNvbW1hbmQ+VFJVTkNBVEU8L2NvbW1hbmQ+IGlzIHRvIGJlIGRl Y29kZWQsIHRoZSBhY3Rpb24gd2lsbCBiZSBpZ25vcmVkLgorICAgICBTaW1pbGFybHksIGlm IDxmdW5jdGlvbj5zZXF1ZW5jZV9jYjwvZnVuY3Rpb24+IGlzIG5vdCBzZXQgYW5kIGEgc2Vx dWVuY2UKKyAgICAgY2hhbmdlIGlzIHRvIGJlIGRlY29kZWQsIHRoZSBhY3Rpb24gd2lsbCBi ZSBpZ25vcmVkLgogICAgIDwvcGFyYT4KIAogICAgIDxwYXJhPgpAQCAtNTIxLDcgKzUyNiw4 IEBAIHR5cGVkZWYgdm9pZCAoKkxvZ2ljYWxPdXRwdXRQbHVnaW5Jbml0KSAoc3RydWN0IE91 dHB1dFBsdWdpbkNhbGxiYWNrcyAqY2IpOwogICAgICBpbi1wcm9ncmVzcyB0cmFuc2FjdGlv bnMuIFRoZSA8ZnVuY3Rpb24+c3RyZWFtX3N0YXJ0X2NiPC9mdW5jdGlvbj4sCiAgICAgIDxm dW5jdGlvbj5zdHJlYW1fc3RvcF9jYjwvZnVuY3Rpb24+LCA8ZnVuY3Rpb24+c3RyZWFtX2Fi b3J0X2NiPC9mdW5jdGlvbj4sCiAgICAgIDxmdW5jdGlvbj5zdHJlYW1fY29tbWl0X2NiPC9m dW5jdGlvbj4sIGFuZCA8ZnVuY3Rpb24+c3RyZWFtX2NoYW5nZV9jYjwvZnVuY3Rpb24+Ci0g ICAgIGFyZSByZXF1aXJlZCwgd2hpbGUgPGZ1bmN0aW9uPnN0cmVhbV9tZXNzYWdlX2NiPC9m dW5jdGlvbj4gYW5kCisgICAgIGFyZSByZXF1aXJlZCwgd2hpbGUgPGZ1bmN0aW9uPnN0cmVh bV9tZXNzYWdlX2NiPC9mdW5jdGlvbj4sCisgICAgIDxmdW5jdGlvbj5zdHJlYW1fc2VxdWVu Y2VfY2I8L2Z1bmN0aW9uPiBhbmQKICAgICAgPGZ1bmN0aW9uPnN0cmVhbV90cnVuY2F0ZV9j YjwvZnVuY3Rpb24+IGFyZSBvcHRpb25hbC4gVGhlCiAgICAgIDxmdW5jdGlvbj5zdHJlYW1f cHJlcGFyZV9jYjwvZnVuY3Rpb24+IGlzIGFsc28gcmVxdWlyZWQgaWYgdGhlIG91dHB1dAog ICAgICBwbHVnaW4gYWxzbyBzdXBwb3J0IHR3by1waGFzZSBjb21taXRzLgpAQCAtODQwLDYg Kzg0NiwzNSBAQCB0eXBlZGVmIHZvaWQgKCpMb2dpY2FsRGVjb2RlTWVzc2FnZUNCKSAoc3Ry dWN0IExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwKICAgICAgPC9wYXJhPgogICAgIDwv c2VjdDM+CiAKKyAgICA8c2VjdDMgaWQ9ImxvZ2ljYWxkZWNvZGluZy1vdXRwdXQtcGx1Z2lu LXNlcXVlbmNlIj4KKyAgICAgPHRpdGxlPlNlcXVlbmNlIENhbGxiYWNrPC90aXRsZT4KKwor ICAgICA8cGFyYT4KKyAgICAgIFRoZSBvcHRpb25hbCA8ZnVuY3Rpb24+c2VxdWVuY2VfY2I8 L2Z1bmN0aW9uPiBjYWxsYmFjayBpcyBjYWxsZWQgZm9yCisgICAgICBhY3Rpb25zIHRoYXQg dXBkYXRlIGEgc2VxdWVuY2UgdmFsdWUuCis8cHJvZ3JhbWxpc3Rpbmc+Cit0eXBlZGVmIHZv aWQgKCpMb2dpY2FsRGVjb2RlU2VxdWVuY2VDQikgKHN0cnVjdCBMb2dpY2FsRGVjb2RpbmdD b250ZXh0ICpjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgWExvZ1JlY1B0ciBzZXF1ZW5jZV9sc24sCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFJlbGF0aW9uIHJlbCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB0cmFuc2FjdGlvbmFsLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NCB2YWx1ZSk7Cis8L3By b2dyYW1saXN0aW5nPgorICAgICAgVGhlIDxwYXJhbWV0ZXI+dHhuPC9wYXJhbWV0ZXI+IHBh cmFtZXRlciBjb250YWlucyBtZXRhIGluZm9ybWF0aW9uIGFib3V0CisgICAgICB0aGUgdHJh bnNhY3Rpb24gdGhlIHNlcXVlbmNlIGNoYW5nZSBpcyBwYXJ0IG9mLiBOb3RlIGhvd2V2ZXIg dGhhdCBmb3IKKyAgICAgIG5vbi10cmFuc2FjdGlvbmFsIHVwZGF0ZXMsIHRoZSB0cmFuc2Fj dGlvbiBtYXkgYmUgTlVMTCwgZGVwZW5kaW5nIG9uCisgICAgICBpZiB0aGUgdHJhbnNhY3Rp b24gYWxyZWFkeSBoYXMgYW4gWElEIGFzc2lnbmVkLgorICAgICAgVGhlIDxwYXJhbWV0ZXI+ c2VxdWVuY2VfbHNuPC9wYXJhbWV0ZXI+IGhhcyB0aGUgV0FMIGxvY2F0aW9uIG9mIHRoZQor ICAgICAgc2VxdWVuY2UgdXBkYXRlLiA8cGFyYW1ldGVyPnRyYW5zYWN0aW9uYWw8L3BhcmFt ZXRlcj4gc2F5cyBpZiB0aGUKKyAgICAgIHNlcXVlbmNlIGhhcyB0byBiZSByZXBsYXllZCBh cyBwYXJ0IG9mIHRoZSB0cmFuc2FjdGlvbiBvciBkaXJlY3RseS4KKworICAgICAgVGhlIDxw YXJhbWV0ZXI+dmFsdWU8L3BhcmFtZXRlcj4gcGFyYW1ldGVyIGRlc2NyaWJlcyB0aGUgc2Vx dWVuY2UgY2hhbmdlLgorICAgICAgTm90ZSB0aGF0IHRoaXMgbWF5IG5vdCBiZSB0aGUgdmFs dWUgb2J0YWluZWQgYnkgdGhlIHByb2Nlc3MgdXBkYXRpbmcgdGhlCisgICAgICBwcm9jZXNz LCBidXQgdGhlIGZ1dHVyZSBzZXF1ZW5jZSB2YWx1ZSB3cml0dGVuIHRvIFdBTCAodHlwaWNh bGx5IGFib3V0CisgICAgICAzMiB2YWx1ZXMgYWhlYWQpLgorICAgICA8L3BhcmE+CisgICAg PC9zZWN0Mz4KKwogICAgIDxzZWN0MyBpZD0ibG9naWNhbGRlY29kaW5nLW91dHB1dC1wbHVn aW4tZmlsdGVyLXByZXBhcmUiPgogICAgICA8dGl0bGU+UHJlcGFyZSBGaWx0ZXIgQ2FsbGJh Y2s8L3RpdGxlPgogCkBAIC0xMDUxLDYgKzEwODYsMjQgQEAgdHlwZWRlZiB2b2lkICgqTG9n aWNhbERlY29kZVN0cmVhbU1lc3NhZ2VDQikgKHN0cnVjdCBMb2dpY2FsRGVjb2RpbmdDb250 ZXh0ICpjdHgKICAgICAgPC9wYXJhPgogICAgIDwvc2VjdDM+CiAKKyAgICA8c2VjdDMgaWQ9 ImxvZ2ljYWxkZWNvZGluZy1vdXRwdXQtcGx1Z2luLXN0cmVhbS1zZXF1ZW5jZSI+CisgICAg IDx0aXRsZT5TdHJlYW0gU2VxdWVuY2UgQ2FsbGJhY2s8L3RpdGxlPgorICAgICA8cGFyYT4K KyAgICAgIFRoZSBvcHRpb25hbCA8ZnVuY3Rpb24+c3RyZWFtX3NlcXVlbmNlX2NiPC9mdW5j dGlvbj4gY2FsbGJhY2sgaXMgY2FsbGVkCisgICAgICBmb3IgYWN0aW9ucyB0aGF0IGNoYW5n ZSBhIHNlcXVlbmNlIGluIGEgYmxvY2sgb2Ygc3RyZWFtZWQgY2hhbmdlcworICAgICAgKGRl bWFyY2F0ZWQgYnkgPGZ1bmN0aW9uPnN0cmVhbV9zdGFydF9jYjwvZnVuY3Rpb24+IGFuZAor ICAgICAgPGZ1bmN0aW9uPnN0cmVhbV9zdG9wX2NiPC9mdW5jdGlvbj4gY2FsbHMpLgorPHBy b2dyYW1saXN0aW5nPgordHlwZWRlZiB2b2lkICgqTG9naWNhbERlY29kZVN0cmVhbVNlcXVl bmNlQ0IpIChzdHJ1Y3QgTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZW9yZGVyQnVmZmVyVFhO ICp0eG4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFhMb2dSZWNQdHIgc2VxdWVuY2VfbHNuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBSZWxhdGlvbiByZWwsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgdHJhbnNhY3Rpb25hbCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjQgdmFsdWUp OworPC9wcm9ncmFtbGlzdGluZz4KKyAgICAgPC9wYXJhPgorICAgIDwvc2VjdDM+CisKICAg ICA8c2VjdDMgaWQ9ImxvZ2ljYWxkZWNvZGluZy1vdXRwdXQtcGx1Z2luLXN0cmVhbS10cnVu Y2F0ZSI+CiAgICAgIDx0aXRsZT5TdHJlYW0gVHJ1bmNhdGUgQ2FsbGJhY2s8L3RpdGxlPgog ICAgICA8cGFyYT4KQEAgLTEyMzAsOCArMTI4Myw5IEBAIE91dHB1dFBsdWdpbldyaXRlKGN0 eCwgdHJ1ZSk7CiAgICAgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zLiBUaGVyZSBhcmUgbXVs dGlwbGUgcmVxdWlyZWQgc3RyZWFtaW5nIGNhbGxiYWNrcwogICAgICg8ZnVuY3Rpb24+c3Ry ZWFtX3N0YXJ0X2NiPC9mdW5jdGlvbj4sIDxmdW5jdGlvbj5zdHJlYW1fc3RvcF9jYjwvZnVu Y3Rpb24+LAogICAgIDxmdW5jdGlvbj5zdHJlYW1fYWJvcnRfY2I8L2Z1bmN0aW9uPiwgPGZ1 bmN0aW9uPnN0cmVhbV9jb21taXRfY2I8L2Z1bmN0aW9uPgotICAgIGFuZCA8ZnVuY3Rpb24+ c3RyZWFtX2NoYW5nZV9jYjwvZnVuY3Rpb24+KSBhbmQgdHdvIG9wdGlvbmFsIGNhbGxiYWNr cwotICAgICg8ZnVuY3Rpb24+c3RyZWFtX21lc3NhZ2VfY2I8L2Z1bmN0aW9uPiBhbmQgPGZ1 bmN0aW9uPnN0cmVhbV90cnVuY2F0ZV9jYjwvZnVuY3Rpb24+KS4KKyAgICBhbmQgPGZ1bmN0 aW9uPnN0cmVhbV9jaGFuZ2VfY2I8L2Z1bmN0aW9uPikgYW5kIHRocmVlIG9wdGlvbmFsIGNh bGxiYWNrcworICAgICg8ZnVuY3Rpb24+c3RyZWFtX21lc3NhZ2VfY2I8L2Z1bmN0aW9uPiwg PGZ1bmN0aW9uPnN0cmVhbV9zZXF1ZW5jZV9jYjwvZnVuY3Rpb24+LAorICAgIGFuZCA8ZnVu Y3Rpb24+c3RyZWFtX3RydW5jYXRlX2NiPC9mdW5jdGlvbj4pLgogICAgIEFsc28sIGlmIHN0 cmVhbWluZyBvZiB0d28tcGhhc2UgY29tbWFuZHMgaXMgdG8gYmUgc3VwcG9ydGVkLCB0aGVu IGFkZGl0aW9uYWwKICAgICBjYWxsYmFja3MgbXVzdCBiZSBwcm92aWRlZC4gKFNlZSA8eHJl ZiBsaW5rZW5kPSJsb2dpY2FsZGVjb2RpbmctdHdvLXBoYXNlLWNvbW1pdHMiLz4KICAgICBm b3IgZGV0YWlscykuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9zZXF1ZW5j ZS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc2VxdWVuY2UuYwppbmRleCBkYTJhY2U3OWNj Yy4uNjE2Yjg2ODVlMzkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3NlcXVl bmNlLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc2VxdWVuY2UuYwpAQCAtMjA0LDYg KzIwNCwxNCBAQCBEZWZpbmVTZXF1ZW5jZShQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVNl cVN0bXQgKnNlcSkKIAlzdG10LT50YWJsZXNwYWNlbmFtZSA9IE5VTEw7CiAJc3RtdC0+aWZf bm90X2V4aXN0cyA9IHNlcS0+aWZfbm90X2V4aXN0czsKIAorCS8qCisJICogTWFrZSBzdXJl IHRoZSByZWxmaWxlbm9kZSBjcmVhdGlvbiAoaW4gRGVmaW5lUmVsYXRpb24pIGlzIGFzc29j aWF0ZWQKKwkgKiB3aXRoIHRoZSBYSUQsIHNvIHRoYXQgZGVjb2Rpbmcgb2Ygc2VxdWVuY2Vz IGNhbiBoYW5kbGUgdGhpcyBhcyBhCisJICogdHJhbnNhY3Rpb25hbCBjaGFuZ2UuCisJICov CisJaWYgKFhMb2dMb2dpY2FsSW5mb0FjdGl2ZSgpKQorCQlHZXRDdXJyZW50VHJhbnNhY3Rp b25JZCgpOworCiAJYWRkcmVzcyA9IERlZmluZVJlbGF0aW9uKHN0bXQsIFJFTEtJTkRfU0VR VUVOQ0UsIHNlcS0+b3duZXJJZCwgTlVMTCwgTlVMTCk7CiAJc2Vxb2lkID0gYWRkcmVzcy5v YmplY3RJZDsKIAlBc3NlcnQoc2Vxb2lkICE9IEludmFsaWRPaWQpOwpAQCAtMzAyLDYgKzMx MCwxMyBAQCBSZXNldFNlcXVlbmNlKE9pZCBzZXFfcmVsaWQpCiAJc2VxLT5pc19jYWxsZWQg PSBmYWxzZTsKIAlzZXEtPmxvZ19jbnQgPSAwOwogCisJLyoKKwkgKiBNYWtlIHN1cmUgdGhl IHJlbGZpbGVub2RlIGNyZWF0aW9uIGlzIGFzc29jaWF0ZWQgd2l0aCB0aGUgWElELCBzbyB0 aGF0CisJICogZGVjb2Rpbmcgb2Ygc2VxdWVuY2VzIGNhbiBoYW5kbGUgdGhpcyBhcyBhIHRy YW5zYWN0aW9uYWwgY2hhbmdlLgorCSAqLworCWlmIChYTG9nTG9naWNhbEluZm9BY3RpdmUo KSkKKwkJR2V0Q3VycmVudFRyYW5zYWN0aW9uSWQoKTsKKwogCS8qCiAJICogQ3JlYXRlIGEg bmV3IHN0b3JhZ2UgZmlsZSBmb3IgdGhlIHNlcXVlbmNlLgogCSAqLwpAQCAtMzkyLDggKzQw NywxOSBAQCBmaWxsX3NlcV9mb3JrX3dpdGhfZGF0YShSZWxhdGlvbiByZWwsIEhlYXBUdXBs ZSB0dXBsZSwgRm9ya051bWJlciBmb3JrTnVtKQogCiAJLyogY2hlY2sgdGhlIGNvbW1lbnQg YWJvdmUgbmV4dHZhbF9pbnRlcm5hbCgpJ3MgZXF1aXZhbGVudCBjYWxsLiAqLwogCWlmIChS ZWxhdGlvbk5lZWRzV0FMKHJlbCkpCisJewogCQlHZXRUb3BUcmFuc2FjdGlvbklkKCk7CiAK KwkJLyoKKwkJICogTWFrZSBzdXJlIHRoZSBzdWJ0cmFuc2FjdGlvbiBoYXMgYSBYSUQgYXNz aWduZWQsIHNvIHRoYXQgdGhlCisJCSAqIHNlcXVlbmNlIGNoYW5nZSBXQUwgcmVjb3JkIGlz IHByb3Blcmx5IGFzc29jaWF0ZWQgd2l0aCBpdC4gVGhpcworCQkgKiBtYXR0ZXJzIGZvciBz ZXF1ZW5jZXMgY3JlYXRlZC9hbHRlcmVkIGluIGEgdHJhbnNhY3Rpb24gLSB0aGUKKwkJICog c3Vic2VxdWVudCBjaGFuZ2VzIG5lZWQgdG8gYmUgaGFuZGxlZCBhcyB0cmFuc2FjdGlvbmFs LgorCQkgKi8KKwkJaWYgKFhMb2dMb2dpY2FsSW5mb0FjdGl2ZSgpKQorCQkJR2V0Q3VycmVu dFRyYW5zYWN0aW9uSWQoKTsKKwl9CisKIAlTVEFSVF9DUklUX1NFQ1RJT04oKTsKIAogCU1h cmtCdWZmZXJEaXJ0eShidWYpOwpAQCAtNDE3LDYgKzQ0Myw5IEBAIGZpbGxfc2VxX2Zvcmtf d2l0aF9kYXRhKFJlbGF0aW9uIHJlbCwgSGVhcFR1cGxlIHR1cGxlLCBGb3JrTnVtYmVyIGZv cmtOdW0pCiAJCVhMb2dSZWdpc3RlckRhdGEoKGNoYXIgKikgJnhscmVjLCBzaXplb2YoeGxf c2VxX3JlYykpOwogCQlYTG9nUmVnaXN0ZXJEYXRhKChjaGFyICopIHR1cGxlLT50X2RhdGEs IHR1cGxlLT50X2xlbik7CiAKKwkJLyogYWxsb3cgZmlsdGVyaW5nIGJ5IG9yaWdpbiBvbiBh IHNlcXVlbmNlIHVwZGF0ZSAqLworCQlYTG9nU2V0UmVjb3JkRmxhZ3MoWExPR19JTkNMVURF X09SSUdJTik7CisKIAkJcmVjcHRyID0gWExvZ0luc2VydChSTV9TRVFfSUQsIFhMT0dfU0VR X0xPRyk7CiAKIAkJUGFnZVNldExTTihwYWdlLCByZWNwdHIpOwpAQCAtNDk5LDYgKzUyOCwx NCBAQCBBbHRlclNlcXVlbmNlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQWx0ZXJTZXFTdG10ICpz dG10KQogCQlpZiAoUmVsYXRpb25OZWVkc1dBTChzZXFyZWwpKQogCQkJR2V0VG9wVHJhbnNh Y3Rpb25JZCgpOwogCisJCS8qCisJCSAqIE1ha2Ugc3VyZSB0aGUgcmVsZmlsZW5vZGUgY3Jl YXRpb24gaXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBYSUQsIHNvCisJCSAqIHRoYXQgZGVjb2Rp bmcgb2Ygc2VxdWVuY2VzIGNhbiBoYW5kbGUgdGhpcyBhcyBhIHRyYW5zYWN0aW9uYWwKKwkJ ICogY2hhbmdlLgorCQkgKi8KKwkJaWYgKFhMb2dMb2dpY2FsSW5mb0FjdGl2ZSgpKQorCQkJ R2V0Q3VycmVudFRyYW5zYWN0aW9uSWQoKTsKKwogCQkvKgogCQkgKiBDcmVhdGUgYSBuZXcg c3RvcmFnZSBmaWxlIGZvciB0aGUgc2VxdWVuY2UsIG1ha2luZyB0aGUgc3RhdGUKIAkJICog Y2hhbmdlcyB0cmFuc2FjdGlvbmFsLgpAQCAtNTQ4LDggKzU4NSwxOSBAQCBTZXF1ZW5jZUNo YW5nZVBlcnNpc3RlbmNlKE9pZCByZWxpZCwgY2hhciBuZXdyZWxwZXJzaXN0ZW5jZSkKIAog CS8qIGNoZWNrIHRoZSBjb21tZW50IGFib3ZlIG5leHR2YWxfaW50ZXJuYWwoKSdzIGVxdWl2 YWxlbnQgY2FsbC4gKi8KIAlpZiAoUmVsYXRpb25OZWVkc1dBTChzZXFyZWwpKQorCXsKIAkJ R2V0VG9wVHJhbnNhY3Rpb25JZCgpOwogCisJCS8qCisJCSAqIE1ha2Ugc3VyZSB0aGUgc3Vi dHJhbnNhY3Rpb24gaGFzIGEgWElEIGFzc2lnbmVkLCBzbyB0aGF0IHRoZQorCQkgKiBzZXF1 ZW5jZSBjaGFuZ2UgV0FMIHJlY29yZCBpcyBwcm9wZXJseSBhc3NvY2lhdGVkIHdpdGggaXQu IFRoaXMKKwkJICogbWF0dGVycyBmb3Igc2VxdWVuY2VzIGNyZWF0ZWQvYWx0ZXJlZCBpbiBh IHRyYW5zYWN0aW9uIC0gdGhlCisJCSAqIHN1YnNlcXVlbnQgY2hhbmdlcyBuZWVkIHRvIGJl IGhhbmRsZWQgYXMgdHJhbnNhY3Rpb25hbC4KKwkJICovCisJCWlmIChYTG9nTG9naWNhbElu Zm9BY3RpdmUoKSkKKwkJCUdldEN1cnJlbnRUcmFuc2FjdGlvbklkKCk7CisJfQorCiAJKHZv aWQpIHJlYWRfc2VxX3R1cGxlKHNlcXJlbCwgJmJ1ZiwgJnNlcWRhdGF0dXBsZSk7CiAJUmVs YXRpb25TZXROZXdSZWxmaWxlbnVtYmVyKHNlcXJlbCwgbmV3cmVscGVyc2lzdGVuY2UpOwog CWZpbGxfc2VxX3dpdGhfZGF0YShzZXFyZWwsICZzZXFkYXRhdHVwbGUpOwpAQCAtNzkyLDEw ICs4NDAsMzQgQEAgbmV4dHZhbF9pbnRlcm5hbChPaWQgcmVsaWQsIGJvb2wgY2hlY2tfcGVy bWlzc2lvbnMpCiAJICogSXQncyBzdWZmaWNpZW50IHRvIGVuc3VyZSB0aGUgdG9wbGV2ZWwg dHJhbnNhY3Rpb24gaGFzIGFuIHhpZCwgbm8gbmVlZAogCSAqIHRvIGFzc2lnbiB4aWRzIHN1 YnhhY3RzLCB0aGF0J2xsIGFscmVhZHkgdHJpZ2dlciBhbiBhcHByb3ByaWF0ZSB3YWl0Lgog CSAqIChIYXZlIHRvIGRvIHRoYXQgaGVyZSwgc28gd2UncmUgb3V0c2lkZSB0aGUgY3JpdGlj YWwgc2VjdGlvbikKKwkgKgorCSAqIFdlIGhhdmUgdG8gZW5zdXJlIHdlIGhhdmUgYSBwcm9w ZXIgWElELCB3aGljaCB3aWxsIGJlIGluY2x1ZGVkIGluIHRoZQorCSAqIFhMT0cgcmVjb3Jk IGJ5IFhMb2dSZWNvcmRBc3NlbWJsZS4gT3RoZXJ3aXNlIHRoZSBmaXJzdCBuZXh0dmFsKCkg aW4gYQorCSAqIHN1YnhhY3QgKHdpdGhvdXQgYW55IHByZWNlZGluZyBjaGFuZ2VzKSB3b3Vs ZCBnZXQgWElEIDAsIGFuZCBpdCB3b3VsZAorCSAqIHRoZW4gYmUgaW1wb3NzaWJsZSB0byBk ZWNpZGUgd2hpY2ggdG9wIHhhY3QgaXQgYmVsb25ncyB0by4gSXQnZCBhbHNvCisJICogdHJp Z2dlciBhc3NlcnQgaW4gRGVjb2RlU2VxdWVuY2UuIFdlIG9ubHkgZG8gdGhhdCB3aXRoCisJ ICogd2FsX2xldmVsPWxvZ2ljYWwsIHRob3VnaC4KKwkgKgorCSAqIFhYWCBUaGlzIG1pZ2h0 IHNlZW0gdW5uZWNlc3NhcnksIGJlY2F1c2UgaWYgdGhlcmUncyBubyBYSUQgdGhlIHhhY3QK KwkgKiBjb3VsZG4ndCBoYXZlIGRvbmUgYW55dGhpbmcgaW1wb3J0YW50IHlldCwgZS5nLiBp dCBjb3VsZCBub3QgaGF2ZQorCSAqIGNyZWF0ZWQgYSBzZXF1ZW5jZS4gQnV0IHRoYXQncyBp bmNvcnJlY3QsIGJlY2F1c2Ugb2Ygc3VieGFjdHMuIFRoZQorCSAqIGN1cnJlbnQgc3VidHJh bnNhY3Rpb24gbWlnaHQgbm90IGhhdmUgZG9uZSBhbnl0aGluZyB5ZXQgKHRodXMgbm8gWElE KSwKKwkgKiBidXQgYW4gZWFybGllciBvbmUgbWlnaHQgaGF2ZSBjcmVhdGVkIHRoZSBzZXF1 ZW5jZS4KIAkgKi8KIAlpZiAobG9naXQgJiYgUmVsYXRpb25OZWVkc1dBTChzZXFyZWwpKQor CXsKIAkJR2V0VG9wVHJhbnNhY3Rpb25JZCgpOwogCisJCS8qCisJCSAqIE1ha2Ugc3VyZSB0 aGUgc3VidHJhbnNhY3Rpb24gaGFzIGEgWElEIGFzc2lnbmVkLCBzbyB0aGF0IHRoZQorCQkg KiBzZXF1ZW5jZSBjaGFuZ2UgV0FMIHJlY29yZCBpcyBwcm9wZXJseSBhc3NvY2lhdGVkIHdp dGggaXQuIFRoaXMKKwkJICogbWF0dGVycyBmb3Igc2VxdWVuY2VzIGNyZWF0ZWQvYWx0ZXJl ZCBpbiBhIHRyYW5zYWN0aW9uIC0gdGhlCisJCSAqIHN1YnNlcXVlbnQgY2hhbmdlcyBuZWVk IHRvIGJlIGhhbmRsZWQgYXMgdHJhbnNhY3Rpb25hbC4KKwkJICovCisJCWlmIChYTG9nTG9n aWNhbEluZm9BY3RpdmUoKSkKKwkJCUdldEN1cnJlbnRUcmFuc2FjdGlvbklkKCk7CisJfQor CiAJLyogcmVhZHkgdG8gY2hhbmdlIHRoZSBvbi1kaXNrIChvciByZWFsbHksIGluLWJ1ZmZl cikgdHVwbGUgKi8KIAlTVEFSVF9DUklUX1NFQ1RJT04oKTsKIApAQCAtODM1LDYgKzkwNyw5 IEBAIG5leHR2YWxfaW50ZXJuYWwoT2lkIHJlbGlkLCBib29sIGNoZWNrX3Blcm1pc3Npb25z KQogCQlYTG9nUmVnaXN0ZXJEYXRhKChjaGFyICopICZ4bHJlYywgc2l6ZW9mKHhsX3NlcV9y ZWMpKTsKIAkJWExvZ1JlZ2lzdGVyRGF0YSgoY2hhciAqKSBzZXFkYXRhdHVwbGUudF9kYXRh LCBzZXFkYXRhdHVwbGUudF9sZW4pOwogCisJCS8qIGFsbG93IGZpbHRlcmluZyBieSBvcmln aW4gb24gYSBzZXF1ZW5jZSB1cGRhdGUgKi8KKwkJWExvZ1NldFJlY29yZEZsYWdzKFhMT0df SU5DTFVERV9PUklHSU4pOworCiAJCXJlY3B0ciA9IFhMb2dJbnNlcnQoUk1fU0VRX0lELCBY TE9HX1NFUV9MT0cpOwogCiAJCVBhZ2VTZXRMU04ocGFnZSwgcmVjcHRyKTsKQEAgLTk5Niw4 ICsxMDcxLDE5IEBAIGRvX3NldHZhbChPaWQgcmVsaWQsIGludDY0IG5leHQsIGJvb2wgaXNj YWxsZWQpCiAKIAkvKiBjaGVjayB0aGUgY29tbWVudCBhYm92ZSBuZXh0dmFsX2ludGVybmFs KCkncyBlcXVpdmFsZW50IGNhbGwuICovCiAJaWYgKFJlbGF0aW9uTmVlZHNXQUwoc2VxcmVs KSkKKwl7CiAJCUdldFRvcFRyYW5zYWN0aW9uSWQoKTsKIAorCQkvKgorCQkgKiBNYWtlIHN1 cmUgdGhlIHN1YnRyYW5zYWN0aW9uIGhhcyBhIFhJRCBhc3NpZ25lZCwgc28gdGhhdCB0aGUK KwkJICogc2VxdWVuY2UgY2hhbmdlIFdBTCByZWNvcmQgaXMgcHJvcGVybHkgYXNzb2NpYXRl ZCB3aXRoIGl0LiBUaGlzCisJCSAqIG1hdHRlcnMgZm9yIHNlcXVlbmNlcyBjcmVhdGVkL2Fs dGVyZWQgaW4gYSB0cmFuc2FjdGlvbiAtIHRoZQorCQkgKiBzdWJzZXF1ZW50IGNoYW5nZXMg bmVlZCB0byBiZSBoYW5kbGVkIGFzIHRyYW5zYWN0aW9uYWwuCisJCSAqLworCQlpZiAoWExv Z0xvZ2ljYWxJbmZvQWN0aXZlKCkpCisJCQlHZXRDdXJyZW50VHJhbnNhY3Rpb25JZCgpOwor CX0KKwogCS8qIHJlYWR5IHRvIGNoYW5nZSB0aGUgb24tZGlzayAob3IgcmVhbGx5LCBpbi1i dWZmZXIpIHR1cGxlICovCiAJU1RBUlRfQ1JJVF9TRUNUSU9OKCk7CiAKQEAgLTEwMjEsNiAr MTEwNyw5IEBAIGRvX3NldHZhbChPaWQgcmVsaWQsIGludDY0IG5leHQsIGJvb2wgaXNjYWxs ZWQpCiAJCVhMb2dSZWdpc3RlckRhdGEoKGNoYXIgKikgJnhscmVjLCBzaXplb2YoeGxfc2Vx X3JlYykpOwogCQlYTG9nUmVnaXN0ZXJEYXRhKChjaGFyICopIHNlcWRhdGF0dXBsZS50X2Rh dGEsIHNlcWRhdGF0dXBsZS50X2xlbik7CiAKKwkJLyogYWxsb3cgZmlsdGVyaW5nIGJ5IG9y aWdpbiBvbiBhIHNlcXVlbmNlIHVwZGF0ZSAqLworCQlYTG9nU2V0UmVjb3JkRmxhZ3MoWExP R19JTkNMVURFX09SSUdJTik7CisKIAkJcmVjcHRyID0gWExvZ0luc2VydChSTV9TRVFfSUQs IFhMT0dfU0VRX0xPRyk7CiAKIAkJUGFnZVNldExTTihwYWdlLCByZWNwdHIpOwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZWNvZGUuYyBiL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMKaW5kZXggMTIzNzExOGU4NGYu LjVhZGViYTRmNzBjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL2RlY29kZS5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVj b2RlLmMKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJhY2Nlc3MveGxvZ3JlY29yZC5o IgogI2luY2x1ZGUgImFjY2Vzcy94bG9ndXRpbHMuaCIKICNpbmNsdWRlICJjYXRhbG9nL3Bn X2NvbnRyb2wuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3N0b3JhZ2VfeGxvZy5oIgogI2luY2x1 ZGUgInJlcGxpY2F0aW9uL2RlY29kZS5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2lj YWwuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9tZXNzYWdlLmgiCkBAIC00Miw2ICs0Myw3 IEBACiAjaW5jbHVkZSAicmVwbGljYXRpb24vcmVvcmRlcmJ1ZmZlci5oIgogI2luY2x1ZGUg InJlcGxpY2F0aW9uL3NuYXBidWlsZC5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc3RhbmRieS5o IgorI2luY2x1ZGUgImNvbW1hbmRzL3NlcXVlbmNlLmgiCiAKIC8qIGluZGl2aWR1YWwgcmVj b3JkKGdyb3VwKSdzIGhhbmRsZXJzICovCiBzdGF0aWMgdm9pZCBEZWNvZGVJbnNlcnQoTG9n aWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBYTG9nUmVjb3JkQnVmZmVyICpidWYpOwpAQCAt NjMsNiArNjUsNyBAQCBzdGF0aWMgdm9pZCBEZWNvZGVQcmVwYXJlKExvZ2ljYWxEZWNvZGlu Z0NvbnRleHQgKmN0eCwgWExvZ1JlY29yZEJ1ZmZlciAqYnVmLAogCiAvKiBjb21tb24gZnVu Y3Rpb24gdG8gZGVjb2RlIHR1cGxlcyAqLwogc3RhdGljIHZvaWQgRGVjb2RlWExvZ1R1cGxl KGNoYXIgKmRhdGEsIFNpemUgbGVuLCBSZW9yZGVyQnVmZmVyVHVwbGVCdWYgKnR1cGxlKTsK K3N0YXRpYyB2b2lkIERlY29kZVNlcVR1cGxlKGNoYXIgKmRhdGEsIFNpemUgbGVuLCBSZW9y ZGVyQnVmZmVyVHVwbGVCdWYgKnR1cGxlKTsKIAogLyogaGVscGVyIGZ1bmN0aW9ucyBmb3Ig ZGVjb2RpbmcgdHJhbnNhY3Rpb25zICovCiBzdGF0aWMgaW5saW5lIGJvb2wgRmlsdGVyUHJl cGFyZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsCkBAIC02MjksNyArNjMyLDcgQEAg bG9naWNhbG1zZ19kZWNvZGUoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBYTG9nUmVj b3JkQnVmZmVyICpidWYpCiAJCSAqIFdlIG5lZWQgdG8gc2V0IHByb2Nlc3NpbmdfcmVxdWly ZWQgZmxhZyB0byBub3RpZnkgdGhlIG1lc3NhZ2UncwogCQkgKiBleGlzdGVuY2UgdG8gdGhl IGNhbGxlci4gVXN1YWxseSwgdGhlIGZsYWcgaXMgc2V0IHdoZW4gZWl0aGVyIHRoZQogCQkg KiBDT01NSVQgb3IgQUJPUlQgcmVjb3JkcyBhcmUgZGVjb2RlZCwgYnV0IHRoaXMgbXVzdCBi ZSB0dXJuZWQgb24KLQkJICogaGVyZSBiZWNhdXNlIHRoZSBub24tdHJhbnNhY3Rpb25hbCBs b2dpY2FsIG1lc3NhZ2UgaXMgZGVjb2RlZAorCQkgKiBoZXJlIGJlY2F1c2UgdGhlIG5vbi10 cmFuc2FjdGlvbmFsIHNlcXVlbmNlIGNoYW5nZSBpcyBkZWNvZGVkCiAJCSAqIHdpdGhvdXQg d2FpdGluZyBmb3IgdGhlc2UgcmVjb3Jkcy4KIAkJICovCiAJCWlmICghbWVzc2FnZS0+dHJh bnNhY3Rpb25hbCkKQEAgLTEzMjAsMyArMTMyMywyMzAgQEAgRGVjb2RlVFhOTmVlZFNraXAo TG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBYTG9nUmVjb3JkQnVmZmVyICpidWYsCiAK IAlyZXR1cm4gZmFsc2U7CiB9CisKKy8qCisgKiBEZWNvZGVTZXFUdXBsZQorICoJCWRlY29k ZSB0dXBsZSBkZXNjcmliaW5nIHRoZSBzZXF1ZW5jZSBjaGFuZ2UKKyAqCisgKiBTZXF1ZW5j ZXMgYXJlIHJlcHJlc2VudGVkIGFzIGEgdGFibGUgd2l0aCBhIHNpbmdsZSByb3csIHdoaWNo IGdldHMgdXBkYXRlZCBieQorICogbmV4dHZhbCgpIGV0Yy4gVGhlIHR1cGxlIGlzIHN0b3Jl ZCBpbiBXQUwgcmlnaHQgYWZ0ZXIgdGhlIHhsX3NlcV9yZWMsIHNvIHdlCisgKiBzaW1wbHkg Y29weSBpdCBpbnRvIHRoZSB0dXBsZWJ1ZiAoc2ltaWxhciB0byBzZXFfcmVkbykuCisgKi8K K3N0YXRpYyB2b2lkCitEZWNvZGVTZXFUdXBsZShjaGFyICpkYXRhLCBTaXplIGxlbiwgUmVv cmRlckJ1ZmZlclR1cGxlQnVmICp0dXBsZSkKK3sKKwlpbnQJCQlkYXRhbGVuID0gbGVuIC0g c2l6ZW9mKHhsX3NlcV9yZWMpIC0gU2l6ZW9mSGVhcFR1cGxlSGVhZGVyOworCisJQXNzZXJ0 KGRhdGFsZW4gPj0gMCk7CisKKwl0dXBsZS0+dHVwbGUudF9sZW4gPSBkYXRhbGVuICsgU2l6 ZW9mSGVhcFR1cGxlSGVhZGVyOworCisJSXRlbVBvaW50ZXJTZXRJbnZhbGlkKCZ0dXBsZS0+ dHVwbGUudF9zZWxmKTsKKworCXR1cGxlLT50dXBsZS50X3RhYmxlT2lkID0gSW52YWxpZE9p ZDsKKworCW1lbWNweSgoKGNoYXIgKikgdHVwbGUtPnR1cGxlLnRfZGF0YSksCisJCSAgIGRh dGEgKyBzaXplb2YoeGxfc2VxX3JlYyksCisJCSAgIFNpemVvZkhlYXBUdXBsZUhlYWRlcik7 CisKKwltZW1jcHkoKChjaGFyICopIHR1cGxlLT50dXBsZS50X2RhdGEpICsgU2l6ZW9mSGVh cFR1cGxlSGVhZGVyLAorCQkgICBkYXRhICsgc2l6ZW9mKHhsX3NlcV9yZWMpICsgU2l6ZW9m SGVhcFR1cGxlSGVhZGVyLAorCQkgICBkYXRhbGVuKTsKK30KKworLyoKKyAqIEhhbmRsZSBz ZXF1ZW5jZSBkZWNvZGUKKyAqCisgKiBEZWNvZGluZyBzZXF1ZW5jZXMgaXMgYSBiaXQgdHJp Y2t5LCBiZWNhdXNlIHdoaWxlIG1vc3Qgc2VxdWVuY2UgYWN0aW9ucworICogYXJlIG5vbi10 cmFuc2FjdGlvbmFsIChpbW1lZGlhdGVseSB2aXNpYmxlIGFuZCBub3Qgc3ViamVjdCB0byBy b2xsYmFjayksCisgKiBzb21lIG5lZWQgdG8gYmUgaGFuZGxlZCBhcyB0cmFuc2FjdGlvbmFs IChlLmcuIGZvciBzZXF1ZW5jZXMgY3JlYXRlZCBpbgorICogYSB0cmFuc2FjdGlvbiBhcmUg aW52aXNpYmxlIHVudGlsIHRoYXQgdHJhbnNhY3Rpb24gY29tbWl0cykuCisgKgorICogQnkg ZGVmYXVsdCwgYSBzZXF1ZW5jZSBjaGFuZ2UgaXMgbm9uLXRyYW5zYWN0aW9uYWwgLSB3ZSBt dXN0IG5vdCBxdWV1ZQorICogaXQgaW4gYSB0cmFuc2FjdGlvbiBhcyBvdGhlciBjaGFuZ2Vz LCBiZWNhdXNlIHRoZSB0cmFuc2FjdGlvbiBtaWdodCBnZXQKKyAqIHJvbGxlZCBiYWNrIGFu ZCB3ZSdkIGRpc2NhcmQgdGhlIGNoYW5nZS4gQnV0IHRoYXQnZCBiZSBpbmNvcnJlY3QsIGFz IHRoZQorICogY2hhbmdlIGlzIGFscmVhZHkgdmlzaWJsZSB0byBvdGhlciBwcm9jZXNzZXMg YWNjZXNzaW5nIHRoZSBzZXF1ZW5jZS4gSWYKKyAqIHdlIGRpc2NhcmQgdGhlIGNoYW5nZSwg dGhlIGRvd25zdHJlYW0gd2lsbCBub3QgYmUgbm90aWZpZWQgYWJvdXQgdGhlCisgKiBjaGFu Z2UsIGFuZCBtYXkgZmFsbCBiZWhpbmQuCisgKgorICogT24gdGhlIG90aGVyIGhhbmQsIHRo ZSBzZXF1ZW5jZSBtYXkgYmUgY3JlYXRlZCBpbiBhIHRyYW5zYWN0aW9uLiBJbiB0aGlzCisg KiBjYXNlIHdlICpoYXZlIHRvKiBxdWV1ZSBpdCBpbiB0aGUgdHJhbnNhY3Rpb24ganVzdCBs aWtlIG90aGVyIGNoYW5nZXMsCisgKiBiZWNhdXNlIHdlIGRvbid0IHdhbnQgdG8gcHJvY2Vz cyBjaGFuZ2VzIGZvciBzZXF1ZW5jZXMgdGhhdCBtYXkgYmUgdW5rbm93bgorICogb3V0c2lk ZSB0aGUgdHJhbnNhY3Rpb24gLSB0aGUgZG93bnN0cmVhbSBtaWdodCBnZXQgY29uZnVzZWQg YWJvdXQgd2hpY2gKKyAqIHNlcXVlbmNlIGl0J3MgcmVsYXRlZCB0byBldGMuCisgKi8KK3Zv aWQKK3NlcV9kZWNvZGUoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBYTG9nUmVjb3Jk QnVmZmVyICpidWYpCit7CisJU25hcEJ1aWxkICAqYnVpbGRlciA9IGN0eC0+c25hcHNob3Rf YnVpbGRlcjsKKwlSZW9yZGVyQnVmZmVyVHVwbGVCdWYgKnR1cGxlYnVmOworCVJlbEZpbGVM b2NhdG9yIHRhcmdldF9sb2NhdG9yOworCVhMb2dSZWFkZXJTdGF0ZSAqciA9IGJ1Zi0+cmVj b3JkOworCWNoYXIJICAgKnR1cGxlZGF0YSA9IE5VTEw7CisJU2l6ZQkJdHVwbGVsZW47CisJ U2l6ZQkJZGF0YWxlbiA9IDA7CisJVHJhbnNhY3Rpb25JZCB4aWQgPSBYTG9nUmVjR2V0WGlk KHIpOworCXVpbnQ4CQlpbmZvID0gWExvZ1JlY0dldEluZm8oYnVmLT5yZWNvcmQpICYgflhM Ul9JTkZPX01BU0s7CisJU25hcHNob3QJc25hcHNob3QgPSBOVUxMOworCVJlcE9yaWdpbklk IG9yaWdpbl9pZCA9IFhMb2dSZWNHZXRPcmlnaW4ocik7CisJYm9vbAkJdHJhbnNhY3Rpb25h bDsKKworCS8qIGlnbm9yZSBzZXF1ZW5jZXMgd2hlbiB0aGUgcGx1Z2luIGRvZXMgbm90IGhh dmUgdGhlIGNhbGxiYWNrcyAqLworCWlmICghY3R4LT5zZXF1ZW5jZXMpCisJCXJldHVybjsK KworCS8qIG9ubHkgZGVjb2RlIGNoYW5nZXMgZmxhZ2dlZCB3aXRoIFhMT0dfU0VRX0xPRyAq LworCWlmIChpbmZvICE9IFhMT0dfU0VRX0xPRykKKwkJZWxvZyhFUlJPUiwgInVuZXhwZWN0 ZWQgUk1fU0VRX0lEIHJlY29yZCB0eXBlOiAldSIsIGluZm8pOworCisJUmVvcmRlckJ1ZmZl clByb2Nlc3NYaWQoY3R4LT5yZW9yZGVyLCBYTG9nUmVjR2V0WGlkKHIpLCBidWYtPm9yaWdw dHIpOworCisJLyoKKwkgKiBJZiB3ZSBkb24ndCBoYXZlIHNuYXBzaG90IG9yIHdlIGFyZSBq dXN0IGZhc3QtZm9yd2FyZGluZywgdGhlcmUgaXMgbm8KKwkgKiBwb2ludCBpbiBkZWNvZGlu ZyBzZXF1ZW5jZXMuCisJICovCisJaWYgKFNuYXBCdWlsZEN1cnJlbnRTdGF0ZShidWlsZGVy KSA8IFNOQVBCVUlMRF9GVUxMX1NOQVBTSE9UKQorCQlyZXR1cm47CisKKwkvKiBvbmx5IGlu dGVyZXN0ZWQgaW4gb3VyIGRhdGFiYXNlICovCisJWExvZ1JlY0dldEJsb2NrVGFnKHIsIDAs ICZ0YXJnZXRfbG9jYXRvciwgTlVMTCwgTlVMTCk7CisJaWYgKHRhcmdldF9sb2NhdG9yLmRi T2lkICE9IGN0eC0+c2xvdC0+ZGF0YS5kYXRhYmFzZSkKKwkJcmV0dXJuOworCisJLyogb3V0 cHV0IHBsdWdpbiBkb2Vzbid0IGxvb2sgZm9yIHRoaXMgb3JpZ2luLCBubyBuZWVkIHRvIHF1 ZXVlICovCisJaWYgKEZpbHRlckJ5T3JpZ2luKGN0eCwgWExvZ1JlY0dldE9yaWdpbihyKSkp CisJCXJldHVybjsKKworCS8qIHRpbWUgdG8gZGVjb2RlIHRoZSBzZXF1ZW5jZSBkYXRhIGZy b20gdGhlIHR1cGxlICovCisJdHVwbGVkYXRhID0gWExvZ1JlY0dldERhdGEocik7CisJZGF0 YWxlbiA9IFhMb2dSZWNHZXREYXRhTGVuKHIpOworCXR1cGxlbGVuID0gZGF0YWxlbiAtIFNp emVPZkhlYXBIZWFkZXIgLSBzaXplb2YoeGxfc2VxX3JlYyk7CisKKwkvKiB0aGUgc2VxdWVu Y2Ugc2hvdWxkIG5vdCBoYXZlIGNoYW5nZWQgd2l0aG91dCBkYXRhICovCisJaWYgKCFkYXRh bGVuIHx8ICF0dXBsZWRhdGEpCisJCWVsb2coRVJST1IsICJzZXF1ZW5jZSBkZWNvZGUgbWlz c2luZyB0dXBsZSBkYXRhIik7CisKKwl0dXBsZWJ1ZiA9IFJlb3JkZXJCdWZmZXJHZXRUdXBs ZUJ1ZihjdHgtPnJlb3JkZXIsIHR1cGxlbGVuKTsKKwlEZWNvZGVTZXFUdXBsZSh0dXBsZWRh dGEsIGRhdGFsZW4sIHR1cGxlYnVmKTsKKworCS8qCisJICogU2hvdWxkIHdlIGhhbmRsZSB0 aGUgc2VxdWVuY2UgY2hhbmdlIGFzIHRyYW5zYWN0aW9uYWwgb3Igbm90PworCSAqCisJICog SWYgdGhlIHJlbGZpbGVub2RlIHdhcyBjcmVhdGVkIGluIHRoZSBjdXJyZW50IHRyYW5zYWN0 aW9uLCB0cmVhdCB0aGUKKwkgKiBjaGFuZ2UgYXMgdHJhbnNhY3Rpb25hbCBhbmQgcXVldWUg aXQuIE90aGVyd2lzZSBpdCBuZWVkcyB0byBiZSB0cmVhdGVkCisJICogYXMgbm9uLXRyYW5z YWN0aW9uYWwsIGluIHdoaWNoIGNhc2Ugd2UganVzdCBzZW5kIGl0IHRvIHRoZSBwbHVnaW4g cmlnaHQKKwkgKiBhd2F5LgorCSAqLworCXRyYW5zYWN0aW9uYWwgPSBSZW9yZGVyQnVmZmVy U2VxdWVuY2VJc1RyYW5zYWN0aW9uYWwoY3R4LT5yZW9yZGVyLAorCQkJCQkJCQkJCQkJCQkg dGFyZ2V0X2xvY2F0b3IsCisJCQkJCQkJCQkJCQkJCSBOVUxMKTsKKworCS8qIFNraXAgdGhl IGNoYW5nZSBpZiBhbHJlYWR5IHByb2Nlc3NlZCAocGVyIHRoZSBzbmFwc2hvdCkuICovCisJ aWYgKHRyYW5zYWN0aW9uYWwgJiYKKwkJIVNuYXBCdWlsZFByb2Nlc3NDaGFuZ2UoYnVpbGRl ciwgeGlkLCBidWYtPm9yaWdwdHIpKQorCQlyZXR1cm47CisJZWxzZSBpZiAoIXRyYW5zYWN0 aW9uYWwgJiYKKwkJCSAoU25hcEJ1aWxkQ3VycmVudFN0YXRlKGJ1aWxkZXIpICE9IFNOQVBC VUlMRF9DT05TSVNURU5UIHx8CisJCQkgIFNuYXBCdWlsZFhhY3ROZWVkc1NraXAoYnVpbGRl ciwgYnVmLT5vcmlncHRyKSkpCisJCXJldHVybjsKKworCS8qCisJICogV2UgYWxzbyBza2lw IGRlY29kaW5nIGluIGZhc3RfZm9yd2FyZCBtb2RlLiBUaGlzIGNoZWNrIG11c3QgYmUgbGFz dAorCSAqIGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCB0byBzZXQgdGhlIHByb2Nlc3NpbmdfcmVx dWlyZWQgZmxhZyB1bmxlc3Mgd2UKKwkgKiBoYXZlIGEgZGVjb2RhYmxlIHNlcXVlbmNlIGNo YW5nZS4KKwkgKi8KKwlpZiAoY3R4LT5mYXN0X2ZvcndhcmQpCisJeworCQkvKgorCQkgKiBX ZSBuZWVkIHRvIHNldCBwcm9jZXNzaW5nX3JlcXVpcmVkIGZsYWcgdG8gbm90aWZ5IHRoZSBz ZXF1ZW5jZQorCQkgKiBjaGFuZ2UgZXhpc3RlbmNlIHRvIHRoZSBjYWxsZXIuIFVzdWFsbHks IHRoZSBmbGFnIGlzIHNldCB3aGVuCisJCSAqIGVpdGhlciB0aGUgQ09NTUlUIG9yIEFCT1JU IHJlY29yZHMgYXJlIGRlY29kZWQsIGJ1dCB0aGlzIG11c3QgYmUKKwkJICogdHVybmVkIG9u IGhlcmUgYmVjYXVzZSB0aGUgbm9uLXRyYW5zYWN0aW9uYWwgbG9naWNhbCBtZXNzYWdlIGlz CisJCSAqIGRlY29kZWQgd2l0aG91dCB3YWl0aW5nIGZvciB0aGVzZSByZWNvcmRzLgorCQkg Ki8KKwkJaWYgKCF0cmFuc2FjdGlvbmFsKQorCQkJY3R4LT5wcm9jZXNzaW5nX3JlcXVpcmVk ID0gdHJ1ZTsKKworCQlyZXR1cm47CisJfQorCisJLyoKKwkgKiBJZiB0aGlzIGlzIGEgbm9u LXRyYW5zYWN0aW9uYWwgY2hhbmdlLCBnZXQgdGhlIHNuYXBzaG90IHdlJ3JlIGV4cGVjdGVk CisJICogdG8gdXNlLiBXZSBvbmx5IGdldCBoZXJlIHdoZW4gdGhlIHNuYXBzaG90IGlzIGNv bnNpc3RlbnQsIGFuZCB0aGUKKwkgKiBjaGFuZ2UgaXMgbm90IG1lYW50IHRvIGJlIHNraXBw ZWQuCisJICoKKwkgKiBGb3IgdHJhbnNhY3Rpb25hbCBjaGFuZ2VzIHdlIGRvbid0IG5lZWQg YSBzbmFwc2hvdCwgd2UnbGwgdXNlIHRoZQorCSAqIHJlZ3VsYXIgc25hcHNob3QgbWFpbnRh aW5lZCBieSBSZW9yZGVyQnVmZmVyLiBXZSBqdXN0IGxlYXZlIGl0IE5VTEwuCisJICovCisJ aWYgKCF0cmFuc2FjdGlvbmFsKQorCQlzbmFwc2hvdCA9IFNuYXBCdWlsZEdldE9yQnVpbGRT bmFwc2hvdChidWlsZGVyKTsKKworCS8qIFF1ZXVlIHRoZSBjaGFuZ2UgKG9yIHNlbmQgaW1t ZWRpYXRlbHkgaWYgbm90IHRyYW5zYWN0aW9uYWwpLiAqLworCVJlb3JkZXJCdWZmZXJRdWV1 ZVNlcXVlbmNlKGN0eC0+cmVvcmRlciwgeGlkLCBzbmFwc2hvdCwgYnVmLT5lbmRwdHIsCisJ CQkJCQkJICAgb3JpZ2luX2lkLCB0YXJnZXRfbG9jYXRvciwgdHJhbnNhY3Rpb25hbCwKKwkJ CQkJCQkgICB0dXBsZWJ1Zik7Cit9CisKKy8qCisgKiBEZWNvZGUgcmVsZmlsZW5vZGUgY2hh bmdlCisgKgorICogRGVjb2RlIFNNR1IgcmVjb3Jkcywgc28gdGhhdCB3ZSBjYW4gbGF0ZXIg ZGVjaWRlIHdoaWNoIHNlcXVlbmNlIGNoYW5nZXMKKyAqIG5lZWQgdG8gYmUgdHJlYXRlZCBh cyB0cmFuc2FjdGlvbmFsLiBNb3N0IHNlcXVlbmNlIGNoYW5nZXMgYXJlIGdvaW5nIHRvCisg KiBiZSBub24tdHJhbnNhY3Rpb25hbCAoYXBwbGllZCBhcyBpZiBvdXRzaWRlIHRoZSBkZWNv ZGVkIHRyYW5zYWN0aW9uLCBub3QKKyAqIHN1YmplY3QgdG8gcm9sbGJhY2ssIGV0Yy4pLiBD aGFuZ2VzIGZvciBzZXF1ZW5jZXMgY3JlYXRlZC9hbHRlcmVkIGluIHRoZQorICogdHJhbnNh Y3Rpb24gbmVlZCB0byBiZSBoYW5kbGVkIGFzIHRyYW5zYWN0aW9uYWwgKGkuZS4gYXBwbGll ZCBhcyBwYXJ0IG9mCisgKiB0aGUgZGVjb2RlZCB0cmFuc2FjdGlvbiwgc2FtZSBhcyBhbGwg b3RoZXIgY2hhbmdlcykuCisgKgorICogVG8gZGVjaWRlIHdoaWNoIG9mIHRob3NlIGNhc2Vz IGlzIGl0IHdlIGRlY29kZSBYTE9HX1NNR1JfQ1JFQVRFIHJlY29yZHMKKyAqIGFuZCB0cmFj ayByZWxmaWxlbm9kZXMgY3JlYXRlZCBpbiBlYWNoIChzdWIpdHJhbnNhY3Rpb24uIENoYW5n ZXMgZm9yCisgKiB0aGVzZSByZWxmaWxlbm9kZXMgYXJlIHRoZW4gcXVldWVkIGFuZCB0cmVh dGVkIGFzIHRyYW5zYWN0aW9uYWwsIHdoaWxlCisgKiByZW1haW5pbmcgY2hhbmdlcyBhcmUg dHJlYXRlZCBhcyBub24tdHJhbnNhY3Rpb25hbC4KKyAqCisgKiBXZSBvbmx5IGNhcmUgYWJv dXQgWExPR19TTUdSX0NSRUFURSByZWNvcmRzIGZvciAib3VyIiBkYXRhYmFzZSAobG9naWNh bAorICogZGVjb2RpbmcgaXMgcmVzdHJpY3RlZCB0byBhIHNpbmdsZSBkYXRhYmFzZSksIGFu ZCB3ZSBkbyB0aGUgZmlsdGVyaW5nCisgKiBhbmQgc2tpcHBpbmcsIGFzIGFwcHJvcHJpYXRl LgorICovCit2b2lkCitzbWdyX2RlY29kZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgs IFhMb2dSZWNvcmRCdWZmZXIgKmJ1ZikKK3sKKwlTbmFwQnVpbGQgICpidWlsZGVyID0gY3R4 LT5zbmFwc2hvdF9idWlsZGVyOworCVhMb2dSZWFkZXJTdGF0ZSAqciA9IGJ1Zi0+cmVjb3Jk OworCVRyYW5zYWN0aW9uSWQgeGlkID0gWExvZ1JlY0dldFhpZChyKTsKKwl1aW50OAkJaW5m byA9IFhMb2dSZWNHZXRJbmZvKGJ1Zi0+cmVjb3JkKSAmIH5YTFJfSU5GT19NQVNLOworCXhs X3NtZ3JfY3JlYXRlICp4bHJlYzsKKworCS8qCisJICogQmFpbCBvdXQgd2hlbiBub3QgZGVj b2Rpbmcgc2VxdWVuY2VzLCB3aGljaCBpcyBjdXJyZW50bHkgdGhlIG9ubHkgY2FzZQorCSAq IHdoZW4gd2UgbmVlZCB0byBrbm93IGFib3V0IHJlbGZpbGVub2RlcyBjcmVhdGVkIGluIGEg dHJhbnNhY3Rpb24uCisJICovCisJaWYgKCFjdHgtPnNlcXVlbmNlcykKKwkJcmV0dXJuOwor CisJLyoKKwkgKiBXZSBvbmx5IGNhcmUgYWJvdXQgWExPR19TTUdSX0NSRUFURSwgYmVjYXVz ZSB0aGF0J3Mgd2hhdCBkZXRlcm1pbmVzIGlmCisJICogdGhlIGZvbGxvd2luZyBzZXF1ZW5j ZSBjaGFuZ2VzIGFyZSB0cmFuc2FjdGlvbmFsLgorCSAqLworCWlmIChpbmZvICE9IFhMT0df U01HUl9DUkVBVEUpCisJCXJldHVybjsKKworCVJlb3JkZXJCdWZmZXJQcm9jZXNzWGlkKGN0 eC0+cmVvcmRlciwgWExvZ1JlY0dldFhpZChyKSwgYnVmLT5vcmlncHRyKTsKKworCS8qCisJ ICogSWYgd2UgZG9uJ3QgaGF2ZSBzbmFwc2hvdCBvciB3ZSBhcmUganVzdCBmYXN0LWZvcndh cmRpbmcsIHRoZXJlIGlzIG5vCisJICogcG9pbnQgaW4gZGVjb2RpbmcgcmVsZmlsZW5vZGUg aW5mb3JtYXRpb24uCisJICovCisJaWYgKFNuYXBCdWlsZEN1cnJlbnRTdGF0ZShidWlsZGVy KSA8IFNOQVBCVUlMRF9GVUxMX1NOQVBTSE9UIHx8CisJCWN0eC0+ZmFzdF9mb3J3YXJkKQor CQlyZXR1cm47CisKKwkvKiBvbmx5IGludGVyZXN0ZWQgaW4gb3VyIGRhdGFiYXNlICovCisJ eGxyZWMgPSAoeGxfc21ncl9jcmVhdGUgKikgWExvZ1JlY0dldERhdGEocik7CisJaWYgKHhs cmVjLT5ybG9jYXRvci5kYk9pZCAhPSBjdHgtPnNsb3QtPmRhdGEuZGF0YWJhc2UpCisJCXJl dHVybjsKKworCS8qIG91dHB1dCBwbHVnaW4gZG9lc24ndCBsb29rIGZvciB0aGlzIG9yaWdp biwgbm8gbmVlZCB0byBxdWV1ZSAqLworCWlmIChGaWx0ZXJCeU9yaWdpbihjdHgsIFhMb2dS ZWNHZXRPcmlnaW4ocikpKQorCQlyZXR1cm47CisKKwlSZW9yZGVyQnVmZmVyQWRkUmVsRmls ZUxvY2F0b3IoY3R4LT5yZW9yZGVyLCB4aWQsIGJ1Zi0+ZW5kcHRyLCB4bHJlYy0+cmxvY2F0 b3IpOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9s b2dpY2FsLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWwuYwpp bmRleCA4Mjg4ZGE1Mjc3Zi4uM2E3YjNiOWJlMGMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbC5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvbG9naWNhbC5jCkBAIC03NSw2ICs3NSw5IEBAIHN0YXRpYyB2b2lk IHRydW5jYXRlX2NiX3dyYXBwZXIoUmVvcmRlckJ1ZmZlciAqY2FjaGUsIFJlb3JkZXJCdWZm ZXJUWE4gKnR4biwKIHN0YXRpYyB2b2lkIG1lc3NhZ2VfY2Jfd3JhcHBlcihSZW9yZGVyQnVm ZmVyICpjYWNoZSwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAogCQkJCQkJCSAgIFhMb2dSZWNQ dHIgbWVzc2FnZV9sc24sIGJvb2wgdHJhbnNhY3Rpb25hbCwKIAkJCQkJCQkgICBjb25zdCBj aGFyICpwcmVmaXgsIFNpemUgbWVzc2FnZV9zaXplLCBjb25zdCBjaGFyICptZXNzYWdlKTsK K3N0YXRpYyB2b2lkIHNlcXVlbmNlX2NiX3dyYXBwZXIoUmVvcmRlckJ1ZmZlciAqY2FjaGUs IFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKKwkJCQkJCQkJWExvZ1JlY1B0ciBzZXF1ZW5jZV9s c24sIFJlbGF0aW9uIHJlbCwKKwkJCQkJCQkJYm9vbCB0cmFuc2FjdGlvbmFsLCBpbnQ2NCB2 YWx1ZSk7CiAKIC8qIHN0cmVhbWluZyBjYWxsYmFja3MgKi8KIHN0YXRpYyB2b2lkIHN0cmVh bV9zdGFydF9jYl93cmFwcGVyKFJlb3JkZXJCdWZmZXIgKmNhY2hlLCBSZW9yZGVyQnVmZmVy VFhOICp0eG4sCkBAIC05Miw2ICs5NSw5IEBAIHN0YXRpYyB2b2lkIHN0cmVhbV9jaGFuZ2Vf Y2Jfd3JhcHBlcihSZW9yZGVyQnVmZmVyICpjYWNoZSwgUmVvcmRlckJ1ZmZlclRYTiAqdHhu CiBzdGF0aWMgdm9pZCBzdHJlYW1fbWVzc2FnZV9jYl93cmFwcGVyKFJlb3JkZXJCdWZmZXIg KmNhY2hlLCBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCiAJCQkJCQkJCQkgIFhMb2dSZWNQdHIg bWVzc2FnZV9sc24sIGJvb2wgdHJhbnNhY3Rpb25hbCwKIAkJCQkJCQkJCSAgY29uc3QgY2hh ciAqcHJlZml4LCBTaXplIG1lc3NhZ2Vfc2l6ZSwgY29uc3QgY2hhciAqbWVzc2FnZSk7Citz dGF0aWMgdm9pZCBzdHJlYW1fc2VxdWVuY2VfY2Jfd3JhcHBlcihSZW9yZGVyQnVmZmVyICpj YWNoZSwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAorCQkJCQkJCQkJICAgWExvZ1JlY1B0ciBz ZXF1ZW5jZV9sc24sIFJlbGF0aW9uIHJlbCwKKwkJCQkJCQkJCSAgIGJvb2wgdHJhbnNhY3Rp b25hbCwgaW50NjQgdmFsdWUpOwogc3RhdGljIHZvaWQgc3RyZWFtX3RydW5jYXRlX2NiX3dy YXBwZXIoUmVvcmRlckJ1ZmZlciAqY2FjaGUsIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKIAkJ CQkJCQkJCSAgIGludCBucmVsYXRpb25zLCBSZWxhdGlvbiByZWxhdGlvbnNbXSwgUmVvcmRl ckJ1ZmZlckNoYW5nZSAqY2hhbmdlKTsKIApAQCAtMjIzLDEzICsyMjksMTQgQEAgU3RhcnR1 cERlY29kaW5nQ29udGV4dChMaXN0ICpvdXRwdXRfcGx1Z2luX29wdGlvbnMsCiAJY3R4LT5y ZW9yZGVyLT5hcHBseV90cnVuY2F0ZSA9IHRydW5jYXRlX2NiX3dyYXBwZXI7CiAJY3R4LT5y ZW9yZGVyLT5jb21taXQgPSBjb21taXRfY2Jfd3JhcHBlcjsKIAljdHgtPnJlb3JkZXItPm1l c3NhZ2UgPSBtZXNzYWdlX2NiX3dyYXBwZXI7CisJY3R4LT5yZW9yZGVyLT5zZXF1ZW5jZSA9 IHNlcXVlbmNlX2NiX3dyYXBwZXI7CiAKIAkvKgogCSAqIFRvIHN1cHBvcnQgc3RyZWFtaW5n LCB3ZSByZXF1aXJlIHN0YXJ0L3N0b3AvYWJvcnQvY29tbWl0L2NoYW5nZQotCSAqIGNhbGxi YWNrcy4gVGhlIG1lc3NhZ2UgYW5kIHRydW5jYXRlIGNhbGxiYWNrcyBhcmUgb3B0aW9uYWws IHNpbWlsYXIgdG8KLQkgKiByZWd1bGFyIG91dHB1dCBwbHVnaW5zLiBXZSBob3dldmVyIGVu YWJsZSBzdHJlYW1pbmcgd2hlbiBhdCBsZWFzdCBvbmUKLQkgKiBvZiB0aGUgbWV0aG9kcyBp cyBlbmFibGVkIHNvIHRoYXQgd2UgY2FuIGVhc2lseSBpZGVudGlmeSBtaXNzaW5nCi0JICog bWV0aG9kcy4KKwkgKiBjYWxsYmFja3MuIFRoZSBtZXNzYWdlLCBzZXF1ZW5jZSBhbmQgdHJ1 bmNhdGUgY2FsbGJhY2tzIGFyZSBvcHRpb25hbCwKKwkgKiBzaW1pbGFyIHRvIHJlZ3VsYXIg b3V0cHV0IHBsdWdpbnMuIFdlIGhvd2V2ZXIgZW5hYmxlIHN0cmVhbWluZyB3aGVuIGF0CisJ ICogbGVhc3Qgb25lIG9mIHRoZSBtZXRob2RzIGlzIGVuYWJsZWQgc28gdGhhdCB3ZSBjYW4g ZWFzaWx5IGlkZW50aWZ5CisJICogbWlzc2luZyBtZXRob2RzLgogCSAqCiAJICogV2UgZGVj aWRlIGl0IGhlcmUsIGJ1dCBvbmx5IGNoZWNrIGl0IGxhdGVyIGluIHRoZSB3cmFwcGVycy4K IAkgKi8KQEAgLTIzOSw2ICsyNDYsNyBAQCBTdGFydHVwRGVjb2RpbmdDb250ZXh0KExpc3Qg Km91dHB1dF9wbHVnaW5fb3B0aW9ucywKIAkJKGN0eC0+Y2FsbGJhY2tzLnN0cmVhbV9jb21t aXRfY2IgIT0gTlVMTCkgfHwKIAkJKGN0eC0+Y2FsbGJhY2tzLnN0cmVhbV9jaGFuZ2VfY2Ig IT0gTlVMTCkgfHwKIAkJKGN0eC0+Y2FsbGJhY2tzLnN0cmVhbV9tZXNzYWdlX2NiICE9IE5V TEwpIHx8CisJCShjdHgtPmNhbGxiYWNrcy5zdHJlYW1fc2VxdWVuY2VfY2IgIT0gTlVMTCkg fHwKIAkJKGN0eC0+Y2FsbGJhY2tzLnN0cmVhbV90cnVuY2F0ZV9jYiAhPSBOVUxMKTsKIAog CS8qCkBAIC0yNTYsNiArMjY0LDcgQEAgU3RhcnR1cERlY29kaW5nQ29udGV4dChMaXN0ICpv dXRwdXRfcGx1Z2luX29wdGlvbnMsCiAJY3R4LT5yZW9yZGVyLT5zdHJlYW1fY29tbWl0ID0g c3RyZWFtX2NvbW1pdF9jYl93cmFwcGVyOwogCWN0eC0+cmVvcmRlci0+c3RyZWFtX2NoYW5n ZSA9IHN0cmVhbV9jaGFuZ2VfY2Jfd3JhcHBlcjsKIAljdHgtPnJlb3JkZXItPnN0cmVhbV9t ZXNzYWdlID0gc3RyZWFtX21lc3NhZ2VfY2Jfd3JhcHBlcjsKKwljdHgtPnJlb3JkZXItPnN0 cmVhbV9zZXF1ZW5jZSA9IHN0cmVhbV9zZXF1ZW5jZV9jYl93cmFwcGVyOwogCWN0eC0+cmVv cmRlci0+c3RyZWFtX3RydW5jYXRlID0gc3RyZWFtX3RydW5jYXRlX2NiX3dyYXBwZXI7CiAK IApAQCAtMjg5LDYgKzI5OCwxMyBAQCBTdGFydHVwRGVjb2RpbmdDb250ZXh0KExpc3QgKm91 dHB1dF9wbHVnaW5fb3B0aW9ucywKIAkgKi8KIAljdHgtPnJlb3JkZXItPnVwZGF0ZV9wcm9n cmVzc190eG4gPSB1cGRhdGVfcHJvZ3Jlc3NfdHhuX2NiX3dyYXBwZXI7CiAKKwkvKgorCSAq IFRvIHN1cHBvcnQgbG9naWNhbCBkZWNvZGluZyBvZiBzZXF1ZW5jZXMsIHdlIHJlcXVpcmUg dGhlIHNlcXVlbmNlCisJICogY2FsbGJhY2suIFdlIGRlY2lkZSBpdCBoZXJlLCBidXQgb25s eSBjaGVjayBpdCBsYXRlciBpbiB0aGUgd3JhcHBlcnMuCisJICovCisJY3R4LT5zZXF1ZW5j ZXMgPSAoKGN0eC0+Y2FsbGJhY2tzLnNlcXVlbmNlX2NiICE9IE5VTEwpIHx8CisJCQkJCSAg KGN0eC0+Y2FsbGJhY2tzLnN0cmVhbV9zZXF1ZW5jZV9jYiAhPSBOVUxMKSk7CisKIAljdHgt Pm91dCA9IG1ha2VTdHJpbmdJbmZvKCk7CiAJY3R4LT5wcmVwYXJlX3dyaXRlID0gcHJlcGFy ZV93cml0ZTsKIAljdHgtPndyaXRlID0gZG9fd3JpdGU7CkBAIC0xMjYyLDYgKzEyNzgsNDIg QEAgbWVzc2FnZV9jYl93cmFwcGVyKFJlb3JkZXJCdWZmZXIgKmNhY2hlLCBSZW9yZGVyQnVm ZmVyVFhOICp0eG4sCiAJZXJyb3JfY29udGV4dF9zdGFjayA9IGVycmNhbGxiYWNrLnByZXZp b3VzOwogfQogCitzdGF0aWMgdm9pZAorc2VxdWVuY2VfY2Jfd3JhcHBlcihSZW9yZGVyQnVm ZmVyICpjYWNoZSwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAorCQkJCQlYTG9nUmVjUHRyIHNl cXVlbmNlX2xzbiwgUmVsYXRpb24gcmVsLCBib29sIHRyYW5zYWN0aW9uYWwsCisJCQkJCWlu dDY0IHZhbHVlKQoreworCUxvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCA9IGNhY2hlLT5w cml2YXRlX2RhdGE7CisJTG9naWNhbEVycm9yQ2FsbGJhY2tTdGF0ZSBzdGF0ZTsKKwlFcnJv ckNvbnRleHRDYWxsYmFjayBlcnJjYWxsYmFjazsKKworCUFzc2VydCghY3R4LT5mYXN0X2Zv cndhcmQpOworCisJaWYgKGN0eC0+Y2FsbGJhY2tzLnNlcXVlbmNlX2NiID09IE5VTEwpCisJ CXJldHVybjsKKworCS8qIFB1c2ggY2FsbGJhY2sgKyBpbmZvIG9uIHRoZSBlcnJvciBjb250 ZXh0IHN0YWNrICovCisJc3RhdGUuY3R4ID0gY3R4OworCXN0YXRlLmNhbGxiYWNrX25hbWUg PSAic2VxdWVuY2UiOworCXN0YXRlLnJlcG9ydF9sb2NhdGlvbiA9IHNlcXVlbmNlX2xzbjsK KwllcnJjYWxsYmFjay5jYWxsYmFjayA9IG91dHB1dF9wbHVnaW5fZXJyb3JfY2FsbGJhY2s7 CisJZXJyY2FsbGJhY2suYXJnID0gKHZvaWQgKikgJnN0YXRlOworCWVycmNhbGxiYWNrLnBy ZXZpb3VzID0gZXJyb3JfY29udGV4dF9zdGFjazsKKwllcnJvcl9jb250ZXh0X3N0YWNrID0g JmVycmNhbGxiYWNrOworCisJLyogc2V0IG91dHB1dCBzdGF0ZSAqLworCWN0eC0+YWNjZXB0 X3dyaXRlcyA9IHRydWU7CisJY3R4LT53cml0ZV94aWQgPSB0eG4gIT0gTlVMTCA/IHR4bi0+ eGlkIDogSW52YWxpZFRyYW5zYWN0aW9uSWQ7CisJY3R4LT53cml0ZV9sb2NhdGlvbiA9IHNl cXVlbmNlX2xzbjsKKworCS8qIGRvIHRoZSBhY3R1YWwgd29yazogY2FsbCBjYWxsYmFjayAq LworCWN0eC0+Y2FsbGJhY2tzLnNlcXVlbmNlX2NiKGN0eCwgdHhuLCBzZXF1ZW5jZV9sc24s IHJlbCwKKwkJCQkJCQkgICB0cmFuc2FjdGlvbmFsLCB2YWx1ZSk7CisKKwkvKiBQb3AgdGhl IGVycm9yIGNvbnRleHQgc3RhY2sgKi8KKwllcnJvcl9jb250ZXh0X3N0YWNrID0gZXJyY2Fs bGJhY2sucHJldmlvdXM7Cit9CisKIHN0YXRpYyB2b2lkCiBzdHJlYW1fc3RhcnRfY2Jfd3Jh cHBlcihSZW9yZGVyQnVmZmVyICpjYWNoZSwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAogCQkJ CQkJWExvZ1JlY1B0ciBmaXJzdF9sc24pCkBAIC0xNTc3LDYgKzE2MjksNDYgQEAgc3RyZWFt X21lc3NhZ2VfY2Jfd3JhcHBlcihSZW9yZGVyQnVmZmVyICpjYWNoZSwgUmVvcmRlckJ1ZmZl clRYTiAqdHhuLAogCWVycm9yX2NvbnRleHRfc3RhY2sgPSBlcnJjYWxsYmFjay5wcmV2aW91 czsKIH0KIAorc3RhdGljIHZvaWQKK3N0cmVhbV9zZXF1ZW5jZV9jYl93cmFwcGVyKFJlb3Jk ZXJCdWZmZXIgKmNhY2hlLCBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCisJCQkJCQkgICBYTG9n UmVjUHRyIHNlcXVlbmNlX2xzbiwgUmVsYXRpb24gcmVsLAorCQkJCQkJICAgYm9vbCB0cmFu c2FjdGlvbmFsLCBpbnQ2NCB2YWx1ZSkKK3sKKwlMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpj dHggPSBjYWNoZS0+cHJpdmF0ZV9kYXRhOworCUxvZ2ljYWxFcnJvckNhbGxiYWNrU3RhdGUg c3RhdGU7CisJRXJyb3JDb250ZXh0Q2FsbGJhY2sgZXJyY2FsbGJhY2s7CisKKwlBc3NlcnQo IWN0eC0+ZmFzdF9mb3J3YXJkKTsKKworCS8qIFdlJ3JlIG9ubHkgc3VwcG9zZWQgdG8gY2Fs bCB0aGlzIHdoZW4gc3RyZWFtaW5nIGlzIHN1cHBvcnRlZC4gKi8KKwlBc3NlcnQoY3R4LT5z dHJlYW1pbmcpOworCisJLyogdGhpcyBjYWxsYmFjayBpcyBvcHRpb25hbCAqLworCWlmIChj dHgtPmNhbGxiYWNrcy5zdHJlYW1fc2VxdWVuY2VfY2IgPT0gTlVMTCkKKwkJcmV0dXJuOwor CisJLyogUHVzaCBjYWxsYmFjayArIGluZm8gb24gdGhlIGVycm9yIGNvbnRleHQgc3RhY2sg Ki8KKwlzdGF0ZS5jdHggPSBjdHg7CisJc3RhdGUuY2FsbGJhY2tfbmFtZSA9ICJzdHJlYW1f c2VxdWVuY2UiOworCXN0YXRlLnJlcG9ydF9sb2NhdGlvbiA9IHNlcXVlbmNlX2xzbjsKKwll cnJjYWxsYmFjay5jYWxsYmFjayA9IG91dHB1dF9wbHVnaW5fZXJyb3JfY2FsbGJhY2s7CisJ ZXJyY2FsbGJhY2suYXJnID0gKHZvaWQgKikgJnN0YXRlOworCWVycmNhbGxiYWNrLnByZXZp b3VzID0gZXJyb3JfY29udGV4dF9zdGFjazsKKwllcnJvcl9jb250ZXh0X3N0YWNrID0gJmVy cmNhbGxiYWNrOworCisJLyogc2V0IG91dHB1dCBzdGF0ZSAqLworCWN0eC0+YWNjZXB0X3dy aXRlcyA9IHRydWU7CisJY3R4LT53cml0ZV94aWQgPSB0eG4gIT0gTlVMTCA/IHR4bi0+eGlk IDogSW52YWxpZFRyYW5zYWN0aW9uSWQ7CisJY3R4LT53cml0ZV9sb2NhdGlvbiA9IHNlcXVl bmNlX2xzbjsKKworCS8qIGRvIHRoZSBhY3R1YWwgd29yazogY2FsbCBjYWxsYmFjayAqLwor CWN0eC0+Y2FsbGJhY2tzLnNlcXVlbmNlX2NiKGN0eCwgdHhuLCBzZXF1ZW5jZV9sc24sIHJl bCwKKwkJCQkJCQkgICB0cmFuc2FjdGlvbmFsLCB2YWx1ZSk7CisKKwkvKiBQb3AgdGhlIGVy cm9yIGNvbnRleHQgc3RhY2sgKi8KKwllcnJvcl9jb250ZXh0X3N0YWNrID0gZXJyY2FsbGJh Y2sucHJldmlvdXM7Cit9CisKIHN0YXRpYyB2b2lkCiBzdHJlYW1fdHJ1bmNhdGVfY2Jfd3Jh cHBlcihSZW9yZGVyQnVmZmVyICpjYWNoZSwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAogCQkJ CQkJICAgaW50IG5yZWxhdGlvbnMsIFJlbGF0aW9uIHJlbGF0aW9uc1tdLApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZW9yZGVyYnVmZmVyLmMgYi9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Jlb3JkZXJidWZmZXIuYwppbmRleCAx MmVkYzU3NzJhOS4uNWVlZjBkODlhOTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jCkBAIC03Nyw2ICs3Nyw0MSBAQAogICoJ ICBhIGJpdCBtb3JlIG1lbW9yeSB0byB0aGUgb2xkZXN0IHN1YnRyYW5zYWN0aW9ucywgYmVj YXVzZSBpdCdzIGxpa2VseQogICoJICB0aGV5IGFyZSB0aGUgc291cmNlIGZvciB0aGUgbmV4 dCBzZXF1ZW5jZSBvZiBjaGFuZ2VzLgogICoKKyAqCSAgV2hlbiBkZWNvZGluZyBzZXF1ZW5j ZXMsIHdlIGRpZmZlcmVudGlhdGUgYmV0d2VlbiB0cmFuc2FjdGlvbmFsIGFuZAorICoJICBu b24tdHJhbnNhY3Rpb25hbCBjaGFuZ2VzLiBTZXF1ZW5jZSBjaGFuZ2UgaXMgIm5vbi10cmFu c2FjdGlvbmFsIiBpZgorICoJICBpdCB3YXMgdmlzaWJsZSB0byBvdXRzaWRlIHRyYW5zYWN0 aW9ucyBpbW1lZGlhdGVseSwgYW5kIHdvdWxkIG5vdCBiZQorICoJICB1bmRvbmUgYnkgYSBy b2xsYmFjay4gTW9zdCBzZXF1ZW5jZSBjaGFuZ2VzIGFyZSBub24tdHJhbnNhY3Rpb25hbCwg YXMKKyAqCSAgdGhlIGNoYW5nZXMgcGVyZm9ybWVkIGJ5IG5leHR2YWwoKSBhcmUgdmlzaWJs ZSBhbmQgY2FuJ3QgYmUgdW5kb25lLgorICoJICBOb24tdHJhbnNhY3Rpb25hbCBjaGFuZ2Vz IGFyZSByZXBsYXllZCBpbW1lZGlhdGVseSwgYXMgaWYgb3V0c2lkZSBhbnkKKyAqCSAgdHJh bnNhY3Rpb24gKGFuZCB0aHVzIGFsc28gbm90IHN1YmplY3QgdG8gcm9sbGJhY2sgZXRjLiku CisgKgorICoJICBIb3dldmVyLCBpZiBhIHRyYW5zYWN0aW9uIG1vZGlmaWVzIHRoZSBzZXF1 ZW5jZSBpbiBhIHdheSB0aGF0IGNyZWF0ZXMKKyAqCSAgYSBuZXcgcmVsZmlsZW5vZGUgKGUu Zy4gYnkgcnVubmluZyBBTFRFUiBTRVFVRU5DRSksIHdlIGNvbnNpZGVyIHRoZQorICoJICBz dWJzZXF1ZW50IGNoYW5nZXMgInRyYW5zYWN0aW9uYWwiIGFuZCBxdWV1ZSB0aGVtIGluIHRo ZSB0cmFuc2FjdGlvbgorICoJICB0aGF0IHBlcmZvcm1lZCB0aGVtLCBqdXN0IGxpa2Ugb3Ro ZXIgY2hhbmdlcy4gSWYgdGhhdCB0cmFuc2FjdGlvbiByb2xscworICoJICBiYWNrLCB0aGVz ZSBzZXF1ZW5jZSBjaGFuZ2VzIGFyZSBkaXNjYXJkZWQgdG9vICh0b2dldGhlciB3aXRoIHRo ZQorICoJICBuZXcgcmVsZmlsZW5vZGUpLgorICoKKyAqCSAgVGhpcyBtaXhlZCBiZWhhdmlv ciBpcyBuZWNlc3NhcnkgLSBzZXF1ZW5jZXMgYXJlIG5vbi10cmFuc2FjdGlvbmFsCisgKgkg IChlLmcuIFJPTExCQUNLIGRvZXMgbm90IHVuZG8gdGhhdCB0aGUgc2VxdWVuY2UgbW92ZWQg Zm9yd2FyZCkuIEJ1dAorICoJICBjaGFuZ2VzIG9uIG5ldyByZWxmaWxlbm9kZXMgbmVlZCB0 byBiZSBoYW5kbGVkIGFzIHRyYW5zYWN0aW9uYWwuCisgKgorICoJICBUbyBkZWNpZGUgaWYg YSBzZXF1ZW5jZSBjaGFuZ2UgaXMgdHJhbnNhY3Rpb25hbCwgd2UgbWFpbnRhaW4gYSBoYXNo CisgKgkgIHRhYmxlIG9mIHJlbGZpbGVub2RlcyBjcmVhdGVkIGluIGVhY2ggKHN1Yil0cmFu c2FjdGlvbnMsIGFsb25nIHdpdGgKKyAqCSAgdGhlIFhJRCBvZiB0aGUgKHN1Yil0cmFuc2Fj dGlvbiB0aGF0IGNyZWF0ZWQgdGhlIHJlbGZpbGVub2RlLiBUaGUKKyAqCSAgZW50cmllcyBm cm9tIHN1YnN0cmFuc2FjdGlvbnMgYXJlIGNvcGllZCB0byB0aGUgdG9wLWxldmVsIHRyYW5z YWN0aW9uCisgKgkgIHRvIG1ha2UgY2hlY2tzIGNoZWFwZXIuIFRoZSBoYXNoIHRhYmxlIGdl dHMgY2xlYW5lZCB1cCB3aGVuIHRoZQorICoJICB0cmFuc2FjdGlvbiBjb21wbGV0ZXMgKGNv bW1pdC9hYm9ydCkuCisgKgorICoJICBUaGUgWElEIG9mIHRoZSBzdWJ4YWN0IHRoYXQgY3Jl YXRlZCB0aGUgcmVsZmlsZW5vZGUgaXMgbmVjZXNzYXJ5LCBhcworICoJICB0aGF0J3Mgd2hl cmUgdGhlIHNlcXVlbmNlIGNoYW5nZXMgbmVlZCB0byBiZSBxdWV1ZWQgLSBpZiB0aGlzIHN1 YnhhY3QKKyAqCSAgcm9sbHMgYmFjaywgd2Ugd2FudCB0byBkaXNjYXJkIHRoZSBjaGFuZ2Vz IHRpZWQgdG8gdGhpcyByZWxmaWxlbm9kZQorICoJICAoZXZlbiBpZiBkb25lIGluIHNvbWUg b3RoZXIgc3VidHJhbnNhY3Rpb24pLgorICoKKyAqCSAgVGhlIFhJRCBtYXkgYmUgdmFsaWQg ZXZlbiBmb3Igbm9uLXRyYW5zYWN0aW9uYWwgc2VxdWVuY2VzIC0gd2Ugc2ltcGx5CisgKgkg IGtlZXAgdGhlIFhJRCBkZWNvZGVkIGZyb20gV0FMLCBpdCdzIHVwIHRvIHRoZSByZW9yZGVy YnVmZmVyIHRvIGRlY2lkZQorICoJICBpZiB0aGUgY2hhbmdlIGlzIHRyYW5zYWN0aW9uYWwu CisgKgogICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICovCiAjaW5jbHVkZSAicG9zdGdyZXMu aCIKQEAgLTkxLDYgKzEyNiw3IEBACiAjaW5jbHVkZSAiYWNjZXNzL3hhY3QuaCIKICNpbmNs dWRlICJhY2Nlc3MveGxvZ19pbnRlcm5hbC5oIgogI2luY2x1ZGUgImNhdGFsb2cvY2F0YWxv Zy5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3NlcXVlbmNlLmgiCiAjaW5jbHVkZSAibGliL2Jp bmFyeWhlYXAuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJwZ3N0YXQu aCIKQEAgLTExNiw2ICsxNTIsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QgUmVvcmRlckJ1ZmZlclRY TkJ5SWRFbnQKIAlSZW9yZGVyQnVmZmVyVFhOICp0eG47CiB9IFJlb3JkZXJCdWZmZXJUWE5C eUlkRW50OwogCisvKiBlbnRyeSBmb3IgaGFzaCB0YWJsZSB3ZSB1c2UgdG8gdHJhY2sgc2Vx dWVuY2VzIGNyZWF0ZWQgaW4gcnVubmluZyB4YWN0cyAqLwordHlwZWRlZiBzdHJ1Y3QgUmVv cmRlckJ1ZmZlclNlcXVlbmNlRW50Cit7CisJUmVsRmlsZUxvY2F0b3IgcmxvY2F0b3I7CisJ UmVvcmRlckJ1ZmZlclRYTiAqdHhuOworfSBSZW9yZGVyQnVmZmVyU2VxdWVuY2VFbnQ7CisK IC8qIGRhdGEgc3RydWN0dXJlcyBmb3IgKHJlbGZpbGVsb2NhdG9yLCBjdGlkKSA9PiAoY21p biwgY21heCkgbWFwcGluZyAqLwogdHlwZWRlZiBzdHJ1Y3QgUmVvcmRlckJ1ZmZlclR1cGxl Q2lkS2V5CiB7CkBAIC0yMjUsNiArMjY4LDcgQEAgc3RhdGljIHZvaWQgUmVvcmRlckJ1ZmZl clRyYW5zZmVyU25hcFRvUGFyZW50KFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKIAkJCQkJCQkJ CQkJICBSZW9yZGVyQnVmZmVyVFhOICpzdWJ0eG4pOwogCiBzdGF0aWMgdm9pZCBBc3NlcnRU WE5Mc25PcmRlcihSZW9yZGVyQnVmZmVyICpyYik7CitzdGF0aWMgdm9pZCBBc3NlcnRDaGVj a1NlcXVlbmNlcyhSZW9yZGVyQnVmZmVyICpyYik7CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICogc3VwcG9ydCBmdW5jdGlvbnMgZm9yIGxzbi1v cmRlciBpdGVyYXRpbmcgb3ZlciB0aGUgLT5jaGFuZ2VzIG9mIGEKQEAgLTQ1NiwxMiArNTAw LDQ4IEBAIFJlb3JkZXJCdWZmZXJSZXR1cm5UWE4oUmVvcmRlckJ1ZmZlciAqcmIsIFJlb3Jk ZXJCdWZmZXJUWE4gKnR4bikKIAkJdHhuLT5pbnZhbGlkYXRpb25zID0gTlVMTDsKIAl9CiAK KwlpZiAodHhuLT5zZXF1ZW5jZXNfaGFzaCAhPSBOVUxMKQorCXsKKwkJaGFzaF9kZXN0cm95 KHR4bi0+c2VxdWVuY2VzX2hhc2gpOworCQl0eG4tPnNlcXVlbmNlc19oYXNoID0gTlVMTDsK Kwl9CisKIAkvKiBSZXNldCB0aGUgdG9hc3QgaGFzaCAqLwogCVJlb3JkZXJCdWZmZXJUb2Fz dFJlc2V0KHJiLCB0eG4pOwogCiAJcGZyZWUodHhuKTsKIH0KIAorLyoKKyAqIEluaXRpYWxp emUgaGFzaCB0YWJsZSBvZiByZWxmaWxlbm9kZXMgY3JlYXRlZCBieSB0aGUgdHJhbnNhY3Rp b24uCisgKgorICogRWFjaCBlbnRyeSBtYXBzIHRoZSByZWxmaWxlbm9kZSB0byB0aGUgKHN1 Yil0cmFuc2FjdGlvbiB0aGF0IGNyZWF0ZWQgdGhlCisgKiByZWxmaWxlbm9kZSAtIHdoaWNo IGlzIGFsc28gdGhlIHRyYW5zYWN0aW9uIHRoZSBzZXF1ZW5jZSBjaGFuZ2UgbmVlZHMgdG8K KyAqIGJlIHBhcnQgb2YgKGluIHRyYW5zYWN0aW9uYWwgY2FzZSkuCisgKgorICogV2UgZG9u J3QgZG8gdGhpcyBpbiBSZW9yZGVyQnVmZmVyR2V0VFhOIGJlY2F1c2UgdGhhdCdkIGFsbG9j YXRlIHRoZSBoYXNoCisgKiBmb3IgYWxsIHRyYW5zYWN0aW9ucywgYW5kIHdlIGV4cGVjdCBu ZXcgcmVsZmlsZW5vZGVzIHRvIGJlIGZhaXJseSByYXJlLgorICogU28gb25seSBkbyB0aGF0 IHdoZW4gYWRkaW5nIHRoZSBmaXJzdCBlbnRyeS4KKyAqLworc3RhdGljIHZvaWQKK1Jlb3Jk ZXJCdWZmZXJUWE5TZXF1ZW5jZXNJbml0KFJlb3JkZXJCdWZmZXIgKnJiLCBSZW9yZGVyQnVm ZmVyVFhOICp0eG4pCit7CisJSEFTSENUTAkJaGFzaF9jdGw7CisKKwkvKiBiYWlsIG91dCBp ZiBhbHJlYWR5IGluaXRpYWxpemVkICovCisJaWYgKHR4bi0+c2VxdWVuY2VzX2hhc2gpCisJ CXJldHVybjsKKworCS8qIGhhc2ggdGFibGUgb2Ygc2VxdWVuY2VzLCBtYXBwaW5nIHJlbGZp bGVsb2NhdG9yIHRvIHRyYW5zYWN0aW9uICovCisJaGFzaF9jdGwua2V5c2l6ZSA9IHNpemVv ZihSZWxGaWxlTG9jYXRvcik7CisJaGFzaF9jdGwuZW50cnlzaXplID0gc2l6ZW9mKFJlb3Jk ZXJCdWZmZXJTZXF1ZW5jZUVudCk7CisJaGFzaF9jdGwuaGN4dCA9IHJiLT5jb250ZXh0Owor CisJLyogd2UgZXhwZWN0IHJlbGZpbGVub2RlcyB0byBiZSBjcmVhdGVkIG9ubHkgcmFyZWx5 LCBzbyAzMiBzZWVtcyBlbm91Z2ggKi8KKwl0eG4tPnNlcXVlbmNlc19oYXNoID0gaGFzaF9j cmVhdGUoIlJlb3JkZXJCdWZmZXJUWE5TZXF1ZW5jZUhhc2giLCAzMiwgJmhhc2hfY3RsLAor CQkJCQkJCQkJICBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwgSEFTSF9DT05URVhUKTsKK30K KwogLyoKICAqIEdldCBhIGZyZXNoIFJlb3JkZXJCdWZmZXJDaGFuZ2UuCiAgKi8KQEAgLTUz Niw2ICs2MTYsMTMgQEAgUmVvcmRlckJ1ZmZlclJldHVybkNoYW5nZShSZW9yZGVyQnVmZmVy ICpyYiwgUmVvcmRlckJ1ZmZlckNoYW5nZSAqY2hhbmdlLAogCQkJCWNoYW5nZS0+ZGF0YS50 cnVuY2F0ZS5yZWxpZHMgPSBOVUxMOwogCQkJfQogCQkJYnJlYWs7CisJCWNhc2UgUkVPUkRF Ul9CVUZGRVJfQ0hBTkdFX1NFUVVFTkNFOgorCQkJaWYgKGNoYW5nZS0+ZGF0YS5zZXF1ZW5j ZS50dXBsZSkKKwkJCXsKKwkJCQlSZW9yZGVyQnVmZmVyUmV0dXJuVHVwbGVCdWYocmIsIGNo YW5nZS0+ZGF0YS5zZXF1ZW5jZS50dXBsZSk7CisJCQkJY2hhbmdlLT5kYXRhLnNlcXVlbmNl LnR1cGxlID0gTlVMTDsKKwkJCX0KKwkJCWJyZWFrOwogCQljYXNlIFJFT1JERVJfQlVGRkVS X0NIQU5HRV9JTlRFUk5BTF9TUEVDX0NPTkZJUk06CiAJCWNhc2UgUkVPUkRFUl9CVUZGRVJf Q0hBTkdFX0lOVEVSTkFMX1NQRUNfQUJPUlQ6CiAJCWNhc2UgUkVPUkRFUl9CVUZGRVJfQ0hB TkdFX0lOVEVSTkFMX0NPTU1BTkRfSUQ6CkBAIC04MDQsNyArODkxLDggQEAgUmVvcmRlckJ1 ZmZlclF1ZXVlQ2hhbmdlKFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlvbklkIHhpZCwg WExvZ1JlY1B0ciBsc24sCiAJCWNoYW5nZS0+YWN0aW9uID09IFJFT1JERVJfQlVGRkVSX0NI QU5HRV9ERUxFVEUgfHwKIAkJY2hhbmdlLT5hY3Rpb24gPT0gUkVPUkRFUl9CVUZGRVJfQ0hB TkdFX0lOVEVSTkFMX1NQRUNfSU5TRVJUIHx8CiAJCWNoYW5nZS0+YWN0aW9uID09IFJFT1JE RVJfQlVGRkVSX0NIQU5HRV9UUlVOQ0FURSB8fAotCQljaGFuZ2UtPmFjdGlvbiA9PSBSRU9S REVSX0JVRkZFUl9DSEFOR0VfTUVTU0FHRSkKKwkJY2hhbmdlLT5hY3Rpb24gPT0gUkVPUkRF Ul9CVUZGRVJfQ0hBTkdFX01FU1NBR0UgfHwKKwkJY2hhbmdlLT5hY3Rpb24gPT0gUkVPUkRF Ul9CVUZGRVJfQ0hBTkdFX1NFUVVFTkNFKQogCXsKIAkJUmVvcmRlckJ1ZmZlclRYTiAqdG9w dHhuID0gcmJ0eG5fZ2V0X3RvcHR4bih0eG4pOwogCkBAIC04OTUsNiArOTgzLDM1MSBAQCBS ZW9yZGVyQnVmZmVyUXVldWVNZXNzYWdlKFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlv bklkIHhpZCwKIAl9CiB9CiAKKy8qCisgKiBUcmVhdCB0aGUgc2VxdWVuY2UgY2hhbmdlIGFz IHRyYW5zYWN0aW9uYWw/CisgKgorICogVG8gZGVjaWRlIGlmIGEgc2VxdWVuY2UgY2hhbmdl IHNob3VsZCBiZSBoYW5kbGVkIGFzIHRyYW5zYWN0aW9uYWwgb3IgYXBwbGllZAorICogaW1t ZWRpYXRlbHksIHdlIG5lZWQgdG8gZGVjaWRlIGlmIHRoZSByZWxmaWxlbm9kZSB3YXMgY3Jl YXRlZCBieSBhIHJ1bm5pbmcKKyAqIHRyYW5zYWN0aW9uLiBFYWNoIHRyYW5zYWN0aW9uIGhh cyBhIGhhc2ggdGFibGUgb2Ygc3VjaCByZWxmaWxlbm9kZXMuCisgKgorICogQSBuYWl2ZSBh cHByb2FjaCB3b3VsZCBiZSB0byBqdXN0IGxvb3AgdGhyb3VnaCBhbGwgdHJhbnNhY3Rpb25z IGFuZCBjaGVjaworICogZWFjaCBvZiB0aGVtLCBidXQgdGhlcmUgbWF5IGJlIChlYXNpbHkg dGhvdXNhbmRzKSBvZiBzdWJ0cmFuc2FjdGlvbnMsIGFuZAorICogdGhlIGNoZWNrIGhhcHBl bnMgZm9yIGVhY2ggc2VxdWVuY2UgY2hhbmdlLiBTbyB0aGlzIGNvdWxkIGJlIHZlcnkgY29z dGx5LgorICoKKyAqIFRvIGxpbWl0IHRoZSBudW1iZXIgb2YgdHJhbnNhY3Rpb25zIHdlIG5l ZWQgdG8gY2hlY2ssIHdlIHRyYW5zZmVyIHRoZQorICogcmVsZmlsZW5vZGVzIHRvIHRoZSB0 b3AtbGV2ZWwgeGFjdCwgd2hpY2ggYWxsb3dzIHVzIHRvIGNoZWNrIGp1c3QgdGhlCisgKiB0 b3AtbGV2ZWwgeGFjdHMgKGFuZCB0aGVyZSBzaG91bGQgYmUgYSB2ZXJ5IGxpbWl0ZWQgbnVt YmVyIG9mIHRob3NlKS4gV2UKKyAqIGV4cGVjdCByZWxmaWxlbm9kZSBjcmVhdGlvbiB0byBi ZSBhIHF1aXRlIHJhcmUgdGhpbmcsIHNvIHRoaXMgc2hvdWxkIG5vdAorICogd2FzdGUgdG9v IG11Y2ggbWVtb3J5LiBPVE9IIHNlcXVlbmNlIGNoYW5nZXMgYXJlIHZlcnkgY29tbW9uLCBz byBtYWtpbmcKKyAqIHRoZSBjaGVjayBjaGVhcGVyIHNlZW1zIGxpa2UgYSBnb29kIHRyYWRl IG9mZi4KKyAqCisgKiBSZXR1cm5zIHRydWUgZm9yIHRyYW5zYWN0aW9uYWwgY2hhbmdlcywg ZmFsc2Ugb3RoZXJ3aXNlLgorICoKKyAqIE9wdGlvbmFseSAod2hlbiB0aGUgInhpZCIgcGFy YW1ldGVyIGlzIHNldCkgcmV0dXJucyBYSUQgb2YgdGhlIChzdWIpeGFjdAorICogdG8gdXNl IGZvciBxdWV1ZWluZyB0cmFuc2FjdGlvbmFsIGNoYW5nZXMuCisgKgorICogWFhYIEFzIGFu IG9wdGltaXphdGlvbiwgbWF5YmUgd2Ugc2hvdWxkIHRyeSBzZWFyY2hpbmcgdGhlIGN1cnJl bnQgeGFjdCAob3IKKyAqIGl0J3MgdG9wLWxldmVsIHhhY3QpIGZpcnN0LiBJZiB0aGUgY2hh bmdlIGlzIHRyYW5zYWN0aW9uYWwsIHdoZXJlIHdlJ2QKKyAqIGZpbmQgdGhlIG1hdGNoLgor ICovCitib29sCitSZW9yZGVyQnVmZmVyU2VxdWVuY2VJc1RyYW5zYWN0aW9uYWwoUmVvcmRl ckJ1ZmZlciAqcmIsCisJCQkJCQkJCQkgUmVsRmlsZUxvY2F0b3IgcmxvY2F0b3IsCisJCQkJ CQkJCQkgVHJhbnNhY3Rpb25JZCAqeGlkKQoreworCWJvb2wJCWZvdW5kID0gZmFsc2U7CisJ ZGxpc3RfaXRlcglpdGVyOworCisJQXNzZXJ0Q2hlY2tTZXF1ZW5jZXMocmIpOworCisJLyoK KwkgKiBXYWxrIGFsbCB0b3AtbGV2ZWwgdHJhbnNhY3Rpb25zIChzb21lIG9mIHdoaWNoIG1h eSBiZSBzdWJ4YWN0cywgZXhjZXB0CisJICogdGhhdCB3ZSBoYXZlbid0IHByb2Nlc3NlZCB0 aGUgYXNzaWdubWVudHMgeWV0KSwgYW5kIGNoZWNrIGlmIGFueSBvZgorCSAqIHRoZW0gY3Jl YXRlZCB0aGUgcmVsZmlsZW5vZGUuCisJICovCisJZGxpc3RfZm9yZWFjaChpdGVyLCAmcmIt PnRvcGxldmVsX2J5X2xzbikKKwl7CisJCVJlb3JkZXJCdWZmZXJTZXF1ZW5jZUVudCAqZW50 cnk7CisJCVJlb3JkZXJCdWZmZXJUWE4gKnR4biA9IGRsaXN0X2NvbnRhaW5lcihSZW9yZGVy QnVmZmVyVFhOLCBub2RlLAorCQkJCQkJCQkJCQkJaXRlci5jdXIpOworCisJCS8qIHRyYW5z YWN0aW9uIGhhcyBubyByZWxmaWxlbm9kZXMgYXQgYWxsICovCisJCWlmICghdHhuLT5zZXF1 ZW5jZXNfaGFzaCkKKwkJCWNvbnRpbnVlOworCisJCWVudHJ5ID0gaGFzaF9zZWFyY2godHhu LT5zZXF1ZW5jZXNfaGFzaCwKKwkJCQkJCQkodm9pZCAqKSAmcmxvY2F0b3IsCisJCQkJCQkJ SEFTSF9GSU5ELAorCQkJCQkJCSZmb3VuZCk7CisKKwkJLyoKKwkJICogSWYgd2UgZm91bmQg YW4gZW50cnkgd2l0aCBtYXRjaGluZyByZWxmaWxlbm9kZSwgd2UncmUgZG9uZSAtIHdlCisJ CSAqIGhhdmUgdG8gdHJlYXQgdGhlIHNlcXVlbmNlIGNoYW5nZSBhcyB0cmFuc2FjdGlvbmFs LCBhbmQgcmVwbGF5IGl0CisJCSAqIGluIHRoZSBzYW1lIChzdWIpdHJhbnNhY3Rpb24ganVz dCBsaWtlIGFueSBvdGhlciBjaGFuZ2UuCisJCSAqCisJCSAqIE9wdGlvbmFsbHkgc2V0IFhJ RCBvZiB0aGUgKHN1Yil4YWN0IHRoYXQgY3JlYXRlZCB0aGUgcmVsZmlsZW5vZGUuCisJCSAq LworCQlpZiAoZm91bmQpCisJCXsKKwkJCWlmICh4aWQpCisJCQkJKnhpZCA9IGVudHJ5LT50 eG4tPnhpZDsKKworCQkJYnJlYWs7CisJCX0KKwl9CisKKwlyZXR1cm4gZm91bmQ7Cit9CisK Ky8qCisgKiBDbGVhbnVwIHNlcXVlbmNlcyBhZnRlciBhIHN1YnRyYW5zYWN0aW9uIGdvdCBh Ym9ydGVkLgorICoKKyAqIFRoZSBoYXNoIHRhYmxlIHdpbGwgZ2V0IGRlc3Ryb3llZCBpbiBS ZW9yZGVyQnVmZmVyUmV0dXJuVFhOLCBzbyB3ZSBkb24ndAorICogbmVlZCB0byB3b3JyeSBh Ym91dCB0aGF0LiBCdXQgdGhlIGVudHJpZXMgd2VyZSBjb3BpZWQgdG8gdGhlIHBhcmVudCB4 YWN0LAorICogYW5kIHRoYXQncyBzdGlsbCBiZWluZyBkZWNvZGVkIC0gd2UgbWFrZSBzdXJl IHRvIHJlbW92ZSB0aGUgZW50cmllcyBmcm9tCisgKiB0aGUgYWJvcnRlZCBvbmUuCisgKi8K K3N0YXRpYyB2b2lkCitSZW9yZGVyQnVmZmVyU2VxdWVuY2VDbGVhbnVwKFJlb3JkZXJCdWZm ZXJUWE4gKnR4bikKK3sKKwlIQVNIX1NFUV9TVEFUVVMgc2Nhbl9zdGF0dXM7CisJUmVvcmRl ckJ1ZmZlclNlcXVlbmNlRW50ICplbnQ7CisKKwkvKiBCYWlsIG91dCBpZiBub3QgYSBzdWJ4 YWN0LCBvciBpZiB0aGVyZSBhcmUgbm8gZW50cmllcy4gKi8KKwlpZiAoIXJidHhuX2lzX2tu b3duX3N1YnhhY3QodHhuKSkKKwkJcmV0dXJuOworCisJaWYgKCF0eG4tPnNlcXVlbmNlc19o YXNoKQorCQlyZXR1cm47CisKKwkvKgorCSAqIFNjYW4gdGhlIHRvcC1sZXZlbCB0cmFuc2Fj dGlvbiBoYXNoIGFuZCByZW1vdmUgdGhlIGVudHJpZXMgZnJvbSBpdC4gSWYKKwkgKiB3ZSBo YXZlIGVudHJpZXMgZm9yIHN1YnhhY3QsIHRoZSB0b3AtbGV2ZWwgaGFzaCBtdXN0IGhhdmUg YmVlbgorCSAqIGluaXRpYWxpemVkLgorCSAqLworCWhhc2hfc2VxX2luaXQoJnNjYW5fc3Rh dHVzLCB0eG4tPnNlcXVlbmNlc19oYXNoKTsKKwl3aGlsZSAoKGVudCA9IChSZW9yZGVyQnVm ZmVyU2VxdWVuY2VFbnQgKikgaGFzaF9zZXFfc2VhcmNoKCZzY2FuX3N0YXR1cykpICE9IE5V TEwpCisJeworCQkodm9pZCkgaGFzaF9zZWFyY2godHhuLT50b3B0eG4tPnNlcXVlbmNlc19o YXNoLAorCQkJCQkJICAgKHZvaWQgKikgJmVudC0+cmxvY2F0b3IsCisJCQkJCQkgICBIQVNI X1JFTU9WRSwgTlVMTCk7CisJfQorfQorCisvKgorICogQSB0cmFuc2FjdGlvbmFsIHNlcXVl bmNlIGNoYW5nZSBpcyBxdWV1ZWQgdG8gYmUgcHJvY2Vzc2VkIHVwb24gY29tbWl0CisgKiBh bmQgYSBub24tdHJhbnNhY3Rpb25hbCBjaGFuZ2UgZ2V0cyBwcm9jZXNzZWQgaW1tZWRpYXRl bHkuCisgKgorICogQSBzZXF1ZW5jZSB1cGRhdGUgbWF5IGJlIGJvdGggdHJhbnNhY3Rpb25h bCBhbmQgbm9uLXRyYW5zYWN0aW9uYWwuIFdoZW4KKyAqIGNyZWF0ZWQgaW4gYSBydW5uaW5n IHRyYW5zYWN0aW9uLCB0cmVhdCBpdCBhcyB0cmFuc2FjdGlvbmFsIGFuZCBxdWV1ZQorICog dGhlIGNoYW5nZSBpbiBpdC4gT3RoZXJ3aXNlIHRyZWF0IGl0IGFzIG5vbi10cmFuc2FjdGlv bmFsLCBzbyB0aGF0IHdlCisgKiBkb24ndCBmb3JnZXQgdGhlIGNoYW5nZSBpbiBjYXNlIG9m IGEgcm9sbGJhY2suCisgKi8KK3ZvaWQKK1Jlb3JkZXJCdWZmZXJRdWV1ZVNlcXVlbmNlKFJl b3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlvbklkIHhpZCwKKwkJCQkJCSAgIFNuYXBzaG90 IHNuYXBzaG90LCBYTG9nUmVjUHRyIGxzbiwgUmVwT3JpZ2luSWQgb3JpZ2luX2lkLAorCQkJ CQkJICAgUmVsRmlsZUxvY2F0b3IgcmxvY2F0b3IsIGJvb2wgdHJhbnNhY3Rpb25hbCwKKwkJ CQkJCSAgIFJlb3JkZXJCdWZmZXJUdXBsZUJ1ZiAqdHVwbGVidWYpCit7CisJQXNzZXJ0Q2hl Y2tTZXF1ZW5jZXMocmIpOworCisJLyoKKwkgKiBDaGFuZ2UgbmVlZHMgdG8gYmUgaGFuZGxl ZCBhcyB0cmFuc2FjdGlvbmFsLCBiZWNhdXNlIHRoZSBzZXF1ZW5jZSB3YXMKKwkgKiBjcmVh dGVkIGluIGEgdHJhbnNhY3Rpb24gdGhhdCBpcyBzdGlsbCBzZWVuIGFzIHJ1bm5pbmcuIElu IHRoYXQgY2FzZQorCSAqIGFsbCB0aGUgY2hhbmdlcyBuZWVkIHRvIGJlIHF1ZXVlZCBpbiB0 aGF0IHRyYW5zYWN0aW9uLCB3ZSBtdXN0IG5vdCBzZW5kCisJICogdGhlIGNoYW5nZXMgdG8g dGhlIGRvd25zdHJlYW0gdW50aWwgdGhlIHRyYW5zYWN0aW9uIGNvbW1pdHMuCisJICoKKwkg KiBUaGVyZSdzIGEgYml0IG9mIGEgdHJvdWJsZSB3aXRoIHN1YnRyYW5zYWN0aW9ucyAtIHdl IGNhbid0IHF1ZXVlIGl0CisJICogaW50byB0aGUgc3VieGFjdCwgYmVjYXVzZSBpdCBtaWdo dCBiZSByb2xsZWQgYmFjayBhbmQgd2UnZCBsb3NlIHRoZQorCSAqIGNoYW5nZSAoYW5kIHRo YXQnZCBiZSB3cm9uZywgYXMgc2VxdWVuY2VzIGFyZSBub3QgdHJhbnNhY3Rpb25hbCkuIEJ1 dAorCSAqIHdlIGFsc28gY2FuJ3QgcXVldWUgaXQgaW50byB0aGUgdG9wLWxldmVsIHRyYW5z YWN0aW9uLCBiZWNhdXNlIHRoZQorCSAqIHJlbGZpbGVub2RlIGNyZWF0aW9uIGlzIHRyYW5z YWN0aW9uYWwgLSBpZiB0aGF0IHN1YnhhY3QgZ2V0cyBhYm9ydGVkLAorCSAqIHdlIG11c3Qg dGhyb3cgYXdheSB0aGUgY2hhbmdlcyB0b28uCisJICoKKwkgKiBTbyB3ZSBuZWVkIHRvIHF1 ZXVlIGl0IGludG8gdGhlIHNhbWUgKHN1Yil4YWN0IHRoYXQgY3JlYXRlZCB0aGUgbmV3CisJ ICogc2VxdWVuY2UgcmVsZmlsZW5vZGUsIHdoaWNoIGlzIHdoeSB3ZSBoYXZlIHRoZSBYSUQg aW4gdGhlIGhhc2ggdGFibGUuCisJICovCisJaWYgKHRyYW5zYWN0aW9uYWwpCisJeworCQlN ZW1vcnlDb250ZXh0IG9sZGNvbnRleHQ7CisJCVJlb3JkZXJCdWZmZXJDaGFuZ2UgKmNoYW5n ZTsKKworCQkvKiBhbGxvY2F0ZSBhbmQgcXVldWUgdGhlIHRyYW5zYWN0aW9uYWwgc2VxdWVu Y2UgY2hhbmdlICovCisJCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8ocmIt PmNvbnRleHQpOworCisJCWNoYW5nZSA9IFJlb3JkZXJCdWZmZXJHZXRDaGFuZ2UocmIpOwor CisJCWNoYW5nZS0+YWN0aW9uID0gUkVPUkRFUl9CVUZGRVJfQ0hBTkdFX1NFUVVFTkNFOwor CQljaGFuZ2UtPm9yaWdpbl9pZCA9IG9yaWdpbl9pZDsKKworCQltZW1jcHkoJmNoYW5nZS0+ ZGF0YS5zZXF1ZW5jZS5sb2NhdG9yLCAmcmxvY2F0b3IsIHNpemVvZihSZWxGaWxlTG9jYXRv cikpOworCisJCWNoYW5nZS0+ZGF0YS5zZXF1ZW5jZS50dXBsZSA9IHR1cGxlYnVmOworCisJ CS8qIGxvb2t1cCB0aGUgWElEIGZvciB0cmFuc2FjdGlvbiB0aGF0IGNyZWF0ZWQgdGhlIHJl bGZpbGVub2RlICovCisJCVJlb3JkZXJCdWZmZXJTZXF1ZW5jZUlzVHJhbnNhY3Rpb25hbChy YiwgcmxvY2F0b3IsICZ4aWQpOworCisJCS8qIHRoZSBYSUQgc2hvdWxkIGJlIHZhbGlkIGZv ciBhIHRyYW5zYWN0aW9uYWwgY2hhbmdlICovCisJCUFzc2VydChUcmFuc2FjdGlvbklkSXNW YWxpZCh4aWQpKTsKKworCQkvKiBhZGQgaXQgdG8gdGhlIHNhbWUgKHN1Yil4YWN0IHRoYXQg Y3JlYXRlZCB0aGF0IHJlbGZpbGVub2RlICovCisJCVJlb3JkZXJCdWZmZXJRdWV1ZUNoYW5n ZShyYiwgeGlkLCBsc24sIGNoYW5nZSwgZmFsc2UpOworCisJCU1lbW9yeUNvbnRleHRTd2l0 Y2hUbyhvbGRjb250ZXh0KTsKKwl9CisJZWxzZQorCXsKKwkJLyoKKwkJICogVGhpcyBjaGFu Z2UgaXMgZm9yIGEgc2VxdWVuY2UgdGhhdCB3YXMgbm90IGNyZWF0ZWQgaW4gYW55IHJ1bm5p bmcKKwkJICogdHJhbnNhY3Rpb24sIHNvIHdlIHRyZWF0IGl0IGFzIG5vbi10cmFuc2FjdGlv bmFsIGFuZCBqdXN0IHNlbmQgaXQKKwkJICogdG8gdGhlIG91dHB1dCBwbHVnaW4gZGlyZWN0 bHkuCisJCSAqLworCQlSZW9yZGVyQnVmZmVyVFhOICp0eG4gPSBOVUxMOworCQl2b2xhdGls ZSBTbmFwc2hvdCBzbmFwc2hvdF9ub3cgPSBzbmFwc2hvdDsKKwkJYm9vbAkJdXNpbmdfc3Vi dHhuOworCisJCS8qIG5vbi10cmFuc2FjdGlvbmFsIGNoYW5nZXMgcmVxdWlyZSBhIHZhbGlk IHNuYXBzaG90ICovCisJCUFzc2VydChzbmFwc2hvdF9ub3cpOworCisJCS8qIE1ha2Ugc3Vy ZSB0aGUgc2VxdWVuY2UgaXMgbm90IGluIGFueSBvZiB0aGUgaGFzaCB0YWJsZXMgKi8KKwkJ QXNzZXJ0KCFSZW9yZGVyQnVmZmVyU2VxdWVuY2VJc1RyYW5zYWN0aW9uYWwocmIsIHJsb2Nh dG9yLCBOVUxMKSk7CisKKwkJaWYgKHhpZCAhPSBJbnZhbGlkVHJhbnNhY3Rpb25JZCkKKwkJ CXR4biA9IFJlb3JkZXJCdWZmZXJUWE5CeVhpZChyYiwgeGlkLCB0cnVlLCBOVUxMLCBsc24s IHRydWUpOworCisJCS8qIHNldHVwIHNuYXBzaG90IHRvIGFsbG93IGNhdGFsb2cgYWNjZXNz ICovCisJCVNldHVwSGlzdG9yaWNTbmFwc2hvdChzbmFwc2hvdF9ub3csIE5VTEwpOworCisJ CS8qCisJCSAqIERlY29kaW5nIG5lZWRzIGFjY2VzcyB0byBzeXNjYWNoZXMgZXQgYWwuLCB3 aGljaCBpbiB0dXJuIHVzZQorCQkgKiBoZWF2eXdlaWdodCBsb2NrcyBhbmQgc3VjaC4gVGh1 cyB3ZSBuZWVkIHRvIGhhdmUgZW5vdWdoIHN0YXRlCisJCSAqIGFyb3VuZCB0byBrZWVwIHRy YWNrIG9mIHRob3NlLiAgVGhlIGVhc2llc3Qgd2F5IGlzIHRvIHNpbXBseSB1c2UgYQorCQkg KiB0cmFuc2FjdGlvbiBpbnRlcm5hbGx5LiAgVGhhdCBhbHNvIGFsbG93cyB1cyB0byBlYXNp bHkgZW5mb3JjZSB0aGF0CisJCSAqIG5vdGhpbmcgd3JpdGVzIHRvIHRoZSBkYXRhYmFzZSBi eSBjaGVja2luZyBmb3IgeGlkIGFzc2lnbm1lbnRzLgorCQkgKgorCQkgKiBXaGVuIHdlJ3Jl IGNhbGxlZCB2aWEgdGhlIFNRTCBTUkYgdGhlcmUncyBhbHJlYWR5IGEgdHJhbnNhY3Rpb24K KwkJICogc3RhcnRlZCwgc28gc3RhcnQgYW4gZXhwbGljaXQgc3VidHJhbnNhY3Rpb24gdGhl cmUuCisJCSAqLworCQl1c2luZ19zdWJ0eG4gPSBJc1RyYW5zYWN0aW9uT3JUcmFuc2FjdGlv bkJsb2NrKCk7CisKKwkJUEdfVFJZKCk7CisJCXsKKwkJCVJlbGF0aW9uCXJlbGF0aW9uOwor CQkJSGVhcFR1cGxlCXR1cGxlOworCQkJRm9ybV9wZ19zZXF1ZW5jZV9kYXRhIHNlcTsKKwkJ CU9pZAkJCXJlbG9pZDsKKwkJCWludDY0CQl2YWx1ZTsKKworCQkJaWYgKHVzaW5nX3N1YnR4 bikKKwkJCQlCZWdpbkludGVybmFsU3ViVHJhbnNhY3Rpb24oInNlcXVlbmNlIik7CisJCQll bHNlCisJCQkJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKworCQkJcmVsb2lkID0gUmVs aWRCeVJlbGZpbGVudW1iZXIocmxvY2F0b3Iuc3BjT2lkLCBybG9jYXRvci5yZWxOdW1iZXIp OworCisJCQlpZiAocmVsb2lkID09IEludmFsaWRPaWQpCisJCQkJZWxvZyhFUlJPUiwgImNv dWxkIG5vdCBtYXAgZmlsZW5vZGUgXCIlc1wiIHRvIHJlbGF0aW9uIE9JRCIsCisJCQkJCSBy ZWxwYXRocGVybShybG9jYXRvciwKKwkJCQkJCQkJIE1BSU5fRk9SS05VTSkpOworCisJCQly ZWxhdGlvbiA9IFJlbGF0aW9uSWRHZXRSZWxhdGlvbihyZWxvaWQpOworCisJCQlpZiAoIVJl bGF0aW9uSXNWYWxpZChyZWxhdGlvbikpCisJCQkJZWxvZyhFUlJPUiwgImNvdWxkIG5vdCBv cGVuIHJlbGF0aW9uIHdpdGggT0lEICV1IChmb3IgZmlsZW5vZGUgXCIlc1wiKSIsCisJCQkJ CSByZWxvaWQsCisJCQkJCSByZWxwYXRocGVybShybG9jYXRvciwgTUFJTl9GT1JLTlVNKSk7 CisKKwkJCXR1cGxlID0gJnR1cGxlYnVmLT50dXBsZTsKKwkJCXNlcSA9IChGb3JtX3BnX3Nl cXVlbmNlX2RhdGEpIEdFVFNUUlVDVCh0dXBsZSk7CisKKwkJCS8qCisJCQkgKiBDYWxjdWxh dGUgdGhlIGZpcnN0IHZhbHVlIG9mIHRoZSBuZXh0IGJhdGNoIChhdCB3aGljaCBwb2ludCB3 ZQorCQkJICogZ2VuZXJhdGUgYW5kIGRlY29kZSBhbm90aGVyIFdBTCByZWNvcmQuCisJCQkg Ki8KKwkJCXZhbHVlID0gc2VxLT5sYXN0X3ZhbHVlOworCQkJdmFsdWUgKz0gKHNlcS0+aXNf Y2FsbGVkKSA/IHNlcS0+bG9nX2NudCA6IDA7CisKKwkJCXJiLT5zZXF1ZW5jZShyYiwgdHhu LCBsc24sIHJlbGF0aW9uLCB0cmFuc2FjdGlvbmFsLCB2YWx1ZSk7CisKKwkJCVJlbGF0aW9u Q2xvc2UocmVsYXRpb24pOworCisJCQlUZWFyZG93bkhpc3RvcmljU25hcHNob3QoZmFsc2Up OworCisJCQlBYm9ydEN1cnJlbnRUcmFuc2FjdGlvbigpOworCisJCQlpZiAodXNpbmdfc3Vi dHhuKQorCQkJCVJvbGxiYWNrQW5kUmVsZWFzZUN1cnJlbnRTdWJUcmFuc2FjdGlvbigpOwor CQl9CisJCVBHX0NBVENIKCk7CisJCXsKKwkJCVRlYXJkb3duSGlzdG9yaWNTbmFwc2hvdCh0 cnVlKTsKKworCQkJQWJvcnRDdXJyZW50VHJhbnNhY3Rpb24oKTsKKworCQkJaWYgKHVzaW5n X3N1YnR4bikKKwkJCQlSb2xsYmFja0FuZFJlbGVhc2VDdXJyZW50U3ViVHJhbnNhY3Rpb24o KTsKKworCQkJUEdfUkVfVEhST1coKTsKKwkJfQorCQlQR19FTkRfVFJZKCk7CisJfQorfQor CisvKgorICogUmVvcmRlckJ1ZmZlckFkZFJlbEZpbGVMb2NhdG9yCisgKgkJQWRkIG5ld2x5 IGNyZWF0ZWQgcmVsZmlsZW5vZGUgdG8gdGhlIGhhc2ggdGFibGUgZm9yIHRyYW5zYWN0aW9u LgorICoKKyAqIElmIHRoZSB0cmFuc2FjdGlvbiBpcyBhbHJlYWR5IGtub3duIHRvIGJlIGEg c3VidHJhbnNhY3Rpb24sIHdlIGFkZCB0aGUgc2FtZQorICogZW50cnkgaW50byB0aGUgcGFy ZW50IHRyYW5zYWN0aW9uIChidXQgaXQgc3RpbGwgcG9pbnRzIGF0IHRoZSBzdWJ4YWN0LCBz bworICogdGhhdCB3ZSBrbm93IHdoZXJlIHRvIHF1ZXVlIGNoYW5nZXMgb3Igd2hhdCB0byBk aXNjYXJkIGluIGNhc2Ugb2YgYW4gYWJvcnQpLgorICovCit2b2lkCitSZW9yZGVyQnVmZmVy QWRkUmVsRmlsZUxvY2F0b3IoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlk LAorCQkJCQkJCSAgIFhMb2dSZWNQdHIgbHNuLCBSZWxGaWxlTG9jYXRvciBybG9jYXRvcikK K3sKKwlib29sCQlmb3VuZDsKKwlSZW9yZGVyQnVmZmVyU2VxdWVuY2VFbnQgKmVudHJ5Owor CVJlb3JkZXJCdWZmZXJUWE4gKnR4bjsKKworCUFzc2VydENoZWNrU2VxdWVuY2VzKHJiKTsK KworCS8qCisJICogV2Ugb25seSBjYXJlIGFib3V0IHNlcXVlbmNlIHJlbGZpbGVub2RlcyBm b3Igbm93LCBhbmQgdGhvc2UgYWx3YXlzIGhhdmUKKwkgKiBhIFhJRC4gU28gaWYgdGhlcmUn cyBubyBYSUQsIGRvbid0IGJvdGhlciBhZGRpbmcgdGhlbSB0byB0aGUgaGFzaC4KKwkgKi8K KwlpZiAoeGlkID09IEludmFsaWRUcmFuc2FjdGlvbklkKQorCQlyZXR1cm47CisKKwkvKgor CSAqIFRoaXMgbWlnaHQgYmUgdGhlIGZpcnN0IGNoYW5nZSBkZWNvZGVkIGZvciB0aGlzIHRy YW5zYWN0aW9uLCBzbyBtYWtlCisJICogc3VyZSB3ZSBjcmVhdGUgaXQgaWYgbmVlZGVkLgor CSAqLworCXR4biA9IFJlb3JkZXJCdWZmZXJUWE5CeVhpZChyYiwgeGlkLCB0cnVlLCBOVUxM LCBsc24sIHRydWUpOworCisJLyoKKwkgKiBGaXJzdCBhZGQgaXQgdG8gdGhlIHRvcC1sZXZl bCB0cmFuc2FjdGlvbiwgYnV0IG1ha2Ugc3VyZSBpdCBsaW5rcyB0bworCSAqIHRoZSBjb3Jy ZWN0IHN1YnRyYW5zYWN0aW9uIChzbyB0aGF0IHdlIGFkZCBsYXRlciBjaGFuZ2VzIHRvIGl0 KS4KKwkgKi8KKwlpZiAodHhuLT50b3B0eG4pCisJeworCQkvKiBtYWtlIHN1cmUgdGhlIGhh c2ggdGFibGUgaXMgaW5pdGlhbGl6ZWQgKi8KKwkJUmVvcmRlckJ1ZmZlclRYTlNlcXVlbmNl c0luaXQocmIsIHR4bi0+dG9wdHhuKTsKKworCQkvKiBzZWFyY2ggdGhlIGxvb2t1cCB0YWJs ZSAqLworCQllbnRyeSA9IGhhc2hfc2VhcmNoKHR4bi0+dG9wdHhuLT5zZXF1ZW5jZXNfaGFz aCwKKwkJCQkJCQkodm9pZCAqKSAmcmxvY2F0b3IsCisJCQkJCQkJSEFTSF9FTlRFUiwKKwkJ CQkJCQkmZm91bmQpOworCisJCS8qCisJCSAqIFdlJ3ZlIGp1c3QgZGVjb2RlZCBjcmVhdGlv biBvZiB0aGUgcmVsZmlsZW5vZGUsIHNvIGlmIHdlIGZvdW5kIGl0CisJCSAqIGluIHRoZSBo YXNoIHRhYmxlLCBzb21ldGhpbmcgaXMgd3JvbmcuCisJCSAqLworCQlBc3NlcnQoIWZvdW5k KTsKKworCQllbnRyeS0+dHhuID0gdHhuOworCX0KKworCS8qIG1ha2Ugc3VyZSB0aGUgaGFz aCB0YWJsZSBpcyBpbml0aWFsaXplZCAqLworCVJlb3JkZXJCdWZmZXJUWE5TZXF1ZW5jZXNJ bml0KHJiLCB0eG4pOworCisJLyogc2VhcmNoIHRoZSBsb29rdXAgdGFibGUgKi8KKwllbnRy eSA9IGhhc2hfc2VhcmNoKHR4bi0+c2VxdWVuY2VzX2hhc2gsCisJCQkJCQkodm9pZCAqKSAm cmxvY2F0b3IsCisJCQkJCQlIQVNIX0VOVEVSLAorCQkJCQkJJmZvdW5kKTsKKworCS8qCisJ ICogV2UndmUganVzdCBkZWNvZGVkIGNyZWF0aW9uIG9mIHRoZSByZWxmaWxlbm9kZSwgc28g aWYgd2UgZm91bmQgaXQgaW4KKwkgKiB0aGUgaGFzaCB0YWJsZSwgc29tZXRoaW5nIGlzIHdy b25nLgorCSAqLworCUFzc2VydCghZm91bmQpOworCisJZW50cnktPnR4biA9IHR4bjsKKwor CUFzc2VydENoZWNrU2VxdWVuY2VzKHJiKTsKK30KKwogLyoKICAqIEFzc2VydFRYTkxzbk9y ZGVyCiAgKgkJVmVyaWZ5IExTTiBvcmRlcmluZyBvZiB0cmFuc2FjdGlvbiBsaXN0cyBpbiB0 aGUgcmVvcmRlcmJ1ZmZlcgpAQCAtOTY5LDYgKzE0MDIsMTYxIEBAIEFzc2VydFRYTkxzbk9y ZGVyKFJlb3JkZXJCdWZmZXIgKnJiKQogI2VuZGlmCiB9CiAKKy8qCisgKiBBc3NlcnRDaGVj a1NlcXVlbmNlcworICoJCVZlcmlmeSBjb25zaXN0ZW5jeSBvZiBoYXNoIHRhYmxlcyB0cmFj a2luZyBuZXcgcmVsZmlsZW5vZGVzLgorICoKKyAqIFdlIGNoZWNrIHRoYXQgdGhlIGhhc2gg dGFibGUgaW4gdGhlIHRvcC1sZXZlbCB0cmFuc2FjdGlvbiBpcyBjb25zaXN0ZW50IHdpdGgK KyAqIHJlc3BlY3QgdG8gdGhlIGhhc2ggdGFibGVzIGluIGl0J3Mgc3VieGFjdHMuIFRoYXQg aXMsIGVhY2ggZW50cnkgaGFzIHRvIGJlCisgKiBlaXRoZXIgZnJvbSB0aGUgdG9wLWxldmVs IHhhY3Qgb3Igb25lIG9mIGl0J3Mgc3VidHJhbnNhY3Rpb25zLiBMaWtld2lzZSwgZWFjaAor ICogZW50cnkgaW4gc3VieGFjdCBoYXNoIHRhYmxlIGhhcyB0byBoYXZlIGEgbWF0Y2ggaW4g dGhlIHRvcC1sZXZlbCBoYXNoIHRhYmxlLgorICovCitzdGF0aWMgdm9pZAorQXNzZXJ0Q2hl Y2tTZXF1ZW5jZXMoUmVvcmRlckJ1ZmZlciAqcmIpCit7CisjaWZkZWYgVVNFX0FTU0VSVF9D SEVDS0lORworCUxvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCA9IHJiLT5wcml2YXRlX2Rh dGE7CisJZGxpc3RfaXRlcglpdGVyOworCisJLyoKKwkgKiBTa2lwIHRoZSB2ZXJpZmljYXRp b24gaWYgd2UgZG9uJ3QgcmVhY2ggdGhlIExTTiBhdCB3aGljaCB3ZSBzdGFydAorCSAqIGRl Y29kaW5nIHRoZSBjb250ZW50cyBvZiB0cmFuc2FjdGlvbnMgeWV0IGJlY2F1c2UgdW50aWwg d2UgcmVhY2ggdGhlCisJICogTFNOLCB3ZSBjb3VsZCBoYXZlIHRyYW5zYWN0aW9ucyB0aGF0 IGRvbid0IGhhdmUgdGhlIGFzc29jaWF0aW9uIGJldHdlZW4KKwkgKiB0aGUgdG9wLWxldmVs IHRyYW5zYWN0aW9uIGFuZCBzdWJ0cmFuc2FjdGlvbiB5ZXQgYW5kIGNvbnNlcXVlbnRseSBo YXZlCisJICogdGhlIHNhbWUgTFNOLiAgV2UgZG9uJ3QgZ3VhcmFudGVlIHRoaXMgYXNzb2Np YXRpb24gdW50aWwgd2UgdHJ5IHRvCisJICogZGVjb2RlIHRoZSBhY3R1YWwgY29udGVudHMg b2YgdHJhbnNhY3Rpb24uIFRoZSBvcmRlcmluZyBvZiB0aGUgcmVjb3JkcworCSAqIHByaW9y IHRvIHRoZSBzdGFydF9kZWNvZGluZ19hdCBMU04gc2hvdWxkIGhhdmUgYmVlbiBjaGVja2Vk IGJlZm9yZSB0aGUKKwkgKiByZXN0YXJ0LgorCSAqLworCWlmIChTbmFwQnVpbGRYYWN0TmVl ZHNTa2lwKGN0eC0+c25hcHNob3RfYnVpbGRlciwgY3R4LT5yZWFkZXItPkVuZFJlY1B0cikp CisJCXJldHVybjsKKworCS8qCisJICogTWFrZSBzdXJlIHRoZSByZWxmaWxlbm9kZXMgZnJv bSBzdWJ4YWN0cyBhcmUgcHJvcGVybHkgcmVjb3JkZWQgaW4gdGhlCisJICogdG9wLWxldmVs IHRyYW5zYWN0aW9uIGhhc2ggdGFibGUuCisJICovCisJZGxpc3RfZm9yZWFjaChpdGVyLCAm cmItPnRvcGxldmVsX2J5X2xzbikKKwl7CisJCWludAkJCW5lbnRyaWVzID0gMCwKKwkJCQkJ bnN1YmVudHJpZXMgPSAwOworCQlkbGlzdF9pdGVyCXN1Yml0ZXI7CisJCVJlb3JkZXJCdWZm ZXJUWE4gKnR4biA9IGRsaXN0X2NvbnRhaW5lcihSZW9yZGVyQnVmZmVyVFhOLCBub2RlLAor CQkJCQkJCQkJCQkJaXRlci5jdXIpOworCisJCS8qCisJCSAqIFdlIGRvbid0IHNraXAgdG9w LWxldmVsIHRyYW5zYWN0aW9ucyB3aXRob3V0IHJlbGZpbGVub2RlcywgYmVjYXVzZQorCQkg KiB0aGVyZSBtaWdodCBiZSBhIHN1YnRyYW5zYWN0aW9uIHdpdGggc29tZSwgYW5kIHdlIHdh bnQgdG8gZGV0ZWN0CisJCSAqIHN1Y2ggY2FzZXMgdG9vLgorCQkgKi8KKwkJaWYgKHR4bi0+ c2VxdWVuY2VzX2hhc2gpCisJCQluZW50cmllcyA9IGhhc2hfZ2V0X251bV9lbnRyaWVzKHR4 bi0+c2VxdWVuY2VzX2hhc2gpOworCisJCS8qIHdhbGsgYWxsIHN1YnhhY3RzLCBhbmQgY2hl Y2sgdGhlIGhhc2ggdGFibGUgaW4gZWFjaCBvbmUgKi8KKwkJZGxpc3RfZm9yZWFjaChzdWJp dGVyLCAmdHhuLT5zdWJ0eG5zKQorCQl7CisJCQlIQVNIX1NFUV9TVEFUVVMgc2Nhbl9zdGF0 dXM7CisJCQlSZW9yZGVyQnVmZmVyU2VxdWVuY2VFbnQgKmVudHJ5OworCisJCQlSZW9yZGVy QnVmZmVyVFhOICpzdWJ0eG4gPSBkbGlzdF9jb250YWluZXIoUmVvcmRlckJ1ZmZlclRYTiwg bm9kZSwKKwkJCQkJCQkJCQkJCQkgICBzdWJpdGVyLmN1cik7CisKKwkJCS8qCisJCQkgKiBJ ZiB0aGlzIHN1YnhhY3QgaGFzIG5vIHJlbGZpbGVub2Rlcywgc2tpcCBpdC4gV2UnbGwgZG8g dGhlCisJCQkgKiBjaGVjayBpbiB0aGUgb3Bwb3NpdGUgZGlyZWN0aW9uICh0aGF0IGFsbCB0 b3AtbGV2ZWwKKwkJCSAqIHJlbGZpbGVub2RlcyBhcmUgaW4gdGhlIGNvcnJlY3Qgc3VieGFj dCkgbGF0ZXIuCisJCQkgKi8KKwkJCWlmICghc3VidHhuLT5zZXF1ZW5jZXNfaGFzaCkKKwkJ CQljb250aW51ZTsKKworCQkJLyogYWRkIG51bWJlciBvZiByZWxmaWxlbm9kZXMgaW4gdGhp cyBzdWJ4YWN0ICovCisJCQluc3ViZW50cmllcyArPSBoYXNoX2dldF9udW1fZW50cmllcyhz dWJ0eG4tPnNlcXVlbmNlc19oYXNoKTsKKworCQkJLyoKKwkJCSAqIENoZWNrIHRoYXQgYWxs IHN1YnhhY3QgcmVsZmlsZW5vZGVzIGFyZSBpbiB0aGUgdG9wLWxldmVsIHR4bgorCQkJICog dG9vLCBhbmQgYXJlIHBvaW50aW5nIHRvIHRoaXMgc3VidHJhbnNhY3Rpb24uCisJCQkgKi8K KwkJCWhhc2hfc2VxX2luaXQoJnNjYW5fc3RhdHVzLCBzdWJ0eG4tPnNlcXVlbmNlc19oYXNo KTsKKwkJCXdoaWxlICgoZW50cnkgPSAoUmVvcmRlckJ1ZmZlclNlcXVlbmNlRW50ICopIGhh c2hfc2VxX3NlYXJjaCgmc2Nhbl9zdGF0dXMpKSAhPSBOVUxMKQorCQkJeworCQkJCWJvb2wJ CWZvdW5kID0gZmFsc2U7CisJCQkJUmVvcmRlckJ1ZmZlclNlcXVlbmNlRW50ICpzdWJlbnRy eTsKKworCQkJCS8qIHNlYXJjaCBmb3IgdGhlIHNhbWUgcmVsZmlsZW5vZGUgaW4gdGhlIHRv cC1sZXZlbCB0eG4gKi8KKwkJCQlzdWJlbnRyeSA9IGhhc2hfc2VhcmNoKHR4bi0+c2VxdWVu Y2VzX2hhc2gsCisJCQkJCQkJCQkgICAodm9pZCAqKSAmZW50cnktPnJsb2NhdG9yLAorCQkJ CQkJCQkJICAgSEFTSF9GSU5ELAorCQkJCQkJCQkJICAgJmZvdW5kKTsKKworCQkJCS8qCisJ CQkJICogVGhlIHRvcC1sZXZlbCB0eG4gaGFzaCBzaG91bGQgaGF2ZSB0aGUgcmVsZmlsZW5v ZGUgdG9vLCBhbmQKKwkJCQkgKiBpdCBzaG91bGQgcG9pbnQgdG8gdGhpcyBzdWJ4YWN0Lgor CQkJCSAqLworCQkJCUFzc2VydChmb3VuZCk7CisKKwkJCQkvKgorCQkJCSAqIFRoZSBlbnRy eSBoYXMgdG8gcG9pbnQgdG8gdGhlIHN1YnhhY3QgLSB0aGVyZSdzIG5vIHN1YnhhY3QKKwkJ CQkgKiAiYmVsb3ciIHRoaXMgb25lIHRvIHdoaWNoIHRoZSByZWxmaWxlbm9kZSBjb3VsZCBi ZWxvbmcuCisJCQkJICovCisJCQkJQXNzZXJ0KHN1YmVudHJ5LT50eG4gPT0gc3VidHhuKTsK KwkJCX0KKwkJfQorCisJCS8qCisJCSAqIFdlIHNob3VsZG4ndCBoYXZlIG1vcmUgcmVsZmls ZW5vZGVzIGluIHN1YnRyYW5zYWN0aW9ucyB0aGFuIGluIHRoZQorCQkgKiB0b3AtbGV2ZWwg b25lLiBUaGVyZSBtaWdodCBiZSByZWxmaWxlbm9kZXMgaW4gdGhlIHRvcC1sZXZlbCBvbmUK KwkJICogZGlyZWN0bHksIHNvIHRoaXMgbmVlZHMgdG8gYmUgaW5lcXVhbGl0eS4KKwkJICov CisJCUFzc2VydChuZW50cmllcyA+PSBuc3ViZW50cmllcyk7CisKKwkJLyoKKwkJICogTm93 IGRvIHRoZSBjaGVjayBpbiB0aGUgb3Bwb3NpdGUgZGlyZWN0aW9uIC0gY2hlY2sgdGhhdCBl dmVyeSBlbnRyeQorCQkgKiBpbiB0aGUgdG9wLWxldmVsIHR4biAoZXhjZXB0IHRob3NlIHBv aW50aW5nIHRvIHRoZSB0b3AtbGV2ZWwgdHhuCisJCSAqIGl0c2VsZikgcG9pbnQgdG8gb25l IG9mIHRoZSBzdWJ4YWN0cywgYW5kIHRoZXJlJ3MgYW4gZW50cnkgaW4gdGhlCisJCSAqIHN1 YnhhY3QgaGFzaC4KKwkJICovCisJCWlmICh0eG4tPnNlcXVlbmNlc19oYXNoKQorCQl7CisJ CQlIQVNIX1NFUV9TVEFUVVMgc2Nhbl9zdGF0dXM7CisJCQlSZW9yZGVyQnVmZmVyU2VxdWVu Y2VFbnQgKmVudHJ5OworCisJCQloYXNoX3NlcV9pbml0KCZzY2FuX3N0YXR1cywgdHhuLT5z ZXF1ZW5jZXNfaGFzaCk7CisJCQl3aGlsZSAoKGVudHJ5ID0gKFJlb3JkZXJCdWZmZXJTZXF1 ZW5jZUVudCAqKSBoYXNoX3NlcV9zZWFyY2goJnNjYW5fc3RhdHVzKSkgIT0gTlVMTCkKKwkJ CXsKKwkJCQlib29sCQlmb3VuZCA9IGZhbHNlOworCQkJCVJlb3JkZXJCdWZmZXJTZXF1ZW5j ZUVudCAqc3ViZW50cnk7CisKKwkJCQkvKiBTa2lwIGVudHJpZXMgZm9yIHRoZSB0b3AtbGV2 ZWwgdHhuIGl0c2VsZi4gKi8KKwkJCQlpZiAoZW50cnktPnR4biA9PSB0eG4pCisJCQkJCWNv bnRpbnVlOworCisJCQkJLyogSXMgaXQgYSBzdWJ4YWN0IG9mIHRoaXMgdHhuPyAqLworCQkJ CUFzc2VydChyYnR4bl9pc19rbm93bl9zdWJ4YWN0KGVudHJ5LT50eG4pKTsKKwkJCQlBc3Nl cnQoZW50cnktPnR4bi0+dG9wdHhuID09IHR4bik7CisKKwkJCQkvKgorCQkJCSAqIFNlYXJj aCBmb3IgdGhlIHNhbWUgcmVsZmlsZW5vZGUgaW4gdGhlIHN1YnhhY3QgKGl0IHNob3VsZAor CQkJCSAqIGJlIGluaXRpYWxpemVkLCBhcyB3ZSBleHBlY3QgaXQgdG8gY29udGFpbiB0aGUK KwkJCQkgKiByZWxmaWxlbm9kZSkuCisJCQkJICovCisJCQkJc3ViZW50cnkgPSBoYXNoX3Nl YXJjaChlbnRyeS0+dHhuLT5zZXF1ZW5jZXNfaGFzaCwKKwkJCQkJCQkJCSAgICh2b2lkICop ICZlbnRyeS0+cmxvY2F0b3IsCisJCQkJCQkJCQkgICBIQVNIX0ZJTkQsCisJCQkJCQkJCQkg ICAmZm91bmQpOworCisJCQkJQXNzZXJ0KGZvdW5kKTsKKworCQkJCS8qCisJCQkJICogQ2hl Y2sgdGhlIHR4biBwb2ludGVyIGluIHRoZSB0b3AtbGV2ZWwgaGFzaCB0YWJsZSBlbnRyeSBp cworCQkJCSAqIGNvbnNpc3RlbnQgd2l0aCB0aGUgc3VieGFjdCBoYXNoIHRhYmxlICh3ZSBh bHJlYWR5IGNoZWNrZWQKKwkJCQkgKiB0aGUgc3VieGFjdCBlbnRyeSBwb2ludHMgdG8gdGhl IHN1YnhhY3QgaXRzZWxmKS4KKwkJCQkgKi8KKwkJCQlBc3NlcnQoc3ViZW50cnktPnR4biA9 IGVudHJ5LT50eG4pOworCQkJfQorCQl9CisJfQorI2VuZGlmCit9CisKIC8qCiAgKiBBc3Nl cnRDaGFuZ2VMc25PcmRlcgogICoKQEAgLTEwOTQsNiArMTY4Miw5IEBAIFJlb3JkZXJCdWZm ZXJBc3NpZ25DaGlsZChSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCB4aWQsCiAJ c3VidHhuLT50b3BsZXZlbF94aWQgPSB4aWQ7CiAJQXNzZXJ0KHN1YnR4bi0+bnN1YnR4bnMg PT0gMCk7CiAKKwkvKiBUaGVyZSBzaG91bGQgYmUgbm8gc2VxdWVuY2UgcmVsZmlsZW5vZGVz IGluIHRoZSBzdWJ4YWN0IHlldC4gKi8KKwlBc3NlcnQoIXN1YnR4bi0+c2VxdWVuY2VzX2hh c2gpOworCiAJLyogc2V0IHRoZSByZWZlcmVuY2UgdG8gdG9wLWxldmVsIHRyYW5zYWN0aW9u ICovCiAJc3VidHhuLT50b3B0eG4gPSB0eG47CiAKQEAgLTE5OTcsNiArMjU4OCwzNSBAQCBS ZW9yZGVyQnVmZmVyQXBwbHlNZXNzYWdlKFJlb3JkZXJCdWZmZXIgKnJiLCBSZW9yZGVyQnVm ZmVyVFhOICp0eG4sCiAJCQkJCWNoYW5nZS0+ZGF0YS5tc2cubWVzc2FnZSk7CiB9CiAKKy8q CisgKiBIZWxwZXIgZnVuY3Rpb24gZm9yIFJlb3JkZXJCdWZmZXJQcm9jZXNzVFhOIGZvciBh cHBseWluZyBzZXF1ZW5jZXMuCisgKi8KK3N0YXRpYyBpbmxpbmUgdm9pZAorUmVvcmRlckJ1 ZmZlckFwcGx5U2VxdWVuY2UoUmVvcmRlckJ1ZmZlciAqcmIsIFJlb3JkZXJCdWZmZXJUWE4g KnR4biwKKwkJCQkJCSAgIFJlbGF0aW9uIHJlbGF0aW9uLCBSZW9yZGVyQnVmZmVyQ2hhbmdl ICpjaGFuZ2UsCisJCQkJCQkgICBib29sIHN0cmVhbWluZykKK3sKKwlIZWFwVHVwbGUJdHVw bGU7CisJRm9ybV9wZ19zZXF1ZW5jZV9kYXRhIHNlcTsKKwlpbnQ2NAkJdmFsdWU7CisKKwl0 dXBsZSA9ICZjaGFuZ2UtPmRhdGEuc2VxdWVuY2UudHVwbGUtPnR1cGxlOworCXNlcSA9IChG b3JtX3BnX3NlcXVlbmNlX2RhdGEpIEdFVFNUUlVDVCh0dXBsZSk7CisKKwl2YWx1ZSA9IHNl cS0+bGFzdF92YWx1ZTsKKwl2YWx1ZSArPSAoc2VxLT5pc19jYWxsZWQpID8gc2VxLT5sb2df Y250IDogMDsKKworCS8qCisJICogV2hlbiBjYWxsZWQgZnJvbSBSZW9yZGVyQnVmZmVyQXBw bHlTZXF1ZW5jZSwgd2UncmUgYXBwbHlpbmcgY2hhbmdlcworCSAqIGFjY3VtdWxhdGVkIGlu IGEgUmVvcmRlckJ1ZmZlclRYTiwgc28gYWxsIHRob3NlIGFyZSB0cmFuc2FjdGlvbmFsCisJ ICogY2hhbmdlcyBvZiBzZXF1ZW5jZXMuCisJICovCisJaWYgKHN0cmVhbWluZykKKwkJcmIt PnN0cmVhbV9zZXF1ZW5jZShyYiwgdHhuLCBjaGFuZ2UtPmxzbiwgcmVsYXRpb24sIHRydWUs IHZhbHVlKTsKKwllbHNlCisJCXJiLT5zZXF1ZW5jZShyYiwgdHhuLCBjaGFuZ2UtPmxzbiwg cmVsYXRpb24sIHRydWUsIHZhbHVlKTsKK30KKwogLyoKICAqIEZ1bmN0aW9uIHRvIHN0b3Jl IHRoZSBjb21tYW5kIGlkIGFuZCBzbmFwc2hvdCBhdCB0aGUgZW5kIG9mIHRoZSBjdXJyZW50 CiAgKiBzdHJlYW0gc28gdGhhdCB3ZSBjYW4gcmV1c2UgdGhlIHNhbWUgd2hpbGUgc2VuZGlu ZyB0aGUgbmV4dCBzdHJlYW0uCkBAIC0yNDQyLDYgKzMwNjIsMzEgQEAgUmVvcmRlckJ1ZmZl clByb2Nlc3NUWE4oUmVvcmRlckJ1ZmZlciAqcmIsIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwK IAkJCQljYXNlIFJFT1JERVJfQlVGRkVSX0NIQU5HRV9JTlRFUk5BTF9UVVBMRUNJRDoKIAkJ CQkJZWxvZyhFUlJPUiwgInR1cGxlY2lkIHZhbHVlIGluIGNoYW5nZXF1ZXVlIik7CiAJCQkJ CWJyZWFrOworCisJCQkJY2FzZSBSRU9SREVSX0JVRkZFUl9DSEFOR0VfU0VRVUVOQ0U6CisJ CQkJCUFzc2VydChzbmFwc2hvdF9ub3cpOworCisJCQkJCXJlbG9pZCA9IFJlbGlkQnlSZWxm aWxlbnVtYmVyKGNoYW5nZS0+ZGF0YS5zZXF1ZW5jZS5sb2NhdG9yLnNwY09pZCwKKwkJCQkJ CQkJCQkJCSAgY2hhbmdlLT5kYXRhLnNlcXVlbmNlLmxvY2F0b3IucmVsTnVtYmVyKTsKKwor CQkJCQlpZiAocmVsb2lkID09IEludmFsaWRPaWQpCisJCQkJCQllbG9nKEVSUk9SLCAiY291 bGQgbm90IG1hcCBmaWxlbm9kZSBcIiVzXCIgdG8gcmVsYXRpb24gT0lEIiwKKwkJCQkJCQkg cmVscGF0aHBlcm0oY2hhbmdlLT5kYXRhLnNlcXVlbmNlLmxvY2F0b3IsCisJCQkJCQkJCQkJ IE1BSU5fRk9SS05VTSkpOworCisJCQkJCXJlbGF0aW9uID0gUmVsYXRpb25JZEdldFJlbGF0 aW9uKHJlbG9pZCk7CisKKwkJCQkJaWYgKCFSZWxhdGlvbklzVmFsaWQocmVsYXRpb24pKQor CQkJCQkJZWxvZyhFUlJPUiwgImNvdWxkIG5vdCBvcGVuIHJlbGF0aW9uIHdpdGggT0lEICV1 IChmb3IgZmlsZW5vZGUgXCIlc1wiKSIsCisJCQkJCQkJIHJlbG9pZCwKKwkJCQkJCQkgcmVs cGF0aHBlcm0oY2hhbmdlLT5kYXRhLnNlcXVlbmNlLmxvY2F0b3IsCisJCQkJCQkJCQkJIE1B SU5fRk9SS05VTSkpOworCisJCQkJCWlmIChSZWxhdGlvbklzTG9naWNhbGx5TG9nZ2VkKHJl bGF0aW9uKSkKKwkJCQkJCVJlb3JkZXJCdWZmZXJBcHBseVNlcXVlbmNlKHJiLCB0eG4sIHJl bGF0aW9uLCBjaGFuZ2UsIHN0cmVhbWluZyk7CisKKwkJCQkJUmVsYXRpb25DbG9zZShyZWxh dGlvbik7CisJCQkJCWJyZWFrOwogCQkJfQogCiAJCQkvKgpAQCAtMjg3Miw2ICszNTE3LDEw IEBAIFJlb3JkZXJCdWZmZXJGaW5pc2hQcmVwYXJlZChSZW9yZGVyQnVmZmVyICpyYiwgVHJh bnNhY3Rpb25JZCB4aWQsCiAJLyogY2xlYW51cDogbWFrZSBzdXJlIHRoZXJlJ3Mgbm8gY2Fj aGUgcG9sbHV0aW9uICovCiAJUmVvcmRlckJ1ZmZlckV4ZWN1dGVJbnZhbGlkYXRpb25zKHR4 bi0+bmludmFsaWRhdGlvbnMsCiAJCQkJCQkJCQkgIHR4bi0+aW52YWxpZGF0aW9ucyk7CisK KwkvKiBjbGVhbnVwOiByZW1vdmUgc2VxdWVuY2UgcmVsZmlsZW5vZGVzIGZyb20gdGhlIHRv cC1sZXZlbCB0eG4gKi8KKwlSZW9yZGVyQnVmZmVyU2VxdWVuY2VDbGVhbnVwKHR4bik7CisK IAlSZW9yZGVyQnVmZmVyQ2xlYW51cFRYTihyYiwgdHhuKTsKIH0KIApAQCAtMjkyMSw4ICsz NTcwLDEzIEBAIFJlb3JkZXJCdWZmZXJBYm9ydChSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNh Y3Rpb25JZCB4aWQsIFhMb2dSZWNQdHIgbHNuLAogCS8qIGNvc21ldGljLi4uICovCiAJdHhu LT5maW5hbF9sc24gPSBsc247CiAKKwkvKiByZW1vdmUgc2VxdWVuY2UgcmVsZmlsZW5vZGVz IGZyb20gdGhlIHRvcC1sZXZlbCB0eG4gKi8KKwlSZW9yZGVyQnVmZmVyU2VxdWVuY2VDbGVh bnVwKHR4bik7CisKIAkvKiByZW1vdmUgcG90ZW50aWFsIG9uLWRpc2sgZGF0YSwgYW5kIGRl YWxsb2NhdGUgKi8KIAlSZW9yZGVyQnVmZmVyQ2xlYW51cFRYTihyYiwgdHhuKTsKKworCUFz c2VydENoZWNrU2VxdWVuY2VzKHJiKTsKIH0KIAogLyoKQEAgLTI5NTgsOCArMzYxMiwxMyBA QCBSZW9yZGVyQnVmZmVyQWJvcnRPbGQoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9u SWQgb2xkZXN0UnVubmluZ1hpZCkKIAkJCWlmIChyYnR4bl9pc19zdHJlYW1lZCh0eG4pKQog CQkJCXJiLT5zdHJlYW1fYWJvcnQocmIsIHR4biwgSW52YWxpZFhMb2dSZWNQdHIpOwogCisJ CQkvKiByZW1vdmUgc2VxdWVuY2UgcmVsZmlsZW5vZGVzIGZyb20gdGhlIHRvcC1sZXZlbCB0 eG4gKi8KKwkJCVJlb3JkZXJCdWZmZXJTZXF1ZW5jZUNsZWFudXAodHhuKTsKKwogCQkJLyog cmVtb3ZlIHBvdGVudGlhbCBvbi1kaXNrIGRhdGEsIGFuZCBkZWFsbG9jYXRlIHRoaXMgdHgg Ki8KIAkJCVJlb3JkZXJCdWZmZXJDbGVhbnVwVFhOKHJiLCB0eG4pOworCisJCQlBc3NlcnRD aGVja1NlcXVlbmNlcyhyYik7CiAJCX0KIAkJZWxzZQogCQkJcmV0dXJuOwpAQCAtMzAwOCw2 ICszNjY3LDkgQEAgUmVvcmRlckJ1ZmZlckZvcmdldChSZW9yZGVyQnVmZmVyICpyYiwgVHJh bnNhY3Rpb25JZCB4aWQsIFhMb2dSZWNQdHIgbHNuKQogCWVsc2UKIAkJQXNzZXJ0KHR4bi0+ bmludmFsaWRhdGlvbnMgPT0gMCk7CiAKKwkvKiByZW1vdmUgc2VxdWVuY2UgcmVsZmlsZW5v ZGVzIGZyb20gYSB0b3AtbGV2ZWwgdHhuICovCisJUmVvcmRlckJ1ZmZlclNlcXVlbmNlQ2xl YW51cCh0eG4pOworCiAJLyogcmVtb3ZlIHBvdGVudGlhbCBvbi1kaXNrIGRhdGEsIGFuZCBk ZWFsbG9jYXRlICovCiAJUmVvcmRlckJ1ZmZlckNsZWFudXBUWE4ocmIsIHR4bik7CiB9CkBA IC0zOTA5LDYgKzQ1NzEsMzkgQEAgUmVvcmRlckJ1ZmZlclNlcmlhbGl6ZUNoYW5nZShSZW9y ZGVyQnVmZmVyICpyYiwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAogCQkJCW1lbWNweShkYXRh LCBjaGFuZ2UtPmRhdGEudHJ1bmNhdGUucmVsaWRzLCBzaXplKTsKIAkJCQlkYXRhICs9IHNp emU7CiAKKwkJCQlicmVhazsKKwkJCX0KKwkJY2FzZSBSRU9SREVSX0JVRkZFUl9DSEFOR0Vf U0VRVUVOQ0U6CisJCQl7CisJCQkJY2hhcgkgICAqZGF0YTsKKwkJCQlSZW9yZGVyQnVmZmVy VHVwbGVCdWYgKnR1cDsKKwkJCQlTaXplCQlsZW4gPSAwOworCisJCQkJdHVwID0gY2hhbmdl LT5kYXRhLnNlcXVlbmNlLnR1cGxlOworCisJCQkJaWYgKHR1cCkKKwkJCQl7CisJCQkJCXN6 ICs9IHNpemVvZihIZWFwVHVwbGVEYXRhKTsKKwkJCQkJbGVuID0gdHVwLT50dXBsZS50X2xl bjsKKwkJCQkJc3ogKz0gbGVuOworCQkJCX0KKworCQkJCS8qIG1ha2Ugc3VyZSB3ZSBoYXZl IGVub3VnaCBzcGFjZSAqLworCQkJCVJlb3JkZXJCdWZmZXJTZXJpYWxpemVSZXNlcnZlKHJi LCBzeik7CisKKwkJCQlkYXRhID0gKChjaGFyICopIHJiLT5vdXRidWYpICsgc2l6ZW9mKFJl b3JkZXJCdWZmZXJEaXNrQ2hhbmdlKTsKKwkJCQkvKiBtaWdodCBoYXZlIGJlZW4gcmVhbGxv Y2F0ZWQgYWJvdmUgKi8KKwkJCQlvbmRpc2sgPSAoUmVvcmRlckJ1ZmZlckRpc2tDaGFuZ2Ug KikgcmItPm91dGJ1ZjsKKworCQkJCWlmIChsZW4pCisJCQkJeworCQkJCQltZW1jcHkoZGF0 YSwgJnR1cC0+dHVwbGUsIHNpemVvZihIZWFwVHVwbGVEYXRhKSk7CisJCQkJCWRhdGEgKz0g c2l6ZW9mKEhlYXBUdXBsZURhdGEpOworCisJCQkJCW1lbWNweShkYXRhLCB0dXAtPnR1cGxl LnRfZGF0YSwgbGVuKTsKKwkJCQkJZGF0YSArPSBsZW47CisJCQkJfQorCiAJCQkJYnJlYWs7 CiAJCQl9CiAJCWNhc2UgUkVPUkRFUl9CVUZGRVJfQ0hBTkdFX0lOVEVSTkFMX1NQRUNfQ09O RklSTToKQEAgLTQxNzMsNiArNDg2OCwyMiBAQCBSZW9yZGVyQnVmZmVyQ2hhbmdlU2l6ZShS ZW9yZGVyQnVmZmVyQ2hhbmdlICpjaGFuZ2UpCiAJCQl7CiAJCQkJc3ogKz0gc2l6ZW9mKE9p ZCkgKiBjaGFuZ2UtPmRhdGEudHJ1bmNhdGUubnJlbGlkczsKIAorCQkJCWJyZWFrOworCQkJ fQorCQljYXNlIFJFT1JERVJfQlVGRkVSX0NIQU5HRV9TRVFVRU5DRToKKwkJCXsKKwkJCQlS ZW9yZGVyQnVmZmVyVHVwbGVCdWYgKnR1cDsKKwkJCQlTaXplCQlsZW4gPSAwOworCisJCQkJ dHVwID0gY2hhbmdlLT5kYXRhLnNlcXVlbmNlLnR1cGxlOworCisJCQkJaWYgKHR1cCkKKwkJ CQl7CisJCQkJCXN6ICs9IHNpemVvZihIZWFwVHVwbGVEYXRhKTsKKwkJCQkJbGVuID0gdHVw LT50dXBsZS50X2xlbjsKKwkJCQkJc3ogKz0gbGVuOworCQkJCX0KKwogCQkJCWJyZWFrOwog CQkJfQogCQljYXNlIFJFT1JERVJfQlVGRkVSX0NIQU5HRV9JTlRFUk5BTF9TUEVDX0NPTkZJ Uk06CkBAIC00NDc2LDYgKzUxODcsMzAgQEAgUmVvcmRlckJ1ZmZlclJlc3RvcmVDaGFuZ2Uo UmVvcmRlckJ1ZmZlciAqcmIsIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKIAogCQkJCWJyZWFr OwogCQkJfQorCisJCWNhc2UgUkVPUkRFUl9CVUZGRVJfQ0hBTkdFX1NFUVVFTkNFOgorCQkJ aWYgKGNoYW5nZS0+ZGF0YS5zZXF1ZW5jZS50dXBsZSkKKwkJCXsKKwkJCQl1aW50MzIJCXR1 cGxlbGVuID0gKChIZWFwVHVwbGUpIGRhdGEpLT50X2xlbjsKKworCQkJCWNoYW5nZS0+ZGF0 YS5zZXF1ZW5jZS50dXBsZSA9CisJCQkJCVJlb3JkZXJCdWZmZXJHZXRUdXBsZUJ1ZihyYiwg dHVwbGVsZW4gLSBTaXplb2ZIZWFwVHVwbGVIZWFkZXIpOworCisJCQkJLyogcmVzdG9yZSAt PnR1cGxlICovCisJCQkJbWVtY3B5KCZjaGFuZ2UtPmRhdGEuc2VxdWVuY2UudHVwbGUtPnR1 cGxlLCBkYXRhLAorCQkJCQkgICBzaXplb2YoSGVhcFR1cGxlRGF0YSkpOworCQkJCWRhdGEg Kz0gc2l6ZW9mKEhlYXBUdXBsZURhdGEpOworCisJCQkJLyogcmVzZXQgdF9kYXRhIHBvaW50 ZXIgaW50byB0aGUgbmV3IHR1cGxlYnVmICovCisJCQkJY2hhbmdlLT5kYXRhLnNlcXVlbmNl LnR1cGxlLT50dXBsZS50X2RhdGEgPQorCQkJCQlSZW9yZGVyQnVmZmVyVHVwbGVCdWZEYXRh KGNoYW5nZS0+ZGF0YS5zZXF1ZW5jZS50dXBsZSk7CisKKwkJCQkvKiByZXN0b3JlIHR1cGxl IGRhdGEgaXRzZWxmICovCisJCQkJbWVtY3B5KGNoYW5nZS0+ZGF0YS5zZXF1ZW5jZS50dXBs ZS0+dHVwbGUudF9kYXRhLCBkYXRhLCB0dXBsZWxlbik7CisJCQkJZGF0YSArPSB0dXBsZWxl bjsKKwkJCX0KKwkJCWJyZWFrOworCiAJCWNhc2UgUkVPUkRFUl9CVUZGRVJfQ0hBTkdFX0lO VEVSTkFMX1NQRUNfQ09ORklSTToKIAkJY2FzZSBSRU9SREVSX0JVRkZFUl9DSEFOR0VfSU5U RVJOQUxfU1BFQ19BQk9SVDoKIAkJY2FzZSBSRU9SREVSX0JVRkZFUl9DSEFOR0VfSU5URVJO QUxfQ09NTUFORF9JRDoKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9ybWdybGlz dC5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3JtZ3JsaXN0LmgKaW5kZXggNDYzYmNiNjdjNTcu LjMwNWNhNDlhNTVmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3Mvcm1ncmxpc3Qu aAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3Mvcm1ncmxpc3QuaApAQCAtMjcsNyArMjcsNyBA QAogLyogc3ltYm9sIG5hbWUsIHRleHR1YWwgbmFtZSwgcmVkbywgZGVzYywgaWRlbnRpZnks IHN0YXJ0dXAsIGNsZWFudXAsIG1hc2ssIGRlY29kZSAqLwogUEdfUk1HUihSTV9YTE9HX0lE LCAiWExPRyIsIHhsb2dfcmVkbywgeGxvZ19kZXNjLCB4bG9nX2lkZW50aWZ5LCBOVUxMLCBO VUxMLCBOVUxMLCB4bG9nX2RlY29kZSkKIFBHX1JNR1IoUk1fWEFDVF9JRCwgIlRyYW5zYWN0 aW9uIiwgeGFjdF9yZWRvLCB4YWN0X2Rlc2MsIHhhY3RfaWRlbnRpZnksIE5VTEwsIE5VTEws IE5VTEwsIHhhY3RfZGVjb2RlKQotUEdfUk1HUihSTV9TTUdSX0lELCAiU3RvcmFnZSIsIHNt Z3JfcmVkbywgc21ncl9kZXNjLCBzbWdyX2lkZW50aWZ5LCBOVUxMLCBOVUxMLCBOVUxMLCBO VUxMKQorUEdfUk1HUihSTV9TTUdSX0lELCAiU3RvcmFnZSIsIHNtZ3JfcmVkbywgc21ncl9k ZXNjLCBzbWdyX2lkZW50aWZ5LCBOVUxMLCBOVUxMLCBOVUxMLCBzbWdyX2RlY29kZSkKIFBH X1JNR1IoUk1fQ0xPR19JRCwgIkNMT0ciLCBjbG9nX3JlZG8sIGNsb2dfZGVzYywgY2xvZ19p ZGVudGlmeSwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCkKIFBHX1JNR1IoUk1fREJBU0VfSUQs ICJEYXRhYmFzZSIsIGRiYXNlX3JlZG8sIGRiYXNlX2Rlc2MsIGRiYXNlX2lkZW50aWZ5LCBO VUxMLCBOVUxMLCBOVUxMLCBOVUxMKQogUEdfUk1HUihSTV9UQkxTUENfSUQsICJUYWJsZXNw YWNlIiwgdGJsc3BjX3JlZG8sIHRibHNwY19kZXNjLCB0YmxzcGNfaWRlbnRpZnksIE5VTEws IE5VTEwsIE5VTEwsIE5VTEwpCkBAIC00MCw3ICs0MCw3IEBAIFBHX1JNR1IoUk1fQlRSRUVf SUQsICJCdHJlZSIsIGJ0cmVlX3JlZG8sIGJ0cmVlX2Rlc2MsIGJ0cmVlX2lkZW50aWZ5LCBi dHJlZV94bG9nCiBQR19STUdSKFJNX0hBU0hfSUQsICJIYXNoIiwgaGFzaF9yZWRvLCBoYXNo X2Rlc2MsIGhhc2hfaWRlbnRpZnksIE5VTEwsIE5VTEwsIGhhc2hfbWFzaywgTlVMTCkKIFBH X1JNR1IoUk1fR0lOX0lELCAiR2luIiwgZ2luX3JlZG8sIGdpbl9kZXNjLCBnaW5faWRlbnRp ZnksIGdpbl94bG9nX3N0YXJ0dXAsIGdpbl94bG9nX2NsZWFudXAsIGdpbl9tYXNrLCBOVUxM KQogUEdfUk1HUihSTV9HSVNUX0lELCAiR2lzdCIsIGdpc3RfcmVkbywgZ2lzdF9kZXNjLCBn aXN0X2lkZW50aWZ5LCBnaXN0X3hsb2dfc3RhcnR1cCwgZ2lzdF94bG9nX2NsZWFudXAsIGdp c3RfbWFzaywgTlVMTCkKLVBHX1JNR1IoUk1fU0VRX0lELCAiU2VxdWVuY2UiLCBzZXFfcmVk bywgc2VxX2Rlc2MsIHNlcV9pZGVudGlmeSwgTlVMTCwgTlVMTCwgc2VxX21hc2ssIE5VTEwp CitQR19STUdSKFJNX1NFUV9JRCwgIlNlcXVlbmNlIiwgc2VxX3JlZG8sIHNlcV9kZXNjLCBz ZXFfaWRlbnRpZnksIE5VTEwsIE5VTEwsIHNlcV9tYXNrLCBzZXFfZGVjb2RlKQogUEdfUk1H UihSTV9TUEdJU1RfSUQsICJTUEdpc3QiLCBzcGdfcmVkbywgc3BnX2Rlc2MsIHNwZ19pZGVu dGlmeSwgc3BnX3hsb2dfc3RhcnR1cCwgc3BnX3hsb2dfY2xlYW51cCwgc3BnX21hc2ssIE5V TEwpCiBQR19STUdSKFJNX0JSSU5fSUQsICJCUklOIiwgYnJpbl9yZWRvLCBicmluX2Rlc2Ms IGJyaW5faWRlbnRpZnksIE5VTEwsIE5VTEwsIGJyaW5fbWFzaywgTlVMTCkKIFBHX1JNR1Io Uk1fQ09NTUlUX1RTX0lELCAiQ29tbWl0VHMiLCBjb21taXRfdHNfcmVkbywgY29tbWl0X3Rz X2Rlc2MsIGNvbW1pdF90c19pZGVudGlmeSwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCkKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2RlY29kZS5oIGIvc3JjL2luY2x1 ZGUvcmVwbGljYXRpb24vZGVjb2RlLmgKaW5kZXggMTRmYTkyMWFiNDcuLjhkMDYyNDcxNjVi IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9kZWNvZGUuaAorKysgYi9z cmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9kZWNvZGUuaApAQCAtMjcsNiArMjcsOCBAQCBleHRl cm4gdm9pZCBoZWFwMl9kZWNvZGUoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBYTG9n UmVjb3JkQnVmZmVyICpidWYpOwogZXh0ZXJuIHZvaWQgeGFjdF9kZWNvZGUoTG9naWNhbERl Y29kaW5nQ29udGV4dCAqY3R4LCBYTG9nUmVjb3JkQnVmZmVyICpidWYpOwogZXh0ZXJuIHZv aWQgc3RhbmRieV9kZWNvZGUoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBYTG9nUmVj b3JkQnVmZmVyICpidWYpOwogZXh0ZXJuIHZvaWQgbG9naWNhbG1zZ19kZWNvZGUoTG9naWNh bERlY29kaW5nQ29udGV4dCAqY3R4LCBYTG9nUmVjb3JkQnVmZmVyICpidWYpOworZXh0ZXJu IHZvaWQgc2VxX2RlY29kZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFhMb2dSZWNv cmRCdWZmZXIgKmJ1Zik7CitleHRlcm4gdm9pZCBzbWdyX2RlY29kZShMb2dpY2FsRGVjb2Rp bmdDb250ZXh0ICpjdHgsIFhMb2dSZWNvcmRCdWZmZXIgKmJ1Zik7CiAKIGV4dGVybiB2b2lk IExvZ2ljYWxEZWNvZGluZ1Byb2Nlc3NSZWNvcmQoTG9naWNhbERlY29kaW5nQ29udGV4dCAq Y3R4LAogCQkJCQkJCQkJCSBYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCk7CmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FsLmggYi9zcmMvaW5jbHVkZS9yZXBs aWNhdGlvbi9sb2dpY2FsLmgKaW5kZXggZGZmYzBkMTU2NDguLjcyYTE3MTEyZWZlIDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FsLmgKKysrIGIvc3JjL2lu Y2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbC5oCkBAIC05MCw2ICs5MCwxMSBAQCB0eXBlZGVm IHN0cnVjdCBMb2dpY2FsRGVjb2RpbmdDb250ZXh0CiAJICovCiAJYm9vbAkJdHdvcGhhc2U7 CiAKKwkvKgorCSAqIERvZXMgdGhlIG91dHB1dCBwbHVnaW5nIHN1cHBvcnQgZGVjb2Rpbmcg b2Ygc2VxdWVuY2UgY2hhbmdlcz8KKwkgKi8KKwlib29sCQlzZXF1ZW5jZXM7CisKIAkvKgog CSAqIElzIHR3by1waGFzZSBvcHRpb24gZ2l2ZW4gYnkgb3V0cHV0IHBsdWdpbj8KIAkgKgpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vb3V0cHV0X3BsdWdpbi5oIGIv c3JjL2luY2x1ZGUvcmVwbGljYXRpb24vb3V0cHV0X3BsdWdpbi5oCmluZGV4IDJmZmNmMTc1 MDVmLi43YjUwODVmN2QwMCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24v b3V0cHV0X3BsdWdpbi5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL291dHB1dF9w bHVnaW4uaApAQCAtOTAsNiArOTAsMTYgQEAgdHlwZWRlZiB2b2lkICgqTG9naWNhbERlY29k ZU1lc3NhZ2VDQikgKHN0cnVjdCBMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsCiAJCQkJ CQkJCQkJU2l6ZSBtZXNzYWdlX3NpemUsCiAJCQkJCQkJCQkJY29uc3QgY2hhciAqbWVzc2Fn ZSk7CiAKKy8qCisgKiBDYWxsZWQgZm9yIHRoZSBnZW5lcmljIGxvZ2ljYWwgZGVjb2Rpbmcg c2VxdWVuY2VzLgorICovCit0eXBlZGVmIHZvaWQgKCpMb2dpY2FsRGVjb2RlU2VxdWVuY2VD QikgKHN0cnVjdCBMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsCisJCQkJCQkJCQkJIFJl b3JkZXJCdWZmZXJUWE4gKnR4biwKKwkJCQkJCQkJCQkgWExvZ1JlY1B0ciBzZXF1ZW5jZV9s c24sCisJCQkJCQkJCQkJIFJlbGF0aW9uIHJlbCwKKwkJCQkJCQkJCQkgYm9vbCB0cmFuc2Fj dGlvbmFsLAorCQkJCQkJCQkJCSBpbnQ2NCB2YWx1ZSk7CisKIC8qCiAgKiBGaWx0ZXIgY2hh bmdlcyBieSBvcmlnaW4uCiAgKi8KQEAgLTIwMSw2ICsyMTEsMTcgQEAgdHlwZWRlZiB2b2lk ICgqTG9naWNhbERlY29kZVN0cmVhbU1lc3NhZ2VDQikgKHN0cnVjdCBMb2dpY2FsRGVjb2Rp bmdDb250ZXh0ICpjdHgKIAkJCQkJCQkJCQkJICBTaXplIG1lc3NhZ2Vfc2l6ZSwKIAkJCQkJ CQkJCQkJICBjb25zdCBjaGFyICptZXNzYWdlKTsKIAorLyoKKyAqIENhbGxlZCBmb3IgdGhl IHN0cmVhbWluZyBnZW5lcmljIGxvZ2ljYWwgZGVjb2Rpbmcgc2VxdWVuY2VzIGZyb20gaW4t cHJvZ3Jlc3MKKyAqIHRyYW5zYWN0aW9ucy4KKyAqLwordHlwZWRlZiB2b2lkICgqTG9naWNh bERlY29kZVN0cmVhbVNlcXVlbmNlQ0IpIChzdHJ1Y3QgTG9naWNhbERlY29kaW5nQ29udGV4 dCAqY3R4LAorCQkJCQkJCQkJCQkgICBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCisJCQkJCQkJ CQkJCSAgIFhMb2dSZWNQdHIgc2VxdWVuY2VfbHNuLAorCQkJCQkJCQkJCQkgICBSZWxhdGlv biByZWwsCisJCQkJCQkJCQkJCSAgIGJvb2wgdHJhbnNhY3Rpb25hbCwKKwkJCQkJCQkJCQkJ ICAgaW50NjQgdmFsdWUpOworCiAvKgogICogQ2FsbGJhY2sgZm9yIHN0cmVhbWluZyB0cnVu Y2F0ZXMgZnJvbSBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbnMuCiAgKi8KQEAgLTIyMSw2ICsy NDIsNyBAQCB0eXBlZGVmIHN0cnVjdCBPdXRwdXRQbHVnaW5DYWxsYmFja3MKIAlMb2dpY2Fs RGVjb2RlVHJ1bmNhdGVDQiB0cnVuY2F0ZV9jYjsKIAlMb2dpY2FsRGVjb2RlQ29tbWl0Q0Ig Y29tbWl0X2NiOwogCUxvZ2ljYWxEZWNvZGVNZXNzYWdlQ0IgbWVzc2FnZV9jYjsKKwlMb2dp Y2FsRGVjb2RlU2VxdWVuY2VDQiBzZXF1ZW5jZV9jYjsKIAlMb2dpY2FsRGVjb2RlRmlsdGVy QnlPcmlnaW5DQiBmaWx0ZXJfYnlfb3JpZ2luX2NiOwogCUxvZ2ljYWxEZWNvZGVTaHV0ZG93 bkNCIHNodXRkb3duX2NiOwogCkBAIC0yMzksNiArMjYxLDcgQEAgdHlwZWRlZiBzdHJ1Y3Qg T3V0cHV0UGx1Z2luQ2FsbGJhY2tzCiAJTG9naWNhbERlY29kZVN0cmVhbUNvbW1pdENCIHN0 cmVhbV9jb21taXRfY2I7CiAJTG9naWNhbERlY29kZVN0cmVhbUNoYW5nZUNCIHN0cmVhbV9j aGFuZ2VfY2I7CiAJTG9naWNhbERlY29kZVN0cmVhbU1lc3NhZ2VDQiBzdHJlYW1fbWVzc2Fn ZV9jYjsKKwlMb2dpY2FsRGVjb2RlU3RyZWFtU2VxdWVuY2VDQiBzdHJlYW1fc2VxdWVuY2Vf Y2I7CiAJTG9naWNhbERlY29kZVN0cmVhbVRydW5jYXRlQ0Igc3RyZWFtX3RydW5jYXRlX2Ni OwogfSBPdXRwdXRQbHVnaW5DYWxsYmFja3M7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L3JlcGxpY2F0aW9uL3Jlb3JkZXJidWZmZXIuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9u L3Jlb3JkZXJidWZmZXIuaAppbmRleCBmOTg2MTAxZTUwZC4uNThhOTliNzQwNjAgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Jlb3JkZXJidWZmZXIuaAorKysgYi9z cmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9yZW9yZGVyYnVmZmVyLmgKQEAgLTc0LDYgKzc0LDcg QEAgdHlwZWRlZiBlbnVtIFJlb3JkZXJCdWZmZXJDaGFuZ2VUeXBlCiAJUkVPUkRFUl9CVUZG RVJfQ0hBTkdFX0lOVEVSTkFMX1NQRUNfQ09ORklSTSwKIAlSRU9SREVSX0JVRkZFUl9DSEFO R0VfSU5URVJOQUxfU1BFQ19BQk9SVCwKIAlSRU9SREVSX0JVRkZFUl9DSEFOR0VfVFJVTkNB VEUsCisJUkVPUkRFUl9CVUZGRVJfQ0hBTkdFX1NFUVVFTkNFLAogfSBSZW9yZGVyQnVmZmVy Q2hhbmdlVHlwZTsKIAogLyogZm9yd2FyZCBkZWNsYXJhdGlvbiAqLwpAQCAtMTY3LDYgKzE2 OCwxMyBAQCB0eXBlZGVmIHN0cnVjdCBSZW9yZGVyQnVmZmVyQ2hhbmdlCiAJCQl1aW50MzIJ CW5pbnZhbGlkYXRpb25zOyAvKiBOdW1iZXIgb2YgbWVzc2FnZXMgKi8KIAkJCVNoYXJlZElu dmFsaWRhdGlvbk1lc3NhZ2UgKmludmFsaWRhdGlvbnM7CS8qIGludmFsaWRhdGlvbiBtZXNz YWdlICovCiAJCX0JCQlpbnZhbDsKKworCQkvKiBDb250ZXh0IGRhdGEgZm9yIFNlcXVlbmNl IGNoYW5nZXMgKi8KKwkJc3RydWN0CisJCXsKKwkJCVJlbEZpbGVMb2NhdG9yIGxvY2F0b3I7 CisJCQlSZW9yZGVyQnVmZmVyVHVwbGVCdWYgKnR1cGxlOworCQl9CQkJc2VxdWVuY2U7CiAJ fQkJCWRhdGE7CiAKIAkvKgpAQCAtMzkyLDYgKzQwMCwxMiBAQCB0eXBlZGVmIHN0cnVjdCBS ZW9yZGVyQnVmZmVyVFhOCiAJICovCiAJSFRBQgkgICAqdG9hc3RfaGFzaDsKIAorCS8qCisJ ICogU2VxdWVuY2UgcmVsZmlsZW5vZGVzIGNyZWF0ZWQgaW4gdGhpcyB0cmFuc2FjdGlvbiAo YWxzbyBpbmNsdWRlcworCSAqIGFsdGVyZWQgc2VxdWVuY2VzLCB3aGljaCBhc3NpZ25zIG5l dyByZWxmaWxlbm9kZSkuCisJICovCisJSFRBQgkgICAqc2VxdWVuY2VzX2hhc2g7CisKIAkv KgogCSAqIG5vbi1oaWVyYXJjaGljYWwgbGlzdCBvZiBzdWJ0cmFuc2FjdGlvbnMgdGhhdCBh cmUgKm5vdCogYWJvcnRlZC4gT25seQogCSAqIHVzZWQgaW4gdG9wbGV2ZWwgdHJhbnNhY3Rp b25zLgpAQCAtNDcwLDYgKzQ4NCwxNCBAQCB0eXBlZGVmIHZvaWQgKCpSZW9yZGVyQnVmZmVy TWVzc2FnZUNCKSAoUmVvcmRlckJ1ZmZlciAqcmIsCiAJCQkJCQkJCQkJY29uc3QgY2hhciAq cHJlZml4LCBTaXplIHN6LAogCQkJCQkJCQkJCWNvbnN0IGNoYXIgKm1lc3NhZ2UpOwogCisv KiBzZXF1ZW5jZSBjYWxsYmFjayBzaWduYXR1cmUgKi8KK3R5cGVkZWYgdm9pZCAoKlJlb3Jk ZXJCdWZmZXJTZXF1ZW5jZUNCKSAoUmVvcmRlckJ1ZmZlciAqcmIsCisJCQkJCQkJCQkJIFJl b3JkZXJCdWZmZXJUWE4gKnR4biwKKwkJCQkJCQkJCQkgWExvZ1JlY1B0ciBzZXF1ZW5jZV9s c24sCisJCQkJCQkJCQkJIFJlbGF0aW9uIHJlbCwKKwkJCQkJCQkJCQkgYm9vbCB0cmFuc2Fj dGlvbmFsLAorCQkJCQkJCQkJCSBpbnQ2NCB2YWx1ZSk7CisKIC8qIGJlZ2luIHByZXBhcmUg Y2FsbGJhY2sgc2lnbmF0dXJlICovCiB0eXBlZGVmIHZvaWQgKCpSZW9yZGVyQnVmZmVyQmVn aW5QcmVwYXJlQ0IpIChSZW9yZGVyQnVmZmVyICpyYiwKIAkJCQkJCQkJCQkJIFJlb3JkZXJC dWZmZXJUWE4gKnR4bik7CkBAIC01MzYsNiArNTU4LDE0IEBAIHR5cGVkZWYgdm9pZCAoKlJl b3JkZXJCdWZmZXJTdHJlYW1NZXNzYWdlQ0IpICgKIAkJCQkJCQkJCQkJICBjb25zdCBjaGFy ICpwcmVmaXgsIFNpemUgc3osCiAJCQkJCQkJCQkJCSAgY29uc3QgY2hhciAqbWVzc2FnZSk7 CiAKKy8qIHN0cmVhbSBzZXF1ZW5jZSBjYWxsYmFjayBzaWduYXR1cmUgKi8KK3R5cGVkZWYg dm9pZCAoKlJlb3JkZXJCdWZmZXJTdHJlYW1TZXF1ZW5jZUNCKSAoUmVvcmRlckJ1ZmZlciAq cmIsCisJCQkJCQkJCQkJCSAgIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKKwkJCQkJCQkJCQkJ ICAgWExvZ1JlY1B0ciBzZXF1ZW5jZV9sc24sCisJCQkJCQkJCQkJCSAgIFJlbGF0aW9uIHJl bCwKKwkJCQkJCQkJCQkJICAgYm9vbCB0cmFuc2FjdGlvbmFsLAorCQkJCQkJCQkJCQkgICBp bnQ2NCB2YWx1ZSk7CisKIC8qIHN0cmVhbSB0cnVuY2F0ZSBjYWxsYmFjayBzaWduYXR1cmUg Ki8KIHR5cGVkZWYgdm9pZCAoKlJlb3JkZXJCdWZmZXJTdHJlYW1UcnVuY2F0ZUNCKSAoCiAJ CQkJCQkJCQkJCSAgIFJlb3JkZXJCdWZmZXIgKnJiLApAQCAtNTkyLDYgKzYyMiw3IEBAIHN0 cnVjdCBSZW9yZGVyQnVmZmVyCiAJUmVvcmRlckJ1ZmZlckFwcGx5VHJ1bmNhdGVDQiBhcHBs eV90cnVuY2F0ZTsKIAlSZW9yZGVyQnVmZmVyQ29tbWl0Q0IgY29tbWl0OwogCVJlb3JkZXJC dWZmZXJNZXNzYWdlQ0IgbWVzc2FnZTsKKwlSZW9yZGVyQnVmZmVyU2VxdWVuY2VDQiBzZXF1 ZW5jZTsKIAogCS8qCiAJICogQ2FsbGJhY2tzIHRvIGJlIGNhbGxlZCB3aGVuIHN0cmVhbWlu ZyBhIHRyYW5zYWN0aW9uIGF0IHByZXBhcmUgdGltZS4KQEAgLTYxMSw2ICs2NDIsNyBAQCBz dHJ1Y3QgUmVvcmRlckJ1ZmZlcgogCVJlb3JkZXJCdWZmZXJTdHJlYW1Db21taXRDQiBzdHJl YW1fY29tbWl0OwogCVJlb3JkZXJCdWZmZXJTdHJlYW1DaGFuZ2VDQiBzdHJlYW1fY2hhbmdl OwogCVJlb3JkZXJCdWZmZXJTdHJlYW1NZXNzYWdlQ0Igc3RyZWFtX21lc3NhZ2U7CisJUmVv cmRlckJ1ZmZlclN0cmVhbVNlcXVlbmNlQ0Igc3RyZWFtX3NlcXVlbmNlOwogCVJlb3JkZXJC dWZmZXJTdHJlYW1UcnVuY2F0ZUNCIHN0cmVhbV90cnVuY2F0ZTsKIAogCS8qCkBAIC02OTYs NiArNzI4LDEwIEBAIGV4dGVybiB2b2lkIFJlb3JkZXJCdWZmZXJRdWV1ZU1lc3NhZ2UoUmVv cmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLAogCQkJCQkJCQkJICBTbmFwc2hv dCBzbmFwLCBYTG9nUmVjUHRyIGxzbiwKIAkJCQkJCQkJCSAgYm9vbCB0cmFuc2FjdGlvbmFs LCBjb25zdCBjaGFyICpwcmVmaXgsCiAJCQkJCQkJCQkgIFNpemUgbWVzc2FnZV9zaXplLCBj b25zdCBjaGFyICptZXNzYWdlKTsKK2V4dGVybiB2b2lkIFJlb3JkZXJCdWZmZXJRdWV1ZVNl cXVlbmNlKFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlvbklkIHhpZCwKKwkJCQkJCQkJ CSAgIFNuYXBzaG90IHNuYXBzaG90LCBYTG9nUmVjUHRyIGxzbiwgUmVwT3JpZ2luSWQgb3Jp Z2luX2lkLAorCQkJCQkJCQkJICAgUmVsRmlsZUxvY2F0b3IgbG9jYXRvciwgYm9vbCB0cmFu c2FjdGlvbmFsLAorCQkJCQkJCQkJICAgUmVvcmRlckJ1ZmZlclR1cGxlQnVmICp0dXBsZWJ1 Zik7CiBleHRlcm4gdm9pZCBSZW9yZGVyQnVmZmVyQ29tbWl0KFJlb3JkZXJCdWZmZXIgKnJi LCBUcmFuc2FjdGlvbklkIHhpZCwKIAkJCQkJCQkJWExvZ1JlY1B0ciBjb21taXRfbHNuLCBY TG9nUmVjUHRyIGVuZF9sc24sCiAJCQkJCQkJCVRpbWVzdGFtcFR6IGNvbW1pdF90aW1lLCBS ZXBPcmlnaW5JZCBvcmlnaW5faWQsIFhMb2dSZWNQdHIgb3JpZ2luX2xzbik7CkBAIC03NTAs NCArNzg2LDEwIEBAIGV4dGVybiB2b2lkIFJlb3JkZXJCdWZmZXJTZXRSZXN0YXJ0UG9pbnQo UmVvcmRlckJ1ZmZlciAqcmIsIFhMb2dSZWNQdHIgcHRyKTsKIAogZXh0ZXJuIHZvaWQgU3Rh cnR1cFJlb3JkZXJCdWZmZXIodm9pZCk7CiAKK2V4dGVybiB2b2lkIFJlb3JkZXJCdWZmZXJB ZGRSZWxGaWxlTG9jYXRvcihSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCB4aWQs CisJCQkJCQkJCQkJICAgWExvZ1JlY1B0ciBsc24sIFJlbEZpbGVMb2NhdG9yIHJsb2NhdG9y KTsKK2V4dGVybiBib29sIFJlb3JkZXJCdWZmZXJTZXF1ZW5jZUlzVHJhbnNhY3Rpb25hbChS ZW9yZGVyQnVmZmVyICpyYiwKKwkJCQkJCQkJCQkJCSBSZWxGaWxlTG9jYXRvciBsb2NhdG9y LAorCQkJCQkJCQkJCQkJIFRyYW5zYWN0aW9uSWQgKnhpZCk7CisKICNlbmRpZgpkaWZmIC0t Z2l0IGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgYi9zcmMvdG9vbHMvcGdp bmRlbnQvdHlwZWRlZnMubGlzdAppbmRleCA4NmE5ODg2ZDRmNy4uNzNiN2IzN2E1ZWUgMTAw NjQ0Ci0tLSBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CisrKyBiL3NyYy90 b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CkBAIC0yMzI5LDYgKzIzMjksNyBAQCBSZW9y ZGVyQnVmZmVySXRlclRYTlN0YXRlCiBSZW9yZGVyQnVmZmVyTWVzc2FnZUNCCiBSZW9yZGVy QnVmZmVyUHJlcGFyZUNCCiBSZW9yZGVyQnVmZmVyUm9sbGJhY2tQcmVwYXJlZENCCitSZW9y ZGVyQnVmZmVyU2VxdWVuY2VFbnQKIFJlb3JkZXJCdWZmZXJTdHJlYW1BYm9ydENCCiBSZW9y ZGVyQnVmZmVyU3RyZWFtQ2hhbmdlQ0IKIFJlb3JkZXJCdWZmZXJTdHJlYW1Db21taXRDQgot LSAKMi40Mi4wCgo= --------------n6sjwQvphvF4EuHWavlOIMm0 Content-Type: text/x-patch; charset=UTF-8; name="v20231127-3-0002-tweak-ReorderBufferSequenceIsTransaction.patch" Content-Disposition: attachment; filename*0="v20231127-3-0002-tweak-ReorderBufferSequenceIsTransaction.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA2Y2I5ZTg1YTM2ZGYwMzYwZGYwNzBlMmE2NzJkNjRlMmRjNjJkZDc5IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzQDJuZHF1YWRyYW50 LmNvbT4KRGF0ZTogTW9uLCAyNyBOb3YgMjAyMyAwMTozOToxMyArMDEwMApTdWJqZWN0OiBb UEFUQ0ggdjIwMjMxMTI3LTMgMi82XSB0d2VhayBSZW9yZGVyQnVmZmVyU2VxdWVuY2VJc1Ry YW5zYWN0aW9uYWwKCi0tLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZWNv ZGUuYyAgICAgIHwgIDIgKy0KIC4uLi9yZXBsaWNhdGlvbi9sb2dpY2FsL3Jlb3JkZXJidWZm ZXIuYyAgICAgICB8IDY2ICsrKysrKysrKy0tLS0tLS0tLS0KIHNyYy9pbmNsdWRlL3JlcGxp Y2F0aW9uL3Jlb3JkZXJidWZmZXIuaCAgICAgICB8ICAzICstCiAzIGZpbGVzIGNoYW5nZWQs IDM1IGluc2VydGlvbnMoKyksIDM2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMgYi9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jCmluZGV4IDVhZGViYTRmNzBjLi4wMjQ4YWVlODNk NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZWNvZGUu YworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jCkBAIC0x NDM5LDcgKzE0MzksNyBAQCBzZXFfZGVjb2RlKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0 eCwgWExvZ1JlY29yZEJ1ZmZlciAqYnVmKQogCSAqLwogCXRyYW5zYWN0aW9uYWwgPSBSZW9y ZGVyQnVmZmVyU2VxdWVuY2VJc1RyYW5zYWN0aW9uYWwoY3R4LT5yZW9yZGVyLAogCQkJCQkJ CQkJCQkJCQkgdGFyZ2V0X2xvY2F0b3IsCi0JCQkJCQkJCQkJCQkJCSBOVUxMKTsKKwkJCQkJ CQkJCQkJCQkJIHhpZCwgTlVMTCk7CiAKIAkvKiBTa2lwIHRoZSBjaGFuZ2UgaWYgYWxyZWFk eSBwcm9jZXNzZWQgKHBlciB0aGUgc25hcHNob3QpLiAqLwogCWlmICh0cmFuc2FjdGlvbmFs ICYmCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Jlb3Jk ZXJidWZmZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1 ZmZlci5jCmluZGV4IDVlZWYwZDg5YTk4Li42MTc4MWI2MmJiOCAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZW9yZGVyYnVmZmVyLmMKKysrIGIvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZW9yZGVyYnVmZmVyLmMKQEAgLTEwMTMs NTAgKzEwMTMsNDggQEAgUmVvcmRlckJ1ZmZlclF1ZXVlTWVzc2FnZShSZW9yZGVyQnVmZmVy ICpyYiwgVHJhbnNhY3Rpb25JZCB4aWQsCiBib29sCiBSZW9yZGVyQnVmZmVyU2VxdWVuY2VJ c1RyYW5zYWN0aW9uYWwoUmVvcmRlckJ1ZmZlciAqcmIsCiAJCQkJCQkJCQkgUmVsRmlsZUxv Y2F0b3IgcmxvY2F0b3IsCi0JCQkJCQkJCQkgVHJhbnNhY3Rpb25JZCAqeGlkKQorCQkJCQkJ CQkJIFRyYW5zYWN0aW9uSWQgeGlkaW4sCisJCQkJCQkJCQkgVHJhbnNhY3Rpb25JZCAqeGlk b3V0KQogewogCWJvb2wJCWZvdW5kID0gZmFsc2U7Ci0JZGxpc3RfaXRlcglpdGVyOworCVJl b3JkZXJCdWZmZXJUWE4gICAqdHhuOworCVJlb3JkZXJCdWZmZXJTZXF1ZW5jZUVudCAqZW50 cnk7CiAKIAlBc3NlcnRDaGVja1NlcXVlbmNlcyhyYik7CiAKIAkvKgotCSAqIFdhbGsgYWxs IHRvcC1sZXZlbCB0cmFuc2FjdGlvbnMgKHNvbWUgb2Ygd2hpY2ggbWF5IGJlIHN1YnhhY3Rz LCBleGNlcHQKLQkgKiB0aGF0IHdlIGhhdmVuJ3QgcHJvY2Vzc2VkIHRoZSBhc3NpZ25tZW50 cyB5ZXQpLCBhbmQgY2hlY2sgaWYgYW55IG9mCi0JICogdGhlbSBjcmVhdGVkIHRoZSByZWxm aWxlbm9kZS4KKwkgKiBUcnkgdG8gbG9va3VwIHRyYW5zYWN0aW9uIHdpdGggdGhlIFhJRCBv ZiB0aGUgY2hhbmdlLiBJZiBpdCBleGlzdHMsIHRoZQorCSAqIHJlbGZpbGVub2RlIHdvdWxk IGhhdmUgdG8gYmUgZWl0aGVyIGluIGl0IG9yIHRoZSB0b3AtbGV2ZWwgdHJhbnNhY3Rpb24K KwkgKiAoaWYgaXQgd2FzIGNyZWF0ZWQgaW4gc29tZSBlYXJsaWVyIHN1YnRyYW5zYWN0aW9u KS4KKwkgKgorCSAqIElmIHRoaXMgaXMgYSBzdWJ4YWN0LCB3ZSdsbCBzZWFyY2gganVzdCB0 aGUgdG9wLWxldmVsIGhhc2ggdGFibGUuIFRoYXQncworCSAqIHNpbXBsZXIgYW5kIGxpa2Vs eSBmYXN0ZXIgdGhhbiBoYXZpbmcgdG8gc2VhcmNoIHR3byBoYXNoIHRhYmxlcy4KIAkgKi8K LQlkbGlzdF9mb3JlYWNoKGl0ZXIsICZyYi0+dG9wbGV2ZWxfYnlfbHNuKQotCXsKLQkJUmVv cmRlckJ1ZmZlclNlcXVlbmNlRW50ICplbnRyeTsKLQkJUmVvcmRlckJ1ZmZlclRYTiAqdHhu ID0gZGxpc3RfY29udGFpbmVyKFJlb3JkZXJCdWZmZXJUWE4sIG5vZGUsCi0JCQkJCQkJCQkJ CQlpdGVyLmN1cik7CisJdHhuID0gUmVvcmRlckJ1ZmZlclRYTkJ5WGlkKHJiLCB4aWRpbiwg ZmFsc2UsIE5VTEwsIEludmFsaWRYTG9nUmVjUHRyLAorCQkJCQkJCQlmYWxzZSk7CiAKLQkJ LyogdHJhbnNhY3Rpb24gaGFzIG5vIHJlbGZpbGVub2RlcyBhdCBhbGwgKi8KLQkJaWYgKCF0 eG4tPnNlcXVlbmNlc19oYXNoKQotCQkJY29udGludWU7CisJaWYgKCF0eG4pCisJCXJldHVy biBmYWxzZTsKIAotCQllbnRyeSA9IGhhc2hfc2VhcmNoKHR4bi0+c2VxdWVuY2VzX2hhc2gs Ci0JCQkJCQkJKHZvaWQgKikgJnJsb2NhdG9yLAotCQkJCQkJCUhBU0hfRklORCwKLQkJCQkJ CQkmZm91bmQpOworCS8qIElmIHRoZXJlJ3MgdG9wLWxldmVsIHRyYW5zYWN0aW9uLCBzZWFy Y2ggdGhhdCBvbmUuICovCisJdHhuID0gKHR4bi0+dG9wdHhuKSA/IHR4bi0+dG9wdHhuIDog dHhuOwogCi0JCS8qCi0JCSAqIElmIHdlIGZvdW5kIGFuIGVudHJ5IHdpdGggbWF0Y2hpbmcg cmVsZmlsZW5vZGUsIHdlJ3JlIGRvbmUgLSB3ZQotCQkgKiBoYXZlIHRvIHRyZWF0IHRoZSBz ZXF1ZW5jZSBjaGFuZ2UgYXMgdHJhbnNhY3Rpb25hbCwgYW5kIHJlcGxheSBpdAotCQkgKiBp biB0aGUgc2FtZSAoc3ViKXRyYW5zYWN0aW9uIGp1c3QgbGlrZSBhbnkgb3RoZXIgY2hhbmdl LgotCQkgKgotCQkgKiBPcHRpb25hbGx5IHNldCBYSUQgb2YgdGhlIChzdWIpeGFjdCB0aGF0 IGNyZWF0ZWQgdGhlIHJlbGZpbGVub2RlLgotCQkgKi8KLQkJaWYgKGZvdW5kKQotCQl7Ci0J CQlpZiAoeGlkKQotCQkJCSp4aWQgPSBlbnRyeS0+dHhuLT54aWQ7CisJLyogdHJhbnNhY3Rp b24gaGFzIG5vIHJlbGZpbGVub2RlcywgY2FuJ3QgYmUgdHJhbnNhY3Rpb25hbCAqLworCWlm ICghdHhuLT5zZXF1ZW5jZXNfaGFzaCkKKwkJcmV0dXJuIGZhbHNlOwogCi0JCQlicmVhazsK LQkJfQotCX0KKwllbnRyeSA9IGhhc2hfc2VhcmNoKHR4bi0+c2VxdWVuY2VzX2hhc2gsCisJ CQkJCQkodm9pZCAqKSAmcmxvY2F0b3IsCisJCQkJCQlIQVNIX0ZJTkQsCisJCQkJCQkmZm91 bmQpOwogCi0JcmV0dXJuIGZvdW5kOworCWlmICghZm91bmQpCisJCXJldHVybiBmYWxzZTsK KworCWlmICh4aWRvdXQpCisJCSp4aWRvdXQgPSBlbnRyeS0+dHhuLT54aWQ7CisKKwlyZXR1 cm4gdHJ1ZTsKIH0KIAogLyoKQEAgLTExNDUsNyArMTE0Myw3IEBAIFJlb3JkZXJCdWZmZXJR dWV1ZVNlcXVlbmNlKFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlvbklkIHhpZCwKIAkJ Y2hhbmdlLT5kYXRhLnNlcXVlbmNlLnR1cGxlID0gdHVwbGVidWY7CiAKIAkJLyogbG9va3Vw IHRoZSBYSUQgZm9yIHRyYW5zYWN0aW9uIHRoYXQgY3JlYXRlZCB0aGUgcmVsZmlsZW5vZGUg Ki8KLQkJUmVvcmRlckJ1ZmZlclNlcXVlbmNlSXNUcmFuc2FjdGlvbmFsKHJiLCBybG9jYXRv ciwgJnhpZCk7CisJCVJlb3JkZXJCdWZmZXJTZXF1ZW5jZUlzVHJhbnNhY3Rpb25hbChyYiwg cmxvY2F0b3IsIHhpZCwgJnhpZCk7CiAKIAkJLyogdGhlIFhJRCBzaG91bGQgYmUgdmFsaWQg Zm9yIGEgdHJhbnNhY3Rpb25hbCBjaGFuZ2UgKi8KIAkJQXNzZXJ0KFRyYW5zYWN0aW9uSWRJ c1ZhbGlkKHhpZCkpOwpAQCAtMTE3MCw3ICsxMTY4LDcgQEAgUmVvcmRlckJ1ZmZlclF1ZXVl U2VxdWVuY2UoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLAogCQlBc3Nl cnQoc25hcHNob3Rfbm93KTsKIAogCQkvKiBNYWtlIHN1cmUgdGhlIHNlcXVlbmNlIGlzIG5v dCBpbiBhbnkgb2YgdGhlIGhhc2ggdGFibGVzICovCi0JCUFzc2VydCghUmVvcmRlckJ1ZmZl clNlcXVlbmNlSXNUcmFuc2FjdGlvbmFsKHJiLCBybG9jYXRvciwgTlVMTCkpOworCQlBc3Nl cnQoIVJlb3JkZXJCdWZmZXJTZXF1ZW5jZUlzVHJhbnNhY3Rpb25hbChyYiwgcmxvY2F0b3Is IHhpZCwgTlVMTCkpOwogCiAJCWlmICh4aWQgIT0gSW52YWxpZFRyYW5zYWN0aW9uSWQpCiAJ CQl0eG4gPSBSZW9yZGVyQnVmZmVyVFhOQnlYaWQocmIsIHhpZCwgdHJ1ZSwgTlVMTCwgbHNu LCB0cnVlKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Jlb3JkZXJi dWZmZXIuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Jlb3JkZXJidWZmZXIuaAppbmRl eCA1OGE5OWI3NDA2MC4uYTQ0YTBmNGRmYjkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3Jl cGxpY2F0aW9uL3Jlb3JkZXJidWZmZXIuaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlv bi9yZW9yZGVyYnVmZmVyLmgKQEAgLTc5MCw2ICs3OTAsNyBAQCBleHRlcm4gdm9pZCBSZW9y ZGVyQnVmZmVyQWRkUmVsRmlsZUxvY2F0b3IoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0 aW9uSWQgeGlkLAogCQkJCQkJCQkJCSAgIFhMb2dSZWNQdHIgbHNuLCBSZWxGaWxlTG9jYXRv ciBybG9jYXRvcik7CiBleHRlcm4gYm9vbCBSZW9yZGVyQnVmZmVyU2VxdWVuY2VJc1RyYW5z YWN0aW9uYWwoUmVvcmRlckJ1ZmZlciAqcmIsCiAJCQkJCQkJCQkJCQkgUmVsRmlsZUxvY2F0 b3IgbG9jYXRvciwKLQkJCQkJCQkJCQkJCSBUcmFuc2FjdGlvbklkICp4aWQpOworCQkJCQkJ CQkJCQkJIFRyYW5zYWN0aW9uSWQgeGlkaW4sCisJCQkJCQkJCQkJCQkgVHJhbnNhY3Rpb25J ZCAqeGlkb3V0KTsKIAogI2VuZGlmCi0tIAoyLjQyLjAKCg== --------------n6sjwQvphvF4EuHWavlOIMm0 Content-Type: text/x-patch; charset=UTF-8; name="v20231127-3-0003-WIP-add-is_transactional-attribute-in-xl.patch" Content-Disposition: attachment; filename*0="v20231127-3-0003-WIP-add-is_transactional-attribute-in-xl.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA0ZmE4MmMwYWIwMjliOGE5YmM2Mzc2ZjU4NTIxNzkzYTE5ZGE0MTA2IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIYXlhdG8gS3Vyb2RhIDxrdXJvZGEuaGF5YXRvQGZ1 aml0c3UuY29tPgpEYXRlOiBNb24sIDI3IE5vdiAyMDIzIDEwOjE1OjAxICswMDAwClN1Ympl Y3Q6IFtQQVRDSCB2MjAyMzExMjctMyAzLzZdIChXSVApIGFkZCBpc190cmFuc2FjdGlvbmFs IGF0dHJpYnV0ZSBpbgogeGxfc2VxX3JlYwoKLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9z ZXF1ZW5jZS5jICAgICAgICAgICAgICAgfCAgMTIgKwogc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC9kZWNvZGUuYyAgICAgIHwgIDc1ICstLS0KIC4uLi9yZXBsaWNhdGlvbi9s b2dpY2FsL3Jlb3JkZXJidWZmZXIuYyAgICAgICB8IDQwMSAtLS0tLS0tLS0tLS0tLS0tLS0K IHNyYy9pbmNsdWRlL2FjY2Vzcy9ybWdybGlzdC5oICAgICAgICAgICAgICAgICB8ICAgMiAr LQogc3JjL2luY2x1ZGUvYWNjZXNzL3hsb2dfaW50ZXJuYWwuaCAgICAgICAgICAgIHwgICAy ICstCiBzcmMvaW5jbHVkZS9jb21tYW5kcy9zZXF1ZW5jZS5oICAgICAgICAgICAgICAgfCAg IDEgKwogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vZGVjb2RlLmggICAgICAgICAgICAgIHwg ICAxIC0KIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Jlb3JkZXJidWZmZXIuaCAgICAgICB8 ICAxMyAtCiA4IGZpbGVzIGNoYW5nZWQsIDE5IGluc2VydGlvbnMoKyksIDQ4OCBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9zZXF1ZW5jZS5jIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvc2VxdWVuY2UuYwppbmRleCA2MTZiODY4NWUzOS4uYmMx NzQ5YmRiYWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3NlcXVlbmNlLmMK KysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc2VxdWVuY2UuYwpAQCAtMTEwLDYgKzExMCw3 IEBAIHN0YXRpYyB2b2lkIGluaXRfcGFyYW1zKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAq b3B0aW9ucywgYm9vbCBmb3JfaWRlbnRpdHksCiAJCQkJCQlMaXN0ICoqb3duZWRfYnkpOwog c3RhdGljIHZvaWQgZG9fc2V0dmFsKE9pZCByZWxpZCwgaW50NjQgbmV4dCwgYm9vbCBpc2Nh bGxlZCk7CiBzdGF0aWMgdm9pZCBwcm9jZXNzX293bmVkX2J5KFJlbGF0aW9uIHNlcXJlbCwg TGlzdCAqb3duZWRfYnksIGJvb2wgZm9yX2lkZW50aXR5KTsKK3N0YXRpYyBpbmxpbmUgYm9v bCBpc19zZXF1ZW5jZV90cmFuc2FjdGlvbmFsKFJlbGF0aW9uIHNlcXJlbCk7CiAKIAogLyoK QEAgLTI1Myw2ICsyNTQsMTMgQEAgRGVmaW5lU2VxdWVuY2UoUGFyc2VTdGF0ZSAqcHN0YXRl LCBDcmVhdGVTZXFTdG10ICpzZXEpCiAJcmV0dXJuIGFkZHJlc3M7CiB9CiAKK3N0YXRpYyBp bmxpbmUgYm9vbAoraXNfc2VxdWVuY2VfdHJhbnNhY3Rpb25hbChSZWxhdGlvbiBzZXFyZWwp Cit7CisJcmV0dXJuIChzZXFyZWwtPnJkX25ld1JlbGZpbGVsb2NhdG9yU3ViaWQgIT0gSW52 YWxpZFN1YlRyYW5zYWN0aW9uSWQpIHx8CisJCSAgIChzZXFyZWwtPnJkX2NyZWF0ZVN1Ymlk ICE9IEludmFsaWRTdWJUcmFuc2FjdGlvbklkKTsKK30KKwogLyoKICAqIFJlc2V0IGEgc2Vx dWVuY2UgdG8gaXRzIGluaXRpYWwgdmFsdWUuCiAgKgpAQCAtNDM5LDYgKzQ0Nyw3IEBAIGZp bGxfc2VxX2Zvcmtfd2l0aF9kYXRhKFJlbGF0aW9uIHJlbCwgSGVhcFR1cGxlIHR1cGxlLCBG b3JrTnVtYmVyIGZvcmtOdW0pCiAJCVhMb2dSZWdpc3RlckJ1ZmZlcigwLCBidWYsIFJFR0JV Rl9XSUxMX0lOSVQpOwogCiAJCXhscmVjLmxvY2F0b3IgPSByZWwtPnJkX2xvY2F0b3I7CisJ CXhscmVjLmlzX3RyYW5zYWN0aW9uYWwgPSBpc19zZXF1ZW5jZV90cmFuc2FjdGlvbmFsKHJl bCk7CiAKIAkJWExvZ1JlZ2lzdGVyRGF0YSgoY2hhciAqKSAmeGxyZWMsIHNpemVvZih4bF9z ZXFfcmVjKSk7CiAJCVhMb2dSZWdpc3RlckRhdGEoKGNoYXIgKikgdHVwbGUtPnRfZGF0YSwg dHVwbGUtPnRfbGVuKTsKQEAgLTkwMyw2ICs5MTIsNyBAQCBuZXh0dmFsX2ludGVybmFsKE9p ZCByZWxpZCwgYm9vbCBjaGVja19wZXJtaXNzaW9ucykKIAkJc2VxLT5sb2dfY250ID0gMDsK IAogCQl4bHJlYy5sb2NhdG9yID0gc2VxcmVsLT5yZF9sb2NhdG9yOworCQl4bHJlYy5pc190 cmFuc2FjdGlvbmFsID0gaXNfc2VxdWVuY2VfdHJhbnNhY3Rpb25hbChzZXFyZWwpOwogCiAJ CVhMb2dSZWdpc3RlckRhdGEoKGNoYXIgKikgJnhscmVjLCBzaXplb2YoeGxfc2VxX3JlYykp OwogCQlYTG9nUmVnaXN0ZXJEYXRhKChjaGFyICopIHNlcWRhdGF0dXBsZS50X2RhdGEsIHNl cWRhdGF0dXBsZS50X2xlbik7CkBAIC0xMTA0LDYgKzExMTQsOCBAQCBkb19zZXR2YWwoT2lk IHJlbGlkLCBpbnQ2NCBuZXh0LCBib29sIGlzY2FsbGVkKQogCQlYTG9nUmVnaXN0ZXJCdWZm ZXIoMCwgYnVmLCBSRUdCVUZfV0lMTF9JTklUKTsKIAogCQl4bHJlYy5sb2NhdG9yID0gc2Vx cmVsLT5yZF9sb2NhdG9yOworCQl4bHJlYy5pc190cmFuc2FjdGlvbmFsID0gaXNfc2VxdWVu Y2VfdHJhbnNhY3Rpb25hbChzZXFyZWwpOworCiAJCVhMb2dSZWdpc3RlckRhdGEoKGNoYXIg KikgJnhscmVjLCBzaXplb2YoeGxfc2VxX3JlYykpOwogCQlYTG9nUmVnaXN0ZXJEYXRhKChj aGFyICopIHNlcWRhdGF0dXBsZS50X2RhdGEsIHNlcWRhdGF0dXBsZS50X2xlbik7CiAKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMgYi9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jCmluZGV4IDAyNDhhZWU4 M2Q3Li5jNThiNWI0NWYyOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC9kZWNvZGUuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L2RlY29kZS5jCkBAIC0xMzkwLDYgKzEzOTAsNyBAQCBzZXFfZGVjb2RlKExvZ2ljYWxEZWNv ZGluZ0NvbnRleHQgKmN0eCwgWExvZ1JlY29yZEJ1ZmZlciAqYnVmKQogCVNuYXBzaG90CXNu YXBzaG90ID0gTlVMTDsKIAlSZXBPcmlnaW5JZCBvcmlnaW5faWQgPSBYTG9nUmVjR2V0T3Jp Z2luKHIpOwogCWJvb2wJCXRyYW5zYWN0aW9uYWw7CisJeGxfc2VxX3JlYyAqeGxyZWM7CiAK IAkvKiBpZ25vcmUgc2VxdWVuY2VzIHdoZW4gdGhlIHBsdWdpbiBkb2VzIG5vdCBoYXZlIHRo ZSBjYWxsYmFja3MgKi8KIAlpZiAoIWN0eC0+c2VxdWVuY2VzKQpAQCAtMTQzMiwxNCArMTQz MywxMCBAQCBzZXFfZGVjb2RlKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgWExvZ1Jl Y29yZEJ1ZmZlciAqYnVmKQogCS8qCiAJICogU2hvdWxkIHdlIGhhbmRsZSB0aGUgc2VxdWVu Y2UgY2hhbmdlIGFzIHRyYW5zYWN0aW9uYWwgb3Igbm90PwogCSAqCi0JICogSWYgdGhlIHJl bGZpbGVub2RlIHdhcyBjcmVhdGVkIGluIHRoZSBjdXJyZW50IHRyYW5zYWN0aW9uLCB0cmVh dCB0aGUKLQkgKiBjaGFuZ2UgYXMgdHJhbnNhY3Rpb25hbCBhbmQgcXVldWUgaXQuIE90aGVy d2lzZSBpdCBuZWVkcyB0byBiZSB0cmVhdGVkCi0JICogYXMgbm9uLXRyYW5zYWN0aW9uYWws IGluIHdoaWNoIGNhc2Ugd2UganVzdCBzZW5kIGl0IHRvIHRoZSBwbHVnaW4gcmlnaHQKLQkg KiBhd2F5LgorCSAqIFhYWDogY2FuIHhscmVjIGJlIGNvbWJpbmVkIHdpdGggdHVwbGVkYXRh PwogCSAqLwotCXRyYW5zYWN0aW9uYWwgPSBSZW9yZGVyQnVmZmVyU2VxdWVuY2VJc1RyYW5z YWN0aW9uYWwoY3R4LT5yZW9yZGVyLAotCQkJCQkJCQkJCQkJCQkgdGFyZ2V0X2xvY2F0b3Is Ci0JCQkJCQkJCQkJCQkJCSB4aWQsIE5VTEwpOworCXhscmVjID0gKHhsX3NlcV9yZWMgKikg WExvZ1JlY0dldERhdGEocik7CisJdHJhbnNhY3Rpb25hbCA9IHhscmVjLT5pc190cmFuc2Fj dGlvbmFsOwogCiAJLyogU2tpcCB0aGUgY2hhbmdlIGlmIGFscmVhZHkgcHJvY2Vzc2VkIChw ZXIgdGhlIHNuYXBzaG90KS4gKi8KIAlpZiAodHJhbnNhY3Rpb25hbCAmJgpAQCAtMTQ4Niw2 NyArMTQ4MywzIEBAIHNlcV9kZWNvZGUoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBY TG9nUmVjb3JkQnVmZmVyICpidWYpCiAJCQkJCQkJICAgb3JpZ2luX2lkLCB0YXJnZXRfbG9j YXRvciwgdHJhbnNhY3Rpb25hbCwKIAkJCQkJCQkgICB0dXBsZWJ1Zik7CiB9Ci0KLS8qCi0g KiBEZWNvZGUgcmVsZmlsZW5vZGUgY2hhbmdlCi0gKgotICogRGVjb2RlIFNNR1IgcmVjb3Jk cywgc28gdGhhdCB3ZSBjYW4gbGF0ZXIgZGVjaWRlIHdoaWNoIHNlcXVlbmNlIGNoYW5nZXMK LSAqIG5lZWQgdG8gYmUgdHJlYXRlZCBhcyB0cmFuc2FjdGlvbmFsLiBNb3N0IHNlcXVlbmNl IGNoYW5nZXMgYXJlIGdvaW5nIHRvCi0gKiBiZSBub24tdHJhbnNhY3Rpb25hbCAoYXBwbGll ZCBhcyBpZiBvdXRzaWRlIHRoZSBkZWNvZGVkIHRyYW5zYWN0aW9uLCBub3QKLSAqIHN1Ympl Y3QgdG8gcm9sbGJhY2ssIGV0Yy4pLiBDaGFuZ2VzIGZvciBzZXF1ZW5jZXMgY3JlYXRlZC9h bHRlcmVkIGluIHRoZQotICogdHJhbnNhY3Rpb24gbmVlZCB0byBiZSBoYW5kbGVkIGFzIHRy YW5zYWN0aW9uYWwgKGkuZS4gYXBwbGllZCBhcyBwYXJ0IG9mCi0gKiB0aGUgZGVjb2RlZCB0 cmFuc2FjdGlvbiwgc2FtZSBhcyBhbGwgb3RoZXIgY2hhbmdlcykuCi0gKgotICogVG8gZGVj aWRlIHdoaWNoIG9mIHRob3NlIGNhc2VzIGlzIGl0IHdlIGRlY29kZSBYTE9HX1NNR1JfQ1JF QVRFIHJlY29yZHMKLSAqIGFuZCB0cmFjayByZWxmaWxlbm9kZXMgY3JlYXRlZCBpbiBlYWNo IChzdWIpdHJhbnNhY3Rpb24uIENoYW5nZXMgZm9yCi0gKiB0aGVzZSByZWxmaWxlbm9kZXMg YXJlIHRoZW4gcXVldWVkIGFuZCB0cmVhdGVkIGFzIHRyYW5zYWN0aW9uYWwsIHdoaWxlCi0g KiByZW1haW5pbmcgY2hhbmdlcyBhcmUgdHJlYXRlZCBhcyBub24tdHJhbnNhY3Rpb25hbC4K LSAqCi0gKiBXZSBvbmx5IGNhcmUgYWJvdXQgWExPR19TTUdSX0NSRUFURSByZWNvcmRzIGZv ciAib3VyIiBkYXRhYmFzZSAobG9naWNhbAotICogZGVjb2RpbmcgaXMgcmVzdHJpY3RlZCB0 byBhIHNpbmdsZSBkYXRhYmFzZSksIGFuZCB3ZSBkbyB0aGUgZmlsdGVyaW5nCi0gKiBhbmQg c2tpcHBpbmcsIGFzIGFwcHJvcHJpYXRlLgotICovCi12b2lkCi1zbWdyX2RlY29kZShMb2dp Y2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFhMb2dSZWNvcmRCdWZmZXIgKmJ1ZikKLXsKLQlT bmFwQnVpbGQgICpidWlsZGVyID0gY3R4LT5zbmFwc2hvdF9idWlsZGVyOwotCVhMb2dSZWFk ZXJTdGF0ZSAqciA9IGJ1Zi0+cmVjb3JkOwotCVRyYW5zYWN0aW9uSWQgeGlkID0gWExvZ1Jl Y0dldFhpZChyKTsKLQl1aW50OAkJaW5mbyA9IFhMb2dSZWNHZXRJbmZvKGJ1Zi0+cmVjb3Jk KSAmIH5YTFJfSU5GT19NQVNLOwotCXhsX3NtZ3JfY3JlYXRlICp4bHJlYzsKLQotCS8qCi0J ICogQmFpbCBvdXQgd2hlbiBub3QgZGVjb2Rpbmcgc2VxdWVuY2VzLCB3aGljaCBpcyBjdXJy ZW50bHkgdGhlIG9ubHkgY2FzZQotCSAqIHdoZW4gd2UgbmVlZCB0byBrbm93IGFib3V0IHJl bGZpbGVub2RlcyBjcmVhdGVkIGluIGEgdHJhbnNhY3Rpb24uCi0JICovCi0JaWYgKCFjdHgt PnNlcXVlbmNlcykKLQkJcmV0dXJuOwotCi0JLyoKLQkgKiBXZSBvbmx5IGNhcmUgYWJvdXQg WExPR19TTUdSX0NSRUFURSwgYmVjYXVzZSB0aGF0J3Mgd2hhdCBkZXRlcm1pbmVzIGlmCi0J ICogdGhlIGZvbGxvd2luZyBzZXF1ZW5jZSBjaGFuZ2VzIGFyZSB0cmFuc2FjdGlvbmFsLgot CSAqLwotCWlmIChpbmZvICE9IFhMT0dfU01HUl9DUkVBVEUpCi0JCXJldHVybjsKLQotCVJl b3JkZXJCdWZmZXJQcm9jZXNzWGlkKGN0eC0+cmVvcmRlciwgWExvZ1JlY0dldFhpZChyKSwg YnVmLT5vcmlncHRyKTsKLQotCS8qCi0JICogSWYgd2UgZG9uJ3QgaGF2ZSBzbmFwc2hvdCBv ciB3ZSBhcmUganVzdCBmYXN0LWZvcndhcmRpbmcsIHRoZXJlIGlzIG5vCi0JICogcG9pbnQg aW4gZGVjb2RpbmcgcmVsZmlsZW5vZGUgaW5mb3JtYXRpb24uCi0JICovCi0JaWYgKFNuYXBC dWlsZEN1cnJlbnRTdGF0ZShidWlsZGVyKSA8IFNOQVBCVUlMRF9GVUxMX1NOQVBTSE9UIHx8 Ci0JCWN0eC0+ZmFzdF9mb3J3YXJkKQotCQlyZXR1cm47Ci0KLQkvKiBvbmx5IGludGVyZXN0 ZWQgaW4gb3VyIGRhdGFiYXNlICovCi0JeGxyZWMgPSAoeGxfc21ncl9jcmVhdGUgKikgWExv Z1JlY0dldERhdGEocik7Ci0JaWYgKHhscmVjLT5ybG9jYXRvci5kYk9pZCAhPSBjdHgtPnNs b3QtPmRhdGEuZGF0YWJhc2UpCi0JCXJldHVybjsKLQotCS8qIG91dHB1dCBwbHVnaW4gZG9l c24ndCBsb29rIGZvciB0aGlzIG9yaWdpbiwgbm8gbmVlZCB0byBxdWV1ZSAqLwotCWlmIChG aWx0ZXJCeU9yaWdpbihjdHgsIFhMb2dSZWNHZXRPcmlnaW4ocikpKQotCQlyZXR1cm47Ci0K LQlSZW9yZGVyQnVmZmVyQWRkUmVsRmlsZUxvY2F0b3IoY3R4LT5yZW9yZGVyLCB4aWQsIGJ1 Zi0+ZW5kcHRyLCB4bHJlYy0+cmxvY2F0b3IpOwotfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC9yZW9yZGVyYnVmZmVyLmMgYi9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL3Jlb3JkZXJidWZmZXIuYwppbmRleCA2MTc4MWI2MmJiOC4u NDEyMTI2OWEwOTcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvcmVvcmRlcmJ1ZmZlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvcmVvcmRlcmJ1ZmZlci5jCkBAIC0yNjgsNyArMjY4LDYgQEAgc3RhdGljIHZvaWQgUmVv cmRlckJ1ZmZlclRyYW5zZmVyU25hcFRvUGFyZW50KFJlb3JkZXJCdWZmZXJUWE4gKnR4biwK IAkJCQkJCQkJCQkJICBSZW9yZGVyQnVmZmVyVFhOICpzdWJ0eG4pOwogCiBzdGF0aWMgdm9p ZCBBc3NlcnRUWE5Mc25PcmRlcihSZW9yZGVyQnVmZmVyICpyYik7Ci1zdGF0aWMgdm9pZCBB c3NlcnRDaGVja1NlcXVlbmNlcyhSZW9yZGVyQnVmZmVyICpyYik7CiAKIC8qIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICogc3VwcG9ydCBmdW5jdGlvbnMg Zm9yIGxzbi1vcmRlciBpdGVyYXRpbmcgb3ZlciB0aGUgLT5jaGFuZ2VzIG9mIGEKQEAgLTUw MCw0OCArNDk5LDEyIEBAIFJlb3JkZXJCdWZmZXJSZXR1cm5UWE4oUmVvcmRlckJ1ZmZlciAq cmIsIFJlb3JkZXJCdWZmZXJUWE4gKnR4bikKIAkJdHhuLT5pbnZhbGlkYXRpb25zID0gTlVM TDsKIAl9CiAKLQlpZiAodHhuLT5zZXF1ZW5jZXNfaGFzaCAhPSBOVUxMKQotCXsKLQkJaGFz aF9kZXN0cm95KHR4bi0+c2VxdWVuY2VzX2hhc2gpOwotCQl0eG4tPnNlcXVlbmNlc19oYXNo ID0gTlVMTDsKLQl9Ci0KIAkvKiBSZXNldCB0aGUgdG9hc3QgaGFzaCAqLwogCVJlb3JkZXJC dWZmZXJUb2FzdFJlc2V0KHJiLCB0eG4pOwogCiAJcGZyZWUodHhuKTsKIH0KIAotLyoKLSAq IEluaXRpYWxpemUgaGFzaCB0YWJsZSBvZiByZWxmaWxlbm9kZXMgY3JlYXRlZCBieSB0aGUg dHJhbnNhY3Rpb24uCi0gKgotICogRWFjaCBlbnRyeSBtYXBzIHRoZSByZWxmaWxlbm9kZSB0 byB0aGUgKHN1Yil0cmFuc2FjdGlvbiB0aGF0IGNyZWF0ZWQgdGhlCi0gKiByZWxmaWxlbm9k ZSAtIHdoaWNoIGlzIGFsc28gdGhlIHRyYW5zYWN0aW9uIHRoZSBzZXF1ZW5jZSBjaGFuZ2Ug bmVlZHMgdG8KLSAqIGJlIHBhcnQgb2YgKGluIHRyYW5zYWN0aW9uYWwgY2FzZSkuCi0gKgot ICogV2UgZG9uJ3QgZG8gdGhpcyBpbiBSZW9yZGVyQnVmZmVyR2V0VFhOIGJlY2F1c2UgdGhh dCdkIGFsbG9jYXRlIHRoZSBoYXNoCi0gKiBmb3IgYWxsIHRyYW5zYWN0aW9ucywgYW5kIHdl IGV4cGVjdCBuZXcgcmVsZmlsZW5vZGVzIHRvIGJlIGZhaXJseSByYXJlLgotICogU28gb25s eSBkbyB0aGF0IHdoZW4gYWRkaW5nIHRoZSBmaXJzdCBlbnRyeS4KLSAqLwotc3RhdGljIHZv aWQKLVJlb3JkZXJCdWZmZXJUWE5TZXF1ZW5jZXNJbml0KFJlb3JkZXJCdWZmZXIgKnJiLCBS ZW9yZGVyQnVmZmVyVFhOICp0eG4pCi17Ci0JSEFTSENUTAkJaGFzaF9jdGw7Ci0KLQkvKiBi YWlsIG91dCBpZiBhbHJlYWR5IGluaXRpYWxpemVkICovCi0JaWYgKHR4bi0+c2VxdWVuY2Vz X2hhc2gpCi0JCXJldHVybjsKLQotCS8qIGhhc2ggdGFibGUgb2Ygc2VxdWVuY2VzLCBtYXBw aW5nIHJlbGZpbGVsb2NhdG9yIHRvIHRyYW5zYWN0aW9uICovCi0JaGFzaF9jdGwua2V5c2l6 ZSA9IHNpemVvZihSZWxGaWxlTG9jYXRvcik7Ci0JaGFzaF9jdGwuZW50cnlzaXplID0gc2l6 ZW9mKFJlb3JkZXJCdWZmZXJTZXF1ZW5jZUVudCk7Ci0JaGFzaF9jdGwuaGN4dCA9IHJiLT5j b250ZXh0OwotCi0JLyogd2UgZXhwZWN0IHJlbGZpbGVub2RlcyB0byBiZSBjcmVhdGVkIG9u bHkgcmFyZWx5LCBzbyAzMiBzZWVtcyBlbm91Z2ggKi8KLQl0eG4tPnNlcXVlbmNlc19oYXNo ID0gaGFzaF9jcmVhdGUoIlJlb3JkZXJCdWZmZXJUWE5TZXF1ZW5jZUhhc2giLCAzMiwgJmhh c2hfY3RsLAotCQkJCQkJCQkJICBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwgSEFTSF9DT05U RVhUKTsKLX0KLQogLyoKICAqIEdldCBhIGZyZXNoIFJlb3JkZXJCdWZmZXJDaGFuZ2UuCiAg Ki8KQEAgLTk4MywxMTUgKzk0Niw2IEBAIFJlb3JkZXJCdWZmZXJRdWV1ZU1lc3NhZ2UoUmVv cmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLAogCX0KIH0KIAotLyoKLSAqIFRy ZWF0IHRoZSBzZXF1ZW5jZSBjaGFuZ2UgYXMgdHJhbnNhY3Rpb25hbD8KLSAqCi0gKiBUbyBk ZWNpZGUgaWYgYSBzZXF1ZW5jZSBjaGFuZ2Ugc2hvdWxkIGJlIGhhbmRsZWQgYXMgdHJhbnNh Y3Rpb25hbCBvciBhcHBsaWVkCi0gKiBpbW1lZGlhdGVseSwgd2UgbmVlZCB0byBkZWNpZGUg aWYgdGhlIHJlbGZpbGVub2RlIHdhcyBjcmVhdGVkIGJ5IGEgcnVubmluZwotICogdHJhbnNh Y3Rpb24uIEVhY2ggdHJhbnNhY3Rpb24gaGFzIGEgaGFzaCB0YWJsZSBvZiBzdWNoIHJlbGZp bGVub2Rlcy4KLSAqCi0gKiBBIG5haXZlIGFwcHJvYWNoIHdvdWxkIGJlIHRvIGp1c3QgbG9v cCB0aHJvdWdoIGFsbCB0cmFuc2FjdGlvbnMgYW5kIGNoZWNrCi0gKiBlYWNoIG9mIHRoZW0s IGJ1dCB0aGVyZSBtYXkgYmUgKGVhc2lseSB0aG91c2FuZHMpIG9mIHN1YnRyYW5zYWN0aW9u cywgYW5kCi0gKiB0aGUgY2hlY2sgaGFwcGVucyBmb3IgZWFjaCBzZXF1ZW5jZSBjaGFuZ2Uu IFNvIHRoaXMgY291bGQgYmUgdmVyeSBjb3N0bHkuCi0gKgotICogVG8gbGltaXQgdGhlIG51 bWJlciBvZiB0cmFuc2FjdGlvbnMgd2UgbmVlZCB0byBjaGVjaywgd2UgdHJhbnNmZXIgdGhl Ci0gKiByZWxmaWxlbm9kZXMgdG8gdGhlIHRvcC1sZXZlbCB4YWN0LCB3aGljaCBhbGxvd3Mg dXMgdG8gY2hlY2sganVzdCB0aGUKLSAqIHRvcC1sZXZlbCB4YWN0cyAoYW5kIHRoZXJlIHNo b3VsZCBiZSBhIHZlcnkgbGltaXRlZCBudW1iZXIgb2YgdGhvc2UpLiBXZQotICogZXhwZWN0 IHJlbGZpbGVub2RlIGNyZWF0aW9uIHRvIGJlIGEgcXVpdGUgcmFyZSB0aGluZywgc28gdGhp cyBzaG91bGQgbm90Ci0gKiB3YXN0ZSB0b28gbXVjaCBtZW1vcnkuIE9UT0ggc2VxdWVuY2Ug Y2hhbmdlcyBhcmUgdmVyeSBjb21tb24sIHNvIG1ha2luZwotICogdGhlIGNoZWNrIGNoZWFw ZXIgc2VlbXMgbGlrZSBhIGdvb2QgdHJhZGUgb2ZmLgotICoKLSAqIFJldHVybnMgdHJ1ZSBm b3IgdHJhbnNhY3Rpb25hbCBjaGFuZ2VzLCBmYWxzZSBvdGhlcndpc2UuCi0gKgotICogT3B0 aW9uYWx5ICh3aGVuIHRoZSAieGlkIiBwYXJhbWV0ZXIgaXMgc2V0KSByZXR1cm5zIFhJRCBv ZiB0aGUgKHN1Yil4YWN0Ci0gKiB0byB1c2UgZm9yIHF1ZXVlaW5nIHRyYW5zYWN0aW9uYWwg Y2hhbmdlcy4KLSAqCi0gKiBYWFggQXMgYW4gb3B0aW1pemF0aW9uLCBtYXliZSB3ZSBzaG91 bGQgdHJ5IHNlYXJjaGluZyB0aGUgY3VycmVudCB4YWN0IChvcgotICogaXQncyB0b3AtbGV2 ZWwgeGFjdCkgZmlyc3QuIElmIHRoZSBjaGFuZ2UgaXMgdHJhbnNhY3Rpb25hbCwgd2hlcmUg d2UnZAotICogZmluZCB0aGUgbWF0Y2guCi0gKi8KLWJvb2wKLVJlb3JkZXJCdWZmZXJTZXF1 ZW5jZUlzVHJhbnNhY3Rpb25hbChSZW9yZGVyQnVmZmVyICpyYiwKLQkJCQkJCQkJCSBSZWxG aWxlTG9jYXRvciBybG9jYXRvciwKLQkJCQkJCQkJCSBUcmFuc2FjdGlvbklkIHhpZGluLAot CQkJCQkJCQkJIFRyYW5zYWN0aW9uSWQgKnhpZG91dCkKLXsKLQlib29sCQlmb3VuZCA9IGZh bHNlOwotCVJlb3JkZXJCdWZmZXJUWE4gICAqdHhuOwotCVJlb3JkZXJCdWZmZXJTZXF1ZW5j ZUVudCAqZW50cnk7Ci0KLQlBc3NlcnRDaGVja1NlcXVlbmNlcyhyYik7Ci0KLQkvKgotCSAq IFRyeSB0byBsb29rdXAgdHJhbnNhY3Rpb24gd2l0aCB0aGUgWElEIG9mIHRoZSBjaGFuZ2Uu IElmIGl0IGV4aXN0cywgdGhlCi0JICogcmVsZmlsZW5vZGUgd291bGQgaGF2ZSB0byBiZSBl aXRoZXIgaW4gaXQgb3IgdGhlIHRvcC1sZXZlbCB0cmFuc2FjdGlvbgotCSAqIChpZiBpdCB3 YXMgY3JlYXRlZCBpbiBzb21lIGVhcmxpZXIgc3VidHJhbnNhY3Rpb24pLgotCSAqCi0JICog SWYgdGhpcyBpcyBhIHN1YnhhY3QsIHdlJ2xsIHNlYXJjaCBqdXN0IHRoZSB0b3AtbGV2ZWwg aGFzaCB0YWJsZS4gVGhhdCdzCi0JICogc2ltcGxlciBhbmQgbGlrZWx5IGZhc3RlciB0aGFu IGhhdmluZyB0byBzZWFyY2ggdHdvIGhhc2ggdGFibGVzLgotCSAqLwotCXR4biA9IFJlb3Jk ZXJCdWZmZXJUWE5CeVhpZChyYiwgeGlkaW4sIGZhbHNlLCBOVUxMLCBJbnZhbGlkWExvZ1Jl Y1B0ciwKLQkJCQkJCQkJZmFsc2UpOwotCi0JaWYgKCF0eG4pCi0JCXJldHVybiBmYWxzZTsK LQotCS8qIElmIHRoZXJlJ3MgdG9wLWxldmVsIHRyYW5zYWN0aW9uLCBzZWFyY2ggdGhhdCBv bmUuICovCi0JdHhuID0gKHR4bi0+dG9wdHhuKSA/IHR4bi0+dG9wdHhuIDogdHhuOwotCi0J LyogdHJhbnNhY3Rpb24gaGFzIG5vIHJlbGZpbGVub2RlcywgY2FuJ3QgYmUgdHJhbnNhY3Rp b25hbCAqLwotCWlmICghdHhuLT5zZXF1ZW5jZXNfaGFzaCkKLQkJcmV0dXJuIGZhbHNlOwot Ci0JZW50cnkgPSBoYXNoX3NlYXJjaCh0eG4tPnNlcXVlbmNlc19oYXNoLAotCQkJCQkJKHZv aWQgKikgJnJsb2NhdG9yLAotCQkJCQkJSEFTSF9GSU5ELAotCQkJCQkJJmZvdW5kKTsKLQot CWlmICghZm91bmQpCi0JCXJldHVybiBmYWxzZTsKLQotCWlmICh4aWRvdXQpCi0JCSp4aWRv dXQgPSBlbnRyeS0+dHhuLT54aWQ7Ci0KLQlyZXR1cm4gdHJ1ZTsKLX0KLQotLyoKLSAqIENs ZWFudXAgc2VxdWVuY2VzIGFmdGVyIGEgc3VidHJhbnNhY3Rpb24gZ290IGFib3J0ZWQuCi0g KgotICogVGhlIGhhc2ggdGFibGUgd2lsbCBnZXQgZGVzdHJveWVkIGluIFJlb3JkZXJCdWZm ZXJSZXR1cm5UWE4sIHNvIHdlIGRvbid0Ci0gKiBuZWVkIHRvIHdvcnJ5IGFib3V0IHRoYXQu IEJ1dCB0aGUgZW50cmllcyB3ZXJlIGNvcGllZCB0byB0aGUgcGFyZW50IHhhY3QsCi0gKiBh bmQgdGhhdCdzIHN0aWxsIGJlaW5nIGRlY29kZWQgLSB3ZSBtYWtlIHN1cmUgdG8gcmVtb3Zl IHRoZSBlbnRyaWVzIGZyb20KLSAqIHRoZSBhYm9ydGVkIG9uZS4KLSAqLwotc3RhdGljIHZv aWQKLVJlb3JkZXJCdWZmZXJTZXF1ZW5jZUNsZWFudXAoUmVvcmRlckJ1ZmZlclRYTiAqdHhu KQotewotCUhBU0hfU0VRX1NUQVRVUyBzY2FuX3N0YXR1czsKLQlSZW9yZGVyQnVmZmVyU2Vx dWVuY2VFbnQgKmVudDsKLQotCS8qIEJhaWwgb3V0IGlmIG5vdCBhIHN1YnhhY3QsIG9yIGlm IHRoZXJlIGFyZSBubyBlbnRyaWVzLiAqLwotCWlmICghcmJ0eG5faXNfa25vd25fc3VieGFj dCh0eG4pKQotCQlyZXR1cm47Ci0KLQlpZiAoIXR4bi0+c2VxdWVuY2VzX2hhc2gpCi0JCXJl dHVybjsKLQotCS8qCi0JICogU2NhbiB0aGUgdG9wLWxldmVsIHRyYW5zYWN0aW9uIGhhc2gg YW5kIHJlbW92ZSB0aGUgZW50cmllcyBmcm9tIGl0LiBJZgotCSAqIHdlIGhhdmUgZW50cmll cyBmb3Igc3VieGFjdCwgdGhlIHRvcC1sZXZlbCBoYXNoIG11c3QgaGF2ZSBiZWVuCi0JICog aW5pdGlhbGl6ZWQuCi0JICovCi0JaGFzaF9zZXFfaW5pdCgmc2Nhbl9zdGF0dXMsIHR4bi0+ c2VxdWVuY2VzX2hhc2gpOwotCXdoaWxlICgoZW50ID0gKFJlb3JkZXJCdWZmZXJTZXF1ZW5j ZUVudCAqKSBoYXNoX3NlcV9zZWFyY2goJnNjYW5fc3RhdHVzKSkgIT0gTlVMTCkKLQl7Ci0J CSh2b2lkKSBoYXNoX3NlYXJjaCh0eG4tPnRvcHR4bi0+c2VxdWVuY2VzX2hhc2gsCi0JCQkJ CQkgICAodm9pZCAqKSAmZW50LT5ybG9jYXRvciwKLQkJCQkJCSAgIEhBU0hfUkVNT1ZFLCBO VUxMKTsKLQl9Ci19Ci0KIC8qCiAgKiBBIHRyYW5zYWN0aW9uYWwgc2VxdWVuY2UgY2hhbmdl IGlzIHF1ZXVlZCB0byBiZSBwcm9jZXNzZWQgdXBvbiBjb21taXQKICAqIGFuZCBhIG5vbi10 cmFuc2FjdGlvbmFsIGNoYW5nZSBnZXRzIHByb2Nlc3NlZCBpbW1lZGlhdGVseS4KQEAgLTEx MDcsOCArOTYxLDYgQEAgUmVvcmRlckJ1ZmZlclF1ZXVlU2VxdWVuY2UoUmVvcmRlckJ1ZmZl ciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLAogCQkJCQkJICAgUmVsRmlsZUxvY2F0b3Igcmxv Y2F0b3IsIGJvb2wgdHJhbnNhY3Rpb25hbCwKIAkJCQkJCSAgIFJlb3JkZXJCdWZmZXJUdXBs ZUJ1ZiAqdHVwbGVidWYpCiB7Ci0JQXNzZXJ0Q2hlY2tTZXF1ZW5jZXMocmIpOwotCiAJLyoK IAkgKiBDaGFuZ2UgbmVlZHMgdG8gYmUgaGFuZGxlZCBhcyB0cmFuc2FjdGlvbmFsLCBiZWNh dXNlIHRoZSBzZXF1ZW5jZSB3YXMKIAkgKiBjcmVhdGVkIGluIGEgdHJhbnNhY3Rpb24gdGhh dCBpcyBzdGlsbCBzZWVuIGFzIHJ1bm5pbmcuIEluIHRoYXQgY2FzZQpAQCAtMTE0Miw5ICs5 OTQsNiBAQCBSZW9yZGVyQnVmZmVyUXVldWVTZXF1ZW5jZShSZW9yZGVyQnVmZmVyICpyYiwg VHJhbnNhY3Rpb25JZCB4aWQsCiAKIAkJY2hhbmdlLT5kYXRhLnNlcXVlbmNlLnR1cGxlID0g dHVwbGVidWY7CiAKLQkJLyogbG9va3VwIHRoZSBYSUQgZm9yIHRyYW5zYWN0aW9uIHRoYXQg Y3JlYXRlZCB0aGUgcmVsZmlsZW5vZGUgKi8KLQkJUmVvcmRlckJ1ZmZlclNlcXVlbmNlSXNU cmFuc2FjdGlvbmFsKHJiLCBybG9jYXRvciwgeGlkLCAmeGlkKTsKLQogCQkvKiB0aGUgWElE IHNob3VsZCBiZSB2YWxpZCBmb3IgYSB0cmFuc2FjdGlvbmFsIGNoYW5nZSAqLwogCQlBc3Nl cnQoVHJhbnNhY3Rpb25JZElzVmFsaWQoeGlkKSk7CiAKQEAgLTExNjcsOSArMTAxNiw2IEBA IFJlb3JkZXJCdWZmZXJRdWV1ZVNlcXVlbmNlKFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2Fj dGlvbklkIHhpZCwKIAkJLyogbm9uLXRyYW5zYWN0aW9uYWwgY2hhbmdlcyByZXF1aXJlIGEg dmFsaWQgc25hcHNob3QgKi8KIAkJQXNzZXJ0KHNuYXBzaG90X25vdyk7CiAKLQkJLyogTWFr ZSBzdXJlIHRoZSBzZXF1ZW5jZSBpcyBub3QgaW4gYW55IG9mIHRoZSBoYXNoIHRhYmxlcyAq LwotCQlBc3NlcnQoIVJlb3JkZXJCdWZmZXJTZXF1ZW5jZUlzVHJhbnNhY3Rpb25hbChyYiwg cmxvY2F0b3IsIHhpZCwgTlVMTCkpOwotCiAJCWlmICh4aWQgIT0gSW52YWxpZFRyYW5zYWN0 aW9uSWQpCiAJCQl0eG4gPSBSZW9yZGVyQnVmZmVyVFhOQnlYaWQocmIsIHhpZCwgdHJ1ZSwg TlVMTCwgbHNuLCB0cnVlKTsKIApAQCAtMTI1MSw4MCArMTA5Nyw3IEBAIFJlb3JkZXJCdWZm ZXJRdWV1ZVNlcXVlbmNlKFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlvbklkIHhpZCwK IAl9CiB9CiAKLS8qCi0gKiBSZW9yZGVyQnVmZmVyQWRkUmVsRmlsZUxvY2F0b3IKLSAqCQlB ZGQgbmV3bHkgY3JlYXRlZCByZWxmaWxlbm9kZSB0byB0aGUgaGFzaCB0YWJsZSBmb3IgdHJh bnNhY3Rpb24uCi0gKgotICogSWYgdGhlIHRyYW5zYWN0aW9uIGlzIGFscmVhZHkga25vd24g dG8gYmUgYSBzdWJ0cmFuc2FjdGlvbiwgd2UgYWRkIHRoZSBzYW1lCi0gKiBlbnRyeSBpbnRv IHRoZSBwYXJlbnQgdHJhbnNhY3Rpb24gKGJ1dCBpdCBzdGlsbCBwb2ludHMgYXQgdGhlIHN1 YnhhY3QsIHNvCi0gKiB0aGF0IHdlIGtub3cgd2hlcmUgdG8gcXVldWUgY2hhbmdlcyBvciB3 aGF0IHRvIGRpc2NhcmQgaW4gY2FzZSBvZiBhbiBhYm9ydCkuCi0gKi8KLXZvaWQKLVJlb3Jk ZXJCdWZmZXJBZGRSZWxGaWxlTG9jYXRvcihSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rp b25JZCB4aWQsCi0JCQkJCQkJICAgWExvZ1JlY1B0ciBsc24sIFJlbEZpbGVMb2NhdG9yIHJs b2NhdG9yKQotewotCWJvb2wJCWZvdW5kOwotCVJlb3JkZXJCdWZmZXJTZXF1ZW5jZUVudCAq ZW50cnk7Ci0JUmVvcmRlckJ1ZmZlclRYTiAqdHhuOwotCi0JQXNzZXJ0Q2hlY2tTZXF1ZW5j ZXMocmIpOwotCi0JLyoKLQkgKiBXZSBvbmx5IGNhcmUgYWJvdXQgc2VxdWVuY2UgcmVsZmls ZW5vZGVzIGZvciBub3csIGFuZCB0aG9zZSBhbHdheXMgaGF2ZQotCSAqIGEgWElELiBTbyBp ZiB0aGVyZSdzIG5vIFhJRCwgZG9uJ3QgYm90aGVyIGFkZGluZyB0aGVtIHRvIHRoZSBoYXNo LgotCSAqLwotCWlmICh4aWQgPT0gSW52YWxpZFRyYW5zYWN0aW9uSWQpCi0JCXJldHVybjsK LQotCS8qCi0JICogVGhpcyBtaWdodCBiZSB0aGUgZmlyc3QgY2hhbmdlIGRlY29kZWQgZm9y IHRoaXMgdHJhbnNhY3Rpb24sIHNvIG1ha2UKLQkgKiBzdXJlIHdlIGNyZWF0ZSBpdCBpZiBu ZWVkZWQuCi0JICovCi0JdHhuID0gUmVvcmRlckJ1ZmZlclRYTkJ5WGlkKHJiLCB4aWQsIHRy dWUsIE5VTEwsIGxzbiwgdHJ1ZSk7Ci0KLQkvKgotCSAqIEZpcnN0IGFkZCBpdCB0byB0aGUg dG9wLWxldmVsIHRyYW5zYWN0aW9uLCBidXQgbWFrZSBzdXJlIGl0IGxpbmtzIHRvCi0JICog dGhlIGNvcnJlY3Qgc3VidHJhbnNhY3Rpb24gKHNvIHRoYXQgd2UgYWRkIGxhdGVyIGNoYW5n ZXMgdG8gaXQpLgotCSAqLwotCWlmICh0eG4tPnRvcHR4bikKLQl7Ci0JCS8qIG1ha2Ugc3Vy ZSB0aGUgaGFzaCB0YWJsZSBpcyBpbml0aWFsaXplZCAqLwotCQlSZW9yZGVyQnVmZmVyVFhO U2VxdWVuY2VzSW5pdChyYiwgdHhuLT50b3B0eG4pOwogCi0JCS8qIHNlYXJjaCB0aGUgbG9v a3VwIHRhYmxlICovCi0JCWVudHJ5ID0gaGFzaF9zZWFyY2godHhuLT50b3B0eG4tPnNlcXVl bmNlc19oYXNoLAotCQkJCQkJCSh2b2lkICopICZybG9jYXRvciwKLQkJCQkJCQlIQVNIX0VO VEVSLAotCQkJCQkJCSZmb3VuZCk7Ci0KLQkJLyoKLQkJICogV2UndmUganVzdCBkZWNvZGVk IGNyZWF0aW9uIG9mIHRoZSByZWxmaWxlbm9kZSwgc28gaWYgd2UgZm91bmQgaXQKLQkJICog aW4gdGhlIGhhc2ggdGFibGUsIHNvbWV0aGluZyBpcyB3cm9uZy4KLQkJICovCi0JCUFzc2Vy dCghZm91bmQpOwotCi0JCWVudHJ5LT50eG4gPSB0eG47Ci0JfQotCi0JLyogbWFrZSBzdXJl IHRoZSBoYXNoIHRhYmxlIGlzIGluaXRpYWxpemVkICovCi0JUmVvcmRlckJ1ZmZlclRYTlNl cXVlbmNlc0luaXQocmIsIHR4bik7Ci0KLQkvKiBzZWFyY2ggdGhlIGxvb2t1cCB0YWJsZSAq LwotCWVudHJ5ID0gaGFzaF9zZWFyY2godHhuLT5zZXF1ZW5jZXNfaGFzaCwKLQkJCQkJCSh2 b2lkICopICZybG9jYXRvciwKLQkJCQkJCUhBU0hfRU5URVIsCi0JCQkJCQkmZm91bmQpOwot Ci0JLyoKLQkgKiBXZSd2ZSBqdXN0IGRlY29kZWQgY3JlYXRpb24gb2YgdGhlIHJlbGZpbGVu b2RlLCBzbyBpZiB3ZSBmb3VuZCBpdCBpbgotCSAqIHRoZSBoYXNoIHRhYmxlLCBzb21ldGhp bmcgaXMgd3JvbmcuCi0JICovCi0JQXNzZXJ0KCFmb3VuZCk7Ci0KLQllbnRyeS0+dHhuID0g dHhuOwotCi0JQXNzZXJ0Q2hlY2tTZXF1ZW5jZXMocmIpOwotfQogCiAvKgogICogQXNzZXJ0 VFhOTHNuT3JkZXIKQEAgLTE0MDAsMTYxICsxMTczLDYgQEAgQXNzZXJ0VFhOTHNuT3JkZXIo UmVvcmRlckJ1ZmZlciAqcmIpCiAjZW5kaWYKIH0KIAotLyoKLSAqIEFzc2VydENoZWNrU2Vx dWVuY2VzCi0gKgkJVmVyaWZ5IGNvbnNpc3RlbmN5IG9mIGhhc2ggdGFibGVzIHRyYWNraW5n IG5ldyByZWxmaWxlbm9kZXMuCi0gKgotICogV2UgY2hlY2sgdGhhdCB0aGUgaGFzaCB0YWJs ZSBpbiB0aGUgdG9wLWxldmVsIHRyYW5zYWN0aW9uIGlzIGNvbnNpc3RlbnQgd2l0aAotICog cmVzcGVjdCB0byB0aGUgaGFzaCB0YWJsZXMgaW4gaXQncyBzdWJ4YWN0cy4gVGhhdCBpcywg ZWFjaCBlbnRyeSBoYXMgdG8gYmUKLSAqIGVpdGhlciBmcm9tIHRoZSB0b3AtbGV2ZWwgeGFj dCBvciBvbmUgb2YgaXQncyBzdWJ0cmFuc2FjdGlvbnMuIExpa2V3aXNlLCBlYWNoCi0gKiBl bnRyeSBpbiBzdWJ4YWN0IGhhc2ggdGFibGUgaGFzIHRvIGhhdmUgYSBtYXRjaCBpbiB0aGUg dG9wLWxldmVsIGhhc2ggdGFibGUuCi0gKi8KLXN0YXRpYyB2b2lkCi1Bc3NlcnRDaGVja1Nl cXVlbmNlcyhSZW9yZGVyQnVmZmVyICpyYikKLXsKLSNpZmRlZiBVU0VfQVNTRVJUX0NIRUNL SU5HCi0JTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4ID0gcmItPnByaXZhdGVfZGF0YTsK LQlkbGlzdF9pdGVyCWl0ZXI7Ci0KLQkvKgotCSAqIFNraXAgdGhlIHZlcmlmaWNhdGlvbiBp ZiB3ZSBkb24ndCByZWFjaCB0aGUgTFNOIGF0IHdoaWNoIHdlIHN0YXJ0Ci0JICogZGVjb2Rp bmcgdGhlIGNvbnRlbnRzIG9mIHRyYW5zYWN0aW9ucyB5ZXQgYmVjYXVzZSB1bnRpbCB3ZSBy ZWFjaCB0aGUKLQkgKiBMU04sIHdlIGNvdWxkIGhhdmUgdHJhbnNhY3Rpb25zIHRoYXQgZG9u J3QgaGF2ZSB0aGUgYXNzb2NpYXRpb24gYmV0d2VlbgotCSAqIHRoZSB0b3AtbGV2ZWwgdHJh bnNhY3Rpb24gYW5kIHN1YnRyYW5zYWN0aW9uIHlldCBhbmQgY29uc2VxdWVudGx5IGhhdmUK LQkgKiB0aGUgc2FtZSBMU04uICBXZSBkb24ndCBndWFyYW50ZWUgdGhpcyBhc3NvY2lhdGlv biB1bnRpbCB3ZSB0cnkgdG8KLQkgKiBkZWNvZGUgdGhlIGFjdHVhbCBjb250ZW50cyBvZiB0 cmFuc2FjdGlvbi4gVGhlIG9yZGVyaW5nIG9mIHRoZSByZWNvcmRzCi0JICogcHJpb3IgdG8g dGhlIHN0YXJ0X2RlY29kaW5nX2F0IExTTiBzaG91bGQgaGF2ZSBiZWVuIGNoZWNrZWQgYmVm b3JlIHRoZQotCSAqIHJlc3RhcnQuCi0JICovCi0JaWYgKFNuYXBCdWlsZFhhY3ROZWVkc1Nr aXAoY3R4LT5zbmFwc2hvdF9idWlsZGVyLCBjdHgtPnJlYWRlci0+RW5kUmVjUHRyKSkKLQkJ cmV0dXJuOwotCi0JLyoKLQkgKiBNYWtlIHN1cmUgdGhlIHJlbGZpbGVub2RlcyBmcm9tIHN1 YnhhY3RzIGFyZSBwcm9wZXJseSByZWNvcmRlZCBpbiB0aGUKLQkgKiB0b3AtbGV2ZWwgdHJh bnNhY3Rpb24gaGFzaCB0YWJsZS4KLQkgKi8KLQlkbGlzdF9mb3JlYWNoKGl0ZXIsICZyYi0+ dG9wbGV2ZWxfYnlfbHNuKQotCXsKLQkJaW50CQkJbmVudHJpZXMgPSAwLAotCQkJCQluc3Vi ZW50cmllcyA9IDA7Ci0JCWRsaXN0X2l0ZXIJc3ViaXRlcjsKLQkJUmVvcmRlckJ1ZmZlclRY TiAqdHhuID0gZGxpc3RfY29udGFpbmVyKFJlb3JkZXJCdWZmZXJUWE4sIG5vZGUsCi0JCQkJ CQkJCQkJCQlpdGVyLmN1cik7Ci0KLQkJLyoKLQkJICogV2UgZG9uJ3Qgc2tpcCB0b3AtbGV2 ZWwgdHJhbnNhY3Rpb25zIHdpdGhvdXQgcmVsZmlsZW5vZGVzLCBiZWNhdXNlCi0JCSAqIHRo ZXJlIG1pZ2h0IGJlIGEgc3VidHJhbnNhY3Rpb24gd2l0aCBzb21lLCBhbmQgd2Ugd2FudCB0 byBkZXRlY3QKLQkJICogc3VjaCBjYXNlcyB0b28uCi0JCSAqLwotCQlpZiAodHhuLT5zZXF1 ZW5jZXNfaGFzaCkKLQkJCW5lbnRyaWVzID0gaGFzaF9nZXRfbnVtX2VudHJpZXModHhuLT5z ZXF1ZW5jZXNfaGFzaCk7Ci0KLQkJLyogd2FsayBhbGwgc3VieGFjdHMsIGFuZCBjaGVjayB0 aGUgaGFzaCB0YWJsZSBpbiBlYWNoIG9uZSAqLwotCQlkbGlzdF9mb3JlYWNoKHN1Yml0ZXIs ICZ0eG4tPnN1YnR4bnMpCi0JCXsKLQkJCUhBU0hfU0VRX1NUQVRVUyBzY2FuX3N0YXR1czsK LQkJCVJlb3JkZXJCdWZmZXJTZXF1ZW5jZUVudCAqZW50cnk7Ci0KLQkJCVJlb3JkZXJCdWZm ZXJUWE4gKnN1YnR4biA9IGRsaXN0X2NvbnRhaW5lcihSZW9yZGVyQnVmZmVyVFhOLCBub2Rl LAotCQkJCQkJCQkJCQkJCSAgIHN1Yml0ZXIuY3VyKTsKLQotCQkJLyoKLQkJCSAqIElmIHRo aXMgc3VieGFjdCBoYXMgbm8gcmVsZmlsZW5vZGVzLCBza2lwIGl0LiBXZSdsbCBkbyB0aGUK LQkJCSAqIGNoZWNrIGluIHRoZSBvcHBvc2l0ZSBkaXJlY3Rpb24gKHRoYXQgYWxsIHRvcC1s ZXZlbAotCQkJICogcmVsZmlsZW5vZGVzIGFyZSBpbiB0aGUgY29ycmVjdCBzdWJ4YWN0KSBs YXRlci4KLQkJCSAqLwotCQkJaWYgKCFzdWJ0eG4tPnNlcXVlbmNlc19oYXNoKQotCQkJCWNv bnRpbnVlOwotCi0JCQkvKiBhZGQgbnVtYmVyIG9mIHJlbGZpbGVub2RlcyBpbiB0aGlzIHN1 YnhhY3QgKi8KLQkJCW5zdWJlbnRyaWVzICs9IGhhc2hfZ2V0X251bV9lbnRyaWVzKHN1YnR4 bi0+c2VxdWVuY2VzX2hhc2gpOwotCi0JCQkvKgotCQkJICogQ2hlY2sgdGhhdCBhbGwgc3Vi eGFjdCByZWxmaWxlbm9kZXMgYXJlIGluIHRoZSB0b3AtbGV2ZWwgdHhuCi0JCQkgKiB0b28s IGFuZCBhcmUgcG9pbnRpbmcgdG8gdGhpcyBzdWJ0cmFuc2FjdGlvbi4KLQkJCSAqLwotCQkJ aGFzaF9zZXFfaW5pdCgmc2Nhbl9zdGF0dXMsIHN1YnR4bi0+c2VxdWVuY2VzX2hhc2gpOwot CQkJd2hpbGUgKChlbnRyeSA9IChSZW9yZGVyQnVmZmVyU2VxdWVuY2VFbnQgKikgaGFzaF9z ZXFfc2VhcmNoKCZzY2FuX3N0YXR1cykpICE9IE5VTEwpCi0JCQl7Ci0JCQkJYm9vbAkJZm91 bmQgPSBmYWxzZTsKLQkJCQlSZW9yZGVyQnVmZmVyU2VxdWVuY2VFbnQgKnN1YmVudHJ5Owot Ci0JCQkJLyogc2VhcmNoIGZvciB0aGUgc2FtZSByZWxmaWxlbm9kZSBpbiB0aGUgdG9wLWxl dmVsIHR4biAqLwotCQkJCXN1YmVudHJ5ID0gaGFzaF9zZWFyY2godHhuLT5zZXF1ZW5jZXNf aGFzaCwKLQkJCQkJCQkJCSAgICh2b2lkICopICZlbnRyeS0+cmxvY2F0b3IsCi0JCQkJCQkJ CQkgICBIQVNIX0ZJTkQsCi0JCQkJCQkJCQkgICAmZm91bmQpOwotCi0JCQkJLyoKLQkJCQkg KiBUaGUgdG9wLWxldmVsIHR4biBoYXNoIHNob3VsZCBoYXZlIHRoZSByZWxmaWxlbm9kZSB0 b28sIGFuZAotCQkJCSAqIGl0IHNob3VsZCBwb2ludCB0byB0aGlzIHN1YnhhY3QuCi0JCQkJ ICovCi0JCQkJQXNzZXJ0KGZvdW5kKTsKLQotCQkJCS8qCi0JCQkJICogVGhlIGVudHJ5IGhh cyB0byBwb2ludCB0byB0aGUgc3VieGFjdCAtIHRoZXJlJ3Mgbm8gc3VieGFjdAotCQkJCSAq ICJiZWxvdyIgdGhpcyBvbmUgdG8gd2hpY2ggdGhlIHJlbGZpbGVub2RlIGNvdWxkIGJlbG9u Zy4KLQkJCQkgKi8KLQkJCQlBc3NlcnQoc3ViZW50cnktPnR4biA9PSBzdWJ0eG4pOwotCQkJ fQotCQl9Ci0KLQkJLyoKLQkJICogV2Ugc2hvdWxkbid0IGhhdmUgbW9yZSByZWxmaWxlbm9k ZXMgaW4gc3VidHJhbnNhY3Rpb25zIHRoYW4gaW4gdGhlCi0JCSAqIHRvcC1sZXZlbCBvbmUu IFRoZXJlIG1pZ2h0IGJlIHJlbGZpbGVub2RlcyBpbiB0aGUgdG9wLWxldmVsIG9uZQotCQkg KiBkaXJlY3RseSwgc28gdGhpcyBuZWVkcyB0byBiZSBpbmVxdWFsaXR5LgotCQkgKi8KLQkJ QXNzZXJ0KG5lbnRyaWVzID49IG5zdWJlbnRyaWVzKTsKLQotCQkvKgotCQkgKiBOb3cgZG8g dGhlIGNoZWNrIGluIHRoZSBvcHBvc2l0ZSBkaXJlY3Rpb24gLSBjaGVjayB0aGF0IGV2ZXJ5 IGVudHJ5Ci0JCSAqIGluIHRoZSB0b3AtbGV2ZWwgdHhuIChleGNlcHQgdGhvc2UgcG9pbnRp bmcgdG8gdGhlIHRvcC1sZXZlbCB0eG4KLQkJICogaXRzZWxmKSBwb2ludCB0byBvbmUgb2Yg dGhlIHN1YnhhY3RzLCBhbmQgdGhlcmUncyBhbiBlbnRyeSBpbiB0aGUKLQkJICogc3VieGFj dCBoYXNoLgotCQkgKi8KLQkJaWYgKHR4bi0+c2VxdWVuY2VzX2hhc2gpCi0JCXsKLQkJCUhB U0hfU0VRX1NUQVRVUyBzY2FuX3N0YXR1czsKLQkJCVJlb3JkZXJCdWZmZXJTZXF1ZW5jZUVu dCAqZW50cnk7Ci0KLQkJCWhhc2hfc2VxX2luaXQoJnNjYW5fc3RhdHVzLCB0eG4tPnNlcXVl bmNlc19oYXNoKTsKLQkJCXdoaWxlICgoZW50cnkgPSAoUmVvcmRlckJ1ZmZlclNlcXVlbmNl RW50ICopIGhhc2hfc2VxX3NlYXJjaCgmc2Nhbl9zdGF0dXMpKSAhPSBOVUxMKQotCQkJewot CQkJCWJvb2wJCWZvdW5kID0gZmFsc2U7Ci0JCQkJUmVvcmRlckJ1ZmZlclNlcXVlbmNlRW50 ICpzdWJlbnRyeTsKLQotCQkJCS8qIFNraXAgZW50cmllcyBmb3IgdGhlIHRvcC1sZXZlbCB0 eG4gaXRzZWxmLiAqLwotCQkJCWlmIChlbnRyeS0+dHhuID09IHR4bikKLQkJCQkJY29udGlu dWU7Ci0KLQkJCQkvKiBJcyBpdCBhIHN1YnhhY3Qgb2YgdGhpcyB0eG4/ICovCi0JCQkJQXNz ZXJ0KHJidHhuX2lzX2tub3duX3N1YnhhY3QoZW50cnktPnR4bikpOwotCQkJCUFzc2VydChl bnRyeS0+dHhuLT50b3B0eG4gPT0gdHhuKTsKLQotCQkJCS8qCi0JCQkJICogU2VhcmNoIGZv ciB0aGUgc2FtZSByZWxmaWxlbm9kZSBpbiB0aGUgc3VieGFjdCAoaXQgc2hvdWxkCi0JCQkJ ICogYmUgaW5pdGlhbGl6ZWQsIGFzIHdlIGV4cGVjdCBpdCB0byBjb250YWluIHRoZQotCQkJ CSAqIHJlbGZpbGVub2RlKS4KLQkJCQkgKi8KLQkJCQlzdWJlbnRyeSA9IGhhc2hfc2VhcmNo KGVudHJ5LT50eG4tPnNlcXVlbmNlc19oYXNoLAotCQkJCQkJCQkJICAgKHZvaWQgKikgJmVu dHJ5LT5ybG9jYXRvciwKLQkJCQkJCQkJCSAgIEhBU0hfRklORCwKLQkJCQkJCQkJCSAgICZm b3VuZCk7Ci0KLQkJCQlBc3NlcnQoZm91bmQpOwotCi0JCQkJLyoKLQkJCQkgKiBDaGVjayB0 aGUgdHhuIHBvaW50ZXIgaW4gdGhlIHRvcC1sZXZlbCBoYXNoIHRhYmxlIGVudHJ5IGlzCi0J CQkJICogY29uc2lzdGVudCB3aXRoIHRoZSBzdWJ4YWN0IGhhc2ggdGFibGUgKHdlIGFscmVh ZHkgY2hlY2tlZAotCQkJCSAqIHRoZSBzdWJ4YWN0IGVudHJ5IHBvaW50cyB0byB0aGUgc3Vi eGFjdCBpdHNlbGYpLgotCQkJCSAqLwotCQkJCUFzc2VydChzdWJlbnRyeS0+dHhuID0gZW50 cnktPnR4bik7Ci0JCQl9Ci0JCX0KLQl9Ci0jZW5kaWYKLX0KLQogLyoKICAqIEFzc2VydENo YW5nZUxzbk9yZGVyCiAgKgpAQCAtMTY4MCw5ICsxMjk4LDYgQEAgUmVvcmRlckJ1ZmZlckFz c2lnbkNoaWxkKFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlvbklkIHhpZCwKIAlzdWJ0 eG4tPnRvcGxldmVsX3hpZCA9IHhpZDsKIAlBc3NlcnQoc3VidHhuLT5uc3VidHhucyA9PSAw KTsKIAotCS8qIFRoZXJlIHNob3VsZCBiZSBubyBzZXF1ZW5jZSByZWxmaWxlbm9kZXMgaW4g dGhlIHN1YnhhY3QgeWV0LiAqLwotCUFzc2VydCghc3VidHhuLT5zZXF1ZW5jZXNfaGFzaCk7 Ci0KIAkvKiBzZXQgdGhlIHJlZmVyZW5jZSB0byB0b3AtbGV2ZWwgdHJhbnNhY3Rpb24gKi8K IAlzdWJ0eG4tPnRvcHR4biA9IHR4bjsKIApAQCAtMzUxNiw5ICszMTMxLDYgQEAgUmVvcmRl ckJ1ZmZlckZpbmlzaFByZXBhcmVkKFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlvbklk IHhpZCwKIAlSZW9yZGVyQnVmZmVyRXhlY3V0ZUludmFsaWRhdGlvbnModHhuLT5uaW52YWxp ZGF0aW9ucywKIAkJCQkJCQkJCSAgdHhuLT5pbnZhbGlkYXRpb25zKTsKIAotCS8qIGNsZWFu dXA6IHJlbW92ZSBzZXF1ZW5jZSByZWxmaWxlbm9kZXMgZnJvbSB0aGUgdG9wLWxldmVsIHR4 biAqLwotCVJlb3JkZXJCdWZmZXJTZXF1ZW5jZUNsZWFudXAodHhuKTsKLQogCVJlb3JkZXJC dWZmZXJDbGVhbnVwVFhOKHJiLCB0eG4pOwogfQogCkBAIC0zNTY4LDEzICszMTgwLDggQEAg UmVvcmRlckJ1ZmZlckFib3J0KFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlvbklkIHhp ZCwgWExvZ1JlY1B0ciBsc24sCiAJLyogY29zbWV0aWMuLi4gKi8KIAl0eG4tPmZpbmFsX2xz biA9IGxzbjsKIAotCS8qIHJlbW92ZSBzZXF1ZW5jZSByZWxmaWxlbm9kZXMgZnJvbSB0aGUg dG9wLWxldmVsIHR4biAqLwotCVJlb3JkZXJCdWZmZXJTZXF1ZW5jZUNsZWFudXAodHhuKTsK LQogCS8qIHJlbW92ZSBwb3RlbnRpYWwgb24tZGlzayBkYXRhLCBhbmQgZGVhbGxvY2F0ZSAq LwogCVJlb3JkZXJCdWZmZXJDbGVhbnVwVFhOKHJiLCB0eG4pOwotCi0JQXNzZXJ0Q2hlY2tT ZXF1ZW5jZXMocmIpOwogfQogCiAvKgpAQCAtMzYxMCwxMyArMzIxNyw4IEBAIFJlb3JkZXJC dWZmZXJBYm9ydE9sZChSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCBvbGRlc3RS dW5uaW5nWGlkKQogCQkJaWYgKHJidHhuX2lzX3N0cmVhbWVkKHR4bikpCiAJCQkJcmItPnN0 cmVhbV9hYm9ydChyYiwgdHhuLCBJbnZhbGlkWExvZ1JlY1B0cik7CiAKLQkJCS8qIHJlbW92 ZSBzZXF1ZW5jZSByZWxmaWxlbm9kZXMgZnJvbSB0aGUgdG9wLWxldmVsIHR4biAqLwotCQkJ UmVvcmRlckJ1ZmZlclNlcXVlbmNlQ2xlYW51cCh0eG4pOwotCiAJCQkvKiByZW1vdmUgcG90 ZW50aWFsIG9uLWRpc2sgZGF0YSwgYW5kIGRlYWxsb2NhdGUgdGhpcyB0eCAqLwogCQkJUmVv cmRlckJ1ZmZlckNsZWFudXBUWE4ocmIsIHR4bik7Ci0KLQkJCUFzc2VydENoZWNrU2VxdWVu Y2VzKHJiKTsKIAkJfQogCQllbHNlCiAJCQlyZXR1cm47CkBAIC0zNjY1LDkgKzMyNjcsNiBA QCBSZW9yZGVyQnVmZmVyRm9yZ2V0KFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlvbklk IHhpZCwgWExvZ1JlY1B0ciBsc24pCiAJZWxzZQogCQlBc3NlcnQodHhuLT5uaW52YWxpZGF0 aW9ucyA9PSAwKTsKIAotCS8qIHJlbW92ZSBzZXF1ZW5jZSByZWxmaWxlbm9kZXMgZnJvbSBh IHRvcC1sZXZlbCB0eG4gKi8KLQlSZW9yZGVyQnVmZmVyU2VxdWVuY2VDbGVhbnVwKHR4bik7 Ci0KIAkvKiByZW1vdmUgcG90ZW50aWFsIG9uLWRpc2sgZGF0YSwgYW5kIGRlYWxsb2NhdGUg Ki8KIAlSZW9yZGVyQnVmZmVyQ2xlYW51cFRYTihyYiwgdHhuKTsKIH0KZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL2FjY2Vzcy9ybWdybGlzdC5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3Jt Z3JsaXN0LmgKaW5kZXggMzA1Y2E0OWE1NWYuLmM3YzYwZmNiYzg4IDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9hY2Nlc3Mvcm1ncmxpc3QuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3Mv cm1ncmxpc3QuaApAQCAtMjcsNyArMjcsNyBAQAogLyogc3ltYm9sIG5hbWUsIHRleHR1YWwg bmFtZSwgcmVkbywgZGVzYywgaWRlbnRpZnksIHN0YXJ0dXAsIGNsZWFudXAsIG1hc2ssIGRl Y29kZSAqLwogUEdfUk1HUihSTV9YTE9HX0lELCAiWExPRyIsIHhsb2dfcmVkbywgeGxvZ19k ZXNjLCB4bG9nX2lkZW50aWZ5LCBOVUxMLCBOVUxMLCBOVUxMLCB4bG9nX2RlY29kZSkKIFBH X1JNR1IoUk1fWEFDVF9JRCwgIlRyYW5zYWN0aW9uIiwgeGFjdF9yZWRvLCB4YWN0X2Rlc2Ms IHhhY3RfaWRlbnRpZnksIE5VTEwsIE5VTEwsIE5VTEwsIHhhY3RfZGVjb2RlKQotUEdfUk1H UihSTV9TTUdSX0lELCAiU3RvcmFnZSIsIHNtZ3JfcmVkbywgc21ncl9kZXNjLCBzbWdyX2lk ZW50aWZ5LCBOVUxMLCBOVUxMLCBOVUxMLCBzbWdyX2RlY29kZSkKK1BHX1JNR1IoUk1fU01H Ul9JRCwgIlN0b3JhZ2UiLCBzbWdyX3JlZG8sIHNtZ3JfZGVzYywgc21ncl9pZGVudGlmeSwg TlVMTCwgTlVMTCwgTlVMTCwgTlVMTCkKIFBHX1JNR1IoUk1fQ0xPR19JRCwgIkNMT0ciLCBj bG9nX3JlZG8sIGNsb2dfZGVzYywgY2xvZ19pZGVudGlmeSwgTlVMTCwgTlVMTCwgTlVMTCwg TlVMTCkKIFBHX1JNR1IoUk1fREJBU0VfSUQsICJEYXRhYmFzZSIsIGRiYXNlX3JlZG8sIGRi YXNlX2Rlc2MsIGRiYXNlX2lkZW50aWZ5LCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMKQogUEdf Uk1HUihSTV9UQkxTUENfSUQsICJUYWJsZXNwYWNlIiwgdGJsc3BjX3JlZG8sIHRibHNwY19k ZXNjLCB0YmxzcGNfaWRlbnRpZnksIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwpCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MveGxvZ19pbnRlcm5hbC5oIGIvc3JjL2luY2x1ZGUv YWNjZXNzL3hsb2dfaW50ZXJuYWwuaAppbmRleCBhNjM4MDkwNWZlNi4uYzU1OTc0ZjE2NGIg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy94bG9nX2ludGVybmFsLmgKKysrIGIv c3JjL2luY2x1ZGUvYWNjZXNzL3hsb2dfaW50ZXJuYWwuaApAQCAtMzEsNyArMzEsNyBAQAog LyoKICAqIEVhY2ggcGFnZSBvZiBYTE9HIGZpbGUgaGFzIGEgaGVhZGVyIGxpa2UgdGhpczoK ICAqLwotI2RlZmluZSBYTE9HX1BBR0VfTUFHSUMgMHhEMTE0CS8qIGNhbiBiZSB1c2VkIGFz IFdBTCB2ZXJzaW9uIGluZGljYXRvciAqLworI2RlZmluZSBYTE9HX1BBR0VfTUFHSUMgMHhE MTE1CS8qIGNhbiBiZSB1c2VkIGFzIFdBTCB2ZXJzaW9uIGluZGljYXRvciAqLwogCiB0eXBl ZGVmIHN0cnVjdCBYTG9nUGFnZUhlYWRlckRhdGEKIHsKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL2NvbW1hbmRzL3NlcXVlbmNlLmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9zZXF1ZW5j ZS5oCmluZGV4IDdkYjdiM2RhN2JjLi5kOTRhOTAyMmIyNSAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvY29tbWFuZHMvc2VxdWVuY2UuaAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9z ZXF1ZW5jZS5oCkBAIC00OCw2ICs0OCw3IEBAIHR5cGVkZWYgRm9ybURhdGFfcGdfc2VxdWVu Y2VfZGF0YSAqRm9ybV9wZ19zZXF1ZW5jZV9kYXRhOwogdHlwZWRlZiBzdHJ1Y3QgeGxfc2Vx X3JlYwogewogCVJlbEZpbGVMb2NhdG9yIGxvY2F0b3I7CisJYm9vbAkJICAgaXNfdHJhbnNh Y3Rpb25hbDsKIAkvKiBTRVFVRU5DRSBUVVBMRSBEQVRBIEZPTExPV1MgQVQgVEhFIEVORCAq LwogfSB4bF9zZXFfcmVjOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlv bi9kZWNvZGUuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2RlY29kZS5oCmluZGV4IDhk MDYyNDcxNjViLi4wZjhiODJjMDJkYSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGlj YXRpb24vZGVjb2RlLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vZGVjb2RlLmgK QEAgLTI4LDcgKzI4LDYgQEAgZXh0ZXJuIHZvaWQgeGFjdF9kZWNvZGUoTG9naWNhbERlY29k aW5nQ29udGV4dCAqY3R4LCBYTG9nUmVjb3JkQnVmZmVyICpidWYpOwogZXh0ZXJuIHZvaWQg c3RhbmRieV9kZWNvZGUoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBYTG9nUmVjb3Jk QnVmZmVyICpidWYpOwogZXh0ZXJuIHZvaWQgbG9naWNhbG1zZ19kZWNvZGUoTG9naWNhbERl Y29kaW5nQ29udGV4dCAqY3R4LCBYTG9nUmVjb3JkQnVmZmVyICpidWYpOwogZXh0ZXJuIHZv aWQgc2VxX2RlY29kZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFhMb2dSZWNvcmRC dWZmZXIgKmJ1Zik7Ci1leHRlcm4gdm9pZCBzbWdyX2RlY29kZShMb2dpY2FsRGVjb2RpbmdD b250ZXh0ICpjdHgsIFhMb2dSZWNvcmRCdWZmZXIgKmJ1Zik7CiAKIGV4dGVybiB2b2lkIExv Z2ljYWxEZWNvZGluZ1Byb2Nlc3NSZWNvcmQoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4 LAogCQkJCQkJCQkJCSBYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCk7CmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9yZW9yZGVyYnVmZmVyLmggYi9zcmMvaW5jbHVkZS9y ZXBsaWNhdGlvbi9yZW9yZGVyYnVmZmVyLmgKaW5kZXggYTQ0YTBmNGRmYjkuLmE5ZTQxZjlh MjY4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9yZW9yZGVyYnVmZmVy LmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vcmVvcmRlcmJ1ZmZlci5oCkBAIC00 MDAsMTIgKzQwMCw2IEBAIHR5cGVkZWYgc3RydWN0IFJlb3JkZXJCdWZmZXJUWE4KIAkgKi8K IAlIVEFCCSAgICp0b2FzdF9oYXNoOwogCi0JLyoKLQkgKiBTZXF1ZW5jZSByZWxmaWxlbm9k ZXMgY3JlYXRlZCBpbiB0aGlzIHRyYW5zYWN0aW9uIChhbHNvIGluY2x1ZGVzCi0JICogYWx0 ZXJlZCBzZXF1ZW5jZXMsIHdoaWNoIGFzc2lnbnMgbmV3IHJlbGZpbGVub2RlKS4KLQkgKi8K LQlIVEFCCSAgICpzZXF1ZW5jZXNfaGFzaDsKLQogCS8qCiAJICogbm9uLWhpZXJhcmNoaWNh bCBsaXN0IG9mIHN1YnRyYW5zYWN0aW9ucyB0aGF0IGFyZSAqbm90KiBhYm9ydGVkLiBPbmx5 CiAJICogdXNlZCBpbiB0b3BsZXZlbCB0cmFuc2FjdGlvbnMuCkBAIC03ODYsMTEgKzc4MCw0 IEBAIGV4dGVybiB2b2lkIFJlb3JkZXJCdWZmZXJTZXRSZXN0YXJ0UG9pbnQoUmVvcmRlckJ1 ZmZlciAqcmIsIFhMb2dSZWNQdHIgcHRyKTsKIAogZXh0ZXJuIHZvaWQgU3RhcnR1cFJlb3Jk ZXJCdWZmZXIodm9pZCk7CiAKLWV4dGVybiB2b2lkIFJlb3JkZXJCdWZmZXJBZGRSZWxGaWxl TG9jYXRvcihSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCB4aWQsCi0JCQkJCQkJ CQkJICAgWExvZ1JlY1B0ciBsc24sIFJlbEZpbGVMb2NhdG9yIHJsb2NhdG9yKTsKLWV4dGVy biBib29sIFJlb3JkZXJCdWZmZXJTZXF1ZW5jZUlzVHJhbnNhY3Rpb25hbChSZW9yZGVyQnVm ZmVyICpyYiwKLQkJCQkJCQkJCQkJCSBSZWxGaWxlTG9jYXRvciBsb2NhdG9yLAotCQkJCQkJ CQkJCQkJIFRyYW5zYWN0aW9uSWQgeGlkaW4sCi0JCQkJCQkJCQkJCQkgVHJhbnNhY3Rpb25J ZCAqeGlkb3V0KTsKLQogI2VuZGlmCi0tIAoyLjQyLjAKCg== --------------n6sjwQvphvF4EuHWavlOIMm0 Content-Type: text/x-patch; charset=UTF-8; name="v20231127-3-0004-Add-decoding-of-sequences-to-test_decodi.patch" Content-Disposition: attachment; filename*0="v20231127-3-0004-Add-decoding-of-sequences-to-test_decodi.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBmNmNiOGUyOWVlZWNjYTIzMzg2ODQ2M2YxZGJhMmViOTRiZDJiNzQ1IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzQDJuZHF1YWRyYW50 LmNvbT4KRGF0ZTogRnJpLCAxMyBKYW4gMjAyMyAyMDozMjo0NCArMDEwMApTdWJqZWN0OiBb UEFUQ0ggdjIwMjMxMTI3LTMgNC82XSBBZGQgZGVjb2Rpbmcgb2Ygc2VxdWVuY2VzIHRvIHRl c3RfZGVjb2RpbmcKCkV4dGVuZHMgdGVzdF9kZWNvZGluZyB3aXRoIGNhbGxiYWNrcyB0byBk ZWNvZGUgc2VxdWVuY2VzLiBUaGlzIGZlYXR1cmUKaXMgZGlzYWJsZWQgYnkgZGVmYXVsdCAo aS5lLiBzZXF1ZW5jZSBjaGFuZ2VzIGFyZSBvbWl0dGVkIGZyb20gdGhlCm91dHB1dCksIGJ1 dCBtYXkgYmUgZW5hYmxlZCBieSBwYXNzaW5nICdpbmNsdWRlLXNlcXVlbmNlcycgb3B0aW9u IHRvIHRoZQp0ZXN0X2RlY29kaW5nIHBsdWdpbi4KCkF1dGhvcjogVG9tYXMgVm9uZHJhLCBD YXJ5IEh1YW5nClJldmlld2VkLWJ5OiBBc2h1dG9zaCBCYXBhdCwgQW1pdCBLYXBpbGEsIFBl dGVyIEVpc2VudHJhdXQsIEhhbm51Cktyb3NpbmcsIEFuZHJlcyBGcmV1bmQsIFpoaWppZSBI b3UKRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9kMDQ1ZjNjMi02Y2ZiLTA2ZDMt NTU0MC1lNjNjMzIwZGY4YmNAZW50ZXJwcmlzZWRiLmNvbQpEaXNjdXNzaW9uOiBodHRwczov L3Bvc3Rnci5lcy9tLzE3MTBlZDdlMTNiLmNkNzE3NzQ2MTQzMDc0Ni4zMzcyMjY0NTYyNTQz NjA3NzgxQGhpZ2hnby5jYQotLS0KIGNvbnRyaWIvdGVzdF9kZWNvZGluZy9NYWtlZmlsZSAg ICAgICAgICAgICAgfCAgIDMgKy0KIGNvbnRyaWIvdGVzdF9kZWNvZGluZy9leHBlY3RlZC9z ZXF1ZW5jZS5vdXQgfCAzMjUgKysrKysrKysrKysrKysrKysrKysKIGNvbnRyaWIvdGVzdF9k ZWNvZGluZy9zcWwvc2VxdWVuY2Uuc3FsICAgICAgfCAxMTkgKysrKysrKwogY29udHJpYi90 ZXN0X2RlY29kaW5nL3Rlc3RfZGVjb2RpbmcuYyAgICAgICB8ICA4NyArKysrKysKIDQgZmls ZXMgY2hhbmdlZCwgNTMzIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIGNyZWF0ZSBt b2RlIDEwMDY0NCBjb250cmliL3Rlc3RfZGVjb2RpbmcvZXhwZWN0ZWQvc2VxdWVuY2Uub3V0 CiBjcmVhdGUgbW9kZSAxMDA2NDQgY29udHJpYi90ZXN0X2RlY29kaW5nL3NxbC9zZXF1ZW5j ZS5zcWwKCmRpZmYgLS1naXQgYS9jb250cmliL3Rlc3RfZGVjb2RpbmcvTWFrZWZpbGUgYi9j b250cmliL3Rlc3RfZGVjb2RpbmcvTWFrZWZpbGUKaW5kZXggYzdjZTYwMzcwNjQuLjA1YzBj NWEyZjg2IDEwMDY0NAotLS0gYS9jb250cmliL3Rlc3RfZGVjb2RpbmcvTWFrZWZpbGUKKysr IGIvY29udHJpYi90ZXN0X2RlY29kaW5nL01ha2VmaWxlCkBAIC01LDcgKzUsOCBAQCBQR0ZJ TEVERVNDID0gInRlc3RfZGVjb2RpbmcgLSBleGFtcGxlIG9mIGEgbG9naWNhbCBkZWNvZGlu ZyBvdXRwdXQgcGx1Z2luIgogCiBSRUdSRVNTID0gZGRsIHhhY3QgcmV3cml0ZSB0b2FzdCBw ZXJtaXNzaW9ucyBkZWNvZGluZ19pbl94YWN0IFwKIAlkZWNvZGluZ19pbnRvX3JlbCBiaW5h cnkgcHJlcGFyZWQgcmVwbG9yaWdpbiB0aW1lIG1lc3NhZ2VzIFwKLQlzcGlsbCBzbG90IHRy dW5jYXRlIHN0cmVhbSBzdGF0cyB0d29waGFzZSB0d29waGFzZV9zdHJlYW0KKwlzcGlsbCBz bG90IHRydW5jYXRlIHN0cmVhbSBzdGF0cyB0d29waGFzZSB0d29waGFzZV9zdHJlYW0gXAor CXNlcXVlbmNlCiBJU09MQVRJT04gPSBteGFjdCBkZWxheWVkX3N0YXJ0dXAgb25kaXNrX3N0 YXJ0dXAgY29uY3VycmVudF9kZGxfZG1sIFwKIAlvbGRlc3RfeG1pbiBzbmFwc2hvdF90cmFu c2ZlciBzdWJ4YWN0X3dpdGhvdXRfdG9wIGNvbmN1cnJlbnRfc3RyZWFtIFwKIAl0d29waGFz ZV9zbmFwc2hvdCBzbG90X2NyZWF0aW9uX2Vycm9yIGNhdGFsb2dfY2hhbmdlX3NuYXBzaG90 CmRpZmYgLS1naXQgYS9jb250cmliL3Rlc3RfZGVjb2RpbmcvZXhwZWN0ZWQvc2VxdWVuY2Uu b3V0IGIvY29udHJpYi90ZXN0X2RlY29kaW5nL2V4cGVjdGVkL3NlcXVlbmNlLm91dApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uOThhOGYyNWU1YWQKLS0tIC9k ZXYvbnVsbAorKysgYi9jb250cmliL3Rlc3RfZGVjb2RpbmcvZXhwZWN0ZWQvc2VxdWVuY2Uu b3V0CkBAIC0wLDAgKzEsMzI1IEBACistLSBwcmVkaWN0YWJpbGl0eQorU0VUIHN5bmNocm9u b3VzX2NvbW1pdCA9IG9uOworU0VMRUNUICdpbml0JyBGUk9NIHBnX2NyZWF0ZV9sb2dpY2Fs X3JlcGxpY2F0aW9uX3Nsb3QoJ3JlZ3Jlc3Npb25fc2xvdCcsICd0ZXN0X2RlY29kaW5nJyk7 CisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisgaW5pdAorKDEgcm93KQorCitDUkVBVEUgU0VR VUVOQ0UgdGVzdF9zZXF1ZW5jZTsKKy0tIHRlc3QgdGhlIHNlcXVlbmNlIGNoYW5nZXMgYnkg c2V2ZXJhbCBuZXh0dmFsKCkgY2FsbHMKK1NFTEVDVCBuZXh0dmFsKCd0ZXN0X3NlcXVlbmNl Jyk7CisgbmV4dHZhbCAKKy0tLS0tLS0tLQorICAgICAgIDEKKygxIHJvdykKKworU0VMRUNU IG5leHR2YWwoJ3Rlc3Rfc2VxdWVuY2UnKTsKKyBuZXh0dmFsIAorLS0tLS0tLS0tCisgICAg ICAgMgorKDEgcm93KQorCitTRUxFQ1QgbmV4dHZhbCgndGVzdF9zZXF1ZW5jZScpOworIG5l eHR2YWwgCistLS0tLS0tLS0KKyAgICAgICAzCisoMSByb3cpCisKK1NFTEVDVCBuZXh0dmFs KCd0ZXN0X3NlcXVlbmNlJyk7CisgbmV4dHZhbCAKKy0tLS0tLS0tLQorICAgICAgIDQKKygx IHJvdykKKworLS0gdGVzdCB0aGUgc2VxdWVuY2UgY2hhbmdlcyBieSBzZXZlcmFsIEFMVEVS IGNvbW1hbmRzCitBTFRFUiBTRVFVRU5DRSB0ZXN0X3NlcXVlbmNlIElOQ1JFTUVOVCBCWSAx MDsKK1NFTEVDVCBuZXh0dmFsKCd0ZXN0X3NlcXVlbmNlJyk7CisgbmV4dHZhbCAKKy0tLS0t LS0tLQorICAgICAgMTQKKygxIHJvdykKKworQUxURVIgU0VRVUVOQ0UgdGVzdF9zZXF1ZW5j ZSBTVEFSVCBXSVRIIDMwMDA7CitBTFRFUiBTRVFVRU5DRSB0ZXN0X3NlcXVlbmNlIE1BWFZB TFVFIDEwMDAwOworQUxURVIgU0VRVUVOQ0UgdGVzdF9zZXF1ZW5jZSBSRVNUQVJUIFdJVEgg NDAwMDsKK1NFTEVDVCBuZXh0dmFsKCd0ZXN0X3NlcXVlbmNlJyk7CisgbmV4dHZhbCAKKy0t LS0tLS0tLQorICAgIDQwMDAKKygxIHJvdykKKworLS0gdGVzdCB0aGUgc2VxdWVuY2UgY2hh bmdlcyBieSBzZXZlcmFsIHNldHZhbCgpIGNhbGxzCitTRUxFQ1Qgc2V0dmFsKCd0ZXN0X3Nl cXVlbmNlJywgMzUwMCk7Cisgc2V0dmFsIAorLS0tLS0tLS0KKyAgIDM1MDAKKygxIHJvdykK KworU0VMRUNUIG5leHR2YWwoJ3Rlc3Rfc2VxdWVuY2UnKTsKKyBuZXh0dmFsIAorLS0tLS0t LS0tCisgICAgMzUxMAorKDEgcm93KQorCitTRUxFQ1Qgc2V0dmFsKCd0ZXN0X3NlcXVlbmNl JywgMzUwMCwgdHJ1ZSk7Cisgc2V0dmFsIAorLS0tLS0tLS0KKyAgIDM1MDAKKygxIHJvdykK KworU0VMRUNUIG5leHR2YWwoJ3Rlc3Rfc2VxdWVuY2UnKTsKKyBuZXh0dmFsIAorLS0tLS0t LS0tCisgICAgMzUxMAorKDEgcm93KQorCitTRUxFQ1Qgc2V0dmFsKCd0ZXN0X3NlcXVlbmNl JywgMzUwMCwgZmFsc2UpOworIHNldHZhbCAKKy0tLS0tLS0tCisgICAzNTAwCisoMSByb3cp CisKK1NFTEVDVCBuZXh0dmFsKCd0ZXN0X3NlcXVlbmNlJyk7CisgbmV4dHZhbCAKKy0tLS0t LS0tLQorICAgIDM1MDAKKygxIHJvdykKKworLS0gc2hvdyByZXN1bHRzIGFuZCBkcm9wIHNl cXVlbmNlCitTRUxFQ1QgZGF0YSBGUk9NIHBnX2xvZ2ljYWxfc2xvdF9nZXRfY2hhbmdlcygn cmVncmVzc2lvbl9zbG90JywgTlVMTCwgTlVMTCwgJ2luY2x1ZGUteGlkcycsICcwJywgJ3Nr aXAtZW1wdHkteGFjdHMnLCAnMScsICdpbmNsdWRlLXNlcXVlbmNlcycsICcxJyk7CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgQkVHSU4KKyBzZXF1ZW5jZSBwdWJsaWMudGVzdF9zZXF1ZW5jZTog dHJhbnNhY3Rpb25hbDogMSB2YWx1ZTogMQorIENPTU1JVAorIHNlcXVlbmNlIHB1YmxpYy50 ZXN0X3NlcXVlbmNlOiB0cmFuc2FjdGlvbmFsOiAwIHZhbHVlOiAzMworIEJFR0lOCisgc2Vx dWVuY2UgcHVibGljLnRlc3Rfc2VxdWVuY2U6IHRyYW5zYWN0aW9uYWw6IDEgdmFsdWU6IDQK KyBDT01NSVQKKyBzZXF1ZW5jZSBwdWJsaWMudGVzdF9zZXF1ZW5jZTogdHJhbnNhY3Rpb25h bDogMCB2YWx1ZTogMzM0CisgQkVHSU4KKyBzZXF1ZW5jZSBwdWJsaWMudGVzdF9zZXF1ZW5j ZTogdHJhbnNhY3Rpb25hbDogMSB2YWx1ZTogNDYKKyBDT01NSVQKKyBCRUdJTgorIHNlcXVl bmNlIHB1YmxpYy50ZXN0X3NlcXVlbmNlOiB0cmFuc2FjdGlvbmFsOiAxIHZhbHVlOiAxNAor IENPTU1JVAorIEJFR0lOCisgc2VxdWVuY2UgcHVibGljLnRlc3Rfc2VxdWVuY2U6IHRyYW5z YWN0aW9uYWw6IDEgdmFsdWU6IDQwMDAKKyBDT01NSVQKKyBzZXF1ZW5jZSBwdWJsaWMudGVz dF9zZXF1ZW5jZTogdHJhbnNhY3Rpb25hbDogMCB2YWx1ZTogNDMyMAorIHNlcXVlbmNlIHB1 YmxpYy50ZXN0X3NlcXVlbmNlOiB0cmFuc2FjdGlvbmFsOiAwIHZhbHVlOiAzNTAwCisgc2Vx dWVuY2UgcHVibGljLnRlc3Rfc2VxdWVuY2U6IHRyYW5zYWN0aW9uYWw6IDAgdmFsdWU6IDM4 MzAKKyBzZXF1ZW5jZSBwdWJsaWMudGVzdF9zZXF1ZW5jZTogdHJhbnNhY3Rpb25hbDogMCB2 YWx1ZTogMzUwMAorIHNlcXVlbmNlIHB1YmxpYy50ZXN0X3NlcXVlbmNlOiB0cmFuc2FjdGlv bmFsOiAwIHZhbHVlOiAzODMwCisgc2VxdWVuY2UgcHVibGljLnRlc3Rfc2VxdWVuY2U6IHRy YW5zYWN0aW9uYWw6IDAgdmFsdWU6IDM1MDAKKyBzZXF1ZW5jZSBwdWJsaWMudGVzdF9zZXF1 ZW5jZTogdHJhbnNhY3Rpb25hbDogMCB2YWx1ZTogMzgyMAorKDI0IHJvd3MpCisKK0RST1Ag U0VRVUVOQ0UgdGVzdF9zZXF1ZW5jZTsKKy0tIHJvbGxiYWNrIG9uIHNlcXVlbmNlIGNyZWF0 aW9uIGFuZCB1cGRhdGUKK0JFR0lOOworQ1JFQVRFIFNFUVVFTkNFIHRlc3Rfc2VxdWVuY2U7 CitDUkVBVEUgVEFCTEUgdGVzdF90YWJsZSAoYSBJTlQpOworU0VMRUNUIG5leHR2YWwoJ3Rl c3Rfc2VxdWVuY2UnKTsKKyBuZXh0dmFsIAorLS0tLS0tLS0tCisgICAgICAgMQorKDEgcm93 KQorCitTRUxFQ1QgbmV4dHZhbCgndGVzdF9zZXF1ZW5jZScpOworIG5leHR2YWwgCistLS0t LS0tLS0KKyAgICAgICAyCisoMSByb3cpCisKK1NFTEVDVCBuZXh0dmFsKCd0ZXN0X3NlcXVl bmNlJyk7CisgbmV4dHZhbCAKKy0tLS0tLS0tLQorICAgICAgIDMKKygxIHJvdykKKworU0VM RUNUIHNldHZhbCgndGVzdF9zZXF1ZW5jZScsIDMwMDApOworIHNldHZhbCAKKy0tLS0tLS0t CisgICAzMDAwCisoMSByb3cpCisKK1NFTEVDVCBuZXh0dmFsKCd0ZXN0X3NlcXVlbmNlJyk7 CisgbmV4dHZhbCAKKy0tLS0tLS0tLQorICAgIDMwMDEKKygxIHJvdykKKworU0VMRUNUIG5l eHR2YWwoJ3Rlc3Rfc2VxdWVuY2UnKTsKKyBuZXh0dmFsIAorLS0tLS0tLS0tCisgICAgMzAw MgorKDEgcm93KQorCitTRUxFQ1QgbmV4dHZhbCgndGVzdF9zZXF1ZW5jZScpOworIG5leHR2 YWwgCistLS0tLS0tLS0KKyAgICAzMDAzCisoMSByb3cpCisKK0FMVEVSIFNFUVVFTkNFIHRl c3Rfc2VxdWVuY2UgUkVTVEFSVCBXSVRIIDYwMDA7CitJTlNFUlQgSU5UTyB0ZXN0X3RhYmxl IFZBTFVFUyggKFNFTEVDVCBuZXh0dmFsKCd0ZXN0X3NlcXVlbmNlJykpICk7CitTRUxFQ1Qg bmV4dHZhbCgndGVzdF9zZXF1ZW5jZScpOworIG5leHR2YWwgCistLS0tLS0tLS0KKyAgICA2 MDAxCisoMSByb3cpCisKK1JPTExCQUNLOworU0VMRUNUIGRhdGEgRlJPTSBwZ19sb2dpY2Fs X3Nsb3RfZ2V0X2NoYW5nZXMoJ3JlZ3Jlc3Npb25fc2xvdCcsIE5VTEwsIE5VTEwsICdpbmNs dWRlLXhpZHMnLCAnMCcsICdza2lwLWVtcHR5LXhhY3RzJywgJzEnLCAnaW5jbHVkZS1zZXF1 ZW5jZXMnLCAnMScpOworIGRhdGEgCistLS0tLS0KKygwIHJvd3MpCisKKy0tIHJvbGxiYWNr IG9uIHRhYmxlIGNyZWF0aW9uIHdpdGggc2VyaWFsIGNvbHVtbgorQkVHSU47CitDUkVBVEUg VEFCTEUgdGVzdF90YWJsZSAoYSBTRVJJQUwsIGIgSU5UKTsKK0lOU0VSVCBJTlRPIHRlc3Rf dGFibGUgKGIpIFZBTFVFUyAoMTAwKTsKK0lOU0VSVCBJTlRPIHRlc3RfdGFibGUgKGIpIFZB TFVFUyAoMjAwKTsKK0lOU0VSVCBJTlRPIHRlc3RfdGFibGUgKGIpIFZBTFVFUyAoMzAwKTsK K1NFTEVDVCBzZXR2YWwoJ3Rlc3RfdGFibGVfYV9zZXEnLCAzMDAwKTsKKyBzZXR2YWwgCist LS0tLS0tLQorICAgMzAwMAorKDEgcm93KQorCitJTlNFUlQgSU5UTyB0ZXN0X3RhYmxlIChi KSBWQUxVRVMgKDQwMCk7CitJTlNFUlQgSU5UTyB0ZXN0X3RhYmxlIChiKSBWQUxVRVMgKDUw MCk7CitJTlNFUlQgSU5UTyB0ZXN0X3RhYmxlIChiKSBWQUxVRVMgKDYwMCk7CitBTFRFUiBT RVFVRU5DRSB0ZXN0X3RhYmxlX2Ffc2VxIFJFU1RBUlQgV0lUSCA2MDAwOworSU5TRVJUIElO VE8gdGVzdF90YWJsZSAoYikgVkFMVUVTICg3MDApOworSU5TRVJUIElOVE8gdGVzdF90YWJs ZSAoYikgVkFMVUVTICg4MDApOworSU5TRVJUIElOVE8gdGVzdF90YWJsZSAoYikgVkFMVUVT ICg5MDApOworUk9MTEJBQ0s7CitTRUxFQ1QgZGF0YSBGUk9NIHBnX2xvZ2ljYWxfc2xvdF9n ZXRfY2hhbmdlcygncmVncmVzc2lvbl9zbG90JywgTlVMTCwgTlVMTCwgJ2luY2x1ZGUteGlk cycsICcwJywgJ3NraXAtZW1wdHkteGFjdHMnLCAnMScsICdpbmNsdWRlLXNlcXVlbmNlcycs ICcxJyk7CisgZGF0YSAKKy0tLS0tLQorKDAgcm93cykKKworLS0gcm9sbGJhY2sgb24gdGFi bGUgd2l0aCBzZXJpYWwgY29sdW1uCitDUkVBVEUgVEFCTEUgdGVzdF90YWJsZSAoYSBTRVJJ QUwsIGIgSU5UKTsKK0JFR0lOOworSU5TRVJUIElOVE8gdGVzdF90YWJsZSAoYikgVkFMVUVT ICgxMDApOworSU5TRVJUIElOVE8gdGVzdF90YWJsZSAoYikgVkFMVUVTICgyMDApOworSU5T RVJUIElOVE8gdGVzdF90YWJsZSAoYikgVkFMVUVTICgzMDApOworU0VMRUNUIHNldHZhbCgn dGVzdF90YWJsZV9hX3NlcScsIDMwMDApOworIHNldHZhbCAKKy0tLS0tLS0tCisgICAzMDAw CisoMSByb3cpCisKK0lOU0VSVCBJTlRPIHRlc3RfdGFibGUgKGIpIFZBTFVFUyAoNDAwKTsK K0lOU0VSVCBJTlRPIHRlc3RfdGFibGUgKGIpIFZBTFVFUyAoNTAwKTsKK0lOU0VSVCBJTlRP IHRlc3RfdGFibGUgKGIpIFZBTFVFUyAoNjAwKTsKK0FMVEVSIFNFUVVFTkNFIHRlc3RfdGFi bGVfYV9zZXEgUkVTVEFSVCBXSVRIIDYwMDA7CitJTlNFUlQgSU5UTyB0ZXN0X3RhYmxlIChi KSBWQUxVRVMgKDcwMCk7CitJTlNFUlQgSU5UTyB0ZXN0X3RhYmxlIChiKSBWQUxVRVMgKDgw MCk7CitJTlNFUlQgSU5UTyB0ZXN0X3RhYmxlIChiKSBWQUxVRVMgKDkwMCk7CitST0xMQkFD SzsKKy0tIGNoZWNrIHRhYmxlIGFuZCBzZXF1ZW5jZSB2YWx1ZXMgYWZ0ZXIgcm9sbGJhY2sK K1NFTEVDVCAqIGZyb20gdGVzdF90YWJsZV9hX3NlcTsKKyBsYXN0X3ZhbHVlIHwgbG9nX2Nu dCB8IGlzX2NhbGxlZCAKKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyAg ICAgICAzMDAzIHwgICAgICAzMCB8IHQKKygxIHJvdykKKworU0VMRUNUIG5leHR2YWwoJ3Rl c3RfdGFibGVfYV9zZXEnKTsKKyBuZXh0dmFsIAorLS0tLS0tLS0tCisgICAgMzAwNAorKDEg cm93KQorCitEUk9QIFRBQkxFIHRlc3RfdGFibGU7CitTRUxFQ1QgZGF0YSBGUk9NIHBnX2xv Z2ljYWxfc2xvdF9nZXRfY2hhbmdlcygncmVncmVzc2lvbl9zbG90JywgTlVMTCwgTlVMTCwg J2luY2x1ZGUteGlkcycsICcwJywgJ3NraXAtZW1wdHkteGFjdHMnLCAnMScsICdpbmNsdWRl LXNlcXVlbmNlcycsICcxJyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRh ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQkVHSU4KKyBz ZXF1ZW5jZSBwdWJsaWMudGVzdF90YWJsZV9hX3NlcTogdHJhbnNhY3Rpb25hbDogMSB2YWx1 ZTogMQorIENPTU1JVAorIHNlcXVlbmNlIHB1YmxpYy50ZXN0X3RhYmxlX2Ffc2VxOiB0cmFu c2FjdGlvbmFsOiAwIHZhbHVlOiAzMworIHNlcXVlbmNlIHB1YmxpYy50ZXN0X3RhYmxlX2Ff c2VxOiB0cmFuc2FjdGlvbmFsOiAwIHZhbHVlOiAzMDAwCisgc2VxdWVuY2UgcHVibGljLnRl c3RfdGFibGVfYV9zZXE6IHRyYW5zYWN0aW9uYWw6IDAgdmFsdWU6IDMwMzMKKyg2IHJvd3Mp CisKKy0tIHNhdmVwb2ludCB0ZXN0IG9uIHRhYmxlIHdpdGggc2VyaWFsIGNvbHVtbgorQkVH SU47CitDUkVBVEUgVEFCTEUgdGVzdF90YWJsZSAoYSBTRVJJQUwsIGIgSU5UKTsKK0lOU0VS VCBJTlRPIHRlc3RfdGFibGUgKGIpIFZBTFVFUyAoMTAwKTsKK0lOU0VSVCBJTlRPIHRlc3Rf dGFibGUgKGIpIFZBTFVFUyAoMjAwKTsKK1NBVkVQT0lOVCBhOworSU5TRVJUIElOVE8gdGVz dF90YWJsZSAoYikgVkFMVUVTICgzMDApOworUk9MTEJBQ0sgVE8gU0FWRVBPSU5UIGE7CitE Uk9QIFRBQkxFIHRlc3RfdGFibGU7CitDT01NSVQ7CitTRUxFQ1QgZGF0YSBGUk9NIHBnX2xv Z2ljYWxfc2xvdF9nZXRfY2hhbmdlcygncmVncmVzc2lvbl9zbG90JywgTlVMTCwgTlVMTCwg J2luY2x1ZGUteGlkcycsICcwJywgJ3NraXAtZW1wdHkteGFjdHMnLCAnMScsICdpbmNsdWRl LXNlcXVlbmNlcycsICcxJyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBCRUdJTgorIHNlcXVl bmNlIHB1YmxpYy50ZXN0X3RhYmxlX2Ffc2VxOiB0cmFuc2FjdGlvbmFsOiAxIHZhbHVlOiAx Cisgc2VxdWVuY2UgcHVibGljLnRlc3RfdGFibGVfYV9zZXE6IHRyYW5zYWN0aW9uYWw6IDEg dmFsdWU6IDMzCisgdGFibGUgcHVibGljLnRlc3RfdGFibGU6IElOU0VSVDogYVtpbnRlZ2Vy XToxIGJbaW50ZWdlcl06MTAwCisgdGFibGUgcHVibGljLnRlc3RfdGFibGU6IElOU0VSVDog YVtpbnRlZ2VyXToyIGJbaW50ZWdlcl06MjAwCisgQ09NTUlUCisoNiByb3dzKQorCistLSBz YXZlcG9pbnQgdGVzdCBvbiB0YWJsZSB3aXRoIHNlcmlhbCBjb2x1bW4KK0JFR0lOOworQ1JF QVRFIFNFUVVFTkNFIHRlc3Rfc2VxdWVuY2U7CitTRUxFQ1QgbmV4dHZhbCgndGVzdF9zZXF1 ZW5jZScpOworIG5leHR2YWwgCistLS0tLS0tLS0KKyAgICAgICAxCisoMSByb3cpCisKK1NF TEVDVCBzZXR2YWwoJ3Rlc3Rfc2VxdWVuY2UnLCAzMDAwKTsKKyBzZXR2YWwgCistLS0tLS0t LQorICAgMzAwMAorKDEgcm93KQorCitTRUxFQ1QgbmV4dHZhbCgndGVzdF9zZXF1ZW5jZScp OworIG5leHR2YWwgCistLS0tLS0tLS0KKyAgICAzMDAxCisoMSByb3cpCisKK1NBVkVQT0lO VCBhOworQUxURVIgU0VRVUVOQ0UgdGVzdF9zZXF1ZW5jZSBTVEFSVCBXSVRIIDcwMDA7CitT RUxFQ1Qgc2V0dmFsKCd0ZXN0X3NlcXVlbmNlJywgNTAwMCk7Cisgc2V0dmFsIAorLS0tLS0t LS0KKyAgIDUwMDAKKygxIHJvdykKKworUk9MTEJBQ0sgVE8gU0FWRVBPSU5UIGE7CitTRUxF Q1QgKiBGUk9NIHRlc3Rfc2VxdWVuY2U7CisgbGFzdF92YWx1ZSB8IGxvZ19jbnQgfCBpc19j YWxsZWQgCistLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgICAgICAgMzAw MSB8ICAgICAgMzIgfCB0CisoMSByb3cpCisKK0RST1AgU0VRVUVOQ0UgdGVzdF9zZXF1ZW5j ZTsKK0NPTU1JVDsKK1NFTEVDVCBkYXRhIEZST00gcGdfbG9naWNhbF9zbG90X2dldF9jaGFu Z2VzKCdyZWdyZXNzaW9uX3Nsb3QnLCBOVUxMLCBOVUxMLCAnaW5jbHVkZS14aWRzJywgJzAn LCAnc2tpcC1lbXB0eS14YWN0cycsICcxJywgJ2luY2x1ZGUtc2VxdWVuY2VzJywgJzEnKTsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyBCRUdJTgorIHNlcXVlbmNlIHB1YmxpYy50ZXN0X3NlcXVl bmNlOiB0cmFuc2FjdGlvbmFsOiAxIHZhbHVlOiAxCisgc2VxdWVuY2UgcHVibGljLnRlc3Rf c2VxdWVuY2U6IHRyYW5zYWN0aW9uYWw6IDEgdmFsdWU6IDMzCisgc2VxdWVuY2UgcHVibGlj LnRlc3Rfc2VxdWVuY2U6IHRyYW5zYWN0aW9uYWw6IDEgdmFsdWU6IDMwMDAKKyBzZXF1ZW5j ZSBwdWJsaWMudGVzdF9zZXF1ZW5jZTogdHJhbnNhY3Rpb25hbDogMSB2YWx1ZTogMzAzMwor IENPTU1JVAorKDYgcm93cykKKworU0VMRUNUIHBnX2Ryb3BfcmVwbGljYXRpb25fc2xvdCgn cmVncmVzc2lvbl9zbG90Jyk7CisgcGdfZHJvcF9yZXBsaWNhdGlvbl9zbG90IAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKwpkaWZmIC0tZ2l0IGEvY29udHJp Yi90ZXN0X2RlY29kaW5nL3NxbC9zZXF1ZW5jZS5zcWwgYi9jb250cmliL3Rlc3RfZGVjb2Rp bmcvc3FsL3NlcXVlbmNlLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMC4uYzE5YTVkNTA3NDcKLS0tIC9kZXYvbnVsbAorKysgYi9jb250cmliL3Rlc3RfZGVj b2Rpbmcvc3FsL3NlcXVlbmNlLnNxbApAQCAtMCwwICsxLDExOSBAQAorLS0gcHJlZGljdGFi aWxpdHkKK1NFVCBzeW5jaHJvbm91c19jb21taXQgPSBvbjsKK1NFTEVDVCAnaW5pdCcgRlJP TSBwZ19jcmVhdGVfbG9naWNhbF9yZXBsaWNhdGlvbl9zbG90KCdyZWdyZXNzaW9uX3Nsb3Qn LCAndGVzdF9kZWNvZGluZycpOworCitDUkVBVEUgU0VRVUVOQ0UgdGVzdF9zZXF1ZW5jZTsK KworLS0gdGVzdCB0aGUgc2VxdWVuY2UgY2hhbmdlcyBieSBzZXZlcmFsIG5leHR2YWwoKSBj YWxscworU0VMRUNUIG5leHR2YWwoJ3Rlc3Rfc2VxdWVuY2UnKTsKK1NFTEVDVCBuZXh0dmFs KCd0ZXN0X3NlcXVlbmNlJyk7CitTRUxFQ1QgbmV4dHZhbCgndGVzdF9zZXF1ZW5jZScpOwor U0VMRUNUIG5leHR2YWwoJ3Rlc3Rfc2VxdWVuY2UnKTsKKworLS0gdGVzdCB0aGUgc2VxdWVu Y2UgY2hhbmdlcyBieSBzZXZlcmFsIEFMVEVSIGNvbW1hbmRzCitBTFRFUiBTRVFVRU5DRSB0 ZXN0X3NlcXVlbmNlIElOQ1JFTUVOVCBCWSAxMDsKK1NFTEVDVCBuZXh0dmFsKCd0ZXN0X3Nl cXVlbmNlJyk7CisKK0FMVEVSIFNFUVVFTkNFIHRlc3Rfc2VxdWVuY2UgU1RBUlQgV0lUSCAz MDAwOworQUxURVIgU0VRVUVOQ0UgdGVzdF9zZXF1ZW5jZSBNQVhWQUxVRSAxMDAwMDsKK0FM VEVSIFNFUVVFTkNFIHRlc3Rfc2VxdWVuY2UgUkVTVEFSVCBXSVRIIDQwMDA7CitTRUxFQ1Qg bmV4dHZhbCgndGVzdF9zZXF1ZW5jZScpOworCistLSB0ZXN0IHRoZSBzZXF1ZW5jZSBjaGFu Z2VzIGJ5IHNldmVyYWwgc2V0dmFsKCkgY2FsbHMKK1NFTEVDVCBzZXR2YWwoJ3Rlc3Rfc2Vx dWVuY2UnLCAzNTAwKTsKK1NFTEVDVCBuZXh0dmFsKCd0ZXN0X3NlcXVlbmNlJyk7CitTRUxF Q1Qgc2V0dmFsKCd0ZXN0X3NlcXVlbmNlJywgMzUwMCwgdHJ1ZSk7CitTRUxFQ1QgbmV4dHZh bCgndGVzdF9zZXF1ZW5jZScpOworU0VMRUNUIHNldHZhbCgndGVzdF9zZXF1ZW5jZScsIDM1 MDAsIGZhbHNlKTsKK1NFTEVDVCBuZXh0dmFsKCd0ZXN0X3NlcXVlbmNlJyk7CisKKy0tIHNo b3cgcmVzdWx0cyBhbmQgZHJvcCBzZXF1ZW5jZQorU0VMRUNUIGRhdGEgRlJPTSBwZ19sb2dp Y2FsX3Nsb3RfZ2V0X2NoYW5nZXMoJ3JlZ3Jlc3Npb25fc2xvdCcsIE5VTEwsIE5VTEwsICdp bmNsdWRlLXhpZHMnLCAnMCcsICdza2lwLWVtcHR5LXhhY3RzJywgJzEnLCAnaW5jbHVkZS1z ZXF1ZW5jZXMnLCAnMScpOworRFJPUCBTRVFVRU5DRSB0ZXN0X3NlcXVlbmNlOworCistLSBy b2xsYmFjayBvbiBzZXF1ZW5jZSBjcmVhdGlvbiBhbmQgdXBkYXRlCitCRUdJTjsKK0NSRUFU RSBTRVFVRU5DRSB0ZXN0X3NlcXVlbmNlOworQ1JFQVRFIFRBQkxFIHRlc3RfdGFibGUgKGEg SU5UKTsKK1NFTEVDVCBuZXh0dmFsKCd0ZXN0X3NlcXVlbmNlJyk7CitTRUxFQ1QgbmV4dHZh bCgndGVzdF9zZXF1ZW5jZScpOworU0VMRUNUIG5leHR2YWwoJ3Rlc3Rfc2VxdWVuY2UnKTsK K1NFTEVDVCBzZXR2YWwoJ3Rlc3Rfc2VxdWVuY2UnLCAzMDAwKTsKK1NFTEVDVCBuZXh0dmFs KCd0ZXN0X3NlcXVlbmNlJyk7CitTRUxFQ1QgbmV4dHZhbCgndGVzdF9zZXF1ZW5jZScpOwor U0VMRUNUIG5leHR2YWwoJ3Rlc3Rfc2VxdWVuY2UnKTsKK0FMVEVSIFNFUVVFTkNFIHRlc3Rf c2VxdWVuY2UgUkVTVEFSVCBXSVRIIDYwMDA7CitJTlNFUlQgSU5UTyB0ZXN0X3RhYmxlIFZB TFVFUyggKFNFTEVDVCBuZXh0dmFsKCd0ZXN0X3NlcXVlbmNlJykpICk7CitTRUxFQ1QgbmV4 dHZhbCgndGVzdF9zZXF1ZW5jZScpOworUk9MTEJBQ0s7CitTRUxFQ1QgZGF0YSBGUk9NIHBn X2xvZ2ljYWxfc2xvdF9nZXRfY2hhbmdlcygncmVncmVzc2lvbl9zbG90JywgTlVMTCwgTlVM TCwgJ2luY2x1ZGUteGlkcycsICcwJywgJ3NraXAtZW1wdHkteGFjdHMnLCAnMScsICdpbmNs dWRlLXNlcXVlbmNlcycsICcxJyk7CisKKy0tIHJvbGxiYWNrIG9uIHRhYmxlIGNyZWF0aW9u IHdpdGggc2VyaWFsIGNvbHVtbgorQkVHSU47CitDUkVBVEUgVEFCTEUgdGVzdF90YWJsZSAo YSBTRVJJQUwsIGIgSU5UKTsKK0lOU0VSVCBJTlRPIHRlc3RfdGFibGUgKGIpIFZBTFVFUyAo MTAwKTsKK0lOU0VSVCBJTlRPIHRlc3RfdGFibGUgKGIpIFZBTFVFUyAoMjAwKTsKK0lOU0VS VCBJTlRPIHRlc3RfdGFibGUgKGIpIFZBTFVFUyAoMzAwKTsKK1NFTEVDVCBzZXR2YWwoJ3Rl c3RfdGFibGVfYV9zZXEnLCAzMDAwKTsKK0lOU0VSVCBJTlRPIHRlc3RfdGFibGUgKGIpIFZB TFVFUyAoNDAwKTsKK0lOU0VSVCBJTlRPIHRlc3RfdGFibGUgKGIpIFZBTFVFUyAoNTAwKTsK K0lOU0VSVCBJTlRPIHRlc3RfdGFibGUgKGIpIFZBTFVFUyAoNjAwKTsKK0FMVEVSIFNFUVVF TkNFIHRlc3RfdGFibGVfYV9zZXEgUkVTVEFSVCBXSVRIIDYwMDA7CitJTlNFUlQgSU5UTyB0 ZXN0X3RhYmxlIChiKSBWQUxVRVMgKDcwMCk7CitJTlNFUlQgSU5UTyB0ZXN0X3RhYmxlIChi KSBWQUxVRVMgKDgwMCk7CitJTlNFUlQgSU5UTyB0ZXN0X3RhYmxlIChiKSBWQUxVRVMgKDkw MCk7CitST0xMQkFDSzsKK1NFTEVDVCBkYXRhIEZST00gcGdfbG9naWNhbF9zbG90X2dldF9j aGFuZ2VzKCdyZWdyZXNzaW9uX3Nsb3QnLCBOVUxMLCBOVUxMLCAnaW5jbHVkZS14aWRzJywg JzAnLCAnc2tpcC1lbXB0eS14YWN0cycsICcxJywgJ2luY2x1ZGUtc2VxdWVuY2VzJywgJzEn KTsKKworLS0gcm9sbGJhY2sgb24gdGFibGUgd2l0aCBzZXJpYWwgY29sdW1uCitDUkVBVEUg VEFCTEUgdGVzdF90YWJsZSAoYSBTRVJJQUwsIGIgSU5UKTsKKworQkVHSU47CitJTlNFUlQg SU5UTyB0ZXN0X3RhYmxlIChiKSBWQUxVRVMgKDEwMCk7CitJTlNFUlQgSU5UTyB0ZXN0X3Rh YmxlIChiKSBWQUxVRVMgKDIwMCk7CitJTlNFUlQgSU5UTyB0ZXN0X3RhYmxlIChiKSBWQUxV RVMgKDMwMCk7CitTRUxFQ1Qgc2V0dmFsKCd0ZXN0X3RhYmxlX2Ffc2VxJywgMzAwMCk7CitJ TlNFUlQgSU5UTyB0ZXN0X3RhYmxlIChiKSBWQUxVRVMgKDQwMCk7CitJTlNFUlQgSU5UTyB0 ZXN0X3RhYmxlIChiKSBWQUxVRVMgKDUwMCk7CitJTlNFUlQgSU5UTyB0ZXN0X3RhYmxlIChi KSBWQUxVRVMgKDYwMCk7CitBTFRFUiBTRVFVRU5DRSB0ZXN0X3RhYmxlX2Ffc2VxIFJFU1RB UlQgV0lUSCA2MDAwOworSU5TRVJUIElOVE8gdGVzdF90YWJsZSAoYikgVkFMVUVTICg3MDAp OworSU5TRVJUIElOVE8gdGVzdF90YWJsZSAoYikgVkFMVUVTICg4MDApOworSU5TRVJUIElO VE8gdGVzdF90YWJsZSAoYikgVkFMVUVTICg5MDApOworUk9MTEJBQ0s7CisKKy0tIGNoZWNr IHRhYmxlIGFuZCBzZXF1ZW5jZSB2YWx1ZXMgYWZ0ZXIgcm9sbGJhY2sKK1NFTEVDVCAqIGZy b20gdGVzdF90YWJsZV9hX3NlcTsKK1NFTEVDVCBuZXh0dmFsKCd0ZXN0X3RhYmxlX2Ffc2Vx Jyk7CisKK0RST1AgVEFCTEUgdGVzdF90YWJsZTsKK1NFTEVDVCBkYXRhIEZST00gcGdfbG9n aWNhbF9zbG90X2dldF9jaGFuZ2VzKCdyZWdyZXNzaW9uX3Nsb3QnLCBOVUxMLCBOVUxMLCAn aW5jbHVkZS14aWRzJywgJzAnLCAnc2tpcC1lbXB0eS14YWN0cycsICcxJywgJ2luY2x1ZGUt c2VxdWVuY2VzJywgJzEnKTsKKworLS0gc2F2ZXBvaW50IHRlc3Qgb24gdGFibGUgd2l0aCBz ZXJpYWwgY29sdW1uCitCRUdJTjsKK0NSRUFURSBUQUJMRSB0ZXN0X3RhYmxlIChhIFNFUklB TCwgYiBJTlQpOworSU5TRVJUIElOVE8gdGVzdF90YWJsZSAoYikgVkFMVUVTICgxMDApOwor SU5TRVJUIElOVE8gdGVzdF90YWJsZSAoYikgVkFMVUVTICgyMDApOworU0FWRVBPSU5UIGE7 CitJTlNFUlQgSU5UTyB0ZXN0X3RhYmxlIChiKSBWQUxVRVMgKDMwMCk7CitST0xMQkFDSyBU TyBTQVZFUE9JTlQgYTsKK0RST1AgVEFCTEUgdGVzdF90YWJsZTsKK0NPTU1JVDsKK1NFTEVD VCBkYXRhIEZST00gcGdfbG9naWNhbF9zbG90X2dldF9jaGFuZ2VzKCdyZWdyZXNzaW9uX3Ns b3QnLCBOVUxMLCBOVUxMLCAnaW5jbHVkZS14aWRzJywgJzAnLCAnc2tpcC1lbXB0eS14YWN0 cycsICcxJywgJ2luY2x1ZGUtc2VxdWVuY2VzJywgJzEnKTsKKworLS0gc2F2ZXBvaW50IHRl c3Qgb24gdGFibGUgd2l0aCBzZXJpYWwgY29sdW1uCitCRUdJTjsKK0NSRUFURSBTRVFVRU5D RSB0ZXN0X3NlcXVlbmNlOworU0VMRUNUIG5leHR2YWwoJ3Rlc3Rfc2VxdWVuY2UnKTsKK1NF TEVDVCBzZXR2YWwoJ3Rlc3Rfc2VxdWVuY2UnLCAzMDAwKTsKK1NFTEVDVCBuZXh0dmFsKCd0 ZXN0X3NlcXVlbmNlJyk7CitTQVZFUE9JTlQgYTsKK0FMVEVSIFNFUVVFTkNFIHRlc3Rfc2Vx dWVuY2UgU1RBUlQgV0lUSCA3MDAwOworU0VMRUNUIHNldHZhbCgndGVzdF9zZXF1ZW5jZScs IDUwMDApOworUk9MTEJBQ0sgVE8gU0FWRVBPSU5UIGE7CitTRUxFQ1QgKiBGUk9NIHRlc3Rf c2VxdWVuY2U7CitEUk9QIFNFUVVFTkNFIHRlc3Rfc2VxdWVuY2U7CitDT01NSVQ7CitTRUxF Q1QgZGF0YSBGUk9NIHBnX2xvZ2ljYWxfc2xvdF9nZXRfY2hhbmdlcygncmVncmVzc2lvbl9z bG90JywgTlVMTCwgTlVMTCwgJ2luY2x1ZGUteGlkcycsICcwJywgJ3NraXAtZW1wdHkteGFj dHMnLCAnMScsICdpbmNsdWRlLXNlcXVlbmNlcycsICcxJyk7CisKK1NFTEVDVCBwZ19kcm9w X3JlcGxpY2F0aW9uX3Nsb3QoJ3JlZ3Jlc3Npb25fc2xvdCcpOwpkaWZmIC0tZ2l0IGEvY29u dHJpYi90ZXN0X2RlY29kaW5nL3Rlc3RfZGVjb2RpbmcuYyBiL2NvbnRyaWIvdGVzdF9kZWNv ZGluZy90ZXN0X2RlY29kaW5nLmMKaW5kZXggMjg4ZmQwYmI0YWIuLjBhNzgxZWRmZmMxIDEw MDY0NAotLS0gYS9jb250cmliL3Rlc3RfZGVjb2RpbmcvdGVzdF9kZWNvZGluZy5jCisrKyBi L2NvbnRyaWIvdGVzdF9kZWNvZGluZy90ZXN0X2RlY29kaW5nLmMKQEAgLTI5LDYgKzI5LDcg QEAgdHlwZWRlZiBzdHJ1Y3QKIAlNZW1vcnlDb250ZXh0IGNvbnRleHQ7CiAJYm9vbAkJaW5j bHVkZV94aWRzOwogCWJvb2wJCWluY2x1ZGVfdGltZXN0YW1wOworCWJvb2wJCWluY2x1ZGVf c2VxdWVuY2VzOwogCWJvb2wJCXNraXBfZW1wdHlfeGFjdHM7CiAJYm9vbAkJb25seV9sb2Nh bDsKIH0gVGVzdERlY29kaW5nRGF0YTsKQEAgLTcyLDYgKzczLDEwIEBAIHN0YXRpYyB2b2lk IHBnX2RlY29kZV9tZXNzYWdlKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwKIAkJCQkJ CQkgIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwgWExvZ1JlY1B0ciBsc24sCiAJCQkJCQkJICBi b29sIHRyYW5zYWN0aW9uYWwsIGNvbnN0IGNoYXIgKnByZWZpeCwKIAkJCQkJCQkgIFNpemUg c3osIGNvbnN0IGNoYXIgKm1lc3NhZ2UpOworc3RhdGljIHZvaWQgcGdfZGVjb2RlX3NlcXVl bmNlKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwKKwkJCQkJCQkgICBSZW9yZGVyQnVm ZmVyVFhOICp0eG4sIFhMb2dSZWNQdHIgc2VxdWVuY2VfbHNuLAorCQkJCQkJCSAgIFJlbGF0 aW9uIHJlbCwgYm9vbCB0cmFuc2FjdGlvbmFsLAorCQkJCQkJCSAgIGludDY0IHZhbHVlKTsK IHN0YXRpYyBib29sIHBnX2RlY29kZV9maWx0ZXJfcHJlcGFyZShMb2dpY2FsRGVjb2RpbmdD b250ZXh0ICpjdHgsCiAJCQkJCQkJCQkgVHJhbnNhY3Rpb25JZCB4aWQsCiAJCQkJCQkJCQkg Y29uc3QgY2hhciAqZ2lkKTsKQEAgLTExMiw2ICsxMTcsMTAgQEAgc3RhdGljIHZvaWQgcGdf ZGVjb2RlX3N0cmVhbV9tZXNzYWdlKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwKIAkJ CQkJCQkJCSBSZW9yZGVyQnVmZmVyVFhOICp0eG4sIFhMb2dSZWNQdHIgbHNuLAogCQkJCQkJ CQkJIGJvb2wgdHJhbnNhY3Rpb25hbCwgY29uc3QgY2hhciAqcHJlZml4LAogCQkJCQkJCQkJ IFNpemUgc3osIGNvbnN0IGNoYXIgKm1lc3NhZ2UpOworc3RhdGljIHZvaWQgcGdfZGVjb2Rl X3N0cmVhbV9zZXF1ZW5jZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsCisJCQkJCQkJ CQkgIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwgWExvZ1JlY1B0ciBzZXF1ZW5jZV9sc24sCisJ CQkJCQkJCQkgIFJlbGF0aW9uIHJlbCwgYm9vbCB0cmFuc2FjdGlvbmFsLAorCQkJCQkJCQkJ ICBpbnQ2NCB2YWx1ZSk7CiBzdGF0aWMgdm9pZCBwZ19kZWNvZGVfc3RyZWFtX3RydW5jYXRl KExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwKIAkJCQkJCQkJCSAgUmVvcmRlckJ1ZmZl clRYTiAqdHhuLAogCQkJCQkJCQkJICBpbnQgbnJlbGF0aW9ucywgUmVsYXRpb24gcmVsYXRp b25zW10sCkBAIC0xMzUsNiArMTQ0LDcgQEAgX1BHX291dHB1dF9wbHVnaW5faW5pdChPdXRw dXRQbHVnaW5DYWxsYmFja3MgKmNiKQogCWNiLT5maWx0ZXJfYnlfb3JpZ2luX2NiID0gcGdf ZGVjb2RlX2ZpbHRlcjsKIAljYi0+c2h1dGRvd25fY2IgPSBwZ19kZWNvZGVfc2h1dGRvd247 CiAJY2ItPm1lc3NhZ2VfY2IgPSBwZ19kZWNvZGVfbWVzc2FnZTsKKwljYi0+c2VxdWVuY2Vf Y2IgPSBwZ19kZWNvZGVfc2VxdWVuY2U7CiAJY2ItPmZpbHRlcl9wcmVwYXJlX2NiID0gcGdf ZGVjb2RlX2ZpbHRlcl9wcmVwYXJlOwogCWNiLT5iZWdpbl9wcmVwYXJlX2NiID0gcGdfZGVj b2RlX2JlZ2luX3ByZXBhcmVfdHhuOwogCWNiLT5wcmVwYXJlX2NiID0gcGdfZGVjb2RlX3By ZXBhcmVfdHhuOwpAQCAtMTQ3LDYgKzE1Nyw3IEBAIF9QR19vdXRwdXRfcGx1Z2luX2luaXQo T3V0cHV0UGx1Z2luQ2FsbGJhY2tzICpjYikKIAljYi0+c3RyZWFtX2NvbW1pdF9jYiA9IHBn X2RlY29kZV9zdHJlYW1fY29tbWl0OwogCWNiLT5zdHJlYW1fY2hhbmdlX2NiID0gcGdfZGVj b2RlX3N0cmVhbV9jaGFuZ2U7CiAJY2ItPnN0cmVhbV9tZXNzYWdlX2NiID0gcGdfZGVjb2Rl X3N0cmVhbV9tZXNzYWdlOworCWNiLT5zdHJlYW1fc2VxdWVuY2VfY2IgPSBwZ19kZWNvZGVf c3RyZWFtX3NlcXVlbmNlOwogCWNiLT5zdHJlYW1fdHJ1bmNhdGVfY2IgPSBwZ19kZWNvZGVf c3RyZWFtX3RydW5jYXRlOwogfQogCkBAIC0xNjgsNiArMTc5LDcgQEAgcGdfZGVjb2RlX3N0 YXJ0dXAoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBPdXRwdXRQbHVnaW5PcHRpb25z ICpvcHQsCiAJZGF0YS0+aW5jbHVkZV90aW1lc3RhbXAgPSBmYWxzZTsKIAlkYXRhLT5za2lw X2VtcHR5X3hhY3RzID0gZmFsc2U7CiAJZGF0YS0+b25seV9sb2NhbCA9IGZhbHNlOworCWRh dGEtPmluY2x1ZGVfc2VxdWVuY2VzID0gZmFsc2U7CiAKIAljdHgtPm91dHB1dF9wbHVnaW5f cHJpdmF0ZSA9IGRhdGE7CiAKQEAgLTI1OSw2ICsyNzEsMTcgQEAgcGdfZGVjb2RlX3N0YXJ0 dXAoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBPdXRwdXRQbHVnaW5PcHRpb25zICpv cHQsCiAJCQkJCQkgZXJybXNnKCJjb3VsZCBub3QgcGFyc2UgdmFsdWUgXCIlc1wiIGZvciBw YXJhbWV0ZXIgXCIlc1wiIiwKIAkJCQkJCQkJc3RyVmFsKGVsZW0tPmFyZyksIGVsZW0tPmRl Zm5hbWUpKSk7CiAJCX0KKwkJZWxzZSBpZiAoc3RyY21wKGVsZW0tPmRlZm5hbWUsICJpbmNs dWRlLXNlcXVlbmNlcyIpID09IDApCisJCXsKKworCQkJaWYgKGVsZW0tPmFyZyA9PSBOVUxM KQorCQkJCWRhdGEtPmluY2x1ZGVfc2VxdWVuY2VzID0gdHJ1ZTsKKwkJCWVsc2UgaWYgKCFw YXJzZV9ib29sKHN0clZhbChlbGVtLT5hcmcpLCAmZGF0YS0+aW5jbHVkZV9zZXF1ZW5jZXMp KQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURf UEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkJCSBlcnJtc2coImNvdWxkIG5vdCBwYXJzZSB2YWx1 ZSBcIiVzXCIgZm9yIHBhcmFtZXRlciBcIiVzXCIiLAorCQkJCQkJCQlzdHJWYWwoZWxlbS0+ YXJnKSwgZWxlbS0+ZGVmbmFtZSkpKTsKKwkJfQogCQllbHNlCiAJCXsKIAkJCWVyZXBvcnQo RVJST1IsCkBAIC03NjIsNiArNzg1LDM4IEBAIHBnX2RlY29kZV9tZXNzYWdlKExvZ2ljYWxE ZWNvZGluZ0NvbnRleHQgKmN0eCwKIAlPdXRwdXRQbHVnaW5Xcml0ZShjdHgsIHRydWUpOwog fQogCitzdGF0aWMgdm9pZAorcGdfZGVjb2RlX3NlcXVlbmNlKExvZ2ljYWxEZWNvZGluZ0Nv bnRleHQgKmN0eCwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAorCQkJCSAgIFhMb2dSZWNQdHIg c2VxdWVuY2VfbHNuLCBSZWxhdGlvbiByZWwsCisJCQkJICAgYm9vbCB0cmFuc2FjdGlvbmFs LAorCQkJCSAgIGludDY0IHZhbHVlKQoreworCVRlc3REZWNvZGluZ0RhdGEgKmRhdGEgPSBj dHgtPm91dHB1dF9wbHVnaW5fcHJpdmF0ZTsKKwlUZXN0RGVjb2RpbmdUeG5EYXRhICp0eG5k YXRhID0gdHhuLT5vdXRwdXRfcGx1Z2luX3ByaXZhdGU7CisKKwlpZiAoIWRhdGEtPmluY2x1 ZGVfc2VxdWVuY2VzKQorCQlyZXR1cm47CisKKwkvKiBvdXRwdXQgQkVHSU4gaWYgd2UgaGF2 ZW4ndCB5ZXQsIGJ1dCBvbmx5IGZvciB0aGUgdHJhbnNhY3Rpb25hbCBjYXNlICovCisJaWYg KHRyYW5zYWN0aW9uYWwpCisJeworCQlpZiAoZGF0YS0+c2tpcF9lbXB0eV94YWN0cyAmJiAh dHhuZGF0YS0+eGFjdF93cm90ZV9jaGFuZ2VzKQorCQl7CisJCQlwZ19vdXRwdXRfYmVnaW4o Y3R4LCBkYXRhLCB0eG4sIGZhbHNlKTsKKwkJfQorCQl0eG5kYXRhLT54YWN0X3dyb3RlX2No YW5nZXMgPSB0cnVlOworCX0KKworCU91dHB1dFBsdWdpblByZXBhcmVXcml0ZShjdHgsIHRy dWUpOworCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoY3R4LT5vdXQsICJzZXF1ZW5jZSAiKTsK KwlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGN0eC0+b3V0LAorCQkJCQkJICAgcXVvdGVfcXVh bGlmaWVkX2lkZW50aWZpZXIoZ2V0X25hbWVzcGFjZV9uYW1lKGdldF9yZWxfbmFtZXNwYWNl KFJlbGF0aW9uR2V0UmVsaWQocmVsKSkpLAorCQkJCQkJCQkJCQkJCSAgUmVsYXRpb25HZXRS ZWxhdGlvbk5hbWUocmVsKSkpOworCWFwcGVuZFN0cmluZ0luZm8oY3R4LT5vdXQsICI6IHRy YW5zYWN0aW9uYWw6ICVkIHZhbHVlOiAiIElOVDY0X0ZPUk1BVCwKKwkJCQkJIHRyYW5zYWN0 aW9uYWwsIHZhbHVlKTsKKwlPdXRwdXRQbHVnaW5Xcml0ZShjdHgsIHRydWUpOworfQorCiBz dGF0aWMgdm9pZAogcGdfZGVjb2RlX3N0cmVhbV9zdGFydChMb2dpY2FsRGVjb2RpbmdDb250 ZXh0ICpjdHgsCiAJCQkJCSAgIFJlb3JkZXJCdWZmZXJUWE4gKnR4bikKQEAgLTk3NCw2ICsx MDI5LDM4IEBAIHBnX2RlY29kZV9zdHJlYW1fbWVzc2FnZShMb2dpY2FsRGVjb2RpbmdDb250 ZXh0ICpjdHgsCiAJT3V0cHV0UGx1Z2luV3JpdGUoY3R4LCB0cnVlKTsKIH0KIAorc3RhdGlj IHZvaWQKK3BnX2RlY29kZV9zdHJlYW1fc2VxdWVuY2UoTG9naWNhbERlY29kaW5nQ29udGV4 dCAqY3R4LCBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCisJCQkJCQkgIFhMb2dSZWNQdHIgc2Vx dWVuY2VfbHNuLCBSZWxhdGlvbiByZWwsCisJCQkJCQkgIGJvb2wgdHJhbnNhY3Rpb25hbCwK KwkJCQkJCSAgaW50NjQgdmFsdWUpCit7CisJVGVzdERlY29kaW5nRGF0YSAqZGF0YSA9IGN0 eC0+b3V0cHV0X3BsdWdpbl9wcml2YXRlOworCVRlc3REZWNvZGluZ1R4bkRhdGEgKnR4bmRh dGEgPSB0eG4tPm91dHB1dF9wbHVnaW5fcHJpdmF0ZTsKKworCWlmICghZGF0YS0+aW5jbHVk ZV9zZXF1ZW5jZXMpCisJCXJldHVybjsKKworCS8qIG91dHB1dCBCRUdJTiBpZiB3ZSBoYXZl bid0IHlldCwgYnV0IG9ubHkgZm9yIHRoZSB0cmFuc2FjdGlvbmFsIGNhc2UgKi8KKwlpZiAo dHJhbnNhY3Rpb25hbCkKKwl7CisJCWlmIChkYXRhLT5za2lwX2VtcHR5X3hhY3RzICYmICF0 eG5kYXRhLT54YWN0X3dyb3RlX2NoYW5nZXMpCisJCXsKKwkJCXBnX291dHB1dF9zdHJlYW1f c3RhcnQoY3R4LCBkYXRhLCB0eG4sIGZhbHNlKTsKKwkJfQorCQl0eG5kYXRhLT54YWN0X3dy b3RlX2NoYW5nZXMgPSB0cnVlOworCX0KKworCU91dHB1dFBsdWdpblByZXBhcmVXcml0ZShj dHgsIHRydWUpOworCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoY3R4LT5vdXQsICJzdHJlYW1p bmcgc2VxdWVuY2UgIik7CisJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhjdHgtPm91dCwKKwkJ CQkJCSAgIHF1b3RlX3F1YWxpZmllZF9pZGVudGlmaWVyKGdldF9uYW1lc3BhY2VfbmFtZShn ZXRfcmVsX25hbWVzcGFjZShSZWxhdGlvbkdldFJlbGlkKHJlbCkpKSwKKwkJCQkJCQkJCQkJ CQkgIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCkpKTsKKwlhcHBlbmRTdHJpbmdJbmZv KGN0eC0+b3V0LCAiOiB0cmFuc2FjdGlvbmFsOiAlZCB2YWx1ZTogIiBJTlQ2NF9GT1JNQVQs CisJCQkJCSB0cmFuc2FjdGlvbmFsLCB2YWx1ZSk7CisJT3V0cHV0UGx1Z2luV3JpdGUoY3R4 LCB0cnVlKTsKK30KKwogLyoKICAqIEluIHN0cmVhbWluZyBtb2RlLCB3ZSBkb24ndCBkaXNw bGF5IHRoZSBkZXRhaWxlZCBpbmZvcm1hdGlvbiBvZiBUcnVuY2F0ZS4KICAqIFNlZSBwZ19k ZWNvZGVfc3RyZWFtX2NoYW5nZS4KLS0gCjIuNDIuMAoK --------------n6sjwQvphvF4EuHWavlOIMm0 Content-Type: text/x-patch; charset=UTF-8; name="v20231127-3-0005-Add-decoding-of-sequences-to-built-in-re.patch" Content-Disposition: attachment; filename*0="v20231127-3-0005-Add-decoding-of-sequences-to-built-in-re.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBlZjY2NzdjMDg0NTgzZWE0ZjViOGY1NThiYTNjNGQwYjhiNTY4ZjUyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzQDJuZHF1YWRyYW50 LmNvbT4KRGF0ZTogU3VuLCAyNiBOb3YgMjAyMyAxNTo0MDoxNSArMDEwMApTdWJqZWN0OiBb UEFUQ0ggdjIwMjMxMTI3LTMgNS82XSBBZGQgZGVjb2Rpbmcgb2Ygc2VxdWVuY2VzIHRvIGJ1 aWx0LWluCiByZXBsaWNhdGlvbgoKVGhpcyBjb21taXQgYWRkcyBzdXBwb3J0IGZvciBkZWNv ZGluZyBvZiBzZXF1ZW5jZXMgdG8gdGhlIGJ1aWx0LWluCnJlcGxpY2F0aW9uICh0aGUgaW5m cmFzdHJ1Y3R1cmUgd2FzIGFkZGVkIGJ5IGNvbW1pdCAwZGE5MmRjNTMwKS4KClRoZSBzeW50 YXggYW5kIGJlaGF2aW9yIG1vc3RseSBtaW1pY3MgaGFuZGxpbmcgb2YgdGFibGVzLCBpLmUu IGEKcHVibGljYXRpb24gbWF5IGJlIGRlZmluZWQgYXMgRk9SIEFMTCBTRVFVRU5DRVMgKHJl cGxpY2F0aW5nIGFsbApzZXF1ZW5jZXMgaW4gYSBkYXRhYmFzZSksIEZPUiBBTEwgU0VRVUVO Q0VTIElOIFNDSEVNQSAocmVwbGljYXRpbmcKYWxsIHNlcXVlbmNlcyBpbiBhIHBhcnRpY3Vs YXIgc2NoZW1hKSBvciBpbmRpdmlkdWFsIHNlcXVlbmNlcy4KClRvIHB1Ymxpc2ggc2VxdWVu Y2UgbW9kaWZpY2F0aW9ucywgdGhlIHB1YmxpY2F0aW9uIGhhcyB0byBpbmNsdWRlCidzZXF1 ZW5jZScgYWN0aW9uLiBUaGUgcHJvdG9jb2wgaXMgZXh0ZW5kZWQgd2l0aCBhIG5ldyBtZXNz YWdlLApkZXNjcmliaW5nIHNlcXVlbmNlIGluY3JlbWVudHMuCgpBIG5ldyBzeXN0ZW0gdmll dyBwZ19wdWJsaWNhdGlvbl9zZXF1ZW5jZXMgbGlzdHMgYWxsIHRoZSBzZXF1ZW5jZXMKYWRk ZWQgdG8gYSBwdWJsaWNhdGlvbiwgYm90aCBkaXJlY3RseSBhbmQgaW5kaXJlY3RseS4gVmFy aW91cyBwc3FsCmNvbW1hbmRzIChcZCBhbmQgXGRScCkgYXJlIGltcHJvdmVkIHRvIGFsc28g ZGlzcGxheSBwdWJsaWNhdGlvbnMKaW5jbHVkaW5nIGEgZ2l2ZW4gc2VxdWVuY2UsIG9yIHNl cXVlbmNlcyBpbmNsdWRlZCBpbiBhIHB1YmxpY2F0aW9uLgoKQXV0aG9yOiBUb21hcyBWb25k cmEsIENhcnkgSHVhbmcsIE1hc2FoaWtvIFNhd2FkYQpSZXZpZXdlZC1ieTogQXNodXRvc2gg QmFwYXQsIEFtaXQgS2FwaWxhLCBQZXRlciBFaXNlbnRyYXV0LCBBbWl0IEthcGlsYSwKSGFu bnUgS3Jvc2luZywgQW5kcmVzIEZyZXVuZCwgUGV0ciBKZWxpbmVrLCBaaGlqaWUgSG91CkRp c2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vZDA0NWYzYzItNmNmYi0wNmQzLTU1NDAt ZTYzYzMyMGRmOGJjQGVudGVycHJpc2VkYi5jb20KRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0 Z3IuZXMvbS8xNzEwZWQ3ZTEzYi5jZDcxNzc0NjE0MzA3NDYuMzM3MjI2NDU2MjU0MzYwNzc4 MUBoaWdoZ28uY2EKRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9DQUQyMUFvRHRL cGRKY0hPTGpmUFE3VG1wRnFOQjVfXyUzRFFfZzFlOE9CUnJ3VDVMUC0lM0RnJTQwbWFpbC5n bWFpbC5jb20KLS0tCiBkb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbCAgICAgICAgICAgICAg ICAgICAgfCAgIDEwICsKIGRvYy9zcmMvc2dtbC9wcm90b2NvbC5zZ21sICAgICAgICAgICAg ICAgICAgICB8ICAgODAgKysKIGRvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfcHVibGljYXRpb24u c2dtbCAgICAgICB8ICAgMjUgKy0KIGRvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfc3Vic2NyaXB0 aW9uLnNnbWwgICAgICB8ICAgIDggKy0KIGRvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3B1Ymxp Y2F0aW9uLnNnbWwgICAgICB8ICAgNTEgKy0KIGRvYy9zcmMvc2dtbC9zeXN0ZW0tdmlld3Mu c2dtbCAgICAgICAgICAgICAgICB8ICAgNzEgKysKIHNyYy9iYWNrZW5kL2NhdGFsb2cvb2Jq ZWN0YWRkcmVzcy5jICAgICAgICAgICB8ICAgNDUgKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cv cGdfcHVibGljYXRpb24uYyAgICAgICAgICB8ICAzMzYgKysrKystCiBzcmMvYmFja2VuZC9j YXRhbG9nL3N5c3RlbV92aWV3cy5zcWwgICAgICAgICAgfCAgIDEwICsKIHNyYy9iYWNrZW5k L2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jICAgICAgICB8ICA0MjIgKysrKystLQogc3Jj L2JhY2tlbmQvY29tbWFuZHMvc2VxdWVuY2UuYyAgICAgICAgICAgICAgIHwgIDI0OCArKyst CiBzcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMgICAgICAgfCAgMTAx ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjUmVwbGljYXRpb24uYyAgICAgICAgfCAg ICA0ICstCiBzcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55ICAgICAgICAgICAgICAgICAgICAg fCAgIDczICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Byb3RvLmMgICAg ICAgfCAgIDU1ICsKIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5j LmMgICB8ICAxMzUgKystCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtl ci5jICAgICAgfCAgIDk3ICsrCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9w Z291dHB1dC5jICAgfCAgMTA4ICstCiBzcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNo ZS5jICAgICAgICAgICAgfCAgIDI4ICstCiBzcmMvYmFja2VuZC91dGlscy9jYWNoZS9zeXNj YWNoZS5jICAgICAgICAgICAgfCAgICA1ICstCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5j ICAgICAgICAgICAgICAgICAgICAgfCAgIDY0ICstCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVt cC5oICAgICAgICAgICAgICAgICAgICAgfCAgICAzICsKIHNyYy9iaW4vcGdfZHVtcC90LzAw Ml9wZ19kdW1wLnBsICAgICAgICAgICAgICB8ICAgNDcgKy0KIHNyYy9iaW4vcHNxbC9kZXNj cmliZS5jICAgICAgICAgICAgICAgICAgICAgICB8ICAyOTcgKysrLS0KIHNyYy9iaW4vcHNx bC90YWItY29tcGxldGUuYyAgICAgICAgICAgICAgICAgICB8ICAgMzkgKy0KIHNyYy9pbmNs dWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgICAgICAgICAgICAgICB8ICAgMTMgKwogc3JjL2lu Y2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oICAgICAgICAgIHwgICAyNiArLQogLi4u L2NhdGFsb2cvcGdfcHVibGljYXRpb25fbmFtZXNwYWNlLmggICAgICAgIHwgICAxMCArLQog c3JjL2luY2x1ZGUvY29tbWFuZHMvc2VxdWVuY2UuaCAgICAgICAgICAgICAgIHwgICAgMSAr CiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggICAgICAgICAgICAgICAgfCAgIDEw ICstCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscHJvdG8uaCAgICAgICAgfCAg IDE5ICstCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL29iamVjdF9hZGRyZXNzLm91dCAg fCAgIDIwICstCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BzcWwub3V0ICAgICAgICAg ICAgfCAgICA2ICstCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91 dCAgICAgfCAxMDU1ICsrKysrKysrKysrKystLS0tCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3J1bGVzLm91dCAgICAgICAgICAgfCAgICA4ICsKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L29iamVjdF9hZGRyZXNzLnNxbCAgICAgICB8ICAgIDUgKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mv c3FsL3B1YmxpY2F0aW9uLnNxbCAgICAgICAgICB8ICAyMzEgKysrLQogc3JjL3Rlc3Qvc3Vi c2NyaXB0aW9uL3QvMDM0X3NlcXVlbmNlcy5wbCAgICAgIHwgIDIwNyArKysrCiBzcmMvdG9v bHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCAgICAgICAgICAgICAgfCAgICAxICsKIDM5IGZp bGVzIGNoYW5nZWQsIDM0NTIgaW5zZXJ0aW9ucygrKSwgNTIyIGRlbGV0aW9ucygtKQogY3Jl YXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzNF9zZXF1ZW5jZXMu cGwKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbCBiL2RvYy9zcmMv c2dtbC9jYXRhbG9ncy5zZ21sCmluZGV4IDNlYzczOTFlYzVlLi5kNjFmYTAxNDMxNiAxMDA2 NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21s L2NhdGFsb2dzLnNnbWwKQEAgLTY0MjUsNiArNjQyNSwxNiBAQCBTQ1JBTS1TSEEtMjU2JDxy ZXBsYWNlYWJsZT4mbHQ7aXRlcmF0aW9uIGNvdW50Jmd0OzwvcmVwbGFjZWFibGU+OjxyZXBs YWNlYWJsZT4mbAogICAgICAgIFJlZmVyZW5jZSB0byBzY2hlbWEKICAgICAgIDwvcGFyYT48 L2VudHJ5PgogICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9 ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4K KyAgICAgICA8c3RydWN0ZmllbGQ+cG50eXBlPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+Y2hhcjwv dHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIERldGVybWluZXMg d2hpY2ggb2JqZWN0IHR5cGUgaXMgaW5jbHVkZWQgZnJvbSB0aGlzIHNjaGVtYS4KKyAgICAg ICA8bGl0ZXJhbD50PC9saXRlcmFsPiBmb3IgdGFibGVzLCA8bGl0ZXJhbD5zPC9saXRlcmFs PiBmb3Igc2VxdWVuY2VzCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CiAg ICAgPC90Ym9keT4KICAgIDwvdGdyb3VwPgogICA8L3RhYmxlPgpkaWZmIC0tZ2l0IGEvZG9j L3NyYy9zZ21sL3Byb3RvY29sLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcHJvdG9jb2wuc2dtbApp bmRleCBhZjNmMDE2Zjc0Ni4uYmZmZjE1ZTA0MDcgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dt bC9wcm90b2NvbC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9wcm90b2NvbC5zZ21sCkBAIC02 Mzc2LDYgKzYzNzYsODYgQEAgcHNxbCAiZGJuYW1lPXBvc3RncmVzIHJlcGxpY2F0aW9uPWRh dGFiYXNlIiAtYyAiSURFTlRJRllfU1lTVEVNOyIKICAgICA8L2xpc3RpdGVtPgogICAgPC92 YXJsaXN0ZW50cnk+CiAKKyAgIDx2YXJsaXN0ZW50cnkgaWQ9InByb3RvY29sLWxvZ2ljYWxy ZXAtbWVzc2FnZS1mb3JtYXRzLVNlcXVlbmNlIj4KKyAgICA8dGVybT5TZXF1ZW5jZTwvdGVy bT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDx2YXJpYWJsZWxpc3Q+CisgICAgICA8dmFybGlz dGVudHJ5PgorICAgICAgIDx0ZXJtPkJ5dGUxKCdYJyk8L3Rlcm0+CisgICAgICAgPGxpc3Rp dGVtPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgIElkZW50aWZpZXMgdGhlIG1lc3NhZ2Ug YXMgYSBzZXF1ZW5jZSBtZXNzYWdlLgorICAgICAgICA8L3BhcmE+CisgICAgICAgPC9saXN0 aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorCisgICAgICA8dmFybGlzdGVudHJ5Pgor ICAgICAgIDx0ZXJtPkludDMyIChUcmFuc2FjdGlvbklkKTwvdGVybT4KKyAgICAgICA8bGlz dGl0ZW0+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgWGlkIG9mIHRoZSB0cmFuc2FjdGlv biAob25seSBwcmVzZW50IGZvciBzdHJlYW1lZCB0cmFuc2FjdGlvbnMpLgorICAgICAgICAg VGhpcyBmaWVsZCBpcyBhdmFpbGFibGUgc2luY2UgcHJvdG9jb2wgdmVyc2lvbiAyLgorICAg ICAgICA8L3BhcmE+CisgICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5 PgorCisgICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgIDx0ZXJtPkludDggKDApPC90ZXJt PgorICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICBGbGFnczsg Y3VycmVudGx5IHVudXNlZC4KKyAgICAgICAgPC9wYXJhPgorICAgICAgIDwvbGlzdGl0ZW0+ CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAg ICA8dGVybT5JbnQ2NCAoWExvZ1JlY1B0cik8L3Rlcm0+CisgICAgICAgPGxpc3RpdGVtPgor ICAgICAgICA8cGFyYT4KKyAgICAgICAgIFRoZSBMU04gb2YgdGhlIHNlcXVlbmNlIGluY3Jl bWVudC4KKyAgICAgICAgPC9wYXJhPgorICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8L3Zh cmxpc3RlbnRyeT4KKworICAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICA8dGVybT5TdHJp bmc8L3Rlcm0+CisgICAgICAgPGxpc3RpdGVtPgorICAgICAgICA8cGFyYT4KKyAgICAgICAg IE5hbWVzcGFjZSAoZW1wdHkgc3RyaW5nIGZvciA8bGl0ZXJhbD5wZ19jYXRhbG9nPC9saXRl cmFsPikuCisgICAgICAgIDwvcGFyYT4KKyAgICAgICA8L2xpc3RpdGVtPgorICAgICAgPC92 YXJsaXN0ZW50cnk+CisKKyAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgPHRlcm0+U3Ry aW5nPC90ZXJtPgorICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgPHBhcmE+CisgICAgICAg ICBTZXF1ZW5jZSBuYW1lLgorICAgICAgICA8L3BhcmE+CisgICAgICAgPC9saXN0aXRlbT4K KyAgICAgIDwvdmFybGlzdGVudHJ5PgorCisgICAgICA8dmFybGlzdGVudHJ5PgorICAgICAg IDx0ZXJtPkludDg8L3Rlcm0+CisgICAgICAgPGxpc3RpdGVtPgorICAgICAgICA8cGFyYT4K KyAgICAgICAgIDEgaWYgdGhlIHNlcXVlbmNlIHVwZGF0ZSBpcyB0cmFuc2FjdGlvbmFsLCAw IG90aGVyd2lzZS4KKyAgICAgICAgPC9wYXJhPgorICAgICAgIDwvbGlzdGl0ZW0+CisgICAg ICA8L3Zhcmxpc3RlbnRyeT4KKworICAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICA8dGVy bT5JbnQ2NDwvdGVybT4KKyAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgIDxwYXJhPgorICAg ICAgICAgPHN0cnVjdGZpZWxkPnZhbHVlPC9zdHJ1Y3RmaWVsZD4gdmFsdWUgb2YgdGhlIHNl cXVlbmNlLgorICAgICAgICA8L3BhcmE+CisgICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDwv dmFybGlzdGVudHJ5PgorICAgICA8L3ZhcmlhYmxlbGlzdD4KKyAgICA8L2xpc3RpdGVtPgor ICAgPC92YXJsaXN0ZW50cnk+CisKICAgIDx2YXJsaXN0ZW50cnkgaWQ9InByb3RvY29sLWxv Z2ljYWxyZXAtbWVzc2FnZS1mb3JtYXRzLVR5cGUiPgogICAgIDx0ZXJtPlR5cGU8L3Rlcm0+ CiAgICAgPGxpc3RpdGVtPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9w dWJsaWNhdGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9wdWJsaWNhdGlvbi5z Z21sCmluZGV4IDQ0YWU3ZTBlODcxLi44Y2FmMjEzNWZjNyAxMDA2NDQKLS0tIGEvZG9jL3Ny Yy9zZ21sL3JlZi9hbHRlcl9wdWJsaWNhdGlvbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9y ZWYvYWx0ZXJfcHVibGljYXRpb24uc2dtbApAQCAtMzEsNyArMzEsOSBAQCBBTFRFUiBQVUJM SUNBVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFi bGU+IFJFTkFNRSBUTyA8cgogPHBocmFzZT53aGVyZSA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+cHVibGljYXRpb25fb2JqZWN0PC9yZXBsYWNlYWJsZT4gaXMgb25lIG9mOjwv cGhyYXNlPgogCiAgICAgVEFCTEUgWyBPTkxZIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBbICogXSBbICggPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0g KSBdIFsgV0hFUkUgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZXhwcmVzc2lv bjwvcmVwbGFjZWFibGU+ICkgXSBbLCAuLi4gXQorICAgIFNFUVVFTkNFIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5zZXF1ZW5jZV9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4u IF0KICAgICBUQUJMRVMgSU4gU0NIRU1BIHsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPnNjaGVtYV9uYW1lPC9yZXBsYWNlYWJsZT4gfCBDVVJSRU5UX1NDSEVNQSB9IFssIC4u LiBdCisgICAgU0VRVUVOQ0VTIElOIFNDSEVNQSB7IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5zY2hlbWFfbmFtZTwvcmVwbGFjZWFibGU+IHwgQ1VSUkVOVF9TQ0hFTUEgfSBb LCAuLi4gXQogPC9zeW5vcHNpcz4KICA8L3JlZnN5bm9wc2lzZGl2PgogCkBAIC00NCwxMyAr NDYsMTMgQEAgQUxURVIgUFVCTElDQVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBSRU5BTUUgVE8gPHIKICAgPC9wYXJhPgogCiAgIDxw YXJhPgotICAgVGhlIGZpcnN0IHRocmVlIHZhcmlhbnRzIGNoYW5nZSB3aGljaCB0YWJsZXMv c2NoZW1hcyBhcmUgcGFydCBvZiB0aGUKLSAgIHB1YmxpY2F0aW9uLiAgVGhlIDxsaXRlcmFs PlNFVDwvbGl0ZXJhbD4gY2xhdXNlIHdpbGwgcmVwbGFjZSB0aGUgbGlzdCBvZgotICAgdGFi bGVzL3NjaGVtYXMgaW4gdGhlIHB1YmxpY2F0aW9uIHdpdGggdGhlIHNwZWNpZmllZCBsaXN0 OyB0aGUgZXhpc3RpbmcKLSAgIHRhYmxlcy9zY2hlbWFzIHRoYXQgd2VyZSBwcmVzZW50IGlu IHRoZSBwdWJsaWNhdGlvbiB3aWxsIGJlIHJlbW92ZWQuICBUaGUKLSAgIDxsaXRlcmFsPkFE RDwvbGl0ZXJhbD4gYW5kIDxsaXRlcmFsPkRST1A8L2xpdGVyYWw+IGNsYXVzZXMgd2lsbCBh ZGQgYW5kCi0gICByZW1vdmUgb25lIG9yIG1vcmUgdGFibGVzL3NjaGVtYXMgZnJvbSB0aGUg cHVibGljYXRpb24uICBOb3RlIHRoYXQgYWRkaW5nCi0gICB0YWJsZXMvc2NoZW1hcyB0byBh IHB1YmxpY2F0aW9uIHRoYXQgaXMgYWxyZWFkeSBzdWJzY3JpYmVkIHRvIHdpbGwgcmVxdWly ZSBhbgorICAgVGhlIGZpcnN0IHRocmVlIHZhcmlhbnRzIGNoYW5nZSB3aGljaCBvYmplY3Rz ICh0YWJsZXMsIHNlcXVlbmNlcyBvciBzY2hlbWFzKQorICAgYXJlIHBhcnQgb2YgdGhlIHB1 YmxpY2F0aW9uLiAgVGhlIDxsaXRlcmFsPlNFVDwvbGl0ZXJhbD4gY2xhdXNlIHdpbGwgcmVw bGFjZQorICAgdGhlIGxpc3Qgb2Ygb2JqZWN0cyBpbiB0aGUgcHVibGljYXRpb24gd2l0aCB0 aGUgc3BlY2lmaWVkIGxpc3Q7IHRoZSBleGlzdGluZworICAgb2JqZWN0cyB0aGF0IHdlcmUg cHJlc2VudCBpbiB0aGUgcHVibGljYXRpb24gd2lsbCBiZSByZW1vdmVkLgorICAgVGhlIDxs aXRlcmFsPkFERDwvbGl0ZXJhbD4gYW5kIDxsaXRlcmFsPkRST1A8L2xpdGVyYWw+IGNsYXVz ZXMgd2lsbCBhZGQgYW5kCisgICByZW1vdmUgb25lIG9yIG1vcmUgb2JqZWN0cyBmcm9tIHRo ZSBwdWJsaWNhdGlvbi4gIE5vdGUgdGhhdCBhZGRpbmcgb2JqZWN0cworICAgdG8gYSBwdWJs aWNhdGlvbiB0aGF0IGlzIGFscmVhZHkgc3Vic2NyaWJlZCB0byB3aWxsIHJlcXVpcmUgYW4K ICAgIDxsaW5rIGxpbmtlbmQ9InNxbC1hbHRlcnN1YnNjcmlwdGlvbi1wYXJhbXMtcmVmcmVz aC1wdWJsaWNhdGlvbiI+CiAgICA8bGl0ZXJhbD5BTFRFUiBTVUJTQ1JJUFRJT04gLi4uIFJF RlJFU0ggUFVCTElDQVRJT048L2xpdGVyYWw+PC9saW5rPiBhY3Rpb24gb24gdGhlCiAgICBz dWJzY3JpYmluZyBzaWRlIGluIG9yZGVyIHRvIGJlY29tZSBlZmZlY3RpdmUuIE5vdGUgYWxz byB0aGF0CkBAIC0xMzgsNiArMTQwLDE1IEBAIEFMVEVSIFBVQkxJQ0FUSU9OIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4gUkVOQU1FIFRPIDxy CiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgogCisgICA8dmFybGlzdGVu dHJ5PgorICAgIDx0ZXJtPjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zZXF1ZW5j ZV9uYW1lPC9yZXBsYWNlYWJsZT48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFy YT4KKyAgICAgIE5hbWUgb2YgYW4gZXhpc3Rpbmcgc2VxdWVuY2UuCisgICAgIDwvcGFyYT4K KyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKICAgIDx2YXJsaXN0ZW50 cnk+CiAgICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnNjaGVtYV9u YW1lPC9yZXBsYWNlYWJsZT48L3Rlcm0+CiAgICAgPGxpc3RpdGVtPgpkaWZmIC0tZ2l0IGEv ZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9zdWJzY3JpcHRpb24uc2dtbCBiL2RvYy9zcmMvc2dt bC9yZWYvYWx0ZXJfc3Vic2NyaXB0aW9uLnNnbWwKaW5kZXggNmQzNmZmMGRjOTAuLjQ3OWVj NDk1ODk2IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3N1YnNjcmlwdGlv bi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfc3Vic2NyaXB0aW9uLnNnbWwK QEAgLTE1Miw4ICsxNTIsOCBAQCBBTFRFUiBTVUJTQ1JJUFRJT04gPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBSRU5BTUUgVE8gPAogICAgIDxs aXN0aXRlbT4KICAgICAgPHBhcmE+CiAgICAgICBGZXRjaCBtaXNzaW5nIHRhYmxlIGluZm9y bWF0aW9uIGZyb20gcHVibGlzaGVyLiAgVGhpcyB3aWxsIHN0YXJ0Ci0gICAgICByZXBsaWNh dGlvbiBvZiB0YWJsZXMgdGhhdCB3ZXJlIGFkZGVkIHRvIHRoZSBzdWJzY3JpYmVkLXRvIHB1 YmxpY2F0aW9ucwotICAgICAgc2luY2UgPGxpbmsgbGlua2VuZD0ic3FsLWNyZWF0ZXN1YnNj cmlwdGlvbiI+CisgICAgICByZXBsaWNhdGlvbiBvZiB0YWJsZXMgYW5kIHNlcXVlbmNlcyB0 aGF0IHdlcmUgYWRkZWQgdG8gdGhlIHN1YnNjcmliZWQtdG8KKyAgICAgIHB1YmxpY2F0aW9u cyBzaW5jZSA8bGluayBsaW5rZW5kPSJzcWwtY3JlYXRlc3Vic2NyaXB0aW9uIj4KICAgICAg IDxjb21tYW5kPkNSRUFURSBTVUJTQ1JJUFRJT048L2NvbW1hbmQ+PC9saW5rPiBvcgogICAg ICAgdGhlIGxhc3QgaW52b2NhdGlvbiBvZiA8Y29tbWFuZD5SRUZSRVNIIFBVQkxJQ0FUSU9O PC9jb21tYW5kPi4KICAgICAgPC9wYXJhPgpAQCAtMTcyLDggKzE3Miw4IEBAIEFMVEVSIFNV QlNDUklQVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFj ZWFibGU+IFJFTkFNRSBUTyA8CiAgICAgICAgICAgVGhlIGRlZmF1bHQgaXMgPGxpdGVyYWw+ dHJ1ZTwvbGl0ZXJhbD4uCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8cGFyYT4KLSAg ICAgICAgICBQcmV2aW91c2x5IHN1YnNjcmliZWQgdGFibGVzIGFyZSBub3QgY29waWVkLCBl dmVuIGlmIGEgdGFibGUncyByb3cKLSAgICAgICAgICBmaWx0ZXIgPGxpdGVyYWw+V0hFUkU8 L2xpdGVyYWw+IGNsYXVzZSBoYXMgc2luY2UgYmVlbiBtb2RpZmllZC4KKyAgICAgICAgICBQ cmV2aW91c2x5IHN1YnNjcmliZWQgdGFibGVzIGFuZCBzZXF1ZW5jZXMgYXJlIG5vdCBjb3Bp ZWQsIGV2ZW4gaWYgYQorICAgICAgICAgIHRhYmxlJ3Mgcm93IGZpbHRlciA8bGl0ZXJhbD5X SEVSRTwvbGl0ZXJhbD4gY2xhdXNlIGhhcyBzaW5jZSBiZWVuIG1vZGlmaWVkLgogICAgICAg ICAgPC9wYXJhPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgU2VlIDx4cmVmIGxpbmtl bmQ9InNxbC1jcmVhdGVzdWJzY3JpcHRpb24tbm90ZXMiLz4gZm9yIGRldGFpbHMgb2YKZGlm ZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3B1YmxpY2F0aW9uLnNnbWwgYi9k b2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9wdWJsaWNhdGlvbi5zZ21sCmluZGV4IGZkOWM1ZGVh Yzk1Li5iYTU3OGViOWFhNCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVf cHVibGljYXRpb24uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9wdWJsaWNh dGlvbi5zZ21sCkBAIC0yMiwxNCArMjIsMjEgQEAgUG9zdGdyZVNRTCBkb2N1bWVudGF0aW9u CiAgPHJlZnN5bm9wc2lzZGl2PgogPHN5bm9wc2lzPgogQ1JFQVRFIFBVQkxJQ0FUSU9OIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4KLSAgICBb IEZPUiBBTEwgVEFCTEVTCisgICAgWyBGT1IgQUxMIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5vYmplY3RfdHlwZTwvcmVwbGFjZWFibGU+IFssIC4uLl0KICAgICAgIHwgRk9S IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wdWJsaWNhdGlvbl9vYmplY3Q8L3Jl cGxhY2VhYmxlPiBbLCAuLi4gXSBdCiAgICAgWyBXSVRIICggPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnB1YmxpY2F0aW9uX3BhcmFtZXRlcjwvcmVwbGFjZWFibGU+IFs9IDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj52YWx1ZTwvcmVwbGFjZWFibGU+XSBbLCAu Li4gXSApIF0KIAorPHBocmFzZT53aGVyZSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+b2JqZWN0IHR5cGU8L3JlcGxhY2VhYmxlPiBpcyBvbmUgb2Y6PC9waHJhc2U+CisKKyAg ICBUQUJMRVMKKyAgICBTRVFVRU5DRVMKKwogPHBocmFzZT53aGVyZSA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+cHVibGljYXRpb25fb2JqZWN0PC9yZXBsYWNlYWJsZT4gaXMg b25lIG9mOjwvcGhyYXNlPgogCiAgICAgVEFCTEUgWyBPTkxZIF0gPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBbICogXSBbICggPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4g WywgLi4uIF0gKSBdIFsgV0hFUkUgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ ZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+ICkgXSBbLCAuLi4gXQorICAgIFNFUVVFTkNFIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zZXF1ZW5jZV9uYW1lPC9yZXBsYWNlYWJs ZT4gWyAqIF0gWywgLi4uIF0KICAgICBUQUJMRVMgSU4gU0NIRU1BIHsgPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPnNjaGVtYV9uYW1lPC9yZXBsYWNlYWJsZT4gfCBDVVJSRU5U X1NDSEVNQSB9IFssIC4uLiBdCisgICAgU0VRVUVOQ0VTIElOIFNDSEVNQSB7IDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zY2hlbWFfbmFtZTwvcmVwbGFjZWFibGU+IHwgQ1VS UkVOVF9TQ0hFTUEgfSBbLCAuLi4gXQogPC9zeW5vcHNpcz4KICA8L3JlZnN5bm9wc2lzZGl2 PgogCkBAIC0xMTcsMjIgKzEyNCwzOSBAQCBDUkVBVEUgUFVCTElDQVRJT04gPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPgogICAgIDwvbGlzdGl0 ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgPHZhcmxpc3RlbnRyeSBpZD0ic3FsLWNy ZWF0ZXB1YmxpY2F0aW9uLWZvci1zZXF1ZW5jZSI+CisgICAgPHRlcm0+PGxpdGVyYWw+Rk9S IFNFUVVFTkNFPC9saXRlcmFsPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJh PgorICAgICAgU3BlY2lmaWVzIGEgbGlzdCBvZiBzZXF1ZW5jZXMgdG8gYWRkIHRvIHRoZSBw dWJsaWNhdGlvbi4KKyAgICAgPC9wYXJhPgorCisgICAgIDxwYXJhPgorICAgICAgU3BlY2lm eWluZyBhIHNlcXVlbmNlIHRoYXQgaXMgcGFydCBvZiBhIHNjaGVtYSBzcGVjaWZpZWQgYnkg PGxpdGVyYWw+Rk9SCisgICAgICBBTEwgU0VRVUVOQ0VTIElOIFNDSEVNQTwvbGl0ZXJhbD4g aXMgbm90IHN1cHBvcnRlZC4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8 L3Zhcmxpc3RlbnRyeT4KKwogICAgPHZhcmxpc3RlbnRyeSBpZD0ic3FsLWNyZWF0ZXB1Ymxp Y2F0aW9uLXBhcmFtcy1mb3ItYWxsLXRhYmxlcyI+CiAgICAgPHRlcm0+PGxpdGVyYWw+Rk9S IEFMTCBUQUJMRVM8L2xpdGVyYWw+PC90ZXJtPgorICAgIDx0ZXJtPjxsaXRlcmFsPkZPUiBB TEwgU0VRVUVOQ0VTPC9saXRlcmFsPjwvdGVybT4KICAgICA8bGlzdGl0ZW0+CiAgICAgIDxw YXJhPgotICAgICAgTWFya3MgdGhlIHB1YmxpY2F0aW9uIGFzIG9uZSB0aGF0IHJlcGxpY2F0 ZXMgY2hhbmdlcyBmb3IgYWxsIHRhYmxlcyBpbgotICAgICAgdGhlIGRhdGFiYXNlLCBpbmNs dWRpbmcgdGFibGVzIGNyZWF0ZWQgaW4gdGhlIGZ1dHVyZS4KKyAgICAgIE1hcmtzIHRoZSBw dWJsaWNhdGlvbiBhcyBvbmUgdGhhdCByZXBsaWNhdGVzIGNoYW5nZXMgZm9yIGFsbCB0YWJs ZXMgb3IKKyAgICAgIHNlcXVlbmNlcyBpbiB0aGUgZGF0YWJhc2UsIGluY2x1ZGluZyB0YWJs ZXMgY3JlYXRlZCBpbiB0aGUgZnV0dXJlLgogICAgICA8L3BhcmE+CiAgICAgPC9saXN0aXRl bT4KICAgIDwvdmFybGlzdGVudHJ5PgogCiAgICA8dmFybGlzdGVudHJ5IGlkPSJzcWwtY3Jl YXRlcHVibGljYXRpb24tcGFyYW1zLWZvci10YWJsZXMtaW4tc2NoZW1hIj4KICAgICA8dGVy bT48bGl0ZXJhbD5GT1IgVEFCTEVTIElOIFNDSEVNQTwvbGl0ZXJhbD48L3Rlcm0+CisgICAg PHRlcm0+PGxpdGVyYWw+Rk9SIFNFUVVFTkNFUyBJTiBTQ0hFTUE8L2xpdGVyYWw+PC90ZXJt PgogICAgIDxsaXN0aXRlbT4KICAgICAgPHBhcmE+Ci0gICAgICBNYXJrcyB0aGUgcHVibGlj YXRpb24gYXMgb25lIHRoYXQgcmVwbGljYXRlcyBjaGFuZ2VzIGZvciBhbGwgdGFibGVzIGlu Ci0gICAgICB0aGUgc3BlY2lmaWVkIGxpc3Qgb2Ygc2NoZW1hcywgaW5jbHVkaW5nIHRhYmxl cyBjcmVhdGVkIGluIHRoZSBmdXR1cmUuCisgICAgICBNYXJrcyB0aGUgcHVibGljYXRpb24g YXMgb25lIHRoYXQgcmVwbGljYXRlcyBjaGFuZ2VzIGZvciBhbGwgdGFibGVzIG9yCisgICAg ICBzZXF1ZW5jZXMgaW4gdGhlIHNwZWNpZmllZCBsaXN0IG9mIHNjaGVtYXMsIGluY2x1ZGlu ZyB0YWJsZXMgb3Igc2VxdWVuY2VzCisgICAgICBjcmVhdGVkIGluIHRoZSBmdXR1cmUuCiAg ICAgIDwvcGFyYT4KIAogICAgICA8cGFyYT4KQEAgLTI0MCwxMCArMjY0LDEyIEBAIENSRUFU RSBQVUJMSUNBVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVw bGFjZWFibGU+CiAgIDx0aXRsZT5Ob3RlczwvdGl0bGU+CiAKICAgPHBhcmE+Ci0gICBJZiA8 bGl0ZXJhbD5GT1IgVEFCTEU8L2xpdGVyYWw+LCA8bGl0ZXJhbD5GT1IgQUxMIFRBQkxFUzwv bGl0ZXJhbD4gb3IKLSAgIDxsaXRlcmFsPkZPUiBUQUJMRVMgSU4gU0NIRU1BPC9saXRlcmFs PiBhcmUgbm90IHNwZWNpZmllZCwgdGhlbiB0aGUKLSAgIHB1YmxpY2F0aW9uIHN0YXJ0cyBv dXQgd2l0aCBhbiBlbXB0eSBzZXQgb2YgdGFibGVzLiAgVGhhdCBpcyB1c2VmdWwgaWYKLSAg IHRhYmxlcyBvciBzY2hlbWFzIGFyZSB0byBiZSBhZGRlZCBsYXRlci4KKyAgIElmIDxsaXRl cmFsPkZPUiBUQUJMRTwvbGl0ZXJhbD4sIDxsaXRlcmFsPkZPUiBTRVFVRU5DRTwvbGl0ZXJh bD4sCisgICA8bGl0ZXJhbD5GT1IgQUxMIFRBQkxFUzwvbGl0ZXJhbD4sIDxsaXRlcmFsPkZP UiBBTEwgU0VRVUVOQ0VTPC9saXRlcmFsPiwKKyAgIDxsaXRlcmFsPkZPUiBUQUJMRVMgSU4g U0NIRU1BPC9saXRlcmFsPiBvciA8bGl0ZXJhbD5GT1IgU0VRVUVOQ0VTIElOIFNDSEVNQTwv bGl0ZXJhbD4KKyAgIGFyZSBub3Qgc3BlY2lmaWVkLCB0aGVuIHRoZSBwdWJsaWNhdGlvbiBz dGFydHMgb3V0IHdpdGggYW4gZW1wdHkgc2V0CisgICBvZiB0YWJsZXMvc2VxdWVuY2VzLiAg VGhhdCBpcyB1c2VmdWwgaWYgdGFibGVzLCBzZXF1ZW5jZXMgb3Igc2NoZW1hcworICAgYXJl IHRvIGJlIGFkZGVkIGxhdGVyLgogICA8L3BhcmE+CiAKICAgPHBhcmE+CkBAIC0yNTgsOSAr Mjg0LDEwIEBAIENSRUFURSBQVUJMSUNBVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+CiAgIDwvcGFyYT4KIAogICA8cGFyYT4KLSAgIFRv IGFkZCBhIHRhYmxlIHRvIGEgcHVibGljYXRpb24sIHRoZSBpbnZva2luZyB1c2VyIG11c3Qg aGF2ZSBvd25lcnNoaXAKLSAgIHJpZ2h0cyBvbiB0aGUgdGFibGUuICBUaGUgPGNvbW1hbmQ+ Rk9SIEFMTCBUQUJMRVM8L2NvbW1hbmQ+IGFuZAotICAgPGNvbW1hbmQ+Rk9SIFRBQkxFUyBJ TiBTQ0hFTUE8L2NvbW1hbmQ+IGNsYXVzZXMgcmVxdWlyZSB0aGUgaW52b2tpbmcKKyAgIFRv IGFkZCBhIHRhYmxlIG9yIGEgc2VxdWVuY2UgdG8gYSBwdWJsaWNhdGlvbiwgdGhlIGludm9r aW5nIHVzZXIgbXVzdAorICAgaGF2ZSBvd25lcnNoaXAgcmlnaHRzIG9uIHRoZSBvYmplY3Qu ICBUaGUgPGNvbW1hbmQ+Rk9SIEFMTCBUQUJMRVM8L2NvbW1hbmQ+LAorICAgPGNvbW1hbmQ+ Rk9SIEFMTCBTRVFVRU5DRVM8L2NvbW1hbmQ+LCA8Y29tbWFuZD5GT1IgVEFCTEVTIElOIFND SEVNQTwvY29tbWFuZD4KKyAgIGFuZCA8Y29tbWFuZD5GT1IgU0VRVUVOQ0VTIElOIFNDSEVN QTwvY29tbWFuZD4gY2xhdXNlcyByZXF1aXJlIHRoZSBpbnZva2luZwogICAgdXNlciB0byBi ZSBhIHN1cGVydXNlci4KICAgPC9wYXJhPgogCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwv c3lzdGVtLXZpZXdzLnNnbWwgYi9kb2Mvc3JjL3NnbWwvc3lzdGVtLXZpZXdzLnNnbWwKaW5k ZXggMGVmMTc0NTYzMTguLjkyNTEwNWNkNTg4IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwv c3lzdGVtLXZpZXdzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3N5c3RlbS12aWV3cy5zZ21s CkBAIC0xMjYsNiArMTI2LDExIEBACiAgICAgICA8ZW50cnk+cHJlcGFyZWQgdHJhbnNhY3Rp b25zPC9lbnRyeT4KICAgICAgPC9yb3c+CiAKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeT48 bGluayBsaW5rZW5kPSJ2aWV3LXBnLXB1YmxpY2F0aW9uLXNlcXVlbmNlcyI+PHN0cnVjdG5h bWU+cGdfcHVibGljYXRpb25fc2VxdWVuY2VzPC9zdHJ1Y3RuYW1lPjwvbGluaz48L2VudHJ5 PgorICAgICAgPGVudHJ5PnB1YmxpY2F0aW9ucyBhbmQgaW5mb3JtYXRpb24gb2YgdGhlaXIg YXNzb2NpYXRlZCBzZXF1ZW5jZXM8L2VudHJ5PgorICAgICA8L3Jvdz4KKwogICAgICA8cm93 PgogICAgICAgPGVudHJ5PjxsaW5rIGxpbmtlbmQ9InZpZXctcGctcHVibGljYXRpb24tdGFi bGVzIj48c3RydWN0bmFtZT5wZ19wdWJsaWNhdGlvbl90YWJsZXM8L3N0cnVjdG5hbWU+PC9s aW5rPjwvZW50cnk+CiAgICAgICA8ZW50cnk+cHVibGljYXRpb25zIGFuZCBpbmZvcm1hdGlv biBvZiB0aGVpciBhc3NvY2lhdGVkIHRhYmxlczwvZW50cnk+CkBAIC0yMTM4LDYgKzIxNDMs NzIgQEAgU0VMRUNUICogRlJPTSBwZ19sb2NrcyBwbCBMRUZUIEpPSU4gcGdfcHJlcGFyZWRf eGFjdHMgcHB4CiAKICA8L3NlY3QxPgogCisgPHNlY3QxIGlkPSJ2aWV3LXBnLXB1YmxpY2F0 aW9uLXNlcXVlbmNlcyI+CisgIDx0aXRsZT48c3RydWN0bmFtZT5wZ19wdWJsaWNhdGlvbl9z ZXF1ZW5jZXM8L3N0cnVjdG5hbWU+PC90aXRsZT4KKworICA8aW5kZXh0ZXJtIHpvbmU9InZp ZXctcGctcHVibGljYXRpb24tc2VxdWVuY2VzIj4KKyAgIDxwcmltYXJ5PnBnX3B1YmxpY2F0 aW9uX3NlcXVlbmNlczwvcHJpbWFyeT4KKyAgPC9pbmRleHRlcm0+CisKKyAgPHBhcmE+Cisg ICBUaGUgdmlldyA8c3RydWN0bmFtZT5wZ19wdWJsaWNhdGlvbl9zZXF1ZW5jZXM8L3N0cnVj dG5hbWU+IHByb3ZpZGVzCisgICBpbmZvcm1hdGlvbiBhYm91dCB0aGUgbWFwcGluZyBiZXR3 ZWVuIHB1YmxpY2F0aW9ucyBhbmQgaW5mb3JtYXRpb24gb2YKKyAgIHNlcXVlbmNlcyB0aGV5 IGNvbnRhaW4uICBVbmxpa2UgdGhlIHVuZGVybHlpbmcgY2F0YWxvZworICAgPGxpbmsgbGlu a2VuZD0iY2F0YWxvZy1wZy1wdWJsaWNhdGlvbi1yZWwiPjxzdHJ1Y3RuYW1lPnBnX3B1Ymxp Y2F0aW9uX3JlbDwvc3RydWN0bmFtZT48L2xpbms+LAorICAgdGhpcyB2aWV3IGV4cGFuZHMg cHVibGljYXRpb25zIGRlZmluZWQgYXMgPGxpdGVyYWw+Rk9SIEFMTCBTRVFVRU5DRVM8L2xp dGVyYWw+CisgICBhbmQgPGxpdGVyYWw+Rk9SIFNFUVVFTkNFUyBJTiBTQ0hFTUE8L2xpdGVy YWw+LCBzbyBmb3Igc3VjaCBwdWJsaWNhdGlvbnMKKyAgIHRoZXJlIHdpbGwgYmUgYSByb3cg Zm9yIGVhY2ggZWxpZ2libGUgc2VxdWVuY2UuCisgIDwvcGFyYT4KKworICA8dGFibGU+Cisg ICA8dGl0bGU+PHN0cnVjdG5hbWU+cGdfcHVibGljYXRpb25fc2VxdWVuY2VzPC9zdHJ1Y3Ru YW1lPiBDb2x1bW5zPC90aXRsZT4KKyAgIDx0Z3JvdXAgY29scz0iMSI+CisgICAgPHRoZWFk PgorICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnki PjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICBDb2x1bW4gVHlwZQor ICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgRGVzY3JpcHRpb24KKyAgICAg IDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKyAgICA8L3RoZWFkPgorCisgICAgPHRi b2R5PgorICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50 cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0Zmll bGQ+cHVibmFtZTwvc3RydWN0ZmllbGQ+IDx0eXBlPm5hbWU8L3R5cGU+CisgICAgICAgKHJl ZmVyZW5jZXMgPGxpbmsgbGlua2VuZD0iY2F0YWxvZy1wZy1wdWJsaWNhdGlvbiI+PHN0cnVj dG5hbWU+cGdfcHVibGljYXRpb248L3N0cnVjdG5hbWU+PC9saW5rPi48c3RydWN0ZmllbGQ+ cHVibmFtZTwvc3RydWN0ZmllbGQ+KQorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+Cisg ICAgICAgTmFtZSBvZiBwdWJsaWNhdGlvbgorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAg IDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJs ZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1 Y3RmaWVsZD5zY2hlbWFuYW1lPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+bmFtZTwvdHlwZT4KKyAg ICAgICAocmVmZXJlbmNlcyA8bGluayBsaW5rZW5kPSJjYXRhbG9nLXBnLW5hbWVzcGFjZSI+ PHN0cnVjdG5hbWU+cGdfbmFtZXNwYWNlPC9zdHJ1Y3RuYW1lPjwvbGluaz4uPHN0cnVjdGZp ZWxkPm5zcG5hbWU8L3N0cnVjdGZpZWxkPikKKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJh PgorICAgICAgIE5hbWUgb2Ygc2NoZW1hIGNvbnRhaW5pbmcgc2VxdWVuY2UKKyAgICAgIDwv cGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5 IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0 aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+c2VxdWVuY2VuYW1lPC9zdHJ1Y3RmaWVsZD4g PHR5cGU+bmFtZTwvdHlwZT4KKyAgICAgICAocmVmZXJlbmNlcyA8bGluayBsaW5rZW5kPSJj YXRhbG9nLXBnLWNsYXNzIj48c3RydWN0bmFtZT5wZ19jbGFzczwvc3RydWN0bmFtZT48L2xp bms+LjxzdHJ1Y3RmaWVsZD5yZWxuYW1lPC9zdHJ1Y3RmaWVsZD4pCisgICAgICA8L3BhcmE+ CisgICAgICA8cGFyYT4KKyAgICAgICBOYW1lIG9mIHNlcXVlbmNlCisgICAgICA8L3BhcmE+ PC9lbnRyeT4KKyAgICAgPC9yb3c+CisgICAgPC90Ym9keT4KKyAgIDwvdGdyb3VwPgorICA8 L3RhYmxlPgorIDwvc2VjdDE+CisKICA8c2VjdDEgaWQ9InZpZXctcGctcHVibGljYXRpb24t dGFibGVzIj4KICAgPHRpdGxlPjxzdHJ1Y3RuYW1lPnBnX3B1YmxpY2F0aW9uX3RhYmxlczwv c3RydWN0bmFtZT48L3RpdGxlPgogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9n L29iamVjdGFkZHJlc3MuYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvb2JqZWN0YWRkcmVzcy5j CmluZGV4IGJiNGVmY2FkMjAyLi5jMTU1Y2Q1N2E3MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvY2F0YWxvZy9vYmplY3RhZGRyZXNzLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9v YmplY3RhZGRyZXNzLmMKQEAgLTE5NjQsMTIgKzE5NjQsMTQgQEAgZ2V0X29iamVjdF9hZGRy ZXNzX3B1YmxpY2F0aW9uX3NjaGVtYShMaXN0ICpvYmplY3QsIGJvb2wgbWlzc2luZ19vaykK IAljaGFyCSAgICpwdWJuYW1lOwogCWNoYXIJICAgKnNjaGVtYW5hbWU7CiAJT2lkCQkJc2No ZW1haWQ7CisJY2hhcgkgICAqb2JqdHlwZTsKIAogCU9iamVjdEFkZHJlc3NTZXQoYWRkcmVz cywgUHVibGljYXRpb25OYW1lc3BhY2VSZWxhdGlvbklkLCBJbnZhbGlkT2lkKTsKIAogCS8q IEZldGNoIHNjaGVtYSBuYW1lIGFuZCBwdWJsaWNhdGlvbiBuYW1lIGZyb20gaW5wdXQgbGlz dCAqLwogCXNjaGVtYW5hbWUgPSBzdHJWYWwobGluaXRpYWwob2JqZWN0KSk7CiAJcHVibmFt ZSA9IHN0clZhbChsc2Vjb25kKG9iamVjdCkpOworCW9ianR5cGUgPSBzdHJWYWwobHRoaXJk KG9iamVjdCkpOwogCiAJc2NoZW1haWQgPSBnZXRfbmFtZXNwYWNlX29pZChzY2hlbWFuYW1l LCBtaXNzaW5nX29rKTsKIAlpZiAoIU9pZElzVmFsaWQoc2NoZW1haWQpKQpAQCAtMTk4Miwx MCArMTk4NCwxMiBAQCBnZXRfb2JqZWN0X2FkZHJlc3NfcHVibGljYXRpb25fc2NoZW1hKExp c3QgKm9iamVjdCwgYm9vbCBtaXNzaW5nX29rKQogCiAJLyogRmluZCB0aGUgcHVibGljYXRp b24gc2NoZW1hIG1hcHBpbmcgaW4gc3lzY2FjaGUgKi8KIAlhZGRyZXNzLm9iamVjdElkID0K LQkJR2V0U3lzQ2FjaGVPaWQyKFBVQkxJQ0FUSU9OTkFNRVNQQUNFTUFQLAorCQlHZXRTeXND YWNoZU9pZDMoUFVCTElDQVRJT05OQU1FU1BBQ0VNQVAsCiAJCQkJCQlBbnVtX3BnX3B1Ymxp Y2F0aW9uX25hbWVzcGFjZV9vaWQsCiAJCQkJCQlPYmplY3RJZEdldERhdHVtKHNjaGVtYWlk KSwKLQkJCQkJCU9iamVjdElkR2V0RGF0dW0ocHViLT5vaWQpKTsKKwkJCQkJCU9iamVjdElk R2V0RGF0dW0ocHViLT5vaWQpLAorCQkJCQkJQ2hhckdldERhdHVtKG9ianR5cGVbMF0pKTsK KwogCWlmICghT2lkSXNWYWxpZChhZGRyZXNzLm9iamVjdElkKSAmJiAhbWlzc2luZ19vaykK IAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9PQkpF Q1QpLApAQCAtMjI2MCw3ICsyMjY0LDYgQEAgcGdfZ2V0X29iamVjdF9hZGRyZXNzKFBHX0ZV TkNUSU9OX0FSR1MpCiAJICovCiAJc3dpdGNoICh0eXBlKQogCXsKLQkJY2FzZSBPQkpFQ1Rf UFVCTElDQVRJT05fTkFNRVNQQUNFOgogCQljYXNlIE9CSkVDVF9VU0VSX01BUFBJTkc6CiAJ CQlpZiAobGlzdF9sZW5ndGgobmFtZSkgIT0gMSkKIAkJCQllcmVwb3J0KEVSUk9SLApAQCAt MjI5Myw2ICsyMjk2LDcgQEAgcGdfZ2V0X29iamVjdF9hZGRyZXNzKFBHX0ZVTkNUSU9OX0FS R1MpCiAJCQkJCQkgZXJybXNnKCJuYW1lIGxpc3QgbGVuZ3RoIG11c3QgYmUgYXQgbGVhc3Qg JWQiLCAzKSkpOwogCQkJLyogZmFsbCB0aHJvdWdoIHRvIGNoZWNrIGFyZ3MgbGVuZ3RoICov CiAJCQkvKiBGQUxMVEhST1VHSCAqLworCQljYXNlIE9CSkVDVF9QVUJMSUNBVElPTl9OQU1F U1BBQ0U6CiAJCWNhc2UgT0JKRUNUX09QRVJBVE9SOgogCQkJaWYgKGxpc3RfbGVuZ3RoKGFy Z3MpICE9IDIpCiAJCQkJZXJlcG9ydChFUlJPUiwKQEAgLTIzNjUsNiArMjM2OSw4IEBAIHBn X2dldF9vYmplY3RfYWRkcmVzcyhQR19GVU5DVElPTl9BUkdTKQogCQkJb2Jqbm9kZSA9IChO b2RlICopIGxpc3RfbWFrZTIobmFtZSwgbGluaXRpYWwoYXJncykpOwogCQkJYnJlYWs7CiAJ CWNhc2UgT0JKRUNUX1BVQkxJQ0FUSU9OX05BTUVTUEFDRToKKwkJCW9iam5vZGUgPSAoTm9k ZSAqKSBsaXN0X21ha2UzKGxpbml0aWFsKG5hbWUpLCBsaW5pdGlhbChhcmdzKSwgbHNlY29u ZChhcmdzKSk7CisJCQlicmVhazsKIAkJY2FzZSBPQkpFQ1RfVVNFUl9NQVBQSU5HOgogCQkJ b2Jqbm9kZSA9IChOb2RlICopIGxpc3RfbWFrZTIobGluaXRpYWwobmFtZSksIGxpbml0aWFs KGFyZ3MpKTsKIAkJCWJyZWFrOwpAQCAtMjg2OCwxMSArMjg3NCwxMiBAQCBnZXRfY2F0YWxv Z19vYmplY3RfYnlfb2lkKFJlbGF0aW9uIGNhdGFsb2csIEF0dHJOdW1iZXIgb2lkY29sLCBP aWQgb2JqZWN0SWQpCiAgKgogICogR2V0IHB1YmxpY2F0aW9uIG5hbWUgYW5kIHNjaGVtYSBu YW1lIGZyb20gdGhlIG9iamVjdCBhZGRyZXNzIGludG8gcHVibmFtZSBhbmQKICAqIG5zcG5h bWUuIEJvdGggcHVibmFtZSBhbmQgbnNwbmFtZSBhcmUgcGFsbG9jJ2Qgc3RyaW5ncyB3aGlj aCB3aWxsIGJlIGZyZWVkIGJ5Ci0gKiB0aGUgY2FsbGVyLgorICogdGhlIGNhbGxlci4gVGhl IGxhc3QgcGFyYW1ldGVyIHNwZWNpZmllcyB3aGljaCBvYmplY3QgdHlwZSBpcyBpbmNsdWRl ZCBmcm9tCisgKiB0aGUgc2NoZW1hLgogICovCiBzdGF0aWMgYm9vbAogZ2V0UHVibGljYXRp b25TY2hlbWFJbmZvKGNvbnN0IE9iamVjdEFkZHJlc3MgKm9iamVjdCwgYm9vbCBtaXNzaW5n X29rLAotCQkJCQkJIGNoYXIgKipwdWJuYW1lLCBjaGFyICoqbnNwbmFtZSkKKwkJCQkJCSBj aGFyICoqcHVibmFtZSwgY2hhciAqKm5zcG5hbWUsIGNoYXIgKipvYmp0eXBlKQogewogCUhl YXBUdXBsZQl0dXA7CiAJRm9ybV9wZ19wdWJsaWNhdGlvbl9uYW1lc3BhY2UgcG5mb3JtOwpA QCAtMjkwOCw2ICsyOTE1LDE0IEBAIGdldFB1YmxpY2F0aW9uU2NoZW1hSW5mbyhjb25zdCBP YmplY3RBZGRyZXNzICpvYmplY3QsIGJvb2wgbWlzc2luZ19vaywKIAkJcmV0dXJuIGZhbHNl OwogCX0KIAorCS8qCisJICogVGhlIHR5cGUgaXMgYWx3YXlzIGEgc2luZ2xlIGNoYXJhY3Rl ciwgYnV0IHdlIG5lZWQgdG8gcGFzcyBpdCBhcyBhCisJICogc3RyaW5nLCBzbyBhbGxvY2F0 ZSB0d28gY2hhcmF0ZXJzIGFuZCBzZXQgdGhlIGZpcnN0IG9uZS4gVGhlIHNlY29uZCBvbmUK KwkgKiBpcyBcMC4KKwkgKi8KKwkqb2JqdHlwZSA9IHBhbGxvYzAoMik7CisJKm9ianR5cGVb MF0gPSBwbmZvcm0tPnBudHlwZTsKKwogCVJlbGVhc2VTeXNDYWNoZSh0dXApOwogCXJldHVy biB0cnVlOwogfQpAQCAtMzk3OCwxNSArMzk5MywxNyBAQCBnZXRPYmplY3REZXNjcmlwdGlv bihjb25zdCBPYmplY3RBZGRyZXNzICpvYmplY3QsIGJvb2wgbWlzc2luZ19vaykKIAkJCXsK IAkJCQljaGFyCSAgICpwdWJuYW1lOwogCQkJCWNoYXIJICAgKm5zcG5hbWU7CisJCQkJY2hh cgkgICAqb2JqdHlwZTsKIAogCQkJCWlmICghZ2V0UHVibGljYXRpb25TY2hlbWFJbmZvKG9i amVjdCwgbWlzc2luZ19vaywKLQkJCQkJCQkJCQkJICAmcHVibmFtZSwgJm5zcG5hbWUpKQor CQkJCQkJCQkJCQkgICZwdWJuYW1lLCAmbnNwbmFtZSwgJm9ianR5cGUpKQogCQkJCQlicmVh azsKIAotCQkJCWFwcGVuZFN0cmluZ0luZm8oJmJ1ZmZlciwgXygicHVibGljYXRpb24gb2Yg c2NoZW1hICVzIGluIHB1YmxpY2F0aW9uICVzIiksCi0JCQkJCQkJCSBuc3BuYW1lLCBwdWJu YW1lKTsKKwkJCQlhcHBlbmRTdHJpbmdJbmZvKCZidWZmZXIsIF8oInB1YmxpY2F0aW9uIG9m IHNjaGVtYSAlcyBpbiBwdWJsaWNhdGlvbiAlcyB0eXBlICVzIiksCisJCQkJCQkJCSBuc3Bu YW1lLCBwdWJuYW1lLCBvYmp0eXBlKTsKIAkJCQlwZnJlZShwdWJuYW1lKTsKIAkJCQlwZnJl ZShuc3BuYW1lKTsKKwkJCQlwZnJlZShvYmp0eXBlKTsKIAkJCQlicmVhazsKIAkJCX0KIApA QCAtNTgzMiwxOCArNTg0OSwyNCBAQCBnZXRPYmplY3RJZGVudGl0eVBhcnRzKGNvbnN0IE9i amVjdEFkZHJlc3MgKm9iamVjdCwKIAkJCXsKIAkJCQljaGFyCSAgICpwdWJuYW1lOwogCQkJ CWNoYXIJICAgKm5zcG5hbWU7CisJCQkJY2hhcgkgICAqb2JqdHlwZTsKIAogCQkJCWlmICgh Z2V0UHVibGljYXRpb25TY2hlbWFJbmZvKG9iamVjdCwgbWlzc2luZ19vaywgJnB1Ym5hbWUs Ci0JCQkJCQkJCQkJCSAgJm5zcG5hbWUpKQorCQkJCQkJCQkJCQkgICZuc3BuYW1lLCAmb2Jq dHlwZSkpCiAJCQkJCWJyZWFrOwotCQkJCWFwcGVuZFN0cmluZ0luZm8oJmJ1ZmZlciwgIiVz IGluIHB1YmxpY2F0aW9uICVzIiwKLQkJCQkJCQkJIG5zcG5hbWUsIHB1Ym5hbWUpOworCQkJ CWFwcGVuZFN0cmluZ0luZm8oJmJ1ZmZlciwgIiVzIGluIHB1YmxpY2F0aW9uICVzIHR5cGUg JXMiLAorCQkJCQkJCQkgbnNwbmFtZSwgcHVibmFtZSwgb2JqdHlwZSk7CiAKIAkJCQlpZiAo b2JqYXJncykKIAkJCQkJKm9iamFyZ3MgPSBsaXN0X21ha2UxKHB1Ym5hbWUpOwogCQkJCWVs c2UKIAkJCQkJcGZyZWUocHVibmFtZSk7CiAKKwkJCQlpZiAob2JqYXJncykKKwkJCQkJKm9i amFyZ3MgPSBsYXBwZW5kKCpvYmphcmdzLCBvYmp0eXBlKTsKKwkJCQllbHNlCisJCQkJCXBm cmVlKG9ianR5cGUpOworCiAJCQkJaWYgKG9iam5hbWUpCiAJCQkJCSpvYmpuYW1lID0gbGlz dF9tYWtlMShuc3BuYW1lKTsKIAkJCQllbHNlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9j YXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1Ymxp Y2F0aW9uLmMKaW5kZXggYzQ4OGI2MzcwYjYuLmJiY2JjZTYxNzE4IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQv Y2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jCkBAIC02Myw5ICs2MywxMCBAQCBzdGF0aWMgdm9p ZCBwdWJsaWNhdGlvbl90cmFuc2xhdGVfY29sdW1ucyhSZWxhdGlvbiB0YXJnZXRyZWwsIExp c3QgKmNvbHVtbnMsCiBzdGF0aWMgdm9pZAogY2hlY2tfcHVibGljYXRpb25fYWRkX3JlbGF0 aW9uKFJlbGF0aW9uIHRhcmdldHJlbCkKIHsKLQkvKiBNdXN0IGJlIGEgcmVndWxhciBvciBw YXJ0aXRpb25lZCB0YWJsZSAqLworCS8qIE11c3QgYmUgYSByZWd1bGFyIG9yIHBhcnRpdGlv bmVkIHRhYmxlLCBvciBhIHNlcXVlbmNlICovCiAJaWYgKFJlbGF0aW9uR2V0Rm9ybSh0YXJn ZXRyZWwpLT5yZWxraW5kICE9IFJFTEtJTkRfUkVMQVRJT04gJiYKLQkJUmVsYXRpb25HZXRG b3JtKHRhcmdldHJlbCktPnJlbGtpbmQgIT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSkK KwkJUmVsYXRpb25HZXRGb3JtKHRhcmdldHJlbCktPnJlbGtpbmQgIT0gUkVMS0lORF9QQVJU SVRJT05FRF9UQUJMRSAmJgorCQlSZWxhdGlvbkdldEZvcm0odGFyZ2V0cmVsKS0+cmVsa2lu ZCAhPSBSRUxLSU5EX1NFUVVFTkNFKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2Rl KEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAogCQkJCSBlcnJtc2coImNhbm5v dCBhZGQgcmVsYXRpb24gXCIlc1wiIHRvIHB1YmxpY2F0aW9uIiwKQEAgLTE0Miw3ICsxNDMs OCBAQCBzdGF0aWMgYm9vbAogaXNfcHVibGlzaGFibGVfY2xhc3MoT2lkIHJlbGlkLCBGb3Jt X3BnX2NsYXNzIHJlbHR1cGxlKQogewogCXJldHVybiAocmVsdHVwbGUtPnJlbGtpbmQgPT0g UkVMS0lORF9SRUxBVElPTiB8fAotCQkJcmVsdHVwbGUtPnJlbGtpbmQgPT0gUkVMS0lORF9Q QVJUSVRJT05FRF9UQUJMRSkgJiYKKwkJCXJlbHR1cGxlLT5yZWxraW5kID09IFJFTEtJTkRf UEFSVElUSU9ORURfVEFCTEUgfHwKKwkJCXJlbHR1cGxlLT5yZWxraW5kID09IFJFTEtJTkRf U0VRVUVOQ0UpICYmCiAJCSFJc0NhdGFsb2dSZWxhdGlvbk9pZChyZWxpZCkgJiYKIAkJcmVs dHVwbGUtPnJlbHBlcnNpc3RlbmNlID09IFJFTFBFUlNJU1RFTkNFX1BFUk1BTkVOVCAmJgog CQlyZWxpZCA+PSBGaXJzdE5vcm1hbE9iamVjdElkOwpAQCAtMjMzLDYgKzIzNSw1MiBAQCBm aWx0ZXJfcGFydGl0aW9ucyhMaXN0ICp0YWJsZV9pbmZvcykKIAl9CiB9CiAKKy8qCisgKiBD aGVjayB0aGUgY2hhcmFjdGVyIGlzIGEgdmFsaWQgb2JqZWN0IHR5cGUgZm9yIHNjaGVtYSBw dWJsaWNhdGlvbi4KKyAqCisgKiBUaGlzIHJlY29nbml6ZXMgZWl0aGVyICd0JyBmb3IgdGFi bGVzIG9yICdzJyBmb3Igc2VxdWVuY2VzLiBQbGFjZXMgdGhhdAorICogbmVlZCB0byBoYW5k bGUgJ3UnIGZvciB1bnN1cHBvcnRlZCByZWxraW5kcyBuZWVkIHRvIGRvIHRoYXQgZXhwbGlj aXRseWwKKyAqLworc3RhdGljIHZvaWQKK0Fzc2VydE9iamVjdFR5cGVWYWxpZChjaGFyIG9i amVjdFR5cGUpCit7CisjaWZkZWYgVVNFX0FTU0VSVF9DSEVDS0lORworCUFzc2VydChvYmpl Y3RUeXBlID09IFBVQl9PQkpUWVBFX1NFUVVFTkNFIHx8IG9iamVjdFR5cGUgPT0gUFVCX09C SlRZUEVfVEFCTEUpOworI2VuZGlmCit9CisKKy8qCisgKiBEZXRlcm1pbmUgb2JqZWN0IHR5 cGUgbWF0Y2hpbmcgYSBnaXZlbiBhIHJlbGtpbmQgdmFsdWUuCisgKi8KK2NoYXIKK3B1Yl9n ZXRfb2JqZWN0X3R5cGVfZm9yX3JlbGtpbmQoY2hhciByZWxraW5kKQoreworCS8qIHNlcXVl bmNlIG1hcHMgZGlyZWN0bHkgdG8gc2VxdWVuY2UgcmVsa2luZCAqLworCWlmIChyZWxraW5k ID09IFJFTEtJTkRfU0VRVUVOQ0UpCisJCXJldHVybiBQVUJfT0JKVFlQRV9TRVFVRU5DRTsK KworCS8qIGZvciB0YWJsZSwgd2UgbWF0Y2ggZWl0aGVyIHJlZ3VsYXIgb3IgcGFydGl0aW9u ZWQgdGFibGUgKi8KKwlpZiAocmVsa2luZCA9PSBSRUxLSU5EX1JFTEFUSU9OIHx8CisJCXJl bGtpbmQgPT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSkKKwkJcmV0dXJuIFBVQl9PQkpU WVBFX1RBQkxFOworCisJcmV0dXJuIFBVQl9PQkpUWVBFX1VOU1VQUE9SVEVEOworfQorCisv KgorICogRGV0ZXJtaW5lIGlmIHB1YmxpY2F0aW9uIG9iamVjdCB0eXBlIG1hdGNoZXMgdGhl IHJlbGtpbmQuCisgKgorICogUmV0dXJucyB0cnVlIGlmIHRoZSByZWxhdGlvbiBtYXRjaGVz IG9iamVjdCB0eXBlIHJlcGxpY2F0ZWQgYnkgdGhpcyBzY2hlbWEsCisgKiBmYWxzZSBvdGhl cndpc2UuCisgKi8KK3N0YXRpYyBib29sCitwdWJfb2JqZWN0X3R5cGVfbWF0Y2hlc19yZWxr aW5kKGNoYXIgb2JqZWN0VHlwZSwgY2hhciByZWxraW5kKQoreworCUFzc2VydE9iamVjdFR5 cGVWYWxpZChvYmplY3RUeXBlKTsKKworCXJldHVybiAocHViX2dldF9vYmplY3RfdHlwZV9m b3JfcmVsa2luZChyZWxraW5kKSA9PSBvYmplY3RUeXBlKTsKK30KKwogLyoKICAqIFJldHVy bnMgdHJ1ZSBpZiBhbnkgc2NoZW1hIGlzIGFzc29jaWF0ZWQgd2l0aCB0aGUgcHVibGljYXRp b24sIGZhbHNlIGlmIG5vCiAgKiBzY2hlbWEgaXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBwdWJs aWNhdGlvbi4KQEAgLTI1Myw3ICszMDEsNyBAQCBpc19zY2hlbWFfcHVibGljYXRpb24oT2lk IHB1YmlkKQogCQkJCU9iamVjdElkR2V0RGF0dW0ocHViaWQpKTsKIAogCXNjYW4gPSBzeXN0 YWJsZV9iZWdpbnNjYW4ocHVic2Noc3JlbCwKLQkJCQkJCQkgIFB1YmxpY2F0aW9uTmFtZXNw YWNlUG5uc3BpZFBucHViaWRJbmRleElkLAorCQkJCQkJCSAgUHVibGljYXRpb25OYW1lc3Bh Y2VQbm5zcGlkUG5wdWJpZFBudHlwZUluZGV4SWQsCiAJCQkJCQkJICB0cnVlLCBOVUxMLCAx LCAmc2NhbmtleSk7CiAJdHVwID0gc3lzdGFibGVfZ2V0bmV4dChzY2FuKTsKIAlyZXN1bHQg PSBIZWFwVHVwbGVJc1ZhbGlkKHR1cCk7CkBAIC0zMzksNyArMzg3LDkgQEAgR2V0VG9wTW9z dEFuY2VzdG9ySW5QdWJsaWNhdGlvbihPaWQgcHVib2lkLCBMaXN0ICphbmNlc3RvcnMsIGlu dCAqYW5jZXN0b3JfbGV2ZWwKIAkJfQogCQllbHNlCiAJCXsKLQkJCWFzY2hlbWFQdWJpZHMg PSBHZXRTY2hlbWFQdWJsaWNhdGlvbnMoZ2V0X3JlbF9uYW1lc3BhY2UoYW5jZXN0b3IpKTsK KwkJCS8qIHdlIG9ubHkgc2VhcmNoIGZvciBhbmNlc3RvcnMgb2YgdGFibGVzLCBzbyBQVUJf T0JKVFlQRV9UQUJMRSAqLworCQkJYXNjaGVtYVB1YmlkcyA9IEdldFNjaGVtYVB1YmxpY2F0 aW9ucyhnZXRfcmVsX25hbWVzcGFjZShhbmNlc3RvciksCisJCQkJCQkJCQkJCQkgIFBVQl9P QkpUWVBFX1RBQkxFKTsKIAkJCWlmIChsaXN0X21lbWJlcl9vaWQoYXNjaGVtYVB1Ymlkcywg cHVib2lkKSkKIAkJCXsKIAkJCQl0b3Btb3N0X3JlbGlkID0gYW5jZXN0b3I7CkBAIC02MDgs NyArNjU4LDcgQEAgcHViX2NvbGxpc3RfdG9fYml0bWFwc2V0KEJpdG1hcHNldCAqY29sdW1u cywgRGF0dW0gcHViY29scywgTWVtb3J5Q29udGV4dCBtY3h0KQogICogSW5zZXJ0IG5ldyBw dWJsaWNhdGlvbiAvIHNjaGVtYSBtYXBwaW5nLgogICovCiBPYmplY3RBZGRyZXNzCi1wdWJs aWNhdGlvbl9hZGRfc2NoZW1hKE9pZCBwdWJpZCwgT2lkIHNjaGVtYWlkLCBib29sIGlmX25v dF9leGlzdHMpCitwdWJsaWNhdGlvbl9hZGRfc2NoZW1hKE9pZCBwdWJpZCwgT2lkIHNjaGVt YWlkLCBjaGFyIG9iamVjdFR5cGUsIGJvb2wgaWZfbm90X2V4aXN0cykKIHsKIAlSZWxhdGlv bglyZWw7CiAJSGVhcFR1cGxlCXR1cDsKQEAgLTYyMCw2ICs2NzAsOCBAQCBwdWJsaWNhdGlv bl9hZGRfc2NoZW1hKE9pZCBwdWJpZCwgT2lkIHNjaGVtYWlkLCBib29sIGlmX25vdF9leGlz dHMpCiAJT2JqZWN0QWRkcmVzcyBteXNlbGYsCiAJCQkJcmVmZXJlbmNlZDsKIAorCUFzc2Vy dE9iamVjdFR5cGVWYWxpZChvYmplY3RUeXBlKTsKKwogCXJlbCA9IHRhYmxlX29wZW4oUHVi bGljYXRpb25OYW1lc3BhY2VSZWxhdGlvbklkLCBSb3dFeGNsdXNpdmVMb2NrKTsKIAogCS8q CkBAIC02MjcsOSArNjc5LDEwIEBAIHB1YmxpY2F0aW9uX2FkZF9zY2hlbWEoT2lkIHB1Ymlk LCBPaWQgc2NoZW1haWQsIGJvb2wgaWZfbm90X2V4aXN0cykKIAkgKiBkdXBsaWNhdGVzLCBp dCdzIGhlcmUganVzdCB0byBwcm92aWRlIG5pY2VyIGVycm9yIG1lc3NhZ2UgaW4gY29tbW9u CiAJICogY2FzZS4gVGhlIHJlYWwgcHJvdGVjdGlvbiBpcyB0aGUgdW5pcXVlIGtleSBvbiB0 aGUgY2F0YWxvZy4KIAkgKi8KLQlpZiAoU2VhcmNoU3lzQ2FjaGVFeGlzdHMyKFBVQkxJQ0FU SU9OTkFNRVNQQUNFTUFQLAorCWlmIChTZWFyY2hTeXNDYWNoZUV4aXN0czMoUFVCTElDQVRJ T05OQU1FU1BBQ0VNQVAsCiAJCQkJCQkJICBPYmplY3RJZEdldERhdHVtKHNjaGVtYWlkKSwK LQkJCQkJCQkgIE9iamVjdElkR2V0RGF0dW0ocHViaWQpKSkKKwkJCQkJCQkgIE9iamVjdElk R2V0RGF0dW0ocHViaWQpLAorCQkJCQkJCSAgQ2hhckdldERhdHVtKG9iamVjdFR5cGUpKSkK IAl7CiAJCXRhYmxlX2Nsb3NlKHJlbCwgUm93RXhjbHVzaXZlTG9jayk7CiAKQEAgLTY1NSw2 ICs3MDgsOCBAQCBwdWJsaWNhdGlvbl9hZGRfc2NoZW1hKE9pZCBwdWJpZCwgT2lkIHNjaGVt YWlkLCBib29sIGlmX25vdF9leGlzdHMpCiAJCU9iamVjdElkR2V0RGF0dW0ocHViaWQpOwog CXZhbHVlc1tBbnVtX3BnX3B1YmxpY2F0aW9uX25hbWVzcGFjZV9wbm5zcGlkIC0gMV0gPQog CQlPYmplY3RJZEdldERhdHVtKHNjaGVtYWlkKTsKKwl2YWx1ZXNbQW51bV9wZ19wdWJsaWNh dGlvbl9uYW1lc3BhY2VfcG50eXBlIC0gMV0gPQorCQlDaGFyR2V0RGF0dW0ob2JqZWN0VHlw ZSk7CiAKIAl0dXAgPSBoZWFwX2Zvcm1fdHVwbGUoUmVsYXRpb25HZXREZXNjcihyZWwpLCB2 YWx1ZXMsIG51bGxzKTsKIApAQCAtNjgwLDcgKzczNSw3IEBAIHB1YmxpY2F0aW9uX2FkZF9z Y2hlbWEoT2lkIHB1YmlkLCBPaWQgc2NoZW1haWQsIGJvb2wgaWZfbm90X2V4aXN0cykKIAkg KiBwdWJsaWNhdGlvbl9hZGRfcmVsYXRpb24gZm9yIHdoeSB3ZSBuZWVkIHRvIGNvbnNpZGVy IGFsbCB0aGUKIAkgKiBwYXJ0aXRpb25zLgogCSAqLwotCXNjaGVtYVJlbHMgPSBHZXRTY2hl bWFQdWJsaWNhdGlvblJlbGF0aW9ucyhzY2hlbWFpZCwKKwlzY2hlbWFSZWxzID0gR2V0U2No ZW1hUHVibGljYXRpb25SZWxhdGlvbnMoc2NoZW1haWQsIG9iamVjdFR5cGUsCiAJCQkJCQkJ CQkJCSAgIFBVQkxJQ0FUSU9OX1BBUlRfQUxMKTsKIAlJbnZhbGlkYXRlUHVibGljYXRpb25S ZWxzKHNjaGVtYVJlbHMpOwogCkBAIC03MTQsMTEgKzc2OSwxNCBAQCBHZXRSZWxhdGlvblB1 YmxpY2F0aW9ucyhPaWQgcmVsaWQpCiAvKgogICogR2V0cyBsaXN0IG9mIHJlbGF0aW9uIG9p ZHMgZm9yIGEgcHVibGljYXRpb24uCiAgKgotICogVGhpcyBzaG91bGQgb25seSBiZSB1c2Vk IEZPUiBUQUJMRSBwdWJsaWNhdGlvbnMsIHRoZSBGT1IgQUxMIFRBQkxFUwotICogc2hvdWxk IHVzZSBHZXRBbGxUYWJsZXNQdWJsaWNhdGlvblJlbGF0aW9ucygpLgorICogVGhpcyBzaG91 bGQgb25seSBiZSB1c2VkIEZPUiBUQUJMRSAvIEZPUiBTRVFVRU5DRSBwdWJsaWNhdGlvbnMs IHRoZSBGT1IKKyAqIEFMTCBUQUJMRVMgLyBTRVFVRU5DRVMgc2hvdWxkIHVzZSBHZXRBbGxU YWJsZXNQdWJsaWNhdGlvblJlbGF0aW9ucygpCisgKiBhbmQgR2V0QWxsU2VxdWVuY2VzUHVi bGljYXRpb25SZWxhdGlvbnMoKS4KKyAqCisgKiBYWFggcHViX3BhcnRvcHQgb25seSBtYXR0 ZXJzIGZvciB0YWJsZXMsIG5vdCBzZXF1ZW5jZXMuCiAgKi8KIExpc3QgKgotR2V0UHVibGlj YXRpb25SZWxhdGlvbnMoT2lkIHB1YmlkLCBQdWJsaWNhdGlvblBhcnRPcHQgcHViX3BhcnRv cHQpCitHZXRQdWJsaWNhdGlvblJlbGF0aW9ucyhPaWQgcHViaWQsIGNoYXIgb2JqZWN0VHlw ZSwgUHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0KQogewogCUxpc3QJICAgKnJlc3Vs dDsKIAlSZWxhdGlvbglwdWJyZWxzcmVsOwpAQCAtNzI2LDYgKzc4NCw4IEBAIEdldFB1Ymxp Y2F0aW9uUmVsYXRpb25zKE9pZCBwdWJpZCwgUHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0 b3B0KQogCVN5c1NjYW5EZXNjIHNjYW47CiAJSGVhcFR1cGxlCXR1cDsKIAorCUFzc2VydE9i amVjdFR5cGVWYWxpZChvYmplY3RUeXBlKTsKKwogCS8qIEZpbmQgYWxsIHB1YmxpY2F0aW9u cyBhc3NvY2lhdGVkIHdpdGggdGhlIHJlbGF0aW9uLiAqLwogCXB1YnJlbHNyZWwgPSB0YWJs ZV9vcGVuKFB1YmxpY2F0aW9uUmVsUmVsYXRpb25JZCwgQWNjZXNzU2hhcmVMb2NrKTsKIApA QCAtNzQwLDExICs4MDAsMjkgQEAgR2V0UHVibGljYXRpb25SZWxhdGlvbnMoT2lkIHB1Ymlk LCBQdWJsaWNhdGlvblBhcnRPcHQgcHViX3BhcnRvcHQpCiAJcmVzdWx0ID0gTklMOwogCXdo aWxlIChIZWFwVHVwbGVJc1ZhbGlkKHR1cCA9IHN5c3RhYmxlX2dldG5leHQoc2NhbikpKQog CXsKKwkJY2hhcgkJcmVsa2luZDsKIAkJRm9ybV9wZ19wdWJsaWNhdGlvbl9yZWwgcHVicmVs OwogCiAJCXB1YnJlbCA9IChGb3JtX3BnX3B1YmxpY2F0aW9uX3JlbCkgR0VUU1RSVUNUKHR1 cCk7Ci0JCXJlc3VsdCA9IEdldFB1YlBhcnRpdGlvbk9wdGlvblJlbGF0aW9ucyhyZXN1bHQs IHB1Yl9wYXJ0b3B0LAotCQkJCQkJCQkJCQkJcHVicmVsLT5wcnJlbGlkKTsKKwkJcmVsa2lu ZCA9IGdldF9yZWxfcmVsa2luZChwdWJyZWwtPnBycmVsaWQpOworCisJCS8qCisJCSAqIElm IHRoZSByZWxraW5kIGRvZXMgbm90IG1hdGNoIHRoZSByZXF1ZXN0ZWQgb2JqZWN0IHR5cGUs IGlnbm9yZSB0aGUKKwkJICogcmVsYXRpb24uIEZvciBleGFtcGxlIHdlIG1pZ2h0IGJlIGlu dGVyZXN0ZWQgb25seSBpbiBzZXF1ZW5jZXMsIHNvCisJCSAqIHdlIGlnbm9yZSB0YWJsZXMu CisJCSAqLworCQlpZiAoIXB1Yl9vYmplY3RfdHlwZV9tYXRjaGVzX3JlbGtpbmQob2JqZWN0 VHlwZSwgcmVsa2luZCkpCisJCQljb250aW51ZTsKKworCQkvKgorCQkgKiBXZSBkb24ndCBo YXZlIHBhcnRpdGlvbmVkIHNlcXVlbmNlcywgc28ganVzdCBhZGQgdGhlbSB0byB0aGUgbGlz dC4KKwkJICogT3RoZXJ3aXNlIGNvbnNpZGVyIGFkZGluZyBhbGwgY2hpbGQgcmVsYXRpb25z LCBpZiByZXF1ZXN0ZWQuCisJCSAqLworCQlpZiAocmVsa2luZCA9PSBSRUxLSU5EX1NFUVVF TkNFKQorCQkJcmVzdWx0ID0gbGFwcGVuZF9vaWQocmVzdWx0LCBwdWJyZWwtPnBycmVsaWQp OworCQllbHNlCisJCQlyZXN1bHQgPSBHZXRQdWJQYXJ0aXRpb25PcHRpb25SZWxhdGlvbnMo cmVzdWx0LCBwdWJfcGFydG9wdCwKKwkJCQkJCQkJCQkJCQlwdWJyZWwtPnBycmVsaWQpOwog CX0KIAogCXN5c3RhYmxlX2VuZHNjYW4oc2Nhbik7CkBAIC03OTQsNiArODcyLDQzIEBAIEdl dEFsbFRhYmxlc1B1YmxpY2F0aW9ucyh2b2lkKQogCXJldHVybiByZXN1bHQ7CiB9CiAKKy8q CisgKiBHZXRzIGxpc3Qgb2YgcHVibGljYXRpb24gb2lkcyBmb3IgcHVibGljYXRpb25zIG1h cmtlZCBhcyBGT1IgQUxMIFNFUVVFTkNFUy4KKyAqLworTGlzdCAqCitHZXRBbGxTZXF1ZW5j ZXNQdWJsaWNhdGlvbnModm9pZCkKK3sKKwlMaXN0CSAgICpyZXN1bHQ7CisJUmVsYXRpb24J cmVsOworCVNjYW5LZXlEYXRhIHNjYW5rZXk7CisJU3lzU2NhbkRlc2Mgc2NhbjsKKwlIZWFw VHVwbGUJdHVwOworCisJLyogRmluZCBhbGwgcHVibGljYXRpb25zIHRoYXQgYXJlIG1hcmtl ZCBhcyBmb3IgYWxsIHNlcXVlbmNlcy4gKi8KKwlyZWwgPSB0YWJsZV9vcGVuKFB1YmxpY2F0 aW9uUmVsYXRpb25JZCwgQWNjZXNzU2hhcmVMb2NrKTsKKworCVNjYW5LZXlJbml0KCZzY2Fu a2V5LAorCQkJCUFudW1fcGdfcHVibGljYXRpb25fcHViYWxsc2VxdWVuY2VzLAorCQkJCUJU RXF1YWxTdHJhdGVneU51bWJlciwgRl9CT09MRVEsCisJCQkJQm9vbEdldERhdHVtKHRydWUp KTsKKworCXNjYW4gPSBzeXN0YWJsZV9iZWdpbnNjYW4ocmVsLCBJbnZhbGlkT2lkLCBmYWxz ZSwKKwkJCQkJCQkgIE5VTEwsIDEsICZzY2Fua2V5KTsKKworCXJlc3VsdCA9IE5JTDsKKwl3 aGlsZSAoSGVhcFR1cGxlSXNWYWxpZCh0dXAgPSBzeXN0YWJsZV9nZXRuZXh0KHNjYW4pKSkK Kwl7CisJCU9pZAkJCW9pZCA9ICgoRm9ybV9wZ19wdWJsaWNhdGlvbikgR0VUU1RSVUNUKHR1 cCkpLT5vaWQ7CisKKwkJcmVzdWx0ID0gbGFwcGVuZF9vaWQocmVzdWx0LCBvaWQpOworCX0K KworCXN5c3RhYmxlX2VuZHNjYW4oc2Nhbik7CisJdGFibGVfY2xvc2UocmVsLCBBY2Nlc3NT aGFyZUxvY2spOworCisJcmV0dXJuIHJlc3VsdDsKK30KKwogLyoKICAqIEdldHMgbGlzdCBv ZiBhbGwgcmVsYXRpb24gcHVibGlzaGVkIGJ5IEZPUiBBTEwgVEFCTEVTIHB1YmxpY2F0aW9u KHMpLgogICoKQEAgLTg2MCwyOCArOTc1LDM4IEBAIEdldEFsbFRhYmxlc1B1YmxpY2F0aW9u UmVsYXRpb25zKGJvb2wgcHVidmlhcm9vdCkKIC8qCiAgKiBHZXRzIHRoZSBsaXN0IG9mIHNj aGVtYSBvaWRzIGZvciBhIHB1YmxpY2F0aW9uLgogICoKLSAqIFRoaXMgc2hvdWxkIG9ubHkg YmUgdXNlZCBGT1IgVEFCTEVTIElOIFNDSEVNQSBwdWJsaWNhdGlvbnMuCisgKiBUaGlzIHNo b3VsZCBvbmx5IGJlIHVzZWQgRk9SIFRBQkxFUyBJTiBTQ0hFTUEgYW5kIEZPUiBTRVFVRU5D RVMgSU4gU0NIRU1BCisgKiBwdWJsaWNhdGlvbnMuCisgKgorICogJ29iamVjdFR5cGUnIGRl dGVybWluZXMgd2hldGhlciB0byBnZXQgRk9SIFRBQkxFIG9yIEZPUiBTRVFVRU5DRVMgc2No ZW1hcwogICovCiBMaXN0ICoKLUdldFB1YmxpY2F0aW9uU2NoZW1hcyhPaWQgcHViaWQpCitH ZXRQdWJsaWNhdGlvblNjaGVtYXMoT2lkIHB1YmlkLCBjaGFyIG9iamVjdFR5cGUpCiB7CiAJ TGlzdAkgICAqcmVzdWx0ID0gTklMOwogCVJlbGF0aW9uCXB1YnNjaHNyZWw7Ci0JU2Nhbktl eURhdGEgc2NhbmtleTsKKwlTY2FuS2V5RGF0YSBzY2Fua2V5WzJdOwogCVN5c1NjYW5EZXNj IHNjYW47CiAJSGVhcFR1cGxlCXR1cDsKIAorCUFzc2VydE9iamVjdFR5cGVWYWxpZChvYmpl Y3RUeXBlKTsKKwogCS8qIEZpbmQgYWxsIHNjaGVtYXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBw dWJsaWNhdGlvbiAqLwogCXB1YnNjaHNyZWwgPSB0YWJsZV9vcGVuKFB1YmxpY2F0aW9uTmFt ZXNwYWNlUmVsYXRpb25JZCwgQWNjZXNzU2hhcmVMb2NrKTsKIAotCVNjYW5LZXlJbml0KCZz Y2Fua2V5LAorCVNjYW5LZXlJbml0KCZzY2Fua2V5WzBdLAogCQkJCUFudW1fcGdfcHVibGlj YXRpb25fbmFtZXNwYWNlX3BucHViaWQsCiAJCQkJQlRFcXVhbFN0cmF0ZWd5TnVtYmVyLCBG X09JREVRLAogCQkJCU9iamVjdElkR2V0RGF0dW0ocHViaWQpKTsKIAorCVNjYW5LZXlJbml0 KCZzY2Fua2V5WzFdLAorCQkJCUFudW1fcGdfcHVibGljYXRpb25fbmFtZXNwYWNlX3BudHlw ZSwKKwkJCQlCVEVxdWFsU3RyYXRlZ3lOdW1iZXIsIEZfQ0hBUkVRLAorCQkJCUNoYXJHZXRE YXR1bShvYmplY3RUeXBlKSk7CisKIAlzY2FuID0gc3lzdGFibGVfYmVnaW5zY2FuKHB1YnNj aHNyZWwsCi0JCQkJCQkJICBQdWJsaWNhdGlvbk5hbWVzcGFjZVBubnNwaWRQbnB1YmlkSW5k ZXhJZCwKLQkJCQkJCQkgIHRydWUsIE5VTEwsIDEsICZzY2Fua2V5KTsKKwkJCQkJCQkgIFB1 YmxpY2F0aW9uTmFtZXNwYWNlUG5uc3BpZFBucHViaWRQbnR5cGVJbmRleElkLAorCQkJCQkJ CSAgdHJ1ZSwgTlVMTCwgMiwgc2NhbmtleSk7CiAJd2hpbGUgKEhlYXBUdXBsZUlzVmFsaWQo dHVwID0gc3lzdGFibGVfZ2V0bmV4dChzY2FuKSkpCiAJewogCQlGb3JtX3BnX3B1YmxpY2F0 aW9uX25hbWVzcGFjZSBwdWJzY2g7CkBAIC04OTksMTQgKzEwMjQsMjYgQEAgR2V0UHVibGlj YXRpb25TY2hlbWFzKE9pZCBwdWJpZCkKIAogLyoKICAqIEdldHMgdGhlIGxpc3Qgb2YgcHVi bGljYXRpb24gb2lkcyBhc3NvY2lhdGVkIHdpdGggYSBzcGVjaWZpZWQgc2NoZW1hLgorICoK KyAqIG9iamVjdFR5cGUgc3BlY2lmaWVzIHdoZXRoZXIgd2UncmUgbG9va2luZyBmb3Igc2No ZW1hcyBpbmNsdWRpbmcgdGFibGVzIG9yCisgKiBzZXF1ZW5jZXMuCisgKgorICogTm90ZTog cmVsY2FjaGUgY2FsbHMgdGhpcyBmb3IgYWxsIG9iamVjdCB0eXBlcywgbm90IGp1c3QgdGFi bGVzIGFuZCBzZXF1ZW5jZXMuCisgKiBXaGljaCBpcyB3aHkgd2UgaGFuZGxlIHRoZSBQVUJf T0JKVFlQRV9VTlNVUFBPUlRFRCBvYmplY3QgdHlwZSB0b28uCiAgKi8KIExpc3QgKgotR2V0 U2NoZW1hUHVibGljYXRpb25zKE9pZCBzY2hlbWFpZCkKK0dldFNjaGVtYVB1YmxpY2F0aW9u cyhPaWQgc2NoZW1haWQsIGNoYXIgb2JqZWN0VHlwZSkKIHsKIAlMaXN0CSAgICpyZXN1bHQg PSBOSUw7CiAJQ2F0Q0xpc3QgICAqcHVic2NobGlzdDsKIAlpbnQJCQlpOwogCisJLyogdW5z dXBwb3J0ZWQgb2JqZWN0IHR5cGUgKi8KKwlpZiAob2JqZWN0VHlwZSA9PSBQVUJfT0JKVFlQ RV9VTlNVUFBPUlRFRCkKKwkJcmV0dXJuIHJlc3VsdDsKKworCUFzc2VydE9iamVjdFR5cGVW YWxpZChvYmplY3RUeXBlKTsKKwogCS8qIEZpbmQgYWxsIHB1YmxpY2F0aW9ucyBhc3NvY2lh dGVkIHdpdGggdGhlIHNjaGVtYSAqLwogCXB1YnNjaGxpc3QgPSBTZWFyY2hTeXNDYWNoZUxp c3QxKFBVQkxJQ0FUSU9OTkFNRVNQQUNFTUFQLAogCQkJCQkJCQkJIE9iamVjdElkR2V0RGF0 dW0oc2NoZW1haWQpKTsKQEAgLTkxNCw2ICsxMDUxLDExIEBAIEdldFNjaGVtYVB1YmxpY2F0 aW9ucyhPaWQgc2NoZW1haWQpCiAJewogCQlIZWFwVHVwbGUJdHVwID0gJnB1YnNjaGxpc3Qt Pm1lbWJlcnNbaV0tPnR1cGxlOwogCQlPaWQJCQlwdWJpZCA9ICgoRm9ybV9wZ19wdWJsaWNh dGlvbl9uYW1lc3BhY2UpIEdFVFNUUlVDVCh0dXApKS0+cG5wdWJpZDsKKwkJY2hhcgkJcG50 eXBlID0gKChGb3JtX3BnX3B1YmxpY2F0aW9uX25hbWVzcGFjZSkgR0VUU1RSVUNUKHR1cCkp LT5wbnR5cGU7CisKKwkJLyogU2tpcCBzY2hlbWFzIHB1Ymxpc2hpbmcgYSBkaWZmZXJlbnQg b2JqZWN0IHR5cGUuICovCisJCWlmIChwbnR5cGUgIT0gb2JqZWN0VHlwZSkKKwkJCWNvbnRp bnVlOwogCiAJCXJlc3VsdCA9IGxhcHBlbmRfb2lkKHJlc3VsdCwgcHViaWQpOwogCX0KQEAg LTkyNSw5ICsxMDY3LDEzIEBAIEdldFNjaGVtYVB1YmxpY2F0aW9ucyhPaWQgc2NoZW1haWQp CiAKIC8qCiAgKiBHZXQgdGhlIGxpc3Qgb2YgcHVibGlzaGFibGUgcmVsYXRpb24gb2lkcyBm b3IgYSBzcGVjaWZpZWQgc2NoZW1hLgorICoKKyAqIG9iamVjdFR5cGUgc3BlY2lmaWVzIHdo ZXRoZXIgdGhpcyBpcyBGT1IgQUxMIFRBQkxFUyBJTiBTQ0hFTUEgb3IgRk9SIEFMTAorICog U0VRVUVOQ0VTIElOIFNDSEVNQQogICovCiBMaXN0ICoKLUdldFNjaGVtYVB1YmxpY2F0aW9u UmVsYXRpb25zKE9pZCBzY2hlbWFpZCwgUHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0 KQorR2V0U2NoZW1hUHVibGljYXRpb25SZWxhdGlvbnMoT2lkIHNjaGVtYWlkLCBjaGFyIG9i amVjdFR5cGUsCisJCQkJCQkJICBQdWJsaWNhdGlvblBhcnRPcHQgcHViX3BhcnRvcHQpCiB7 CiAJUmVsYXRpb24JY2xhc3NSZWw7CiAJU2NhbktleURhdGEga2V5WzFdOwpAQCAtOTM2LDYg KzEwODIsNyBAQCBHZXRTY2hlbWFQdWJsaWNhdGlvblJlbGF0aW9ucyhPaWQgc2NoZW1haWQs IFB1YmxpY2F0aW9uUGFydE9wdCBwdWJfcGFydG9wdCkKIAlMaXN0CSAgICpyZXN1bHQgPSBO SUw7CiAKIAlBc3NlcnQoT2lkSXNWYWxpZChzY2hlbWFpZCkpOworCUFzc2VydE9iamVjdFR5 cGVWYWxpZChvYmplY3RUeXBlKTsKIAogCWNsYXNzUmVsID0gdGFibGVfb3BlbihSZWxhdGlv blJlbGF0aW9uSWQsIEFjY2Vzc1NoYXJlTG9jayk7CiAKQEAgLTk1Niw5ICsxMTAzLDE3IEBA IEdldFNjaGVtYVB1YmxpY2F0aW9uUmVsYXRpb25zKE9pZCBzY2hlbWFpZCwgUHVibGljYXRp b25QYXJ0T3B0IHB1Yl9wYXJ0b3B0KQogCQkJY29udGludWU7CiAKIAkJcmVsa2luZCA9IGdl dF9yZWxfcmVsa2luZChyZWxpZCk7Ci0JCWlmIChyZWxraW5kID09IFJFTEtJTkRfUkVMQVRJ T04pCi0JCQlyZXN1bHQgPSBsYXBwZW5kX29pZChyZXN1bHQsIHJlbGlkKTsKLQkJZWxzZSBp ZiAocmVsa2luZCA9PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFKQorCisJCS8qIFNraXAg aWYgdGhlIHJlbGtpbmQgZG9lcyBub3QgbWF0Y2ggRk9SIEFMTCBUQUJMRVMgLyBTRVFVRU5D RVMuICovCisJCWlmICghcHViX29iamVjdF90eXBlX21hdGNoZXNfcmVsa2luZChvYmplY3RU eXBlLCByZWxraW5kKSkKKwkJCWNvbnRpbnVlOworCisJCS8qCisJCSAqIElmIHRoZSBvYmpl Y3QgaXMgYSBwYXJ0aXRpb25lZCB0YWJsZSwgbG9va3VwIGFsbCB0aGUgY2hpbGQKKwkJICog cmVsYXRpb25zIChpZiByZXF1ZXN0ZWQpLiBPdGhlcndpc2UganVzdCBhZGQgdGhlIG9iamVj dCB0byB0aGUKKwkJICogbGlzdC4KKwkJICovCisJCWlmIChyZWxraW5kID09IFJFTEtJTkRf UEFSVElUSU9ORURfVEFCTEUpCiAJCXsKIAkJCUxpc3QJICAgKnBhcnRpdGlvbnJlbHMgPSBO SUw7CiAKQEAgLTk3MSw3ICsxMTI2LDExIEBAIEdldFNjaGVtYVB1YmxpY2F0aW9uUmVsYXRp b25zKE9pZCBzY2hlbWFpZCwgUHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0KQogCQkJ CQkJCQkJCQkJCQkgICBwdWJfcGFydG9wdCwKIAkJCQkJCQkJCQkJCQkJICAgcmVsRm9ybS0+ b2lkKTsKIAkJCXJlc3VsdCA9IGxpc3RfY29uY2F0X3VuaXF1ZV9vaWQocmVzdWx0LCBwYXJ0 aXRpb25yZWxzKTsKKwkJCWNvbnRpbnVlOwogCQl9CisKKwkJLyogbm9uLXBhcnRpdGlvbmVk IHRhYmxlcyBhbmQgc2VxdWVuY2VzICovCisJCXJlc3VsdCA9IGxhcHBlbmRfb2lkKHJlc3Vs dCwgcmVsaWQpOwogCX0KIAogCXRhYmxlX2VuZHNjYW4oc2Nhbik7CkBAIC05ODAsMjggKzEx MzksNjggQEAgR2V0U2NoZW1hUHVibGljYXRpb25SZWxhdGlvbnMoT2lkIHNjaGVtYWlkLCBQ dWJsaWNhdGlvblBhcnRPcHQgcHViX3BhcnRvcHQpCiB9CiAKIC8qCi0gKiBHZXRzIHRoZSBs aXN0IG9mIGFsbCByZWxhdGlvbnMgcHVibGlzaGVkIGJ5IEZPUiBUQUJMRVMgSU4gU0NIRU1B Ci0gKiBwdWJsaWNhdGlvbi4KKyAqIEdldHMgdGhlIGxpc3Qgb2YgYWxsIHJlbGF0aW9ucyBw dWJsaXNoZWQgYnkgRk9SIFRBQkxFUyBJTiBTQ0hFTUEgb3IKKyAqIEZPUiBTRVFVRU5DRVMg SU4gU0NIRU1BIHB1YmxpY2F0aW9uLgogICovCiBMaXN0ICoKLUdldEFsbFNjaGVtYVB1Ymxp Y2F0aW9uUmVsYXRpb25zKE9pZCBwdWJpZCwgUHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0 b3B0KQorR2V0QWxsU2NoZW1hUHVibGljYXRpb25SZWxhdGlvbnMoT2lkIHB1YmlkLCBjaGFy IG9iamVjdFR5cGUsCisJCQkJCQkJCSBQdWJsaWNhdGlvblBhcnRPcHQgcHViX3BhcnRvcHQp CiB7CiAJTGlzdAkgICAqcmVzdWx0ID0gTklMOwotCUxpc3QJICAgKnB1YnNjaGVtYWxpc3Qg PSBHZXRQdWJsaWNhdGlvblNjaGVtYXMocHViaWQpOworCUxpc3QJICAgKnB1YnNjaGVtYWxp c3QgPSBHZXRQdWJsaWNhdGlvblNjaGVtYXMocHViaWQsIG9iamVjdFR5cGUpOwogCUxpc3RD ZWxsICAgKmNlbGw7CiAKKwlBc3NlcnRPYmplY3RUeXBlVmFsaWQob2JqZWN0VHlwZSk7CisK IAlmb3JlYWNoKGNlbGwsIHB1YnNjaGVtYWxpc3QpCiAJewogCQlPaWQJCQlzY2hlbWFpZCA9 IGxmaXJzdF9vaWQoY2VsbCk7CiAJCUxpc3QJICAgKnNjaGVtYVJlbHMgPSBOSUw7CiAKLQkJ c2NoZW1hUmVscyA9IEdldFNjaGVtYVB1YmxpY2F0aW9uUmVsYXRpb25zKHNjaGVtYWlkLCBw dWJfcGFydG9wdCk7CisJCXNjaGVtYVJlbHMgPSBHZXRTY2hlbWFQdWJsaWNhdGlvblJlbGF0 aW9ucyhzY2hlbWFpZCwgb2JqZWN0VHlwZSwKKwkJCQkJCQkJCQkJCSAgIHB1Yl9wYXJ0b3B0 KTsKIAkJcmVzdWx0ID0gbGlzdF9jb25jYXQocmVzdWx0LCBzY2hlbWFSZWxzKTsKIAl9CiAK IAlyZXR1cm4gcmVzdWx0OwogfQogCisvKgorICogR2V0cyBsaXN0IG9mIGFsbCByZWxhdGlv biBwdWJsaXNoZWQgYnkgRk9SIEFMTCBTRVFVRU5DRVMgcHVibGljYXRpb24ocykuCisgKi8K K0xpc3QgKgorR2V0QWxsU2VxdWVuY2VzUHVibGljYXRpb25SZWxhdGlvbnModm9pZCkKK3sK KwlSZWxhdGlvbgljbGFzc1JlbDsKKwlTY2FuS2V5RGF0YSBrZXlbMV07CisJVGFibGVTY2Fu RGVzYyBzY2FuOworCUhlYXBUdXBsZQl0dXBsZTsKKwlMaXN0CSAgICpyZXN1bHQgPSBOSUw7 CisKKwljbGFzc1JlbCA9IHRhYmxlX29wZW4oUmVsYXRpb25SZWxhdGlvbklkLCBBY2Nlc3NT aGFyZUxvY2spOworCisJU2NhbktleUluaXQoJmtleVswXSwKKwkJCQlBbnVtX3BnX2NsYXNz X3JlbGtpbmQsCisJCQkJQlRFcXVhbFN0cmF0ZWd5TnVtYmVyLCBGX0NIQVJFUSwKKwkJCQlD aGFyR2V0RGF0dW0oUkVMS0lORF9TRVFVRU5DRSkpOworCisJc2NhbiA9IHRhYmxlX2JlZ2lu c2Nhbl9jYXRhbG9nKGNsYXNzUmVsLCAxLCBrZXkpOworCisJd2hpbGUgKCh0dXBsZSA9IGhl YXBfZ2V0bmV4dChzY2FuLCBGb3J3YXJkU2NhbkRpcmVjdGlvbikpICE9IE5VTEwpCisJewor CQlGb3JtX3BnX2NsYXNzIHJlbEZvcm0gPSAoRm9ybV9wZ19jbGFzcykgR0VUU1RSVUNUKHR1 cGxlKTsKKwkJT2lkCQkJcmVsaWQgPSByZWxGb3JtLT5vaWQ7CisKKwkJaWYgKGlzX3B1Ymxp c2hhYmxlX2NsYXNzKHJlbGlkLCByZWxGb3JtKSkKKwkJCXJlc3VsdCA9IGxhcHBlbmRfb2lk KHJlc3VsdCwgcmVsaWQpOworCX0KKworCXRhYmxlX2VuZHNjYW4oc2Nhbik7CisKKwl0YWJs ZV9jbG9zZShjbGFzc1JlbCwgQWNjZXNzU2hhcmVMb2NrKTsKKwlyZXR1cm4gcmVzdWx0Owor fQorCiAvKgogICogR2V0IHB1YmxpY2F0aW9uIHVzaW5nIG9pZAogICoKQEAgLTEwMjQsMTAg KzEyMjMsMTIgQEAgR2V0UHVibGljYXRpb24oT2lkIHB1YmlkKQogCXB1Yi0+b2lkID0gcHVi aWQ7CiAJcHViLT5uYW1lID0gcHN0cmR1cChOYW1lU3RyKHB1YmZvcm0tPnB1Ym5hbWUpKTsK IAlwdWItPmFsbHRhYmxlcyA9IHB1YmZvcm0tPnB1YmFsbHRhYmxlczsKKwlwdWItPmFsbHNl cXVlbmNlcyA9IHB1YmZvcm0tPnB1YmFsbHNlcXVlbmNlczsKIAlwdWItPnB1YmFjdGlvbnMu cHViaW5zZXJ0ID0gcHViZm9ybS0+cHViaW5zZXJ0OwogCXB1Yi0+cHViYWN0aW9ucy5wdWJ1 cGRhdGUgPSBwdWJmb3JtLT5wdWJ1cGRhdGU7CiAJcHViLT5wdWJhY3Rpb25zLnB1YmRlbGV0 ZSA9IHB1YmZvcm0tPnB1YmRlbGV0ZTsKIAlwdWItPnB1YmFjdGlvbnMucHVidHJ1bmNhdGUg PSBwdWJmb3JtLT5wdWJ0cnVuY2F0ZTsKKwlwdWItPnB1YmFjdGlvbnMucHVic2VxdWVuY2Ug PSBwdWJmb3JtLT5wdWJzZXF1ZW5jZTsKIAlwdWItPnB1YnZpYXJvb3QgPSBwdWJmb3JtLT5w dWJ2aWFyb290OwogCiAJUmVsZWFzZVN5c0NhY2hlKHR1cCk7CkBAIC0xMTA4LDEwICsxMzA5 LDEyIEBAIHBnX2dldF9wdWJsaWNhdGlvbl90YWJsZXMoUEdfRlVOQ1RJT05fQVJHUykKIAkJ CQkJCSAgICpzY2hlbWFyZWxpZHM7CiAKIAkJCQlyZWxpZHMgPSBHZXRQdWJsaWNhdGlvblJl bGF0aW9ucyhwdWJfZWxlbS0+b2lkLAorCQkJCQkJCQkJCQkJIFBVQl9PQkpUWVBFX1RBQkxF LAogCQkJCQkJCQkJCQkJIHB1Yl9lbGVtLT5wdWJ2aWFyb290ID8KIAkJCQkJCQkJCQkJCSBQ VUJMSUNBVElPTl9QQVJUX1JPT1QgOgogCQkJCQkJCQkJCQkJIFBVQkxJQ0FUSU9OX1BBUlRf TEVBRik7CiAJCQkJc2NoZW1hcmVsaWRzID0gR2V0QWxsU2NoZW1hUHVibGljYXRpb25SZWxh dGlvbnMocHViX2VsZW0tPm9pZCwKKwkJCQkJCQkJCQkJCQkJCQlQVUJfT0JKVFlQRV9UQUJM RSwKIAkJCQkJCQkJCQkJCQkJCQlwdWJfZWxlbS0+cHVidmlhcm9vdCA/CiAJCQkJCQkJCQkJ CQkJCQkJUFVCTElDQVRJT05fUEFSVF9ST09UIDoKIAkJCQkJCQkJCQkJCQkJCQlQVUJMSUNB VElPTl9QQVJUX0xFQUYpOwpAQCAtMTE5Nyw5ICsxNDAwLDEwIEBAIHBnX2dldF9wdWJsaWNh dGlvbl90YWJsZXMoUEdfRlVOQ1RJT05fQVJHUykKIAkJICogRk9SIFRBQkxFUyBJTiBTQ0hF TUEgcHVibGljYXRpb25zLgogCQkgKi8KIAkJaWYgKCFwdWItPmFsbHRhYmxlcyAmJgotCQkJ IVNlYXJjaFN5c0NhY2hlRXhpc3RzMihQVUJMSUNBVElPTk5BTUVTUEFDRU1BUCwKKwkJCSFT ZWFyY2hTeXNDYWNoZUV4aXN0czMoUFVCTElDQVRJT05OQU1FU1BBQ0VNQVAsCiAJCQkJCQkJ CSAgIE9iamVjdElkR2V0RGF0dW0oc2NoZW1haWQpLAotCQkJCQkJCQkgICBPYmplY3RJZEdl dERhdHVtKHB1Yi0+b2lkKSkpCisJCQkJCQkJCSAgIE9iamVjdElkR2V0RGF0dW0ocHViLT5v aWQpLAorCQkJCQkJCQkgICBQVUJfT0JKVFlQRV9UQUJMRSkpCiAJCQlwdWJ0dXBsZSA9IFNl YXJjaFN5c0NhY2hlQ29weTIoUFVCTElDQVRJT05SRUxNQVAsCiAJCQkJCQkJCQkJICAgT2Jq ZWN0SWRHZXREYXR1bShyZWxpZCksCiAJCQkJCQkJCQkJICAgT2JqZWN0SWRHZXREYXR1bShw dWItPm9pZCkpOwpAQCAtMTI1OSwzICsxNDYzLDcxIEBAIHBnX2dldF9wdWJsaWNhdGlvbl90 YWJsZXMoUEdfRlVOQ1RJT05fQVJHUykKIAogCVNSRl9SRVRVUk5fRE9ORShmdW5jY3R4KTsK IH0KKworLyoKKyAqIFJldHVybnMgT2lkcyBvZiBzZXF1ZW5jZXMgaW4gYSBwdWJsaWNhdGlv bi4KKyAqLworRGF0dW0KK3BnX2dldF9wdWJsaWNhdGlvbl9zZXF1ZW5jZXMoUEdfRlVOQ1RJ T05fQVJHUykKK3sKKwlGdW5jQ2FsbENvbnRleHQgKmZ1bmNjdHg7CisJY2hhcgkgICAqcHVi bmFtZSA9IHRleHRfdG9fY3N0cmluZyhQR19HRVRBUkdfVEVYVF9QUCgwKSk7CisJUHVibGlj YXRpb24gKnB1YmxpY2F0aW9uOworCUxpc3QJICAgKnNlcXVlbmNlczsKKworCS8qIHN0dWZm IGRvbmUgb25seSBvbiB0aGUgZmlyc3QgY2FsbCBvZiB0aGUgZnVuY3Rpb24gKi8KKwlpZiAo U1JGX0lTX0ZJUlNUQ0FMTCgpKQorCXsKKwkJTWVtb3J5Q29udGV4dCBvbGRjb250ZXh0Owor CisJCS8qIGNyZWF0ZSBhIGZ1bmN0aW9uIGNvbnRleHQgZm9yIGNyb3NzLWNhbGwgcGVyc2lz dGVuY2UgKi8KKwkJZnVuY2N0eCA9IFNSRl9GSVJTVENBTExfSU5JVCgpOworCisJCS8qIHN3 aXRjaCB0byBtZW1vcnkgY29udGV4dCBhcHByb3ByaWF0ZSBmb3IgbXVsdGlwbGUgZnVuY3Rp b24gY2FsbHMgKi8KKwkJb2xkY29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhmdW5j Y3R4LT5tdWx0aV9jYWxsX21lbW9yeV9jdHgpOworCisJCXB1YmxpY2F0aW9uID0gR2V0UHVi bGljYXRpb25CeU5hbWUocHVibmFtZSwgZmFsc2UpOworCisJCS8qCisJCSAqIFB1YmxpY2F0 aW9ucyBzdXBwb3J0IHBhcnRpdGlvbmVkIHRhYmxlcywgYWx0aG91Z2ggYWxsIGNoYW5nZXMg YXJlCisJCSAqIHJlcGxpY2F0ZWQgdXNpbmcgbGVhZiBwYXJ0aXRpb24gaWRlbnRpdHkgYW5k IHNjaGVtYSwgc28gd2Ugb25seQorCQkgKiBuZWVkIHRob3NlLgorCQkgKi8KKwkJaWYgKHB1 YmxpY2F0aW9uLT5hbGxzZXF1ZW5jZXMpCisJCQlzZXF1ZW5jZXMgPSBHZXRBbGxTZXF1ZW5j ZXNQdWJsaWNhdGlvblJlbGF0aW9ucygpOworCQllbHNlCisJCXsKKwkJCUxpc3QJICAgKnJl bGlkcywKKwkJCQkJICAgKnNjaGVtYXJlbGlkczsKKworCQkJcmVsaWRzID0gR2V0UHVibGlj YXRpb25SZWxhdGlvbnMocHVibGljYXRpb24tPm9pZCwKKwkJCQkJCQkJCQkJIFBVQl9PQkpU WVBFX1NFUVVFTkNFLAorCQkJCQkJCQkJCQkgcHVibGljYXRpb24tPnB1YnZpYXJvb3QgPwor CQkJCQkJCQkJCQkgUFVCTElDQVRJT05fUEFSVF9ST09UIDoKKwkJCQkJCQkJCQkJIFBVQkxJ Q0FUSU9OX1BBUlRfTEVBRik7CisJCQlzY2hlbWFyZWxpZHMgPSBHZXRBbGxTY2hlbWFQdWJs aWNhdGlvblJlbGF0aW9ucyhwdWJsaWNhdGlvbi0+b2lkLAorCQkJCQkJCQkJCQkJCQkJUFVC X09CSlRZUEVfU0VRVUVOQ0UsCisJCQkJCQkJCQkJCQkJCQlwdWJsaWNhdGlvbi0+cHVidmlh cm9vdCA/CisJCQkJCQkJCQkJCQkJCQlQVUJMSUNBVElPTl9QQVJUX1JPT1QgOgorCQkJCQkJ CQkJCQkJCQkJUFVCTElDQVRJT05fUEFSVF9MRUFGKTsKKwkJCXNlcXVlbmNlcyA9IGxpc3Rf Y29uY2F0X3VuaXF1ZV9vaWQocmVsaWRzLCBzY2hlbWFyZWxpZHMpOworCQl9CisKKwkJZnVu Y2N0eC0+dXNlcl9mY3R4ID0gKHZvaWQgKikgc2VxdWVuY2VzOworCisJCU1lbW9yeUNvbnRl eHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKKwl9CisKKwkvKiBzdHVmZiBkb25lIG9uIGV2ZXJ5 IGNhbGwgb2YgdGhlIGZ1bmN0aW9uICovCisJZnVuY2N0eCA9IFNSRl9QRVJDQUxMX1NFVFVQ KCk7CisJc2VxdWVuY2VzID0gKExpc3QgKikgZnVuY2N0eC0+dXNlcl9mY3R4OworCisJaWYg KGZ1bmNjdHgtPmNhbGxfY250ciA8IGxpc3RfbGVuZ3RoKHNlcXVlbmNlcykpCisJeworCQlP aWQJCQlyZWxpZCA9IGxpc3RfbnRoX29pZChzZXF1ZW5jZXMsIGZ1bmNjdHgtPmNhbGxfY250 cik7CisKKwkJU1JGX1JFVFVSTl9ORVhUKGZ1bmNjdHgsIE9iamVjdElkR2V0RGF0dW0ocmVs aWQpKTsKKwl9CisKKwlTUkZfUkVUVVJOX0RPTkUoZnVuY2N0eCk7Cit9CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwgYi9zcmMvYmFja2VuZC9j YXRhbG9nL3N5c3RlbV92aWV3cy5zcWwKaW5kZXggMTFkMThlZDlkZDYuLmIyNDIyOWQyNzAz IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwKKysr IGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCkBAIC00MDEsNiArNDAx LDE2IEBAIENSRUFURSBWSUVXIHBnX3B1YmxpY2F0aW9uX3RhYmxlcyBBUwogICAgICAgICAg cGdfY2xhc3MgQyBKT0lOIHBnX25hbWVzcGFjZSBOIE9OIChOLm9pZCA9IEMucmVsbmFtZXNw YWNlKQogICAgIFdIRVJFIEMub2lkID0gR1BULnJlbGlkOwogCitDUkVBVEUgVklFVyBwZ19w dWJsaWNhdGlvbl9zZXF1ZW5jZXMgQVMKKyAgICBTRUxFQ1QKKyAgICAgICAgUC5wdWJuYW1l IEFTIHB1Ym5hbWUsCisgICAgICAgIE4ubnNwbmFtZSBBUyBzY2hlbWFuYW1lLAorICAgICAg ICBDLnJlbG5hbWUgQVMgc2VxdWVuY2VuYW1lCisgICAgRlJPTSBwZ19wdWJsaWNhdGlvbiBQ LAorICAgICAgICAgTEFURVJBTCBwZ19nZXRfcHVibGljYXRpb25fc2VxdWVuY2VzKFAucHVi bmFtZSkgR1BTLAorICAgICAgICAgcGdfY2xhc3MgQyBKT0lOIHBnX25hbWVzcGFjZSBOIE9O IChOLm9pZCA9IEMucmVsbmFtZXNwYWNlKQorICAgIFdIRVJFIEMub2lkID0gR1BTLnJlbGlk OworCiBDUkVBVEUgVklFVyBwZ19sb2NrcyBBUwogICAgIFNFTEVDVCAqIEZST00gcGdfbG9j a19zdGF0dXMoKSBBUyBMOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9w dWJsaWNhdGlvbmNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21k cy5jCmluZGV4IGY0YmE1NzI2OTdhLi5lN2IyNjY3ZjY0YSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvcHVibGljYXRpb25jbWRzLmMKQEAgLTE2LDYgKzE2LDcgQEAKIAogI2luY2x1ZGUg ImFjY2Vzcy9nZW5hbS5oIgogI2luY2x1ZGUgImFjY2Vzcy9odHVwX2RldGFpbHMuaCIKKyNp bmNsdWRlICJhY2Nlc3MvcmVsYXRpb24uaCIKICNpbmNsdWRlICJhY2Nlc3MvdGFibGUuaCIK ICNpbmNsdWRlICJhY2Nlc3MveGFjdC5oIgogI2luY2x1ZGUgImNhdGFsb2cvY2F0YWxvZy5o IgpAQCAtNjgsMTUgKzY5LDE3IEBAIHR5cGVkZWYgc3RydWN0IHJmX2NvbnRleHQKIAlPaWQJ CQlwYXJlbnRpZDsJCS8qIHJlbGlkIG9mIHRoZSBwYXJlbnQgcmVsYXRpb24gKi8KIH0gcmZf Y29udGV4dDsKIAotc3RhdGljIExpc3QgKk9wZW5UYWJsZUxpc3QoTGlzdCAqdGFibGVzKTsK LXN0YXRpYyB2b2lkIENsb3NlVGFibGVMaXN0KExpc3QgKnJlbHMpOworc3RhdGljIExpc3Qg Kk9wZW5SZWxhdGlvbkxpc3QoTGlzdCAqcmVscywgY2hhciBvYmplY3RUeXBlKTsKK3N0YXRp YyB2b2lkIENsb3NlUmVsYXRpb25MaXN0KExpc3QgKnJlbHMpOwogc3RhdGljIHZvaWQgTG9j a1NjaGVtYUxpc3QoTGlzdCAqc2NoZW1hbGlzdCk7Ci1zdGF0aWMgdm9pZCBQdWJsaWNhdGlv bkFkZFRhYmxlcyhPaWQgcHViaWQsIExpc3QgKnJlbHMsIGJvb2wgaWZfbm90X2V4aXN0cywK LQkJCQkJCQkJIEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10KTsKLXN0YXRpYyB2b2lkIFB1 YmxpY2F0aW9uRHJvcFRhYmxlcyhPaWQgcHViaWQsIExpc3QgKnJlbHMsIGJvb2wgbWlzc2lu Z19vayk7Ci1zdGF0aWMgdm9pZCBQdWJsaWNhdGlvbkFkZFNjaGVtYXMoT2lkIHB1YmlkLCBM aXN0ICpzY2hlbWFzLCBib29sIGlmX25vdF9leGlzdHMsCi0JCQkJCQkJCSAgQWx0ZXJQdWJs aWNhdGlvblN0bXQgKnN0bXQpOwotc3RhdGljIHZvaWQgUHVibGljYXRpb25Ecm9wU2NoZW1h cyhPaWQgcHViaWQsIExpc3QgKnNjaGVtYXMsIGJvb2wgbWlzc2luZ19vayk7CitzdGF0aWMg dm9pZCBQdWJsaWNhdGlvbkFkZFJlbGF0aW9ucyhPaWQgcHViaWQsIExpc3QgKnJlbHMsIGJv b2wgaWZfbm90X2V4aXN0cywKKwkJCQkJCQkJCUFsdGVyUHVibGljYXRpb25TdG10ICpzdG10 KTsKK3N0YXRpYyB2b2lkIFB1YmxpY2F0aW9uRHJvcFJlbGF0aW9ucyhPaWQgcHViaWQsIExp c3QgKnJlbHMsIGJvb2wgbWlzc2luZ19vayk7CitzdGF0aWMgdm9pZCBQdWJsaWNhdGlvbkFk ZFNjaGVtYXMoT2lkIHB1YmlkLCBMaXN0ICpzY2hlbWFzLCBjaGFyIG9iamVjdFR5cGUsCisJ CQkJCQkJCSAgYm9vbCBpZl9ub3RfZXhpc3RzLCBBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3Rt dCk7CitzdGF0aWMgdm9pZCBQdWJsaWNhdGlvbkRyb3BTY2hlbWFzKE9pZCBwdWJpZCwgTGlz dCAqc2NoZW1hcywgY2hhciBvYmplY3RUeXBlLAorCQkJCQkJCQkgICBib29sIG1pc3Npbmdf b2spOworCiAKIAogc3RhdGljIHZvaWQKQEAgLTk3LDYgKzEwMCw3IEBAIHBhcnNlX3B1Ymxp Y2F0aW9uX29wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCXB1YmFjdGlvbnMtPnB1YnVw ZGF0ZSA9IHRydWU7CiAJcHViYWN0aW9ucy0+cHViZGVsZXRlID0gdHJ1ZTsKIAlwdWJhY3Rp b25zLT5wdWJ0cnVuY2F0ZSA9IHRydWU7CisJcHViYWN0aW9ucy0+cHVic2VxdWVuY2UgPSB0 cnVlOwogCSpwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCA9IGZhbHNlOwogCiAJLyogUGFy c2Ugb3B0aW9ucyAqLwpAQCAtMTIxLDYgKzEyNSw3IEBAIHBhcnNlX3B1YmxpY2F0aW9uX29w dGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJcHViYWN0aW9ucy0+cHVidXBkYXRlID0g ZmFsc2U7CiAJCQlwdWJhY3Rpb25zLT5wdWJkZWxldGUgPSBmYWxzZTsKIAkJCXB1YmFjdGlv bnMtPnB1YnRydW5jYXRlID0gZmFsc2U7CisJCQlwdWJhY3Rpb25zLT5wdWJzZXF1ZW5jZSA9 IGZhbHNlOwogCiAJCQkqcHVibGlzaF9naXZlbiA9IHRydWU7CiAJCQlwdWJsaXNoID0gZGVm R2V0U3RyaW5nKGRlZmVsKTsKQEAgLTE0NCw2ICsxNDksOCBAQCBwYXJzZV9wdWJsaWNhdGlv bl9vcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJcHViYWN0aW9ucy0+cHViZGVs ZXRlID0gdHJ1ZTsKIAkJCQllbHNlIGlmIChzdHJjbXAocHVibGlzaF9vcHQsICJ0cnVuY2F0 ZSIpID09IDApCiAJCQkJCXB1YmFjdGlvbnMtPnB1YnRydW5jYXRlID0gdHJ1ZTsKKwkJCQll bHNlIGlmIChzdHJjbXAocHVibGlzaF9vcHQsICJzZXF1ZW5jZSIpID09IDApCisJCQkJCXB1 YmFjdGlvbnMtPnB1YnNlcXVlbmNlID0gdHJ1ZTsKIAkJCQllbHNlCiAJCQkJCWVyZXBvcnQo RVJST1IsCiAJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLApAQCAtMTcx LDcgKzE3OCw4IEBAIHBhcnNlX3B1YmxpY2F0aW9uX29wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0 YXRlLAogICovCiBzdGF0aWMgdm9pZAogT2JqZWN0c0luUHVibGljYXRpb25Ub09pZHMoTGlz dCAqcHVib2Jqc3BlY19saXN0LCBQYXJzZVN0YXRlICpwc3RhdGUsCi0JCQkJCQkgICBMaXN0 ICoqcmVscywgTGlzdCAqKnNjaGVtYXMpCisJCQkJCQkgICBMaXN0ICoqdGFibGVzLCBMaXN0 ICoqc2VxdWVuY2VzLAorCQkJCQkJICAgTGlzdCAqKnRhYmxlc19zY2hlbWFzLCBMaXN0ICoq c2VxdWVuY2VzX3NjaGVtYXMpCiB7CiAJTGlzdENlbGwgICAqY2VsbDsKIAlQdWJsaWNhdGlv bk9ialNwZWMgKnB1Ym9iajsKQEAgLTE4OSwxMyArMTk3LDIyIEBAIE9iamVjdHNJblB1Ymxp Y2F0aW9uVG9PaWRzKExpc3QgKnB1Ym9ianNwZWNfbGlzdCwgUGFyc2VTdGF0ZSAqcHN0YXRl LAogCQlzd2l0Y2ggKHB1Ym9iai0+cHVib2JqdHlwZSkKIAkJewogCQkJY2FzZSBQVUJMSUNB VElPTk9CSl9UQUJMRToKLQkJCQkqcmVscyA9IGxhcHBlbmQoKnJlbHMsIHB1Ym9iai0+cHVi dGFibGUpOworCQkJCSp0YWJsZXMgPSBsYXBwZW5kKCp0YWJsZXMsIHB1Ym9iai0+cHVidGFi bGUpOworCQkJCWJyZWFrOworCQkJY2FzZSBQVUJMSUNBVElPTk9CSl9TRVFVRU5DRToKKwkJ CQkqc2VxdWVuY2VzID0gbGFwcGVuZCgqc2VxdWVuY2VzLCBwdWJvYmotPnB1YnRhYmxlKTsK IAkJCQlicmVhazsKIAkJCWNhc2UgUFVCTElDQVRJT05PQkpfVEFCTEVTX0lOX1NDSEVNQToK IAkJCQlzY2hlbWFpZCA9IGdldF9uYW1lc3BhY2Vfb2lkKHB1Ym9iai0+bmFtZSwgZmFsc2Up OwogCiAJCQkJLyogRmlsdGVyIG91dCBkdXBsaWNhdGVzIGlmIHVzZXIgc3BlY2lmaWVzICJz Y2gxLCBzY2gxIiAqLwotCQkJCSpzY2hlbWFzID0gbGlzdF9hcHBlbmRfdW5pcXVlX29pZCgq c2NoZW1hcywgc2NoZW1haWQpOworCQkJCSp0YWJsZXNfc2NoZW1hcyA9IGxpc3RfYXBwZW5k X3VuaXF1ZV9vaWQoKnRhYmxlc19zY2hlbWFzLCBzY2hlbWFpZCk7CisJCQkJYnJlYWs7CisJ CQljYXNlIFBVQkxJQ0FUSU9OT0JKX1NFUVVFTkNFU19JTl9TQ0hFTUE6CisJCQkJc2NoZW1h aWQgPSBnZXRfbmFtZXNwYWNlX29pZChwdWJvYmotPm5hbWUsIGZhbHNlKTsKKworCQkJCS8q IEZpbHRlciBvdXQgZHVwbGljYXRlcyBpZiB1c2VyIHNwZWNpZmllcyAic2NoMSwgc2NoMSIg Ki8KKwkJCQkqc2VxdWVuY2VzX3NjaGVtYXMgPSBsaXN0X2FwcGVuZF91bmlxdWVfb2lkKCpz ZXF1ZW5jZXNfc2NoZW1hcywgc2NoZW1haWQpOwogCQkJCWJyZWFrOwogCQkJY2FzZSBQVUJM SUNBVElPTk9CSl9UQUJMRVNfSU5fQ1VSX1NDSEVNQToKIAkJCQlzZWFyY2hfcGF0aCA9IGZl dGNoX3NlYXJjaF9wYXRoKGZhbHNlKTsKQEAgLTIwOCw3ICsyMjUsMjAgQEAgT2JqZWN0c0lu UHVibGljYXRpb25Ub09pZHMoTGlzdCAqcHVib2Jqc3BlY19saXN0LCBQYXJzZVN0YXRlICpw c3RhdGUsCiAJCQkJbGlzdF9mcmVlKHNlYXJjaF9wYXRoKTsKIAogCQkJCS8qIEZpbHRlciBv dXQgZHVwbGljYXRlcyBpZiB1c2VyIHNwZWNpZmllcyAic2NoMSwgc2NoMSIgKi8KLQkJCQkq c2NoZW1hcyA9IGxpc3RfYXBwZW5kX3VuaXF1ZV9vaWQoKnNjaGVtYXMsIHNjaGVtYWlkKTsK KwkJCQkqdGFibGVzX3NjaGVtYXMgPSBsaXN0X2FwcGVuZF91bmlxdWVfb2lkKCp0YWJsZXNf c2NoZW1hcywgc2NoZW1haWQpOworCQkJCWJyZWFrOworCQkJY2FzZSBQVUJMSUNBVElPTk9C Sl9TRVFVRU5DRVNfSU5fQ1VSX1NDSEVNQToKKwkJCQlzZWFyY2hfcGF0aCA9IGZldGNoX3Nl YXJjaF9wYXRoKGZhbHNlKTsKKwkJCQlpZiAoc2VhcmNoX3BhdGggPT0gTklMKSAvKiBub3Ro aW5nIHZhbGlkIGluIHNlYXJjaF9wYXRoPyAqLworCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJ CQkJCWVycmNvZGUoRVJSQ09ERV9VTkRFRklORURfU0NIRU1BKSwKKwkJCQkJCQllcnJtc2co Im5vIHNjaGVtYSBoYXMgYmVlbiBzZWxlY3RlZCBmb3IgQ1VSUkVOVF9TQ0hFTUEiKSk7CisK KwkJCQlzY2hlbWFpZCA9IGxpbml0aWFsX29pZChzZWFyY2hfcGF0aCk7CisJCQkJbGlzdF9m cmVlKHNlYXJjaF9wYXRoKTsKKworCQkJCS8qIEZpbHRlciBvdXQgZHVwbGljYXRlcyBpZiB1 c2VyIHNwZWNpZmllcyAic2NoMSwgc2NoMSIgKi8KKwkJCQkqc2VxdWVuY2VzX3NjaGVtYXMg PSBsaXN0X2FwcGVuZF91bmlxdWVfb2lkKCpzZXF1ZW5jZXNfc2NoZW1hcywgc2NoZW1haWQp OwogCQkJCWJyZWFrOwogCQkJZGVmYXVsdDoKIAkJCQkvKiBzaG91bGRuJ3QgaGFwcGVuICov CkBAIC03MzQsNiArNzY0LDcgQEAgQ2hlY2tQdWJSZWxhdGlvbkNvbHVtbkxpc3QoY2hhciAq cHVibmFtZSwgTGlzdCAqdGFibGVzLAogT2JqZWN0QWRkcmVzcwogQ3JlYXRlUHVibGljYXRp b24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVQdWJsaWNhdGlvblN0bXQgKnN0bXQpCiB7 CisJTGlzdENlbGwgICAqbGM7CiAJUmVsYXRpb24JcmVsOwogCU9iamVjdEFkZHJlc3MgbXlz ZWxmOwogCU9pZAkJCXB1Ym9pZDsKQEAgLTc0NSw4ICs3NzYsMjcgQEAgQ3JlYXRlUHVibGlj YXRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVQdWJsaWNhdGlvblN0bXQgKnN0bXQp CiAJYm9vbAkJcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3RfZ2l2ZW47CiAJYm9vbAkJcHVi bGlzaF92aWFfcGFydGl0aW9uX3Jvb3Q7CiAJQWNsUmVzdWx0CWFjbHJlc3VsdDsKLQlMaXN0 CSAgICpyZWxhdGlvbnMgPSBOSUw7Ci0JTGlzdAkgICAqc2NoZW1haWRsaXN0ID0gTklMOwor CUxpc3QJICAgKnRhYmxlcyA9IE5JTDsKKwlMaXN0CSAgICpzZXF1ZW5jZXMgPSBOSUw7CisJ TGlzdAkgICAqdGFibGVzX3NjaGVtYWlkbGlzdCA9IE5JTDsKKwlMaXN0CSAgICpzZXF1ZW5j ZXNfc2NoZW1haWRsaXN0ID0gTklMOworCisJYm9vbAkJZm9yX2FsbF90YWJsZXMgPSBmYWxz ZTsKKwlib29sCQlmb3JfYWxsX3NlcXVlbmNlcyA9IGZhbHNlOworCisJLyoKKwkgKiBUcmFu c2xhdGUgdGhlIGxpc3Qgb2Ygb2JqZWN0IHR5cGVzIChyZXByZXNlbnRlZCBieSBzdHJpbmdz KSB0byBib29sCisJICogZmxhZ3MuCisJICovCisJZm9yZWFjaChsYywgc3RtdC0+Zm9yX2Fs bF9vYmplY3RzKQorCXsKKwkJY2hhcgkgICAqdmFsID0gc3RyVmFsKGxmaXJzdChsYykpOwor CisJCWlmIChzdHJjbXAodmFsLCAidGFibGVzIikgPT0gMCkKKwkJCWZvcl9hbGxfdGFibGVz ID0gdHJ1ZTsKKwkJZWxzZSBpZiAoc3RyY21wKHZhbCwgInNlcXVlbmNlcyIpID09IDApCisJ CQlmb3JfYWxsX3NlcXVlbmNlcyA9IHRydWU7CisJfQogCiAJLyogbXVzdCBoYXZlIENSRUFU RSBwcml2aWxlZ2Ugb24gZGF0YWJhc2UgKi8KIAlhY2xyZXN1bHQgPSBvYmplY3RfYWNsY2hl Y2soRGF0YWJhc2VSZWxhdGlvbklkLCBNeURhdGFiYXNlSWQsIEdldFVzZXJJZCgpLCBBQ0xf Q1JFQVRFKTsKQEAgLTc1NSwxMSArODA1LDE3IEBAIENyZWF0ZVB1YmxpY2F0aW9uKFBhcnNl U3RhdGUgKnBzdGF0ZSwgQ3JlYXRlUHVibGljYXRpb25TdG10ICpzdG10KQogCQkJCQkgICBn ZXRfZGF0YWJhc2VfbmFtZShNeURhdGFiYXNlSWQpKTsKIAogCS8qIEZPUiBBTEwgVEFCTEVT IHJlcXVpcmVzIHN1cGVydXNlciAqLwotCWlmIChzdG10LT5mb3JfYWxsX3RhYmxlcyAmJiAh c3VwZXJ1c2VyKCkpCisJaWYgKGZvcl9hbGxfdGFibGVzICYmICFzdXBlcnVzZXIoKSkKIAkJ ZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX0lOU1VGRklDSUVOVF9QUklW SUxFR0UpLAogCQkJCSBlcnJtc2coIm11c3QgYmUgc3VwZXJ1c2VyIHRvIGNyZWF0ZSBGT1Ig QUxMIFRBQkxFUyBwdWJsaWNhdGlvbiIpKSk7CiAKKwkvKiBGT1IgQUxMIFNFUVVFTkNFUyBy ZXF1aXJlcyBzdXBlcnVzZXIgKi8KKwlpZiAoZm9yX2FsbF9zZXF1ZW5jZXMgJiYgIXN1cGVy dXNlcigpKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfSU5TVUZG SUNJRU5UX1BSSVZJTEVHRSksCisJCQkJIGVycm1zZygibXVzdCBiZSBzdXBlcnVzZXIgdG8g Y3JlYXRlIEZPUiBBTEwgU0VRVUVOQ0VTIHB1YmxpY2F0aW9uIikpKTsKKwogCXJlbCA9IHRh YmxlX29wZW4oUHVibGljYXRpb25SZWxhdGlvbklkLCBSb3dFeGNsdXNpdmVMb2NrKTsKIAog CS8qIENoZWNrIGlmIG5hbWUgaXMgdXNlZCAqLwpAQCAtNzg5LDcgKzg0NSw5IEBAIENyZWF0 ZVB1YmxpY2F0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlUHVibGljYXRpb25TdG10 ICpzdG10KQogCQkJCQkJCQlBbnVtX3BnX3B1YmxpY2F0aW9uX29pZCk7CiAJdmFsdWVzW0Fu dW1fcGdfcHVibGljYXRpb25fb2lkIC0gMV0gPSBPYmplY3RJZEdldERhdHVtKHB1Ym9pZCk7 CiAJdmFsdWVzW0FudW1fcGdfcHVibGljYXRpb25fcHViYWxsdGFibGVzIC0gMV0gPQotCQlC b29sR2V0RGF0dW0oc3RtdC0+Zm9yX2FsbF90YWJsZXMpOworCQlCb29sR2V0RGF0dW0oZm9y X2FsbF90YWJsZXMpOworCXZhbHVlc1tBbnVtX3BnX3B1YmxpY2F0aW9uX3B1YmFsbHNlcXVl bmNlcyAtIDFdID0KKwkJQm9vbEdldERhdHVtKGZvcl9hbGxfc2VxdWVuY2VzKTsKIAl2YWx1 ZXNbQW51bV9wZ19wdWJsaWNhdGlvbl9wdWJpbnNlcnQgLSAxXSA9CiAJCUJvb2xHZXREYXR1 bShwdWJhY3Rpb25zLnB1Ymluc2VydCk7CiAJdmFsdWVzW0FudW1fcGdfcHVibGljYXRpb25f cHVidXBkYXRlIC0gMV0gPQpAQCAtNzk4LDYgKzg1Niw4IEBAIENyZWF0ZVB1YmxpY2F0aW9u KFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlUHVibGljYXRpb25TdG10ICpzdG10KQogCQlC b29sR2V0RGF0dW0ocHViYWN0aW9ucy5wdWJkZWxldGUpOwogCXZhbHVlc1tBbnVtX3BnX3B1 YmxpY2F0aW9uX3B1YnRydW5jYXRlIC0gMV0gPQogCQlCb29sR2V0RGF0dW0ocHViYWN0aW9u cy5wdWJ0cnVuY2F0ZSk7CisJdmFsdWVzW0FudW1fcGdfcHVibGljYXRpb25fcHVic2VxdWVu Y2UgLSAxXSA9CisJCUJvb2xHZXREYXR1bShwdWJhY3Rpb25zLnB1YnNlcXVlbmNlKTsKIAl2 YWx1ZXNbQW51bV9wZ19wdWJsaWNhdGlvbl9wdWJ2aWFyb290IC0gMV0gPQogCQlCb29sR2V0 RGF0dW0ocHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QpOwogCkBAIC04MTUsNDYgKzg3NSw4 OCBAQCBDcmVhdGVQdWJsaWNhdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVB1Ymxp Y2F0aW9uU3RtdCAqc3RtdCkKIAlDb21tYW5kQ291bnRlckluY3JlbWVudCgpOwogCiAJLyog QXNzb2NpYXRlIG9iamVjdHMgd2l0aCB0aGUgcHVibGljYXRpb24uICovCi0JaWYgKHN0bXQt PmZvcl9hbGxfdGFibGVzKQorCWlmIChmb3JfYWxsX3RhYmxlcyB8fCBmb3JfYWxsX3NlcXVl bmNlcykKIAl7CiAJCS8qIEludmFsaWRhdGUgcmVsY2FjaGUgc28gdGhhdCBwdWJsaWNhdGlv biBpbmZvIGlzIHJlYnVpbHQuICovCiAJCUNhY2hlSW52YWxpZGF0ZVJlbGNhY2hlQWxsKCk7 CiAJfQotCWVsc2UKKworCS8qCisJICogSWYgdGhlIHB1YmxpY2F0aW9uIG1pZ2h0IGhhdmUg ZWl0aGVyIHRhYmxlcyBvciBzZXF1ZW5jZXMgKGRpcmVjdGx5IG9yCisJICogdGhyb3VnaCBh IHNjaGVtYSksIHByb2Nlc3MgdGhhdC4KKwkgKi8KKwlpZiAoIWZvcl9hbGxfdGFibGVzIHx8 ICFmb3JfYWxsX3NlcXVlbmNlcykKIAl7Ci0JCU9iamVjdHNJblB1YmxpY2F0aW9uVG9PaWRz KHN0bXQtPnB1Ym9iamVjdHMsIHBzdGF0ZSwgJnJlbGF0aW9ucywKLQkJCQkJCQkJICAgJnNj aGVtYWlkbGlzdCk7CisJCU9iamVjdHNJblB1YmxpY2F0aW9uVG9PaWRzKHN0bXQtPnB1Ym9i amVjdHMsIHBzdGF0ZSwKKwkJCQkJCQkJICAgJnRhYmxlcywgJnNlcXVlbmNlcywKKwkJCQkJ CQkJICAgJnRhYmxlc19zY2hlbWFpZGxpc3QsCisJCQkJCQkJCSAgICZzZXF1ZW5jZXNfc2No ZW1haWRsaXN0KTsKIAogCQkvKiBGT1IgVEFCTEVTIElOIFNDSEVNQSByZXF1aXJlcyBzdXBl cnVzZXIgKi8KLQkJaWYgKHNjaGVtYWlkbGlzdCAhPSBOSUwgJiYgIXN1cGVydXNlcigpKQor CQlpZiAodGFibGVzX3NjaGVtYWlkbGlzdCAhPSBOSUwgJiYgIXN1cGVydXNlcigpKQogCQkJ ZXJlcG9ydChFUlJPUiwKIAkJCQkJZXJyY29kZShFUlJDT0RFX0lOU1VGRklDSUVOVF9QUklW SUxFR0UpLAogCQkJCQllcnJtc2coIm11c3QgYmUgc3VwZXJ1c2VyIHRvIGNyZWF0ZSBGT1Ig VEFCTEVTIElOIFNDSEVNQSBwdWJsaWNhdGlvbiIpKTsKIAotCQlpZiAocmVsYXRpb25zICE9 IE5JTCkKKwkJLyogRk9SIFNFUVVFTkNFUyBJTiBTQ0hFTUEgcmVxdWlyZXMgc3VwZXJ1c2Vy ICovCisJCWlmIChzZXF1ZW5jZXNfc2NoZW1haWRsaXN0ICE9IE5JTCAmJiAhc3VwZXJ1c2Vy KCkpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQllcnJjb2RlKEVSUkNPREVfSU5TVUZGSUNJ RU5UX1BSSVZJTEVHRSksCisJCQkJCWVycm1zZygibXVzdCBiZSBzdXBlcnVzZXIgdG8gY3Jl YXRlIEZPUiBBTEwgU0VRVUVOQ0VTIElOIFNDSEVNQSBwdWJsaWNhdGlvbiIpKTsKKworCQkv KiB0YWJsZXMgYWRkZWQgZGlyZWN0bHkgKi8KKwkJaWYgKHRhYmxlcyAhPSBOSUwpCiAJCXsK IAkJCUxpc3QJICAgKnJlbHM7CiAKLQkJCXJlbHMgPSBPcGVuVGFibGVMaXN0KHJlbGF0aW9u cyk7CisJCQlyZWxzID0gT3BlblJlbGF0aW9uTGlzdCh0YWJsZXMsIFBVQl9PQkpUWVBFX1RB QkxFKTsKKwogCQkJVHJhbnNmb3JtUHViV2hlcmVDbGF1c2VzKHJlbHMsIHBzdGF0ZS0+cF9z b3VyY2V0ZXh0LAogCQkJCQkJCQkJIHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290KTsKIAog CQkJQ2hlY2tQdWJSZWxhdGlvbkNvbHVtbkxpc3Qoc3RtdC0+cHVibmFtZSwgcmVscywKLQkJ CQkJCQkJCSAgIHNjaGVtYWlkbGlzdCAhPSBOSUwsCisJCQkJCQkJCQkgICB0YWJsZXNfc2No ZW1haWRsaXN0ICE9IE5JTCwKIAkJCQkJCQkJCSAgIHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9y b290KTsKIAotCQkJUHVibGljYXRpb25BZGRUYWJsZXMocHVib2lkLCByZWxzLCB0cnVlLCBO VUxMKTsKLQkJCUNsb3NlVGFibGVMaXN0KHJlbHMpOworCQkJUHVibGljYXRpb25BZGRSZWxh dGlvbnMocHVib2lkLCByZWxzLCB0cnVlLCBOVUxMKTsKKwkJCUNsb3NlUmVsYXRpb25MaXN0 KHJlbHMpOworCQl9CisKKwkJLyogc2VxdWVuY2VzIGFkZGVkIGRpcmVjdGx5ICovCisJCWlm IChzZXF1ZW5jZXMgIT0gTklMKQorCQl7CisJCQlMaXN0CSAgICpyZWxzOworCisJCQlyZWxz ID0gT3BlblJlbGF0aW9uTGlzdChzZXF1ZW5jZXMsIFBVQl9PQkpUWVBFX1NFUVVFTkNFKTsK KworCQkJUHVibGljYXRpb25BZGRSZWxhdGlvbnMocHVib2lkLCByZWxzLCB0cnVlLCBOVUxM KTsKKwkJCUNsb3NlUmVsYXRpb25MaXN0KHJlbHMpOwogCQl9CiAKLQkJaWYgKHNjaGVtYWlk bGlzdCAhPSBOSUwpCisJCS8qIHRhYmxlcyBhZGRlZCB0aHJvdWdoIGEgc2NoZW1hICovCisJ CWlmICh0YWJsZXNfc2NoZW1haWRsaXN0ICE9IE5JTCkKIAkJewogCQkJLyoKIAkJCSAqIFNj aGVtYSBsb2NrIGlzIGhlbGQgdW50aWwgdGhlIHB1YmxpY2F0aW9uIGlzIGNyZWF0ZWQgdG8g cHJldmVudAogCQkJICogY29uY3VycmVudCBzY2hlbWEgZGVsZXRpb24uCiAJCQkgKi8KLQkJ CUxvY2tTY2hlbWFMaXN0KHNjaGVtYWlkbGlzdCk7Ci0JCQlQdWJsaWNhdGlvbkFkZFNjaGVt YXMocHVib2lkLCBzY2hlbWFpZGxpc3QsIHRydWUsIE5VTEwpOworCQkJTG9ja1NjaGVtYUxp c3QodGFibGVzX3NjaGVtYWlkbGlzdCk7CisJCQlQdWJsaWNhdGlvbkFkZFNjaGVtYXMocHVi b2lkLAorCQkJCQkJCQkgIHRhYmxlc19zY2hlbWFpZGxpc3QsIFBVQl9PQkpUWVBFX1RBQkxF LAorCQkJCQkJCQkgIHRydWUsIE5VTEwpOworCQl9CisKKwkJLyogc2VxdWVuY2VzIGFkZGVk IHRocm91Z2ggYSBzY2hlbWEgKi8KKwkJaWYgKHNlcXVlbmNlc19zY2hlbWFpZGxpc3QgIT0g TklMKQorCQl7CisJCQkvKgorCQkJICogU2NoZW1hIGxvY2sgaXMgaGVsZCB1bnRpbCB0aGUg cHVibGljYXRpb24gaXMgY3JlYXRlZCB0byBwcmV2ZW50CisJCQkgKiBjb25jdXJyZW50IHNj aGVtYSBkZWxldGlvbi4KKwkJCSAqLworCQkJTG9ja1NjaGVtYUxpc3Qoc2VxdWVuY2VzX3Nj aGVtYWlkbGlzdCk7CisJCQlQdWJsaWNhdGlvbkFkZFNjaGVtYXMocHVib2lkLAorCQkJCQkJ CQkgIHNlcXVlbmNlc19zY2hlbWFpZGxpc3QsIFBVQl9PQkpUWVBFX1NFUVVFTkNFLAorCQkJ CQkJCQkgIHRydWUsIE5VTEwpOwogCQl9CiAJfQogCkBAIC05MTcsNiArMTAxOSw3IEBAIEFs dGVyUHVibGljYXRpb25PcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQWx0ZXJQdWJsaWNh dGlvblN0bXQgKnN0bXQsCiAJCQkJCQkgICBBY2Nlc3NTaGFyZUxvY2spOwogCiAJCXJvb3Rf cmVsaWRzID0gR2V0UHVibGljYXRpb25SZWxhdGlvbnMocHViZm9ybS0+b2lkLAorCQkJCQkJ CQkJCQkgIFBVQl9PQkpUWVBFX1RBQkxFLAogCQkJCQkJCQkJCQkgIFBVQkxJQ0FUSU9OX1BB UlRfUk9PVCk7CiAKIAkJZm9yZWFjaChsYywgcm9vdF9yZWxpZHMpCkBAIC05OTYsNiArMTA5 OSw5IEBAIEFsdGVyUHVibGljYXRpb25PcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQWx0 ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsCiAKIAkJdmFsdWVzW0FudW1fcGdfcHVibGljYXRp b25fcHVidHJ1bmNhdGUgLSAxXSA9IEJvb2xHZXREYXR1bShwdWJhY3Rpb25zLnB1YnRydW5j YXRlKTsKIAkJcmVwbGFjZXNbQW51bV9wZ19wdWJsaWNhdGlvbl9wdWJ0cnVuY2F0ZSAtIDFd ID0gdHJ1ZTsKKworCQl2YWx1ZXNbQW51bV9wZ19wdWJsaWNhdGlvbl9wdWJzZXF1ZW5jZSAt IDFdID0gQm9vbEdldERhdHVtKHB1YmFjdGlvbnMucHVic2VxdWVuY2UpOworCQlyZXBsYWNl c1tBbnVtX3BnX3B1YmxpY2F0aW9uX3B1YnNlcXVlbmNlIC0gMV0gPSB0cnVlOwogCX0KIAog CWlmIChwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdF9naXZlbikKQEAgLTEwMTUsNyArMTEy MSw3IEBAIEFsdGVyUHVibGljYXRpb25PcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQWx0 ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsCiAJcHViZm9ybSA9IChGb3JtX3BnX3B1YmxpY2F0 aW9uKSBHRVRTVFJVQ1QodHVwKTsKIAogCS8qIEludmFsaWRhdGUgdGhlIHJlbGNhY2hlLiAq LwotCWlmIChwdWJmb3JtLT5wdWJhbGx0YWJsZXMpCisJaWYgKHB1YmZvcm0tPnB1YmFsbHRh YmxlcyB8fCBwdWJmb3JtLT5wdWJhbGxzZXF1ZW5jZXMpCiAJewogCQlDYWNoZUludmFsaWRh dGVSZWxjYWNoZUFsbCgpOwogCX0KQEAgLTEwMzEsNiArMTEzNyw3IEBAIEFsdGVyUHVibGlj YXRpb25PcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQWx0ZXJQdWJsaWNhdGlvblN0bXQg KnN0bXQsCiAJCSAqLwogCQlpZiAocm9vdF9yZWxpZHMgPT0gTklMKQogCQkJcmVsaWRzID0g R2V0UHVibGljYXRpb25SZWxhdGlvbnMocHViZm9ybS0+b2lkLAorCQkJCQkJCQkJCQkgUFVC X09CSlRZUEVfVEFCTEUsCiAJCQkJCQkJCQkJCSBQVUJMSUNBVElPTl9QQVJUX0FMTCk7CiAJ CWVsc2UKIAkJewpAQCAtMTA0NCw3ICsxMTUxLDIwIEBAIEFsdGVyUHVibGljYXRpb25PcHRp b25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsCiAJ CQkJCQkJCQkJCQkJCWxmaXJzdF9vaWQobGMpKTsKIAkJfQogCisJCS8qIHRhYmxlcyAqLwog CQlzY2hlbWFyZWxpZHMgPSBHZXRBbGxTY2hlbWFQdWJsaWNhdGlvblJlbGF0aW9ucyhwdWJm b3JtLT5vaWQsCisJCQkJCQkJCQkJCQkJCVBVQl9PQkpUWVBFX1RBQkxFLAorCQkJCQkJCQkJ CQkJCQlQVUJMSUNBVElPTl9QQVJUX0FMTCk7CisJCXJlbGlkcyA9IGxpc3RfY29uY2F0X3Vu aXF1ZV9vaWQocmVsaWRzLCBzY2hlbWFyZWxpZHMpOworCisJCS8qIHNlcXVlbmNlcyAqLwor CQlyZWxpZHMgPSBsaXN0X2NvbmNhdF91bmlxdWVfb2lkKHJlbGlkcywKKwkJCQkJCQkJCQlH ZXRQdWJsaWNhdGlvblJlbGF0aW9ucyhwdWJmb3JtLT5vaWQsCisJCQkJCQkJCQkJCQkJCQkJ UFVCX09CSlRZUEVfU0VRVUVOQ0UsCisJCQkJCQkJCQkJCQkJCQkJUFVCTElDQVRJT05fUEFS VF9BTEwpKTsKKworCQlzY2hlbWFyZWxpZHMgPSBHZXRBbGxTY2hlbWFQdWJsaWNhdGlvblJl bGF0aW9ucyhwdWJmb3JtLT5vaWQsCisJCQkJCQkJCQkJCQkJCVBVQl9PQkpUWVBFX1NFUVVF TkNFLAogCQkJCQkJCQkJCQkJCQlQVUJMSUNBVElPTl9QQVJUX0FMTCk7CiAJCXJlbGlkcyA9 IGxpc3RfY29uY2F0X3VuaXF1ZV9vaWQocmVsaWRzLCBzY2hlbWFyZWxpZHMpOwogCkBAIC0x MDk5LDcgKzEyMTksNyBAQCBBbHRlclB1YmxpY2F0aW9uVGFibGVzKEFsdGVyUHVibGljYXRp b25TdG10ICpzdG10LCBIZWFwVHVwbGUgdHVwLAogCWlmICghdGFibGVzICYmIHN0bXQtPmFj dGlvbiAhPSBBUF9TZXRPYmplY3RzKQogCQlyZXR1cm47CiAKLQlyZWxzID0gT3BlblRhYmxl TGlzdCh0YWJsZXMpOworCXJlbHMgPSBPcGVuUmVsYXRpb25MaXN0KHRhYmxlcywgUFVCX09C SlRZUEVfVEFCTEUpOwogCiAJaWYgKHN0bXQtPmFjdGlvbiA9PSBBUF9BZGRPYmplY3RzKQog CXsKQEAgLTExMTAsMTMgKzEyMzAsMTQgQEAgQWx0ZXJQdWJsaWNhdGlvblRhYmxlcyhBbHRl clB1YmxpY2F0aW9uU3RtdCAqc3RtdCwgSGVhcFR1cGxlIHR1cCwKIAkJQ2hlY2tQdWJSZWxh dGlvbkNvbHVtbkxpc3Qoc3RtdC0+cHVibmFtZSwgcmVscywgcHVibGlzaF9zY2hlbWEsCiAJ CQkJCQkJCSAgIHB1YmZvcm0tPnB1YnZpYXJvb3QpOwogCi0JCVB1YmxpY2F0aW9uQWRkVGFi bGVzKHB1YmlkLCByZWxzLCBmYWxzZSwgc3RtdCk7CisJCVB1YmxpY2F0aW9uQWRkUmVsYXRp b25zKHB1YmlkLCByZWxzLCBmYWxzZSwgc3RtdCk7CiAJfQogCWVsc2UgaWYgKHN0bXQtPmFj dGlvbiA9PSBBUF9Ecm9wT2JqZWN0cykKLQkJUHVibGljYXRpb25Ecm9wVGFibGVzKHB1Ymlk LCByZWxzLCBmYWxzZSk7CisJCVB1YmxpY2F0aW9uRHJvcFJlbGF0aW9ucyhwdWJpZCwgcmVs cywgZmFsc2UpOwogCWVsc2UJCQkJCQkvKiBBUF9TZXRPYmplY3RzICovCiAJewogCQlMaXN0 CSAgICpvbGRyZWxpZHMgPSBHZXRQdWJsaWNhdGlvblJlbGF0aW9ucyhwdWJpZCwKKwkJCQkJ CQkJCQkJCQkJUFVCX09CSlRZUEVfVEFCTEUsCiAJCQkJCQkJCQkJCQkJCVBVQkxJQ0FUSU9O X1BBUlRfUk9PVCk7CiAJCUxpc3QJICAgKmRlbHJlbHMgPSBOSUw7CiAJCUxpc3RDZWxsICAg Km9sZGxjOwpAQCAtMTIzMywxOCArMTM1NCwxOCBAQCBBbHRlclB1YmxpY2F0aW9uVGFibGVz KEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10LCBIZWFwVHVwbGUgdHVwLAogCQl9CiAKIAkJ LyogQW5kIGRyb3AgdGhlbS4gKi8KLQkJUHVibGljYXRpb25Ecm9wVGFibGVzKHB1YmlkLCBk ZWxyZWxzLCB0cnVlKTsKKwkJUHVibGljYXRpb25Ecm9wUmVsYXRpb25zKHB1YmlkLCBkZWxy ZWxzLCB0cnVlKTsKIAogCQkvKgogCQkgKiBEb24ndCBib3RoZXIgY2FsY3VsYXRpbmcgdGhl IGRpZmZlcmVuY2UgZm9yIGFkZGluZywgd2UnbGwgY2F0Y2ggYW5kCiAJCSAqIHNraXAgZXhp c3Rpbmcgb25lcyB3aGVuIGRvaW5nIGNhdGFsb2cgdXBkYXRlLgogCQkgKi8KLQkJUHVibGlj YXRpb25BZGRUYWJsZXMocHViaWQsIHJlbHMsIHRydWUsIHN0bXQpOworCQlQdWJsaWNhdGlv bkFkZFJlbGF0aW9ucyhwdWJpZCwgcmVscywgdHJ1ZSwgc3RtdCk7CiAKLQkJQ2xvc2VUYWJs ZUxpc3QoZGVscmVscyk7CisJCUNsb3NlUmVsYXRpb25MaXN0KGRlbHJlbHMpOwogCX0KIAot CUNsb3NlVGFibGVMaXN0KHJlbHMpOworCUNsb3NlUmVsYXRpb25MaXN0KHJlbHMpOwogfQog CiAvKgpAQCAtMTI1NCw3ICsxMzc1LDggQEAgQWx0ZXJQdWJsaWNhdGlvblRhYmxlcyhBbHRl clB1YmxpY2F0aW9uU3RtdCAqc3RtdCwgSGVhcFR1cGxlIHR1cCwKICAqLwogc3RhdGljIHZv aWQKIEFsdGVyUHVibGljYXRpb25TY2hlbWFzKEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10 LAotCQkJCQkJSGVhcFR1cGxlIHR1cCwgTGlzdCAqc2NoZW1haWRsaXN0KQorCQkJCQkJSGVh cFR1cGxlIHR1cCwgTGlzdCAqc2NoZW1haWRsaXN0LAorCQkJCQkJY2hhciBvYmplY3RUeXBl KQogewogCUZvcm1fcGdfcHVibGljYXRpb24gcHViZm9ybSA9IChGb3JtX3BnX3B1YmxpY2F0 aW9uKSBHRVRTVFJVQ1QodHVwKTsKIApAQCAtMTI3Niw3ICsxMzk4LDcgQEAgQWx0ZXJQdWJs aWNhdGlvblNjaGVtYXMoQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsCiAJCUxpc3RDZWxs ICAgKmxjOwogCQlMaXN0CSAgICpyZWxvaWRzOwogCi0JCXJlbG9pZHMgPSBHZXRQdWJsaWNh dGlvblJlbGF0aW9ucyhwdWJmb3JtLT5vaWQsIFBVQkxJQ0FUSU9OX1BBUlRfUk9PVCk7CisJ CXJlbG9pZHMgPSBHZXRQdWJsaWNhdGlvblJlbGF0aW9ucyhwdWJmb3JtLT5vaWQsIG9iamVj dFR5cGUsIFBVQkxJQ0FUSU9OX1BBUlRfUk9PVCk7CiAKIAkJZm9yZWFjaChsYywgcmVsb2lk cykKIAkJewpAQCAtMTMwMywxMyArMTQyNSwxMyBAQCBBbHRlclB1YmxpY2F0aW9uU2NoZW1h cyhBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCwKIAkJCVJlbGVhc2VTeXNDYWNoZShjb2x0 dXBsZSk7CiAJCX0KIAotCQlQdWJsaWNhdGlvbkFkZFNjaGVtYXMocHViZm9ybS0+b2lkLCBz Y2hlbWFpZGxpc3QsIGZhbHNlLCBzdG10KTsKKwkJUHVibGljYXRpb25BZGRTY2hlbWFzKHB1 YmZvcm0tPm9pZCwgc2NoZW1haWRsaXN0LCBvYmplY3RUeXBlLCBmYWxzZSwgc3RtdCk7CiAJ fQogCWVsc2UgaWYgKHN0bXQtPmFjdGlvbiA9PSBBUF9Ecm9wT2JqZWN0cykKLQkJUHVibGlj YXRpb25Ecm9wU2NoZW1hcyhwdWJmb3JtLT5vaWQsIHNjaGVtYWlkbGlzdCwgZmFsc2UpOwor CQlQdWJsaWNhdGlvbkRyb3BTY2hlbWFzKHB1YmZvcm0tPm9pZCwgc2NoZW1haWRsaXN0LCBv YmplY3RUeXBlLCBmYWxzZSk7CiAJZWxzZQkJCQkJCS8qIEFQX1NldE9iamVjdHMgKi8KIAl7 Ci0JCUxpc3QJICAgKm9sZHNjaGVtYWlkcyA9IEdldFB1YmxpY2F0aW9uU2NoZW1hcyhwdWJm b3JtLT5vaWQpOworCQlMaXN0CSAgICpvbGRzY2hlbWFpZHMgPSBHZXRQdWJsaWNhdGlvblNj aGVtYXMocHViZm9ybS0+b2lkLCBvYmplY3RUeXBlKTsKIAkJTGlzdAkgICAqZGVsc2NoZW1h cyA9IE5JTDsKIAogCQkvKiBJZGVudGlmeSB3aGljaCBzY2hlbWFzIHNob3VsZCBiZSBkcm9w cGVkICovCkBAIC0xMzIyLDEzICsxNDQ0LDEzIEBAIEFsdGVyUHVibGljYXRpb25TY2hlbWFz KEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10LAogCQlMb2NrU2NoZW1hTGlzdChkZWxzY2hl bWFzKTsKIAogCQkvKiBBbmQgZHJvcCB0aGVtICovCi0JCVB1YmxpY2F0aW9uRHJvcFNjaGVt YXMocHViZm9ybS0+b2lkLCBkZWxzY2hlbWFzLCB0cnVlKTsKKwkJUHVibGljYXRpb25Ecm9w U2NoZW1hcyhwdWJmb3JtLT5vaWQsIGRlbHNjaGVtYXMsIG9iamVjdFR5cGUsIHRydWUpOwog CiAJCS8qCiAJCSAqIERvbid0IGJvdGhlciBjYWxjdWxhdGluZyB0aGUgZGlmZmVyZW5jZSBm b3IgYWRkaW5nLCB3ZSdsbCBjYXRjaCBhbmQKIAkJICogc2tpcCBleGlzdGluZyBvbmVzIHdo ZW4gZG9pbmcgY2F0YWxvZyB1cGRhdGUuCiAJCSAqLwotCQlQdWJsaWNhdGlvbkFkZFNjaGVt YXMocHViZm9ybS0+b2lkLCBzY2hlbWFpZGxpc3QsIHRydWUsIHN0bXQpOworCQlQdWJsaWNh dGlvbkFkZFNjaGVtYXMocHViZm9ybS0+b2lkLCBzY2hlbWFpZGxpc3QsIG9iamVjdFR5cGUs IHRydWUsIHN0bXQpOwogCX0KIH0KIApAQCAtMTMzOCwxMiArMTQ2MCwxMyBAQCBBbHRlclB1 YmxpY2F0aW9uU2NoZW1hcyhBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCwKICAqLwogc3Rh dGljIHZvaWQKIENoZWNrQWx0ZXJQdWJsaWNhdGlvbihBbHRlclB1YmxpY2F0aW9uU3RtdCAq c3RtdCwgSGVhcFR1cGxlIHR1cCwKLQkJCQkJICBMaXN0ICp0YWJsZXMsIExpc3QgKnNjaGVt YWlkbGlzdCkKKwkJCQkJICBMaXN0ICp0YWJsZXMsIExpc3QgKnRhYmxlc19zY2hlbWFpZGxp c3QsCisJCQkJCSAgTGlzdCAqc2VxdWVuY2VzLCBMaXN0ICpzZXF1ZW5jZXNfc2NoZW1haWRs aXN0KQogewogCUZvcm1fcGdfcHVibGljYXRpb24gcHViZm9ybSA9IChGb3JtX3BnX3B1Ymxp Y2F0aW9uKSBHRVRTVFJVQ1QodHVwKTsKIAogCWlmICgoc3RtdC0+YWN0aW9uID09IEFQX0Fk ZE9iamVjdHMgfHwgc3RtdC0+YWN0aW9uID09IEFQX1NldE9iamVjdHMpICYmCi0JCXNjaGVt YWlkbGlzdCAmJiAhc3VwZXJ1c2VyKCkpCisJCSh0YWJsZXNfc2NoZW1haWRsaXN0IHx8IHNl cXVlbmNlc19zY2hlbWFpZGxpc3QpICYmICFzdXBlcnVzZXIoKSkKIAkJZXJlcG9ydChFUlJP UiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX0lOU1VGRklDSUVOVF9QUklWSUxFR0UpLAogCQkJ CSBlcnJtc2coIm11c3QgYmUgc3VwZXJ1c2VyIHRvIGFkZCBvciBzZXQgc2NoZW1hcyIpKSk7 CkBAIC0xMzUyLDEzICsxNDc1LDI0IEBAIENoZWNrQWx0ZXJQdWJsaWNhdGlvbihBbHRlclB1 YmxpY2F0aW9uU3RtdCAqc3RtdCwgSGVhcFR1cGxlIHR1cCwKIAkgKiBDaGVjayB0aGF0IHVz ZXIgaXMgYWxsb3dlZCB0byBtYW5pcHVsYXRlIHRoZSBwdWJsaWNhdGlvbiB0YWJsZXMgaW4K IAkgKiBzY2hlbWEKIAkgKi8KLQlpZiAoc2NoZW1haWRsaXN0ICYmIHB1YmZvcm0tPnB1YmFs bHRhYmxlcykKKwlpZiAodGFibGVzX3NjaGVtYWlkbGlzdCAmJiBwdWJmb3JtLT5wdWJhbGx0 YWJsZXMpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1Rf Tk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCiAJCQkJIGVycm1zZygicHVibGljYXRpb24g XCIlc1wiIGlzIGRlZmluZWQgYXMgRk9SIEFMTCBUQUJMRVMiLAogCQkJCQkJTmFtZVN0cihw dWJmb3JtLT5wdWJuYW1lKSksCiAJCQkJIGVycmRldGFpbCgiU2NoZW1hcyBjYW5ub3QgYmUg YWRkZWQgdG8gb3IgZHJvcHBlZCBmcm9tIEZPUiBBTEwgVEFCTEVTIHB1YmxpY2F0aW9ucy4i KSkpOwogCisJLyoKKwkgKiBDaGVjayB0aGF0IHVzZXIgaXMgYWxsb3dlZCB0byBtYW5pcHVs YXRlIHRoZSBwdWJsaWNhdGlvbiBzZXF1ZW5jZXMgaW4KKwkgKiBzY2hlbWEKKwkgKi8KKwlp ZiAoc2VxdWVuY2VzX3NjaGVtYWlkbGlzdCAmJiBwdWJmb3JtLT5wdWJhbGxzZXF1ZW5jZXMp CisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lO X1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJIGVycm1zZygicHVibGljYXRpb24gXCIlc1wi IGlzIGRlZmluZWQgYXMgRk9SIEFMTCBTRVFVRU5DRVMiLAorCQkJCQkJTmFtZVN0cihwdWJm b3JtLT5wdWJuYW1lKSksCisJCQkJIGVycmRldGFpbCgiU2VxdWVuY2VzIGZyb20gc2NoZW1h IGNhbm5vdCBiZSBhZGRlZCB0bywgZHJvcHBlZCBmcm9tLCBvciBzZXQgb24gRk9SIEFMTCBT RVFVRU5DRVMgcHVibGljYXRpb25zLiIpKSk7CisKIAkvKiBDaGVjayB0aGF0IHVzZXIgaXMg YWxsb3dlZCB0byBtYW5pcHVsYXRlIHRoZSBwdWJsaWNhdGlvbiB0YWJsZXMuICovCiAJaWYg KHRhYmxlcyAmJiBwdWJmb3JtLT5wdWJhbGx0YWJsZXMpCiAJCWVyZXBvcnQoRVJST1IsCkBA IC0xMzY2LDYgKzE1MDAsMTA3IEBAIENoZWNrQWx0ZXJQdWJsaWNhdGlvbihBbHRlclB1Ymxp Y2F0aW9uU3RtdCAqc3RtdCwgSGVhcFR1cGxlIHR1cCwKIAkJCQkgZXJybXNnKCJwdWJsaWNh dGlvbiBcIiVzXCIgaXMgZGVmaW5lZCBhcyBGT1IgQUxMIFRBQkxFUyIsCiAJCQkJCQlOYW1l U3RyKHB1YmZvcm0tPnB1Ym5hbWUpKSwKIAkJCQkgZXJyZGV0YWlsKCJUYWJsZXMgY2Fubm90 IGJlIGFkZGVkIHRvIG9yIGRyb3BwZWQgZnJvbSBGT1IgQUxMIFRBQkxFUyBwdWJsaWNhdGlv bnMuIikpKTsKKworCS8qIENoZWNrIHRoYXQgdXNlciBpcyBhbGxvd2VkIHRvIG1hbmlwdWxh dGUgdGhlIHB1YmxpY2F0aW9uIHNlcXVlbmNlcy4gKi8KKwlpZiAoc2VxdWVuY2VzICYmIHB1 YmZvcm0tPnB1YmFsbHNlcXVlbmNlcykKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29k ZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkgZXJy bXNnKCJwdWJsaWNhdGlvbiBcIiVzXCIgaXMgZGVmaW5lZCBhcyBGT1IgQUxMIFNFUVVFTkNF UyIsCisJCQkJCQlOYW1lU3RyKHB1YmZvcm0tPnB1Ym5hbWUpKSwKKwkJCQkgZXJyZGV0YWls KCJTZXF1ZW5jZXMgY2Fubm90IGJlIGFkZGVkIHRvIG9yIGRyb3BwZWQgZnJvbSBGT1IgQUxM IFNFUVVFTkNFUyBwdWJsaWNhdGlvbnMuIikpKTsKK30KKworLyoKKyAqIEFkZCBvciByZW1v dmUgdGFibGUgdG8vZnJvbSBwdWJsaWNhdGlvbi4KKyAqLworc3RhdGljIHZvaWQKK0FsdGVy UHVibGljYXRpb25TZXF1ZW5jZXMoQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsIEhlYXBU dXBsZSB0dXAsCisJCQkJCQkgIExpc3QgKnNlcXVlbmNlcykKK3sKKwlMaXN0CSAgICpyZWxz ID0gTklMOworCUZvcm1fcGdfcHVibGljYXRpb24gcHViZm9ybSA9IChGb3JtX3BnX3B1Ymxp Y2F0aW9uKSBHRVRTVFJVQ1QodHVwKTsKKwlPaWQJCQlwdWJpZCA9IHB1YmZvcm0tPm9pZDsK KworCS8qCisJICogTm90aGluZyB0byBkbyBpZiBubyBvYmplY3RzLCBleGNlcHQgaW4gU0VU OiBmb3IgdGhhdCBpdCBpcyBxdWl0ZQorCSAqIHBvc3NpYmxlIHRoYXQgdXNlciBoYXMgbm90 IHNwZWNpZmllZCBhbnkgdGFibGVzIGluIHdoaWNoIGNhc2Ugd2UgbmVlZAorCSAqIHRvIHJl bW92ZSBhbGwgdGhlIGV4aXN0aW5nIHRhYmxlcy4KKwkgKi8KKwlpZiAoIXNlcXVlbmNlcyAm JiBzdG10LT5hY3Rpb24gIT0gQVBfU2V0T2JqZWN0cykKKwkJcmV0dXJuOworCisJcmVscyA9 IE9wZW5SZWxhdGlvbkxpc3Qoc2VxdWVuY2VzLCBQVUJfT0JKVFlQRV9TRVFVRU5DRSk7CisK KwlpZiAoc3RtdC0+YWN0aW9uID09IEFQX0FkZE9iamVjdHMpCisJeworCQlQdWJsaWNhdGlv bkFkZFJlbGF0aW9ucyhwdWJpZCwgcmVscywgZmFsc2UsIHN0bXQpOworCX0KKwllbHNlIGlm IChzdG10LT5hY3Rpb24gPT0gQVBfRHJvcE9iamVjdHMpCisJCVB1YmxpY2F0aW9uRHJvcFJl bGF0aW9ucyhwdWJpZCwgcmVscywgZmFsc2UpOworCWVsc2UJCQkJCQkvKiBBUF9TZXRPYmpl Y3RzICovCisJeworCQlMaXN0CSAgICpvbGRyZWxpZHMgPSBHZXRQdWJsaWNhdGlvblJlbGF0 aW9ucyhwdWJpZCwKKwkJCQkJCQkJCQkJCQkJUFVCX09CSlRZUEVfU0VRVUVOQ0UsCisJCQkJ CQkJCQkJCQkJCVBVQkxJQ0FUSU9OX1BBUlRfUk9PVCk7CisJCUxpc3QJICAgKmRlbHJlbHMg PSBOSUw7CisJCUxpc3RDZWxsICAgKm9sZGxjOworCisJCS8qCisJCSAqIFRvIHJlY3JlYXRl IHRoZSByZWxhdGlvbiBsaXN0IGZvciB0aGUgcHVibGljYXRpb24sIGxvb2sgZm9yCisJCSAq IGV4aXN0aW5nIHJlbGF0aW9ucyB0aGF0IGRvIG5vdCBuZWVkIHRvIGJlIGRyb3BwZWQuCisJ CSAqLworCQlmb3JlYWNoKG9sZGxjLCBvbGRyZWxpZHMpCisJCXsKKwkJCU9pZAkJCW9sZHJl bGlkID0gbGZpcnN0X29pZChvbGRsYyk7CisJCQlMaXN0Q2VsbCAgICpuZXdsYzsKKwkJCVB1 YmxpY2F0aW9uUmVsSW5mbyAqb2xkcmVsOworCQkJYm9vbAkJZm91bmQgPSBmYWxzZTsKKwor CQkJZm9yZWFjaChuZXdsYywgcmVscykKKwkJCXsKKwkJCQlQdWJsaWNhdGlvblJlbEluZm8g Km5ld3B1YnJlbDsKKworCQkJCW5ld3B1YnJlbCA9IChQdWJsaWNhdGlvblJlbEluZm8gKikg bGZpcnN0KG5ld2xjKTsKKworCQkJCS8qCisJCQkJICogQ2hlY2sgaWYgYW55IG9mIHRoZSBu ZXcgc2V0IG9mIHJlbGF0aW9ucyBtYXRjaGVzIHdpdGggdGhlCisJCQkJICogZXhpc3Rpbmcg cmVsYXRpb25zIGluIHRoZSBwdWJsaWNhdGlvbi4KKwkJCQkgKi8KKwkJCQlpZiAoUmVsYXRp b25HZXRSZWxpZChuZXdwdWJyZWwtPnJlbGF0aW9uKSA9PSBvbGRyZWxpZCkKKwkJCQl7CisJ CQkJCWZvdW5kID0gdHJ1ZTsKKwkJCQkJYnJlYWs7CisJCQkJfQorCQkJfQorCisJCQkvKgor CQkJICogQWRkIHRoZSBub24tbWF0Y2hlZCByZWxhdGlvbnMgdG8gYSBsaXN0IHNvIHRoYXQg dGhleSBjYW4gYmUKKwkJCSAqIGRyb3BwZWQuCisJCQkgKi8KKwkJCWlmICghZm91bmQpCisJ CQl7CisJCQkJb2xkcmVsID0gcGFsbG9jKHNpemVvZihQdWJsaWNhdGlvblJlbEluZm8pKTsK KwkJCQlvbGRyZWwtPndoZXJlQ2xhdXNlID0gTlVMTDsKKwkJCQlvbGRyZWwtPmNvbHVtbnMg PSBOSUw7CisJCQkJb2xkcmVsLT5yZWxhdGlvbiA9IHRhYmxlX29wZW4ob2xkcmVsaWQsCisJ CQkJCQkJCQkJCSAgU2hhcmVVcGRhdGVFeGNsdXNpdmVMb2NrKTsKKwkJCQlkZWxyZWxzID0g bGFwcGVuZChkZWxyZWxzLCBvbGRyZWwpOworCQkJfQorCQl9CisKKwkJLyogQW5kIGRyb3Ag dGhlbS4gKi8KKwkJUHVibGljYXRpb25Ecm9wUmVsYXRpb25zKHB1YmlkLCBkZWxyZWxzLCB0 cnVlKTsKKworCQkvKgorCQkgKiBEb24ndCBib3RoZXIgY2FsY3VsYXRpbmcgdGhlIGRpZmZl cmVuY2UgZm9yIGFkZGluZywgd2UnbGwgY2F0Y2ggYW5kCisJCSAqIHNraXAgZXhpc3Rpbmcg b25lcyB3aGVuIGRvaW5nIGNhdGFsb2cgdXBkYXRlLgorCQkgKi8KKwkJUHVibGljYXRpb25B ZGRSZWxhdGlvbnMocHViaWQsIHJlbHMsIHRydWUsIHN0bXQpOworCisJCUNsb3NlUmVsYXRp b25MaXN0KGRlbHJlbHMpOworCX0KKworCUNsb3NlUmVsYXRpb25MaXN0KHJlbHMpOwogfQog CiAvKgpAQCAtMTQwMywxNCArMTYzOCwyMCBAQCBBbHRlclB1YmxpY2F0aW9uKFBhcnNlU3Rh dGUgKnBzdGF0ZSwgQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQpCiAJCUFsdGVyUHVibGlj YXRpb25PcHRpb25zKHBzdGF0ZSwgc3RtdCwgcmVsLCB0dXApOwogCWVsc2UKIAl7Ci0JCUxp c3QJICAgKnJlbGF0aW9ucyA9IE5JTDsKLQkJTGlzdAkgICAqc2NoZW1haWRsaXN0ID0gTklM OworCQlMaXN0CSAgICp0YWJsZXMgPSBOSUw7CisJCUxpc3QJICAgKnNlcXVlbmNlcyA9IE5J TDsKKwkJTGlzdAkgICAqdGFibGVzX3NjaGVtYWlkbGlzdCA9IE5JTDsKKwkJTGlzdAkgICAq c2VxdWVuY2VzX3NjaGVtYWlkbGlzdCA9IE5JTDsKIAkJT2lkCQkJcHViaWQgPSBwdWJmb3Jt LT5vaWQ7CiAKLQkJT2JqZWN0c0luUHVibGljYXRpb25Ub09pZHMoc3RtdC0+cHVib2JqZWN0 cywgcHN0YXRlLCAmcmVsYXRpb25zLAotCQkJCQkJCQkgICAmc2NoZW1haWRsaXN0KTsKKwkJ T2JqZWN0c0luUHVibGljYXRpb25Ub09pZHMoc3RtdC0+cHVib2JqZWN0cywgcHN0YXRlLAor CQkJCQkJCQkgICAmdGFibGVzLCAmc2VxdWVuY2VzLAorCQkJCQkJCQkgICAmdGFibGVzX3Nj aGVtYWlkbGlzdCwKKwkJCQkJCQkJICAgJnNlcXVlbmNlc19zY2hlbWFpZGxpc3QpOwogCi0J CUNoZWNrQWx0ZXJQdWJsaWNhdGlvbihzdG10LCB0dXAsIHJlbGF0aW9ucywgc2NoZW1haWRs aXN0KTsKKwkJQ2hlY2tBbHRlclB1YmxpY2F0aW9uKHN0bXQsIHR1cCwKKwkJCQkJCQkgIHRh YmxlcywgdGFibGVzX3NjaGVtYWlkbGlzdCwKKwkJCQkJCQkgIHNlcXVlbmNlcywgc2VxdWVu Y2VzX3NjaGVtYWlkbGlzdCk7CiAKIAkJaGVhcF9mcmVldHVwbGUodHVwKTsKIApAQCAtMTQz MSw5ICsxNjcyLDE2IEBAIEFsdGVyUHVibGljYXRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBB bHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCkKIAkJCQkJZXJybXNnKCJwdWJsaWNhdGlvbiBc IiVzXCIgZG9lcyBub3QgZXhpc3QiLAogCQkJCQkJICAgc3RtdC0+cHVibmFtZSkpOwogCi0J CUFsdGVyUHVibGljYXRpb25UYWJsZXMoc3RtdCwgdHVwLCByZWxhdGlvbnMsIHBzdGF0ZS0+ cF9zb3VyY2V0ZXh0LAotCQkJCQkJCSAgIHNjaGVtYWlkbGlzdCAhPSBOSUwpOwotCQlBbHRl clB1YmxpY2F0aW9uU2NoZW1hcyhzdG10LCB0dXAsIHNjaGVtYWlkbGlzdCk7CisJCUFsdGVy UHVibGljYXRpb25UYWJsZXMoc3RtdCwgdHVwLCB0YWJsZXMsIHBzdGF0ZS0+cF9zb3VyY2V0 ZXh0LAorCQkJCQkJCSAgIHRhYmxlc19zY2hlbWFpZGxpc3QgIT0gTklMKTsKKworCQlBbHRl clB1YmxpY2F0aW9uU2NoZW1hcyhzdG10LCB0dXAsIHRhYmxlc19zY2hlbWFpZGxpc3QsCisJ CQkJCQkJCVBVQl9PQkpUWVBFX1RBQkxFKTsKKworCQlBbHRlclB1YmxpY2F0aW9uU2VxdWVu Y2VzKHN0bXQsIHR1cCwgc2VxdWVuY2VzKTsKKworCQlBbHRlclB1YmxpY2F0aW9uU2NoZW1h cyhzdG10LCB0dXAsIHNlcXVlbmNlc19zY2hlbWFpZGxpc3QsCisJCQkJCQkJCVBVQl9PQkpU WVBFX1NFUVVFTkNFKTsKIAl9CiAKIAkvKiBDbGVhbnVwLiAqLwpAQCAtMTUwMSw3ICsxNzQ5 LDcgQEAgUmVtb3ZlUHVibGljYXRpb25CeUlkKE9pZCBwdWJpZCkKIAlwdWJmb3JtID0gKEZv cm1fcGdfcHVibGljYXRpb24pIEdFVFNUUlVDVCh0dXApOwogCiAJLyogSW52YWxpZGF0ZSBy ZWxjYWNoZSBzbyB0aGF0IHB1YmxpY2F0aW9uIGluZm8gaXMgcmVidWlsdC4gKi8KLQlpZiAo cHViZm9ybS0+cHViYWxsdGFibGVzKQorCWlmIChwdWJmb3JtLT5wdWJhbGx0YWJsZXMgfHwg cHViZm9ybS0+cHViYWxsc2VxdWVuY2VzKQogCQlDYWNoZUludmFsaWRhdGVSZWxjYWNoZUFs bCgpOwogCiAJQ2F0YWxvZ1R1cGxlRGVsZXRlKHJlbCwgJnR1cC0+dF9zZWxmKTsKQEAgLTE1 MzcsNiArMTc4NSw3IEBAIFJlbW92ZVB1YmxpY2F0aW9uU2NoZW1hQnlJZChPaWQgcHNvaWQp CiAJICogcGFydGl0aW9ucy4KIAkgKi8KIAlzY2hlbWFSZWxzID0gR2V0U2NoZW1hUHVibGlj YXRpb25SZWxhdGlvbnMocHVic2NoLT5wbm5zcGlkLAorCQkJCQkJCQkJCQkgICBwdWJzY2gt PnBudHlwZSwKIAkJCQkJCQkJCQkJICAgUFVCTElDQVRJT05fUEFSVF9BTEwpOwogCUludmFs aWRhdGVQdWJsaWNhdGlvblJlbHMoc2NoZW1hUmVscyk7CiAKQEAgLTE1NTMsMTAgKzE4MDIs MTAgQEAgUmVtb3ZlUHVibGljYXRpb25TY2hlbWFCeUlkKE9pZCBwc29pZCkKICAqIGFkZCB0 aGVtIHRvIGEgcHVibGljYXRpb24uCiAgKi8KIHN0YXRpYyBMaXN0ICoKLU9wZW5UYWJsZUxp c3QoTGlzdCAqdGFibGVzKQorT3BlblJlbGF0aW9uTGlzdChMaXN0ICpyZWxzLCBjaGFyIG9i amVjdFR5cGUpCiB7CiAJTGlzdAkgICAqcmVsaWRzID0gTklMOwotCUxpc3QJICAgKnJlbHMg PSBOSUw7CisJTGlzdAkgICAqcmVzdWx0ID0gTklMOwogCUxpc3RDZWxsICAgKmxjOwogCUxp c3QJICAgKnJlbGlkc193aXRoX3JmID0gTklMOwogCUxpc3QJICAgKnJlbGlkc193aXRoX2Nv bGxpc3QgPSBOSUw7CkBAIC0xNTY0LDE5ICsxODEzLDM1IEBAIE9wZW5UYWJsZUxpc3QoTGlz dCAqdGFibGVzKQogCS8qCiAJICogT3Blbiwgc2hhcmUtbG9jaywgYW5kIGNoZWNrIGFsbCB0 aGUgZXhwbGljaXRseS1zcGVjaWZpZWQgcmVsYXRpb25zCiAJICovCi0JZm9yZWFjaChsYywg dGFibGVzKQorCWZvcmVhY2gobGMsIHJlbHMpCiAJewogCQlQdWJsaWNhdGlvblRhYmxlICp0 ID0gbGZpcnN0X25vZGUoUHVibGljYXRpb25UYWJsZSwgbGMpOwogCQlib29sCQlyZWN1cnNl ID0gdC0+cmVsYXRpb24tPmluaDsKIAkJUmVsYXRpb24JcmVsOwogCQlPaWQJCQlteXJlbGlk OwogCQlQdWJsaWNhdGlvblJlbEluZm8gKnB1Yl9yZWw7CisJCWNoYXIJCW15cmVsa2luZDsK IAogCQkvKiBBbGxvdyBxdWVyeSBjYW5jZWwgaW4gY2FzZSB0aGlzIHRha2VzIGEgbG9uZyB0 aW1lICovCiAJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAKIAkJcmVsID0gdGFibGVfb3Bl bnJ2KHQtPnJlbGF0aW9uLCBTaGFyZVVwZGF0ZUV4Y2x1c2l2ZUxvY2spOwogCQlteXJlbGlk ID0gUmVsYXRpb25HZXRSZWxpZChyZWwpOworCQlteXJlbGtpbmQgPSBnZXRfcmVsX3JlbGtp bmQobXlyZWxpZCk7CisKKwkJLyoKKwkJICogTWFrZSBzdXJlIHRoZSByZWxraW5kIG1hdGNo ZXMgdGhlIGV4cGVjdGVkIG9iamVjdCB0eXBlLiBUaGlzIG1heQorCQkgKiBoYXBwZW4gZS5n LiB3aGVuIGFkZGluZyBhIHNlcXVlbmNlIHVzaW5nIEFERCBUQUJMRSBvciBhIHRhYmxlIHVz aW5nCisJCSAqIEFERCBTRVFVRU5DRSkuCisJCSAqCisJCSAqIFhYWCBXZSBsZXQgdGhyb3Vn aCB1bnN1cHBvcnRlZCBvYmplY3QgdHlwZXMgKHZpZXdzIGV0Yy4pLiBUaG9zZQorCQkgKiB3 aWxsIGJlIGNhdWdodCBsYXRlciBpbiBjaGVja19wdWJsaWNhdGlvbl9hZGRfcmVsYXRpb24u CisJCSAqLworCQlpZiAocHViX2dldF9vYmplY3RfdHlwZV9mb3JfcmVsa2luZChteXJlbGtp bmQpICE9IFBVQl9PQkpUWVBFX1VOU1VQUE9SVEVEICYmCisJCQlwdWJfZ2V0X29iamVjdF90 eXBlX2Zvcl9yZWxraW5kKG15cmVsa2luZCkgIT0gb2JqZWN0VHlwZSkKKwkJCWVyZXBvcnQo RVJST1IsCisJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSks CisJCQkJCWVycm1zZygib2JqZWN0IHR5cGUgZG9lcyBub3QgbWF0Y2ggdHlwZSBleHBlY3Rl ZCBieSBjb21tYW5kIikpOwogCiAJCS8qCiAJCSAqIEZpbHRlciBvdXQgZHVwbGljYXRlcyBp ZiB1c2VyIHNwZWNpZmllcyAiZm9vLCBmb28iLgpAQCAtMTYwOSw3ICsxODc0LDcgQEAgT3Bl blRhYmxlTGlzdChMaXN0ICp0YWJsZXMpCiAJCXB1Yl9yZWwtPnJlbGF0aW9uID0gcmVsOwog CQlwdWJfcmVsLT53aGVyZUNsYXVzZSA9IHQtPndoZXJlQ2xhdXNlOwogCQlwdWJfcmVsLT5j b2x1bW5zID0gdC0+Y29sdW1uczsKLQkJcmVscyA9IGxhcHBlbmQocmVscywgcHViX3JlbCk7 CisJCXJlc3VsdCA9IGxhcHBlbmQocmVzdWx0LCBwdWJfcmVsKTsKIAkJcmVsaWRzID0gbGFw cGVuZF9vaWQocmVsaWRzLCBteXJlbGlkKTsKIAogCQlpZiAodC0+d2hlcmVDbGF1c2UpCkBA IC0xNjc4LDEwICsxOTQzLDkgQEAgT3BlblRhYmxlTGlzdChMaXN0ICp0YWJsZXMpCiAJCQkJ cHViX3JlbC0+cmVsYXRpb24gPSByZWw7CiAJCQkJLyogY2hpbGQgaW5oZXJpdHMgV0hFUkUg Y2xhdXNlIGZyb20gcGFyZW50ICovCiAJCQkJcHViX3JlbC0+d2hlcmVDbGF1c2UgPSB0LT53 aGVyZUNsYXVzZTsKLQogCQkJCS8qIGNoaWxkIGluaGVyaXRzIGNvbHVtbiBsaXN0IGZyb20g cGFyZW50ICovCiAJCQkJcHViX3JlbC0+Y29sdW1ucyA9IHQtPmNvbHVtbnM7Ci0JCQkJcmVs cyA9IGxhcHBlbmQocmVscywgcHViX3JlbCk7CisJCQkJcmVzdWx0ID0gbGFwcGVuZChyZXN1 bHQsIHB1Yl9yZWwpOwogCQkJCXJlbGlkcyA9IGxhcHBlbmRfb2lkKHJlbGlkcywgY2hpbGRy ZWxpZCk7CiAKIAkJCQlpZiAodC0+d2hlcmVDbGF1c2UpCkBAIC0xNjk2LDE0ICsxOTYwLDE0 IEBAIE9wZW5UYWJsZUxpc3QoTGlzdCAqdGFibGVzKQogCWxpc3RfZnJlZShyZWxpZHMpOwog CWxpc3RfZnJlZShyZWxpZHNfd2l0aF9yZik7CiAKLQlyZXR1cm4gcmVsczsKKwlyZXR1cm4g cmVzdWx0OwogfQogCiAvKgogICogQ2xvc2UgYWxsIHJlbGF0aW9ucyBpbiB0aGUgbGlzdC4K ICAqLwogc3RhdGljIHZvaWQKLUNsb3NlVGFibGVMaXN0KExpc3QgKnJlbHMpCitDbG9zZVJl bGF0aW9uTGlzdChMaXN0ICpyZWxzKQogewogCUxpc3RDZWxsICAgKmxjOwogCkBAIC0xNzUx LDEyICsyMDE1LDEyIEBAIExvY2tTY2hlbWFMaXN0KExpc3QgKnNjaGVtYWxpc3QpCiAgKiBB ZGQgbGlzdGVkIHRhYmxlcyB0byB0aGUgcHVibGljYXRpb24uCiAgKi8KIHN0YXRpYyB2b2lk Ci1QdWJsaWNhdGlvbkFkZFRhYmxlcyhPaWQgcHViaWQsIExpc3QgKnJlbHMsIGJvb2wgaWZf bm90X2V4aXN0cywKLQkJCQkJIEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10KQorUHVibGlj YXRpb25BZGRSZWxhdGlvbnMoT2lkIHB1YmlkLCBMaXN0ICpyZWxzLCBib29sIGlmX25vdF9l eGlzdHMsCisJCQkJCQlBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCkKIHsKIAlMaXN0Q2Vs bCAgICpsYzsKIAotCUFzc2VydCghc3RtdCB8fCAhc3RtdC0+Zm9yX2FsbF90YWJsZXMpOwor CUFzc2VydCghc3RtdCB8fCAhc3RtdC0+Zm9yX2FsbF9vYmplY3RzKTsKIAogCWZvcmVhY2go bGMsIHJlbHMpCiAJewpAQCAtMTc4NSw3ICsyMDQ5LDcgQEAgUHVibGljYXRpb25BZGRUYWJs ZXMoT2lkIHB1YmlkLCBMaXN0ICpyZWxzLCBib29sIGlmX25vdF9leGlzdHMsCiAgKiBSZW1v dmUgbGlzdGVkIHRhYmxlcyBmcm9tIHRoZSBwdWJsaWNhdGlvbi4KICAqLwogc3RhdGljIHZv aWQKLVB1YmxpY2F0aW9uRHJvcFRhYmxlcyhPaWQgcHViaWQsIExpc3QgKnJlbHMsIGJvb2wg bWlzc2luZ19vaykKK1B1YmxpY2F0aW9uRHJvcFJlbGF0aW9ucyhPaWQgcHViaWQsIExpc3Qg KnJlbHMsIGJvb2wgbWlzc2luZ19vaykKIHsKIAlPYmplY3RBZGRyZXNzIG9iajsKIAlMaXN0 Q2VsbCAgICpsYzsKQEAgLTE4MzAsMTkgKzIwOTQsMTkgQEAgUHVibGljYXRpb25Ecm9wVGFi bGVzKE9pZCBwdWJpZCwgTGlzdCAqcmVscywgYm9vbCBtaXNzaW5nX29rKQogICogQWRkIGxp c3RlZCBzY2hlbWFzIHRvIHRoZSBwdWJsaWNhdGlvbi4KICAqLwogc3RhdGljIHZvaWQKLVB1 YmxpY2F0aW9uQWRkU2NoZW1hcyhPaWQgcHViaWQsIExpc3QgKnNjaGVtYXMsIGJvb2wgaWZf bm90X2V4aXN0cywKLQkJCQkJICBBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCkKK1B1Ymxp Y2F0aW9uQWRkU2NoZW1hcyhPaWQgcHViaWQsIExpc3QgKnNjaGVtYXMsIGNoYXIgb2JqZWN0 VHlwZSwKKwkJCQkJICBib29sIGlmX25vdF9leGlzdHMsIEFsdGVyUHVibGljYXRpb25TdG10 ICpzdG10KQogewogCUxpc3RDZWxsICAgKmxjOwogCi0JQXNzZXJ0KCFzdG10IHx8ICFzdG10 LT5mb3JfYWxsX3RhYmxlcyk7CisJQXNzZXJ0KCFzdG10IHx8ICFzdG10LT5mb3JfYWxsX29i amVjdHMpOwogCiAJZm9yZWFjaChsYywgc2NoZW1hcykKIAl7CiAJCU9pZAkJCXNjaGVtYWlk ID0gbGZpcnN0X29pZChsYyk7CiAJCU9iamVjdEFkZHJlc3Mgb2JqOwogCi0JCW9iaiA9IHB1 YmxpY2F0aW9uX2FkZF9zY2hlbWEocHViaWQsIHNjaGVtYWlkLCBpZl9ub3RfZXhpc3RzKTsK KwkJb2JqID0gcHVibGljYXRpb25fYWRkX3NjaGVtYShwdWJpZCwgc2NoZW1haWQsIG9iamVj dFR5cGUsIGlmX25vdF9leGlzdHMpOwogCQlpZiAoc3RtdCkKIAkJewogCQkJRXZlbnRUcmln Z2VyQ29sbGVjdFNpbXBsZUNvbW1hbmQob2JqLCBJbnZhbGlkT2JqZWN0QWRkcmVzcywKQEAg LTE4NTgsNyArMjEyMiw3IEBAIFB1YmxpY2F0aW9uQWRkU2NoZW1hcyhPaWQgcHViaWQsIExp c3QgKnNjaGVtYXMsIGJvb2wgaWZfbm90X2V4aXN0cywKICAqIFJlbW92ZSBsaXN0ZWQgc2No ZW1hcyBmcm9tIHRoZSBwdWJsaWNhdGlvbi4KICAqLwogc3RhdGljIHZvaWQKLVB1YmxpY2F0 aW9uRHJvcFNjaGVtYXMoT2lkIHB1YmlkLCBMaXN0ICpzY2hlbWFzLCBib29sIG1pc3Npbmdf b2spCitQdWJsaWNhdGlvbkRyb3BTY2hlbWFzKE9pZCBwdWJpZCwgTGlzdCAqc2NoZW1hcywg Y2hhciBvYmplY3RUeXBlLCBib29sIG1pc3Npbmdfb2spCiB7CiAJT2JqZWN0QWRkcmVzcyBv Ymo7CiAJTGlzdENlbGwgICAqbGM7CkBAIC0xODY4LDEwICsyMTMyLDExIEBAIFB1YmxpY2F0 aW9uRHJvcFNjaGVtYXMoT2lkIHB1YmlkLCBMaXN0ICpzY2hlbWFzLCBib29sIG1pc3Npbmdf b2spCiAJewogCQlPaWQJCQlzY2hlbWFpZCA9IGxmaXJzdF9vaWQobGMpOwogCi0JCXBzaWQg PSBHZXRTeXNDYWNoZU9pZDIoUFVCTElDQVRJT05OQU1FU1BBQ0VNQVAsCisJCXBzaWQgPSBH ZXRTeXNDYWNoZU9pZDMoUFVCTElDQVRJT05OQU1FU1BBQ0VNQVAsCiAJCQkJCQkJICAgQW51 bV9wZ19wdWJsaWNhdGlvbl9uYW1lc3BhY2Vfb2lkLAogCQkJCQkJCSAgIE9iamVjdElkR2V0 RGF0dW0oc2NoZW1haWQpLAotCQkJCQkJCSAgIE9iamVjdElkR2V0RGF0dW0ocHViaWQpKTsK KwkJCQkJCQkgICBPYmplY3RJZEdldERhdHVtKHB1YmlkKSwKKwkJCQkJCQkgICBDaGFyR2V0 RGF0dW0ob2JqZWN0VHlwZSkpOwogCQlpZiAoIU9pZElzVmFsaWQocHNpZCkpCiAJCXsKIAkJ CWlmIChtaXNzaW5nX29rKQpAQCAtMTkyNiw2ICsyMTkxLDEzIEBAIEFsdGVyUHVibGljYXRp b25Pd25lcl9pbnRlcm5hbChSZWxhdGlvbiByZWwsIEhlYXBUdXBsZSB0dXAsIE9pZCBuZXdP d25lcklkKQogCQkJCQkJCU5hbWVTdHIoZm9ybS0+cHVibmFtZSkpLAogCQkJCQkgZXJyaGlu dCgiVGhlIG93bmVyIG9mIGEgRk9SIEFMTCBUQUJMRVMgcHVibGljYXRpb24gbXVzdCBiZSBh IHN1cGVydXNlci4iKSkpOwogCisJCWlmIChmb3JtLT5wdWJhbGxzZXF1ZW5jZXMgJiYgIXN1 cGVydXNlcl9hcmcobmV3T3duZXJJZCkpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJy Y29kZShFUlJDT0RFX0lOU1VGRklDSUVOVF9QUklWSUxFR0UpLAorCQkJCQkgZXJybXNnKCJw ZXJtaXNzaW9uIGRlbmllZCB0byBjaGFuZ2Ugb3duZXIgb2YgcHVibGljYXRpb24gXCIlc1wi IiwKKwkJCQkJCQlOYW1lU3RyKGZvcm0tPnB1Ym5hbWUpKSwKKwkJCQkJIGVycmhpbnQoIlRo ZSBvd25lciBvZiBhIEZPUiBBTEwgU0VRVUVOQ0VTIHB1YmxpY2F0aW9uIG11c3QgYmUgYSBz dXBlcnVzZXIuIikpKTsKKwogCQlpZiAoIXN1cGVydXNlcl9hcmcobmV3T3duZXJJZCkgJiYg aXNfc2NoZW1hX3B1YmxpY2F0aW9uKGZvcm0tPm9pZCkpCiAJCQllcmVwb3J0KEVSUk9SLAog CQkJCQkoZXJyY29kZShFUlJDT0RFX0lOU1VGRklDSUVOVF9QUklWSUxFR0UpLApkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvc2VxdWVuY2UuYyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3NlcXVlbmNlLmMKaW5kZXggYmMxNzQ5YmRiYWYuLjlkYTljODI3MGQ5IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9zZXF1ZW5jZS5jCisrKyBiL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3NlcXVlbmNlLmMKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRlICJ1 dGlscy9hY2wuaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgogI2luY2x1ZGUgInV0 aWxzL2xzeXNjYWNoZS5oIgorI2luY2x1ZGUgInV0aWxzL3BnX2xzbi5oIgogI2luY2x1ZGUg InV0aWxzL3Jlc293bmVyLmgiCiAjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKICNpbmNs dWRlICJ1dGlscy92YXJsZW5hLmgiCkBAIC0xMDEsNyArMTAyLDggQEAgc3RhdGljIFJlbGF0 aW9uIGxvY2tfYW5kX29wZW5fc2VxdWVuY2UoU2VxVGFibGUgc2VxKTsKIHN0YXRpYyB2b2lk IGNyZWF0ZV9zZXFfaGFzaHRhYmxlKHZvaWQpOwogc3RhdGljIHZvaWQgaW5pdF9zZXF1ZW5j ZShPaWQgcmVsaWQsIFNlcVRhYmxlICpwX2VsbSwgUmVsYXRpb24gKnBfcmVsKTsKIHN0YXRp YyBGb3JtX3BnX3NlcXVlbmNlX2RhdGEgcmVhZF9zZXFfdHVwbGUoUmVsYXRpb24gcmVsLAot CQkJCQkJCQkJCQlCdWZmZXIgKmJ1ZiwgSGVhcFR1cGxlIHNlcWRhdGF0dXBsZSk7CisJCQkJ CQkJCQkJCUJ1ZmZlciAqYnVmLCBIZWFwVHVwbGUgc2VxZGF0YXR1cGxlLAorCQkJCQkJCQkJ CQlYTG9nUmVjUHRyICpsc24pOwogc3RhdGljIHZvaWQgaW5pdF9wYXJhbXMoUGFyc2VTdGF0 ZSAqcHN0YXRlLCBMaXN0ICpvcHRpb25zLCBib29sIGZvcl9pZGVudGl0eSwKIAkJCQkJCWJv b2wgaXNJbml0LAogCQkJCQkJRm9ybV9wZ19zZXF1ZW5jZSBzZXFmb3JtLApAQCAtMjkyLDcg KzI5NCw3IEBAIFJlc2V0U2VxdWVuY2UoT2lkIHNlcV9yZWxpZCkKIAkgKiBpbmRlZWQgYSBz ZXF1ZW5jZS4KIAkgKi8KIAlpbml0X3NlcXVlbmNlKHNlcV9yZWxpZCwgJmVsbSwgJnNlcV9y ZWwpOwotCSh2b2lkKSByZWFkX3NlcV90dXBsZShzZXFfcmVsLCAmYnVmLCAmc2VxZGF0YXR1 cGxlKTsKKwkodm9pZCkgcmVhZF9zZXFfdHVwbGUoc2VxX3JlbCwgJmJ1ZiwgJnNlcWRhdGF0 dXBsZSwgTlVMTCk7CiAKIAlwZ3N0dXBsZSA9IFNlYXJjaFN5c0NhY2hlMShTRVFSRUxJRCwg T2JqZWN0SWRHZXREYXR1bShzZXFfcmVsaWQpKTsKIAlpZiAoIUhlYXBUdXBsZUlzVmFsaWQo cGdzdHVwbGUpKQpAQCAtMzUwLDYgKzM1MiwxNjYgQEAgUmVzZXRTZXF1ZW5jZShPaWQgc2Vx X3JlbGlkKQogCXJlbGF0aW9uX2Nsb3NlKHNlcV9yZWwsIE5vTG9jayk7CiB9CiAKKy8qCisg KiBVcGRhdGUgdGhlIHNlcXVlbmNlIHN0YXRlIGJ5IG1vZGlmeWluZyB0aGUgZXhpc3Rpbmcg c2VxdWVuY2UgZGF0YSByb3cuCisgKgorICogVGhpcyBrZWVwcyB0aGUgc2FtZSByZWxmaWxl bm9kZSwgc28gdGhlIGJlaGF2aW9yIGlzIG5vbi10cmFuc2FjdGlvbmFsLgorICovCitzdGF0 aWMgdm9pZAorU2V0U2VxdWVuY2Vfbm9uX3RyYW5zYWN0aW9uYWwoT2lkIHNlcXJlbGlkLCBp bnQ2NCB2YWx1ZSkKK3sKKwlTZXFUYWJsZQllbG07CisJUmVsYXRpb24Jc2VxcmVsOworCUJ1 ZmZlcgkJYnVmOworCUhlYXBUdXBsZURhdGEgc2VxZGF0YXR1cGxlOworCUZvcm1fcGdfc2Vx dWVuY2VfZGF0YSBzZXE7CisKKwkvKiBvcGVuIGFuZCBsb2NrIHNlcXVlbmNlICovCisJaW5p dF9zZXF1ZW5jZShzZXFyZWxpZCwgJmVsbSwgJnNlcXJlbCk7CisKKwkvKiBsb2NrIHBhZ2Un IGJ1ZmZlciBhbmQgcmVhZCB0dXBsZSAqLworCXNlcSA9IHJlYWRfc2VxX3R1cGxlKHNlcXJl bCwgJmJ1ZiwgJnNlcWRhdGF0dXBsZSwgTlVMTCk7CisKKwkvKiBjaGVjayB0aGUgY29tbWVu dCBhYm92ZSBuZXh0dmFsX2ludGVybmFsKCkncyBlcXVpdmFsZW50IGNhbGwuICovCisJaWYg KFJlbGF0aW9uTmVlZHNXQUwoc2VxcmVsKSkKKwl7CisJCUdldFRvcFRyYW5zYWN0aW9uSWQo KTsKKworCQlpZiAoWExvZ0xvZ2ljYWxJbmZvQWN0aXZlKCkpCisJCQlHZXRDdXJyZW50VHJh bnNhY3Rpb25JZCgpOworCX0KKworCS8qIHJlYWR5IHRvIGNoYW5nZSB0aGUgb24tZGlzayAo b3IgcmVhbGx5LCBpbi1idWZmZXIpIHR1cGxlICovCisJU1RBUlRfQ1JJVF9TRUNUSU9OKCk7 CisKKwlzZXEtPmxhc3RfdmFsdWUgPSB2YWx1ZTsKKwlzZXEtPmlzX2NhbGxlZCA9IHRydWU7 CisJc2VxLT5sb2dfY250ID0gMDsKKworCU1hcmtCdWZmZXJEaXJ0eShidWYpOworCisJLyog WExPRyBzdHVmZiAqLworCWlmIChSZWxhdGlvbk5lZWRzV0FMKHNlcXJlbCkpCisJeworCQl4 bF9zZXFfcmVjCXhscmVjOworCQlYTG9nUmVjUHRyCXJlY3B0cjsKKwkJUGFnZQkJcGFnZSA9 IEJ1ZmZlckdldFBhZ2UoYnVmKTsKKworCQlYTG9nQmVnaW5JbnNlcnQoKTsKKwkJWExvZ1Jl Z2lzdGVyQnVmZmVyKDAsIGJ1ZiwgUkVHQlVGX1dJTExfSU5JVCk7CisKKwkJeGxyZWMubG9j YXRvciA9IHNlcXJlbC0+cmRfbG9jYXRvcjsKKworCQlYTG9nUmVnaXN0ZXJEYXRhKChjaGFy ICopICZ4bHJlYywgc2l6ZW9mKHhsX3NlcV9yZWMpKTsKKwkJWExvZ1JlZ2lzdGVyRGF0YSgo Y2hhciAqKSBzZXFkYXRhdHVwbGUudF9kYXRhLCBzZXFkYXRhdHVwbGUudF9sZW4pOworCisJ CS8qIGFsbG93IGZpbHRlcmluZyBieSBvcmlnaW4gb24gYSBzZXF1ZW5jZSB1cGRhdGUgKi8K KwkJWExvZ1NldFJlY29yZEZsYWdzKFhMT0dfSU5DTFVERV9PUklHSU4pOworCisJCXJlY3B0 ciA9IFhMb2dJbnNlcnQoUk1fU0VRX0lELCBYTE9HX1NFUV9MT0cpOworCisJCVBhZ2VTZXRM U04ocGFnZSwgcmVjcHRyKTsKKwl9CisKKwlFTkRfQ1JJVF9TRUNUSU9OKCk7CisKKwlVbmxv Y2tSZWxlYXNlQnVmZmVyKGJ1Zik7CisKKwkvKiBDbGVhciBsb2NhbCBjYWNoZSBzbyB0aGF0 IHdlIGRvbid0IHRoaW5rIHdlIGhhdmUgY2FjaGVkIG51bWJlcnMgKi8KKwkvKiBOb3RlIHRo YXQgd2UgZG8gbm90IGNoYW5nZSB0aGUgY3VycnZhbCgpIHN0YXRlICovCisJZWxtLT5jYWNo ZWQgPSBlbG0tPmxhc3Q7CisKKwlyZWxhdGlvbl9jbG9zZShzZXFyZWwsIE5vTG9jayk7Cit9 CisKKy8qCisgKiBVcGRhdGUgdGhlIHNlcXVlbmNlIHN0YXRlIGJ5IGNyZWF0aW5nIGEgbmV3 IHJlbGZpbGVub2RlLgorICoKKyAqIFRoaXMgY3JlYXRlcyBhIG5ldyByZWxmaWxlbm9kZSwg dG8gYWxsb3cgdHJhbnNhY3Rpb25hbCBiZWhhdmlvci4KKyAqLworc3RhdGljIHZvaWQKK1Nl dFNlcXVlbmNlX3RyYW5zYWN0aW9uYWwoT2lkIHNlcV9yZWxpZCwgaW50NjQgdmFsdWUpCit7 CisJU2VxVGFibGUJZWxtOworCVJlbGF0aW9uCXNlcXJlbDsKKwlCdWZmZXIJCWJ1ZjsKKwlI ZWFwVHVwbGVEYXRhIHNlcWRhdGF0dXBsZTsKKwlGb3JtX3BnX3NlcXVlbmNlX2RhdGEgc2Vx OworCUhlYXBUdXBsZQl0dXBsZTsKKworCS8qIG9wZW4gYW5kIGxvY2sgc2VxdWVuY2UgKi8K Kwlpbml0X3NlcXVlbmNlKHNlcV9yZWxpZCwgJmVsbSwgJnNlcXJlbCk7CisKKwkvKiBsb2Nr IHBhZ2UnIGJ1ZmZlciBhbmQgcmVhZCB0dXBsZSAqLworCXNlcSA9IHJlYWRfc2VxX3R1cGxl KHNlcXJlbCwgJmJ1ZiwgJnNlcWRhdGF0dXBsZSwgTlVMTCk7CisKKwkvKiBDb3B5IHRoZSBl eGlzdGluZyBzZXF1ZW5jZSB0dXBsZS4gKi8KKwl0dXBsZSA9IGhlYXBfY29weXR1cGxlKCZz ZXFkYXRhdHVwbGUpOworCisJLyogTm93IHdlJ3JlIGRvbmUgd2l0aCB0aGUgb2xkIHBhZ2Ug Ki8KKwlVbmxvY2tSZWxlYXNlQnVmZmVyKGJ1Zik7CisKKwkvKgorCSAqIE1vZGlmeSB0aGUg Y29waWVkIHR1cGxlIHRvIHVwZGF0ZSB0aGUgc2VxdWVuY2Ugc3RhdGUgKHNpbWlsYXIgdG8g d2hhdAorCSAqIFJlc2V0U2VxdWVuY2UgZG9lcykuCisJICovCisJc2VxID0gKEZvcm1fcGdf c2VxdWVuY2VfZGF0YSkgR0VUU1RSVUNUKHR1cGxlKTsKKwlzZXEtPmxhc3RfdmFsdWUgPSB2 YWx1ZTsKKwlzZXEtPmlzX2NhbGxlZCA9IHRydWU7CisJc2VxLT5sb2dfY250ID0gMDsKKwor CS8qIG1ha2Ugc3VyZSB0aGUgcmVsZmlsZW5vZGUgY3JlYXRpb24gaXMgYXNzb2NpYXRlZCB3 aXRoIHRoZSBYSUQgKi8KKwlpZiAoWExvZ0xvZ2ljYWxJbmZvQWN0aXZlKCkpCisJCUdldEN1 cnJlbnRUcmFuc2FjdGlvbklkKCk7CisKKwkvKgorCSAqIENyZWF0ZSBhIG5ldyBzdG9yYWdl IGZpbGUgZm9yIHRoZSBzZXF1ZW5jZSAtIHRoaXMgaXMgbmVlZGVkIGZvciB0aGUKKwkgKiB0 cmFuc2FjdGlvbmFsIGJlaGF2aW9yLgorCSAqLworCVJlbGF0aW9uU2V0TmV3UmVsZmlsZW51 bWJlcihzZXFyZWwsIHNlcXJlbC0+cmRfcmVsLT5yZWxwZXJzaXN0ZW5jZSk7CisKKwkvKgor CSAqIEVuc3VyZSBzZXF1ZW5jZSdzIHJlbGZyb3plbnhpZCBpcyBhdCAwLCBzaW5jZSBpdCB3 b24ndCBjb250YWluIGFueQorCSAqIHVuZnJvemVuIFhJRHMuICBTYW1lIHdpdGggcmVsbWlu bXhpZCwgc2luY2UgYSBzZXF1ZW5jZSB3aWxsIG5ldmVyCisJICogY29udGFpbiBtdWx0aXhh Y3RzLgorCSAqLworCUFzc2VydChzZXFyZWwtPnJkX3JlbC0+cmVsZnJvemVueGlkID09IElu dmFsaWRUcmFuc2FjdGlvbklkKTsKKwlBc3NlcnQoc2VxcmVsLT5yZF9yZWwtPnJlbG1pbm14 aWQgPT0gSW52YWxpZE11bHRpWGFjdElkKTsKKworCS8qCisJICogSW5zZXJ0IHRoZSBtb2Rp ZmllZCB0dXBsZSBpbnRvIHRoZSBuZXcgc3RvcmFnZSBmaWxlLiBUaGlzIGRvZXMgYWxsIHRo ZQorCSAqIG5lY2Vzc2FyeSBXQUwtbG9nZ2luZyBldGMuCisJICovCisJZmlsbF9zZXFfd2l0 aF9kYXRhKHNlcXJlbCwgdHVwbGUpOworCisJLyogQ2xlYXIgbG9jYWwgY2FjaGUgc28gdGhh dCB3ZSBkb24ndCB0aGluayB3ZSBoYXZlIGNhY2hlZCBudW1iZXJzICovCisJLyogTm90ZSB0 aGF0IHdlIGRvIG5vdCBjaGFuZ2UgdGhlIGN1cnJ2YWwoKSBzdGF0ZSAqLworCWVsbS0+Y2Fj aGVkID0gZWxtLT5sYXN0OworCisJcmVsYXRpb25fY2xvc2Uoc2VxcmVsLCBOb0xvY2spOwor fQorCisvKgorICogU2V0IGEgc2VxdWVuY2UgdG8gYSBzcGVjaWZpZWQgaW50ZXJuYWwgc3Rh dGUuCisgKgorICogVGhlIGNoYW5nZSBpcyBtYWRlIHRyYW5zYWN0aW9uYWxseSwgc28gdGhh dCBvbiBmYWlsdXJlIG9mIHRoZSBjdXJyZW50CisgKiB0cmFuc2FjdGlvbiwgdGhlIHNlcXVl bmNlIHdpbGwgYmUgcmVzdG9yZWQgdG8gaXRzIHByZXZpb3VzIHN0YXRlLgorICogV2UgZG8g dGhhdCBieSBjcmVhdGluZyBhIHdob2xlIG5ldyByZWxmaWxlbm9kZSBmb3IgdGhlIHNlcXVl bmNlOyBzbyB0aGlzCisgKiB3b3JrcyBtdWNoIGxpa2UgdGhlIHJld3JpdGluZyBmb3JtcyBv ZiBBTFRFUiBUQUJMRS4KKyAqCisgKiBDYWxsZXIgaXMgYXNzdW1lZCB0byBoYXZlIGFjcXVp cmVkIEFjY2Vzc0V4Y2x1c2l2ZUxvY2sgb24gdGhlIHNlcXVlbmNlLAorICogd2hpY2ggbXVz dCBub3QgYmUgcmVsZWFzZWQgdW50aWwgZW5kIG9mIHRyYW5zYWN0aW9uLiAgQ2FsbGVyIGlz IGFsc28KKyAqIHJlc3BvbnNpYmxlIGZvciBwZXJtaXNzaW9ucyBjaGVja2luZy4KKyAqLwor dm9pZAorU2V0U2VxdWVuY2UoT2lkIHNlcV9yZWxpZCwgYm9vbCB0cmFuc2FjdGlvbmFsLCBp bnQ2NCB2YWx1ZSkKK3sKKwlpZiAodHJhbnNhY3Rpb25hbCkKKwkJU2V0U2VxdWVuY2VfdHJh bnNhY3Rpb25hbChzZXFfcmVsaWQsIHZhbHVlKTsKKwllbHNlCisJCVNldFNlcXVlbmNlX25v bl90cmFuc2FjdGlvbmFsKHNlcV9yZWxpZCwgdmFsdWUpOworfQorCiAvKgogICogSW5pdGlh bGl6ZSBhIHNlcXVlbmNlJ3MgcmVsYXRpb24gd2l0aCB0aGUgc3BlY2lmaWVkIHR1cGxlIGFz IGNvbnRlbnQKICAqCkBAIC01MTMsNyArNjc1LDcgQEAgQWx0ZXJTZXF1ZW5jZShQYXJzZVN0 YXRlICpwc3RhdGUsIEFsdGVyU2VxU3RtdCAqc3RtdCkKIAlzZXFmb3JtID0gKEZvcm1fcGdf c2VxdWVuY2UpIEdFVFNUUlVDVChzZXF0dXBsZSk7CiAKIAkvKiBsb2NrIHBhZ2UgYnVmZmVy IGFuZCByZWFkIHR1cGxlIGludG8gbmV3IHNlcXVlbmNlIHN0cnVjdHVyZSAqLwotCSh2b2lk KSByZWFkX3NlcV90dXBsZShzZXFyZWwsICZidWYsICZkYXRhdHVwbGUpOworCSh2b2lkKSBy ZWFkX3NlcV90dXBsZShzZXFyZWwsICZidWYsICZkYXRhdHVwbGUsIE5VTEwpOwogCiAJLyog Y29weSB0aGUgZXhpc3Rpbmcgc2VxdWVuY2UgZGF0YSB0dXBsZSwgc28gaXQgY2FuIGJlIG1v ZGlmaWVkIGxvY2FsbHkgKi8KIAluZXdkYXRhdHVwbGUgPSBoZWFwX2NvcHl0dXBsZSgmZGF0 YXR1cGxlKTsKQEAgLTYwNyw3ICs3NjksNyBAQCBTZXF1ZW5jZUNoYW5nZVBlcnNpc3RlbmNl KE9pZCByZWxpZCwgY2hhciBuZXdyZWxwZXJzaXN0ZW5jZSkKIAkJCUdldEN1cnJlbnRUcmFu c2FjdGlvbklkKCk7CiAJfQogCi0JKHZvaWQpIHJlYWRfc2VxX3R1cGxlKHNlcXJlbCwgJmJ1 ZiwgJnNlcWRhdGF0dXBsZSk7CisJKHZvaWQpIHJlYWRfc2VxX3R1cGxlKHNlcXJlbCwgJmJ1 ZiwgJnNlcWRhdGF0dXBsZSwgTlVMTCk7CiAJUmVsYXRpb25TZXROZXdSZWxmaWxlbnVtYmVy KHNlcXJlbCwgbmV3cmVscGVyc2lzdGVuY2UpOwogCWZpbGxfc2VxX3dpdGhfZGF0YShzZXFy ZWwsICZzZXFkYXRhdHVwbGUpOwogCVVubG9ja1JlbGVhc2VCdWZmZXIoYnVmKTsKQEAgLTcz Niw3ICs4OTgsNyBAQCBuZXh0dmFsX2ludGVybmFsKE9pZCByZWxpZCwgYm9vbCBjaGVja19w ZXJtaXNzaW9ucykKIAlSZWxlYXNlU3lzQ2FjaGUocGdzdHVwbGUpOwogCiAJLyogbG9jayBw YWdlIGJ1ZmZlciBhbmQgcmVhZCB0dXBsZSAqLwotCXNlcSA9IHJlYWRfc2VxX3R1cGxlKHNl cXJlbCwgJmJ1ZiwgJnNlcWRhdGF0dXBsZSk7CisJc2VxID0gcmVhZF9zZXFfdHVwbGUoc2Vx cmVsLCAmYnVmLCAmc2VxZGF0YXR1cGxlLCBOVUxMKTsKIAlwYWdlID0gQnVmZmVyR2V0UGFn ZShidWYpOwogCiAJZWxtLT5pbmNyZW1lbnQgPSBpbmNieTsKQEAgLTEwNjAsNyArMTIyMiw3 IEBAIGRvX3NldHZhbChPaWQgcmVsaWQsIGludDY0IG5leHQsIGJvb2wgaXNjYWxsZWQpCiAJ UHJldmVudENvbW1hbmRJZlBhcmFsbGVsTW9kZSgic2V0dmFsKCkiKTsKIAogCS8qIGxvY2sg cGFnZSBidWZmZXIgYW5kIHJlYWQgdHVwbGUgKi8KLQlzZXEgPSByZWFkX3NlcV90dXBsZShz ZXFyZWwsICZidWYsICZzZXFkYXRhdHVwbGUpOworCXNlcSA9IHJlYWRfc2VxX3R1cGxlKHNl cXJlbCwgJmJ1ZiwgJnNlcWRhdGF0dXBsZSwgTlVMTCk7CiAKIAlpZiAoKG5leHQgPCBtaW52 KSB8fCAobmV4dCA+IG1heHYpKQogCQllcmVwb3J0KEVSUk9SLApAQCAtMTI4MiwxMSArMTQ0 NCwxMyBAQCBpbml0X3NlcXVlbmNlKE9pZCByZWxpZCwgU2VxVGFibGUgKnBfZWxtLCBSZWxh dGlvbiAqcF9yZWwpCiAgKiAqYnVmIHJlY2VpdmVzIHRoZSByZWZlcmVuY2UgdG8gdGhlIHBp bm5lZC1hbmQtZXgtbG9ja2VkIGJ1ZmZlcgogICogKnNlcWRhdGF0dXBsZSByZWNlaXZlcyB0 aGUgcmVmZXJlbmNlIHRvIHRoZSBzZXF1ZW5jZSB0dXBsZSBwcm9wZXIKICAqCQkodGhpcyBh cmcgc2hvdWxkIHBvaW50IHRvIGEgbG9jYWwgdmFyaWFibGUgb2YgdHlwZSBIZWFwVHVwbGVE YXRhKQorICogKmxzbiByZWNlaXZlcyBMU04gb2YgdGhlIGxhc3Qgc2VxdWVuY2UgY2hhbmdl IChwYWdlIExTTiksIG9wdGlvbmFsCiAgKgogICogRnVuY3Rpb24ncyByZXR1cm4gdmFsdWUg cG9pbnRzIHRvIHRoZSBkYXRhIHBheWxvYWQgb2YgdGhlIHR1cGxlCiAgKi8KIHN0YXRpYyBG b3JtX3BnX3NlcXVlbmNlX2RhdGEKLXJlYWRfc2VxX3R1cGxlKFJlbGF0aW9uIHJlbCwgQnVm ZmVyICpidWYsIEhlYXBUdXBsZSBzZXFkYXRhdHVwbGUpCityZWFkX3NlcV90dXBsZShSZWxh dGlvbiByZWwsIEJ1ZmZlciAqYnVmLCBIZWFwVHVwbGUgc2VxZGF0YXR1cGxlLAorCQkJICAg WExvZ1JlY1B0ciAqbHNuKQogewogCVBhZ2UJCXBhZ2U7CiAJSXRlbUlkCQlscDsKQEAgLTEz MDMsNiArMTQ2NywxMyBAQCByZWFkX3NlcV90dXBsZShSZWxhdGlvbiByZWwsIEJ1ZmZlciAq YnVmLCBIZWFwVHVwbGUgc2VxZGF0YXR1cGxlKQogCQllbG9nKEVSUk9SLCAiYmFkIG1hZ2lj IG51bWJlciBpbiBzZXF1ZW5jZSBcIiVzXCI6ICUwOFgiLAogCQkJIFJlbGF0aW9uR2V0UmVs YXRpb25OYW1lKHJlbCksIHNtLT5tYWdpYyk7CiAKKwkvKgorCSAqIElmIHRoZSBjYWxsZXIg cmVxdWVzdGVkIGl0LCBzZXQgdGhlIHBhZ2UgTFNOLiBUaGlzIGFsbG93cyBkZWNpZGluZwor CSAqIHdoaWNoIHNlcXVlbmNlIGNoYW5nZXMgYXJlIGJlZm9yZS9hZnRlciB0aGUgcmV0dXJu ZWQgc2VxdWVuY2Ugc3RhdGUuCisJICovCisJaWYgKGxzbikKKwkJKmxzbiA9IFBhZ2VHZXRM U04ocGFnZSk7CisKIAlscCA9IFBhZ2VHZXRJdGVtSWQocGFnZSwgRmlyc3RPZmZzZXROdW1i ZXIpOwogCUFzc2VydChJdGVtSWRJc05vcm1hbChscCkpOwogCkBAIC0xODk4LDcgKzIwNjks NyBAQCBwZ19zZXF1ZW5jZV9sYXN0X3ZhbHVlKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQkJIGVy cm1zZygicGVybWlzc2lvbiBkZW5pZWQgZm9yIHNlcXVlbmNlICVzIiwKIAkJCQkJCVJlbGF0 aW9uR2V0UmVsYXRpb25OYW1lKHNlcXJlbCkpKSk7CiAKLQlzZXEgPSByZWFkX3NlcV90dXBs ZShzZXFyZWwsICZidWYsICZzZXF0dXBsZSk7CisJc2VxID0gcmVhZF9zZXFfdHVwbGUoc2Vx cmVsLCAmYnVmLCAmc2VxdHVwbGUsIE5VTEwpOwogCiAJaXNfY2FsbGVkID0gc2VxLT5pc19j YWxsZWQ7CiAJcmVzdWx0ID0gc2VxLT5sYXN0X3ZhbHVlOwpAQCAtMTkxMiw2ICsyMDgzLDY3 IEBAIHBnX3NlcXVlbmNlX2xhc3RfdmFsdWUoUEdfRlVOQ1RJT05fQVJHUykKIAkJUEdfUkVU VVJOX05VTEwoKTsKIH0KIAorLyoKKyAqIFJldHVybiB0aGUgY3VycmVudCBvbi1kaXNrIHN0 YXRlIG9mIHRoZSBzZXF1ZW5jZS4KKyAqCisgKiBOb3RlOiBUaGlzIGlzIHJvdWdobHkgZXF1 aXZhbGVudCB0byBzZWxlY3RpbmcgdGhlIGRhdGEgZnJvbSB0aGUgc2VxdWVuY2UsCisgKiBl eGNlcHQgdGhhdCBpdCBhbHNvIHJldHVybnMgdGhlIHBhZ2UgTFNOLgorICovCitEYXR1bQor cGdfc2VxdWVuY2Vfc3RhdGUoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlPaWQJCQlyZWxpZCA9 IFBHX0dFVEFSR19PSUQoMCk7CisJU2VxVGFibGUJZWxtOworCVJlbGF0aW9uCXNlcXJlbDsK KwlCdWZmZXIJCWJ1ZjsKKwlIZWFwVHVwbGVEYXRhIHNlcXR1cGxlOworCUZvcm1fcGdfc2Vx dWVuY2VfZGF0YSBzZXE7CisJRGF0dW0JCXJlc3VsdDsKKworCWludDY0CQlsYXN0X3ZhbHVl OworCWludDY0CQlsb2dfY250OworCWJvb2wJCWlzX2NhbGxlZDsKKwlYTG9nUmVjUHRyCWxz bjsKKworCVR1cGxlRGVzYwl0dXBkZXNjOworCUhlYXBUdXBsZQl0dXBsZTsKKwlEYXR1bQkJ dmFsdWVzWzRdOworCWJvb2wJCW51bGxzWzRdOworCisJaWYgKGdldF9jYWxsX3Jlc3VsdF90 eXBlKGZjaW5mbywgTlVMTCwgJnR1cGRlc2MpICE9IFRZUEVGVU5DX0NPTVBPU0lURSkKKwkJ ZWxvZyhFUlJPUiwgInJldHVybiB0eXBlIG11c3QgYmUgYSByb3cgdHlwZSIpOworCisJLyog b3BlbiBhbmQgbG9jayBzZXF1ZW5jZSAqLworCWluaXRfc2VxdWVuY2UocmVsaWQsICZlbG0s ICZzZXFyZWwpOworCisJaWYgKHBnX2NsYXNzX2FjbGNoZWNrKGVsbS0+cmVsaWQsIEdldFVz ZXJJZCgpLAorCQkJCQkJICBBQ0xfU0VMRUNUIHwgQUNMX1VTQUdFKSAhPSBBQ0xDSEVDS19P SykKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0lOU1VGRklDSUVO VF9QUklWSUxFR0UpLAorCQkJCSBlcnJtc2coInBlcm1pc3Npb24gZGVuaWVkIGZvciBzZXF1 ZW5jZSAlcyIsCisJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShzZXFyZWwpKSkpOwor CisJc2VxID0gcmVhZF9zZXFfdHVwbGUoc2VxcmVsLCAmYnVmLCAmc2VxdHVwbGUsICZsc24p OworCisJaXNfY2FsbGVkID0gc2VxLT5pc19jYWxsZWQ7CisJbGFzdF92YWx1ZSA9IHNlcS0+ bGFzdF92YWx1ZTsKKwlsb2dfY250ID0gc2VxLT5sb2dfY250OworCisJVW5sb2NrUmVsZWFz ZUJ1ZmZlcihidWYpOworCXJlbGF0aW9uX2Nsb3NlKHNlcXJlbCwgTm9Mb2NrKTsKKworCXZh bHVlc1swXSA9IExTTkdldERhdHVtKGxzbik7CisJdmFsdWVzWzFdID0gSW50NjRHZXREYXR1 bShsYXN0X3ZhbHVlKTsKKwl2YWx1ZXNbMl0gPSBJbnQ2NEdldERhdHVtKGxvZ19jbnQpOwor CXZhbHVlc1szXSA9IEJvb2xHZXREYXR1bShpc19jYWxsZWQpOworCisJbWVtc2V0KG51bGxz LCAwLCBzaXplb2YobnVsbHMpKTsKKworCXR1cGxlID0gaGVhcF9mb3JtX3R1cGxlKHR1cGRl c2MsIHZhbHVlcywgbnVsbHMpOworCXJlc3VsdCA9IEhlYXBUdXBsZUdldERhdHVtKHR1cGxl KTsKKworCVBHX1JFVFVSTl9EQVRVTShyZXN1bHQpOworfQogCiB2b2lkCiBzZXFfcmVkbyhY TG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1h bmRzL3N1YnNjcmlwdGlvbmNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlw dGlvbmNtZHMuYwppbmRleCBlZGM4MmMxMWJlYi4uMGUwNmIzNjYxMWYgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYworKysgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMKQEAgLTEwMCw2ICsxMDAsNyBAQCB0 eXBlZGVmIHN0cnVjdCBTdWJPcHRzCiB9IFN1Yk9wdHM7CiAKIHN0YXRpYyBMaXN0ICpmZXRj aF90YWJsZV9saXN0KFdhbFJlY2VpdmVyQ29ubiAqd3Jjb25uLCBMaXN0ICpwdWJsaWNhdGlv bnMpOworc3RhdGljIExpc3QgKmZldGNoX3NlcXVlbmNlX2xpc3QoV2FsUmVjZWl2ZXJDb25u ICp3cmNvbm4sIExpc3QgKnB1YmxpY2F0aW9ucyk7CiBzdGF0aWMgdm9pZCBjaGVja19wdWJs aWNhdGlvbnNfb3JpZ2luKFdhbFJlY2VpdmVyQ29ubiAqd3Jjb25uLAogCQkJCQkJCQkJICBM aXN0ICpwdWJsaWNhdGlvbnMsIGJvb2wgY29weWRhdGEsCiAJCQkJCQkJCQkgIGNoYXIgKm9y aWdpbiwgT2lkICpzdWJyZWxfbG9jYWxfb2lkcywKQEAgLTczMCw5ICs3MzEsOSBAQCBDcmVh dGVTdWJzY3JpcHRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVTdWJzY3JpcHRpb25T dG10ICpzdG10LAogCXsKIAkJY2hhcgkgICAqZXJyOwogCQlXYWxSZWNlaXZlckNvbm4gKndy Y29ubjsKLQkJTGlzdAkgICAqdGFibGVzOworCQlMaXN0CSAgICpyZWxhdGlvbnM7CiAJCUxp c3RDZWxsICAgKmxjOwotCQljaGFyCQl0YWJsZV9zdGF0ZTsKKwkJY2hhcgkJc3luY19zdGF0 ZTsKIAkJYm9vbAkJbXVzdF91c2VfcGFzc3dvcmQ7CiAKIAkJLyogVHJ5IHRvIGNvbm5lY3Qg dG8gdGhlIHB1Ymxpc2hlci4gKi8KQEAgLTc1NCwxNCArNzU1LDE3IEBAIENyZWF0ZVN1YnNj cmlwdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVN1YnNjcmlwdGlvblN0bXQgKnN0 bXQsCiAJCQkgKiBTZXQgc3luYyBzdGF0ZSBiYXNlZCBvbiBpZiB3ZSB3ZXJlIGFza2VkIHRv IGRvIGRhdGEgY29weSBvcgogCQkJICogbm90LgogCQkJICovCi0JCQl0YWJsZV9zdGF0ZSA9 IG9wdHMuY29weV9kYXRhID8gU1VCUkVMX1NUQVRFX0lOSVQgOiBTVUJSRUxfU1RBVEVfUkVB RFk7CisJCQlzeW5jX3N0YXRlID0gb3B0cy5jb3B5X2RhdGEgPyBTVUJSRUxfU1RBVEVfSU5J VCA6IFNVQlJFTF9TVEFURV9SRUFEWTsKIAogCQkJLyoKLQkJCSAqIEdldCB0aGUgdGFibGUg bGlzdCBmcm9tIHB1Ymxpc2hlciBhbmQgYnVpbGQgbG9jYWwgdGFibGUgc3RhdHVzCi0JCQkg KiBpbmZvLgorCQkJICogR2V0IHRoZSB0YWJsZSBhbmQgc2VxdWVuY2UgbGlzdCBmcm9tIHB1 Ymxpc2hlciBhbmQgYnVpbGQgbG9jYWwKKwkJCSAqIHJlbGF0aW9uIHN5bmMgc3RhdHVzIGlu Zm8uCiAJCQkgKi8KLQkJCXRhYmxlcyA9IGZldGNoX3RhYmxlX2xpc3Qod3Jjb25uLCBwdWJs aWNhdGlvbnMpOwotCQkJZm9yZWFjaChsYywgdGFibGVzKQorCQkJcmVsYXRpb25zID0gZmV0 Y2hfdGFibGVfbGlzdCh3cmNvbm4sIHB1YmxpY2F0aW9ucyk7CisJCQlyZWxhdGlvbnMgPSBs aXN0X2NvbmNhdChyZWxhdGlvbnMsCisJCQkJCQkJCQlmZXRjaF9zZXF1ZW5jZV9saXN0KHdy Y29ubiwgcHVibGljYXRpb25zKSk7CisKKwkJCWZvcmVhY2gobGMsIHJlbGF0aW9ucykKIAkJ CXsKIAkJCQlSYW5nZVZhciAgICpydiA9IChSYW5nZVZhciAqKSBsZmlyc3QobGMpOwogCQkJ CU9pZAkJCXJlbGlkOwpAQCAtNzcyLDcgKzc3Niw3IEBAIENyZWF0ZVN1YnNjcmlwdGlvbihQ YXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVN1YnNjcmlwdGlvblN0bXQgKnN0bXQsCiAJCQkJ Q2hlY2tTdWJzY3JpcHRpb25SZWxraW5kKGdldF9yZWxfcmVsa2luZChyZWxpZCksCiAJCQkJ CQkJCQkJIHJ2LT5zY2hlbWFuYW1lLCBydi0+cmVsbmFtZSk7CiAKLQkJCQlBZGRTdWJzY3Jp cHRpb25SZWxTdGF0ZShzdWJpZCwgcmVsaWQsIHRhYmxlX3N0YXRlLAorCQkJCUFkZFN1YnNj cmlwdGlvblJlbFN0YXRlKHN1YmlkLCByZWxpZCwgc3luY19zdGF0ZSwKIAkJCQkJCQkJCQlJ bnZhbGlkWExvZ1JlY1B0cik7CiAJCQl9CiAKQEAgLTc5OCwxMiArODAyLDEyIEBAIENyZWF0 ZVN1YnNjcmlwdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVN1YnNjcmlwdGlvblN0 bXQgKnN0bXQsCiAJCQkJICoKIAkJCQkgKiBOb3RlIHRoYXQgaWYgdGFibGVzIHdlcmUgc3Bl Y2lmaWVkIGJ1dCBjb3B5X2RhdGEgaXMgZmFsc2UKIAkJCQkgKiB0aGVuIGl0IGlzIHNhZmUg dG8gZW5hYmxlIHR3b19waGFzZSB1cC1mcm9udCBiZWNhdXNlIHRob3NlCi0JCQkJICogdGFi bGVzIGFyZSBhbHJlYWR5IGluaXRpYWxseSBpbiBSRUFEWSBzdGF0ZS4gV2hlbiB0aGUKLQkJ CQkgKiBzdWJzY3JpcHRpb24gaGFzIG5vIHRhYmxlcywgd2UgbGVhdmUgdGhlIHR3b3BoYXNl IHN0YXRlIGFzCi0JCQkJICogUEVORElORywgdG8gYWxsb3cgQUxURVIgU1VCU0NSSVBUSU9O IC4uLiBSRUZSRVNICisJCQkJICogcmVsYXRpb25zIGFyZSBhbHJlYWR5IGluaXRpYWxseSBp biBSRUFEWSBzdGF0ZS4gV2hlbiB0aGUKKwkJCQkgKiBzdWJzY3JpcHRpb24gaGFzIG5vIHJl bGF0aW9ucywgd2UgbGVhdmUgdGhlIHR3b3BoYXNlIHN0YXRlCisJCQkJICogYXMgUEVORElO RywgdG8gYWxsb3cgQUxURVIgU1VCU0NSSVBUSU9OIC4uLiBSRUZSRVNICiAJCQkJICogUFVC TElDQVRJT04gdG8gd29yay4KIAkJCQkgKi8KLQkJCQlpZiAob3B0cy50d29waGFzZSAmJiAh b3B0cy5jb3B5X2RhdGEgJiYgdGFibGVzICE9IE5JTCkKKwkJCQlpZiAob3B0cy50d29waGFz ZSAmJiAhb3B0cy5jb3B5X2RhdGEgJiYgcmVsYXRpb25zICE9IE5JTCkKIAkJCQkJdHdvcGhh c2VfZW5hYmxlZCA9IHRydWU7CiAKIAkJCQl3YWxyY3ZfY3JlYXRlX3Nsb3Qod3Jjb25uLCBv cHRzLnNsb3RfbmFtZSwgZmFsc2UsIHR3b3BoYXNlX2VuYWJsZWQsCkBAIC04ODIsOCArODg2 LDEwIEBAIEFsdGVyU3Vic2NyaXB0aW9uX3JlZnJlc2goU3Vic2NyaXB0aW9uICpzdWIsIGJv b2wgY29weV9kYXRhLAogCQlpZiAodmFsaWRhdGVfcHVibGljYXRpb25zKQogCQkJY2hlY2tf cHVibGljYXRpb25zKHdyY29ubiwgdmFsaWRhdGVfcHVibGljYXRpb25zKTsKIAotCQkvKiBH ZXQgdGhlIHRhYmxlIGxpc3QgZnJvbSBwdWJsaXNoZXIuICovCisJCS8qIEdldCB0aGUgbGlz dCBvZiByZWxhdGlvbnMgZnJvbSBwdWJsaXNoZXIuICovCiAJCXB1YnJlbF9uYW1lcyA9IGZl dGNoX3RhYmxlX2xpc3Qod3Jjb25uLCBzdWItPnB1YmxpY2F0aW9ucyk7CisJCXB1YnJlbF9u YW1lcyA9IGxpc3RfY29uY2F0KHB1YnJlbF9uYW1lcywKKwkJCQkJCQkJICAgZmV0Y2hfc2Vx dWVuY2VfbGlzdCh3cmNvbm4sIHN1Yi0+cHVibGljYXRpb25zKSk7CiAKIAkJLyogR2V0IGxv Y2FsIHRhYmxlIGxpc3QuICovCiAJCXN1YnJlbF9zdGF0ZXMgPSBHZXRTdWJzY3JpcHRpb25S ZWxhdGlvbnMoc3ViLT5vaWQsIGZhbHNlKTsKQEAgLTIxNTMsNiArMjE1OSw3NSBAQCBmZXRj aF90YWJsZV9saXN0KFdhbFJlY2VpdmVyQ29ubiAqd3Jjb25uLCBMaXN0ICpwdWJsaWNhdGlv bnMpCiAJcmV0dXJuIHRhYmxlbGlzdDsKIH0KIAorLyoKKyAqIEdldCB0aGUgbGlzdCBvZiBz ZXF1ZW5jZXMgd2hpY2ggYmVsb25nIHRvIHNwZWNpZmllZCBwdWJsaWNhdGlvbnMgb24gdGhl CisgKiBwdWJsaXNoZXIgY29ubmVjdGlvbi4KKyAqLworc3RhdGljIExpc3QgKgorZmV0Y2hf c2VxdWVuY2VfbGlzdChXYWxSZWNlaXZlckNvbm4gKndyY29ubiwgTGlzdCAqcHVibGljYXRp b25zKQoreworCVdhbFJjdkV4ZWNSZXN1bHQgKnJlczsKKwlTdHJpbmdJbmZvRGF0YSBjbWQ7 CisJVHVwbGVUYWJsZVNsb3QgKnNsb3Q7CisJT2lkCQkJdGFibGVSb3dbMl0gPSB7VEVYVE9J RCwgVEVYVE9JRH07CisJTGlzdENlbGwgICAqbGM7CisJYm9vbAkJZmlyc3Q7CisJTGlzdAkg ICAqdGFibGVsaXN0ID0gTklMOworCisJQXNzZXJ0KGxpc3RfbGVuZ3RoKHB1YmxpY2F0aW9u cykgPiAwKTsKKworCWluaXRTdHJpbmdJbmZvKCZjbWQpOworCWFwcGVuZFN0cmluZ0luZm9T dHJpbmcoJmNtZCwgIlNFTEVDVCBESVNUSU5DVCBzLnNjaGVtYW5hbWUsIHMuc2VxdWVuY2Vu YW1lXG4iCisJCQkJCQkgICAiICBGUk9NIHBnX2NhdGFsb2cucGdfcHVibGljYXRpb25fc2Vx dWVuY2VzIHNcbiIKKwkJCQkJCSAgICIgV0hFUkUgcy5wdWJuYW1lIElOICgiKTsKKwlmaXJz dCA9IHRydWU7CisJZm9yZWFjaChsYywgcHVibGljYXRpb25zKQorCXsKKwkJY2hhcgkgICAq cHVibmFtZSA9IHN0clZhbChsZmlyc3QobGMpKTsKKworCQlpZiAoZmlyc3QpCisJCQlmaXJz dCA9IGZhbHNlOworCQllbHNlCisJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZjbWQsICIs ICIpOworCisJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmNtZCwgcXVvdGVfbGl0ZXJhbF9j c3RyKHB1Ym5hbWUpKTsKKwl9CisJYXBwZW5kU3RyaW5nSW5mb0NoYXIoJmNtZCwgJyknKTsK KworCXJlcyA9IHdhbHJjdl9leGVjKHdyY29ubiwgY21kLmRhdGEsIDIsIHRhYmxlUm93KTsK KwlwZnJlZShjbWQuZGF0YSk7CisKKwlpZiAocmVzLT5zdGF0dXMgIT0gV0FMUkNWX09LX1RV UExFUykKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJybXNnKCJjb3VsZCBub3QgcmVjZWl2 ZSBsaXN0IG9mIHJlcGxpY2F0ZWQgc2VxdWVuY2VzIGZyb20gdGhlIHB1Ymxpc2hlcjogJXMi LAorCQkJCQkJcmVzLT5lcnIpKSk7CisKKwkvKiBQcm9jZXNzIHNlcXVlbmNlcy4gKi8KKwlz bG90ID0gTWFrZVNpbmdsZVR1cGxlVGFibGVTbG90KHJlcy0+dHVwbGVkZXNjLCAmVFRTT3Bz TWluaW1hbFR1cGxlKTsKKwl3aGlsZSAodHVwbGVzdG9yZV9nZXR0dXBsZXNsb3QocmVzLT50 dXBsZXN0b3JlLCB0cnVlLCBmYWxzZSwgc2xvdCkpCisJeworCQljaGFyCSAgICpuc3BuYW1l OworCQljaGFyCSAgICpyZWxuYW1lOworCQlib29sCQlpc251bGw7CisJCVJhbmdlVmFyICAg KnJ2OworCisJCW5zcG5hbWUgPSBUZXh0RGF0dW1HZXRDU3RyaW5nKHNsb3RfZ2V0YXR0cihz bG90LCAxLCAmaXNudWxsKSk7CisJCUFzc2VydCghaXNudWxsKTsKKwkJcmVsbmFtZSA9IFRl eHREYXR1bUdldENTdHJpbmcoc2xvdF9nZXRhdHRyKHNsb3QsIDIsICZpc251bGwpKTsKKwkJ QXNzZXJ0KCFpc251bGwpOworCisJCXJ2ID0gbWFrZVJhbmdlVmFyKG5zcG5hbWUsIHJlbG5h bWUsIC0xKTsKKwkJdGFibGVsaXN0ID0gbGFwcGVuZCh0YWJsZWxpc3QsIHJ2KTsKKworCQlF eGVjQ2xlYXJUdXBsZShzbG90KTsKKwl9CisJRXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xv dChzbG90KTsKKworCXdhbHJjdl9jbGVhcl9yZXN1bHQocmVzKTsKKworCXJldHVybiB0YWJs ZWxpc3Q7Cit9CisKIC8qCiAgKiBUaGlzIGlzIHRvIHJlcG9ydCB0aGUgY29ubmVjdGlvbiBm YWlsdXJlIHdoaWxlIGRyb3BwaW5nIHJlcGxpY2F0aW9uIHNsb3RzLgogICogSGVyZSwgd2Ug cmVwb3J0IHRoZSBXQVJOSU5HIGZvciBhbGwgdGFibGVzeW5jIHNsb3RzIHNvIHRoYXQgdXNl ciBjYW4gZHJvcApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JlcGxp Y2F0aW9uLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUmVwbGljYXRpb24uYwppbmRl eCA4MWYyNzA0MmJjNC4uMWQ1NjM5YjQ3ZmMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNSZXBsaWNhdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNSZXBsaWNhdGlvbi5jCkBAIC03NDUsNyArNzQ1LDkgQEAgdm9pZAogQ2hlY2tTdWJzY3Jp cHRpb25SZWxraW5kKGNoYXIgcmVsa2luZCwgY29uc3QgY2hhciAqbnNwbmFtZSwKIAkJCQkJ CSBjb25zdCBjaGFyICpyZWxuYW1lKQogewotCWlmIChyZWxraW5kICE9IFJFTEtJTkRfUkVM QVRJT04gJiYgcmVsa2luZCAhPSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFKQorCWlmIChy ZWxraW5kICE9IFJFTEtJTkRfUkVMQVRJT04gJiYKKwkJcmVsa2luZCAhPSBSRUxLSU5EX1BB UlRJVElPTkVEX1RBQkxFICYmCisJCXJlbGtpbmQgIT0gUkVMS0lORF9TRVFVRU5DRSkKIAkJ ZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX1dST05HX09CSkVDVF9UWVBF KSwKIAkJCQkgZXJybXNnKCJjYW5ub3QgdXNlIHJlbGF0aW9uIFwiJXMuJXNcIiBhcyBsb2dp Y2FsIHJlcGxpY2F0aW9uIHRhcmdldCIsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJz ZXIvZ3JhbS55IGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQppbmRleCA4YzAwYjExOWVj NC4uMzI5ZWI4YzkwOWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkK KysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQpAQCAtNDUyLDcgKzQ1Miw3IEBAIHN0 YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0 ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJCQkJdHJhbnNmb3JtX2VsZW1lbnRfbGlzdCB0 cmFuc2Zvcm1fdHlwZV9saXN0CiAJCQkJVHJpZ2dlclRyYW5zaXRpb25zIFRyaWdnZXJSZWZl cmVuY2luZwogCQkJCXZhY3V1bV9yZWxhdGlvbl9saXN0IG9wdF92YWN1dW1fcmVsYXRpb25f bGlzdAotCQkJCWRyb3Bfb3B0aW9uX2xpc3QgcHViX29ial9saXN0CisJCQkJZHJvcF9vcHRp b25fbGlzdCBwdWJfb2JqX2xpc3QgcHViX29ial90eXBlX2xpc3QKIAogJXR5cGUgPG5vZGU+ CW9wdF9yb3V0aW5lX2JvZHkKICV0eXBlIDxncm91cGNsYXVzZT4gZ3JvdXBfY2xhdXNlCkBA IC01ODYsNiArNTg2LDcgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0 KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKICV0eXBlIDxu b2RlPgl2YXJfdmFsdWUgem9uZV92YWx1ZQogJXR5cGUgPHJvbGVzcGVjPiBhdXRoX2lkZW50 IFJvbGVTcGVjIG9wdF9ncmFudGVkX2J5CiAldHlwZSA8cHVibGljYXRpb25vYmplY3RzcGVj PiBQdWJsaWNhdGlvbk9ialNwZWMKKyV0eXBlIDxub2RlPglwdWJfb2JqX3R5cGUKIAogJXR5 cGUgPGtleXdvcmQ+IHVucmVzZXJ2ZWRfa2V5d29yZCB0eXBlX2Z1bmNfbmFtZV9rZXl3b3Jk CiAldHlwZSA8a2V5d29yZD4gY29sX25hbWVfa2V5d29yZCByZXNlcnZlZF9rZXl3b3JkCkBA IC0xMDQxNCwxMiArMTA0MTUsMTYgQEAgQWx0ZXJPd25lclN0bXQ6IEFMVEVSIEFHR1JFR0FU RSBhZ2dyZWdhdGVfd2l0aF9hcmd0eXBlcyBPV05FUiBUTyBSb2xlU3BlYwogICoKICAqIENS RUFURSBQVUJMSUNBVElPTiBGT1IgQUxMIFRBQkxFUyBbV0lUSCBvcHRpb25zXQogICoKKyAq IENSRUFURSBQVUJMSUNBVElPTiBGT1IgQUxMIFNFUVVFTkNFUyBbV0lUSCBvcHRpb25zXQor ICoKICAqIENSRUFURSBQVUJMSUNBVElPTiBGT1IgcHViX29iaiBbLCAuLi5dIFtXSVRIIG9w dGlvbnNdCiAgKgogICogcHViX29iaiBpcyBvbmUgb2Y6CiAgKgogICoJCVRBQkxFIHRhYmxl IFssIC4uLl0KKyAqCQlTRVFVRU5DRSB0YWJsZSBbLCAuLi5dCiAgKgkJVEFCTEVTIElOIFND SEVNQSBzY2hlbWEgWywgLi4uXQorICoJCVNFUVVFTkNFUyBJTiBTQ0hFTUEgc2NoZW1hIFss IC4uLl0KICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKQEAgLTEwNDMyLDEzICsx MDQzNywxMyBAQCBDcmVhdGVQdWJsaWNhdGlvblN0bXQ6CiAJCQkJCW4tPm9wdGlvbnMgPSAk NDsKIAkJCQkJJCQgPSAoTm9kZSAqKSBuOwogCQkJCX0KLQkJCXwgQ1JFQVRFIFBVQkxJQ0FU SU9OIG5hbWUgRk9SIEFMTCBUQUJMRVMgb3B0X2RlZmluaXRpb24KKwkJCXwgQ1JFQVRFIFBV QkxJQ0FUSU9OIG5hbWUgRk9SIEFMTCBwdWJfb2JqX3R5cGVfbGlzdCBvcHRfZGVmaW5pdGlv bgogCQkJCXsKIAkJCQkJQ3JlYXRlUHVibGljYXRpb25TdG10ICpuID0gbWFrZU5vZGUoQ3Jl YXRlUHVibGljYXRpb25TdG10KTsKIAogCQkJCQluLT5wdWJuYW1lID0gJDM7CiAJCQkJCW4t Pm9wdGlvbnMgPSAkNzsKLQkJCQkJbi0+Zm9yX2FsbF90YWJsZXMgPSB0cnVlOworCQkJCQlu LT5mb3JfYWxsX29iamVjdHMgPSAkNjsKIAkJCQkJJCQgPSAoTm9kZSAqKSBuOwogCQkJCX0K IAkJCXwgQ1JFQVRFIFBVQkxJQ0FUSU9OIG5hbWUgRk9SIHB1Yl9vYmpfbGlzdCBvcHRfZGVm aW5pdGlvbgpAQCAtMTA0ODksNiArMTA0OTQsMjYgQEAgUHVibGljYXRpb25PYmpTcGVjOgog CQkJCQkkJC0+cHVib2JqdHlwZSA9IFBVQkxJQ0FUSU9OT0JKX1RBQkxFU19JTl9DVVJfU0NI RU1BOwogCQkJCQkkJC0+bG9jYXRpb24gPSBANDsKIAkJCQl9CisJCQl8IFNFUVVFTkNFIHJl bGF0aW9uX2V4cHIKKwkJCQl7CisJCQkJCSQkID0gbWFrZU5vZGUoUHVibGljYXRpb25PYmpT cGVjKTsKKwkJCQkJJCQtPnB1Ym9ianR5cGUgPSBQVUJMSUNBVElPTk9CSl9TRVFVRU5DRTsK KwkJCQkJJCQtPnB1YnRhYmxlID0gbWFrZU5vZGUoUHVibGljYXRpb25UYWJsZSk7CisJCQkJ CSQkLT5wdWJ0YWJsZS0+cmVsYXRpb24gPSAkMjsKKwkJCQl9CisJCQl8IFNFUVVFTkNFUyBJ Tl9QIFNDSEVNQSBDb2xJZAorCQkJCXsKKwkJCQkJJCQgPSBtYWtlTm9kZShQdWJsaWNhdGlv bk9ialNwZWMpOworCQkJCQkkJC0+cHVib2JqdHlwZSA9IFBVQkxJQ0FUSU9OT0JKX1NFUVVF TkNFU19JTl9TQ0hFTUE7CisJCQkJCSQkLT5uYW1lID0gJDQ7CisJCQkJCSQkLT5sb2NhdGlv biA9IEA0OworCQkJCX0KKwkJCXwgU0VRVUVOQ0VTIElOX1AgU0NIRU1BIENVUlJFTlRfU0NI RU1BCisJCQkJeworCQkJCQkkJCA9IG1ha2VOb2RlKFB1YmxpY2F0aW9uT2JqU3BlYyk7CisJ CQkJCSQkLT5wdWJvYmp0eXBlID0gUFVCTElDQVRJT05PQkpfU0VRVUVOQ0VTX0lOX0NVUl9T Q0hFTUE7CisJCQkJCSQkLT5sb2NhdGlvbiA9IEA0OworCQkJCX0KIAkJCXwgQ29sSWQgb3B0 X2NvbHVtbl9saXN0IE9wdFdoZXJlQ2xhdXNlCiAJCQkJewogCQkJCQkkJCA9IG1ha2VOb2Rl KFB1YmxpY2F0aW9uT2JqU3BlYyk7CkBAIC0xMDU1MCw2ICsxMDU3NSwxOSBAQCBwdWJfb2Jq X2xpc3Q6CVB1YmxpY2F0aW9uT2JqU3BlYwogCQkJCQl7ICQkID0gbGFwcGVuZCgkMSwgJDMp OyB9CiAJOwogCitwdWJfb2JqX3R5cGU6CVRBQkxFUworCQkJCQl7ICQkID0gKE5vZGUgKikg bWFrZVN0cmluZygidGFibGVzIik7IH0KKwkJCQl8IFNFUVVFTkNFUworCQkJCQl7ICQkID0g KE5vZGUgKikgbWFrZVN0cmluZygic2VxdWVuY2VzIik7IH0KKwk7CisKK3B1Yl9vYmpfdHlw ZV9saXN0OglwdWJfb2JqX3R5cGUKKwkJCQkJeyAkJCA9IGxpc3RfbWFrZTEoJDEpOyB9CisJ CQkJfCBwdWJfb2JqX3R5cGVfbGlzdCAnLCcgcHViX29ial90eXBlCisJCQkJCXsgJCQgPSBs YXBwZW5kKCQxLCAkMyk7IH0KKwk7CisKKwogLyoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAg KgogICogQUxURVIgUFVCTElDQVRJT04gbmFtZSBTRVQgKCBvcHRpb25zICkKQEAgLTEwNTYz LDcgKzEwNjAxLDkgQEAgcHViX29ial9saXN0OglQdWJsaWNhdGlvbk9ialNwZWMKICAqIHB1 Yl9vYmogaXMgb25lIG9mOgogICoKICAqCQlUQUJMRSB0YWJsZV9uYW1lIFssIC4uLl0KKyAq CQlTRVFVRU5DRSB0YWJsZV9uYW1lIFssIC4uLl0KICAqCQlUQUJMRVMgSU4gU0NIRU1BIHNj aGVtYV9uYW1lIFssIC4uLl0KKyAqCQlTRVFVRU5DRVMgSU4gU0NIRU1BIHNjaGVtYV9uYW1l IFssIC4uLl0KICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKQEAgLTE4OTA5LDcg KzE4OTQ5LDggQEAgcHJlcHJvY2Vzc19wdWJvYmpfbGlzdChMaXN0ICpwdWJvYmpzcGVjX2xp c3QsIGNvcmVfeXlzY2FuX3QgeXlzY2FubmVyKQogCQlpZiAocHVib2JqLT5wdWJvYmp0eXBl ID09IFBVQkxJQ0FUSU9OT0JKX0NPTlRJTlVBVElPTikKIAkJCXB1Ym9iai0+cHVib2JqdHlw ZSA9IHByZXZvYmp0eXBlOwogCi0JCWlmIChwdWJvYmotPnB1Ym9ianR5cGUgPT0gUFVCTElD QVRJT05PQkpfVEFCTEUpCisJCWlmIChwdWJvYmotPnB1Ym9ianR5cGUgPT0gUFVCTElDQVRJ T05PQkpfVEFCTEUgfHwKKwkJCXB1Ym9iai0+cHVib2JqdHlwZSA9PSBQVUJMSUNBVElPTk9C Sl9TRVFVRU5DRSkKIAkJewogCQkJLyogcmVsYXRpb24gbmFtZSBvciBwdWJ0YWJsZSBtdXN0 IGJlIHNldCBmb3IgdGhpcyB0eXBlIG9mIG9iamVjdCAqLwogCQkJaWYgKCFwdWJvYmotPm5h bWUgJiYgIXB1Ym9iai0+cHVidGFibGUpCkBAIC0xODk2MCw2ICsxOTAwMSwzMCBAQCBwcmVw cm9jZXNzX3B1Ym9ial9saXN0KExpc3QgKnB1Ym9ianNwZWNfbGlzdCwgY29yZV95eXNjYW5f dCB5eXNjYW5uZXIpCiAJCQkJCQllcnJtc2coImludmFsaWQgc2NoZW1hIG5hbWUiKSwKIAkJ CQkJCXBhcnNlcl9lcnJwb3NpdGlvbihwdWJvYmotPmxvY2F0aW9uKSk7CiAJCX0KKwkJZWxz ZSBpZiAocHVib2JqLT5wdWJvYmp0eXBlID09IFBVQkxJQ0FUSU9OT0JKX1NFUVVFTkNFU19J Tl9TQ0hFTUEgfHwKKwkJCQkgcHVib2JqLT5wdWJvYmp0eXBlID09IFBVQkxJQ0FUSU9OT0JK X1NFUVVFTkNFU19JTl9DVVJfU0NIRU1BKQorCQl7CisJCQkvKiBXSEVSRSBjbGF1c2UgaXMg bm90IGFsbG93ZWQgb24gYSBzY2hlbWEgb2JqZWN0ICovCisJCQlpZiAocHVib2JqLT5wdWJ0 YWJsZSAmJiBwdWJvYmotPnB1YnRhYmxlLT53aGVyZUNsYXVzZSkKKwkJCQllcmVwb3J0KEVS Uk9SLAorCQkJCQkJZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCQllcnJt c2coIldIRVJFIGNsYXVzZSBub3QgYWxsb3dlZCBmb3Igc2NoZW1hIiksCisJCQkJCQlwYXJz ZXJfZXJycG9zaXRpb24ocHVib2JqLT5sb2NhdGlvbikpOworCisJCQkvKgorCQkJICogV2Ug Y2FuIGRpc3Rpbmd1aXNoIGJldHdlZW4gdGhlIGRpZmZlcmVudCB0eXBlIG9mIHNjaGVtYQor CQkJICogb2JqZWN0cyBiYXNlZCBvbiB3aGV0aGVyIG5hbWUgYW5kIHB1YnRhYmxlIGlzIHNl dC4KKwkJCSAqLworCQkJaWYgKHB1Ym9iai0+bmFtZSkKKwkJCQlwdWJvYmotPnB1Ym9ianR5 cGUgPSBQVUJMSUNBVElPTk9CSl9TRVFVRU5DRVNfSU5fU0NIRU1BOworCQkJZWxzZSBpZiAo IXB1Ym9iai0+bmFtZSAmJiAhcHVib2JqLT5wdWJ0YWJsZSkKKwkJCQlwdWJvYmotPnB1Ym9i anR5cGUgPSBQVUJMSUNBVElPTk9CSl9TRVFVRU5DRVNfSU5fQ1VSX1NDSEVNQTsKKwkJCWVs c2UKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJZXJyY29kZShFUlJDT0RFX1NZTlRBWF9F UlJPUiksCisJCQkJCQllcnJtc2coImludmFsaWQgc2NoZW1hIG5hbWUgYXQgb3IgbmVhciIp LAorCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHB1Ym9iai0+bG9jYXRpb24pKTsKKwkJfQog CiAJCXByZXZvYmp0eXBlID0gcHVib2JqLT5wdWJvYmp0eXBlOwogCX0KZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcHJvdG8uYyBiL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL2xvZ2ljYWwvcHJvdG8uYwppbmRleCBhYTQ3MWRjY2RmMy4uOWQ0ZmJl OTJjZTAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcHJv dG8uYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Byb3RvLmMKQEAg LTY2Myw2ICs2NjMsNTkgQEAgbG9naWNhbHJlcF93cml0ZV9tZXNzYWdlKFN0cmluZ0luZm8g b3V0LCBUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24sCiAJcHFfc2VuZGJ5dGVz KG91dCwgbWVzc2FnZSwgc3opOwogfQogCisvKgorICogV3JpdGUgU0VRVUVOQ0UgdG8gc3Ry ZWFtCisgKi8KK3ZvaWQKK2xvZ2ljYWxyZXBfd3JpdGVfc2VxdWVuY2UoU3RyaW5nSW5mbyBv dXQsIFJlbGF0aW9uIHJlbCwgVHJhbnNhY3Rpb25JZCB4aWQsCisJCQkJCQkgIFhMb2dSZWNQ dHIgbHNuLCBib29sIHRyYW5zYWN0aW9uYWwsCisJCQkJCQkgIGludDY0IHZhbHVlKQorewor CXVpbnQ4CQlmbGFncyA9IDA7CisKKwlwcV9zZW5kYnl0ZShvdXQsIExPR0lDQUxfUkVQX01T R19TRVFVRU5DRSk7CisKKwkvKiB0cmFuc2FjdGlvbiBJRCAoaWYgbm90IHZhbGlkLCB3ZSdy ZSBub3Qgc3RyZWFtaW5nKSAqLworCWlmIChUcmFuc2FjdGlvbklkSXNWYWxpZCh4aWQpKQor CQlwcV9zZW5kaW50MzIob3V0LCB4aWQpOworCisJcHFfc2VuZGludDgob3V0LCBmbGFncyk7 CisKKwkvKiB1c2UgT2lkIGFzIHJlbGF0aW9uIGlkZW50aWZpZXIgKi8KKwlwcV9zZW5kaW50 MzIob3V0LCBSZWxhdGlvbkdldFJlbGlkKHJlbCkpOworCisJLyogd3JpdGUgdGhlIExTTiBv ZiB0aGUgc2VxdWVuY2UgY2hhbmdlICovCisJcHFfc2VuZGludDY0KG91dCwgbHNuKTsKKwor CS8qIHdyaXRlIHNlcXVlbmNlIGluZm8gKi8KKwlwcV9zZW5kaW50OChvdXQsIHRyYW5zYWN0 aW9uYWwpOworCXBxX3NlbmRpbnQ2NChvdXQsIHZhbHVlKTsKK30KKworLyoKKyAqIFJlYWQg U0VRVUVOQ0UgZnJvbSB0aGUgc3RyZWFtLgorICovCitMb2dpY2FsUmVwUmVsSWQKK2xvZ2lj YWxyZXBfcmVhZF9zZXF1ZW5jZShTdHJpbmdJbmZvIGluLCBMb2dpY2FsUmVwU2VxdWVuY2Ug KnNlcWRhdGEpCit7CisJTG9naWNhbFJlcFJlbElkIHJlbGlkOworCisJLyogWFhYIHNraXBw aW5nIGZsYWdzICovCisJcHFfZ2V0bXNnaW50KGluLCAxKTsKKworCS8qIHJlYWQgdGhlIHJl bGF0aW9uIGlkICovCisJcmVsaWQgPSBwcV9nZXRtc2dpbnQoaW4sIDQpOworCisJLyogcmVh ZCB0aGUgTFNOIG9mIHRoZSBzZXF1ZW5jZSBjaGFuZ2UgKi8KKwlzZXFkYXRhLT5sc24gPSBw cV9nZXRtc2dpbnQ2NChpbik7CisKKwkvKiBpbmZvIGFib3V0IHRoZSBzZXF1ZW5jZSBjaGFu Z2UgKi8KKwlzZXFkYXRhLT50cmFuc2FjdGlvbmFsID0gcHFfZ2V0bXNnaW50KGluLCAxKTsK KwlzZXFkYXRhLT52YWx1ZSA9IHBxX2dldG1zZ2ludDY0KGluKTsKKworCXJldHVybiByZWxp ZDsKK30KKwogLyoKICAqIFdyaXRlIHJlbGF0aW9uIGRlc2NyaXB0aW9uIHRvIHRoZSBvdXRw dXQgc3RyZWFtLgogICovCkBAIC0xMjU4LDYgKzEzMTEsOCBAQCBsb2dpY2FscmVwX21lc3Nh Z2VfdHlwZShMb2dpY2FsUmVwTXNnVHlwZSBhY3Rpb24pCiAJCQlyZXR1cm4gIlNUUkVBTSBB Qk9SVCI7CiAJCWNhc2UgTE9HSUNBTF9SRVBfTVNHX1NUUkVBTV9QUkVQQVJFOgogCQkJcmV0 dXJuICJTVFJFQU0gUFJFUEFSRSI7CisJCWNhc2UgTE9HSUNBTF9SRVBfTVNHX1NFUVVFTkNF OgorCQkJcmV0dXJuICJTRVFVRU5DRSI7CiAJfQogCiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMgYi9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jCmluZGV4IGRmM2M0MmViNWRlLi5mMTMx MmIyZjY5YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90 YWJsZXN5bmMuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxl c3luYy5jCkBAIC0xMDAsNiArMTAwLDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX3N1YnNj cmlwdGlvbl9yZWwuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKICNpbmNsdWRl ICJjb21tYW5kcy9jb3B5LmgiCisjaW5jbHVkZSAiY29tbWFuZHMvc2VxdWVuY2UuaCIKICNp bmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJub2Rlcy9tYWtlZnVuY3MuaCIKICNp bmNsdWRlICJwYXJzZXIvcGFyc2VfcmVsYXRpb24uaCIKQEAgLTExOCw2ICsxMTksNyBAQAog I2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCiAjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hl LmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKKyNpbmNsdWRlICJ1dGlscy9wZ19s c24uaCIKICNpbmNsdWRlICJ1dGlscy9ybHMuaCIKICNpbmNsdWRlICJ1dGlscy9zbmFwbWdy LmgiCiAjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKQEAgLTEyMjksNiArMTIzMSwxMDYg QEAgY29weV90YWJsZShSZWxhdGlvbiByZWwpCiAJbG9naWNhbHJlcF9yZWxfY2xvc2UocmVs bWFwZW50cnksIE5vTG9jayk7CiB9CiAKKy8qCisgKiBGZXRjaCBzZXF1ZW5jZSBkYXRhIChj dXJyZW50IHN0YXRlKSBmcm9tIHRoZSByZW1vdGUgbm9kZSwgaW5jbHVkaW5nIHRoZQorICog cGFnZSBMU04uCisgKi8KK3N0YXRpYyBpbnQ2NAorZmV0Y2hfc2VxdWVuY2VfZGF0YShPaWQg cmVtb3RlaWQsIFhMb2dSZWNQdHIgKmxzbikKK3sKKwlXYWxSY3ZFeGVjUmVzdWx0ICpyZXM7 CisJU3RyaW5nSW5mb0RhdGEgY21kOworCVR1cGxlVGFibGVTbG90ICpzbG90OworCU9pZAkJ CXRhYmxlUm93WzJdID0ge0lOVDhPSUQsIExTTk9JRH07CisJaW50NjQJCXZhbHVlID0gKERh dHVtKSAwOworCisJaW5pdFN0cmluZ0luZm8oJmNtZCk7CisJYXBwZW5kU3RyaW5nSW5mbygm Y21kLCAiU0VMRUNUIChsYXN0X3ZhbHVlICsgbG9nX2NudCksIHBhZ2VfbHNuICIKKwkJCQkJ ICJGUk9NIHBnX3NlcXVlbmNlX3N0YXRlKCVkKSIsIHJlbW90ZWlkKTsKKworCXJlcyA9IHdh bHJjdl9leGVjKExvZ1JlcFdvcmtlcldhbFJjdkNvbm4sIGNtZC5kYXRhLCAyLCB0YWJsZVJv dyk7CisJcGZyZWUoY21kLmRhdGEpOworCisJaWYgKHJlcy0+c3RhdHVzICE9IFdBTFJDVl9P S19UVVBMRVMpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycm1zZygiY291bGQgbm90IHJl Y2VpdmUgbGlzdCBvZiByZXBsaWNhdGVkIHRhYmxlcyBmcm9tIHRoZSBwdWJsaXNoZXI6ICVz IiwKKwkJCQkJCXJlcy0+ZXJyKSkpOworCisJLyogUHJvY2VzcyB0aGUgc2VxdWVuY2UuICov CisJc2xvdCA9IE1ha2VTaW5nbGVUdXBsZVRhYmxlU2xvdChyZXMtPnR1cGxlZGVzYywgJlRU U09wc01pbmltYWxUdXBsZSk7CisJd2hpbGUgKHR1cGxlc3RvcmVfZ2V0dHVwbGVzbG90KHJl cy0+dHVwbGVzdG9yZSwgdHJ1ZSwgZmFsc2UsIHNsb3QpKQorCXsKKwkJYm9vbAkJaXNudWxs OworCisJCXZhbHVlID0gRGF0dW1HZXRJbnQ2NChzbG90X2dldGF0dHIoc2xvdCwgMSwgJmlz bnVsbCkpOworCQlBc3NlcnQoIWlzbnVsbCk7CisKKwkJKmxzbiA9IERhdHVtR2V0SW50NjQo c2xvdF9nZXRhdHRyKHNsb3QsIDIsICZpc251bGwpKTsKKwkJQXNzZXJ0KCFpc251bGwpOwor CX0KKworCUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3Qoc2xvdCk7CisKKwl3YWxyY3Zf Y2xlYXJfcmVzdWx0KHJlcyk7CisKKwlyZXR1cm4gdmFsdWU7Cit9CisKKy8qCisgKiBDb3B5 IGV4aXN0aW5nIGRhdGEgb2YgYSBzZXF1ZW5jZSBmcm9tIHB1Ymxpc2hlci4KKyAqCisgKiBD YWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIGxvY2tpbmcgdGhlIGxvY2FsIHJlbGF0aW9uLgor ICovCitzdGF0aWMgWExvZ1JlY1B0cgorY29weV9zZXF1ZW5jZShSZWxhdGlvbiByZWwpCit7 CisJTG9naWNhbFJlcFJlbE1hcEVudHJ5ICpyZWxtYXBlbnRyeTsKKwlMb2dpY2FsUmVwUmVs YXRpb24gbHJlbDsKKwlMaXN0CSAgICpxdWFsID0gTklMOworCVN0cmluZ0luZm9EYXRhIGNt ZDsKKwlpbnQ2NAkJc2VxdWVuY2VfdmFsdWU7CisJWExvZ1JlY1B0cglsc24gPSBJbnZhbGlk WExvZ1JlY1B0cjsKKworCS8qIEdldCB0aGUgcHVibGlzaGVyIHJlbGF0aW9uIGluZm8uICov CisJZmV0Y2hfcmVtb3RlX3RhYmxlX2luZm8oZ2V0X25hbWVzcGFjZV9uYW1lKFJlbGF0aW9u R2V0TmFtZXNwYWNlKHJlbCkpLAorCQkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJl bCksICZscmVsLCAmcXVhbCk7CisKKwkvKiBzZXF1ZW5jZXMgZG9uJ3QgaGF2ZSByb3cgZmls dGVycyAqLworCUFzc2VydCghcXVhbCk7CisKKwkvKiBQdXQgdGhlIHJlbGF0aW9uIGludG8g cmVsbWFwLiAqLworCWxvZ2ljYWxyZXBfcmVsbWFwX3VwZGF0ZSgmbHJlbCk7CisKKwkvKiBN YXAgdGhlIHB1Ymxpc2hlciByZWxhdGlvbiB0byBsb2NhbCBvbmUuICovCisJcmVsbWFwZW50 cnkgPSBsb2dpY2FscmVwX3JlbF9vcGVuKGxyZWwucmVtb3RlaWQsIE5vTG9jayk7CisJQXNz ZXJ0KHJlbCA9PSByZWxtYXBlbnRyeS0+bG9jYWxyZWwpOworCisJLyogU3RhcnQgY29weSBv biB0aGUgcHVibGlzaGVyLiAqLworCWluaXRTdHJpbmdJbmZvKCZjbWQpOworCisJQXNzZXJ0 KGxyZWwucmVsa2luZCA9PSBSRUxLSU5EX1NFUVVFTkNFKTsKKworCS8qCisJICogTG9naWNh bCByZXBsaWNhdGlvbiBvZiBzZXF1ZW5jZXMgaXMgYmFzZWQgb24gZGVjb2RpbmcgV0FMIHJl Y29yZHMsCisJICogZGVzY3JpYmluZyB0aGUgIm5leHQiIHN0YXRlIG9mIHRoZSBzZXF1ZW5j ZSB0aGUgY3VycmVudCBzdGF0ZSBpbiB0aGUKKwkgKiByZWxmaWxlbm9kZSBpcyB5ZXQgdG8g cmVhY2guIEJ1dCBkdXJpbmcgdGhlIGluaXRpYWwgc3luYyB3ZSByZWFkIHRoZQorCSAqIGN1 cnJlbnQgc3RhdGUsIHNvIHdlIG5lZWQgdG8gcmVjb25zdHJ1Y3QgdGhlIFdBTCByZWNvcmQg bG9nZ2VkIHdoZW4gd2UKKwkgKiBzdGFydGVkIHRoZSBjdXJyZW50IGJhdGNoIG9mIHNlcXVl bmNlIHZhbHVlcy4KKwkgKgorCSAqIE90aGVyd2lzZSB3ZSBtaWdodCBnZXQgZHVwbGljYXRl IHZhbHVlcyAob24gc3Vic2NyaWJlcikgaWYgd2UgZmFpbGVkCisJICogb3ZlciByaWdodCBh ZnRlciB0aGUgc3luYy4KKwkgKi8KKwlzZXF1ZW5jZV92YWx1ZSA9IGZldGNoX3NlcXVlbmNl X2RhdGEobHJlbC5yZW1vdGVpZCwgJmxzbik7CisKKwkvKiB0YWJsZXN5bmMgc2V0cyB0aGUg c2VxdWVuY2VzIGluIG5vbi10cmFuc2FjdGlvbmFsIHdheSAqLworCVNldFNlcXVlbmNlKFJl bGF0aW9uR2V0UmVsaWQocmVsKSwgZmFsc2UsIHNlcXVlbmNlX3ZhbHVlKTsKKworCWxvZ2lj YWxyZXBfcmVsX2Nsb3NlKHJlbG1hcGVudHJ5LCBOb0xvY2spOworCisJLyogcmV0dXJuIHRo ZSBMU04gd2hlbiB0aGUgc2VxdWVuY2Ugc3RhdGUgd2FzIHNldCAqLworCXJldHVybiBsc247 Cit9CisKIC8qCiAgKiBEZXRlcm1pbmUgdGhlIHRhYmxlc3luYyBzbG90IG5hbWUuCiAgKgpA QCAtMTI3Nyw2ICsxMzc5LDcgQEAgTG9naWNhbFJlcFN5bmNUYWJsZVN0YXJ0KFhMb2dSZWNQ dHIgKm9yaWdpbl9zdGFydHBvcykKIAlVc2VyQ29udGV4dCB1Y3h0OwogCWJvb2wJCW11c3Rf dXNlX3Bhc3N3b3JkOwogCWJvb2wJCXJ1bl9hc19vd25lcjsKKwlYTG9nUmVjUHRyCXNlcXVl bmNlX2xzbiA9IEludmFsaWRYTG9nUmVjUHRyOwogCiAJLyogQ2hlY2sgdGhlIHN0YXRlIG9m IHRoZSB0YWJsZSBzeW5jaHJvbml6YXRpb24uICovCiAJU3RhcnRUcmFuc2FjdGlvbkNvbW1h bmQoKTsKQEAgLTE0ODgsMTAgKzE1OTEsMzQgQEAgTG9naWNhbFJlcFN5bmNUYWJsZVN0YXJ0 KFhMb2dSZWNQdHIgKm9yaWdpbl9zdGFydHBvcykKIAkJCQkJCUdldFVzZXJOYW1lRnJvbUlk KEdldFVzZXJJZCgpLCB0cnVlKSwKIAkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJl bCkpKSk7CiAKLQkvKiBOb3cgZG8gdGhlIGluaXRpYWwgZGF0YSBjb3B5ICovCi0JUHVzaEFj dGl2ZVNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7Ci0JY29weV90YWJsZShy ZWwpOwotCVBvcEFjdGl2ZVNuYXBzaG90KCk7CisJLyogRG8gdGhlIHJpZ2h0IGFjdGlvbiBk ZXBlbmRpbmcgb24gdGhlIHJlbGF0aW9uIGtpbmQuICovCisJaWYgKGdldF9yZWxfcmVsa2lu ZChSZWxhdGlvbkdldFJlbGlkKHJlbCkpID09IFJFTEtJTkRfU0VRVUVOQ0UpCisJeworCQkv KiBOb3cgZG8gdGhlIGluaXRpYWwgc2VxdWVuY2UgY29weSAqLworCQlQdXNoQWN0aXZlU25h cHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKKwkJc2VxdWVuY2VfbHNuID0gY29w eV9zZXF1ZW5jZShyZWwpOworCQlQb3BBY3RpdmVTbmFwc2hvdCgpOworCisJCS8qCisJCSAq IFNlcXVlbmNlcyBhcmUgbm90IGNvbnNpc3RlbnQgKGluIHRoZSBNVkNDIHNlbnNlKSB3aXRo IHJlc3BlY3QgdG8KKwkJICogdGhlIHJlcGxpY2F0aW9uIHNsb3QsIHNvIHRoZSBjb3B5IG1p Z2h0IGhhdmUgcmVhZCBhIG1vcmUgcmVjZW50CisJCSAqIHN0YXRlIHRoYW4gb3JpZ2luX3N0 YXJ0cG9zLiBUaGUgc2VxdWVuY2VfbHNuIGNvbWVzIGZyb20gcGFnZSBMU04KKwkJICogKHdo aWNoIGlzIExTTiBvZiB0aGUgbGFzdCBzZXF1ZW5jZSBjaGFuZ2UpLCBzbyB0aGF0J3MgdGhl IHJpZ2h0CisJCSAqIHBvc2l0aW9uIHdoZXJlIHRvIHN0YXJ0IHdpdGggdGhlIGNhdGNodXAg YXBwbHkuCisJCSAqCisJCSAqIEl0IG1pZ2h0IGJlIGJlZm9yZSB0aGUgc2xvdCwgdGhvdWdo IChpZiB0aGUgc2VxdWVuY2Ugd2FzIG5vdCB1c2VkCisJCSAqIHNpbmNlIGJldHdlZW4gdGhl IHNsb3QgY3JlYXRpb24gYW5kIGNvcHkpLCBzbyBtYWtlIHN1cmUgdGhlCisJCSAqIHBvc2l0 aW9uIGRvZXMgbm90IG1vdmUgYmFja3dhcmRzLgorCQkgKi8KKwkJKm9yaWdpbl9zdGFydHBv cyA9IE1heCgqb3JpZ2luX3N0YXJ0cG9zLCBzZXF1ZW5jZV9sc24pOworCX0KKwllbHNlCisJ eworCQkvKiBOb3cgZG8gdGhlIGluaXRpYWwgZGF0YSBjb3B5ICovCisJCVB1c2hBY3RpdmVT bmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOworCQljb3B5X3RhYmxlKHJlbCk7 CisJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CisJfQogCiAJcmVzID0gd2FscmN2X2V4ZWMoTG9n UmVwV29ya2VyV2FsUmN2Q29ubiwgIkNPTU1JVCIsIDAsIE5VTEwpOwogCWlmIChyZXMtPnN0 YXR1cyAhPSBXQUxSQ1ZfT0tfQ09NTUFORCkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL3dvcmtlci5jCmluZGV4IDIxYWJmMzRlZjdhLi5hNWI1MmY2MGE1YSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYworKysgYi9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCkBAIC0xNTQsNiArMTU0 LDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oIgogI2luY2x1ZGUg ImNhdGFsb2cvcGdfc3Vic2NyaXB0aW9uX3JlbC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdf dGFibGVzcGFjZS5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3NlcXVlbmNlLmgiCiAjaW5jbHVk ZSAiY29tbWFuZHMvdGFibGVjbWRzLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvdGFibGVzcGFj ZS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3RyaWdnZXIuaCIKQEAgLTE0MzcsNiArMTQzOCw5 NyBAQCBhcHBseV9oYW5kbGVfb3JpZ2luKFN0cmluZ0luZm8gcykKIAkJCQkgZXJybXNnX2lu dGVybmFsKCJPUklHSU4gbWVzc2FnZSBzZW50IG91dCBvZiBvcmRlciIpKSk7CiB9CiAKKy8q CisgKiBIYW5kbGUgU0VRVUVOQ0UgbWVzc2FnZS4KKyAqLworc3RhdGljIHZvaWQKK2FwcGx5 X2hhbmRsZV9zZXF1ZW5jZShTdHJpbmdJbmZvIHMpCit7CisJTG9naWNhbFJlcFNlcXVlbmNl IHNlcTsKKwlMb2dpY2FsUmVwUmVsTWFwRW50cnkgKnJlbDsKKwlPaWQJCQlyZWxpZDsKKwli b29sCQlhbHJlYWR5X2luX3RyYW5zYWN0aW9uIFBHX1VTRURfRk9SX0FTU0VSVFNfT05MWTsK KworCWlmIChpc19za2lwcGluZ19jaGFuZ2VzKCkgfHwKKwkJaGFuZGxlX3N0cmVhbWVkX3Ry YW5zYWN0aW9uKExPR0lDQUxfUkVQX01TR19TRVFVRU5DRSwgcykpCisJCXJldHVybjsKKwor CS8qCisJICogUmVtZW1iZXIgaWYgd2UncmUgYWxyZWFkeSBpbiB0cmFuc2FjdGlvbiAoYmVn aW5fcmVwbGljYXRpb24gc3RlcCBzdGFydHMKKwkgKiBhIHRyYW5zYWN0aW9uLCBzbyB3ZSBj YW4ndCB1c2UgSXNUcmFuc2FjdGlvblN0YXRlKCkgYWZ0ZXIgdGhhdCBwb2ludC4KKwkgKi8K KwlhbHJlYWR5X2luX3RyYW5zYWN0aW9uID0gSXNUcmFuc2FjdGlvblN0YXRlKCk7CisKKwkv KgorCSAqIE1ha2Ugc3VyZSB3ZSdyZSBpbiBhIHRyYW5zYWN0aW9uIChuZWVkZWQgYnkgU2V0 U2VxdWVuY2UpLiBGb3IKKwkgKiBub24tdHJhbnNhY3Rpb25hbCB1cGRhdGVzIHdlJ3JlIGd1 YXJhbnRlZWQgdG8gc3RhcnQgYSBuZXcgb25lLCBhbmQKKwkgKiB3ZSdsbCBjb21taXQgaXQg YXQgdGhlIGVuZC4KKwkgKi8KKwliZWdpbl9yZXBsaWNhdGlvbl9zdGVwKCk7CisKKwlyZWxp ZCA9IGxvZ2ljYWxyZXBfcmVhZF9zZXF1ZW5jZShzLCAmc2VxKTsKKworCS8qCisJICogTm9u LXRyYW5zYWN0aW9uYWwgc2VxdWVuY2UgdXBkYXRlcyBzaG91bGQgbm90IGJlIHBhcnQgb2Yg YSByZW1vdGUKKwkgKiB0cmFuc2FjdGlvbi4gVGhlcmUgc2hvdWxkIG5vdCBiZSBhbnkgcnVu bmluZyB0cmFuc2FjdGlvbi4KKwkgKi8KKwlBc3NlcnQoKCFzZXEudHJhbnNhY3Rpb25hbCkg fHwgaW5fcmVtb3RlX3RyYW5zYWN0aW9uKTsKKwlBc3NlcnQoISghc2VxLnRyYW5zYWN0aW9u YWwgJiYgaW5fcmVtb3RlX3RyYW5zYWN0aW9uKSk7CisJQXNzZXJ0KCEoIXNlcS50cmFuc2Fj dGlvbmFsICYmIGFscmVhZHlfaW5fdHJhbnNhY3Rpb24pKTsKKworCS8qIGxvY2sgdGhlIHNl cXVlbmNlIGluIEFjY2Vzc0V4Y2x1c2l2ZUxvY2ssIGFzIGV4cGVjdGVkIGJ5IFNldFNlcXVl bmNlICovCisJcmVsID0gbG9naWNhbHJlcF9yZWxfb3BlbihyZWxpZCwgQWNjZXNzRXhjbHVz aXZlTG9jayk7CisJaWYgKCFzaG91bGRfYXBwbHlfY2hhbmdlc19mb3JfcmVsKHJlbCkpCisJ eworCQkvKgorCQkgKiBUaGUgcmVsYXRpb24gY2FuJ3QgYmVjb21lIGludGVyZXN0aW5nIGlu IHRoZSBtaWRkbGUgb2YgdGhlCisJCSAqIHRyYW5zYWN0aW9uIHNvIGl0J3Mgc2FmZSB0byB1 bmxvY2sgaXQuCisJCSAqLworCQlsb2dpY2FscmVwX3JlbF9jbG9zZShyZWwsIEFjY2Vzc0V4 Y2x1c2l2ZUxvY2spOworCQllbmRfcmVwbGljYXRpb25fc3RlcCgpOworCisJCS8qCisJCSAq IENvbW1pdCB0aGUgcGVyLXN0cmVhbSB0cmFuc2FjdGlvbiAod2Ugb25seSBkbyB0aGlzIHdo ZW4gbm90IGluCisJCSAqIHJlbW90ZSB0cmFuc2FjdGlvbiwgaS5lLiBmb3Igbm9uLXRyYW5z YWN0aW9uYWwgc2VxdWVuY2UgdXBkYXRlcy4pCisJCSAqLworCQlpZiAoIWluX3JlbW90ZV90 cmFuc2FjdGlvbikKKwkJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCisJCXJldHVy bjsKKwl9CisKKwkvKgorCSAqIGFwcGx5IHRoZSBzZXF1ZW5jZSBjaGFuZ2UKKwkgKgorCSAq IFhYWCBXZSBkb24ndCBuZWVkIHRvIHJlY29uc3RydWN0IHRoZSB2YWx1ZSBmcm9tIGxhc3Rf dmFsdWUsIGxvZ19jbnQKKwkgKiBldGMuIGJlY2F1c2UgdGhhdCBoYXBwZW5zIG9uIHRoZSBw dWJsaXNoZXIuCisJICovCisJU2V0U2VxdWVuY2UocmVsLT5sb2NhbHJlbG9pZCwgc2VxLnRy YW5zYWN0aW9uYWwsIHNlcS52YWx1ZSk7CisKKwlsb2dpY2FscmVwX3JlbF9jbG9zZShyZWws IE5vTG9jayk7CisKKwllbmRfcmVwbGljYXRpb25fc3RlcCgpOworCisJLyoKKwkgKiBDb21t aXQgdGhlIHBlci1zdHJlYW0gdHJhbnNhY3Rpb24gKHdlIG9ubHkgZG8gdGhpcyB3aGVuIG5v dCBpbiByZW1vdGUKKwkgKiB0cmFuc2FjdGlvbiwgaS5lLiBmb3Igbm9uLXRyYW5zYWN0aW9u YWwgc2VxdWVuY2UgdXBkYXRlcy4pCisJICovCisJaWYgKCFpbl9yZW1vdGVfdHJhbnNhY3Rp b24pCisJeworCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKworCQkvKgorCQkgKiBV cGRhdGUgb3JpZ2luIHN0YXRlIHNvIHdlIGRvbid0IHRyeSBhcHBseWluZyB0aGlzIHNlcXVl bmNlIGNoYW5nZQorCQkgKiBpbiBjYXNlIG9mIGNyYXNoLiBXZSBvbmx5IGRvIHRoaXMgZm9y IG5vbi10cmFzYWN0aW9uYWwgY2hhbmdlcywKKwkJICogdGhhdCBhcmUgcmVwbGF5ZWQgZGly ZWN0bHkuCisJCSAqCisJCSAqIFhYWCBXZSBkb24ndCBoYXZlIHJlcGxvcmlnaW5fc2Vzc2lv bl9vcmlnaW5fdGltZXN0YW1wLCBidXQgd2UgY2FuCisJCSAqIGp1c3QgbGVhdmUgdGhhdCBz ZXQgdG8gMC4KKwkJICovCisJCXJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW5fbHNuID0gc2Vx LmxzbjsKKwl9Cit9CisKIC8qCiAgKiBJbml0aWFsaXplIGZpbGVzZXQgKGlmIG5vdCBhbHJl YWR5IGRvbmUpLgogICoKQEAgLTMzNDcsNiArMzQzOSwxMCBAQCBhcHBseV9kaXNwYXRjaChT dHJpbmdJbmZvIHMpCiAJCQkgKi8KIAkJCWJyZWFrOwogCisJCWNhc2UgTE9HSUNBTF9SRVBf TVNHX1NFUVVFTkNFOgorCQkJYXBwbHlfaGFuZGxlX3NlcXVlbmNlKHMpOworCQkJcmV0dXJu OworCiAJCWNhc2UgTE9HSUNBTF9SRVBfTVNHX1NUUkVBTV9TVEFSVDoKIAkJCWFwcGx5X2hh bmRsZV9zdHJlYW1fc3RhcnQocyk7CiAJCQlicmVhazsKQEAgLTQzNjUsNiArNDQ2MSw3IEBA IHNldF9zdHJlYW1fb3B0aW9ucyhXYWxSY3ZTdHJlYW1PcHRpb25zICpvcHRpb25zLAogCiAJ c2VydmVyX3ZlcnNpb24gPSB3YWxyY3Zfc2VydmVyX3ZlcnNpb24oTG9nUmVwV29ya2VyV2Fs UmN2Q29ubik7CiAJb3B0aW9ucy0+cHJvdG8ubG9naWNhbC5wcm90b192ZXJzaW9uID0KKwkJ c2VydmVyX3ZlcnNpb24gPj0gMTcwMDAwID8gTE9HSUNBTFJFUF9QUk9UT19TRVFVRU5DRVNf VkVSU0lPTl9OVU0gOgogCQlzZXJ2ZXJfdmVyc2lvbiA+PSAxNjAwMDAgPyBMT0dJQ0FMUkVQ X1BST1RPX1NUUkVBTV9QQVJBTExFTF9WRVJTSU9OX05VTSA6CiAJCXNlcnZlcl92ZXJzaW9u ID49IDE1MDAwMCA/IExPR0lDQUxSRVBfUFJPVE9fVFdPUEhBU0VfVkVSU0lPTl9OVU0gOgog CQlzZXJ2ZXJfdmVyc2lvbiA+PSAxNDAwMDAgPyBMT0dJQ0FMUkVQX1BST1RPX1NUUkVBTV9W RVJTSU9OX05VTSA6CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291 dHB1dC9wZ291dHB1dC5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdv dXRwdXQuYwppbmRleCBmOWVkMTA4M2RmNy4uNTA4MmFiMWY0OTIgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMKKysrIGIvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYwpAQCAtMTUsNiArMTUsNyBA QAogI2luY2x1ZGUgImFjY2Vzcy90dXBjb252ZXJ0LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9w YXJ0aXRpb24uaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmgiCisjaW5j bHVkZSAiY2F0YWxvZy9wZ19wdWJsaWNhdGlvbl9uYW1lc3BhY2UuaCIKICNpbmNsdWRlICJj YXRhbG9nL3BnX3B1YmxpY2F0aW9uX3JlbC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfc3Vi c2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvZGVmcmVtLmgiCkBAIC01NSw2ICs1 NiwxMCBAQCBzdGF0aWMgdm9pZCBwZ291dHB1dF9tZXNzYWdlKExvZ2ljYWxEZWNvZGluZ0Nv bnRleHQgKmN0eCwKIAkJCQkJCQkgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLCBYTG9nUmVjUHRy IG1lc3NhZ2VfbHNuLAogCQkJCQkJCSBib29sIHRyYW5zYWN0aW9uYWwsIGNvbnN0IGNoYXIg KnByZWZpeCwKIAkJCQkJCQkgU2l6ZSBzeiwgY29uc3QgY2hhciAqbWVzc2FnZSk7CitzdGF0 aWMgdm9pZCBwZ291dHB1dF9zZXF1ZW5jZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgs CisJCQkJCQkJICBSZW9yZGVyQnVmZmVyVFhOICp0eG4sIFhMb2dSZWNQdHIgc2VxdWVuY2Vf bHNuLAorCQkJCQkJCSAgUmVsYXRpb24gcmVsYXRpb24sIGJvb2wgdHJhbnNhY3Rpb25hbCwK KwkJCQkJCQkgIGludDY0IHZhbHVlKTsKIHN0YXRpYyBib29sIHBnb3V0cHV0X29yaWdpbl9m aWx0ZXIoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LAogCQkJCQkJCQkgICBSZXBPcmln aW5JZCBvcmlnaW5faWQpOwogc3RhdGljIHZvaWQgcGdvdXRwdXRfYmVnaW5fcHJlcGFyZV90 eG4oTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LApAQCAtMjUyLDYgKzI1Nyw3IEBAIF9Q R19vdXRwdXRfcGx1Z2luX2luaXQoT3V0cHV0UGx1Z2luQ2FsbGJhY2tzICpjYikKIAljYi0+ Y2hhbmdlX2NiID0gcGdvdXRwdXRfY2hhbmdlOwogCWNiLT50cnVuY2F0ZV9jYiA9IHBnb3V0 cHV0X3RydW5jYXRlOwogCWNiLT5tZXNzYWdlX2NiID0gcGdvdXRwdXRfbWVzc2FnZTsKKwlj Yi0+c2VxdWVuY2VfY2IgPSBwZ291dHB1dF9zZXF1ZW5jZTsKIAljYi0+Y29tbWl0X2NiID0g cGdvdXRwdXRfY29tbWl0X3R4bjsKIAogCWNiLT5iZWdpbl9wcmVwYXJlX2NiID0gcGdvdXRw dXRfYmVnaW5fcHJlcGFyZV90eG47CkBAIC0yNjgsNiArMjc0LDcgQEAgX1BHX291dHB1dF9w bHVnaW5faW5pdChPdXRwdXRQbHVnaW5DYWxsYmFja3MgKmNiKQogCWNiLT5zdHJlYW1fY29t bWl0X2NiID0gcGdvdXRwdXRfc3RyZWFtX2NvbW1pdDsKIAljYi0+c3RyZWFtX2NoYW5nZV9j YiA9IHBnb3V0cHV0X2NoYW5nZTsKIAljYi0+c3RyZWFtX21lc3NhZ2VfY2IgPSBwZ291dHB1 dF9tZXNzYWdlOworCWNiLT5zdHJlYW1fc2VxdWVuY2VfY2IgPSBwZ291dHB1dF9zZXF1ZW5j ZTsKIAljYi0+c3RyZWFtX3RydW5jYXRlX2NiID0gcGdvdXRwdXRfdHJ1bmNhdGU7CiAJLyog dHJhbnNhY3Rpb24gc3RyZWFtaW5nIC0gdHdvLXBoYXNlIGNvbW1pdCAqLwogCWNiLT5zdHJl YW1fcHJlcGFyZV9jYiA9IHBnb3V0cHV0X3N0cmVhbV9wcmVwYXJlX3R4bjsKQEAgLTY3Myw3 ICs2ODAsNyBAQCBwZ291dHB1dF9yb2xsYmFja19wcmVwYXJlZF90eG4oTG9naWNhbERlY29k aW5nQ29udGV4dCAqY3R4LAogICovCiBzdGF0aWMgdm9pZAogbWF5YmVfc2VuZF9zY2hlbWEo TG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LAotCQkJCSAgUmVvcmRlckJ1ZmZlckNoYW5n ZSAqY2hhbmdlLAorCQkJCSAgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAogCQkJCSAgUmVsYXRp b24gcmVsYXRpb24sIFJlbGF0aW9uU3luY0VudHJ5ICpyZWxlbnRyeSkKIHsKIAlQR091dHB1 dERhdGEgKmRhdGEgPSAoUEdPdXRwdXREYXRhICopIGN0eC0+b3V0cHV0X3BsdWdpbl9wcml2 YXRlOwpAQCAtNjkwLDEwICs2OTcsMTAgQEAgbWF5YmVfc2VuZF9zY2hlbWEoTG9naWNhbERl Y29kaW5nQ29udGV4dCAqY3R4LAogCSAqIHRoZSB3cml0ZSBtZXRob2RzIHdpbGwgbm90IGlu Y2x1ZGUgaXQuCiAJICovCiAJaWYgKGRhdGEtPmluX3N0cmVhbWluZykKLQkJeGlkID0gY2hh bmdlLT50eG4tPnhpZDsKKwkJeGlkID0gdHhuLT54aWQ7CiAKLQlpZiAocmJ0eG5faXNfc3Vi dHhuKGNoYW5nZS0+dHhuKSkKLQkJdG9weGlkID0gcmJ0eG5fZ2V0X3RvcHR4bihjaGFuZ2Ut PnR4biktPnhpZDsKKwlpZiAocmJ0eG5faXNfc3VidHhuKHR4bikpCisJCXRvcHhpZCA9IHJi dHhuX2dldF90b3B0eG4odHhuKS0+eGlkOwogCWVsc2UKIAkJdG9weGlkID0geGlkOwogCkBA IC05MDIsOSArOTA5LDEwIEBAIHBnb3V0cHV0X3Jvd19maWx0ZXJfaW5pdChQR091dHB1dERh dGEgKmRhdGEsIExpc3QgKnB1YmxpY2F0aW9ucywKIAkJICogKGV2ZW4gaWYgb3RoZXIgcHVi bGljYXRpb25zIGhhdmUgYSByb3cgZmlsdGVyKS4KIAkJICovCiAJCWlmICghcHViLT5hbGx0 YWJsZXMgJiYKLQkJCSFTZWFyY2hTeXNDYWNoZUV4aXN0czIoUFVCTElDQVRJT05OQU1FU1BB Q0VNQVAsCisJCQkhU2VhcmNoU3lzQ2FjaGVFeGlzdHMzKFBVQkxJQ0FUSU9OTkFNRVNQQUNF TUFQLAogCQkJCQkJCQkgICBPYmplY3RJZEdldERhdHVtKHNjaGVtYWlkKSwKLQkJCQkJCQkJ ICAgT2JqZWN0SWRHZXREYXR1bShwdWItPm9pZCkpKQorCQkJCQkJCQkgICBPYmplY3RJZEdl dERhdHVtKHB1Yi0+b2lkKSwKKwkJCQkJCQkJICAgUFVCX09CSlRZUEVfVEFCTEUpKQogCQl7 CiAJCQkvKgogCQkJICogQ2hlY2sgZm9yIHRoZSBwcmVzZW5jZSBvZiBhIHJvdyBmaWx0ZXIg aW4gdGhpcyBwdWJsaWNhdGlvbi4KQEAgLTE1MTgsNyArMTUyNiw3IEBAIHBnb3V0cHV0X2No YW5nZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFJlb3JkZXJCdWZmZXJUWE4gKnR4 biwKIAkgKiBTY2hlbWEgc2hvdWxkIGJlIHNlbnQgdXNpbmcgdGhlIG9yaWdpbmFsIHJlbGF0 aW9uIGJlY2F1c2UgaXQgYWxzbyBzZW5kcwogCSAqIHRoZSBhbmNlc3RvcidzIHJlbGF0aW9u LgogCSAqLwotCW1heWJlX3NlbmRfc2NoZW1hKGN0eCwgY2hhbmdlLCByZWxhdGlvbiwgcmVs ZW50cnkpOworCW1heWJlX3NlbmRfc2NoZW1hKGN0eCwgdHhuLCByZWxhdGlvbiwgcmVsZW50 cnkpOwogCiAJT3V0cHV0UGx1Z2luUHJlcGFyZVdyaXRlKGN0eCwgdHJ1ZSk7CiAKQEAgLTE2 MDMsNyArMTYxMSw3IEBAIHBnb3V0cHV0X3RydW5jYXRlKExvZ2ljYWxEZWNvZGluZ0NvbnRl eHQgKmN0eCwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAogCQlpZiAodHhuZGF0YSAmJiAhdHhu ZGF0YS0+c2VudF9iZWdpbl90eG4pCiAJCQlwZ291dHB1dF9zZW5kX2JlZ2luKGN0eCwgdHhu KTsKIAotCQltYXliZV9zZW5kX3NjaGVtYShjdHgsIGNoYW5nZSwgcmVsYXRpb24sIHJlbGVu dHJ5KTsKKwkJbWF5YmVfc2VuZF9zY2hlbWEoY3R4LCBjaGFuZ2UtPnR4biwgcmVsYXRpb24s IHJlbGVudHJ5KTsKIAl9CiAKIAlpZiAobnJlbGlkcyA+IDApCkBAIC0xNjYzLDYgKzE2NzEs NzAgQEAgcGdvdXRwdXRfbWVzc2FnZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFJl b3JkZXJCdWZmZXJUWE4gKnR4biwKIAlPdXRwdXRQbHVnaW5Xcml0ZShjdHgsIHRydWUpOwog fQogCitzdGF0aWMgdm9pZAorcGdvdXRwdXRfc2VxdWVuY2UoTG9naWNhbERlY29kaW5nQ29u dGV4dCAqY3R4LAorCQkJCSAgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLCBYTG9nUmVjUHRyIHNl cXVlbmNlX2xzbiwKKwkJCQkgIFJlbGF0aW9uIHJlbGF0aW9uLCBib29sIHRyYW5zYWN0aW9u YWwsCisJCQkJICBpbnQ2NCB2YWx1ZSkKK3sKKwlQR091dHB1dERhdGEgKmRhdGEgPSAoUEdP dXRwdXREYXRhICopIGN0eC0+b3V0cHV0X3BsdWdpbl9wcml2YXRlOworCVRyYW5zYWN0aW9u SWQgeGlkID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CisJUmVsYXRpb25TeW5jRW50cnkgKnJl bGVudHJ5OworCisJaWYgKCFpc19wdWJsaXNoYWJsZV9yZWxhdGlvbihyZWxhdGlvbikpCisJ CXJldHVybjsKKworCS8qCisJICogSWYgdGhlIG5lZ290aWF0ZWQgcHJvdG9jb2wgdmVyc2lv biBkb2VzIG5vdCBzdXBwb3J0IHNlcXVlbmNlcywgeWV0IHdlCisJICogZm91bmQgYSBzZXF1 ZW5jZSBpbiB0aGUgcHVibGljYXRpb24sIGVycm9yIG91dC4KKwkgKi8KKwlpZiAoZGF0YS0+ cHJvdG9jb2xfdmVyc2lvbiA8IExPR0lDQUxSRVBfUFJPVE9fU0VRVUVOQ0VTX1ZFUlNJT05f TlVNKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VS Uk9SKSwKKwkJCQkgZXJybXNnKCJwcm90b2NvbCB2ZXJzaW9uIGRvZXMgbm90IHN1cHBvcnQg c2VxdWVuY2UgcmVwbGljYXRpb24iKSkpOworCisJLyoKKwkgKiBSZW1lbWJlciB0aGUgeGlk IGZvciB0aGUgbWVzc2FnZSBpbiBzdHJlYW1pbmcgbW9kZS4gU2VlCisJICogcGdvdXRwdXRf Y2hhbmdlLgorCSAqLworCWlmIChkYXRhLT5pbl9zdHJlYW1pbmcpCisJCXhpZCA9IHR4bi0+ eGlkOworCisJcmVsZW50cnkgPSBnZXRfcmVsX3N5bmNfZW50cnkoZGF0YSwgcmVsYXRpb24p OworCisJLyoKKwkgKiBGaXJzdCBjaGVjayB0aGUgc2VxdWVuY2UgZmlsdGVyLgorCSAqCisJ ICogV2UgaGFuZGxlIGp1c3QgUkVPUkRFUl9CVUZGRVJfQ0hBTkdFX1NFUVVFTkNFIGhlcmUu CisJICovCisJaWYgKCFyZWxlbnRyeS0+cHViYWN0aW9ucy5wdWJzZXF1ZW5jZSkKKwkJcmV0 dXJuOworCisJLyoKKwkgKiBPdXRwdXQgQkVHSU4gaWYgd2UgaGF2ZW4ndCB5ZXQuIEF2b2lk IGZvciBub24tdHJhbnNhY3Rpb25hbCBzZXF1ZW5jZQorCSAqIGNoYW5nZXMuCisJICovCisJ aWYgKHRyYW5zYWN0aW9uYWwpCisJeworCQlQR091dHB1dFR4bkRhdGEgKnR4bmRhdGEgPSAo UEdPdXRwdXRUeG5EYXRhICopIHR4bi0+b3V0cHV0X3BsdWdpbl9wcml2YXRlOworCisJCS8q IFNlbmQgQkVHSU4gaWYgd2UgaGF2ZW4ndCB5ZXQgKi8KKwkJaWYgKHR4bmRhdGEgJiYgIXR4 bmRhdGEtPnNlbnRfYmVnaW5fdHhuKQorCQkJcGdvdXRwdXRfc2VuZF9iZWdpbihjdHgsIHR4 bik7CisJfQorCisJbWF5YmVfc2VuZF9zY2hlbWEoY3R4LCB0eG4sIHJlbGF0aW9uLCByZWxl bnRyeSk7CisKKwlPdXRwdXRQbHVnaW5QcmVwYXJlV3JpdGUoY3R4LCB0cnVlKTsKKwlsb2dp Y2FscmVwX3dyaXRlX3NlcXVlbmNlKGN0eC0+b3V0LAorCQkJCQkJCSAgcmVsYXRpb24sCisJ CQkJCQkJICB4aWQsCisJCQkJCQkJICBzZXF1ZW5jZV9sc24sCisJCQkJCQkJICB0cmFuc2Fj dGlvbmFsLAorCQkJCQkJCSAgdmFsdWUpOworCU91dHB1dFBsdWdpbldyaXRlKGN0eCwgdHJ1 ZSk7Cit9CisKIC8qCiAgKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgZGF0YSBpcyBhc3NvY2lhdGVk IHdpdGggYW4gb3JpZ2luIGFuZCB0aGUgdXNlciBoYXMKICAqIHJlcXVlc3RlZCB0aGUgY2hh bmdlcyB0aGF0IGRvbid0IGhhdmUgYW4gb3JpZ2luLCBmYWxzZSBvdGhlcndpc2UuCkBAIC0x OTc4LDcgKzIwNTAsOCBAQCBnZXRfcmVsX3N5bmNfZW50cnkoUEdPdXRwdXREYXRhICpkYXRh LCBSZWxhdGlvbiByZWxhdGlvbikKIAkJZW50cnktPnNjaGVtYV9zZW50ID0gZmFsc2U7CiAJ CWVudHJ5LT5zdHJlYW1lZF90eG5zID0gTklMOwogCQllbnRyeS0+cHViYWN0aW9ucy5wdWJp bnNlcnQgPSBlbnRyeS0+cHViYWN0aW9ucy5wdWJ1cGRhdGUgPQotCQkJZW50cnktPnB1YmFj dGlvbnMucHViZGVsZXRlID0gZW50cnktPnB1YmFjdGlvbnMucHVidHJ1bmNhdGUgPSBmYWxz ZTsKKwkJCWVudHJ5LT5wdWJhY3Rpb25zLnB1YmRlbGV0ZSA9IGVudHJ5LT5wdWJhY3Rpb25z LnB1YnRydW5jYXRlID0KKwkJCWVudHJ5LT5wdWJhY3Rpb25zLnB1YnNlcXVlbmNlID0gZmFs c2U7CiAJCWVudHJ5LT5uZXdfc2xvdCA9IE5VTEw7CiAJCWVudHJ5LT5vbGRfc2xvdCA9IE5V TEw7CiAJCW1lbXNldChlbnRyeS0+ZXhwcnN0YXRlLCAwLCBzaXplb2YoZW50cnktPmV4cHJz dGF0ZSkpOwpAQCAtMTk5MywxOCArMjA2NiwxOSBAQCBnZXRfcmVsX3N5bmNfZW50cnkoUEdP dXRwdXREYXRhICpkYXRhLCBSZWxhdGlvbiByZWxhdGlvbikKIAl7CiAJCU9pZAkJCXNjaGVt YUlkID0gZ2V0X3JlbF9uYW1lc3BhY2UocmVsaWQpOwogCQlMaXN0CSAgICpwdWJpZHMgPSBH ZXRSZWxhdGlvblB1YmxpY2F0aW9ucyhyZWxpZCk7CisJCWNoYXIJCXJlbGtpbmQgPSBnZXRf cmVsX3JlbGtpbmQocmVsaWQpOworCQljaGFyCQlvYmplY3RUeXBlID0gcHViX2dldF9vYmpl Y3RfdHlwZV9mb3JfcmVsa2luZChyZWxraW5kKTsKIAogCQkvKgogCQkgKiBXZSBkb24ndCBh Y3F1aXJlIGEgbG9jayBvbiB0aGUgbmFtZXNwYWNlIHN5c3RlbSB0YWJsZSBhcyB3ZSBidWls ZAogCQkgKiB0aGUgY2FjaGUgZW50cnkgdXNpbmcgYSBoaXN0b3JpYyBzbmFwc2hvdCBhbmQg YWxsIHRoZSBsYXRlciBjaGFuZ2VzCiAJCSAqIGFyZSBhYnNvcmJlZCB3aGlsZSBkZWNvZGlu ZyBXQUwuCiAJCSAqLwotCQlMaXN0CSAgICpzY2hlbWFQdWJpZHMgPSBHZXRTY2hlbWFQdWJs aWNhdGlvbnMoc2NoZW1hSWQpOworCQlMaXN0CSAgICpzY2hlbWFQdWJpZHMgPSBHZXRTY2hl bWFQdWJsaWNhdGlvbnMoc2NoZW1hSWQsIG9iamVjdFR5cGUpOwogCQlMaXN0Q2VsbCAgICps YzsKIAkJT2lkCQkJcHVibGlzaF9hc19yZWxpZCA9IHJlbGlkOwogCQlpbnQJCQlwdWJsaXNo X2FuY2VzdG9yX2xldmVsID0gMDsKIAkJYm9vbAkJYW1fcGFydGl0aW9uID0gZ2V0X3JlbF9y ZWxpc3BhcnRpdGlvbihyZWxpZCk7Ci0JCWNoYXIJCXJlbGtpbmQgPSBnZXRfcmVsX3JlbGtp bmQocmVsaWQpOwogCQlMaXN0CSAgICpyZWxfcHVibGljYXRpb25zID0gTklMOwogCiAJCS8q IFJlbG9hZCBwdWJsaWNhdGlvbnMgaWYgbmVlZGVkIGJlZm9yZSB1c2UuICovCkBAIC0yMDM2 LDYgKzIxMTAsNyBAQCBnZXRfcmVsX3N5bmNfZW50cnkoUEdPdXRwdXREYXRhICpkYXRhLCBS ZWxhdGlvbiByZWxhdGlvbikKIAkJZW50cnktPnB1YmFjdGlvbnMucHVidXBkYXRlID0gZmFs c2U7CiAJCWVudHJ5LT5wdWJhY3Rpb25zLnB1YmRlbGV0ZSA9IGZhbHNlOwogCQllbnRyeS0+ cHViYWN0aW9ucy5wdWJ0cnVuY2F0ZSA9IGZhbHNlOworCQllbnRyeS0+cHViYWN0aW9ucy5w dWJzZXF1ZW5jZSA9IGZhbHNlOwogCiAJCS8qCiAJCSAqIFR1cGxlIHNsb3RzIGNsZWFudXBz LiAoV2lsbCBiZSByZWJ1aWx0IGxhdGVyIGlmIG5lZWRlZCkuCkBAIC0yMDgzLDkgKzIxNTgs MTEgQEAgZ2V0X3JlbF9zeW5jX2VudHJ5KFBHT3V0cHV0RGF0YSAqZGF0YSwgUmVsYXRpb24g cmVsYXRpb24pCiAKIAkJCS8qCiAJCQkgKiBJZiB0aGlzIGlzIGEgRk9SIEFMTCBUQUJMRVMg cHVibGljYXRpb24sIHBpY2sgdGhlIHBhcnRpdGlvbgotCQkJICogcm9vdCBhbmQgc2V0IHRo ZSBhbmNlc3RvciBsZXZlbCBhY2NvcmRpbmdseS4KKwkJCSAqIHJvb3QgYW5kIHNldCB0aGUg YW5jZXN0b3IgbGV2ZWwgYWNjb3JkaW5nbHkuIElmIHRoaXMgaXMgYSBGT1IKKwkJCSAqIEFM TCBTRVFVRU5DRVMgcHVibGljYXRpb24sIHdlIHB1Ymxpc2ggaXQgdG9vIGJ1dCB3ZSBkb24n dCBuZWVkCisJCQkgKiB0byBwaWNrIHRoZSBwYXJ0aXRpb24gcm9vdCBldGMuCiAJCQkgKi8K LQkJCWlmIChwdWItPmFsbHRhYmxlcykKKwkJCWlmIChwdWItPmFsbHRhYmxlcyAmJiAob2Jq ZWN0VHlwZSA9PSBQVUJfT0JKVFlQRV9UQUJMRSkpCiAJCQl7CiAJCQkJcHVibGlzaCA9IHRy dWU7CiAJCQkJaWYgKHB1Yi0+cHVidmlhcm9vdCAmJiBhbV9wYXJ0aXRpb24pCkBAIC0yMDk2 LDYgKzIxNzMsMTAgQEAgZ2V0X3JlbF9zeW5jX2VudHJ5KFBHT3V0cHV0RGF0YSAqZGF0YSwg UmVsYXRpb24gcmVsYXRpb24pCiAJCQkJCWFuY2VzdG9yX2xldmVsID0gbGlzdF9sZW5ndGgo YW5jZXN0b3JzKTsKIAkJCQl9CiAJCQl9CisJCQllbHNlIGlmIChwdWItPmFsbHNlcXVlbmNl cyAmJiAob2JqZWN0VHlwZSA9PSBQVUJfT0JKVFlQRV9TRVFVRU5DRSkpCisJCQl7CisJCQkJ cHVibGlzaCA9IHRydWU7CisJCQl9CiAKIAkJCWlmICghcHVibGlzaCkKIAkJCXsKQEAgLTIx NDksNiArMjIzMCw3IEBAIGdldF9yZWxfc3luY19lbnRyeShQR091dHB1dERhdGEgKmRhdGEs IFJlbGF0aW9uIHJlbGF0aW9uKQogCQkJCWVudHJ5LT5wdWJhY3Rpb25zLnB1YnVwZGF0ZSB8 PSBwdWItPnB1YmFjdGlvbnMucHVidXBkYXRlOwogCQkJCWVudHJ5LT5wdWJhY3Rpb25zLnB1 YmRlbGV0ZSB8PSBwdWItPnB1YmFjdGlvbnMucHViZGVsZXRlOwogCQkJCWVudHJ5LT5wdWJh Y3Rpb25zLnB1YnRydW5jYXRlIHw9IHB1Yi0+cHViYWN0aW9ucy5wdWJ0cnVuY2F0ZTsKKwkJ CQllbnRyeS0+cHViYWN0aW9ucy5wdWJzZXF1ZW5jZSB8PSBwdWItPnB1YmFjdGlvbnMucHVi c2VxdWVuY2U7CiAKIAkJCQkvKgogCQkJCSAqIFdlIHdhbnQgdG8gcHVibGlzaCB0aGUgY2hh bmdlcyBhcyB0aGUgdG9wLW1vc3QgYW5jZXN0b3IKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxj YWNoZS5jCmluZGV4IGIzZmFjY2JlZmU1Li5hNzk3NzU2YjI2MiAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGls cy9jYWNoZS9yZWxjYWNoZS5jCkBAIC01Nyw2ICs1Nyw3IEBACiAjaW5jbHVkZSAiY2F0YWxv Zy9wZ19vcGNsYXNzLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19wcm9jLmgiCiAjaW5jbHVk ZSAiY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfcHVi bGljYXRpb25fbmFtZXNwYWNlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19yZXdyaXRlLmgi CiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19zaHNlY2xhYmVsLmgiCiAjaW5jbHVkZSAiY2F0YWxv Zy9wZ19zdGF0aXN0aWNfZXh0LmgiCkBAIC01NzE1LDYgKzU3MTYsOCBAQCBSZWxhdGlvbkJ1 aWxkUHVibGljYXRpb25EZXNjKFJlbGF0aW9uIHJlbGF0aW9uLCBQdWJsaWNhdGlvbkRlc2Mg KnB1YmRlc2MpCiAJT2lkCQkJc2NoZW1haWQ7CiAJTGlzdAkgICAqYW5jZXN0b3JzID0gTklM OwogCU9pZAkJCXJlbGlkID0gUmVsYXRpb25HZXRSZWxpZChyZWxhdGlvbik7CisJY2hhcgkJ cmVsa2luZCA9IHJlbGF0aW9uLT5yZF9yZWwtPnJlbGtpbmQ7CisJY2hhcgkJb2JqVHlwZTsK IAogCS8qCiAJICogSWYgbm90IHB1Ymxpc2hhYmxlLCBpdCBwdWJsaXNoZXMgbm8gYWN0aW9u cy4gIChwZ291dHB1dF9jaGFuZ2UoKSB3aWxsCkBAIC01NzQ1LDggKzU3NDgsMTUgQEAgUmVs YXRpb25CdWlsZFB1YmxpY2F0aW9uRGVzYyhSZWxhdGlvbiByZWxhdGlvbiwgUHVibGljYXRp b25EZXNjICpwdWJkZXNjKQogCS8qIEZldGNoIHRoZSBwdWJsaWNhdGlvbiBtZW1iZXJzaGlw IGluZm8uICovCiAJcHVib2lkcyA9IEdldFJlbGF0aW9uUHVibGljYXRpb25zKHJlbGlkKTsK IAlzY2hlbWFpZCA9IFJlbGF0aW9uR2V0TmFtZXNwYWNlKHJlbGF0aW9uKTsKLQlwdWJvaWRz ID0gbGlzdF9jb25jYXRfdW5pcXVlX29pZChwdWJvaWRzLCBHZXRTY2hlbWFQdWJsaWNhdGlv bnMoc2NoZW1haWQpKTsKKwlvYmpUeXBlID0gcHViX2dldF9vYmplY3RfdHlwZV9mb3JfcmVs a2luZChyZWxraW5kKTsKIAorCXB1Ym9pZHMgPSBsaXN0X2NvbmNhdF91bmlxdWVfb2lkKHB1 Ym9pZHMsCisJCQkJCQkJCQkgR2V0U2NoZW1hUHVibGljYXRpb25zKHNjaGVtYWlkLCBvYmpU eXBlKSk7CisKKwkvKgorCSAqIElmIHRoaXMgaXMgYSBwYXJ0aW9uIChhbmQgdGh1cyBhIHRh YmxlKSwgbG9va3VwIGFsbCBhbmNlc3RvcnMgYW5kIHRyYWNrCisJICogYWxsIHB1YmxpY2F0 aW9ucyB0aGVtIHRvby4KKwkgKi8KIAlpZiAocmVsYXRpb24tPnJkX3JlbC0+cmVsaXNwYXJ0 aXRpb24pCiAJewogCQkvKiBBZGQgcHVibGljYXRpb25zIHRoYXQgdGhlIGFuY2VzdG9ycyBh cmUgaW4gdG9vLiAqLwpAQCAtNTc1OCwxMiArNTc2OCwyMyBAQCBSZWxhdGlvbkJ1aWxkUHVi bGljYXRpb25EZXNjKFJlbGF0aW9uIHJlbGF0aW9uLCBQdWJsaWNhdGlvbkRlc2MgKnB1YmRl c2MpCiAKIAkJCXB1Ym9pZHMgPSBsaXN0X2NvbmNhdF91bmlxdWVfb2lkKHB1Ym9pZHMsCiAJ CQkJCQkJCQkJCSBHZXRSZWxhdGlvblB1YmxpY2F0aW9ucyhhbmNlc3RvcikpOworCisJCQkv KiBpbmNsdWRlIGFsbCBwdWJsaWNhdGlvbnMgcHVibGlzaGluZyBzY2hlbWEgb2YgYWxsIGFu Y2VzdG9ycyAqLwogCQkJc2NoZW1haWQgPSBnZXRfcmVsX25hbWVzcGFjZShhbmNlc3Rvcik7 CiAJCQlwdWJvaWRzID0gbGlzdF9jb25jYXRfdW5pcXVlX29pZChwdWJvaWRzLAotCQkJCQkJ CQkJCQkgR2V0U2NoZW1hUHVibGljYXRpb25zKHNjaGVtYWlkKSk7CisJCQkJCQkJCQkJCSBH ZXRTY2hlbWFQdWJsaWNhdGlvbnMoc2NoZW1haWQsCisJCQkJCQkJCQkJCQkJCQkJICAgUFVC X09CSlRZUEVfVEFCTEUpKTsKIAkJfQogCX0KLQlwdWJvaWRzID0gbGlzdF9jb25jYXRfdW5p cXVlX29pZChwdWJvaWRzLCBHZXRBbGxUYWJsZXNQdWJsaWNhdGlvbnMoKSk7CisKKwkvKgor CSAqIENvbnNpZGVyIGFsc28gRk9SIEFMTCBUQUJMRVMgYW5kIEZPUiBBTEwgU0VRVUVOQ0VT IHB1YmxpY2F0aW9ucywKKwkgKiBkZXBlbmRpbmcgb24gdGhlIHJlbGtpbmQgb2YgdGhlIHJl bGF0aW9uLgorCSAqLworCWlmIChyZWxhdGlvbi0+cmRfcmVsLT5yZWxraW5kID09IFJFTEtJ TkRfU0VRVUVOQ0UpCisJCXB1Ym9pZHMgPSBsaXN0X2NvbmNhdF91bmlxdWVfb2lkKHB1Ym9p ZHMsIEdldEFsbFNlcXVlbmNlc1B1YmxpY2F0aW9ucygpKTsKKwllbHNlCisJCXB1Ym9pZHMg PSBsaXN0X2NvbmNhdF91bmlxdWVfb2lkKHB1Ym9pZHMsIEdldEFsbFRhYmxlc1B1YmxpY2F0 aW9ucygpKTsKIAogCWZvcmVhY2gobGMsIHB1Ym9pZHMpCiAJewpAQCAtNTc4Miw2ICs1ODAz LDcgQEAgUmVsYXRpb25CdWlsZFB1YmxpY2F0aW9uRGVzYyhSZWxhdGlvbiByZWxhdGlvbiwg UHVibGljYXRpb25EZXNjICpwdWJkZXNjKQogCQlwdWJkZXNjLT5wdWJhY3Rpb25zLnB1YnVw ZGF0ZSB8PSBwdWJmb3JtLT5wdWJ1cGRhdGU7CiAJCXB1YmRlc2MtPnB1YmFjdGlvbnMucHVi ZGVsZXRlIHw9IHB1YmZvcm0tPnB1YmRlbGV0ZTsKIAkJcHViZGVzYy0+cHViYWN0aW9ucy5w dWJ0cnVuY2F0ZSB8PSBwdWJmb3JtLT5wdWJ0cnVuY2F0ZTsKKwkJcHViZGVzYy0+cHViYWN0 aW9ucy5wdWJzZXF1ZW5jZSB8PSBwdWJmb3JtLT5wdWJzZXF1ZW5jZTsKIAogCQkvKgogCQkg KiBDaGVjayBpZiBhbGwgY29sdW1ucyByZWZlcmVuY2VkIGluIHRoZSBmaWx0ZXIgZXhwcmVz c2lvbiBhcmUgcGFydApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvc3lz Y2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3N5c2NhY2hlLmMKaW5kZXggOGRi ZGEwMDI0ZjkuLmEwODBkNTg4ZGIyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9j YWNoZS9zeXNjYWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3N5c2NhY2hl LmMKQEAgLTQ1MCw5ICs0NTAsMTAgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBjYWNoZWRlc2Mg Y2FjaGVpbmZvW10gPSB7CiAJfSwKIAlbUFVCTElDQVRJT05OQU1FU1BBQ0VNQVBdID0gewog CQlQdWJsaWNhdGlvbk5hbWVzcGFjZVJlbGF0aW9uSWQsCi0JCVB1YmxpY2F0aW9uTmFtZXNw YWNlUG5uc3BpZFBucHViaWRJbmRleElkLAorCQlQdWJsaWNhdGlvbk5hbWVzcGFjZVBubnNw aWRQbnB1YmlkUG50eXBlSW5kZXhJZCwKIAkJS0VZKEFudW1fcGdfcHVibGljYXRpb25fbmFt ZXNwYWNlX3BubnNwaWQsCi0JCQlBbnVtX3BnX3B1YmxpY2F0aW9uX25hbWVzcGFjZV9wbnB1 YmlkKSwKKwkJCUFudW1fcGdfcHVibGljYXRpb25fbmFtZXNwYWNlX3BucHViaWQsCisJCQlB bnVtX3BnX3B1YmxpY2F0aW9uX25hbWVzcGFjZV9wbnR5cGUpLAogCQk2NAogCX0sCiAJW1BV QkxJQ0FUSU9OT0lEXSA9IHsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1w LmMgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCmluZGV4IDM0ZmQwYTg2ZTljLi5iYmUx NWM3NDc0NiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYworKysgYi9z cmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCkBAIC00MDU4LDEwICs0MDU4LDEyIEBAIGdldFB1 YmxpY2F0aW9ucyhBcmNoaXZlICpmb3V0LCBpbnQgKm51bVB1YmxpY2F0aW9ucykKIAlpbnQJ CQlpX3B1Ym5hbWU7CiAJaW50CQkJaV9wdWJvd25lcjsKIAlpbnQJCQlpX3B1YmFsbHRhYmxl czsKKwlpbnQJCQlpX3B1YmFsbHNlcXVlbmNlczsKIAlpbnQJCQlpX3B1Ymluc2VydDsKIAlp bnQJCQlpX3B1YnVwZGF0ZTsKIAlpbnQJCQlpX3B1YmRlbGV0ZTsKIAlpbnQJCQlpX3B1YnRy dW5jYXRlOworCWludAkJCWlfcHVic2VxdWVuY2U7CiAJaW50CQkJaV9wdWJ2aWFyb290Owog CWludAkJCWksCiAJCQkJbnR1cHM7CkBAIC00MDc3LDIzICs0MDc5LDI5IEBAIGdldFB1Ymxp Y2F0aW9ucyhBcmNoaXZlICpmb3V0LCBpbnQgKm51bVB1YmxpY2F0aW9ucykKIAlyZXNldFBR RXhwQnVmZmVyKHF1ZXJ5KTsKIAogCS8qIEdldCB0aGUgcHVibGljYXRpb25zLiAqLwotCWlm IChmb3V0LT5yZW1vdGVWZXJzaW9uID49IDEzMDAwMCkKKwlpZiAoZm91dC0+cmVtb3RlVmVy c2lvbiA+PSAxNzAwMDApCisJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LAorCQkJCQkJ CSAiU0VMRUNUIHAudGFibGVvaWQsIHAub2lkLCBwLnB1Ym5hbWUsICIKKwkJCQkJCQkgInAu cHVib3duZXIsICIKKwkJCQkJCQkgInAucHViYWxsdGFibGVzLCBwLnB1YmFsbHNlcXVlbmNl cywgcC5wdWJpbnNlcnQsIHAucHVidXBkYXRlLCBwLnB1YmRlbGV0ZSwgcC5wdWJ0cnVuY2F0 ZSwgcC5wdWJzZXF1ZW5jZSwgcC5wdWJ2aWFyb290ICIKKwkJCQkJCQkgIkZST00gcGdfcHVi bGljYXRpb24gcCIpOworCWVsc2UgaWYgKGZvdXQtPnJlbW90ZVZlcnNpb24gPj0gMTMwMDAw KQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKIAkJCQkJCQkgIlNFTEVDVCBwLnRh Ymxlb2lkLCBwLm9pZCwgcC5wdWJuYW1lLCAiCiAJCQkJCQkJICJwLnB1Ym93bmVyLCAiCi0J CQkJCQkJICJwLnB1YmFsbHRhYmxlcywgcC5wdWJpbnNlcnQsIHAucHVidXBkYXRlLCBwLnB1 YmRlbGV0ZSwgcC5wdWJ0cnVuY2F0ZSwgcC5wdWJ2aWFyb290ICIKKwkJCQkJCQkgInAucHVi YWxsdGFibGVzLCBmYWxzZSBhcyBwLnB1YmFsbHNlcXVlbmNlcywgcC5wdWJpbnNlcnQsIHAu cHVidXBkYXRlLCBwLnB1YmRlbGV0ZSwgcC5wdWJ0cnVuY2F0ZSwgZmFsc2UgYXMgcC5wdWJz ZXF1ZW5jZSwgcC5wdWJ2aWFyb290ICIKIAkJCQkJCQkgIkZST00gcGdfcHVibGljYXRpb24g cCIpOwogCWVsc2UgaWYgKGZvdXQtPnJlbW90ZVZlcnNpb24gPj0gMTEwMDAwKQogCQlhcHBl bmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKIAkJCQkJCQkgIlNFTEVDVCBwLnRhYmxlb2lkLCBw Lm9pZCwgcC5wdWJuYW1lLCAiCiAJCQkJCQkJICJwLnB1Ym93bmVyLCAiCi0JCQkJCQkJICJw LnB1YmFsbHRhYmxlcywgcC5wdWJpbnNlcnQsIHAucHVidXBkYXRlLCBwLnB1YmRlbGV0ZSwg cC5wdWJ0cnVuY2F0ZSwgZmFsc2UgQVMgcHVidmlhcm9vdCAiCisJCQkJCQkJICJwLnB1YmFs bHRhYmxlcywgZmFsc2UgYXMgcC5wdWJhbGxzZXF1ZW5jZXMsIHAucHViaW5zZXJ0LCBwLnB1 YnVwZGF0ZSwgcC5wdWJkZWxldGUsIHAucHVidHJ1bmNhdGUsIGZhbHNlIEFTIHB1YnNlcXVl bmNlLCBmYWxzZSBBUyBwdWJ2aWFyb290ICIKIAkJCQkJCQkgIkZST00gcGdfcHVibGljYXRp b24gcCIpOwogCWVsc2UKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksCiAJCQkJCQkJ ICJTRUxFQ1QgcC50YWJsZW9pZCwgcC5vaWQsIHAucHVibmFtZSwgIgogCQkJCQkJCSAicC5w dWJvd25lciwgIgotCQkJCQkJCSAicC5wdWJhbGx0YWJsZXMsIHAucHViaW5zZXJ0LCBwLnB1 YnVwZGF0ZSwgcC5wdWJkZWxldGUsIGZhbHNlIEFTIHB1YnRydW5jYXRlLCBmYWxzZSBBUyBw dWJ2aWFyb290ICIKKwkJCQkJCQkgInAucHViYWxsdGFibGVzLCBmYWxzZSBhcyBwLnB1YmFs bHNlcXVlbmNlcywgcC5wdWJpbnNlcnQsIHAucHVidXBkYXRlLCBwLnB1YmRlbGV0ZSwgZmFs c2UgQVMgcHVidHJ1bmNhdGUsIGZhbHNlIEFTIHB1YnNlcXVlbmNlLCBmYWxzZSBBUyBwdWJ2 aWFyb290ICIKIAkJCQkJCQkgIkZST00gcGdfcHVibGljYXRpb24gcCIpOwogCiAJcmVzID0g RXhlY3V0ZVNxbFF1ZXJ5KGZvdXQsIHF1ZXJ5LT5kYXRhLCBQR1JFU19UVVBMRVNfT0spOwpA QCAtNDEwNSwxMCArNDExMywxMiBAQCBnZXRQdWJsaWNhdGlvbnMoQXJjaGl2ZSAqZm91dCwg aW50ICpudW1QdWJsaWNhdGlvbnMpCiAJaV9wdWJuYW1lID0gUFFmbnVtYmVyKHJlcywgInB1 Ym5hbWUiKTsKIAlpX3B1Ym93bmVyID0gUFFmbnVtYmVyKHJlcywgInB1Ym93bmVyIik7CiAJ aV9wdWJhbGx0YWJsZXMgPSBQUWZudW1iZXIocmVzLCAicHViYWxsdGFibGVzIik7CisJaV9w dWJhbGxzZXF1ZW5jZXMgPSBQUWZudW1iZXIocmVzLCAicHViYWxsc2VxdWVuY2VzIik7CiAJ aV9wdWJpbnNlcnQgPSBQUWZudW1iZXIocmVzLCAicHViaW5zZXJ0Iik7CiAJaV9wdWJ1cGRh dGUgPSBQUWZudW1iZXIocmVzLCAicHVidXBkYXRlIik7CiAJaV9wdWJkZWxldGUgPSBQUWZu dW1iZXIocmVzLCAicHViZGVsZXRlIik7CiAJaV9wdWJ0cnVuY2F0ZSA9IFBRZm51bWJlcihy ZXMsICJwdWJ0cnVuY2F0ZSIpOworCWlfcHVic2VxdWVuY2UgPSBQUWZudW1iZXIocmVzLCAi cHVic2VxdWVuY2UiKTsKIAlpX3B1YnZpYXJvb3QgPSBQUWZudW1iZXIocmVzLCAicHVidmlh cm9vdCIpOwogCiAJcHViaW5mbyA9IHBnX21hbGxvYyhudHVwcyAqIHNpemVvZihQdWJsaWNh dGlvbkluZm8pKTsKQEAgLTQxMjQsNiArNDEzNCw4IEBAIGdldFB1YmxpY2F0aW9ucyhBcmNo aXZlICpmb3V0LCBpbnQgKm51bVB1YmxpY2F0aW9ucykKIAkJcHViaW5mb1tpXS5yb2xuYW1l ID0gZ2V0Um9sZU5hbWUoUFFnZXR2YWx1ZShyZXMsIGksIGlfcHVib3duZXIpKTsKIAkJcHVi aW5mb1tpXS5wdWJhbGx0YWJsZXMgPQogCQkJKHN0cmNtcChQUWdldHZhbHVlKHJlcywgaSwg aV9wdWJhbGx0YWJsZXMpLCAidCIpID09IDApOworCQlwdWJpbmZvW2ldLnB1YmFsbHNlcXVl bmNlcyA9CisJCQkoc3RyY21wKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3B1YmFsbHNlcXVlbmNl cyksICJ0IikgPT0gMCk7CiAJCXB1YmluZm9baV0ucHViaW5zZXJ0ID0KIAkJCShzdHJjbXAo UFFnZXR2YWx1ZShyZXMsIGksIGlfcHViaW5zZXJ0KSwgInQiKSA9PSAwKTsKIAkJcHViaW5m b1tpXS5wdWJ1cGRhdGUgPQpAQCAtNDEzMiw2ICs0MTQ0LDggQEAgZ2V0UHVibGljYXRpb25z KEFyY2hpdmUgKmZvdXQsIGludCAqbnVtUHVibGljYXRpb25zKQogCQkJKHN0cmNtcChQUWdl dHZhbHVlKHJlcywgaSwgaV9wdWJkZWxldGUpLCAidCIpID09IDApOwogCQlwdWJpbmZvW2ld LnB1YnRydW5jYXRlID0KIAkJCShzdHJjbXAoUFFnZXR2YWx1ZShyZXMsIGksIGlfcHVidHJ1 bmNhdGUpLCAidCIpID09IDApOworCQlwdWJpbmZvW2ldLnB1YnNlcXVlbmNlID0KKwkJCShz dHJjbXAoUFFnZXR2YWx1ZShyZXMsIGksIGlfcHVic2VxdWVuY2UpLCAidCIpID09IDApOwog CQlwdWJpbmZvW2ldLnB1YnZpYXJvb3QgPQogCQkJKHN0cmNtcChQUWdldHZhbHVlKHJlcywg aSwgaV9wdWJ2aWFyb290KSwgInQiKSA9PSAwKTsKIApAQCAtNDE3Nyw2ICs0MTkxLDkgQEAg ZHVtcFB1YmxpY2F0aW9uKEFyY2hpdmUgKmZvdXQsIGNvbnN0IFB1YmxpY2F0aW9uSW5mbyAq cHViaW5mbykKIAlpZiAocHViaW5mby0+cHViYWxsdGFibGVzKQogCQlhcHBlbmRQUUV4cEJ1 ZmZlclN0cihxdWVyeSwgIiBGT1IgQUxMIFRBQkxFUyIpOwogCisJaWYgKHB1YmluZm8tPnB1 YmFsbHNlcXVlbmNlcykKKwkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIgRk9SIEFM TCBTRVFVRU5DRVMiKTsKKwogCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiIFdJVEgg KHB1Ymxpc2ggPSAnIik7CiAJaWYgKHB1YmluZm8tPnB1Ymluc2VydCkKIAl7CkBAIC00MjEx LDYgKzQyMjgsMTUgQEAgZHVtcFB1YmxpY2F0aW9uKEFyY2hpdmUgKmZvdXQsIGNvbnN0IFB1 YmxpY2F0aW9uSW5mbyAqcHViaW5mbykKIAkJZmlyc3QgPSBmYWxzZTsKIAl9CiAKKwlpZiAo cHViaW5mby0+cHVic2VxdWVuY2UpCisJeworCQlpZiAoIWZpcnN0KQorCQkJYXBwZW5kUFFF eHBCdWZmZXJTdHIocXVlcnksICIsICIpOworCisJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1 ZXJ5LCAic2VxdWVuY2UiKTsKKwkJZmlyc3QgPSBmYWxzZTsKKwl9CisKIAlhcHBlbmRQUUV4 cEJ1ZmZlckNoYXIocXVlcnksICdcJycpOwogCiAJaWYgKHB1YmluZm8tPnB1YnZpYXJvb3Qp CkBAIC00MjU3LDYgKzQyODMsNyBAQCBnZXRQdWJsaWNhdGlvbk5hbWVzcGFjZXMoQXJjaGl2 ZSAqZm91dCkKIAlpbnQJCQlpX29pZDsKIAlpbnQJCQlpX3BucHViaWQ7CiAJaW50CQkJaV9w bm5zcGlkOworCWludAkJCWlfcG50eXBlOwogCWludAkJCWksCiAJCQkJaiwKIAkJCQludHVw czsKQEAgLTQyNjgsNyArNDI5NSw3IEBAIGdldFB1YmxpY2F0aW9uTmFtZXNwYWNlcyhBcmNo aXZlICpmb3V0KQogCiAJLyogQ29sbGVjdCBhbGwgcHVibGljYXRpb24gbWVtYmVyc2hpcCBp bmZvLiAqLwogCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LAotCQkJCQkJICJTRUxFQ1Qg dGFibGVvaWQsIG9pZCwgcG5wdWJpZCwgcG5uc3BpZCAiCisJCQkJCQkgIlNFTEVDVCB0YWJs ZW9pZCwgb2lkLCBwbnB1YmlkLCBwbm5zcGlkLCBwbnR5cGUgIgogCQkJCQkJICJGUk9NIHBn X2NhdGFsb2cucGdfcHVibGljYXRpb25fbmFtZXNwYWNlIik7CiAJcmVzID0gRXhlY3V0ZVNx bFF1ZXJ5KGZvdXQsIHF1ZXJ5LT5kYXRhLCBQR1JFU19UVVBMRVNfT0spOwogCkBAIC00Mjc4 LDYgKzQzMDUsNyBAQCBnZXRQdWJsaWNhdGlvbk5hbWVzcGFjZXMoQXJjaGl2ZSAqZm91dCkK IAlpX29pZCA9IFBRZm51bWJlcihyZXMsICJvaWQiKTsKIAlpX3BucHViaWQgPSBQUWZudW1i ZXIocmVzLCAicG5wdWJpZCIpOwogCWlfcG5uc3BpZCA9IFBRZm51bWJlcihyZXMsICJwbm5z cGlkIik7CisJaV9wbnR5cGUgPSBQUWZudW1iZXIocmVzLCAicG50eXBlIik7CiAKIAkvKiB0 aGlzIGFsbG9jYXRpb24gbWF5IGJlIG1vcmUgdGhhbiB3ZSBuZWVkICovCiAJcHVic2luZm8g PSBwZ19tYWxsb2MobnR1cHMgKiBzaXplb2YoUHVibGljYXRpb25TY2hlbWFJbmZvKSk7CkBA IC00Mjg3LDYgKzQzMTUsNyBAQCBnZXRQdWJsaWNhdGlvbk5hbWVzcGFjZXMoQXJjaGl2ZSAq Zm91dCkKIAl7CiAJCU9pZAkJCXBucHViaWQgPSBhdG9vaWQoUFFnZXR2YWx1ZShyZXMsIGks IGlfcG5wdWJpZCkpOwogCQlPaWQJCQlwbm5zcGlkID0gYXRvb2lkKFBRZ2V0dmFsdWUocmVz LCBpLCBpX3BubnNwaWQpKTsKKwkJY2hhcgkJcG50eXBlID0gUFFnZXR2YWx1ZShyZXMsIGks IGlfcG50eXBlKVswXTsKIAkJUHVibGljYXRpb25JbmZvICpwdWJpbmZvOwogCQlOYW1lc3Bh Y2VJbmZvICpuc3BpbmZvOwogCkBAIC00MzE4LDYgKzQzNDcsNyBAQCBnZXRQdWJsaWNhdGlv bk5hbWVzcGFjZXMoQXJjaGl2ZSAqZm91dCkKIAkJcHVic2luZm9bal0uZG9iai5uYW1lID0g bnNwaW5mby0+ZG9iai5uYW1lOwogCQlwdWJzaW5mb1tqXS5wdWJsaWNhdGlvbiA9IHB1Ymlu Zm87CiAJCXB1YnNpbmZvW2pdLnB1YnNjaGVtYSA9IG5zcGluZm87CisJCXB1YnNpbmZvW2pd LnB1YnR5cGUgPSBwbnR5cGU7CiAKIAkJLyogRGVjaWRlIHdoZXRoZXIgd2Ugd2FudCB0byBk dW1wIGl0ICovCiAJCXNlbGVjdER1bXBhYmxlUHVibGljYXRpb25PYmplY3QoJihwdWJzaW5m b1tqXS5kb2JqKSwgZm91dCk7CkBAIC00NDgzLDcgKzQ1MTMsMTEgQEAgZHVtcFB1YmxpY2F0 aW9uTmFtZXNwYWNlKEFyY2hpdmUgKmZvdXQsIGNvbnN0IFB1YmxpY2F0aW9uU2NoZW1hSW5m byAqcHVic2luZm8pCiAJcXVlcnkgPSBjcmVhdGVQUUV4cEJ1ZmZlcigpOwogCiAJYXBwZW5k UFFFeHBCdWZmZXIocXVlcnksICJBTFRFUiBQVUJMSUNBVElPTiAlcyAiLCBmbXRJZChwdWJp bmZvLT5kb2JqLm5hbWUpKTsKLQlhcHBlbmRQUUV4cEJ1ZmZlcihxdWVyeSwgIkFERCBUQUJM RVMgSU4gU0NIRU1BICVzO1xuIiwgZm10SWQoc2NoZW1haW5mby0+ZG9iai5uYW1lKSk7CisK KwlpZiAocHVic2luZm8tPnB1YnR5cGUgPT0gJ3QnKQorCQlhcHBlbmRQUUV4cEJ1ZmZlcihx dWVyeSwgIkFERCBUQUJMRVMgSU4gU0NIRU1BICVzO1xuIiwgZm10SWQoc2NoZW1haW5mby0+ ZG9iai5uYW1lKSk7CisJZWxzZQorCQlhcHBlbmRQUUV4cEJ1ZmZlcihxdWVyeSwgIkFERCBT RVFVRU5DRVMgSU4gU0NIRU1BICVzO1xuIiwgZm10SWQoc2NoZW1haW5mby0+ZG9iai5uYW1l KSk7CiAKIAkvKgogCSAqIFRoZXJlIGlzIG5vIHBvaW50IGluIGNyZWF0aW5nIGRyb3AgcXVl cnkgYXMgdGhlIGRyb3AgaXMgZG9uZSBieSBzY2hlbWEKQEAgLTQ1MTYsNiArNDU1MCw3IEBA IGR1bXBQdWJsaWNhdGlvblRhYmxlKEFyY2hpdmUgKmZvdXQsIGNvbnN0IFB1YmxpY2F0aW9u UmVsSW5mbyAqcHVicmluZm8pCiAJVGFibGVJbmZvICAqdGJpbmZvID0gcHVicmluZm8tPnB1 YnRhYmxlOwogCVBRRXhwQnVmZmVyIHF1ZXJ5OwogCWNoYXIJICAgKnRhZzsKKwljaGFyCSAg ICpkZXNjcmlwdGlvbjsKIAogCS8qIERvIG5vdGhpbmcgaW4gZGF0YS1vbmx5IGR1bXAgKi8K IAlpZiAoZG9wdC0+ZGF0YU9ubHkpCkBAIC00NTI1LDggKzQ1NjAsMTkgQEAgZHVtcFB1Ymxp Y2F0aW9uVGFibGUoQXJjaGl2ZSAqZm91dCwgY29uc3QgUHVibGljYXRpb25SZWxJbmZvICpw dWJyaW5mbykKIAogCXF1ZXJ5ID0gY3JlYXRlUFFFeHBCdWZmZXIoKTsKIAotCWFwcGVuZFBR RXhwQnVmZmVyKHF1ZXJ5LCAiQUxURVIgUFVCTElDQVRJT04gJXMgQUREIFRBQkxFIE9OTFki LAotCQkJCQkgIGZtdElkKHB1YmluZm8tPmRvYmoubmFtZSkpOworCWlmICh0YmluZm8tPnJl bGtpbmQgPT0gUkVMS0lORF9TRVFVRU5DRSkKKwl7CisJCWFwcGVuZFBRRXhwQnVmZmVyKHF1 ZXJ5LCAiQUxURVIgUFVCTElDQVRJT04gJXMgQUREIFNFUVVFTkNFIiwKKwkJCQkJCSAgZm10 SWQocHViaW5mby0+ZG9iai5uYW1lKSk7CisJCWRlc2NyaXB0aW9uID0gIlBVQkxJQ0FUSU9O IFNFUVVFTkNFIjsKKwl9CisJZWxzZQorCXsKKwkJYXBwZW5kUFFFeHBCdWZmZXIocXVlcnks ICJBTFRFUiBQVUJMSUNBVElPTiAlcyBBREQgVEFCTEUgT05MWSIsCisJCQkJCQkgIGZtdElk KHB1YmluZm8tPmRvYmoubmFtZSkpOworCQlkZXNjcmlwdGlvbiA9ICJQVUJMSUNBVElPTiBU QUJMRSI7CisJfQorCiAJYXBwZW5kUFFFeHBCdWZmZXIocXVlcnksICIgJXMiLAogCQkJCQkg IGZtdFF1YWxpZmllZER1bXBhYmxlKHRiaW5mbykpOwogCkBAIC00NTU2LDcgKzQ2MDIsNyBA QCBkdW1wUHVibGljYXRpb25UYWJsZShBcmNoaXZlICpmb3V0LCBjb25zdCBQdWJsaWNhdGlv blJlbEluZm8gKnB1YnJpbmZvKQogCQkJCQkgQVJDSElWRV9PUFRTKC50YWcgPSB0YWcsCiAJ CQkJCQkJCSAgLm5hbWVzcGFjZSA9IHRiaW5mby0+ZG9iai5uYW1lc3BhY2UtPmRvYmoubmFt ZSwKIAkJCQkJCQkJICAub3duZXIgPSBwdWJpbmZvLT5yb2xuYW1lLAotCQkJCQkJCQkgIC5k ZXNjcmlwdGlvbiA9ICJQVUJMSUNBVElPTiBUQUJMRSIsCisJCQkJCQkJCSAgLmRlc2NyaXB0 aW9uID0gZGVzY3JpcHRpb24sCiAJCQkJCQkJCSAgLnNlY3Rpb24gPSBTRUNUSU9OX1BPU1Rf REFUQSwKIAkJCQkJCQkJICAuY3JlYXRlU3RtdCA9IHF1ZXJ5LT5kYXRhKSk7CiAKZGlmZiAt LWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmggYi9zcmMvYmluL3BnX2R1bXAvcGdf ZHVtcC5oCmluZGV4IDJmZTNjYmVkOWFjLi5mNjU5M2IwYzQ5OSAxMDA2NDQKLS0tIGEvc3Jj L2Jpbi9wZ19kdW1wL3BnX2R1bXAuaAorKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5o CkBAIC02MjIsMTAgKzYyMiwxMiBAQCB0eXBlZGVmIHN0cnVjdCBfUHVibGljYXRpb25JbmZv CiAJRHVtcGFibGVPYmplY3QgZG9iajsKIAljb25zdCBjaGFyICpyb2xuYW1lOwogCWJvb2wJ CXB1YmFsbHRhYmxlczsKKwlib29sCQlwdWJhbGxzZXF1ZW5jZXM7CiAJYm9vbAkJcHViaW5z ZXJ0OwogCWJvb2wJCXB1YnVwZGF0ZTsKIAlib29sCQlwdWJkZWxldGU7CiAJYm9vbAkJcHVi dHJ1bmNhdGU7CisJYm9vbAkJcHVic2VxdWVuY2U7CiAJYm9vbAkJcHVidmlhcm9vdDsKIH0g UHVibGljYXRpb25JbmZvOwogCkBAIC02NTEsNiArNjUzLDcgQEAgdHlwZWRlZiBzdHJ1Y3Qg X1B1YmxpY2F0aW9uU2NoZW1hSW5mbwogCUR1bXBhYmxlT2JqZWN0IGRvYmo7CiAJUHVibGlj YXRpb25JbmZvICpwdWJsaWNhdGlvbjsKIAlOYW1lc3BhY2VJbmZvICpwdWJzY2hlbWE7CisJ Y2hhcgkJcHVidHlwZTsKIH0gUHVibGljYXRpb25TY2hlbWFJbmZvOwogCiAvKgpkaWZmIC0t Z2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwgYi9zcmMvYmluL3BnX2R1 bXAvdC8wMDJfcGdfZHVtcC5wbAppbmRleCBlYjNlYzUzNGI0ZC4uMTc1N2RlYzhjNjUgMTAw NjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsCisrKyBiL3NyYy9i aW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsCkBAIC0yOTI3LDcgKzI5MjcsNyBAQCBteSAl dGVzdHMgPSAoCiAJCWNyZWF0ZV9vcmRlciA9PiA1MCwKIAkJY3JlYXRlX3NxbCA9PiAnQ1JF QVRFIFBVQkxJQ0FUSU9OIHB1YjE7JywKIAkJcmVnZXhwID0+IHFyL14KLQkJCVxRQ1JFQVRF IFBVQkxJQ0FUSU9OIHB1YjEgV0lUSCAocHVibGlzaCA9ICdpbnNlcnQsIHVwZGF0ZSwgZGVs ZXRlLCB0cnVuY2F0ZScpO1xFCisJCQlcUUNSRUFURSBQVUJMSUNBVElPTiBwdWIxIFdJVEgg KHB1Ymxpc2ggPSAnaW5zZXJ0LCB1cGRhdGUsIGRlbGV0ZSwgdHJ1bmNhdGUsIHNlcXVlbmNl Jyk7XEUKIAkJCS94bSwKIAkJbGlrZSA9PiB7ICVmdWxsX3J1bnMsIHNlY3Rpb25fcG9zdF9k YXRhID0+IDEsIH0sCiAJfSwKQEAgLTI5NDcsNyArMjk0Nyw3IEBAIG15ICV0ZXN0cyA9ICgK IAkJY3JlYXRlX29yZGVyID0+IDUwLAogCQljcmVhdGVfc3FsID0+ICdDUkVBVEUgUFVCTElD QVRJT04gcHViMzsnLAogCQlyZWdleHAgPT4gcXIvXgotCQkJXFFDUkVBVEUgUFVCTElDQVRJ T04gcHViMyBXSVRIIChwdWJsaXNoID0gJ2luc2VydCwgdXBkYXRlLCBkZWxldGUsIHRydW5j YXRlJyk7XEUKKwkJCVxRQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjMgV0lUSCAocHVibGlzaCA9 ICdpbnNlcnQsIHVwZGF0ZSwgZGVsZXRlLCB0cnVuY2F0ZSwgc2VxdWVuY2UnKTtcRQogCQkJ L3htLAogCQlsaWtlID0+IHsgJWZ1bGxfcnVucywgc2VjdGlvbl9wb3N0X2RhdGEgPT4gMSwg fSwKIAl9LApAQCAtMjk1Niw3ICsyOTU2LDI3IEBAIG15ICV0ZXN0cyA9ICgKIAkJY3JlYXRl X29yZGVyID0+IDUwLAogCQljcmVhdGVfc3FsID0+ICdDUkVBVEUgUFVCTElDQVRJT04gcHVi NDsnLAogCQlyZWdleHAgPT4gcXIvXgotCQkJXFFDUkVBVEUgUFVCTElDQVRJT04gcHViNCBX SVRIIChwdWJsaXNoID0gJ2luc2VydCwgdXBkYXRlLCBkZWxldGUsIHRydW5jYXRlJyk7XEUK KwkJCVxRQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjQgV0lUSCAocHVibGlzaCA9ICdpbnNlcnQs IHVwZGF0ZSwgZGVsZXRlLCB0cnVuY2F0ZSwgc2VxdWVuY2UnKTtcRQorCQkJL3htLAorCQls aWtlID0+IHsgJWZ1bGxfcnVucywgc2VjdGlvbl9wb3N0X2RhdGEgPT4gMSwgfSwKKwl9LAor CisJJ0NSRUFURSBQVUJMSUNBVElPTiBwdWI1JyA9PiB7CisJCWNyZWF0ZV9vcmRlciA9PiA1 MCwKKwkJY3JlYXRlX3NxbCA9PiAnQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjUKKwkJCQkJCSBG T1IgQUxMIFNFUVVFTkNFUworCQkJCQkJIFdJVEggKHB1Ymxpc2ggPSBcJ1wnKTsnLAorCQly ZWdleHAgPT4gcXIvXgorCQkJXFFDUkVBVEUgUFVCTElDQVRJT04gcHViNSBGT1IgQUxMIFNF UVVFTkNFUyBXSVRIIChwdWJsaXNoID0gJycpO1xFCisJCQkveG0sCisJCWxpa2UgPT4geyAl ZnVsbF9ydW5zLCBzZWN0aW9uX3Bvc3RfZGF0YSA9PiAxLCB9LAorCX0sCisKKwknQ1JFQVRF IFBVQkxJQ0FUSU9OIHB1YjYnID0+IHsKKwkJY3JlYXRlX29yZGVyID0+IDUwLAorCQljcmVh dGVfc3FsID0+ICdDUkVBVEUgUFVCTElDQVRJT04gcHViNjsnLAorCQlyZWdleHAgPT4gcXIv XgorCQkJXFFDUkVBVEUgUFVCTElDQVRJT04gcHViNiBXSVRIIChwdWJsaXNoID0gJ2luc2Vy dCwgdXBkYXRlLCBkZWxldGUsIHRydW5jYXRlLCBzZXF1ZW5jZScpO1xFCiAJCQkveG0sCiAJ CWxpa2UgPT4geyAlZnVsbF9ydW5zLCBzZWN0aW9uX3Bvc3RfZGF0YSA9PiAxLCB9LAogCX0s CkBAIC0zMTAyLDYgKzMxMjIsMjcgQEAgbXkgJXRlc3RzID0gKAogCQl1bmxpa2UgPT4geyBl eGNsdWRlX2R1bXBfdGVzdF9zY2hlbWEgPT4gMSwgfSwKIAkgIH0sCiAKKwknQUxURVIgUFVC TElDQVRJT04gcHViMyBBREQgU0VRVUVOQ0VTIElOIFNDSEVNQSBkdW1wX3Rlc3QnID0+IHsK KwkJY3JlYXRlX29yZGVyID0+IDUxLAorCQljcmVhdGVfc3FsID0+CisJCSAgJ0FMVEVSIFBV QkxJQ0FUSU9OIHB1YjMgQUREIFNFUVVFTkNFUyBJTiBTQ0hFTUEgZHVtcF90ZXN0OycsCisJ CXJlZ2V4cCA9PiBxci9eCisJCQlcUUFMVEVSIFBVQkxJQ0FUSU9OIHB1YjMgQUREIFNFUVVF TkNFUyBJTiBTQ0hFTUEgZHVtcF90ZXN0O1xFCisJCQkveG0sCisJCWxpa2UgICA9PiB7ICVm dWxsX3J1bnMsIHNlY3Rpb25fcG9zdF9kYXRhID0+IDEsIH0sCisJCXVubGlrZSA9PiB7IGV4 Y2x1ZGVfZHVtcF90ZXN0X3NjaGVtYSA9PiAxLCB9LAorCX0sCisKKwknQUxURVIgUFVCTElD QVRJT04gcHViMyBBREQgU0VRVUVOQ0VTIElOIFNDSEVNQSBwdWJsaWMnID0+IHsKKwkJY3Jl YXRlX29yZGVyID0+IDUyLAorCQljcmVhdGVfc3FsID0+CisJCSAgJ0FMVEVSIFBVQkxJQ0FU SU9OIHB1YjMgQUREIFNFUVVFTkNFUyBJTiBTQ0hFTUEgcHVibGljOycsCisJCXJlZ2V4cCA9 PiBxci9eCisJCQlcUUFMVEVSIFBVQkxJQ0FUSU9OIHB1YjMgQUREIFNFUVVFTkNFUyBJTiBT Q0hFTUEgcHVibGljO1xFCisJCQkveG0sCisJCWxpa2UgPT4geyAlZnVsbF9ydW5zLCBzZWN0 aW9uX3Bvc3RfZGF0YSA9PiAxLCB9LAorCX0sCisKIAknQ1JFQVRFIFNDSEVNQSBwdWJsaWMn ID0+IHsKIAkJcmVnZXhwID0+IHFyL15DUkVBVEUgU0NIRU1BIHB1YmxpYzsvbSwKIApkaWZm IC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMgYi9zcmMvYmluL3BzcWwvZGVzY3Jp YmUuYwppbmRleCA1MDc3ZTdiMzU4MS4uZTBkYzRkY2ZjY2QgMTAwNjQ0Ci0tLSBhL3NyYy9i aW4vcHNxbC9kZXNjcmliZS5jCisrKyBiL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCkBAIC0x NzExLDI4ICsxNzExLDE5IEBAIGRlc2NyaWJlT25lVGFibGVEZXRhaWxzKGNvbnN0IGNoYXIg KnNjaGVtYW5hbWUsCiAJaWYgKHRhYmxlaW5mby5yZWxraW5kID09IFJFTEtJTkRfU0VRVUVO Q0UpCiAJewogCQlQR3Jlc3VsdCAgICpyZXN1bHQgPSBOVUxMOwotCQlwcmludFF1ZXJ5T3B0 IG15b3B0ID0gcHNldC5wb3B0OwotCQljaGFyCSAgICpmb290ZXJzWzJdID0ge05VTEwsIE5V TEx9OwogCiAJCWlmIChwc2V0LnN2ZXJzaW9uID49IDEwMDAwMCkKIAkJewogCQkJcHJpbnRm UFFFeHBCdWZmZXIoJmJ1ZiwKLQkJCQkJCQkgICJTRUxFQ1QgcGdfY2F0YWxvZy5mb3JtYXRf dHlwZShzZXF0eXBpZCwgTlVMTCkgQVMgXCIlc1wiLFxuIgotCQkJCQkJCSAgIiAgICAgICBz ZXFzdGFydCBBUyBcIiVzXCIsXG4iCi0JCQkJCQkJICAiICAgICAgIHNlcW1pbiBBUyBcIiVz XCIsXG4iCi0JCQkJCQkJICAiICAgICAgIHNlcW1heCBBUyBcIiVzXCIsXG4iCi0JCQkJCQkJ ICAiICAgICAgIHNlcWluY3JlbWVudCBBUyBcIiVzXCIsXG4iCi0JCQkJCQkJICAiICAgICAg IENBU0UgV0hFTiBzZXFjeWNsZSBUSEVOICclcycgRUxTRSAnJXMnIEVORCBBUyBcIiVzXCIs XG4iCi0JCQkJCQkJICAiICAgICAgIHNlcWNhY2hlIEFTIFwiJXNcIlxuIiwKLQkJCQkJCQkg IGdldHRleHRfbm9vcCgiVHlwZSIpLAotCQkJCQkJCSAgZ2V0dGV4dF9ub29wKCJTdGFydCIp LAotCQkJCQkJCSAgZ2V0dGV4dF9ub29wKCJNaW5pbXVtIiksCi0JCQkJCQkJICBnZXR0ZXh0 X25vb3AoIk1heGltdW0iKSwKLQkJCQkJCQkgIGdldHRleHRfbm9vcCgiSW5jcmVtZW50Iiks CisJCQkJCQkJICAiU0VMRUNUIHBnX2NhdGFsb2cuZm9ybWF0X3R5cGUoc2VxdHlwaWQsIE5V TEwpLFxuIgorCQkJCQkJCSAgIiAgICAgICBzZXFzdGFydCxcbiIKKwkJCQkJCQkgICIgICAg ICAgc2VxbWluLFxuIgorCQkJCQkJCSAgIiAgICAgICBzZXFtYXgsXG4iCisJCQkJCQkJICAi ICAgICAgIHNlcWluY3JlbWVudCxcbiIKKwkJCQkJCQkgICIgICAgICAgQ0FTRSBXSEVOIHNl cWN5Y2xlIFRIRU4gJyVzJyBFTFNFICclcycgRU5ELFxuIgorCQkJCQkJCSAgIiAgICAgICBz ZXFjYWNoZVxuIiwKIAkJCQkJCQkgIGdldHRleHRfbm9vcCgieWVzIiksCi0JCQkJCQkJICBn ZXR0ZXh0X25vb3AoIm5vIiksCi0JCQkJCQkJICBnZXR0ZXh0X25vb3AoIkN5Y2xlcz8iKSwK LQkJCQkJCQkgIGdldHRleHRfbm9vcCgiQ2FjaGUiKSk7CisJCQkJCQkJICBnZXR0ZXh0X25v b3AoIm5vIikpOwogCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKIAkJCQkJCQkgICJGUk9N IHBnX2NhdGFsb2cucGdfc2VxdWVuY2VcbiIKIAkJCQkJCQkgICJXSEVSRSBzZXFyZWxpZCA9 ICclcyc7IiwKQEAgLTE3NDEsMjIgKzE3MzIsMTUgQEAgZGVzY3JpYmVPbmVUYWJsZURldGFp bHMoY29uc3QgY2hhciAqc2NoZW1hbmFtZSwKIAkJZWxzZQogCQl7CiAJCQlwcmludGZQUUV4 cEJ1ZmZlcigmYnVmLAotCQkJCQkJCSAgIlNFTEVDVCAnYmlnaW50JyBBUyBcIiVzXCIsXG4i Ci0JCQkJCQkJICAiICAgICAgIHN0YXJ0X3ZhbHVlIEFTIFwiJXNcIixcbiIKLQkJCQkJCQkg ICIgICAgICAgbWluX3ZhbHVlIEFTIFwiJXNcIixcbiIKLQkJCQkJCQkgICIgICAgICAgbWF4 X3ZhbHVlIEFTIFwiJXNcIixcbiIKLQkJCQkJCQkgICIgICAgICAgaW5jcmVtZW50X2J5IEFT IFwiJXNcIixcbiIKLQkJCQkJCQkgICIgICAgICAgQ0FTRSBXSEVOIGlzX2N5Y2xlZCBUSEVO ICclcycgRUxTRSAnJXMnIEVORCBBUyBcIiVzXCIsXG4iCi0JCQkJCQkJICAiICAgICAgIGNh Y2hlX3ZhbHVlIEFTIFwiJXNcIlxuIiwKLQkJCQkJCQkgIGdldHRleHRfbm9vcCgiVHlwZSIp LAotCQkJCQkJCSAgZ2V0dGV4dF9ub29wKCJTdGFydCIpLAotCQkJCQkJCSAgZ2V0dGV4dF9u b29wKCJNaW5pbXVtIiksCi0JCQkJCQkJICBnZXR0ZXh0X25vb3AoIk1heGltdW0iKSwKLQkJ CQkJCQkgIGdldHRleHRfbm9vcCgiSW5jcmVtZW50IiksCisJCQkJCQkJICAiU0VMRUNUICdi aWdpbnQnLFxuIgorCQkJCQkJCSAgIiAgICAgICBzdGFydF92YWx1ZSxcbiIKKwkJCQkJCQkg ICIgICAgICAgbWluX3ZhbHVlLFxuIgorCQkJCQkJCSAgIiAgICAgICBtYXhfdmFsdWUsXG4i CisJCQkJCQkJICAiICAgICAgIGluY3JlbWVudF9ieSxcbiIKKwkJCQkJCQkgICIgICAgICAg Q0FTRSBXSEVOIGlzX2N5Y2xlZCBUSEVOICclcycgRUxTRSAnJXMnIEVORCxcbiIKKwkJCQkJ CQkgICIgICAgICAgY2FjaGVfdmFsdWVcbiIsCiAJCQkJCQkJICBnZXR0ZXh0X25vb3AoInll cyIpLAotCQkJCQkJCSAgZ2V0dGV4dF9ub29wKCJubyIpLAotCQkJCQkJCSAgZ2V0dGV4dF9u b29wKCJDeWNsZXM/IiksCi0JCQkJCQkJICBnZXR0ZXh0X25vb3AoIkNhY2hlIikpOworCQkJ CQkJCSAgZ2V0dGV4dF9ub29wKCJubyIpKTsKIAkJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYs ICJGUk9NICVzIiwgZm10SWQoc2NoZW1hbmFtZSkpOwogCQkJLyogbXVzdCBiZSBzZXBhcmF0 ZSBiZWNhdXNlIGZtdElkIGlzbid0IHJlZW50cmFudCAqLwogCQkJYXBwZW5kUFFFeHBCdWZm ZXIoJmJ1ZiwgIi4lczsiLCBmbXRJZChyZWxhdGlvbm5hbWUpKTsKQEAgLTE3NjYsNiArMTc1 MCw1OSBAQCBkZXNjcmliZU9uZVRhYmxlRGV0YWlscyhjb25zdCBjaGFyICpzY2hlbWFuYW1l LAogCQlpZiAoIXJlcykKIAkJCWdvdG8gZXJyb3JfcmV0dXJuOwogCisJCW51bXJvd3MgPSBQ UW50dXBsZXMocmVzKTsKKworCQkvKgorCQkgKiBYWFggcmVzZXQgdG8gdXNlIGV4cGFuZGVk IG91dHB1dCBmb3Igc2VxdWVuY2VzIChtYXliZSB3ZSBzaG91bGQKKwkJICoga2VlcCB0aGlz IGRpc2FibGVkLCBqdXN0IGxpa2UgZm9yIHRhYmxlcz8pCisJCSAqLworCQlteW9wdC5leHBh bmRlZCA9IHBzZXQucG9wdC50b3B0LmV4cGFuZGVkOworCisJCXByaW50VGFibGVJbml0KCZj b250LCAmbXlvcHQsIHRpdGxlLmRhdGEsIDcsIG51bXJvd3MpOworCQlwcmludFRhYmxlSW5p dGlhbGl6ZWQgPSB0cnVlOworCisJCWlmICh0YWJsZWluZm8ucmVscGVyc2lzdGVuY2UgPT0g J3UnKQorCQkJcHJpbnRmUFFFeHBCdWZmZXIoJnRpdGxlLCBfKCJVbmxvZ2dlZCBzZXF1ZW5j ZSBcIiVzLiVzXCIiKSwKKwkJCQkJCQkgIHNjaGVtYW5hbWUsIHJlbGF0aW9ubmFtZSk7CisJ CWVsc2UKKwkJCXByaW50ZlBRRXhwQnVmZmVyKCZ0aXRsZSwgXygiU2VxdWVuY2UgXCIlcy4l c1wiIiksCisJCQkJCQkJICBzY2hlbWFuYW1lLCByZWxhdGlvbm5hbWUpOworCisJCXByaW50 VGFibGVBZGRIZWFkZXIoJmNvbnQsIGdldHRleHRfbm9vcCgiVHlwZSIpLCB0cnVlLCAnbCcp OworCQlwcmludFRhYmxlQWRkSGVhZGVyKCZjb250LCBnZXR0ZXh0X25vb3AoIlN0YXJ0Iiks IHRydWUsICdyJyk7CisJCXByaW50VGFibGVBZGRIZWFkZXIoJmNvbnQsIGdldHRleHRfbm9v cCgiTWluaW11bSIpLCB0cnVlLCAncicpOworCQlwcmludFRhYmxlQWRkSGVhZGVyKCZjb250 LCBnZXR0ZXh0X25vb3AoIk1heGltdW0iKSwgdHJ1ZSwgJ3InKTsKKwkJcHJpbnRUYWJsZUFk ZEhlYWRlcigmY29udCwgZ2V0dGV4dF9ub29wKCJJbmNyZW1lbnQiKSwgdHJ1ZSwgJ3InKTsK KwkJcHJpbnRUYWJsZUFkZEhlYWRlcigmY29udCwgZ2V0dGV4dF9ub29wKCJDeWNsZXM/Iiks IHRydWUsICdsJyk7CisJCXByaW50VGFibGVBZGRIZWFkZXIoJmNvbnQsIGdldHRleHRfbm9v cCgiQ2FjaGUiKSwgdHJ1ZSwgJ3InKTsKKworCQkvKiBHZW5lcmF0ZSB0YWJsZSBjZWxscyB0 byBiZSBwcmludGVkICovCisJCWZvciAoaSA9IDA7IGkgPCBudW1yb3dzOyBpKyspCisJCXsK KwkJCS8qIFR5cGUgKi8KKwkJCXByaW50VGFibGVBZGRDZWxsKCZjb250LCBQUWdldHZhbHVl KHJlcywgaSwgMCksIGZhbHNlLCBmYWxzZSk7CisKKwkJCS8qIFN0YXJ0ICovCisJCQlwcmlu dFRhYmxlQWRkQ2VsbCgmY29udCwgUFFnZXR2YWx1ZShyZXMsIGksIDEpLCBmYWxzZSwgZmFs c2UpOworCisJCQkvKiBNaW5pbXVtICovCisJCQlwcmludFRhYmxlQWRkQ2VsbCgmY29udCwg UFFnZXR2YWx1ZShyZXMsIGksIDIpLCBmYWxzZSwgZmFsc2UpOworCisJCQkvKiBNYXhpbXVt ICovCisJCQlwcmludFRhYmxlQWRkQ2VsbCgmY29udCwgUFFnZXR2YWx1ZShyZXMsIGksIDMp LCBmYWxzZSwgZmFsc2UpOworCisJCQkvKiBJbmNyZW1lbnQgKi8KKwkJCXByaW50VGFibGVB ZGRDZWxsKCZjb250LCBQUWdldHZhbHVlKHJlcywgaSwgNCksIGZhbHNlLCBmYWxzZSk7CisK KwkJCS8qIEN5Y2xlcz8gKi8KKwkJCXByaW50VGFibGVBZGRDZWxsKCZjb250LCBQUWdldHZh bHVlKHJlcywgaSwgNSksIGZhbHNlLCBmYWxzZSk7CisKKwkJCS8qIENhY2hlICovCisJCQlw cmludFRhYmxlQWRkQ2VsbCgmY29udCwgUFFnZXR2YWx1ZShyZXMsIGksIDYpLCBmYWxzZSwg ZmFsc2UpOworCQl9CisKKwkJLyogRm9vdGVyIGluZm9ybWF0aW9uIGFib3V0IGEgc2VxdWVu Y2UgKi8KKwogCQkvKiBHZXQgdGhlIGNvbHVtbiB0aGF0IG93bnMgdGhpcyBzZXF1ZW5jZSAq LwogCQlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLCAiU0VMRUNUIHBnX2NhdGFsb2cucXVvdGVf aWRlbnQobnNwbmFtZSkgfHwgJy4nIHx8IgogCQkJCQkJICAiXG4gICBwZ19jYXRhbG9nLnF1 b3RlX2lkZW50KHJlbG5hbWUpIHx8ICcuJyB8fCIKQEAgLTE3OTcsMzIgKzE4MzQsNjMgQEAg ZGVzY3JpYmVPbmVUYWJsZURldGFpbHMoY29uc3QgY2hhciAqc2NoZW1hbmFtZSwKIAkJCXN3 aXRjaCAoUFFnZXR2YWx1ZShyZXN1bHQsIDAsIDEpWzBdKQogCQkJewogCQkJCWNhc2UgJ2En OgotCQkJCQlmb290ZXJzWzBdID0gcHNwcmludGYoXygiT3duZWQgYnk6ICVzIiksCi0JCQkJ CQkJCQkJICBQUWdldHZhbHVlKHJlc3VsdCwgMCwgMCkpOworCQkJCQlwcmludFRhYmxlQWRk Rm9vdGVyKCZjb250LAorCQkJCQkJCQkJCXBzcHJpbnRmKF8oIk93bmVkIGJ5OiAlcyIpLAor CQkJCQkJCQkJCQkJIFBRZ2V0dmFsdWUocmVzdWx0LCAwLCAwKSkpOwogCQkJCQlicmVhazsK IAkJCQljYXNlICdpJzoKLQkJCQkJZm9vdGVyc1swXSA9IHBzcHJpbnRmKF8oIlNlcXVlbmNl IGZvciBpZGVudGl0eSBjb2x1bW46ICVzIiksCi0JCQkJCQkJCQkJICBQUWdldHZhbHVlKHJl c3VsdCwgMCwgMCkpOworCQkJCQlwcmludFRhYmxlQWRkRm9vdGVyKCZjb250LAorCQkJCQkJ CQkJCXBzcHJpbnRmKF8oIlNlcXVlbmNlIGZvciBpZGVudGl0eSBjb2x1bW46ICVzIiksCisJ CQkJCQkJCQkJCQkgUFFnZXR2YWx1ZShyZXN1bHQsIDAsIDApKSk7CiAJCQkJCWJyZWFrOwog CQkJfQogCQl9CiAJCVBRY2xlYXIocmVzdWx0KTsKIAotCQlpZiAodGFibGVpbmZvLnJlbHBl cnNpc3RlbmNlID09ICd1JykKLQkJCXByaW50ZlBRRXhwQnVmZmVyKCZ0aXRsZSwgXygiVW5s b2dnZWQgc2VxdWVuY2UgXCIlcy4lc1wiIiksCi0JCQkJCQkJICBzY2hlbWFuYW1lLCByZWxh dGlvbm5hbWUpOwotCQllbHNlCi0JCQlwcmludGZQUUV4cEJ1ZmZlcigmdGl0bGUsIF8oIlNl cXVlbmNlIFwiJXMuJXNcIiIpLAotCQkJCQkJCSAgc2NoZW1hbmFtZSwgcmVsYXRpb25uYW1l KTsKKwkJLyogcHJpbnQgYW55IHB1YmxpY2F0aW9ucyAqLworCQlpZiAocHNldC5zdmVyc2lv biA+PSAxNzAwMDApCisJCXsKKwkJCWludAkJCXR1cGxlcyA9IDA7CiAKLQkJbXlvcHQuZm9v dGVycyA9IGZvb3RlcnM7Ci0JCW15b3B0LnRvcHQuZGVmYXVsdF9mb290ZXIgPSBmYWxzZTsK LQkJbXlvcHQudGl0bGUgPSB0aXRsZS5kYXRhOwotCQlteW9wdC50cmFuc2xhdGVfaGVhZGVy ID0gdHJ1ZTsKKwkJCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsCisJCQkJCQkJICAiU0VMRUNU IHB1Ym5hbWVcbiIKKwkJCQkJCQkgICJGUk9NIHBnX2NhdGFsb2cucGdfcHVibGljYXRpb24g cFxuIgorCQkJCQkJCSAgIgkJSk9JTiBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uX25hbWVz cGFjZSBwbiBPTiBwLm9pZCA9IHBuLnBucHViaWRcbiIKKwkJCQkJCQkgICIJCUpPSU4gcGdf Y2F0YWxvZy5wZ19jbGFzcyBwYyBPTiBwYy5yZWxuYW1lc3BhY2UgPSBwbi5wbm5zcGlkXG4i CisJCQkJCQkJICAiV0hFUkUgcGMub2lkID0nJXMnIGFuZCBwbi5wbnR5cGUgPSAncycgYW5k IHBnX2NhdGFsb2cucGdfcmVsYXRpb25faXNfcHVibGlzaGFibGUoJyVzJylcbiIKKwkJCQkJ CQkgICJVTklPTlxuIgorCQkJCQkJCSAgIlNFTEVDVCBwdWJuYW1lXG4iCisJCQkJCQkJICAi RlJPTSBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uIHBcbiIKKwkJCQkJCQkgICIJCUpPSU4g cGdfY2F0YWxvZy5wZ19wdWJsaWNhdGlvbl9yZWwgcHIgT04gcC5vaWQgPSBwci5wcnB1Ymlk XG4iCisJCQkJCQkJICAiV0hFUkUgcHIucHJyZWxpZCA9ICclcydcbiIKKwkJCQkJCQkgICJV TklPTlxuIgorCQkJCQkJCSAgIlNFTEVDVCBwdWJuYW1lXG4iCisJCQkJCQkJICAiRlJPTSBw Z19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uIHBcbiIKKwkJCQkJCQkgICJXSEVSRSBwLnB1YmFs bHNlcXVlbmNlcyBBTkQgcGdfY2F0YWxvZy5wZ19yZWxhdGlvbl9pc19wdWJsaXNoYWJsZSgn JXMnKVxuIgorCQkJCQkJCSAgIk9SREVSIEJZIDE7IiwKKwkJCQkJCQkgIG9pZCwgb2lkLCBv aWQsIG9pZCk7CiAKLQkJcHJpbnRRdWVyeShyZXMsICZteW9wdCwgcHNldC5xdWVyeUZvdXQs IGZhbHNlLCBwc2V0LmxvZ2ZpbGUpOworCQkJcmVzdWx0ID0gUFNRTGV4ZWMoYnVmLmRhdGEp OworCQkJaWYgKCFyZXN1bHQpCisJCQkJZ290byBlcnJvcl9yZXR1cm47CisJCQllbHNlCisJ CQkJdHVwbGVzID0gUFFudHVwbGVzKHJlc3VsdCk7CisKKwkJCWlmICh0dXBsZXMgPiAwKQor CQkJCXByaW50VGFibGVBZGRGb290ZXIoJmNvbnQsIF8oIlB1YmxpY2F0aW9uczoiKSk7CisK KwkJCS8qIE1pZ2h0IGJlIGFuIGVtcHR5IHNldCAtIHRoYXQncyBvayAqLworCQkJZm9yIChp ID0gMDsgaSA8IHR1cGxlczsgaSsrKQorCQkJeworCQkJCXByaW50ZlBRRXhwQnVmZmVyKCZi dWYsICIgICAgXCIlc1wiIiwKKwkJCQkJCQkJICBQUWdldHZhbHVlKHJlc3VsdCwgaSwgMCkp OworCisJCQkJcHJpbnRUYWJsZUFkZEZvb3RlcigmY29udCwgYnVmLmRhdGEpOworCQkJfQor CQkJUFFjbGVhcihyZXN1bHQpOworCQl9CiAKLQkJZnJlZShmb290ZXJzWzBdKTsKKwkJcHJp bnRUYWJsZSgmY29udCwgcHNldC5xdWVyeUZvdXQsIGZhbHNlLCBwc2V0LmxvZ2ZpbGUpOwog CiAJCXJldHZhbCA9IHRydWU7CiAJCWdvdG8gZXJyb3JfcmV0dXJuOwkJLyogbm90IGFuIGVy cm9yLCBqdXN0IHJldHVybiBlYXJseSAqLwpAQCAtMjA0OSw2ICsyMTE3LDExIEBAIGRlc2Ny aWJlT25lVGFibGVEZXRhaWxzKGNvbnN0IGNoYXIgKnNjaGVtYW5hbWUsCiAJZm9yIChpID0g MDsgaSA8IGNvbHM7IGkrKykKIAkJcHJpbnRUYWJsZUFkZEhlYWRlcigmY29udCwgaGVhZGVy c1tpXSwgdHJ1ZSwgJ2wnKTsKIAorCXJlcyA9IFBTUUxleGVjKGJ1Zi5kYXRhKTsKKwlpZiAo IXJlcykKKwkJZ290byBlcnJvcl9yZXR1cm47CisJbnVtcm93cyA9IFBRbnR1cGxlcyhyZXMp OworCiAJLyogR2VuZXJhdGUgdGFibGUgY2VsbHMgdG8gYmUgcHJpbnRlZCAqLwogCWZvciAo aSA9IDA7IGkgPCBudW1yb3dzOyBpKyspCiAJewpAQCAtMjk3NCw3ICszMDQ3LDcgQEAgZGVz Y3JpYmVPbmVUYWJsZURldGFpbHMoY29uc3QgY2hhciAqc2NoZW1hbmFtZSwKIAkJCQkJCQkJ ICAiRlJPTSBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uIHBcbiIKIAkJCQkJCQkJICAiICAg ICBKT0lOIHBnX2NhdGFsb2cucGdfcHVibGljYXRpb25fbmFtZXNwYWNlIHBuIE9OIHAub2lk ID0gcG4ucG5wdWJpZFxuIgogCQkJCQkJCQkgICIgICAgIEpPSU4gcGdfY2F0YWxvZy5wZ19j bGFzcyBwYyBPTiBwYy5yZWxuYW1lc3BhY2UgPSBwbi5wbm5zcGlkXG4iCi0JCQkJCQkJCSAg IldIRVJFIHBjLm9pZCA9JyVzJyBhbmQgcGdfY2F0YWxvZy5wZ19yZWxhdGlvbl9pc19wdWJs aXNoYWJsZSgnJXMnKVxuIgorCQkJCQkJCQkgICJXSEVSRSBwYy5vaWQgPSclcycgYW5kIHBu LnBudHlwZSA9ICd0JyBhbmQgcGdfY2F0YWxvZy5wZ19yZWxhdGlvbl9pc19wdWJsaXNoYWJs ZSgnJXMnKVxuIgogCQkJCQkJCQkgICJVTklPTlxuIgogCQkJCQkJCQkgICJTRUxFQ1QgcHVi bmFtZVxuIgogCQkJCQkJCQkgICIgICAgICwgcGdfZ2V0X2V4cHIocHIucHJxdWFsLCBjLm9p ZClcbiIKQEAgLTUxMTEsNyArNTE4NCw3IEBAIGxpc3RTY2hlbWFzKGNvbnN0IGNoYXIgKnBh dHRlcm4sIGJvb2wgdmVyYm9zZSwgYm9vbCBzaG93U3lzdGVtKQogCQlpbnQJCQlpOwogCiAJ CXByaW50ZlBRRXhwQnVmZmVyKCZidWYsCi0JCQkJCQkgICJTRUxFQ1QgcHVibmFtZSBcbiIK KwkJCQkJCSAgIlNFTEVDVCBwdWJuYW1lLCAoQ0FTRSBXSEVOIHBudHlwZSA9ICd0JyBUSEVO ICd0YWJsZXMnIEVMU0UgJ3NlcXVlbmNlcycgRU5EKSBBUyBwdWJ0eXBlXG4iCiAJCQkJCQkg ICJGUk9NIHBnX2NhdGFsb2cucGdfcHVibGljYXRpb24gcFxuIgogCQkJCQkJICAiICAgICBK T0lOIHBnX2NhdGFsb2cucGdfcHVibGljYXRpb25fbmFtZXNwYWNlIHBuIE9OIHAub2lkID0g cG4ucG5wdWJpZFxuIgogCQkJCQkJICAiICAgICBKT0lOIHBnX2NhdGFsb2cucGdfbmFtZXNw YWNlIG4gT04gbi5vaWQgPSBwbi5wbm5zcGlkIFxuIgpAQCAtNTEzNyw4ICs1MjEwLDkgQEAg bGlzdFNjaGVtYXMoY29uc3QgY2hhciAqcGF0dGVybiwgYm9vbCB2ZXJib3NlLCBib29sIHNo b3dTeXN0ZW0pCiAJCQkvKiBNaWdodCBiZSBhbiBlbXB0eSBzZXQgLSB0aGF0J3Mgb2sgKi8K IAkJCWZvciAoaSA9IDA7IGkgPCBwdWJfc2NoZW1hX3R1cGxlczsgaSsrKQogCQkJewotCQkJ CXByaW50ZlBRRXhwQnVmZmVyKCZidWYsICIgICAgXCIlc1wiIiwKLQkJCQkJCQkJICBQUWdl dHZhbHVlKHJlc3VsdCwgaSwgMCkpOworCQkJCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsICIg ICAgXCIlc1wiICglcykiLAorCQkJCQkJCQkgIFBRZ2V0dmFsdWUocmVzdWx0LCBpLCAwKSwK KwkJCQkJCQkJICBQUWdldHZhbHVlKHJlc3VsdCwgaSwgMSkpOwogCiAJCQkJZm9vdGVyc1tp ICsgMV0gPSBwZ19zdHJkdXAoYnVmLmRhdGEpOwogCQkJfQpAQCAtNjI1NCw3ICs2MzI4LDcg QEAgbGlzdFB1YmxpY2F0aW9ucyhjb25zdCBjaGFyICpwYXR0ZXJuKQogCVBRRXhwQnVmZmVy RGF0YSBidWY7CiAJUEdyZXN1bHQgICAqcmVzOwogCXByaW50UXVlcnlPcHQgbXlvcHQgPSBw c2V0LnBvcHQ7Ci0Jc3RhdGljIGNvbnN0IGJvb2wgdHJhbnNsYXRlX2NvbHVtbnNbXSA9IHtm YWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2V9 OworCXN0YXRpYyBjb25zdCBib29sIHRyYW5zbGF0ZV9jb2x1bW5zW10gPSB7ZmFsc2UsIGZh bHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwg ZmFsc2V9OwogCiAJaWYgKHBzZXQuc3ZlcnNpb24gPCAxMDAwMDApCiAJewpAQCAtNjI2OCwy MyArNjM0Miw0NSBAQCBsaXN0UHVibGljYXRpb25zKGNvbnN0IGNoYXIgKnBhdHRlcm4pCiAK IAlpbml0UFFFeHBCdWZmZXIoJmJ1Zik7CiAKLQlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLAot CQkJCQkgICJTRUxFQ1QgcHVibmFtZSBBUyBcIiVzXCIsXG4iCi0JCQkJCSAgIiAgcGdfY2F0 YWxvZy5wZ19nZXRfdXNlcmJ5aWQocHVib3duZXIpIEFTIFwiJXNcIixcbiIKLQkJCQkJICAi ICBwdWJhbGx0YWJsZXMgQVMgXCIlc1wiLFxuIgotCQkJCQkgICIgIHB1Ymluc2VydCBBUyBc IiVzXCIsXG4iCi0JCQkJCSAgIiAgcHVidXBkYXRlIEFTIFwiJXNcIixcbiIKLQkJCQkJICAi ICBwdWJkZWxldGUgQVMgXCIlc1wiIiwKLQkJCQkJICBnZXR0ZXh0X25vb3AoIk5hbWUiKSwK LQkJCQkJICBnZXR0ZXh0X25vb3AoIk93bmVyIiksCi0JCQkJCSAgZ2V0dGV4dF9ub29wKCJB bGwgdGFibGVzIiksCi0JCQkJCSAgZ2V0dGV4dF9ub29wKCJJbnNlcnRzIiksCi0JCQkJCSAg Z2V0dGV4dF9ub29wKCJVcGRhdGVzIiksCi0JCQkJCSAgZ2V0dGV4dF9ub29wKCJEZWxldGVz IikpOworCWlmIChwc2V0LnN2ZXJzaW9uID49IDE3MDAwMCkKKwkJcHJpbnRmUFFFeHBCdWZm ZXIoJmJ1ZiwKKwkJCQkJCSAgIlNFTEVDVCBwdWJuYW1lIEFTIFwiJXNcIixcbiIKKwkJCQkJ CSAgIiAgcGdfY2F0YWxvZy5wZ19nZXRfdXNlcmJ5aWQocHVib3duZXIpIEFTIFwiJXNcIixc biIKKwkJCQkJCSAgIiAgcHViYWxsdGFibGVzIEFTIFwiJXNcIixcbiIKKwkJCQkJCSAgIiAg cHViYWxsc2VxdWVuY2VzIEFTIFwiJXNcIixcbiIKKwkJCQkJCSAgIiAgcHViaW5zZXJ0IEFT IFwiJXNcIixcbiIKKwkJCQkJCSAgIiAgcHVidXBkYXRlIEFTIFwiJXNcIixcbiIKKwkJCQkJ CSAgIiAgcHViZGVsZXRlIEFTIFwiJXNcIiIsCisJCQkJCQkgIGdldHRleHRfbm9vcCgiTmFt ZSIpLAorCQkJCQkJICBnZXR0ZXh0X25vb3AoIk93bmVyIiksCisJCQkJCQkgIGdldHRleHRf bm9vcCgiQWxsIHRhYmxlcyIpLAorCQkJCQkJICBnZXR0ZXh0X25vb3AoIkFsbCBzZXF1ZW5j ZXMiKSwKKwkJCQkJCSAgZ2V0dGV4dF9ub29wKCJJbnNlcnRzIiksCisJCQkJCQkgIGdldHRl eHRfbm9vcCgiVXBkYXRlcyIpLAorCQkJCQkJICBnZXR0ZXh0X25vb3AoIkRlbGV0ZXMiKSk7 CisJZWxzZQorCQlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLAorCQkJCQkJICAiU0VMRUNUIHB1 Ym5hbWUgQVMgXCIlc1wiLFxuIgorCQkJCQkJICAiICBwZ19jYXRhbG9nLnBnX2dldF91c2Vy YnlpZChwdWJvd25lcikgQVMgXCIlc1wiLFxuIgorCQkJCQkJICAiICBwdWJhbGx0YWJsZXMg QVMgXCIlc1wiLFxuIgorCQkJCQkJICAiICBwdWJpbnNlcnQgQVMgXCIlc1wiLFxuIgorCQkJ CQkJICAiICBwdWJ1cGRhdGUgQVMgXCIlc1wiLFxuIgorCQkJCQkJICAiICBwdWJkZWxldGUg QVMgXCIlc1wiIiwKKwkJCQkJCSAgZ2V0dGV4dF9ub29wKCJOYW1lIiksCisJCQkJCQkgIGdl dHRleHRfbm9vcCgiT3duZXIiKSwKKwkJCQkJCSAgZ2V0dGV4dF9ub29wKCJBbGwgdGFibGVz IiksCisJCQkJCQkgIGdldHRleHRfbm9vcCgiSW5zZXJ0cyIpLAorCQkJCQkJICBnZXR0ZXh0 X25vb3AoIlVwZGF0ZXMiKSwKKwkJCQkJCSAgZ2V0dGV4dF9ub29wKCJEZWxldGVzIikpOwor CiAJaWYgKHBzZXQuc3ZlcnNpb24gPj0gMTEwMDAwKQogCQlhcHBlbmRQUUV4cEJ1ZmZlcigm YnVmLAogCQkJCQkJICAiLFxuICBwdWJ0cnVuY2F0ZSBBUyBcIiVzXCIiLAogCQkJCQkJICBn ZXR0ZXh0X25vb3AoIlRydW5jYXRlcyIpKTsKKwlpZiAocHNldC5zdmVyc2lvbiA+PSAxNzAw MDApCisJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsCisJCQkJCQkgICIsXG4gIHB1YnNlcXVl bmNlIEFTIFwiJXNcIiIsCisJCQkJCQkgIGdldHRleHRfbm9vcCgiU2VxdWVuY2VzIikpOwog CWlmIChwc2V0LnN2ZXJzaW9uID49IDEzMDAwMCkKIAkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1 ZiwKIAkJCQkJCSAgIixcbiAgcHVidmlhcm9vdCBBUyBcIiVzXCIiLApAQCAtNjM3OCw2ICs2 NDc0LDcgQEAgZGVzY3JpYmVQdWJsaWNhdGlvbnMoY29uc3QgY2hhciAqcGF0dGVybikKIAlQ R3Jlc3VsdCAgICpyZXM7CiAJYm9vbAkJaGFzX3B1YnRydW5jYXRlOwogCWJvb2wJCWhhc19w dWJ2aWFyb290OworCWJvb2wJCWhhc19wdWJzZXF1ZW5jZTsKIAogCVBRRXhwQnVmZmVyRGF0 YSB0aXRsZTsKIAlwcmludFRhYmxlQ29udGVudCBjb250OwpAQCAtNjM5NCw2ICs2NDkxLDcg QEAgZGVzY3JpYmVQdWJsaWNhdGlvbnMoY29uc3QgY2hhciAqcGF0dGVybikKIAogCWhhc19w dWJ0cnVuY2F0ZSA9IChwc2V0LnN2ZXJzaW9uID49IDExMDAwMCk7CiAJaGFzX3B1YnZpYXJv b3QgPSAocHNldC5zdmVyc2lvbiA+PSAxMzAwMDApOworCWhhc19wdWJzZXF1ZW5jZSA9IChw c2V0LnN2ZXJzaW9uID49IDE3MDAwMCk7CiAKIAlpbml0UFFFeHBCdWZmZXIoJmJ1Zik7CiAK QEAgLTY0MDcsNiArNjUwNSwxMCBAQCBkZXNjcmliZVB1YmxpY2F0aW9ucyhjb25zdCBjaGFy ICpwYXR0ZXJuKQogCWlmIChoYXNfcHVidmlhcm9vdCkKIAkJYXBwZW5kUFFFeHBCdWZmZXJT dHIoJmJ1ZiwKIAkJCQkJCQkgIiwgcHVidmlhcm9vdCIpOworCWlmIChoYXNfcHVic2VxdWVu Y2UpCisJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZidWYsCisJCQkJCQkJICIsIHB1YmFsbHNl cXVlbmNlcywgcHVic2VxdWVuY2UiKTsKKwogCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZidWYs CiAJCQkJCQkgIlxuRlJPTSBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uXG4iKTsKIApAQCAt NjQ1Miw2ICs2NTU0LDcgQEAgZGVzY3JpYmVQdWJsaWNhdGlvbnMoY29uc3QgY2hhciAqcGF0 dGVybikKIAkJY2hhcgkgICAqcHViaWQgPSBQUWdldHZhbHVlKHJlcywgaSwgMCk7CiAJCWNo YXIJICAgKnB1Ym5hbWUgPSBQUWdldHZhbHVlKHJlcywgaSwgMSk7CiAJCWJvb2wJCXB1YmFs bHRhYmxlcyA9IHN0cmNtcChQUWdldHZhbHVlKHJlcywgaSwgMyksICJ0IikgPT0gMDsKKwkJ Ym9vbAkJcHViYWxsc2VxdWVuY2VzID0gc3RyY21wKFBRZ2V0dmFsdWUocmVzLCBpLCA5KSwg InQiKSA9PSAwOwogCQlwcmludFRhYmxlT3B0IG15b3B0ID0gcHNldC5wb3B0LnRvcHQ7CiAK IAkJaWYgKGhhc19wdWJ0cnVuY2F0ZSkKQEAgLTY0NTksMjkgKzY1NjIsNDMgQEAgZGVzY3Jp YmVQdWJsaWNhdGlvbnMoY29uc3QgY2hhciAqcGF0dGVybikKIAkJaWYgKGhhc19wdWJ2aWFy b290KQogCQkJbmNvbHMrKzsKIAorCQkvKiBzZXF1ZW5jZXMgaGF2ZSB0d28gZXh0cmEgY29s dW1ucyAocHViYWxsc2VxdWVuY2VzLCBwdWJzZXF1ZW5jZXMpICovCisJCWlmIChoYXNfcHVi c2VxdWVuY2UpCisJCQluY29scyArPSAyOworCiAJCWluaXRQUUV4cEJ1ZmZlcigmdGl0bGUp OwogCQlwcmludGZQUUV4cEJ1ZmZlcigmdGl0bGUsIF8oIlB1YmxpY2F0aW9uICVzIiksIHB1 Ym5hbWUpOwogCQlwcmludFRhYmxlSW5pdCgmY29udCwgJm15b3B0LCB0aXRsZS5kYXRhLCBu Y29scywgbnJvd3MpOwogCiAJCXByaW50VGFibGVBZGRIZWFkZXIoJmNvbnQsIGdldHRleHRf bm9vcCgiT3duZXIiKSwgdHJ1ZSwgYWxpZ24pOwogCQlwcmludFRhYmxlQWRkSGVhZGVyKCZj b250LCBnZXR0ZXh0X25vb3AoIkFsbCB0YWJsZXMiKSwgdHJ1ZSwgYWxpZ24pOworCQlpZiAo aGFzX3B1YnNlcXVlbmNlKQorCQkJcHJpbnRUYWJsZUFkZEhlYWRlcigmY29udCwgZ2V0dGV4 dF9ub29wKCJBbGwgc2VxdWVuY2VzIiksIHRydWUsIGFsaWduKTsKIAkJcHJpbnRUYWJsZUFk ZEhlYWRlcigmY29udCwgZ2V0dGV4dF9ub29wKCJJbnNlcnRzIiksIHRydWUsIGFsaWduKTsK IAkJcHJpbnRUYWJsZUFkZEhlYWRlcigmY29udCwgZ2V0dGV4dF9ub29wKCJVcGRhdGVzIiks IHRydWUsIGFsaWduKTsKIAkJcHJpbnRUYWJsZUFkZEhlYWRlcigmY29udCwgZ2V0dGV4dF9u b29wKCJEZWxldGVzIiksIHRydWUsIGFsaWduKTsKIAkJaWYgKGhhc19wdWJ0cnVuY2F0ZSkK IAkJCXByaW50VGFibGVBZGRIZWFkZXIoJmNvbnQsIGdldHRleHRfbm9vcCgiVHJ1bmNhdGVz IiksIHRydWUsIGFsaWduKTsKKwkJaWYgKGhhc19wdWJzZXF1ZW5jZSkKKwkJCXByaW50VGFi bGVBZGRIZWFkZXIoJmNvbnQsIGdldHRleHRfbm9vcCgiU2VxdWVuY2VzIiksIHRydWUsIGFs aWduKTsKIAkJaWYgKGhhc19wdWJ2aWFyb290KQogCQkJcHJpbnRUYWJsZUFkZEhlYWRlcigm Y29udCwgZ2V0dGV4dF9ub29wKCJWaWEgcm9vdCIpLCB0cnVlLCBhbGlnbik7CiAKLQkJcHJp bnRUYWJsZUFkZENlbGwoJmNvbnQsIFBRZ2V0dmFsdWUocmVzLCBpLCAyKSwgZmFsc2UsIGZh bHNlKTsKLQkJcHJpbnRUYWJsZUFkZENlbGwoJmNvbnQsIFBRZ2V0dmFsdWUocmVzLCBpLCAz KSwgZmFsc2UsIGZhbHNlKTsKLQkJcHJpbnRUYWJsZUFkZENlbGwoJmNvbnQsIFBRZ2V0dmFs dWUocmVzLCBpLCA0KSwgZmFsc2UsIGZhbHNlKTsKLQkJcHJpbnRUYWJsZUFkZENlbGwoJmNv bnQsIFBRZ2V0dmFsdWUocmVzLCBpLCA1KSwgZmFsc2UsIGZhbHNlKTsKLQkJcHJpbnRUYWJs ZUFkZENlbGwoJmNvbnQsIFBRZ2V0dmFsdWUocmVzLCBpLCA2KSwgZmFsc2UsIGZhbHNlKTsK KwkJcHJpbnRUYWJsZUFkZENlbGwoJmNvbnQsIFBRZ2V0dmFsdWUocmVzLCBpLCAyKSwgZmFs c2UsIGZhbHNlKTsJLyogb3duZXIgKi8KKwkJcHJpbnRUYWJsZUFkZENlbGwoJmNvbnQsIFBR Z2V0dmFsdWUocmVzLCBpLCAzKSwgZmFsc2UsIGZhbHNlKTsJLyogYWxsIHRhYmxlcyAqLwor CisJCWlmIChoYXNfcHVic2VxdWVuY2UpCisJCQlwcmludFRhYmxlQWRkQ2VsbCgmY29udCwg UFFnZXR2YWx1ZShyZXMsIGksIDkpLCBmYWxzZSwgZmFsc2UpOwkvKiBhbGwgc2VxdWVuY2Vz ICovCisKKwkJcHJpbnRUYWJsZUFkZENlbGwoJmNvbnQsIFBRZ2V0dmFsdWUocmVzLCBpLCA0 KSwgZmFsc2UsIGZhbHNlKTsJLyogaW5zZXJ0ICovCisJCXByaW50VGFibGVBZGRDZWxsKCZj b250LCBQUWdldHZhbHVlKHJlcywgaSwgNSksIGZhbHNlLCBmYWxzZSk7CS8qIHVwZGF0ZSAq LworCQlwcmludFRhYmxlQWRkQ2VsbCgmY29udCwgUFFnZXR2YWx1ZShyZXMsIGksIDYpLCBm YWxzZSwgZmFsc2UpOwkvKiBkZWxldGUgKi8KIAkJaWYgKGhhc19wdWJ0cnVuY2F0ZSkKLQkJ CXByaW50VGFibGVBZGRDZWxsKCZjb250LCBQUWdldHZhbHVlKHJlcywgaSwgNyksIGZhbHNl LCBmYWxzZSk7CisJCQlwcmludFRhYmxlQWRkQ2VsbCgmY29udCwgUFFnZXR2YWx1ZShyZXMs IGksIDcpLCBmYWxzZSwgZmFsc2UpOwkvKiB0cnVuY2F0ZSAqLworCQlpZiAoaGFzX3B1YnNl cXVlbmNlKQorCQkJcHJpbnRUYWJsZUFkZENlbGwoJmNvbnQsIFBRZ2V0dmFsdWUocmVzLCBp LCAxMCksIGZhbHNlLCBmYWxzZSk7IC8qIHNlcXVlbmNlICovCiAJCWlmIChoYXNfcHVidmlh cm9vdCkKLQkJCXByaW50VGFibGVBZGRDZWxsKCZjb250LCBQUWdldHZhbHVlKHJlcywgaSwg OCksIGZhbHNlLCBmYWxzZSk7CisJCQlwcmludFRhYmxlQWRkQ2VsbCgmY29udCwgUFFnZXR2 YWx1ZShyZXMsIGksIDgpLCBmYWxzZSwgZmFsc2UpOwkvKiB2aWEgcm9vdCAqLwogCiAJCWlm ICghcHViYWxsdGFibGVzKQogCQl7CkBAIC02NTEyLDYgKzY2MjksNyBAQCBkZXNjcmliZVB1 YmxpY2F0aW9ucyhjb25zdCBjaGFyICpwYXR0ZXJuKQogCQkJCQkJCSAgIldIRVJFIGMucmVs bmFtZXNwYWNlID0gbi5vaWRcbiIKIAkJCQkJCQkgICIgIEFORCBjLm9pZCA9IHByLnBycmVs aWRcbiIKIAkJCQkJCQkgICIgIEFORCBwci5wcnB1YmlkID0gJyVzJ1xuIgorCQkJCQkJCSAg IiAgQU5EIGMucmVsa2luZCAhPSAnUydcbiIJLyogZXhjbHVkZSBzZXF1ZW5jZXMgKi8KIAkJ CQkJCQkgICJPUkRFUiBCWSAxLDIiLCBwdWJpZCk7CiAJCQlpZiAoIWFkZEZvb3RlclRvUHVi bGljYXRpb25EZXNjKCZidWYsIF8oIlRhYmxlczoiKSwgZmFsc2UsICZjb250KSkKIAkJCQln b3RvIGVycm9yX3JldHVybjsKQEAgLTY1MjMsNyArNjY0MSw3IEBAIGRlc2NyaWJlUHVibGlj YXRpb25zKGNvbnN0IGNoYXIgKnBhdHRlcm4pCiAJCQkJCQkJCSAgIlNFTEVDVCBuLm5zcG5h bWVcbiIKIAkJCQkJCQkJICAiRlJPTSBwZ19jYXRhbG9nLnBnX25hbWVzcGFjZSBuXG4iCiAJ CQkJCQkJCSAgIiAgICAgSk9JTiBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uX25hbWVzcGFj ZSBwbiBPTiBuLm9pZCA9IHBuLnBubnNwaWRcbiIKLQkJCQkJCQkJICAiV0hFUkUgcG4ucG5w dWJpZCA9ICclcydcbiIKKwkJCQkJCQkJICAiV0hFUkUgcG4ucG5wdWJpZCA9ICclcycgQU5E IHBuLnBudHlwZSA9ICd0J1xuIgogCQkJCQkJCQkgICJPUkRFUiBCWSAxIiwgcHViaWQpOwog CQkJCWlmICghYWRkRm9vdGVyVG9QdWJsaWNhdGlvbkRlc2MoJmJ1ZiwgXygiVGFibGVzIGZy b20gc2NoZW1hczoiKSwKIAkJCQkJCQkJCQkJCXRydWUsICZjb250KSkKQEAgLTY1MzEsNiAr NjY0OSwzNyBAQCBkZXNjcmliZVB1YmxpY2F0aW9ucyhjb25zdCBjaGFyICpwYXR0ZXJuKQog CQkJfQogCQl9CiAKKwkJaWYgKCFwdWJhbGxzZXF1ZW5jZXMpCisJCXsKKwkJCS8qIEdldCB0 aGUgc2VxdWVuY2VzIGZvciB0aGUgc3BlY2lmaWVkIHB1YmxpY2F0aW9uICovCisJCQlwcmlu dGZQUUV4cEJ1ZmZlcigmYnVmLAorCQkJCQkJCSAgIlNFTEVDVCBuLm5zcG5hbWUsIGMucmVs bmFtZSwgTlVMTCwgTlVMTFxuIgorCQkJCQkJCSAgIkZST00gcGdfY2F0YWxvZy5wZ19jbGFz cyBjLFxuIgorCQkJCQkJCSAgIiAgICAgcGdfY2F0YWxvZy5wZ19uYW1lc3BhY2UgbixcbiIK KwkJCQkJCQkgICIgICAgIHBnX2NhdGFsb2cucGdfcHVibGljYXRpb25fcmVsIHByXG4iCisJ CQkJCQkJICAiV0hFUkUgYy5yZWxuYW1lc3BhY2UgPSBuLm9pZFxuIgorCQkJCQkJCSAgIiAg QU5EIGMub2lkID0gcHIucHJyZWxpZFxuIgorCQkJCQkJCSAgIiAgQU5EIHByLnBycHViaWQg PSAnJXMnXG4iCisJCQkJCQkJICAiICBBTkQgYy5yZWxraW5kID0gJ1MnXG4iIC8qIG9ubHkg c2VxdWVuY2VzICovCisJCQkJCQkJICAiT1JERVIgQlkgMSwyIiwgcHViaWQpOworCQkJaWYg KCFhZGRGb290ZXJUb1B1YmxpY2F0aW9uRGVzYygmYnVmLCAiU2VxdWVuY2VzOiIsIGZhbHNl LCAmY29udCkpCisJCQkJZ290byBlcnJvcl9yZXR1cm47CisKKwkJCWlmIChwc2V0LnN2ZXJz aW9uID49IDE1MDAwMCkKKwkJCXsKKwkJCQkvKiBHZXQgdGhlIHNjaGVtYXMgZm9yIHRoZSBz cGVjaWZpZWQgcHVibGljYXRpb24gKi8KKwkJCQlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLAor CQkJCQkJCQkgICJTRUxFQ1Qgbi5uc3BuYW1lXG4iCisJCQkJCQkJCSAgIkZST00gcGdfY2F0 YWxvZy5wZ19uYW1lc3BhY2UgblxuIgorCQkJCQkJCQkgICIgICAgIEpPSU4gcGdfY2F0YWxv Zy5wZ19wdWJsaWNhdGlvbl9uYW1lc3BhY2UgcG4gT04gbi5vaWQgPSBwbi5wbm5zcGlkXG4i CisJCQkJCQkJCSAgIldIRVJFIHBuLnBucHViaWQgPSAnJXMnIEFORCBwbi5wbnR5cGUgPSAn cydcbiIKKwkJCQkJCQkJICAiT1JERVIgQlkgMSIsIHB1YmlkKTsKKwkJCQlpZiAoIWFkZEZv b3RlclRvUHVibGljYXRpb25EZXNjKCZidWYsICJTZXF1ZW5jZXMgZnJvbSBzY2hlbWFzOiIs CisJCQkJCQkJCQkJCQl0cnVlLCAmY29udCkpCisJCQkJCWdvdG8gZXJyb3JfcmV0dXJuOwor CQkJfQorCQl9CisKIAkJcHJpbnRUYWJsZSgmY29udCwgcHNldC5xdWVyeUZvdXQsIGZhbHNl LCBwc2V0LmxvZ2ZpbGUpOwogCQlwcmludFRhYmxlQ2xlYW51cCgmY29udCk7CiAKZGlmZiAt LWdpdCBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuYyBiL3NyYy9iaW4vcHNxbC90YWIt Y29tcGxldGUuYwppbmRleCAwMDZlMTBmNWQyZC4uMTcyZDNiMDY4ZDkgMTAwNjQ0Ci0tLSBh L3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuYworKysgYi9zcmMvYmluL3BzcWwvdGFiLWNv bXBsZXRlLmMKQEAgLTE4ODMsMTEgKzE4ODMsMTUgQEAgcHNxbF9jb21wbGV0aW9uKGNvbnN0 IGNoYXIgKnRleHQsIGludCBzdGFydCwgaW50IGVuZCkKIAkJQ09NUExFVEVfV0lUSCgiQURE IiwgIkRST1AiLCAiT1dORVIgVE8iLCAiUkVOQU1FIFRPIiwgIlNFVCIpOwogCS8qIEFMVEVS IFBVQkxJQ0FUSU9OIDxuYW1lPiBBREQgKi8KIAllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIs ICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiQUREIikpCi0JCUNPTVBMRVRFX1dJVEgoIlRB QkxFUyBJTiBTQ0hFTUEiLCAiVEFCTEUiKTsKKwkJQ09NUExFVEVfV0lUSCgiVEFCTEVTIElO IFNDSEVNQSIsICJUQUJMRSIsICJTRVFVRU5DRVMgSU4gU0NIRU1BIiwgIlNFUVVFTkNFIik7 CiAJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwg IkFERHxTRVQiLCAiVEFCTEUiKSB8fAogCQkJIChIZWFkTWF0Y2hlcygiQUxURVIiLCAiUFVC TElDQVRJT04iLCBNYXRjaEFueSwgIkFERHxTRVQiLCAiVEFCTEUiKSAmJgogCQkJICBlbmRz X3dpdGgocHJldl93ZCwgJywnKSkpCiAJCUNPTVBMRVRFX1dJVEhfU0NIRU1BX1FVRVJZKFF1 ZXJ5X2Zvcl9saXN0X29mX3RhYmxlcyk7CisJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAi UFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkFERHxTRVQiLCAiU0VRVUVOQ0UiKSB8fAorCQkJ IChIZWFkTWF0Y2hlcygiQUxURVIiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkFERHxT RVQiLCAiU0VRVUVOQ0UiKSAmJgorCQkJICBlbmRzX3dpdGgocHJldl93ZCwgJywnKSkpCisJ CUNPTVBMRVRFX1dJVEhfU0NIRU1BX1FVRVJZKFF1ZXJ5X2Zvcl9saXN0X29mX3NlcXVlbmNl cyk7CiAKIAkvKgogCSAqICJBTFRFUiBQVUJMSUNBVElPTiA8bmFtZT4gU0VUIFRBQkxFIDxu YW1lPiBXSEVSRSAoIiAtIGNvbXBsZXRlIHdpdGgKQEAgLTE5MDcsMTEgKzE5MTEsMTEgQEAg cHNxbF9jb21wbGV0aW9uKGNvbnN0IGNoYXIgKnRleHQsIGludCBzdGFydCwgaW50IGVuZCkK IAkJQ09NUExFVEVfV0lUSCgiLCIpOwogCS8qIEFMVEVSIFBVQkxJQ0FUSU9OIDxuYW1lPiBE Uk9QICovCiAJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiUFVCTElDQVRJT04iLCBNYXRj aEFueSwgIkRST1AiKSkKLQkJQ09NUExFVEVfV0lUSCgiVEFCTEVTIElOIFNDSEVNQSIsICJU QUJMRSIpOworCQlDT01QTEVURV9XSVRIKCJUQUJMRVMgSU4gU0NIRU1BIiwgIlRBQkxFIiwg IlNFUVVFTkNFUyBJTiBTQ0hFTUEiLCAiU0VRVUVOQ0UiKTsKIAkvKiBBTFRFUiBQVUJMSUNB VElPTiA8bmFtZT4gU0VUICovCiAJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiUFVCTElD QVRJT04iLCBNYXRjaEFueSwgIlNFVCIpKQotCQlDT01QTEVURV9XSVRIKCIoIiwgIlRBQkxF UyBJTiBTQ0hFTUEiLCAiVEFCTEUiKTsKLQllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJQ VUJMSUNBVElPTiIsIE1hdGNoQW55LCAiQUREfERST1B8U0VUIiwgIlRBQkxFUyIsICJJTiIs ICJTQ0hFTUEiKSkKKwkJQ09NUExFVEVfV0lUSCgiKCIsICJUQUJMRVMgSU4gU0NIRU1BIiwg IlRBQkxFIiwgIlNFUVVFTkNFUyBJTiBTQ0hFTUEiLCAiU0VRVUVOQ0UiKTsKKwllbHNlIGlm IChNYXRjaGVzKCJBTFRFUiIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiQUREfERST1B8 U0VUIiwgIlRBQkxFU3xTRVFVRU5DRVMiLCAiSU4iLCAiU0NIRU1BIikpCiAJCUNPTVBMRVRF X1dJVEhfUVVFUllfUExVUyhRdWVyeV9mb3JfbGlzdF9vZl9zY2hlbWFzCiAJCQkJCQkJCSAi IEFORCBuc3BuYW1lIE5PVCBMSUtFIEUncGdcXFxcXyUlJyIsCiAJCQkJCQkJCSAiQ1VSUkVO VF9TQ0hFTUEiKTsKQEAgLTMxMDIsMjQgKzMxMDYsMzEgQEAgcHNxbF9jb21wbGV0aW9uKGNv bnN0IGNoYXIgKnRleHQsIGludCBzdGFydCwgaW50IGVuZCkKIAogLyogQ1JFQVRFIFBVQkxJ Q0FUSU9OICovCiAJZWxzZSBpZiAoTWF0Y2hlcygiQ1JFQVRFIiwgIlBVQkxJQ0FUSU9OIiwg TWF0Y2hBbnkpKQotCQlDT01QTEVURV9XSVRIKCJGT1IgVEFCTEUiLCAiRk9SIEFMTCBUQUJM RVMiLCAiRk9SIFRBQkxFUyBJTiBTQ0hFTUEiLCAiV0lUSCAoIik7CisJCUNPTVBMRVRFX1dJ VEgoIkZPUiBUQUJMRSIsICJGT1IgQUxMIFRBQkxFUyIsICJGT1IgVEFCTEVTIElOIFNDSEVN QSIsICJGT1IgU0VRVUVOQ0UiLCAiRk9SIEFMTCBTRVFVRU5DRVMiLCAiRk9SIFNFUVVFTkNF UyBJTiBTQ0hFTUEiLCAiV0lUSCAoIik7CiAJZWxzZSBpZiAoTWF0Y2hlcygiQ1JFQVRFIiwg IlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJGT1IiKSkKLQkJQ09NUExFVEVfV0lUSCgiVEFC TEUiLCAiQUxMIFRBQkxFUyIsICJUQUJMRVMgSU4gU0NIRU1BIik7CisJCUNPTVBMRVRFX1dJ VEgoIlRBQkxFIiwgIkFMTCBUQUJMRVMiLCAiVEFCTEVTIElOIFNDSEVNQSIsICJTRVFVRU5D RSIsICJBTEwgU0VRVUVOQ0VTIiwgIlNFUVVFTkNFUyBJTiBTQ0hFTUEiKTsKIAllbHNlIGlm IChNYXRjaGVzKCJDUkVBVEUiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkZPUiIsICJB TEwiKSkKLQkJQ09NUExFVEVfV0lUSCgiVEFCTEVTIik7Ci0JZWxzZSBpZiAoTWF0Y2hlcygi Q1JFQVRFIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJGT1IiLCAiQUxMIiwgIlRBQkxF UyIpKQorCQlDT01QTEVURV9XSVRIKCJUQUJMRVMiLCAiU0VRVUVOQ0VTIik7CisJZWxzZSBp ZiAoTWF0Y2hlcygiQ1JFQVRFIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJGT1IiLCAi QUxMIiwgIlRBQkxFU3xTRVFVRU5DRVMiKSkKIAkJQ09NUExFVEVfV0lUSCgiV0lUSCAoIik7 Ci0JZWxzZSBpZiAoTWF0Y2hlcygiQ1JFQVRFIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnks ICJGT1IiLCAiVEFCTEVTIikpCisJZWxzZSBpZiAoTWF0Y2hlcygiQ1JFQVRFIiwgIlBVQkxJ Q0FUSU9OIiwgTWF0Y2hBbnksICJGT1IiLCAiVEFCTEVTfFNFUVVFTkNFUyIpKQogCQlDT01Q TEVURV9XSVRIKCJJTiBTQ0hFTUEiKTsKLQllbHNlIGlmIChNYXRjaGVzKCJDUkVBVEUiLCAi UFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkZPUiIsICJUQUJMRSIsIE1hdGNoQW55KSAmJiAh ZW5kc193aXRoKHByZXZfd2QsICcsJykpCisJZWxzZSBpZiAoTWF0Y2hlcygiQ1JFQVRFIiwg IlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJGT1IiLCAiVEFCTEV8U0VRVUVOQ0UiLCBNYXRj aEFueSkgJiYgIWVuZHNfd2l0aChwcmV2X3dkLCAnLCcpKQogCQlDT01QTEVURV9XSVRIKCJX SEVSRSAoIiwgIldJVEggKCIpOwogCS8qIENvbXBsZXRlICJDUkVBVEUgUFVCTElDQVRJT04g PG5hbWU+IEZPUiBUQUJMRSIgd2l0aCAiPHRhYmxlPiwgLi4uIiAqLwogCWVsc2UgaWYgKE1h dGNoZXMoIkNSRUFURSIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiRk9SIiwgIlRBQkxF IikpCiAJCUNPTVBMRVRFX1dJVEhfU0NIRU1BX1FVRVJZKFF1ZXJ5X2Zvcl9saXN0X29mX3Rh Ymxlcyk7CiAKIAkvKgotCSAqICJDUkVBVEUgUFVCTElDQVRJT04gPG5hbWU+IEZPUiBUQUJM RSA8bmFtZT4gV0hFUkUgKCIgLSBjb21wbGV0ZSB3aXRoCi0JICogdGFibGUgYXR0cmlidXRl cworCSAqIENvbXBsZXRlICJDUkVBVEUgUFVCTElDQVRJT04gPG5hbWU+IEZPUiBTRVFVRU5D RSIgd2l0aCAiPHNlcXVlbmNlPiwKKwkgKiAuLi4iCisJICovCisJZWxzZSBpZiAoTWF0Y2hl cygiQ1JFQVRFIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJGT1IiLCAiU0VRVUVOQ0Ui KSkKKwkJQ09NUExFVEVfV0lUSF9TQ0hFTUFfUVVFUlkoUXVlcnlfZm9yX2xpc3Rfb2Zfc2Vx dWVuY2VzKTsKKworCS8qCisJICogIkNSRUFURSBQVUJMSUNBVElPTiA8bmFtZT4gRk9SIFRB QkxFfFNFUVVFTkNFIDxuYW1lPiBXSEVSRSAoIiAtCisJICogY29tcGxldGUgd2l0aCB0YWJs ZSBhdHRyaWJ1dGVzCiAJICovCiAJZWxzZSBpZiAoSGVhZE1hdGNoZXMoIkNSRUFURSIsICJQ VUJMSUNBVElPTiIsIE1hdGNoQW55KSAmJiBUYWlsTWF0Y2hlcygiV0hFUkUiKSkKIAkJQ09N UExFVEVfV0lUSCgiKCIpOwpAQCAtMzEzMSwxMSArMzE0MiwxMSBAQCBwc3FsX2NvbXBsZXRp b24oY29uc3QgY2hhciAqdGV4dCwgaW50IHN0YXJ0LCBpbnQgZW5kKQogCS8qCiAJICogQ29t cGxldGUgIkNSRUFURSBQVUJMSUNBVElPTiA8bmFtZT4gRk9SIFRBQkxFUyBJTiBTQ0hFTUEg PHNjaGVtYT4sIC4uLiIKIAkgKi8KLQllbHNlIGlmIChNYXRjaGVzKCJDUkVBVEUiLCAiUFVC TElDQVRJT04iLCBNYXRjaEFueSwgIkZPUiIsICJUQUJMRVMiLCAiSU4iLCAiU0NIRU1BIikp CisJZWxzZSBpZiAoTWF0Y2hlcygiQ1JFQVRFIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnks ICJGT1IiLCAiVEFCTEVTfFNFUVVFTkNFUyIsICJJTiIsICJTQ0hFTUEiKSkKIAkJQ09NUExF VEVfV0lUSF9RVUVSWV9QTFVTKFF1ZXJ5X2Zvcl9saXN0X29mX3NjaGVtYXMKIAkJCQkJCQkJ ICIgQU5EIG5zcG5hbWUgTk9UIExJS0UgRSdwZ1xcXFxfJSUnIiwKIAkJCQkJCQkJICJDVVJS RU5UX1NDSEVNQSIpOwotCWVsc2UgaWYgKE1hdGNoZXMoIkNSRUFURSIsICJQVUJMSUNBVElP TiIsIE1hdGNoQW55LCAiRk9SIiwgIlRBQkxFUyIsICJJTiIsICJTQ0hFTUEiLCBNYXRjaEFu eSkgJiYgKCFlbmRzX3dpdGgocHJldl93ZCwgJywnKSkpCisJZWxzZSBpZiAoTWF0Y2hlcygi Q1JFQVRFIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJGT1IiLCAiVEFCTEVTfFNFUVVF TkNFUyIsICJJTiIsICJTQ0hFTUEiLCBNYXRjaEFueSkgJiYgKCFlbmRzX3dpdGgocHJldl93 ZCwgJywnKSkpCiAJCUNPTVBMRVRFX1dJVEgoIldJVEggKCIpOwogCS8qIENvbXBsZXRlICJD UkVBVEUgUFVCTElDQVRJT04gPG5hbWU+IFsuLi5dIFdJVEgiICovCiAJZWxzZSBpZiAoSGVh ZE1hdGNoZXMoIkNSRUFURSIsICJQVUJMSUNBVElPTiIpICYmIFRhaWxNYXRjaGVzKCJXSVRI IiwgIigiKSkKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQg Yi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CmluZGV4IGZiNThkZWUzYmNkLi5m NGFlMGJkNGZiMSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRh dAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CkBAIC0zMzI5LDYgKzMz MjksMTQgQEAKICAgcHJvbmFtZSA9PiAncGdfc2VxdWVuY2VfbGFzdF92YWx1ZScsIHByb3Zv bGF0aWxlID0+ICd2JywgcHJvcGFyYWxsZWwgPT4gJ3UnLAogICBwcm9yZXR0eXBlID0+ICdp bnQ4JywgcHJvYXJndHlwZXMgPT4gJ3JlZ2NsYXNzJywKICAgcHJvc3JjID0+ICdwZ19zZXF1 ZW5jZV9sYXN0X3ZhbHVlJyB9LAoreyBvaWQgPT4gJzYzMTInLAorICBkZXNjciA9PiAnY3Vy cmVudCBvbi1kaXNrIHNlcXVlbmNlIHN0YXRlJywKKyAgcHJvbmFtZSA9PiAncGdfc2VxdWVu Y2Vfc3RhdGUnLCBwcm92b2xhdGlsZSA9PiAndicsCisgIHByb3JldHR5cGUgPT4gJ3JlY29y ZCcsIHByb2FyZ3R5cGVzID0+ICdyZWdjbGFzcycsCisgIHByb2FsbGFyZ3R5cGVzID0+ICd7 cmVnY2xhc3MscGdfbHNuLGludDgsaW50OCxib29sfScsCisgIHByb2FyZ21vZGVzID0+ICd7 aSxvLG8sbyxvfScsCisgIHByb2FyZ25hbWVzID0+ICd7c2VxX29pZCxwYWdlX2xzbixsYXN0 X3ZhbHVlLGxvZ19jbnQsaXNfY2FsbGVkfScsCisgIHByb3NyYyA9PiAncGdfc2VxdWVuY2Vf c3RhdGUnIH0sCiAKIHsgb2lkID0+ICcyNzUnLCBkZXNjciA9PiAncmV0dXJuIHRoZSBuZXh0 IG9pZCBmb3IgYSBzeXN0ZW0gdGFibGUnLAogICBwcm9uYW1lID0+ICdwZ19uZXh0b2lkJywg cHJvdm9sYXRpbGUgPT4gJ3YnLCBwcm9wYXJhbGxlbCA9PiAndScsCkBAIC0xMTg3Myw2ICsx MTg4MSwxMSBAQAogICBwcm9hcmdtb2RlcyA9PiAne3YsbyxvLG8sb30nLAogICBwcm9hcmdu YW1lcyA9PiAne3B1Ym5hbWUscHViaWQscmVsaWQsYXR0cnMscXVhbH0nLAogICBwcm9zcmMg PT4gJ3BnX2dldF9wdWJsaWNhdGlvbl90YWJsZXMnIH0sCit7IG9pZCA9PiAnODAwMCcsIGRl c2NyID0+ICdnZXQgT0lEcyBvZiBzZXF1ZW5jZXMgaW4gYSBwdWJsaWNhdGlvbicsCisgIHBy b25hbWUgPT4gJ3BnX2dldF9wdWJsaWNhdGlvbl9zZXF1ZW5jZXMnLCBwcm9yb3dzID0+ICcx MDAwJywgcHJvcmV0c2V0ID0+ICd0JywKKyAgcHJvdm9sYXRpbGUgPT4gJ3MnLCBwcm9yZXR0 eXBlID0+ICdvaWQnLCBwcm9hcmd0eXBlcyA9PiAndGV4dCcsCisgIHByb2FsbGFyZ3R5cGVz ID0+ICd7dGV4dCxvaWR9JywgcHJvYXJnbW9kZXMgPT4gJ3tpLG99JywKKyAgcHJvYXJnbmFt ZXMgPT4gJ3twdWJuYW1lLHJlbGlkfScsIHByb3NyYyA9PiAncGdfZ2V0X3B1YmxpY2F0aW9u X3NlcXVlbmNlcycgfSwKIHsgb2lkID0+ICc2MTIxJywKICAgZGVzY3IgPT4gJ3JldHVybnMg d2hldGhlciBhIHJlbGF0aW9uIGNhbiBiZSBwYXJ0IG9mIGEgcHVibGljYXRpb24nLAogICBw cm9uYW1lID0+ICdwZ19yZWxhdGlvbl9pc19wdWJsaXNoYWJsZScsIHByb3ZvbGF0aWxlID0+ ICdzJywKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb24u aCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb24uaAppbmRleCBkOTI5Yzlh MTg4MC4uYTI2ZTRlNTFjYTIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdf cHVibGljYXRpb24uaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9u LmgKQEAgLTQwLDYgKzQwLDEyIEBAIENBVEFMT0cocGdfcHVibGljYXRpb24sNjEwNCxQdWJs aWNhdGlvblJlbGF0aW9uSWQpCiAJICovCiAJYm9vbAkJcHViYWxsdGFibGVzOwogCisJLyoK KwkgKiBpbmRpY2F0ZXMgdGhhdCB0aGlzIGlzIHNwZWNpYWwgcHVibGljYXRpb24gd2hpY2gg c2hvdWxkIGVuY29tcGFzcyBhbGwKKwkgKiBzZXF1ZW5jZXMgaW4gdGhlIGRhdGFiYXNlIChl eGNlcHQgZm9yIHRoZSB1bmxvZ2dlZCBhbmQgdGVtcCBvbmVzKQorCSAqLworCWJvb2wJCXB1 YmFsbHNlcXVlbmNlczsKKwogCS8qIHRydWUgaWYgaW5zZXJ0cyBhcmUgcHVibGlzaGVkICov CiAJYm9vbAkJcHViaW5zZXJ0OwogCkBAIC01Miw2ICs1OCw5IEBAIENBVEFMT0cocGdfcHVi bGljYXRpb24sNjEwNCxQdWJsaWNhdGlvblJlbGF0aW9uSWQpCiAJLyogdHJ1ZSBpZiB0cnVu Y2F0ZXMgYXJlIHB1Ymxpc2hlZCAqLwogCWJvb2wJCXB1YnRydW5jYXRlOwogCisJLyogdHJ1 ZSBpZiBzZXF1ZW5jZXMgYXJlIHB1Ymxpc2hlZCAqLworCWJvb2wJCXB1YnNlcXVlbmNlOwor CiAJLyogdHJ1ZSBpZiBwYXJ0aXRpb24gY2hhbmdlcyBhcmUgcHVibGlzaGVkIHVzaW5nIHJv b3Qgc2NoZW1hICovCiAJYm9vbAkJcHVidmlhcm9vdDsKIH0gRm9ybURhdGFfcGdfcHVibGlj YXRpb247CkBAIC03Miw2ICs4MSw3IEBAIHR5cGVkZWYgc3RydWN0IFB1YmxpY2F0aW9uQWN0 aW9ucwogCWJvb2wJCXB1YnVwZGF0ZTsKIAlib29sCQlwdWJkZWxldGU7CiAJYm9vbAkJcHVi dHJ1bmNhdGU7CisJYm9vbAkJcHVic2VxdWVuY2U7CiB9IFB1YmxpY2F0aW9uQWN0aW9uczsK IAogdHlwZWRlZiBzdHJ1Y3QgUHVibGljYXRpb25EZXNjCkBAIC05OSw2ICsxMDksNyBAQCB0 eXBlZGVmIHN0cnVjdCBQdWJsaWNhdGlvbgogCU9pZAkJCW9pZDsKIAljaGFyCSAgICpuYW1l OwogCWJvb2wJCWFsbHRhYmxlczsKKwlib29sCQlhbGxzZXF1ZW5jZXM7CiAJYm9vbAkJcHVi dmlhcm9vdDsKIAlQdWJsaWNhdGlvbkFjdGlvbnMgcHViYWN0aW9uczsKIH0gUHVibGljYXRp b247CkBAIC0xMzAsMTQgKzE0MSwxNSBAQCB0eXBlZGVmIGVudW0gUHVibGljYXRpb25QYXJ0 T3B0CiAJUFVCTElDQVRJT05fUEFSVF9BTEwsCiB9IFB1YmxpY2F0aW9uUGFydE9wdDsKIAot ZXh0ZXJuIExpc3QgKkdldFB1YmxpY2F0aW9uUmVsYXRpb25zKE9pZCBwdWJpZCwgUHVibGlj YXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0KTsKK2V4dGVybiBMaXN0ICpHZXRQdWJsaWNhdGlv blJlbGF0aW9ucyhPaWQgcHViaWQsIGNoYXIgb2JqZWN0VHlwZSwKKwkJCQkJCQkJCSBQdWJs aWNhdGlvblBhcnRPcHQgcHViX3BhcnRvcHQpOwogZXh0ZXJuIExpc3QgKkdldEFsbFRhYmxl c1B1YmxpY2F0aW9ucyh2b2lkKTsKIGV4dGVybiBMaXN0ICpHZXRBbGxUYWJsZXNQdWJsaWNh dGlvblJlbGF0aW9ucyhib29sIHB1YnZpYXJvb3QpOwotZXh0ZXJuIExpc3QgKkdldFB1Ymxp Y2F0aW9uU2NoZW1hcyhPaWQgcHViaWQpOwotZXh0ZXJuIExpc3QgKkdldFNjaGVtYVB1Ymxp Y2F0aW9ucyhPaWQgc2NoZW1haWQpOwotZXh0ZXJuIExpc3QgKkdldFNjaGVtYVB1YmxpY2F0 aW9uUmVsYXRpb25zKE9pZCBzY2hlbWFpZCwKK2V4dGVybiBMaXN0ICpHZXRQdWJsaWNhdGlv blNjaGVtYXMoT2lkIHB1YmlkLCBjaGFyIG9iamVjdFR5cGUpOworZXh0ZXJuIExpc3QgKkdl dFNjaGVtYVB1YmxpY2F0aW9ucyhPaWQgc2NoZW1haWQsIGNoYXIgb2JqZWN0VHlwZSk7Citl eHRlcm4gTGlzdCAqR2V0U2NoZW1hUHVibGljYXRpb25SZWxhdGlvbnMoT2lkIHNjaGVtYWlk LCBjaGFyIG9iamVjdFR5cGUsCiAJCQkJCQkJCQkJICAgUHVibGljYXRpb25QYXJ0T3B0IHB1 Yl9wYXJ0b3B0KTsKLWV4dGVybiBMaXN0ICpHZXRBbGxTY2hlbWFQdWJsaWNhdGlvblJlbGF0 aW9ucyhPaWQgcHViaWQsCitleHRlcm4gTGlzdCAqR2V0QWxsU2NoZW1hUHVibGljYXRpb25S ZWxhdGlvbnMoT2lkIHB1Ym9pZCwgY2hhciBvYmplY3RUeXBlLAogCQkJCQkJCQkJCQkgIFB1 YmxpY2F0aW9uUGFydE9wdCBwdWJfcGFydG9wdCk7CiBleHRlcm4gTGlzdCAqR2V0UHViUGFy dGl0aW9uT3B0aW9uUmVsYXRpb25zKExpc3QgKnJlc3VsdCwKIAkJCQkJCQkJCQkJUHVibGlj YXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0LApAQCAtMTQ1LDExICsxNTcsMTUgQEAgZXh0ZXJu IExpc3QgKkdldFB1YlBhcnRpdGlvbk9wdGlvblJlbGF0aW9ucyhMaXN0ICpyZXN1bHQsCiBl eHRlcm4gT2lkCUdldFRvcE1vc3RBbmNlc3RvckluUHVibGljYXRpb24oT2lkIHB1Ym9pZCwg TGlzdCAqYW5jZXN0b3JzLAogCQkJCQkJCQkJCQlpbnQgKmFuY2VzdG9yX2xldmVsKTsKIAor ZXh0ZXJuIExpc3QgKkdldEFsbFNlcXVlbmNlc1B1YmxpY2F0aW9ucyh2b2lkKTsKK2V4dGVy biBMaXN0ICpHZXRBbGxTZXF1ZW5jZXNQdWJsaWNhdGlvblJlbGF0aW9ucyh2b2lkKTsKKwog ZXh0ZXJuIGJvb2wgaXNfcHVibGlzaGFibGVfcmVsYXRpb24oUmVsYXRpb24gcmVsKTsKIGV4 dGVybiBib29sIGlzX3NjaGVtYV9wdWJsaWNhdGlvbihPaWQgcHViaWQpOwogZXh0ZXJuIE9i amVjdEFkZHJlc3MgcHVibGljYXRpb25fYWRkX3JlbGF0aW9uKE9pZCBwdWJpZCwgUHVibGlj YXRpb25SZWxJbmZvICpwcmksCiAJCQkJCQkJCQkJCSAgYm9vbCBpZl9ub3RfZXhpc3RzKTsK IGV4dGVybiBPYmplY3RBZGRyZXNzIHB1YmxpY2F0aW9uX2FkZF9zY2hlbWEoT2lkIHB1Ymlk LCBPaWQgc2NoZW1haWQsCisJCQkJCQkJCQkJCWNoYXIgb2JqZWN0VHlwZSwKIAkJCQkJCQkJ CQkJYm9vbCBpZl9ub3RfZXhpc3RzKTsKIAogZXh0ZXJuIEJpdG1hcHNldCAqcHViX2NvbGxp c3RfdG9fYml0bWFwc2V0KEJpdG1hcHNldCAqY29sdW1ucywgRGF0dW0gcHViY29scywKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb25fbmFtZXNwYWNl LmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uX25hbWVzcGFjZS5oCmlu ZGV4IGIzNjFjOGFiNWUwLi5mNThlNjcwYmE3YiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19wdWJsaWNhdGlvbl9uYW1lc3BhY2UuaAorKysgYi9zcmMvaW5jbHVkZS9j YXRhbG9nL3BnX3B1YmxpY2F0aW9uX25hbWVzcGFjZS5oCkBAIC0zMiw2ICszMiw3IEBAIENB VEFMT0cocGdfcHVibGljYXRpb25fbmFtZXNwYWNlLDYyMzcsUHVibGljYXRpb25OYW1lc3Bh Y2VSZWxhdGlvbklkKQogCU9pZAkJCW9pZDsJCQkvKiBvaWQgKi8KIAlPaWQJCQlwbnB1Ymlk IEJLSV9MT09LVVAocGdfcHVibGljYXRpb24pOyAvKiBPaWQgb2YgdGhlIHB1YmxpY2F0aW9u ICovCiAJT2lkCQkJcG5uc3BpZCBCS0lfTE9PS1VQKHBnX25hbWVzcGFjZSk7CS8qIE9pZCBv ZiB0aGUgc2NoZW1hICovCisJY2hhcgkJcG50eXBlOwkJCS8qIG9iamVjdCB0eXBlIHRvIGlu Y2x1ZGUgKi8KIH0gRm9ybURhdGFfcGdfcHVibGljYXRpb25fbmFtZXNwYWNlOwogCiAvKiAt LS0tLS0tLS0tLS0tLS0tCkBAIC00Miw2ICs0MywxMyBAQCBDQVRBTE9HKHBnX3B1YmxpY2F0 aW9uX25hbWVzcGFjZSw2MjM3LFB1YmxpY2F0aW9uTmFtZXNwYWNlUmVsYXRpb25JZCkKIHR5 cGVkZWYgRm9ybURhdGFfcGdfcHVibGljYXRpb25fbmFtZXNwYWNlICpGb3JtX3BnX3B1Ymxp Y2F0aW9uX25hbWVzcGFjZTsKIAogREVDTEFSRV9VTklRVUVfSU5ERVhfUEtFWShwZ19wdWJs aWNhdGlvbl9uYW1lc3BhY2Vfb2lkX2luZGV4LCA2MjM4LCBQdWJsaWNhdGlvbk5hbWVzcGFj ZU9iamVjdEluZGV4SWQsIHBnX3B1YmxpY2F0aW9uX25hbWVzcGFjZSwgYnRyZWUob2lkIG9p ZF9vcHMpKTsKLURFQ0xBUkVfVU5JUVVFX0lOREVYKHBnX3B1YmxpY2F0aW9uX25hbWVzcGFj ZV9wbm5zcGlkX3BucHViaWRfaW5kZXgsIDYyMzksIFB1YmxpY2F0aW9uTmFtZXNwYWNlUG5u c3BpZFBucHViaWRJbmRleElkLCBwZ19wdWJsaWNhdGlvbl9uYW1lc3BhY2UsIGJ0cmVlKHBu bnNwaWQgb2lkX29wcywgcG5wdWJpZCBvaWRfb3BzKSk7CitERUNMQVJFX1VOSVFVRV9JTkRF WChwZ19wdWJsaWNhdGlvbl9uYW1lc3BhY2VfcG5uc3BpZF9wbnB1YmlkX3BudHlwZV9pbmRl eCwgODkwMywgUHVibGljYXRpb25OYW1lc3BhY2VQbm5zcGlkUG5wdWJpZFBudHlwZUluZGV4 SWQsIHBnX3B1YmxpY2F0aW9uX25hbWVzcGFjZSwgYnRyZWUocG5uc3BpZCBvaWRfb3BzLCBw bnB1YmlkIG9pZF9vcHMsIHBudHlwZSBjaGFyX29wcykpOworCisvKiBvYmplY3QgdHlwZSB0 byBpbmNsdWRlIGZyb20gYSBzY2hlbWEsIG1hcHMgdG8gcmVsa2luZCAqLworI2RlZmluZQkJ UFVCX09CSlRZUEVfVEFCTEUJCQkndCcgLyogdGFibGUgKHJlZ3VsYXIgb3IgcGFydGl0aW9u ZWQpICovCisjZGVmaW5lCQlQVUJfT0JKVFlQRV9TRVFVRU5DRQkJJ3MnIC8qIHNlcXVlbmNl IG9iamVjdCAqLworI2RlZmluZQkJUFVCX09CSlRZUEVfVU5TVVBQT1JURUQJCSd1JyAvKiB1 c2VkIGZvciBub24tcmVwbGljYXRlZCB0eXBlcyAqLworCitleHRlcm4gY2hhciBwdWJfZ2V0 X29iamVjdF90eXBlX2Zvcl9yZWxraW5kKGNoYXIgcmVsa2luZCk7CiAKICNlbmRpZgkJCQkJ CQkvKiBQR19QVUJMSUNBVElPTl9OQU1FU1BBQ0VfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvY29tbWFuZHMvc2VxdWVuY2UuaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3NlcXVl bmNlLmgKaW5kZXggZDk0YTkwMjJiMjUuLmI4NjNmOWNkYTM2IDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9jb21tYW5kcy9zZXF1ZW5jZS5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRz L3NlcXVlbmNlLmgKQEAgLTYxLDYgKzYxLDcgQEAgZXh0ZXJuIE9iamVjdEFkZHJlc3MgQWx0 ZXJTZXF1ZW5jZShQYXJzZVN0YXRlICpwc3RhdGUsIEFsdGVyU2VxU3RtdCAqc3RtdCk7CiBl eHRlcm4gdm9pZCBTZXF1ZW5jZUNoYW5nZVBlcnNpc3RlbmNlKE9pZCByZWxpZCwgY2hhciBu ZXdyZWxwZXJzaXN0ZW5jZSk7CiBleHRlcm4gdm9pZCBEZWxldGVTZXF1ZW5jZVR1cGxlKE9p ZCByZWxpZCk7CiBleHRlcm4gdm9pZCBSZXNldFNlcXVlbmNlKE9pZCBzZXFfcmVsaWQpOwor ZXh0ZXJuIHZvaWQgU2V0U2VxdWVuY2UoT2lkIHNlcV9yZWxpZCwgYm9vbCB0cmFuc2FjdGlv bmFsLCBpbnQ2NCB2YWx1ZSk7CiBleHRlcm4gdm9pZCBSZXNldFNlcXVlbmNlQ2FjaGVzKHZv aWQpOwogCiBleHRlcm4gdm9pZCBzZXFfcmVkbyhYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCk7 CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggYi9zcmMvaW5j bHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKaW5kZXggZTQ5NDMwOWRhOGQuLjM1NmY4NzI0ZWM5 IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKKysrIGIvc3Jj L2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCkBAIC0zOTkwLDYgKzM5OTAsMTAgQEAgdHlw ZWRlZiBlbnVtIFB1YmxpY2F0aW9uT2JqU3BlY1R5cGUKIAlQVUJMSUNBVElPTk9CSl9UQUJM RVNfSU5fU0NIRU1BLAkvKiBBbGwgdGFibGVzIGluIHNjaGVtYSAqLwogCVBVQkxJQ0FUSU9O T0JKX1RBQkxFU19JTl9DVVJfU0NIRU1BLAkvKiBBbGwgdGFibGVzIGluIGZpcnN0IGVsZW1l bnQgb2YKIAkJCQkJCQkJCQkJICogc2VhcmNoX3BhdGggKi8KKwlQVUJMSUNBVElPTk9CSl9T RVFVRU5DRSwJLyogU2VxdWVuY2UgdHlwZSAqLworCVBVQkxJQ0FUSU9OT0JKX1NFUVVFTkNF U19JTl9TQ0hFTUEsIC8qIFNlcXVlbmNlcyBpbiBzY2hlbWEgdHlwZSAqLworCVBVQkxJQ0FU SU9OT0JKX1NFUVVFTkNFU19JTl9DVVJfU0NIRU1BLCAvKiBHZXQgdGhlIGZpcnN0IGVsZW1l bnQgb2YKKwkJCQkJCQkJCQkJICogc2VhcmNoX3BhdGggKi8KIAlQVUJMSUNBVElPTk9CSl9D T05USU5VQVRJT04sCS8qIENvbnRpbnVhdGlvbiBvZiBwcmV2aW91cyB0eXBlICovCiB9IFB1 YmxpY2F0aW9uT2JqU3BlY1R5cGU7CiAKQEAgLTQwMDgsNyArNDAxMiw4IEBAIHR5cGVkZWYg c3RydWN0IENyZWF0ZVB1YmxpY2F0aW9uU3RtdAogCWNoYXIJICAgKnB1Ym5hbWU7CQkvKiBO YW1lIG9mIHRoZSBwdWJsaWNhdGlvbiAqLwogCUxpc3QJICAgKm9wdGlvbnM7CQkvKiBMaXN0 IG9mIERlZkVsZW0gbm9kZXMgKi8KIAlMaXN0CSAgICpwdWJvYmplY3RzOwkJLyogT3B0aW9u YWwgbGlzdCBvZiBwdWJsaWNhdGlvbiBvYmplY3RzICovCi0JYm9vbAkJZm9yX2FsbF90YWJs ZXM7IC8qIFNwZWNpYWwgcHVibGljYXRpb24gZm9yIGFsbCB0YWJsZXMgaW4gZGIgKi8KKwlM aXN0CSAgICpmb3JfYWxsX29iamVjdHM7CS8qIFNwZWNpYWwgcHVibGljYXRpb24gZm9yIGFs bCBvYmplY3RzIGluCisJCQkJCQkJCQkgKiBkYiAqLwogfSBDcmVhdGVQdWJsaWNhdGlvblN0 bXQ7CiAKIHR5cGVkZWYgZW51bSBBbHRlclB1YmxpY2F0aW9uQWN0aW9uCkBAIC00MDMxLDcg KzQwMzYsOCBAQCB0eXBlZGVmIHN0cnVjdCBBbHRlclB1YmxpY2F0aW9uU3RtdAogCSAqIG9i amVjdHMuCiAJICovCiAJTGlzdAkgICAqcHVib2JqZWN0czsJCS8qIE9wdGlvbmFsIGxpc3Qg b2YgcHVibGljYXRpb24gb2JqZWN0cyAqLwotCWJvb2wJCWZvcl9hbGxfdGFibGVzOyAvKiBT cGVjaWFsIHB1YmxpY2F0aW9uIGZvciBhbGwgdGFibGVzIGluIGRiICovCisJTGlzdAkgICAq Zm9yX2FsbF9vYmplY3RzOwkvKiBTcGVjaWFsIHB1YmxpY2F0aW9uIGZvciBhbGwgb2JqZWN0 cyBpbgorCQkJCQkJCQkJICogZGIgKi8KIAlBbHRlclB1YmxpY2F0aW9uQWN0aW9uIGFjdGlv bjsJLyogV2hhdCBhY3Rpb24gdG8gcGVyZm9ybSB3aXRoIHRoZSBnaXZlbgogCQkJCQkJCQkJ ICogb2JqZWN0cyAqLwogfSBBbHRlclB1YmxpY2F0aW9uU3RtdDsKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxwcm90by5oIGIvc3JjL2luY2x1ZGUvcmVw bGljYXRpb24vbG9naWNhbHByb3RvLmgKaW5kZXggNGJiMDRjNGVhYzguLmY2YmJiNzRkNzgw IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscHJvdG8uaAor KysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscHJvdG8uaApAQCAtNDIsNyAr NDIsOCBAQAogI2RlZmluZSBMT0dJQ0FMUkVQX1BST1RPX1NUUkVBTV9WRVJTSU9OX05VTSAy CiAjZGVmaW5lIExPR0lDQUxSRVBfUFJPVE9fVFdPUEhBU0VfVkVSU0lPTl9OVU0gMwogI2Rl ZmluZSBMT0dJQ0FMUkVQX1BST1RPX1NUUkVBTV9QQVJBTExFTF9WRVJTSU9OX05VTSA0Ci0j ZGVmaW5lIExPR0lDQUxSRVBfUFJPVE9fTUFYX1ZFUlNJT05fTlVNIExPR0lDQUxSRVBfUFJP VE9fU1RSRUFNX1BBUkFMTEVMX1ZFUlNJT05fTlVNCisjZGVmaW5lIExPR0lDQUxSRVBfUFJP VE9fU0VRVUVOQ0VTX1ZFUlNJT05fTlVNIDUKKyNkZWZpbmUgTE9HSUNBTFJFUF9QUk9UT19N QVhfVkVSU0lPTl9OVU0gTE9HSUNBTFJFUF9QUk9UT19TRVFVRU5DRVNfVkVSU0lPTl9OVU0K IAogLyoKICAqIExvZ2ljYWwgbWVzc2FnZSB0eXBlcwpAQCAtNjYsNiArNjcsNyBAQCB0eXBl ZGVmIGVudW0gTG9naWNhbFJlcE1zZ1R5cGUKIAlMT0dJQ0FMX1JFUF9NU0dfUkVMQVRJT04g PSAnUicsCiAJTE9HSUNBTF9SRVBfTVNHX1RZUEUgPSAnWScsCiAJTE9HSUNBTF9SRVBfTVNH X01FU1NBR0UgPSAnTScsCisJTE9HSUNBTF9SRVBfTVNHX1NFUVVFTkNFID0gJ1EnLAogCUxP R0lDQUxfUkVQX01TR19CRUdJTl9QUkVQQVJFID0gJ2InLAogCUxPR0lDQUxfUkVQX01TR19Q UkVQQVJFID0gJ1AnLAogCUxPR0lDQUxfUkVQX01TR19DT01NSVRfUFJFUEFSRUQgPSAnSycs CkBAIC0xMjMsNiArMTI1LDE3IEBAIHR5cGVkZWYgc3RydWN0IExvZ2ljYWxSZXBUeXAKIAlj aGFyCSAgICp0eXBuYW1lOwkJLyogbmFtZSBvZiB0aGUgcmVtb3RlIHR5cGUgKi8KIH0gTG9n aWNhbFJlcFR5cDsKIAorLyogU2VxdWVuY2UgaW5mbyAqLwordHlwZWRlZiBzdHJ1Y3QgTG9n aWNhbFJlcFNlcXVlbmNlCit7CisJWExvZ1JlY1B0cglsc247CQkJLyogTFNOIG9mIHRoZSBz ZXF1ZW5jZSBjaGFuZ2UgKi8KKwlPaWQJCQlyZW1vdGVpZDsJCS8qIHVuaXF1ZSBpZCBvZiB0 aGUgcmVtb3RlIHNlcXVlbmNlICovCisJY2hhcgkgICAqbnNwbmFtZTsJCS8qIHNjaGVtYSBu YW1lIG9mIHJlbW90ZSBzZXF1ZW5jZSAqLworCWNoYXIJICAgKnNlcW5hbWU7CQkvKiBuYW1l IG9mIHRoZSByZW1vdGUgc2VxdWVuY2UgKi8KKwlib29sCQl0cmFuc2FjdGlvbmFsOworCWlu dDY0CQl2YWx1ZTsKK30gTG9naWNhbFJlcFNlcXVlbmNlOworCiAvKiBUcmFuc2FjdGlvbiBp bmZvICovCiB0eXBlZGVmIHN0cnVjdCBMb2dpY2FsUmVwQmVnaW5EYXRhCiB7CkBAIC0yNDYs NiArMjU5LDEwIEBAIGV4dGVybiBMaXN0ICpsb2dpY2FscmVwX3JlYWRfdHJ1bmNhdGUoU3Ry aW5nSW5mbyBpbiwKIAkJCQkJCQkJCSAgYm9vbCAqY2FzY2FkZSwgYm9vbCAqcmVzdGFydF9z ZXFzKTsKIGV4dGVybiB2b2lkIGxvZ2ljYWxyZXBfd3JpdGVfbWVzc2FnZShTdHJpbmdJbmZv IG91dCwgVHJhbnNhY3Rpb25JZCB4aWQsIFhMb2dSZWNQdHIgbHNuLAogCQkJCQkJCQkJIGJv b2wgdHJhbnNhY3Rpb25hbCwgY29uc3QgY2hhciAqcHJlZml4LCBTaXplIHN6LCBjb25zdCBj aGFyICptZXNzYWdlKTsKK2V4dGVybiB2b2lkIGxvZ2ljYWxyZXBfd3JpdGVfc2VxdWVuY2Uo U3RyaW5nSW5mbyBvdXQsIFJlbGF0aW9uIHJlbCwKKwkJCQkJCQkJCSAgVHJhbnNhY3Rpb25J ZCB4aWQsIFhMb2dSZWNQdHIgbHNuLAorCQkJCQkJCQkJICBib29sIHRyYW5zYWN0aW9uYWws IGludDY0IHZhbHVlKTsKK2V4dGVybiBMb2dpY2FsUmVwUmVsSWQgbG9naWNhbHJlcF9yZWFk X3NlcXVlbmNlKFN0cmluZ0luZm8gaW4sIExvZ2ljYWxSZXBTZXF1ZW5jZSAqc2VxZGF0YSk7 CiBleHRlcm4gdm9pZCBsb2dpY2FscmVwX3dyaXRlX3JlbChTdHJpbmdJbmZvIG91dCwgVHJh bnNhY3Rpb25JZCB4aWQsCiAJCQkJCQkJCSBSZWxhdGlvbiByZWwsIEJpdG1hcHNldCAqY29s dW1ucyk7CiBleHRlcm4gTG9naWNhbFJlcFJlbGF0aW9uICpsb2dpY2FscmVwX3JlYWRfcmVs KFN0cmluZ0luZm8gaW4pOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9vYmplY3RfYWRkcmVzcy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL29iamVj dF9hZGRyZXNzLm91dAppbmRleCBmYzQyZDQxOGJmMS4uOWFlYzI2MTJkMDEgMTAwNjQ0Ci0t LSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvb2JqZWN0X2FkZHJlc3Mub3V0CisrKyBi L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvb2JqZWN0X2FkZHJlc3Mub3V0CkBAIC00Nyw2 ICs0Nyw3IEBAIENSRUFURSBUUkFOU0ZPUk0gRk9SIGludCBMQU5HVUFHRSBTUUwgKAogU0VU IGNsaWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1InOwogQ1JFQVRFIFBVQkxJQ0FUSU9OIGFk ZHJfcHViIEZPUiBUQUJMRSBhZGRyX25zcC5nZW50YWJsZTsKIENSRUFURSBQVUJMSUNBVElP TiBhZGRyX3B1Yl9zY2hlbWEgRk9SIFRBQkxFUyBJTiBTQ0hFTUEgYWRkcl9uc3A7CitDUkVB VEUgUFVCTElDQVRJT04gYWRkcl9wdWJfc2NoZW1hMiBGT1IgU0VRVUVOQ0VTIElOIFNDSEVN QSBhZGRyX25zcDsKIFJFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CiBDUkVBVEUgU1VCU0NS SVBUSU9OIHJlZ3Jlc3NfYWRkcl9zdWIgQ09OTkVDVElPTiAnJyBQVUJMSUNBVElPTiBiYXIg V0lUSCAoY29ubmVjdCA9IGZhbHNlLCBzbG90X25hbWUgPSBOT05FKTsKIFdBUk5JTkc6ICBz dWJzY3JpcHRpb24gd2FzIGNyZWF0ZWQsIGJ1dCBpcyBub3QgY29ubmVjdGVkCkBAIC0zMTUs MTIgKzMxNiwxMiBAQCBXQVJOSU5HOiAgZXJyb3IgZm9yIGZ1bmN0aW9uIG9mIGFjY2VzcyBt ZXRob2Qse2FkZHJfbnNwLHp3ZWl9LHt9OiBuYW1lIGxpc3QgbGVuZwogV0FSTklORzogIGVy cm9yIGZvciBmdW5jdGlvbiBvZiBhY2Nlc3MgbWV0aG9kLHthZGRyX25zcCx6d2VpfSx7aW50 ZWdlcn06IG5hbWUgbGlzdCBsZW5ndGggbXVzdCBiZSBhdCBsZWFzdCAzCiBXQVJOSU5HOiAg ZXJyb3IgZm9yIGZ1bmN0aW9uIG9mIGFjY2VzcyBtZXRob2Qse2VpbnMsendlaSxkcmVpfSx7 fTogYXJndW1lbnQgbGlzdCBsZW5ndGggbXVzdCBiZSBleGFjdGx5IDIKIFdBUk5JTkc6ICBl cnJvciBmb3IgZnVuY3Rpb24gb2YgYWNjZXNzIG1ldGhvZCx7ZWlucyx6d2VpLGRyZWl9LHtp bnRlZ2VyfTogYXJndW1lbnQgbGlzdCBsZW5ndGggbXVzdCBiZSBleGFjdGx5IDIKLVdBUk5J Tkc6ICBlcnJvciBmb3IgcHVibGljYXRpb24gbmFtZXNwYWNlLHtlaW5zfSx7fTogYXJndW1l bnQgbGlzdCBsZW5ndGggbXVzdCBiZSBleGFjdGx5IDEKLVdBUk5JTkc6ICBlcnJvciBmb3Ig cHVibGljYXRpb24gbmFtZXNwYWNlLHtlaW5zfSx7aW50ZWdlcn06IHNjaGVtYSAiZWlucyIg ZG9lcyBub3QgZXhpc3QKLVdBUk5JTkc6ICBlcnJvciBmb3IgcHVibGljYXRpb24gbmFtZXNw YWNlLHthZGRyX25zcCx6d2VpfSx7fTogbmFtZSBsaXN0IGxlbmd0aCBtdXN0IGJlIGV4YWN0 bHkgMQotV0FSTklORzogIGVycm9yIGZvciBwdWJsaWNhdGlvbiBuYW1lc3BhY2Use2FkZHJf bnNwLHp3ZWl9LHtpbnRlZ2VyfTogbmFtZSBsaXN0IGxlbmd0aCBtdXN0IGJlIGV4YWN0bHkg MQotV0FSTklORzogIGVycm9yIGZvciBwdWJsaWNhdGlvbiBuYW1lc3BhY2Use2VpbnMsendl aSxkcmVpfSx7fTogbmFtZSBsaXN0IGxlbmd0aCBtdXN0IGJlIGV4YWN0bHkgMQotV0FSTklO RzogIGVycm9yIGZvciBwdWJsaWNhdGlvbiBuYW1lc3BhY2Use2VpbnMsendlaSxkcmVpfSx7 aW50ZWdlcn06IG5hbWUgbGlzdCBsZW5ndGggbXVzdCBiZSBleGFjdGx5IDEKK1dBUk5JTkc6 ICBlcnJvciBmb3IgcHVibGljYXRpb24gbmFtZXNwYWNlLHtlaW5zfSx7fTogYXJndW1lbnQg bGlzdCBsZW5ndGggbXVzdCBiZSBleGFjdGx5IDIKK1dBUk5JTkc6ICBlcnJvciBmb3IgcHVi bGljYXRpb24gbmFtZXNwYWNlLHtlaW5zfSx7aW50ZWdlcn06IGFyZ3VtZW50IGxpc3QgbGVu Z3RoIG11c3QgYmUgZXhhY3RseSAyCitXQVJOSU5HOiAgZXJyb3IgZm9yIHB1YmxpY2F0aW9u IG5hbWVzcGFjZSx7YWRkcl9uc3AsendlaX0se306IGFyZ3VtZW50IGxpc3QgbGVuZ3RoIG11 c3QgYmUgZXhhY3RseSAyCitXQVJOSU5HOiAgZXJyb3IgZm9yIHB1YmxpY2F0aW9uIG5hbWVz cGFjZSx7YWRkcl9uc3AsendlaX0se2ludGVnZXJ9OiBhcmd1bWVudCBsaXN0IGxlbmd0aCBt dXN0IGJlIGV4YWN0bHkgMgorV0FSTklORzogIGVycm9yIGZvciBwdWJsaWNhdGlvbiBuYW1l c3BhY2Use2VpbnMsendlaSxkcmVpfSx7fTogYXJndW1lbnQgbGlzdCBsZW5ndGggbXVzdCBi ZSBleGFjdGx5IDIKK1dBUk5JTkc6ICBlcnJvciBmb3IgcHVibGljYXRpb24gbmFtZXNwYWNl LHtlaW5zLHp3ZWksZHJlaX0se2ludGVnZXJ9OiBhcmd1bWVudCBsaXN0IGxlbmd0aCBtdXN0 IGJlIGV4YWN0bHkgMgogV0FSTklORzogIGVycm9yIGZvciBwdWJsaWNhdGlvbiByZWxhdGlv bix7ZWluc30se306IGFyZ3VtZW50IGxpc3QgbGVuZ3RoIG11c3QgYmUgZXhhY3RseSAxCiBX QVJOSU5HOiAgZXJyb3IgZm9yIHB1YmxpY2F0aW9uIHJlbGF0aW9uLHtlaW5zfSx7aW50ZWdl cn06IHJlbGF0aW9uICJlaW5zIiBkb2VzIG5vdCBleGlzdAogV0FSTklORzogIGVycm9yIGZv ciBwdWJsaWNhdGlvbiByZWxhdGlvbix7YWRkcl9uc3AsendlaX0se306IGFyZ3VtZW50IGxp c3QgbGVuZ3RoIG11c3QgYmUgZXhhY3RseSAxCkBAIC00NDEsNyArNDQyLDggQEAgV0lUSCBv YmplY3RzICh0eXBlLCBuYW1lLCBhcmdzKSBBUyAoVkFMVUVTCiAgICAgKCd0cmFuc2Zvcm0n LCAne2ludH0nLCAne3NxbH0nKSwKICAgICAoJ2FjY2VzcyBtZXRob2QnLCAne2J0cmVlfScs ICd7fScpLAogICAgICgncHVibGljYXRpb24nLCAne2FkZHJfcHVifScsICd7fScpLAotICAg ICgncHVibGljYXRpb24gbmFtZXNwYWNlJywgJ3thZGRyX25zcH0nLCAne2FkZHJfcHViX3Nj aGVtYX0nKSwKKyAgICAoJ3B1YmxpY2F0aW9uIG5hbWVzcGFjZScsICd7YWRkcl9uc3B9Jywg J3thZGRyX3B1Yl9zY2hlbWEsIHR9JyksCisgICAgKCdwdWJsaWNhdGlvbiBuYW1lc3BhY2Un LCAne2FkZHJfbnNwfScsICd7YWRkcl9wdWJfc2NoZW1hMiwgc30nKSwKICAgICAoJ3B1Ymxp Y2F0aW9uIHJlbGF0aW9uJywgJ3thZGRyX25zcCwgZ2VudGFibGV9JywgJ3thZGRyX3B1Yn0n KSwKICAgICAoJ3N1YnNjcmlwdGlvbicsICd7cmVncmVzc19hZGRyX3N1Yn0nLCAne30nKSwK ICAgICAoJ3N0YXRpc3RpY3Mgb2JqZWN0JywgJ3thZGRyX25zcCwgZ2VudGFibGVfc3RhdH0n LCAne30nKQpAQCAtNTA0LDcgKzUwNiw4IEBAIHRleHQgc2VhcmNoIHRlbXBsYXRlfGFkZHJf bnNwfGFkZHJfdHNfdGVtcHxhZGRyX25zcC5hZGRyX3RzX3RlbXB8dAogc3Vic2NyaXB0aW9u fE5VTEx8cmVncmVzc19hZGRyX3N1YnxyZWdyZXNzX2FkZHJfc3VifHQKIHB1YmxpY2F0aW9u fE5VTEx8YWRkcl9wdWJ8YWRkcl9wdWJ8dAogcHVibGljYXRpb24gcmVsYXRpb258TlVMTHxO VUxMfGFkZHJfbnNwLmdlbnRhYmxlIGluIHB1YmxpY2F0aW9uIGFkZHJfcHVifHQKLXB1Ymxp Y2F0aW9uIG5hbWVzcGFjZXxOVUxMfE5VTEx8YWRkcl9uc3AgaW4gcHVibGljYXRpb24gYWRk cl9wdWJfc2NoZW1hfHQKK3B1YmxpY2F0aW9uIG5hbWVzcGFjZXxOVUxMfE5VTEx8YWRkcl9u c3AgaW4gcHVibGljYXRpb24gYWRkcl9wdWJfc2NoZW1hIHR5cGUgdHx0CitwdWJsaWNhdGlv biBuYW1lc3BhY2V8TlVMTHxOVUxMfGFkZHJfbnNwIGluIHB1YmxpY2F0aW9uIGFkZHJfcHVi X3NjaGVtYTIgdHlwZSBzfHQKIC0tLQogLS0tIENsZWFudXAgcmVzb3VyY2VzCiAtLS0KQEAg LTUxNiw2ICs1MTksNyBAQCBkcm9wIGNhc2NhZGVzIHRvIHNlcnZlciBpbnRlZ2VyCiBkcm9w IGNhc2NhZGVzIHRvIHVzZXIgbWFwcGluZyBmb3IgcmVncmVzc19hZGRyX3VzZXIgb24gc2Vy dmVyIGludGVnZXIKIERST1AgUFVCTElDQVRJT04gYWRkcl9wdWI7CiBEUk9QIFBVQkxJQ0FU SU9OIGFkZHJfcHViX3NjaGVtYTsKK0RST1AgUFVCTElDQVRJT04gYWRkcl9wdWJfc2NoZW1h MjsKIERST1AgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfYWRkcl9zdWI7CiBEUk9QIFNDSEVNQSBh ZGRyX25zcCBDQVNDQURFOwogTk9USUNFOiAgZHJvcCBjYXNjYWRlcyB0byAxNCBvdGhlciBv YmplY3RzCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BzcWwub3V0 IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wc3FsLm91dAppbmRleCAxM2U0ZjZkYjdi YS4uYmFiNWMyNzQyMmMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv cHNxbC5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wc3FsLm91dApAQCAt NjI0MCw5ICs2MjQwLDkgQEAgTGlzdCBvZiBzY2hlbWFzCiAoMCByb3dzKQogCiBcZFJwICJu by5zdWNoLnB1YmxpY2F0aW9uIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlz dCBvZiBwdWJsaWNhdGlvbnMKLSBOYW1lIHwgT3duZXIgfCBBbGwgdGFibGVzIHwgSW5zZXJ0 cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0r LS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tLS0rLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBMaXN0IG9mIHB1YmxpY2F0aW9ucworIE5hbWUgfCBPd25lciB8IEFsbCB0 YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwg VHJ1bmNhdGVzIHwgU2VxdWVuY2VzIHwgVmlhIHJvb3QgCistLS0tLS0rLS0tLS0tLSstLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KICgwIHJvd3MpCiAKIFxkUnMg Im5vLnN1Y2guc3Vic2NyaXB0aW9uIgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1 YmxpY2F0aW9uLm91dAppbmRleCAxNjM2MWE5MWY5Zi4uMmY1YzcyYzlkMmIgMTAwNjQ0Ci0t LSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0CisrKyBiL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0CkBAIC0zMCwyMCArMzAs MjAgQEAgRVJST1I6ICBjb25mbGljdGluZyBvciByZWR1bmRhbnQgb3B0aW9ucwogTElORSAx OiAuLi51Yl94eHggV0lUSCAocHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QgPSAndHJ1ZScs IHB1Ymxpc2hfdmkuLi4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBeCiBcZFJwCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBwdWJsaWNhdGlvbnMKLSAgICAgICAg TmFtZSAgICAgICAgfCAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwg SW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0t LS0tLQotIHRlc3RwaWJfaW5zX3RydW5jdCB8IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8 IGYgICAgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgfCBmICAgICAgICAg fCBmCi0gdGVzdHB1Yl9kZWZhdWx0ICAgIHwgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwg ZiAgICAgICAgICB8IGYgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgICB8 IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIExpc3Qgb2YgcHVibGljYXRpb25zCisgICAgICAgIE5hbWUgICAgICAgIHwg ICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMg fCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBTZXF1ZW5jZXMg fCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHRlc3Rw aWJfaW5zX3RydW5jdCB8IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAg fCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgfCBmICAgICAgIHwgZiAgICAg ICAgIHwgZiAgICAgICAgIHwgZgorIHRlc3RwdWJfZGVmYXVsdCAgICB8IHJlZ3Jlc3NfcHVi bGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgZiAgICAgICB8 IHQgICAgICAgfCBmICAgICAgIHwgZiAgICAgICAgIHwgZiAgICAgICAgIHwgZgogKDIgcm93 cykKIAotQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9kZWZhdWx0IFNFVCAocHVibGlzaCA9 ICdpbnNlcnQsIHVwZGF0ZSwgZGVsZXRlJyk7CitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHVi X2RlZmF1bHQgU0VUIChwdWJsaXNoID0gJ2luc2VydCwgdXBkYXRlLCBkZWxldGUsIHNlcXVl bmNlJyk7CiBcZFJwCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgTGlzdCBvZiBwdWJsaWNhdGlvbnMKLSAgICAgICAgTmFtZSAgICAgICAgfCAgICAg ICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMg fCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHRlc3RwaWJfaW5z X3RydW5jdCB8IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAg ICAgIHwgZiAgICAgICB8IGYgICAgICAgfCBmICAgICAgICAgfCBmCi0gdGVzdHB1Yl9kZWZh dWx0ICAgIHwgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgICB8IGYKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Yg cHVibGljYXRpb25zCisgICAgICAgIE5hbWUgICAgICAgIHwgICAgICAgICAgT3duZXIgICAg ICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRl cyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBTZXF1ZW5jZXMgfCBWaWEgcm9vdCAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHRlc3RwaWJfaW5zX3RydW5jdCB8IHJl Z3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgICAgIHwg dCAgICAgICB8IGYgICAgICAgfCBmICAgICAgIHwgZiAgICAgICAgIHwgZiAgICAgICAgIHwg ZgorIHRlc3RwdWJfZGVmYXVsdCAgICB8IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYg ICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAg IHwgZiAgICAgICAgIHwgdCAgICAgICAgIHwgZgogKDIgcm93cykKIAogLS0tIGFkZGluZyB0 YWJsZXMKQEAgLTYxLDYgKzYxLDkgQEAgQ1JFQVRFIFRBQkxFIHRlc3RwdWJfdGJsMiAoaWQg c2VyaWFsIHByaW1hcnkga2V5LCBkYXRhIHRleHQpOwogQUxURVIgUFVCTElDQVRJT04gdGVz dHB1Yl9mb3JhbGx0YWJsZXMgQUREIFRBQkxFIHRlc3RwdWJfdGJsMjsKIEVSUk9SOiAgcHVi bGljYXRpb24gInRlc3RwdWJfZm9yYWxsdGFibGVzIiBpcyBkZWZpbmVkIGFzIEZPUiBBTEwg VEFCTEVTCiBERVRBSUw6ICBUYWJsZXMgY2Fubm90IGJlIGFkZGVkIHRvIG9yIGRyb3BwZWQg ZnJvbSBGT1IgQUxMIFRBQkxFUyBwdWJsaWNhdGlvbnMuCistLSBmYWlsIC0gY2FuJ3QgYWRk IGEgdGFibGUgdXNpbmcgQUREIFNFUVVFTkNFIGNvbW1hbmQKK0FMVEVSIFBVQkxJQ0FUSU9O IHRlc3RwdWJfZm9yYWxsdGFibGVzIEFERCBTRVFVRU5DRSB0ZXN0cHViX3RibDI7CitFUlJP UjogIG9iamVjdCB0eXBlIGRvZXMgbm90IG1hdGNoIHR5cGUgZXhwZWN0ZWQgYnkgY29tbWFu ZAogLS0gZmFpbCAtIGNhbid0IGRyb3AgZnJvbSBhbGwgdGFibGVzIHB1YmxpY2F0aW9uCiBB TFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcmFsbHRhYmxlcyBEUk9QIFRBQkxFIHRlc3Rw dWJfdGJsMjsKIEVSUk9SOiAgcHVibGljYXRpb24gInRlc3RwdWJfZm9yYWxsdGFibGVzIiBp cyBkZWZpbmVkIGFzIEZPUiBBTEwgVEFCTEVTCkBAIC04NywxMCArOTAsMTAgQEAgUkVTRVQg Y2xpZW50X21pbl9tZXNzYWdlczsKIC0tIHNob3VsZCBiZSBhYmxlIHRvIGFkZCBzY2hlbWEg dG8gJ0ZPUiBUQUJMRScgcHVibGljYXRpb24KIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJf Zm9ydGFibGUgQUREIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3Q7CiBcZFJwKyB0ZXN0cHVi X2ZvcnRhYmxlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9u IHRlc3RwdWJfZm9ydGFibGUKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFi bGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJv b3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3Nf cHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3J0YWJsZQorICAgICAgICAg IE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0 cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgU2VxdWVuY2VzIHwgVmlhIHJv b3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAg ICAgIHwgZiAgICAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQg ICAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlczoKICAgICAicHVibGljLnRlc3RwdWJf dGJsMSIKIFRhYmxlcyBmcm9tIHNjaGVtYXM6CkBAIC05OSwyMCArMTAyLDIwIEBAIFRhYmxl cyBmcm9tIHNjaGVtYXM6CiAtLSBzaG91bGQgYmUgYWJsZSB0byBkcm9wIHNjaGVtYSBmcm9t ICdGT1IgVEFCTEUnIHB1YmxpY2F0aW9uCiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2Zv cnRhYmxlIERST1AgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDsKIFxkUnArIHRlc3RwdWJf Zm9ydGFibGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24g dGVzdHB1Yl9mb3J0YWJsZQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJs ZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9v dCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19w dWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcnRhYmxlCisgICAgICAgICAg T3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRz IHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBTZXF1ZW5jZXMgfCBWaWEgcm9v dCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAg ICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICAgIHwgdCAgICAgICAgIHwgZgogVGFibGVzOgogICAgICJwdWJsaWMudGVzdHB1Yl90 YmwxIgogCiAtLSBzaG91bGQgYmUgYWJsZSB0byBzZXQgc2NoZW1hIHRvICdGT1IgVEFCTEUn IHB1YmxpY2F0aW9uCiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnRhYmxlIFNFVCBU QUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0OwogXGRScCsgdGVzdHB1Yl9mb3J0YWJsZQotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcnRh YmxlCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMg fCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3Vz ZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAg ICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9ydGFibGUKKyAgICAgICAgICBPd25lciAgICAgICAg ICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwg RGVsZXRlcyB8IFRydW5jYXRlcyB8IFNlcXVlbmNlcyB8IFZpYSByb290IAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0t LS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCB0ICAg ICAgICAgfCBmCiBUYWJsZXMgZnJvbSBzY2hlbWFzOgogICAgICJwdWJfdGVzdCIKIApAQCAt MTIzLDEwICsxMjYsMTAgQEAgQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yc2NoZW1h IEZPUiBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0OwogQ1JFQVRFIFBVQkxJQ0FUSU9OIHRl c3RwdWJfZm9yX3RibF9zY2hlbWEgRk9SIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QsIFRB QkxFIHB1Yl90ZXN0LnRlc3RwdWJfbm9wazsKIFJFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7 CiBcZFJwKyB0ZXN0cHViX2Zvcl90Ymxfc2NoZW1hCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9yX3RibF9zY2hlbWEKLSAgICAgICAgICBP d25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxl dGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t LS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1 Yl9mb3JfdGJsX3NjaGVtYQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJs ZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1 bmNhdGVzIHwgU2VxdWVuY2VzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNz X3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IHQgICAgICAgICB8IGYKIFRh YmxlczoKICAgICAicHViX3Rlc3QudGVzdHB1Yl9ub3BrIgogVGFibGVzIGZyb20gc2NoZW1h czoKQEAgLTE0NCwxMCArMTQ3LDEwIEBAIExJTkUgMTogLi4uQ0FUSU9OIHRlc3RwdWJfcGFy c2VydHN0IEZPUiBUQUJMRVMgSU4gU0NIRU1BIGZvbywgdGVzdC5mb287CiAtLSBzaG91bGQg YmUgYWJsZSB0byBhZGQgYSB0YWJsZSBvZiB0aGUgc2FtZSBzY2hlbWEgdG8gdGhlIHNjaGVt YSBwdWJsaWNhdGlvbgogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JzY2hlbWEgQURE IFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfbm9wazsKIFxkUnArIHRlc3RwdWJfZm9yc2NoZW1h Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9m b3JzY2hlbWEKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5z ZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRp b25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcnNjaGVtYQorICAgICAgICAgIE93bmVyICAg ICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0 ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgU2VxdWVuY2VzIHwgVmlhIHJvb3QgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAg ICAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8 IHQgICAgICAgICB8IGYKIFRhYmxlczoKICAgICAicHViX3Rlc3QudGVzdHB1Yl9ub3BrIgog VGFibGVzIGZyb20gc2NoZW1hczoKQEAgLTE1NiwxMCArMTU5LDEwIEBAIFRhYmxlcyBmcm9t IHNjaGVtYXM6CiAtLSBzaG91bGQgYmUgYWJsZSB0byBkcm9wIHRoZSB0YWJsZQogQUxURVIg UFVCTElDQVRJT04gdGVzdHB1Yl9mb3JzY2hlbWEgRFJPUCBUQUJMRSBwdWJfdGVzdC50ZXN0 cHViX25vcGs7CiBcZFJwKyB0ZXN0cHViX2ZvcnNjaGVtYQotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9yc2NoZW1hCi0gICAgICAgICAg T3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVs ZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVz dHB1Yl9mb3JzY2hlbWEKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVz IHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5j YXRlcyB8IFNlcXVlbmNlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19w dWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJs ZXMgZnJvbSBzY2hlbWFzOgogICAgICJwdWJfdGVzdCIKIApAQCAtMTcwLDEwICsxNzMsMTAg QEAgRVJST1I6ICByZWxhdGlvbiAidGVzdHB1Yl9ub3BrIiBpcyBub3QgcGFydCBvZiB0aGUg cHVibGljYXRpb24KIC0tIHNob3VsZCBiZSBhYmxlIHRvIHNldCB0YWJsZSB0byBzY2hlbWEg cHVibGljYXRpb24KIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yc2NoZW1hIFNFVCBU QUJMRSBwdWJfdGVzdC50ZXN0cHViX25vcGs7CiBcZFJwKyB0ZXN0cHViX2ZvcnNjaGVtYQot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9y c2NoZW1hCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2Vy dHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9u X3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3JzY2hlbWEKKyAgICAgICAgICBPd25lciAgICAg ICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVz IHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFNlcXVlbmNlcyB8IFZpYSByb290IAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAg ICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCB0 ICAgICAgICAgfCBmCiBUYWJsZXM6CiAgICAgInB1Yl90ZXN0LnRlc3RwdWJfbm9wayIKIApA QCAtMTk3LDEwICsyMDAsMTAgQEAgTm90LW51bGwgY29uc3RyYWludHM6CiAgICAgInRlc3Rw dWJfdGJsMl9pZF9ub3RfbnVsbCIgTk9UIE5VTEwgImlkIgogCiBcZFJwKyB0ZXN0cHViX2Zv cmFsbHRhYmxlcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24g dGVzdHB1Yl9mb3JhbGx0YWJsZXMKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwg dGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlh IHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jl c3NfcHVibGljYXRpb25fdXNlciB8IHQgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8 IGYgICAgICAgfCBmICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9yYWxsdGFibGVzCisgICAg ICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJ bnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBTZXF1ZW5jZXMgfCBW aWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IHQg ICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCBmICAgICAg IHwgZiAgICAgICAgIHwgZiAgICAgICAgIHwgZgogKDEgcm93KQogCiBEUk9QIFRBQkxFIHRl c3RwdWJfdGJsMjsKQEAgLTIxMiwyNCArMjE1LDUyNSBAQCBDUkVBVEUgUFVCTElDQVRJT04g dGVzdHB1YjMgRk9SIFRBQkxFIHRlc3RwdWJfdGJsMzsKIENSRUFURSBQVUJMSUNBVElPTiB0 ZXN0cHViNCBGT1IgVEFCTEUgT05MWSB0ZXN0cHViX3RibDM7CiBSRVNFVCBjbGllbnRfbWlu X21lc3NhZ2VzOwogXGRScCsgdGVzdHB1YjMKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIzCi0gICAgICAgICAgT3duZXIgICAgICAg ICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5j YXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMwor ICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2Vz IHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgU2VxdWVuY2Vz IHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIg fCBmICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICB8IHQgICAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlczoKICAgICAicHVibGlj LnRlc3RwdWJfdGJsMyIKICAgICAicHVibGljLnRlc3RwdWJfdGJsM2EiCiAKIFxkUnArIHRl c3RwdWI0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlv biB0ZXN0cHViNAotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJ bnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNh dGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjQKKyAgICAgICAgICBPd25lciAgICAg ICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVz IHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFNlcXVlbmNlcyB8IFZpYSByb290IAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAg ICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCB0 ICAgICAgICAgfCBmCiBUYWJsZXM6CiAgICAgInB1YmxpYy50ZXN0cHViX3RibDMiCiAKIERS T1AgVEFCTEUgdGVzdHB1Yl90YmwzLCB0ZXN0cHViX3RibDNhOwogRFJPUCBQVUJMSUNBVElP TiB0ZXN0cHViMywgdGVzdHB1YjQ7CistLS0gYWRkaW5nIHNlcXVlbmNlcworQ1JFQVRFIFNF UVVFTkNFIHRlc3RwdWJfc2VxMDsKK0NSRUFURSBTRVFVRU5DRSBwdWJfdGVzdC50ZXN0cHVi X3NlcTE7CitTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7CitDUkVBVEUgUFVC TElDQVRJT04gdGVzdHB1Yl9mb3JhbGxzZXF1ZW5jZXMgRk9SIEFMTCBTRVFVRU5DRVMgV0lU SCAocHVibGlzaCA9ICdzZXF1ZW5jZScpOworUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsK K0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yYWxsc2VxdWVuY2VzIFNFVCAocHVibGlz aCA9ICdpbnNlcnQsIHNlcXVlbmNlJyk7CitDUkVBVEUgU0VRVUVOQ0UgdGVzdHB1Yl9zZXEy OworLS0gZmFpbCAtIGNhbid0IGFkZCB0byBmb3IgYWxsIHNlcXVlbmNlcyBwdWJsaWNhdGlv bgorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JhbGxzZXF1ZW5jZXMgQUREIFNFUVVF TkNFIHRlc3RwdWJfc2VxMjsKK0VSUk9SOiAgcHVibGljYXRpb24gInRlc3RwdWJfZm9yYWxs c2VxdWVuY2VzIiBpcyBkZWZpbmVkIGFzIEZPUiBBTEwgU0VRVUVOQ0VTCitERVRBSUw6ICBT ZXF1ZW5jZXMgY2Fubm90IGJlIGFkZGVkIHRvIG9yIGRyb3BwZWQgZnJvbSBGT1IgQUxMIFNF UVVFTkNFUyBwdWJsaWNhdGlvbnMuCistLSBmYWlsIC0gY2FuJ3QgZHJvcCBmcm9tIGFsbCBz ZXF1ZW5jZXMgcHVibGljYXRpb24KK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yYWxs c2VxdWVuY2VzIERST1AgU0VRVUVOQ0UgdGVzdHB1Yl9zZXEyOworRVJST1I6ICBwdWJsaWNh dGlvbiAidGVzdHB1Yl9mb3JhbGxzZXF1ZW5jZXMiIGlzIGRlZmluZWQgYXMgRk9SIEFMTCBT RVFVRU5DRVMKK0RFVEFJTDogIFNlcXVlbmNlcyBjYW5ub3QgYmUgYWRkZWQgdG8gb3IgZHJv cHBlZCBmcm9tIEZPUiBBTEwgU0VRVUVOQ0VTIHB1YmxpY2F0aW9ucy4KKy0tIGZhaWwgLSBj YW4ndCBhZGQgdG8gZm9yIGFsbCBzZXF1ZW5jZXMgcHVibGljYXRpb24KK0FMVEVSIFBVQkxJ Q0FUSU9OIHRlc3RwdWJfZm9yYWxsc2VxdWVuY2VzIFNFVCBTRVFVRU5DRSBwdWJfdGVzdC50 ZXN0cHViX3NlcTE7CitFUlJPUjogIHB1YmxpY2F0aW9uICJ0ZXN0cHViX2ZvcmFsbHNlcXVl bmNlcyIgaXMgZGVmaW5lZCBhcyBGT1IgQUxMIFNFUVVFTkNFUworREVUQUlMOiAgU2VxdWVu Y2VzIGNhbm5vdCBiZSBhZGRlZCB0byBvciBkcm9wcGVkIGZyb20gRk9SIEFMTCBTRVFVRU5D RVMgcHVibGljYXRpb25zLgorLS0gZmFpbCAtIGNhbid0IGFkZCBzY2hlbWEgdG8gJ0ZPUiBB TEwgU0VRVUVOQ0VTJyBwdWJsaWNhdGlvbgorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9m b3JhbGxzZXF1ZW5jZXMgQUREIFNFUVVFTkNFUyBJTiBTQ0hFTUEgcHViX3Rlc3Q7CitFUlJP UjogIHB1YmxpY2F0aW9uICJ0ZXN0cHViX2ZvcmFsbHNlcXVlbmNlcyIgaXMgZGVmaW5lZCBh cyBGT1IgQUxMIFNFUVVFTkNFUworREVUQUlMOiAgU2VxdWVuY2VzIGZyb20gc2NoZW1hIGNh bm5vdCBiZSBhZGRlZCB0bywgZHJvcHBlZCBmcm9tLCBvciBzZXQgb24gRk9SIEFMTCBTRVFV RU5DRVMgcHVibGljYXRpb25zLgorLS0gZmFpbCAtIGNhbid0IGRyb3Agc2NoZW1hIGZyb20g J0ZPUiBBTEwgU0VRVUVOQ0VTJyBwdWJsaWNhdGlvbgorQUxURVIgUFVCTElDQVRJT04gdGVz dHB1Yl9mb3JhbGxzZXF1ZW5jZXMgRFJPUCBTRVFVRU5DRVMgSU4gU0NIRU1BIHB1Yl90ZXN0 OworRVJST1I6ICBwdWJsaWNhdGlvbiAidGVzdHB1Yl9mb3JhbGxzZXF1ZW5jZXMiIGlzIGRl ZmluZWQgYXMgRk9SIEFMTCBTRVFVRU5DRVMKK0RFVEFJTDogIFNlcXVlbmNlcyBmcm9tIHNj aGVtYSBjYW5ub3QgYmUgYWRkZWQgdG8sIGRyb3BwZWQgZnJvbSwgb3Igc2V0IG9uIEZPUiBB TEwgU0VRVUVOQ0VTIHB1YmxpY2F0aW9ucy4KKy0tIGZhaWwgLSBjYW4ndCBzZXQgc2NoZW1h IHRvICdGT1IgQUxMIFNFUVVFTkNFUycgcHVibGljYXRpb24KK0FMVEVSIFBVQkxJQ0FUSU9O IHRlc3RwdWJfZm9yYWxsc2VxdWVuY2VzIFNFVCBTRVFVRU5DRVMgSU4gU0NIRU1BIHB1Yl90 ZXN0OworRVJST1I6ICBwdWJsaWNhdGlvbiAidGVzdHB1Yl9mb3JhbGxzZXF1ZW5jZXMiIGlz IGRlZmluZWQgYXMgRk9SIEFMTCBTRVFVRU5DRVMKK0RFVEFJTDogIFNlcXVlbmNlcyBmcm9t IHNjaGVtYSBjYW5ub3QgYmUgYWRkZWQgdG8sIGRyb3BwZWQgZnJvbSwgb3Igc2V0IG9uIEZP UiBBTEwgU0VRVUVOQ0VTIHB1YmxpY2F0aW9ucy4KK1NFVCBjbGllbnRfbWluX21lc3NhZ2Vz ID0gJ0VSUk9SJzsKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnNlcXVlbmNlIEZP UiBTRVFVRU5DRSB0ZXN0cHViX3NlcTA7CitSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOwor LS0gc2hvdWxkIGJlIGFibGUgdG8gYWRkIHNjaGVtYSB0byAnRk9SIFNFUVVFTkNFJyBwdWJs aWNhdGlvbgorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JzZXF1ZW5jZSBBREQgU0VR VUVOQ0VTIElOIFNDSEVNQSBwdWJfdGVzdDsKK1xkUnArIHRlc3RwdWJfZm9yc2VxdWVuY2UK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRp b24gdGVzdHB1Yl9mb3JzZXF1ZW5jZQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFs bCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVz IHwgVHJ1bmNhdGVzIHwgU2VxdWVuY2VzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyBy ZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IHQgICAgICAgICB8 IGYKK1NlcXVlbmNlczoKKyAgICAicHVibGljLnRlc3RwdWJfc2VxMCIKK1NlcXVlbmNlcyBm cm9tIHNjaGVtYXM6CisgICAgInB1Yl90ZXN0IgorCistLSBhZGQgc2VxdWVuY2UgZnJvbSB0 aGUgc2NoZW1hIHdlIGFscmVhZHkgYWRkZWQKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJf Zm9yc2VxdWVuY2UgQUREIFNFUVVFTkNFIHB1Yl90ZXN0LnRlc3RwdWJfc2VxMTsKKy0tIGZh aWwgLSBjYW4ndCBhZGQgc2VxdWVuY2UgdXNpbmcgQUREIFRBQkxFIGNvbW1hbmQKK0FMVEVS IFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yc2VxdWVuY2UgQUREIFRBQkxFIHB1Yl90ZXN0LnRl c3RwdWJfc2VxMTsKK0VSUk9SOiAgb2JqZWN0IHR5cGUgZG9lcyBub3QgbWF0Y2ggdHlwZSBl eHBlY3RlZCBieSBjb21tYW5kCistLSBzaG91bGQgYmUgYWJsZSB0byBkcm9wIHNjaGVtYSBm cm9tICdGT1IgU0VRVUVOQ0UnIHB1YmxpY2F0aW9uCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0 cHViX2ZvcnNlcXVlbmNlIERST1AgU0VRVUVOQ0VTIElOIFNDSEVNQSBwdWJfdGVzdDsKK1xk UnArIHRlc3RwdWJfZm9yc2VxdWVuY2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3JzZXF1ZW5jZQorICAgICAg ICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5z ZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgU2VxdWVuY2VzIHwgVmlh IHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAg ICAgICAgIHwgZiAgICAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgICB8IHQgICAgICAgICB8IGYKK1NlcXVlbmNlczoKKyAgICAicHViX3Rlc3Qu dGVzdHB1Yl9zZXExIgorICAgICJwdWJsaWMudGVzdHB1Yl9zZXEwIgorCistLSBzaG91bGQg YmUgYWJsZSB0byBzZXQgc2NoZW1hIHRvICdGT1IgU0VRVUVOQ0UnIHB1YmxpY2F0aW9uCitB TFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnNlcXVlbmNlIFNFVCBTRVFVRU5DRVMgSU4g U0NIRU1BIHB1Yl90ZXN0OworXGRScCsgdGVzdHB1Yl9mb3JzZXF1ZW5jZQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHVi X2ZvcnNlcXVlbmNlCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8 IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0 ZXMgfCBTZXF1ZW5jZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVi bGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgdCAgICAgICAgIHwgZgorU2VxdWVu Y2VzIGZyb20gc2NoZW1hczoKKyAgICAicHViX3Rlc3QiCisKK1NFVCBjbGllbnRfbWluX21l c3NhZ2VzID0gJ0VSUk9SJzsKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnNjaGVt YSBGT1IgU0VRVUVOQ0VTIElOIFNDSEVNQSBwdWJfdGVzdDsKK1JFU0VUIGNsaWVudF9taW5f bWVzc2FnZXM7CistLSBzaG91bGQgYmUgYWJsZSB0byBzZXQgc2VxdWVuY2UgdG8gc2NoZW1h IHB1YmxpY2F0aW9uCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnNjaGVtYSBTRVQg U0VRVUVOQ0UgcHViX3Rlc3QudGVzdHB1Yl9zZXExOworXGRScCsgdGVzdHB1Yl9mb3JzY2hl bWEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1Ymxp Y2F0aW9uIHRlc3RwdWJfZm9yc2NoZW1hCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwg QWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0 ZXMgfCBUcnVuY2F0ZXMgfCBTZXF1ZW5jZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQor IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgdCAgICAgICAg IHwgZgorU2VxdWVuY2VzOgorICAgICJwdWJfdGVzdC50ZXN0cHViX3NlcTEiCisKK1NFTEVD VCBwdWJuYW1lLCBwdWJhbGx0YWJsZXMsIHB1YmFsbHNlcXVlbmNlcyBGUk9NIHBnX3B1Ymxp Y2F0aW9uIFdIRVJFIHB1Ym5hbWUgPSAndGVzdHB1Yl9mb3JhbGxzZXF1ZW5jZXMnOworICAg ICAgICAgcHVibmFtZSAgICAgICAgIHwgcHViYWxsdGFibGVzIHwgcHViYWxsc2VxdWVuY2Vz IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLQorIHRlc3RwdWJfZm9yYWxsc2VxdWVuY2VzIHwgZiAgICAgICAgICAgIHwgdAor KDEgcm93KQorCitcZCsgcHViX3Rlc3QudGVzdHB1Yl9zZXExCisgICAgICAgICAgICAgICAg ICAgICAgIFNlcXVlbmNlICJwdWJfdGVzdC50ZXN0cHViX3NlcTEiCisgIFR5cGUgIHwgU3Rh cnQgfCBNaW5pbXVtIHwgICAgICAgTWF4aW11bSAgICAgICB8IEluY3JlbWVudCB8IEN5Y2xl cz8gfCBDYWNoZSAKKy0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLQorIGJpZ2ludCB8ICAgICAx IHwgICAgICAgMSB8IDkyMjMzNzIwMzY4NTQ3NzU4MDcgfCAgICAgICAgIDEgfCBubyAgICAg IHwgICAgIDEKK1B1YmxpY2F0aW9uczoKKyAgICAidGVzdHB1Yl9mb3JhbGxzZXF1ZW5jZXMi CisgICAgInRlc3RwdWJfZm9yc2NoZW1hIgorICAgICJ0ZXN0cHViX2ZvcnNlcXVlbmNlIgor CitcZFJwKyB0ZXN0cHViX2ZvcmFsbHNlcXVlbmNlcworICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3JhbGxzZXF1ZW5j ZXMKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVl bmNlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFNlcXVl bmNlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91 c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICB8 IGYgICAgICAgfCBmICAgICAgICAgfCB0ICAgICAgICAgfCBmCisoMSByb3cpCisKK0RST1Ag U0VRVUVOQ0UgdGVzdHB1Yl9zZXEwLCBwdWJfdGVzdC50ZXN0cHViX3NlcTEsIHRlc3RwdWJf c2VxMjsKK0RST1AgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JhbGxzZXF1ZW5jZXMsIHRlc3Rw dWJfZm9yc2VxdWVuY2UsIHRlc3RwdWJfZm9yc2NoZW1hOworLS0gcHVibGljYXRpb24gdGVz dGluZyBtdWx0aXBsZSBzZXF1ZW5jZXMgYXQgdGhlIHNhbWUgdGltZQorQ1JFQVRFIFNFUVVF TkNFIHRlc3RwdWJfc2VxMTsKK0NSRUFURSBTRVFVRU5DRSB0ZXN0cHViX3NlcTI7CitTRVQg Y2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7CitDUkVBVEUgUFVCTElDQVRJT04gdGVz dHB1Yl9tdWx0aSBGT1IgU0VRVUVOQ0UgdGVzdHB1Yl9zZXExLCB0ZXN0cHViX3NlcTI7CitS RVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOworXGRScCsgdGVzdHB1Yl9tdWx0aQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0 ZXN0cHViX211bHRpCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8 IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0 ZXMgfCBTZXF1ZW5jZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVi bGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgdCAgICAgICAgIHwgZgorU2VxdWVu Y2VzOgorICAgICJwdWJsaWMudGVzdHB1Yl9zZXExIgorICAgICJwdWJsaWMudGVzdHB1Yl9z ZXEyIgorCitEUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWJfbXVsdGk7CitEUk9QIFNFUVVFTkNF IHRlc3RwdWJfc2VxMTsKK0RST1AgU0VRVUVOQ0UgdGVzdHB1Yl9zZXEyOworLS0gUHVibGlj YXRpb24gbWl4aW5nIHRhYmxlcyBhbmQgc2VxdWVuY2VzCitTRVQgY2xpZW50X21pbl9tZXNz YWdlcyA9ICdFUlJPUic7CitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9taXg7CitSRVNF VCBjbGllbnRfbWluX21lc3NhZ2VzOworQ1JFQVRFIFNFUVVFTkNFIHRlc3RwdWJfc2VxMTsK K0NSRUFURSBTRVFVRU5DRSBwdWJfdGVzdC50ZXN0cHViX3NlcTI7CitBTFRFUiBQVUJMSUNB VElPTiB0ZXN0cHViX21peCBBREQgU0VRVUVOQ0UgdGVzdHB1Yl9zZXExLCBUQUJMRSB0ZXN0 cHViX3RibDE7CitcZFJwKyB0ZXN0cHViX21peAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9taXgKKyAgICAg ICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IElu c2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFNlcXVlbmNlcyB8IFZp YSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSst LS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAg ICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg fCB0ICAgICAgICAgfCB0ICAgICAgICAgfCBmCitUYWJsZXM6CisgICAgInB1YmxpYy50ZXN0 cHViX3RibDEiCitTZXF1ZW5jZXM6CisgICAgInB1YmxpYy50ZXN0cHViX3NlcTEiCisKK0FM VEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfbWl4IEFERCBTRVFVRU5DRVMgSU4gU0NIRU1BIHB1 Yl90ZXN0LCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0OworXGRScCsgdGVzdHB1Yl9taXgK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1Ymxp Y2F0aW9uIHRlc3RwdWJfbWl4CisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRh YmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBU cnVuY2F0ZXMgfCBTZXF1ZW5jZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jl c3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgdCAgICAgICAgIHwgZgor VGFibGVzOgorICAgICJwdWJsaWMudGVzdHB1Yl90YmwxIgorVGFibGVzIGZyb20gc2NoZW1h czoKKyAgICAicHViX3Rlc3QiCitTZXF1ZW5jZXM6CisgICAgInB1YmxpYy50ZXN0cHViX3Nl cTEiCitTZXF1ZW5jZXMgZnJvbSBzY2hlbWFzOgorICAgICJwdWJfdGVzdCIKKworQUxURVIg UFVCTElDQVRJT04gdGVzdHB1Yl9taXggRFJPUCBTRVFVRU5DRVMgSU4gU0NIRU1BIHB1Yl90 ZXN0OworXGRScCsgdGVzdHB1Yl9taXgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfbWl4CisgICAgICAgICAg T3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRz IHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBTZXF1ZW5jZXMgfCBWaWEgcm9v dCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAg ICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICAgIHwgdCAgICAgICAgIHwgZgorVGFibGVzOgorICAgICJwdWJsaWMudGVzdHB1Yl90 YmwxIgorVGFibGVzIGZyb20gc2NoZW1hczoKKyAgICAicHViX3Rlc3QiCitTZXF1ZW5jZXM6 CisgICAgInB1YmxpYy50ZXN0cHViX3NlcTEiCisKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3Rw dWJfbWl4IERST1AgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDsKK1xkUnArIHRlc3RwdWJf bWl4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ dWJsaWNhdGlvbiB0ZXN0cHViX21peAorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFs bCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVz IHwgVHJ1bmNhdGVzIHwgU2VxdWVuY2VzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyBy ZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IHQgICAgICAgICB8 IGYKK1RhYmxlczoKKyAgICAicHVibGljLnRlc3RwdWJfdGJsMSIKK1NlcXVlbmNlczoKKyAg ICAicHVibGljLnRlc3RwdWJfc2VxMSIKKworRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViX21p eDsKK0RST1AgU0VRVUVOQ0UgdGVzdHB1Yl9zZXExOworRFJPUCBTRVFVRU5DRSBwdWJfdGVz dC50ZXN0cHViX3NlcTI7CistLSBtYWtlIHN1cmUgd2UgcmVwbGljYXRlIG9ubHkgdGhlIGNv cnJlY3QgcmVsYXRpb24gdHlwZQorQ1JFQVRFIFNDSEVNQSBwdWJfdGVzdDE7CitDUkVBVEUg U0VRVUVOQ0UgcHViX3Rlc3QxLnRlc3Rfc2VxMTsKK0NSRUFURSBUQUJMRSBwdWJfdGVzdDEu dGVzdF90YmwxIChhIGludCBwcmltYXJ5IGtleSwgYiBpbnQpOworQ1JFQVRFIFNDSEVNQSBw dWJfdGVzdDI7CitDUkVBVEUgU0VRVUVOQ0UgcHViX3Rlc3QyLnRlc3Rfc2VxMjsKK0NSRUFU RSBUQUJMRSBwdWJfdGVzdDIudGVzdF90YmwyIChhIGludCBwcmltYXJ5IGtleSwgYiBpbnQp OworU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1InOworQ1JFQVRFIFBVQkxJQ0FU SU9OIHRlc3RwdWJfc2NoZW1hczsKK1JFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CistLSBh ZGQgdGFibGVzIGZyb20gb25lIHNjaGVtYSwgc2VxdWVuY2VzIGZyb20gdGhlIG90aGVyCitB TFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX3NjaGVtYXMgQUREIFRBQkxFUyBJTiBTQ0hFTUEg cHViX3Rlc3QyOworQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9zY2hlbWFzIEFERCBTRVFV RU5DRVMgSU4gU0NIRU1BIHB1Yl90ZXN0MTsKK1xkUnArIHRlc3RwdWJfc2NoZW1hcworICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9u IHRlc3RwdWJfc2NoZW1hcworICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJs ZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1 bmNhdGVzIHwgU2VxdWVuY2VzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNz X3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IHQgICAgICAgICB8IGYKK1Rh YmxlcyBmcm9tIHNjaGVtYXM6CisgICAgInB1Yl90ZXN0MiIKK1NlcXVlbmNlcyBmcm9tIHNj aGVtYXM6CisgICAgInB1Yl90ZXN0MSIKKworXGRuKyBwdWJfdGVzdDEKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICBMaXN0IG9mIHNjaGVtYXMKKyAgIE5hbWUgICAgfCAgICAgICAg ICBPd25lciAgICAgICAgICAgfCBBY2Nlc3MgcHJpdmlsZWdlcyB8IERlc2NyaXB0aW9uIAor LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tCisgcHViX3Rlc3QxIHwgcmVncmVzc19wdWJsaWNhdGlvbl91 c2VyIHwgICAgICAgICAgICAgICAgICAgfCAKK1B1YmxpY2F0aW9uczoKKyAgICAidGVzdHB1 Yl9zY2hlbWFzIiAoc2VxdWVuY2VzKQorCitcZG4rIHB1Yl90ZXN0MgorICAgICAgICAgICAg ICAgICAgICAgICAgICAgIExpc3Qgb2Ygc2NoZW1hcworICAgTmFtZSAgICB8ICAgICAgICAg IE93bmVyICAgICAgICAgICB8IEFjY2VzcyBwcml2aWxlZ2VzIHwgRGVzY3JpcHRpb24gCist LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0KKyBwdWJfdGVzdDIgfCByZWdyZXNzX3B1YmxpY2F0aW9uX3Vz ZXIgfCAgICAgICAgICAgICAgICAgICB8IAorUHVibGljYXRpb25zOgorICAgICJ0ZXN0cHVi X3NjaGVtYXMiICh0YWJsZXMpCisKK1xkKyBwdWJfdGVzdDEudGVzdF9zZXExOworICAgICAg ICAgICAgICAgICAgICAgICAgU2VxdWVuY2UgInB1Yl90ZXN0MS50ZXN0X3NlcTEiCisgIFR5 cGUgIHwgU3RhcnQgfCBNaW5pbXVtIHwgICAgICAgTWF4aW11bSAgICAgICB8IEluY3JlbWVu dCB8IEN5Y2xlcz8gfCBDYWNoZSAKKy0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLQorIGJpZ2lu dCB8ICAgICAxIHwgICAgICAgMSB8IDkyMjMzNzIwMzY4NTQ3NzU4MDcgfCAgICAgICAgIDEg fCBubyAgICAgIHwgICAgIDEKK1B1YmxpY2F0aW9uczoKKyAgICAidGVzdHB1Yl9zY2hlbWFz IgorCitcZCsgcHViX3Rlc3QxLnRlc3RfdGJsMTsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBUYWJsZSAicHViX3Rlc3QxLnRlc3RfdGJsMSIKKyBDb2x1bW4gfCAgVHlwZSAg IHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IHwgU3RvcmFnZSB8IFN0YXRzIHRh cmdldCB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tCisgYSAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgICAgICAg ICB8IHBsYWluICAgfCAgICAgICAgICAgICAgfCAKKyBiICAgICAgfCBpbnRlZ2VyIHwgICAg ICAgICAgIHwgICAgICAgICAgfCAgICAgICAgIHwgcGxhaW4gICB8ICAgICAgICAgICAgICB8 IAorSW5kZXhlczoKKyAgICAidGVzdF90YmwxX3BrZXkiIFBSSU1BUlkgS0VZLCBidHJlZSAo YSkKKworXGQrIHB1Yl90ZXN0Mi50ZXN0X3NlcTI7CisgICAgICAgICAgICAgICAgICAgICAg ICBTZXF1ZW5jZSAicHViX3Rlc3QyLnRlc3Rfc2VxMiIKKyAgVHlwZSAgfCBTdGFydCB8IE1p bmltdW0gfCAgICAgICBNYXhpbXVtICAgICAgIHwgSW5jcmVtZW50IHwgQ3ljbGVzPyB8IENh Y2hlIAorLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tCisgYmlnaW50IHwgICAgIDEgfCAgICAg ICAxIHwgOTIyMzM3MjAzNjg1NDc3NTgwNyB8ICAgICAgICAgMSB8IG5vICAgICAgfCAgICAg MQorCitcZCsgcHViX3Rlc3QyLnRlc3RfdGJsMjsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBUYWJsZSAicHViX3Rlc3QyLnRlc3RfdGJsMiIKKyBDb2x1bW4gfCAgVHlwZSAg IHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IHwgU3RvcmFnZSB8IFN0YXRzIHRh cmdldCB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tCisgYSAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgICAgICAg ICB8IHBsYWluICAgfCAgICAgICAgICAgICAgfCAKKyBiICAgICAgfCBpbnRlZ2VyIHwgICAg ICAgICAgIHwgICAgICAgICAgfCAgICAgICAgIHwgcGxhaW4gICB8ICAgICAgICAgICAgICB8 IAorSW5kZXhlczoKKyAgICAidGVzdF90YmwyX3BrZXkiIFBSSU1BUlkgS0VZLCBidHJlZSAo YSkKK1B1YmxpY2F0aW9uczoKKyAgICAidGVzdHB1Yl9zY2hlbWFzIgorCistLSBhZGQgdGhl IG90aGVyIG9iamVjdCB0eXBlIGZyb20gZWFjaCBzY2hlbWEKK0FMVEVSIFBVQkxJQ0FUSU9O IHRlc3RwdWJfc2NoZW1hcyBBREQgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDE7CitBTFRF UiBQVUJMSUNBVElPTiB0ZXN0cHViX3NjaGVtYXMgQUREIFNFUVVFTkNFUyBJTiBTQ0hFTUEg cHViX3Rlc3QyOworXGRScCsgdGVzdHB1Yl9zY2hlbWFzCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9zY2hlbWFz CisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5j ZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBTZXF1ZW5j ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNl ciB8IGYgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICAgIHwgdCAgICAgICAgIHwgZgorVGFibGVzIGZyb20gc2NoZW1h czoKKyAgICAicHViX3Rlc3QxIgorICAgICJwdWJfdGVzdDIiCitTZXF1ZW5jZXMgZnJvbSBz Y2hlbWFzOgorICAgICJwdWJfdGVzdDEiCisgICAgInB1Yl90ZXN0MiIKKworXGRuKyBwdWJf dGVzdDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHNjaGVtYXMKKyAg IE5hbWUgICAgfCAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBY2Nlc3MgcHJpdmlsZWdl cyB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgcHViX3Rlc3QxIHwgcmVn cmVzc19wdWJsaWNhdGlvbl91c2VyIHwgICAgICAgICAgICAgICAgICAgfCAKK1B1YmxpY2F0 aW9uczoKKyAgICAidGVzdHB1Yl9zY2hlbWFzIiAoc2VxdWVuY2VzKQorICAgICJ0ZXN0cHVi X3NjaGVtYXMiICh0YWJsZXMpCisKK1xkbisgcHViX3Rlc3QyCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgTGlzdCBvZiBzY2hlbWFzCisgICBOYW1lICAgIHwgICAgICAgICAgT3du ZXIgICAgICAgICAgIHwgQWNjZXNzIHByaXZpbGVnZXMgfCBEZXNjcmlwdGlvbiAKKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLQorIHB1Yl90ZXN0MiB8IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8 ICAgICAgICAgICAgICAgICAgIHwgCitQdWJsaWNhdGlvbnM6CisgICAgInRlc3RwdWJfc2No ZW1hcyIgKHRhYmxlcykKKyAgICAidGVzdHB1Yl9zY2hlbWFzIiAoc2VxdWVuY2VzKQorCitc ZCsgcHViX3Rlc3QxLnRlc3Rfc2VxMTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFNlcXVl bmNlICJwdWJfdGVzdDEudGVzdF9zZXExIgorICBUeXBlICB8IFN0YXJ0IHwgTWluaW11bSB8 ICAgICAgIE1heGltdW0gICAgICAgfCBJbmNyZW1lbnQgfCBDeWNsZXM/IHwgQ2FjaGUgCist LS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0KKyBiaWdpbnQgfCAgICAgMSB8ICAgICAgIDEgfCA5 MjIzMzcyMDM2ODU0Nzc1ODA3IHwgICAgICAgICAxIHwgbm8gICAgICB8ICAgICAxCitQdWJs aWNhdGlvbnM6CisgICAgInRlc3RwdWJfc2NoZW1hcyIKKworXGQrIHB1Yl90ZXN0MS50ZXN0 X3RibDE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGFibGUgInB1Yl90ZXN0 MS50ZXN0X3RibDEiCisgQ29sdW1uIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxl IHwgRGVmYXVsdCB8IFN0b3JhZ2UgfCBTdGF0cyB0YXJnZXQgfCBEZXNjcmlwdGlvbiAKKy0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIGEgICAgICB8IGludGVnZXIg fCAgICAgICAgICAgfCBub3QgbnVsbCB8ICAgICAgICAgfCBwbGFpbiAgIHwgICAgICAgICAg ICAgIHwgCisgYiAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgICAg ICAgICB8IHBsYWluICAgfCAgICAgICAgICAgICAgfCAKK0luZGV4ZXM6CisgICAgInRlc3Rf dGJsMV9wa2V5IiBQUklNQVJZIEtFWSwgYnRyZWUgKGEpCitQdWJsaWNhdGlvbnM6CisgICAg InRlc3RwdWJfc2NoZW1hcyIKKworXGQrIHB1Yl90ZXN0Mi50ZXN0X3NlcTI7CisgICAgICAg ICAgICAgICAgICAgICAgICBTZXF1ZW5jZSAicHViX3Rlc3QyLnRlc3Rfc2VxMiIKKyAgVHlw ZSAgfCBTdGFydCB8IE1pbmltdW0gfCAgICAgICBNYXhpbXVtICAgICAgIHwgSW5jcmVtZW50 IHwgQ3ljbGVzPyB8IENhY2hlIAorLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tCisgYmlnaW50 IHwgICAgIDEgfCAgICAgICAxIHwgOTIyMzM3MjAzNjg1NDc3NTgwNyB8ICAgICAgICAgMSB8 IG5vICAgICAgfCAgICAgMQorUHVibGljYXRpb25zOgorICAgICJ0ZXN0cHViX3NjaGVtYXMi CisKK1xkKyBwdWJfdGVzdDIudGVzdF90YmwyOworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFRhYmxlICJwdWJfdGVzdDIudGVzdF90YmwyIgorIENvbHVtbiB8ICBUeXBlICAg fCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1bHQgfCBTdG9yYWdlIHwgU3RhdHMgdGFy Z2V0IHwgRGVzY3JpcHRpb24gCistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0KKyBhICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgbm90IG51bGwgfCAgICAgICAg IHwgcGxhaW4gICB8ICAgICAgICAgICAgICB8IAorIGIgICAgICB8IGludGVnZXIgfCAgICAg ICAgICAgfCAgICAgICAgICB8ICAgICAgICAgfCBwbGFpbiAgIHwgICAgICAgICAgICAgIHwg CitJbmRleGVzOgorICAgICJ0ZXN0X3RibDJfcGtleSIgUFJJTUFSWSBLRVksIGJ0cmVlIChh KQorUHVibGljYXRpb25zOgorICAgICJ0ZXN0cHViX3NjaGVtYXMiCisKKy0tIG5vdyBkcm9w IHRoZSBvYmplY3QgdHlwZSBhZGRlZCBmaXJzdAorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1 Yl9zY2hlbWFzIERST1AgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDI7CitBTFRFUiBQVUJM SUNBVElPTiB0ZXN0cHViX3NjaGVtYXMgRFJPUCBTRVFVRU5DRVMgSU4gU0NIRU1BIHB1Yl90 ZXN0MTsKK1xkUnArIHRlc3RwdWJfc2NoZW1hcworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfc2NoZW1hcworICAg ICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwg SW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgU2VxdWVuY2VzIHwg VmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBm ICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAg ICB8IHQgICAgICAgICB8IHQgICAgICAgICB8IGYKK1RhYmxlcyBmcm9tIHNjaGVtYXM6Cisg ICAgInB1Yl90ZXN0MSIKK1NlcXVlbmNlcyBmcm9tIHNjaGVtYXM6CisgICAgInB1Yl90ZXN0 MiIKKworXGRuKyBwdWJfdGVzdDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0 IG9mIHNjaGVtYXMKKyAgIE5hbWUgICAgfCAgICAgICAgICBPd25lciAgICAgICAgICAgfCBB Y2Nlc3MgcHJpdmlsZWdlcyB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisg cHViX3Rlc3QxIHwgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgICAgICAgICAgICAgICAg ICAgfCAKK1B1YmxpY2F0aW9uczoKKyAgICAidGVzdHB1Yl9zY2hlbWFzIiAodGFibGVzKQor CitcZG4rIHB1Yl90ZXN0MgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Yg c2NoZW1hcworICAgTmFtZSAgICB8ICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFjY2Vz cyBwcml2aWxlZ2VzIHwgRGVzY3JpcHRpb24gCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyBwdWJf dGVzdDIgfCByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCAgICAgICAgICAgICAgICAgICB8 IAorUHVibGljYXRpb25zOgorICAgICJ0ZXN0cHViX3NjaGVtYXMiIChzZXF1ZW5jZXMpCisK K1xkKyBwdWJfdGVzdDEudGVzdF9zZXExOworICAgICAgICAgICAgICAgICAgICAgICAgU2Vx dWVuY2UgInB1Yl90ZXN0MS50ZXN0X3NlcTEiCisgIFR5cGUgIHwgU3RhcnQgfCBNaW5pbXVt IHwgICAgICAgTWF4aW11bSAgICAgICB8IEluY3JlbWVudCB8IEN5Y2xlcz8gfCBDYWNoZSAK Ky0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLQorIGJpZ2ludCB8ICAgICAxIHwgICAgICAgMSB8 IDkyMjMzNzIwMzY4NTQ3NzU4MDcgfCAgICAgICAgIDEgfCBubyAgICAgIHwgICAgIDEKKwor XGQrIHB1Yl90ZXN0MS50ZXN0X3RibDE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgVGFibGUgInB1Yl90ZXN0MS50ZXN0X3RibDEiCisgQ29sdW1uIHwgIFR5cGUgICB8IENv bGxhdGlvbiB8IE51bGxhYmxlIHwgRGVmYXVsdCB8IFN0b3JhZ2UgfCBTdGF0cyB0YXJnZXQg fCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQor IGEgICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCBub3QgbnVsbCB8ICAgICAgICAgfCBw bGFpbiAgIHwgICAgICAgICAgICAgIHwgCisgYiAgICAgIHwgaW50ZWdlciB8ICAgICAgICAg ICB8ICAgICAgICAgIHwgICAgICAgICB8IHBsYWluICAgfCAgICAgICAgICAgICAgfCAKK0lu ZGV4ZXM6CisgICAgInRlc3RfdGJsMV9wa2V5IiBQUklNQVJZIEtFWSwgYnRyZWUgKGEpCitQ dWJsaWNhdGlvbnM6CisgICAgInRlc3RwdWJfc2NoZW1hcyIKKworXGQrIHB1Yl90ZXN0Mi50 ZXN0X3NlcTI7CisgICAgICAgICAgICAgICAgICAgICAgICBTZXF1ZW5jZSAicHViX3Rlc3Qy LnRlc3Rfc2VxMiIKKyAgVHlwZSAgfCBTdGFydCB8IE1pbmltdW0gfCAgICAgICBNYXhpbXVt ICAgICAgIHwgSW5jcmVtZW50IHwgQ3ljbGVzPyB8IENhY2hlIAorLS0tLS0tLS0rLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tCisgYmlnaW50IHwgICAgIDEgfCAgICAgICAxIHwgOTIyMzM3MjAzNjg1NDc3 NTgwNyB8ICAgICAgICAgMSB8IG5vICAgICAgfCAgICAgMQorUHVibGljYXRpb25zOgorICAg ICJ0ZXN0cHViX3NjaGVtYXMiCisKK1xkKyBwdWJfdGVzdDIudGVzdF90YmwyOworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFRhYmxlICJwdWJfdGVzdDIudGVzdF90YmwyIgor IENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1bHQgfCBT dG9yYWdlIHwgU3RhdHMgdGFyZ2V0IHwgRGVzY3JpcHRpb24gCistLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0KKyBhICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwg bm90IG51bGwgfCAgICAgICAgIHwgcGxhaW4gICB8ICAgICAgICAgICAgICB8IAorIGIgICAg ICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAgfCBwbGFpbiAg IHwgICAgICAgICAgICAgIHwgCitJbmRleGVzOgorICAgICJ0ZXN0X3RibDJfcGtleSIgUFJJ TUFSWSBLRVksIGJ0cmVlIChhKQorCistLSBhZGQgYSBkaWZmZXJlbnQgc2NoZW1hIChub3Qg aW5jbHVkaW5nIHRoZSBhbHJlYWR5IHB1Ymxpc2hlZCBzZXF1ZW5jZXMpCitBTFRFUiBQVUJM SUNBVElPTiB0ZXN0cHViX3NjaGVtYXMgQUREIFRBQkxFIHB1Yl90ZXN0Mi50ZXN0X3RibDI7 CitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX3NjaGVtYXMgQUREIFNFUVVFTkNFIHB1Yl90 ZXN0MS50ZXN0X3NlcTE7CitcZFJwKyB0ZXN0cHViX3NjaGVtYXMKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX3Nj aGVtYXMKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNl cXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFNl cXVlbmNlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlv bl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAg ICB8IHQgICAgICAgfCB0ICAgICAgICAgfCB0ICAgICAgICAgfCBmCitUYWJsZXM6CisgICAg InB1Yl90ZXN0Mi50ZXN0X3RibDIiCitUYWJsZXMgZnJvbSBzY2hlbWFzOgorICAgICJwdWJf dGVzdDEiCitTZXF1ZW5jZXM6CisgICAgInB1Yl90ZXN0MS50ZXN0X3NlcTEiCitTZXF1ZW5j ZXMgZnJvbSBzY2hlbWFzOgorICAgICJwdWJfdGVzdDIiCisKK1xkKyBwdWJfdGVzdDEudGVz dF9zZXExOworICAgICAgICAgICAgICAgICAgICAgICAgU2VxdWVuY2UgInB1Yl90ZXN0MS50 ZXN0X3NlcTEiCisgIFR5cGUgIHwgU3RhcnQgfCBNaW5pbXVtIHwgICAgICAgTWF4aW11bSAg ICAgICB8IEluY3JlbWVudCB8IEN5Y2xlcz8gfCBDYWNoZSAKKy0tLS0tLS0tKy0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLQorIGJpZ2ludCB8ICAgICAxIHwgICAgICAgMSB8IDkyMjMzNzIwMzY4NTQ3NzU4 MDcgfCAgICAgICAgIDEgfCBubyAgICAgIHwgICAgIDEKK1B1YmxpY2F0aW9uczoKKyAgICAi dGVzdHB1Yl9zY2hlbWFzIgorCitcZCsgcHViX3Rlc3QxLnRlc3RfdGJsMTsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBUYWJsZSAicHViX3Rlc3QxLnRlc3RfdGJsMSIKKyBD b2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IHwgU3Rv cmFnZSB8IFN0YXRzIHRhcmdldCB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tCisgYSAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8IG5v dCBudWxsIHwgICAgICAgICB8IHBsYWluICAgfCAgICAgICAgICAgICAgfCAKKyBiICAgICAg fCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCAgICAgICAgIHwgcGxhaW4gICB8 ICAgICAgICAgICAgICB8IAorSW5kZXhlczoKKyAgICAidGVzdF90YmwxX3BrZXkiIFBSSU1B UlkgS0VZLCBidHJlZSAoYSkKK1B1YmxpY2F0aW9uczoKKyAgICAidGVzdHB1Yl9zY2hlbWFz IgorCitcZCsgcHViX3Rlc3QyLnRlc3Rfc2VxMjsKKyAgICAgICAgICAgICAgICAgICAgICAg IFNlcXVlbmNlICJwdWJfdGVzdDIudGVzdF9zZXEyIgorICBUeXBlICB8IFN0YXJ0IHwgTWlu aW11bSB8ICAgICAgIE1heGltdW0gICAgICAgfCBJbmNyZW1lbnQgfCBDeWNsZXM/IHwgQ2Fj aGUgCistLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0KKyBiaWdpbnQgfCAgICAgMSB8ICAgICAg IDEgfCA5MjIzMzcyMDM2ODU0Nzc1ODA3IHwgICAgICAgICAxIHwgbm8gICAgICB8ICAgICAx CitQdWJsaWNhdGlvbnM6CisgICAgInRlc3RwdWJfc2NoZW1hcyIKKworXGQrIHB1Yl90ZXN0 Mi50ZXN0X3RibDI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGFibGUgInB1 Yl90ZXN0Mi50ZXN0X3RibDIiCisgQ29sdW1uIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51 bGxhYmxlIHwgRGVmYXVsdCB8IFN0b3JhZ2UgfCBTdGF0cyB0YXJnZXQgfCBEZXNjcmlwdGlv biAKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIGEgICAgICB8IGlu dGVnZXIgfCAgICAgICAgICAgfCBub3QgbnVsbCB8ICAgICAgICAgfCBwbGFpbiAgIHwgICAg ICAgICAgICAgIHwgCisgYiAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAg IHwgICAgICAgICB8IHBsYWluICAgfCAgICAgICAgICAgICAgfCAKK0luZGV4ZXM6CisgICAg InRlc3RfdGJsMl9wa2V5IiBQUklNQVJZIEtFWSwgYnRyZWUgKGEpCitQdWJsaWNhdGlvbnM6 CisgICAgInRlc3RwdWJfc2NoZW1hcyIKKworLS0gbm93IGRyb3AgdGhlIGV4cGxpY2l0bHkg YWRkZWQgb2JqZWN0cyBhZ2FpbgorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9zY2hlbWFz IERST1AgVEFCTEUgcHViX3Rlc3QyLnRlc3RfdGJsMjsKK0FMVEVSIFBVQkxJQ0FUSU9OIHRl c3RwdWJfc2NoZW1hcyBEUk9QIFNFUVVFTkNFIHB1Yl90ZXN0MS50ZXN0X3NlcTE7CitcZFJw KyB0ZXN0cHViX3NjaGVtYXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX3NjaGVtYXMKKyAgICAgICAgICBPd25l ciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMgfCBV cGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFNlcXVlbmNlcyB8IFZpYSByb290IAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8 IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAg ICAgfCB0ICAgICAgICAgfCBmCitUYWJsZXMgZnJvbSBzY2hlbWFzOgorICAgICJwdWJfdGVz dDEiCitTZXF1ZW5jZXMgZnJvbSBzY2hlbWFzOgorICAgICJwdWJfdGVzdDIiCisKK1xkKyBw dWJfdGVzdDEudGVzdF9zZXExOworICAgICAgICAgICAgICAgICAgICAgICAgU2VxdWVuY2Ug InB1Yl90ZXN0MS50ZXN0X3NlcTEiCisgIFR5cGUgIHwgU3RhcnQgfCBNaW5pbXVtIHwgICAg ICAgTWF4aW11bSAgICAgICB8IEluY3JlbWVudCB8IEN5Y2xlcz8gfCBDYWNoZSAKKy0tLS0t LS0tKy0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLQorIGJpZ2ludCB8ICAgICAxIHwgICAgICAgMSB8IDkyMjMz NzIwMzY4NTQ3NzU4MDcgfCAgICAgICAgIDEgfCBubyAgICAgIHwgICAgIDEKKworXGQrIHB1 Yl90ZXN0MS50ZXN0X3RibDE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGFi bGUgInB1Yl90ZXN0MS50ZXN0X3RibDEiCisgQ29sdW1uIHwgIFR5cGUgICB8IENvbGxhdGlv biB8IE51bGxhYmxlIHwgRGVmYXVsdCB8IFN0b3JhZ2UgfCBTdGF0cyB0YXJnZXQgfCBEZXNj cmlwdGlvbiAKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIGEgICAg ICB8IGludGVnZXIgfCAgICAgICAgICAgfCBub3QgbnVsbCB8ICAgICAgICAgfCBwbGFpbiAg IHwgICAgICAgICAgICAgIHwgCisgYiAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAg ICAgICAgIHwgICAgICAgICB8IHBsYWluICAgfCAgICAgICAgICAgICAgfCAKK0luZGV4ZXM6 CisgICAgInRlc3RfdGJsMV9wa2V5IiBQUklNQVJZIEtFWSwgYnRyZWUgKGEpCitQdWJsaWNh dGlvbnM6CisgICAgInRlc3RwdWJfc2NoZW1hcyIKKworXGQrIHB1Yl90ZXN0Mi50ZXN0X3Nl cTI7CisgICAgICAgICAgICAgICAgICAgICAgICBTZXF1ZW5jZSAicHViX3Rlc3QyLnRlc3Rf c2VxMiIKKyAgVHlwZSAgfCBTdGFydCB8IE1pbmltdW0gfCAgICAgICBNYXhpbXVtICAgICAg IHwgSW5jcmVtZW50IHwgQ3ljbGVzPyB8IENhY2hlIAorLS0tLS0tLS0rLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tCisgYmlnaW50IHwgICAgIDEgfCAgICAgICAxIHwgOTIyMzM3MjAzNjg1NDc3NTgwNyB8 ICAgICAgICAgMSB8IG5vICAgICAgfCAgICAgMQorUHVibGljYXRpb25zOgorICAgICJ0ZXN0 cHViX3NjaGVtYXMiCisKK1xkKyBwdWJfdGVzdDIudGVzdF90YmwyOworICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFRhYmxlICJwdWJfdGVzdDIudGVzdF90YmwyIgorIENvbHVt biB8ICBUeXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1bHQgfCBTdG9yYWdl IHwgU3RhdHMgdGFyZ2V0IHwgRGVzY3JpcHRpb24gCistLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0KKyBhICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgbm90IG51 bGwgfCAgICAgICAgIHwgcGxhaW4gICB8ICAgICAgICAgICAgICB8IAorIGIgICAgICB8IGlu dGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAgfCBwbGFpbiAgIHwgICAg ICAgICAgICAgIHwgCitJbmRleGVzOgorICAgICJ0ZXN0X3RibDJfcGtleSIgUFJJTUFSWSBL RVksIGJ0cmVlIChhKQorCitEUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWJfc2NoZW1hczsKK0RS T1AgVEFCTEUgcHViX3Rlc3QxLnRlc3RfdGJsMSwgcHViX3Rlc3QyLnRlc3RfdGJsMjsKK0RS T1AgU0VRVUVOQ0UgcHViX3Rlc3QxLnRlc3Rfc2VxMSwgcHViX3Rlc3QyLnRlc3Rfc2VxMjsK K0RST1AgU0NIRU1BIHB1Yl90ZXN0MSwgcHViX3Rlc3QyOwogLS0gVGVzdHMgZm9yIHBhcnRp dGlvbmVkIHRhYmxlcwogU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1InOwogQ1JF QVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9ycGFydGVkOwpAQCAtMjQ1LDEwICs3NDksMTAg QEAgVVBEQVRFIHRlc3RwdWJfcGFydGVkMSBTRVQgYSA9IDE7CiAtLSBvbmx5IHBhcmVudCBp cyBsaXN0ZWQgYXMgYmVpbmcgaW4gcHVibGljYXRpb24sIG5vdCB0aGUgcGFydGl0aW9uCiBB TFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnBhcnRlZCBBREQgVEFCTEUgdGVzdHB1Yl9w YXJ0ZWQ7CiBcZFJwKyB0ZXN0cHViX2ZvcnBhcnRlZAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9ycGFydGVkCi0gICAgICAgICAgT3du ZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRl cyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwg dCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1 Yl9mb3JwYXJ0ZWQKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwg QWxsIHNlcXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRl cyB8IFNlcXVlbmNlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJs aWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwg dCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJsZXM6 CiAgICAgInB1YmxpYy50ZXN0cHViX3BhcnRlZCIKIApAQCAtMjYzLDEwICs3NjcsMTAgQEAg QUxURVIgVEFCTEUgdGVzdHB1Yl9wYXJ0ZWQgREVUQUNIIFBBUlRJVElPTiB0ZXN0cHViX3Bh cnRlZDE7CiBVUERBVEUgdGVzdHB1Yl9wYXJ0ZWQxIFNFVCBhID0gMTsKIEFMVEVSIFBVQkxJ Q0FUSU9OIHRlc3RwdWJfZm9ycGFydGVkIFNFVCAocHVibGlzaF92aWFfcGFydGl0aW9uX3Jv b3QgPSB0cnVlKTsKIFxkUnArIHRlc3RwdWJfZm9ycGFydGVkCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3JwYXJ0ZWQKLSAgICAgICAg ICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBE ZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCB0CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0 ZXN0cHViX2ZvcnBhcnRlZAorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJs ZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1 bmNhdGVzIHwgU2VxdWVuY2VzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNz X3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IHQgICAgICAgICB8IHQKIFRh YmxlczoKICAgICAicHVibGljLnRlc3RwdWJfcGFydGVkIgogCkBAIC0yOTUsMTAgKzc5OSwx MCBAQCBTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7CiBDUkVBVEUgUFVCTElD QVRJT04gdGVzdHB1YjUgRk9SIFRBQkxFIHRlc3RwdWJfcmZfdGJsMSwgdGVzdHB1Yl9yZl90 YmwyIFdIRVJFIChjIDw+ICd0ZXN0JyBBTkQgZCA8IDUpIFdJVEggKHB1Ymxpc2ggPSAnaW5z ZXJ0Jyk7CiBSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOwogXGRScCsgdGVzdHB1YjUKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWI1 Ci0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBV cGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIg fCBmICAgICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgfCBmICAgICAgIHwgZiAgICAgICAg IHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBQdWJsaWNhdGlvbiB0ZXN0cHViNQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFs bCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVz IHwgVHJ1bmNhdGVzIHwgU2VxdWVuY2VzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyBy ZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICAgICB8 IHQgICAgICAgfCBmICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgICB8IGYgICAgICAgICB8 IGYKIFRhYmxlczoKICAgICAicHVibGljLnRlc3RwdWJfcmZfdGJsMSIKICAgICAicHVibGlj LnRlc3RwdWJfcmZfdGJsMiIgV0hFUkUgKChjIDw+ICd0ZXN0Jzo6dGV4dCkgQU5EIChkIDwg NSkpCkBAIC0zMTEsMTAgKzgxNSwxMCBAQCBUYWJsZXM6CiAKIEFMVEVSIFBVQkxJQ0FUSU9O IHRlc3RwdWI1IEFERCBUQUJMRSB0ZXN0cHViX3JmX3RibDMgV0hFUkUgKGUgPiAxMDAwIEFO RCBlIDwgMjAwMCk7CiBcZFJwKyB0ZXN0cHViNQotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjUKLSAgICAgICAgICBPd25lciAgICAg ICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1 bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0t LS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAg IHwgZiAgICAgICB8IGYgICAgICAgfCBmICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWI1 CisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5j ZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBTZXF1ZW5j ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNl ciB8IGYgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgfCBm ICAgICAgIHwgZiAgICAgICAgIHwgZiAgICAgICAgIHwgZgogVGFibGVzOgogICAgICJwdWJs aWMudGVzdHB1Yl9yZl90YmwxIgogICAgICJwdWJsaWMudGVzdHB1Yl9yZl90YmwyIiBXSEVS RSAoKGMgPD4gJ3Rlc3QnOjp0ZXh0KSBBTkQgKGQgPCA1KSkKQEAgLTMzMCwxMCArODM0LDEw IEBAIFB1YmxpY2F0aW9uczoKIAogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1YjUgRFJPUCBU QUJMRSB0ZXN0cHViX3JmX3RibDI7CiBcZFJwKyB0ZXN0cHViNQotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjUKLSAgICAgICAgICBP d25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxl dGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t LS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAg fCB0ICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgfCBmICAgICAgICAgfCBmCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9u IHRlc3RwdWI1CisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFs bCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMg fCBTZXF1ZW5jZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGlj YXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IGYg ICAgICAgfCBmICAgICAgIHwgZiAgICAgICAgIHwgZiAgICAgICAgIHwgZgogVGFibGVzOgog ICAgICJwdWJsaWMudGVzdHB1Yl9yZl90YmwxIgogICAgICJwdWJsaWMudGVzdHB1Yl9yZl90 YmwzIiBXSEVSRSAoKGUgPiAxMDAwKSBBTkQgKGUgPCAyMDAwKSkKQEAgLTM0MSwxMCArODQ1 LDEwIEBAIFRhYmxlczoKIC0tIHJlbW92ZSB0ZXN0cHViX3JmX3RibDEgYW5kIGFkZCB0ZXN0 cHViX3JmX3RibDMgYWdhaW4gKGFub3RoZXIgV0hFUkUgZXhwcmVzc2lvbikKIEFMVEVSIFBV QkxJQ0FUSU9OIHRlc3RwdWI1IFNFVCBUQUJMRSB0ZXN0cHViX3JmX3RibDMgV0hFUkUgKGUg PiAzMDAgQU5EIGUgPCA1MDApOwogXGRScCsgdGVzdHB1YjUKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWI1Ci0gICAgICAgICAgT3du ZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRl cyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwg dCAgICAgICB8IGYgICAgICAgfCBmICAgICAgIHwgZiAgICAgICAgIHwgZgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0 ZXN0cHViNQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwg c2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwg U2VxdWVuY2VzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0 aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IHQgICAgICAgfCBmICAg ICAgIHwgZiAgICAgICB8IGYgICAgICAgICB8IGYgICAgICAgICB8IGYKIFRhYmxlczoKICAg ICAicHVibGljLnRlc3RwdWJfcmZfdGJsMyIgV0hFUkUgKChlID4gMzAwKSBBTkQgKGUgPCA1 MDApKQogCkBAIC0zNzcsMTAgKzg4MSwxMCBAQCBTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9 ICdFUlJPUic7CiBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9zeW50YXgxIEZPUiBUQUJM RSB0ZXN0cHViX3JmX3RibDEsIE9OTFkgdGVzdHB1Yl9yZl90YmwzIFdIRVJFIChlIDwgOTk5 KSBXSVRIIChwdWJsaXNoID0gJ2luc2VydCcpOwogUkVTRVQgY2xpZW50X21pbl9tZXNzYWdl czsKIFxkUnArIHRlc3RwdWJfc3ludGF4MQotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX3N5bnRheDEKLSAgICAgICAgICBPd25lciAgICAg ICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1 bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0t LS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAg IHwgZiAgICAgICB8IGYgICAgICAgfCBmICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9zeW50 YXgxCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1 ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBTZXF1 ZW5jZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25f dXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IGYgICAgICAg fCBmICAgICAgIHwgZiAgICAgICAgIHwgZiAgICAgICAgIHwgZgogVGFibGVzOgogICAgICJw dWJsaWMudGVzdHB1Yl9yZl90YmwxIgogICAgICJwdWJsaWMudGVzdHB1Yl9yZl90YmwzIiBX SEVSRSAoZSA8IDk5OSkKQEAgLTM5MCwxMCArODk0LDEwIEBAIFNFVCBjbGllbnRfbWluX21l c3NhZ2VzID0gJ0VSUk9SJzsKIENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX3N5bnRheDIg Rk9SIFRBQkxFIHRlc3RwdWJfcmZfdGJsMSwgdGVzdHB1Yl9yZl9zY2hlbWExLnRlc3RwdWJf cmZfdGJsNSBXSEVSRSAoaCA8IDk5OSkgV0lUSCAocHVibGlzaCA9ICdpbnNlcnQnKTsKIFJF U0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CiBcZFJwKyB0ZXN0cHViX3N5bnRheDIKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9zeW50YXgy Ci0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBV cGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIg fCBmICAgICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgfCBmICAgICAgIHwgZiAgICAgICAg IHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1 YmxpY2F0aW9uIHRlc3RwdWJfc3ludGF4MgorICAgICAgICAgIE93bmVyICAgICAgICAgICB8 IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxl dGVzIHwgVHJ1bmNhdGVzIHwgU2VxdWVuY2VzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0K KyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICAg ICB8IHQgICAgICAgfCBmICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgICB8IGYgICAgICAg ICB8IGYKIFRhYmxlczoKICAgICAicHVibGljLnRlc3RwdWJfcmZfdGJsMSIKICAgICAidGVz dHB1Yl9yZl9zY2hlbWExLnRlc3RwdWJfcmZfdGJsNSIgV0hFUkUgKGggPCA5OTkpCkBAIC01 MDgsMTAgKzEwMTIsMTAgQEAgQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWI2IEZPUiBUQUJM RVMgSU4gU0NIRU1BIHRlc3RwdWJfcmZfc2NoZW1hMjsKIEFMVEVSIFBVQkxJQ0FUSU9OIHRl c3RwdWI2IFNFVCBUQUJMRVMgSU4gU0NIRU1BIHRlc3RwdWJfcmZfc2NoZW1hMiwgVEFCTEUg dGVzdHB1Yl9yZl9zY2hlbWEyLnRlc3RwdWJfcmZfdGJsNiBXSEVSRSAoaSA8IDk5KTsKIFJF U0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CiBcZFJwKyB0ZXN0cHViNgotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjYKLSAgICAgICAg ICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBE ZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0 aW9uIHRlc3RwdWI2CisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8 IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0 ZXMgfCBTZXF1ZW5jZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVi bGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgdCAgICAgICAgIHwgZgogVGFibGVz OgogICAgICJ0ZXN0cHViX3JmX3NjaGVtYTIudGVzdHB1Yl9yZl90Ymw2IiBXSEVSRSAoaSA8 IDk5KQogVGFibGVzIGZyb20gc2NoZW1hczoKQEAgLTcyNSwxMCArMTIyOSwxMCBAQCBDUkVB VEUgUFVCTElDQVRJT04gdGVzdHB1Yl90YWJsZV9pbnMgV0lUSCAocHVibGlzaCA9ICdpbnNl cnQsIHRydW5jYXRlJyk7CiBSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOwogQUxURVIgUFVC TElDQVRJT04gdGVzdHB1Yl90YWJsZV9pbnMgQUREIFRBQkxFIHRlc3RwdWJfdGJsNSAoYSk7 CQktLSBvawogXGRScCsgdGVzdHB1Yl90YWJsZV9pbnMKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX3RhYmxlX2lucwotICAgICAgICAgIE93 bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0 ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8 IHQgICAgICAgfCBmICAgICAgIHwgZiAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3Rw dWJfdGFibGVfaW5zCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8 IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0 ZXMgfCBTZXF1ZW5jZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVi bGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8 IGYgICAgICAgfCBmICAgICAgIHwgdCAgICAgICAgIHwgZiAgICAgICAgIHwgZgogVGFibGVz OgogICAgICJwdWJsaWMudGVzdHB1Yl90Ymw1IiAoYSkKIApAQCAtOTAyLDEwICsxNDA2LDEw IEBAIENSRUFURSBUQUJMRSB0ZXN0cHViX3RibF9ib3RoX2ZpbHRlcnMgKGEgaW50LCBiIGlu dCwgYyBpbnQsIFBSSU1BUlkgS0VZIChhLGMpKTsKIEFMVEVSIFRBQkxFIHRlc3RwdWJfdGJs X2JvdGhfZmlsdGVycyBSRVBMSUNBIElERU5USVRZIFVTSU5HIElOREVYIHRlc3RwdWJfdGJs X2JvdGhfZmlsdGVyc19wa2V5OwogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9ib3RoX2Zp bHRlcnMgQUREIFRBQkxFIHRlc3RwdWJfdGJsX2JvdGhfZmlsdGVycyAoYSxjKSBXSEVSRSAo YyAhPSAxKTsKIFxkUnArIHRlc3RwdWJfYm90aF9maWx0ZXJzCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2JvdGhfZmlsdGVycwotICAgICAg ICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8 IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24g dGVzdHB1Yl9ib3RoX2ZpbHRlcnMKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwg dGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8 IFRydW5jYXRlcyB8IFNlcXVlbmNlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVn cmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCB0ICAgICAgICAgfCBm CiBUYWJsZXM6CiAgICAgInB1YmxpYy50ZXN0cHViX3RibF9ib3RoX2ZpbHRlcnMiIChhLCBj KSBXSEVSRSAoYyA8PiAxKQogCkBAIC0xMTEwLDEwICsxNjE0LDEwIEBAIEVSUk9SOiAgcmVs YXRpb24gInRlc3RwdWJfdGJsMSIgaXMgYWxyZWFkeSBtZW1iZXIgb2YgcHVibGljYXRpb24g InRlc3RwdWJfZm9ydGJsCiBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3J0YmwgRk9S IFRBQkxFIHRlc3RwdWJfdGJsMTsKIEVSUk9SOiAgcHVibGljYXRpb24gInRlc3RwdWJfZm9y dGJsIiBhbHJlYWR5IGV4aXN0cwogXGRScCsgdGVzdHB1Yl9mb3J0YmwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9ydGJsCi0gICAg ICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVz IHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAg ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNh dGlvbiB0ZXN0cHViX2ZvcnRibAorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0 YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwg VHJ1bmNhdGVzIHwgU2VxdWVuY2VzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdy ZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IHQgICAgICAgICB8IGYK IFRhYmxlczoKICAgICAicHViX3Rlc3QudGVzdHB1Yl9ub3BrIgogICAgICJwdWJsaWMudGVz dHB1Yl90YmwxIgpAQCAtMTE1MywxMCArMTY1NywxMCBAQCBOb3QtbnVsbCBjb25zdHJhaW50 czoKICAgICAidGVzdHB1Yl90YmwxX2lkX25vdF9udWxsIiBOT1QgTlVMTCAiaWQiCiAKIFxk UnArIHRlc3RwdWJfZGVmYXVsdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ dWJsaWNhdGlvbiB0ZXN0cHViX2RlZmF1bHQKLSAgICAgICAgICBPd25lciAgICAgICAgICAg fCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVz IHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQot IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICB8IHQgICAgICAgfCBmICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9kZWZhdWx0Cisg ICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMg fCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBTZXF1ZW5jZXMg fCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8 IGYgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAg ICAgIHwgZiAgICAgICAgIHwgdCAgICAgICAgIHwgZgogVGFibGVzOgogICAgICJwdWJfdGVz dC50ZXN0cHViX25vcGsiCiAgICAgInB1YmxpYy50ZXN0cHViX3RibDEiCkBAIC0xMjM2LDEw ICsxNzQwLDEwIEBAIFJFVk9LRSBDUkVBVEUgT04gREFUQUJBU0UgcmVncmVzc2lvbiBGUk9N IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlcjI7CiBEUk9QIFRBQkxFIHRlc3RwdWJfcGFydGVk OwogRFJPUCBUQUJMRSB0ZXN0cHViX3RibDE7CiBcZFJwKyB0ZXN0cHViX2RlZmF1bHQKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9kZWZh dWx0Ci0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMg fCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3Vz ZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgZiAgICAg ICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFB1YmxpY2F0aW9uIHRlc3RwdWJfZGVmYXVsdAorICAgICAgICAgIE93bmVyICAgICAgICAg ICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBE ZWxldGVzIHwgVHJ1bmNhdGVzIHwgU2VxdWVuY2VzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgICB8IHQgICAg ICAgICB8IGYKICgxIHJvdykKIAogLS0gZmFpbCAtIG11c3QgYmUgb3duZXIgb2YgcHVibGlj YXRpb24KQEAgLTEyNDksMjAgKzE3NTMsMjAgQEAgRVJST1I6ICBtdXN0IGJlIG93bmVyIG9m IHB1YmxpY2F0aW9uIHRlc3RwdWJfZGVmYXVsdAogUkVTRVQgUk9MRTsKIEFMVEVSIFBVQkxJ Q0FUSU9OIHRlc3RwdWJfZGVmYXVsdCBSRU5BTUUgVE8gdGVzdHB1Yl9mb287CiBcZFJwIHRl c3RwdWJfZm9vCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg TGlzdCBvZiBwdWJsaWNhdGlvbnMKLSAgICBOYW1lICAgICB8ICAgICAgICAgIE93bmVyICAg ICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBU cnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0KLSB0ZXN0cHViX2ZvbyB8IHJlZ3Jlc3NfcHVibGljYXRp b25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCBm ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBMaXN0IG9mIHB1YmxpY2F0aW9ucworICAgIE5hbWUgICAgIHwg ICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMg fCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBTZXF1ZW5jZXMg fCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgdGVzdHB1Yl9mb28g fCByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICAg ICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgICB8IHQgICAgICAg ICB8IGYKICgxIHJvdykKIAogLS0gcmVuYW1lIGJhY2sgdG8ga2VlcCB0aGUgcmVzdCBzaW1w bGUKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9vIFJFTkFNRSBUTyB0ZXN0cHViX2Rl ZmF1bHQ7CiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2RlZmF1bHQgT1dORVIgVE8gcmVn cmVzc19wdWJsaWNhdGlvbl91c2VyMjsKIFxkUnAgdGVzdHB1Yl9kZWZhdWx0Ci0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHB1YmxpY2F0 aW9ucwotICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBB bGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwg VmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0KLSB0ZXN0cHViX2RlZmF1bHQgfCByZWdyZXNzX3B1YmxpY2F0aW9u X3VzZXIyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IGYg ICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgTGlzdCBvZiBwdWJsaWNhdGlvbnMKKyAgICAgIE5hbWUgICAg ICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1 ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBTZXF1 ZW5jZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyB0 ZXN0cHViX2RlZmF1bHQgfCByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIyIHwgZiAgICAgICAg ICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCBmICAg ICAgICAgfCB0ICAgICAgICAgfCBmCiAoMSByb3cpCiAKIC0tIGFkZGluZyBzY2hlbWFzIGFu ZCB0YWJsZXMKQEAgLTEyNzgsMTkgKzE3ODIsMTkgQEAgQ1JFQVRFIFRBQkxFICJDVVJSRU5U X1NDSEVNQSIuIkNVUlJFTlRfU0NIRU1BIihpZCBpbnQpOwogU0VUIGNsaWVudF9taW5fbWVz c2FnZXMgPSAnRVJST1InOwogQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWIxX2ZvcnNjaGVt YSBGT1IgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDE7CiBcZFJwKyB0ZXN0cHViMV9mb3Jz Y2hlbWEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0 cHViMV9mb3JzY2hlbWEKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVz IHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3Qg Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVi bGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMV9mb3JzY2hlbWEKKyAgICAgICAgICBP d25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMg fCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFNlcXVlbmNlcyB8IFZpYSByb290 IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0t LS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAg ICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAg ICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJsZXMgZnJvbSBzY2hlbWFzOgogICAgICJwdWJf dGVzdDEiCiAKIENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViMl9mb3JzY2hlbWEgRk9SIFRB QkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QxLCBwdWJfdGVzdDIsIHB1Yl90ZXN0MzsKIFxkUnAr IHRlc3RwdWIyX2ZvcnNjaGVtYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1 YmxpY2F0aW9uIHRlc3RwdWIyX2ZvcnNjaGVtYQotICAgICAgICAgIE93bmVyICAgICAgICAg ICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0 ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t Ci0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIyX2ZvcnNjaGVt YQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVu Y2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgU2VxdWVu Y2VzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3Vz ZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwg dCAgICAgICB8IHQgICAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlcyBmcm9tIHNjaGVt YXM6CiAgICAgInB1Yl90ZXN0MSIKICAgICAicHViX3Rlc3QyIgpAQCAtMTMwNCw0NCArMTgw OCw0NCBAQCBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1YjZfZm9yc2NoZW1hIEZPUiBUQUJM RVMgSU4gU0NIRU1BICJDVVJSRU5UX1NDSEVNQSIsIENVUgogQ1JFQVRFIFBVQkxJQ0FUSU9O IHRlc3RwdWJfZm9ydGFibGUgRk9SIFRBQkxFICJDVVJSRU5UX1NDSEVNQSIuIkNVUlJFTlRf U0NIRU1BIjsKIFJFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CiBcZFJwKyB0ZXN0cHViM19m b3JzY2hlbWEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0 ZXN0cHViM19mb3JzY2hlbWEKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFi bGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJv b3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3Nf cHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViM19mb3JzY2hlbWEKKyAgICAgICAg ICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2Vy dHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFNlcXVlbmNlcyB8IFZpYSBy b290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAg ICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJsZXMgZnJvbSBzY2hlbWFzOgogICAgICJw dWJsaWMiCiAKIFxkUnArIHRlc3RwdWI0X2ZvcnNjaGVtYQotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWI0X2ZvcnNjaGVtYQotICAgICAgICAg IE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERl bGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAg ICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRl c3RwdWI0X2ZvcnNjaGVtYQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJs ZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1 bmNhdGVzIHwgU2VxdWVuY2VzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNz X3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IHQgICAgICAgICB8IGYKIFRh YmxlcyBmcm9tIHNjaGVtYXM6CiAgICAgIkNVUlJFTlRfU0NIRU1BIgogCiBcZFJwKyB0ZXN0 cHViNV9mb3JzY2hlbWEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNh dGlvbiB0ZXN0cHViNV9mb3JzY2hlbWEKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBB bGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwg VmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJl Z3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAg ICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViNV9mb3JzY2hlbWEKKyAg ICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8 IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFNlcXVlbmNlcyB8 IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwg ZiAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJsZXMgZnJvbSBzY2hlbWFzOgog ICAgICJDVVJSRU5UX1NDSEVNQSIKICAgICAicHVibGljIgogCiBcZFJwKyB0ZXN0cHViNl9m b3JzY2hlbWEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0 ZXN0cHViNl9mb3JzY2hlbWEKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFi bGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJv b3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3Nf cHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViNl9mb3JzY2hlbWEKKyAgICAgICAg ICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2Vy dHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFNlcXVlbmNlcyB8IFZpYSBy b290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAg ICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJsZXMgZnJvbSBzY2hlbWFzOgogICAgICJD VVJSRU5UX1NDSEVNQSIKICAgICAicHVibGljIgogCiBcZFJwKyB0ZXN0cHViX2ZvcnRhYmxl Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJf Zm9ydGFibGUKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5z ZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRp b25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3J0YWJsZQorICAgICAgICAgIE93bmVyICAg ICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0 ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgU2VxdWVuY2VzIHwgVmlhIHJvb3QgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAg ICAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8 IHQgICAgICAgICB8IGYKIFRhYmxlczoKICAgICAiQ1VSUkVOVF9TQ0hFTUEuQ1VSUkVOVF9T Q0hFTUEiCiAKQEAgLTEzNzUsMTAgKzE4NzksMTAgQEAgRVJST1I6ICBzY2hlbWEgInRlc3Rw dWJfdmlldyIgZG9lcyBub3QgZXhpc3QKIC0tIGRyb3BwaW5nIHRoZSBzY2hlbWEgc2hvdWxk IHJlZmxlY3QgdGhlIGNoYW5nZSBpbiBwdWJsaWNhdGlvbgogRFJPUCBTQ0hFTUEgcHViX3Rl c3QzOwogXGRScCsgdGVzdHB1YjJfZm9yc2NoZW1hCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjJfZm9yc2NoZW1hCi0gICAgICAgICAgT3du ZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRl cyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwg dCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1 YjJfZm9yc2NoZW1hCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8 IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0 ZXMgfCBTZXF1ZW5jZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVi bGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgdCAgICAgICAgIHwgZgogVGFibGVz IGZyb20gc2NoZW1hczoKICAgICAicHViX3Rlc3QxIgogICAgICJwdWJfdGVzdDIiCkBAIC0x Mzg2LDIwICsxODkwLDIwIEBAIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAtLSByZW5hbWluZyB0 aGUgc2NoZW1hIHNob3VsZCByZWZsZWN0IHRoZSBjaGFuZ2UgaW4gcHVibGljYXRpb24KIEFM VEVSIFNDSEVNQSBwdWJfdGVzdDEgUkVOQU1FIHRvIHB1Yl90ZXN0MV9yZW5hbWVkOwogXGRS cCsgdGVzdHB1YjJfZm9yc2NoZW1hCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UHVibGljYXRpb24gdGVzdHB1YjJfZm9yc2NoZW1hCi0gICAgICAgICAgT3duZXIgICAgICAg ICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5j YXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjJfZm9yc2No ZW1hCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1 ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBTZXF1 ZW5jZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25f dXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICAgIHwgdCAgICAgICAgIHwgZgogVGFibGVzIGZyb20gc2No ZW1hczoKICAgICAicHViX3Rlc3QxX3JlbmFtZWQiCiAgICAgInB1Yl90ZXN0MiIKIAogQUxU RVIgU0NIRU1BIHB1Yl90ZXN0MV9yZW5hbWVkIFJFTkFNRSB0byBwdWJfdGVzdDE7CiBcZFJw KyB0ZXN0cHViMl9mb3JzY2hlbWEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ dWJsaWNhdGlvbiB0ZXN0cHViMl9mb3JzY2hlbWEKLSAgICAgICAgICBPd25lciAgICAgICAg ICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNh dGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0t LQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwg dCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMl9mb3JzY2hl bWEKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVl bmNlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFNlcXVl bmNlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91 c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJsZXMgZnJvbSBzY2hl bWFzOgogICAgICJwdWJfdGVzdDEiCiAgICAgInB1Yl90ZXN0MiIKQEAgLTE0MDcsMTAgKzE5 MTEsMTAgQEAgVGFibGVzIGZyb20gc2NoZW1hczoKIC0tIGFsdGVyIHB1YmxpY2F0aW9uIGFk ZCBzY2hlbWEKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWIxX2ZvcnNjaGVtYSBBREQgVEFC TEVTIElOIFNDSEVNQSBwdWJfdGVzdDI7CiBcZFJwKyB0ZXN0cHViMV9mb3JzY2hlbWEKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMV9mb3Jz Y2hlbWEKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0 cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25f dXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAg ICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBQdWJsaWNhdGlvbiB0ZXN0cHViMV9mb3JzY2hlbWEKKyAgICAgICAgICBPd25lciAgICAg ICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVz IHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFNlcXVlbmNlcyB8IFZpYSByb290IAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAg ICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCB0 ICAgICAgICAgfCBmCiBUYWJsZXMgZnJvbSBzY2hlbWFzOgogICAgICJwdWJfdGVzdDEiCiAg ICAgInB1Yl90ZXN0MiIKQEAgLTE0MTksMTAgKzE5MjMsMTAgQEAgVGFibGVzIGZyb20gc2No ZW1hczoKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWIxX2ZvcnNjaGVtYSBBREQgVEFCTEVT IElOIFNDSEVNQSBub25fZXhpc3RlbnRfc2NoZW1hOwogRVJST1I6ICBzY2hlbWEgIm5vbl9l eGlzdGVudF9zY2hlbWEiIGRvZXMgbm90IGV4aXN0CiBcZFJwKyB0ZXN0cHViMV9mb3JzY2hl bWEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHVi MV9mb3JzY2hlbWEKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwg SW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGlj YXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg fCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMV9mb3JzY2hlbWEKKyAgICAgICAgICBPd25l ciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMgfCBV cGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFNlcXVlbmNlcyB8IFZpYSByb290IAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8 IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAg ICAgfCB0ICAgICAgICAgfCBmCiBUYWJsZXMgZnJvbSBzY2hlbWFzOgogICAgICJwdWJfdGVz dDEiCiAgICAgInB1Yl90ZXN0MiIKQEAgLTE0MzEsMTAgKzE5MzUsMTAgQEAgVGFibGVzIGZy b20gc2NoZW1hczoKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWIxX2ZvcnNjaGVtYSBBREQg VEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDE7CiBFUlJPUjogIHNjaGVtYSAicHViX3Rlc3Qx IiBpcyBhbHJlYWR5IG1lbWJlciBvZiBwdWJsaWNhdGlvbiAidGVzdHB1YjFfZm9yc2NoZW1h IgogXGRScCsgdGVzdHB1YjFfZm9yc2NoZW1hCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUHVibGljYXRpb24gdGVzdHB1YjFfZm9yc2NoZW1hCi0gICAgICAgICAgT3duZXIg ICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8 IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjFf Zm9yc2NoZW1hCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFs bCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMg fCBTZXF1ZW5jZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGlj YXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgdCAgICAgICAgIHwgZgogVGFibGVzIGZy b20gc2NoZW1hczoKICAgICAicHViX3Rlc3QxIgogICAgICJwdWJfdGVzdDIiCkBAIC0xNDQy LDEwICsxOTQ2LDEwIEBAIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAtLSBhbHRlciBwdWJsaWNh dGlvbiBkcm9wIHNjaGVtYQogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1YjFfZm9yc2NoZW1h IERST1AgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDI7CiBcZFJwKyB0ZXN0cHViMV9mb3Jz Y2hlbWEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0 cHViMV9mb3JzY2hlbWEKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVz IHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3Qg Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVi bGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMV9mb3JzY2hlbWEKKyAgICAgICAgICBP d25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMg fCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFNlcXVlbmNlcyB8IFZpYSByb290 IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0t LS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAg ICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAg ICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJsZXMgZnJvbSBzY2hlbWFzOgogICAgICJwdWJf dGVzdDEiCiAKQEAgLTE0NTMsMTAgKzE5NTcsMTAgQEAgVGFibGVzIGZyb20gc2NoZW1hczoK IEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWIxX2ZvcnNjaGVtYSBEUk9QIFRBQkxFUyBJTiBT Q0hFTUEgcHViX3Rlc3QyOwogRVJST1I6ICB0YWJsZXMgZnJvbSBzY2hlbWEgInB1Yl90ZXN0 MiIgYXJlIG5vdCBwYXJ0IG9mIHRoZSBwdWJsaWNhdGlvbgogXGRScCsgdGVzdHB1YjFfZm9y c2NoZW1hCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVz dHB1YjFfZm9yc2NoZW1hCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxl cyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290 IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1 YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAg ICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjFfZm9yc2NoZW1hCisgICAgICAgICAg T3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRz IHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBTZXF1ZW5jZXMgfCBWaWEgcm9v dCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAg ICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICAgIHwgdCAgICAgICAgIHwgZgogVGFibGVzIGZyb20gc2NoZW1hczoKICAgICAicHVi X3Rlc3QxIgogCkBAIC0xNDY0LDI5ICsxOTY4LDI5IEBAIFRhYmxlcyBmcm9tIHNjaGVtYXM6 CiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViMV9mb3JzY2hlbWEgRFJPUCBUQUJMRVMgSU4g U0NIRU1BIG5vbl9leGlzdGVudF9zY2hlbWE7CiBFUlJPUjogIHNjaGVtYSAibm9uX2V4aXN0 ZW50X3NjaGVtYSIgZG9lcyBub3QgZXhpc3QKIFxkUnArIHRlc3RwdWIxX2ZvcnNjaGVtYQot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIxX2Zv cnNjaGVtYQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNl cnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlv bl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQg ICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIxX2ZvcnNjaGVtYQorICAgICAgICAgIE93bmVyICAg ICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0 ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgU2VxdWVuY2VzIHwgVmlhIHJvb3QgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAg ICAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8 IHQgICAgICAgICB8IGYKIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAgICAgInB1Yl90ZXN0MSIK IAogLS0gZHJvcCBhbGwgc2NoZW1hcwogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1YjFfZm9y c2NoZW1hIERST1AgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDE7CiBcZFJwKyB0ZXN0cHVi MV9mb3JzY2hlbWEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlv biB0ZXN0cHViMV9mb3JzY2hlbWEKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwg dGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlh IHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jl c3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMV9mb3JzY2hlbWEKKyAgICAg ICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IElu c2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFNlcXVlbmNlcyB8IFZp YSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSst LS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAg ICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg fCB0ICAgICAgICAgfCB0ICAgICAgICAgfCBmCiAoMSByb3cpCiAKIC0tIGFsdGVyIHB1Ymxp Y2F0aW9uIHNldCBtdWx0aXBsZSBzY2hlbWEKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWIx X2ZvcnNjaGVtYSBTRVQgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDEsIHB1Yl90ZXN0MjsK IFxkUnArIHRlc3RwdWIxX2ZvcnNjaGVtYQotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIxX2ZvcnNjaGVtYQotICAgICAgICAgIE93bmVyICAg ICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBU cnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIxX2Zv cnNjaGVtYQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwg c2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwg U2VxdWVuY2VzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0 aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IHQgICAgICAgfCB0ICAg ICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlcyBmcm9t IHNjaGVtYXM6CiAgICAgInB1Yl90ZXN0MSIKICAgICAicHViX3Rlc3QyIgpAQCAtMTQ5NSwx MCArMTk5OSwxMCBAQCBUYWJsZXMgZnJvbSBzY2hlbWFzOgogQUxURVIgUFVCTElDQVRJT04g dGVzdHB1YjFfZm9yc2NoZW1hIFNFVCBUQUJMRVMgSU4gU0NIRU1BIG5vbl9leGlzdGVudF9z Y2hlbWE7CiBFUlJPUjogIHNjaGVtYSAibm9uX2V4aXN0ZW50X3NjaGVtYSIgZG9lcyBub3Qg ZXhpc3QKIFxkUnArIHRlc3RwdWIxX2ZvcnNjaGVtYQotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIxX2ZvcnNjaGVtYQotICAgICAgICAgIE93 bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0 ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3Rw dWIxX2ZvcnNjaGVtYQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMg fCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNh dGVzIHwgU2VxdWVuY2VzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1 YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IHQgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxl cyBmcm9tIHNjaGVtYXM6CiAgICAgInB1Yl90ZXN0MSIKICAgICAicHViX3Rlc3QyIgpAQCAt MTUwNywxMCArMjAxMSwxMCBAQCBUYWJsZXMgZnJvbSBzY2hlbWFzOgogLS0gcmVtb3Zpbmcg dGhlIGR1cGxpY2F0ZSBzY2hlbWFzCiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViMV9mb3Jz Y2hlbWEgU0VUIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QxLCBwdWJfdGVzdDE7CiBcZFJw KyB0ZXN0cHViMV9mb3JzY2hlbWEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ dWJsaWNhdGlvbiB0ZXN0cHViMV9mb3JzY2hlbWEKLSAgICAgICAgICBPd25lciAgICAgICAg ICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNh dGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0t LQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwg dCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMV9mb3JzY2hl bWEKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVl bmNlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFNlcXVl bmNlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91 c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJsZXMgZnJvbSBzY2hl bWFzOgogICAgICJwdWJfdGVzdDEiCiAKQEAgLTE1ODksMTggKzIwOTMsMTggQEAgU0VUIGNs aWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1InOwogQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3Rw dWIzX2ZvcnNjaGVtYTsKIFJFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CiBcZFJwKyB0ZXN0 cHViM19mb3JzY2hlbWEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNh dGlvbiB0ZXN0cHViM19mb3JzY2hlbWEKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBB bGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwg VmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJl Z3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAg ICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViM19mb3JzY2hlbWEKKyAg ICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8 IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFNlcXVlbmNlcyB8 IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwg ZiAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgICAgfCB0ICAgICAgICAgfCBmCiAoMSByb3cpCiAKIEFMVEVSIFBVQkxJ Q0FUSU9OIHRlc3RwdWIzX2ZvcnNjaGVtYSBTRVQgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVz dDE7CiBcZFJwKyB0ZXN0cHViM19mb3JzY2hlbWEKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViM19mb3JzY2hlbWEKLSAgICAgICAgICBPd25l ciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVz IHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0r LS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHVi M19mb3JzY2hlbWEKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwg QWxsIHNlcXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRl cyB8IFNlcXVlbmNlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJs aWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwg dCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJsZXMg ZnJvbSBzY2hlbWFzOgogICAgICJwdWJfdGVzdDEiCiAKQEAgLTE2MTAsMjAgKzIxMTQsMjAg QEAgQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yc2NoZW1hX2ZvcnRhYmxlIEZPUiBU QUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0MSwgVEEKIENSRUFURSBQVUJMSUNBVElPTiB0ZXN0 cHViX2ZvcnRhYmxlX2ZvcnNjaGVtYSBGT1IgVEFCTEUgcHViX3Rlc3QyLnRibDEsIFRBQkxF UyBJTiBTQ0hFTUEgcHViX3Rlc3QxOwogUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKIFxk UnArIHRlc3RwdWJfZm9yc2NoZW1hX2ZvcnRhYmxlCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcnNjaGVtYV9mb3J0YWJsZQotICAgICAgICAg IE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERl bGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAg ICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1 Yl9mb3JzY2hlbWFfZm9ydGFibGUKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwg dGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8 IFRydW5jYXRlcyB8IFNlcXVlbmNlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVn cmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCB0ICAgICAgICAgfCBm CiBUYWJsZXM6CiAgICAgInB1Yl90ZXN0Mi50YmwxIgogVGFibGVzIGZyb20gc2NoZW1hczoK ICAgICAicHViX3Rlc3QxIgogCiBcZFJwKyB0ZXN0cHViX2ZvcnRhYmxlX2ZvcnNjaGVtYQot ICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3J0YWJs ZV9mb3JzY2hlbWEKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwg SW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGlj YXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg fCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9ydGFibGVfZm9yc2NoZW1hCisgICAgICAgICAg T3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRz IHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBTZXF1ZW5jZXMgfCBWaWEgcm9v dCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAg ICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICAgIHwgdCAgICAgICAgIHwgZgogVGFibGVzOgogICAgICJwdWJfdGVzdDIudGJsMSIK IFRhYmxlcyBmcm9tIHNjaGVtYXM6CkBAIC0xNjY3LDQwICsyMTcxLDg1IEBAIENSRUFURSBT Q0hFTUEgc2NoMTsKIENSRUFURSBTQ0hFTUEgc2NoMjsKIENSRUFURSBUQUJMRSBzY2gxLnRi bDEgKGEgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UoYSk7CiBDUkVBVEUgVEFCTEUgc2NoMi50 YmwxX3BhcnQxIFBBUlRJVElPTiBPRiBzY2gxLnRibDEgRk9SIFZBTFVFUyBGUk9NICgxKSB0 byAoMTApOworQ1JFQVRFIFNFUVVFTkNFIHNjaDEuc2VxMTsKK0NSRUFURSBTRVFVRU5DRSBz Y2gyLnNlcTI7CiAtLSBTY2hlbWEgcHVibGljYXRpb24gdGhhdCBkb2VzIG5vdCBpbmNsdWRl IHRoZSBzY2hlbWEgdGhhdCBoYXMgdGhlIHBhcmVudCB0YWJsZQogQ1JFQVRFIFBVQkxJQ0FU SU9OIHB1YiBGT1IgVEFCTEVTIElOIFNDSEVNQSBzY2gyIFdJVEggKFBVQkxJU0hfVklBX1BB UlRJVElPTl9ST09UPTEpOworQUxURVIgUFVCTElDQVRJT04gcHViIEFERCBTRVFVRU5DRVMg SU4gU0NIRU1BIHNjaDI7CiBTRUxFQ1QgKiBGUk9NIHBnX3B1YmxpY2F0aW9uX3RhYmxlczsK ICBwdWJuYW1lIHwgc2NoZW1hbmFtZSB8IHRhYmxlbmFtZSAgfCBhdHRuYW1lcyB8IHJvd2Zp bHRlciAKIC0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0r LS0tLS0tLS0tLS0KICBwdWIgICAgIHwgc2NoMiAgICAgICB8IHRibDFfcGFydDEgfCB7YX0g ICAgICB8IAogKDEgcm93KQogCitTRUxFQ1QgKiBGUk9NIHBnX3B1YmxpY2F0aW9uX3NlcXVl bmNlczsKKyBwdWJuYW1lIHwgc2NoZW1hbmFtZSB8IHNlcXVlbmNlbmFtZSAKKy0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0KKyBwdWIgICAgIHwgc2NoMiAgICAgICB8 IHNlcTIKKygxIHJvdykKKwogRFJPUCBQVUJMSUNBVElPTiBwdWI7CiAtLSBUYWJsZSBwdWJs aWNhdGlvbiB0aGF0IGRvZXMgbm90IGluY2x1ZGUgdGhlIHBhcmVudCB0YWJsZQogQ1JFQVRF IFBVQkxJQ0FUSU9OIHB1YiBGT1IgVEFCTEUgc2NoMi50YmwxX3BhcnQxIFdJVEggKFBVQkxJ U0hfVklBX1BBUlRJVElPTl9ST09UPTEpOworQUxURVIgUFVCTElDQVRJT04gcHViIEFERCBT RVFVRU5DRSBzY2gyLnNlcTI7CiBTRUxFQ1QgKiBGUk9NIHBnX3B1YmxpY2F0aW9uX3RhYmxl czsKICBwdWJuYW1lIHwgc2NoZW1hbmFtZSB8IHRhYmxlbmFtZSAgfCBhdHRuYW1lcyB8IHJv d2ZpbHRlciAKIC0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0rLS0tLS0tLS0tLS0KICBwdWIgICAgIHwgc2NoMiAgICAgICB8IHRibDFfcGFydDEgfCB7 YX0gICAgICB8IAogKDEgcm93KQogCitTRUxFQ1QgKiBGUk9NIHBnX3B1YmxpY2F0aW9uX3Nl cXVlbmNlczsKKyBwdWJuYW1lIHwgc2NoZW1hbmFtZSB8IHNlcXVlbmNlbmFtZSAKKy0tLS0t LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0KKyBwdWIgICAgIHwgc2NoMiAgICAg ICB8IHNlcTIKKygxIHJvdykKKwogLS0gVGFibGUgcHVibGljYXRpb24gdGhhdCBpbmNsdWRl cyBib3RoIHRoZSBwYXJlbnQgdGFibGUgYW5kIHRoZSBjaGlsZCB0YWJsZQogQUxURVIgUFVC TElDQVRJT04gcHViIEFERCBUQUJMRSBzY2gxLnRibDE7CitBTFRFUiBQVUJMSUNBVElPTiBw dWIgQUREIFNFUVVFTkNFIHNjaDEuc2VxMTsKIFNFTEVDVCAqIEZST00gcGdfcHVibGljYXRp b25fdGFibGVzOwogIHB1Ym5hbWUgfCBzY2hlbWFuYW1lIHwgdGFibGVuYW1lIHwgYXR0bmFt ZXMgfCByb3dmaWx0ZXIgCiAtLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0rLS0tLS0tLS0tLS0KICBwdWIgICAgIHwgc2NoMSAgICAgICB8IHRibDEgICAg ICB8IHthfSAgICAgIHwgCiAoMSByb3cpCiAKK1NFTEVDVCAqIEZST00gcGdfcHVibGljYXRp b25fc2VxdWVuY2VzOworIHB1Ym5hbWUgfCBzY2hlbWFuYW1lIHwgc2VxdWVuY2VuYW1lIAor LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLQorIHB1YiAgICAgfCBzY2gx ICAgICAgIHwgc2VxMQorIHB1YiAgICAgfCBzY2gyICAgICAgIHwgc2VxMgorKDIgcm93cykK KwogRFJPUCBQVUJMSUNBVElPTiBwdWI7CiAtLSBTY2hlbWEgcHVibGljYXRpb24gdGhhdCBk b2VzIG5vdCBpbmNsdWRlIHRoZSBzY2hlbWEgdGhhdCBoYXMgdGhlIHBhcmVudCB0YWJsZQog Q1JFQVRFIFBVQkxJQ0FUSU9OIHB1YiBGT1IgVEFCTEVTIElOIFNDSEVNQSBzY2gyIFdJVEgg KFBVQkxJU0hfVklBX1BBUlRJVElPTl9ST09UPTApOworQUxURVIgUFVCTElDQVRJT04gcHVi IEFERCBTRVFVRU5DRSBzY2gxLnNlcTE7CiBTRUxFQ1QgKiBGUk9NIHBnX3B1YmxpY2F0aW9u X3RhYmxlczsKICBwdWJuYW1lIHwgc2NoZW1hbmFtZSB8IHRhYmxlbmFtZSAgfCBhdHRuYW1l cyB8IHJvd2ZpbHRlciAKIC0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0rLS0tLS0tLS0tLS0KICBwdWIgICAgIHwgc2NoMiAgICAgICB8IHRibDFfcGFy dDEgfCB7YX0gICAgICB8IAogKDEgcm93KQogCitTRUxFQ1QgKiBGUk9NIHBnX3B1YmxpY2F0 aW9uX3NlcXVlbmNlczsKKyBwdWJuYW1lIHwgc2NoZW1hbmFtZSB8IHNlcXVlbmNlbmFtZSAK Ky0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0KKyBwdWIgICAgIHwgc2No MSAgICAgICB8IHNlcTEKKygxIHJvdykKKworRFJPUCBQVUJMSUNBVElPTiBwdWI7CistLSBT ZXF1ZW5jZSBwdWJsaWNhdGlvbgorQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YiBGT1IgU0VRVUVO Q0Ugc2NoMi5zZXEyOworU0VMRUNUICogRlJPTSBwZ19wdWJsaWNhdGlvbl90YWJsZXM7Cisg cHVibmFtZSB8IHNjaGVtYW5hbWUgfCB0YWJsZW5hbWUgfCBhdHRuYW1lcyB8IHJvd2ZpbHRl ciAKKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0t LS0tLS0tLQorKDAgcm93cykKKworU0VMRUNUICogRlJPTSBwZ19wdWJsaWNhdGlvbl9zZXF1 ZW5jZXM7CisgcHVibmFtZSB8IHNjaGVtYW5hbWUgfCBzZXF1ZW5jZW5hbWUgCistLS0tLS0t LS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tCisgcHViICAgICB8IHNjaDIgICAgICAg fCBzZXEyCisoMSByb3cpCisKIERST1AgUFVCTElDQVRJT04gcHViOwogLS0gVGFibGUgcHVi bGljYXRpb24gdGhhdCBkb2VzIG5vdCBpbmNsdWRlIHRoZSBwYXJlbnQgdGFibGUKIENSRUFU RSBQVUJMSUNBVElPTiBwdWIgRk9SIFRBQkxFIHNjaDIudGJsMV9wYXJ0MSBXSVRIIChQVUJM SVNIX1ZJQV9QQVJUSVRJT05fUk9PVD0wKTsKQEAgLTE3MTAsMTQgKzIyNTksMjYgQEAgU0VM RUNUICogRlJPTSBwZ19wdWJsaWNhdGlvbl90YWJsZXM7CiAgcHViICAgICB8IHNjaDIgICAg ICAgfCB0YmwxX3BhcnQxIHwge2F9ICAgICAgfCAKICgxIHJvdykKIAorU0VMRUNUICogRlJP TSBwZ19wdWJsaWNhdGlvbl9zZXF1ZW5jZXM7CisgcHVibmFtZSB8IHNjaGVtYW5hbWUgfCBz ZXF1ZW5jZW5hbWUgCistLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tCiso MCByb3dzKQorCiAtLSBUYWJsZSBwdWJsaWNhdGlvbiB0aGF0IGluY2x1ZGVzIGJvdGggdGhl IHBhcmVudCB0YWJsZSBhbmQgdGhlIGNoaWxkIHRhYmxlCiBBTFRFUiBQVUJMSUNBVElPTiBw dWIgQUREIFRBQkxFIHNjaDEudGJsMTsKK0FMVEVSIFBVQkxJQ0FUSU9OIHB1YiBBREQgU0VR VUVOQ0VTIElOIFNDSEVNQSBzY2gyOwogU0VMRUNUICogRlJPTSBwZ19wdWJsaWNhdGlvbl90 YWJsZXM7CiAgcHVibmFtZSB8IHNjaGVtYW5hbWUgfCB0YWJsZW5hbWUgIHwgYXR0bmFtZXMg fCByb3dmaWx0ZXIgCiAtLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0tKy0tLS0tLS0tLS0tCiAgcHViICAgICB8IHNjaDIgICAgICAgfCB0YmwxX3BhcnQx IHwge2F9ICAgICAgfCAKICgxIHJvdykKIAorU0VMRUNUICogRlJPTSBwZ19wdWJsaWNhdGlv bl9zZXF1ZW5jZXM7CisgcHVibmFtZSB8IHNjaGVtYW5hbWUgfCBzZXF1ZW5jZW5hbWUgCist LS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tCisgcHViICAgICB8IHNjaDIg ICAgICAgfCBzZXEyCisoMSByb3cpCisKIERST1AgUFVCTElDQVRJT04gcHViOwogRFJPUCBU QUJMRSBzY2gyLnRibDFfcGFydDE7CiBEUk9QIFRBQkxFIHNjaDEudGJsMTsKQEAgLTE3MzMs OSArMjI5NCw4MSBAQCBTRUxFQ1QgKiBGUk9NIHBnX3B1YmxpY2F0aW9uX3RhYmxlczsKICBw dWIgICAgIHwgc2NoMSAgICAgICB8IHRibDEgICAgICB8IHthfSAgICAgIHwgCiAoMSByb3cp CiAKK1NFTEVDVCAqIEZST00gcGdfcHVibGljYXRpb25fc2VxdWVuY2VzOworIHB1Ym5hbWUg fCBzY2hlbWFuYW1lIHwgc2VxdWVuY2VuYW1lIAorLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLQorKDAgcm93cykKKworRFJPUCBQVUJMSUNBVElPTiBwdWI7CistLSBT Y2hlbWEgcHVibGljYXRpb24KK0NSRUFURSBQVUJMSUNBVElPTiBwdWIgRk9SIFNFUVVFTkNF IHNjaDIuc2VxMjsKK1NFTEVDVCAqIEZST00gcGdfcHVibGljYXRpb25fdGFibGVzOworIHB1 Ym5hbWUgfCBzY2hlbWFuYW1lIHwgdGFibGVuYW1lIHwgYXR0bmFtZXMgfCByb3dmaWx0ZXIg CistLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0t LS0tLS0KKygwIHJvd3MpCisKK1NFTEVDVCAqIEZST00gcGdfcHVibGljYXRpb25fc2VxdWVu Y2VzOworIHB1Ym5hbWUgfCBzY2hlbWFuYW1lIHwgc2VxdWVuY2VuYW1lIAorLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLQorIHB1YiAgICAgfCBzY2gyICAgICAgIHwg c2VxMgorKDEgcm93KQorCitEUk9QIFBVQkxJQ0FUSU9OIHB1YjsKKy0tIFNlcXVlbmNlIHB1 YmxpY2F0aW9uCitDUkVBVEUgUFVCTElDQVRJT04gcHViIEZPUiBTRVFVRU5DRVMgSU4gU0NI RU1BIHNjaDI7CitTRUxFQ1QgKiBGUk9NIHBnX3B1YmxpY2F0aW9uX3RhYmxlczsKKyBwdWJu YW1lIHwgc2NoZW1hbmFtZSB8IHRhYmxlbmFtZSB8IGF0dG5hbWVzIHwgcm93ZmlsdGVyIAor LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0t LS0tCisoMCByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHBnX3B1YmxpY2F0aW9uX3NlcXVlbmNl czsKKyBwdWJuYW1lIHwgc2NoZW1hbmFtZSB8IHNlcXVlbmNlbmFtZSAKKy0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0KKyBwdWIgICAgIHwgc2NoMiAgICAgICB8IHNl cTIKKygxIHJvdykKKworQUxURVIgUFVCTElDQVRJT04gcHViIEFERCBTRVFVRU5DRSBzY2gx LnNlcTE7CitTRUxFQ1QgKiBGUk9NIHBnX3B1YmxpY2F0aW9uX3RhYmxlczsKKyBwdWJuYW1l IHwgc2NoZW1hbmFtZSB8IHRhYmxlbmFtZSB8IGF0dG5hbWVzIHwgcm93ZmlsdGVyIAorLS0t LS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0t CisoMCByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHBnX3B1YmxpY2F0aW9uX3NlcXVlbmNlczsK KyBwdWJuYW1lIHwgc2NoZW1hbmFtZSB8IHNlcXVlbmNlbmFtZSAKKy0tLS0tLS0tLSstLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0KKyBwdWIgICAgIHwgc2NoMSAgICAgICB8IHNlcTEK KyBwdWIgICAgIHwgc2NoMiAgICAgICB8IHNlcTIKKygyIHJvd3MpCisKK0FMVEVSIFBVQkxJ Q0FUSU9OIHB1YiBEUk9QIFNFUVVFTkNFIHNjaDEuc2VxMTsKK1NFTEVDVCAqIEZST00gcGdf cHVibGljYXRpb25fdGFibGVzOworIHB1Ym5hbWUgfCBzY2hlbWFuYW1lIHwgdGFibGVuYW1l IHwgYXR0bmFtZXMgfCByb3dmaWx0ZXIgCistLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKygwIHJvd3MpCisKK1NFTEVDVCAqIEZS T00gcGdfcHVibGljYXRpb25fc2VxdWVuY2VzOworIHB1Ym5hbWUgfCBzY2hlbWFuYW1lIHwg c2VxdWVuY2VuYW1lIAorLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLQor IHB1YiAgICAgfCBzY2gyICAgICAgIHwgc2VxMgorKDEgcm93KQorCitBTFRFUiBQVUJMSUNB VElPTiBwdWIgQUREIFNFUVVFTkNFUyBJTiBTQ0hFTUEgc2NoMTsKK1NFTEVDVCAqIEZST00g cGdfcHVibGljYXRpb25fdGFibGVzOworIHB1Ym5hbWUgfCBzY2hlbWFuYW1lIHwgdGFibGVu YW1lIHwgYXR0bmFtZXMgfCByb3dmaWx0ZXIgCistLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKygwIHJvd3MpCisKK1NFTEVDVCAq IEZST00gcGdfcHVibGljYXRpb25fc2VxdWVuY2VzOworIHB1Ym5hbWUgfCBzY2hlbWFuYW1l IHwgc2VxdWVuY2VuYW1lIAorLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LQorIHB1YiAgICAgfCBzY2gxICAgICAgIHwgc2VxMQorIHB1YiAgICAgfCBzY2gyICAgICAg IHwgc2VxMgorKDIgcm93cykKKwogUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKIERST1Ag UFVCTElDQVRJT04gcHViOwogRFJPUCBUQUJMRSBzY2gxLnRibDE7CitEUk9QIFNFUVVFTkNF IHNjaDEuc2VxMSwgc2NoMi5zZXEyOwogRFJPUCBTQ0hFTUEgc2NoMSBjYXNjYWRlOwogRFJP UCBTQ0hFTUEgc2NoMiBjYXNjYWRlOwogUkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OOwpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQgYi9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dAppbmRleCAwNTA3MDM5M2I5OS4uYzYy ZGVhZDkyYTcgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMu b3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0CkBAIC0xNDQx LDYgKzE0NDEsMTQgQEAgcGdfcHJlcGFyZWRfeGFjdHN8IFNFTEVDVCBwLnRyYW5zYWN0aW9u LAogICAgRlJPTSAoKHBnX3ByZXBhcmVkX3hhY3QoKSBwKHRyYW5zYWN0aW9uLCBnaWQsIHBy ZXBhcmVkLCBvd25lcmlkLCBkYmlkKQogICAgICBMRUZUIEpPSU4gcGdfYXV0aGlkIHUgT04g KChwLm93bmVyaWQgPSB1Lm9pZCkpKQogICAgICBMRUZUIEpPSU4gcGdfZGF0YWJhc2UgZCBP TiAoKHAuZGJpZCA9IGQub2lkKSkpOworcGdfcHVibGljYXRpb25fc2VxdWVuY2VzfCBTRUxF Q1QgcC5wdWJuYW1lLAorICAgIG4ubnNwbmFtZSBBUyBzY2hlbWFuYW1lLAorICAgIGMucmVs bmFtZSBBUyBzZXF1ZW5jZW5hbWUKKyAgIEZST00gcGdfcHVibGljYXRpb24gcCwKKyAgICBM QVRFUkFMIHBnX2dldF9wdWJsaWNhdGlvbl9zZXF1ZW5jZXMoKHAucHVibmFtZSk6OnRleHQp IGdwcyhyZWxpZCksCisgICAgKHBnX2NsYXNzIGMKKyAgICAgSk9JTiBwZ19uYW1lc3BhY2Ug biBPTiAoKG4ub2lkID0gYy5yZWxuYW1lc3BhY2UpKSkKKyAgV0hFUkUgKGMub2lkID0gZ3Bz LnJlbGlkKTsKIHBnX3B1YmxpY2F0aW9uX3RhYmxlc3wgU0VMRUNUIHAucHVibmFtZSwKICAg ICBuLm5zcG5hbWUgQVMgc2NoZW1hbmFtZSwKICAgICBjLnJlbG5hbWUgQVMgdGFibGVuYW1l LApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvb2JqZWN0X2FkZHJlc3Muc3Fs IGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvb2JqZWN0X2FkZHJlc3Muc3FsCmluZGV4IDFhNmM2 MWY0OWQ1Li41YzZjZGViMDVkZiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwv b2JqZWN0X2FkZHJlc3Muc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL29iamVjdF9h ZGRyZXNzLnNxbApAQCAtNTAsNiArNTAsNyBAQCBDUkVBVEUgVFJBTlNGT1JNIEZPUiBpbnQg TEFOR1VBR0UgU1FMICgKIFNFVCBjbGllbnRfbWluX21lc3NhZ2VzID0gJ0VSUk9SJzsKIENS RUFURSBQVUJMSUNBVElPTiBhZGRyX3B1YiBGT1IgVEFCTEUgYWRkcl9uc3AuZ2VudGFibGU7 CiBDUkVBVEUgUFVCTElDQVRJT04gYWRkcl9wdWJfc2NoZW1hIEZPUiBUQUJMRVMgSU4gU0NI RU1BIGFkZHJfbnNwOworQ1JFQVRFIFBVQkxJQ0FUSU9OIGFkZHJfcHViX3NjaGVtYTIgRk9S IFNFUVVFTkNFUyBJTiBTQ0hFTUEgYWRkcl9uc3A7CiBSRVNFVCBjbGllbnRfbWluX21lc3Nh Z2VzOwogQ1JFQVRFIFNVQlNDUklQVElPTiByZWdyZXNzX2FkZHJfc3ViIENPTk5FQ1RJT04g JycgUFVCTElDQVRJT04gYmFyIFdJVEggKGNvbm5lY3QgPSBmYWxzZSwgc2xvdF9uYW1lID0g Tk9ORSk7CiBDUkVBVEUgU1RBVElTVElDUyBhZGRyX25zcC5nZW50YWJsZV9zdGF0IE9OIGEs IGIgRlJPTSBhZGRyX25zcC5nZW50YWJsZTsKQEAgLTIwNiw3ICsyMDcsOCBAQCBXSVRIIG9i amVjdHMgKHR5cGUsIG5hbWUsIGFyZ3MpIEFTIChWQUxVRVMKICAgICAoJ3RyYW5zZm9ybScs ICd7aW50fScsICd7c3FsfScpLAogICAgICgnYWNjZXNzIG1ldGhvZCcsICd7YnRyZWV9Jywg J3t9JyksCiAgICAgKCdwdWJsaWNhdGlvbicsICd7YWRkcl9wdWJ9JywgJ3t9JyksCi0gICAg KCdwdWJsaWNhdGlvbiBuYW1lc3BhY2UnLCAne2FkZHJfbnNwfScsICd7YWRkcl9wdWJfc2No ZW1hfScpLAorICAgICgncHVibGljYXRpb24gbmFtZXNwYWNlJywgJ3thZGRyX25zcH0nLCAn e2FkZHJfcHViX3NjaGVtYSwgdH0nKSwKKyAgICAoJ3B1YmxpY2F0aW9uIG5hbWVzcGFjZScs ICd7YWRkcl9uc3B9JywgJ3thZGRyX3B1Yl9zY2hlbWEyLCBzfScpLAogICAgICgncHVibGlj YXRpb24gcmVsYXRpb24nLCAne2FkZHJfbnNwLCBnZW50YWJsZX0nLCAne2FkZHJfcHVifScp LAogICAgICgnc3Vic2NyaXB0aW9uJywgJ3tyZWdyZXNzX2FkZHJfc3VifScsICd7fScpLAog ICAgICgnc3RhdGlzdGljcyBvYmplY3QnLCAne2FkZHJfbnNwLCBnZW50YWJsZV9zdGF0fScs ICd7fScpCkBAIC0yMjcsNiArMjI5LDcgQEAgT1JERVIgQlkgYWRkcjEuY2xhc3NpZCwgYWRk cjEub2JqaWQsIGFkZHIxLm9ianN1YmlkOwogRFJPUCBGT1JFSUdOIERBVEEgV1JBUFBFUiBh ZGRyX2ZkdyBDQVNDQURFOwogRFJPUCBQVUJMSUNBVElPTiBhZGRyX3B1YjsKIERST1AgUFVC TElDQVRJT04gYWRkcl9wdWJfc2NoZW1hOworRFJPUCBQVUJMSUNBVElPTiBhZGRyX3B1Yl9z Y2hlbWEyOwogRFJPUCBTVUJTQ1JJUFRJT04gcmVncmVzc19hZGRyX3N1YjsKIAogRFJPUCBT Q0hFTUEgYWRkcl9uc3AgQ0FTQ0FERTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL3B1YmxpY2F0aW9uLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9u LnNxbAppbmRleCBkNTA1MWE1ZTc0Ni4uMDE2YjU4YzY3ZWMgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNz L3NxbC9wdWJsaWNhdGlvbi5zcWwKQEAgLTI3LDcgKzI3LDcgQEAgQ1JFQVRFIFBVQkxJQ0FU SU9OIHRlc3RwdWJfeHh4IFdJVEggKHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290ID0gJ3Ry dWUnLCBwdWJsaXMKIAogXGRScAogCi1BTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2RlZmF1 bHQgU0VUIChwdWJsaXNoID0gJ2luc2VydCwgdXBkYXRlLCBkZWxldGUnKTsKK0FMVEVSIFBV QkxJQ0FUSU9OIHRlc3RwdWJfZGVmYXVsdCBTRVQgKHB1Ymxpc2ggPSAnaW5zZXJ0LCB1cGRh dGUsIGRlbGV0ZSwgc2VxdWVuY2UnKTsKIAogXGRScAogCkBAIC00Niw2ICs0Niw4IEBAIEFM VEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yYWxsdGFibGVzIFNFVCAocHVibGlzaCA9ICdp bnNlcnQsIHVwZGF0ZScpOwogQ1JFQVRFIFRBQkxFIHRlc3RwdWJfdGJsMiAoaWQgc2VyaWFs IHByaW1hcnkga2V5LCBkYXRhIHRleHQpOwogLS0gZmFpbCAtIGNhbid0IGFkZCB0byBmb3Ig YWxsIHRhYmxlcyBwdWJsaWNhdGlvbgogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3Jh bGx0YWJsZXMgQUREIFRBQkxFIHRlc3RwdWJfdGJsMjsKKy0tIGZhaWwgLSBjYW4ndCBhZGQg YSB0YWJsZSB1c2luZyBBREQgU0VRVUVOQ0UgY29tbWFuZAorQUxURVIgUFVCTElDQVRJT04g dGVzdHB1Yl9mb3JhbGx0YWJsZXMgQUREIFNFUVVFTkNFIHRlc3RwdWJfdGJsMjsKIC0tIGZh aWwgLSBjYW4ndCBkcm9wIGZyb20gYWxsIHRhYmxlcyBwdWJsaWNhdGlvbgogQUxURVIgUFVC TElDQVRJT04gdGVzdHB1Yl9mb3JhbGx0YWJsZXMgRFJPUCBUQUJMRSB0ZXN0cHViX3RibDI7 CiAtLSBmYWlsIC0gY2FuJ3QgYWRkIHRvIGZvciBhbGwgdGFibGVzIHB1YmxpY2F0aW9uCkBA IC0xMTcsNiArMTE5LDE4OCBAQCBSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOwogRFJPUCBU QUJMRSB0ZXN0cHViX3RibDMsIHRlc3RwdWJfdGJsM2E7CiBEUk9QIFBVQkxJQ0FUSU9OIHRl c3RwdWIzLCB0ZXN0cHViNDsKIAorLS0tIGFkZGluZyBzZXF1ZW5jZXMKK0NSRUFURSBTRVFV RU5DRSB0ZXN0cHViX3NlcTA7CitDUkVBVEUgU0VRVUVOQ0UgcHViX3Rlc3QudGVzdHB1Yl9z ZXExOworCitTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7CitDUkVBVEUgUFVC TElDQVRJT04gdGVzdHB1Yl9mb3JhbGxzZXF1ZW5jZXMgRk9SIEFMTCBTRVFVRU5DRVMgV0lU SCAocHVibGlzaCA9ICdzZXF1ZW5jZScpOworUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsK K0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yYWxsc2VxdWVuY2VzIFNFVCAocHVibGlz aCA9ICdpbnNlcnQsIHNlcXVlbmNlJyk7CisKK0NSRUFURSBTRVFVRU5DRSB0ZXN0cHViX3Nl cTI7CistLSBmYWlsIC0gY2FuJ3QgYWRkIHRvIGZvciBhbGwgc2VxdWVuY2VzIHB1YmxpY2F0 aW9uCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcmFsbHNlcXVlbmNlcyBBREQgU0VR VUVOQ0UgdGVzdHB1Yl9zZXEyOworLS0gZmFpbCAtIGNhbid0IGRyb3AgZnJvbSBhbGwgc2Vx dWVuY2VzIHB1YmxpY2F0aW9uCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcmFsbHNl cXVlbmNlcyBEUk9QIFNFUVVFTkNFIHRlc3RwdWJfc2VxMjsKKy0tIGZhaWwgLSBjYW4ndCBh ZGQgdG8gZm9yIGFsbCBzZXF1ZW5jZXMgcHVibGljYXRpb24KK0FMVEVSIFBVQkxJQ0FUSU9O IHRlc3RwdWJfZm9yYWxsc2VxdWVuY2VzIFNFVCBTRVFVRU5DRSBwdWJfdGVzdC50ZXN0cHVi X3NlcTE7CisKKy0tIGZhaWwgLSBjYW4ndCBhZGQgc2NoZW1hIHRvICdGT1IgQUxMIFNFUVVF TkNFUycgcHVibGljYXRpb24KK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yYWxsc2Vx dWVuY2VzIEFERCBTRVFVRU5DRVMgSU4gU0NIRU1BIHB1Yl90ZXN0OworLS0gZmFpbCAtIGNh bid0IGRyb3Agc2NoZW1hIGZyb20gJ0ZPUiBBTEwgU0VRVUVOQ0VTJyBwdWJsaWNhdGlvbgor QUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JhbGxzZXF1ZW5jZXMgRFJPUCBTRVFVRU5D RVMgSU4gU0NIRU1BIHB1Yl90ZXN0OworLS0gZmFpbCAtIGNhbid0IHNldCBzY2hlbWEgdG8g J0ZPUiBBTEwgU0VRVUVOQ0VTJyBwdWJsaWNhdGlvbgorQUxURVIgUFVCTElDQVRJT04gdGVz dHB1Yl9mb3JhbGxzZXF1ZW5jZXMgU0VUIFNFUVVFTkNFUyBJTiBTQ0hFTUEgcHViX3Rlc3Q7 CisKK1NFVCBjbGllbnRfbWluX21lc3NhZ2VzID0gJ0VSUk9SJzsKK0NSRUFURSBQVUJMSUNB VElPTiB0ZXN0cHViX2ZvcnNlcXVlbmNlIEZPUiBTRVFVRU5DRSB0ZXN0cHViX3NlcTA7CitS RVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOworLS0gc2hvdWxkIGJlIGFibGUgdG8gYWRkIHNj aGVtYSB0byAnRk9SIFNFUVVFTkNFJyBwdWJsaWNhdGlvbgorQUxURVIgUFVCTElDQVRJT04g dGVzdHB1Yl9mb3JzZXF1ZW5jZSBBREQgU0VRVUVOQ0VTIElOIFNDSEVNQSBwdWJfdGVzdDsK K1xkUnArIHRlc3RwdWJfZm9yc2VxdWVuY2UKKy0tIGFkZCBzZXF1ZW5jZSBmcm9tIHRoZSBz Y2hlbWEgd2UgYWxyZWFkeSBhZGRlZAorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3Jz ZXF1ZW5jZSBBREQgU0VRVUVOQ0UgcHViX3Rlc3QudGVzdHB1Yl9zZXExOworLS0gZmFpbCAt IGNhbid0IGFkZCBzZXF1ZW5jZSB1c2luZyBBREQgVEFCTEUgY29tbWFuZAorQUxURVIgUFVC TElDQVRJT04gdGVzdHB1Yl9mb3JzZXF1ZW5jZSBBREQgVEFCTEUgcHViX3Rlc3QudGVzdHB1 Yl9zZXExOworLS0gc2hvdWxkIGJlIGFibGUgdG8gZHJvcCBzY2hlbWEgZnJvbSAnRk9SIFNF UVVFTkNFJyBwdWJsaWNhdGlvbgorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JzZXF1 ZW5jZSBEUk9QIFNFUVVFTkNFUyBJTiBTQ0hFTUEgcHViX3Rlc3Q7CitcZFJwKyB0ZXN0cHVi X2ZvcnNlcXVlbmNlCistLSBzaG91bGQgYmUgYWJsZSB0byBzZXQgc2NoZW1hIHRvICdGT1Ig U0VRVUVOQ0UnIHB1YmxpY2F0aW9uCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnNl cXVlbmNlIFNFVCBTRVFVRU5DRVMgSU4gU0NIRU1BIHB1Yl90ZXN0OworXGRScCsgdGVzdHB1 Yl9mb3JzZXF1ZW5jZQorCitTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7CitD UkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JzY2hlbWEgRk9SIFNFUVVFTkNFUyBJTiBT Q0hFTUEgcHViX3Rlc3Q7CitSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOworLS0gc2hvdWxk IGJlIGFibGUgdG8gc2V0IHNlcXVlbmNlIHRvIHNjaGVtYSBwdWJsaWNhdGlvbgorQUxURVIg UFVCTElDQVRJT04gdGVzdHB1Yl9mb3JzY2hlbWEgU0VUIFNFUVVFTkNFIHB1Yl90ZXN0LnRl c3RwdWJfc2VxMTsKK1xkUnArIHRlc3RwdWJfZm9yc2NoZW1hCisKK1NFTEVDVCBwdWJuYW1l LCBwdWJhbGx0YWJsZXMsIHB1YmFsbHNlcXVlbmNlcyBGUk9NIHBnX3B1YmxpY2F0aW9uIFdI RVJFIHB1Ym5hbWUgPSAndGVzdHB1Yl9mb3JhbGxzZXF1ZW5jZXMnOworXGQrIHB1Yl90ZXN0 LnRlc3RwdWJfc2VxMQorXGRScCsgdGVzdHB1Yl9mb3JhbGxzZXF1ZW5jZXMKK0RST1AgU0VR VUVOQ0UgdGVzdHB1Yl9zZXEwLCBwdWJfdGVzdC50ZXN0cHViX3NlcTEsIHRlc3RwdWJfc2Vx MjsKK0RST1AgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JhbGxzZXF1ZW5jZXMsIHRlc3RwdWJf Zm9yc2VxdWVuY2UsIHRlc3RwdWJfZm9yc2NoZW1hOworCisKKy0tIHB1YmxpY2F0aW9uIHRl c3RpbmcgbXVsdGlwbGUgc2VxdWVuY2VzIGF0IHRoZSBzYW1lIHRpbWUKK0NSRUFURSBTRVFV RU5DRSB0ZXN0cHViX3NlcTE7CitDUkVBVEUgU0VRVUVOQ0UgdGVzdHB1Yl9zZXEyOworCitT RVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7CitDUkVBVEUgUFVCTElDQVRJT04g dGVzdHB1Yl9tdWx0aSBGT1IgU0VRVUVOQ0UgdGVzdHB1Yl9zZXExLCB0ZXN0cHViX3NlcTI7 CitSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOworCitcZFJwKyB0ZXN0cHViX211bHRpCisK K0RST1AgUFVCTElDQVRJT04gdGVzdHB1Yl9tdWx0aTsKK0RST1AgU0VRVUVOQ0UgdGVzdHB1 Yl9zZXExOworRFJPUCBTRVFVRU5DRSB0ZXN0cHViX3NlcTI7CisKKworLS0gUHVibGljYXRp b24gbWl4aW5nIHRhYmxlcyBhbmQgc2VxdWVuY2VzCitTRVQgY2xpZW50X21pbl9tZXNzYWdl cyA9ICdFUlJPUic7CitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9taXg7CitSRVNFVCBj bGllbnRfbWluX21lc3NhZ2VzOworCitDUkVBVEUgU0VRVUVOQ0UgdGVzdHB1Yl9zZXExOwor Q1JFQVRFIFNFUVVFTkNFIHB1Yl90ZXN0LnRlc3RwdWJfc2VxMjsKKworQUxURVIgUFVCTElD QVRJT04gdGVzdHB1Yl9taXggQUREIFNFUVVFTkNFIHRlc3RwdWJfc2VxMSwgVEFCTEUgdGVz dHB1Yl90YmwxOworXGRScCsgdGVzdHB1Yl9taXgKKworQUxURVIgUFVCTElDQVRJT04gdGVz dHB1Yl9taXggQUREIFNFUVVFTkNFUyBJTiBTQ0hFTUEgcHViX3Rlc3QsIFRBQkxFUyBJTiBT Q0hFTUEgcHViX3Rlc3Q7CitcZFJwKyB0ZXN0cHViX21peAorCitBTFRFUiBQVUJMSUNBVElP TiB0ZXN0cHViX21peCBEUk9QIFNFUVVFTkNFUyBJTiBTQ0hFTUEgcHViX3Rlc3Q7CitcZFJw KyB0ZXN0cHViX21peAorCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX21peCBEUk9QIFRB QkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3Q7CitcZFJwKyB0ZXN0cHViX21peAorCitEUk9QIFBV QkxJQ0FUSU9OIHRlc3RwdWJfbWl4OworRFJPUCBTRVFVRU5DRSB0ZXN0cHViX3NlcTE7CitE Uk9QIFNFUVVFTkNFIHB1Yl90ZXN0LnRlc3RwdWJfc2VxMjsKKworCistLSBtYWtlIHN1cmUg d2UgcmVwbGljYXRlIG9ubHkgdGhlIGNvcnJlY3QgcmVsYXRpb24gdHlwZQorQ1JFQVRFIFND SEVNQSBwdWJfdGVzdDE7CitDUkVBVEUgU0VRVUVOQ0UgcHViX3Rlc3QxLnRlc3Rfc2VxMTsK K0NSRUFURSBUQUJMRSBwdWJfdGVzdDEudGVzdF90YmwxIChhIGludCBwcmltYXJ5IGtleSwg YiBpbnQpOworCitDUkVBVEUgU0NIRU1BIHB1Yl90ZXN0MjsKK0NSRUFURSBTRVFVRU5DRSBw dWJfdGVzdDIudGVzdF9zZXEyOworQ1JFQVRFIFRBQkxFIHB1Yl90ZXN0Mi50ZXN0X3RibDIg KGEgaW50IHByaW1hcnkga2V5LCBiIGludCk7CisKK1NFVCBjbGllbnRfbWluX21lc3NhZ2Vz ID0gJ0VSUk9SJzsKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX3NjaGVtYXM7CitSRVNF VCBjbGllbnRfbWluX21lc3NhZ2VzOworCistLSBhZGQgdGFibGVzIGZyb20gb25lIHNjaGVt YSwgc2VxdWVuY2VzIGZyb20gdGhlIG90aGVyCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHVi X3NjaGVtYXMgQUREIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QyOworQUxURVIgUFVCTElD QVRJT04gdGVzdHB1Yl9zY2hlbWFzIEFERCBTRVFVRU5DRVMgSU4gU0NIRU1BIHB1Yl90ZXN0 MTsKKworXGRScCsgdGVzdHB1Yl9zY2hlbWFzCisKK1xkbisgcHViX3Rlc3QxCitcZG4rIHB1 Yl90ZXN0MgorCitcZCsgcHViX3Rlc3QxLnRlc3Rfc2VxMTsKK1xkKyBwdWJfdGVzdDEudGVz dF90YmwxOworCitcZCsgcHViX3Rlc3QyLnRlc3Rfc2VxMjsKK1xkKyBwdWJfdGVzdDIudGVz dF90YmwyOworCistLSBhZGQgdGhlIG90aGVyIG9iamVjdCB0eXBlIGZyb20gZWFjaCBzY2hl bWEKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfc2NoZW1hcyBBREQgVEFCTEVTIElOIFND SEVNQSBwdWJfdGVzdDE7CitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX3NjaGVtYXMgQURE IFNFUVVFTkNFUyBJTiBTQ0hFTUEgcHViX3Rlc3QyOworCitcZFJwKyB0ZXN0cHViX3NjaGVt YXMKKworXGRuKyBwdWJfdGVzdDEKK1xkbisgcHViX3Rlc3QyCisKK1xkKyBwdWJfdGVzdDEu dGVzdF9zZXExOworXGQrIHB1Yl90ZXN0MS50ZXN0X3RibDE7CisKK1xkKyBwdWJfdGVzdDIu dGVzdF9zZXEyOworXGQrIHB1Yl90ZXN0Mi50ZXN0X3RibDI7CisKKy0tIG5vdyBkcm9wIHRo ZSBvYmplY3QgdHlwZSBhZGRlZCBmaXJzdAorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9z Y2hlbWFzIERST1AgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDI7CitBTFRFUiBQVUJMSUNB VElPTiB0ZXN0cHViX3NjaGVtYXMgRFJPUCBTRVFVRU5DRVMgSU4gU0NIRU1BIHB1Yl90ZXN0 MTsKKworXGRScCsgdGVzdHB1Yl9zY2hlbWFzCisKK1xkbisgcHViX3Rlc3QxCitcZG4rIHB1 Yl90ZXN0MgorCitcZCsgcHViX3Rlc3QxLnRlc3Rfc2VxMTsKK1xkKyBwdWJfdGVzdDEudGVz dF90YmwxOworCitcZCsgcHViX3Rlc3QyLnRlc3Rfc2VxMjsKK1xkKyBwdWJfdGVzdDIudGVz dF90YmwyOworCistLSBhZGQgYSBkaWZmZXJlbnQgc2NoZW1hIChub3QgaW5jbHVkaW5nIHRo ZSBhbHJlYWR5IHB1Ymxpc2hlZCBzZXF1ZW5jZXMpCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0 cHViX3NjaGVtYXMgQUREIFRBQkxFIHB1Yl90ZXN0Mi50ZXN0X3RibDI7CitBTFRFUiBQVUJM SUNBVElPTiB0ZXN0cHViX3NjaGVtYXMgQUREIFNFUVVFTkNFIHB1Yl90ZXN0MS50ZXN0X3Nl cTE7CisKK1xkUnArIHRlc3RwdWJfc2NoZW1hcworCitcZCsgcHViX3Rlc3QxLnRlc3Rfc2Vx MTsKK1xkKyBwdWJfdGVzdDEudGVzdF90YmwxOworCitcZCsgcHViX3Rlc3QyLnRlc3Rfc2Vx MjsKK1xkKyBwdWJfdGVzdDIudGVzdF90YmwyOworCistLSBub3cgZHJvcCB0aGUgZXhwbGlj aXRseSBhZGRlZCBvYmplY3RzIGFnYWluCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX3Nj aGVtYXMgRFJPUCBUQUJMRSBwdWJfdGVzdDIudGVzdF90YmwyOworQUxURVIgUFVCTElDQVRJ T04gdGVzdHB1Yl9zY2hlbWFzIERST1AgU0VRVUVOQ0UgcHViX3Rlc3QxLnRlc3Rfc2VxMTsK KworXGRScCsgdGVzdHB1Yl9zY2hlbWFzCisKK1xkKyBwdWJfdGVzdDEudGVzdF9zZXExOwor XGQrIHB1Yl90ZXN0MS50ZXN0X3RibDE7CisKK1xkKyBwdWJfdGVzdDIudGVzdF9zZXEyOwor XGQrIHB1Yl90ZXN0Mi50ZXN0X3RibDI7CisKK0RST1AgUFVCTElDQVRJT04gdGVzdHB1Yl9z Y2hlbWFzOworRFJPUCBUQUJMRSBwdWJfdGVzdDEudGVzdF90YmwxLCBwdWJfdGVzdDIudGVz dF90YmwyOworRFJPUCBTRVFVRU5DRSBwdWJfdGVzdDEudGVzdF9zZXExLCBwdWJfdGVzdDIu dGVzdF9zZXEyOworRFJPUCBTQ0hFTUEgcHViX3Rlc3QxLCBwdWJfdGVzdDI7CisKIC0tIFRl c3RzIGZvciBwYXJ0aXRpb25lZCB0YWJsZXMKIFNFVCBjbGllbnRfbWluX21lc3NhZ2VzID0g J0VSUk9SJzsKIENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnBhcnRlZDsKQEAgLTEw NTIsMzIgKzEyMzYsNTEgQEAgQ1JFQVRFIFNDSEVNQSBzY2gxOwogQ1JFQVRFIFNDSEVNQSBz Y2gyOwogQ1JFQVRFIFRBQkxFIHNjaDEudGJsMSAoYSBpbnQpIFBBUlRJVElPTiBCWSBSQU5H RShhKTsKIENSRUFURSBUQUJMRSBzY2gyLnRibDFfcGFydDEgUEFSVElUSU9OIE9GIHNjaDEu dGJsMSBGT1IgVkFMVUVTIEZST00gKDEpIHRvICgxMCk7CitDUkVBVEUgU0VRVUVOQ0Ugc2No MS5zZXExOworQ1JFQVRFIFNFUVVFTkNFIHNjaDIuc2VxMjsKIC0tIFNjaGVtYSBwdWJsaWNh dGlvbiB0aGF0IGRvZXMgbm90IGluY2x1ZGUgdGhlIHNjaGVtYSB0aGF0IGhhcyB0aGUgcGFy ZW50IHRhYmxlCiBDUkVBVEUgUFVCTElDQVRJT04gcHViIEZPUiBUQUJMRVMgSU4gU0NIRU1B IHNjaDIgV0lUSCAoUFVCTElTSF9WSUFfUEFSVElUSU9OX1JPT1Q9MSk7CitBTFRFUiBQVUJM SUNBVElPTiBwdWIgQUREIFNFUVVFTkNFUyBJTiBTQ0hFTUEgc2NoMjsKIFNFTEVDVCAqIEZS T00gcGdfcHVibGljYXRpb25fdGFibGVzOworU0VMRUNUICogRlJPTSBwZ19wdWJsaWNhdGlv bl9zZXF1ZW5jZXM7CiAKIERST1AgUFVCTElDQVRJT04gcHViOwogLS0gVGFibGUgcHVibGlj YXRpb24gdGhhdCBkb2VzIG5vdCBpbmNsdWRlIHRoZSBwYXJlbnQgdGFibGUKIENSRUFURSBQ VUJMSUNBVElPTiBwdWIgRk9SIFRBQkxFIHNjaDIudGJsMV9wYXJ0MSBXSVRIIChQVUJMSVNI X1ZJQV9QQVJUSVRJT05fUk9PVD0xKTsKK0FMVEVSIFBVQkxJQ0FUSU9OIHB1YiBBREQgU0VR VUVOQ0Ugc2NoMi5zZXEyOwogU0VMRUNUICogRlJPTSBwZ19wdWJsaWNhdGlvbl90YWJsZXM7 CitTRUxFQ1QgKiBGUk9NIHBnX3B1YmxpY2F0aW9uX3NlcXVlbmNlczsKIAogLS0gVGFibGUg cHVibGljYXRpb24gdGhhdCBpbmNsdWRlcyBib3RoIHRoZSBwYXJlbnQgdGFibGUgYW5kIHRo ZSBjaGlsZCB0YWJsZQogQUxURVIgUFVCTElDQVRJT04gcHViIEFERCBUQUJMRSBzY2gxLnRi bDE7CitBTFRFUiBQVUJMSUNBVElPTiBwdWIgQUREIFNFUVVFTkNFIHNjaDEuc2VxMTsKIFNF TEVDVCAqIEZST00gcGdfcHVibGljYXRpb25fdGFibGVzOworU0VMRUNUICogRlJPTSBwZ19w dWJsaWNhdGlvbl9zZXF1ZW5jZXM7CiAKIERST1AgUFVCTElDQVRJT04gcHViOwogLS0gU2No ZW1hIHB1YmxpY2F0aW9uIHRoYXQgZG9lcyBub3QgaW5jbHVkZSB0aGUgc2NoZW1hIHRoYXQg aGFzIHRoZSBwYXJlbnQgdGFibGUKIENSRUFURSBQVUJMSUNBVElPTiBwdWIgRk9SIFRBQkxF UyBJTiBTQ0hFTUEgc2NoMiBXSVRIIChQVUJMSVNIX1ZJQV9QQVJUSVRJT05fUk9PVD0wKTsK K0FMVEVSIFBVQkxJQ0FUSU9OIHB1YiBBREQgU0VRVUVOQ0Ugc2NoMS5zZXExOworU0VMRUNU ICogRlJPTSBwZ19wdWJsaWNhdGlvbl90YWJsZXM7CitTRUxFQ1QgKiBGUk9NIHBnX3B1Ymxp Y2F0aW9uX3NlcXVlbmNlczsKKworRFJPUCBQVUJMSUNBVElPTiBwdWI7CistLSBTZXF1ZW5j ZSBwdWJsaWNhdGlvbgorQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YiBGT1IgU0VRVUVOQ0Ugc2No Mi5zZXEyOwogU0VMRUNUICogRlJPTSBwZ19wdWJsaWNhdGlvbl90YWJsZXM7CitTRUxFQ1Qg KiBGUk9NIHBnX3B1YmxpY2F0aW9uX3NlcXVlbmNlczsKIAogRFJPUCBQVUJMSUNBVElPTiBw dWI7CiAtLSBUYWJsZSBwdWJsaWNhdGlvbiB0aGF0IGRvZXMgbm90IGluY2x1ZGUgdGhlIHBh cmVudCB0YWJsZQogQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YiBGT1IgVEFCTEUgc2NoMi50Ymwx X3BhcnQxIFdJVEggKFBVQkxJU0hfVklBX1BBUlRJVElPTl9ST09UPTApOwogU0VMRUNUICog RlJPTSBwZ19wdWJsaWNhdGlvbl90YWJsZXM7CitTRUxFQ1QgKiBGUk9NIHBnX3B1YmxpY2F0 aW9uX3NlcXVlbmNlczsKIAogLS0gVGFibGUgcHVibGljYXRpb24gdGhhdCBpbmNsdWRlcyBi b3RoIHRoZSBwYXJlbnQgdGFibGUgYW5kIHRoZSBjaGlsZCB0YWJsZQogQUxURVIgUFVCTElD QVRJT04gcHViIEFERCBUQUJMRSBzY2gxLnRibDE7CitBTFRFUiBQVUJMSUNBVElPTiBwdWIg QUREIFNFUVVFTkNFUyBJTiBTQ0hFTUEgc2NoMjsKIFNFTEVDVCAqIEZST00gcGdfcHVibGlj YXRpb25fdGFibGVzOworU0VMRUNUICogRlJPTSBwZ19wdWJsaWNhdGlvbl9zZXF1ZW5jZXM7 CiAKIERST1AgUFVCTElDQVRJT04gcHViOwogRFJPUCBUQUJMRSBzY2gyLnRibDFfcGFydDE7 CkBAIC0xMDkwLDEwICsxMjkzLDM2IEBAIENSRUFURSBUQUJMRSBzY2gxLnRibDFfcGFydDMg KGEgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UoYSk7CiBBTFRFUiBUQUJMRSBzY2gxLnRibDEg QVRUQUNIIFBBUlRJVElPTiBzY2gxLnRibDFfcGFydDMgRk9SIFZBTFVFUyBGUk9NICgyMCkg dG8gKDMwKTsKIENSRUFURSBQVUJMSUNBVElPTiBwdWIgRk9SIFRBQkxFUyBJTiBTQ0hFTUEg c2NoMSBXSVRIIChQVUJMSVNIX1ZJQV9QQVJUSVRJT05fUk9PVD0xKTsKIFNFTEVDVCAqIEZS T00gcGdfcHVibGljYXRpb25fdGFibGVzOworU0VMRUNUICogRlJPTSBwZ19wdWJsaWNhdGlv bl9zZXF1ZW5jZXM7CisKK0RST1AgUFVCTElDQVRJT04gcHViOworLS0gU2NoZW1hIHB1Ymxp Y2F0aW9uCitDUkVBVEUgUFVCTElDQVRJT04gcHViIEZPUiBTRVFVRU5DRSBzY2gyLnNlcTI7 CitTRUxFQ1QgKiBGUk9NIHBnX3B1YmxpY2F0aW9uX3RhYmxlczsKK1NFTEVDVCAqIEZST00g cGdfcHVibGljYXRpb25fc2VxdWVuY2VzOworCitEUk9QIFBVQkxJQ0FUSU9OIHB1YjsKKy0t IFNlcXVlbmNlIHB1YmxpY2F0aW9uCitDUkVBVEUgUFVCTElDQVRJT04gcHViIEZPUiBTRVFV RU5DRVMgSU4gU0NIRU1BIHNjaDI7CitTRUxFQ1QgKiBGUk9NIHBnX3B1YmxpY2F0aW9uX3Rh YmxlczsKK1NFTEVDVCAqIEZST00gcGdfcHVibGljYXRpb25fc2VxdWVuY2VzOworCitBTFRF UiBQVUJMSUNBVElPTiBwdWIgQUREIFNFUVVFTkNFIHNjaDEuc2VxMTsKK1NFTEVDVCAqIEZS T00gcGdfcHVibGljYXRpb25fdGFibGVzOworU0VMRUNUICogRlJPTSBwZ19wdWJsaWNhdGlv bl9zZXF1ZW5jZXM7CisKK0FMVEVSIFBVQkxJQ0FUSU9OIHB1YiBEUk9QIFNFUVVFTkNFIHNj aDEuc2VxMTsKK1NFTEVDVCAqIEZST00gcGdfcHVibGljYXRpb25fdGFibGVzOworU0VMRUNU ICogRlJPTSBwZ19wdWJsaWNhdGlvbl9zZXF1ZW5jZXM7CisKK0FMVEVSIFBVQkxJQ0FUSU9O IHB1YiBBREQgU0VRVUVOQ0VTIElOIFNDSEVNQSBzY2gxOworU0VMRUNUICogRlJPTSBwZ19w dWJsaWNhdGlvbl90YWJsZXM7CitTRUxFQ1QgKiBGUk9NIHBnX3B1YmxpY2F0aW9uX3NlcXVl bmNlczsKIAogUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKIERST1AgUFVCTElDQVRJT04g cHViOwogRFJPUCBUQUJMRSBzY2gxLnRibDE7CitEUk9QIFNFUVVFTkNFIHNjaDEuc2VxMSwg c2NoMi5zZXEyOwogRFJPUCBTQ0hFTUEgc2NoMSBjYXNjYWRlOwogRFJPUCBTQ0hFTUEgc2No MiBjYXNjYWRlOwogCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzRf c2VxdWVuY2VzLnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDM0X3NlcXVlbmNlcy5w bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMTc0NGFjYWQyMWQK LS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzRfc2VxdWVu Y2VzLnBsCkBAIC0wLDAgKzEsMjA3IEBACisKKyMgQ29weXJpZ2h0IChjKSAyMDIxLCBQb3N0 Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorCisjIFRoaXMgdGVzdHMgdGhhdCBz ZXF1ZW5jZXMgYXJlIHJlcGxpY2F0ZWQgY29ycmVjdGx5IGJ5IGxvZ2ljYWwgcmVwbGljYXRp b24KK3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3M7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6 Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKK3VzZSBUZXN0OjpNb3Jl OworCisjIEluaXRpYWxpemUgcHVibGlzaGVyIG5vZGUKK215ICRub2RlX3B1Ymxpc2hlciA9 IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygncHVibGlzaGVyJyk7Ciskbm9kZV9w dWJsaXNoZXItPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAnbG9naWNhbCcpOworJG5vZGVf cHVibGlzaGVyLT5zdGFydDsKKworIyBDcmVhdGUgc3Vic2NyaWJlciBub2RlCitteSAkbm9k ZV9zdWJzY3JpYmVyID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdzdWJzY3Jp YmVyJyk7Ciskbm9kZV9zdWJzY3JpYmVyLT5pbml0KGFsbG93c19zdHJlYW1pbmcgPT4gJ2xv Z2ljYWwnKTsKKyRub2RlX3N1YnNjcmliZXItPnN0YXJ0OworCisjIENyZWF0ZSBzb21lIHBy ZWV4aXN0aW5nIGNvbnRlbnQgb24gcHVibGlzaGVyCitteSAkZGRsID0gcXEoCisJQ1JFQVRF IFRBQkxFIHNlcV90ZXN0ICh2IEJJR0lOVCk7CisJQ1JFQVRFIFNFUVVFTkNFIHM7CispOwor CisjIFNldHVwIHN0cnVjdHVyZSBvbiB0aGUgcHVibGlzaGVyCiskbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCAkZGRsKTsKKworIyBDcmVhdGUgc29tZSB0aGUgc2Ft ZSBzdHJ1Y3R1cmUgb24gc3Vic2NyaWJlciwgYW5kIGFuIGV4dHJhIHNlcXVlbmNlIHRoYXQK KyMgd2UnbGwgY3JlYXRlIG9uIHRoZSBwdWJsaXNoZXIgbGF0ZXIKKyRkZGwgPSBxcSgKKwlD UkVBVEUgVEFCTEUgc2VxX3Rlc3QgKHYgQklHSU5UKTsKKwlDUkVBVEUgU0VRVUVOQ0UgczsK KwlDUkVBVEUgU0VRVUVOQ0UgczI7CispOworCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgJGRkbCk7CisKKyMgU2V0dXAgbG9naWNhbCByZXBsaWNhdGlvbgor bXkgJHB1Ymxpc2hlcl9jb25uc3RyID0gJG5vZGVfcHVibGlzaGVyLT5jb25uc3RyIC4gJyBk Ym5hbWU9cG9zdGdyZXMnOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkiQ1JFQVRFIFBVQkxJQ0FUSU9OIHNlcV9wdWIiKTsKKworJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgUFVCTElDQVRJT04gc2VxX3B1YiBB REQgU0VRVUVOQ0UgcyIpOworCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkiQ1JFQVRFIFNVQlNDUklQVElPTiBzZXFfc3ViIENPTk5FQ1RJT04gJyRwdWJs aXNoZXJfY29ubnN0cicgUFVCTElDQVRJT04gc2VxX3B1YiIKKyk7CisKKyRub2RlX3B1Ymxp c2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgnc2VxX3N1YicpOworCisjIFdhaXQgZm9yIGluaXRp YWwgc3luYyB0byBmaW5pc2ggYXMgd2VsbAorbXkgJHN5bmNlZF9xdWVyeSA9CisgICJTRUxF Q1QgY291bnQoMSkgPSAwIEZST00gcGdfc3Vic2NyaXB0aW9uX3JlbCBXSEVSRSBzcnN1YnN0 YXRlIE5PVCBJTiAoJ3MnLCAncicpOyI7Ciskbm9kZV9zdWJzY3JpYmVyLT5wb2xsX3F1ZXJ5 X3VudGlsKCdwb3N0Z3JlcycsICRzeW5jZWRfcXVlcnkpCisgIG9yIGRpZSAiVGltZWQgb3V0 IHdoaWxlIHdhaXRpbmcgZm9yIHN1YnNjcmliZXIgdG8gc3luY2hyb25pemUgZGF0YSI7CisK KyMgSW5zZXJ0IGluaXRpYWwgdGVzdCBkYXRhCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNx bCgKKwkncG9zdGdyZXMnLCBxcSgKKwktLSBnZW5lcmF0ZSBhIG51bWJlciBvZiB2YWx1ZXMg dXNpbmcgdGhlIHNlcXVlbmNlCisJSU5TRVJUIElOVE8gc2VxX3Rlc3QgU0VMRUNUIG5leHR2 YWwoJ3MnKSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwMCk7CispKTsKKworJG5vZGVfcHVi bGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCdzZXFfc3ViJyk7CisKKyMgQ2hlY2sgdGhlIGRh dGEgb24gc3Vic2NyaWJlcgorbXkgJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgKKwkncG9zdGdyZXMnLCBxcSgKKwlTRUxFQ1QgKiBGUk9NIHM7CispKTsKKworaXMo ICRyZXN1bHQsICcxMzJ8MHx0JywKKwknaW5pdGlhbCB0ZXN0IGRhdGEgcmVwbGljYXRlZCcp OworCisKKyMgYWR2YW5jZSB0aGUgc2VxdWVuY2UgaW4gYSByb2xsZWQtYmFjayB0cmFuc2Fj dGlvbiAtIHRoZSByb2xsYmFjaworIyBkb2VzIG5vdCB3YWl0IGZvciB0aGUgcmVwbGljYXRp b24sIHNvIHdlIGNvdWxkIHNlZSBhbnkgaW50ZXJtZWRpYXRlIHN0YXRlCisjIHNvIGRvIHNv bWV0aGluZyBlbHNlIGFmdGVyIHRoZSB0ZXN0LCB0byBlbnN1cmUgd2Ugd2FpdCBmb3IgZXZl cnl0aGluZworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXEo CisJQkVHSU47CisJSU5TRVJUIElOVE8gc2VxX3Rlc3QgU0VMRUNUIG5leHR2YWwoJ3MnKSBG Uk9NIGdlbmVyYXRlX3NlcmllcygxLDEwMCk7CisJUk9MTEJBQ0s7CisJSU5TRVJUIElOVE8g c2VxX3Rlc3QgVkFMVUVTICgtMSk7CispKTsKKworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zv cl9jYXRjaHVwKCdzZXFfc3ViJyk7CisKKyMgQ2hlY2sgdGhlIGRhdGEgb24gc3Vic2NyaWJl cgorJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMn LCBxcSgKKwlTRUxFQ1QgKiBGUk9NIHM7CispKTsKKworaXMoICRyZXN1bHQsICcyMzF8MHx0 JywKKwknYWR2YW5jZSBzZXF1ZW5jZSBpbiByb2xsZWQtYmFjayB0cmFuc2FjdGlvbicpOwor CisKKyMgY3JlYXRlIGEgbmV3IHNlcXVlbmNlIGFuZCByb2xsIGl0IGJhY2sgLSBzaG91bGQg bm90IGJlIHJlcGxpY2F0ZWQsIGR1ZSB0bworIyB0aGUgdHJhbnNhY3Rpb25hbCBiZWhhdmlv cgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXEoCisJQkVH SU47CisJQ1JFQVRFIFNFUVVFTkNFIHMyOworCUFMVEVSIFBVQkxJQ0FUSU9OIHNlcV9wdWIg QUREIFNFUVVFTkNFIHMyOworCUlOU0VSVCBJTlRPIHNlcV90ZXN0IFNFTEVDVCBuZXh0dmFs KCdzMicpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTAwKTsKKwlST0xMQkFDSzsKKykpOwor CisjIFJlZnJlc2ggcHVibGljYXRpb24gYWZ0ZXIgc2VxdWVuY2UgaXMgYWRkZWQgdG8gcHVi bGljYXRpb24KKyRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJJ3Bv c3RncmVzJywgcXEoCisJQUxURVIgU1VCU0NSSVBUSU9OIHNlcV9zdWIgUkVGUkVTSCBQVUJM SUNBVElPTgorKSk7CisKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgnc2Vx X3N1YicpOworCisjIENoZWNrIHRoZSBkYXRhIG9uIHN1YnNjcmliZXIKKyRyZXN1bHQgPSAk bm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXEoCisJU0VMRUNU ICogRlJPTSBzMjsKKykpOworCitpcyggJHJlc3VsdCwgJzF8MHxmJywKKwknY3JlYXRlIG5l dyBzZXF1ZW5jZSBhbmQgcm9sbCBpdCBiYWNrJyk7CisKKworIyBjcmVhdGUgYSBuZXcgc2Vx dWVuY2UsIGFkdmFuY2UgaXQgaW4gYSByb2xsZWQtYmFjayB0cmFuc2FjdGlvbiwgYnV0IGNv bW1pdAorIyB0aGUgY3JlYXRlIC0gdGhlIGFkdmFuY2Ugc2hvdWxkIGJlIHJlcGxpY2F0ZWQg bmV2ZXJ0aGVsZXNzCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMn LCBxcSgKKwlCRUdJTjsKKwlBTFRFUiBTRVFVRU5DRSBzIFJFU1RBUlQgV0lUSCAxMDAwOwor CVNBVkVQT0lOVCBzcDE7CisJSU5TRVJUIElOVE8gc2VxX3Rlc3QgU0VMRUNUIG5leHR2YWwo J3MnKSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwMCk7CisJUk9MTEJBQ0sgVE8gc3AxOwor CUNPTU1JVDsKKykpOworCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ3Nl cV9zdWInKTsKKworIyBXYWl0IGZvciBzeW5jIG9mIHRoZSBzZWNvbmQgc2VxdWVuY2Ugd2Ug anVzdCBhZGRlZCB0byBmaW5pc2gKKyRzeW5jZWRfcXVlcnkgPQorICAiU0VMRUNUIGNvdW50 KDEpID0gMCBGUk9NIHBnX3N1YnNjcmlwdGlvbl9yZWwgV0hFUkUgc3JzdWJzdGF0ZSBOT1Qg SU4gKCdzJywgJ3InKTsiOworJG5vZGVfc3Vic2NyaWJlci0+cG9sbF9xdWVyeV91bnRpbCgn cG9zdGdyZXMnLCAkc3luY2VkX3F1ZXJ5KQorICBvciBkaWUgIlRpbWVkIG91dCB3aGlsZSB3 YWl0aW5nIGZvciBzdWJzY3JpYmVyIHRvIHN5bmNocm9uaXplIGRhdGEiOworCisjIENoZWNr IHRoZSBkYXRhIG9uIHN1YnNjcmliZXIKKyRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXEoCisJU0VMRUNUICogRlJPTSBzOworKSk7CisK K2lzKCAkcmVzdWx0LCAnMTEzMXwwfHQnLAorCSdjcmVhdGUgc2VxdWVuY2UsIGFkdmFuY2Ug aXQgaW4gcm9sbGVkLWJhY2sgdHJhbnNhY3Rpb24sIGJ1dCBjb21taXQgdGhlIGNyZWF0ZScp OworCisKKyMgYWR2YW5jZSB0aGUgbmV3IHNlcXVlbmNlIGluIGEgdHJhbnNhY3Rpb24sIGFu ZCByb2xsIGl0IGJhY2sgLSB0aGUgcm9sbGJhY2sKKyMgZG9lcyBub3Qgd2FpdCBmb3IgdGhl IHJlcGxpY2F0aW9uLCBzbyB3ZSBjb3VsZCBzZWUgYW55IGludGVybWVkaWF0ZSBzdGF0ZQor IyBzbyBkbyBzb21ldGhpbmcgZWxzZSBhZnRlciB0aGUgdGVzdCwgdG8gZW5zdXJlIHdlIHdh aXQgZm9yIGV2ZXJ5dGhpbmcKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0 Z3JlcycsIHFxKAorCUJFR0lOOworCUlOU0VSVCBJTlRPIHNlcV90ZXN0IFNFTEVDVCBuZXh0 dmFsKCdzJykgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMDApOworCVJPTExCQUNLOworCUlO U0VSVCBJTlRPIHNlcV90ZXN0IFZBTFVFUyAoLTEpOworKSk7CisKKyRub2RlX3B1Ymxpc2hl ci0+d2FpdF9mb3JfY2F0Y2h1cCgnc2VxX3N1YicpOworCisjIENoZWNrIHRoZSBkYXRhIG9u IHN1YnNjcmliZXIKKyRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJ J3Bvc3RncmVzJywgcXEoCisJU0VMRUNUICogRlJPTSBzOworKSk7CisKK2lzKCAkcmVzdWx0 LCAnMTIzMHwwfHQnLAorCSdhZHZhbmNlIHRoZSBuZXcgc2VxdWVuY2UgaW4gYSB0cmFuc2Fj dGlvbiBhbmQgcm9sbCBpdCBiYWNrJyk7CisKKworIyBhZHZhbmNlIHRoZSBzZXF1ZW5jZSBp biBhIHN1YnRyYW5zYWN0aW9uIC0gdGhlIHN1YnRyYW5zYWN0aW9uIGdldHMgcm9sbGVkCisj IGJhY2ssIGJ1dCBjb21taXQgdGhlIG1haW4gb25lIC0gdGhlIGNoYW5nZXMgc2hvdWxkIHN0 aWxsIGJlIHJlcGxpY2F0ZWQKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0 Z3JlcycsIHFxKAorCUJFR0lOOworCVNBVkVQT0lOVCBzMTsKKwlJTlNFUlQgSU5UTyBzZXFf dGVzdCBTRUxFQ1QgbmV4dHZhbCgncycpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTAwKTsK KwlST0xMQkFDSyBUTyBzMTsKKwlDT01NSVQ7CispKTsKKworJG5vZGVfcHVibGlzaGVyLT53 YWl0X2Zvcl9jYXRjaHVwKCdzZXFfc3ViJyk7CisKKyMgQ2hlY2sgdGhlIGRhdGEgb24gc3Vi c2NyaWJlcgorJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgKKwkncG9z dGdyZXMnLCBxcSgKKwlTRUxFQ1QgKiBGUk9NIHM7CispKTsKKworaXMoICRyZXN1bHQsICcx MzI5fDB8dCcsCisJJ2FkdmFuY2Ugc2VxdWVuY2UgaW4gYSBzdWJ0cmFuc2FjdGlvbicpOwor CisKK2RvbmVfdGVzdGluZygpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5 cGVkZWZzLmxpc3QgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAppbmRleCA3 M2I3YjM3YTVlZS4uNDIzMzFiM2QzODQgMTAwNjQ0Ci0tLSBhL3NyYy90b29scy9wZ2luZGVu dC90eXBlZGVmcy5saXN0CisrKyBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0 CkBAIC0xNTAwLDYgKzE1MDAsNyBAQCBMb2dpY2FsUmVwUmVsSWQKIExvZ2ljYWxSZXBSZWxN YXBFbnRyeQogTG9naWNhbFJlcFJlbGF0aW9uCiBMb2dpY2FsUmVwUm9sbGJhY2tQcmVwYXJl ZFR4bkRhdGEKK0xvZ2ljYWxSZXBTZXF1ZW5jZQogTG9naWNhbFJlcFN0cmVhbUFib3J0RGF0 YQogTG9naWNhbFJlcFR1cGxlRGF0YQogTG9naWNhbFJlcFR5cAotLSAKMi40Mi4wCgo= --------------n6sjwQvphvF4EuHWavlOIMm0 Content-Type: text/x-patch; charset=UTF-8; name="v20231127-3-0006-log-XID-instead-of-a-boolean-flag.patch" Content-Disposition: attachment; filename="v20231127-3-0006-log-XID-instead-of-a-boolean-flag.patch" Content-Transfer-Encoding: base64 RnJvbSAzOTBhMGYxZjllNjg2NDI0NjkyNTM4MThlOGExZGEzNjQwZmI2ZjU3IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzLnZvbmRyYUBwb3N0 Z3Jlc3FsLm9yZz4KRGF0ZTogTW9uLCAyNyBOb3YgMjAyMyAxODo0ODo0NSArMDEwMApTdWJq ZWN0OiBbUEFUQ0ggdjIwMjMxMTI3LTMgNi82XSBsb2cgWElEIGluc3RlYWQgb2YgYSBib29s ZWFuIGZsYWcKCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjL3NlcWRlc2MuYyAg ICAgICAgIHwgIDQgKystLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGFjdC5jICAg ICAgICAgICAgIHwgMjAgKysrKysrKysrKysrKysrKysrCiBzcmMvYmFja2VuZC9jb21tYW5k cy9zZXF1ZW5jZS5jICAgICAgICAgICAgICAgfCAyMSArKysrKysrKysrKystLS0tLS0tCiBz cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jICAgICAgfCAxMSArKysr KysrKystCiAuLi4vcmVwbGljYXRpb24vbG9naWNhbC9yZW9yZGVyYnVmZmVyLmMgICAgICAg fCAgNSArKysrKwogc3JjL2luY2x1ZGUvYWNjZXNzL3hhY3QuaCAgICAgICAgICAgICAgICAg ICAgIHwgIDEgKwogc3JjL2luY2x1ZGUvY29tbWFuZHMvc2VxdWVuY2UuaCAgICAgICAgICAg ICAgIHwgIDIgKy0KIDcgZmlsZXMgY2hhbmdlZCwgNTIgaW5zZXJ0aW9ucygrKSwgMTIgZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjL3Nl cWRlc2MuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9zZXFkZXNjLmMKaW5kZXgg YmE2MDU0NDA4NWUuLjI5NmZhNWQ5MTY5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3Mvcm1ncmRlc2Mvc2VxZGVzYy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVz Yy9zZXFkZXNjLmMKQEAgLTI1LDkgKzI1LDkgQEAgc2VxX2Rlc2MoU3RyaW5nSW5mbyBidWYs IFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCXhsX3NlcV9yZWMgKnhscmVjID0gKHhsX3Nl cV9yZWMgKikgcmVjOwogCiAJaWYgKGluZm8gPT0gWExPR19TRVFfTE9HKQotCQlhcHBlbmRT dHJpbmdJbmZvKGJ1ZiwgInJlbCAldS8ldS8ldSIsCisJCWFwcGVuZFN0cmluZ0luZm8oYnVm LCAicmVsICV1LyV1LyV1IHhpZCAldSIsCiAJCQkJCQkgeGxyZWMtPmxvY2F0b3Iuc3BjT2lk LCB4bHJlYy0+bG9jYXRvci5kYk9pZCwKLQkJCQkJCSB4bHJlYy0+bG9jYXRvci5yZWxOdW1i ZXIpOworCQkJCQkJIHhscmVjLT5sb2NhdG9yLnJlbE51bWJlciwgeGxyZWMtPnhpZCk7CiB9 CiAKIGNvbnN0IGNoYXIgKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5z YW0veGFjdC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGFjdC5jCmluZGV4IDUz NmVkYjM3OTJmLi5iYTA1MjJkMTRiMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNz L3RyYW5zYW0veGFjdC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hhY3Qu YwpAQCAtODA1LDYgKzgwNSwyNiBAQCBTdWJUcmFuc2FjdGlvbklzQWN0aXZlKFN1YlRyYW5z YWN0aW9uSWQgc3VieGlkKQogCXJldHVybiBmYWxzZTsKIH0KIAorLyoKKyAqCVN1YlRyYW5z YWN0aW9uSXNBY3RpdmUKKyAqCisgKiBUZXN0IGlmIHRoZSBzcGVjaWZpZWQgc3VieGFjdCBJ RCBpcyBzdGlsbCBhY3RpdmUuICBOb3RlIGNhbGxlciBpcworICogcmVzcG9uc2libGUgZm9y IGNoZWNraW5nIHdoZXRoZXIgdGhpcyBJRCBpcyByZWxldmFudCB0byB0aGUgY3VycmVudCB4 YWN0LgorICovCitUcmFuc2FjdGlvbklkCitTdWJUcmFuc2FjdGlvbkdldFhpZChTdWJUcmFu c2FjdGlvbklkIHN1YnhpZCkKK3sKKwlUcmFuc2FjdGlvblN0YXRlIHM7CisKKwlmb3IgKHMg PSBDdXJyZW50VHJhbnNhY3Rpb25TdGF0ZTsgcyAhPSBOVUxMOyBzID0gcy0+cGFyZW50KQor CXsKKwkJaWYgKHMtPnN0YXRlID09IFRSQU5TX0FCT1JUKQorCQkJY29udGludWU7CisJCWlm IChzLT5zdWJUcmFuc2FjdGlvbklkID09IHN1YnhpZCkKKwkJCXJldHVybiBYaWRGcm9tRnVs bFRyYW5zYWN0aW9uSWQocy0+ZnVsbFRyYW5zYWN0aW9uSWQpOworCX0KKwlyZXR1cm4gSW52 YWxpZFRyYW5zYWN0aW9uSWQ7Cit9CiAKIC8qCiAgKglHZXRDdXJyZW50Q29tbWFuZElkCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9zZXF1ZW5jZS5jIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvc2VxdWVuY2UuYwppbmRleCA5ZGE5YzgyNzBkOS4uZjNlMWE3YTQ2MmMg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3NlcXVlbmNlLmMKKysrIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvc2VxdWVuY2UuYwpAQCAtMTEyLDcgKzExMiw3IEBAIHN0YXRp YyB2b2lkIGluaXRfcGFyYW1zKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqb3B0aW9ucywg Ym9vbCBmb3JfaWRlbnRpdHksCiAJCQkJCQlMaXN0ICoqb3duZWRfYnkpOwogc3RhdGljIHZv aWQgZG9fc2V0dmFsKE9pZCByZWxpZCwgaW50NjQgbmV4dCwgYm9vbCBpc2NhbGxlZCk7CiBz dGF0aWMgdm9pZCBwcm9jZXNzX293bmVkX2J5KFJlbGF0aW9uIHNlcXJlbCwgTGlzdCAqb3du ZWRfYnksIGJvb2wgZm9yX2lkZW50aXR5KTsKLXN0YXRpYyBpbmxpbmUgYm9vbCBpc19zZXF1 ZW5jZV90cmFuc2FjdGlvbmFsKFJlbGF0aW9uIHNlcXJlbCk7CitzdGF0aWMgaW5saW5lIFRy YW5zYWN0aW9uSWQgc2VxdWVuY2VfeGlkKFJlbGF0aW9uIHNlcXJlbCk7CiAKIAogLyoKQEAg LTI1NiwxMSArMjU2LDE2IEBAIERlZmluZVNlcXVlbmNlKFBhcnNlU3RhdGUgKnBzdGF0ZSwg Q3JlYXRlU2VxU3RtdCAqc2VxKQogCXJldHVybiBhZGRyZXNzOwogfQogCi1zdGF0aWMgaW5s aW5lIGJvb2wKLWlzX3NlcXVlbmNlX3RyYW5zYWN0aW9uYWwoUmVsYXRpb24gc2VxcmVsKQor c3RhdGljIGlubGluZSBUcmFuc2FjdGlvbklkCitzZXF1ZW5jZV94aWQoUmVsYXRpb24gc2Vx cmVsKQogewotCXJldHVybiAoc2VxcmVsLT5yZF9uZXdSZWxmaWxlbG9jYXRvclN1YmlkICE9 IEludmFsaWRTdWJUcmFuc2FjdGlvbklkKSB8fAotCQkgICAoc2VxcmVsLT5yZF9jcmVhdGVT dWJpZCAhPSBJbnZhbGlkU3ViVHJhbnNhY3Rpb25JZCk7CisJaWYgKHNlcXJlbC0+cmRfbmV3 UmVsZmlsZWxvY2F0b3JTdWJpZCAhPSBJbnZhbGlkU3ViVHJhbnNhY3Rpb25JZCkKKwkJcmV0 dXJuIFN1YlRyYW5zYWN0aW9uR2V0WGlkKHNlcXJlbC0+cmRfbmV3UmVsZmlsZWxvY2F0b3JT dWJpZCk7CisKKwlpZiAoc2VxcmVsLT5yZF9jcmVhdGVTdWJpZCAhPSBJbnZhbGlkU3ViVHJh bnNhY3Rpb25JZCkKKwkJcmV0dXJuIFN1YlRyYW5zYWN0aW9uR2V0WGlkKHNlcXJlbC0+cmRf Y3JlYXRlU3ViaWQpOworCisJcmV0dXJuIEludmFsaWRUcmFuc2FjdGlvbklkOwogfQogCiAv KgpAQCAtNjA5LDcgKzYxNCw3IEBAIGZpbGxfc2VxX2Zvcmtfd2l0aF9kYXRhKFJlbGF0aW9u IHJlbCwgSGVhcFR1cGxlIHR1cGxlLCBGb3JrTnVtYmVyIGZvcmtOdW0pCiAJCVhMb2dSZWdp c3RlckJ1ZmZlcigwLCBidWYsIFJFR0JVRl9XSUxMX0lOSVQpOwogCiAJCXhscmVjLmxvY2F0 b3IgPSByZWwtPnJkX2xvY2F0b3I7Ci0JCXhscmVjLmlzX3RyYW5zYWN0aW9uYWwgPSBpc19z ZXF1ZW5jZV90cmFuc2FjdGlvbmFsKHJlbCk7CisJCXhscmVjLnhpZCA9IHNlcXVlbmNlX3hp ZChyZWwpOwogCiAJCVhMb2dSZWdpc3RlckRhdGEoKGNoYXIgKikgJnhscmVjLCBzaXplb2Yo eGxfc2VxX3JlYykpOwogCQlYTG9nUmVnaXN0ZXJEYXRhKChjaGFyICopIHR1cGxlLT50X2Rh dGEsIHR1cGxlLT50X2xlbik7CkBAIC0xMDc0LDcgKzEwNzksNyBAQCBuZXh0dmFsX2ludGVy bmFsKE9pZCByZWxpZCwgYm9vbCBjaGVja19wZXJtaXNzaW9ucykKIAkJc2VxLT5sb2dfY250 ID0gMDsKIAogCQl4bHJlYy5sb2NhdG9yID0gc2VxcmVsLT5yZF9sb2NhdG9yOwotCQl4bHJl Yy5pc190cmFuc2FjdGlvbmFsID0gaXNfc2VxdWVuY2VfdHJhbnNhY3Rpb25hbChzZXFyZWwp OworCQl4bHJlYy54aWQgPSBzZXF1ZW5jZV94aWQoc2VxcmVsKTsKIAogCQlYTG9nUmVnaXN0 ZXJEYXRhKChjaGFyICopICZ4bHJlYywgc2l6ZW9mKHhsX3NlcV9yZWMpKTsKIAkJWExvZ1Jl Z2lzdGVyRGF0YSgoY2hhciAqKSBzZXFkYXRhdHVwbGUudF9kYXRhLCBzZXFkYXRhdHVwbGUu dF9sZW4pOwpAQCAtMTI3Niw3ICsxMjgxLDcgQEAgZG9fc2V0dmFsKE9pZCByZWxpZCwgaW50 NjQgbmV4dCwgYm9vbCBpc2NhbGxlZCkKIAkJWExvZ1JlZ2lzdGVyQnVmZmVyKDAsIGJ1Ziwg UkVHQlVGX1dJTExfSU5JVCk7CiAKIAkJeGxyZWMubG9jYXRvciA9IHNlcXJlbC0+cmRfbG9j YXRvcjsKLQkJeGxyZWMuaXNfdHJhbnNhY3Rpb25hbCA9IGlzX3NlcXVlbmNlX3RyYW5zYWN0 aW9uYWwoc2VxcmVsKTsKKwkJeGxyZWMueGlkID0gc2VxdWVuY2VfeGlkKHNlcXJlbCk7CiAK IAkJWExvZ1JlZ2lzdGVyRGF0YSgoY2hhciAqKSAmeGxyZWMsIHNpemVvZih4bF9zZXFfcmVj KSk7CiAJCVhMb2dSZWdpc3RlckRhdGEoKGNoYXIgKikgc2VxZGF0YXR1cGxlLnRfZGF0YSwg c2VxZGF0YXR1cGxlLnRfbGVuKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvZGVjb2RlLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L2RlY29kZS5jCmluZGV4IGM1OGI1YjQ1ZjI5Li5mZjJmM2Y0ZTFhYSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZWNvZGUuYworKysgYi9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jCkBAIC0xMzkwLDYgKzEzOTAsNyBA QCBzZXFfZGVjb2RlKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgWExvZ1JlY29yZEJ1 ZmZlciAqYnVmKQogCVNuYXBzaG90CXNuYXBzaG90ID0gTlVMTDsKIAlSZXBPcmlnaW5JZCBv cmlnaW5faWQgPSBYTG9nUmVjR2V0T3JpZ2luKHIpOwogCWJvb2wJCXRyYW5zYWN0aW9uYWw7 CisJVHJhbnNhY3Rpb25JZAlzZXF1ZW5jZV94aWQ7CiAJeGxfc2VxX3JlYyAqeGxyZWM7CiAK IAkvKiBpZ25vcmUgc2VxdWVuY2VzIHdoZW4gdGhlIHBsdWdpbiBkb2VzIG5vdCBoYXZlIHRo ZSBjYWxsYmFja3MgKi8KQEAgLTE0MzYsNyArMTQzNyw4IEBAIHNlcV9kZWNvZGUoTG9naWNh bERlY29kaW5nQ29udGV4dCAqY3R4LCBYTG9nUmVjb3JkQnVmZmVyICpidWYpCiAJICogWFhY OiBjYW4geGxyZWMgYmUgY29tYmluZWQgd2l0aCB0dXBsZWRhdGE/CiAJICovCiAJeGxyZWMg PSAoeGxfc2VxX3JlYyAqKSBYTG9nUmVjR2V0RGF0YShyKTsKLQl0cmFuc2FjdGlvbmFsID0g eGxyZWMtPmlzX3RyYW5zYWN0aW9uYWw7CisJc2VxdWVuY2VfeGlkID0geGxyZWMtPnhpZDsK Kwl0cmFuc2FjdGlvbmFsID0gVHJhbnNhY3Rpb25JZElzVmFsaWQoc2VxdWVuY2VfeGlkKTsK IAogCS8qIFNraXAgdGhlIGNoYW5nZSBpZiBhbHJlYWR5IHByb2Nlc3NlZCAocGVyIHRoZSBz bmFwc2hvdCkuICovCiAJaWYgKHRyYW5zYWN0aW9uYWwgJiYKQEAgLTE0NzgsNiArMTQ4MCwx MyBAQCBzZXFfZGVjb2RlKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgWExvZ1JlY29y ZEJ1ZmZlciAqYnVmKQogCWlmICghdHJhbnNhY3Rpb25hbCkKIAkJc25hcHNob3QgPSBTbmFw QnVpbGRHZXRPckJ1aWxkU25hcHNob3QoYnVpbGRlcik7CiAKKwkvKgorCSAqIEZJWE1FIGNh biB3ZSBvdmVycmlkZSB0aGUgeGlkIGxpa2UgdGhpcz8gb3Igc2hvdWxkIHdlIHBhc3MgYm90 aCB0aGUKKwkgKiBvcmlnaW5hbCBYSUQgYW5kIHRoZSBYSUQgd2UgcmVjb3JkZWQuCisJICov CisJaWYgKHRyYW5zYWN0aW9uYWwpCisJCXhpZCA9IHNlcXVlbmNlX3hpZDsKKwogCS8qIFF1 ZXVlIHRoZSBjaGFuZ2UgKG9yIHNlbmQgaW1tZWRpYXRlbHkgaWYgbm90IHRyYW5zYWN0aW9u YWwpLiAqLwogCVJlb3JkZXJCdWZmZXJRdWV1ZVNlcXVlbmNlKGN0eC0+cmVvcmRlciwgeGlk LCBzbmFwc2hvdCwgYnVmLT5lbmRwdHIsCiAJCQkJCQkJICAgb3JpZ2luX2lkLCB0YXJnZXRf bG9jYXRvciwgdHJhbnNhY3Rpb25hbCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC9yZW9yZGVyYnVmZmVyLmMKaW5kZXggNDEyMTI2OWEwOTcuLjgyZmJmY2U4 MDMxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Jlb3Jk ZXJidWZmZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Jlb3Jk ZXJidWZmZXIuYwpAQCAtMTAxNiw2ICsxMDE2LDExIEBAIFJlb3JkZXJCdWZmZXJRdWV1ZVNl cXVlbmNlKFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlvbklkIHhpZCwKIAkJLyogbm9u LXRyYW5zYWN0aW9uYWwgY2hhbmdlcyByZXF1aXJlIGEgdmFsaWQgc25hcHNob3QgKi8KIAkJ QXNzZXJ0KHNuYXBzaG90X25vdyk7CiAKKwkJLyoKKwkJICogRklYTUUgY2FuIHRoaXMgYWN0 dWFsbHkgYmUgSW52YWxpZFRyYW5zYWN0aW9uSWQ/IFdlIGdldCB0eG49TlVMTAorCQkgKiBh bmQgdGhlbiByYi0+c2VxdWVuY2UoKSBmYWlscyBpbiBwZ291dHB1dF9zZXF1ZW5jZSgpLCBh cyBpdCB0cmllcworCQkgKiB0byBkbyBtYXliZV9zZW5kX3NjaGVtYSgpLgorCQkgKi8KIAkJ aWYgKHhpZCAhPSBJbnZhbGlkVHJhbnNhY3Rpb25JZCkKIAkJCXR4biA9IFJlb3JkZXJCdWZm ZXJUWE5CeVhpZChyYiwgeGlkLCB0cnVlLCBOVUxMLCBsc24sIHRydWUpOwogCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MveGFjdC5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3hh Y3QuaAppbmRleCBjYjkwZjIyN2NlYi4uZmRiMzhjNTk4YmMgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL2FjY2Vzcy94YWN0LmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3hhY3QuaApA QCAtNDQ0LDYgKzQ0NCw3IEBAIGV4dGVybiBGdWxsVHJhbnNhY3Rpb25JZCBHZXRDdXJyZW50 RnVsbFRyYW5zYWN0aW9uSWQodm9pZCk7CiBleHRlcm4gRnVsbFRyYW5zYWN0aW9uSWQgR2V0 Q3VycmVudEZ1bGxUcmFuc2FjdGlvbklkSWZBbnkodm9pZCk7CiBleHRlcm4gdm9pZCBNYXJr Q3VycmVudFRyYW5zYWN0aW9uSWRMb2dnZWRJZkFueSh2b2lkKTsKIGV4dGVybiBib29sIFN1 YlRyYW5zYWN0aW9uSXNBY3RpdmUoU3ViVHJhbnNhY3Rpb25JZCBzdWJ4aWQpOworZXh0ZXJu IFRyYW5zYWN0aW9uSWQgU3ViVHJhbnNhY3Rpb25HZXRYaWQoU3ViVHJhbnNhY3Rpb25JZCBz dWJ4aWQpOwogZXh0ZXJuIENvbW1hbmRJZCBHZXRDdXJyZW50Q29tbWFuZElkKGJvb2wgdXNl ZCk7CiBleHRlcm4gdm9pZCBTZXRQYXJhbGxlbFN0YXJ0VGltZXN0YW1wcyhUaW1lc3RhbXBU eiB4YWN0X3RzLCBUaW1lc3RhbXBUeiBzdG10X3RzKTsKIGV4dGVybiBUaW1lc3RhbXBUeiBH ZXRDdXJyZW50VHJhbnNhY3Rpb25TdGFydFRpbWVzdGFtcCh2b2lkKTsKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL2NvbW1hbmRzL3NlcXVlbmNlLmggYi9zcmMvaW5jbHVkZS9jb21tYW5k cy9zZXF1ZW5jZS5oCmluZGV4IGI4NjNmOWNkYTM2Li4xMWRmZTU3ZjA0YiAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvc2VxdWVuY2UuaAorKysgYi9zcmMvaW5jbHVkZS9j b21tYW5kcy9zZXF1ZW5jZS5oCkBAIC00OCw3ICs0OCw3IEBAIHR5cGVkZWYgRm9ybURhdGFf cGdfc2VxdWVuY2VfZGF0YSAqRm9ybV9wZ19zZXF1ZW5jZV9kYXRhOwogdHlwZWRlZiBzdHJ1 Y3QgeGxfc2VxX3JlYwogewogCVJlbEZpbGVMb2NhdG9yIGxvY2F0b3I7Ci0JYm9vbAkJICAg aXNfdHJhbnNhY3Rpb25hbDsKKwlUcmFuc2FjdGlvbklkICB4aWQ7CS8qIHZhbGlkIFhJRCwg aWYgdHJhbnNhY3Rpb25hbCAqLwogCS8qIFNFUVVFTkNFIFRVUExFIERBVEEgRk9MTE9XUyBB VCBUSEUgRU5EICovCiB9IHhsX3NlcV9yZWM7CiAKLS0gCjIuNDIuMAoK --------------n6sjwQvphvF4EuHWavlOIMm0--