Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1th90m-00GzlA-EO for pgsql-hackers@arkaria.postgresql.org; Sun, 09 Feb 2025 15:14:21 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1th90k-00Efzn-V8 for pgsql-hackers@arkaria.postgresql.org; Sun, 09 Feb 2025 15:14:18 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1th90k-00Efzf-DB for pgsql-hackers@lists.postgresql.org; Sun, 09 Feb 2025 15:14:18 +0000 Received: from mail.postgrespro.ru ([93.174.131.139]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1th90c-004mD5-2G for pgsql-hackers@lists.postgresql.org; Sun, 09 Feb 2025 15:14:17 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mx2023; t=1739114049; bh=Wz2rYR54hhoHlzOtj4wl7VshYW3lmd/WG3NC9Z4cTQc=; h=Message-ID:Date:User-Agent:Subject:From:To:Cc:References: In-Reply-To:From; b=R2PXgJU+wCwCJL61eiJzF153lVX/R2LfQKgqwY7Kszn3K9BCqrE4/tHWT1kZecuZP t0qNONqgmllp6uo2Y9splgU7ko34gp8Jpndvcsw+uFWC6KvFyPZ966BA8j+XFteoN0 pPNPm6Cu9O5rYyDNP1YcN3IAQVjJbI/0wJO0/q8b5Xz5j2G1c2eEm1I0BMysL1LdXk F4x3gQlAP3oiTv6UXa6/WgnwzmMWH2lemWPa1alk0H4+2Vf2+WxEoCfpm3HThZy/Od BkmD2R/c4bFLRQ/l9fV+HTDs2KyFvjBK82ccsvyDTGGutFRZR851q34lIyQbHrwEv5 FrUPNJUKf347w== Received: from [10.4.12.74] (unknown [93.174.131.141]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (Client did not present a certificate) (Authenticated sender: a.rybakina@postgrespro.ru) by mail.postgrespro.ru (Postfix/587) with ESMTPSA id 61A496046E; Sun, 9 Feb 2025 18:14:09 +0300 (MSK) Content-Type: multipart/mixed; boundary="------------kvfWPdV1wNgKVxcxGE2mdZ50" Message-ID: <975a3736-a8b5-49b3-8009-4d4e86867aa1@postgrespro.ru> Date: Sun, 9 Feb 2025 18:14:09 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: pull-up subquery if JOIN-ON contains refs to upper-query From: Alena Rybakina To: PostgreSQL Hackers Cc: Ranier Vilela , Ilia Evdokimov References: <0b1f670d-b39d-4966-bf32-f0d502ebc564@postgrespro.ru> <46bc4eaf-58c5-42ab-8041-d3380a0768de@postgrespro.ru> <9b041978-06e3-4a50-8a5d-dacbb054f23e@tantorlabs.com> <8d7cbbf6-ddc0-4696-8af2-a68d740e14f2@postgrespro.ru> <6078f7e1-4b29-4b31-bd28-b84149e404e4@postgrespro.ru> Content-Language: en-US In-Reply-To: <6078f7e1-4b29-4b31-bd28-b84149e404e4@postgrespro.ru> X-KSMG-AntiPhishing: NotDetected X-KSMG-AntiSpam-Interceptor-Info: not scanned X-KSMG-AntiSpam-Status: not scanned, disabled by settings X-KSMG-AntiVirus: Kaspersky Secure Mail Gateway, version 2.1.0.7854, bases: 2025/02/09 12:20:00 #27161472 X-KSMG-AntiVirus-Status: NotDetected, skipped X-KSMG-LinksScanning: not scanned, disabled by settings X-KSMG-Message-Action: skipped X-KSMG-Rule-ID: 1 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------kvfWPdV1wNgKVxcxGE2mdZ50 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Hi! I found another example where the transformation worked incorrectly and reconsidered the idea. As for conversion of exists_sublink_to_ANY, we need to get the flattened implicit-AND list of clauses and pull out the chunks of the WHERE clause that belong to the parent query, since we are called halfway through the parent's preprocess_expression() and earlier steps of preprocess_expression() wouldn't get applied to the pulled-up stuff unless we do them here. We also do some processing for vars depending on which side the var is on - if it's in a subquery, we only need to lower its level (varlevel) because subquery will be flatted, while for other vars that belong to the parent query, we need to do preparation to pull up the sub-select into top range table. For those expressions that we couldn't assign to either list, we define newWhere and apply both cases. -- Regards, Alena Rybakina Postgres Professional --------------kvfWPdV1wNgKVxcxGE2mdZ50 Content-Type: text/x-patch; charset=UTF-8; name="v3-0001-Add-appling-the-pull-up-transformation-for-expressio.patch" Content-Disposition: attachment; filename*0="v3-0001-Add-appling-the-pull-up-transformation-for-expressio"; filename*1=".patch" Content-Transfer-Encoding: base64 RnJvbSA5ZjQyZGMwYmJlMTg5OTc1MTg5MmE2NzM1NWZlNDQ3ZDkxNzA5NmE0IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbGVuYSBSeWJha2luYSA8YS5yeWJha2luYUBwb3N0 Z3Jlc3Byby5ydT4KRGF0ZTogTW9uLCAyNyBKYW4gMjAyNSAyMjozMTo0NyArMDMwMApTdWJq ZWN0OiBbUEFUQ0hdIEFkZCBhcHBsaW5nIHRoZSBwdWxsLXVwIHRyYW5zZm9ybWF0aW9uIGZv ciBleHByZXNzaW9ucy4gV2UKIGV4YW1pbmUgYWxsIGV4cHJlc3Npb25zIGFuZCBuZWVkIHRv IGluY3JlYXNlIHRoZSB2YXJubyBvZiB2YXJzIHdoaWNoIGJlbG9uZwogdG8gc3VicXVlcnks IGJlY2F1c2UgdGhleSB3aWxsIGJlIGJlbG9uZ2VkIHRvIGFub3RoZXIgcGFydCBvZiB0aGUg cXVlcnkuIEJ1dAogd2UgbmVlZCB0byBkZWNyZWFzZSB0aGUgc3VibGV2ZWwgbnVtYmVyIGZv ciB2YXJzIHdoaWNoIGJlbG9uZyB0aGUgdXBwZXIgbGV2ZWwKIG9mIHRoZSBxdWVyeSBiZWNh dXNlIHRoZSBzdWJxdWVyeSB3aWxsIGJlIHBsYXQsIHNvIHRoZXkgd2lsbCBiZSB0aGUgc2Ft ZQogc3VibGV2ZWwgbnVtYmVyLiBUaGF0J3Mgd2h5IHdlIHNlcGFyYXRlIHN1Y2ggdmFycyBv biBsZWZ0YXJncyBhbmQgcmlnaHRhcmdzCiBsaXN0cy4gbGVmdGFyZ3MgbGlzdCBjb250YWlu IHZhcnMgYmVsb25nZWQgdG8gdXBwZXIgbGV2ZWwgcGFydCBvZiBxdWVyeSwKIHJpZ2h0YXJn cyBjb250YWluIHZhcnMgYmVsb25nZWQgdG8gc3VicXVlcnkuIG5ld1doZXJlIGxpc3QgY29u dGFpbgogZXhwcmVzc2lvbnMgZm9yIHdoaWNoIHdlIGNhbid0IGRldGVybWluZSB3aGF0IHBh cnQgb2YgcXVlcnkgdGhleSBiZWxvbmdlZCB0bywKIHByb2JhYmx5IGNvbnN0YW50cyBmcm9t IHN1YnF1ZXJ5LgoKLS0tCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zdWJzZWxlY3Qu YyAgICAgICAgfCAyNTkgKysrKysrKysrKysrKystLS0tCiBzcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL3BhcnRpdGlvbl9qb2luLm91dCAgfCAgMTIgKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvc3Vic2VsZWN0Lm91dCAgICAgICB8IDIzMiArKysrKysrKysrKysrKysrCiBz cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3VwZGF0YWJsZV92aWV3cy5vdXQgfCAgMTAgKy0K IHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3N1YnNlbGVjdC5zcWwgICAgICAgICAgICB8ICA5OSAr KysrKysrCiA1IGZpbGVzIGNoYW5nZWQsIDU1MCBpbnNlcnRpb25zKCspLCA2MiBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zdWJzZWxl Y3QuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3N1YnNlbGVjdC5jCmluZGV4IDgy MzBjYmVhM2MzLi5hZmE5N2NmM2M1YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1p emVyL3BsYW4vc3Vic2VsZWN0LmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4v c3Vic2VsZWN0LmMKQEAgLTEzNzgsNiArMTM3OCwxNiBAQCBjb252ZXJ0X0VYSVNUU19zdWJs aW5rX3RvX2pvaW4oUGxhbm5lckluZm8gKnJvb3QsIFN1YkxpbmsgKnN1YmxpbmssCiAJaW50 CQkJdmFybm87CiAJUmVsaWRzCQljbGF1c2VfdmFybm9zOwogCVJlbGlkcwkJdXBwZXJfdmFy bm9zOworCUxpc3QgKnRlc3RsaXN0OworCUxpc3RDZWxsICpsYzsKKwlMaXN0ICpuZXdXaGVy ZSA9IE5JTDsKKwlMaXN0ICpvcGNvbGxhdGlvbnM7CisJTGlzdCAqb3BpZHM7CisJTGlzdCAq cmlnaHRhcmdzOworCUxpc3QgKmxlZnRhcmdzOworCUxpc3QgKmFsbF9jbGF1c2VzID0gTklM OworCUxpc3RDZWxsICpyYywgKm9jLCAqY2M7CisKIAogCUFzc2VydChzdWJsaW5rLT5zdWJM aW5rVHlwZSA9PSBFWElTVFNfU1VCTElOSyk7CiAKQEAgLTEzOTAsNyArMTQwMCw5IEBAIGNv bnZlcnRfRVhJU1RTX3N1YmxpbmtfdG9fam9pbihQbGFubmVySW5mbyAqcm9vdCwgU3ViTGlu ayAqc3VibGluaywKIAkgKiBnZXQgZmxhdHRlbmVkIGludG8gdGhlIHBhcmVudCBxdWVyeS4K IAkgKi8KIAlpZiAoc3Vic2VsZWN0LT5jdGVMaXN0KQotCQlyZXR1cm4gTlVMTDsKKwl7CisJ CQlyZXR1cm4gTlVMTDsKKwl9CiAKIAkvKgogCSAqIENvcHkgdGhlIHN1YnF1ZXJ5IHNvIHdl IGNhbiBtb2RpZnkgaXQgc2FmZWx5IChzZWUgY29tbWVudHMgaW4KQEAgLTE0MDUsMzUgKzE0 MTcsMTcxIEBAIGNvbnZlcnRfRVhJU1RTX3N1YmxpbmtfdG9fam9pbihQbGFubmVySW5mbyAq cm9vdCwgU3ViTGluayAqc3VibGluaywKIAkgKiB3aXRoIG5vcGxhY2UgdG8gZXZhbHVhdGUg dGhlIHRhcmdldGxpc3QuCiAJICovCiAJaWYgKCFzaW1wbGlmeV9FWElTVFNfcXVlcnkocm9v dCwgc3Vic2VsZWN0KSkKLQkJcmV0dXJuIE5VTEw7CisJeworCQkJcmV0dXJuIE5VTEw7CisJ fQorCisJaWYgKHN1YnNlbGVjdC0+am9pbnRyZWUtPnF1YWxzKQorCQlhbGxfY2xhdXNlcyA9 IGxhcHBlbmQoYWxsX2NsYXVzZXMsIHN1YnNlbGVjdC0+am9pbnRyZWUtPnF1YWxzKTsKIAot CS8qCi0JICogU2VwYXJhdGUgb3V0IHRoZSBXSEVSRSBjbGF1c2UuICAoV2UgY291bGQgdGhl b3JldGljYWxseSBhbHNvIHJlbW92ZQotCSAqIHRvcC1sZXZlbCBwbGFpbiBKT0lOL09OIGNs YXVzZXMsIGJ1dCBpdCdzIHByb2JhYmx5IG5vdCB3b3J0aCB0aGUKLQkgKiB0cm91YmxlLikK LQkgKi8KLQl3aGVyZUNsYXVzZSA9IHN1YnNlbGVjdC0+am9pbnRyZWUtPnF1YWxzOwogCXN1 YnNlbGVjdC0+am9pbnRyZWUtPnF1YWxzID0gTlVMTDsKIAorCS8qIEdhdGhlciBhbGwgY2xh dXNlcyBpbiBtYWluIGxpc3QgZm9yIHRoZSBmdXJ0aGVyIGNvbnNpZGVyYXRpb24gKi8KKwlh bGxfY2xhdXNlcyA9IGxpc3RfY29uY2F0KGFsbF9jbGF1c2VzLCBzdWJzZWxlY3QtPmpvaW50 cmVlLT5mcm9tbGlzdCk7CisKKwlsZWZ0YXJncyA9IHJpZ2h0YXJncyA9IG9waWRzID0gb3Bj b2xsYXRpb25zID0gbmV3V2hlcmUgPSBOSUw7CisKIAkvKgotCSAqIFRoZSByZXN0IG9mIHRo ZSBzdWItc2VsZWN0IG11c3Qgbm90IHJlZmVyIHRvIGFueSBWYXJzIG9mIHRoZSBwYXJlbnQK LQkgKiBxdWVyeS4gIChWYXJzIG9mIGhpZ2hlciBsZXZlbHMgc2hvdWxkIGJlIG9rYXksIHRo b3VnaC4pCisJICogV2Ugd2lsbCBhYmxlIHRvIHJlbW92ZSB0b3AtbGV2ZWwgcGxhaW4gSk9J Ti9PTiBjbGF1c2VzIGlmIHRoZXkgYXJlIG5vdCBvdXRlciBqb2luLgogCSAqLwotCWlmIChj b250YWluX3ZhcnNfb2ZfbGV2ZWwoKE5vZGUgKikgc3Vic2VsZWN0LCAxKSkKKwlmb3JlYWNo IChsYywgYWxsX2NsYXVzZXMpCisJeworCQlOb2RlICpqZSA9ICgoTm9kZSAqKSBsZmlyc3Qo bGMpKTsKKwkJTGlzdENlbGwgKmxjMTsKKworCQl3aGVyZUNsYXVzZSA9IGNvcHlPYmplY3Qo amUpOworCisJCWlmIChJc0Eod2hlcmVDbGF1c2UsIFJhbmdlVGJsUmVmKSkKKwkJCWNvbnRp bnVlOworCisJCWlmICgoSXNBKHdoZXJlQ2xhdXNlLCBKb2luRXhwcikgJiYgKChKb2luRXhw ciAqKXdoZXJlQ2xhdXNlKS0+am9pbnR5cGUgIT0gSk9JTl9JTk5FUikpCisJCQljb250aW51 ZTsKKworCQlpZiAoSXNBKHdoZXJlQ2xhdXNlLCBKb2luRXhwcikgJiYgKChKb2luRXhwciAq KXdoZXJlQ2xhdXNlKS0+cXVhbHMgIT0gTlVMTCkKKwkJCXdoZXJlQ2xhdXNlID0gKChKb2lu RXhwciAqKXdoZXJlQ2xhdXNlKS0+cXVhbHM7CisKKwkJLyoKKwkJKiBXZSBkb24ndCByaXNr IG9wdGltaXppbmcgaWYgdGhlIFdIRVJFIGNsYXVzZSBpcyB2b2xhdGlsZSwgZWl0aGVyLgor CQkqLworCQlpZiAoY29udGFpbl92b2xhdGlsZV9mdW5jdGlvbnMod2hlcmVDbGF1c2UpKQor CQl7CisJCQlyZXR1cm4gTlVMTDsKKwkJfQorCisJCS8qCisJCSogQ2xlYW4gdXAgdGhlIFdI RVJFIGNsYXVzZSBieSBkb2luZyBjb25zdC1zaW1wbGlmaWNhdGlvbiBldGMgb24gaXQuCisJ CSogQXNpZGUgZnJvbSBzaW1wbGlmeWluZyB0aGUgcHJvY2Vzc2luZyB3ZSdyZSBhYm91dCB0 byBkbywgdGhpcyBpcworCQkqIGltcG9ydGFudCBmb3IgYmVpbmcgYWJsZSB0byBwdWxsIGNo dW5rcyBvZiB0aGUgV0hFUkUgY2xhdXNlIHVwIGludG8gdGhlCisJCSogcGFyZW50IHF1ZXJ5 LiAgU2luY2Ugd2UgYXJlIGludm9rZWQgcGFydHdheSB0aHJvdWdoIHRoZSBwYXJlbnQncwor CQkqIHByZXByb2Nlc3NfZXhwcmVzc2lvbigpIHdvcmssIGVhcmxpZXIgc3RlcHMgb2YgcHJl cHJvY2Vzc19leHByZXNzaW9uKCkKKwkJKiB3b3VsZG4ndCBnZXQgYXBwbGllZCB0byB0aGUg cHVsbGVkLXVwIHN0dWZmIHVubGVzcyB3ZSBkbyB0aGVtIGhlcmUuIEZvcgorCQkqIHRoZSBw YXJ0cyBvZiB0aGUgV0hFUkUgY2xhdXNlIHRoYXQgZ2V0IHB1dCBiYWNrIGludG8gdGhlIGNo aWxkIHF1ZXJ5LAorCQkqIHRoaXMgd29yayBpcyBwYXJ0aWFsbHkgZHVwbGljYXRpdmUsIGJ1 dCBpdCBzaG91bGRuJ3QgaHVydC4KKwkJKgorCQkqIE5vdGU6IHdlIGRvIG5vdCBydW4gZmxh dHRlbl9qb2luX2FsaWFzX3ZhcnMuICBUaGlzIGlzIE9LIGJlY2F1c2UgYW55CisJCSogcGFy ZW50IGFsaWFzZXMgd2VyZSBmbGF0dGVuZWQgYWxyZWFkeSwgYW5kIHdlJ3JlIG5vdCBnb2lu ZyB0byBwdWxsIGFueQorCQkqIGNoaWxkIFZhcnMgKG9mIGFueSBkZXNjcmlwdGlvbikgaW50 byB0aGUgcGFyZW50LgorCQkqCisJCSogTm90ZTogcGFzc2luZyB0aGUgcGFyZW50J3Mgcm9v dCB0byBldmFsX2NvbnN0X2V4cHJlc3Npb25zIGlzCisJCSogdGVjaG5pY2FsbHkgd3Jvbmcs IGJ1dCB3ZSBjYW4gZ2V0IGF3YXkgd2l0aCBpdCBzaW5jZSBvbmx5IHRoZQorCQkqIGJvdW5k UGFyYW1zIChpZiBhbnkpIGFyZSB1c2VkLCBhbmQgdGhvc2Ugd291bGQgYmUgdGhlIHNhbWUg aW4gYQorCQkqIHN1YnJvb3QuCisJCSovCisJCXdoZXJlQ2xhdXNlID0gZXZhbF9jb25zdF9l eHByZXNzaW9ucyhyb290LCB3aGVyZUNsYXVzZSk7CisJCXdoZXJlQ2xhdXNlID0gKE5vZGUg KikgY2Fub25pY2FsaXplX3F1YWwoKEV4cHIgKikgd2hlcmVDbGF1c2UsIGZhbHNlKTsKKwkJ d2hlcmVDbGF1c2UgPSAoTm9kZSAqKSBtYWtlX2FuZHNfaW1wbGljaXQoKEV4cHIgKikgd2hl cmVDbGF1c2UpOworCisJCWZvcmVhY2gobGMxLCAoTGlzdCAqKSB3aGVyZUNsYXVzZSkKKwkJ eworCQkJT3BFeHByCSAgICpleHByID0gKE9wRXhwciAqKSBsZmlyc3QobGMxKTsKKworCQkJ aWYgKElzQShleHByLCBPcEV4cHIpKQorCQkJeworCisJCQkJTm9kZQkgICAqbGVmdGFyZyA9 IChOb2RlICopIGxpbml0aWFsKGV4cHItPmFyZ3MpOworCQkJCU5vZGUJICAgKnJpZ2h0YXJn ID0gKE5vZGUgKikgbHNlY29uZChleHByLT5hcmdzKTsKKworCQkJCWxlZnRhcmcgPShOb2Rl ICopIGV2YWxfY29uc3RfZXhwcmVzc2lvbnMocm9vdCwgbGVmdGFyZyk7CisJCQkJcmlnaHRh cmcgPShOb2RlICopIGV2YWxfY29uc3RfZXhwcmVzc2lvbnMocm9vdCwgcmlnaHRhcmcpOwor CisJCQkJLyoKKwkJCQkgKiBXZSBuZWVkIHRvIHNlcGFyYXRlIG91dGVyIGFuZCBpbm5lciB2 YXJzLgorCQkJCSAqIFNpbmNlIG91dGVyIHZhciB3aWxsIG5lZWQgdG8gYmUgbGV2ZWwgdXAg b25seSBpdHMKKwkJCQkgKiBpdHMgc3VibGV2ZWwgbnVtYmVyIHlldCBpbm5lciB2YXIgd2ls bCBuZWVkIHRvIGJlCisJCQkJICogdXBkYXRlZC4KKwkJCQkgKiBUaGVpciB2YXJubyB3aWxs IGJlIGluY3JlYXNlZCBkdWUgdG8gZWxpbWluYXRpb24gb2YKKwkJCQkgKiBzdWJxdWVyeSBh bmQgY29uc2VxdWVudGx5IHJlYnVpbGRpbmcgcXVlcnkgdHJlZS4KKwkJCQkgKiBMYXRlciBl eHByZXNzaW9ucyB3aWxsIGJlIGZvcm1lZCBhZ2FpbiBhbmQgZm9yIHRoaXMKKwkJCQkgKiBy ZWFzb24gdGhlaXIgb3BlcmF0ZSBpZCBhbmQgY29sbGFjYXRpb25zIG5lZWQgdG8gYmUKKwkJ CQkgKiBzYXZlZCB0b28uCisJCQkJICogbmV3V2hlcmUgbGlzdCBjb250YWlucyBpbm5lciBj b25zdGFudCBleHByZXNzaW9ucy4KKwkJCQkqLworCQkJCWlmIChjb250YWluX3ZhcnNfb2Zf bGV2ZWwobGVmdGFyZywgMSkpCisJCQkJeworCQkJCQlsZWZ0YXJncyA9IGxhcHBlbmQobGVm dGFyZ3MsIGxlZnRhcmcpOworCQkJCQlyaWdodGFyZ3MgPSBsYXBwZW5kKHJpZ2h0YXJncywg cmlnaHRhcmcpOworCQkJCQlvcGlkcyA9IGxhcHBlbmRfb2lkKG9waWRzLCBleHByLT5vcG5v KTsKKwkJCQkJb3Bjb2xsYXRpb25zID0gbGFwcGVuZF9vaWQob3Bjb2xsYXRpb25zLCBleHBy LT5pbnB1dGNvbGxpZCk7CisJCQkJCWNvbnRpbnVlOworCQkJCX0KKwkJCQllbHNlIGlmIChj b250YWluX3ZhcnNfb2ZfbGV2ZWwocmlnaHRhcmcsIDEpKQorCQkJCXsKKwkJCQkJZXhwci0+ b3BubyA9IGdldF9jb21tdXRhdG9yKGV4cHItPm9wbm8pOworCQkJCQlpZiAoT2lkSXNWYWxp ZChleHByLT5vcG5vKSkKKwkJCQkJeworCQkJCQkJbGVmdGFyZ3MgPSBsYXBwZW5kKGxlZnRh cmdzLCByaWdodGFyZyk7CisJCQkJCQlyaWdodGFyZ3MgPSBsYXBwZW5kKHJpZ2h0YXJncywg bGVmdGFyZyk7CisJCQkJCQlvcGlkcyA9IGxhcHBlbmRfb2lkKG9waWRzLCBleHByLT5vcG5v KTsKKwkJCQkJCW9wY29sbGF0aW9ucyA9IGxhcHBlbmRfb2lkKG9wY29sbGF0aW9ucywgZXhw ci0+aW5wdXRjb2xsaWQpOworCQkJCQkJY29udGludWU7CisJCQkJCX0KKwkJCQkJLyogSWYg bm8gY29tbXV0YXRvciwgbm8gY2hhbmNlIHRvIG9wdGltaXplIHRoZSBXSEVSRSBjbGF1c2Ug Ki8KKwkJCQkJQXNzZXJ0KDApOworCQkJCX0KKwkJCQluZXdXaGVyZSA9IGxhcHBlbmQobmV3 V2hlcmUsIGV4cHIpOworCQkJfQorCQkJLyogV2Ugb25seSBuZWVkIHRvIGJlIHN1cmUgdGhh dCBpdCBjb250YWlucyBzb21lIHZhciB3aGljaAorCQkJICogaXMgYWNjZXB0YWJsZSBmb3Ig cHVsbC11cCBhcHBsaWNhdGlvbi4KKwkJCSovCisJCQllbHNlIGlmIChjb250YWluX3ZhcnNf b2ZfbGV2ZWwoKE5vZGUgKikgZXhwciwgMSkpCisJCQkJbmV3V2hlcmUgPSBsYXBwZW5kKG5l d1doZXJlLCBleHByKTsKKwkJCWVsc2UKKwkJCQlyZXR1cm4gTlVMTDsKKwkJfQorCisJCS8q CisJCSAqIEluIGNhc2Ugb2YgYSBzdWNjZXNzZnVsIGF0dGVtcHQsIHJlcGxhY2VzIGl0IHdp dGggdGhlIGNvcnJlY3QgY29uZGl0aW9uLgorCQkgKiBXZSB3ZXJlIHN1cmUgdGhhdCBpbm5l ciByZWxhdGlvbnMgYXJlIGluZGVwZW5kZW50LCBzbyB3ZSBjb25maWRlbnRseQorCQkgKiBj YW4gcmVwbGFjZSB0aGVpciBqb2luIGNvbmRpdGlvbiBvbiB0cnVlLgorCQkgKiBUb0RvOiBv cGVyYXRlIGNvbm5lY3RlZCBpbm5lciBqb2luIGV4cHJlc3Npb25zLgorCQkgKi8KKwkJaWYg KChMaXN0ICopIHdoZXJlQ2xhdXNlICE9IE5JTCAmJiBJc0EoamUsIEpvaW5FeHByKSkKKwkJ CSgoSm9pbkV4cHIgKilqZSktPnF1YWxzID0gKE5vZGUgKikgbWFrZUNvbnN0KEJPT0xPSUQs CisJCQkJCQkJCQkJCQkJCS0xLAorCQkJCQkJCQkJCQkJCQlJbnZhbGlkT2lkLAorCQkJCQkJ CQkJCQkJCQlzaXplb2YoYm9vbCksCisJCQkJCQkJCQkJCQkJCShEYXR1bSkgMSwKKwkJCQkJ CQkJCQkJCQkJZmFsc2UsCisJCQkJCQkJCQkJCQkJCXRydWUpOworCX0KKworCWxpc3RfZnJl ZShhbGxfY2xhdXNlcyk7CisKKwkvKiBXZSBkb24ndCBoYXZlIGFueSBjbGF1c2VzIGZvciBw dWxsLXVwIGNyZWF0aW9uICovCisJaWYgKG5ld1doZXJlID09IE5JTCAmJiBsZWZ0YXJncz09 IE5JTCkKKwl7CiAJCXJldHVybiBOVUxMOworCX0KIAogCS8qCi0JICogT24gdGhlIG90aGVy IGhhbmQsIHRoZSBXSEVSRSBjbGF1c2UgbXVzdCBjb250YWluIHNvbWUgVmFycyBvZiB0aGUK LQkgKiBwYXJlbnQgcXVlcnksIGVsc2UgaXQncyBub3QgZ29ubmEgYmUgYSBqb2luLgorCSAq IEFuZCB0aGVyZSBjYW4ndCBiZSBhbnkgY2hpbGQgVmFycyBpbiB0aGUgc3R1ZmYgd2UgaW50 ZW5kIHRvIHB1bGwgdXAuCisJICogKE5vdGU6IHdlJ2QgbmVlZCB0byBjaGVjayBmb3IgY2hp bGQgQWdncyB0b28sIGV4Y2VwdCB3ZSBrbm93IHRoZSBjaGlsZAorCSAqIGhhcyBubyBhZ2dz IGF0IGFsbCBiZWNhdXNlIG9mIHNpbXBsaWZ5X0VYSVNUU19xdWVyeSdzIGNoZWNrLiBUaGUg c2FtZQorCSAqIGdvZXMgZm9yIHdpbmRvdyBmdW5jdGlvbnMuKQogCSAqLwotCWlmICghY29u dGFpbl92YXJzX29mX2xldmVsKHdoZXJlQ2xhdXNlLCAxKSkKKwlpZiAoY29udGFpbl92YXJz X29mX2xldmVsKChOb2RlICopIHN1YnNlbGVjdCwgMSkpCiAJCXJldHVybiBOVUxMOwogCiAJ LyoKLQkgKiBXZSBkb24ndCByaXNrIG9wdGltaXppbmcgaWYgdGhlIFdIRVJFIGNsYXVzZSBp cyB2b2xhdGlsZSwgZWl0aGVyLgorCSAqIFByZXBhcmUgdG8gcHVsbCB1cCB0aGUgc3ViLXNl bGVjdCBpbnRvIHRvcCByYW5nZSB0YWJsZS4KKwkgKgorCSAqIFdlIG5lZWQgdG8gYWRqdXN0 IGFsbCBsZXZlbC16ZXJvIHZhcm5vcyBpbiB0aGUgc3VicXVlcnkKKwkgKiB0byBhY2NvdW50 IGZvciB0aGUgcnRhYmxlIG1lcmdlci4KIAkgKi8KLQlpZiAoY29udGFpbl92b2xhdGlsZV9m dW5jdGlvbnMod2hlcmVDbGF1c2UpKQotCQlyZXR1cm4gTlVMTDsKKwlydG9mZnNldCA9IGxp c3RfbGVuZ3RoKHBhcnNlLT5ydGFibGUpOworCU9mZnNldFZhck5vZGVzKChOb2RlICopIHN1 YnNlbGVjdCwgcnRvZmZzZXQsIDApOworCU9mZnNldFZhck5vZGVzKChOb2RlICopbmV3V2hl cmUsIHJ0b2Zmc2V0LCAwKTsKKwlPZmZzZXRWYXJOb2RlcygoTm9kZSAqKXJpZ2h0YXJncywg cnRvZmZzZXQsIDApOwogCiAJLyoKIAkgKiBUaGUgc3VicXVlcnkgbXVzdCBoYXZlIGEgbm9u ZW1wdHkgam9pbnRyZWUsIGJ1dCB3ZSBjYW4gbWFrZSBpdCBzby4KQEAgLTE0NDEsMjMgKzE1 ODksMTEgQEAgY29udmVydF9FWElTVFNfc3VibGlua190b19qb2luKFBsYW5uZXJJbmZvICpy b290LCBTdWJMaW5rICpzdWJsaW5rLAogCXJlcGxhY2VfZW1wdHlfam9pbnRyZWUoc3Vic2Vs ZWN0KTsKIAogCS8qCi0JICogUHJlcGFyZSB0byBwdWxsIHVwIHRoZSBzdWItc2VsZWN0IGlu dG8gdG9wIHJhbmdlIHRhYmxlLgotCSAqCi0JICogV2UgcmVseSBoZXJlIG9uIHRoZSBhc3N1 bXB0aW9uIHRoYXQgdGhlIG91dGVyIHF1ZXJ5IGhhcyBubyByZWZlcmVuY2VzCi0JICogdG8g dGhlIGlubmVyIChuZWNlc3NhcmlseSB0cnVlKS4gVGhlcmVmb3JlIHRoaXMgaXMgYSBsb3Qg ZWFzaWVyIHRoYW4KLQkgKiB3aGF0IHB1bGxfdXBfc3VicXVlcmllcyBoYXMgdG8gZ28gdGhy b3VnaC4KLQkgKgotCSAqIEluIGZhY3QsIGl0J3MgZXZlbiBlYXNpZXIgdGhhbiB3aGF0IGNv bnZlcnRfQU5ZX3N1YmxpbmtfdG9fam9pbiBoYXMgdG8KLQkgKiBkby4gIFRoZSBtYWNoaW5h dGlvbnMgb2Ygc2ltcGxpZnlfRVhJU1RTX3F1ZXJ5IGVuc3VyZWQgdGhhdCB0aGVyZSBpcwot CSAqIG5vdGhpbmcgaW50ZXJlc3RpbmcgaW4gdGhlIHN1YnF1ZXJ5IGV4Y2VwdCBhbiBydGFi bGUgYW5kIGpvaW50cmVlLCBhbmQKLQkgKiBldmVuIHRoZSBqb2ludHJlZSBGcm9tRXhwciBu byBsb25nZXIgaGFzIHF1YWxzLiAgU28gd2UgY2FuIGp1c3QgYXBwZW5kCi0JICogdGhlIHJ0 YWJsZSB0byBvdXIgb3duIGFuZCB1c2UgdGhlIEZyb21FeHByIGluIG91ciBqb2ludHJlZS4g QnV0IGZpcnN0LAotCSAqIGFkanVzdCBhbGwgbGV2ZWwtemVybyB2YXJub3MgaW4gdGhlIHN1 YnF1ZXJ5IHRvIGFjY291bnQgZm9yIHRoZSBydGFibGUKLQkgKiBtZXJnZXIuCisJICogQWxz byByZWplY3Qgc3VibGlua3MgaW4gdGhlIHN0dWZmIHdlIGludGVuZCB0byBwdWxsIHVwLiAg KEl0IG1pZ2h0IGJlCisJICogcG9zc2libGUgdG8gc3VwcG9ydCB0aGlzLCBidXQgZG9lc24n dCBzZWVtIHdvcnRoIHRoZSBjb21wbGljYXRpb24uKQogCSAqLwotCXJ0b2Zmc2V0ID0gbGlz dF9sZW5ndGgocGFyc2UtPnJ0YWJsZSk7Ci0JT2Zmc2V0VmFyTm9kZXMoKE5vZGUgKikgc3Vi c2VsZWN0LCBydG9mZnNldCwgMCk7Ci0JT2Zmc2V0VmFyTm9kZXMod2hlcmVDbGF1c2UsIHJ0 b2Zmc2V0LCAwKTsKKwlpZiAoY29udGFpbl9zdWJwbGFucygoTm9kZSAqKSBsZWZ0YXJncykg fHwgY29udGFpbl9zdWJwbGFucygoTm9kZSAqKSByaWdodGFyZ3MpKQorCQlyZXR1cm4gTlVM TDsKIAogCS8qCiAJICogVXBwZXItbGV2ZWwgdmFycyBpbiBzdWJxdWVyeSB3aWxsIG5vdyBi ZSBvbmUgbGV2ZWwgY2xvc2VyIHRvIHRoZWlyCkBAIC0xNDY1LDMxICsxNjAxLDM4IEBAIGNv bnZlcnRfRVhJU1RTX3N1YmxpbmtfdG9fam9pbihQbGFubmVySW5mbyAqcm9vdCwgU3ViTGlu ayAqc3VibGluaywKIAkgKiBiZWNvbWVzIGxldmVsIHplcm8uCiAJICovCiAJSW5jcmVtZW50 VmFyU3VibGV2ZWxzVXAoKE5vZGUgKikgc3Vic2VsZWN0LCAtMSwgMSk7Ci0JSW5jcmVtZW50 VmFyU3VibGV2ZWxzVXAod2hlcmVDbGF1c2UsIC0xLCAxKTsKKwlJbmNyZW1lbnRWYXJTdWJs ZXZlbHNVcCgoTm9kZSAqKSBsZWZ0YXJncywgLTEsIDEpOworCUluY3JlbWVudFZhclN1Ymxl dmVsc1VwKChOb2RlICopIG5ld1doZXJlLCAtMSwgMSk7CiAKIAkvKgogCSAqIE5vdyB0aGF0 IHRoZSBXSEVSRSBjbGF1c2UgaXMgYWRqdXN0ZWQgdG8gbWF0Y2ggdGhlIHBhcmVudCBxdWVy eQogCSAqIGVudmlyb25tZW50LCB3ZSBjYW4gZWFzaWx5IGlkZW50aWZ5IGFsbCB0aGUgbGV2 ZWwtemVybyByZWxzIGl0IHVzZXMuCiAJICogVGhlIG9uZXMgPD0gcnRvZmZzZXQgYmVsb25n IHRvIHRoZSB1cHBlciBxdWVyeTsgdGhlIG9uZXMgPiBydG9mZnNldCBkbwogCSAqIG5vdC4K KwkgKiBYWFg6IFNob3VsZCB3ZSBjaGVjayBuZXdXaGVyZT8KIAkgKi8KLQljbGF1c2VfdmFy bm9zID0gcHVsbF92YXJub3Mocm9vdCwgd2hlcmVDbGF1c2UpOwotCXVwcGVyX3Zhcm5vcyA9 IE5VTEw7Ci0JdmFybm8gPSAtMTsKLQl3aGlsZSAoKHZhcm5vID0gYm1zX25leHRfbWVtYmVy KGNsYXVzZV92YXJub3MsIHZhcm5vKSkgPj0gMCkKKwlpZihsZWZ0YXJncyAhPSBOSUwpCiAJ ewotCQlpZiAodmFybm8gPD0gcnRvZmZzZXQpCi0JCQl1cHBlcl92YXJub3MgPSBibXNfYWRk X21lbWJlcih1cHBlcl92YXJub3MsIHZhcm5vKTsKLQl9Ci0JYm1zX2ZyZWUoY2xhdXNlX3Zh cm5vcyk7Ci0JQXNzZXJ0KCFibXNfaXNfZW1wdHkodXBwZXJfdmFybm9zKSk7CisJCWNsYXVz ZV92YXJub3MgPSBwdWxsX3Zhcm5vcyhyb290LCAoTm9kZSAqKSBsZWZ0YXJncyk7CisJCXVw cGVyX3Zhcm5vcyA9IE5VTEw7CisJCXZhcm5vID0gLTE7CisJCXdoaWxlICgodmFybm8gPSBi bXNfbmV4dF9tZW1iZXIoY2xhdXNlX3Zhcm5vcywgdmFybm8pKSA+PSAwKQorCQl7CisJCQlp ZiAodmFybm8gPD0gcnRvZmZzZXQpCisJCQkJdXBwZXJfdmFybm9zID0gYm1zX2FkZF9tZW1i ZXIodXBwZXJfdmFybm9zLCB2YXJubyk7CisJCX0KKwkJYm1zX2ZyZWUoY2xhdXNlX3Zhcm5v cyk7CiAKLQkvKgotCSAqIE5vdyB0aGF0IHdlJ3ZlIGdvdCB0aGUgc2V0IG9mIHVwcGVyLWxl dmVsIHZhcm5vcywgd2UgY2FuIG1ha2UgdGhlIGxhc3QKLQkgKiBjaGVjazogb25seSBhdmFp bGFibGVfcmVscyBjYW4gYmUgcmVmZXJlbmNlZC4KLQkgKi8KLQlpZiAoIWJtc19pc19zdWJz ZXQodXBwZXJfdmFybm9zLCBhdmFpbGFibGVfcmVscykpCi0JCXJldHVybiBOVUxMOworCQlB c3NlcnQoIWJtc19pc19lbXB0eSh1cHBlcl92YXJub3MpIHx8IGJtc19pc19lbXB0eShjbGF1 c2VfdmFybm9zKSk7CisKKworCQkvKgorCQkqIE5vdyB0aGF0IHdlJ3ZlIGdvdCB0aGUgc2V0 IG9mIHVwcGVyLWxldmVsIHZhcm5vcywgd2UgY2FuIG1ha2UgdGhlIGxhc3QKKwkJKiBjaGVj azogb25seSBhdmFpbGFibGVfcmVscyBjYW4gYmUgcmVmZXJlbmNlZC4KKwkJKi8KKwkJaWYg KCFibXNfaXNfc3Vic2V0KHVwcGVyX3Zhcm5vcywgYXZhaWxhYmxlX3JlbHMpICYmICFibXNf aXNfZW1wdHkoY2xhdXNlX3Zhcm5vcykpCisJCQlyZXR1cm4gTlVMTDsKKwl9CiAKIAkvKgog CSAqIE5vdyB3ZSBjYW4gYXR0YWNoIHRoZSBtb2RpZmllZCBzdWJxdWVyeSBydGFibGUgdG8g dGhlIHBhcmVudC4gVGhpcyBhbHNvCkBAIC0xNDk4LDYgKzE2NDEsMjIgQEAgY29udmVydF9F WElTVFNfc3VibGlua190b19qb2luKFBsYW5uZXJJbmZvICpyb290LCBTdWJMaW5rICpzdWJs aW5rLAogCUNvbWJpbmVSYW5nZVRhYmxlcygmcGFyc2UtPnJ0YWJsZSwgJnBhcnNlLT5ydGVw ZXJtaW5mb3MsCiAJCQkJCSAgIHN1YnNlbGVjdC0+cnRhYmxlLCBzdWJzZWxlY3QtPnJ0ZXBl cm1pbmZvcyk7CiAKKwl0ZXN0bGlzdCA9IE5JTDsKKwlmb3Jmb3VyKGxjLCBsZWZ0YXJncywg cmMsIHJpZ2h0YXJncywgb2MsIG9waWRzLCBjYywgb3Bjb2xsYXRpb25zKQorCXsKKwkJTm9k ZQkgICAqbGVmdGFyZyA9IChOb2RlICopIGxmaXJzdChsYyk7CisJCU5vZGUJICAgKnJpZ2h0 YXJnID0gKE5vZGUgKikgbGZpcnN0KHJjKTsKKwkJT2lkCQkJb3BpZCA9IGxmaXJzdF9vaWQo b2MpOworCQlPaWQJCQlvcGNvbGxhdGlvbiA9IGxmaXJzdF9vaWQoY2MpOworCisJCXRlc3Rs aXN0ID0gbGFwcGVuZCh0ZXN0bGlzdCwKKwkJCQkJCQkoTm9kZSAqKSBtYWtlX29wY2xhdXNl KG9waWQsIEJPT0xPSUQsIGZhbHNlLAorCQkJCQkJCQkJCQkoRXhwciAqKSBsZWZ0YXJnLCAo RXhwciAqKSByaWdodGFyZywKKwkJCQkJCQkJCQkJSW52YWxpZE9pZCwgb3Bjb2xsYXRpb24p KTsKKwl9CisKKwl0ZXN0bGlzdCA9IGxpc3RfY29uY2F0KHRlc3RsaXN0LCBuZXdXaGVyZSk7 CisKIAkvKgogCSAqIEFuZCBmaW5hbGx5LCBidWlsZCB0aGUgSm9pbkV4cHIgbm9kZS4KIAkg Ki8KQEAgLTE1MTIsNyArMTY3MSw3IEBAIGNvbnZlcnRfRVhJU1RTX3N1YmxpbmtfdG9fam9p bihQbGFubmVySW5mbyAqcm9vdCwgU3ViTGluayAqc3VibGluaywKIAkJcmVzdWx0LT5yYXJn ID0gKE5vZGUgKikgc3Vic2VsZWN0LT5qb2ludHJlZTsKIAlyZXN1bHQtPnVzaW5nQ2xhdXNl ID0gTklMOwogCXJlc3VsdC0+am9pbl91c2luZ19hbGlhcyA9IE5VTEw7Ci0JcmVzdWx0LT5x dWFscyA9IHdoZXJlQ2xhdXNlOworCXJlc3VsdC0+cXVhbHMgPSAoTm9kZSAqKSBtYWtlX2Fu ZHNfZXhwbGljaXQodGVzdGxpc3QpOwogCXJlc3VsdC0+YWxpYXMgPSBOVUxMOwogCXJlc3Vs dC0+cnRpbmRleCA9IDA7CQkvKiB3ZSBkb24ndCBuZWVkIGFuIFJURSBmb3IgaXQgKi8KIApk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fam9pbi5v dXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9qb2luLm91dAppbmRl eCBhZjQ2ODY4MmEyZC4uOGNiNGNkYTM4OGUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvcGFydGl0aW9uX2pvaW4ub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvcGFydGl0aW9uX2pvaW4ub3V0CkBAIC0yNDkyLDggKzI0OTIsOCBAQCB3aGVy ZSBub3QgZXhpc3RzIChzZWxlY3QgMSBmcm9tIHBydHgyCiAgICAgICAgICAtPiAgU2VxIFNj YW4gb24gcHJ0eDFfMQogICAgICAgICAgICAgICAgRmlsdGVyOiAoKGEgPCAyMCkgQU5EIChj ID0gMTIwKSkKICAgICAgICAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIHBydHgyXzEKLSAg ICAgICAgICAgICAgIFJlY2hlY2sgQ29uZDogKChiID0gcHJ0eDFfMS5iKSBBTkQgKGMgPSAx MjMpKQotICAgICAgICAgICAgICAgRmlsdGVyOiAoYSA9IHBydHgxXzEuYSkKKyAgICAgICAg ICAgICAgIFJlY2hlY2sgQ29uZDogKChwcnR4MV8xLmIgPSBiKSBBTkQgKGMgPSAxMjMpKQor ICAgICAgICAgICAgICAgRmlsdGVyOiAocHJ0eDFfMS5hID0gYSkKICAgICAgICAgICAgICAg IC0+ICBCaXRtYXBBbmQKICAgICAgICAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXgg U2NhbiBvbiBwcnR4Ml8xX2JfaWR4CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRl eCBDb25kOiAoYiA9IHBydHgxXzEuYikKQEAgLTI1MDMsOCArMjUwMyw4IEBAIHdoZXJlIG5v dCBleGlzdHMgKHNlbGVjdCAxIGZyb20gcHJ0eDIKICAgICAgICAgIC0+ICBTZXEgU2NhbiBv biBwcnR4MV8yCiAgICAgICAgICAgICAgICBGaWx0ZXI6ICgoYSA8IDIwKSBBTkQgKGMgPSAx MjApKQogICAgICAgICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gcHJ0eDJfMgotICAgICAg ICAgICAgICAgUmVjaGVjayBDb25kOiAoKGIgPSBwcnR4MV8yLmIpIEFORCAoYyA9IDEyMykp Ci0gICAgICAgICAgICAgICBGaWx0ZXI6IChhID0gcHJ0eDFfMi5hKQorICAgICAgICAgICAg ICAgUmVjaGVjayBDb25kOiAoKHBydHgxXzIuYiA9IGIpIEFORCAoYyA9IDEyMykpCisgICAg ICAgICAgICAgICBGaWx0ZXI6IChwcnR4MV8yLmEgPSBhKQogICAgICAgICAgICAgICAgLT4g IEJpdG1hcEFuZAogICAgICAgICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2Fu IG9uIHBydHgyXzJfYl9pZHgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4IENv bmQ6IChiID0gcHJ0eDFfMi5iKQpAQCAtMjUzNCw3ICsyNTM0LDcgQEAgd2hlcmUgbm90IGV4 aXN0cyAoc2VsZWN0IDEgZnJvbSBwcnR4MgogICAgICAgICAgICAgICAgRmlsdGVyOiAoKGEg PCAyMCkgQU5EIChjID0gOTEpKQogICAgICAgICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24g cHJ0eDJfMQogICAgICAgICAgICAgICAgUmVjaGVjayBDb25kOiAoKGMgPSA5OSkgT1IgKGIg PSAocHJ0eDFfMS5iICsgMSkpKQotICAgICAgICAgICAgICAgRmlsdGVyOiAoYSA9IHBydHgx XzEuYSkKKyAgICAgICAgICAgICAgIEZpbHRlcjogKHBydHgxXzEuYSA9IGEpCiAgICAgICAg ICAgICAgICAtPiAgQml0bWFwT3IKICAgICAgICAgICAgICAgICAgICAgIC0+ICBCaXRtYXAg SW5kZXggU2NhbiBvbiBwcnR4Ml8xX2NfaWR4CiAgICAgICAgICAgICAgICAgICAgICAgICAg ICBJbmRleCBDb25kOiAoYyA9IDk5KQpAQCAtMjU0NSw3ICsyNTQ1LDcgQEAgd2hlcmUgbm90 IGV4aXN0cyAoc2VsZWN0IDEgZnJvbSBwcnR4MgogICAgICAgICAgICAgICAgRmlsdGVyOiAo KGEgPCAyMCkgQU5EIChjID0gOTEpKQogICAgICAgICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4g b24gcHJ0eDJfMgogICAgICAgICAgICAgICAgUmVjaGVjayBDb25kOiAoKGMgPSA5OSkgT1Ig KGIgPSAocHJ0eDFfMi5iICsgMSkpKQotICAgICAgICAgICAgICAgRmlsdGVyOiAoYSA9IHBy dHgxXzIuYSkKKyAgICAgICAgICAgICAgIEZpbHRlcjogKHBydHgxXzIuYSA9IGEpCiAgICAg ICAgICAgICAgICAtPiAgQml0bWFwT3IKICAgICAgICAgICAgICAgICAgICAgIC0+ICBCaXRt YXAgSW5kZXggU2NhbiBvbiBwcnR4Ml8yX2NfaWR4CiAgICAgICAgICAgICAgICAgICAgICAg ICAgICBJbmRleCBDb25kOiAoYyA9IDk5KQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9zdWJzZWxlY3Qub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9z dWJzZWxlY3Qub3V0CmluZGV4IGViYzU0NWUyNDYxLi5jZmY1MDI2ODg3ZiAxMDA2NDQKLS0t IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdWJzZWxlY3Qub3V0CisrKyBiL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3Vic2VsZWN0Lm91dApAQCAtODEyLDYgKzgxMiwyMzgg QEAgd2hlcmUgZXhpc3RzICgKICAgICAgIGZyb20gdGV4dF90YmwgKSBzcwogICB3aGVyZSBy b2FkLm5hbWUgPSBzcy5mMSApOwogcm9sbGJhY2s7CistLSBUZXN0IGNhc2UgZm9yIGV4aXN0 IHN1Ymxpbmsgd2hlcmUgd2UgY2FuIGNvbnNpZGVyIHNvbWUgdW5kZXBlbmRlbnQgZXhwcmVz c2lvbgorLS0gd2l0aCBvdXRlciBsaW5rCistLQorRVhQTEFJTiAoQU5BTFlaRSwgQ09TVFMg T0ZGLCBTVU1NQVJZIE9GRiwgVElNSU5HIE9GRiwgQlVGRkVSUyBPRkYpCisgU0VMRUNUIDEK KyAgIEZST00gdGEKKyAgV0hFUkUgRVhJU1RTIChTRUxFQ1QgMQorICAgICAgICAgICAgICAg ICAgRlJPTSB0YgorICAgICAgICAgICAgICAgICAgSk9JTiB0YworICAgICAgICAgICAgICAg ICAgICBPTiB0YS5pZCA9IHRiLmlkKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyBOZXN0ZWQgTG9vcCBTZW1pIEpvaW4gKGFjdHVhbCByb3dzPTIgbG9v cHM9MSkKKyAgIC0+ICBTZXEgU2NhbiBvbiB0YSAoYWN0dWFsIHJvd3M9MiBsb29wcz0xKQor ICAgLT4gIE5lc3RlZCBMb29wIChhY3R1YWwgcm93cz0xIGxvb3BzPTIpCisgICAgICAgICAt PiAgSW5kZXggT25seSBTY2FuIHVzaW5nIHRiX3BrZXkgb24gdGIgKGFjdHVhbCByb3dzPTEg bG9vcHM9MikKKyAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChpZCA9IHRhLmlkKQorICAg ICAgICAgICAgICAgSGVhcCBGZXRjaGVzOiAyCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24g dGMgKGFjdHVhbCByb3dzPTEgbG9vcHM9MikKKyg3IHJvd3MpCisKK0VYUExBSU4gKEFOQUxZ WkUsIENPU1RTIE9GRiwgU1VNTUFSWSBPRkYsIFRJTUlORyBPRkYsIEJVRkZFUlMgT0ZGKQor IFNFTEVDVCAxCisgICBGUk9NIHRhCisgIFdIRVJFIE5PVCBFWElTVFMgKFNFTEVDVCAxCisg ICAgICAgICAgICAgICAgICBGUk9NIHRiCisgICAgICAgICAgICAgICAgICBKT0lOIHRjCisg ICAgICAgICAgICAgICAgICAgIE9OIHRhLmlkID0gdGIuaWQpOworICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIE5lc3RlZCBMb29wIEFudGkgSm9pbiAoYWN0 dWFsIHJvd3M9MCBsb29wcz0xKQorICAgLT4gIFNlcSBTY2FuIG9uIHRhIChhY3R1YWwgcm93 cz0yIGxvb3BzPTEpCisgICAtPiAgTmVzdGVkIExvb3AgKGFjdHVhbCByb3dzPTEgbG9vcHM9 MikKKyAgICAgICAgIC0+ICBJbmRleCBPbmx5IFNjYW4gdXNpbmcgdGJfcGtleSBvbiB0YiAo YWN0dWFsIHJvd3M9MSBsb29wcz0yKQorICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKGlk ID0gdGEuaWQpCisgICAgICAgICAgICAgICBIZWFwIEZldGNoZXM6IDIKKyAgICAgICAgIC0+ ICBTZXEgU2NhbiBvbiB0YyAoYWN0dWFsIHJvd3M9MSBsb29wcz0yKQorKDcgcm93cykKKwor RVhQTEFJTiAoQU5BTFlaRSwgQ09TVFMgT0ZGLCBTVU1NQVJZIE9GRiwgVElNSU5HIE9GRiwg QlVGRkVSUyBPRkYpCisgU0VMRUNUIDEKKyAgIEZST00gdGEKKyAgV0hFUkUgRVhJU1RTIChT RUxFQ1QgMQorICAgICAgICAgICAgICAgICAgRlJPTSB0YgorICAgICAgICAgICAgICAgICAg Sk9JTiB0YworICAgICAgICAgICAgICAgICAgICBPTiB0YS5pZCA9IHRjLmlkKTsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBOZXN0ZWQgTG9vcCBTZW1p IEpvaW4gKGFjdHVhbCByb3dzPTIgbG9vcHM9MSkKKyAgIC0+ICBTZXEgU2NhbiBvbiB0YSAo YWN0dWFsIHJvd3M9MiBsb29wcz0xKQorICAgLT4gIE5lc3RlZCBMb29wIChhY3R1YWwgcm93 cz0xIGxvb3BzPTIpCisgICAgICAgICAtPiAgSW5kZXggT25seSBTY2FuIHVzaW5nIHRjX3Br ZXkgb24gdGMgKGFjdHVhbCByb3dzPTEgbG9vcHM9MikKKyAgICAgICAgICAgICAgIEluZGV4 IENvbmQ6IChpZCA9IHRhLmlkKQorICAgICAgICAgICAgICAgSGVhcCBGZXRjaGVzOiAyCisg ICAgICAgICAtPiAgU2VxIFNjYW4gb24gdGIgKGFjdHVhbCByb3dzPTEgbG9vcHM9MikKKyg3 IHJvd3MpCisKK0VYUExBSU4gKEFOQUxZWkUsIENPU1RTIE9GRiwgU1VNTUFSWSBPRkYsIFRJ TUlORyBPRkYsIEJVRkZFUlMgT0ZGKQorIFNFTEVDVCAxCisgICBGUk9NIHRhCisgIFdIRVJF IE5PVCBFWElTVFMgKFNFTEVDVCAxCisgICAgICAgICAgICAgICAgICBGUk9NIHRiCisgICAg ICAgICAgICAgICAgICBKT0lOIHRjCisgICAgICAgICAgICAgICAgICAgIE9OIHRhLmlkID0g dGIuaWQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIE5l c3RlZCBMb29wIEFudGkgSm9pbiAoYWN0dWFsIHJvd3M9MCBsb29wcz0xKQorICAgLT4gIFNl cSBTY2FuIG9uIHRhIChhY3R1YWwgcm93cz0yIGxvb3BzPTEpCisgICAtPiAgTmVzdGVkIExv b3AgKGFjdHVhbCByb3dzPTEgbG9vcHM9MikKKyAgICAgICAgIC0+ICBJbmRleCBPbmx5IFNj YW4gdXNpbmcgdGJfcGtleSBvbiB0YiAoYWN0dWFsIHJvd3M9MSBsb29wcz0yKQorICAgICAg ICAgICAgICAgSW5kZXggQ29uZDogKGlkID0gdGEuaWQpCisgICAgICAgICAgICAgICBIZWFw IEZldGNoZXM6IDIKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiB0YyAoYWN0dWFsIHJvd3M9 MSBsb29wcz0yKQorKDcgcm93cykKKworLS0gSm9pbiBjb21wb3VuZCBleHByZXNzaW9uCitF WFBMQUlOIChBTkFMWVpFLCBDT1NUUyBPRkYsIFNVTU1BUlkgT0ZGLCBUSU1JTkcgT0ZGLCBC VUZGRVJTIE9GRikKKyBTRUxFQ1QgMQorICAgRlJPTSB0YQorICBXSEVSRSBFWElTVFMgKFNF TEVDVCAxCisgICAgICAgICAgICAgICAgICBGUk9NIHRiCisgICAgICAgICAgICAgICAgICBK T0lOIHRjCisgICAgICAgICAgICAgICAgICAgIE9OIHRhLmlkID0gdGMuaWQgYW5kCisgICAg ICAgICAgICAgICAgICAgICAgIHRhLmlkID0gdGIuaWQpOworICAgICAgICAgICAgICAgICAg ICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IEhhc2ggUmlnaHQgU2VtaSBKb2luIChhY3R1YWwgcm93cz0yIGxvb3BzPTEpCisgICBIYXNo IENvbmQ6ICh0Yy5pZCA9IHRhLmlkKQorICAgLT4gIEhhc2ggSm9pbiAoYWN0dWFsIHJvd3M9 MiBsb29wcz0xKQorICAgICAgICAgSGFzaCBDb25kOiAodGIuaWQgPSB0Yy5pZCkKKyAgICAg ICAgIC0+ICBTZXEgU2NhbiBvbiB0YiAoYWN0dWFsIHJvd3M9NCBsb29wcz0xKQorICAgICAg ICAgLT4gIEhhc2ggKGFjdHVhbCByb3dzPTIgbG9vcHM9MSkKKyAgICAgICAgICAgICAgIEJ1 Y2tldHM6IDQwOTYgIEJhdGNoZXM6IDEgIE1lbW9yeSBVc2FnZTogMzNrQgorICAgICAgICAg ICAgICAgLT4gIFNlcSBTY2FuIG9uIHRjIChhY3R1YWwgcm93cz0yIGxvb3BzPTEpCisgICAt PiAgSGFzaCAoYWN0dWFsIHJvd3M9MiBsb29wcz0xKQorICAgICAgICAgQnVja2V0czogNDA5 NiAgQmF0Y2hlczogMSAgTWVtb3J5IFVzYWdlOiAzM2tCCisgICAgICAgICAtPiAgU2VxIFNj YW4gb24gdGEgKGFjdHVhbCByb3dzPTIgbG9vcHM9MSkKKygxMSByb3dzKQorCitFWFBMQUlO IChBTkFMWVpFLCBDT1NUUyBPRkYsIFNVTU1BUlkgT0ZGLCBUSU1JTkcgT0ZGLCBCVUZGRVJT IE9GRikKKyBTRUxFQ1QgMQorICAgRlJPTSB0YQorICBXSEVSRSBOT1QgRVhJU1RTIChTRUxF Q1QgMQorICAgICAgICAgICAgICAgICAgRlJPTSB0YgorICAgICAgICAgICAgICAgICAgSk9J TiB0YworICAgICAgICAgICAgICAgICAgICBPTiB0YS5pZCA9IHRjLmlkIGFuZAorICAgICAg ICAgICAgICAgICAgICAgICB0YS5pZCA9IHRiLmlkKTsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBOZXN0ZWQgTG9vcCBBbnRpIEpvaW4gKGFjdHVhbCBy b3dzPTAgbG9vcHM9MSkKKyAgIC0+ICBTZXEgU2NhbiBvbiB0YSAoYWN0dWFsIHJvd3M9MiBs b29wcz0xKQorICAgLT4gIE5lc3RlZCBMb29wIChhY3R1YWwgcm93cz0xIGxvb3BzPTIpCisg ICAgICAgICAtPiAgSW5kZXggT25seSBTY2FuIHVzaW5nIHRiX3BrZXkgb24gdGIgKGFjdHVh bCByb3dzPTEgbG9vcHM9MikKKyAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChpZCA9IHRh LmlkKQorICAgICAgICAgICAgICAgSGVhcCBGZXRjaGVzOiAyCisgICAgICAgICAtPiAgSW5k ZXggT25seSBTY2FuIHVzaW5nIHRjX3BrZXkgb24gdGMgKGFjdHVhbCByb3dzPTEgbG9vcHM9 MikKKyAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChpZCA9IHRhLmlkKQorICAgICAgICAg ICAgICAgSGVhcCBGZXRjaGVzOiAyCisoOSByb3dzKQorCitFWFBMQUlOIChBTkFMWVpFLCBD T1NUUyBPRkYsIFNVTU1BUlkgT0ZGLCBUSU1JTkcgT0ZGLCBCVUZGRVJTIE9GRikKKyBTRUxF Q1QgMQorICAgRlJPTSB0YQorICBXSEVSRSBFWElTVFMgKFNFTEVDVCAxCisgICAgICAgICAg ICAgICAgICBGUk9NIHRiCisgICAgICAgICAgICAgICAgICBKT0lOIHRjCisgICAgICAgICAg ICAgICAgICAgIE9OIHRhLmlkID0gdGMuaWQgYW5kCisgICAgICAgICAgICAgICAgICAgICAg IHRhLmlkID0gdGIuaWQpOworICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4g ICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEhhc2ggUmlnaHQgU2VtaSBK b2luIChhY3R1YWwgcm93cz0yIGxvb3BzPTEpCisgICBIYXNoIENvbmQ6ICh0Yy5pZCA9IHRh LmlkKQorICAgLT4gIEhhc2ggSm9pbiAoYWN0dWFsIHJvd3M9MiBsb29wcz0xKQorICAgICAg ICAgSGFzaCBDb25kOiAodGIuaWQgPSB0Yy5pZCkKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBv biB0YiAoYWN0dWFsIHJvd3M9NCBsb29wcz0xKQorICAgICAgICAgLT4gIEhhc2ggKGFjdHVh bCByb3dzPTIgbG9vcHM9MSkKKyAgICAgICAgICAgICAgIEJ1Y2tldHM6IDQwOTYgIEJhdGNo ZXM6IDEgIE1lbW9yeSBVc2FnZTogMzNrQgorICAgICAgICAgICAgICAgLT4gIFNlcSBTY2Fu IG9uIHRjIChhY3R1YWwgcm93cz0yIGxvb3BzPTEpCisgICAtPiAgSGFzaCAoYWN0dWFsIHJv d3M9MiBsb29wcz0xKQorICAgICAgICAgQnVja2V0czogNDA5NiAgQmF0Y2hlczogMSAgTWVt b3J5IFVzYWdlOiAzM2tCCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gdGEgKGFjdHVhbCBy b3dzPTIgbG9vcHM9MSkKKygxMSByb3dzKQorCistLSBDb21wb3VuZCBleHByZXNzaW9uIHdp dGggY29uc3QgdHlwZQorRVhQTEFJTiAoQU5BTFlaRSwgQ09TVFMgT0ZGLCBTVU1NQVJZIE9G RiwgVElNSU5HIE9GRiwgQlVGRkVSUyBPRkYpCisgU0VMRUNUIDEKKyAgIEZST00gdGEKKyAg V0hFUkUgRVhJU1RTIChTRUxFQ1QgMQorICAgICAgICAgICAgICAgICAgRlJPTSB0YgorICAg ICAgICAgICAgICAgICAgSk9JTiB0YworICAgICAgICAgICAgICAgICAgICBPTiB0YS5pZCA9 IHRjLmlkIGFuZAorICAgICAgICAgICAgICAgICAgICAgICB0YS5pZCA9IDEpOworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIE5lc3RlZCBMb29wIFNlbWkg Sm9pbiAoYWN0dWFsIHJvd3M9MSBsb29wcz0xKQorICAgLT4gIEluZGV4IE9ubHkgU2NhbiB1 c2luZyB0YV9wa2V5IG9uIHRhIChhY3R1YWwgcm93cz0xIGxvb3BzPTEpCisgICAgICAgICBJ bmRleCBDb25kOiAoaWQgPSAxKQorICAgICAgICAgSGVhcCBGZXRjaGVzOiAxCisgICAtPiAg TmVzdGVkIExvb3AgKGFjdHVhbCByb3dzPTEgbG9vcHM9MSkKKyAgICAgICAgIC0+ICBJbmRl eCBPbmx5IFNjYW4gdXNpbmcgdGNfcGtleSBvbiB0YyAoYWN0dWFsIHJvd3M9MSBsb29wcz0x KQorICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKGlkID0gMSkKKyAgICAgICAgICAgICAg IEhlYXAgRmV0Y2hlczogMQorICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHRiIChhY3R1YWwg cm93cz0xIGxvb3BzPTEpCisoOSByb3dzKQorCitFWFBMQUlOIChBTkFMWVpFLCBDT1NUUyBP RkYsIFNVTU1BUlkgT0ZGLCBUSU1JTkcgT0ZGLCBCVUZGRVJTIE9GRikKKyBTRUxFQ1QgMQor ICAgRlJPTSB0YQorICBXSEVSRSBOT1QgRVhJU1RTIChTRUxFQ1QgMQorICAgICAgICAgICAg ICAgICAgRlJPTSB0YgorICAgICAgICAgICAgICAgICAgSk9JTiB0YworICAgICAgICAgICAg ICAgICAgICBPTiB0YS5pZCA9IHRjLmlkIGFuZAorICAgICAgICAgICAgICAgICAgICAgICB0 YS5pZCA9IDEpOworICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAg ICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEhhc2ggUmlnaHQgQW50aSBKb2luIChhY3R1YWwg cm93cz0xIGxvb3BzPTEpCisgICBIYXNoIENvbmQ6ICh0Yy5pZCA9IHRhLmlkKQorICAgSm9p biBGaWx0ZXI6ICh0YS5pZCA9IDEpCisgICBSb3dzIFJlbW92ZWQgYnkgSm9pbiBGaWx0ZXI6 IDQKKyAgIC0+ICBOZXN0ZWQgTG9vcCAoYWN0dWFsIHJvd3M9OCBsb29wcz0xKQorICAgICAg ICAgLT4gIFNlcSBTY2FuIG9uIHRiIChhY3R1YWwgcm93cz00IGxvb3BzPTEpCisgICAgICAg ICAtPiAgTWF0ZXJpYWxpemUgKGFjdHVhbCByb3dzPTIgbG9vcHM9NCkKKyAgICAgICAgICAg ICAgIFN0b3JhZ2U6IE1lbW9yeSAgTWF4aW11bSBTdG9yYWdlOiAxN2tCCisgICAgICAgICAg ICAgICAtPiAgU2VxIFNjYW4gb24gdGMgKGFjdHVhbCByb3dzPTIgbG9vcHM9MSkKKyAgIC0+ ICBIYXNoIChhY3R1YWwgcm93cz0yIGxvb3BzPTEpCisgICAgICAgICBCdWNrZXRzOiA0MDk2 ICBCYXRjaGVzOiAxICBNZW1vcnkgVXNhZ2U6IDMza0IKKyAgICAgICAgIC0+ICBTZXEgU2Nh biBvbiB0YSAoYWN0dWFsIHJvd3M9MiBsb29wcz0xKQorKDEyIHJvd3MpCisKK0VYUExBSU4g KEFOQUxZWkUsIENPU1RTIE9GRiwgU1VNTUFSWSBPRkYsIFRJTUlORyBPRkYsIEJVRkZFUlMg T0ZGKQorIFNFTEVDVCAxCisgICBGUk9NIHRhCisgIFdIRVJFIEVYSVNUUyAoU0VMRUNUIDEK KyAgICAgICAgICAgICAgICAgIEZST00gdGIKKyAgICAgICAgICAgICAgICAgIEpPSU4gdGMK KyAgICAgICAgICAgICAgICAgICAgT04gdGIuaWQgPSAxIGFuZAorICAgICAgICAgICAgICAg ICAgICAgICB0YS5pZCA9IDEpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFV RVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIE5lc3RlZCBMb29wIFNlbWkgSm9pbiAoYWN0dWFsIHJvd3M9MSBsb29wcz0x KQorICAgLT4gIEluZGV4IE9ubHkgU2NhbiB1c2luZyB0YV9wa2V5IG9uIHRhIChhY3R1YWwg cm93cz0xIGxvb3BzPTEpCisgICAgICAgICBJbmRleCBDb25kOiAoaWQgPSAxKQorICAgICAg ICAgSGVhcCBGZXRjaGVzOiAxCisgICAtPiAgTmVzdGVkIExvb3AgKGFjdHVhbCByb3dzPTEg bG9vcHM9MSkKKyAgICAgICAgIC0+ICBJbmRleCBPbmx5IFNjYW4gdXNpbmcgdGJfcGtleSBv biB0YiAoYWN0dWFsIHJvd3M9MSBsb29wcz0xKQorICAgICAgICAgICAgICAgSW5kZXggQ29u ZDogKGlkID0gMSkKKyAgICAgICAgICAgICAgIEhlYXAgRmV0Y2hlczogMQorICAgICAgICAg LT4gIFNlcSBTY2FuIG9uIHRjIChhY3R1YWwgcm93cz0xIGxvb3BzPTEpCisoOSByb3dzKQor CistLSBEaXNhYmxlZCBwdWxsIHVwIGJlY2F1c2UgaXQgaXMgYXBwbGNhcGFibGUgZm9yIElO TkVSIEpPSU4gY29ubmVjdGlvbgorRVhQTEFJTiAoQU5BTFlaRSwgQ09TVFMgT0ZGLCBTVU1N QVJZIE9GRiwgVElNSU5HIE9GRiwgQlVGRkVSUyBPRkYpCisgU0VMRUNUIDEKKyAgIEZST00g dGEKKyAgV0hFUkUgRVhJU1RTIChTRUxFQ1QgMQorICAgICAgICAgICAgICAgICAgRlJPTSB0 YgorICAgICAgICAgICAgICAgICAgUklHSFQgSk9JTiB0YworICAgICAgICAgICAgICAgICAg ICBPTiB0YS5pZCA9IHRjLmlkKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQ TEFOICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU2VxIFNjYW4gb24gdGEg KGFjdHVhbCByb3dzPTIgbG9vcHM9MSkKKyAgIEZpbHRlcjogRVhJU1RTKFN1YlBsYW4gMSkK KyAgIFN1YlBsYW4gMQorICAgICAtPiAgTmVzdGVkIExvb3AgTGVmdCBKb2luIChhY3R1YWwg cm93cz0xIGxvb3BzPTIpCisgICAgICAgICAgIEpvaW4gRmlsdGVyOiAodGEuaWQgPSB0Yy5p ZCkKKyAgICAgICAgICAgUm93cyBSZW1vdmVkIGJ5IEpvaW4gRmlsdGVyOiAyCisgICAgICAg ICAgIC0+ICBTZXEgU2NhbiBvbiB0YyAoYWN0dWFsIHJvd3M9MSBsb29wcz0yKQorICAgICAg ICAgICAtPiAgTWF0ZXJpYWxpemUgKGFjdHVhbCByb3dzPTIgbG9vcHM9MikKKyAgICAgICAg ICAgICAgICAgU3RvcmFnZTogTWVtb3J5ICBNYXhpbXVtIFN0b3JhZ2U6IDE3a0IKKyAgICAg ICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHRiIChhY3R1YWwgcm93cz00IGxvb3BzPTEp CisoMTAgcm93cykKKwogLS0KIC0tIFRlc3QgY2FzZSBmb3Igc3VibGlua3MgcHVzaGVkIGRv d24gaW50byBzdWJzZWxlY3RzIHZpYSBqb2luIGFsaWFzIGV4cGFuc2lvbgogLS0KZGlmZiAt LWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdXBkYXRhYmxlX3ZpZXdzLm91dCBi L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdXBkYXRhYmxlX3ZpZXdzLm91dAppbmRleCAw OTVkZjBhNjcwYy4uZDA3NjJjMTI5OWUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvdXBkYXRhYmxlX3ZpZXdzLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL3VwZGF0YWJsZV92aWV3cy5vdXQKQEAgLTMxNzcsMTQgKzMxNzcsMTIgQEAgRVhQ TEFJTiAoY29zdHMgb2ZmKSBJTlNFUlQgSU5UTyByd192aWV3MSBWQUxVRVMgKDIsICdOZXcg cm93IDInKTsKICAgICAgICAgIE9uZS1UaW1lIEZpbHRlcjogKChJbml0UGxhbiAxKS5jb2wx IElTIE5PVCBUUlVFKQogIAogIFVwZGF0ZSBvbiBiYXNlX3RibAotICAgSW5pdFBsYW4gMQot ICAgICAtPiAgSW5kZXggT25seSBTY2FuIHVzaW5nIGJhc2VfdGJsX3BrZXkgb24gYmFzZV90 YmwgdAotICAgICAgICAgICBJbmRleCBDb25kOiAoaWQgPSAyKQotICAgLT4gIFJlc3VsdAot ICAgICAgICAgT25lLVRpbWUgRmlsdGVyOiAoSW5pdFBsYW4gMSkuY29sMQorICAgLT4gIE5l c3RlZCBMb29wIFNlbWkgSm9pbgogICAgICAgICAgLT4gIEluZGV4IFNjYW4gdXNpbmcgYmFz ZV90YmxfcGtleSBvbiBiYXNlX3RibAogICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKGlk ID0gMikKLSgxNSByb3dzKQorICAgICAgICAgLT4gIEluZGV4IFNjYW4gdXNpbmcgYmFzZV90 YmxfcGtleSBvbiBiYXNlX3RibCB0CisgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoaWQg PSAyKQorKDEzIHJvd3MpCiAKIElOU0VSVCBJTlRPIHJ3X3ZpZXcxIFZBTFVFUyAoMiwgJ05l dyByb3cgMicpOwogU0VMRUNUICogRlJPTSBiYXNlX3RibDsKZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL3N1YnNlbGVjdC5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9z dWJzZWxlY3Quc3FsCmluZGV4IDZlZDM2MzZhOWU0Li4xM2Q3MDY2YTgyMyAxMDA2NDQKLS0t IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3Vic2VsZWN0LnNxbAorKysgYi9zcmMvdGVzdC9y ZWdyZXNzL3NxbC9zdWJzZWxlY3Quc3FsCkBAIC00MzksNiArNDM5LDEwNSBAQCB3aGVyZSBl eGlzdHMgKAogCiByb2xsYmFjazsKIAorLS0gVGVzdCBjYXNlIGZvciBleGlzdCBzdWJsaW5r IHdoZXJlIHdlIGNhbiBjb25zaWRlciBzb21lIHVuZGVwZW5kZW50IGV4cHJlc3Npb24KKy0t IHdpdGggb3V0ZXIgbGluaworLS0KK0VYUExBSU4gKEFOQUxZWkUsIENPU1RTIE9GRiwgU1VN TUFSWSBPRkYsIFRJTUlORyBPRkYsIEJVRkZFUlMgT0ZGKQorIFNFTEVDVCAxCisgICBGUk9N IHRhCisgIFdIRVJFIEVYSVNUUyAoU0VMRUNUIDEKKyAgICAgICAgICAgICAgICAgIEZST00g dGIKKyAgICAgICAgICAgICAgICAgIEpPSU4gdGMKKyAgICAgICAgICAgICAgICAgICAgT04g dGEuaWQgPSB0Yi5pZCk7CisKK0VYUExBSU4gKEFOQUxZWkUsIENPU1RTIE9GRiwgU1VNTUFS WSBPRkYsIFRJTUlORyBPRkYsIEJVRkZFUlMgT0ZGKQorIFNFTEVDVCAxCisgICBGUk9NIHRh CisgIFdIRVJFIE5PVCBFWElTVFMgKFNFTEVDVCAxCisgICAgICAgICAgICAgICAgICBGUk9N IHRiCisgICAgICAgICAgICAgICAgICBKT0lOIHRjCisgICAgICAgICAgICAgICAgICAgIE9O IHRhLmlkID0gdGIuaWQpOworCitFWFBMQUlOIChBTkFMWVpFLCBDT1NUUyBPRkYsIFNVTU1B UlkgT0ZGLCBUSU1JTkcgT0ZGLCBCVUZGRVJTIE9GRikKKyBTRUxFQ1QgMQorICAgRlJPTSB0 YQorICBXSEVSRSBFWElTVFMgKFNFTEVDVCAxCisgICAgICAgICAgICAgICAgICBGUk9NIHRi CisgICAgICAgICAgICAgICAgICBKT0lOIHRjCisgICAgICAgICAgICAgICAgICAgIE9OIHRh LmlkID0gdGMuaWQpOworCitFWFBMQUlOIChBTkFMWVpFLCBDT1NUUyBPRkYsIFNVTU1BUlkg T0ZGLCBUSU1JTkcgT0ZGLCBCVUZGRVJTIE9GRikKKyBTRUxFQ1QgMQorICAgRlJPTSB0YQor ICBXSEVSRSBOT1QgRVhJU1RTIChTRUxFQ1QgMQorICAgICAgICAgICAgICAgICAgRlJPTSB0 YgorICAgICAgICAgICAgICAgICAgSk9JTiB0YworICAgICAgICAgICAgICAgICAgICBPTiB0 YS5pZCA9IHRiLmlkKTsKKworLS0gSm9pbiBjb21wb3VuZCBleHByZXNzaW9uCitFWFBMQUlO IChBTkFMWVpFLCBDT1NUUyBPRkYsIFNVTU1BUlkgT0ZGLCBUSU1JTkcgT0ZGLCBCVUZGRVJT IE9GRikKKyBTRUxFQ1QgMQorICAgRlJPTSB0YQorICBXSEVSRSBFWElTVFMgKFNFTEVDVCAx CisgICAgICAgICAgICAgICAgICBGUk9NIHRiCisgICAgICAgICAgICAgICAgICBKT0lOIHRj CisgICAgICAgICAgICAgICAgICAgIE9OIHRhLmlkID0gdGMuaWQgYW5kCisgICAgICAgICAg ICAgICAgICAgICAgIHRhLmlkID0gdGIuaWQpOworCitFWFBMQUlOIChBTkFMWVpFLCBDT1NU UyBPRkYsIFNVTU1BUlkgT0ZGLCBUSU1JTkcgT0ZGLCBCVUZGRVJTIE9GRikKKyBTRUxFQ1Qg MQorICAgRlJPTSB0YQorICBXSEVSRSBOT1QgRVhJU1RTIChTRUxFQ1QgMQorICAgICAgICAg ICAgICAgICAgRlJPTSB0YgorICAgICAgICAgICAgICAgICAgSk9JTiB0YworICAgICAgICAg ICAgICAgICAgICBPTiB0YS5pZCA9IHRjLmlkIGFuZAorICAgICAgICAgICAgICAgICAgICAg ICB0YS5pZCA9IHRiLmlkKTsKKworRVhQTEFJTiAoQU5BTFlaRSwgQ09TVFMgT0ZGLCBTVU1N QVJZIE9GRiwgVElNSU5HIE9GRiwgQlVGRkVSUyBPRkYpCisgU0VMRUNUIDEKKyAgIEZST00g dGEKKyAgV0hFUkUgRVhJU1RTIChTRUxFQ1QgMQorICAgICAgICAgICAgICAgICAgRlJPTSB0 YgorICAgICAgICAgICAgICAgICAgSk9JTiB0YworICAgICAgICAgICAgICAgICAgICBPTiB0 YS5pZCA9IHRjLmlkIGFuZAorICAgICAgICAgICAgICAgICAgICAgICB0YS5pZCA9IHRiLmlk KTsKKworLS0gQ29tcG91bmQgZXhwcmVzc2lvbiB3aXRoIGNvbnN0IHR5cGUKK0VYUExBSU4g KEFOQUxZWkUsIENPU1RTIE9GRiwgU1VNTUFSWSBPRkYsIFRJTUlORyBPRkYsIEJVRkZFUlMg T0ZGKQorIFNFTEVDVCAxCisgICBGUk9NIHRhCisgIFdIRVJFIEVYSVNUUyAoU0VMRUNUIDEK KyAgICAgICAgICAgICAgICAgIEZST00gdGIKKyAgICAgICAgICAgICAgICAgIEpPSU4gdGMK KyAgICAgICAgICAgICAgICAgICAgT04gdGEuaWQgPSB0Yy5pZCBhbmQKKyAgICAgICAgICAg ICAgICAgICAgICAgdGEuaWQgPSAxKTsKKworRVhQTEFJTiAoQU5BTFlaRSwgQ09TVFMgT0ZG LCBTVU1NQVJZIE9GRiwgVElNSU5HIE9GRiwgQlVGRkVSUyBPRkYpCisgU0VMRUNUIDEKKyAg IEZST00gdGEKKyAgV0hFUkUgTk9UIEVYSVNUUyAoU0VMRUNUIDEKKyAgICAgICAgICAgICAg ICAgIEZST00gdGIKKyAgICAgICAgICAgICAgICAgIEpPSU4gdGMKKyAgICAgICAgICAgICAg ICAgICAgT04gdGEuaWQgPSB0Yy5pZCBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgdGEu aWQgPSAxKTsKKworRVhQTEFJTiAoQU5BTFlaRSwgQ09TVFMgT0ZGLCBTVU1NQVJZIE9GRiwg VElNSU5HIE9GRiwgQlVGRkVSUyBPRkYpCisgU0VMRUNUIDEKKyAgIEZST00gdGEKKyAgV0hF UkUgRVhJU1RTIChTRUxFQ1QgMQorICAgICAgICAgICAgICAgICAgRlJPTSB0YgorICAgICAg ICAgICAgICAgICAgSk9JTiB0YworICAgICAgICAgICAgICAgICAgICBPTiB0Yi5pZCA9IDEg YW5kCisgICAgICAgICAgICAgICAgICAgICAgIHRhLmlkID0gMSk7CistLSBEaXNhYmxlZCBw dWxsIHVwIGJlY2F1c2UgaXQgaXMgYXBwbGNhcGFibGUgZm9yIElOTkVSIEpPSU4gY29ubmVj dGlvbgorRVhQTEFJTiAoQU5BTFlaRSwgQ09TVFMgT0ZGLCBTVU1NQVJZIE9GRiwgVElNSU5H IE9GRiwgQlVGRkVSUyBPRkYpCisgU0VMRUNUIDEKKyAgIEZST00gdGEKKyAgV0hFUkUgRVhJ U1RTIChTRUxFQ1QgMQorICAgICAgICAgICAgICAgICAgRlJPTSB0YgorICAgICAgICAgICAg ICAgICAgUklHSFQgSk9JTiB0YworICAgICAgICAgICAgICAgICAgICBPTiB0YS5pZCA9IHRj LmlkKTsKKwogLS0KIC0tIFRlc3QgY2FzZSBmb3Igc3VibGlua3MgcHVzaGVkIGRvd24gaW50 byBzdWJzZWxlY3RzIHZpYSBqb2luIGFsaWFzIGV4cGFuc2lvbgogLS0KLS0gCjIuMzQuMQoK --------------kvfWPdV1wNgKVxcxGE2mdZ50--