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 1tWCkD-00Ewfk-DK for pgsql-hackers@arkaria.postgresql.org; Fri, 10 Jan 2025 11:00:02 +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 1tWCkB-00F0FR-P2 for pgsql-hackers@arkaria.postgresql.org; Fri, 10 Jan 2025 10:59:59 +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 1tWCkB-00F0FI-1A for pgsql-hackers@lists.postgresql.org; Fri, 10 Jan 2025 10:59:59 +0000 Received: from mail-yb1-xb32.google.com ([2607:f8b0:4864:20::b32]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1tWCk8-000rnP-1a for pgsql-hackers@postgresql.org; Fri, 10 Jan 2025 10:59:57 +0000 Received: by mail-yb1-xb32.google.com with SMTP id 3f1490d57ef6-e53537d8feeso2747725276.0 for ; Fri, 10 Jan 2025 02:59:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=datadoghq.com; s=google; t=1736506796; x=1737111596; 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=qk1EljqsOipbhdmZUaagUe+ZyopSjjyzWizuO+D4FHg=; b=Esv1qvEAN0rYl5OHdttr8Y8YhVENIPBr2JiAZCQleud6gfsScmUphJMMfjnyKyMeh9 w1BC6riT3PARAR3rm+fonftwtL9hZEBKBdaLt/W+8OC2UsxYHsltdBxr9m/rupQr+KRx GXV42g7xrLiFU9OjV0xn1BxNkFtxchfRjnPlw= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1736506796; x=1737111596; 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=qk1EljqsOipbhdmZUaagUe+ZyopSjjyzWizuO+D4FHg=; b=Snr8kHIpnwBHnWCXFOIEUdx4+X47xofJ4JCu4j1r/hK2m8Q+SZQR2ELzrOx/2YeKs5 yzke/RSR5Ozlt11kniYYJT4GLrsQIw8payKFTAr7KQA1o/8nUEHS6ATWAIk7ZwxIDhS0 emF1N0pqncRj3eoMeUJv0sDHhCrpYMTmbXUa2lT6tdRyyKhm1YdU89va3s2xMmSy+rkU aOrqyjkEzUi1NGY5WqjannigPd/5wcdhrqkSXnhwq8OFuYL1nxGTd6MAhh44zdXZFUZu HLnnSIStC0BxDSMrnrAIhX2QT7UAvPSeDnsA8uCS2etc5v7C9Vsh7R8hUxM32OtBcHbn fIYQ== X-Forwarded-Encrypted: i=1; AJvYcCU4oqh+2bIU67iZVovCmWbAzfNJHUwVQzV6uwhMfouWPmLHgNP0FlJ5AzFG+4MkP/t8qBGMPOGZY6AeEWyc@postgresql.org X-Gm-Message-State: AOJu0YxUXFS+NZdsoOrzqReGoatjHjwag3Tj98FT6dwzvBEf3UGXGdki zgX0fU7/wfoHSQnxbAaqxnErNszxzrhlcGhLwMEz+IS34zN6hjN+rKhTJS6XQfMgM2uaw6l0ggF 5zHOGJnvIoS1k9oV/LDAD2sLJtoPebg1E0taRJA== X-Gm-Gg: ASbGncuQLxGZZ3Md0hMbMR85q/DQ9NvE6KoJOjFsg9YPw5/vSH8XcVF8xPjkI8FWFat kfmXzuUXTKLFrShsbAxk8FvnjvwwuM2CKTMEdgA== X-Google-Smtp-Source: AGHT+IEyj588saM/Iv2s9OPfYlPy+c1aPpeCb3ObqREfkoqdLwCJL8w7KCHWOHDKbeGztR1RGCsiD5kl5uOO7tFdEwc= X-Received: by 2002:a05:6902:15c2:b0:e4a:da1f:12d3 with SMTP id 3f1490d57ef6-e54ee1734b9mr8431000276.27.1736506795525; Fri, 10 Jan 2025 02:59:55 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Anthonin Bonnefoy Date: Fri, 10 Jan 2025 11:59:44 +0100 X-Gm-Features: AbW1kvZ2oX3YiD5o7LHxs8nvch-ZPWSviAHeblphtZYknPEubuYwqFpix-qsqyE Message-ID: Subject: Re: Add Pipelining support in psql To: Jelte Fennema-Nio Cc: Michael Paquier , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="000000000000b37f4f062b57fedb" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000b37f4f062b57fedb Content-Type: text/plain; charset="UTF-8" > 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. I've been looking into some issues related to a backend process stuck in ClientWrite state blocking the WAL replay and it turns out that pipelining + \flush was extremely useful to reproduce the issue. It makes it possible to saturate the server->client socket buffer since psql doesn't consume the results, easily triggering the state where the process is stuck in ClientWrite. So I'm amending my position on the usefulness of \flush and definitely see interesting usages. I've also found out that I didn't correctly manage connection reset. I've fixed this in v6 by resetting the pipeline counters on connection reset and only calling discardAbortedPipelineResults if we're inside a pipeline. --000000000000b37f4f062b57fedb Content-Type: application/octet-stream; name="v06-0001-Add-pipelining-support-in-psql.patch" Content-Disposition: attachment; filename="v06-0001-Add-pipelining-support-in-psql.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m5qmrrqk0 RnJvbSAwODUwNTEzMGNiMzlkZDgyMDJkNjk1NjFhYjcwMWY5YTNkMGMxN2Y3IE1vbiBTZXAgMTcg 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 ICAgICAgICAgICAgIHwgMjQ4ICsrKysrKysrKystCiBzcmMvYmluL3BzcWwvaGVscC5jICAgICAg ICAgICAgICAgIHwgICA3ICsKIHNyYy9iaW4vcHNxbC9wcm9tcHQuYyAgICAgICAgICAgICAgfCAg MTIgKwogc3JjL2Jpbi9wc3FsL3NldHRpbmdzLmggICAgICAgICAgICB8ICAxNSArLQogc3JjL2Jp bi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jICAgICB8ICAgOCArLQogc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9wc3FsLm91dCB8IDY2OCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogc3Jj L3Rlc3QvcmVncmVzcy9zcWwvcHNxbC5zcWwgICAgICB8IDM5OSArKysrKysrKysrKysrKysrKwog OSBmaWxlcyBjaGFuZ2VkLCAxNTk0IGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvcHNxbC1yZWYuc2dtbCBiL2RvYy9zcmMvc2dtbC9y ZWYvcHNxbC1yZWYuc2dtbAppbmRleCA3MmYzMzQ3ZTUzZC4uM2JjNzdkMmJiMGUgMTAwNjQ0Ci0t LSBhL2RvYy9zcmMvc2dtbC9yZWYvcHNxbC1yZWYuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVm L3BzcWwtcmVmLnNnbWwKQEAgLTM1NjIsNiArMzU2Miw4MiBAQCB0ZXN0ZGI9Jmd0OyA8dXNlcmlu cHV0PlxzZXRlbnYgTEVTUyAtaW14NEY8L3VzZXJpbnB1dD4KICAgICAgICAgPC9saXN0aXRlbT4K ICAgICAgIDwvdmFybGlzdGVudHJ5PgogCisgICAgIDx2YXJsaXN0ZW50cnkgaWQ9ImFwcC1wc3Fs LW1ldGEtY29tbWFuZC1waXBlbGluZSI+CisgICAgICA8dGVybT48bGl0ZXJhbD5cc3RhcnRwaXBl bGluZTwvbGl0ZXJhbD48L3Rlcm0+CisgICAgICA8dGVybT48bGl0ZXJhbD5cc3luY3BpcGVsaW5l PC9saXRlcmFsPjwvdGVybT4KKyAgICAgIDx0ZXJtPjxsaXRlcmFsPlxlbmRwaXBlbGluZTwvbGl0 ZXJhbD48L3Rlcm0+CisgICAgICA8dGVybT48bGl0ZXJhbD5cZmx1c2hyZXF1ZXN0PC9saXRlcmFs PjwvdGVybT4KKyAgICAgIDx0ZXJtPjxsaXRlcmFsPlxmbHVzaDwvbGl0ZXJhbD48L3Rlcm0+Cisg ICAgICA8dGVybT48bGl0ZXJhbD5cZ2V0cmVzdWx0cyBbIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5udW1iZXJfcmVzdWx0czwvcmVwbGFjZWFibGU+IF08L2xpdGVyYWw+PC90ZXJtPgor CisgICAgICA8bGlzdGl0ZW0+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIFRoaXMgZ3JvdXAg b2YgY29tbWFuZHMgaW1wbGVtZW50cyBwaXBlbGluaW5nIG9mIFNRTCBzdGF0ZW1lbnRzLgorICAg ICAgICAgIEEgcGlwZWxpbmUgbXVzdCBiZWdpbiB3aXRoIGEgPGNvbW1hbmQ+XHN0YXJ0cGlwZWxp bmU8L2NvbW1hbmQ+CisgICAgICAgICAgYW5kIGVuZCB3aXRoIGFuIDxjb21tYW5kPlxlbmRwaXBl bGluZTwvY29tbWFuZD4uIEluIGJldHdlZW4gdGhlcmUKKyAgICAgICAgICBtYXkgYmUgYW55IG51 bWJlciBvZiA8Y29tbWFuZD5cc3luY3BpcGVsaW5lPC9jb21tYW5kPiBjb21tYW5kcywKKyAgICAg ICAgICB3aGljaCBzZW5kcyBhIDxsaW5rIGxpbmtlbmQ9InByb3RvY29sLWZsb3ctZXh0LXF1ZXJ5 Ij5zeW5jIG1lc3NhZ2U8L2xpbms+CisgICAgICAgICAgd2l0aG91dCBlbmRpbmcgdGhlIG9uZ29p bmcgcGlwZWxpbmUgYW5kIGZsdXNoaW5nIHRoZSBzZW5kIGJ1ZmZlci4KKyAgICAgICAgICBJbiBw aXBlbGluZSBtb2RlLCBzdGF0ZW1lbnRzIGFyZSBzZW50IHRvIHRoZSBzZXJ2ZXIgd2l0aG91dCB3 YWl0aW5nCisgICAgICAgICAgZm9yIHRoZSByZXN1bHRzIG9mIHByZXZpb3VzIHN0YXRlbWVudHMu ICBTZWUKKyAgICAgICAgICA8eHJlZiBsaW5rZW5kPSJsaWJwcS1waXBlbGluZS1tb2RlIi8+IGZv ciBtb3JlIGRldGFpbHMuCisgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAg ICAgIFBpcGVsaW5lIG1vZGUgcmVxdWlyZXMgdGhlIHVzZSBvZiBleHRlbmRlZCBxdWVyeSBwcm90 b2NvbC4gQWxsIHF1ZXJpZXMgbmVlZAorICAgICAgICAgIHRvIGJlIHNlbnQgdXNpbmcgdGhlIG1l dGEtY29tbWFuZHMgPGxpdGVyYWw+XGJpbmQ8L2xpdGVyYWw+LAorICAgICAgICAgIDxsaXRlcmFs PlxiaW5kX25hbWVkPC9saXRlcmFsPiwgPGxpdGVyYWw+XGNsb3NlPC9saXRlcmFsPiBvcgorICAg ICAgICAgIDxsaXRlcmFsPlxwYXJzZTwvbGl0ZXJhbD4uIFdoaWxlIGEgcGlwZWxpbmUgaXMgb25n b2luZywKKyAgICAgICAgICA8bGl0ZXJhbD5cZzwvbGl0ZXJhbD4gd2lsbCBhcHBlbmQgdGhlIGN1 cnJlbnQgcXVlcnkgYnVmZmVyIHRvIHRoZSBwaXBlbGluZSBhbmQKKyAgICAgICAgICBvdGhlciBt ZXRhLWNvbW1hbmRzIGxpa2UgPGxpdGVyYWw+XGd4PC9saXRlcmFsPiBvciA8bGl0ZXJhbD5cZ2Rl c2M8L2xpdGVyYWw+CisgICAgICAgICAgYXJlIG5vdCBhbGxvd2VkIGluIHBpcGVsaW5lIG1vZGUu CisgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgIDxjb21tYW5kPlxm bHVzaHJlcXVlc3Q8L2NvbW1hbmQ+IGFwcGVuZHMgYSBmbHVzaCBjb21tYW5kIHRvIHRoZSBwaXBl bGluZSwKKyAgICAgICAgICBhbGxvd2luZyB0byByZWFkIHJlc3VsdHMgd2l0aCA8Y29tbWFuZD5c Z2V0cmVzdWx0czwvY29tbWFuZD4gd2l0aG91dCBpc3N1aW5nCisgICAgICAgICAgYSBzeW5jIG9y IGVuZGluZyB0aGUgcGlwZWxpbmUuIDxjb21tYW5kPlxnZXRyZXN1bHRzPC9jb21tYW5kPiB3aWxs IGF1dG9tYXRpY2FsbHkKKyAgICAgICAgICBwdXNoIHVuc2VudCBkYXRhIHRvIHRoZSBzZXJ2ZXIu IDxjb21tYW5kPlxmbHVzaDwvY29tbWFuZD4gY2FuIGJlIHVzZWQgdG8gbWFudWFsbHkKKyAgICAg ICAgICBwdXNoIHVuc2VudCBkYXRhLgorICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4K KyAgICAgICAgICA8Y29tbWFuZD5cZ2V0cmVzdWx0czwvY29tbWFuZD4gYWNjZXB0cyBhbiBvcHRp b25hbAorICAgICAgICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1iZXJfcmVz dWx0czwvcmVwbGFjZWFibGU+IHBhcmFtZXRlci4gSWYgcHJvdmlkZWQsCisgICAgICAgICAgb25s eSB0aGUgZmlyc3QgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bWJlcl9yZXN1bHRz PC9yZXBsYWNlYWJsZT4gcGVuZGluZworICAgICAgICAgIHJlc3VsdHMgd2lsbCBiZSByZWFkLiBJ ZiBub3QgcHJvdmlkZWQgb3IgMCwgYWxsIHBlbmRpbmcgcmVzdWx0cyBhcmUgcmVhZC4gVGhlCisg ICAgICAgICAgY29tbWFuZHMgPGxpdGVyYWw+XGJpbmQ8L2xpdGVyYWw+LCA8bGl0ZXJhbD5cYmlu ZF9uYW1lZDwvbGl0ZXJhbD4sCisgICAgICAgICAgPGxpdGVyYWw+XGNsb3NlPC9saXRlcmFsPiwg PGxpdGVyYWw+XHBhcnNlPC9saXRlcmFsPiBhbmQgPGxpdGVyYWw+XHN5bmNwaXBlbGluZTwvbGl0 ZXJhbD4KKyAgICAgICAgICBnZW5lcmF0ZSBvbmUgcmVzdWx0IHRvIGdldC4KKyAgICAgICA8L3Bh cmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgV2hlbiBwaXBlbGluZSBtb2RlIGlzIGFj dGl2ZSwgYSBkZWRpY2F0ZWQgcHJvbXB0IHZhcmlhYmxlIGlzCisgICAgICAgICAgYXZhaWxhYmxl IHRvIHJlcG9ydCB0aGUgcGlwZWxpbmUgc3RhdHVzLiBTZWUKKyAgICAgICAgICA8eHJlZiBsaW5r ZW5kPSJhcHAtcHNxbC1wcm9tcHRpbmctcC11YyIvPiBmb3IgbW9yZSBkZXRhaWxzCisgICAgICAg PC9wYXJhPgorCisgICAgICAgPHBhcmE+CisgICAgICAgIEV4YW1wbGU6Cis8cHJvZ3JhbWxpc3Rp bmc+Citcc3RhcnRwaXBlbGluZQorU0VMRUNUIDEgXGJpbmQgXGcKK1NFTEVDVCAkMSBccGFyc2Ug c3RtdDEKK1xiaW5kX25hbWVkIHN0bXQxIDEgXGcKK1NFTEVDVCBwZ19jdXJyZW50X3hhY3RfaWQo KSBcYmluZCBcZworXGZsdXNocmVxdWVzdAorXGdldHJlc3VsdHMKK1xzeW5jcGlwZWxpbmUKK1NF TEVDVCBwZ19jdXJyZW50X3hhY3RfaWQoKSBcYmluZCBcZworXGZsdXNocmVxdWVzdAorXGdldHJl c3VsdHMgMgorXGNsb3NlIHN0bXQxCitcZW5kcGlwZWxpbmUKKzwvcHJvZ3JhbWxpc3Rpbmc+PC9w YXJhPgorCisgICAgICA8L2xpc3RpdGVtPgorICAgICA8L3Zhcmxpc3RlbnRyeT4KKwogCiAgICAg ICA8dmFybGlzdGVudHJ5IGlkPSJhcHAtcHNxbC1tZXRhLWNvbW1hbmQtdC1sYyI+CiAgICAgICAg IDx0ZXJtPjxsaXRlcmFsPlx0PC9saXRlcmFsPjwvdGVybT4KQEAgLTQ3MTksNiArNDc5NSwyNiBA QCB0ZXN0ZGI9Jmd0OyA8dXNlcmlucHV0PklOU0VSVCBJTlRPIG15X3RhYmxlIFZBTFVFUyAoOidj b250ZW50Jyk7PC91c2VyaW5wdXQ+CiAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICA8L3Zhcmxp c3RlbnRyeT4KIAorICAgICAgPHZhcmxpc3RlbnRyeSBpZD0iYXBwLXBzcWwtcHJvbXB0aW5nLXAt dWMiPgorICAgICAgICA8dGVybT48bGl0ZXJhbD4lUDwvbGl0ZXJhbD48L3Rlcm0+CisgICAgICAg IDxsaXN0aXRlbT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgIFBpcGVsaW5lIHN0YXR1czogYW4g ZW1wdHkgc3RyaW5nIHdoZW4gbm90IGluIGEgcGlwZWxpbmUsCisgICAgICAgIG9yIDxsaXRlcmFs PnxwaXBlZF9zeW5jcyxwaXBlZF9jb21tYW5kcyxwZW5kaW5nX3Jlc3VsdHN8PC9saXRlcmFsPgor ICAgICAgICB3aGVuIGluIGFuIG9uZ29pbmcgcGlwZWxpbmUsIG9yIDxsaXRlcmFsPitwaXBlZF9z eW5jcyxwaXBlZF9jb21tYW5kcyxwZW5kaW5nX3Jlc3VsdHMrPC9saXRlcmFsPgorICAgICAgICB3 aGVuIGluIGFuIGFib3J0ZWQgcGlwZWxpbmUuIDxsaXRlcmFsPnBpcGVkX3N5bmNzPC9saXRlcmFs PiBpcyB0aGUKKyAgICAgICAgbnVtYmVyIG9mIHN5bmNzIHF1ZXVlZCBpbiB0aGUgcGlwZWxpbmUu IDxsaXRlcmFsPnBpcGVkX2NvbW1hbmRzPC9saXRlcmFsPgorICAgICAgICBpcyB0aGUgbnVtYmVy IG9mIGNvbW1hbmRzIGdlbmVyYXRlZCBieSA8bGl0ZXJhbD5cYmluZDwvbGl0ZXJhbD4sCisgICAg ICAgIDxsaXRlcmFsPlxiaW5kX25hbWVkPC9saXRlcmFsPiwgPGxpdGVyYWw+XGNsb3NlPC9saXRl cmFsPiBvcgorICAgICAgICA8bGl0ZXJhbD5ccGFyc2U8L2xpdGVyYWw+IHF1ZXVlZCBpbiB0aGUg cGlwZWxpbmUuIDxsaXRlcmFsPnBlbmRpbmdfcmVzdWx0czwvbGl0ZXJhbD4KKyAgICAgICAgaXMg dGhlIG51bWJlciBvZiBjb21tYW5kcyB0aGF0IHdlcmUgZm9sbG93ZWQgYnkgZWl0aGVyIGEKKyAg ICAgICAgPGNvbW1hbmQ+XGZsdXNocmVxdWVzdDwvY29tbWFuZD4gb3IgYSA8Y29tbWFuZD5cc3lu Y3BpcGVsaW5lPC9jb21tYW5kPiwKKyAgICAgICAgZm9yY2luZyB0aGUgc2VydmVyIHRvIHNlbmQg dGhlIHJlc3VsdHMgdGhhdCBjYW4gYmUgcmV0cmlldmVkIHdpdGgKKyAgICAgICAgPGNvbW1hbmQ+ XGdldHJlc3VsdHM8L2NvbW1hbmQ+LgorICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvbGlzdGl0 ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKwogICAgICAgPHZhcmxpc3RlbnRyeSBpZD0iYXBw LXBzcWwtcHJvbXB0aW5nLXIiPgogICAgICAgICA8dGVybT48bGl0ZXJhbD4lUjwvbGl0ZXJhbD48 L3Rlcm0+CiAgICAgICAgIDxsaXN0aXRlbT4KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9jb21t YW5kLmMgYi9zcmMvYmluL3BzcWwvY29tbWFuZC5jCmluZGV4IDVkZDRjMmQyNjg3Li40NzY4MjM1 M2ZjNiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL2NvbW1hbmQuYworKysgYi9zcmMvYmluL3Bz cWwvY29tbWFuZC5jCkBAIC05MCw5ICs5MCwxMiBAQCBzdGF0aWMgYmFja3NsYXNoUmVzdWx0IGV4 ZWNfY29tbWFuZF9lbHNlKFBzcWxTY2FuU3RhdGUgc2Nhbl9zdGF0ZSwgQ29uZGl0aW9uYWxTdAog CQkJCQkJCQkJCSBQUUV4cEJ1ZmZlciBxdWVyeV9idWYpOwogc3RhdGljIGJhY2tzbGFzaFJlc3Vs dCBleGVjX2NvbW1hbmRfZW5kaWYoUHNxbFNjYW5TdGF0ZSBzY2FuX3N0YXRlLCBDb25kaXRpb25h bFN0YWNrIGNzdGFjaywKIAkJCQkJCQkJCQkgIFBRRXhwQnVmZmVyIHF1ZXJ5X2J1Zik7CitzdGF0 aWMgYmFja3NsYXNoUmVzdWx0IGV4ZWNfY29tbWFuZF9lbmRwaXBlbGluZShQc3FsU2NhblN0YXRl IHNjYW5fc3RhdGUsIGJvb2wgYWN0aXZlX2JyYW5jaCk7CiBzdGF0aWMgYmFja3NsYXNoUmVzdWx0 IGV4ZWNfY29tbWFuZF9lbmNvZGluZyhQc3FsU2NhblN0YXRlIHNjYW5fc3RhdGUsIGJvb2wgYWN0 aXZlX2JyYW5jaCk7CiBzdGF0aWMgYmFja3NsYXNoUmVzdWx0IGV4ZWNfY29tbWFuZF9lcnJ2ZXJi b3NlKFBzcWxTY2FuU3RhdGUgc2Nhbl9zdGF0ZSwgYm9vbCBhY3RpdmVfYnJhbmNoKTsKIHN0YXRp YyBiYWNrc2xhc2hSZXN1bHQgZXhlY19jb21tYW5kX2YoUHNxbFNjYW5TdGF0ZSBzY2FuX3N0YXRl LCBib29sIGFjdGl2ZV9icmFuY2gpOworc3RhdGljIGJhY2tzbGFzaFJlc3VsdCBleGVjX2NvbW1h bmRfZmx1c2goUHNxbFNjYW5TdGF0ZSBzY2FuX3N0YXRlLCBib29sIGFjdGl2ZV9icmFuY2gpOwor c3RhdGljIGJhY2tzbGFzaFJlc3VsdCBleGVjX2NvbW1hbmRfZmx1c2hyZXF1ZXN0KFBzcWxTY2Fu U3RhdGUgc2Nhbl9zdGF0ZSwgYm9vbCBhY3RpdmVfYnJhbmNoKTsKIHN0YXRpYyBiYWNrc2xhc2hS ZXN1bHQgZXhlY19jb21tYW5kX2coUHNxbFNjYW5TdGF0ZSBzY2FuX3N0YXRlLCBib29sIGFjdGl2 ZV9icmFuY2gsCiAJCQkJCQkJCQkgIGNvbnN0IGNoYXIgKmNtZCk7CiBzdGF0aWMgYmFja3NsYXNo UmVzdWx0IHByb2Nlc3NfY29tbWFuZF9nX29wdGlvbnMoY2hhciAqZmlyc3Rfb3B0aW9uLApAQCAt MTAzLDYgKzEwNiw3IEBAIHN0YXRpYyBiYWNrc2xhc2hSZXN1bHQgZXhlY19jb21tYW5kX2dkZXNj KFBzcWxTY2FuU3RhdGUgc2Nhbl9zdGF0ZSwgYm9vbCBhY3RpdmVfCiBzdGF0aWMgYmFja3NsYXNo UmVzdWx0IGV4ZWNfY29tbWFuZF9nZXRlbnYoUHNxbFNjYW5TdGF0ZSBzY2FuX3N0YXRlLCBib29s IGFjdGl2ZV9icmFuY2gsCiAJCQkJCQkJCQkJICAgY29uc3QgY2hhciAqY21kKTsKIHN0YXRpYyBi YWNrc2xhc2hSZXN1bHQgZXhlY19jb21tYW5kX2dleGVjKFBzcWxTY2FuU3RhdGUgc2Nhbl9zdGF0 ZSwgYm9vbCBhY3RpdmVfYnJhbmNoKTsKK3N0YXRpYyBiYWNrc2xhc2hSZXN1bHQgZXhlY19jb21t YW5kX2dldHJlc3VsdHMoUHNxbFNjYW5TdGF0ZSBzY2FuX3N0YXRlLCBib29sIGFjdGl2ZV9icmFu Y2gpOwogc3RhdGljIGJhY2tzbGFzaFJlc3VsdCBleGVjX2NvbW1hbmRfZ3NldChQc3FsU2NhblN0 YXRlIHNjYW5fc3RhdGUsIGJvb2wgYWN0aXZlX2JyYW5jaCk7CiBzdGF0aWMgYmFja3NsYXNoUmVz dWx0IGV4ZWNfY29tbWFuZF9oZWxwKFBzcWxTY2FuU3RhdGUgc2Nhbl9zdGF0ZSwgYm9vbCBhY3Rp dmVfYnJhbmNoKTsKIHN0YXRpYyBiYWNrc2xhc2hSZXN1bHQgZXhlY19jb21tYW5kX2h0bWwoUHNx bFNjYW5TdGF0ZSBzY2FuX3N0YXRlLCBib29sIGFjdGl2ZV9icmFuY2gpOwpAQCAtMTMyLDYgKzEz Niw4IEBAIHN0YXRpYyBiYWNrc2xhc2hSZXN1bHQgZXhlY19jb21tYW5kX3NldGVudihQc3FsU2Nh blN0YXRlIHNjYW5fc3RhdGUsIGJvb2wgYWN0aXZlCiAJCQkJCQkJCQkJICAgY29uc3QgY2hhciAq Y21kKTsKIHN0YXRpYyBiYWNrc2xhc2hSZXN1bHQgZXhlY19jb21tYW5kX3NmX3N2KFBzcWxTY2Fu U3RhdGUgc2Nhbl9zdGF0ZSwgYm9vbCBhY3RpdmVfYnJhbmNoLAogCQkJCQkJCQkJCSAgY29uc3Qg Y2hhciAqY21kLCBib29sIGlzX2Z1bmMpOworc3RhdGljIGJhY2tzbGFzaFJlc3VsdCBleGVjX2Nv bW1hbmRfc3RhcnRwaXBlbGluZShQc3FsU2NhblN0YXRlIHNjYW5fc3RhdGUsIGJvb2wgYWN0aXZl X2JyYW5jaCk7CitzdGF0aWMgYmFja3NsYXNoUmVzdWx0IGV4ZWNfY29tbWFuZF9zeW5jcGlwZWxp bmUoUHNxbFNjYW5TdGF0ZSBzY2FuX3N0YXRlLCBib29sIGFjdGl2ZV9icmFuY2gpOwogc3RhdGlj IGJhY2tzbGFzaFJlc3VsdCBleGVjX2NvbW1hbmRfdChQc3FsU2NhblN0YXRlIHNjYW5fc3RhdGUs IGJvb2wgYWN0aXZlX2JyYW5jaCk7CiBzdGF0aWMgYmFja3NsYXNoUmVzdWx0IGV4ZWNfY29tbWFu ZF9UKFBzcWxTY2FuU3RhdGUgc2Nhbl9zdGF0ZSwgYm9vbCBhY3RpdmVfYnJhbmNoKTsKIHN0YXRp YyBiYWNrc2xhc2hSZXN1bHQgZXhlY19jb21tYW5kX3RpbWluZyhQc3FsU2NhblN0YXRlIHNjYW5f c3RhdGUsIGJvb2wgYWN0aXZlX2JyYW5jaCk7CkBAIC0zNTEsMTggKzM1NywyNiBAQCBleGVjX2Nv bW1hbmQoY29uc3QgY2hhciAqY21kLAogCQlzdGF0dXMgPSBleGVjX2NvbW1hbmRfZWxzZShzY2Fu X3N0YXRlLCBjc3RhY2ssIHF1ZXJ5X2J1Zik7CiAJZWxzZSBpZiAoc3RyY21wKGNtZCwgImVuZGlm IikgPT0gMCkKIAkJc3RhdHVzID0gZXhlY19jb21tYW5kX2VuZGlmKHNjYW5fc3RhdGUsIGNzdGFj aywgcXVlcnlfYnVmKTsKKwllbHNlIGlmIChzdHJjbXAoY21kLCAiZW5kcGlwZWxpbmUiKSA9PSAw KQorCQlzdGF0dXMgPSBleGVjX2NvbW1hbmRfZW5kcGlwZWxpbmUoc2Nhbl9zdGF0ZSwgYWN0aXZl X2JyYW5jaCk7CiAJZWxzZSBpZiAoc3RyY21wKGNtZCwgImVuY29kaW5nIikgPT0gMCkKIAkJc3Rh dHVzID0gZXhlY19jb21tYW5kX2VuY29kaW5nKHNjYW5fc3RhdGUsIGFjdGl2ZV9icmFuY2gpOwog CWVsc2UgaWYgKHN0cmNtcChjbWQsICJlcnJ2ZXJib3NlIikgPT0gMCkKIAkJc3RhdHVzID0gZXhl Y19jb21tYW5kX2VycnZlcmJvc2Uoc2Nhbl9zdGF0ZSwgYWN0aXZlX2JyYW5jaCk7CiAJZWxzZSBp ZiAoc3RyY21wKGNtZCwgImYiKSA9PSAwKQogCQlzdGF0dXMgPSBleGVjX2NvbW1hbmRfZihzY2Fu X3N0YXRlLCBhY3RpdmVfYnJhbmNoKTsKKwllbHNlIGlmIChzdHJjbXAoY21kLCAiZmx1c2giKSA9 PSAwKQorCQlzdGF0dXMgPSBleGVjX2NvbW1hbmRfZmx1c2goc2Nhbl9zdGF0ZSwgYWN0aXZlX2Jy YW5jaCk7CisJZWxzZSBpZiAoc3RyY21wKGNtZCwgImZsdXNocmVxdWVzdCIpID09IDApCisJCXN0 YXR1cyA9IGV4ZWNfY29tbWFuZF9mbHVzaHJlcXVlc3Qoc2Nhbl9zdGF0ZSwgYWN0aXZlX2JyYW5j aCk7CiAJZWxzZSBpZiAoc3RyY21wKGNtZCwgImciKSA9PSAwIHx8IHN0cmNtcChjbWQsICJneCIp ID09IDApCiAJCXN0YXR1cyA9IGV4ZWNfY29tbWFuZF9nKHNjYW5fc3RhdGUsIGFjdGl2ZV9icmFu Y2gsIGNtZCk7CiAJZWxzZSBpZiAoc3RyY21wKGNtZCwgImdkZXNjIikgPT0gMCkKIAkJc3RhdHVz ID0gZXhlY19jb21tYW5kX2dkZXNjKHNjYW5fc3RhdGUsIGFjdGl2ZV9icmFuY2gpOwogCWVsc2Ug aWYgKHN0cmNtcChjbWQsICJnZXRlbnYiKSA9PSAwKQogCQlzdGF0dXMgPSBleGVjX2NvbW1hbmRf Z2V0ZW52KHNjYW5fc3RhdGUsIGFjdGl2ZV9icmFuY2gsIGNtZCk7CisJZWxzZSBpZiAoc3RyY21w KGNtZCwgImdldHJlc3VsdHMiKSA9PSAwKQorCQlzdGF0dXMgPSBleGVjX2NvbW1hbmRfZ2V0cmVz dWx0cyhzY2FuX3N0YXRlLCBhY3RpdmVfYnJhbmNoKTsKIAllbHNlIGlmIChzdHJjbXAoY21kLCAi Z2V4ZWMiKSA9PSAwKQogCQlzdGF0dXMgPSBleGVjX2NvbW1hbmRfZ2V4ZWMoc2Nhbl9zdGF0ZSwg YWN0aXZlX2JyYW5jaCk7CiAJZWxzZSBpZiAoc3RyY21wKGNtZCwgImdzZXQiKSA9PSAwKQpAQCAt NDA4LDYgKzQyMiwxMCBAQCBleGVjX2NvbW1hbmQoY29uc3QgY2hhciAqY21kLAogCQlzdGF0dXMg PSBleGVjX2NvbW1hbmRfc2Zfc3Yoc2Nhbl9zdGF0ZSwgYWN0aXZlX2JyYW5jaCwgY21kLCB0cnVl KTsKIAllbHNlIGlmIChzdHJjbXAoY21kLCAic3YiKSA9PSAwIHx8IHN0cmNtcChjbWQsICJzdisi KSA9PSAwKQogCQlzdGF0dXMgPSBleGVjX2NvbW1hbmRfc2Zfc3Yoc2Nhbl9zdGF0ZSwgYWN0aXZl X2JyYW5jaCwgY21kLCBmYWxzZSk7CisJZWxzZSBpZiAoc3RyY21wKGNtZCwgInN0YXJ0cGlwZWxp bmUiKSA9PSAwKQorCQlzdGF0dXMgPSBleGVjX2NvbW1hbmRfc3RhcnRwaXBlbGluZShzY2FuX3N0 YXRlLCBhY3RpdmVfYnJhbmNoKTsKKwllbHNlIGlmIChzdHJjbXAoY21kLCAic3luY3BpcGVsaW5l IikgPT0gMCkKKwkJc3RhdHVzID0gZXhlY19jb21tYW5kX3N5bmNwaXBlbGluZShzY2FuX3N0YXRl LCBhY3RpdmVfYnJhbmNoKTsKIAllbHNlIGlmIChzdHJjbXAoY21kLCAidCIpID09IDApCiAJCXN0 YXR1cyA9IGV4ZWNfY29tbWFuZF90KHNjYW5fc3RhdGUsIGFjdGl2ZV9icmFuY2gpOwogCWVsc2Ug aWYgKHN0cmNtcChjbWQsICJUIikgPT0gMCkKQEAgLTE0OTEsNiArMTUwOSwzOCBAQCBleGVjX2Nv bW1hbmRfZihQc3FsU2NhblN0YXRlIHNjYW5fc3RhdGUsIGJvb2wgYWN0aXZlX2JyYW5jaCkKIAly ZXR1cm4gc3VjY2VzcyA/IFBTUUxfQ01EX1NLSVBfTElORSA6IFBTUUxfQ01EX0VSUk9SOwogfQog CisvKgorICogXGZsdXNoIC0tIGNhbGwgUFFmbHVzaCBvbiB0aGUgY29ubmVjdGlvbgorICovCitz dGF0aWMgYmFja3NsYXNoUmVzdWx0CitleGVjX2NvbW1hbmRfZmx1c2goUHNxbFNjYW5TdGF0ZSBz Y2FuX3N0YXRlLCBib29sIGFjdGl2ZV9icmFuY2gpCit7CisJaWYgKGFjdGl2ZV9icmFuY2gpCisJ eworCQlwc2V0LnNlbmRfbW9kZSA9IFBTUUxfRkxVU0g7CisJfQorCWVsc2UKKwkJaWdub3JlX3Ns YXNoX29wdGlvbnMoc2Nhbl9zdGF0ZSk7CisKKwlyZXR1cm4gUFNRTF9DTURfU0VORDsKK30KKwor LyoKKyAqIFxmbHVzaHJlcXVlc3QgLS0gc2VuZCBhIGZsdXNoIHJlcXVlc3QgdG8gdGhlIHNlcnZl cgorICovCitzdGF0aWMgYmFja3NsYXNoUmVzdWx0CitleGVjX2NvbW1hbmRfZmx1c2hyZXF1ZXN0 KFBzcWxTY2FuU3RhdGUgc2Nhbl9zdGF0ZSwgYm9vbCBhY3RpdmVfYnJhbmNoKQoreworCWlmIChh Y3RpdmVfYnJhbmNoKQorCXsKKwkJcHNldC5zZW5kX21vZGUgPSBQU1FMX1NFTkRfRkxVU0hfUkVR VUVTVDsKKwl9CisJZWxzZQorCQlpZ25vcmVfc2xhc2hfb3B0aW9ucyhzY2FuX3N0YXRlKTsKKwor CXJldHVybiBQU1FMX0NNRF9TRU5EOworfQorCiAvKgogICogXGcgIFsocHNldC1vcHRpb25bPXBz ZXQtdmFsdWVdIC4uLildIFtmaWxlbmFtZS9zaGVsbC1jb21tYW5kXQogICogXGd4IFsocHNldC1v cHRpb25bPXBzZXQtdmFsdWVdIC4uLildIFtmaWxlbmFtZS9zaGVsbC1jb21tYW5kXQpAQCAtMTUy Niw2ICsxNTc2LDEzIEBAIGV4ZWNfY29tbWFuZF9nKFBzcWxTY2FuU3RhdGUgc2Nhbl9zdGF0ZSwg Ym9vbCBhY3RpdmVfYnJhbmNoLCBjb25zdCBjaGFyICpjbWQpCiAKIAlpZiAoc3RhdHVzID09IFBT UUxfQ01EX1NLSVBfTElORSAmJiBhY3RpdmVfYnJhbmNoKQogCXsKKwkJaWYgKHN0cmNtcChjbWQs ICJneCIpID09IDAgJiYgUFFwaXBlbGluZVN0YXR1cyhwc2V0LmRiKSAhPSBQUV9QSVBFTElORV9P RkYpCisJCXsKKwkJCXBnX2xvZ19lcnJvcigiXFxneCBub3QgYWxsb3dlZCBpbiBwaXBlbGluZSBt b2RlIik7CisJCQljbGVhbl9leHRlbmRlZF9zdGF0ZSgpOworCQkJcmV0dXJuIFBTUUxfQ01EX0VS Uk9SOworCQl9CisKIAkJaWYgKCFmbmFtZSkKIAkJCXBzZXQuZ2ZuYW1lID0gTlVMTDsKIAkJZWxz ZQpAQCAtMTY3OSw2ICsxNzM2LDM5IEBAIGV4ZWNfY29tbWFuZF9nZXRlbnYoUHNxbFNjYW5TdGF0 ZSBzY2FuX3N0YXRlLCBib29sIGFjdGl2ZV9icmFuY2gsCiAJcmV0dXJuIHN1Y2Nlc3MgPyBQU1FM X0NNRF9TS0lQX0xJTkUgOiBQU1FMX0NNRF9FUlJPUjsKIH0KIAorLyoKKyAqIFxnZXRyZXN1bHRz IC0tIHJlYWQgcmVzdWx0cworICovCitzdGF0aWMgYmFja3NsYXNoUmVzdWx0CitleGVjX2NvbW1h bmRfZ2V0cmVzdWx0cyhQc3FsU2NhblN0YXRlIHNjYW5fc3RhdGUsIGJvb2wgYWN0aXZlX2JyYW5j aCkKK3sKKwlpZiAoYWN0aXZlX2JyYW5jaCkKKwl7CisJCWNoYXIJICAgKm9wdDsKKwkJaW50CQkJ bnVtX3Jlc3VsdHM7CisKKwkJcHNldC5zZW5kX21vZGUgPSBQU1FMX0dFVF9SRVNVTFRTOworCQlv cHQgPSBwc3FsX3NjYW5fc2xhc2hfb3B0aW9uKHNjYW5fc3RhdGUsIE9UX05PUk1BTCwgTlVMTCwg ZmFsc2UpOworCisJCXBzZXQucmVxdWVzdGVkX3Jlc3VsdHMgPSAwOworCQlpZiAob3B0ICE9IE5V TEwpCisJCXsKKwkJCW51bV9yZXN1bHRzID0gYXRvaShvcHQpOworCQkJaWYgKG51bV9yZXN1bHRz IDwgMCkKKwkJCXsKKwkJCQlwZ19sb2dfZXJyb3IoIlxcZ2V0cmVzdWx0czogaW52YWxpZCBudW1i ZXIgb2YgcmVxdWVzdGVkIHJlc3VsdHMiKTsKKwkJCQlyZXR1cm4gUFNRTF9DTURfU0tJUF9MSU5F OworCQkJfQorCQkJcHNldC5yZXF1ZXN0ZWRfcmVzdWx0cyA9IG51bV9yZXN1bHRzOworCQl9CisJ fQorCWVsc2UKKwkJaWdub3JlX3NsYXNoX29wdGlvbnMoc2Nhbl9zdGF0ZSk7CisKKwlyZXR1cm4g UFNRTF9DTURfU0VORDsKK30KKworCiAvKgogICogXGdleGVjIC0tIHNlbmQgcXVlcnkgYW5kIGV4 ZWN1dGUgZWFjaCBmaWVsZCBvZiByZXN1bHQKICAqLwpAQCAtMTY4OSw2ICsxNzc5LDEyIEBAIGV4 ZWNfY29tbWFuZF9nZXhlYyhQc3FsU2NhblN0YXRlIHNjYW5fc3RhdGUsIGJvb2wgYWN0aXZlX2Jy YW5jaCkKIAogCWlmIChhY3RpdmVfYnJhbmNoKQogCXsKKwkJaWYgKFBRcGlwZWxpbmVTdGF0dXMo cHNldC5kYikgIT0gUFFfUElQRUxJTkVfT0ZGKQorCQl7CisJCQlwZ19sb2dfZXJyb3IoIlxcZ2V4 ZWMgbm90IGFsbG93ZWQgaW4gcGlwZWxpbmUgbW9kZSIpOworCQkJY2xlYW5fZXh0ZW5kZWRfc3Rh dGUoKTsKKwkJCXJldHVybiBQU1FMX0NNRF9FUlJPUjsKKwkJfQogCQlwc2V0LmdleGVjX2ZsYWcg PSB0cnVlOwogCQlzdGF0dXMgPSBQU1FMX0NNRF9TRU5EOwogCX0KQEAgLTE3MDksNiArMTgwNSwx MyBAQCBleGVjX2NvbW1hbmRfZ3NldChQc3FsU2NhblN0YXRlIHNjYW5fc3RhdGUsIGJvb2wgYWN0 aXZlX2JyYW5jaCkKIAkJY2hhcgkgICAqcHJlZml4ID0gcHNxbF9zY2FuX3NsYXNoX29wdGlvbihz Y2FuX3N0YXRlLAogCQkJCQkJCQkJCQkJCU9UX05PUk1BTCwgTlVMTCwgZmFsc2UpOwogCisJCWlm IChQUXBpcGVsaW5lU3RhdHVzKHBzZXQuZGIpICE9IFBRX1BJUEVMSU5FX09GRikKKwkJeworCQkJ cGdfbG9nX2Vycm9yKCJcXGdzZXQgbm90IGFsbG93ZWQgaW4gcGlwZWxpbmUgbW9kZSIpOworCQkJ Y2xlYW5fZXh0ZW5kZWRfc3RhdGUoKTsKKwkJCXJldHVybiBQU1FMX0NNRF9FUlJPUjsKKwkJfQor CiAJCWlmIChwcmVmaXgpCiAJCQlwc2V0LmdzZXRfcHJlZml4ID0gcHJlZml4OwogCQllbHNlCkBA IC0yNjcyLDYgKzI3NzUsNTQgQEAgZXhlY19jb21tYW5kX3NmX3N2KFBzcWxTY2FuU3RhdGUgc2Nh bl9zdGF0ZSwgYm9vbCBhY3RpdmVfYnJhbmNoLAogCXJldHVybiBzdGF0dXM7CiB9CiAKKy8qCisg KiBcc3RhcnRwaXBlbGluZSAtLSBlbnRlciBwaXBlbGluZSBtb2RlCisgKi8KK3N0YXRpYyBiYWNr c2xhc2hSZXN1bHQKK2V4ZWNfY29tbWFuZF9zdGFydHBpcGVsaW5lKFBzcWxTY2FuU3RhdGUgc2Nh bl9zdGF0ZSwgYm9vbCBhY3RpdmVfYnJhbmNoKQoreworCWlmIChhY3RpdmVfYnJhbmNoKQorCXsK KwkJcHNldC5zZW5kX21vZGUgPSBQU1FMX1NUQVJUX1BJUEVMSU5FX01PREU7CisJfQorCWVsc2UK KwkJaWdub3JlX3NsYXNoX29wdGlvbnMoc2Nhbl9zdGF0ZSk7CisKKwlyZXR1cm4gUFNRTF9DTURf U0VORDsKK30KKworLyoKKyAqIFxzeW5jcGlwZWxpbmUgLS0gc2VuZCBhIHN5bmMgbWVzc2FnZSB0 byBhbiBhY3RpdmUgcGlwZWxpbmUKKyAqLworc3RhdGljIGJhY2tzbGFzaFJlc3VsdAorZXhlY19j b21tYW5kX3N5bmNwaXBlbGluZShQc3FsU2NhblN0YXRlIHNjYW5fc3RhdGUsIGJvb2wgYWN0aXZl X2JyYW5jaCkKK3sKKwlpZiAoYWN0aXZlX2JyYW5jaCkKKwl7CisJCXBzZXQuc2VuZF9tb2RlID0g UFNRTF9TRU5EX1BJUEVMSU5FX1NZTkM7CisJfQorCWVsc2UKKwkJaWdub3JlX3NsYXNoX29wdGlv bnMoc2Nhbl9zdGF0ZSk7CisKKwlyZXR1cm4gUFNRTF9DTURfU0VORDsKK30KKworLyoKKyAqIFxl bmRwaXBlbGluZSAtLSBlbmQgcGlwZWxpbmUgbW9kZQorICovCitzdGF0aWMgYmFja3NsYXNoUmVz dWx0CitleGVjX2NvbW1hbmRfZW5kcGlwZWxpbmUoUHNxbFNjYW5TdGF0ZSBzY2FuX3N0YXRlLCBi b29sIGFjdGl2ZV9icmFuY2gpCit7CisJaWYgKGFjdGl2ZV9icmFuY2gpCisJeworCQlwc2V0LnNl bmRfbW9kZSA9IFBTUUxfRU5EX1BJUEVMSU5FX01PREU7CisJfQorCWVsc2UKKwkJaWdub3JlX3Ns YXNoX29wdGlvbnMoc2Nhbl9zdGF0ZSk7CisKKwlyZXR1cm4gUFNRTF9DTURfU0VORDsKK30KKwog LyoKICAqIFx0IC0tIHR1cm4gb2ZmIHRhYmxlIGhlYWRlcnMgYW5kIHJvdyBjb3VudAogICovCmRp ZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvY29tbW9uLmMgYi9zcmMvYmluL3BzcWwvY29tbW9uLmMK aW5kZXggZjFhNTI5MWMxM2IuLmRhMzliZmYxODNkIDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwv Y29tbW9uLmMKKysrIGIvc3JjL2Jpbi9wc3FsL2NvbW1vbi5jCkBAIC0xMjEsNiArMTIxLDE4IEBA IENsb3NlR091dHB1dChGSUxFICpnZmlsZV9mb3V0LCBib29sIGlzX3BpcGUpCiAJfQogfQogCisv KgorICogUmVzZXQgcHNldCBwaXBlbGluZSBzdGF0ZQorICovCitzdGF0aWMgdm9pZAorcGlwZWxp bmVSZXNldCh2b2lkKQoreworCXBzZXQucGlwZWRfc3luY3MgPSAwOworCXBzZXQucGlwZWRfY29t bWFuZHMgPSAwOworCXBzZXQucGVuZGluZ19yZXN1bHRzID0gMDsKKwlwc2V0LnJlcXVlc3RlZF9y ZXN1bHRzID0gMDsKK30KKwogLyoKICAqIHNldFFGb3V0CiAgKiAtLSBoYW5kbGVyIGZvciAtbyBj b21tYW5kIGxpbmUgb3B0aW9uIGFuZCBcbyBjb21tYW5kCkBAIC0zNTQsNiArMzY2LDcgQEAgQ2hl Y2tDb25uZWN0aW9uKHZvaWQpCiAKIAkJZnByaW50ZihzdGRlcnIsIF8oIlRoZSBjb25uZWN0aW9u IHRvIHRoZSBzZXJ2ZXIgd2FzIGxvc3QuIEF0dGVtcHRpbmcgcmVzZXQ6ICIpKTsKIAkJUFFyZXNl dChwc2V0LmRiKTsKKwkJcGlwZWxpbmVSZXNldCgpOwogCQlPSyA9IENvbm5lY3Rpb25VcCgpOwog CQlpZiAoIU9LKQogCQl7CkBAIC00MTUsMTAgKzQyOCwxMiBAQCBBY2NlcHRSZXN1bHQoY29uc3Qg UEdyZXN1bHQgKnJlc3VsdCwgYm9vbCBzaG93X2Vycm9yKQogCQkJY2FzZSBQR1JFU19FTVBUWV9R VUVSWToKIAkJCWNhc2UgUEdSRVNfQ09QWV9JTjoKIAkJCWNhc2UgUEdSRVNfQ09QWV9PVVQ6CisJ CQljYXNlIFBHUkVTX1BJUEVMSU5FX1NZTkM6CiAJCQkJLyogRmluZSwgZG8gbm90aGluZyAqLwog CQkJCU9LID0gdHJ1ZTsKIAkJCQlicmVhazsKIAorCQkJY2FzZSBQR1JFU19QSVBFTElORV9BQk9S VEVEOgogCQkJY2FzZSBQR1JFU19CQURfUkVTUE9OU0U6CiAJCQljYXNlIFBHUkVTX05PTkZBVEFM X0VSUk9SOgogCQkJY2FzZSBQR1JFU19GQVRBTF9FUlJPUjoKQEAgLTEwNTAsNiArMTA2NSw3IEBA IFByaW50UXVlcnlSZXN1bHQoUEdyZXN1bHQgKnJlc3VsdCwgYm9vbCBsYXN0LAogCQkJc3VjY2Vz cyA9IHRydWU7CiAJCQlicmVhazsKIAorCQljYXNlIFBHUkVTX1BJUEVMSU5FX0FCT1JURUQ6CiAJ CWNhc2UgUEdSRVNfQkFEX1JFU1BPTlNFOgogCQljYXNlIFBHUkVTX05PTkZBVEFMX0VSUk9SOgog CQljYXNlIFBHUkVTX0ZBVEFMX0VSUk9SOgpAQCAtMTQxOCw2ICsxNDM0LDYwIEBAIERlc2NyaWJl UXVlcnkoY29uc3QgY2hhciAqcXVlcnksIGRvdWJsZSAqZWxhcHNlZF9tc2VjKQogCXJldHVybiBP SzsKIH0KIAorLyoKKyAqIFJlYWQgYW5kIGRpc2NhcmQgYWxsIHJlc3VsdHMgaW4gYW4gYWJvcnRl ZCBwaXBlbGluZS4KKyAqCisgKiBJZiBhIHN5bmNocm9uaXNhdGlvbiBwb2ludCBpcyBmb3VuZCwg d2UgY2FuIHN0b3AgZGlzY2FyZGluZyByZXN1bHRzIGFzCisgKiBwaXBlbGluZSB3aWxsIHN3aXRj aCBiYWNrIHRvIGFuIE9LIHN0YXRlLiBJZiBubyBzeW5jaHJvbmlzYXRpb24gcG9pbnQKKyAqIGlz IGF2YWlsYWJsZSwgd2UgbmVlZCB0byBzdG9wIHdoZW4gdGhlcmUncyBubyBtb3JlIHBlbmRpbmcg cmVzdWx0cywKKyAqIG90aGVyd2lzZSwgY2FsbGluZyBQUWdldFJlc3VsdHMgd2lsbCBibG9jay4K KyAqLworc3RhdGljIFBHcmVzdWx0ICoKK2Rpc2NhcmRBYm9ydGVkUGlwZWxpbmVSZXN1bHRzKHZv aWQpCit7CisJZm9yICg7OykKKwl7CisJCVBHcmVzdWx0ICAgKnJlcyA9IFBRZ2V0UmVzdWx0KHBz ZXQuZGIpOworCQlFeGVjU3RhdHVzVHlwZSByZXN1bHRfc3RhdHVzID0gUFFyZXN1bHRTdGF0dXMo cmVzKTsKKworCQlpZiAocmVzdWx0X3N0YXR1cyA9PSBQR1JFU19QSVBFTElORV9TWU5DKQorCQl7 CisJCQkvKgorCQkJICogRm91bmQgYSBzeW5jaHJvbmlzYXRpb24gcG9pbnQuIERlY3JlbWVudGlu ZyB0aGUgc3luYyBjb3VudGVyCisJCQkgKiB3aWxsIGJlIGRvbmUgYnkgdGhlIGNhbGxlcgorCQkJ ICovCisJCQlyZXR1cm4gcmVzOworCQl9CisJCWVsc2UgaWYgKHJlcyA9PSBOVUxMKQorCQl7CisJ CQkvKiBBIHF1ZXJ5IHdhcyBwcm9jZXNzZWQsIGRlY3JlbWVudCB0aGUgY291bnRlcnMgKi8KKwkJ CXBzZXQucGVuZGluZ19yZXN1bHRzLS07CisJCQlwc2V0LnJlcXVlc3RlZF9yZXN1bHRzLS07CisJ CX0KKwkJZWxzZSBpZiAocmVzICE9IE5VTEwgJiYgcmVzdWx0X3N0YXR1cyA9PSBQR1JFU19GQVRB TF9FUlJPUikKKwkJCXJldHVybiByZXM7CisKKwkJaWYgKHBzZXQucmVxdWVzdGVkX3Jlc3VsdHMg PT0gMCkKKwkJCS8qIFdlJ3ZlIHJlYWQgYWxsIHJlcXVlc3RlZCByZXN1bHRzLCBleGl0ICovCisJ CQlyZXR1cm4gcmVzOworCisJCWlmIChwc2V0LnBlbmRpbmdfcmVzdWx0cyA9PSAwICYmIHBzZXQu cGlwZWRfc3luY3MgPT0gMCkKKworCQkJLyoKKwkJCSAqIFRoZXJlJ3Mgbm8gbW9yZSByZXN1bHRz IHRvIGdldCBhbmQgdGhlcmUncyBubyBzeW5jaHJvbmlzYXRpb24KKwkJCSAqIHBvaW50IHRvIHN0 b3AgYXQuIFRoaXMgd2lsbCBsZWF2ZSB0aGUgcGlwZWxpbmUgaW4gYW4gYWJvcnRlZAorCQkJICog c3RhdGUuCisJCQkgKi8KKwkJCXJldHVybiByZXM7CisKKwkJLyoKKwkJICogQW4gYWJvcnRlZCBw aXBlbGluZSB3aWxsIGhhdmUgZWl0aGVyIE5VTEwgcmVzdWx0cyBvciByZXN1bHRzIGluIGFuCisJ CSAqIFBHUkVTX1BJUEVMSU5FX0FCT1JURUQgc3RhdHVzCisJCSAqLworCQlBc3NlcnQocmVzID09 IE5VTEwgfHwgcmVzdWx0X3N0YXR1cyA9PSBQR1JFU19QSVBFTElORV9BQk9SVEVEKTsKKwkJUFFj bGVhcihyZXMpOworCX0KK30KIAogLyoKICAqIEV4ZWNRdWVyeUFuZFByb2Nlc3NSZXN1bHRzOiB1 dGlsaXR5IGZ1bmN0aW9uIGZvciB1c2UgYnkgU2VuZFF1ZXJ5KCkKQEAgLTE0NTEsNiArMTUyMSw3 IEBAIEV4ZWNRdWVyeUFuZFByb2Nlc3NSZXN1bHRzKGNvbnN0IGNoYXIgKnF1ZXJ5LAogCWJvb2wJ CXRpbWluZyA9IHBzZXQudGltaW5nOwogCWJvb2wJCXN1Y2Nlc3MgPSBmYWxzZTsKIAlib29sCQly ZXR1cm5fZWFybHkgPSBmYWxzZTsKKwlib29sCQllbmRfcGlwZWxpbmUgPSBmYWxzZTsKIAlpbnN0 cl90aW1lCWJlZm9yZSwKIAkJCQlhZnRlcjsKIAlQR3Jlc3VsdCAgICpyZXN1bHQ7CkBAIC0xNDY2 LDkgKzE1MzcsMTMgQEAgRXhlY1F1ZXJ5QW5kUHJvY2Vzc1Jlc3VsdHMoY29uc3QgY2hhciAqcXVl cnksCiAJewogCQljYXNlIFBTUUxfU0VORF9FWFRFTkRFRF9DTE9TRToKIAkJCXN1Y2Nlc3MgPSBQ UXNlbmRDbG9zZVByZXBhcmVkKHBzZXQuZGIsIHBzZXQuc3RtdE5hbWUpOworCQkJaWYgKHN1Y2Nl c3MgJiYgUFFwaXBlbGluZVN0YXR1cyhwc2V0LmRiKSAhPSBQUV9QSVBFTElORV9PRkYpCisJCQkJ cHNldC5waXBlZF9jb21tYW5kcysrOwogCQkJYnJlYWs7CiAJCWNhc2UgUFNRTF9TRU5EX0VYVEVO REVEX1BBUlNFOgogCQkJc3VjY2VzcyA9IFBRc2VuZFByZXBhcmUocHNldC5kYiwgcHNldC5zdG10 TmFtZSwgcXVlcnksIDAsIE5VTEwpOworCQkJaWYgKHN1Y2Nlc3MgJiYgUFFwaXBlbGluZVN0YXR1 cyhwc2V0LmRiKSAhPSBQUV9QSVBFTElORV9PRkYpCisJCQkJcHNldC5waXBlZF9jb21tYW5kcysr OwogCQkJYnJlYWs7CiAJCWNhc2UgUFNRTF9TRU5EX0VYVEVOREVEX1FVRVJZX1BBUkFNUzoKIAkJ CUFzc2VydChwc2V0LnN0bXROYW1lID09IE5VTEwpOwpAQCAtMTQ3Niw2ICsxNTUxLDggQEAgRXhl Y1F1ZXJ5QW5kUHJvY2Vzc1Jlc3VsdHMoY29uc3QgY2hhciAqcXVlcnksCiAJCQkJCQkJCQkJcHNl dC5iaW5kX25wYXJhbXMsIE5VTEwsCiAJCQkJCQkJCQkJKGNvbnN0IGNoYXIgKmNvbnN0ICopIHBz ZXQuYmluZF9wYXJhbXMsCiAJCQkJCQkJCQkJTlVMTCwgTlVMTCwgMCk7CisJCQlpZiAoc3VjY2Vz cyAmJiBQUXBpcGVsaW5lU3RhdHVzKHBzZXQuZGIpICE9IFBRX1BJUEVMSU5FX09GRikKKwkJCQlw c2V0LnBpcGVkX2NvbW1hbmRzKys7CiAJCQlicmVhazsKIAkJY2FzZSBQU1FMX1NFTkRfRVhURU5E RURfUVVFUllfUFJFUEFSRUQ6CiAJCQlBc3NlcnQocHNldC5zdG10TmFtZSAhPSBOVUxMKTsKQEAg LTE0ODMsNiArMTU2MCw2NyBAQCBFeGVjUXVlcnlBbmRQcm9jZXNzUmVzdWx0cyhjb25zdCBjaGFy ICpxdWVyeSwKIAkJCQkJCQkJCQkgIHBzZXQuYmluZF9ucGFyYW1zLAogCQkJCQkJCQkJCSAgKGNv bnN0IGNoYXIgKmNvbnN0ICopIHBzZXQuYmluZF9wYXJhbXMsCiAJCQkJCQkJCQkJICBOVUxMLCBO VUxMLCAwKTsKKwkJCWlmIChzdWNjZXNzICYmIFBRcGlwZWxpbmVTdGF0dXMocHNldC5kYikgIT0g UFFfUElQRUxJTkVfT0ZGKQorCQkJCXBzZXQucGlwZWRfY29tbWFuZHMrKzsKKwkJCWJyZWFrOwor CQljYXNlIFBTUUxfU1RBUlRfUElQRUxJTkVfTU9ERToKKwkJCXN1Y2Nlc3MgPSBQUWVudGVyUGlw ZWxpbmVNb2RlKHBzZXQuZGIpOworCQkJYnJlYWs7CisJCWNhc2UgUFNRTF9FTkRfUElQRUxJTkVf TU9ERToKKwkJCXN1Y2Nlc3MgPSBQUXBpcGVsaW5lU3luYyhwc2V0LmRiKTsKKwkJCWlmIChzdWNj ZXNzICYmIFBRcGlwZWxpbmVTdGF0dXMocHNldC5kYikgIT0gUFFfUElQRUxJTkVfT0ZGKQorCQkJ eworCQkJCS8qCisJCQkJICogRW5kIG9mIHRoZSBwaXBlbGluZSwgYWxsIHF1ZXVlZCBjb21tYW5k cyBuZWVkIHRvIGJlCisJCQkJICogcHJvY2Vzc2VkCisJCQkJICovCisJCQkJZW5kX3BpcGVsaW5l ID0gdHJ1ZTsKKwkJCQlwc2V0LnBpcGVkX3N5bmNzKys7CisJCQkJcHNldC5wZW5kaW5nX3Jlc3Vs dHMgKz0gcHNldC5waXBlZF9jb21tYW5kczsKKwkJCQlwc2V0LnBpcGVkX2NvbW1hbmRzID0gMDsK KwkJCQlwc2V0LnJlcXVlc3RlZF9yZXN1bHRzID0gcHNldC5wZW5kaW5nX3Jlc3VsdHMgKyBwc2V0 LnBpcGVkX3N5bmNzOworCQkJfQorCQkJYnJlYWs7CisJCWNhc2UgUFNRTF9TRU5EX1BJUEVMSU5F X1NZTkM6CisJCQlzdWNjZXNzID0gUFFzZW5kUGlwZWxpbmVTeW5jKHBzZXQuZGIpOworCQkJaWYg KHN1Y2Nlc3MgJiYgUFFwaXBlbGluZVN0YXR1cyhwc2V0LmRiKSAhPSBQUV9QSVBFTElORV9PRkYp CisJCQl7CisJCQkJcHNldC5waXBlZF9zeW5jcysrOworCQkJCXBzZXQucGVuZGluZ19yZXN1bHRz ICs9IHBzZXQucGlwZWRfY29tbWFuZHM7CisJCQkJcHNldC5waXBlZF9jb21tYW5kcyA9IDA7CisJ CQl9CisJCQlicmVhazsKKwkJY2FzZSBQU1FMX0ZMVVNIOgorCQkJc3VjY2VzcyA9IFBRZmx1c2go cHNldC5kYik7CisJCQlicmVhazsKKwkJY2FzZSBQU1FMX1NFTkRfRkxVU0hfUkVRVUVTVDoKKwkJ CXN1Y2Nlc3MgPSBQUXNlbmRGbHVzaFJlcXVlc3QocHNldC5kYik7CisJCQlpZiAoc3VjY2VzcyAm JiBQUXBpcGVsaW5lU3RhdHVzKHBzZXQuZGIpICE9IFBRX1BJUEVMSU5FX09GRikKKwkJCXsKKwkJ CQlwc2V0LnBlbmRpbmdfcmVzdWx0cyArPSBwc2V0LnBpcGVkX2NvbW1hbmRzOworCQkJCXBzZXQu cGlwZWRfY29tbWFuZHMgPSAwOworCQkJfQorCQkJYnJlYWs7CisJCWNhc2UgUFNRTF9HRVRfUkVT VUxUUzoKKwkJCWlmIChwc2V0LnBlbmRpbmdfcmVzdWx0cyA9PSAwICYmIHBzZXQucGlwZWRfc3lu Y3MgPT0gMCkKKwkJCXsKKwkJCQkvKgorCQkJCSAqIElmIG5vIHN5bmMgb3IgZmx1c2ggcmVxdWVz dCB3ZXJlIHNlbnQsIFBRZ2V0UmVzdWx0IHdpbGwKKwkJCQkgKiBibG9jay4gRm9yYmlkIHRoZSBj YWxsIHRvIFxnZXRyZXN1bHRzIHRvIGF2b2lkIHN0YXlpbmcKKwkJCQkgKiBzdHVjaworCQkJCSAq LworCQkJCXBnX2xvZ19pbmZvKCJObyBwZW5kaW5nIHJlc3VsdHMgdG8gZ2V0Iik7CisJCQkJc3Vj Y2VzcyA9IGZhbHNlOworCQkJCXBzZXQucmVxdWVzdGVkX3Jlc3VsdHMgPSAwOworCQkJfQorCQkJ ZWxzZQorCQkJeworCQkJCXN1Y2Nlc3MgPSB0cnVlOworCQkJCS8qIENhcCByZXF1ZXN0ZWRfcmVz dWx0cyB0byB0aGUgbWF4aW11bSBrbm93biByZXN1bHRzICovCisJCQkJaWYgKHBzZXQucmVxdWVz dGVkX3Jlc3VsdHMgPT0gMCB8fAorCQkJCQlwc2V0LnJlcXVlc3RlZF9yZXN1bHRzID4gKHBzZXQu cGVuZGluZ19yZXN1bHRzICsgcHNldC5waXBlZF9zeW5jcykpCisJCQkJCXBzZXQucmVxdWVzdGVk X3Jlc3VsdHMgPSBwc2V0LnBlbmRpbmdfcmVzdWx0cyArIHBzZXQucGlwZWRfc3luY3M7CisJCQl9 CiAJCQlicmVhazsKIAkJY2FzZSBQU1FMX1NFTkRfUVVFUlk6CiAJCQlzdWNjZXNzID0gUFFzZW5k UXVlcnkocHNldC5kYiwgcXVlcnkpOwpAQCAtMTUwMSw2ICsxNjM5LDE2IEBAIEV4ZWNRdWVyeUFu ZFByb2Nlc3NSZXN1bHRzKGNvbnN0IGNoYXIgKnF1ZXJ5LAogCQlyZXR1cm4gLTE7CiAJfQogCisJ aWYgKHBzZXQucmVxdWVzdGVkX3Jlc3VsdHMgPT0gMCAmJiAhZW5kX3BpcGVsaW5lICYmCisJCVBR cGlwZWxpbmVTdGF0dXMocHNldC5kYikgIT0gUFFfUElQRUxJTkVfT0ZGKQorCXsKKwkJLyoKKwkJ ICogV2UncmUgaW4gYSBwaXBlbGluZSBhbmQgaGF2ZW4ndCByZWFjaGVkIHRoZSBwaXBlbGluZSBl bmQgb3IgdGhlcmUKKwkJICogd2FzIG5vIHJlcXVlc3QgdG8gcmVhZCBwaXBlbGluZSByZXN1bHRz LCBleGl0LgorCQkgKi8KKwkJcmV0dXJuIDE7CisJfQorCiAJLyoKIAkgKiBGZXRjaCB0aGUgcmVz dWx0IGluIGNodW5rcyBpZiBGRVRDSF9DT1VOVCBpcyBzZXQsIGV4Y2VwdCB3aGVuOgogCSAqCkBA IC0xNTQ4LDcgKzE2OTYsNyBAQCBFeGVjUXVlcnlBbmRQcm9jZXNzUmVzdWx0cyhjb25zdCBjaGFy ICpxdWVyeSwKIAl7CiAJCUV4ZWNTdGF0dXNUeXBlIHJlc3VsdF9zdGF0dXM7CiAJCWJvb2wJCWlz X2NodW5rZWRfcmVzdWx0ID0gZmFsc2U7Ci0JCVBHcmVzdWx0ICAgKm5leHRfcmVzdWx0OworCQlQ R3Jlc3VsdCAgICpuZXh0X3Jlc3VsdCA9IE5VTEw7CiAJCWJvb2wJCWxhc3Q7CiAKIAkJaWYgKCFB Y2NlcHRSZXN1bHQocmVzdWx0LCBmYWxzZSkpCkBAIC0xNTcxLDYgKzE3MTksOSBAQCBFeGVjUXVl cnlBbmRQcm9jZXNzUmVzdWx0cyhjb25zdCBjaGFyICpxdWVyeSwKIAkJCUNsZWFyT3JTYXZlUmVz dWx0KHJlc3VsdCk7CiAJCQlzdWNjZXNzID0gZmFsc2U7CiAKKwkJCWlmIChyZXN1bHRfc3RhdHVz ID09IFBHUkVTX1BJUEVMSU5FX0FCT1JURUQpCisJCQkJcGdfbG9nX2luZm8oIlBpcGVsaW5lIGFi b3J0ZWQsIGNvbW1hbmQgZGlkbid0IHJ1biIpOworCiAJCQkvKgogCQkJICogc3dpdGNoIHRvIG5l eHQgcmVzdWx0CiAJCQkgKi8KQEAgLTE1ODUsNiArMTczNiwyMCBAQCBFeGVjUXVlcnlBbmRQcm9j ZXNzUmVzdWx0cyhjb25zdCBjaGFyICpxdWVyeSwKIAkJCQkgKiBpZ25vcmUgbWFudWFsbHkuCiAJ CQkJICovCiAJCQkJcmVzdWx0ID0gTlVMTDsKKwkJCWVsc2UgaWYgKChlbmRfcGlwZWxpbmUgfHwg cHNldC5yZXF1ZXN0ZWRfcmVzdWx0cyA+IDApCisJCQkJCSAmJiBQUXBpcGVsaW5lU3RhdHVzKHBz ZXQuZGIpICE9IFBRX1BJUEVMSU5FX09GRikKKworCQkJCS8qCisJCQkJICogV2UgaGF2ZSBhbiBl cnJvciB3aXRoaW4gYSBwaXBlbGluZS4gQWxsIGNvbW1hbmRzIGFyZQorCQkJCSAqIGFib3J0ZWQg dW50aWwgdGhlIG5leHQgc3luY2hyb25pc2F0aW9uIHBvaW50LiBXZSBuZWVkIHRvCisJCQkJICog Y29uc3VtZSBhbGwgcmVzdWx0cyB1bnRpbCB0aGlzIHN5bmNocm9uaXNhdGlvbiBwb2ludCwgb3IK KwkJCQkgKiBzdG9wIHdoZW4gdGhlcmUncyBubyBtb3JlIHJlc3VsdCB0byBkaXNjYXJkCisJCQkJ ICoKKwkJCQkgKiBDaGVja2luZyBwaXBlbGluZSBzdGF0dXMgaXMgbmVjZXNzYXJ5IGluIGNhc2Ug dGhlCisJCQkJICogY29ubmVjdGlvbiB3YXMgcmVzZXQuIFRoZSBuZXcgY29ubmVjdGlvbiBpc24n dCBpbiBhbnkga2luZAorCQkJCSAqIG9mIHBpcGVsaW5lIHN0YXRlIGFuZCB0aHVzIGhhcyBubyBy ZXN1bHQgdG8gZGlzY2FyZAorCQkJCSAqLworCQkJCXJlc3VsdCA9IGRpc2NhcmRBYm9ydGVkUGlw ZWxpbmVSZXN1bHRzKCk7CiAJCQllbHNlCiAJCQkJcmVzdWx0ID0gUFFnZXRSZXN1bHQocHNldC5k Yik7CiAKQEAgLTE3NzEsMTIgKzE5MzYsNjYgQEAgRXhlY1F1ZXJ5QW5kUHJvY2Vzc1Jlc3VsdHMo Y29uc3QgY2hhciAqcXVlcnksCiAJCQl9CiAJCX0KIAorCQlpZiAocmVzdWx0X3N0YXR1cyA9PSBQ R1JFU19QSVBFTElORV9TWU5DKQorCQl7CisJCQlBc3NlcnQocHNldC5waXBlZF9zeW5jcyA+IDAp OworCisJCQkvKgorCQkJICogV2UgaGF2ZSBhIHN5bmMgcmVzcG9uc2UsIGRlY3JlYXNlIHRoZSBz eW5jIGFuZAorCQkJICogcmVxdWVzdGVkX3Jlc3VsdHMgY291bnRlcnMKKwkJCSAqLworCQkJcHNl dC5waXBlZF9zeW5jcy0tOworCQkJcHNldC5yZXF1ZXN0ZWRfcmVzdWx0cy0tOworCisJCQkvKgor CQkJICogQWZ0ZXIgYSBzeW5jaHJvbmlzYXRpb24gcG9pbnQsIHJlc2V0IHN1Y2Nlc3Mgc3RhdGUg dG8gcHJpbnQKKwkJCSAqIHBvc3NpYmxlIHN1Y2Nlc3NmdWwgcmVzdWx0cyB0aGF0IHdpbGwgYmUg cHJvY2Vzc2VkIGFmdGVyIHRoaXMKKwkJCSAqLworCQkJc3VjY2VzcyA9IHRydWU7CisKKwkJCS8q CisJCQkgKiBJZiBhbGwgc3luY3Mgd2VyZSBwcm9jZXNzZWQgYW5kIHBpcGVsaW5lIGVuZCB3YXMg cmVxdWVzdGVkLAorCQkJICogZXhpdCBwaXBlbGluZSBtb2RlCisJCQkgKi8KKwkJCWlmIChlbmRf cGlwZWxpbmUgJiYgcHNldC5waXBlZF9zeW5jcyA9PSAwKQorCQkJCXN1Y2Nlc3MgJj0gUFFleGl0 UGlwZWxpbmVNb2RlKHBzZXQuZGIpOworCQl9CisJCWVsc2UgaWYgKFBRcGlwZWxpbmVTdGF0dXMo cHNldC5kYikgIT0gUFFfUElQRUxJTkVfT0ZGICYmCisJCQkJIHJlc3VsdF9zdGF0dXMgIT0gUEdS RVNfUElQRUxJTkVfU1lOQykKKwkJeworCQkJLyoKKwkJCSAqIFdlIGFyZSBpbiBhIHBpcGVsaW5l IGFuZCBoYXZlIGEgbm9uIHN5bmMgcmVzcG9uc2UsIGRlY3JlYXNlIHRoZQorCQkJICogcmVzdWx0 cyBjb3VudGVycworCQkJICovCisJCQlwc2V0LnBlbmRpbmdfcmVzdWx0cy0tOworCQkJcHNldC5y ZXF1ZXN0ZWRfcmVzdWx0cy0tOworCQl9CisKIAkJLyoKIAkJICogQ2hlY2sgUFFnZXRSZXN1bHQo KSBhZ2Fpbi4gIEluIHRoZSB0eXBpY2FsIGNhc2Ugb2YgYSBzaW5nbGUtY29tbWFuZAogCQkgKiBz dHJpbmcsIGl0IHdpbGwgcmV0dXJuIE5VTEwuICBPdGhlcndpc2UsIHdlJ2xsIGhhdmUgb3RoZXIg cmVzdWx0cwogCQkgKiB0byBwcm9jZXNzLiAgV2UgbmVlZCB0byBkbyB0aGF0IHRvIGNoZWNrIHdo ZXRoZXIgdGhpcyBpcyB0aGUgbGFzdC4KIAkJICovCi0JCW5leHRfcmVzdWx0ID0gUFFnZXRSZXN1 bHQocHNldC5kYik7CisJCWlmIChQUXBpcGVsaW5lU3RhdHVzKHBzZXQuZGIpID09IFBRX1BJUEVM SU5FX09GRikKKwkJCW5leHRfcmVzdWx0ID0gUFFnZXRSZXN1bHQocHNldC5kYik7CisJCWVsc2UK KwkJeworCQkJLyoKKwkJCSAqIEluIHBpcGVsaW5lIG1vZGUsIGEgTlVMTCByZXN1bHQgaW5kaWNh dGVzIHRoZSBlbmQgb2YgdGhlCisJCQkgKiBjdXJyZW50IHF1ZXJ5IGJlaW5nIHByb2Nlc3NlZC4g Q2FsbCBQUWdldFJlc3VsdCB0byBjb25zdW1lIHRoaXMKKwkJCSAqIE5VTEwKKwkJCSAqLworCQkJ aWYgKHJlc3VsdF9zdGF0dXMgIT0gUEdSRVNfUElQRUxJTkVfU1lOQykKKwkJCXsKKwkJCQluZXh0 X3Jlc3VsdCA9IFBRZ2V0UmVzdWx0KHBzZXQuZGIpOworCQkJCUFzc2VydChuZXh0X3Jlc3VsdCA9 PSBOVUxMKTsKKwkJCX0KKworCQkJLyogV2UgY2FuIG5vdyBnZXQgdGhlIG5leHQgcmVzdWx0IGlu IHRoZSBwaXBlbGluZSAqLworCQkJaWYgKHBzZXQucmVxdWVzdGVkX3Jlc3VsdHMgPiAwKQorCQkJ CW5leHRfcmVzdWx0ID0gUFFnZXRSZXN1bHQocHNldC5kYik7CisJCX0KKwogCQlsYXN0ID0gKG5l eHRfcmVzdWx0ID09IE5VTEwpOwogCiAJCS8qCkBAIC0xNzk4LDggKzIwMTcsMTIgQEAgRXhlY1F1 ZXJ5QW5kUHJvY2Vzc1Jlc3VsdHMoY29uc3QgY2hhciAqcXVlcnksCiAJCQkqZWxhcHNlZF9tc2Vj ID0gSU5TVFJfVElNRV9HRVRfTUlMTElTRUMoYWZ0ZXIpOwogCQl9CiAKLQkJLyogdGhpcyBtYXkg b3IgbWF5IG5vdCBwcmludCBzb21ldGhpbmcgZGVwZW5kaW5nIG9uIHNldHRpbmdzICovCi0JCWlm IChyZXN1bHQgIT0gTlVMTCkKKwkJLyoKKwkJICogVGhpcyBtYXkgb3IgbWF5IG5vdCBwcmludCBz b21ldGhpbmcgZGVwZW5kaW5nIG9uIHNldHRpbmdzLiBBCisJCSAqIHBpcGVsaW5lIHN5bmMgd2ls bCBoYXZlIGEgbm9uIG51bGwgcmVzdWx0IGJ1dCBkb2Vzbid0IGhhdmUgYW55dGhpbmcKKwkJICog dG8gcHJpbnQsIHRodXMgaWdub3JlIHRoZW0KKwkJICovCisJCWlmIChyZXN1bHQgIT0gTlVMTCAm JiByZXN1bHRfc3RhdHVzICE9IFBHUkVTX1BJUEVMSU5FX1NZTkMpCiAJCXsKIAkJCS8qCiAJCQkg KiBJZiByZXN1bHRzIG5lZWQgdG8gYmUgcHJpbnRlZCBpbnRvIHRoZSBmaWxlIHNwZWNpZmllZCBi eSBcZywKQEAgLTE4MzcsNiArMjA2MCwxNyBAQCBFeGVjUXVlcnlBbmRQcm9jZXNzUmVzdWx0cyhj b25zdCBjaGFyICpxdWVyeSwKIAkvKiBjbG9zZSBcZyBmaWxlIGlmIHdlIG9wZW5lZCBpdCAqLwog CUNsb3NlR091dHB1dChnZmlsZV9mb3V0LCBnZmlsZV9pc19waXBlKTsKIAorCWlmIChlbmRfcGlw ZWxpbmUpCisJeworCQkvKiBBZnRlciBhIHBpcGVsaW5lIGlzIHByb2Nlc3NlZCwgcGlwZWxpbmUg cGlwZWRfc3luY3Mgc2hvdWxkIGJlIDAgKi8KKwkJQXNzZXJ0KHBzZXQucGlwZWRfc3luY3MgPT0g MCk7CisJCS8qIGFsbCBxdWVyaWVzIHdlcmUgcHJvY2Vzc2VkICovCisJCUFzc2VydChwc2V0LnBp cGVkX2NvbW1hbmRzID09IDApOworCQkvKiBhbmQgYWxsIHJlc3VsdHMgd2VyZSBwcm9jZXNzZWQg Ki8KKwkJQXNzZXJ0KHBzZXQucGVuZGluZ19yZXN1bHRzID09IDApOworCX0KKwlBc3NlcnQocHNl dC5yZXF1ZXN0ZWRfcmVzdWx0cyA9PSAwKTsKKwogCS8qIG1heSBuZWVkIHRoaXMgdG8gcmVjb3Zl ciBmcm9tIGNvbm4gbG9zcyBkdXJpbmcgQ09QWSAqLwogCWlmICghQ2hlY2tDb25uZWN0aW9uKCkp CiAJCXJldHVybiAtMTsKQEAgLTIyOTYsNyArMjUzMCwxMyBAQCBjbGVhbl9leHRlbmRlZF9zdGF0 ZSh2b2lkKQogCQkJZnJlZShwc2V0LnN0bXROYW1lKTsKIAkJCXBzZXQuYmluZF9wYXJhbXMgPSBO VUxMOwogCQkJYnJlYWs7CisJCWNhc2UgUFNRTF9TVEFSVF9QSVBFTElORV9NT0RFOgkvKiBcc3Rh cnRwaXBlbGluZSAqLworCQljYXNlIFBTUUxfRU5EX1BJUEVMSU5FX01PREU6CS8qIFxlbmRwaXBl bGluZSAqLworCQljYXNlIFBTUUxfU0VORF9QSVBFTElORV9TWU5DOgkvKiBcc3luY3BpcGVsaW5l ICovCiAJCWNhc2UgUFNRTF9TRU5EX1FVRVJZOgorCQljYXNlIFBTUUxfRkxVU0g6CQkvKiBcZmx1 c2ggKi8KKwkJY2FzZSBQU1FMX0dFVF9SRVNVTFRTOgkvKiBcZ2V0cmVzdWx0cyAqLworCQljYXNl IFBTUUxfU0VORF9GTFVTSF9SRVFVRVNUOgkvKiBcZmx1c2hyZXF1ZXN0ICovCiAJCQlicmVhazsK IAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9oZWxwLmMgYi9zcmMvYmluL3BzcWwvaGVs cC5jCmluZGV4IGZkYTgzNDY1ZWZhLi45MmRmNTNmZmQ2NyAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9w c3FsL2hlbHAuYworKysgYi9zcmMvYmluL3BzcWwvaGVscC5jCkBAIC0xNjcsMTUgKzE2NywyMiBA QCBzbGFzaFVzYWdlKHVuc2lnbmVkIHNob3J0IGludCBwYWdlcikKIAlIRUxQMCgiICBcXGNsb3Nl IFNUTVRfTkFNRSAgICAgICBjbG9zZSBhbiBleGlzdGluZyBwcmVwYXJlZCBzdGF0ZW1lbnRcbiIp OwogCUhFTFAwKCIgIFxcY29weXJpZ2h0ICAgICAgICAgICAgIHNob3cgUG9zdGdyZVNRTCB1c2Fn ZSBhbmQgZGlzdHJpYnV0aW9uIHRlcm1zXG4iKTsKIAlIRUxQMCgiICBcXGNyb3NzdGFidmlldyBb Q09MVU1OU10gZXhlY3V0ZSBxdWVyeSBhbmQgZGlzcGxheSByZXN1bHQgaW4gY3Jvc3N0YWJcbiIp OworCUhFTFAwKCIgIFxcZW5kcGlwZWxpbmUgICAgICAgICAgIGV4aXQgcGlwZWxpbmUgbW9kZVxu Iik7CiAJSEVMUDAoIiAgXFxlcnJ2ZXJib3NlICAgICAgICAgICAgc2hvdyBtb3N0IHJlY2VudCBl cnJvciBtZXNzYWdlIGF0IG1heGltdW0gdmVyYm9zaXR5XG4iKTsKKwlIRUxQMCgiICBcXGZsdXNo ICAgICAgICAgICAgICAgICBwdXNoIHVuc2VudCBkYXRhIHRvIHRoZSBzZXJ2ZXJcbiIpOworCUhF TFAwKCIgIFxcZmx1c2hyZXF1ZXN0ICAgICAgICAgIHNlbmQgYSBmbHVzaHJlcXVlc3QgY29tbWFu ZFxuIik7CiAJSEVMUDAoIiAgXFxnIFsoT1BUSU9OUyldIFtGSUxFXSAgZXhlY3V0ZSBxdWVyeSAo YW5kIHNlbmQgcmVzdWx0IHRvIGZpbGUgb3IgfHBpcGUpO1xuIgogCQkgICIgICAgICAgICAgICAg ICAgICAgICAgICAgXFxnIHdpdGggbm8gYXJndW1lbnRzIGlzIGVxdWl2YWxlbnQgdG8gYSBzZW1p Y29sb25cbiIpOwogCUhFTFAwKCIgIFxcZ2Rlc2MgICAgICAgICAgICAgICAgIGRlc2NyaWJlIHJl c3VsdCBvZiBxdWVyeSwgd2l0aG91dCBleGVjdXRpbmcgaXRcbiIpOworCUhFTFAwKCIgIFxcZ2V0 cmVzdWx0cyBbTlVNX1JFU10gIHJlYWQgTlVNX1JFUyBwZW5kaW5nIHJlc3VsdHMuIEFsbCBwZW5k aW5nIHJlc3VsdHMgYXJlXG4iCisJCSAgIiAgICAgICAgICAgICAgICAgICAgICAgICByZWFkIGlm IG5vIGFyZ3VtZW50IGlzIHByb3ZpZGVkXG4iKTsKIAlIRUxQMCgiICBcXGdleGVjICAgICAgICAg ICAgICAgICBleGVjdXRlIHF1ZXJ5LCB0aGVuIGV4ZWN1dGUgZWFjaCB2YWx1ZSBpbiBpdHMgcmVz dWx0XG4iKTsKIAlIRUxQMCgiICBcXGdzZXQgW1BSRUZJWF0gICAgICAgICBleGVjdXRlIHF1ZXJ5 IGFuZCBzdG9yZSByZXN1bHQgaW4gcHNxbCB2YXJpYWJsZXNcbiIpOwogCUhFTFAwKCIgIFxcZ3gg WyhPUFRJT05TKV0gW0ZJTEVdIGFzIFxcZywgYnV0IGZvcmNlcyBleHBhbmRlZCBvdXRwdXQgbW9k ZVxuIik7CiAJSEVMUDAoIiAgXFxwYXJzZSBTVE1UX05BTUUgICAgICAgY3JlYXRlIGEgcHJlcGFy ZWQgc3RhdGVtZW50XG4iKTsKIAlIRUxQMCgiICBcXHEgICAgICAgICAgICAgICAgICAgICBxdWl0 IHBzcWxcbiIpOworCUhFTFAwKCIgIFxcc3RhcnRwaXBlbGluZSAgICAgICAgIGVudGVyIHBpcGVs aW5lIG1vZGVcbiIpOworCUhFTFAwKCIgIFxcc3luY3BpcGVsaW5lICAgICAgICAgIGFkZCBhIHN5 bmNocm9uaXNhdGlvbiBwb2ludCB0byBhbiBvbmdvaW5nIHBpcGVsaW5lXG4iKTsKIAlIRUxQMCgi ICBcXHdhdGNoIFtbaT1dU0VDXSBbYz1OXSBbbT1NSU5dXG4iCiAJCSAgIiAgICAgICAgICAgICAg ICAgICAgICAgICBleGVjdXRlIHF1ZXJ5IGV2ZXJ5IFNFQyBzZWNvbmRzLCB1cCB0byBOIHRpbWVz LFxuIgogCQkgICIgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcCBpZiBsZXNzIHRoYW4gTUlO IHJvd3MgYXJlIHJldHVybmVkXG4iKTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9wcm9tcHQu YyBiL3NyYy9iaW4vcHNxbC9wcm9tcHQuYwppbmRleCAwOGExNGZlYjNjMy4uYTU2ZWEwNzg3YzEg MTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC9wcm9tcHQuYworKysgYi9zcmMvYmluL3BzcWwvcHJv bXB0LmMKQEAgLTMxLDYgKzMxLDkgQEAKICAqCQlzb2NrZXRzLCAiW2xvY2FsOi9kaXIvbmFtZV0i IGlmIG5vdCBkZWZhdWx0CiAgKiAlbSAtIGxpa2UgJU0sIGJ1dCBob3N0bmFtZSBvbmx5IChiZWZv cmUgZmlyc3QgZG90KSwgb3IgYWx3YXlzICJbbG9jYWxdIgogICogJXAgLSBiYWNrZW5kIHBpZAor ICogJVAgLSBwaXBlbGluZSBzdGF0dXM6IG5vIHBpcGVsaW5lOiBlbXB0eQorICogCQlvbmdvaW5n IHBpcGVsaW5lOiB8cGlwZWRfc3luY3MscGlwZWRfY29tbWFuZHMscGVuZGluZ19yZXN1bHRzfAor ICogCQlhYm9ydGVkIHBpcGVsaW5lOiArcGlwZWRfc3luY3MscGlwZWRfY29tbWFuZHMscGVuZGlu Z19yZXN1bHRzKwogICogJT4gLSBkYXRhYmFzZSBzZXJ2ZXIgcG9ydCBudW1iZXIKICAqICVuIC0g ZGF0YWJhc2UgdXNlciBuYW1lCiAgKiAlcyAtIHNlcnZpY2UKQEAgLTE4MSw3ICsxODQsMTYgQEAg Z2V0X3Byb21wdChwcm9tcHRTdGF0dXNfdCBzdGF0dXMsIENvbmRpdGlvbmFsU3RhY2sgY3N0YWNr KQogCQkJCQkJCXNucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksICIlZCIsIHBpZCk7CiAJCQkJCX0K IAkJCQkJYnJlYWs7CisJCQkJY2FzZSAnUCc6CisJCQkJCXsKKwkJCQkJCVBHcGlwZWxpbmVTdGF0 dXMgc3RhdHVzID0gUFFwaXBlbGluZVN0YXR1cyhwc2V0LmRiKTsKIAorCQkJCQkJaWYgKHN0YXR1 cyA9PSBQUV9QSVBFTElORV9PTikKKwkJCQkJCQlzbnByaW50ZihidWYsIHNpemVvZihidWYpLCAi fCVkLCVkLCVkfCIsIHBzZXQucGlwZWRfc3luY3MsIHBzZXQucGlwZWRfY29tbWFuZHMsIHBzZXQu cGVuZGluZ19yZXN1bHRzKTsKKwkJCQkJCWVsc2UgaWYgKHN0YXR1cyA9PSBQUV9QSVBFTElORV9B Qk9SVEVEKQorCQkJCQkJCXNucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksICIrJWQsJWQsJWQrIiwg cHNldC5waXBlZF9zeW5jcywgcHNldC5waXBlZF9jb21tYW5kcywgcHNldC5wZW5kaW5nX3Jlc3Vs dHMpOworCQkJCQkJYnJlYWs7CisJCQkJCX0KIAkJCQljYXNlICcwJzoKIAkJCQljYXNlICcxJzoK IAkJCQljYXNlICcyJzoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9zZXR0aW5ncy5oIGIvc3Jj L2Jpbi9wc3FsL3NldHRpbmdzLmgKaW5kZXggMmE4ZmUxMmViNTUuLjRjNzBkMjFjNDA5IDEwMDY0 NAotLS0gYS9zcmMvYmluL3BzcWwvc2V0dGluZ3MuaAorKysgYi9zcmMvYmluL3BzcWwvc2V0dGlu Z3MuaApAQCAtMjMsOCArMjMsOCBAQAogI2RlZmluZSBERUZBVUxUX0VESVRPUl9MSU5FTlVNQkVS X0FSRyAiKyIKICNlbmRpZgogCi0jZGVmaW5lIERFRkFVTFRfUFJPTVBUMSAiJS8lUiV4JSMgIgot I2RlZmluZSBERUZBVUxUX1BST01QVDIgIiUvJVIleCUjICIKKyNkZWZpbmUgREVGQVVMVF9QUk9N UFQxICIlLyVSJVAleCUjICIKKyNkZWZpbmUgREVGQVVMVF9QUk9NUFQyICIlLyVSJVAleCUjICIK ICNkZWZpbmUgREVGQVVMVF9QUk9NUFQzICI+PiAiCiAKIC8qCkBAIC02OSw2ICs2OSwxMiBAQCB0 eXBlZGVmIGVudW0KIAlQU1FMX1NFTkRfRVhURU5ERURfUEFSU0UsCiAJUFNRTF9TRU5EX0VYVEVO REVEX1FVRVJZX1BBUkFNUywKIAlQU1FMX1NFTkRfRVhURU5ERURfUVVFUllfUFJFUEFSRUQsCisJ UFNRTF9TRU5EX1BJUEVMSU5FX1NZTkMsCisJUFNRTF9TVEFSVF9QSVBFTElORV9NT0RFLAorCVBT UUxfRU5EX1BJUEVMSU5FX01PREUsCisJUFNRTF9GTFVTSCwKKwlQU1FMX1NFTkRfRkxVU0hfUkVR VUVTVCwKKwlQU1FMX0dFVF9SRVNVTFRTLAogfSBQU1FMX1NFTkRfTU9ERTsKIAogdHlwZWRlZiBl bnVtCkBAIC0xMTEsNiArMTE3LDExIEBAIHR5cGVkZWYgc3RydWN0IF9wc3FsU2V0dGluZ3MKIAlj aGFyCSAgKipiaW5kX3BhcmFtczsJLyogcGFyYW1ldGVycyBmb3IgZXh0ZW5kZWQgcXVlcnkgcHJv dG9jb2wgY2FsbCAqLwogCWNoYXIJICAgKnN0bXROYW1lOwkJLyogcHJlcGFyZWQgc3RhdGVtZW50 IG5hbWUgdXNlZCBmb3IgZXh0ZW5kZWQKIAkJCQkJCQkJICogcXVlcnkgcHJvdG9jb2wgY29tbWFu ZHMgKi8KKwlpbnQJCQlwaXBlZF9jb21tYW5kczsgLyogbnVtYmVyIG9mIHBpcGVkIGNvbW1hbmRz ICovCisJaW50CQkJcGlwZWRfc3luY3M7CS8qIG51bWJlciBvZiBwaXBlZCBzeW5jcyAqLworCWlu dAkJCXBlbmRpbmdfcmVzdWx0czsJLyogbnVtYmVyIG9mIHJlc3VsdHMgYXZhaWxhYmxlIHRvIHJl YWQgKi8KKwlpbnQJCQlyZXF1ZXN0ZWRfcmVzdWx0czsJLyogbnVtYmVyIG9mIHJlcXVlc3RlZCBy ZXN1bHRzLCBpbmNsdWRlCisJCQkJCQkJCQkgKiBzeW5jIHJlc3VsdHMgKi8KIAlib29sCQljcm9z c3RhYl9mbGFnOwkvKiBvbmUtc2hvdCByZXF1ZXN0IHRvIGNyb3NzdGFiIHJlc3VsdCAqLwogCWNo YXIJICAgKmN0dl9hcmdzWzRdOwkvKiBcY3Jvc3N0YWJ2aWV3IGFyZ3VtZW50cyAqLwogCmRpZmYg LS1naXQgYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMgYi9zcmMvYmluL3BzcWwvdGFi LWNvbXBsZXRlLmluLmMKaW5kZXggODFjYmYxMGFhMjguLmJkM2E3OGQ5MDlkIDEwMDY0NAotLS0g YS9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKKysrIGIvc3JjL2Jpbi9wc3FsL3RhYi1j b21wbGV0ZS5pbi5jCkBAIC0xODY3LDkgKzE4NjcsOSBAQCBwc3FsX2NvbXBsZXRpb24oY29uc3Qg Y2hhciAqdGV4dCwgaW50IHN0YXJ0LCBpbnQgZW5kKQogCQkiXFxkcmRzIiwgIlxcZHJnIiwgIlxc ZFJzIiwgIlxcZFJwIiwgIlxcZHMiLAogCQkiXFxkdCIsICJcXGRUIiwgIlxcZHYiLCAiXFxkdSIs ICJcXGR4IiwgIlxcZFgiLCAiXFxkeSIsCiAJCSJcXGVjaG8iLCAiXFxlZGl0IiwgIlxcZWYiLCAi XFxlbGlmIiwgIlxcZWxzZSIsICJcXGVuY29kaW5nIiwKLQkJIlxcZW5kaWYiLCAiXFxlcnJ2ZXJi b3NlIiwgIlxcZXYiLAotCQkiXFxmIiwKLQkJIlxcZyIsICJcXGdkZXNjIiwgIlxcZ2V0ZW52Iiwg IlxcZ2V4ZWMiLCAiXFxnc2V0IiwgIlxcZ3giLAorCQkiXFxlbmRpZiIsICJcXGVuZHBpcGVsaW5l IiwgIlxcZXJydmVyYm9zZSIsICJcXGV2IiwKKwkJIlxcZiIsICJcXGZsdXNoIiwgIlxcZmx1c2hy ZXF1ZXN0IiwKKwkJIlxcZyIsICJcXGdkZXNjIiwgIlxcZ2V0ZW52IiwgIlxcZ2V0cmVzdWx0cyIs ICJcXGdleGVjIiwgIlxcZ3NldCIsICJcXGd4IiwKIAkJIlxcaGVscCIsICJcXGh0bWwiLAogCQki XFxpZiIsICJcXGluY2x1ZGUiLCAiXFxpbmNsdWRlX3JlbGF0aXZlIiwgIlxcaXIiLAogCQkiXFxs aXN0IiwgIlxcbG9faW1wb3J0IiwgIlxcbG9fZXhwb3J0IiwgIlxcbG9fbGlzdCIsICJcXGxvX3Vu bGluayIsCkBAIC0xODc3LDcgKzE4NzcsNyBAQCBwc3FsX2NvbXBsZXRpb24oY29uc3QgY2hhciAq dGV4dCwgaW50IHN0YXJ0LCBpbnQgZW5kKQogCQkiXFxwYXJzZSIsICJcXHBhc3N3b3JkIiwgIlxc cHJpbnQiLCAiXFxwcm9tcHQiLCAiXFxwc2V0IiwKIAkJIlxccWVjaG8iLCAiXFxxdWl0IiwKIAkJ IlxccmVzZXQiLAotCQkiXFxzIiwgIlxcc2V0IiwgIlxcc2V0ZW52IiwgIlxcc2YiLCAiXFxzdiIs CisJCSJcXHMiLCAiXFxzZXQiLCAiXFxzZXRlbnYiLCAiXFxzZiIsICJcXHN0YXJ0cGlwZWxpbmUi LCAiXFxzdiIsICJcXHN5bmNwaXBlbGluZSIsCiAJCSJcXHQiLCAiXFxUIiwgIlxcdGltaW5nIiwK IAkJIlxcdW5zZXQiLAogCQkiXFx4IiwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvcHNxbC5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BzcWwub3V0CmluZGV4 IDM2ZGMzMWMxNmM0Li5kZWQ1MTBkNTBiYyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9wc3FsLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BzcWwub3V0 CkBAIC02ODI4LDMgKzY4MjgsNjcxIEBAIENSRUFURSBUQUJMRSBkZWZwcml2cyAoYSBpbnQpOwog CiBccHNldCBudWxsICcnCiBEUk9QIFRBQkxFIGRlZnByaXZzOworLS0gcGlwZWxpbmluZworQ1JF QVRFIFRBQkxFIHBzcWxfcGlwZWxpbmUoYSBJTlRFR0VSIFBSSU1BUlkgS0VZLCBzIFRFWFQpOwor LS0gc2luZ2xlIHF1ZXJ5Citcc3RhcnRwaXBlbGluZQorU0VMRUNUICQxIFxiaW5kICd2YWwxJyBc ZworXGVuZHBpcGVsaW5lCisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisgdmFsMQorKDEgcm93KQor CistLSBtdWx0aXBsZSBxdWVyaWVzCitcc3RhcnRwaXBlbGluZQorU0VMRUNUICQxIFxiaW5kICd2 YWwxJyBcZworU0VMRUNUICQxLCAkMiBcYmluZCAndmFsMicgJ3ZhbDMnIFxnCitTRUxFQ1QgJDEs ICQyIFxiaW5kICd2YWwyJyAndmFsMycgXGcKK1xlbmRwaXBlbGluZQorID9jb2x1bW4/IAorLS0t LS0tLS0tLQorIHZhbDEKKygxIHJvdykKKworID9jb2x1bW4/IHwgP2NvbHVtbj8gCistLS0tLS0t LS0tKy0tLS0tLS0tLS0KKyB2YWwyICAgICB8IHZhbDMKKygxIHJvdykKKworID9jb2x1bW4/IHwg P2NvbHVtbj8gCistLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyB2YWwyICAgICB8IHZhbDMKKygxIHJv dykKKworLS0gVGVzdCBcZmx1c2gKK1xzdGFydHBpcGVsaW5lCitcZmx1c2gKK1NFTEVDVCAkMSBc YmluZCAndmFsMScgXGcKK1xmbHVzaAorU0VMRUNUICQxLCAkMiBcYmluZCAndmFsMicgJ3ZhbDMn IFxnCitTRUxFQ1QgJDEsICQyIFxiaW5kICd2YWwyJyAndmFsMycgXGcKK1xlbmRwaXBlbGluZQor ID9jb2x1bW4/IAorLS0tLS0tLS0tLQorIHZhbDEKKygxIHJvdykKKworID9jb2x1bW4/IHwgP2Nv bHVtbj8gCistLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyB2YWwyICAgICB8IHZhbDMKKygxIHJvdykK KworID9jb2x1bW4/IHwgP2NvbHVtbj8gCistLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyB2YWwyICAg ICB8IHZhbDMKKygxIHJvdykKKworLS0gc2VuZCBtdWx0aXBsZSBzeW5jcworXHN0YXJ0cGlwZWxp bmUKK1NFTEVDVCAkMSBcYmluZCAndmFsMScgXGcKK1xzeW5jcGlwZWxpbmUKK1xzeW5jcGlwZWxp bmUKK1NFTEVDVCAkMSwgJDIgXGJpbmQgJ3ZhbDInICd2YWwzJyBcZworXHN5bmNwaXBlbGluZQor U0VMRUNUICQxLCAkMiBcYmluZCAndmFsNCcgJ3ZhbDUnIFxnCitcZW5kcGlwZWxpbmUKKyA/Y29s dW1uPyAKKy0tLS0tLS0tLS0KKyB2YWwxCisoMSByb3cpCisKKyA/Y29sdW1uPyB8ID9jb2x1bW4/ IAorLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgdmFsMiAgICAgfCB2YWwzCisoMSByb3cpCisKKyA/ Y29sdW1uPyB8ID9jb2x1bW4/IAorLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgdmFsNCAgICAgfCB2 YWw1CisoMSByb3cpCisKKy0tIHN0YXJ0cGlwZWxpbmUgc2hvdWxkbid0IGhhdmUgYW55IGVmZmVj dCBpZiBhbHJlYWR5IGluIGEgcGlwZWxpbmUKK1xzdGFydHBpcGVsaW5lCitcc3RhcnRwaXBlbGlu ZQorU0VMRUNUICQxIFxiaW5kICd2YWwxJyBcZworXGVuZHBpcGVsaW5lCisgP2NvbHVtbj8gCist LS0tLS0tLS0tCisgdmFsMQorKDEgcm93KQorCistLSBDb252ZXJ0IGFuIGltcGxpY2l0IHR4IGJs b2NrIHRvIGFuIGV4cGxpY2l0IHR4IGJsb2NrCitcc3RhcnRwaXBlbGluZQorSU5TRVJUIElOVE8g cHNxbF9waXBlbGluZSBWQUxVRVMgKCQxKSBcYmluZCAxIFxnCitCRUdJTiBcYmluZCBcZworSU5T RVJUIElOVE8gcHNxbF9waXBlbGluZSBWQUxVRVMgKCQxKSBcYmluZCAyIFxnCitST0xMQkFDSyBc YmluZCBcZworXGVuZHBpcGVsaW5lCistLSBNdWx0aXBsZSBleHBsaWNpdCB0cmFuc2FjdGlvbnMK K1xzdGFydHBpcGVsaW5lCitCRUdJTiBcYmluZCBcZworSU5TRVJUIElOVE8gcHNxbF9waXBlbGlu ZSBWQUxVRVMgKCQxKSBcYmluZCAxIFxnCitST0xMQkFDSyBcYmluZCBcZworQkVHSU4gXGJpbmQg XGcKK0lOU0VSVCBJTlRPIHBzcWxfcGlwZWxpbmUgVkFMVUVTICgkMSkgXGJpbmQgMSBcZworQ09N TUlUIFxiaW5kIFxnCitcZW5kcGlwZWxpbmUKKy0tIENPUFkgRlJPTSBTVERJTgorXHN0YXJ0cGlw ZWxpbmUKK1NFTEVDVCAkMSBcYmluZCAndmFsMScgXGcKK0NPUFkgcHNxbF9waXBlbGluZSBGUk9N IFNURElOIFxiaW5kIFxnCitcZW5kcGlwZWxpbmUKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyB2 YWwxCisoMSByb3cpCisKKy0tIENPUFkgRlJPTSBTVERJTiB3aXRoIFxmbHVzaHJlcXVlc3QgKyBc Z2V0cmVzdWx0cworXHN0YXJ0cGlwZWxpbmUKK1NFTEVDVCAkMSBcYmluZCAndmFsMScgXGcKK0NP UFkgcHNxbF9waXBlbGluZSBGUk9NIFNURElOIFxiaW5kIFxnCitcZmx1c2hyZXF1ZXN0CitcZ2V0 cmVzdWx0cworID9jb2x1bW4/IAorLS0tLS0tLS0tLQorIHZhbDEKKygxIHJvdykKKworbWVzc2Fn ZSB0eXBlIDB4NWEgYXJyaXZlZCBmcm9tIHNlcnZlciB3aGlsZSBpZGxlCitcZW5kcGlwZWxpbmUK Ky0tIENPUFkgRlJPTSBTVERJTiB3aXRoIFxzeW5jcGlwZWxpbmUgKyBcZ2V0cmVzdWx0cworXHN0 YXJ0cGlwZWxpbmUKK1NFTEVDVCAkMSBcYmluZCAndmFsMScgXGcKK0NPUFkgcHNxbF9waXBlbGlu ZSBGUk9NIFNURElOIFxiaW5kIFxnCitcc3luY3BpcGVsaW5lCitcZ2V0cmVzdWx0cworID9jb2x1 bW4/IAorLS0tLS0tLS0tLQorIHZhbDEKKygxIHJvdykKKworXGVuZHBpcGVsaW5lCistLSBDT1BZ IFRPIFNURE9VVAorXHN0YXJ0cGlwZWxpbmUKK1NFTEVDVCAkMSBcYmluZCAndmFsMScgXGcKK2Nv cHkgcHNxbF9waXBlbGluZSBUTyBTVERPVVQgXGJpbmQgXGcKK1xlbmRwaXBlbGluZQorID9jb2x1 bW4/IAorLS0tLS0tLS0tLQorIHZhbDEKKygxIHJvdykKKworMQlcTgorMgl0ZXN0MgorMwl0ZXN0 MworNAl0ZXN0NAorLS0gQ09QWSBUTyBTVERPVVQgd2l0aCBcZmx1c2hyZXF1ZXN0ICsgXGdldHJl c3VsdHMKK1xzdGFydHBpcGVsaW5lCitTRUxFQ1QgJDEgXGJpbmQgJ3ZhbDEnIFxnCitjb3B5IHBz cWxfcGlwZWxpbmUgVE8gU1RET1VUIFxiaW5kIFxnCitcZmx1c2hyZXF1ZXN0CitcZ2V0cmVzdWx0 cworID9jb2x1bW4/IAorLS0tLS0tLS0tLQorIHZhbDEKKygxIHJvdykKKworMQlcTgorMgl0ZXN0 MgorMwl0ZXN0MworNAl0ZXN0NAorXGVuZHBpcGVsaW5lCistLSBDT1BZIFRPIFNURE9VVCB3aXRo IFxzeW5jcGlwZWxpbmUgKyBcZ2V0cmVzdWx0cworXHN0YXJ0cGlwZWxpbmUKK1NFTEVDVCAkMSBc YmluZCAndmFsMScgXGcKK2NvcHkgcHNxbF9waXBlbGluZSBUTyBTVERPVVQgXGJpbmQgXGcKK1xz eW5jcGlwZWxpbmUKK1xnZXRyZXN1bHRzCisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisgdmFsMQor KDEgcm93KQorCisxCVxOCisyCXRlc3QyCiszCXRlc3QzCis0CXRlc3Q0CitcZW5kcGlwZWxpbmUK Ky0tIFVzZSBccGFyc2UgYW5kIFxiaW5kX25hbWVkCitcc3RhcnRwaXBlbGluZQorU0VMRUNUICQx IFxwYXJzZSAnJworU0VMRUNUICQxLCAkMiBccGFyc2UgJycKK1NFTEVDVCAkMiBccGFyc2UgcGlw ZWxpbmVfMQorXGJpbmRfbmFtZWQgJycgMSAyIFxnCitcYmluZF9uYW1lZCBwaXBlbGluZV8xIDIg XGcKK1xlbmRwaXBlbGluZQorRVJST1I6ICBjb3VsZCBub3QgZGV0ZXJtaW5lIGRhdGEgdHlwZSBv ZiBwYXJhbWV0ZXIgJDEKKy0tIFxnZXRyZXN1bHRzIGRpc3BsYXlzIGFsbCByZXN1bHRzIHByZWNl ZGluZyBhIFxmbHVzaHJlcXVlc3QKK1xzdGFydHBpcGVsaW5lCitTRUxFQ1QgJDEgXGJpbmQgMSBc ZworU0VMRUNUICQxIFxiaW5kIDIgXGcKK1xmbHVzaHJlcXVlc3QKK1xnZXRyZXN1bHRzCisgP2Nv bHVtbj8gCistLS0tLS0tLS0tCisgMQorKDEgcm93KQorCisgP2NvbHVtbj8gCistLS0tLS0tLS0t CisgMgorKDEgcm93KQorCitcZW5kcGlwZWxpbmUKKy0tIFxnZXRyZXN1bHRzIGRpc3BsYXlzIGFs bCByZXN1bHRzIHByZWNlZGluZyBhIHN5bmMKK1xzdGFydHBpcGVsaW5lCitTRUxFQ1QgJDEgXGJp bmQgMSBcZworU0VMRUNUICQxIFxiaW5kIDIgXGcKK1xzeW5jcGlwZWxpbmUKK1xnZXRyZXN1bHRz CisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisgMQorKDEgcm93KQorCisgP2NvbHVtbj8gCistLS0t LS0tLS0tCisgMgorKDEgcm93KQorCitcZW5kcGlwZWxpbmUKKy0tIFxnZXRyZXN1bHRzIGltbWVk aWF0ZWx5IHJldHVybnMgaWYgdGhlcmUncyBubyByZXN1bHQgdG8gZmV0Y2gKK1xzdGFydHBpcGVs aW5lCitcZ2V0cmVzdWx0cworTm8gcGVuZGluZyByZXN1bHRzIHRvIGdldAorU0VMRUNUICQxIFxi aW5kIDIgXGcKK1xnZXRyZXN1bHRzCitObyBwZW5kaW5nIHJlc3VsdHMgdG8gZ2V0CitcZmx1c2hy ZXF1ZXN0CitcZW5kcGlwZWxpbmUKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyAyCisoMSByb3cp CisKK1xnZXRyZXN1bHRzCitObyBwZW5kaW5nIHJlc3VsdHMgdG8gZ2V0CistLSBcZ2V0cmVzdWx0 cyBvbmx5IGZldGNoIHJlc3VsdHMgcHJlY2VkaW5nIGEgZmx1c2hyZXF1ZXN0Citcc3RhcnRwaXBl bGluZQorU0VMRUNUICQxIFxiaW5kIDIgXGcKK1xmbHVzaHJlcXVlc3QKK1NFTEVDVCAkMSBcYmlu ZCAyIFxnCitcZ2V0cmVzdWx0cworID9jb2x1bW4/IAorLS0tLS0tLS0tLQorIDIKKygxIHJvdykK KworXGVuZHBpcGVsaW5lCisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisgMgorKDEgcm93KQorCist LSBcZ2V0cmVzdWx0cyBvbmx5IGZldGNoIHJlc3VsdHMgcHJlY2VkaW5nIGEgc3luYyBtZXNzYWdl Citcc3RhcnRwaXBlbGluZQorU0VMRUNUICQxIFxiaW5kIDIgXGcKK1xzeW5jcGlwZWxpbmUKK1NF TEVDVCAkMSBcYmluZCAyIFxnCitcZ2V0cmVzdWx0cworID9jb2x1bW4/IAorLS0tLS0tLS0tLQor IDIKKygxIHJvdykKKworXGVuZHBpcGVsaW5lCisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisgMgor KDEgcm93KQorCistLSB1c2UgcGlwZWxpbmUgd2l0aCBjaHVua2VkIHJlc3VsdHMgd2l0aCBib3Ro IFxnZXRyZXN1bHRzIGFuZCBcZW5kcGlwZWxpbmUKK1xzdGFydHBpcGVsaW5lCitcc2V0IEZFVENI X0NPVU5UIDEwCitTRUxFQ1QgJDEgXGJpbmQgMiBcZworXGZsdXNocmVxdWVzdAorXGdldHJlc3Vs dHMKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyAyCisoMSByb3cpCisKK1NFTEVDVCAkMSBcYmlu ZCAyIFxnCitcZW5kcGlwZWxpbmUKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyAyCisoMSByb3cp CisKK1x1bnNldCBGRVRDSF9DT1VOVAorLS0gXGdldHJlc3VsdHMgd2l0aCBzcGVjaWZpYyBudW1i ZXIgb2YgcmVxdWVzdGVkIHJlc3VsdHMKK1xzdGFydHBpcGVsaW5lCitTRUxFQ1QgJDEgXGJpbmQg MSBcZworU0VMRUNUICQxIFxiaW5kIDIgXGcKK1NFTEVDVCAkMSBcYmluZCAzIFxnCitcc3luY3Bp cGVsaW5lCitcZ2V0cmVzdWx0cyAxCisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisgMQorKDEgcm93 KQorCitTRUxFQ1QgJDEgXGJpbmQgNCBcZworXGdldHJlc3VsdHMgMworID9jb2x1bW4/IAorLS0t LS0tLS0tLQorIDIKKygxIHJvdykKKworID9jb2x1bW4/IAorLS0tLS0tLS0tLQorIDMKKygxIHJv dykKKworXGVuZHBpcGVsaW5lCisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisgNAorKDEgcm93KQor CistLSBcc3luY3BpcGVsaW5lIGNvdW50IGFzIG9uZSBjb21tYW5kIHRvIGZldGNoIGZvciBcZ2V0 cmVzdWx0cworXHN0YXJ0cGlwZWxpbmUKK1xzeW5jcGlwZWxpbmUKK1xzeW5jcGlwZWxpbmUKK1NF TEVDVCAkMSBcYmluZCAxIFxnCitcZmx1c2hyZXF1ZXN0CitcZ2V0cmVzdWx0cyAyCitcZ2V0cmVz dWx0cyAxCisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisgMQorKDEgcm93KQorCitcZW5kcGlwZWxp bmUKKy0tIFxnZXRyZXN1bHRzIDAgc2hvdWxkIGdldCBhbGwgcmVzdWx0cworXHN0YXJ0cGlwZWxp bmUKK1NFTEVDVCAkMSBcYmluZCAxIFxnCitTRUxFQ1QgJDEgXGJpbmQgMiBcZworU0VMRUNUICQx IFxiaW5kIDMgXGcKK1xzeW5jcGlwZWxpbmUKK1xnZXRyZXN1bHRzIDAKKyA/Y29sdW1uPyAKKy0t LS0tLS0tLS0KKyAxCisoMSByb3cpCisKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyAyCisoMSBy b3cpCisKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyAzCisoMSByb3cpCisKK1xlbmRwaXBlbGlu ZQorLS0gcGlwZWxpbmluZyBlcnJvcnMKKy0tIGVuZHBpcGVsaW5lIG91dHNpZGUgb2YgcGlwZWxp bmUgc2hvdWxkIGZhaWwKK1xlbmRwaXBlbGluZQorY2Fubm90IHNlbmQgcGlwZWxpbmUgd2hlbiBu b3QgaW4gcGlwZWxpbmUgbW9kZQorLS0gUXVlcnkgdXNpbmcgc2ltcGxlIHByb3RvY29sIHNob3Vs ZCBub3QgYmUgc2VudCBhbmQgc2hvdWxkIGxlYXZlIHRoZSBwaXBlbGluZSB1c2FibGUKK1xzdGFy dHBpcGVsaW5lCitTRUxFQ1QgMTsKK1BRc2VuZFF1ZXJ5IG5vdCBhbGxvd2VkIGluIHBpcGVsaW5l IG1vZGUKK1NFTEVDVCAkMSBcYmluZCAndmFsMScgXGcKK1xlbmRwaXBlbGluZQorID9jb2x1bW4/ IAorLS0tLS0tLS0tLQorIHZhbDEKKygxIHJvdykKKworLS0gQWZ0ZXIgYW4gYWJvcnRlZCBwaXBl bGluZSwgY29tbWFuZHMgYWZ0ZXIgYSBzeW5jIHNob3VsZCBiZSBkaXNwbGF5ZWQKK1xzdGFydHBp cGVsaW5lCitTRUxFQ1QgJDEgXGJpbmQgXGcKK1xzeW5jcGlwZWxpbmUKK1NFTEVDVCAkMSBcYmlu ZCAxIFxnCitcZW5kcGlwZWxpbmUKK0VSUk9SOiAgYmluZCBtZXNzYWdlIHN1cHBsaWVzIDAgcGFy YW1ldGVycywgYnV0IHByZXBhcmVkIHN0YXRlbWVudCAiIiByZXF1aXJlcyAxCisgP2NvbHVtbj8g CistLS0tLS0tLS0tCisgMQorKDEgcm93KQorCistLSBJbmNvcnJlY3QgbnVtYmVyIG9mIHBhcmFt ZXRlcnMsIHRoZSBwaXBlbGluZSB3aWxsIGJlIGFib3J0ZWQgYW5kIGZvbGxvd2luZyBxdWVyaWVz IHdvbid0IGJlIGV4ZWN1dGVkCitcc3RhcnRwaXBlbGluZQorU0VMRUNUIFxiaW5kICd2YWwxJyBc ZworU0VMRUNUICQxIFxiaW5kICd2YWwxJyBcZworXGVuZHBpcGVsaW5lCitFUlJPUjogIGJpbmQg bWVzc2FnZSBzdXBwbGllcyAxIHBhcmFtZXRlcnMsIGJ1dCBwcmVwYXJlZCBzdGF0ZW1lbnQgIiIg cmVxdWlyZXMgMAorLS0gQW4gZXhwbGljaXQgdHJhbnNhY3Rpb24gd2l0aCBhbiBlcnJvciBuZWVk cyB0byBiZSByb2xsYmFja2VkIGFmdGVyIHRoZSBwaXBlbGluZQorXHN0YXJ0cGlwZWxpbmUKK0JF R0lOIFxiaW5kIFxnCitJTlNFUlQgSU5UTyBwc3FsX3BpcGVsaW5lIFZBTFVFUyAoJDEpIFxiaW5k IDEgXGcKK1JPTExCQUNLIFxiaW5kIFxnCitcZW5kcGlwZWxpbmUKK0VSUk9SOiAgZHVwbGljYXRl IGtleSB2YWx1ZSB2aW9sYXRlcyB1bmlxdWUgY29uc3RyYWludCAicHNxbF9waXBlbGluZV9wa2V5 IgorREVUQUlMOiAgS2V5IChhKT0oMSkgYWxyZWFkeSBleGlzdHMuCitST0xMQkFDSzsKKy0tIFx3 YXRjaCBzZW5kcyBhIHNpbXBsZSBxdWVyeSB3aGljaCB3b24ndCBiZSBhbGxvd2VkIHdpdGhpbiBh IHBpcGVsaW5lCitcc3RhcnRwaXBlbGluZQorU0VMRUNUIFxiaW5kIFxnCitcd2F0Y2ggMQorUFFz ZW5kUXVlcnkgbm90IGFsbG93ZWQgaW4gcGlwZWxpbmUgbW9kZQorCitcZW5kcGlwZWxpbmUKKy0t CisoMSByb3cpCisKKy0tIFxnZGVzYyBzaG91bGQgZmFpbCBhcyBzeW5jaHJvbm91cyBjb21tYW5k cyBhcmUgbm90IGFsbG93ZWQgaW4gcGlwZWxpbmUsIHBpcGVsaW5lIHNob3VsZCBzdGlsbCBiZSB1 c2FibGUKK1xzdGFydHBpcGVsaW5lCitTRUxFQ1QgJDEgXGJpbmQgMSBcZ2Rlc2MKK3N5bmNocm9u b3VzIGNvbW1hbmQgZXhlY3V0aW9uIGZ1bmN0aW9ucyBhcmUgbm90IGFsbG93ZWQgaW4gcGlwZWxp bmUgbW9kZQorU0VMRUNUICQxIFxiaW5kIDEgXGcKK1xlbmRwaXBlbGluZQorID9jb2x1bW4/IAor LS0tLS0tLS0tLQorIDEKKygxIHJvdykKKworLS0gXGdzZXQgaXMgbm90IGFsbG93ZWQsIHBpcGVs aW5lIHNob3VsZCBzdGlsbCBiZSB1c2FibGUKK1xzdGFydHBpcGVsaW5lCitTRUxFQ1QgJDEgYXMg aSwgJDIgYXMgaiBccGFyc2UgJycKK1NFTEVDVCAkMSBhcyBrLCAkMiBhcyBsIFxwYXJzZSAnc2Vj b25kJworXGJpbmRfbmFtZWQgJycgMSAyIFxnc2V0CitcZ3NldCBub3QgYWxsb3dlZCBpbiBwaXBl bGluZSBtb2RlCitcYmluZF9uYW1lZCBzZWNvbmQgMSAyIFxnc2V0IHByZWYwMl8gXGVjaG8gOnBy ZWYwMl9pIDpwcmVmMDJfagorXGdzZXQgbm90IGFsbG93ZWQgaW4gcGlwZWxpbmUgbW9kZQorXGJp bmRfbmFtZWQgJycgMSAyIFxnCitcZW5kcGlwZWxpbmUKKyBpIHwgaiAKKy0tLSstLS0KKyAxIHwg MgorKDEgcm93KQorCistLSBcZ3ggaXMgbm90IGFsbG93ZWQsIHBpcGVsaW5lIHNob3VsZCBzdGls bCBiZSB1c2FibGUKK1xzdGFydHBpcGVsaW5lCitTRUxFQ1QgJDEgXGJpbmQgMSBcZ3gKK1xneCBu b3QgYWxsb3dlZCBpbiBwaXBlbGluZSBtb2RlCitccmVzZXQKK1NFTEVDVCAkMSBcYmluZCAxIFxn CitcZW5kcGlwZWxpbmUKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyAxCisoMSByb3cpCisKKy0t IFxneCB3YXJuaW5nIHNob3VsZCBiZSBlbWl0dGVkIGluIGFuIGFib3J0ZWQgcGlwZWxpbmUKK1xz dGFydHBpcGVsaW5lCitTRUxFQ1QgJDEgXGJpbmQgXGcKK1xmbHVzaHJlcXVlc3QKK1xnZXRyZXN1 bHRzCitFUlJPUjogIGJpbmQgbWVzc2FnZSBzdXBwbGllcyAwIHBhcmFtZXRlcnMsIGJ1dCBwcmVw YXJlZCBzdGF0ZW1lbnQgIiIgcmVxdWlyZXMgMQorU0VMRUNUICQxIFxiaW5kIDEgXGd4CitcZ3gg bm90IGFsbG93ZWQgaW4gcGlwZWxpbmUgbW9kZQorXGVuZHBpcGVsaW5lCistLSBcZ2V4ZWMgaXMg bm90IGFsbG93ZWQsIHBpcGVsaW5lIHNob3VsZCBzdGlsbCBiZSB1c2FibGUKK1xzdGFydHBpcGVs aW5lCitTRUxFQ1QgJ0lOU0VSVCBJTlRPIHBzcWxfcGlwZWxpbmUoYSkgU0VMRUNUIGdlbmVyYXRl X3NlcmllcygxLCAxMCknIFxwYXJzZSAnaW5zZXJ0X3N0bXQnCitcYmluZF9uYW1lZCBpbnNlcnRf c3RtdCBcZ2V4ZWMKK1xnZXhlYyBub3QgYWxsb3dlZCBpbiBwaXBlbGluZSBtb2RlCitcYmluZF9u YW1lZCBpbnNlcnRfc3RtdCBcZworU0VMRUNUIENPVU5UKCopIEZST00gcHNxbF9waXBlbGluZSBc YmluZCBcZworXGVuZHBpcGVsaW5lCisgICAgICAgICAgICAgICAgICAgICAgICAgID9jb2x1bW4/ ICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIElOU0VSVCBJTlRPIHBzcWxfcGlwZWxp bmUoYSkgU0VMRUNUIGdlbmVyYXRlX3NlcmllcygxLCAxMCkKKygxIHJvdykKKworIGNvdW50IAor LS0tLS0tLQorICAgICA0CisoMSByb3cpCisKKy0tIEFmdGVyIGFuIGVycm9yLCBwaXBlbGluZSBp cyBhYm9ydGVkIGFuZCByZXF1aXJlcyBhIHN5bmMgdG8gYmUgcmV1c2FibGUKK1xzdGFydHBpcGVs aW5lCitTRUxFQ1QgJDEgXGJpbmQgXGcKK1NFTEVDVCAkMSBcYmluZCAxIFxnCitTRUxFQ1QgJDEg XHBhcnNlIGEKK1xiaW5kX25hbWVkIGEgMSBcZworXGNsb3NlIGEKK1xmbHVzaHJlcXVlc3QKK1xn ZXRyZXN1bHRzCitFUlJPUjogIGJpbmQgbWVzc2FnZSBzdXBwbGllcyAwIHBhcmFtZXRlcnMsIGJ1 dCBwcmVwYXJlZCBzdGF0ZW1lbnQgIiIgcmVxdWlyZXMgMQorLS0gUGlwZWxpbmUgaXMgYWJvcnRl ZAorU0VMRUNUICQxIFxiaW5kIDEgXGcKK1NFTEVDVCAkMSBccGFyc2UgYQorXGJpbmRfbmFtZWQg YSAxIFxnCitcY2xvc2UgYQorLS0gU3luYyBhbGxvd3MgcGlwZWxpbmUgdG8gcmVjb3ZlcgorXHN5 bmNwaXBlbGluZQorXGdldHJlc3VsdHMKK1BpcGVsaW5lIGFib3J0ZWQsIGNvbW1hbmQgZGlkbid0 IHJ1bgorU0VMRUNUICQxIFxiaW5kIDEgXGcKK1NFTEVDVCAkMSBccGFyc2UgYQorXGJpbmRfbmFt ZWQgYSAxIFxnCitcY2xvc2UgYQorXGZsdXNocmVxdWVzdAorXGdldHJlc3VsdHMKKyA/Y29sdW1u PyAKKy0tLS0tLS0tLS0KKyAxCisoMSByb3cpCisKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyAx CisoMSByb3cpCisKK1xlbmRwaXBlbGluZQorLS0gSW4gYW4gYWJvcnRlZCBwaXBlbGluZSwgXGdl dHJlc3VsdHMgMSBhYm9ydGVkIGNvbW1hbmRzIG9uZSBhdCBhIHRpbWUKK1xzdGFydHBpcGVsaW5l CitTRUxFQ1QgJDEgXGJpbmQgXGcKK1NFTEVDVCAkMSBcYmluZCAxIFxnCitTRUxFQ1QgJDEgXHBh cnNlIGEKK1xiaW5kX25hbWVkIGEgMSBcZworXHN5bmNwaXBlbGluZQorXGdldHJlc3VsdHMgMQor RVJST1I6ICBiaW5kIG1lc3NhZ2Ugc3VwcGxpZXMgMCBwYXJhbWV0ZXJzLCBidXQgcHJlcGFyZWQg c3RhdGVtZW50ICIiIHJlcXVpcmVzIDEKK1xnZXRyZXN1bHRzIDEKK1BpcGVsaW5lIGFib3J0ZWQs IGNvbW1hbmQgZGlkbid0IHJ1bgorXGdldHJlc3VsdHMgMQorUGlwZWxpbmUgYWJvcnRlZCwgY29t bWFuZCBkaWRuJ3QgcnVuCitcZ2V0cmVzdWx0cyAxCitQaXBlbGluZSBhYm9ydGVkLCBjb21tYW5k IGRpZG4ndCBydW4KK1xnZXRyZXN1bHRzIDEKK1xlbmRwaXBlbGluZQorLS0gVGVzdCBjaHVua2Vk IHJlc3VsdHMgd2l0aCBhbiBhYm9ydGVkIHBpcGVsaW5lCitcc3RhcnRwaXBlbGluZQorXHNldCBG RVRDSF9DT1VOVCAxMAorU0VMRUNUICQxIFxiaW5kIFxnCitcZmx1c2hyZXF1ZXN0CitcZ2V0cmVz dWx0cworRVJST1I6ICBiaW5kIG1lc3NhZ2Ugc3VwcGxpZXMgMCBwYXJhbWV0ZXJzLCBidXQgcHJl cGFyZWQgc3RhdGVtZW50ICIiIHJlcXVpcmVzIDEKK1NFTEVDVCAkMSBcYmluZCBcZworXGVuZHBp cGVsaW5lCitmZXRjaGluZyByZXN1bHRzIGluIGNodW5rZWQgbW9kZSBmYWlsZWQKK1BpcGVsaW5l IGFib3J0ZWQsIGNvbW1hbmQgZGlkbid0IHJ1bgorXHVuc2V0IEZFVENIX0NPVU5UCistLSBcZ2V0 cmVzdWx0cyByZXR1cm5zIGFuIGVycm9yIHdoZW4gYW4gaW5jb3JyZWN0IG51bWJlciBpcyBwcm92 aWRlZAorXHN0YXJ0cGlwZWxpbmUKK1xnZXRyZXN1bHRzIC0xCitcZ2V0cmVzdWx0czogaW52YWxp ZCBudW1iZXIgb2YgcmVxdWVzdGVkIHJlc3VsdHMKK1xlbmRwaXBlbGluZQorLS0gXGdldHJlc3Vs dHMgd2hlbiB0aGVyZSdzIG5vIHJlc3VsdCBzaG91bGRuJ3QgaW1wYWN0IHRoZSBmb2xsb3dpbmcg cXVlcnkKK1xnZXRyZXN1bHRzIDEKK05vIHBlbmRpbmcgcmVzdWx0cyB0byBnZXQKK3NlbGVjdCAx OworID9jb2x1bW4/IAorLS0tLS0tLS0tLQorICAgICAgICAxCisoMSByb3cpCisKKy0tIHBpcGVs aW5pbmcgYW5kIHRyYW5zYWN0aW9uIGJsb2NrIGJlaGF2aW91cgorLS0gc2V0IGxvY2FsIHdpbGwg aXNzdWUgYSB3YXJuaW5nIHdoZW4gbW9kaWZ5aW5nIGEgR1VDIG91dHNpZGUgb2YgYSB0cmFuc2Fj dGlvbiBibG9jaworLS0gVGhlIGNoYW5nZSB3aWxsIHN0aWxsIGJlIHZhbGlkIGFzIGEgcGlwZWxp bmUgcnVucyB3aXRoaW4gYW4gaW1wbGljaXQgdHJhbnNhY3Rpb24gYmxvY2sKKy0tIFNlbmRpbmcg YSBzeW5jIHdpbGwgY29tbWl0IHRoZSBpbXBsaWNpdCB0cmFuc2FjdGlvbiBibG9jay4gVGhlIGZp cnN0IGNvbW1hbmQgYWZ0ZXIgYSBzeW5jCistLSB3b24ndCBiZSBzZWVuIGFzIGJlbG9uZ2luZyB0 byBhIHBpcGVsaW5lLgorXHN0YXJ0cGlwZWxpbmUKK1NFVCBMT0NBTCBzdGF0ZW1lbnRfdGltZW91 dD0nMWgnIFxiaW5kIFxnCitTSE9XIHN0YXRlbWVudF90aW1lb3V0IFxiaW5kIFxnCitcc3luY3Bp cGVsaW5lCitTSE9XIHN0YXRlbWVudF90aW1lb3V0IFxiaW5kIFxnCitTRVQgTE9DQUwgc3RhdGVt ZW50X3RpbWVvdXQ9JzJoJyBcYmluZCBcZworU0hPVyBzdGF0ZW1lbnRfdGltZW91dCBcYmluZCBc ZworXGVuZHBpcGVsaW5lCitXQVJOSU5HOiAgU0VUIExPQ0FMIGNhbiBvbmx5IGJlIHVzZWQgaW4g dHJhbnNhY3Rpb24gYmxvY2tzCisgc3RhdGVtZW50X3RpbWVvdXQgCistLS0tLS0tLS0tLS0tLS0t LS0tCisgMWgKKygxIHJvdykKKworIHN0YXRlbWVudF90aW1lb3V0IAorLS0tLS0tLS0tLS0tLS0t LS0tLQorIDAKKygxIHJvdykKKworIHN0YXRlbWVudF90aW1lb3V0IAorLS0tLS0tLS0tLS0tLS0t LS0tLQorIDJoCisoMSByb3cpCisKKy0tIFJlaW5kZXggY29uY3VycmVudGx5IGlzIGZvcmJpZGRl biBpbiB0aGUgbWlkZGxlIG9mIGEgcGlwZWxpbmUKK1xzdGFydHBpcGVsaW5lCitTRUxFQ1QgJDEg XGJpbmQgMSBcZworUkVJTkRFWCBUQUJMRSBDT05DVVJSRU5UTFkgcHNxbF9waXBlbGluZSBcYmlu ZCBcZworU0VMRUNUICQxIFxiaW5kIDIgXGcKK1xlbmRwaXBlbGluZQorID9jb2x1bW4/IAorLS0t LS0tLS0tLQorIDEKKygxIHJvdykKKworRVJST1I6ICBSRUlOREVYIENPTkNVUlJFTlRMWSBjYW5u b3QgcnVuIGluc2lkZSBhIHRyYW5zYWN0aW9uIGJsb2NrCistLSBSZWluZGV4IGNvbmN1cnJlbnRs eSB3aWxsIHdvcmsgaWYgaXQncyB0aGUgZmlyc3QgY29tbWFuZCBvZiBhIHBpcGVsaW5lCitcc3Rh cnRwaXBlbGluZQorUkVJTkRFWCBUQUJMRSBDT05DVVJSRU5UTFkgcHNxbF9waXBlbGluZSBcYmlu ZCBcZworU0VMRUNUICQxIFxiaW5kIDIgXGcKK1xlbmRwaXBlbGluZQorID9jb2x1bW4/IAorLS0t LS0tLS0tLQorIDIKKygxIHJvdykKKworLS0gc3VidHJhbnNhY3Rpb25zIGFyZSBub3QgYWxsb3dl ZCBpbiBwaXBlbGluZSBtb2RlCitcc3RhcnRwaXBlbGluZQorU0FWRVBPSU5UIGEgXGJpbmQgXGcK K1NFTEVDVCAkMSBcYmluZCAxIFxnCitST0xMQkFDSyBUTyBTQVZFUE9JTlQgYSBcYmluZCBcZwor U0VMRUNUICQxIFxiaW5kIDIgXGcKK1xlbmRwaXBlbGluZQorRVJST1I6ICBTQVZFUE9JTlQgY2Fu IG9ubHkgYmUgdXNlZCBpbiB0cmFuc2FjdGlvbiBibG9ja3MKKy0tIExvY2sgY29tbWFuZCB3aWxs IGZhaWwgYXMgZmlyc3QgcGlwZWxpbmUgY29tbWFuZCBpcyBub3Qgc2VlbiBhcyBhIHRyYW5zYWN0 aW9uIGJsb2NrCitcc3RhcnRwaXBlbGluZQorTE9DSyBwc3FsX3BpcGVsaW5lIFxiaW5kIFxnCitT RUxFQ1QgJDEgXGJpbmQgMiBcZworXGVuZHBpcGVsaW5lCitFUlJPUjogIExPQ0sgVEFCTEUgY2Fu IG9ubHkgYmUgdXNlZCBpbiB0cmFuc2FjdGlvbiBibG9ja3MKKy0tIExvY2sgY29tbWFuZCB3aWxs IHN1Y2NlZWQgYWZ0ZXIgdGhlIGZpcnN0IGNvbW1hbmQgYXMgcGlwZWxpbmUgd2lsbCBiZSBzZWVu IGFzIGFuIGltcGxpY2l0IHRyYW5zYWN0aW9uIGJsb2NrCitcc3RhcnRwaXBlbGluZQorU0VMRUNU ICQxIFxiaW5kIDEgXGcKK0xPQ0sgcHNxbF9waXBlbGluZSBcYmluZCBcZworU0VMRUNUICQxIFxi aW5kIDIgXGcKK1xlbmRwaXBlbGluZQorID9jb2x1bW4/IAorLS0tLS0tLS0tLQorIDEKKygxIHJv dykKKworID9jb2x1bW4/IAorLS0tLS0tLS0tLQorIDIKKygxIHJvdykKKworLS0gVmFjdXVtIGNv bW1hbmQgd2lsbCB3b3JrIGFzIHRoZSBmaXJzdCBjb21tYW5kCitcc3RhcnRwaXBlbGluZQorVkFD VVVNIHBzcWxfcGlwZWxpbmUgXGJpbmQgXGcKK1xlbmRwaXBlbGluZQorLS0gVmFjdXVtIGNvbW1h bmQgd2lsbCBmYWlsIHdpdGhpbiBwaXBlbGluZSBpbXBsaWNpdCB0cmFuc2FjdGlvbgorXHN0YXJ0 cGlwZWxpbmUKK1NFTEVDVCAxIFxiaW5kIFxnCitWQUNVVU0gcHNxbF9waXBlbGluZSBcYmluZCBc ZworXGVuZHBpcGVsaW5lCisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisgICAgICAgIDEKKygxIHJv dykKKworRVJST1I6ICBWQUNVVU0gY2Fubm90IHJ1biBpbnNpZGUgYSB0cmFuc2FjdGlvbiBibG9j aworLS0gVmFjdXVtIGNvbW1hbmQgd2lsbCB3b3JrIGFmdGVyIGEgc3luYworXHN0YXJ0cGlwZWxp bmUKK1NFTEVDVCAxIFxiaW5kIFxnCitcc3luY3BpcGVsaW5lCitWQUNVVU0gcHNxbF9waXBlbGlu ZSBcYmluZCBcZworXGVuZHBpcGVsaW5lCisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisgICAgICAg IDEKKygxIHJvdykKKwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHNxbC5zcWwg Yi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wc3FsLnNxbAppbmRleCBjNTAyMWZjMGIxMy4uMzNiMjA0 ZWRkN2YgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BzcWwuc3FsCisrKyBiL3Ny Yy90ZXN0L3JlZ3Jlc3Mvc3FsL3BzcWwuc3FsCkBAIC0xOTI5LDMgKzE5MjksNDAyIEBAIENSRUFU RSBUQUJMRSBkZWZwcml2cyAoYSBpbnQpOwogXHogZGVmcHJpdnMKIFxwc2V0IG51bGwgJycKIERS T1AgVEFCTEUgZGVmcHJpdnM7CisKKy0tIHBpcGVsaW5pbmcKK0NSRUFURSBUQUJMRSBwc3FsX3Bp cGVsaW5lKGEgSU5URUdFUiBQUklNQVJZIEtFWSwgcyBURVhUKTsKKworLS0gc2luZ2xlIHF1ZXJ5 Citcc3RhcnRwaXBlbGluZQorU0VMRUNUICQxIFxiaW5kICd2YWwxJyBcZworXGVuZHBpcGVsaW5l CisKKy0tIG11bHRpcGxlIHF1ZXJpZXMKK1xzdGFydHBpcGVsaW5lCitTRUxFQ1QgJDEgXGJpbmQg J3ZhbDEnIFxnCitTRUxFQ1QgJDEsICQyIFxiaW5kICd2YWwyJyAndmFsMycgXGcKK1NFTEVDVCAk MSwgJDIgXGJpbmQgJ3ZhbDInICd2YWwzJyBcZworXGVuZHBpcGVsaW5lCisKKy0tIFRlc3QgXGZs dXNoCitcc3RhcnRwaXBlbGluZQorXGZsdXNoCitTRUxFQ1QgJDEgXGJpbmQgJ3ZhbDEnIFxnCitc Zmx1c2gKK1NFTEVDVCAkMSwgJDIgXGJpbmQgJ3ZhbDInICd2YWwzJyBcZworU0VMRUNUICQxLCAk MiBcYmluZCAndmFsMicgJ3ZhbDMnIFxnCitcZW5kcGlwZWxpbmUKKworLS0gc2VuZCBtdWx0aXBs ZSBzeW5jcworXHN0YXJ0cGlwZWxpbmUKK1NFTEVDVCAkMSBcYmluZCAndmFsMScgXGcKK1xzeW5j cGlwZWxpbmUKK1xzeW5jcGlwZWxpbmUKK1NFTEVDVCAkMSwgJDIgXGJpbmQgJ3ZhbDInICd2YWwz JyBcZworXHN5bmNwaXBlbGluZQorU0VMRUNUICQxLCAkMiBcYmluZCAndmFsNCcgJ3ZhbDUnIFxn CitcZW5kcGlwZWxpbmUKKworLS0gc3RhcnRwaXBlbGluZSBzaG91bGRuJ3QgaGF2ZSBhbnkgZWZm ZWN0IGlmIGFscmVhZHkgaW4gYSBwaXBlbGluZQorXHN0YXJ0cGlwZWxpbmUKK1xzdGFydHBpcGVs aW5lCitTRUxFQ1QgJDEgXGJpbmQgJ3ZhbDEnIFxnCitcZW5kcGlwZWxpbmUKKworLS0gQ29udmVy dCBhbiBpbXBsaWNpdCB0eCBibG9jayB0byBhbiBleHBsaWNpdCB0eCBibG9jaworXHN0YXJ0cGlw ZWxpbmUKK0lOU0VSVCBJTlRPIHBzcWxfcGlwZWxpbmUgVkFMVUVTICgkMSkgXGJpbmQgMSBcZwor QkVHSU4gXGJpbmQgXGcKK0lOU0VSVCBJTlRPIHBzcWxfcGlwZWxpbmUgVkFMVUVTICgkMSkgXGJp bmQgMiBcZworUk9MTEJBQ0sgXGJpbmQgXGcKK1xlbmRwaXBlbGluZQorCistLSBNdWx0aXBsZSBl eHBsaWNpdCB0cmFuc2FjdGlvbnMKK1xzdGFydHBpcGVsaW5lCitCRUdJTiBcYmluZCBcZworSU5T RVJUIElOVE8gcHNxbF9waXBlbGluZSBWQUxVRVMgKCQxKSBcYmluZCAxIFxnCitST0xMQkFDSyBc YmluZCBcZworQkVHSU4gXGJpbmQgXGcKK0lOU0VSVCBJTlRPIHBzcWxfcGlwZWxpbmUgVkFMVUVT ICgkMSkgXGJpbmQgMSBcZworQ09NTUlUIFxiaW5kIFxnCitcZW5kcGlwZWxpbmUKKworLS0gQ09Q WSBGUk9NIFNURElOCitcc3RhcnRwaXBlbGluZQorU0VMRUNUICQxIFxiaW5kICd2YWwxJyBcZwor Q09QWSBwc3FsX3BpcGVsaW5lIEZST00gU1RESU4gXGJpbmQgXGcKK1xlbmRwaXBlbGluZQorMgl0 ZXN0MgorXC4KKworLS0gQ09QWSBGUk9NIFNURElOIHdpdGggXGZsdXNocmVxdWVzdCArIFxnZXRy ZXN1bHRzCitcc3RhcnRwaXBlbGluZQorU0VMRUNUICQxIFxiaW5kICd2YWwxJyBcZworQ09QWSBw c3FsX3BpcGVsaW5lIEZST00gU1RESU4gXGJpbmQgXGcKK1xmbHVzaHJlcXVlc3QKK1xnZXRyZXN1 bHRzCiszCXRlc3QzCitcLgorXGVuZHBpcGVsaW5lCisKKy0tIENPUFkgRlJPTSBTVERJTiB3aXRo IFxzeW5jcGlwZWxpbmUgKyBcZ2V0cmVzdWx0cworXHN0YXJ0cGlwZWxpbmUKK1NFTEVDVCAkMSBc YmluZCAndmFsMScgXGcKK0NPUFkgcHNxbF9waXBlbGluZSBGUk9NIFNURElOIFxiaW5kIFxnCitc c3luY3BpcGVsaW5lCitcZ2V0cmVzdWx0cworNAl0ZXN0NAorXC4KK1xlbmRwaXBlbGluZQorCist LSBDT1BZIFRPIFNURE9VVAorXHN0YXJ0cGlwZWxpbmUKK1NFTEVDVCAkMSBcYmluZCAndmFsMScg XGcKK2NvcHkgcHNxbF9waXBlbGluZSBUTyBTVERPVVQgXGJpbmQgXGcKK1xlbmRwaXBlbGluZQor CistLSBDT1BZIFRPIFNURE9VVCB3aXRoIFxmbHVzaHJlcXVlc3QgKyBcZ2V0cmVzdWx0cworXHN0 YXJ0cGlwZWxpbmUKK1NFTEVDVCAkMSBcYmluZCAndmFsMScgXGcKK2NvcHkgcHNxbF9waXBlbGlu ZSBUTyBTVERPVVQgXGJpbmQgXGcKK1xmbHVzaHJlcXVlc3QKK1xnZXRyZXN1bHRzCitcZW5kcGlw ZWxpbmUKKworLS0gQ09QWSBUTyBTVERPVVQgd2l0aCBcc3luY3BpcGVsaW5lICsgXGdldHJlc3Vs dHMKK1xzdGFydHBpcGVsaW5lCitTRUxFQ1QgJDEgXGJpbmQgJ3ZhbDEnIFxnCitjb3B5IHBzcWxf cGlwZWxpbmUgVE8gU1RET1VUIFxiaW5kIFxnCitcc3luY3BpcGVsaW5lCitcZ2V0cmVzdWx0cwor XGVuZHBpcGVsaW5lCisKKy0tIFVzZSBccGFyc2UgYW5kIFxiaW5kX25hbWVkCitcc3RhcnRwaXBl bGluZQorU0VMRUNUICQxIFxwYXJzZSAnJworU0VMRUNUICQxLCAkMiBccGFyc2UgJycKK1NFTEVD VCAkMiBccGFyc2UgcGlwZWxpbmVfMQorXGJpbmRfbmFtZWQgJycgMSAyIFxnCitcYmluZF9uYW1l ZCBwaXBlbGluZV8xIDIgXGcKK1xlbmRwaXBlbGluZQorCistLSBcZ2V0cmVzdWx0cyBkaXNwbGF5 cyBhbGwgcmVzdWx0cyBwcmVjZWRpbmcgYSBcZmx1c2hyZXF1ZXN0Citcc3RhcnRwaXBlbGluZQor U0VMRUNUICQxIFxiaW5kIDEgXGcKK1NFTEVDVCAkMSBcYmluZCAyIFxnCitcZmx1c2hyZXF1ZXN0 CitcZ2V0cmVzdWx0cworXGVuZHBpcGVsaW5lCisKKy0tIFxnZXRyZXN1bHRzIGRpc3BsYXlzIGFs bCByZXN1bHRzIHByZWNlZGluZyBhIHN5bmMKK1xzdGFydHBpcGVsaW5lCitTRUxFQ1QgJDEgXGJp bmQgMSBcZworU0VMRUNUICQxIFxiaW5kIDIgXGcKK1xzeW5jcGlwZWxpbmUKK1xnZXRyZXN1bHRz CitcZW5kcGlwZWxpbmUKKworLS0gXGdldHJlc3VsdHMgaW1tZWRpYXRlbHkgcmV0dXJucyBpZiB0 aGVyZSdzIG5vIHJlc3VsdCB0byBmZXRjaAorXHN0YXJ0cGlwZWxpbmUKK1xnZXRyZXN1bHRzCitT RUxFQ1QgJDEgXGJpbmQgMiBcZworXGdldHJlc3VsdHMKK1xmbHVzaHJlcXVlc3QKK1xlbmRwaXBl bGluZQorXGdldHJlc3VsdHMKKworLS0gXGdldHJlc3VsdHMgb25seSBmZXRjaCByZXN1bHRzIHBy ZWNlZGluZyBhIGZsdXNocmVxdWVzdAorXHN0YXJ0cGlwZWxpbmUKK1NFTEVDVCAkMSBcYmluZCAy IFxnCitcZmx1c2hyZXF1ZXN0CitTRUxFQ1QgJDEgXGJpbmQgMiBcZworXGdldHJlc3VsdHMKK1xl bmRwaXBlbGluZQorCistLSBcZ2V0cmVzdWx0cyBvbmx5IGZldGNoIHJlc3VsdHMgcHJlY2VkaW5n IGEgc3luYyBtZXNzYWdlCitcc3RhcnRwaXBlbGluZQorU0VMRUNUICQxIFxiaW5kIDIgXGcKK1xz eW5jcGlwZWxpbmUKK1NFTEVDVCAkMSBcYmluZCAyIFxnCitcZ2V0cmVzdWx0cworXGVuZHBpcGVs aW5lCisKKy0tIHVzZSBwaXBlbGluZSB3aXRoIGNodW5rZWQgcmVzdWx0cyB3aXRoIGJvdGggXGdl dHJlc3VsdHMgYW5kIFxlbmRwaXBlbGluZQorXHN0YXJ0cGlwZWxpbmUKK1xzZXQgRkVUQ0hfQ09V TlQgMTAKK1NFTEVDVCAkMSBcYmluZCAyIFxnCitcZmx1c2hyZXF1ZXN0CitcZ2V0cmVzdWx0cwor U0VMRUNUICQxIFxiaW5kIDIgXGcKK1xlbmRwaXBlbGluZQorXHVuc2V0IEZFVENIX0NPVU5UCisK Ky0tIFxnZXRyZXN1bHRzIHdpdGggc3BlY2lmaWMgbnVtYmVyIG9mIHJlcXVlc3RlZCByZXN1bHRz Citcc3RhcnRwaXBlbGluZQorU0VMRUNUICQxIFxiaW5kIDEgXGcKK1NFTEVDVCAkMSBcYmluZCAy IFxnCitTRUxFQ1QgJDEgXGJpbmQgMyBcZworXHN5bmNwaXBlbGluZQorXGdldHJlc3VsdHMgMQor U0VMRUNUICQxIFxiaW5kIDQgXGcKK1xnZXRyZXN1bHRzIDMKK1xlbmRwaXBlbGluZQorCistLSBc c3luY3BpcGVsaW5lIGNvdW50IGFzIG9uZSBjb21tYW5kIHRvIGZldGNoIGZvciBcZ2V0cmVzdWx0 cworXHN0YXJ0cGlwZWxpbmUKK1xzeW5jcGlwZWxpbmUKK1xzeW5jcGlwZWxpbmUKK1NFTEVDVCAk MSBcYmluZCAxIFxnCitcZmx1c2hyZXF1ZXN0CitcZ2V0cmVzdWx0cyAyCitcZ2V0cmVzdWx0cyAx CitcZW5kcGlwZWxpbmUKKworLS0gXGdldHJlc3VsdHMgMCBzaG91bGQgZ2V0IGFsbCByZXN1bHRz Citcc3RhcnRwaXBlbGluZQorU0VMRUNUICQxIFxiaW5kIDEgXGcKK1NFTEVDVCAkMSBcYmluZCAy IFxnCitTRUxFQ1QgJDEgXGJpbmQgMyBcZworXHN5bmNwaXBlbGluZQorXGdldHJlc3VsdHMgMAor XGVuZHBpcGVsaW5lCisKKy0tIHBpcGVsaW5pbmcgZXJyb3JzCisKKy0tIGVuZHBpcGVsaW5lIG91 dHNpZGUgb2YgcGlwZWxpbmUgc2hvdWxkIGZhaWwKK1xlbmRwaXBlbGluZQorCistLSBRdWVyeSB1 c2luZyBzaW1wbGUgcHJvdG9jb2wgc2hvdWxkIG5vdCBiZSBzZW50IGFuZCBzaG91bGQgbGVhdmUg dGhlIHBpcGVsaW5lIHVzYWJsZQorXHN0YXJ0cGlwZWxpbmUKK1NFTEVDVCAxOworU0VMRUNUICQx IFxiaW5kICd2YWwxJyBcZworXGVuZHBpcGVsaW5lCisKKy0tIEFmdGVyIGFuIGFib3J0ZWQgcGlw ZWxpbmUsIGNvbW1hbmRzIGFmdGVyIGEgc3luYyBzaG91bGQgYmUgZGlzcGxheWVkCitcc3RhcnRw aXBlbGluZQorU0VMRUNUICQxIFxiaW5kIFxnCitcc3luY3BpcGVsaW5lCitTRUxFQ1QgJDEgXGJp bmQgMSBcZworXGVuZHBpcGVsaW5lCisKKy0tIEluY29ycmVjdCBudW1iZXIgb2YgcGFyYW1ldGVy cywgdGhlIHBpcGVsaW5lIHdpbGwgYmUgYWJvcnRlZCBhbmQgZm9sbG93aW5nIHF1ZXJpZXMgd29u J3QgYmUgZXhlY3V0ZWQKK1xzdGFydHBpcGVsaW5lCitTRUxFQ1QgXGJpbmQgJ3ZhbDEnIFxnCitT RUxFQ1QgJDEgXGJpbmQgJ3ZhbDEnIFxnCitcZW5kcGlwZWxpbmUKKworLS0gQW4gZXhwbGljaXQg dHJhbnNhY3Rpb24gd2l0aCBhbiBlcnJvciBuZWVkcyB0byBiZSByb2xsYmFja2VkIGFmdGVyIHRo ZSBwaXBlbGluZQorXHN0YXJ0cGlwZWxpbmUKK0JFR0lOIFxiaW5kIFxnCitJTlNFUlQgSU5UTyBw c3FsX3BpcGVsaW5lIFZBTFVFUyAoJDEpIFxiaW5kIDEgXGcKK1JPTExCQUNLIFxiaW5kIFxnCitc ZW5kcGlwZWxpbmUKK1JPTExCQUNLOworCistLSBcd2F0Y2ggc2VuZHMgYSBzaW1wbGUgcXVlcnkg d2hpY2ggd29uJ3QgYmUgYWxsb3dlZCB3aXRoaW4gYSBwaXBlbGluZQorXHN0YXJ0cGlwZWxpbmUK K1NFTEVDVCBcYmluZCBcZworXHdhdGNoIDEKK1xlbmRwaXBlbGluZQorCistLSBcZ2Rlc2Mgc2hv dWxkIGZhaWwgYXMgc3luY2hyb25vdXMgY29tbWFuZHMgYXJlIG5vdCBhbGxvd2VkIGluIHBpcGVs aW5lLCBwaXBlbGluZSBzaG91bGQgc3RpbGwgYmUgdXNhYmxlCitcc3RhcnRwaXBlbGluZQorU0VM RUNUICQxIFxiaW5kIDEgXGdkZXNjCitTRUxFQ1QgJDEgXGJpbmQgMSBcZworXGVuZHBpcGVsaW5l CisKKy0tIFxnc2V0IGlzIG5vdCBhbGxvd2VkLCBwaXBlbGluZSBzaG91bGQgc3RpbGwgYmUgdXNh YmxlCitcc3RhcnRwaXBlbGluZQorU0VMRUNUICQxIGFzIGksICQyIGFzIGogXHBhcnNlICcnCitT RUxFQ1QgJDEgYXMgaywgJDIgYXMgbCBccGFyc2UgJ3NlY29uZCcKK1xiaW5kX25hbWVkICcnIDEg MiBcZ3NldAorXGJpbmRfbmFtZWQgc2Vjb25kIDEgMiBcZ3NldCBwcmVmMDJfIFxlY2hvIDpwcmVm MDJfaSA6cHJlZjAyX2oKK1xiaW5kX25hbWVkICcnIDEgMiBcZworXGVuZHBpcGVsaW5lCisKKy0t IFxneCBpcyBub3QgYWxsb3dlZCwgcGlwZWxpbmUgc2hvdWxkIHN0aWxsIGJlIHVzYWJsZQorXHN0 YXJ0cGlwZWxpbmUKK1NFTEVDVCAkMSBcYmluZCAxIFxneAorXHJlc2V0CitTRUxFQ1QgJDEgXGJp bmQgMSBcZworXGVuZHBpcGVsaW5lCisKKy0tIFxneCB3YXJuaW5nIHNob3VsZCBiZSBlbWl0dGVk IGluIGFuIGFib3J0ZWQgcGlwZWxpbmUKK1xzdGFydHBpcGVsaW5lCitTRUxFQ1QgJDEgXGJpbmQg XGcKK1xmbHVzaHJlcXVlc3QKK1xnZXRyZXN1bHRzCitTRUxFQ1QgJDEgXGJpbmQgMSBcZ3gKK1xl bmRwaXBlbGluZQorCistLSBcZ2V4ZWMgaXMgbm90IGFsbG93ZWQsIHBpcGVsaW5lIHNob3VsZCBz dGlsbCBiZSB1c2FibGUKK1xzdGFydHBpcGVsaW5lCitTRUxFQ1QgJ0lOU0VSVCBJTlRPIHBzcWxf cGlwZWxpbmUoYSkgU0VMRUNUIGdlbmVyYXRlX3NlcmllcygxLCAxMCknIFxwYXJzZSAnaW5zZXJ0 X3N0bXQnCitcYmluZF9uYW1lZCBpbnNlcnRfc3RtdCBcZ2V4ZWMKK1xiaW5kX25hbWVkIGluc2Vy dF9zdG10IFxnCitTRUxFQ1QgQ09VTlQoKikgRlJPTSBwc3FsX3BpcGVsaW5lIFxiaW5kIFxnCitc ZW5kcGlwZWxpbmUKKworLS0gQWZ0ZXIgYW4gZXJyb3IsIHBpcGVsaW5lIGlzIGFib3J0ZWQgYW5k IHJlcXVpcmVzIGEgc3luYyB0byBiZSByZXVzYWJsZQorXHN0YXJ0cGlwZWxpbmUKK1NFTEVDVCAk MSBcYmluZCBcZworU0VMRUNUICQxIFxiaW5kIDEgXGcKK1NFTEVDVCAkMSBccGFyc2UgYQorXGJp bmRfbmFtZWQgYSAxIFxnCitcY2xvc2UgYQorXGZsdXNocmVxdWVzdAorXGdldHJlc3VsdHMKKy0t IFBpcGVsaW5lIGlzIGFib3J0ZWQKK1NFTEVDVCAkMSBcYmluZCAxIFxnCitTRUxFQ1QgJDEgXHBh cnNlIGEKK1xiaW5kX25hbWVkIGEgMSBcZworXGNsb3NlIGEKKy0tIFN5bmMgYWxsb3dzIHBpcGVs aW5lIHRvIHJlY292ZXIKK1xzeW5jcGlwZWxpbmUKK1xnZXRyZXN1bHRzCitTRUxFQ1QgJDEgXGJp bmQgMSBcZworU0VMRUNUICQxIFxwYXJzZSBhCitcYmluZF9uYW1lZCBhIDEgXGcKK1xjbG9zZSBh CitcZmx1c2hyZXF1ZXN0CitcZ2V0cmVzdWx0cworXGVuZHBpcGVsaW5lCisKKy0tIEluIGFuIGFi b3J0ZWQgcGlwZWxpbmUsIFxnZXRyZXN1bHRzIDEgYWJvcnRlZCBjb21tYW5kcyBvbmUgYXQgYSB0 aW1lCitcc3RhcnRwaXBlbGluZQorU0VMRUNUICQxIFxiaW5kIFxnCitTRUxFQ1QgJDEgXGJpbmQg MSBcZworU0VMRUNUICQxIFxwYXJzZSBhCitcYmluZF9uYW1lZCBhIDEgXGcKK1xzeW5jcGlwZWxp bmUKK1xnZXRyZXN1bHRzIDEKK1xnZXRyZXN1bHRzIDEKK1xnZXRyZXN1bHRzIDEKK1xnZXRyZXN1 bHRzIDEKK1xnZXRyZXN1bHRzIDEKK1xlbmRwaXBlbGluZQorCistLSBUZXN0IGNodW5rZWQgcmVz dWx0cyB3aXRoIGFuIGFib3J0ZWQgcGlwZWxpbmUKK1xzdGFydHBpcGVsaW5lCitcc2V0IEZFVENI X0NPVU5UIDEwCitTRUxFQ1QgJDEgXGJpbmQgXGcKK1xmbHVzaHJlcXVlc3QKK1xnZXRyZXN1bHRz CitTRUxFQ1QgJDEgXGJpbmQgXGcKK1xlbmRwaXBlbGluZQorXHVuc2V0IEZFVENIX0NPVU5UCisK Ky0tIFxnZXRyZXN1bHRzIHJldHVybnMgYW4gZXJyb3Igd2hlbiBhbiBpbmNvcnJlY3QgbnVtYmVy IGlzIHByb3ZpZGVkCitcc3RhcnRwaXBlbGluZQorXGdldHJlc3VsdHMgLTEKK1xlbmRwaXBlbGlu ZQorCistLSBcZ2V0cmVzdWx0cyB3aGVuIHRoZXJlJ3Mgbm8gcmVzdWx0IHNob3VsZG4ndCBpbXBh Y3QgdGhlIGZvbGxvd2luZyBxdWVyeQorXGdldHJlc3VsdHMgMQorc2VsZWN0IDE7CisKKy0tIHBp cGVsaW5pbmcgYW5kIHRyYW5zYWN0aW9uIGJsb2NrIGJlaGF2aW91cgorCistLSBzZXQgbG9jYWwg d2lsbCBpc3N1ZSBhIHdhcm5pbmcgd2hlbiBtb2RpZnlpbmcgYSBHVUMgb3V0c2lkZSBvZiBhIHRy YW5zYWN0aW9uIGJsb2NrCistLSBUaGUgY2hhbmdlIHdpbGwgc3RpbGwgYmUgdmFsaWQgYXMgYSBw aXBlbGluZSBydW5zIHdpdGhpbiBhbiBpbXBsaWNpdCB0cmFuc2FjdGlvbiBibG9jaworLS0gU2Vu ZGluZyBhIHN5bmMgd2lsbCBjb21taXQgdGhlIGltcGxpY2l0IHRyYW5zYWN0aW9uIGJsb2NrLiBU aGUgZmlyc3QgY29tbWFuZCBhZnRlciBhIHN5bmMKKy0tIHdvbid0IGJlIHNlZW4gYXMgYmVsb25n aW5nIHRvIGEgcGlwZWxpbmUuCitcc3RhcnRwaXBlbGluZQorU0VUIExPQ0FMIHN0YXRlbWVudF90 aW1lb3V0PScxaCcgXGJpbmQgXGcKK1NIT1cgc3RhdGVtZW50X3RpbWVvdXQgXGJpbmQgXGcKK1xz eW5jcGlwZWxpbmUKK1NIT1cgc3RhdGVtZW50X3RpbWVvdXQgXGJpbmQgXGcKK1NFVCBMT0NBTCBz dGF0ZW1lbnRfdGltZW91dD0nMmgnIFxiaW5kIFxnCitTSE9XIHN0YXRlbWVudF90aW1lb3V0IFxi aW5kIFxnCitcZW5kcGlwZWxpbmUKKworLS0gUmVpbmRleCBjb25jdXJyZW50bHkgaXMgZm9yYmlk ZGVuIGluIHRoZSBtaWRkbGUgb2YgYSBwaXBlbGluZQorXHN0YXJ0cGlwZWxpbmUKK1NFTEVDVCAk MSBcYmluZCAxIFxnCitSRUlOREVYIFRBQkxFIENPTkNVUlJFTlRMWSBwc3FsX3BpcGVsaW5lIFxi aW5kIFxnCitTRUxFQ1QgJDEgXGJpbmQgMiBcZworXGVuZHBpcGVsaW5lCisKKy0tIFJlaW5kZXgg Y29uY3VycmVudGx5IHdpbGwgd29yayBpZiBpdCdzIHRoZSBmaXJzdCBjb21tYW5kIG9mIGEgcGlw ZWxpbmUKK1xzdGFydHBpcGVsaW5lCitSRUlOREVYIFRBQkxFIENPTkNVUlJFTlRMWSBwc3FsX3Bp cGVsaW5lIFxiaW5kIFxnCitTRUxFQ1QgJDEgXGJpbmQgMiBcZworXGVuZHBpcGVsaW5lCisKKy0t IHN1YnRyYW5zYWN0aW9ucyBhcmUgbm90IGFsbG93ZWQgaW4gcGlwZWxpbmUgbW9kZQorXHN0YXJ0 cGlwZWxpbmUKK1NBVkVQT0lOVCBhIFxiaW5kIFxnCitTRUxFQ1QgJDEgXGJpbmQgMSBcZworUk9M TEJBQ0sgVE8gU0FWRVBPSU5UIGEgXGJpbmQgXGcKK1NFTEVDVCAkMSBcYmluZCAyIFxnCitcZW5k cGlwZWxpbmUKKworLS0gTG9jayBjb21tYW5kIHdpbGwgZmFpbCBhcyBmaXJzdCBwaXBlbGluZSBj b21tYW5kIGlzIG5vdCBzZWVuIGFzIGEgdHJhbnNhY3Rpb24gYmxvY2sKK1xzdGFydHBpcGVsaW5l CitMT0NLIHBzcWxfcGlwZWxpbmUgXGJpbmQgXGcKK1NFTEVDVCAkMSBcYmluZCAyIFxnCitcZW5k cGlwZWxpbmUKKworLS0gTG9jayBjb21tYW5kIHdpbGwgc3VjY2VlZCBhZnRlciB0aGUgZmlyc3Qg Y29tbWFuZCBhcyBwaXBlbGluZSB3aWxsIGJlIHNlZW4gYXMgYW4gaW1wbGljaXQgdHJhbnNhY3Rp b24gYmxvY2sKK1xzdGFydHBpcGVsaW5lCitTRUxFQ1QgJDEgXGJpbmQgMSBcZworTE9DSyBwc3Fs X3BpcGVsaW5lIFxiaW5kIFxnCitTRUxFQ1QgJDEgXGJpbmQgMiBcZworXGVuZHBpcGVsaW5lCisK Ky0tIFZhY3V1bSBjb21tYW5kIHdpbGwgd29yayBhcyB0aGUgZmlyc3QgY29tbWFuZAorXHN0YXJ0 cGlwZWxpbmUKK1ZBQ1VVTSBwc3FsX3BpcGVsaW5lIFxiaW5kIFxnCitcZW5kcGlwZWxpbmUKKwor LS0gVmFjdXVtIGNvbW1hbmQgd2lsbCBmYWlsIHdpdGhpbiBwaXBlbGluZSBpbXBsaWNpdCB0cmFu c2FjdGlvbgorXHN0YXJ0cGlwZWxpbmUKK1NFTEVDVCAxIFxiaW5kIFxnCitWQUNVVU0gcHNxbF9w aXBlbGluZSBcYmluZCBcZworXGVuZHBpcGVsaW5lCisKKy0tIFZhY3V1bSBjb21tYW5kIHdpbGwg d29yayBhZnRlciBhIHN5bmMKK1xzdGFydHBpcGVsaW5lCitTRUxFQ1QgMSBcYmluZCBcZworXHN5 bmNwaXBlbGluZQorVkFDVVVNIHBzcWxfcGlwZWxpbmUgXGJpbmQgXGcKK1xlbmRwaXBlbGluZQot LSAKMi4zOS41IChBcHBsZSBHaXQtMTU0KQoK --000000000000b37f4f062b57fedb--