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 1vkkNQ-001cpo-0Z for pgsql-hackers@arkaria.postgresql.org; Tue, 27 Jan 2026 14:49:09 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vkkNP-00EADn-0t for pgsql-hackers@arkaria.postgresql.org; Tue, 27 Jan 2026 14:49:07 +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.96) (envelope-from ) id 1vkkNO-00EADf-1g for pgsql-hackers@lists.postgresql.org; Tue, 27 Jan 2026 14:49:07 +0000 Received: from mail-ej1-x62b.google.com ([2a00:1450:4864:20::62b]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vkkNH-002Zzf-3B for pgsql-hackers@lists.postgresql.org; Tue, 27 Jan 2026 14:49:05 +0000 Received: by mail-ej1-x62b.google.com with SMTP id a640c23a62f3a-b8850aa5b56so848212766b.2 for ; Tue, 27 Jan 2026 06:49:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jeltef.nl; s=google; t=1769525337; x=1770130137; darn=lists.postgresql.org; h=in-reply-to:references:from:to:subject:cc:message-id:date :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=P9L/R6dJoE1ZQ57+uKrNaSUqbJLiWG5fJOGTDLe3KS0=; b=YtY/Rg59BhaViiRf3rEOabn7qWc7uYWGQS/+V48lDtbwqTLC//I7X7Rpz4/yTNgzy+ PN5ve/yNK+O5RcHJHj6nIVp/L9KU85iyrMdr+he1nELmgq/g6k6/gIZdpOAN9wjCcSpW EzlEeaABkpD0T6caWGG4w4E8dFaqZONZe5vUqCABDAQOXe9B6HoU0VnQmpfusKVb5Ec1 tHKTqUUBMmcjEX99KixSqBfKHHibHnyHwTiVkEveqaWy6ngiGIRVBqH2ORrMimDuw/3A oQ7MvTi9HDJ2+GXU/+xrdcXImxe60iaJyhgyQhrnBaAlxpCBlswDFSz6CroPwcsEz+7W b78Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1769525337; x=1770130137; h=in-reply-to:references:from:to:subject:cc:message-id:date :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=P9L/R6dJoE1ZQ57+uKrNaSUqbJLiWG5fJOGTDLe3KS0=; b=CcIYM6Kme3o1Ki2InvUMlFK17vE39VjDispdKt+N1BJcSZ8gW0jBtBUVm35pCz7Arx 3EIhUIF19BTZM3iYlXA4knZ/t6Cv0ES71Il2NNMcSLVVzV601GE0z94+YN7l6/NkO41G Y059ZdTgm4MmGoZQmj5qfxzd1WZ7jOTgLO0pff+u2g5Sf5PfsLq539CYpwDQHL00Hxdu TcKojAlnHASf1MS+Ej1Kuh3ouQivRXBcG1QJa+GkVMdHAryPA0/vnbEXgUL8hgYXJIqn 8pGDy3tIxy4CIiC70XiJ7n8W0bCfIbXfOfqR6BwZQypVEWQL5aHLfzUxm18xkCg/S+fN mATw== X-Gm-Message-State: AOJu0YyVnSxPk23rbFLPLk7nWA4Us1wlei3HRfBZ6heO0SvJ3IydSzgb nugtaq/LD+aIflHvb5olOOPP3rFgiXTsToY7DdmSPckZDc4lgUGfsTD5o1KAuwnmFGc= X-Gm-Gg: AZuq6aL8vEmzVejROYUnXHtyR/STGuVONclyOu1nfuP/GbaAZXtsiAgUoMdiHqWwEQv NllnQ7AEZ3XXK7N4+rkhmMe5FjBewXJ2Z2lCZh1CGDe1/o404t931W+vjes65UKaCGcuXK+kt17 KgJxe9LUJfLKMUa95qHn79t8+D8TEX/9qu3nbyF3I5sEvZajtqiQn2PEOkX/SXiqhKjPvEGC7gX W+gC9jeBNIB8YsGvlfDxbxjOXutvIAupmULSdCBgDDxtwckorBX4wVKOdMl+hgHV6oUD6/vex1a 4uLzfiTZRZ37jOeuH1rPLIpLT+DHi6bq+3VCzv9Q/9kW1ehAxD3BXIdf2u7npd2oEetR5mhWn+k oqhpXHDgFN3NRTuL0rkXyJOdRPVuU0xIAgdBsGo3OEnGp9RTHsFpbTYl3WScfmf0BzYcXuVvNyv QcNfp7ixF8zDedY1rvcmPEFBqbHVB2bF/HjV9nro49swQ7LEIr X-Received: by 2002:a17:907:6eaa:b0:b88:3faf:b73d with SMTP id a640c23a62f3a-b8dab28d59emr134060766b.1.1769525336948; Tue, 27 Jan 2026 06:48:56 -0800 (PST) Received: from localhost (037153217001.static.ipv4.heldenvannu.net. [37.153.217.1]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b885b445af5sm796068766b.31.2026.01.27.06.48.55 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 27 Jan 2026 06:48:55 -0800 (PST) Content-Type: multipart/mixed; boundary=b8332a0d430b06d6a99b2841ff255f933a5baeb0d9aa6c393a8e4e253e30 Mime-Version: 1.0 Date: Tue, 27 Jan 2026 15:48:55 +0100 Message-Id: Cc: "PostgreSQL Hackers" , "Nazir Bilal Yavuz" Subject: Re: meson: Make test output much more useful on failure (both in CI and locally) To: "Andres Freund" From: "Jelte Fennema-Nio" X-Mailer: aerc 0.20.1-31-gf6db7c329ce0 References: In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --b8332a0d430b06d6a99b2841ff255f933a5baeb0d9aa6c393a8e4e253e30 Content-Type: multipart/alternative; boundary=55d66a27a7de614d6f1f2266e2df01d774947145a1539113c94d1f626416 --55d66a27a7de614d6f1f2266e2df01d774947145a1539113c94d1f626416 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Content-Type: text/plain; charset=UTF-8; format=Flowed On Mon Jan 26, 2026 at 5:42 PM CET, Andres Freund wrote: > I agree that what we currently do is pretty unhelpful. Attached is v2, which I think fixes all the issues that you mentioned. --55d66a27a7de614d6f1f2266e2df01d774947145a1539113c94d1f626416-- --b8332a0d430b06d6a99b2841ff255f933a5baeb0d9aa6c393a8e4e253e30 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=nocfbot.v2-0005-Fail-some-tests.patch Content-Type: text/x-patch; charset=utf-8; name=nocfbot.v2-0005-Fail-some-tests.patch RnJvbSAyN2QyYWI2NjhjMjAxNWYyNWQ2M2E0MzJjMWViZDA0ZjJlODVhZmZmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBNb24sIDI2IEphbiAyMDI2IDAwOjE2OjMwICswMTAwClN1YmplY3Q6IFtQQVRDSCB2 MiA1LzVdIEZhaWwgc29tZSB0ZXN0cwoKLS0tCiBzcmMvdGVzdC9hdXRoZW50aWNhdGlvbi90LzAw MV9wYXNzd29yZC5wbCAgICAgfCAgIDIgKy0KIC4uLi9tb2R1bGVzL2xpYnBxX3BpcGVsaW5lL2xp YnBxX3BpcGVsaW5lLmMgICB8ICAgMiArLQogLi4uL2V4cGVjdGVkL3Rlc3RfY3BsdXNwbHVzZXh0 Lm91dCAgICAgICAgICAgIHwgICAyICstCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL29pZDgu b3V0ICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2Ryb3BfaWZfZXhp c3RzLnNxbCAgICAgICB8ICAgMiAtCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9zZWxlY3RfcGFyYWxs ZWwuc3FsICAgICAgfCA1MzUgLS0tLS0tLS0tLS0tLS0tLS0tCiBzcmMvdGVzdC9yZWdyZXNzL3Nx bC93cml0ZV9wYXJhbGxlbC5zcWwgICAgICAgfCAgMjIgLQogNyBmaWxlcyBjaGFuZ2VkLCA0IGlu c2VydGlvbnMoKyksIDU2MyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9hdXRo ZW50aWNhdGlvbi90LzAwMV9wYXNzd29yZC5wbCBiL3NyYy90ZXN0L2F1dGhlbnRpY2F0aW9uL3Qv MDAxX3Bhc3N3b3JkLnBsCmluZGV4IGY0ZDY1YmE3YmFlLi4yN2IxMTMyZWQ0NSAxMDA2NDQKLS0t IGEvc3JjL3Rlc3QvYXV0aGVudGljYXRpb24vdC8wMDFfcGFzc3dvcmQucGwKKysrIGIvc3JjL3Rl c3QvYXV0aGVudGljYXRpb24vdC8wMDFfcGFzc3dvcmQucGwKQEAgLTE0NCw3ICsxNDQsNyBAQCBp cyggJG5vZGUtPnBzcWwoCiAkbm9kZS0+c2FmZV9wc3FsKAogCSdwb3N0Z3JlcycsCiAJIkNSRUFU RSBUQUJMRSBzeXN1c2VyX2RhdGEgKG4pIEFTIFNFTEVDVCBOVUxMIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDEsIDEwKTsKLQkgR1JBTlQgQUxMIE9OIHN5c3VzZXJfZGF0YSBUTyBzY3JhbV9yb2xlOyIp OworCSBHUkFOVCBBTEwgT04gc3lzdXNlcl9kYXRhIFRPIHNjcmFtX3JvbGUgJyIpOwogJEVOVnsi UEdQQVNTV09SRCJ9ID0gJ3Bhc3MnOwogCiAjIENyZWF0ZSBhIHJvbGUgdGhhdCBjb250YWlucyBh IGNvbW1hIHRvIHN0cmVzcyB0aGUgcGFyc2luZy4KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVs ZXMvbGlicHFfcGlwZWxpbmUvbGlicHFfcGlwZWxpbmUuYyBiL3NyYy90ZXN0L21vZHVsZXMvbGli cHFfcGlwZWxpbmUvbGlicHFfcGlwZWxpbmUuYwppbmRleCBjZTFhOTk5NWY0Ni4uYzk0ZWU0NTM0 NmYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvbGlicHFfcGlwZWxpbmUvbGlicHFfcGlw ZWxpbmUuYworKysgYi9zcmMvdGVzdC9tb2R1bGVzL2xpYnBxX3BpcGVsaW5lL2xpYnBxX3BpcGVs aW5lLmMKQEAgLTE5NCw3ICsxOTQsNyBAQCB3YWl0X2Zvcl9jb25uZWN0aW9uX3N0YXRlKGludCBs aW5lLCBQR2Nvbm4gKm1vbml0b3JDb25uLCBpbnQgcHJvY3BpZCwKIAogCQlpZiAoUFFyZXN1bHRT dGF0dXMocmVzKSAhPSBQR1JFU19UVVBMRVNfT0spCiAJCQlwZ19mYXRhbF9pbXBsKGxpbmUsICJj b3VsZCBub3QgcXVlcnkgcGdfc3RhdF9hY3Rpdml0eTogJXMiLCBQUWVycm9yTWVzc2FnZShtb25p dG9yQ29ubikpOwotCQlpZiAoUFFudHVwbGVzKHJlcykgIT0gMSkKKwkJaWYgKFBRbnR1cGxlcyhy ZXMpID09IDEpCiAJCQlwZ19mYXRhbF9pbXBsKGxpbmUsICJ1bmV4cGVjdGVkIG51bWJlciBvZiBy b3dzIHJlY2VpdmVkOiAlZCIsIFBRbnR1cGxlcyhyZXMpKTsKIAkJaWYgKFBRbmZpZWxkcyhyZXMp ICE9IDEpCiAJCQlwZ19mYXRhbF9pbXBsKGxpbmUsICJ1bmV4cGVjdGVkIG51bWJlciBvZiBjb2x1 bW5zIHJlY2VpdmVkOiAlZCIsIFBRbmZpZWxkcyhyZXMpKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L21vZHVsZXMvdGVzdF9jcGx1c3BsdXNleHQvZXhwZWN0ZWQvdGVzdF9jcGx1c3BsdXNleHQub3V0 IGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2NwbHVzcGx1c2V4dC9leHBlY3RlZC90ZXN0X2NwbHVz cGx1c2V4dC5vdXQKaW5kZXggYWIwYjA0YjVjNWUuLjI0M2ZlMGMyNjUyIDEwMDY0NAotLS0gYS9z cmMvdGVzdC9tb2R1bGVzL3Rlc3RfY3BsdXNwbHVzZXh0L2V4cGVjdGVkL3Rlc3RfY3BsdXNwbHVz ZXh0Lm91dAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfY3BsdXNwbHVzZXh0L2V4cGVjdGVk L3Rlc3RfY3BsdXNwbHVzZXh0Lm91dApAQCAtMiw2ICsyLDYgQEAgQ1JFQVRFIEVYVEVOU0lPTiB0 ZXN0X2NwbHVzcGx1c2V4dDsKIFNFTEVDVCB0ZXN0X2NwbHVzcGx1c19hZGQoMSwgMik7CiAgdGVz dF9jcGx1c3BsdXNfYWRkIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAgICAgICAgICAgICAg IDMKKyAgICAgICAgICAgICAgICAgIDkKICgxIHJvdykKIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9vaWQ4Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvb2lk OC5vdXQKaW5kZXggMmUxMTRmMWNlNzAuLjM3MTFhMTE2YWFlIDEwMDY0NAotLS0gYS9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL29pZDgub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvb2lkOC5vdXQKQEAgLTYsNyArNiw3IEBAIElOU0VSVCBJTlRPIE9JRDhfVEJMKGYxKSBWQUxV RVMgKCcxMjM0Jyk7CiBJTlNFUlQgSU5UTyBPSUQ4X1RCTChmMSkgVkFMVUVTICgnMTIzNScpOwog SU5TRVJUIElOVE8gT0lEOF9UQkwoZjEpIFZBTFVFUyAoJzk4NycpOwogSU5TRVJUIElOVE8gT0lE OF9UQkwoZjEpIFZBTFVFUyAoJy0xMDQwJyk7Ci1JTlNFUlQgSU5UTyBPSUQ4X1RCTChmMSkgVkFM VUVTICgnOTk5OTk5OTknKTsKK0lOU0VSVCBJTlRPIE9JRDhfVEJMKGYxKSBWQUxVRVMgKCc4ODg4 ODg4OCcpOwogSU5TRVJUIElOVE8gT0lEOF9UQkwoZjEpIFZBTFVFUyAoJzUgICAgICcpOwogSU5T RVJUIElOVE8gT0lEOF9UQkwoZjEpIFZBTFVFUyAoJyAgIDEwICAnKTsKIElOU0VSVCBJTlRPIE9J RDhfVEJMKGYxKSBWQUxVRVMgKCcxMjM0NTY3ODkwMTIzNDU2NzgnKTsKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3JlZ3Jlc3Mvc3FsL2Ryb3BfaWZfZXhpc3RzLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL2Ryb3BfaWZfZXhpc3RzLnNxbAppbmRleCBhYzYxNjhiOTFmOC4uZGI0Yzk1ZjhlZDMgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2Ryb3BfaWZfZXhpc3RzLnNxbAorKysgYi9z cmMvdGVzdC9yZWdyZXNzL3NxbC9kcm9wX2lmX2V4aXN0cy5zcWwKQEAgLTI4Niw4ICsyODYsNiBA QCBEUk9QIEZVTkNUSU9OIHRlc3RfYW1iaWd1b3VzX2Z1bmNuYW1lKHRleHQpOwogLS0gTGlrZXdp c2UgZm9yIHByb2NlZHVyZXMuCiBDUkVBVEUgUFJPQ0VEVVJFIHRlc3RfYW1iaWd1b3VzX3Byb2Nu YW1lKGludCkgYXMgJCQgYmVnaW4gZW5kOyAkJCBsYW5ndWFnZSBwbHBnc3FsOwogQ1JFQVRFIFBS T0NFRFVSRSB0ZXN0X2FtYmlndW91c19wcm9jbmFtZSh0ZXh0KSBhcyAkJCBiZWdpbiBlbmQ7ICQk IGxhbmd1YWdlIHBscGdzcWw7Ci1EUk9QIFBST0NFRFVSRSB0ZXN0X2FtYmlndW91c19wcm9jbmFt ZTsKLURST1AgUFJPQ0VEVVJFIElGIEVYSVNUUyB0ZXN0X2FtYmlndW91c19wcm9jbmFtZTsKIAog LS0gQ2hlY2sgd2UgZ2V0IGEgc2ltaWxhciBlcnJvciBpZiB3ZSB1c2UgUk9VVElORSBpbnN0ZWFk IG9mIFBST0NFRFVSRS4KIERST1AgUk9VVElORSBJRiBFWElTVFMgdGVzdF9hbWJpZ3VvdXNfcHJv Y25hbWU7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zZWxlY3RfcGFyYWxsZWwu c3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc2VsZWN0X3BhcmFsbGVsLnNxbAppbmRleCA3MWE3 NWJjODZlYS4uNGMzYWRiOGJkZDggMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Nl bGVjdF9wYXJhbGxlbC5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc2VsZWN0X3BhcmFs bGVsLnNxbApAQCAtNTMsNTM4ICs1MywzIEBAIGV4cGxhaW4gKGNvc3RzIG9mZikKICAgc2VsZWN0 IHJvdW5kKGF2ZyhhYSkpLCBzdW0oYWEpIGZyb20gYV9zdGFyOwogc2VsZWN0IHJvdW5kKGF2Zyhh YSkpLCBzdW0oYWEpIGZyb20gYV9zdGFyIGE0OwogcmVzZXQgZW5hYmxlX3BhcmFsbGVsX2FwcGVu ZDsKLQotLS0gUGFyYWxsZWwgQXBwZW5kIHRoYXQgcnVucyBzZXJpYWxseQotY3JlYXRlIGZ1bmN0 aW9uIHNwX3Rlc3RfZnVuYygpIHJldHVybnMgc2V0b2YgdGV4dCBhcwotJCQgc2VsZWN0ICdmb28n Ojp2YXJjaGFyIHVuaW9uIGFsbCBzZWxlY3QgJ2Jhcic6OnZhcmNoYXIgJCQKLWxhbmd1YWdlIHNx bCBzdGFibGU7Ci1zZWxlY3Qgc3BfdGVzdF9mdW5jKCkgb3JkZXIgYnkgMTsKLQotLS0gUGFyYWxs ZWwgQXBwZW5kIGlzIG5vdCB0byBiZSB1c2VkIHdoZW4gdGhlIHN1YnBhdGggZGVwZW5kcyBvbiB0 aGUgb3V0ZXIgcGFyYW0KLWNyZWF0ZSB0YWJsZSBwYXJ0X3BhX3Rlc3QoYSBpbnQsIGIgaW50KSBw YXJ0aXRpb24gYnkgcmFuZ2UoYSk7Ci1jcmVhdGUgdGFibGUgcGFydF9wYV90ZXN0X3AxIHBhcnRp dGlvbiBvZiBwYXJ0X3BhX3Rlc3QgZm9yIHZhbHVlcyBmcm9tIChtaW52YWx1ZSkgdG8gKDApOwot Y3JlYXRlIHRhYmxlIHBhcnRfcGFfdGVzdF9wMiBwYXJ0aXRpb24gb2YgcGFydF9wYV90ZXN0IGZv ciB2YWx1ZXMgZnJvbSAoMCkgdG8gKG1heHZhbHVlKTsKLWV4cGxhaW4gKGNvc3RzIG9mZikKLQlz ZWxlY3QgKHNlbGVjdCBtYXgoKHNlbGVjdCBwYTEuYiBmcm9tIHBhcnRfcGFfdGVzdCBwYTEgd2hl cmUgcGExLmEgPSBwYTIuYSkpKQotCWZyb20gcGFydF9wYV90ZXN0IHBhMjsKLWRyb3AgdGFibGUg cGFydF9wYV90ZXN0OwotCi0tLSB0ZXN0IHdpdGggbGVhZGVyIHBhcnRpY2lwYXRpb24gZGlzYWJs ZWQKLXNldCBwYXJhbGxlbF9sZWFkZXJfcGFydGljaXBhdGlvbiA9IG9mZjsKLWV4cGxhaW4gKGNv c3RzIG9mZikKLSAgc2VsZWN0IGNvdW50KCopIGZyb20gdGVuazEgd2hlcmUgc3RyaW5ndTEgPSAn R1JBQUFBJzsKLXNlbGVjdCBjb3VudCgqKSBmcm9tIHRlbmsxIHdoZXJlIHN0cmluZ3UxID0gJ0dS QUFBQSc7Ci0KLS0tIHRlc3Qgd2l0aCBsZWFkZXIgcGFydGljaXBhdGlvbiBkaXNhYmxlZCwgYnV0 IG5vIHdvcmtlcnMgYXZhaWxhYmxlIChzbwotLS0gdGhlIGxlYWRlciB3aWxsIGhhdmUgdG8gcnVu IHRoZSBwbGFuIGRlc3BpdGUgdGhlIHNldHRpbmcpCi1zZXQgbWF4X3BhcmFsbGVsX3dvcmtlcnMg PSAwOwotZXhwbGFpbiAoY29zdHMgb2ZmKQotICBzZWxlY3QgY291bnQoKikgZnJvbSB0ZW5rMSB3 aGVyZSBzdHJpbmd1MSA9ICdHUkFBQUEnOwotc2VsZWN0IGNvdW50KCopIGZyb20gdGVuazEgd2hl cmUgc3RyaW5ndTEgPSAnR1JBQUFBJzsKLQotcmVzZXQgbWF4X3BhcmFsbGVsX3dvcmtlcnM7Ci1y ZXNldCBwYXJhbGxlbF9sZWFkZXJfcGFydGljaXBhdGlvbjsKLQotLS0gdGVzdCB0aGF0IHBhcmFs bGVsX3Jlc3RyaWN0ZWQgZnVuY3Rpb24gZG9lc24ndCBydW4gaW4gd29ya2VyCi1hbHRlciB0YWJs ZSB0ZW5rMSBzZXQgKHBhcmFsbGVsX3dvcmtlcnMgPSA0KTsKLWV4cGxhaW4gKHZlcmJvc2UsIGNv c3RzIG9mZikKLXNlbGVjdCBzcF9wYXJhbGxlbF9yZXN0cmljdGVkKHVuaXF1ZTEpIGZyb20gdGVu azEKLSAgd2hlcmUgc3RyaW5ndTEgPSAnR1JBQUFBJyBvcmRlciBieSAxOwotCi0tLSB0ZXN0IHBh cmFsbGVsIHBsYW4gd2hlbiBncm91cCBieSBleHByZXNzaW9uIGlzIGluIHRhcmdldCBsaXN0Lgot ZXhwbGFpbiAoY29zdHMgb2ZmKQotCXNlbGVjdCBsZW5ndGgoc3RyaW5ndTEpIGZyb20gdGVuazEg Z3JvdXAgYnkgbGVuZ3RoKHN0cmluZ3UxKTsKLXNlbGVjdCBsZW5ndGgoc3RyaW5ndTEpIGZyb20g dGVuazEgZ3JvdXAgYnkgbGVuZ3RoKHN0cmluZ3UxKTsKLQotZXhwbGFpbiAoY29zdHMgb2ZmKQot CXNlbGVjdCBzdHJpbmd1MSwgY291bnQoKikgZnJvbSB0ZW5rMSBncm91cCBieSBzdHJpbmd1MSBv cmRlciBieSBzdHJpbmd1MTsKLQotLS0gdGVzdCB0aGF0IHBhcmFsbGVsIHBsYW4gZm9yIGFnZ3Jl Z2F0ZXMgaXMgbm90IHNlbGVjdGVkIHdoZW4KLS0tIHRhcmdldCBsaXN0IGNvbnRhaW5zIHBhcmFs bGVsIHJlc3RyaWN0ZWQgY2xhdXNlLgotZXhwbGFpbiAoY29zdHMgb2ZmKQotCXNlbGVjdCAgc3Vt KHNwX3BhcmFsbGVsX3Jlc3RyaWN0ZWQodW5pcXVlMSkpIGZyb20gdGVuazEKLQlncm91cCBieShz cF9wYXJhbGxlbF9yZXN0cmljdGVkKHVuaXF1ZTEpKTsKLQotLS0gdGVzdCBwcmVwYXJlZCBzdGF0 ZW1lbnQKLXByZXBhcmUgdGVuazFfY291bnQoaW50ZWdlcikgQXMgc2VsZWN0ICBjb3VudCgodW5p cXVlMSkpIGZyb20gdGVuazEgd2hlcmUgaHVuZHJlZCA+ICQxOwotZXhwbGFpbiAoY29zdHMgb2Zm KSBleGVjdXRlIHRlbmsxX2NvdW50KDEpOwotZXhlY3V0ZSB0ZW5rMV9jb3VudCgxKTsKLWRlYWxs b2NhdGUgdGVuazFfY291bnQ7Ci0KLS0tIHRlc3QgcGFyYWxsZWwgcGxhbnMgZm9yIHF1ZXJpZXMg Y29udGFpbmluZyB1bi1jb3JyZWxhdGVkIHN1YnBsYW5zLgotYWx0ZXIgdGFibGUgdGVuazIgc2V0 IChwYXJhbGxlbF93b3JrZXJzID0gMCk7Ci1leHBsYWluIChjb3N0cyBvZmYpCi0Jc2VsZWN0IGNv dW50KCopIGZyb20gdGVuazEgd2hlcmUgKHR3bywgZm91cikgbm90IGluCi0JKHNlbGVjdCBodW5k cmVkLCB0aG91c2FuZCBmcm9tIHRlbmsyIHdoZXJlIHRob3VzYW5kID4gMTAwKTsKLXNlbGVjdCBj b3VudCgqKSBmcm9tIHRlbmsxIHdoZXJlICh0d28sIGZvdXIpIG5vdCBpbgotCShzZWxlY3QgaHVu ZHJlZCwgdGhvdXNhbmQgZnJvbSB0ZW5rMiB3aGVyZSB0aG91c2FuZCA+IDEwMCk7Ci0tLSB0aGlz IGlzIG5vdCBwYXJhbGxlbC1zYWZlIGR1ZSB0byB1c2Ugb2YgcmFuZG9tKCkgd2l0aGluIFN1Ykxp bmsncyB0ZXN0ZXhwcjoKLWV4cGxhaW4gKGNvc3RzIG9mZikKLQlzZWxlY3QgKiBmcm9tIHRlbmsx IHdoZXJlICh1bmlxdWUxICsgcmFuZG9tKCkpOjppbnRlZ2VyIG5vdCBpbgotCShzZWxlY3QgdGVu IGZyb20gdGVuazIpOwotYWx0ZXIgdGFibGUgdGVuazIgcmVzZXQgKHBhcmFsbGVsX3dvcmtlcnMp OwotCi0tLSB0ZXN0IHBhcmFsbGVsIHBsYW4gZm9yIGEgcXVlcnkgY29udGFpbmluZyBpbml0cGxh bi4KLXNldCBlbmFibGVfaW5kZXhzY2FuID0gb2ZmOwotc2V0IGVuYWJsZV9pbmRleG9ubHlzY2Fu ID0gb2ZmOwotc2V0IGVuYWJsZV9iaXRtYXBzY2FuID0gb2ZmOwotYWx0ZXIgdGFibGUgdGVuazIg c2V0IChwYXJhbGxlbF93b3JrZXJzID0gMik7Ci0KLWV4cGxhaW4gKGNvc3RzIG9mZikKLQlzZWxl Y3QgY291bnQoKikgZnJvbSB0ZW5rMQotICAgICAgICB3aGVyZSB0ZW5rMS51bmlxdWUxID0gKFNl bGVjdCBtYXgodGVuazIudW5pcXVlMSkgZnJvbSB0ZW5rMik7Ci1zZWxlY3QgY291bnQoKikgZnJv bSB0ZW5rMQotICAgIHdoZXJlIHRlbmsxLnVuaXF1ZTEgPSAoU2VsZWN0IG1heCh0ZW5rMi51bmlx dWUxKSBmcm9tIHRlbmsyKTsKLQotcmVzZXQgZW5hYmxlX2luZGV4c2NhbjsKLXJlc2V0IGVuYWJs ZV9pbmRleG9ubHlzY2FuOwotcmVzZXQgZW5hYmxlX2JpdG1hcHNjYW47Ci1hbHRlciB0YWJsZSB0 ZW5rMiByZXNldCAocGFyYWxsZWxfd29ya2Vycyk7Ci0KLS0tIHRlc3QgcGFyYWxsZWwgaW5kZXgg c2NhbnMuCi1zZXQgZW5hYmxlX3NlcXNjYW4gdG8gb2ZmOwotc2V0IGVuYWJsZV9iaXRtYXBzY2Fu IHRvIG9mZjsKLXNldCByYW5kb21fcGFnZV9jb3N0ID0gMjsKLQotZXhwbGFpbiAoY29zdHMgb2Zm KQotCXNlbGVjdCAgY291bnQoKHVuaXF1ZTEpKSBmcm9tIHRlbmsxIHdoZXJlIGh1bmRyZWQgPiAx Owotc2VsZWN0ICBjb3VudCgodW5pcXVlMSkpIGZyb20gdGVuazEgd2hlcmUgaHVuZHJlZCA+IDE7 Ci0KLS0tIFBhcmFsbGVsIFNjYWxhckFycmF5T3AgaW5kZXggc2NhbgotZXhwbGFpbiAoY29zdHMg b2ZmKQotICBzZWxlY3QgY291bnQoKHVuaXF1ZTEpKSBmcm9tIHRlbmsxCi0gIHdoZXJlIGh1bmRy ZWQgPSBhbnkgKChzZWxlY3QgYXJyYXlfYWdnKGkpIGZyb20gZ2VuZXJhdGVfc2VyaWVzKDEsIDEw MCwgMTUpIGkpOjppbnRbXSk7Ci1zZWxlY3QgY291bnQoKHVuaXF1ZTEpKSBmcm9tIHRlbmsxCi13 aGVyZSBodW5kcmVkID0gYW55ICgoc2VsZWN0IGFycmF5X2FnZyhpKSBmcm9tIGdlbmVyYXRlX3Nl cmllcygxLCAxMDAsIDE1KSBpKTo6aW50W10pOwotCi0tLSB0ZXN0IHBhcmFsbGVsIGluZGV4LW9u bHkgc2NhbnMuCi1leHBsYWluIChjb3N0cyBvZmYpCi0Jc2VsZWN0ICBjb3VudCgqKSBmcm9tIHRl bmsxIHdoZXJlIHRob3VzYW5kID4gOTU7Ci1zZWxlY3QgIGNvdW50KCopIGZyb20gdGVuazEgd2hl cmUgdGhvdXNhbmQgPiA5NTsKLQotLS0gdGVzdCByZXNjYW4gY2FzZXMgdG9vCi1zZXQgZW5hYmxl X21hdGVyaWFsID0gZmFsc2U7Ci0KLWV4cGxhaW4gKGNvc3RzIG9mZikKLXNlbGVjdCAqIGZyb20K LSAgKHNlbGVjdCBjb3VudCh1bmlxdWUxKSBmcm9tIHRlbmsxIHdoZXJlIGh1bmRyZWQgPiAxMCkg c3MKLSAgcmlnaHQgam9pbiAodmFsdWVzICgxKSwoMiksKDMpKSB2KHgpIG9uIHRydWU7Ci1zZWxl Y3QgKiBmcm9tCi0gIChzZWxlY3QgY291bnQodW5pcXVlMSkgZnJvbSB0ZW5rMSB3aGVyZSBodW5k cmVkID4gMTApIHNzCi0gIHJpZ2h0IGpvaW4gKHZhbHVlcyAoMSksKDIpLCgzKSkgdih4KSBvbiB0 cnVlOwotCi1leHBsYWluIChjb3N0cyBvZmYpCi1zZWxlY3QgKiBmcm9tCi0gIChzZWxlY3QgY291 bnQoKikgZnJvbSB0ZW5rMSB3aGVyZSB0aG91c2FuZCA+IDk5KSBzcwotICByaWdodCBqb2luICh2 YWx1ZXMgKDEpLCgyKSwoMykpIHYoeCkgb24gdHJ1ZTsKLXNlbGVjdCAqIGZyb20KLSAgKHNlbGVj dCBjb3VudCgqKSBmcm9tIHRlbmsxIHdoZXJlIHRob3VzYW5kID4gOTkpIHNzCi0gIHJpZ2h0IGpv aW4gKHZhbHVlcyAoMSksKDIpLCgzKSkgdih4KSBvbiB0cnVlOwotCi0tLSB0ZXN0IHJlc2NhbnMg Zm9yIGEgTGltaXQgbm9kZSB3aXRoIGEgcGFyYWxsZWwgbm9kZSBiZW5lYXRoIGl0LgotcmVzZXQg ZW5hYmxlX3NlcXNjYW47Ci1zZXQgZW5hYmxlX2luZGV4b25seXNjYW4gdG8gb2ZmOwotc2V0IGVu YWJsZV9pbmRleHNjYW4gdG8gb2ZmOwotYWx0ZXIgdGFibGUgdGVuazEgc2V0IChwYXJhbGxlbF93 b3JrZXJzID0gMCk7Ci1hbHRlciB0YWJsZSB0ZW5rMiBzZXQgKHBhcmFsbGVsX3dvcmtlcnMgPSAx KTsKLWV4cGxhaW4gKGNvc3RzIG9mZikKLXNlbGVjdCBjb3VudCgqKSBmcm9tIHRlbmsxCi0gIGxl ZnQgam9pbiAoc2VsZWN0IHRlbmsyLnVuaXF1ZTEgZnJvbSB0ZW5rMiBvcmRlciBieSAxIGxpbWl0 IDEwMDApIHNzCi0gIG9uIHRlbmsxLnVuaXF1ZTEgPCBzcy51bmlxdWUxICsgMQotICB3aGVyZSB0 ZW5rMS51bmlxdWUxIDwgMjsKLXNlbGVjdCBjb3VudCgqKSBmcm9tIHRlbmsxCi0gIGxlZnQgam9p biAoc2VsZWN0IHRlbmsyLnVuaXF1ZTEgZnJvbSB0ZW5rMiBvcmRlciBieSAxIGxpbWl0IDEwMDAp IHNzCi0gIG9uIHRlbmsxLnVuaXF1ZTEgPCBzcy51bmlxdWUxICsgMQotICB3aGVyZSB0ZW5rMS51 bmlxdWUxIDwgMjsKLS0tcmVzZXQgdGhlIHZhbHVlIG9mIHdvcmtlcnMgZm9yIGVhY2ggdGFibGUg YXMgaXQgd2FzIGJlZm9yZSB0aGlzIHRlc3QuCi1hbHRlciB0YWJsZSB0ZW5rMSBzZXQgKHBhcmFs bGVsX3dvcmtlcnMgPSA0KTsKLWFsdGVyIHRhYmxlIHRlbmsyIHJlc2V0IChwYXJhbGxlbF93b3Jr ZXJzKTsKLQotcmVzZXQgZW5hYmxlX21hdGVyaWFsOwotcmVzZXQgZW5hYmxlX2JpdG1hcHNjYW47 Ci1yZXNldCBlbmFibGVfaW5kZXhvbmx5c2NhbjsKLXJlc2V0IGVuYWJsZV9pbmRleHNjYW47Ci0K LS0tIHRlc3QgcGFyYWxsZWwgYml0bWFwIGhlYXAgc2Nhbi4KLXNldCBlbmFibGVfc2Vxc2NhbiB0 byBvZmY7Ci1zZXQgZW5hYmxlX2luZGV4c2NhbiB0byBvZmY7Ci1zZXQgZW5hYmxlX2hhc2hqb2lu IHRvIG9mZjsKLXNldCBlbmFibGVfbWVyZ2Vqb2luIHRvIG9mZjsKLXNldCBlbmFibGVfbWF0ZXJp YWwgdG8gb2ZmOwotLS0gdGVzdCBwcmVmZXRjaGluZywgaWYgdGhlIHBsYXRmb3JtIGFsbG93cyBp dAotRE8gJCQKLUJFR0lOCi0gU0VUIGVmZmVjdGl2ZV9pb19jb25jdXJyZW5jeSA9IDUwOwotRVhD RVBUSU9OIFdIRU4gaW52YWxpZF9wYXJhbWV0ZXJfdmFsdWUgVEhFTgotRU5EICQkOwotc2V0IHdv cmtfbWVtPSc2NGtCJzsgIC0tc2V0IHNtYWxsIHdvcmsgbWVtIHRvIGZvcmNlIGxvc3N5IHBhZ2Vz Ci1leHBsYWluIChjb3N0cyBvZmYpCi0Jc2VsZWN0IGNvdW50KCopIGZyb20gdGVuazEsIHRlbmsy IHdoZXJlIHRlbmsxLmh1bmRyZWQgPiAxIGFuZCB0ZW5rMi50aG91c2FuZD0wOwotc2VsZWN0IGNv dW50KCopIGZyb20gdGVuazEsIHRlbmsyIHdoZXJlIHRlbmsxLmh1bmRyZWQgPiAxIGFuZCB0ZW5r Mi50aG91c2FuZD0wOwotCi1jcmVhdGUgdGFibGUgYm1zY2FudGVzdCAoYSBpbnQsIHQgdGV4dCk7 Ci1pbnNlcnQgaW50byBibXNjYW50ZXN0IHNlbGVjdCByLCAnZm9vb29vb29vb29vb29vb29vb29v b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vbycgRlJPTSBnZW5lcmF0 ZV9zZXJpZXMoMSwxMDAwMDApIHI7Ci1jcmVhdGUgaW5kZXggaV9ibXRlc3QgT04gYm1zY2FudGVz dChhKTsKLXNlbGVjdCBjb3VudCgqKSBmcm9tIGJtc2NhbnRlc3Qgd2hlcmUgYT4xOwotCi0tLSB0 ZXN0IGFjY3VtdWxhdGlvbiBvZiBzdGF0cyBmb3IgcGFyYWxsZWwgbm9kZXMKLXJlc2V0IGVuYWJs ZV9zZXFzY2FuOwotYWx0ZXIgdGFibGUgdGVuazIgc2V0IChwYXJhbGxlbF93b3JrZXJzID0gMCk7 Ci1leHBsYWluIChhbmFseXplLCB0aW1pbmcgb2ZmLCBzdW1tYXJ5IG9mZiwgY29zdHMgb2ZmLCBi dWZmZXJzIG9mZikKLSAgIHNlbGVjdCBjb3VudCgqKSBmcm9tIHRlbmsxLCB0ZW5rMiB3aGVyZSB0 ZW5rMS5odW5kcmVkID4gMQotICAgICAgICBhbmQgdGVuazIudGhvdXNhbmQ9MDsKLWFsdGVyIHRh YmxlIHRlbmsyIHJlc2V0IChwYXJhbGxlbF93b3JrZXJzKTsKLQotcmVzZXQgd29ya19tZW07Ci1j cmVhdGUgZnVuY3Rpb24gZXhwbGFpbl9wYXJhbGxlbF9zb3J0X3N0YXRzKCkgcmV0dXJucyBzZXRv ZiB0ZXh0Ci1sYW5ndWFnZSBwbHBnc3FsIGFzCi0kJAotZGVjbGFyZSBsbiB0ZXh0OwotYmVnaW4K LSAgICBmb3IgbG4gaW4KLSAgICAgICAgZXhwbGFpbiAoYW5hbHl6ZSwgdGltaW5nIG9mZiwgc3Vt bWFyeSBvZmYsIGNvc3RzIG9mZiwgYnVmZmVycyBvZmYpCi0gICAgICAgICAgc2VsZWN0ICogZnJv bQotICAgICAgICAgIChzZWxlY3QgdGVuIGZyb20gdGVuazEgd2hlcmUgdGVuIDwgMTAwIG9yZGVy IGJ5IHRlbikgc3MKLSAgICAgICAgICByaWdodCBqb2luICh2YWx1ZXMgKDEpLCgyKSwoMykpIHYo eCkgb24gdHJ1ZQotICAgIGxvb3AKLSAgICAgICAgbG4gOj0gcmVnZXhwX3JlcGxhY2UobG4sICdN ZW1vcnk6IFxTKicsICAnTWVtb3J5OiB4eHgnKTsKLSAgICAgICAgcmV0dXJuIG5leHQgbG47Ci0g ICAgZW5kIGxvb3A7Ci1lbmQ7Ci0kJDsKLXNlbGVjdCAqIGZyb20gZXhwbGFpbl9wYXJhbGxlbF9z b3J0X3N0YXRzKCk7Ci0KLXJlc2V0IGVuYWJsZV9pbmRleHNjYW47Ci1yZXNldCBlbmFibGVfaGFz aGpvaW47Ci1yZXNldCBlbmFibGVfbWVyZ2Vqb2luOwotcmVzZXQgZW5hYmxlX21hdGVyaWFsOwot cmVzZXQgZWZmZWN0aXZlX2lvX2NvbmN1cnJlbmN5OwotZHJvcCB0YWJsZSBibXNjYW50ZXN0Owot ZHJvcCBmdW5jdGlvbiBleHBsYWluX3BhcmFsbGVsX3NvcnRfc3RhdHMoKTsKLQotLS0gdGVzdCBw YXJhbGxlbCBtZXJnZSBqb2luIHBhdGguCi1zZXQgZW5hYmxlX2hhc2hqb2luIHRvIG9mZjsKLXNl dCBlbmFibGVfbmVzdGxvb3AgdG8gb2ZmOwotCi1leHBsYWluIChjb3N0cyBvZmYpCi0Jc2VsZWN0 ICBjb3VudCgqKSBmcm9tIHRlbmsxLCB0ZW5rMiB3aGVyZSB0ZW5rMS51bmlxdWUxID0gdGVuazIu dW5pcXVlMTsKLXNlbGVjdCAgY291bnQoKikgZnJvbSB0ZW5rMSwgdGVuazIgd2hlcmUgdGVuazEu dW5pcXVlMSA9IHRlbmsyLnVuaXF1ZTE7Ci0KLXJlc2V0IGVuYWJsZV9oYXNoam9pbjsKLXJlc2V0 IGVuYWJsZV9uZXN0bG9vcDsKLQotLS0gdGVzdCBwYXJhbGxlbCBuZXN0bG9vcCBqb2luIHBhdGgg d2l0aCBtYXRlcmlhbGl6YXRpb24gb2YgdGhlIGlubmVyIHBhdGgKLWFsdGVyIHRhYmxlIHRlbmsy IHNldCAocGFyYWxsZWxfd29ya2VycyA9IDApOwotZXhwbGFpbiAoY29zdHMgb2ZmKQotc2VsZWN0 ICogZnJvbSB0ZW5rMSB0MSwgdGVuazIgdDIgd2hlcmUgdDEudHdvID4gdDIudHdvOwotCi0tLSB0 ZXN0IHRoYXQgcGFyYWxsZWwgbmVzdGxvb3Agam9pbiBpcyBub3QgZ2VuZXJhdGVkIGlmIHRoZSBp bm5lciBwYXRoIGlzCi0tLSBub3QgcGFyYWxsZWwtc2FmZQotZXhwbGFpbiAoY29zdHMgb2ZmKQot c2VsZWN0ICogZnJvbSB0ZW5rMSB0MQotICAgIGxlZnQgam9pbiBsYXRlcmFsCi0gICAgICAoc2Vs ZWN0IHQxLnVuaXF1ZTEgYXMgeCwgKiBmcm9tIHRlbmsyIHQyIG9yZGVyIGJ5IDEpIHQyCi0gICAg b24gdHJ1ZQotd2hlcmUgdDEudHdvID4gdDIudHdvOwotYWx0ZXIgdGFibGUgdGVuazIgcmVzZXQg KHBhcmFsbGVsX3dvcmtlcnMpOwotCi0tLSB0ZXN0IGdhdGhlciBtZXJnZQotc2V0IGVuYWJsZV9o YXNoYWdnID0gZmFsc2U7Ci0KLWV4cGxhaW4gKGNvc3RzIG9mZikKLSAgIHNlbGVjdCBjb3VudCgq KSBmcm9tIHRlbmsxIGdyb3VwIGJ5IHR3ZW50eTsKLQotc2VsZWN0IGNvdW50KCopIGZyb20gdGVu azEgZ3JvdXAgYnkgdHdlbnR5OwotCi0tLXRlc3QgZXhwcmVzc2lvbnMgaW4gdGFyZ2V0bGlzdCBh cmUgcHVzaGVkIGRvd24gZm9yIGdhdGhlciBtZXJnZQotY3JlYXRlIGZ1bmN0aW9uIHNwX3NpbXBs ZV9mdW5jKHZhcjEgaW50ZWdlcikgcmV0dXJucyBpbnRlZ2VyCi1hcyAkJAotYmVnaW4KLSAgICAg ICAgcmV0dXJuIHZhcjEgKyAxMDsKLWVuZDsKLSQkIGxhbmd1YWdlIHBscGdzcWwgUEFSQUxMRUwg U0FGRTsKLQotZXhwbGFpbiAoY29zdHMgb2ZmLCB2ZXJib3NlKQotICAgIHNlbGVjdCB0ZW4sIHNw X3NpbXBsZV9mdW5jKHRlbikgZnJvbSB0ZW5rMSB3aGVyZSB0ZW4gPCAxMDAgb3JkZXIgYnkgdGVu OwotCi1kcm9wIGZ1bmN0aW9uIHNwX3NpbXBsZV9mdW5jKGludGVnZXIpOwotCi0tLSB0ZXN0IGhh bmRsaW5nIG9mIFNSRnMgaW4gdGFyZ2V0bGlzdCAoYnVnIGluIDEwLjApCi0KLWV4cGxhaW4gKGNv c3RzIG9mZikKLSAgIHNlbGVjdCBjb3VudCgqKSwgZ2VuZXJhdGVfc2VyaWVzKDEsMikgZnJvbSB0 ZW5rMSBncm91cCBieSB0d2VudHk7Ci0KLXNlbGVjdCBjb3VudCgqKSwgZ2VuZXJhdGVfc2VyaWVz KDEsMikgZnJvbSB0ZW5rMSBncm91cCBieSB0d2VudHk7Ci0KLS0tIHRlc3QgZ2F0aGVyIG1lcmdl IHdpdGggcGFyYWxsZWwgbGVhZGVyIHBhcnRpY2lwYXRpb24gZGlzYWJsZWQKLXNldCBwYXJhbGxl bF9sZWFkZXJfcGFydGljaXBhdGlvbiA9IG9mZjsKLQotZXhwbGFpbiAoY29zdHMgb2ZmKQotICAg c2VsZWN0IGNvdW50KCopIGZyb20gdGVuazEgZ3JvdXAgYnkgdHdlbnR5OwotCi1zZWxlY3QgY291 bnQoKikgZnJvbSB0ZW5rMSBncm91cCBieSB0d2VudHk7Ci0KLXJlc2V0IHBhcmFsbGVsX2xlYWRl cl9wYXJ0aWNpcGF0aW9uOwotCi0tLXRlc3QgcmVzY2FuIGJlaGF2aW9yIG9mIGdhdGhlciBtZXJn ZQotc2V0IGVuYWJsZV9tYXRlcmlhbCA9IGZhbHNlOwotCi1leHBsYWluIChjb3N0cyBvZmYpCi1z ZWxlY3QgKiBmcm9tCi0gIChzZWxlY3Qgc3RyaW5nNCwgY291bnQodW5pcXVlMikKLSAgIGZyb20g dGVuazEgZ3JvdXAgYnkgc3RyaW5nNCBvcmRlciBieSBzdHJpbmc0KSBzcwotICByaWdodCBqb2lu ICh2YWx1ZXMgKDEpLCgyKSwoMykpIHYoeCkgb24gdHJ1ZTsKLQotc2VsZWN0ICogZnJvbQotICAo c2VsZWN0IHN0cmluZzQsIGNvdW50KHVuaXF1ZTIpCi0gICBmcm9tIHRlbmsxIGdyb3VwIGJ5IHN0 cmluZzQgb3JkZXIgYnkgc3RyaW5nNCkgc3MKLSAgcmlnaHQgam9pbiAodmFsdWVzICgxKSwoMiks KDMpKSB2KHgpIG9uIHRydWU7Ci0KLXJlc2V0IGVuYWJsZV9tYXRlcmlhbDsKLQotcmVzZXQgZW5h YmxlX2hhc2hhZ2c7Ci0KLS0tIGNoZWNrIHBhcmFsbGVsaXplZCBpbnQ4IGFnZ3JlZ2F0ZSAoYnVn ICMxNDg5NykKLWV4cGxhaW4gKGNvc3RzIG9mZikKLXNlbGVjdCBhdmcodW5pcXVlMTo6aW50OCkg ZnJvbSB0ZW5rMTsKLQotc2VsZWN0IGF2Zyh1bmlxdWUxOjppbnQ4KSBmcm9tIHRlbmsxOwotCi0t LSBnYXRoZXIgbWVyZ2UgdGVzdCB3aXRoIGEgTElNSVQKLWV4cGxhaW4gKGNvc3RzIG9mZikKLSAg c2VsZWN0IGZpdmV0aG91cyBmcm9tIHRlbmsxIG9yZGVyIGJ5IGZpdmV0aG91cyBsaW1pdCA0Owot Ci1zZWxlY3QgZml2ZXRob3VzIGZyb20gdGVuazEgb3JkZXIgYnkgZml2ZXRob3VzIGxpbWl0IDQ7 Ci0KLS0tIGdhdGhlciBtZXJnZSB0ZXN0IHdpdGggMCB3b3JrZXIKLXNldCBtYXhfcGFyYWxsZWxf d29ya2VycyA9IDA7Ci1leHBsYWluIChjb3N0cyBvZmYpCi0gICBzZWxlY3Qgc3RyaW5nNCBmcm9t IHRlbmsxIG9yZGVyIGJ5IHN0cmluZzQgbGltaXQgNTsKLXNlbGVjdCBzdHJpbmc0IGZyb20gdGVu azEgb3JkZXIgYnkgc3RyaW5nNCBsaW1pdCA1OwotCi0tLSBnYXRoZXIgbWVyZ2UgdGVzdCB3aXRo IDAgd29ya2Vycywgd2l0aCBwYXJhbGxlbCBsZWFkZXIKLS0tIHBhcnRpY2lwYXRpb24gZGlzYWJs ZWQgKHRoZSBsZWFkZXIgd2lsbCBoYXZlIHRvIHJ1biB0aGUgcGxhbgotLS0gZGVzcGl0ZSB0aGUg c2V0dGluZykKLXNldCBwYXJhbGxlbF9sZWFkZXJfcGFydGljaXBhdGlvbiA9IG9mZjsKLWV4cGxh aW4gKGNvc3RzIG9mZikKLSAgIHNlbGVjdCBzdHJpbmc0IGZyb20gdGVuazEgb3JkZXIgYnkgc3Ry aW5nNCBsaW1pdCA1Owotc2VsZWN0IHN0cmluZzQgZnJvbSB0ZW5rMSBvcmRlciBieSBzdHJpbmc0 IGxpbWl0IDU7Ci0KLXJlc2V0IHBhcmFsbGVsX2xlYWRlcl9wYXJ0aWNpcGF0aW9uOwotcmVzZXQg bWF4X3BhcmFsbGVsX3dvcmtlcnM7Ci0KLWNyZWF0ZSBmdW5jdGlvbiBwYXJhbGxlbF9zYWZlX3Zv bGF0aWxlKGEgaW50KSByZXR1cm5zIGludCBhcwotICAkJCBiZWdpbiByZXR1cm4gYTsgZW5kOyAk JCBwYXJhbGxlbCBzYWZlIHZvbGF0aWxlIGxhbmd1YWdlIHBscGdzcWw7Ci0KLS0tIFRlc3QgZ2F0 aGVyIG1lcmdlIGF0b3Agb2YgYSBzb3J0IG9mIGEgcGFydGlhbCBwYXRoCi1leHBsYWluIChjb3N0 cyBvZmYpCi1zZWxlY3QgKiBmcm9tIHRlbmsxIHdoZXJlIGZvdXIgPSAyCi1vcmRlciBieSBmb3Vy LCBodW5kcmVkLCBwYXJhbGxlbF9zYWZlX3ZvbGF0aWxlKHRob3VzYW5kKTsKLQotLS0gVGVzdCBn YXRoZXIgbWVyZ2UgYXRvcCBvZiBhbiBpbmNyZW1lbnRhbCBzb3J0IGEgb2YgcGFydGlhbCBwYXRo Ci1zZXQgbWluX3BhcmFsbGVsX2luZGV4X3NjYW5fc2l6ZSA9IDA7Ci1zZXQgZW5hYmxlX3NlcXNj YW4gPSBvZmY7Ci0KLWV4cGxhaW4gKGNvc3RzIG9mZikKLXNlbGVjdCAqIGZyb20gdGVuazEgd2hl cmUgZm91ciA9IDIKLW9yZGVyIGJ5IGZvdXIsIGh1bmRyZWQsIHBhcmFsbGVsX3NhZmVfdm9sYXRp bGUodGhvdXNhbmQpOwotCi1yZXNldCBtaW5fcGFyYWxsZWxfaW5kZXhfc2Nhbl9zaXplOwotcmVz ZXQgZW5hYmxlX3NlcXNjYW47Ci0KLS0tIFRlc3QgR1JPVVAgQlkgd2l0aCBhIGdhdGhlciBtZXJn ZSBwYXRoIGF0b3Agb2YgYSBzb3J0IG9mIGEgcGFydGlhbCBwYXRoCi1leHBsYWluIChjb3N0cyBv ZmYpCi1zZWxlY3QgY291bnQoKikgZnJvbSB0ZW5rMQotZ3JvdXAgYnkgdHdlbnR5LCBwYXJhbGxl bF9zYWZlX3ZvbGF0aWxlKHR3byk7Ci0KLWRyb3AgZnVuY3Rpb24gcGFyYWxsZWxfc2FmZV92b2xh dGlsZShpbnQpOwotCi1TQVZFUE9JTlQgc2V0dGluZ3M7Ci1TRVQgTE9DQUwgZGVidWdfcGFyYWxs ZWxfcXVlcnkgPSAxOwotZXhwbGFpbiAoY29zdHMgb2ZmKQotICBzZWxlY3Qgc3RyaW5ndTE6Omlu dDIgZnJvbSB0ZW5rMSB3aGVyZSB1bmlxdWUxID0gMTsKLVJPTExCQUNLIFRPIFNBVkVQT0lOVCBz ZXR0aW5nczsKLQotLS0gZXhlcmNpc2UgcmVjb3JkIHR5cG1vZCByZW1hcHBpbmcgYmV0d2VlbiBi YWNrZW5kcwotQ1JFQVRFIEZVTkNUSU9OIG1ha2VfcmVjb3JkKG4gaW50KQotICBSRVRVUk5TIFJF Q09SRCBMQU5HVUFHRSBwbHBnc3FsIFBBUkFMTEVMIFNBRkUgQVMKLSQkCi1CRUdJTgotICBSRVRV Uk4gQ0FTRSBuCi0gICAgICAgICAgIFdIRU4gMSBUSEVOIFJPVygxKQotICAgICAgICAgICBXSEVO IDIgVEhFTiBST1coMSwgMikKLSAgICAgICAgICAgV0hFTiAzIFRIRU4gUk9XKDEsIDIsIDMpCi0g ICAgICAgICAgIFdIRU4gNCBUSEVOIFJPVygxLCAyLCAzLCA0KQotICAgICAgICAgICBFTFNFIFJP VygxLCAyLCAzLCA0LCA1KQotICAgICAgICAgRU5EOwotRU5EOwotJCQ7Ci1TQVZFUE9JTlQgc2V0 dGluZ3M7Ci1TRVQgTE9DQUwgZGVidWdfcGFyYWxsZWxfcXVlcnkgPSAxOwotU0VMRUNUIG1ha2Vf cmVjb3JkKHgpIEZST00gKFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXMoMSwgNSkgeCkgc3MgT1JERVIg QlkgeDsKLVJPTExCQUNLIFRPIFNBVkVQT0lOVCBzZXR0aW5nczsKLURST1AgZnVuY3Rpb24gbWFr ZV9yZWNvcmQobiBpbnQpOwotCi0tLSB0ZXN0IHRoZSBzYW5pdHkgb2YgcGFyYWxsZWwgcXVlcnkg YWZ0ZXIgdGhlIGFjdGl2ZSByb2xlIGlzIGRyb3BwZWQuCi1kcm9wIHJvbGUgaWYgZXhpc3RzIHJl Z3Jlc3NfcGFyYWxsZWxfd29ya2VyOwotY3JlYXRlIHJvbGUgcmVncmVzc19wYXJhbGxlbF93b3Jr ZXI7Ci1zZXQgcm9sZSByZWdyZXNzX3BhcmFsbGVsX3dvcmtlcjsKLXJlc2V0IHNlc3Npb24gYXV0 aG9yaXphdGlvbjsKLWRyb3Agcm9sZSByZWdyZXNzX3BhcmFsbGVsX3dvcmtlcjsKLXNldCBkZWJ1 Z19wYXJhbGxlbF9xdWVyeSA9IDE7Ci1zZWxlY3QgY291bnQoKikgZnJvbSB0ZW5rMTsKLXJlc2V0 IGRlYnVnX3BhcmFsbGVsX3F1ZXJ5OwotcmVzZXQgcm9sZTsKLQotLS0gV2luZG93IGZ1bmN0aW9u IGNhbGN1bGF0aW9uIGNhbid0IGJlIHB1c2hlZCB0byB3b3JrZXJzLgotZXhwbGFpbiAoY29zdHMg b2ZmLCB2ZXJib3NlKQotICBzZWxlY3QgY291bnQoKikgZnJvbSB0ZW5rMSBhIHdoZXJlICh1bmlx dWUxLCB0d28pIGluCi0gICAgKHNlbGVjdCB1bmlxdWUxLCByb3dfbnVtYmVyKCkgb3ZlcigpIGZy b20gdGVuazEgYik7Ci0KLQotLS0gTElNSVQvT0ZGU0VUIHdpdGhpbiBzdWItc2VsZWN0cyBjYW4n dCBiZSBwdXNoZWQgdG8gd29ya2Vycy4KLWV4cGxhaW4gKGNvc3RzIG9mZikKLSAgc2VsZWN0ICog ZnJvbSB0ZW5rMSBhIHdoZXJlIHR3byBpbgotICAgIChzZWxlY3QgdHdvIGZyb20gdGVuazEgYiB3 aGVyZSBzdHJpbmd1MSBsaWtlICclQUFBQScgbGltaXQgMyk7Ci0KLS0tIHRvIGluY3JlYXNlIHRo ZSBwYXJhbGxlbCBxdWVyeSB0ZXN0IGNvdmVyYWdlCi1TQVZFUE9JTlQgc2V0dGluZ3M7Ci1TRVQg TE9DQUwgZGVidWdfcGFyYWxsZWxfcXVlcnkgPSAxOwotRVhQTEFJTiAoYW5hbHl6ZSwgdGltaW5n IG9mZiwgc3VtbWFyeSBvZmYsIGNvc3RzIG9mZiwgYnVmZmVycyBvZmYpIFNFTEVDVCAqIEZST00g dGVuazE7Ci1ST0xMQkFDSyBUTyBTQVZFUE9JTlQgc2V0dGluZ3M7Ci0KLS0tIHByb3Zva2UgZXJy b3IgaW4gd29ya2VyCi0tLSAobWFrZSB0aGUgZXJyb3IgbWVzc2FnZSBsb25nIGVub3VnaCB0byBy ZXF1aXJlIG11bHRpcGxlIGJ1ZmZlcmxvYWRzKQotU0FWRVBPSU5UIHNldHRpbmdzOwotU0VUIExP Q0FMIGRlYnVnX3BhcmFsbGVsX3F1ZXJ5ID0gMTsKLXNlbGVjdCAoc3RyaW5ndTEgfHwgcmVwZWF0 KCdhYmNkJywgNTAwMCkpOjppbnQyIGZyb20gdGVuazEgd2hlcmUgdW5pcXVlMSA9IDE7Ci1ST0xM QkFDSyBUTyBTQVZFUE9JTlQgc2V0dGluZ3M7Ci0KLS0tIHRlc3QgaW50ZXJhY3Rpb24gd2l0aCBz ZXQtcmV0dXJuaW5nIGZ1bmN0aW9ucwotU0FWRVBPSU5UIHNldHRpbmdzOwotCi0tLSBtdWx0aXBs ZSBzdWJxdWVyaWVzIHVuZGVyIGEgc2luZ2xlIEdhdGhlciBub2RlCi0tLSBtdXN0IHNldCBwYXJh bGxlbF9zZXR1cF9jb3N0ID4gMCB0byBkaXNjb3VyYWdlIG11bHRpcGxlIEdhdGhlciBub2Rlcwot U0VUIExPQ0FMIHBhcmFsbGVsX3NldHVwX2Nvc3QgPSAxMDsKLUVYUExBSU4gKENPU1RTIE9GRikK LVNFTEVDVCB1bmlxdWUxIEZST00gdGVuazEgV0hFUkUgZml2ZXRob3VzID0gdGVudGhvdXMgKyAx Ci1VTklPTiBBTEwKLVNFTEVDVCB1bmlxdWUxIEZST00gdGVuazEgV0hFUkUgZml2ZXRob3VzID0g dGVudGhvdXMgKyAxOwotUk9MTEJBQ0sgVE8gU0FWRVBPSU5UIHNldHRpbmdzOwotCi0tLSBjYW4n dCB1c2UgbXVsdGlwbGUgc3VicXVlcmllcyB1bmRlciBhIHNpbmdsZSBHYXRoZXIgbm9kZSBkdWUg dG8gaW5pdFBsYW5zCi1FWFBMQUlOIChDT1NUUyBPRkYpCi1TRUxFQ1QgdW5pcXVlMSBGUk9NIHRl bmsxIFdIRVJFIGZpdmV0aG91cyA9Ci0JKFNFTEVDVCB1bmlxdWUxIEZST00gdGVuazEgV0hFUkUg Zml2ZXRob3VzID0gMSBMSU1JVCAxKQotVU5JT04gQUxMCi1TRUxFQ1QgdW5pcXVlMSBGUk9NIHRl bmsxIFdIRVJFIGZpdmV0aG91cyA9Ci0JKFNFTEVDVCB1bmlxdWUyIEZST00gdGVuazEgV0hFUkUg Zml2ZXRob3VzID0gMSBMSU1JVCAxKQotT1JERVIgQlkgMTsKLQotLS0gdGVzdCBpbnRlcmFjdGlv biB3aXRoIFNSRnMKLVNFTEVDVCAqIEZST00gaW5mb3JtYXRpb25fc2NoZW1hLmZvcmVpZ25fZGF0 YV93cmFwcGVyX29wdGlvbnMKLU9SREVSIEJZIDEsIDIsIDM7Ci0KLUVYUExBSU4gKFZFUkJPU0Us IENPU1RTIE9GRikKLVNFTEVDVCBnZW5lcmF0ZV9zZXJpZXMoMSwgdHdvKSwgYXJyYXkoc2VsZWN0 IGdlbmVyYXRlX3NlcmllcygxLCB0d28pKQotICBGUk9NIHRlbmsxIE9SREVSIEJZIHRlbnRob3Vz OwotCi0tLSBtdXN0IGRpc2FsbG93IHB1c2hpbmcgc29ydCBiZWxvdyBnYXRoZXIgd2hlbiBwYXRo a2V5IGNvbnRhaW5zIGFuIFNSRgotRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQotU0VMRUNU IHVubmVzdChBUlJBWVtdOjppbnRlZ2VyW10pICsgMSBBUyBwYXRoa2V5Ci0gIEZST00gdGVuazEg dDEgSk9JTiB0ZW5rMSB0MiBPTiBUUlVFCi0gIE9SREVSIEJZIHBhdGhrZXk7Ci0KLS0tIHRlc3Qg cGFzc2luZyBleHBhbmRlZC12YWx1ZSByZXByZXNlbnRhdGlvbnMgdG8gd29ya2VycwotQ1JFQVRF IEZVTkNUSU9OIG1ha2Vfc29tZV9hcnJheShpbnQsaW50KSByZXR1cm5zIGludFtdIGFzCi0kJGRl Y2xhcmUgeCBpbnRbXTsKLSAgYmVnaW4KLSAgICB4WzFdIDo9ICQxOwotICAgIHhbMl0gOj0gJDI7 Ci0gICAgcmV0dXJuIHg7Ci0gIGVuZCQkIGxhbmd1YWdlIHBscGdzcWwgcGFyYWxsZWwgc2FmZTsK LUNSRUFURSBUQUJMRSBmb29hcnIoZjEgdGV4dCwgZjIgaW50W10sIGYzIHRleHQpOwotSU5TRVJU IElOVE8gZm9vYXJyIFZBTFVFUygnMScsIEFSUkFZWzEsMl0sICdvbmUnKTsKLQotUFJFUEFSRSBw c3RtdCh0ZXh0LCBpbnRbXSkgQVMgU0VMRUNUICogRlJPTSBmb29hcnIgV0hFUkUgZjEgPSAkMSBB TkQgZjIgPSAkMjsKLUVYUExBSU4gKENPU1RTIE9GRikgRVhFQ1VURSBwc3RtdCgnMScsIG1ha2Vf c29tZV9hcnJheSgxLDIpKTsKLUVYRUNVVEUgcHN0bXQoJzEnLCBtYWtlX3NvbWVfYXJyYXkoMSwy KSk7Ci1ERUFMTE9DQVRFIHBzdG10OwotCi0tLSB0ZXN0IGludGVyYWN0aW9uIGJldHdlZW4gc3Vi cXVlcnkgYW5kIHBhcnRpYWxfcGF0aHMKLUNSRUFURSBWSUVXIHRlbmsxX3Z3X3NlYyBXSVRIIChz ZWN1cml0eV9iYXJyaWVyKSBBUyBTRUxFQ1QgKiBGUk9NIHRlbmsxOwotRVhQTEFJTiAoQ09TVFMg T0ZGKQotU0VMRUNUIDEgRlJPTSB0ZW5rMV92d19zZWMKLSAgV0hFUkUgKFNFTEVDVCBzdW0oZjEp IEZST00gaW50NF90YmwgV0hFUkUgZjEgPCB1bmlxdWUxKSA8IDEwMDsKLQotcm9sbGJhY2s7Ci0K LS0tIHRlc3QgdGhhdCBhIG5ld2x5LWNyZWF0ZWQgc2Vzc2lvbiByb2xlIHByb3BhZ2F0ZXMgdG8g d29ya2Vycy4KLWJlZ2luOwotY3JlYXRlIHJvbGUgcmVncmVzc19wYXJhbGxlbF93b3JrZXI7Ci1z ZXQgc2Vzc2lvbiBhdXRob3JpemF0aW9uIHJlZ3Jlc3NfcGFyYWxsZWxfd29ya2VyOwotc2VsZWN0 IGN1cnJlbnRfc2V0dGluZygnc2Vzc2lvbl9hdXRob3JpemF0aW9uJyk7Ci1zZXQgZGVidWdfcGFy YWxsZWxfcXVlcnkgPSAxOwotc2VsZWN0IGN1cnJlbnRfc2V0dGluZygnc2Vzc2lvbl9hdXRob3Jp emF0aW9uJyk7Ci1yb2xsYmFjazsKLQotLS0gdGVzdCB0aGF0IGZ1bmN0aW9uIG9wdGlvbiBTRVQg Uk9MRSB3b3JrcyBpbiBwYXJhbGxlbCB3b3JrZXJzLgotY3JlYXRlIHJvbGUgcmVncmVzc19wYXJh bGxlbF93b3JrZXI7Ci0KLWNyZWF0ZSBmdW5jdGlvbiBzZXRfYW5kX3JlcG9ydF9yb2xlKCkgcmV0 dXJucyB0ZXh0IGFzCi0gICQkIHNlbGVjdCBjdXJyZW50X3NldHRpbmcoJ3JvbGUnKSAkJCBsYW5n dWFnZSBzcWwgcGFyYWxsZWwgc2FmZQotICBzZXQgcm9sZSA9IHJlZ3Jlc3NfcGFyYWxsZWxfd29y a2VyOwotCi1jcmVhdGUgZnVuY3Rpb24gc2V0X3JvbGVfYW5kX2Vycm9yKGludCkgcmV0dXJucyBp bnQgYXMKLSAgJCQgc2VsZWN0IDEgLyAkMSAkJCBsYW5ndWFnZSBzcWwgcGFyYWxsZWwgc2FmZQot ICBzZXQgcm9sZSA9IHJlZ3Jlc3NfcGFyYWxsZWxfd29ya2VyOwotCi1zZXQgZGVidWdfcGFyYWxs ZWxfcXVlcnkgPSAwOwotc2VsZWN0IHNldF9hbmRfcmVwb3J0X3JvbGUoKTsKLXNlbGVjdCBzZXRf cm9sZV9hbmRfZXJyb3IoMCk7Ci1zZXQgZGVidWdfcGFyYWxsZWxfcXVlcnkgPSAxOwotc2VsZWN0 IHNldF9hbmRfcmVwb3J0X3JvbGUoKTsKLXNlbGVjdCBzZXRfcm9sZV9hbmRfZXJyb3IoMCk7Ci1y ZXNldCBkZWJ1Z19wYXJhbGxlbF9xdWVyeTsKLQotZHJvcCBmdW5jdGlvbiBzZXRfYW5kX3JlcG9y dF9yb2xlKCk7Ci1kcm9wIGZ1bmN0aW9uIHNldF9yb2xlX2FuZF9lcnJvcihpbnQpOwotZHJvcCBy b2xlIHJlZ3Jlc3NfcGFyYWxsZWxfd29ya2VyOwotCi0tLSBkb24ndCBmcmVlemUgaW4gUGFyYWxs ZWxGaW5pc2ggd2hpbGUgaG9sZGluZyBhbiBMV0xvY2sKLUJFR0lOOwotCi1DUkVBVEUgRlVOQ1RJ T04gbXlfY21wIChpbnQ0LCBpbnQ0KQotUkVUVVJOUyBpbnQgTEFOR1VBR0Ugc3FsIEFTCi0kJAot CVNFTEVDVAotCQlDQVNFIFdIRU4gJDEgPCAkMiBUSEVOIC0xCi0JCQkJV0hFTiAkMSA+ICQyIFRI RU4gIDEKLQkJCQlFTFNFIDAKLQkJRU5EOwotJCQ7Ci0KLUNSRUFURSBUQUJMRSBwYXJhbGxlbF9o YW5nIChpIGludDQpOwotSU5TRVJUIElOVE8gcGFyYWxsZWxfaGFuZwotCShTRUxFQ1QgKiBGUk9N IGdlbmVyYXRlX3NlcmllcygxLCA0MDApIGdzKTsKLQotQ1JFQVRFIE9QRVJBVE9SIENMQVNTIGlu dDRfY3VzdG9tX29wcyBGT1IgVFlQRSBpbnQ0IFVTSU5HIGJ0cmVlIEFTCi0JT1BFUkFUT1IgMSA8 IChpbnQ0LCBpbnQ0KSwgT1BFUkFUT1IgMiA8PSAoaW50NCwgaW50NCksCi0JT1BFUkFUT1IgMyA9 IChpbnQ0LCBpbnQ0KSwgT1BFUkFUT1IgNCA+PSAoaW50NCwgaW50NCksCi0JT1BFUkFUT1IgNSA+ IChpbnQ0LCBpbnQ0KSwgRlVOQ1RJT04gMSBteV9jbXAoaW50NCwgaW50NCk7Ci0KLUNSRUFURSBV TklRVUUgSU5ERVggcGFyYWxsZWxfaGFuZ19pZHgKLQkJCQkJT04gcGFyYWxsZWxfaGFuZwotCQkJ CQlVU0lORyBidHJlZSAoaSBpbnQ0X2N1c3RvbV9vcHMpOwotCi1TRVQgZGVidWdfcGFyYWxsZWxf cXVlcnkgPSBvbjsKLURFTEVURSBGUk9NIHBhcmFsbGVsX2hhbmcgV0hFUkUgMzgwIDw9IGkgQU5E IGkgPD0gNDIwOwotCi1ST0xMQkFDSzsKLQotLS0gQ2hlY2sgcGFyYWxsZWwgd29ya2VyIHN0YXRz Ci1zZWxlY3QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7Ci1zZWxlY3QgcGFyYWxsZWxfd29y a2Vyc190b19sYXVuY2ggPiA6J3BhcmFsbGVsX3dvcmtlcnNfdG9fbGF1bmNoX2JlZm9yZScgIEFT IHdya190b19sYXVuY2gsCi0gICAgICAgcGFyYWxsZWxfd29ya2Vyc19sYXVuY2hlZCA+IDoncGFy YWxsZWxfd29ya2Vyc19sYXVuY2hlZF9iZWZvcmUnIEFTIHdya19sYXVuY2hlZAotICBmcm9tIHBn X3N0YXRfZGF0YWJhc2UKLSAgd2hlcmUgZGF0bmFtZSA9IGN1cnJlbnRfZGF0YWJhc2UoKTsKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3dyaXRlX3BhcmFsbGVsLnNxbCBiL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL3dyaXRlX3BhcmFsbGVsLnNxbAppbmRleCBhZTY2MGRjMjI2NS4uMWI5 YjRjMDRmZGQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3dyaXRlX3BhcmFsbGVs LnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC93cml0ZV9wYXJhbGxlbC5zcWwKQEAgLTE5 LDI1ICsxOSwzIEBAIGV4cGxhaW4gKGNvc3RzIG9mZikgY3JlYXRlIHRhYmxlIHBhcmFsbGVsX3dy aXRlIGFzCiBjcmVhdGUgdGFibGUgcGFyYWxsZWxfd3JpdGUgYXMKICAgICBzZWxlY3QgbGVuZ3Ro KHN0cmluZ3UxKSBmcm9tIHRlbmsxIGdyb3VwIGJ5IGxlbmd0aChzdHJpbmd1MSk7CiBkcm9wIHRh YmxlIHBhcmFsbGVsX3dyaXRlOwotCi1leHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCBsZW5ndGgo c3RyaW5ndTEpIGludG8gcGFyYWxsZWxfd3JpdGUKLSAgICBmcm9tIHRlbmsxIGdyb3VwIGJ5IGxl bmd0aChzdHJpbmd1MSk7Ci1zZWxlY3QgbGVuZ3RoKHN0cmluZ3UxKSBpbnRvIHBhcmFsbGVsX3dy aXRlCi0gICAgZnJvbSB0ZW5rMSBncm91cCBieSBsZW5ndGgoc3RyaW5ndTEpOwotZHJvcCB0YWJs ZSBwYXJhbGxlbF93cml0ZTsKLQotZXhwbGFpbiAoY29zdHMgb2ZmKSBjcmVhdGUgbWF0ZXJpYWxp emVkIHZpZXcgcGFyYWxsZWxfbWF0X3ZpZXcgYXMKLSAgICBzZWxlY3QgbGVuZ3RoKHN0cmluZ3Ux KSBmcm9tIHRlbmsxIGdyb3VwIGJ5IGxlbmd0aChzdHJpbmd1MSk7Ci1jcmVhdGUgbWF0ZXJpYWxp emVkIHZpZXcgcGFyYWxsZWxfbWF0X3ZpZXcgYXMKLSAgICBzZWxlY3QgbGVuZ3RoKHN0cmluZ3Ux KSBmcm9tIHRlbmsxIGdyb3VwIGJ5IGxlbmd0aChzdHJpbmd1MSk7Ci1jcmVhdGUgdW5pcXVlIGlu ZGV4IG9uIHBhcmFsbGVsX21hdF92aWV3KGxlbmd0aCk7Ci1yZWZyZXNoIG1hdGVyaWFsaXplZCB2 aWV3IHBhcmFsbGVsX21hdF92aWV3OwotcmVmcmVzaCBtYXRlcmlhbGl6ZWQgdmlldyBjb25jdXJy ZW50bHkgcGFyYWxsZWxfbWF0X3ZpZXc7Ci1kcm9wIG1hdGVyaWFsaXplZCB2aWV3IHBhcmFsbGVs X21hdF92aWV3OwotCi1wcmVwYXJlIHByZXBfc3RtdCBhcyBzZWxlY3QgbGVuZ3RoKHN0cmluZ3Ux KSBmcm9tIHRlbmsxIGdyb3VwIGJ5IGxlbmd0aChzdHJpbmd1MSk7Ci1leHBsYWluIChjb3N0cyBv ZmYpIGNyZWF0ZSB0YWJsZSBwYXJhbGxlbF93cml0ZSBhcyBleGVjdXRlIHByZXBfc3RtdDsKLWNy ZWF0ZSB0YWJsZSBwYXJhbGxlbF93cml0ZSBhcyBleGVjdXRlIHByZXBfc3RtdDsKLWRyb3AgdGFi bGUgcGFyYWxsZWxfd3JpdGU7Ci0KLXJvbGxiYWNrOwotLSAKMi41Mi4wCgo= --b8332a0d430b06d6a99b2841ff255f933a5baeb0d9aa6c393a8e4e253e30 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v2-0001-pg_regress-Include-diffs-in-output.patch Content-Type: text/x-patch; charset=utf-8; name=v2-0001-pg_regress-Include-diffs-in-output.patch RnJvbSBhZjhiNTIxMTY5N2M0M2VjNWExMGI1NDkyZDJhYzUyMzhiNTNjYTgzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBNb24sIDI2IEphbiAyMDI2IDAwOjE1OjMwICswMTAwClN1YmplY3Q6IFtQQVRDSCB2 MiAxLzVdIHBnX3JlZ3Jlc3M6IEluY2x1ZGUgZGlmZnMgaW4gb3V0cHV0CgpXaGVuZXZlciBwZ19y ZWdyZXNzIGZhaWxzIHRoZXJlJ3MgYW4gaW5kaXJlY3Rpb24gdG8gYWN0dWFsbHkgZ2V0IHRvIHRo ZQpmYWlsdXJlIHJlYXNvbi4gTG9jYWxseSBpdCdzIHBvc3NpYmxlIHRvIGNvcHkgcGFzdGUgdGhl IGZpbGVuYW1lIGFuZApvcGVuIHRoZSBmaWxlLCBidXQgaW4gQ0kgaXQncyBuZWNlc3NhcnkgdG8g bWFudWFsbHkgdHJhdmVyc2UgdGhlCmRpcmVjdG9yeSBzdHJ1Y3R1cmUgYnkgY2xpY2tpbmcgYW5k IHNjcm9sbGluZyBhIGJ1bmNoIG9mIHRpbWUuCgpUaGlzIGNoYW5nZSBzdGFydHMgcHJpbnRpbmcg dGhlIGZpcnN0IDgwIGxpbmVzIG9mIHRoZSByZWdyZXNzaW9uLmRpZmZzCmZpbGUgYXMgVEFQIGRp YWdub3N0aWNzLiBTbyBpdCdzIG5vdCBuZWNlc3NhcnkgdG8gb3BlbiB0aGUKcmVncmVzc2lvbi5k aWZmcyBmaWxlIGluIG1hbnkgY2FzZXMuCi0tLQogc3JjL3Rlc3QvcmVncmVzcy9wZ19yZWdyZXNz LmMgfCA1MiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLQogMSBmaWxlIGNoYW5n ZWQsIDQ0IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvcmVncmVzcy9wZ19yZWdyZXNzLmMgYi9zcmMvdGVzdC9yZWdyZXNzL3BnX3JlZ3Jlc3MuYwpp bmRleCBiNWMwY2I2NDdhOC4uNWNlNGQyNGQwOTUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jl c3MvcGdfcmVncmVzcy5jCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGdfcmVncmVzcy5jCkBAIC0x NDE0LDYgKzE0MTQsNyBAQCByZXN1bHRzX2RpZmZlcihjb25zdCBjaGFyICp0ZXN0bmFtZSwgY29u c3QgY2hhciAqcmVzdWx0c2ZpbGUsIGNvbnN0IGNoYXIgKmRlZmF1bAogCWludAkJCWJlc3RfbGlu ZV9jb3VudDsKIAlpbnQJCQlpOwogCWludAkJCWw7CisJbG9uZwkJc3RhcnRwb3M7CiAJY29uc3Qg Y2hhciAqcGxhdGZvcm1fZXhwZWN0ZmlsZTsKIAogCS8qCkBAIC0xNTIxLDIyICsxNTIyLDU3IEBA IHJlc3VsdHNfZGlmZmVyKGNvbnN0IGNoYXIgKnRlc3RuYW1lLCBjb25zdCBjaGFyICpyZXN1bHRz ZmlsZSwgY29uc3QgY2hhciAqZGVmYXVsCiAJICogYXBwZW5kIHRvIHRoZSBkaWZmcyBzdW1tYXJ5 IGZpbGUuCiAJICovCiAKLQkvKiBXcml0ZSBkaWZmIGhlYWRlciAqLwotCWRpZmZmaWxlID0gZm9w ZW4oZGlmZmZpbGVuYW1lLCAiYSIpOworCWRpZmZmaWxlID0gZm9wZW4oZGlmZmZpbGVuYW1lLCAi YSsiKTsKIAlpZiAoZGlmZmZpbGUpCiAJeworCQlmc2VlayhkaWZmZmlsZSwgMCwgU0VFS19FTkQp OworCQlzdGFydHBvcyA9IGZ0ZWxsKGRpZmZmaWxlKTsKIAkJZnByaW50ZihkaWZmZmlsZSwKIAkJ CQkiZGlmZiAlcyAlcyAlc1xuIiwKIAkJCQlwcmV0dHlfZGlmZl9vcHRzLCBiZXN0X2V4cGVjdF9m aWxlLCByZXN1bHRzZmlsZSk7CisJCWZmbHVzaChkaWZmZmlsZSk7CisKKwkJLyogUnVuIGRpZmYg Ki8KKwkJc25wcmludGYoY21kLCBzaXplb2YoY21kKSwKKwkJCQkgImRpZmYgJXMgXCIlc1wiIFwi JXNcIiA+PiBcIiVzXCIiLAorCQkJCSBwcmV0dHlfZGlmZl9vcHRzLCBiZXN0X2V4cGVjdF9maWxl LCByZXN1bHRzZmlsZSwgZGlmZmZpbGVuYW1lKTsKKwkJcnVuX2RpZmYoY21kLCBkaWZmZmlsZW5h bWUpOworCisJCS8qIEVtaXQgZGlmZiBhcyBUQVAgZGlhZ25vc3RpY3MgKi8KKwkJeworCQkJLyoK KwkJCSAqIEluIGNhc2Ugb2YgYSBjcmFzaCB0aGUgZGlmZiBjYW4gYmUgaHVnZSBhbmQgYWxsIG9m IHRoZQorCQkJICogc3Vic2VxdWVudCB0ZXN0cyB3aWxsIGZhaWwgd2l0aCBlc3NlbnRpYWxseSB1 c2VsZXNzIGRpZmZzIHRvby4KKwkJCSAqIFNvIHRvIGF2b2lkIGZsb29kaW5nIHRoZSBvdXRwdXQs IHdoaWxlIHN0aWxsIHByb3ZpZGluZyB1c2VmdWwKKwkJCSAqIGluZm8gaW4gbW9zdCBjYXNlcyB3 ZSBvdXRwdXQgb25seSB0aGUgZmlyc3QgODAgbGluZXMgb2YgdGhlCisJCQkgKiAqY29tYmluZWQq IGRpZmYuIFRoZSBudW1iZXIgODAgaXMgY2hvc2VuIHNvIHRoYXQgd2Ugb3V0cHV0IGxlc3MKKwkJ CSAqIHRoYW4gMTAwIGxpbmVzIG9mIGRpYWdub3N0aWNzIHBlciBwZ19yZWdyZXNzIHJ1bi4gT3Ro ZXJ3aXNlIGlmCisJCQkgKiBtZXNvbiBpcyBydW4gd2l0aCB0aGUgLS1xdWlldCBmbGFnIG9ubHkg dGhlIGxhc3QgMTAwIGxpbmVzIGFyZQorCQkJICogc2hvd24gYW5kIHVzdWFsbHkgdGhlIG1vc3Qg dXNlZnVsIGluZm9ybWF0aW9uIGlzIGFjdHVhbGx5IGluCisJCQkgKiB0aGUgZmlyc3QgZmV3IGxp bmVzCisJCQkgKi8KKwkJCXN0YXRpYyBpbnQJbmxpbmVzID0gMDsKKwkJCWNvbnN0IGludAltYXhf ZGlmZl9saW5lcyA9IDgwOworCQkJY2hhcgkJbGluZVsxMDI0XTsKKworCQkJZnNlZWsoZGlmZmZp bGUsIHN0YXJ0cG9zLCBTRUVLX1NFVCk7CisJCQl3aGlsZSAobmxpbmVzIDw9IG1heF9kaWZmX2xp bmVzICYmCisJCQkJICAgZmdldHMobGluZSwgc2l6ZW9mKGxpbmUpLCBkaWZmZmlsZSkpCisJCQl7 CisJCQkJc2l6ZV90CQlsZW4gPSBzdHJsZW4obGluZSk7CisKKwkJCQlpZiAobGVuID4gMCAmJiBs aW5lW2xlbiAtIDFdID09ICdcbicpCisJCQkJCWxpbmVbbGVuIC0gMV0gPSAnXDAnOworCisJCQkJ aWYgKCsrbmxpbmVzID4gbWF4X2RpZmZfbGluZXMpCisJCQkJCWRpYWcoIihkaWZmIG91dHB1dCB0 cnVuY2F0ZWQgYW5kIHNpbGVuY2luZyBvdXRwdXQgZm9yIGZ1cnRoZXIgZmFpbGluZyB0ZXN0cy4u LikiKTsKKwkJCQllbHNlCisJCQkJCWRpYWcoIiVzIiwgbGluZSk7CisJCQl9CisJCX0KIAkJZmNs b3NlKGRpZmZmaWxlKTsKIAl9CiAKLQkvKiBSdW4gZGlmZiAqLwotCXNucHJpbnRmKGNtZCwgc2l6 ZW9mKGNtZCksCi0JCQkgImRpZmYgJXMgXCIlc1wiIFwiJXNcIiA+PiBcIiVzXCIiLAotCQkJIHBy ZXR0eV9kaWZmX29wdHMsIGJlc3RfZXhwZWN0X2ZpbGUsIHJlc3VsdHNmaWxlLCBkaWZmZmlsZW5h bWUpOwotCXJ1bl9kaWZmKGNtZCwgZGlmZmZpbGVuYW1lKTsKLQogCXVubGluayhkaWZmKTsKIAly ZXR1cm4gdHJ1ZTsKIH0KCmJhc2UtY29tbWl0OiA4NTFmNjY0OWNjMThjNGI0ODJmYTJiNmFmZGRi NjViMzVkMDM1MzcwCi0tIAoyLjUyLjAKCg== --b8332a0d430b06d6a99b2841ff255f933a5baeb0d9aa6c393a8e4e253e30 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v2-0002-perl-tap-Show-failed-command-output.patch Content-Type: text/x-patch; charset=utf-8; name=v2-0002-perl-tap-Show-failed-command-output.patch RnJvbSBjMTczNjJhMjEwYmYwNzY4NTcxZDA2OWY5MGMyZWVhMDA0MTU5NjA5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBNb24sIDI2IEphbiAyMDI2IDA5OjA5OjExICswMTAwClN1YmplY3Q6IFtQQVRDSCB2 MiAyLzVdIHBlcmwgdGFwOiBTaG93IGZhaWxlZCBjb21tYW5kIG91dHB1dAoKVGhpcyBhZGRzIHRo ZSBvdXRwdXQgb2YgZmFpbGVkIGNvbW1hbmRzIHRvIHRoZSBUQVAgb3V0cHV0LiBCZWZvcmUgYQpm YWlsZWQgbGlicHFfcGlwZWxpbmUgdGVzdCB3b3VsZCBsb29rIGxpa2UgdGhpczoKCiAgRmFpbGVk IHRlc3QgJ2xpYnBxX3BpcGVsaW5lIGNhbmNlbCcKICBhdCAvaG9tZS9qZWx0ZS93b3JrL3Bvc3Rn cmVzLTMvc3JjL3Rlc3QvbW9kdWxlcy9saWJwcV9waXBlbGluZS90LzAwMV9saWJwcV9waXBlbGlu ZS5wbCBsaW5lIDU1LgoKTm93IHlvdSBjYW4gYWN0dWFsbHkgc2VlIHRoZSByZWFzb24gb2YgdGhl IGZhaWx1cmU6CgogIEZhaWxlZCB0ZXN0ICdsaWJwcV9waXBlbGluZSBjYW5jZWwnCiAgYXQgL2hv bWUvamVsdGUvd29yay9wb3N0Z3Jlcy0zL3NyYy90ZXN0L21vZHVsZXMvbGlicHFfcGlwZWxpbmUv dC8wMDFfbGlicHFfcGlwZWxpbmUucGwgbGluZSA1NS4KLS0tLS0tLS0tLSBjb21tYW5kIGZhaWxl ZCAtLS0tLS0tLS0tCmxpYnBxX3BpcGVsaW5lIC1yIDcwMCBjYW5jZWwgcG9ydD0yMjA2NyBob3N0 PS90bXAvdTFvd3E1QWppdCBkYm5hbWU9J3Bvc3RncmVzJyBtYXhfcHJvdG9jb2xfdmVyc2lvbj1s YXRlc3QKLS0tLS0tLS0tLS0tLS0gc3RkZXJyIC0tLS0tLS0tLS0tLS0tCnRlc3QgY2FuY2VsbGF0 aW9ucy4uLgpsaWJwcV9waXBlbGluZTozMTU6IHVuZXhwZWN0ZWQgbnVtYmVyIG9mIHJvd3MgcmVj ZWl2ZWQ6IDEKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpUbyBtYWtlIHN1 cmUgdGhlIG91dHB1dCBpcyBub3QgZmxvb2RlZC4gT25seSB0aGUgZmlyc3QgMzAgYW5kIGxhc3Qg MzAKbGluZXMgb2YgYm90aCBzdGRlcnIgYW5kIHN0ZG91dCBhcmUgc2hvd24uCgpUaGlzIGFsc28g Y2hhbmdlcyB0aGUgMDAxX3N0YXJ0X3N0b3AucGwgdGVzdCB0byBjb25maWd1cmUgYSBsb2dmaWxl CmR1cmluZyBwZ19jdGwgcmVzdGFydC4gT3RoZXJ3aXNlIElQQzo6UnVuIGNhbGwgd2lsbCBoYW5n IGluZGVmaW5pdGVseSwKYmVjYXVzZSB0aGUgc3Rkb3V0IGZpbGUgZGVzY3JpcHRvciB3b24ndCBi ZSBjbG9zZWQgb24gcHJvY2VzcyBleGl0LgotLS0KIHNyYy9iaW4vcGdfY3RsL3QvMDAxX3N0YXJ0 X3N0b3AucGwgICAgIHwgIDIgKy0KIHNyYy90ZXN0L3BlcmwvUG9zdGdyZVNRTC9UZXN0L1V0aWxz LnBtIHwgNTIgKysrKysrKysrKysrKysrKysrKysrKystLS0KIDIgZmlsZXMgY2hhbmdlZCwgNDcg aW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2N0 bC90LzAwMV9zdGFydF9zdG9wLnBsIGIvc3JjL2Jpbi9wZ19jdGwvdC8wMDFfc3RhcnRfc3RvcC5w bAppbmRleCA5Yjc5ZGUzMTlmMi4uNGEyNWIzNWVkOWMgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdf Y3RsL3QvMDAxX3N0YXJ0X3N0b3AucGwKKysrIGIvc3JjL2Jpbi9wZ19jdGwvdC8wMDFfc3RhcnRf c3RvcC5wbApAQCAtMTEyLDcgKzExMiw3IEBAIFNLSVA6CiAJb2soY2hlY2tfbW9kZV9yZWN1cnNp dmUoIiR0ZW1wZGlyL2RhdGEiLCAwNzUwLCAwNjQwKSk7CiB9CiAKLWNvbW1hbmRfb2soWyAncGdf Y3RsJywgJ3Jlc3RhcnQnLCAnLS1wZ2RhdGEnID0+ICIkdGVtcGRpci9kYXRhIiBdLAorY29tbWFu ZF9vayhbICdwZ19jdGwnLCAncmVzdGFydCcsICctLXBnZGF0YScgPT4gIiR0ZW1wZGlyL2RhdGEi LCAnLS1sb2cnID0+ICRsb2dGaWxlTmFtZSBdLAogCSdwZ19jdGwgcmVzdGFydCB3aXRoIHNlcnZl ciBydW5uaW5nJyk7CiAKIHN5c3RlbV9vcl9iYWlsICdwZ19jdGwnLCAnc3RvcCcsICctLXBnZGF0 YScgPT4gIiR0ZW1wZGlyL2RhdGEiOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcGVybC9Qb3N0Z3Jl U1FML1Rlc3QvVXRpbHMucG0gYi9zcmMvdGVzdC9wZXJsL1Bvc3RncmVTUUwvVGVzdC9VdGlscy5w bQppbmRleCBmZjg0M2VlY2M2ZS4uNWM0NTg2NTU4YmMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3Bl cmwvUG9zdGdyZVNRTC9UZXN0L1V0aWxzLnBtCisrKyBiL3NyYy90ZXN0L3BlcmwvUG9zdGdyZVNR TC9UZXN0L1V0aWxzLnBtCkBAIC05MzcsNiArOTM3LDM2IEBAIHN1YiBkaXJfc3ltbGluawogCWRp ZSAiTm8gJG5ld25hbWUiIHVubGVzcyAtZSAkbmV3bmFtZTsKIH0KIAorIyBMb2cgY29tbWFuZCBv dXRwdXQuIFRydW5jYXRlcyB0byBmaXJzdC9sYXN0IDMwIGxpbmVzIGlmIG92ZXIgNjAgbGluZXMu CitzdWIgX2RpYWdfY29tbWFuZF9vdXRwdXQKK3sKKwlteSAoJGNtZCwgJHN0ZG91dCwgJHN0ZGVy cikgPSBAXzsKKworCWRpYWcoam9pbigiICIsIEAkY21kKSk7CisKKwlmb3IgbXkgJGNoYW5uZWwg KFsnc3Rkb3V0JywgJHN0ZG91dF0sIFsnc3RkZXJyJywgJHN0ZGVycl0pCisJeworCQlteSAoJG5h bWUsICRvdXRwdXQpID0gQCRjaGFubmVsOworCQluZXh0IHVubGVzcyAkb3V0cHV0OworCisJCWRp YWcoIi0tLS0tLS0tLS0tLS0tICRuYW1lIC0tLS0tLS0tLS0tLS0tIik7CisJCW15IEBsaW5lcyA9 IHNwbGl0IC9cbi8sICRvdXRwdXQ7CisJCWlmIChAbGluZXMgPiA2MCkKKwkJeworCQkJZGlhZyhq b2luKCJcbiIsIEBsaW5lc1swIC4uIDI5XSkpOworCQkJZGlhZygiLi4uICIgLiAoQGxpbmVzIC0g NjApIC4gIiBsaW5lcyBvbWl0dGVkIC4uLiIpOworCQkJZGlhZyhqb2luKCJcbiIsIEBsaW5lc1st MzAgLi4gLTFdKSk7CisJCX0KKwkJZWxzZQorCQl7CisJCQlkaWFnKCRvdXRwdXQpOworCQl9CisJ fQorCisJZGlhZygiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIik7Cit9CisK KwogPXBvZAogCiA9YmFjawpAQCAtOTQ3LDcgKzk3Nyw3IEBAIHN1YiBkaXJfc3ltbGluawogCiA9 aXRlbSBjb21tYW5kX29rKGNtZCwgdGVzdF9uYW1lKQogCi1DaGVjayB0aGF0IHRoZSBjb21tYW5k IHJ1bnMgKHZpYSBDPHJ1bl9sb2c+KSBzdWNjZXNzZnVsbHkuCitDaGVjayB0aGF0IHRoZSBjb21t YW5kIHJ1bnMgc3VjY2Vzc2Z1bGx5LgogCiA9Y3V0CiAKQEAgLTk1NSw4ICs5ODUsMTMgQEAgc3Vi IGNvbW1hbmRfb2sKIHsKIAlsb2NhbCAkVGVzdDo6QnVpbGRlcjo6TGV2ZWwgPSAkVGVzdDo6QnVp bGRlcjo6TGV2ZWwgKyAxOwogCW15ICgkY21kLCAkdGVzdF9uYW1lKSA9IEBfOwotCW15ICRyZXN1 bHQgPSBydW5fbG9nKCRjbWQpOwotCW9rKCRyZXN1bHQsICR0ZXN0X25hbWUpOworCW15ICgkc3Rk b3V0LCAkc3RkZXJyKTsKKwlteSAkcmVzdWx0ID0gSVBDOjpSdW46OnJ1biAkY21kLCAnPicgPT4g XCRzdGRvdXQsICcyPicgPT4gXCRzdGRlcnI7CisJb2soJHJlc3VsdCwgJHRlc3RfbmFtZSkgb3Ig ZG8KKwl7CisJCWRpYWcoIi0tLS0tLS0tLS0gY29tbWFuZCBmYWlsZWQgLS0tLS0tLS0tLSIpOwor CQlfZGlhZ19jb21tYW5kX291dHB1dCgkY21kLCAkc3Rkb3V0LCAkc3RkZXJyKTsKKwl9OwogCXJl dHVybjsKIH0KIApAQCAtOTY0LDcgKzk5OSw3IEBAIHN1YiBjb21tYW5kX29rCiAKID1pdGVtIGNv bW1hbmRfZmFpbHMoY21kLCB0ZXN0X25hbWUpCiAKLUNoZWNrIHRoYXQgdGhlIGNvbW1hbmQgZmFp bHMgKHdoZW4gcnVuIHZpYSBDPHJ1bl9sb2c+KS4KK0NoZWNrIHRoYXQgdGhlIGNvbW1hbmQgZmFp bHMuCiAKID1jdXQKIApAQCAtOTcyLDggKzEwMDcsMTMgQEAgc3ViIGNvbW1hbmRfZmFpbHMKIHsK IAlsb2NhbCAkVGVzdDo6QnVpbGRlcjo6TGV2ZWwgPSAkVGVzdDo6QnVpbGRlcjo6TGV2ZWwgKyAx OwogCW15ICgkY21kLCAkdGVzdF9uYW1lKSA9IEBfOwotCW15ICRyZXN1bHQgPSBydW5fbG9nKCRj bWQpOwotCW9rKCEkcmVzdWx0LCAkdGVzdF9uYW1lKTsKKwlteSAoJHN0ZG91dCwgJHN0ZGVycik7 CisJbXkgJHJlc3VsdCA9IElQQzo6UnVuOjpydW4gJGNtZCwgJz4nID0+IFwkc3Rkb3V0LCAnMj4n ID0+IFwkc3RkZXJyOworCW9rKCEkcmVzdWx0LCAkdGVzdF9uYW1lKSBvciBkbworCXsKKwkJZGlh ZygiLS0gY29tbWFuZCBzdWNjZWVkZWQgdW5leHBlY3RlZGx5IC0tIik7CisJCV9kaWFnX2NvbW1h bmRfb3V0cHV0KCRjbWQsICRzdGRvdXQsICRzdGRlcnIpOworCX07CiAJcmV0dXJuOwogfQogCi0t IAoyLjUyLjAKCg== --b8332a0d430b06d6a99b2841ff255f933a5baeb0d9aa6c393a8e4e253e30 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v2-0003-perl-tap-Show-die-reason-in-TAP-output.patch Content-Type: text/x-patch; charset=utf-8; name=v2-0003-perl-tap-Show-die-reason-in-TAP-output.patch RnJvbSBkZjgyNjlkMmI3Y2JhZTlkNzNiYzFmMDQ2YmFiZDQ0YzBjNDRlYmVhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBNb24sIDI2IEphbiAyMDI2IDA5OjMyOjE1ICswMTAwClN1YmplY3Q6IFtQQVRDSCB2 MiAzLzVdIHBlcmwgdGFwOiBTaG93IGRpZSByZWFzb24gaW4gVEFQIG91dHB1dAoKSW4gb3VyIFBl cmwgdGVzdHMgdGhlIG1vc3QgY29tbW9ubHkgdXNlZCBmdW5jdGlvbiBpcyBwcm9iYWJseSBzYWZl X3BzcWwuCkJ1dCBpZiB0aGF0IGNhbGwgZmFpbGVkIHlvdSB3b3VsZCBnZXQgdGhpcyB0b3RhbGx5 IHVzZWxlc3Mgb3V0cHV0IGluIHRoZQptZXNvbiBvdXRwdXQ6CgpUZXN0cyB3ZXJlIHJ1biBidXQg bm8gcGxhbiB3YXMgZGVjbGFyZWQgYW5kIGRvbmVfdGVzdGluZygpIHdhcyBub3Qgc2Vlbi4KTG9v a3MgbGlrZSB5b3VyIHRlc3QgZXhpdGVkIHdpdGggMjkganVzdCBhZnRlciAyMS4KCldpdGggdGhp cyBjaGFuZ2UgeW91IGdldCB0aGUgYWN0dWFsIGZhaWx1cmUgcmVhc29uIHRvbzoKCmRpZTogZXJy b3IgcnVubmluZyBTUUw6ICdwc3FsOjxzdGRpbj46MjogRVJST1I6ICB1bnRlcm1pbmF0ZWQgcXVv dGVkIHN0cmluZyBhdCBvciBuZWFyICInIgpMSU5FIDE6IEdSQU5UIEFMTCBPTiBzeXN1c2VyX2Rh dGEgVE8gc2NyYW1fcm9sZSAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIF4nCndoaWxlIHJ1bm5pbmcgJ3BzcWwgLS1uby1wc3FscmMgLS1uby1hbGlnbiAt LXR1cGxlcy1vbmx5IC0tcXVpZXQgLS1kYm5hbWUgcG9ydD0xNzMzNSBob3N0PS90bXAveTlLWDZK QURoYSBkYm5hbWU9J3Bvc3RncmVzJyAtLWZpbGUgLSAtLXZhcmlhYmxlIE9OX0VSUk9SX1NUT1A9 MScgd2l0aCBzcWwgJ0NSRUFURSBUQUJMRSBzeXN1c2VyX2RhdGEgKG4pIEFTIFNFTEVDVCBOVUxM IEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwKTsKICAgR1JBTlQgQUxMIE9OIHN5c3VzZXJfZGF0 YSBUTyBzY3JhbV9yb2xlICcnIGF0IC9ob21lL2plbHRlL3dvcmsvcG9zdGdyZXMtMy9zcmMvdGVz dC9wZXJsL1Bvc3RncmVTUUwvVGVzdC9DbHVzdGVyLnBtIGxpbmUgMjMwMC4KTG9va3MgbGlrZSB5 b3VyIHRlc3QgZXhpdGVkIHdpdGggMjkganVzdCBhZnRlciAyMS4KCkRpc2N1c3Npb246IGh0dHBz Oi8vd3d3LnBvc3RncmVzcWwub3JnL21lc3NhZ2UtaWQvMjAyMjAyMjIxODE5MjQuZWVoaTdvNHBt bmVlYjRobSU0MGFsYXAzLmFuYXJhemVsLmRlCkRpc2N1c3Npb246IGh0dHBzOi8vd3d3LnBvc3Rn cmVzcWwub3JnL21lc3NhZ2UtaWQvZmxhdC9ERllGV00wNTNXSFMuMTBLOFpQSjYwNVVGS0BqZWx0 ZWYubmwKLS0tCiBzcmMvdGVzdC9wZXJsL1Bvc3RncmVTUUwvVGVzdC9VdGlscy5wbSB8IDE4ICsr KysrKysrKysrKysrKysrKwogMSBmaWxlIGNoYW5nZWQsIDE4IGluc2VydGlvbnMoKykKCmRpZmYg LS1naXQgYS9zcmMvdGVzdC9wZXJsL1Bvc3RncmVTUUwvVGVzdC9VdGlscy5wbSBiL3NyYy90ZXN0 L3BlcmwvUG9zdGdyZVNRTC9UZXN0L1V0aWxzLnBtCmluZGV4IDVjNDU4NjU1OGJjLi4zOWY3NmMw YWFiYSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcGVybC9Qb3N0Z3JlU1FML1Rlc3QvVXRpbHMucG0K KysrIGIvc3JjL3Rlc3QvcGVybC9Qb3N0Z3JlU1FML1Rlc3QvVXRpbHMucG0KQEAgLTI0NCw2ICsy NDQsMjQgQEAgSU5JVAogCWF1dG9mbHVzaCBTVERPVVQgMTsKIAlhdXRvZmx1c2ggU1RERVJSIDE7 CiAJYXV0b2ZsdXNoICR0ZXN0bG9nIDE7CisKKwkjIEJlY2F1c2Ugb2YgdGhlIGFib3ZlIHJlZGly ZWN0aW9uIHRoZSB0YXAgb3V0cHV0IHdvdWxkbid0IGNvbnRhaW4KKwkjIGluZm9ybWF0aW9uIGFi b3V0IHRlc3RzIGZhaWxpbmcgZHVlIHRvIGRpZSBldGMuIEZpeCB0aGF0IGJ5IGFsc28KKwkjIHBy aW50aW5nIHRoZSBmYWlsdXJlIHRvIHRoZSBvcmlnaW5hbCBzdGRlcnIuCisJJFNJR3tfX0RJRV9f fSA9IHN1YiB7CisJCSMgSWdub3JlIGRpZXMgYmVjYXVzZSBvZiBzeW50YXggZXJyb3JzLCB0aG9z ZSB3aWxsIGJlIGRpc3BsYXllZAorCQkjIGNvcnJlY3RseSBhbnl3YXkuCisJCXJldHVybiBpZiAh ZGVmaW5lZCAkXlM7CisKKwkJIyBJZ25vcmUgZGllcyBpbnNpZGUgZXZhbHMKKwkJcmV0dXJuIGlm ICReUyA9PSAxOworCisJCWRpYWcoImRpZTogJF9bMF0iKTsKKwkJIyBBbHNvIGNhbGwgZG9uZV90 ZXN0aW5nKCkgdG8gYXZvaWQgdGhlIGNvbmZ1c2luZyAibm8gcGxhbiB3YXMgZGVjbGFyZWQiCisJ CSMgbWVzc2FnZSBpbiBUQVAgb3V0cHV0IHdoZW4gYSB0ZXN0IGRpZXMuCisJCWRvbmVfdGVzdGlu ZygpOworCX07CisKIH0KIAogRU5ECi0tIAoyLjUyLjAKCg== --b8332a0d430b06d6a99b2841ff255f933a5baeb0d9aa6c393a8e4e253e30 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v2-0004-perl-tap-Use-croak-instead-of-die-in-our-perl-hel.patch Content-Type: text/x-patch; charset=utf-8; name=v2-0004-perl-tap-Use-croak-instead-of-die-in-our-perl-hel.patch RnJvbSBjNzlkOTExMjhhYjNlYjVjMWY4NmZiZGI4M2YyYjNlNTYxNjFjZWI1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBNb24sIDI2IEphbiAyMDI2IDEwOjA0OjQ0ICswMTAwClN1YmplY3Q6IFtQQVRDSCB2 MiA0LzVdIHBlcmwgdGFwOiBVc2UgY3JvYWsgaW5zdGVhZCBvZiBkaWUgaW4gb3VyIHBlcmwgaGVs cGVyCiBtb2R1bGVzCgpNYW55IG9mIG91ciBoZWxwZXJzIGNhbGxlZCBkaWUsIGJ1dCB0aGF0IG1l YW5zIHRoYXQgdGhlIGxpbmUgbnVtYmVyCnJlcG9ydGVkIG9uIGV4aXQgaXMgdGhlIGxpbmUgbnVt YmVyIGluIENsdXN0ZXIucG0gIG9yIFV0aWxzLnBtLiBUaGlzCnN0YXJ0cyB1c2luZyBjcm9hayBl dmVyeXdoZXJlIChleGNlcHQgZm9yIElOSVQpIGluIG91ciBDbHVzdGVyLnBtIGFuZApVdGlscy5w bSBmaWxlcy4gVGhhdCB3YXkgdGhlIGxpbmUgbnVtYmVyIG9mIHRoZSBjYWxsZXIgaXMgcmVwb3J0 ZWQKaW5zdGVhZC4KCkFzIGFuIGV4YW1wbGUsIHRoaXMgaXMgdGhlIG5ldyBvdXRwdXQgdGhlIHNh ZmVfcHNxbCBjYWxsIHRoYXQgZmFpbHM6CgpkaWU6IGVycm9yIHJ1bm5pbmcgU1FMOiAncHNxbDo8 c3RkaW4+OjI6IEVSUk9SOiAgdW50ZXJtaW5hdGVkIHF1b3RlZCBzdHJpbmcgYXQgb3IgbmVhciAi JyIKTElORSAxOiBHUkFOVCBBTEwgT04gc3lzdXNlcl9kYXRhIFRPIHNjcmFtX3JvbGUgJwogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeJwp3aGlsZSBydW5u aW5nICdwc3FsIC0tbm8tcHNxbHJjIC0tbm8tYWxpZ24gLS10dXBsZXMtb25seSAtLXF1aWV0IC0t ZGJuYW1lIHBvcnQ9MjY1NzggaG9zdD0vdG1wL0thT2pvdThISmEgZGJuYW1lPSdwb3N0Z3Jlcycg LS1maWxlIC0gLS12YXJpYWJsZSBPTl9FUlJPUl9TVE9QPTEnIHdpdGggc3FsICdDUkVBVEUgVEFC TEUgc3lzdXNlcl9kYXRhIChuKSBBUyBTRUxFQ1QgTlVMTCBGUk9NIGdlbmVyYXRlX3Nlcmllcygx LCAxMCk7CiAgIEdSQU5UIEFMTCBPTiBzeXN1c2VyX2RhdGEgVE8gc2NyYW1fcm9sZSAnJyBhdCAv aG9tZS9qZWx0ZS93b3JrL3Bvc3RncmVzLTMvc3JjL3Rlc3QvYXV0aGVudGljYXRpb24vdC8wMDFf cGFzc3dvcmQucGwgbGluZSAxNDQuCkxvb2tzIGxpa2UgeW91ciB0ZXN0IGV4aXRlZCB3aXRoIDI5 IGp1c3QgYWZ0ZXIgMjEuCi0tLQogc3JjL3Rlc3QvcGVybC9Qb3N0Z3JlU1FML1Rlc3QvQ2x1c3Rl ci5wbSB8IDEwOCArKysrKysrKysrKy0tLS0tLS0tLS0tLQogc3JjL3Rlc3QvcGVybC9Qb3N0Z3Jl U1FML1Rlc3QvVXRpbHMucG0gICB8ICAyNiArKystLS0KIDIgZmlsZXMgY2hhbmdlZCwgNjcgaW5z ZXJ0aW9ucygrKSwgNjcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcGVybC9Q b3N0Z3JlU1FML1Rlc3QvQ2x1c3Rlci5wbSBiL3NyYy90ZXN0L3BlcmwvUG9zdGdyZVNRTC9UZXN0 L0NsdXN0ZXIucG0KaW5kZXggZTI2N2JhODY4ZmUuLmI2MmFhYTU4Y2M0IDEwMDY0NAotLS0gYS9z cmMvdGVzdC9wZXJsL1Bvc3RncmVTUUwvVGVzdC9DbHVzdGVyLnBtCisrKyBiL3NyYy90ZXN0L3Bl cmwvUG9zdGdyZVNRTC9UZXN0L0NsdXN0ZXIucG0KQEAgLTU3LDcgKzU3LDcgQEAgUG9zdGdyZVNR TDo6VGVzdDo6Q2x1c3RlciAtIGNsYXNzIHJlcHJlc2VudGluZyBQb3N0Z3JlU1FMIHNlcnZlciBp bnN0YW5jZQogICAjIHJ1biBxdWVyeSBldmVyeSBzZWNvbmQgdW50aWwgaXQgcmV0dXJucyAndCcK ICAgIyBvciB0aW1lcyBvdXQKICAgJG5vZGUtPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywg cXxTRUxFQ1QgcmFuZG9tKCkgPCAwLjE7fCcpCi0gICAgb3IgZGllICJ0aW1lZCBvdXQiOworICAg IG9yIGNyb2FrICJ0aW1lZCBvdXQiOwogCiAgICMgRG8gYW4gb25saW5lIHBnX2Jhc2ViYWNrdXAK ICAgbXkgJHJldCA9ICRub2RlLT5iYWNrdXAoJ3Rlc3RiYWNrdXAxJyk7CkBAIC0zMzksNyArMzM5 LDcgQEAgc3ViIHJhd19jb25uZWN0CiAJCSRzb2NrZXQgPSBJTzo6U29ja2V0OjpVTklYLT5uZXco CiAJCQlUeXBlID0+IFNPQ0tfU1RSRUFNKCksCiAJCQlQZWVyID0+ICRwYXRoLAotCQkpIG9yIGRp ZSAiQ2Fubm90IGNyZWF0ZSBzb2NrZXQgLSAkSU86OlNvY2tldDo6ZXJyc3RyXG4iOworCQkpIG9y IGNyb2FrICJDYW5ub3QgY3JlYXRlIHNvY2tldCAtICRJTzo6U29ja2V0OjplcnJzdHJcbiI7CiAJ fQogCWVsc2UKIAl7CkBAIC0zNDcsNyArMzQ3LDcgQEAgc3ViIHJhd19jb25uZWN0CiAJCQlQZWVy SG9zdCA9PiAkcGdob3N0LAogCQkJUGVlclBvcnQgPT4gJHBncG9ydCwKIAkJCVByb3RvID0+ICd0 Y3AnCi0JCSkgb3IgZGllICJDYW5ub3QgY3JlYXRlIHNvY2tldCAtICRJTzo6U29ja2V0OjplcnJz dHJcbiI7CisJCSkgb3IgY3JvYWsgIkNhbm5vdCBjcmVhdGUgc29ja2V0IC0gJElPOjpTb2NrZXQ6 OmVycnN0clxuIjsKIAl9CiAJcmV0dXJuICRzb2NrZXQ7CiB9CkBAIC00MDYsNyArNDA2LDcgQEAg c3ViIGdyb3VwX2FjY2VzcwogCW15ICRkaXJfc3RhdCA9IHN0YXQoJHNlbGYtPmRhdGFfZGlyKTsK IAogCWRlZmluZWQoJGRpcl9zdGF0KQotCSAgb3IgZGllKCd1bmFibGUgdG8gc3RhdCAnIC4gJHNl bGYtPmRhdGFfZGlyKTsKKwkgIG9yIGNyb2FrKCd1bmFibGUgdG8gc3RhdCAnIC4gJHNlbGYtPmRh dGFfZGlyKTsKIAogCXJldHVybiAoU19JTU9ERSgkZGlyX3N0YXQtPm1vZGUpID09IDA3NTApOwog fQpAQCAtNTA4LDcgKzUwOCw3IEBAIHN1YiBjb25maWdfZGF0YQogCW15ICRyZXN1bHQgPQogCSAg SVBDOjpSdW46OnJ1biBbICRzZWxmLT5pbnN0YWxsZWRfY29tbWFuZCgncGdfY29uZmlnJyksIEBv cHRpb25zIF0sCiAJICAnPicsIFwkc3Rkb3V0LCAnMj4nLCBcJHN0ZGVycgotCSAgb3IgZGllICJj b3VsZCBub3QgZXhlY3V0ZSBwZ19jb25maWciOworCSAgb3IgY3JvYWsgImNvdWxkIG5vdCBleGVj dXRlIHBnX2NvbmZpZyI7CiAJIyBzdGFuZGFyZGl6ZSBsaW5lIGVuZGluZ3MKIAkkc3Rkb3V0ID1+ IHMvXHIoPz1cbikvL2c7CiAJIyBubyBvcHRpb25zLCBzY2FsYXIgY29udGV4dDoganVzdCBoYW5k IGJhY2sgdGhlIG91dHB1dApAQCAtNTQyLDcgKzU0Miw3IEBAIHN1YiBpbmZvCiB7CiAJbXkgKCRz ZWxmKSA9IEBfOwogCW15ICRfaW5mbyA9ICcnOwotCW9wZW4gbXkgJGZoLCAnPicsIFwkX2luZm8g b3IgZGllOworCW9wZW4gbXkgJGZoLCAnPicsIFwkX2luZm8gb3IgY3JvYWs7CiAJcHJpbnQgJGZo ICJOYW1lOiAiIC4gJHNlbGYtPm5hbWUgLiAiXG4iOwogCXByaW50ICRmaCAiVmVyc2lvbjogIiAu ICRzZWxmLT57X3BnX3ZlcnNpb259IC4gIlxuIgogCSAgaWYgJHNlbGYtPntfcGdfdmVyc2lvbn07 CkBAIC01NTMsNyArNTUzLDcgQEAgc3ViIGluZm8KIAlwcmludCAkZmggIkxvZyBmaWxlOiAiIC4g JHNlbGYtPmxvZ2ZpbGUgLiAiXG4iOwogCXByaW50ICRmaCAiSW5zdGFsbCBQYXRoOiAiLCAkc2Vs Zi0+e19pbnN0YWxsX3BhdGh9IC4gIlxuIgogCSAgaWYgJHNlbGYtPntfaW5zdGFsbF9wYXRofTsK LQljbG9zZSAkZmggb3IgZGllOworCWNsb3NlICRmaCBvciBjcm9hazsKIAlyZXR1cm4gJF9pbmZv OwogfQogCkBAIC01ODMsNyArNTgzLDcgQEAgc3ViIHNldF9yZXBsaWNhdGlvbl9jb25mCiAJJHNl bGYtPmhvc3QgZXEgJHRlc3RfcGdob3N0CiAJICBvciBjcm9hayAic2V0X3JlcGxpY2F0aW9uX2Nv bmYgb25seSB3b3JrcyB3aXRoIHRoZSBkZWZhdWx0IGhvc3QiOwogCi0Jb3BlbiBteSAkaGJhLCAn Pj4nLCAiJHBnZGF0YS9wZ19oYmEuY29uZiIgb3IgZGllICQhOworCW9wZW4gbXkgJGhiYSwgJz4+ JywgIiRwZ2RhdGEvcGdfaGJhLmNvbmYiIG9yIGNyb2FrICQhOwogCXByaW50ICRoYmEKIAkgICJc biMgQWxsb3cgcmVwbGljYXRpb24gKHNldCB1cCBieSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVy LnBtKVxuIjsKIAlpZiAoJFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOjp3aW5kb3dzX29zCkBAIC03 MDcsNyArNzA3LDcgQEAgc3ViIGluaXQKIAlQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6c3lzdGVt X29yX2JhaWwoJEVOVntQR19SRUdSRVNTfSwKIAkJJy0tY29uZmlnLWF1dGgnLCAkcGdkYXRhLCBA eyAkcGFyYW1ze2F1dGhfZXh0cmF9IH0pOwogCi0Jb3BlbiBteSAkY29uZiwgJz4+JywgIiRwZ2Rh dGEvcG9zdGdyZXNxbC5jb25mIiBvciBkaWUgJCE7CisJb3BlbiBteSAkY29uZiwgJz4+JywgIiRw Z2RhdGEvcG9zdGdyZXNxbC5jb25mIiBvciBjcm9hayAkITsKIAlwcmludCAkY29uZiAiXG4jIEFk ZGVkIGJ5IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXIucG1cbiI7CiAJcHJpbnQgJGNvbmYgImZz eW5jID0gb2ZmXG4iOwogCXByaW50ICRjb25mICJyZXN0YXJ0X2FmdGVyX2NyYXNoID0gb2ZmXG4i OwpAQCAtNzY0LDcgKzc2NCw3IEBAIHN1YiBpbml0CiAJY2xvc2UgJGNvbmY7CiAKIAljaG1vZCgk c2VsZi0+Z3JvdXBfYWNjZXNzID8gMDY0MCA6IDA2MDAsICIkcGdkYXRhL3Bvc3RncmVzcWwuY29u ZiIpCi0JICBvciBkaWUoInVuYWJsZSB0byBzZXQgcGVybWlzc2lvbnMgZm9yICRwZ2RhdGEvcG9z dGdyZXNxbC5jb25mIik7CisJICBvciBjcm9haygidW5hYmxlIHRvIHNldCBwZXJtaXNzaW9ucyBm b3IgJHBnZGF0YS9wb3N0Z3Jlc3FsLmNvbmYiKTsKIAogCSRzZWxmLT5zZXRfcmVwbGljYXRpb25f Y29uZiBpZiAkcGFyYW1ze2FsbG93c19zdHJlYW1pbmd9OwogCSRzZWxmLT5lbmFibGVfYXJjaGl2 aW5nIGlmICRwYXJhbXN7aGFzX2FyY2hpdmluZ307CkBAIC03OTMsNyArNzkzLDcgQEAgc3ViIGFw cGVuZF9jb25mCiAJUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM6OmFwcGVuZF90b19maWxlKCRjb25m ZmlsZSwgJHN0ciAuICJcbiIpOwogCiAJY2htb2QoJHNlbGYtPmdyb3VwX2FjY2VzcygpID8gMDY0 MCA6IDA2MDAsICRjb25mZmlsZSkKLQkgIG9yIGRpZSgidW5hYmxlIHRvIHNldCBwZXJtaXNzaW9u cyBmb3IgJGNvbmZmaWxlIik7CisJICBvciBjcm9haygidW5hYmxlIHRvIHNldCBwZXJtaXNzaW9u cyBmb3IgJGNvbmZmaWxlIik7CiAKIAlyZXR1cm47CiB9CkBAIC04MzksNyArODM5LDcgQEAgc3Vi IGFkanVzdF9jb25mCiAJY2xvc2UgJGZoOwogCiAJY2htb2QoJHNlbGYtPmdyb3VwX2FjY2Vzcygp ID8gMDY0MCA6IDA2MDAsICRjb25mZmlsZSkKLQkgIG9yIGRpZSgidW5hYmxlIHRvIHNldCBwZXJt aXNzaW9ucyBmb3IgJGNvbmZmaWxlIik7CisJICBvciBjcm9haygidW5hYmxlIHRvIHNldCBwZXJt aXNzaW9ucyBmb3IgJGNvbmZmaWxlIik7CiB9CiAKID1wb2QKQEAgLTk5NSw3ICs5OTUsNyBAQCBz dWIgaW5pdF9mcm9tX2JhY2t1cAogCX0KIAllbHNpZiAoZGVmaW5lZCAkcGFyYW1ze3Rhcl9wcm9n cmFtfSkKIAl7Ci0JCW1rZGlyKCRkYXRhX3BhdGgpIHx8IGRpZSAibWtkaXIgJGRhdGFfcGF0aDog JCEiOworCQlta2RpcigkZGF0YV9wYXRoKSB8fCBjcm9hayAibWtkaXIgJGRhdGFfcGF0aDogJCEi OwogCQlQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6c3lzdGVtX29yX2JhaWwoCiAJCQkkcGFyYW1z e3Rhcl9wcm9ncmFtfSwKIAkJCSd4ZicgPT4gJGJhY2t1cF9wYXRoIC4gJy9iYXNlLnRhcicsCkBA IC0xMDA3LDcgKzEwMDcsNyBAQCBzdWIgaW5pdF9mcm9tX2JhY2t1cAogCiAJCSMgV2UgbmVlZCB0 byBnZW5lcmF0ZSBhIHRhYmxlc3BhY2VfbWFwIGZpbGUuCiAJCW9wZW4obXkgJHRzbWFwLCAiPiIs ICIkZGF0YV9wYXRoL3RhYmxlc3BhY2VfbWFwIikKLQkJICB8fCBkaWUgIiRkYXRhX3BhdGgvdGFi bGVzcGFjZV9tYXA6ICQhIjsKKwkJICB8fCBjcm9hayAiJGRhdGFfcGF0aC90YWJsZXNwYWNlX21h cDogJCEiOwogCiAJCSMgRXh0cmFjdCB0YXJmaWxlcyBhbmQgYWRkIHRhYmxlc3BhY2VfbWFwIGVu dHJpZXMKIAkJbXkgQHRzdGFycyA9IGdyZXAgeyAvXlxkKy50YXIvIH0KQEAgLTEwMTcsMTIgKzEw MTcsMTIgQEAgc3ViIGluaXRfZnJvbV9iYWNrdXAKIAkJCW15ICR0c29pZCA9ICR0c3RhcjsKIAkJ CSR0c29pZCA9fiBzL1wudGFyJC8vOwogCi0JCQlkaWUgIm5vIHRhYmxlc3BhY2UgbWFwcGluZyBm b3IgJHRzdGFyIgorCQkJY3JvYWsgIm5vIHRhYmxlc3BhY2UgbWFwcGluZyBmb3IgJHRzdGFyIgog CQkJICBpZiAhZXhpc3RzICRwYXJhbXN7dGFibGVzcGFjZV9tYXB9CiAJCQkgIHx8ICFleGlzdHMg JHBhcmFtc3t0YWJsZXNwYWNlX21hcH17JHRzb2lkfTsKIAkJCW15ICRuZXdkaXIgPSAkcGFyYW1z e3RhYmxlc3BhY2VfbWFwfXskdHNvaWR9OwogCi0JCQlta2RpcigkbmV3ZGlyKSB8fCBkaWUgIm1r ZGlyICRuZXdkaXI6ICQhIjsKKwkJCW1rZGlyKCRuZXdkaXIpIHx8IGNyb2FrICJta2RpciAkbmV3 ZGlyOiAkISI7CiAJCQlQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6c3lzdGVtX29yX2JhaWwoCiAJ CQkJJHBhcmFtc3t0YXJfcHJvZ3JhbX0sCiAJCQkJJ3hmJyA9PiAkYmFja3VwX3BhdGggLiAnLycg LiAkdHN0YXIsCkBAIC0xMDYxLDEyICsxMDYxLDEyIEBAIHN1YiBpbml0X2Zyb21fYmFja3VwCiAJ CXsKIAkJCSMgV2UgbmVlZCB0byBnZW5lcmF0ZSBhIHRhYmxlc3BhY2VfbWFwIGZpbGUuCiAJCQlv cGVuKG15ICR0c21hcCwgIj4iLCAiJGRhdGFfcGF0aC90YWJsZXNwYWNlX21hcCIpCi0JCQkgIHx8 IGRpZSAiJGRhdGFfcGF0aC90YWJsZXNwYWNlX21hcDogJCEiOworCQkJICB8fCBjcm9hayAiJGRh dGFfcGF0aC90YWJsZXNwYWNlX21hcDogJCEiOwogCiAJCQkjIE5vdyB1c2UgdGhlIGxpc3Qgb2Yg dGFibGVzcGFjZSBsaW5rcyB0byBjb3B5IGVhY2ggdGFibGVzcGFjZS4KIAkJCWZvciBteSAkdHNv aWQgKEB0c29pZHMpCiAJCQl7Ci0JCQkJZGllICJubyB0YWJsZXNwYWNlIG1hcHBpbmcgZm9yICR0 c29pZCIKKwkJCQljcm9hayAibm8gdGFibGVzcGFjZSBtYXBwaW5nIGZvciAkdHNvaWQiCiAJCQkJ ICBpZiAhZXhpc3RzICRwYXJhbXN7dGFibGVzcGFjZV9tYXB9CiAJCQkJICB8fCAhZXhpc3RzICRw YXJhbXN7dGFibGVzcGFjZV9tYXB9eyR0c29pZH07CiAKQEAgLTEwODMsNyArMTA4Myw3IEBAIHN1 YiBpbml0X2Zyb21fYmFja3VwCiAJCQljbG9zZSgkdHNtYXApOwogCQl9CiAJfQotCWNobW9kKDA3 MDAsICRkYXRhX3BhdGgpIG9yIGRpZSAkITsKKwljaG1vZCgwNzAwLCAkZGF0YV9wYXRoKSBvciBj cm9hayAkITsKIAogCSMgQmFzZSBjb25maWd1cmF0aW9uIGZvciB0aGlzIG5vZGUKIAkkc2VsZi0+ YXBwZW5kX2NvbmYoCkBAIC0xOTA2LDcgKzE5MDYsNyBAQCBzdWIgY2FuX2JpbmQKIAlteSAkcGFk ZHIgPSBzb2NrYWRkcl9pbigkcG9ydCwgJGlhZGRyKTsKIAogCXNvY2tldChTT0NLLCBQRl9JTkVU LCBTT0NLX1NUUkVBTSwgMCkKLQkgIG9yIGRpZSAic29ja2V0IGZhaWxlZDogJCEiOworCSAgb3Ig Y3JvYWsgInNvY2tldCBmYWlsZWQ6ICQhIjsKIAogCSMgQXMgaW4gcG9zdG1hc3RlciwgZG9uJ3Qg dXNlIFNPX1JFVVNFQUREUiBvbiBXaW5kb3dzCiAJc2V0c29ja29wdChTT0NLLCBTT0xfU09DS0VU LCBTT19SRVVTRUFERFIsIHBhY2soImwiLCAxKSkKQEAgLTE5MjQsOSArMTkyNCw5IEBAIHN1YiBf cmVzZXJ2ZV9wb3J0CiAJIyBvcGVuIGluIHJ3IG1vZGUgc28gd2UgZG9uJ3QgaGF2ZSB0byByZW9w ZW4gaXQgYW5kIGxvc2UgdGhlIGxvY2sKIAlteSAkZmlsZW5hbWUgPSAiJHBvcnRkaXIvJHBvcnQu cnN2IjsKIAlzeXNvcGVuKG15ICRwb3J0ZmlsZSwgJGZpbGVuYW1lLCBPX1JEV1IgfCBPX0NSRUFU KQotCSAgfHwgZGllICJvcGVuaW5nIHBvcnQgZmlsZSAkZmlsZW5hbWU6ICQhIjsKKwkgIHx8IGNy b2FrICJvcGVuaW5nIHBvcnQgZmlsZSAkZmlsZW5hbWU6ICQhIjsKIAkjIHRha2UgYW4gZXhjbHVz aXZlIGxvY2sgdG8gYXZvaWQgY29uY3VycmVudCBhY2Nlc3MKLQlmbG9jaygkcG9ydGZpbGUsIExP Q0tfRVgpIHx8IGRpZSAibG9ja2luZyBwb3J0IGZpbGUgJGZpbGVuYW1lOiAkISI7CisJZmxvY2so JHBvcnRmaWxlLCBMT0NLX0VYKSB8fCBjcm9hayAibG9ja2luZyBwb3J0IGZpbGUgJGZpbGVuYW1l OiAkISI7CiAJIyBzZWUgaWYgc29tZW9uZSBlbHNlIGhhcyBvciBoYWQgYSByZXNlcnZhdGlvbiBv ZiB0aGlzIHBvcnQKIAlteSAkcGlkID0gPCRwb3J0ZmlsZT4gfHwgIjAiOwogCWNob21wICRwaWQ7 CkBAIC0xOTM1LDE2ICsxOTM1LDE2IEBAIHN1YiBfcmVzZXJ2ZV9wb3J0CiAJCWlmIChraWxsIDAs ICRwaWQpCiAJCXsKIAkJCSMgcHJvY2VzcyBleGlzdHMgYW5kIGlzIG93bmVkIGJ5IHVzLCBzbyB3 ZSBjYW4ndCByZXNlcnZlIHRoaXMgcG9ydAotCQkJZmxvY2soJHBvcnRmaWxlLCBMT0NLX1VOKSB8 fCBkaWUgJCE7CisJCQlmbG9jaygkcG9ydGZpbGUsIExPQ0tfVU4pIHx8IGNyb2FrICQhOwogCQkJ Y2xvc2UoJHBvcnRmaWxlKTsKIAkJCXJldHVybiAwOwogCQl9CiAJfQogCSMgQWxsIGdvb2QsIGdv IGFoZWFkIGFuZCByZXNlcnZlIHRoZSBwb3J0Ci0Jc2VlaygkcG9ydGZpbGUsIDAsIFNFRUtfU0VU KSB8fCBkaWUgJCE7CisJc2VlaygkcG9ydGZpbGUsIDAsIFNFRUtfU0VUKSB8fCBjcm9hayAkITsK IAkjIHByaW50IHRoZSBwaWQgd2l0aCBhIGZpeGVkIHdpZHRoIHNvIHdlIGRvbid0IGxlYXZlIGFu eSB0cmFpbGluZyBqdW5rCiAJcHJpbnQgJHBvcnRmaWxlIHNwcmludGYoIiUxMGRcbiIsICQkKTsK LQlmbG9jaygkcG9ydGZpbGUsIExPQ0tfVU4pIHx8IGRpZSAkITsKKwlmbG9jaygkcG9ydGZpbGUs IExPQ0tfVU4pIHx8IGNyb2FrICQhOwogCWNsb3NlKCRwb3J0ZmlsZSk7CiAJcHVzaChAcG9ydF9y ZXNlcnZhdGlvbl9maWxlcywgJGZpbGVuYW1lKTsKIAlyZXR1cm4gMTsKQEAgLTIyNDYsMTMgKzIy NDYsMTMgQEAgc3ViIHBzcWwKIAogCQkJIyBJUEM6OlJ1bjo6cnVuIHRocmV3IGFuIGV4Y2VwdGlv bi4gcmUtdGhyb3cgdW5sZXNzIGl0J3MgYQogCQkJIyB0aW1lb3V0LCB3aGljaCB3ZSdsbCBoYW5k bGUgYnkgdGVzdGluZyBpc19leHBpcmVkCi0JCQlkaWUgJGV4Y19zYXZlCisJCQljcm9hayAkZXhj X3NhdmUKIAkJCSAgaWYgKGJsZXNzZWQoJGV4Y19zYXZlKQogCQkJCXx8ICRleGNfc2F2ZSAhfiAv XlxRJHRpbWVvdXRfZXhjZXB0aW9uXEUvKTsKIAogCQkJJHJldCA9IHVuZGVmOwogCi0JCQlkaWUg IkdvdCB0aW1lb3V0IGV4Y2VwdGlvbiAnJGV4Y19zYXZlJyBidXQgdGltZXIgbm90IGV4cGlyZWQ/ ISIKKwkJCWNyb2FrICJHb3QgdGltZW91dCBleGNlcHRpb24gJyRleGNfc2F2ZScgYnV0IHRpbWVy IG5vdCBleHBpcmVkPyEiCiAJCQkgIHVubGVzcyAkdGltZW91dC0+aXNfZXhwaXJlZDsKIAogCQkJ aWYgKGRlZmluZWQoJHBhcmFtc3t0aW1lZF9vdXR9KSkKQEAgLTIyNjEsNyArMjI2MSw3IEBAIHN1 YiBwc3FsCiAJCQl9CiAJCQllbHNlCiAJCQl7Ci0JCQkJZGllICJwc3FsIHRpbWVkIG91dDogc3Rk ZXJyOiAnJCRzdGRlcnInXG4iCisJCQkJY3JvYWsgInBzcWwgdGltZWQgb3V0OiBzdGRlcnI6ICck JHN0ZGVycidcbiIKIAkJCQkgIC4gIndoaWxlIHJ1bm5pbmcgJ0Bwc3FsX3BhcmFtcyciOwogCQkJ fQogCQl9CkBAIC0yMjg0LDcgKzIyODQsNyBAQCBzdWIgcHNxbAogCWlmIChkZWZpbmVkICRyZXQp CiAJewogCQlteSAkY29yZSA9ICRyZXQgJiAxMjggPyAiIChjb3JlIGR1bXBlZCkiIDogIiI7Ci0J CWRpZSAicHNxbCBleGl0ZWQgd2l0aCBzaWduYWwgIgorCQljcm9hayAicHNxbCBleGl0ZWQgd2l0 aCBzaWduYWwgIgogCQkgIC4gKCRyZXQgJiAxMjcpCiAJCSAgLiAiJGNvcmU6ICckJHN0ZGVycicg d2hpbGUgcnVubmluZyAnQHBzcWxfcGFyYW1zJyIKIAkJICBpZiAkcmV0ICYgMTI3OwpAQCAtMjI5 MywxNCArMjI5MywxNCBAQCBzdWIgcHNxbAogCiAJaWYgKCRyZXQgJiYgJHBhcmFtc3tvbl9lcnJv cl9kaWV9KQogCXsKLQkJZGllICJwc3FsIGVycm9yOiBzdGRlcnI6ICckJHN0ZGVycidcbndoaWxl IHJ1bm5pbmcgJ0Bwc3FsX3BhcmFtcyciCisJCWNyb2FrICJwc3FsIGVycm9yOiBzdGRlcnI6ICck JHN0ZGVycidcbndoaWxlIHJ1bm5pbmcgJ0Bwc3FsX3BhcmFtcyciCiAJCSAgaWYgJHJldCA9PSAx OwotCQlkaWUgImNvbm5lY3Rpb24gZXJyb3I6ICckJHN0ZGVycidcbndoaWxlIHJ1bm5pbmcgJ0Bw c3FsX3BhcmFtcyciCisJCWNyb2FrICJjb25uZWN0aW9uIGVycm9yOiAnJCRzdGRlcnInXG53aGls ZSBydW5uaW5nICdAcHNxbF9wYXJhbXMnIgogCQkgIGlmICRyZXQgPT0gMjsKLQkJZGllCisJCWNy b2FrCiAJCSAgImVycm9yIHJ1bm5pbmcgU1FMOiAnJCRzdGRlcnInXG53aGlsZSBydW5uaW5nICdA cHNxbF9wYXJhbXMnIHdpdGggc3FsICckc3FsJyIKIAkJICBpZiAkcmV0ID09IDM7Ci0JCWRpZSAi cHNxbCByZXR1cm5zICRyZXQ6ICckJHN0ZGVycidcbndoaWxlIHJ1bm5pbmcgJ0Bwc3FsX3BhcmFt cyciOworCQljcm9hayAicHNxbCByZXR1cm5zICRyZXQ6ICckJHN0ZGVycidcbndoaWxlIHJ1bm5p bmcgJ0Bwc3FsX3BhcmFtcyciOwogCX0KIAogCWlmICh3YW50YXJyYXkpCkBAIC0yNTAxLDcgKzI1 MDEsNyBAQCBzdWIgX3BnYmVuY2hfbWFrZV9maWxlcwogCQkJaWYgKC1lICRmaWxlbmFtZSkKIAkJ CXsKIAkJCQlvaygwLCAiJGZpbGVuYW1lIG11c3Qgbm90IGFscmVhZHkgZXhpc3QiKTsKLQkJCQl1 bmxpbmsgJGZpbGVuYW1lIG9yIGRpZSAiY2Fubm90IHVubGluayAkZmlsZW5hbWU6ICQhIjsKKwkJ CQl1bmxpbmsgJGZpbGVuYW1lIG9yIGNyb2FrICJjYW5ub3QgdW5saW5rICRmaWxlbmFtZTogJCEi OwogCQkJfQogCQkJUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM6OmFwcGVuZF90b19maWxlKCRmaWxl bmFtZSwgJCRmaWxlc3skZm59KTsKIAkJfQpAQCAtMzEyMyw4ICszMTIzLDggQEAgc3ViIHdyaXRl X3dhbAogCW15ICRwYXRoID0KIAkgIHNwcmludGYoIiVzL3BnX3dhbC8lMDhYJTA4WCUwOFgiLCAk c2VsZi0+ZGF0YV9kaXIsICR0bGksIDAsICRzZWdtZW50KTsKIAotCW9wZW4gbXkgJGZoLCAiKzw6 cmF3IiwgJHBhdGggb3IgZGllICJjb3VsZCBub3Qgb3BlbiBXQUwgc2VnbWVudCAkcGF0aCI7Ci0J c2VlaygkZmgsICRvZmZzZXQsIFNFRUtfU0VUKSBvciBkaWUgImNvdWxkIG5vdCBzZWVrIFdBTCBz ZWdtZW50ICRwYXRoIjsKKwlvcGVuIG15ICRmaCwgIis8OnJhdyIsICRwYXRoIG9yIGNyb2FrICJj b3VsZCBub3Qgb3BlbiBXQUwgc2VnbWVudCAkcGF0aCI7CisJc2VlaygkZmgsICRvZmZzZXQsIFNF RUtfU0VUKSBvciBjcm9hayAiY291bGQgbm90IHNlZWsgV0FMIHNlZ21lbnQgJHBhdGgiOwogCXBy aW50ICRmaCAkZGF0YTsKIAljbG9zZSAkZmg7CiAKQEAgLTMyODgsNyArMzI4OCw3IEBAIHN1YiB3 YWl0X2Zvcl9ldmVudAogCQlTRUxFQ1QgY291bnQoKikgPiAwIEZST00gcGdfc3RhdF9hY3Rpdml0 eQogCQlXSEVSRSBiYWNrZW5kX3R5cGUgPSAnJGJhY2tlbmRfdHlwZScgQU5EIHdhaXRfZXZlbnQg PSAnJHdhaXRfZXZlbnRfbmFtZScKIAldKQotCSAgb3IgZGllCisJICBvciBjcm9hawogCSAgcXEo dGltZWQgb3V0IHdoZW4gd2FpdGluZyBmb3IgJGJhY2tlbmRfdHlwZSB0byByZWFjaCB3YWl0IGV2 ZW50ICckd2FpdF9ldmVudF9uYW1lJyk7CiAKIAlyZXR1cm47CkBAIC0zMzI1LDcgKzMzMjUsNyBA QCBwb2xsX3F1ZXJ5X3VudGlsIHRpbWVvdXQuCiAKIFJlcXVpcmVzIHRoYXQgdGhlICdwb3N0Z3Jl cycgZGIgZXhpc3RzIGFuZCBpcyBhY2Nlc3NpYmxlLgogCi1UaGlzIGlzIG5vdCBhIHRlc3QuIEl0 IGRpZSgpcyBvbiBmYWlsdXJlLgorVGhpcyBpcyBub3QgYSB0ZXN0LiBJdCBjcm9haygpcyBvbiBm YWlsdXJlLgogCiA9Y3V0CiAKQEAgLTM0MDksNyArMzQwOSw3IEBAIFRoZSByZXBsaWNhdGlvbiBj b25uZWN0aW9uIG11c3QgYmUgaW4gYSBzdHJlYW1pbmcgc3RhdGUuCiAKIFJlcXVpcmVzIHRoYXQg dGhlICdwb3N0Z3JlcycgZGIgZXhpc3RzIGFuZCBpcyBhY2Nlc3NpYmxlLgogCi1UaGlzIGlzIG5v dCBhIHRlc3QuIEl0IGRpZSgpcyBvbiBmYWlsdXJlLgorVGhpcyBpcyBub3QgYSB0ZXN0LiBJdCBj cm9haygpcyBvbiBmYWlsdXJlLgogCiA9Y3V0CiAKQEAgLTM0MjksNyArMzQyOSw3IEBAIGJlICdy ZXN0YXJ0JyBvciAnY29uZmlybWVkX2ZsdXNoJy4KIAogUmVxdWlyZXMgdGhhdCB0aGUgJ3Bvc3Rn cmVzJyBkYiBleGlzdHMgYW5kIGlzIGFjY2Vzc2libGUuCiAKLVRoaXMgaXMgbm90IGEgdGVzdC4g SXQgZGllKClzIG9uIGZhaWx1cmUuCitUaGlzIGlzIG5vdCBhIHRlc3QuIEl0IGNyb2FrKClzIG9u IGZhaWx1cmUuCiAKIElmIHRoZSBzbG90IGlzIG5vdCBhY3RpdmUsIHdpbGwgdGltZSBvdXQgYWZ0 ZXIgcG9sbF9xdWVyeV91bnRpbCdzIHRpbWVvdXQuCiAKQEAgLTM0ODQsNyArMzQ4NCw3IEBAIGNy ZWF0aW5nIGEgbmV3IHN1YnNjcmlwdGlvbi4KIElmIHRoZXJlIGlzIG5vIGFjdGl2ZSByZXBsaWNh dGlvbiBjb25uZWN0aW9uIGZyb20gdGhpcyBwZWVyLCB3YWl0IHVudGlsCiBwb2xsX3F1ZXJ5X3Vu dGlsIHRpbWVvdXQuCiAKLVRoaXMgaXMgbm90IGEgdGVzdC4gSXQgZGllKClzIG9uIGZhaWx1cmUu CitUaGlzIGlzIG5vdCBhIHRlc3QuIEl0IGNyb2FrKClzIG9uIGZhaWx1cmUuCiAKID1jdXQKIApA QCAtMzYyNCw3ICszNjI0LDcgQEAgRGlzYWxsb3dzIHBnX3JlY3Zsb2dpY2FsIGZyb20gaW50ZXJu YWxseSByZXRyeWluZyBvbiBlcnJvciBieSBwYXNzaW5nIC0tbm8tbG9vcC4KIAogUGx1Z2luIG9w dGlvbnMgYXJlIHBhc3NlZCBhcyBhZGRpdGlvbmFsIGtleXdvcmQgYXJndW1lbnRzLgogCi1JZiBj YWxsZWQgaW4gc2NhbGFyIGNvbnRleHQsIHJldHVybnMgc3Rkb3V0LCBhbmQgZGllKClzIG9uIHRp bWVvdXQgb3Igbm9uemVybyByZXR1cm4uCitJZiBjYWxsZWQgaW4gc2NhbGFyIGNvbnRleHQsIHJl dHVybnMgc3Rkb3V0LCBhbmQgY3JvYWsoKXMgb24gdGltZW91dCBvciBub256ZXJvIHJldHVybi4K IAogSWYgY2FsbGVkIGluIGFycmF5IGNvbnRleHQsIHJldHVybnMgYSB0dXBsZSBvZiAocmV0dmFs LCBzdGRvdXQsIHN0ZGVyciwgdGltZW91dCkuCiB0aW1lb3V0IGlzIHRoZSBJUEM6OlJ1bjo6VGlt ZW91dCBvYmplY3Qgd2hvc2UgaXNfZXhwaXJlZCBtZXRob2QgY2FuIGJlIHRlc3RlZApAQCAtMzY4 MCwxNSArMzY4MCwxNSBAQCBzdWIgcGdfcmVjdmxvZ2ljYWxfdXB0bwogCiAJCQkjIElQQzo6UnVu OjpydW4gdGhyZXcgYW4gZXhjZXB0aW9uLiByZS10aHJvdyB1bmxlc3MgaXQncyBhCiAJCQkjIHRp bWVvdXQsIHdoaWNoIHdlJ2xsIGhhbmRsZSBieSB0ZXN0aW5nIGlzX2V4cGlyZWQKLQkJCWRpZSAk ZXhjX3NhdmUKKwkJCWNyb2FrICRleGNfc2F2ZQogCQkJICBpZiAoYmxlc3NlZCgkZXhjX3NhdmUp IHx8ICRleGNfc2F2ZSAhfiBxci8kdGltZW91dF9leGNlcHRpb24vKTsKIAogCQkJJHJldCA9IHVu ZGVmOwogCi0JCQlkaWUgIkdvdCB0aW1lb3V0IGV4Y2VwdGlvbiAnJGV4Y19zYXZlJyBidXQgdGlt ZXIgbm90IGV4cGlyZWQ/ISIKKwkJCWNyb2FrICJHb3QgdGltZW91dCBleGNlcHRpb24gJyRleGNf c2F2ZScgYnV0IHRpbWVyIG5vdCBleHBpcmVkPyEiCiAJCQkgIHVubGVzcyAkdGltZW91dC0+aXNf ZXhwaXJlZDsKIAotCQkJZGllCisJCQljcm9hawogCQkJICAiJGV4Y19zYXZlIHdhaXRpbmcgZm9y IGVuZHBvcyAkZW5kcG9zIHdpdGggc3Rkb3V0ICckc3Rkb3V0Jywgc3RkZXJyICckc3RkZXJyJyIK IAkJCSAgdW5sZXNzIHdhbnRhcnJheTsKIAkJfQpAQCAtMzcwMCw3ICszNzAwLDcgQEAgc3ViIHBn X3JlY3Zsb2dpY2FsX3VwdG8KIAl9CiAJZWxzZQogCXsKLQkJZGllCisJCWNyb2FrCiAJCSAgInBn X3JlY3Zsb2dpY2FsIGV4aXRlZCB3aXRoIGNvZGUgJyRyZXQnLCBzdGRvdXQgJyRzdGRvdXQnIGFu ZCBzdGRlcnIgJyRzdGRlcnInIgogCQkgIGlmICRyZXQ7CiAJCXJldHVybiAkc3Rkb3V0OwpAQCAt MzcyNSwxNCArMzcyNSwxNCBAQCBzdWIgY29ycnVwdF9wYWdlX2NoZWNrc3VtCiAJbXkgJHBnZGF0 YSA9ICRzZWxmLT5kYXRhX2RpcjsKIAlteSAkcGFnZWhlYWRlcjsKIAotCW9wZW4gbXkgJGZoLCAn KzwnLCAiJHBnZGF0YS8kZmlsZSIgb3IgZGllICJvcGVuKCRmaWxlKSBmYWlsZWQ6ICQhIjsKKwlv cGVuIG15ICRmaCwgJys8JywgIiRwZ2RhdGEvJGZpbGUiIG9yIGNyb2FrICJvcGVuKCRmaWxlKSBm YWlsZWQ6ICQhIjsKIAliaW5tb2RlICRmaDsKLQlzeXNzZWVrKCRmaCwgJHBhZ2Vfb2Zmc2V0LCAw KSBvciBkaWUgInN5c3NlZWsgZmFpbGVkOiAkISI7Ci0Jc3lzcmVhZCgkZmgsICRwYWdlaGVhZGVy LCAyNCkgb3IgZGllICJzeXNyZWFkIGZhaWxlZDogJCEiOworCXN5c3NlZWsoJGZoLCAkcGFnZV9v ZmZzZXQsIDApIG9yIGNyb2FrICJzeXNzZWVrIGZhaWxlZDogJCEiOworCXN5c3JlYWQoJGZoLCAk cGFnZWhlYWRlciwgMjQpIG9yIGNyb2FrICJzeXNyZWFkIGZhaWxlZDogJCEiOwogCSMgVGhpcyBp bnZlcnRzIHRoZSBwZF9jaGVja3N1bSBmaWVsZCAob25seSk7IHNlZSBzdHJ1Y3QgUGFnZUhlYWRl ckRhdGEKIAkkcGFnZWhlYWRlciBePSAiXDBcMFwwXDBcMFwwXDBcMFx4ZmZceGZmIjsKLQlzeXNz ZWVrKCRmaCwgJHBhZ2Vfb2Zmc2V0LCAwKSBvciBkaWUgInN5c3NlZWsgZmFpbGVkOiAkISI7Ci0J c3lzd3JpdGUoJGZoLCAkcGFnZWhlYWRlcikgb3IgZGllICJzeXN3cml0ZSBmYWlsZWQ6ICQhIjsK KwlzeXNzZWVrKCRmaCwgJHBhZ2Vfb2Zmc2V0LCAwKSBvciBjcm9hayAic3lzc2VlayBmYWlsZWQ6 ICQhIjsKKwlzeXN3cml0ZSgkZmgsICRwYWdlaGVhZGVyKSBvciBjcm9hayAic3lzd3JpdGUgZmFp bGVkOiAkISI7CiAJY2xvc2UgJGZoOwogCiAJcmV0dXJuOwpAQCAtMzc2MCw3ICszNzYwLDcgQEAg c3ViIGxvZ19zdGFuZGJ5X3NuYXBzaG90CiAJCVNFTEVDVCByZXN0YXJ0X2xzbiBJUyBOT1QgTlVM TAogCQlGUk9NIHBnX2NhdGFsb2cucGdfcmVwbGljYXRpb25fc2xvdHMgV0hFUkUgc2xvdF9uYW1l ID0gJyRzbG90X25hbWUnCiAJXSkKLQkgIG9yIGRpZQorCSAgb3IgY3JvYWsKIAkgICJ0aW1lZCBv dXQgd2FpdGluZyBmb3IgbG9naWNhbCBzbG90IHRvIGNhbGN1bGF0ZSBpdHMgcmVzdGFydF9sc24i OwogCiAJIyBUaGVuIGFycmFuZ2UgZm9yIHRoZSB4bF9ydW5uaW5nX3hhY3RzIHJlY29yZCBmb3Ig d2hpY2ggdGhlIHN0YW5kYnkgaXMKQEAgLTM4MDIsNyArMzgwMiw3IEBAIHN1YiBjcmVhdGVfbG9n aWNhbF9zbG90X29uX3N0YW5kYnkKIAogCWlzKCRzZWxmLT5zbG90KCRzbG90X25hbWUpLT57J3Ns b3RfdHlwZSd9LAogCQknbG9naWNhbCcsICRzbG90X25hbWUgLiAnIG9uIHN0YW5kYnkgY3JlYXRl ZCcpCi0JICBvciBkaWUgImNvdWxkIG5vdCBjcmVhdGUgc2xvdCIgLiAkc2xvdF9uYW1lOworCSAg b3IgY3JvYWsgImNvdWxkIG5vdCBjcmVhdGUgc2xvdCIgLiAkc2xvdF9uYW1lOwogfQogCiA9cG9k CkBAIC0zODMzLDcgKzM4MzMsNyBAQCBzdWIgdmFsaWRhdGVfc2xvdF9pbmFjdGl2ZV9zaW5jZQog CQkpLAogCQkndCcsCiAJCSJsYXN0IGluYWN0aXZlIHRpbWUgZm9yIHNsb3QgJHNsb3RfbmFtZSBp cyB2YWxpZCBvbiBub2RlICRuYW1lIikKLQkgIG9yIGRpZSAiY291bGQgbm90IHZhbGlkYXRlIGNh cHR1cmVkIGluYWN0aXZlX3NpbmNlIGZvciBzbG90ICRzbG90X25hbWUiOworCSAgb3IgY3JvYWsg ImNvdWxkIG5vdCB2YWxpZGF0ZSBjYXB0dXJlZCBpbmFjdGl2ZV9zaW5jZSBmb3Igc2xvdCAkc2xv dF9uYW1lIjsKIAogCXJldHVybiAkaW5hY3RpdmVfc2luY2U7CiB9CmRpZmYgLS1naXQgYS9zcmMv dGVzdC9wZXJsL1Bvc3RncmVTUUwvVGVzdC9VdGlscy5wbSBiL3NyYy90ZXN0L3BlcmwvUG9zdGdy ZVNRTC9UZXN0L1V0aWxzLnBtCmluZGV4IDM5Zjc2YzBhYWJhLi45NDliZDIxOWE4ZCAxMDA2NDQK LS0tIGEvc3JjL3Rlc3QvcGVybC9Qb3N0Z3JlU1FML1Rlc3QvVXRpbHMucG0KKysrIGIvc3JjL3Rl c3QvcGVybC9Qb3N0Z3JlU1FML1Rlc3QvVXRpbHMucG0KQEAgLTYzNiw3ICs2MzYsNyBAQCBzdWIg cmVhZF9oZWFkX3RhaWwKIAogCXJldHVybiAoW10sIFtdKSBpZiAkbGluZV9jb3VudCA8PSAwOwog Ci0Jb3BlbiBteSAkZmgsICc8JywgJGZpbGVuYW1lIG9yIGRpZSAiY291bGRuJ3Qgb3BlbiBmaWxl OiAkZmlsZW5hbWVcbiI7CisJb3BlbiBteSAkZmgsICc8JywgJGZpbGVuYW1lIG9yIGNyb2FrICJj b3VsZG4ndCBvcGVuIGZpbGU6ICRmaWxlbmFtZVxuIjsKIAlteSBAbGluZXMgPSA8JGZoPjsKIAlj bG9zZSAkZmg7CiAKQEAgLTcwMSw3ICs3MDEsNyBAQCBzdWIgY2hlY2tfbW9kZV9yZWN1cnNpdmUK IAkJCQkJfQogCQkJCQllbHNlCiAJCQkJCXsKLQkJCQkJCWRpZSAkbXNnOworCQkJCQkJY3JvYWsg JG1zZzsKIAkJCQkJfQogCQkJCX0KIApAQCAtNzQwLDcgKzc0MCw3IEBAIHN1YiBjaGVja19tb2Rl X3JlY3Vyc2l2ZQogCQkJCSMgRWxzZSBzb21ldGhpbmcgd2UgY2FuJ3QgaGFuZGxlCiAJCQkJZWxz ZQogCQkJCXsKLQkJCQkJZGllICJ1bmtub3duIGZpbGUgdHlwZSBmb3IgJEZpbGU6OkZpbmQ6Om5h bWUiOworCQkJCQljcm9hayAidW5rbm93biBmaWxlIHR5cGUgZm9yICRGaWxlOjpGaW5kOjpuYW1l IjsKIAkJCQl9CiAJCQl9CiAJCX0sCkBAIC03NzIsNyArNzcyLDcgQEAgc3ViIGNobW9kX3JlY3Vy c2l2ZQogCQkJCQljaG1vZCgKIAkJCQkJCVNfSVNESVIoJGZpbGVfc3RhdC0+bW9kZSkgPyAkZGly X21vZGUgOiAkZmlsZV9tb2RlLAogCQkJCQkJJEZpbGU6OkZpbmQ6Om5hbWUKLQkJCQkJKSBvciBk aWUgInVuYWJsZSB0byBjaG1vZCAkRmlsZTo6RmluZDo6bmFtZSI7CisJCQkJCSkgb3IgY3JvYWsg InVuYWJsZSB0byBjaG1vZCAkRmlsZTo6RmluZDo6bmFtZSI7CiAJCQkJfQogCQkJfQogCQl9LApA QCAtNzk4LDExICs3OTgsMTEgQEAgc3ViIHNjYW5fc2VydmVyX2hlYWRlcgogCW15ICRyZXN1bHQg PSBJUEM6OlJ1bjo6cnVuIFsgJ3BnX2NvbmZpZycsICctLWluY2x1ZGVkaXItc2VydmVyJyBdLAog CSAgJz4nID0+IFwkc3Rkb3V0LAogCSAgJzI+JyA9PiBcJHN0ZGVycgotCSAgb3IgZGllICJjb3Vs ZCBub3QgZXhlY3V0ZSBwZ19jb25maWciOworCSAgb3IgY3JvYWsgImNvdWxkIG5vdCBleGVjdXRl IHBnX2NvbmZpZyI7CiAJY2hvbXAoJHN0ZG91dCk7CiAJJHN0ZG91dCA9fiBzL1xyJC8vOwogCi0J b3BlbiBteSAkaGVhZGVyX2gsICc8JywgIiRzdGRvdXQvJGhlYWRlcl9wYXRoIiBvciBkaWUgIiQh IjsKKwlvcGVuIG15ICRoZWFkZXJfaCwgJzwnLCAiJHN0ZG91dC8kaGVhZGVyX3BhdGgiIG9yIGNy b2FrICIkISI7CiAKIAlteSBAbWF0Y2ggPSB1bmRlZjsKIAl3aGlsZSAoPCRoZWFkZXJfaD4pCkBA IC04MTYsNyArODE2LDcgQEAgc3ViIHNjYW5fc2VydmVyX2hlYWRlcgogCX0KIAogCWNsb3NlICRo ZWFkZXJfaDsKLQlkaWUgImNvdWxkIG5vdCBmaW5kIG1hdGNoIGluIGhlYWRlciAkaGVhZGVyX3Bh dGhcbiIKKwljcm9hayAiY291bGQgbm90IGZpbmQgbWF0Y2ggaW4gaGVhZGVyICRoZWFkZXJfcGF0 aFxuIgogCSAgdW5sZXNzIEBtYXRjaDsKIAlyZXR1cm4gQG1hdGNoOwogfQpAQCAtODM3LDExICs4 MzcsMTEgQEAgc3ViIGNoZWNrX3BnX2NvbmZpZwogCW15ICRyZXN1bHQgPSBJUEM6OlJ1bjo6cnVu IFsgJ3BnX2NvbmZpZycsICctLWluY2x1ZGVkaXInIF0sCiAJICAnPicgPT4gXCRzdGRvdXQsCiAJ ICAnMj4nID0+IFwkc3RkZXJyCi0JICBvciBkaWUgImNvdWxkIG5vdCBleGVjdXRlIHBnX2NvbmZp ZyI7CisJICBvciBjcm9hayAiY291bGQgbm90IGV4ZWN1dGUgcGdfY29uZmlnIjsKIAljaG9tcCgk c3Rkb3V0KTsKIAkkc3Rkb3V0ID1+IHMvXHIkLy87CiAKLQlvcGVuIG15ICRwZ19jb25maWdfaCwg JzwnLCAiJHN0ZG91dC9wZ19jb25maWcuaCIgb3IgZGllICIkISI7CisJb3BlbiBteSAkcGdfY29u ZmlnX2gsICc8JywgIiRzdGRvdXQvcGdfY29uZmlnLmgiIG9yIGNyb2FrICIkISI7CiAJbXkgJG1h dGNoID0gKGdyZXAgeyAvXiRyZWdleHAvIH0gPCRwZ19jb25maWdfaD4pOwogCWNsb3NlICRwZ19j b25maWdfaDsKIAlyZXR1cm4gJG1hdGNoOwpAQCAtOTQ2LDEzICs5NDYsMTMgQEAgc3ViIGRpcl9z eW1saW5rCiAJCQkjIG5lZWQgc29tZSBpbmRpcmVjdGlvbiBvbiBtc3lzCiAJCQkkY21kID0gcXF7 ZWNobyAnJGNtZCcgfCBcJENPTVNQRUMgL1F9OwogCQl9Ci0JCXN5c3RlbSgkY21kKSA9PSAwIG9y IGRpZTsKKwkJc3lzdGVtKCRjbWQpID09IDAgb3IgY3JvYWs7CiAJfQogCWVsc2UKIAl7Ci0JCXN5 bWxpbmsgJG9sZG5hbWUsICRuZXduYW1lIG9yIGRpZSAkITsKKwkJc3ltbGluayAkb2xkbmFtZSwg JG5ld25hbWUgb3IgY3JvYWsgJCE7CiAJfQotCWRpZSAiTm8gJG5ld25hbWUiIHVubGVzcyAtZSAk bmV3bmFtZTsKKwljcm9hayAiTm8gJG5ld25hbWUiIHVubGVzcyAtZSAkbmV3bmFtZTsKIH0KIAog IyBMb2cgY29tbWFuZCBvdXRwdXQuIFRydW5jYXRlcyB0byBmaXJzdC9sYXN0IDMwIGxpbmVzIGlm IG92ZXIgNjAgbGluZXMuCkBAIC0xMjc0LDcgKzEyNzQsNyBAQCBzdWIgY29tbWFuZF9jaGVja3Nf YWxsCiAKIAkjIFNlZSBodHRwOi8vcGVybGRvYy5wZXJsLm9yZy9wZXJsdmFyLmh0bWwjJTI0Q0hJ TERfRVJST1IKIAlteSAkcmV0ID0gJD87Ci0JZGllICJjb21tYW5kIGV4aXRlZCB3aXRoIHNpZ25h bCAiIC4gKCRyZXQgJiAxMjcpCisJY3JvYWsgImNvbW1hbmQgZXhpdGVkIHdpdGggc2lnbmFsICIg LiAoJHJldCAmIDEyNykKIAkgIGlmICRyZXQgJiAxMjc7CiAJJHJldCA9ICRyZXQgPj4gODsKIAot LSAKMi41Mi4wCgo= --b8332a0d430b06d6a99b2841ff255f933a5baeb0d9aa6c393a8e4e253e30--