From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [IPv6:2a01:7e0:0:424::9]) by lore.proxmox.com (Postfix) with ESMTPS id D31021FF17A for ; Tue, 6 Jan 2026 15:24:32 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 286851A33B; Tue, 6 Jan 2026 15:25:37 +0100 (CET) From: Kefu Chai To: pve-devel@lists.proxmox.com Date: Tue, 6 Jan 2026 22:24:26 +0800 Message-ID: <20260106142440.2368585-3-k.chai@proxmox.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260106142440.2368585-1-k.chai@proxmox.com> References: <20260106142440.2368585-1-k.chai@proxmox.com> MIME-Version: 1.0 X-Bm-Milter-Handled: 55990f41-d878-4baa-be0a-ee34c49e34d2 X-Bm-Transport-Timestamp: 1767709465298 X-SPAM-LEVEL: Spam detection results: 0 AWL -0.043 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment RCVD_IN_VALIDITY_CERTIFIED_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. RCVD_IN_VALIDITY_RPBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. RCVD_IN_VALIDITY_SAFE_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record URIBL_SBL_A 0.1 Contains URL's A record listed in the Spamhaus SBL blocklist [188.114.97.3, 188.114.96.3] Subject: [pve-devel] [PATCH pve-cluster 02/15] pmxcfs-rs: add pmxcfs-config crate X-BeenThere: pve-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox VE development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Proxmox VE development discussion Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: pve-devel-bounces@lists.proxmox.com Sender: "pve-devel" QWRkIGNvbmZpZ3VyYXRpb24gbWFuYWdlbWVudCBjcmF0ZSB0aGF0IHByb3ZpZGVzOgotIENvbmZp ZyBzdHJ1Y3QgZm9yIHJ1bnRpbWUgY29uZmlndXJhdGlvbgotIE5vZGUgaG9zdG5hbWUsIElQLCBh bmQgZ3JvdXAgSUQgdHJhY2tpbmcKLSBEZWJ1ZyBhbmQgbG9jYWwgbW9kZSBmbGFncwotIFRocmVh ZC1zYWZlIGNvbmZpZ3VyYXRpb24gYWNjZXNzIHZpYSBwYXJraW5nX2xvdCBNdXRleAoKVGhpcyBp cyBhIGZvdW5kYXRpb25hbCBjcmF0ZSB3aXRoIG5vIGludGVybmFsIGRlcGVuZGVuY2llcywgb25s eQpyZXF1aXJpbmcgcGFya2luZ19sb3QgZm9yIHN5bmNocm9uaXphdGlvbi4gT3RoZXIgY3JhdGVz IHdpbGwgdXNlCnRoaXMgZm9yIGFjY2Vzc2luZyBydW50aW1lIGNvbmZpZ3VyYXRpb24uCgpTaWdu ZWQtb2ZmLWJ5OiBLZWZ1IENoYWkgPGsuY2hhaUBwcm94bW94LmNvbT4KLS0tCiBzcmMvcG14Y2Zz LXJzL0NhcmdvLnRvbWwgICAgICAgICAgICAgICB8ICAgMyArLQogc3JjL3BteGNmcy1ycy9wbXhj ZnMtY29uZmlnL0NhcmdvLnRvbWwgfCAgMTYgKwogc3JjL3BteGNmcy1ycy9wbXhjZnMtY29uZmln L1JFQURNRS5tZCAgfCAxMjcgKysrKysrKwogc3JjL3BteGNmcy1ycy9wbXhjZnMtY29uZmlnL3Ny Yy9saWIucnMgfCA0NzEgKysrKysrKysrKysrKysrKysrKysrKysrKwogNCBmaWxlcyBjaGFuZ2Vk LCA2MTYgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNy Yy9wbXhjZnMtcnMvcG14Y2ZzLWNvbmZpZy9DYXJnby50b21sCiBjcmVhdGUgbW9kZSAxMDA2NDQg c3JjL3BteGNmcy1ycy9wbXhjZnMtY29uZmlnL1JFQURNRS5tZAogY3JlYXRlIG1vZGUgMTAwNjQ0 IHNyYy9wbXhjZnMtcnMvcG14Y2ZzLWNvbmZpZy9zcmMvbGliLnJzCgpkaWZmIC0tZ2l0IGEvc3Jj L3BteGNmcy1ycy9DYXJnby50b21sIGIvc3JjL3BteGNmcy1ycy9DYXJnby50b21sCmluZGV4IDE1 ZDg4ZjUyLi4yOGUyMGJiNyAxMDA2NDQKLS0tIGEvc3JjL3BteGNmcy1ycy9DYXJnby50b21sCisr KyBiL3NyYy9wbXhjZnMtcnMvQ2FyZ28udG9tbApAQCAtMSw3ICsxLDggQEAKICMgV29ya3NwYWNl IHJvb3QgZm9yIHBteGNmcyBSdXN0IGltcGxlbWVudGF0aW9uCiBbd29ya3NwYWNlXQogbWVtYmVy cyA9IFsKLSAgICAicG14Y2ZzLWFwaS10eXBlcyIsICMgU2hhcmVkIHR5cGVzIGFuZCBlcnJvciBk ZWZpbml0aW9ucworICAgICJwbXhjZnMtYXBpLXR5cGVzIiwgICMgU2hhcmVkIHR5cGVzIGFuZCBl cnJvciBkZWZpbml0aW9ucworICAgICJwbXhjZnMtY29uZmlnIiwgICAgICMgQ29uZmlndXJhdGlv biBtYW5hZ2VtZW50CiBdCiByZXNvbHZlciA9ICIyIgogCmRpZmYgLS1naXQgYS9zcmMvcG14Y2Zz LXJzL3BteGNmcy1jb25maWcvQ2FyZ28udG9tbCBiL3NyYy9wbXhjZnMtcnMvcG14Y2ZzLWNvbmZp Zy9DYXJnby50b21sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi5mNWE2MDk5 NQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9wbXhjZnMtcnMvcG14Y2ZzLWNvbmZpZy9DYXJnby50 b21sCkBAIC0wLDAgKzEsMTYgQEAKK1twYWNrYWdlXQorbmFtZSA9ICJwbXhjZnMtY29uZmlnIgor ZGVzY3JpcHRpb24gPSAiQ29uZmlndXJhdGlvbiBtYW5hZ2VtZW50IGZvciBwbXhjZnMiCisKK3Zl cnNpb24ud29ya3NwYWNlID0gdHJ1ZQorZWRpdGlvbi53b3Jrc3BhY2UgPSB0cnVlCithdXRob3Jz LndvcmtzcGFjZSA9IHRydWUKK2xpY2Vuc2Uud29ya3NwYWNlID0gdHJ1ZQorcmVwb3NpdG9yeS53 b3Jrc3BhY2UgPSB0cnVlCisKK1tsaW50c10KK3dvcmtzcGFjZSA9IHRydWUKKworW2RlcGVuZGVu Y2llc10KKyMgQ29uY3VycmVuY3kgcHJpbWl0aXZlcworcGFya2luZ19sb3Qud29ya3NwYWNlID0g dHJ1ZQpkaWZmIC0tZ2l0IGEvc3JjL3BteGNmcy1ycy9wbXhjZnMtY29uZmlnL1JFQURNRS5tZCBi L3NyYy9wbXhjZnMtcnMvcG14Y2ZzLWNvbmZpZy9SRUFETUUubWQKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAuLmMwNmIyMTcwCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3BteGNm cy1ycy9wbXhjZnMtY29uZmlnL1JFQURNRS5tZApAQCAtMCwwICsxLDEyNyBAQAorIyBwbXhjZnMt Y29uZmlnCisKKyoqQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50KiogYW5kICoqQ2x1c3RlciBTZXJ2 aWNlcyoqIGZvciBwbXhjZnMuCisKK1RoaXMgY3JhdGUgcHJvdmlkZXMgY29uZmlndXJhdGlvbiBz dHJ1Y3R1cmVzIGFuZCBjbHVzdGVyIGludGVncmF0aW9uIHNlcnZpY2VzIGluY2x1ZGluZyBxdW9y dW0gdHJhY2tpbmcgYW5kIGNsdXN0ZXIgY29uZmlndXJhdGlvbiBtb25pdG9yaW5nIHZpYSBDb3Jv c3luYyBBUElzLgorCisjIyBPdmVydmlldworCitUaGlzIGNyYXRlIGNvbnRhaW5zOgorMS4gKipD b25maWcgc3RydWN0Kio6IFJ1bnRpbWUgY29uZmlndXJhdGlvbiAobm9kZSBuYW1lLCBJUHMsIGZs YWdzKQorMi4gSW50ZWdyYXRpb24gd2l0aCBDb3Jvc3luYyBzZXJ2aWNlcyAodHJhY2tlZCBpbiBt YWluIHBteGNmcyBjcmF0ZSk6CisgICAtICoqUXVvcnVtU2VydmljZSoqIChgcG14Y2ZzL3NyYy9x dW9ydW1fc2VydmljZS5yc2ApIC0gUXVvcnVtIG1vbml0b3JpbmcKKyAgIC0gKipDbHVzdGVyQ29u ZmlnU2VydmljZSoqIChgcG14Y2ZzL3NyYy9jbHVzdGVyX2NvbmZpZ19zZXJ2aWNlLnJzYCkgLSBD b25maWcgdHJhY2tpbmcKKworIyMgQ29uZmlnIFN0cnVjdAorCitUaGUgYENvbmZpZ2Agc3RydWN0 IGhvbGRzIGRhZW1vbi13aWRlIGNvbmZpZ3VyYXRpb24gaW5jbHVkaW5nIG5vZGUgaG9zdG5hbWUs IElQIGFkZHJlc3MsIHd3dy1kYXRhIGdyb3VwIElELCBkZWJ1ZyBmbGFnLCBsb2NhbCBtb2RlIGZs YWcsIGFuZCBjbHVzdGVyIG5hbWUuCisKKyMjIENsdXN0ZXIgU2VydmljZXMKKworVGhlIGZvbGxv d2luZyBzZXJ2aWNlcyBhcmUgaW1wbGVtZW50ZWQgaW4gdGhlIG1haW4gcG14Y2ZzIGNyYXRlIGJ1 dCBkb2N1bWVudGVkIGhlcmUgZm9yIGNvbXBsZXRlbmVzcy4KKworIyMjIFF1b3J1bVNlcnZpY2UK KworKipDIEVxdWl2YWxlbnQ6KiogYHNyYy9wbXhjZnMvcXVvcnVtLmNgIC0gYHNlcnZpY2VfcXVv cnVtX25ldygpYAorKipSdXN0IExvY2F0aW9uOioqIGBzcmMvcG14Y2ZzLXJzL3BteGNmcy9zcmMv cXVvcnVtX3NlcnZpY2UucnNgCisKK01vbml0b3JzIGNsdXN0ZXIgcXVvcnVtIHN0YXR1cyB2aWEg Q29yb3N5bmMgcXVvcnVtIEFQSS4KKworIyMjIyBGZWF0dXJlcworLSBUcmFja3MgcXVvcnVtIHN0 YXRlIChxdW9yYXRlL2lucXVvcmF0ZSkKKy0gTW9uaXRvcnMgbWVtYmVyIGxpc3QgY2hhbmdlcwor LSBBdXRvbWF0aWMgcmVjb25uZWN0aW9uIG9uIENvcm9zeW5jIHJlc3RhcnQKKy0gVXBkYXRlcyBg U3RhdHVzYCBxdW9ydW0gZmxhZworCisjIyMjIEMgdG8gUnVzdCBNYXBwaW5nCisKK3wgQyBGdW5j dGlvbiB8IFJ1c3QgRXF1aXZhbGVudCB8IExvY2F0aW9uIHwKK3wtLS0tLS0tLS0tLXwtLS0tLS0t LS0tLS0tLS0tLXwtLS0tLS0tLS0tfAorfCBgc2VydmljZV9xdW9ydW1fbmV3KClgIHwgYFF1b3J1 bVNlcnZpY2U6Om5ldygpYCB8IHF1b3J1bV9zZXJ2aWNlLnJzIHwKK3wgYHNlcnZpY2VfcXVvcnVt X2Rlc3Ryb3koKWAgfCAoRHJvcCB0cmFpdCAvIGZpbmFsaXplKSB8IEF1dG9tYXRpYyB8Cit8IGBx dW9ydW1fbm90aWZpY2F0aW9uX2ZuYCB8IHF1b3J1bV9ub3RpZmljYXRpb24gY2xvc3VyZSB8IHF1 b3J1bV9zZXJ2aWNlLnJzIHwKK3wgYG5vZGVsaXN0X25vdGlmaWNhdGlvbl9mbmAgfCBub2RlbGlz dF9ub3RpZmljYXRpb24gY2xvc3VyZSB8IHF1b3J1bV9zZXJ2aWNlLnJzIHwKKworIyMjIyBRdW9y dW0gTm90aWZpY2F0aW9ucworCitUaGUgc2VydmljZSBtb25pdG9ycyBxdW9ydW0gc3RhdGUgY2hh bmdlcyBhbmQgbWVtYmVyIGxpc3QgY2hhbmdlcywgdXBkYXRpbmcgdGhlIFN0YXR1cyBhY2NvcmRp bmdseS4KKworIyMjIENsdXN0ZXJDb25maWdTZXJ2aWNlCisKKyoqQyBFcXVpdmFsZW50OioqIGBz cmMvcG14Y2ZzL2NvbmZkYi5jYCAtIGBzZXJ2aWNlX2NvbmZkYl9uZXcoKWAKKyoqUnVzdCBMb2Nh dGlvbjoqKiBgc3JjL3BteGNmcy1ycy9wbXhjZnMvc3JjL2NsdXN0ZXJfY29uZmlnX3NlcnZpY2Uu cnNgCisKK01vbml0b3JzIENvcm9zeW5jIGNsdXN0ZXIgY29uZmlndXJhdGlvbiAoY21hcCkgYW5k IHRyYWNrcyBub2RlIG1lbWJlcnNoaXAuCisKKyMjIyMgRmVhdHVyZXMKKy0gTW9uaXRvcnMgY2x1 c3RlciBtZW1iZXJzaGlwIHZpYSBDb3Jvc3luYyBjbWFwIEFQSQorLSBUcmFja3Mgbm9kZSBhZGRp dGlvbnMvcmVtb3ZhbHMKKy0gUmVnaXN0ZXJzIG5vZGVzIGluIFN0YXR1cworLSBBdXRvbWF0aWMg cmVjb25uZWN0aW9uIG9uIENvcm9zeW5jIHJlc3RhcnQKKworIyMjIyBDIHRvIFJ1c3QgTWFwcGlu ZworCit8IEMgRnVuY3Rpb24gfCBSdXN0IEVxdWl2YWxlbnQgfCBMb2NhdGlvbiB8Cit8LS0tLS0t LS0tLS18LS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLXwKK3wgYHNlcnZpY2VfY29uZmRiX25l dygpYCB8IGBDbHVzdGVyQ29uZmlnU2VydmljZTo6bmV3KClgIHwgY2x1c3Rlcl9jb25maWdfc2Vy dmljZS5ycyB8Cit8IGBzZXJ2aWNlX2NvbmZkYl9kZXN0cm95KClgIHwgKERyb3AgdHJhaXQgLyBm aW5hbGl6ZSkgfCBBdXRvbWF0aWMgfAorfCBgY29uZmRiX3RyYWNrX2ZuYCB8IChkaXJlY3QgY21h cCBxdWVyaWVzKSB8IERpZmZlcmVudCBhcHByb2FjaCB8CisKKyMjIyMgQ29uZmlndXJhdGlvbiBU cmFja2luZworCitUaGUgc2VydmljZSBtb25pdG9yczoKKy0gYG5vZGVsaXN0Lm5vZGUuKi5ub2Rl aWRgIC0gTm9kZSBJRHMKKy0gYG5vZGVsaXN0Lm5vZGUuKi5uYW1lYCAtIE5vZGUgbmFtZXMKKy0g YG5vZGVsaXN0Lm5vZGUuKi5yaW5nKl9hZGRyYCAtIE5vZGUgSVAgYWRkcmVzc2VzCisKK1VwZGF0 ZXMgYFN0YXR1c2Agd2l0aCBjdXJyZW50IGNsdXN0ZXIgbWVtYmVyc2hpcC4KKworIyMgS2V5IERp ZmZlcmVuY2VzIGZyb20gQyBJbXBsZW1lbnRhdGlvbgorCisjIyMgQ2x1c3RlciBDb25maWcgU2Vy dmljZSBBUEkKKworKipDIFZlcnNpb24gKGNvbmZkYi5jKToqKgorLSBVc2VzIGRlcHJlY2F0ZWQg Y29uZmRiIEFQSQorLSBUcmFjayBjaGFuZ2VzIHZpYSBjb25mZGIgbm90aWZpY2F0aW9ucworCisq KlJ1c3QgVmVyc2lvbjoqKgorLSBVc2VzIG1vZGVybiBjbWFwIEFQSQorLSBEaXJlY3QgY21hcCBx dWVyaWVzCisKK0JvdGggcmVhZCB0aGUgc2FtZSBkYXRhLCBidXQgUnVzdCB1c2VzIHRoZSBtb2Rl cm4gQ29yb3N5bmMgQVBJLgorCisjIyMgU2VydmljZSBJbnRlZ3JhdGlvbgorCisqKkMgVmVyc2lv bjoqKgorLSBxYl9sb29wIG1hbmFnZXMgbGlmZWN5Y2xlCisKKyoqUnVzdCBWZXJzaW9uOioqCist IFNlcnZpY2UgdHJhaXQgYWJzdHJhY3RzIGxpZmVjeWNsZQorLSBTZXJ2aWNlTWFuYWdlciBoYW5k bGVzIHJldHJ5CistIFRva2lvIGFzeW5jIGRpc3BhdGNoCisKKyMjIEtub3duIElzc3VlcyAvIFRP RE9zCisKKyMjIyBDb21wYXRpYmlsaXR5CistICoqUXVvcnVtIHRyYWNraW5nKio6IENvbXBhdGli bGUgd2l0aCBDIGltcGxlbWVudGF0aW9uCistICoqTm9kZSByZWdpc3RyYXRpb24qKjogRXF1aXZh bGVudCBiZWhhdmlvcgorLSAqKmNtYXAgdnMgY29uZmRiKio6IFJ1c3QgdXNlcyBtb2Rlcm4gY21h cCBBUEkgKEMgdXNlcyBkZXByZWNhdGVkIGNvbmZkYikKKworIyMjIE1pc3NpbmcgRmVhdHVyZXMK Ky0gTm9uZSBpZGVudGlmaWVkCisKKyMjIyBCZWhhdmlvcmFsIERpZmZlcmVuY2VzIChCZW5pZ24p CistICoqQVBJIGNob2ljZSoqOiBSdXN0IHVzZXMgY21hcCwgQyB1c2VzIGNvbmZkYiAoYm90aCBy ZWFkIHNhbWUgZGF0YSkKKy0gKipMaWZlY3ljbGUqKjogUnVzdCB1c2VzIFNlcnZpY2UgdHJhaXQs IEMgdXNlcyBtYW51YWwgbGlmZWN5Y2xlCisKKyMjIFJlZmVyZW5jZXMKKworIyMjIEMgSW1wbGVt ZW50YXRpb24KKy0gYHNyYy9wbXhjZnMvcXVvcnVtLmNgIC8gYHF1b3J1bS5oYCAtIFF1b3J1bSBz ZXJ2aWNlCistIGBzcmMvcG14Y2ZzL2NvbmZkYi5jYCAvIGBjb25mZGIuaGAgLSBDbHVzdGVyIGNv bmZpZyBzZXJ2aWNlCisKKyMjIyBSZWxhdGVkIENyYXRlcworLSAqKnBteGNmcyoqOiBNYWluIGRh ZW1vbiB3aXRoIFF1b3J1bVNlcnZpY2UgYW5kIENsdXN0ZXJDb25maWdTZXJ2aWNlCistICoqcG14 Y2ZzLXN0YXR1cyoqOiBTdGF0dXMgdHJhY2tpbmcgdXBkYXRlZCBieSB0aGVzZSBzZXJ2aWNlcwor LSAqKnBteGNmcy1zZXJ2aWNlcyoqOiBTZXJ2aWNlIGZyYW1ld29yayB1c2VkIGJ5IGJvdGggc2Vy dmljZXMKKy0gKipydXN0LWNvcm9zeW5jKio6IENvcm9zeW5jIEZGSSBiaW5kaW5ncwpkaWZmIC0t Z2l0IGEvc3JjL3BteGNmcy1ycy9wbXhjZnMtY29uZmlnL3NyYy9saWIucnMgYi9zcmMvcG14Y2Zz LXJzL3BteGNmcy1jb25maWcvc3JjL2xpYi5ycwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMC4uNWUxZWUxYjIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvcG14Y2ZzLXJzL3BteGNm cy1jb25maWcvc3JjL2xpYi5ycwpAQCAtMCwwICsxLDQ3MSBAQAordXNlIHBhcmtpbmdfbG90OjpS d0xvY2s7Cit1c2Ugc3RkOjpzeW5jOjpBcmM7CisKKy8vLyBHbG9iYWwgY29uZmlndXJhdGlvbiBm b3IgcG14Y2ZzCitwdWIgc3RydWN0IENvbmZpZyB7CisgICAgLy8vIE5vZGUgbmFtZSAoaG9zdG5h bWUgd2l0aG91dCBkb21haW4pCisgICAgcHViIG5vZGVuYW1lOiBTdHJpbmcsCisKKyAgICAvLy8g Tm9kZSBJUCBhZGRyZXNzCisgICAgcHViIG5vZGVfaXA6IFN0cmluZywKKworICAgIC8vLyB3d3ct ZGF0YSBncm91cCBJRCBmb3IgZmlsZSBwZXJtaXNzaW9ucworICAgIHB1YiB3d3dfZGF0YV9naWQ6 IHUzMiwKKworICAgIC8vLyBEZWJ1ZyBtb2RlIGVuYWJsZWQKKyAgICBwdWIgZGVidWc6IGJvb2ws CisKKyAgICAvLy8gRm9yY2UgbG9jYWwgbW9kZSAobm8gY2x1c3RlcmluZykKKyAgICBwdWIgbG9j YWxfbW9kZTogYm9vbCwKKworICAgIC8vLyBDbHVzdGVyIG5hbWUgKENQRyBncm91cCBuYW1lKQor ICAgIHB1YiBjbHVzdGVyX25hbWU6IFN0cmluZywKKworICAgIC8vLyBEZWJ1ZyBsZXZlbCAoMCA9 IG5vcm1hbCwgMSsgPSBkZWJ1ZykgLSBtdXRhYmxlIGF0IHJ1bnRpbWUKKyAgICBkZWJ1Z19sZXZl bDogUndMb2NrPHU4PiwKK30KKworaW1wbCBDbG9uZSBmb3IgQ29uZmlnIHsKKyAgICBmbiBjbG9u ZSgmc2VsZikgLT4gU2VsZiB7CisgICAgICAgIFNlbGYgeworICAgICAgICAgICAgbm9kZW5hbWU6 IHNlbGYubm9kZW5hbWUuY2xvbmUoKSwKKyAgICAgICAgICAgIG5vZGVfaXA6IHNlbGYubm9kZV9p cC5jbG9uZSgpLAorICAgICAgICAgICAgd3d3X2RhdGFfZ2lkOiBzZWxmLnd3d19kYXRhX2dpZCwK KyAgICAgICAgICAgIGRlYnVnOiBzZWxmLmRlYnVnLAorICAgICAgICAgICAgbG9jYWxfbW9kZTog c2VsZi5sb2NhbF9tb2RlLAorICAgICAgICAgICAgY2x1c3Rlcl9uYW1lOiBzZWxmLmNsdXN0ZXJf bmFtZS5jbG9uZSgpLAorICAgICAgICAgICAgZGVidWdfbGV2ZWw6IFJ3TG9jazo6bmV3KCpzZWxm LmRlYnVnX2xldmVsLnJlYWQoKSksCisgICAgICAgIH0KKyAgICB9Cit9CisKK2ltcGwgc3RkOjpm bXQ6OkRlYnVnIGZvciBDb25maWcgeworICAgIGZuIGZtdCgmc2VsZiwgZjogJm11dCBzdGQ6OmZt dDo6Rm9ybWF0dGVyPCdfPikgLT4gc3RkOjpmbXQ6OlJlc3VsdCB7CisgICAgICAgIGYuZGVidWdf c3RydWN0KCJDb25maWciKQorICAgICAgICAgICAgLmZpZWxkKCJub2RlbmFtZSIsICZzZWxmLm5v ZGVuYW1lKQorICAgICAgICAgICAgLmZpZWxkKCJub2RlX2lwIiwgJnNlbGYubm9kZV9pcCkKKyAg ICAgICAgICAgIC5maWVsZCgid3d3X2RhdGFfZ2lkIiwgJnNlbGYud3d3X2RhdGFfZ2lkKQorICAg ICAgICAgICAgLmZpZWxkKCJkZWJ1ZyIsICZzZWxmLmRlYnVnKQorICAgICAgICAgICAgLmZpZWxk KCJsb2NhbF9tb2RlIiwgJnNlbGYubG9jYWxfbW9kZSkKKyAgICAgICAgICAgIC5maWVsZCgiY2x1 c3Rlcl9uYW1lIiwgJnNlbGYuY2x1c3Rlcl9uYW1lKQorICAgICAgICAgICAgLmZpZWxkKCJkZWJ1 Z19sZXZlbCIsICYqc2VsZi5kZWJ1Z19sZXZlbC5yZWFkKCkpCisgICAgICAgICAgICAuZmluaXNo KCkKKyAgICB9Cit9CisKK2ltcGwgQ29uZmlnIHsKKyAgICBwdWIgZm4gbmV3KAorICAgICAgICBu b2RlbmFtZTogU3RyaW5nLAorICAgICAgICBub2RlX2lwOiBTdHJpbmcsCisgICAgICAgIHd3d19k YXRhX2dpZDogdTMyLAorICAgICAgICBkZWJ1ZzogYm9vbCwKKyAgICAgICAgbG9jYWxfbW9kZTog Ym9vbCwKKyAgICAgICAgY2x1c3Rlcl9uYW1lOiBTdHJpbmcsCisgICAgKSAtPiBBcmM8U2VsZj4g eworICAgICAgICBsZXQgZGVidWdfbGV2ZWwgPSBpZiBkZWJ1ZyB7IDEgfSBlbHNlIHsgMCB9Owor ICAgICAgICBBcmM6Om5ldyhTZWxmIHsKKyAgICAgICAgICAgIG5vZGVuYW1lLAorICAgICAgICAg ICAgbm9kZV9pcCwKKyAgICAgICAgICAgIHd3d19kYXRhX2dpZCwKKyAgICAgICAgICAgIGRlYnVn LAorICAgICAgICAgICAgbG9jYWxfbW9kZSwKKyAgICAgICAgICAgIGNsdXN0ZXJfbmFtZSwKKyAg ICAgICAgICAgIGRlYnVnX2xldmVsOiBSd0xvY2s6Om5ldyhkZWJ1Z19sZXZlbCksCisgICAgICAg IH0pCisgICAgfQorCisgICAgcHViIGZuIGNsdXN0ZXJfbmFtZSgmc2VsZikgLT4gJnN0ciB7Cisg ICAgICAgICZzZWxmLmNsdXN0ZXJfbmFtZQorICAgIH0KKworICAgIHB1YiBmbiBub2RlbmFtZSgm c2VsZikgLT4gJnN0ciB7CisgICAgICAgICZzZWxmLm5vZGVuYW1lCisgICAgfQorCisgICAgcHVi IGZuIG5vZGVfaXAoJnNlbGYpIC0+ICZzdHIgeworICAgICAgICAmc2VsZi5ub2RlX2lwCisgICAg fQorCisgICAgcHViIGZuIHd3d19kYXRhX2dpZCgmc2VsZikgLT4gdTMyIHsKKyAgICAgICAgc2Vs Zi53d3dfZGF0YV9naWQKKyAgICB9CisKKyAgICBwdWIgZm4gaXNfZGVidWcoJnNlbGYpIC0+IGJv b2wgeworICAgICAgICBzZWxmLmRlYnVnCisgICAgfQorCisgICAgcHViIGZuIGlzX2xvY2FsX21v ZGUoJnNlbGYpIC0+IGJvb2wgeworICAgICAgICBzZWxmLmxvY2FsX21vZGUKKyAgICB9CisKKyAg ICAvLy8gR2V0IGN1cnJlbnQgZGVidWcgbGV2ZWwgKDAgPSBub3JtYWwsIDErID0gZGVidWcpCisg ICAgcHViIGZuIGRlYnVnX2xldmVsKCZzZWxmKSAtPiB1OCB7CisgICAgICAgICpzZWxmLmRlYnVn X2xldmVsLnJlYWQoKQorICAgIH0KKworICAgIC8vLyBTZXQgZGVidWcgbGV2ZWwgKDAgPSBub3Jt YWwsIDErID0gZGVidWcpCisgICAgcHViIGZuIHNldF9kZWJ1Z19sZXZlbCgmc2VsZiwgbGV2ZWw6 IHU4KSB7CisgICAgICAgICpzZWxmLmRlYnVnX2xldmVsLndyaXRlKCkgPSBsZXZlbDsKKyAgICB9 Cit9CisKKyNbY2ZnKHRlc3QpXQorbW9kIHRlc3RzIHsKKyAgICAvLyEgVW5pdCB0ZXN0cyBmb3Ig Q29uZmlnIHN0cnVjdAorICAgIC8vIQorICAgIC8vISBUaGlzIHRlc3QgbW9kdWxlIHByb3ZpZGVz IGNvbXByZWhlbnNpdmUgY292ZXJhZ2UgZm9yOgorICAgIC8vISAtIENvbmZpZ3VyYXRpb24gY3Jl YXRpb24gYW5kIGluaXRpYWxpemF0aW9uCisgICAgLy8hIC0gR2V0dGVyIG1ldGhvZHMgZm9yIGFs bCBjb25maWd1cmF0aW9uIGZpZWxkcworICAgIC8vISAtIERlYnVnIGxldmVsIG11dGF0aW9uIGFu ZCB0aHJlYWQgc2FmZXR5CisgICAgLy8hIC0gQ29uY3VycmVudCBhY2Nlc3MgcGF0dGVybnMgKHJl YWRzIGFuZCB3cml0ZXMpCisgICAgLy8hIC0gQ2xvbmUgaW5kZXBlbmRlbmNlCisgICAgLy8hIC0g RGVidWcgZm9ybWF0dGluZworICAgIC8vISAtIEVkZ2UgY2FzZXMgKGVtcHR5IHN0cmluZ3MsIGxv bmcgc3RyaW5ncywgc3BlY2lhbCBjaGFyYWN0ZXJzLCB1bmljb2RlKQorICAgIC8vIQorICAgIC8v ISAjIyBUaHJlYWQgU2FmZXR5CisgICAgLy8hCisgICAgLy8hIFRoZSBDb25maWcgc3RydWN0IHVz ZXMgYEFyYzxBdG9taWNVOD5gIGZvciBkZWJ1Z19sZXZlbCB0byBhbGxvdworICAgIC8vISBzYWZl IGNvbmN1cnJlbnQgcmVhZHMgYW5kIHdyaXRlcy4gVGVzdHMgdmVyaWZ5OgorICAgIC8vISAtIDEw IHRocmVhZHMgw5cgMTAwIG9wZXJhdGlvbnMgKGNvbmN1cnJlbnQgbW9kaWZpY2F0aW9ucykKKyAg ICAvLyEgLSAyMCB0aHJlYWRzIMOXIDEwMDAgb3BlcmF0aW9ucyAoY29uY3VycmVudCByZWFkcykK KyAgICAvLyEKKyAgICAvLyEgIyMgRWRnZSBDYXNlcworICAgIC8vIQorICAgIC8vISBUZXN0cyBj b3ZlciB2YXJpb3VzIGVkZ2UgY2FzZXMgaW5jbHVkaW5nOgorICAgIC8vISAtIEVtcHR5IHN0cmlu Z3MgZm9yIG5vZGUvY2x1c3RlciBuYW1lcworICAgIC8vISAtIExvbmcgc3RyaW5ncyAoMTAwMCsg Y2hhcmFjdGVycykKKyAgICAvLyEgLSBTcGVjaWFsIGNoYXJhY3RlcnMgaW4gc3RyaW5ncworICAg IC8vISAtIFVuaWNvZGUgc3VwcG9ydCAoZW1vamksIG5vbi1BU0NJSSBjaGFyYWN0ZXJzKQorCisg ICAgdXNlIHN1cGVyOjoqOworICAgIHVzZSBzdGQ6OnRocmVhZDsKKworICAgIC8vID09PT09IEJh c2ljIENvbnN0cnVjdGlvbiBUZXN0cyA9PT09PQorCisgICAgI1t0ZXN0XQorICAgIGZuIHRlc3Rf Y29uZmlnX2NyZWF0aW9uKCkgeworICAgICAgICBsZXQgY29uZmlnID0gQ29uZmlnOjpuZXcoCisg ICAgICAgICAgICAibm9kZTEiLnRvX3N0cmluZygpLAorICAgICAgICAgICAgIjE5Mi4xNjguMS4x MCIudG9fc3RyaW5nKCksCisgICAgICAgICAgICAzMywKKyAgICAgICAgICAgIGZhbHNlLAorICAg ICAgICAgICAgZmFsc2UsCisgICAgICAgICAgICAicG14Y2ZzIi50b19zdHJpbmcoKSwKKyAgICAg ICAgKTsKKworICAgICAgICBhc3NlcnRfZXEhKGNvbmZpZy5ub2RlbmFtZSgpLCAibm9kZTEiKTsK KyAgICAgICAgYXNzZXJ0X2VxIShjb25maWcubm9kZV9pcCgpLCAiMTkyLjE2OC4xLjEwIik7Cisg ICAgICAgIGFzc2VydF9lcSEoY29uZmlnLnd3d19kYXRhX2dpZCgpLCAzMyk7CisgICAgICAgIGFz c2VydCEoIWNvbmZpZy5pc19kZWJ1ZygpKTsKKyAgICAgICAgYXNzZXJ0ISghY29uZmlnLmlzX2xv Y2FsX21vZGUoKSk7CisgICAgICAgIGFzc2VydF9lcSEoY29uZmlnLmNsdXN0ZXJfbmFtZSgpLCAi cG14Y2ZzIik7CisgICAgICAgIGFzc2VydF9lcSEoCisgICAgICAgICAgICBjb25maWcuZGVidWdf bGV2ZWwoKSwKKyAgICAgICAgICAgIDAsCisgICAgICAgICAgICAiRGVidWcgbGV2ZWwgc2hvdWxk IGJlIDAgd2hlbiBkZWJ1ZyBpcyBmYWxzZSIKKyAgICAgICAgKTsKKyAgICB9CisKKyAgICAjW3Rl c3RdCisgICAgZm4gdGVzdF9jb25maWdfY3JlYXRpb25fd2l0aF9kZWJ1ZygpIHsKKyAgICAgICAg bGV0IGNvbmZpZyA9IENvbmZpZzo6bmV3KAorICAgICAgICAgICAgIm5vZGUyIi50b19zdHJpbmco KSwKKyAgICAgICAgICAgICIxMC4wLjAuNSIudG9fc3RyaW5nKCksCisgICAgICAgICAgICAxMDAw LAorICAgICAgICAgICAgdHJ1ZSwKKyAgICAgICAgICAgIGZhbHNlLAorICAgICAgICAgICAgInRl c3QtY2x1c3RlciIudG9fc3RyaW5nKCksCisgICAgICAgICk7CisKKyAgICAgICAgYXNzZXJ0IShj b25maWcuaXNfZGVidWcoKSk7CisgICAgICAgIGFzc2VydF9lcSEoCisgICAgICAgICAgICBjb25m aWcuZGVidWdfbGV2ZWwoKSwKKyAgICAgICAgICAgIDEsCisgICAgICAgICAgICAiRGVidWcgbGV2 ZWwgc2hvdWxkIGJlIDEgd2hlbiBkZWJ1ZyBpcyB0cnVlIgorICAgICAgICApOworICAgIH0KKwor ICAgICNbdGVzdF0KKyAgICBmbiB0ZXN0X2NvbmZpZ19jcmVhdGlvbl9sb2NhbF9tb2RlKCkgewor ICAgICAgICBsZXQgY29uZmlnID0gQ29uZmlnOjpuZXcoCisgICAgICAgICAgICAibG9jYWxob3N0 Ii50b19zdHJpbmcoKSwKKyAgICAgICAgICAgICIxMjcuMC4wLjEiLnRvX3N0cmluZygpLAorICAg ICAgICAgICAgMzMsCisgICAgICAgICAgICBmYWxzZSwKKyAgICAgICAgICAgIHRydWUsCisgICAg ICAgICAgICAibG9jYWwiLnRvX3N0cmluZygpLAorICAgICAgICApOworCisgICAgICAgIGFzc2Vy dCEoY29uZmlnLmlzX2xvY2FsX21vZGUoKSk7CisgICAgICAgIGFzc2VydCEoIWNvbmZpZy5pc19k ZWJ1ZygpKTsKKyAgICB9CisKKyAgICAvLyA9PT09PSBHZXR0ZXIgVGVzdHMgPT09PT0KKworICAg ICNbdGVzdF0KKyAgICBmbiB0ZXN0X2FsbF9nZXR0ZXJzKCkgeworICAgICAgICBsZXQgY29uZmln ID0gQ29uZmlnOjpuZXcoCisgICAgICAgICAgICAidGVzdG5vZGUiLnRvX3N0cmluZygpLAorICAg ICAgICAgICAgIjE3Mi4xNi4wLjEiLnRvX3N0cmluZygpLAorICAgICAgICAgICAgOTk5LAorICAg ICAgICAgICAgdHJ1ZSwKKyAgICAgICAgICAgIHRydWUsCisgICAgICAgICAgICAibXktY2x1c3Rl ciIudG9fc3RyaW5nKCksCisgICAgICAgICk7CisKKyAgICAgICAgLy8gVGVzdCBhbGwgZ2V0dGVy IG1ldGhvZHMKKyAgICAgICAgYXNzZXJ0X2VxIShjb25maWcubm9kZW5hbWUoKSwgInRlc3Rub2Rl Iik7CisgICAgICAgIGFzc2VydF9lcSEoY29uZmlnLm5vZGVfaXAoKSwgIjE3Mi4xNi4wLjEiKTsK KyAgICAgICAgYXNzZXJ0X2VxIShjb25maWcud3d3X2RhdGFfZ2lkKCksIDk5OSk7CisgICAgICAg IGFzc2VydCEoY29uZmlnLmlzX2RlYnVnKCkpOworICAgICAgICBhc3NlcnQhKGNvbmZpZy5pc19s b2NhbF9tb2RlKCkpOworICAgICAgICBhc3NlcnRfZXEhKGNvbmZpZy5jbHVzdGVyX25hbWUoKSwg Im15LWNsdXN0ZXIiKTsKKyAgICAgICAgYXNzZXJ0X2VxIShjb25maWcuZGVidWdfbGV2ZWwoKSwg MSk7CisgICAgfQorCisgICAgLy8gPT09PT0gRGVidWcgTGV2ZWwgTXV0YXRpb24gVGVzdHMgPT09 PT0KKworICAgICNbdGVzdF0KKyAgICBmbiB0ZXN0X2RlYnVnX2xldmVsX211dGF0aW9uKCkgewor ICAgICAgICBsZXQgY29uZmlnID0gQ29uZmlnOjpuZXcoCisgICAgICAgICAgICAibm9kZTEiLnRv X3N0cmluZygpLAorICAgICAgICAgICAgIjE5Mi4xNjguMS4xIi50b19zdHJpbmcoKSwKKyAgICAg ICAgICAgIDMzLAorICAgICAgICAgICAgZmFsc2UsCisgICAgICAgICAgICBmYWxzZSwKKyAgICAg ICAgICAgICJwbXhjZnMiLnRvX3N0cmluZygpLAorICAgICAgICApOworCisgICAgICAgIGFzc2Vy dF9lcSEoY29uZmlnLmRlYnVnX2xldmVsKCksIDApOworCisgICAgICAgIGNvbmZpZy5zZXRfZGVi dWdfbGV2ZWwoMSk7CisgICAgICAgIGFzc2VydF9lcSEoY29uZmlnLmRlYnVnX2xldmVsKCksIDEp OworCisgICAgICAgIGNvbmZpZy5zZXRfZGVidWdfbGV2ZWwoNSk7CisgICAgICAgIGFzc2VydF9l cSEoY29uZmlnLmRlYnVnX2xldmVsKCksIDUpOworCisgICAgICAgIGNvbmZpZy5zZXRfZGVidWdf bGV2ZWwoMCk7CisgICAgICAgIGFzc2VydF9lcSEoY29uZmlnLmRlYnVnX2xldmVsKCksIDApOwor ICAgIH0KKworICAgICNbdGVzdF0KKyAgICBmbiB0ZXN0X2RlYnVnX2xldmVsX21heF92YWx1ZSgp IHsKKyAgICAgICAgbGV0IGNvbmZpZyA9IENvbmZpZzo6bmV3KAorICAgICAgICAgICAgIm5vZGUx Ii50b19zdHJpbmcoKSwKKyAgICAgICAgICAgICIxOTIuMTY4LjEuMSIudG9fc3RyaW5nKCksCisg ICAgICAgICAgICAzMywKKyAgICAgICAgICAgIGZhbHNlLAorICAgICAgICAgICAgZmFsc2UsCisg ICAgICAgICAgICAicG14Y2ZzIi50b19zdHJpbmcoKSwKKyAgICAgICAgKTsKKworICAgICAgICBj b25maWcuc2V0X2RlYnVnX2xldmVsKDI1NSk7CisgICAgICAgIGFzc2VydF9lcSEoY29uZmlnLmRl YnVnX2xldmVsKCksIDI1NSk7CisKKyAgICAgICAgY29uZmlnLnNldF9kZWJ1Z19sZXZlbCgwKTsK KyAgICAgICAgYXNzZXJ0X2VxIShjb25maWcuZGVidWdfbGV2ZWwoKSwgMCk7CisgICAgfQorCisg ICAgLy8gPT09PT0gVGhyZWFkIFNhZmV0eSBUZXN0cyA9PT09PQorCisgICAgI1t0ZXN0XQorICAg IGZuIHRlc3RfZGVidWdfbGV2ZWxfdGhyZWFkX3NhZmV0eSgpIHsKKyAgICAgICAgbGV0IGNvbmZp ZyA9IENvbmZpZzo6bmV3KAorICAgICAgICAgICAgIm5vZGUxIi50b19zdHJpbmcoKSwKKyAgICAg ICAgICAgICIxOTIuMTY4LjEuMSIudG9fc3RyaW5nKCksCisgICAgICAgICAgICAzMywKKyAgICAg ICAgICAgIGZhbHNlLAorICAgICAgICAgICAgZmFsc2UsCisgICAgICAgICAgICAicG14Y2ZzIi50 b19zdHJpbmcoKSwKKyAgICAgICAgKTsKKworICAgICAgICBsZXQgY29uZmlnX2Nsb25lID0gQXJj OjpjbG9uZSgmY29uZmlnKTsKKworICAgICAgICAvLyBTcGF3biBtdWx0aXBsZSB0aHJlYWRzIHRo YXQgY29uY3VycmVudGx5IG1vZGlmeSBkZWJ1ZyBsZXZlbAorICAgICAgICBsZXQgaGFuZGxlczog VmVjPF8+ID0gKDAuLjEwKQorICAgICAgICAgICAgLm1hcCh8aXwgeworICAgICAgICAgICAgICAg IGxldCBjZmcgPSBBcmM6OmNsb25lKCZjb25maWcpOworICAgICAgICAgICAgICAgIHRocmVhZDo6 c3Bhd24obW92ZSB8fCB7CisgICAgICAgICAgICAgICAgICAgIGZvciBfIGluIDAuLjEwMCB7Cisg ICAgICAgICAgICAgICAgICAgICAgICBjZmcuc2V0X2RlYnVnX2xldmVsKGkpOworICAgICAgICAg ICAgICAgICAgICAgICAgbGV0IF8gPSBjZmcuZGVidWdfbGV2ZWwoKTsKKyAgICAgICAgICAgICAg ICAgICAgfQorICAgICAgICAgICAgICAgIH0pCisgICAgICAgICAgICB9KQorICAgICAgICAgICAg LmNvbGxlY3QoKTsKKworICAgICAgICAvLyBBbGwgdGhyZWFkcyBzaG91bGQgY29tcGxldGUgd2l0 aG91dCBwYW5pY2tpbmcKKyAgICAgICAgZm9yIGhhbmRsZSBpbiBoYW5kbGVzIHsKKyAgICAgICAg ICAgIGhhbmRsZS5qb2luKCkudW53cmFwKCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBGaW5h bCB2YWx1ZSBzaG91bGQgYmUgb25lIG9mIHRoZSB2YWx1ZXMgc2V0IGJ5IHRocmVhZHMKKyAgICAg ICAgbGV0IGZpbmFsX2xldmVsID0gY29uZmlnX2Nsb25lLmRlYnVnX2xldmVsKCk7CisgICAgICAg IGFzc2VydCEoCisgICAgICAgICAgICBmaW5hbF9sZXZlbCA8IDEwLAorICAgICAgICAgICAgIkRl YnVnIGxldmVsIHNob3VsZCBiZSA8IDEwLCBnb3Qge2ZpbmFsX2xldmVsfSIKKyAgICAgICAgKTsK KyAgICB9CisKKyAgICAjW3Rlc3RdCisgICAgZm4gdGVzdF9jb25jdXJyZW50X3JlYWRzKCkgewor ICAgICAgICBsZXQgY29uZmlnID0gQ29uZmlnOjpuZXcoCisgICAgICAgICAgICAibm9kZTEiLnRv X3N0cmluZygpLAorICAgICAgICAgICAgIjE5Mi4xNjguMS4xIi50b19zdHJpbmcoKSwKKyAgICAg ICAgICAgIDMzLAorICAgICAgICAgICAgdHJ1ZSwKKyAgICAgICAgICAgIGZhbHNlLAorICAgICAg ICAgICAgInBteGNmcyIudG9fc3RyaW5nKCksCisgICAgICAgICk7CisKKyAgICAgICAgLy8gU3Bh d24gbXVsdGlwbGUgdGhyZWFkcyB0aGF0IGNvbmN1cnJlbnRseSByZWFkIGNvbmZpZworICAgICAg ICBsZXQgaGFuZGxlczogVmVjPF8+ID0gKDAuLjIwKQorICAgICAgICAgICAgLm1hcCh8X3wgewor ICAgICAgICAgICAgICAgIGxldCBjZmcgPSBBcmM6OmNsb25lKCZjb25maWcpOworICAgICAgICAg ICAgICAgIHRocmVhZDo6c3Bhd24obW92ZSB8fCB7CisgICAgICAgICAgICAgICAgICAgIGZvciBf IGluIDAuLjEwMDAgeworICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X2VxIShjZmcubm9k ZW5hbWUoKSwgIm5vZGUxIik7CisgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnRfZXEhKGNm Zy5ub2RlX2lwKCksICIxOTIuMTY4LjEuMSIpOworICAgICAgICAgICAgICAgICAgICAgICAgYXNz ZXJ0X2VxIShjZmcud3d3X2RhdGFfZ2lkKCksIDMzKTsKKyAgICAgICAgICAgICAgICAgICAgICAg IGFzc2VydCEoY2ZnLmlzX2RlYnVnKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0 ISghY2ZnLmlzX2xvY2FsX21vZGUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnRf ZXEhKGNmZy5jbHVzdGVyX25hbWUoKSwgInBteGNmcyIpOworICAgICAgICAgICAgICAgICAgICB9 CisgICAgICAgICAgICAgICAgfSkKKyAgICAgICAgICAgIH0pCisgICAgICAgICAgICAuY29sbGVj dCgpOworCisgICAgICAgIGZvciBoYW5kbGUgaW4gaGFuZGxlcyB7CisgICAgICAgICAgICBoYW5k bGUuam9pbigpLnVud3JhcCgpOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gPT09PT0gQ2xv bmUgVGVzdHMgPT09PT0KKworICAgICNbdGVzdF0KKyAgICBmbiB0ZXN0X2NvbmZpZ19jbG9uZSgp IHsKKyAgICAgICAgbGV0IGNvbmZpZzEgPSBDb25maWc6Om5ldygKKyAgICAgICAgICAgICJub2Rl MSIudG9fc3RyaW5nKCksCisgICAgICAgICAgICAiMTkyLjE2OC4xLjEiLnRvX3N0cmluZygpLAor ICAgICAgICAgICAgMzMsCisgICAgICAgICAgICB0cnVlLAorICAgICAgICAgICAgZmFsc2UsCisg ICAgICAgICAgICAicG14Y2ZzIi50b19zdHJpbmcoKSwKKyAgICAgICAgKTsKKworICAgICAgICBj b25maWcxLnNldF9kZWJ1Z19sZXZlbCg1KTsKKworICAgICAgICBsZXQgY29uZmlnMiA9ICgqY29u ZmlnMSkuY2xvbmUoKTsKKworICAgICAgICAvLyBDbG9uZWQgY29uZmlnIHNob3VsZCBoYXZlIHNh bWUgdmFsdWVzCisgICAgICAgIGFzc2VydF9lcSEoY29uZmlnMi5ub2RlbmFtZSgpLCBjb25maWcx Lm5vZGVuYW1lKCkpOworICAgICAgICBhc3NlcnRfZXEhKGNvbmZpZzIubm9kZV9pcCgpLCBjb25m aWcxLm5vZGVfaXAoKSk7CisgICAgICAgIGFzc2VydF9lcSEoY29uZmlnMi53d3dfZGF0YV9naWQo KSwgY29uZmlnMS53d3dfZGF0YV9naWQoKSk7CisgICAgICAgIGFzc2VydF9lcSEoY29uZmlnMi5p c19kZWJ1ZygpLCBjb25maWcxLmlzX2RlYnVnKCkpOworICAgICAgICBhc3NlcnRfZXEhKGNvbmZp ZzIuaXNfbG9jYWxfbW9kZSgpLCBjb25maWcxLmlzX2xvY2FsX21vZGUoKSk7CisgICAgICAgIGFz c2VydF9lcSEoY29uZmlnMi5jbHVzdGVyX25hbWUoKSwgY29uZmlnMS5jbHVzdGVyX25hbWUoKSk7 CisgICAgICAgIGFzc2VydF9lcSEoY29uZmlnMi5kZWJ1Z19sZXZlbCgpLCA1KTsKKworICAgICAg ICAvLyBNb2RpZnlpbmcgb25lIHNob3VsZCBub3QgYWZmZWN0IHRoZSBvdGhlcgorICAgICAgICBj b25maWcyLnNldF9kZWJ1Z19sZXZlbCgxMCk7CisgICAgICAgIGFzc2VydF9lcSEoY29uZmlnMS5k ZWJ1Z19sZXZlbCgpLCA1KTsKKyAgICAgICAgYXNzZXJ0X2VxIShjb25maWcyLmRlYnVnX2xldmVs KCksIDEwKTsKKyAgICB9CisKKyAgICAvLyA9PT09PSBEZWJ1ZyBGb3JtYXR0aW5nIFRlc3RzID09 PT09CisKKyAgICAjW3Rlc3RdCisgICAgZm4gdGVzdF9kZWJ1Z19mb3JtYXQoKSB7CisgICAgICAg IGxldCBjb25maWcgPSBDb25maWc6Om5ldygKKyAgICAgICAgICAgICJub2RlMSIudG9fc3RyaW5n KCksCisgICAgICAgICAgICAiMTkyLjE2OC4xLjEiLnRvX3N0cmluZygpLAorICAgICAgICAgICAg MzMsCisgICAgICAgICAgICB0cnVlLAorICAgICAgICAgICAgZmFsc2UsCisgICAgICAgICAgICAi cG14Y2ZzIi50b19zdHJpbmcoKSwKKyAgICAgICAgKTsKKworICAgICAgICBsZXQgZGVidWdfc3Ry ID0gZm9ybWF0ISgie2NvbmZpZzo/fSIpOworCisgICAgICAgIC8vIENoZWNrIHRoYXQgZGVidWcg b3V0cHV0IGNvbnRhaW5zIGFsbCBmaWVsZHMKKyAgICAgICAgYXNzZXJ0IShkZWJ1Z19zdHIuY29u dGFpbnMoIkNvbmZpZyIpKTsKKyAgICAgICAgYXNzZXJ0IShkZWJ1Z19zdHIuY29udGFpbnMoIm5v ZGVuYW1lIikpOworICAgICAgICBhc3NlcnQhKGRlYnVnX3N0ci5jb250YWlucygibm9kZTEiKSk7 CisgICAgICAgIGFzc2VydCEoZGVidWdfc3RyLmNvbnRhaW5zKCJub2RlX2lwIikpOworICAgICAg ICBhc3NlcnQhKGRlYnVnX3N0ci5jb250YWlucygiMTkyLjE2OC4xLjEiKSk7CisgICAgICAgIGFz c2VydCEoZGVidWdfc3RyLmNvbnRhaW5zKCJ3d3dfZGF0YV9naWQiKSk7CisgICAgICAgIGFzc2Vy dCEoZGVidWdfc3RyLmNvbnRhaW5zKCIzMyIpKTsKKyAgICAgICAgYXNzZXJ0IShkZWJ1Z19zdHIu Y29udGFpbnMoImRlYnVnIikpOworICAgICAgICBhc3NlcnQhKGRlYnVnX3N0ci5jb250YWlucygi dHJ1ZSIpKTsKKyAgICAgICAgYXNzZXJ0IShkZWJ1Z19zdHIuY29udGFpbnMoImxvY2FsX21vZGUi KSk7CisgICAgICAgIGFzc2VydCEoZGVidWdfc3RyLmNvbnRhaW5zKCJmYWxzZSIpKTsKKyAgICAg ICAgYXNzZXJ0IShkZWJ1Z19zdHIuY29udGFpbnMoImNsdXN0ZXJfbmFtZSIpKTsKKyAgICAgICAg YXNzZXJ0IShkZWJ1Z19zdHIuY29udGFpbnMoInBteGNmcyIpKTsKKyAgICAgICAgYXNzZXJ0IShk ZWJ1Z19zdHIuY29udGFpbnMoImRlYnVnX2xldmVsIikpOworICAgIH0KKworICAgIC8vID09PT09 IEVkZ2UgQ2FzZXMgYW5kIEJvdW5kYXJ5IFRlc3RzID09PT09CisKKyAgICAjW3Rlc3RdCisgICAg Zm4gdGVzdF9lbXB0eV9zdHJpbmdzKCkgeworICAgICAgICBsZXQgY29uZmlnID0gQ29uZmlnOjpu ZXcoU3RyaW5nOjpuZXcoKSwgU3RyaW5nOjpuZXcoKSwgMCwgZmFsc2UsIGZhbHNlLCBTdHJpbmc6 Om5ldygpKTsKKworICAgICAgICBhc3NlcnRfZXEhKGNvbmZpZy5ub2RlbmFtZSgpLCAiIik7Cisg ICAgICAgIGFzc2VydF9lcSEoY29uZmlnLm5vZGVfaXAoKSwgIiIpOworICAgICAgICBhc3NlcnRf ZXEhKGNvbmZpZy5jbHVzdGVyX25hbWUoKSwgIiIpOworICAgICAgICBhc3NlcnRfZXEhKGNvbmZp Zy53d3dfZGF0YV9naWQoKSwgMCk7CisgICAgfQorCisgICAgI1t0ZXN0XQorICAgIGZuIHRlc3Rf bG9uZ19zdHJpbmdzKCkgeworICAgICAgICBsZXQgbG9uZ19uYW1lID0gImEiLnJlcGVhdCgxMDAw KTsKKyAgICAgICAgbGV0IGxvbmdfaXAgPSAiMTkyLjE2OC4xLiIudG9fc3RyaW5nKCkgKyAmIjEi LnJlcGVhdCgxMDApOworICAgICAgICBsZXQgbG9uZ19jbHVzdGVyID0gImNsdXN0ZXItIi50b19z dHJpbmcoKSArICYieCIucmVwZWF0KDUwMCk7CisKKyAgICAgICAgbGV0IGNvbmZpZyA9IENvbmZp Zzo6bmV3KAorICAgICAgICAgICAgbG9uZ19uYW1lLmNsb25lKCksCisgICAgICAgICAgICBsb25n X2lwLmNsb25lKCksCisgICAgICAgICAgICB1MzI6Ok1BWCwKKyAgICAgICAgICAgIHRydWUsCisg ICAgICAgICAgICB0cnVlLAorICAgICAgICAgICAgbG9uZ19jbHVzdGVyLmNsb25lKCksCisgICAg ICAgICk7CisKKyAgICAgICAgYXNzZXJ0X2VxIShjb25maWcubm9kZW5hbWUoKSwgbG9uZ19uYW1l KTsKKyAgICAgICAgYXNzZXJ0X2VxIShjb25maWcubm9kZV9pcCgpLCBsb25nX2lwKTsKKyAgICAg ICAgYXNzZXJ0X2VxIShjb25maWcuY2x1c3Rlcl9uYW1lKCksIGxvbmdfY2x1c3Rlcik7CisgICAg ICAgIGFzc2VydF9lcSEoY29uZmlnLnd3d19kYXRhX2dpZCgpLCB1MzI6Ok1BWCk7CisgICAgfQor CisgICAgI1t0ZXN0XQorICAgIGZuIHRlc3Rfc3BlY2lhbF9jaGFyYWN0ZXJzX2luX3N0cmluZ3Mo KSB7CisgICAgICAgIGxldCBjb25maWcgPSBDb25maWc6Om5ldygKKyAgICAgICAgICAgICJub2Rl LTFfdGVzdC5sb2NhbCIudG9fc3RyaW5nKCksCisgICAgICAgICAgICAiMTkyLjE2OC4xLjEwOjgw MDYiLnRvX3N0cmluZygpLAorICAgICAgICAgICAgMzMsCisgICAgICAgICAgICBmYWxzZSwKKyAg ICAgICAgICAgIGZhbHNlLAorICAgICAgICAgICAgIm15LWNsdXN0ZXJfdjIuMCIudG9fc3RyaW5n KCksCisgICAgICAgICk7CisKKyAgICAgICAgYXNzZXJ0X2VxIShjb25maWcubm9kZW5hbWUoKSwg Im5vZGUtMV90ZXN0LmxvY2FsIik7CisgICAgICAgIGFzc2VydF9lcSEoY29uZmlnLm5vZGVfaXAo KSwgIjE5Mi4xNjguMS4xMDo4MDA2Iik7CisgICAgICAgIGFzc2VydF9lcSEoY29uZmlnLmNsdXN0 ZXJfbmFtZSgpLCAibXktY2x1c3Rlcl92Mi4wIik7CisgICAgfQorCisgICAgI1t0ZXN0XQorICAg IGZuIHRlc3RfdW5pY29kZV9pbl9zdHJpbmdzKCkgeworICAgICAgICBsZXQgY29uZmlnID0gQ29u ZmlnOjpuZXcoCisgICAgICAgICAgICAi44OO44O844OJMSIudG9fc3RyaW5nKCksCisgICAgICAg ICAgICAiOjoxIi50b19zdHJpbmcoKSwKKyAgICAgICAgICAgIDMzLAorICAgICAgICAgICAgZmFs c2UsCisgICAgICAgICAgICBmYWxzZSwKKyAgICAgICAgICAgICLpm4bnvqQiLnRvX3N0cmluZygp LAorICAgICAgICApOworCisgICAgICAgIGFzc2VydF9lcSEoY29uZmlnLm5vZGVuYW1lKCksICLj g47jg7zjg4kxIik7CisgICAgICAgIGFzc2VydF9lcSEoY29uZmlnLm5vZGVfaXAoKSwgIjo6MSIp OworICAgICAgICBhc3NlcnRfZXEhKGNvbmZpZy5jbHVzdGVyX25hbWUoKSwgIumbhue+pCIpOwor ICAgIH0KK30KLS0gCjIuNDcuMwoKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpwdmUtZGV2ZWwgbWFpbGluZyBsaXN0CnB2ZS1kZXZlbEBsaXN0cy5wcm94 bW94LmNvbQpodHRwczovL2xpc3RzLnByb3htb3guY29tL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5m by9wdmUtZGV2ZWwK