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 1v4VSl-00HAQC-Ke for pgsql-hackers@arkaria.postgresql.org; Fri, 03 Oct 2025 02:24:03 +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 1v4VSj-00ATha-Cs for pgsql-hackers@arkaria.postgresql.org; Fri, 03 Oct 2025 02:24:02 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1v4VSi-00AThR-PE for pgsql-hackers@lists.postgresql.org; Fri, 03 Oct 2025 02:24:01 +0000 Received: from mail-io1-xd34.google.com ([2607:f8b0:4864:20::d34]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1v4VSg-0018OW-2r for pgsql-hackers@lists.postgresql.org; Fri, 03 Oct 2025 02:24:00 +0000 Received: by mail-io1-xd34.google.com with SMTP id ca18e2360f4ac-9032edd72c1so186633139f.3 for ; Thu, 02 Oct 2025 19:23:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1759458238; x=1760063038; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=M4p49jNwUJFvO78CMgVe2+lqZhAGh6aGk0eVFy2IlV0=; b=gjXJj1SWmoWcV9j3xG55Z+hfFVwRCC15Ss6CDDQNGR9S27/9QRBvo769iQhMh6+sEa WeuKE4JJHlxhyi27mBrrvazPBnAha6vZnWdJpWKbxvfF+/PiT6uJG0e8neUUsurlGIZv sT08Zg1c9Gus3/YfvG5Kyq0LB4KjtMbyACcZVTYZRIzm2fGppWj819dPjKG6+VS5cfLR 2zw0M5iiIXWg8k6MuVxeS9lB/J//B4DWfCIUWI3AJ84n8k0lNPlMeosmmggRKIiyMkqC jOmLQaiVMaNrpcVQBs3M5kxnyEmC4TAKyUgFJzhp8ws8FpAAnvozYZypsfDCjNEGidMk 3CQg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759458238; x=1760063038; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=M4p49jNwUJFvO78CMgVe2+lqZhAGh6aGk0eVFy2IlV0=; b=Vb+gTSghLf4qa1TAhrkYxALaV2GayINeHe0ykxIhtE3VeOOYIFT2KFC14JgFCUi8/D UsB+ZZ5mkbjgazYow9naU/jzTJddD/4I44Qru4e0Ds6vagymT0YcRWociHWFIF1T2a5D ZxCEvEhjfGZnwdL91mGmEs9JOG6MLn/u7rMtux25uo2YATCCHEWtEZfqbQ/sriOvsmJl Pgp3yATOLt6GqyMLBBhKWQXMxdTYyF5/MV/ZQKQJ+7fsZPSAbflIzbB9fIzCao417EA8 60K/lWloeTcnAksJsCT9I0FyXgrWmfszwGIhp9e8KIOt3MExk2LW1ICmEnDXqI56axEg FRkA== X-Forwarded-Encrypted: i=1; AJvYcCVdT3Wwfbwzl9HDyL61qxHhBMSgcC28S2Fg6LxcRKYxEckdiqajZC2RCz+4zrKugj7609kfFRiKXCU2RMK1@lists.postgresql.org X-Gm-Message-State: AOJu0YyXQBw6NZ1etEZTBQK8vXWn41Gksfid38G8BZeMIrn3vYtyhBeO HO2F2wo9mCtgGTd/38O/1sBA8szyKr/6O8GqP1nJw+UN+jy5Qam6miAaFIj9RlfcLfePCSFBkyF SWKyd7x3iFVCjwiRG35Hv5DtwFHHFTRE= X-Gm-Gg: ASbGncv4M/zRnEmld6fWlVzE16kqBo4SFxnmm3iO5CffivVayy2chMSJBhdcrx1GgMJ PO4xzUca+PCIULIykMRTw4FaROhEZKQ1ciGuSM9RgWPcfE9KRCdUEOKKbOhldOmcgFiqXtEXB7a cuH4eiX1yb1PHhTEz7WrN2gvgeT1PhvefcoLgp4jx7gbI2vsva4Ru2ppUho8dmhL0Fwvp8GwDkK CBxe6E56MDWnfPHqOeuLZtac7sw6SnMbuKAToXdBTxQSBVgfJ8p2iOSJGeu2mSlXcdJVIhHS7iX PDEVvls/2r4= X-Google-Smtp-Source: AGHT+IEetBO2/C4xy5PyN4JJTSoxfNOLWqyPgVfRYkoBzOHppBaJP6XDaHcRTpUV2oKjRk4lzDfD5z72qOzJFqcQjaM= X-Received: by 2002:a05:6e02:3e91:b0:428:973:797d with SMTP id e9e14a558f8ab-42e7ad258f4mr20269875ab.9.1759458237961; Thu, 02 Oct 2025 19:23:57 -0700 (PDT) MIME-Version: 1.0 References: <21076.1748617331@localhost> <2724612.1748655287@sss.pgh.pa.us> In-Reply-To: From: Greg Sabino Mullane Date: Thu, 2 Oct 2025 22:23:22 -0400 X-Gm-Features: AS18NWBZ9THiVUGR9xHvyC9_SURdH7H-xg4mOubWf6gmi266Z9JA4GJKrN9_h8w Message-ID: Subject: Re: POC: Carefully exposing information without authentication To: Tom Lane Cc: Antonin Houska , "pgsql-hackers@lists.postgresql.org" Content-Type: multipart/mixed; boundary="000000000000457842064037cb93" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000457842064037cb93 Content-Type: multipart/alternative; boundary="000000000000457840064037cb91" --000000000000457840064037cb91 Content-Type: text/plain; charset="UTF-8" Please find attached version 3, rebased for PG 19 and now featuring some tests. Cheers, Greg --000000000000457840064037cb91 Content-Type: text/html; charset="UTF-8"
Please find attached version 3, rebased for PG 19 and now featuring some tests.

Cheers,
Greg

--000000000000457840064037cb91-- --000000000000457842064037cb93 Content-Type: application/octet-stream; name="0003-Allow-specific-information-to-be-output-directly-by-Postgres.patch" Content-Disposition: attachment; filename="0003-Allow-specific-information-to-be-output-directly-by-Postgres.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mga7z0mx0 RnJvbSA0MjRkNTVmM2EzMTY0ZGFiY2ZiOGNkZjlmZTZjZDhiN2QzMzliOWQ1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIFNhYmlubyBNdWxsYW5lIDxncmVnQHR1cm5zdGVwLmNv bT4KRGF0ZTogU2F0LCAzMSBNYXkgMjAyNSAwMDozODoyNiAtMDQwMApTdWJqZWN0OiBbUEFUQ0hd IEFsbG93IHNwZWNpZmljIGluZm9ybWF0aW9uIHRvIGJlIG91dHB1dCBkaXJlY3RseSBieSBQb3N0 Z3Jlcy4KCi0tLQogZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sICAgICAgICAgICAgICAgICAgICAg IHwgIDc4ICsrKysrKysKIHNyYy9iYWNrZW5kL3Rjb3AvYmFja2VuZF9zdGFydHVwLmMgICAgICAg ICAgICB8IDE5MSArKysrKysrKysrKysrKysrKysKIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3Vj X3BhcmFtZXRlcnMuZGF0ICAgICB8ICAxOCArKwogc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0 Z3Jlc3FsLmNvbmYuc2FtcGxlIHwgICA4ICsKIHNyYy9pbmNsdWRlL3Bvc3RtYXN0ZXIvcG9zdG1h c3Rlci5oICAgICAgICAgICB8ICAgNCArCiBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfbWlzYy9tZXNv bi5idWlsZCAgICAgICAgfCAgMSArCiBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfbWlzYy90LzAwOV9l eHBvc2UucGwgICAgfCA5MSArKysrKysrKysrKysrKysrKysrKysrCiA3IGZpbGVzIGNoYW5nZWQs IDM5MSBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy90 ZXN0X21pc2MvdC8wMDlfZXhwb3NlLnBsCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2NvbmZp Zy5zZ21sIGIvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCmluZGV4IGU5YjQyMGYzZGRiLi5hM2Q0 YjM4ODg1NiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCisrKyBiL2RvYy9z cmMvc2dtbC9jb25maWcuc2dtbApAQCAtMTA3Nyw2ICsxMDc3LDg0IEBAIGluY2x1ZGVfZGlyICdj b25mLmQnCiAgICAgIDwvdmFyaWFibGVsaXN0PgogICAgICA8L3NlY3QyPgogCisgICAgIDxzZWN0 MiBpZD0icnVudGltZS1jb25maWctZXhwb3NlLXNldHRpbmdzIj4KKyAgICAgPHRpdGxlPkV4cG9z ZSBTZXR0aW5nczwvdGl0bGU+CisKKyAgICAgPHZhcmlhYmxlbGlzdD4KKworICAgICA8dmFybGlz dGVudHJ5IGlkPSJndWMtZXhwb3NlLXJlY292ZXJ5IiB4cmVmbGFiZWw9ImV4cG9zZV9yZWNvdmVy eSI+CisgICAgICA8dGVybT48dmFybmFtZT5leHBvc2VfcmVjb3Zlcnk8L3Zhcm5hbWU+ICg8dHlw ZT5ib29sZWFuPC90eXBlPikKKyAgICAgIDxpbmRleHRlcm0+CisgICAgICAgPHByaW1hcnk+PHZh cm5hbWU+ZXhwb3NlX3JlY292ZXJ5PC92YXJuYW1lPiBjb25maWd1cmF0aW9uIHBhcmFtZXRlcjwv cHJpbWFyeT4KKyAgICAgIDwvaW5kZXh0ZXJtPgorICAgICAgPC90ZXJtPgorICAgICAgPGxpc3Rp dGVtPgorICAgICAgIDxwYXJhPgorICAgICAgICBFbmFibGVzIHJlcG9ydGluZyBpZiB0aGUgc2Vy dmVyIGlzIGluIHJlY292ZXJ5IG1vZGUgd2l0aG91dCByZXF1aXJpbmcKKyAgICAgICAgYW4gYXV0 aGVudGljYXRlZCBsb2dpbi4gQ2xpZW50cyBjYW4gc2VuZCB0aGUgc3RyaW5nIDxsaXRlcmFsPkdF VCAvcmVwbGljYTwvbGl0ZXJhbD4KKyAgICAgICAgYW5kIHdpbGwgcmVjZWl2ZSBhIDEgb3IgMC4g VGhpcyBpcyBlcXVpdmFsZW50IHRvIGxvZ2dpbmcgaW4gYW5kIHJ1bm5pbmcKKyAgICAgICAgPGxp dGVyYWw+U0VMRUNUIHBnX2lzX2luX3JlY292ZXJ5KCk8L2xpdGVyYWw+LiBBIGNsaWVudCBjYW4g YWxzbyBzZW5kIHRoZQorICAgICAgICBzdHJpbmcgPGxpdGVyYWw+SEVBRCAvcmVwbGljYTwvbGl0 ZXJhbD4gd2hpY2ggd2lsbCBzb2xlbHkgcmV0dXJuIGFuIEhUVFAgbGl0ZXJhbDoKKyAgICAgICAg PGxpdGVyYWw+MjAwPC9saXRlcmFsPiBpZiB0aGUgc2VydmVyIGlzIGluIHJlY292ZXJ5LCA8bGl0 ZXJhbD41MDM8L2xpdGVyYWw+IGlmIG5vdC4KKyAgICAgICAgKFRoaXMgYWxsb3dzIGEgZHJvcC1p biByZXBsYWNlbWVudCB0byB0aGUgc2FtZSBQYXRyb25pIGZ1bmN0aW9uYWxpdHkpCisgICAgICAg IEZpbmFsbHksIGEgY2xpZW50IGNhbiBpc3N1ZSA8bGl0ZXJhbD5HRVQgL2luZm88L2xpdGVyYWw+ IGFuZCByZWNlaXZlIHRoZSBzdHJpbmcKKyAgICAgICAgPGxpdGVyYWw+UkVDT1ZFUlk6IDwvbGl0 ZXJhbD4gZm9sbG93ZWQgYnkgYSAxIG9yIDAuCisgICAgICAgPC9wYXJhPgorICAgICAgPC9saXN0 aXRlbT4KKyAgICAgPC92YXJsaXN0ZW50cnk+CisKKyAgICAgPHZhcmxpc3RlbnRyeSBpZD0iZ3Vj LWV4cG9zZS1zeXNpZCIgeHJlZmxhYmVsPSJleHBvc2Vfc3lzaWQiPgorICAgICAgPHRlcm0+PHZh cm5hbWU+ZXhwb3NlX3N5c2lkPC92YXJuYW1lPiAoPHR5cGU+Ym9vbGVhbjwvdHlwZT4pCisgICAg ICA8aW5kZXh0ZXJtPgorICAgICAgIDxwcmltYXJ5Pjx2YXJuYW1lPmV4cG9zZV9zeXNpZDwvdmFy bmFtZT4gY29uZmlndXJhdGlvbiBwYXJhbWV0ZXI8L3ByaW1hcnk+CisgICAgICA8L2luZGV4dGVy bT4KKyAgICAgIDwvdGVybT4KKyAgICAgIDxsaXN0aXRlbT4KKyAgICAgICA8cGFyYT4KKyAgICAg ICAgRW5hYmxlcyByZXBvcnRpbmcgdGhlIHN5c3RlbSBpZGVudGlmaWVyIG9mIHRoZSBjbHVzdGVy IHdpdGhvdXQgcmVxdWlyaW5nCisgICAgICAgIGFuIGF1dGhlbnRpY2F0ZWQgbG9naW4uIENsaWVu dHMgY2FuIHNlbmQgdGhlIHN0cmluZyA8bGl0ZXJhbD5HRVQgL3N5c2lkPC9saXRlcmFsPgorICAg ICAgICBhbmQgd2lsbCByZWNlaXZlIHRoZSBudW1lcmljIHN5c3RlbSBpZGVudGlmaWVyLiBUaGlz IGlzIGEgdW5pcXVlIG51bWJlciBnZW5lcmF0ZWQKKyAgICAgICAgYnkgZWFjaCBjbHVzdGVyIHdo ZW4gaW5pdGRiIGlzIHJ1bi4KKyAgICAgICA8L3BhcmE+CisgICAgICAgPHBhcmE+CisgICAgICAg IEEgY2xpZW50IGNhbiBpc3N1ZSA8bGl0ZXJhbD5HRVQgL2luZm88L2xpdGVyYWw+IGFuZCByZWNl aXZlIHRoZSBzdHJpbmcKKyAgICAgICAgPGxpdGVyYWw+U1lTSUQ6IDwvbGl0ZXJhbD4gZm9sbG93 ZWQgYnkgdGhlIG51bWVyaWMgc3lzdGVtIGlkZW50aWZpZXIuCisgICAgICAgPC9wYXJhPgorICAg ICAgIDxwYXJhPgorICAgICAgICBUaGlzIGZlYXR1cmUgaXMgdXNlZnVsIGZvciBkZXRlcm1pbmlu ZyBpZiB0aGUgc2VydmVyIGlzIHRoZSBzYW1lIHNlcnZlciBhcyBwcmV2aW91c2x5CisgICAgICAg IGVuY291bnRlcmVkLiBOb3RlIHRoYW4gcHJpbWFyeSBhbmQgcmVwbGljYSBzZXJ2ZXJzIHdpbGwg c2hhcmUgdGhlIHNhbWUgc3lzdGVtCisgICAgICAgIGlkZW50aWZpZXIuCisgICAgICAgPC9wYXJh PgorICAgICAgPC9saXN0aXRlbT4KKyAgICAgPC92YXJsaXN0ZW50cnk+CisKKyAgICAgPHZhcmxp c3RlbnRyeSBpZD0iZ3VjLWV4cG9zZS12ZXJzaW9uIiB4cmVmbGFiZWw9ImV4cG9zZV92ZXJzaW9u Ij4KKyAgICAgIDx0ZXJtPjx2YXJuYW1lPmV4cG9zZV92ZXJzaW9uPC92YXJuYW1lPiAoPHR5cGU+ Ym9vbGVhbjwvdHlwZT4pCisgICAgICA8aW5kZXh0ZXJtPgorICAgICAgIDxwcmltYXJ5Pjx2YXJu YW1lPmV4cG9zZV92ZXJzaW9uPC92YXJuYW1lPiBjb25maWd1cmF0aW9uIHBhcmFtZXRlcjwvcHJp bWFyeT4KKyAgICAgIDwvaW5kZXh0ZXJtPgorICAgICAgPC90ZXJtPgorICAgICAgPGxpc3RpdGVt PgorICAgICAgIDxwYXJhPgorICAgICAgICBFbmFibGVzIHJlcG9ydGluZyB0aGUgbnVtZXJpYyB2 ZXJzaW9uIG9mIHRoZSBQb3N0Z3JlcyBjbHVzdGVyIHdpdGhvdXQgcmVxdWlyaW5nCisgICAgICAg IGFuIGF1dGhlbnRpY2F0ZWQgbG9naW4uIENsaWVudHMgY2FuIHNlbmQgdGhlIHN0cmluZyA8bGl0 ZXJhbD5HRVQgL3ZlcnNpb248L2xpdGVyYWw+CisgICAgICAgIGFuZCB3aWxsIHJlY2VpdmUgYW4g aW50ZWdlciByZXByZXNlbnRpbmcgdGhlIHZlcnNpb24uCisgICAgICAgPC9wYXJhPgorICAgICAg IDxwYXJhPgorICAgICAgICBBIGNsaWVudCBjYW4gaXNzdWUgPGxpdGVyYWw+R0VUIC9pbmZvPC9s aXRlcmFsPiBhbmQgcmVjZWl2ZSB0aGUgc3RyaW5nCisgICAgICAgIDxsaXRlcmFsPlZFUlNJT046 IDwvbGl0ZXJhbD4gZm9sbG93ZWQgYnkgdGhlIG51bWVyaWMgdmVyc2lvbi4KKyAgICAgICA8L3Bh cmE+CisgICAgICAgPHBhcmE+CisgICAgICAgIFRoaXMgaXMgcGFydGljdWxhcmx5IHVzZWZ1bCBm b3Igbm9uLVBvc3RncmVzIHN5c3RlbXMgKGVzcC4gc2VjdXJpdHkgc2Nhbm5lcnMpIHRoYXQKKyAg ICAgICAgbmVlZCBhIHdheSB0byBlYXNpbHkgZGV0ZXJtaW5lIHRoZSB2ZXJzaW9uIG9mIFBvc3Rn cmVzIGluIHVzZSB3aXRob3V0IHJlcXVpcmluZworICAgICAgICBhIFBvc3RncmVzIGNsaWVudCAt IG9yIHdpdGhvdXQgbmVlZGluZyBhbnkga25vd2xlZGdlIG9mIHRoZSBQb3N0Z3JlcyBwcm90b2Nv bCBhdCBhbGwuCisgICAgICAgPC9wYXJhPgorICAgICAgPC9saXN0aXRlbT4KKyAgICAgPC92YXJs aXN0ZW50cnk+CisKKyAgICAgPC92YXJpYWJsZWxpc3Q+CisgICAgIDwvc2VjdDI+CisKICAgICAg PHNlY3QyIGlkPSJydW50aW1lLWNvbmZpZy1jb25uZWN0aW9uLWF1dGhlbnRpY2F0aW9uIj4KICAg ICAgPHRpdGxlPkF1dGhlbnRpY2F0aW9uPC90aXRsZT4KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvdGNvcC9iYWNrZW5kX3N0YXJ0dXAuYyBiL3NyYy9iYWNrZW5kL3Rjb3AvYmFja2VuZF9zdGFy dHVwLmMKaW5kZXggMTRkNWZjMGIxOTYuLmM2OWEwNzI3NjkzIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC90Y29wL2JhY2tlbmRfc3RhcnR1cC5jCisrKyBiL3NyYy9iYWNrZW5kL3Rjb3AvYmFja2Vu ZF9zdGFydHVwLmMKQEAgLTQ2LDYgKzQ2LDEwIEBACiBib29sCQlUcmFjZV9jb25uZWN0aW9uX25l Z290aWF0aW9uID0gZmFsc2U7CiB1aW50MzIJCWxvZ19jb25uZWN0aW9ucyA9IDA7CiBjaGFyCSAg ICpsb2dfY29ubmVjdGlvbnNfc3RyaW5nID0gTlVMTDsKK2Jvb2wJCWV4cG9zZV9yZWNvdmVyeSA9 IGZhbHNlOworYm9vbAkJZXhwb3NlX3N5c2lkID0gZmFsc2U7Citib29sCQlleHBvc2VfdmVyc2lv biA9IGZhbHNlOworCiAKIC8qIE90aGVyIGdsb2JhbHMgKi8KIApAQCAtNjUsNiArNjksNyBAQCBz dGF0aWMgdm9pZCBTZW5kTmVnb3RpYXRlUHJvdG9jb2xWZXJzaW9uKExpc3QgKnVucmVjb2duaXpl ZF9wcm90b2NvbF9vcHRpb25zKTsKIHN0YXRpYyB2b2lkIHByb2Nlc3Nfc3RhcnR1cF9wYWNrZXRf ZGllKFNJR05BTF9BUkdTKTsKIHN0YXRpYyB2b2lkIFN0YXJ0dXBQYWNrZXRUaW1lb3V0SGFuZGxl cih2b2lkKTsKIHN0YXRpYyBib29sIHZhbGlkYXRlX2xvZ19jb25uZWN0aW9uc19vcHRpb25zKExp c3QgKmVsZW1saXN0LCB1aW50MzIgKmZsYWdzKTsKK3N0YXRpYyBib29sIEV4cG9zZUluZm9ybWF0 aW9uKHBnc29ja2V0IGZkKTsKIAogLyoKICAqIEVudHJ5IHBvaW50IGZvciBhIG5ldyBiYWNrZW5k IHByb2Nlc3MuCkBAIC0xNDgsNiArMTUzLDE1IEBAIEJhY2tlbmRJbml0aWFsaXplKENsaWVudFNv Y2tldCAqY2xpZW50X3NvY2ssIENBQ19zdGF0ZSBjYWMpCiAJU3RyaW5nSW5mb0RhdGEgcHNfZGF0 YTsKIAlNZW1vcnlDb250ZXh0IG9sZGNvbnRleHQ7CiAKKwkvKgorCSAqIFNjYW4gZm9yIGEgc2lt cGxlIEdFVCAvIEhFQUQgcmVxdWVzdC4gSWYgdGhpcyBpcyBkZXRlY3RlZCBhbmQKKwkgKiBoYW5k bGVkLCB3ZSBhcmUgZG9uZSBhbmQgY2FuIGltbWVkaWF0ZWx5IGV4aXQKKwkgKi8KKwlpZiAoKGV4 cG9zZV9yZWNvdmVyeSB8fCBleHBvc2Vfc3lzaWQgfHwgZXhwb3NlX3ZlcnNpb24pCisJCSYmIEV4 cG9zZUluZm9ybWF0aW9uKGNsaWVudF9zb2NrLT5zb2NrKSkKKwkJcHJvY19leGl0KDApOworCS8q IFNob3VsZCB3ZSBkbyBleGl0KDApIGhlcmUsIGRlc3BpdGUgdGhlIHdhcm5pbmdzIGluIGlwYy5j PyAqLworCiAJLyogVGVsbCBmZC5jIGFib3V0IHRoZSBsb25nLWxpdmVkIEZEIGFzc29jaWF0ZWQg d2l0aCB0aGUgY2xpZW50X3NvY2sgKi8KIAlSZXNlcnZlRXh0ZXJuYWxGRCgpOwogCkBAIC0xMTI2 LDMgKzExNDAsMTgwIEBAIGFzc2lnbl9sb2dfY29ubmVjdGlvbnMoY29uc3QgY2hhciAqbmV3dmFs LCB2b2lkICpleHRyYSkKIHsKIAlsb2dfY29ubmVjdGlvbnMgPSAqKChpbnQgKikgZXh0cmEpOwog fQorCisKK3N0YXRpYworYm9vbAorRXhwb3NlSW5mb3JtYXRpb24ocGdzb2NrZXQgZmQpCit7CisK Ky8qCisgKiBFeHBvc2VJbmZvcm1hdGlvbgorICoKKyAqCisgKiBIYW5kbGUgZWFybHkgc29ja2V0 IHByb2JlIGJlZm9yZSBmdWxsIGJhY2tlbmQgc3RhcnR1cC4KKyAqIFJlc3BvbmRzIHRvIHNtYWxs IHNldCBvZiBwcmVkZWZpbmVkIGVuZHBvaW50cyAoZS5nLiBHRVQgL2luZm8pCisgKgorICogUmVx dWlyZXMgYXQgbGVhc3Qgb25lICJleHBvc2VfIiBHVUMgdG8gYmUgdHJ1ZS4KKyAqCisgKiBSZXR1 cm5zIHRydWUgaWYgYW55IGVuZHBvaW50IGlzIHJlY29nbml6ZWQuCisgKi8KKworI2RlZmluZSBF WFBPU0VfTUlOX1FVRVJZIDkJCS8qIFNob3J0ZXN0IHBvc3NpYmxlIGxpbmU6ICJHZXQgL2luZm8i ICovCisjZGVmaW5lIEVYUE9TRV9NQVhfUVVFUlkgMTYJCS8qIExvbmdlc3QgcG9zc2libGUgR0VU IGxpbmUgKi8KKworLyogV2hhdCBpbmZvcm1hdGlvbiBpcyBiZWluZyByZXR1cm5lZCAqLworCXR5 cGVkZWYgZW51bQorCXsKKwkJRVhQT1NFX05PVEhJTkcsCisJCUVYUE9TRV9IRUFEX1JFUExJQ0Es CisJCUVYUE9TRV9HRVRfQUxMLAorCQlFWFBPU0VfR0VUX1JFUExJQ0EsCisJCUVYUE9TRV9HRVRf U1lTSUQsCisJCUVYUE9TRV9HRVRfVkVSU0lPTiwKKwl9CQkJUmV0dXJuVHlwZTsKKworCXR5cGVk ZWYgc3RydWN0CisJeworCQljb25zdCBjaGFyICplbmRwb2ludDsKKwkJY29uc3QgYm9vbCAqcmVx dWlyZTsKKwkJUmV0dXJuVHlwZQl0eXBlOworCX0JCQllbmRwb2ludF9hY3Rpb247CisKKwlzdGF0 aWMgZW5kcG9pbnRfYWN0aW9uIGVuZHBvaW50X2FjdGlvbnNbXSA9CisJeworCQl7CisJCQkiSEVB RCAvcmVwbGljYSIsICZleHBvc2VfcmVjb3ZlcnksIEVYUE9TRV9IRUFEX1JFUExJQ0EKKwkJfSwK KwkJeworCQkJIkdFVCAvcmVwbGljYSIsICZleHBvc2VfcmVjb3ZlcnksIEVYUE9TRV9HRVRfUkVQ TElDQQorCQl9LAorCQl7CisJCQkiR0VUIC9zeXNpZCIsICZleHBvc2Vfc3lzaWQsIEVYUE9TRV9H RVRfU1lTSUQKKwkJfSwKKwkJeworCQkJIkdFVCAvdmVyc2lvbiIsICZleHBvc2VfdmVyc2lvbiwg RVhQT1NFX0dFVF9WRVJTSU9OCisJCX0sCisJCXsKKwkJCSJHRVQgL2luZm8iLCBOVUxMLCBFWFBP U0VfR0VUX0FMTAorCQl9CisJfTsKKworCXNzaXplX3QJCW47CisJY2hhcgkJYnVmW0VYUE9TRV9N QVhfUVVFUlkgKyAxXTsKKwlpbnQJCQl0eXBlOworCisJQXNzZXJ0KGV4cG9zZV9yZWNvdmVyeSB8 fCBleHBvc2Vfc3lzaWQgfHwgZXhwb3NlX3ZlcnNpb24pOworCisJZG8KKwl7CisJCW4gPSByZWN2 KGZkLCBidWYsIEVYUE9TRV9NQVhfUVVFUlksIE1TR19QRUVLKTsKKwl9IHdoaWxlIChuIDwgMCAm JiBlcnJubyA9PSBFSU5UUik7CisKKwkvKgorCSAqIExlYXZlIGFzIHNvb24gYXMgcG9zc2libGUg aWYgbm8gY2hhbmNlIHdlIGFyZSBpbnRlcmVzdGVkLiBXZSBhbHNvCisJICogc2ltcGx5IHJldHVy biBmYWxzZSBmb3IgbiA9PSAtMQorCSAqLworCWlmIChuIDwgRVhQT1NFX01JTl9RVUVSWSkKKwkJ cmV0dXJuIGZhbHNlOworCisJYnVmW25dID0gJ1wwJzsKKworCXR5cGUgPSBFWFBPU0VfTk9USElO RzsKKwlmb3IgKGludCBpID0gMDsgaSA8IGxlbmd0aG9mKGVuZHBvaW50X2FjdGlvbnMpOyBpKysp CisJeworCQlpZiAoCisJCQlzdHJuY21wKGJ1ZiwgZW5kcG9pbnRfYWN0aW9uc1tpXS5lbmRwb2lu dCwgc3RybGVuKGVuZHBvaW50X2FjdGlvbnNbaV0uZW5kcG9pbnQpKSA9PSAwCisJCQkmJgorCQkJ KGVuZHBvaW50X2FjdGlvbnNbaV0ucmVxdWlyZSA9PSBOVUxMCisJCQkgfHwKKwkJCSAqKGVuZHBv aW50X2FjdGlvbnNbaV0ucmVxdWlyZSkKKwkJCSApKQorCQl7CisJCQl0eXBlID0gZW5kcG9pbnRf YWN0aW9uc1tpXS50eXBlOworCQkJYnJlYWs7CisJCX0KKwl9CisKKwlpZiAodHlwZSA9PSBFWFBP U0VfTk9USElORykKKwkJcmV0dXJuIGZhbHNlOworCisJeworCQlzdGF0aWMgY29uc3QgY2hhciBo dHRwX3ZlcnNpb25bXSA9ICJIVFRQLzEuMSI7CisJCXN0YXRpYyBjb25zdCBjaGFyIGh0dHBfdHlw ZVtdID0gIkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbiI7CisJCXN0YXRpYyBjb25zdCBjaGFyICpo dHRwX2Nvbm4gPSAiQ29ubmVjdGlvbjogY2xvc2UiOworCQlzdGF0aWMgY29uc3QgY2hhciBodHRw X2xlbltdID0gIkNvbnRlbnQtTGVuZ3RoIjsKKworCQlTdHJpbmdJbmZvRGF0YSBtc2c7CisKKwkJ aWYgKHR5cGUgPT0gRVhQT1NFX0hFQURfUkVQTElDQSkKKwkJeworCQkJLyoKKwkJCSAqIENhbGxl ciBvbmx5IGNhcmVzIGFib3V0IHRoZSBIVFRQIHJlc3BvbnNlIGNvZGUsIHNvIG5vIGNvbnRlbnQK KwkJCSAqIG5lZWRlZAorCQkJICovCisKKwkJCWluaXRTdHJpbmdJbmZvRXh0KCZtc2csIDY0KTsK KworCQkJYXBwZW5kU3RyaW5nSW5mbygmbXNnLAorCQkJCQkJCSAiJXMgJXNcclxuIgorCQkJCQkJ CSAiJXNcclxuIgorCQkJCQkJCSAiJXNcclxuXHJcbiIsCisJCQkJCQkJIGh0dHBfdmVyc2lvbiwK KwkJCQkJCQkgKFJlY292ZXJ5SW5Qcm9ncmVzcygpID8gIjIwMCBPSyIgOiAiNTAzIFNlcnZpY2Ug VW5hdmFpbGFibGUiKSwKKwkJCQkJCQkgaHR0cF90eXBlLAorCQkJCQkJCSBodHRwX2Nvbm4KKwkJ CQkpOworCQl9CisJCWVsc2UKKwkJeworCQkJU3RyaW5nSW5mb0RhdGEgY29udGVudDsKKworCQkJ aW5pdFN0cmluZ0luZm9FeHQoJmNvbnRlbnQsIDY0KTsKKworCQkJaWYgKGV4cG9zZV9yZWNvdmVy eSAmJiAodHlwZSA9PSBFWFBPU0VfR0VUX0FMTCB8fCB0eXBlID09IEVYUE9TRV9HRVRfUkVQTElD QSkpCisJCQkJYXBwZW5kU3RyaW5nSW5mbygmY29udGVudCwgIiVzJWRcclxuIiwKKwkJCQkJCQkJ IHR5cGUgPT0gRVhQT1NFX0dFVF9BTEwgPyAiUkVDT1ZFUlk6ICIgOiAiIiwKKwkJCQkJCQkJIFJl Y292ZXJ5SW5Qcm9ncmVzcygpID8gMSA6IDApOworCQkJaWYgKGV4cG9zZV9zeXNpZCAmJiAodHlw ZSA9PSBFWFBPU0VfR0VUX0FMTCB8fCB0eXBlID09IEVYUE9TRV9HRVRfU1lTSUQpKQorCQkJCWFw cGVuZFN0cmluZ0luZm8oJmNvbnRlbnQsICIlcyVsdVxyXG4iLAorCQkJCQkJCQkgdHlwZSA9PSBF WFBPU0VfR0VUX0FMTCA/ICJTWVNJRDogIiA6ICIiLAorCQkJCQkJCQkgR2V0U3lzdGVtSWRlbnRp ZmllcigpKTsKKwkJCWlmIChleHBvc2VfdmVyc2lvbiAmJiAodHlwZSA9PSBFWFBPU0VfR0VUX0FM TCB8fCB0eXBlID09IEVYUE9TRV9HRVRfVkVSU0lPTikpCisJCQkJYXBwZW5kU3RyaW5nSW5mbygm Y29udGVudCwgIiVzJWRcclxuIiwKKwkJCQkJCQkJIHR5cGUgPT0gRVhQT1NFX0dFVF9BTEwgPyAi VkVSU0lPTjogIiA6ICIiLAorCQkJCQkJCQkgUEdfVkVSU0lPTl9OVU0pOworCisJCQlpbml0U3Ry aW5nSW5mb0V4dCgmbXNnLCAyNTYpOworCisJCQlhcHBlbmRTdHJpbmdJbmZvKCZtc2csCisJCQkJ CQkJICIlcyAyMDAgT0tcclxuIgorCQkJCQkJCSAiJXNcclxuIgorCQkJCQkJCSAiJXM6ICVkXHJc biIKKwkJCQkJCQkgIiVzXHJcblxyXG4iCisJCQkJCQkJICIlcyIsCisJCQkJCQkJIGh0dHBfdmVy c2lvbiwKKwkJCQkJCQkgaHR0cF90eXBlLAorCQkJCQkJCSBodHRwX2xlbiwgY29udGVudC5sZW4s CisJCQkJCQkJIGh0dHBfY29ubiwKKwkJCQkJCQkgY29udGVudC5kYXRhCisJCQkJKTsKKworCQkJ cGZyZWUoY29udGVudC5kYXRhKTsKKwkJfQorCisJCWRvCisJCXsKKwkJCW4gPSBzZW5kKGZkLCBt c2cuZGF0YSwgbXNnLmxlbiwgMCk7CisJCX0gd2hpbGUgKG4gPCAwICYmIGVycm5vID09IEVJTlRS KTsKKworCQlwZnJlZShtc2cuZGF0YSk7CisKKwkJaWYgKG4gPCAwKQorCQkJZWxvZyhERUJVRzEs ICJjb3VsZCBub3Qgc2VuZCB0byBjbGllbnQ6ICVtIik7CisKKwkJcmV0dXJuIHRydWU7CisKKwl9 CisKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3BhcmFtZXRlcnMu ZGF0IGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfcGFyYW1ldGVycy5kYXQKaW5kZXggNmJj NmJlMTNkMmEuLjNhY2NmNmJlYzlmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNj L2d1Y19wYXJhbWV0ZXJzLmRhdAorKysgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y19wYXJh bWV0ZXJzLmRhdApAQCAtNjM3LDYgKzYzNywyNCBAQAogICBib290X3ZhbCA9PiAndHJ1ZScsCiB9 LAogCit7IG5hbWUgPT4gJ2V4cG9zZV9yZWNvdmVyeScsIHR5cGUgPT4gJ2Jvb2wnLCBjb250ZXh0 ID0+ICdQR0NfU0lHSFVQJywgZ3JvdXAgPT4gJ0NMSUVOVF9DT05OX1NUQVRFTUVOVCcsCisgIHNo b3J0X2Rlc2MgPT4gJ0V4cG9zZXMgaWYgdGhlIHNlcnZlciBpcyBpbiByZWNvdmVyeSBtb2RlIHdp dGhvdXQgYSBsb2dpbi4nLAorICB2YXJpYWJsZSA9PiAnZXhwb3NlX3JlY292ZXJ5JywKKyAgYm9v dF92YWwgPT4gJ2ZhbHNlJywKK30sCisKK3sgbmFtZSA9PiAnZXhwb3NlX3N5c2lkJywgdHlwZSA9 PiAnYm9vbCcsIGNvbnRleHQgPT4gJ1BHQ19TSUdIVVAnLCBncm91cCA9PiAnQ0xJRU5UX0NPTk5f U1RBVEVNRU5UJywKKyAgc2hvcnRfZGVzYyA9PiAnRXhwb3NlcyB0aGUgc3lzdGVtIGlkZW50aWZp ZXIgd2l0aG91dCBhIGxvZ2luLicsCisgIHZhcmlhYmxlID0+ICdleHBvc2Vfc3lzaWQnLAorICBi b290X3ZhbCA9PiAnZmFsc2UnLAorfSwKKworeyBuYW1lID0+ICdleHBvc2VfdmVyc2lvbicsIHR5 cGUgPT4gJ2Jvb2wnLCBjb250ZXh0ID0+ICdQR0NfU0lHSFVQJywgZ3JvdXAgPT4gJ0NMSUVOVF9D T05OX1NUQVRFTUVOVCcsCisgIHNob3J0X2Rlc2MgPT4gJ0V4cG9zZXMgdGhlIHNlcnZlciB2ZXJz aW9uIHdpdGhvdXQgYSBsb2dpbi4nLAorICB2YXJpYWJsZSA9PiAnZXhwb3NlX3ZlcnNpb24nLAor ICBib290X3ZhbCA9PiAnZmFsc2UnLAorfSwKKwogeyBuYW1lID0+ICdhcnJheV9udWxscycsIHR5 cGUgPT4gJ2Jvb2wnLCBjb250ZXh0ID0+ICdQR0NfVVNFUlNFVCcsIGdyb3VwID0+ICdDT01QQVRf T1BUSU9OU19QUkVWSU9VUycsCiAgIHNob3J0X2Rlc2MgPT4gJ0VuYWJsZXMgaW5wdXQgb2YgTlVM TCBlbGVtZW50cyBpbiBhcnJheXMuJywKICAgbG9uZ19kZXNjID0+ICdXaGVuIHR1cm5lZCBvbiwg dW5xdW90ZWQgTlVMTCBpbiBhbiBhcnJheSBpbnB1dCB2YWx1ZSBtZWFucyBhIG51bGwgdmFsdWU7 IG90aGVyd2lzZSBpdCBpcyB0YWtlbiBsaXRlcmFsbHkuJywKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZSBiL3NyYy9iYWNrZW5kL3V0aWxz L21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQppbmRleCBjMzZmY2I5YWI2MS4uOGU4YmUyY2Yz YWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNh bXBsZQorKysgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUK QEAgLTkxLDYgKzkxLDE0IEBACiAJCQkJCSMgZGlzY29ubmVjdGlvbiB3aGlsZSBydW5uaW5nIHF1 ZXJpZXM7CiAJCQkJCSMgMCBmb3IgbmV2ZXIKIAorCisjIC0gRXhwb3NlIGluZm9ybWF0aW9uIC0K KworI2V4cG9zZV9yZWNvdmVyeSA9IG9mZgorI2V4cG9zZV9zeXNpZCA9IG9mZgorI2V4cG9zZV92 ZXJzaW9uID0gb2ZmCisKKwogIyAtIEF1dGhlbnRpY2F0aW9uIC0KIAogI2F1dGhlbnRpY2F0aW9u X3RpbWVvdXQgPSAxbWluCQkjIDFzLTYwMHMKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Bvc3Rt YXN0ZXIvcG9zdG1hc3Rlci5oIGIvc3JjL2luY2x1ZGUvcG9zdG1hc3Rlci9wb3N0bWFzdGVyLmgK aW5kZXggNzUzODcxMDcxYWMuLmVlMWNhMmZjYTM2IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9w b3N0bWFzdGVyL3Bvc3RtYXN0ZXIuaAorKysgYi9zcmMvaW5jbHVkZS9wb3N0bWFzdGVyL3Bvc3Rt YXN0ZXIuaApAQCAtNzAsNiArNzAsMTAgQEAgZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgcmVzdGFy dF9hZnRlcl9jcmFzaDsKIGV4dGVybiBQR0RMTElNUE9SVCBib29sIHJlbW92ZV90ZW1wX2ZpbGVz X2FmdGVyX2NyYXNoOwogZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgc2VuZF9hYm9ydF9mb3JfY3Jh c2g7CiBleHRlcm4gUEdETExJTVBPUlQgYm9vbCBzZW5kX2Fib3J0X2Zvcl9raWxsOworZXh0ZXJu IFBHRExMSU1QT1JUIGJvb2wgZXhwb3NlX3JlY292ZXJ5OworZXh0ZXJuIFBHRExMSU1QT1JUIGJv b2wgZXhwb3NlX3N5c2lkOworZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgZXhwb3NlX3ZlcnNpb247 CisKIAogI2lmZGVmIFdJTjMyCiBleHRlcm4gUEdETExJTVBPUlQgSEFORExFIFBvc3RtYXN0ZXJI YW5kbGU7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfbWlzYy9tZXNvbi5idWls ZCBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9taXNjL21lc29uLmJ1aWxkCmluZGV4IDZiMWU3MzBi ZjQ2Li42ZmU4YWM0YTlkMSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X21pc2Mv bWVzb24uYnVpbGQKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X21pc2MvbWVzb24uYnVpbGQK QEAgLTE3LDYgKzE3LDcgQEAgdGVzdHMgKz0gewogICAgICAgJ3QvMDA2X3NpZ25hbF9hdXRvdmFj dXVtLnBsJywKICAgICAgICd0LzAwN19jYXRjYWNoZV9pbnZhbC5wbCcsCiAgICAgICAndC8wMDhf cmVwbHNsb3Rfc2luZ2xlX3VzZXIucGwnLAorICAgICAgJ3QvMDA5X2V4cG9zZS5wbCcsCiAgICAg XSwKICAgfSwKIH0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9taXNjL3QvMDA5 X2V4cG9zZS5wbCBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9taXNjL3QvMDA5X2V4cG9zZS5wbApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZjkzNjNkMGJjMDQKLS0tIC9k ZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfbWlzYy90LzAwOV9leHBvc2UucGwK QEAgLTAsMCArMSw5MSBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMjUsIFBvc3RncmVTUUwgR2xvYmFs IERldmVsb3BtZW50IEdyb3VwCisKKyMgVGVzdCBnYXRoZXJpbmcgaW5mb3JtYXRpb24gYmVmb3Jl IGF1dGhlbnRpY2F0aW9uIHZpYSBleHBvc2VfKiB2YXJpYWJsZXMKKworIyBGb3JjZSB1c2Ugb2Yg VENQL0lQIC0gY2FsbCBiZWZvcmUgdGhlICd1c2UnCitJTklUeyAkUG9zdGdyZVNRTDo6VGVzdDo6 VXRpbHM6OnVzZV91bml4X3NvY2tldHMgPSAwOyB9CisKK3VzZSBzdHJpY3Q7Cit1c2Ugd2Fybmlu Z3M7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0 OjpVdGlsczsKK3VzZSBUZXN0OjpNb3JlOwordXNlIExXUDo6VXNlckFnZW50OworCitteSAkbm9k ZSA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnbm9kZTEnKTsKKyMgU2V0dGluZyBh cyBsb2dpY2FsIGhlcmUgc2ltcGx5IHRvIGF2b2lkIHdhbF9sZXZlbCBtaW5pbWFsIHNvIHdlIGNh biByZXN0YXJ0IGFzIGEgcmVwbGljYQorJG5vZGUtPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAi bG9naWNhbCIpOworJG5vZGUtPnN0YXJ0OworCitteSAkc2VydmVyX3ZlcnNpb24gPSAkbm9kZS0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdzaG93IHNlcnZlcl92ZXJzaW9uX251bScpOworbXkgJGJp bmRpciA9ICRub2RlLT5jb25maWdfZGF0YSgnLS1iaW5kaXInKTsKK215ICRkYXRhZGlyID0gJG5v ZGUtPmRhdGFfZGlyOworbXkgJGNkYXRhID0gcXh7JGJpbmRpci9wZ19jb250cm9sZGF0YSAtRCAk ZGF0YWRpciAyPiYxfTsKK215ICgkc3lzaWQpID0gJGNkYXRhID1+IC9EYXRhYmFzZSBzeXN0ZW0g aWRlbnRpZmllcjpccysoXGQrKS87CisKK215ICRwb3J0ID0gJG5vZGUtPnBvcnQ7CitteSAkVVJJ PSJodHRwOi8vbG9jYWxob3N0OiRwb3J0IjsKK215ICR1YSA9IExXUDo6VXNlckFnZW50LT5uZXco dGltZW91dCA9PiAyKTsKKworbXkgKCRyZXNwb25zZSwgJGNvZGUsICRjb250ZW50KTsKKworJHJl c3BvbnNlID0gJHVhLT5nZXQoIiRVUkkvaW5mbyIpOworJGNvZGUgPSAkcmVzcG9uc2UtPmNvZGU7 CitpcyAoJGNvZGUsIDUwMCwgIkdFVCAvaW5mbyByZXR1cm5zIEhUVFAgY29kZSA1MDAgd2hlbiBu b3RoaW5nIGlzIGxpc3RlbmluZyIpOworCiskcmVzcG9uc2UgPSAkdWEtPmhlYWQoIiRVUkkvcmVw bGljYSIpOworJGNvZGUgPSAkcmVzcG9uc2UtPmNvZGU7CitpcyAoJGNvZGUsIDUwMCwgIkhFQUQg L3JlcGxpY2EgcmV0dXJucyBIVFRQIGNvZGUgNTAwIHdoZW4gbm90aGluZyBpcyBsaXN0ZW5pbmci KTsKKworJG5vZGUtPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAnZXhwb3NlX3JlY292 ZXJ5PW9uJyk7Ciskbm9kZS0+cmVsb2FkKCk7CisKKyRyZXNwb25zZSA9ICR1YS0+Z2V0KCIkVVJJ L3JlcGxpY2EiKTsKKyRjb2RlID0gJHJlc3BvbnNlLT5jb2RlOworaXMgKCRjb2RlLCAyMDAsICJH RVQgL3JlcGxpY2EgcmV0dXJucyBIVFRQIGNvZGUgMjAwIHdoZW4gZXhwb3NlX3JlY292ZXJ5IGlz IG9uIChwcmltYXJ5KSIpOworaXMgKCRyZXNwb25zZS0+Y29udGVudCwgIjBcclxuIiwgIkdFVCAv cmVwbGljYSByZXR1cm5zICcwJyB3aGVuIGV4cG9zZV9yZWNvdmVyeSBpcyBvbiAocHJpbWFyeSki KTsKKworJHJlc3BvbnNlID0gJHVhLT5oZWFkKCIkVVJJL3JlcGxpY2EiKTsKKyRjb2RlID0gJHJl c3BvbnNlLT5jb2RlOworaXMgKCRjb2RlLCA1MDMsICJIRUFEIC9pbmZvIHJldHVybnMgSFRUUCBj b2RlIDUwMyB3aGVuIGV4cG9zZV9yZWNvdmVyeSBpcyBvbiAocHJpbWFyeSkiKTsKKworJHJlc3Bv bnNlID0gJHVhLT5nZXQoIiRVUkkvaW5mbyIpOworJGNvZGUgPSAkcmVzcG9uc2UtPmNvZGU7Citp cyAoJGNvZGUsIDIwMCwgIkdFVCAvaW5mbyByZXR1cm5zIEhUVFAgY29kZSAyMDAgd2hlbiBleHBv c2VfcmVjb3ZlcnkgaXMgb24iKTsKK2lzICgkcmVzcG9uc2UtPmNvbnRlbnQsICJSRUNPVkVSWTog MFxyXG4iLCAiR0VUIC9pbmZvIHJldHVybnMgJ1JFQ09WRVJZOjAnIHdoZW4gZXhwb3NlX3JlY292 ZXJ5IGlzIG9uIChwcmltYXJ5KSIpOworCiskbm9kZS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwu Y29uZicsICdleHBvc2VfdmVyc2lvbj1vbicpOworJG5vZGUtPmFwcGVuZF9jb25mKCdwb3N0Z3Jl c3FsLmNvbmYnLCAnZXhwb3NlX3N5c2lkPW9uJyk7Ciskbm9kZS0+cmVsb2FkKCk7CisKKyRyZXNw b25zZSA9ICR1YS0+Z2V0KCIkVVJJL2luZm8iKTsKKyRjb250ZW50ID0gJHJlc3BvbnNlLT5jb250 ZW50OworbGlrZSAoJGNvbnRlbnQsIHFyL1JFQ09WRVJZOiAwLywgIkdFVCAvaW5mbyByZXR1cm5z ICdSRUNPVkVSWTogMCcgd2hlbiBleHBvc2VfcmVjb3ZlcnkgaXMgb24gKHByaW1hcnkpIik7Cits aWtlICgkY29udGVudCwgcXIvVkVSU0lPTjogJHNlcnZlcl92ZXJzaW9uLywgIkdFVCAvaW5mbyBy ZXR1cm5zICdWRVJTSU9OOiAkc2VydmVyX3ZlcnNpb24nIHdoZW4gZXhwb3NlX3ZlcnNpb24gaXMg b24iKTsKK2xpa2UgKCRjb250ZW50LCBxci9TWVNJRDogJHN5c2lkLywgIkdFVCAvaW5mbyByZXR1 cm5zIGNvcnJlY3QgU1lTSUQgd2hlbiBleHBvc2Vfc3lzaWQgaXMgb24iKTsKKworJHJlc3BvbnNl ID0gJHVhLT5nZXQoIiRVUkkvc3lzaWQiKTsKKyRjb250ZW50ID0gJHJlc3BvbnNlLT5jb250ZW50 OworaXMgKCRjb250ZW50LCAiJHN5c2lkXHJcbiIsICJHRVQgL3N5c2lkIHJldHVybnMgY29ycmVj dCB2YWx1ZSB3aGVuIGV4cG9zZV9zeXNpZCBpcyBvbiIpOworCiskcmVzcG9uc2UgPSAkdWEtPmdl dCgiJFVSSS92ZXJzaW9uIik7CiskY29udGVudCA9ICRyZXNwb25zZS0+Y29udGVudDsKK2lzICgk Y29udGVudCwgIiRzZXJ2ZXJfdmVyc2lvblxyXG4iLCAiR0VUIC92ZXJzaW9uIHJldHVybnMgY29y cmVjdCB2YWx1ZSB3aGVuIGV4cG9zZV92ZXJzaW9uIGlzIG9uIik7CisKKyRub2RlLT5zZXRfc3Rh bmRieV9tb2RlKCk7Ciskbm9kZS0+cmVzdGFydCgpOworCiskcmVzcG9uc2UgPSAkdWEtPmdldCgi JFVSSS9yZXBsaWNhIik7CiskY29kZSA9ICRyZXNwb25zZS0+Y29kZTsKK2lzICgkY29kZSwgMjAw LCAiR0VUIC9yZXBsaWNhIHJldHVybnMgSFRUUCBjb2RlIDIwMCB3aGVuIGV4cG9zZV9yZWNvdmVy eSBpcyBvbiAocmVwbGljYSkiKTsKK2lzICgkcmVzcG9uc2UtPmNvbnRlbnQsICIxXHJcbiIsICJH RVQgL3JlcGxpY2EgcmV0dXJucyAnMCcgd2hlbiBleHBvc2VfcmVjb3ZlcnkgaXMgb24gKHJlcGxp Y2EpIik7CisKKyRyZXNwb25zZSA9ICR1YS0+aGVhZCgiJFVSSS9yZXBsaWNhIik7CiskY29kZSA9 ICRyZXNwb25zZS0+Y29kZTsKK2lzICgkY29kZSwgMjAwLCAiSEVBRCAvaW5mbyByZXR1cm5zIEhU VFAgY29kZSAyMDAgd2hlbiBleHBvc2VfcmVjb3ZlcnkgaXMgb24gKHJlcGxpY2EpIik7CisKKyRy ZXNwb25zZSA9ICR1YS0+Z2V0KCIkVVJJL2luZm8iKTsKKyRjb250ZW50ID0gJHJlc3BvbnNlLT5j b250ZW50OworbGlrZSAoJGNvbnRlbnQsIHFyL1JFQ09WRVJZOiAxLywgIkdFVCAvaW5mbyByZXR1 cm5zICdSRUNPVkVSWTogMScgd2hlbiBleHBvc2VfcmVjb3ZlcnkgaXMgb24gKHJlcGxpY2EpIik7 CisKK2RvbmVfdGVzdGluZygpOwotLSAKMi4zMC4yCg== --000000000000457842064037cb93--