Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vQXf2-00Afia-14 for pgsql-hackers@arkaria.postgresql.org; Tue, 02 Dec 2025 21:11:49 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vQXf0-00A2u8-2B for pgsql-hackers@arkaria.postgresql.org; Tue, 02 Dec 2025 21:11:46 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vQXf0-00A2tL-0n for pgsql-hackers@lists.postgresql.org; Tue, 02 Dec 2025 21:11:46 +0000 Received: from mail-wm1-x333.google.com ([2a00:1450:4864:20::333]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vQXey-002nqy-0e for pgsql-hackers@lists.postgresql.org; Tue, 02 Dec 2025 21:11:46 +0000 Received: by mail-wm1-x333.google.com with SMTP id 5b1f17b1804b1-47798f4059fso7499415e9.2 for ; Tue, 02 Dec 2025 13:11:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1764709902; x=1765314702; darn=lists.postgresql.org; h=in-reply-to:from:content-language:references:cc:to:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=eMnrNZqElyQ8zXugohK/fN2+Q8vnTM9Xzp5g+6REZZ0=; b=kP8eCgyIdWsGYnsTRNormouEKmH8U7BV2FBzath52hZSLf+I2GHD1ri1AQkkU8kBAw RGzfrdSbc6uFkXNhacBdV7I/5hXb+c2PzNZ6lZKWK0KFDLgn5nnaFw7EqTSXGL0AaLrK S6yzuC1UptOQfvCAZvYkG88NvuTE/kt/veYmcco7Mu81l7fjdAq/DzLRGb8yx5tzjWFk NNriyuXPHplBNLl7FB6cI96rEKO6Xy0KeomqCbOUlJaI+OxEVPCWW2Kf20jVgKsJvPp7 Dtw1o6gqF2AU6p//Xl2dfqDUuiplJ444DcTVe/Q+laPQTarbYtoRPRgqVJ4t7kmuPSma gbZQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1764709902; x=1765314702; h=in-reply-to:from:content-language:references:cc:to:subject :user-agent:mime-version:date:message-id:x-gm-gg:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=eMnrNZqElyQ8zXugohK/fN2+Q8vnTM9Xzp5g+6REZZ0=; b=pDCZx1MNa9Kr7glJ14d52LKiN6YLonnXAAnX114ljWxJSNgT4n/GcdLKNlinktezUF eWQxKtoTeqQ6fJRlKivGQGrXJN+udM1TaF/IeZ1iQwLvAezvrm4WBEoa5gv925PFD7jl Hfz1vPPBUm21g2quTiRVNF6NHbFettCg6YWaeTsPSAkqaIOQMyphJ4x2EAERMYYfF/QU Qosdwv186YjI3sHrYdCzv5Cpo4wO2vBNUiuFvFkKeuc45PURXqRNMM7G+dLAwEgGSzmg v17Caur5glOf0DLbj94ZECSJiUKjS9Rh1St2amP4oDFzifNqVIQLRC6LPjrdxoWIbxld RAAg== X-Gm-Message-State: AOJu0Yz8Dg7r8u63w0tkmODaTFjcE+Nhj1fbFdDxqmtfxEwALKbtAcyT bPGHbCAUmFxUhMQQZtO1T5xkDPIeQbsNIqHr5C99CK+tleNE+unDQL90 X-Gm-Gg: ASbGncv3SzqH9W08a1NhFSfvX58dGEICHP1fLjnc3pnT8uavxylvbUyewnXuN4N+wGB w6VjM2nZVTg75w1A1D//CQeO5O8do3TjcfbENeNYVqxROeP2EChosZF+rzmHb3fwyn7PFvyFiTO cqf+8oeYoKLAtajJBqiANoAXUyiwycFvkgq1h/3298GUF4yYuCB5m6idenmrfpsFepNaS+cs3dT AeeifSh9+RC0o9WRUcMNI/eGoE7/nBhLxOjBstFAnsLr0HBaDi75ZtVgucZ1jBw2hYrU5LeS22a wcrHPLrvT4/zWghUYbqw79F85U1cKYNyFmXVyPejDOxHJ4MlDh89FrO0f2XPRdAnhyPOi/xca/M HAdDENNm2wjrssOI80R96WCXwiX7R6aV8uOF3qQEiZp1xV4vLhiVtXo320Xge/BhKQPZDQ5Rpyv hNSO2S9NIDVmSDxWcdo0dP5OYaOcHCVvDHtTv/SF0WwxpJ/GT79v0kXivLj5bieTK+NgyUuO3CE 5Evxlk1Hg== X-Google-Smtp-Source: AGHT+IHNiTQ4Q1ez+Hh87x9ztf47rKMLTpc2oMPJZU2WOTznIJfnGDa3oFjP4t6CApA6S9V19r4SPg== X-Received: by 2002:a05:6000:4201:b0:429:d084:d210 with SMTP id ffacd0b85a97d-42cc19f1577mr27511868f8f.0.1764709901251; Tue, 02 Dec 2025 13:11:41 -0800 (PST) Received: from [192.168.178.68] ([163.116.172.147]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-42e1ca1a4bbsm33831919f8f.21.2025.12.02.13.11.40 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 02 Dec 2025 13:11:40 -0800 (PST) Content-Type: multipart/mixed; boundary="------------bEXpRR0yb5hatM5L9KmgmSA9" Message-ID: <5dbba701-c93b-4625-b35b-76d52131535e@gmail.com> Date: Tue, 2 Dec 2025 22:11:39 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH] pg_get_domain_ddl: DDL reconstruction function for CREATE DOMAIN statement To: Chao Li , Neil Chen Cc: pgsql-hackers@lists.postgresql.org References: <6a131cc6-ab35-49d2-b9bf-e6ddae4cf3b1@gmail.com> <36A72FEF-F07E-40A8-8022-998D5DA6FD04@gmail.com> Content-Language: en-US From: Florin Irion In-Reply-To: <36A72FEF-F07E-40A8-8022-998D5DA6FD04@gmail.com> List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------bEXpRR0yb5hatM5L9KmgmSA9 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Hello, On 20/11/25 07:55, Man Zeng wrote: > Quick correction with an apology: I accidentally created a new thread (https://www.postgresql.org/message-id/tencent_64301BB7627E58CD256CE15F%40qq.com) and submitted the patch there—my apologies for the mix-up! Let’s just continue the discussion here as planned. On 20/11/25 09:47, Chao Li wrote: > 1. The error message "cache lookup failed for type 0” looks not good. At lease saying something like “domain ‘int’ does not exist”. > > 2. I created a domain “int” in “public”, as you see, “public” is in the search_path, but SELECT pg_get_domain_ddl('int’); failed. Thank you both Man Zeng and Chao Li for checking this. Changes added in v5. I don't think there is a way to make the path issue work, so we just give more info to the caller. We exit with error when a built-in name is used and we throw also a hint saying that schema-qualified domain name should be used to be sure it's not conflicting with a built in  name. On 20/11/25 10:44, Neil Chen wrote: > Hi Florin, > > +pg_get_domain_ddl_ext(PG_FUNCTION_ARGS) > +{ > + Oid domain_oid = PG_GETARG_OID(0); > + bool pretty = PG_GETARG_BOOL(1); > + char   *res; > + int prettyFlags; > + > + prettyFlags = pretty ? GET_PRETTY_FLAGS(pretty) : 0; > > > Seems like we should directly use GET_PRETTY_FLAGS here, as it already > checks the value of "pretty". For a "display-oriented" result, using > PRETTYFLAG_INDENT looks more appropriate. Well, actually no, GET_PRETTY_FLAGS(false) returns PRETTYFLAG_INDENT But we actually want 0 when pretty is false (no indentation, just spaces) > + appendStringInfo(buf, "CREATE DOMAIN %s AS %s", > + generate_qualified_type_name(typForm->oid), > + generate_qualified_type_name(typForm->typbasetype)); > > > It might be good to first call get_typtype to check if it is > TYPTYPE_DOMAIN. I added this in `pg_get_domain_ddl_worker`, as we need to make this check ASAP. Cheers, Florin Irion Tim Waizenegger EDB (EnterpriseDB) --------------bEXpRR0yb5hatM5L9KmgmSA9 Content-Type: text/plain; charset=UTF-8; name="v5-0001-Add-pg_get_domain_ddl-function-to-reconstruct-CRE.patch" Content-Disposition: attachment; filename*0="v5-0001-Add-pg_get_domain_ddl-function-to-reconstruct-CRE.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAzMDczOGJlZjI3OGNkMDE0MGU5YjMwMzBkZGU2MmI1ZjA0OGEwZGZjIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBGbG9yaW4gSXJpb24gPGZsb3Jpbi5pcmlvbkBlbnRl cnByaXNlZGIuY29tPgpEYXRlOiBUaHUsIDE4IFNlcCAyMDI1IDE4OjUyOjQzICswMjAwClN1 YmplY3Q6IFtQQVRDSCB2NV0gQWRkIHBnX2dldF9kb21haW5fZGRsKCkgZnVuY3Rpb24gdG8g cmVjb25zdHJ1Y3QgQ1JFQVRFCiBET01BSU4gc3RhdGVtZW50cwpNSU1FLVZlcnNpb246IDEu MApDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKQ29udGVudC1UcmFu c2Zlci1FbmNvZGluZzogOGJpdAoKVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IHN5c3Rl bSBmdW5jdGlvbiBwZ19nZXRfZG9tYWluX2RkbCgpIHRoYXQKcmVjb25zdHJ1Y3RzIHRoZSBD UkVBVEUgRE9NQUlOIHN0YXRlbWVudCBmb3IgYSBnaXZlbiBkb21haW4uIFRoZSBmdW5jdGlv bgp0YWtlcyBhIHJlZ3R5cGUgcGFyYW1ldGVyIGFuZCByZXR1cm5zIHRoZSBjb21wbGV0ZSBE REwgc3RhdGVtZW50IGluY2x1ZGluZwp0aGUgZG9tYWluIG5hbWUsIGJhc2UgdHlwZSwgZGVm YXVsdCB2YWx1ZSwgYW5kIGFsbCBhc3NvY2lhdGVkIGNvbnN0cmFpbnRzLgoKVGhlIGZ1bmN0 aW9uIGZvbGxvd3MgdGhlIHNhbWUgcGF0dGVybiBhcyBvdGhlciBEREwgcmVjb25zdHJ1Y3Rp b24gZnVuY3Rpb25zCmxpa2UgcGdfZ2V0X2Z1bmN0aW9uZGVmKCkgYW5kIHBnX2dldF9jb25z dHJhaW50ZGVmKCksIHByb3ZpZGluZyBhCmRlY29tcGlsZWQgcmVjb25zdHJ1Y3Rpb24gcmF0 aGVyIHRoYW4gdGhlIG9yaWdpbmFsIGNvbW1hbmQgdGV4dC4KCktleSBmZWF0dXJlczoKKiBT dXBwb3J0cyBkb21haW5zIHdpdGggZGVmYXVsdCB2YWx1ZXMKKiBJbmNsdWRlcyBhbGwgZG9t YWluIGNvbnN0cmFpbnRzIChDSEVDSywgTk9UIE5VTEwpCiogTk9UIFZBTElEIGNvbnN0cmFp bnQgYXJlIGhhbmRsZWQgd2l0aCBhbiBleHRyYSBBTFRFUiBjb21tYW5kLgoqIFByb3Blcmx5 IHF1b3RlcyBpZGVudGlmaWVycyBhbmQgc2NoZW1hIG5hbWVzCiogSGFuZGxlcyBjb21wbGV4 IGNvbnN0cmFpbnQgZXhwcmVzc2lvbnMKKiBwcmV0dHkgcHJpbnRpbmcgc3VwcG9ydAoqIHdh cm4gYWdhaW5zdCBjb25mbGljdGluZyBidWlsdC1pbiBuYW1lcwoKQSBuZXcgZG9jdW1lbnRh dGlvbiBzZWN0aW9uICJHZXQgT2JqZWN0IERETCBGdW5jdGlvbnMiIGhhcyBiZWVuIGNyZWF0 ZWQKdG8gZ3JvdXAgRERMIHJlY29uc3RydWN0aW9uIGZ1bmN0aW9ucywgc3RhcnRpbmcgd2l0 aCBwZ19nZXRfZG9tYWluX2RkbCgpLgpUaGlzIHByb3ZpZGVzIGEgZm91bmRhdGlvbiBmb3Ig ZnV0dXJlIERETCBmdW5jdGlvbnMgZm9yIG90aGVyIG9iamVjdCB0eXBlcy4KCkNvbXByZWhl bnNpdmUgcmVncmVzc2lvbiB0ZXN0cyBhcmUgaW5jbHVkZWQgY292ZXJpbmcgdmFyaW91cyBk b21haW4KY29uZmlndXJhdGlvbnMuCgpSZWZlcmVuY2U6IFBHLTE1MQpBdXRob3I6IEZsb3Jp biBJcmlvbiA8ZmxvcmluLmlyaW9uQGVudGVycHJpc2VkYi5jb20+CkF1dGhvcjogVGltIFdh aXplbmVnZ2VyIDx0aW0ud2FpemVuZWdnZXJAZW50ZXJwcmlzZWRiLmNvbT4KUmV2aWV3ZWQt Ynk6IMOBbHZhcm8gSGVycmVyYSBhbHZoZXJyZUBhbHZoLm5vLWlwLm9yZwpSZXZpZXdlZC1i eTogamlhbiBoZSA8amlhbi51bml2ZXJzYWxpdHlAZ21haWwuY29tPgpSZXZpZXdlZC1ieTog Q2hhbyBMaSA8bGkuZXZhbi5jaGFvQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IE5laWwgQ2hl biA8Y2FycGVudGVyLm5haWwuY3pAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogTWFuIFplbmcg PHplbmdtYW5AaGFsb2RidGVjaC5jb20+Ci0tLQogZG9jL3NyYy9zZ21sL2Z1bmMvZnVuYy1p bmZvLnNnbWwgICAgICAgICB8ICA1MyArKysrCiBzcmMvYmFja2VuZC9jYXRhbG9nL3N5c3Rl bV9mdW5jdGlvbnMuc3FsIHwgICA2ICsKIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRp bHMuYyAgICAgICAgfCAyNDAgKysrKysrKysrKysrKysrKwogc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19wcm9jLmRhdCAgICAgICAgICB8ICAgMyArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL29iamVjdF9kZGwub3V0IHwgMzQ4ICsrKysrKysrKysrKysrKysrKysrKysrCiBzcmMv dGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlICAgICAgIHwgICAyICstCiBzcmMvdGVz dC9yZWdyZXNzL3NxbC9vYmplY3RfZGRsLnNxbCAgICAgIHwgMTQ1ICsrKysrKysrKysKIDcg ZmlsZXMgY2hhbmdlZCwgNzk2IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL29iamVjdF9kZGwub3V0 CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcmVncmVzcy9zcWwvb2JqZWN0X2RkbC5z cWwKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvZnVuYy9mdW5jLWluZm8uc2dtbCBiL2Rv Yy9zcmMvc2dtbC9mdW5jL2Z1bmMtaW5mby5zZ21sCmluZGV4IGQ0NTA4MTE0YTQ4Li40YmJh NzU1MWMyMSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2Z1bmMvZnVuYy1pbmZvLnNnbWwK KysrIGIvZG9jL3NyYy9zZ21sL2Z1bmMvZnVuYy1pbmZvLnNnbWwKQEAgLTM3OTcsNCArMzc5 Nyw1NyBAQCBhY2wgICAgICB8IHtwb3N0Z3Jlcz1hcndkRHh0bS9wb3N0Z3Jlcyxmb289ci9w b3N0Z3Jlc30KIAogICA8L3NlY3QyPgogCisgIDxzZWN0MiBpZD0iZnVuY3Rpb25zLWdldC1v YmplY3QtZGRsIj4KKyAgIDx0aXRsZT5HZXQgT2JqZWN0IERETCBGdW5jdGlvbnM8L3RpdGxl PgorCisgICA8cGFyYT4KKyAgICBUaGUgZnVuY3Rpb25zIHNob3duIGluIDx4cmVmIGxpbmtl bmQ9ImZ1bmN0aW9ucy1nZXQtb2JqZWN0LWRkbC10YWJsZSIvPgorICAgIHByaW50IHRoZSBE REwgc3RhdGVtZW50cyBmb3IgdmFyaW91cyBkYXRhYmFzZSBvYmplY3RzLgorICAgIChUaGlz IGlzIGEgZGVjb21waWxlZCByZWNvbnN0cnVjdGlvbiwgbm90IHRoZSBvcmlnaW5hbCB0ZXh0 CisgICAgb2YgdGhlIGNvbW1hbmQuKQorICAgPC9wYXJhPgorCisgICA8dGFibGUgaWQ9ImZ1 bmN0aW9ucy1nZXQtb2JqZWN0LWRkbC10YWJsZSI+CisgICAgPHRpdGxlPkdldCBPYmplY3Qg RERMIEZ1bmN0aW9uczwvdGl0bGU+CisgICAgPHRncm91cCBjb2xzPSIxIj4KKyAgICAgPHRo ZWFkPgorICAgICAgPHJvdz4KKyAgICAgICA8ZW50cnkgcm9sZT0iZnVuY190YWJsZV9lbnRy eSI+PHBhcmEgcm9sZT0iZnVuY19zaWduYXR1cmUiPgorICAgICAgICBGdW5jdGlvbgorICAg ICAgIDwvcGFyYT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgRGVzY3JpcHRpb24KKyAgICAg ICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgIDwvcm93PgorICAgICA8L3RoZWFkPgorCisgICAg IDx0Ym9keT4KKyAgICAgIDxyb3c+CisgICAgICAgPGVudHJ5IHJvbGU9ImZ1bmNfdGFibGVf ZW50cnkiPjxwYXJhIHJvbGU9ImZ1bmNfc2lnbmF0dXJlIj4KKyAgICAgICAgPGluZGV4dGVy bT4KKyAgICAgICAgIDxwcmltYXJ5PnBnX2dldF9kb21haW5fZGRsPC9wcmltYXJ5PgorICAg ICAgICA8L2luZGV4dGVybT4KKyAgICAgICAgPGZ1bmN0aW9uPnBnX2dldF9kb21haW5fZGRs PC9mdW5jdGlvbj4gKCA8cGFyYW1ldGVyPmRvbWFpbjwvcGFyYW1ldGVyPiA8dHlwZT5yZWd0 eXBlPC90eXBlPgorICAgICAgICAgPG9wdGlvbmFsPiA8cGFyYW1ldGVyPnByZXR0eTwvcGFy YW1ldGVyPiA8dHlwZT5ib29sZWFuPC90eXBlPiA8L29wdGlvbmFsPikKKyAgICAgICAgPHJl dHVybnZhbHVlPnRleHQ8L3JldHVybnZhbHVlPgorICAgICAgIDwvcGFyYT4KKyAgICAgICA8 cGFyYT4KKyAgICAgICAgUmVjb25zdHJ1Y3RzIHRoZSBjcmVhdGluZyBjb21tYW5kIGZvciBh IGRvbWFpbi4KKyAgICAgICAgVGhlIHJlc3VsdCBpcyBhIGNvbXBsZXRlIDxjb21tYW5kPkNS RUFURSBET01BSU48L2NvbW1hbmQ+IHN0YXRlbWVudC4KKyAgICAgICA8L3BhcmE+CisgICAg ICAgPHBhcmE+CisgICAgICAgIFRoZSA8cGFyYW1ldGVyPmRvbWFpbjwvcGFyYW1ldGVyPiBw YXJhbWV0ZXIgdXNlcyB0eXBlIDx0eXBlPnJlZ3R5cGU8L3R5cGU+LAorICAgICAgICB3aGlj aCBmb2xsb3dzIHRoZSBzdGFuZGFyZCA8dmFybmFtZT5zZWFyY2hfcGF0aDwvdmFybmFtZT4g Zm9yIHR5cGUgbmFtZQorICAgICAgICByZXNvbHV0aW9uLiBJZiBhIGRvbWFpbiBuYW1lIGNv bmZsaWN0cyB3aXRoIGEgYnVpbHQtaW4gdHlwZSBuYW1lCisgICAgICAgIChmb3IgZXhhbXBs ZSwgYSBkb21haW4gbmFtZWQgPGxpdGVyYWw+aW50PC9saXRlcmFsPiksIHlvdSBtdXN0IHVz ZSBhCisgICAgICAgIHNjaGVtYS1xdWFsaWZpZWQgbmFtZSAoZm9yIGV4YW1wbGUsIDxsaXRl cmFsPidwdWJsaWMuaW50Jzo6cmVndHlwZTwvbGl0ZXJhbD4pCisgICAgICAgIHRvIHJlZmVy ZW5jZSB0aGUgZG9tYWluLgorICAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICAgPC9yb3c+ CisgICAgIDwvdGJvZHk+CisgICAgPC90Z3JvdXA+CisgICA8L3RhYmxlPgorCisgIDwvc2Vj dDI+CisKICAgPC9zZWN0MT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lz dGVtX2Z1bmN0aW9ucy5zcWwgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV9mdW5jdGlv bnMuc3FsCmluZGV4IDJkOTQ2ZDZkOWU5Li41YTk2ZmYxZWZjYiAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fZnVuY3Rpb25zLnNxbAorKysgYi9zcmMvYmFja2Vu ZC9jYXRhbG9nL3N5c3RlbV9mdW5jdGlvbnMuc3FsCkBAIC02NTcsNiArNjU3LDEyIEBAIExB TkdVQUdFIElOVEVSTkFMCiBTVFJJQ1QgVk9MQVRJTEUgUEFSQUxMRUwgVU5TQUZFCiBBUyAn cGdfcmVwbGljYXRpb25fb3JpZ2luX3Nlc3Npb25fc2V0dXAnOwogCitDUkVBVEUgT1IgUkVQ TEFDRSBGVU5DVElPTgorIHBnX2dldF9kb21haW5fZGRsKGRvbWFpbl9uYW1lIHJlZ3R5cGUs IHByZXR0eSBib29sIERFRkFVTFQgZmFsc2UpCisgUkVUVVJOUyB0ZXh0CisgTEFOR1VBR0Ug aW50ZXJuYWwKK0FTICdwZ19nZXRfZG9tYWluX2RkbF9leHQnOworCiAtLQogLS0gVGhlIGRl ZmF1bHQgcGVybWlzc2lvbnMgZm9yIGZ1bmN0aW9ucyBtZWFuIHRoYXQgYW55b25lIGNhbiBl eGVjdXRlIHRoZW0uCiAtLSBBIG51bWJlciBvZiBmdW5jdGlvbnMgc2hvdWxkbid0IGJlIGV4 ZWN1dGFibGUgYnkganVzdCBhbnlvbmUsIGJ1dCByYXRoZXIKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9y dWxldXRpbHMuYwppbmRleCA2Y2Y5MGJlNDBiYi4uYWU2NzY1NTcyMTAgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYworKysgYi9zcmMvYmFja2VuZC91 dGlscy9hZHQvcnVsZXV0aWxzLmMKQEAgLTU0Niw2ICs1NDYsMTEgQEAgc3RhdGljIHZvaWQg Z2V0X2pzb25fdGFibGVfbmVzdGVkX2NvbHVtbnMoVGFibGVGdW5jICp0ZiwgSnNvblRhYmxl UGxhbiAqcGxhbiwKIAkJCQkJCQkJCQkgIGRlcGFyc2VfY29udGV4dCAqY29udGV4dCwKIAkJ CQkJCQkJCQkgIGJvb2wgc2hvd2ltcGxpY2l0LAogCQkJCQkJCQkJCSAgYm9vbCBuZWVkY29t bWEpOworc3RhdGljIHZvaWQgZ2V0X2Zvcm1hdHRlZF9zdHJpbmcoU3RyaW5nSW5mbyBidWYs CisJCQkJCQkJCSBpbnQgcHJldHR5RmxhZ3MsCisJCQkJCQkJCSBpbnQgbm9PZlRhYkNoYXJz LAorCQkJCQkJCQkgY29uc3QgY2hhciAqZm10LC4uLikgcGdfYXR0cmlidXRlX3ByaW50Zig0 LCA1KTsKK3N0YXRpYyBjaGFyICpwZ19nZXRfZG9tYWluX2RkbF93b3JrZXIoT2lkIGRvbWFp bl9vaWQsIGludCBwcmV0dHlGbGFncyk7CiAKICNkZWZpbmUgb25seV9tYXJrZXIocnRlKSAg KChydGUpLT5pbmggPyAiIiA6ICJPTkxZICIpCiAKQEAgLTEzNzQzLDMgKzEzNzQ4LDIzOCBA QCBnZXRfcmFuZ2VfcGFydGJvdW5kX3N0cmluZyhMaXN0ICpib3VuZF9kYXR1bXMpCiAKIAly ZXR1cm4gYnVmLmRhdGE7CiB9CisKKy8qCisgKiBnZXRfZm9ybWF0dGVkX3N0cmluZworICoK KyAqIFJldHVybiBhIGZvcm1hdHRlZCB2ZXJzaW9uIG9mIHRoZSBzdHJpbmcuCisgKgorICog cHJldHR5IC0gSWYgcHJldHR5IGlzIHRydWUsIHRoZSBvdXRwdXQgaW5jbHVkZXMgdGFicyAo XHQpIGFuZCBuZXdsaW5lcyAoXG4pLgorICogbm9PZlRhYkNoYXJzIC0gaW5kZW50IHdpdGgg c3BlY2lmaWVkIG5vIG9mIHRhYnMuCisgKiBmbXQgLSBwcmludGYtc3R5bGUgZm9ybWF0IHN0 cmluZyB1c2VkIGJ5IGFwcGVuZFN0cmluZ0luZm9WQS4KKyAqLworc3RhdGljIHZvaWQKK2dl dF9mb3JtYXR0ZWRfc3RyaW5nKFN0cmluZ0luZm8gYnVmLCBpbnQgcHJldHR5RmxhZ3MsIGlu dCBub09mVGFiQ2hhcnMsIGNvbnN0IGNoYXIgKmZtdCwuLi4pCit7CisJdmFfbGlzdAkJYXJn czsKKworCWlmIChwcmV0dHlGbGFncyAmIFBSRVRUWUZMQUdfSU5ERU5UKQorCXsKKwkJYXBw ZW5kU3RyaW5nSW5mb0NoYXIoYnVmLCAnXG4nKTsKKwkJLyogSW5kZW50IHdpdGggdGFicyAq LworCQlmb3IgKGludCBpID0gMDsgaSA8IG5vT2ZUYWJDaGFyczsgaSsrKQorCQl7CisJCQlh cHBlbmRTdHJpbmdJbmZvQ2hhcihidWYsICdcdCcpOworCQl9CisJfQorCWVsc2UKKwkJYXBw ZW5kU3RyaW5nSW5mb0NoYXIoYnVmLCAnICcpOworCisJdmFfc3RhcnQoYXJncywgZm10KTsK KwlhcHBlbmRTdHJpbmdJbmZvVkEoYnVmLCBmbXQsIGFyZ3MpOworCXZhX2VuZChhcmdzKTsK K30KKworCisvKgorICogSGVscGVyIGZ1bmN0aW9uIHRvIHNjYW4gZG9tYWluIGNvbnN0cmFp bnRzCisgKi8KK3N0YXRpYyB2b2lkCitzY2FuX2RvbWFpbl9jb25zdHJhaW50cyhPaWQgZG9t YWluX29pZCwgTGlzdCAqKnZhbGlkY29ucywgTGlzdCAqKmludmFsaWRjb25zKQoreworCVJl bGF0aW9uCWNvbnN0cmFpbnRSZWw7CisJU3lzU2NhbkRlc2Mgc3NjYW47CisJU2NhbktleURh dGEgc2tleTsKKwlIZWFwVHVwbGUJY29uc3RyYWludFR1cDsKKworCSp2YWxpZGNvbnMgPSBO SUw7CisJKmludmFsaWRjb25zID0gTklMOworCisJY29uc3RyYWludFJlbCA9IHRhYmxlX29w ZW4oQ29uc3RyYWludFJlbGF0aW9uSWQsIEFjY2Vzc1NoYXJlTG9jayk7CisKKwlTY2FuS2V5 SW5pdCgmc2tleSwKKwkJCQlBbnVtX3BnX2NvbnN0cmFpbnRfY29udHlwaWQsCisJCQkJQlRF cXVhbFN0cmF0ZWd5TnVtYmVyLCBGX09JREVRLAorCQkJCU9iamVjdElkR2V0RGF0dW0oZG9t YWluX29pZCkpOworCisJc3NjYW4gPSBzeXN0YWJsZV9iZWdpbnNjYW4oY29uc3RyYWludFJl bCwKKwkJCQkJCQkgICBDb25zdHJhaW50VHlwaWRJbmRleElkLAorCQkJCQkJCSAgIHRydWUs CisJCQkJCQkJICAgTlVMTCwKKwkJCQkJCQkgICAxLAorCQkJCQkJCSAgICZza2V5KTsKKwor CXdoaWxlIChIZWFwVHVwbGVJc1ZhbGlkKGNvbnN0cmFpbnRUdXAgPSBzeXN0YWJsZV9nZXRu ZXh0KHNzY2FuKSkpCisJeworCQlGb3JtX3BnX2NvbnN0cmFpbnQgY29uID0gKEZvcm1fcGdf Y29uc3RyYWludCkgR0VUU1RSVUNUKGNvbnN0cmFpbnRUdXApOworCisJCWlmIChjb24tPmNv bnZhbGlkYXRlZCkKKwkJCSp2YWxpZGNvbnMgPSBsYXBwZW5kX29pZCgqdmFsaWRjb25zLCBj b24tPm9pZCk7CisJCWVsc2UKKwkJCSppbnZhbGlkY29ucyA9IGxhcHBlbmRfb2lkKCppbnZh bGlkY29ucywgY29uLT5vaWQpOworCX0KKworCXN5c3RhYmxlX2VuZHNjYW4oc3NjYW4pOwor CXRhYmxlX2Nsb3NlKGNvbnN0cmFpbnRSZWwsIEFjY2Vzc1NoYXJlTG9jayk7CisKKwkvKiBT b3J0IGNvbnN0cmFpbnRzIGJ5IE9JRCBmb3Igc3RhYmxlIG91dHB1dCAqLworCWlmIChsaXN0 X2xlbmd0aCgqdmFsaWRjb25zKSA+IDEpCisJCWxpc3Rfc29ydCgqdmFsaWRjb25zLCBsaXN0 X29pZF9jbXApOworCWlmIChsaXN0X2xlbmd0aCgqaW52YWxpZGNvbnMpID4gMSkKKwkJbGlz dF9zb3J0KCppbnZhbGlkY29ucywgbGlzdF9vaWRfY21wKTsKK30KKworLyoKKyAqIEhlbHBl ciBmdW5jdGlvbiB0byBidWlsZCBDUkVBVEUgRE9NQUlOIHN0YXRlbWVudAorICovCitzdGF0 aWMgdm9pZAorYnVpbGRfY3JlYXRlX2RvbWFpbl9zdGF0ZW1lbnQoU3RyaW5nSW5mbyBidWYs IEZvcm1fcGdfdHlwZSB0eXBGb3JtLAorCQkJCQkJCSAgTm9kZSAqZGVmYXVsdEV4cHIsIExp c3QgKnZhbGlkQ29uc3RyYWludHMsIGludCBwcmV0dHlGbGFncykKK3sKKwlIZWFwVHVwbGUJ YmFzZVR5cGVUdXBsZTsKKwlGb3JtX3BnX3R5cGUgYmFzZVR5cGVGb3JtOworCU9pZAkJCWJh c2VDb2xsYXRpb24gPSBJbnZhbGlkT2lkOworCUxpc3RDZWxsICAgKmxjOworCisJYXBwZW5k U3RyaW5nSW5mbyhidWYsICJDUkVBVEUgRE9NQUlOICVzIEFTICVzIiwKKwkJCQkJIGdlbmVy YXRlX3F1YWxpZmllZF90eXBlX25hbWUodHlwRm9ybS0+b2lkKSwKKwkJCQkJIGdlbmVyYXRl X3F1YWxpZmllZF90eXBlX25hbWUodHlwRm9ybS0+dHlwYmFzZXR5cGUpKTsKKworCS8qIEFk ZCBjb2xsYXRpb24gaWYgaXQgZGlmZmVycyBmcm9tIGJhc2UgdHlwZSdzIGNvbGxhdGlvbiAq LworCWlmIChPaWRJc1ZhbGlkKHR5cEZvcm0tPnR5cGNvbGxhdGlvbikpCisJeworCQkvKiBH ZXQgYmFzZSB0eXBlJ3MgY29sbGF0aW9uIGZvciBjb21wYXJpc29uICovCisJCWJhc2VUeXBl VHVwbGUgPSBTZWFyY2hTeXNDYWNoZTEoVFlQRU9JRCwgT2JqZWN0SWRHZXREYXR1bSh0eXBG b3JtLT50eXBiYXNldHlwZSkpOworCQlpZiAoSGVhcFR1cGxlSXNWYWxpZChiYXNlVHlwZVR1 cGxlKSkKKwkJeworCQkJYmFzZVR5cGVGb3JtID0gKEZvcm1fcGdfdHlwZSkgR0VUU1RSVUNU KGJhc2VUeXBlVHVwbGUpOworCQkJYmFzZUNvbGxhdGlvbiA9IGJhc2VUeXBlRm9ybS0+dHlw Y29sbGF0aW9uOworCQkJUmVsZWFzZVN5c0NhY2hlKGJhc2VUeXBlVHVwbGUpOworCQl9CisK KwkJLyogT25seSBhZGQgQ09MTEFURSBpZiBkb21haW4ncyBjb2xsYXRpb24gZGlmZmVycyBm cm9tIGJhc2UgdHlwZSdzICovCisJCWlmICh0eXBGb3JtLT50eXBjb2xsYXRpb24gIT0gYmFz ZUNvbGxhdGlvbikKKwkJeworCQkJZ2V0X2Zvcm1hdHRlZF9zdHJpbmcoYnVmLCBwcmV0dHlG bGFncywgMSwgIkNPTExBVEUgJXMiLAorCQkJCQkJCQkgZ2VuZXJhdGVfY29sbGF0aW9uX25h bWUodHlwRm9ybS0+dHlwY29sbGF0aW9uKSk7CisJCX0KKwl9CisKKwkvKiBBZGQgZGVmYXVs dCB2YWx1ZSBpZiBwcmVzZW50ICovCisJaWYgKGRlZmF1bHRFeHByICE9IE5VTEwpCisJewor CQljaGFyCSAgICpkZWZhdWx0VmFsdWUgPSBkZXBhcnNlX2V4cHJlc3Npb25fcHJldHR5KGRl ZmF1bHRFeHByLCBOSUwsIGZhbHNlLCBmYWxzZSwgcHJldHR5RmxhZ3MsIDApOworCisJCWdl dF9mb3JtYXR0ZWRfc3RyaW5nKGJ1ZiwgcHJldHR5RmxhZ3MsIDEsICJERUZBVUxUICVzIiwg ZGVmYXVsdFZhbHVlKTsKKwl9CisKKwkvKiBBZGQgdmFsaWQgY29uc3RyYWludHMgKi8KKwlm b3JlYWNoKGxjLCB2YWxpZENvbnN0cmFpbnRzKQorCXsKKwkJT2lkCQkJY29uc3RyYWludE9p ZCA9IGxmaXJzdF9vaWQobGMpOworCQlIZWFwVHVwbGUJY29uc3RyYWludFR1cDsKKwkJRm9y bV9wZ19jb25zdHJhaW50IGNvbjsKKwkJY2hhcgkgICAqY29uc3RyYWludERlZjsKKworCQkv KiBMb29rIHVwIHRoZSBjb25zdHJhaW50IGluZm8gKi8KKwkJY29uc3RyYWludFR1cCA9IFNl YXJjaFN5c0NhY2hlMShDT05TVFJPSUQsIE9iamVjdElkR2V0RGF0dW0oY29uc3RyYWludE9p ZCkpOworCQlpZiAoIUhlYXBUdXBsZUlzVmFsaWQoY29uc3RyYWludFR1cCkpCisJCQljb250 aW51ZTsJCQkvKiBjb25zdHJhaW50IHdhcyBkcm9wcGVkIGNvbmN1cnJlbnRseSAqLworCisJ CWNvbiA9IChGb3JtX3BnX2NvbnN0cmFpbnQpIEdFVFNUUlVDVChjb25zdHJhaW50VHVwKTsK KwkJY29uc3RyYWludERlZiA9IHBnX2dldF9jb25zdHJhaW50ZGVmX3dvcmtlcihjb25zdHJh aW50T2lkLCBmYWxzZSwgcHJldHR5RmxhZ3MsIHRydWUpOworCisJCWdldF9mb3JtYXR0ZWRf c3RyaW5nKGJ1ZiwgcHJldHR5RmxhZ3MsIDEsICJDT05TVFJBSU5UICVzIiwKKwkJCQkJCQkg cXVvdGVfaWRlbnRpZmllcihOYW1lU3RyKGNvbi0+Y29ubmFtZSkpKTsKKwkJZ2V0X2Zvcm1h dHRlZF9zdHJpbmcoYnVmLCBwcmV0dHlGbGFncywgMiwgIiVzIiwgY29uc3RyYWludERlZik7 CisKKwkJUmVsZWFzZVN5c0NhY2hlKGNvbnN0cmFpbnRUdXApOworCX0KKworCWFwcGVuZFN0 cmluZ0luZm9DaGFyKGJ1ZiwgJzsnKTsKK30KKworLyoKKyAqIEhlbHBlciBmdW5jdGlvbiB0 byBhZGQgQUxURVIgRE9NQUlOIHN0YXRlbWVudHMgZm9yIGludmFsaWQgY29uc3RyYWludHMK KyAqLworc3RhdGljIHZvaWQKK2FkZF9hbHRlcl9kb21haW5fc3RhdGVtZW50cyhTdHJpbmdJ bmZvIGJ1ZiwgTGlzdCAqaW52YWxpZENvbnN0cmFpbnRzLCBpbnQgcHJldHR5RmxhZ3MpCit7 CisJTGlzdENlbGwgICAqbGM7CisKKwlmb3JlYWNoKGxjLCBpbnZhbGlkQ29uc3RyYWludHMp CisJeworCQlPaWQJCQljb25zdHJhaW50T2lkID0gbGZpcnN0X29pZChsYyk7CisJCWNoYXIJ ICAgKmFsdGVyU3RtdCA9IHBnX2dldF9jb25zdHJhaW50ZGVmX3dvcmtlcihjb25zdHJhaW50 T2lkLCB0cnVlLCBwcmV0dHlGbGFncywgdHJ1ZSk7CisKKwkJaWYgKGFsdGVyU3RtdCkKKwkJ CWFwcGVuZFN0cmluZ0luZm8oYnVmLCAiXG4lczsiLCBhbHRlclN0bXQpOworCX0KK30KKwor LyoKKyAqIHBnX2dldF9kb21haW5fZGRsX2V4dCAtIEdldCBDUkVBVEUgRE9NQUlOIHN0YXRl bWVudCBmb3IgYSBkb21haW4gd2l0aCBwcmV0dHktcHJpbnQgb3B0aW9uCisgKi8KK0RhdHVt CitwZ19nZXRfZG9tYWluX2RkbF9leHQoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlPaWQJCQlk b21haW5fb2lkID0gUEdfR0VUQVJHX09JRCgwKTsKKwlib29sCQlwcmV0dHkgPSBQR19HRVRB UkdfQk9PTCgxKTsKKwljaGFyCSAgICpyZXM7CisJaW50CQkJcHJldHR5RmxhZ3M7CisKKwlw cmV0dHlGbGFncyA9IHByZXR0eSA/IEdFVF9QUkVUVFlfRkxBR1MocHJldHR5KSA6IDA7CisK KwlyZXMgPSBwZ19nZXRfZG9tYWluX2RkbF93b3JrZXIoZG9tYWluX29pZCwgcHJldHR5Rmxh Z3MpOworCWlmIChyZXMgPT0gTlVMTCkKKwkJUEdfUkVUVVJOX05VTEwoKTsKKwlQR19SRVRV Uk5fVEVYVF9QKHN0cmluZ190b190ZXh0KHJlcykpOworfQorCisKKworc3RhdGljIGNoYXIg KgorcGdfZ2V0X2RvbWFpbl9kZGxfd29ya2VyKE9pZCBkb21haW5fb2lkLCBpbnQgcHJldHR5 RmxhZ3MpCit7CisJU3RyaW5nSW5mb0RhdGEgYnVmOworCUhlYXBUdXBsZQl0eXBlVHVwbGU7 CisJRm9ybV9wZ190eXBlIHR5cEZvcm07CisJTm9kZQkgICAqZGVmYXVsdEV4cHI7CisJTGlz dAkgICAqdmFsaWRDb25zdHJhaW50czsKKwlMaXN0CSAgICppbnZhbGlkQ29uc3RyYWludHM7 CisKKwkvKiBMb29rIHVwIHRoZSBkb21haW4gaW4gcGdfdHlwZSAqLworCXR5cGVUdXBsZSA9 IFNlYXJjaFN5c0NhY2hlMShUWVBFT0lELCBPYmplY3RJZEdldERhdHVtKGRvbWFpbl9vaWQp KTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHlwZVR1cGxlKSkKKwkJcmV0dXJuIE5VTEw7 CisKKwl0eXBGb3JtID0gKEZvcm1fcGdfdHlwZSkgR0VUU1RSVUNUKHR5cGVUdXBsZSk7CisK KwkvKiBDaGVjayB0aGF0IHRoaXMgaXMgYWN0dWFsbHkgYSBkb21haW4gKi8KKwlpZiAodHlw Rm9ybS0+dHlwdHlwZSAhPSBUWVBUWVBFX0RPTUFJTikKKwkJZXJlcG9ydChFUlJPUiwKKwkJ CQkoZXJyY29kZShFUlJDT0RFX1dST05HX09CSkVDVF9UWVBFKSwKKwkJCQkgZXJybXNnKCJc IiVzXCIgaXMgbm90IGEgZG9tYWluIiwgZm9ybWF0X3R5cGVfYmUoZG9tYWluX29pZCkpLAor CQkJCSBlcnJoaW50KCJVc2UgYSBzY2hlbWEtcXVhbGlmaWVkIG5hbWUgaWYgdGhlIGRvbWFp biBuYW1lIGNvbmZsaWN0cyB3aXRoIGEgYnVpbHQtaW4gbmFtZS4iKSkpOworCisJLyogR2V0 IGRlZmF1bHQgZXhwcmVzc2lvbiAqLworCWRlZmF1bHRFeHByID0gZ2V0X3R5cGRlZmF1bHQo ZG9tYWluX29pZCk7CisKKwkvKiBTY2FuIGZvciB2YWxpZCBhbmQgaW52YWxpZCBjb25zdHJh aW50cyAqLworCXNjYW5fZG9tYWluX2NvbnN0cmFpbnRzKGRvbWFpbl9vaWQsICZ2YWxpZENv bnN0cmFpbnRzLCAmaW52YWxpZENvbnN0cmFpbnRzKTsKKworCS8qIEJ1aWxkIHRoZSBEREwg c3RhdGVtZW50ICovCisJaW5pdFN0cmluZ0luZm8oJmJ1Zik7CisJYnVpbGRfY3JlYXRlX2Rv bWFpbl9zdGF0ZW1lbnQoJmJ1ZiwgdHlwRm9ybSwgZGVmYXVsdEV4cHIsIHZhbGlkQ29uc3Ry YWludHMsIHByZXR0eUZsYWdzKTsKKworCS8qIEFkZCBBTFRFUiBET01BSU4gc3RhdGVtZW50 cyBmb3IgaW52YWxpZCBjb25zdHJhaW50cyAqLworCWlmIChsaXN0X2xlbmd0aChpbnZhbGlk Q29uc3RyYWludHMpID4gMCkKKwkJYWRkX2FsdGVyX2RvbWFpbl9zdGF0ZW1lbnRzKCZidWYs IGludmFsaWRDb25zdHJhaW50cywgcHJldHR5RmxhZ3MpOworCisJLyogQ2xlYW51cCAqLwor CWxpc3RfZnJlZSh2YWxpZENvbnN0cmFpbnRzKTsKKwlsaXN0X2ZyZWUoaW52YWxpZENvbnN0 cmFpbnRzKTsKKwlSZWxlYXNlU3lzQ2FjaGUodHlwZVR1cGxlKTsKKworCXJldHVybiBidWYu ZGF0YTsKK30KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQg Yi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CmluZGV4IDY2YWYyZDk2ZDY3Li4y Zjc4NjkxMDNmMyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRh dAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CkBAIC04NTE1LDYgKzg1 MTUsOSBAQAogeyBvaWQgPT4gJzI1MDgnLCBkZXNjciA9PiAnY29uc3RyYWludCBkZXNjcmlw dGlvbiB3aXRoIHByZXR0eS1wcmludCBvcHRpb24nLAogICBwcm9uYW1lID0+ICdwZ19nZXRf Y29uc3RyYWludGRlZicsIHByb3ZvbGF0aWxlID0+ICdzJywgcHJvcmV0dHlwZSA9PiAndGV4 dCcsCiAgIHByb2FyZ3R5cGVzID0+ICdvaWQgYm9vbCcsIHByb3NyYyA9PiAncGdfZ2V0X2Nv bnN0cmFpbnRkZWZfZXh0JyB9LAoreyBvaWQgPT4gJzgwMjQnLCBkZXNjciA9PiAnZ2V0IENS RUFURSBzdGF0ZW1lbnQgZm9yIERPTUFJTiB3aXRoIHByZXR0eSBvcHRpb24nLAorICBwcm9u YW1lID0+ICdwZ19nZXRfZG9tYWluX2RkbCcsIHByb3JldHR5cGUgPT4gJ3RleHQnLAorICBw cm9hcmd0eXBlcyA9PiAncmVndHlwZSBib29sJywgcHJvc3JjID0+ICdwZ19nZXRfZG9tYWlu X2RkbF9leHQnIH0sCiB7IG9pZCA9PiAnMjUwOScsCiAgIGRlc2NyID0+ICdkZXBhcnNlIGFu IGVuY29kZWQgZXhwcmVzc2lvbiB3aXRoIHByZXR0eS1wcmludCBvcHRpb24nLAogICBwcm9u YW1lID0+ICdwZ19nZXRfZXhwcicsIHByb3ZvbGF0aWxlID0+ICdzJywgcHJvcmV0dHlwZSA9 PiAndGV4dCcsCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL29iamVj dF9kZGwub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9vYmplY3RfZGRsLm91dApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMTI0MWI4OWE3NzAKLS0t IC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL29iamVjdF9kZGwu b3V0CkBAIC0wLDAgKzEsMzQ4IEBACistLQorLS0gVGVzdCBmb3IgdGhlIGZvbGxvd2luZyBm dW5jdGlvbnMgdG8gZ2V0IG9iamVjdCBEREw6CistLSAtIHBnX2dldF9kb21haW5fZGRsCist LQorQ1JFQVRFIERPTUFJTiByZWdyZXNzX3VzX3Bvc3RhbF9jb2RlIEFTIFRFWFQKKyAgICBE RUZBVUxUICcwMDAwMCcKKyAgICBDT05TVFJBSU5UIHJlZ3Jlc3NfdXNfcG9zdGFsX2NvZGVf Y2hlY2sKKyAgICAgICAgQ0hFQ0sgKAorICAgICAgICAgICAgVkFMVUUgfiAnXlxkezV9JCcK KyAgICBPUiBWQUxVRSB+ICdeXGR7NX0tXGR7NH0kJworICAgICk7CitTRUxFQ1QgcGdfZ2V0 X2RvbWFpbl9kZGwoJ3JlZ3Jlc3NfdXNfcG9zdGFsX2NvZGUnKTsKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF9kb21haW5fZGRsICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgQ1JFQVRFIERPTUFJTiBwdWJsaWMucmVncmVzc191c19wb3N0YWxfY29kZSBB UyBwZ19jYXRhbG9nLnRleHQgREVGQVVMVCAnMDAwMDAnOjp0ZXh0IENPTlNUUkFJTlQgcmVn cmVzc191c19wb3N0YWxfY29kZV9jaGVjayBDSEVDSyAoKChWQUxVRSB+ICdeXGR7NX0kJzo6 dGV4dCkgT1IgKFZBTFVFIH4gJ15cZHs1fS1cZHs0fSQnOjp0ZXh0KSkpOworKDEgcm93KQor CitTRUxFQ1QgcGdfZ2V0X2RvbWFpbl9kZGwoJ3JlZ3Jlc3NfdXNfcG9zdGFsX2NvZGUnLCBw cmV0dHkgPT4gZmFsc2UpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg cGdfZ2V0X2RvbWFpbl9kZGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBDUkVBVEUgRE9NQUlO IHB1YmxpYy5yZWdyZXNzX3VzX3Bvc3RhbF9jb2RlIEFTIHBnX2NhdGFsb2cudGV4dCBERUZB VUxUICcwMDAwMCc6OnRleHQgQ09OU1RSQUlOVCByZWdyZXNzX3VzX3Bvc3RhbF9jb2RlX2No ZWNrIENIRUNLICgoKFZBTFVFIH4gJ15cZHs1fSQnOjp0ZXh0KSBPUiAoVkFMVUUgfiAnXlxk ezV9LVxkezR9JCc6OnRleHQpKSk7CisoMSByb3cpCisKK1NFTEVDVCBwZ19nZXRfZG9tYWlu X2RkbCgncmVncmVzc191c19wb3N0YWxfY29kZScsIGZhbHNlKTsKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF9kb21haW5fZGRsICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgQ1JFQVRFIERPTUFJTiBwdWJsaWMucmVncmVzc191c19wb3N0YWxfY29kZSBB UyBwZ19jYXRhbG9nLnRleHQgREVGQVVMVCAnMDAwMDAnOjp0ZXh0IENPTlNUUkFJTlQgcmVn cmVzc191c19wb3N0YWxfY29kZV9jaGVjayBDSEVDSyAoKChWQUxVRSB+ICdeXGR7NX0kJzo6 dGV4dCkgT1IgKFZBTFVFIH4gJ15cZHs1fS1cZHs0fSQnOjp0ZXh0KSkpOworKDEgcm93KQor CitTRUxFQ1QgcGdfZ2V0X2RvbWFpbl9kZGwoJ3JlZ3Jlc3NfdXNfcG9zdGFsX2NvZGUnLCBw cmV0dHkgPT4gdHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZ19n ZXRfZG9tYWluX2RkbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBDUkVBVEUgRE9NQUlOIHB1YmxpYy5yZWdyZXNz X3VzX3Bvc3RhbF9jb2RlIEFTIHBnX2NhdGFsb2cudGV4dCAgICAgICAgICAgICAgICAgICAr CisgICAgICAgICBERUZBVUxUICcwMDAwMCc6OnRleHQgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgQ09OU1RSQUlOVCBy ZWdyZXNzX3VzX3Bvc3RhbF9jb2RlX2NoZWNrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICsKKyAgICAgICAgICAgICAgICAgQ0hFQ0sgKFZBTFVFIH4gJ15cZHs1fSQnOjp0 ZXh0IE9SIFZBTFVFIH4gJ15cZHs1fS1cZHs0fSQnOjp0ZXh0KTsKKygxIHJvdykKKworU0VM RUNUIHBnX2dldF9kb21haW5fZGRsKCdyZWdyZXNzX3VzX3Bvc3RhbF9jb2RlJywgdHJ1ZSk7 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRfZG9tYWluX2RkbCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyBDUkVBVEUgRE9NQUlOIHB1YmxpYy5yZWdyZXNzX3VzX3Bvc3RhbF9jb2Rl IEFTIHBnX2NhdGFsb2cudGV4dCAgICAgICAgICAgICAgICAgICArCisgICAgICAgICBERUZB VUxUICcwMDAwMCc6OnRleHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKworICAgICAgICAgQ09OU1RSQUlOVCByZWdyZXNzX3VzX3Bvc3Rh bF9jb2RlX2NoZWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAg ICAgICAgICAgICAgQ0hFQ0sgKFZBTFVFIH4gJ15cZHs1fSQnOjp0ZXh0IE9SIFZBTFVFIH4g J15cZHs1fS1cZHs0fSQnOjp0ZXh0KTsKKygxIHJvdykKKworQ1JFQVRFIERPTUFJTiByZWdy ZXNzX2RvbWFpbl9ub3RfbnVsbCBBUyBJTlQgTk9UIE5VTEw7CitTRUxFQ1QgcGdfZ2V0X2Rv bWFpbl9kZGwoJ3JlZ3Jlc3NfZG9tYWluX25vdF9udWxsJyk7CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRfZG9tYWluX2RkbCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyBDUkVBVEUgRE9NQUlOIHB1YmxpYy5yZWdyZXNzX2RvbWFpbl9ub3RfbnVs bCBBUyBwZ19jYXRhbG9nLmludDQgQ09OU1RSQUlOVCByZWdyZXNzX2RvbWFpbl9ub3RfbnVs bF9ub3RfbnVsbCBOT1QgTlVMTDsKKygxIHJvdykKKworU0VMRUNUIHBnX2dldF9kb21haW5f ZGRsKCdyZWdyZXNzX2RvbWFpbl9ub3RfbnVsbCcsIHByZXR0eSA9PiB0cnVlKTsKKyAgICAg ICAgICAgICAgICAgICAgICAgIHBnX2dldF9kb21haW5fZGRsICAgICAgICAgICAgICAgICAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIENSRUFURSBET01BSU4gcHVibGljLnJlZ3Jlc3NfZG9t YWluX25vdF9udWxsIEFTIHBnX2NhdGFsb2cuaW50NCsKKyAgICAgICAgIENPTlNUUkFJTlQg cmVncmVzc19kb21haW5fbm90X251bGxfbm90X251bGwgICAgICAgICAgICArCisgICAgICAg ICAgICAgICAgIE5PVCBOVUxMOworKDEgcm93KQorCitDUkVBVEUgRE9NQUlOIHJlZ3Jlc3Nf ZG9tYWluX2NoZWNrIEFTIElOVAorICAgIENPTlNUUkFJTlQgcmVncmVzc19hIENIRUNLIChW QUxVRSA8IDEwMCkKKyAgICBDT05TVFJBSU5UIHJlZ3Jlc3NfYiBDSEVDSyAoVkFMVUUgPiAx MCk7CitTRUxFQ1QgcGdfZ2V0X2RvbWFpbl9kZGwoJ3JlZ3Jlc3NfZG9tYWluX2NoZWNrJyk7 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHBnX2dldF9kb21haW5fZGRsICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQ1JFQVRFIERPTUFJTiBwdWJsaWMu cmVncmVzc19kb21haW5fY2hlY2sgQVMgcGdfY2F0YWxvZy5pbnQ0IENPTlNUUkFJTlQgcmVn cmVzc19hIENIRUNLICgoVkFMVUUgPCAxMDApKSBDT05TVFJBSU5UIHJlZ3Jlc3NfYiBDSEVD SyAoKFZBTFVFID4gMTApKTsKKygxIHJvdykKKworU0VMRUNUIHBnX2dldF9kb21haW5fZGRs KCdyZWdyZXNzX2RvbWFpbl9jaGVjaycsIHByZXR0eSA9PiB0cnVlKTsKKyAgICAgICAgICAg ICAgICAgICAgICBwZ19nZXRfZG9tYWluX2RkbCAgICAgICAgICAgICAgICAgICAgICAgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIENSRUFURSBET01BSU4gcHVibGljLnJlZ3Jlc3NfZG9tYWluX2NoZWNrIEFT IHBnX2NhdGFsb2cuaW50NCsKKyAgICAgICAgIENPTlNUUkFJTlQgcmVncmVzc19hICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAgIENIRUNLIChW QUxVRSA8IDEwMCkgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgQ09OU1RS QUlOVCByZWdyZXNzX2IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAg ICAgICAgICAgICAgQ0hFQ0sgKFZBTFVFID4gMTApOworKDEgcm93KQorCitDUkVBVEUgRE9N QUlOICJyZWdyZXNzX2RvbWFpbiB3aXRoIHNwYWNlIiBBUyBJTlQKKyAgICBDT05TVFJBSU5U IHJlZ3Jlc3NfYSBDSEVDSyAoVkFMVUUgPCAxMDApCisgICAgQ09OU1RSQUlOVCAicmVncmVz c19Db25zdHJhaW50IEIiIENIRUNLIChWQUxVRSA+IDEwKQorICAgIENPTlNUUkFJTlQgInJl Z3Jlc3NfQ29uc3RyYWludEMiIENIRUNLIChWQUxVRSAhPSA1NSk7CitTRUxFQ1QgcGdfZ2V0 X2RvbWFpbl9kZGwoJyJyZWdyZXNzX2RvbWFpbiB3aXRoIHNwYWNlIicpOworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF9kb21haW5f ZGRsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIENSRUFURSBET01BSU4gcHVibGljLiJyZWdyZXNzX2RvbWFpbiB3aXRoIHNw YWNlIiBBUyBwZ19jYXRhbG9nLmludDQgQ09OU1RSQUlOVCByZWdyZXNzX2EgQ0hFQ0sgKChW QUxVRSA8IDEwMCkpIENPTlNUUkFJTlQgInJlZ3Jlc3NfQ29uc3RyYWludCBCIiBDSEVDSyAo KFZBTFVFID4gMTApKSBDT05TVFJBSU5UICJyZWdyZXNzX0NvbnN0cmFpbnRDIiBDSEVDSyAo KFZBTFVFIDw+IDU1KSk7CisoMSByb3cpCisKK1NFTEVDVCBwZ19nZXRfZG9tYWluX2RkbCgn InJlZ3Jlc3NfZG9tYWluIHdpdGggc3BhY2UiJywgcHJldHR5ID0+IHRydWUpOworICAgICAg ICAgICAgICAgICAgICAgICAgICBwZ19nZXRfZG9tYWluX2RkbCAgICAgICAgICAgICAgICAg ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBDUkVBVEUgRE9NQUlOIHB1YmxpYy4icmVn cmVzc19kb21haW4gd2l0aCBzcGFjZSIgQVMgcGdfY2F0YWxvZy5pbnQ0KworICAgICAgICAg Q09OU1RSQUlOVCByZWdyZXNzX2EgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICArCisgICAgICAgICAgICAgICAgIENIRUNLIChWQUxVRSA8IDEwMCkgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgIENPTlNUUkFJTlQgInJlZ3Jlc3Nf Q29uc3RyYWludCBCIiAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAg ICAgICBDSEVDSyAoVkFMVUUgPiAxMCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICArCisgICAgICAgICBDT05TVFJBSU5UICJyZWdyZXNzX0NvbnN0cmFpbnRDIiAgICAgICAg ICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAgQ0hFQ0sgKFZBTFVFIDw+ IDU1KTsKKygxIHJvdykKKworLS0gVGVzdCBlcnJvciBjYXNlcworU0VMRUNUIHBnX2dldF9k b21haW5fZGRsKCdyZWdyZXNzX25vbmV4aXN0ZW50X2RvbWFpbic6OnJlZ3R5cGUpOyAgLS0g c2hvdWxkIGZhaWwKK0VSUk9SOiAgdHlwZSAicmVncmVzc19ub25leGlzdGVudF9kb21haW4i IGRvZXMgbm90IGV4aXN0CitMSU5FIDE6IFNFTEVDVCBwZ19nZXRfZG9tYWluX2RkbCgncmVn cmVzc19ub25leGlzdGVudF9kb21haW4nOjpyZWd0eS4uLgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXgorU0VMRUNUIHBnX2dldF9kb21haW5fZGRsKE5VTEwpOyAgLS0g c2hvdWxkIHJldHVybiBOVUxMCisgcGdfZ2V0X2RvbWFpbl9kZGwgCistLS0tLS0tLS0tLS0t LS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBwZ19nZXRfZG9tYWluX2RkbChOVUxMLCBw cmV0dHkgPT4gdHJ1ZSk7ICAtLSBzaG91bGQgcmV0dXJuIE5VTEwKKyBwZ19nZXRfZG9tYWlu X2RkbCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIHBnX2dl dF9kb21haW5fZGRsKCdwZ19jbGFzcycpOyAgLS0gc2hvdWxkIGZhaWwgLSBub3QgYSBkb21h aW4KK0VSUk9SOiAgInBnX2NsYXNzIiBpcyBub3QgYSBkb21haW4KK0hJTlQ6ICBVc2UgYSBz Y2hlbWEtcXVhbGlmaWVkIG5hbWUgaWYgdGhlIGRvbWFpbiBuYW1lIGNvbmZsaWN0cyB3aXRo IGEgYnVpbHQtaW4gbmFtZS4KK1NFTEVDVCBwZ19nZXRfZG9tYWluX2RkbCgnaW50ZWdlcicp OyAgLS0gc2hvdWxkIGZhaWwgLSBub3QgYSBkb21haW4KK0VSUk9SOiAgImludGVnZXIiIGlz IG5vdCBhIGRvbWFpbgorSElOVDogIFVzZSBhIHNjaGVtYS1xdWFsaWZpZWQgbmFtZSBpZiB0 aGUgZG9tYWluIG5hbWUgY29uZmxpY3RzIHdpdGggYSBidWlsdC1pbiBuYW1lLgorLS0gVGVz dCBkb21haW5zIHdpdGggbm8gY29uc3RyYWludHMKK0NSRUFURSBET01BSU4gcmVncmVzc19z aW1wbGVfZG9tYWluIEFTIHRleHQ7CitTRUxFQ1QgcGdfZ2V0X2RvbWFpbl9kZGwoJ3JlZ3Jl c3Nfc2ltcGxlX2RvbWFpbicpOworICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRfZG9t YWluX2RkbCAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIENSRUFURSBE T01BSU4gcHVibGljLnJlZ3Jlc3Nfc2ltcGxlX2RvbWFpbiBBUyBwZ19jYXRhbG9nLnRleHQ7 CisoMSByb3cpCisKK1NFTEVDVCBwZ19nZXRfZG9tYWluX2RkbCgncmVncmVzc19zaW1wbGVf ZG9tYWluJywgcHJldHR5ID0+IHRydWUpOworICAgICAgICAgICAgICAgICAgICAgICBwZ19n ZXRfZG9tYWluX2RkbCAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIENS RUFURSBET01BSU4gcHVibGljLnJlZ3Jlc3Nfc2ltcGxlX2RvbWFpbiBBUyBwZ19jYXRhbG9n LnRleHQ7CisoMSByb3cpCisKKy0tIFRlc3QgZG9tYWluIG92ZXIgYW5vdGhlciBkb21haW4K K0NSRUFURSBET01BSU4gcmVncmVzc19iYXNlX2RvbWFpbiBBUyB2YXJjaGFyKDEwKTsKK0NS RUFURSBET01BSU4gcmVncmVzc19kZXJpdmVkX2RvbWFpbiBBUyByZWdyZXNzX2Jhc2VfZG9t YWluIENIRUNLIChMRU5HVEgoVkFMVUUpID4gMyk7CitTRUxFQ1QgcGdfZ2V0X2RvbWFpbl9k ZGwoJ3JlZ3Jlc3NfZGVyaXZlZF9kb21haW4nKTsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRfZG9t YWluX2RkbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIENSRUFURSBET01BSU4gcHVibGljLnJlZ3Jlc3NfZGVyaXZlZF9k b21haW4gQVMgcHVibGljLnJlZ3Jlc3NfYmFzZV9kb21haW4gQ09OU1RSQUlOVCByZWdyZXNz X2Rlcml2ZWRfZG9tYWluX2NoZWNrIENIRUNLICgobGVuZ3RoKChWQUxVRSk6OnRleHQpID4g MykpOworKDEgcm93KQorCitTRUxFQ1QgcGdfZ2V0X2RvbWFpbl9kZGwoJ3JlZ3Jlc3NfZGVy aXZlZF9kb21haW4nLCBwcmV0dHkgPT4gdHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHBnX2dldF9kb21haW5fZGRsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIENSRUFURSBET01BSU4gcHVibGljLnJlZ3Jlc3Nf ZGVyaXZlZF9kb21haW4gQVMgcHVibGljLnJlZ3Jlc3NfYmFzZV9kb21haW4rCisgICAgICAg ICBDT05TVFJBSU5UIHJlZ3Jlc3NfZGVyaXZlZF9kb21haW5fY2hlY2sgICAgICAgICAgICAg ICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAgQ0hFQ0sgKGxlbmd0aChWQUxVRTo6 dGV4dCkgPiAzKTsKKygxIHJvdykKKworLS0gVGVzdCBkb21haW4gd2l0aCBjb21wbGV4IGRl ZmF1bHQgZXhwcmVzc2lvbnMKK0NSRUFURSBTRVFVRU5DRSByZWdyZXNzX3Rlc3Rfc2VxOwor Q1JFQVRFIERPTUFJTiByZWdyZXNzX3NlcV9kb21haW4gQVMgaW50IERFRkFVTFQgbmV4dHZh bCgncmVncmVzc190ZXN0X3NlcScpOworU0VMRUNUIHBnX2dldF9kb21haW5fZGRsKCdyZWdy ZXNzX3NlcV9kb21haW4nKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHBnX2dldF9kb21haW5fZGRsICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIENSRUFURSBET01BSU4gcHVibGljLnJlZ3Jlc3Nfc2Vx X2RvbWFpbiBBUyBwZ19jYXRhbG9nLmludDQgREVGQVVMVCBuZXh0dmFsKCdyZWdyZXNzX3Rl c3Rfc2VxJzo6cmVnY2xhc3MpOworKDEgcm93KQorCitTRUxFQ1QgcGdfZ2V0X2RvbWFpbl9k ZGwoJ3JlZ3Jlc3Nfc2VxX2RvbWFpbicsIHByZXR0eSA9PiB0cnVlKTsKKyAgICAgICAgICAg ICAgICAgICAgIHBnX2dldF9kb21haW5fZGRsICAgICAgICAgICAgICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgQ1JFQVRFIERPTUFJTiBwdWJsaWMucmVncmVzc19zZXFfZG9tYWluIEFTIHBnX2Nh dGFsb2cuaW50NCsKKyAgICAgICAgIERFRkFVTFQgbmV4dHZhbCgncmVncmVzc190ZXN0X3Nl cSc6OnJlZ2NsYXNzKTsKKygxIHJvdykKKworLS0gVGVzdCBkb21haW4gd2l0aCBhIHJlbmFt ZWQgc2VxdWVuY2UgYXMgZGVmYXVsdCBleHByZXNzaW9uCitBTFRFUiBTRVFVRU5DRSByZWdy ZXNzX3Rlc3Rfc2VxIFJFTkFNRSBUTyByZWdyZXNzX3Rlc3Rfc2VxX3JlbmFtZWQ7CitTRUxF Q1QgcGdfZ2V0X2RvbWFpbl9kZGwoJ3JlZ3Jlc3Nfc2VxX2RvbWFpbicpOworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF9kb21haW5f ZGRsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIENSRUFURSBET01BSU4gcHVibGljLnJlZ3Jlc3Nfc2VxX2RvbWFpbiBBUyBw Z19jYXRhbG9nLmludDQgREVGQVVMVCBuZXh0dmFsKCdyZWdyZXNzX3Rlc3Rfc2VxX3JlbmFt ZWQnOjpyZWdjbGFzcyk7CisoMSByb3cpCisKKy0tIFRlc3QgZG9tYWluIHdpdGggdHlwZSBt b2RpZmllcnMKK0NSRUFURSBET01BSU4gcmVncmVzc19wcmVjaXNlX251bWVyaWMgQVMgbnVt ZXJpYygxMCwyKSBERUZBVUxUIDAuMDA7CitTRUxFQ1QgcGdfZ2V0X2RvbWFpbl9kZGwoJ3Jl Z3Jlc3NfcHJlY2lzZV9udW1lcmljJyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBwZ19nZXRfZG9tYWluX2RkbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIENSRUFURSBET01BSU4gcHVi bGljLnJlZ3Jlc3NfcHJlY2lzZV9udW1lcmljIEFTIHBnX2NhdGFsb2cuIm51bWVyaWMiIERF RkFVTFQgMC4wMDsKKygxIHJvdykKKworU0VMRUNUIHBnX2dldF9kb21haW5fZGRsKCdyZWdy ZXNzX3ByZWNpc2VfbnVtZXJpYycsIHByZXR0eSA9PiB0cnVlKTsKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgcGdfZ2V0X2RvbWFpbl9kZGwgICAgICAgICAgICAgICAgICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBDUkVBVEUgRE9NQUlOIHB1YmxpYy5yZWdyZXNzX3By ZWNpc2VfbnVtZXJpYyBBUyBwZ19jYXRhbG9nLiJudW1lcmljIisKKyAgICAgICAgIERFRkFV TFQgMC4wMDsKKygxIHJvdykKKworLS0gVGVzdCBkb21haW4gb3ZlciBhcnJheSB0eXBlCitD UkVBVEUgRE9NQUlOIHJlZ3Jlc3NfaW50X2FycmF5X2RvbWFpbiBBUyBpbnRbXSBDSEVDSyAo YXJyYXlfbGVuZ3RoKFZBTFVFLCAxKSA8PSA1KTsKK1NFTEVDVCBwZ19nZXRfZG9tYWluX2Rk bCgncmVncmVzc19pbnRfYXJyYXlfZG9tYWluJyk7CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF9kb21h aW5fZGRsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgQ1JFQVRFIERPTUFJTiBwdWJsaWMucmVncmVzc19pbnRfYXJyYXlfZG9tYWlu IEFTIHBnX2NhdGFsb2cuX2ludDQgQ09OU1RSQUlOVCByZWdyZXNzX2ludF9hcnJheV9kb21h aW5fY2hlY2sgQ0hFQ0sgKChhcnJheV9sZW5ndGgoVkFMVUUsIDEpIDw9IDUpKTsKKygxIHJv dykKKworU0VMRUNUIHBnX2dldF9kb21haW5fZGRsKCdyZWdyZXNzX2ludF9hcnJheV9kb21h aW4nLCBwcmV0dHkgPT4gdHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0 X2RvbWFpbl9kZGwgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg Q1JFQVRFIERPTUFJTiBwdWJsaWMucmVncmVzc19pbnRfYXJyYXlfZG9tYWluIEFTIHBnX2Nh dGFsb2cuX2ludDQrCisgICAgICAgICBDT05TVFJBSU5UIHJlZ3Jlc3NfaW50X2FycmF5X2Rv bWFpbl9jaGVjayAgICAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAgIENIRUNLIChh cnJheV9sZW5ndGgoVkFMVUUsIDEpIDw9IDUpOworKDEgcm93KQorCistLSBUZXN0IGRvbWFp biBpbiBub24tcHVibGljIHNjaGVtYQorQ1JFQVRFIFNDSEVNQSByZWdyZXNzX3Rlc3Rfc2No ZW1hOworQ1JFQVRFIERPTUFJTiByZWdyZXNzX3Rlc3Rfc2NoZW1hLnJlZ3Jlc3Nfc2NoZW1h X2RvbWFpbiBBUyB0ZXh0IERFRkFVTFQgJ3Rlc3QnOworU0VMRUNUIHBnX2dldF9kb21haW5f ZGRsKCdyZWdyZXNzX3Rlc3Rfc2NoZW1hLnJlZ3Jlc3Nfc2NoZW1hX2RvbWFpbicpOworICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF9kb21haW5fZGRs ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQ1JFQVRFIERPTUFJTiByZWdy ZXNzX3Rlc3Rfc2NoZW1hLnJlZ3Jlc3Nfc2NoZW1hX2RvbWFpbiBBUyBwZ19jYXRhbG9nLnRl eHQgREVGQVVMVCAndGVzdCc6OnRleHQ7CisoMSByb3cpCisKKy0tIFRlc3QgZG9tYWluIHdp dGggbXVsdGlwbGUgY29uc3RyYWludCB0eXBlcyBjb21iaW5lZAorQ1JFQVRFIERPTUFJTiBy ZWdyZXNzX2NvbXByZWhlbnNpdmVfZG9tYWluIEFTIHZhcmNoYXIoNTApCisgICAgTk9UIE5V TEwKKyAgICBERUZBVUxUICdkZWZhdWx0X3ZhbHVlJworICAgIENIRUNLIChMRU5HVEgoVkFM VUUpID49IDUpCisgICAgQ0hFQ0sgKFZBTFVFICF+ICdeXHMqJCcpOyAgLS0gbm90IGp1c3Qg d2hpdGVzcGFjZQorU0VMRUNUIHBnX2dldF9kb21haW5fZGRsKCdyZWdyZXNzX2NvbXByZWhl bnNpdmVfZG9tYWluJyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBwZ19nZXRfZG9tYWluX2RkbCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIENSRUFURSBET01BSU4gcHVibGljLnJlZ3Jlc3NfY29tcHJlaGVu c2l2ZV9kb21haW4gQVMgcGdfY2F0YWxvZy4idmFyY2hhciIgREVGQVVMVCAnZGVmYXVsdF92 YWx1ZSc6OmNoYXJhY3RlciB2YXJ5aW5nIENPTlNUUkFJTlQgcmVncmVzc19jb21wcmVoZW5z aXZlX2RvbWFpbl9ub3RfbnVsbCBOT1QgTlVMTCBDT05TVFJBSU5UIHJlZ3Jlc3NfY29tcHJl aGVuc2l2ZV9kb21haW5fY2hlY2sgQ0hFQ0sgKChsZW5ndGgoKFZBTFVFKTo6dGV4dCkgPj0g NSkpIENPTlNUUkFJTlQgcmVncmVzc19jb21wcmVoZW5zaXZlX2RvbWFpbl9jaGVjazEgQ0hF Q0sgKCgoVkFMVUUpOjp0ZXh0ICF+ICdeXHMqJCc6OnRleHQpKTsKKygxIHJvdykKKworU0VM RUNUIHBnX2dldF9kb21haW5fZGRsKCdyZWdyZXNzX2NvbXByZWhlbnNpdmVfZG9tYWluJywg cHJldHR5ID0+IHRydWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRf ZG9tYWluX2RkbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyBDUkVBVEUgRE9NQUlOIHB1YmxpYy5yZWdyZXNzX2NvbXByZWhlbnNpdmVf ZG9tYWluIEFTIHBnX2NhdGFsb2cuInZhcmNoYXIiKworICAgICAgICAgREVGQVVMVCAnZGVm YXVsdF92YWx1ZSc6OmNoYXJhY3RlciB2YXJ5aW5nICAgICAgICAgICAgICAgICAgICAgICAr CisgICAgICAgICBDT05TVFJBSU5UIHJlZ3Jlc3NfY29tcHJlaGVuc2l2ZV9kb21haW5fbm90 X251bGwgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAgTk9UIE5VTEwgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAg ICAgQ09OU1RSQUlOVCByZWdyZXNzX2NvbXByZWhlbnNpdmVfZG9tYWluX2NoZWNrICAgICAg ICAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAgIENIRUNLIChsZW5ndGgoVkFMVUU6 OnRleHQpID49IDUpICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgIENPTlNU UkFJTlQgcmVncmVzc19jb21wcmVoZW5zaXZlX2RvbWFpbl9jaGVjazEgICAgICAgICAgICAg ICAgICAgKworICAgICAgICAgICAgICAgICBDSEVDSyAoVkFMVUU6OnRleHQgIX4gJ15ccyok Jzo6dGV4dCk7CisoMSByb3cpCisKKy0tIFRlc3QgZG9tYWluIG92ZXIgY29tcG9zaXRlIHR5 cGUKK0NSRUFURSBUWVBFIHJlZ3Jlc3NfYWRkcmVzc190eXBlIEFTIChzdHJlZXQgdGV4dCwg Y2l0eSB0ZXh0LCB6aXBjb2RlIHRleHQpOworQ1JFQVRFIERPTUFJTiByZWdyZXNzX2FkZHJl c3NfZG9tYWluIEFTIHJlZ3Jlc3NfYWRkcmVzc190eXBlIENIRUNLICgoVkFMVUUpLnppcGNv ZGUgfiAnXlxkezV9JCcpOworU0VMRUNUIHBnX2dldF9kb21haW5fZGRsKCdyZWdyZXNzX2Fk ZHJlc3NfZG9tYWluJyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRfZG9tYWluX2RkbCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyBDUkVBVEUgRE9NQUlOIHB1YmxpYy5yZWdyZXNzX2FkZHJl c3NfZG9tYWluIEFTIHB1YmxpYy5yZWdyZXNzX2FkZHJlc3NfdHlwZSBDT05TVFJBSU5UIHJl Z3Jlc3NfYWRkcmVzc19kb21haW5fY2hlY2sgQ0hFQ0sgKCgoVkFMVUUpLnppcGNvZGUgfiAn XlxkezV9JCc6OnRleHQpKTsKKygxIHJvdykKKworU0VMRUNUIHBnX2dldF9kb21haW5fZGRs KCdyZWdyZXNzX2FkZHJlc3NfZG9tYWluJywgcHJldHR5ID0+IHRydWUpOworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBwZ19nZXRfZG9tYWluX2RkbCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIENSRUFURSBET01BSU4g cHVibGljLnJlZ3Jlc3NfYWRkcmVzc19kb21haW4gQVMgcHVibGljLnJlZ3Jlc3NfYWRkcmVz c190eXBlKworICAgICAgICAgQ09OU1RSQUlOVCByZWdyZXNzX2FkZHJlc3NfZG9tYWluX2No ZWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAgICAgICBDSEVD SyAoKFZBTFVFKS56aXBjb2RlIH4gJ15cZHs1fSQnOjp0ZXh0KTsKKygxIHJvdykKKworLS0g VGVzdCBkb21haW4gd2l0aCBOT1QgVkFMSUQgY29uc3RyYWludAorQ1JFQVRFIERPTUFJTiBy ZWdyZXNzX2RvbWFpbl9ub3RfdmFsaWQgQVMgaW50OworQUxURVIgRE9NQUlOIHJlZ3Jlc3Nf ZG9tYWluX25vdF92YWxpZCBBREQgQ09OU1RSQUlOVCBjaGVja19wb3NpdGl2ZSBDSEVDSyAo VkFMVUUgPiAwKSBOT1QgVkFMSUQ7CitTRUxFQ1QgcGdfZ2V0X2RvbWFpbl9kZGwoJ3JlZ3Jl c3NfZG9tYWluX25vdF92YWxpZCcpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgcGdfZ2V0X2RvbWFpbl9kZGwgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQ1JFQVRFIERPTUFJTiBwdWJsaWMucmVncmVz c19kb21haW5fbm90X3ZhbGlkIEFTIHBnX2NhdGFsb2cuaW50NDsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKworIEFMVEVSIERPTUFJTiBwdWJsaWMucmVncmVz c19kb21haW5fbm90X3ZhbGlkIEFERCBDT05TVFJBSU5UIGNoZWNrX3Bvc2l0aXZlIENIRUNL ICgoVkFMVUUgPiAwKSkgTk9UIFZBTElEOworKDEgcm93KQorCitTRUxFQ1QgcGdfZ2V0X2Rv bWFpbl9kZGwoJ3JlZ3Jlc3NfZG9tYWluX25vdF92YWxpZCcsIHByZXR0eSA9PiB0cnVlKTsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X2Rv bWFpbl9kZGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg Q1JFQVRFIERPTUFJTiBwdWJsaWMucmVncmVzc19kb21haW5fbm90X3ZhbGlkIEFTIHBnX2Nh dGFsb2cuaW50NDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyBB TFRFUiBET01BSU4gcHVibGljLnJlZ3Jlc3NfZG9tYWluX25vdF92YWxpZCBBREQgQ09OU1RS QUlOVCBjaGVja19wb3NpdGl2ZSBDSEVDSyAoVkFMVUUgPiAwKSBOT1QgVkFMSUQ7CisoMSBy b3cpCisKKy0tIFRlc3QgZG9tYWluIHdpdGggbWl4IG9mIHZhbGlkIGFuZCBub3QgdmFsaWQg Y29uc3RyYWludHMKK0NSRUFURSBET01BSU4gcmVncmVzc19kb21haW5fbWl4ZWQgQVMgaW50 IENIRUNLIChWQUxVRSAhPSAwKTsKK0FMVEVSIERPTUFJTiByZWdyZXNzX2RvbWFpbl9taXhl ZCBBREQgQ09OU1RSQUlOVCBjaGVja19yYW5nZSBDSEVDSyAoVkFMVUUgQkVUV0VFTiAxIEFO RCAxMDApIE5PVCBWQUxJRDsKK1NFTEVDVCBwZ19nZXRfZG9tYWluX2RkbCgncmVncmVzc19k b21haW5fbWl4ZWQnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBwZ19nZXRfZG9tYWluX2RkbCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIENSRUFU RSBET01BSU4gcHVibGljLnJlZ3Jlc3NfZG9tYWluX21peGVkIEFTIHBnX2NhdGFsb2cuaW50 NCBDT05TVFJBSU5UIHJlZ3Jlc3NfZG9tYWluX21peGVkX2NoZWNrIENIRUNLICgoVkFMVUUg PD4gMCkpOysKKyBBTFRFUiBET01BSU4gcHVibGljLnJlZ3Jlc3NfZG9tYWluX21peGVkIEFE RCBDT05TVFJBSU5UIGNoZWNrX3JhbmdlIENIRUNLICgoKFZBTFVFID49IDEpIEFORCAoVkFM VUUgPD0gMTAwKSkpIE5PVCBWQUxJRDsKKygxIHJvdykKKworU0VMRUNUIHBnX2dldF9kb21h aW5fZGRsKCdyZWdyZXNzX2RvbWFpbl9taXhlZCcsIHByZXR0eSA9PiB0cnVlKTsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRfZG9t YWluX2RkbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIENSRUFURSBET01BSU4gcHVibGljLnJlZ3Jlc3NfZG9tYWluX21p eGVkIEFTIHBnX2NhdGFsb2cuaW50NCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgIENPTlNUUkFJTlQgcmVncmVzc19k b21haW5fbWl4ZWRfY2hlY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICAgICAgIENI RUNLIChWQUxVRSA8PiAwKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworIEFMVEVSIERP TUFJTiBwdWJsaWMucmVncmVzc19kb21haW5fbWl4ZWQgQUREIENPTlNUUkFJTlQgY2hlY2tf cmFuZ2UgQ0hFQ0sgKFZBTFVFID49IDEgQU5EIFZBTFVFIDw9IDEwMCkgTk9UIFZBTElEOwor KDEgcm93KQorCistLSBUZXN0IGRvbWFpbiB3aXRoIGNvbGxhdGlvbgorQ1JFQVRFIERPTUFJ TiByZWdyZXNzX2RvbWFpbl93aXRoX2NvbGxhdGUgQVMgdGV4dCBDT0xMQVRFICJDIjsKK1NF TEVDVCBwZ19nZXRfZG9tYWluX2RkbCgncmVncmVzc19kb21haW5fd2l0aF9jb2xsYXRlJyk7 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF9kb21haW5fZGRsICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgQ1JFQVRFIERPTUFJTiBwdWJsaWMucmVncmVzc19kb21haW5fd2l0aF9jb2xs YXRlIEFTIHBnX2NhdGFsb2cudGV4dCBDT0xMQVRFICJDIjsKKygxIHJvdykKKworU0VMRUNU IHBnX2dldF9kb21haW5fZGRsKCdyZWdyZXNzX2RvbWFpbl93aXRoX2NvbGxhdGUnLCBwcmV0 dHkgPT4gdHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF9kb21haW5f ZGRsICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIENSRUFU RSBET01BSU4gcHVibGljLnJlZ3Jlc3NfZG9tYWluX3dpdGhfY29sbGF0ZSBBUyBwZ19jYXRh bG9nLnRleHQrCisgICAgICAgICBDT0xMQVRFICJDIjsKKygxIHJvdykKKworLS0gVGVzdCBk b21haW4gdGhhdCBzaGFkb3dzIGEgYnVpbHQtaW4gdHlwZSBuYW1lIChtdXN0IHVzZSBzY2hl bWEtcXVhbGlmaWVkIG5hbWUpCitDUkVBVEUgRE9NQUlOIHB1YmxpYy5pbnQgQVMgcGdfY2F0 YWxvZy5pbnQ0OworLS0gVGhpcyBzaG91bGQgZmFpbCBiZWNhdXNlICdpbnQnIHJlc29sdmVz IHRvIHBnX2NhdGFsb2cuaW50NCwgbm90IHB1YmxpYy5pbnQKK1NFTEVDVCBwZ19nZXRfZG9t YWluX2RkbCgnaW50Jyk7ICAtLSBzaG91bGQgZmFpbAorRVJST1I6ICAiaW50ZWdlciIgaXMg bm90IGEgZG9tYWluCitISU5UOiAgVXNlIGEgc2NoZW1hLXF1YWxpZmllZCBuYW1lIGlmIHRo ZSBkb21haW4gbmFtZSBjb25mbGljdHMgd2l0aCBhIGJ1aWx0LWluIG5hbWUuCistLSBUaGlz IHNob3VsZCB3b3JrIHdpdGggc2NoZW1hLXF1YWxpZmllZCBuYW1lCitTRUxFQ1QgcGdfZ2V0 X2RvbWFpbl9kZGwoJ3B1YmxpYy5pbnQnKTsKKyAgICAgICAgICAgICAgIHBnX2dldF9kb21h aW5fZGRsICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgQ1JFQVRFIERPTUFJTiBwdWJsaWMuImludCIgQVMgcGdf Y2F0YWxvZy5pbnQ0OworKDEgcm93KQorCistLSBDbGVhbnVwCitEUk9QIERPTUFJTiByZWdy ZXNzX3VzX3Bvc3RhbF9jb2RlOworRFJPUCBET01BSU4gcmVncmVzc19kb21haW5fbm90X251 bGw7CitEUk9QIERPTUFJTiByZWdyZXNzX2RvbWFpbl9jaGVjazsKK0RST1AgRE9NQUlOICJy ZWdyZXNzX2RvbWFpbiB3aXRoIHNwYWNlIjsKK0RST1AgRE9NQUlOIHJlZ3Jlc3NfY29tcHJl aGVuc2l2ZV9kb21haW47CitEUk9QIERPTUFJTiByZWdyZXNzX3Rlc3Rfc2NoZW1hLnJlZ3Jl c3Nfc2NoZW1hX2RvbWFpbjsKK0RST1AgU0NIRU1BIHJlZ3Jlc3NfdGVzdF9zY2hlbWE7CitE Uk9QIERPTUFJTiByZWdyZXNzX2FkZHJlc3NfZG9tYWluOworRFJPUCBUWVBFIHJlZ3Jlc3Nf YWRkcmVzc190eXBlOworRFJPUCBET01BSU4gcmVncmVzc19pbnRfYXJyYXlfZG9tYWluOwor RFJPUCBET01BSU4gcmVncmVzc19wcmVjaXNlX251bWVyaWM7CitEUk9QIERPTUFJTiByZWdy ZXNzX3NlcV9kb21haW47CitEUk9QIFNFUVVFTkNFIHJlZ3Jlc3NfdGVzdF9zZXFfcmVuYW1l ZDsKK0RST1AgRE9NQUlOIHJlZ3Jlc3NfZGVyaXZlZF9kb21haW47CitEUk9QIERPTUFJTiBy ZWdyZXNzX2Jhc2VfZG9tYWluOworRFJPUCBET01BSU4gcmVncmVzc19zaW1wbGVfZG9tYWlu OworRFJPUCBET01BSU4gcmVncmVzc19kb21haW5fbm90X3ZhbGlkOworRFJPUCBET01BSU4g cmVncmVzc19kb21haW5fbWl4ZWQ7CitEUk9QIERPTUFJTiByZWdyZXNzX2RvbWFpbl93aXRo X2NvbGxhdGU7CitEUk9QIERPTUFJTiBwdWJsaWMuaW50OwpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZSBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxs ZWxfc2NoZWR1bGUKaW5kZXggY2M2ZDc5OWJjZWEuLjVhNjE1ODA2ZGNmIDEwMDY0NAotLS0g YS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCisrKyBiL3NyYy90ZXN0L3Jl Z3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKQEAgLTI4LDcgKzI4LDcgQEAgdGVzdDogc3RyaW5n cyBtZDUgbnVtZXJvbG9neSBwb2ludCBsc2VnIGxpbmUgYm94IHBhdGggcG9seWdvbiBjaXJj bGUgZGF0ZSB0aW1lIHQKICMgZ2VvbWV0cnkgZGVwZW5kcyBvbiBwb2ludCwgbHNlZywgbGlu ZSwgYm94LCBwYXRoLCBwb2x5Z29uLCBjaXJjbGUKICMgaG9yb2xvZ3kgZGVwZW5kcyBvbiBk YXRlLCB0aW1lLCB0aW1ldHosIHRpbWVzdGFtcCwgdGltZXN0YW1wdHosIGludGVydmFsCiAj IC0tLS0tLS0tLS0KLXRlc3Q6IGdlb21ldHJ5IGhvcm9sb2d5IHRzdHlwZXMgcmVnZXggdHlw ZV9zYW5pdHkgb3ByX3Nhbml0eSBtaXNjX3Nhbml0eSBjb21tZW50cyBleHByZXNzaW9ucyB1 bmljb2RlIHhpZCBtdmNjIGRhdGFiYXNlIHN0YXRzX2ltcG9ydCBwZ19uZGlzdGluY3QgcGdf ZGVwZW5kZW5jaWVzCit0ZXN0OiBnZW9tZXRyeSBob3JvbG9neSB0c3R5cGVzIHJlZ2V4IHR5 cGVfc2FuaXR5IG9wcl9zYW5pdHkgbWlzY19zYW5pdHkgY29tbWVudHMgZXhwcmVzc2lvbnMg dW5pY29kZSB4aWQgbXZjYyBkYXRhYmFzZSBzdGF0c19pbXBvcnQgcGdfbmRpc3RpbmN0IHBn X2RlcGVuZGVuY2llcyBvYmplY3RfZGRsCiAKICMgLS0tLS0tLS0tLQogIyBMb2FkIGh1Z2Ug YW1vdW50cyBvZiBkYXRhCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9vYmpl Y3RfZGRsLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL29iamVjdF9kZGwuc3FsCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi40ZWIwZTViODZkNgotLS0gL2Rl di9udWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL29iamVjdF9kZGwuc3FsCkBAIC0w LDAgKzEsMTQ1IEBACistLQorLS0gVGVzdCBmb3IgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnMg dG8gZ2V0IG9iamVjdCBEREw6CistLSAtIHBnX2dldF9kb21haW5fZGRsCistLQorCitDUkVB VEUgRE9NQUlOIHJlZ3Jlc3NfdXNfcG9zdGFsX2NvZGUgQVMgVEVYVAorICAgIERFRkFVTFQg JzAwMDAwJworICAgIENPTlNUUkFJTlQgcmVncmVzc191c19wb3N0YWxfY29kZV9jaGVjawor ICAgICAgICBDSEVDSyAoCisgICAgICAgICAgICBWQUxVRSB+ICdeXGR7NX0kJworICAgIE9S IFZBTFVFIH4gJ15cZHs1fS1cZHs0fSQnCisgICAgKTsKKworU0VMRUNUIHBnX2dldF9kb21h aW5fZGRsKCdyZWdyZXNzX3VzX3Bvc3RhbF9jb2RlJyk7CitTRUxFQ1QgcGdfZ2V0X2RvbWFp bl9kZGwoJ3JlZ3Jlc3NfdXNfcG9zdGFsX2NvZGUnLCBwcmV0dHkgPT4gZmFsc2UpOworU0VM RUNUIHBnX2dldF9kb21haW5fZGRsKCdyZWdyZXNzX3VzX3Bvc3RhbF9jb2RlJywgZmFsc2Up OworU0VMRUNUIHBnX2dldF9kb21haW5fZGRsKCdyZWdyZXNzX3VzX3Bvc3RhbF9jb2RlJywg cHJldHR5ID0+IHRydWUpOworU0VMRUNUIHBnX2dldF9kb21haW5fZGRsKCdyZWdyZXNzX3Vz X3Bvc3RhbF9jb2RlJywgdHJ1ZSk7CisKKworQ1JFQVRFIERPTUFJTiByZWdyZXNzX2RvbWFp bl9ub3RfbnVsbCBBUyBJTlQgTk9UIE5VTEw7CisKK1NFTEVDVCBwZ19nZXRfZG9tYWluX2Rk bCgncmVncmVzc19kb21haW5fbm90X251bGwnKTsKK1NFTEVDVCBwZ19nZXRfZG9tYWluX2Rk bCgncmVncmVzc19kb21haW5fbm90X251bGwnLCBwcmV0dHkgPT4gdHJ1ZSk7CisKKworQ1JF QVRFIERPTUFJTiByZWdyZXNzX2RvbWFpbl9jaGVjayBBUyBJTlQKKyAgICBDT05TVFJBSU5U IHJlZ3Jlc3NfYSBDSEVDSyAoVkFMVUUgPCAxMDApCisgICAgQ09OU1RSQUlOVCByZWdyZXNz X2IgQ0hFQ0sgKFZBTFVFID4gMTApOworCitTRUxFQ1QgcGdfZ2V0X2RvbWFpbl9kZGwoJ3Jl Z3Jlc3NfZG9tYWluX2NoZWNrJyk7CitTRUxFQ1QgcGdfZ2V0X2RvbWFpbl9kZGwoJ3JlZ3Jl c3NfZG9tYWluX2NoZWNrJywgcHJldHR5ID0+IHRydWUpOworCisKK0NSRUFURSBET01BSU4g InJlZ3Jlc3NfZG9tYWluIHdpdGggc3BhY2UiIEFTIElOVAorICAgIENPTlNUUkFJTlQgcmVn cmVzc19hIENIRUNLIChWQUxVRSA8IDEwMCkKKyAgICBDT05TVFJBSU5UICJyZWdyZXNzX0Nv bnN0cmFpbnQgQiIgQ0hFQ0sgKFZBTFVFID4gMTApCisgICAgQ09OU1RSQUlOVCAicmVncmVz c19Db25zdHJhaW50QyIgQ0hFQ0sgKFZBTFVFICE9IDU1KTsKKworU0VMRUNUIHBnX2dldF9k b21haW5fZGRsKCcicmVncmVzc19kb21haW4gd2l0aCBzcGFjZSInKTsKK1NFTEVDVCBwZ19n ZXRfZG9tYWluX2RkbCgnInJlZ3Jlc3NfZG9tYWluIHdpdGggc3BhY2UiJywgcHJldHR5ID0+ IHRydWUpOworCistLSBUZXN0IGVycm9yIGNhc2VzCitTRUxFQ1QgcGdfZ2V0X2RvbWFpbl9k ZGwoJ3JlZ3Jlc3Nfbm9uZXhpc3RlbnRfZG9tYWluJzo6cmVndHlwZSk7ICAtLSBzaG91bGQg ZmFpbAorU0VMRUNUIHBnX2dldF9kb21haW5fZGRsKE5VTEwpOyAgLS0gc2hvdWxkIHJldHVy biBOVUxMCitTRUxFQ1QgcGdfZ2V0X2RvbWFpbl9kZGwoTlVMTCwgcHJldHR5ID0+IHRydWUp OyAgLS0gc2hvdWxkIHJldHVybiBOVUxMCitTRUxFQ1QgcGdfZ2V0X2RvbWFpbl9kZGwoJ3Bn X2NsYXNzJyk7ICAtLSBzaG91bGQgZmFpbCAtIG5vdCBhIGRvbWFpbgorU0VMRUNUIHBnX2dl dF9kb21haW5fZGRsKCdpbnRlZ2VyJyk7ICAtLSBzaG91bGQgZmFpbCAtIG5vdCBhIGRvbWFp bgorCistLSBUZXN0IGRvbWFpbnMgd2l0aCBubyBjb25zdHJhaW50cworQ1JFQVRFIERPTUFJ TiByZWdyZXNzX3NpbXBsZV9kb21haW4gQVMgdGV4dDsKK1NFTEVDVCBwZ19nZXRfZG9tYWlu X2RkbCgncmVncmVzc19zaW1wbGVfZG9tYWluJyk7CitTRUxFQ1QgcGdfZ2V0X2RvbWFpbl9k ZGwoJ3JlZ3Jlc3Nfc2ltcGxlX2RvbWFpbicsIHByZXR0eSA9PiB0cnVlKTsKKworLS0gVGVz dCBkb21haW4gb3ZlciBhbm90aGVyIGRvbWFpbgorQ1JFQVRFIERPTUFJTiByZWdyZXNzX2Jh c2VfZG9tYWluIEFTIHZhcmNoYXIoMTApOworQ1JFQVRFIERPTUFJTiByZWdyZXNzX2Rlcml2 ZWRfZG9tYWluIEFTIHJlZ3Jlc3NfYmFzZV9kb21haW4gQ0hFQ0sgKExFTkdUSChWQUxVRSkg PiAzKTsKK1NFTEVDVCBwZ19nZXRfZG9tYWluX2RkbCgncmVncmVzc19kZXJpdmVkX2RvbWFp bicpOworU0VMRUNUIHBnX2dldF9kb21haW5fZGRsKCdyZWdyZXNzX2Rlcml2ZWRfZG9tYWlu JywgcHJldHR5ID0+IHRydWUpOworCistLSBUZXN0IGRvbWFpbiB3aXRoIGNvbXBsZXggZGVm YXVsdCBleHByZXNzaW9ucworQ1JFQVRFIFNFUVVFTkNFIHJlZ3Jlc3NfdGVzdF9zZXE7CitD UkVBVEUgRE9NQUlOIHJlZ3Jlc3Nfc2VxX2RvbWFpbiBBUyBpbnQgREVGQVVMVCBuZXh0dmFs KCdyZWdyZXNzX3Rlc3Rfc2VxJyk7CitTRUxFQ1QgcGdfZ2V0X2RvbWFpbl9kZGwoJ3JlZ3Jl c3Nfc2VxX2RvbWFpbicpOworU0VMRUNUIHBnX2dldF9kb21haW5fZGRsKCdyZWdyZXNzX3Nl cV9kb21haW4nLCBwcmV0dHkgPT4gdHJ1ZSk7CisKKy0tIFRlc3QgZG9tYWluIHdpdGggYSBy ZW5hbWVkIHNlcXVlbmNlIGFzIGRlZmF1bHQgZXhwcmVzc2lvbgorQUxURVIgU0VRVUVOQ0Ug cmVncmVzc190ZXN0X3NlcSBSRU5BTUUgVE8gcmVncmVzc190ZXN0X3NlcV9yZW5hbWVkOwor U0VMRUNUIHBnX2dldF9kb21haW5fZGRsKCdyZWdyZXNzX3NlcV9kb21haW4nKTsKKworLS0g VGVzdCBkb21haW4gd2l0aCB0eXBlIG1vZGlmaWVycworQ1JFQVRFIERPTUFJTiByZWdyZXNz X3ByZWNpc2VfbnVtZXJpYyBBUyBudW1lcmljKDEwLDIpIERFRkFVTFQgMC4wMDsKK1NFTEVD VCBwZ19nZXRfZG9tYWluX2RkbCgncmVncmVzc19wcmVjaXNlX251bWVyaWMnKTsKK1NFTEVD VCBwZ19nZXRfZG9tYWluX2RkbCgncmVncmVzc19wcmVjaXNlX251bWVyaWMnLCBwcmV0dHkg PT4gdHJ1ZSk7CisKKy0tIFRlc3QgZG9tYWluIG92ZXIgYXJyYXkgdHlwZQorQ1JFQVRFIERP TUFJTiByZWdyZXNzX2ludF9hcnJheV9kb21haW4gQVMgaW50W10gQ0hFQ0sgKGFycmF5X2xl bmd0aChWQUxVRSwgMSkgPD0gNSk7CitTRUxFQ1QgcGdfZ2V0X2RvbWFpbl9kZGwoJ3JlZ3Jl c3NfaW50X2FycmF5X2RvbWFpbicpOworU0VMRUNUIHBnX2dldF9kb21haW5fZGRsKCdyZWdy ZXNzX2ludF9hcnJheV9kb21haW4nLCBwcmV0dHkgPT4gdHJ1ZSk7CisKKy0tIFRlc3QgZG9t YWluIGluIG5vbi1wdWJsaWMgc2NoZW1hCitDUkVBVEUgU0NIRU1BIHJlZ3Jlc3NfdGVzdF9z Y2hlbWE7CitDUkVBVEUgRE9NQUlOIHJlZ3Jlc3NfdGVzdF9zY2hlbWEucmVncmVzc19zY2hl bWFfZG9tYWluIEFTIHRleHQgREVGQVVMVCAndGVzdCc7CitTRUxFQ1QgcGdfZ2V0X2RvbWFp bl9kZGwoJ3JlZ3Jlc3NfdGVzdF9zY2hlbWEucmVncmVzc19zY2hlbWFfZG9tYWluJyk7CisK Ky0tIFRlc3QgZG9tYWluIHdpdGggbXVsdGlwbGUgY29uc3RyYWludCB0eXBlcyBjb21iaW5l ZAorQ1JFQVRFIERPTUFJTiByZWdyZXNzX2NvbXByZWhlbnNpdmVfZG9tYWluIEFTIHZhcmNo YXIoNTApCisgICAgTk9UIE5VTEwKKyAgICBERUZBVUxUICdkZWZhdWx0X3ZhbHVlJworICAg IENIRUNLIChMRU5HVEgoVkFMVUUpID49IDUpCisgICAgQ0hFQ0sgKFZBTFVFICF+ICdeXHMq JCcpOyAgLS0gbm90IGp1c3Qgd2hpdGVzcGFjZQorU0VMRUNUIHBnX2dldF9kb21haW5fZGRs KCdyZWdyZXNzX2NvbXByZWhlbnNpdmVfZG9tYWluJyk7CitTRUxFQ1QgcGdfZ2V0X2RvbWFp bl9kZGwoJ3JlZ3Jlc3NfY29tcHJlaGVuc2l2ZV9kb21haW4nLCBwcmV0dHkgPT4gdHJ1ZSk7 CisKKy0tIFRlc3QgZG9tYWluIG92ZXIgY29tcG9zaXRlIHR5cGUKK0NSRUFURSBUWVBFIHJl Z3Jlc3NfYWRkcmVzc190eXBlIEFTIChzdHJlZXQgdGV4dCwgY2l0eSB0ZXh0LCB6aXBjb2Rl IHRleHQpOworQ1JFQVRFIERPTUFJTiByZWdyZXNzX2FkZHJlc3NfZG9tYWluIEFTIHJlZ3Jl c3NfYWRkcmVzc190eXBlIENIRUNLICgoVkFMVUUpLnppcGNvZGUgfiAnXlxkezV9JCcpOwor U0VMRUNUIHBnX2dldF9kb21haW5fZGRsKCdyZWdyZXNzX2FkZHJlc3NfZG9tYWluJyk7CitT RUxFQ1QgcGdfZ2V0X2RvbWFpbl9kZGwoJ3JlZ3Jlc3NfYWRkcmVzc19kb21haW4nLCBwcmV0 dHkgPT4gdHJ1ZSk7CisKKy0tIFRlc3QgZG9tYWluIHdpdGggTk9UIFZBTElEIGNvbnN0cmFp bnQKK0NSRUFURSBET01BSU4gcmVncmVzc19kb21haW5fbm90X3ZhbGlkIEFTIGludDsKK0FM VEVSIERPTUFJTiByZWdyZXNzX2RvbWFpbl9ub3RfdmFsaWQgQUREIENPTlNUUkFJTlQgY2hl Y2tfcG9zaXRpdmUgQ0hFQ0sgKFZBTFVFID4gMCkgTk9UIFZBTElEOworU0VMRUNUIHBnX2dl dF9kb21haW5fZGRsKCdyZWdyZXNzX2RvbWFpbl9ub3RfdmFsaWQnKTsKK1NFTEVDVCBwZ19n ZXRfZG9tYWluX2RkbCgncmVncmVzc19kb21haW5fbm90X3ZhbGlkJywgcHJldHR5ID0+IHRy dWUpOworCistLSBUZXN0IGRvbWFpbiB3aXRoIG1peCBvZiB2YWxpZCBhbmQgbm90IHZhbGlk IGNvbnN0cmFpbnRzCitDUkVBVEUgRE9NQUlOIHJlZ3Jlc3NfZG9tYWluX21peGVkIEFTIGlu dCBDSEVDSyAoVkFMVUUgIT0gMCk7CitBTFRFUiBET01BSU4gcmVncmVzc19kb21haW5fbWl4 ZWQgQUREIENPTlNUUkFJTlQgY2hlY2tfcmFuZ2UgQ0hFQ0sgKFZBTFVFIEJFVFdFRU4gMSBB TkQgMTAwKSBOT1QgVkFMSUQ7CitTRUxFQ1QgcGdfZ2V0X2RvbWFpbl9kZGwoJ3JlZ3Jlc3Nf ZG9tYWluX21peGVkJyk7CitTRUxFQ1QgcGdfZ2V0X2RvbWFpbl9kZGwoJ3JlZ3Jlc3NfZG9t YWluX21peGVkJywgcHJldHR5ID0+IHRydWUpOworCistLSBUZXN0IGRvbWFpbiB3aXRoIGNv bGxhdGlvbgorQ1JFQVRFIERPTUFJTiByZWdyZXNzX2RvbWFpbl93aXRoX2NvbGxhdGUgQVMg dGV4dCBDT0xMQVRFICJDIjsKK1NFTEVDVCBwZ19nZXRfZG9tYWluX2RkbCgncmVncmVzc19k b21haW5fd2l0aF9jb2xsYXRlJyk7CitTRUxFQ1QgcGdfZ2V0X2RvbWFpbl9kZGwoJ3JlZ3Jl c3NfZG9tYWluX3dpdGhfY29sbGF0ZScsIHByZXR0eSA9PiB0cnVlKTsKKworLS0gVGVzdCBk b21haW4gdGhhdCBzaGFkb3dzIGEgYnVpbHQtaW4gdHlwZSBuYW1lIChtdXN0IHVzZSBzY2hl bWEtcXVhbGlmaWVkIG5hbWUpCitDUkVBVEUgRE9NQUlOIHB1YmxpYy5pbnQgQVMgcGdfY2F0 YWxvZy5pbnQ0OworLS0gVGhpcyBzaG91bGQgZmFpbCBiZWNhdXNlICdpbnQnIHJlc29sdmVz IHRvIHBnX2NhdGFsb2cuaW50NCwgbm90IHB1YmxpYy5pbnQKK1NFTEVDVCBwZ19nZXRfZG9t YWluX2RkbCgnaW50Jyk7ICAtLSBzaG91bGQgZmFpbAorLS0gVGhpcyBzaG91bGQgd29yayB3 aXRoIHNjaGVtYS1xdWFsaWZpZWQgbmFtZQorU0VMRUNUIHBnX2dldF9kb21haW5fZGRsKCdw dWJsaWMuaW50Jyk7CisKKy0tIENsZWFudXAKK0RST1AgRE9NQUlOIHJlZ3Jlc3NfdXNfcG9z dGFsX2NvZGU7CitEUk9QIERPTUFJTiByZWdyZXNzX2RvbWFpbl9ub3RfbnVsbDsKK0RST1Ag RE9NQUlOIHJlZ3Jlc3NfZG9tYWluX2NoZWNrOworRFJPUCBET01BSU4gInJlZ3Jlc3NfZG9t YWluIHdpdGggc3BhY2UiOworRFJPUCBET01BSU4gcmVncmVzc19jb21wcmVoZW5zaXZlX2Rv bWFpbjsKK0RST1AgRE9NQUlOIHJlZ3Jlc3NfdGVzdF9zY2hlbWEucmVncmVzc19zY2hlbWFf ZG9tYWluOworRFJPUCBTQ0hFTUEgcmVncmVzc190ZXN0X3NjaGVtYTsKK0RST1AgRE9NQUlO IHJlZ3Jlc3NfYWRkcmVzc19kb21haW47CitEUk9QIFRZUEUgcmVncmVzc19hZGRyZXNzX3R5 cGU7CitEUk9QIERPTUFJTiByZWdyZXNzX2ludF9hcnJheV9kb21haW47CitEUk9QIERPTUFJ TiByZWdyZXNzX3ByZWNpc2VfbnVtZXJpYzsKK0RST1AgRE9NQUlOIHJlZ3Jlc3Nfc2VxX2Rv bWFpbjsKK0RST1AgU0VRVUVOQ0UgcmVncmVzc190ZXN0X3NlcV9yZW5hbWVkOworRFJPUCBE T01BSU4gcmVncmVzc19kZXJpdmVkX2RvbWFpbjsKK0RST1AgRE9NQUlOIHJlZ3Jlc3NfYmFz ZV9kb21haW47CitEUk9QIERPTUFJTiByZWdyZXNzX3NpbXBsZV9kb21haW47CitEUk9QIERP TUFJTiByZWdyZXNzX2RvbWFpbl9ub3RfdmFsaWQ7CitEUk9QIERPTUFJTiByZWdyZXNzX2Rv bWFpbl9taXhlZDsKK0RST1AgRE9NQUlOIHJlZ3Jlc3NfZG9tYWluX3dpdGhfY29sbGF0ZTsK K0RST1AgRE9NQUlOIHB1YmxpYy5pbnQ7Ci0tIAoyLjQ1LjEKCg== --------------bEXpRR0yb5hatM5L9KmgmSA9--