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 1tLgb8-00GMDo-TY for pgsql-hackers@arkaria.postgresql.org; Thu, 12 Dec 2024 10:39:11 +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 1tLgb5-009u85-E0 for pgsql-hackers@arkaria.postgresql.org; Thu, 12 Dec 2024 10:39:08 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tLgb4-009u7q-Lh for pgsql-hackers@lists.postgresql.org; Thu, 12 Dec 2024 10:39:08 +0000 Received: from mail-yb1-xb31.google.com ([2607:f8b0:4864:20::b31]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1tLgay-002QSV-Sh for pgsql-hackers@postgresql.org; Thu, 12 Dec 2024 10:39:06 +0000 Received: by mail-yb1-xb31.google.com with SMTP id 3f1490d57ef6-e3c8c572309so288642276.2 for ; Thu, 12 Dec 2024 02:39:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=datadoghq.com; s=google; t=1733999939; x=1734604739; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=sWF37Crsbu3lCEP+1clprJQd/ye4xDYccYerStjj/gY=; b=OfnPAC49OspNXAgmQdEbdif57IvPXvkWvqQRMaz6GYODOWAOt7mDP6JCzGJJWd6VyX yH6Sgkc/+ZLIoRG1DZYsV1aS2/iVGuWRNRelaaKIcLsM9TE/WLJLCcs/Nxx1O4CYJgwS bc9zY3t0RXtRwBe9miaCHphMBQVpBCl8q4zK0= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1733999939; x=1734604739; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=sWF37Crsbu3lCEP+1clprJQd/ye4xDYccYerStjj/gY=; b=UZ8KWMXbkcD+oXWw5lavlOqmILekpwPJH0ZmVEe4I5Z1KbS7r1IgfTrFR1Mb1kykcP hs31r7v4XJqYQAO4u9vEzZwA7txw4SZ6d1gcTPjYtuAYiaOyPC/0PGnS1eOjy3x4pcqG BCeSdy5MLjCAr2OeuY/95aXgLGzYIrYDO7pj+C4QzFiu43WxS0EBtzIQ3WQ68Zk8GLgs 4UylG4XRfRHnuiLj+5EorSHqIX/PK9ENck4uqZ1Q9p6Zt+j0WbrQucNu6GfMoAwf9SFi zhnZwn0rsE/k4j3OMYUnw9BT9l3PSKiiiTVjVSQ6K7PYs/vv1qnUIimjiKUyVQdLtWBb N9gQ== X-Forwarded-Encrypted: i=1; AJvYcCWetUyE3Isw/hTJvdJSUXOfqO63lyQcdHPTITSifg+0DcP1WLoBXQB4C7NaWaankhUC5VI1slt4j/sjV7yd@postgresql.org X-Gm-Message-State: AOJu0YxQFlXfGfQb5OU6hKAZdOb/0iydmLI+HCRhZ8W6g07xJWYpNqZj xRpfWu6xw/Om93eYU5oRcz6byg8K44E9VLcQPOlHkTpeX/pA0AZR8w4XrMcHqlpValtq8YdUDbm wucQ5jvwNRLVAUziuwapm1/3QiRtmJMD+6XFYLQ== X-Gm-Gg: ASbGnct2zjoNKbLfwb+c4KmVZZ1pAIvy3YSLp26uRiQGWZCsyianhLJKMZnhVqWGl6/ JvyikTl+MFXw+PiHqEcSZwyauew3dGY0Tqtt3aw== X-Google-Smtp-Source: AGHT+IFNJcUFzRRBv91GXQ+SEIemxjzb18VWXjsgO6jhSNlhPo3IXlG/TBXEof7NoGUXE05VRTVUDkGjF6SPY4+srGE= X-Received: by 2002:a05:6902:726:b0:e3a:1cfc:a82a with SMTP id 3f1490d57ef6-e3d903289a7mr2695699276.23.1733999939178; Thu, 12 Dec 2024 02:38:59 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Anthonin Bonnefoy Date: Thu, 12 Dec 2024 11:38:48 +0100 Message-ID: Subject: Re: Add Pipelining support in psql To: Jelte Fennema-Nio Cc: Michael Paquier , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="0000000000006b273c0629105220" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000006b273c0629105220 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Thanks for the review! On Thu, Dec 12, 2024 at 12:53=E2=80=AFAM Jelte Fennema-Nio wrote: > I think that new prompt is super useful, so useful in fact that I'd > suggest linking to it from the \startpipeline docs. Good point, I've added a paragraph with the link to the %P prompt. > I do think that > the wording in the docs could be a bit more precise: > 1. The columns are not necessarily queries, they are messages or > commands. i.e. \parse and \bind_named both count as 1, even though > they form one query together. Yeah, I wasn't super happy with the num_queries and wording. I've renamed the prompt columns to piped_syncs, piped_commands and pending_results and added more precision on what counts as a command. > 2. messages not followed by \sync and \flushrequest, could very well > already "be sent to the server" (if the client buffer got full, or in > case of manual \flush). The main thing that \sync and \flushrequest do > is make sure that the server actually sends its own result back, even > if its buffer is not full yet. I had the wrong assumptions on what was happening. I've changed the definition of pending_results to: "pending_results is the number of commands that were followed by either a \flushrequest or a \syncpipeline, forcing the server to send the results that can be retrieved with \getresults." > The main feedback I have after playing around with this version is > that I'd like to have a \getresult (without the s), to only get a > single result. So that you can get results one by one, possibly > interleaved with some other queries again. \getresults was easier to implement since it was more or less the current behaviour :). I didn't want to add a new meta-command just for that (I feel like I'm already adding a lot of them) so I've added a num_results parameter to \getresults. You should be able to use \getresults 1 to get a single result. A sync response count as a result. > One thing I'm wondering is how useful the num_syncs count is in the > pipeline prompt, since you never really wait for a sync. With the addition of the num_results parameter for \getresults, knowing the number of syncs becomes more useful when results are consumed one by one. > Regarding the usefulness of \flush. I agree it's not as useful as I > thought, because indeed \getresults already flushes everything. But > it's not completely useless either. The main way I was able to use it > interactively in a somewhat interesting way was to send it after a > long running query, and then while that's processing type up the next > query after it. I feel there's a large overlap between \flush and \flushrequest. On the other hand, if people want to test the behaviour of pushing data with and without a flush request message, then \flush can be useful. --0000000000006b273c0629105220 Content-Type: application/octet-stream; name="v05-0001-Add-pipelining-support-in-psql.patch" Content-Disposition: attachment; filename="v05-0001-Add-pipelining-support-in-psql.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m4l6fgfo0 RnJvbSA5NjA3MDdkZTc2YWM4Njg4NzIxMTA1OWYzMzU1ODhiMzJjOGE1OGY0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnRob25pbiBCb25uZWZveSA8YW50aG9uaW4uYm9ubmVmb3lA ZGF0YWRvZ2hxLmNvbT4KRGF0ZTogVHVlLCA1IE5vdiAyMDI0IDEwOjI2OjU0ICswMTAwClN1Ympl Y3Q6IEFkZCBwaXBlbGluaW5nIHN1cHBvcnQgaW4gcHNxbAoKV2l0aCBcYmluZCwgXHBhcnNlLCBc YmluZF9uYW1lZCBhbmQgXGNsb3NlLCBpdCBpcyBwb3NzaWJsZSB0byBpc3N1ZQpxdWVyaWVzIGZy b20gcHNxbCB1c2luZyB0aGUgZXh0ZW5kZWQgcHJvdG9jb2wuIEhvd2V2ZXIsIGl0IHdhc24ndApw b3NzaWJsZSB0byBzZW5kIHRob3NlIHF1ZXJpZXMgdXNpbmcgcGlwZWxpbmluZyBhbmQgdGhlIG9u bHkgd2F5IHRvIHRlc3QKcGlwZWxpbmVkIHF1ZXJpZXMgd2FzIHRocm91Z2ggcGdiZW5jaCdzIHRh cCB0ZXN0cy4KClRoaXMgcGF0Y2ggYWRkcyBhZGRpdGlvbmFsIHBzcWwgbWV0YS1jb21tYW5kcyB0 byBzdXBwb3J0IHBpcGVsaW5pbmc6ClxzdGFydHBpcGVsaW5lLCBcZW5kcGlwZWxpbmUgYW5kIFxz eW5jcGlwZWxpbmUsIG1pcnJvcmluZyB0aGUgZXhpc3RpbmcKbWV0YS1jb21tYW5kcyBpbiBwZ2Jl bmNoLiBBZGRpdGlvbmFsIG1ldGEtY29tbWFuZHMgYWxsb3cgdG8gZmx1c2ggYW5kCnJlYWQgcmVz dWx0cyBvZiBhbiBvbmdvaW5nIHBpcGVsaW5lOiBcZmx1c2hyZXF1ZXN0LCBcZmx1c2ggYW5kIFxn ZXRyZXN1bHRzCgpcc3RhcnRwaXBlbGluZSBzdGFydHMgYSBuZXcgcGlwZWxpbmUuIEFsbCBleHRl bmRlZCBxdWVyaWVzIHdpbGwgYmUKcXVldWVkIHVudGlsIHRoZSBlbmQgb2YgdGhlIHBpcGVsaW5l IGlzIHJlYWNoZWQuClxlbmRwaXBlbGluZSBlbmRzIGFuIG9uZ29pbmcgcGlwZWxpbmUuIEFsbCBx dWV1ZWQgY29tbWFuZHMgd2lsbCBiZSBzZW50CnRvIHRoZSBzZXJ2ZXIgYW5kIGFsbCByZXNwb25z ZXMgd2lsbCBiZSBwcm9jZXNzZWQgYnkgdGhlIHBzcWwuClxzeW5jcGlwZWxpbmUgcXVldWVzIGEg c3luY2hyb25pc2F0aW9uIHBvaW50IHdpdGhvdXQgZmx1c2hpbmcgdGhlCmNvbW1hbmRzIHRvIHRo ZSBzZXJ2ZXIKXGZsdXNoIENhbGwgUFFmbHVzaCBvbiBwc3FsJ3MgY29ubmVjdGlvbgpcZmx1c2hy ZXF1ZXN0IHF1ZXVlcyBhIGZsdXNocmVxdWVzdApcZ2V0cmVzdWx0cyByZWFkcyBzZXJ2ZXIncyBy ZXN1bHRzLiBVbnNlbnQgZGF0YSBhcmUgYXV0b21hdGljYWxseSBwdXNoZWQKd2hlbiBcZ2V0cmVz dWx0cyBpcyBjYWxsZWQKClRob3NlIG1ldGEtY29tbWFuZHMgd2lsbCBhbGxvdyB0byB0ZXN0IHBp cGVsaW5lIGJlaGF2aW91ciB1c2luZwpwc3FsIHJlZ3Jlc3Npb24gdGVzdHMuCi0tLQogZG9jL3Ny Yy9zZ21sL3JlZi9wc3FsLXJlZi5zZ21sICAgICB8ICA5NiArKysrKwogc3JjL2Jpbi9wc3FsL2Nv bW1hbmQuYyAgICAgICAgICAgICB8IDE1MSArKysrKysrCiBzcmMvYmluL3BzcWwvY29tbW9uLmMg ICAgICAgICAgICAgIHwgMjMwICsrKysrKysrKy0KIHNyYy9iaW4vcHNxbC9oZWxwLmMgICAgICAg ICAgICAgICAgfCAgIDcgKwogc3JjL2Jpbi9wc3FsL3Byb21wdC5jICAgICAgICAgICAgICB8ICAx MiArCiBzcmMvYmluL3BzcWwvc2V0dGluZ3MuaCAgICAgICAgICAgIHwgIDE1ICstCiBzcmMvYmlu L3BzcWwvdGFiLWNvbXBsZXRlLmluLmMgICAgIHwgICA4ICstCiBzcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL3BzcWwub3V0IHwgNjY4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBzcmMv dGVzdC9yZWdyZXNzL3NxbC9wc3FsLnNxbCAgICAgIHwgMzk5ICsrKysrKysrKysrKysrKysrCiA5 IGZpbGVzIGNoYW5nZWQsIDE1NzYgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9wc3FsLXJlZi5zZ21sIGIvZG9jL3NyYy9zZ21sL3Jl Zi9wc3FsLXJlZi5zZ21sCmluZGV4IGU0MjA3M2VkNzQ4Li5kYjAyNmQ0ZTI1MiAxMDA2NDQKLS0t IGEvZG9jL3NyYy9zZ21sL3JlZi9wc3FsLXJlZi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYv cHNxbC1yZWYuc2dtbApAQCAtMzU2Miw2ICszNTYyLDgyIEBAIHRlc3RkYj0mZ3Q7IDx1c2VyaW5w dXQ+XHNldGVudiBMRVNTIC1pbXg0RjwvdXNlcmlucHV0PgogICAgICAgICA8L2xpc3RpdGVtPgog ICAgICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgICAgPHZhcmxpc3RlbnRyeSBpZD0iYXBwLXBzcWwt bWV0YS1jb21tYW5kLXBpcGVsaW5lIj4KKyAgICAgIDx0ZXJtPjxsaXRlcmFsPlxzdGFydHBpcGVs aW5lPC9saXRlcmFsPjwvdGVybT4KKyAgICAgIDx0ZXJtPjxsaXRlcmFsPlxzeW5jcGlwZWxpbmU8 L2xpdGVyYWw+PC90ZXJtPgorICAgICAgPHRlcm0+PGxpdGVyYWw+XGVuZHBpcGVsaW5lPC9saXRl cmFsPjwvdGVybT4KKyAgICAgIDx0ZXJtPjxsaXRlcmFsPlxmbHVzaHJlcXVlc3Q8L2xpdGVyYWw+ PC90ZXJtPgorICAgICAgPHRlcm0+PGxpdGVyYWw+XGZsdXNoPC9saXRlcmFsPjwvdGVybT4KKyAg ICAgIDx0ZXJtPjxsaXRlcmFsPlxnZXRyZXN1bHRzIFsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPm51bWJlcl9yZXN1bHRzPC9yZXBsYWNlYWJsZT4gXTwvbGl0ZXJhbD48L3Rlcm0+CisK KyAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgVGhpcyBncm91cCBv ZiBjb21tYW5kcyBpbXBsZW1lbnRzIHBpcGVsaW5pbmcgb2YgU1FMIHN0YXRlbWVudHMuCisgICAg ICAgICAgQSBwaXBlbGluZSBtdXN0IGJlZ2luIHdpdGggYSA8Y29tbWFuZD5cc3RhcnRwaXBlbGlu ZTwvY29tbWFuZD4KKyAgICAgICAgICBhbmQgZW5kIHdpdGggYW4gPGNvbW1hbmQ+XGVuZHBpcGVs aW5lPC9jb21tYW5kPi4gSW4gYmV0d2VlbiB0aGVyZQorICAgICAgICAgIG1heSBiZSBhbnkgbnVt YmVyIG9mIDxjb21tYW5kPlxzeW5jcGlwZWxpbmU8L2NvbW1hbmQ+IGNvbW1hbmRzLAorICAgICAg ICAgIHdoaWNoIHNlbmRzIGEgPGxpbmsgbGlua2VuZD0icHJvdG9jb2wtZmxvdy1leHQtcXVlcnki PnN5bmMgbWVzc2FnZTwvbGluaz4KKyAgICAgICAgICB3aXRob3V0IGVuZGluZyB0aGUgb25nb2lu ZyBwaXBlbGluZSBhbmQgZmx1c2hpbmcgdGhlIHNlbmQgYnVmZmVyLgorICAgICAgICAgIEluIHBp cGVsaW5lIG1vZGUsIHN0YXRlbWVudHMgYXJlIHNlbnQgdG8gdGhlIHNlcnZlciB3aXRob3V0IHdh aXRpbmcKKyAgICAgICAgICBmb3IgdGhlIHJlc3VsdHMgb2YgcHJldmlvdXMgc3RhdGVtZW50cy4g IFNlZQorICAgICAgICAgIDx4cmVmIGxpbmtlbmQ9ImxpYnBxLXBpcGVsaW5lLW1vZGUiLz4gZm9y IG1vcmUgZGV0YWlscy4KKyAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAg ICAgUGlwZWxpbmUgbW9kZSByZXF1aXJlcyB0aGUgdXNlIG9mIGV4dGVuZGVkIHF1ZXJ5IHByb3Rv Y29sLiBBbGwgcXVlcmllcyBuZWVkCisgICAgICAgICAgdG8gYmUgc2VudCB1c2luZyB0aGUgbWV0 YS1jb21tYW5kcyA8bGl0ZXJhbD5cYmluZDwvbGl0ZXJhbD4sCisgICAgICAgICAgPGxpdGVyYWw+ XGJpbmRfbmFtZWQ8L2xpdGVyYWw+LCA8bGl0ZXJhbD5cY2xvc2U8L2xpdGVyYWw+IG9yCisgICAg ICAgICAgPGxpdGVyYWw+XHBhcnNlPC9saXRlcmFsPi4gV2hpbGUgYSBwaXBlbGluZSBpcyBvbmdv aW5nLAorICAgICAgICAgIDxsaXRlcmFsPlxnPC9saXRlcmFsPiB3aWxsIGFwcGVuZCB0aGUgY3Vy cmVudCBxdWVyeSBidWZmZXIgdG8gdGhlIHBpcGVsaW5lIGFuZAorICAgICAgICAgIG90aGVyIG1l dGEtY29tbWFuZHMgbGlrZSA8bGl0ZXJhbD5cZ3g8L2xpdGVyYWw+IG9yIDxsaXRlcmFsPlxnZGVz YzwvbGl0ZXJhbD4KKyAgICAgICAgICBhcmUgbm90IGFsbG93ZWQgaW4gcGlwZWxpbmUgbW9kZS4K KyAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgPGNvbW1hbmQ+XGZs dXNocmVxdWVzdDwvY29tbWFuZD4gYXBwZW5kcyBhIGZsdXNoIGNvbW1hbmQgdG8gdGhlIHBpcGVs aW5lLAorICAgICAgICAgIGFsbG93aW5nIHRvIHJlYWQgcmVzdWx0cyB3aXRoIDxjb21tYW5kPlxn ZXRyZXN1bHRzPC9jb21tYW5kPiB3aXRob3V0IGlzc3VpbmcKKyAgICAgICAgICBhIHN5bmMgb3Ig ZW5kaW5nIHRoZSBwaXBlbGluZS4gPGNvbW1hbmQ+XGdldHJlc3VsdHM8L2NvbW1hbmQ+IHdpbGwg YXV0b21hdGljYWxseQorICAgICAgICAgIHB1c2ggdW5zZW50IGRhdGEgdG8gdGhlIHNlcnZlci4g PGNvbW1hbmQ+XGZsdXNoPC9jb21tYW5kPiBjYW4gYmUgdXNlZCB0byBtYW51YWxseQorICAgICAg ICAgIHB1c2ggdW5zZW50IGRhdGEuCisgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgor ICAgICAgICAgIDxjb21tYW5kPlxnZXRyZXN1bHRzPC9jb21tYW5kPiBhY2NlcHRzIGFuIG9wdGlv bmFsCisgICAgICAgICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bWJlcl9yZXN1 bHRzPC9yZXBsYWNlYWJsZT4gcGFyYW1ldGVyLiBJZiBwcm92aWRlZCwKKyAgICAgICAgICBvbmx5 IHRoZSBmaXJzdCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtYmVyX3Jlc3VsdHM8 L3JlcGxhY2VhYmxlPiBwZW5kaW5nCisgICAgICAgICAgcmVzdWx0cyB3aWxsIGJlIHJlYWQuIElm IG5vdCBwcm92aWRlZCBvciAwLCBhbGwgcGVuZGluZyByZXN1bHRzIGFyZSByZWFkLiBUaGUKKyAg ICAgICAgICBjb21tYW5kcyA8bGl0ZXJhbD5cYmluZDwvbGl0ZXJhbD4sIDxsaXRlcmFsPlxiaW5k X25hbWVkPC9saXRlcmFsPiwKKyAgICAgICAgICA8bGl0ZXJhbD5cY2xvc2U8L2xpdGVyYWw+LCA8 bGl0ZXJhbD5ccGFyc2U8L2xpdGVyYWw+IGFuZCA8bGl0ZXJhbD5cc3luY3BpcGVsaW5lPC9saXRl cmFsPgorICAgICAgICAgIGdlbmVyYXRlIG9uZSByZXN1bHQgdG8gZ2V0LgorICAgICAgIDwvcGFy YT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICBXaGVuIHBpcGVsaW5lIG1vZGUgaXMgYWN0 aXZlLCBhIGRlZGljYXRlZCBwcm9tcHQgdmFyaWFibGUgaXMKKyAgICAgICAgICBhdmFpbGFibGUg dG8gcmVwb3J0IHRoZSBwaXBlbGluZSBzdGF0dXMuIFNlZQorICAgICAgICAgIDx4cmVmIGxpbmtl bmQ9ImFwcC1wc3FsLXByb21wdGluZy1wLXVjIi8+IGZvciBtb3JlIGRldGFpbHMKKyAgICAgICA8 L3BhcmE+CisKKyAgICAgICA8cGFyYT4KKyAgICAgICAgRXhhbXBsZToKKzxwcm9ncmFtbGlzdGlu Zz4KK1xzdGFydHBpcGVsaW5lCitTRUxFQ1QgMSBcYmluZCBcZworU0VMRUNUICQxIFxwYXJzZSBz dG10MQorXGJpbmRfbmFtZWQgc3RtdDEgMSBcZworU0VMRUNUIHBnX2N1cnJlbnRfeGFjdF9pZCgp IFxiaW5kIFxnCitcZmx1c2hyZXF1ZXN0CitcZ2V0cmVzdWx0cworXHN5bmNwaXBlbGluZQorU0VM RUNUIHBnX2N1cnJlbnRfeGFjdF9pZCgpIFxiaW5kIFxnCitcZmx1c2hyZXF1ZXN0CitcZ2V0cmVz dWx0cyAyCitcY2xvc2Ugc3RtdDEKK1xlbmRwaXBlbGluZQorPC9wcm9ncmFtbGlzdGluZz48L3Bh cmE+CisKKyAgICAgIDwvbGlzdGl0ZW0+CisgICAgIDwvdmFybGlzdGVudHJ5PgorCiAKICAgICAg IDx2YXJsaXN0ZW50cnkgaWQ9ImFwcC1wc3FsLW1ldGEtY29tbWFuZC10LWxjIj4KICAgICAgICAg PHRlcm0+PGxpdGVyYWw+XHQ8L2xpdGVyYWw+PC90ZXJtPgpAQCAtNDcwNSw2ICs0NzgxLDI2IEBA IHRlc3RkYj0mZ3Q7IDx1c2VyaW5wdXQ+SU5TRVJUIElOVE8gbXlfdGFibGUgVkFMVUVTICg6J2Nv bnRlbnQnKTs8L3VzZXJpbnB1dD4KICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgIDwvdmFybGlz dGVudHJ5PgogCisgICAgICA8dmFybGlzdGVudHJ5IGlkPSJhcHAtcHNxbC1wcm9tcHRpbmctcC11 YyI+CisgICAgICAgIDx0ZXJtPjxsaXRlcmFsPiVQPC9saXRlcmFsPjwvdGVybT4KKyAgICAgICAg PGxpc3RpdGVtPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgUGlwZWxpbmUgc3RhdHVzOiBhbiBl bXB0eSBzdHJpbmcgd2hlbiBub3QgaW4gYSBwaXBlbGluZSwKKyAgICAgICAgb3IgPGxpdGVyYWw+ fHBpcGVkX3N5bmNzLHBpcGVkX2NvbW1hbmRzLHBlbmRpbmdfcmVzdWx0c3w8L2xpdGVyYWw+Cisg ICAgICAgIHdoZW4gaW4gYW4gb25nb2luZyBwaXBlbGluZSwgb3IgPGxpdGVyYWw+K3BpcGVkX3N5 bmNzLHBpcGVkX2NvbW1hbmRzLHBlbmRpbmdfcmVzdWx0cys8L2xpdGVyYWw+CisgICAgICAgIHdo ZW4gaW4gYW4gYWJvcnRlZCBwaXBlbGluZS4gPGxpdGVyYWw+cGlwZWRfc3luY3M8L2xpdGVyYWw+ IGlzIHRoZQorICAgICAgICBudW1iZXIgb2Ygc3luY3MgcXVldWVkIGluIHRoZSBwaXBlbGluZS4g PGxpdGVyYWw+cGlwZWRfY29tbWFuZHM8L2xpdGVyYWw+CisgICAgICAgIGlzIHRoZSBudW1iZXIg b2YgY29tbWFuZHMgZ2VuZXJhdGVkIGJ5IDxsaXRlcmFsPlxiaW5kPC9saXRlcmFsPiwKKyAgICAg ICAgPGxpdGVyYWw+XGJpbmRfbmFtZWQ8L2xpdGVyYWw+LCA8bGl0ZXJhbD5cY2xvc2U8L2xpdGVy YWw+IG9yCisgICAgICAgIDxsaXRlcmFsPlxwYXJzZTwvbGl0ZXJhbD4gcXVldWVkIGluIHRoZSBw aXBlbGluZS4gPGxpdGVyYWw+cGVuZGluZ19yZXN1bHRzPC9saXRlcmFsPgorICAgICAgICBpcyB0 aGUgbnVtYmVyIG9mIGNvbW1hbmRzIHRoYXQgd2VyZSBmb2xsb3dlZCBieSBlaXRoZXIgYQorICAg ICAgICA8Y29tbWFuZD5cZmx1c2hyZXF1ZXN0PC9jb21tYW5kPiBvciBhIDxjb21tYW5kPlxzeW5j cGlwZWxpbmU8L2NvbW1hbmQ+LAorICAgICAgICBmb3JjaW5nIHRoZSBzZXJ2ZXIgdG8gc2VuZCB0 aGUgcmVzdWx0cyB0aGF0IGNhbiBiZSByZXRyaWV2ZWQgd2l0aAorICAgICAgICA8Y29tbWFuZD5c Z2V0cmVzdWx0czwvY29tbWFuZD4uCisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRl bT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorCiAgICAgICA8dmFybGlzdGVudHJ5IGlkPSJhcHAt cHNxbC1wcm9tcHRpbmctciI+CiAgICAgICAgIDx0ZXJtPjxsaXRlcmFsPiVSPC9saXRlcmFsPjwv dGVybT4KICAgICAgICAgPGxpc3RpdGVtPgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL2NvbW1h bmQuYyBiL3NyYy9iaW4vcHNxbC9jb21tYW5kLmMKaW5kZXggMWYzY2JiMTFmN2MuLjYxZDc5YjAy NTdlIDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvY29tbWFuZC5jCisrKyBiL3NyYy9iaW4vcHNx bC9jb21tYW5kLmMKQEAgLTkwLDkgKzkwLDEyIEBAIHN0YXRpYyBiYWNrc2xhc2hSZXN1bHQgZXhl Y19jb21tYW5kX2Vsc2UoUHNxbFNjYW5TdGF0ZSBzY2FuX3N0YXRlLCBDb25kaXRpb25hbFN0CiAJ CQkJCQkJCQkJIFBRRXhwQnVmZmVyIHF1ZXJ5X2J1Zik7CiBzdGF0aWMgYmFja3NsYXNoUmVzdWx0 IGV4ZWNfY29tbWFuZF9lbmRpZihQc3FsU2NhblN0YXRlIHNjYW5fc3RhdGUsIENvbmRpdGlvbmFs U3RhY2sgY3N0YWNrLAogCQkJCQkJCQkJCSAgUFFFeHBCdWZmZXIgcXVlcnlfYnVmKTsKK3N0YXRp YyBiYWNrc2xhc2hSZXN1bHQgZXhlY19jb21tYW5kX2VuZHBpcGVsaW5lKFBzcWxTY2FuU3RhdGUg c2Nhbl9zdGF0ZSwgYm9vbCBhY3RpdmVfYnJhbmNoKTsKIHN0YXRpYyBiYWNrc2xhc2hSZXN1bHQg ZXhlY19jb21tYW5kX2VuY29kaW5nKFBzcWxTY2FuU3RhdGUgc2Nhbl9zdGF0ZSwgYm9vbCBhY3Rp dmVfYnJhbmNoKTsKIHN0YXRpYyBiYWNrc2xhc2hSZXN1bHQgZXhlY19jb21tYW5kX2VycnZlcmJv c2UoUHNxbFNjYW5TdGF0ZSBzY2FuX3N0YXRlLCBib29sIGFjdGl2ZV9icmFuY2gpOwogc3RhdGlj IGJhY2tzbGFzaFJlc3VsdCBleGVjX2NvbW1hbmRfZihQc3FsU2NhblN0YXRlIHNjYW5fc3RhdGUs IGJvb2wgYWN0aXZlX2JyYW5jaCk7CitzdGF0aWMgYmFja3NsYXNoUmVzdWx0IGV4ZWNfY29tbWFu ZF9mbHVzaChQc3FsU2NhblN0YXRlIHNjYW5fc3RhdGUsIGJvb2wgYWN0aXZlX2JyYW5jaCk7Citz dGF0aWMgYmFja3NsYXNoUmVzdWx0IGV4ZWNfY29tbWFuZF9mbHVzaHJlcXVlc3QoUHNxbFNjYW5T dGF0ZSBzY2FuX3N0YXRlLCBib29sIGFjdGl2ZV9icmFuY2gpOwogc3RhdGljIGJhY2tzbGFzaFJl c3VsdCBleGVjX2NvbW1hbmRfZyhQc3FsU2NhblN0YXRlIHNjYW5fc3RhdGUsIGJvb2wgYWN0aXZl X2JyYW5jaCwKIAkJCQkJCQkJCSAgY29uc3QgY2hhciAqY21kKTsKIHN0YXRpYyBiYWNrc2xhc2hS ZXN1bHQgcHJvY2Vzc19jb21tYW5kX2dfb3B0aW9ucyhjaGFyICpmaXJzdF9vcHRpb24sCkBAIC0x MDMsNiArMTA2LDcgQEAgc3RhdGljIGJhY2tzbGFzaFJlc3VsdCBleGVjX2NvbW1hbmRfZ2Rlc2Mo UHNxbFNjYW5TdGF0ZSBzY2FuX3N0YXRlLCBib29sIGFjdGl2ZV8KIHN0YXRpYyBiYWNrc2xhc2hS ZXN1bHQgZXhlY19jb21tYW5kX2dldGVudihQc3FsU2NhblN0YXRlIHNjYW5fc3RhdGUsIGJvb2wg YWN0aXZlX2JyYW5jaCwKIAkJCQkJCQkJCQkgICBjb25zdCBjaGFyICpjbWQpOwogc3RhdGljIGJh Y2tzbGFzaFJlc3VsdCBleGVjX2NvbW1hbmRfZ2V4ZWMoUHNxbFNjYW5TdGF0ZSBzY2FuX3N0YXRl LCBib29sIGFjdGl2ZV9icmFuY2gpOworc3RhdGljIGJhY2tzbGFzaFJlc3VsdCBleGVjX2NvbW1h bmRfZ2V0cmVzdWx0cyhQc3FsU2NhblN0YXRlIHNjYW5fc3RhdGUsIGJvb2wgYWN0aXZlX2JyYW5j aCk7CiBzdGF0aWMgYmFja3NsYXNoUmVzdWx0IGV4ZWNfY29tbWFuZF9nc2V0KFBzcWxTY2FuU3Rh dGUgc2Nhbl9zdGF0ZSwgYm9vbCBhY3RpdmVfYnJhbmNoKTsKIHN0YXRpYyBiYWNrc2xhc2hSZXN1 bHQgZXhlY19jb21tYW5kX2hlbHAoUHNxbFNjYW5TdGF0ZSBzY2FuX3N0YXRlLCBib29sIGFjdGl2 ZV9icmFuY2gpOwogc3RhdGljIGJhY2tzbGFzaFJlc3VsdCBleGVjX2NvbW1hbmRfaHRtbChQc3Fs U2NhblN0YXRlIHNjYW5fc3RhdGUsIGJvb2wgYWN0aXZlX2JyYW5jaCk7CkBAIC0xMzIsNiArMTM2 LDggQEAgc3RhdGljIGJhY2tzbGFzaFJlc3VsdCBleGVjX2NvbW1hbmRfc2V0ZW52KFBzcWxTY2Fu U3RhdGUgc2Nhbl9zdGF0ZSwgYm9vbCBhY3RpdmUKIAkJCQkJCQkJCQkgICBjb25zdCBjaGFyICpj bWQpOwogc3RhdGljIGJhY2tzbGFzaFJlc3VsdCBleGVjX2NvbW1hbmRfc2Zfc3YoUHNxbFNjYW5T dGF0ZSBzY2FuX3N0YXRlLCBib29sIGFjdGl2ZV9icmFuY2gsCiAJCQkJCQkJCQkJICBjb25zdCBj aGFyICpjbWQsIGJvb2wgaXNfZnVuYyk7CitzdGF0aWMgYmFja3NsYXNoUmVzdWx0IGV4ZWNfY29t bWFuZF9zdGFydHBpcGVsaW5lKFBzcWxTY2FuU3RhdGUgc2Nhbl9zdGF0ZSwgYm9vbCBhY3RpdmVf YnJhbmNoKTsKK3N0YXRpYyBiYWNrc2xhc2hSZXN1bHQgZXhlY19jb21tYW5kX3N5bmNwaXBlbGlu ZShQc3FsU2NhblN0YXRlIHNjYW5fc3RhdGUsIGJvb2wgYWN0aXZlX2JyYW5jaCk7CiBzdGF0aWMg YmFja3NsYXNoUmVzdWx0IGV4ZWNfY29tbWFuZF90KFBzcWxTY2FuU3RhdGUgc2Nhbl9zdGF0ZSwg Ym9vbCBhY3RpdmVfYnJhbmNoKTsKIHN0YXRpYyBiYWNrc2xhc2hSZXN1bHQgZXhlY19jb21tYW5k X1QoUHNxbFNjYW5TdGF0ZSBzY2FuX3N0YXRlLCBib29sIGFjdGl2ZV9icmFuY2gpOwogc3RhdGlj IGJhY2tzbGFzaFJlc3VsdCBleGVjX2NvbW1hbmRfdGltaW5nKFBzcWxTY2FuU3RhdGUgc2Nhbl9z dGF0ZSwgYm9vbCBhY3RpdmVfYnJhbmNoKTsKQEAgLTM1MSwxOCArMzU3LDI2IEBAIGV4ZWNfY29t bWFuZChjb25zdCBjaGFyICpjbWQsCiAJCXN0YXR1cyA9IGV4ZWNfY29tbWFuZF9lbHNlKHNjYW5f c3RhdGUsIGNzdGFjaywgcXVlcnlfYnVmKTsKIAllbHNlIGlmIChzdHJjbXAoY21kLCAiZW5kaWYi KSA9PSAwKQogCQlzdGF0dXMgPSBleGVjX2NvbW1hbmRfZW5kaWYoc2Nhbl9zdGF0ZSwgY3N0YWNr LCBxdWVyeV9idWYpOworCWVsc2UgaWYgKHN0cmNtcChjbWQsICJlbmRwaXBlbGluZSIpID09IDAp CisJCXN0YXR1cyA9IGV4ZWNfY29tbWFuZF9lbmRwaXBlbGluZShzY2FuX3N0YXRlLCBhY3RpdmVf YnJhbmNoKTsKIAllbHNlIGlmIChzdHJjbXAoY21kLCAiZW5jb2RpbmciKSA9PSAwKQogCQlzdGF0 dXMgPSBleGVjX2NvbW1hbmRfZW5jb2Rpbmcoc2Nhbl9zdGF0ZSwgYWN0aXZlX2JyYW5jaCk7CiAJ ZWxzZSBpZiAoc3RyY21wKGNtZCwgImVycnZlcmJvc2UiKSA9PSAwKQogCQlzdGF0dXMgPSBleGVj X2NvbW1hbmRfZXJydmVyYm9zZShzY2FuX3N0YXRlLCBhY3RpdmVfYnJhbmNoKTsKIAllbHNlIGlm IChzdHJjbXAoY21kLCAiZiIpID09IDApCiAJCXN0YXR1cyA9IGV4ZWNfY29tbWFuZF9mKHNjYW5f c3RhdGUsIGFjdGl2ZV9icmFuY2gpOworCWVsc2UgaWYgKHN0cmNtcChjbWQsICJmbHVzaCIpID09 IDApCisJCXN0YXR1cyA9IGV4ZWNfY29tbWFuZF9mbHVzaChzY2FuX3N0YXRlLCBhY3RpdmVfYnJh bmNoKTsKKwllbHNlIGlmIChzdHJjbXAoY21kLCAiZmx1c2hyZXF1ZXN0IikgPT0gMCkKKwkJc3Rh dHVzID0gZXhlY19jb21tYW5kX2ZsdXNocmVxdWVzdChzY2FuX3N0YXRlLCBhY3RpdmVfYnJhbmNo KTsKIAllbHNlIGlmIChzdHJjbXAoY21kLCAiZyIpID09IDAgfHwgc3RyY21wKGNtZCwgImd4Iikg PT0gMCkKIAkJc3RhdHVzID0gZXhlY19jb21tYW5kX2coc2Nhbl9zdGF0ZSwgYWN0aXZlX2JyYW5j aCwgY21kKTsKIAllbHNlIGlmIChzdHJjbXAoY21kLCAiZ2Rlc2MiKSA9PSAwKQogCQlzdGF0dXMg PSBleGVjX2NvbW1hbmRfZ2Rlc2Moc2Nhbl9zdGF0ZSwgYWN0aXZlX2JyYW5jaCk7CiAJZWxzZSBp ZiAoc3RyY21wKGNtZCwgImdldGVudiIpID09IDApCiAJCXN0YXR1cyA9IGV4ZWNfY29tbWFuZF9n ZXRlbnYoc2Nhbl9zdGF0ZSwgYWN0aXZlX2JyYW5jaCwgY21kKTsKKwllbHNlIGlmIChzdHJjbXAo Y21kLCAiZ2V0cmVzdWx0cyIpID09IDApCisJCXN0YXR1cyA9IGV4ZWNfY29tbWFuZF9nZXRyZXN1 bHRzKHNjYW5fc3RhdGUsIGFjdGl2ZV9icmFuY2gpOwogCWVsc2UgaWYgKHN0cmNtcChjbWQsICJn ZXhlYyIpID09IDApCiAJCXN0YXR1cyA9IGV4ZWNfY29tbWFuZF9nZXhlYyhzY2FuX3N0YXRlLCBh Y3RpdmVfYnJhbmNoKTsKIAllbHNlIGlmIChzdHJjbXAoY21kLCAiZ3NldCIpID09IDApCkBAIC00 MDgsNiArNDIyLDEwIEBAIGV4ZWNfY29tbWFuZChjb25zdCBjaGFyICpjbWQsCiAJCXN0YXR1cyA9 IGV4ZWNfY29tbWFuZF9zZl9zdihzY2FuX3N0YXRlLCBhY3RpdmVfYnJhbmNoLCBjbWQsIHRydWUp OwogCWVsc2UgaWYgKHN0cmNtcChjbWQsICJzdiIpID09IDAgfHwgc3RyY21wKGNtZCwgInN2KyIp ID09IDApCiAJCXN0YXR1cyA9IGV4ZWNfY29tbWFuZF9zZl9zdihzY2FuX3N0YXRlLCBhY3RpdmVf YnJhbmNoLCBjbWQsIGZhbHNlKTsKKwllbHNlIGlmIChzdHJjbXAoY21kLCAic3RhcnRwaXBlbGlu ZSIpID09IDApCisJCXN0YXR1cyA9IGV4ZWNfY29tbWFuZF9zdGFydHBpcGVsaW5lKHNjYW5fc3Rh dGUsIGFjdGl2ZV9icmFuY2gpOworCWVsc2UgaWYgKHN0cmNtcChjbWQsICJzeW5jcGlwZWxpbmUi KSA9PSAwKQorCQlzdGF0dXMgPSBleGVjX2NvbW1hbmRfc3luY3BpcGVsaW5lKHNjYW5fc3RhdGUs IGFjdGl2ZV9icmFuY2gpOwogCWVsc2UgaWYgKHN0cmNtcChjbWQsICJ0IikgPT0gMCkKIAkJc3Rh dHVzID0gZXhlY19jb21tYW5kX3Qoc2Nhbl9zdGF0ZSwgYWN0aXZlX2JyYW5jaCk7CiAJZWxzZSBp ZiAoc3RyY21wKGNtZCwgIlQiKSA9PSAwKQpAQCAtMTQ5MSw2ICsxNTA5LDM4IEBAIGV4ZWNfY29t bWFuZF9mKFBzcWxTY2FuU3RhdGUgc2Nhbl9zdGF0ZSwgYm9vbCBhY3RpdmVfYnJhbmNoKQogCXJl dHVybiBzdWNjZXNzID8gUFNRTF9DTURfU0tJUF9MSU5FIDogUFNRTF9DTURfRVJST1I7CiB9CiAK Ky8qCisgKiBcZmx1c2ggLS0gY2FsbCBQUWZsdXNoIG9uIHRoZSBjb25uZWN0aW9uCisgKi8KK3N0 YXRpYyBiYWNrc2xhc2hSZXN1bHQKK2V4ZWNfY29tbWFuZF9mbHVzaChQc3FsU2NhblN0YXRlIHNj YW5fc3RhdGUsIGJvb2wgYWN0aXZlX2JyYW5jaCkKK3sKKwlpZiAoYWN0aXZlX2JyYW5jaCkKKwl7 CisJCXBzZXQuc2VuZF9tb2RlID0gUFNRTF9GTFVTSDsKKwl9CisJZWxzZQorCQlpZ25vcmVfc2xh c2hfb3B0aW9ucyhzY2FuX3N0YXRlKTsKKworCXJldHVybiBQU1FMX0NNRF9TRU5EOworfQorCisv KgorICogXGZsdXNocmVxdWVzdCAtLSBzZW5kIGEgZmx1c2ggcmVxdWVzdCB0byB0aGUgc2VydmVy CisgKi8KK3N0YXRpYyBiYWNrc2xhc2hSZXN1bHQKK2V4ZWNfY29tbWFuZF9mbHVzaHJlcXVlc3Qo UHNxbFNjYW5TdGF0ZSBzY2FuX3N0YXRlLCBib29sIGFjdGl2ZV9icmFuY2gpCit7CisJaWYgKGFj dGl2ZV9icmFuY2gpCisJeworCQlwc2V0LnNlbmRfbW9kZSA9IFBTUUxfU0VORF9GTFVTSF9SRVFV RVNUOworCX0KKwllbHNlCisJCWlnbm9yZV9zbGFzaF9vcHRpb25zKHNjYW5fc3RhdGUpOworCisJ cmV0dXJuIFBTUUxfQ01EX1NFTkQ7Cit9CisKIC8qCiAgKiBcZyAgWyhwc2V0LW9wdGlvbls9cHNl dC12YWx1ZV0gLi4uKV0gW2ZpbGVuYW1lL3NoZWxsLWNvbW1hbmRdCiAgKiBcZ3ggWyhwc2V0LW9w dGlvbls9cHNldC12YWx1ZV0gLi4uKV0gW2ZpbGVuYW1lL3NoZWxsLWNvbW1hbmRdCkBAIC0xNTI2 LDYgKzE1NzYsMTMgQEAgZXhlY19jb21tYW5kX2coUHNxbFNjYW5TdGF0ZSBzY2FuX3N0YXRlLCBi b29sIGFjdGl2ZV9icmFuY2gsIGNvbnN0IGNoYXIgKmNtZCkKIAogCWlmIChzdGF0dXMgPT0gUFNR TF9DTURfU0tJUF9MSU5FICYmIGFjdGl2ZV9icmFuY2gpCiAJeworCQlpZiAoc3RyY21wKGNtZCwg Imd4IikgPT0gMCAmJiBQUXBpcGVsaW5lU3RhdHVzKHBzZXQuZGIpICE9IFBRX1BJUEVMSU5FX09G RikKKwkJeworCQkJcGdfbG9nX2Vycm9yKCJcXGd4IG5vdCBhbGxvd2VkIGluIHBpcGVsaW5lIG1v ZGUiKTsKKwkJCWNsZWFuX2V4dGVuZGVkX3N0YXRlKCk7CisJCQlyZXR1cm4gUFNRTF9DTURfRVJS T1I7CisJCX0KKwogCQlpZiAoIWZuYW1lKQogCQkJcHNldC5nZm5hbWUgPSBOVUxMOwogCQllbHNl CkBAIC0xNjc5LDYgKzE3MzYsMzkgQEAgZXhlY19jb21tYW5kX2dldGVudihQc3FsU2NhblN0YXRl IHNjYW5fc3RhdGUsIGJvb2wgYWN0aXZlX2JyYW5jaCwKIAlyZXR1cm4gc3VjY2VzcyA/IFBTUUxf Q01EX1NLSVBfTElORSA6IFBTUUxfQ01EX0VSUk9SOwogfQogCisvKgorICogXGdldHJlc3VsdHMg LS0gcmVhZCByZXN1bHRzCisgKi8KK3N0YXRpYyBiYWNrc2xhc2hSZXN1bHQKK2V4ZWNfY29tbWFu ZF9nZXRyZXN1bHRzKFBzcWxTY2FuU3RhdGUgc2Nhbl9zdGF0ZSwgYm9vbCBhY3RpdmVfYnJhbmNo KQoreworCWlmIChhY3RpdmVfYnJhbmNoKQorCXsKKwkJY2hhcgkgICAqb3B0OworCQlpbnQJCQlu dW1fcmVzdWx0czsKKworCQlwc2V0LnNlbmRfbW9kZSA9IFBTUUxfR0VUX1JFU1VMVFM7CisJCW9w dCA9IHBzcWxfc2Nhbl9zbGFzaF9vcHRpb24oc2Nhbl9zdGF0ZSwgT1RfTk9STUFMLCBOVUxMLCBm YWxzZSk7CisKKwkJcHNldC5yZXF1ZXN0ZWRfcmVzdWx0cyA9IDA7CisJCWlmIChvcHQgIT0gTlVM TCkKKwkJeworCQkJbnVtX3Jlc3VsdHMgPSBhdG9pKG9wdCk7CisJCQlpZiAobnVtX3Jlc3VsdHMg PCAwKQorCQkJeworCQkJCXBnX2xvZ19lcnJvcigiXFxnZXRyZXN1bHRzOiBpbnZhbGlkIG51bWJl ciBvZiByZXF1ZXN0ZWQgcmVzdWx0cyIpOworCQkJCXJldHVybiBQU1FMX0NNRF9TS0lQX0xJTkU7 CisJCQl9CisJCQlwc2V0LnJlcXVlc3RlZF9yZXN1bHRzID0gbnVtX3Jlc3VsdHM7CisJCX0KKwl9 CisJZWxzZQorCQlpZ25vcmVfc2xhc2hfb3B0aW9ucyhzY2FuX3N0YXRlKTsKKworCXJldHVybiBQ U1FMX0NNRF9TRU5EOworfQorCisKIC8qCiAgKiBcZ2V4ZWMgLS0gc2VuZCBxdWVyeSBhbmQgZXhl Y3V0ZSBlYWNoIGZpZWxkIG9mIHJlc3VsdAogICovCkBAIC0xNjg5LDYgKzE3NzksMTIgQEAgZXhl Y19jb21tYW5kX2dleGVjKFBzcWxTY2FuU3RhdGUgc2Nhbl9zdGF0ZSwgYm9vbCBhY3RpdmVfYnJh bmNoKQogCiAJaWYgKGFjdGl2ZV9icmFuY2gpCiAJeworCQlpZiAoUFFwaXBlbGluZVN0YXR1cyhw c2V0LmRiKSAhPSBQUV9QSVBFTElORV9PRkYpCisJCXsKKwkJCXBnX2xvZ19lcnJvcigiXFxnZXhl YyBub3QgYWxsb3dlZCBpbiBwaXBlbGluZSBtb2RlIik7CisJCQljbGVhbl9leHRlbmRlZF9zdGF0 ZSgpOworCQkJcmV0dXJuIFBTUUxfQ01EX0VSUk9SOworCQl9CiAJCXBzZXQuZ2V4ZWNfZmxhZyA9 IHRydWU7CiAJCXN0YXR1cyA9IFBTUUxfQ01EX1NFTkQ7CiAJfQpAQCAtMTcwOSw2ICsxODA1LDEz IEBAIGV4ZWNfY29tbWFuZF9nc2V0KFBzcWxTY2FuU3RhdGUgc2Nhbl9zdGF0ZSwgYm9vbCBhY3Rp dmVfYnJhbmNoKQogCQljaGFyCSAgICpwcmVmaXggPSBwc3FsX3NjYW5fc2xhc2hfb3B0aW9uKHNj YW5fc3RhdGUsCiAJCQkJCQkJCQkJCQkJT1RfTk9STUFMLCBOVUxMLCBmYWxzZSk7CiAKKwkJaWYg KFBRcGlwZWxpbmVTdGF0dXMocHNldC5kYikgIT0gUFFfUElQRUxJTkVfT0ZGKQorCQl7CisJCQlw Z19sb2dfZXJyb3IoIlxcZ3NldCBub3QgYWxsb3dlZCBpbiBwaXBlbGluZSBtb2RlIik7CisJCQlj bGVhbl9leHRlbmRlZF9zdGF0ZSgpOworCQkJcmV0dXJuIFBTUUxfQ01EX0VSUk9SOworCQl9CisK IAkJaWYgKHByZWZpeCkKIAkJCXBzZXQuZ3NldF9wcmVmaXggPSBwcmVmaXg7CiAJCWVsc2UKQEAg LTI2NzIsNiArMjc3NSw1NCBAQCBleGVjX2NvbW1hbmRfc2Zfc3YoUHNxbFNjYW5TdGF0ZSBzY2Fu X3N0YXRlLCBib29sIGFjdGl2ZV9icmFuY2gsCiAJcmV0dXJuIHN0YXR1czsKIH0KIAorLyoKKyAq IFxzdGFydHBpcGVsaW5lIC0tIGVudGVyIHBpcGVsaW5lIG1vZGUKKyAqLworc3RhdGljIGJhY2tz bGFzaFJlc3VsdAorZXhlY19jb21tYW5kX3N0YXJ0cGlwZWxpbmUoUHNxbFNjYW5TdGF0ZSBzY2Fu X3N0YXRlLCBib29sIGFjdGl2ZV9icmFuY2gpCit7CisJaWYgKGFjdGl2ZV9icmFuY2gpCisJewor CQlwc2V0LnNlbmRfbW9kZSA9IFBTUUxfU1RBUlRfUElQRUxJTkVfTU9ERTsKKwl9CisJZWxzZQor CQlpZ25vcmVfc2xhc2hfb3B0aW9ucyhzY2FuX3N0YXRlKTsKKworCXJldHVybiBQU1FMX0NNRF9T RU5EOworfQorCisvKgorICogXHN5bmNwaXBlbGluZSAtLSBzZW5kIGEgc3luYyBtZXNzYWdlIHRv IGFuIGFjdGl2ZSBwaXBlbGluZQorICovCitzdGF0aWMgYmFja3NsYXNoUmVzdWx0CitleGVjX2Nv bW1hbmRfc3luY3BpcGVsaW5lKFBzcWxTY2FuU3RhdGUgc2Nhbl9zdGF0ZSwgYm9vbCBhY3RpdmVf YnJhbmNoKQoreworCWlmIChhY3RpdmVfYnJhbmNoKQorCXsKKwkJcHNldC5zZW5kX21vZGUgPSBQ U1FMX1NFTkRfUElQRUxJTkVfU1lOQzsKKwl9CisJZWxzZQorCQlpZ25vcmVfc2xhc2hfb3B0aW9u cyhzY2FuX3N0YXRlKTsKKworCXJldHVybiBQU1FMX0NNRF9TRU5EOworfQorCisvKgorICogXGVu ZHBpcGVsaW5lIC0tIGVuZCBwaXBlbGluZSBtb2RlCisgKi8KK3N0YXRpYyBiYWNrc2xhc2hSZXN1 bHQKK2V4ZWNfY29tbWFuZF9lbmRwaXBlbGluZShQc3FsU2NhblN0YXRlIHNjYW5fc3RhdGUsIGJv b2wgYWN0aXZlX2JyYW5jaCkKK3sKKwlpZiAoYWN0aXZlX2JyYW5jaCkKKwl7CisJCXBzZXQuc2Vu ZF9tb2RlID0gUFNRTF9FTkRfUElQRUxJTkVfTU9ERTsKKwl9CisJZWxzZQorCQlpZ25vcmVfc2xh c2hfb3B0aW9ucyhzY2FuX3N0YXRlKTsKKworCXJldHVybiBQU1FMX0NNRF9TRU5EOworfQorCiAv KgogICogXHQgLS0gdHVybiBvZmYgdGFibGUgaGVhZGVycyBhbmQgcm93IGNvdW50CiAgKi8KZGlm ZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9jb21tb24uYyBiL3NyYy9iaW4vcHNxbC9jb21tb24uYwpp bmRleCA4YTkyMTFkYjQxYS4uZWJjOWNkNjhhYjAgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC9j b21tb24uYworKysgYi9zcmMvYmluL3BzcWwvY29tbW9uLmMKQEAgLTQxNSwxMCArNDE1LDEyIEBA IEFjY2VwdFJlc3VsdChjb25zdCBQR3Jlc3VsdCAqcmVzdWx0LCBib29sIHNob3dfZXJyb3IpCiAJ CQljYXNlIFBHUkVTX0VNUFRZX1FVRVJZOgogCQkJY2FzZSBQR1JFU19DT1BZX0lOOgogCQkJY2Fz ZSBQR1JFU19DT1BZX09VVDoKKwkJCWNhc2UgUEdSRVNfUElQRUxJTkVfU1lOQzoKIAkJCQkvKiBG aW5lLCBkbyBub3RoaW5nICovCiAJCQkJT0sgPSB0cnVlOwogCQkJCWJyZWFrOwogCisJCQljYXNl IFBHUkVTX1BJUEVMSU5FX0FCT1JURUQ6CiAJCQljYXNlIFBHUkVTX0JBRF9SRVNQT05TRToKIAkJ CWNhc2UgUEdSRVNfTk9ORkFUQUxfRVJST1I6CiAJCQljYXNlIFBHUkVTX0ZBVEFMX0VSUk9SOgpA QCAtMTA1MCw2ICsxMDUyLDcgQEAgUHJpbnRRdWVyeVJlc3VsdChQR3Jlc3VsdCAqcmVzdWx0LCBi b29sIGxhc3QsCiAJCQlzdWNjZXNzID0gdHJ1ZTsKIAkJCWJyZWFrOwogCisJCWNhc2UgUEdSRVNf UElQRUxJTkVfQUJPUlRFRDoKIAkJY2FzZSBQR1JFU19CQURfUkVTUE9OU0U6CiAJCWNhc2UgUEdS RVNfTk9ORkFUQUxfRVJST1I6CiAJCWNhc2UgUEdSRVNfRkFUQUxfRVJST1I6CkBAIC0xNDE4LDYg KzE0MjEsNjAgQEAgRGVzY3JpYmVRdWVyeShjb25zdCBjaGFyICpxdWVyeSwgZG91YmxlICplbGFw c2VkX21zZWMpCiAJcmV0dXJuIE9LOwogfQogCisvKgorICogUmVhZCBhbmQgZGlzY2FyZCBhbGwg cmVzdWx0cyBpbiBhbiBhYm9ydGVkIHBpcGVsaW5lLgorICoKKyAqIElmIGEgc3luY2hyb25pc2F0 aW9uIHBvaW50IGlzIGZvdW5kLCB3ZSBjYW4gc3RvcCBkaXNjYXJkaW5nIHJlc3VsdHMgYXMKKyAq IHBpcGVsaW5lIHdpbGwgc3dpdGNoIGJhY2sgdG8gYW4gT0sgc3RhdGUuIElmIG5vIHN5bmNocm9u aXNhdGlvbiBwb2ludAorICogaXMgYXZhaWxhYmxlLCB3ZSBuZWVkIHRvIHN0b3Agd2hlbiB0aGVy ZSdzIG5vIG1vcmUgcGVuZGluZyByZXN1bHRzLAorICogb3RoZXJ3aXNlLCBjYWxsaW5nIFBRZ2V0 UmVzdWx0cyB3aWxsIGJsb2NrLgorICovCitzdGF0aWMgUEdyZXN1bHQgKgorZGlzY2FyZEFib3J0 ZWRQaXBlbGluZVJlc3VsdHModm9pZCkKK3sKKwlmb3IgKDs7KQorCXsKKwkJUEdyZXN1bHQgICAq cmVzID0gUFFnZXRSZXN1bHQocHNldC5kYik7CisJCUV4ZWNTdGF0dXNUeXBlIHJlc3VsdF9zdGF0 dXMgPSBQUXJlc3VsdFN0YXR1cyhyZXMpOworCisJCWlmIChyZXN1bHRfc3RhdHVzID09IFBHUkVT X1BJUEVMSU5FX1NZTkMpCisJCXsKKwkJCS8qCisJCQkgKiBGb3VuZCBhIHN5bmNocm9uaXNhdGlv biBwb2ludC4gRGVjcmVtZW50aW5nIHRoZSBzeW5jIGNvdW50ZXIKKwkJCSAqIHdpbGwgYmUgZG9u ZSBieSB0aGUgY2FsbGVyCisJCQkgKi8KKwkJCXJldHVybiByZXM7CisJCX0KKwkJZWxzZSBpZiAo cmVzID09IE5VTEwpCisJCXsKKwkJCS8qIEEgcXVlcnkgd2FzIHByb2Nlc3NlZCwgZGVjcmVtZW50 IHRoZSBjb3VudGVycyAqLworCQkJcHNldC5wZW5kaW5nX3Jlc3VsdHMtLTsKKwkJCXBzZXQucmVx dWVzdGVkX3Jlc3VsdHMtLTsKKwkJfQorCQllbHNlIGlmIChyZXMgIT0gTlVMTCAmJiByZXN1bHRf c3RhdHVzID09IFBHUkVTX0ZBVEFMX0VSUk9SKQorCQkJcmV0dXJuIHJlczsKKworCQlpZiAocHNl dC5yZXF1ZXN0ZWRfcmVzdWx0cyA9PSAwKQorCQkJLyogV2UndmUgcmVhZCBhbGwgcmVxdWVzdGVk IHJlc3VsdHMsIGV4aXQgKi8KKwkJCXJldHVybiByZXM7CisKKwkJaWYgKHBzZXQucGVuZGluZ19y ZXN1bHRzID09IDAgJiYgcHNldC5waXBlZF9zeW5jcyA9PSAwKQorCisJCQkvKgorCQkJICogVGhl cmUncyBubyBtb3JlIHJlc3VsdHMgdG8gZ2V0IGFuZCB0aGVyZSdzIG5vIHN5bmNocm9uaXNhdGlv bgorCQkJICogcG9pbnQgdG8gc3RvcCBhdC4gVGhpcyB3aWxsIGxlYXZlIHRoZSBwaXBlbGluZSBp biBhbiBhYm9ydGVkCisJCQkgKiBzdGF0ZS4KKwkJCSAqLworCQkJcmV0dXJuIHJlczsKKworCQkv KgorCQkgKiBBbiBhYm9ydGVkIHBpcGVsaW5lIHdpbGwgaGF2ZSBlaXRoZXIgTlVMTCByZXN1bHRz IG9yIHJlc3VsdHMgaW4gYW4KKwkJICogUEdSRVNfUElQRUxJTkVfQUJPUlRFRCBzdGF0dXMKKwkJ ICovCisJCUFzc2VydChyZXMgPT0gTlVMTCB8fCByZXN1bHRfc3RhdHVzID09IFBHUkVTX1BJUEVM SU5FX0FCT1JURUQpOworCQlQUWNsZWFyKHJlcyk7CisJfQorfQogCiAvKgogICogRXhlY1F1ZXJ5 QW5kUHJvY2Vzc1Jlc3VsdHM6IHV0aWxpdHkgZnVuY3Rpb24gZm9yIHVzZSBieSBTZW5kUXVlcnko KQpAQCAtMTQ1MSw2ICsxNTA4LDcgQEAgRXhlY1F1ZXJ5QW5kUHJvY2Vzc1Jlc3VsdHMoY29uc3Qg Y2hhciAqcXVlcnksCiAJYm9vbAkJdGltaW5nID0gcHNldC50aW1pbmc7CiAJYm9vbAkJc3VjY2Vz cyA9IGZhbHNlOwogCWJvb2wJCXJldHVybl9lYXJseSA9IGZhbHNlOworCWJvb2wJCWVuZF9waXBl bGluZSA9IGZhbHNlOwogCWluc3RyX3RpbWUJYmVmb3JlLAogCQkJCWFmdGVyOwogCVBHcmVzdWx0 ICAgKnJlc3VsdDsKQEAgLTE0NjYsOSArMTUyNCwxMyBAQCBFeGVjUXVlcnlBbmRQcm9jZXNzUmVz dWx0cyhjb25zdCBjaGFyICpxdWVyeSwKIAl7CiAJCWNhc2UgUFNRTF9TRU5EX0VYVEVOREVEX0NM T1NFOgogCQkJc3VjY2VzcyA9IFBRc2VuZENsb3NlUHJlcGFyZWQocHNldC5kYiwgcHNldC5zdG10 TmFtZSk7CisJCQlpZiAoc3VjY2VzcyAmJiBQUXBpcGVsaW5lU3RhdHVzKHBzZXQuZGIpICE9IFBR X1BJUEVMSU5FX09GRikKKwkJCQlwc2V0LnBpcGVkX2NvbW1hbmRzKys7CiAJCQlicmVhazsKIAkJ Y2FzZSBQU1FMX1NFTkRfRVhURU5ERURfUEFSU0U6CiAJCQlzdWNjZXNzID0gUFFzZW5kUHJlcGFy ZShwc2V0LmRiLCBwc2V0LnN0bXROYW1lLCBxdWVyeSwgMCwgTlVMTCk7CisJCQlpZiAoc3VjY2Vz cyAmJiBQUXBpcGVsaW5lU3RhdHVzKHBzZXQuZGIpICE9IFBRX1BJUEVMSU5FX09GRikKKwkJCQlw c2V0LnBpcGVkX2NvbW1hbmRzKys7CiAJCQlicmVhazsKIAkJY2FzZSBQU1FMX1NFTkRfRVhURU5E RURfUVVFUllfUEFSQU1TOgogCQkJQXNzZXJ0KHBzZXQuc3RtdE5hbWUgPT0gTlVMTCk7CkBAIC0x NDc2LDYgKzE1MzgsOCBAQCBFeGVjUXVlcnlBbmRQcm9jZXNzUmVzdWx0cyhjb25zdCBjaGFyICpx dWVyeSwKIAkJCQkJCQkJCQlwc2V0LmJpbmRfbnBhcmFtcywgTlVMTCwKIAkJCQkJCQkJCQkoY29u c3QgY2hhciAqY29uc3QgKikgcHNldC5iaW5kX3BhcmFtcywKIAkJCQkJCQkJCQlOVUxMLCBOVUxM LCAwKTsKKwkJCWlmIChzdWNjZXNzICYmIFBRcGlwZWxpbmVTdGF0dXMocHNldC5kYikgIT0gUFFf UElQRUxJTkVfT0ZGKQorCQkJCXBzZXQucGlwZWRfY29tbWFuZHMrKzsKIAkJCWJyZWFrOwogCQlj YXNlIFBTUUxfU0VORF9FWFRFTkRFRF9RVUVSWV9QUkVQQVJFRDoKIAkJCUFzc2VydChwc2V0LnN0 bXROYW1lICE9IE5VTEwpOwpAQCAtMTQ4Myw2ICsxNTQ3LDY3IEBAIEV4ZWNRdWVyeUFuZFByb2Nl c3NSZXN1bHRzKGNvbnN0IGNoYXIgKnF1ZXJ5LAogCQkJCQkJCQkJCSAgcHNldC5iaW5kX25wYXJh bXMsCiAJCQkJCQkJCQkJICAoY29uc3QgY2hhciAqY29uc3QgKikgcHNldC5iaW5kX3BhcmFtcywK IAkJCQkJCQkJCQkgIE5VTEwsIE5VTEwsIDApOworCQkJaWYgKHN1Y2Nlc3MgJiYgUFFwaXBlbGlu ZVN0YXR1cyhwc2V0LmRiKSAhPSBQUV9QSVBFTElORV9PRkYpCisJCQkJcHNldC5waXBlZF9jb21t YW5kcysrOworCQkJYnJlYWs7CisJCWNhc2UgUFNRTF9TVEFSVF9QSVBFTElORV9NT0RFOgorCQkJ c3VjY2VzcyA9IFBRZW50ZXJQaXBlbGluZU1vZGUocHNldC5kYik7CisJCQlicmVhazsKKwkJY2Fz ZSBQU1FMX0VORF9QSVBFTElORV9NT0RFOgorCQkJc3VjY2VzcyA9IFBRcGlwZWxpbmVTeW5jKHBz ZXQuZGIpOworCQkJaWYgKHN1Y2Nlc3MgJiYgUFFwaXBlbGluZVN0YXR1cyhwc2V0LmRiKSAhPSBQ UV9QSVBFTElORV9PRkYpCisJCQl7CisJCQkJLyoKKwkJCQkgKiBFbmQgb2YgdGhlIHBpcGVsaW5l LCBhbGwgcXVldWVkIGNvbW1hbmRzIG5lZWQgdG8gYmUKKwkJCQkgKiBwcm9jZXNzZWQKKwkJCQkg Ki8KKwkJCQllbmRfcGlwZWxpbmUgPSB0cnVlOworCQkJCXBzZXQucGlwZWRfc3luY3MrKzsKKwkJ CQlwc2V0LnBlbmRpbmdfcmVzdWx0cyArPSBwc2V0LnBpcGVkX2NvbW1hbmRzOworCQkJCXBzZXQu cGlwZWRfY29tbWFuZHMgPSAwOworCQkJCXBzZXQucmVxdWVzdGVkX3Jlc3VsdHMgPSBwc2V0LnBl bmRpbmdfcmVzdWx0cyArIHBzZXQucGlwZWRfc3luY3M7CisJCQl9CisJCQlicmVhazsKKwkJY2Fz ZSBQU1FMX1NFTkRfUElQRUxJTkVfU1lOQzoKKwkJCXN1Y2Nlc3MgPSBQUXNlbmRQaXBlbGluZVN5 bmMocHNldC5kYik7CisJCQlpZiAoc3VjY2VzcyAmJiBQUXBpcGVsaW5lU3RhdHVzKHBzZXQuZGIp ICE9IFBRX1BJUEVMSU5FX09GRikKKwkJCXsKKwkJCQlwc2V0LnBpcGVkX3N5bmNzKys7CisJCQkJ cHNldC5wZW5kaW5nX3Jlc3VsdHMgKz0gcHNldC5waXBlZF9jb21tYW5kczsKKwkJCQlwc2V0LnBp cGVkX2NvbW1hbmRzID0gMDsKKwkJCX0KKwkJCWJyZWFrOworCQljYXNlIFBTUUxfRkxVU0g6CisJ CQlzdWNjZXNzID0gUFFmbHVzaChwc2V0LmRiKTsKKwkJCWJyZWFrOworCQljYXNlIFBTUUxfU0VO RF9GTFVTSF9SRVFVRVNUOgorCQkJc3VjY2VzcyA9IFBRc2VuZEZsdXNoUmVxdWVzdChwc2V0LmRi KTsKKwkJCWlmIChzdWNjZXNzICYmIFBRcGlwZWxpbmVTdGF0dXMocHNldC5kYikgIT0gUFFfUElQ RUxJTkVfT0ZGKQorCQkJeworCQkJCXBzZXQucGVuZGluZ19yZXN1bHRzICs9IHBzZXQucGlwZWRf Y29tbWFuZHM7CisJCQkJcHNldC5waXBlZF9jb21tYW5kcyA9IDA7CisJCQl9CisJCQlicmVhazsK KwkJY2FzZSBQU1FMX0dFVF9SRVNVTFRTOgorCQkJaWYgKHBzZXQucGVuZGluZ19yZXN1bHRzID09 IDAgJiYgcHNldC5waXBlZF9zeW5jcyA9PSAwKQorCQkJeworCQkJCS8qCisJCQkJICogSWYgbm8g c3luYyBvciBmbHVzaCByZXF1ZXN0IHdlcmUgc2VudCwgUFFnZXRSZXN1bHQgd2lsbAorCQkJCSAq IGJsb2NrLiBGb3JiaWQgdGhlIGNhbGwgdG8gXGdldHJlc3VsdHMgdG8gYXZvaWQgc3RheWluZwor CQkJCSAqIHN0dWNrCisJCQkJICovCisJCQkJcGdfbG9nX2luZm8oIk5vIHBlbmRpbmcgcmVzdWx0 cyB0byBnZXQiKTsKKwkJCQlzdWNjZXNzID0gZmFsc2U7CisJCQkJcHNldC5yZXF1ZXN0ZWRfcmVz dWx0cyA9IDA7CisJCQl9CisJCQllbHNlCisJCQl7CisJCQkJc3VjY2VzcyA9IHRydWU7CisJCQkJ LyogQ2FwIHJlcXVlc3RlZF9yZXN1bHRzIHRvIHRoZSBtYXhpbXVtIGtub3duIHJlc3VsdHMgKi8K KwkJCQlpZiAocHNldC5yZXF1ZXN0ZWRfcmVzdWx0cyA9PSAwIHx8CisJCQkJCXBzZXQucmVxdWVz dGVkX3Jlc3VsdHMgPiAocHNldC5wZW5kaW5nX3Jlc3VsdHMgKyBwc2V0LnBpcGVkX3N5bmNzKSkK KwkJCQkJcHNldC5yZXF1ZXN0ZWRfcmVzdWx0cyA9IHBzZXQucGVuZGluZ19yZXN1bHRzICsgcHNl dC5waXBlZF9zeW5jczsKKwkJCX0KIAkJCWJyZWFrOwogCQljYXNlIFBTUUxfU0VORF9RVUVSWToK IAkJCXN1Y2Nlc3MgPSBQUXNlbmRRdWVyeShwc2V0LmRiLCBxdWVyeSk7CkBAIC0xNTAxLDYgKzE2 MjYsMTYgQEAgRXhlY1F1ZXJ5QW5kUHJvY2Vzc1Jlc3VsdHMoY29uc3QgY2hhciAqcXVlcnksCiAJ CXJldHVybiAtMTsKIAl9CiAKKwlpZiAocHNldC5yZXF1ZXN0ZWRfcmVzdWx0cyA9PSAwICYmICFl bmRfcGlwZWxpbmUgJiYKKwkJUFFwaXBlbGluZVN0YXR1cyhwc2V0LmRiKSAhPSBQUV9QSVBFTElO RV9PRkYpCisJeworCQkvKgorCQkgKiBXZSdyZSBpbiBhIHBpcGVsaW5lIGFuZCBoYXZlbid0IHJl YWNoZWQgdGhlIHBpcGVsaW5lIGVuZCBvciB0aGVyZQorCQkgKiB3YXMgbm8gcmVxdWVzdCB0byBy ZWFkIHBpcGVsaW5lIHJlc3VsdHMsIGV4aXQuCisJCSAqLworCQlyZXR1cm4gMTsKKwl9CisKIAkv KgogCSAqIEZldGNoIHRoZSByZXN1bHQgaW4gY2h1bmtzIGlmIEZFVENIX0NPVU5UIGlzIHNldCwg ZXhjZXB0IHdoZW46CiAJICoKQEAgLTE1NDgsNyArMTY4Myw3IEBAIEV4ZWNRdWVyeUFuZFByb2Nl c3NSZXN1bHRzKGNvbnN0IGNoYXIgKnF1ZXJ5LAogCXsKIAkJRXhlY1N0YXR1c1R5cGUgcmVzdWx0 X3N0YXR1czsKIAkJYm9vbAkJaXNfY2h1bmtlZF9yZXN1bHQgPSBmYWxzZTsKLQkJUEdyZXN1bHQg ICAqbmV4dF9yZXN1bHQ7CisJCVBHcmVzdWx0ICAgKm5leHRfcmVzdWx0ID0gTlVMTDsKIAkJYm9v bAkJbGFzdDsKIAogCQlpZiAoIUFjY2VwdFJlc3VsdChyZXN1bHQsIGZhbHNlKSkKQEAgLTE1NzEs NiArMTcwNiw5IEBAIEV4ZWNRdWVyeUFuZFByb2Nlc3NSZXN1bHRzKGNvbnN0IGNoYXIgKnF1ZXJ5 LAogCQkJQ2xlYXJPclNhdmVSZXN1bHQocmVzdWx0KTsKIAkJCXN1Y2Nlc3MgPSBmYWxzZTsKIAor CQkJaWYgKHJlc3VsdF9zdGF0dXMgPT0gUEdSRVNfUElQRUxJTkVfQUJPUlRFRCkKKwkJCQlwZ19s b2dfaW5mbygiUGlwZWxpbmUgYWJvcnRlZCwgY29tbWFuZCBkaWRuJ3QgcnVuIik7CisKIAkJCS8q CiAJCQkgKiBzd2l0Y2ggdG8gbmV4dCByZXN1bHQKIAkJCSAqLwpAQCAtMTU4NSw2ICsxNzIzLDE1 IEBAIEV4ZWNRdWVyeUFuZFByb2Nlc3NSZXN1bHRzKGNvbnN0IGNoYXIgKnF1ZXJ5LAogCQkJCSAq IGlnbm9yZSBtYW51YWxseS4KIAkJCQkgKi8KIAkJCQlyZXN1bHQgPSBOVUxMOworCQkJZWxzZSBp ZiAoZW5kX3BpcGVsaW5lIHx8IHBzZXQucmVxdWVzdGVkX3Jlc3VsdHMgPiAwKQorCisJCQkJLyoK KwkJCQkgKiBXZSBoYXZlIGFuIGVycm9yIHdpdGhpbiBhIHBpcGVsaW5lLiBBbGwgY29tbWFuZHMg YXJlCisJCQkJICogYWJvcnRlZCB1bnRpbCB0aGUgbmV4dCBzeW5jaHJvbmlzYXRpb24gcG9pbnQu IFdlIG5lZWQgdG8KKwkJCQkgKiBjb25zdW1lIGFsbCByZXN1bHRzIHVudGlsIHRoaXMgc3luY2hy b25pc2F0aW9uIHBvaW50LCBvcgorCQkJCSAqIHN0b3Agd2hlbiB0aGVyZSdzIG5vIG1vcmUgcmVz dWx0IHRvIGRpc2NhcmQKKwkJCQkgKi8KKwkJCQlyZXN1bHQgPSBkaXNjYXJkQWJvcnRlZFBpcGVs aW5lUmVzdWx0cygpOwogCQkJZWxzZQogCQkJCXJlc3VsdCA9IFBRZ2V0UmVzdWx0KHBzZXQuZGIp OwogCkBAIC0xNzcxLDEyICsxOTE4LDY2IEBAIEV4ZWNRdWVyeUFuZFByb2Nlc3NSZXN1bHRzKGNv bnN0IGNoYXIgKnF1ZXJ5LAogCQkJfQogCQl9CiAKKwkJaWYgKHJlc3VsdF9zdGF0dXMgPT0gUEdS RVNfUElQRUxJTkVfU1lOQykKKwkJeworCQkJQXNzZXJ0KHBzZXQucGlwZWRfc3luY3MgPiAwKTsK KworCQkJLyoKKwkJCSAqIFdlIGhhdmUgYSBzeW5jIHJlc3BvbnNlLCBkZWNyZWFzZSB0aGUgc3lu YyBhbmQKKwkJCSAqIHJlcXVlc3RlZF9yZXN1bHRzIGNvdW50ZXJzCisJCQkgKi8KKwkJCXBzZXQu cGlwZWRfc3luY3MtLTsKKwkJCXBzZXQucmVxdWVzdGVkX3Jlc3VsdHMtLTsKKworCQkJLyoKKwkJ CSAqIEFmdGVyIGEgc3luY2hyb25pc2F0aW9uIHBvaW50LCByZXNldCBzdWNjZXNzIHN0YXRlIHRv IHByaW50CisJCQkgKiBwb3NzaWJsZSBzdWNjZXNzZnVsIHJlc3VsdHMgdGhhdCB3aWxsIGJlIHBy b2Nlc3NlZCBhZnRlciB0aGlzCisJCQkgKi8KKwkJCXN1Y2Nlc3MgPSB0cnVlOworCisJCQkvKgor CQkJICogSWYgYWxsIHN5bmNzIHdlcmUgcHJvY2Vzc2VkIGFuZCBwaXBlbGluZSBlbmQgd2FzIHJl cXVlc3RlZCwKKwkJCSAqIGV4aXQgcGlwZWxpbmUgbW9kZQorCQkJICovCisJCQlpZiAoZW5kX3Bp cGVsaW5lICYmIHBzZXQucGlwZWRfc3luY3MgPT0gMCkKKwkJCQlzdWNjZXNzICY9IFBRZXhpdFBp cGVsaW5lTW9kZShwc2V0LmRiKTsKKwkJfQorCQllbHNlIGlmIChQUXBpcGVsaW5lU3RhdHVzKHBz ZXQuZGIpICE9IFBRX1BJUEVMSU5FX09GRiAmJgorCQkJCSByZXN1bHRfc3RhdHVzICE9IFBHUkVT X1BJUEVMSU5FX1NZTkMpCisJCXsKKwkJCS8qCisJCQkgKiBXZSBhcmUgaW4gYSBwaXBlbGluZSBh bmQgaGF2ZSBhIG5vbiBzeW5jIHJlc3BvbnNlLCBkZWNyZWFzZSB0aGUKKwkJCSAqIHJlc3VsdHMg Y291bnRlcnMKKwkJCSAqLworCQkJcHNldC5wZW5kaW5nX3Jlc3VsdHMtLTsKKwkJCXBzZXQucmVx dWVzdGVkX3Jlc3VsdHMtLTsKKwkJfQorCiAJCS8qCiAJCSAqIENoZWNrIFBRZ2V0UmVzdWx0KCkg YWdhaW4uICBJbiB0aGUgdHlwaWNhbCBjYXNlIG9mIGEgc2luZ2xlLWNvbW1hbmQKIAkJICogc3Ry aW5nLCBpdCB3aWxsIHJldHVybiBOVUxMLiAgT3RoZXJ3aXNlLCB3ZSdsbCBoYXZlIG90aGVyIHJl c3VsdHMKIAkJICogdG8gcHJvY2Vzcy4gIFdlIG5lZWQgdG8gZG8gdGhhdCB0byBjaGVjayB3aGV0 aGVyIHRoaXMgaXMgdGhlIGxhc3QuCiAJCSAqLwotCQluZXh0X3Jlc3VsdCA9IFBRZ2V0UmVzdWx0 KHBzZXQuZGIpOworCQlpZiAoUFFwaXBlbGluZVN0YXR1cyhwc2V0LmRiKSA9PSBQUV9QSVBFTElO RV9PRkYpCisJCQluZXh0X3Jlc3VsdCA9IFBRZ2V0UmVzdWx0KHBzZXQuZGIpOworCQllbHNlCisJ CXsKKwkJCS8qCisJCQkgKiBJbiBwaXBlbGluZSBtb2RlLCBhIE5VTEwgcmVzdWx0IGluZGljYXRl cyB0aGUgZW5kIG9mIHRoZQorCQkJICogY3VycmVudCBxdWVyeSBiZWluZyBwcm9jZXNzZWQuIENh bGwgUFFnZXRSZXN1bHQgdG8gY29uc3VtZSB0aGlzCisJCQkgKiBOVUxMCisJCQkgKi8KKwkJCWlm IChyZXN1bHRfc3RhdHVzICE9IFBHUkVTX1BJUEVMSU5FX1NZTkMpCisJCQl7CisJCQkJbmV4dF9y ZXN1bHQgPSBQUWdldFJlc3VsdChwc2V0LmRiKTsKKwkJCQlBc3NlcnQobmV4dF9yZXN1bHQgPT0g TlVMTCk7CisJCQl9CisKKwkJCS8qIFdlIGNhbiBub3cgZ2V0IHRoZSBuZXh0IHJlc3VsdCBpbiB0 aGUgcGlwZWxpbmUgKi8KKwkJCWlmIChwc2V0LnJlcXVlc3RlZF9yZXN1bHRzID4gMCkKKwkJCQlu ZXh0X3Jlc3VsdCA9IFBRZ2V0UmVzdWx0KHBzZXQuZGIpOworCQl9CisKIAkJbGFzdCA9IChuZXh0 X3Jlc3VsdCA9PSBOVUxMKTsKIAogCQkvKgpAQCAtMTc5OCw4ICsxOTk5LDEyIEBAIEV4ZWNRdWVy eUFuZFByb2Nlc3NSZXN1bHRzKGNvbnN0IGNoYXIgKnF1ZXJ5LAogCQkJKmVsYXBzZWRfbXNlYyA9 IElOU1RSX1RJTUVfR0VUX01JTExJU0VDKGFmdGVyKTsKIAkJfQogCi0JCS8qIHRoaXMgbWF5IG9y IG1heSBub3QgcHJpbnQgc29tZXRoaW5nIGRlcGVuZGluZyBvbiBzZXR0aW5ncyAqLwotCQlpZiAo cmVzdWx0ICE9IE5VTEwpCisJCS8qCisJCSAqIFRoaXMgbWF5IG9yIG1heSBub3QgcHJpbnQgc29t ZXRoaW5nIGRlcGVuZGluZyBvbiBzZXR0aW5ncy4gQQorCQkgKiBwaXBlbGluZSBzeW5jIHdpbGwg aGF2ZSBhIG5vbiBudWxsIHJlc3VsdCBidXQgZG9lc24ndCBoYXZlIGFueXRoaW5nCisJCSAqIHRv IHByaW50LCB0aHVzIGlnbm9yZSB0aGVtCisJCSAqLworCQlpZiAocmVzdWx0ICE9IE5VTEwgJiYg cmVzdWx0X3N0YXR1cyAhPSBQR1JFU19QSVBFTElORV9TWU5DKQogCQl7CiAJCQkvKgogCQkJICog SWYgcmVzdWx0cyBuZWVkIHRvIGJlIHByaW50ZWQgaW50byB0aGUgZmlsZSBzcGVjaWZpZWQgYnkg XGcsCkBAIC0xODM3LDYgKzIwNDIsMTcgQEAgRXhlY1F1ZXJ5QW5kUHJvY2Vzc1Jlc3VsdHMoY29u c3QgY2hhciAqcXVlcnksCiAJLyogY2xvc2UgXGcgZmlsZSBpZiB3ZSBvcGVuZWQgaXQgKi8KIAlD bG9zZUdPdXRwdXQoZ2ZpbGVfZm91dCwgZ2ZpbGVfaXNfcGlwZSk7CiAKKwlpZiAoZW5kX3BpcGVs aW5lKQorCXsKKwkJLyogQWZ0ZXIgYSBwaXBlbGluZSBpcyBwcm9jZXNzZWQsIHBpcGVsaW5lIHBp cGVkX3N5bmNzIHNob3VsZCBiZSAwICovCisJCUFzc2VydChwc2V0LnBpcGVkX3N5bmNzID09IDAp OworCQkvKiBhbGwgcXVlcmllcyB3ZXJlIHByb2Nlc3NlZCAqLworCQlBc3NlcnQocHNldC5waXBl ZF9jb21tYW5kcyA9PSAwKTsKKwkJLyogYW5kIGFsbCByZXN1bHRzIHdlcmUgcHJvY2Vzc2VkICov CisJCUFzc2VydChwc2V0LnBlbmRpbmdfcmVzdWx0cyA9PSAwKTsKKwl9CisJQXNzZXJ0KHBzZXQu cmVxdWVzdGVkX3Jlc3VsdHMgPT0gMCk7CisKIAkvKiBtYXkgbmVlZCB0aGlzIHRvIHJlY292ZXIg ZnJvbSBjb25uIGxvc3MgZHVyaW5nIENPUFkgKi8KIAlpZiAoIUNoZWNrQ29ubmVjdGlvbigpKQog CQlyZXR1cm4gLTE7CkBAIC0yMjk2LDcgKzI1MTIsMTMgQEAgY2xlYW5fZXh0ZW5kZWRfc3RhdGUo dm9pZCkKIAkJCWZyZWUocHNldC5zdG10TmFtZSk7CiAJCQlwc2V0LmJpbmRfcGFyYW1zID0gTlVM TDsKIAkJCWJyZWFrOworCQljYXNlIFBTUUxfU1RBUlRfUElQRUxJTkVfTU9ERToJLyogXHN0YXJ0 cGlwZWxpbmUgKi8KKwkJY2FzZSBQU1FMX0VORF9QSVBFTElORV9NT0RFOgkvKiBcZW5kcGlwZWxp bmUgKi8KKwkJY2FzZSBQU1FMX1NFTkRfUElQRUxJTkVfU1lOQzoJLyogXHN5bmNwaXBlbGluZSAq LwogCQljYXNlIFBTUUxfU0VORF9RVUVSWToKKwkJY2FzZSBQU1FMX0ZMVVNIOgkJLyogXGZsdXNo ICovCisJCWNhc2UgUFNRTF9HRVRfUkVTVUxUUzoJLyogXGdldHJlc3VsdHMgKi8KKwkJY2FzZSBQ U1FMX1NFTkRfRkxVU0hfUkVRVUVTVDoJLyogXGZsdXNocmVxdWVzdCAqLwogCQkJYnJlYWs7CiAJ fQogCmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvaGVscC5jIGIvc3JjL2Jpbi9wc3FsL2hlbHAu YwppbmRleCAzZjRhZmMyZDE0MS4uYzRkYzIxOGI5ZTcgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNx bC9oZWxwLmMKKysrIGIvc3JjL2Jpbi9wc3FsL2hlbHAuYwpAQCAtMTY3LDE1ICsxNjcsMjIgQEAg c2xhc2hVc2FnZSh1bnNpZ25lZCBzaG9ydCBpbnQgcGFnZXIpCiAJSEVMUDAoIiAgXFxjbG9zZSBT VE1UX05BTUUgICAgICAgY2xvc2UgYW4gZXhpc3RpbmcgcHJlcGFyZWQgc3RhdGVtZW50XG4iKTsK IAlIRUxQMCgiICBcXGNvcHlyaWdodCAgICAgICAgICAgICBzaG93IFBvc3RncmVTUUwgdXNhZ2Ug YW5kIGRpc3RyaWJ1dGlvbiB0ZXJtc1xuIik7CiAJSEVMUDAoIiAgXFxjcm9zc3RhYnZpZXcgW0NP TFVNTlNdIGV4ZWN1dGUgcXVlcnkgYW5kIGRpc3BsYXkgcmVzdWx0IGluIGNyb3NzdGFiXG4iKTsK KwlIRUxQMCgiICBcXGVuZHBpcGVsaW5lICAgICAgICAgICBleGl0IHBpcGVsaW5lIG1vZGVcbiIp OwogCUhFTFAwKCIgIFxcZXJydmVyYm9zZSAgICAgICAgICAgIHNob3cgbW9zdCByZWNlbnQgZXJy b3IgbWVzc2FnZSBhdCBtYXhpbXVtIHZlcmJvc2l0eVxuIik7CisJSEVMUDAoIiAgXFxmbHVzaCAg ICAgICAgICAgICAgICAgcHVzaCB1bnNlbnQgZGF0YSB0byB0aGUgc2VydmVyXG4iKTsKKwlIRUxQ MCgiICBcXGZsdXNocmVxdWVzdCAgICAgICAgICBzZW5kIGEgZmx1c2hyZXF1ZXN0IGNvbW1hbmRc biIpOwogCUhFTFAwKCIgIFxcZyBbKE9QVElPTlMpXSBbRklMRV0gIGV4ZWN1dGUgcXVlcnkgKGFu ZCBzZW5kIHJlc3VsdCB0byBmaWxlIG9yIHxwaXBlKTtcbiIKIAkJICAiICAgICAgICAgICAgICAg ICAgICAgICAgIFxcZyB3aXRoIG5vIGFyZ3VtZW50cyBpcyBlcXVpdmFsZW50IHRvIGEgc2VtaWNv bG9uXG4iKTsKIAlIRUxQMCgiICBcXGdkZXNjICAgICAgICAgICAgICAgICBkZXNjcmliZSByZXN1 bHQgb2YgcXVlcnksIHdpdGhvdXQgZXhlY3V0aW5nIGl0XG4iKTsKKwlIRUxQMCgiICBcXGdldHJl c3VsdHMgW05VTV9SRVNdICByZWFkIE5VTV9SRVMgcGVuZGluZyByZXN1bHRzLiBBbGwgcGVuZGlu ZyByZXN1bHRzIGFyZVxuIgorCQkgICIgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZCBpZiBu byBhcmd1bWVudCBpcyBwcm92aWRlZFxuIik7CiAJSEVMUDAoIiAgXFxnZXhlYyAgICAgICAgICAg ICAgICAgZXhlY3V0ZSBxdWVyeSwgdGhlbiBleGVjdXRlIGVhY2ggdmFsdWUgaW4gaXRzIHJlc3Vs dFxuIik7CiAJSEVMUDAoIiAgXFxnc2V0IFtQUkVGSVhdICAgICAgICAgZXhlY3V0ZSBxdWVyeSBh bmQgc3RvcmUgcmVzdWx0IGluIHBzcWwgdmFyaWFibGVzXG4iKTsKIAlIRUxQMCgiICBcXGd4IFso T1BUSU9OUyldIFtGSUxFXSBhcyBcXGcsIGJ1dCBmb3JjZXMgZXhwYW5kZWQgb3V0cHV0IG1vZGVc biIpOwogCUhFTFAwKCIgIFxccGFyc2UgU1RNVF9OQU1FICAgICAgIGNyZWF0ZSBhIHByZXBhcmVk IHN0YXRlbWVudFxuIik7CiAJSEVMUDAoIiAgXFxxICAgICAgICAgICAgICAgICAgICAgcXVpdCBw c3FsXG4iKTsKKwlIRUxQMCgiICBcXHN0YXJ0cGlwZWxpbmUgICAgICAgICBlbnRlciBwaXBlbGlu ZSBtb2RlXG4iKTsKKwlIRUxQMCgiICBcXHN5bmNwaXBlbGluZSAgICAgICAgICBhZGQgYSBzeW5j aHJvbmlzYXRpb24gcG9pbnQgdG8gYW4gb25nb2luZyBwaXBlbGluZVxuIik7CiAJSEVMUDAoIiAg XFx3YXRjaCBbW2k9XVNFQ10gW2M9Tl0gW209TUlOXVxuIgogCQkgICIgICAgICAgICAgICAgICAg ICAgICAgICAgZXhlY3V0ZSBxdWVyeSBldmVyeSBTRUMgc2Vjb25kcywgdXAgdG8gTiB0aW1lcyxc biIKIAkJICAiICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3AgaWYgbGVzcyB0aGFuIE1JTiBy b3dzIGFyZSByZXR1cm5lZFxuIik7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvcHJvbXB0LmMg Yi9zcmMvYmluL3BzcWwvcHJvbXB0LmMKaW5kZXggMGQ5OWQwMGFjOTIuLmIxNTc1MTA1YWRlIDEw MDY0NAotLS0gYS9zcmMvYmluL3BzcWwvcHJvbXB0LmMKKysrIGIvc3JjL2Jpbi9wc3FsL3Byb21w dC5jCkBAIC0zMSw2ICszMSw5IEBACiAgKgkJc29ja2V0cywgIltsb2NhbDovZGlyL25hbWVdIiBp ZiBub3QgZGVmYXVsdAogICogJW0gLSBsaWtlICVNLCBidXQgaG9zdG5hbWUgb25seSAoYmVmb3Jl IGZpcnN0IGRvdCksIG9yIGFsd2F5cyAiW2xvY2FsXSIKICAqICVwIC0gYmFja2VuZCBwaWQKKyAq ICVQIC0gcGlwZWxpbmUgc3RhdHVzOiBubyBwaXBlbGluZTogZW1wdHkKKyAqIAkJb25nb2luZyBw aXBlbGluZTogfHBpcGVkX3N5bmNzLHBpcGVkX2NvbW1hbmRzLHBlbmRpbmdfcmVzdWx0c3wKKyAq IAkJYWJvcnRlZCBwaXBlbGluZTogK3BpcGVkX3N5bmNzLHBpcGVkX2NvbW1hbmRzLHBlbmRpbmdf cmVzdWx0cysKICAqICU+IC0gZGF0YWJhc2Ugc2VydmVyIHBvcnQgbnVtYmVyCiAgKiAlbiAtIGRh dGFiYXNlIHVzZXIgbmFtZQogICogJS8gLSBjdXJyZW50IGRhdGFiYXNlCkBAIC0xNzUsNyArMTc4 LDE2IEBAIGdldF9wcm9tcHQocHJvbXB0U3RhdHVzX3Qgc3RhdHVzLCBDb25kaXRpb25hbFN0YWNr IGNzdGFjaykKIAkJCQkJCQlzbnByaW50ZihidWYsIHNpemVvZihidWYpLCAiJWQiLCBwaWQpOwog CQkJCQl9CiAJCQkJCWJyZWFrOworCQkJCWNhc2UgJ1AnOgorCQkJCQl7CisJCQkJCQlQR3BpcGVs aW5lU3RhdHVzIHN0YXR1cyA9IFBRcGlwZWxpbmVTdGF0dXMocHNldC5kYik7CiAKKwkJCQkJCWlm IChzdGF0dXMgPT0gUFFfUElQRUxJTkVfT04pCisJCQkJCQkJc25wcmludGYoYnVmLCBzaXplb2Yo YnVmKSwgInwlZCwlZCwlZHwiLCBwc2V0LnBpcGVkX3N5bmNzLCBwc2V0LnBpcGVkX2NvbW1hbmRz LCBwc2V0LnBlbmRpbmdfcmVzdWx0cyk7CisJCQkJCQllbHNlIGlmIChzdGF0dXMgPT0gUFFfUElQ RUxJTkVfQUJPUlRFRCkKKwkJCQkJCQlzbnByaW50ZihidWYsIHNpemVvZihidWYpLCAiKyVkLCVk LCVkKyIsIHBzZXQucGlwZWRfc3luY3MsIHBzZXQucGlwZWRfY29tbWFuZHMsIHBzZXQucGVuZGlu Z19yZXN1bHRzKTsKKwkJCQkJCWJyZWFrOworCQkJCQl9CiAJCQkJY2FzZSAnMCc6CiAJCQkJY2Fz ZSAnMSc6CiAJCQkJY2FzZSAnMic6CmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvc2V0dGluZ3Mu aCBiL3NyYy9iaW4vcHNxbC9zZXR0aW5ncy5oCmluZGV4IGEyMmRlOGVmNzhlLi5jMTAxN2I1YWU0 NCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL3NldHRpbmdzLmgKKysrIGIvc3JjL2Jpbi9wc3Fs L3NldHRpbmdzLmgKQEAgLTIzLDggKzIzLDggQEAKICNkZWZpbmUgREVGQVVMVF9FRElUT1JfTElO RU5VTUJFUl9BUkcgIisiCiAjZW5kaWYKIAotI2RlZmluZSBERUZBVUxUX1BST01QVDEgIiUvJVIl eCUjICIKLSNkZWZpbmUgREVGQVVMVF9QUk9NUFQyICIlLyVSJXglIyAiCisjZGVmaW5lIERFRkFV TFRfUFJPTVBUMSAiJS8lUiVQJXglIyAiCisjZGVmaW5lIERFRkFVTFRfUFJPTVBUMiAiJS8lUiVQ JXglIyAiCiAjZGVmaW5lIERFRkFVTFRfUFJPTVBUMyAiPj4gIgogCiAvKgpAQCAtNjksNiArNjks MTIgQEAgdHlwZWRlZiBlbnVtCiAJUFNRTF9TRU5EX0VYVEVOREVEX1BBUlNFLAogCVBTUUxfU0VO RF9FWFRFTkRFRF9RVUVSWV9QQVJBTVMsCiAJUFNRTF9TRU5EX0VYVEVOREVEX1FVRVJZX1BSRVBB UkVELAorCVBTUUxfU0VORF9QSVBFTElORV9TWU5DLAorCVBTUUxfU1RBUlRfUElQRUxJTkVfTU9E RSwKKwlQU1FMX0VORF9QSVBFTElORV9NT0RFLAorCVBTUUxfRkxVU0gsCisJUFNRTF9TRU5EX0ZM VVNIX1JFUVVFU1QsCisJUFNRTF9HRVRfUkVTVUxUUywKIH0gUFNRTF9TRU5EX01PREU7CiAKIHR5 cGVkZWYgZW51bQpAQCAtMTExLDYgKzExNywxMSBAQCB0eXBlZGVmIHN0cnVjdCBfcHNxbFNldHRp bmdzCiAJY2hhcgkgICoqYmluZF9wYXJhbXM7CS8qIHBhcmFtZXRlcnMgZm9yIGV4dGVuZGVkIHF1 ZXJ5IHByb3RvY29sIGNhbGwgKi8KIAljaGFyCSAgICpzdG10TmFtZTsJCS8qIHByZXBhcmVkIHN0 YXRlbWVudCBuYW1lIHVzZWQgZm9yIGV4dGVuZGVkCiAJCQkJCQkJCSAqIHF1ZXJ5IHByb3RvY29s IGNvbW1hbmRzICovCisJaW50CQkJcGlwZWRfY29tbWFuZHM7IC8qIG51bWJlciBvZiBwaXBlZCBj b21tYW5kcyAqLworCWludAkJCXBpcGVkX3N5bmNzOwkvKiBudW1iZXIgb2YgcGlwZWQgc3luY3Mg Ki8KKwlpbnQJCQlwZW5kaW5nX3Jlc3VsdHM7CS8qIG51bWJlciBvZiByZXN1bHRzIGF2YWlsYWJs ZSB0byByZWFkICovCisJaW50CQkJcmVxdWVzdGVkX3Jlc3VsdHM7CS8qIG51bWJlciBvZiByZXF1 ZXN0ZWQgcmVzdWx0cywgaW5jbHVkZQorCQkJCQkJCQkJICogc3luYyByZXN1bHRzICovCiAJYm9v bAkJY3Jvc3N0YWJfZmxhZzsJLyogb25lLXNob3QgcmVxdWVzdCB0byBjcm9zc3RhYiByZXN1bHQg Ki8KIAljaGFyCSAgICpjdHZfYXJnc1s0XTsJLyogXGNyb3NzdGFidmlldyBhcmd1bWVudHMgKi8K IApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jIGIvc3JjL2Jpbi9w c3FsL3RhYi1jb21wbGV0ZS5pbi5jCmluZGV4IGJiZDA4NzcwYzNkLi5kZTcyNDBkODY5MCAxMDA2 NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCisrKyBiL3NyYy9iaW4vcHNx bC90YWItY29tcGxldGUuaW4uYwpAQCAtMTg2Nyw5ICsxODY3LDkgQEAgcHNxbF9jb21wbGV0aW9u KGNvbnN0IGNoYXIgKnRleHQsIGludCBzdGFydCwgaW50IGVuZCkKIAkJIlxcZHJkcyIsICJcXGRy ZyIsICJcXGRScyIsICJcXGRScCIsICJcXGRzIiwKIAkJIlxcZHQiLCAiXFxkVCIsICJcXGR2Iiwg IlxcZHUiLCAiXFxkeCIsICJcXGRYIiwgIlxcZHkiLAogCQkiXFxlY2hvIiwgIlxcZWRpdCIsICJc XGVmIiwgIlxcZWxpZiIsICJcXGVsc2UiLCAiXFxlbmNvZGluZyIsCi0JCSJcXGVuZGlmIiwgIlxc ZXJydmVyYm9zZSIsICJcXGV2IiwKLQkJIlxcZiIsCi0JCSJcXGciLCAiXFxnZGVzYyIsICJcXGdl dGVudiIsICJcXGdleGVjIiwgIlxcZ3NldCIsICJcXGd4IiwKKwkJIlxcZW5kaWYiLCAiXFxlbmRw aXBlbGluZSIsICJcXGVycnZlcmJvc2UiLCAiXFxldiIsCisJCSJcXGYiLCAiXFxmbHVzaCIsICJc XGZsdXNocmVxdWVzdCIsCisJCSJcXGciLCAiXFxnZGVzYyIsICJcXGdldGVudiIsICJcXGdldHJl c3VsdHMiLCAiXFxnZXhlYyIsICJcXGdzZXQiLCAiXFxneCIsCiAJCSJcXGhlbHAiLCAiXFxodG1s IiwKIAkJIlxcaWYiLCAiXFxpbmNsdWRlIiwgIlxcaW5jbHVkZV9yZWxhdGl2ZSIsICJcXGlyIiwK IAkJIlxcbGlzdCIsICJcXGxvX2ltcG9ydCIsICJcXGxvX2V4cG9ydCIsICJcXGxvX2xpc3QiLCAi XFxsb191bmxpbmsiLApAQCAtMTg3Nyw3ICsxODc3LDcgQEAgcHNxbF9jb21wbGV0aW9uKGNvbnN0 IGNoYXIgKnRleHQsIGludCBzdGFydCwgaW50IGVuZCkKIAkJIlxccGFyc2UiLCAiXFxwYXNzd29y ZCIsICJcXHByaW50IiwgIlxccHJvbXB0IiwgIlxccHNldCIsCiAJCSJcXHFlY2hvIiwgIlxccXVp dCIsCiAJCSJcXHJlc2V0IiwKLQkJIlxccyIsICJcXHNldCIsICJcXHNldGVudiIsICJcXHNmIiwg Ilxcc3YiLAorCQkiXFxzIiwgIlxcc2V0IiwgIlxcc2V0ZW52IiwgIlxcc2YiLCAiXFxzdGFydHBp cGVsaW5lIiwgIlxcc3YiLCAiXFxzeW5jcGlwZWxpbmUiLAogCQkiXFx0IiwgIlxcVCIsICJcXHRp bWluZyIsCiAJCSJcXHVuc2V0IiwKIAkJIlxceCIsCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL3BzcWwub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wc3FsLm91 dAppbmRleCAzNmRjMzFjMTZjNC4uZGVkNTEwZDUwYmMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvcHNxbC5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9w c3FsLm91dApAQCAtNjgyOCwzICs2ODI4LDY3MSBAQCBDUkVBVEUgVEFCTEUgZGVmcHJpdnMgKGEg aW50KTsKIAogXHBzZXQgbnVsbCAnJwogRFJPUCBUQUJMRSBkZWZwcml2czsKKy0tIHBpcGVsaW5p bmcKK0NSRUFURSBUQUJMRSBwc3FsX3BpcGVsaW5lKGEgSU5URUdFUiBQUklNQVJZIEtFWSwgcyBU RVhUKTsKKy0tIHNpbmdsZSBxdWVyeQorXHN0YXJ0cGlwZWxpbmUKK1NFTEVDVCAkMSBcYmluZCAn dmFsMScgXGcKK1xlbmRwaXBlbGluZQorID9jb2x1bW4/IAorLS0tLS0tLS0tLQorIHZhbDEKKygx IHJvdykKKworLS0gbXVsdGlwbGUgcXVlcmllcworXHN0YXJ0cGlwZWxpbmUKK1NFTEVDVCAkMSBc YmluZCAndmFsMScgXGcKK1NFTEVDVCAkMSwgJDIgXGJpbmQgJ3ZhbDInICd2YWwzJyBcZworU0VM RUNUICQxLCAkMiBcYmluZCAndmFsMicgJ3ZhbDMnIFxnCitcZW5kcGlwZWxpbmUKKyA/Y29sdW1u PyAKKy0tLS0tLS0tLS0KKyB2YWwxCisoMSByb3cpCisKKyA/Y29sdW1uPyB8ID9jb2x1bW4/IAor LS0tLS0tLS0tLSstLS0tLS0tLS0tCisgdmFsMiAgICAgfCB2YWwzCisoMSByb3cpCisKKyA/Y29s dW1uPyB8ID9jb2x1bW4/IAorLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgdmFsMiAgICAgfCB2YWwz CisoMSByb3cpCisKKy0tIFRlc3QgXGZsdXNoCitcc3RhcnRwaXBlbGluZQorXGZsdXNoCitTRUxF Q1QgJDEgXGJpbmQgJ3ZhbDEnIFxnCitcZmx1c2gKK1NFTEVDVCAkMSwgJDIgXGJpbmQgJ3ZhbDIn ICd2YWwzJyBcZworU0VMRUNUICQxLCAkMiBcYmluZCAndmFsMicgJ3ZhbDMnIFxnCitcZW5kcGlw ZWxpbmUKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyB2YWwxCisoMSByb3cpCisKKyA/Y29sdW1u PyB8ID9jb2x1bW4/IAorLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgdmFsMiAgICAgfCB2YWwzCiso MSByb3cpCisKKyA/Y29sdW1uPyB8ID9jb2x1bW4/IAorLS0tLS0tLS0tLSstLS0tLS0tLS0tCisg dmFsMiAgICAgfCB2YWwzCisoMSByb3cpCisKKy0tIHNlbmQgbXVsdGlwbGUgc3luY3MKK1xzdGFy dHBpcGVsaW5lCitTRUxFQ1QgJDEgXGJpbmQgJ3ZhbDEnIFxnCitcc3luY3BpcGVsaW5lCitcc3lu Y3BpcGVsaW5lCitTRUxFQ1QgJDEsICQyIFxiaW5kICd2YWwyJyAndmFsMycgXGcKK1xzeW5jcGlw ZWxpbmUKK1NFTEVDVCAkMSwgJDIgXGJpbmQgJ3ZhbDQnICd2YWw1JyBcZworXGVuZHBpcGVsaW5l CisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisgdmFsMQorKDEgcm93KQorCisgP2NvbHVtbj8gfCA/ Y29sdW1uPyAKKy0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHZhbDIgICAgIHwgdmFsMworKDEgcm93 KQorCisgP2NvbHVtbj8gfCA/Y29sdW1uPyAKKy0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHZhbDQg ICAgIHwgdmFsNQorKDEgcm93KQorCistLSBzdGFydHBpcGVsaW5lIHNob3VsZG4ndCBoYXZlIGFu eSBlZmZlY3QgaWYgYWxyZWFkeSBpbiBhIHBpcGVsaW5lCitcc3RhcnRwaXBlbGluZQorXHN0YXJ0 cGlwZWxpbmUKK1NFTEVDVCAkMSBcYmluZCAndmFsMScgXGcKK1xlbmRwaXBlbGluZQorID9jb2x1 bW4/IAorLS0tLS0tLS0tLQorIHZhbDEKKygxIHJvdykKKworLS0gQ29udmVydCBhbiBpbXBsaWNp dCB0eCBibG9jayB0byBhbiBleHBsaWNpdCB0eCBibG9jaworXHN0YXJ0cGlwZWxpbmUKK0lOU0VS VCBJTlRPIHBzcWxfcGlwZWxpbmUgVkFMVUVTICgkMSkgXGJpbmQgMSBcZworQkVHSU4gXGJpbmQg XGcKK0lOU0VSVCBJTlRPIHBzcWxfcGlwZWxpbmUgVkFMVUVTICgkMSkgXGJpbmQgMiBcZworUk9M TEJBQ0sgXGJpbmQgXGcKK1xlbmRwaXBlbGluZQorLS0gTXVsdGlwbGUgZXhwbGljaXQgdHJhbnNh Y3Rpb25zCitcc3RhcnRwaXBlbGluZQorQkVHSU4gXGJpbmQgXGcKK0lOU0VSVCBJTlRPIHBzcWxf cGlwZWxpbmUgVkFMVUVTICgkMSkgXGJpbmQgMSBcZworUk9MTEJBQ0sgXGJpbmQgXGcKK0JFR0lO IFxiaW5kIFxnCitJTlNFUlQgSU5UTyBwc3FsX3BpcGVsaW5lIFZBTFVFUyAoJDEpIFxiaW5kIDEg XGcKK0NPTU1JVCBcYmluZCBcZworXGVuZHBpcGVsaW5lCistLSBDT1BZIEZST00gU1RESU4KK1xz dGFydHBpcGVsaW5lCitTRUxFQ1QgJDEgXGJpbmQgJ3ZhbDEnIFxnCitDT1BZIHBzcWxfcGlwZWxp bmUgRlJPTSBTVERJTiBcYmluZCBcZworXGVuZHBpcGVsaW5lCisgP2NvbHVtbj8gCistLS0tLS0t LS0tCisgdmFsMQorKDEgcm93KQorCistLSBDT1BZIEZST00gU1RESU4gd2l0aCBcZmx1c2hyZXF1 ZXN0ICsgXGdldHJlc3VsdHMKK1xzdGFydHBpcGVsaW5lCitTRUxFQ1QgJDEgXGJpbmQgJ3ZhbDEn IFxnCitDT1BZIHBzcWxfcGlwZWxpbmUgRlJPTSBTVERJTiBcYmluZCBcZworXGZsdXNocmVxdWVz dAorXGdldHJlc3VsdHMKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyB2YWwxCisoMSByb3cpCisK K21lc3NhZ2UgdHlwZSAweDVhIGFycml2ZWQgZnJvbSBzZXJ2ZXIgd2hpbGUgaWRsZQorXGVuZHBp cGVsaW5lCistLSBDT1BZIEZST00gU1RESU4gd2l0aCBcc3luY3BpcGVsaW5lICsgXGdldHJlc3Vs dHMKK1xzdGFydHBpcGVsaW5lCitTRUxFQ1QgJDEgXGJpbmQgJ3ZhbDEnIFxnCitDT1BZIHBzcWxf cGlwZWxpbmUgRlJPTSBTVERJTiBcYmluZCBcZworXHN5bmNwaXBlbGluZQorXGdldHJlc3VsdHMK KyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyB2YWwxCisoMSByb3cpCisKK1xlbmRwaXBlbGluZQor LS0gQ09QWSBUTyBTVERPVVQKK1xzdGFydHBpcGVsaW5lCitTRUxFQ1QgJDEgXGJpbmQgJ3ZhbDEn IFxnCitjb3B5IHBzcWxfcGlwZWxpbmUgVE8gU1RET1VUIFxiaW5kIFxnCitcZW5kcGlwZWxpbmUK KyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyB2YWwxCisoMSByb3cpCisKKzEJXE4KKzIJdGVzdDIK KzMJdGVzdDMKKzQJdGVzdDQKKy0tIENPUFkgVE8gU1RET1VUIHdpdGggXGZsdXNocmVxdWVzdCAr IFxnZXRyZXN1bHRzCitcc3RhcnRwaXBlbGluZQorU0VMRUNUICQxIFxiaW5kICd2YWwxJyBcZwor Y29weSBwc3FsX3BpcGVsaW5lIFRPIFNURE9VVCBcYmluZCBcZworXGZsdXNocmVxdWVzdAorXGdl dHJlc3VsdHMKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyB2YWwxCisoMSByb3cpCisKKzEJXE4K KzIJdGVzdDIKKzMJdGVzdDMKKzQJdGVzdDQKK1xlbmRwaXBlbGluZQorLS0gQ09QWSBUTyBTVERP VVQgd2l0aCBcc3luY3BpcGVsaW5lICsgXGdldHJlc3VsdHMKK1xzdGFydHBpcGVsaW5lCitTRUxF Q1QgJDEgXGJpbmQgJ3ZhbDEnIFxnCitjb3B5IHBzcWxfcGlwZWxpbmUgVE8gU1RET1VUIFxiaW5k IFxnCitcc3luY3BpcGVsaW5lCitcZ2V0cmVzdWx0cworID9jb2x1bW4/IAorLS0tLS0tLS0tLQor IHZhbDEKKygxIHJvdykKKworMQlcTgorMgl0ZXN0MgorMwl0ZXN0MworNAl0ZXN0NAorXGVuZHBp cGVsaW5lCistLSBVc2UgXHBhcnNlIGFuZCBcYmluZF9uYW1lZAorXHN0YXJ0cGlwZWxpbmUKK1NF TEVDVCAkMSBccGFyc2UgJycKK1NFTEVDVCAkMSwgJDIgXHBhcnNlICcnCitTRUxFQ1QgJDIgXHBh cnNlIHBpcGVsaW5lXzEKK1xiaW5kX25hbWVkICcnIDEgMiBcZworXGJpbmRfbmFtZWQgcGlwZWxp bmVfMSAyIFxnCitcZW5kcGlwZWxpbmUKK0VSUk9SOiAgY291bGQgbm90IGRldGVybWluZSBkYXRh IHR5cGUgb2YgcGFyYW1ldGVyICQxCistLSBcZ2V0cmVzdWx0cyBkaXNwbGF5cyBhbGwgcmVzdWx0 cyBwcmVjZWRpbmcgYSBcZmx1c2hyZXF1ZXN0Citcc3RhcnRwaXBlbGluZQorU0VMRUNUICQxIFxi aW5kIDEgXGcKK1NFTEVDVCAkMSBcYmluZCAyIFxnCitcZmx1c2hyZXF1ZXN0CitcZ2V0cmVzdWx0 cworID9jb2x1bW4/IAorLS0tLS0tLS0tLQorIDEKKygxIHJvdykKKworID9jb2x1bW4/IAorLS0t LS0tLS0tLQorIDIKKygxIHJvdykKKworXGVuZHBpcGVsaW5lCistLSBcZ2V0cmVzdWx0cyBkaXNw bGF5cyBhbGwgcmVzdWx0cyBwcmVjZWRpbmcgYSBzeW5jCitcc3RhcnRwaXBlbGluZQorU0VMRUNU ICQxIFxiaW5kIDEgXGcKK1NFTEVDVCAkMSBcYmluZCAyIFxnCitcc3luY3BpcGVsaW5lCitcZ2V0 cmVzdWx0cworID9jb2x1bW4/IAorLS0tLS0tLS0tLQorIDEKKygxIHJvdykKKworID9jb2x1bW4/ IAorLS0tLS0tLS0tLQorIDIKKygxIHJvdykKKworXGVuZHBpcGVsaW5lCistLSBcZ2V0cmVzdWx0 cyBpbW1lZGlhdGVseSByZXR1cm5zIGlmIHRoZXJlJ3Mgbm8gcmVzdWx0IHRvIGZldGNoCitcc3Rh cnRwaXBlbGluZQorXGdldHJlc3VsdHMKK05vIHBlbmRpbmcgcmVzdWx0cyB0byBnZXQKK1NFTEVD VCAkMSBcYmluZCAyIFxnCitcZ2V0cmVzdWx0cworTm8gcGVuZGluZyByZXN1bHRzIHRvIGdldAor XGZsdXNocmVxdWVzdAorXGVuZHBpcGVsaW5lCisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisgMgor KDEgcm93KQorCitcZ2V0cmVzdWx0cworTm8gcGVuZGluZyByZXN1bHRzIHRvIGdldAorLS0gXGdl dHJlc3VsdHMgb25seSBmZXRjaCByZXN1bHRzIHByZWNlZGluZyBhIGZsdXNocmVxdWVzdAorXHN0 YXJ0cGlwZWxpbmUKK1NFTEVDVCAkMSBcYmluZCAyIFxnCitcZmx1c2hyZXF1ZXN0CitTRUxFQ1Qg JDEgXGJpbmQgMiBcZworXGdldHJlc3VsdHMKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyAyCiso MSByb3cpCisKK1xlbmRwaXBlbGluZQorID9jb2x1bW4/IAorLS0tLS0tLS0tLQorIDIKKygxIHJv dykKKworLS0gXGdldHJlc3VsdHMgb25seSBmZXRjaCByZXN1bHRzIHByZWNlZGluZyBhIHN5bmMg bWVzc2FnZQorXHN0YXJ0cGlwZWxpbmUKK1NFTEVDVCAkMSBcYmluZCAyIFxnCitcc3luY3BpcGVs aW5lCitTRUxFQ1QgJDEgXGJpbmQgMiBcZworXGdldHJlc3VsdHMKKyA/Y29sdW1uPyAKKy0tLS0t LS0tLS0KKyAyCisoMSByb3cpCisKK1xlbmRwaXBlbGluZQorID9jb2x1bW4/IAorLS0tLS0tLS0t LQorIDIKKygxIHJvdykKKworLS0gdXNlIHBpcGVsaW5lIHdpdGggY2h1bmtlZCByZXN1bHRzIHdp dGggYm90aCBcZ2V0cmVzdWx0cyBhbmQgXGVuZHBpcGVsaW5lCitcc3RhcnRwaXBlbGluZQorXHNl dCBGRVRDSF9DT1VOVCAxMAorU0VMRUNUICQxIFxiaW5kIDIgXGcKK1xmbHVzaHJlcXVlc3QKK1xn ZXRyZXN1bHRzCisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisgMgorKDEgcm93KQorCitTRUxFQ1Qg JDEgXGJpbmQgMiBcZworXGVuZHBpcGVsaW5lCisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisgMgor KDEgcm93KQorCitcdW5zZXQgRkVUQ0hfQ09VTlQKKy0tIFxnZXRyZXN1bHRzIHdpdGggc3BlY2lm aWMgbnVtYmVyIG9mIHJlcXVlc3RlZCByZXN1bHRzCitcc3RhcnRwaXBlbGluZQorU0VMRUNUICQx IFxiaW5kIDEgXGcKK1NFTEVDVCAkMSBcYmluZCAyIFxnCitTRUxFQ1QgJDEgXGJpbmQgMyBcZwor XHN5bmNwaXBlbGluZQorXGdldHJlc3VsdHMgMQorID9jb2x1bW4/IAorLS0tLS0tLS0tLQorIDEK KygxIHJvdykKKworU0VMRUNUICQxIFxiaW5kIDQgXGcKK1xnZXRyZXN1bHRzIDMKKyA/Y29sdW1u PyAKKy0tLS0tLS0tLS0KKyAyCisoMSByb3cpCisKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyAz CisoMSByb3cpCisKK1xlbmRwaXBlbGluZQorID9jb2x1bW4/IAorLS0tLS0tLS0tLQorIDQKKygx IHJvdykKKworLS0gXHN5bmNwaXBlbGluZSBjb3VudCBhcyBvbmUgY29tbWFuZCB0byBmZXRjaCBm b3IgXGdldHJlc3VsdHMKK1xzdGFydHBpcGVsaW5lCitcc3luY3BpcGVsaW5lCitcc3luY3BpcGVs aW5lCitTRUxFQ1QgJDEgXGJpbmQgMSBcZworXGZsdXNocmVxdWVzdAorXGdldHJlc3VsdHMgMgor XGdldHJlc3VsdHMgMQorID9jb2x1bW4/IAorLS0tLS0tLS0tLQorIDEKKygxIHJvdykKKworXGVu ZHBpcGVsaW5lCistLSBcZ2V0cmVzdWx0cyAwIHNob3VsZCBnZXQgYWxsIHJlc3VsdHMKK1xzdGFy dHBpcGVsaW5lCitTRUxFQ1QgJDEgXGJpbmQgMSBcZworU0VMRUNUICQxIFxiaW5kIDIgXGcKK1NF TEVDVCAkMSBcYmluZCAzIFxnCitcc3luY3BpcGVsaW5lCitcZ2V0cmVzdWx0cyAwCisgP2NvbHVt bj8gCistLS0tLS0tLS0tCisgMQorKDEgcm93KQorCisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisg MgorKDEgcm93KQorCisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisgMworKDEgcm93KQorCitcZW5k cGlwZWxpbmUKKy0tIHBpcGVsaW5pbmcgZXJyb3JzCistLSBlbmRwaXBlbGluZSBvdXRzaWRlIG9m IHBpcGVsaW5lIHNob3VsZCBmYWlsCitcZW5kcGlwZWxpbmUKK2Nhbm5vdCBzZW5kIHBpcGVsaW5l IHdoZW4gbm90IGluIHBpcGVsaW5lIG1vZGUKKy0tIFF1ZXJ5IHVzaW5nIHNpbXBsZSBwcm90b2Nv bCBzaG91bGQgbm90IGJlIHNlbnQgYW5kIHNob3VsZCBsZWF2ZSB0aGUgcGlwZWxpbmUgdXNhYmxl Citcc3RhcnRwaXBlbGluZQorU0VMRUNUIDE7CitQUXNlbmRRdWVyeSBub3QgYWxsb3dlZCBpbiBw aXBlbGluZSBtb2RlCitTRUxFQ1QgJDEgXGJpbmQgJ3ZhbDEnIFxnCitcZW5kcGlwZWxpbmUKKyA/ Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyB2YWwxCisoMSByb3cpCisKKy0tIEFmdGVyIGFuIGFib3J0 ZWQgcGlwZWxpbmUsIGNvbW1hbmRzIGFmdGVyIGEgc3luYyBzaG91bGQgYmUgZGlzcGxheWVkCitc c3RhcnRwaXBlbGluZQorU0VMRUNUICQxIFxiaW5kIFxnCitcc3luY3BpcGVsaW5lCitTRUxFQ1Qg JDEgXGJpbmQgMSBcZworXGVuZHBpcGVsaW5lCitFUlJPUjogIGJpbmQgbWVzc2FnZSBzdXBwbGll cyAwIHBhcmFtZXRlcnMsIGJ1dCBwcmVwYXJlZCBzdGF0ZW1lbnQgIiIgcmVxdWlyZXMgMQorID9j b2x1bW4/IAorLS0tLS0tLS0tLQorIDEKKygxIHJvdykKKworLS0gSW5jb3JyZWN0IG51bWJlciBv ZiBwYXJhbWV0ZXJzLCB0aGUgcGlwZWxpbmUgd2lsbCBiZSBhYm9ydGVkIGFuZCBmb2xsb3dpbmcg cXVlcmllcyB3b24ndCBiZSBleGVjdXRlZAorXHN0YXJ0cGlwZWxpbmUKK1NFTEVDVCBcYmluZCAn dmFsMScgXGcKK1NFTEVDVCAkMSBcYmluZCAndmFsMScgXGcKK1xlbmRwaXBlbGluZQorRVJST1I6 ICBiaW5kIG1lc3NhZ2Ugc3VwcGxpZXMgMSBwYXJhbWV0ZXJzLCBidXQgcHJlcGFyZWQgc3RhdGVt ZW50ICIiIHJlcXVpcmVzIDAKKy0tIEFuIGV4cGxpY2l0IHRyYW5zYWN0aW9uIHdpdGggYW4gZXJy b3IgbmVlZHMgdG8gYmUgcm9sbGJhY2tlZCBhZnRlciB0aGUgcGlwZWxpbmUKK1xzdGFydHBpcGVs aW5lCitCRUdJTiBcYmluZCBcZworSU5TRVJUIElOVE8gcHNxbF9waXBlbGluZSBWQUxVRVMgKCQx KSBcYmluZCAxIFxnCitST0xMQkFDSyBcYmluZCBcZworXGVuZHBpcGVsaW5lCitFUlJPUjogIGR1 cGxpY2F0ZSBrZXkgdmFsdWUgdmlvbGF0ZXMgdW5pcXVlIGNvbnN0cmFpbnQgInBzcWxfcGlwZWxp bmVfcGtleSIKK0RFVEFJTDogIEtleSAoYSk9KDEpIGFscmVhZHkgZXhpc3RzLgorUk9MTEJBQ0s7 CistLSBcd2F0Y2ggc2VuZHMgYSBzaW1wbGUgcXVlcnkgd2hpY2ggd29uJ3QgYmUgYWxsb3dlZCB3 aXRoaW4gYSBwaXBlbGluZQorXHN0YXJ0cGlwZWxpbmUKK1NFTEVDVCBcYmluZCBcZworXHdhdGNo IDEKK1BRc2VuZFF1ZXJ5IG5vdCBhbGxvd2VkIGluIHBpcGVsaW5lIG1vZGUKKworXGVuZHBpcGVs aW5lCistLQorKDEgcm93KQorCistLSBcZ2Rlc2Mgc2hvdWxkIGZhaWwgYXMgc3luY2hyb25vdXMg Y29tbWFuZHMgYXJlIG5vdCBhbGxvd2VkIGluIHBpcGVsaW5lLCBwaXBlbGluZSBzaG91bGQgc3Rp bGwgYmUgdXNhYmxlCitcc3RhcnRwaXBlbGluZQorU0VMRUNUICQxIFxiaW5kIDEgXGdkZXNjCitz eW5jaHJvbm91cyBjb21tYW5kIGV4ZWN1dGlvbiBmdW5jdGlvbnMgYXJlIG5vdCBhbGxvd2VkIGlu IHBpcGVsaW5lIG1vZGUKK1NFTEVDVCAkMSBcYmluZCAxIFxnCitcZW5kcGlwZWxpbmUKKyA/Y29s dW1uPyAKKy0tLS0tLS0tLS0KKyAxCisoMSByb3cpCisKKy0tIFxnc2V0IGlzIG5vdCBhbGxvd2Vk LCBwaXBlbGluZSBzaG91bGQgc3RpbGwgYmUgdXNhYmxlCitcc3RhcnRwaXBlbGluZQorU0VMRUNU ICQxIGFzIGksICQyIGFzIGogXHBhcnNlICcnCitTRUxFQ1QgJDEgYXMgaywgJDIgYXMgbCBccGFy c2UgJ3NlY29uZCcKK1xiaW5kX25hbWVkICcnIDEgMiBcZ3NldAorXGdzZXQgbm90IGFsbG93ZWQg aW4gcGlwZWxpbmUgbW9kZQorXGJpbmRfbmFtZWQgc2Vjb25kIDEgMiBcZ3NldCBwcmVmMDJfIFxl Y2hvIDpwcmVmMDJfaSA6cHJlZjAyX2oKK1xnc2V0IG5vdCBhbGxvd2VkIGluIHBpcGVsaW5lIG1v ZGUKK1xiaW5kX25hbWVkICcnIDEgMiBcZworXGVuZHBpcGVsaW5lCisgaSB8IGogCistLS0rLS0t CisgMSB8IDIKKygxIHJvdykKKworLS0gXGd4IGlzIG5vdCBhbGxvd2VkLCBwaXBlbGluZSBzaG91 bGQgc3RpbGwgYmUgdXNhYmxlCitcc3RhcnRwaXBlbGluZQorU0VMRUNUICQxIFxiaW5kIDEgXGd4 CitcZ3ggbm90IGFsbG93ZWQgaW4gcGlwZWxpbmUgbW9kZQorXHJlc2V0CitTRUxFQ1QgJDEgXGJp bmQgMSBcZworXGVuZHBpcGVsaW5lCisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisgMQorKDEgcm93 KQorCistLSBcZ3ggd2FybmluZyBzaG91bGQgYmUgZW1pdHRlZCBpbiBhbiBhYm9ydGVkIHBpcGVs aW5lCitcc3RhcnRwaXBlbGluZQorU0VMRUNUICQxIFxiaW5kIFxnCitcZmx1c2hyZXF1ZXN0Citc Z2V0cmVzdWx0cworRVJST1I6ICBiaW5kIG1lc3NhZ2Ugc3VwcGxpZXMgMCBwYXJhbWV0ZXJzLCBi dXQgcHJlcGFyZWQgc3RhdGVtZW50ICIiIHJlcXVpcmVzIDEKK1NFTEVDVCAkMSBcYmluZCAxIFxn eAorXGd4IG5vdCBhbGxvd2VkIGluIHBpcGVsaW5lIG1vZGUKK1xlbmRwaXBlbGluZQorLS0gXGdl eGVjIGlzIG5vdCBhbGxvd2VkLCBwaXBlbGluZSBzaG91bGQgc3RpbGwgYmUgdXNhYmxlCitcc3Rh cnRwaXBlbGluZQorU0VMRUNUICdJTlNFUlQgSU5UTyBwc3FsX3BpcGVsaW5lKGEpIFNFTEVDVCBn ZW5lcmF0ZV9zZXJpZXMoMSwgMTApJyBccGFyc2UgJ2luc2VydF9zdG10JworXGJpbmRfbmFtZWQg aW5zZXJ0X3N0bXQgXGdleGVjCitcZ2V4ZWMgbm90IGFsbG93ZWQgaW4gcGlwZWxpbmUgbW9kZQor XGJpbmRfbmFtZWQgaW5zZXJ0X3N0bXQgXGcKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIHBzcWxfcGlw ZWxpbmUgXGJpbmQgXGcKK1xlbmRwaXBlbGluZQorICAgICAgICAgICAgICAgICAgICAgICAgICA/ Y29sdW1uPyAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBJTlNFUlQgSU5UTyBwc3Fs X3BpcGVsaW5lKGEpIFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXMoMSwgMTApCisoMSByb3cpCisKKyBj b3VudCAKKy0tLS0tLS0KKyAgICAgNAorKDEgcm93KQorCistLSBBZnRlciBhbiBlcnJvciwgcGlw ZWxpbmUgaXMgYWJvcnRlZCBhbmQgcmVxdWlyZXMgYSBzeW5jIHRvIGJlIHJldXNhYmxlCitcc3Rh cnRwaXBlbGluZQorU0VMRUNUICQxIFxiaW5kIFxnCitTRUxFQ1QgJDEgXGJpbmQgMSBcZworU0VM RUNUICQxIFxwYXJzZSBhCitcYmluZF9uYW1lZCBhIDEgXGcKK1xjbG9zZSBhCitcZmx1c2hyZXF1 ZXN0CitcZ2V0cmVzdWx0cworRVJST1I6ICBiaW5kIG1lc3NhZ2Ugc3VwcGxpZXMgMCBwYXJhbWV0 ZXJzLCBidXQgcHJlcGFyZWQgc3RhdGVtZW50ICIiIHJlcXVpcmVzIDEKKy0tIFBpcGVsaW5lIGlz IGFib3J0ZWQKK1NFTEVDVCAkMSBcYmluZCAxIFxnCitTRUxFQ1QgJDEgXHBhcnNlIGEKK1xiaW5k X25hbWVkIGEgMSBcZworXGNsb3NlIGEKKy0tIFN5bmMgYWxsb3dzIHBpcGVsaW5lIHRvIHJlY292 ZXIKK1xzeW5jcGlwZWxpbmUKK1xnZXRyZXN1bHRzCitQaXBlbGluZSBhYm9ydGVkLCBjb21tYW5k IGRpZG4ndCBydW4KK1NFTEVDVCAkMSBcYmluZCAxIFxnCitTRUxFQ1QgJDEgXHBhcnNlIGEKK1xi aW5kX25hbWVkIGEgMSBcZworXGNsb3NlIGEKK1xmbHVzaHJlcXVlc3QKK1xnZXRyZXN1bHRzCisg P2NvbHVtbj8gCistLS0tLS0tLS0tCisgMQorKDEgcm93KQorCisgP2NvbHVtbj8gCistLS0tLS0t LS0tCisgMQorKDEgcm93KQorCitcZW5kcGlwZWxpbmUKKy0tIEluIGFuIGFib3J0ZWQgcGlwZWxp bmUsIFxnZXRyZXN1bHRzIDEgYWJvcnRlZCBjb21tYW5kcyBvbmUgYXQgYSB0aW1lCitcc3RhcnRw aXBlbGluZQorU0VMRUNUICQxIFxiaW5kIFxnCitTRUxFQ1QgJDEgXGJpbmQgMSBcZworU0VMRUNU ICQxIFxwYXJzZSBhCitcYmluZF9uYW1lZCBhIDEgXGcKK1xzeW5jcGlwZWxpbmUKK1xnZXRyZXN1 bHRzIDEKK0VSUk9SOiAgYmluZCBtZXNzYWdlIHN1cHBsaWVzIDAgcGFyYW1ldGVycywgYnV0IHBy ZXBhcmVkIHN0YXRlbWVudCAiIiByZXF1aXJlcyAxCitcZ2V0cmVzdWx0cyAxCitQaXBlbGluZSBh Ym9ydGVkLCBjb21tYW5kIGRpZG4ndCBydW4KK1xnZXRyZXN1bHRzIDEKK1BpcGVsaW5lIGFib3J0 ZWQsIGNvbW1hbmQgZGlkbid0IHJ1bgorXGdldHJlc3VsdHMgMQorUGlwZWxpbmUgYWJvcnRlZCwg Y29tbWFuZCBkaWRuJ3QgcnVuCitcZ2V0cmVzdWx0cyAxCitcZW5kcGlwZWxpbmUKKy0tIFRlc3Qg Y2h1bmtlZCByZXN1bHRzIHdpdGggYW4gYWJvcnRlZCBwaXBlbGluZQorXHN0YXJ0cGlwZWxpbmUK K1xzZXQgRkVUQ0hfQ09VTlQgMTAKK1NFTEVDVCAkMSBcYmluZCBcZworXGZsdXNocmVxdWVzdAor XGdldHJlc3VsdHMKK0VSUk9SOiAgYmluZCBtZXNzYWdlIHN1cHBsaWVzIDAgcGFyYW1ldGVycywg YnV0IHByZXBhcmVkIHN0YXRlbWVudCAiIiByZXF1aXJlcyAxCitTRUxFQ1QgJDEgXGJpbmQgXGcK K1xlbmRwaXBlbGluZQorZmV0Y2hpbmcgcmVzdWx0cyBpbiBjaHVua2VkIG1vZGUgZmFpbGVkCitQ aXBlbGluZSBhYm9ydGVkLCBjb21tYW5kIGRpZG4ndCBydW4KK1x1bnNldCBGRVRDSF9DT1VOVAor LS0gXGdldHJlc3VsdHMgcmV0dXJucyBhbiBlcnJvciB3aGVuIGFuIGluY29ycmVjdCBudW1iZXIg aXMgcHJvdmlkZWQKK1xzdGFydHBpcGVsaW5lCitcZ2V0cmVzdWx0cyAtMQorXGdldHJlc3VsdHM6 IGludmFsaWQgbnVtYmVyIG9mIHJlcXVlc3RlZCByZXN1bHRzCitcZW5kcGlwZWxpbmUKKy0tIFxn ZXRyZXN1bHRzIHdoZW4gdGhlcmUncyBubyByZXN1bHQgc2hvdWxkbid0IGltcGFjdCB0aGUgZm9s bG93aW5nIHF1ZXJ5CitcZ2V0cmVzdWx0cyAxCitObyBwZW5kaW5nIHJlc3VsdHMgdG8gZ2V0Citz ZWxlY3QgMTsKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyAgICAgICAgMQorKDEgcm93KQorCist LSBwaXBlbGluaW5nIGFuZCB0cmFuc2FjdGlvbiBibG9jayBiZWhhdmlvdXIKKy0tIHNldCBsb2Nh bCB3aWxsIGlzc3VlIGEgd2FybmluZyB3aGVuIG1vZGlmeWluZyBhIEdVQyBvdXRzaWRlIG9mIGEg dHJhbnNhY3Rpb24gYmxvY2sKKy0tIFRoZSBjaGFuZ2Ugd2lsbCBzdGlsbCBiZSB2YWxpZCBhcyBh IHBpcGVsaW5lIHJ1bnMgd2l0aGluIGFuIGltcGxpY2l0IHRyYW5zYWN0aW9uIGJsb2NrCistLSBT ZW5kaW5nIGEgc3luYyB3aWxsIGNvbW1pdCB0aGUgaW1wbGljaXQgdHJhbnNhY3Rpb24gYmxvY2su IFRoZSBmaXJzdCBjb21tYW5kIGFmdGVyIGEgc3luYworLS0gd29uJ3QgYmUgc2VlbiBhcyBiZWxv bmdpbmcgdG8gYSBwaXBlbGluZS4KK1xzdGFydHBpcGVsaW5lCitTRVQgTE9DQUwgc3RhdGVtZW50 X3RpbWVvdXQ9JzFoJyBcYmluZCBcZworU0hPVyBzdGF0ZW1lbnRfdGltZW91dCBcYmluZCBcZwor XHN5bmNwaXBlbGluZQorU0hPVyBzdGF0ZW1lbnRfdGltZW91dCBcYmluZCBcZworU0VUIExPQ0FM IHN0YXRlbWVudF90aW1lb3V0PScyaCcgXGJpbmQgXGcKK1NIT1cgc3RhdGVtZW50X3RpbWVvdXQg XGJpbmQgXGcKK1xlbmRwaXBlbGluZQorV0FSTklORzogIFNFVCBMT0NBTCBjYW4gb25seSBiZSB1 c2VkIGluIHRyYW5zYWN0aW9uIGJsb2NrcworIHN0YXRlbWVudF90aW1lb3V0IAorLS0tLS0tLS0t LS0tLS0tLS0tLQorIDFoCisoMSByb3cpCisKKyBzdGF0ZW1lbnRfdGltZW91dCAKKy0tLS0tLS0t LS0tLS0tLS0tLS0KKyAwCisoMSByb3cpCisKKyBzdGF0ZW1lbnRfdGltZW91dCAKKy0tLS0tLS0t LS0tLS0tLS0tLS0KKyAyaAorKDEgcm93KQorCistLSBSZWluZGV4IGNvbmN1cnJlbnRseSBpcyBm b3JiaWRkZW4gaW4gdGhlIG1pZGRsZSBvZiBhIHBpcGVsaW5lCitcc3RhcnRwaXBlbGluZQorU0VM RUNUICQxIFxiaW5kIDEgXGcKK1JFSU5ERVggVEFCTEUgQ09OQ1VSUkVOVExZIHBzcWxfcGlwZWxp bmUgXGJpbmQgXGcKK1NFTEVDVCAkMSBcYmluZCAyIFxnCitcZW5kcGlwZWxpbmUKKyA/Y29sdW1u PyAKKy0tLS0tLS0tLS0KKyAxCisoMSByb3cpCisKK0VSUk9SOiAgUkVJTkRFWCBDT05DVVJSRU5U TFkgY2Fubm90IHJ1biBpbnNpZGUgYSB0cmFuc2FjdGlvbiBibG9jaworLS0gUmVpbmRleCBjb25j dXJyZW50bHkgd2lsbCB3b3JrIGlmIGl0J3MgdGhlIGZpcnN0IGNvbW1hbmQgb2YgYSBwaXBlbGlu ZQorXHN0YXJ0cGlwZWxpbmUKK1JFSU5ERVggVEFCTEUgQ09OQ1VSUkVOVExZIHBzcWxfcGlwZWxp bmUgXGJpbmQgXGcKK1NFTEVDVCAkMSBcYmluZCAyIFxnCitcZW5kcGlwZWxpbmUKKyA/Y29sdW1u PyAKKy0tLS0tLS0tLS0KKyAyCisoMSByb3cpCisKKy0tIHN1YnRyYW5zYWN0aW9ucyBhcmUgbm90 IGFsbG93ZWQgaW4gcGlwZWxpbmUgbW9kZQorXHN0YXJ0cGlwZWxpbmUKK1NBVkVQT0lOVCBhIFxi aW5kIFxnCitTRUxFQ1QgJDEgXGJpbmQgMSBcZworUk9MTEJBQ0sgVE8gU0FWRVBPSU5UIGEgXGJp bmQgXGcKK1NFTEVDVCAkMSBcYmluZCAyIFxnCitcZW5kcGlwZWxpbmUKK0VSUk9SOiAgU0FWRVBP SU5UIGNhbiBvbmx5IGJlIHVzZWQgaW4gdHJhbnNhY3Rpb24gYmxvY2tzCistLSBMb2NrIGNvbW1h bmQgd2lsbCBmYWlsIGFzIGZpcnN0IHBpcGVsaW5lIGNvbW1hbmQgaXMgbm90IHNlZW4gYXMgYSB0 cmFuc2FjdGlvbiBibG9jaworXHN0YXJ0cGlwZWxpbmUKK0xPQ0sgcHNxbF9waXBlbGluZSBcYmlu ZCBcZworU0VMRUNUICQxIFxiaW5kIDIgXGcKK1xlbmRwaXBlbGluZQorRVJST1I6ICBMT0NLIFRB QkxFIGNhbiBvbmx5IGJlIHVzZWQgaW4gdHJhbnNhY3Rpb24gYmxvY2tzCistLSBMb2NrIGNvbW1h bmQgd2lsbCBzdWNjZWVkIGFmdGVyIHRoZSBmaXJzdCBjb21tYW5kIGFzIHBpcGVsaW5lIHdpbGwg YmUgc2VlbiBhcyBhbiBpbXBsaWNpdCB0cmFuc2FjdGlvbiBibG9jaworXHN0YXJ0cGlwZWxpbmUK K1NFTEVDVCAkMSBcYmluZCAxIFxnCitMT0NLIHBzcWxfcGlwZWxpbmUgXGJpbmQgXGcKK1NFTEVD VCAkMSBcYmluZCAyIFxnCitcZW5kcGlwZWxpbmUKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyAx CisoMSByb3cpCisKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyAyCisoMSByb3cpCisKKy0tIFZh Y3V1bSBjb21tYW5kIHdpbGwgd29yayBhcyB0aGUgZmlyc3QgY29tbWFuZAorXHN0YXJ0cGlwZWxp bmUKK1ZBQ1VVTSBwc3FsX3BpcGVsaW5lIFxiaW5kIFxnCitcZW5kcGlwZWxpbmUKKy0tIFZhY3V1 bSBjb21tYW5kIHdpbGwgZmFpbCB3aXRoaW4gcGlwZWxpbmUgaW1wbGljaXQgdHJhbnNhY3Rpb24K K1xzdGFydHBpcGVsaW5lCitTRUxFQ1QgMSBcYmluZCBcZworVkFDVVVNIHBzcWxfcGlwZWxpbmUg XGJpbmQgXGcKK1xlbmRwaXBlbGluZQorID9jb2x1bW4/IAorLS0tLS0tLS0tLQorICAgICAgICAx CisoMSByb3cpCisKK0VSUk9SOiAgVkFDVVVNIGNhbm5vdCBydW4gaW5zaWRlIGEgdHJhbnNhY3Rp b24gYmxvY2sKKy0tIFZhY3V1bSBjb21tYW5kIHdpbGwgd29yayBhZnRlciBhIHN5bmMKK1xzdGFy dHBpcGVsaW5lCitTRUxFQ1QgMSBcYmluZCBcZworXHN5bmNwaXBlbGluZQorVkFDVVVNIHBzcWxf cGlwZWxpbmUgXGJpbmQgXGcKK1xlbmRwaXBlbGluZQorID9jb2x1bW4/IAorLS0tLS0tLS0tLQor ICAgICAgICAxCisoMSByb3cpCisKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Bz cWwuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHNxbC5zcWwKaW5kZXggYzUwMjFmYzBiMTMu LjMzYjIwNGVkZDdmIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wc3FsLnNxbAor KysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wc3FsLnNxbApAQCAtMTkyOSwzICsxOTI5LDQwMiBA QCBDUkVBVEUgVEFCTEUgZGVmcHJpdnMgKGEgaW50KTsKIFx6IGRlZnByaXZzCiBccHNldCBudWxs ICcnCiBEUk9QIFRBQkxFIGRlZnByaXZzOworCistLSBwaXBlbGluaW5nCitDUkVBVEUgVEFCTEUg cHNxbF9waXBlbGluZShhIElOVEVHRVIgUFJJTUFSWSBLRVksIHMgVEVYVCk7CisKKy0tIHNpbmds ZSBxdWVyeQorXHN0YXJ0cGlwZWxpbmUKK1NFTEVDVCAkMSBcYmluZCAndmFsMScgXGcKK1xlbmRw aXBlbGluZQorCistLSBtdWx0aXBsZSBxdWVyaWVzCitcc3RhcnRwaXBlbGluZQorU0VMRUNUICQx IFxiaW5kICd2YWwxJyBcZworU0VMRUNUICQxLCAkMiBcYmluZCAndmFsMicgJ3ZhbDMnIFxnCitT RUxFQ1QgJDEsICQyIFxiaW5kICd2YWwyJyAndmFsMycgXGcKK1xlbmRwaXBlbGluZQorCistLSBU ZXN0IFxmbHVzaAorXHN0YXJ0cGlwZWxpbmUKK1xmbHVzaAorU0VMRUNUICQxIFxiaW5kICd2YWwx JyBcZworXGZsdXNoCitTRUxFQ1QgJDEsICQyIFxiaW5kICd2YWwyJyAndmFsMycgXGcKK1NFTEVD VCAkMSwgJDIgXGJpbmQgJ3ZhbDInICd2YWwzJyBcZworXGVuZHBpcGVsaW5lCisKKy0tIHNlbmQg bXVsdGlwbGUgc3luY3MKK1xzdGFydHBpcGVsaW5lCitTRUxFQ1QgJDEgXGJpbmQgJ3ZhbDEnIFxn Citcc3luY3BpcGVsaW5lCitcc3luY3BpcGVsaW5lCitTRUxFQ1QgJDEsICQyIFxiaW5kICd2YWwy JyAndmFsMycgXGcKK1xzeW5jcGlwZWxpbmUKK1NFTEVDVCAkMSwgJDIgXGJpbmQgJ3ZhbDQnICd2 YWw1JyBcZworXGVuZHBpcGVsaW5lCisKKy0tIHN0YXJ0cGlwZWxpbmUgc2hvdWxkbid0IGhhdmUg YW55IGVmZmVjdCBpZiBhbHJlYWR5IGluIGEgcGlwZWxpbmUKK1xzdGFydHBpcGVsaW5lCitcc3Rh cnRwaXBlbGluZQorU0VMRUNUICQxIFxiaW5kICd2YWwxJyBcZworXGVuZHBpcGVsaW5lCisKKy0t IENvbnZlcnQgYW4gaW1wbGljaXQgdHggYmxvY2sgdG8gYW4gZXhwbGljaXQgdHggYmxvY2sKK1xz dGFydHBpcGVsaW5lCitJTlNFUlQgSU5UTyBwc3FsX3BpcGVsaW5lIFZBTFVFUyAoJDEpIFxiaW5k IDEgXGcKK0JFR0lOIFxiaW5kIFxnCitJTlNFUlQgSU5UTyBwc3FsX3BpcGVsaW5lIFZBTFVFUyAo JDEpIFxiaW5kIDIgXGcKK1JPTExCQUNLIFxiaW5kIFxnCitcZW5kcGlwZWxpbmUKKworLS0gTXVs dGlwbGUgZXhwbGljaXQgdHJhbnNhY3Rpb25zCitcc3RhcnRwaXBlbGluZQorQkVHSU4gXGJpbmQg XGcKK0lOU0VSVCBJTlRPIHBzcWxfcGlwZWxpbmUgVkFMVUVTICgkMSkgXGJpbmQgMSBcZworUk9M TEJBQ0sgXGJpbmQgXGcKK0JFR0lOIFxiaW5kIFxnCitJTlNFUlQgSU5UTyBwc3FsX3BpcGVsaW5l IFZBTFVFUyAoJDEpIFxiaW5kIDEgXGcKK0NPTU1JVCBcYmluZCBcZworXGVuZHBpcGVsaW5lCisK Ky0tIENPUFkgRlJPTSBTVERJTgorXHN0YXJ0cGlwZWxpbmUKK1NFTEVDVCAkMSBcYmluZCAndmFs MScgXGcKK0NPUFkgcHNxbF9waXBlbGluZSBGUk9NIFNURElOIFxiaW5kIFxnCitcZW5kcGlwZWxp bmUKKzIJdGVzdDIKK1wuCisKKy0tIENPUFkgRlJPTSBTVERJTiB3aXRoIFxmbHVzaHJlcXVlc3Qg KyBcZ2V0cmVzdWx0cworXHN0YXJ0cGlwZWxpbmUKK1NFTEVDVCAkMSBcYmluZCAndmFsMScgXGcK K0NPUFkgcHNxbF9waXBlbGluZSBGUk9NIFNURElOIFxiaW5kIFxnCitcZmx1c2hyZXF1ZXN0Citc Z2V0cmVzdWx0cworMwl0ZXN0MworXC4KK1xlbmRwaXBlbGluZQorCistLSBDT1BZIEZST00gU1RE SU4gd2l0aCBcc3luY3BpcGVsaW5lICsgXGdldHJlc3VsdHMKK1xzdGFydHBpcGVsaW5lCitTRUxF Q1QgJDEgXGJpbmQgJ3ZhbDEnIFxnCitDT1BZIHBzcWxfcGlwZWxpbmUgRlJPTSBTVERJTiBcYmlu ZCBcZworXHN5bmNwaXBlbGluZQorXGdldHJlc3VsdHMKKzQJdGVzdDQKK1wuCitcZW5kcGlwZWxp bmUKKworLS0gQ09QWSBUTyBTVERPVVQKK1xzdGFydHBpcGVsaW5lCitTRUxFQ1QgJDEgXGJpbmQg J3ZhbDEnIFxnCitjb3B5IHBzcWxfcGlwZWxpbmUgVE8gU1RET1VUIFxiaW5kIFxnCitcZW5kcGlw ZWxpbmUKKworLS0gQ09QWSBUTyBTVERPVVQgd2l0aCBcZmx1c2hyZXF1ZXN0ICsgXGdldHJlc3Vs dHMKK1xzdGFydHBpcGVsaW5lCitTRUxFQ1QgJDEgXGJpbmQgJ3ZhbDEnIFxnCitjb3B5IHBzcWxf cGlwZWxpbmUgVE8gU1RET1VUIFxiaW5kIFxnCitcZmx1c2hyZXF1ZXN0CitcZ2V0cmVzdWx0cwor XGVuZHBpcGVsaW5lCisKKy0tIENPUFkgVE8gU1RET1VUIHdpdGggXHN5bmNwaXBlbGluZSArIFxn ZXRyZXN1bHRzCitcc3RhcnRwaXBlbGluZQorU0VMRUNUICQxIFxiaW5kICd2YWwxJyBcZworY29w eSBwc3FsX3BpcGVsaW5lIFRPIFNURE9VVCBcYmluZCBcZworXHN5bmNwaXBlbGluZQorXGdldHJl c3VsdHMKK1xlbmRwaXBlbGluZQorCistLSBVc2UgXHBhcnNlIGFuZCBcYmluZF9uYW1lZAorXHN0 YXJ0cGlwZWxpbmUKK1NFTEVDVCAkMSBccGFyc2UgJycKK1NFTEVDVCAkMSwgJDIgXHBhcnNlICcn CitTRUxFQ1QgJDIgXHBhcnNlIHBpcGVsaW5lXzEKK1xiaW5kX25hbWVkICcnIDEgMiBcZworXGJp bmRfbmFtZWQgcGlwZWxpbmVfMSAyIFxnCitcZW5kcGlwZWxpbmUKKworLS0gXGdldHJlc3VsdHMg ZGlzcGxheXMgYWxsIHJlc3VsdHMgcHJlY2VkaW5nIGEgXGZsdXNocmVxdWVzdAorXHN0YXJ0cGlw ZWxpbmUKK1NFTEVDVCAkMSBcYmluZCAxIFxnCitTRUxFQ1QgJDEgXGJpbmQgMiBcZworXGZsdXNo cmVxdWVzdAorXGdldHJlc3VsdHMKK1xlbmRwaXBlbGluZQorCistLSBcZ2V0cmVzdWx0cyBkaXNw bGF5cyBhbGwgcmVzdWx0cyBwcmVjZWRpbmcgYSBzeW5jCitcc3RhcnRwaXBlbGluZQorU0VMRUNU ICQxIFxiaW5kIDEgXGcKK1NFTEVDVCAkMSBcYmluZCAyIFxnCitcc3luY3BpcGVsaW5lCitcZ2V0 cmVzdWx0cworXGVuZHBpcGVsaW5lCisKKy0tIFxnZXRyZXN1bHRzIGltbWVkaWF0ZWx5IHJldHVy bnMgaWYgdGhlcmUncyBubyByZXN1bHQgdG8gZmV0Y2gKK1xzdGFydHBpcGVsaW5lCitcZ2V0cmVz dWx0cworU0VMRUNUICQxIFxiaW5kIDIgXGcKK1xnZXRyZXN1bHRzCitcZmx1c2hyZXF1ZXN0Citc ZW5kcGlwZWxpbmUKK1xnZXRyZXN1bHRzCisKKy0tIFxnZXRyZXN1bHRzIG9ubHkgZmV0Y2ggcmVz dWx0cyBwcmVjZWRpbmcgYSBmbHVzaHJlcXVlc3QKK1xzdGFydHBpcGVsaW5lCitTRUxFQ1QgJDEg XGJpbmQgMiBcZworXGZsdXNocmVxdWVzdAorU0VMRUNUICQxIFxiaW5kIDIgXGcKK1xnZXRyZXN1 bHRzCitcZW5kcGlwZWxpbmUKKworLS0gXGdldHJlc3VsdHMgb25seSBmZXRjaCByZXN1bHRzIHBy ZWNlZGluZyBhIHN5bmMgbWVzc2FnZQorXHN0YXJ0cGlwZWxpbmUKK1NFTEVDVCAkMSBcYmluZCAy IFxnCitcc3luY3BpcGVsaW5lCitTRUxFQ1QgJDEgXGJpbmQgMiBcZworXGdldHJlc3VsdHMKK1xl bmRwaXBlbGluZQorCistLSB1c2UgcGlwZWxpbmUgd2l0aCBjaHVua2VkIHJlc3VsdHMgd2l0aCBi b3RoIFxnZXRyZXN1bHRzIGFuZCBcZW5kcGlwZWxpbmUKK1xzdGFydHBpcGVsaW5lCitcc2V0IEZF VENIX0NPVU5UIDEwCitTRUxFQ1QgJDEgXGJpbmQgMiBcZworXGZsdXNocmVxdWVzdAorXGdldHJl c3VsdHMKK1NFTEVDVCAkMSBcYmluZCAyIFxnCitcZW5kcGlwZWxpbmUKK1x1bnNldCBGRVRDSF9D T1VOVAorCistLSBcZ2V0cmVzdWx0cyB3aXRoIHNwZWNpZmljIG51bWJlciBvZiByZXF1ZXN0ZWQg cmVzdWx0cworXHN0YXJ0cGlwZWxpbmUKK1NFTEVDVCAkMSBcYmluZCAxIFxnCitTRUxFQ1QgJDEg XGJpbmQgMiBcZworU0VMRUNUICQxIFxiaW5kIDMgXGcKK1xzeW5jcGlwZWxpbmUKK1xnZXRyZXN1 bHRzIDEKK1NFTEVDVCAkMSBcYmluZCA0IFxnCitcZ2V0cmVzdWx0cyAzCitcZW5kcGlwZWxpbmUK KworLS0gXHN5bmNwaXBlbGluZSBjb3VudCBhcyBvbmUgY29tbWFuZCB0byBmZXRjaCBmb3IgXGdl dHJlc3VsdHMKK1xzdGFydHBpcGVsaW5lCitcc3luY3BpcGVsaW5lCitcc3luY3BpcGVsaW5lCitT RUxFQ1QgJDEgXGJpbmQgMSBcZworXGZsdXNocmVxdWVzdAorXGdldHJlc3VsdHMgMgorXGdldHJl c3VsdHMgMQorXGVuZHBpcGVsaW5lCisKKy0tIFxnZXRyZXN1bHRzIDAgc2hvdWxkIGdldCBhbGwg cmVzdWx0cworXHN0YXJ0cGlwZWxpbmUKK1NFTEVDVCAkMSBcYmluZCAxIFxnCitTRUxFQ1QgJDEg XGJpbmQgMiBcZworU0VMRUNUICQxIFxiaW5kIDMgXGcKK1xzeW5jcGlwZWxpbmUKK1xnZXRyZXN1 bHRzIDAKK1xlbmRwaXBlbGluZQorCistLSBwaXBlbGluaW5nIGVycm9ycworCistLSBlbmRwaXBl bGluZSBvdXRzaWRlIG9mIHBpcGVsaW5lIHNob3VsZCBmYWlsCitcZW5kcGlwZWxpbmUKKworLS0g UXVlcnkgdXNpbmcgc2ltcGxlIHByb3RvY29sIHNob3VsZCBub3QgYmUgc2VudCBhbmQgc2hvdWxk IGxlYXZlIHRoZSBwaXBlbGluZSB1c2FibGUKK1xzdGFydHBpcGVsaW5lCitTRUxFQ1QgMTsKK1NF TEVDVCAkMSBcYmluZCAndmFsMScgXGcKK1xlbmRwaXBlbGluZQorCistLSBBZnRlciBhbiBhYm9y dGVkIHBpcGVsaW5lLCBjb21tYW5kcyBhZnRlciBhIHN5bmMgc2hvdWxkIGJlIGRpc3BsYXllZAor XHN0YXJ0cGlwZWxpbmUKK1NFTEVDVCAkMSBcYmluZCBcZworXHN5bmNwaXBlbGluZQorU0VMRUNU ICQxIFxiaW5kIDEgXGcKK1xlbmRwaXBlbGluZQorCistLSBJbmNvcnJlY3QgbnVtYmVyIG9mIHBh cmFtZXRlcnMsIHRoZSBwaXBlbGluZSB3aWxsIGJlIGFib3J0ZWQgYW5kIGZvbGxvd2luZyBxdWVy aWVzIHdvbid0IGJlIGV4ZWN1dGVkCitcc3RhcnRwaXBlbGluZQorU0VMRUNUIFxiaW5kICd2YWwx JyBcZworU0VMRUNUICQxIFxiaW5kICd2YWwxJyBcZworXGVuZHBpcGVsaW5lCisKKy0tIEFuIGV4 cGxpY2l0IHRyYW5zYWN0aW9uIHdpdGggYW4gZXJyb3IgbmVlZHMgdG8gYmUgcm9sbGJhY2tlZCBh ZnRlciB0aGUgcGlwZWxpbmUKK1xzdGFydHBpcGVsaW5lCitCRUdJTiBcYmluZCBcZworSU5TRVJU IElOVE8gcHNxbF9waXBlbGluZSBWQUxVRVMgKCQxKSBcYmluZCAxIFxnCitST0xMQkFDSyBcYmlu ZCBcZworXGVuZHBpcGVsaW5lCitST0xMQkFDSzsKKworLS0gXHdhdGNoIHNlbmRzIGEgc2ltcGxl IHF1ZXJ5IHdoaWNoIHdvbid0IGJlIGFsbG93ZWQgd2l0aGluIGEgcGlwZWxpbmUKK1xzdGFydHBp cGVsaW5lCitTRUxFQ1QgXGJpbmQgXGcKK1x3YXRjaCAxCitcZW5kcGlwZWxpbmUKKworLS0gXGdk ZXNjIHNob3VsZCBmYWlsIGFzIHN5bmNocm9ub3VzIGNvbW1hbmRzIGFyZSBub3QgYWxsb3dlZCBp biBwaXBlbGluZSwgcGlwZWxpbmUgc2hvdWxkIHN0aWxsIGJlIHVzYWJsZQorXHN0YXJ0cGlwZWxp bmUKK1NFTEVDVCAkMSBcYmluZCAxIFxnZGVzYworU0VMRUNUICQxIFxiaW5kIDEgXGcKK1xlbmRw aXBlbGluZQorCistLSBcZ3NldCBpcyBub3QgYWxsb3dlZCwgcGlwZWxpbmUgc2hvdWxkIHN0aWxs IGJlIHVzYWJsZQorXHN0YXJ0cGlwZWxpbmUKK1NFTEVDVCAkMSBhcyBpLCAkMiBhcyBqIFxwYXJz ZSAnJworU0VMRUNUICQxIGFzIGssICQyIGFzIGwgXHBhcnNlICdzZWNvbmQnCitcYmluZF9uYW1l ZCAnJyAxIDIgXGdzZXQKK1xiaW5kX25hbWVkIHNlY29uZCAxIDIgXGdzZXQgcHJlZjAyXyBcZWNo byA6cHJlZjAyX2kgOnByZWYwMl9qCitcYmluZF9uYW1lZCAnJyAxIDIgXGcKK1xlbmRwaXBlbGlu ZQorCistLSBcZ3ggaXMgbm90IGFsbG93ZWQsIHBpcGVsaW5lIHNob3VsZCBzdGlsbCBiZSB1c2Fi bGUKK1xzdGFydHBpcGVsaW5lCitTRUxFQ1QgJDEgXGJpbmQgMSBcZ3gKK1xyZXNldAorU0VMRUNU ICQxIFxiaW5kIDEgXGcKK1xlbmRwaXBlbGluZQorCistLSBcZ3ggd2FybmluZyBzaG91bGQgYmUg ZW1pdHRlZCBpbiBhbiBhYm9ydGVkIHBpcGVsaW5lCitcc3RhcnRwaXBlbGluZQorU0VMRUNUICQx IFxiaW5kIFxnCitcZmx1c2hyZXF1ZXN0CitcZ2V0cmVzdWx0cworU0VMRUNUICQxIFxiaW5kIDEg XGd4CitcZW5kcGlwZWxpbmUKKworLS0gXGdleGVjIGlzIG5vdCBhbGxvd2VkLCBwaXBlbGluZSBz aG91bGQgc3RpbGwgYmUgdXNhYmxlCitcc3RhcnRwaXBlbGluZQorU0VMRUNUICdJTlNFUlQgSU5U TyBwc3FsX3BpcGVsaW5lKGEpIFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXMoMSwgMTApJyBccGFyc2Ug J2luc2VydF9zdG10JworXGJpbmRfbmFtZWQgaW5zZXJ0X3N0bXQgXGdleGVjCitcYmluZF9uYW1l ZCBpbnNlcnRfc3RtdCBcZworU0VMRUNUIENPVU5UKCopIEZST00gcHNxbF9waXBlbGluZSBcYmlu ZCBcZworXGVuZHBpcGVsaW5lCisKKy0tIEFmdGVyIGFuIGVycm9yLCBwaXBlbGluZSBpcyBhYm9y dGVkIGFuZCByZXF1aXJlcyBhIHN5bmMgdG8gYmUgcmV1c2FibGUKK1xzdGFydHBpcGVsaW5lCitT RUxFQ1QgJDEgXGJpbmQgXGcKK1NFTEVDVCAkMSBcYmluZCAxIFxnCitTRUxFQ1QgJDEgXHBhcnNl IGEKK1xiaW5kX25hbWVkIGEgMSBcZworXGNsb3NlIGEKK1xmbHVzaHJlcXVlc3QKK1xnZXRyZXN1 bHRzCistLSBQaXBlbGluZSBpcyBhYm9ydGVkCitTRUxFQ1QgJDEgXGJpbmQgMSBcZworU0VMRUNU ICQxIFxwYXJzZSBhCitcYmluZF9uYW1lZCBhIDEgXGcKK1xjbG9zZSBhCistLSBTeW5jIGFsbG93 cyBwaXBlbGluZSB0byByZWNvdmVyCitcc3luY3BpcGVsaW5lCitcZ2V0cmVzdWx0cworU0VMRUNU ICQxIFxiaW5kIDEgXGcKK1NFTEVDVCAkMSBccGFyc2UgYQorXGJpbmRfbmFtZWQgYSAxIFxnCitc Y2xvc2UgYQorXGZsdXNocmVxdWVzdAorXGdldHJlc3VsdHMKK1xlbmRwaXBlbGluZQorCistLSBJ biBhbiBhYm9ydGVkIHBpcGVsaW5lLCBcZ2V0cmVzdWx0cyAxIGFib3J0ZWQgY29tbWFuZHMgb25l IGF0IGEgdGltZQorXHN0YXJ0cGlwZWxpbmUKK1NFTEVDVCAkMSBcYmluZCBcZworU0VMRUNUICQx IFxiaW5kIDEgXGcKK1NFTEVDVCAkMSBccGFyc2UgYQorXGJpbmRfbmFtZWQgYSAxIFxnCitcc3lu Y3BpcGVsaW5lCitcZ2V0cmVzdWx0cyAxCitcZ2V0cmVzdWx0cyAxCitcZ2V0cmVzdWx0cyAxCitc Z2V0cmVzdWx0cyAxCitcZ2V0cmVzdWx0cyAxCitcZW5kcGlwZWxpbmUKKworLS0gVGVzdCBjaHVu a2VkIHJlc3VsdHMgd2l0aCBhbiBhYm9ydGVkIHBpcGVsaW5lCitcc3RhcnRwaXBlbGluZQorXHNl dCBGRVRDSF9DT1VOVCAxMAorU0VMRUNUICQxIFxiaW5kIFxnCitcZmx1c2hyZXF1ZXN0CitcZ2V0 cmVzdWx0cworU0VMRUNUICQxIFxiaW5kIFxnCitcZW5kcGlwZWxpbmUKK1x1bnNldCBGRVRDSF9D T1VOVAorCistLSBcZ2V0cmVzdWx0cyByZXR1cm5zIGFuIGVycm9yIHdoZW4gYW4gaW5jb3JyZWN0 IG51bWJlciBpcyBwcm92aWRlZAorXHN0YXJ0cGlwZWxpbmUKK1xnZXRyZXN1bHRzIC0xCitcZW5k cGlwZWxpbmUKKworLS0gXGdldHJlc3VsdHMgd2hlbiB0aGVyZSdzIG5vIHJlc3VsdCBzaG91bGRu J3QgaW1wYWN0IHRoZSBmb2xsb3dpbmcgcXVlcnkKK1xnZXRyZXN1bHRzIDEKK3NlbGVjdCAxOwor CistLSBwaXBlbGluaW5nIGFuZCB0cmFuc2FjdGlvbiBibG9jayBiZWhhdmlvdXIKKworLS0gc2V0 IGxvY2FsIHdpbGwgaXNzdWUgYSB3YXJuaW5nIHdoZW4gbW9kaWZ5aW5nIGEgR1VDIG91dHNpZGUg b2YgYSB0cmFuc2FjdGlvbiBibG9jaworLS0gVGhlIGNoYW5nZSB3aWxsIHN0aWxsIGJlIHZhbGlk IGFzIGEgcGlwZWxpbmUgcnVucyB3aXRoaW4gYW4gaW1wbGljaXQgdHJhbnNhY3Rpb24gYmxvY2sK Ky0tIFNlbmRpbmcgYSBzeW5jIHdpbGwgY29tbWl0IHRoZSBpbXBsaWNpdCB0cmFuc2FjdGlvbiBi bG9jay4gVGhlIGZpcnN0IGNvbW1hbmQgYWZ0ZXIgYSBzeW5jCistLSB3b24ndCBiZSBzZWVuIGFz IGJlbG9uZ2luZyB0byBhIHBpcGVsaW5lLgorXHN0YXJ0cGlwZWxpbmUKK1NFVCBMT0NBTCBzdGF0 ZW1lbnRfdGltZW91dD0nMWgnIFxiaW5kIFxnCitTSE9XIHN0YXRlbWVudF90aW1lb3V0IFxiaW5k IFxnCitcc3luY3BpcGVsaW5lCitTSE9XIHN0YXRlbWVudF90aW1lb3V0IFxiaW5kIFxnCitTRVQg TE9DQUwgc3RhdGVtZW50X3RpbWVvdXQ9JzJoJyBcYmluZCBcZworU0hPVyBzdGF0ZW1lbnRfdGlt ZW91dCBcYmluZCBcZworXGVuZHBpcGVsaW5lCisKKy0tIFJlaW5kZXggY29uY3VycmVudGx5IGlz IGZvcmJpZGRlbiBpbiB0aGUgbWlkZGxlIG9mIGEgcGlwZWxpbmUKK1xzdGFydHBpcGVsaW5lCitT RUxFQ1QgJDEgXGJpbmQgMSBcZworUkVJTkRFWCBUQUJMRSBDT05DVVJSRU5UTFkgcHNxbF9waXBl bGluZSBcYmluZCBcZworU0VMRUNUICQxIFxiaW5kIDIgXGcKK1xlbmRwaXBlbGluZQorCistLSBS ZWluZGV4IGNvbmN1cnJlbnRseSB3aWxsIHdvcmsgaWYgaXQncyB0aGUgZmlyc3QgY29tbWFuZCBv ZiBhIHBpcGVsaW5lCitcc3RhcnRwaXBlbGluZQorUkVJTkRFWCBUQUJMRSBDT05DVVJSRU5UTFkg cHNxbF9waXBlbGluZSBcYmluZCBcZworU0VMRUNUICQxIFxiaW5kIDIgXGcKK1xlbmRwaXBlbGlu ZQorCistLSBzdWJ0cmFuc2FjdGlvbnMgYXJlIG5vdCBhbGxvd2VkIGluIHBpcGVsaW5lIG1vZGUK K1xzdGFydHBpcGVsaW5lCitTQVZFUE9JTlQgYSBcYmluZCBcZworU0VMRUNUICQxIFxiaW5kIDEg XGcKK1JPTExCQUNLIFRPIFNBVkVQT0lOVCBhIFxiaW5kIFxnCitTRUxFQ1QgJDEgXGJpbmQgMiBc ZworXGVuZHBpcGVsaW5lCisKKy0tIExvY2sgY29tbWFuZCB3aWxsIGZhaWwgYXMgZmlyc3QgcGlw ZWxpbmUgY29tbWFuZCBpcyBub3Qgc2VlbiBhcyBhIHRyYW5zYWN0aW9uIGJsb2NrCitcc3RhcnRw aXBlbGluZQorTE9DSyBwc3FsX3BpcGVsaW5lIFxiaW5kIFxnCitTRUxFQ1QgJDEgXGJpbmQgMiBc ZworXGVuZHBpcGVsaW5lCisKKy0tIExvY2sgY29tbWFuZCB3aWxsIHN1Y2NlZWQgYWZ0ZXIgdGhl IGZpcnN0IGNvbW1hbmQgYXMgcGlwZWxpbmUgd2lsbCBiZSBzZWVuIGFzIGFuIGltcGxpY2l0IHRy YW5zYWN0aW9uIGJsb2NrCitcc3RhcnRwaXBlbGluZQorU0VMRUNUICQxIFxiaW5kIDEgXGcKK0xP Q0sgcHNxbF9waXBlbGluZSBcYmluZCBcZworU0VMRUNUICQxIFxiaW5kIDIgXGcKK1xlbmRwaXBl bGluZQorCistLSBWYWN1dW0gY29tbWFuZCB3aWxsIHdvcmsgYXMgdGhlIGZpcnN0IGNvbW1hbmQK K1xzdGFydHBpcGVsaW5lCitWQUNVVU0gcHNxbF9waXBlbGluZSBcYmluZCBcZworXGVuZHBpcGVs aW5lCisKKy0tIFZhY3V1bSBjb21tYW5kIHdpbGwgZmFpbCB3aXRoaW4gcGlwZWxpbmUgaW1wbGlj aXQgdHJhbnNhY3Rpb24KK1xzdGFydHBpcGVsaW5lCitTRUxFQ1QgMSBcYmluZCBcZworVkFDVVVN IHBzcWxfcGlwZWxpbmUgXGJpbmQgXGcKK1xlbmRwaXBlbGluZQorCistLSBWYWN1dW0gY29tbWFu ZCB3aWxsIHdvcmsgYWZ0ZXIgYSBzeW5jCitcc3RhcnRwaXBlbGluZQorU0VMRUNUIDEgXGJpbmQg XGcKK1xzeW5jcGlwZWxpbmUKK1ZBQ1VVTSBwc3FsX3BpcGVsaW5lIFxiaW5kIFxnCitcZW5kcGlw ZWxpbmUKLS0gCjIuMzkuNSAoQXBwbGUgR2l0LTE1NCkKCg== --0000000000006b273c0629105220--