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 1rA2n8-004LFd-J8 for pgsql-hackers@arkaria.postgresql.org; Mon, 04 Dec 2023 06:50:55 +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 1rA2n7-00FFyZ-5i for pgsql-hackers@arkaria.postgresql.org; Mon, 04 Dec 2023 06:50:53 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rA2n6-00FFyM-AZ for pgsql-hackers@lists.postgresql.org; Mon, 04 Dec 2023 06:50:52 +0000 Received: from mail.postgrespro.ru ([93.174.131.139]) by makus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rA2n0-008hoK-AM for pgsql-hackers@postgresql.org; Mon, 04 Dec 2023 06:50:51 +0000 Received: from [192.168.1.37] (cm-27-145-179-50.revip12.asianet.co.th [27.145.179.50]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client did not present a certificate) (Authenticated sender: a.lepikhov@postgrespro.ru) by mail.postgrespro.ru (Postfix/587) with ESMTPSA id BB60AE20D83; Mon, 4 Dec 2023 09:50:38 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mx2023; t=1701672642; bh=y+PxCtP8iCokuHywpvgCNgDs60Exr/XP9d2WTnfsEoM=; h=Message-ID:Date:User-Agent:Subject:To:Cc:References:From: In-Reply-To:From; b=YniBvFvxI42bBO2FkCKrng857EGqjQ631F6fevVx/tkQUT+zQcXweZzS9o11oQ/5s cY9EZ6kFuuSZNNqgk9dtTZkZ2Zr6QxouliWd5RIf9bC2Nro6PJzCTpEJ0dOUJ48e6R VOxvkAEwVXabtQrN31qf4mkgGM0/kfuFPYOJQZqBUwNOCgCozgCY2fORKeo7f0ZGtP pfKVCPWcBDCw9/N37oDSHlDwfcSYFpBuZ1llvvOqZOJUpmgYWBZkRpTGgHVLJiBKgn dlgQ2OMLl8+u5dhH2E4aKpMNtFJSonvFXT3+hJZUYFy4o48r34a8FZJbwW44esXrrD HxzKNXSHWQEJw== Content-Type: multipart/mixed; boundary="------------nQAOjGR4g0BNZWgQrxxw09k6" Message-ID: <32d23d97-d07f-4d44-9933-ba3295fb3ed8@postgrespro.ru> Date: Mon, 4 Dec 2023 13:50:34 +0700 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: POC, WIP: OR-clause support for indexes To: Alena Rybakina , Robert Haas , pgsql-hackers@postgresql.org, Alexander Korotkov Cc: Peter Geoghegan , "Finnerty, Jim" , Marcos Pegoraro , teodor@sigaev.ru, Ranier Vilela , Tomas Vondra , Peter Eisentraut References: <567ED6CA.2040504@sigaev.ru> <16a7e3aa-24c0-4986-8820-ea2857bd7b6b@postgrespro.ru> <421656a9-5df7-41bb-9d58-1c1edbd5dc3e@postgrespro.ru> <28c727ba-5260-42a8-88b0-4ecdeeca6ef8@postgrespro.ru> <4c1c2c0b-802f-45ae-a7cd-007bfd8957cf@postgrespro.ru> <52f0d302-7963-452f-8c5a-f66d261514eb@postgrespro.ru> <43ad8a48-b980-410d-a83c-5beebf82a4ed@postgrespro.ru> <04ef16eb-46c1-4ce7-9f68-d1c80ef0be81@postgrespro.ru> <59e67a40-95a8-4d74-ae4e-027ea0f59084@postgrespro.ru> <59b77a8a-29d6-4727-bf26-4a30a6a9719a@postgrespro.ru> Content-Language: en-US From: Andrei Lepikhov Organization: Postgres Professional In-Reply-To: <59b77a8a-29d6-4727-bf26-4a30a6a9719a@postgrespro.ru> 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. --------------nQAOjGR4g0BNZWgQrxxw09k6 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Hi, Here is the next version of the patch where, I think, all of Roberts's claims related to the code have been fixed. For example, expression 'x < 1 OR x < 2' is transformed to 'x < ANY (1,2)'. Here, we still need to deal with the architectural issues. I like the approach mentioned by Peter: try to transform the expression tree to some 'normal' form, which is more laconic and simple; delay the search for any optimization ways to the following stages. Also, it doesn't pass pg_dump test. At first glance, it is a problem of regex expression, which should be corrected further. -- regards, Andrei Lepikhov Postgres Professional --------------nQAOjGR4g0BNZWgQrxxw09k6 Content-Type: text/plain; charset=UTF-8; name="v14-0001-Transform-OR-clause-to-ANY-expressions.patch" Content-Disposition: attachment; filename="v14-0001-Transform-OR-clause-to-ANY-expressions.patch" Content-Transfer-Encoding: base64 RnJvbSA3MzAzMWI3YWNhZTY4NDk0ZGRkMGY5YjFmYWY0Yzk0YWFlM2JkNmIwIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiQW5kcmV5IFYuIExlcGlraG92IiA8YS5sZXBpa2hv dkBwb3N0Z3Jlc3Byby5ydT4KRGF0ZTogVGh1LCAyMyBOb3YgMjAyMyAxNjowMDoxMyArMDcw MApTdWJqZWN0OiBbUEFUQ0hdIFRyYW5zZm9ybSBPUiBjbGF1c2UgdG8gQU5ZIGV4cHJlc3Np b25zLgoKUmVwbGFjZSAoZXhwciBvcCBDMSkgT1IgKGV4cHIgb3AgQzIpIC4uLiB3aXRoIGV4 cHIgb3AgQU5ZKEMxLCBDMiwgLi4uKSBvbiB0aGUKcHJlbGltaW5hcnkgc3RhZ2Ugb2Ygb3B0 aW1pemF0aW9uIHdoZW4gd2UgYXJlIHN0aWxsIHdvcmtpbmcgd2l0aCB0aGUgdHJlZQpleHBy ZXNzaW9uLgpIZXJlIEM8WD4gaXMgYSBjb25zdGFudCBleHByZXNzaW9uLCAnZXhwcicgaXMg bm9uLWNvbnN0YW50IGV4cHJlc3Npb24sICdvcCcgaXMKYW4gb3BlcmF0b3Igd2hpY2ggcmV0 dXJucyBib29sZWFuIHJlc3VsdCBhbmQgaGFzIGEgY29tbXV0ZXIgKGZvciB0aGUgY2FzZSBv ZgpyZXZlcnNlIG9yZGVyIG9mIGNvbnN0YW50IGFuZCBub24tY29uc3RhbnQgcGFydHMgb2Yg dGhlIGV4cHJlc3Npb24sCmxpa2UgJ0NYIG9wIGV4cHInKS4KU29tZXRpbWVzIGl0IGNhbiBs ZWFkIHRvIG5vdCBvcHRpbWFsIHBsYW4uIEJ1dCB3ZSB0aGluayBpdCBpcyBiZXR0ZXIgdG8g aGF2ZQphcnJheSBvZiBlbGVtZW50cyBpbnN0ZWFkIG9mIGEgbG90IG9mIE9SIGNsYXVzZXMu IEhlcmUgaXMgYSByb29tIGZvciBmdXJ0aGVyCm9wdGltaXphdGlvbnMgb24gZGVjb21wb3Np bmcgdGhhdCBhcnJheSBpbnRvIG1vcmUgb3B0aW1hbCBwYXJ0cy4KLS0tCiAuLi4vcG9zdGdy ZXNfZmR3L2V4cGVjdGVkL3Bvc3RncmVzX2Zkdy5vdXQgICAgfCAgMTYgKy0KIHNyYy9iYWNr ZW5kL25vZGVzL3F1ZXJ5anVtYmxlZnVuY3MuYyAgICAgICAgICB8ICAzMCArKwogc3JjL2Jh Y2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYyAgICAgICAgICAgICAgIHwgMzEwICsrKysrKysr KysrKysrKysrLQogc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMgICAgICAg ICAgIHwgIDExICsKIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNh bXBsZSB8ICAgMSArCiBzcmMvaW5jbHVkZS9ub2Rlcy9xdWVyeWp1bWJsZS5oICAgICAgICAg ICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX2V4cHIuaCAgICAgICAg ICAgICAgIHwgICAxICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX2luZGV4 Lm91dCAgICB8IDE1NiArKysrKysrKy0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaW5o ZXJpdC5vdXQgICAgICAgICB8ICAgMiArLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9q b2luLm91dCAgICAgICAgICAgIHwgIDYyICsrKy0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvcGFydGl0aW9uX3BydW5lLm91dCB8IDIxOSArKysrKysrKysrKy0tCiBzcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dCAgICAgICAgICAgfCAgIDQgKy0KIHNyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvc3RhdHNfZXh0Lm91dCAgICAgICB8ICAxMiArLQogc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9zeXN2aWV3cy5vdXQgICAgICAgIHwgICAzICstCiBzcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL3RpZHNjYW4ub3V0ICAgICAgICAgfCAgMjMgKy0KIHNy Yy90ZXN0L3JlZ3Jlc3Mvc3FsL2NyZWF0ZV9pbmRleC5zcWwgICAgICAgICB8ICAzNSArKwog c3JjL3Rlc3QvcmVncmVzcy9zcWwvam9pbi5zcWwgICAgICAgICAgICAgICAgIHwgIDEwICsK IHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9wcnVuZS5zcWwgICAgICB8ICAyMiAr Kwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvdGlkc2Nhbi5zcWwgICAgICAgICAgICAgIHwgICA2 ICsKIHNyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0ICAgICAgICAgICAgICB8ICAg MiArCiAyMCBmaWxlcyBjaGFuZ2VkLCA4NTkgaW5zZXJ0aW9ucygrKSwgNjcgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvZXhwZWN0ZWQvcG9zdGdy ZXNfZmR3Lm91dCBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2V4cGVjdGVkL3Bvc3RncmVzX2Zk dy5vdXQKaW5kZXggMGE1YmRmOGJjYy4uZmY2OWIyY2QzYiAxMDA2NDQKLS0tIGEvY29udHJp Yi9wb3N0Z3Jlc19mZHcvZXhwZWN0ZWQvcG9zdGdyZXNfZmR3Lm91dAorKysgYi9jb250cmli L3Bvc3RncmVzX2Zkdy9leHBlY3RlZC9wb3N0Z3Jlc19mZHcub3V0CkBAIC0xMzQ5LDcgKzEz NDksNyBAQCBTRUxFQ1QgdDEuYzEsIHQxLmMyLCB0Mi5jMSwgdDIuYzIgRlJPTSBmdDQgdDEg TEVGVCBKT0lOIChTRUxFQ1QgKiBGUk9NIGZ0NSBXSEVSRQogIEZvcmVpZ24gU2NhbgogICAg T3V0cHV0OiB0MS5jMSwgdDEuYzIsIGZ0NS5jMSwgZnQ1LmMyCiAgICBSZWxhdGlvbnM6IChw dWJsaWMuZnQ0IHQxKSBMRUZUIEpPSU4gKHB1YmxpYy5mdDUpCi0gICBSZW1vdGUgU1FMOiBT RUxFQ1QgcjEuYzEsIHIxLmMyLCByNC5jMSwgcjQuYzIgRlJPTSAoIlMgMSIuIlQgMyIgcjEg TEVGVCBKT0lOICJTIDEiLiJUIDQiIHI0IE9OICgoKHIxLmMxID0gcjQuYzEpKSBBTkQgKChy NC5jMSA8IDEwKSkpKSBXSEVSRSAoKChyNC5jMSA8IDEwKSBPUiAocjQuYzEgSVMgTlVMTCkp KSBBTkQgKChyMS5jMSA8IDEwKSkKKyAgIFJlbW90ZSBTUUw6IFNFTEVDVCByMS5jMSwgcjEu YzIsIHI0LmMxLCByNC5jMiBGUk9NICgiUyAxIi4iVCAzIiByMSBMRUZUIEpPSU4gIlMgMSIu IlQgNCIgcjQgT04gKCgocjEuYzEgPSByNC5jMSkpIEFORCAoKHI0LmMxIDwgMTApKSkpIFdI RVJFICgoKHI0LmMxIElTIE5VTEwpIE9SIChyNC5jMSA8IDEwKSkpIEFORCAoKHIxLmMxIDwg MTApKQogKDQgcm93cykKIAogU0VMRUNUIHQxLmMxLCB0MS5jMiwgdDIuYzEsIHQyLmMyIEZS T00gZnQ0IHQxIExFRlQgSk9JTiAoU0VMRUNUICogRlJPTSBmdDUgV0hFUkUgYzEgPCAxMCkg dDIgT04gKHQxLmMxID0gdDIuYzEpCkBAIC0zMTEyLDcgKzMxMTIsNyBAQCBzZWxlY3QgYXJy YXlfYWdnKGRpc3RpbmN0ICh0MS5jMSklNSkgZnJvbSBmdDQgdDEgZnVsbCBqb2luIGZ0NSB0 MiBvbiAodDEuYzEgPSB0MgogIEZvcmVpZ24gU2NhbgogICAgT3V0cHV0OiAoYXJyYXlfYWdn KERJU1RJTkNUICh0MS5jMSAlIDUpKSksICgodDIuYzEgJSAzKSkKICAgIFJlbGF0aW9uczog QWdncmVnYXRlIG9uICgocHVibGljLmZ0NCB0MSkgRlVMTCBKT0lOIChwdWJsaWMuZnQ1IHQy KSkKLSAgIFJlbW90ZSBTUUw6IFNFTEVDVCBhcnJheV9hZ2coRElTVElOQ1QgKHIxLmMxICUg NSkpLCAocjIuYzEgJSAzKSBGUk9NICgiUyAxIi4iVCAzIiByMSBGVUxMIEpPSU4gIlMgMSIu IlQgNCIgcjIgT04gKCgocjEuYzEgPSByMi5jMSkpKSkgV0hFUkUgKCgocjEuYzEgPCAyMCkg T1IgKChyMS5jMSBJUyBOVUxMKSBBTkQgKHIyLmMxIDwgNSkpKSkgR1JPVVAgQlkgMiBPUkRF UiBCWSBhcnJheV9hZ2coRElTVElOQ1QgKHIxLmMxICUgNSkpIEFTQyBOVUxMUyBMQVNUCisg ICBSZW1vdGUgU1FMOiBTRUxFQ1QgYXJyYXlfYWdnKERJU1RJTkNUIChyMS5jMSAlIDUpKSwg KHIyLmMxICUgMykgRlJPTSAoIlMgMSIuIlQgMyIgcjEgRlVMTCBKT0lOICJTIDEiLiJUIDQi IHIyIE9OICgoKHIxLmMxID0gcjIuYzEpKSkpIFdIRVJFICgoKChyMS5jMSBJUyBOVUxMKSBB TkQgKHIyLmMxIDwgNSkpIE9SIChyMS5jMSA8IDIwKSkpIEdST1VQIEJZIDIgT1JERVIgQlkg YXJyYXlfYWdnKERJU1RJTkNUIChyMS5jMSAlIDUpKSBBU0MgTlVMTFMgTEFTVAogKDQgcm93 cykKIAogc2VsZWN0IGFycmF5X2FnZyhkaXN0aW5jdCAodDEuYzEpJTUpIGZyb20gZnQ0IHQx IGZ1bGwgam9pbiBmdDUgdDIgb24gKHQxLmMxID0gdDIuYzEpIHdoZXJlIHQxLmMxIDwgMjAg b3IgKHQxLmMxIGlzIG51bGwgYW5kIHQyLmMxIDwgNSkgZ3JvdXAgYnkgKHQyLmMxKSUzIG9y ZGVyIGJ5IDE7CkBAIC0zMTMwLDcgKzMxMzAsNyBAQCBzZWxlY3QgYXJyYXlfYWdnKGRpc3Rp bmN0ICh0MS5jMSklNSBvcmRlciBieSAodDEuYzEpJTUpIGZyb20gZnQ0IHQxIGZ1bGwgam9p biBmdAogIEZvcmVpZ24gU2NhbgogICAgT3V0cHV0OiAoYXJyYXlfYWdnKERJU1RJTkNUICh0 MS5jMSAlIDUpIE9SREVSIEJZICh0MS5jMSAlIDUpKSksICgodDIuYzEgJSAzKSkKICAgIFJl bGF0aW9uczogQWdncmVnYXRlIG9uICgocHVibGljLmZ0NCB0MSkgRlVMTCBKT0lOIChwdWJs aWMuZnQ1IHQyKSkKLSAgIFJlbW90ZSBTUUw6IFNFTEVDVCBhcnJheV9hZ2coRElTVElOQ1Qg KHIxLmMxICUgNSkgT1JERVIgQlkgKChyMS5jMSAlIDUpKSBBU0MgTlVMTFMgTEFTVCksIChy Mi5jMSAlIDMpIEZST00gKCJTIDEiLiJUIDMiIHIxIEZVTEwgSk9JTiAiUyAxIi4iVCA0IiBy MiBPTiAoKChyMS5jMSA9IHIyLmMxKSkpKSBXSEVSRSAoKChyMS5jMSA8IDIwKSBPUiAoKHIx LmMxIElTIE5VTEwpIEFORCAocjIuYzEgPCA1KSkpKSBHUk9VUCBCWSAyIE9SREVSIEJZIGFy cmF5X2FnZyhESVNUSU5DVCAocjEuYzEgJSA1KSBPUkRFUiBCWSAoKHIxLmMxICUgNSkpIEFT QyBOVUxMUyBMQVNUKSBBU0MgTlVMTFMgTEFTVAorICAgUmVtb3RlIFNRTDogU0VMRUNUIGFy cmF5X2FnZyhESVNUSU5DVCAocjEuYzEgJSA1KSBPUkRFUiBCWSAoKHIxLmMxICUgNSkpIEFT QyBOVUxMUyBMQVNUKSwgKHIyLmMxICUgMykgRlJPTSAoIlMgMSIuIlQgMyIgcjEgRlVMTCBK T0lOICJTIDEiLiJUIDQiIHIyIE9OICgoKHIxLmMxID0gcjIuYzEpKSkpIFdIRVJFICgoKChy MS5jMSBJUyBOVUxMKSBBTkQgKHIyLmMxIDwgNSkpIE9SIChyMS5jMSA8IDIwKSkpIEdST1VQ IEJZIDIgT1JERVIgQlkgYXJyYXlfYWdnKERJU1RJTkNUIChyMS5jMSAlIDUpIE9SREVSIEJZ ICgocjEuYzEgJSA1KSkgQVNDIE5VTExTIExBU1QpIEFTQyBOVUxMUyBMQVNUCiAoNCByb3dz KQogCiBzZWxlY3QgYXJyYXlfYWdnKGRpc3RpbmN0ICh0MS5jMSklNSBvcmRlciBieSAodDEu YzEpJTUpIGZyb20gZnQ0IHQxIGZ1bGwgam9pbiBmdDUgdDIgb24gKHQxLmMxID0gdDIuYzEp IHdoZXJlIHQxLmMxIDwgMjAgb3IgKHQxLmMxIGlzIG51bGwgYW5kIHQyLmMxIDwgNSkgZ3Jv dXAgYnkgKHQyLmMxKSUzIG9yZGVyIGJ5IDE7CkBAIC0zMTQ3LDcgKzMxNDcsNyBAQCBzZWxl Y3QgYXJyYXlfYWdnKGRpc3RpbmN0ICh0MS5jMSklNSBvcmRlciBieSAodDEuYzEpJTUgZGVz YyBudWxscyBsYXN0KSBmcm9tIGZ0NAogIEZvcmVpZ24gU2NhbgogICAgT3V0cHV0OiAoYXJy YXlfYWdnKERJU1RJTkNUICh0MS5jMSAlIDUpIE9SREVSIEJZICh0MS5jMSAlIDUpIERFU0Mg TlVMTFMgTEFTVCkpLCAoKHQyLmMxICUgMykpCiAgICBSZWxhdGlvbnM6IEFnZ3JlZ2F0ZSBv biAoKHB1YmxpYy5mdDQgdDEpIEZVTEwgSk9JTiAocHVibGljLmZ0NSB0MikpCi0gICBSZW1v dGUgU1FMOiBTRUxFQ1QgYXJyYXlfYWdnKERJU1RJTkNUIChyMS5jMSAlIDUpIE9SREVSIEJZ ICgocjEuYzEgJSA1KSkgREVTQyBOVUxMUyBMQVNUKSwgKHIyLmMxICUgMykgRlJPTSAoIlMg MSIuIlQgMyIgcjEgRlVMTCBKT0lOICJTIDEiLiJUIDQiIHIyIE9OICgoKHIxLmMxID0gcjIu YzEpKSkpIFdIRVJFICgoKHIxLmMxIDwgMjApIE9SICgocjEuYzEgSVMgTlVMTCkgQU5EIChy Mi5jMSA8IDUpKSkpIEdST1VQIEJZIDIgT1JERVIgQlkgYXJyYXlfYWdnKERJU1RJTkNUIChy MS5jMSAlIDUpIE9SREVSIEJZICgocjEuYzEgJSA1KSkgREVTQyBOVUxMUyBMQVNUKSBBU0Mg TlVMTFMgTEFTVAorICAgUmVtb3RlIFNRTDogU0VMRUNUIGFycmF5X2FnZyhESVNUSU5DVCAo cjEuYzEgJSA1KSBPUkRFUiBCWSAoKHIxLmMxICUgNSkpIERFU0MgTlVMTFMgTEFTVCksIChy Mi5jMSAlIDMpIEZST00gKCJTIDEiLiJUIDMiIHIxIEZVTEwgSk9JTiAiUyAxIi4iVCA0IiBy MiBPTiAoKChyMS5jMSA9IHIyLmMxKSkpKSBXSEVSRSAoKCgocjEuYzEgSVMgTlVMTCkgQU5E IChyMi5jMSA8IDUpKSBPUiAocjEuYzEgPCAyMCkpKSBHUk9VUCBCWSAyIE9SREVSIEJZIGFy cmF5X2FnZyhESVNUSU5DVCAocjEuYzEgJSA1KSBPUkRFUiBCWSAoKHIxLmMxICUgNSkpIERF U0MgTlVMTFMgTEFTVCkgQVNDIE5VTExTIExBU1QKICg0IHJvd3MpCiAKIHNlbGVjdCBhcnJh eV9hZ2coZGlzdGluY3QgKHQxLmMxKSU1IG9yZGVyIGJ5ICh0MS5jMSklNSBkZXNjIG51bGxz IGxhc3QpIGZyb20gZnQ0IHQxIGZ1bGwgam9pbiBmdDUgdDIgb24gKHQxLmMxID0gdDIuYzEp IHdoZXJlIHQxLmMxIDwgMjAgb3IgKHQxLmMxIGlzIG51bGwgYW5kIHQyLmMxIDwgNSkgZ3Jv dXAgYnkgKHQyLmMxKSUzIG9yZGVyIGJ5IDE7CkBAIC04NTM3LDE4ICs4NTM3LDE4IEBAIGlu c2VydCBpbnRvIHV0cnRlc3QgdmFsdWVzICgyLCAncXV4Jyk7CiAtLSBDaGVjayBjYXNlIHdo ZXJlIHRoZSBmb3JlaWduIHBhcnRpdGlvbiBpcyBhIHN1YnBsYW4gdGFyZ2V0IHJlbAogZXhw bGFpbiAodmVyYm9zZSwgY29zdHMgb2ZmKQogdXBkYXRlIHV0cnRlc3Qgc2V0IGEgPSAxIHdo ZXJlIGEgPSAxIG9yIGEgPSAyIHJldHVybmluZyAqOwotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgVXBkYXRlIG9uIHB1YmxpYy51dHJ0ZXN0 CiAgICBPdXRwdXQ6IHV0cnRlc3RfMS5hLCB1dHJ0ZXN0XzEuYgogICAgRm9yZWlnbiBVcGRh dGUgb24gcHVibGljLnJlbXAgdXRydGVzdF8xCiAgICBVcGRhdGUgb24gcHVibGljLmxvY3Ag dXRydGVzdF8yCiAgICAtPiAgQXBwZW5kCiAgICAgICAgICAtPiAgRm9yZWlnbiBVcGRhdGUg b24gcHVibGljLnJlbXAgdXRydGVzdF8xCi0gICAgICAgICAgICAgICBSZW1vdGUgU1FMOiBV UERBVEUgcHVibGljLmxvY3QgU0VUIGEgPSAxIFdIRVJFICgoKGEgPSAxKSBPUiAoYSA9IDIp KSkgUkVUVVJOSU5HIGEsIGIKKyAgICAgICAgICAgICAgIFJlbW90ZSBTUUw6IFVQREFURSBw dWJsaWMubG9jdCBTRVQgYSA9IDEgV0hFUkUgKChhID0gQU5ZICgnezEsMn0nOjppbnRlZ2Vy W10pKSkgUkVUVVJOSU5HIGEsIGIKICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMu bG9jcCB1dHJ0ZXN0XzIKICAgICAgICAgICAgICAgIE91dHB1dDogMSwgdXRydGVzdF8yLnRh Ymxlb2lkLCB1dHJ0ZXN0XzIuY3RpZCwgTlVMTDo6cmVjb3JkCi0gICAgICAgICAgICAgICBG aWx0ZXI6ICgodXRydGVzdF8yLmEgPSAxKSBPUiAodXRydGVzdF8yLmEgPSAyKSkKKyAgICAg ICAgICAgICAgIEZpbHRlcjogKHV0cnRlc3RfMi5hID0gQU5ZICgnezEsMn0nOjppbnRlZ2Vy W10pKQogKDEwIHJvd3MpCiAKIC0tIFRoZSBuZXcgdmFsdWVzIGFyZSBjb25jYXRlbmF0ZWQg d2l0aCAnIHRyaWdnZXJlZCAhJwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMvcXVl cnlqdW1ibGVmdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvcXVlcnlqdW1ibGVmdW5jcy5j CmluZGV4IDI4MTkwN2E0ZDguLjk5MjA3YTg2NzAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L25vZGVzL3F1ZXJ5anVtYmxlZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9xdWVy eWp1bWJsZWZ1bmNzLmMKQEAgLTEzNSw2ICsxMzUsMzYgQEAgSnVtYmxlUXVlcnkoUXVlcnkg KnF1ZXJ5KQogCXJldHVybiBqc3RhdGU7CiB9CiAKK0p1bWJsZVN0YXRlICoKK0p1bWJsZUV4 cHIoRXhwciAqZXhwciwgdWludDY0ICpxdWVyeUlkKQoreworCUp1bWJsZVN0YXRlICpqc3Rh dGUgPSBOVUxMOworCisJQXNzZXJ0KHF1ZXJ5SWQgIT0gTlVMTCk7CisKKwlqc3RhdGUgPSAo SnVtYmxlU3RhdGUgKikgcGFsbG9jKHNpemVvZihKdW1ibGVTdGF0ZSkpOworCisJLyogU2V0 IHVwIHdvcmtzcGFjZSBmb3IgcXVlcnkganVtYmxpbmcgKi8KKwlqc3RhdGUtPmp1bWJsZSA9 ICh1bnNpZ25lZCBjaGFyICopIHBhbGxvYyhKVU1CTEVfU0laRSk7CisJanN0YXRlLT5qdW1i bGVfbGVuID0gMDsKKwlqc3RhdGUtPmNsb2NhdGlvbnNfYnVmX3NpemUgPSAzMjsKKwlqc3Rh dGUtPmNsb2NhdGlvbnMgPSAoTG9jYXRpb25MZW4gKikKKwkJcGFsbG9jKGpzdGF0ZS0+Y2xv Y2F0aW9uc19idWZfc2l6ZSAqIHNpemVvZihMb2NhdGlvbkxlbikpOworCWpzdGF0ZS0+Y2xv Y2F0aW9uc19jb3VudCA9IDA7CisJanN0YXRlLT5oaWdoZXN0X2V4dGVybl9wYXJhbV9pZCA9 IDA7CisKKwkvKiBDb21wdXRlIHF1ZXJ5IElEICovCisJX2p1bWJsZU5vZGUoanN0YXRlLCAo Tm9kZSAqKSBleHByKTsKKwkqcXVlcnlJZCA9IERhdHVtR2V0VUludDY0KGhhc2hfYW55X2V4 dGVuZGVkKGpzdGF0ZS0+anVtYmxlLAorCQkJCQkJCQkJCQkJanN0YXRlLT5qdW1ibGVfbGVu LAorCQkJCQkJCQkJCQkJMCkpOworCisJaWYgKCpxdWVyeUlkID09IFVJTlQ2NENPTlNUKDAp KQorCQkqcXVlcnlJZCA9IFVJTlQ2NENPTlNUKDEpOworCisJcmV0dXJuIGpzdGF0ZTsKK30K KwogLyoKICAqIEVuYWJsZXMgcXVlcnkgaWRlbnRpZmllciBjb21wdXRhdGlvbi4KICAqCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jIGIvc3JjL2JhY2tl bmQvcGFyc2VyL3BhcnNlX2V4cHIuYwppbmRleCA2NGM1ODJjMzQ0Li45ZjRkNDM1NzJjIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jCisrKyBiL3NyYy9i YWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMKQEAgLTE2LDEyICsxNiwxNCBAQAogI2luY2x1 ZGUgInBvc3RncmVzLmgiCiAKICNpbmNsdWRlICJjYXRhbG9nL3BnX2FnZ3JlZ2F0ZS5oIgor I2luY2x1ZGUgImNhdGFsb2cvcGdfb3BlcmF0b3IuaCIKICNpbmNsdWRlICJjYXRhbG9nL3Bn X3Byb2MuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKICNpbmNsdWRlICJjb21t YW5kcy9kYmNvbW1hbmRzLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAi bm9kZXMvbWFrZWZ1bmNzLmgiCiAjaW5jbHVkZSAibm9kZXMvbm9kZUZ1bmNzLmgiCisjaW5j bHVkZSAibm9kZXMvcXVlcnlqdW1ibGUuaCIKICNpbmNsdWRlICJvcHRpbWl6ZXIvb3B0aW1p emVyLmgiCiAjaW5jbHVkZSAicGFyc2VyL2FuYWx5emUuaCIKICNpbmNsdWRlICJwYXJzZXIv cGFyc2VfYWdnLmgiCkBAIC0zOCwxMSArNDAsMTMgQEAKICNpbmNsdWRlICJ1dGlscy9kYXRl LmgiCiAjaW5jbHVkZSAidXRpbHMvZm1ncm9pZHMuaCIKICNpbmNsdWRlICJ1dGlscy9sc3lz Y2FjaGUuaCIKKyNpbmNsdWRlICJ1dGlscy9zeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxz L3RpbWVzdGFtcC5oIgogI2luY2x1ZGUgInV0aWxzL3htbC5oIgogCiAvKiBHVUMgcGFyYW1l dGVycyAqLwogYm9vbAkJVHJhbnNmb3JtX251bGxfZXF1YWxzID0gZmFsc2U7Citib29sCQll bmFibGVfb3JfdHJhbnNmb3JtYXRpb24gPSB0cnVlOwogCiAKIHN0YXRpYyBOb2RlICp0cmFu c2Zvcm1FeHByUmVjdXJzZShQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKmV4cHIpOwpAQCAt OTksNiArMTAzLDMxMCBAQCBzdGF0aWMgRXhwciAqbWFrZV9kaXN0aW5jdF9vcChQYXJzZVN0 YXRlICpwc3RhdGUsIExpc3QgKm9wbmFtZSwKIHN0YXRpYyBOb2RlICptYWtlX251bGx0ZXN0 X2Zyb21fZGlzdGluY3QoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkJCQkJCSBBX0V4cHIg KmRpc3RpbmN0YSwgTm9kZSAqYXJnKTsKIAordHlwZWRlZiBzdHJ1Y3QgT3JDbGF1c2VHcm91 cEtleQoreworCUV4cHIgICAqZXhwcjsgLyogUG9pbnRlciB0byB0aGUgZXhwcmVzc2lvbiB0 cmVlIHdoaWNoIGhhcyBiZWVuIGEgc291cmNlIGZvcgorCQkJCQl0aGUgaGFzaGtleSB2YWx1 ZSAqLworCU9pZAkJb3BubzsKKwlPaWQJCWV4cHJ0eXBlOworfSBPckNsYXVzZUdyb3VwS2V5 OworCit0eXBlZGVmIHN0cnVjdCBPckNsYXVzZUdyb3VwRW50cnkKK3sKKwlPckNsYXVzZUdy b3VwS2V5IGtleTsKKworCU5vZGUJCSAgICpub2RlOworCUxpc3QJCSAgICpjb25zdHM7CisJ T2lkCQkJCXNjYWxhcl90eXBlOworCUxpc3QgCQkgICAqZXhwcnM7Cit9IE9yQ2xhdXNlR3Jv dXBFbnRyeTsKKworLyoKKyAqIEhhc2ggZnVuY3Rpb24gdGhhdCdzIGNvbXBhdGlibGUgd2l0 aCBndWNfbmFtZV9jb21wYXJlCisgKi8KK3N0YXRpYyB1aW50MzIKK29yY2xhdXNlX2hhc2go Y29uc3Qgdm9pZCAqZGF0YSwgU2l6ZSBrZXlzaXplKQoreworCU9yQ2xhdXNlR3JvdXBLZXkg ICAqa2V5ID0gKE9yQ2xhdXNlR3JvdXBLZXkgKikgZGF0YTsKKwl1aW50NjQJCQkJaGFzaDsK KworCSh2b2lkKSBKdW1ibGVFeHByKGtleS0+ZXhwciwgJmhhc2gpOworCWhhc2ggKz0gKCh1 aW50NjQpIGtleS0+b3BubyArICh1aW50NjQpIGtleS0+ZXhwcnR5cGUpICUgVUlOVDY0X01B WDsKKwlyZXR1cm4gaGFzaDsKK30KKworc3RhdGljIHZvaWQgKgorb3JjbGF1c2Vfa2V5Y29w eSh2b2lkICpkZXN0LCBjb25zdCB2b2lkICpzcmMsIFNpemUga2V5c2l6ZSkKK3sKKwlPckNs YXVzZUdyb3VwS2V5ICpzcmNfa2V5ID0gKE9yQ2xhdXNlR3JvdXBLZXkgKikgc3JjOworCU9y Q2xhdXNlR3JvdXBLZXkgKmRzdF9rZXkgPSAoT3JDbGF1c2VHcm91cEtleSAqKSBkZXN0Owor CisJQXNzZXJ0KHNpemVvZihPckNsYXVzZUdyb3VwS2V5KSA9PSBrZXlzaXplKTsKKworCWRz dF9rZXktPmV4cHIgPSBzcmNfa2V5LT5leHByOworCWRzdF9rZXktPm9wbm8gPSBzcmNfa2V5 LT5vcG5vOworCWRzdF9rZXktPmV4cHJ0eXBlID0gc3JjX2tleS0+ZXhwcnR5cGU7CisJcmV0 dXJuIGRzdF9rZXk7Cit9CisKKy8qCisgKiBEeW5haGFzaCBtYXRjaCBmdW5jdGlvbiB0byB1 c2UgaW4gZ3VjX2hhc2h0YWIKKyAqLworc3RhdGljIGludAorb3JjbGF1c2VfbWF0Y2goY29u c3Qgdm9pZCAqZGF0YTEsIGNvbnN0IHZvaWQgKmRhdGEyLCBTaXplIGtleXNpemUpCit7CisJ T3JDbGF1c2VHcm91cEtleSAgICprZXkxID0gKE9yQ2xhdXNlR3JvdXBLZXkgKikgZGF0YTE7 CisJT3JDbGF1c2VHcm91cEtleSAgICprZXkyID0gKE9yQ2xhdXNlR3JvdXBLZXkgKikgZGF0 YTI7CisKKwlBc3NlcnQoc2l6ZW9mKE9yQ2xhdXNlR3JvdXBLZXkpID09IGtleXNpemUpOwor CisJaWYgKGtleTEtPm9wbm8gPT0ga2V5Mi0+b3BubyAmJiBrZXkxLT5leHBydHlwZSA9PSBr ZXkyLT5leHBydHlwZSAmJgorCQllcXVhbChrZXkxLT5leHByLCBrZXkyLT5leHByKSkKKwkJ cmV0dXJuIDA7CisKKwlyZXR1cm4gMTsKK30KKworc3RhdGljIE5vZGUgKgordHJhbnNmb3Jt Qm9vbEV4cHJPcihQYXJzZVN0YXRlICpwc3RhdGUsIEJvb2xFeHByICpleHByKQoreworCUxp c3QJCQkJICAgKm9yX2xpc3QgPSBOSUw7CisJTGlzdAkJCQkgICAqZW50cmllcyA9IE5JTDsK KwlMaXN0Q2VsbAkJCSAgICpsYzsKKwlIQVNIQ1RMCQkJCQlpbmZvOworCUhUQUIgCQkJCSAg ICpvcl9ncm91cF9odGFiID0gTlVMTDsKKwlpbnQgCQkJCQlsZW5fb3JzID0gbGlzdF9sZW5n dGgoZXhwci0+YXJncyk7CisJT3JDbGF1c2VHcm91cEVudHJ5CSAgICplbnRyeSA9IE5VTEw7 CisKKwkvKiBJZiB0aGlzIGlzIG5vdCBhbiAnT1InIGV4cHJlc3Npb24sIHNraXAgdGhlIHRy YW5zZm9ybWF0aW9uICovCisJaWYgKCFlbmFibGVfb3JfdHJhbnNmb3JtYXRpb24gfHwgZXhw ci0+Ym9vbG9wICE9IE9SX0VYUFIgfHwgbGVuX29ycyA8IDIpCisJCXJldHVybiB0cmFuc2Zv cm1Cb29sRXhwcihwc3RhdGUsIChCb29sRXhwciAqKSBleHByKTsKKworCU1lbVNldCgmaW5m bywgMCwgc2l6ZW9mKGluZm8pKTsKKwlpbmZvLmtleXNpemUgPSBzaXplb2YoT3JDbGF1c2VH cm91cEtleSk7CisJaW5mby5lbnRyeXNpemUgPSBzaXplb2YoT3JDbGF1c2VHcm91cEVudHJ5 KTsKKwlpbmZvLmhhc2ggPSBvcmNsYXVzZV9oYXNoOworCWluZm8ua2V5Y29weSA9IG9yY2xh dXNlX2tleWNvcHk7CisJaW5mby5tYXRjaCA9IG9yY2xhdXNlX21hdGNoOworCW9yX2dyb3Vw X2h0YWIgPSBoYXNoX2NyZWF0ZSgiT1IgR3JvdXBzIiwKKwkJCQkJCQkJbGVuX29ycywKKwkJ CQkJCQkJJmluZm8sCisJCQkJCQkJCUhBU0hfRUxFTSB8IEhBU0hfRlVOQ1RJT04gfCBIQVNI X0NPTVBBUkUgfCBIQVNIX0tFWUNPUFkpOworCisJZm9yZWFjaChsYywgZXhwci0+YXJncykK Kwl7CisJCU5vZGUJCQkJICAgKmFyZyA9IGxmaXJzdChsYyk7CisJCU5vZGUJCQkJICAgKm9y cXVhbDsKKwkJTm9kZQkJCQkgICAqY29uc3RfZXhwcjsKKwkJTm9kZQkJCQkgICAqbmNvbnN0 X2V4cHI7CisJCU9yQ2xhdXNlR3JvdXBLZXkJCWhhc2hrZXk7CisJCWJvb2wJCQkJCWZvdW5k OworCQlPaWQJCQkJCQlvcG5vOworCQlOb2RlCQkJCSAgICpsZWZ0b3AsICpyaWdodG9wOwor CisJCS8qIEF0IGZpcnN0LCB0cmFuc2Zvcm0gdGhlIGFyZyBhbmQgZXZhbHVhdGUgY29uc3Rh bnQgZXhwcmVzc2lvbnMuICovCisJCW9ycXVhbCA9IHRyYW5zZm9ybUV4cHJSZWN1cnNlKHBz dGF0ZSwgKE5vZGUgKikgYXJnKTsKKwkJb3JxdWFsID0gY29lcmNlX3RvX2Jvb2xlYW4ocHN0 YXRlLCBvcnF1YWwsICJPUiIpOworCisJCWlmICghSXNBKG9ycXVhbCwgT3BFeHByKSkKKwkJ eworCQkJb3JfbGlzdCA9IGxhcHBlbmQob3JfbGlzdCwgb3JxdWFsKTsKKwkJCWNvbnRpbnVl OworCQl9CisKKwkJb3BubyA9ICgoT3BFeHByICopIG9ycXVhbCktPm9wbm87CisJCWlmIChn ZXRfb3BfcmV0dHlwZShvcG5vKSAhPSBCT09MT0lEKQorCQl7CisJCQkvKiBPbmx5IG9wZXJh dG9yIHJldHVybmluZyBib29sZWFuIHN1aXRzIE9SIC0+IEFOWSB0cmFuc2Zvcm1hdGlvbiAq LworCQkJb3JfbGlzdCA9IGxhcHBlbmQob3JfbGlzdCwgb3JxdWFsKTsKKwkJCWNvbnRpbnVl OworCQl9CisKKwkJLyoKKwkJICogRGV0ZWN0IHRoZSBjb25zdGFudCBzaWRlIG9mIHRoZSBj bGF1c2UuIFJlY2FsbCBub24tY29uc3RhbnQKKwkJICogZXhwcmVzc2lvbiBjYW4gYmUgbWFk ZSBub3Qgb25seSB3aXRoIFZhcnMsIGJ1dCBhbHNvIHdpdGggUGFyYW1zLAorCQkgKiB3aGlj aCBpcyBub3QgYm9uZGVkIHdpdGggYW55IHJlbGF0aW9uLiBUaHVzLCB3ZSBkZXRlY3QgdGhl IGNvbnN0CisJCSAqIHNpZGUgLSBpZiBhbm90aGVyIHNpZGUgaXMgY29uc3RhbnQgdG9vLCB0 aGUgb3JxdWFsIGNvdWxkbid0IGJlCisJCSAqIGFuIE9wRXhwci4KKwkJICogR2V0IHBvaW50 ZXJzIHRvIGNvbnN0YW50IGFuZCBleHByZXNzaW9uIHNpZGVzIG9mIHRoZSBxdWFsLgorCQkg Ki8KKwkJbGVmdG9wID0gZ2V0X2xlZnRvcChvcnF1YWwpOworCQlpZiAoSXNBKGxlZnRvcCwg UmVsYWJlbFR5cGUpKQorCQkJbGVmdG9wID0gKE5vZGUgKikgKChSZWxhYmVsVHlwZSAqKSBs ZWZ0b3ApLT5hcmc7CisJCXJpZ2h0b3AgPSBnZXRfcmlnaHRvcChvcnF1YWwpOworCQlpZiAo SXNBKHJpZ2h0b3AsIFJlbGFiZWxUeXBlKSkKKwkJCXJpZ2h0b3AgPSAoTm9kZSAqKSAoKFJl bGFiZWxUeXBlICopIHJpZ2h0b3ApLT5hcmc7CisKKwkJaWYgKElzQShsZWZ0b3AsIENvbnN0 KSkKKwkJeworCQkJb3BubyA9IGdldF9jb21tdXRhdG9yKG9wbm8pOworCisJCQlpZiAoIU9p ZElzVmFsaWQob3BubykpCisJCQl7CisJCQkJLyogQ29tbXV0ZXIgZG9lc24ndCBleGlzdCwg d2UgY2FuJ3QgcmV2ZXJzZSB0aGUgb3JkZXIgKi8KKwkJCQlvcl9saXN0ID0gbGFwcGVuZChv cl9saXN0LCBvcnF1YWwpOworCQkJCWNvbnRpbnVlOworCQkJfQorCisJCQluY29uc3RfZXhw ciA9IGdldF9yaWdodG9wKG9ycXVhbCk7CisJCQljb25zdF9leHByID0gZ2V0X2xlZnRvcChv cnF1YWwpOworCQl9CisJCWVsc2UgaWYgKElzQShyaWdodG9wLCBDb25zdCkpCisJCXsKKwkJ CWNvbnN0X2V4cHIgPSBnZXRfcmlnaHRvcChvcnF1YWwpOworCQkJbmNvbnN0X2V4cHIgPSBn ZXRfbGVmdG9wKG9ycXVhbCk7CisJCX0KKwkJZWxzZQorCQl7CisJCQlvcl9saXN0ID0gbGFw cGVuZChvcl9saXN0LCBvcnF1YWwpOworCQkJY29udGludWU7CisJCX0KKworCQkvKgorCQkq IEF0IHRoaXMgcG9pbnQgd2UgZGVmaW5pdGVseSBoYXZlIGEgdHJhbnNmb3JtYWJsZSBjbGF1 c2UuCisJCSogQ2xhc3NpZnkgaXQgYW5kIGFkZCBpbnRvIHNwZWNpZmljIGdyb3VwIG9mIGNs YXVzZXMsIG9yIGNyZWF0ZSBuZXcKKwkJKiBncm91cC4KKwkJKi8KKwkJaGFzaGtleS5leHBy ID0gKEV4cHIgKikgbmNvbnN0X2V4cHI7CisJCWhhc2hrZXkub3BubyA9IG9wbm87CisJCWhh c2hrZXkuZXhwcnR5cGUgPSBleHByVHlwZShuY29uc3RfZXhwcik7CisJCWVudHJ5ID0gaGFz aF9zZWFyY2gob3JfZ3JvdXBfaHRhYiwgJmhhc2hrZXksIEhBU0hfRU5URVIsICZmb3VuZCk7 CisKKwkJaWYgKHVubGlrZWx5KGZvdW5kKSkKKwkJeworCQkJZW50cnktPmNvbnN0cyA9IGxh cHBlbmQoZW50cnktPmNvbnN0cywgY29uc3RfZXhwcik7CisJCQllbnRyeS0+ZXhwcnMgPSBs YXBwZW5kKGVudHJ5LT5leHBycywgb3JxdWFsKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCWVu dHJ5LT5ub2RlID0gbmNvbnN0X2V4cHI7CisJCQllbnRyeS0+Y29uc3RzID0gbGlzdF9tYWtl MShjb25zdF9leHByKTsKKwkJCWVudHJ5LT5leHBycyA9IGxpc3RfbWFrZTEob3JxdWFsKTsK KworCQkJLyoKKwkJCSAqIEFkZCB0aGUgZW50cnkgdG8gdGhlIGxpc3QuIEl0IGlzIG5lZWRl ZCBleGNsdXNpdmVseSB0byBtYW5hZ2UgdGhlCisJCQkgKiBwcm9ibGVtIHdpdGggdGhlIG9y ZGVyIG9mIHRyYW5zZm9ybWVkIGNsYXVzZXMgaW4gZXhwbGFpbi4KKwkJCSAqIEhhc2ggdmFs dWUgY2FuIGRlcGVuZCBvbiB0aGUgcGxhdGZvcm0gYW5kIHZlcnNpb24uIEhlbmNlLAorCQkJ ICogc2VxdWVudGFsIHNjYW4gb2YgdGhlIGhhc2ggdGFibGUgd291bGQgcHJvbmUgdG8gY2hh bmdlIHRoZSBvcmRlcgorCQkJICogb2YgY2xhdXNlcyBpbiBsaXN0cyBhbmQsIGFzIGEgcmVz dWx0LCBicmVhayByZWdyZXNzaW9uIHRlc3RzCisJCQkgKiBhY2NpZGVudGlhbGx5LgorCQkJ ICovCisJCQllbnRyaWVzID0gbGFwcGVuZChlbnRyaWVzLCBlbnRyeSk7CisJCX0KKwl9CisK KwkvKiBMZXQncyBjb252ZXJ0IGVhY2ggZ3JvdXAgb2YgY2xhdXNlcyB0byBhbiBJTiBvcGVy YXRpb24uICovCisKKwkvKgorCSAqIEdvIHRocm91Z2ggdGhlIGxpc3Qgb2YgZ3JvdXBzIGFu ZCBjb252ZXJ0IGVhY2gsIHdoZXJlIG51bWJlciBvZgorCSAqIGNvbnN0cyBtb3JlIHRoYW4g MS4gdHJpdmlhbCBncm91cHMgbW92ZSB0byBPUi1saXN0IGFnYWluCisJICovCisKKwlmb3Jl YWNoIChsYywgZW50cmllcykKKwl7CisJCU9pZAkJCQkgICAgc2NhbGFyX3R5cGU7CisJCU9p ZAkJCQkJYXJyYXlfdHlwZTsKKworCQllbnRyeSA9IChPckNsYXVzZUdyb3VwRW50cnkgKikg bGZpcnN0KGxjKTsKKworCQlBc3NlcnQobGlzdF9sZW5ndGgoZW50cnktPmNvbnN0cykgPiAw KTsKKwkJQXNzZXJ0KGxpc3RfbGVuZ3RoKGVudHJ5LT5leHBycykgPT0gbGlzdF9sZW5ndGgo ZW50cnktPmNvbnN0cykpOworCisJCWlmIChsaXN0X2xlbmd0aChlbnRyeS0+Y29uc3RzKSA9 PSAxKQorCQl7CisJCQkvKgorCQkJICogT25seSBvbmUgZWxlbWVudCBpbiB0aGUgY2xhc3Mu IFJldHVybiBvcmlnaW4gZXhwcmVzc2lvbiBpbnRvCisJCQkgKiB0aGUgQm9vbEV4cHIgYXJn cyBsaXN0IHVuY2hhbmdlZC4KKwkJCSAqLworCQkJbGlzdF9mcmVlKGVudHJ5LT5jb25zdHMp OworCQkJb3JfbGlzdCA9IGxpc3RfY29uY2F0KG9yX2xpc3QsIGVudHJ5LT5leHBycyk7CisJ CQljb250aW51ZTsKKwkJfQorCisJCS8qCisJCSAqIERvIHRoZSB0cmFuc2Zvcm1hdGlvbi4K KwkJICovCisKKwkJc2NhbGFyX3R5cGUgPSBlbnRyeS0+a2V5LmV4cHJ0eXBlOworCQlpZiAo c2NhbGFyX3R5cGUgIT0gUkVDT1JET0lEICYmIE9pZElzVmFsaWQoc2NhbGFyX3R5cGUpKQor CQkJYXJyYXlfdHlwZSA9IGdldF9hcnJheV90eXBlKHNjYWxhcl90eXBlKTsKKwkJZWxzZQor CQkJYXJyYXlfdHlwZSA9IEludmFsaWRPaWQ7CisKKwkJaWYgKGFycmF5X3R5cGUgIT0gSW52 YWxpZE9pZCkKKwkJeworCQkJLyoKKwkJCSAqIE9LOiBjb2VyY2UgYWxsIHRoZSByaWdodC1o YW5kIG5vbi1WYXIgaW5wdXRzIHRvIHRoZSBjb21tb24KKwkJCSAqIHR5cGUgYW5kIGJ1aWxk IGFuIEFycmF5RXhwciBmb3IgdGhlbS4KKwkJCSAqLworCQkJTGlzdAkJCSAgICphZXhwcnMg PSBOSUw7CisJCQlBcnJheUV4cHIJCSAgICpuZXdhID0gTlVMTDsKKwkJCVNjYWxhckFycmF5 T3BFeHByICAqc2FvcGV4cHIgPSBOVUxMOworCQkJSGVhcFR1cGxlCQkJb3BlcnR1cDsKKwkJ CUZvcm1fcGdfb3BlcmF0b3IJb3BlcmZvcm07CisJCQlMaXN0CQkJICAgKm5hbWVsaXN0ID0g TklMOworCQkJTGlzdENlbGwJCSAgICpsYzE7CisKKwkJCWZvcmVhY2gobGMxLCBlbnRyeS0+ Y29uc3RzKQorCQkJeworCQkJCU5vZGUgICAqcmV4cHIgPSAoTm9kZSAqKSBsZmlyc3QobGMx KTsKKworCQkJCXJleHByID0gY29lcmNlX3RvX2NvbW1vbl90eXBlKHBzdGF0ZSwgcmV4cHIs CisJCQkJCQkJCQkJCSAgc2NhbGFyX3R5cGUsCisJCQkJCQkJCQkJCSAgIklOIik7CisJCQkJ YWV4cHJzID0gbGFwcGVuZChhZXhwcnMsIHJleHByKTsKKwkJCX0KKworCQkJbmV3YSA9IG1h a2VOb2RlKEFycmF5RXhwcik7CisJCQkvKiBhcnJheV9jb2xsaWQgd2lsbCBiZSBzZXQgYnkg cGFyc2VfY29sbGF0ZS5jICovCisJCQluZXdhLT5lbGVtZW50X3R5cGVpZCA9IHNjYWxhcl90 eXBlOworCQkJbmV3YS0+YXJyYXlfdHlwZWlkID0gYXJyYXlfdHlwZTsKKwkJCW5ld2EtPm11 bHRpZGltcyA9IGZhbHNlOworCQkJbmV3YS0+ZWxlbWVudHMgPSBhZXhwcnM7CisJCQluZXdh LT5sb2NhdGlvbiA9IC0xOworCisJCQlvcGVydHVwID0gU2VhcmNoU3lzQ2FjaGUxKE9QRVJP SUQsCisJCQkJCQkJCQkgIE9iamVjdElkR2V0RGF0dW0oZW50cnktPmtleS5vcG5vKSk7CisJ CQlpZiAoIUhlYXBUdXBsZUlzVmFsaWQob3BlcnR1cCkpCisJCQkJZWxvZyhFUlJPUiwgImNh Y2hlIGxvb2t1cCBmYWlsZWQgZm9yIG9wZXJhdG9yICV1IiwKKwkJCQkJIGVudHJ5LT5rZXku b3Bubyk7CisKKwkJCW9wZXJmb3JtID0gKEZvcm1fcGdfb3BlcmF0b3IpIEdFVFNUUlVDVChv cGVydHVwKTsKKwkJCWlmICghT3BlcmF0b3JJc1Zpc2libGUoZW50cnktPmtleS5vcG5vKSkK KwkJCQluYW1lbGlzdCA9IGxhcHBlbmQobmFtZWxpc3QsIG1ha2VTdHJpbmcoZ2V0X25hbWVz cGFjZV9uYW1lKG9wZXJmb3JtLT5vcHJuYW1lc3BhY2UpKSk7CisKKwkJCW5hbWVsaXN0ID0g bGFwcGVuZChuYW1lbGlzdCwgbWFrZVN0cmluZyhwc3RyZHVwKE5hbWVTdHIob3BlcmZvcm0t Pm9wcm5hbWUpKSkpOworCQkJUmVsZWFzZVN5c0NhY2hlKG9wZXJ0dXApOworCisJCQlzYW9w ZXhwciA9CisJCQkJKFNjYWxhckFycmF5T3BFeHByICopCisJCQkJCW1ha2Vfc2NhbGFyX2Fy cmF5X29wKHBzdGF0ZSwKKwkJCQkJCQkJCQkgbmFtZWxpc3QsCisJCQkJCQkJCQkJIHRydWUs CisJCQkJCQkJCQkJIGVudHJ5LT5ub2RlLAorCQkJCQkJCQkJCSAoTm9kZSAqKSBuZXdhLAor CQkJCQkJCQkJCSAtMSk7CisKKwkJCW9yX2xpc3QgPSBsYXBwZW5kKG9yX2xpc3QsICh2b2lk ICopIHNhb3BleHByKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCS8qCisJCQkgKiBUaGlzIHBh cnQgd29ya3Mgb24gaW50YXJyYXkgdGVzdCAoT1IgdGhlcmUgaXMgbWFkZSBvbgorCQkJICog ZWxlbWVudHMgb2YgYSBjdXN0b20gdHlwZSkKKwkJCSAqLworCQkJbGlzdF9mcmVlKGVudHJ5 LT5jb25zdHMpOworCQkJb3JfbGlzdCA9IGxpc3RfY29uY2F0KG9yX2xpc3QsIGVudHJ5LT5l eHBycyk7CisJCX0KKwl9CisJaGFzaF9kZXN0cm95KG9yX2dyb3VwX2h0YWIpOworCWxpc3Rf ZnJlZShlbnRyaWVzKTsKKworCS8qIE9uZSBtb3JlIHRyaWNrOiBhc3NlbWJsZSBjb3JyZWN0 IGNsYXVzZSAqLworCXJldHVybiAoTm9kZSAqKSAoKGxpc3RfbGVuZ3RoKG9yX2xpc3QpID4g MSkgPworCQkJCQkgbWFrZUJvb2xFeHByKE9SX0VYUFIsIG9yX2xpc3QsIGV4cHItPmxvY2F0 aW9uKSA6CisJCQkJCSBsaW5pdGlhbChvcl9saXN0KSk7Cit9CiAKIC8qCiAgKiB0cmFuc2Zv cm1FeHByIC0KQEAgLTIxMiw3ICs1MjAsNyBAQCB0cmFuc2Zvcm1FeHByUmVjdXJzZShQYXJz ZVN0YXRlICpwc3RhdGUsIE5vZGUgKmV4cHIpCiAJCQl9CiAKIAkJY2FzZSBUX0Jvb2xFeHBy OgotCQkJcmVzdWx0ID0gdHJhbnNmb3JtQm9vbEV4cHIocHN0YXRlLCAoQm9vbEV4cHIgKikg ZXhwcik7CisJCQlyZXN1bHQgPSB0cmFuc2Zvcm1Cb29sRXhwck9yKHBzdGF0ZSwgKEJvb2xF eHByICopIGV4cHIpOwogCQkJYnJlYWs7CiAKIAkJY2FzZSBUX0Z1bmNDYWxsOgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMgYi9zcmMvYmFja2Vu ZC91dGlscy9taXNjL2d1Y190YWJsZXMuYwppbmRleCA2NDc0ZTM1ZWMwLi40YmFjYTY1YmZl IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYworKysg Yi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYwpAQCAtMTA0OCw2ICsxMDQ4 LDE3IEBAIHN0cnVjdCBjb25maWdfYm9vbCBDb25maWd1cmVOYW1lc0Jvb2xbXSA9CiAJCXRy dWUsCiAJCU5VTEwsIE5VTEwsIE5VTEwKIAl9LAorCXsKKwkJeyJlbmFibGVfb3JfdHJhbnNm b3JtYXRpb24iLCBQR0NfVVNFUlNFVCwgUVVFUllfVFVOSU5HX09USEVSLAorCQkJZ2V0dGV4 dF9ub29wKCJUcmFuc2Zvcm0gYSBzZXF1ZW5jZSBvZiBPUiBjbGF1c2VzIHRvIGFuIElOIGV4 cHJlc3Npb24uIiksCisJCQlnZXR0ZXh0X25vb3AoIlRoZSBwbGFubmVyIHdpbGwgcmVwbGFj ZSBjbGF1c2VzIGxpa2UgJ3g9YzEgT1IgeD1jMiAuLiIKKwkJCQkJCSAidG8gdGhlIGNsYXVz ZSAneCBJTiAoYzEsYzIsLi4uKSciKSwKKwkJCUdVQ19FWFBMQUlOCisJCX0sCisJCSZlbmFi bGVfb3JfdHJhbnNmb3JtYXRpb24sCisJCXRydWUsCisJCU5VTEwsIE5VTEwsIE5VTEwKKwl9 LAogCXsKIAkJLyoKIAkJICogTm90IGZvciBnZW5lcmFsIHVzZSAtLS0gdXNlZCBieSBTRVQg U0VTU0lPTiBBVVRIT1JJWkFUSU9OIGFuZCBTRVQKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZSBiL3NyYy9iYWNrZW5kL3V0aWxz L21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQppbmRleCBjZjlmMjgzY2ZlLi4zZDViNWZi YzU4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29u Zi5zYW1wbGUKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYu c2FtcGxlCkBAIC0zNzQsNiArMzc0LDcgQEAKICMgLSBQbGFubmVyIE1ldGhvZCBDb25maWd1 cmF0aW9uIC0KIAogI2VuYWJsZV9hc3luY19hcHBlbmQgPSBvbgorI2VuYWJsZV9vcl90cmFu c2Zvcm1hdGlvbiA9IG9uCiAjZW5hYmxlX2JpdG1hcHNjYW4gPSBvbgogI2VuYWJsZV9nYXRo ZXJtZXJnZSA9IG9uCiAjZW5hYmxlX2hhc2hhZ2cgPSBvbgpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvbm9kZXMvcXVlcnlqdW1ibGUuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3F1ZXJ5anVt YmxlLmgKaW5kZXggMDc2OTA4MWM3YS4uNGFhYTMxYWE4MCAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvbm9kZXMvcXVlcnlqdW1ibGUuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9xdWVy eWp1bWJsZS5oCkBAIC02NSw2ICs2NSw3IEBAIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgY29t cHV0ZV9xdWVyeV9pZDsKIAogZXh0ZXJuIGNvbnN0IGNoYXIgKkNsZWFuUXVlcnl0ZXh0KGNv bnN0IGNoYXIgKnF1ZXJ5LCBpbnQgKmxvY2F0aW9uLCBpbnQgKmxlbik7CiBleHRlcm4gSnVt YmxlU3RhdGUgKkp1bWJsZVF1ZXJ5KFF1ZXJ5ICpxdWVyeSk7CitleHRlcm4gSnVtYmxlU3Rh dGUgKkp1bWJsZUV4cHIoRXhwciAqZXhwciwgdWludDY0ICpxdWVyeUlkKTsKIGV4dGVybiB2 b2lkIEVuYWJsZVF1ZXJ5SWQodm9pZCk7CiAKIGV4dGVybiBQR0RMTElNUE9SVCBib29sIHF1 ZXJ5X2lkX2VuYWJsZWQ7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2Vf ZXhwci5oIGIvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX2V4cHIuaAppbmRleCA3ZDM4Y2E3 NWY3Li4zYTg3ZGUwMjg1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2Vf ZXhwci5oCisrKyBiL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9leHByLmgKQEAgLTE3LDYg KzE3LDcgQEAKIAogLyogR1VDIHBhcmFtZXRlcnMgKi8KIGV4dGVybiBQR0RMTElNUE9SVCBi b29sIFRyYW5zZm9ybV9udWxsX2VxdWFsczsKK2V4dGVybiBQR0RMTElNUE9SVCBib29sIGVu YWJsZV9vcl90cmFuc2Zvcm1hdGlvbjsKIAogZXh0ZXJuIE5vZGUgKnRyYW5zZm9ybUV4cHIo UGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpleHByLCBQYXJzZUV4cHJLaW5kIGV4cHJLaW5k KTsKIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfaW5k ZXgub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfaW5kZXgub3V0Cmlu ZGV4IGFjZmQ5ZDFmNGYuLmRhZjQ5N2QzZTMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvY3JlYXRlX2luZGV4Lm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL2NyZWF0ZV9pbmRleC5vdXQKQEAgLTE4MzgsMTggKzE4MzgsNTAgQEAgRFJPUCBU QUJMRSBvbmVrX3dpdGhfbnVsbDsKIEVYUExBSU4gKENPU1RTIE9GRikKIFNFTEVDVCAqIEZS T00gdGVuazEKICAgV0hFUkUgdGhvdXNhbmQgPSA0MiBBTkQgKHRlbnRob3VzID0gMSBPUiB0 ZW50aG91cyA9IDMgT1IgdGVudGhvdXMgPSA0Mik7Ci0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSBCaXRtYXAgSGVhcCBT Y2FuIG9uIHRlbmsxCi0gICBSZWNoZWNrIENvbmQ6ICgoKHRob3VzYW5kID0gNDIpIEFORCAo dGVudGhvdXMgPSAxKSkgT1IgKCh0aG91c2FuZCA9IDQyKSBBTkQgKHRlbnRob3VzID0gMykp IE9SICgodGhvdXNhbmQgPSA0MikgQU5EICh0ZW50aG91cyA9IDQyKSkpCi0gICAtPiAgQml0 bWFwT3IKLSAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV90aG91c190 ZW50aG91cwotICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKCh0aG91c2FuZCA9IDQyKSBB TkQgKHRlbnRob3VzID0gMSkpCi0gICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24g dGVuazFfdGhvdXNfdGVudGhvdXMKLSAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICgodGhv dXNhbmQgPSA0MikgQU5EICh0ZW50aG91cyA9IDMpKQotICAgICAgICAgLT4gIEJpdG1hcCBJ bmRleCBTY2FuIG9uIHRlbmsxX3Rob3VzX3RlbnRob3VzCi0gICAgICAgICAgICAgICBJbmRl eCBDb25kOiAoKHRob3VzYW5kID0gNDIpIEFORCAodGVudGhvdXMgPSA0MikpCi0oOSByb3dz KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyBJbmRleCBTY2FuIHVzaW5nIHRlbmsxX3Rob3VzX3RlbnRob3VzIG9uIHRlbmsxCisgICBJ bmRleCBDb25kOiAoKHRob3VzYW5kID0gNDIpIEFORCAodGVudGhvdXMgPSBBTlkgKCd7MSwz LDQyfSc6OmludGVnZXJbXSkpKQorKDIgcm93cykKKworU0VMRUNUICogRlJPTSB0ZW5rMQor ICBXSEVSRSB0aG91c2FuZCA9IDQyIEFORCAodGVudGhvdXMgPSAxIE9SIHRlbnRob3VzID0g MyBPUiB0ZW50aG91cyA9IDQyKTsKKyB1bmlxdWUxIHwgdW5pcXVlMiB8IHR3byB8IGZvdXIg fCB0ZW4gfCB0d2VudHkgfCBodW5kcmVkIHwgdGhvdXNhbmQgfCB0d290aG91c2FuZCB8IGZp dmV0aG91cyB8IHRlbnRob3VzIHwgb2RkIHwgZXZlbiB8IHN0cmluZ3UxIHwgc3RyaW5ndTIg fCBzdHJpbmc0IAorLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLSstLS0tLS0rLS0tLS0rLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSst LS0tLS0tLS0tKy0tLS0tKy0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0t CisgICAgICA0MiB8ICAgIDU1MzAgfCAgIDAgfCAgICAyIHwgICAyIHwgICAgICAyIHwgICAg ICA0MiB8ICAgICAgIDQyIHwgICAgICAgICAgNDIgfCAgICAgICAgNDIgfCAgICAgICA0MiB8 ICA4NCB8ICAgODUgfCBRQkFBQUEgICB8IFNFSUFBQSAgIHwgT09PT3h4CisoMSByb3cpCisK K0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxCisgIFdI RVJFIGh1bmRyZWQgPSA0MiBBTkQgKHRob3VzYW5kID0gNDIgT1IgdGhvdXNhbmQgPSA5OSk7 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gdGVu azEKKyAgICAgICAgIFJlY2hlY2sgQ29uZDogKChodW5kcmVkID0gNDIpIEFORCAodGhvdXNh bmQgPSBBTlkgKCd7NDIsOTl9Jzo6aW50ZWdlcltdKSkpCisgICAgICAgICAtPiAgQml0bWFw QW5kCisgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfaHVu ZHJlZAorICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKGh1bmRyZWQgPSA0MikK KyAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV90aG91c190 ZW50aG91cworICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHRob3VzYW5kID0g QU5ZICgnezQyLDk5fSc6OmludGVnZXJbXSkpCisoOCByb3dzKQorCitTRUxFQ1QgY291bnQo KikgRlJPTSB0ZW5rMQorICBXSEVSRSBodW5kcmVkID0gNDIgQU5EICh0aG91c2FuZCA9IDQy IE9SIHRob3VzYW5kID0gOTkpOworIGNvdW50IAorLS0tLS0tLQorICAgIDEwCisoMSByb3cp CisKK1NFVCBlbmFibGVfb3JfdHJhbnNmb3JtYXRpb24gPSBvbjsKK0VYUExBSU4gKENPU1RT IE9GRikKK1NFTEVDVCAqIEZST00gdGVuazEKKyAgV0hFUkUgdGhvdXNhbmQgPSA0MiBBTkQg KHRlbnRob3VzID0gMSBPUiB0ZW50aG91cyA9IDMgT1IgdGVudGhvdXMgPSA0Mik7CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEluZGV4 IFNjYW4gdXNpbmcgdGVuazFfdGhvdXNfdGVudGhvdXMgb24gdGVuazEKKyAgIEluZGV4IENv bmQ6ICgodGhvdXNhbmQgPSA0MikgQU5EICh0ZW50aG91cyA9IEFOWSAoJ3sxLDMsNDJ9Jzo6 aW50ZWdlcltdKSkpCisoMiByb3dzKQogCiBTRUxFQ1QgKiBGUk9NIHRlbmsxCiAgIFdIRVJF IHRob3VzYW5kID0gNDIgQU5EICh0ZW50aG91cyA9IDEgT1IgdGVudGhvdXMgPSAzIE9SIHRl bnRob3VzID0gNDIpOwpAQCAtMTg2MSwyOCArMTg5MywxMTYgQEAgU0VMRUNUICogRlJPTSB0 ZW5rMQogRVhQTEFJTiAoQ09TVFMgT0ZGKQogU0VMRUNUIGNvdW50KCopIEZST00gdGVuazEK ICAgV0hFUkUgaHVuZHJlZCA9IDQyIEFORCAodGhvdXNhbmQgPSA0MiBPUiB0aG91c2FuZCA9 IDk5KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkg UExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIEJpdG1hcCBIZWFwIFNj YW4gb24gdGVuazEKKyAgICAgICAgIFJlY2hlY2sgQ29uZDogKChodW5kcmVkID0gNDIpIEFO RCAodGhvdXNhbmQgPSBBTlkgKCd7NDIsOTl9Jzo6aW50ZWdlcltdKSkpCisgICAgICAgICAt PiAgQml0bWFwQW5kCisgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24g dGVuazFfaHVuZHJlZAorICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKGh1bmRy ZWQgPSA0MikKKyAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5r MV90aG91c190ZW50aG91cworICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHRo b3VzYW5kID0gQU5ZICgnezQyLDk5fSc6OmludGVnZXJbXSkpCisoOCByb3dzKQorCitTRUxF Q1QgY291bnQoKikgRlJPTSB0ZW5rMQorICBXSEVSRSBodW5kcmVkID0gNDIgQU5EICh0aG91 c2FuZCA9IDQyIE9SIHRob3VzYW5kID0gOTkpOworIGNvdW50IAorLS0tLS0tLQorICAgIDEw CisoMSByb3cpCisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBjb3VudCgqKSBGUk9N IHRlbmsxCisgIFdIRVJFIGh1bmRyZWQgPSA0MiBBTkQgKHRob3VzYW5kIDwgNDIgT1IgdGhv dXNhbmQgPCA5OSBPUiA0MyA+IHRob3VzYW5kIE9SIDQyID4gdGhvdXNhbmQpOworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9u IHRlbmsxCisgICAgICAgICBSZWNoZWNrIENvbmQ6ICgoaHVuZHJlZCA9IDQyKSBBTkQgKHRo b3VzYW5kIDwgQU5ZICgnezQyLDk5LDQzLDQyfSc6OmludGVnZXJbXSkpKQorICAgICAgICAg LT4gIEJpdG1hcEFuZAorICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9u IHRlbmsxX2h1bmRyZWQKKyAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChodW5k cmVkID0gNDIpCisgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVu azFfdGhvdXNfdGVudGhvdXMKKyAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh0 aG91c2FuZCA8IEFOWSAoJ3s0Miw5OSw0Myw0Mn0nOjppbnRlZ2VyW10pKQorKDggcm93cykK KworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIGNvdW50KCopIEZST00gdGVuazEKKyAg V0hFUkUgdGhvdXNhbmQgPSA0MiBBTkQgKHRlbnRob3VzID0gMSBPUiB0ZW50aG91cyA9IDMp IE9SIHRob3VzYW5kID0gNDE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9u IHRlbmsxCisgICAgICAgICBSZWNoZWNrIENvbmQ6ICgoKHRob3VzYW5kID0gNDIpIEFORCAo dGVudGhvdXMgPSBBTlkgKCd7MSwzfSc6OmludGVnZXJbXSkpKSBPUiAodGhvdXNhbmQgPSA0 MSkpCisgICAgICAgICAtPiAgQml0bWFwT3IKKyAgICAgICAgICAgICAgIC0+ICBCaXRtYXAg SW5kZXggU2NhbiBvbiB0ZW5rMV90aG91c190ZW50aG91cworICAgICAgICAgICAgICAgICAg ICAgSW5kZXggQ29uZDogKCh0aG91c2FuZCA9IDQyKSBBTkQgKHRlbnRob3VzID0gQU5ZICgn ezEsM30nOjppbnRlZ2VyW10pKSkKKyAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXgg U2NhbiBvbiB0ZW5rMV90aG91c190ZW50aG91cworICAgICAgICAgICAgICAgICAgICAgSW5k ZXggQ29uZDogKHRob3VzYW5kID0gNDEpCisoOCByb3dzKQorCitTRUxFQ1QgY291bnQoKikg RlJPTSB0ZW5rMQorICBXSEVSRSB0aG91c2FuZCA9IDQyIEFORCAodGVudGhvdXMgPSAxIE9S IHRlbnRob3VzID0gMykgT1IgdGhvdXNhbmQgPSA0MTsKKyBjb3VudCAKKy0tLS0tLS0KKyAg ICAxMAorKDEgcm93KQorCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgY291bnQoKikg RlJPTSB0ZW5rMQorICBXSEVSRSBodW5kcmVkID0gNDIgQU5EICh0aG91c2FuZCA9IDQyIE9S IHRob3VzYW5kID0gOTkgT1IgdGVudGhvdXMgPCAyKSBPUiB0aG91c2FuZCA9IDQxOworICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQWdncmVnYXRlCisgICAtPiAg Qml0bWFwIEhlYXAgU2NhbiBvbiB0ZW5rMQorICAgICAgICAgUmVjaGVjayBDb25kOiAoKCho dW5kcmVkID0gNDIpIEFORCAoKHRob3VzYW5kID0gQU5ZICgnezQyLDk5fSc6OmludGVnZXJb XSkpIE9SICh0ZW50aG91cyA8IDIpKSkgT1IgKHRob3VzYW5kID0gNDEpKQorICAgICAgICAg LT4gIEJpdG1hcE9yCisgICAgICAgICAgICAgICAtPiAgQml0bWFwQW5kCisgICAgICAgICAg ICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfaHVuZHJlZAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKGh1bmRyZWQgPSA0MikKKyAg ICAgICAgICAgICAgICAgICAgIC0+ICBCaXRtYXBPcgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX3Rob3VzX3RlbnRob3VzCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAodGhvdXNhbmQg PSBBTlkgKCd7NDIsOTl9Jzo6aW50ZWdlcltdKSkKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV90aG91c190ZW50aG91cworICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHRlbnRob3VzIDwg MikKKyAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV90aG91 c190ZW50aG91cworICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHRob3VzYW5k ID0gNDEpCisoMTQgcm93cykKKworU0VMRUNUIGNvdW50KCopIEZST00gdGVuazEKKyAgV0hF UkUgaHVuZHJlZCA9IDQyIEFORCAodGhvdXNhbmQgPSA0MiBPUiB0aG91c2FuZCA9IDk5IE9S IHRlbnRob3VzIDwgMikgT1IgdGhvdXNhbmQgPSA0MTsKKyBjb3VudCAKKy0tLS0tLS0KKyAg ICAyMAorKDEgcm93KQorCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgY291bnQoKikg RlJPTSB0ZW5rMQorICBXSEVSRSBodW5kcmVkID0gNDIgQU5EICh0aG91c2FuZCA9IDQyIE9S IHRob3VzYW5kID0gNDEgT1IgdGhvdXNhbmQgPSA5OSBBTkQgdGVudGhvdXMgPSAyKTsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgQWdncmVnYXRlCiAgICAt PiAgQml0bWFwIEhlYXAgU2NhbiBvbiB0ZW5rMQotICAgICAgICAgUmVjaGVjayBDb25kOiAo KGh1bmRyZWQgPSA0MikgQU5EICgodGhvdXNhbmQgPSA0MikgT1IgKHRob3VzYW5kID0gOTkp KSkKKyAgICAgICAgIFJlY2hlY2sgQ29uZDogKChodW5kcmVkID0gNDIpIEFORCAoKCh0aG91 c2FuZCA9IDk5KSBBTkQgKHRlbnRob3VzID0gMikpIE9SICh0aG91c2FuZCA9IEFOWSAoJ3s0 Miw0MX0nOjppbnRlZ2VyW10pKSkpCiAgICAgICAgICAtPiAgQml0bWFwQW5kCiAgICAgICAg ICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfaHVuZHJlZAogICAgICAg ICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKGh1bmRyZWQgPSA0MikKICAgICAgICAgICAg ICAgIC0+ICBCaXRtYXBPcgogICAgICAgICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRl eCBTY2FuIG9uIHRlbmsxX3Rob3VzX3RlbnRob3VzCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICBJbmRleCBDb25kOiAodGhvdXNhbmQgPSA0MikKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgIEluZGV4IENvbmQ6ICgodGhvdXNhbmQgPSA5OSkgQU5EICh0ZW50aG91cyA9IDIp KQogICAgICAgICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsx X3Rob3VzX3RlbnRob3VzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25k OiAodGhvdXNhbmQgPSA5OSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4IENv bmQ6ICh0aG91c2FuZCA9IEFOWSAoJ3s0Miw0MX0nOjppbnRlZ2VyW10pKQogKDExIHJvd3Mp CiAKIFNFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxCi0gIFdIRVJFIGh1bmRyZWQgPSA0MiBB TkQgKHRob3VzYW5kID0gNDIgT1IgdGhvdXNhbmQgPSA5OSk7CisgIFdIRVJFIGh1bmRyZWQg PSA0MiBBTkQgKHRob3VzYW5kID0gNDIgT1IgdGhvdXNhbmQgPSA0MSBPUiB0aG91c2FuZCA9 IDk5IEFORCB0ZW50aG91cyA9IDIpOwogIGNvdW50IAogLS0tLS0tLQogICAgIDEwCiAoMSBy b3cpCiAKK1JFU0VUIGVuYWJsZV9vcl90cmFuc2Zvcm1hdGlvbjsKIC0tCiAtLSBDaGVjayBi ZWhhdmlvciB3aXRoIGR1cGxpY2F0ZSBpbmRleCBjb2x1bW4gY29udGVudHMKIC0tCmRpZmYg LS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2luaGVyaXQub3V0IGIvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9pbmhlcml0Lm91dAppbmRleCAwZjFhYTgzMWY2Li4xNzgx MjUwMTIyIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2luaGVyaXQu b3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaW5oZXJpdC5vdXQKQEAgLTI1 NjAsNyArMjU2MCw3IEBAIGV4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBsaXN0 X3BhcnRlZCB3aGVyZSBhID0gJ2FiJyBvciBhIGluIChudWxsLCAnY2QnCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIFNlcSBT Y2FuIG9uIHBhcnRfYWJfY2QgbGlzdF9wYXJ0ZWQKLSAgIEZpbHRlcjogKCgoYSk6OnRleHQg PSAnYWInOjp0ZXh0KSBPUiAoKGEpOjp0ZXh0ID0gQU5ZICgne05VTEwsY2R9Jzo6dGV4dFtd KSkpCisgICBGaWx0ZXI6ICgoKGEpOjp0ZXh0ID0gQU5ZICgne05VTEwsY2R9Jzo6dGV4dFtd KSkgT1IgKChhKTo6dGV4dCA9ICdhYic6OnRleHQpKQogKDIgcm93cykKIAogZXhwbGFpbiAo Y29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIGxpc3RfcGFydGVkIHdoZXJlIGEgPSAnYWInOwpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qb2luLm91dCBiL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvam9pbi5vdXQKaW5kZXggMmM3MzI3MDE0My4uMzZkY2Uw Yjg0YiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qb2luLm91dAor KysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pvaW4ub3V0CkBAIC00MjEwLDEwICs0 MjEwLDEwIEBAIGV4cGxhaW4gKGNvc3RzIG9mZikKIHNlbGVjdCAqIGZyb20gdGVuazEgYSBq b2luIHRlbmsxIGIgb24KICAgKGEudW5pcXVlMSA9IDEgYW5kIGIudW5pcXVlMSA9IDIpIG9y CiAgICgoYS51bmlxdWUyID0gMyBvciBhLnVuaXF1ZTIgPSA3KSBhbmQgYi5odW5kcmVkID0g NCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQogIE5lc3RlZCBMb29wCi0gICBKb2luIEZpbHRlcjogKCgoYS51bmlxdWUxID0gMSkgQU5E IChiLnVuaXF1ZTEgPSAyKSkgT1IgKCgoYS51bmlxdWUyID0gMykgT1IgKGEudW5pcXVlMiA9 IDcpKSBBTkQgKGIuaHVuZHJlZCA9IDQpKSkKKyAgIEpvaW4gRmlsdGVyOiAoKChhLnVuaXF1 ZTEgPSAxKSBBTkQgKGIudW5pcXVlMSA9IDIpKSBPUiAoKGEudW5pcXVlMiA9IEFOWSAoJ3sz LDd9Jzo6aW50ZWdlcltdKSkgQU5EIChiLmh1bmRyZWQgPSA0KSkpCiAgICAtPiAgQml0bWFw IEhlYXAgU2NhbiBvbiB0ZW5rMSBiCiAgICAgICAgICBSZWNoZWNrIENvbmQ6ICgodW5pcXVl MSA9IDIpIE9SIChodW5kcmVkID0gNCkpCiAgICAgICAgICAtPiAgQml0bWFwT3IKQEAgLTQy MjMsMTYgKzQyMjMsNjQgQEAgc2VsZWN0ICogZnJvbSB0ZW5rMSBhIGpvaW4gdGVuazEgYiBv bgogICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKGh1bmRyZWQgPSA0KQogICAg LT4gIE1hdGVyaWFsaXplCiAgICAgICAgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiB0ZW5r MSBhCi0gICAgICAgICAgICAgICBSZWNoZWNrIENvbmQ6ICgodW5pcXVlMSA9IDEpIE9SICh1 bmlxdWUyID0gMykgT1IgKHVuaXF1ZTIgPSA3KSkKKyAgICAgICAgICAgICAgIFJlY2hlY2sg Q29uZDogKCh1bmlxdWUxID0gMSkgT1IgKHVuaXF1ZTIgPSBBTlkgKCd7Myw3fSc6OmludGVn ZXJbXSkpKQogICAgICAgICAgICAgICAgLT4gIEJpdG1hcE9yCiAgICAgICAgICAgICAgICAg ICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfdW5pcXVlMQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHVuaXF1ZTEgPSAxKQogICAgICAgICAg ICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX3VuaXF1ZTIKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh1bmlxdWUyID0gMykKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh1bmlxdWUyID0gQU5ZICgn ezMsN30nOjppbnRlZ2VyW10pKQorKDE3IHJvd3MpCisKK1NFVCBlbmFibGVfb3JfdHJhbnNm b3JtYXRpb24gPSBvbjsKK2V4cGxhaW4gKGNvc3RzIG9mZikKK3NlbGVjdCAqIGZyb20gdGVu azEgYSBqb2luIHRlbmsxIGIgb24KKyAgKGEudW5pcXVlMSA9IDEgYW5kIGIudW5pcXVlMSA9 IDIpIG9yCisgICgoYS51bmlxdWUyID0gMyBvciBhLnVuaXF1ZTIgPSA3KSBhbmQgYi5odW5k cmVkID0gNCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIE5lc3RlZCBMb29wCisg ICBKb2luIEZpbHRlcjogKCgoYS51bmlxdWUxID0gMSkgQU5EIChiLnVuaXF1ZTEgPSAyKSkg T1IgKChhLnVuaXF1ZTIgPSBBTlkgKCd7Myw3fSc6OmludGVnZXJbXSkpIEFORCAoYi5odW5k cmVkID0gNCkpKQorICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gdGVuazEgYgorICAgICAg ICAgUmVjaGVjayBDb25kOiAoKHVuaXF1ZTEgPSAyKSBPUiAoaHVuZHJlZCA9IDQpKQorICAg ICAgICAgLT4gIEJpdG1hcE9yCisgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNj YW4gb24gdGVuazFfdW5pcXVlMQorICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDog KHVuaXF1ZTEgPSAyKQorICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9u IHRlbmsxX2h1bmRyZWQKKyAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChodW5k cmVkID0gNCkKKyAgIC0+ICBNYXRlcmlhbGl6ZQorICAgICAgICAgLT4gIEJpdG1hcCBIZWFw IFNjYW4gb24gdGVuazEgYQorICAgICAgICAgICAgICAgUmVjaGVjayBDb25kOiAoKHVuaXF1 ZTEgPSAxKSBPUiAodW5pcXVlMiA9IEFOWSAoJ3szLDd9Jzo6aW50ZWdlcltdKSkpCisgICAg ICAgICAgICAgICAtPiAgQml0bWFwT3IKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBCaXRt YXAgSW5kZXggU2NhbiBvbiB0ZW5rMV91bmlxdWUxCisgICAgICAgICAgICAgICAgICAgICAg ICAgICBJbmRleCBDb25kOiAodW5pcXVlMSA9IDEpCiAgICAgICAgICAgICAgICAgICAgICAt PiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfdW5pcXVlMgotICAgICAgICAgICAgICAg ICAgICAgICAgICAgSW5kZXggQ29uZDogKHVuaXF1ZTIgPSA3KQotKDE5IHJvd3MpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAodW5pcXVlMiA9IEFOWSAoJ3sz LDd9Jzo6aW50ZWdlcltdKSkKKygxNyByb3dzKQorCitleHBsYWluIChjb3N0cyBvZmYpCitz ZWxlY3QgKiBmcm9tIHRlbmsxIGEgam9pbiB0ZW5rMSBiIG9uCisgIChhLnVuaXF1ZTEgPCAy MCBvciBhLnVuaXF1ZTEgPSAzIG9yIGEudW5pcXVlMSA9IDEgYW5kIGIudW5pcXVlMSA9IDIp IG9yCisgICgoYS51bmlxdWUyID0gMyBvciBhLnVuaXF1ZTIgPSA3KSBhbmQgYi5odW5kcmVk ID0gNCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIE5lc3RlZCBMb29wCisgICBKb2luIEZpbHRlcjogKCgoYS51bmlxdWUxID0gMSkg QU5EIChiLnVuaXF1ZTEgPSAyKSkgT1IgKChhLnVuaXF1ZTIgPSBBTlkgKCd7Myw3fSc6Omlu dGVnZXJbXSkpIEFORCAoYi5odW5kcmVkID0gNCkpIE9SIChhLnVuaXF1ZTEgPCAyMCkgT1Ig KGEudW5pcXVlMSA9IDMpKQorICAgLT4gIFNlcSBTY2FuIG9uIHRlbmsxIGIKKyAgIC0+ICBN YXRlcmlhbGl6ZQorICAgICAgICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gdGVuazEgYQor ICAgICAgICAgICAgICAgUmVjaGVjayBDb25kOiAoKHVuaXF1ZTEgPSAxKSBPUiAodW5pcXVl MiA9IEFOWSAoJ3szLDd9Jzo6aW50ZWdlcltdKSkgT1IgKHVuaXF1ZTEgPCAyMCkgT1IgKHVu aXF1ZTEgPSAzKSkKKyAgICAgICAgICAgICAgIC0+ICBCaXRtYXBPcgorICAgICAgICAgICAg ICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX3VuaXF1ZTEKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh1bmlxdWUxID0gMSkKKyAgICAg ICAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV91bmlxdWUy CisgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAodW5pcXVlMiA9IEFO WSAoJ3szLDd9Jzo6aW50ZWdlcltdKSkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBCaXRt YXAgSW5kZXggU2NhbiBvbiB0ZW5rMV91bmlxdWUxCisgICAgICAgICAgICAgICAgICAgICAg ICAgICBJbmRleCBDb25kOiAodW5pcXVlMSA8IDIwKQorICAgICAgICAgICAgICAgICAgICAg LT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX3VuaXF1ZTEKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh1bmlxdWUxID0gMykKKygxNSByb3dzKQogCitS RVNFVCBlbmFibGVfb3JfdHJhbnNmb3JtYXRpb247CiAtLQogLS0gdGVzdCBwbGFjZW1lbnQg b2YgbW92YWJsZSBxdWFscyBpbiBhIHBhcmFtZXRlcml6ZWQgam9pbiB0cmVlCiAtLQpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fcHJ1bmUub3V0 IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fcHJ1bmUub3V0CmluZGV4 IDlhNGM0OGMwNTUuLjM0MjNhZjQ3NjggMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvcGFydGl0aW9uX3BydW5lLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL3BhcnRpdGlvbl9wcnVuZS5vdXQKQEAgLTgyLDI1ICs4Miw0NyBAQCBleHBsYWlu IChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gbHAgd2hlcmUgYSBpcyBudWxsOwogKDIgcm93 cykKIAogZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIGxwIHdoZXJlIGEgPSAn YScgb3IgYSA9ICdjJzsKLSAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAg ICAgICAgICAgICAgICAgICAgICAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgIFFVRVJZIFBM QU4gICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQogIEFwcGVuZAogICAgLT4gIFNlcSBTY2FuIG9uIGxwX2FkIGxw XzEKLSAgICAgICAgIEZpbHRlcjogKChhID0gJ2EnOjpicGNoYXIpIE9SIChhID0gJ2MnOjpi cGNoYXIpKQorICAgICAgICAgRmlsdGVyOiAoYSA9IEFOWSAoJ3thLGN9Jzo6YnBjaGFyW10p KQogICAgLT4gIFNlcSBTY2FuIG9uIGxwX2JjIGxwXzIKLSAgICAgICAgIEZpbHRlcjogKChh ID0gJ2EnOjpicGNoYXIpIE9SIChhID0gJ2MnOjpicGNoYXIpKQorICAgICAgICAgRmlsdGVy OiAoYSA9IEFOWSAoJ3thLGN9Jzo6YnBjaGFyW10pKQogKDUgcm93cykKIAogZXhwbGFpbiAo Y29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIGxwIHdoZXJlIGEgaXMgbm90IG51bGwgYW5kIChh ID0gJ2EnIG9yIGEgPSAnYycpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFV RVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQogIEFwcGVuZAogICAgLT4gIFNlcSBTY2FuIG9uIGxwX2FkIGxwXzEKLSAgICAgICAgIEZp bHRlcjogKChhIElTIE5PVCBOVUxMKSBBTkQgKChhID0gJ2EnOjpicGNoYXIpIE9SIChhID0g J2MnOjpicGNoYXIpKSkKKyAgICAgICAgIEZpbHRlcjogKChhIElTIE5PVCBOVUxMKSBBTkQg KGEgPSBBTlkgKCd7YSxjfSc6OmJwY2hhcltdKSkpCiAgICAtPiAgU2VxIFNjYW4gb24gbHBf YmMgbHBfMgotICAgICAgICAgRmlsdGVyOiAoKGEgSVMgTk9UIE5VTEwpIEFORCAoKGEgPSAn YSc6OmJwY2hhcikgT1IgKGEgPSAnYyc6OmJwY2hhcikpKQorICAgICAgICAgRmlsdGVyOiAo KGEgSVMgTk9UIE5VTEwpIEFORCAoYSA9IEFOWSAoJ3thLGN9Jzo6YnBjaGFyW10pKSkKICg1 IHJvd3MpCiAKK1NFVCBlbmFibGVfb3JfdHJhbnNmb3JtYXRpb24gPSBvbjsKK2V4cGxhaW4g KGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBscCB3aGVyZSBhID0gJ2EnIG9yIGEgPSAnYyc7 CisgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBcHBlbmQK KyAgIC0+ICBTZXEgU2NhbiBvbiBscF9hZCBscF8xCisgICAgICAgICBGaWx0ZXI6IChhID0g QU5ZICgne2EsY30nOjpicGNoYXJbXSkpCisgICAtPiAgU2VxIFNjYW4gb24gbHBfYmMgbHBf MgorICAgICAgICAgRmlsdGVyOiAoYSA9IEFOWSAoJ3thLGN9Jzo6YnBjaGFyW10pKQorKDUg cm93cykKKworZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIGxwIHdoZXJlIGEg aXMgbm90IG51bGwgYW5kIChhID0gJ2EnIG9yIGEgPSAnYycpOworICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyBBcHBlbmQKKyAgIC0+ICBTZXEgU2NhbiBvbiBscF9hZCBs cF8xCisgICAgICAgICBGaWx0ZXI6ICgoYSBJUyBOT1QgTlVMTCkgQU5EIChhID0gQU5ZICgn e2EsY30nOjpicGNoYXJbXSkpKQorICAgLT4gIFNlcSBTY2FuIG9uIGxwX2JjIGxwXzIKKyAg ICAgICAgIEZpbHRlcjogKChhIElTIE5PVCBOVUxMKSBBTkQgKGEgPSBBTlkgKCd7YSxjfSc6 OmJwY2hhcltdKSkpCisoNSByb3dzKQorCitSRVNFVCBlbmFibGVfb3JfdHJhbnNmb3JtYXRp b247CiBleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gbHAgd2hlcmUgYSA8PiAn Zyc7CiAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAKIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNTE1LDEwICs1MzcsMTAgQEAgZXhwbGFp biAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJscCB3aGVyZSBhIDw9IDMxOwogKDI3IHJv d3MpCiAKIGV4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBybHAgd2hlcmUgYSA9 IDEgb3IgYSA9IDc7Ci0gICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgIAotLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICBRVUVSWSBQTEFO ICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCiAgU2VxIFNjYW4gb24gcmxwMiBybHAKLSAgIEZpbHRlcjogKChhID0gMSkgT1Ig KGEgPSA3KSkKKyAgIEZpbHRlcjogKGEgPSBBTlkgKCd7MSw3fSc6OmludGVnZXJbXSkpCiAo MiByb3dzKQogCiBleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gcmxwIHdoZXJl IGEgPSAxIG9yIGIgPSAnYWInOwpAQCAtNTg5LDIwICs2MTEsMjAgQEAgZXhwbGFpbiAoY29z dHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJscCB3aGVyZSBhIDwgMSBvciAoYSA+IDIwIGFuZCBh IDwgMjUpOwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCiAgQXBwZW5kCiAgICAtPiAgU2VxIFNjYW4gb24gcmxwMSBybHBfMQotICAg ICAgICAgRmlsdGVyOiAoKGEgPCAxKSBPUiAoKGEgPiAyMCkgQU5EIChhIDwgMjUpKSkKKyAg ICAgICAgIEZpbHRlcjogKCgoYSA+IDIwKSBBTkQgKGEgPCAyNSkpIE9SIChhIDwgMSkpCiAg ICAtPiAgU2VxIFNjYW4gb24gcmxwNF8xIHJscF8yCi0gICAgICAgICBGaWx0ZXI6ICgoYSA8 IDEpIE9SICgoYSA+IDIwKSBBTkQgKGEgPCAyNSkpKQorICAgICAgICAgRmlsdGVyOiAoKChh ID4gMjApIEFORCAoYSA8IDI1KSkgT1IgKGEgPCAxKSkKICg1IHJvd3MpCiAKIC0tIHdoZXJl IGNsYXVzZSBjb250cmFkaWN0cyBzdWItcGFydGl0aW9uJ3MgY29uc3RyYWludAogZXhwbGFp biAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJscCB3aGVyZSBhID0gMjAgb3IgYSA9IDQw OwotICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgIAotLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICBR VUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgQXBwZW5kCiAgICAtPiAgU2VxIFNjYW4g b24gcmxwNF8xIHJscF8xCi0gICAgICAgICBGaWx0ZXI6ICgoYSA9IDIwKSBPUiAoYSA9IDQw KSkKKyAgICAgICAgIEZpbHRlcjogKGEgPSBBTlkgKCd7MjAsNDB9Jzo6aW50ZWdlcltdKSkK ICAgIC0+ICBTZXEgU2NhbiBvbiBybHA1X2RlZmF1bHQgcmxwXzIKLSAgICAgICAgIEZpbHRl cjogKChhID0gMjApIE9SIChhID0gNDApKQorICAgICAgICAgRmlsdGVyOiAoYSA9IEFOWSAo J3syMCw0MH0nOjppbnRlZ2VyW10pKQogKDUgcm93cykKIAogZXhwbGFpbiAoY29zdHMgb2Zm KSBzZWxlY3QgKiBmcm9tIHJscDMgd2hlcmUgYSA9IDIwOyAgIC8qIGVtcHR5ICovCkBAIC02 NzEsNiArNjkzLDE2MyBAQCBleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gcmxw IHdoZXJlIChhID0gMSBhbmQgYSA9IDMpIG9yIChhID4gMSBhbmQgYSA9CiAgICAgICAgICBG aWx0ZXI6ICgoKGEgPSAxKSBBTkQgKGEgPSAzKSkgT1IgKChhID4gMSkgQU5EIChhID0gMTUp KSkKICgxMSByb3dzKQogCitTRVQgZW5hYmxlX29yX3RyYW5zZm9ybWF0aW9uID0gb247Citl eHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gcmxwIHdoZXJlIGEgPSAxIG9yIGEg PSA3OworICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTZXEgU2NhbiBvbiBy bHAyIHJscAorICAgRmlsdGVyOiAoYSA9IEFOWSAoJ3sxLDd9Jzo6aW50ZWdlcltdKSkKKygy IHJvd3MpCisKK2V4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBybHAgd2hlcmUg YSA9IDEgb3IgYiA9ICdhYic7CisgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAg ICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQXBwZW5kCisgICAtPiAgU2VxIFNjYW4gb24g cmxwMSBybHBfMQorICAgICAgICAgRmlsdGVyOiAoKGEgPSAxKSBPUiAoKGIpOjp0ZXh0ID0g J2FiJzo6dGV4dCkpCisgICAtPiAgU2VxIFNjYW4gb24gcmxwMiBybHBfMgorICAgICAgICAg RmlsdGVyOiAoKGEgPSAxKSBPUiAoKGIpOjp0ZXh0ID0gJ2FiJzo6dGV4dCkpCisgICAtPiAg U2VxIFNjYW4gb24gcmxwM2FiY2QgcmxwXzMKKyAgICAgICAgIEZpbHRlcjogKChhID0gMSkg T1IgKChiKTo6dGV4dCA9ICdhYic6OnRleHQpKQorICAgLT4gIFNlcSBTY2FuIG9uIHJscDRf MSBybHBfNAorICAgICAgICAgRmlsdGVyOiAoKGEgPSAxKSBPUiAoKGIpOjp0ZXh0ID0gJ2Fi Jzo6dGV4dCkpCisgICAtPiAgU2VxIFNjYW4gb24gcmxwNF8yIHJscF81CisgICAgICAgICBG aWx0ZXI6ICgoYSA9IDEpIE9SICgoYik6OnRleHQgPSAnYWInOjp0ZXh0KSkKKyAgIC0+ICBT ZXEgU2NhbiBvbiBybHA0X2RlZmF1bHQgcmxwXzYKKyAgICAgICAgIEZpbHRlcjogKChhID0g MSkgT1IgKChiKTo6dGV4dCA9ICdhYic6OnRleHQpKQorICAgLT4gIFNlcSBTY2FuIG9uIHJs cDVfMSBybHBfNworICAgICAgICAgRmlsdGVyOiAoKGEgPSAxKSBPUiAoKGIpOjp0ZXh0ID0g J2FiJzo6dGV4dCkpCisgICAtPiAgU2VxIFNjYW4gb24gcmxwNV9kZWZhdWx0IHJscF84Cisg ICAgICAgICBGaWx0ZXI6ICgoYSA9IDEpIE9SICgoYik6OnRleHQgPSAnYWInOjp0ZXh0KSkK KyAgIC0+ICBTZXEgU2NhbiBvbiBybHBfZGVmYXVsdF8xMCBybHBfOQorICAgICAgICAgRmls dGVyOiAoKGEgPSAxKSBPUiAoKGIpOjp0ZXh0ID0gJ2FiJzo6dGV4dCkpCisgICAtPiAgU2Vx IFNjYW4gb24gcmxwX2RlZmF1bHRfMzAgcmxwXzEwCisgICAgICAgICBGaWx0ZXI6ICgoYSA9 IDEpIE9SICgoYik6OnRleHQgPSAnYWInOjp0ZXh0KSkKKyAgIC0+ICBTZXEgU2NhbiBvbiBy bHBfZGVmYXVsdF9udWxsIHJscF8xMQorICAgICAgICAgRmlsdGVyOiAoKGEgPSAxKSBPUiAo KGIpOjp0ZXh0ID0gJ2FiJzo6dGV4dCkpCisgICAtPiAgU2VxIFNjYW4gb24gcmxwX2RlZmF1 bHRfZGVmYXVsdCBybHBfMTIKKyAgICAgICAgIEZpbHRlcjogKChhID0gMSkgT1IgKChiKTo6 dGV4dCA9ICdhYic6OnRleHQpKQorKDI1IHJvd3MpCisKK2V4cGxhaW4gKGNvc3RzIG9mZikg c2VsZWN0ICogZnJvbSBybHAgd2hlcmUgYSA+IDIwIGFuZCBhIDwgMjc7CisgICAgICAgICAg ICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBcHBlbmQKKyAgIC0+ICBTZXEgU2NhbiBvbiBybHA0 XzEgcmxwXzEKKyAgICAgICAgIEZpbHRlcjogKChhID4gMjApIEFORCAoYSA8IDI3KSkKKyAg IC0+ICBTZXEgU2NhbiBvbiBybHA0XzIgcmxwXzIKKyAgICAgICAgIEZpbHRlcjogKChhID4g MjApIEFORCAoYSA8IDI3KSkKKyg1IHJvd3MpCisKK2V4cGxhaW4gKGNvc3RzIG9mZikgc2Vs ZWN0ICogZnJvbSBybHAgd2hlcmUgYSA9IDI5OworICAgICAgICAgIFFVRVJZIFBMQU4gICAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTZXEgU2NhbiBvbiBy bHA0X2RlZmF1bHQgcmxwCisgICBGaWx0ZXI6IChhID0gMjkpCisoMiByb3dzKQorCitleHBs YWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gcmxwIHdoZXJlIGEgPj0gMjk7CisgICAg ICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFwcGVuZAorICAgLT4gIFNl cSBTY2FuIG9uIHJscDRfZGVmYXVsdCBybHBfMQorICAgICAgICAgRmlsdGVyOiAoYSA+PSAy OSkKKyAgIC0+ICBTZXEgU2NhbiBvbiBybHA1XzEgcmxwXzIKKyAgICAgICAgIEZpbHRlcjog KGEgPj0gMjkpCisgICAtPiAgU2VxIFNjYW4gb24gcmxwNV9kZWZhdWx0IHJscF8zCisgICAg ICAgICBGaWx0ZXI6IChhID49IDI5KQorICAgLT4gIFNlcSBTY2FuIG9uIHJscF9kZWZhdWx0 XzMwIHJscF80CisgICAgICAgICBGaWx0ZXI6IChhID49IDI5KQorICAgLT4gIFNlcSBTY2Fu IG9uIHJscF9kZWZhdWx0X2RlZmF1bHQgcmxwXzUKKyAgICAgICAgIEZpbHRlcjogKGEgPj0g MjkpCisoMTEgcm93cykKKworZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJs cCB3aGVyZSBhIDwgMSBvciAoYSA+IDIwIGFuZCBhIDwgMjUpOworICAgICAgICAgICAgICAg ICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBcHBlbmQKKyAg IC0+ICBTZXEgU2NhbiBvbiBybHAxIHJscF8xCisgICAgICAgICBGaWx0ZXI6ICgoKGEgPiAy MCkgQU5EIChhIDwgMjUpKSBPUiAoYSA8IDEpKQorICAgLT4gIFNlcSBTY2FuIG9uIHJscDRf MSBybHBfMgorICAgICAgICAgRmlsdGVyOiAoKChhID4gMjApIEFORCAoYSA8IDI1KSkgT1Ig KGEgPCAxKSkKKyg1IHJvd3MpCisKK2V4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJv bSBybHAgd2hlcmUgYSA9IDIwIG9yIGEgPSA0MDsKKyAgICAgICAgICAgICAgICAgICAgUVVF UlkgUExBTiAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFwcGVuZAorICAgLT4gIFNlcSBTY2FuIG9u IHJscDRfMSBybHBfMQorICAgICAgICAgRmlsdGVyOiAoYSA9IEFOWSAoJ3syMCw0MH0nOjpp bnRlZ2VyW10pKQorICAgLT4gIFNlcSBTY2FuIG9uIHJscDVfZGVmYXVsdCBybHBfMgorICAg ICAgICAgRmlsdGVyOiAoYSA9IEFOWSAoJ3syMCw0MH0nOjppbnRlZ2VyW10pKQorKDUgcm93 cykKKworZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJscDMgd2hlcmUgYSA9 IDIwOyAgIC8qIGVtcHR5ICovCisgICAgICAgIFFVRVJZIFBMQU4gICAgICAgIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBSZXN1bHQKKyAgIE9uZS1UaW1lIEZpbHRlcjogZmFs c2UKKygyIHJvd3MpCisKK2V4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBybHAg d2hlcmUgYSA+IDEgYW5kIGEgPSAxMDsJLyogb25seSBkZWZhdWx0ICovCisgICAgICAgICAg ICBRVUVSWSBQTEFOICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgU2VxIFNjYW4gb24gcmxwX2RlZmF1bHRfMTAgcmxwCisgICBGaWx0ZXI6ICgo YSA+IDEpIEFORCAoYSA9IDEwKSkKKygyIHJvd3MpCisKK2V4cGxhaW4gKGNvc3RzIG9mZikg c2VsZWN0ICogZnJvbSBybHAgd2hlcmUgYSA+IDEgYW5kIGEgPj0xNTsJLyogcmxwMyBvbndh cmRzLCBpbmNsdWRpbmcgZGVmYXVsdCAqLworICAgICAgICAgICAgICAgICAgUVVFUlkgUExB TiAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIEFwcGVuZAorICAgLT4gIFNlcSBTY2FuIG9uIHJscDNhYmNkIHJs cF8xCisgICAgICAgICBGaWx0ZXI6ICgoYSA+IDEpIEFORCAoYSA+PSAxNSkpCisgICAtPiAg U2VxIFNjYW4gb24gcmxwM2VmZ2ggcmxwXzIKKyAgICAgICAgIEZpbHRlcjogKChhID4gMSkg QU5EIChhID49IDE1KSkKKyAgIC0+ICBTZXEgU2NhbiBvbiBybHAzbnVsbHh5IHJscF8zCisg ICAgICAgICBGaWx0ZXI6ICgoYSA+IDEpIEFORCAoYSA+PSAxNSkpCisgICAtPiAgU2VxIFNj YW4gb24gcmxwM19kZWZhdWx0IHJscF80CisgICAgICAgICBGaWx0ZXI6ICgoYSA+IDEpIEFO RCAoYSA+PSAxNSkpCisgICAtPiAgU2VxIFNjYW4gb24gcmxwNF8xIHJscF81CisgICAgICAg ICBGaWx0ZXI6ICgoYSA+IDEpIEFORCAoYSA+PSAxNSkpCisgICAtPiAgU2VxIFNjYW4gb24g cmxwNF8yIHJscF82CisgICAgICAgICBGaWx0ZXI6ICgoYSA+IDEpIEFORCAoYSA+PSAxNSkp CisgICAtPiAgU2VxIFNjYW4gb24gcmxwNF9kZWZhdWx0IHJscF83CisgICAgICAgICBGaWx0 ZXI6ICgoYSA+IDEpIEFORCAoYSA+PSAxNSkpCisgICAtPiAgU2VxIFNjYW4gb24gcmxwNV8x IHJscF84CisgICAgICAgICBGaWx0ZXI6ICgoYSA+IDEpIEFORCAoYSA+PSAxNSkpCisgICAt PiAgU2VxIFNjYW4gb24gcmxwNV9kZWZhdWx0IHJscF85CisgICAgICAgICBGaWx0ZXI6ICgo YSA+IDEpIEFORCAoYSA+PSAxNSkpCisgICAtPiAgU2VxIFNjYW4gb24gcmxwX2RlZmF1bHRf MzAgcmxwXzEwCisgICAgICAgICBGaWx0ZXI6ICgoYSA+IDEpIEFORCAoYSA+PSAxNSkpCisg ICAtPiAgU2VxIFNjYW4gb24gcmxwX2RlZmF1bHRfZGVmYXVsdCBybHBfMTEKKyAgICAgICAg IEZpbHRlcjogKChhID4gMSkgQU5EIChhID49IDE1KSkKKygyMyByb3dzKQorCitleHBsYWlu IChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gcmxwIHdoZXJlIGEgPSAxIGFuZCBhID0gMzsJ LyogZW1wdHkgKi8KKyAgICAgICAgUVVFUlkgUExBTiAgICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIFJlc3VsdAorICAgT25lLVRpbWUgRmlsdGVyOiBmYWxzZQorKDIg cm93cykKKworZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJscCB3aGVyZSAo YSA9IDEgYW5kIGEgPSAzKSBvciAoYSA+IDEgYW5kIGEgPSAxNSk7CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgQXBwZW5kCisgICAtPiAgU2VxIFNjYW4gb24gcmxwMiBybHBf MQorICAgICAgICAgRmlsdGVyOiAoKChhID0gMSkgQU5EIChhID0gMykpIE9SICgoYSA+IDEp IEFORCAoYSA9IDE1KSkpCisgICAtPiAgU2VxIFNjYW4gb24gcmxwM2FiY2QgcmxwXzIKKyAg ICAgICAgIEZpbHRlcjogKCgoYSA9IDEpIEFORCAoYSA9IDMpKSBPUiAoKGEgPiAxKSBBTkQg KGEgPSAxNSkpKQorICAgLT4gIFNlcSBTY2FuIG9uIHJscDNlZmdoIHJscF8zCisgICAgICAg ICBGaWx0ZXI6ICgoKGEgPSAxKSBBTkQgKGEgPSAzKSkgT1IgKChhID4gMSkgQU5EIChhID0g MTUpKSkKKyAgIC0+ICBTZXEgU2NhbiBvbiBybHAzbnVsbHh5IHJscF80CisgICAgICAgICBG aWx0ZXI6ICgoKGEgPSAxKSBBTkQgKGEgPSAzKSkgT1IgKChhID4gMSkgQU5EIChhID0gMTUp KSkKKyAgIC0+ICBTZXEgU2NhbiBvbiBybHAzX2RlZmF1bHQgcmxwXzUKKyAgICAgICAgIEZp bHRlcjogKCgoYSA9IDEpIEFORCAoYSA9IDMpKSBPUiAoKGEgPiAxKSBBTkQgKGEgPSAxNSkp KQorKDExIHJvd3MpCisKK1JFU0VUIGVuYWJsZV9vcl90cmFuc2Zvcm1hdGlvbjsKIC0tIG11 bHRpLWNvbHVtbiBrZXlzCiBjcmVhdGUgdGFibGUgbWMzcCAoYSBpbnQsIGIgaW50LCBjIGlu dCkgcGFydGl0aW9uIGJ5IHJhbmdlIChhLCBhYnMoYiksIGMpOwogY3JlYXRlIHRhYmxlIG1j M3BfZGVmYXVsdCBwYXJ0aXRpb24gb2YgbWMzcCBkZWZhdWx0OwpAQCAtMTkzMywxMCArMjEx MiwxMCBAQCBleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gaHAgd2hlcmUgYSA9 IDEgYW5kIGIgPSAnYWJjZGUnOwogCiBleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZy b20gaHAgd2hlcmUgYSA9IDEgYW5kIGIgPSAnYWJjZGUnIGFuZAogICAoYyA9IDIgb3IgYyA9 IDMpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgU2VxIFNjYW4g b24gaHAyIGhwCi0gICBGaWx0ZXI6ICgoYSA9IDEpIEFORCAoYiA9ICdhYmNkZSc6OnRleHQp IEFORCAoKGMgPSAyKSBPUiAoYyA9IDMpKSkKKyAgIEZpbHRlcjogKChjID0gQU5ZICgnezIs M30nOjppbnRlZ2VyW10pKSBBTkQgKGEgPSAxKSBBTkQgKGIgPSAnYWJjZGUnOjp0ZXh0KSkK ICgyIHJvd3MpCiAKIGRyb3AgdGFibGUgaHAyOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9ydWxlcy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1 bGVzLm91dAppbmRleCAwNTA3MDM5M2I5Li5jOTI3YzIxZGQ0IDEwMDY0NAotLS0gYS9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL3J1bGVzLm91dApAQCAtMjQ5NSw3ICsyNDk1LDcgQEAgcGdfc3RhdHN8IFNF TEVDVCBuLm5zcG5hbWUgQVMgc2NoZW1hbmFtZSwKICAgICAgSk9JTiBwZ19jbGFzcyBjIE9O ICgoYy5vaWQgPSBzLnN0YXJlbGlkKSkpCiAgICAgIEpPSU4gcGdfYXR0cmlidXRlIGEgT04g KCgoYy5vaWQgPSBhLmF0dHJlbGlkKSBBTkQgKGEuYXR0bnVtID0gcy5zdGFhdHRudW0pKSkp CiAgICAgIExFRlQgSk9JTiBwZ19uYW1lc3BhY2UgbiBPTiAoKG4ub2lkID0gYy5yZWxuYW1l c3BhY2UpKSkKLSAgV0hFUkUgKChOT1QgYS5hdHRpc2Ryb3BwZWQpIEFORCBoYXNfY29sdW1u X3ByaXZpbGVnZShjLm9pZCwgYS5hdHRudW0sICdzZWxlY3QnOjp0ZXh0KSBBTkQgKChjLnJl bHJvd3NlY3VyaXR5ID0gZmFsc2UpIE9SIChOT1Qgcm93X3NlY3VyaXR5X2FjdGl2ZShjLm9p ZCkpKSk7CisgIFdIRVJFICgoTk9UIGEuYXR0aXNkcm9wcGVkKSBBTkQgaGFzX2NvbHVtbl9w cml2aWxlZ2UoYy5vaWQsIGEuYXR0bnVtLCAnc2VsZWN0Jzo6dGV4dCkgQU5EICgoTk9UIHJv d19zZWN1cml0eV9hY3RpdmUoYy5vaWQpKSBPUiAoYy5yZWxyb3dzZWN1cml0eSA9IGZhbHNl KSkpOwogcGdfc3RhdHNfZXh0fCBTRUxFQ1QgY24ubnNwbmFtZSBBUyBzY2hlbWFuYW1lLAog ICAgIGMucmVsbmFtZSBBUyB0YWJsZW5hbWUsCiAgICAgc24ubnNwbmFtZSBBUyBzdGF0aXN0 aWNzX3NjaGVtYW5hbWUsCkBAIC0yNTI2LDcgKzI1MjYsNyBAQCBwZ19zdGF0c19leHR8IFNF TEVDVCBjbi5uc3BuYW1lIEFTIHNjaGVtYW5hbWUsCiAgIFdIRVJFICgoTk9UIChFWElTVFMg KCBTRUxFQ1QgMQogICAgICAgICAgICBGUk9NICh1bm5lc3Qocy5zdHhrZXlzKSBrKGspCiAg ICAgICAgICAgICAgSk9JTiBwZ19hdHRyaWJ1dGUgYSBPTiAoKChhLmF0dHJlbGlkID0gcy5z dHhyZWxpZCkgQU5EIChhLmF0dG51bSA9IGsuaykpKSkKLSAgICAgICAgICBXSEVSRSAoTk9U IGhhc19jb2x1bW5fcHJpdmlsZWdlKGMub2lkLCBhLmF0dG51bSwgJ3NlbGVjdCc6OnRleHQp KSkpKSBBTkQgKChjLnJlbHJvd3NlY3VyaXR5ID0gZmFsc2UpIE9SIChOT1Qgcm93X3NlY3Vy aXR5X2FjdGl2ZShjLm9pZCkpKSk7CisgICAgICAgICAgV0hFUkUgKE5PVCBoYXNfY29sdW1u X3ByaXZpbGVnZShjLm9pZCwgYS5hdHRudW0sICdzZWxlY3QnOjp0ZXh0KSkpKSkgQU5EICgo Tk9UIHJvd19zZWN1cml0eV9hY3RpdmUoYy5vaWQpKSBPUiAoYy5yZWxyb3dzZWN1cml0eSA9 IGZhbHNlKSkpOwogcGdfc3RhdHNfZXh0X2V4cHJzfCBTRUxFQ1QgY24ubnNwbmFtZSBBUyBz Y2hlbWFuYW1lLAogICAgIGMucmVsbmFtZSBBUyB0YWJsZW5hbWUsCiAgICAgc24ubnNwbmFt ZSBBUyBzdGF0aXN0aWNzX3NjaGVtYW5hbWUsCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL3N0YXRzX2V4dC5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3N0YXRzX2V4dC5vdXQKaW5kZXggYTQzMDE1M2IyMi4uNjU5ZDcxMmY3NSAxMDA2NDQKLS0t IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdGF0c19leHQub3V0CisrKyBiL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3RhdHNfZXh0Lm91dApAQCAtMTMyMiwxOSArMTMyMiwx OSBAQCBTRUxFQ1QgKiBGUk9NIGNoZWNrX2VzdGltYXRlZF9yb3dzKCdTRUxFQ1QgKiBGUk9N IGZ1bmN0aW9uYWxfZGVwZW5kZW5jaWVzIFdIRVJFCiBTRUxFQ1QgKiBGUk9NIGNoZWNrX2Vz dGltYXRlZF9yb3dzKCdTRUxFQ1QgKiBGUk9NIGZ1bmN0aW9uYWxfZGVwZW5kZW5jaWVzIFdI RVJFIChhID0gMSBPUiBhID0gNTEpIEFORCBiID0gJycxJycnKTsKICBlc3RpbWF0ZWQgfCBh Y3R1YWwgCiAtLS0tLS0tLS0tLSstLS0tLS0tLQotICAgICAgICA5OSB8ICAgIDEwMAorICAg ICAgIDEwMCB8ICAgIDEwMAogKDEgcm93KQogCiBTRUxFQ1QgKiBGUk9NIGNoZWNrX2VzdGlt YXRlZF9yb3dzKCdTRUxFQ1QgKiBGUk9NIGZ1bmN0aW9uYWxfZGVwZW5kZW5jaWVzIFdIRVJF IChhID0gMSBPUiBhID0gNTEpIEFORCAoYiA9ICcnMScnIE9SIGIgPSAnJzInJyknKTsKICBl c3RpbWF0ZWQgfCBhY3R1YWwgCiAtLS0tLS0tLS0tLSstLS0tLS0tLQotICAgICAgICA5OSB8 ICAgIDEwMAorICAgICAgIDEwMCB8ICAgIDEwMAogKDEgcm93KQogCiBTRUxFQ1QgKiBGUk9N IGNoZWNrX2VzdGltYXRlZF9yb3dzKCdTRUxFQ1QgKiBGUk9NIGZ1bmN0aW9uYWxfZGVwZW5k ZW5jaWVzIFdIRVJFIChhID0gMSBPUiBhID0gMiBPUiBhID0gNTEgT1IgYSA9IDUyKSBBTkQg KGIgPSAnJzEnJyBPUiBiID0gJycyJycpJyk7CiAgZXN0aW1hdGVkIHwgYWN0dWFsIAogLS0t LS0tLS0tLS0rLS0tLS0tLS0KLSAgICAgICAxOTcgfCAgICAyMDAKKyAgICAgICAyMDAgfCAg ICAyMDAKICgxIHJvdykKIAogLS0gT1IgY2xhdXNlcyByZWZlcmVuY2luZyBkaWZmZXJlbnQg YXR0cmlidXRlcyBhcmUgaW5jb21wYXRpYmxlCkBAIC0xNjY0LDE5ICsxNjY0LDE5IEBAIFNF TEVDVCAqIEZST00gY2hlY2tfZXN0aW1hdGVkX3Jvd3MoJ1NFTEVDVCAqIEZST00gZnVuY3Rp b25hbF9kZXBlbmRlbmNpZXMgV0hFUkUKIFNFTEVDVCAqIEZST00gY2hlY2tfZXN0aW1hdGVk X3Jvd3MoJ1NFTEVDVCAqIEZST00gZnVuY3Rpb25hbF9kZXBlbmRlbmNpZXMgV0hFUkUgKChh ICogMikgPSAyIE9SIChhICogMikgPSAxMDIpIEFORCB1cHBlcihiKSA9ICcnMScnJyk7CiAg ZXN0aW1hdGVkIHwgYWN0dWFsIAogLS0tLS0tLS0tLS0rLS0tLS0tLS0KLSAgICAgICAgOTkg fCAgICAxMDAKKyAgICAgICAxMDAgfCAgICAxMDAKICgxIHJvdykKIAogU0VMRUNUICogRlJP TSBjaGVja19lc3RpbWF0ZWRfcm93cygnU0VMRUNUICogRlJPTSBmdW5jdGlvbmFsX2RlcGVu ZGVuY2llcyBXSEVSRSAoKGEgKiAyKSA9IDIgT1IgKGEgKiAyKSA9IDEwMikgQU5EICh1cHBl cihiKSA9ICcnMScnIE9SIHVwcGVyKGIpID0gJycyJycpJyk7CiAgZXN0aW1hdGVkIHwgYWN0 dWFsIAogLS0tLS0tLS0tLS0rLS0tLS0tLS0KLSAgICAgICAgOTkgfCAgICAxMDAKKyAgICAg ICAxMDAgfCAgICAxMDAKICgxIHJvdykKIAogU0VMRUNUICogRlJPTSBjaGVja19lc3RpbWF0 ZWRfcm93cygnU0VMRUNUICogRlJPTSBmdW5jdGlvbmFsX2RlcGVuZGVuY2llcyBXSEVSRSAo KGEgKiAyKSA9IDIgT1IgKGEgKiAyKSA9IDQgT1IgKGEgKiAyKSA9IDEwMiBPUiAoYSAqIDIp ID0gMTA0KSBBTkQgKHVwcGVyKGIpID0gJycxJycgT1IgdXBwZXIoYikgPSAnJzInJyknKTsK ICBlc3RpbWF0ZWQgfCBhY3R1YWwgCiAtLS0tLS0tLS0tLSstLS0tLS0tLQotICAgICAgIDE5 NyB8ICAgIDIwMAorICAgICAgIDIwMCB8ICAgIDIwMAogKDEgcm93KQogCiAtLSBPUiBjbGF1 c2VzIHJlZmVyZW5jaW5nIGRpZmZlcmVudCBhdHRyaWJ1dGVzCmRpZmYgLS1naXQgYS9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N5c3ZpZXdzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvc3lzdmlld3Mub3V0CmluZGV4IDI3MTMxM2ViZjguLmM2YzZiOWZiOGQgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3lzdmlld3Mub3V0CisrKyBi L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3lzdmlld3Mub3V0CkBAIC0xMjMsNiArMTIz LDcgQEAgc2VsZWN0IG5hbWUsIHNldHRpbmcgZnJvbSBwZ19zZXR0aW5ncyB3aGVyZSBuYW1l IGxpa2UgJ2VuYWJsZSUnOwogIGVuYWJsZV9tZW1vaXplICAgICAgICAgICAgICAgICB8IG9u CiAgZW5hYmxlX21lcmdlam9pbiAgICAgICAgICAgICAgIHwgb24KICBlbmFibGVfbmVzdGxv b3AgICAgICAgICAgICAgICAgfCBvbgorIGVuYWJsZV9vcl90cmFuc2Zvcm1hdGlvbiAgICAg ICB8IG9uCiAgZW5hYmxlX3BhcmFsbGVsX2FwcGVuZCAgICAgICAgIHwgb24KICBlbmFibGVf cGFyYWxsZWxfaGFzaCAgICAgICAgICAgfCBvbgogIGVuYWJsZV9wYXJ0aXRpb25fcHJ1bmlu ZyAgICAgICB8IG9uCkBAIC0xMzMsNyArMTM0LDcgQEAgc2VsZWN0IG5hbWUsIHNldHRpbmcg ZnJvbSBwZ19zZXR0aW5ncyB3aGVyZSBuYW1lIGxpa2UgJ2VuYWJsZSUnOwogIGVuYWJsZV9z ZXFzY2FuICAgICAgICAgICAgICAgICB8IG9uCiAgZW5hYmxlX3NvcnQgICAgICAgICAgICAg ICAgICAgIHwgb24KICBlbmFibGVfdGlkc2NhbiAgICAgICAgICAgICAgICAgfCBvbgotKDIy IHJvd3MpCisoMjMgcm93cykKIAogLS0gVGhlcmUgYXJlIGFsd2F5cyB3YWl0IGV2ZW50IGRl c2NyaXB0aW9ucyBmb3IgdmFyaW91cyB0eXBlcy4KIHNlbGVjdCB0eXBlLCBjb3VudCgqKSA+ IDAgYXMgb2sgRlJPTSBwZ193YWl0X2V2ZW50cwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC90aWRzY2FuLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv dGlkc2Nhbi5vdXQKaW5kZXggZjEzM2I1YTRhYy4uMmEwNzllOTk2YiAxMDA2NDQKLS0tIGEv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC90aWRzY2FuLm91dAorKysgYi9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3RpZHNjYW4ub3V0CkBAIC00MywxMCArNDMsMjYgQEAgU0VMRUNU IGN0aWQsICogRlJPTSB0aWRzY2FuIFdIRVJFICcoMCwxKScgPSBjdGlkOwogLS0gT1InZCBj bGF1c2VzCiBFWFBMQUlOIChDT1NUUyBPRkYpCiBTRUxFQ1QgY3RpZCwgKiBGUk9NIHRpZHNj YW4gV0hFUkUgY3RpZCA9ICcoMCwyKScgT1IgJygwLDEpJyA9IGN0aWQ7Ci0gICAgICAgICAg ICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgIAot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAg ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBUaWQgU2NhbiBvbiB0aWRzY2FuCisgICBUSUQgQ29uZDogKGN0 aWQgPSBBTlkgKCd7IigwLDIpIiwiKDAsMSkifSc6OnRpZFtdKSkKKygyIHJvd3MpCisKK1NF TEVDVCBjdGlkLCAqIEZST00gdGlkc2NhbiBXSEVSRSBjdGlkID0gJygwLDIpJyBPUiAnKDAs MSknID0gY3RpZDsKKyBjdGlkICB8IGlkIAorLS0tLS0tLSstLS0tCisgKDAsMSkgfCAgMQor ICgwLDIpIHwgIDIKKygyIHJvd3MpCisKK1NFVCBlbmFibGVfb3JfdHJhbnNmb3JtYXRpb24g PSBvbjsKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBjdGlkLCAqIEZST00gdGlkc2Nh biBXSEVSRSBjdGlkID0gJygwLDIpJyBPUiAnKDAsMSknID0gY3RpZDsKKyAgICAgICAgICAg ICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBUaWQg U2NhbiBvbiB0aWRzY2FuCi0gICBUSUQgQ29uZDogKChjdGlkID0gJygwLDIpJzo6dGlkKSBP UiAoJygwLDEpJzo6dGlkID0gY3RpZCkpCisgICBUSUQgQ29uZDogKGN0aWQgPSBBTlkgKCd7 IigwLDIpIiwiKDAsMSkifSc6OnRpZFtdKSkKICgyIHJvd3MpCiAKIFNFTEVDVCBjdGlkLCAq IEZST00gdGlkc2NhbiBXSEVSRSBjdGlkID0gJygwLDIpJyBPUiAnKDAsMSknID0gY3RpZDsK QEAgLTU2LDYgKzcyLDcgQEAgU0VMRUNUIGN0aWQsICogRlJPTSB0aWRzY2FuIFdIRVJFIGN0 aWQgPSAnKDAsMiknIE9SICcoMCwxKScgPSBjdGlkOwogICgwLDIpIHwgIDIKICgyIHJvd3Mp CiAKK1JFU0VUIGVuYWJsZV9vcl90cmFuc2Zvcm1hdGlvbjsKIC0tIGN0aWQgPSBTY2FsYXJB cnJheU9wIC0gaW1wbGVtZW50ZWQgYXMgdGlkc2NhbgogRVhQTEFJTiAoQ09TVFMgT0ZGKQog U0VMRUNUIGN0aWQsICogRlJPTSB0aWRzY2FuIFdIRVJFIGN0aWQgPSBBTlkoQVJSQVlbJygw LDEpJywgJygwLDIpJ106OnRpZFtdKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL2NyZWF0ZV9pbmRleC5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jcmVhdGVfaW5k ZXguc3FsCmluZGV4IGQ0OWNlOWYzMDAuLjU2ZmRlMTViYzEgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL2NyZWF0ZV9pbmRleC5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVz cy9zcWwvY3JlYXRlX2luZGV4LnNxbApAQCAtNzM3LDYgKzczNyw0MSBAQCBTRUxFQ1QgY291 bnQoKikgRlJPTSB0ZW5rMQogU0VMRUNUIGNvdW50KCopIEZST00gdGVuazEKICAgV0hFUkUg aHVuZHJlZCA9IDQyIEFORCAodGhvdXNhbmQgPSA0MiBPUiB0aG91c2FuZCA9IDk5KTsKIAor U0VUIGVuYWJsZV9vcl90cmFuc2Zvcm1hdGlvbiA9IG9uOworRVhQTEFJTiAoQ09TVFMgT0ZG KQorU0VMRUNUICogRlJPTSB0ZW5rMQorICBXSEVSRSB0aG91c2FuZCA9IDQyIEFORCAodGVu dGhvdXMgPSAxIE9SIHRlbnRob3VzID0gMyBPUiB0ZW50aG91cyA9IDQyKTsKK1NFTEVDVCAq IEZST00gdGVuazEKKyAgV0hFUkUgdGhvdXNhbmQgPSA0MiBBTkQgKHRlbnRob3VzID0gMSBP UiB0ZW50aG91cyA9IDMgT1IgdGVudGhvdXMgPSA0Mik7CisKK0VYUExBSU4gKENPU1RTIE9G RikKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxCisgIFdIRVJFIGh1bmRyZWQgPSA0MiBB TkQgKHRob3VzYW5kID0gNDIgT1IgdGhvdXNhbmQgPSA5OSk7CitTRUxFQ1QgY291bnQoKikg RlJPTSB0ZW5rMQorICBXSEVSRSBodW5kcmVkID0gNDIgQU5EICh0aG91c2FuZCA9IDQyIE9S IHRob3VzYW5kID0gOTkpOworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIGNvdW50KCop IEZST00gdGVuazEKKyAgV0hFUkUgaHVuZHJlZCA9IDQyIEFORCAodGhvdXNhbmQgPCA0MiBP UiB0aG91c2FuZCA8IDk5IE9SIDQzID4gdGhvdXNhbmQgT1IgNDIgPiB0aG91c2FuZCk7CisK K0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxCisgIFdI RVJFIHRob3VzYW5kID0gNDIgQU5EICh0ZW50aG91cyA9IDEgT1IgdGVudGhvdXMgPSAzKSBP UiB0aG91c2FuZCA9IDQxOworU0VMRUNUIGNvdW50KCopIEZST00gdGVuazEKKyAgV0hFUkUg dGhvdXNhbmQgPSA0MiBBTkQgKHRlbnRob3VzID0gMSBPUiB0ZW50aG91cyA9IDMpIE9SIHRo b3VzYW5kID0gNDE7CisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBjb3VudCgqKSBG Uk9NIHRlbmsxCisgIFdIRVJFIGh1bmRyZWQgPSA0MiBBTkQgKHRob3VzYW5kID0gNDIgT1Ig dGhvdXNhbmQgPSA5OSBPUiB0ZW50aG91cyA8IDIpIE9SIHRob3VzYW5kID0gNDE7CitTRUxF Q1QgY291bnQoKikgRlJPTSB0ZW5rMQorICBXSEVSRSBodW5kcmVkID0gNDIgQU5EICh0aG91 c2FuZCA9IDQyIE9SIHRob3VzYW5kID0gOTkgT1IgdGVudGhvdXMgPCAyKSBPUiB0aG91c2Fu ZCA9IDQxOworCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgY291bnQoKikgRlJPTSB0 ZW5rMQorICBXSEVSRSBodW5kcmVkID0gNDIgQU5EICh0aG91c2FuZCA9IDQyIE9SIHRob3Vz YW5kID0gNDEgT1IgdGhvdXNhbmQgPSA5OSBBTkQgdGVudGhvdXMgPSAyKTsKK1NFTEVDVCBj b3VudCgqKSBGUk9NIHRlbmsxCisgIFdIRVJFIGh1bmRyZWQgPSA0MiBBTkQgKHRob3VzYW5k ID0gNDIgT1IgdGhvdXNhbmQgPSA0MSBPUiB0aG91c2FuZCA9IDk5IEFORCB0ZW50aG91cyA9 IDIpOworUkVTRVQgZW5hYmxlX29yX3RyYW5zZm9ybWF0aW9uOworCiAtLQogLS0gQ2hlY2sg YmVoYXZpb3Igd2l0aCBkdXBsaWNhdGUgaW5kZXggY29sdW1uIGNvbnRlbnRzCiAtLQpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvam9pbi5zcWwgYi9zcmMvdGVzdC9yZWdy ZXNzL3NxbC9qb2luLnNxbAppbmRleCA4YThhNjNiZDJmLi41NWQ3ZTJhZTdkIDEwMDY0NAot LS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9qb2luLnNxbAorKysgYi9zcmMvdGVzdC9yZWdy ZXNzL3NxbC9qb2luLnNxbApAQCAtMTQwOCw2ICsxNDA4LDE2IEBAIGV4cGxhaW4gKGNvc3Rz IG9mZikKIHNlbGVjdCAqIGZyb20gdGVuazEgYSBqb2luIHRlbmsxIGIgb24KICAgKGEudW5p cXVlMSA9IDEgYW5kIGIudW5pcXVlMSA9IDIpIG9yCiAgICgoYS51bmlxdWUyID0gMyBvciBh LnVuaXF1ZTIgPSA3KSBhbmQgYi5odW5kcmVkID0gNCk7CitTRVQgZW5hYmxlX29yX3RyYW5z Zm9ybWF0aW9uID0gb247CitleHBsYWluIChjb3N0cyBvZmYpCitzZWxlY3QgKiBmcm9tIHRl bmsxIGEgam9pbiB0ZW5rMSBiIG9uCisgIChhLnVuaXF1ZTEgPSAxIGFuZCBiLnVuaXF1ZTEg PSAyKSBvcgorICAoKGEudW5pcXVlMiA9IDMgb3IgYS51bmlxdWUyID0gNykgYW5kIGIuaHVu ZHJlZCA9IDQpOworZXhwbGFpbiAoY29zdHMgb2ZmKQorc2VsZWN0ICogZnJvbSB0ZW5rMSBh IGpvaW4gdGVuazEgYiBvbgorICAoYS51bmlxdWUxIDwgMjAgb3IgYS51bmlxdWUxID0gMyBv ciBhLnVuaXF1ZTEgPSAxIGFuZCBiLnVuaXF1ZTEgPSAyKSBvcgorICAoKGEudW5pcXVlMiA9 IDMgb3IgYS51bmlxdWUyID0gNykgYW5kIGIuaHVuZHJlZCA9IDQpOworUkVTRVQgZW5hYmxl X29yX3RyYW5zZm9ybWF0aW9uOwogCiAtLQogLS0gdGVzdCBwbGFjZW1lbnQgb2YgbW92YWJs ZSBxdWFscyBpbiBhIHBhcmFtZXRlcml6ZWQgam9pbiB0cmVlCmRpZmYgLS1naXQgYS9zcmMv dGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fcHJ1bmUuc3FsIGIvc3JjL3Rlc3QvcmVncmVz cy9zcWwvcGFydGl0aW9uX3BydW5lLnNxbAppbmRleCA3YmYzOTIwODI3Li4xZTI3MGFlOWMw IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fcHJ1bmUuc3Fs CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9wcnVuZS5zcWwKQEAgLTIx LDYgKzIxLDEyIEBAIGV4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBscCB3aGVy ZSBhIGlzIG5vdCBudWxsOwogZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIGxw IHdoZXJlIGEgaXMgbnVsbDsKIGV4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBs cCB3aGVyZSBhID0gJ2EnIG9yIGEgPSAnYyc7CiBleHBsYWluIChjb3N0cyBvZmYpIHNlbGVj dCAqIGZyb20gbHAgd2hlcmUgYSBpcyBub3QgbnVsbCBhbmQgKGEgPSAnYScgb3IgYSA9ICdj Jyk7CisKK1NFVCBlbmFibGVfb3JfdHJhbnNmb3JtYXRpb24gPSBvbjsKK2V4cGxhaW4gKGNv c3RzIG9mZikgc2VsZWN0ICogZnJvbSBscCB3aGVyZSBhID0gJ2EnIG9yIGEgPSAnYyc7Citl eHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gbHAgd2hlcmUgYSBpcyBub3QgbnVs bCBhbmQgKGEgPSAnYScgb3IgYSA9ICdjJyk7CitSRVNFVCBlbmFibGVfb3JfdHJhbnNmb3Jt YXRpb247CisKIGV4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBscCB3aGVyZSBh IDw+ICdnJzsKIGV4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBscCB3aGVyZSBh IDw+ICdhJyBhbmQgYSA8PiAnZCc7CiBleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZy b20gbHAgd2hlcmUgYSBub3QgaW4gKCdhJywgJ2QnKTsKQEAgLTk5LDYgKzEwNSwyMiBAQCBl eHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gcmxwIHdoZXJlIGEgPiAxIGFuZCBh ID49MTU7CS8qIHJscDMgb253YXJkcywgaQogZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3Qg KiBmcm9tIHJscCB3aGVyZSBhID0gMSBhbmQgYSA9IDM7CS8qIGVtcHR5ICovCiBleHBsYWlu IChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gcmxwIHdoZXJlIChhID0gMSBhbmQgYSA9IDMp IG9yIChhID4gMSBhbmQgYSA9IDE1KTsKIAorCitTRVQgZW5hYmxlX29yX3RyYW5zZm9ybWF0 aW9uID0gb247CitleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gcmxwIHdoZXJl IGEgPSAxIG9yIGEgPSA3OworZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJs cCB3aGVyZSBhID0gMSBvciBiID0gJ2FiJzsKK2V4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0 ICogZnJvbSBybHAgd2hlcmUgYSA+IDIwIGFuZCBhIDwgMjc7CitleHBsYWluIChjb3N0cyBv ZmYpIHNlbGVjdCAqIGZyb20gcmxwIHdoZXJlIGEgPSAyOTsKK2V4cGxhaW4gKGNvc3RzIG9m Zikgc2VsZWN0ICogZnJvbSBybHAgd2hlcmUgYSA+PSAyOTsKK2V4cGxhaW4gKGNvc3RzIG9m Zikgc2VsZWN0ICogZnJvbSBybHAgd2hlcmUgYSA8IDEgb3IgKGEgPiAyMCBhbmQgYSA8IDI1 KTsKK2V4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBybHAgd2hlcmUgYSA9IDIw IG9yIGEgPSA0MDsKK2V4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBybHAzIHdo ZXJlIGEgPSAyMDsgICAvKiBlbXB0eSAqLworZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3Qg KiBmcm9tIHJscCB3aGVyZSBhID4gMSBhbmQgYSA9IDEwOwkvKiBvbmx5IGRlZmF1bHQgKi8K K2V4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBybHAgd2hlcmUgYSA+IDEgYW5k IGEgPj0xNTsJLyogcmxwMyBvbndhcmRzLCBpbmNsdWRpbmcgZGVmYXVsdCAqLworZXhwbGFp biAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJscCB3aGVyZSBhID0gMSBhbmQgYSA9IDM7 CS8qIGVtcHR5ICovCitleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gcmxwIHdo ZXJlIChhID0gMSBhbmQgYSA9IDMpIG9yIChhID4gMSBhbmQgYSA9IDE1KTsKK1JFU0VUIGVu YWJsZV9vcl90cmFuc2Zvcm1hdGlvbjsKKwogLS0gbXVsdGktY29sdW1uIGtleXMKIGNyZWF0 ZSB0YWJsZSBtYzNwIChhIGludCwgYiBpbnQsIGMgaW50KSBwYXJ0aXRpb24gYnkgcmFuZ2Ug KGEsIGFicyhiKSwgYyk7CiBjcmVhdGUgdGFibGUgbWMzcF9kZWZhdWx0IHBhcnRpdGlvbiBv ZiBtYzNwIGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC90aWRz Y2FuLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3RpZHNjYW4uc3FsCmluZGV4IDMxM2Uw ZmI5YjYuLjA0OTliZWRiOWUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Rp ZHNjYW4uc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3RpZHNjYW4uc3FsCkBAIC0y Miw2ICsyMiwxMiBAQCBFWFBMQUlOIChDT1NUUyBPRkYpCiBTRUxFQ1QgY3RpZCwgKiBGUk9N IHRpZHNjYW4gV0hFUkUgY3RpZCA9ICcoMCwyKScgT1IgJygwLDEpJyA9IGN0aWQ7CiBTRUxF Q1QgY3RpZCwgKiBGUk9NIHRpZHNjYW4gV0hFUkUgY3RpZCA9ICcoMCwyKScgT1IgJygwLDEp JyA9IGN0aWQ7CiAKK1NFVCBlbmFibGVfb3JfdHJhbnNmb3JtYXRpb24gPSBvbjsKK0VYUExB SU4gKENPU1RTIE9GRikKK1NFTEVDVCBjdGlkLCAqIEZST00gdGlkc2NhbiBXSEVSRSBjdGlk ID0gJygwLDIpJyBPUiAnKDAsMSknID0gY3RpZDsKK1NFTEVDVCBjdGlkLCAqIEZST00gdGlk c2NhbiBXSEVSRSBjdGlkID0gJygwLDIpJyBPUiAnKDAsMSknID0gY3RpZDsKK1JFU0VUIGVu YWJsZV9vcl90cmFuc2Zvcm1hdGlvbjsKKwogLS0gY3RpZCA9IFNjYWxhckFycmF5T3AgLSBp bXBsZW1lbnRlZCBhcyB0aWRzY2FuCiBFWFBMQUlOIChDT1NUUyBPRkYpCiBTRUxFQ1QgY3Rp ZCwgKiBGUk9NIHRpZHNjYW4gV0hFUkUgY3RpZCA9IEFOWShBUlJBWVsnKDAsMSknLCAnKDAs MiknXTo6dGlkW10pOwpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZz Lmxpc3QgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAppbmRleCBkNjU5YWRi ZmQ2Li45NTkxZDBkMDg0IDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRl ZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAtMTY0 NSw2ICsxNjQ1LDggQEAgTnVtZXJpY1ZhcgogT01fdWludDMyCiBPUAogT1NBUGVyR3JvdXBT dGF0ZQorT3JDbGF1c2VHcm91cEVudHJ5CitPckNsYXVzZUdyb3VwS2V5CiBPU0FQZXJRdWVy eVN0YXRlCiBPU0luZm8KIE9TU0xDaXBoZXIKLS0gCjIuNDMuMAoK --------------nQAOjGR4g0BNZWgQrxxw09k6--