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 1tmzZZ-000u31-Gx for pgsql-hackers@arkaria.postgresql.org; Tue, 25 Feb 2025 18:22:26 +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 1tmzZW-006g22-Sd for pgsql-hackers@arkaria.postgresql.org; Tue, 25 Feb 2025 18:22:22 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tmzZW-006g1t-6l for pgsql-hackers@lists.postgresql.org; Tue, 25 Feb 2025 18:22:22 +0000 Received: from mail-pl1-x62f.google.com ([2607:f8b0:4864:20::62f]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1tmzZS-0003ea-0K for pgsql-hackers@lists.postgresql.org; Tue, 25 Feb 2025 18:22:21 +0000 Received: by mail-pl1-x62f.google.com with SMTP id d9443c01a7336-2211cd4463cso121747965ad.2 for ; Tue, 25 Feb 2025 10:22:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=j-davis-com.20230601.gappssmtp.com; s=20230601; t=1740507736; x=1741112536; darn=lists.postgresql.org; h=mime-version:user-agent:references:in-reply-to:date:cc:to:from :subject:message-id:from:to:cc:subject:date:message-id:reply-to; bh=+wcW2KpkQTmwa1PetwMH4NB+f7X+yMJFaUNdQ3gplRg=; b=crw9CUHyqKeVsGRwQFcdNKckAfQR4/dl/hw3lcy6jgXuPIKEh4w8jRpfmMgGndJ9GI wSNjK1ZFvU+CyYgV03Phl0jY/tz+D7v4OA7xIF1r5kGjYn7n55GUdv5XV1Hc8UqvhjgK K15l6K3x91Ps2KBu29AVl3H9fOUbr5xprjn2ICNGu9HfYj8PM5rWZgh9AqMhx62a88xM wIOn30UvCpkGDepGkngEju79ADEGr1iAsh5GBhgJ9gq3fymJTTMbjwEubqdOzX3gBLce JGmfiuNsITkzt+kbPtzDlwXNtLQFIUHIpImRSxKJ/B5pY6fVGF9ush+OdS9wVz70zDJm Ei4g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740507736; x=1741112536; h=mime-version:user-agent:references:in-reply-to:date:cc:to:from :subject:message-id:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=+wcW2KpkQTmwa1PetwMH4NB+f7X+yMJFaUNdQ3gplRg=; b=FX+oeSkiREU2uY8cEqYcbFe8fVvcZ3BgFSa/Zm2wzDBPJ5OWvBG15+ydauv4nMJyWe VZUtgg1vN+S7dE0G9S7quDzPDHTLtLKO4qss7gmgF0RrXyFNTIXKihlsaXPwOF7qdZgO aw5MMhVLk+9iabXd0L7dhLfrS1sFVxCQPPZ1djhMnPy1J/Wz0FrWrYln31WgjKdgg4YC Z01ZZIayVpLAINDZu7f9IRGBep8z1dpPwd60ORWm7BwFiCKSIeL5nzLyDw3cydvGkOMt Do+7pENf3tTkPhOXUIEBYaa7TvDIw79/lD6uDgoUVinUg2/w8qcRTqfEpZ5DGWGpJDny FavA== X-Forwarded-Encrypted: i=1; AJvYcCWZs0Gn4yd9KqlBdj10+5MPVL7SHE1DVGN/RHas/waM1EOPi1O9pP53nLSRATyu0hQXwiOWDPSll6aprO9u@lists.postgresql.org X-Gm-Message-State: AOJu0YwJWms3YehukDwKS2N502Zv8avmIufzpT1ZFiOwG3DoYBT0WUe8 OtD+JGnjskqYP3/jjZSqLxOTVuFeQLTga+GwXqGtSoYNskaV6YSbjcfnatgS2A== X-Gm-Gg: ASbGncs8jXC70dOecmPub3qhTEzCh70LMjlQ+OrnDM7qZzTWUyhLKRLewIKX/AtAaA/ E2TLctc3SIdZjt8pudXngbIXPvzFsL6lHiiI/R5NDlS73gWjcyvYFLPG7peoP+kwNgYoaMvpa9E 14fDdB1W87lETctS3C0/amyO+oT4Bkw0BPIqFqDf+v5MYCGJNt5IvyPnVb8kRxEqpWCSjGwpvuT ql/H7X/qZBDUSt09PKFC2/eTE8+iborfSorOewvxOAFZyQtrAqvB/uVgB5RNFykXLDeXwFsvqpQ ZrI4ew7HaZallkKXQUpTAAFfxs+UiI7v0iTJVkeqpzj/HQ6qphjv+Y8D5gi8PvIMN7Ll X-Google-Smtp-Source: AGHT+IH9tfdWTtpoI8SmRoGB1aEutHqp8BvbAKDFbxHNgKXA0SmZHVo+TgFSvMOger1V1sWPUuhFTA== X-Received: by 2002:a17:902:e54c:b0:216:2dc5:233c with SMTP id d9443c01a7336-22307e66ac5mr77525805ad.41.1740507736178; Tue, 25 Feb 2025 10:22:16 -0800 (PST) Received: from jeff-laptop.lan (c-76-102-242-158.hsd1.ca.comcast.net. [76.102.242.158]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2230a00ab18sm17533775ad.78.2025.02.25.10.22.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 25 Feb 2025 10:22:15 -0800 (PST) Message-ID: Subject: Re: Statistics Import and Export From: Jeff Davis To: Tom Lane , Andres Freund Cc: Corey Huinker , Michael Paquier , jian he , Nathan Bossart , Bruce Momjian , Matthias van de Meent , Magnus Hagander , Stephen Frost , Ashutosh Bapat , Peter Smith , PostgreSQL Hackers , alvherre@alvh.no-ip.org Date: Tue, 25 Feb 2025 10:22:13 -0800 In-Reply-To: <1457469.1740419458@sss.pgh.pa.us> References: <3670503.1740173078@sss.pgh.pa.us> <3728741.1740178078@sss.pgh.pa.us> <97b451228227c555be1a4f79c4a62ddec9a74f06.camel@j-davis.com> <1457469.1740419458@sss.pgh.pa.us> Content-Type: multipart/mixed; boundary="=-TZJLX+YlfGPWZyqXfrvw" User-Agent: Evolution 3.44.4-0ubuntu2 MIME-Version: 1.0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=-TZJLX+YlfGPWZyqXfrvw Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Mon, 2025-02-24 at 12:50 -0500, Tom Lane wrote: > Also, while working on the attached, I couldn't help forming the > opinion that we'd be better off to nuke pg_set_attribute_stats() > from orbit and require people to use pg_restore_attribute_stats(). Attached a patch to do so. The docs and tests required substantial rework, but I think it's for the better now that we aren't trying to do in-place updates. Regards, Jeff Davis --=-TZJLX+YlfGPWZyqXfrvw Content-Disposition: attachment; filename="v1-0001-Remove-redundant-pg_set_-_stats-variants.patch" Content-Type: text/x-patch; name="v1-0001-Remove-redundant-pg_set_-_stats-variants.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSBlYTQxM2VlNDhiMTAyOTk1MzBiYWZjMzEwMjM5NTI4NWI1ZWE4Y2UzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWZmIERhdmlzIDxqZWZmQGotZGF2aXMuY29tPgpEYXRlOiBN b24sIDI0IEZlYiAyMDI1IDE3OjI0OjA1IC0wODAwClN1YmplY3Q6IFtQQVRDSCB2MV0gUmVtb3Zl IHJlZHVuZGFudCBwZ19zZXRfKl9zdGF0cygpIHZhcmlhbnRzLgoKQWZ0ZXIgY29tbWl0IGYzZGFl MmFlNTgsIHRoZSBwcmltYXJ5IHB1cnBvc2Ugb2Ygc2VwYXJhdGluZyB0aGUKcGdfc2V0Xypfc3Rh dHMoKSBmcm9tIHRoZSBwZ19yZXN0b3JlXypfc3RhdHMoKSB2YXJpYW50cyB3YXMKZWxpbWluYXRl ZC4KCkxlYXZlIHBnX3Jlc3RvcmVfcmVsYXRpb25fc3RhdHMoKSBhbmQgcGdfcmVzdG9yZV9hdHRy aWJ1dGVfc3RhdHMoKSwKd2hpY2ggc2F0aXNmeSBib3RoIHB1cnBvc2VzLCBhbmQgcmVtb3ZlIHBn X3NldF9yZWxhdGlvbl9zdGF0cygpIGFuZApwZ19zZXRfYXR0cmlidXRlX3N0YXRzKCkuCgpEaXNj dXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tLzE0NTc0NjkuMTc0MDQxOTQ1OEBzc3MucGdoLnBh LnVzCi0tLQogZG9jL3NyYy9zZ21sL2Z1bmMuc2dtbCAgICAgICAgICAgICAgICAgICAgIHwgMjU0 ICsrKy0tLS0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX2Z1bmN0aW9ucy5zcWwgICB8ICAz MiAtCiBzcmMvYmFja2VuZC9zdGF0aXN0aWNzL2F0dHJpYnV0ZV9zdGF0cy5jICAgfCAgOTggKy0t CiBzcmMvYmFja2VuZC9zdGF0aXN0aWNzL3JlbGF0aW9uX3N0YXRzLmMgICAgfCAgMjQgKy0KIHNy Yy9iYWNrZW5kL3N0YXRpc3RpY3Mvc3RhdF91dGlscy5jICAgICAgICB8ICAzMCArLQogc3JjL2lu Y2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCAgICAgICAgICAgIHwgIDE0IC0KIHNyYy9pbmNsdWRl L3N0YXRpc3RpY3Mvc3RhdF91dGlscy5oICAgICAgICB8ICAgOCArLQogc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9zdGF0c19pbXBvcnQub3V0IHwgODMyICstLS0tLS0tLS0tLS0tLS0tLS0tLQog c3JjL3Rlc3QvcmVncmVzcy9zcWwvc3RhdHNfaW1wb3J0LnNxbCAgICAgIHwgNjQ4ICstLS0tLS0t LS0tLS0tLS0KIDkgZmlsZXMgY2hhbmdlZCwgMjA5IGluc2VydGlvbnMoKyksIDE3MzEgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2Z1bmMuc2dtbCBiL2RvYy9zcmMvc2dt bC9mdW5jLnNnbWwKaW5kZXggZjBjY2I3NTExMDYuLjEyMjA2ZTBjZmM2IDEwMDY0NAotLS0gYS9k b2Mvc3JjL3NnbWwvZnVuYy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9mdW5jLnNnbWwKQEAgLTMw MTgwLDY2ICszMDE4MCw2IEBAIHBvc3RncmVzPSMgU0VMRUNUICcwLzAnOjpwZ19sc24gKyBwZC5z ZWdtZW50X251bWJlciAqIHBzLnNldHRpbmc6OmludCArIDpvZmZzZXQKICAgICAgPC90aGVhZD4K IAogICAgICA8dGJvZHk+Ci0gICAgICA8cm93PgotICAgICAgIDxlbnRyeSByb2xlPSJmdW5jX3Rh YmxlX2VudHJ5Ij4KLSAgICAgICAgPHBhcmEgcm9sZT0iZnVuY19zaWduYXR1cmUiPgotICAgICAg ICAgPGluZGV4dGVybT4KLSAgICAgICAgICA8cHJpbWFyeT5wZ19zZXRfcmVsYXRpb25fc3RhdHM8 L3ByaW1hcnk+Ci0gICAgICAgICA8L2luZGV4dGVybT4KLSAgICAgICAgIDxmdW5jdGlvbj5wZ19z ZXRfcmVsYXRpb25fc3RhdHM8L2Z1bmN0aW9uPiAoCi0gICAgICAgICA8cGFyYW1ldGVyPnJlbGF0 aW9uPC9wYXJhbWV0ZXI+IDx0eXBlPnJlZ2NsYXNzPC90eXBlPgotICAgICAgICAgPG9wdGlvbmFs PiwgPHBhcmFtZXRlcj5yZWxwYWdlczwvcGFyYW1ldGVyPiA8dHlwZT5pbnRlZ2VyPC90eXBlPjwv b3B0aW9uYWw+Ci0gICAgICAgICA8b3B0aW9uYWw+LCA8cGFyYW1ldGVyPnJlbHR1cGxlczwvcGFy YW1ldGVyPiA8dHlwZT5yZWFsPC90eXBlPjwvb3B0aW9uYWw+Ci0gICAgICAgICA8b3B0aW9uYWw+ LCA8cGFyYW1ldGVyPnJlbGFsbHZpc2libGU8L3BhcmFtZXRlcj4gPHR5cGU+aW50ZWdlcjwvdHlw ZT48L29wdGlvbmFsPiApCi0gICAgICAgICA8cmV0dXJudmFsdWU+dm9pZDwvcmV0dXJudmFsdWU+ Ci0gICAgICAgIDwvcGFyYT4KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICBVcGRhdGVzIHJlbGF0 aW9uLWxldmVsIHN0YXRpc3RpY3MgZm9yIHRoZSBnaXZlbiByZWxhdGlvbiB0byB0aGUKLSAgICAg ICAgIHNwZWNpZmllZCB2YWx1ZXMuIFRoZSBwYXJhbWV0ZXJzIGNvcnJlc3BvbmQgdG8gY29sdW1u cyBpbiA8bGluawotICAgICAgICAgbGlua2VuZD0iY2F0YWxvZy1wZy1jbGFzcyI+PHN0cnVjdG5h bWU+cGdfY2xhc3M8L3N0cnVjdG5hbWU+PC9saW5rPi4gVW5zcGVjaWZpZWQKLSAgICAgICAgIG9y IDxsaXRlcmFsPk5VTEw8L2xpdGVyYWw+IHZhbHVlcyBsZWF2ZSB0aGUgc2V0dGluZyB1bmNoYW5n ZWQuCi0gICAgICAgIDwvcGFyYT4KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICBPcmRpbmFyaWx5 LCB0aGVzZSBzdGF0aXN0aWNzIGFyZSBjb2xsZWN0ZWQgYXV0b21hdGljYWxseSBvciB1cGRhdGVk Ci0gICAgICAgICBhcyBhIHBhcnQgb2YgPHhyZWYgbGlua2VuZD0ic3FsLXZhY3V1bSIvPiBvciA8 eHJlZgotICAgICAgICAgbGlua2VuZD0ic3FsLWFuYWx5emUiLz4sIHNvIGl0J3Mgbm90IG5lY2Vz c2FyeSB0byBjYWxsIHRoaXMKLSAgICAgICAgIGZ1bmN0aW9uLiBIb3dldmVyLCBpdCBtYXkgYmUg dXNlZnVsIHdoZW4gdGVzdGluZyB0aGUgZWZmZWN0cyBvZgotICAgICAgICAgc3RhdGlzdGljcyBv biB0aGUgcGxhbm5lciB0byB1bmRlcnN0YW5kIG9yIGFudGljaXBhdGUgcGxhbiBjaGFuZ2VzLgot ICAgICAgICA8L3BhcmE+Ci0gICAgICAgIDxwYXJhPgotICAgICAgICAgVGhlIGNhbGxlciBtdXN0 IGhhdmUgdGhlIDxsaXRlcmFsPk1BSU5UQUlOPC9saXRlcmFsPiBwcml2aWxlZ2Ugb24KLSAgICAg ICAgIHRoZSB0YWJsZSBvciBiZSB0aGUgb3duZXIgb2YgdGhlIGRhdGFiYXNlLgotICAgICAgICA8 L3BhcmE+Ci0gICAgICAgIDxwYXJhPgotICAgICAgICAgVGhlIHZhbHVlIG9mIDxzdHJ1Y3RmaWVs ZD5yZWxwYWdlczwvc3RydWN0ZmllbGQ+IG11c3QgYmUgZ3JlYXRlciB0aGFuCi0gICAgICAgICBv ciBlcXVhbCB0byA8bGl0ZXJhbD4tMTwvbGl0ZXJhbD4sCi0gICAgICAgICA8c3RydWN0ZmllbGQ+ cmVsdHVwbGVzPC9zdHJ1Y3RmaWVsZD4gbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8K LSAgICAgICAgIDxsaXRlcmFsPi0xLjA8L2xpdGVyYWw+LCBhbmQgPHN0cnVjdGZpZWxkPnJlbGFs bHZpc2libGU8L3N0cnVjdGZpZWxkPgotICAgICAgICAgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3Ig ZXF1YWwgdG8gPGxpdGVyYWw+MDwvbGl0ZXJhbD4uCi0gICAgICAgIDwvcGFyYT4KLSAgICAgICA8 L2VudHJ5PgotICAgICAgPC9yb3c+Ci0KLSAgICAgIDxyb3c+Ci0gICAgICAgPGVudHJ5IHJvbGU9 ImZ1bmNfdGFibGVfZW50cnkiPgotICAgICAgICA8cGFyYSByb2xlPSJmdW5jX3NpZ25hdHVyZSI+ Ci0gICAgICAgICA8aW5kZXh0ZXJtPgotICAgICAgICAgIDxwcmltYXJ5PnBnX2NsZWFyX3JlbGF0 aW9uX3N0YXRzPC9wcmltYXJ5PgotICAgICAgICAgPC9pbmRleHRlcm0+Ci0gICAgICAgICA8ZnVu Y3Rpb24+cGdfY2xlYXJfcmVsYXRpb25fc3RhdHM8L2Z1bmN0aW9uPiAoIDxwYXJhbWV0ZXI+cmVs YXRpb248L3BhcmFtZXRlcj4gPHR5cGU+cmVnY2xhc3M8L3R5cGU+ICkKLSAgICAgICAgIDxyZXR1 cm52YWx1ZT52b2lkPC9yZXR1cm52YWx1ZT4KLSAgICAgICAgPC9wYXJhPgotICAgICAgICA8cGFy YT4KLSAgICAgICAgIENsZWFycyB0YWJsZS1sZXZlbCBzdGF0aXN0aWNzIGZvciB0aGUgZ2l2ZW4g cmVsYXRpb24sIGFzIHRob3VnaCB0aGUKLSAgICAgICAgIHRhYmxlIHdhcyBuZXdseSBjcmVhdGVk LgotICAgICAgICA8L3BhcmE+Ci0gICAgICAgIDxwYXJhPgotICAgICAgICAgVGhlIGNhbGxlciBt dXN0IGhhdmUgdGhlIDxsaXRlcmFsPk1BSU5UQUlOPC9saXRlcmFsPiBwcml2aWxlZ2Ugb24KLSAg ICAgICAgIHRoZSB0YWJsZSBvciBiZSB0aGUgb3duZXIgb2YgdGhlIGRhdGFiYXNlLgotICAgICAg ICA8L3BhcmE+Ci0gICAgICAgPC9lbnRyeT4KLSAgICAgIDwvcm93PgotCiAgICAgICA8cm93Pgog ICAgICAgIDxlbnRyeSByb2xlPSJmdW5jX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJmdW5jX3Np Z25hdHVyZSI+CiAgICAgICAgIDxpbmRleHRlcm0+CkBAIC0zMDI0OCwyNiArMzAxODgsMjUgQEAg cG9zdGdyZXM9IyBTRUxFQ1QgJzAvMCc6OnBnX2xzbiArIHBkLnNlZ21lbnRfbnVtYmVyICogcHMu c2V0dGluZzo6aW50ICsgOm9mZnNldAogICAgICAgICA8ZnVuY3Rpb24+cGdfcmVzdG9yZV9yZWxh dGlvbl9zdGF0czwvZnVuY3Rpb24+ICgKICAgICAgICAgPGxpdGVyYWw+VkFSSUFESUM8L2xpdGVy YWw+IDxwYXJhbWV0ZXI+a3dhcmdzPC9wYXJhbWV0ZXI+IDx0eXBlPiJhbnkiPC90eXBlPiApCiAg ICAgICAgIDxyZXR1cm52YWx1ZT5ib29sZWFuPC9yZXR1cm52YWx1ZT4KLSAgICAgICAgPC9wYXJh PgotICAgICAgICA8cGFyYT4KLSAgICAgICAgIFNpbWlsYXIgdG8gPGZ1bmN0aW9uPnBnX3NldF9y ZWxhdGlvbl9zdGF0cygpPC9mdW5jdGlvbj4sIGJ1dCBpbnRlbmRlZAotICAgICAgICAgZm9yIGJ1 bGsgcmVzdG9yZSBvZiByZWxhdGlvbiBzdGF0aXN0aWNzLiBUaGUgdHJhY2tlZCBzdGF0aXN0aWNz IG1heQotICAgICAgICAgY2hhbmdlIGZyb20gdmVyc2lvbiB0byB2ZXJzaW9uLCBzbyB0aGUgcHJp bWFyeSBwdXJwb3NlIG9mIHRoaXMKLSAgICAgICAgIGZ1bmN0aW9uIGlzIHRvIG1haW50YWluIGEg Y29uc2lzdGVudCBmdW5jdGlvbiBzaWduYXR1cmUgdG8gYXZvaWQKLSAgICAgICAgIGVycm9ycyB3 aGVuIHJlc3RvcmluZyBzdGF0aXN0aWNzIGZyb20gcHJldmlvdXMgdmVyc2lvbnMuCi0gICAgICAg IDwvcGFyYT4KKyAgICAgICA8L3BhcmE+CiAgICAgICAgIDxwYXJhPgotICAgICAgICAgQXJndW1l bnRzIGFyZSBwYXNzZWQgYXMgcGFpcnMgb2YgPHJlcGxhY2VhYmxlPmFyZ25hbWU8L3JlcGxhY2Vh YmxlPgotICAgICAgICAgYW5kIDxyZXBsYWNlYWJsZT5hcmd2YWx1ZTwvcmVwbGFjZWFibGU+LCB3 aGVyZQotICAgICAgICAgPHJlcGxhY2VhYmxlPmFyZ25hbWU8L3JlcGxhY2VhYmxlPiBjb3JyZXNw b25kcyB0byBhIG5hbWVkIGFyZ3VtZW50IGluCi0gICAgICAgICA8ZnVuY3Rpb24+cGdfc2V0X3Jl bGF0aW9uX3N0YXRzKCk8L2Z1bmN0aW9uPiBhbmQKLSAgICAgICAgIDxyZXBsYWNlYWJsZT5hcmd2 YWx1ZTwvcmVwbGFjZWFibGU+IGlzIG9mIHRoZSBjb3JyZXNwb25kaW5nIHR5cGUuCisgICAgICAg ICBVcGRhdGVzIHRhYmxlLWxldmVsIHN0YXRpc3RpY3MuICBPcmRpbmFyaWx5LCB0aGVzZSBzdGF0 aXN0aWNzIGFyZQorICAgICAgICAgY29sbGVjdGVkIGF1dG9tYXRpY2FsbHkgb3IgdXBkYXRlZCBh cyBhIHBhcnQgb2YgPHhyZWYKKyAgICAgICAgIGxpbmtlbmQ9InNxbC12YWN1dW0iLz4gb3IgPHhy ZWYgbGlua2VuZD0ic3FsLWFuYWx5emUiLz4sIHNvIGl0J3Mgbm90CisgICAgICAgICBuZWNlc3Nh cnkgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uLiAgSG93ZXZlciwgaXQgaXMgdXNlZnVsIGFmdGVyIGEK KyAgICAgICAgIHJlc3RvcmUgdG8gZW5hYmxlIHRoZSBvcHRpbWl6ZXIgdG8gY2hvb3NlIGJldHRl ciBwbGFucyBpZgorICAgICAgICAgPGNvbW1hbmQ+QU5BTFlaRTwvY29tbWFuZD4gaGFzIG5vdCBi ZWVuIHJ1biB5ZXQuCiAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPHBhcmE+Ci0gICAgICAgICBB ZGRpdGlvbmFsbHksIHRoaXMgZnVuY3Rpb24gc3VwcG9ydHMgYXJndW1lbnQgbmFtZQotICAgICAg ICAgPGxpdGVyYWw+dmVyc2lvbjwvbGl0ZXJhbD4gb2YgdHlwZSA8dHlwZT5pbnRlZ2VyPC90eXBl Piwgd2hpY2gKLSAgICAgICAgIHNwZWNpZmllcyB0aGUgdmVyc2lvbiBmcm9tIHdoaWNoIHRoZSBz dGF0aXN0aWNzIG9yaWdpbmF0ZWQsIGltcHJvdmluZwotICAgICAgICAgaW50ZXJwcmV0YXRpb24g b2Ygb2xkZXIgc3RhdGlzdGljcy4KKyAgICAgICAgIFRoZSB0cmFja2VkIHN0YXRpc3RpY3MgbWF5 IGNoYW5nZSBmcm9tIHZlcnNpb24gdG8gdmVyc2lvbiwgc28KKyAgICAgICAgIGFyZ3VtZW50cyBh cmUgcGFzc2VkIGFzIHBhaXJzIG9mIDxyZXBsYWNlYWJsZT5hcmduYW1lPC9yZXBsYWNlYWJsZT4K KyAgICAgICAgIGFuZCA8cmVwbGFjZWFibGU+YXJndmFsdWU8L3JlcGxhY2VhYmxlPiBpbiB0aGUg Zm9ybToKKzxwcm9ncmFtbGlzdGluZz4KKyBTRUxFQ1QgcGdfcmVzdG9yZV9yZWxhdGlvbl9zdGF0 cygKKyAgICAnPHJlcGxhY2VhYmxlPmFyZzFuYW1lPC9yZXBsYWNlYWJsZT4nLCAnPHJlcGxhY2Vh YmxlPmFyZzF2YWx1ZTwvcmVwbGFjZWFibGU+Jzo6PHJlcGxhY2VhYmxlPmFyZzF0eXBlPC9yZXBs YWNlYWJsZT4sCisgICAgJzxyZXBsYWNlYWJsZT5hcmcybmFtZTwvcmVwbGFjZWFibGU+JywgJzxy ZXBsYWNlYWJsZT5hcmcydmFsdWU8L3JlcGxhY2VhYmxlPic6OjxyZXBsYWNlYWJsZT5hcmcydHlw ZTwvcmVwbGFjZWFibGU+LAorICAgICc8cmVwbGFjZWFibGU+YXJnM25hbWU8L3JlcGxhY2VhYmxl PicsICc8cmVwbGFjZWFibGU+YXJnM3ZhbHVlPC9yZXBsYWNlYWJsZT4nOjo8cmVwbGFjZWFibGU+ YXJnM3R5cGU8L3JlcGxhY2VhYmxlPik7Cis8L3Byb2dyYW1saXN0aW5nPgogICAgICAgICA8L3Bh cmE+CiAgICAgICAgIDxwYXJhPgogICAgICAgICAgRm9yIGV4YW1wbGUsIHRvIHNldCB0aGUgPHN0 cnVjdG5hbWU+cmVscGFnZXM8L3N0cnVjdG5hbWU+IGFuZApAQCAtMzAyNzcsNjIgKzMwMjE2LDM3 IEBAIHBvc3RncmVzPSMgU0VMRUNUICcwLzAnOjpwZ19sc24gKyBwZC5zZWdtZW50X251bWJlciAq IHBzLnNldHRpbmc6OmludCArIDpvZmZzZXQKICBTRUxFQ1QgcGdfcmVzdG9yZV9yZWxhdGlvbl9z dGF0cygKICAgICAncmVsYXRpb24nLCAgJ215dGFibGUnOjpyZWdjbGFzcywKICAgICAncmVscGFn ZXMnLCAgMTczOjppbnRlZ2VyLAotICAgICdyZWx0dXBsZXMnLCAxMDAwMDo6ZmxvYXQ0KTsKKyAg ICAncmVsdHVwbGVzJywgMTAwMDA6OnJlYWwpOwogPC9wcm9ncmFtbGlzdGluZz4KICAgICAgICAg PC9wYXJhPgogICAgICAgICA8cGFyYT4KLSAgICAgICAgIE1pbm9yIGVycm9ycyBhcmUgcmVwb3J0 ZWQgYXMgYSA8bGl0ZXJhbD5XQVJOSU5HPC9saXRlcmFsPiBhbmQKLSAgICAgICAgIGlnbm9yZWQs IGFuZCByZW1haW5pbmcgc3RhdGlzdGljcyB3aWxsIHN0aWxsIGJlIHJlc3RvcmVkLiBJZiBhbGwK LSAgICAgICAgIHNwZWNpZmllZCBzdGF0aXN0aWNzIGFyZSBzdWNjZXNzZnVsbHkgcmVzdG9yZWQs IHJldHVybgotICAgICAgICAgPGxpdGVyYWw+dHJ1ZTwvbGl0ZXJhbD4sIG90aGVyd2lzZSA8bGl0 ZXJhbD5mYWxzZTwvbGl0ZXJhbD4uCi0gICAgICAgIDwvcGFyYT4KLSAgICAgICA8L2VudHJ5Pgot ICAgICAgPC9yb3c+Ci0KLSAgICAgIDxyb3c+Ci0gICAgICAgPGVudHJ5IHJvbGU9ImZ1bmNfdGFi bGVfZW50cnkiPgotICAgICAgICA8cGFyYSByb2xlPSJmdW5jX3NpZ25hdHVyZSI+Ci0gICAgICAg ICA8aW5kZXh0ZXJtPgotICAgICAgICAgIDxwcmltYXJ5PnBnX3NldF9hdHRyaWJ1dGVfc3RhdHM8 L3ByaW1hcnk+Ci0gICAgICAgICA8L2luZGV4dGVybT4KLSAgICAgICAgIDxmdW5jdGlvbj5wZ19z ZXRfYXR0cmlidXRlX3N0YXRzPC9mdW5jdGlvbj4gKAotICAgICAgICAgPHBhcmFtZXRlcj5yZWxh dGlvbjwvcGFyYW1ldGVyPiA8dHlwZT5yZWdjbGFzczwvdHlwZT4sCi0gICAgICAgICA8cGFyYW1l dGVyPmF0dG5hbWU8L3BhcmFtZXRlcj4gPHR5cGU+bmFtZTwvdHlwZT4sCi0gICAgICAgICA8cGFy YW1ldGVyPmluaGVyaXRlZDwvcGFyYW1ldGVyPiA8dHlwZT5ib29sZWFuPC90eXBlPgotICAgICAg ICAgPG9wdGlvbmFsPiwgPHBhcmFtZXRlcj5udWxsX2ZyYWM8L3BhcmFtZXRlcj4gPHR5cGU+cmVh bDwvdHlwZT48L29wdGlvbmFsPgotICAgICAgICAgPG9wdGlvbmFsPiwgPHBhcmFtZXRlcj5hdmdf d2lkdGg8L3BhcmFtZXRlcj4gPHR5cGU+aW50ZWdlcjwvdHlwZT48L29wdGlvbmFsPgotICAgICAg ICAgPG9wdGlvbmFsPiwgPHBhcmFtZXRlcj5uX2Rpc3RpbmN0PC9wYXJhbWV0ZXI+IDx0eXBlPnJl YWw8L3R5cGU+PC9vcHRpb25hbD4KLSAgICAgICAgIDxvcHRpb25hbD4sIDxwYXJhbWV0ZXI+bW9z dF9jb21tb25fdmFsczwvcGFyYW1ldGVyPiA8dHlwZT50ZXh0PC90eXBlPiwgPHBhcmFtZXRlcj5t b3N0X2NvbW1vbl9mcmVxczwvcGFyYW1ldGVyPiA8dHlwZT5yZWFsW108L3R5cGU+IDwvb3B0aW9u YWw+Ci0gICAgICAgICA8b3B0aW9uYWw+LCA8cGFyYW1ldGVyPmhpc3RvZ3JhbV9ib3VuZHM8L3Bh cmFtZXRlcj4gPHR5cGU+dGV4dDwvdHlwZT4gPC9vcHRpb25hbD4KLSAgICAgICAgIDxvcHRpb25h bD4sIDxwYXJhbWV0ZXI+Y29ycmVsYXRpb248L3BhcmFtZXRlcj4gPHR5cGU+cmVhbDwvdHlwZT4g PC9vcHRpb25hbD4KLSAgICAgICAgIDxvcHRpb25hbD4sIDxwYXJhbWV0ZXI+bW9zdF9jb21tb25f ZWxlbXM8L3BhcmFtZXRlcj4gPHR5cGU+dGV4dDwvdHlwZT4sIDxwYXJhbWV0ZXI+bW9zdF9jb21t b25fZWxlbV9mcmVxczwvcGFyYW1ldGVyPiA8dHlwZT5yZWFsW108L3R5cGU+IDwvb3B0aW9uYWw+ Ci0gICAgICAgICA8b3B0aW9uYWw+LCA8cGFyYW1ldGVyPmVsZW1fY291bnRfaGlzdG9ncmFtPC9w YXJhbWV0ZXI+IDx0eXBlPnJlYWxbXTwvdHlwZT4gPC9vcHRpb25hbD4KLSAgICAgICAgIDxvcHRp b25hbD4sIDxwYXJhbWV0ZXI+cmFuZ2VfbGVuZ3RoX2hpc3RvZ3JhbTwvcGFyYW1ldGVyPiA8dHlw ZT50ZXh0PC90eXBlPiA8L29wdGlvbmFsPgotICAgICAgICAgPG9wdGlvbmFsPiwgPHBhcmFtZXRl cj5yYW5nZV9lbXB0eV9mcmFjPC9wYXJhbWV0ZXI+IDx0eXBlPnJlYWw8L3R5cGU+IDwvb3B0aW9u YWw+Ci0gICAgICAgICA8b3B0aW9uYWw+LCA8cGFyYW1ldGVyPnJhbmdlX2JvdW5kc19oaXN0b2dy YW08L3BhcmFtZXRlcj4gPHR5cGU+dGV4dDwvdHlwZT4gPC9vcHRpb25hbD4gKQotICAgICAgICAg PHJldHVybnZhbHVlPnZvaWQ8L3JldHVybnZhbHVlPgotICAgICAgICA8L3BhcmE+Ci0gICAgICAg IDxwYXJhPgotICAgICAgICAgQ3JlYXRlcyBvciB1cGRhdGVzIGF0dHJpYnV0ZS1sZXZlbCBzdGF0 aXN0aWNzIGZvciB0aGUgZ2l2ZW4gcmVsYXRpb24KLSAgICAgICAgIGFuZCBhdHRyaWJ1dGUgbmFt ZSB0byB0aGUgc3BlY2lmaWVkIHZhbHVlcy4gVGhlIHBhcmFtZXRlcnMgY29ycmVzcG9uZAotICAg ICAgICAgdG8gYXR0cmlidXRlcyBvZiB0aGUgc2FtZSBuYW1lIGZvdW5kIGluIHRoZSA8bGluawot ICAgICAgICAgbGlua2VuZD0idmlldy1wZy1zdGF0cyI+PHN0cnVjdG5hbWU+cGdfc3RhdHM8L3N0 cnVjdG5hbWU+PC9saW5rPgotICAgICAgICAgdmlldy4KKyAgICAgICAgIFRoZSBhcmd1bWVudCA8 bGl0ZXJhbD5yZWxhdGlvbjwvbGl0ZXJhbD4gd2l0aCBhIHZhbHVlIG9mIHR5cGUKKyAgICAgICAg IDx0eXBlPnJlZ2NsYXNzPC90eXBlPiBpcyByZXF1aXJlZCwgYW5kIHNwZWNpZmllcyB0aGUgdGFi bGUuIE90aGVyCisgICAgICAgICBhcmd1bWVudHMgYXJlIHRoZSBuYW1lcyBvZiBzdGF0aXN0aWNz IGNvcnJlc3BvbmRpbmcgdG8gY2VydGFpbgorICAgICAgICAgY29sdW1ucyBpbiA8bGluaworICAg ICAgICAgbGlua2VuZD0iY2F0YWxvZy1wZy1jbGFzcyI+PHN0cnVjdG5hbWU+cGdfY2xhc3M8L3N0 cnVjdG5hbWU+PC9saW5rPi4KKyAgICAgICAgIFRoZSBjdXJyZW50bHktc3VwcG9ydGVkIHJlbGF0 aW9uIHN0YXRpc3RpY3MgYXJlCisgICAgICAgICA8bGl0ZXJhbD5yZWxwYWdlczwvbGl0ZXJhbD4g d2l0aCBhIHZhbHVlIG9mIHR5cGUKKyAgICAgICAgIDx0eXBlPmludGVnZXI8L3R5cGU+LCA8bGl0 ZXJhbD5yZWx0dXBsZXM8L2xpdGVyYWw+IHdpdGggYSB2YWx1ZSBvZgorICAgICAgICAgdHlwZSA8 dHlwZT5yZWFsPC90eXBlPiwgYW5kIDxsaXRlcmFsPnJlbGFsbHZpc2libGU8L2xpdGVyYWw+IHdp dGggYQorICAgICAgICAgdmFsdWUgb2YgdHlwZSA8dHlwZT5pbnRlZ2VyPC90eXBlPi4KICAgICAg ICAgPC9wYXJhPgogICAgICAgICA8cGFyYT4KLSAgICAgICAgIE9wdGlvbmFsIHBhcmFtZXRlcnMg ZGVmYXVsdCB0byA8bGl0ZXJhbD5OVUxMPC9saXRlcmFsPiwgd2hpY2ggbGVhdmUKLSAgICAgICAg IHRoZSBjb3JyZXNwb25kaW5nIHN0YXRpc3RpYyB1bmNoYW5nZWQuCisgICAgICAgICBBZGRpdGlv bmFsbHksIHRoaXMgZnVuY3Rpb24gc3VwcG9ydHMgYXJndW1lbnQgbmFtZQorICAgICAgICAgPGxp dGVyYWw+dmVyc2lvbjwvbGl0ZXJhbD4gb2YgdHlwZSA8dHlwZT5pbnRlZ2VyPC90eXBlPiwgd2hp Y2gKKyAgICAgICAgIHNwZWNpZmllcyB0aGUgdmVyc2lvbiBmcm9tIHdoaWNoIHRoZSBzdGF0aXN0 aWNzIG9yaWdpbmF0ZWQsIGltcHJvdmluZworICAgICAgICAgaW50ZXJwcmV0YXRpb24gb2Ygc3Rh dGlzdGljcyBmcm9tIG9sZGVyIHZlcnNpb25zIG9mCisgICAgICAgICA8cHJvZHVjdG5hbWU+UG9z dGdyZVNRTDwvcHJvZHVjdG5hbWU+LgogICAgICAgICA8L3BhcmE+CiAgICAgICAgIDxwYXJhPgot ICAgICAgICAgT3JkaW5hcmlseSwgdGhlc2Ugc3RhdGlzdGljcyBhcmUgY29sbGVjdGVkIGF1dG9t YXRpY2FsbHkgb3IgdXBkYXRlZAotICAgICAgICAgYXMgYSBwYXJ0IG9mIDx4cmVmIGxpbmtlbmQ9 InNxbC12YWN1dW0iLz4gb3IgPHhyZWYKLSAgICAgICAgIGxpbmtlbmQ9InNxbC1hbmFseXplIi8+ LCBzbyBpdCdzIG5vdCBuZWNlc3NhcnkgdG8gY2FsbCB0aGlzCi0gICAgICAgICBmdW5jdGlvbi4g SG93ZXZlciwgaXQgbWF5IGJlIHVzZWZ1bCB3aGVuIHRlc3RpbmcgdGhlIGVmZmVjdHMgb2YKLSAg ICAgICAgIHN0YXRpc3RpY3Mgb24gdGhlIHBsYW5uZXIgdG8gdW5kZXJzdGFuZCBvciBhbnRpY2lw YXRlIHBsYW4gY2hhbmdlcy4KKyAgICAgICAgIE1pbm9yIGVycm9ycyBhcmUgcmVwb3J0ZWQgYXMg YSA8bGl0ZXJhbD5XQVJOSU5HPC9saXRlcmFsPiBhbmQKKyAgICAgICAgIGlnbm9yZWQsIGFuZCBy ZW1haW5pbmcgc3RhdGlzdGljcyB3aWxsIHN0aWxsIGJlIHJlc3RvcmVkLiBJZiBhbGwKKyAgICAg ICAgIHNwZWNpZmllZCBzdGF0aXN0aWNzIGFyZSBzdWNjZXNzZnVsbHkgcmVzdG9yZWQsIHJldHVy bgorICAgICAgICAgPGxpdGVyYWw+dHJ1ZTwvbGl0ZXJhbD4sIG90aGVyd2lzZSA8bGl0ZXJhbD5m YWxzZTwvbGl0ZXJhbD4uCiAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPHBhcmE+Ci0gICAgICAg ICBUaGUgY2FsbGVyIG11c3QgaGF2ZSB0aGUgPGxpdGVyYWw+TUFJTlRBSU48L2xpdGVyYWw+IHBy aXZpbGVnZSBvbgotICAgICAgICAgdGhlIHRhYmxlIG9yIGJlIHRoZSBvd25lciBvZiB0aGUgZGF0 YWJhc2UuCisgICAgICAgICBUaGUgY2FsbGVyIG11c3QgaGF2ZSB0aGUgPGxpdGVyYWw+TUFJTlRB SU48L2xpdGVyYWw+IHByaXZpbGVnZSBvbiB0aGUKKyAgICAgICAgIHRhYmxlIG9yIGJlIHRoZSBv d25lciBvZiB0aGUgZGF0YWJhc2UuCiAgICAgICAgIDwvcGFyYT4KICAgICAgICA8L2VudHJ5Pgog ICAgICAgPC9yb3c+CkBAIC0zMDM0MSwyMSArMzAyNTUsMTggQEAgcG9zdGdyZXM9IyBTRUxFQ1Qg JzAvMCc6OnBnX2xzbiArIHBkLnNlZ21lbnRfbnVtYmVyICogcHMuc2V0dGluZzo6aW50ICsgOm9m ZnNldAogICAgICAgIDxlbnRyeSByb2xlPSJmdW5jX3RhYmxlX2VudHJ5Ij4KICAgICAgICAgPHBh cmEgcm9sZT0iZnVuY19zaWduYXR1cmUiPgogICAgICAgICAgPGluZGV4dGVybT4KLSAgICAgICAg ICA8cHJpbWFyeT5wZ19jbGVhcl9hdHRyaWJ1dGVfc3RhdHM8L3ByaW1hcnk+CisgICAgICAgICAg PHByaW1hcnk+cGdfY2xlYXJfcmVsYXRpb25fc3RhdHM8L3ByaW1hcnk+CiAgICAgICAgICA8L2lu ZGV4dGVybT4KLSAgICAgICAgIDxmdW5jdGlvbj5wZ19jbGVhcl9hdHRyaWJ1dGVfc3RhdHM8L2Z1 bmN0aW9uPiAoCi0gICAgICAgICA8cGFyYW1ldGVyPnJlbGF0aW9uPC9wYXJhbWV0ZXI+IDx0eXBl PnJlZ2NsYXNzPC90eXBlPiwKLSAgICAgICAgIDxwYXJhbWV0ZXI+YXR0bmFtZTwvcGFyYW1ldGVy PiA8dHlwZT5uYW1lPC90eXBlPiwKLSAgICAgICAgIDxwYXJhbWV0ZXI+aW5oZXJpdGVkPC9wYXJh bWV0ZXI+IDx0eXBlPmJvb2xlYW48L3R5cGU+ICkKKyAgICAgICAgIDxmdW5jdGlvbj5wZ19jbGVh cl9yZWxhdGlvbl9zdGF0czwvZnVuY3Rpb24+ICggPHBhcmFtZXRlcj5yZWxhdGlvbjwvcGFyYW1l dGVyPiA8dHlwZT5yZWdjbGFzczwvdHlwZT4gKQogICAgICAgICAgPHJldHVybnZhbHVlPnZvaWQ8 L3JldHVybnZhbHVlPgogICAgICAgICA8L3BhcmE+CiAgICAgICAgIDxwYXJhPgotICAgICAgICAg Q2xlYXJzIHRhYmxlLWxldmVsIHN0YXRpc3RpY3MgZm9yIHRoZSBnaXZlbiByZWxhdGlvbiBhdHRy aWJ1dGUsIGFzCi0gICAgICAgICB0aG91Z2ggdGhlIHRhYmxlIHdhcyBuZXdseSBjcmVhdGVkLgor ICAgICAgICAgQ2xlYXJzIHRhYmxlLWxldmVsIHN0YXRpc3RpY3MgZm9yIHRoZSBnaXZlbiByZWxh dGlvbiwgYXMgdGhvdWdoIHRoZQorICAgICAgICAgdGFibGUgd2FzIG5ld2x5IGNyZWF0ZWQuCiAg ICAgICAgIDwvcGFyYT4KICAgICAgICAgPHBhcmE+Ci0gICAgICAgICBUaGUgY2FsbGVyIG11c3Qg aGF2ZSB0aGUgPGxpdGVyYWw+TUFJTlRBSU48L2xpdGVyYWw+IHByaXZpbGVnZSBvbgotICAgICAg ICAgdGhlIHRhYmxlIG9yIGJlIHRoZSBvd25lciBvZiB0aGUgZGF0YWJhc2UuCisgICAgICAgICBU aGUgY2FsbGVyIG11c3QgaGF2ZSB0aGUgPGxpdGVyYWw+TUFJTlRBSU48L2xpdGVyYWw+IHByaXZp bGVnZSBvbiB0aGUKKyAgICAgICAgIHRhYmxlIG9yIGJlIHRoZSBvd25lciBvZiB0aGUgZGF0YWJh c2UuCiAgICAgICAgIDwvcGFyYT4KICAgICAgICA8L2VudHJ5PgogICAgICAgPC9yb3c+CkBAIC0z MDM2OCwyNiArMzAyNzksMjUgQEAgcG9zdGdyZXM9IyBTRUxFQ1QgJzAvMCc6OnBnX2xzbiArIHBk LnNlZ21lbnRfbnVtYmVyICogcHMuc2V0dGluZzo6aW50ICsgOm9mZnNldAogICAgICAgICA8ZnVu Y3Rpb24+cGdfcmVzdG9yZV9hdHRyaWJ1dGVfc3RhdHM8L2Z1bmN0aW9uPiAoCiAgICAgICAgIDxs aXRlcmFsPlZBUklBRElDPC9saXRlcmFsPiA8cGFyYW1ldGVyPmt3YXJnczwvcGFyYW1ldGVyPiA8 dHlwZT4iYW55IjwvdHlwZT4gKQogICAgICAgICA8cmV0dXJudmFsdWU+Ym9vbGVhbjwvcmV0dXJu dmFsdWU+Ci0gICAgICAgIDwvcGFyYT4KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICBTaW1pbGFy IHRvIDxmdW5jdGlvbj5wZ19zZXRfYXR0cmlidXRlX3N0YXRzKCk8L2Z1bmN0aW9uPiwgYnV0Ci0g ICAgICAgICBpbnRlbmRlZCBmb3IgYnVsayByZXN0b3JlIG9mIGF0dHJpYnV0ZSBzdGF0aXN0aWNz LiBUaGUgdHJhY2tlZAotICAgICAgICAgc3RhdGlzdGljcyBtYXkgY2hhbmdlIGZyb20gdmVyc2lv biB0byB2ZXJzaW9uLCBzbyB0aGUgcHJpbWFyeSBwdXJwb3NlCi0gICAgICAgICBvZiB0aGlzIGZ1 bmN0aW9uIGlzIHRvIG1haW50YWluIGEgY29uc2lzdGVudCBmdW5jdGlvbiBzaWduYXR1cmUgdG8K LSAgICAgICAgIGF2b2lkIGVycm9ycyB3aGVuIHJlc3RvcmluZyBzdGF0aXN0aWNzIGZyb20gcHJl dmlvdXMgdmVyc2lvbnMuCi0gICAgICAgIDwvcGFyYT4KKyAgICAgICA8L3BhcmE+CiAgICAgICAg IDxwYXJhPgotICAgICAgICAgQXJndW1lbnRzIGFyZSBwYXNzZWQgYXMgcGFpcnMgb2YgPHJlcGxh Y2VhYmxlPmFyZ25hbWU8L3JlcGxhY2VhYmxlPgotICAgICAgICAgYW5kIDxyZXBsYWNlYWJsZT5h cmd2YWx1ZTwvcmVwbGFjZWFibGU+LCB3aGVyZQotICAgICAgICAgPHJlcGxhY2VhYmxlPmFyZ25h bWU8L3JlcGxhY2VhYmxlPiBjb3JyZXNwb25kcyB0byBhIG5hbWVkIGFyZ3VtZW50IGluCi0gICAg ICAgICA8ZnVuY3Rpb24+cGdfc2V0X2F0dHJpYnV0ZV9zdGF0cygpPC9mdW5jdGlvbj4gYW5kCi0g ICAgICAgICA8cmVwbGFjZWFibGU+YXJndmFsdWU8L3JlcGxhY2VhYmxlPiBpcyBvZiB0aGUgY29y cmVzcG9uZGluZyB0eXBlLgorICAgICAgICAgQ3JlYXRlIG9yIHVwZGF0ZSBjb2x1bW4tbGV2ZWwg c3RhdGlzdGljcy4gIE9yZGluYXJpbHksIHRoZXNlCisgICAgICAgICBzdGF0aXN0aWNzIGFyZSBj b2xsZWN0ZWQgYXV0b21hdGljYWxseSBvciB1cGRhdGVkIGFzIGEgcGFydCBvZiA8eHJlZgorICAg ICAgICAgbGlua2VuZD0ic3FsLXZhY3V1bSIvPiBvciA8eHJlZiBsaW5rZW5kPSJzcWwtYW5hbHl6 ZSIvPiwgc28gaXQncyBub3QKKyAgICAgICAgIG5lY2Vzc2FyeSB0byBjYWxsIHRoaXMgZnVuY3Rp b24uICBIb3dldmVyLCBpdCBpcyB1c2VmdWwgYWZ0ZXIgYQorICAgICAgICAgcmVzdG9yZSB0byBl bmFibGUgdGhlIG9wdGltaXplciB0byBjaG9vc2UgYmV0dGVyIHBsYW5zIGlmCisgICAgICAgICA8 Y29tbWFuZD5BTkFMWVpFPC9jb21tYW5kPiBoYXMgbm90IGJlZW4gcnVuIHlldC4KICAgICAgICAg PC9wYXJhPgogICAgICAgICA8cGFyYT4KLSAgICAgICAgIEFkZGl0aW9uYWxseSwgdGhpcyBmdW5j dGlvbiBzdXBwb3J0cyBhcmd1bWVudCBuYW1lCi0gICAgICAgICA8bGl0ZXJhbD52ZXJzaW9uPC9s aXRlcmFsPiBvZiB0eXBlIDx0eXBlPmludGVnZXI8L3R5cGU+LCB3aGljaAotICAgICAgICAgc3Bl Y2lmaWVzIHRoZSB2ZXJzaW9uIGZyb20gd2hpY2ggdGhlIHN0YXRpc3RpY3Mgb3JpZ2luYXRlZCwg aW1wcm92aW5nCi0gICAgICAgICBpbnRlcnByZXRhdGlvbiBvZiBvbGRlciBzdGF0aXN0aWNzLgor ICAgICAgICAgVGhlIHRyYWNrZWQgc3RhdGlzdGljcyBtYXkgY2hhbmdlIGZyb20gdmVyc2lvbiB0 byB2ZXJzaW9uLCBzbworICAgICAgICAgYXJndW1lbnRzIGFyZSBwYXNzZWQgYXMgcGFpcnMgb2Yg PHJlcGxhY2VhYmxlPmFyZ25hbWU8L3JlcGxhY2VhYmxlPgorICAgICAgICAgYW5kIDxyZXBsYWNl YWJsZT5hcmd2YWx1ZTwvcmVwbGFjZWFibGU+IGluIHRoZSBmb3JtOgorPHByb2dyYW1saXN0aW5n PgorIFNFTEVDVCBwZ19yZXN0b3JlX2F0dHJpYnV0ZV9zdGF0cygKKyAgICAnPHJlcGxhY2VhYmxl PmFyZzFuYW1lPC9yZXBsYWNlYWJsZT4nLCAnPHJlcGxhY2VhYmxlPmFyZzF2YWx1ZTwvcmVwbGFj ZWFibGU+Jzo6PHJlcGxhY2VhYmxlPmFyZzF0eXBlPC9yZXBsYWNlYWJsZT4sCisgICAgJzxyZXBs YWNlYWJsZT5hcmcybmFtZTwvcmVwbGFjZWFibGU+JywgJzxyZXBsYWNlYWJsZT5hcmcydmFsdWU8 L3JlcGxhY2VhYmxlPic6OjxyZXBsYWNlYWJsZT5hcmcydHlwZTwvcmVwbGFjZWFibGU+LAorICAg ICc8cmVwbGFjZWFibGU+YXJnM25hbWU8L3JlcGxhY2VhYmxlPicsICc8cmVwbGFjZWFibGU+YXJn M3ZhbHVlPC9yZXBsYWNlYWJsZT4nOjo8cmVwbGFjZWFibGU+YXJnM3R5cGU8L3JlcGxhY2VhYmxl Pik7Cis8L3Byb2dyYW1saXN0aW5nPgogICAgICAgICA8L3BhcmE+CiAgICAgICAgIDxwYXJhPgog ICAgICAgICAgRm9yIGV4YW1wbGUsIHRvIHNldCB0aGUgPHN0cnVjdG5hbWU+YXZnX3dpZHRoPC9z dHJ1Y3RuYW1lPiBhbmQKQEAgLTMwNDAzLDEyICszMDMxMyw1NiBAQCBwb3N0Z3Jlcz0jIFNFTEVD VCAnMC8wJzo6cGdfbHNuICsgcGQuc2VnbWVudF9udW1iZXIgKiBwcy5zZXR0aW5nOjppbnQgKyA6 b2Zmc2V0CiAgICAgJ251bGxfZnJhYycsICAgMC41OjpyZWFsKTsKIDwvcHJvZ3JhbWxpc3Rpbmc+ CiAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICBUaGUgcmVxdWlyZWQg YXJndW1lbnRzIGFyZSA8bGl0ZXJhbD5yZWxhdGlvbjwvbGl0ZXJhbD4gd2l0aCBhIHZhbHVlCisg ICAgICAgICBvZiB0eXBlIDx0eXBlPnJlZ2NsYXNzPC90eXBlPiwgd2hpY2ggc3BlY2lmaWVzIHRo ZSB0YWJsZTsKKyAgICAgICAgIDxsaXRlcmFsPmF0dG5hbWU8L2xpdGVyYWw+IHdpdGggYSB2YWx1 ZSBvZiB0eXBlIDx0eXBlPm5hbWU8L3R5cGU+LAorICAgICAgICAgd2hpY2ggc3BlY2lmaWVzIHRo ZSBjb2x1bW47IGFuZCA8bGl0ZXJhbD5pbmhlcml0ZWQ8L2xpdGVyYWw+LCB3aGljaAorICAgICAg ICAgc3BlY2lmaWVzIHdoZXRoZXIgdGhlIHN0YXRpc3RpY3MgaW5jbHVkZXMgdmFsdWVzIGZyb20g Y2hpbGQgdGFibGVzLgorICAgICAgICAgT3RoZXIgYXJndW1lbnRzIGFyZSB0aGUgbmFtZXMgb2Yg c3RhdGlzdGljcyBjb3JyZXNwb25kaW5nIHRvIGNvbHVtbnMKKyAgICAgICAgIGluIDxsaW5rCisg ICAgICAgICBsaW5rZW5kPSJ2aWV3LXBnLXN0YXRzIj48c3RydWN0bmFtZT5wZ19zdGF0czwvc3Ry dWN0bmFtZT48L2xpbms+LgorICAgICAgICA8L3BhcmE+CisgICAgICAgIDxwYXJhPgorICAgICAg ICAgQWRkaXRpb25hbGx5LCB0aGlzIGZ1bmN0aW9uIHN1cHBvcnRzIGFyZ3VtZW50IG5hbWUKKyAg ICAgICAgIDxsaXRlcmFsPnZlcnNpb248L2xpdGVyYWw+IG9mIHR5cGUgPHR5cGU+aW50ZWdlcjwv dHlwZT4sIHdoaWNoCisgICAgICAgICBzcGVjaWZpZXMgdGhlIHZlcnNpb24gZnJvbSB3aGljaCB0 aGUgc3RhdGlzdGljcyBvcmlnaW5hdGVkLCBpbXByb3ZpbmcKKyAgICAgICAgIGludGVycHJldGF0 aW9uIG9mIHN0YXRpc3RpY3MgZnJvbSBvbGRlciB2ZXJzaW9ucyBvZgorICAgICAgICAgPHByb2R1 Y3RuYW1lPlBvc3RncmVTUUw8L3Byb2R1Y3RuYW1lPi4KKyAgICAgICAgPC9wYXJhPgogICAgICAg ICA8cGFyYT4KICAgICAgICAgIE1pbm9yIGVycm9ycyBhcmUgcmVwb3J0ZWQgYXMgYSA8bGl0ZXJh bD5XQVJOSU5HPC9saXRlcmFsPiBhbmQKICAgICAgICAgIGlnbm9yZWQsIGFuZCByZW1haW5pbmcg c3RhdGlzdGljcyB3aWxsIHN0aWxsIGJlIHJlc3RvcmVkLiBJZiBhbGwKICAgICAgICAgIHNwZWNp ZmllZCBzdGF0aXN0aWNzIGFyZSBzdWNjZXNzZnVsbHkgcmVzdG9yZWQsIHJldHVybgogICAgICAg ICAgPGxpdGVyYWw+dHJ1ZTwvbGl0ZXJhbD4sIG90aGVyd2lzZSA8bGl0ZXJhbD5mYWxzZTwvbGl0 ZXJhbD4uCiAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICBUaGUgY2Fs bGVyIG11c3QgaGF2ZSB0aGUgPGxpdGVyYWw+TUFJTlRBSU48L2xpdGVyYWw+IHByaXZpbGVnZSBv biB0aGUKKyAgICAgICAgIHRhYmxlIG9yIGJlIHRoZSBvd25lciBvZiB0aGUgZGF0YWJhc2UuCisg ICAgICAgIDwvcGFyYT4KKyAgICAgICA8L2VudHJ5PgorICAgICAgPC9yb3c+CisKKyAgICAgIDxy b3c+CisgICAgICAgPGVudHJ5IHJvbGU9ImZ1bmNfdGFibGVfZW50cnkiPgorICAgICAgICA8cGFy YSByb2xlPSJmdW5jX3NpZ25hdHVyZSI+CisgICAgICAgICA8aW5kZXh0ZXJtPgorICAgICAgICAg IDxwcmltYXJ5PnBnX2NsZWFyX2F0dHJpYnV0ZV9zdGF0czwvcHJpbWFyeT4KKyAgICAgICAgIDwv aW5kZXh0ZXJtPgorICAgICAgICAgPGZ1bmN0aW9uPnBnX2NsZWFyX2F0dHJpYnV0ZV9zdGF0czwv ZnVuY3Rpb24+ICgKKyAgICAgICAgIDxwYXJhbWV0ZXI+cmVsYXRpb248L3BhcmFtZXRlcj4gPHR5 cGU+cmVnY2xhc3M8L3R5cGU+LAorICAgICAgICAgPHBhcmFtZXRlcj5hdHRuYW1lPC9wYXJhbWV0 ZXI+IDx0eXBlPm5hbWU8L3R5cGU+LAorICAgICAgICAgPHBhcmFtZXRlcj5pbmhlcml0ZWQ8L3Bh cmFtZXRlcj4gPHR5cGU+Ym9vbGVhbjwvdHlwZT4gKQorICAgICAgICAgPHJldHVybnZhbHVlPnZv aWQ8L3JldHVybnZhbHVlPgorICAgICAgICA8L3BhcmE+CisgICAgICAgIDxwYXJhPgorICAgICAg ICAgQ2xlYXJzIGNvbHVtbi1sZXZlbCBzdGF0aXN0aWNzIGZvciB0aGUgZ2l2ZW4gcmVsYXRpb24g YW5kCisgICAgICAgICBhdHRyaWJ1dGUsIGFzIHRob3VnaCB0aGUgdGFibGUgd2FzIG5ld2x5IGNy ZWF0ZWQuCisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICBUaGUgY2Fs bGVyIG11c3QgaGF2ZSB0aGUgPGxpdGVyYWw+TUFJTlRBSU48L2xpdGVyYWw+IHByaXZpbGVnZSBv bgorICAgICAgICAgdGhlIHRhYmxlIG9yIGJlIHRoZSBvd25lciBvZiB0aGUgZGF0YWJhc2UuCisg ICAgICAgIDwvcGFyYT4KICAgICAgICA8L2VudHJ5PgogICAgICAgPC9yb3c+CiAgICAgIDwvdGJv ZHk+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV9mdW5jdGlvbnMuc3Fs IGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fZnVuY3Rpb25zLnNxbAppbmRleCA1OTExNTdi MWQxYi4uODY4ODhjZDMyMDEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVt X2Z1bmN0aW9ucy5zcWwKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fZnVuY3Rpb25z LnNxbApAQCAtNjM2LDM4ICs2MzYsNiBAQCBMQU5HVUFHRSBJTlRFUk5BTAogQ0FMTEVEIE9OIE5V TEwgSU5QVVQgVk9MQVRJTEUgUEFSQUxMRUwgU0FGRQogQVMgJ3BnX3N0YXRfcmVzZXRfc2xydSc7 CiAKLUNSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OCi0gIHBnX3NldF9yZWxhdGlvbl9zdGF0cyhy ZWxhdGlvbiByZWdjbGFzcywKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlbHBhZ2VzIGludGVn ZXIgREVGQVVMVCBOVUxMLAotICAgICAgICAgICAgICAgICAgICAgICAgcmVsdHVwbGVzIHJlYWwg REVGQVVMVCBOVUxMLAotICAgICAgICAgICAgICAgICAgICAgICAgcmVsYWxsdmlzaWJsZSBpbnRl Z2VyIERFRkFVTFQgTlVMTCkKLVJFVFVSTlMgdm9pZAotTEFOR1VBR0UgSU5URVJOQUwKLUNBTExF RCBPTiBOVUxMIElOUFVUIFZPTEFUSUxFCi1BUyAncGdfc2V0X3JlbGF0aW9uX3N0YXRzJzsKLQot Q1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04KLSAgcGdfc2V0X2F0dHJpYnV0ZV9zdGF0cyhyZWxh dGlvbiByZWdjbGFzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICBhdHRuYW1lIG5hbWUsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgaW5oZXJpdGVkIGJvb2wsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgbnVsbF9mcmFjIHJlYWwgREVGQVVMVCBOVUxMLAotICAgICAgICAgICAgICAgICAg ICAgICAgIGF2Z193aWR0aCBpbnRlZ2VyIERFRkFVTFQgTlVMTCwKLSAgICAgICAgICAgICAgICAg ICAgICAgICBuX2Rpc3RpbmN0IHJlYWwgREVGQVVMVCBOVUxMLAotICAgICAgICAgICAgICAgICAg ICAgICAgIG1vc3RfY29tbW9uX3ZhbHMgdGV4dCBERUZBVUxUIE5VTEwsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgbW9zdF9jb21tb25fZnJlcXMgcmVhbFtdIERFRkFVTFQgTlVMTCwKLSAgICAg ICAgICAgICAgICAgICAgICAgICBoaXN0b2dyYW1fYm91bmRzIHRleHQgREVGQVVMVCBOVUxMLAot ICAgICAgICAgICAgICAgICAgICAgICAgIGNvcnJlbGF0aW9uIHJlYWwgREVGQVVMVCBOVUxMLAot ICAgICAgICAgICAgICAgICAgICAgICAgIG1vc3RfY29tbW9uX2VsZW1zIHRleHQgREVGQVVMVCBO VUxMLAotICAgICAgICAgICAgICAgICAgICAgICAgIG1vc3RfY29tbW9uX2VsZW1fZnJlcXMgcmVh bFtdIERFRkFVTFQgTlVMTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtX2NvdW50X2hp c3RvZ3JhbSByZWFsW10gREVGQVVMVCBOVUxMLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJh bmdlX2xlbmd0aF9oaXN0b2dyYW0gdGV4dCBERUZBVUxUIE5VTEwsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgcmFuZ2VfZW1wdHlfZnJhYyByZWFsIERFRkFVTFQgTlVMTCwKLSAgICAgICAgICAg ICAgICAgICAgICAgICByYW5nZV9ib3VuZHNfaGlzdG9ncmFtIHRleHQgREVGQVVMVCBOVUxMKQot UkVUVVJOUyB2b2lkCi1MQU5HVUFHRSBJTlRFUk5BTAotQ0FMTEVEIE9OIE5VTEwgSU5QVVQgVk9M QVRJTEUKLUFTICdwZ19zZXRfYXR0cmlidXRlX3N0YXRzJzsKLQogLS0KIC0tIFRoZSBkZWZhdWx0 IHBlcm1pc3Npb25zIGZvciBmdW5jdGlvbnMgbWVhbiB0aGF0IGFueW9uZSBjYW4gZXhlY3V0ZSB0 aGVtLgogLS0gQSBudW1iZXIgb2YgZnVuY3Rpb25zIHNob3VsZG4ndCBiZSBleGVjdXRhYmxlIGJ5 IGp1c3QgYW55b25lLCBidXQgcmF0aGVyCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdGF0aXN0 aWNzL2F0dHJpYnV0ZV9zdGF0cy5jIGIvc3JjL2JhY2tlbmQvc3RhdGlzdGljcy9hdHRyaWJ1dGVf c3RhdHMuYwppbmRleCBjMGMzOThhNGJiMi4uNjZhNTY3NmM4MTAgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3N0YXRpc3RpY3MvYXR0cmlidXRlX3N0YXRzLmMKKysrIGIvc3JjL2JhY2tlbmQvc3Rh dGlzdGljcy9hdHRyaWJ1dGVfc3RhdHMuYwpAQCAtNzYsMTYgKzc2LDE2IEBAIHN0YXRpYyBzdHJ1 Y3QgU3RhdHNBcmdJbmZvIGF0dGFyZ2luZm9bXSA9CiAJW05VTV9BVFRSSUJVVEVfU1RBVFNfQVJH U10gPSB7MH0KIH07CiAKLXN0YXRpYyBib29sIGF0dHJpYnV0ZV9zdGF0aXN0aWNzX3VwZGF0ZShG dW5jdGlvbkNhbGxJbmZvIGZjaW5mbywgaW50IGVsZXZlbCk7CitzdGF0aWMgYm9vbCBhdHRyaWJ1 dGVfc3RhdGlzdGljc191cGRhdGUoRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8pOwogc3RhdGljIE5v ZGUgKmdldF9hdHRyX2V4cHIoUmVsYXRpb24gcmVsLCBpbnQgYXR0bnVtKTsKLXN0YXRpYyB2b2lk IGdldF9hdHRyX3N0YXRfdHlwZShPaWQgcmVsb2lkLCBBdHRyTnVtYmVyIGF0dG51bSwgaW50IGVs ZXZlbCwKK3N0YXRpYyB2b2lkIGdldF9hdHRyX3N0YXRfdHlwZShPaWQgcmVsb2lkLCBBdHRyTnVt YmVyIGF0dG51bSwKIAkJCQkJCQkgICBPaWQgKmF0dHR5cGlkLCBpbnQzMiAqYXR0dHlwbW9kLAog CQkJCQkJCSAgIGNoYXIgKmF0dHR5cHR5cGUsIE9pZCAqYXR0dHlwY29sbCwKIAkJCQkJCQkgICBP aWQgKmVxX29wciwgT2lkICpsdF9vcHIpOwotc3RhdGljIGJvb2wgZ2V0X2VsZW1fc3RhdF90eXBl KE9pZCBhdHR0eXBpZCwgY2hhciBhdHR0eXB0eXBlLCBpbnQgZWxldmVsLAorc3RhdGljIGJvb2wg Z2V0X2VsZW1fc3RhdF90eXBlKE9pZCBhdHR0eXBpZCwgY2hhciBhdHR0eXB0eXBlLAogCQkJCQkJ CSAgIE9pZCAqZWxlbXR5cGlkLCBPaWQgKmVsZW1fZXFfb3ByKTsKIHN0YXRpYyBEYXR1bSB0ZXh0 X3RvX3N0YXZhbHVlcyhjb25zdCBjaGFyICpzdGFuYW1lLCBGbWdySW5mbyAqYXJyYXlfaW4sIERh dHVtIGQsCi0JCQkJCQkJICAgT2lkIHR5cGlkLCBpbnQzMiB0eXBtb2QsIGludCBlbGV2ZWwsIGJv b2wgKm9rKTsKKwkJCQkJCQkgICBPaWQgdHlwaWQsIGludDMyIHR5cG1vZCwgYm9vbCAqb2spOwog c3RhdGljIHZvaWQgc2V0X3N0YXRzX3Nsb3QoRGF0dW0gKnZhbHVlcywgYm9vbCAqbnVsbHMsIGJv b2wgKnJlcGxhY2VzLAogCQkJCQkJICAgaW50MTYgc3Rha2luZCwgT2lkIHN0YW9wLCBPaWQgc3Rh Y29sbCwKIAkJCQkJCSAgIERhdHVtIHN0YW51bWJlcnMsIGJvb2wgc3RhbnVtYmVyc19pc251bGws CkBAIC0xMDksMTEgKzEwOSwxMSBAQCBzdGF0aWMgdm9pZCBpbml0X2VtcHR5X3N0YXRzX3R1cGxl KE9pZCByZWxvaWQsIGludDE2IGF0dG51bSwgYm9vbCBpbmhlcml0ZWQsCiAgKgogICogTWFqb3Ig ZXJyb3JzLCBzdWNoIGFzIHRoZSB0YWJsZSBub3QgZXhpc3RpbmcsIHRoZSBhdHRyaWJ1dGUgbm90 IGV4aXN0aW5nLAogICogb3IgYSBwZXJtaXNzaW9ucyBmYWlsdXJlIGFyZSBhbHdheXMgcmVwb3J0 ZWQgYXQgRVJST1IuIE90aGVyIGVycm9ycywgc3VjaAotICogYXMgYSBjb252ZXJzaW9uIGZhaWx1 cmUgb24gb25lIHN0YXRpc3RpYyBraW5kLCBhcmUgcmVwb3J0ZWQgYXQgJ2VsZXZlbCcsCisgKiBh cyBhIGNvbnZlcnNpb24gZmFpbHVyZSBvbiBvbmUgc3RhdGlzdGljIGtpbmQsIGFyZSByZXBvcnRl ZCBhcyBhIFdBUk5JTkcKICAqIGFuZCBvdGhlciBzdGF0aXN0aWMga2luZHMgbWF5IHN0aWxsIGJl IHVwZGF0ZWQuCiAgKi8KIHN0YXRpYyBib29sCi1hdHRyaWJ1dGVfc3RhdGlzdGljc191cGRhdGUo RnVuY3Rpb25DYWxsSW5mbyBmY2luZm8sIGludCBlbGV2ZWwpCithdHRyaWJ1dGVfc3RhdGlzdGlj c191cGRhdGUoRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8pCiB7CiAJT2lkCQkJcmVsb2lkOwogCU5h bWUJCWF0dG5hbWU7CkBAIC0xODQsMzMgKzE4NCwyOSBAQCBhdHRyaWJ1dGVfc3RhdGlzdGljc191 cGRhdGUoRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8sIGludCBlbGV2ZWwpCiAJaW5oZXJpdGVkID0g UEdfR0VUQVJHX0JPT0woSU5IRVJJVEVEX0FSRyk7CiAKIAkvKgotCSAqIENoZWNrIGFyZ3VtZW50 IHNhbml0eS4gSWYgc29tZSBhcmd1bWVudHMgYXJlIHVudXNhYmxlLCBlbWl0IGF0IGVsZXZlbAor CSAqIENoZWNrIGFyZ3VtZW50IHNhbml0eS4gSWYgc29tZSBhcmd1bWVudHMgYXJlIHVudXNhYmxl LCBlbWl0IGEgV0FSTklORwogCSAqIGFuZCBzZXQgdGhlIGNvcnJlc3BvbmRpbmcgYXJndW1lbnQg dG8gTlVMTCBpbiBmY2luZm8uCiAJICovCiAKLQlpZiAoIXN0YXRzX2NoZWNrX2FyZ19hcnJheShm Y2luZm8sIGF0dGFyZ2luZm8sIE1PU1RfQ09NTU9OX0ZSRVFTX0FSRywKLQkJCQkJCQkgICBlbGV2 ZWwpKQorCWlmICghc3RhdHNfY2hlY2tfYXJnX2FycmF5KGZjaW5mbywgYXR0YXJnaW5mbywgTU9T VF9DT01NT05fRlJFUVNfQVJHKSkKIAl7CiAJCWRvX21jdiA9IGZhbHNlOwogCQlyZXN1bHQgPSBm YWxzZTsKIAl9CiAKLQlpZiAoIXN0YXRzX2NoZWNrX2FyZ19hcnJheShmY2luZm8sIGF0dGFyZ2lu Zm8sIE1PU1RfQ09NTU9OX0VMRU1fRlJFUVNfQVJHLAotCQkJCQkJCSAgIGVsZXZlbCkpCisJaWYg KCFzdGF0c19jaGVja19hcmdfYXJyYXkoZmNpbmZvLCBhdHRhcmdpbmZvLCBNT1NUX0NPTU1PTl9F TEVNX0ZSRVFTX0FSRykpCiAJewogCQlkb19tY2VsZW0gPSBmYWxzZTsKIAkJcmVzdWx0ID0gZmFs c2U7CiAJfQotCWlmICghc3RhdHNfY2hlY2tfYXJnX2FycmF5KGZjaW5mbywgYXR0YXJnaW5mbywg RUxFTV9DT1VOVF9ISVNUT0dSQU1fQVJHLAotCQkJCQkJCSAgIGVsZXZlbCkpCisJaWYgKCFzdGF0 c19jaGVja19hcmdfYXJyYXkoZmNpbmZvLCBhdHRhcmdpbmZvLCBFTEVNX0NPVU5UX0hJU1RPR1JB TV9BUkcpKQogCXsKIAkJZG9fZGVjaGlzdCA9IGZhbHNlOwogCQlyZXN1bHQgPSBmYWxzZTsKIAl9 CiAKIAlpZiAoIXN0YXRzX2NoZWNrX2FyZ19wYWlyKGZjaW5mbywgYXR0YXJnaW5mbywKLQkJCQkJ CQkgIE1PU1RfQ09NTU9OX1ZBTFNfQVJHLCBNT1NUX0NPTU1PTl9GUkVRU19BUkcsCi0JCQkJCQkJ ICBlbGV2ZWwpKQorCQkJCQkJCSAgTU9TVF9DT01NT05fVkFMU19BUkcsIE1PU1RfQ09NTU9OX0ZS RVFTX0FSRykpCiAJewogCQlkb19tY3YgPSBmYWxzZTsKIAkJcmVzdWx0ID0gZmFsc2U7CkBAIC0y MTgsNyArMjE0LDcgQEAgYXR0cmlidXRlX3N0YXRpc3RpY3NfdXBkYXRlKEZ1bmN0aW9uQ2FsbElu Zm8gZmNpbmZvLCBpbnQgZWxldmVsKQogCiAJaWYgKCFzdGF0c19jaGVja19hcmdfcGFpcihmY2lu Zm8sIGF0dGFyZ2luZm8sCiAJCQkJCQkJICBNT1NUX0NPTU1PTl9FTEVNU19BUkcsCi0JCQkJCQkJ ICBNT1NUX0NPTU1PTl9FTEVNX0ZSRVFTX0FSRywgZWxldmVsKSkKKwkJCQkJCQkgIE1PU1RfQ09N TU9OX0VMRU1fRlJFUVNfQVJHKSkKIAl7CiAJCWRvX21jZWxlbSA9IGZhbHNlOwogCQlyZXN1bHQg PSBmYWxzZTsKQEAgLTIyNiwxNCArMjIyLDE0IEBAIGF0dHJpYnV0ZV9zdGF0aXN0aWNzX3VwZGF0 ZShGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbywgaW50IGVsZXZlbCkKIAogCWlmICghc3RhdHNfY2hl Y2tfYXJnX3BhaXIoZmNpbmZvLCBhdHRhcmdpbmZvLAogCQkJCQkJCSAgUkFOR0VfTEVOR1RIX0hJ U1RPR1JBTV9BUkcsCi0JCQkJCQkJICBSQU5HRV9FTVBUWV9GUkFDX0FSRywgZWxldmVsKSkKKwkJ CQkJCQkgIFJBTkdFX0VNUFRZX0ZSQUNfQVJHKSkKIAl7CiAJCWRvX3JhbmdlX2xlbmd0aF9oaXN0 b2dyYW0gPSBmYWxzZTsKIAkJcmVzdWx0ID0gZmFsc2U7CiAJfQogCiAJLyogZGVyaXZlIGluZm9y bWF0aW9uIGZyb20gYXR0cmlidXRlICovCi0JZ2V0X2F0dHJfc3RhdF90eXBlKHJlbG9pZCwgYXR0 bnVtLCBlbGV2ZWwsCisJZ2V0X2F0dHJfc3RhdF90eXBlKHJlbG9pZCwgYXR0bnVtLAogCQkJCQkg ICAmYXR0dHlwaWQsICZhdHR0eXBtb2QsCiAJCQkJCSAgICZhdHR0eXB0eXBlLCAmYXR0dHlwY29s bCwKIAkJCQkJICAgJmVxX29wciwgJmx0X29wcik7CkBAIC0yNDEsMTAgKzIzNywxMCBAQCBhdHRy aWJ1dGVfc3RhdGlzdGljc191cGRhdGUoRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8sIGludCBlbGV2 ZWwpCiAJLyogaWYgbmVlZGVkLCBkZXJpdmUgZWxlbWVudCB0eXBlICovCiAJaWYgKGRvX21jZWxl bSB8fCBkb19kZWNoaXN0KQogCXsKLQkJaWYgKCFnZXRfZWxlbV9zdGF0X3R5cGUoYXR0dHlwaWQs IGF0dHR5cHR5cGUsIGVsZXZlbCwKKwkJaWYgKCFnZXRfZWxlbV9zdGF0X3R5cGUoYXR0dHlwaWQs IGF0dHR5cHR5cGUsCiAJCQkJCQkJCSZlbGVtdHlwaWQsICZlbGVtX2VxX29wcikpCiAJCXsKLQkJ CWVyZXBvcnQoZWxldmVsLAorCQkJZXJlcG9ydChXQVJOSU5HLAogCQkJCQkoZXJybXNnKCJ1bmFi bGUgdG8gZGV0ZXJtaW5lIGVsZW1lbnQgdHlwZSBvZiBhdHRyaWJ1dGUgXCIlc1wiIiwgTmFtZVN0 cigqYXR0bmFtZSkpLAogCQkJCQkgZXJyZGV0YWlsKCJDYW5ub3Qgc2V0IFNUQVRJU1RJQ19LSU5E X01DRUxFTSBvciBTVEFUSVNUSUNfS0lORF9ERUNISVNULiIpKSk7CiAJCQllbGVtdHlwaWQgPSBJ bnZhbGlkT2lkOwpAQCAtMjU5LDcgKzI1NSw3IEBAIGF0dHJpYnV0ZV9zdGF0aXN0aWNzX3VwZGF0 ZShGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbywgaW50IGVsZXZlbCkKIAkvKiBoaXN0b2dyYW0gYW5k IGNvcnJlbGF0aW9uIHJlcXVpcmUgbGVzcy10aGFuIG9wZXJhdG9yICovCiAJaWYgKChkb19oaXN0 b2dyYW0gfHwgZG9fY29ycmVsYXRpb24pICYmICFPaWRJc1ZhbGlkKGx0X29wcikpCiAJewotCQll cmVwb3J0KGVsZXZlbCwKKwkJZXJlcG9ydChXQVJOSU5HLAogCQkJCShlcnJjb2RlKEVSUkNPREVf SU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAogCQkJCSBlcnJtc2coImNvdWxkIG5vdCBkZXRlcm1p bmUgbGVzcy10aGFuIG9wZXJhdG9yIGZvciBhdHRyaWJ1dGUgXCIlc1wiIiwgTmFtZVN0cigqYXR0 bmFtZSkpLAogCQkJCSBlcnJkZXRhaWwoIkNhbm5vdCBzZXQgU1RBVElTVElDX0tJTkRfSElTVE9H UkFNIG9yIFNUQVRJU1RJQ19LSU5EX0NPUlJFTEFUSU9OLiIpKSk7CkBAIC0yNzMsNyArMjY5LDcg QEAgYXR0cmlidXRlX3N0YXRpc3RpY3NfdXBkYXRlKEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvLCBp bnQgZWxldmVsKQogCWlmICgoZG9fcmFuZ2VfbGVuZ3RoX2hpc3RvZ3JhbSB8fCBkb19ib3VuZHNf aGlzdG9ncmFtKSAmJgogCQkhKGF0dHR5cHR5cGUgPT0gVFlQVFlQRV9SQU5HRSB8fCBhdHR0eXB0 eXBlID09IFRZUFRZUEVfTVVMVElSQU5HRSkpCiAJewotCQllcmVwb3J0KGVsZXZlbCwKKwkJZXJl cG9ydChXQVJOSU5HLAogCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFM VUUpLAogCQkJCSBlcnJtc2coImF0dHJpYnV0ZSBcIiVzXCIgaXMgbm90IGEgcmFuZ2UgdHlwZSIs IE5hbWVTdHIoKmF0dG5hbWUpKSwKIAkJCQkgZXJyZGV0YWlsKCJDYW5ub3Qgc2V0IFNUQVRJU1RJ Q19LSU5EX1JBTkdFX0xFTkdUSF9ISVNUT0dSQU0gb3IgU1RBVElTVElDX0tJTkRfQk9VTkRTX0hJ U1RPR1JBTS4iKSkpOwpAQCAtMzIyLDcgKzMxOCw3IEBAIGF0dHJpYnV0ZV9zdGF0aXN0aWNzX3Vw ZGF0ZShGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbywgaW50IGVsZXZlbCkKIAkJCQkJCQkJCQkJCSAg JmFycmF5X2luX2ZuLAogCQkJCQkJCQkJCQkJICBQR19HRVRBUkdfREFUVU0oTU9TVF9DT01NT05f VkFMU19BUkcpLAogCQkJCQkJCQkJCQkJICBhdHR0eXBpZCwgYXR0dHlwbW9kLAotCQkJCQkJCQkJ CQkJICBlbGV2ZWwsICZjb252ZXJ0ZWQpOworCQkJCQkJCQkJCQkJICAmY29udmVydGVkKTsKIAog CQlpZiAoY29udmVydGVkKQogCQl7CkBAIC0zNDQsNyArMzQwLDcgQEAgYXR0cmlidXRlX3N0YXRp c3RpY3NfdXBkYXRlKEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvLCBpbnQgZWxldmVsKQogCQlzdGF2 YWx1ZXMgPSB0ZXh0X3RvX3N0YXZhbHVlcygiaGlzdG9ncmFtX2JvdW5kcyIsCiAJCQkJCQkJCQkg ICZhcnJheV9pbl9mbiwKIAkJCQkJCQkJCSAgUEdfR0VUQVJHX0RBVFVNKEhJU1RPR1JBTV9CT1VO RFNfQVJHKSwKLQkJCQkJCQkJCSAgYXR0dHlwaWQsIGF0dHR5cG1vZCwgZWxldmVsLAorCQkJCQkJ CQkJICBhdHR0eXBpZCwgYXR0dHlwbW9kLAogCQkJCQkJCQkJICAmY29udmVydGVkKTsKIAogCQlp ZiAoY29udmVydGVkKQpAQCAtMzgyLDcgKzM3OCw3IEBAIGF0dHJpYnV0ZV9zdGF0aXN0aWNzX3Vw ZGF0ZShGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbywgaW50IGVsZXZlbCkKIAkJCQkJCQkJCSAgJmFy cmF5X2luX2ZuLAogCQkJCQkJCQkJICBQR19HRVRBUkdfREFUVU0oTU9TVF9DT01NT05fRUxFTVNf QVJHKSwKIAkJCQkJCQkJCSAgZWxlbXR5cGlkLCBhdHR0eXBtb2QsCi0JCQkJCQkJCQkgIGVsZXZl bCwgJmNvbnZlcnRlZCk7CisJCQkJCQkJCQkgICZjb252ZXJ0ZWQpOwogCiAJCWlmIChjb252ZXJ0 ZWQpCiAJCXsKQEAgLTQyMiw3ICs0MTgsNyBAQCBhdHRyaWJ1dGVfc3RhdGlzdGljc191cGRhdGUo RnVuY3Rpb25DYWxsSW5mbyBmY2luZm8sIGludCBlbGV2ZWwpCiAJCQkJCQkJCQkgICZhcnJheV9p bl9mbiwKIAkJCQkJCQkJCSAgUEdfR0VUQVJHX0RBVFVNKFJBTkdFX0JPVU5EU19ISVNUT0dSQU1f QVJHKSwKIAkJCQkJCQkJCSAgYXR0dHlwaWQsIGF0dHR5cG1vZCwKLQkJCQkJCQkJCSAgZWxldmVs LCAmY29udmVydGVkKTsKKwkJCQkJCQkJCSAgJmNvbnZlcnRlZCk7CiAKIAkJaWYgKGNvbnZlcnRl ZCkKIAkJewpAQCAtNDQ5LDcgKzQ0NSw3IEBAIGF0dHJpYnV0ZV9zdGF0aXN0aWNzX3VwZGF0ZShG dW5jdGlvbkNhbGxJbmZvIGZjaW5mbywgaW50IGVsZXZlbCkKIAkJc3RhdmFsdWVzID0gdGV4dF90 b19zdGF2YWx1ZXMoInJhbmdlX2xlbmd0aF9oaXN0b2dyYW0iLAogCQkJCQkJCQkJICAmYXJyYXlf aW5fZm4sCiAJCQkJCQkJCQkgIFBHX0dFVEFSR19EQVRVTShSQU5HRV9MRU5HVEhfSElTVE9HUkFN X0FSRyksCi0JCQkJCQkJCQkgIEZMT0FUOE9JRCwgMCwgZWxldmVsLCAmY29udmVydGVkKTsKKwkJ CQkJCQkJCSAgRkxPQVQ4T0lELCAwLCAmY29udmVydGVkKTsKIAogCQlpZiAoY29udmVydGVkKQog CQl7CkBAIC01MTcsNyArNTEzLDcgQEAgZ2V0X2F0dHJfZXhwcihSZWxhdGlvbiByZWwsIGludCBh dHRudW0pCiAgKiBEZXJpdmUgdHlwZSBpbmZvcm1hdGlvbiBmcm9tIHRoZSBhdHRyaWJ1dGUuCiAg Ki8KIHN0YXRpYyB2b2lkCi1nZXRfYXR0cl9zdGF0X3R5cGUoT2lkIHJlbG9pZCwgQXR0ck51bWJl ciBhdHRudW0sIGludCBlbGV2ZWwsCitnZXRfYXR0cl9zdGF0X3R5cGUoT2lkIHJlbG9pZCwgQXR0 ck51bWJlciBhdHRudW0sCiAJCQkJICAgT2lkICphdHR0eXBpZCwgaW50MzIgKmF0dHR5cG1vZCwK IAkJCQkgICBjaGFyICphdHR0eXB0eXBlLCBPaWQgKmF0dHR5cGNvbGwsCiAJCQkJICAgT2lkICpl cV9vcHIsIE9pZCAqbHRfb3ByKQpAQCAtNTk5LDcgKzU5NSw3IEBAIGdldF9hdHRyX3N0YXRfdHlw ZShPaWQgcmVsb2lkLCBBdHRyTnVtYmVyIGF0dG51bSwgaW50IGVsZXZlbCwKICAqIERlcml2ZSBl bGVtZW50IHR5cGUgaW5mb3JtYXRpb24gZnJvbSB0aGUgYXR0cmlidXRlIHR5cGUuCiAgKi8KIHN0 YXRpYyBib29sCi1nZXRfZWxlbV9zdGF0X3R5cGUoT2lkIGF0dHR5cGlkLCBjaGFyIGF0dHR5cHR5 cGUsIGludCBlbGV2ZWwsCitnZXRfZWxlbV9zdGF0X3R5cGUoT2lkIGF0dHR5cGlkLCBjaGFyIGF0 dHR5cHR5cGUsCiAJCQkJICAgT2lkICplbGVtdHlwaWQsIE9pZCAqZWxlbV9lcV9vcHIpCiB7CiAJ VHlwZUNhY2hlRW50cnkgKmVsZW10eXBjYWNoZTsKQEAgLTYzNCwxMyArNjMwLDEzIEBAIGdldF9l bGVtX3N0YXRfdHlwZShPaWQgYXR0dHlwaWQsIGNoYXIgYXR0dHlwdHlwZSwgaW50IGVsZXZlbCwK IC8qCiAgKiBDYXN0IGEgdGV4dCBkYXR1bSBpbnRvIGFuIGFycmF5IHdpdGggZWxlbWVudCB0eXBl IGVsZW10eXBpZC4KICAqCi0gKiBJZiBhbiBlcnJvciBpcyBlbmNvdW50ZXJlZCwgY2FwdHVyZSBp dCBhbmQgcmUtdGhyb3cgYXQgZWxldmVsLCBhbmQgc2V0IG9rCi0gKiB0byBmYWxzZS4gSWYgdGhl IHJlc3VsdGluZyBhcnJheSBjb250YWlucyBOVUxMcywgcmFpc2UgYW4gZXJyb3IgYXQgZWxldmVs Ci0gKiBhbmQgc2V0IG9rIHRvIGZhbHNlLiBPdGhlcndpc2UsIHNldCBvayB0byB0cnVlLgorICog SWYgYW4gZXJyb3IgaXMgZW5jb3VudGVyZWQsIGNhcHR1cmUgaXQgYW5kIHJlLXRocm93IGEgV0FS TklORywgYW5kIHNldCBvaworICogdG8gZmFsc2UuIElmIHRoZSByZXN1bHRpbmcgYXJyYXkgY29u dGFpbnMgTlVMTHMsIHJhaXNlIGEgV0FSTklORyBhbmQgc2V0IG9rCisgKiB0byBmYWxzZS4gT3Ro ZXJ3aXNlLCBzZXQgb2sgdG8gdHJ1ZS4KICAqLwogc3RhdGljIERhdHVtCiB0ZXh0X3RvX3N0YXZh bHVlcyhjb25zdCBjaGFyICpzdGFuYW1lLCBGbWdySW5mbyAqYXJyYXlfaW4sIERhdHVtIGQsIE9p ZCB0eXBpZCwKLQkJCQkgIGludDMyIHR5cG1vZCwgaW50IGVsZXZlbCwgYm9vbCAqb2spCisJCQkJ ICBpbnQzMiB0eXBtb2QsIGJvb2wgKm9rKQogewogCUxPQ0FMX0ZDSU5GTyhmY2luZm8sIDgpOwog CWNoYXIJICAgKnM7CkBAIC02NjcsOCArNjYzLDcgQEAgdGV4dF90b19zdGF2YWx1ZXMoY29uc3Qg Y2hhciAqc3RhbmFtZSwgRm1nckluZm8gKmFycmF5X2luLCBEYXR1bSBkLCBPaWQgdHlwaWQsCiAK IAlpZiAoZXNjb250ZXh0LmVycm9yX29jY3VycmVkKQogCXsKLQkJaWYgKGVsZXZlbCAhPSBFUlJP UikKLQkJCWVzY29udGV4dC5lcnJvcl9kYXRhLT5lbGV2ZWwgPSBlbGV2ZWw7CisJCWVzY29udGV4 dC5lcnJvcl9kYXRhLT5lbGV2ZWwgPSBXQVJOSU5HOwogCQlUaHJvd0Vycm9yRGF0YShlc2NvbnRl eHQuZXJyb3JfZGF0YSk7CiAJCSpvayA9IGZhbHNlOwogCQlyZXR1cm4gKERhdHVtKSAwOwpAQCAt Njc2LDcgKzY3MSw3IEBAIHRleHRfdG9fc3RhdmFsdWVzKGNvbnN0IGNoYXIgKnN0YW5hbWUsIEZt Z3JJbmZvICphcnJheV9pbiwgRGF0dW0gZCwgT2lkIHR5cGlkLAogCiAJaWYgKGFycmF5X2NvbnRh aW5zX251bGxzKERhdHVtR2V0QXJyYXlUeXBlUChyZXN1bHQpKSkKIAl7Ci0JCWVyZXBvcnQoZWxl dmVsLAorCQllcmVwb3J0KFdBUk5JTkcsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BB UkFNRVRFUl9WQUxVRSksCiAJCQkJIGVycm1zZygiXCIlc1wiIGFycmF5IGNhbm5vdCBjb250YWlu IE5VTEwgdmFsdWVzIiwgc3RhbmFtZSkpKTsKIAkJKm9rID0gZmFsc2U7CkBAIC04NTEsMzMgKzg0 Niw2IEBAIGluaXRfZW1wdHlfc3RhdHNfdHVwbGUoT2lkIHJlbG9pZCwgaW50MTYgYXR0bnVtLCBi b29sIGluaGVyaXRlZCwKIAl9CiB9CiAKLS8qCi0gKiBJbXBvcnQgc3RhdGlzdGljcyBmb3IgYSBn aXZlbiByZWxhdGlvbiBhdHRyaWJ1dGUuCi0gKgotICogSW5zZXJ0cyBvciByZXBsYWNlcyBhIHJv dyBpbiBwZ19zdGF0aXN0aWMgZm9yIHRoZSBnaXZlbiByZWxhdGlvbiBhbmQKLSAqIGF0dHJpYnV0 ZSBuYW1lLiBJdCB0YWtlcyBpbnB1dCBwYXJhbWV0ZXJzIHRoYXQgY29ycmVzcG9uZCB0byBjb2x1 bW5zIGluIHRoZQotICogdmlldyBwZ19zdGF0cy4KLSAqCi0gKiBQYXJhbWV0ZXJzIG51bGxfZnJh YywgYXZnX3dpZHRoLCBhbmQgbl9kaXN0aW5jdCBhbGwgY29ycmVzcG9uZCB0byBOT1QgTlVMTAot ICogY29sdW1ucyBpbiBwZ19zdGF0aXN0aWMuIFRoZSByZW1haW5pbmcgcGFyYW1ldGVycyBhbGwg YmVsb25nIHRvIGEgc3BlY2lmaWMKLSAqIHN0YWtpbmQuIFNvbWUgc3Rha2luZHMgcmVxdWlyZSBt dWx0aXBsZSBwYXJhbWV0ZXJzLCB3aGljaCBtdXN0IGJlIHNwZWNpZmllZAotICogdG9nZXRoZXIg KG9yIG5laXRoZXIgc3BlY2lmaWVkKS4KLSAqCi0gKiBQYXJhbWV0ZXJzIGFyZSBvbmx5IHN1cGVy ZmljaWFsbHkgdmFsaWRhdGVkLiBPbWl0dGluZyBhIHBhcmFtZXRlciBvcgotICogcGFzc2luZyBO VUxMIGxlYXZlcyB0aGUgc3RhdGlzdGljIHVuY2hhbmdlZC4KLSAqCi0gKiBQYXJhbWV0ZXJzIGNv cnJlc3BvbmRpbmcgdG8gQU5ZQVJSQVkgY29sdW1ucyBhcmUgaW5zdGVhZCBwYXNzZWQgaW4gYXMg dGV4dAotICogdmFsdWVzLCB3aGljaCBpcyBhIHZhbGlkIGlucHV0IHN0cmluZyBmb3IgYW4gYXJy YXkgb2YgdGhlIHR5cGUgb3IgZWxlbWVudAotICogdHlwZSBvZiB0aGUgYXR0cmlidXRlLiBBbnkg ZXJyb3IgZ2VuZXJhdGVkIGJ5IHRoZSBhcnJheV9pbigpIGZ1bmN0aW9uIHdpbGwKLSAqIGluIHR1 cm4gZmFpbCB0aGUgZnVuY3Rpb24uCi0gKi8KLURhdHVtCi1wZ19zZXRfYXR0cmlidXRlX3N0YXRz KFBHX0ZVTkNUSU9OX0FSR1MpCi17Ci0JYXR0cmlidXRlX3N0YXRpc3RpY3NfdXBkYXRlKGZjaW5m bywgRVJST1IpOwotCVBHX1JFVFVSTl9WT0lEKCk7Ci19Ci0KIC8qCiAgKiBEZWxldGUgc3RhdGlz dGljcyBmb3IgdGhlIGdpdmVuIGF0dHJpYnV0ZS4KICAqLwpAQCAtOTMzLDEwICs5MDEsMTAgQEAg cGdfcmVzdG9yZV9hdHRyaWJ1dGVfc3RhdHMoUEdfRlVOQ1RJT05fQVJHUykKIAkJCQkJCQkgSW52 YWxpZE9pZCwgTlVMTCwgTlVMTCk7CiAKIAlpZiAoIXN0YXRzX2ZpbGxfZmNpbmZvX2Zyb21fYXJn X3BhaXJzKGZjaW5mbywgcG9zaXRpb25hbF9mY2luZm8sCi0JCQkJCQkJCQkJICBhdHRhcmdpbmZv LCBXQVJOSU5HKSkKKwkJCQkJCQkJCQkgIGF0dGFyZ2luZm8pKQogCQlyZXN1bHQgPSBmYWxzZTsK IAotCWlmICghYXR0cmlidXRlX3N0YXRpc3RpY3NfdXBkYXRlKHBvc2l0aW9uYWxfZmNpbmZvLCBX QVJOSU5HKSkKKwlpZiAoIWF0dHJpYnV0ZV9zdGF0aXN0aWNzX3VwZGF0ZShwb3NpdGlvbmFsX2Zj aW5mbykpCiAJCXJlc3VsdCA9IGZhbHNlOwogCiAJUEdfUkVUVVJOX0JPT0wocmVzdWx0KTsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0YXRpc3RpY3MvcmVsYXRpb25fc3RhdHMuYyBiL3NyYy9i YWNrZW5kL3N0YXRpc3RpY3MvcmVsYXRpb25fc3RhdHMuYwppbmRleCA2NjczMTI5MGEzZS4uMTFi MWVmMmRiYzIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0YXRpc3RpY3MvcmVsYXRpb25fc3Rh dHMuYworKysgYi9zcmMvYmFja2VuZC9zdGF0aXN0aWNzL3JlbGF0aW9uX3N0YXRzLmMKQEAgLTQ4 LDEzICs0OCwxMyBAQCBzdGF0aWMgc3RydWN0IFN0YXRzQXJnSW5mbyByZWxhcmdpbmZvW10gPQog CVtOVU1fUkVMQVRJT05fU1RBVFNfQVJHU10gPSB7MH0KIH07CiAKLXN0YXRpYyBib29sIHJlbGF0 aW9uX3N0YXRpc3RpY3NfdXBkYXRlKEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvLCBpbnQgZWxldmVs KTsKK3N0YXRpYyBib29sIHJlbGF0aW9uX3N0YXRpc3RpY3NfdXBkYXRlKEZ1bmN0aW9uQ2FsbElu Zm8gZmNpbmZvKTsKIAogLyoKICAqIEludGVybmFsIGZ1bmN0aW9uIGZvciBtb2RpZnlpbmcgc3Rh dGlzdGljcyBmb3IgYSByZWxhdGlvbi4KICAqLwogc3RhdGljIGJvb2wKLXJlbGF0aW9uX3N0YXRp c3RpY3NfdXBkYXRlKEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvLCBpbnQgZWxldmVsKQorcmVsYXRp b25fc3RhdGlzdGljc191cGRhdGUoRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8pCiB7CiAJYm9vbAkJ cmVzdWx0ID0gdHJ1ZTsKIAlPaWQJCQlyZWxvaWQ7CkBAIC04Myw3ICs4Myw3IEBAIHJlbGF0aW9u X3N0YXRpc3RpY3NfdXBkYXRlKEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvLCBpbnQgZWxldmVsKQog CQlyZWx0dXBsZXMgPSBQR19HRVRBUkdfRkxPQVQ0KFJFTFRVUExFU19BUkcpOwogCQlpZiAocmVs dHVwbGVzIDwgLTEuMCkKIAkJewotCQkJZXJlcG9ydChlbGV2ZWwsCisJCQllcmVwb3J0KFdBUk5J TkcsCiAJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAogCQkJ CQkgZXJybXNnKCJyZWx0dXBsZXMgY2Fubm90IGJlIDwgLTEuMCIpKSk7CiAJCQlyZXN1bHQgPSBm YWxzZTsKQEAgLTExOCw3ICsxMTgsNyBAQCByZWxhdGlvbl9zdGF0aXN0aWNzX3VwZGF0ZShGdW5j dGlvbkNhbGxJbmZvIGZjaW5mbywgaW50IGVsZXZlbCkKIAljdHVwID0gU2VhcmNoU3lzQ2FjaGUx KFJFTE9JRCwgT2JqZWN0SWRHZXREYXR1bShyZWxvaWQpKTsKIAlpZiAoIUhlYXBUdXBsZUlzVmFs aWQoY3R1cCkpCiAJewotCQllcmVwb3J0KGVsZXZlbCwKKwkJZXJlcG9ydChXQVJOSU5HLAogCQkJ CShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX0lOX1VTRSksCiAJCQkJIGVycm1zZygicGdfY2xhc3Mg ZW50cnkgZm9yIHJlbGlkICV1IG5vdCBmb3VuZCIsIHJlbG9pZCkpKTsKIAkJdGFibGVfY2xvc2Uo Y3JlbCwgUm93RXhjbHVzaXZlTG9jayk7CkBAIC0xNjksMTYgKzE2OSw2IEBAIHJlbGF0aW9uX3N0 YXRpc3RpY3NfdXBkYXRlKEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvLCBpbnQgZWxldmVsKQogCXJl dHVybiByZXN1bHQ7CiB9CiAKLS8qCi0gKiBTZXQgc3RhdGlzdGljcyBmb3IgYSBnaXZlbiBwZ19j bGFzcyBlbnRyeS4KLSAqLwotRGF0dW0KLXBnX3NldF9yZWxhdGlvbl9zdGF0cyhQR19GVU5DVElP Tl9BUkdTKQotewotCXJlbGF0aW9uX3N0YXRpc3RpY3NfdXBkYXRlKGZjaW5mbywgRVJST1IpOwot CVBHX1JFVFVSTl9WT0lEKCk7Ci19Ci0KIC8qCiAgKiBDbGVhciBzdGF0aXN0aWNzIGZvciBhIGdp dmVuIHBnX2NsYXNzIGVudHJ5OyB0aGF0IGlzLCBzZXQgYmFjayB0byBpbml0aWFsCiAgKiBzdGF0 cyBmb3IgYSBuZXdseS1jcmVhdGVkIHRhYmxlLgpAQCAtMTk5LDcgKzE4OSw3IEBAIHBnX2NsZWFy X3JlbGF0aW9uX3N0YXRzKFBHX0ZVTkNUSU9OX0FSR1MpCiAJbmV3ZmNpbmZvLT5hcmdzWzNdLnZh bHVlID0gVUludDMyR2V0RGF0dW0oMCk7CiAJbmV3ZmNpbmZvLT5hcmdzWzNdLmlzbnVsbCA9IGZh bHNlOwogCi0JcmVsYXRpb25fc3RhdGlzdGljc191cGRhdGUobmV3ZmNpbmZvLCBFUlJPUik7CisJ cmVsYXRpb25fc3RhdGlzdGljc191cGRhdGUobmV3ZmNpbmZvKTsKIAlQR19SRVRVUk5fVk9JRCgp OwogfQogCkBAIC0yMTQsMTAgKzIwNCwxMCBAQCBwZ19yZXN0b3JlX3JlbGF0aW9uX3N0YXRzKFBH X0ZVTkNUSU9OX0FSR1MpCiAJCQkJCQkJIEludmFsaWRPaWQsIE5VTEwsIE5VTEwpOwogCiAJaWYg KCFzdGF0c19maWxsX2ZjaW5mb19mcm9tX2FyZ19wYWlycyhmY2luZm8sIHBvc2l0aW9uYWxfZmNp bmZvLAotCQkJCQkJCQkJCSAgcmVsYXJnaW5mbywgV0FSTklORykpCisJCQkJCQkJCQkJICByZWxh cmdpbmZvKSkKIAkJcmVzdWx0ID0gZmFsc2U7CiAKLQlpZiAoIXJlbGF0aW9uX3N0YXRpc3RpY3Nf dXBkYXRlKHBvc2l0aW9uYWxfZmNpbmZvLCBXQVJOSU5HKSkKKwlpZiAoIXJlbGF0aW9uX3N0YXRp c3RpY3NfdXBkYXRlKHBvc2l0aW9uYWxfZmNpbmZvKSkKIAkJcmVzdWx0ID0gZmFsc2U7CiAKIAlQ R19SRVRVUk5fQk9PTChyZXN1bHQpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RhdGlzdGlj cy9zdGF0X3V0aWxzLmMgYi9zcmMvYmFja2VuZC9zdGF0aXN0aWNzL3N0YXRfdXRpbHMuYwppbmRl eCBlNzBlYTFjZTczOC4uNTRlYWQ5MGI1YmIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0YXRp c3RpY3Mvc3RhdF91dGlscy5jCisrKyBiL3NyYy9iYWNrZW5kL3N0YXRpc3RpY3Mvc3RhdF91dGls cy5jCkBAIC00OCwxMyArNDgsMTMgQEAgc3RhdHNfY2hlY2tfcmVxdWlyZWRfYXJnKEZ1bmN0aW9u Q2FsbEluZm8gZmNpbmZvLAogICogQ2hlY2sgdGhhdCBhcmd1bWVudCBpcyBlaXRoZXIgTlVMTCBv ciBhIG9uZSBkaW1lbnNpb25hbCBhcnJheSB3aXRoIG5vCiAgKiBOVUxMcy4KICAqCi0gKiBJZiBh IHByb2JsZW0gaXMgZm91bmQsIGVtaXQgYXQgZWxldmVsLCBhbmQgcmV0dXJuIGZhbHNlLiBPdGhl cndpc2UgcmV0dXJuCisgKiBJZiBhIHByb2JsZW0gaXMgZm91bmQsIGVtaXQgYSBXQVJOSU5HLCBh bmQgcmV0dXJuIGZhbHNlLiBPdGhlcndpc2UgcmV0dXJuCiAgKiB0cnVlLgogICovCiBib29sCiBz dGF0c19jaGVja19hcmdfYXJyYXkoRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8sCiAJCQkJCSAgc3Ry dWN0IFN0YXRzQXJnSW5mbyAqYXJnaW5mbywKLQkJCQkJICBpbnQgYXJnbnVtLCBpbnQgZWxldmVs KQorCQkJCQkgIGludCBhcmdudW0pCiB7CiAJQXJyYXlUeXBlICAqYXJyOwogCkBAIC02NSw3ICs2 NSw3IEBAIHN0YXRzX2NoZWNrX2FyZ19hcnJheShGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbywKIAog CWlmIChBUlJfTkRJTShhcnIpICE9IDEpCiAJewotCQllcmVwb3J0KGVsZXZlbCwKKwkJZXJlcG9y dChXQVJOSU5HLAogCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUp LAogCQkJCSBlcnJtc2coIlwiJXNcIiBjYW5ub3QgYmUgYSBtdWx0aWRpbWVuc2lvbmFsIGFycmF5 IiwKIAkJCQkJCWFyZ2luZm9bYXJnbnVtXS5hcmduYW1lKSkpOwpAQCAtNzQsNyArNzQsNyBAQCBz dGF0c19jaGVja19hcmdfYXJyYXkoRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8sCiAKIAlpZiAoYXJy YXlfY29udGFpbnNfbnVsbHMoYXJyKSkKIAl7Ci0JCWVyZXBvcnQoZWxldmVsLAorCQllcmVwb3J0 KFdBUk5JTkcsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSks CiAJCQkJIGVycm1zZygiXCIlc1wiIGFycmF5IGNhbm5vdCBjb250YWluIE5VTEwgdmFsdWVzIiwK IAkJCQkJCWFyZ2luZm9bYXJnbnVtXS5hcmduYW1lKSkpOwpAQCAtODksMTMgKzg5LDEzIEBAIHN0 YXRzX2NoZWNrX2FyZ19hcnJheShGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbywKICAqIGEgcGFydGlj dWxhciBzdGFraW5kLCBzdWNoIGFzIG1vc3RfY29tbW9uX3ZhbHMgYW5kIG1vc3RfY29tbW9uX2Zy ZXFzIGZvcgogICogU1RBVElTVElDX0tJTkRfTUNWLgogICoKLSAqIElmIGEgcHJvYmxlbSBpcyBm b3VuZCwgZW1pdCBhdCBlbGV2ZWwsIGFuZCByZXR1cm4gZmFsc2UuIE90aGVyd2lzZSByZXR1cm4K KyAqIElmIGEgcHJvYmxlbSBpcyBmb3VuZCwgZW1pdCBhIFdBUk5JTkcsIGFuZCByZXR1cm4gZmFs c2UuIE90aGVyd2lzZSByZXR1cm4KICAqIHRydWUuCiAgKi8KIGJvb2wKIHN0YXRzX2NoZWNrX2Fy Z19wYWlyKEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvLAogCQkJCQkgc3RydWN0IFN0YXRzQXJnSW5m byAqYXJnaW5mbywKLQkJCQkJIGludCBhcmdudW0xLCBpbnQgYXJnbnVtMiwgaW50IGVsZXZlbCkK KwkJCQkJIGludCBhcmdudW0xLCBpbnQgYXJnbnVtMikKIHsKIAlpZiAoUEdfQVJHSVNOVUxMKGFy Z251bTEpICYmIFBHX0FSR0lTTlVMTChhcmdudW0yKSkKIAkJcmV0dXJuIHRydWU7CkBAIC0xMDUs NyArMTA1LDcgQEAgc3RhdHNfY2hlY2tfYXJnX3BhaXIoRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8s CiAJCWludAkJCW51bGxhcmcgPSBQR19BUkdJU05VTEwoYXJnbnVtMSkgPyBhcmdudW0xIDogYXJn bnVtMjsKIAkJaW50CQkJb3RoZXJhcmcgPSBQR19BUkdJU05VTEwoYXJnbnVtMSkgPyBhcmdudW0y IDogYXJnbnVtMTsKIAotCQllcmVwb3J0KGVsZXZlbCwKKwkJZXJlcG9ydChXQVJOSU5HLAogCQkJ CShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAogCQkJCSBlcnJtc2co IlwiJXNcIiBtdXN0IGJlIHNwZWNpZmllZCB3aGVuIFwiJXNcIiBpcyBzcGVjaWZpZWQiLAogCQkJ CQkJYXJnaW5mb1tudWxsYXJnXS5hcmduYW1lLApAQCAtMjE2LDcgKzIxNiw3IEBAIHN0YXRzX2xv Y2tfY2hlY2tfcHJpdmlsZWdlcyhPaWQgcmVsb2lkKQogICogZm91bmQuCiAgKi8KIHN0YXRpYyBp bnQKLWdldF9hcmdfYnlfbmFtZShjb25zdCBjaGFyICphcmduYW1lLCBzdHJ1Y3QgU3RhdHNBcmdJ bmZvICphcmdpbmZvLCBpbnQgZWxldmVsKQorZ2V0X2FyZ19ieV9uYW1lKGNvbnN0IGNoYXIgKmFy Z25hbWUsIHN0cnVjdCBTdGF0c0FyZ0luZm8gKmFyZ2luZm8pCiB7CiAJaW50CQkJYXJnbnVtOwog CkBAIC0yMjQsNyArMjI0LDcgQEAgZ2V0X2FyZ19ieV9uYW1lKGNvbnN0IGNoYXIgKmFyZ25hbWUs IHN0cnVjdCBTdGF0c0FyZ0luZm8gKmFyZ2luZm8sIGludCBlbGV2ZWwpCiAJCWlmIChwZ19zdHJj YXNlY21wKGFyZ25hbWUsIGFyZ2luZm9bYXJnbnVtXS5hcmduYW1lKSA9PSAwKQogCQkJcmV0dXJu IGFyZ251bTsKIAotCWVyZXBvcnQoZWxldmVsLAorCWVyZXBvcnQoV0FSTklORywKIAkJCShlcnJt c2coInVucmVjb2duaXplZCBhcmd1bWVudCBuYW1lOiBcIiVzXCIiLCBhcmduYW1lKSkpOwogCiAJ cmV0dXJuIC0xOwpAQCAtMjM0LDExICsyMzQsMTEgQEAgZ2V0X2FyZ19ieV9uYW1lKGNvbnN0IGNo YXIgKmFyZ25hbWUsIHN0cnVjdCBTdGF0c0FyZ0luZm8gKmFyZ2luZm8sIGludCBlbGV2ZWwpCiAg KiBFbnN1cmUgdGhhdCBhIGdpdmVuIGFyZ3VtZW50IG1hdGNoZWQgdGhlIGV4cGVjdGVkIHR5cGUu CiAgKi8KIHN0YXRpYyBib29sCi1zdGF0c19jaGVja19hcmdfdHlwZShjb25zdCBjaGFyICphcmdu YW1lLCBPaWQgYXJndHlwZSwgT2lkIGV4cGVjdGVkdHlwZSwgaW50IGVsZXZlbCkKK3N0YXRzX2No ZWNrX2FyZ190eXBlKGNvbnN0IGNoYXIgKmFyZ25hbWUsIE9pZCBhcmd0eXBlLCBPaWQgZXhwZWN0 ZWR0eXBlKQogewogCWlmIChhcmd0eXBlICE9IGV4cGVjdGVkdHlwZSkKIAl7Ci0JCWVyZXBvcnQo ZWxldmVsLAorCQllcmVwb3J0KFdBUk5JTkcsCiAJCQkJKGVycm1zZygiYXJndW1lbnQgXCIlc1wi IGhhcyB0eXBlIFwiJXNcIiwgZXhwZWN0ZWQgdHlwZSBcIiVzXCIiLAogCQkJCQkJYXJnbmFtZSwg Zm9ybWF0X3R5cGVfYmUoYXJndHlwZSksCiAJCQkJCQlmb3JtYXRfdHlwZV9iZShleHBlY3RlZHR5 cGUpKSkpOwpAQCAtMjYwLDggKzI2MCw3IEBAIHN0YXRzX2NoZWNrX2FyZ190eXBlKGNvbnN0IGNo YXIgKmFyZ25hbWUsIE9pZCBhcmd0eXBlLCBPaWQgZXhwZWN0ZWR0eXBlLCBpbnQgZWxlCiBib29s CiBzdGF0c19maWxsX2ZjaW5mb19mcm9tX2FyZ19wYWlycyhGdW5jdGlvbkNhbGxJbmZvIHBhaXJz X2ZjaW5mbywKIAkJCQkJCQkJIEZ1bmN0aW9uQ2FsbEluZm8gcG9zaXRpb25hbF9mY2luZm8sCi0J CQkJCQkJCSBzdHJ1Y3QgU3RhdHNBcmdJbmZvICphcmdpbmZvLAotCQkJCQkJCQkgaW50IGVsZXZl bCkKKwkJCQkJCQkJIHN0cnVjdCBTdGF0c0FyZ0luZm8gKmFyZ2luZm8pCiB7CiAJRGF0dW0JICAg KmFyZ3M7CiAJYm9vbAkgICAqYXJnbnVsbHM7CkBAIC0zMTksMTEgKzMxOCwxMCBAQCBzdGF0c19m aWxsX2ZjaW5mb19mcm9tX2FyZ19wYWlycyhGdW5jdGlvbkNhbGxJbmZvIHBhaXJzX2ZjaW5mbywK IAkJaWYgKHBnX3N0cmNhc2VjbXAoYXJnbmFtZSwgInZlcnNpb24iKSA9PSAwKQogCQkJY29udGlu dWU7CiAKLQkJYXJnbnVtID0gZ2V0X2FyZ19ieV9uYW1lKGFyZ25hbWUsIGFyZ2luZm8sIGVsZXZl bCk7CisJCWFyZ251bSA9IGdldF9hcmdfYnlfbmFtZShhcmduYW1lLCBhcmdpbmZvKTsKIAogCQlp ZiAoYXJnbnVtIDwgMCB8fCAhc3RhdHNfY2hlY2tfYXJnX3R5cGUoYXJnbmFtZSwgdHlwZXNbaSAr IDFdLAotCQkJCQkJCQkJCQkJYXJnaW5mb1thcmdudW1dLmFyZ3R5cGUsCi0JCQkJCQkJCQkJCQll bGV2ZWwpKQorCQkJCQkJCQkJCQkJYXJnaW5mb1thcmdudW1dLmFyZ3R5cGUpKQogCQl7CiAJCQly ZXN1bHQgPSBmYWxzZTsKIAkJCWNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0 YWxvZy9wZ19wcm9jLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKaW5kZXgg YWY5NTQ2ZGUyM2QuLjlmMGM2NzZlMjJkIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9n L3BnX3Byb2MuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKQEAgLTEy NDI5LDEzICsxMjQyOSw2IEBACiAgIHByb2FyZ25hbWVzID0+ICd7a3dhcmdzfScsCiAgIHByb2Fy Z21vZGVzID0+ICd7dn0nLAogICBwcm9zcmMgPT4gJ3BnX3Jlc3RvcmVfYXR0cmlidXRlX3N0YXRz JyB9LAoteyBvaWQgPT4gJzkxNjInLAotICBkZXNjciA9PiAnc2V0IHN0YXRpc3RpY3Mgb24gYXR0 cmlidXRlJywKLSAgcHJvbmFtZSA9PiAncGdfc2V0X2F0dHJpYnV0ZV9zdGF0cycsIHByb3ZvbGF0 aWxlID0+ICd2JywgcHJvaXNzdHJpY3QgPT4gJ2YnLAotICBwcm9wYXJhbGxlbCA9PiAndScsIHBy b3JldHR5cGUgPT4gJ3ZvaWQnLAotICBwcm9hcmd0eXBlcyA9PiAncmVnY2xhc3MgbmFtZSBib29s IGZsb2F0NCBpbnQ0IGZsb2F0NCB0ZXh0IF9mbG9hdDQgdGV4dCBmbG9hdDQgdGV4dCBfZmxvYXQ0 IF9mbG9hdDQgdGV4dCBmbG9hdDQgdGV4dCcsCi0gIHByb2FyZ25hbWVzID0+ICd7cmVsYXRpb24s YXR0bmFtZSxpbmhlcml0ZWQsbnVsbF9mcmFjLGF2Z193aWR0aCxuX2Rpc3RpbmN0LG1vc3RfY29t bW9uX3ZhbHMsbW9zdF9jb21tb25fZnJlcXMsaGlzdG9ncmFtX2JvdW5kcyxjb3JyZWxhdGlvbixt b3N0X2NvbW1vbl9lbGVtcyxtb3N0X2NvbW1vbl9lbGVtX2ZyZXFzLGVsZW1fY291bnRfaGlzdG9n cmFtLHJhbmdlX2xlbmd0aF9oaXN0b2dyYW0scmFuZ2VfZW1wdHlfZnJhYyxyYW5nZV9ib3VuZHNf aGlzdG9ncmFtfScsCi0gIHByb3NyYyA9PiAncGdfc2V0X2F0dHJpYnV0ZV9zdGF0cycgfSwKIHsg b2lkID0+ICc5MTYzJywKICAgZGVzY3IgPT4gJ2NsZWFyIHN0YXRpc3RpY3Mgb24gYXR0cmlidXRl JywKICAgcHJvbmFtZSA9PiAncGdfY2xlYXJfYXR0cmlidXRlX3N0YXRzJywgcHJvdm9sYXRpbGUg PT4gJ3YnLCBwcm9pc3N0cmljdCA9PiAnZicsCkBAIC0xMjQ0MywxMyArMTI0MzYsNiBAQAogICBw cm9hcmd0eXBlcyA9PiAncmVnY2xhc3MgbmFtZSBib29sJywKICAgcHJvYXJnbmFtZXMgPT4gJ3ty ZWxhdGlvbixhdHRuYW1lLGluaGVyaXRlZH0nLAogICBwcm9zcmMgPT4gJ3BnX2NsZWFyX2F0dHJp YnV0ZV9zdGF0cycgfSwKLXsgb2lkID0+ICc5OTQ0JywKLSAgZGVzY3IgPT4gJ3NldCBzdGF0aXN0 aWNzIG9uIHJlbGF0aW9uJywKLSAgcHJvbmFtZSA9PiAncGdfc2V0X3JlbGF0aW9uX3N0YXRzJywg cHJvdm9sYXRpbGUgPT4gJ3YnLCBwcm9pc3N0cmljdCA9PiAnZicsCi0gIHByb3BhcmFsbGVsID0+ ICd1JywgcHJvcmV0dHlwZSA9PiAndm9pZCcsCi0gIHByb2FyZ3R5cGVzID0+ICdyZWdjbGFzcyBp bnQ0IGZsb2F0NCBpbnQ0JywKLSAgcHJvYXJnbmFtZXMgPT4gJ3tyZWxhdGlvbixyZWxwYWdlcyxy ZWx0dXBsZXMscmVsYWxsdmlzaWJsZX0nLAotICBwcm9zcmMgPT4gJ3BnX3NldF9yZWxhdGlvbl9z dGF0cycgfSwKIHsgb2lkID0+ICc5OTQ1JywKICAgZGVzY3IgPT4gJ2NsZWFyIHN0YXRpc3RpY3Mg b24gcmVsYXRpb24nLAogICBwcm9uYW1lID0+ICdwZ19jbGVhcl9yZWxhdGlvbl9zdGF0cycsIHBy b3ZvbGF0aWxlID0+ICd2JywgcHJvaXNzdHJpY3QgPT4gJ2YnLApkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvc3RhdGlzdGljcy9zdGF0X3V0aWxzLmggYi9zcmMvaW5jbHVkZS9zdGF0aXN0aWNzL3N0 YXRfdXRpbHMuaAppbmRleCA2ZWRiNWVhMDMyMS4uMGViNGRlY2ZjYWMgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL3N0YXRpc3RpY3Mvc3RhdF91dGlscy5oCisrKyBiL3NyYy9pbmNsdWRlL3N0YXRp c3RpY3Mvc3RhdF91dGlscy5oCkBAIC0yNSwxNyArMjUsMTUgQEAgZXh0ZXJuIHZvaWQgc3RhdHNf Y2hlY2tfcmVxdWlyZWRfYXJnKEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvLAogCQkJCQkJCQkJIHN0 cnVjdCBTdGF0c0FyZ0luZm8gKmFyZ2luZm8sCiAJCQkJCQkJCQkgaW50IGFyZ251bSk7CiBleHRl cm4gYm9vbCBzdGF0c19jaGVja19hcmdfYXJyYXkoRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8sCi0J CQkJCQkJCSAgc3RydWN0IFN0YXRzQXJnSW5mbyAqYXJnaW5mbywgaW50IGFyZ251bSwKLQkJCQkJ CQkJICBpbnQgZWxldmVsKTsKKwkJCQkJCQkJICBzdHJ1Y3QgU3RhdHNBcmdJbmZvICphcmdpbmZv LCBpbnQgYXJnbnVtKTsKIGV4dGVybiBib29sIHN0YXRzX2NoZWNrX2FyZ19wYWlyKEZ1bmN0aW9u Q2FsbEluZm8gZmNpbmZvLAogCQkJCQkJCQkgc3RydWN0IFN0YXRzQXJnSW5mbyAqYXJnaW5mbywK LQkJCQkJCQkJIGludCBhcmdudW0xLCBpbnQgYXJnbnVtMiwgaW50IGVsZXZlbCk7CisJCQkJCQkJ CSBpbnQgYXJnbnVtMSwgaW50IGFyZ251bTIpOwogCiBleHRlcm4gdm9pZCBzdGF0c19sb2NrX2No ZWNrX3ByaXZpbGVnZXMoT2lkIHJlbG9pZCk7CiAKIGV4dGVybiBib29sIHN0YXRzX2ZpbGxfZmNp bmZvX2Zyb21fYXJnX3BhaXJzKEZ1bmN0aW9uQ2FsbEluZm8gcGFpcnNfZmNpbmZvLAogCQkJCQkJ CQkJCQkgRnVuY3Rpb25DYWxsSW5mbyBwb3NpdGlvbmFsX2ZjaW5mbywKLQkJCQkJCQkJCQkJIHN0 cnVjdCBTdGF0c0FyZ0luZm8gKmFyZ2luZm8sCi0JCQkJCQkJCQkJCSBpbnQgZWxldmVsKTsKKwkJ CQkJCQkJCQkJIHN0cnVjdCBTdGF0c0FyZ0luZm8gKmFyZ2luZm8pOwogCiAjZW5kaWYJCQkJCQkJ LyogU1RBVFNfVVRJTFNfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9zdGF0c19pbXBvcnQub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdGF0c19pbXBv cnQub3V0CmluZGV4IGQ2NzEzZWFjYzJjLi43Yzc3ODRlZmFmMSAxMDA2NDQKLS0tIGEvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9zdGF0c19pbXBvcnQub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvc3RhdHNfaW1wb3J0Lm91dApAQCAtMTIsNiArMTIsNyBAQCBDUkVBVEUgVEFC TEUgc3RhdHNfaW1wb3J0LnRlc3QoCiAgICAgYXJhbmdlIGludDRyYW5nZSwKICAgICB0YWdzIHRl eHRbXQogKSBXSVRIIChhdXRvdmFjdXVtX2VuYWJsZWQgPSBmYWxzZSk7CitDUkVBVEUgSU5ERVgg dGVzdF9pIE9OIHN0YXRzX2ltcG9ydC50ZXN0KGlkKTsKIC0tIHN0YXJ0aW5nIHN0YXRzCiBTRUxF Q1QgcmVscGFnZXMsIHJlbHR1cGxlcywgcmVsYWxsdmlzaWJsZQogRlJPTSBwZ19jbGFzcwpAQCAt MjEsODAgKzIyLDE1IEBAIFdIRVJFIG9pZCA9ICdzdGF0c19pbXBvcnQudGVzdCc6OnJlZ2NsYXNz OwogICAgICAgICAwIHwgICAgICAgIC0xIHwgICAgICAgICAgICAgMAogKDEgcm93KQogCi0tLSBl cnJvcjogcmVnY2xhc3Mgbm90IGZvdW5kCi1TRUxFQ1QKLSAgICBwZ19jYXRhbG9nLnBnX3NldF9y ZWxhdGlvbl9zdGF0cygKLSAgICAgICAgcmVsYXRpb24gPT4gMDo6T2lkLAotICAgICAgICByZWxw YWdlcyA9PiAxNzo6aW50ZWdlciwKLSAgICAgICAgcmVsdHVwbGVzID0+IDQwMC4wOjpyZWFsLAot ICAgICAgICByZWxhbGx2aXNpYmxlID0+IDQ6OmludGVnZXIpOwotRVJST1I6ICBjb3VsZCBub3Qg b3BlbiByZWxhdGlvbiB3aXRoIE9JRCAwCi0tLSByZWxwYWdlcyBkZWZhdWx0Ci1TRUxFQ1QKLSAg ICBwZ19jYXRhbG9nLnBnX3NldF9yZWxhdGlvbl9zdGF0cygKLSAgICAgICAgcmVsYXRpb24gPT4g J3N0YXRzX2ltcG9ydC50ZXN0Jzo6cmVnY2xhc3MsCi0gICAgICAgIHJlbHBhZ2VzID0+IE5VTEw6 OmludGVnZXIsCi0gICAgICAgIHJlbHR1cGxlcyA9PiA0MDAuMDo6cmVhbCwKLSAgICAgICAgcmVs YWxsdmlzaWJsZSA9PiA0OjppbnRlZ2VyKTsKLSBwZ19zZXRfcmVsYXRpb25fc3RhdHMgCi0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQotIAotKDEgcm93KQotCi0tLSByZWx0dXBsZXMgZGVmYXVsdAot U0VMRUNUCi0gICAgcGdfY2F0YWxvZy5wZ19zZXRfcmVsYXRpb25fc3RhdHMoCi0gICAgICAgIHJl bGF0aW9uID0+ICdzdGF0c19pbXBvcnQudGVzdCc6OnJlZ2NsYXNzLAotICAgICAgICByZWxwYWdl cyA9PiAxNzo6aW50ZWdlciwKLSAgICAgICAgcmVsdHVwbGVzID0+IE5VTEw6OnJlYWwsCi0gICAg ICAgIHJlbGFsbHZpc2libGUgPT4gNDo6aW50ZWdlcik7Ci0gcGdfc2V0X3JlbGF0aW9uX3N0YXRz IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAKLSgxIHJvdykKLQotLS0gcmVsYWxsdmlzaWJs ZSBkZWZhdWx0Ci1TRUxFQ1QKLSAgICBwZ19jYXRhbG9nLnBnX3NldF9yZWxhdGlvbl9zdGF0cygK LSAgICAgICAgcmVsYXRpb24gPT4gJ3N0YXRzX2ltcG9ydC50ZXN0Jzo6cmVnY2xhc3MsCi0gICAg ICAgIHJlbHBhZ2VzID0+IDE3OjppbnRlZ2VyLAotICAgICAgICByZWx0dXBsZXMgPT4gNDAwLjA6 OnJlYWwsCi0gICAgICAgIHJlbGFsbHZpc2libGUgPT4gTlVMTDo6aW50ZWdlcik7Ci0gcGdfc2V0 X3JlbGF0aW9uX3N0YXRzIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAKLSgxIHJvdykKLQot LS0gbmFtZWQgYXJndW1lbnRzCi1TRUxFQ1QKLSAgICBwZ19jYXRhbG9nLnBnX3NldF9yZWxhdGlv bl9zdGF0cygKLSAgICAgICAgcmVsYXRpb24gPT4gJ3N0YXRzX2ltcG9ydC50ZXN0Jzo6cmVnY2xh c3MsCi0gICAgICAgIHJlbHBhZ2VzID0+IDE3OjppbnRlZ2VyLAotICAgICAgICByZWx0dXBsZXMg PT4gNDAwLjA6OnJlYWwsCi0gICAgICAgIHJlbGFsbHZpc2libGUgPT4gNDo6aW50ZWdlcik7Ci0g cGdfc2V0X3JlbGF0aW9uX3N0YXRzIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAKLSgxIHJv dykKLQotU0VMRUNUIHJlbHBhZ2VzLCByZWx0dXBsZXMsIHJlbGFsbHZpc2libGUKLUZST00gcGdf Y2xhc3MKLVdIRVJFIG9pZCA9ICdzdGF0c19pbXBvcnQudGVzdCc6OnJlZ2NsYXNzOwotIHJlbHBh Z2VzIHwgcmVsdHVwbGVzIHwgcmVsYWxsdmlzaWJsZSAKLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tCi0gICAgICAgMTcgfCAgICAgICA0MDAgfCAgICAgICAgICAgICA0Ci0o MSByb3cpCi0KLUNSRUFURSBJTkRFWCB0ZXN0X2kgT04gc3RhdHNfaW1wb3J0LnRlc3QoaWQpOwog QkVHSU47CiAtLSByZWd1bGFyIGluZGV4ZXMgaGF2ZSBzcGVjaWFsIGNhc2UgbG9ja2luZyBydWxl cwogU0VMRUNUCi0gICAgcGdfY2F0YWxvZy5wZ19zZXRfcmVsYXRpb25fc3RhdHMoCi0gICAgICAg IHJlbGF0aW9uID0+ICdzdGF0c19pbXBvcnQudGVzdF9pJzo6cmVnY2xhc3MsCi0gICAgICAgIHJl bHBhZ2VzID0+IDE4OjppbnRlZ2VyKTsKLSBwZ19zZXRfcmVsYXRpb25fc3RhdHMgCi0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQotIAorICAgIHBnX2NhdGFsb2cucGdfcmVzdG9yZV9yZWxhdGlvbl9z dGF0cygKKyAgICAgICAgJ3JlbGF0aW9uJywgJ3N0YXRzX2ltcG9ydC50ZXN0X2knOjpyZWdjbGFz cywKKyAgICAgICAgJ3JlbHBhZ2VzJywgMTg6OmludGVnZXIpOworIHBnX3Jlc3RvcmVfcmVsYXRp b25fc3RhdHMgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0CiAoMSByb3cpCiAKIFNF TEVDVCBtb2RlIEZST00gcGdfbG9ja3MKQEAgLTEyMywzNCArNTksNiBAQCBTRUxFQ1QKICB0CiAo MSByb3cpCiAKLS0tIHBvc2l0aW9uYWwgYXJndW1lbnRzCi1TRUxFQ1QKLSAgICBwZ19jYXRhbG9n LnBnX3NldF9yZWxhdGlvbl9zdGF0cygKLSAgICAgICAgJ3N0YXRzX2ltcG9ydC50ZXN0Jzo6cmVn Y2xhc3MsCi0gICAgICAgIDE4OjppbnRlZ2VyLAotICAgICAgICA0MDEuMDo6cmVhbCwKLSAgICAg ICAgNTo6aW50ZWdlcik7Ci0gcGdfc2V0X3JlbGF0aW9uX3N0YXRzIAotLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KLSAKLSgxIHJvdykKLQotU0VMRUNUIHJlbHBhZ2VzLCByZWx0dXBsZXMsIHJlbGFs bHZpc2libGUKLUZST00gcGdfY2xhc3MKLVdIRVJFIG9pZCA9ICdzdGF0c19pbXBvcnQudGVzdCc6 OnJlZ2NsYXNzOwotIHJlbHBhZ2VzIHwgcmVsdHVwbGVzIHwgcmVsYWxsdmlzaWJsZSAKLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tCi0gICAgICAgMTggfCAgICAgICA0MDEg fCAgICAgICAgICAgICA1Ci0oMSByb3cpCi0KLVNFTEVDVCByZWxwYWdlcywgcmVsdHVwbGVzLCBy ZWxhbGx2aXNpYmxlCi1GUk9NIHBnX2NsYXNzCi1XSEVSRSBvaWQgPSAnc3RhdHNfaW1wb3J0LnRl c3QnOjpyZWdjbGFzczsKLSByZWxwYWdlcyB8IHJlbHR1cGxlcyB8IHJlbGFsbHZpc2libGUgCi0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLQotICAgICAgIDE4IHwgICAgICAg NDAxIHwgICAgICAgICAgICAgNQotKDEgcm93KQotCiAtLSBjbGVhcgogU0VMRUNUCiAgICAgcGdf Y2F0YWxvZy5wZ19jbGVhcl9yZWxhdGlvbl9zdGF0cygKQEAgLTIwMCwyMSArMTA4LDIxIEBAIFdI RVJFIG9pZCA9ICdzdGF0c19pbXBvcnQucGFydF9wYXJlbnQnOjpyZWdjbGFzczsKIC0tIGFsdGhv dWdoIHBhcnRpdGlvbmVkIHRhYmxlcyBoYXZlIG5vIHN0b3JhZ2UsIHNldHRpbmcgcmVscGFnZXMg dG8gYQogLS0gcG9zaXRpdmUgdmFsdWUgaXMgc3RpbGwgYWxsb3dlZAogU0VMRUNUCi0gICAgcGdf Y2F0YWxvZy5wZ19zZXRfcmVsYXRpb25fc3RhdHMoCi0gICAgICAgIHJlbGF0aW9uID0+ICdzdGF0 c19pbXBvcnQucGFydF9wYXJlbnRfaSc6OnJlZ2NsYXNzLAotICAgICAgICByZWxwYWdlcyA9PiAy OjppbnRlZ2VyKTsKLSBwZ19zZXRfcmVsYXRpb25fc3RhdHMgCi0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQotIAorICAgIHBnX2NhdGFsb2cucGdfcmVzdG9yZV9yZWxhdGlvbl9zdGF0cygKKyAgICAg ICAgJ3JlbGF0aW9uJywgJ3N0YXRzX2ltcG9ydC5wYXJ0X3BhcmVudF9pJzo6cmVnY2xhc3MsCisg ICAgICAgICdyZWxwYWdlcycsIDI6OmludGVnZXIpOworIHBnX3Jlc3RvcmVfcmVsYXRpb25fc3Rh dHMgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0CiAoMSByb3cpCiAKIFNFTEVDVAot ICAgIHBnX2NhdGFsb2cucGdfc2V0X3JlbGF0aW9uX3N0YXRzKAotICAgICAgICByZWxhdGlvbiA9 PiAnc3RhdHNfaW1wb3J0LnBhcnRfcGFyZW50Jzo6cmVnY2xhc3MsCi0gICAgICAgIHJlbHBhZ2Vz ID0+IDI6OmludGVnZXIpOwotIHBnX3NldF9yZWxhdGlvbl9zdGF0cyAKLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCi0gCisgICAgcGdfY2F0YWxvZy5wZ19yZXN0b3JlX3JlbGF0aW9uX3N0YXRzKAor ICAgICAgICAncmVsYXRpb24nLCAnc3RhdHNfaW1wb3J0LnBhcnRfcGFyZW50Jzo6cmVnY2xhc3Ms CisgICAgICAgICdyZWxwYWdlcycsIDI6OmludGVnZXIpOworIHBnX3Jlc3RvcmVfcmVsYXRpb25f c3RhdHMgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0CiAoMSByb3cpCiAKIC0tCkBA IC0yMjUsMTIgKzEzMywxMiBAQCBTRUxFQ1QKIC0tCiBCRUdJTjsKIFNFTEVDVAotICAgIHBnX2Nh dGFsb2cucGdfc2V0X3JlbGF0aW9uX3N0YXRzKAotICAgICAgICByZWxhdGlvbiA9PiAnc3RhdHNf aW1wb3J0LnBhcnRfcGFyZW50X2knOjpyZWdjbGFzcywKLSAgICAgICAgcmVscGFnZXMgPT4gMjo6 aW50ZWdlcik7Ci0gcGdfc2V0X3JlbGF0aW9uX3N0YXRzIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KLSAKKyAgICBwZ19jYXRhbG9nLnBnX3Jlc3RvcmVfcmVsYXRpb25fc3RhdHMoCisgICAgICAg ICdyZWxhdGlvbicsICdzdGF0c19pbXBvcnQucGFydF9wYXJlbnRfaSc6OnJlZ2NsYXNzLAorICAg ICAgICAncmVscGFnZXMnLCAyOjppbnRlZ2VyKTsKKyBwZ19yZXN0b3JlX3JlbGF0aW9uX3N0YXRz IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgdAogKDEgcm93KQogCiBTRUxFQ1QgbW9k ZSBGUk9NIHBnX2xvY2tzCkBAIC0yNjEsNTYgKzE2OSwxNCBAQCBTRUxFQ1QKIAogLS0gbm90aGlu ZyBzdG9wcyB1cyBmcm9tIHNldHRpbmcgaXQgdG8gLTEKIFNFTEVDVAotICAgIHBnX2NhdGFsb2cu cGdfc2V0X3JlbGF0aW9uX3N0YXRzKAotICAgICAgICByZWxhdGlvbiA9PiAnc3RhdHNfaW1wb3J0 LnBhcnRfcGFyZW50Jzo6cmVnY2xhc3MsCi0gICAgICAgIHJlbHBhZ2VzID0+IC0xOjppbnRlZ2Vy KTsKLSBwZ19zZXRfcmVsYXRpb25fc3RhdHMgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIAor ICAgIHBnX2NhdGFsb2cucGdfcmVzdG9yZV9yZWxhdGlvbl9zdGF0cygKKyAgICAgICAgJ3JlbGF0 aW9uJywgJ3N0YXRzX2ltcG9ydC5wYXJ0X3BhcmVudCc6OnJlZ2NsYXNzLAorICAgICAgICAncmVs cGFnZXMnLCAtMTo6aW50ZWdlcik7CisgcGdfcmVzdG9yZV9yZWxhdGlvbl9zdGF0cyAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHQKICgxIHJvdykKIAotLS0gZXJyb3I6IG9iamVjdCBk b2Vzbid0IGV4aXN0Ci1TRUxFQ1QgcGdfY2F0YWxvZy5wZ19zZXRfYXR0cmlidXRlX3N0YXRzKAot ICAgIHJlbGF0aW9uID0+ICcwJzo6b2lkLAotICAgIGF0dG5hbWUgPT4gJ2lkJzo6bmFtZSwKLSAg ICBpbmhlcml0ZWQgPT4gZmFsc2U6OmJvb2xlYW4sCi0gICAgbnVsbF9mcmFjID0+IDAuMTo6cmVh bCwKLSAgICBhdmdfd2lkdGggPT4gMjo6aW50ZWdlciwKLSAgICBuX2Rpc3RpbmN0ID0+IDAuMzo6 cmVhbCk7Ci1FUlJPUjogIGNvdWxkIG5vdCBvcGVuIHJlbGF0aW9uIHdpdGggT0lEIDAKLS0tIGVy cm9yOiBvYmplY3QgZG9lc24ndCBleGlzdAotU0VMRUNUIHBnX2NhdGFsb2cucGdfY2xlYXJfYXR0 cmlidXRlX3N0YXRzKAotICAgIHJlbGF0aW9uID0+ICcwJzo6b2lkLAotICAgIGF0dG5hbWUgPT4g J2lkJzo6bmFtZSwKLSAgICBpbmhlcml0ZWQgPT4gZmFsc2U6OmJvb2xlYW4pOwotRVJST1I6ICBj b3VsZCBub3Qgb3BlbiByZWxhdGlvbiB3aXRoIE9JRCAwCi0tLSBlcnJvcjogcmVsYXRpb24gbnVs bAotU0VMRUNUIHBnX2NhdGFsb2cucGdfc2V0X2F0dHJpYnV0ZV9zdGF0cygKLSAgICByZWxhdGlv biA9PiBOVUxMOjpvaWQsCi0gICAgYXR0bmFtZSA9PiAnaWQnOjpuYW1lLAotICAgIGluaGVyaXRl ZCA9PiBmYWxzZTo6Ym9vbGVhbiwKLSAgICBudWxsX2ZyYWMgPT4gMC4xOjpyZWFsLAotICAgIGF2 Z193aWR0aCA9PiAyOjppbnRlZ2VyLAotICAgIG5fZGlzdGluY3QgPT4gMC4zOjpyZWFsKTsKLUVS Uk9SOiAgInJlbGF0aW9uIiBjYW5ub3QgYmUgTlVMTAotLS0gZXJyb3I6IGF0dHJpYnV0ZSBpcyBz eXN0ZW0gY29sdW1uCi1TRUxFQ1QgcGdfY2F0YWxvZy5wZ19zZXRfYXR0cmlidXRlX3N0YXRzKAot ICAgIHJlbGF0aW9uID0+ICdzdGF0c19pbXBvcnQudGVzdCc6OnJlZ2NsYXNzLAotICAgIGF0dG5h bWUgPT4gJ3htaW4nOjpuYW1lLAotICAgIGluaGVyaXRlZCA9PiBmYWxzZTo6Ym9vbGVhbiwKLSAg ICBudWxsX2ZyYWMgPT4gMC4xOjpyZWFsLAotICAgIGF2Z193aWR0aCA9PiAyOjppbnRlZ2VyLAot ICAgIG5fZGlzdGluY3QgPT4gMC4zOjpyZWFsKTsKLUVSUk9SOiAgY2Fubm90IG1vZGlmeSBzdGF0 aXN0aWNzIG9uIHN5c3RlbSBjb2x1bW4gInhtaW4iCi0tLSBlcnJvcjogYXR0bmFtZSBkb2Vzbid0 IGV4aXN0Ci1TRUxFQ1QgcGdfY2F0YWxvZy5wZ19zZXRfYXR0cmlidXRlX3N0YXRzKAotICAgIHJl bGF0aW9uID0+ICdzdGF0c19pbXBvcnQudGVzdCc6OnJlZ2NsYXNzLAotICAgIGF0dG5hbWUgPT4g J25vcGUnOjpuYW1lLAotICAgIGluaGVyaXRlZCA9PiBmYWxzZTo6Ym9vbGVhbiwKLSAgICBudWxs X2ZyYWMgPT4gMC4xOjpyZWFsLAotICAgIGF2Z193aWR0aCA9PiAyOjppbnRlZ2VyLAotICAgIG5f ZGlzdGluY3QgPT4gMC4zOjpyZWFsKTsKLUVSUk9SOiAgY29sdW1uICJub3BlIiBvZiByZWxhdGlv biAidGVzdCIgZG9lcyBub3QgZXhpc3QKIC0tIGVycm9yOiBhdHRyaWJ1dGUgaXMgc3lzdGVtIGNv bHVtbgogU0VMRUNUIHBnX2NhdGFsb2cucGdfY2xlYXJfYXR0cmlidXRlX3N0YXRzKAogICAgIHJl bGF0aW9uID0+ICdzdGF0c19pbXBvcnQudGVzdCc6OnJlZ2NsYXNzLApAQCAtMzIzLDQzMiArMTg5 LDYgQEAgU0VMRUNUIHBnX2NhdGFsb2cucGdfY2xlYXJfYXR0cmlidXRlX3N0YXRzKAogICAgIGF0 dG5hbWUgPT4gJ25vcGUnOjpuYW1lLAogICAgIGluaGVyaXRlZCA9PiBmYWxzZTo6Ym9vbGVhbik7 CiBFUlJPUjogIGNvbHVtbiAibm9wZSIgb2YgcmVsYXRpb24gInRlc3QiIGRvZXMgbm90IGV4aXN0 Ci0tLSBlcnJvcjogYXR0bmFtZSBudWxsCi1TRUxFQ1QgcGdfY2F0YWxvZy5wZ19zZXRfYXR0cmli dXRlX3N0YXRzKAotICAgIHJlbGF0aW9uID0+ICdzdGF0c19pbXBvcnQudGVzdCc6OnJlZ2NsYXNz LAotICAgIGF0dG5hbWUgPT4gTlVMTDo6bmFtZSwKLSAgICBpbmhlcml0ZWQgPT4gZmFsc2U6OmJv b2xlYW4sCi0gICAgbnVsbF9mcmFjID0+IDAuMTo6cmVhbCwKLSAgICBhdmdfd2lkdGggPT4gMjo6 aW50ZWdlciwKLSAgICBuX2Rpc3RpbmN0ID0+IDAuMzo6cmVhbCk7Ci1FUlJPUjogICJhdHRuYW1l IiBjYW5ub3QgYmUgTlVMTAotLS0gZXJyb3I6IGluaGVyaXRlZCBudWxsCi1TRUxFQ1QgcGdfY2F0 YWxvZy5wZ19zZXRfYXR0cmlidXRlX3N0YXRzKAotICAgIHJlbGF0aW9uID0+ICdzdGF0c19pbXBv cnQudGVzdCc6OnJlZ2NsYXNzLAotICAgIGF0dG5hbWUgPT4gJ2lkJzo6bmFtZSwKLSAgICBpbmhl cml0ZWQgPT4gTlVMTDo6Ym9vbGVhbiwKLSAgICBudWxsX2ZyYWMgPT4gMC4xOjpyZWFsLAotICAg IGF2Z193aWR0aCA9PiAyOjppbnRlZ2VyLAotICAgIG5fZGlzdGluY3QgPT4gMC4zOjpyZWFsKTsK LUVSUk9SOiAgImluaGVyaXRlZCIgY2Fubm90IGJlIE5VTEwKLS0tIG9rOiBubyBzdGFraW5kcwot U0VMRUNUIHBnX2NhdGFsb2cucGdfc2V0X2F0dHJpYnV0ZV9zdGF0cygKLSAgICByZWxhdGlvbiA9 PiAnc3RhdHNfaW1wb3J0LnRlc3QnOjpyZWdjbGFzcywKLSAgICBhdHRuYW1lID0+ICdpZCc6Om5h bWUsCi0gICAgaW5oZXJpdGVkID0+IGZhbHNlOjpib29sZWFuLAotICAgIG51bGxfZnJhYyA9PiAw LjE6OnJlYWwsCi0gICAgYXZnX3dpZHRoID0+IDI6OmludGVnZXIsCi0gICAgbl9kaXN0aW5jdCA9 PiAwLjM6OnJlYWwpOwotIHBnX3NldF9hdHRyaWJ1dGVfc3RhdHMgCi0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KLSAKLSgxIHJvdykKLQotU0VMRUNUIHN0YW51bGxmcmFjLCBzdGF3aWR0aCwgc3Rh ZGlzdGluY3QKLUZST00gcGdfc3RhdGlzdGljCi1XSEVSRSBzdGFyZWxpZCA9ICdzdGF0c19pbXBv cnQudGVzdCc6OnJlZ2NsYXNzOwotIHN0YW51bGxmcmFjIHwgc3Rhd2lkdGggfCBzdGFkaXN0aW5j dCAKLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCi0gICAgICAgICAwLjEg fCAgICAgICAgMiB8ICAgICAgICAgMC4zCi0oMSByb3cpCi0KLS0tIGVycm9yOiBtY3YgLyBtY2Yg bnVsbCBtaXNtYXRjaAotU0VMRUNUIHBnX2NhdGFsb2cucGdfc2V0X2F0dHJpYnV0ZV9zdGF0cygK LSAgICByZWxhdGlvbiA9PiAnc3RhdHNfaW1wb3J0LnRlc3QnOjpyZWdjbGFzcywKLSAgICBhdHRu YW1lID0+ICdpZCc6Om5hbWUsCi0gICAgaW5oZXJpdGVkID0+IGZhbHNlOjpib29sZWFuLAotICAg IG51bGxfZnJhYyA9PiAwLjU6OnJlYWwsCi0gICAgYXZnX3dpZHRoID0+IDI6OmludGVnZXIsCi0g ICAgbl9kaXN0aW5jdCA9PiAtMC4xOjpyZWFsLAotICAgIG1vc3RfY29tbW9uX2ZyZXFzID0+ICd7 MC4xLDAuMiwwLjN9Jzo6cmVhbFtdCi0gICAgKTsKLUVSUk9SOiAgIm1vc3RfY29tbW9uX3ZhbHMi IG11c3QgYmUgc3BlY2lmaWVkIHdoZW4gIm1vc3RfY29tbW9uX2ZyZXFzIiBpcyBzcGVjaWZpZWQK LS0tIGVycm9yOiBtY3YgLyBtY2YgbnVsbCBtaXNtYXRjaCBwYXJ0IDIKLVNFTEVDVCBwZ19jYXRh bG9nLnBnX3NldF9hdHRyaWJ1dGVfc3RhdHMoCi0gICAgcmVsYXRpb24gPT4gJ3N0YXRzX2ltcG9y dC50ZXN0Jzo6cmVnY2xhc3MsCi0gICAgYXR0bmFtZSA9PiAnaWQnOjpuYW1lLAotICAgIGluaGVy aXRlZCA9PiBmYWxzZTo6Ym9vbGVhbiwKLSAgICBudWxsX2ZyYWMgPT4gMC41OjpyZWFsLAotICAg IGF2Z193aWR0aCA9PiAyOjppbnRlZ2VyLAotICAgIG5fZGlzdGluY3QgPT4gLTAuMTo6cmVhbCwK LSAgICBtb3N0X2NvbW1vbl92YWxzID0+ICd7MSwyLDN9Jzo6dGV4dAotICAgICk7Ci1FUlJPUjog ICJtb3N0X2NvbW1vbl9mcmVxcyIgbXVzdCBiZSBzcGVjaWZpZWQgd2hlbiAibW9zdF9jb21tb25f dmFscyIgaXMgc3BlY2lmaWVkCi0tLSBlcnJvcjogbWN2IC8gbWNmIHR5cGUgbWlzbWF0Y2gKLVNF TEVDVCBwZ19jYXRhbG9nLnBnX3NldF9hdHRyaWJ1dGVfc3RhdHMoCi0gICAgcmVsYXRpb24gPT4g J3N0YXRzX2ltcG9ydC50ZXN0Jzo6cmVnY2xhc3MsCi0gICAgYXR0bmFtZSA9PiAnaWQnOjpuYW1l LAotICAgIGluaGVyaXRlZCA9PiBmYWxzZTo6Ym9vbGVhbiwKLSAgICBudWxsX2ZyYWMgPT4gMC41 OjpyZWFsLAotICAgIGF2Z193aWR0aCA9PiAyOjppbnRlZ2VyLAotICAgIG5fZGlzdGluY3QgPT4g LTAuMTo6cmVhbCwKLSAgICBtb3N0X2NvbW1vbl92YWxzID0+ICd7MjAyMy0wOS0zMCwyMDI0LTEw LTMxLDN9Jzo6dGV4dCwKLSAgICBtb3N0X2NvbW1vbl9mcmVxcyA9PiAnezAuMiwwLjF9Jzo6cmVh bFtdCi0gICAgKTsKLUVSUk9SOiAgaW52YWxpZCBpbnB1dCBzeW50YXggZm9yIHR5cGUgaW50ZWdl cjogIjIwMjMtMDktMzAiCi0tLSBlcnJvcjogbWN2IGNhc3QgZmFpbHVyZQotU0VMRUNUIHBnX2Nh dGFsb2cucGdfc2V0X2F0dHJpYnV0ZV9zdGF0cygKLSAgICByZWxhdGlvbiA9PiAnc3RhdHNfaW1w b3J0LnRlc3QnOjpyZWdjbGFzcywKLSAgICBhdHRuYW1lID0+ICdpZCc6Om5hbWUsCi0gICAgaW5o ZXJpdGVkID0+IGZhbHNlOjpib29sZWFuLAotICAgIG51bGxfZnJhYyA9PiAwLjU6OnJlYWwsCi0g ICAgYXZnX3dpZHRoID0+IDI6OmludGVnZXIsCi0gICAgbl9kaXN0aW5jdCA9PiAtMC4xOjpyZWFs LAotICAgIG1vc3RfY29tbW9uX3ZhbHMgPT4gJ3syLGZvdXIsM30nOjp0ZXh0LAotICAgIG1vc3Rf Y29tbW9uX2ZyZXFzID0+ICd7MC4zLDAuMjUsMC4wNX0nOjpyZWFsW10KLSAgICApOwotRVJST1I6 ICBpbnZhbGlkIGlucHV0IHN5bnRheCBmb3IgdHlwZSBpbnRlZ2VyOiAiZm91ciIKLS0tIG9rOiBt Y3YrbWNmCi1TRUxFQ1QgcGdfY2F0YWxvZy5wZ19zZXRfYXR0cmlidXRlX3N0YXRzKAotICAgIHJl bGF0aW9uID0+ICdzdGF0c19pbXBvcnQudGVzdCc6OnJlZ2NsYXNzLAotICAgIGF0dG5hbWUgPT4g J2lkJzo6bmFtZSwKLSAgICBpbmhlcml0ZWQgPT4gZmFsc2U6OmJvb2xlYW4sCi0gICAgbnVsbF9m cmFjID0+IDAuNTo6cmVhbCwKLSAgICBhdmdfd2lkdGggPT4gMjo6aW50ZWdlciwKLSAgICBuX2Rp c3RpbmN0ID0+IC0wLjE6OnJlYWwsCi0gICAgbW9zdF9jb21tb25fdmFscyA9PiAnezIsMSwzfSc6 OnRleHQsCi0gICAgbW9zdF9jb21tb25fZnJlcXMgPT4gJ3swLjMsMC4yNSwwLjA1fSc6OnJlYWxb XQotICAgICk7Ci0gcGdfc2V0X2F0dHJpYnV0ZV9zdGF0cyAKLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQotIAotKDEgcm93KQotCi1TRUxFQ1QgKgotRlJPTSBwZ19zdGF0cwotV0hFUkUgc2NoZW1h bmFtZSA9ICdzdGF0c19pbXBvcnQnCi1BTkQgdGFibGVuYW1lID0gJ3Rlc3QnCi1BTkQgaW5oZXJp dGVkID0gZmFsc2UKLUFORCBhdHRuYW1lID0gJ2lkJzsKLSAgc2NoZW1hbmFtZSAgfCB0YWJsZW5h bWUgfCBhdHRuYW1lIHwgaW5oZXJpdGVkIHwgbnVsbF9mcmFjIHwgYXZnX3dpZHRoIHwgbl9kaXN0 aW5jdCB8IG1vc3RfY29tbW9uX3ZhbHMgfCBtb3N0X2NvbW1vbl9mcmVxcyB8IGhpc3RvZ3JhbV9i b3VuZHMgfCBjb3JyZWxhdGlvbiB8IG1vc3RfY29tbW9uX2VsZW1zIHwgbW9zdF9jb21tb25fZWxl bV9mcmVxcyB8IGVsZW1fY291bnRfaGlzdG9ncmFtIHwgcmFuZ2VfbGVuZ3RoX2hpc3RvZ3JhbSB8 IHJhbmdlX2VtcHR5X2ZyYWMgfCByYW5nZV9ib3VuZHNfaGlzdG9ncmFtIAotLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0g c3RhdHNfaW1wb3J0IHwgdGVzdCAgICAgIHwgaWQgICAgICB8IGYgICAgICAgICB8ICAgICAgIDAu NSB8ICAgICAgICAgMiB8ICAgICAgIC0wLjEgfCB7MiwxLDN9ICAgICAgICAgIHwgezAuMywwLjI1 LDAuMDV9ICAgfCAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAgICAg ICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICB8ICAg ICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgIHwgCi0oMSByb3cpCi0KLS0t IGVycm9yOiBoaXN0b2dyYW0gZWxlbWVudHMgbnVsbCB2YWx1ZQotLS0gdGhpcyBnZW5lcmF0ZXMg bm8gd2FybmluZ3MsIGJ1dCBwZXJoYXBzIGl0IHNob3VsZAotU0VMRUNUIHBnX2NhdGFsb2cucGdf c2V0X2F0dHJpYnV0ZV9zdGF0cygKLSAgICByZWxhdGlvbiA9PiAnc3RhdHNfaW1wb3J0LnRlc3Qn OjpyZWdjbGFzcywKLSAgICBhdHRuYW1lID0+ICdpZCc6Om5hbWUsCi0gICAgaW5oZXJpdGVkID0+ IGZhbHNlOjpib29sZWFuLAotICAgIG51bGxfZnJhYyA9PiAwLjU6OnJlYWwsCi0gICAgYXZnX3dp ZHRoID0+IDI6OmludGVnZXIsCi0gICAgbl9kaXN0aW5jdCA9PiAtMC4xOjpyZWFsLAotICAgIGhp c3RvZ3JhbV9ib3VuZHMgPT4gJ3sxLE5VTEwsMyw0fSc6OnRleHQKLSAgICApOwotRVJST1I6ICAi aGlzdG9ncmFtX2JvdW5kcyIgYXJyYXkgY2Fubm90IGNvbnRhaW4gTlVMTCB2YWx1ZXMKLS0tIG9r OiBoaXN0b2dyYW1fYm91bmRzCi1TRUxFQ1QgcGdfY2F0YWxvZy5wZ19zZXRfYXR0cmlidXRlX3N0 YXRzKAotICAgIHJlbGF0aW9uID0+ICdzdGF0c19pbXBvcnQudGVzdCc6OnJlZ2NsYXNzLAotICAg IGF0dG5hbWUgPT4gJ2lkJzo6bmFtZSwKLSAgICBpbmhlcml0ZWQgPT4gZmFsc2U6OmJvb2xlYW4s Ci0gICAgbnVsbF9mcmFjID0+IDAuNTo6cmVhbCwKLSAgICBhdmdfd2lkdGggPT4gMjo6aW50ZWdl ciwKLSAgICBuX2Rpc3RpbmN0ID0+IC0wLjE6OnJlYWwsCi0gICAgaGlzdG9ncmFtX2JvdW5kcyA9 PiAnezEsMiwzLDR9Jzo6dGV4dAotICAgICk7Ci0gcGdfc2V0X2F0dHJpYnV0ZV9zdGF0cyAKLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIAotKDEgcm93KQotCi1TRUxFQ1QgKgotRlJPTSBwZ19z dGF0cwotV0hFUkUgc2NoZW1hbmFtZSA9ICdzdGF0c19pbXBvcnQnCi1BTkQgdGFibGVuYW1lID0g J3Rlc3QnCi1BTkQgaW5oZXJpdGVkID0gZmFsc2UKLUFORCBhdHRuYW1lID0gJ2lkJzsKLSAgc2No ZW1hbmFtZSAgfCB0YWJsZW5hbWUgfCBhdHRuYW1lIHwgaW5oZXJpdGVkIHwgbnVsbF9mcmFjIHwg YXZnX3dpZHRoIHwgbl9kaXN0aW5jdCB8IG1vc3RfY29tbW9uX3ZhbHMgfCBtb3N0X2NvbW1vbl9m cmVxcyB8IGhpc3RvZ3JhbV9ib3VuZHMgfCBjb3JyZWxhdGlvbiB8IG1vc3RfY29tbW9uX2VsZW1z IHwgbW9zdF9jb21tb25fZWxlbV9mcmVxcyB8IGVsZW1fY291bnRfaGlzdG9ncmFtIHwgcmFuZ2Vf bGVuZ3RoX2hpc3RvZ3JhbSB8IHJhbmdlX2VtcHR5X2ZyYWMgfCByYW5nZV9ib3VuZHNfaGlzdG9n cmFtIAotLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCi0gc3RhdHNfaW1wb3J0IHwgdGVzdCAgICAgIHwgaWQgICAgICB8IGYg ICAgICAgICB8ICAgICAgIDAuNSB8ICAgICAgICAgMiB8ICAgICAgIC0wLjEgfCB7MiwxLDN9ICAg ICAgICAgIHwgezAuMywwLjI1LDAuMDV9ICAgfCB7MSwyLDMsNH0gICAgICAgIHwgICAgICAgICAg ICAgfCAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAg ICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAg IHwgCi0oMSByb3cpCi0KLS0tIG9rOiBjb3JyZWxhdGlvbgotU0VMRUNUIHBnX2NhdGFsb2cucGdf c2V0X2F0dHJpYnV0ZV9zdGF0cygKLSAgICByZWxhdGlvbiA9PiAnc3RhdHNfaW1wb3J0LnRlc3Qn OjpyZWdjbGFzcywKLSAgICBhdHRuYW1lID0+ICdpZCc6Om5hbWUsCi0gICAgaW5oZXJpdGVkID0+ IGZhbHNlOjpib29sZWFuLAotICAgIG51bGxfZnJhYyA9PiAwLjU6OnJlYWwsCi0gICAgYXZnX3dp ZHRoID0+IDI6OmludGVnZXIsCi0gICAgbl9kaXN0aW5jdCA9PiAtMC4xOjpyZWFsLAotICAgIGNv cnJlbGF0aW9uID0+IDAuNTo6cmVhbCk7Ci0gcGdfc2V0X2F0dHJpYnV0ZV9zdGF0cyAKLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQotIAotKDEgcm93KQotCi1TRUxFQ1QgKgotRlJPTSBwZ19zdGF0 cwotV0hFUkUgc2NoZW1hbmFtZSA9ICdzdGF0c19pbXBvcnQnCi1BTkQgdGFibGVuYW1lID0gJ3Rl c3QnCi1BTkQgaW5oZXJpdGVkID0gZmFsc2UKLUFORCBhdHRuYW1lID0gJ2lkJzsKLSAgc2NoZW1h bmFtZSAgfCB0YWJsZW5hbWUgfCBhdHRuYW1lIHwgaW5oZXJpdGVkIHwgbnVsbF9mcmFjIHwgYXZn X3dpZHRoIHwgbl9kaXN0aW5jdCB8IG1vc3RfY29tbW9uX3ZhbHMgfCBtb3N0X2NvbW1vbl9mcmVx cyB8IGhpc3RvZ3JhbV9ib3VuZHMgfCBjb3JyZWxhdGlvbiB8IG1vc3RfY29tbW9uX2VsZW1zIHwg bW9zdF9jb21tb25fZWxlbV9mcmVxcyB8IGVsZW1fY291bnRfaGlzdG9ncmFtIHwgcmFuZ2VfbGVu Z3RoX2hpc3RvZ3JhbSB8IHJhbmdlX2VtcHR5X2ZyYWMgfCByYW5nZV9ib3VuZHNfaGlzdG9ncmFt IAotLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCi0gc3RhdHNfaW1wb3J0IHwgdGVzdCAgICAgIHwgaWQgICAgICB8IGYgICAg ICAgICB8ICAgICAgIDAuNSB8ICAgICAgICAgMiB8ICAgICAgIC0wLjEgfCB7MiwxLDN9ICAgICAg ICAgIHwgezAuMywwLjI1LDAuMDV9ICAgfCB7MSwyLDMsNH0gICAgICAgIHwgICAgICAgICAwLjUg fCAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAg ICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgIHwg Ci0oMSByb3cpCi0KLS0tIGVycm9yOiBzY2FsYXJzIGNhbid0IGhhdmUgbWNlbGVtCi1TRUxFQ1Qg cGdfY2F0YWxvZy5wZ19zZXRfYXR0cmlidXRlX3N0YXRzKAotICAgIHJlbGF0aW9uID0+ICdzdGF0 c19pbXBvcnQudGVzdCc6OnJlZ2NsYXNzLAotICAgIGF0dG5hbWUgPT4gJ2lkJzo6bmFtZSwKLSAg ICBpbmhlcml0ZWQgPT4gZmFsc2U6OmJvb2xlYW4sCi0gICAgbnVsbF9mcmFjID0+IDAuNTo6cmVh bCwKLSAgICBhdmdfd2lkdGggPT4gMjo6aW50ZWdlciwKLSAgICBuX2Rpc3RpbmN0ID0+IC0wLjE6 OnJlYWwsCi0gICAgbW9zdF9jb21tb25fZWxlbXMgPT4gJ3sxLDN9Jzo6dGV4dCwKLSAgICBtb3N0 X2NvbW1vbl9lbGVtX2ZyZXFzID0+ICd7MC4zLDAuMiwwLjIsMC4zLDAuMH0nOjpyZWFsW10KLSAg ICApOwotRVJST1I6ICB1bmFibGUgdG8gZGV0ZXJtaW5lIGVsZW1lbnQgdHlwZSBvZiBhdHRyaWJ1 dGUgImlkIgotREVUQUlMOiAgQ2Fubm90IHNldCBTVEFUSVNUSUNfS0lORF9NQ0VMRU0gb3IgU1RB VElTVElDX0tJTkRfREVDSElTVC4KLS0tIGVycm9yOiBtY2VsZW0gLyBtY2VsZW0gbWlzbWF0Y2gK LVNFTEVDVCBwZ19jYXRhbG9nLnBnX3NldF9hdHRyaWJ1dGVfc3RhdHMoCi0gICAgcmVsYXRpb24g PT4gJ3N0YXRzX2ltcG9ydC50ZXN0Jzo6cmVnY2xhc3MsCi0gICAgYXR0bmFtZSA9PiAndGFncyc6 Om5hbWUsCi0gICAgaW5oZXJpdGVkID0+IGZhbHNlOjpib29sZWFuLAotICAgIG51bGxfZnJhYyA9 PiAwLjU6OnJlYWwsCi0gICAgYXZnX3dpZHRoID0+IDI6OmludGVnZXIsCi0gICAgbl9kaXN0aW5j dCA9PiAtMC4xOjpyZWFsLAotICAgIG1vc3RfY29tbW9uX2VsZW1zID0+ICd7b25lLHR3b30nOjp0 ZXh0Ci0gICAgKTsKLUVSUk9SOiAgIm1vc3RfY29tbW9uX2VsZW1fZnJlcXMiIG11c3QgYmUgc3Bl Y2lmaWVkIHdoZW4gIm1vc3RfY29tbW9uX2VsZW1zIiBpcyBzcGVjaWZpZWQKLS0tIGVycm9yOiBt Y2VsZW0gLyBtY2VsZW0gbnVsbCBtaXNtYXRjaCBwYXJ0IDIKLVNFTEVDVCBwZ19jYXRhbG9nLnBn X3NldF9hdHRyaWJ1dGVfc3RhdHMoCi0gICAgcmVsYXRpb24gPT4gJ3N0YXRzX2ltcG9ydC50ZXN0 Jzo6cmVnY2xhc3MsCi0gICAgYXR0bmFtZSA9PiAndGFncyc6Om5hbWUsCi0gICAgaW5oZXJpdGVk ID0+IGZhbHNlOjpib29sZWFuLAotICAgIG51bGxfZnJhYyA9PiAwLjU6OnJlYWwsCi0gICAgYXZn X3dpZHRoID0+IDI6OmludGVnZXIsCi0gICAgbl9kaXN0aW5jdCA9PiAtMC4xOjpyZWFsLAotICAg IG1vc3RfY29tbW9uX2VsZW1fZnJlcXMgPT4gJ3swLjMsMC4yLDAuMiwwLjN9Jzo6cmVhbFtdCi0g ICAgKTsKLUVSUk9SOiAgIm1vc3RfY29tbW9uX2VsZW1zIiBtdXN0IGJlIHNwZWNpZmllZCB3aGVu ICJtb3N0X2NvbW1vbl9lbGVtX2ZyZXFzIiBpcyBzcGVjaWZpZWQKLS0tIG9rOiBtY2VsZW0KLVNF TEVDVCBwZ19jYXRhbG9nLnBnX3NldF9hdHRyaWJ1dGVfc3RhdHMoCi0gICAgcmVsYXRpb24gPT4g J3N0YXRzX2ltcG9ydC50ZXN0Jzo6cmVnY2xhc3MsCi0gICAgYXR0bmFtZSA9PiAndGFncyc6Om5h bWUsCi0gICAgaW5oZXJpdGVkID0+IGZhbHNlOjpib29sZWFuLAotICAgIG51bGxfZnJhYyA9PiAw LjU6OnJlYWwsCi0gICAgYXZnX3dpZHRoID0+IDI6OmludGVnZXIsCi0gICAgbl9kaXN0aW5jdCA9 PiAtMC4xOjpyZWFsLAotICAgIG1vc3RfY29tbW9uX2VsZW1zID0+ICd7b25lLHRocmVlfSc6OnRl eHQsCi0gICAgbW9zdF9jb21tb25fZWxlbV9mcmVxcyA9PiAnezAuMywwLjIsMC4yLDAuMywwLjB9 Jzo6cmVhbFtdCi0gICAgKTsKLSBwZ19zZXRfYXR0cmlidXRlX3N0YXRzIAotLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCi0gCi0oMSByb3cpCi0KLVNFTEVDVCAqCi1GUk9NIHBnX3N0YXRzCi1XSEVS RSBzY2hlbWFuYW1lID0gJ3N0YXRzX2ltcG9ydCcKLUFORCB0YWJsZW5hbWUgPSAndGVzdCcKLUFO RCBpbmhlcml0ZWQgPSBmYWxzZQotQU5EIGF0dG5hbWUgPSAndGFncyc7Ci0gIHNjaGVtYW5hbWUg IHwgdGFibGVuYW1lIHwgYXR0bmFtZSB8IGluaGVyaXRlZCB8IG51bGxfZnJhYyB8IGF2Z193aWR0 aCB8IG5fZGlzdGluY3QgfCBtb3N0X2NvbW1vbl92YWxzIHwgbW9zdF9jb21tb25fZnJlcXMgfCBo aXN0b2dyYW1fYm91bmRzIHwgY29ycmVsYXRpb24gfCBtb3N0X2NvbW1vbl9lbGVtcyB8IG1vc3Rf Y29tbW9uX2VsZW1fZnJlcXMgfCBlbGVtX2NvdW50X2hpc3RvZ3JhbSB8IHJhbmdlX2xlbmd0aF9o aXN0b2dyYW0gfCByYW5nZV9lbXB0eV9mcmFjIHwgcmFuZ2VfYm91bmRzX2hpc3RvZ3JhbSAKLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQotIHN0YXRzX2ltcG9ydCB8IHRlc3QgICAgICB8IHRhZ3MgICAgfCBmICAgICAgICAg fCAgICAgICAwLjUgfCAgICAgICAgIDIgfCAgICAgICAtMC4xIHwgICAgICAgICAgICAgICAgICB8 ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIHwge29u ZSx0aHJlZX0gICAgICAgfCB7MC4zLDAuMiwwLjIsMC4zLDB9ICAgIHwgICAgICAgICAgICAgICAg ICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICB8IAotKDEg cm93KQotCi0tLSBlcnJvcjogc2NhbGFycyBjYW4ndCBoYXZlIGVsZW1fY291bnRfaGlzdG9ncmFt Ci1TRUxFQ1QgcGdfY2F0YWxvZy5wZ19zZXRfYXR0cmlidXRlX3N0YXRzKAotICAgIHJlbGF0aW9u ID0+ICdzdGF0c19pbXBvcnQudGVzdCc6OnJlZ2NsYXNzLAotICAgIGF0dG5hbWUgPT4gJ2lkJzo6 bmFtZSwKLSAgICBpbmhlcml0ZWQgPT4gZmFsc2U6OmJvb2xlYW4sCi0gICAgbnVsbF9mcmFjID0+ IDAuNTo6cmVhbCwKLSAgICBhdmdfd2lkdGggPT4gMjo6aW50ZWdlciwKLSAgICBuX2Rpc3RpbmN0 ID0+IC0wLjE6OnJlYWwsCi0gICAgZWxlbV9jb3VudF9oaXN0b2dyYW0gPT4gJ3sxLDEsMSwxLDEs MSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwx LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEs MSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwx LDEsMSwxLDEsMSwxLDEsMSwxLDF9Jzo6cmVhbFtdCi0gICAgKTsKLUVSUk9SOiAgdW5hYmxlIHRv IGRldGVybWluZSBlbGVtZW50IHR5cGUgb2YgYXR0cmlidXRlICJpZCIKLURFVEFJTDogIENhbm5v dCBzZXQgU1RBVElTVElDX0tJTkRfTUNFTEVNIG9yIFNUQVRJU1RJQ19LSU5EX0RFQ0hJU1QuCi0t LSBlcnJvcjogZWxlbV9jb3VudF9oaXN0b2dyYW0gbnVsbCBlbGVtZW50Ci1TRUxFQ1QgcGdfY2F0 YWxvZy5wZ19zZXRfYXR0cmlidXRlX3N0YXRzKAotICAgIHJlbGF0aW9uID0+ICdzdGF0c19pbXBv cnQudGVzdCc6OnJlZ2NsYXNzLAotICAgIGF0dG5hbWUgPT4gJ3RhZ3MnOjpuYW1lLAotICAgIGlu aGVyaXRlZCA9PiBmYWxzZTo6Ym9vbGVhbiwKLSAgICBudWxsX2ZyYWMgPT4gMC41OjpyZWFsLAot ICAgIGF2Z193aWR0aCA9PiAyOjppbnRlZ2VyLAotICAgIG5fZGlzdGluY3QgPT4gLTAuMTo6cmVh bCwKLSAgICBlbGVtX2NvdW50X2hpc3RvZ3JhbSA9PiAnezEsMSxOVUxMLDEsMSwxLDEsMSwxLDEs MSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwx LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEs MSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwx LDEsMSwxLDEsMX0nOjpyZWFsW10KLSAgICApOwotRVJST1I6ICAiZWxlbV9jb3VudF9oaXN0b2dy YW0iIGFycmF5IGNhbm5vdCBjb250YWluIE5VTEwgdmFsdWVzCi0tLSBvazogZWxlbV9jb3VudF9o aXN0b2dyYW0KLVNFTEVDVCBwZ19jYXRhbG9nLnBnX3NldF9hdHRyaWJ1dGVfc3RhdHMoCi0gICAg cmVsYXRpb24gPT4gJ3N0YXRzX2ltcG9ydC50ZXN0Jzo6cmVnY2xhc3MsCi0gICAgYXR0bmFtZSA9 PiAndGFncyc6Om5hbWUsCi0gICAgaW5oZXJpdGVkID0+IGZhbHNlOjpib29sZWFuLAotICAgIG51 bGxfZnJhYyA9PiAwLjU6OnJlYWwsCi0gICAgYXZnX3dpZHRoID0+IDI6OmludGVnZXIsCi0gICAg bl9kaXN0aW5jdCA9PiAtMC4xOjpyZWFsLAotICAgIGVsZW1fY291bnRfaGlzdG9ncmFtID0+ICd7 MSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwx LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEs MSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwx LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxfSc6OnJlYWxbXQotICAgICk7Ci0gcGdfc2V0 X2F0dHJpYnV0ZV9zdGF0cyAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIAotKDEgcm93KQot Ci1TRUxFQ1QgKgotRlJPTSBwZ19zdGF0cwotV0hFUkUgc2NoZW1hbmFtZSA9ICdzdGF0c19pbXBv cnQnCi1BTkQgdGFibGVuYW1lID0gJ3Rlc3QnCi1BTkQgaW5oZXJpdGVkID0gZmFsc2UKLUFORCBh dHRuYW1lID0gJ3RhZ3MnOwotICBzY2hlbWFuYW1lICB8IHRhYmxlbmFtZSB8IGF0dG5hbWUgfCBp bmhlcml0ZWQgfCBudWxsX2ZyYWMgfCBhdmdfd2lkdGggfCBuX2Rpc3RpbmN0IHwgbW9zdF9jb21t b25fdmFscyB8IG1vc3RfY29tbW9uX2ZyZXFzIHwgaGlzdG9ncmFtX2JvdW5kcyB8IGNvcnJlbGF0 aW9uIHwgbW9zdF9jb21tb25fZWxlbXMgfCBtb3N0X2NvbW1vbl9lbGVtX2ZyZXFzIHwgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1fY291bnRfaGlzdG9ncmFtICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCByYW5nZV9sZW5ndGhfaGlzdG9ncmFtIHwgcmFu Z2VfZW1wdHlfZnJhYyB8IHJhbmdlX2JvdW5kc19oaXN0b2dyYW0gCi0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KLSBzdGF0c19pbXBvcnQgfCB0ZXN0ICAgICAgfCB0YWdzICAgIHwgZiAgICAgICAgIHwg ICAgICAgMC41IHwgICAgICAgICAyIHwgICAgICAgLTAuMSB8ICAgICAgICAgICAgICAgICAgfCAg ICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICB8IHtvbmUs dGhyZWV9ICAgICAgIHwgezAuMywwLjIsMC4yLDAuMywwfSAgICB8IHsxLDEsMSwxLDEsMSwxLDEs MSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwx LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEs MSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwx LDEsMSwxLDEsMSwxLDF9IHwgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAg ICAgfCAKLSgxIHJvdykKLQotLS0gZXJyb3I6IHNjYWxhcnMgY2FuJ3QgaGF2ZSByYW5nZSBzdGF0 cwotU0VMRUNUIHBnX2NhdGFsb2cucGdfc2V0X2F0dHJpYnV0ZV9zdGF0cygKLSAgICByZWxhdGlv biA9PiAnc3RhdHNfaW1wb3J0LnRlc3QnOjpyZWdjbGFzcywKLSAgICBhdHRuYW1lID0+ICdpZCc6 Om5hbWUsCi0gICAgaW5oZXJpdGVkID0+IGZhbHNlOjpib29sZWFuLAotICAgIG51bGxfZnJhYyA9 PiAwLjU6OnJlYWwsCi0gICAgYXZnX3dpZHRoID0+IDI6OmludGVnZXIsCi0gICAgbl9kaXN0aW5j dCA9PiAtMC4xOjpyZWFsLAotICAgIHJhbmdlX2VtcHR5X2ZyYWMgPT4gMC41OjpyZWFsLAotICAg IHJhbmdlX2xlbmd0aF9oaXN0b2dyYW0gPT4gJ3szOTksNDk5LEluZmluaXR5fSc6OnRleHQKLSAg ICApOwotRVJST1I6ICBhdHRyaWJ1dGUgImlkIiBpcyBub3QgYSByYW5nZSB0eXBlCi1ERVRBSUw6 ICBDYW5ub3Qgc2V0IFNUQVRJU1RJQ19LSU5EX1JBTkdFX0xFTkdUSF9ISVNUT0dSQU0gb3IgU1RB VElTVElDX0tJTkRfQk9VTkRTX0hJU1RPR1JBTS4KLS0tIGVycm9yOiByYW5nZV9lbXB0eV9mcmFj IHJhbmdlX2xlbmd0aF9oaXN0IG51bGwgbWlzbWF0Y2gKLVNFTEVDVCBwZ19jYXRhbG9nLnBnX3Nl dF9hdHRyaWJ1dGVfc3RhdHMoCi0gICAgcmVsYXRpb24gPT4gJ3N0YXRzX2ltcG9ydC50ZXN0Jzo6 cmVnY2xhc3MsCi0gICAgYXR0bmFtZSA9PiAnYXJhbmdlJzo6bmFtZSwKLSAgICBpbmhlcml0ZWQg PT4gZmFsc2U6OmJvb2xlYW4sCi0gICAgbnVsbF9mcmFjID0+IDAuNTo6cmVhbCwKLSAgICBhdmdf d2lkdGggPT4gMjo6aW50ZWdlciwKLSAgICBuX2Rpc3RpbmN0ID0+IC0wLjE6OnJlYWwsCi0gICAg cmFuZ2VfbGVuZ3RoX2hpc3RvZ3JhbSA9PiAnezM5OSw0OTksSW5maW5pdHl9Jzo6dGV4dAotICAg ICk7Ci1FUlJPUjogICJyYW5nZV9lbXB0eV9mcmFjIiBtdXN0IGJlIHNwZWNpZmllZCB3aGVuICJy YW5nZV9sZW5ndGhfaGlzdG9ncmFtIiBpcyBzcGVjaWZpZWQKLS0tIGVycm9yOiByYW5nZV9lbXB0 eV9mcmFjIHJhbmdlX2xlbmd0aF9oaXN0IG51bGwgbWlzbWF0Y2ggcGFydCAyCi1TRUxFQ1QgcGdf Y2F0YWxvZy5wZ19zZXRfYXR0cmlidXRlX3N0YXRzKAotICAgIHJlbGF0aW9uID0+ICdzdGF0c19p bXBvcnQudGVzdCc6OnJlZ2NsYXNzLAotICAgIGF0dG5hbWUgPT4gJ2FyYW5nZSc6Om5hbWUsCi0g ICAgaW5oZXJpdGVkID0+IGZhbHNlOjpib29sZWFuLAotICAgIG51bGxfZnJhYyA9PiAwLjU6OnJl YWwsCi0gICAgYXZnX3dpZHRoID0+IDI6OmludGVnZXIsCi0gICAgbl9kaXN0aW5jdCA9PiAtMC4x OjpyZWFsLAotICAgIHJhbmdlX2VtcHR5X2ZyYWMgPT4gMC41OjpyZWFsCi0gICAgKTsKLUVSUk9S OiAgInJhbmdlX2xlbmd0aF9oaXN0b2dyYW0iIG11c3QgYmUgc3BlY2lmaWVkIHdoZW4gInJhbmdl X2VtcHR5X2ZyYWMiIGlzIHNwZWNpZmllZAotLS0gb2s6IHJhbmdlX2VtcHR5X2ZyYWMgKyByYW5n ZV9sZW5ndGhfaGlzdAotU0VMRUNUIHBnX2NhdGFsb2cucGdfc2V0X2F0dHJpYnV0ZV9zdGF0cygK LSAgICByZWxhdGlvbiA9PiAnc3RhdHNfaW1wb3J0LnRlc3QnOjpyZWdjbGFzcywKLSAgICBhdHRu YW1lID0+ICdhcmFuZ2UnOjpuYW1lLAotICAgIGluaGVyaXRlZCA9PiBmYWxzZTo6Ym9vbGVhbiwK LSAgICBudWxsX2ZyYWMgPT4gMC41OjpyZWFsLAotICAgIGF2Z193aWR0aCA9PiAyOjppbnRlZ2Vy LAotICAgIG5fZGlzdGluY3QgPT4gLTAuMTo6cmVhbCwKLSAgICByYW5nZV9lbXB0eV9mcmFjID0+ IDAuNTo6cmVhbCwKLSAgICByYW5nZV9sZW5ndGhfaGlzdG9ncmFtID0+ICd7Mzk5LDQ5OSxJbmZp bml0eX0nOjp0ZXh0Ci0gICAgKTsKLSBwZ19zZXRfYXR0cmlidXRlX3N0YXRzIAotLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCi0gCi0oMSByb3cpCi0KLVNFTEVDVCAqCi1GUk9NIHBnX3N0YXRzCi1X SEVSRSBzY2hlbWFuYW1lID0gJ3N0YXRzX2ltcG9ydCcKLUFORCB0YWJsZW5hbWUgPSAndGVzdCcK LUFORCBpbmhlcml0ZWQgPSBmYWxzZQotQU5EIGF0dG5hbWUgPSAnYXJhbmdlJzsKLSAgc2NoZW1h bmFtZSAgfCB0YWJsZW5hbWUgfCBhdHRuYW1lIHwgaW5oZXJpdGVkIHwgbnVsbF9mcmFjIHwgYXZn X3dpZHRoIHwgbl9kaXN0aW5jdCB8IG1vc3RfY29tbW9uX3ZhbHMgfCBtb3N0X2NvbW1vbl9mcmVx cyB8IGhpc3RvZ3JhbV9ib3VuZHMgfCBjb3JyZWxhdGlvbiB8IG1vc3RfY29tbW9uX2VsZW1zIHwg bW9zdF9jb21tb25fZWxlbV9mcmVxcyB8IGVsZW1fY291bnRfaGlzdG9ncmFtIHwgcmFuZ2VfbGVu Z3RoX2hpc3RvZ3JhbSB8IHJhbmdlX2VtcHR5X2ZyYWMgfCByYW5nZV9ib3VuZHNfaGlzdG9ncmFt IAotLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCi0gc3RhdHNfaW1wb3J0IHwgdGVzdCAgICAgIHwgYXJhbmdlICB8IGYgICAg ICAgICB8ICAgICAgIDAuNSB8ICAgICAgICAgMiB8ICAgICAgIC0wLjEgfCAgICAgICAgICAgICAg ICAgIHwgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAg fCAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAg ICAgICAgICAgICB8IHszOTksNDk5LEluZmluaXR5fSAgICAgfCAgICAgICAgICAgICAgMC41IHwg Ci0oMSByb3cpCi0KLS0tIGVycm9yOiBzY2FsYXJzIGNhbid0IGhhdmUgcmFuZ2Ugc3RhdHMKLVNF TEVDVCBwZ19jYXRhbG9nLnBnX3NldF9hdHRyaWJ1dGVfc3RhdHMoCi0gICAgcmVsYXRpb24gPT4g J3N0YXRzX2ltcG9ydC50ZXN0Jzo6cmVnY2xhc3MsCi0gICAgYXR0bmFtZSA9PiAnaWQnOjpuYW1l LAotICAgIGluaGVyaXRlZCA9PiBmYWxzZTo6Ym9vbGVhbiwKLSAgICBudWxsX2ZyYWMgPT4gMC41 OjpyZWFsLAotICAgIGF2Z193aWR0aCA9PiAyOjppbnRlZ2VyLAotICAgIG5fZGlzdGluY3QgPT4g LTAuMTo6cmVhbCwKLSAgICByYW5nZV9ib3VuZHNfaGlzdG9ncmFtID0+ICd7IlstMSwxKSIsIlsw LDQpIiwiWzEsNCkiLCJbMSwxMDApIn0nOjp0ZXh0Ci0gICAgKTsKLUVSUk9SOiAgYXR0cmlidXRl ICJpZCIgaXMgbm90IGEgcmFuZ2UgdHlwZQotREVUQUlMOiAgQ2Fubm90IHNldCBTVEFUSVNUSUNf S0lORF9SQU5HRV9MRU5HVEhfSElTVE9HUkFNIG9yIFNUQVRJU1RJQ19LSU5EX0JPVU5EU19ISVNU T0dSQU0uCi0tLSBvazogcmFuZ2VfYm91bmRzX2hpc3RvZ3JhbQotU0VMRUNUIHBnX2NhdGFsb2cu cGdfc2V0X2F0dHJpYnV0ZV9zdGF0cygKLSAgICByZWxhdGlvbiA9PiAnc3RhdHNfaW1wb3J0LnRl c3QnOjpyZWdjbGFzcywKLSAgICBhdHRuYW1lID0+ICdhcmFuZ2UnOjpuYW1lLAotICAgIGluaGVy aXRlZCA9PiBmYWxzZTo6Ym9vbGVhbiwKLSAgICBudWxsX2ZyYWMgPT4gMC41OjpyZWFsLAotICAg IGF2Z193aWR0aCA9PiAyOjppbnRlZ2VyLAotICAgIG5fZGlzdGluY3QgPT4gLTAuMTo6cmVhbCwK LSAgICByYW5nZV9ib3VuZHNfaGlzdG9ncmFtID0+ICd7IlstMSwxKSIsIlswLDQpIiwiWzEsNCki LCJbMSwxMDApIn0nOjp0ZXh0Ci0gICAgKTsKLSBwZ19zZXRfYXR0cmlidXRlX3N0YXRzIAotLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gCi0oMSByb3cpCi0KLVNFTEVDVCAqCi1GUk9NIHBnX3N0 YXRzCi1XSEVSRSBzY2hlbWFuYW1lID0gJ3N0YXRzX2ltcG9ydCcKLUFORCB0YWJsZW5hbWUgPSAn dGVzdCcKLUFORCBpbmhlcml0ZWQgPSBmYWxzZQotQU5EIGF0dG5hbWUgPSAnYXJhbmdlJzsKLSAg c2NoZW1hbmFtZSAgfCB0YWJsZW5hbWUgfCBhdHRuYW1lIHwgaW5oZXJpdGVkIHwgbnVsbF9mcmFj IHwgYXZnX3dpZHRoIHwgbl9kaXN0aW5jdCB8IG1vc3RfY29tbW9uX3ZhbHMgfCBtb3N0X2NvbW1v bl9mcmVxcyB8IGhpc3RvZ3JhbV9ib3VuZHMgfCBjb3JyZWxhdGlvbiB8IG1vc3RfY29tbW9uX2Vs ZW1zIHwgbW9zdF9jb21tb25fZWxlbV9mcmVxcyB8IGVsZW1fY291bnRfaGlzdG9ncmFtIHwgcmFu Z2VfbGVuZ3RoX2hpc3RvZ3JhbSB8IHJhbmdlX2VtcHR5X2ZyYWMgfCAgICAgICAgcmFuZ2VfYm91 bmRzX2hpc3RvZ3JhbSAgICAgICAgCi0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIHN0YXRzX2lt cG9ydCB8IHRlc3QgICAgICB8IGFyYW5nZSAgfCBmICAgICAgICAgfCAgICAgICAwLjUgfCAgICAg ICAgIDIgfCAgICAgICAtMC4xIHwgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAg IHwgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgfCAg ICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgfCB7Mzk5LDQ5OSxJ bmZpbml0eX0gICAgIHwgICAgICAgICAgICAgIDAuNSB8IHsiWy0xLDEpIiwiWzAsNCkiLCJbMSw0 KSIsIlsxLDEwMCkifQotKDEgcm93KQotCi0tLSBlcnJvcjogY2Fubm90IHNldCBtb3N0X2NvbW1v bl9lbGVtcyBmb3IgcmFuZ2UgdHlwZQotU0VMRUNUIHBnX2NhdGFsb2cucGdfc2V0X2F0dHJpYnV0 ZV9zdGF0cygKLSAgICByZWxhdGlvbiA9PiAnc3RhdHNfaW1wb3J0LnRlc3QnOjpyZWdjbGFzcywK LSAgICBhdHRuYW1lID0+ICdhcmFuZ2UnOjpuYW1lLAotICAgIGluaGVyaXRlZCA9PiBmYWxzZTo6 Ym9vbGVhbiwKLSAgICBudWxsX2ZyYWMgPT4gMC41OjpyZWFsLAotICAgIGF2Z193aWR0aCA9PiAy OjppbnRlZ2VyLAotICAgIG5fZGlzdGluY3QgPT4gLTAuMTo6cmVhbCwKLSAgICBtb3N0X2NvbW1v bl92YWxzID0+ICd7IlsyLDMpIiwiWzEsMikiLCJbMyw0KSJ9Jzo6dGV4dCwKLSAgICBtb3N0X2Nv bW1vbl9mcmVxcyA9PiAnezAuMywwLjI1LDAuMDV9Jzo6cmVhbFtdLAotICAgIGhpc3RvZ3JhbV9i b3VuZHMgPT4gJ3siWzEsMikiLCJbMiwzKSIsIlszLDQpIiwiWzQsNSkifSc6OnRleHQsCi0gICAg Y29ycmVsYXRpb24gPT4gMS4xOjpyZWFsLAotICAgIG1vc3RfY29tbW9uX2VsZW1zID0+ICd7Mywx fSc6OnRleHQsCi0gICAgbW9zdF9jb21tb25fZWxlbV9mcmVxcyA9PiAnezAuMywwLjIsMC4yLDAu MywwLjB9Jzo6cmVhbFtdLAotICAgIHJhbmdlX2VtcHR5X2ZyYWMgPT4gLTAuNTo6cmVhbCwKLSAg ICByYW5nZV9sZW5ndGhfaGlzdG9ncmFtID0+ICd7Mzk5LDQ5OSxJbmZpbml0eX0nOjp0ZXh0LAot ICAgIHJhbmdlX2JvdW5kc19oaXN0b2dyYW0gPT4gJ3siWy0xLDEpIiwiWzAsNCkiLCJbMSw0KSIs IlsxLDEwMCkifSc6OnRleHQKLSAgICApOwotRVJST1I6ICB1bmFibGUgdG8gZGV0ZXJtaW5lIGVs ZW1lbnQgdHlwZSBvZiBhdHRyaWJ1dGUgImFyYW5nZSIKLURFVEFJTDogIENhbm5vdCBzZXQgU1RB VElTVElDX0tJTkRfTUNFTEVNIG9yIFNUQVRJU1RJQ19LSU5EX0RFQ0hJU1QuCi0tLQotLS0gQ2xl YXIgYXR0cmlidXRlIHN0YXRzIHRvIHRyeSBhZ2FpbiB3aXRoIHJlc3RvcmUgZnVuY3Rpb25zCi0t LSAocmVsYXRpb24gc3RhdHMgd2VyZSBhbHJlYWR5IGNsZWFyZWQpLgotLS0KLVNFTEVDVAotICBw Z19jYXRhbG9nLnBnX2NsZWFyX2F0dHJpYnV0ZV9zdGF0cygKLSAgICAgICAgJ3N0YXRzX2ltcG9y dC50ZXN0Jzo6cmVnY2xhc3MsCi0gICAgICAgIHMuYXR0bmFtZSwKLSAgICAgICAgcy5pbmhlcml0 ZWQpCi1GUk9NIHBnX2NhdGFsb2cucGdfc3RhdHMgQVMgcwotV0hFUkUgcy5zY2hlbWFuYW1lID0g J3N0YXRzX2ltcG9ydCcKLUFORCBzLnRhYmxlbmFtZSA9ICd0ZXN0JwotT1JERVIgQlkgcy5hdHRu YW1lLCBzLmluaGVyaXRlZDsKLSBwZ19jbGVhcl9hdHRyaWJ1dGVfc3RhdHMgCi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQotIAotIAotIAotKDMgcm93cykKLQogLS0gcmVqZWN0OiBhcmd1bWVu dCBuYW1lIGlzIE5VTEwKIFNFTEVDVCBwZ19yZXN0b3JlX3JlbGF0aW9uX3N0YXRzKAogICAgICAg ICAncmVsYXRpb24nLCAnMCc6Om9pZDo6cmVnY2xhc3MsCkBAIC0xNDcyLDIxNiArOTEyLDYgQEAg Q1JFQVRFIElOREVYIGlzX29kZF9jbG9uZSBPTiBzdGF0c19pbXBvcnQudGVzdF9jbG9uZSgoKGNv bXApLmEgJSAyID0gMSkpOwogLS0KIC0tIENvcHkgc3RhdHMgZnJvbSB0ZXN0IHRvIHRlc3RfY2xv bmUsIGFuZCBpc19vZGQgdG8gaXNfb2RkX2Nsb25lCiAtLQotU0VMRUNUIHMuc2NoZW1hbmFtZSwg cy50YWJsZW5hbWUsIHMuYXR0bmFtZSwgcy5pbmhlcml0ZWQKLUZST00gcGdfY2F0YWxvZy5wZ19z dGF0cyBBUyBzCi1DUk9TUyBKT0lOIExBVEVSQUwKLSAgICBwZ19jYXRhbG9nLnBnX3NldF9hdHRy aWJ1dGVfc3RhdHMoCi0gICAgICAgIHJlbGF0aW9uID0+ICgnc3RhdHNfaW1wb3J0LicgfHwgcy50 YWJsZW5hbWUgfHwgJ19jbG9uZScpOjpyZWdjbGFzczo6b2lkLAotICAgICAgICBhdHRuYW1lID0+ IHMuYXR0bmFtZSwKLSAgICAgICAgaW5oZXJpdGVkID0+IHMuaW5oZXJpdGVkLAotICAgICAgICBu dWxsX2ZyYWMgPT4gcy5udWxsX2ZyYWMsCi0gICAgICAgIGF2Z193aWR0aCA9PiBzLmF2Z193aWR0 aCwKLSAgICAgICAgbl9kaXN0aW5jdCA9PiBzLm5fZGlzdGluY3QsCi0gICAgICAgIG1vc3RfY29t bW9uX3ZhbHMgPT4gcy5tb3N0X2NvbW1vbl92YWxzOjp0ZXh0LAotICAgICAgICBtb3N0X2NvbW1v bl9mcmVxcyA9PiBzLm1vc3RfY29tbW9uX2ZyZXFzLAotICAgICAgICBoaXN0b2dyYW1fYm91bmRz ID0+IHMuaGlzdG9ncmFtX2JvdW5kczo6dGV4dCwKLSAgICAgICAgY29ycmVsYXRpb24gPT4gcy5j b3JyZWxhdGlvbiwKLSAgICAgICAgbW9zdF9jb21tb25fZWxlbXMgPT4gcy5tb3N0X2NvbW1vbl9l bGVtczo6dGV4dCwKLSAgICAgICAgbW9zdF9jb21tb25fZWxlbV9mcmVxcyA9PiBzLm1vc3RfY29t bW9uX2VsZW1fZnJlcXMsCi0gICAgICAgIGVsZW1fY291bnRfaGlzdG9ncmFtID0+IHMuZWxlbV9j b3VudF9oaXN0b2dyYW0sCi0gICAgICAgIHJhbmdlX2JvdW5kc19oaXN0b2dyYW0gPT4gcy5yYW5n ZV9ib3VuZHNfaGlzdG9ncmFtOjp0ZXh0LAotICAgICAgICByYW5nZV9lbXB0eV9mcmFjID0+IHMu cmFuZ2VfZW1wdHlfZnJhYywKLSAgICAgICAgcmFuZ2VfbGVuZ3RoX2hpc3RvZ3JhbSA9PiBzLnJh bmdlX2xlbmd0aF9oaXN0b2dyYW06OnRleHQpIEFTIHIKLVdIRVJFIHMuc2NoZW1hbmFtZSA9ICdz dGF0c19pbXBvcnQnCi1BTkQgcy50YWJsZW5hbWUgSU4gKCd0ZXN0JywgJ2lzX29kZCcpCi1PUkRF UiBCWSBzLnRhYmxlbmFtZSwgcy5hdHRuYW1lLCBzLmluaGVyaXRlZDsKLSAgc2NoZW1hbmFtZSAg fCB0YWJsZW5hbWUgfCBhdHRuYW1lIHwgaW5oZXJpdGVkIAotLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tCi0gc3RhdHNfaW1wb3J0IHwgaXNfb2RkICAgIHwg ZXhwciAgICB8IGYKLSBzdGF0c19pbXBvcnQgfCB0ZXN0ICAgICAgfCBhcmFuZ2UgIHwgZgotIHN0 YXRzX2ltcG9ydCB8IHRlc3QgICAgICB8IGNvbXAgICAgfCBmCi0gc3RhdHNfaW1wb3J0IHwgdGVz dCAgICAgIHwgaWQgICAgICB8IGYKLSBzdGF0c19pbXBvcnQgfCB0ZXN0ICAgICAgfCBuYW1lICAg IHwgZgotIHN0YXRzX2ltcG9ydCB8IHRlc3QgICAgICB8IHRhZ3MgICAgfCBmCi0oNiByb3dzKQot Ci1TRUxFQ1QgYy5yZWxuYW1lLCBDT1VOVCgqKSBBUyBudW1fc3RhdHMKLUZST00gcGdfY2xhc3Mg QVMgYwotSk9JTiBwZ19zdGF0aXN0aWMgcyBPTiBzLnN0YXJlbGlkID0gYy5vaWQKLVdIRVJFIGMu cmVsbmFtZXNwYWNlID0gJ3N0YXRzX2ltcG9ydCc6OnJlZ25hbWVzcGFjZQotQU5EIGMucmVsbmFt ZSBJTiAoJ3Rlc3QnLCAndGVzdF9jbG9uZScsICdpc19vZGQnLCAnaXNfb2RkX2Nsb25lJykKLUdS T1VQIEJZIGMucmVsbmFtZQotT1JERVIgQlkgYy5yZWxuYW1lOwotICAgcmVsbmFtZSAgICB8IG51 bV9zdGF0cyAKLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCi0gaXNfb2RkICAgICAgIHwgICAg ICAgICAxCi0gaXNfb2RkX2Nsb25lIHwgICAgICAgICAxCi0gdGVzdCAgICAgICAgIHwgICAgICAg ICA1Ci0gdGVzdF9jbG9uZSAgIHwgICAgICAgICA1Ci0oNCByb3dzKQotCi0tLSBjaGVjayB0ZXN0 IG1pbnVzIHRlc3RfY2xvbmUKLVNFTEVDVAotICAgIGEuYXR0bmFtZSwgcy5zdGFpbmhlcml0LCBz LnN0YW51bGxmcmFjLCBzLnN0YXdpZHRoLCBzLnN0YWRpc3RpbmN0LAotICAgIHMuc3Rha2luZDEs IHMuc3Rha2luZDIsIHMuc3Rha2luZDMsIHMuc3Rha2luZDQsIHMuc3Rha2luZDUsCi0gICAgcy5z dGFvcDEsIHMuc3Rhb3AyLCBzLnN0YW9wMywgcy5zdGFvcDQsIHMuc3Rhb3A1LAotICAgIHMuc3Rh Y29sbDEsIHMuc3RhY29sbDIsIHMuc3RhY29sbDMsIHMuc3RhY29sbDQsIHMuc3RhY29sbDUsCi0g ICAgcy5zdGFudW1iZXJzMSwgcy5zdGFudW1iZXJzMiwgcy5zdGFudW1iZXJzMywgcy5zdGFudW1i ZXJzNCwgcy5zdGFudW1iZXJzNSwKLSAgICBzLnN0YXZhbHVlczE6OnRleHQgQVMgc3YxLCBzLnN0 YXZhbHVlczI6OnRleHQgQVMgc3YyLAotICAgIHMuc3RhdmFsdWVzMzo6dGV4dCBBUyBzdjMsIHMu c3RhdmFsdWVzNDo6dGV4dCBBUyBzdjQsCi0gICAgcy5zdGF2YWx1ZXM1Ojp0ZXh0IEFTIHN2NSwg J3Rlc3QnIEFTIGRpcmVjdGlvbgotRlJPTSBwZ19zdGF0aXN0aWMgcwotSk9JTiBwZ19hdHRyaWJ1 dGUgYSBPTiBhLmF0dHJlbGlkID0gcy5zdGFyZWxpZCBBTkQgYS5hdHRudW0gPSBzLnN0YWF0dG51 bQotV0hFUkUgcy5zdGFyZWxpZCA9ICdzdGF0c19pbXBvcnQudGVzdCc6OnJlZ2NsYXNzCi1FWENF UFQKLVNFTEVDVAotICAgIGEuYXR0bmFtZSwgcy5zdGFpbmhlcml0LCBzLnN0YW51bGxmcmFjLCBz LnN0YXdpZHRoLCBzLnN0YWRpc3RpbmN0LAotICAgIHMuc3Rha2luZDEsIHMuc3Rha2luZDIsIHMu c3Rha2luZDMsIHMuc3Rha2luZDQsIHMuc3Rha2luZDUsCi0gICAgcy5zdGFvcDEsIHMuc3Rhb3Ay LCBzLnN0YW9wMywgcy5zdGFvcDQsIHMuc3Rhb3A1LAotICAgIHMuc3RhY29sbDEsIHMuc3RhY29s bDIsIHMuc3RhY29sbDMsIHMuc3RhY29sbDQsIHMuc3RhY29sbDUsCi0gICAgcy5zdGFudW1iZXJz MSwgcy5zdGFudW1iZXJzMiwgcy5zdGFudW1iZXJzMywgcy5zdGFudW1iZXJzNCwgcy5zdGFudW1i ZXJzNSwKLSAgICBzLnN0YXZhbHVlczE6OnRleHQgQVMgc3YxLCBzLnN0YXZhbHVlczI6OnRleHQg QVMgc3YyLAotICAgIHMuc3RhdmFsdWVzMzo6dGV4dCBBUyBzdjMsIHMuc3RhdmFsdWVzNDo6dGV4 dCBBUyBzdjQsCi0gICAgcy5zdGF2YWx1ZXM1Ojp0ZXh0IEFTIHN2NSwgJ3Rlc3QnIEFTIGRpcmVj dGlvbgotRlJPTSBwZ19zdGF0aXN0aWMgcwotSk9JTiBwZ19hdHRyaWJ1dGUgYSBPTiBhLmF0dHJl bGlkID0gcy5zdGFyZWxpZCBBTkQgYS5hdHRudW0gPSBzLnN0YWF0dG51bQotV0hFUkUgcy5zdGFy ZWxpZCA9ICdzdGF0c19pbXBvcnQudGVzdF9jbG9uZSc6OnJlZ2NsYXNzOwotIGF0dG5hbWUgfCBz dGFpbmhlcml0IHwgc3RhbnVsbGZyYWMgfCBzdGF3aWR0aCB8IHN0YWRpc3RpbmN0IHwgc3Rha2lu ZDEgfCBzdGFraW5kMiB8IHN0YWtpbmQzIHwgc3Rha2luZDQgfCBzdGFraW5kNSB8IHN0YW9wMSB8 IHN0YW9wMiB8IHN0YW9wMyB8IHN0YW9wNCB8IHN0YW9wNSB8IHN0YWNvbGwxIHwgc3RhY29sbDIg fCBzdGFjb2xsMyB8IHN0YWNvbGw0IHwgc3RhY29sbDUgfCBzdGFudW1iZXJzMSB8IHN0YW51bWJl cnMyIHwgc3RhbnVtYmVyczMgfCBzdGFudW1iZXJzNCB8IHN0YW51bWJlcnM1IHwgc3YxIHwgc3Yy IHwgc3YzIHwgc3Y0IHwgc3Y1IHwgZGlyZWN0aW9uIAotLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0t LS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0rLS0t LS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0r LS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0t LSstLS0tLSstLS0tLS0tLS0tLQotKDAgcm93cykKLQotLS0gY2hlY2sgdGVzdF9jbG9uZSBtaW51 cyB0ZXN0Ci1TRUxFQ1QKLSAgICBhLmF0dG5hbWUsIHMuc3RhaW5oZXJpdCwgcy5zdGFudWxsZnJh Yywgcy5zdGF3aWR0aCwgcy5zdGFkaXN0aW5jdCwKLSAgICBzLnN0YWtpbmQxLCBzLnN0YWtpbmQy LCBzLnN0YWtpbmQzLCBzLnN0YWtpbmQ0LCBzLnN0YWtpbmQ1LAotICAgIHMuc3Rhb3AxLCBzLnN0 YW9wMiwgcy5zdGFvcDMsIHMuc3Rhb3A0LCBzLnN0YW9wNSwKLSAgICBzLnN0YWNvbGwxLCBzLnN0 YWNvbGwyLCBzLnN0YWNvbGwzLCBzLnN0YWNvbGw0LCBzLnN0YWNvbGw1LAotICAgIHMuc3RhbnVt YmVyczEsIHMuc3RhbnVtYmVyczIsIHMuc3RhbnVtYmVyczMsIHMuc3RhbnVtYmVyczQsIHMuc3Rh bnVtYmVyczUsCi0gICAgcy5zdGF2YWx1ZXMxOjp0ZXh0IEFTIHN2MSwgcy5zdGF2YWx1ZXMyOjp0 ZXh0IEFTIHN2MiwKLSAgICBzLnN0YXZhbHVlczM6OnRleHQgQVMgc3YzLCBzLnN0YXZhbHVlczQ6 OnRleHQgQVMgc3Y0LAotICAgIHMuc3RhdmFsdWVzNTo6dGV4dCBBUyBzdjUsICd0ZXN0X2Nsb25l JyBBUyBkaXJlY3Rpb24KLUZST00gcGdfc3RhdGlzdGljIHMKLUpPSU4gcGdfYXR0cmlidXRlIGEg T04gYS5hdHRyZWxpZCA9IHMuc3RhcmVsaWQgQU5EIGEuYXR0bnVtID0gcy5zdGFhdHRudW0KLVdI RVJFIHMuc3RhcmVsaWQgPSAnc3RhdHNfaW1wb3J0LnRlc3RfY2xvbmUnOjpyZWdjbGFzcwotRVhD RVBUCi1TRUxFQ1QKLSAgICBhLmF0dG5hbWUsIHMuc3RhaW5oZXJpdCwgcy5zdGFudWxsZnJhYywg cy5zdGF3aWR0aCwgcy5zdGFkaXN0aW5jdCwKLSAgICBzLnN0YWtpbmQxLCBzLnN0YWtpbmQyLCBz LnN0YWtpbmQzLCBzLnN0YWtpbmQ0LCBzLnN0YWtpbmQ1LAotICAgIHMuc3Rhb3AxLCBzLnN0YW9w Miwgcy5zdGFvcDMsIHMuc3Rhb3A0LCBzLnN0YW9wNSwKLSAgICBzLnN0YWNvbGwxLCBzLnN0YWNv bGwyLCBzLnN0YWNvbGwzLCBzLnN0YWNvbGw0LCBzLnN0YWNvbGw1LAotICAgIHMuc3RhbnVtYmVy czEsIHMuc3RhbnVtYmVyczIsIHMuc3RhbnVtYmVyczMsIHMuc3RhbnVtYmVyczQsIHMuc3RhbnVt YmVyczUsCi0gICAgcy5zdGF2YWx1ZXMxOjp0ZXh0IEFTIHN2MSwgcy5zdGF2YWx1ZXMyOjp0ZXh0 IEFTIHN2MiwKLSAgICBzLnN0YXZhbHVlczM6OnRleHQgQVMgc3YzLCBzLnN0YXZhbHVlczQ6OnRl eHQgQVMgc3Y0LAotICAgIHMuc3RhdmFsdWVzNTo6dGV4dCBBUyBzdjUsICd0ZXN0X2Nsb25lJyBB UyBkaXJlY3Rpb24KLUZST00gcGdfc3RhdGlzdGljIHMKLUpPSU4gcGdfYXR0cmlidXRlIGEgT04g YS5hdHRyZWxpZCA9IHMuc3RhcmVsaWQgQU5EIGEuYXR0bnVtID0gcy5zdGFhdHRudW0KLVdIRVJF IHMuc3RhcmVsaWQgPSAnc3RhdHNfaW1wb3J0LnRlc3QnOjpyZWdjbGFzczsKLSBhdHRuYW1lIHwg c3RhaW5oZXJpdCB8IHN0YW51bGxmcmFjIHwgc3Rhd2lkdGggfCBzdGFkaXN0aW5jdCB8IHN0YWtp bmQxIHwgc3Rha2luZDIgfCBzdGFraW5kMyB8IHN0YWtpbmQ0IHwgc3Rha2luZDUgfCBzdGFvcDEg fCBzdGFvcDIgfCBzdGFvcDMgfCBzdGFvcDQgfCBzdGFvcDUgfCBzdGFjb2xsMSB8IHN0YWNvbGwy IHwgc3RhY29sbDMgfCBzdGFjb2xsNCB8IHN0YWNvbGw1IHwgc3RhbnVtYmVyczEgfCBzdGFudW1i ZXJzMiB8IHN0YW51bWJlcnMzIHwgc3RhbnVtYmVyczQgfCBzdGFudW1iZXJzNSB8IHN2MSB8IHN2 MiB8IHN2MyB8IHN2NCB8IHN2NSB8IGRpcmVjdGlvbiAKLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0t LS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKy0t LS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0t Ky0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0t LS0rLS0tLS0rLS0tLS0tLS0tLS0KLSgwIHJvd3MpCi0KLS0tIGNoZWNrIGlzX29kZCBtaW51cyBp c19vZGRfY2xvbmUKLVNFTEVDVAotICAgIGEuYXR0bmFtZSwgcy5zdGFpbmhlcml0LCBzLnN0YW51 bGxmcmFjLCBzLnN0YXdpZHRoLCBzLnN0YWRpc3RpbmN0LAotICAgIHMuc3Rha2luZDEsIHMuc3Rh a2luZDIsIHMuc3Rha2luZDMsIHMuc3Rha2luZDQsIHMuc3Rha2luZDUsCi0gICAgcy5zdGFvcDEs IHMuc3Rhb3AyLCBzLnN0YW9wMywgcy5zdGFvcDQsIHMuc3Rhb3A1LAotICAgIHMuc3RhY29sbDEs IHMuc3RhY29sbDIsIHMuc3RhY29sbDMsIHMuc3RhY29sbDQsIHMuc3RhY29sbDUsCi0gICAgcy5z dGFudW1iZXJzMSwgcy5zdGFudW1iZXJzMiwgcy5zdGFudW1iZXJzMywgcy5zdGFudW1iZXJzNCwg cy5zdGFudW1iZXJzNSwKLSAgICBzLnN0YXZhbHVlczE6OnRleHQgQVMgc3YxLCBzLnN0YXZhbHVl czI6OnRleHQgQVMgc3YyLAotICAgIHMuc3RhdmFsdWVzMzo6dGV4dCBBUyBzdjMsIHMuc3RhdmFs dWVzNDo6dGV4dCBBUyBzdjQsCi0gICAgcy5zdGF2YWx1ZXM1Ojp0ZXh0IEFTIHN2NSwgJ2lzX29k ZCcgQVMgZGlyZWN0aW9uCi1GUk9NIHBnX3N0YXRpc3RpYyBzCi1KT0lOIHBnX2F0dHJpYnV0ZSBh IE9OIGEuYXR0cmVsaWQgPSBzLnN0YXJlbGlkIEFORCBhLmF0dG51bSA9IHMuc3RhYXR0bnVtCi1X SEVSRSBzLnN0YXJlbGlkID0gJ3N0YXRzX2ltcG9ydC5pc19vZGQnOjpyZWdjbGFzcwotRVhDRVBU Ci1TRUxFQ1QKLSAgICBhLmF0dG5hbWUsIHMuc3RhaW5oZXJpdCwgcy5zdGFudWxsZnJhYywgcy5z dGF3aWR0aCwgcy5zdGFkaXN0aW5jdCwKLSAgICBzLnN0YWtpbmQxLCBzLnN0YWtpbmQyLCBzLnN0 YWtpbmQzLCBzLnN0YWtpbmQ0LCBzLnN0YWtpbmQ1LAotICAgIHMuc3Rhb3AxLCBzLnN0YW9wMiwg cy5zdGFvcDMsIHMuc3Rhb3A0LCBzLnN0YW9wNSwKLSAgICBzLnN0YWNvbGwxLCBzLnN0YWNvbGwy LCBzLnN0YWNvbGwzLCBzLnN0YWNvbGw0LCBzLnN0YWNvbGw1LAotICAgIHMuc3RhbnVtYmVyczEs IHMuc3RhbnVtYmVyczIsIHMuc3RhbnVtYmVyczMsIHMuc3RhbnVtYmVyczQsIHMuc3RhbnVtYmVy czUsCi0gICAgcy5zdGF2YWx1ZXMxOjp0ZXh0IEFTIHN2MSwgcy5zdGF2YWx1ZXMyOjp0ZXh0IEFT IHN2MiwKLSAgICBzLnN0YXZhbHVlczM6OnRleHQgQVMgc3YzLCBzLnN0YXZhbHVlczQ6OnRleHQg QVMgc3Y0LAotICAgIHMuc3RhdmFsdWVzNTo6dGV4dCBBUyBzdjUsICdpc19vZGQnIEFTIGRpcmVj dGlvbgotRlJPTSBwZ19zdGF0aXN0aWMgcwotSk9JTiBwZ19hdHRyaWJ1dGUgYSBPTiBhLmF0dHJl bGlkID0gcy5zdGFyZWxpZCBBTkQgYS5hdHRudW0gPSBzLnN0YWF0dG51bQotV0hFUkUgcy5zdGFy ZWxpZCA9ICdzdGF0c19pbXBvcnQuaXNfb2RkX2Nsb25lJzo6cmVnY2xhc3M7Ci0gYXR0bmFtZSB8 IHN0YWluaGVyaXQgfCBzdGFudWxsZnJhYyB8IHN0YXdpZHRoIHwgc3RhZGlzdGluY3QgfCBzdGFr aW5kMSB8IHN0YWtpbmQyIHwgc3Rha2luZDMgfCBzdGFraW5kNCB8IHN0YWtpbmQ1IHwgc3Rhb3Ax IHwgc3Rhb3AyIHwgc3Rhb3AzIHwgc3Rhb3A0IHwgc3Rhb3A1IHwgc3RhY29sbDEgfCBzdGFjb2xs MiB8IHN0YWNvbGwzIHwgc3RhY29sbDQgfCBzdGFjb2xsNSB8IHN0YW51bWJlcnMxIHwgc3RhbnVt YmVyczIgfCBzdGFudW1iZXJzMyB8IHN0YW51bWJlcnM0IHwgc3RhbnVtYmVyczUgfCBzdjEgfCBz djIgfCBzdjMgfCBzdjQgfCBzdjUgfCBkaXJlY3Rpb24gCi0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0t LS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSst LS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0t LSstLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0t LS0tKy0tLS0tKy0tLS0tLS0tLS0tCi0oMCByb3dzKQotCi0tLSBjaGVjayBpc19vZGRfY2xvbmUg bWludXMgaXNfb2RkCi1TRUxFQ1QKLSAgICBhLmF0dG5hbWUsIHMuc3RhaW5oZXJpdCwgcy5zdGFu dWxsZnJhYywgcy5zdGF3aWR0aCwgcy5zdGFkaXN0aW5jdCwKLSAgICBzLnN0YWtpbmQxLCBzLnN0 YWtpbmQyLCBzLnN0YWtpbmQzLCBzLnN0YWtpbmQ0LCBzLnN0YWtpbmQ1LAotICAgIHMuc3Rhb3Ax LCBzLnN0YW9wMiwgcy5zdGFvcDMsIHMuc3Rhb3A0LCBzLnN0YW9wNSwKLSAgICBzLnN0YWNvbGwx LCBzLnN0YWNvbGwyLCBzLnN0YWNvbGwzLCBzLnN0YWNvbGw0LCBzLnN0YWNvbGw1LAotICAgIHMu c3RhbnVtYmVyczEsIHMuc3RhbnVtYmVyczIsIHMuc3RhbnVtYmVyczMsIHMuc3RhbnVtYmVyczQs IHMuc3RhbnVtYmVyczUsCi0gICAgcy5zdGF2YWx1ZXMxOjp0ZXh0IEFTIHN2MSwgcy5zdGF2YWx1 ZXMyOjp0ZXh0IEFTIHN2MiwKLSAgICBzLnN0YXZhbHVlczM6OnRleHQgQVMgc3YzLCBzLnN0YXZh bHVlczQ6OnRleHQgQVMgc3Y0LAotICAgIHMuc3RhdmFsdWVzNTo6dGV4dCBBUyBzdjUsICdpc19v ZGRfY2xvbmUnIEFTIGRpcmVjdGlvbgotRlJPTSBwZ19zdGF0aXN0aWMgcwotSk9JTiBwZ19hdHRy aWJ1dGUgYSBPTiBhLmF0dHJlbGlkID0gcy5zdGFyZWxpZCBBTkQgYS5hdHRudW0gPSBzLnN0YWF0 dG51bQotV0hFUkUgcy5zdGFyZWxpZCA9ICdzdGF0c19pbXBvcnQuaXNfb2RkX2Nsb25lJzo6cmVn Y2xhc3MKLUVYQ0VQVAotU0VMRUNUCi0gICAgYS5hdHRuYW1lLCBzLnN0YWluaGVyaXQsIHMuc3Rh bnVsbGZyYWMsIHMuc3Rhd2lkdGgsIHMuc3RhZGlzdGluY3QsCi0gICAgcy5zdGFraW5kMSwgcy5z dGFraW5kMiwgcy5zdGFraW5kMywgcy5zdGFraW5kNCwgcy5zdGFraW5kNSwKLSAgICBzLnN0YW9w MSwgcy5zdGFvcDIsIHMuc3Rhb3AzLCBzLnN0YW9wNCwgcy5zdGFvcDUsCi0gICAgcy5zdGFjb2xs MSwgcy5zdGFjb2xsMiwgcy5zdGFjb2xsMywgcy5zdGFjb2xsNCwgcy5zdGFjb2xsNSwKLSAgICBz LnN0YW51bWJlcnMxLCBzLnN0YW51bWJlcnMyLCBzLnN0YW51bWJlcnMzLCBzLnN0YW51bWJlcnM0 LCBzLnN0YW51bWJlcnM1LAotICAgIHMuc3RhdmFsdWVzMTo6dGV4dCBBUyBzdjEsIHMuc3RhdmFs dWVzMjo6dGV4dCBBUyBzdjIsCi0gICAgcy5zdGF2YWx1ZXMzOjp0ZXh0IEFTIHN2Mywgcy5zdGF2 YWx1ZXM0Ojp0ZXh0IEFTIHN2NCwKLSAgICBzLnN0YXZhbHVlczU6OnRleHQgQVMgc3Y1LCAnaXNf b2RkX2Nsb25lJyBBUyBkaXJlY3Rpb24KLUZST00gcGdfc3RhdGlzdGljIHMKLUpPSU4gcGdfYXR0 cmlidXRlIGEgT04gYS5hdHRyZWxpZCA9IHMuc3RhcmVsaWQgQU5EIGEuYXR0bnVtID0gcy5zdGFh dHRudW0KLVdIRVJFIHMuc3RhcmVsaWQgPSAnc3RhdHNfaW1wb3J0LmlzX29kZCc6OnJlZ2NsYXNz OwotIGF0dG5hbWUgfCBzdGFpbmhlcml0IHwgc3RhbnVsbGZyYWMgfCBzdGF3aWR0aCB8IHN0YWRp c3RpbmN0IHwgc3Rha2luZDEgfCBzdGFraW5kMiB8IHN0YWtpbmQzIHwgc3Rha2luZDQgfCBzdGFr aW5kNSB8IHN0YW9wMSB8IHN0YW9wMiB8IHN0YW9wMyB8IHN0YW9wNCB8IHN0YW9wNSB8IHN0YWNv bGwxIHwgc3RhY29sbDIgfCBzdGFjb2xsMyB8IHN0YWNvbGw0IHwgc3RhY29sbDUgfCBzdGFudW1i ZXJzMSB8IHN0YW51bWJlcnMyIHwgc3RhbnVtYmVyczMgfCBzdGFudW1iZXJzNCB8IHN0YW51bWJl cnM1IHwgc3YxIHwgc3YyIHwgc3YzIHwgc3Y0IHwgc3Y1IHwgZGlyZWN0aW9uIAotLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0t LS0rLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0t LS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLSst LS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLS0tLS0tLQotKDAgcm93cykKLQotLS0KLVNFTEVD VCByZWxwYWdlcywgcmVsdHVwbGVzLCByZWxhbGx2aXNpYmxlCi1GUk9NIHBnX2NsYXNzCi1XSEVS RSBvaWQgPSAnc3RhdHNfaW1wb3J0LnRlc3QnOjpyZWdjbGFzczsKLSByZWxwYWdlcyB8IHJlbHR1 cGxlcyB8IHJlbGFsbHZpc2libGUgCi0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLQotICAgICAgICAxIHwgICAgICAgICA0IHwgICAgICAgICAgICAgMAotKDEgcm93KQotCi0t LQotLS0gQ2xlYXIgY2xvbmUgc3RhdHMgdG8gdHJ5IGFnYWluIHdpdGggcGdfcmVzdG9yZV9hdHRy aWJ1dGVfc3RhdHMKLS0tCi1TRUxFQ1QKLSAgcGdfY2F0YWxvZy5wZ19jbGVhcl9hdHRyaWJ1dGVf c3RhdHMoCi0gICAgICAgICgnc3RhdHNfaW1wb3J0LicgfHwgcy50YWJsZW5hbWUpOjpyZWdjbGFz cywKLSAgICAgICAgcy5hdHRuYW1lLAotICAgICAgICBzLmluaGVyaXRlZCkKLUZST00gcGdfY2F0 YWxvZy5wZ19zdGF0cyBBUyBzCi1XSEVSRSBzLnNjaGVtYW5hbWUgPSAnc3RhdHNfaW1wb3J0Jwot QU5EIHMudGFibGVuYW1lIElOICgndGVzdF9jbG9uZScsICdpc19vZGRfY2xvbmUnKQotT1JERVIg Qlkgcy50YWJsZW5hbWUsIHMuYXR0bmFtZSwgcy5pbmhlcml0ZWQ7Ci0gcGdfY2xlYXJfYXR0cmli dXRlX3N0YXRzIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAKLSAKLSAKLSAKLSAKLSAK LSg2IHJvd3MpCi0KLVNFTEVDVAotU0VMRUNUIENPVU5UKCopCi1GUk9NIHBnX2NhdGFsb2cucGdf c3RhdHMgQVMgcwotV0hFUkUgcy5zY2hlbWFuYW1lID0gJ3N0YXRzX2ltcG9ydCcKLUFORCBzLnRh YmxlbmFtZSBJTiAoJ3Rlc3RfY2xvbmUnLCAnaXNfb2RkX2Nsb25lJyk7Ci1FUlJPUjogIHN5bnRh eCBlcnJvciBhdCBvciBuZWFyICJTRUxFQ1QiCi1MSU5FIDI6IFNFTEVDVCBDT1VOVCgqKQotICAg ICAgICBeCi0tLQotLS0gQ29weSBzdGF0cyBmcm9tIHRlc3QgdG8gdGVzdF9jbG9uZSwgYW5kIGlz X29kZCB0byBpc19vZGRfY2xvbmUKLS0tCiBTRUxFQ1Qgcy5zY2hlbWFuYW1lLCBzLnRhYmxlbmFt ZSwgcy5hdHRuYW1lLCBzLmluaGVyaXRlZCwgci4qCiBGUk9NIHBnX2NhdGFsb2cucGdfc3RhdHMg QVMgcwogQ1JPU1MgSk9JTiBMQVRFUkFMCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3Nx bC9zdGF0c19pbXBvcnQuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3RhdHNfaW1wb3J0LnNx bAppbmRleCA5NzQwYWIzZmYwMi4uZjI2Zjc4NTc3NDggMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL3N0YXRzX2ltcG9ydC5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3Rh dHNfaW1wb3J0LnNxbApAQCAtMTUsNjMgKzE1LDE5IEBAIENSRUFURSBUQUJMRSBzdGF0c19pbXBv cnQudGVzdCgKICAgICB0YWdzIHRleHRbXQogKSBXSVRIIChhdXRvdmFjdXVtX2VuYWJsZWQgPSBm YWxzZSk7CiAKLS0tIHN0YXJ0aW5nIHN0YXRzCi1TRUxFQ1QgcmVscGFnZXMsIHJlbHR1cGxlcywg cmVsYWxsdmlzaWJsZQotRlJPTSBwZ19jbGFzcwotV0hFUkUgb2lkID0gJ3N0YXRzX2ltcG9ydC50 ZXN0Jzo6cmVnY2xhc3M7Ci0KLS0tIGVycm9yOiByZWdjbGFzcyBub3QgZm91bmQKLVNFTEVDVAot ICAgIHBnX2NhdGFsb2cucGdfc2V0X3JlbGF0aW9uX3N0YXRzKAotICAgICAgICByZWxhdGlvbiA9 PiAwOjpPaWQsCi0gICAgICAgIHJlbHBhZ2VzID0+IDE3OjppbnRlZ2VyLAotICAgICAgICByZWx0 dXBsZXMgPT4gNDAwLjA6OnJlYWwsCi0gICAgICAgIHJlbGFsbHZpc2libGUgPT4gNDo6aW50ZWdl cik7Ci0KLS0tIHJlbHBhZ2VzIGRlZmF1bHQKLVNFTEVDVAotICAgIHBnX2NhdGFsb2cucGdfc2V0 X3JlbGF0aW9uX3N0YXRzKAotICAgICAgICByZWxhdGlvbiA9PiAnc3RhdHNfaW1wb3J0LnRlc3Qn OjpyZWdjbGFzcywKLSAgICAgICAgcmVscGFnZXMgPT4gTlVMTDo6aW50ZWdlciwKLSAgICAgICAg cmVsdHVwbGVzID0+IDQwMC4wOjpyZWFsLAotICAgICAgICByZWxhbGx2aXNpYmxlID0+IDQ6Omlu dGVnZXIpOwotCi0tLSByZWx0dXBsZXMgZGVmYXVsdAotU0VMRUNUCi0gICAgcGdfY2F0YWxvZy5w Z19zZXRfcmVsYXRpb25fc3RhdHMoCi0gICAgICAgIHJlbGF0aW9uID0+ICdzdGF0c19pbXBvcnQu dGVzdCc6OnJlZ2NsYXNzLAotICAgICAgICByZWxwYWdlcyA9PiAxNzo6aW50ZWdlciwKLSAgICAg ICAgcmVsdHVwbGVzID0+IE5VTEw6OnJlYWwsCi0gICAgICAgIHJlbGFsbHZpc2libGUgPT4gNDo6 aW50ZWdlcik7Ci0KLS0tIHJlbGFsbHZpc2libGUgZGVmYXVsdAotU0VMRUNUCi0gICAgcGdfY2F0 YWxvZy5wZ19zZXRfcmVsYXRpb25fc3RhdHMoCi0gICAgICAgIHJlbGF0aW9uID0+ICdzdGF0c19p bXBvcnQudGVzdCc6OnJlZ2NsYXNzLAotICAgICAgICByZWxwYWdlcyA9PiAxNzo6aW50ZWdlciwK LSAgICAgICAgcmVsdHVwbGVzID0+IDQwMC4wOjpyZWFsLAotICAgICAgICByZWxhbGx2aXNpYmxl ID0+IE5VTEw6OmludGVnZXIpOwotCi0tLSBuYW1lZCBhcmd1bWVudHMKLVNFTEVDVAotICAgIHBn X2NhdGFsb2cucGdfc2V0X3JlbGF0aW9uX3N0YXRzKAotICAgICAgICByZWxhdGlvbiA9PiAnc3Rh dHNfaW1wb3J0LnRlc3QnOjpyZWdjbGFzcywKLSAgICAgICAgcmVscGFnZXMgPT4gMTc6OmludGVn ZXIsCi0gICAgICAgIHJlbHR1cGxlcyA9PiA0MDAuMDo6cmVhbCwKLSAgICAgICAgcmVsYWxsdmlz aWJsZSA9PiA0OjppbnRlZ2VyKTsKK0NSRUFURSBJTkRFWCB0ZXN0X2kgT04gc3RhdHNfaW1wb3J0 LnRlc3QoaWQpOwogCistLSBzdGFydGluZyBzdGF0cwogU0VMRUNUIHJlbHBhZ2VzLCByZWx0dXBs ZXMsIHJlbGFsbHZpc2libGUKIEZST00gcGdfY2xhc3MKIFdIRVJFIG9pZCA9ICdzdGF0c19pbXBv cnQudGVzdCc6OnJlZ2NsYXNzOwogCi1DUkVBVEUgSU5ERVggdGVzdF9pIE9OIHN0YXRzX2ltcG9y dC50ZXN0KGlkKTsKLQogQkVHSU47CiAtLSByZWd1bGFyIGluZGV4ZXMgaGF2ZSBzcGVjaWFsIGNh c2UgbG9ja2luZyBydWxlcwogU0VMRUNUCi0gICAgcGdfY2F0YWxvZy5wZ19zZXRfcmVsYXRpb25f c3RhdHMoCi0gICAgICAgIHJlbGF0aW9uID0+ICdzdGF0c19pbXBvcnQudGVzdF9pJzo6cmVnY2xh c3MsCi0gICAgICAgIHJlbHBhZ2VzID0+IDE4OjppbnRlZ2VyKTsKKyAgICBwZ19jYXRhbG9nLnBn X3Jlc3RvcmVfcmVsYXRpb25fc3RhdHMoCisgICAgICAgICdyZWxhdGlvbicsICdzdGF0c19pbXBv cnQudGVzdF9pJzo6cmVnY2xhc3MsCisgICAgICAgICdyZWxwYWdlcycsIDE4OjppbnRlZ2VyKTsK IAogU0VMRUNUIG1vZGUgRlJPTSBwZ19sb2NrcwogV0hFUkUgcmVsYXRpb24gPSAnc3RhdHNfaW1w b3J0LnRlc3QnOjpyZWdjbGFzcyBBTkQKQEAgLTg4LDIyICs0NCw2IEBAIFNFTEVDVAogICAgICAg ICAncmVsYXRpb24nLCAnc3RhdHNfaW1wb3J0LnRlc3RfaSc6OnJlZ2NsYXNzLAogICAgICAgICAn cmVscGFnZXMnLCAxOTo6aW50ZWdlciApOwogCi0tLSBwb3NpdGlvbmFsIGFyZ3VtZW50cwotU0VM RUNUCi0gICAgcGdfY2F0YWxvZy5wZ19zZXRfcmVsYXRpb25fc3RhdHMoCi0gICAgICAgICdzdGF0 c19pbXBvcnQudGVzdCc6OnJlZ2NsYXNzLAotICAgICAgICAxODo6aW50ZWdlciwKLSAgICAgICAg NDAxLjA6OnJlYWwsCi0gICAgICAgIDU6OmludGVnZXIpOwotCi1TRUxFQ1QgcmVscGFnZXMsIHJl bHR1cGxlcywgcmVsYWxsdmlzaWJsZQotRlJPTSBwZ19jbGFzcwotV0hFUkUgb2lkID0gJ3N0YXRz X2ltcG9ydC50ZXN0Jzo6cmVnY2xhc3M7Ci0KLVNFTEVDVCByZWxwYWdlcywgcmVsdHVwbGVzLCBy ZWxhbGx2aXNpYmxlCi1GUk9NIHBnX2NsYXNzCi1XSEVSRSBvaWQgPSAnc3RhdHNfaW1wb3J0LnRl c3QnOjpyZWdjbGFzczsKLQogLS0gY2xlYXIKIFNFTEVDVAogICAgIHBnX2NhdGFsb2cucGdfY2xl YXJfcmVsYXRpb25fc3RhdHMoCkBAIC0xNDEsMTQgKzgxLDE0IEBAIFdIRVJFIG9pZCA9ICdzdGF0 c19pbXBvcnQucGFydF9wYXJlbnQnOjpyZWdjbGFzczsKIC0tIGFsdGhvdWdoIHBhcnRpdGlvbmVk IHRhYmxlcyBoYXZlIG5vIHN0b3JhZ2UsIHNldHRpbmcgcmVscGFnZXMgdG8gYQogLS0gcG9zaXRp dmUgdmFsdWUgaXMgc3RpbGwgYWxsb3dlZAogU0VMRUNUCi0gICAgcGdfY2F0YWxvZy5wZ19zZXRf cmVsYXRpb25fc3RhdHMoCi0gICAgICAgIHJlbGF0aW9uID0+ICdzdGF0c19pbXBvcnQucGFydF9w YXJlbnRfaSc6OnJlZ2NsYXNzLAotICAgICAgICByZWxwYWdlcyA9PiAyOjppbnRlZ2VyKTsKKyAg ICBwZ19jYXRhbG9nLnBnX3Jlc3RvcmVfcmVsYXRpb25fc3RhdHMoCisgICAgICAgICdyZWxhdGlv bicsICdzdGF0c19pbXBvcnQucGFydF9wYXJlbnRfaSc6OnJlZ2NsYXNzLAorICAgICAgICAncmVs cGFnZXMnLCAyOjppbnRlZ2VyKTsKIAogU0VMRUNUCi0gICAgcGdfY2F0YWxvZy5wZ19zZXRfcmVs YXRpb25fc3RhdHMoCi0gICAgICAgIHJlbGF0aW9uID0+ICdzdGF0c19pbXBvcnQucGFydF9wYXJl bnQnOjpyZWdjbGFzcywKLSAgICAgICAgcmVscGFnZXMgPT4gMjo6aW50ZWdlcik7CisgICAgcGdf Y2F0YWxvZy5wZ19yZXN0b3JlX3JlbGF0aW9uX3N0YXRzKAorICAgICAgICAncmVsYXRpb24nLCAn c3RhdHNfaW1wb3J0LnBhcnRfcGFyZW50Jzo6cmVnY2xhc3MsCisgICAgICAgICdyZWxwYWdlcycs IDI6OmludGVnZXIpOwogCiAtLQogLS0gUGFydGl0aW9uZWQgaW5kZXhlcyBhcmVuJ3QgYW5hbHl6 ZWQgYnV0IGl0IGlzIHBvc3NpYmxlIHRvIHNldApAQCAtMTU5LDkgKzk5LDkgQEAgU0VMRUNUCiBC RUdJTjsKIAogU0VMRUNUCi0gICAgcGdfY2F0YWxvZy5wZ19zZXRfcmVsYXRpb25fc3RhdHMoCi0g ICAgICAgIHJlbGF0aW9uID0+ICdzdGF0c19pbXBvcnQucGFydF9wYXJlbnRfaSc6OnJlZ2NsYXNz LAotICAgICAgICByZWxwYWdlcyA9PiAyOjppbnRlZ2VyKTsKKyAgICBwZ19jYXRhbG9nLnBnX3Jl c3RvcmVfcmVsYXRpb25fc3RhdHMoCisgICAgICAgICdyZWxhdGlvbicsICdzdGF0c19pbXBvcnQu cGFydF9wYXJlbnRfaSc6OnJlZ2NsYXNzLAorICAgICAgICAncmVscGFnZXMnLCAyOjppbnRlZ2Vy KTsKIAogU0VMRUNUIG1vZGUgRlJPTSBwZ19sb2NrcwogV0hFUkUgcmVsYXRpb24gPSAnc3RhdHNf aW1wb3J0LnBhcnRfcGFyZW50Jzo6cmVnY2xhc3MgQU5ECkBAIC0xODAsNTEgKzEyMCw5IEBAIFNF TEVDVAogCiAtLSBub3RoaW5nIHN0b3BzIHVzIGZyb20gc2V0dGluZyBpdCB0byAtMQogU0VMRUNU Ci0gICAgcGdfY2F0YWxvZy5wZ19zZXRfcmVsYXRpb25fc3RhdHMoCi0gICAgICAgIHJlbGF0aW9u ID0+ICdzdGF0c19pbXBvcnQucGFydF9wYXJlbnQnOjpyZWdjbGFzcywKLSAgICAgICAgcmVscGFn ZXMgPT4gLTE6OmludGVnZXIpOwotCi0tLSBlcnJvcjogb2JqZWN0IGRvZXNuJ3QgZXhpc3QKLVNF TEVDVCBwZ19jYXRhbG9nLnBnX3NldF9hdHRyaWJ1dGVfc3RhdHMoCi0gICAgcmVsYXRpb24gPT4g JzAnOjpvaWQsCi0gICAgYXR0bmFtZSA9PiAnaWQnOjpuYW1lLAotICAgIGluaGVyaXRlZCA9PiBm YWxzZTo6Ym9vbGVhbiwKLSAgICBudWxsX2ZyYWMgPT4gMC4xOjpyZWFsLAotICAgIGF2Z193aWR0 aCA9PiAyOjppbnRlZ2VyLAotICAgIG5fZGlzdGluY3QgPT4gMC4zOjpyZWFsKTsKLQotLS0gZXJy b3I6IG9iamVjdCBkb2Vzbid0IGV4aXN0Ci1TRUxFQ1QgcGdfY2F0YWxvZy5wZ19jbGVhcl9hdHRy aWJ1dGVfc3RhdHMoCi0gICAgcmVsYXRpb24gPT4gJzAnOjpvaWQsCi0gICAgYXR0bmFtZSA9PiAn aWQnOjpuYW1lLAotICAgIGluaGVyaXRlZCA9PiBmYWxzZTo6Ym9vbGVhbik7Ci0KLS0tIGVycm9y OiByZWxhdGlvbiBudWxsCi1TRUxFQ1QgcGdfY2F0YWxvZy5wZ19zZXRfYXR0cmlidXRlX3N0YXRz KAotICAgIHJlbGF0aW9uID0+IE5VTEw6Om9pZCwKLSAgICBhdHRuYW1lID0+ICdpZCc6Om5hbWUs Ci0gICAgaW5oZXJpdGVkID0+IGZhbHNlOjpib29sZWFuLAotICAgIG51bGxfZnJhYyA9PiAwLjE6 OnJlYWwsCi0gICAgYXZnX3dpZHRoID0+IDI6OmludGVnZXIsCi0gICAgbl9kaXN0aW5jdCA9PiAw LjM6OnJlYWwpOwotCi0tLSBlcnJvcjogYXR0cmlidXRlIGlzIHN5c3RlbSBjb2x1bW4KLVNFTEVD VCBwZ19jYXRhbG9nLnBnX3NldF9hdHRyaWJ1dGVfc3RhdHMoCi0gICAgcmVsYXRpb24gPT4gJ3N0 YXRzX2ltcG9ydC50ZXN0Jzo6cmVnY2xhc3MsCi0gICAgYXR0bmFtZSA9PiAneG1pbic6Om5hbWUs Ci0gICAgaW5oZXJpdGVkID0+IGZhbHNlOjpib29sZWFuLAotICAgIG51bGxfZnJhYyA9PiAwLjE6 OnJlYWwsCi0gICAgYXZnX3dpZHRoID0+IDI6OmludGVnZXIsCi0gICAgbl9kaXN0aW5jdCA9PiAw LjM6OnJlYWwpOwotCi0tLSBlcnJvcjogYXR0bmFtZSBkb2Vzbid0IGV4aXN0Ci1TRUxFQ1QgcGdf Y2F0YWxvZy5wZ19zZXRfYXR0cmlidXRlX3N0YXRzKAotICAgIHJlbGF0aW9uID0+ICdzdGF0c19p bXBvcnQudGVzdCc6OnJlZ2NsYXNzLAotICAgIGF0dG5hbWUgPT4gJ25vcGUnOjpuYW1lLAotICAg IGluaGVyaXRlZCA9PiBmYWxzZTo6Ym9vbGVhbiwKLSAgICBudWxsX2ZyYWMgPT4gMC4xOjpyZWFs LAotICAgIGF2Z193aWR0aCA9PiAyOjppbnRlZ2VyLAotICAgIG5fZGlzdGluY3QgPT4gMC4zOjpy ZWFsKTsKKyAgICBwZ19jYXRhbG9nLnBnX3Jlc3RvcmVfcmVsYXRpb25fc3RhdHMoCisgICAgICAg ICdyZWxhdGlvbicsICdzdGF0c19pbXBvcnQucGFydF9wYXJlbnQnOjpyZWdjbGFzcywKKyAgICAg ICAgJ3JlbHBhZ2VzJywgLTE6OmludGVnZXIpOwogCiAtLSBlcnJvcjogYXR0cmlidXRlIGlzIHN5 c3RlbSBjb2x1bW4KIFNFTEVDVCBwZ19jYXRhbG9nLnBnX2NsZWFyX2F0dHJpYnV0ZV9zdGF0cygK QEAgLTIzOCwzNTEgKzEzNiw2IEBAIFNFTEVDVCBwZ19jYXRhbG9nLnBnX2NsZWFyX2F0dHJpYnV0 ZV9zdGF0cygKICAgICBhdHRuYW1lID0+ICdub3BlJzo6bmFtZSwKICAgICBpbmhlcml0ZWQgPT4g ZmFsc2U6OmJvb2xlYW4pOwogCi0tLSBlcnJvcjogYXR0bmFtZSBudWxsCi1TRUxFQ1QgcGdfY2F0 YWxvZy5wZ19zZXRfYXR0cmlidXRlX3N0YXRzKAotICAgIHJlbGF0aW9uID0+ICdzdGF0c19pbXBv cnQudGVzdCc6OnJlZ2NsYXNzLAotICAgIGF0dG5hbWUgPT4gTlVMTDo6bmFtZSwKLSAgICBpbmhl cml0ZWQgPT4gZmFsc2U6OmJvb2xlYW4sCi0gICAgbnVsbF9mcmFjID0+IDAuMTo6cmVhbCwKLSAg ICBhdmdfd2lkdGggPT4gMjo6aW50ZWdlciwKLSAgICBuX2Rpc3RpbmN0ID0+IDAuMzo6cmVhbCk7 Ci0KLS0tIGVycm9yOiBpbmhlcml0ZWQgbnVsbAotU0VMRUNUIHBnX2NhdGFsb2cucGdfc2V0X2F0 dHJpYnV0ZV9zdGF0cygKLSAgICByZWxhdGlvbiA9PiAnc3RhdHNfaW1wb3J0LnRlc3QnOjpyZWdj bGFzcywKLSAgICBhdHRuYW1lID0+ICdpZCc6Om5hbWUsCi0gICAgaW5oZXJpdGVkID0+IE5VTEw6 OmJvb2xlYW4sCi0gICAgbnVsbF9mcmFjID0+IDAuMTo6cmVhbCwKLSAgICBhdmdfd2lkdGggPT4g Mjo6aW50ZWdlciwKLSAgICBuX2Rpc3RpbmN0ID0+IDAuMzo6cmVhbCk7Ci0KLS0tIG9rOiBubyBz dGFraW5kcwotU0VMRUNUIHBnX2NhdGFsb2cucGdfc2V0X2F0dHJpYnV0ZV9zdGF0cygKLSAgICBy ZWxhdGlvbiA9PiAnc3RhdHNfaW1wb3J0LnRlc3QnOjpyZWdjbGFzcywKLSAgICBhdHRuYW1lID0+ ICdpZCc6Om5hbWUsCi0gICAgaW5oZXJpdGVkID0+IGZhbHNlOjpib29sZWFuLAotICAgIG51bGxf ZnJhYyA9PiAwLjE6OnJlYWwsCi0gICAgYXZnX3dpZHRoID0+IDI6OmludGVnZXIsCi0gICAgbl9k aXN0aW5jdCA9PiAwLjM6OnJlYWwpOwotCi1TRUxFQ1Qgc3RhbnVsbGZyYWMsIHN0YXdpZHRoLCBz dGFkaXN0aW5jdAotRlJPTSBwZ19zdGF0aXN0aWMKLVdIRVJFIHN0YXJlbGlkID0gJ3N0YXRzX2lt cG9ydC50ZXN0Jzo6cmVnY2xhc3M7Ci0KLS0tIGVycm9yOiBtY3YgLyBtY2YgbnVsbCBtaXNtYXRj aAotU0VMRUNUIHBnX2NhdGFsb2cucGdfc2V0X2F0dHJpYnV0ZV9zdGF0cygKLSAgICByZWxhdGlv biA9PiAnc3RhdHNfaW1wb3J0LnRlc3QnOjpyZWdjbGFzcywKLSAgICBhdHRuYW1lID0+ICdpZCc6 Om5hbWUsCi0gICAgaW5oZXJpdGVkID0+IGZhbHNlOjpib29sZWFuLAotICAgIG51bGxfZnJhYyA9 PiAwLjU6OnJlYWwsCi0gICAgYXZnX3dpZHRoID0+IDI6OmludGVnZXIsCi0gICAgbl9kaXN0aW5j dCA9PiAtMC4xOjpyZWFsLAotICAgIG1vc3RfY29tbW9uX2ZyZXFzID0+ICd7MC4xLDAuMiwwLjN9 Jzo6cmVhbFtdCi0gICAgKTsKLQotLS0gZXJyb3I6IG1jdiAvIG1jZiBudWxsIG1pc21hdGNoIHBh cnQgMgotU0VMRUNUIHBnX2NhdGFsb2cucGdfc2V0X2F0dHJpYnV0ZV9zdGF0cygKLSAgICByZWxh dGlvbiA9PiAnc3RhdHNfaW1wb3J0LnRlc3QnOjpyZWdjbGFzcywKLSAgICBhdHRuYW1lID0+ICdp ZCc6Om5hbWUsCi0gICAgaW5oZXJpdGVkID0+IGZhbHNlOjpib29sZWFuLAotICAgIG51bGxfZnJh YyA9PiAwLjU6OnJlYWwsCi0gICAgYXZnX3dpZHRoID0+IDI6OmludGVnZXIsCi0gICAgbl9kaXN0 aW5jdCA9PiAtMC4xOjpyZWFsLAotICAgIG1vc3RfY29tbW9uX3ZhbHMgPT4gJ3sxLDIsM30nOjp0 ZXh0Ci0gICAgKTsKLQotLS0gZXJyb3I6IG1jdiAvIG1jZiB0eXBlIG1pc21hdGNoCi1TRUxFQ1Qg cGdfY2F0YWxvZy5wZ19zZXRfYXR0cmlidXRlX3N0YXRzKAotICAgIHJlbGF0aW9uID0+ICdzdGF0 c19pbXBvcnQudGVzdCc6OnJlZ2NsYXNzLAotICAgIGF0dG5hbWUgPT4gJ2lkJzo6bmFtZSwKLSAg ICBpbmhlcml0ZWQgPT4gZmFsc2U6OmJvb2xlYW4sCi0gICAgbnVsbF9mcmFjID0+IDAuNTo6cmVh bCwKLSAgICBhdmdfd2lkdGggPT4gMjo6aW50ZWdlciwKLSAgICBuX2Rpc3RpbmN0ID0+IC0wLjE6 OnJlYWwsCi0gICAgbW9zdF9jb21tb25fdmFscyA9PiAnezIwMjMtMDktMzAsMjAyNC0xMC0zMSwz fSc6OnRleHQsCi0gICAgbW9zdF9jb21tb25fZnJlcXMgPT4gJ3swLjIsMC4xfSc6OnJlYWxbXQot ICAgICk7Ci0KLS0tIGVycm9yOiBtY3YgY2FzdCBmYWlsdXJlCi1TRUxFQ1QgcGdfY2F0YWxvZy5w Z19zZXRfYXR0cmlidXRlX3N0YXRzKAotICAgIHJlbGF0aW9uID0+ICdzdGF0c19pbXBvcnQudGVz dCc6OnJlZ2NsYXNzLAotICAgIGF0dG5hbWUgPT4gJ2lkJzo6bmFtZSwKLSAgICBpbmhlcml0ZWQg PT4gZmFsc2U6OmJvb2xlYW4sCi0gICAgbnVsbF9mcmFjID0+IDAuNTo6cmVhbCwKLSAgICBhdmdf d2lkdGggPT4gMjo6aW50ZWdlciwKLSAgICBuX2Rpc3RpbmN0ID0+IC0wLjE6OnJlYWwsCi0gICAg bW9zdF9jb21tb25fdmFscyA9PiAnezIsZm91ciwzfSc6OnRleHQsCi0gICAgbW9zdF9jb21tb25f ZnJlcXMgPT4gJ3swLjMsMC4yNSwwLjA1fSc6OnJlYWxbXQotICAgICk7Ci0KLS0tIG9rOiBtY3Yr bWNmCi1TRUxFQ1QgcGdfY2F0YWxvZy5wZ19zZXRfYXR0cmlidXRlX3N0YXRzKAotICAgIHJlbGF0 aW9uID0+ICdzdGF0c19pbXBvcnQudGVzdCc6OnJlZ2NsYXNzLAotICAgIGF0dG5hbWUgPT4gJ2lk Jzo6bmFtZSwKLSAgICBpbmhlcml0ZWQgPT4gZmFsc2U6OmJvb2xlYW4sCi0gICAgbnVsbF9mcmFj ID0+IDAuNTo6cmVhbCwKLSAgICBhdmdfd2lkdGggPT4gMjo6aW50ZWdlciwKLSAgICBuX2Rpc3Rp bmN0ID0+IC0wLjE6OnJlYWwsCi0gICAgbW9zdF9jb21tb25fdmFscyA9PiAnezIsMSwzfSc6OnRl eHQsCi0gICAgbW9zdF9jb21tb25fZnJlcXMgPT4gJ3swLjMsMC4yNSwwLjA1fSc6OnJlYWxbXQot ICAgICk7Ci0KLVNFTEVDVCAqCi1GUk9NIHBnX3N0YXRzCi1XSEVSRSBzY2hlbWFuYW1lID0gJ3N0 YXRzX2ltcG9ydCcKLUFORCB0YWJsZW5hbWUgPSAndGVzdCcKLUFORCBpbmhlcml0ZWQgPSBmYWxz ZQotQU5EIGF0dG5hbWUgPSAnaWQnOwotCi0tLSBlcnJvcjogaGlzdG9ncmFtIGVsZW1lbnRzIG51 bGwgdmFsdWUKLS0tIHRoaXMgZ2VuZXJhdGVzIG5vIHdhcm5pbmdzLCBidXQgcGVyaGFwcyBpdCBz aG91bGQKLVNFTEVDVCBwZ19jYXRhbG9nLnBnX3NldF9hdHRyaWJ1dGVfc3RhdHMoCi0gICAgcmVs YXRpb24gPT4gJ3N0YXRzX2ltcG9ydC50ZXN0Jzo6cmVnY2xhc3MsCi0gICAgYXR0bmFtZSA9PiAn aWQnOjpuYW1lLAotICAgIGluaGVyaXRlZCA9PiBmYWxzZTo6Ym9vbGVhbiwKLSAgICBudWxsX2Zy YWMgPT4gMC41OjpyZWFsLAotICAgIGF2Z193aWR0aCA9PiAyOjppbnRlZ2VyLAotICAgIG5fZGlz dGluY3QgPT4gLTAuMTo6cmVhbCwKLSAgICBoaXN0b2dyYW1fYm91bmRzID0+ICd7MSxOVUxMLDMs NH0nOjp0ZXh0Ci0gICAgKTsKLQotLS0gb2s6IGhpc3RvZ3JhbV9ib3VuZHMKLVNFTEVDVCBwZ19j YXRhbG9nLnBnX3NldF9hdHRyaWJ1dGVfc3RhdHMoCi0gICAgcmVsYXRpb24gPT4gJ3N0YXRzX2lt cG9ydC50ZXN0Jzo6cmVnY2xhc3MsCi0gICAgYXR0bmFtZSA9PiAnaWQnOjpuYW1lLAotICAgIGlu aGVyaXRlZCA9PiBmYWxzZTo6Ym9vbGVhbiwKLSAgICBudWxsX2ZyYWMgPT4gMC41OjpyZWFsLAot ICAgIGF2Z193aWR0aCA9PiAyOjppbnRlZ2VyLAotICAgIG5fZGlzdGluY3QgPT4gLTAuMTo6cmVh bCwKLSAgICBoaXN0b2dyYW1fYm91bmRzID0+ICd7MSwyLDMsNH0nOjp0ZXh0Ci0gICAgKTsKLQot U0VMRUNUICoKLUZST00gcGdfc3RhdHMKLVdIRVJFIHNjaGVtYW5hbWUgPSAnc3RhdHNfaW1wb3J0 JwotQU5EIHRhYmxlbmFtZSA9ICd0ZXN0JwotQU5EIGluaGVyaXRlZCA9IGZhbHNlCi1BTkQgYXR0 bmFtZSA9ICdpZCc7Ci0KLS0tIG9rOiBjb3JyZWxhdGlvbgotU0VMRUNUIHBnX2NhdGFsb2cucGdf c2V0X2F0dHJpYnV0ZV9zdGF0cygKLSAgICByZWxhdGlvbiA9PiAnc3RhdHNfaW1wb3J0LnRlc3Qn OjpyZWdjbGFzcywKLSAgICBhdHRuYW1lID0+ICdpZCc6Om5hbWUsCi0gICAgaW5oZXJpdGVkID0+ IGZhbHNlOjpib29sZWFuLAotICAgIG51bGxfZnJhYyA9PiAwLjU6OnJlYWwsCi0gICAgYXZnX3dp ZHRoID0+IDI6OmludGVnZXIsCi0gICAgbl9kaXN0aW5jdCA9PiAtMC4xOjpyZWFsLAotICAgIGNv cnJlbGF0aW9uID0+IDAuNTo6cmVhbCk7Ci0KLVNFTEVDVCAqCi1GUk9NIHBnX3N0YXRzCi1XSEVS RSBzY2hlbWFuYW1lID0gJ3N0YXRzX2ltcG9ydCcKLUFORCB0YWJsZW5hbWUgPSAndGVzdCcKLUFO RCBpbmhlcml0ZWQgPSBmYWxzZQotQU5EIGF0dG5hbWUgPSAnaWQnOwotCi0tLSBlcnJvcjogc2Nh bGFycyBjYW4ndCBoYXZlIG1jZWxlbQotU0VMRUNUIHBnX2NhdGFsb2cucGdfc2V0X2F0dHJpYnV0 ZV9zdGF0cygKLSAgICByZWxhdGlvbiA9PiAnc3RhdHNfaW1wb3J0LnRlc3QnOjpyZWdjbGFzcywK LSAgICBhdHRuYW1lID0+ICdpZCc6Om5hbWUsCi0gICAgaW5oZXJpdGVkID0+IGZhbHNlOjpib29s ZWFuLAotICAgIG51bGxfZnJhYyA9PiAwLjU6OnJlYWwsCi0gICAgYXZnX3dpZHRoID0+IDI6Omlu dGVnZXIsCi0gICAgbl9kaXN0aW5jdCA9PiAtMC4xOjpyZWFsLAotICAgIG1vc3RfY29tbW9uX2Vs ZW1zID0+ICd7MSwzfSc6OnRleHQsCi0gICAgbW9zdF9jb21tb25fZWxlbV9mcmVxcyA9PiAnezAu MywwLjIsMC4yLDAuMywwLjB9Jzo6cmVhbFtdCi0gICAgKTsKLQotLS0gZXJyb3I6IG1jZWxlbSAv IG1jZWxlbSBtaXNtYXRjaAotU0VMRUNUIHBnX2NhdGFsb2cucGdfc2V0X2F0dHJpYnV0ZV9zdGF0 cygKLSAgICByZWxhdGlvbiA9PiAnc3RhdHNfaW1wb3J0LnRlc3QnOjpyZWdjbGFzcywKLSAgICBh dHRuYW1lID0+ICd0YWdzJzo6bmFtZSwKLSAgICBpbmhlcml0ZWQgPT4gZmFsc2U6OmJvb2xlYW4s Ci0gICAgbnVsbF9mcmFjID0+IDAuNTo6cmVhbCwKLSAgICBhdmdfd2lkdGggPT4gMjo6aW50ZWdl ciwKLSAgICBuX2Rpc3RpbmN0ID0+IC0wLjE6OnJlYWwsCi0gICAgbW9zdF9jb21tb25fZWxlbXMg PT4gJ3tvbmUsdHdvfSc6OnRleHQKLSAgICApOwotCi0tLSBlcnJvcjogbWNlbGVtIC8gbWNlbGVt IG51bGwgbWlzbWF0Y2ggcGFydCAyCi1TRUxFQ1QgcGdfY2F0YWxvZy5wZ19zZXRfYXR0cmlidXRl X3N0YXRzKAotICAgIHJlbGF0aW9uID0+ICdzdGF0c19pbXBvcnQudGVzdCc6OnJlZ2NsYXNzLAot ICAgIGF0dG5hbWUgPT4gJ3RhZ3MnOjpuYW1lLAotICAgIGluaGVyaXRlZCA9PiBmYWxzZTo6Ym9v bGVhbiwKLSAgICBudWxsX2ZyYWMgPT4gMC41OjpyZWFsLAotICAgIGF2Z193aWR0aCA9PiAyOjpp bnRlZ2VyLAotICAgIG5fZGlzdGluY3QgPT4gLTAuMTo6cmVhbCwKLSAgICBtb3N0X2NvbW1vbl9l bGVtX2ZyZXFzID0+ICd7MC4zLDAuMiwwLjIsMC4zfSc6OnJlYWxbXQotICAgICk7Ci0KLS0tIG9r OiBtY2VsZW0KLVNFTEVDVCBwZ19jYXRhbG9nLnBnX3NldF9hdHRyaWJ1dGVfc3RhdHMoCi0gICAg cmVsYXRpb24gPT4gJ3N0YXRzX2ltcG9ydC50ZXN0Jzo6cmVnY2xhc3MsCi0gICAgYXR0bmFtZSA9 PiAndGFncyc6Om5hbWUsCi0gICAgaW5oZXJpdGVkID0+IGZhbHNlOjpib29sZWFuLAotICAgIG51 bGxfZnJhYyA9PiAwLjU6OnJlYWwsCi0gICAgYXZnX3dpZHRoID0+IDI6OmludGVnZXIsCi0gICAg bl9kaXN0aW5jdCA9PiAtMC4xOjpyZWFsLAotICAgIG1vc3RfY29tbW9uX2VsZW1zID0+ICd7b25l LHRocmVlfSc6OnRleHQsCi0gICAgbW9zdF9jb21tb25fZWxlbV9mcmVxcyA9PiAnezAuMywwLjIs MC4yLDAuMywwLjB9Jzo6cmVhbFtdCi0gICAgKTsKLQotU0VMRUNUICoKLUZST00gcGdfc3RhdHMK LVdIRVJFIHNjaGVtYW5hbWUgPSAnc3RhdHNfaW1wb3J0JwotQU5EIHRhYmxlbmFtZSA9ICd0ZXN0 JwotQU5EIGluaGVyaXRlZCA9IGZhbHNlCi1BTkQgYXR0bmFtZSA9ICd0YWdzJzsKLQotLS0gZXJy b3I6IHNjYWxhcnMgY2FuJ3QgaGF2ZSBlbGVtX2NvdW50X2hpc3RvZ3JhbQotU0VMRUNUIHBnX2Nh dGFsb2cucGdfc2V0X2F0dHJpYnV0ZV9zdGF0cygKLSAgICByZWxhdGlvbiA9PiAnc3RhdHNfaW1w b3J0LnRlc3QnOjpyZWdjbGFzcywKLSAgICBhdHRuYW1lID0+ICdpZCc6Om5hbWUsCi0gICAgaW5o ZXJpdGVkID0+IGZhbHNlOjpib29sZWFuLAotICAgIG51bGxfZnJhYyA9PiAwLjU6OnJlYWwsCi0g ICAgYXZnX3dpZHRoID0+IDI6OmludGVnZXIsCi0gICAgbl9kaXN0aW5jdCA9PiAtMC4xOjpyZWFs LAotICAgIGVsZW1fY291bnRfaGlzdG9ncmFtID0+ICd7MSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEs MSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwx LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEs MSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwx LDEsMSwxfSc6OnJlYWxbXQotICAgICk7Ci0tLSBlcnJvcjogZWxlbV9jb3VudF9oaXN0b2dyYW0g bnVsbCBlbGVtZW50Ci1TRUxFQ1QgcGdfY2F0YWxvZy5wZ19zZXRfYXR0cmlidXRlX3N0YXRzKAot ICAgIHJlbGF0aW9uID0+ICdzdGF0c19pbXBvcnQudGVzdCc6OnJlZ2NsYXNzLAotICAgIGF0dG5h bWUgPT4gJ3RhZ3MnOjpuYW1lLAotICAgIGluaGVyaXRlZCA9PiBmYWxzZTo6Ym9vbGVhbiwKLSAg ICBudWxsX2ZyYWMgPT4gMC41OjpyZWFsLAotICAgIGF2Z193aWR0aCA9PiAyOjppbnRlZ2VyLAot ICAgIG5fZGlzdGluY3QgPT4gLTAuMTo6cmVhbCwKLSAgICBlbGVtX2NvdW50X2hpc3RvZ3JhbSA9 PiAnezEsMSxOVUxMLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEs MSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwx LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEs MSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMX0nOjpyZWFsW10KLSAgICApOwot LS0gb2s6IGVsZW1fY291bnRfaGlzdG9ncmFtCi1TRUxFQ1QgcGdfY2F0YWxvZy5wZ19zZXRfYXR0 cmlidXRlX3N0YXRzKAotICAgIHJlbGF0aW9uID0+ICdzdGF0c19pbXBvcnQudGVzdCc6OnJlZ2Ns YXNzLAotICAgIGF0dG5hbWUgPT4gJ3RhZ3MnOjpuYW1lLAotICAgIGluaGVyaXRlZCA9PiBmYWxz ZTo6Ym9vbGVhbiwKLSAgICBudWxsX2ZyYWMgPT4gMC41OjpyZWFsLAotICAgIGF2Z193aWR0aCA9 PiAyOjppbnRlZ2VyLAotICAgIG5fZGlzdGluY3QgPT4gLTAuMTo6cmVhbCwKLSAgICBlbGVtX2Nv dW50X2hpc3RvZ3JhbSA9PiAnezEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEs MSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwx LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEs MSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMX0nOjpyZWFs W10KLSAgICApOwotCi1TRUxFQ1QgKgotRlJPTSBwZ19zdGF0cwotV0hFUkUgc2NoZW1hbmFtZSA9 ICdzdGF0c19pbXBvcnQnCi1BTkQgdGFibGVuYW1lID0gJ3Rlc3QnCi1BTkQgaW5oZXJpdGVkID0g ZmFsc2UKLUFORCBhdHRuYW1lID0gJ3RhZ3MnOwotCi0tLSBlcnJvcjogc2NhbGFycyBjYW4ndCBo YXZlIHJhbmdlIHN0YXRzCi1TRUxFQ1QgcGdfY2F0YWxvZy5wZ19zZXRfYXR0cmlidXRlX3N0YXRz KAotICAgIHJlbGF0aW9uID0+ICdzdGF0c19pbXBvcnQudGVzdCc6OnJlZ2NsYXNzLAotICAgIGF0 dG5hbWUgPT4gJ2lkJzo6bmFtZSwKLSAgICBpbmhlcml0ZWQgPT4gZmFsc2U6OmJvb2xlYW4sCi0g ICAgbnVsbF9mcmFjID0+IDAuNTo6cmVhbCwKLSAgICBhdmdfd2lkdGggPT4gMjo6aW50ZWdlciwK LSAgICBuX2Rpc3RpbmN0ID0+IC0wLjE6OnJlYWwsCi0gICAgcmFuZ2VfZW1wdHlfZnJhYyA9PiAw LjU6OnJlYWwsCi0gICAgcmFuZ2VfbGVuZ3RoX2hpc3RvZ3JhbSA9PiAnezM5OSw0OTksSW5maW5p dHl9Jzo6dGV4dAotICAgICk7Ci0tLSBlcnJvcjogcmFuZ2VfZW1wdHlfZnJhYyByYW5nZV9sZW5n dGhfaGlzdCBudWxsIG1pc21hdGNoCi1TRUxFQ1QgcGdfY2F0YWxvZy5wZ19zZXRfYXR0cmlidXRl X3N0YXRzKAotICAgIHJlbGF0aW9uID0+ICdzdGF0c19pbXBvcnQudGVzdCc6OnJlZ2NsYXNzLAot ICAgIGF0dG5hbWUgPT4gJ2FyYW5nZSc6Om5hbWUsCi0gICAgaW5oZXJpdGVkID0+IGZhbHNlOjpi b29sZWFuLAotICAgIG51bGxfZnJhYyA9PiAwLjU6OnJlYWwsCi0gICAgYXZnX3dpZHRoID0+IDI6 OmludGVnZXIsCi0gICAgbl9kaXN0aW5jdCA9PiAtMC4xOjpyZWFsLAotICAgIHJhbmdlX2xlbmd0 aF9oaXN0b2dyYW0gPT4gJ3szOTksNDk5LEluZmluaXR5fSc6OnRleHQKLSAgICApOwotLS0gZXJy b3I6IHJhbmdlX2VtcHR5X2ZyYWMgcmFuZ2VfbGVuZ3RoX2hpc3QgbnVsbCBtaXNtYXRjaCBwYXJ0 IDIKLVNFTEVDVCBwZ19jYXRhbG9nLnBnX3NldF9hdHRyaWJ1dGVfc3RhdHMoCi0gICAgcmVsYXRp b24gPT4gJ3N0YXRzX2ltcG9ydC50ZXN0Jzo6cmVnY2xhc3MsCi0gICAgYXR0bmFtZSA9PiAnYXJh bmdlJzo6bmFtZSwKLSAgICBpbmhlcml0ZWQgPT4gZmFsc2U6OmJvb2xlYW4sCi0gICAgbnVsbF9m cmFjID0+IDAuNTo6cmVhbCwKLSAgICBhdmdfd2lkdGggPT4gMjo6aW50ZWdlciwKLSAgICBuX2Rp c3RpbmN0ID0+IC0wLjE6OnJlYWwsCi0gICAgcmFuZ2VfZW1wdHlfZnJhYyA9PiAwLjU6OnJlYWwK LSAgICApOwotLS0gb2s6IHJhbmdlX2VtcHR5X2ZyYWMgKyByYW5nZV9sZW5ndGhfaGlzdAotU0VM RUNUIHBnX2NhdGFsb2cucGdfc2V0X2F0dHJpYnV0ZV9zdGF0cygKLSAgICByZWxhdGlvbiA9PiAn c3RhdHNfaW1wb3J0LnRlc3QnOjpyZWdjbGFzcywKLSAgICBhdHRuYW1lID0+ICdhcmFuZ2UnOjpu YW1lLAotICAgIGluaGVyaXRlZCA9PiBmYWxzZTo6Ym9vbGVhbiwKLSAgICBudWxsX2ZyYWMgPT4g MC41OjpyZWFsLAotICAgIGF2Z193aWR0aCA9PiAyOjppbnRlZ2VyLAotICAgIG5fZGlzdGluY3Qg PT4gLTAuMTo6cmVhbCwKLSAgICByYW5nZV9lbXB0eV9mcmFjID0+IDAuNTo6cmVhbCwKLSAgICBy YW5nZV9sZW5ndGhfaGlzdG9ncmFtID0+ICd7Mzk5LDQ5OSxJbmZpbml0eX0nOjp0ZXh0Ci0gICAg KTsKLQotU0VMRUNUICoKLUZST00gcGdfc3RhdHMKLVdIRVJFIHNjaGVtYW5hbWUgPSAnc3RhdHNf aW1wb3J0JwotQU5EIHRhYmxlbmFtZSA9ICd0ZXN0JwotQU5EIGluaGVyaXRlZCA9IGZhbHNlCi1B TkQgYXR0bmFtZSA9ICdhcmFuZ2UnOwotCi0tLSBlcnJvcjogc2NhbGFycyBjYW4ndCBoYXZlIHJh bmdlIHN0YXRzCi1TRUxFQ1QgcGdfY2F0YWxvZy5wZ19zZXRfYXR0cmlidXRlX3N0YXRzKAotICAg IHJlbGF0aW9uID0+ICdzdGF0c19pbXBvcnQudGVzdCc6OnJlZ2NsYXNzLAotICAgIGF0dG5hbWUg PT4gJ2lkJzo6bmFtZSwKLSAgICBpbmhlcml0ZWQgPT4gZmFsc2U6OmJvb2xlYW4sCi0gICAgbnVs bF9mcmFjID0+IDAuNTo6cmVhbCwKLSAgICBhdmdfd2lkdGggPT4gMjo6aW50ZWdlciwKLSAgICBu X2Rpc3RpbmN0ID0+IC0wLjE6OnJlYWwsCi0gICAgcmFuZ2VfYm91bmRzX2hpc3RvZ3JhbSA9PiAn eyJbLTEsMSkiLCJbMCw0KSIsIlsxLDQpIiwiWzEsMTAwKSJ9Jzo6dGV4dAotICAgICk7Ci0tLSBv azogcmFuZ2VfYm91bmRzX2hpc3RvZ3JhbQotU0VMRUNUIHBnX2NhdGFsb2cucGdfc2V0X2F0dHJp YnV0ZV9zdGF0cygKLSAgICByZWxhdGlvbiA9PiAnc3RhdHNfaW1wb3J0LnRlc3QnOjpyZWdjbGFz cywKLSAgICBhdHRuYW1lID0+ICdhcmFuZ2UnOjpuYW1lLAotICAgIGluaGVyaXRlZCA9PiBmYWxz ZTo6Ym9vbGVhbiwKLSAgICBudWxsX2ZyYWMgPT4gMC41OjpyZWFsLAotICAgIGF2Z193aWR0aCA9 PiAyOjppbnRlZ2VyLAotICAgIG5fZGlzdGluY3QgPT4gLTAuMTo6cmVhbCwKLSAgICByYW5nZV9i b3VuZHNfaGlzdG9ncmFtID0+ICd7IlstMSwxKSIsIlswLDQpIiwiWzEsNCkiLCJbMSwxMDApIn0n Ojp0ZXh0Ci0gICAgKTsKLQotU0VMRUNUICoKLUZST00gcGdfc3RhdHMKLVdIRVJFIHNjaGVtYW5h bWUgPSAnc3RhdHNfaW1wb3J0JwotQU5EIHRhYmxlbmFtZSA9ICd0ZXN0JwotQU5EIGluaGVyaXRl ZCA9IGZhbHNlCi1BTkQgYXR0bmFtZSA9ICdhcmFuZ2UnOwotCi0tLSBlcnJvcjogY2Fubm90IHNl dCBtb3N0X2NvbW1vbl9lbGVtcyBmb3IgcmFuZ2UgdHlwZQotU0VMRUNUIHBnX2NhdGFsb2cucGdf c2V0X2F0dHJpYnV0ZV9zdGF0cygKLSAgICByZWxhdGlvbiA9PiAnc3RhdHNfaW1wb3J0LnRlc3Qn OjpyZWdjbGFzcywKLSAgICBhdHRuYW1lID0+ICdhcmFuZ2UnOjpuYW1lLAotICAgIGluaGVyaXRl ZCA9PiBmYWxzZTo6Ym9vbGVhbiwKLSAgICBudWxsX2ZyYWMgPT4gMC41OjpyZWFsLAotICAgIGF2 Z193aWR0aCA9PiAyOjppbnRlZ2VyLAotICAgIG5fZGlzdGluY3QgPT4gLTAuMTo6cmVhbCwKLSAg ICBtb3N0X2NvbW1vbl92YWxzID0+ICd7IlsyLDMpIiwiWzEsMikiLCJbMyw0KSJ9Jzo6dGV4dCwK LSAgICBtb3N0X2NvbW1vbl9mcmVxcyA9PiAnezAuMywwLjI1LDAuMDV9Jzo6cmVhbFtdLAotICAg IGhpc3RvZ3JhbV9ib3VuZHMgPT4gJ3siWzEsMikiLCJbMiwzKSIsIlszLDQpIiwiWzQsNSkifSc6 OnRleHQsCi0gICAgY29ycmVsYXRpb24gPT4gMS4xOjpyZWFsLAotICAgIG1vc3RfY29tbW9uX2Vs ZW1zID0+ICd7MywxfSc6OnRleHQsCi0gICAgbW9zdF9jb21tb25fZWxlbV9mcmVxcyA9PiAnezAu MywwLjIsMC4yLDAuMywwLjB9Jzo6cmVhbFtdLAotICAgIHJhbmdlX2VtcHR5X2ZyYWMgPT4gLTAu NTo6cmVhbCwKLSAgICByYW5nZV9sZW5ndGhfaGlzdG9ncmFtID0+ICd7Mzk5LDQ5OSxJbmZpbml0 eX0nOjp0ZXh0LAotICAgIHJhbmdlX2JvdW5kc19oaXN0b2dyYW0gPT4gJ3siWy0xLDEpIiwiWzAs NCkiLCJbMSw0KSIsIlsxLDEwMCkifSc6OnRleHQKLSAgICApOwotCi0tLQotLS0gQ2xlYXIgYXR0 cmlidXRlIHN0YXRzIHRvIHRyeSBhZ2FpbiB3aXRoIHJlc3RvcmUgZnVuY3Rpb25zCi0tLSAocmVs YXRpb24gc3RhdHMgd2VyZSBhbHJlYWR5IGNsZWFyZWQpLgotLS0KLVNFTEVDVAotICBwZ19jYXRh bG9nLnBnX2NsZWFyX2F0dHJpYnV0ZV9zdGF0cygKLSAgICAgICAgJ3N0YXRzX2ltcG9ydC50ZXN0 Jzo6cmVnY2xhc3MsCi0gICAgICAgIHMuYXR0bmFtZSwKLSAgICAgICAgcy5pbmhlcml0ZWQpCi1G Uk9NIHBnX2NhdGFsb2cucGdfc3RhdHMgQVMgcwotV0hFUkUgcy5zY2hlbWFuYW1lID0gJ3N0YXRz X2ltcG9ydCcKLUFORCBzLnRhYmxlbmFtZSA9ICd0ZXN0JwotT1JERVIgQlkgcy5hdHRuYW1lLCBz LmluaGVyaXRlZDsKLQogLS0gcmVqZWN0OiBhcmd1bWVudCBuYW1lIGlzIE5VTEwKIFNFTEVDVCBw Z19yZXN0b3JlX3JlbGF0aW9uX3N0YXRzKAogICAgICAgICAncmVsYXRpb24nLCAnMCc6Om9pZDo6 cmVnY2xhc3MsCkBAIC0xMTA1LDE3MyArNjU4LDYgQEAgQ1JFQVRFIFRBQkxFIHN0YXRzX2ltcG9y dC50ZXN0X2Nsb25lICggTElLRSBzdGF0c19pbXBvcnQudGVzdCApCiAKIENSRUFURSBJTkRFWCBp c19vZGRfY2xvbmUgT04gc3RhdHNfaW1wb3J0LnRlc3RfY2xvbmUoKChjb21wKS5hICUgMiA9IDEp KTsKIAotLS0KLS0tIENvcHkgc3RhdHMgZnJvbSB0ZXN0IHRvIHRlc3RfY2xvbmUsIGFuZCBpc19v ZGQgdG8gaXNfb2RkX2Nsb25lCi0tLQotU0VMRUNUIHMuc2NoZW1hbmFtZSwgcy50YWJsZW5hbWUs IHMuYXR0bmFtZSwgcy5pbmhlcml0ZWQKLUZST00gcGdfY2F0YWxvZy5wZ19zdGF0cyBBUyBzCi1D Uk9TUyBKT0lOIExBVEVSQUwKLSAgICBwZ19jYXRhbG9nLnBnX3NldF9hdHRyaWJ1dGVfc3RhdHMo Ci0gICAgICAgIHJlbGF0aW9uID0+ICgnc3RhdHNfaW1wb3J0LicgfHwgcy50YWJsZW5hbWUgfHwg J19jbG9uZScpOjpyZWdjbGFzczo6b2lkLAotICAgICAgICBhdHRuYW1lID0+IHMuYXR0bmFtZSwK LSAgICAgICAgaW5oZXJpdGVkID0+IHMuaW5oZXJpdGVkLAotICAgICAgICBudWxsX2ZyYWMgPT4g cy5udWxsX2ZyYWMsCi0gICAgICAgIGF2Z193aWR0aCA9PiBzLmF2Z193aWR0aCwKLSAgICAgICAg bl9kaXN0aW5jdCA9PiBzLm5fZGlzdGluY3QsCi0gICAgICAgIG1vc3RfY29tbW9uX3ZhbHMgPT4g cy5tb3N0X2NvbW1vbl92YWxzOjp0ZXh0LAotICAgICAgICBtb3N0X2NvbW1vbl9mcmVxcyA9PiBz Lm1vc3RfY29tbW9uX2ZyZXFzLAotICAgICAgICBoaXN0b2dyYW1fYm91bmRzID0+IHMuaGlzdG9n cmFtX2JvdW5kczo6dGV4dCwKLSAgICAgICAgY29ycmVsYXRpb24gPT4gcy5jb3JyZWxhdGlvbiwK LSAgICAgICAgbW9zdF9jb21tb25fZWxlbXMgPT4gcy5tb3N0X2NvbW1vbl9lbGVtczo6dGV4dCwK LSAgICAgICAgbW9zdF9jb21tb25fZWxlbV9mcmVxcyA9PiBzLm1vc3RfY29tbW9uX2VsZW1fZnJl cXMsCi0gICAgICAgIGVsZW1fY291bnRfaGlzdG9ncmFtID0+IHMuZWxlbV9jb3VudF9oaXN0b2dy YW0sCi0gICAgICAgIHJhbmdlX2JvdW5kc19oaXN0b2dyYW0gPT4gcy5yYW5nZV9ib3VuZHNfaGlz dG9ncmFtOjp0ZXh0LAotICAgICAgICByYW5nZV9lbXB0eV9mcmFjID0+IHMucmFuZ2VfZW1wdHlf ZnJhYywKLSAgICAgICAgcmFuZ2VfbGVuZ3RoX2hpc3RvZ3JhbSA9PiBzLnJhbmdlX2xlbmd0aF9o aXN0b2dyYW06OnRleHQpIEFTIHIKLVdIRVJFIHMuc2NoZW1hbmFtZSA9ICdzdGF0c19pbXBvcnQn Ci1BTkQgcy50YWJsZW5hbWUgSU4gKCd0ZXN0JywgJ2lzX29kZCcpCi1PUkRFUiBCWSBzLnRhYmxl bmFtZSwgcy5hdHRuYW1lLCBzLmluaGVyaXRlZDsKLQotU0VMRUNUIGMucmVsbmFtZSwgQ09VTlQo KikgQVMgbnVtX3N0YXRzCi1GUk9NIHBnX2NsYXNzIEFTIGMKLUpPSU4gcGdfc3RhdGlzdGljIHMg T04gcy5zdGFyZWxpZCA9IGMub2lkCi1XSEVSRSBjLnJlbG5hbWVzcGFjZSA9ICdzdGF0c19pbXBv cnQnOjpyZWduYW1lc3BhY2UKLUFORCBjLnJlbG5hbWUgSU4gKCd0ZXN0JywgJ3Rlc3RfY2xvbmUn LCAnaXNfb2RkJywgJ2lzX29kZF9jbG9uZScpCi1HUk9VUCBCWSBjLnJlbG5hbWUKLU9SREVSIEJZ IGMucmVsbmFtZTsKLQotLS0gY2hlY2sgdGVzdCBtaW51cyB0ZXN0X2Nsb25lCi1TRUxFQ1QKLSAg ICBhLmF0dG5hbWUsIHMuc3RhaW5oZXJpdCwgcy5zdGFudWxsZnJhYywgcy5zdGF3aWR0aCwgcy5z dGFkaXN0aW5jdCwKLSAgICBzLnN0YWtpbmQxLCBzLnN0YWtpbmQyLCBzLnN0YWtpbmQzLCBzLnN0 YWtpbmQ0LCBzLnN0YWtpbmQ1LAotICAgIHMuc3Rhb3AxLCBzLnN0YW9wMiwgcy5zdGFvcDMsIHMu c3Rhb3A0LCBzLnN0YW9wNSwKLSAgICBzLnN0YWNvbGwxLCBzLnN0YWNvbGwyLCBzLnN0YWNvbGwz LCBzLnN0YWNvbGw0LCBzLnN0YWNvbGw1LAotICAgIHMuc3RhbnVtYmVyczEsIHMuc3RhbnVtYmVy czIsIHMuc3RhbnVtYmVyczMsIHMuc3RhbnVtYmVyczQsIHMuc3RhbnVtYmVyczUsCi0gICAgcy5z dGF2YWx1ZXMxOjp0ZXh0IEFTIHN2MSwgcy5zdGF2YWx1ZXMyOjp0ZXh0IEFTIHN2MiwKLSAgICBz LnN0YXZhbHVlczM6OnRleHQgQVMgc3YzLCBzLnN0YXZhbHVlczQ6OnRleHQgQVMgc3Y0LAotICAg IHMuc3RhdmFsdWVzNTo6dGV4dCBBUyBzdjUsICd0ZXN0JyBBUyBkaXJlY3Rpb24KLUZST00gcGdf c3RhdGlzdGljIHMKLUpPSU4gcGdfYXR0cmlidXRlIGEgT04gYS5hdHRyZWxpZCA9IHMuc3RhcmVs aWQgQU5EIGEuYXR0bnVtID0gcy5zdGFhdHRudW0KLVdIRVJFIHMuc3RhcmVsaWQgPSAnc3RhdHNf aW1wb3J0LnRlc3QnOjpyZWdjbGFzcwotRVhDRVBUCi1TRUxFQ1QKLSAgICBhLmF0dG5hbWUsIHMu c3RhaW5oZXJpdCwgcy5zdGFudWxsZnJhYywgcy5zdGF3aWR0aCwgcy5zdGFkaXN0aW5jdCwKLSAg ICBzLnN0YWtpbmQxLCBzLnN0YWtpbmQyLCBzLnN0YWtpbmQzLCBzLnN0YWtpbmQ0LCBzLnN0YWtp bmQ1LAotICAgIHMuc3Rhb3AxLCBzLnN0YW9wMiwgcy5zdGFvcDMsIHMuc3Rhb3A0LCBzLnN0YW9w NSwKLSAgICBzLnN0YWNvbGwxLCBzLnN0YWNvbGwyLCBzLnN0YWNvbGwzLCBzLnN0YWNvbGw0LCBz LnN0YWNvbGw1LAotICAgIHMuc3RhbnVtYmVyczEsIHMuc3RhbnVtYmVyczIsIHMuc3RhbnVtYmVy czMsIHMuc3RhbnVtYmVyczQsIHMuc3RhbnVtYmVyczUsCi0gICAgcy5zdGF2YWx1ZXMxOjp0ZXh0 IEFTIHN2MSwgcy5zdGF2YWx1ZXMyOjp0ZXh0IEFTIHN2MiwKLSAgICBzLnN0YXZhbHVlczM6OnRl eHQgQVMgc3YzLCBzLnN0YXZhbHVlczQ6OnRleHQgQVMgc3Y0LAotICAgIHMuc3RhdmFsdWVzNTo6 dGV4dCBBUyBzdjUsICd0ZXN0JyBBUyBkaXJlY3Rpb24KLUZST00gcGdfc3RhdGlzdGljIHMKLUpP SU4gcGdfYXR0cmlidXRlIGEgT04gYS5hdHRyZWxpZCA9IHMuc3RhcmVsaWQgQU5EIGEuYXR0bnVt ID0gcy5zdGFhdHRudW0KLVdIRVJFIHMuc3RhcmVsaWQgPSAnc3RhdHNfaW1wb3J0LnRlc3RfY2xv bmUnOjpyZWdjbGFzczsKLQotLS0gY2hlY2sgdGVzdF9jbG9uZSBtaW51cyB0ZXN0Ci1TRUxFQ1QK LSAgICBhLmF0dG5hbWUsIHMuc3RhaW5oZXJpdCwgcy5zdGFudWxsZnJhYywgcy5zdGF3aWR0aCwg cy5zdGFkaXN0aW5jdCwKLSAgICBzLnN0YWtpbmQxLCBzLnN0YWtpbmQyLCBzLnN0YWtpbmQzLCBz LnN0YWtpbmQ0LCBzLnN0YWtpbmQ1LAotICAgIHMuc3Rhb3AxLCBzLnN0YW9wMiwgcy5zdGFvcDMs IHMuc3Rhb3A0LCBzLnN0YW9wNSwKLSAgICBzLnN0YWNvbGwxLCBzLnN0YWNvbGwyLCBzLnN0YWNv bGwzLCBzLnN0YWNvbGw0LCBzLnN0YWNvbGw1LAotICAgIHMuc3RhbnVtYmVyczEsIHMuc3RhbnVt YmVyczIsIHMuc3RhbnVtYmVyczMsIHMuc3RhbnVtYmVyczQsIHMuc3RhbnVtYmVyczUsCi0gICAg cy5zdGF2YWx1ZXMxOjp0ZXh0IEFTIHN2MSwgcy5zdGF2YWx1ZXMyOjp0ZXh0IEFTIHN2MiwKLSAg ICBzLnN0YXZhbHVlczM6OnRleHQgQVMgc3YzLCBzLnN0YXZhbHVlczQ6OnRleHQgQVMgc3Y0LAot ICAgIHMuc3RhdmFsdWVzNTo6dGV4dCBBUyBzdjUsICd0ZXN0X2Nsb25lJyBBUyBkaXJlY3Rpb24K LUZST00gcGdfc3RhdGlzdGljIHMKLUpPSU4gcGdfYXR0cmlidXRlIGEgT04gYS5hdHRyZWxpZCA9 IHMuc3RhcmVsaWQgQU5EIGEuYXR0bnVtID0gcy5zdGFhdHRudW0KLVdIRVJFIHMuc3RhcmVsaWQg PSAnc3RhdHNfaW1wb3J0LnRlc3RfY2xvbmUnOjpyZWdjbGFzcwotRVhDRVBUCi1TRUxFQ1QKLSAg ICBhLmF0dG5hbWUsIHMuc3RhaW5oZXJpdCwgcy5zdGFudWxsZnJhYywgcy5zdGF3aWR0aCwgcy5z dGFkaXN0aW5jdCwKLSAgICBzLnN0YWtpbmQxLCBzLnN0YWtpbmQyLCBzLnN0YWtpbmQzLCBzLnN0 YWtpbmQ0LCBzLnN0YWtpbmQ1LAotICAgIHMuc3Rhb3AxLCBzLnN0YW9wMiwgcy5zdGFvcDMsIHMu c3Rhb3A0LCBzLnN0YW9wNSwKLSAgICBzLnN0YWNvbGwxLCBzLnN0YWNvbGwyLCBzLnN0YWNvbGwz LCBzLnN0YWNvbGw0LCBzLnN0YWNvbGw1LAotICAgIHMuc3RhbnVtYmVyczEsIHMuc3RhbnVtYmVy czIsIHMuc3RhbnVtYmVyczMsIHMuc3RhbnVtYmVyczQsIHMuc3RhbnVtYmVyczUsCi0gICAgcy5z dGF2YWx1ZXMxOjp0ZXh0IEFTIHN2MSwgcy5zdGF2YWx1ZXMyOjp0ZXh0IEFTIHN2MiwKLSAgICBz LnN0YXZhbHVlczM6OnRleHQgQVMgc3YzLCBzLnN0YXZhbHVlczQ6OnRleHQgQVMgc3Y0LAotICAg IHMuc3RhdmFsdWVzNTo6dGV4dCBBUyBzdjUsICd0ZXN0X2Nsb25lJyBBUyBkaXJlY3Rpb24KLUZS T00gcGdfc3RhdGlzdGljIHMKLUpPSU4gcGdfYXR0cmlidXRlIGEgT04gYS5hdHRyZWxpZCA9IHMu c3RhcmVsaWQgQU5EIGEuYXR0bnVtID0gcy5zdGFhdHRudW0KLVdIRVJFIHMuc3RhcmVsaWQgPSAn c3RhdHNfaW1wb3J0LnRlc3QnOjpyZWdjbGFzczsKLQotLS0gY2hlY2sgaXNfb2RkIG1pbnVzIGlz X29kZF9jbG9uZQotU0VMRUNUCi0gICAgYS5hdHRuYW1lLCBzLnN0YWluaGVyaXQsIHMuc3RhbnVs bGZyYWMsIHMuc3Rhd2lkdGgsIHMuc3RhZGlzdGluY3QsCi0gICAgcy5zdGFraW5kMSwgcy5zdGFr aW5kMiwgcy5zdGFraW5kMywgcy5zdGFraW5kNCwgcy5zdGFraW5kNSwKLSAgICBzLnN0YW9wMSwg cy5zdGFvcDIsIHMuc3Rhb3AzLCBzLnN0YW9wNCwgcy5zdGFvcDUsCi0gICAgcy5zdGFjb2xsMSwg cy5zdGFjb2xsMiwgcy5zdGFjb2xsMywgcy5zdGFjb2xsNCwgcy5zdGFjb2xsNSwKLSAgICBzLnN0 YW51bWJlcnMxLCBzLnN0YW51bWJlcnMyLCBzLnN0YW51bWJlcnMzLCBzLnN0YW51bWJlcnM0LCBz LnN0YW51bWJlcnM1LAotICAgIHMuc3RhdmFsdWVzMTo6dGV4dCBBUyBzdjEsIHMuc3RhdmFsdWVz Mjo6dGV4dCBBUyBzdjIsCi0gICAgcy5zdGF2YWx1ZXMzOjp0ZXh0IEFTIHN2Mywgcy5zdGF2YWx1 ZXM0Ojp0ZXh0IEFTIHN2NCwKLSAgICBzLnN0YXZhbHVlczU6OnRleHQgQVMgc3Y1LCAnaXNfb2Rk JyBBUyBkaXJlY3Rpb24KLUZST00gcGdfc3RhdGlzdGljIHMKLUpPSU4gcGdfYXR0cmlidXRlIGEg T04gYS5hdHRyZWxpZCA9IHMuc3RhcmVsaWQgQU5EIGEuYXR0bnVtID0gcy5zdGFhdHRudW0KLVdI RVJFIHMuc3RhcmVsaWQgPSAnc3RhdHNfaW1wb3J0LmlzX29kZCc6OnJlZ2NsYXNzCi1FWENFUFQK LVNFTEVDVAotICAgIGEuYXR0bmFtZSwgcy5zdGFpbmhlcml0LCBzLnN0YW51bGxmcmFjLCBzLnN0 YXdpZHRoLCBzLnN0YWRpc3RpbmN0LAotICAgIHMuc3Rha2luZDEsIHMuc3Rha2luZDIsIHMuc3Rh a2luZDMsIHMuc3Rha2luZDQsIHMuc3Rha2luZDUsCi0gICAgcy5zdGFvcDEsIHMuc3Rhb3AyLCBz LnN0YW9wMywgcy5zdGFvcDQsIHMuc3Rhb3A1LAotICAgIHMuc3RhY29sbDEsIHMuc3RhY29sbDIs IHMuc3RhY29sbDMsIHMuc3RhY29sbDQsIHMuc3RhY29sbDUsCi0gICAgcy5zdGFudW1iZXJzMSwg cy5zdGFudW1iZXJzMiwgcy5zdGFudW1iZXJzMywgcy5zdGFudW1iZXJzNCwgcy5zdGFudW1iZXJz NSwKLSAgICBzLnN0YXZhbHVlczE6OnRleHQgQVMgc3YxLCBzLnN0YXZhbHVlczI6OnRleHQgQVMg c3YyLAotICAgIHMuc3RhdmFsdWVzMzo6dGV4dCBBUyBzdjMsIHMuc3RhdmFsdWVzNDo6dGV4dCBB UyBzdjQsCi0gICAgcy5zdGF2YWx1ZXM1Ojp0ZXh0IEFTIHN2NSwgJ2lzX29kZCcgQVMgZGlyZWN0 aW9uCi1GUk9NIHBnX3N0YXRpc3RpYyBzCi1KT0lOIHBnX2F0dHJpYnV0ZSBhIE9OIGEuYXR0cmVs aWQgPSBzLnN0YXJlbGlkIEFORCBhLmF0dG51bSA9IHMuc3RhYXR0bnVtCi1XSEVSRSBzLnN0YXJl bGlkID0gJ3N0YXRzX2ltcG9ydC5pc19vZGRfY2xvbmUnOjpyZWdjbGFzczsKLQotLS0gY2hlY2sg aXNfb2RkX2Nsb25lIG1pbnVzIGlzX29kZAotU0VMRUNUCi0gICAgYS5hdHRuYW1lLCBzLnN0YWlu aGVyaXQsIHMuc3RhbnVsbGZyYWMsIHMuc3Rhd2lkdGgsIHMuc3RhZGlzdGluY3QsCi0gICAgcy5z dGFraW5kMSwgcy5zdGFraW5kMiwgcy5zdGFraW5kMywgcy5zdGFraW5kNCwgcy5zdGFraW5kNSwK LSAgICBzLnN0YW9wMSwgcy5zdGFvcDIsIHMuc3Rhb3AzLCBzLnN0YW9wNCwgcy5zdGFvcDUsCi0g ICAgcy5zdGFjb2xsMSwgcy5zdGFjb2xsMiwgcy5zdGFjb2xsMywgcy5zdGFjb2xsNCwgcy5zdGFj b2xsNSwKLSAgICBzLnN0YW51bWJlcnMxLCBzLnN0YW51bWJlcnMyLCBzLnN0YW51bWJlcnMzLCBz LnN0YW51bWJlcnM0LCBzLnN0YW51bWJlcnM1LAotICAgIHMuc3RhdmFsdWVzMTo6dGV4dCBBUyBz djEsIHMuc3RhdmFsdWVzMjo6dGV4dCBBUyBzdjIsCi0gICAgcy5zdGF2YWx1ZXMzOjp0ZXh0IEFT IHN2Mywgcy5zdGF2YWx1ZXM0Ojp0ZXh0IEFTIHN2NCwKLSAgICBzLnN0YXZhbHVlczU6OnRleHQg QVMgc3Y1LCAnaXNfb2RkX2Nsb25lJyBBUyBkaXJlY3Rpb24KLUZST00gcGdfc3RhdGlzdGljIHMK LUpPSU4gcGdfYXR0cmlidXRlIGEgT04gYS5hdHRyZWxpZCA9IHMuc3RhcmVsaWQgQU5EIGEuYXR0 bnVtID0gcy5zdGFhdHRudW0KLVdIRVJFIHMuc3RhcmVsaWQgPSAnc3RhdHNfaW1wb3J0LmlzX29k ZF9jbG9uZSc6OnJlZ2NsYXNzCi1FWENFUFQKLVNFTEVDVAotICAgIGEuYXR0bmFtZSwgcy5zdGFp bmhlcml0LCBzLnN0YW51bGxmcmFjLCBzLnN0YXdpZHRoLCBzLnN0YWRpc3RpbmN0LAotICAgIHMu c3Rha2luZDEsIHMuc3Rha2luZDIsIHMuc3Rha2luZDMsIHMuc3Rha2luZDQsIHMuc3Rha2luZDUs Ci0gICAgcy5zdGFvcDEsIHMuc3Rhb3AyLCBzLnN0YW9wMywgcy5zdGFvcDQsIHMuc3Rhb3A1LAot ICAgIHMuc3RhY29sbDEsIHMuc3RhY29sbDIsIHMuc3RhY29sbDMsIHMuc3RhY29sbDQsIHMuc3Rh Y29sbDUsCi0gICAgcy5zdGFudW1iZXJzMSwgcy5zdGFudW1iZXJzMiwgcy5zdGFudW1iZXJzMywg cy5zdGFudW1iZXJzNCwgcy5zdGFudW1iZXJzNSwKLSAgICBzLnN0YXZhbHVlczE6OnRleHQgQVMg c3YxLCBzLnN0YXZhbHVlczI6OnRleHQgQVMgc3YyLAotICAgIHMuc3RhdmFsdWVzMzo6dGV4dCBB UyBzdjMsIHMuc3RhdmFsdWVzNDo6dGV4dCBBUyBzdjQsCi0gICAgcy5zdGF2YWx1ZXM1Ojp0ZXh0 IEFTIHN2NSwgJ2lzX29kZF9jbG9uZScgQVMgZGlyZWN0aW9uCi1GUk9NIHBnX3N0YXRpc3RpYyBz Ci1KT0lOIHBnX2F0dHJpYnV0ZSBhIE9OIGEuYXR0cmVsaWQgPSBzLnN0YXJlbGlkIEFORCBhLmF0 dG51bSA9IHMuc3RhYXR0bnVtCi1XSEVSRSBzLnN0YXJlbGlkID0gJ3N0YXRzX2ltcG9ydC5pc19v ZGQnOjpyZWdjbGFzczsKLQotLS0KLVNFTEVDVCByZWxwYWdlcywgcmVsdHVwbGVzLCByZWxhbGx2 aXNpYmxlCi1GUk9NIHBnX2NsYXNzCi1XSEVSRSBvaWQgPSAnc3RhdHNfaW1wb3J0LnRlc3QnOjpy ZWdjbGFzczsKLQotLS0KLS0tIENsZWFyIGNsb25lIHN0YXRzIHRvIHRyeSBhZ2FpbiB3aXRoIHBn X3Jlc3RvcmVfYXR0cmlidXRlX3N0YXRzCi0tLQotU0VMRUNUCi0gIHBnX2NhdGFsb2cucGdfY2xl YXJfYXR0cmlidXRlX3N0YXRzKAotICAgICAgICAoJ3N0YXRzX2ltcG9ydC4nIHx8IHMudGFibGVu YW1lKTo6cmVnY2xhc3MsCi0gICAgICAgIHMuYXR0bmFtZSwKLSAgICAgICAgcy5pbmhlcml0ZWQp Ci1GUk9NIHBnX2NhdGFsb2cucGdfc3RhdHMgQVMgcwotV0hFUkUgcy5zY2hlbWFuYW1lID0gJ3N0 YXRzX2ltcG9ydCcKLUFORCBzLnRhYmxlbmFtZSBJTiAoJ3Rlc3RfY2xvbmUnLCAnaXNfb2RkX2Ns b25lJykKLU9SREVSIEJZIHMudGFibGVuYW1lLCBzLmF0dG5hbWUsIHMuaW5oZXJpdGVkOwotU0VM RUNUCi0KLVNFTEVDVCBDT1VOVCgqKQotRlJPTSBwZ19jYXRhbG9nLnBnX3N0YXRzIEFTIHMKLVdI RVJFIHMuc2NoZW1hbmFtZSA9ICdzdGF0c19pbXBvcnQnCi1BTkQgcy50YWJsZW5hbWUgSU4gKCd0 ZXN0X2Nsb25lJywgJ2lzX29kZF9jbG9uZScpOwotCiAtLQogLS0gQ29weSBzdGF0cyBmcm9tIHRl c3QgdG8gdGVzdF9jbG9uZSwgYW5kIGlzX29kZCB0byBpc19vZGRfY2xvbmUKIC0tCi0tIAoyLjM0 LjEKCg== --=-TZJLX+YlfGPWZyqXfrvw--