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 1rhPi7-00BL3J-2V for pgsql-hackers@arkaria.postgresql.org; Tue, 05 Mar 2024 07:59:40 +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 1rhPi5-00Ek5k-Ck for pgsql-hackers@arkaria.postgresql.org; Tue, 05 Mar 2024 07:59:37 +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 1rhPi4-00Ek5a-DO for pgsql-hackers@lists.postgresql.org; Tue, 05 Mar 2024 07:59:37 +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 1rhPhv-002vzu-RM for pgsql-hackers@postgresql.org; Tue, 05 Mar 2024 07:59:35 +0000 Received: from [192.168.1.58] (node-gxd.pool-101-109.dynamic.totinternet.net [101.109.85.177]) (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 305E1E20E8E; Tue, 5 Mar 2024 10:59:20 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mx2023; t=1709625565; bh=ofR4LALEL39hyJVARb7/HKyzt/EmkW9Wh0pLHv2+Hqc=; h=Message-ID:Date:User-Agent:Subject:From:To:Cc:References: In-Reply-To:From; b=FpEsjqJfJ6JKOtimz8M0UyOoMVGVvgEfbFGxJDnJQo7xXMsRdKj7pIb5xwGgZFR5a YEO/TPDHKlwdeRqyKwyhMofKi896+l23weznYuz7DxqiPcWUtzbc8/BEkVOtKr5Xu4 hDnlN9n7APRapApBwDwk871gE1NhZ180ahV15oTHZGkOfixvVRid7Dz+EWGk8Og1wW Cd4VZsvCXOnCiIMTcxPL8b9fiA8zX2FCh9IC10cRhOy7RlBzhxfTucKlywCG/pKlVX rjntVnDKyi060eDNJtHReUOKF8gtOzgM8ScCXU53e6IKibeAQDiCbDmiFd7AFZNkL/ qj0oHzlyXb89g== Content-Type: multipart/mixed; boundary="------------JLXlgVVE40XwJbU4PxdfMZtG" Message-ID: Date: Tue, 5 Mar 2024 14:59:16 +0700 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: POC, WIP: OR-clause support for indexes From: Andrei Lepikhov To: jian he Cc: Alena Rybakina , Alexander Korotkov , Robert Haas , pgsql-hackers@postgresql.org, Peter Geoghegan , "Finnerty, Jim" , Marcos Pegoraro , teodor@sigaev.ru, Tomas Vondra , Peter Eisentraut , Ranier Vilela References: <567ED6CA.2040504@sigaev.ru> <5f119769-ab11-4807-abcc-71d5dd914ea0@postgrespro.ru> <21088129-7cd3-424a-bcce-6a3427ba3276@postgrespro.ru> <11ee9c04-281f-43c8-a0ff-d481c1e01c09@postgrespro.ru> <54009ba5-4aea-4344-a30d-e3558a59e2a9@postgrespro.ru> <380e5683-cdfd-4220-ab9b-7cccb9d3e480@postgrespro.ru> Content-Language: en-US Organization: Postgres Professional In-Reply-To: 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. --------------JLXlgVVE40XwJbU4PxdfMZtG Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 5/3/2024 12:30, Andrei Lepikhov wrote: > On 4/3/2024 09:26, jian he wrote: ... and the new version of the patchset is attached. -- regards, Andrei Lepikhov Postgres Professional --------------JLXlgVVE40XwJbU4PxdfMZtG Content-Type: text/plain; charset=UTF-8; name="v19-0001-Transform-OR-clauses-to-ANY-expression.patch" Content-Disposition: attachment; filename="v19-0001-Transform-OR-clauses-to-ANY-expression.patch" Content-Transfer-Encoding: base64 RnJvbSAxYzNhYzNlMDA2Y2Q2NmZmNDBmMWRkYWFhMDllM2ZjMGYzYTc1Y2E1IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbGVuYSBSeWJha2luYSA8YS5yeWJha2luYUBwb3N0 Z3Jlc3Byby5ydT4KRGF0ZTogRnJpLCAyIEZlYiAyMDI0IDIyOjAxOjA5ICswMzAwClN1Ympl Y3Q6IFtQQVRDSCAxLzJdIFRyYW5zZm9ybSBPUiBjbGF1c2VzIHRvIEFOWSBleHByZXNzaW9u LgoKUmVwbGFjZSAoZXhwciBvcCBDMSkgT1IgKGV4cHIgb3AgQzIpIC4uLiB3aXRoIGV4cHIg b3AgQU5ZKEFSUkFZW0MxLCBDMiwgLi4uXSkgb24gdGhlCnByZWxpbWluYXJ5IHN0YWdlIG9m IG9wdGltaXphdGlvbiB3aGVuIHdlIGFyZSBzdGlsbCB3b3JraW5nIHdpdGggdGhlCmV4cHJl c3Npb24gdHJlZS4KSGVyZSBDPFg+IGlzIGEgY29uc3RhbnQgZXhwcmVzc2lvbiwgJ2V4cHIn IGlzIG5vbi1jb25zdGFudCBleHByZXNzaW9uLCAnb3AnIGlzCmFuIG9wZXJhdG9yIHdoaWNo IHJldHVybnMgYm9vbGVhbiByZXN1bHQgYW5kIGhhcyBhIGNvbW11dGVyIChmb3IgdGhlIGNh c2Ugb2YKcmV2ZXJzZSBvcmRlciBvZiBjb25zdGFudCBhbmQgbm9uLWNvbnN0YW50IHBhcnRz IG9mIHRoZSBleHByZXNzaW9uLApsaWtlICdDWCBvcCBleHByJykuClNvbWV0aW1lcyBpdCBj YW4gbGVhZCB0byBub3Qgb3B0aW1hbCBwbGFuLiBCdXQgd2UgdGhpbmsgaXQgaXMgYmV0dGVy IHRvIGhhdmUKYXJyYXkgb2YgZWxlbWVudHMgaW5zdGVhZCBvZiBhIGxvdCBvZiBPUiBjbGF1 c2VzLiBIZXJlIGlzIGEgcm9vbSBmb3IgZnVydGhlcgpvcHRpbWl6YXRpb25zIG9uIGRlY29t cG9zaW5nIHRoYXQgYXJyYXkgaW50byBtb3JlIG9wdGltYWwgcGFydHMuCkF1dGhvcnM6IEFs ZW5hIFJ5YmFraW5hIDxsZW5hLnJpYmFja2luYUB5YW5kZXgucnU+LCBBbmRyZXkgTGVwaWto b3YgPGEubGVwaWtob3ZAcG9zdGdyZXNwcm8ucnU+ClJldmlld2VkLWJ5OiBQZXRlciBHZW9n aGVnYW4gPHBnQGJvd3QuaWU+LCBSYW5pZXIgVmlsZWxhIDxyYW5pZXIudmZAZ21haWwuY29t PgpSZXZpZXdlZC1ieTogQWxleGFuZGVyIEtvcm90a292IDxhZWtvcm90a292QGdtYWlsLmNv bT4sIFJvYmVydCBIYWFzIDxyb2JlcnRtaGFhc0BnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBq aWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+Ci0tLQogLi4uL3Bvc3RncmVz X2Zkdy9leHBlY3RlZC9wb3N0Z3Jlc19mZHcub3V0ICAgIHwgIDE2ICstCiBkb2Mvc3JjL3Nn bWwvY29uZmlnLnNnbWwgICAgICAgICAgICAgICAgICAgICAgfCAgMTcgKwogc3JjL2JhY2tl bmQvbm9kZXMvcXVlcnlqdW1ibGVmdW5jcy5jICAgICAgICAgIHwgIDI3ICsrCiBzcmMvYmFj a2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jICAgICAgICAgICAgICAgfCAzMzkgKysrKysrKysr KysrKysrKysrCiBzcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYyAgICAgICAg ICAgfCAgMTEgKwogc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2Ft cGxlIHwgICAxICsKIHNyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsICAgICAgICAg ICAgICB8ICAgNiArLQogc3JjL2luY2x1ZGUvbm9kZXMvcXVlcnlqdW1ibGUuaCAgICAgICAg ICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL29wdGltaXplci9vcHRpbWl6ZXIuaCAgICAg ICAgICAgICB8ICAgMSArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NyZWF0ZV9pbmRl eC5vdXQgICAgfCAxNTYgKysrKysrKy0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaW5o ZXJpdC5vdXQgICAgICAgICB8ICAgMiArLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9q b2luLm91dCAgICAgICAgICAgIHwgIDYyICsrKy0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvcGFydGl0aW9uX3BydW5lLm91dCB8IDIxOSArKysrKysrKystLQogc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9ydWxlcy5vdXQgICAgICAgICAgIHwgICA0ICstCiBzcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3N0YXRzX2V4dC5vdXQgICAgICAgfCAgMTIgKy0KIHNyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvc3lzdmlld3Mub3V0ICAgICAgICB8ICAgMyArLQogc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC90aWRzY2FuLm91dCAgICAgICAgIHwgIDIzICstCiBzcmMv dGVzdC9yZWdyZXNzL3NxbC9jcmVhdGVfaW5kZXguc3FsICAgICAgICAgfCAgMzUgKysKIHNy Yy90ZXN0L3JlZ3Jlc3Mvc3FsL2pvaW4uc3FsICAgICAgICAgICAgICAgICB8ICAxMCArCiBz cmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fcHJ1bmUuc3FsICAgICAgfCAgMjIgKysK IHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3RpZHNjYW4uc3FsICAgICAgICAgICAgICB8ICAgNiAr CiBzcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCAgICAgICAgICAgICAgfCAgIDIg KwogMjIgZmlsZXMgY2hhbmdlZCwgOTA2IGluc2VydGlvbnMoKyksIDY5IGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2V4cGVjdGVkL3Bvc3RncmVz X2Zkdy5vdXQgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9leHBlY3RlZC9wb3N0Z3Jlc19mZHcu b3V0CmluZGV4IGMzNTVlOGYzZjcuLjA1MjNiYmQ4ZjcgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIv cG9zdGdyZXNfZmR3L2V4cGVjdGVkL3Bvc3RncmVzX2Zkdy5vdXQKKysrIGIvY29udHJpYi9w b3N0Z3Jlc19mZHcvZXhwZWN0ZWQvcG9zdGdyZXNfZmR3Lm91dApAQCAtMTM0OSw3ICsxMzQ5 LDcgQEAgU0VMRUNUIHQxLmMxLCB0MS5jMiwgdDIuYzEsIHQyLmMyIEZST00gZnQ0IHQxIExF RlQgSk9JTiAoU0VMRUNUICogRlJPTSBmdDUgV0hFUkUKICBGb3JlaWduIFNjYW4KICAgIE91 dHB1dDogdDEuYzEsIHQxLmMyLCBmdDUuYzEsIGZ0NS5jMgogICAgUmVsYXRpb25zOiAocHVi bGljLmZ0NCB0MSkgTEVGVCBKT0lOIChwdWJsaWMuZnQ1KQotICAgUmVtb3RlIFNRTDogU0VM RUNUIHIxLmMxLCByMS5jMiwgcjQuYzEsIHI0LmMyIEZST00gKCJTIDEiLiJUIDMiIHIxIExF RlQgSk9JTiAiUyAxIi4iVCA0IiByNCBPTiAoKChyMS5jMSA9IHI0LmMxKSkgQU5EICgocjQu YzEgPCAxMCkpKSkgV0hFUkUgKCgocjQuYzEgPCAxMCkgT1IgKHI0LmMxIElTIE5VTEwpKSkg QU5EICgocjEuYzEgPCAxMCkpCisgICBSZW1vdGUgU1FMOiBTRUxFQ1QgcjEuYzEsIHIxLmMy LCByNC5jMSwgcjQuYzIgRlJPTSAoIlMgMSIuIlQgMyIgcjEgTEVGVCBKT0lOICJTIDEiLiJU IDQiIHI0IE9OICgoKHIxLmMxID0gcjQuYzEpKSBBTkQgKChyNC5jMSA8IDEwKSkpKSBXSEVS RSAoKChyNC5jMSBJUyBOVUxMKSBPUiAocjQuYzEgPCAxMCkpKSBBTkQgKChyMS5jMSA8IDEw KSkKICg0IHJvd3MpCiAKIFNFTEVDVCB0MS5jMSwgdDEuYzIsIHQyLmMxLCB0Mi5jMiBGUk9N IGZ0NCB0MSBMRUZUIEpPSU4gKFNFTEVDVCAqIEZST00gZnQ1IFdIRVJFIGMxIDwgMTApIHQy IE9OICh0MS5jMSA9IHQyLmMxKQpAQCAtMzEwNSw3ICszMTA1LDcgQEAgc2VsZWN0IGFycmF5 X2FnZyhkaXN0aW5jdCAodDEuYzEpJTUpIGZyb20gZnQ0IHQxIGZ1bGwgam9pbiBmdDUgdDIg b24gKHQxLmMxID0gdDIKICBGb3JlaWduIFNjYW4KICAgIE91dHB1dDogKGFycmF5X2FnZyhE SVNUSU5DVCAodDEuYzEgJSA1KSkpLCAoKHQyLmMxICUgMykpCiAgICBSZWxhdGlvbnM6IEFn Z3JlZ2F0ZSBvbiAoKHB1YmxpYy5mdDQgdDEpIEZVTEwgSk9JTiAocHVibGljLmZ0NSB0Mikp Ci0gICBSZW1vdGUgU1FMOiBTRUxFQ1QgYXJyYXlfYWdnKERJU1RJTkNUIChyMS5jMSAlIDUp KSwgKHIyLmMxICUgMykgRlJPTSAoIlMgMSIuIlQgMyIgcjEgRlVMTCBKT0lOICJTIDEiLiJU IDQiIHIyIE9OICgoKHIxLmMxID0gcjIuYzEpKSkpIFdIRVJFICgoKHIxLmMxIDwgMjApIE9S ICgocjEuYzEgSVMgTlVMTCkgQU5EIChyMi5jMSA8IDUpKSkpIEdST1VQIEJZIDIgT1JERVIg QlkgYXJyYXlfYWdnKERJU1RJTkNUIChyMS5jMSAlIDUpKSBBU0MgTlVMTFMgTEFTVAorICAg UmVtb3RlIFNRTDogU0VMRUNUIGFycmF5X2FnZyhESVNUSU5DVCAocjEuYzEgJSA1KSksIChy Mi5jMSAlIDMpIEZST00gKCJTIDEiLiJUIDMiIHIxIEZVTEwgSk9JTiAiUyAxIi4iVCA0IiBy MiBPTiAoKChyMS5jMSA9IHIyLmMxKSkpKSBXSEVSRSAoKCgocjEuYzEgSVMgTlVMTCkgQU5E IChyMi5jMSA8IDUpKSBPUiAocjEuYzEgPCAyMCkpKSBHUk9VUCBCWSAyIE9SREVSIEJZIGFy cmF5X2FnZyhESVNUSU5DVCAocjEuYzEgJSA1KSkgQVNDIE5VTExTIExBU1QKICg0IHJvd3Mp CiAKIHNlbGVjdCBhcnJheV9hZ2coZGlzdGluY3QgKHQxLmMxKSU1KSBmcm9tIGZ0NCB0MSBm dWxsIGpvaW4gZnQ1IHQyIG9uICh0MS5jMSA9IHQyLmMxKSB3aGVyZSB0MS5jMSA8IDIwIG9y ICh0MS5jMSBpcyBudWxsIGFuZCB0Mi5jMSA8IDUpIGdyb3VwIGJ5ICh0Mi5jMSklMyBvcmRl ciBieSAxOwpAQCAtMzEyMyw3ICszMTIzLDcgQEAgc2VsZWN0IGFycmF5X2FnZyhkaXN0aW5j dCAodDEuYzEpJTUgb3JkZXIgYnkgKHQxLmMxKSU1KSBmcm9tIGZ0NCB0MSBmdWxsIGpvaW4g ZnQKICBGb3JlaWduIFNjYW4KICAgIE91dHB1dDogKGFycmF5X2FnZyhESVNUSU5DVCAodDEu YzEgJSA1KSBPUkRFUiBCWSAodDEuYzEgJSA1KSkpLCAoKHQyLmMxICUgMykpCiAgICBSZWxh dGlvbnM6IEFnZ3JlZ2F0ZSBvbiAoKHB1YmxpYy5mdDQgdDEpIEZVTEwgSk9JTiAocHVibGlj LmZ0NSB0MikpCi0gICBSZW1vdGUgU1FMOiBTRUxFQ1QgYXJyYXlfYWdnKERJU1RJTkNUIChy MS5jMSAlIDUpIE9SREVSIEJZICgocjEuYzEgJSA1KSkgQVNDIE5VTExTIExBU1QpLCAocjIu YzEgJSAzKSBGUk9NICgiUyAxIi4iVCAzIiByMSBGVUxMIEpPSU4gIlMgMSIuIlQgNCIgcjIg T04gKCgocjEuYzEgPSByMi5jMSkpKSkgV0hFUkUgKCgocjEuYzEgPCAyMCkgT1IgKChyMS5j MSBJUyBOVUxMKSBBTkQgKHIyLmMxIDwgNSkpKSkgR1JPVVAgQlkgMiBPUkRFUiBCWSBhcnJh eV9hZ2coRElTVElOQ1QgKHIxLmMxICUgNSkgT1JERVIgQlkgKChyMS5jMSAlIDUpKSBBU0Mg TlVMTFMgTEFTVCkgQVNDIE5VTExTIExBU1QKKyAgIFJlbW90ZSBTUUw6IFNFTEVDVCBhcnJh eV9hZ2coRElTVElOQ1QgKHIxLmMxICUgNSkgT1JERVIgQlkgKChyMS5jMSAlIDUpKSBBU0Mg TlVMTFMgTEFTVCksIChyMi5jMSAlIDMpIEZST00gKCJTIDEiLiJUIDMiIHIxIEZVTEwgSk9J TiAiUyAxIi4iVCA0IiByMiBPTiAoKChyMS5jMSA9IHIyLmMxKSkpKSBXSEVSRSAoKCgocjEu YzEgSVMgTlVMTCkgQU5EIChyMi5jMSA8IDUpKSBPUiAocjEuYzEgPCAyMCkpKSBHUk9VUCBC WSAyIE9SREVSIEJZIGFycmF5X2FnZyhESVNUSU5DVCAocjEuYzEgJSA1KSBPUkRFUiBCWSAo KHIxLmMxICUgNSkpIEFTQyBOVUxMUyBMQVNUKSBBU0MgTlVMTFMgTEFTVAogKDQgcm93cykK IAogc2VsZWN0IGFycmF5X2FnZyhkaXN0aW5jdCAodDEuYzEpJTUgb3JkZXIgYnkgKHQxLmMx KSU1KSBmcm9tIGZ0NCB0MSBmdWxsIGpvaW4gZnQ1IHQyIG9uICh0MS5jMSA9IHQyLmMxKSB3 aGVyZSB0MS5jMSA8IDIwIG9yICh0MS5jMSBpcyBudWxsIGFuZCB0Mi5jMSA8IDUpIGdyb3Vw IGJ5ICh0Mi5jMSklMyBvcmRlciBieSAxOwpAQCAtMzE0MCw3ICszMTQwLDcgQEAgc2VsZWN0 IGFycmF5X2FnZyhkaXN0aW5jdCAodDEuYzEpJTUgb3JkZXIgYnkgKHQxLmMxKSU1IGRlc2Mg bnVsbHMgbGFzdCkgZnJvbSBmdDQKICBGb3JlaWduIFNjYW4KICAgIE91dHB1dDogKGFycmF5 X2FnZyhESVNUSU5DVCAodDEuYzEgJSA1KSBPUkRFUiBCWSAodDEuYzEgJSA1KSBERVNDIE5V TExTIExBU1QpKSwgKCh0Mi5jMSAlIDMpKQogICAgUmVsYXRpb25zOiBBZ2dyZWdhdGUgb24g KChwdWJsaWMuZnQ0IHQxKSBGVUxMIEpPSU4gKHB1YmxpYy5mdDUgdDIpKQotICAgUmVtb3Rl IFNRTDogU0VMRUNUIGFycmF5X2FnZyhESVNUSU5DVCAocjEuYzEgJSA1KSBPUkRFUiBCWSAo KHIxLmMxICUgNSkpIERFU0MgTlVMTFMgTEFTVCksIChyMi5jMSAlIDMpIEZST00gKCJTIDEi LiJUIDMiIHIxIEZVTEwgSk9JTiAiUyAxIi4iVCA0IiByMiBPTiAoKChyMS5jMSA9IHIyLmMx KSkpKSBXSEVSRSAoKChyMS5jMSA8IDIwKSBPUiAoKHIxLmMxIElTIE5VTEwpIEFORCAocjIu YzEgPCA1KSkpKSBHUk9VUCBCWSAyIE9SREVSIEJZIGFycmF5X2FnZyhESVNUSU5DVCAocjEu YzEgJSA1KSBPUkRFUiBCWSAoKHIxLmMxICUgNSkpIERFU0MgTlVMTFMgTEFTVCkgQVNDIE5V TExTIExBU1QKKyAgIFJlbW90ZSBTUUw6IFNFTEVDVCBhcnJheV9hZ2coRElTVElOQ1QgKHIx LmMxICUgNSkgT1JERVIgQlkgKChyMS5jMSAlIDUpKSBERVNDIE5VTExTIExBU1QpLCAocjIu YzEgJSAzKSBGUk9NICgiUyAxIi4iVCAzIiByMSBGVUxMIEpPSU4gIlMgMSIuIlQgNCIgcjIg T04gKCgocjEuYzEgPSByMi5jMSkpKSkgV0hFUkUgKCgoKHIxLmMxIElTIE5VTEwpIEFORCAo cjIuYzEgPCA1KSkgT1IgKHIxLmMxIDwgMjApKSkgR1JPVVAgQlkgMiBPUkRFUiBCWSBhcnJh eV9hZ2coRElTVElOQ1QgKHIxLmMxICUgNSkgT1JERVIgQlkgKChyMS5jMSAlIDUpKSBERVND IE5VTExTIExBU1QpIEFTQyBOVUxMUyBMQVNUCiAoNCByb3dzKQogCiBzZWxlY3QgYXJyYXlf YWdnKGRpc3RpbmN0ICh0MS5jMSklNSBvcmRlciBieSAodDEuYzEpJTUgZGVzYyBudWxscyBs YXN0KSBmcm9tIGZ0NCB0MSBmdWxsIGpvaW4gZnQ1IHQyIG9uICh0MS5jMSA9IHQyLmMxKSB3 aGVyZSB0MS5jMSA8IDIwIG9yICh0MS5jMSBpcyBudWxsIGFuZCB0Mi5jMSA8IDUpIGdyb3Vw IGJ5ICh0Mi5jMSklMyBvcmRlciBieSAxOwpAQCAtODc5NywxOCArODc5NywxOCBAQCBpbnNl cnQgaW50byB1dHJ0ZXN0IHZhbHVlcyAoMiwgJ3F1eCcpOwogLS0gQ2hlY2sgY2FzZSB3aGVy ZSB0aGUgZm9yZWlnbiBwYXJ0aXRpb24gaXMgYSBzdWJwbGFuIHRhcmdldCByZWwKIGV4cGxh aW4gKHZlcmJvc2UsIGNvc3RzIG9mZikKIHVwZGF0ZSB1dHJ0ZXN0IHNldCBhID0gMSB3aGVy ZSBhID0gMSBvciBhID0gMiByZXR1cm5pbmcgKjsKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIFVwZGF0ZSBvbiBwdWJsaWMudXRydGVzdAog ICAgT3V0cHV0OiB1dHJ0ZXN0XzEuYSwgdXRydGVzdF8xLmIKICAgIEZvcmVpZ24gVXBkYXRl IG9uIHB1YmxpYy5yZW1wIHV0cnRlc3RfMQogICAgVXBkYXRlIG9uIHB1YmxpYy5sb2NwIHV0 cnRlc3RfMgogICAgLT4gIEFwcGVuZAogICAgICAgICAgLT4gIEZvcmVpZ24gVXBkYXRlIG9u IHB1YmxpYy5yZW1wIHV0cnRlc3RfMQotICAgICAgICAgICAgICAgUmVtb3RlIFNRTDogVVBE QVRFIHB1YmxpYy5sb2N0IFNFVCBhID0gMSBXSEVSRSAoKChhID0gMSkgT1IgKGEgPSAyKSkp IFJFVFVSTklORyBhLCBiCisgICAgICAgICAgICAgICBSZW1vdGUgU1FMOiBVUERBVEUgcHVi bGljLmxvY3QgU0VUIGEgPSAxIFdIRVJFICgoYSA9IEFOWSAoJ3sxLDJ9Jzo6aW50ZWdlcltd KSkpIFJFVFVSTklORyBhLCBiCiAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmxv Y3AgdXRydGVzdF8yCiAgICAgICAgICAgICAgICBPdXRwdXQ6IDEsIHV0cnRlc3RfMi50YWJs ZW9pZCwgdXRydGVzdF8yLmN0aWQsIE5VTEw6OnJlY29yZAotICAgICAgICAgICAgICAgRmls dGVyOiAoKHV0cnRlc3RfMi5hID0gMSkgT1IgKHV0cnRlc3RfMi5hID0gMikpCisgICAgICAg ICAgICAgICBGaWx0ZXI6ICh1dHJ0ZXN0XzIuYSA9IEFOWSAoJ3sxLDJ9Jzo6aW50ZWdlcltd KSkKICgxMCByb3dzKQogCiAtLSBUaGUgbmV3IHZhbHVlcyBhcmUgY29uY2F0ZW5hdGVkIHdp dGggJyB0cmlnZ2VyZWQgIScKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jb25maWcuc2dt bCBiL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbAppbmRleCBiMzhjYmQ3MTRhLi4xZmRmZmZk NzliIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKKysrIGIvZG9jL3Ny Yy9zZ21sL2NvbmZpZy5zZ21sCkBAIC01NDMzLDYgKzU0MzMsMjMgQEAgQU5ZIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1fc3luYzwvcmVwbGFjZWFibGU+ICggPHJlcGxh Y2VhYmxlIGNsYXNzPSIKICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgIDwvdmFybGlzdGVudHJ5 PgogCisgICAgIDx2YXJsaXN0ZW50cnkgaWQ9Imd1Yy1lbmFibGUtb3ItdHJhbnNmb3JtYXRp b24iIHhyZWZsYWJlbD0iZW5hYmxlX29yX3RyYW5zZm9ybWF0aW9uIj4KKyAgICAgIDx0ZXJt Pjx2YXJuYW1lPmVuYWJsZV9vcl90cmFuc2Zvcm1hdGlvbjwvdmFybmFtZT4gKDx0eXBlPmJv b2xlYW48L3R5cGU+KQorICAgICAgIDxpbmRleHRlcm0+CisgICAgICAgIDxwcmltYXJ5Pjx2 YXJuYW1lPmVuYWJsZV9vcl90cmFuc2Zvcm1hdGlvbjwvdmFybmFtZT4gY29uZmlndXJhdGlv biBwYXJhbWV0ZXI8L3ByaW1hcnk+CisgICAgICAgPC9pbmRleHRlcm0+CisgICAgICA8L3Rl cm0+CisgICAgICA8bGlzdGl0ZW0+CisgICAgICAgPHBhcmE+CisgICAgICAgIEVuYWJsZXMg b3IgZGlzYWJsZXMgdGhlIHF1ZXJ5IHBsYW5uZXIncyBhYmlsaXR5IHRvIGxvb2t1cCBhbmQg Z3JvdXAgbXVsdGlwbGUKKyAgICAgICAgc2ltaWxhciBPUiBleHByZXNzaW9ucyB0byBBTlkg KDx4cmVmIGxpbmtlbmQ9ImZ1bmN0aW9ucy1jb21wYXJpc29ucy1hbnktc29tZSIvPikgZXhw cmVzc2lvbnMuCisgICAgICAgIFRoZSBncm91cGluZyB0ZWNobmlxdWUgb2YgdGhpcyB0cmFu c2Zvcm1hdGlvbiBpcyBiYXNlZCBvbiB0aGUgZXF1aXZhbGVuY2Ugb2YgdmFyaWFibGUgc2lk ZXMuCisgICAgICAgIE9uZSBzaWRlIG9mIHN1Y2ggYW4gZXhwcmVzc2lvbiBtdXN0IGJlIGEg Y29uc3RhbnQgY2xhdXNlLCBhbmQgdGhlIG90aGVyIG11c3QgY29udGFpbiBhIHZhcmlhYmxl IGNsYXVzZS4KKyAgICAgICAgVGhlIGRlZmF1bHQgaXMgPGxpdGVyYWw+b248L2xpdGVyYWw+ LgorICAgICAgICA8L3BhcmE+CisgICAgICA8L2xpc3RpdGVtPgorICAgICA8L3Zhcmxpc3Rl bnRyeT4KKwogICAgICA8dmFybGlzdGVudHJ5IGlkPSJndWMtZW5hYmxlLXBhcmFsbGVsLWFw cGVuZCIgeHJlZmxhYmVsPSJlbmFibGVfcGFyYWxsZWxfYXBwZW5kIj4KICAgICAgIDx0ZXJt Pjx2YXJuYW1lPmVuYWJsZV9wYXJhbGxlbF9hcHBlbmQ8L3Zhcm5hbWU+ICg8dHlwZT5ib29s ZWFuPC90eXBlPikKICAgICAgIDxpbmRleHRlcm0+CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9ub2Rlcy9xdWVyeWp1bWJsZWZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9xdWVyeWp1 bWJsZWZ1bmNzLmMKaW5kZXggNDI2MTEyZmEzNy4uYzRjNGNhYjhlZCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvbm9kZXMvcXVlcnlqdW1ibGVmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5k L25vZGVzL3F1ZXJ5anVtYmxlZnVuY3MuYwpAQCAtMTQxLDYgKzE0MSwzMyBAQCBKdW1ibGVR dWVyeShRdWVyeSAqcXVlcnkpCiAJcmV0dXJuIGpzdGF0ZTsKIH0KIAorSnVtYmxlU3RhdGUg KgorSnVtYmxlRXhwcihFeHByICpleHByLCB1aW50NjQgKnF1ZXJ5SWQpCit7CisJSnVtYmxl U3RhdGUgKmpzdGF0ZSA9IE5VTEw7CisKKwlBc3NlcnQocXVlcnlJZCAhPSBOVUxMKTsKKwor CWpzdGF0ZSA9IChKdW1ibGVTdGF0ZSAqKSBwYWxsb2Moc2l6ZW9mKEp1bWJsZVN0YXRlKSk7 CisKKwkvKiBTZXQgdXAgd29ya3NwYWNlIGZvciBxdWVyeSBqdW1ibGluZyAqLworCWpzdGF0 ZS0+anVtYmxlID0gKHVuc2lnbmVkIGNoYXIgKikgcGFsbG9jKEpVTUJMRV9TSVpFKTsKKwlq c3RhdGUtPmp1bWJsZV9sZW4gPSAwOworCWpzdGF0ZS0+Y2xvY2F0aW9uc19idWZfc2l6ZSA9 IDMyOworCWpzdGF0ZS0+Y2xvY2F0aW9ucyA9IChMb2NhdGlvbkxlbiAqKQorCQlwYWxsb2Mo anN0YXRlLT5jbG9jYXRpb25zX2J1Zl9zaXplICogc2l6ZW9mKExvY2F0aW9uTGVuKSk7CisJ anN0YXRlLT5jbG9jYXRpb25zX2NvdW50ID0gMDsKKwlqc3RhdGUtPmhpZ2hlc3RfZXh0ZXJu X3BhcmFtX2lkID0gMDsKKworCS8qIENvbXB1dGUgcXVlcnkgSUQgKi8KKwlfanVtYmxlTm9k ZShqc3RhdGUsIChOb2RlICopIGV4cHIpOworCSpxdWVyeUlkID0gRGF0dW1HZXRVSW50NjQo aGFzaF9hbnlfZXh0ZW5kZWQoanN0YXRlLT5qdW1ibGUsCisJCQkJCQkJCQkJCQlqc3RhdGUt Pmp1bWJsZV9sZW4sCisJCQkJCQkJCQkJCQkwKSk7CisKKwlyZXR1cm4ganN0YXRlOworfQor CiAvKgogICogRW5hYmxlcyBxdWVyeSBpZGVudGlmaWVyIGNvbXB1dGF0aW9uLgogICoKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMgYi9zcmMvYmFja2Vu ZC9wYXJzZXIvcGFyc2VfZXhwci5jCmluZGV4IDkzMDBjN2I5YWIuLjczMjk4YWQ2MjEgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMKKysrIGIvc3JjL2Jh Y2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYwpAQCAtMTYsMTIgKzE2LDE0IEBACiAjaW5jbHVk ZSAicG9zdGdyZXMuaCIKIAogI2luY2x1ZGUgImNhdGFsb2cvcGdfYWdncmVnYXRlLmgiCisj aW5jbHVkZSAiY2F0YWxvZy9wZ19vcGVyYXRvci5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdf cHJvYy5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgogI2luY2x1ZGUgImNvbW1h bmRzL2RiY29tbWFuZHMuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJu b2Rlcy9tYWtlZnVuY3MuaCIKICNpbmNsdWRlICJub2Rlcy9ub2RlRnVuY3MuaCIKKyNpbmNs dWRlICJub2Rlcy9xdWVyeWp1bWJsZS5oIgogI2luY2x1ZGUgIm9wdGltaXplci9vcHRpbWl6 ZXIuaCIKICNpbmNsdWRlICJwYXJzZXIvYW5hbHl6ZS5oIgogI2luY2x1ZGUgInBhcnNlci9w YXJzZV9hZ2cuaCIKQEAgLTM4LDExICs0MCwxMyBAQAogI2luY2x1ZGUgInV0aWxzL2RhdGUu aCIKICNpbmNsdWRlICJ1dGlscy9mbWdyb2lkcy5oIgogI2luY2x1ZGUgInV0aWxzL2xzeXNj YWNoZS5oIgorI2luY2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMv dGltZXN0YW1wLmgiCiAjaW5jbHVkZSAidXRpbHMveG1sLmgiCiAKIC8qIEdVQyBwYXJhbWV0 ZXJzICovCiBib29sCQlUcmFuc2Zvcm1fbnVsbF9lcXVhbHMgPSBmYWxzZTsKK2Jvb2wJCWVu YWJsZV9vcl90cmFuc2Zvcm1hdGlvbiA9IHRydWU7CiAKIAogc3RhdGljIE5vZGUgKnRyYW5z Zm9ybUV4cHJSZWN1cnNlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqZXhwcik7CkBAIC05 OSw2ICsxMDMsMzM2IEBAIHN0YXRpYyBFeHByICptYWtlX2Rpc3RpbmN0X29wKFBhcnNlU3Rh dGUgKnBzdGF0ZSwgTGlzdCAqb3BuYW1lLAogc3RhdGljIE5vZGUgKm1ha2VfbnVsbHRlc3Rf ZnJvbV9kaXN0aW5jdChQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkJCQkJIEFfRXhwciAq ZGlzdGluY3RhLCBOb2RlICphcmcpOwogCit0eXBlZGVmIHN0cnVjdCBPckNsYXVzZUdyb3Vw S2V5Cit7CisJRXhwciAgICpleHByOyAvKiBQb2ludGVyIHRvIHRoZSBleHByZXNzaW9uIHRy ZWUgd2hpY2ggaGFzIGJlZW4gYSBzb3VyY2UgZm9yCisJCQkJCXRoZSBoYXNoa2V5IHZhbHVl ICovCisJT2lkCQlvcG5vOworCU9pZAkJZXhwcnR5cGU7Cit9IE9yQ2xhdXNlR3JvdXBLZXk7 CisKK3R5cGVkZWYgc3RydWN0IE9yQ2xhdXNlR3JvdXBFbnRyeQoreworCU9yQ2xhdXNlR3Jv dXBLZXkga2V5OworCisJTm9kZQkJICAgKm5vZGU7CisJTGlzdAkJICAgKmNvbnN0czsKKwlM aXN0IAkJICAgKmV4cHJzOworfSBPckNsYXVzZUdyb3VwRW50cnk7CisKKy8qCisgKiBIYXNo IGZ1bmN0aW9uIHRvIGZpbmQgY2FuZGlkYXRlIGNsYXVzZXMuCisgKi8KK3N0YXRpYyB1aW50 MzIKK29yY2xhdXNlX2hhc2goY29uc3Qgdm9pZCAqZGF0YSwgU2l6ZSBrZXlzaXplKQorewor CU9yQ2xhdXNlR3JvdXBLZXkgICAqa2V5ID0gKE9yQ2xhdXNlR3JvdXBLZXkgKikgZGF0YTsK Kwl1aW50NjQJCQkJaGFzaDsKKworCUFzc2VydChrZXlzaXplID09IHNpemVvZihPckNsYXVz ZUdyb3VwS2V5KSk7CisKKwkodm9pZCkgSnVtYmxlRXhwcihrZXktPmV4cHIsICZoYXNoKTsK KwloYXNoICs9ICgodWludDY0KSBrZXktPm9wbm8gKyAodWludDY0KSBrZXktPmV4cHJ0eXBl KTsKKwlyZXR1cm4gKHVpbnQzMikgKGhhc2ggJSBVSU5UMzJfTUFYKTsKK30KKworc3RhdGlj IHZvaWQgKgorb3JjbGF1c2Vfa2V5Y29weSh2b2lkICpkZXN0LCBjb25zdCB2b2lkICpzcmMs IFNpemUga2V5c2l6ZSkKK3sKKwlPckNsYXVzZUdyb3VwS2V5ICpzcmNfa2V5ID0gKE9yQ2xh dXNlR3JvdXBLZXkgKikgc3JjOworCU9yQ2xhdXNlR3JvdXBLZXkgKmRzdF9rZXkgPSAoT3JD bGF1c2VHcm91cEtleSAqKSBkZXN0OworCisJQXNzZXJ0KHNpemVvZihPckNsYXVzZUdyb3Vw S2V5KSA9PSBrZXlzaXplKTsKKworCWRzdF9rZXktPmV4cHIgPSBzcmNfa2V5LT5leHByOwor CWRzdF9rZXktPm9wbm8gPSBzcmNfa2V5LT5vcG5vOworCWRzdF9rZXktPmV4cHJ0eXBlID0g c3JjX2tleS0+ZXhwcnR5cGU7CisJcmV0dXJuIGRzdF9rZXk7Cit9CisKKy8qCisgKiBEeW5h aGFzaCBtYXRjaCBmdW5jdGlvbiB0byB1c2UgaW4gb3JfZ3JvdXBfaHRhYgorICovCitzdGF0 aWMgaW50CitvcmNsYXVzZV9tYXRjaChjb25zdCB2b2lkICpkYXRhMSwgY29uc3Qgdm9pZCAq ZGF0YTIsIFNpemUga2V5c2l6ZSkKK3sKKwlPckNsYXVzZUdyb3VwS2V5ICAgKmtleTEgPSAo T3JDbGF1c2VHcm91cEtleSAqKSBkYXRhMTsKKwlPckNsYXVzZUdyb3VwS2V5ICAgKmtleTIg PSAoT3JDbGF1c2VHcm91cEtleSAqKSBkYXRhMjsKKworCUFzc2VydChzaXplb2YoT3JDbGF1 c2VHcm91cEtleSkgPT0ga2V5c2l6ZSk7CisKKwlpZiAoa2V5MS0+b3BubyA9PSBrZXkyLT5v cG5vICYmIGtleTEtPmV4cHJ0eXBlID09IGtleTItPmV4cHJ0eXBlICYmCisJCWVxdWFsKGtl eTEtPmV4cHIsIGtleTItPmV4cHIpKQorCQlyZXR1cm4gMDsKKworCXJldHVybiAxOworfQor CisvKgorICogVHJhbnNmb3JtT3JFeHByVG9BTlkgLQorICoJICBEaXNjb3ZlciB0aGUgYXJn cyBvZiBhbiBPUiBleHByZXNzaW9uIGFuZCB0cnkgdG8gZ3JvdXAgc2ltaWxhciBPUgorICoJ ICBleHByZXNzaW9ucyB0byBhbiBBTlkgb3BlcmF0aW9uLgorICoJICBUcmFuc2Zvcm1hdGlv biBtdXN0IGJlIGFscmVhZHkgZG9uZSBvbiBpbnB1dCBhcmdzIGxpc3QgYmVmb3JlIHRoZSBj YWxsLgorICoJICBUcmFuc2Zvcm1hdGlvbiBncm91cHMgdHdvLXNpZGVkIGVxdWFsaXR5IG9w ZXJhdGlvbnMuIE9uZSBzaWRlIG9mIHN1Y2ggYW4KKyAqCSAgb3BlcmF0aW9uIG11c3QgYmUg cGxhaW4gY29uc3RhbnQgb3IgY29uc3RhbnQgZXhwcmVzc2lvbi4gVGhlIG90aGVyIHNpZGUg b2YKKyAqCSAgdGhlIGNsYXVzZSBtdXN0IGJlIGEgdmFyaWFibGUgZXhwcmVzc2lvbiB3aXRo b3V0IHZvbGF0aWxlIGZ1bmN0aW9ucy4KKyAqCSAgVGhlIGdyb3VwaW5nIHRlY2huaXF1ZSBp cyBiYXNlZCBvbiBhbiBlcXVpdmFsZW5jZSBvZiB2YXJpYWJsZSBzaWRlcyBvZiB0aGUKKyAq CSAgZXhwcmVzc2lvbjogdXNpbmcgcXVlcnlJZCBhbmQgZXF1YWwoKSByb3V0aW5lLCBpdCBn cm91cHMgY29uc3RhbnQgc2lkZXMgb2YKKyAqCSAgc2ltaWxhciBjbGF1c2VzIGludG8gYW4g YXJyYXkuIEFmdGVyIHRoZSBncm91cGluZyBwcm9jZWR1cmUsIGVhY2ggY291cGxlCisgKgkg ICgndmFyaWFibGUgZXhwcmVzc2lvbicgYW5kICdjb25zdGFudCBhcnJheScpIGZvcm0gYSBu ZXcgU0FPUCBvcGVyYXRpb24sCisgKgkgIHdoaWNoIGlzIGFkZGVkIHRvIHRoZSBhcmdzIGxp c3Qgb2YgdGhlIHJldHVybmluZyBleHByZXNzaW9uLgorICoKKyAqCSAgTk9URTogZnVuY3Rp b24gcmV0dXJucyBPUiBCb29sRXhwciBpZiBtb3JlIHRoYW4gb25lIGNsYXVzZSBhcmUgZGV0 ZWN0ZWQgaW4KKyAqCSAgdGhlIGZpbmFsIGFyZ3MgbGlzdCwgb3IgU2NhbGFyQXJyYXlPcEV4 cHIgaWYgYWxsIGFyZ3Mgd2VyZSBncm91cGVkIGludG8KKyAqCSAgdGhlIHNpbmdsZSBTQU9Q IGV4cHJlc3Npb24uCisgKi8KK3N0YXRpYyBOb2RlICoKK1RyYW5zZm9ybU9yRXhwclRvQU5Z KFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqYXJncywgaW50IGxvY2F0aW9uKQoreworCUxp c3QJCQkJICAgKm9yX2xpc3QgPSBOSUw7CisJTGlzdAkJCQkgICAqZW50cmllcyA9IE5JTDsK KwlMaXN0Q2VsbAkJCSAgICpsYzsKKwlIQVNIQ1RMCQkJCQlpbmZvOworCUhUQUIgCQkJCSAg ICpvcl9ncm91cF9odGFiID0gTlVMTDsKKwlpbnQgCQkJCQlsZW5fb3JzID0gbGlzdF9sZW5n dGgoYXJncyk7CisJT3JDbGF1c2VHcm91cEVudHJ5CSAgICplbnRyeSA9IE5VTEw7CisKKwlB c3NlcnQoZW5hYmxlX29yX3RyYW5zZm9ybWF0aW9uICYmIGxlbl9vcnMgPiAxKTsKKworCU1l bVNldCgmaW5mbywgMCwgc2l6ZW9mKGluZm8pKTsKKwlpbmZvLmtleXNpemUgPSBzaXplb2Yo T3JDbGF1c2VHcm91cEtleSk7CisJaW5mby5lbnRyeXNpemUgPSBzaXplb2YoT3JDbGF1c2VH cm91cEVudHJ5KTsKKwlpbmZvLmhhc2ggPSBvcmNsYXVzZV9oYXNoOworCWluZm8ua2V5Y29w eSA9IG9yY2xhdXNlX2tleWNvcHk7CisJaW5mby5tYXRjaCA9IG9yY2xhdXNlX21hdGNoOwor CW9yX2dyb3VwX2h0YWIgPSBoYXNoX2NyZWF0ZSgiT1IgR3JvdXBzIiwKKwkJCQkJCQkJbGVu X29ycywKKwkJCQkJCQkJJmluZm8sCisJCQkJCQkJCUhBU0hfRUxFTSB8IEhBU0hfRlVOQ1RJ T04gfCBIQVNIX0NPTVBBUkUgfCBIQVNIX0tFWUNPUFkpOworCisJZm9yZWFjaChsYywgYXJn cykKKwl7CisJCU5vZGUJCQkJICAgKm9ycXVhbCA9IGxmaXJzdChsYyk7CisJCU5vZGUJCQkJ ICAgKmNvbnN0X2V4cHI7CisJCU5vZGUJCQkJICAgKm5jb25zdF9leHByOworCQlPckNsYXVz ZUdyb3VwS2V5CQloYXNoa2V5OworCQlib29sCQkJCQlmb3VuZDsKKwkJT2lkCQkJCQkJb3Bu bzsKKwkJT2lkCQkJCQkJZXhwcnR5cGU7CisJCU5vZGUJCQkJICAgKmxlZnRvcCwgKnJpZ2h0 b3A7CisKKwkJaWYgKCFJc0Eob3JxdWFsLCBPcEV4cHIpKQorCQl7CisJCQlvcl9saXN0ID0g bGFwcGVuZChvcl9saXN0LCBvcnF1YWwpOworCQkJY29udGludWU7CisJCX0KKworCQlvcG5v ID0gKChPcEV4cHIgKikgb3JxdWFsKS0+b3BubzsKKwkJaWYgKGdldF9vcF9yZXR0eXBlKG9w bm8pICE9IEJPT0xPSUQpCisJCXsKKwkJCS8qIE9ubHkgb3BlcmF0b3IgcmV0dXJuaW5nIGJv b2xlYW4gc3VpdHMgT1IgLT4gQU5ZIHRyYW5zZm9ybWF0aW9uICovCisJCQlvcl9saXN0ID0g bGFwcGVuZChvcl9saXN0LCBvcnF1YWwpOworCQkJY29udGludWU7CisJCX0KKworCQkvKgor CQkgKiBEZXRlY3QgdGhlIGNvbnN0YW50IHNpZGUgb2YgdGhlIGNsYXVzZS4gUmVjYWxsIG5v bi1jb25zdGFudAorCQkgKiBleHByZXNzaW9uIGNhbiBiZSBtYWRlIG5vdCBvbmx5IHdpdGgg VmFycywgYnV0IGFsc28gd2l0aCBQYXJhbXMsCisJCSAqIHdoaWNoIGlzIG5vdCBib25kZWQg d2l0aCBhbnkgcmVsYXRpb24uIFRodXMsIHdlIGRldGVjdCB0aGUgY29uc3QKKwkJICogc2lk ZSAtIGlmIGFub3RoZXIgc2lkZSBpcyBjb25zdGFudCB0b28sIHRoZSBvcnF1YWwgY291bGRu J3QgYmUKKwkJICogYW4gT3BFeHByLgorCQkgKiBHZXQgcG9pbnRlcnMgdG8gY29uc3RhbnQg YW5kIGV4cHJlc3Npb24gc2lkZXMgb2YgdGhlIHF1YWwuCisJCSAqLworCQlsZWZ0b3AgPSBn ZXRfbGVmdG9wKG9ycXVhbCk7CisJCWlmIChJc0EobGVmdG9wLCBSZWxhYmVsVHlwZSkpCisJ CQlsZWZ0b3AgPSAoTm9kZSAqKSAoKFJlbGFiZWxUeXBlICopIGxlZnRvcCktPmFyZzsKKwkJ cmlnaHRvcCA9IGdldF9yaWdodG9wKG9ycXVhbCk7CisJCWlmIChJc0EocmlnaHRvcCwgUmVs YWJlbFR5cGUpKQorCQkJcmlnaHRvcCA9IChOb2RlICopICgoUmVsYWJlbFR5cGUgKikgcmln aHRvcCktPmFyZzsKKworCQlpZiAoSXNBKGxlZnRvcCwgQ29uc3QpKQorCQl7CisJCQlvcG5v ID0gZ2V0X2NvbW11dGF0b3Iob3Bubyk7CisKKwkJCWlmICghT2lkSXNWYWxpZChvcG5vKSkK KwkJCXsKKwkJCQkvKiBjb21tdXRhdG9yIGRvZXNuJ3QgZXhpc3QsIHdlIGNhbid0IHJldmVy c2UgdGhlIG9yZGVyICovCisJCQkJb3JfbGlzdCA9IGxhcHBlbmQob3JfbGlzdCwgb3JxdWFs KTsKKwkJCQljb250aW51ZTsKKwkJCX0KKworCQkJbmNvbnN0X2V4cHIgPSBnZXRfcmlnaHRv cChvcnF1YWwpOworCQkJY29uc3RfZXhwciA9IGdldF9sZWZ0b3Aob3JxdWFsKTsKKwkJfQor CQllbHNlIGlmIChJc0EocmlnaHRvcCwgQ29uc3QpKQorCQl7CisJCQljb25zdF9leHByID0g Z2V0X3JpZ2h0b3Aob3JxdWFsKTsKKwkJCW5jb25zdF9leHByID0gZ2V0X2xlZnRvcChvcnF1 YWwpOworCQl9CisJCWVsc2UKKwkJeworCQkJb3JfbGlzdCA9IGxhcHBlbmQob3JfbGlzdCwg b3JxdWFsKTsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJLyoKKwkJICogVHJhbnNmb3JtYXRp b24gb25seSB3b3JrcyB3aXRoIGJvdGggc2lkZSB0eXBlIGlzIG5vdAorCQkgKiB7IGFycmF5 IHwgY29tcG9zaXRlIHwgZG9tYWluIHwgcmVjb3JkIH0uCisJCSAqIEFsc28sIGZvcmJpZCBp dCBmb3Igdm9sYXRpbGUgZXhwcmVzc2lvbnMuCisJCSAqLworCQlleHBydHlwZSA9IGV4cHJU eXBlKG5jb25zdF9leHByKTsKKwkJaWYgKHR5cGVfaXNfcm93dHlwZShleHByVHlwZShjb25z dF9leHByKSkgfHwKKwkJCXR5cGVfaXNfcm93dHlwZShleHBydHlwZSkgfHwKKwkJCWNvbnRh aW5fdm9sYXRpbGVfZnVuY3Rpb25zKChOb2RlICopIG5jb25zdF9leHByKSkKKwkJeworCQkJ b3JfbGlzdCA9IGxhcHBlbmQob3JfbGlzdCwgb3JxdWFsKTsKKwkJCWNvbnRpbnVlOworCQl9 CisKKwkJLyoKKwkJKiBBdCB0aGlzIHBvaW50IHdlIGRlZmluaXRlbHkgaGF2ZSBhIHRyYW5z Zm9ybWFibGUgY2xhdXNlLgorCQkqIENsYXNzaWZ5IGl0IGFuZCBhZGQgaW50byBzcGVjaWZp YyBncm91cCBvZiBjbGF1c2VzLCBvciBjcmVhdGUgbmV3CisJCSogZ3JvdXAuCisJCSovCisJ CWhhc2hrZXkuZXhwciA9IChFeHByICopIG5jb25zdF9leHByOworCQloYXNoa2V5Lm9wbm8g PSBvcG5vOworCQloYXNoa2V5LmV4cHJ0eXBlID0gZXhwcnR5cGU7CisJCWVudHJ5ID0gaGFz aF9zZWFyY2gob3JfZ3JvdXBfaHRhYiwgJmhhc2hrZXksIEhBU0hfRU5URVIsICZmb3VuZCk7 CisKKwkJaWYgKHVubGlrZWx5KGZvdW5kKSkKKwkJeworCQkJZW50cnktPmNvbnN0cyA9IGxh cHBlbmQoZW50cnktPmNvbnN0cywgY29uc3RfZXhwcik7CisJCQllbnRyeS0+ZXhwcnMgPSBs YXBwZW5kKGVudHJ5LT5leHBycywgb3JxdWFsKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCWVu dHJ5LT5ub2RlID0gbmNvbnN0X2V4cHI7CisJCQllbnRyeS0+Y29uc3RzID0gbGlzdF9tYWtl MShjb25zdF9leHByKTsKKwkJCWVudHJ5LT5leHBycyA9IGxpc3RfbWFrZTEob3JxdWFsKTsK KworCQkJLyoKKwkJCSAqIEFkZCB0aGUgZW50cnkgdG8gdGhlIGxpc3QuIEl0IGlzIG5lZWRl ZCBleGNsdXNpdmVseSB0byBtYW5hZ2UgdGhlCisJCQkgKiBwcm9ibGVtIHdpdGggdGhlIG9y ZGVyIG9mIHRyYW5zZm9ybWVkIGNsYXVzZXMgaW4gZXhwbGFpbi4KKwkJCSAqIEhhc2ggdmFs dWUgY2FuIGRlcGVuZCBvbiB0aGUgcGxhdGZvcm0gYW5kIHZlcnNpb24uIEhlbmNlLAorCQkJ ICogc2VxdWVudGFsIHNjYW4gb2YgdGhlIGhhc2ggdGFibGUgd291bGQgcHJvbmUgdG8gY2hh bmdlIHRoZSBvcmRlcgorCQkJICogb2YgY2xhdXNlcyBpbiBsaXN0cyBhbmQsIGFzIGEgcmVz dWx0LCBicmVhayByZWdyZXNzaW9uIHRlc3RzCisJCQkgKiBhY2NpZGVudGlhbGx5LgorCQkJ ICovCisJCQllbnRyaWVzID0gbGFwcGVuZChlbnRyaWVzLCBlbnRyeSk7CisJCX0KKwl9CisK KwkvKiBMZXQncyBjb252ZXJ0IGVhY2ggZ3JvdXAgb2YgY2xhdXNlcyB0byBhbiBJTiBvcGVy YXRpb24uICovCisKKwkvKgorCSAqIEdvIHRocm91Z2ggdGhlIGxpc3Qgb2YgZ3JvdXBzIGFu ZCBjb252ZXJ0IGVhY2gsIHdoZXJlIG51bWJlciBvZgorCSAqIGNvbnN0cyBtb3JlIHRoYW4g MS4gdHJpdmlhbCBncm91cHMgbW92ZSB0byBPUi1saXN0IGFnYWluCisJICovCisJZm9yZWFj aCAobGMsIGVudHJpZXMpCisJeworCQlPaWQJCQkJICAgIHNjYWxhcl90eXBlOworCQlPaWQJ CQkJCWFycmF5X3R5cGU7CisKKwkJZW50cnkgPSAoT3JDbGF1c2VHcm91cEVudHJ5ICopIGxm aXJzdChsYyk7CisKKwkJQXNzZXJ0KGxpc3RfbGVuZ3RoKGVudHJ5LT5jb25zdHMpID4gMCk7 CisJCUFzc2VydChsaXN0X2xlbmd0aChlbnRyeS0+ZXhwcnMpID09IGxpc3RfbGVuZ3RoKGVu dHJ5LT5jb25zdHMpKTsKKworCQlpZiAobGlzdF9sZW5ndGgoZW50cnktPmNvbnN0cykgPT0g MSkKKwkJeworCQkJLyoKKwkJCSAqIE9ubHkgb25lIGVsZW1lbnQgaW4gdGhlIGNsYXNzLiBS ZXR1cm4gb3JpZ2luIGV4cHJlc3Npb24gaW50bworCQkJICogdGhlIEJvb2xFeHByIGFyZ3Mg bGlzdCB1bmNoYW5nZWQuCisJCQkgKi8KKwkJCWxpc3RfZnJlZShlbnRyeS0+Y29uc3RzKTsK KwkJCW9yX2xpc3QgPSBsaXN0X2NvbmNhdChvcl9saXN0LCBlbnRyeS0+ZXhwcnMpOworCQkJ Y29udGludWU7CisJCX0KKworCQkvKgorCQkgKiBEbyB0aGUgdHJhbnNmb3JtYXRpb24uCisJ CSAqLworCisJCXNjYWxhcl90eXBlID0gZW50cnktPmtleS5leHBydHlwZTsKKwkJYXJyYXlf dHlwZSA9IE9pZElzVmFsaWQoc2NhbGFyX3R5cGUpID8gZ2V0X2FycmF5X3R5cGUoc2NhbGFy X3R5cGUpIDoKKwkJCQkJCQkJCQkJICAgSW52YWxpZE9pZDsKKworCQlpZiAoT2lkSXNWYWxp ZChhcnJheV90eXBlKSkKKwkJeworCQkJLyoKKwkJCSAqIE9LOiBjb2VyY2UgYWxsIHRoZSBy aWdodC1oYW5kIG5vbi1WYXIgaW5wdXRzIHRvIHRoZSBjb21tb24KKwkJCSAqIHR5cGUgYW5k IGJ1aWxkIGFuIEFycmF5RXhwciBmb3IgdGhlbS4KKwkJCSAqLworCQkJTGlzdAkJCSAgICph ZXhwcnMgPSBOSUw7CisJCQlBcnJheUV4cHIJCSAgICpuZXdhID0gTlVMTDsKKwkJCVNjYWxh ckFycmF5T3BFeHByICAqc2FvcGV4cHIgPSBOVUxMOworCQkJSGVhcFR1cGxlCQkJb3BlcnR1 cDsKKwkJCUZvcm1fcGdfb3BlcmF0b3IJb3BlcmZvcm07CisJCQlMaXN0CQkJICAgKm5hbWVs aXN0ID0gTklMOworCQkJTGlzdENlbGwJCSAgICpsYzE7CisKKwkJCWZvcmVhY2gobGMxLCBl bnRyeS0+Y29uc3RzKQorCQkJeworCQkJCU5vZGUgICAqcmV4cHIgPSAoTm9kZSAqKSBsZmly c3QobGMxKTsKKworCQkJCXJleHByID0gY29lcmNlX3RvX2NvbW1vbl90eXBlKHBzdGF0ZSwg cmV4cHIsCisJCQkJCQkJCQkJCSAgc2NhbGFyX3R5cGUsCisJCQkJCQkJCQkJCSAgIklOIik7 CisJCQkJYWV4cHJzID0gbGFwcGVuZChhZXhwcnMsIHJleHByKTsKKwkJCX0KKworCQkJbmV3 YSA9IG1ha2VOb2RlKEFycmF5RXhwcik7CisJCQkvKiBhcnJheV9jb2xsaWQgd2lsbCBiZSBz ZXQgYnkgcGFyc2VfY29sbGF0ZS5jICovCisJCQluZXdhLT5lbGVtZW50X3R5cGVpZCA9IHNj YWxhcl90eXBlOworCQkJbmV3YS0+YXJyYXlfdHlwZWlkID0gYXJyYXlfdHlwZTsKKwkJCW5l d2EtPm11bHRpZGltcyA9IGZhbHNlOworCQkJbmV3YS0+ZWxlbWVudHMgPSBhZXhwcnM7CisJ CQluZXdhLT5sb2NhdGlvbiA9IC0xOworCisJCQlvcGVydHVwID0gU2VhcmNoU3lzQ2FjaGUx KE9QRVJPSUQsCisJCQkJCQkJCQkgIE9iamVjdElkR2V0RGF0dW0oZW50cnktPmtleS5vcG5v KSk7CisJCQlpZiAoIUhlYXBUdXBsZUlzVmFsaWQob3BlcnR1cCkpCisJCQkJZWxvZyhFUlJP UiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIG9wZXJhdG9yICV1IiwKKwkJCQkJIGVudHJ5 LT5rZXkub3Bubyk7CisKKwkJCW9wZXJmb3JtID0gKEZvcm1fcGdfb3BlcmF0b3IpIEdFVFNU UlVDVChvcGVydHVwKTsKKwkJCWlmICghT3BlcmF0b3JJc1Zpc2libGUoZW50cnktPmtleS5v cG5vKSkKKwkJCQluYW1lbGlzdCA9IGxhcHBlbmQobmFtZWxpc3QsIG1ha2VTdHJpbmcoZ2V0 X25hbWVzcGFjZV9uYW1lKG9wZXJmb3JtLT5vcHJuYW1lc3BhY2UpKSk7CisKKwkJCW5hbWVs aXN0ID0gbGFwcGVuZChuYW1lbGlzdCwgbWFrZVN0cmluZyhwc3RyZHVwKE5hbWVTdHIob3Bl cmZvcm0tPm9wcm5hbWUpKSkpOworCQkJUmVsZWFzZVN5c0NhY2hlKG9wZXJ0dXApOworCisJ CQlzYW9wZXhwciA9CisJCQkJKFNjYWxhckFycmF5T3BFeHByICopCisJCQkJCW1ha2Vfc2Nh bGFyX2FycmF5X29wKHBzdGF0ZSwKKwkJCQkJCQkJCQkgbmFtZWxpc3QsCisJCQkJCQkJCQkJ IHRydWUsCisJCQkJCQkJCQkJIGVudHJ5LT5ub2RlLAorCQkJCQkJCQkJCSAoTm9kZSAqKSBu ZXdhLAorCQkJCQkJCQkJCSAtMSk7CisKKwkJCW9yX2xpc3QgPSBsYXBwZW5kKG9yX2xpc3Qs ICh2b2lkICopIHNhb3BleHByKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCS8qCisJCQkgKiBJ ZiB0aGUgY29uc3Qgbm9kZSAocmlnaHQgc2lkZSBvZiBvcGVyYXRvciBleHByZXNzaW9uKSAn cyB0eXBlCisJCQkgKiAgZG9uJ3QgaGF2ZSDigJx0cnVl4oCdIGFycmF5IHR5cGUsIHRoZW4g d2UgY2Fubm5vdCBkbyB0aGUgdHJhbnNmb3JtYXRpb24uCisJCQkgKiBXZSBzaW1wbHkgY29u Y2F0ZW5hdGUgdGhlIGV4cHJlc3Npb24gbm9kZS4KKwkJCSAqCisJCQkgKi8KKwkJCWxpc3Rf ZnJlZShlbnRyeS0+Y29uc3RzKTsKKwkJCW9yX2xpc3QgPSBsaXN0X2NvbmNhdChvcl9saXN0 LCBlbnRyeS0+ZXhwcnMpOworCQl9CisJfQorCWhhc2hfZGVzdHJveShvcl9ncm91cF9odGFi KTsKKwlsaXN0X2ZyZWUoZW50cmllcyk7CisKKwkvKiBPbmUgbW9yZSB0cmljazogYXNzZW1i bGUgY29ycmVjdCBjbGF1c2UgKi8KKwlyZXR1cm4gKE5vZGUgKikgKChsaXN0X2xlbmd0aChv cl9saXN0KSA+IDEpID8KKwkJCQkJIG1ha2VCb29sRXhwcihPUl9FWFBSLCBvcl9saXN0LCBs b2NhdGlvbikgOgorCQkJCQkgbGluaXRpYWwob3JfbGlzdCkpOworfQogCiAvKgogICogdHJh bnNmb3JtRXhwciAtCkBAIC0xMzg2LDYgKzE3MjAsMTEgQEAgdHJhbnNmb3JtQm9vbEV4cHIo UGFyc2VTdGF0ZSAqcHN0YXRlLCBCb29sRXhwciAqYSkKIAkJYXJncyA9IGxhcHBlbmQoYXJn cywgYXJnKTsKIAl9CiAKKwkvKiBNYWtlIGFuIGF0dGVtcHQgdG8gZ3JvdXAgc2ltaWxhciBP UiBjbGF1c2VzIGludG8gQU5ZIG9wZXJhdGlvbiAqLworCWlmIChlbmFibGVfb3JfdHJhbnNm b3JtYXRpb24gJiYgYS0+Ym9vbG9wID09IE9SX0VYUFIgJiYKKwkJbGlzdF9sZW5ndGgoYXJn cykgPiAxKQorCQlyZXR1cm4gVHJhbnNmb3JtT3JFeHByVG9BTlkocHN0YXRlLCBhcmdzLCBh LT5sb2NhdGlvbik7CisKIAlyZXR1cm4gKE5vZGUgKikgbWFrZUJvb2xFeHByKGEtPmJvb2xv cCwgYXJncywgYS0+bG9jYXRpb24pOwogfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91 dGlscy9taXNjL2d1Y190YWJsZXMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3Rh Ymxlcy5jCmluZGV4IDU0M2E4N2M2NTkuLmU4MmY2YjdmNDIgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxz L21pc2MvZ3VjX3RhYmxlcy5jCkBAIC0xMDI2LDYgKzEwMjYsMTcgQEAgc3RydWN0IGNvbmZp Z19ib29sIENvbmZpZ3VyZU5hbWVzQm9vbFtdID0KIAkJdHJ1ZSwKIAkJTlVMTCwgTlVMTCwg TlVMTAogCX0sCisJeworCQl7ImVuYWJsZV9vcl90cmFuc2Zvcm1hdGlvbiIsIFBHQ19VU0VS U0VULCBRVUVSWV9UVU5JTkdfT1RIRVIsCisJCQlnZXR0ZXh0X25vb3AoIlRyYW5zZm9ybSBh IHNlcXVlbmNlIG9mIE9SIGNsYXVzZXMgdG8gYW4gYXJyYXkgZXhwcmVzc2lvbi4iKSwKKwkJ CWdldHRleHRfbm9vcCgiVGhlIHBsYW5uZXIgd2lsbCByZXBsYWNlIGV4cHJlc3Npb24gbGlr ZSAneD1jMSBPUiB4PWMyIC4uJyIKKwkJCQkJCSAidG8gdGhlIGV4cHJlc3Npb24gJ3ggPSBB TlkoQVJSQVlbYzEsYzIsLi5dKSciKSwKKwkJCUdVQ19FWFBMQUlOCisJCX0sCisJCSZlbmFi bGVfb3JfdHJhbnNmb3JtYXRpb24sCisJCXRydWUsCisJCU5VTEwsIE5VTEwsIE5VTEwKKwl9 LAogCXsKIAkJLyoKIAkJICogTm90IGZvciBnZW5lcmFsIHVzZSAtLS0gdXNlZCBieSBTRVQg U0VTU0lPTiBBVVRIT1JJWkFUSU9OIGFuZCBTRVQKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZSBiL3NyYy9iYWNrZW5kL3V0aWxz L21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQppbmRleCBlZGNjMDI4MmIyLi5kMzBkYzZk NTFjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29u Zi5zYW1wbGUKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYu c2FtcGxlCkBAIC0zODksNiArMzg5LDcgQEAKICMgLSBQbGFubmVyIE1ldGhvZCBDb25maWd1 cmF0aW9uIC0KIAogI2VuYWJsZV9hc3luY19hcHBlbmQgPSBvbgorI2VuYWJsZV9vcl90cmFu c2Zvcm1hdGlvbiA9IG9uCiAjZW5hYmxlX2JpdG1hcHNjYW4gPSBvbgogI2VuYWJsZV9nYXRo ZXJtZXJnZSA9IG9uCiAjZW5hYmxlX2hhc2hhZ2cgPSBvbgpkaWZmIC0tZ2l0IGEvc3JjL2Jp bi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwgYi9zcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdf ZHVtcC5wbAppbmRleCAwMGI1MDkyNzEzLi5kMjhiZjYxN2RiIDEwMDY0NAotLS0gYS9zcmMv YmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbAorKysgYi9zcmMvYmluL3BnX2R1bXAvdC8w MDJfcGdfZHVtcC5wbApAQCAtMjA5NSw5ICsyMDk1LDkgQEAgbXkgJXRlc3RzID0gKAogCQly ZWdleHAgPT4gcXIvXgogCQkJXFFDUkVBVEUgRE9NQUlOIGR1bXBfdGVzdC51c19wb3N0YWxf Y29kZSBBUyB0ZXh0IENPTExBVEUgcGdfY2F0YWxvZy4iQyIgREVGQVVMVCAnMTAwMTQnOjp0 ZXh0XEVcblxzKwogCQkJXFFDT05TVFJBSU5UIHVzX3Bvc3RhbF9jb2RlX2NoZWNrIENIRUNL IFxFCi0JCQlcUSgoKFZBTFVFIH4gJ15cZHs1fVxFCi0JCQlcJFxRJzo6dGV4dCkgT1IgKFZB TFVFIH4gJ15cZHs1fS1cZHs0fVxFXCQKLQkJCVxRJzo6dGV4dCkpKTtcRSgufFxuKSoKKwkJ CVxRKChWQUxVRSB+IEFOWSAoQVJSQVlbJ15cZHs1fVxFCisJCQlcJFxRJzo6dGV4dCwgJ15c ZHs1fS1cZHs0fVxFXCQKKwkJCVxRJzo6dGV4dF0pKSk7XEUoLnxcbikqCiAJCQlcUUNPTU1F TlQgT04gQ09OU1RSQUlOVCB1c19wb3N0YWxfY29kZV9jaGVjayBPTiBET01BSU4gZHVtcF90 ZXN0LnVzX3Bvc3RhbF9jb2RlIElTICdjaGVjayBpdCc7XEUKIAkJCS94bSwKIAkJbGlrZSA9 PgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcXVlcnlqdW1ibGUuaCBiL3NyYy9p bmNsdWRlL25vZGVzL3F1ZXJ5anVtYmxlLmgKaW5kZXggZjFjNTVjODA2Ny4uYTlhZTA0OGFm NSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcXVlcnlqdW1ibGUuaAorKysgYi9z cmMvaW5jbHVkZS9ub2Rlcy9xdWVyeWp1bWJsZS5oCkBAIC02NSw2ICs2NSw3IEBAIGV4dGVy biBQR0RMTElNUE9SVCBpbnQgY29tcHV0ZV9xdWVyeV9pZDsKIAogZXh0ZXJuIGNvbnN0IGNo YXIgKkNsZWFuUXVlcnl0ZXh0KGNvbnN0IGNoYXIgKnF1ZXJ5LCBpbnQgKmxvY2F0aW9uLCBp bnQgKmxlbik7CiBleHRlcm4gSnVtYmxlU3RhdGUgKkp1bWJsZVF1ZXJ5KFF1ZXJ5ICpxdWVy eSk7CitleHRlcm4gSnVtYmxlU3RhdGUgKkp1bWJsZUV4cHIoRXhwciAqZXhwciwgdWludDY0 ICpxdWVyeUlkKTsKIGV4dGVybiB2b2lkIEVuYWJsZVF1ZXJ5SWQodm9pZCk7CiAKIGV4dGVy biBQR0RMTElNUE9SVCBib29sIHF1ZXJ5X2lkX2VuYWJsZWQ7CmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9vcHRpbWl6ZXIvb3B0aW1pemVyLmggYi9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIv b3B0aW1pemVyLmgKaW5kZXggN2I2M2M1Y2Y3MS4uMzVhYjU3NzUwMSAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvb3B0aW1pemVyL29wdGltaXplci5oCisrKyBiL3NyYy9pbmNsdWRlL29w dGltaXplci9vcHRpbWl6ZXIuaApAQCAtNTAsNiArNTAsNyBAQCBzdHJ1Y3QgUGxhbm5lZFN0 bXQ7CiBzdHJ1Y3QgUGFyYW1MaXN0SW5mb0RhdGE7CiBzdHJ1Y3QgSGVhcFR1cGxlRGF0YTsK IAorZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgZW5hYmxlX29yX3RyYW5zZm9ybWF0aW9uOwog CiAvKiBpbiBwYXRoL2NsYXVzZXNlbC5jOiAqLwogCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL2NyZWF0ZV9pbmRleC5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL2NyZWF0ZV9pbmRleC5vdXQKaW5kZXggNzlmYTExN2NiNS4uYjg2NTNjMDllYSAx MDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfaW5kZXgub3V0 CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX2luZGV4Lm91dApAQCAt MTgzOCwxOCArMTgzOCw1MCBAQCBEUk9QIFRBQkxFIG9uZWtfd2l0aF9udWxsOwogRVhQTEFJ TiAoQ09TVFMgT0ZGKQogU0VMRUNUICogRlJPTSB0ZW5rMQogICBXSEVSRSB0aG91c2FuZCA9 IDQyIEFORCAodGVudGhvdXMgPSAxIE9SIHRlbnRob3VzID0gMyBPUiB0ZW50aG91cyA9IDQy KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQotIEJpdG1hcCBIZWFwIFNjYW4gb24gdGVuazEKLSAgIFJlY2hlY2sgQ29u ZDogKCgodGhvdXNhbmQgPSA0MikgQU5EICh0ZW50aG91cyA9IDEpKSBPUiAoKHRob3VzYW5k ID0gNDIpIEFORCAodGVudGhvdXMgPSAzKSkgT1IgKCh0aG91c2FuZCA9IDQyKSBBTkQgKHRl bnRob3VzID0gNDIpKSkKLSAgIC0+ICBCaXRtYXBPcgotICAgICAgICAgLT4gIEJpdG1hcCBJ bmRleCBTY2FuIG9uIHRlbmsxX3Rob3VzX3RlbnRob3VzCi0gICAgICAgICAgICAgICBJbmRl eCBDb25kOiAoKHRob3VzYW5kID0gNDIpIEFORCAodGVudGhvdXMgPSAxKSkKLSAgICAgICAg IC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV90aG91c190ZW50aG91cwotICAgICAg ICAgICAgICAgSW5kZXggQ29uZDogKCh0aG91c2FuZCA9IDQyKSBBTkQgKHRlbnRob3VzID0g MykpCi0gICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfdGhvdXNfdGVu dGhvdXMKLSAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICgodGhvdXNhbmQgPSA0MikgQU5E ICh0ZW50aG91cyA9IDQyKSkKLSg5IHJvd3MpCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEluZGV4IFNjYW4gdXNpbmcgdGVuazFfdGhv dXNfdGVudGhvdXMgb24gdGVuazEKKyAgIEluZGV4IENvbmQ6ICgodGhvdXNhbmQgPSA0Mikg QU5EICh0ZW50aG91cyA9IEFOWSAoJ3sxLDMsNDJ9Jzo6aW50ZWdlcltdKSkpCisoMiByb3dz KQorCitTRUxFQ1QgKiBGUk9NIHRlbmsxCisgIFdIRVJFIHRob3VzYW5kID0gNDIgQU5EICh0 ZW50aG91cyA9IDEgT1IgdGVudGhvdXMgPSAzIE9SIHRlbnRob3VzID0gNDIpOworIHVuaXF1 ZTEgfCB1bmlxdWUyIHwgdHdvIHwgZm91ciB8IHRlbiB8IHR3ZW50eSB8IGh1bmRyZWQgfCB0 aG91c2FuZCB8IHR3b3Rob3VzYW5kIHwgZml2ZXRob3VzIHwgdGVudGhvdXMgfCBvZGQgfCBl dmVuIHwgc3RyaW5ndTEgfCBzdHJpbmd1MiB8IHN0cmluZzQgCistLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tKy0tLS0tLSstLS0tLSstLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0rLS0tLS0tKy0tLS0t LS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0KKyAgICAgIDQyIHwgICAgNTUzMCB8ICAgMCB8 ICAgIDIgfCAgIDIgfCAgICAgIDIgfCAgICAgIDQyIHwgICAgICAgNDIgfCAgICAgICAgICA0 MiB8ICAgICAgICA0MiB8ICAgICAgIDQyIHwgIDg0IHwgICA4NSB8IFFCQUFBQSAgIHwgU0VJ QUFBICAgfCBPT09PeHgKKygxIHJvdykKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNU IGNvdW50KCopIEZST00gdGVuazEKKyAgV0hFUkUgaHVuZHJlZCA9IDQyIEFORCAodGhvdXNh bmQgPSA0MiBPUiB0aG91c2FuZCA9IDk5KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQWdncmVnYXRlCisgICAt PiAgQml0bWFwIEhlYXAgU2NhbiBvbiB0ZW5rMQorICAgICAgICAgUmVjaGVjayBDb25kOiAo KGh1bmRyZWQgPSA0MikgQU5EICh0aG91c2FuZCA9IEFOWSAoJ3s0Miw5OX0nOjppbnRlZ2Vy W10pKSkKKyAgICAgICAgIC0+ICBCaXRtYXBBbmQKKyAgICAgICAgICAgICAgIC0+ICBCaXRt YXAgSW5kZXggU2NhbiBvbiB0ZW5rMV9odW5kcmVkCisgICAgICAgICAgICAgICAgICAgICBJ bmRleCBDb25kOiAoaHVuZHJlZCA9IDQyKQorICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJ bmRleCBTY2FuIG9uIHRlbmsxX3Rob3VzX3RlbnRob3VzCisgICAgICAgICAgICAgICAgICAg ICBJbmRleCBDb25kOiAodGhvdXNhbmQgPSBBTlkgKCd7NDIsOTl9Jzo6aW50ZWdlcltdKSkK Kyg4IHJvd3MpCisKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxCisgIFdIRVJFIGh1bmRy ZWQgPSA0MiBBTkQgKHRob3VzYW5kID0gNDIgT1IgdGhvdXNhbmQgPSA5OSk7CisgY291bnQg CistLS0tLS0tCisgICAgMTAKKygxIHJvdykKKworU0VUIGVuYWJsZV9vcl90cmFuc2Zvcm1h dGlvbiA9IG9uOworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUICogRlJPTSB0ZW5rMQor ICBXSEVSRSB0aG91c2FuZCA9IDQyIEFORCAodGVudGhvdXMgPSAxIE9SIHRlbnRob3VzID0g MyBPUiB0ZW50aG91cyA9IDQyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgSW5kZXggU2NhbiB1c2luZyB0ZW5rMV90aG91c190ZW50 aG91cyBvbiB0ZW5rMQorICAgSW5kZXggQ29uZDogKCh0aG91c2FuZCA9IDQyKSBBTkQgKHRl bnRob3VzID0gQU5ZICgnezEsMyw0Mn0nOjppbnRlZ2VyW10pKSkKKygyIHJvd3MpCiAKIFNF TEVDVCAqIEZST00gdGVuazEKICAgV0hFUkUgdGhvdXNhbmQgPSA0MiBBTkQgKHRlbnRob3Vz ID0gMSBPUiB0ZW50aG91cyA9IDMgT1IgdGVudGhvdXMgPSA0Mik7CkBAIC0xODYxLDI4ICsx ODkzLDExNiBAQCBTRUxFQ1QgKiBGUk9NIHRlbmsxCiBFWFBMQUlOIChDT1NUUyBPRkYpCiBT RUxFQ1QgY291bnQoKikgRlJPTSB0ZW5rMQogICBXSEVSRSBodW5kcmVkID0gNDIgQU5EICh0 aG91c2FuZCA9IDQyIE9SIHRob3VzYW5kID0gOTkpOwotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQWdncmVn YXRlCisgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiB0ZW5rMQorICAgICAgICAgUmVjaGVj ayBDb25kOiAoKGh1bmRyZWQgPSA0MikgQU5EICh0aG91c2FuZCA9IEFOWSAoJ3s0Miw5OX0n OjppbnRlZ2VyW10pKSkKKyAgICAgICAgIC0+ICBCaXRtYXBBbmQKKyAgICAgICAgICAgICAg IC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV9odW5kcmVkCisgICAgICAgICAgICAg ICAgICAgICBJbmRleCBDb25kOiAoaHVuZHJlZCA9IDQyKQorICAgICAgICAgICAgICAgLT4g IEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX3Rob3VzX3RlbnRob3VzCisgICAgICAgICAg ICAgICAgICAgICBJbmRleCBDb25kOiAodGhvdXNhbmQgPSBBTlkgKCd7NDIsOTl9Jzo6aW50 ZWdlcltdKSkKKyg4IHJvd3MpCisKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxCisgIFdI RVJFIGh1bmRyZWQgPSA0MiBBTkQgKHRob3VzYW5kID0gNDIgT1IgdGhvdXNhbmQgPSA5OSk7 CisgY291bnQgCistLS0tLS0tCisgICAgMTAKKygxIHJvdykKKworRVhQTEFJTiAoQ09TVFMg T0ZGKQorU0VMRUNUIGNvdW50KCopIEZST00gdGVuazEKKyAgV0hFUkUgaHVuZHJlZCA9IDQy IEFORCAodGhvdXNhbmQgPCA0MiBPUiB0aG91c2FuZCA8IDk5IE9SIDQzID4gdGhvdXNhbmQg T1IgNDIgPiB0aG91c2FuZCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQor ICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gdGVuazEKKyAgICAgICAgIFJlY2hlY2sgQ29u ZDogKChodW5kcmVkID0gNDIpIEFORCAodGhvdXNhbmQgPCBBTlkgKCd7NDIsOTksNDMsNDJ9 Jzo6aW50ZWdlcltdKSkpCisgICAgICAgICAtPiAgQml0bWFwQW5kCisgICAgICAgICAgICAg ICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfaHVuZHJlZAorICAgICAgICAgICAg ICAgICAgICAgSW5kZXggQ29uZDogKGh1bmRyZWQgPSA0MikKKyAgICAgICAgICAgICAgIC0+ ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV90aG91c190ZW50aG91cworICAgICAgICAg ICAgICAgICAgICAgSW5kZXggQ29uZDogKHRob3VzYW5kIDwgQU5ZICgnezQyLDk5LDQzLDQy fSc6OmludGVnZXJbXSkpCisoOCByb3dzKQorCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxF Q1QgY291bnQoKikgRlJPTSB0ZW5rMQorICBXSEVSRSB0aG91c2FuZCA9IDQyIEFORCAodGVu dGhvdXMgPSAxIE9SIHRlbnRob3VzID0gMykgT1IgdGhvdXNhbmQgPSA0MTsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQor ICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gdGVuazEKKyAgICAgICAgIFJlY2hlY2sgQ29u ZDogKCgodGhvdXNhbmQgPSA0MikgQU5EICh0ZW50aG91cyA9IEFOWSAoJ3sxLDN9Jzo6aW50 ZWdlcltdKSkpIE9SICh0aG91c2FuZCA9IDQxKSkKKyAgICAgICAgIC0+ICBCaXRtYXBPcgor ICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX3Rob3VzX3Rl bnRob3VzCisgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoKHRob3VzYW5kID0g NDIpIEFORCAodGVudGhvdXMgPSBBTlkgKCd7MSwzfSc6OmludGVnZXJbXSkpKQorICAgICAg ICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX3Rob3VzX3RlbnRob3Vz CisgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAodGhvdXNhbmQgPSA0MSkKKyg4 IHJvd3MpCisKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxCisgIFdIRVJFIHRob3VzYW5k ID0gNDIgQU5EICh0ZW50aG91cyA9IDEgT1IgdGVudGhvdXMgPSAzKSBPUiB0aG91c2FuZCA9 IDQxOworIGNvdW50IAorLS0tLS0tLQorICAgIDEwCisoMSByb3cpCisKK0VYUExBSU4gKENP U1RTIE9GRikKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxCisgIFdIRVJFIGh1bmRyZWQg PSA0MiBBTkQgKHRob3VzYW5kID0gNDIgT1IgdGhvdXNhbmQgPSA5OSBPUiB0ZW50aG91cyA8 IDIpIE9SIHRob3VzYW5kID0gNDE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIHRlbmsxCisg ICAgICAgICBSZWNoZWNrIENvbmQ6ICgoKGh1bmRyZWQgPSA0MikgQU5EICgodGhvdXNhbmQg PSBBTlkgKCd7NDIsOTl9Jzo6aW50ZWdlcltdKSkgT1IgKHRlbnRob3VzIDwgMikpKSBPUiAo dGhvdXNhbmQgPSA0MSkpCisgICAgICAgICAtPiAgQml0bWFwT3IKKyAgICAgICAgICAgICAg IC0+ICBCaXRtYXBBbmQKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXgg U2NhbiBvbiB0ZW5rMV9odW5kcmVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRl eCBDb25kOiAoaHVuZHJlZCA9IDQyKQorICAgICAgICAgICAgICAgICAgICAgLT4gIEJpdG1h cE9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4g b24gdGVuazFfdGhvdXNfdGVudGhvdXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIEluZGV4IENvbmQ6ICh0aG91c2FuZCA9IEFOWSAoJ3s0Miw5OX0nOjppbnRlZ2VyW10p KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9u IHRlbmsxX3Rob3VzX3RlbnRob3VzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBJbmRleCBDb25kOiAodGVudGhvdXMgPCAyKQorICAgICAgICAgICAgICAgLT4gIEJpdG1h cCBJbmRleCBTY2FuIG9uIHRlbmsxX3Rob3VzX3RlbnRob3VzCisgICAgICAgICAgICAgICAg ICAgICBJbmRleCBDb25kOiAodGhvdXNhbmQgPSA0MSkKKygxNCByb3dzKQorCitTRUxFQ1Qg Y291bnQoKikgRlJPTSB0ZW5rMQorICBXSEVSRSBodW5kcmVkID0gNDIgQU5EICh0aG91c2Fu ZCA9IDQyIE9SIHRob3VzYW5kID0gOTkgT1IgdGVudGhvdXMgPCAyKSBPUiB0aG91c2FuZCA9 IDQxOworIGNvdW50IAorLS0tLS0tLQorICAgIDIwCisoMSByb3cpCisKK0VYUExBSU4gKENP U1RTIE9GRikKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxCisgIFdIRVJFIGh1bmRyZWQg PSA0MiBBTkQgKHRob3VzYW5kID0gNDIgT1IgdGhvdXNhbmQgPSA0MSBPUiB0aG91c2FuZCA9 IDk5IEFORCB0ZW50aG91cyA9IDIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KICBBZ2dyZWdhdGUKICAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIHRlbmsx Ci0gICAgICAgICBSZWNoZWNrIENvbmQ6ICgoaHVuZHJlZCA9IDQyKSBBTkQgKCh0aG91c2Fu ZCA9IDQyKSBPUiAodGhvdXNhbmQgPSA5OSkpKQorICAgICAgICAgUmVjaGVjayBDb25kOiAo KGh1bmRyZWQgPSA0MikgQU5EICgoKHRob3VzYW5kID0gOTkpIEFORCAodGVudGhvdXMgPSAy KSkgT1IgKHRob3VzYW5kID0gQU5ZICgnezQyLDQxfSc6OmludGVnZXJbXSkpKSkKICAgICAg ICAgIC0+ICBCaXRtYXBBbmQKICAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2Nh biBvbiB0ZW5rMV9odW5kcmVkCiAgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAo aHVuZHJlZCA9IDQyKQogICAgICAgICAgICAgICAgLT4gIEJpdG1hcE9yCiAgICAgICAgICAg ICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfdGhvdXNfdGVudGhv dXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh0aG91c2FuZCA9 IDQyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKCh0aG91c2Fu ZCA9IDk5KSBBTkQgKHRlbnRob3VzID0gMikpCiAgICAgICAgICAgICAgICAgICAgICAtPiAg Qml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfdGhvdXNfdGVudGhvdXMKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh0aG91c2FuZCA9IDk5KQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHRob3VzYW5kID0gQU5ZICgnezQyLDQx fSc6OmludGVnZXJbXSkpCiAoMTEgcm93cykKIAogU0VMRUNUIGNvdW50KCopIEZST00gdGVu azEKLSAgV0hFUkUgaHVuZHJlZCA9IDQyIEFORCAodGhvdXNhbmQgPSA0MiBPUiB0aG91c2Fu ZCA9IDk5KTsKKyAgV0hFUkUgaHVuZHJlZCA9IDQyIEFORCAodGhvdXNhbmQgPSA0MiBPUiB0 aG91c2FuZCA9IDQxIE9SIHRob3VzYW5kID0gOTkgQU5EIHRlbnRob3VzID0gMik7CiAgY291 bnQgCiAtLS0tLS0tCiAgICAgMTAKICgxIHJvdykKIAorUkVTRVQgZW5hYmxlX29yX3RyYW5z Zm9ybWF0aW9uOwogLS0KIC0tIENoZWNrIGJlaGF2aW9yIHdpdGggZHVwbGljYXRlIGluZGV4 IGNvbHVtbiBjb250ZW50cwogLS0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvaW5oZXJpdC5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2luaGVyaXQu b3V0CmluZGV4IDEzMGE5MjQyMjguLjY4NDg4NjMzNmMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvaW5oZXJpdC5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9pbmhlcml0Lm91dApAQCAtMjYwMCw3ICsyNjAwLDcgQEAgZXhwbGFpbiAoY29z dHMgb2ZmKSBzZWxlY3QgKiBmcm9tIGxpc3RfcGFydGVkIHdoZXJlIGEgPSAnYWInIG9yIGEg aW4gKG51bGwsICdjZCcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVF UlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCiAgU2VxIFNjYW4gb24gcGFydF9hYl9jZCBsaXN0X3BhcnRl ZAotICAgRmlsdGVyOiAoKChhKTo6dGV4dCA9ICdhYic6OnRleHQpIE9SICgoYSk6OnRleHQg PSBBTlkgKCd7TlVMTCxjZH0nOjp0ZXh0W10pKSkKKyAgIEZpbHRlcjogKCgoYSk6OnRleHQg PSBBTlkgKCd7TlVMTCxjZH0nOjp0ZXh0W10pKSBPUiAoKGEpOjp0ZXh0ID0gJ2FiJzo6dGV4 dCkpCiAoMiByb3dzKQogCiBleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gbGlz dF9wYXJ0ZWQgd2hlcmUgYSA9ICdhYic7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL2pvaW4ub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qb2luLm91 dAppbmRleCA5NjA1NDAwMDIxLi5jZDJkNzhhNjM2IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL2pvaW4ub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvam9pbi5vdXQKQEAgLTQyMTAsMTAgKzQyMTAsMTAgQEAgZXhwbGFpbiAoY29zdHMgb2Zm KQogc2VsZWN0ICogZnJvbSB0ZW5rMSBhIGpvaW4gdGVuazEgYiBvbgogICAoYS51bmlxdWUx ID0gMSBhbmQgYi51bmlxdWUxID0gMikgb3IKICAgKChhLnVuaXF1ZTIgPSAzIG9yIGEudW5p cXVlMiA9IDcpIGFuZCBiLmh1bmRyZWQgPSA0KTsKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgTmVzdGVkIExvb3AKLSAgIEpvaW4gRmls dGVyOiAoKChhLnVuaXF1ZTEgPSAxKSBBTkQgKGIudW5pcXVlMSA9IDIpKSBPUiAoKChhLnVu aXF1ZTIgPSAzKSBPUiAoYS51bmlxdWUyID0gNykpIEFORCAoYi5odW5kcmVkID0gNCkpKQor ICAgSm9pbiBGaWx0ZXI6ICgoKGEudW5pcXVlMSA9IDEpIEFORCAoYi51bmlxdWUxID0gMikp IE9SICgoYS51bmlxdWUyID0gQU5ZICgnezMsN30nOjppbnRlZ2VyW10pKSBBTkQgKGIuaHVu ZHJlZCA9IDQpKSkKICAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIHRlbmsxIGIKICAgICAg ICAgIFJlY2hlY2sgQ29uZDogKCh1bmlxdWUxID0gMikgT1IgKGh1bmRyZWQgPSA0KSkKICAg ICAgICAgIC0+ICBCaXRtYXBPcgpAQCAtNDIyMywxNiArNDIyMyw2NCBAQCBzZWxlY3QgKiBm cm9tIHRlbmsxIGEgam9pbiB0ZW5rMSBiIG9uCiAgICAgICAgICAgICAgICAgICAgICBJbmRl eCBDb25kOiAoaHVuZHJlZCA9IDQpCiAgICAtPiAgTWF0ZXJpYWxpemUKICAgICAgICAgIC0+ ICBCaXRtYXAgSGVhcCBTY2FuIG9uIHRlbmsxIGEKLSAgICAgICAgICAgICAgIFJlY2hlY2sg Q29uZDogKCh1bmlxdWUxID0gMSkgT1IgKHVuaXF1ZTIgPSAzKSBPUiAodW5pcXVlMiA9IDcp KQorICAgICAgICAgICAgICAgUmVjaGVjayBDb25kOiAoKHVuaXF1ZTEgPSAxKSBPUiAodW5p cXVlMiA9IEFOWSAoJ3szLDd9Jzo6aW50ZWdlcltdKSkpCiAgICAgICAgICAgICAgICAtPiAg Qml0bWFwT3IKICAgICAgICAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBv biB0ZW5rMV91bmlxdWUxCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25k OiAodW5pcXVlMSA9IDEpCiAgICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4 IFNjYW4gb24gdGVuazFfdW5pcXVlMgotICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5k ZXggQ29uZDogKHVuaXF1ZTIgPSAzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5k ZXggQ29uZDogKHVuaXF1ZTIgPSBBTlkgKCd7Myw3fSc6OmludGVnZXJbXSkpCisoMTcgcm93 cykKKworU0VUIGVuYWJsZV9vcl90cmFuc2Zvcm1hdGlvbiA9IG9uOworZXhwbGFpbiAoY29z dHMgb2ZmKQorc2VsZWN0ICogZnJvbSB0ZW5rMSBhIGpvaW4gdGVuazEgYiBvbgorICAoYS51 bmlxdWUxID0gMSBhbmQgYi51bmlxdWUxID0gMikgb3IKKyAgKChhLnVuaXF1ZTIgPSAzIG9y IGEudW5pcXVlMiA9IDcpIGFuZCBiLmh1bmRyZWQgPSA0KTsKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgTmVzdGVkIExvb3AKKyAgIEpvaW4gRmlsdGVyOiAoKChhLnVuaXF1ZTEg PSAxKSBBTkQgKGIudW5pcXVlMSA9IDIpKSBPUiAoKGEudW5pcXVlMiA9IEFOWSAoJ3szLDd9 Jzo6aW50ZWdlcltdKSkgQU5EIChiLmh1bmRyZWQgPSA0KSkpCisgICAtPiAgQml0bWFwIEhl YXAgU2NhbiBvbiB0ZW5rMSBiCisgICAgICAgICBSZWNoZWNrIENvbmQ6ICgodW5pcXVlMSA9 IDIpIE9SIChodW5kcmVkID0gNCkpCisgICAgICAgICAtPiAgQml0bWFwT3IKKyAgICAgICAg ICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV91bmlxdWUxCisgICAgICAg ICAgICAgICAgICAgICBJbmRleCBDb25kOiAodW5pcXVlMSA9IDIpCisgICAgICAgICAgICAg ICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfaHVuZHJlZAorICAgICAgICAgICAg ICAgICAgICAgSW5kZXggQ29uZDogKGh1bmRyZWQgPSA0KQorICAgLT4gIE1hdGVyaWFsaXpl CisgICAgICAgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiB0ZW5rMSBhCisgICAgICAgICAg ICAgICBSZWNoZWNrIENvbmQ6ICgodW5pcXVlMSA9IDEpIE9SICh1bmlxdWUyID0gQU5ZICgn ezMsN30nOjppbnRlZ2VyW10pKSkKKyAgICAgICAgICAgICAgIC0+ICBCaXRtYXBPcgorICAg ICAgICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX3VuaXF1 ZTEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh1bmlxdWUxID0g MSkKICAgICAgICAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5r MV91bmlxdWUyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAodW5p cXVlMiA9IDcpCi0oMTkgcm93cykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4 IENvbmQ6ICh1bmlxdWUyID0gQU5ZICgnezMsN30nOjppbnRlZ2VyW10pKQorKDE3IHJvd3Mp CisKK2V4cGxhaW4gKGNvc3RzIG9mZikKK3NlbGVjdCAqIGZyb20gdGVuazEgYSBqb2luIHRl bmsxIGIgb24KKyAgKGEudW5pcXVlMSA8IDIwIG9yIGEudW5pcXVlMSA9IDMgb3IgYS51bmlx dWUxID0gMSBhbmQgYi51bmlxdWUxID0gMikgb3IKKyAgKChhLnVuaXF1ZTIgPSAzIG9yIGEu dW5pcXVlMiA9IDcpIGFuZCBiLmh1bmRyZWQgPSA0KTsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgTmVzdGVkIExvb3AKKyAgIEpvaW4g RmlsdGVyOiAoKChhLnVuaXF1ZTEgPSAxKSBBTkQgKGIudW5pcXVlMSA9IDIpKSBPUiAoKGEu dW5pcXVlMiA9IEFOWSAoJ3szLDd9Jzo6aW50ZWdlcltdKSkgQU5EIChiLmh1bmRyZWQgPSA0 KSkgT1IgKGEudW5pcXVlMSA8IDIwKSBPUiAoYS51bmlxdWUxID0gMykpCisgICAtPiAgU2Vx IFNjYW4gb24gdGVuazEgYgorICAgLT4gIE1hdGVyaWFsaXplCisgICAgICAgICAtPiAgQml0 bWFwIEhlYXAgU2NhbiBvbiB0ZW5rMSBhCisgICAgICAgICAgICAgICBSZWNoZWNrIENvbmQ6 ICgodW5pcXVlMSA9IDEpIE9SICh1bmlxdWUyID0gQU5ZICgnezMsN30nOjppbnRlZ2VyW10p KSBPUiAodW5pcXVlMSA8IDIwKSBPUiAodW5pcXVlMSA9IDMpKQorICAgICAgICAgICAgICAg LT4gIEJpdG1hcE9yCisgICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNj YW4gb24gdGVuazFfdW5pcXVlMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXgg Q29uZDogKHVuaXF1ZTEgPSAxKQorICAgICAgICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJ bmRleCBTY2FuIG9uIHRlbmsxX3VuaXF1ZTIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg IEluZGV4IENvbmQ6ICh1bmlxdWUyID0gQU5ZICgnezMsN30nOjppbnRlZ2VyW10pKQorICAg ICAgICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX3VuaXF1 ZTEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh1bmlxdWUxIDwg MjApCisgICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVu azFfdW5pcXVlMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHVu aXF1ZTEgPSAzKQorKDE1IHJvd3MpCiAKK1JFU0VUIGVuYWJsZV9vcl90cmFuc2Zvcm1hdGlv bjsKIC0tCiAtLSB0ZXN0IHBsYWNlbWVudCBvZiBtb3ZhYmxlIHF1YWxzIGluIGEgcGFyYW1l dGVyaXplZCBqb2luIHRyZWUKIC0tCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL3BhcnRpdGlvbl9wcnVuZS5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3BhcnRpdGlvbl9wcnVuZS5vdXQKaW5kZXggYmYwNjU3YjlmMi4uNThhOTZhMjlhNiAxMDA2 NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fcHJ1bmUub3V0 CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX3BydW5lLm91dApA QCAtODIsMjUgKzgyLDQ3IEBAIGV4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBs cCB3aGVyZSBhIGlzIG51bGw7CiAoMiByb3dzKQogCiBleHBsYWluIChjb3N0cyBvZmYpIHNl bGVjdCAqIGZyb20gbHAgd2hlcmUgYSA9ICdhJyBvciBhID0gJ2MnOwotICAgICAgICAgICAg ICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgIAotLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor ICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgQXBwZW5kCiAg ICAtPiAgU2VxIFNjYW4gb24gbHBfYWQgbHBfMQotICAgICAgICAgRmlsdGVyOiAoKGEgPSAn YSc6OmJwY2hhcikgT1IgKGEgPSAnYyc6OmJwY2hhcikpCisgICAgICAgICBGaWx0ZXI6IChh ID0gQU5ZICgne2EsY30nOjpicGNoYXJbXSkpCiAgICAtPiAgU2VxIFNjYW4gb24gbHBfYmMg bHBfMgotICAgICAgICAgRmlsdGVyOiAoKGEgPSAnYSc6OmJwY2hhcikgT1IgKGEgPSAnYyc6 OmJwY2hhcikpCisgICAgICAgICBGaWx0ZXI6IChhID0gQU5ZICgne2EsY30nOjpicGNoYXJb XSkpCiAoNSByb3dzKQogCiBleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gbHAg d2hlcmUgYSBpcyBub3QgbnVsbCBhbmQgKGEgPSAnYScgb3IgYSA9ICdjJyk7Ci0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgQXBwZW5kCiAgICAtPiAgU2VxIFNjYW4g b24gbHBfYWQgbHBfMQotICAgICAgICAgRmlsdGVyOiAoKGEgSVMgTk9UIE5VTEwpIEFORCAo KGEgPSAnYSc6OmJwY2hhcikgT1IgKGEgPSAnYyc6OmJwY2hhcikpKQorICAgICAgICAgRmls dGVyOiAoKGEgSVMgTk9UIE5VTEwpIEFORCAoYSA9IEFOWSAoJ3thLGN9Jzo6YnBjaGFyW10p KSkKICAgIC0+ICBTZXEgU2NhbiBvbiBscF9iYyBscF8yCi0gICAgICAgICBGaWx0ZXI6ICgo YSBJUyBOT1QgTlVMTCkgQU5EICgoYSA9ICdhJzo6YnBjaGFyKSBPUiAoYSA9ICdjJzo6YnBj aGFyKSkpCisgICAgICAgICBGaWx0ZXI6ICgoYSBJUyBOT1QgTlVMTCkgQU5EIChhID0gQU5Z ICgne2EsY30nOjpicGNoYXJbXSkpKQogKDUgcm93cykKIAorU0VUIGVuYWJsZV9vcl90cmFu c2Zvcm1hdGlvbiA9IG9uOworZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIGxw IHdoZXJlIGEgPSAnYScgb3IgYSA9ICdjJzsKKyAgICAgICAgICAgICAgICAgIFFVRVJZIFBM QU4gICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIEFwcGVuZAorICAgLT4gIFNlcSBTY2FuIG9uIGxwX2FkIGxw XzEKKyAgICAgICAgIEZpbHRlcjogKGEgPSBBTlkgKCd7YSxjfSc6OmJwY2hhcltdKSkKKyAg IC0+ICBTZXEgU2NhbiBvbiBscF9iYyBscF8yCisgICAgICAgICBGaWx0ZXI6IChhID0gQU5Z ICgne2EsY30nOjpicGNoYXJbXSkpCisoNSByb3dzKQorCitleHBsYWluIChjb3N0cyBvZmYp IHNlbGVjdCAqIGZyb20gbHAgd2hlcmUgYSBpcyBub3QgbnVsbCBhbmQgKGEgPSAnYScgb3Ig YSA9ICdjJyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFwcGVuZAor ICAgLT4gIFNlcSBTY2FuIG9uIGxwX2FkIGxwXzEKKyAgICAgICAgIEZpbHRlcjogKChhIElT IE5PVCBOVUxMKSBBTkQgKGEgPSBBTlkgKCd7YSxjfSc6OmJwY2hhcltdKSkpCisgICAtPiAg U2VxIFNjYW4gb24gbHBfYmMgbHBfMgorICAgICAgICAgRmlsdGVyOiAoKGEgSVMgTk9UIE5V TEwpIEFORCAoYSA9IEFOWSAoJ3thLGN9Jzo6YnBjaGFyW10pKSkKKyg1IHJvd3MpCisKK1JF U0VUIGVuYWJsZV9vcl90cmFuc2Zvcm1hdGlvbjsKIGV4cGxhaW4gKGNvc3RzIG9mZikgc2Vs ZWN0ICogZnJvbSBscCB3aGVyZSBhIDw+ICdnJzsKICAgICAgICAgICAgICBRVUVSWSBQTEFO ICAgICAgICAgICAgIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBA IC01MTUsMTAgKzUzNywxMCBAQCBleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20g cmxwIHdoZXJlIGEgPD0gMzE7CiAoMjcgcm93cykKIAogZXhwbGFpbiAoY29zdHMgb2ZmKSBz ZWxlY3QgKiBmcm9tIHJscCB3aGVyZSBhID0gMSBvciBhID0gNzsKLSAgICAgICAgICAgUVVF UlkgUExBTiAgICAgICAgICAgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor ICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBTZXEgU2NhbiBvbiBybHAyIHJs cAotICAgRmlsdGVyOiAoKGEgPSAxKSBPUiAoYSA9IDcpKQorICAgRmlsdGVyOiAoYSA9IEFO WSAoJ3sxLDd9Jzo6aW50ZWdlcltdKSkKICgyIHJvd3MpCiAKIGV4cGxhaW4gKGNvc3RzIG9m Zikgc2VsZWN0ICogZnJvbSBybHAgd2hlcmUgYSA9IDEgb3IgYiA9ICdhYic7CkBAIC01ODks MjAgKzYxMSwyMCBAQCBleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gcmxwIHdo ZXJlIGEgPCAxIG9yIChhID4gMjAgYW5kIGEgPCAyNSk7CiAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBBcHBlbmQKICAgIC0+ICBT ZXEgU2NhbiBvbiBybHAxIHJscF8xCi0gICAgICAgICBGaWx0ZXI6ICgoYSA8IDEpIE9SICgo YSA+IDIwKSBBTkQgKGEgPCAyNSkpKQorICAgICAgICAgRmlsdGVyOiAoKChhID4gMjApIEFO RCAoYSA8IDI1KSkgT1IgKGEgPCAxKSkKICAgIC0+ICBTZXEgU2NhbiBvbiBybHA0XzEgcmxw XzIKLSAgICAgICAgIEZpbHRlcjogKChhIDwgMSkgT1IgKChhID4gMjApIEFORCAoYSA8IDI1 KSkpCisgICAgICAgICBGaWx0ZXI6ICgoKGEgPiAyMCkgQU5EIChhIDwgMjUpKSBPUiAoYSA8 IDEpKQogKDUgcm93cykKIAogLS0gd2hlcmUgY2xhdXNlIGNvbnRyYWRpY3RzIHN1Yi1wYXJ0 aXRpb24ncyBjb25zdHJhaW50CiBleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20g cmxwIHdoZXJlIGEgPSAyMCBvciBhID0gNDA7Ci0gICAgICAgICAgICAgICBRVUVSWSBQTEFO ICAgICAgICAgICAgICAgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K ICBBcHBlbmQKICAgIC0+ICBTZXEgU2NhbiBvbiBybHA0XzEgcmxwXzEKLSAgICAgICAgIEZp bHRlcjogKChhID0gMjApIE9SIChhID0gNDApKQorICAgICAgICAgRmlsdGVyOiAoYSA9IEFO WSAoJ3syMCw0MH0nOjppbnRlZ2VyW10pKQogICAgLT4gIFNlcSBTY2FuIG9uIHJscDVfZGVm YXVsdCBybHBfMgotICAgICAgICAgRmlsdGVyOiAoKGEgPSAyMCkgT1IgKGEgPSA0MCkpCisg ICAgICAgICBGaWx0ZXI6IChhID0gQU5ZICgnezIwLDQwfSc6OmludGVnZXJbXSkpCiAoNSBy b3dzKQogCiBleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gcmxwMyB3aGVyZSBh ID0gMjA7ICAgLyogZW1wdHkgKi8KQEAgLTY3MSw2ICs2OTMsMTYzIEBAIGV4cGxhaW4gKGNv c3RzIG9mZikgc2VsZWN0ICogZnJvbSBybHAgd2hlcmUgKGEgPSAxIGFuZCBhID0gMykgb3Ig KGEgPiAxIGFuZCBhID0KICAgICAgICAgIEZpbHRlcjogKCgoYSA9IDEpIEFORCAoYSA9IDMp KSBPUiAoKGEgPiAxKSBBTkQgKGEgPSAxNSkpKQogKDExIHJvd3MpCiAKK1NFVCBlbmFibGVf b3JfdHJhbnNmb3JtYXRpb24gPSBvbjsKK2V4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICog ZnJvbSBybHAgd2hlcmUgYSA9IDEgb3IgYSA9IDc7CisgICAgICAgICAgICAgICAgUVVFUlkg UExBTiAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIFNlcSBTY2FuIG9uIHJscDIgcmxwCisgICBGaWx0ZXI6IChhID0gQU5Z ICgnezEsN30nOjppbnRlZ2VyW10pKQorKDIgcm93cykKKworZXhwbGFpbiAoY29zdHMgb2Zm KSBzZWxlY3QgKiBmcm9tIHJscCB3aGVyZSBhID0gMSBvciBiID0gJ2FiJzsKKyAgICAgICAg ICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBB cHBlbmQKKyAgIC0+ICBTZXEgU2NhbiBvbiBybHAxIHJscF8xCisgICAgICAgICBGaWx0ZXI6 ICgoYSA9IDEpIE9SICgoYik6OnRleHQgPSAnYWInOjp0ZXh0KSkKKyAgIC0+ICBTZXEgU2Nh biBvbiBybHAyIHJscF8yCisgICAgICAgICBGaWx0ZXI6ICgoYSA9IDEpIE9SICgoYik6OnRl eHQgPSAnYWInOjp0ZXh0KSkKKyAgIC0+ICBTZXEgU2NhbiBvbiBybHAzYWJjZCBybHBfMwor ICAgICAgICAgRmlsdGVyOiAoKGEgPSAxKSBPUiAoKGIpOjp0ZXh0ID0gJ2FiJzo6dGV4dCkp CisgICAtPiAgU2VxIFNjYW4gb24gcmxwNF8xIHJscF80CisgICAgICAgICBGaWx0ZXI6ICgo YSA9IDEpIE9SICgoYik6OnRleHQgPSAnYWInOjp0ZXh0KSkKKyAgIC0+ICBTZXEgU2NhbiBv biBybHA0XzIgcmxwXzUKKyAgICAgICAgIEZpbHRlcjogKChhID0gMSkgT1IgKChiKTo6dGV4 dCA9ICdhYic6OnRleHQpKQorICAgLT4gIFNlcSBTY2FuIG9uIHJscDRfZGVmYXVsdCBybHBf NgorICAgICAgICAgRmlsdGVyOiAoKGEgPSAxKSBPUiAoKGIpOjp0ZXh0ID0gJ2FiJzo6dGV4 dCkpCisgICAtPiAgU2VxIFNjYW4gb24gcmxwNV8xIHJscF83CisgICAgICAgICBGaWx0ZXI6 ICgoYSA9IDEpIE9SICgoYik6OnRleHQgPSAnYWInOjp0ZXh0KSkKKyAgIC0+ICBTZXEgU2Nh biBvbiBybHA1X2RlZmF1bHQgcmxwXzgKKyAgICAgICAgIEZpbHRlcjogKChhID0gMSkgT1Ig KChiKTo6dGV4dCA9ICdhYic6OnRleHQpKQorICAgLT4gIFNlcSBTY2FuIG9uIHJscF9kZWZh dWx0XzEwIHJscF85CisgICAgICAgICBGaWx0ZXI6ICgoYSA9IDEpIE9SICgoYik6OnRleHQg PSAnYWInOjp0ZXh0KSkKKyAgIC0+ICBTZXEgU2NhbiBvbiBybHBfZGVmYXVsdF8zMCBybHBf MTAKKyAgICAgICAgIEZpbHRlcjogKChhID0gMSkgT1IgKChiKTo6dGV4dCA9ICdhYic6OnRl eHQpKQorICAgLT4gIFNlcSBTY2FuIG9uIHJscF9kZWZhdWx0X251bGwgcmxwXzExCisgICAg ICAgICBGaWx0ZXI6ICgoYSA9IDEpIE9SICgoYik6OnRleHQgPSAnYWInOjp0ZXh0KSkKKyAg IC0+ICBTZXEgU2NhbiBvbiBybHBfZGVmYXVsdF9kZWZhdWx0IHJscF8xMgorICAgICAgICAg RmlsdGVyOiAoKGEgPSAxKSBPUiAoKGIpOjp0ZXh0ID0gJ2FiJzo6dGV4dCkpCisoMjUgcm93 cykKKworZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJscCB3aGVyZSBhID4g MjAgYW5kIGEgPCAyNzsKKyAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAg ICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFwcGVu ZAorICAgLT4gIFNlcSBTY2FuIG9uIHJscDRfMSBybHBfMQorICAgICAgICAgRmlsdGVyOiAo KGEgPiAyMCkgQU5EIChhIDwgMjcpKQorICAgLT4gIFNlcSBTY2FuIG9uIHJscDRfMiBybHBf MgorICAgICAgICAgRmlsdGVyOiAoKGEgPiAyMCkgQU5EIChhIDwgMjcpKQorKDUgcm93cykK KworZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJscCB3aGVyZSBhID0gMjk7 CisgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIFNlcSBTY2FuIG9uIHJscDRfZGVmYXVsdCBybHAKKyAgIEZpbHRlcjog KGEgPSAyOSkKKygyIHJvd3MpCisKK2V4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJv bSBybHAgd2hlcmUgYSA+PSAyOTsKKyAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAg ICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgQXBwZW5kCisgICAtPiAgU2VxIFNjYW4gb24gcmxwNF9kZWZhdWx0IHJscF8x CisgICAgICAgICBGaWx0ZXI6IChhID49IDI5KQorICAgLT4gIFNlcSBTY2FuIG9uIHJscDVf MSBybHBfMgorICAgICAgICAgRmlsdGVyOiAoYSA+PSAyOSkKKyAgIC0+ICBTZXEgU2NhbiBv biBybHA1X2RlZmF1bHQgcmxwXzMKKyAgICAgICAgIEZpbHRlcjogKGEgPj0gMjkpCisgICAt PiAgU2VxIFNjYW4gb24gcmxwX2RlZmF1bHRfMzAgcmxwXzQKKyAgICAgICAgIEZpbHRlcjog KGEgPj0gMjkpCisgICAtPiAgU2VxIFNjYW4gb24gcmxwX2RlZmF1bHRfZGVmYXVsdCBybHBf NQorICAgICAgICAgRmlsdGVyOiAoYSA+PSAyOSkKKygxMSByb3dzKQorCitleHBsYWluIChj b3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gcmxwIHdoZXJlIGEgPCAxIG9yIChhID4gMjAgYW5k IGEgPCAyNSk7CisgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAg ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIEFwcGVuZAorICAgLT4gIFNlcSBTY2FuIG9uIHJscDEgcmxwXzEK KyAgICAgICAgIEZpbHRlcjogKCgoYSA+IDIwKSBBTkQgKGEgPCAyNSkpIE9SIChhIDwgMSkp CisgICAtPiAgU2VxIFNjYW4gb24gcmxwNF8xIHJscF8yCisgICAgICAgICBGaWx0ZXI6ICgo KGEgPiAyMCkgQU5EIChhIDwgMjUpKSBPUiAoYSA8IDEpKQorKDUgcm93cykKKworZXhwbGFp biAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJscCB3aGVyZSBhID0gMjAgb3IgYSA9IDQw OworICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg QXBwZW5kCisgICAtPiAgU2VxIFNjYW4gb24gcmxwNF8xIHJscF8xCisgICAgICAgICBGaWx0 ZXI6IChhID0gQU5ZICgnezIwLDQwfSc6OmludGVnZXJbXSkpCisgICAtPiAgU2VxIFNjYW4g b24gcmxwNV9kZWZhdWx0IHJscF8yCisgICAgICAgICBGaWx0ZXI6IChhID0gQU5ZICgnezIw LDQwfSc6OmludGVnZXJbXSkpCisoNSByb3dzKQorCitleHBsYWluIChjb3N0cyBvZmYpIHNl bGVjdCAqIGZyb20gcmxwMyB3aGVyZSBhID0gMjA7ICAgLyogZW1wdHkgKi8KKyAgICAgICAg UVVFUlkgUExBTiAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFJlc3Vs dAorICAgT25lLVRpbWUgRmlsdGVyOiBmYWxzZQorKDIgcm93cykKKworZXhwbGFpbiAoY29z dHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJscCB3aGVyZSBhID4gMSBhbmQgYSA9IDEwOwkvKiBv bmx5IGRlZmF1bHQgKi8KKyAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTZXEgU2NhbiBvbiBybHBfZGVm YXVsdF8xMCBybHAKKyAgIEZpbHRlcjogKChhID4gMSkgQU5EIChhID0gMTApKQorKDIgcm93 cykKKworZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJscCB3aGVyZSBhID4g MSBhbmQgYSA+PTE1OwkvKiBybHAzIG9ud2FyZHMsIGluY2x1ZGluZyBkZWZhdWx0ICovCisg ICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQXBwZW5kCisgICAt PiAgU2VxIFNjYW4gb24gcmxwM2FiY2QgcmxwXzEKKyAgICAgICAgIEZpbHRlcjogKChhID4g MSkgQU5EIChhID49IDE1KSkKKyAgIC0+ICBTZXEgU2NhbiBvbiBybHAzZWZnaCBybHBfMgor ICAgICAgICAgRmlsdGVyOiAoKGEgPiAxKSBBTkQgKGEgPj0gMTUpKQorICAgLT4gIFNlcSBT Y2FuIG9uIHJscDNudWxseHkgcmxwXzMKKyAgICAgICAgIEZpbHRlcjogKChhID4gMSkgQU5E IChhID49IDE1KSkKKyAgIC0+ICBTZXEgU2NhbiBvbiBybHAzX2RlZmF1bHQgcmxwXzQKKyAg ICAgICAgIEZpbHRlcjogKChhID4gMSkgQU5EIChhID49IDE1KSkKKyAgIC0+ICBTZXEgU2Nh biBvbiBybHA0XzEgcmxwXzUKKyAgICAgICAgIEZpbHRlcjogKChhID4gMSkgQU5EIChhID49 IDE1KSkKKyAgIC0+ICBTZXEgU2NhbiBvbiBybHA0XzIgcmxwXzYKKyAgICAgICAgIEZpbHRl cjogKChhID4gMSkgQU5EIChhID49IDE1KSkKKyAgIC0+ICBTZXEgU2NhbiBvbiBybHA0X2Rl ZmF1bHQgcmxwXzcKKyAgICAgICAgIEZpbHRlcjogKChhID4gMSkgQU5EIChhID49IDE1KSkK KyAgIC0+ICBTZXEgU2NhbiBvbiBybHA1XzEgcmxwXzgKKyAgICAgICAgIEZpbHRlcjogKChh ID4gMSkgQU5EIChhID49IDE1KSkKKyAgIC0+ICBTZXEgU2NhbiBvbiBybHA1X2RlZmF1bHQg cmxwXzkKKyAgICAgICAgIEZpbHRlcjogKChhID4gMSkgQU5EIChhID49IDE1KSkKKyAgIC0+ ICBTZXEgU2NhbiBvbiBybHBfZGVmYXVsdF8zMCBybHBfMTAKKyAgICAgICAgIEZpbHRlcjog KChhID4gMSkgQU5EIChhID49IDE1KSkKKyAgIC0+ICBTZXEgU2NhbiBvbiBybHBfZGVmYXVs dF9kZWZhdWx0IHJscF8xMQorICAgICAgICAgRmlsdGVyOiAoKGEgPiAxKSBBTkQgKGEgPj0g MTUpKQorKDIzIHJvd3MpCisKK2V4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBy bHAgd2hlcmUgYSA9IDEgYW5kIGEgPSAzOwkvKiBlbXB0eSAqLworICAgICAgICBRVUVSWSBQ TEFOICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgUmVzdWx0CisgICBP bmUtVGltZSBGaWx0ZXI6IGZhbHNlCisoMiByb3dzKQorCitleHBsYWluIChjb3N0cyBvZmYp IHNlbGVjdCAqIGZyb20gcmxwIHdoZXJlIChhID0gMSBhbmQgYSA9IDMpIG9yIChhID4gMSBh bmQgYSA9IDE1KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBcHBlbmQKKyAg IC0+ICBTZXEgU2NhbiBvbiBybHAyIHJscF8xCisgICAgICAgICBGaWx0ZXI6ICgoKGEgPSAx KSBBTkQgKGEgPSAzKSkgT1IgKChhID4gMSkgQU5EIChhID0gMTUpKSkKKyAgIC0+ICBTZXEg U2NhbiBvbiBybHAzYWJjZCBybHBfMgorICAgICAgICAgRmlsdGVyOiAoKChhID0gMSkgQU5E IChhID0gMykpIE9SICgoYSA+IDEpIEFORCAoYSA9IDE1KSkpCisgICAtPiAgU2VxIFNjYW4g b24gcmxwM2VmZ2ggcmxwXzMKKyAgICAgICAgIEZpbHRlcjogKCgoYSA9IDEpIEFORCAoYSA9 IDMpKSBPUiAoKGEgPiAxKSBBTkQgKGEgPSAxNSkpKQorICAgLT4gIFNlcSBTY2FuIG9uIHJs cDNudWxseHkgcmxwXzQKKyAgICAgICAgIEZpbHRlcjogKCgoYSA9IDEpIEFORCAoYSA9IDMp KSBPUiAoKGEgPiAxKSBBTkQgKGEgPSAxNSkpKQorICAgLT4gIFNlcSBTY2FuIG9uIHJscDNf ZGVmYXVsdCBybHBfNQorICAgICAgICAgRmlsdGVyOiAoKChhID0gMSkgQU5EIChhID0gMykp IE9SICgoYSA+IDEpIEFORCAoYSA9IDE1KSkpCisoMTEgcm93cykKKworUkVTRVQgZW5hYmxl X29yX3RyYW5zZm9ybWF0aW9uOwogLS0gbXVsdGktY29sdW1uIGtleXMKIGNyZWF0ZSB0YWJs ZSBtYzNwIChhIGludCwgYiBpbnQsIGMgaW50KSBwYXJ0aXRpb24gYnkgcmFuZ2UgKGEsIGFi cyhiKSwgYyk7CiBjcmVhdGUgdGFibGUgbWMzcF9kZWZhdWx0IHBhcnRpdGlvbiBvZiBtYzNw IGRlZmF1bHQ7CkBAIC0yMDcyLDEwICsyMjUxLDEwIEBAIGV4cGxhaW4gKGNvc3RzIG9mZikg c2VsZWN0ICogZnJvbSBocCB3aGVyZSBhID0gMSBhbmQgYiA9ICdhYmNkZSc7CiAKIGV4cGxh aW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBocCB3aGVyZSBhID0gMSBhbmQgYiA9ICdh YmNkZScgYW5kCiAgIChjID0gMiBvciBjID0gMyk7Ci0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZ IFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KICBTZXEgU2NhbiBvbiBocDIgaHAKLSAgIEZpbHRlcjogKChhID0g MSkgQU5EIChiID0gJ2FiY2RlJzo6dGV4dCkgQU5EICgoYyA9IDIpIE9SIChjID0gMykpKQor ICAgRmlsdGVyOiAoKGMgPSBBTlkgKCd7MiwzfSc6OmludGVnZXJbXSkpIEFORCAoYSA9IDEp IEFORCAoYiA9ICdhYmNkZSc6OnRleHQpKQogKDIgcm93cykKIAogZHJvcCB0YWJsZSBocDI7 CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dCBiL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0CmluZGV4IDBjZDJjNjRmY2EuLjAz NzgyODBjN2QgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMu b3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0CkBAIC0yNTAx LDcgKzI1MDEsNyBAQCBwZ19zdGF0c3wgU0VMRUNUIG4ubnNwbmFtZSBBUyBzY2hlbWFuYW1l LAogICAgICBKT0lOIHBnX2NsYXNzIGMgT04gKChjLm9pZCA9IHMuc3RhcmVsaWQpKSkKICAg ICAgSk9JTiBwZ19hdHRyaWJ1dGUgYSBPTiAoKChjLm9pZCA9IGEuYXR0cmVsaWQpIEFORCAo YS5hdHRudW0gPSBzLnN0YWF0dG51bSkpKSkKICAgICAgTEVGVCBKT0lOIHBnX25hbWVzcGFj ZSBuIE9OICgobi5vaWQgPSBjLnJlbG5hbWVzcGFjZSkpKQotICBXSEVSRSAoKE5PVCBhLmF0 dGlzZHJvcHBlZCkgQU5EIGhhc19jb2x1bW5fcHJpdmlsZWdlKGMub2lkLCBhLmF0dG51bSwg J3NlbGVjdCc6OnRleHQpIEFORCAoKGMucmVscm93c2VjdXJpdHkgPSBmYWxzZSkgT1IgKE5P VCByb3dfc2VjdXJpdHlfYWN0aXZlKGMub2lkKSkpKTsKKyAgV0hFUkUgKChOT1QgYS5hdHRp c2Ryb3BwZWQpIEFORCBoYXNfY29sdW1uX3ByaXZpbGVnZShjLm9pZCwgYS5hdHRudW0sICdz ZWxlY3QnOjp0ZXh0KSBBTkQgKChOT1Qgcm93X3NlY3VyaXR5X2FjdGl2ZShjLm9pZCkpIE9S IChjLnJlbHJvd3NlY3VyaXR5ID0gZmFsc2UpKSk7CiBwZ19zdGF0c19leHR8IFNFTEVDVCBj bi5uc3BuYW1lIEFTIHNjaGVtYW5hbWUsCiAgICAgYy5yZWxuYW1lIEFTIHRhYmxlbmFtZSwK ICAgICBzbi5uc3BuYW1lIEFTIHN0YXRpc3RpY3Nfc2NoZW1hbmFtZSwKQEAgLTI1MzIsNyAr MjUzMiw3IEBAIHBnX3N0YXRzX2V4dHwgU0VMRUNUIGNuLm5zcG5hbWUgQVMgc2NoZW1hbmFt ZSwKICAgV0hFUkUgKChOT1QgKEVYSVNUUyAoIFNFTEVDVCAxCiAgICAgICAgICAgIEZST00g KHVubmVzdChzLnN0eGtleXMpIGsoaykKICAgICAgICAgICAgICBKT0lOIHBnX2F0dHJpYnV0 ZSBhIE9OICgoKGEuYXR0cmVsaWQgPSBzLnN0eHJlbGlkKSBBTkQgKGEuYXR0bnVtID0gay5r KSkpKQotICAgICAgICAgIFdIRVJFIChOT1QgaGFzX2NvbHVtbl9wcml2aWxlZ2UoYy5vaWQs IGEuYXR0bnVtLCAnc2VsZWN0Jzo6dGV4dCkpKSkpIEFORCAoKGMucmVscm93c2VjdXJpdHkg PSBmYWxzZSkgT1IgKE5PVCByb3dfc2VjdXJpdHlfYWN0aXZlKGMub2lkKSkpKTsKKyAgICAg ICAgICBXSEVSRSAoTk9UIGhhc19jb2x1bW5fcHJpdmlsZWdlKGMub2lkLCBhLmF0dG51bSwg J3NlbGVjdCc6OnRleHQpKSkpKSBBTkQgKChOT1Qgcm93X3NlY3VyaXR5X2FjdGl2ZShjLm9p ZCkpIE9SIChjLnJlbHJvd3NlY3VyaXR5ID0gZmFsc2UpKSk7CiBwZ19zdGF0c19leHRfZXhw cnN8IFNFTEVDVCBjbi5uc3BuYW1lIEFTIHNjaGVtYW5hbWUsCiAgICAgYy5yZWxuYW1lIEFT IHRhYmxlbmFtZSwKICAgICBzbi5uc3BuYW1lIEFTIHN0YXRpc3RpY3Nfc2NoZW1hbmFtZSwK ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3RhdHNfZXh0Lm91dCBi L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3RhdHNfZXh0Lm91dAppbmRleCAxMDkwM2Jk YWIwLi42ZjU1YjllM2VjIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3N0YXRzX2V4dC5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdGF0c19l eHQub3V0CkBAIC0xMzIyLDE5ICsxMzIyLDE5IEBAIFNFTEVDVCAqIEZST00gY2hlY2tfZXN0 aW1hdGVkX3Jvd3MoJ1NFTEVDVCAqIEZST00gZnVuY3Rpb25hbF9kZXBlbmRlbmNpZXMgV0hF UkUKIFNFTEVDVCAqIEZST00gY2hlY2tfZXN0aW1hdGVkX3Jvd3MoJ1NFTEVDVCAqIEZST00g ZnVuY3Rpb25hbF9kZXBlbmRlbmNpZXMgV0hFUkUgKGEgPSAxIE9SIGEgPSA1MSkgQU5EIGIg PSAnJzEnJycpOwogIGVzdGltYXRlZCB8IGFjdHVhbCAKIC0tLS0tLS0tLS0tKy0tLS0tLS0t Ci0gICAgICAgIDk5IHwgICAgMTAwCisgICAgICAgMTAwIHwgICAgMTAwCiAoMSByb3cpCiAK IFNFTEVDVCAqIEZST00gY2hlY2tfZXN0aW1hdGVkX3Jvd3MoJ1NFTEVDVCAqIEZST00gZnVu Y3Rpb25hbF9kZXBlbmRlbmNpZXMgV0hFUkUgKGEgPSAxIE9SIGEgPSA1MSkgQU5EIChiID0g JycxJycgT1IgYiA9ICcnMicnKScpOwogIGVzdGltYXRlZCB8IGFjdHVhbCAKIC0tLS0tLS0t LS0tKy0tLS0tLS0tCi0gICAgICAgIDk5IHwgICAgMTAwCisgICAgICAgMTAwIHwgICAgMTAw CiAoMSByb3cpCiAKIFNFTEVDVCAqIEZST00gY2hlY2tfZXN0aW1hdGVkX3Jvd3MoJ1NFTEVD VCAqIEZST00gZnVuY3Rpb25hbF9kZXBlbmRlbmNpZXMgV0hFUkUgKGEgPSAxIE9SIGEgPSAy IE9SIGEgPSA1MSBPUiBhID0gNTIpIEFORCAoYiA9ICcnMScnIE9SIGIgPSAnJzInJyknKTsK ICBlc3RpbWF0ZWQgfCBhY3R1YWwgCiAtLS0tLS0tLS0tLSstLS0tLS0tLQotICAgICAgIDE5 NyB8ICAgIDIwMAorICAgICAgIDIwMCB8ICAgIDIwMAogKDEgcm93KQogCiAtLSBPUiBjbGF1 c2VzIHJlZmVyZW5jaW5nIGRpZmZlcmVudCBhdHRyaWJ1dGVzIGFyZSBpbmNvbXBhdGlibGUK QEAgLTE2NjQsMTkgKzE2NjQsMTkgQEAgU0VMRUNUICogRlJPTSBjaGVja19lc3RpbWF0ZWRf cm93cygnU0VMRUNUICogRlJPTSBmdW5jdGlvbmFsX2RlcGVuZGVuY2llcyBXSEVSRQogU0VM RUNUICogRlJPTSBjaGVja19lc3RpbWF0ZWRfcm93cygnU0VMRUNUICogRlJPTSBmdW5jdGlv bmFsX2RlcGVuZGVuY2llcyBXSEVSRSAoKGEgKiAyKSA9IDIgT1IgKGEgKiAyKSA9IDEwMikg QU5EIHVwcGVyKGIpID0gJycxJycnKTsKICBlc3RpbWF0ZWQgfCBhY3R1YWwgCiAtLS0tLS0t LS0tLSstLS0tLS0tLQotICAgICAgICA5OSB8ICAgIDEwMAorICAgICAgIDEwMCB8ICAgIDEw MAogKDEgcm93KQogCiBTRUxFQ1QgKiBGUk9NIGNoZWNrX2VzdGltYXRlZF9yb3dzKCdTRUxF Q1QgKiBGUk9NIGZ1bmN0aW9uYWxfZGVwZW5kZW5jaWVzIFdIRVJFICgoYSAqIDIpID0gMiBP UiAoYSAqIDIpID0gMTAyKSBBTkQgKHVwcGVyKGIpID0gJycxJycgT1IgdXBwZXIoYikgPSAn JzInJyknKTsKICBlc3RpbWF0ZWQgfCBhY3R1YWwgCiAtLS0tLS0tLS0tLSstLS0tLS0tLQot ICAgICAgICA5OSB8ICAgIDEwMAorICAgICAgIDEwMCB8ICAgIDEwMAogKDEgcm93KQogCiBT RUxFQ1QgKiBGUk9NIGNoZWNrX2VzdGltYXRlZF9yb3dzKCdTRUxFQ1QgKiBGUk9NIGZ1bmN0 aW9uYWxfZGVwZW5kZW5jaWVzIFdIRVJFICgoYSAqIDIpID0gMiBPUiAoYSAqIDIpID0gNCBP UiAoYSAqIDIpID0gMTAyIE9SIChhICogMikgPSAxMDQpIEFORCAodXBwZXIoYikgPSAnJzEn JyBPUiB1cHBlcihiKSA9ICcnMicnKScpOwogIGVzdGltYXRlZCB8IGFjdHVhbCAKIC0tLS0t LS0tLS0tKy0tLS0tLS0tCi0gICAgICAgMTk3IHwgICAgMjAwCisgICAgICAgMjAwIHwgICAg MjAwCiAoMSByb3cpCiAKIC0tIE9SIGNsYXVzZXMgcmVmZXJlbmNpbmcgZGlmZmVyZW50IGF0 dHJpYnV0ZXMKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3lzdmll d3Mub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zeXN2aWV3cy5vdXQKaW5kZXgg OWJlN2FjYTJiOC4uMWY5MDI5YjViMiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9zeXN2aWV3cy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9z eXN2aWV3cy5vdXQKQEAgLTEyNCw2ICsxMjQsNyBAQCBzZWxlY3QgbmFtZSwgc2V0dGluZyBm cm9tIHBnX3NldHRpbmdzIHdoZXJlIG5hbWUgbGlrZSAnZW5hYmxlJSc7CiAgZW5hYmxlX21l bW9pemUgICAgICAgICAgICAgICAgIHwgb24KICBlbmFibGVfbWVyZ2Vqb2luICAgICAgICAg ICAgICAgfCBvbgogIGVuYWJsZV9uZXN0bG9vcCAgICAgICAgICAgICAgICB8IG9uCisgZW5h YmxlX29yX3RyYW5zZm9ybWF0aW9uICAgICAgIHwgb24KICBlbmFibGVfcGFyYWxsZWxfYXBw ZW5kICAgICAgICAgfCBvbgogIGVuYWJsZV9wYXJhbGxlbF9oYXNoICAgICAgICAgICB8IG9u CiAgZW5hYmxlX3BhcnRpdGlvbl9wcnVuaW5nICAgICAgIHwgb24KQEAgLTEzNCw3ICsxMzUs NyBAQCBzZWxlY3QgbmFtZSwgc2V0dGluZyBmcm9tIHBnX3NldHRpbmdzIHdoZXJlIG5hbWUg bGlrZSAnZW5hYmxlJSc7CiAgZW5hYmxlX3NlcXNjYW4gICAgICAgICAgICAgICAgIHwgb24K ICBlbmFibGVfc29ydCAgICAgICAgICAgICAgICAgICAgfCBvbgogIGVuYWJsZV90aWRzY2Fu ICAgICAgICAgICAgICAgICB8IG9uCi0oMjMgcm93cykKKygyNCByb3dzKQogCiAtLSBUaGVy ZSBhcmUgYWx3YXlzIHdhaXQgZXZlbnQgZGVzY3JpcHRpb25zIGZvciB2YXJpb3VzIHR5cGVz Lgogc2VsZWN0IHR5cGUsIGNvdW50KCopID4gMCBhcyBvayBGUk9NIHBnX3dhaXRfZXZlbnRz CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3RpZHNjYW4ub3V0IGIv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC90aWRzY2FuLm91dAppbmRleCBmMTMzYjVhNGFj Li4yYTA3OWU5OTZiIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Rp ZHNjYW4ub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdGlkc2Nhbi5vdXQK QEAgLTQzLDEwICs0MywyNiBAQCBTRUxFQ1QgY3RpZCwgKiBGUk9NIHRpZHNjYW4gV0hFUkUg JygwLDEpJyA9IGN0aWQ7CiAtLSBPUidkIGNsYXVzZXMKIEVYUExBSU4gKENPU1RTIE9GRikK IFNFTEVDVCBjdGlkLCAqIEZST00gdGlkc2NhbiBXSEVSRSBjdGlkID0gJygwLDIpJyBPUiAn KDAsMSknID0gY3RpZDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAg ICAgICAgICAgICAgICAgICAgICAgICAgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAg ICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFRpZCBTY2FuIG9u IHRpZHNjYW4KKyAgIFRJRCBDb25kOiAoY3RpZCA9IEFOWSAoJ3siKDAsMikiLCIoMCwxKSJ9 Jzo6dGlkW10pKQorKDIgcm93cykKKworU0VMRUNUIGN0aWQsICogRlJPTSB0aWRzY2FuIFdI RVJFIGN0aWQgPSAnKDAsMiknIE9SICcoMCwxKScgPSBjdGlkOworIGN0aWQgIHwgaWQgCist LS0tLS0tKy0tLS0KKyAoMCwxKSB8ICAxCisgKDAsMikgfCAgMgorKDIgcm93cykKKworU0VU IGVuYWJsZV9vcl90cmFuc2Zvcm1hdGlvbiA9IG9uOworRVhQTEFJTiAoQ09TVFMgT0ZGKQor U0VMRUNUIGN0aWQsICogRlJPTSB0aWRzY2FuIFdIRVJFIGN0aWQgPSAnKDAsMiknIE9SICco MCwxKScgPSBjdGlkOworICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAg ICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQogIFRpZCBTY2FuIG9uIHRpZHNjYW4KLSAgIFRJRCBDb25k OiAoKGN0aWQgPSAnKDAsMiknOjp0aWQpIE9SICgnKDAsMSknOjp0aWQgPSBjdGlkKSkKKyAg IFRJRCBDb25kOiAoY3RpZCA9IEFOWSAoJ3siKDAsMikiLCIoMCwxKSJ9Jzo6dGlkW10pKQog KDIgcm93cykKIAogU0VMRUNUIGN0aWQsICogRlJPTSB0aWRzY2FuIFdIRVJFIGN0aWQgPSAn KDAsMiknIE9SICcoMCwxKScgPSBjdGlkOwpAQCAtNTYsNiArNzIsNyBAQCBTRUxFQ1QgY3Rp ZCwgKiBGUk9NIHRpZHNjYW4gV0hFUkUgY3RpZCA9ICcoMCwyKScgT1IgJygwLDEpJyA9IGN0 aWQ7CiAgKDAsMikgfCAgMgogKDIgcm93cykKIAorUkVTRVQgZW5hYmxlX29yX3RyYW5zZm9y bWF0aW9uOwogLS0gY3RpZCA9IFNjYWxhckFycmF5T3AgLSBpbXBsZW1lbnRlZCBhcyB0aWRz Y2FuCiBFWFBMQUlOIChDT1NUUyBPRkYpCiBTRUxFQ1QgY3RpZCwgKiBGUk9NIHRpZHNjYW4g V0hFUkUgY3RpZCA9IEFOWShBUlJBWVsnKDAsMSknLCAnKDAsMiknXTo6dGlkW10pOwpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX2luZGV4LnNxbCBiL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL2NyZWF0ZV9pbmRleC5zcWwKaW5kZXggZDQ5Y2U5ZjMwMC4uNTZm ZGUxNWJjMSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX2luZGV4 LnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jcmVhdGVfaW5kZXguc3FsCkBAIC03 MzcsNiArNzM3LDQxIEBAIFNFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxCiBTRUxFQ1QgY291 bnQoKikgRlJPTSB0ZW5rMQogICBXSEVSRSBodW5kcmVkID0gNDIgQU5EICh0aG91c2FuZCA9 IDQyIE9SIHRob3VzYW5kID0gOTkpOwogCitTRVQgZW5hYmxlX29yX3RyYW5zZm9ybWF0aW9u ID0gb247CitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgKiBGUk9NIHRlbmsxCisgIFdI RVJFIHRob3VzYW5kID0gNDIgQU5EICh0ZW50aG91cyA9IDEgT1IgdGVudGhvdXMgPSAzIE9S IHRlbnRob3VzID0gNDIpOworU0VMRUNUICogRlJPTSB0ZW5rMQorICBXSEVSRSB0aG91c2Fu ZCA9IDQyIEFORCAodGVudGhvdXMgPSAxIE9SIHRlbnRob3VzID0gMyBPUiB0ZW50aG91cyA9 IDQyKTsKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIGNvdW50KCopIEZST00gdGVu azEKKyAgV0hFUkUgaHVuZHJlZCA9IDQyIEFORCAodGhvdXNhbmQgPSA0MiBPUiB0aG91c2Fu ZCA9IDk5KTsKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxCisgIFdIRVJFIGh1bmRyZWQg PSA0MiBBTkQgKHRob3VzYW5kID0gNDIgT1IgdGhvdXNhbmQgPSA5OSk7CitFWFBMQUlOIChD T1NUUyBPRkYpCitTRUxFQ1QgY291bnQoKikgRlJPTSB0ZW5rMQorICBXSEVSRSBodW5kcmVk ID0gNDIgQU5EICh0aG91c2FuZCA8IDQyIE9SIHRob3VzYW5kIDwgOTkgT1IgNDMgPiB0aG91 c2FuZCBPUiA0MiA+IHRob3VzYW5kKTsKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNU IGNvdW50KCopIEZST00gdGVuazEKKyAgV0hFUkUgdGhvdXNhbmQgPSA0MiBBTkQgKHRlbnRo b3VzID0gMSBPUiB0ZW50aG91cyA9IDMpIE9SIHRob3VzYW5kID0gNDE7CitTRUxFQ1QgY291 bnQoKikgRlJPTSB0ZW5rMQorICBXSEVSRSB0aG91c2FuZCA9IDQyIEFORCAodGVudGhvdXMg PSAxIE9SIHRlbnRob3VzID0gMykgT1IgdGhvdXNhbmQgPSA0MTsKKworRVhQTEFJTiAoQ09T VFMgT0ZGKQorU0VMRUNUIGNvdW50KCopIEZST00gdGVuazEKKyAgV0hFUkUgaHVuZHJlZCA9 IDQyIEFORCAodGhvdXNhbmQgPSA0MiBPUiB0aG91c2FuZCA9IDk5IE9SIHRlbnRob3VzIDwg MikgT1IgdGhvdXNhbmQgPSA0MTsKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxCisgIFdI RVJFIGh1bmRyZWQgPSA0MiBBTkQgKHRob3VzYW5kID0gNDIgT1IgdGhvdXNhbmQgPSA5OSBP UiB0ZW50aG91cyA8IDIpIE9SIHRob3VzYW5kID0gNDE7CisKK0VYUExBSU4gKENPU1RTIE9G RikKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxCisgIFdIRVJFIGh1bmRyZWQgPSA0MiBB TkQgKHRob3VzYW5kID0gNDIgT1IgdGhvdXNhbmQgPSA0MSBPUiB0aG91c2FuZCA9IDk5IEFO RCB0ZW50aG91cyA9IDIpOworU0VMRUNUIGNvdW50KCopIEZST00gdGVuazEKKyAgV0hFUkUg aHVuZHJlZCA9IDQyIEFORCAodGhvdXNhbmQgPSA0MiBPUiB0aG91c2FuZCA9IDQxIE9SIHRo b3VzYW5kID0gOTkgQU5EIHRlbnRob3VzID0gMik7CitSRVNFVCBlbmFibGVfb3JfdHJhbnNm b3JtYXRpb247CisKIC0tCiAtLSBDaGVjayBiZWhhdmlvciB3aXRoIGR1cGxpY2F0ZSBpbmRl eCBjb2x1bW4gY29udGVudHMKIC0tCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3Nx bC9qb2luLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pvaW4uc3FsCmluZGV4IGM0YzZj N2I4YmEuLjE2NjM2MDgwNDMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pv aW4uc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pvaW4uc3FsCkBAIC0xNDA4LDYg KzE0MDgsMTYgQEAgZXhwbGFpbiAoY29zdHMgb2ZmKQogc2VsZWN0ICogZnJvbSB0ZW5rMSBh IGpvaW4gdGVuazEgYiBvbgogICAoYS51bmlxdWUxID0gMSBhbmQgYi51bmlxdWUxID0gMikg b3IKICAgKChhLnVuaXF1ZTIgPSAzIG9yIGEudW5pcXVlMiA9IDcpIGFuZCBiLmh1bmRyZWQg PSA0KTsKK1NFVCBlbmFibGVfb3JfdHJhbnNmb3JtYXRpb24gPSBvbjsKK2V4cGxhaW4gKGNv c3RzIG9mZikKK3NlbGVjdCAqIGZyb20gdGVuazEgYSBqb2luIHRlbmsxIGIgb24KKyAgKGEu dW5pcXVlMSA9IDEgYW5kIGIudW5pcXVlMSA9IDIpIG9yCisgICgoYS51bmlxdWUyID0gMyBv ciBhLnVuaXF1ZTIgPSA3KSBhbmQgYi5odW5kcmVkID0gNCk7CitleHBsYWluIChjb3N0cyBv ZmYpCitzZWxlY3QgKiBmcm9tIHRlbmsxIGEgam9pbiB0ZW5rMSBiIG9uCisgIChhLnVuaXF1 ZTEgPCAyMCBvciBhLnVuaXF1ZTEgPSAzIG9yIGEudW5pcXVlMSA9IDEgYW5kIGIudW5pcXVl MSA9IDIpIG9yCisgICgoYS51bmlxdWUyID0gMyBvciBhLnVuaXF1ZTIgPSA3KSBhbmQgYi5o dW5kcmVkID0gNCk7CitSRVNFVCBlbmFibGVfb3JfdHJhbnNmb3JtYXRpb247CiAKIC0tCiAt LSB0ZXN0IHBsYWNlbWVudCBvZiBtb3ZhYmxlIHF1YWxzIGluIGEgcGFyYW1ldGVyaXplZCBq b2luIHRyZWUKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9w cnVuZS5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fcHJ1bmUuc3FsCmlu ZGV4IGEwOWIyN2Q4MjAuLjk3MTdjOGM4MzUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jl c3Mvc3FsL3BhcnRpdGlvbl9wcnVuZS5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwv cGFydGl0aW9uX3BydW5lLnNxbApAQCAtMjEsNiArMjEsMTIgQEAgZXhwbGFpbiAoY29zdHMg b2ZmKSBzZWxlY3QgKiBmcm9tIGxwIHdoZXJlIGEgaXMgbm90IG51bGw7CiBleHBsYWluIChj b3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gbHAgd2hlcmUgYSBpcyBudWxsOwogZXhwbGFpbiAo Y29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIGxwIHdoZXJlIGEgPSAnYScgb3IgYSA9ICdjJzsK IGV4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBscCB3aGVyZSBhIGlzIG5vdCBu dWxsIGFuZCAoYSA9ICdhJyBvciBhID0gJ2MnKTsKKworU0VUIGVuYWJsZV9vcl90cmFuc2Zv cm1hdGlvbiA9IG9uOworZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIGxwIHdo ZXJlIGEgPSAnYScgb3IgYSA9ICdjJzsKK2V4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICog ZnJvbSBscCB3aGVyZSBhIGlzIG5vdCBudWxsIGFuZCAoYSA9ICdhJyBvciBhID0gJ2MnKTsK K1JFU0VUIGVuYWJsZV9vcl90cmFuc2Zvcm1hdGlvbjsKKwogZXhwbGFpbiAoY29zdHMgb2Zm KSBzZWxlY3QgKiBmcm9tIGxwIHdoZXJlIGEgPD4gJ2cnOwogZXhwbGFpbiAoY29zdHMgb2Zm KSBzZWxlY3QgKiBmcm9tIGxwIHdoZXJlIGEgPD4gJ2EnIGFuZCBhIDw+ICdkJzsKIGV4cGxh aW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBscCB3aGVyZSBhIG5vdCBpbiAoJ2EnLCAn ZCcpOwpAQCAtOTksNiArMTA1LDIyIEBAIGV4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICog ZnJvbSBybHAgd2hlcmUgYSA+IDEgYW5kIGEgPj0xNTsJLyogcmxwMyBvbndhcmRzLCBpCiBl eHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gcmxwIHdoZXJlIGEgPSAxIGFuZCBh ID0gMzsJLyogZW1wdHkgKi8KIGV4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBy bHAgd2hlcmUgKGEgPSAxIGFuZCBhID0gMykgb3IgKGEgPiAxIGFuZCBhID0gMTUpOwogCisK K1NFVCBlbmFibGVfb3JfdHJhbnNmb3JtYXRpb24gPSBvbjsKK2V4cGxhaW4gKGNvc3RzIG9m Zikgc2VsZWN0ICogZnJvbSBybHAgd2hlcmUgYSA9IDEgb3IgYSA9IDc7CitleHBsYWluIChj b3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gcmxwIHdoZXJlIGEgPSAxIG9yIGIgPSAnYWInOwor ZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJscCB3aGVyZSBhID4gMjAgYW5k IGEgPCAyNzsKK2V4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBybHAgd2hlcmUg YSA9IDI5OworZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJscCB3aGVyZSBh ID49IDI5OworZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJscCB3aGVyZSBh IDwgMSBvciAoYSA+IDIwIGFuZCBhIDwgMjUpOworZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxl Y3QgKiBmcm9tIHJscCB3aGVyZSBhID0gMjAgb3IgYSA9IDQwOworZXhwbGFpbiAoY29zdHMg b2ZmKSBzZWxlY3QgKiBmcm9tIHJscDMgd2hlcmUgYSA9IDIwOyAgIC8qIGVtcHR5ICovCitl eHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gcmxwIHdoZXJlIGEgPiAxIGFuZCBh ID0gMTA7CS8qIG9ubHkgZGVmYXVsdCAqLworZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3Qg KiBmcm9tIHJscCB3aGVyZSBhID4gMSBhbmQgYSA+PTE1OwkvKiBybHAzIG9ud2FyZHMsIGlu Y2x1ZGluZyBkZWZhdWx0ICovCitleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20g cmxwIHdoZXJlIGEgPSAxIGFuZCBhID0gMzsJLyogZW1wdHkgKi8KK2V4cGxhaW4gKGNvc3Rz IG9mZikgc2VsZWN0ICogZnJvbSBybHAgd2hlcmUgKGEgPSAxIGFuZCBhID0gMykgb3IgKGEg PiAxIGFuZCBhID0gMTUpOworUkVTRVQgZW5hYmxlX29yX3RyYW5zZm9ybWF0aW9uOworCiAt LSBtdWx0aS1jb2x1bW4ga2V5cwogY3JlYXRlIHRhYmxlIG1jM3AgKGEgaW50LCBiIGludCwg YyBpbnQpIHBhcnRpdGlvbiBieSByYW5nZSAoYSwgYWJzKGIpLCBjKTsKIGNyZWF0ZSB0YWJs ZSBtYzNwX2RlZmF1bHQgcGFydGl0aW9uIG9mIG1jM3AgZGVmYXVsdDsKZGlmZiAtLWdpdCBh L3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3RpZHNjYW4uc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9z cWwvdGlkc2Nhbi5zcWwKaW5kZXggMzEzZTBmYjliNi4uMDQ5OWJlZGI5ZSAxMDA2NDQKLS0t IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdGlkc2Nhbi5zcWwKKysrIGIvc3JjL3Rlc3QvcmVn cmVzcy9zcWwvdGlkc2Nhbi5zcWwKQEAgLTIyLDYgKzIyLDEyIEBAIEVYUExBSU4gKENPU1RT IE9GRikKIFNFTEVDVCBjdGlkLCAqIEZST00gdGlkc2NhbiBXSEVSRSBjdGlkID0gJygwLDIp JyBPUiAnKDAsMSknID0gY3RpZDsKIFNFTEVDVCBjdGlkLCAqIEZST00gdGlkc2NhbiBXSEVS RSBjdGlkID0gJygwLDIpJyBPUiAnKDAsMSknID0gY3RpZDsKIAorU0VUIGVuYWJsZV9vcl90 cmFuc2Zvcm1hdGlvbiA9IG9uOworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIGN0aWQs ICogRlJPTSB0aWRzY2FuIFdIRVJFIGN0aWQgPSAnKDAsMiknIE9SICcoMCwxKScgPSBjdGlk OworU0VMRUNUIGN0aWQsICogRlJPTSB0aWRzY2FuIFdIRVJFIGN0aWQgPSAnKDAsMiknIE9S ICcoMCwxKScgPSBjdGlkOworUkVTRVQgZW5hYmxlX29yX3RyYW5zZm9ybWF0aW9uOworCiAt LSBjdGlkID0gU2NhbGFyQXJyYXlPcCAtIGltcGxlbWVudGVkIGFzIHRpZHNjYW4KIEVYUExB SU4gKENPU1RTIE9GRikKIFNFTEVDVCBjdGlkLCAqIEZST00gdGlkc2NhbiBXSEVSRSBjdGlk ID0gQU5ZKEFSUkFZWycoMCwxKScsICcoMCwyKSddOjp0aWRbXSk7CmRpZmYgLS1naXQgYS9z cmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCBiL3NyYy90b29scy9wZ2luZGVudC90 eXBlZGVmcy5saXN0CmluZGV4IDc4MmI3ZDdiMWMuLmM4MWY2Y2FiYTggMTAwNjQ0Ci0tLSBh L3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CisrKyBiL3NyYy90b29scy9wZ2lu ZGVudC90eXBlZGVmcy5saXN0CkBAIC0xNjU3LDYgKzE2NTcsOCBAQCBOdW1lcmljVmFyCiBP TV91aW50MzIKIE9QCiBPU0FQZXJHcm91cFN0YXRlCitPckNsYXVzZUdyb3VwRW50cnkKK09y Q2xhdXNlR3JvdXBLZXkKIE9TQVBlclF1ZXJ5U3RhdGUKIE9TSW5mbwogT1NTTENpcGhlcgot LSAKMi40My4yCgo= --------------JLXlgVVE40XwJbU4PxdfMZtG Content-Type: text/plain; charset=UTF-8; name="v19-0002-Teach-generate_bitmap_or_paths-to-build-BitmapOr-pat.patch" Content-Disposition: attachment; filename*0="v19-0002-Teach-generate_bitmap_or_paths-to-build-BitmapOr-pa"; filename*1="t.patch" Content-Transfer-Encoding: base64 RnJvbSA5OWJkYjE5OWEyNDBiZDdiOWQ2ZTMwMGJlZGRkYzkwODRjNTNiOTczIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiQW5kcmV5IFYuIExlcGlraG92IiA8YS5sZXBpa2hv dkBwb3N0Z3Jlc3Byby5ydT4KRGF0ZTogVHVlLCA1IE1hciAyMDI0IDEzOjI5OjQ2ICswNzAw ClN1YmplY3Q6IFtQQVRDSCAyLzJdIFRlYWNoIGdlbmVyYXRlX2JpdG1hcF9vcl9wYXRocyB0 byBidWlsZCBCaXRtYXBPciBwYXRocwogb3ZlciBTQU9QIGNsYXVzZXMuCgpMaWtld2lzZSBP UiBjbGF1c2VzLCBkaXNjb3ZlciBTQU9QIGFycmF5IGFuZCB0cnkgdG8gc3BsaXQgaXRzIGVs ZW1lbnRzCmJldHdlZW4gc21hbGxlciBzaXplZCBhcnJheXMgdG8gZml0IGEgc2V0IG9mIHBh cnRpYWwgaW5kZXhlcy4KLS0tCiBkb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwgICAgICAgICAg ICAgICAgICB8ICAgMyArCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9pbmR4cGF0aC5j ICAgICB8IDMxNSArKysrKysrKysrKysrKysrKystLS0tCiBzcmMvYmFja2VuZC9vcHRpbWl6 ZXIvdXRpbC9wcmVkdGVzdC5jICAgICB8ICA0NiArKysrCiBzcmMvYmFja2VuZC9vcHRpbWl6 ZXIvdXRpbC9yZXN0cmljdGluZm8uYyB8ICAxMyArCiBzcmMvaW5jbHVkZS9vcHRpbWl6ZXIv b3B0aW1pemVyLmggICAgICAgICB8ICAxNiArKwogc3JjL2luY2x1ZGUvb3B0aW1pemVyL3Jl c3RyaWN0aW5mby5oICAgICAgfCAgIDEgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9z ZWxlY3Qub3V0ICAgICAgfCAyODIgKysrKysrKysrKysrKysrKysrKwogc3JjL3Rlc3QvcmVn cmVzcy9zcWwvc2VsZWN0LnNxbCAgICAgICAgICAgfCAgODIgKysrKysrCiBzcmMvdG9vbHMv cGdpbmRlbnQvdHlwZWRlZnMubGlzdCAgICAgICAgICB8ICAgMSArCiA5IGZpbGVzIGNoYW5n ZWQsIDcwNiBpbnNlcnRpb25zKCspLCA1MyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9k b2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwgYi9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKaW5k ZXggMWZkZmZmZDc5Yi4uODAwOGIwNTMyNyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2Nv bmZpZy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbApAQCAtNTQ0Niw2ICs1 NDQ2LDkgQEAgQU5ZIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1fc3luYzwv cmVwbGFjZWFibGU+ICggPHJlcGxhY2VhYmxlIGNsYXNzPSIKICAgICAgICAgVGhlIGdyb3Vw aW5nIHRlY2huaXF1ZSBvZiB0aGlzIHRyYW5zZm9ybWF0aW9uIGlzIGJhc2VkIG9uIHRoZSBl cXVpdmFsZW5jZSBvZiB2YXJpYWJsZSBzaWRlcy4KICAgICAgICAgT25lIHNpZGUgb2Ygc3Vj aCBhbiBleHByZXNzaW9uIG11c3QgYmUgYSBjb25zdGFudCBjbGF1c2UsIGFuZCB0aGUgb3Ro ZXIgbXVzdCBjb250YWluIGEgdmFyaWFibGUgY2xhdXNlLgogICAgICAgICBUaGUgZGVmYXVs dCBpcyA8bGl0ZXJhbD5vbjwvbGl0ZXJhbD4uCisgICAgICAgIEFsc28sIGR1cmluZyBCaXRt YXBTY2FuIHBhdGhzIGdlbmVyYXRpb24gaXQgZW5hYmxlcyBhbmFseXNpcyBvZiBlbGVtZW50 cworICAgICAgICBvZiBJTiBvciBBTlkgY29uc3RhbnQgYXJyYXlzIHRvIGNvdmVyIHN1Y2gg Y2xhdXNlIHdpdGggQml0bWFwT3Igc2V0IG9mCisgICAgICAgIHBhcnRpYWwgaW5kZXggc2Nh bnMuCiAgICAgICAgIDwvcGFyYT4KICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgIDwvdmFybGlz dGVudHJ5PgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvaW5keHBh dGguYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2luZHhwYXRoLmMKaW5kZXggMzJj NmE4YmJkYy4uZjkyYTQ3YzNkNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVy L3BhdGgvaW5keHBhdGguYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9pbmR4 cGF0aC5jCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAib3B0aW1pemVyL3BhdGhzLmgi CiAjaW5jbHVkZSAib3B0aW1pemVyL3ByZXAuaCIKICNpbmNsdWRlICJvcHRpbWl6ZXIvcmVz dHJpY3RpbmZvLmgiCisjaW5jbHVkZSAidXRpbHMvYXJyYXkuaCIKICNpbmNsdWRlICJ1dGls cy9sc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9zZWxmdW5jcy5oIgogCkBAIC0xMjIw LDExICsxMjIxLDE4OCBAQCBidWlsZF9wYXRoc19mb3JfT1IoUGxhbm5lckluZm8gKnJvb3Qs IFJlbE9wdEluZm8gKnJlbCwKIAlyZXR1cm4gcmVzdWx0OwogfQogCisvKgorICogQnVpbGRp bmcgaW5kZXggcGF0aHMgb3ZlciBTQU9QIGNsYXVzZSBkaWZmZXJzIGZyb20gdGhlIGxvZ2lj IG9mIE9SIGNsYXVzZXMuCisgKiBIZXJlIHdlIGl0ZXJhdGUgYWNyb3NzIGFsbCB0aGUgYXJy YXkgZWxlbWVudHMgYW5kIHNwbGl0IHRoZW0gdG8gU0FPUHMsCisgKiBjb3JyZXNwb25kaW5n IHRvIGRpZmZlcmVudCBpbmRleGVzLiBXZSBtdXN0IG1hdGNoIGVhY2ggZWxlbWVudCB0byBh biBpbmRleC4KKyAqLworc3RhdGljIExpc3QgKgorYnVpbGRfcGF0aHNfZm9yX1NBT1AoUGxh bm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbCwgUmVzdHJpY3RJbmZvICpyaW5mbywK KwkJCQkJIExpc3QgKm90aGVyX2NsYXVzZXMpCit7CisJTGlzdAkJCSAgICpyZXN1bHQgPSBO SUw7CisJTGlzdAkJCSAgICpwcmVkaWNhdGVfbGlzdHMgPSBOSUw7CisJTGlzdENlbGwJCSAg ICpsYzsKKwlQcmVkaWNhdGVzRGF0YQkgICAqcGQ7CisJU2NhbGFyQXJyYXlPcEV4cHIgICpz YW9wID0gKFNjYWxhckFycmF5T3BFeHByICopIHJpbmZvLT5jbGF1c2U7CisKKwlBc3NlcnQo SXNBKHNhb3AsIFNjYWxhckFycmF5T3BFeHByKSAmJiBzYW9wLT51c2VPcik7CisKKwlpZiAo IUlzQShsc2Vjb25kKHNhb3AtPmFyZ3MpLCBDb25zdCkpCisJCS8qCisJCSAqIEhhcyBpdCBw cmFjdGljYWwgb3V0Y29tZSB0byBtZXJnZSBhcnJheXMgd2hpY2ggY291bGRuJ3QgY29uc3Rh bnRpZmllZAorCQkgKiBiZWZvcmUgdGhhdCBzdGVwPworCQkgKi8KKwkJcmV0dXJuIE5JTDsK KworCS8qIENvbGxlY3QgcHJlZGljYXRlcyAqLworCWZvcmVhY2gobGMsIHJlbC0+aW5kZXhs aXN0KQorCXsKKwkJSW5kZXhPcHRJbmZvICppbmRleCA9IChJbmRleE9wdEluZm8gKikgbGZp cnN0KGxjKTsKKworCQkvKiBUYWtlIGludG8gY29uc2lkZXJhdGlvbiBwYXJ0aWFsIGluZGV4 ZXMgc3VwcG9ydGluZyBiaXRtYXAgc2NhbnMgKi8KKwkJaWYgKCFpbmRleC0+YW1oYXNnZXRi aXRtYXAgfHwgaW5kZXgtPmluZHByZWQgPT0gTklMIHx8IGluZGV4LT5wcmVkT0spCisJCQlj b250aW51ZTsKKworCQlwZCA9IHBhbGxvYzAoc2l6ZW9mKFByZWRpY2F0ZXNEYXRhKSk7CisJ CXBkLT5pZCA9IGZvcmVhY2hfY3VycmVudF9pbmRleChsYyk7CisJCS8qIFRoZSB0cmljayB3 aXRoIHJlZHVjaW5nIHJlY3Vyc2lvbiBpcyBzdG9sZW4gZnJvbSBwcmVkaWNhdGVfaW1wbGll ZF9ieSAqLworCQlwZC0+cHJlZGljYXRlID0gbGlzdF9sZW5ndGgoaW5kZXgtPmluZHByZWQp ID09IDEgPworCQkJCQkJCQkJCShOb2RlICopIGxpbml0aWFsKGluZGV4LT5pbmRwcmVkKSA6 CisJCQkJCQkJCQkJKE5vZGUgKikgaW5kZXgtPmluZHByZWQ7CisJCXByZWRpY2F0ZV9saXN0 cyA9IGxhcHBlbmQocHJlZGljYXRlX2xpc3RzLCAodm9pZCAqKSBwZCk7CisJfQorCisJLyog U3BsaXQgdGhlIGFycmF5IGRhdGEgYWNjb3JkaW5nIHRvIGluZGV4IHByZWRpY2F0ZXMuICov CisJaWYgKHByZWRpY2F0ZV9saXN0cyA9PSBOSUwgfHwKKwkJIXNhb3BfY292ZXJlZF9ieV9w cmVkaWNhdGVzKHNhb3AsIHByZWRpY2F0ZV9saXN0cykpCisJCXJldHVybiBOSUw7CisKKwlv dGhlcl9jbGF1c2VzID0gbGlzdF9kZWxldGVfcHRyKG90aGVyX2NsYXVzZXMsIHJpbmZvKTsK KworCS8qCisJICogSGF2aW5nIGluY29taW5nIFNBT1Agc3BsaXQgdG8gc2V0IG9mIHNtYWxs ZXIgU0FPUHMgd2hpY2ggY2FuIGJlIGFwcGxpZWQKKwkgKiB0byBwYXJ0aWFsIGluZGV4ZXMs IGdlbmVyYXRlIHBhdGhzIGZvciBlYWNoIG9uZS4KKwkgKi8KKwlmb3JlYWNoKGxjLCBwcmVk aWNhdGVfbGlzdHMpCisJeworCQlJbmRleE9wdEluZm8JICAgKmluZGV4OworCQlJbmRleENs YXVzZVNldAkJY2xhdXNlc2V0OworCQlMaXN0CQkJICAgKmluZGV4cGF0aHM7CisJCVJlc3Ry aWN0SW5mbwkgICAqcmluZm8xID0gTlVMTDsKKwkJRXhwcgkJCSAgICpjbGF1c2U7CisJCUFy cmF5VHlwZQkJICAgKmFycmF5dmFsID0gTlVMTDsKKwkJQXJyYXlFeHByCQkgICAqYXJyID0g TlVMTDsKKwkJQ29uc3QJCQkgICAqYXJyYXljb25zdDsKKwkJU2NhbGFyQXJyYXlPcEV4cHIg ICpkZXN0OworCisJCXBkID0gKFByZWRpY2F0ZXNEYXRhICopIGxmaXJzdChsYyk7CisJCWlm IChwZC0+ZWxlbXMgPT0gTklMKQorCQkJLyogVGhlIGluZGV4IGRvZXNuJ3QgcGFydGljaXBh dGUgaW4gdGhpcyBvcGVyYXRpb24gKi8KKwkJCWNvbnRpbnVlOworCisJCS8qIE1ha2UgdXAg bmV3IGFycmF5ICovCisJCWFycmF5Y29uc3QgPSBsc2Vjb25kX25vZGUoQ29uc3QsIHNhb3At PmFyZ3MpOworCQlhcnJheXZhbCA9IERhdHVtR2V0QXJyYXlUeXBlUChhcnJheWNvbnN0LT5j b25zdHZhbHVlKTsKKwkJYXJyID0gbWFrZU5vZGUoQXJyYXlFeHByKTsKKwkJYXJyLT5hcnJh eV9jb2xsaWQgPSBhcnJheWNvbnN0LT5jb25zdGNvbGxpZDsKKwkJYXJyLT5hcnJheV90eXBl aWQgPSBhcnJheWNvbnN0LT5jb25zdHR5cGU7CisJCWFyci0+ZWxlbWVudF90eXBlaWQgPSBh cnJheXZhbC0+ZWxlbXR5cGU7CisJCWFyci0+ZWxlbWVudHMgPSBwZC0+ZWxlbXM7CisJCWFy ci0+bG9jYXRpb24gPSAtMTsKKwkJYXJyLT5tdWx0aWRpbXMgPSBmYWxzZTsKKworCQkvKiBD b21wb3NlIG5ldyBTQU9QLCBwYXJ0aWFsbHkgY292ZXJpbmcgdGhlIHNvdXJjZSBvbmUgKi8K KwkJZGVzdCA9IG1ha2VOb2RlKFNjYWxhckFycmF5T3BFeHByKTsKKwkJbWVtY3B5KGRlc3Qs IHNhb3AsIHNpemVvZihTY2FsYXJBcnJheU9wRXhwcikpOworCQlkZXN0LT5hcmdzID0gbGlz dF9tYWtlMihsaW5pdGlhbChzYW9wLT5hcmdzKSwgYXJyKTsKKwkJY2xhdXNlID0gKEV4cHIg KikgZXN0aW1hdGVfZXhwcmVzc2lvbl92YWx1ZShyb290LCAoTm9kZSAqKSBkZXN0KTsKKwor CQkvKgorCQkgKiBDcmVhdGUgbmV3IFJlc3RyaWN0SW5mby4gSXQgbWF5YmUgbW9yZSBoZWF2 eSB0aGFuIGp1c3QgY29weSBub2RlLAorCQkgKiBidXQgcmVtZW1iZXIgc29tZSBpbnRlcm5h bHM6IHRoZSBzZXJpYWwgbnVtYmVyLCBzZWxlY3Rpdml0eQorCQkgKiBjYWNoZSBldGMuCisJ CSAqLworCQlyaW5mbzEgPSBtYWtlX3Jlc3RyaWN0aW5mbyhyb290LCBjbGF1c2UsCisJCQkJ CQkJCSAgIHJpbmZvLT5pc19wdXNoZWRfZG93biwKKwkJCQkJCQkJICAgcmluZm8tPmhhc19j bG9uZSwKKwkJCQkJCQkJICAgcmluZm8tPmlzX2Nsb25lLAorCQkJCQkJCQkgICByaW5mby0+ cHNldWRvY29uc3RhbnQsCisJCQkJCQkJCSAgIHJpbmZvLT5zZWN1cml0eV9sZXZlbCwKKwkJ CQkJCQkJICAgcmluZm8tPnJlcXVpcmVkX3JlbGlkcywKKwkJCQkJCQkJICAgcmluZm8tPmlu Y29tcGF0aWJsZV9yZWxpZHMsCisJCQkJCQkJCSAgIHJpbmZvLT5vdXRlcl9yZWxpZHMpOwor CisJCWluZGV4ID0gbGlzdF9udGgocmVsLT5pbmRleGxpc3QsIHBkLT5pZCk7CisJCUFzc2Vy dChwcmVkaWNhdGVfaW1wbGllZF9ieShpbmRleC0+aW5kcHJlZCwgbGlzdF9tYWtlMShyaW5m bzEpLCB0cnVlKSk7CisKKwkJLyogRXhjbHVkaW5nIHBhcnRpYWwgaW5kZXhlcyB3aXRoIHBy ZWRPSyB3ZSBtYWtlIHRoaXMgc3RhdGVtZW50IGZhbHNlICovCisJCUFzc2VydCghcHJlZGlj YXRlX2ltcGxpZWRfYnkoaW5kZXgtPmluZHByZWQsIG90aGVyX2NsYXVzZXMsIGZhbHNlKSk7 CisKKwkJLyogVGltZSB0byBnZW5lcmF0ZSBpbmRleCBwYXRocyAqLworCisJCU1lbVNldCgm Y2xhdXNlc2V0LCAwLCBzaXplb2YoY2xhdXNlc2V0KSk7CisJCW1hdGNoX2NsYXVzZXNfdG9f aW5kZXgocm9vdCwgbGlzdF9tYWtlMShyaW5mbzEpLCBpbmRleCwgJmNsYXVzZXNldCk7CisJ CW1hdGNoX2NsYXVzZXNfdG9faW5kZXgocm9vdCwgb3RoZXJfY2xhdXNlcywgaW5kZXgsICZj bGF1c2VzZXQpOworCisJCS8qIFByZWRpY2F0ZSBoYXMgZm91bmQgYWxyZWFkeS4gU28sIGl0 IGlzIG9rIGZvciB0aGUgZW1wdHkgbWF0Y2ggKi8KKworCQlpbmRleHBhdGhzID0gYnVpbGRf aW5kZXhfcGF0aHMocm9vdCwgcmVsLAorCQkJCQkJCQkJICAgaW5kZXgsICZjbGF1c2VzZXQs CisJCQkJCQkJCQkgICB0cnVlLAorCQkJCQkJCQkJICAgU1RfQklUTUFQU0NBTiwKKwkJCQkJ CQkJCSAgIE5VTEwsCisJCQkJCQkJCQkgICBOVUxMKTsKKwkJQXNzZXJ0KGluZGV4cGF0aHMg IT0gTklMKTsKKwkJcmVzdWx0ID0gbGFwcGVuZChyZXN1bHQsIGluZGV4cGF0aHMpOworCX0K KwlyZXR1cm4gcmVzdWx0OworfQorCisvKgorICogQW5hbHlzZSBpbmNvbWluZyBTQU9QIG5v ZGUgdG8gY292ZXIgaXQgYnkgcGFydGlhbCBpbmRleGVzLgorICoKKyAqIFRoZSByZXR1cm5p bmcgcGF0aGxpc3QgbXVzdCBiZSBBTkRlZCB0byB0aGUgZmluYWwgQml0bWFwU2NhbiBwYXRo LgorICogVGhlIGZ1bmN0aW9uIHJldHVybnMgTlVMTCB3aGVuIGFuIGFycmF5IGVsZW1lbnQg Y2Fubm90IGJlIGZpdHRlZCB3aXRoIHNvbWUKKyAqIHBhcnRpYWwgaW5kZXguIFRoZSBSYXRp b25hbGUgZm9yIHN1Y2ggYW4gb3BlcmF0aW9uIGlzIHRoYXQgd2hlbiBzY2hlbWEKKyAqIGNv bnRhaW5zIG1hbnkgcGFydGlhbCBpbmRleGVzLCB0aGUgU0FPUCBjbGF1c2UgbWF5IGJlIGVm ZmVjdGl2ZWx5IGZ1bGZpbGxlZAorICogYnkgYXBwZW5kaW5nIHJlc3VsdHMgb2Ygc2Nhbm5p bmcgc29tZSBtaW5pbWFsIHNldCBvZiB0aW55IHBhcnRpYWwgaW5kZXhlcy4KKyAqCisgKiBX b3JraW5nIGpvaW50bHkgd2l0aCB0aGUgVHJhbnNmb3JtT3JFeHByVG9BTlkgcm91dGluZSwg aXQgcHJvdmlkZXMgYSB1c2VyCisgKiB3aXRoIHNvbWUgc29ydCBvZiBpbmRlcGVuZGVuY2Ug b2YgdGhlIHF1ZXJ5IHBsYW4gZnJvbSB0aGUgYXBwcm9hY2ggdG8gd3JpdGluZworICogYWx0 ZXJuYXRpdmVzIGZvciB0aGUgc2FtZSBlbnRpdHkgaW4gdGhlIFdIRVJFIHNlY3Rpb24uCisg Ki8KK3N0YXRpYyBMaXN0ICoKK2dlbmVyYXRlX3Nhb3BfcGF0aGxpc3QoUGxhbm5lckluZm8g KnJvb3QsIFJlbE9wdEluZm8gKnJlbCwKKwkJCQkJICAgUmVzdHJpY3RJbmZvICpyaW5mbywg TGlzdCAqYWxsX2NsYXVzZXMpCit7CisJTGlzdAkgICAqcGF0aGxpc3QgPSBOSUw7CisJUGF0 aAkgICAqYml0bWFwcXVhbDsKKwlMaXN0CSAgICppbmRsaXN0OworCUxpc3RDZWxsICAgKmxj OworCisJaWYgKCFlbmFibGVfb3JfdHJhbnNmb3JtYXRpb24pCisJCXJldHVybiBOSUw7CisK KwkvKgorCSAqIFdlIG11c3QgYmUgYWJsZSB0byBtYXRjaCBhdCBsZWFzdCBvbmUgaW5kZXgg dG8gZWFjaCBlbGVtZW50IG9mCisJICogdGhlIGFycmF5LCBlbHNlIHdlIGNhbid0IHVzZSBp dC4KKwkgKi8KKwlpbmRsaXN0ID0gYnVpbGRfcGF0aHNfZm9yX1NBT1Aocm9vdCwgcmVsLCBy aW5mbywgYWxsX2NsYXVzZXMpOworCWlmIChpbmRsaXN0ID09IE5JTCkKKwkJcmV0dXJuIE5J TDsKKworCS8qCisJICogT0ssIHBpY2sgdGhlIG1vc3QgcHJvbWlzaW5nIEFORCBjb21iaW5h dGlvbiwgYW5kIGFkZCBpdCB0bworCSAqIHBhdGhsaXN0LgorCSAqLworCWZvcmVhY2ggKGxj LCBpbmRsaXN0KQorCXsKKwkJTGlzdCAqcGxpc3QgPSBsZmlyc3Rfbm9kZShMaXN0LCBsYyk7 CisKKwkJYml0bWFwcXVhbCA9IGNob29zZV9iaXRtYXBfYW5kKHJvb3QsIHJlbCwgcGxpc3Qp OworCQlwYXRobGlzdCA9IGxhcHBlbmQocGF0aGxpc3QsIGJpdG1hcHF1YWwpOworCX0KKwor CXJldHVybiBwYXRobGlzdDsKK30KKwogLyoKICAqIGdlbmVyYXRlX2JpdG1hcF9vcl9wYXRo cwotICoJCUxvb2sgdGhyb3VnaCB0aGUgbGlzdCBvZiBjbGF1c2VzIHRvIGZpbmQgT1IgY2xh dXNlcywgYW5kIGdlbmVyYXRlCi0gKgkJYSBCaXRtYXBPclBhdGggZm9yIGVhY2ggb25lIHdl IGNhbiBoYW5kbGUgdGhhdCB3YXkuICBSZXR1cm4gYSBsaXN0Ci0gKgkJb2YgdGhlIGdlbmVy YXRlZCBCaXRtYXBPclBhdGhzLgorICoJCUxvb2sgdGhyb3VnaCB0aGUgbGlzdCBvZiBjbGF1 c2VzIHRvIGZpbmQgT1IgYW5kIFNBT1AgY2xhdXNlcywgYW5kCisgKgkJRWFjaCBzYW9wIGNs YXVzZSBhcmUgc3BsaXR0ZWQgdG8gYmUgY292ZXJlZCBieSBwYXJ0aWFsIGluZGV4ZXMuCisg KgkJZ2VuZXJhdGUgYSBCaXRtYXBPclBhdGggZm9yIGVhY2ggb25lIHdlIGNhbiBoYW5kbGUg dGhhdCB3YXkuCisgKgkJUmV0dXJuIGEgbGlzdCBvZiB0aGUgZ2VuZXJhdGVkIEJpdG1hcE9y UGF0aHMuCiAgKgogICogb3RoZXJfY2xhdXNlcyBpcyBhIGxpc3Qgb2YgYWRkaXRpb25hbCBj bGF1c2VzIHRoYXQgY2FuIGJlIGFzc3VtZWQgdHJ1ZQogICogZm9yIHRoZSBwdXJwb3NlIG9m IGdlbmVyYXRpbmcgaW5kZXhxdWFscywgYnV0IGFyZSBub3QgdG8gYmUgc2VhcmNoZWQgZm9y CkBAIC0xMjQ3LDY4ICsxNDI1LDk5IEBAIGdlbmVyYXRlX2JpdG1hcF9vcl9wYXRocyhQbGFu bmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsLAogCWZvcmVhY2gobGMsIGNsYXVzZXMp CiAJewogCQlSZXN0cmljdEluZm8gKnJpbmZvID0gbGZpcnN0X25vZGUoUmVzdHJpY3RJbmZv LCBsYyk7Ci0JCUxpc3QJICAgKnBhdGhsaXN0OworCQlMaXN0CSAgICpwYXRobGlzdCA9IE5J TDsKIAkJUGF0aAkgICAqYml0bWFwcXVhbDsKIAkJTGlzdENlbGwgICAqajsKIAotCQkvKiBJ Z25vcmUgUmVzdHJpY3RJbmZvcyB0aGF0IGFyZW4ndCBPUnMgKi8KLQkJaWYgKCFyZXN0cmlj dGlvbl9pc19vcl9jbGF1c2UocmluZm8pKQorCQlpZiAocmVzdHJpY3Rpb25faXNfc2FvcF9j bGF1c2UocmluZm8pKQorCQl7CisJCQlwYXRobGlzdCA9IGdlbmVyYXRlX3Nhb3BfcGF0aGxp c3Qocm9vdCwgcmVsLCByaW5mbywKKwkJCQkJCQkJCQkJICBhbGxfY2xhdXNlcyk7CisJCX0K KwkJZWxzZSBpZiAoIXJlc3RyaWN0aW9uX2lzX29yX2NsYXVzZShyaW5mbykpCisJCQkvKiBJ Z25vcmUgUmVzdHJpY3RJbmZvcyB0aGF0IGFyZW4ndCBPUnMgKi8KIAkJCWNvbnRpbnVlOwot Ci0JCS8qCi0JCSAqIFdlIG11c3QgYmUgYWJsZSB0byBtYXRjaCBhdCBsZWFzdCBvbmUgaW5k ZXggdG8gZWFjaCBvZiB0aGUgYXJtcyBvZgotCQkgKiB0aGUgT1IsIGVsc2Ugd2UgY2FuJ3Qg dXNlIGl0LgotCQkgKi8KLQkJcGF0aGxpc3QgPSBOSUw7Ci0JCWZvcmVhY2goaiwgKChCb29s RXhwciAqKSByaW5mby0+b3JjbGF1c2UpLT5hcmdzKQorCQllbHNlCiAJCXsKLQkJCU5vZGUJ ICAgKm9yYXJnID0gKE5vZGUgKikgbGZpcnN0KGopOwotCQkJTGlzdAkgICAqaW5kbGlzdDsK LQotCQkJLyogT1IgYXJndW1lbnRzIHNob3VsZCBiZSBBTkRzIG9yIHN1Yi1SZXN0cmljdElu Zm9zICovCi0JCQlpZiAoaXNfYW5kY2xhdXNlKG9yYXJnKSkKKwkJCS8qCisJCQkgKiBXZSBt dXN0IGJlIGFibGUgdG8gbWF0Y2ggYXQgbGVhc3Qgb25lIGluZGV4IHRvIGVhY2ggb2YgdGhl IGFybXMgb2YKKwkJCSAqIHRoZSBPUiwgZWxzZSB3ZSBjYW4ndCB1c2UgaXQuCisJCQkgKi8K KwkJCWZvcmVhY2goaiwgKChCb29sRXhwciAqKSByaW5mby0+b3JjbGF1c2UpLT5hcmdzKQog CQkJewotCQkJCUxpc3QJICAgKmFuZGFyZ3MgPSAoKEJvb2xFeHByICopIG9yYXJnKS0+YXJn czsKKwkJCQlOb2RlCSAgICpvcmFyZyA9IChOb2RlICopIGxmaXJzdChqKTsKKwkJCQlMaXN0 CSAgICppbmRsaXN0OwogCi0JCQkJaW5kbGlzdCA9IGJ1aWxkX3BhdGhzX2Zvcl9PUihyb290 LCByZWwsCi0JCQkJCQkJCQkJCSBhbmRhcmdzLAotCQkJCQkJCQkJCQkgYWxsX2NsYXVzZXMp OworCQkJCS8qIE9SIGFyZ3VtZW50cyBzaG91bGQgYmUgQU5EcyBvciBzdWItUmVzdHJpY3RJ bmZvcyAqLworCQkJCWlmIChpc19hbmRjbGF1c2Uob3JhcmcpKQorCQkJCXsKKwkJCQkJTGlz dAkgICAqYW5kYXJncyA9ICgoQm9vbEV4cHIgKikgb3JhcmcpLT5hcmdzOwogCi0JCQkJLyog UmVjdXJzZSBpbiBjYXNlIHRoZXJlIGFyZSBzdWItT1JzICovCi0JCQkJaW5kbGlzdCA9IGxp c3RfY29uY2F0KGluZGxpc3QsCi0JCQkJCQkJCQkgIGdlbmVyYXRlX2JpdG1hcF9vcl9wYXRo cyhyb290LCByZWwsCi0JCQkJCQkJCQkJCQkJCQkgICBhbmRhcmdzLAotCQkJCQkJCQkJCQkJ CQkJICAgYWxsX2NsYXVzZXMpKTsKLQkJCX0KLQkJCWVsc2UKLQkJCXsKLQkJCQlSZXN0cmlj dEluZm8gKnJpID0gY2FzdE5vZGUoUmVzdHJpY3RJbmZvLCBvcmFyZyk7Ci0JCQkJTGlzdAkg ICAqb3JhcmdzOworCQkJCQlpbmRsaXN0ID0gYnVpbGRfcGF0aHNfZm9yX09SKHJvb3QsIHJl bCwKKwkJCQkJCQkJCQkJCSBhbmRhcmdzLAorCQkJCQkJCQkJCQkJIGFsbF9jbGF1c2VzKTsK IAotCQkJCUFzc2VydCghcmVzdHJpY3Rpb25faXNfb3JfY2xhdXNlKHJpKSk7Ci0JCQkJb3Jh cmdzID0gbGlzdF9tYWtlMShyaSk7CisJCQkJCS8qIFJlY3Vyc2UgaW4gY2FzZSB0aGVyZSBh cmUgc3ViLU9ScyAqLworCQkJCQlpbmRsaXN0ID0gbGlzdF9jb25jYXQoaW5kbGlzdCwKKwkJ CQkJCQkJCQkgIGdlbmVyYXRlX2JpdG1hcF9vcl9wYXRocyhyb290LCByZWwsCisJCQkJCQkJ CQkJCQkJCQkJICAgYW5kYXJncywKKwkJCQkJCQkJCQkJCQkJCQkgICBhbGxfY2xhdXNlcykp OworCQkJCX0KKwkJCQllbHNlCisJCQkJeworCQkJCQlSZXN0cmljdEluZm8gKnJpID0gY2Fz dE5vZGUoUmVzdHJpY3RJbmZvLCBvcmFyZyk7CisJCQkJCUxpc3QJICAgKm9yYXJnczsKIAot CQkJCWluZGxpc3QgPSBidWlsZF9wYXRoc19mb3JfT1Iocm9vdCwgcmVsLAotCQkJCQkJCQkJ CQkgb3JhcmdzLAotCQkJCQkJCQkJCQkgYWxsX2NsYXVzZXMpOwotCQkJfQorCQkJCQlBc3Nl cnQoIXJlc3RyaWN0aW9uX2lzX29yX2NsYXVzZShyaSkpOwogCi0JCQkvKgotCQkJICogSWYg bm90aGluZyBtYXRjaGVkIHRoaXMgYXJtLCB3ZSBjYW4ndCBkbyBhbnl0aGluZyB3aXRoIHRo aXMgT1IKLQkJCSAqIGNsYXVzZS4KLQkJCSAqLwotCQkJaWYgKGluZGxpc3QgPT0gTklMKQot CQkJewotCQkJCXBhdGhsaXN0ID0gTklMOwotCQkJCWJyZWFrOwotCQkJfQorCQkJCQlvcmFy Z3MgPSBsaXN0X21ha2UxKHJpKTsKIAotCQkJLyoKLQkJCSAqIE9LLCBwaWNrIHRoZSBtb3N0 IHByb21pc2luZyBBTkQgY29tYmluYXRpb24sIGFuZCBhZGQgaXQgdG8KLQkJCSAqIHBhdGhs aXN0LgotCQkJICovCi0JCQliaXRtYXBxdWFsID0gY2hvb3NlX2JpdG1hcF9hbmQocm9vdCwg cmVsLCBpbmRsaXN0KTsKLQkJCXBhdGhsaXN0ID0gbGFwcGVuZChwYXRobGlzdCwgYml0bWFw cXVhbCk7CisJCQkJCWlmIChyZXN0cmljdGlvbl9pc19zYW9wX2NsYXVzZShyaSkpCisJCQkJ CXsKKwkJCQkJCUxpc3QgKnBhdGhzOworCisJCQkJCQlwYXRocyA9IGdlbmVyYXRlX3Nhb3Bf cGF0aGxpc3Qocm9vdCwgcmVsLCByaSwKKwkJCQkJCQkJCQkJCQkJIGFsbF9jbGF1c2VzKTsK KworCQkJCQkJaWYgKHBhdGhzICE9IE5JTCkKKwkJCQkJCXsKKwkJCQkJCQkvKgorCQkJCQkJ CSAqIEFkZCBwYXRocyB0byBwYXRobGlzdCBhbmQgaW1tZWRpYXRlbHkganVtcCB0byB0aGUK KwkJCQkJCQkgKiBuZXh0IGVsZW1lbnQgb2YgdGhlIE9SIGNsYXVzZS4KKwkJCQkJCQkgKi8K KwkJCQkJCQlwYXRobGlzdCA9IGxpc3RfY29uY2F0KHBhdGhsaXN0LCBwYXRocyk7CisJCQkJ CQkJY29udGludWU7CisJCQkJCQl9CisKKwkJCQkJCS8qCisJCQkJCQkgKiBQYXNzIGRvd24g b3V0IG9mIHRoaXMgaWYgY29uc3RydWN0aW9uOgorCQkJCQkJICogSWYgc2FvcCBpc24ndCBj b3ZlcmVkIGJ5IHBhcnRpYWwgaW5kZXhlcywgdHJ5IHRvCisJCQkJCQkgKiBidWlsZCBzY2Fu IHBhdGggZm9yIHRoZSBzYW9wIGFzIGEgd2hvbGUuCisJCQkJCQkgKi8KKwkJCQkJfQorCisJ CQkJCWluZGxpc3QgPSBidWlsZF9wYXRoc19mb3JfT1Iocm9vdCwgcmVsLAorCQkJCQkJCQkJ CQkJIG9yYXJncywKKwkJCQkJCQkJCQkJCSBhbGxfY2xhdXNlcyk7CisJCQkJfQorCisJCQkJ LyoKKwkJCQkgKiBJZiBub3RoaW5nIG1hdGNoZWQgdGhpcyBhcm0sIHdlIGNhbid0IGRvIGFu eXRoaW5nIHdpdGggdGhpcyBPUgorCQkJCSAqIGNsYXVzZS4KKwkJCQkgKi8KKwkJCQlpZiAo aW5kbGlzdCA9PSBOSUwpCisJCQkJeworCQkJCQlwYXRobGlzdCA9IE5JTDsKKwkJCQkJYnJl YWs7CisJCQkJfQorCisJCQkJLyoKKwkJCQkgKiBPSywgcGljayB0aGUgbW9zdCBwcm9taXNp bmcgQU5EIGNvbWJpbmF0aW9uLCBhbmQgYWRkIGl0IHRvCisJCQkJICogcGF0aGxpc3QuCisJ CQkJICovCisJCQkJYml0bWFwcXVhbCA9IGNob29zZV9iaXRtYXBfYW5kKHJvb3QsIHJlbCwg aW5kbGlzdCk7CisJCQkJcGF0aGxpc3QgPSBsYXBwZW5kKHBhdGhsaXN0LCBiaXRtYXBxdWFs KTsKKwkJCX0KIAkJfQogCiAJCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6 ZXIvdXRpbC9wcmVkdGVzdC5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcHJlZHRl c3QuYwppbmRleCBjMzdiNDE2ZTI0Li44ZWQ4MGE3OGI0IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9vcHRpbWl6ZXIvdXRpbC9wcmVkdGVzdC5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGlt aXplci91dGlsL3ByZWR0ZXN0LmMKQEAgLTExMiw2ICsxMTIsNTIgQEAgc3RhdGljIE9pZAln ZXRfYnRyZWVfdGVzdF9vcChPaWQgcHJlZF9vcCwgT2lkIGNsYXVzZV9vcCwgYm9vbCByZWZ1 dGVfaXQpOwogc3RhdGljIHZvaWQgSW52YWxpZGF0ZU9wclByb29mQ2FjaGVDYWxsQmFjayhE YXR1bSBhcmcsIGludCBjYWNoZWlkLCB1aW50MzIgaGFzaHZhbHVlKTsKIAogCisvKgorICog Q291bGQgdGhpcyBBTlkgKCkgZXhwcmVzc2lvbiBjYW4gYmUgc3BsaXQgaW50byBhIHNldCBv ZiBBTllzIG92ZXIgcGFydGlhbAorICogaW5kZXhlcz8gSWYgeWVzLCByZXR1cm4gdGhlc2Ug c2FvcHMgaW4gdGhlIFByZWRpY2F0ZXNEYXRhIHN0cnVjdHVyZS4KKyAqLworYm9vbAorc2Fv cF9jb3ZlcmVkX2J5X3ByZWRpY2F0ZXMoU2NhbGFyQXJyYXlPcEV4cHIgKnNhb3AsIExpc3Qg KnByZWRpY2F0ZV9saXN0cykKK3sKKwlMaXN0Q2VsbAkJICAgKmxjOworCVByZWRJdGVySW5m b0RhdGEJY2xhdXNlX2luZm87CisJYm9vbAkJCQlyZXN1bHQgPSBmYWxzZTsKKworCWlmIChw cmVkaWNhdGVfY2xhc3NpZnkoKE5vZGUgKikgc2FvcCwgJmNsYXVzZV9pbmZvKSAhPSBDTEFT U19PUikKKwkJcmV0dXJuIGZhbHNlOworCisJaXRlcmF0ZV9iZWdpbihwaXRlbSwgKE5vZGUg Kikgc2FvcCwgY2xhdXNlX2luZm8pCisJeworCQlyZXN1bHQgPSBmYWxzZTsKKworCQlmb3Jl YWNoKGxjLCBwcmVkaWNhdGVfbGlzdHMpCisJCXsKKwkJCVByZWRpY2F0ZXNEYXRhICpwZCA9 IChQcmVkaWNhdGVzRGF0YSAqKSBsZmlyc3QobGMpOworCisJCQlpZiAoIXByZWRpY2F0ZV9p bXBsaWVkX2J5X3JlY3Vyc2UocGl0ZW0sIHBkLT5wcmVkaWNhdGUsIGZhbHNlKSkKKwkJCQlj b250aW51ZTsKKworCQkJLyogUHJlZGljYXRlIGlzIGZvdW5kLiBBZGQgdGhlIGVsZW0gdG8g dGhlIHNhb3AgY2xhdXNlICovCisJCQlBc3NlcnQoSXNBKHBpdGVtLCBPcEV4cHIpKTsKKwor CQkJLyogRXh0cmFjdCBjb25zdGFudCBmcm9tIHRoZSBleHByZXNzaW9uICovCisJCQlwZC0+ ZWxlbXMgPSBsYXBwZW5kKHBkLT5lbGVtcywKKwkJCQkJY29weU9iamVjdChsc2Vjb25kX25v ZGUoQ29uc3QsICgoT3BFeHByICopIHBpdGVtKS0+YXJncykpKTsKKwkJCXJlc3VsdCA9IHRy dWU7CisJCQlicmVhazsKKwkJfQorCisJCWlmICghcmVzdWx0KQorCQkJLyoKKwkJCSAqIFRo ZSBlbGVtZW50IGRvZXNuJ3QgZml0IGFueSBpbmRleC4gSW50ZXJydXB0IHRoZSBwcm9jZXNz IGltbWVkaWF0ZWx5CisJCQkgKi8KKwkJCWJyZWFrOworCX0KKwlpdGVyYXRlX2VuZChjbGF1 c2VfaW5mbyk7CisKKwlyZXR1cm4gcmVzdWx0OworfQorCiAvKgogICogcHJlZGljYXRlX2lt cGxpZWRfYnkKICAqCSAgUmVjdXJzaXZlbHkgY2hlY2tzIHdoZXRoZXIgdGhlIGNsYXVzZXMg aW4gY2xhdXNlX2xpc3QgaW1wbHkgdGhhdCB0aGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L29wdGltaXplci91dGlsL3Jlc3RyaWN0aW5mby5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVy L3V0aWwvcmVzdHJpY3RpbmZvLmMKaW5kZXggMGI0MDZlOTMzNC4uMWRhZDFkYzY1NCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcmVzdHJpY3RpbmZvLmMKKysr IGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcmVzdHJpY3RpbmZvLmMKQEAgLTQyMSw2 ICs0MjEsMTkgQEAgcmVzdHJpY3Rpb25faXNfb3JfY2xhdXNlKFJlc3RyaWN0SW5mbyAqcmVz dHJpY3RpbmZvKQogCQlyZXR1cm4gZmFsc2U7CiB9CiAKK2Jvb2wKK3Jlc3RyaWN0aW9uX2lz X3Nhb3BfY2xhdXNlKFJlc3RyaWN0SW5mbyAqcmVzdHJpY3RpbmZvKQoreworCWlmIChyZXN0 cmljdGluZm8tPmNsYXVzZSAmJiBJc0EocmVzdHJpY3RpbmZvLT5jbGF1c2UsIFNjYWxhckFy cmF5T3BFeHByKSkKKwl7CisJCVNjYWxhckFycmF5T3BFeHByICpzYW9wID0gKFNjYWxhckFy cmF5T3BFeHByICopIHJlc3RyaWN0aW5mby0+Y2xhdXNlOworCisJCWlmIChzYW9wLT51c2VP cikKKwkJCXJldHVybiB0cnVlOworCX0KKwlyZXR1cm4gZmFsc2U7Cit9CisKIC8qCiAgKiBy ZXN0cmljdGlvbl9pc19zZWN1cmVseV9wcm9tb3RhYmxlCiAgKgpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvb3B0aW1pemVyL29wdGltaXplci5oIGIvc3JjL2luY2x1ZGUvb3B0aW1pemVy L29wdGltaXplci5oCmluZGV4IDM1YWI1Nzc1MDEuLjIzMmFmY2QwMGMgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL29wdGltaXplci9vcHRpbWl6ZXIuaAorKysgYi9zcmMvaW5jbHVkZS9v cHRpbWl6ZXIvb3B0aW1pemVyLmgKQEAgLTE2MCw2ICsxNjAsMjIgQEAgZXh0ZXJuIExpc3Qg KmV4cGFuZF9mdW5jdGlvbl9hcmd1bWVudHMoTGlzdCAqYXJncywgYm9vbCBpbmNsdWRlX291 dF9hcmd1bWVudHMsCiAKIC8qIGluIHV0aWwvcHJlZHRlc3QuYzogKi8KIAorLyoKKyAqIENv bnRhaW5zIGluZm9ybWF0aW9uIG5lZWRlZCB0byBleHRyYWN0IGZyb20gc2FvcCBhIHNldCBv ZiBlbGVtZW50cyB3aGljaCBjYW4KKyAqIGJlIGNvdmVyZWQgYnkgdGhlIHBhcnRpYWwgaW5k ZXg6CisgKiBpZCAtIGNhbGxlcidzIGlkZW50aWZpY2F0aW9uIG9mIHRoZSBpbmRleC4KKyAq IHByZWRpY2F0ZSAtIHByZWRpY2F0ZSBleHByZXNzaW9uIG9mIHRoZSBpbmRleAorICogZWxl bXMgLSByZXR1cm5pbmcgbGlzdCBvZiBhcnJheSBlbGVtZW50cyB3aGljaCBjb3JyZXNwb25k cyB0byB0aGlzIHByZWRpY2F0ZQorICovCit0eXBlZGVmIHN0cnVjdCBQcmVkaWNhdGVzRGF0 YQoreworCWludAkJaWQ7CisJTm9kZSAgICpwcmVkaWNhdGU7CisJTGlzdCAgICplbGVtczsK K30gUHJlZGljYXRlc0RhdGE7CisKK2V4dGVybiBib29sIHNhb3BfY292ZXJlZF9ieV9wcmVk aWNhdGVzKFNjYWxhckFycmF5T3BFeHByICpzYW9wLAorCQkJCQkJCQkJICBMaXN0ICpwcmVk aWNhdGVfbGlzdHMpOwogZXh0ZXJuIGJvb2wgcHJlZGljYXRlX2ltcGxpZWRfYnkoTGlzdCAq cHJlZGljYXRlX2xpc3QsIExpc3QgKmNsYXVzZV9saXN0LAogCQkJCQkJCQkgYm9vbCB3ZWFr KTsKIGV4dGVybiBib29sIHByZWRpY2F0ZV9yZWZ1dGVkX2J5KExpc3QgKnByZWRpY2F0ZV9s aXN0LCBMaXN0ICpjbGF1c2VfbGlzdCwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL29wdGlt aXplci9yZXN0cmljdGluZm8uaCBiL3NyYy9pbmNsdWRlL29wdGltaXplci9yZXN0cmljdGlu Zm8uaAppbmRleCAxYjQyYzgzMmM1Li4yY2Q1ZmJmOTQzIDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9vcHRpbWl6ZXIvcmVzdHJpY3RpbmZvLmgKKysrIGIvc3JjL2luY2x1ZGUvb3B0aW1p emVyL3Jlc3RyaWN0aW5mby5oCkBAIC0zNCw2ICszNCw3IEBAIGV4dGVybiBSZXN0cmljdElu Zm8gKm1ha2VfcmVzdHJpY3RpbmZvKFBsYW5uZXJJbmZvICpyb290LAogCQkJCQkJCQkJICAg UmVsaWRzIG91dGVyX3JlbGlkcyk7CiBleHRlcm4gUmVzdHJpY3RJbmZvICpjb21tdXRlX3Jl c3RyaWN0aW5mbyhSZXN0cmljdEluZm8gKnJpbmZvLCBPaWQgY29tbV9vcCk7CiBleHRlcm4g Ym9vbCByZXN0cmljdGlvbl9pc19vcl9jbGF1c2UoUmVzdHJpY3RJbmZvICpyZXN0cmljdGlu Zm8pOworZXh0ZXJuIGJvb2wgcmVzdHJpY3Rpb25faXNfc2FvcF9jbGF1c2UoUmVzdHJpY3RJ bmZvICpyZXN0cmljdGluZm8pOwogZXh0ZXJuIGJvb2wgcmVzdHJpY3Rpb25faXNfc2VjdXJl bHlfcHJvbW90YWJsZShSZXN0cmljdEluZm8gKnJlc3RyaWN0aW5mbywKIAkJCQkJCQkJCQkJ ICAgUmVsT3B0SW5mbyAqcmVsKTsKIGV4dGVybiBMaXN0ICpnZXRfYWN0dWFsX2NsYXVzZXMo TGlzdCAqcmVzdHJpY3RpbmZvX2xpc3QpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9zZWxlY3Qub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zZWxl Y3Qub3V0CmluZGV4IDMzYTZkY2ViMGUuLjc2OGM5YjA3ODAgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc2VsZWN0Lm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL3NlbGVjdC5vdXQKQEAgLTkwNyw2ICs5MDcsMjg4IEBAIHNlbGVjdCB1bmlx dWUxLCB1bmlxdWUyIGZyb20gb25lazIKICAgICAgICAwIHwgICAgIDk5OAogKDIgcm93cykK IAorU0VUIGVuYWJsZV9zZXFzY2FuIFRPIG9mZjsKK1NFVCBlbmFibGVfaW5kZXhzY2FuIFRP IG9mZjsgLS0gT25seSBCaXRtYXBTY2FuIGlzIGEgc3ViamVjdCBtYXR0ZXIgaGVyZQorU0VU IGVuYWJsZV9vcl90cmFuc2Zvcm1hdGlvbiA9ICdvZmYnOworRVhQTEFJTiAoQ09TVFMgT0ZG KQorU0VMRUNUIGNvdW50KCopIEZST00gb25lazIgV0hFUkUgc3RyaW5ndTEgPSAnQScgT1Ig c3RyaW5ndTEgPSAnSic7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZ IFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIG9uZWsyCisg ICAgICAgICBSZWNoZWNrIENvbmQ6ICgoc3RyaW5ndTEgPCAnQic6Om5hbWUpIE9SIChzdHJp bmd1MSA9ICdKJzo6bmFtZSkpCisgICAgICAgICBGaWx0ZXI6ICgoc3RyaW5ndTEgPSAnQSc6 Om5hbWUpIE9SIChzdHJpbmd1MSA9ICdKJzo6bmFtZSkpCisgICAgICAgICAtPiAgQml0bWFw T3IKKyAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBvbmVrMl91Ml9w cnRsCisgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gb25lazJfc3R1 MV9wcnRsCisgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoc3RyaW5ndTEgPSAn Sic6Om5hbWUpCisoOCByb3dzKQorCistLSBXaXRob3V0IHRoZSB0cmFuc2Zvcm1hdGlvbiBv bmx5IHNlcXNjYW4gcG9zc2libGUgaGVyZQorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNU IHVuaXF1ZTIsIHN0cmluZ3UxIEZST00gb25lazIKK1dIRVJFIHVuaXF1ZTIgPCAxIEFORCBz dHJpbmd1MSBJTiAoJ0EnLCdKJykgQU5EIHN0cmluZ3UxIDwgJ1onOworICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBTZXEgU2NhbiBvbiBvbmVrMgorICAgRmlsdGVyOiAoKHVuaXF1 ZTIgPCAxKSBBTkQgKHN0cmluZ3UxID0gQU5ZICgne0EsSn0nOjpuYW1lW10pKSBBTkQgKHN0 cmluZ3UxIDwgJ1onOjpuYW1lKSkKKygyIHJvd3MpCisKKy0tIFVzZSBwYXJ0aWFsIGluZGV4 ZXMKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBjb3VudCgqKSBGUk9NIG9uZWsyCitX SEVSRSBzdHJpbmd1MSBJTiAoJ0InLCdKJykgQU5EIChzdHJpbmd1MSA9ICdBJyBPUiB1bmlx dWUxID0gMSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg QWdncmVnYXRlCisgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiBvbmVrMgorICAgICAgICAg UmVjaGVjayBDb25kOiAoKHN0cmluZ3UxIDwgJ0InOjpuYW1lKSBPUiAodW5pcXVlMSA9IDEp KQorICAgICAgICAgRmlsdGVyOiAoKHN0cmluZ3UxID0gQU5ZICgne0IsSn0nOjpuYW1lW10p KSBBTkQgKChzdHJpbmd1MSA9ICdBJzo6bmFtZSkgT1IgKHVuaXF1ZTEgPSAxKSkpCisgICAg ICAgICAtPiAgQml0bWFwT3IKKyAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2Nh biBvbiBvbmVrMl91Ml9wcnRsCisgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNj YW4gb24gb25lazJfdTFfcHJ0bAorICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDog KHVuaXF1ZTEgPSAxKQorKDggcm93cykKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNU IHVuaXF1ZTIsIHN0cmluZ3UxIEZST00gb25lazIKK1dIRVJFIHVuaXF1ZTEgPCAxIE9SIChz dHJpbmd1MSA9ICdBJyBPUiBzdHJpbmd1MSA9ICdKJyk7CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQml0bWFw IEhlYXAgU2NhbiBvbiBvbmVrMgorICAgUmVjaGVjayBDb25kOiAoKHVuaXF1ZTEgPCAxKSBP UiAoc3RyaW5ndTEgPCAnQic6Om5hbWUpIE9SIChzdHJpbmd1MSA9ICdKJzo6bmFtZSkpCisg ICBGaWx0ZXI6ICgodW5pcXVlMSA8IDEpIE9SIChzdHJpbmd1MSA9ICdBJzo6bmFtZSkgT1Ig KHN0cmluZ3UxID0gJ0onOjpuYW1lKSkKKyAgIC0+ICBCaXRtYXBPcgorICAgICAgICAgLT4g IEJpdG1hcCBJbmRleCBTY2FuIG9uIG9uZWsyX3UxX3BydGwKKyAgICAgICAgICAgICAgIElu ZGV4IENvbmQ6ICh1bmlxdWUxIDwgMSkKKyAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2Nh biBvbiBvbmVrMl91Ml9wcnRsCisgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24g b25lazJfc3R1MV9wcnRsCisgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoc3RyaW5ndTEg PSAnSic6Om5hbWUpCisoOSByb3dzKQorCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1Qg dW5pcXVlMiwgc3RyaW5ndTEgRlJPTSBvbmVrMgorV0hFUkUgdW5pcXVlMSA9IDEgT1IgdW5p cXVlMiA9IFBJKCk6OmludGVnZXI7CisgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAg ICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyBTZXEgU2NhbiBvbiBvbmVrMgorICAgRmlsdGVyOiAoKHVuaXF1ZTEgPSAxKSBP UiAodW5pcXVlMiA9IDMpKQorKDIgcm93cykKKworUkVTRVQgZW5hYmxlX29yX3RyYW5zZm9y bWF0aW9uOworLS0gT1IgPC0+IEFOWSB0cmFuc2Zvcm1hdGlvbiBtdXN0IGZpbmQgYSBwYXRo IHdpdGggcGFydGlhbCBpbmRleGVzIHNjYW4KKy0tIHJlZ2FyZGxlc3MgdGhlIGNsYXVzZSBy ZXByZXNlbnRhdGlvbi4KK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBjb3VudCgqKSBG Uk9NIG9uZWsyIFdIRVJFIHN0cmluZ3UxID0gJ0EnIE9SIHN0cmluZ3UxID0gJ0onOworICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIG9uZWsyCisg ICAgICAgICBSZWNoZWNrIENvbmQ6ICgoc3RyaW5ndTEgPSBBTlkgKCd7Sn0nOjpuYW1lW10p KSBPUiAoc3RyaW5ndTEgPCAnQic6Om5hbWUpKQorICAgICAgICAgRmlsdGVyOiAoc3RyaW5n dTEgPSBBTlkgKCd7QSxKfSc6Om5hbWVbXSkpCisgICAgICAgICAtPiAgQml0bWFwT3IKKyAg ICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBvbmVrMl9zdHUxX3BydGwK KyAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChzdHJpbmd1MSA9IEFOWSAoJ3tK fSc6Om5hbWVbXSkpCisgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24g b25lazJfdTJfcHJ0bAorKDggcm93cykKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNU IGNvdW50KCopIEZST00gb25lazIgV0hFUkUgc3RyaW5ndTEgSU4gKCdBJywnSicpOworICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIG9uZWsyCisg ICAgICAgICBSZWNoZWNrIENvbmQ6ICgoc3RyaW5ndTEgPSBBTlkgKCd7Sn0nOjpuYW1lW10p KSBPUiAoc3RyaW5ndTEgPCAnQic6Om5hbWUpKQorICAgICAgICAgRmlsdGVyOiAoc3RyaW5n dTEgPSBBTlkgKCd7QSxKfSc6Om5hbWVbXSkpCisgICAgICAgICAtPiAgQml0bWFwT3IKKyAg ICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBvbmVrMl9zdHUxX3BydGwK KyAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChzdHJpbmd1MSA9IEFOWSAoJ3tK fSc6Om5hbWVbXSkpCisgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24g b25lazJfdTJfcHJ0bAorKDggcm93cykKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNU IGNvdW50KCopIEZST00gb25lazIgV0hFUkUgc3RyaW5ndTEgPSBBTlkgKCd7QSxKfScpOwor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIG9uZWsy CisgICAgICAgICBSZWNoZWNrIENvbmQ6ICgoc3RyaW5ndTEgPSBBTlkgKCd7Sn0nOjpuYW1l W10pKSBPUiAoc3RyaW5ndTEgPCAnQic6Om5hbWUpKQorICAgICAgICAgRmlsdGVyOiAoc3Ry aW5ndTEgPSBBTlkgKCd7QSxKfSc6Om5hbWVbXSkpCisgICAgICAgICAtPiAgQml0bWFwT3IK KyAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBvbmVrMl9zdHUxX3By dGwKKyAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChzdHJpbmd1MSA9IEFOWSAo J3tKfSc6Om5hbWVbXSkpCisgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4g b24gb25lazJfdTJfcHJ0bAorKDggcm93cykKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VM RUNUIGNvdW50KCopIEZST00gb25lazIgV0hFUkUgc3RyaW5ndTEgSU4gKCdBJykgT1Igc3Ry aW5ndTEgSU4gKCdKJyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIEJpdG1hcCBI ZWFwIFNjYW4gb24gb25lazIKKyAgICAgICAgIFJlY2hlY2sgQ29uZDogKChzdHJpbmd1MSA9 IEFOWSAoJ3tKfSc6Om5hbWVbXSkpIE9SIChzdHJpbmd1MSA8ICdCJzo6bmFtZSkpCisgICAg ICAgICBGaWx0ZXI6IChzdHJpbmd1MSA9IEFOWSAoJ3tBLEp9Jzo6bmFtZVtdKSkKKyAgICAg ICAgIC0+ICBCaXRtYXBPcgorICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2Fu IG9uIG9uZWsyX3N0dTFfcHJ0bAorICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDog KHN0cmluZ3UxID0gQU5ZICgne0p9Jzo6bmFtZVtdKSkKKyAgICAgICAgICAgICAgIC0+ICBC aXRtYXAgSW5kZXggU2NhbiBvbiBvbmVrMl91Ml9wcnRsCisoOCByb3dzKQorCistLSBEb24n dCBzY2FuIHBhcnRpYWwgaW5kZXhlcyBiZWNhdXNlIG9mIGV4dHJhIHZhbHVlLgorRVhQTEFJ TiAoQ09TVFMgT0ZGKQorU0VMRUNUIGNvdW50KCopIEZST00gb25lazIgV0hFUkUgc3RyaW5n dTEgSU4gKCdBJywgJ0onLCAnQycpOworICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBM QU4gICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBTZXEgU2Nh biBvbiBvbmVrMgorICAgICAgICAgRmlsdGVyOiAoc3RyaW5ndTEgPSBBTlkgKCd7QSxKLEN9 Jzo6bmFtZVtdKSkKKygzIHJvd3MpCisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCB1 bmlxdWUyIEZST00gb25lazIKK1dIRVJFIHN0cmluZ3UxIElOICgnQScsICdBJykgQU5EIChz dHJpbmd1MSA9ICdBJyBPUiBzdHJpbmd1MSA9ICdBJyk7CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEJp dG1hcCBIZWFwIFNjYW4gb24gb25lazIKKyAgIFJlY2hlY2sgQ29uZDogKHN0cmluZ3UxIDwg J0InOjpuYW1lKQorICAgRmlsdGVyOiAoKHN0cmluZ3UxID0gQU5ZICgne0EsQX0nOjpuYW1l W10pKSBBTkQgKHN0cmluZ3UxID0gQU5ZICgne0EsQX0nOjpuYW1lW10pKSkKKyAgIC0+ICBC aXRtYXAgSW5kZXggU2NhbiBvbiBvbmVrMl91Ml9wcnRsCisoNCByb3dzKQorCitFWFBMQUlO IChDT1NUUyBPRkYpCitTRUxFQ1QgdW5pcXVlMiwgc3RyaW5ndTEgRlJPTSBvbmVrMgorV0hF UkUgdW5pcXVlMiA8IDEgQU5EIHN0cmluZ3UxIElOICgnQScsJ0onKSBBTkQgc3RyaW5ndTEg PCAnWic7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQml0 bWFwIEhlYXAgU2NhbiBvbiBvbmVrMgorICAgUmVjaGVjayBDb25kOiAoKChzdHJpbmd1MSA9 IEFOWSAoJ3tKfSc6Om5hbWVbXSkpIEFORCAoc3RyaW5ndTEgPCAnWic6Om5hbWUpKSBPUiAo KHVuaXF1ZTIgPCAxKSBBTkQgKHN0cmluZ3UxIDwgJ0InOjpuYW1lKSkpCisgICBGaWx0ZXI6 ICgodW5pcXVlMiA8IDEpIEFORCAoc3RyaW5ndTEgPSBBTlkgKCd7QSxKfSc6Om5hbWVbXSkp KQorICAgLT4gIEJpdG1hcE9yCisgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24g b25lazJfc3R1MV9wcnRsCisgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoKHN0cmluZ3Ux ID0gQU5ZICgne0p9Jzo6bmFtZVtdKSkgQU5EIChzdHJpbmd1MSA8ICdaJzo6bmFtZSkpCisg ICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gb25lazJfdTJfcHJ0bAorICAgICAg ICAgICAgICAgSW5kZXggQ29uZDogKHVuaXF1ZTIgPCAxKQorKDggcm93cykKKworRVhQTEFJ TiAoQ09TVFMgT0ZGKQorU0VMRUNUIHVuaXF1ZTIsIHN0cmluZ3UxIEZST00gb25lazIKK1dI RVJFIHVuaXF1ZTEgPSAxIE9SIHVuaXF1ZTEgPSBQSSgpOjppbnRlZ2VyOworICAgICAgICAg ICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQml0bWFwIEhlYXAg U2NhbiBvbiBvbmVrMgorICAgUmVjaGVjayBDb25kOiAoKHVuaXF1ZTEgPSAzKSBPUiAodW5p cXVlMSA9IDEpKQorICAgLT4gIEJpdG1hcE9yCisgICAgICAgICAtPiAgQml0bWFwIEluZGV4 IFNjYW4gb24gb25lazJfdTFfcHJ0bAorICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHVu aXF1ZTEgPSAzKQorICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIG9uZWsyX3Ux X3BydGwKKyAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh1bmlxdWUxID0gMSkKKyg3IHJv d3MpCisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCB1bmlxdWUyLCBzdHJpbmd1MSBG Uk9NIG9uZWsyCitXSEVSRSB1bmlxdWUxIElOICgxLCBQSSgpOjppbnRlZ2VyKTsgLS0gVE9E Tzogd2h5IGl0IGlzIGRpZmZlcnMgZnJvbSBwcmV2aW91cyBleGFtcGxlPworICAgICAgICAg ICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIEJpdG1hcCBIZWFwIFNjYW4gb24gb25lazIKKyAgIFJlY2hlY2sgQ29uZDogKHVuaXF1 ZTEgPSBBTlkgKCd7MSwzfSc6OmludGVnZXJbXSkpCisgICAtPiAgQml0bWFwIEluZGV4IFNj YW4gb24gb25lazJfdTFfcHJ0bAorICAgICAgICAgSW5kZXggQ29uZDogKHVuaXF1ZTEgPSBB TlkgKCd7MSwzfSc6OmludGVnZXJbXSkpCisoNCByb3dzKQorCistLSBEb24ndCBhcHBseSB0 aGUgb3B0aW1pemF0aW9uIHRvIGNsYXVzZXMsIGNvbnRhaW5pbmcgdm9sYXRpbGUgZnVuY3Rp b25zCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgdW5pcXVlMixzdHJpbmd1MSBGUk9N IG9uZWsyCitXSEVSRSB1bmlxdWUxID0gKHJhbmRvbSgpKjIpOjppbnRlZ2VyIE9SIHVuaXF1 ZTEgPSAocmFuZG9tKCkqMyk6OmludGVnZXI7CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFNlcSBTY2FuIG9uIG9uZWsyCisgICBGaWx0 ZXI6ICgodW5pcXVlMSA9ICgocmFuZG9tKCkgKiAnMic6OmRvdWJsZSBwcmVjaXNpb24pKTo6 aW50ZWdlcikgT1IgKHVuaXF1ZTEgPSAoKHJhbmRvbSgpICogJzMnOjpkb3VibGUgcHJlY2lz aW9uKSk6OmludGVnZXIpKQorKDIgcm93cykKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VM RUNUIHVuaXF1ZTIsc3RyaW5ndTEgRlJPTSBvbmVrMgorV0hFUkUgdW5pcXVlMSBJTiAoKHJh bmRvbSgpKjIpOjppbnRlZ2VyLCAocmFuZG9tKCkqMyk6OmludGVnZXIpOworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVS WSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTZXEgU2NhbiBvbiBvbmVr MgorICAgRmlsdGVyOiAodW5pcXVlMSA9IEFOWSAoQVJSQVlbKChyYW5kb20oKSAqICcyJzo6 ZG91YmxlIHByZWNpc2lvbikpOjppbnRlZ2VyLCAoKHJhbmRvbSgpICogJzMnOjpkb3VibGUg cHJlY2lzaW9uKSk6OmludGVnZXJdKSkKKygyIHJvd3MpCisKKy0tIENvbWJpbmUgZGlmZmVy ZW50IHNhb3BzLiBTb2Ugb2YgdGhlbSBkb2VzbnQnIGZpdCBhIHNldCBvZiBwYXJ0aWFsIGlu ZGV4ZXMsCistLSBidXQgb3RoZXIgZml0cy4KKy0tIFVuZm9ydHVuYXRlbHksIHdlIGRvbid0 IGNvbWJpbmUgc2FvcCBhbmQgT1IgY2xhdXNlcyBzbyBmYXIuCitFWFBMQUlOIChDT1NUUyBP RkYpCitTRUxFQ1QgdW5pcXVlMixzdHJpbmd1MSBGUk9NIG9uZWsyCitXSEVSRQorICB1bmlx dWUxIElOICgxLDIsMjEpIEFORAorICAoc3RyaW5ndTEgSU4gKCdBJywnSicpIE9SIHVuaXF1 ZTEgSU4gKDMsNCkgT1Igc3RyaW5ndTEgPSAnSicpOworICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEJpdG1hcCBIZWFwIFNj YW4gb24gb25lazIKKyAgIFJlY2hlY2sgQ29uZDogKChzdHJpbmd1MSA9IEFOWSAoJ3tKfSc6 Om5hbWVbXSkpIE9SIChzdHJpbmd1MSA8ICdCJzo6bmFtZSkgT1IgKCh1bmlxdWUxID0gQU5Z ICgnezMsNH0nOjppbnRlZ2VyW10pKSBBTkQgKHVuaXF1ZTEgPSBBTlkgKCd7MSwyLDIxfSc6 OmludGVnZXJbXSkpKSBPUiAoc3RyaW5ndTEgPSAnSic6Om5hbWUpKQorICAgRmlsdGVyOiAo KHVuaXF1ZTEgPSBBTlkgKCd7MSwyLDIxfSc6OmludGVnZXJbXSkpIEFORCAoKHN0cmluZ3Ux ID0gQU5ZICgne0EsSn0nOjpuYW1lW10pKSBPUiAodW5pcXVlMSA9IEFOWSAoJ3szLDR9Jzo6 aW50ZWdlcltdKSkgT1IgKHN0cmluZ3UxID0gJ0onOjpuYW1lKSkpCisgICAtPiAgQml0bWFw T3IKKyAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBvbmVrMl9zdHUxX3BydGwK KyAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChzdHJpbmd1MSA9IEFOWSAoJ3tKfSc6Om5h bWVbXSkpCisgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gb25lazJfdTJfcHJ0 bAorICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIG9uZWsyX3UxX3BydGwKKyAg ICAgICAgICAgICAgIEluZGV4IENvbmQ6ICgodW5pcXVlMSA9IEFOWSAoJ3szLDR9Jzo6aW50 ZWdlcltdKSkgQU5EICh1bmlxdWUxID0gQU5ZICgnezEsMiwyMX0nOjppbnRlZ2VyW10pKSkK KyAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBvbmVrMl9zdHUxX3BydGwKKyAg ICAgICAgICAgICAgIEluZGV4IENvbmQ6IChzdHJpbmd1MSA9ICdKJzo6bmFtZSkKKygxMSBy b3dzKQorCistLSBDaGVjayByZWN1cnNpdmUgY29tYmluYXRpb24gb2YgT1IgYW5kIFNBT1Ag ZXhwcmVzc2lvbnMKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCB1bmlxdWUyLCBzdHJp bmd1MSBGUk9NIG9uZWsyCitXSEVSRSB1bmlxdWUxIDwgMSBPUiAoc3RyaW5ndTEgPSAnQScg T1Igc3RyaW5ndTEgPSAnSicpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg Qml0bWFwIEhlYXAgU2NhbiBvbiBvbmVrMgorICAgUmVjaGVjayBDb25kOiAoKHN0cmluZ3Ux ID0gQU5ZICgne0p9Jzo6bmFtZVtdKSkgT1IgKHN0cmluZ3UxIDwgJ0InOjpuYW1lKSBPUiAo dW5pcXVlMSA8IDEpKQorICAgRmlsdGVyOiAoKHN0cmluZ3UxID0gQU5ZICgne0EsSn0nOjpu YW1lW10pKSBPUiAodW5pcXVlMSA8IDEpKQorICAgLT4gIEJpdG1hcE9yCisgICAgICAgICAt PiAgQml0bWFwIEluZGV4IFNjYW4gb24gb25lazJfc3R1MV9wcnRsCisgICAgICAgICAgICAg ICBJbmRleCBDb25kOiAoc3RyaW5ndTEgPSBBTlkgKCd7Sn0nOjpuYW1lW10pKQorICAgICAg ICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIG9uZWsyX3UyX3BydGwKKyAgICAgICAgIC0+ ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBvbmVrMl91MV9wcnRsCisgICAgICAgICAgICAgICBJ bmRleCBDb25kOiAodW5pcXVlMSA8IDEpCisoOSByb3dzKQorCitFWFBMQUlOIChDT1NUUyBP RkYpCitTRUxFQ1QgdW5pcXVlMiwgc3RyaW5ndTEgRlJPTSBvbmVrMgorV0hFUkUgKHVuaXF1 ZTEgPCAxIE9SIHN0cmluZ3UxIElOICgnQScsJ0onKSk7CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyBCaXRtYXAgSGVhcCBTY2FuIG9uIG9uZWsyCisgICBSZWNoZWNrIENv bmQ6ICgoc3RyaW5ndTEgPSBBTlkgKCd7Sn0nOjpuYW1lW10pKSBPUiAoc3RyaW5ndTEgPCAn Qic6Om5hbWUpIE9SICh1bmlxdWUxIDwgMSkpCisgICBGaWx0ZXI6ICgoc3RyaW5ndTEgPSBB TlkgKCd7QSxKfSc6Om5hbWVbXSkpIE9SICh1bmlxdWUxIDwgMSkpCisgICAtPiAgQml0bWFw T3IKKyAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBvbmVrMl9zdHUxX3BydGwK KyAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChzdHJpbmd1MSA9IEFOWSAoJ3tKfSc6Om5h bWVbXSkpCisgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gb25lazJfdTJfcHJ0 bAorICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIG9uZWsyX3UxX3BydGwKKyAg ICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh1bmlxdWUxIDwgMSkKKyg5IHJvd3MpCisKKy0t IEFsdGhvdWdoIFNBT1AgZG9lc24ndCBmaXQgcGFydGlhbCBpbmRleGVzIGZ1bGx5LCB3ZSBj YW4gdXNlIGFuZGVkIE9SIGNsYXVzZQorLS0gdG8gc2NhbiBhbm90aGVyIGNvdXBsZSBvZiBw YXJ0aWFsIGluZGV4ZXMuCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgY291bnQoKikg RlJPTSBvbmVrMgorV0hFUkUgc3RyaW5ndTEgSU4gKCdCJywnSicpIEFORCAoc3RyaW5ndTEg PSAnQScgT1IgdW5pcXVlMSA9IDEpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gb25l azIKKyAgICAgICAgIFJlY2hlY2sgQ29uZDogKChzdHJpbmd1MSA8ICdCJzo6bmFtZSkgT1Ig KHVuaXF1ZTEgPSAxKSkKKyAgICAgICAgIEZpbHRlcjogKChzdHJpbmd1MSA9IEFOWSAoJ3tC LEp9Jzo6bmFtZVtdKSkgQU5EICgoc3RyaW5ndTEgPSAnQSc6Om5hbWUpIE9SICh1bmlxdWUx ID0gMSkpKQorICAgICAgICAgLT4gIEJpdG1hcE9yCisgICAgICAgICAgICAgICAtPiAgQml0 bWFwIEluZGV4IFNjYW4gb24gb25lazJfdTJfcHJ0bAorICAgICAgICAgICAgICAgLT4gIEJp dG1hcCBJbmRleCBTY2FuIG9uIG9uZWsyX3UxX3BydGwKKyAgICAgICAgICAgICAgICAgICAg IEluZGV4IENvbmQ6ICh1bmlxdWUxID0gMSkKKyg4IHJvd3MpCisKK1JFU0VUIGVuYWJsZV9p bmRleHNjYW47CitSRVNFVCBlbmFibGVfc2Vxc2NhbjsKIC0tCiAtLSBUZXN0IHNvbWUgY29y bmVyIGNhc2VzIHRoYXQgaGF2ZSBiZWVuIGtub3duIHRvIGNvbmZ1c2UgdGhlIHBsYW5uZXIK IC0tCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zZWxlY3Quc3FsIGIvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvc2VsZWN0LnNxbAppbmRleCAwMTlmMWU3NjczLi4yMjNmNTVh ZjRlIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zZWxlY3Quc3FsCisrKyBi L3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3NlbGVjdC5zcWwKQEAgLTIzNCw2ICsyMzQsODggQEAg c2VsZWN0IHVuaXF1ZTEsIHVuaXF1ZTIgZnJvbSBvbmVrMgogc2VsZWN0IHVuaXF1ZTEsIHVu aXF1ZTIgZnJvbSBvbmVrMgogICB3aGVyZSAodW5pcXVlMiA9IDExIGFuZCBzdHJpbmd1MSA8 ICdCJykgb3IgdW5pcXVlMSA9IDA7CiAKK1NFVCBlbmFibGVfc2Vxc2NhbiBUTyBvZmY7CitT RVQgZW5hYmxlX2luZGV4c2NhbiBUTyBvZmY7IC0tIE9ubHkgQml0bWFwU2NhbiBpcyBhIHN1 YmplY3QgbWF0dGVyIGhlcmUKK1NFVCBlbmFibGVfb3JfdHJhbnNmb3JtYXRpb24gPSAnb2Zm JzsKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBjb3VudCgqKSBGUk9NIG9uZWsyIFdI RVJFIHN0cmluZ3UxID0gJ0EnIE9SIHN0cmluZ3UxID0gJ0onOworLS0gV2l0aG91dCB0aGUg dHJhbnNmb3JtYXRpb24gb25seSBzZXFzY2FuIHBvc3NpYmxlIGhlcmUKK0VYUExBSU4gKENP U1RTIE9GRikKK1NFTEVDVCB1bmlxdWUyLCBzdHJpbmd1MSBGUk9NIG9uZWsyCitXSEVSRSB1 bmlxdWUyIDwgMSBBTkQgc3RyaW5ndTEgSU4gKCdBJywnSicpIEFORCBzdHJpbmd1MSA8ICda JzsKKy0tIFVzZSBwYXJ0aWFsIGluZGV4ZXMKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVD VCBjb3VudCgqKSBGUk9NIG9uZWsyCitXSEVSRSBzdHJpbmd1MSBJTiAoJ0InLCdKJykgQU5E IChzdHJpbmd1MSA9ICdBJyBPUiB1bmlxdWUxID0gMSk7CitFWFBMQUlOIChDT1NUUyBPRkYp CitTRUxFQ1QgdW5pcXVlMiwgc3RyaW5ndTEgRlJPTSBvbmVrMgorV0hFUkUgdW5pcXVlMSA8 IDEgT1IgKHN0cmluZ3UxID0gJ0EnIE9SIHN0cmluZ3UxID0gJ0onKTsKK0VYUExBSU4gKENP U1RTIE9GRikKK1NFTEVDVCB1bmlxdWUyLCBzdHJpbmd1MSBGUk9NIG9uZWsyCitXSEVSRSB1 bmlxdWUxID0gMSBPUiB1bmlxdWUyID0gUEkoKTo6aW50ZWdlcjsKK1JFU0VUIGVuYWJsZV9v cl90cmFuc2Zvcm1hdGlvbjsKKworLS0gT1IgPC0+IEFOWSB0cmFuc2Zvcm1hdGlvbiBtdXN0 IGZpbmQgYSBwYXRoIHdpdGggcGFydGlhbCBpbmRleGVzIHNjYW4KKy0tIHJlZ2FyZGxlc3Mg dGhlIGNsYXVzZSByZXByZXNlbnRhdGlvbi4KK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVD VCBjb3VudCgqKSBGUk9NIG9uZWsyIFdIRVJFIHN0cmluZ3UxID0gJ0EnIE9SIHN0cmluZ3Ux ID0gJ0onOworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIGNvdW50KCopIEZST00gb25l azIgV0hFUkUgc3RyaW5ndTEgSU4gKCdBJywnSicpOworRVhQTEFJTiAoQ09TVFMgT0ZGKQor U0VMRUNUIGNvdW50KCopIEZST00gb25lazIgV0hFUkUgc3RyaW5ndTEgPSBBTlkgKCd7QSxK fScpOworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIGNvdW50KCopIEZST00gb25lazIg V0hFUkUgc3RyaW5ndTEgSU4gKCdBJykgT1Igc3RyaW5ndTEgSU4gKCdKJyk7CisKKy0tIERv bid0IHNjYW4gcGFydGlhbCBpbmRleGVzIGJlY2F1c2Ugb2YgZXh0cmEgdmFsdWUuCitFWFBM QUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgY291bnQoKikgRlJPTSBvbmVrMiBXSEVSRSBzdHJp bmd1MSBJTiAoJ0EnLCAnSicsICdDJyk7CitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1Qg dW5pcXVlMiBGUk9NIG9uZWsyCitXSEVSRSBzdHJpbmd1MSBJTiAoJ0EnLCAnQScpIEFORCAo c3RyaW5ndTEgPSAnQScgT1Igc3RyaW5ndTEgPSAnQScpOworCitFWFBMQUlOIChDT1NUUyBP RkYpCitTRUxFQ1QgdW5pcXVlMiwgc3RyaW5ndTEgRlJPTSBvbmVrMgorV0hFUkUgdW5pcXVl MiA8IDEgQU5EIHN0cmluZ3UxIElOICgnQScsJ0onKSBBTkQgc3RyaW5ndTEgPCAnWic7CitF WFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgdW5pcXVlMiwgc3RyaW5ndTEgRlJPTSBvbmVr MgorV0hFUkUgdW5pcXVlMSA9IDEgT1IgdW5pcXVlMSA9IFBJKCk6OmludGVnZXI7CitFWFBM QUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgdW5pcXVlMiwgc3RyaW5ndTEgRlJPTSBvbmVrMgor V0hFUkUgdW5pcXVlMSBJTiAoMSwgUEkoKTo6aW50ZWdlcik7IC0tIFRPRE86IHdoeSBpdCBp cyBkaWZmZXJzIGZyb20gcHJldmlvdXMgZXhhbXBsZT8KKworLS0gRG9uJ3QgYXBwbHkgdGhl IG9wdGltaXphdGlvbiB0byBjbGF1c2VzLCBjb250YWluaW5nIHZvbGF0aWxlIGZ1bmN0aW9u cworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIHVuaXF1ZTIsc3RyaW5ndTEgRlJPTSBv bmVrMgorV0hFUkUgdW5pcXVlMSA9IChyYW5kb20oKSoyKTo6aW50ZWdlciBPUiB1bmlxdWUx ID0gKHJhbmRvbSgpKjMpOjppbnRlZ2VyOworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNU IHVuaXF1ZTIsc3RyaW5ndTEgRlJPTSBvbmVrMgorV0hFUkUgdW5pcXVlMSBJTiAoKHJhbmRv bSgpKjIpOjppbnRlZ2VyLCAocmFuZG9tKCkqMyk6OmludGVnZXIpOworCistLSBDb21iaW5l IGRpZmZlcmVudCBzYW9wcy4gU29lIG9mIHRoZW0gZG9lc250JyBmaXQgYSBzZXQgb2YgcGFy dGlhbCBpbmRleGVzLAorLS0gYnV0IG90aGVyIGZpdHMuCistLSBVbmZvcnR1bmF0ZWx5LCB3 ZSBkb24ndCBjb21iaW5lIHNhb3AgYW5kIE9SIGNsYXVzZXMgc28gZmFyLgorRVhQTEFJTiAo Q09TVFMgT0ZGKQorU0VMRUNUIHVuaXF1ZTIsc3RyaW5ndTEgRlJPTSBvbmVrMgorV0hFUkUK KyAgdW5pcXVlMSBJTiAoMSwyLDIxKSBBTkQKKyAgKHN0cmluZ3UxIElOICgnQScsJ0onKSBP UiB1bmlxdWUxIElOICgzLDQpIE9SIHN0cmluZ3UxID0gJ0onKTsKKworLS0gQ2hlY2sgcmVj dXJzaXZlIGNvbWJpbmF0aW9uIG9mIE9SIGFuZCBTQU9QIGV4cHJlc3Npb25zCitFWFBMQUlO IChDT1NUUyBPRkYpCitTRUxFQ1QgdW5pcXVlMiwgc3RyaW5ndTEgRlJPTSBvbmVrMgorV0hF UkUgdW5pcXVlMSA8IDEgT1IgKHN0cmluZ3UxID0gJ0EnIE9SIHN0cmluZ3UxID0gJ0onKTsK K0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCB1bmlxdWUyLCBzdHJpbmd1MSBGUk9NIG9u ZWsyCitXSEVSRSAodW5pcXVlMSA8IDEgT1Igc3RyaW5ndTEgSU4gKCdBJywnSicpKTsKKy0t IEFsdGhvdWdoIFNBT1AgZG9lc24ndCBmaXQgcGFydGlhbCBpbmRleGVzIGZ1bGx5LCB3ZSBj YW4gdXNlIGFuZGVkIE9SIGNsYXVzZQorLS0gdG8gc2NhbiBhbm90aGVyIGNvdXBsZSBvZiBw YXJ0aWFsIGluZGV4ZXMuCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgY291bnQoKikg RlJPTSBvbmVrMgorV0hFUkUgc3RyaW5ndTEgSU4gKCdCJywnSicpIEFORCAoc3RyaW5ndTEg PSAnQScgT1IgdW5pcXVlMSA9IDEpOworCitSRVNFVCBlbmFibGVfaW5kZXhzY2FuOworUkVT RVQgZW5hYmxlX3NlcXNjYW47CisKIC0tCiAtLSBUZXN0IHNvbWUgY29ybmVyIGNhc2VzIHRo YXQgaGF2ZSBiZWVuIGtub3duIHRvIGNvbmZ1c2UgdGhlIHBsYW5uZXIKIC0tCmRpZmYgLS1n aXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCBiL3NyYy90b29scy9wZ2lu ZGVudC90eXBlZGVmcy5saXN0CmluZGV4IGM4MWY2Y2FiYTguLmRhZGU2OWY0N2EgMTAwNjQ0 Ci0tLSBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CisrKyBiL3NyYy90b29s cy9wZ2luZGVudC90eXBlZGVmcy5saXN0CkBAIC0yMTQyLDYgKzIxNDIsNyBAQCBQcmVkSXRl ckluZm9EYXRhCiBQcmVkWGFjdExpc3QKIFByZWRpY2F0ZUxvY2tEYXRhCiBQcmVkaWNhdGVM b2NrVGFyZ2V0VHlwZQorUHJlZGljYXRlc0RhdGEKIFByZWZldGNoQnVmZmVyUmVzdWx0CiBQ cmVwUGFyYWxsZWxSZXN0b3JlUHRyVHlwZQogUHJlcGFyZVN0bXQKLS0gCjIuNDMuMgoK --------------JLXlgVVE40XwJbU4PxdfMZtG--